From ab8c3cf9ad5a7c508584fc363d89ddb1470f4341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bj=C3=B6rkert?= Date: Wed, 14 Oct 2026 08:21:47 +0200 Subject: [PATCH 1/3] basal_lock: update nextdev patch for Loop plugin picker Loop next-dev PR LoopKit/Loop#2572 (plugin picker sheet with manufacturer groups and subtitles) reworked SettingsView, so nextdev_basal_lock.patch stopped applying. Rebase the SettingsView hunks onto the plugin picker and move the old patch to basal_lock/archive/nextdev_basal_lock_20d597f.patch, named for the last Loop commit it applied to. The rebased patch applies on top of nextdev_profiles.patch and vice versa, so no next-dev combination patches are needed. --- .../archive/nextdev_basal_lock_20d597f.patch | 942 ++++++++++++++++++ basal_lock/nextdev_basal_lock.patch | 81 +- 2 files changed, 973 insertions(+), 50 deletions(-) create mode 100644 basal_lock/archive/nextdev_basal_lock_20d597f.patch diff --git a/basal_lock/archive/nextdev_basal_lock_20d597f.patch b/basal_lock/archive/nextdev_basal_lock_20d597f.patch new file mode 100644 index 0000000..0c8eb01 --- /dev/null +++ b/basal_lock/archive/nextdev_basal_lock_20d597f.patch @@ -0,0 +1,942 @@ +# ============================================================================ +# basal_lock (Loop next-dev version) +# +# Keeps the temp basal from being throttled below the SCHEDULED basal rate while +# blood glucose is above a configurable threshold (default: off, 250 mg/dL). +# +# NEXT-DEV PORT: DoseMath moved into the standalone LoopAlgorithm package (which +# can't see LoopKit's PreferencesProvider), so the clamp lives in +# LoopDataManager.loop() instead. The Preferences UI is reached from Settings via +# an independent sheet (not the shared `Sheet` enum that the `profiles` +# customization extends), so profiles + basal_lock apply together in either order +# and no combined variant is needed. +# +# Known residual (display only): while locked, the stored dosing decision — and so +# the Nightscout "recommended temp basal" — still shows the algorithm's raw low +# value, not the enforced rate. Nothing enacts from it. +# ============================================================================ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 8254ab53..e331b17c 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -593,6 +593,7 @@ + CB1AF8155B1761A30ACA5591 /* Loop/Resources/Sounds/synth.caf in Resources */ = {isa = PBXBuildFile; fileRef = 83081FFB0497A4596F597830 /* Loop/Resources/Sounds/synth.caf */; }; + D6E28676C2C7751C77C7F2FB /* Loop/Resources/Sounds/spring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 9471E156FC10D6D0FF219C77 /* Loop/Resources/Sounds/spring.caf */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1399,6 +1400,7 @@ + C9EA3F48338B49BD9C6BD0F9 /* Loop/Resources/Sounds/urgent_low.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Loop/Resources/Sounds/urgent_low.caf; sourceTree = SOURCE_ROOT; }; + C9SCENED0000000000000002 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1716,6 +1718,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + C16F51182B891DB600EFD7A1 /* StoredDataAlgorithmInput.swift */, + C16F511A2B89363A00EFD7A1 /* SimpleInsulinDose.swift */, + C152B9F42C9C7D4A00ACBC06 /* AutomationHistoryEntry.swift */, +@@ -3507,6 +3510,7 @@ + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + C9A47B0380AAB1FC572D3F00 /* GlucoseAlertSettingsView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + C1F2CAAC2B7A980600D7F581 /* BasalRelativeDose.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index df8869f2..fce9f440 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -726,6 +726,16 @@ final class LoopDataManager: ObservableObject { + let scheduledBasalRate = input.basal.closestPrior(to: loopBaseTime)!.value + let activeOverride = temporaryPresetsManager.presetHistory.activeOverride(at: loopBaseTime) + ++ // Basal Lock: while glucose is above the threshold, don't let the temp basal ++ // drop below the scheduled rate. ++ let shouldApplyBasalLock = Preferences.shared.isBasalLockEnabled ++ && latestGlucose.quantity > Preferences.shared.basalLockThreshold ++ && basal.unitsPerHour < scheduledBasalRate ++ if shouldApplyBasalLock { ++ // unrounded on purpose: must equal the neutralBasalRate passed below ++ basal = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: LoopAlgorithm.tempBasalDuration) ++ } ++ + let basalAdjustment = basal.adjustForCurrentDelivery( + at: loopBaseTime, + neutralBasalRate: scheduledBasalRate, +@@ -736,6 +746,9 @@ final class LoopDataManager: ObservableObject { + + if let basalAdjustment { + recommendationToEnact.basalAdjustment = basalAdjustment ++ if shouldApplyBasalLock { ++ recommendationToEnact.direction = .neutral // no longer a reduction ++ } + } + + output.recommendationResult = .success(.init(automatic: recommendationToEnact)) +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..ab5d00ec +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import LoopAlgorithm ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: LoopQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index 687624f6..ecc68c71 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -61,6 +61,7 @@ struct SettingsView: View { + @State private var actionSheet: Destination.ActionSheet? + @State private var alert: Destination.Alert? + @State private var sheet: Destination.Sheet? ++ @State private var showingPreferences = false + + var localizedAppNameAndVersion: String + +@@ -92,6 +93,9 @@ struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -521,7 +525,22 @@ extension SettingsView { + descriptiveText: "Simplify Carb Entry") + } + } +- ++ ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { showingPreferences = true }, ++ includeArrow: true, ++ imageView: Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold)), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ .sheet(isPresented: $showingPreferences) { ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)) ++ .environmentObject(displayGlucosePreference) ++ .environment(\.dismissAction, { showingPreferences = false }) ++ } ++ } ++ + private var cgmChoices: [PluginPopover.Action] { + viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index 0fb75e91..9502d986 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -845,6 +845,13 @@ + C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; + C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; + C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E0E99C342C0E7AD300F9300C /* ConfirmationToggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E99C332C0E7AD300F9300C /* ConfirmationToggle.swift */; }; + E0E99C392C0E80C200F9300C /* LoopCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E99C382C0E80C200F9300C /* LoopCircleView.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; +@@ -1756,6 +1763,13 @@ + C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; + C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; + C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E0E99C332C0E7AD300F9300C /* ConfirmationToggle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfirmationToggle.swift; sourceTree = ""; }; + E0E99C382C0E80C200F9300C /* LoopCircleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopCircleView.swift; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; +@@ -2040,6 +2054,7 @@ + isa = PBXGroup; + children = ( + B4C004B2241085DB00B40429 /* ActionButton.swift */, ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, + 89BE75CA2464BC2000B145D9 /* AlertContent.swift */, +@@ -2215,6 +2230,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + 842E40282F22D8C6000CCCE0 /* Character+IsEmoji.swift */, + ); + path = Extensions; +@@ -2421,6 +2437,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + 840A2F102C0F9882003D5E90 /* LoopCompletionFreshness.swift */, + ); + path = LoopKit; +@@ -2923,6 +2941,7 @@ + isa = PBXGroup; + children = ( + C10759A12E4E3F2900EFF99A /* Environment+FeatureFlags.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + B455F3A325FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift */, + B4B7C1BB2604E3FC007379F6 /* CorrectionRangeScheduleEditorViewModel.swift */, + B4D4C20C25F95A8700DA809D /* DisplayGlucosePreference.swift */, +@@ -3042,6 +3061,16 @@ + path = Resources; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -3764,6 +3793,7 @@ + 842E404B2F22EAD8000CCCE0 /* EditPresetView.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 842E40502F22ED57000CCCE0 /* ExistingPresetInsulinNeedsEdit.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, +@@ -3803,6 +3833,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 84EE97B32D7A59AE00D5E941 /* ManualBolusDoseChartLayer.swift in Sources */, +@@ -3861,6 +3892,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -3930,6 +3962,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4021,6 +4054,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, + A919889F2355016B00B75EEE /* DosingDecisionStore.swift in Sources */, +@@ -4086,7 +4120,9 @@ + 840A2DD32E399BD400D4E245 /* Modelv5ToModelv6.xcmappingmodel in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + 840A2D822E39649500D4E245 /* ModelMappingv4v5Tov6Policy.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..c0fa0dd0 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopAlgorithm ++ ++public extension Guardrail where Value == LoopQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..e3d5d21e +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopAlgorithm ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: LoopQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..3cdd9129 +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..03e08f9a +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import LoopAlgorithm ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: LoopQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: LoopQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..c0df1d94 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,222 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import LoopAlgorithm ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: LoopQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: LoopQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var stride: Double { ++ switch displayGlucosePreference.unit { ++ case .milligramsPerDeciliter: ++ return 1 ++ case .millimolesPerLiter: ++ return 0.1 ++ default: ++ return 1 ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ let bounds = Guardrail.basalLockThreshold.absoluteBounds ++ let selectableValues = bounds.selectableValues(unit: displayGlucosePreference.unit, stride: stride) ++ return GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ selectableValues: selectableValues ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..32133be0 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,90 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended, .belowWarning: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .aboveWarning, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..350395d5 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import LoopAlgorithm ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: LoopUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/nextdev_basal_lock.patch b/basal_lock/nextdev_basal_lock.patch index 0c8eb01..e38e540 100644 --- a/basal_lock/nextdev_basal_lock.patch +++ b/basal_lock/nextdev_basal_lock.patch @@ -1,26 +1,9 @@ -# ============================================================================ -# basal_lock (Loop next-dev version) -# -# Keeps the temp basal from being throttled below the SCHEDULED basal rate while -# blood glucose is above a configurable threshold (default: off, 250 mg/dL). -# -# NEXT-DEV PORT: DoseMath moved into the standalone LoopAlgorithm package (which -# can't see LoopKit's PreferencesProvider), so the clamp lives in -# LoopDataManager.loop() instead. The Preferences UI is reached from Settings via -# an independent sheet (not the shared `Sheet` enum that the `profiles` -# customization extends), so profiles + basal_lock apply together in either order -# and no combined variant is needed. -# -# Known residual (display only): while locked, the stored dosing decision — and so -# the Nightscout "recommended temp basal" — still shows the algorithm's raw low -# value, not the enforced rate. Nothing enacts from it. -# ============================================================================ Submodule Loop contains modified content diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj -index 8254ab53..e331b17c 100644 +index 70d77e82..dcbe4906 100644 --- a/Loop/Loop.xcodeproj/project.pbxproj +++ b/Loop/Loop.xcodeproj/project.pbxproj -@@ -593,6 +593,7 @@ +@@ -596,6 +596,7 @@ CB1AF8155B1761A30ACA5591 /* Loop/Resources/Sounds/synth.caf in Resources */ = {isa = PBXBuildFile; fileRef = 83081FFB0497A4596F597830 /* Loop/Resources/Sounds/synth.caf */; }; D6E28676C2C7751C77C7F2FB /* Loop/Resources/Sounds/spring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 9471E156FC10D6D0FF219C77 /* Loop/Resources/Sounds/spring.caf */; }; DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; @@ -28,15 +11,15 @@ index 8254ab53..e331b17c 100644 DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; -@@ -1399,6 +1400,7 @@ - C9EA3F48338B49BD9C6BD0F9 /* Loop/Resources/Sounds/urgent_low.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Loop/Resources/Sounds/urgent_low.caf; sourceTree = SOURCE_ROOT; }; +@@ -1404,6 +1405,7 @@ C9SCENED0000000000000002 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + CE102E23D8C1C1291EF66387 /* PluginPickerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PluginPickerView.swift; sourceTree = ""; }; DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; + DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; -@@ -1716,6 +1718,7 @@ +@@ -1721,6 +1723,7 @@ C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, A987CD4824A58A0100439ADC /* ZipArchive.swift */, @@ -44,7 +27,7 @@ index 8254ab53..e331b17c 100644 C16F51182B891DB600EFD7A1 /* StoredDataAlgorithmInput.swift */, C16F511A2B89363A00EFD7A1 /* SimpleInsulinDose.swift */, C152B9F42C9C7D4A00ACBC06 /* AutomationHistoryEntry.swift */, -@@ -3507,6 +3510,7 @@ +@@ -3516,6 +3519,7 @@ B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, C9A47B0380AAB1FC572D3F00 /* GlucoseAlertSettingsView.swift in Sources */, E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, @@ -53,10 +36,10 @@ index 8254ab53..e331b17c 100644 C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, C1F2CAAC2B7A980600D7F581 /* BasalRelativeDose.swift in Sources */, diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift -index df8869f2..fce9f440 100644 +index 43c4dca7..4a3551cc 100644 --- a/Loop/Loop/Managers/LoopDataManager.swift +++ b/Loop/Loop/Managers/LoopDataManager.swift -@@ -726,6 +726,16 @@ final class LoopDataManager: ObservableObject { +@@ -733,6 +733,16 @@ final class LoopDataManager: ObservableObject { let scheduledBasalRate = input.basal.closestPrior(to: loopBaseTime)!.value let activeOverride = temporaryPresetsManager.presetHistory.activeOverride(at: loopBaseTime) @@ -73,7 +56,7 @@ index df8869f2..fce9f440 100644 let basalAdjustment = basal.adjustForCurrentDelivery( at: loopBaseTime, neutralBasalRate: scheduledBasalRate, -@@ -736,6 +746,9 @@ final class LoopDataManager: ObservableObject { +@@ -743,6 +753,9 @@ final class LoopDataManager: ObservableObject { if let basalAdjustment { recommendationToEnact.basalAdjustment = basalAdjustment @@ -140,18 +123,18 @@ index 00000000..ab5d00ec + } +} diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift -index 687624f6..ecc68c71 100644 +index b81cd6f8..3df167f7 100644 --- a/Loop/Loop/Views/SettingsView.swift +++ b/Loop/Loop/Views/SettingsView.swift -@@ -61,6 +61,7 @@ struct SettingsView: View { - @State private var actionSheet: Destination.ActionSheet? +@@ -62,6 +62,7 @@ struct SettingsView: View { @State private var alert: Destination.Alert? @State private var sheet: Destination.Sheet? + @State private var pluginSelection: (() -> Void)? + @State private var showingPreferences = false var localizedAppNameAndVersion: String -@@ -92,6 +93,9 @@ struct SettingsView: View { +@@ -93,6 +94,9 @@ struct SettingsView: View { if FeatureFlags.allowExperimentalFeatures { favoriteFoodsSection } @@ -161,11 +144,10 @@ index 687624f6..ecc68c71 100644 if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { deleteDataSection } -@@ -521,7 +525,22 @@ extension SettingsView { +@@ -495,6 +499,21 @@ extension SettingsView { descriptiveText: "Simplify Carb Entry") } } -- + + private var preferencesSection: some View { + Section { @@ -181,16 +163,15 @@ index 687624f6..ecc68c71 100644 + .environment(\.dismissAction, { showingPreferences = false }) + } + } -+ - private var cgmChoices: [PluginPopover.Action] { - viewModel.cgmManagerSettingsViewModel.availableDevices - .sorted(by: {$0.localizedTitle < $1.localizedTitle}) + + @ViewBuilder + private func pluginPickerView(for picker: Destination.PluginPicker) -> some View { Submodule LoopKit contains modified content diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj -index 0fb75e91..9502d986 100644 +index 3d1c3a50..aa608f04 100644 --- a/LoopKit/LoopKit.xcodeproj/project.pbxproj +++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj -@@ -845,6 +845,13 @@ +@@ -848,6 +848,13 @@ C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; @@ -204,7 +185,7 @@ index 0fb75e91..9502d986 100644 E0E99C342C0E7AD300F9300C /* ConfirmationToggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E99C332C0E7AD300F9300C /* ConfirmationToggle.swift */; }; E0E99C392C0E80C200F9300C /* LoopCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E99C382C0E80C200F9300C /* LoopCircleView.swift */; }; E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; -@@ -1756,6 +1763,13 @@ +@@ -1769,6 +1776,13 @@ C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; @@ -218,7 +199,7 @@ index 0fb75e91..9502d986 100644 E0E99C332C0E7AD300F9300C /* ConfirmationToggle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfirmationToggle.swift; sourceTree = ""; }; E0E99C382C0E80C200F9300C /* LoopCircleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopCircleView.swift; sourceTree = ""; }; E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; -@@ -2040,6 +2054,7 @@ +@@ -2054,6 +2068,7 @@ isa = PBXGroup; children = ( B4C004B2241085DB00B40429 /* ActionButton.swift */, @@ -226,7 +207,7 @@ index 0fb75e91..9502d986 100644 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, 89BE75CA2464BC2000B145D9 /* AlertContent.swift */, -@@ -2215,6 +2230,7 @@ +@@ -2229,6 +2244,7 @@ C187338229B9486200519CDF /* TimeInterval.swift */, C187339629B9488300519CDF /* TimeZone.swift */, C187339729B9488300519CDF /* UUID.swift */, @@ -234,7 +215,7 @@ index 0fb75e91..9502d986 100644 842E40282F22D8C6000CCCE0 /* Character+IsEmoji.swift */, ); path = Extensions; -@@ -2421,6 +2437,8 @@ +@@ -2435,6 +2451,8 @@ C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, @@ -243,7 +224,7 @@ index 0fb75e91..9502d986 100644 840A2F102C0F9882003D5E90 /* LoopCompletionFreshness.swift */, ); path = LoopKit; -@@ -2923,6 +2941,7 @@ +@@ -2939,6 +2957,7 @@ isa = PBXGroup; children = ( C10759A12E4E3F2900EFF99A /* Environment+FeatureFlags.swift */, @@ -251,7 +232,7 @@ index 0fb75e91..9502d986 100644 B455F3A325FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift */, B4B7C1BB2604E3FC007379F6 /* CorrectionRangeScheduleEditorViewModel.swift */, B4D4C20C25F95A8700DA809D /* DisplayGlucosePreference.swift */, -@@ -3042,6 +3061,16 @@ +@@ -3058,6 +3077,16 @@ path = Resources; sourceTree = ""; }; @@ -268,7 +249,7 @@ index 0fb75e91..9502d986 100644 E9077D2824ACD5AA0066A88D /* Information Screens */ = { isa = PBXGroup; children = ( -@@ -3764,6 +3793,7 @@ +@@ -3781,6 +3810,7 @@ 842E404B2F22EAD8000CCCE0 /* EditPresetView.swift in Sources */, A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, @@ -276,7 +257,7 @@ index 0fb75e91..9502d986 100644 B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, 842E40502F22ED57000CCCE0 /* ExistingPresetInsulinNeedsEdit.swift in Sources */, 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, -@@ -3803,6 +3833,7 @@ +@@ -3820,6 +3850,7 @@ A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, @@ -284,7 +265,7 @@ index 0fb75e91..9502d986 100644 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, 84EE97B32D7A59AE00D5E941 /* ManualBolusDoseChartLayer.swift in Sources */, -@@ -3861,6 +3892,7 @@ +@@ -3878,6 +3909,7 @@ B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, @@ -292,7 +273,7 @@ index 0fb75e91..9502d986 100644 E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, -@@ -3930,6 +3962,7 @@ +@@ -3947,6 +3979,7 @@ 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, @@ -300,7 +281,7 @@ index 0fb75e91..9502d986 100644 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, -@@ -4021,6 +4054,7 @@ +@@ -4038,6 +4071,7 @@ 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, @@ -308,7 +289,7 @@ index 0fb75e91..9502d986 100644 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, A919889F2355016B00B75EEE /* DosingDecisionStore.swift in Sources */, -@@ -4086,7 +4120,9 @@ +@@ -4103,7 +4137,9 @@ 840A2DD32E399BD400D4E245 /* Modelv5ToModelv6.xcmappingmodel in Sources */, 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, From 8a9ea8a13809997ae2dcc53977fcd7830c07d220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bj=C3=B6rkert?= Date: Wed, 14 Oct 2026 08:22:02 +0200 Subject: [PATCH 2/3] Add .loopcustomization marker to every active patch LoopKit/Loop#2577 records each .loopcustomization file found at the workspace root or a submodule root in BuildDetails.plist, the diagnostic report and the analytics instantiation event. Every active patch now creates an empty .loopcustomization at the LoopWorkspace root, named after its customization folder. Combination patches carry only the marker of their own folder. Each patch is applied and reverted as a unit, so the marker follows the customization, and the distinct file names keep patches from conflicting with each other. The unmarked versions are kept as archive/_nomarker.patch so that workspaces with an unmarked patch applied show "Update available". --- 2hlollipop/2hlollipop.patch | 3 + 2hlollipop/archive/2hlollipop_nomarker.patch | 14 + .../archive/nextdev_2hlollipop_nomarker.patch | 14 + 2hlollipop/nextdev_2hlollipop.patch | 3 + README.md | 15 +- .../main3144_basal_lock_nomarker.patch | 1195 + ...ain3144_basal_lock_profiles_nomarker.patch | 1195 + .../main3149_basal_lock_nomarker.patch | 1192 + ...ain3149_basal_lock_profiles_nomarker.patch | 1192 + .../archive/main380_basal_lock_nomarker.patch | 1193 + ...main380_basal_lock_profiles_nomarker.patch | 1193 + .../archive/main382_basal_lock_nomarker.patch | 1192 + ...main382_basal_lock_profiles_nomarker.patch | 1192 + .../archive/nextdev_basal_lock_nomarker.patch | 923 + basal_lock/main3144_basal_lock.patch | 3 + basal_lock/main3144_basal_lock_profiles.patch | 3 + basal_lock/main3149_basal_lock.patch | 3 + basal_lock/main3149_basal_lock_profiles.patch | 3 + basal_lock/main380_basal_lock.patch | 3 + basal_lock/main380_basal_lock_profiles.patch | 3 + basal_lock/main382_basal_lock.patch | 3 + basal_lock/main382_basal_lock_profiles.patch | 3 + basal_lock/nextdev_basal_lock.patch | 3 + .../archive/cgm_sensor_notes_nomarker.patch | 234 + cgm_sensor_notes/cgm_sensor_notes.patch | 3 + .../archive/future_carbs_4h_nomarker.patch | 14 + future_carbs_4h/future_carbs_4h.patch | 3 + .../archive/high_carb_limit_nomarker.patch | 17 + .../nextdev_high_carb_limit_nomarker.patch | 17 + high_carb_limit/high_carb_limit.patch | 3 + high_carb_limit/nextdev_high_carb_limit.patch | 3 + lnl_icon/archive/lnl_icon_nomarker.patch | 19781 ++++++++++++++++ lnl_icon/lnl_icon.patch | 3 + .../archive/low_carb_limite_nomarker.patch | 17 + .../nextdev_low_carb_limit_nomarker.patch | 17 + low_carb_limit/low_carb_limite.patch | 3 + low_carb_limit/nextdev_low_carb_limit.patch | 3 + meal_days/01_meal_days.patch | 3 + meal_days/archive/01_meal_days_nomarker.patch | 88 + .../archive/dev_meal_days_nomarker.patch | 79 + .../archive/nextdev_meal_days_nomarker.patch | 45 + meal_days/dev_meal_days.patch | 3 + meal_days/nextdev_meal_days.patch | 3 + meal_week/01_meal_week.patch | 3 + meal_week/archive/01_meal_week_nomarker.patch | 88 + .../archive/dev_meal_week_nomarker.patch | 79 + .../archive/nextdev_meal_week_nomarker.patch | 45 + meal_week/dev_meal_week.patch | 3 + meal_week/nextdev_meal_week.patch | 3 + .../main380_negative_insulin_nomarker.patch | 715 + .../nextdev_negative_insulin_nomarker.patch | 460 + .../main380_negative_insulin.patch | 3 + .../nextdev_negative_insulin.patch | 3 + no_auth/archive/no_auth_nomarker.patch | 14 + no_auth/no_auth.patch | 3 + .../archive/nextdev_now_line_nomarker.patch | 157 + now_line/archive/now_line_nomarker.patch | 93 + now_line/nextdev_now_line.patch | 3 + now_line/now_line.patch | 3 + .../archive/override_sens_nomarker.patch | 14 + override_sens/override_sens.patch | 3 + ...main380_profiles_basal_lock_nomarker.patch | 1432 ++ .../archive/main380_profiles_nomarker.patch | 1432 ++ ...main382_profiles_basal_lock_nomarker.patch | 1430 ++ .../archive/main382_profiles_nomarker.patch | 1430 ++ .../archive/nextdev_profiles_nomarker.patch | 1392 ++ profiles/main380_profiles.patch | 3 + profiles/main380_profiles_basal_lock.patch | 3 + profiles/main382_profiles.patch | 3 + profiles/main382_profiles_basal_lock.patch | 3 + profiles/nextdev_profiles.patch | 3 + .../nextdev_remote_window_nomarker.patch | 527 + .../archive/remote_window_nomarker.patch | 1710 ++ .../v3.10_remote_window_nomarker.patch | 1541 ++ remote_window/nextdev_remote_window.patch | 3 + remote_window/remote_window.patch | 3 + remote_window/v3.10_remote_window.patch | 3 + .../archive/watch_title_nomarker.patch | 23 + watch_title/watch_title.patch | 3 + .../archive/nextdev_xdrip_cgm_nomarker.patch | 54 + xdrip_cgm/archive/xdrip_cgm_nomarker.patch | 54 + xdrip_cgm/nextdev_xdrip_cgm.patch | 3 + xdrip_cgm/xdrip_cgm.patch | 3 + 83 files changed, 43631 insertions(+), 1 deletion(-) create mode 100644 2hlollipop/archive/2hlollipop_nomarker.patch create mode 100644 2hlollipop/archive/nextdev_2hlollipop_nomarker.patch create mode 100644 basal_lock/archive/main3144_basal_lock_nomarker.patch create mode 100644 basal_lock/archive/main3144_basal_lock_profiles_nomarker.patch create mode 100644 basal_lock/archive/main3149_basal_lock_nomarker.patch create mode 100644 basal_lock/archive/main3149_basal_lock_profiles_nomarker.patch create mode 100644 basal_lock/archive/main380_basal_lock_nomarker.patch create mode 100644 basal_lock/archive/main380_basal_lock_profiles_nomarker.patch create mode 100644 basal_lock/archive/main382_basal_lock_nomarker.patch create mode 100644 basal_lock/archive/main382_basal_lock_profiles_nomarker.patch create mode 100644 basal_lock/archive/nextdev_basal_lock_nomarker.patch create mode 100644 cgm_sensor_notes/archive/cgm_sensor_notes_nomarker.patch create mode 100644 future_carbs_4h/archive/future_carbs_4h_nomarker.patch create mode 100644 high_carb_limit/archive/high_carb_limit_nomarker.patch create mode 100644 high_carb_limit/archive/nextdev_high_carb_limit_nomarker.patch create mode 100644 lnl_icon/archive/lnl_icon_nomarker.patch create mode 100644 low_carb_limit/archive/low_carb_limite_nomarker.patch create mode 100644 low_carb_limit/archive/nextdev_low_carb_limit_nomarker.patch create mode 100644 meal_days/archive/01_meal_days_nomarker.patch create mode 100644 meal_days/archive/dev_meal_days_nomarker.patch create mode 100644 meal_days/archive/nextdev_meal_days_nomarker.patch create mode 100644 meal_week/archive/01_meal_week_nomarker.patch create mode 100644 meal_week/archive/dev_meal_week_nomarker.patch create mode 100644 meal_week/archive/nextdev_meal_week_nomarker.patch create mode 100644 negative_insulin/archive/main380_negative_insulin_nomarker.patch create mode 100644 negative_insulin/archive/nextdev_negative_insulin_nomarker.patch create mode 100644 no_auth/archive/no_auth_nomarker.patch create mode 100644 now_line/archive/nextdev_now_line_nomarker.patch create mode 100644 now_line/archive/now_line_nomarker.patch create mode 100644 override_sens/archive/override_sens_nomarker.patch create mode 100644 profiles/archive/main380_profiles_basal_lock_nomarker.patch create mode 100644 profiles/archive/main380_profiles_nomarker.patch create mode 100644 profiles/archive/main382_profiles_basal_lock_nomarker.patch create mode 100644 profiles/archive/main382_profiles_nomarker.patch create mode 100644 profiles/archive/nextdev_profiles_nomarker.patch create mode 100644 remote_window/archive/nextdev_remote_window_nomarker.patch create mode 100644 remote_window/archive/remote_window_nomarker.patch create mode 100644 remote_window/archive/v3.10_remote_window_nomarker.patch create mode 100644 watch_title/archive/watch_title_nomarker.patch create mode 100644 xdrip_cgm/archive/nextdev_xdrip_cgm_nomarker.patch create mode 100644 xdrip_cgm/archive/xdrip_cgm_nomarker.patch diff --git a/2hlollipop/2hlollipop.patch b/2hlollipop/2hlollipop.patch index 8436a1b..d6094c3 100644 --- a/2hlollipop/2hlollipop.patch +++ b/2hlollipop/2hlollipop.patch @@ -12,3 +12,6 @@ index d56f2ab9..42e9dfa3 100644 /// How much historical glucose to include in a dosing decision /// Somewhat arbitrary, but typical maximum visible in bolus glucose preview +diff --git a/2hlollipop.loopcustomization b/2hlollipop.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/2hlollipop/archive/2hlollipop_nomarker.patch b/2hlollipop/archive/2hlollipop_nomarker.patch new file mode 100644 index 0000000..8436a1b --- /dev/null +++ b/2hlollipop/archive/2hlollipop_nomarker.patch @@ -0,0 +1,14 @@ +Submodule Loop contains modified content +diff --git a/Loop/LoopCore/LoopCoreConstants.swift b/Loop/LoopCore/LoopCoreConstants.swift +index d56f2ab9..42e9dfa3 100644 +--- a/Loop/LoopCore/LoopCoreConstants.swift ++++ b/Loop/LoopCore/LoopCoreConstants.swift +@@ -16,7 +16,7 @@ public enum LoopCoreConstants { + /// The amount of time in the future a glucose value should be considered valid + public static let futureGlucoseDataInterval = TimeInterval(minutes: 5) + +- public static let defaultCarbAbsorptionTimes: CarbStore.DefaultAbsorptionTimes = (fast: .minutes(30), medium: .hours(3), slow: .hours(5)) ++ public static let defaultCarbAbsorptionTimes: CarbStore.DefaultAbsorptionTimes = (fast: .hours(2), medium: .hours(3), slow: .hours(5)) + + /// How much historical glucose to include in a dosing decision + /// Somewhat arbitrary, but typical maximum visible in bolus glucose preview diff --git a/2hlollipop/archive/nextdev_2hlollipop_nomarker.patch b/2hlollipop/archive/nextdev_2hlollipop_nomarker.patch new file mode 100644 index 0000000..1b6af34 --- /dev/null +++ b/2hlollipop/archive/nextdev_2hlollipop_nomarker.patch @@ -0,0 +1,14 @@ +Submodule Loop contains modified content +diff --git a/Loop/LoopCore/LoopCoreConstants.swift b/Loop/LoopCore/LoopCoreConstants.swift +index 6d8edfea..0cf0b2a0 100644 +--- a/Loop/LoopCore/LoopCoreConstants.swift ++++ b/Loop/LoopCore/LoopCoreConstants.swift +@@ -15,7 +15,7 @@ public enum LoopCoreConstants { + /// The amount of time in the future a glucose value should be considered valid + public static let futureGlucoseDataInterval = TimeInterval(minutes: 5) + +- public static let defaultCarbAbsorptionTimes: DefaultAbsorptionTimes = (fast: .minutes(30), medium: .hours(3), slow: .hours(5)) ++ public static let defaultCarbAbsorptionTimes: DefaultAbsorptionTimes = (fast: .hours(2), medium: .hours(3), slow: .hours(5)) + + /// How much historical glucose to include in a dosing decision + /// Somewhat arbitrary, but typical maximum visible in bolus glucose preview diff --git a/2hlollipop/nextdev_2hlollipop.patch b/2hlollipop/nextdev_2hlollipop.patch index 1b6af34..765bc0e 100644 --- a/2hlollipop/nextdev_2hlollipop.patch +++ b/2hlollipop/nextdev_2hlollipop.patch @@ -12,3 +12,6 @@ index 6d8edfea..0cf0b2a0 100644 /// How much historical glucose to include in a dosing decision /// Somewhat arbitrary, but typical maximum visible in bolus glucose preview +diff --git a/2hlollipop.loopcustomization b/2hlollipop.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/README.md b/README.md index ecc28df..7a29fd3 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,17 @@ This repository provides patches to apply to LoopWorkspace for customizations. ## Repository for lnl-scripts -The scripts that assist in building and customizing Loop and related applications can be found in the `lnl-scripts` repository. These scripts simplify various tasks, including downloading, building, and applying custom patches to Loop and other DIY code. \ No newline at end of file +The scripts that assist in building and customizing Loop and related applications can be found in the `lnl-scripts` repository. These scripts simplify various tasks, including downloading, building, and applying custom patches to Loop and other DIY code. +## Customization marker + +Every active patch ends by creating an empty `.loopcustomization` file at the LoopWorkspace root, where `` is the customization's folder name in this repository. Loop records these identifiers in `BuildDetails.plist`, and they appear in the diagnostic report under Build Details. A patch carries only the marker for its own folder; combined variants such as `main382_basal_lock_profiles.patch` add `basal_lock.loopcustomization` only. + +When generating a patch, include the marker in the diff: + +``` +touch .loopcustomization +git add -N .loopcustomization +git diff --submodule=diff > /.patch +``` + +The marker always goes at the workspace root, even for a patch that only touches one submodule, and is never committed. Apply patches with `git apply`; `patch -p1` skips the empty marker file. diff --git a/basal_lock/archive/main3144_basal_lock_nomarker.patch b/basal_lock/archive/main3144_basal_lock_nomarker.patch new file mode 100644 index 0000000..8d5a3ae --- /dev/null +++ b/basal_lock/archive/main3144_basal_lock_nomarker.patch @@ -0,0 +1,1195 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index dfcb0b95..ff1f6a56 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -506,6 +506,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1327,6 +1328,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1681,6 +1683,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3477,6 +3480,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index c9aef285..1a6e00d7 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1568,7 +1568,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1851,7 +1852,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1866,7 +1868,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index 4d65f5b2..13241f60 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -50,6 +50,7 @@ public struct SettingsView: View { + } + + case favoriteFoods ++ case preferences + } + } + +@@ -84,6 +85,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -119,6 +123,8 @@ public struct SettingsView: View { + switch sheet { + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + } + } + } +@@ -369,7 +375,17 @@ extension SettingsView { + descriptiveText: "Simplify Carb Entry") + } + } +- ++ ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold)), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [PluginPopover.Action] { + viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index c8577f16..67af5de1 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -865,6 +865,13 @@ + C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; + C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; + C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1790,6 +1797,13 @@ + C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; + C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; + C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2088,6 +2102,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2258,6 +2273,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2466,6 +2482,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -2986,6 +3004,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + ); + path = ViewModels; + sourceTree = ""; +@@ -3112,6 +3131,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -3874,6 +3903,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -3909,6 +3939,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -3959,6 +3990,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4022,6 +4054,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4110,6 +4143,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4179,6 +4213,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4205,6 +4240,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main3144_basal_lock_profiles_nomarker.patch b/basal_lock/archive/main3144_basal_lock_profiles_nomarker.patch new file mode 100644 index 0000000..825b373 --- /dev/null +++ b/basal_lock/archive/main3144_basal_lock_profiles_nomarker.patch @@ -0,0 +1,1195 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index dfcb0b95..ff1f6a56 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -506,6 +506,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1327,6 +1328,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1681,6 +1683,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3477,6 +3480,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index d0d2b312..dd378316 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1572,7 +1572,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1855,7 +1856,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1870,7 +1872,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index 4ae0acf9..0e59b3fe 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -50,6 +50,7 @@ public struct SettingsView: View { + } + + case favoriteFoods ++ case preferences + case profiles + } + } +@@ -85,6 +86,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -120,6 +124,8 @@ public struct SettingsView: View { + switch sheet { + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + case .profiles: + ProfileView(viewModel: ProfileViewModel(therapySettings: self.viewModel.therapySettings(), + sensitivityOverridesEnabled: FeatureFlags.sensitivityOverridesEnabled, +@@ -388,7 +394,17 @@ extension SettingsView { + descriptiveText: "Simplify Carb Entry") + } + } +- ++ ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold)), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [PluginPopover.Action] { + viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index f650cca3..3b1caa41 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -871,6 +871,13 @@ + DDAF746729F422C600719F0A /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746629F422C600719F0A /* ProfileView.swift */; }; + DDAF746929F4234000719F0A /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746829F4234000719F0A /* ProfileViewModel.swift */; }; + DDCFC91E2AA9F702003DE656 /* RenameProfileEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1802,6 +1809,13 @@ + DDAF746629F422C600719F0A /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; + DDAF746829F4234000719F0A /* ProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModel.swift; sourceTree = ""; }; + DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RenameProfileEditor.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2100,6 +2114,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2270,6 +2285,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2478,6 +2494,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -2999,6 +3017,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + DD508E052A17712D00EEF8FD /* ProfileViewModel+FileManagement.swift */, + ); + path = ViewModels; +@@ -3126,6 +3145,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -3892,6 +3921,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -3929,6 +3959,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -3981,6 +4012,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4045,6 +4077,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4134,6 +4167,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4203,6 +4237,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4229,6 +4264,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main3149_basal_lock_nomarker.patch b/basal_lock/archive/main3149_basal_lock_nomarker.patch new file mode 100644 index 0000000..9f073f7 --- /dev/null +++ b/basal_lock/archive/main3149_basal_lock_nomarker.patch @@ -0,0 +1,1192 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 11819516..a22646b3 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -489,6 +489,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1292,6 +1293,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1960,6 +1962,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3742,6 +3745,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 2319f4ec..c3f0c422 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1549,7 +1549,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1832,7 +1833,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1847,7 +1849,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index c3ec98b8..60e36b9a 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -51,5 +51,6 @@ public struct SettingsView: View { + + case favoriteFoods ++ case preferences + } + } + +@@ -85,6 +86,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -157,6 +161,8 @@ public struct SettingsView: View { + switch sheet { + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + } + } + } +@@ -374,6 +380,16 @@ extension SettingsView { + } + } + ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: AnyView(Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold))), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [PluginPopover.Action] { + viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index 2ecb6c53..6e177b30 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -863,6 +863,13 @@ + C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; + C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; + C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1790,6 +1797,13 @@ + C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; + C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; + C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2271,6 +2285,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2441,6 +2456,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2649,6 +2665,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -3169,6 +3187,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + ); + path = ViewModels; + sourceTree = ""; +@@ -3294,6 +3313,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -4052,6 +4081,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -4087,6 +4117,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -4137,6 +4168,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4200,6 +4232,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4288,6 +4321,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4357,6 +4391,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4383,6 +4418,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main3149_basal_lock_profiles_nomarker.patch b/basal_lock/archive/main3149_basal_lock_profiles_nomarker.patch new file mode 100644 index 0000000..029c15e --- /dev/null +++ b/basal_lock/archive/main3149_basal_lock_profiles_nomarker.patch @@ -0,0 +1,1192 @@ +Submodule Loop 674d123..c484fe7: +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 11819516..a22646b3 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -489,6 +489,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1292,6 +1293,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1960,6 +1962,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3742,6 +3745,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 63164e69..f6accc52 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1553,7 +1553,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1836,7 +1837,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1851,7 +1853,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index 74045900..f2a41195 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -51,5 +51,6 @@ public struct SettingsView: View { + + case favoriteFoods ++ case preferences + case profiles + } + } +@@ -86,6 +87,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -158,6 +162,8 @@ public struct SettingsView: View { + switch sheet { + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + case .profiles: + ProfileView(viewModel: ProfileViewModel(therapySettings: self.viewModel.therapySettings(), + sensitivityOverridesEnabled: FeatureFlags.sensitivityOverridesEnabled, +@@ -392,6 +398,16 @@ extension SettingsView { + } + } + ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: AnyView(Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold))), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [PluginPopover.Action] { + viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit 77793ca..c6d1a1a: +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index eec949bd..7ec12a27 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -869,6 +869,13 @@ + DDAF746729F422C600719F0A /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746629F422C600719F0A /* ProfileView.swift */; }; + DDAF746929F4234000719F0A /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746829F4234000719F0A /* ProfileViewModel.swift */; }; + DDCFC91E2AA9F702003DE656 /* RenameProfileEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1933,6 +1940,13 @@ + DDAF746629F422C600719F0A /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; + DDAF746829F4234000719F0A /* ProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModel.swift; sourceTree = ""; }; + DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RenameProfileEditor.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2283,6 +2297,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2453,6 +2468,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2661,6 +2677,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -3182,6 +3200,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + DD508E052A17712D00EEF8FD /* ProfileViewModel+FileManagement.swift */, + ); + path = ViewModels; +@@ -3308,6 +3327,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -4070,6 +4099,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -4107,6 +4137,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -4159,6 +4190,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4223,6 +4255,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4312,6 +4345,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4381,6 +4415,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4407,6 +4442,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main380_basal_lock_nomarker.patch b/basal_lock/archive/main380_basal_lock_nomarker.patch new file mode 100644 index 0000000..572f433 --- /dev/null +++ b/basal_lock/archive/main380_basal_lock_nomarker.patch @@ -0,0 +1,1193 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 11819516..a22646b3 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -489,6 +489,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1292,6 +1293,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1960,6 +1962,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3742,6 +3745,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 2319f4ec..c3f0c422 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1549,7 +1549,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1832,7 +1833,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1847,7 +1849,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index c3ec98b8..60e36b9a 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -51,6 +51,7 @@ public struct SettingsView: View { + + case favoriteFoods + case therapySettings ++ case preferences + } + } + +@@ -85,6 +86,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -157,6 +161,8 @@ public struct SettingsView: View { + .environment(\.insulinTintColor, self.insulinTintColor) + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + } + } + } +@@ -374,6 +380,16 @@ extension SettingsView { + } + } + ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: AnyView(Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold))), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [ActionSheet.Button] { + var result = viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index 2ecb6c53..6e177b30 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -863,6 +863,13 @@ + C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; + C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; + C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1790,6 +1797,13 @@ + C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; + C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; + C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2271,6 +2285,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2441,6 +2456,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2649,6 +2665,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -3169,6 +3187,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + ); + path = ViewModels; + sourceTree = ""; +@@ -3294,6 +3313,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -4052,6 +4081,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -4087,6 +4117,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -4137,6 +4168,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4200,6 +4232,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4288,6 +4321,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4357,6 +4391,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4383,6 +4418,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main380_basal_lock_profiles_nomarker.patch b/basal_lock/archive/main380_basal_lock_profiles_nomarker.patch new file mode 100644 index 0000000..628ec76 --- /dev/null +++ b/basal_lock/archive/main380_basal_lock_profiles_nomarker.patch @@ -0,0 +1,1193 @@ +Submodule Loop 674d123..c484fe7: +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 11819516..a22646b3 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -489,6 +489,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1292,6 +1293,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1960,6 +1962,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3742,6 +3745,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 63164e69..f6accc52 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1553,7 +1553,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1836,7 +1837,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1851,7 +1853,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index 74045900..f2a41195 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -51,6 +51,7 @@ public struct SettingsView: View { + + case favoriteFoods + case therapySettings ++ case preferences + case profiles + } + } +@@ -86,6 +87,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -158,6 +162,8 @@ public struct SettingsView: View { + .environment(\.insulinTintColor, self.insulinTintColor) + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + case .profiles: + ProfileView(viewModel: ProfileViewModel(therapySettings: self.viewModel.therapySettings(), + sensitivityOverridesEnabled: FeatureFlags.sensitivityOverridesEnabled, +@@ -392,6 +398,16 @@ extension SettingsView { + } + } + ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: AnyView(Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold))), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [ActionSheet.Button] { + var result = viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit 77793ca..c6d1a1a: +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index eec949bd..7ec12a27 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -869,6 +869,13 @@ + DDAF746729F422C600719F0A /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746629F422C600719F0A /* ProfileView.swift */; }; + DDAF746929F4234000719F0A /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746829F4234000719F0A /* ProfileViewModel.swift */; }; + DDCFC91E2AA9F702003DE656 /* RenameProfileEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1933,6 +1940,13 @@ + DDAF746629F422C600719F0A /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; + DDAF746829F4234000719F0A /* ProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModel.swift; sourceTree = ""; }; + DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RenameProfileEditor.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2283,6 +2297,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2453,6 +2468,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2661,6 +2677,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -3182,6 +3200,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + DD508E052A17712D00EEF8FD /* ProfileViewModel+FileManagement.swift */, + ); + path = ViewModels; +@@ -3308,6 +3327,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -4070,6 +4099,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -4107,6 +4137,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -4159,6 +4190,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4223,6 +4255,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4312,6 +4345,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4381,6 +4415,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4407,6 +4442,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main382_basal_lock_nomarker.patch b/basal_lock/archive/main382_basal_lock_nomarker.patch new file mode 100644 index 0000000..0b4ec61 --- /dev/null +++ b/basal_lock/archive/main382_basal_lock_nomarker.patch @@ -0,0 +1,1192 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 11819516..a22646b3 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -489,6 +489,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1292,6 +1293,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1960,6 +1962,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3742,6 +3745,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 2319f4ec..c3f0c422 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1549,7 +1549,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1832,7 +1833,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1847,7 +1849,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index c3ec98b8..60e36b9a 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -51,5 +51,6 @@ public struct SettingsView: View { + + case favoriteFoods ++ case preferences + } + } + +@@ -85,6 +86,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -157,6 +161,8 @@ public struct SettingsView: View { + switch sheet { + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + } + } + } +@@ -374,6 +380,16 @@ extension SettingsView { + } + } + ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: AnyView(Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold))), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [ActionSheet.Button] { + var result = viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index 2ecb6c53..6e177b30 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -863,6 +863,13 @@ + C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; + C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; + C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1790,6 +1797,13 @@ + C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; + C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; + C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2271,6 +2285,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2441,6 +2456,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2649,6 +2665,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -3169,6 +3187,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + ); + path = ViewModels; + sourceTree = ""; +@@ -3294,6 +3313,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -4052,6 +4081,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -4087,6 +4117,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -4137,6 +4168,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4200,6 +4232,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4288,6 +4321,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4357,6 +4391,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4383,6 +4418,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/main382_basal_lock_profiles_nomarker.patch b/basal_lock/archive/main382_basal_lock_profiles_nomarker.patch new file mode 100644 index 0000000..c004300 --- /dev/null +++ b/basal_lock/archive/main382_basal_lock_profiles_nomarker.patch @@ -0,0 +1,1192 @@ +Submodule Loop 674d123..c484fe7: +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 11819516..a22646b3 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -489,6 +489,7 @@ + C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1292,6 +1293,7 @@ + C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1960,6 +1962,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + ); + path = Models; + sourceTree = ""; +@@ -3742,6 +3745,7 @@ + E98A55EF24EDD6E60008715D /* DosingDecisionStoreProtocol.swift in Sources */, + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 63164e69..f6accc52 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -1553,7 +1553,8 @@ extension LoopDataManager { + model: model, + pendingInsulin: 0, // Pending insulin is already reflected in the prediction + maxBolus: maxBolus, +- volumeRounder: volumeRounder ++ volumeRounder: volumeRounder, ++ preferences: Preferences.shared + ) + } + +@@ -1836,7 +1837,8 @@ extension LoopDataManager { + lastTempBasal: lastTempBasal, + volumeRounder: volumeRounder, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + case .tempBasalOnly: + +@@ -1851,7 +1853,8 @@ extension LoopDataManager { + additionalActiveInsulinClamp: iobHeadroom, + lastTempBasal: lastTempBasal, + rateRounder: rateRounder, +- isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true ++ isBasalRateScheduleOverrideActive: settings.scheduleOverride?.isBasalRateScheduleOverriden(at: startDate) == true, ++ preferences: Preferences.shared + ) + dosingRecommendation = AutomaticDoseRecommendation(basalAdjustment: temp) + } +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..dc9150f8 +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: HKQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index 74045900..f2a41195 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -51,5 +51,6 @@ public struct SettingsView: View { + + case favoriteFoods ++ case preferences + case profiles + } + } +@@ -86,6 +87,9 @@ public struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -158,6 +162,8 @@ public struct SettingsView: View { + switch sheet { + case .favoriteFoods: + FavoriteFoodsView() ++ case .preferences: ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)).environmentObject(displayGlucosePreference) + case .profiles: + ProfileView(viewModel: ProfileViewModel(therapySettings: self.viewModel.therapySettings(), + sensitivityOverridesEnabled: FeatureFlags.sensitivityOverridesEnabled, +@@ -392,6 +398,16 @@ extension SettingsView { + } + } + ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { sheet = .preferences }, ++ includeArrow: true, ++ imageView: AnyView(Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold))), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ } ++ + private var cgmChoices: [ActionSheet.Button] { + var result = viewModel.cgmManagerSettingsViewModel.availableDevices + .sorted(by: {$0.localizedTitle < $1.localizedTitle}) +Submodule LoopKit 77793ca..c6d1a1a: +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index eec949bd..7ec12a27 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -869,6 +869,13 @@ + DDAF746729F422C600719F0A /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746629F422C600719F0A /* ProfileView.swift */; }; + DDAF746929F4234000719F0A /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF746829F4234000719F0A /* ProfileViewModel.swift */; }; + DDCFC91E2AA9F702003DE656 /* RenameProfileEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; + E9077D2A24ACDE2C0066A88D /* CorrectionRangeInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */; }; + E9086B2924B39EDC0062F5C8 /* ChartsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */; }; +@@ -1933,6 +1940,13 @@ + DDAF746629F422C600719F0A /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; + DDAF746829F4234000719F0A /* ProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModel.swift; sourceTree = ""; }; + DDCFC91D2AA9F702003DE656 /* RenameProfileEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RenameProfileEditor.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; + E9077D2924ACDE2C0066A88D /* CorrectionRangeInformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorrectionRangeInformationView.swift; sourceTree = ""; }; + E9086B2824B39EDC0062F5C8 /* ChartsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsTableViewController.swift; sourceTree = ""; }; +@@ -2283,6 +2297,7 @@ + 4369F090208B0D68000E3E45 /* Views */ = { + isa = PBXGroup; + children = ( ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + B4C004B2241085DB00B40429 /* ActionButton.swift */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, +@@ -2453,6 +2468,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + ); + path = Extensions; + sourceTree = ""; +@@ -2661,6 +2677,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + ); + path = LoopKit; + sourceTree = ""; +@@ -3182,6 +3200,7 @@ + B455F48025FF9A8B000ED456 /* InsulinSensitivityScheduleEditorViewModel.swift */, + B455F2A125FBE985000ED456 /* SuspendThresholdEditorViewModel.swift */, + 1D1FCE2424BD42EF000300A8 /* TherapySettingsViewModel.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + DD508E052A17712D00EEF8FD /* ProfileViewModel+FileManagement.swift */, + ); + path = ViewModels; +@@ -3308,6 +3327,16 @@ + path = LoopAlgorithm; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -4070,6 +4099,7 @@ + B4A2AAB1240830A30066563F /* LabeledTextField.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, + C1DD512B259FD8A600DE27AE /* InsulinTypeChooser.swift in Sources */, +@@ -4107,6 +4137,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 43FB60E520DCBA02002B996B /* SetupTableViewController.swift in Sources */, +@@ -4159,6 +4190,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -4223,6 +4255,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4312,6 +4345,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 4322B76F202FA26F0002837D /* GlucoseSampleValue.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, +@@ -4381,6 +4415,7 @@ + A93761C125ED670200F6BE43 /* BluetoothProvider.swift in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +@@ -4407,6 +4442,7 @@ + A932803B2798D63B0091D0A1 /* SyncAlertObject.swift in Sources */, + 1D841AAD24577EE10069DBFF /* AlertSoundPlayer.swift in Sources */, + C19E776B2A61FD8A003F06C5 /* RetrospectiveCorrection.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C187339A29B9488300519CDF /* UUID.swift in Sources */, + C1CAB9E926A3254800A57273 /* StoredInsulinModel.swift in Sources */, + 43CACE0E2247F89100F90AF5 /* WeakSynchronizedSet.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..e413f7b5 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public extension Guardrail where Value == HKQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +index f4b8d44a..1151ff12 100644 +--- a/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift ++++ b/LoopKit/LoopKit/LoopAlgorithm/DoseMath.swift +@@ -231,7 +231,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + sensitivity: HKQuantity, +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + let effectDuration = model.effectDuration + let timeline = [AbsoluteScheduleValue(startDate: date, endDate: date.addingTimeInterval(effectDuration), value: sensitivity)] +@@ -240,7 +241,8 @@ extension Collection where Element: GlucoseValue { + at: date, + suspendThreshold: suspendThreshold, + insulinSensitivityTimeline: timeline, +- model: model) ++ model: model, ++ preferences: preferences) + } + + /// For a collection of glucose prediction, determine the least amount of insulin delivered at +@@ -258,7 +260,8 @@ extension Collection where Element: GlucoseValue { + at date: Date, + suspendThreshold: HKQuantity, + insulinSensitivityTimeline: [AbsoluteScheduleValue], +- model: InsulinModel ++ model: InsulinModel, ++ preferences: PreferencesProvider + ) -> InsulinCorrection? { + var minGlucose: GlucoseValue? + var eventualGlucose: GlucoseValue? +@@ -402,14 +405,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(60 * 11) ++ continuationInterval: TimeInterval = TimeInterval(60 * 11), ++ preferences: PreferencesProvider + ) -> TempBasalRecommendation? { + let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) + + let scheduledBasalRate = basalRates.value(at: date) +@@ -427,13 +432,22 @@ extension Collection where Element: GlucoseValue { + maxBasalRate = Swift.min(maxThirtyMinuteRateToKeepIOBBelowLimit, maxBasalRate) + } + +- let temp = correction?.asTempBasal( ++ var temp = correction?.asTempBasal( + scheduledBasalRate: scheduledBasalRate, + maxBasalRate: maxBasalRate, + duration: duration, + rateRounder: rateRounder + ) + ++ if (preferences.isBasalLockEnabled && ( temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + return temp?.ifNecessary( + at: date, + scheduledBasalRate: scheduledBasalRate, +@@ -475,14 +489,16 @@ extension Collection where Element: GlucoseValue { + rateRounder: ((Double) -> Double)? = nil, + isBasalRateScheduleOverrideActive: Bool = false, + duration: TimeInterval = TimeInterval(30 * 60), +- continuationInterval: TimeInterval = TimeInterval(11 * 60) ++ continuationInterval: TimeInterval = TimeInterval(11 * 60), ++ preferences: PreferencesProvider + ) -> AutomaticDoseRecommendation? { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return nil + } +@@ -517,6 +533,15 @@ extension Collection where Element: GlucoseValue { + volumeRounder: volumeRounder + ) + ++ if (preferences.isBasalLockEnabled && (temp?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate || ++ lastTempBasal?.unitsPerHour ?? scheduledBasalRate < scheduledBasalRate ++ ) && ++ self[0 as! Self.Index].quantity > preferences.basalLockThreshold) ++ { ++ print("####### Temp Basal Lock On #########") ++ temp = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: 1800) ++ } ++ + if temp != nil || bolusUnits > 0 { + return AutomaticDoseRecommendation(basalAdjustment: temp, bolusUnits: bolusUnits) + } +@@ -545,14 +570,16 @@ extension Collection where Element: GlucoseValue { + model: InsulinModel, + pendingInsulin: Double, + maxBolus: Double, +- volumeRounder: ((Double) -> Double)? = nil ++ volumeRounder: ((Double) -> Double)? = nil, ++ preferences: PreferencesProvider + ) -> ManualBolusRecommendation { + guard let correction = self.insulinCorrection( + to: correctionRange, + at: date, + suspendThreshold: suspendThreshold ?? correctionRange.quantityRange(at: date).lowerBound, + sensitivity: sensitivity.quantity(at: date), +- model: model ++ model: model, ++ preferences: preferences + ) else { + return ManualBolusRecommendation(amount: 0, pendingInsulin: pendingInsulin) + } +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..a164defb +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import HealthKit ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: HKQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..0de6928d +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..785a23f1 +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import HealthKit ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: HKQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: HKQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +new file mode 100644 +index 00000000..c473fd51 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/GuardrailConstrainedTimeIntervalView.swift +@@ -0,0 +1,122 @@ ++// ++// GuardrailConstrainedTimeIntervalView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++ ++public struct GuardrailConstrainedTimeIntervalView: View { ++ @Environment(\.guidanceColors) var guidanceColors ++ var value: TimeInterval? ++ var guardrail: Guardrail ++ var isEditing: Bool ++ var isSupportedValue: Bool ++ var formatter: DateComponentsFormatter ++ var iconSpacing: CGFloat ++ var isUnitLabelVisible: Bool ++ var forceDisableAnimations: Bool ++ ++ @State private var hasAppeared = false ++ ++ public init( ++ value: TimeInterval, ++ guardrail: Guardrail, ++ isEditing: Bool, ++ isSupportedValue: Bool = true, ++ iconSpacing: CGFloat = 8, ++ isUnitLabelVisible: Bool = true, ++ forceDisableAnimations: Bool = false ++ ) { ++ self.value = value ++ self.guardrail = guardrail ++ self.isEditing = isEditing ++ self.isSupportedValue = isSupportedValue ++ self.iconSpacing = iconSpacing ++ self.isUnitLabelVisible = isUnitLabelVisible ++ self.forceDisableAnimations = forceDisableAnimations ++ ++ ++ self.formatter = { ++ let formatter = DateComponentsFormatter() ++ formatter.allowedUnits = [.hour, .minute] ++ formatter.unitsStyle = .short ++ formatter.zeroFormattingBehavior = [.dropLeading, .dropTrailing] ++ ++ return formatter ++ }() ++ } ++ ++ public var body: some View { ++ HStack { ++ HStack(spacing: iconSpacing) { ++ if value != nil { ++ if guardrail.classification(for: value!) != .withinRecommendedRange { ++ Image(systemName: "exclamationmark.triangle.fill") ++ .foregroundColor(warningColor) ++ .transition(.springInDisappear) ++ } ++ ++ Text(formatter.string(from: value!) ?? "") ++ .foregroundColor(warningColor) ++ .fixedSize(horizontal: true, vertical: false) ++ } else { ++ Text("–") ++ .foregroundColor(.secondary) ++ } ++ } ++ ++/* if isUnitLabelVisible { ++ Text(unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ }*/ ++ } ++ .accessibilityElement(children: .combine) ++ .onAppear { self.hasAppeared = true } ++ .animation(animation) ++ } ++ ++ private var animation: Animation? { ++ // A conditional implicit animation seems to behave funky on first appearance. ++ // Disable animations until the view has appeared. ++ if forceDisableAnimations || !hasAppeared { ++ return nil ++ } ++ ++ // While editing, the text width is liable to change, which can cause a slow-feeling animation ++ // of the guardrail warning icon. Disable animations while editing. ++ return isEditing ? nil : .default ++ } ++ ++ private var warningColor: Color { ++ guard let value = value else { ++ return .primary ++ } ++ ++ guard isSupportedValue else { return guidanceColors.critical } ++ ++ switch guardrail.classification(for: value) { ++ case .withinRecommendedRange: ++ return isEditing ? .accentColor : guidanceColors.acceptable ++ case .outsideRecommendedRange(let threshold): ++ switch threshold { ++ case .minimum, .maximum: ++ return guidanceColors.critical ++ case .belowRecommended, .aboveRecommended: ++ return guidanceColors.warning ++ } ++ } ++ } ++} ++ ++fileprivate extension AnyTransition { ++ static let springInDisappear = asymmetric( ++ insertion: AnyTransition.scale.animation(.spring(dampingFraction: 0.5)), ++ removal: .identity ++ ) ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..dc313a9c +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,209 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import HealthKit ++import LoopKit ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: HKQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: HKQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ bounds: Guardrail.basalLockThreshold.absoluteBounds.lowerBound...Guardrail.basalLockThreshold.absoluteBounds.upperBound ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..3a7dd0ad +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,101 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} ++ ++fileprivate extension SafetyClassification.Threshold { ++ var severity: WarningSeverity { ++ switch self { ++ case .belowRecommended, .aboveRecommended: ++ return .default ++ case .minimum, .maximum: ++ return .critical ++ } ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..41476c35 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import HealthKit ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: HKUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/archive/nextdev_basal_lock_nomarker.patch b/basal_lock/archive/nextdev_basal_lock_nomarker.patch new file mode 100644 index 0000000..e38e540 --- /dev/null +++ b/basal_lock/archive/nextdev_basal_lock_nomarker.patch @@ -0,0 +1,923 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj +index 70d77e82..dcbe4906 100644 +--- a/Loop/Loop.xcodeproj/project.pbxproj ++++ b/Loop/Loop.xcodeproj/project.pbxproj +@@ -596,6 +596,7 @@ + CB1AF8155B1761A30ACA5591 /* Loop/Resources/Sounds/synth.caf in Resources */ = {isa = PBXBuildFile; fileRef = 83081FFB0497A4596F597830 /* Loop/Resources/Sounds/synth.caf */; }; + D6E28676C2C7751C77C7F2FB /* Loop/Resources/Sounds/spring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 9471E156FC10D6D0FF219C77 /* Loop/Resources/Sounds/spring.caf */; }; + DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; }; ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC065132B65871E0033FD88 /* Preferences.swift */; }; + DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */; }; + DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */; }; + DDC389FA2A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */; }; +@@ -1404,6 +1405,7 @@ + C9SCENED0000000000000002 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + CE102E23D8C1C1291EF66387 /* PluginPickerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PluginPickerView.swift; sourceTree = ""; }; + DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = ""; }; ++ DDC065132B65871E0033FD88 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + DDC389F52A2B61750066E2E8 /* ApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F72A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseBasedApplicationFactorStrategy.swift; sourceTree = ""; }; + DDC389F92A2B62470066E2E8 /* ConstantApplicationFactorStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantApplicationFactorStrategy.swift; sourceTree = ""; }; +@@ -1721,6 +1723,7 @@ + C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + A987CD4824A58A0100439ADC /* ZipArchive.swift */, ++ DDC065132B65871E0033FD88 /* Preferences.swift */, + C16F51182B891DB600EFD7A1 /* StoredDataAlgorithmInput.swift */, + C16F511A2B89363A00EFD7A1 /* SimpleInsulinDose.swift */, + C152B9F42C9C7D4A00ACBC06 /* AutomationHistoryEntry.swift */, +@@ -3516,6 +3519,7 @@ + B4001CEE28CBBC82002FB414 /* AlertManagementView.swift in Sources */, + C9A47B0380AAB1FC572D3F00 /* GlucoseAlertSettingsView.swift in Sources */, + E9C00EF524C623EF00628F35 /* LoopSettings+Loop.swift in Sources */, ++ DDC065142B65871E0033FD88 /* Preferences.swift in Sources */, + 4389916B1E91B689000EEF90 /* ChartSettings+Loop.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, + C1F2CAAC2B7A980600D7F581 /* BasalRelativeDose.swift in Sources */, +diff --git a/Loop/Loop/Managers/LoopDataManager.swift b/Loop/Loop/Managers/LoopDataManager.swift +index 43c4dca7..4a3551cc 100644 +--- a/Loop/Loop/Managers/LoopDataManager.swift ++++ b/Loop/Loop/Managers/LoopDataManager.swift +@@ -733,6 +733,16 @@ final class LoopDataManager: ObservableObject { + let scheduledBasalRate = input.basal.closestPrior(to: loopBaseTime)!.value + let activeOverride = temporaryPresetsManager.presetHistory.activeOverride(at: loopBaseTime) + ++ // Basal Lock: while glucose is above the threshold, don't let the temp basal ++ // drop below the scheduled rate. ++ let shouldApplyBasalLock = Preferences.shared.isBasalLockEnabled ++ && latestGlucose.quantity > Preferences.shared.basalLockThreshold ++ && basal.unitsPerHour < scheduledBasalRate ++ if shouldApplyBasalLock { ++ // unrounded on purpose: must equal the neutralBasalRate passed below ++ basal = TempBasalRecommendation(unitsPerHour: scheduledBasalRate, duration: LoopAlgorithm.tempBasalDuration) ++ } ++ + let basalAdjustment = basal.adjustForCurrentDelivery( + at: loopBaseTime, + neutralBasalRate: scheduledBasalRate, +@@ -743,6 +753,9 @@ final class LoopDataManager: ObservableObject { + + if let basalAdjustment { + recommendationToEnact.basalAdjustment = basalAdjustment ++ if shouldApplyBasalLock { ++ recommendationToEnact.direction = .neutral // no longer a reduction ++ } + } + + output.recommendationResult = .success(.init(automatic: recommendationToEnact)) +diff --git a/Loop/Loop/Models/Preferences.swift b/Loop/Loop/Models/Preferences.swift +new file mode 100644 +index 00000000..ab5d00ec +--- /dev/null ++++ b/Loop/Loop/Models/Preferences.swift +@@ -0,0 +1,50 @@ ++// ++// Preferences.swift ++// Loop ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import LoopAlgorithm ++ ++struct Preferences: PreferencesProvider { ++ ++ static var shared = Preferences() ++ ++ private init() {} ++ ++ // Basal Lock Threshold ++ var basalLockThreshold: LoopQuantity { ++ get { ++ let key = "basalLockThreshold" ++ if let value = UserDefaults.standard.value(forKey: key) as? Double { ++ return LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: value) ++ } else { ++ return LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ } ++ } ++ set { ++ let key = "basalLockThreshold" ++ let value = newValue.doubleValue(for: .milligramsPerDeciliter) ++ UserDefaults.standard.set(value, forKey: key) ++ } ++ } ++ ++ // Basal Lock Enabled ++ var isBasalLockEnabled: Bool { ++ get { ++ let key = "isBasalLockEnabled" ++ if UserDefaults.standard.object(forKey: key) == nil { ++ return false ++ } ++ return UserDefaults.standard.bool(forKey: key) ++ } ++ set { ++ let key = "isBasalLockEnabled" ++ UserDefaults.standard.set(newValue, forKey: key) ++ } ++ } ++} +diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift +index b81cd6f8..3df167f7 100644 +--- a/Loop/Loop/Views/SettingsView.swift ++++ b/Loop/Loop/Views/SettingsView.swift +@@ -62,6 +62,7 @@ struct SettingsView: View { + @State private var alert: Destination.Alert? + @State private var sheet: Destination.Sheet? + @State private var pluginSelection: (() -> Void)? ++ @State private var showingPreferences = false + + var localizedAppNameAndVersion: String + +@@ -93,6 +94,9 @@ struct SettingsView: View { + if FeatureFlags.allowExperimentalFeatures { + favoriteFoodsSection + } ++ if FeatureFlags.allowExperimentalFeatures { ++ preferencesSection ++ } + if (viewModel.pumpManagerSettingsViewModel.isTestingDevice || viewModel.cgmManagerSettingsViewModel.isTestingDevice) && viewModel.showDeleteTestData { + deleteDataSection + } +@@ -495,6 +499,21 @@ extension SettingsView { + descriptiveText: "Simplify Carb Entry") + } + } ++ ++ private var preferencesSection: some View { ++ Section { ++ LargeButton(action: { showingPreferences = true }, ++ includeArrow: true, ++ imageView: Image(systemName: "gearshape.fill").font(.system(size: 30, weight: .bold)), ++ label: NSLocalizedString("Preferences", comment: "Title text for button to Preferences"), ++ descriptiveText: NSLocalizedString("Customize your Loop experience by adjusting additional settings", comment: "Descriptive text for Preferences")) ++ } ++ .sheet(isPresented: $showingPreferences) { ++ PreferencesView(viewModel: PreferencesViewModel(preferencesProvider: Preferences.shared)) ++ .environmentObject(displayGlucosePreference) ++ .environment(\.dismissAction, { showingPreferences = false }) ++ } ++ } + + @ViewBuilder + private func pluginPickerView(for picker: Destination.PluginPicker) -> some View { +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit.xcodeproj/project.pbxproj b/LoopKit/LoopKit.xcodeproj/project.pbxproj +index 3d1c3a50..aa608f04 100644 +--- a/LoopKit/LoopKit.xcodeproj/project.pbxproj ++++ b/LoopKit/LoopKit.xcodeproj/project.pbxproj +@@ -848,6 +848,13 @@ + C1FAEC1D264AD6B400A3250B /* DeviceStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */; }; + C1FAEC1F264AE12700A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47ECF8725DC20810024A54D /* UIImage.swift */; }; + C1FAEC21264AEEA300A3250B /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FAEC20264AEEA300A3250B /* UIImage.swift */; }; ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */; }; ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */; }; ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD28B3702B80C074001044D4 /* PreferencesSetting.swift */; }; ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5A2B80ECB900915F95 /* PreferencesView.swift */; }; ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */; }; ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A642B814CA800915F95 /* PreferencesProvider.swift */; }; ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */; }; + E0E99C342C0E7AD300F9300C /* ConfirmationToggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E99C332C0E7AD300F9300C /* ConfirmationToggle.swift */; }; + E0E99C392C0E80C200F9300C /* LoopCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E99C382C0E80C200F9300C /* LoopCircleView.swift */; }; + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9077D2624ACD59F0066A88D /* InformationView.swift */; }; +@@ -1769,6 +1776,13 @@ + C1FAC06228C7B0A100754AE2 /* reservoir_iob_test.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = reservoir_iob_test.json; sourceTree = ""; }; + C1FAEC1C264AD6B400A3250B /* DeviceStatusBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceStatusBadge.swift; sourceTree = ""; }; + C1FAEC20264AEEA300A3250B /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalLockEditor.swift; sourceTree = ""; }; ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesGuardrailWarning.swift; sourceTree = ""; }; ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesSetting.swift; sourceTree = ""; }; ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesProvider.swift; sourceTree = ""; }; ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Guardrail+Preferences.swift"; sourceTree = ""; }; + E0E99C332C0E7AD300F9300C /* ConfirmationToggle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfirmationToggle.swift; sourceTree = ""; }; + E0E99C382C0E80C200F9300C /* LoopCircleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopCircleView.swift; sourceTree = ""; }; + E9077D2624ACD59F0066A88D /* InformationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InformationView.swift; sourceTree = ""; }; +@@ -2054,6 +2068,7 @@ + isa = PBXGroup; + children = ( + B4C004B2241085DB00B40429 /* ActionButton.swift */, ++ DD545A592B80EC9500915F95 /* Preferences Editors */, + 89AF78C524482268002B4FCC /* ActionButtonStyle.swift */, + C1E4B307242E995200E70CCB /* ActivityIndicator.swift */, + 89BE75CA2464BC2000B145D9 /* AlertContent.swift */, +@@ -2229,6 +2244,7 @@ + C187338229B9486200519CDF /* TimeInterval.swift */, + C187339629B9488300519CDF /* TimeZone.swift */, + C187339729B9488300519CDF /* UUID.swift */, ++ DD545A682B8BCF8E00915F95 /* Guardrail+Preferences.swift */, + 842E40282F22D8C6000CCCE0 /* Character+IsEmoji.swift */, + ); + path = Extensions; +@@ -2435,6 +2451,8 @@ + C1814B8B226371DF008D2D8E /* WeakSynchronizedDelegate.swift */, + 43CACE0D2247F89100F90AF5 /* WeakSynchronizedSet.swift */, + B4A2ABEE2AAB5160007E3EC1 /* Pluggable.swift */, ++ DD28B3702B80C074001044D4 /* PreferencesSetting.swift */, ++ DD545A642B814CA800915F95 /* PreferencesProvider.swift */, + 840A2F102C0F9882003D5E90 /* LoopCompletionFreshness.swift */, + ); + path = LoopKit; +@@ -2939,6 +2957,7 @@ + isa = PBXGroup; + children = ( + C10759A12E4E3F2900EFF99A /* Environment+FeatureFlags.swift */, ++ DD545A5E2B80EFA900915F95 /* PreferencesViewModel.swift */, + B455F3A325FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift */, + B4B7C1BB2604E3FC007379F6 /* CorrectionRangeScheduleEditorViewModel.swift */, + B4D4C20C25F95A8700DA809D /* DisplayGlucosePreference.swift */, +@@ -3058,6 +3077,16 @@ + path = Resources; + sourceTree = ""; + }; ++ DD545A592B80EC9500915F95 /* Preferences Editors */ = { ++ isa = PBXGroup; ++ children = ( ++ DD545A5A2B80ECB900915F95 /* PreferencesView.swift */, ++ DD13BC6F2C3C71A70062313B /* BasalLockEditor.swift */, ++ DD13BC712C3C74CD0062313B /* PreferencesGuardrailWarning.swift */, ++ ); ++ path = "Preferences Editors"; ++ sourceTree = ""; ++ }; + E9077D2824ACD5AA0066A88D /* Information Screens */ = { + isa = PBXGroup; + children = ( +@@ -3781,6 +3810,7 @@ + 842E404B2F22EAD8000CCCE0 /* EditPresetView.swift in Sources */, + A9D3FF0B2A6C198C000C891D /* CGPoint.swift in Sources */, + B429D66E24BF7255003E1B4A /* UIImage.swift in Sources */, ++ DD13BC722C3C74CD0062313B /* PreferencesGuardrailWarning.swift in Sources */, + B46B62A923FF05F8001E69BA /* LabeledNumberInput.swift in Sources */, + 842E40502F22ED57000CCCE0 /* ExistingPresetInsulinNeedsEdit.swift in Sources */, + 892155152245C57E009112BC /* SegmentedGaugeBarLayer.swift in Sources */, +@@ -3820,6 +3850,7 @@ + A9D3FF042A6C1944000C891D /* PredictedGlucoseChart.swift in Sources */, + C1DE4C2125A253BD007065F8 /* Color.swift in Sources */, + 898E6E702241EDB70019E459 /* PercentageTextFieldTableViewController.swift in Sources */, ++ DD13BC702C3C71A70062313B /* BasalLockEditor.swift in Sources */, + 89CAB36D24C9EC98009EE3CE /* Keyboard.swift in Sources */, + 89186C0724BF7FC70003D0F3 /* Guardrail+UI.swift in Sources */, + 84EE97B32D7A59AE00D5E941 /* ManualBolusDoseChartLayer.swift in Sources */, +@@ -3878,6 +3909,7 @@ + B46B62B323FF0E62001E69BA /* SelectableLabel.swift in Sources */, + 89FC6893245A2D680075CF59 /* ScheduleItemView.swift in Sources */, + 43BA716F201E49220058961E /* FoodEmojiDataSource.swift in Sources */, ++ DD545A5F2B80EFA900915F95 /* PreferencesViewModel.swift in Sources */, + E9077D2724ACD59F0066A88D /* InformationView.swift in Sources */, + E94141D024C8F31C0096C326 /* DeliveryLimitsEditor.swift in Sources */, + 1452F4BA2A85266500F8B9E4 /* CarbQuantityRow.swift in Sources */, +@@ -3947,6 +3979,7 @@ + 43BA717D201EE7090058961E /* GlucoseRangeTableViewCell.swift in Sources */, + B455F3A425FF7FF0000ED456 /* CorrectionRangeOverridesEditorViewModel.swift in Sources */, + A9D3FF002A6C1944000C891D /* ChartConstants.swift in Sources */, ++ DD545A5B2B80ECB900915F95 /* PreferencesView.swift in Sources */, + 89BE75CB2464BC2000B145D9 /* AlertContent.swift in Sources */, + 43BA7184201EE7090058961E /* TextFieldTableViewController.swift in Sources */, + 1452F4B22A8521CD00F8B9E4 /* TextFieldRow.swift in Sources */, +@@ -4038,6 +4071,7 @@ + 89AE222F228BC68000BDFD85 /* DoseProgressTimerEstimator.swift in Sources */, + 43D8FDF61C7290350073BE78 /* DailyQuantitySchedule.swift in Sources */, + 43D8FDF51C7290350073BE78 /* CarbRatioSchedule.swift in Sources */, ++ DD545A652B814CA800915F95 /* PreferencesProvider.swift in Sources */, + 89AE222C228BC66E00BDFD85 /* Locked.swift in Sources */, + 432CF87120D76D5A0066B889 /* GlucoseDisplayable.swift in Sources */, + A919889F2355016B00B75EEE /* DosingDecisionStore.swift in Sources */, +@@ -4103,7 +4137,9 @@ + 840A2DD32E399BD400D4E245 /* Modelv5ToModelv6.xcmappingmodel in Sources */, + 433BC7A720523DB7000B1200 /* NewGlucoseSample.swift in Sources */, + 4322B78E202FA2B30002837D /* InsulinMath.swift in Sources */, ++ DD28B3712B80C074001044D4 /* PreferencesSetting.swift in Sources */, + 840A2D822E39649500D4E245 /* ModelMappingv4v5Tov6Policy.swift in Sources */, ++ DD545A692B8BCF8E00915F95 /* Guardrail+Preferences.swift in Sources */, + C17F39D023CE34B100FA1113 /* StoredDeviceLogEntry.swift in Sources */, + 43B17C89208EEC0B00AC27E9 /* HealthStoreUnitCache.swift in Sources */, + A912BE29245B9CD500CBE199 /* SettingsObject+CoreDataClass.swift in Sources */, +diff --git a/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +new file mode 100644 +index 00000000..c0fa0dd0 +--- /dev/null ++++ b/LoopKit/LoopKit/Extensions/Guardrail+Preferences.swift +@@ -0,0 +1,18 @@ ++// ++// Guardrail+Preferences.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopAlgorithm ++ ++public extension Guardrail where Value == LoopQuantity { ++ static let basalLockThreshold = Guardrail( ++ absoluteBounds: LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 200)...LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ recommendedBounds: LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 220)...LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), ++ startingSuggestion: LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 250) ++ ) ++} +diff --git a/LoopKit/LoopKit/PreferencesProvider.swift b/LoopKit/LoopKit/PreferencesProvider.swift +new file mode 100644 +index 00000000..e3d5d21e +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesProvider.swift +@@ -0,0 +1,15 @@ ++// ++// PreferencesProvider.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopAlgorithm ++ ++public protocol PreferencesProvider { ++ var basalLockThreshold: LoopQuantity { get set } ++ var isBasalLockEnabled: Bool { get set } ++} +diff --git a/LoopKit/LoopKit/PreferencesSetting.swift b/LoopKit/LoopKit/PreferencesSetting.swift +new file mode 100644 +index 00000000..3cdd9129 +--- /dev/null ++++ b/LoopKit/LoopKit/PreferencesSetting.swift +@@ -0,0 +1,60 @@ ++// ++// PreferencesSetting.swift ++// LoopKit ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++ ++public enum PreferencesSetting { ++ case basalLock ++} ++ ++extension PreferencesSetting: Equatable { } ++ ++public extension PreferencesSetting { ++ var title: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("Basal Lock", comment: "Title text for basal lock setting") ++ } ++ } ++ ++ var smallTitle: String { ++ return title ++ } ++ ++ func descriptiveText(appName: String) -> String { ++ switch self { ++ case .basalLock: ++ return String(format: LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Descriptive text for basal lock (1: app name)"), appName) ++ } ++ } ++} ++ ++// MARK: Guardrails ++public extension PreferencesSetting { ++ var guardrailCaptionForLowValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is lower than what is typically recommended.", comment: "Descriptive text for guardrail low value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForHighValue: String { ++ switch self { ++ case .basalLock: ++ return LocalizedString("The value you have entered is higher than what is typically recommended.", comment: "Descriptive text for guardrail high value warning for basal lock") ++ } ++ } ++ ++ var guardrailCaptionForOutsideValues: String { ++ return LocalizedString("The value you have entered for Basal Lock is outside of the recommended range.", comment: "Descriptive text for guardrail outside value warning for basal lock") ++ } ++ ++ var guardrailSaveWarningCaption: String { ++ return LocalizedString("Please note that this value is outside of the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock") ++ } ++} +diff --git a/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +new file mode 100644 +index 00000000..03e08f9a +--- /dev/null ++++ b/LoopKit/LoopKitUI/ViewModels/PreferencesViewModel.swift +@@ -0,0 +1,34 @@ ++// ++// PreferencesViewModel.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import Foundation ++import LoopKit ++import LoopAlgorithm ++ ++public class PreferencesViewModel: ObservableObject { ++ @Published var basalLockThreshold: LoopQuantity ++ @Published var isBasalLockEnabled: Bool ++ ++ private var preferencesProvider: PreferencesProvider ++ ++ public init(preferencesProvider: PreferencesProvider) { ++ self.preferencesProvider = preferencesProvider ++ self.basalLockThreshold = preferencesProvider.basalLockThreshold ++ self.isBasalLockEnabled = preferencesProvider.isBasalLockEnabled ++ } ++ ++ func updateBasalLockThreshold(_ newValue: LoopQuantity) { ++ preferencesProvider.basalLockThreshold = newValue ++ self.basalLockThreshold = newValue ++ } ++ ++ func updateBasalLockEnabled(_ newValue: Bool) { ++ preferencesProvider.isBasalLockEnabled = newValue ++ self.isBasalLockEnabled = newValue ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +new file mode 100644 +index 00000000..c0df1d94 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/BasalLockEditor.swift +@@ -0,0 +1,222 @@ ++// ++// BasalLockEditor.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import LoopAlgorithm ++ ++public struct BasalLockEditor: View { ++ @EnvironmentObject private var displayGlucosePreference: DisplayGlucosePreference ++ ++ @Environment(\.dismissAction) var dismiss ++ @Environment(\.authenticate) var authenticate ++ @Environment(\.appName) private var appName ++ ++ let viewModel: PreferencesViewModel ++ let didSave: (() -> Void)? ++ ++ @State private var userDidTap: Bool = false ++ @State private var isBasalLockEnabled: Bool ++ @State private var threshold: LoopQuantity ++ @State private var isEditing = false ++ @State private var showingConfirmationAlert = false ++ ++ private var initialValue: LoopQuantity { ++ viewModel.basalLockThreshold ++ } ++ ++ public init(preferencesViewModel: PreferencesViewModel, didSave: (() -> Void)? = nil) { ++ self.viewModel = preferencesViewModel ++ self._isBasalLockEnabled = State(initialValue: preferencesViewModel.isBasalLockEnabled) ++ self._threshold = State(initialValue: preferencesViewModel.basalLockThreshold) ++ self.didSave = didSave ++ } ++ ++ public var body: some View { ++ contentWithCancel ++ .navigationBarTitle("", displayMode: .inline) ++ } ++ ++ private var contentWithCancel: some View { ++ content ++ .navigationBarBackButtonHidden(isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ++ .toolbar { ++ ToolbarItem(placement: .navigationBarLeading) { ++ leadingNavigationBarItem ++ } ++ } ++ } ++ ++ @ViewBuilder ++ private var leadingNavigationBarItem: some View { ++ if isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold { ++ cancelButton ++ } else { ++ EmptyView() ++ } ++ } ++ ++ private var cancelButton: some View { ++ Button(action: { self.dismiss() }) { ++ Text(LocalizedString("Cancel", comment: "Cancel editing settings button title")) ++ } ++ } ++ ++ private var stride: Double { ++ switch displayGlucosePreference.unit { ++ case .milligramsPerDeciliter: ++ return 1 ++ case .millimolesPerLiter: ++ return 0.1 ++ default: ++ return 1 ++ } ++ } ++ ++ private var picker: GlucoseValuePicker { ++ let bounds = Guardrail.basalLockThreshold.absoluteBounds ++ let selectableValues = bounds.selectableValues(unit: displayGlucosePreference.unit, stride: stride) ++ return GlucoseValuePicker( ++ value: self.$threshold.animation(), ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ selectableValues: selectableValues ++ ) ++ } ++ ++ private var content: some View { ++ ConfigurationPage( ++ title: Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")), ++ actionButtonTitle: Text(LocalizedString("Save", comment: "Save button title")), ++ actionButtonState: saveButtonState, ++ cards: { ++ Card { ++ description ++ .font(.callout) ++ .foregroundColor(Color(.secondaryLabel)) ++ .fixedSize(horizontal: false, vertical: true) ++ ++ Toggle(isOn: $isBasalLockEnabled) { ++ Text("Enable Basal Lock") ++ } ++ .animation(.default, value: isBasalLockEnabled) ++ ++ ExpandableSetting( ++ isEditing: $isEditing, ++ valueContent: { ++ GuardrailConstrainedQuantityView( ++ value: threshold, ++ unit: displayGlucosePreference.unit, ++ guardrail: .basalLockThreshold, ++ isEditing: isEditing, ++ // Workaround for strange animation behavior on appearance ++ forceDisableAnimations: true ++ ) ++ }, ++ expandedContent: { ++ // Prevent the picker from expanding the card's width on small devices ++ picker.frame(maxWidth: 200) ++ } ++ ) ++ .transition(.slide) ++ } ++ }, ++ actionAreaContent: { ++ instructionalContentIfNecessary ++ if isBasalLockEnabled && warningThreshold != nil && userDidTap { ++ PreferencesGuardrailWarning(preferencesSetting: .basalLock, title: basalLockTitle, threshold: warningThreshold!) ++ .transition(.slide) ++ } ++ }, ++ action: { ++ if self.warningThreshold == nil { ++ self.startSaving() ++ } else { ++ self.showingConfirmationAlert = true ++ } ++ } ++ ) ++ .alert(isPresented: $showingConfirmationAlert, content: confirmationAlert) ++ .simultaneousGesture(TapGesture().onEnded { ++ withAnimation { ++ self.userDidTap = true ++ } ++ }) ++ } ++ ++ private var basalLockTitle: Text { ++ Text(LocalizedString("Basal Lock Threshold", comment: "Title for basal lock threshold setting")) ++ } ++ ++ private var description: Text { ++ Text(LocalizedString("Basal Lock prevents the basal rate from being throttled if the blood glucose is above a certain level.", comment: "Description for basal lock threshold setting")) ++ } ++ ++ private var instructionalContentIfNecessary: some View { ++ Group { ++ if !userDidTap { ++ instructionalContent ++ } ++ } ++ } ++ ++ private var instructionalContent: some View { ++ HStack { ++ Text(LocalizedString("You can edit the setting by tapping into the line item.", comment: "Description of how to edit setting")) ++ .foregroundColor(.secondary) ++ .font(.subheadline) ++ Spacer() ++ } ++ } ++ ++ private var saveButtonState: ConfigurationPageActionButtonState { ++ let selectableValues = picker.selectableValues ++ let adjustedBounds = (selectableValues.first!)...(selectableValues.last!) ++ guard adjustedBounds.contains(threshold.doubleValue(for: displayGlucosePreference.unit)) else { ++ return .disabled ++ } ++ return (isBasalLockEnabled != viewModel.isBasalLockEnabled || threshold != viewModel.basalLockThreshold) ? .enabled : .disabled ++ } ++ ++ private var warningThreshold: SafetyClassification.Threshold? { ++ switch Guardrail.basalLockThreshold.classification(for: threshold) { ++ case .withinRecommendedRange: ++ return nil ++ case .outsideRecommendedRange(let threshold): ++ return threshold ++ } ++ } ++ ++ private func confirmationAlert() -> SwiftUI.Alert { ++ SwiftUI.Alert( ++ title: Text(LocalizedString("Save Basal Lock Threshold?", comment: "Alert title for confirming a basal lock threshold outside the recommended range")), ++ message: Text(LocalizedString("Your setting for basal lock is outside the recommended range.", comment: "Descriptive text for saving settings outside the recommended range for basal lock")), ++ primaryButton: .cancel(Text(LocalizedString("Go Back", comment: "Text for go back action on confirmation alert"))), ++ secondaryButton: .default( ++ Text(LocalizedString("Continue", comment: "Text for continue action on confirmation alert")), ++ action: startSaving ++ ) ++ ) ++ } ++ ++ private func startSaving() { ++ authenticate(LocalizedString("Authentication is required to save this setting.", comment: "Authentication challenge description for basal lock threshold")) { ++ switch $0 { ++ case .success: self.continueSaving() ++ case .failure: break ++ } ++ } ++ } ++ ++ private func continueSaving() { ++ viewModel.updateBasalLockEnabled(self.isBasalLockEnabled) ++ viewModel.updateBasalLockThreshold(self.threshold) ++ didSave?() ++ self.dismiss() ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +new file mode 100644 +index 00000000..32133be0 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesGuardrailWarning.swift +@@ -0,0 +1,90 @@ ++// ++// PreferencesGuardrailWarning.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++ ++public struct PreferencesGuardrailWarning: View { ++ private enum CrossedThresholds { ++ case one(SafetyClassification.Threshold) ++ case oneOrMore([SafetyClassification.Threshold]) ++ } ++ ++ private var title: Text ++ private var crossedThresholds: CrossedThresholds ++ private var captionOverride: Text? ++ private var preferencesSetting: PreferencesSetting ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ threshold: SafetyClassification.Threshold, ++ caption: Text? = nil ++ ) { ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .one(threshold) ++ self.captionOverride = caption ++ } ++ ++ public init( ++ preferencesSetting: PreferencesSetting, ++ title: Text, ++ thresholds: [SafetyClassification.Threshold], ++ caption: Text? = nil ++ ) { ++ precondition(!thresholds.isEmpty) ++ self.preferencesSetting = preferencesSetting ++ self.title = title ++ self.crossedThresholds = .oneOrMore(thresholds) ++ self.captionOverride = caption ++ } ++ ++ public var body: some View { ++ WarningView(title: title, caption: caption, severity: severity) ++ } ++ ++ private var severity: WarningSeverity { ++ switch crossedThresholds { ++ case .one(let threshold): ++ return threshold.severity ++ case .oneOrMore(let thresholds): ++ return thresholds.lazy.map({ $0.severity }).max()! ++ } ++ } ++ ++ private var caption: Text { ++ if let caption = captionOverride { ++ return caption ++ } ++ ++ switch crossedThresholds { ++ case .one(let threshold): ++ return captionForThreshold(threshold) ++ case .oneOrMore(let thresholds): ++ if thresholds.count == 1, let threshold = thresholds.first { ++ return captionForThreshold(threshold) ++ } else { ++ return captionForThresholds() ++ } ++ } ++ } ++ ++ private func captionForThreshold(_ threshold: SafetyClassification.Threshold) -> Text { ++ switch threshold { ++ case .minimum, .belowRecommended, .belowWarning: ++ return Text(preferencesSetting.guardrailCaptionForLowValue) ++ case .aboveRecommended, .aboveWarning, .maximum: ++ return Text(preferencesSetting.guardrailCaptionForHighValue) ++ } ++ } ++ ++ private func captionForThresholds() -> Text { ++ return Text(preferencesSetting.guardrailCaptionForOutsideValues) ++ } ++} +diff --git a/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +new file mode 100644 +index 00000000..350395d5 +--- /dev/null ++++ b/LoopKit/LoopKitUI/Views/Preferences Editors/PreferencesView.swift +@@ -0,0 +1,141 @@ ++// ++// PreferencesView.swift ++// LoopKitUI ++// ++// Created by Jonas Björkert on 2024-02-25. ++// Copyright © 2024 LoopKit Authors. All rights reserved. ++// ++ ++import SwiftUI ++import LoopKit ++import LoopAlgorithm ++ ++public struct PreferencesView: View { ++ @Environment(\.dismissAction) private var dismiss ++ @Environment(\.appName) private var appName ++ @EnvironmentObject var displayGlucosePreference: DisplayGlucosePreference ++ ++ @ObservedObject var viewModel: PreferencesViewModel ++ ++ public init(viewModel: PreferencesViewModel) { ++ self.viewModel = viewModel ++ } ++ ++ private static func createFormatter(for unit: LoopUnit) -> NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: unit) ++ return quantityFormatter.numberFormatter ++ } ++ ++ public var body: some View { ++ navigationViewWrappedContent ++ } ++ ++ private var formatter: NumberFormatter { ++ let quantityFormatter = QuantityFormatter(for: displayGlucosePreference.unit) ++ return quantityFormatter.numberFormatter ++ } ++} ++ ++extension PreferencesView { ++ private var navigationViewWrappedContent: some View { ++ NavigationView { ++ ZStack { ++ Color(.systemGroupedBackground) ++ .edgesIgnoringSafeArea(.all) ++ content ++ .toolbar { ++ ToolbarItem(placement: .navigationBarTrailing) { ++ dismissButton ++ } ++ } ++ .navigationBarTitle(preferencesTitle, displayMode: .large) ++ } ++ } ++ } ++ ++ private var dismissButton: some View { ++ Button(action: dismiss) { ++ Text("Done") ++ } ++ } ++ ++ private var preferencesTitle: String { ++ return "Preferences" ++ } ++ ++ private var content: some View { ++ CardList(title: nil, style: .sectioned(cardListSections)) //, trailer: cardListTrailer ++ } ++ ++ private var cardListSections: [CardListSection] { ++ var cardListSections: [CardListSection] = [] ++ ++ cardListSections.append(preferencesCardListSection) ++ ++ return cardListSections ++ } ++ ++ private var preferencesCardListSection: CardListSection { ++ CardListSection { ++ preferencesCardStack ++ .spacing(20) ++ } ++ } ++ ++ private var preferencesCardStack: CardStack { ++ var cards: [Card] = [] ++ ++ cards.append(basalLockSection) ++ ++ return CardStack(cards: cards) ++ } ++ ++ @ViewBuilder ++ func screen(for setting: PreferencesSetting, dismiss: @escaping () -> Void) -> some View { ++ switch setting { ++ case .basalLock: ++ BasalLockEditor(preferencesViewModel: viewModel, didSave: dismiss) ++ } ++ } ++ ++ private func card(for preferencesSetting: PreferencesSetting, @ViewBuilder content: @escaping () -> Content) -> Card where Content: View { ++ Card { ++ SectionWithTapToEdit( ++ isEnabled: true, ++ title: preferencesSetting.title, ++ descriptiveText: preferencesSetting.descriptiveText(appName: appName), ++ destination: { dismiss in ++ screen(for: preferencesSetting, dismiss: dismiss) ++ .environment(\.dismissAction, dismiss) ++ }, ++ content: content ++ ) ++ } ++ } ++ ++ private var basalLockSection: Card { ++ card(for: .basalLock) { ++ SectionDivider() ++ HStack { ++ Spacer() ++ if viewModel.isBasalLockEnabled { ++ HStack(alignment: .firstTextBaseline) { ++ Text(formatter.string(for: viewModel.basalLockThreshold.doubleValue(for: displayGlucosePreference.unit)) ?? "") ++ Text(displayGlucosePreference.unit.shortLocalizedUnitString()) ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } else { ++ Text("Off") ++ .foregroundColor(Color(.secondaryLabel)) ++ } ++ } ++ } ++ } ++} ++ ++fileprivate struct SectionDivider: View { ++ var body: some View { ++ Divider() ++ .padding(.trailing, -16) ++ } ++} diff --git a/basal_lock/main3144_basal_lock.patch b/basal_lock/main3144_basal_lock.patch index 8d5a3ae..15d4218 100644 --- a/basal_lock/main3144_basal_lock.patch +++ b/basal_lock/main3144_basal_lock.patch @@ -1193,3 +1193,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main3144_basal_lock_profiles.patch b/basal_lock/main3144_basal_lock_profiles.patch index 825b373..98ff752 100644 --- a/basal_lock/main3144_basal_lock_profiles.patch +++ b/basal_lock/main3144_basal_lock_profiles.patch @@ -1193,3 +1193,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main3149_basal_lock.patch b/basal_lock/main3149_basal_lock.patch index 9f073f7..905cbc8 100644 --- a/basal_lock/main3149_basal_lock.patch +++ b/basal_lock/main3149_basal_lock.patch @@ -1190,3 +1190,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main3149_basal_lock_profiles.patch b/basal_lock/main3149_basal_lock_profiles.patch index 029c15e..c566bad 100644 --- a/basal_lock/main3149_basal_lock_profiles.patch +++ b/basal_lock/main3149_basal_lock_profiles.patch @@ -1190,3 +1190,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main380_basal_lock.patch b/basal_lock/main380_basal_lock.patch index 572f433..a4df6a9 100644 --- a/basal_lock/main380_basal_lock.patch +++ b/basal_lock/main380_basal_lock.patch @@ -1191,3 +1191,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main380_basal_lock_profiles.patch b/basal_lock/main380_basal_lock_profiles.patch index 628ec76..08d36d1 100644 --- a/basal_lock/main380_basal_lock_profiles.patch +++ b/basal_lock/main380_basal_lock_profiles.patch @@ -1191,3 +1191,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main382_basal_lock.patch b/basal_lock/main382_basal_lock.patch index 0b4ec61..36f5c96 100644 --- a/basal_lock/main382_basal_lock.patch +++ b/basal_lock/main382_basal_lock.patch @@ -1190,3 +1190,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/main382_basal_lock_profiles.patch b/basal_lock/main382_basal_lock_profiles.patch index c004300..724c3f8 100644 --- a/basal_lock/main382_basal_lock_profiles.patch +++ b/basal_lock/main382_basal_lock_profiles.patch @@ -1190,3 +1190,6 @@ index 00000000..41476c35 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/basal_lock/nextdev_basal_lock.patch b/basal_lock/nextdev_basal_lock.patch index e38e540..d87cb44 100644 --- a/basal_lock/nextdev_basal_lock.patch +++ b/basal_lock/nextdev_basal_lock.patch @@ -921,3 +921,6 @@ index 00000000..350395d5 + .padding(.trailing, -16) + } +} +diff --git a/basal_lock.loopcustomization b/basal_lock.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/cgm_sensor_notes/archive/cgm_sensor_notes_nomarker.patch b/cgm_sensor_notes/archive/cgm_sensor_notes_nomarker.patch new file mode 100644 index 0000000..45a8da7 --- /dev/null +++ b/cgm_sensor_notes/archive/cgm_sensor_notes_nomarker.patch @@ -0,0 +1,234 @@ +# ============================================================================ +# cgm_sensor_notes +# +# Reports Dexcom sensor states without reliable glucose to Nightscout as Note +# treatments, for G7 and G5/G6: "CGM: sensorFailed", "CGM: questionMarks", +# "CGM: warmup", "CGM: .unknown(23)" and so on. +# +# The kits decide and name everything. A reading is reported when the kit's +# own hasReliableGlucose is false, and the note text is the kit's own name for +# the state. No state table, titles or localizations live in the patch, so +# nothing can drift from the kits, and every state a kit knows or learns is +# covered. Lifecycle states such as warmup, stopped and session ended are +# reported too, a few per sensor session. +# +# A state is reported once and stays quiet while it persists. A reading with +# reliable glucose, or a new sensor session, clears the log, so a state that +# returns after recovery is reported again. +# +# ISOLATION: the notes ride the CGM event pipeline Loop already has +# (CGMManagerDelegate -> CgmEventStore -> RemoteDataServicesManager -> +# NightscoutService), which owns persistence and upload retry. The Loop app +# itself is untouched, and so is every .pbxproj: the patch adds no files and +# edits four Swift files whose hook points are identical on main, dev and +# next-dev, so one patch serves all three branches. +# +# A note is handed to the event store once: if it fails to store, or Nightscout +# stays unreachable until the local cache purges it, that state is not +# reported again until the sensor recovers. Same durability as Loop's own +# sensor start events. +# +# Nothing here changes dosing, glucose handling or what the app displays. +# ============================================================================ +Submodule CGMBLEKit contains modified content +diff --git a/CGMBLEKit/CGMBLEKit/TransmitterManager.swift b/CGMBLEKit/CGMBLEKit/TransmitterManager.swift +index 682d9dd..624e0eb 100644 +--- a/CGMBLEKit/CGMBLEKit/TransmitterManager.swift ++++ b/CGMBLEKit/CGMBLEKit/TransmitterManager.swift +@@ -349,6 +349,15 @@ public class TransmitterManager: TransmitterDelegate { + } + } + ++ if let event = CgmSensorStateReporter.event(for: glucose.state.sensorObservation, ++ namespace: "DexTransmitter", ++ sensorSessionStart: glucose.sessionStartDate, ++ deviceIdentifier: transmitter.ID, ++ date: glucose.readDate) ++ { ++ events.append(event) ++ } ++ + // Filter out future-dated events + // Stopgap measure for the issue described in https://github.com/LoopKit/Loop/issues/2087 + events = events.filter { event in +@@ -547,6 +556,11 @@ extension CalibrationError: LocalizedError { + } + + extension CalibrationState { ++ /// The kit's own name for the state is what gets reported. ++ var sensorObservation: CgmSensorObservation { ++ hasReliableGlucose ? .reliable : .unreliable(state: description) ++ } ++ + public var localizedDescription: String { + switch self { + case .known(let state): +Submodule G7SensorKit contains modified content +diff --git a/G7SensorKit/G7SensorKit/G7CGMManager/G7CGMManager.swift b/G7SensorKit/G7SensorKit/G7CGMManager/G7CGMManager.swift +index 3fdc27b..c30b20a 100644 +--- a/G7SensorKit/G7SensorKit/G7CGMManager/G7CGMManager.swift ++++ b/G7SensorKit/G7SensorKit/G7CGMManager/G7CGMManager.swift +@@ -385,6 +385,17 @@ extension G7CGMManager: G7SensorDelegate { + state.latestReadingTimestamp = latestReadingTimestamp + } + ++ if let event = CgmSensorStateReporter.event(for: message.algorithmState.sensorObservation, ++ namespace: "G7CGMManager", ++ sensorSessionStart: activationDate, ++ deviceIdentifier: state.sensorID ?? "Dexcom G7", ++ date: latestReadingTimestamp) ++ { ++ delegate.notify { delegate in ++ delegate?.cgmManager(self, hasNew: [event]) ++ } ++ } ++ + guard let glucose = message.glucose else { + updateDelegate(with: .noData) + return +@@ -514,3 +525,12 @@ extension G7GlucoseMessage: GlucoseDisplayable { + } + } + } ++ ++// MARK: - Sensor state reporting ++ ++extension AlgorithmState { ++ /// The kit's own name for the state is what gets reported. ++ var sensorObservation: CgmSensorObservation { ++ hasReliableGlucose ? .reliable : .unreliable(state: description) ++ } ++} +Submodule LoopKit contains modified content +diff --git a/LoopKit/LoopKit/GlucoseKit/PersistedCgmEvent.swift b/LoopKit/LoopKit/GlucoseKit/PersistedCgmEvent.swift +index 953f415..7d8a400 100644 +--- a/LoopKit/LoopKit/GlucoseKit/PersistedCgmEvent.swift ++++ b/LoopKit/LoopKit/GlucoseKit/PersistedCgmEvent.swift +@@ -13,6 +13,7 @@ public enum CgmEventType: String { + case sensorEnd + case transmitterStart + case transmitterEnd ++ case sensorIssue + } + + public struct PersistedCgmEvent { +@@ -55,3 +56,102 @@ extension CgmEvent { + return PersistedCgmEvent(managedObject: self) + } + } ++ ++// MARK: - Sensor state reporting ++ ++/// What a single reading says about the sensor. ++public enum CgmSensorObservation: Equatable { ++ /// The reading carries glucose the kit itself considers reliable. ++ case reliable ++ /// The reading carries no reliable glucose; `state` is the kit's own name ++ /// for the sensor state behind that. ++ case unreliable(state: String) ++} ++ ++/// Decides which sensor states become `CgmEventType.sensorIssue` events. ++/// ++/// A state is reported when a reading carries no reliable glucose and the ++/// state differs from the last one reported, so a persisting state is reported ++/// once. A reliable reading or a new sensor session clears the log, so a state ++/// that returns after recovery is reported again. The log outlives the manager ++/// instance, so a relaunch during a persisting state stays quiet. ++public enum CgmSensorStateReporter { ++ private struct Log: Codable, Equatable { ++ var sensorSessionStart: Date? ++ var notedState: String? ++ } ++ ++ private static let lock = NSLock() ++ ++ /// The event to hand to the CGM manager delegate, if this reading's state ++ /// is due for a note. ++ /// ++ /// - Parameters: ++ /// - observation: What `date`'s reading says about the sensor. ++ /// - namespace: Distinguishes one CGM manager's log from another's. ++ /// - sensorSessionStart: Start of the session the reading belongs to. ++ /// A new session clears the log. Both Dexcom kits re-derive this from ++ /// the phone's clock on every reading, so it carries transport jitter ++ /// and is compared with a tolerance far below the gap between two real ++ /// sessions. ++ /// - deviceIdentifier: Sensor or transmitter identifier. ++ /// - date: Timestamp of the reading. ++ public static func event(for observation: CgmSensorObservation, ++ namespace: String, ++ sensorSessionStart: Date?, ++ deviceIdentifier: String, ++ date: Date) -> PersistedCgmEvent? ++ { ++ lock.lock() ++ defer { lock.unlock() } ++ ++ let key = "com.loopkit.LoopKit.CgmSensorStateReporter.\(namespace)" ++ var log = (UserDefaults.standard.data(forKey: key).flatMap { ++ try? JSONDecoder().decode(Log.self, from: $0) ++ }) ?? Log() ++ ++ let previous = log ++ ++ if let sensorSessionStart = sensorSessionStart, isNewSession(sensorSessionStart, from: log.sensorSessionStart) { ++ // The first date seen for a session is kept, so later readings ++ // compare against a fixed point and the jitter cannot accumulate. ++ log.sensorSessionStart = sensorSessionStart ++ log.notedState = nil ++ } ++ ++ var event: PersistedCgmEvent? ++ ++ switch observation { ++ case .reliable: ++ log.notedState = nil ++ case .unreliable(let state): ++ if state != log.notedState { ++ log.notedState = state ++ event = PersistedCgmEvent(date: date, ++ type: .sensorIssue, ++ deviceIdentifier: deviceIdentifier, ++ failureMessage: "CGM: " + state) ++ } ++ } ++ ++ if log != previous, let data = try? JSONEncoder().encode(log) { ++ UserDefaults.standard.set(data, forKey: key) ++ } ++ ++ return event ++ } ++ ++ /// Whether `sensorSessionStart` belongs to a session other than the one ++ /// already being tracked. ++ /// ++ /// The tolerance absorbs the transport jitter both kits carry: each derived ++ /// start is the true start plus the delay before the phone processed the ++ /// message, so repeated readings of one session land within seconds of each ++ /// other, while two real sessions are separated by at least a warmup. ++ private static func isNewSession(_ sensorSessionStart: Date, from tracked: Date?) -> Bool { ++ guard let tracked = tracked else { ++ return true ++ } ++ return abs(sensorSessionStart.timeIntervalSince(tracked)) > .minutes(15) ++ } ++} +Submodule NightscoutService contains modified content +diff --git a/NightscoutService/NightscoutServiceKit/Extensions/PersistedCgmEvent.swift b/NightscoutService/NightscoutServiceKit/Extensions/PersistedCgmEvent.swift +index 6c5915f..c8d332d 100644 +--- a/NightscoutService/NightscoutServiceKit/Extensions/PersistedCgmEvent.swift ++++ b/NightscoutService/NightscoutServiceKit/Extensions/PersistedCgmEvent.swift +@@ -16,6 +16,11 @@ extension PersistedCgmEvent { + case .sensorStart: + let note = "SensorID: \(deviceIdentifier)" + return NightscoutTreatment(timestamp: date, enteredBy: source, notes: note, eventType: .sensorStart) ++ case .sensorIssue: ++ guard let failureMessage = failureMessage else { ++ return nil ++ } ++ return NightscoutTreatment(timestamp: date, enteredBy: source, notes: failureMessage, eventType: .note) + // NS does not have a transmitter start type event yet + // case .transmitterStart: + // let note = "TransmitterID: \(deviceIdentifier)" diff --git a/cgm_sensor_notes/cgm_sensor_notes.patch b/cgm_sensor_notes/cgm_sensor_notes.patch index 45a8da7..1e85aec 100644 --- a/cgm_sensor_notes/cgm_sensor_notes.patch +++ b/cgm_sensor_notes/cgm_sensor_notes.patch @@ -232,3 +232,6 @@ index 6c5915f..c8d332d 100644 // NS does not have a transmitter start type event yet // case .transmitterStart: // let note = "TransmitterID: \(deviceIdentifier)" +diff --git a/cgm_sensor_notes.loopcustomization b/cgm_sensor_notes.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/future_carbs_4h/archive/future_carbs_4h_nomarker.patch b/future_carbs_4h/archive/future_carbs_4h_nomarker.patch new file mode 100644 index 0000000..2cbf587 --- /dev/null +++ b/future_carbs_4h/archive/future_carbs_4h_nomarker.patch @@ -0,0 +1,14 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop/Models/LoopConstants.swift b/Loop/Loop/Models/LoopConstants.swift +index a62fc138..795c5a6e 100644 +--- a/Loop/Loop/Models/LoopConstants.swift ++++ b/Loop/Loop/Models/LoopConstants.swift +@@ -25,7 +25,7 @@ enum LoopConstants { + static let maxCarbAbsorptionTime = TimeInterval(hours: 8) + + static let maxCarbEntryPastTime = TimeInterval(hours: (-12)) +- static let maxCarbEntryFutureTime = TimeInterval(hours: 1) ++ static let maxCarbEntryFutureTime = TimeInterval(hours: 4) + + static let maxOverrideDurationTime = TimeInterval(hours: 24) + diff --git a/future_carbs_4h/future_carbs_4h.patch b/future_carbs_4h/future_carbs_4h.patch index 2cbf587..4fd4f37 100644 --- a/future_carbs_4h/future_carbs_4h.patch +++ b/future_carbs_4h/future_carbs_4h.patch @@ -12,3 +12,6 @@ index a62fc138..795c5a6e 100644 static let maxOverrideDurationTime = TimeInterval(hours: 24) +diff --git a/future_carbs_4h.loopcustomization b/future_carbs_4h.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/high_carb_limit/archive/high_carb_limit_nomarker.patch b/high_carb_limit/archive/high_carb_limit_nomarker.patch new file mode 100644 index 0000000..09b3741 --- /dev/null +++ b/high_carb_limit/archive/high_carb_limit_nomarker.patch @@ -0,0 +1,17 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop/Models/LoopConstants.swift b/Loop/Loop/Models/LoopConstants.swift +index a62fc138..c4b9b94e 100644 +--- a/Loop/Loop/Models/LoopConstants.swift ++++ b/Loop/Loop/Models/LoopConstants.swift +@@ -15,9 +15,9 @@ enum LoopConstants { + + // Input field bounds + +- static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 250) // cannot exceed this value ++ static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 300) // cannot exceed this value + +- static let warningCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 99) // user is warned above this value ++ static let warningCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 201) // user is warned above this value + + static let validManualGlucoseEntryRange = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 10)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600) + diff --git a/high_carb_limit/archive/nextdev_high_carb_limit_nomarker.patch b/high_carb_limit/archive/nextdev_high_carb_limit_nomarker.patch new file mode 100644 index 0000000..8431aa1 --- /dev/null +++ b/high_carb_limit/archive/nextdev_high_carb_limit_nomarker.patch @@ -0,0 +1,17 @@ +Submodule Loop contains modified content +diff --git a/Loop/Loop/Models/LoopConstants.swift b/Loop/Loop/Models/LoopConstants.swift +index 5a78c4e8..585cdead 100644 +--- a/Loop/Loop/Models/LoopConstants.swift ++++ b/Loop/Loop/Models/LoopConstants.swift +@@ -15,9 +15,9 @@ enum LoopConstants { + + // Input field bounds + +- static let maxCarbEntryQuantity = LoopQuantity(unit: .gram, doubleValue: 250) // cannot exceed this value ++ static let maxCarbEntryQuantity = LoopQuantity(unit: .gram, doubleValue: 300) // cannot exceed this value + +- static let warningCarbEntryQuantity = LoopQuantity(unit: .gram, doubleValue: 99) // user is warned above this value ++ static let warningCarbEntryQuantity = LoopQuantity(unit: .gram, doubleValue: 201) // user is warned above this value + + static let validManualGlucoseEntryRange = LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 10)...LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 600) + diff --git a/high_carb_limit/high_carb_limit.patch b/high_carb_limit/high_carb_limit.patch index 09b3741..35be149 100644 --- a/high_carb_limit/high_carb_limit.patch +++ b/high_carb_limit/high_carb_limit.patch @@ -15,3 +15,6 @@ index a62fc138..c4b9b94e 100644 static let validManualGlucoseEntryRange = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 10)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600) +diff --git a/high_carb_limit.loopcustomization b/high_carb_limit.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/high_carb_limit/nextdev_high_carb_limit.patch b/high_carb_limit/nextdev_high_carb_limit.patch index 8431aa1..84074d2 100644 --- a/high_carb_limit/nextdev_high_carb_limit.patch +++ b/high_carb_limit/nextdev_high_carb_limit.patch @@ -15,3 +15,6 @@ index 5a78c4e8..585cdead 100644 static let validManualGlucoseEntryRange = LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 10)...LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 600) +diff --git a/high_carb_limit.loopcustomization b/high_carb_limit.loopcustomization +new file mode 100644 +index 0000000..e69de29 diff --git a/lnl_icon/archive/lnl_icon_nomarker.patch b/lnl_icon/archive/lnl_icon_nomarker.patch new file mode 100644 index 0000000..a097237 --- /dev/null +++ b/lnl_icon/archive/lnl_icon_nomarker.patch @@ -0,0 +1,19781 @@ +From a543a219b8ae0e5d3eb71cbe06f41e3f879db012 Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:32:40 -0500 +Subject: [PATCH 01/19] Delete Icon.png + +--- + .../AppIcon.appiconset/Icon.png | Bin 302924 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png +deleted file mode 100644 +index 9a01fc7a8aef33245c3bc17b53c8a35698d294ff..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 302924 +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 +zp>z4oqq~PcFXvrkoIB;iH7pl@pVJl5 +zTu&owf{?OOQ)GztZN1E$e-30Rc&Z?(GfG}E6p!W_3*9u4*0oIX`3%iPX*0<3YIwt? +zvQo_sbp=a831=9u)0P5DlWS~M4S}pQR;rHF^rl}Yi7|K-TR;J$V7m=VC?muaki|Ym +zgE{?C$`1SweReOm5~b?#T+Mo(N^=9-C9qviLMDp*Fg$Zs62CB0O=V?TkD_$K5aqHe +zX8QC1F~mF?a$aQ)0q5ML%c6yO+Ky}$Z@AA#zMCSI@8%aWtbRgrOIZ?=qIVV2f*gm< +zC`a=sWt^2R^4pKpjMS@0y7u(9rTX+IKJrAUql)RPyzC*R3aYSOjRu~ukrsq71GDRV +zv@pat8O*dEb!*X6-E{57pP&WHSKXa%Ob)vAO7-m>h`PYNMa(0W<)qHl&J9E7c_W?( +zoIL9wSN3fh`F`8&A^+S%Q)m5T-*YT=eeO}^VwcKrOkm&62HAJ^2`Mch(>aW4LTGgY +zp>-2-aBr+SKWrnZc^TnBl&^DhFnCNDFAn32V62l4l%|(Mo +zJ?Y81)<~s)W?A==@Y_o{b$d@n75XwLqlpvGw*CI1h0{6cfQ*sr+WgI;u~$8wo)yPc +z-t+9r3*}AUJT`gl_ZJN}K429fkM@!~S1M<|&OY3X^X_}TG^xWKYupt~-0}O1vMHm& +zPPe*$@dPe%C}l;#|Kg$%ylMG4!dCF-qh?wx0r;M{qrBb +z7mNZh<$}WmtHlwrzN6MiHHNDd#g--=a=iC!1(hwI9>HBGB}ays30iLqPgHw7s<{ds +zrTRy$_EM{{b6y!TpdI?Aw8=Z4SSFj7qYiet4keVb6OJ74GAledr&NY{*^ZgHw`b-e +zY%$Q~j5dzqMe)AGJ_@m(*``hf8OWwN=F~YZr##>(U=WoOJ1k83JX$mtrO+Q +zS?tFGCY+vMaY}8dF|EAKMSRD3fQCP8e4c!Eih-}_>~}7bb$arXLm`lsZp$c>*c}lM +z)V^=Ru1FTDB4~wBicR~|I~8HZ;g=tiPNcHj*gD0&5ZeU-8Y#OV;HwQB-0l$Qf}GD~ +z5+;|ZNVZZmgxrR=d&WMOGV|VFn_z!sX2C|$y&ZMt +z-9tJve%QLV!!HS<9ec_z4I${vo&%T`kgAeuto0B4lKA|`|5*(PHG%-URdp}5;`*FE +z_|@3s^zPdV3@>%?%9O7=c~ihT;7$)kS4I1oxl;foJBP;YhbKxZU +zIG5D9AEfu?m#chiWtXi9>FTmRI5mKKX=eFXNj-g-{skai#7gSo8LIZ{GDe%L_QUC* +zrUSrkq7E9Tfh0NvQXdL4$UG#>?^ESC3G+KadP?Y*gtfqf_%9laW9Nd!?<`w1Sh~#k +zAnA}!Jbj{VfzjQg{Cs_n2eci!97}CaE^*pO8flkRm$|bnH&HT`enCtvKPBPTRl>LB +zT?J(~HhF|;@6TsY`Wh~!jbx)m#jCfTTMeI#{g)>r#QX}z&UU3|MOe94itmSG5j}o`?d+4$q(#lxHDSJ0#WxAKL)q`HfFv8R1?{xZkO9Y;0 +zlm(|Bf9(g%99jJM@;ylHuAe~#zpHK<@8sS@q&X#B7aF2DUjopJSnVz$EskkjEDT9h +z_^O6>B1Kh*+$4IFpD>TyQC}O$(2fg6`w;4mf1=Y*plNg8fAx)n@t5YtaGpGW_yO0= +zGUVXt6|LBJ$lxu#g4S04NqiD5{DW6?0IOa90>eFT#Bgfd%)wpIgu{!N>@;yryFL)D +z*at%sa;<3CbcbsaXjnY)-a2VI=MoQbS(QTTY5y+4(e|wB)?R@{gQ=BqV>Tf=z-gPD +z!pKMiLHPK)pJB;FqnKyg!bz`8$@6)hj2YACC +zb~~Ep?|MEx)ORq}7^CcC4-?X->uPg2)l6#;D%XQ`Znm2B4_J*dWxW1}O{7MI^5)ge +zyfWO~(dPQzvL3d%~uleG@WXXZZkz?yCyDRS?luv +zrd5wtXk|%|_kQ%>r#ZbTNou!i?X|LMhY>|Q@3GSDiO3emZCCk5oT{pZP3fEj{oUI- +zxgws%xV*No+*(J@<;>h!aC`P(M#ql9LleT@dP=bvd1LmVH1X=fBpkg$GU~~lJaHI4 +zXmRt442*?sbnIA~Fhx-zX{X) +zyO-wcnr5E-fHXfX$mpQ+QQL0ljcWjuIc!nJkJN6Qg%gHN@Tb8DFh#&DESlZkGvs^^ +z`hpe>pKeouUY;D`4`QZk24>IuSVX#qOgI9N2cKHOqDc>9I;INPHfjr7(4e*iFrieh +z^Rq?yY4iSi-kiIG2K&1npA4~Xk>FqT?65_MU4c9x4wf&2u~01%A^yg4L-kD}yiAGx +z(G`%|3L8woeuC5%{fO%B@RWtGbhg9T-gR4&^?TInuS_OE;sRzC@m-O_=>7e4d+8mf +zf2EJ)S0oBs+MWkcp;&R%7F~0}uh0@MZCSR}pQ0p-T6rYRFIW-1+&dA#P55}>@;)d0 +z@64ETWwg6_sPh*P%36Kre4A}KFAa&?i*5K7RpRf=^##CGO-0g$@pA#cqFZ9cduz-% +zgGgI;k*b#c0$15$;#&aX^-nR_i_)1_kFR(n$p0|T)*o7UofPo8CPP!Bm>7^sEQvOw +z!w!A@Syrj>OFZq^=e?yvCGsJzu>||~%Y_*b*WPIz&5YkfI>~XSMvIp4n=XrYu?U0N +zfVGNrcgsvlNUI!S1Ui62z<6vY548dtVjD+tpGcBjS%VmHs#&KzBa90}DbK6~=0Yf! +zyhu8DnUPQV7W=HS%mYR6GM0IKLuv9uXcb6_@@woR0&g`O7ckx9pqbo}M4QBQRxvl@~H~8M9!P9Qe`IBG$;fQf-!$>_j +z7dsSEvjw%MRCAG`9Z4Ej#4{=0YY^&j7R*;`&`fE)cw +zLy`^yGnFkFvwdjlY;D3Pz4al+xUHxmfn`{Y6@L=vJl)u`jf=|qIEgpji8-L~MQA!v +zb6#JR()t*^Mo8&f_0IV(D=&%m&U4N@^aX)yscspfgy)T|Vl8El`(dJg47K25C?WP$afLGI=qKikGSJF!O1WSJGC7@kkn!LeVaze-} +zO+q*MXo*=^0$4f79T8ISMsA$yBWlMp4aK%DH7+?C@VM!U`d!@C`6zP*)A~BUM;b)y +z1j~uS7ejR_b?UpDB<-z24CR`F1)REl(HNwxL6YxS@0>h8Nko1j&c%XNeO*0@-F +z2c5Q{f{LmrC(=wd%nki#DxTJ_i!KfL;+Zkch+{Eu$_qxJ>Tb1AP_6C40EmkNw+0t7 +zy4LE9wYMe4F@c^A7*z7SyG7q#MEsT+{3{!47M79&qOkM!%mT;z`=NZ~v*MiqTp{*# +z`&R?lg}>jCSdx>}WsBFPel`K18ctth{K3)7RrFkBd_=IY(2CO?$&CTPk8~eK+|vbs +zs{f}hiUaJ9cK1m)y-(S@GV4a4GzQx|>Q;pvT@08+z$$_f5z}&I1V$gVVgO(F&0Q@9iL*WzR^M%O$P=#R{ +zJg8fUs9XSC{mNI?F_XGbDcqrFi8`NAKx|4MfTK2%X{|RH+gb*Un*pX3KB0aCE2F~} +zuZAD$0d$2ofXsg7LJ3Gv7$P^<3C5FbrM89dZ&-X108IVopY1Y4hA36BaYgL2e7vTT +zr3eB1+2r4+yjKD=M=ReH4AV9z4BX(Va|^${ln+zaFgJb}rmkU{y9%bRVQ#z}P}eq? +z=GHOU4`#XXUYo83rnx&|9v$Y!Z^Jw~Omp`E9-R(z<2wP5PH%h7%OB>^XSs2hM~6B0 +z{Vym?%`o~P+#BczbtO3_Z@XB*B=V-}62 +zf)?C-b<;@u^vgGoRQB5c0ii7R3~NXQDxL@*(w}l*Y0e#3nv+|x&UkHBTLa$F8b!8n +ztgaz--x;FjJt0{KestST>U0n?7c^5B3W3^(58gt2uLrA}kUsX{4V7#kQ#&32=2p3B +zgh2N8iH{x%V!@&w@cK)yV^Dzad7QIa(%BxO?8Ae}8mn!S&%`C%sca&kVC@cg!TFIa +zO1N+o9$rCix~NL}n}NtFu$lG|7% +zFg0~R8}!@p4m1E_^S1*DkrRMg3EzW$JolBJ@t~~oAn|(5y#g~~)BOjVLW}^j +zqAv*6B^5$X10Di0OuoK>m(KM?#O21d=k|R4mibZ46SoEOD{h(})7!vX^8Z6kovg&- +zX_tJuc>Ym)=dQY`Qf)a&w;3ht^8q}x%5eRcVvytiUqxOk`t-_GH%C{j#JzKu(iDA; +z5~lSsthP3+N$x9*o$mAT4YT^}zO{u{YE)ThYbGr7;dP*lQ6>npb9WOv4l#9qhW +z3nO%%jXh@1PSchCPyN5|Ik;)3J?t(m-{qMQBYp4T_JRJG9I&3ouwpoh(&WyaMqLX> +zTcW+rQ-}`zGaT@~hoHawzWt6@chvMwcJiwk{?8=ViBA4Tu}I4Wco|(;h^w8=9Ihx= +zX6S1IAW@L`$ZV!RE>;XsO1!O{P%)^3Gu3ssD^xHJ5-X2uoCQR1gv0UDdOp`!(^dD) +zQ#d1*_21zU=@}Y)5y8F&&Tu-b)2J$&PA1(XU!DwSum#Fzrg8h@guAT+f;nB-R1VjSy$jp +zmsa9lQ!HgCWK2{O=Ngg&4W16qe(<0=wpgm^0k%);-CB%5M$br3IouA!K*L7Wrx|6j +z`APp80a`3S=W+P(n2`g3B#*{+Uz=Eq;4Lfr9Ah)qTL<{S(x&Z7~mK0Y` +zB;~SE;5+%VaQ%EKEDY~S>LAO40Qy(OOsSR(#xqT@vT9c7{$Dl-cj)~eUe87xYrnbg +z_}v%Z`h;=4C_{Ie4thr`ZX($COsgCAUnrzRD-I9FK7MlNYTdpP0nNonnLCy5e{_0Z +zNzEzzr-{mZ*`;DPb4o)Q_C8M3+Ll`^c?-M)eqFElu@su?T1pQKEWd +z94`m()VZ_0U}!_}a50>J)&rp&pm<9k2*|py*e(V2+nmkNCZlrkqks-Cp6vxV +z(ZEG+_w2v`FI)qzW8FU6OB<#EE=tDWfpH6j@cjsBo1qVmuezCf=)ijMPIb?DQ{djd +z_3HDz=hkT!%fTBp1dAra$Tv62_;n6L4PRpFqQY)=T^SGBI`Vb)>V$rIS7=4~Q0~m0 +zi9$ErQ2=xj!f9P?xl6a)-h^4|;~L%RprzCe{-K9O#OB#V!PC|dB15mu?_JkG0 +zg#mA>L9mAU9FEQeGS@Ig@n;pqd6uRlz|$x9c3EQtLk%voM!bD1ZBHOr2g71TgCzpP +zcjN=vxOdl}ec|P{*h@LplSuiLd#kPb&1}}&@PhjIQW{X~^8S?2KN54c4fEQ6)$n|# +zlAu>sEc)b0u*|N9m@Z}jkXazjCz`xfGx6N^U?64gCZ@Ahig<~-MpndY52gaTHjD2M +z4ok)Wd`+~JgTvF|(%$-pVSHyWHJ4}tw5%%~2M&XCwcaX2tR`GKTEzPg?iyQ0pQsjJ +zLPM%2S1qdsXDaTCh+aTJu?Kt^{gQie<-n`K827B7jzgN2KpNdr4!q*H=9NHEVaAsy +z(Sf2_SR2Wy<`K~&gcKZ9t{vwDAdJgu6xD!M&!l)KPw;^VLo0Jf5AWoPOcLw2!sc>o +zji`zb)XquIu8U)UV+7D@R6`=NPF%pSoR8JU0PA-%%Be;tjS +ztShil8U+9;6>QQ1V}Jr%ppihtodFxNU;+7CyGU9@(*d&ks}sxqP2kdv?@BVMap@TX +zQ{>kGE9{ygxdViR-oWmcPysCRbeS7|FGv~s9Z%~4rbiEM9KHZc>D0`F8G0CUNg_2| +z1Swh)aaaYUYSxL@7y<8rRFH9fVgNvi{Gvhi7J#NeBuq8e3_~b>A(B>*B2*=}i9n}j +zJNAvh`7&??WhxBw-~U6d9pH>t0lD0)OT#a0G79z8;?O7Ki-6O^Ke@*3KS*%*u+X~j +zZpupQV*Wdi^UubV)!z4ZEhmp~rmICho!^UF0l^z(-iI`nQo#G3>1({q(Y2GOqhRTg +zBXDTMPULE58&@G(Mv{2_KFT)iD6TvSeZEadsm6-3`47Y~LfYHeEaO3bnFoDVr?h?z +zTGLC5#@NrjBVtc5^x~ +zLZc4LVur`BR$K4#szG^6SNPV$!RTK7t? +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 +zMTe^L{SUclCX+>Lu~a(YlrNe-M7P2(sA-;~ +zYj!z@b6v^-JZFv)|JUOv|5;kgdr$es?Vq!>16Lo!;B9MJjrEj$qSc3f&RQOC&8e0E +zAnY!SI`4<~wtmrPryN+~qC5l0*g6s(r69P;;?eMKU)33E^+ls^2TNBHQE{{`*%hww +z$-O{GHK{?+(;+@h&tXG+is77!Haazt%MXrU6^l=i*EDI~N&Z$S{XrcQ!Yy7ieBk4R +zmHDP#=NH|y$`}KoIemjnZX@t(3)tpPS7dps=SLCzqc*hK66%PCZn998lMHLe4CKUs +zR(V2s{y(J +z^mI{L8_k5Xq%=ZKQuBkrw_+{J7{K@@V +zow9JZ+sD-zjdtk8tmPt2_crPuao@ytj&~~Y^^EXj+)4K=Uuc5aL@Q)+o>sS_+vL!d +zZjZS`7ml;cUpBlu)!c~L%HMJ$bq61j8@Lw7)y4qu)3a*9?V1FDvsm-^w}DQv9*mv0 +z5yY6tP!T~bwGaZk*|LP!9i&%2U~g-~*0XTRI&SSTv{>YV}J0JZQ-iYInVo +z#`CwP@X%Hr*3A}@Y+|#f_<__WtYFOE6@T~C_sH_RuIJyMcUA_DWL_X-WGr#@#b3kV +z-*2Uel&$@A5MY6OD=w9X^{LhC%Xm_Yuvkbj11^LU&k9OaY~rKa?CGWuvv)XZ7M +zUTE^EornEo16Xn<=e2aPtG0rlI1mz3?ytlC5bRW|go?#jlqFYX=^f-#%sy8kNHJ9u +z#S0j?H1N#M%(@}YXGtfEBsB4pq2`B8>M6Ein==(LwgYpAu+K3N}Bv +zp*`74&@M8p`LNTacUoYH)gPtJuSmC{bv%ZPZE$7_JQ0f-(D|W1df2D#fv9IuKJ5oA0g!|m+v!^C9Y{L!B=m5hxmcck&Fc)pU=;OjnH(f5C +zpD&h7FzAUkwF$#XA1?TGHfm-C@7 +zU_e4*t(k^_hFJ5{dLE#2_@R(G!%Uy)M6+yA)o`d8OE*NB5Y{R4Adc0|S|P-fl9Ru$ +z-l@7}Tas~L;MtLMtA->&0qBTu&1(^HIxQ=?tKz%e!-0MG3Pvwro6E)hZ1NwjD_8DQ4Do#>XDxMWE<8COARR<;%sa^^&t$8EP8q; +zCK^Brwu2|*-q```qHmO!=D_sRpPPjBZvv5jK1``4-l}-?aP{VEaQrTkHqC1`%oeWG +zs|Xeu_lm2>VPP`Iza|xq%oT+dS0ZKU=As%$V5$W1Y6qdlF^Er9J3Brl25gXP8cw9A +zYDk(Mzf)jZb<=AQm*o|MS?6A=y_fppX}vhp{s*SQ4K3qy+ZY1{tP?3Vyz~!239+?t +zx;r*Bbf3)*n8!;s6pumRBT49vKBGBGm?1U1o*Afmd_DI@$_xz|JIdE3z@f!JFOv@A +zR8*-&T!eDN;?O@zouOSF&~&>G{|e*AjO5#$sN@xhhp|TBV~_{r%s-2mQP#0V`M@24 +zdY6wkr{+S3X`ZA3HIYKt!8nZkT!L>d9hV`PWzPqzNdHoT(-w8}q>ydMplUC(R +z!pvE_vE2HN +zqlXGzc_%h-@xW^wcvm13%w#1!Fnch&GJ~5fc4)27>!#mMgsmWoy>x^5`J) +zhE>WDM+oo_W{UMnrMWA23;IsROolGX&R{>dd=H2_8u+;<4Mei6x1B*~^wi^nw)ZL~ +zYf6(q)Q*1X``4I^wM;pihy)5Y4b&J#Pc>Nawy{Ay&n6Jie^QkbCHXDghqrHC3(1<* +zA)B}-HuV)8_@IUYB6}WtdT*ilM0-RpjOmPkx2A8PfW&N(w^OoErS)Twak1FW>aPI;Pqpc($7dD)UVntJ^I7Jc@ENG4sTx{ +zU$hU1U4dt#umL#4@rXd)-3#2<+R0+hujO&9va$#8G9U&kaD)Ws`Na1f1a5HqxXP$s +z%F#N|hXNOW31FKX;IF1C%B?6<`p{Sqnm&wi;Oj4-Q50haG%=-9v#$p9HVkayHV@l> +zvtwV|Lm0-$nXF9Hj%N)pjCJnMd?z!o4Z-vszy&PGzMdXX1Q})?%-VQZ^Nf$Ht&I&m +zy25vU?#8K=gVA89dP68R3PZ_Zkw7@FdfR1>Ka+6POcU^+vH(#Q*n6v{xSAdg>|4z* +zBN`;>3gAA*U)gL0yH+q?oohySt!hnUm|tzJT4#hKe12VO4y9;Kt9TCtxZ~Q62!`<> +zQXNSf0)!#pzJb|J%1z?KDldJ(>=D~tx)Pu@w(it!h;_BV#@R}*hIE1SMLVpY1ZO0w +zEU(H+Ofyg3v$FYfRse@I%W3@q+s?uLE#0wq3eu=BfUyJCraK{qEt05OQ-FNMlsFm8YY4XUp~I)(WzD +z9LXEKrj^5a=;YHwYsU5`ji4>5Yie+3ab_flSCQ4cA5|fSY?MzNIC}rXGwy +z7z|emUYuGqvd!B~aN8voA#AD+NZ5qCWNNAt;D_4e3Vllzx}^sY0|3s5vr0%hL7u4t +zOm>fd`vx5?<4f!+<~ZDa;{Regl7|~E5j+8+uD?BZo*^BBxOmH>K_XALK){+YJ7;ME +zQf>1uYwHT8F!(umakz&4!iWjM;}DXYL*LBIc<8Fh(+uN)^Gm}PX@Xya4#QDBt(lif +z2;mROA6*J~O=hNFP@-*1Pe=_jXq3e?v;Xd6>1#(AcyD2R10LMk6Rq;!F+?{*74+H{ +zO6R%d_LV&UV;*-$^&aZwsjx>VWCgDbC_|L%~?H +zwUI@Yw|9G~pGGVR2xw&oyeY>=h1U}U-j*8`CIUBBm#Nvh1znt#fMFHL&T3xF=#;4m +z6&>av?!7w`-{ve9YvtsJ|zUYml+(KSEYqj*-X9d#g=Rl;RuD3`m +z<)&FJb{=GLsI?M}nsHQp0AKmVHZ-*O?zva4My*lrS(o+kiSLP)4w!e0GS}U9Gbd7D +zzd1qrvRP|4C80$;Deos2=BlgBb>B#0RSi_bNj~J$9cqD|PlZY?nnq_lUwve}-wW8e +zMdmX>#N3+q51Seij|CXmHD4Sy*_JGUUEj}xh5l;T_|~Ud!L(r1MAwZaIq)qdKA-Vd +zO?hTwjc0sZhp2!tUg2l(M#JXvZ&$}E +z!szqv`p0$R58QZQ3>*|#CLKeO;Yn2z<aLU8>bERPW%)@Imaewr03E4p=oE% +z`oqJ(&JsA^{;}k-(LP>lKQ{$QnV^sK=D)f2_Oam6%f0PnVD3FFcrs;JqSD}BH(Isw +zcidZyeCjz*-9B2Htf*gR*7!x$j#&7rdu9j7QpG15I)zr#U{$x&;fR1_a~9IcUFUEg +z+a7CJ^_ScPaEvW22WP9OfP$&>o~Kx@x*{2~VH}<>51#5T;2`LaAr;S5->uR@1Ai!S +z8mp-}7=Xr|>o7Xs>ZUa>-RK}WI#5llouK+S)Zq27>(WeW0b80o4U}P;AV|du2Wp_R3B6AaU6cG?;g{V+ox{qdGEu4 +zvJU=QqWgMA1<}fvUj`H6kSTT!-)NKuHlck;lMjcnPXY}{V#Tp{#Rd3JugGI&wflu> +zXG&p7)g|&|od_0PA(P^V6tJeMn3++bog^-j0*?Z(myrwBMEy3h<^Ms3trrm~ITT76 +z1QnnpP;58G42&aQckZ~x$)agUZV@HFGqf72Bg-)KuYx#hY#TEOjraQG1KtD24QFF7 +z-0fN>uyixS*`z|KK>10AdMe>)jEfkW(07dK9rZ~J6=bMBPWR_7ejWcx2sCa^4&Pyl +zp@wjVvU`4dT7cg+(y<4O7wt~ns{LCdg04crp*jU$khLow4}YjWcTjAIleATfvY~zo +ztd)c3YFq{y7PZN{1@?^=pED}!l3Z8|XAXq06uqaQz$P`fu>OR8AqdA~?|&es0bAT0_=6rCw)o;vZxght1G4=lNmvm&CHD=VSK6flz;TLHzL2Lj7ZN +z8B@jMcno=Spd=PeH-+owyG?O;Q$mN?9Txqu&~|Ca14K6T^XhE(2S(may~bY~KW+jF +zVp^0CaOjadcwh(lP4!Q-KyqxUU>ZfV>$5j<&dQs49HwfT*Y@~>5B5}8?Ep4_QuhM8 +zphS>ofn%8}RPjLZnP}^`Cn;$ukidwBzVXo4-=Q~o+SE#5eKkt0@*B7olkSiIt#uni}-G1;K2?Y>6<>lEqny +zu|6!YF0`BDy?=8PVa3lPX>MZIX4=nMXC5&`#**G8&JE7G9lD$F>0-)U=n*CxVLNhg6d+nZQletyzxBi*^hX9($FcgOId9+*Q!W($P#Mi +zGbg|<+o`*oe$%mifsoOsI`h%#=h^i3uBFpei!#wHgq*%O^=;#wP?12NFh +zqhaYngA>bIJ-dq;#@G^t29h~2#8xUV$VNfe933rD>LL%<4XXiORYgihVM8rRh-+%bx4Y@4DC7)k!?$R>Wkb*x1O+-rEMw +zfpG48o}-WsDf*R0D>UBi=%6m019fAd_C^fl`I1p_t|IPO2o$d}`sfY^;~ot@yDK*gKRA +z4e$}5!AcY0M=+~2fqe~NWr-A+uCun#V+!49VIZYf98QWxgmdEEfY +z^+5yh!C|Z#I|nf2pJGyB{-tEsUi9}?Y)iVPv +z^4}s*wT9o*M9e-JzoSlB^bsBv2=9+ +zoBr|hTsQ9GAHruyE*l+)^Eh|H4g*az(hP^I{u?yesyBG-X=l6K*KeG0i85X{lvR(w +z$?DFAouj2gRif{(Aj#dJiOJ!d6~=_oK!SbTfs5p=Md7@RAfbKg$BF#QiDC)GI`x!p +zMmRz;Pd?QkDMgcJzVagnQPn~84?-A2qdJTGI2%!tmQI}4=(_0_f<5K_*tx(pc=Dt2 +z%Z$FUs_vNjZEtNHKRo)`1`r%o8ZY&xXM8pghi_QP1q;O{zT5D^j@O1wd}GF&vFOJf +zmG(x;i<>LPJAI|9^c|25GMG_h1A=bCy4XhLH0u;|fe_h~=PZqIrX^69+f((0>!no+ +zT4yQd%3ADF`t?9;$#kTeP~Cm)K~ytqZCBKFN~9%jV#9S%%RZ~g0gcd6!53~%bxQ04 +ziv#(UA3qOi94>Ozh~1teR8`b|E8r5k0B$3ur5gCWX_X_CY)Y~u(1v@v7bV7|_#DA3 +zKDQz1EqTDYNM1GT29nIB{S?>jtdUB#x9psr&nNT3!xtp)Dy0lt1fMBx;ZlAK&jkOs +zf^=LkCN_ilZ24cDeFs=m+qx}^if%WevIP|(Dk>@@_Rf3n-uLnGWhQGu=A5g{F~&ds +ze-+QCNv{pVOh{W6GI;2P5~jLCJsYTE3y_Ijzmaxy>*qaVG}2VQ_PDe!*GO(|{z_Ky +z-}UvE1|!JfEHw}`0TLNW6e$5)V1p9}ruOm{)_ouNn3lH7i +z?iS)I<@1yWJy(RK6D$$FNuYsOI#t)ZL}S9e8w6CtyZ%1uF4xPc!{0bZzjAWTZ;sPQ +z#}AUFzK0j7nJ(^U0n1CFoFb@P#RLO1o=7_*RX2Ee)?Om>jh?WzdPO__A&X$!#W7w +z^UJ2-1lRQ1c>t`?QsO)O_8(oQhp;arH_kfRvn((ZG=2e +z=Ty~vJvL6D$)!#(l+V+E+Pf~epR`=q1cB?2c=2=RV4=&Mf!XSQWFmn;zAJrCNJ^Tg +zF&jH{1N)`;8Q1~g6wq5gHF;Np<36ICMXeAw(Y55$L#LOlOW?+K3 +zG(@l@8d!w&?+i>?g#QwBbPHJA=CI5-Fi +z^myo)J%uCRP;iXOF!{S8zhI^cs_-a2GprC7ZlL@l#})gX!SY|12b&-cn#ZsyGk38y +zEMWlXJ-ul%h&q&hd2CarKw?w~h=L`!u^PQ?QYt|NSqF?3lY^eXS1bq~Q_^L2l;;1+^>t+nk2S-$Q%$TfR?!@20nomYkOkmbY~_ +ztUSlt&a7U!YuAo7 +zJM_7|z0D!Z6uj?j-~8O?;0MQW({x8lSTMI3_}By5n +zLyvt1m=?eoc76`#4<{|WbcoHWdC7mgtNWG2j{D`ZF(#UWaAwW~th9JG{4iun@pR)*Rb*UR@W-p +zl%Qv{Jk(j-{Y`tkGv3bBhQQV7leMw?(sSV9Dn28x7Cp#+f#WcXDqFA?lpvqEO?9T9 +zLWJa?`{wKV%TdViZ|sh+FNlEen%foQG`7;dWnsWwb)=ubqFEVamGn9-4G$aIC}Z@( +zP^PX(1@{Xq;njv*OBq$hm*k*W{;a)_4nO%_G!`&eCG9dJ0alb}sJ)y!I;Ag@`l;XL +z1G0`_b{N$xOL=x~YyRnw?el#FIN`!IKOD5CA|YkA?BIO?-w;cB@aq=32<-D~4PEv{?t>cI*j(bA%+(R!YBJDhg8f7+eWDkM^I%J~ +zj=btqo#~Ir-l0O2z%n$-CCD@ZSc;S)gfGk8`-&H++5jGp{Y9n&T63{AcuK|fkJZsi +zT~mq%sD)9rBWu&po((NVfE>XyD-TBc>$_6;xSiYaISH;(X;0YYEipq}V5kE1%cK7UcTQQz$PRl;6W +zdx_hK9wJ?ekb*}nQ5`=HlVku1&~e?r2h)lBSA&5)LGv~5B^+OM?U*@~qZ{6pXDYCu +zE8`C{_4;9bdAOxW^fUsL$7}OQxA4N3S~z!bPID!N`<3J6$yFJ*1$fPUGSW@)!*#pu(-et-w`1A>q;tmlOo0kg_;jMKhfyVQMr +z=wO4eg6a7?!~u!l +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 +zo7dR66Vn|m(xO0JI~7j>HqjzY9X +z)taZvhWWMpciN?YwdP%^M3p?HjRp|)Pk^9;NJp6+jAl3t0)23jwMO=xnxL6;h#v%m +zKh1B-=<|HdG-7bdB*^fD$2mc%Lftgch9kP*##`q@{EK)I7nChY&0xM7eKpOqJXQrR +z39|7NYcd&s{@#wve2!i55jM-=tsA-KZU(Zt9SJ1`TDx9Say-agE+G4x!sWwiHEl&X +zAiCcR2dpJKG(7tBN)w|jLxm30N~|-TQk`&1Jj9<+1E2=yapRN$>36-e*E$dh3y(i| +zl`9;YdAz^oQ8J#Wq>!Dk5yB9LJ)yp}MgFiwndfH4pMKX~r?XR^Tu)Q~x!YuFS(@f% +z242&-fiOQDWN>b=2_5L%=;hSm&0h7=IRCVp#Z6ai8ZeleINK$dcY8wE85ddhpQU_&1|>tOoCycZ$?=AO#b}~E~3)(K(otOkAIAS67nxbfX%OQHvQR2w!=LE +zNskS4eDp%P)KK~ZCHErZ@G@)p^8=0?5d17!h!UBUPfU;0;_2UDt$4IY`n$1}@gZ!B +z6wR4Z7*HUK@A7`I@f5$TDLh^@#cXgM*T~gamy-~uk<>5!MPx-Bs<}RbitR45 +z6kj1s=E%5bQPrAVM0|{-oY~E%i|Ylhk8RidA9+|s-NU-FAzuA9GFoLRIn9i227`P9Dx^<7FUVQ|Zu6u1zlgtOc+z`z>Rf?5YkqDu^BFT0nxJ=^GMcEY2ByZwxR?epx|P7(SKbQvwo(PO@zIl4 +z07j}`f@oxhOd0$rN)8yMrYA?peqs-`naZ_k?LlXnr=Y*xXtc+98&k-cjipx~?}|@N^H4IV7b{0BvIT)s(R0yX +zRvO9o1G+g#DgYx-p61C@G36$%i<%M65h@_z(?AR@2D?jpS!1J0>V!v$Gqm2t1hNIY +zAx29TH_6wjb_TYBPH?%NmBU2$Osz*sD?t3X+>ezHH&&&92-me=i*!l}goYtYFjayu +z+n=Qq8U-uEj3SoWq>n>zq6Jt54J<3*OB=x$3=Aut(m6uV1}oT@*KgJD_7~Atev_{( +z(?X;KuhQc7ngRR>+Oj!cM?||om{t;!tRjRzm0`!U2h4#dZfDQt6u&l_43w4|%>+tj +z&KclmhC-D*2rK0M4F_xDF9D3U+SedRE#zL7FmCuT`O +z`89SJ;o-v?EUUym?QTdPWYjSrAIK3dq1;VJ;}4WNywj7;{sKxwZHcfE-|$84PTu5{ +z8>~fMQ|U{NC +zi2c;$!yg^3ukx^-Ur&_$W`g1*>zbxhd1!0!#B164A8BJWOiE1;zQxvzU=V`VsUwpP +z)L;{*JKHl@PvDhZF8Lr{Ur)&d3)yz(;VkGI2m#8JEYfdoc+__@Nvwj;{5 +zr{pd=c-mmyvF?bzB?7un3xti}Z-TfD-A9p$0OB0dZrEW0*GtU8e>(_kh6$QMz?g^K +ztH*>@0jL43d8u;nr$(A$USbk%hseUW2s>6!R8(82El3UTWufkv;oCAPNM^$ +zftBj>BJ?oLW(xzF(eMIi^w_g~$JW(DM$W?QJXrM23BPR-gT}pPN-Lc#*0c2h><+6oR +zo)jl`V)u_m78|KUrk>hNAAfS50ZcaoO|6xm1&6=vc5^vgQ{UkF%P!TwCwUiH$zWC! +z`y;;WQQ~{Jz#09MF{%%pj)#YjF{bTh^HLF#BTbxU2)!CXKD)a{l@k}o7<*EMwOTT<`dcx-7F1%Fzz^+V4(Y;dUDGJk +zNGyeK4N97zybp@j|7rUU49}idN&C!Eo?~Ic_Y9g2H^a>HI(j1X>pQ<+;>Fxbhoa6f +z)v|lBNl|5Kr@MZEoEBmqWqR-_lgbywTm|oL$}`D$?1^dHqDil+s^c*Xq?abz)-Aw@ +zaq7TC!^Jd!EC1jqVB8Z3#J_$C!^H_EuLramg+K?xY~BAn3qdsf<7cC2HeAuwNyuX@t8tP8&nBOe0~BTkO>JcU2KjYRxu4+~eirV4bxJ +zpZE)|P2o@1tkUIm7QsAxC+PVFTX88@)vJu9lH!6^Af)EkOhqAXFurfgCfbRKc^GJ} +z4SB1ZpL1pA7!B)9i~+41#xwGcLggFO7AP=~oRQR(kz}Tm7!p*$rGqkJg;u +zJdeh~afe+{#?X)1Mu!*HY1N+WCmiesE*r$I_I~!T4s{`y2o@A@e`?g73OXOIc!`^p +z79+(5{ncf?^px!(5Be1PPkh6w<6thy@q4Z&o8*iBXaLVRc?%yarcLHmDsB)E54^y< +z(QW*5&F$zjSHvo}gwF)!;PcHKO(+5L6(a?6m26`2<4s4Fg!@Wg2EY|_m}QULSUziu +zPVRHb$IeE3<2h1G#*4Aj{gtN+#0Lo~S3!CL2XsuM;HFUr>JTSkLI*jW$j1|Uqr+`S +z9M*th0?y)UPSMuyi7m#Uq^|BU#7RU7sB!i8MQb*t_EaDLvTR*8Ygt6Ph`E`@rNlAh +zpL%S!{a%kBw~yR#@W)m%g)ni_F5f3Vr}ledKrdZcK6^1xY^Y^RVr80w$7+6kp8Vrw +zD_=h+))WR>hmid4bB@JZ2Y1rRh8n# +zC-9#md1gInBaa%C$?4KPMk{`achOl-^&T-sb|k=u@0g#3r{Q6>>Ckk;$mCf7re6 +z0zDNt+Dc>Z`TMJWP)tA0w7lxF^Ar!pqKh8Z%Ksc0xs$|meR_g^ig!X@J1U@R5JGH!?QRnyu} +z^sBCT<;zgb)5=9CKwrm1M=$KYaK~5FcZ8<`RLRLE`9x!1;crcQvc-H!&fMs;BW-H( +zRPUG842k+y)NI$EGI(bwy=!oADWv6Fe|QL3JVqDdUk(io4nH`zHcBfQ`uZc0A*cMQ +z<;ZMZ!}~Gu+{m5C82|He5GY%=g}7?D$za=i7Ct3nN4<8K-1+Ik@fUUFvx(CPeh#_`7KQqy*Im9~ +zBS^rh&^{sGp+*uHbpahvMYu@&HczK5^3~_$ky3S@ctoO~qHtx~nRxlY4`~`-8Ywvj +z5`9{G@vK{)&2SR&B~+2UPL%{<8AxX^%ao@w>NF``12U?CJ&j +zk7hwa^JFX)0Lir=QVw;OIDqlF5%ytSOJ0{=$62Zr3*fK +zS66ID8YleMuFrp`EzTBGG!jq!a&Uifs4~fI%0B%t%Z8?%*&J1q2|j`QhWV}9&t*9Y-|jV{9^O~ANf(<3 +zzMN>2u8TIZZd*1fYp8xUw)U5u90*jK5|n4i(=JEXnhC{prU_?e*(Z(FyXGqvEI!QW +zZ=Foy$~$^Y{IoFJVQWfaT%^wrMcRCNO}jn;c~P-=9)3od7(=Exqx<@b&8c%ZgPo1U +zZg892KeyqGCgRM})&`2>D@xL1u1T+cp1D7vuw3sLJ(IJ&rE80@`q1H_vkeM2eqT=V +zkB%wdmh~%Tif{h>_k|XFFhxP`#%JQfZxD-Dx^5QjC0ln&G*xL6q +z8PCt0(1t5{=O{Q$J}4m<&s?=jtH1gk_Ue_>AGG7I@8_Fq_tb3VTVah`q$=B%zvioM +zTi9w^8Q-h0{l^M&{e0&;E2f(MxRvg1EB7|)>dks>3a_8T!Rxri`u4GHRtg*cIMfK* +zTDC#Ao|UV)&%IENzYN|2m%ZjYG>~J+F2y%VcZ@S#L1l%9alk~1xJ^iUo?Vq2=PIz$ +zIx5g*JCbv|yCm^FY^{UnDN*9o>5^~C>T3Ov%=P2Ajd;RXrARN?sMGsiUjnB=s^iSm +zB7xX1JZG`i-lW*Guc@2x=)I(tiY@RU#wwAQo6GIr`=TcSeE@mat$V5An^w$j6f3em +z%WO2hkVOxVlCIA_7V8WWLee+1Ogiq2ql_yPmXf4U|Ak|`8KlrBxFMd`=553NVztlg +z`B{I8viAq`qxC)h%eivTwz!tQT+B|0OMTKeH|3RUs-8Z2cB>&4W(v&<6l*EpXKSY) +zOx~ZLBg65`K_|j4_eqZFpp8l`<6i0ao|+zzjgwnrZ(sf}A;ifvN?!G7!Q5<`+n(^4 +zK$odK;r*Y+{6X&0V%G63kMtip-auVFffrnt$~g964dw>IVR{x+&@~@V5N(p%zy8H4 +zP{nVkFJ5TWY61d_knsqC?|b8=c?MVXqG* +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 +z1?=cL!t#RR>m%`SgXT5=?QzQ{<{L^wu6g+ +z6q-tkmq4Z08oZx^?oCRE7Qn`18zuDxkYEM8hV_tsiEk3;`j;`qhB5VP8V8qZo^u9c +zY_eGq4~p2dSLvisQ~e*o+w6gw2A9iYeJ8^2uGo*D6K*zXozpw-qqI0~Vwm-fT9#{) +za87_RD@fy(#*l%dIRG5E$}$EXSnaWewFk8PeBK^Zj;(@@XzWO+Q*)H%ggwU})*~DGp@_$aY*yO5y6o&95r$wewKm +z)nAlfgF0WOnpS0JW0gZszep;?wOA!~7ha;`t^$>(Qye$wBwG;+*60KOvoGXLr+ir9qbuoLSKnzR(3H(m +zJgbhY&U(BCl3wYn-=zUIc~AIpI2oc-aFq`Yv<%n*qFcpZw25|0H25{o8b^~ +zpm3j$C}KLL5?RrzgJVO1gDHbOx`>JZg{&Dtc{+~MtQT+HZ%6p^)^hEni8FU;7w-`0^nOdE-lTJnXbX0}PvKf_i5r +z_|`e+hLT=mXW@3{MJnX?Z$y4__1wAfB1ZKNQ@Q9b*m-WtnA{93?F}2Tt5mo2ue!^q +zU-84CicDpUj0bV_Vvgo+eKq+=dLCMb@3O~viaYfaL8DHCi`Fp~E>PMu`(h)}+zW#c +zAE=7EWoPTKv=IRxpAq7Dw7sFW*t_x|J)KI|sxWrsk)zJhn9`Q$c|S&4*t)#4$;!>I +zPmZjZIWuuG8fUC^?qkNBqT8khTvI0;hH>_-75;2n#~2;|$*Wt>9S2_{%Y=P0l7~6+ +zo#b5YENHuoG*Q)aAW?4jCW4$0(l_nJ7|j=BD9|x!zbb5!tI=ols5|8;_j41yIU|&f*EV)37|UHkd+mg1z9ZTh4O9Ykk@K>X2;vTyxHcT%#T(W1Uk#e5 +zYjNsSHKUvvtXg&HjvYfL)5&P6@`K4AAZv}Rc-RcS!2itD1pBWsvGEZ20@Z&K1CA;* +z$>s;NItROaJIj46hIFqKb+c1@8L`M(clWU+;=@GxvAa8Kacp{d6|#zxHMh|Iz1`$V +z*w*56vao>-xO +z5mE;O^7L1DcIGbjx!Z*iJ@%Tj<@BGrn +zx*}}@ZIGbdweLNvTw!yg1+r*S1*4 +z>CjQ005bZH=A@TN{B%Fdr@+G7C(?8@>iLr5r6+o2r9{eOVQ%TqcW{hwzjjDpPguI* +z$Ofe7t(K7(Qo**L)6)=Efe%bw>&*&{J8Na8dtEKKxuD=Ed8(rge6sG +zo(crsi*Pm4=rBp*D}H+wbUZy|WFIfaYiN>@lH^6X$=n}J&Epo7pKJY78ByHo)<@** +z1iK0KM9e_R78BTtIrQ5x +zTiK<-nZkn}Ptfx5+vA$UeGA9w{JR0zrFQ6RR^$K?E6AF&37>m8cs%I!s)Vu}lWXDM +zqNaBA8XZ59^6EwjwtnNY9MJ~MrK|a(XS?AzINe7Srm$DgLY#%{9VkMc;w!Lz_s9?@go;>)OBN&Hf_ZHz8K599p*PcOpQn9v+{wM6!a)U429Wwx#JU +zSX)MQVDxKB-tIz2&<6`y)ct=B_5cV6gs!Y9!VgO&xz)XSZw`Iy1mXRpdFL@kU5DOy +zXTSjs&KANW(Bhha-A4xJ&P&YJJJ_tmwoIm1@fM)GVkBRY_hra(Z*p77DVVe9<=ROM&H8Y54L6@aqywu5~|KbE@wUye1 +zdJ&(n-qLpP%BT5CDKuk%L9v{OERJIbPYSHUE$9ZM!|6w1OIoiWLD-I=+s}bd#Rr05 +zQ^2Ep2EnOA598AvKctScUKcxuca{5Vh`=saNMH6*N-c3VOl3VP!A?}cokZnhM!|*D +zlT2{|%`oashUVsVjwNNYjz_^Pm~t7z)TspBpaiL-41xcrNb))sscfD#K@j{-UNFR% +zAZf~RCN|8Ob(($)liH?j0hPKM)C1!M^3lBQO%UPc`k}=erot32JZn9%o&xzXHSzMf +zB^U^I72CCQZnZc}M6uIK9yJJ@7`STK6+ur?e5Gz>aE}DOc!5W*1g120u_I<4&Dh+^ +z@wFKWOWiBLX)Mf6?D%r3Dkw#%@sitRTf)&ix2cwCu-{Uh0Y{0_RgzK&~LIlroTN@n~V{w90Nl +zH+R>d73tKT_i`WSaDhN42&!Vs9PR=pf&KgD8hk_YswPsk7jvtTH!GD4^@X-Jlq(qX +zpYdU_nZ0&;c2D4#DDso&^Lu2T+{?%mDX;M%223TaQz}yNkY$#BIu7WDf+=}2`UJjD +z4>@5;kb84)<(GT;1e?yGHZbS(JkA~P6o;yrHn_Sc(~paH)C2zbp;;`O3;(RyfVWk8 +zdP9Lxm7Xqu4>RSb#PZ6_hMsDZ$!mol270A|dv-xQPTx@IP)nN2Jze7Jar`}NW=ByA +zT(odT={XoTJ=ST2JDM>qru0|M2+O&7A<}NJQfACW9u8)Kezr7pso##rM5l +ziOXO>JTptXtmy+9cHYf@HNlO +z%+z|&;Z1sWIb16bFFkl;o!jWW@$LK)2RfcS`lZN17`J2(O`HhnV&UD;X9csLzHi;W +z@Os`Dm=RNtwU-C!W8$W$dGVcjU@oDJ=~vgEHXpzHtw;AEI08WLfHaKP>P5;sRz5aX +z`m^WHu0KD(%l|5NSevo)UgA +z&UrW_4=p&FYfw~za?_EF@|Mbq2{v_gd&f(QrI4I0zRX82kL +z`BQt-WNBLS2dNwg>l(HwdJz*~jO?uMGm{<|M#OFu9|Kw+ZD{o__lr->eb- +zM+K_)`6*1IlXVU78kSxmaN-<`Rf89b*R$|KxqIsln0)zdO!}=3>brFOc5!b;oq?EP +zyCl8go|OJ@?kocAq7aKLS9v{NN`m-)6P-d)nU2@EeSN1WHk}CO=aP +z!Q4qN7e9L{j@S0m|CU+6AdpZD31ABKs?E&4fMP*WsAMCLAsE1}##0)>x$? +zS%auG_SOqbM7)8reRzA*xRrVtRhtN3%wE_3Oto)yf7Ifob2Dv^OIF&?K+)Zu#xK|O +z|8!IT`OxQ87FhNL)3Gk_TiHVPL(KK6@m%6F-BR(>n4YM~$V1mnO1roZ4_!x$PvMum +z2qhM2A9YRlT}Sr%R!qIWVWW%7%mM*V#@XI;x}|2|3lu&3QS=CbEv^tGK6od#YOl;0 +zbr25y5N*D_>1v&wQ6%gswcIeM-M%?jSC6DKjUQMz6Km{klxC(^5HMpyx6G>gY{m&p +z01m(Iea|w|Jfe*=j-Te2``b;#PdxOunY_~)38n;ICXN57{=g=;6iggve+Wdbn-QXl +z4ZI|W+ya5`Vedsi?f`(|qF#urVcP1(VQ;sbH?v%m;gkP8$YgO!o439_mUN0^q4qx= +z-Q`fBrle1cd0xwVE!?_SwG81aeAjE&M3{81d4k=mTxM_M0|#F&rAyC{xmG4!Yx=*% +zZ{$8=CZv$|mvt>_89Tj~1({Bm>l26Vc(0rV(C48TS9)iVOg8B&o-AT{z+{>b({Txm +zQjwq3JdmE?`Xj|}szk3vI|CheV$Fnxok3opuG>+da66;a?7C6dyUqnO3;jn2bW7mX +zT?F3;8yqJd3#YxJ$t}-gZm9!DAgQ=1FrgfKl;-ErmxrAOlXEI3c00(jue&%foYYU6 +z!}cLzk*)qhcS2=8OqRKm=I#Ank@jIf?2(M3%xJPBN-6fT5TjuK7i{tC9P@?y%CGsfdDE +zxnoDL9?R>wC~xsroa3r`4MGvCDH8%LyAe&BCtzQI{@s#-a+4nUn9E+()S?DAZ*fQS +z^WUaOEaL!-y?c%}#PQfM +z?;g+e|NsA!N~P$PN)hWUN$Z4&t@7sMJx%G7&)IdCFD5g +z$!VDLVQe!y@A-So>;3uuK9|qs^ZoDp&n}y%ZO`X(&*$TDzd!D`+x5=U^JRZUGiDI- +zn~PrK8Up0XpB@N0mj%QCz|J*}(vf~+02{^1?`*6o0ZSCUhnLb#=fug`tp~rfC^&sZ +z^wv69v{6$Qbl(&pm-Cr>N3kz{C8$FF8*Y}yk>tic&cbyFlq~| +zn;eW``AcF+a#vs0&McWdBKf4UdM$`Dakaw;)@Cj43t+uWtfW?^nMewzKwxQ?3+fqQ +z8lY?(B(Q_idI{2Bq!Lrb#8lBg4GLC1CihSuL0y2kZSJ8yL(XDd7rgA)cJfJ3c0g*C +z8%tT$?cW85%1VGb!Se0>@)3|x(r1q1nf16QNXNwKgb(xYqYkdSU}sfu@@H50!eSdI +zx-qiI+a#b~P$MXqn1saEjrSqulh#)GXz{OB|&#xxYpZ?KWOYd#Jv0gp_%P5kum>P;EN6f=>}r)sEE +zYTDoYTMN$bT=3mhzcoj&24{Oibx2h^Ss*?d +zEvdWJt!_#@6d}0V6;hFk19Bs3Y|j?Dxw8X=Cyyo4KG%&}j9!gOZxIX~Tl?u}#eyjK +z3mo`CtsTQGXFCo`fdx7SvJ8aXhqH;x#&peyHb4YKHDi#B9m9}~<-1?edgyY`dmGZO +zY$^A3RGEgkuL`3~V70x(5mWy4lKO@jAAgl;*Oq;AOZGRo`&?YFMN~eIQfk#LRBH*{ +z_w(tMzVAwh1i$~79$l>>e5#!=qBgT($D(7e7OQr#LvT0Cq2HyWuIS{mCS$6Jxi`<~ +zrGx`JOBv#j>elz0$u^_*+XB^wEk~>$9My(RM5F3uat;d7tX0FjF|8PCKohTG#)Za4 +z^OS>+rr2mjY(xovPN~&Z>%pzp#b~gARrJhOZYkj|xE-C0uk_NBB;BuARLNpFg>MU_ +zfVd!0qJO94JCp}WPOI?K&1*4!p8fJQ9M0VLKF2uQtL-kc-xZ=(pyZAkDDF2sF()`3 +za_P~7jO``W$A;vU1JBLw!GDtTI(PkXtgo3BBUZsmwA#!n;T+|&g2H2Yx%d6o#3$rO +zCisd^hT_j4CdJg^EhHe|hl-($Dk&ijvXPfI=n{TIy7FpXG}6K@omx7f5culW<>ol~ +zJN@ZYL_eMxL-$k+*LsOEU%Ne_XJ1l<@%_OQDhJAti*SCY`!z4EW`Rt=A_;M143n-e +z(g*p>tjhK>3rWG+JqSGzvx-$_R^OqDV=4r04cfI%_{ZCA6QEPlH&2Im=KdS6&LpmW +zRSG5i2uKsvX!H$dnoL^NSq;-b=vV)z+zKW)yUjqntZF3;^^U1d5bw`xKuFn*6mb_6 +zv`sN>W@nAjg_ns-fL~c9I*J+gZA_V3or=EDFDR&@Ck9XOQFqp8e=z!4weI7Qca8b? +zceM%V)4p#?7w%2{<~=+29`+9o+kMO@>w|mug{G@1F;=4xp94j^AL)gJwLG^t)S@;H +z^a6xnHo`$t`eCW-VB4pYw^Nk6LnrE15!ZgLnExa!dXN+`;dNChv3Aenj2|ywr^Bi? +z<*Q|vX>Amy<6RRbk*o*Yigy+BemCt-gh=o8*p3QegQj9}aznLLWs~Wcb}sSsA_EYB +zaLyN>6U~4U*LI`iwX57tf +z-93nwrS08$MSAJcC-}VFFXB2Dj>?w&TwiunAk194E?@h>4V%uL_0h`iXYD?8_^l}z +zN&07%aO<@jLdw38EC&X0sNKeL@8_77?cP?XE=6V7L!^J5;s>$R3cZ}_>Nld~+I;an +zB4GaO_nSi#AVrl5Z{d|c +zuzaIbw}zv<8eM&siS5JRr1 +zTH-#SDlKe +zoDg;Q4N8;_u)YUWk;6Buw9l_kw3%ExZEI|| +z2eZK&L>_P{@7q@U)=%^HQ^^dN-&rd1__l1G_?r6WASa3o1eJf}GsknkZhda{;drV5rFy&f~~oAdr=b(<>c0 +z+XA({XJCUKM@+PJ0aHH(*+<*BS<+W4_RJ;F@$-<9A~< +zIzU8Z+!MnA#X_16rAf7Vp~Yq^?>cB(g-jpae(%`UVU^{cFdZqydufv|U_ +zbAM3x^ZpU8&3{XkrLfV~vPV_?*v-x>++EMKg0j+GL~0q^dUZCdC!ua=+_XLbwp+^| +zI{rS(^dAc`PtrwuzH18@VpC>rt7mUytL9~{2w2gbaH40$?O%`fv|j`%Y@+$oEy2?| +zM>{v>JCFOnKXuO0Zz!#>YZ>^ze^cgK9gsLrFGoJy@0RYj)-2*^XM3(BwBt2%?dq_m +zw5(OxIvc_EuX5_L4|~2tD#A~@o`{Y#{`Vj{R|;O(+5{tlr_XQo2nGpu%*2-qJKa#* +ze?|V9U%Po~Wp~b8*|}{y;ihbBd-tb^VE5r1<=ejuhNHpb{8L!*hWyK>FOyDhp1Rj1 +zJvnLav*P)wG3(A}ozW}7_DgbL#nBD*dkqvonb+TX)?D-7gK&E$K9P}rocQaJ_CE#S +zY-n0|Ujm7$_L>{!H~d$ue)P!Q_sIwa$5J@o=(fiM-Du3aM;S|3&R(B%+2^83ZHTip +zt8AB6z;^Or{kM~7@8@~TGKybfz)$_k$PNDTH0%ZGaL&Ct^dKl^C`GWr;Ac2X=`88-%^o#fywV3}_J~(kA=gHEIazmE5 +zF;#Na%;;lO?VSAXHH+U=giiS#@WE}S3Su_|mJ0XgtM`IwTOME{XoHcKYMSjBTQP<*v?)#8_`jTb=4O!c!-6p-NG(@7DyUmPj5T{`+@Mfw7G +zOoRD%N}XW%JV4>zt*nQ*J-}dC=$tdjr?F^fI*<^_So8qYg~eIjOxU887qQaqBb}oc +zyI|c~jN|||V6n|t=U4OZ62;jvqw^G?8f{nbzc5 +zwgH}WH<5WPsRyS1Q6c;11ONSw$D2)hpByhj9y+Rc^U3i1&C;ize2W!>9}w;aD*s;k +zpB+)aIc?=q*)xGzJ{$=iPYqcfs)QRMiz?`pD!l +zk-Iz)q3wzWg4r1PqN|cxci4TynWC})XVjt(_k-T|P}6X_I;D7aI2wuA<&7Gs{KgMD +z?tz;l3QZBG9ok4N(cIlNDdXM3{p?-$^)6P^kry~dEfpXh4^~<0J#j`ac=BK@{Zl=D +z2Vzx+Ot}uAB$G#}yT6H`K@ns*ik|HA={+KDzie2L__QN4E+}fBf~)q8di|lep!XXi +z;~|wE)_ot2>H`iut?k-LUn>#i*@w2M%v4O*mBcnF$>;*=o=aVjkFDsL7XI@UWbS&_ +z3%jtFxdF-Jt;(d1hvs^#r!A}v-Qj88x}(7-e4d$7kNtC9$6CSN|M)#08~;-kQC-ki +zJuZmsM?Tj)Ss6Zb*J`rRb^4&5OVp?Fs8g+Jnr~cPET*9ezTug>?2jDBNdr_OeaK=+ +zOkA5`w}Pble(%puO=6P6{S1?@5@J^i>l;`lJd*$+RPa`Zylz=dnzVIM54|_AdMGrP +z?G&;yPWkKY+B~>r2KcZmd*4OfJMFqZdaZoS0sW?Y?az;V@|+LJK8pXu8?d(yL7(sTT459ZJY0GrNq{aH +z1kzR!GA~8i!9{L7M~n;_rFIF6Pu=sPmsC +zw}qFk4c&^Hv}$>DgsWQm^*ejq4OC0@MDN-9(n|XMyH>8lL|pi3O{kRnTfCoA@0^NT +zp!En&rk +zgV;qcfDH(bmAU}HK%9gF12>yG7&~Yu9O4O71D1S59ThEmw6#S&z0K-jh230G&dVYf5|%%wM5?)9~QWdM$%|MWZN5^ss2((f+f8a(jq#%P*cA9?mfva1H&3#HL| +z9xW2uG`z>$^8jk7UefuPNoW!--O20FrI)w2o&Sfhie_RSlAnUu__8SEL;sn>8yOK= +za-O)1r$g)))Fm;YU|nkdk9L`Ci9Le#X2FiERweo>LQW#Q>CW9|kN3UOD85iokl?S- +zt8}2`V9i^#%TZx5_PK|iAvUb@AVIwY<|J6c|{G(Tz7^6lL*=Zo$fzs9*7JSnAp +z);-g|yc8;9{h%2Oa?bv!<{PC1d`br%p)nlrQ42t={w9bb6|60zus~n{wSkpZ84|Z( +z>NU#PkZc8x1~nL_C3jVM-!Ze+qIs`jJz#~)nR-oh1(y4Ha}{9u32l^t^XjCdT4jGF +zRS7VnNB`F9%5%Lpy9>*Aj=ruBT_xG(E^w96aEVR&`1iLSoV{yhT}@A`aQ@VAs#yA9 +zRC_cY%sLC(W!B7v;buZgcMGc{OUp!Y1%)h{$2yp>Yua1c*?1>B3trd|9a%3 +z*M#}Gs~jSxj(|r-BLyTERN+>i9u@9u#_66LaG(B8dC2FFrl)kK^O#Q)PwO!LPnqZ3 +z$0PZb+ejR@Z1xdQaGH>+nUsGOK_gwzZKRk+gR=YuMK+oK5rbM((@=lue`%>1Nt9O+ +z(kNgnXwxQQb#-9UWgmyHdjy`7H#v0F!u*Sy1|v +zOxW#B#7&WIq9_W>{k67~Pq|q(aw=7nj5=bF`gq)sAp*0+>2fvUU_GQykTdnJJMYuc +z(b~JwHLb|O?!0$eM#2PUssQD|_Q^LCNUI3bg_O5EC5Mi{wSY5W(~`G_Btay6AfIFn +zA3M(REJvDPbm +z4n3q!L`8UApElI`S@Ck(VALCm^`(v2v)vnxy8yoB3pJ60q>U$Feu<+@^`9hMNButYNPV! +zK&fInOb;cxiD6O}T{kkv6XoCjllXr;ud#rwruOb$9C+`LH65g+GBsZ=DxeBb?EsM1 +zPHbPgNieExIwNH?P^J=%`EJQoSI0E6_5ALd)M*Lk?<{^7I +z@dCr5^=%TQBVm+jQYR7FNZuXssvfWTkvqSiy}Vo>fC`B~iHH)l!Mf41EA3#e3F~fz +z^a7}w*s+1t0dC_sWvC+e<;z^B@;6NY-~?QdXWzU)b*L2u$`Puh=*B$oeh9>nsM2e5 +zG7%GjJWT6-LM6BlXly5M+gxzTftbry-t-lN9b_(Pd;Djj(jMO5gL@ah7RjvP8P1b9 +znPneG7?sk8MQ)g@)~?eHZeU>w1FgPXZGQmp4%Bo6jJM(DhIh1Q#Ps6Z@kjipSNeEx +zd}5CHPi}0D4-jmS)?7Ht+p2q-J-pa=^=9IF?8ulSZ>ZV1*IGLBoMDqL`cob$FJjVj19S;c!9`HR76ELByhXEoOVXVdI +zpo;9NxCg64Sw`N3!;j}fO!C~2rlSM=X3Lzrhj@g8wy7=6UK+C=Yf`1^aGT7M7R$$8Tk)I2WSn#AE=|; +zx>{TjSfjlpac+O0wk1j~j=Z0nGrZdVP?)#Mt +z6%0CV!z+R|O05UiVZJxw&qyXW+h%nByoBexqKG%pgS#8O;B11Lhbc9ofIBtL~HCz)Z(8OLpSJy +z9DJm7zcv^Id(P?MYPF?8g{ZE(xEEAZt38TynE|*Y?6*Uzg6yiaa6)X5S3%-9W{%1; +z6ptDhN}b*Q>Pw`l=I^~W7L9g3jOmIA2IGavM6A$E<}dlL0p|@#2xbG0%A&-3uw|Qi +z8Ih}`FzvaWvCV1i +z`tT6_#4C7IG%I$K1WqGY^kSuXH;V6--06Q>e>6bO^SH9>s@?VF5-M_#FgHW%xdA=7 +z_#iU!m(qH;XA(Kr3m(}Tnw<#KMvb%~SiZ-05+4qt239=+YLmlZeD1Ws6ZY;Ij +z?HlNfua1N4Br2?$FzFK4(ZbMtQ9K?}hLj83i>2eIVGU)!UZ$vQo5}$Np67YyB{Fdz +z!gfL2SGFrrd@z_j9#|cRT5d9|g%r-sxhmA)?P$Obw25}wZTt91mk=j +zWXQ?VhI&*}orbI3syn8cY2t`Qjw6IkSup^^XQZG#ry%E1T=NO}`gBM26$X--I1km+ +z359~#9!>}kg&Dlv>HCp!$$aFcV?7AK+jurwZ^xrhd$E2TBgV7WY#;|&D~x|tHh@xC +z1BBN5lM#MKT`HI2Q^(8NPX6-4p!ha2zu#*BUG(c|r=eaa^n_>?^JV+`8q13h`_=gH+*En*I8xGQ9 +ze`|>cmVCuzKilvkz`lP2DvS~iJv{$Z^-Q;)7jjaL{ELIef0)_P{iwu3yb9XUjUGDh +zm39vPXiZ{X%%LT=+OA63=^r{`N-J$XT+`?3RPzBCmV0JYHnkGx&sY<23xNd6FGh;@ +zDMzlv)|(E&mi|!)s_^apfBhPfYKf16 +zL`V-D@yPAT#`SAxLAO?xkG|1PNM8u97lONy6_2-(gHMb8op{)K0MZBG#r~fyxS+!Tf9RkVh?oSCggO32o>u|> +zPcOH=?5WF`Z}HZ0?Z(#lH1EF6&C9#Ak*`u%+FqH~M1C#`a3jUx$AIMY$z1BmI9y2W +zJ7R};8~sWM|zO*Xu&zChljvMt?(@wEQj*Cy`GA*>nt` +z0m@dQ>tGYS<_8sBIOG1=WTrf{TwY+K*cSc=fS<`X1xIBhwecq}Mrl!f(T2r^N$On) +zN!`C<6Eun7Exs*9dv^>2QOK-^HhPDy-iOxTj1Sv^GzCD$wmB?(qc)KRdOZMA@!;#d +z?VvHpU=$VmXMxVldfLbSt%};D_VMJ3ReL_E);0}9(rBrs6QgXGC$hW?ppgG}t@ClI +zB2!o>3aQ4pDBm2k`7_D!(u(;Lg<7cumI8C;3~dwVH-aV>!!Ml2F}Wtwpcw~P8>P0; +z@A`H*gT@=t+KDNYUIK>V8$zeg8qTmWM!}KR#%f1w@b~VX)L5tr-0ie3Sf~@IuTU37 +zh){}uv=w#|S05fi!uFAdx_V?E<<=ogF=6eIgvF!Uz|u3g(QD`CHo+>>steXIF5&dL6ybXz3eLRbd1#UlL8`jvp69-5jP +zK~L+?-1$=yEv2N6mAqGdldnUcEz2Ct+uW<`72m&(?6e!>`7&%QtkFZ~z1IuYA(zz> +zb;7~tHCW3k+fe{DsyTA}r?j^L?+>qYfIZfOO;hSAb%f#h*h7YpYx9swMzy;`vaOP# +zTXl;jTvk6QxTymmk9#x7u6n{7@z`1bup_b36iL>-=Y1N&>*A1t>A(RgoCsV}xjA4V-YOlm01=uA +z(+!?y7_`ls5H8tdU(%jJ=VlahroLkC!M}^^*U^F{%`e~lW-euBz-wd%Y +zs6Vzp)))f5v$0dgUC6H*lmPz;O8({Z(NFS6j!rJKdvVm!Qy+gDnGq1vGws>~s?4)|T?d&fD7OkTrF5u`roge4(B7VdN +zbzIF`PpmL-YPyPw;nT#_^R+4$YKgdY(@DwF8|6ugy^;{hh%&~gB}KcFs!y=>Iettx +zk|Z;3)Yva432q#Dr*COZ64}xw34L5h1;$tM8TdL{Vv|6S9LfuD^{lo3n8ZkPC9A+U +zS-ZQIJxBCja2TiMcNAeir5XQwmMq3Atm)A(plb}pU48a@l4F>AJ5P;8Feg;P2HjhS +zbgdJtM!$Z1V3q#;=DscK(e8U};g8jX7QS`L5;ehURJSeYuCg8glEf!x+YFn*onzig +z7zhD=mN;!_2!1=u3eVCuO@v$rTI?rp +zSh{Ab=f2myar$KT{Nbeps|h}7N=zT2pnd=5hxV+KCP?cZ*^lK5A%h>= +zT`994lSL^VYwSAv{#+HgfwHHDZq1XmUL>Z);AfQ9^_rd-O0tw9l3B!LfUHCXSPmqF;ZUzudFk%CYzh2eiB`>RFaCcbHsLe_`HVhAJyqVxUjtMuFp{W +zsYKF^E|{8|_S%w|pSM${x*t{%g!X^Me6sKb9dMvuDy-ZLec*UzxzInU{j{bp4rK@M +z8!&Qn``61~FVFE@Kb=-##(+5nx!@lYiElr(r+$9bzA$Fx|9d)eT~`Ibr2P*MkIX3I1Z>v*3xHb&qMMpL6eQ~ +zr9DHL;eUZxDJ-!|@(MtM1Oql-;VC~mr5my#Me`p{@ +z2fB(;cS$L%o68kqz4d=;;x2H;~z}J%Rp90@Oar +zN64!NV9Z5+zg@+DkkuAm+5kze4VZ(j(j8b`WAFu!g8T*Hb-lyg=&2!wG+@WIlGQ6{ +zrdL%_ +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 +zKjE*jm5VTcC*mRe4Kb||LoUoM&eBY(v*XX +z?py~W9OsSwE$2FE!FMj;k)!y;Oi{3BWuHYWK5)EMWR==BZNPN;t8KqX{#AqaT&3t^ +zl`CP&uX?20gL_jvt|X^dnogNoK3Us+8|`hH-bmB;=(2I3e&d+lpTP3zWOm7bv>Nt` +z>LPgY4IeoC`9iItTQ6M$=eKAUzx5+`A3UW)d&wb#3j-YSKL}**zO=Wk{A@;*(XZds +zwB0<}-l)U5QEUgo%v7k&au28mkU +z$tk%kIG=!6NA?~R4Je^-+obJ*PWRUoem$Czm=Kw*U)6-g@9Y$ZT{0?V$<5CjQjxlE +z#hm(U@$(dcdeugtclbc|@`vmy`S5Q4`+R4(FeS@*)T7M!^td6j21{x&IJ;=e7Q^jv +zOvWO#pHDmYyD`x)$f?a*v?I{**EAF6^edmU$*q6|4fse+a3fOqs16MK@$RM#aYqJm +zv9C62c%^9ENlrBXV`lxWQ2zOqF1e4&f2Z=NI`f2WXx#O;yE|WEl5viNyAm@-9ywbOjTV`4R)xWAspFo; +zIL3>a6!@a>#9wOitNx$?&~fBbFdg#Bu#T&5yP +z#p22Vn2AW6v%yeMcHa^%P{J;F}ilDeEw%k+pPn7;tv+MdXVR{mR!-ft4^@z9M&G?3uk(>kJwX2Cp>!-M~h)% +zHGBIg*SH{;rH!vQmaEC5!=RhxHsJ(+>B;h3sDZk=Q2ADgUfH2k37WjGnR8|Q>BM8V +zBo39#EgPVbpkdFS%qNw}>TCAR`v$m?w>V9z9(h#e#NlqNSbdJ@7fP1fV72n5XzeYp +z=t1|XD{U6l)-UNVo$~d$np8|L8}_R}OW?S2c(0OsjmD{-KsSV)PscT-p-u1o`KRz6 +z7J=(6@_ou^g17h8pt4ikPiAZ;M8}Vte;}2ff97=eM-e^g%`b2#_ZIX}3Lop(F +zc#|e4t)?$#iAwG{9ngux8)s39`0-A|iWi+`4f +z54_6X@_0k&;oK23GCuMWVZ{MV9KG<(HxN=#s{FB3$~`d5gEPQY&X@^L4jDuWc%p$z +z;%(2vs#=eGXBbef^ORSc*blinAUzFT;iez=j9^}+we1T-64$43sW#^s50I*frTA;u +zhQ7&);Yl@W;;`JL*QdD_-AcomluA)~C)ZaXyKs1He`yQuC5XpB9bizc^Y>g9IIpn-FE9I#R6i?LIXBwvXu}FK%-jX{9Cld +zmNIA|sYOOpLqV8B!*XN8Q35ydi&pJlm?{E$rq9VeM5&>4xuk08CPQpjS8bBYnhe1< +z$c?^tMt1pNxW2nIQ9Af?zRLG$B~qX0)9i;{6l#wjQ75l#rY(eA1wskkw83_gn=u_oY}L|L@s&riY+*(uh1x+8I4QekjK +zS93MHOIT|BJY{aS78!VDTJgN8;ll +z3kGJM!1AR%O<*Arw1?C2DeZ)}mszE>Jc3Zp-`TM7c# +z;m4U+aHcswG1X@itQciDcX5mvV;uy3FD094zXyCaqu?35im+dfaww~r-;-?ri$i+d +zx}kJ`eImD;FTgzOzL3VEQNQ`E!gL7fBECw6KN$*|JxImbIW^>-@>#V_;ik~wrjF?M +zweKBIu$@)+{#0%nN?jE&k-szD-+Q&i_`v(9!yR|3-Mj}4c3)KU3VdSh^#%4W>{Vse +zR2E^0+|y87JNfmbC3dj67Jd>oA%_Gh$xfQKE&m5!1AU +zSNOel&;}cmy>HH0B&clYbWwQh7mE&U#T!QkrajoK=e|#eB7KceA#ty`+&L~-hXm$@ +zwj|H*t$fa6-^rrN4rs#ECRn4fWbYKZyF0twE2q!LkLV{gvPL$5jOWL_fC)G_mBT!7 +zU1OTqmMF9k_3=$0aOpx|0uND3AhwVT$ccoDD!JcAF#0xOQV3SK%kVe2mJX%+og +z8m_5=mZfH~9S0AQ4-p5!S?9gZ7o0)MjUD&qdLLhxwjA6eAaRckqX~0Kg7%qqk}Qw^ +z?=NRH5%}$55?YYpIW*KP*tz(+)06%A21vL3w}^gkg&+3r#cacUi)Q&t5MjvkyG9p# +zS%4iRMYttU{IN5E`@yb7Q-ao%n@>hi=uooAam`+I$ze^o$c~bkIr3%k1&Xo*_<1Ck +zX*m-(W5;PyapL9CR@ObjLi`qPBTCP7-Y8(2a*y&)h$V8o1ivixz6Xf}7ueBfUULFu +z7^S#0Um%2a<{`x#H3`FW-`T0y@i*bliH@fQg+KbY+ck>%lO3JoRtwy!Eq8 +zs87@XS31uDmidA*K)BmFTH04oi+)MNPDeDPi5)422s-#Fu@?F(<)KLmmXw$+D8)^{ +z8^C|yx?u4rK^fjfx<;JALa*SrIT?mHIVXO3yMIn#v(0r9OPvHmIl*PkD5eVCEaYS632YozvmUp{MMc?x;w&8ys9N3juw)#sr +z^|4RuI4+B}M0=dS*{5$`@I{t3?Qb=(4yC!Sf4|OwcoX4pbW3#Rtq7;km=#Y{B!5|@_8$_tJ?Tg)zx +z+PgaMP9ov&-e+L?cAlr?_)6#j?RFKe#JQJUDU@rPGn@A3X5QvtxWfEFzAIV|t6I2D +zG3(37e~%r{ktF#|2FvR^Y2GLWuY_6*h_dM>t3J +z4Ykuh`UQryhc(3aof76DoU*y<9@Xs*rtotjh&>PKGD0A9zySOyH;;R9ujIw8xFGVu +zeF5@KKB+ra4#GrGXBpA15N7y>l`}V`@SwM;^W#H`+VR9CAfG2jt9x$Tq3yDGTGoPh&m(Xn@>;WXi7A#U`fyUnp5T)~}!gBxtl +zmyTh}v6)NtX#e@k| +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 +z=vwBB`TK^$7is- +zY$z{o6pvrSyGoH9#RnEm`_=NZ?@dfv9Q|EHnHr`ajjR`DMJ2vHnrKg$eLekJsIA`J +z)R;n4uXe&9Js70p!wEX3H0=i2<-_0|-v<|AJ#CTam{5Zs>*eiH|dfY +zTX+;kMI@3)gmk~vID1#WgiIqc3PI0Pt2$lV1Wq6*~B}Sj%@P6p?RoWS@ +z#Mv#aLV;-l?=4*?+}PW613dBPUx+IHafCh?1GlUH$)eTu2z9oTa7GXORW? +zo`w|qETh10vycPmb8~SI)hZ`ce?u!dN1A8MVEk76wiG$4=b>3bc0lfVf2ly`9cuuP +zjqBR2tzS8cZHecx^u7?Cc66b1Ct^}$YsEE*9Ed+C00G?-HGRBo#>MsXrR-!X)_?oX?+7A`+& +zQ!g{2v@Ls{4E; +zU=*zn-4~kZr(In!fut&N?x0pwPM6uQsmRpe~|EOGs7w*Cxz+9&#d-YcogjefZ< +z#ktE?9^qaynD_1CsxR=I2AES2opq;LK}FP)(jjli#joD$4sy`&c=ZtV>~D|#>NDY# +z!X+T!xC5kYa9ReuA^k7(P=O>42jr}6f4Tqkr5QdI*hahwm~boJ=r9vbb2>c(4=98v +zfE#ZzaA*>*ZiX_dUdb95{UW=fI1^56m`P6w)|d3WuEOC{8>q-MaUE>UeDWdJZOCTk +z)kTrVIx%Ho*>s=<%#oWU+G2lQOw3mq&Kv1O$OpDSjyHzCcBnQW^H{X(y*Wc3X!b%k +zRgtf*CJukwLZw3>P)!XQp1u5+YKD(?nEvQw#e@LRuK%#bnorD1j@N1nCOJBow;ISfgEXL8Bg(BzHvfos%cLtMyI~oZ7y~I-LD|}jyU9>u;bivIg|QB8%(b>*QQh^2 +zZJGL17|^k)JMpIIU*__g>3C{htp5vL3T|;q6?dDseaPc8fP~7qKjthwD;LgjS9AF8 +z+jSU-*~oTF{M?*X`Nqv^(B9tuS$p|&-Eu$;rlU*qx)HKemUJfb+yu+4=&U~ +z0JWqocOYyiT9@50IBq9o)*s+Rd6jWNT=&mCvSYc1iwO#Mb|QDz*J`h_$4(Vi!gkL5 +z>Yk0=tZqG585jB$36BD5ePEqXT*Dqd&&J*~YB9U}kMX(5Q*C!a=D<<3x$w`B*NA?t +z%mwhOmV}%Y@w6*f&B(iFQdXD6@jWa_fmC(ru~Ry1Gl?8ht@|w>%F)oyT9-;3X-eZ% +z1@#~OnbG2YWTABEn@$N~_bBPjA%zlNDLzyT6I?g)SHuanvm|v?&(7qG4LRsh7BAKaVf2Vm&^SoqZ20=4GXni|Thm@v;<*$p- +z0|Vq;_Komjv~)fzGA|^o@QvPFdI)>`%UvL-V~;OHh!6YE<^9L77WnlZHq_yW^6mKU +zdi>|7qODo@yJVC!;Eo>Yh%fb|BXi&Y^e>NvbDDGff_cve_hV>tc!@8cV +z%!M(`#}cYLw)mA#&g(t@G+s9DxJB$+As7u@W53UBBdUk+T&;Lci#`TO8rR(a&jl}4 +zwU}Hi|C-johf=6m8kNj5W|`UKE4jpz@P0p&vw1iV4n)`ESUGRnsb)cT(Lgo~6v;0t +zF|asn+&|U%`=?B>5a{r8uH__i>O)1WKis!kaR*!Q3Q{^Hgd^EGg`$YRpTgL67l%Vj +zSfS|$;8u|~of^*&Vy1t_(LB*5U9fhjjVM?h!L9ea1G&B_P=S~#|_ZSC-8;2`R4 +zMhSgmP-RV!xd;uf(_B++W*02R-EMiLK0x=n3Mfyvnwa(Pzc{?|WbfDRv5G@(i;a;p +z64db@gF^UDU;63FOQ&|}Kwqg(m!rBEv3Tw;GpZ?uO}#TD5#kxR1L#oSLDi!b!{dwZ +z`2D4q)%Be3sp4OkvqU$g)_GJb?3yZ`Rq?;~F_1^1E(Hina$MP_AJYGDdIoZuG$Wr$ +z|K<;A0LvWn6nPz$Ca95wx!haq2V;mSvZJ5gM-R{E6?_=dA3~dcC@v}b3ImgdZ6=wI +z%OD~T0%eOKNq;Hw={{ly&v%YUyT~W5dOV +z`BW%9WAnfA^d3R~oGaj468u0wetjicqc4?*bJh{>2sUp438TFIJ27Hd`->UY6!t`g +znoWtHC50b7gPtAL!NW|X|JAX)slCO;wX28Vq5Rh93PN@cl*RZKC@c)4E#D5fVv13Y +zR~KGl3f;Q{;Qvi&3q_(CZ%|oA(cQ-|*M}Yqt;eLk_q{9)NAo_d@z}NT*^rKD)zPGD +z;*3L8IvUK`uHoLc3eF#z2QJh4d5nbWxS8VpvTUAO?d$UmRQ +zH(n9mb&TZ1is@VOM1D +zr#uz17gb=Z+}ZYeJ5&aoSqQhvnS^Z0>2W99d9V+NyT3oS~0EuFwsUf_9WuTY<8@mzn?Aniu@ +zH8y;YNhn_A{^PDaQSBF5QhceGMEv4k>2j(CezYC9@EDaE@-^bNiBp1s*;JxyW?Ja5 +zir$#+Tho(2ded(noxeyB+bbHyd>M{tj8^klZfm*0I3P~hFRjA3zr&_;YJc~ms1En< +zpId#h)cQ`pJ0L=jIx+Qb?{!hF$Us?#kjh!zw?-5q`BHqd1|;fJj->#BVMSu;I#0=r +zEUG039=3Nuj7Zg_)eb?`kv&i(j(s8>s +zE699-rF^8Ngyz8;&n}JmU%O#^CK>{Qz>^fM5{rD2zy-v?7C<9}UX8H%i2QOpqRU_+ +zAWSW2;JdK`DT`ihoKUZfEey90KOuGk_9$w+;0|*%rEN^@M`Vzy3;Ji5V{WSxV%*|H +z)Am3yaT!hAT|dU7{9hrn|8;8Gf1O(K8TBTnlO>aZWrrv3zo3y8m=~Y-aPG&JX&bSx +zV`q#!WU8YZ^KNS0`gu>tS4aE=S5L#?>j$*Kh@;dYieRB>n)?yYf};Ykm$%bCPAA+L +zxoFyybzIk#DcbW*@9T^>pH2wmyjjJ$l8&wu_LX+(vo>Ml{3c2qCkjgkHjb#$I^QAJTn# +zr8fe^@UgRmSvZXj#U5@pXR?H|<36Q# +z9>p1Bvej*G-4c1XA31v?(2Y3~mAVN=wK}H)N|Mwnj=Q2wvr?GsK=wN4Yia606Kd@? +z2>A*I6K|4=iddflI!RR;%|%F;d>=UUnci2B=*%`98ve*Hl(%pdzV)6)KgiaSqN70X>^J$-g5FGX7El^pr3sRv8gvk8EE|Z}|9Y&6#Rp0?nK$2k +z?Q?M=b=2*b;#LR!McYU!66#suk(9LgH~NdtYz +zvDZ?Dg*765h1LbcmqccpdRNRoxP3X)qw=q2`THBhQ3)#(YxZaSR=&$n*V~GojYZ%H +zip4`~prll2GY1kJ7!Xo6VrE-2mL=f4q~+QMh=H)|ldUrk%n-n-aQ6IDPsGUXYRY@_ +z4`Xzz6;2PovMy!M1tEGctRh}_KS^9Y9|-rX$^iy2#~afjzXg!z30PS9F_#vd#|>pM +z`bI_Do6@MU3klXwcL_wR;DDNU5bl2Tc7TmnZ2-As6SsQ=Kj +z`oonkdCNN3KnNESJlAHF-@o&#V&B)Bka_z6<(~Z|r;f{U1ujK&cq~|2NmY9B*bgFR +zvuAH$hrcF2yQe&pQTb@vb@kF@znn)#E@^rcb(2E$c;!7(YHF93RhOxO~kbS{n +zgJmXZ2*aR8Fr3QR0EzV{>{?7Ix3zFz&-0{vz=@hLX)L +z@Hop1y-|BAc6)2#1kv8YWC-3-v2m9(JrFzb()h{s@|URvHdSlRYJ|zuy?X&$sq2w1 +zegAX5Qq13Z2;kHmS|xG9$mw8HZB~%@SjVB9h{|n0o)&Cr8O#!ZPP;Y>Z)hcb+-7P8 +zd7iKhJ@UwY*nsuPf_hNU)>;lmQPpKsJ|6616tA+DtOi8= +zP&}8Kdu7=-T}pqe4=F~Cjvp4CrT2y6qnNG6N6c&f!ZX}fH?t}R?d5*Ge1v*oQH2Cd}+MHf(Q+6xI$c3EA +zXcmw}@SO{dfKJ{m54o{x9Ctu*G{657#4qzqvZv{fVF_W%DIIM_V9(~rajzonP8}9( +za`f!&gm3x0Z+y?|NFTVa-NC|58xatVQ@uAm8UV`KOg>U6yp$!L17naMenaI~+Op** +z@5)yanJSy)%V2eqUnNRghSg*6}k +zF_+6+)TQ5I5Ce22LzBGAxv$LI#ng6C+(XX{eRL{GqnW7QYk%uAbzbMC%CeFW0uiJK +z{7Z|~z?y^^?-UEb`VvgODLraydNjmVA`yGR1-&c1M+c&qh)vX}oRq`3g9k2^zsZ#V +zB@?_D^W5i4R<`_o`dc1-M8ifN{+1YZ%8q)z%MIvlU!-cq5-?Nt>vh6BxTn_Tw)2amk``D|Xt0AVU +z2%Fm?h6qB=nEH`!?2=UKXc7t(Lq*ly?ziZDl>TiJq`{BKYW*9MsUiL$UIvVcYp&+y +zBv5o|KVd|JN^5h%AEj;$?R>T+$Pr;igz^3mERw>lgy#$PTGGqOR*Ft^Xh5=KIz%cX>TVy~;bL5pMB>q?0?#!v-M*z# +z`!zFH6%>X{ZO)s#h8(({kg2Hqw6#z4eBBe5JRdPx7b?L>SL2J`leZAhb57<)scTX% +zhS4wBT{<&f*RSSYJZb-X+SG}f+H`wK1Xb_zi~74p;qNua%5zM_c!7 +zZ+%@f$6T@$NInR>F5Cwc$vZyq)e^U;{BQs1vy`z%)P}afn*~r{*?bg^y!92#4EOmr +z|NQ3y+OkVZDJmuiq*Pj*W{_pqMO_DSl!~BQ(l%T8`{O%GC*JOb$hb$T9aQU=8(?G! +z`8eC7;XcbT%eE+nz@^p@bE_GHG-2|0-O_!Lgj+K|Wn3r1j9-3LRWrym_tQp=PGNRM +zoO#*rI{sr!l_Q)SM88+?&dyy +zf|f2GA2PM|tLrChyd^_X1(rY~)5vch!3esw#Dy+SJJFPJIN%IUl +z_N2Yn-cXS@eYM*hoIQKTTpF3{WntVSBdy8KMxowCFmX~Cpl^3iR&48AyDX_Ro_dpP +z5S(%%w384q(BG)nmkzrxrV1#>>_enx*4<;Fho)mhwEinPxKi@frV(e+TV8%E`lNQm +z^(Lv9Z{^PGH{Sh>5&joq$+@c{1NVfV$v)�#*ZkjLo#gBtT%)+_#6X3;P`Jvfn!Q?nvwHPWzmQnFo%pKhxu~ +zzV#f&{?jCU_Ne22=lxDH=P?faDwWDkG0}2;->q-%nEJ(l6|$H4&%gq6B03(V-fUEX +z9!gQ2`EAt%WY#4k>~G9q8ox8WM3-m}WxvnT-rGmo0{BR5y?$j0Qz0*~uR-hoUJ4(Hr +z^04(-+=`Ue^HT<}`Jj;rsP&PrrZta0Pq@||H{0~QdY>-{_klho%GUTUaV=2W#*V%Z +zKzZUWj>J<^-w6IgzU_JR@!7YNEe9T?qC(!@TWReb&xwr{l-b>Ln@F9V0vurToY8~) +zV#gw|%2QNsgiM5-H!DjPe_3$aTS_cvQgkl%-3v*it%e(d=&D1wyIPXA9v5p!5!H># +zQGwBX(Kx&cmf%wP1(iyTAD(mJq%y%~AwbWO*}$5w2%Nz2Zl~bR<&*0yD~vNVgpAT- +z8h{1_WHQi$g3S`m=Hk4%ILatdnsZ&_`3m>f2GGKg?6r7N$>dpcs$(K=$ZNu-HX-Mi +zyV?68fg!ZI;Na)HSrjY|*e80JYRX(yn{Bp2{1<^VOANL!{;r^O%&eza6;#7`sr*e8 +z6Oi)RzwXgDtK?=3V?2Dh+7~JX;Xdk7FL%}pCSNU8Io&sZO_%O!9act7Q?VgjbqeGHtQH4Yju*;OU +zlhKu0KXHy6Y^k3&(wu#Pw^oam_baJEpfl7Qn{w~j?T=_JFT_9Hkl!)Je +z*i6;3A_uEskigGU;W~4?r3!4}VPEhkac9w1}iY7K=ZQ+nYUKS +zeGy4~ln1-dHOl^($8CCp)ZveVxdFW{Btt*o(9&2#xhIzFkyBmh)m +z{Wsle=~TCc!>4SCci1FpH1t<&Vp$qB%)?m6d-5(L^EgDX82hViVt?EkZ-(7)-nM1p +z_qlz7flFcWQ=FN=^_M)i|x?@^nu9BGFVtn+OQ%ljt +z_vI?fzxG^<0=T^H;KD{6XI#M*oLWjKPv{6U!5@gtTcBH*RDqY53>Mp +z*%ltwkTMQfmu5cvwZM>~>WP}@MceIZ^i?HZjK{@n6Uo^fV*j(Q$r7UW9 +zLi;e55Dc3?DWzPJch;lo)>Hxkl76Cn*W{}?2ll% +zm=Dmb&<{j^;BcdRJeWU}0;Xs>6)SQ6K6!9dwoM2|C*m{k+V> +z@2yv#bDNwh*JzC-O&*8-2Vz9duIxLH?-6aN1R`2LlYZZpSzGsmKyFx$Ynn~)CzpHe +zF*BFk07_ccy?!NYkm&H|hpI=II-Q#@IQm}0fK|GjjP<{DI@!wrr%#>Lmvr%89M#b+ +zIR!vyfLzE8vA|oUfe4-Ov7xpLGY}4W>n6p7wZ`hgQjw^Wl=BG3ms|B+cS+J$GZfaS +zcfa9gx5hwXIvm4G_*cfSL^!tGWgpv;dpqo0V|O{qK#}qwBY)+%^CWTA`I8Vopc1&P+ZOP +zQ>M>nHNL$^gI-;!?Mg0k4Sx~fwno*Zg+EsD$#8^{yBHFtk$c*G>ixajv(rym(K6|7DF=Lfv#3Bw}s +z>(jC|FP6z$-bpK}%*2gJL;;IezuAAoAeDQ8Old=Q<>AB|y}Q96&GkR>KT>u3B>^ +za^=ox-TCo%*=z)Iq%Sg%}9n%ZWX;pmK|%1yKGv@i0P{LIU}X4dg67mh_a##>XV7yty-XU>3S8D +zu4rtUXsB>GPhSABtFfe=W+FB&IaI+lUno`PB=L%bc{5h;OQy&*W7wUOD0%Iv;w3a= +zr7%1NR7+%^MxzWr>ocoRwzz#s4>^Fi=?f2I$AoF6vefV75G5mY$3kk8WyK8o5xQf5JstpA +z-=k!U>@E8{!VjL1zU8S5Q39}b){H%z88Uz>EwZ&G8gVA1b6)p +zjk+^r?yJcWnX3MMpkrccp$qbZe|X_8I4bIjY^8_OLU*R@X^$6#sbEnp&mS#kFP!FD +zT2*n=)bquFWmCTdq)gVs&$Xfo=Q$ +zHo!mA75OYKN;LLsUq0JQxKmsbm2-Aztm%^F2Pa9H5;^Ck2+)_Pf7ZFSBMpV120cDg +ze_j!6$GbC%o^JfUFq3V_tV&Qj*MCe|=MiPQs_)31sd|0a!Uv=#dtnW`k#EL;z!N!z +z1)Zk|hC0BCwvC`^NoT=xX%Wk&fbR1mz)5v;7O|aW#CNQQb}&d&8gjtS|Aj&u`}gB7 +z@DUAae{L=fytWdI9o+>p%_wL5_s8K(%y$g%0Hvct6Yg;OAzGl%*nfXqpH-wUY3Cmt +za_1V2>Pm6%|C;LNm-|z|YjEy;%h62|$=&))+Azp&c$MvlMn4aUMGZXQxMAkAU!La{ +z3SgtJwQdA-ChVv%IUp=;*WFOrb`{uktjp^o-{c)2Y8X5-?HrORgw+@JbiMmx#Oxmv +z>oNP_1T&~3bGKcTI9mNt{#_^QvoHS&d*tV!^_H;sUJD7Cg(z4>GDJJZw}-Jl#JRoK +zVJ-iu-;3ubhrV?jHSH1@lh3=eUt{(}<0X$M?Te9b20gk7syGu`1|;r&W_*lp2xbn) +z13=jBC2gM2gY{5bnt-we0oG5gm~EM0wiD;*E4+uu#sMvuoZvs_!I`sCqod3#oO +zW@4~^l9mGmYBw;ZYL2a(pe@(kS<5ijJS=#@vl)u2E2?+NhN4@hMgvplO>>?pAM~1y +zLNneYg2*;#Rt&LL#1NFq6A$I*yX7{P_YEA(DPgUi#Rka6;k +z*gna*m87#%y6hl6GAt6$S4D4gxuA&QB%V(QHrNuQLI1Ku_4b<>+Ks%>p6||fNqh*~ +z8TB*ec7Nb>=fXD23c;m5pjj>(0{}&xhx|w67CmQBY6?`iK1;fl}zDb@kJCHwnwAl4r;=M5|94bu=-7G?6clU2Zhm}Mc*0%cFFiXNt9NI1^|vj +z&Ama%n|g##-A6K!29saDCGGd}2K24Rd+**4a~Ntnt@eWO-~q1y_9#|$Z2#w>du2lc +z@4w*ACa>>2;T~1xYczK_L6{j=JKMz=$g$0q`qontnrPTQ+&ibLhPCy`%=dG7^91k~ +zj1C|jsd!6MU-JoRb0W9SW(@;BlxndS>QNVK-I}L!!7Bjpg7#Ig1G1`>W8+lG2SjZ% +zEVJ$K_Nk9E>^El=iTp%#)Ti?*&4ZEa<&J@GrnH(5$kGsqj)~~SSC8gO13InJ<8O(< +zMn2y(C~~0KI7yRs1d>0Hc4e8++060oUNq39srEWS*-SOe3Fsxn!kt_(5jy +zxaqFEw_BW1^`(yc0V1=@Nh77-^}T*3vQa1w_FFY_*P)H*x7Qg4mj#4UQ+FH;$pywQ +z6YiI*qIo^HxoP_}BbZW;b8)@Lx5*xie6p +zCjwPFT-V*U^BE}T+*}H@sQ-GHfCjxCD0FhLzZ9Iov*cf_YL$cpvU%1$ApaL}0up($ +ziA`)lqS;c-fH>}7A^WC&J}@8PPII!^hE~R#g+<7JNZF&ow{F_n*6AW-889Mc%RuTb +z0+jauit)$f12${cxd@=eM=&Z}ru<(J6u118ZEN4cXS{()&MwL~iBI^oWNJKxN0BD9 +zmj?}LW4?cehtC27B3i?b)AU);Wo(QlV!L=?M+qC=p6a%Z8mK^i +zBM^lCb^myvB8ri+S-=&Ix)f=yqq01#n*&tdXLQQQ^f|sug#3&lB^r*J)Jclrx3qw? +z;HKwJU|*Tc;Z=fe4gjf?v-x?RTOgyReUbV#IZE0Mco}pq7jLU0xza1^`wjtr#jtB4 +zu5T7Sm#1X5B!TbKu+HzBCF|IbT%Tb^8=)^A +zH&m=3VNb85A~aA(Ig4-H_V%U#G|@?@k!kr5aFz3_*vP&TH!U7+o}Iuwa8Zj=WZRaR +zt4f@AXRx<)JvQj=mY1Ak$Ngkc-Dbu3v^MNb8hcSzOTC=jxrN$w|A0#AMc-q*lLNE) +z-PdakutUeqxqR3Xs{XCz>a*#eZ|ZnC@@=Kx;*Hx*v3k7Qj4gTXmXoJKy4b(-11>t0IZS%!Nt&wv_t7`^ +zU!N^jwM?RWQvs9H;!M9cTEPMpxDy(t{dXRs?;&&i0ElCW{a^lyATQ~gzTMeUj6eOG +z#hhCr2Rl_%vTf-(cVL<+=EPMbn#~dwe+HZs0j4P+gR?Y&sM7;YLz~8Mvpv@G8=w`9=9t8 +zrT1K#ZLARb^tU5Dgru)P7yyn}zXXv| +zbKP@6AknA43Q_|U5_JByuKRK!^=&OWIeIe~?P?Fwv2Q18Sthh&s0yEwym3%0)^(ys +zG-t#BfrWpb%aIy&TVx`uocPq1Dvv(Nyq*Ia>atzW4Xve^vK`ked^Uo0(OdYAmH%_m +z`OU`O?lXv;7ASZoRE +zc4cEgLwpJWT+>T8B>1J6a=5(`3sFU8ldptBkegDUY%9ESIdswTk^MYI$#kLhO>*HS +zV%(|lXdl8gJ%^V5j`hd8$0X}+Uf(An^L*%R7eiCbdWjvB&zpjn$@`Ep?JiC7gkA%I!8WD_IjTkgLB>8P3^*&9%l7 +zE4M)935sptQ%WGDgk7_=f>2JWN_+Kx4A26Y#Bwqo7@Jh2(JIZItV8-4)Sq4Nw7ZWE +z#Dj(lzzLN`oldzOLu$}42mzNe{$+0;2^9UnIt8*FNJw4*lyLj8HbByZfv#v0^mCO+ +zFLc&sJp#3)Qs^DZgLEP9@4)aZEX)fcmYvjoHv4mEevA&EEVM*+G=(@Em3&?9s9w(hbn!i)@=yp4sUY#I( +zO@eX43b;OxJ>lc8L2b>nkXTNo2B&V*|BoGZ0cy`K6{(I}J1N=n^_HDO@BfEidRG3r +zK$c%!@8oC?u~hD?7#&)v(7M@ArlC|$)3K2Ved>Xnt{eS+Phy8!HDlNn@m02m|EX&r +z|Dk-jcF4(nFJ0ty9r#QjUj(j6qh?x5vSN~J>HO7)HxjW>XflJGEq=m|( +zG^$%69kZC69zb5ec*7KE+3UNqZ}jhRP5XhhxDL3&YZ=H1{`MiU;JJwA^j~UzLBEm0 +zpxcFjx~r`bwK+hem!&q*_5a8Af(ozUmaSaRmu?W=B~KM)NY$sXXIi}b`_4sbg_H>A +zd-4ZqV%y+4!SYedRyymGZ=FMqzb0?_*%#y8#Uj{vCApx!y$){UY<=fx`lOSki)24# +zwDQCE=9H|amOQ1k=iU)FzeBIQr91ZiRhZU^_$iYkG;l-0pyH`t;xo`F+e1>s;DS5< +z=oCA{pbF4;|Zzllzv(+J5q@ +z`+1tSzq~u0DZRHbM!F^%qpxy8V#uyVD^oyi?qkMLVNKJE1zj;?9*Bn{v7&(FX-2Gp +zy5G+k*-|O-SlDPt>~wB()U5emjnjL#t^wEh +zpxo9Q_>febp)v{J@Z$Oa12_ZO)J~QzH4!R059L@nn))idm8)rLgwATk@~*Fb`Flum*1| +zzv_%)sX|sxYS^3n=-(Tcb3Ew8t!J)M&(SJx$+OC*fCh75?9p*`fErlkG%SHxs2zo1 +z+ZG;uM*+7~_C>-8^;Ek8*vMmmCW}P8&kK2}b|M7?9pKC9xBFDqmaaBoj-Ldsw77)M +z+DteN{F9SLPd=e#7%_W@C@gz4wq{f$%&vMRZQFetW$lNZ>5B&%Ra+x+ZRsk{TKIML +zp2)qU+%vx=EdeEptyH;q!UdO&^YQ!*p?-hG7P>2;)>QZ-kbU1&QK +z|JxgSw +zx*aWkms*EMEEYddIH`JARlW8; +zm`5CwKt@)K#ul2@OXX~4Mz4PLitOr3CW$wE|Eiye(YTC3|3h=9!54e@S-GA3fnyl5 +zVPIh?G)uS;yXgTsmUj&W-zLr%n?Y&-<_TO85FvUqU2HyFzyZ5UGrvvu*6ghT?)|k*BF_5*!j35u{}yLwv#lWhiGsH%RzP?=7)ck@3OJ8#{h~6 +zU1-31g8VxCMczX>r1MhsfP&-_fuvjJa5^Kx?rIWR!Sb*w^OplF2cnb&#NNWB6Ltv8 +z`a!vno?T}&oPI3IVf@tF8|~0}%ej_Q{3O+iW5hCrqmRY}d-iBAZovh2nv+1B!ArgLRm`HP$LedyMVcR%a6Da!&pZp{dk +zQ++EleM9#)J_gmD4bb1)#Zeh^JoBQUlcUn+Z9=5jQrv0%%6Z6&pyQIB8fH|fs#$mP +zA@6ja`KD&?SAX>;wL@(4+acS2A^&!cot#Uj>jPE0+P1;H?n%cd?D$D&TLPW=K-$WG +zJ^$2doUmzS+!6^_buOv)IjaA0CcWq;I+Z7qQ~&XimS66*#P`71QwoktCHdg|xO=CL +zcQXt_d~5e@zZV#A&;0nOz_I;Iji|+bWq_>$`w=%*0r~LgyY+vMZ~5I_1!@&Y6^^a` +zSR;69dTV;*B$hV?96)Z1D@yxJ~I> +zT-x#0+?>kX59vwY7-%bFu>+x+?q^s6SbG4Tq_Cn$352szI*J*8jEr;PESGBY;JA=c4&VHq05+YY_K&O63pmnv2xyA-4lje(6D3 +zUufySIGn+KKfYcr`?rAso+ee%n6cq|z`AP>$VE0iEtV%_R*e|d+OKXpxy>ui`<{24 +zoo3l9(r&u>&0^qZ9eyybw%9-S$k5G0mqW#5KVi|T<5;hiBVYbr^?_YG@lVl@t{fib +zxW?Lh3r-o2zs*U{b&s_6aUQK$*tppv@p6~sdKYI~&$yNR*HcqrC!-I=>A!w#^r~mx +z<>~PgO++}0ZGP)g_mJIRbX3Ob=PBplmS@(U4$ajzp*o*Vhm6JUZ24I*@;m>c_NhIo +z?o-KwJ8w1nh7v_#|739K0eb{}AUovZCy%A>75_&zTs-$yl{9A+8zz-EdqY`(eht=pr;!FgCspI>8B{bYJFSsgB%pb0MxXs^o?Tgg{h?_7Zgob*;fI}D(~BZR +z7kEuYxvv*rkDD-N&81>eg!7419jKYhgYHIYzqX0pg%`aXC+`_BMOGr(hU|@Adng!p +zQM7<9*@hNh+i7H|_Djghl-%F7DIup%Kh+*L^9u?3gP@9{c6bQQLtS0B_%&K#+*?8W +z9Z5?24s-@Ygl3*3xIH=DExuX^RK}QbdD`{j+D?8FJCU2mk9rncC@Tqq8K^x+ygK^z +zinr;jkgro{poDK9OnojdM0B!l;H{Qg*_l|kBG6vASr)L%1G{`EVhM^S%A=nP1MaRp +z*EITh)E+|`iNcpYvgWB#8KjVatH%Hq3NtAbM*xAjirw=(V3&{ot*$b8f6^C-G=D?6 +zg}=w|hIcdhhZ5js4*~VFxn}6uj|mTxDItdG?br(C?k&C5R#P5`4aHat?$mBCa5P~@ +zp~=d(`Y|$3?d>na9E2oDh$6lk^p}{;Rr772Zpz$8k9cESH3OUU9FMN&h{m?I+XF>M +z%UQJYa2aQi3chr+HC=6ECxOYJzXsDHL|!^KNHmr{Qu;E3+`~>vu?MR`lQUhP{bO?L +zC$0g?)PB1{xziYCK~&v2>%3p~#7yxqfjTbYKs6;5R=Bq5}*#PAY5>CnCl6}Q+Lk;j>=;GNIsmmp7$@w3V~3?KoMy~#B-rI +zh0aHuT!(?(O@MRk3G17k@K>yP2+RteV6sCxx`2#|VnO6io7oFx +zXk1Do^)*9gPgos!q9sIRK)>+^Xa*NlfplwOIt}?8?8qwSzXmp|SbafVw%>5#;dc3Z +zfeqfDeF3Jo!2=-bY86X?sSe!I8Uj$H0Ok7vsEfj&jm*~sH-&UeC?>C*+dn&`&fCQvDFvpo8CPk%>y +z_wEs*d==%P`cpl-E?UKPmLB4Ss?loh_AvVhN0|Ssd^Nc83jkVt26n3G7PC@D1%*4A +z^apEjA(qL%NPyJaa`;;#22ZH{D?`+BMM#`gfQ60*Zj@cT_04WFb^d1G&aaBe<#IDI +zxf^`X>+M_)tGgj5|JRz*7yV>sU=5@LSZ$;pY_y^JvVn`N2+GRea@Xw +z9o=W59R;}9PKA0)*C$t7Ex`)FoUC6OuQ%xsgu%T>-2BbJD_oBGJENc~XkpA$Y9u>} +zwD6lIsr}9`ZLdtmUld)qdxz)|N%gtc?w*d^56IBw#MB4#{Mt*a$ak&r;$7;0~djDGOMH%p+SLalw5bFEbkzFz&hxBcX_IAjHH +zz8pNZo#vCAes|#PRoLtX+wv2ri)?TPZ(u5c!ih6C+s-#1*n73SSwe7UkEH5`Uk_PL +z@J)$0OvFc|A^0gb=S=7TT%he2q`7NNII&#n_ihHLu!T&ZW>Q&fbrZQ0UA8qpxOW_Y +z5P(b2AB`KEnHFk~ac5^x)Z39=%p=s=%Mff +zKte&hN8P{~W?P-|fv8VR5rF3s$D?p^rBc}pxu1FaeBflL{-1y8XaDj`{Dmv$Up;>L +z$IIV0#oOM^y`pseX8vjsQcU8Oa=<@0b5WQd*W>RO?9AQzRC{N=_REv!evMDdY4RGp +zv;2j!hQ8w?tXfst9~Y|AwdQ5!L5RThs{(mcdT+-fBBMJ=q?+(2-~yDnk_9jCV09wg +z2M$kx+Dxu0SKE`u`b;tgxxqTJ9zm}CiE7{DdSZb=2x%cR5XXM62{m}kTx_15KHp8t +zLn9-F90QOU4K*!P^hMtm3ncUrA397t0f8+4T?SRWmQQY@hxOh`JJR>JH7+f?yfJ3q +z!RR}Lho4)Hz>R9z;nJ~6C9T;jDF#aLd$WQYGNg3LI)P&5M-dxbEx$v#V}fToes)*Q +z%rxx@tUjTj$Ta{#V#5`2%}7tO9PLMlJk6T5@Co78C{5b%{M^YcHN__$lJ?L)Z1!a{ +zz|*RCv-T@b$BtjJMd22${1aOIw#gt;9w}SKw~`?#@1~CgxNS~Scap3eDjc+tj@$WO +z8bv3x^$JIt&iKMU_Cwu11nXf(N=S!A6P-y-VTJ7#n4+Gl=D3{>b}U!46O5KSgQs*P +zSv0Hc9UjL#^-I~?IICrpBU>ww`BVi?HlAsj>JPd#_{dwXOtmj)^itVoIz=p5n#W3I +z7wOgFq4%$mE7jjKuw`tjK1?PhQN@rPn52QWC_I_|%9`Q}G7Ys7Wrp-1TJa)(XqQSu +zCL#^LXvHfHiyKK{Q-8VqM9}rMtVwdOKOjJ +zTovWrvpoVc?f8O;esYHYNymai4l;AP?t$#L7H&iC8x*%D4mGeytYxbCqSauMY`Z3F +zs_#F~8d5U%5ObiA-k2}Qn;I{<9LhNghdt*+=R1teiadmC4Z^>}yFr6|WPjpjI#zZx +zBDh1}l!aN9)&*}QGHNQvDwI6F_Zf|gNq2dUZy>lWB{#e-e{L~(HJ{Ssmv8F#*v+Cr +zVOonO=h$=kcfx|>S`%{!nJLY^1nbNgAS_1IhasgRW)6WOxkh;`uzhEpthl#8eU+2a +zb@uhzc|*5tt@ix)7Ow{;lc)34JoLbWUtv>b*9( +zZ-N}6ijz^R1-xl{5>PSnQh>z-%933Zr=B6q;i&dEj(y4_F#D;rh3|1$?Q0gxZ_a85@OXgNa +zd8pCMnO=0*q^Qt*<3Ft#uh|*n`741T(*E$;u~4=eM!MFo1&50j#zsOxT=Vu3^>_g) +zWqVCTEl)!YNwF7upw0^(3}!UetcM +zsr2c1)=0pknVkV2F7nNqr#>EMo_FB@Wx^pxsiz1_v%8YeAF2dgfekY{xFD! +zxWO%x&aR*e{cMg0s}xNMyGEU9AB`5GNV4H2VX*XG*!UCQd9{?&9i>zY**8V60SHX4 +zYwB)N*VnUYk^I4BiGA7qB}xALA7BhOoE?GsY7%pu_~biV1fsglbAPzrbP6euJ_8H# +zVy;&Mhm|wKCR`wvFxid`Deqqr-Nw~hAH513Y6YqwP!1NLg(irP5H$lQllt4LZ{SvFCPMpcz{E8osFKri34R+h? +zYMwB#PxYV5aVQqOK3CEfJG)#H9!V{r&ZI7nB^8pr#obPXCfaG5<>pk)$nw@|n`))@ +zJ;GAQOkwLdEoD#~czxPbhnco~v!Yy<6oJ-t!kS4}%|4~e21T+vRZ`i~lxB80GQtz1 +zI~H0?&U7I(|OxXp6-afAkG~a+~3!S& +zr7JutCB!5}An{_3D$-N+U)C8}tB^`IZ}8daxI4!9&Lhe_T<70k?CB^_!aS5#&m6FY +z+4|NCGeDWB`xH;pvm>(-tSrzzU$NC;-Yw}W&HGK^i{c +zqVq>ya2sB;pQ3E$Q1&!#Tf^i<5-8u0HDLLd`=J8!+a-m{GuV6Q-W%8kIbr*|yYaHu +za)masWrjzN9LfAmnamtHDj5oPRvf+0QpSb<-R}SU2npii{|PsV@_`^RA+?C^B3Ih) +zOuwP-0G!*(Qj55LM`GYb=gp^X2)X;1Cm@nuQLVAQOLlxFP?mP!aM +z^M|I;ae>au-V*0=6I{~NYU$J)Nhu>7cv^qpX@?Ws#xq!ND%i#d<*4$Wk5OdUrnjem +zD?k0r#Y&QUN-fA6(__miM+ILd%7pU9=K0VX% +z<|rrA`G?s>U$OByu>BWOgN6%b!P-Z3*;8O^v#|ImGi1WvBp(U=dbebvB48FK+jlB# +zoV&Ty?`hZ{`8pEswE;Q#_9rN?3|1xRTr%5$dAB=nzUS)|EdF)^qphn}>DG-_Y2|e3 +z2RZiN0RexgYXUC8y)G0SiCI#|ncQ`8GjDgp+QJGwUV%lnu*R(5Tzf`r>{o| +z8aA@bmvbt(<>J8DH(*g_#b*V<1&9Mr)pKsM4w2?)ysU}i(gdgf)wuLO)mTXXMjw_m +zErAJ>5dYx}>}SZmoR-yPNm6^!7rtb*{_04|Qu=rj7-RK4yuBfY?S1&curaOZy~*5% +zn<=RS|9%x-X+K{@FvmG!0=!}A@#)biO@)mLxXJ3+Jd^0<;uI=t%$`jeO7Q06WF`qCK7LO;+X=sSa6 +zIxqli@d+J)g&nQE_~EpU|% +z7)RX7RFh`J3c{*0u;_6qZH(a?`hm>%LSX4Bk+`wIbxUYTZ>!W#G?b +z#Rbvgn5lpp8ZNoIhN#o4qHLwr1MV@aiQ5LarR~_M*X(TB@`OEC?*_)p+42o!ytp8V +zlInr8dGtas3#Tks2G~-~AJ#DQ4rx2tXkn_7LBJNqSN_ngW5U(S?!H3L^8LdvrF*Z@ +zKr$6YbMv)SC&HND>LB~n{%O}>cZ?N~x8OsJ{PnEcx%quFZR^=XU +zDas(Cv8dx-;JDI>Nv86L7JT*ol+Ghp31X+=Ee+Z$N0M$Zunhc~L@D}G +z`VAeJz)@N^>iI*o1o!WK)i0_PRvhsQKF1&Bo~sQ^3BBBP+QReIuqUj!ynCeJ#?2(h +zhTpUloleY=*ds}E)qh2dc_4MeZ>w_=SrK;*k8__uceucFmMwW*a6|Wr|SAm+miMOpbyzYDHuxHb&nR +zSI+PA|Id}x_3Wo}n{c9=omb6(FaWd`@`-TfjDFsSq~8tMuk%i%l6JRa{>N7JLwJ_%*VIf5 +zbW19fkuZrArz3g#&zeo2&H--VzbDyYc%QK2 +z0r0N?sS-mb;#i4&MQHEm0q#yJ6HwaH@sCu)cGFKEBexoS-)WXeGB|2)NAfl2lczNy +z7RkPQ@0mK$szN7J&c&iOw?EshUTW@Ho78s{sg{AKV{0oXK+I0xlqs2WUnQe}MM7 +z$@D`LhuztsK(7M8$HVu2nK7U5&tO8Bqo>GlP6W(8 +zWMe$)2WHBPEen!zB@q@Rndh|rb=iqqn6r6cin-k6FlS44$k+@KnkstHp4S|QzgwD& +z)T4X+3Bd6{eg2*6L~>74s-t&psAIvx6D7U=r9}&+cJ|)obx>ZLfV8=pxMM!X8SGFr +z`YTX8k8oAMoGLM7sLZZ?l6pFx*lt@Fwbj{>^GErftEwj){ar2A)?LC7;(n2y8oLPb +z0zZ`*roQ%OUg9xtPLNJhecOc^g7>L^sIw2_iBF;C3+`3{9++)OD%WZQ9eo_f5Byg6 +zOY+j1FAdJ0X&n#z(^=H>ccC5p@%YioJgdnM2T9y}`}^&;jmD>6{dlE@7zp5-Pp!sM +z0(q@-+Fni4AW~+E`jtfveGxP|Yp+bOT%(7^(OJ;Dafs&<1vV3ijj8LPh2{oVkfmkb%fcdLZgipJq!QJOXU +zaq$xXYZq&VT5?47o6Cdl&4)t0v&-gq1S~3S%ASzwbCVp`&8TkRLZ>(xn=~6wXdcer +z0hq<6xV)+S@~+0POI;h;xx?pRQ&!R=YEHXkqw^asZ^VXfbde{zi5wy9U#(TRF$eAS +znDhy2bj;eyK+=*GX$kD@3@2(r1D!pa<7M0gnOhZqAbm0KYr10UFDv(oyc&-_z4Z2X +zuc>+G{&WQ+JELgyQvM#h-?T==qvA~+Nu;JCxv6a8y;p$Kz%V2`rcxR*F +z2o4fpaTtgA_~_;px(Uvy)DcSe|D72DI6bY7H}K;te=^+`u3I_;owr~c`}E!ynbY)~ +z*VhIePj`#wtQco}jlH}}zlI=wgWs6>0F;J*fwUW7!oX0;stz +zaQ(W)c8pA8N|Rt8y7!O7|E&w#l4(BG*f0+6qKhB9>)U|5Ho4!@_hq-t +zEgi&rM@Y4@*&A-q7N<2d89Y#wrjK%0$4SMs^n&tJez;9~vpUULt_3E1w$`C!N8Vm?xK}867;U8@D#}=iTB4H?)2b4) +z4UD}nws%Q7v~=GzBxH(fe?QJE75%uCnITyjB^FI|jWiX`!Z_g=sfuZ@7ddk()jKS| +zd%K;2F>Xw~LELS1^=Yv+ABkON{`P~wI_Zl6K4ys!G`daif7nQIP!1(5lY-3#Y@DN~bJTnfsJgB(v +zC@+G-}8xHt;X5N@ggPUwg!PKh0%Qkl%o +zUoo#k$=l)e{XlfyhjdoubHC(fP7=p;?FO-{wFHr}ByKf_oOCUHd|TC$pR!+br`o;6Q)xfPfUIGk{F7In-CVicBv#0waIZ5oUe +z=M0_w&iSnPk+jw{HJUqjTw8BFsNi|5vIg{(w;iqAR^SgaMy +zUy*gT;cf8Fl?KRgUbVfI^JW}xTB4crfGV>g(vT`6_Hg$1x0nf9=r{b@Gx$7?*C5FS +z3;x7DY(u~(1s2FyJ}ZbGWy#Q*}e;=ci}+Cn`8UqGg4VYZM(W@9F% +z2LPq!Q#8ygx}z#9MpT68iIJ4@fYDshC-9;o@MMV{ZN(KsRQg{Xet!7@O3ZQsr%FdW +zr2LCOykNmHmwvSM&DiUHKKPCcMDSBA_UT(;#txE$38;<~KasIAwc4cLRc6e4H49 +za~sZ8tL%$YGxs7IwSWcPT_|v1Q4YgWE+#|js^IgWZztbpnfGIJq{=}7m0~ezi-O#DQmE;v)Ge3qfH>B&G-~s +zxIa2Bzmn@L`;s09-B`;WE(1nf9;Y~{V-+7b90y%r@!oExVCzR#NztvSTfVt2d^g1{Qb +zT=Fi#K5Bg1HyI;G(-Y6_I-43czD>B&Vsaw)dn?{Q#NmE7{{A-ov!d}D{}+_i$DP?3 +zA+;8i00sH`!bLZbTH?S`rep03TS|x@D03dTgFMX)KRhYTGID?{*%uX+Ww@4`c--w3 +z1egleoa7E3|VYAbnsFBQ!z7@yhyRD{ATYXyo +zpT?8q?icK)DOIL~%hUXBq)X=PBX&Cd8mPagp +zpcu!zOB@4UzeOyHC>vGW5cXt#57jrG6`n&QN4=JhI{%U(+X%gn@A2`V59h>4CS2doP)rEgE_Af$ZOwz>h4Vvgvbo6uNzPqhc +z1B2rJs4SYS+X$8>^&T&uDww?UA)0O0Uf-As_$FskRmcE8tOE_TF7PxyJQ7jclMUuQ +z-X8~nL5+Q)0nim`D5&2t$7^=F4=~w_-!(6Ki+8}^><}%oB3X%Vh;GJrufjoNYU|vL +zr|JKP2fz%zw#tToU%8yE!Sqti^snhE^a`7->MaXD@|)uwu10M2mge8sj|#3D4ZAf) +z$9PYA%pN-FeQ#_R<*f&_0rGoTLR)D$8@BAy%%kd)|BB${Y3h1$zdr~e;O6frl00;P +z_1VCpKy1B%{ETI=1(LwEFq!LpfMcO};il{*tkeT}AwVz(8~ol@6kL~I7G9%RU}@_h+v +zU!>AMuSZrrUFxda#sDM!s^m?9X!7@i{%_1k9f0b_G4r>+14NrS5e3?XX8=KoO1d8J +zZu+`61KKshK&zOYhgoT{meY8+&4H +zp#kgspys~WgMt=DL2|)Ti_f0aqL5$A&#hakVzC0=lxSc1=pK-DcU0~R^J1GYL*K@? +zFZAHcD>lTOm+0b-Pshe|Jhas|Dz-3{+x?v@iwMPY#djF7-#xRZy17HxP5nk@JN3*i +z0MFG?$sinq6TYlXOUkABj@7zD_En*7R9`LxuubRe%6wt8(Q-1m*f*QSmQ +z0ip9RWXxKt8E{_mQgm8-&6g$7hi9S_*Ta0e;_?K=t*DbnJCt3_rUouiImEmH9<6lr9`o-Yi*u(i*x`rAX0i5C6 +z7w@#0Q?hL8^yII~z8BXoP+H_#?|7MP^Wl=hKUxZkQs+}KlLL_ZPK*0)$}J=g0MYk? +zaP9f^nEQNRpiY}vFqO@4s=~R2vgd?DVYEWed&8Bh7Ucl%4Ql<_XclzSn&19?zEY4_ +z$Z`N0Z|3LFT_X8AuGVd2t#Ra%5-VHx0#nNol0>=ht}O=)FS-3JqD!zar(!EWUppGQX{F +zXofw0&E~55>~*!`P*OK>0Cb_UkC+p^bh}%N_OUJGD*=@ihZrs)X$U_9tGKfk(^mec +zAHmK}ur4dy{N=Vq@>PD~!hDi|sfKHx=wC_JIqqu3`%}{i;m15|0$ze0<1G!zi=PKxT-6Pl??2Pt +zQde77wh|8I2F}4sYg4M*)SjBLQ>V(LRh}NkQgQeO#09Ke@>X^=k>%)p7r@BTbGv>L +zQ24p-O!PhC{+_e;l`DxqzRph4i~+~B{PtQn_Lq~J4w)pvA$w}C^sN7_51K2tbpQC- +zVFvEFC^*}*OOe3Jppd?M)&+0zH5)xDAYr?d+^zd60 +zNrJ0E0{XixzQOrq)M2HBOOQ#|UG3!S+=#<=C}SF`#HTB+dieHs8zuB|a~}WlBi9>7 +zhV1DIkNf2P*VE4IY~SpZ6Mi^G1Mh`-EqSUx6K>yEe(_O7*G{Hi}`v +zt5>^wnJvDcaS3x1--O|O?|bU*ZqtbG9nBVYiZ_W5^3*|sJqaY5X1NkR3}I=EYX!b8 +zBIoK=bXU8y}CVV(iU;I`5H`@;ZC8FBwN8fMR6yKGi6pAJbgBZrt1B%ob5 +zR`!>attJbO=wL*<$>EIfZ;E@122J59p-ofvDQ$)>lay@)>|zS= +zP_t*CjlE)Cdw5?63dasWFTOkPTfAjNg^u-KgM1GS70<&lffNGAxjPIU5j$ygGlR9S +z7{CKD1AG$_xm)?VB%Yr*?7S6i2q{63T%>Ln5% +z=(ji+WtneqFbQ_}QM&Y0PTNe8_A#@vx3wam*vzGNe7rR*#Q|#WHC5NV?KO<$c%e^1RQhs=FqC*k +z&J2)db=IhT%dsFRY0ls2Ga~OEP)&Q0-(j&LS$#sl +zx{D_UVQD0j_U~PbWAicND;=U4k=m}qhx0qfX`X-XQlgYDnHw;KZ~VT2c~$_EDF9&G +zv(TuiaM*@t^%`3&JnF#>S(9?d7xyHQjQ*7M$UDAglV7X=q3}ea%xW4UU9H&;JC+q; +z214nN;Xdqxaz2pLxR1Eftzt>tKO(tb#8XFgM^4rlP*1Suca!8xSG2@*qpQu~IM!t! +zipb6e5zKLMlFfyD()7}D$`!@tGjm{-yrOC(&)g2(c3JhrE4jqpeGU54U!A_ePPV;s +zfGuVYKLhhwXuyV6WMlj~{hBE_P2K_H&_sX%@nQaId_WFh#f=VA$MoR&al=Q{1mgg> +z4@tu_b_vb`906OMY-`SG0C)qQF}OgJ6T4yyYqtsm#CkCRIl%IVI>LKYc$t_q{L)!o +zt`b`h*2qGC&d41Fzba&X#c)w48a0q`Vsyj5tC+D_}*0OV59~t$1R<&4PL- +zU;Y=S#~&8a`+%dDRN{pn%-_FeV`i@p(7@)xy7SnBqokX%Nm2hLCsR|rTN>y_EFB+rIz1w?Oc3d&7?7pc +z_%(r-Y62z6QZ4B4{sVy6>^bR_!>o&EKHv1!F45esWf1N8y%0s5^#dpBY$Q$w9zko% +z{y52ey4B7&BWDivO{7B7_jgv*<~lEC3Y2RzcL*A2njj|2;w!KM0AA&Yy2WSrbZg9K +zgk{Ky_mq{D$K`?~Gqu$j+QW$2vgOtYToUJ^7^{w6}9BP#fsst3775dQSWkS)L0qg^rc3 +zouzmhXZ!ZzWV#11R@YqV76N864h#dfy<+E8u28GB_ +zW2~Jo9Tv*%esm!yT&k5?1HGGASYv)$RcW5X9)WzIzBJEZ$Jg4s+wTuxiP`~n3G)J9 +zsMV0w`DM=4S$sFF0D&DR?)SI&;hMDtAPH?q6pAEiL)UIsi;W=`D%+n$!9zYMCT-1( +z4NCzl+rkBt+ydX8k#~;I8^Y#xsZG<+ZEG5_X46cpOtkAC?%B1=)|YbQ;$zxMI9%-H +z2+7LF-j|T^+%5`m!f~ESN=TQq73d5zJYXo#tS2V4aJpi_L5t>uK-*5|iasIdn|UYJ +zIFZy77AY9dv929-RDmUBc;HU}e>9*UeBxNY*?8E-`$WU8x!5-lH3|Z^3IO_mC)1jo +zGtkh!H+Tg@PBWg4>b&|QC3)YlE2Va2Q>n?B)Ue^rrViUquXiC;Qa_A^-7@alahC4+ +z8*K-F4}hi%DmiyA1Mv9AtudEoe-(ab%`v9nYkii+i^HY2oz$mdB1sK+Xm96RwNm%a +zn%cT}mf=)pJKGwsKbe&oe4MpdX@j^>HTde@1s+K +z8gj)-)LEjYE_5so>fF!J;@rdBJ#EpOL}vys;5VH1M{dwVr$iRbMb0PQxqB^iC5_!z +z`W*syA(O +zMyYzGSos#y&)H!av6{}k9cMCJH94AkULp5MTR@MWYs11PrIiU+eHYE8!w4C*N)Y`W +zdg2eJO4+Gqc33L}9NM>c{<8LB;94|2@K=CTvR)~AO7E-<`@Q;5+2hFJgMe>|@Z2W5 +zZ1MS%&Rl%oP8(}8aUzlCsWV1XhFWds>MZ~V6~dxs;sqfE8WKxEM{QY!wX3zU&g>7T +zVl`6fW3cB62+&7;T|f9kwb+`$DotEa?6urJIIbJ5Gxqs&rf+jtHDf1+IEMQCNo_L( +zIQTZW>Ar>dn^Xvwj+iOaEga5(=yZ30(eoZqphOd7i-&(_kme7GeHI^CVS+JpS2Efg +zhC4*TjfL~_bXb3+%u%h+7obFwN)7i!!YHoH$<_!99Af=v&;R%MM!i3>z~ +zh5pw-tYYt)D_bTFr?4n{m9mK}o2}rz#W;^DPvfVf&~k=H_T6K3s#i@O$h)#X+i@ts1h}&q-WmKZ>TjG$5I2r +z3@gr(jP@&3QjI@k9^lh3hJW^*4_^zp3ZIc40z3OcXLxVlWh +z8vTEJI)BYN=1fR7)i7c@kJMJ8@pbh<^`Y_xe|ehD9C?(lrV1WR1!C48gjLcFqnF*B +zX2un&{n!oDTwv4Jt&;aTFq5t`1*x)l#iAu03a805dyay6cL<56)zH8!EC&jXaLHs0E?Gw3RQh5&6F$+V!W|soONLh&K +z0R0bo_tIf*2>U<>6g{>bZK8=BVULh3__Nbb?2$7|Un=JtRQpypK9u!*<&pa;!WP#b +zlJqk$KNO0Gt;GUWEs>0tZtGxqFLGRyW;sH+&wQKFk_F+gUg7O-`q)ImCDKy3;hj|f +zAdf45Z{K>YU;Fh)v5ynv&_qLX4z$~PYpTC|bGp^Hq+J9zQAfk!nu`U7V@7piSSWvU +zx4OOWJ=7FrEwp&Cjif=-a-UO_s|S2=w!_>#0F~o&U_fpp#tk0@M$u@Tn?V_* +zen3Y6d{I9|1wcQybp_Z@9Rd(zqA>tD*-upg8t75L^$Y@p2wl~K_C7X*YEjJvy5jL| +zt)^$&B5JGTTu0IXp@EpGDog4LPM{IQTQz&KoT!N)uv6cERW=v|3Naf-jm&7)TgcmJ +z695ClixYrc1kWt8M;zz|AS(nAz5-yGn`pr;JY_CRR>u2JEdV+oDv$|FrQp8)JG_=2 +zgM5HKg11zm +z$B}iY&ISHMKzzKl?Y5b8mVOi#1roOBtm^=IS8lHNA6ds%%u3$b3Mm*M-p&&y1un#a +zrTTG29b7q^@X7w(z`oGdcw`wlLMY@TZ~T>CU9s`>xR|=M#H?br{h)*uwNNytxCmXs +zO#G^tGSHCh3B+){!dGf#>>fnWP1`?a6~)&BK6A1s{MxL*4dPtTc5{UX$yye +zAm9mnVMw8s8pA+!7k;nKQsy48%{PI=H$X7wGT&U}syw$VQ6UlfNyAMjUDBdo90{9S +zyT4x}Upw#>4mp($f5{DfsRj6EMTJ|)%S(4|0Pdfp?|}|L +z7sYmlwwh>jhpGa@p~g`}=I*JKmw`jw;K}^52R{xjb~Zeh1M-PzfP!r@2KD2N&LZ$l +zMgvmmdJ8KDkXH;`jbW0ZCI8^lzuL3RA3V;A4NOa)me);LWC32MxW2aTIap5b2D#}q +zpu!eS7$1ffXQ&eaRbGGcaPE^rK!j!Cah}@3d$dam+_ +z4y9W)hbnyVvz53dg6VhBx$?hr155j*R?{WU>IKljzw#Ug!o2CQFA;qivX;}_M-oAlAC{4Z2RSx$nuFnh{-00dzyyLs`>Wjbkw!GZ8E@38ow7Til +z(~Uk)q(yV1#VwJU`yA}tcGEwIm$Pyx2;J%r$x(+M$6Rxt{hg_6w}XcA>HX5-8$wwqo%TgaSJTbR;b$&c)mf4 +z0CF9SBzzLa_$~GK1x3tQrpS5Byd!#JV(&9{=nIc{a_ov;d*yS3y#2b-0^^@loz7gy%k7c3lIg7Uv?utFWZOr +zsQAO&ptPMpyTXuN+rQh*q=P)Rvu8T8-qA1v4xGOqXx}DV&E2f5zDia!Rg;tZv;(`nmK#L +z%;+623j_zq^G2H#m&1FNF+F_e<77S9?J-v;XZ)ig8j-Dh{@7ON=Y!*d-&*izt$laf +zx4+YC!Siy@_!1$DZst=lq(`xmbmV4-MU$Gt_hzWG +zLJ3C8U!Bb9>%3gv4p^fblxbwR_tLk5>^N5#={< +zoP?M`Y>u4T4Ecq}+i=Ghiq +z&QL877jnjoE+}W`+ZmNQd=C08^BH +zzBjDS;yftu?!|1>TB!4z3ek$%`QHxRW~sT-8sTrXNYvrM`)DCbEU|ATglB%+7S*PTPF$+LZ0cvn3U+6uSqN#~ +zzPtEb^_t9O+rHpN+(+9!>BgC1HcApRijdTqPdh55dT}dLgAO^EYQX{0sibUR7}UC7 +zmq`Dtj=%Mt#>cLE&m)TgZqt3w)+_Hn +zQR=a@_CkVsWne9)0pLB$H=@GsYb-Cd^D~P1cT@d1Z_dl)Q)L@sZWyn>6YtT7x-}8n +z_gDEhI)9tB?y$de^;pWwk$}P%one~X{JDJIWe-Z(^x_#6`gziV=u)l8=6)*MU~Wd0n(xu(^T +z)cv+5@OyJKr?D#ezF-YIaZa`iQqnN!)>!NN!V1pl^zALs!cAnQn(of%FW{9c=E%4i +zvhun3(s^Icx-ujtjRHv0H|+rde`eyl`KDX+Eox+A)8OeR{FkxjN&UBN^;WRDQGiKK +zl#yPMdgG?Ilig%Gv;ad +zBU!sO4!%;7E&bYAMBoLyVWPu|H%*_@7TMO7gt@5WYu;g*=iS*@@bHeGXSvx; +z%h78sGxuK;D^F6#J}dqGjnnwr$e3n14U|T^#`W*r+;)3*O!D_~N*F)*4#itlPc1kY +zGgY4^4E|Qf^=T^bC3>p>u?0>1FBliv0wmf?cHraHY|1y~R^;N{5CyD%A;#F3h-akE +zNO3FnI(|Elv1Tl8TV8?r0a)|@a;G2(pj|>G&t-!{pXsut%0Dj)Zx`Y)#a~6q2nUJf@6fq;tHq1k9NoibVWY@+ +zUGPry=YM7eAb9=zk7hGj9`>zwx!urPQCEc6p$((Pz2gmYL4Vraum +zFqZ?O1@I)rFFNrE6R%nMRTf`U++Xnzs@6DWmn4|KA*}qFMF(C&p!s%U(g%>G)$kwH +z)nU|%)Ddx!kFWTWPv!4cgA2(f^@o*=I4VE31>K-BEL{Vr)J{xRNu|bQ9K68FOoe6C +z$@qrOT~Ppx=g#PLzE|v&Z)dr|80kPJ>)s}-jaIy($iOd}^NS0nzZT2&D7YKtul(bc +zsv11^Kt3ZjgDx_j;vwLuLow$12+s9JKgD9c@tK)cy5>9ScZ_SU?OF8QKAY_G)bB;P +ztVMRxuyx(lmNJCGbSZ={<+M?d4kWYZW$<3T;D;2eSrC-drcDZVXRa1JUU|%RACi|*7 +z68~2++Csje1B-;wA+O5tH6 +z^`YI#@gBXJ>xYbNEBD?n&KX|I&nvBzrzPI#1*u^UM%@u$NQY*-N`K)}St0%5!7d{^GOCJ)|Sb0nn!JEBck=gr4V*wyj!|5R@&z1UX|4%K3|F5e8KGJdAv(d +zSX)pem3NWGM0pFJAGRC6DPUISqKry=w%tOE#q4PJW@WSyH(q7DUo~gRu7V +z{gHq|B7a3w)&W@dR?TNAmdo7?DqbNfhMu(yYeV?w*cX7GRsbQ1%C0xW41$-sgkgaD +z7UYJY1P)r@GZ@Mf5IeMHpc^8Qj9cj=Vn8CSACK!H$QJICVX{f%fig&ANVvxv#IuQt +z#(0vkR+mZ|=k|85XL;VpVrk|p3yB5x15l9SXJc1IZEaB%q*M(1G0Uv^09Tn1a9!F^ +zA6m;+32+C$3Y^@x4mce^*md3?-h~wDfAg`G0J8^B8HqxEY1y*K-w+wQBS!r5Me-5o +zmSR3yX?_kC89H0Ag2_;c(%Ac+Ykztn6z-KN#@KTQo)0JNGKhnC`6n-%g|Mff45JcI +z?q-(fQp0d{!-F)!a7?F~h+udZ4@f=UIT}&}{*9Ul!PKrRQ>K3SHx*Qy*C1^s1wTP1*QCIwHq*aJ<)vVr#u&+;dPA`NZN)f|P2J443lzgJ@zHS@g@ +z9^5{*&7NEoxN^=uk~M6c;($Ld73Y+|WYdJu*(x?`-Y6+xK|3b6sqSk~oTQ$YZ)Hmh +z@=F(@R_hnv6c4-r61d)`UJc_t_xQj9V>{G@~Ncrs9i7AU!K51px +zyP*_u#Ol}u6`O+jx-!q&J-yFg9gd~ES&Nd%;NL)vj;!TNSH5<{rgs6G5zC)R=Og$H +zC)))CSp~LiG$4b-EMK1ZGT$P^+&R-7GsX@ww64*2|@p%Vc`YK+{h3s;BO6ziCXcg?zf5o +zU)6>VtyK)2#5lnw-e>Jfl04%kkqpR1POb7v%EQT_8>4`D8_OLywDv9#v{*pL&{w>2 +zZ5FEP>PyGe8iQF|UeG4r +zIGJvolP?(96}F-{0XoS@L8lAlfHmb<*`b2hDHLC)vWc611GRczZlAm&z`MJB+UTCV +z8Zh~k?7e@|r`nHP+b^@u8Qw}>$^$UfpV7T$MKOMJ8@=*g`?&4M#__&>Tz}OH>Qk_W +z70QtU;9XoCNv(C}SY=4QrM!vuQSNM!ikUw9vg +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 +zG|T0q%<=0RBl4&&{Vt55<$aZbUc<A*B +zy07(CjRjvDrk9c=i(9!%Q4267ZP-19u_P18E)COS9UILRoZjmqjI>Rt9!7s;rU+*H +z#M91t2{ZEk(OMkod=&p{RlOuqY~f%C^QaqN!+{SvPacllvK-GspAVbQ +zKaK#VR1@wTs%!=ip$J3U@t8&GWk4T%XsG5Fqp^s?N(aSb;t^wp%F!O6tpsT%pDsg% +zF7~t=kz|wo1_7iUCQT8 +z_;#YaEj)Gn_8_gnZ-6fw%ik_2`lsMH{yHgrcF(VSW^RoU?~3KwnERkKcPaBs|Nq|w +z8jWu6oDg_b28kNkREJ3qIzDuH27vNQ)r85`C#EyM1J$kkM-766u}~Hye&98Hq)8Za +zcVIPv*mB>KX`N^Pn9 +z)8LM#R|{70JAM-I?Od(p=Or3b*2bnMX#FNM&H8|&xP@xO6;TY2u^_nW8s%nFruTbP +zs4o<}7{t|46=IAYc1DEeGvu|1Z;e6FX=w3=L9zHguN4vlaHinP^4L>fs +z#CIKXw%1mf{(doV(BZlfAG>)|R5bt6k(ynxA^<^{0)wtJ%(E4hxQT?el*zIHK>C$j +zHaf5}m)h$-%zZ+G)|UZ;Jd*GuE?0W%^kGTPy7?vjoaUg>Tstd$9Xc@zSs!Tl_DYd=q1Kv3&wE<0 +z$^=&41L{iIMRzZu7OnCao+hg701{b3FybpS_q0G1HLbaWq)@>tqo+H +zR!6j^C^mwtIkW?SqXUZ`XJVhK71hZ*_p!T%=a==j`w@;gOufK`?r9|nx5C^a73<6C +z1+-Ct&!I8nTcuqGB#Wosqj(1}9XlZ)HFS<`oE^T}6jJS7U?!S&Jx3igTgcRc@8ZB| +zYKbh`yCmMjL8rupp7tlW=EQLed+aerSPV>?8hiFQdworv_C!g>7D+O+HLZB*X3nxo +zr~?iX;ncG2ain9Lm$|w~2ld|6gIi@IFjy=V!xidMHF8`Y0gFq;xzr+%gE+PxZ=%2D +zZv|1%qh5KMM~AwiGLPQuGJIPVnv0l()`v~2r2*79 +zMA&Klan@K6UP+&4LrI-~&`{;w-x9qH*Rz$+7F9pHrP`Q*I#6UYm~+D;60o6;l)Qqr +z^g~tUBzD0^YwtkZ#t2B;YG8O3jua+YX{HKDKUuhOy^pBM`C{P$4_(E*wC<}xjGPCz +z0~j^$nB&wR2i|6vfGOp_+_(DM$^e5dc^2(^36wXt0h7yrndz1I14b$EmQ4Paz1vEF +z`%8|g^`_$SaJrCk@E1YQhcxkTe=jq39$@EDNZX(e(FfM*`uVx->^4g1n0KB@D*bx{ +z2SKZac45TSWijhY5V9iPyr}f90r$>dE4I8Var11U^SZpjr7r!jTj}B2$(~Ogcdi87 +zYS;B-s;hn<-Td+RF`om)`OBMWn4^=CXSJ3xx-v;Wm+Z~y1hnWa{rm_{R#Je#Fk>k~&&Z+j~uww8WhkHU3 +zHbb)6#SvuSAa!Dt{g?+fi-Js3#v^hRPZmG%de8_ex!KX6!Y)%Zk~h2=D(%5b$I6tJ +zO~RyM$0ZxKu|lP@AA|aqqOo`99JBqBb9`yD*5&ZIqKBopeD8^@SBln{n^W)hJUbtT +z&8>9CT2MQwoFf!qz?i=|=Ua^PY9;%B(jS?`;xmy=V48E@9;>5H1a=|cBl&aCq5=Xt +zj3=ZPKto-%CafvzJB)ryQl2`b?NM4C7i(Uuvk$?rZrLmOhI-Eq1Nx(-Oazc$C}&Kv +zG&!=-?Aat7?;XD1er$~OA2!zi_Ol*S{c$p!pep6Im={9f^lxP_85hCUhNEZ_yLn>+ +zFWhhH(nD}V_%k5-y3&dGf(v5`r&DI#6BcKY++{1V^oy?A1{0W@b6t=MFcE1rW}vx> +zoxmZ4XkpCQwqhRq+t!Zf9^}gV`D+;k*xW=wC4>pq6Aj0sksl&R>8i_5L*F_GF_?SX +zVs#k;u#nG8XsFVDJ!@NtpE);qSN`I8w= +zcicH(^*SI<86rwz*{=P|7?{zRH~`hXz!Zda$TBM|z~#45r +zRXdZ~7(@KYIs}T>Q~c-!^Jy%sONJE +z!v~N;C2X{tPJEPYlw3-j(zL>^IN4anP$`^|J%h_1mro4V>a{rA(qOhS_)h9Fm#o+W +zOhk->;K6nyW&e!jcI^RWnIfm+db3)Nd|la>Ia7nn;} +z@~Ih5zvGPWn6?$+2aA+4sG)j#tglKDS34C?HAXp1SqeY0n(Hx20~gaOCcm +zi4T=i*}_lziAQe~4Eda#=sWEedZ#&B*(N8E`R*s5SuEvp@gohn6Jd(7Vg(vj{LsK0 +z!)`gG7JIpa*-N{_BPYyd_TLLjTe^VvKxE7_$6^5`(u>2QD!IwJ0KTd5PGPzbT98;c#<9F^>S0t;WAPZ_$*o8~QlHSQxH8Qy*J~ng8r7vVao`$k(>Xe-G5sBMe9uk) +z2+3jE?^Rt#k~ewXL&G~1CFtiegVs>rWG(#ZB3& +zpcoCQYpsp}Z{r<7P`4-zFcA~`Sa&!pU55(9C*~sTSch=k631fcO3(g}Hgd-^^Bmr& +zRS3s{Gp;0CEWDyR;o7Bs9ye3QB;XfCqh*RI%dE@5p74dHJ)?ZtH$l|^0=!D|!lV+0 +zABzb0UJl}|olnhpI@~w2^UGAyRE+BgkOx|O_&y0i+&t=F8=Zszn#=R*kvjb*7?8Fo +zzZjieHFsa{mt +z>_7fl*|D4PTtTI-wQj5WO2X$k({(Ma^CG|1aN2G6($){qoPXAoY;(dF_&O+-|H?!4 +zIrX0?!(H@B#-i_xNJRRmIIHL&d(%61FE=gNHdI!>N08urKU%m{aGa2WlT*Fl~9 +z0c2O)mF~6!A1!A%4ivX2ci#e?)o`oG1S~$#QD2W0gK8MI`7{t#(N-QBnx7f{>-2fT +zdMP)|y_3uQX6SN#{0<;#a`XVpTa +z244>5I&F8!wHeiCV7&mOto$wD&Agrv>P_wa8uP@{Q39KoQ6obiUJEt1R#b*4XGofm5?$^(I +zjuYO<_dCIXcN4NHHr+|AB8}B+2Aleh!7rX6PxCz0yVlzC{XY_S|CG&&WiSb_i+rdqON*AbQT-` +z;&j`&zg3#Ml21Vx?lQb`JFTxds9HGo^)%i2e&TF^xcI%0E9&Hse!|(dJUn4>^QtxH{XO$|?$*xdW&;1rF(X_Oa?SG6Cn`-d9jmRO=x9))wXzE(M +z2*Xj6lkd<+v>mYla98@C(YrU$ybZ7Yr`DRF2CyY;Ci!Q|9~a3{rGuSHGi?>#F*TY= +zlEbG22SZVKSTVXqmZ%msI0j{jB5Mk?Y36LggH1z03%hg=5qd&qw%0^_m68e+i2pu_V2FEm^lr#TW&cgxIRPx$ved;ZU*i;Wd|FkY!x;3t+++Z& +zVDpg1xXj+8v66x5AP#EnQja+zCzO0*lIK_uoO38cY5?Ez$uZRuiBT*@#2d{ +zy6t9`!dHJ$?N0q+bGK4|0|$RVces|9q6?+}CCS*ePVss{mQ$UZb=Vq_WP5?`!*Y70 +z-n*Vx*5UxkwuTmHXIAPXj9qs9mq|M>6yD&s(O@67Ghs9&?Xg8H`n7k{C{3Og*JTF} +z2ql-!ynubudj_2tVkJ{wQAzl6U8B%AKW_z7TIhB}Ms62FoGX@yXW6J_cdG1-)b7LZ +zi9Kl?kL^?|1h0e<+DF2}%*4|@qfqzu!rf`cjh%asqWHTmjW0^Y%oy`N%h9EEp(w-R +zS82{oK5HX?r~6flP*0onxm^*4Pz*ypWJZ4Q!I010N1b`16tX?E{)LkdHy +zhnW`yfdokER+}EjwuIhr$Dk?*x#Avug&@(kRqn^GZg|=JSHV*aw+Bnwwo{q?2a@f5 +z$5p5JyjaMq$kWyi2D&G&oujxet#NexqqFkqSD(%`*%tg~FxS)(=8x-zZ7I!Vaev@Wl=%eTE$?=fALUmSJB+81dL7AiddX(st9ccXne7Zx>nadvO>LhaM_ +zeKS6zelb0BwoyMkz+w}NKlP1&puZ&?>}uCg^pEMO-S%c!w{nV|XwIq-&UHf;7&a~b +z!rvkt%eG?)J2uIIft)0fKGfIQ1IoI8+b9F_#T%tm%t3O^|=Jv3D!?>|-BZZqOn +znEJlI%_liV&l$t2|Qnf +z48Jr1@xt+^^a6H^=7J8E0R64U&{JIRZB2QH_*s>bLIpo|>1E^PI0(_5?qd&lK4pFH +zGl=&#@Y7YEizA+2X;*CC`)3Sq%a-ybJIcZj@9A``8?>(VJuz1_wA^K9j*SUtzke-} +zEXB&~VqHcjMOwn%&Hm8mTK>url;tD#Hq+H|Xg33mo4NKMZ(9F|ybv^b-o|61vEQ=Ktmh_ap|qZ5}?Fpu>iea^RN883#zdxZ`O`joeM +z$uC0fF}D66@Sl~Qt)c+Y`UhsC0lUJ3oTJm`lKWSQWrXm8V!vG__`#@6pi}Y2u*noN +z#~AY9-06!0EZgahTky8H4_UYuHGQE(5&Hs}N3AsYoG#V!ow*7YzN +z%hds|wkN9w`$67ItG^h@P@Py#?z^HoX0|eQ&7+QDUu>iM30Er#JU#d(@=?lfso*N3#%Ud4M8%JAN| +zMU@i3J|*^OVScb;5ti$vI%M+jHy|%E>fraFL1abRE&;|N5P2mOXsT*`M6izQGdUp +zzU!HvFbjLoscm`n-QlkM&1m=P1S4T4%5s0d$*^8?J)+~fWAk1A6zL+r#PVv499zOu +zga`3zG-ercQReZz88g`LBFF*`-aPRO3KZP(WSXIUO$vE +z4RKly@xxco)x_jq75W-YLQF(ci2TN)O^cWa#U>STUNcpuJMmde<}O +zSOdmp-d=lyfn;$UVW{Im-WalGTFn~%<)J5VSSop{QU2I{^gept6!XkdeZ@qvBosKl +zZY|%$(&;@&7~k{xm0aF;$i(3*(f_MYx=tpVp6wHV51%*RFiXdeKJSbedED+t!j5k2 +zkTsl1u?SSX`T9w^&wx2)LRhRel6;T=+hESc#5~i=DYmI2$QM22XP>)!J!4+a-yR;; +zDLt4I7`L{w<(!+%RyXhrDm*0!={V|umAs_zwbq#OQ$I6fV!Eq;&&$`tEaUq14%~W4OoqYOZ#VT9Qjw9TkYr62so>N`e)dw%I#S1AO1R}8 +zdGh)-7Kq+VJOyZMe0s_vPSCv6MsidS~Q^;QWzUFmGN(wq` +zy;ZXIcF*6Eoy|oKrf(13EtwrZ9Enq4jcyCTbrU$MY~q4_aA(O^FUiFu3~ljgKSe6U +zbjGy_ZA4pOi|YD6**EBL6RdyL7R0dCC-mQmscH|B^7Y0yT#{NzM$$IKES&7;bcfl} +zoj;pm7SS$|n8XL;7uk39t~PR;5H(QhBzPD;nsY_3RH_tZKG~;DsXwcfUXbRP!_X!rkF# +z{=*AkMz|d^y^J32SVPw6PCNdI)i~QZDSX+}j_*|$V97%hoE={^w9DTvUo-O?H9SJ+ +z=MQ>Bn^iE)=+?@+u~DKk)=MB5PE;?tHM8JkOnshs*3tvd_6fzs%}}o4J@TWd=Aib!chUUcV;2<^eHRPQp?gXv;_;fV6zGB7 +z+vtbi4tZ*zin8p>xH;z9nKXtQZ|T$i5_W&3X~}s;>V9|jg_jQ?FIgVJnZ^4ZMehIi9SPyO(%U|V8OneczCNoNO67J6QFaC;IN=IXG= +z8ldHIougOq76+y09CJCpkCcDRW+ +zDs4k@hdXAYa_U8wjqJO!XM^#-7hiSWPTIe`i+eJ!Z0)^kg%ii!y$`-Qo>~zQ)^Nb| +zK)wOoHn5hiPkxY}>HUSsfcS`2QTl#fC?F +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 +z3wTWg{{&*$T*}Z#uem{=&LQ$F{P? +zozz|}++|NH>^Qrj(hAC(@LOL{5Y +zi)mQKq%Nh2jsYbvq!-Rj;Akx=cNFJ6K1C>AuB%X=}B{+Qsd$uDJmV +z)s7ksDO*1w3tW#`==gq(gD7v*_Vh-{7I`vazi_ZsI=Yz+e~F@`SK;JCg=S@F@%TSk +zV1R-x%kVy!{e#QR_FI +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 {G#~gWEuL`WA=2#OQCAEnf*;tq( +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 +zi1t|GC2-r(P*5%x +zp>Gj^5Zi;1qbst%9f%%Z%Rk9D0~}=cfh%fVU-Ak*VF`cHh7$n`que6 +zX8M9?xR(l{vzvL6XF8xrZ%2k(14ed`&b4(;{vV5dqh-&!IC&j6l8N*CQHeFQuW +zK&3`zS$bbU5sO@BIFtN!cTZK`RrSp8h_PYM9Ly~^v1v2}3hq$CfM*;*@D!M(VmzBn +zS~5%Agjfu%)tEaW))_=MavM*|~NH*1+M^qG4ZJoIhi`rRtW&gVQ*=>I-!<-A2Stkndk^ttp*3{<`d@A6CYad_HD$7QU1}eWv^>%W#RL!(UUBTBgK#e^)N<*rq+M +ziW7HUkhi8=yAa!sS8hv~8P-&qok){?RcUYY1<@^GEK($BuCS=$lnZ7i&E?UAZD&`e +z()<3{G>iUe^VbKDe*V}QY||5zL@4XaOsw6qkMgr*XBnZl;=0vY3y2pln_N~M;=b=* +zg}UR;?tMW?NJ~V1@a|lsF1c%nDj^Xi=j77W7)ZZtCcU4jax_2ShwO-R*2(r|=-j@X+G#M=%@H*!3$Hjhti0Uljzi4)@`aT{@lW(ep+h9ciQ%OS^sY-~RY +zNTo~U|H&PlbHG>)%b{TM>P5Wxu?u+r@NREh<-|{AS@RtaL +zr|P37Ojb1?v7!-$f6JT7t(X$GD??3lEIweJx +zOQD)_N_UYY9{#K`2JcbJWDX9AV +zX++EB%Bpva)gFN!C9c|*JG+C=t?$`dn>>0#VfrXMr7^IRvX`7!l9$FQAz%eO?6SW= +zUdBXUO%(W>GRT~C1O}HaJT`lpwsweEHIt&cwDu{33-B4nj>BjM-l=kV@dIB~oqRF5 +z>NvdP4ztyz5z++`U2937W`WZq2H1iU@v7tZMk_3`0bc|hL|k4Hp|77!Zd;H>L`w$I +z-E#x!LeM%w&E+SeQDXvJ=>05ENO)XhPkuj$8~*u4V=HK~c=E3ZOsCtpSV$D{aCCaW +zQlrH5O$R$7oUq4N?$%tr1J$)(eUQ#+Oj*pJM{JsLt=8#k*yb6;$;I1=ndTA+zgO@p +z+U%?Gh#sSNck9&CgA^{0H%G;+GI+#&#o8p +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 +zG4MT7#ulE%&acbuOakxN)69R5cdWoshl|9 +zVf^)X({Jy6p|Bf9PkZzefN+R;@uJD(s;?KZ<77DI=3mRDiAJQLxF>Tf0fs7E+hl=R +z&r`cmKb99O$XdCjadfipH*W<7)>8c1X71Ab6^ttbm3vlSz|RP5EoZYMb)T;oLD0bg +zC9!xxm6jUzX;H}6wGrVOHS2<1Zw2N9uwcx}RqTE^uk&0UP(8w8(zcuXbwYr7h{AW` +z4Y_%8CYRQxj+Ge-FJgf`2*&W8h`<3(XoqrG%vj&NrKnogQkYAQV_AH%_dO3EHi<#h +zKsa(zSCQDhYWb}r$pn3mZk(@x{VzD^7C24j4olD>%S@o-`;;i8cgf~v)K5qC;pW^u +zk3NmEjg(c6Tl}DY-V`%lhYHBJzd8pV%uF~<8qVn|gdw+j-gNF$xmM!6iDR<}FXAv# +zW*9bAwzw?T{@&z{?;$^C-!>Fnch0f&C3dmA8PgX!ePuphFd66`sLxzQZ#*R*1P`D# +zx2+;_V-0?;vJ~azIY@+9(#V#-K0l%8COeZS?t52FKYH=NB=GR!qm6ujQT)_LdGPD& +z2#&P5U2rBVecq#8HCJ^@z1PQwDid)5`;5Y0{k#)plX%FQijT-R7Q6=?a1)rW?lC0X +zSl`ZIPqN1yY~k|JdRJ8)%gjUVh};^w3Y4T)sJQKr-$&_9w)79a|7O+zwXhwrl5eAN +z`d8VS)Ubhmrxl?9H?LEvV#LaAk_F_tuOR>A0J+oPTBD3Bc*Nq5-~0acr3QG=klHRe +z$3p6Sty}I$B@|4(|2{P5-hc6--`(KgR~NgNbkygGcm(xWZgVJK*w~hQ5D%Xy9g9eW +zO;@d^kb@r<9EYwf)g%!t#2qT_n9iS7H+(%~tevX@Wu*z{gvt_7+y5oONLe>1b@kaGGl?Ivf8vernPOA^pTB& +z+%bmA0V}i&oB2LW+bTj=lURz&0-V$G*)Wm~A2gc4XbR|#u!KxfX5SaYui>_Qiz80zEgIm;#2KYWu?Pf>;HC~Q`=_nA^ +zY?9=QKr|S7nF^v(2hOPq@JHGgt1&mn!ldviNgoIUZ;MKhESP9`Wp(@u+LCRVkuqG?t7yVza6{&C4QLCe)pacK^}T4Q +z^N1S$XcB#eUCN2+Qeu1}|1z6+FGutvJCHND#;p-e!8`RL><;&Qvszbj+@lQrWU^eX +zxH^yXx;`=P8Hs>}N$A``+vn)to&ueGC>`_n|56?FxK)y65w;=qCgi@;@>qAG6t!xn +z5#d_iBM@WDxnyy`7~VoOQNgS(k~ePL7x6ARY%o)GbCR$h;|c(n&Jc9u4hj!ZCFY-x +zLufR!p)Z!79Os__IQBW;cfXgRZRgL{Ct{4yvUhJ+=gD8`ctHr?PYWawtpub?tVsF< +zP9}Na?&!L7ngYQnXIeYDMd83Rd~=)w>qOM!PtRoMfHyRC$>~A1QuUAcBxmA6%2b?8 +z)xL59IaJJJOE~|shV+r0gaSJvSM;UI8=Z#P>az?a}=blzRsEo`7FNeEIrYbY&P+{{TD=3P_z@gbLm>-Jql} +z>q67fA4cph`-MY}FYEjx_U3nHJN#?M=gET`-w?7*-p>kcX>oRbjz(7oCu1ddS_nV+ +zQpSoT3E~6;t%Bcw(OQ31y_h8XLib8GeKiN3 +z&X7Go2Q>iBg&Zs)QG?NI#6Fc6Eey6@g*wu(0Tjzc2iydVBF*-M^(6U0*R%dH{Z=Se +z12a%qziU^Fb)j%&_iClxrC>@aDj0V+7o5S=k=%QMTM(>awZu_)(fbltBSb{l-dYBf +zkm=eOU%I#@uYMcp4eHyT^(#SoD)O&=m{!3@zvnG^Kpiv-*6FmoIZVzpy61NuW%@}m +z^VCgr?2^l2Zsxp9P +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 +zRA`&1ZI!S0Hil{^4V(~dQulGl+u`>Uc +z`UPQj_0|e&=gAIZH@~^}h*vcir6)1=|M?`M(Zcx}vy@Vyz@1iJM`4kbi3J5Cfy)C#!L_|6y +zmaXVUL`6CzC}Nb}TN*{hO^b>&DZ!02DFKmAh)9zzQbG?9Awqx{LK4!?WPjgp+&k_a +zx(1ZzH!^PR1>^=i)6z@)v; +zOdHbws*7m_9AUIpFplsp)yXB9^tE_yUeeKk9gn`?SPRutxySXIBHIO3jKmHnTtrel +z*^k|)yzyrO;h&EkT5*8)K^VoM#rYj^I)8Ue<{6&7IZ+>MWlEr}WsLki8u9vEl +zZ#%($C=ta!mKmenm-ZufG>U!~7D4?JGUJ-0L}j_x*v;CL0jER}0b;6(mLsuIEa7%^ +zD@lEjj5(evrtFJ1jeRIPd=}1ci_|baSQS|rit9wJCYiEwvnI{>_V5LBl7A)(o~@Cz +zjW!-p$!3*1`EWb4c>_0AkBCaNSb1>6J~|dADJ8Z~|AY{9xCW5wEIB>6V1K|`K&NYo +zy8Kop0TQ1TUCwcX38<<7TSeObL&B+~hKWu4B~3b$ecU9DH@i+W>+WF^w^nyd4Y^14 +z5Nf&C6m#!!^t?!T4D-hvG`7RbZO}k{o0f}dgjK}AuKJQp>$)COOA%Wpb1@f!@fIV`laA@ +zf8okNmCNbxkM2#ujz3F~WJ*MI2^Qic7LzzH%G6gl4iN6Ptsk0uIt;EJcCnWC`^7JD +zwPkx-Ktoq5s$ZvaV7pGX-x=L^;m?3_))Im%UCWz3g~z=C)Cg)$M_1X>ue*Cf*;6rc +z`6SSQ&Cp$onCtUY3n0EzojZ?f3s%!RkvL)9^exF%_TOCv{daY>!JJB@K1OC^I}8~Q +zEGCRw4OloGahRAkbuwg7+%#e*HzdA4rHm-q7bjoqC~%que|9I)+VX|CJi{bssg|!H +zwST+KwtT3@%iV`~LIMW^>ysa6yVlcDsn7Os&7gtc7s@IaPr5;#;idagt`!ddS7oC`~ue=+vqi +z+2d5t{&c5!I(z8z%q|UR0MUnFALlJI(yfelB29uww84@AFm}?kh|}W35A^nEg4Fnv +zB0BMePLAO3z%MsXRr`*d#LQdv#^NzxdbKCoVzo=CQe!i`wYO|ZMk +z^e#{Zeh~4|i)7W8jQ6Q!YOgw>uc16^yiqfPl`EY;Z75;!J$y0+SRV1NeO#&F7y~%i +zOv5_~KmwAynIr>kp$rKN7=;)xBxtS#rzZa5{p*dy`i%CvH4{m->4!{0$83Em&F*V( +zlTp7Uyki3?&=^5&aaqpnR_CgPGM!Fw??x+)l-Cx7t;Tg6aKg3Kq~f+;J!H@=6Y_Lu +z>ooPVI!vj~^OX2gNSaGlmj6@rN9o +z578|%4uyds62J_&k{aSxCyyVE5(Y&A#cZIVbbi^FpYLUoQg0=`nF$kn(KNCS8+s%J +z@u&MFSRd@?aNZ;Prs(!;>fzOKo$w7#Q-8B`5H|PM%bvo@ObF+y5au<14c)J4OjnQ` +zx$v6{nE4~_oj1s8{87`6LTNO0S!Qbjg(fTy&KuZfCv5UnGN%VHIQVyq;!4t +zI!UtU{Ij2;RDhwd!M^)oSNd4vj@9Y*XDs0;NU{Gl_4Npt$lIIOlVo~OVq2*Z9|{~6 +z+Cl#j+PPZ4;utJc0cGHFka&5BT~}MLRi}PoimHRu(?hD>;ei#k +zS{-B4?RmXES=A4qSeSq1WbVD)!iiY5gB+0gE0T5fLfMl(*iprv@RM2ZrsLJ+H)@dB +zZNEf?rPH=K!zoE<-oA~ESa=*M)D1UnBb*=bud_exS~)>Kn}1v2P?*my{>h?X;*uqP +z@`DZrZ%Nfr^J`3~@5t1h=ILGf?MVv(rBvnPCB}wgMP7c(MG)S`XSB*{hCosC3{|%; +z?E_e87R_WH4|XQuYDT(WSre^Ilfg7i6LzR}($7mu$w?+NVIl$p!TH_J8P|o|T^JOS +zL6>R*>cjKH7jGooI{3`;8D5)RQ6u~w@$g@Wl~VTEf~DUIP(wTBCSJqm&1BXO*~jsH +zN>dH3l?>-|Z|uSEfx0fa`tSy}4D9I}cci=B7`}XiSGcdWMwbNo|8DqRk!@v($YKfg +zZ}dCTLi*|{-MkP656-Z2Ob~6Rduns(z4;(W4aDg{@+~yfho1gfo82k3c!8;`r +zI;G&nJ-=OJ%W+oTaf6JH8Xal+p@CxRgjKsN-M>>{?oWQCMolT0YxYPjl-~uP@QriK +z1qp`@nN-`kSyF4#w(G<={$=Lb{6aeaipkjN>wmYYah|obV>2WU@J8mI0}ATc4YTQ6 +zQ#CpgN~2^HTfRfE`a7>w*U +zzd(3ifdPO?k#nXY!2IW*E_zT)4TP`ekcye?4STuxH_|rY$!dq6nj|t)_@MSV*s6;J(r1-TLn?@qg?5wm|8SS(qb$s +zw$}_O!1mLinja0ZD?d&D+Fmx(gSE#Cu-kHc-l{`J@i}iNZ!9h~{i0a1ep_O`PH2+y +zJ@@NAX;S+R)vUpv!O||MDVY3uCfRnsUQKxo$NF#XipGr$Xg5D_v!(vHXMxgkWSP(lH#!X@CARCX}hr``a91UU@ +zK76cyV;w(5IM-Kk5DCFVp +zP};1AYgq_mTY9R;8MUwW8g;fJyZAmI*Nau!hlyz%?|_HpB8R>A<{&hR%|(xnsJmM9 +z#cq8J$Ts_H-XC>=HO%iUc}@-wI<=j=CzIKk_q>OD3WPyb5z2U0#xU*Bf?VImHzOK| +zH70%fS5tGtmoJ~8qJ6rv!8wkp0X50oFP&j8zGdpZMQ56J9BG3ONYnpcd-%E~R&Itw +z0qM}(mx(WxhISNoB;2xCTUFbmIZzB6L0LtwPY}9`;{K5C)VwqJ!t>!SiAv+qRd#Gm +zZED2Nh1!d|UiAIK-3t-^Pzfd~Qp0IH39A7=Et(`mr<^2Iw8O@{IoBI7@xRMg-&}cU +zYDUGaA#b&9eh3dQy3eE#=NZkM3dGhjw>ML*GVWhiO!-A&1VHTO9gvZLeWFbr%$&Z1 +z{6Mci%I&X%d6YHT8+x{JEAn!K59f;4gVy&_8nY=YSIK#WI|kzFAE(^9>0G0v4>s2( +zjf9a&f^CD#l6xO*7=q4EhirTB)x*tQl +zP(NlPDnn5@^t;i?5S3s2a@wb!);#HvzH>@<4>f#arezC)xpAJ{vRwmx?)=>Oga$bu +z*>ssgJNIAO**}_Nr2FQWk!3M*HvESXt&w2momM<6f3srfd^~+NT3#lzjVcX%j7ruA +zr2dlDUDa#Uysw&buPE{WxkW~8w?SNoOued}-D2*Ry)y2TUZIYkP0qL7mewwdk%t`e +zRm8~$ntGOhHIqKNd#HBeNA>fth}gXC_nhR_PzE!nRMozRkGkY-ZV3zhYG%EDWl1TR +z%eB_3LN3PQCCRDpLgZ-6v^g6odo +zz1CsTBwZ!L3wtLQDEWJYs{7zjO+Smlj`CBiny-gU2aL#6^?4WjcvXv6?v?Cv4)ITH +zMw2CYsD$ON#cx_ROeG%g9cyxw9le_)_xH6ER2TkiByuT0bM8C}4Ciz%PH|MCAf?o- +z-E#f;p~a6cFlIVEm{VZmM^3qR{3pGqIOY +z!Os5ZQffykaUv;ODzA{U>R^wjxV2!)M@x2`~LeWv{uZn?ow;XWz +zg_?*&Aq~pv+!*ON+IS14E6?x4N97Qlk31qj%N4mmt>gUAiQx`xor)oL)Wk$jn@;}I +z8mpz|FcaSZ4(SZ`RhY7vPRNb)7Qw^F)s|`MM9T$+>gqool2YY0ecPwNq4YV3RiJ|)UwtO*hG#xkj$-a1LP+s@fU=Qgdrb5?T4W)yJ +zu)k&6J6BdrD6I;xzfG|%o`pqF@0y-7(%k#3BXhn(@!h9sEkQ^E4M$JE#+nMc85KyHw7dxo +zYv1DJ$foeaRfqdk>JmW>BxpC(f#S%*XUTg=+tAq~EW>vak4z9lVf4l4J*lWr5b;~P +z9UclWCWLXQp^$8Q=ay-&i(gE#v@BLGSCx^M=lwOM<8qrvE8BhkXy31;+$RLPAEMe# +zm1j@IuXPgy3Y%Xj&b{dnWpyuu#asrj;)37g74v7f3dl`V&bGgAJ$9~xo(wIPifzU! +zj2R_Ed1LDO`>qlZB0^tkxIKeZ)?}nRS{JFMLazBP;Ew;a!Y~YKEU!Mb=)bR-=|oLj +zc{$aaAp5|?;bPS~q4SsT%&C=%FtefgB!~0owBiHAUda>wjaV*K0Ch^ae56|?+P@xs +zS-j0?XsZpoSsLCe`D*^reHKleQ6py`SBDbj=g%CWI(GB%e%@KEJyv^UJ9SZDz$^7c~*;0OLe$8DU#tbjxXnXsCf)bIgZ*j1mF89Q(8%w<7Yv&eXD{J3y-HM#m=2vKJ=;xxN_lGC`O>>8)jyRO+y_U-;(j5k>V$)seNS2Hf5%BbOKBs!uilGg2y +zfhP*&+U+HdP>Cd0l&Ncqujb?t5Ri`jmr5q$D`*3sH@dWXk(yM79|E%U6C!-5Y@-CP +z{b8N~m5$i*Ms}mtb8mFz*0aY2WjMJ9&B>THGo>Df2O^{sz(>$jimvmWAgzgmXKM69 +z*Pn#hXy}trxhdW3gM4ZpQ7{pcoco5Zw_0@JQ%f3u)TIaaT%iTPF#+Ow8!!8baIsj# +z7;(!`9){rCHbw_P{ll9M-fF`v2h|FEZ^*gqx+t2kpUyzee#eC0???7j@)Fy1Y=2Bj +zXu$B#HxSB$VOlYIl!4HNo!J5jTL4F>_Ce9;iI~I`I?uPl&^tC@um{v4Pq#JkeDgZc +znIz8#j46~(M#Z0Jggvr{*a=3-C%=1?zTHR5PiG<1C6>0>UcOjqsTSLu!OqwY^~79k~$!+)lrc +zCmm5sQpFqC#R)6L+oa|U;;Sae^7@yI>d>vIkyjITX4@V^b;Fz5$9l-?;j0y|iY-jt +zgttGv4k^OLyzNSwy0vi6XQXnc=9L}>^0mYVf?7ttIM#{o7E8AUWFYS`AY~gvTWo~6 +zn82DJ0NbSfJ+jg$HhHvOVi>%qaHCF31K{yX2=GGC#0bkrKE8x#$nk?^d(>Rl4>P@( +z4bRYbK-;A3*EF$&!zJ~Z*sd5uBk!HLVGqjxwWK +zL8+CHHLz^VIg&jUlVp9O8nDlozBl<)A +zJ{|>bNfN7#4qK5$)tK=t9MMD{FNG~&9w#S29 +zxjq9(3U5jsX@m7|#D`ag5>`%70(t?VN4cZpEJ<*`f5|eDYvrTJs5(54EK5(&GoWtR +zEr5~)_M%QEW~q0MSe=XN*9E9C;*eUm5TNYEP{V0UqJ1Md_!Xn>f!_E`Jk>Rwf_{%+ +zt9J;B^y9eWiEF0ho+}6Un<27U!ilo^_b&Q0re0s#iP4L?ZJkG9u9OxYNn-ASeouuw +zUlh3e1r>6%{ao5YyvAB1Aq&+4-BmAKzoE`Vhf~9A++11Hu9!V1v}>GE4{UcJv>_bN +zMvu5dcxhCz!7G?p5%67d2r4rPc(uY +zS>e=d0$Si!yY^J1%&XDZN8Cii*m4Aw*2e;2jYhc=Gkks9-omuSJox_Rk +z1;<%Z1A)_1q^&cprh0#UwEu)OYK=6bG9LA#2(TZP3=9nZgY|TwM*0k6BLl$MGJI*j +z0yWLsLx8x}=} +zMaM@cPv3&pZ^DbDt#5*u9=A#vl_>v6C#CW(>=5qsKTu<349e1ly6+t^oK()Zuoh)4 +z1`|fJZGXW#voLho=r2K$I;L4+{9(J@?i3c!r=+0ocL#EXdl+Q+jB8eN^M1_1We(SqdvRjTQnK4;1k*JQn(hYgSlb* +z37cVN2;`YGuATBCyZ)S{n6&lB$c_SQVN~>~a~sP-_CD^|k72or>EF8#4^m%Spa^Xv +zPyN0)O_i*%iNB+NDpwd)X_+}dM6LPStKIBvOS5Z@v^J#)Q>(mW^9WCic|JMd)ld1Z +zFj*if5$6h2G|zaLqx}uBnkCBd(M25wwH*w8XFvZNx9aogvX#sU(nOJ#nrqQ~MVWRb +z!qt(P-r-u*Mq3VUf1sxM#p8Jve@;8aLA4>T!{EENcLS7Fi*rErc_TbI16zsP$BML6 +zH`_Xf$49GDs|7kZLE-;Njp^Z;VFogsfZV>f$In!vdkUSeG|d}K1Q|rfhJbzHoN&Bf +z0)?;aaUSb9$o=WWu^Kg7anK*`WooMy2k>83;O^nD=m{j9d7!3dE{n=hl+gN92{)KI +zd)HjHhFt}33F=}E!YLt{_xdW?{-=sm@6;97gF9|h0{Sk#)LPlhK$iE-bc8^AQhX1y +zh%~*Q)RI<6zjpV*V_B4V9T=v4a%A*6Jo8BSoZ6$IidI)yylhf~TVbQUMwEn3Od-IWg@{pI%!FUW;R&Wk?ZvOTWXt0`7yK?U7=PHNW +ztnr)@&~k0H4MAts>G<5#H7V9g_~$15BO!efKKFd7=mkBQPOwX;C^KUxIwAdZNVqyp +z)u70s?}Z20kNTI?hWEh{+2-5s_+J2jqgK2}v5Ak~i?Ygp-P4*nJ<|0V1^uBBZ) +z(2-%c9N;(B&^mRg771d0#ysW;V=VjuQ%!W?`Qbn6SLhwmpET1su%Ab>=I+ +z84u!UFW`IFnG(C?BV@>G_PYN^SDk`@f{|!@#P8SZY+=KCs0K=XXZr +zSRcPn1|&3H_yb#JBNgzqntuQ<4*-VyES|k_D2)m7H2{$X%lTaO9^n0PKxUAX*KOeE +z(yp^RU+wT7RXgTi6Bh$N4!It>E=f5}ZH-j!H%P+-o(BPqy0`5A?wicS6LjPefAT6s +zCb82WJ=#ImgyFmbE!Bw*#{QQVK=e3!3Dp2ZL<$i|f%|eYPu(xa&Kt2GB(iv7b?}wW +zgFxOmv@wnfa(3^L%bnEyOZsvX9~86O*N6FCD$(=tWBxHUP-u9Qb5aS9jRB=x)RM9i +zMl~@Yoc|hqL=Y_IFTFD8CD%!Z{k2`exccMynt3Z$#a;SS+oZ0xk+guen@7kla9oh& +z;uqNl4B*g^0~_{DbnJb9XK*9oZAE~X?D0mIS#?i@vVb;`B!{J1GegTh)@`Nj%+&Dx +z_kV=1Z6kDWeHSo__ijM+mb=q!)laGgoMvJc{E=*}Xd17kG{1Bko$9fqhk;v-!Iy-R +z%DtKiAr+-u9q>_DLhEw^XFfNfB?2~40uv3m-nfdE7@mw +z*4a6-k3(56lu8yPEaXIHTk@YEBWT96P%D*M?&AmfLbLy&N +zzZ|>q#OT{XQy4wGDX__1nG|RWH=-Cy1R6i`2py??Ay`f-0=Kj_{toc|vNxH9*$FI_ +zNsLX1#&kd}u?dg-Kzh +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 +z`Da?2+x0Ihz*zYk*olc+A`c>$e=i+ +zL$G@c;=%BUVIYD3ZJPoXT%mK}^Tk+Dys6>!&H2=)9#}cl@E^H)&;5LbqWyXW3aEoUJ4vEsr72AUS{`ZqlT(ilWk;N +z9oc(~S^JQd{nU!)^ar}ZM-@-k7EJe8dL|Z=%>Iu%s716~X;3xX7kmRs(v3UP7ZNB2 +zzST}4lsyN@fapFBJy%mj8!cXQHSSn3MXlw~zC*?~dB`hT%?#*I&o7T9ol##w2Y$?a +z9>5*_kIrWp>>aFG@{Dz#JEtwn#pgZLJVL9UZONu4v+#LZ5l3z60u)(`Q)V +z7-7i*8rGZ}ZjDaHH@Ykk=92KNV*a;nxFu`0HD)a;9ZY^0UCMfrlF2*UVOw6O>;v&h +z2+xr8&JqTo2W$Aex>g#m7%Y~o|JjZRjr4ScA&ir`^3(6j{5WE^64fNk3TP%pr~4$( +zMzZlpV@1gMiph~CSIQo1WwnTZ>~kWW?Jqj(u*WPf&Z8svkd65^#*AQnb$Bl&UCJRgv9rsE2&E0GnxJ7uTq@i04WO46Z~BwhW$y0WKby$O~Df0`|OcbN)QJD1|kQ +zCdBY6BBpwo4fv_5>Tdqx4ZdQZgv6U9J#yAL?Fi9d<67_d5g&vE@CV?}4{S3nSoQ>p +zg-Vh-M&hm)v{NS87s!F$8?cMF4s21NR`aML +z*4=HG;$PHN#hA=&uQOD;d9%OLl7)Dd7;v4kL3uKxKQn}u4 +zr5a0~tKm024v)wLQ<=_N)(BWWVEk*D!Oa{2gNcf7RX&IIcRsJyP~PMmx2b2* +zLe5PPmr~RHrkYuNJek7%1CzZuO@WGSD@7})Ov{k5X!7@xgwQIp!MM;qi(s;cm0NX*A)J +z49Vx~1KEbD?vai!hgB|-SG**K*b!5b)EAp|Z)#)(EUx{*viHo~W5GjV_936nuxc@a +zO7Ztbe!!PX#x_iKn~u@O`1k~DciqYWX7eO>Xd@*PLC5NeHEGpmg3Xf@E2^V^_U839 +znG>ojneaaDcMj7JP8Nf}yQHVz~0#8M=sx8F>_-*3Rz +zLBXzD@SkduYHAoN-i!oj*WkjCZTmW2PxCux$!BhgbhIw)1VL+DWPuDDn8wVGAZr&+ +z3~A~9cvrcno&ac58nH&A1;;NdH!@LYQiCuw;lz0LuowNNvxGzv(1v5Dm!B-SEyval +zL}~;ctf$C&Qwd*mr>0~76Qk064`%m|c?lJOg^Z)$f1=An-YqP{h6K_@GKi1+{vD`h +zw|IquV3le6{k6AG8?d7Q3XqO~TDg8;Gy+T+23JZA{vEA`?grKjnN#iXHy-swh5rP; +z{j+)|Ao%^qJEdk0gsjCIMN~uJ#1IgC5c{NTkz2$8&$lnkh0c&&Y}vQ<3tvz58Qux+ +z1ddf+ed7BsWTe+C9?;uv%Im$UUr9~NRVUZ(9%?Ai>p$9CMv=>_!+L3umX@oQOG0|` +zl`8J+sSfPpap{s&ORO`Y#^xIN6Z1Rlv&W*td;D-Wf7(GZ7EY;esu_XOu*>$Ls}edw +zM{%R4}=qXftDddr +zs)yf2orJbUc2R>B@WN6fWo%V87THxAj3s-p?B9pvny!w%-DTx;32&@-;`K!Rg$96Z +z){cMI3L^_mVJCCnY;zx4DbwF>c7EYtE}aI5UYBY|vX0T?hO}C1A7Dkm@n#G0^mLq@ +zvsqcp+X^7mh99a$ZumCGBMyP23c(XB!z6d6g9gOu3{_cXkRaA@wDy^|)r5Jp#Q+vI +zpnVKu-HMk=h40!tO8;-|tcl6+s?bsewbTDlKx`$+rSEFiiWLb}b1mC8W$~gV(tB&R +z4Q6<*$_7>Y4;=(9vaNnM-9>O{9Ep`z`bSY&Ea|ctcH~*dksX+`Q6Q0gU) +z%L4lFLGyn`V=N}cD{JHuW!Egh>uOxFNBhk7y~w&NWZL~F#M^`}vwyGiwh~wpOkyj= +zIeuNc?ba*Q_lQlL=H8PHWxBK_Cg%yJ%S|*S#ds*(;JoT~T925>rn9Ag4VagXj_G)R +z$E(6I`Om6JZS?67mNUF~0!0?bZKPQ)kerPd!uuread!Kh=_`~yVm^;Shure?A4WKZ +zHgHmr1R$yB9DR2DZakpp+2cdw|BAMlS~Nq*>Zl&}&9AYhpOSI9nF(OOvLyCj9ciJX +z+@&Dm2XOKX>vv4?$WU-uM-T82$SSckX>V<5vL(>-vY6i^(k+>eRr%EcrVkzn(&+cm +zbK1vMImB>ht(AB)pjwTkywk19qHAw5LDlK|aN5jr#xOnn5yE6s!zZ*UEn0EHZE|ys +z{&}PrGyz67H>M73(ZSEvxLbJ9!h3o++T>1ttLt@>WhA>EHm;1@oyOZwvi5K{Cc6T9 +zZ{3X%K$e-iODQI^zxIU&e(WjOD0Q%!s8iJeWV4|65axk>@&Xvqh~=A~*>Tm3rIKEe +zntLMy!bG^;vH#-1k3Tj1tEXGn&3owh@=#%F<1dG-oO)iAe;pjm +zFob_NaPT&{&btFu@7y8-)MWp<^cH>Ar~F;2!^hLKEL|>ea-5j83kfVjXpZhewLaXv +znPPZsj@oOb#apyBp{F@iVwR2}@)?=&gbh^6CC~{lSnM?Y1afau##ZlK8Cv&QzJ0 +zxUEHf!0+qah-Fl~*MW$NQibapFju7GlH25UilH)`X=)SPUH}EPVK8kTo<8Qp_>4tk +zb*e^F2Pgrz4vM}F5<(MJyoyr&bkMZ>s5UMjlj6lg<`}*Lp@L`;junLot2%5fuJ&?NTA@HG +zbgrSNR-J$DtnEk{jlfappJld1yfGZvf*dNaOj65WzJqzUH}_XH{sD;pY}lf68RLtJ +z-=%`#)2ksy65(#CQrw77@vL-GKcINx>mF2qib8<; +zP22rGUFYdE2v$nwH>s~bkl=L5b7_6he2Yw{;B8Y7rIfrEXR4wcdsN;U893| +zlhlB|p6rA$%~jHU)f7Sb1@iM=r+@ZlobAYq=&DI$>>^N}BI_kch~&|hJ|4qZLO<+L +z%oJ`(Dlq*n*eke&S#oPi7u%d}^T$P0Zfq)=E^s^h!rL0a=vrUgDV>Dh!P$TQy8oh& +z#dgvWhannd%$f)itAWkmxP%*Q@=|sw>C4iHDlvG=Ywhs3yVCkqB&EuqjsCo#`m8g~#M|=H}6;*$X?VPuod74-y={Qk%vy +zU8gmaQV0$NY)huBl&A~L +zSZ=6c=sWDIey0n=U=KkrUjK^SbT8{sxPz&w%wAUOO=VjDr-?Ogf=~uDz>-a`GacKT +zys5tM_rPYd-4>w3|1>f6Ce=6nsU_NUMgu+0hZxg4#RDj1I2*U5w%LSTYg)Xi@v?E= +z-8z?4!vZE+HWeaLllBK)V#!guEQiGl@fDM}1gXj8H{Je0aiU{)!24|639<7y!z)6( +znYxZ`SBInBvv~fe*nN9R2(KAi79zDne*UR0KpyL?EGu +z9!P)yAqnZ{%kJ;@ob&v1KIgpeInVq42a}n}%p^0p@9Vw_9`v0b!qoADCFF)Bo1Lpc +zW}=_}TKPxAbVr?roBRQ?2WaNGpnH9WuzNEMO%I-LRHxZMtIlOXAcc$8!+~ZnE8Af#8*~@xUAVlUC@~}ay6P3{5lJSX*&Ds0uZZTMkHY#IIN>;d7Gm8SNI +z9#a9waTo4h8#c9Phc*p-*H!t-`ep2dl4}-^_s!~CILxnvqbh<|q@E?S#!^B`o<3{x +zEUY^#AG=I&-E-LYume6dX64!XLUA~PBQLvN$a!P3gXXJ}%S$3uQh9rIG^+o77Bb*E +znZJciW==0OdWmFYO&;OcGL8}{Mn)^qUBLBVqPcd< +zY4h_Xe&6j5Q8HbS^yZ{Y%ZMF)iTLmEMysbLQ|7GU?*}+#08ru&Dx`o2y!F;;TnBz-06c6{ygU6SEu)au*@em!YLU^w*RBeE2OevUtdXko3rSt<}gz +z%3TIG>Lf)xE>l#qMb-;Z@3%el)ASQ?%AdxB8v +zCa^xOQyd8xF!nC?R{pd2^@%)7p +zUX-G@UD~I@%igT5Bz2UC+V_tSbQK7HanEA>^Vni*Rwhlj%T^Eg9*3ugT`wf>kyVDK +z{T#OLS(d8baG+O^{o7H@iU&~^B7j0>usbj4 +z*E=s&qw`7{h=wpZns%&I_nXA{!Vp;iMZXnGdF(oc7^;jw{UK_+65!{9=u&@a7lbT` +zIH)|`{Uv-C0XAh`RuON$Vkqdw=DBzdOf8%P@Tpk~flL%GXKX`|4VSdbvd;BHM| +zNKWZK7w%GBMS#dcq8tAzt~C}=W?&KraF1pyOR)|k7(~a)D|p~~1MxW^BzM~Ckp-_z +z4)7eoLkwgZstO0%7SkYMw>(huN#nqLMByh)tmoizH9I^sqTw(TzixrN+TaVTRA_aI +z%pn#vaUv93jV!zD$?#QijIjn{uT;#FVahR$tN$ +zNQp??8~XBZGhY2wA~U=9GUnv`FEqq#kCMRlebeA2e#wR0U%jQ57*=9auzp47=T+K! +z1YxTAZ$9R~?N&Yp18>x}&8Sn~3}6_&=DEE}FoN$tyBUQl!po9)492o`&lD@JZv}<2 +z3pBck9kUiU)s|WAq1< +z$Xb+d7gMq~ssEMU9(zg0a{!iq)E1SuUc5o4NK};y*S@g8h7E;eOLV6luWG3t`C;Uo +zuTg@TXxC!KQHx531QT)fjEQkclAX6B#qXjSu{eU8sZLAfn>U`sCqy+#M>8${UOw&! +zfLC_`b$53jpgnnzaUJ8LfPirZE-z{A;x!s;r>)R@+?e+ysi!X^p+%ko6SgfwwTM$M +z<5H>(3>-%J?gY}$J=!CciAUz9#9}PsL;mq0S$LUhQ{}MJj +z1O_nxowS(*{G3Y0Rb}{PFX?iapM7Vfb%V&)*4Bjc`^iVsl=>w`#b%y>nxPUVmX*Os +z&!V=B;vb1WmflYUzw`V&K5)7`c;5WL^bBrT9Y}d&!LR3@KX|W3mlZ5o@GNq(Lzu4{ +zSEftmR(A&ZcA5RgiX+XBH$}F!abH!vf9z}cb0a^9x;cD)F{JliY~w*)I}VZ-St^#Q +zrc3c&-ur{f+;0=wThK37h%6WPlkuyrDDohXv`&ZPQqjVFY7Q(N2v*h-!>MQeW^0rz +zhSVFyT-^*$=aH28WXWR&O@lmU206fU!bc7kA})NVi@k`TD5Rn_>C)Sj$u@kF= +z0)EMK;S=;w#wU +z#lqmEGeZ`)fJTy;S=2Zn2;R@e8dutT@{;&SnrsLos}%l3NoHLNPtd^N49EUyuEqgn +z+YBK)gBxRKMu6$ivu(QS%`3Ro5dGt-9g-`arEfg~JG*uWUyt*9kuGzbv7EHO_N*;G +zb;8_ii56(_^1St`aKVL=nE34w%SZSAQ0!W}nPCh6wc$&yUq{xX4qzH3eM0P@x5{i& +zR79LKIC=gGY}B*(SF_JcxCXf!VZVO@5%8ue`RdK!7I(v?JF0w)RYCFCe=!(N&XnfA +zSh^w6IrqF>bg +zB3d#5_|MyIE#enR{`1bg7@XYyyj}Qv+Ni3*N!7`_>>c&?E_Ihl+E9(c4q(cVs|m?j +zZDkiunBSom^FOH*v^Yen*ISJy7C>)=2XQ7qVGu*l5|Fn$U9XMFQUS +zz>DSjAM-yfFgAd~!~&&Ft~64X62{soxpGPW;*UAf!lIehAk;v6{Z^yX=o)CTo#d4^F0`$o$)k=~Bx +zCncd>=3HVt4@vr!-{qM=K%x3BIB)#%8XkDy{R}An!XHC?K5(TUfMEa<3s0Ia@gr8U +z*w+vfw>z<0fkQL+&EshgR^99r-qN6@5*M(BV<-j?mwG$QP6)jjHsSBb`ZUYW1iec; +zEcmf6D8FdPbf4bq&ASh}k1eV)K;t>v +zq5(8p^m54+c(Z!pxH@rvIAYr^Nq8WkSW_PBiVy=4E7p-06%B+?Dj#bwZ%H)1IE +z`voRcYC53*V&X5>A?bVnnuVw#@Ars;wW)O_Ri$t1_vl8NArI=-%mD)q?8`BsiceN8 +z%(QdJy^M!fi4BuR!BkQBEj}=rmTbz{$4^te)mbu#m_tx|VBgxw`kHHd=77+sl+ +zS8yDQp^-h@d1&TVv}xXuH!#S;7mI&XYV0Ddd$Ro5pP%lOqI}gtUk<+ova{Al>5@&E +zrWc-+&@AUV$`>7k;4f8br#Ki&Fn|g2eJlrm5nl=S>LTWyiq=I<*Rg{~uV~7MUyD?^ +z%c38MH15i=LoDL(t#{E?D;>C(1B?i5p6@KESvs$d^q!9C55m1+g#xqlsR3RI`Zaqq +z)c@6P`TjNs-cBm4%!MK(sewTNB}GH&jWSM@&JD5_D#KmB_Xj +z9xtdo%(f01LBBB%7$eh>Ial*k_C4~)<`(>MbtaOg^z#0MxaA}Cmf_5tKB3nwmb*WApN3TPhj47?Ua7* +z8M3St7_|Kttn{A3CU%)}5N}qpGhn?b}e +z_(L4O2Pj8@`??sN<~Futtt+65n!djqy%4O_R$E#1vUk28edg1HWBP@|M#L-_vJ#lL +z19SBFInz#Y17y0_^+x-A2s)QZ|9O!8{op+oLwSUKwq_lq;krP)R&-lSN)fdC(CRXR +z=lGJ;)Kk-LD$kOVqD6hkX72Lp32G9k)I1F{$2*G?j&Fp2M!6l +zWeLl}*b0Cd9rCLa^#Nn4GWw5YUx`o2*njWvUmO2#?oce1ZSk|-Xai$JL=ldwD3QvG +zt)998tqhKwO_#mJM}(nXXfUYoF2r>ubXVJV +zcteaflDBOw(Cc9tqCE9N?k$bhMX7~$KdtIKEHe725mVpN2IxGv3H6#~zTaV)lAEXY +zUyM7dY4CRVfyJWkz%Mn+JumvkG;IDcF{Z($d9mPzCFt&7f(=B|fW1MG@`X-@H!$Dd +z9ImIFlDYIn%Q`N$0Z6=+$jml*=-CKUfZ>n$+Vf7QVh;l#)FbGKCpMSe{OWk}U>-0O +zT-U1e*IimIDME}FSDqrZ|oI{@W0V7uo;JSV*Vm1gU(*?0=#@6B%ff4-UF +zH1B~KI!$;ew9hU0eXv+g!XP*dbEuKoKv8nw?DD}3wP+pL@R97Bpv!Y_$QdZbw~TO0 +z)Ly^*0sHfT^8tpN8i_n5shIN!Cq1l9a(L=?X(7^MfN+cEOZDazj{Rjf9C`L;m>mi+ +zc+4g2mvEn^FLi~hq+M?u9z^3u(}>kcJw$OaQ6&ovY`en37LF|z76(elN@ApzcGs%pdf-Q{UVMZ#`YR1VX3nLBRq{76HlOi6ARId% +z&=nJ%w;B!Hdy5$Kiz^#AQ&L5jDkLl|sqT-&2KuK~&NnYk!8JlWc80L*&_*})c7*3Q +zXM$4@v}4&7xIO;Gzwx%E-de8Fnhx$j4Hjq9b6b_ejs!?_VvaHu)N +z@R}K+H8u)_$>aP7&}Zy0E3?8b6YmN*nrf*p^tx>4hCu5PrwLFGGWR?~BIG_3;zwV2S`V#)iLDS%(9xc)iMS~V6D +z=?lm^Fk;uRIGG(Bg{*|=-$;1yLU>>O?`g1EOY}vKf~bNp&-#UwCj&KKk}q`l!_pX9 +zRY)s(tK#RV0``QGkpaL%f*n;uT{;sqH}z2eyGQ?Ghw_x_rT8op_U2#szt +z@7q1Fl+yvSD4sYh)ga^+;EdLz`&I%Y{o4ybt;g)ouyr;`XIU5kZK2A`Xidbp^8q@1 +z>wbGS*qERCPDb1YnO&*P=6NhB*e8r&*8MY;fyL~3xr)KL04> +z)u2r}s@MqVfMSuRxG5~xIT*nF +z!qQ3{DUi@8iWCaPuq5z`yUd9^oFJ`fBi21C_k3XHU%dvPL<4fU&ZL9NKrAIbwd*FYi`DJu7 +zwm!gc+gK&5=Oeh^HXH9W{{ioKChKdy0cu7WfA(!Lc^3223^nChly}@& +z*%VdO)2mp#zfkcE>d%-rA`T5XAFq|YnEbfX42pan>LYv3j6N}5g4`h>CgrSrN`3wD=nzmNFnB?C#kXM$^8i~st*ClXDcxJlvq +znCEHzzOZ_r2WB%^gw@Z!uKn!aEAsPy5B%*fr&%UQ)C%tGJ@Bj`_diy2KXL8o2K;S` +zD1L3lYjGxo@UAQCdYId<>MsO40P*xl(9$6zRfa58MRAPzdjIl_Qn`n`>o?0QLWBoR +z&Wqh9RrS0w{B~w-`NJU##KX;i9zT2N!nygmm@P{N89+#W3q7uKy|fA +zrxWJ=CktMMYJPOPlRd9+gowDA4?3kRr{4J#EohjjbPs=Q8AC_t-r@)VlJ^#x5f%lk0h$W7$~#zl46x(bi*0e +zyGXpE&uzIu_f<{d={0vWu*JB=!*zb@Gp7ln9dMjkV4Vxu<|XD*rg4X(-M6yOogw62 +zV;iE_fYR7Z7;VttY^chf!tK>f40wMRyLZ(mb+|i1{&Kix +zeuJ=&d(Cy^teyD#05?Ex7>Anoal+$U+3<$IUrM2pxsR21iuc;0zTVxT516=dw`LD9 +zoSG*!#)w5qcanT@(EA9`2E)ca +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 +z$EwMYSW&1m?Ep(>sd<~pZPR)kD}jK9 +zw&-XB8C!CFaCJ(Ps;j{lu#L+SSIBFZ8CnfjGo~H2_U@iB$6?oVvz9UABX_JqnO}x= +zvOkp&*L>jiOVo@^arV{c>Ma+r9s_p_ZT7ua<@*v(A5gCT_-OAA&N$6%_?d3=nF$fr +zntX{&*=<6JO}q_dOH>oxP7pp}K^eN+D9TN(=!oYV47@KyqdyG3U2&Z9U0h^%g +z$0`~8(^E#O#0hr)dk$+Vn)4-Givqo6 +zt^0!}U+hcfBNlQsPix{!_Vz}HzmR|Ka9N8_ntuX=YRr*ge%R6q@PQWA3XekuHVmYatIVh#eZXm#IfTvD2wolB +z;?$oquzv;H`$Xdm;-UwEC)M+Q{`PB}RM$(T6 +z%Ggnj8vBy4C~S_7)YqjPU=^=VDK{Ki85#BX3A4xd^R(=1#0hM8vl4UbvrvDq@|_tm +zkUi@?GF_X1RGWo$2e|~?%K$mW!FvZ-IRQG;h4srx*MsJw89^nT3kDR{_@1On#CJIz +z;KlKbEWR0~^m4Jl`XTrU1cb@AZQI;)N!LF(6Xvt-1CZj|G6(DoCc1<78!!V0HAS6$ +z%m7RD0_Q)Bi7v_zPl&*bniruKx#XjEx +z4!jD^4SNmj(~F17FJvC(qh(ZX(m`oT%e3>+9b_={8!n!M&r3=I9x|VOn>MG$jaUbj +zv^WiDrm1?J5MI@DRDd4*^zjkAH>VWmAF!pv-o0{>IkAKuSlJ!m6{VXtmfKy%mj(R$k|{j!Ozh;*SjOsn%kVhcujGT;%z`{O?B_vgX}?~kc7 +zo_q3MnYS}uPvU+$|22oji3Mz~g55mKVf8{?k%i2_?3%d%V}FuWzsiMJ;5#o!wRt(b +zqZeQNNO3!0u3<=I5DL8BSWmc+tnpIdsKq`P!S( +z?cY2+PaEdj2Q6b()&H0`J@;52cbznRru28FcneXa_HN~eJOUp-jT^jG#x6c=JpK|L +z@amrQlRJ=6oCvtDddwg$#$O@pM;l!F>iAs76z5$JN&syc?DGc?_@s~C#7$B~Tno2f +z&ppABx=!6s_&UP>rMmC%J_`UTdYhXFkE}`Sd@_)AYi;EHg08}WqR`HY4o%Y#HzzD< +zmCfL;;tQo%O8uGt8#@%D)N&L4{5f+?EB+k3WExx%IlDZT%oqCnAw!ot^_E|V2}{=+ +zG`IKnKw76DM;M?f#dc5tL$2uh^oy@ZqQXeFszDK|iP`!mISp{4KcC`ZOb>3nt2vI@ +ziKLCiHLbsXS8oUW+Qx{d)Ub+y{kkR<+3b|;2G)eLS5((abWs^)^wUZf@JEHrF~Kri +zz$seMMMo3wkP~z-sYj+m;N*oEuWKLsA8YD*x5L7igL?35ju3rsmmSt#*N1MSr7c)e +z@zUOGx(0VmXLTieR}7{SNZdp@dLg$6WW2q$76gLhDV~gQV~;E?vkUlE#_aiLV;}BO +zzs>2FxuJzMWvIEPv_Fmrjdx{}e?1jSaak8?wLTbgjjr>1{yniE*hiztq5Fns+P$j! +z8Nc$8o>JPgObTK)Vw1N(;lO@1U;+YJazADi>ds|vjy|(JV0&#K&auLtf$@`jczX_@ +z=Cw(|{yT{+a`w*Ep^tAQoNx*8|7m3Q(7`*bH8(yyy4UdL@LYd}kcdw6{4`%SJe +z1m2&3^W&1SNvmHnS)LU&LJR=EyW?8pxGR!IU|+u2g)PN4>o-f9=bz9I2FsI*EDIWH +zKBh7DBPGq4J8Z?EMl574qsN1?P9#8~cBNB!DbgE0#_6xj|JKoa#3}0x40`LC?Qk*3SR0R +zKXEhDF6n%X2k{`?(qZ&bu&W(DbNOOT$}W7xr?yjuY0h@|kT(6XBF68jLIjGS +z`@t!L0#)l9LdV%XHQ&58FrY|X-|kaYhuY;dM%a|O5SnN7YV^>NlJQXcR*-Hs+4f$ewuY0yI*ng7ti=&M0(A+0sIP@Dj{Q_WT>lxU|><$3wG@1NnA+_Q21oVd%2oob@!cq1`)B*Cw$iVp2Fg +zTf8y>`Y)VM^*%NCD4|3-{j5R5u4A#dmyiI9cYeU-C8oLu%%hL5tWK0KKD^gdb{>Ck +zr=J0!p)`Mk5)6OmpS%#UPVI>U|40H}88M?m5@s0<5ajeUDeRlR6<2V2za#|UohOy? +zv~0_e4o245`JvlOaF;IrMDSoP+41dY?Mm$kTM0~>I`F|6NxIM&tGNVRq87}lw=xMP +zb&nys08JgGPoS~t4hrwMT~L$Uirz+I8*5=zqO@|8Bf=Xz0iLM-Dw)(W5MuTw<0@Vb +z2klWEL$&KqC??jJ+3lR+(92C^5=tQHt^iaLNLzX0So9h%nG>7Z72Ab_Ze#?`Gk>Z) +z#~soz%LrpGys$1#e`}6SQ5`&HC`i3>CkQ6|kf2?q#RfxSWmhhH*@thsSGCTUHHocH +zK_7NCSlNwDX7P#J*egF4d!2JenX0xG3oT|P%Dsi==On*-x~vGB*ozjR4l<&{qXSW(V(gLYwg@u%eS5)LR14KH +z0l;EdqOql_h}dSgvyeuD~Wk +zrLcXKkhhh5IByj4Jpsxk}!U^0R*n);y<~&f{n++m +zRI06%*uN5 +z@R@3NVGro)j0JGnvYYW$c*k3@%|gR|T6s3Q0$((syTErh!Phc%FD58gRx*vsLtLwg +z93#`vKYZI(CYk5fMI1YI`DyzjFy|Ysg}C8&ktfYRW)YISv2k*nV98DwH1|ZASRzxX +zT4n6ceVt)>^>LPrh!?J^W4+U5pI8*V4?H8XaG|aa0Pf3_7EfA8%|Q3kC`b(|NvO{5b(9R} +zCIZ%jz0jvUaKUfFI_L=pd_?*YCn%)(I_Isgdgl|kV7&>(H%#Ad2Jo7&m`M$Sjm2l$ +z9HETqcY^iW$gemRCo;g%1@NM^ZBVknaHDz&=+_)C(%n +ziM;d|=#-KzS_x`{&{aVt+6%k;cC+z88^Hm5aZ4IBS6qR!LTsZPS>0^TTIp6b?%T^Z +zg>jG=~7pPY)K=l5iN03YQ8(2>?;5N+pBe(iRq +zbOxg@{2N038{HLG0*sa2rc;F{S&JeQ13FhY2>Uq}+`nPi{{Z>;v`ph0G84?yoI!W~ +z>O^ieBd`Owcl{42;Q-#jYeM8R-Zf(V?#xDmPGGQ>o0B15yaWcsasErQVyY~${M&SO +z^V9=My2W;F@RteL+qnwwh$Q +z;?3y;vI$N%cI^~UG=D#=>1rPe@V@G(e`dflm=}>hQH_NKQD^{qDwRlM)rxS%+Ro(p +zijw#Ah3`Ev1f&h#4A_OB?{!VU)vnO`h04Etci!Yg0!OO!f3(?_*Jc(h%RW}IX$LA1(rJASa;T+|b(T{)Yq +z_y(NkPG3V4fXO&-7ZGhI6xayEik4lWdI?H>xtFPtOIYfP*!&+8oKt@?|x>3qH`xtbE>^HWz&F@U}NmkeN>vozh +zRXA!E>ttuGfD3#4^v?B|Uk$EwGInk0qikUVRolx2dkb0z35pU8dyZBIe|B)R()%9O +zUibLdHO-5u%R`>VpE&xx&N9xAx&=A1pp~6b%=(;cwa|(?jfw)3p32%Jgxp{97i!#7 +zx#v~-k0#l|<4uU_|9oDseeA2%47V9zYds`qFAK3Jxc~D9WfeLh$%2bFo#TGxGf3) +zi|O(O%~-l@mi+a|QxyrhHbj1}gt2m3)Lvry7u4b2s~^oHpC=>E4c+=0Dodm>?G0qx +zBD^G|`mNN{MG`C!%F4@rz-wbZUI>NDljzEUp(LV!XfvQcqxoERmVo>6X{;yIh>f}I +z(nQ`tdEx{+R}Z42cR~Ut6V%j~mRXHv#6-r2L}phnxJAb?+kJ +zCS(}d@Qs_lNIl8K`|^YF79LxIWUxu;cS&`I=7^a9P55SR68*D2AY +z?UB$4jpf3Nr%mza5sJ09-15eLMyaDpd$pkla9!okX3BnYh+6ah(0v|x*iPr;%*Z#NXC6}xxK}T#{nSx_lzlT#40tIn7~thDuj9(`%0T1d +zN)_9Ln3A|k_RF;1drBMPvqnqV?5)p0{&kO{)40+Ff~+vlz#nkm?zuRKHO6f-U8gnd +zwH^!*XJfoZx*?c;4xLRDZHT^29gfz5{R> +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 +zEZIi9?TdB5xUq|P7uHJs12; +zxqjJEV>X8=?k;7q`e#XL_ccv%A2)qqkhRi +z_Hfk$$Qh=>(yBkG#mM@O=EXdmi8PZ1%n=8>z;znTOtraAX^yFvnb5}g!P-UA%=KDC +zJOf%DsrHdH26QsO!k~iovS9CTvi2G4Gdw}20|$mpfMVsiYgV1R=NkwphSZY#yErQC +z8;yf5nJcM|1KxXI*DjpOpyP93D%S<5G~nMucZ=BJH><^9Y1?l>hsg;{GM|$mMPCWk46J;8|--Mihm8SQ5>X~7z +zm{qI=7z+qQt3e6ZOYnZM^0WVJ=Ti*q8ZR4hGDTt(5h^t^JZ=n0oA1Ot3|)Gxea`EC +zNk!G`p(+nSLBDjUy=M30*cQ|&W{-t)i6fOMspeMSP`9Ti#(QGk^P +zT0s0bK*+Uq9eAt5qpIzxVJ-cG?Rm0T8*+bE +z)q^*meC)8U`~v?dYsV08L-NGlbjpCi2)iZdNvFabM|DU7lXSyX#WZs$BDO65jr|CVvYU2qUEPQ0CJSd_Eb4#ka}@zlt{Ai4olx}F +zagw_1x|k1RxT1QzmWn0$u+C=TTk**>uB#Aum0iWG0IO}}TUaN)zIdH +zp3J)9$(}#T1QHrsG&D-1g1o9Beue#U#ZDLPIa+WbZQu0}AO!;b5Q6hmszx5Nzu84C +zZ#@pgMg|MtH+yxTlOJSa`BGN-owno9M@>MuwB5+}s~xv(Gfx0&?Q;by2={@!*{v(z +z`Ab;$aK{n(h1T= +z3}v%Zsu9&xashP}^I~2SI#E7M^w#FWr{>W%RrK9j8^4vBx>8ivYdm`H4ywWDqZ%im6}uSuH|#&zsRwa?kQot%K@ +z;`nau)RSr2@#Y?Ybq~rvEroejHr0eT)G-?uNku);*FT4*HbJ~ZpT+Oq^A}Dz4Cl2%CCO|F +zHiVaI2-|Qcnk`+)eCIz@7+N$t#BiJ|^Q*xXps45_I-CvNpl3I;I6?B~_(wC~QPsk!ipn;{CuWZzu#6bnxa=mS;$@VO#HL5ydomnisz +zkJy@aA)w1IBRD1IvfEs?162EF#Mlg>W|(Xfy{>tRFJXcLCydhV8oOPlmR>#@#FYVd{fwJcYhJmijj^|?+weow3m+JjmH!Om&JD>2G7JGYk +z1((s>O{P2xWh@X`E3ZzL0xO17QxBUcG5k +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 +z14FE8uOl|Jx*qSg>c@ylMrqFiq#HCe@>$ +zIg7T4RoqPa=9r50T?glu3*N@kY-_0sm}t2v%~|atZKY+6(IkFwfws_$+xCm;AlQ`> +z7r55*gMug+b(JBTNH6bQN$OSD4lYIus;1`!p}5YWb-k4REwz_QwgXMMTQgu1DyieR +zlQiJHd^$7tpl{aW;aJ!0j%yMtDfjxNoV&%PuH&q&rEW#BGXB*RJ9Fe|#S0;;xlj9d +zTHp5AF=1%%+xHOHQw86wY+DTP9t?7&ArO+8RshA%*hK&roaRx#)F@_X=iInY3u#Xk +zI3xXaawjlEK|Njfe_i@%2pj4vxUg7U2pnR^eSjrSq}m!tDL|VLpLKrd;I-k7QZOVK +z3pMwIOdC?>BzR&_Xq9?puCPZx_vZBWixu3mGYDjt(ugSw83{FHXZ_UOkPBm~X+d83Yz +zc;gjWY$b5ezo*?pgQ@4cM$Ylg^NNfm?y3uevFg-0B*{@MB(RMz>Uuqw%b&8ZQoJ2% +z!RLbiK%#a9bWl$!<9B`09_%CX~YI;McUM>Zc49EGQ~c +zGHNn`TaFTk{#K$JHglDBUEG?lJ1TtI=|LQsk?;4_RH;0(Sy{u;hEk2}dei;A<<^NB +zIQemWtlS>zv9VH2*voGhk2E~0QPM9g??I3;?fsKfeobnRJy!lp!0%+f-h8)j48v?O +z)PM#oXu&JL|Nma$7Fhen0@ngo!^$K=%e3wpEjY$APYV}l#pC%k!Hmh8fKz{gVo`A!i +zU1C?2Tb;C9Xe~3x)Pz5SpTbQr-&b1YTq?|WUb{F?#MH8ufEwcVlRYwG`YE<@E3@vAn{17}rf*=!?0Z-r1G0Ru-8QmJg +zrtd3Y0Xx{>)Fx5$ioPKU>snIi2i_QPoCg_T&aR46+pAjN7Grjuq5d(zp|1$5C8>9K +z4@m;jXCWU>W~Y!j`2%kh1qxOpG2#tjkdvQd2zMQMA3jj~7EffEek>mr_6%x~!}F3o +z`CISu&suvnO<=o6wnVGP8;duq6r^F=N6bFNyiXI{3`(f#9N?$eVC=6OaS@0%tB1Ji +z&VfmI&+0NqQdgjsMHjBIGyN>Dy~$^MUW#Cobd_uUWhiwJ58_isW`GgJ2Ldpey(I7y +zVji%xl^_KS{g_Zb)RhAK;x!k|>vTq7Z?N +zwDW4=XyR&S0nNLnB!;OsKcU5>iigN%SUx>Ia+3Pb;XLTgapq}?8*&R3-FqK7z=7M) +zI`I;q*a<=$yXs%mXko4hIOVS1%ySvN?~6I5#hpPU`w4esbF}UiLIpBJ|2TQz?P9pN +zA>c4;)w5M_B>LooU*>amEhNV>4wssb)?ua?O#`aA{nEA<3y?7e%>n8JdT2)XV!baj}cBl)bO`!Uv-+gn5FEAJ2e_Sr}EbCPE&qY~GVA)D`R +zVR1X)Q%tcI@vB1;WLQTsC*-Y23$`ipt+7ITo}cP(*A-*O)Xq@+&E%y*y`rw07m +zqk8nyPRRIwYK=BfGBnjA)rB8C>5kccKpKt3rYl=aAOY@5a0$(2j3Au2_YawHge2h1+Vfg0V?t}Ns{P)-n!C~1G +z8cKJ&zZkT(E^i5XKnh--tDL%vJ!Wk9*JY_3+&K76qgNYCJgDUUefL$})Jt4H#eQTP +zP*zg^hG+_Hcf>%t!-_ws*!%ZP3R09IIp}R_D`xcD51{7{nr-`1f1FbEIN-|NzktW$ +z%3ou#V_o$oqF(HYd8q#7sns6wp&#oPg{acSv759DoCYXI8MeB@s9Gb=|_!e`eC +zB{QOb$cLus!S0lu6DEa)&$D_Dz244`5*N>6s%@CpAz9rTZ67J`$_kF$g{+pJBgKEq?8ZlXNjIH`qT`kFXApN5opS)6 +z;97AJ*8kIcgBYZy#GX`I_FIRd&XIbIv(ZZIb}JO+24oW794m^BnU+!H7t!~|iZa6Y +z(0#h1_{=3|Y=$$k)&w)F+u$sjx>Fyd#B~x^3VZ2OiNl}bR0YwCy)c8@i^`_NM63pE +zMc3e??!$4)|Mt|FC<&V^&gz7JaFsGnc<_*l9pHHNTL!3(%lIsDB!(>bhP}M|!)_~b +zya(g4V`GRrSCLOCPFgv?RNSsqj$PYV?@Zi*-JPZTu#2{sOaArxX6<{*uCB<8m-&oL +zpWxdx@4+a+KP77iWm!s;x{QDr=iuQC#^FVF#p2}jsG_V|Zcid%w0_c(mSlF3`NjM0 +ziR*t$E8wLG`|Ulw>gPSzvMZ4V+0d>VbFK}Q%|p1*2ltKVwl+?^e@J|-hHb%Bc^AB5 +z-J|PBh^2|NtU`OovgJtu+u0nZqq-}IWlw4KnN_;$Al++bFOTc7U@y;dHtdQIxMF0> +z{0&}3H)G{skuiRYiFym4%vN#pybdIka+qV&O!g<^dh87Gr9v}a=mTQu|Kl#zMeOw3 +zV7V;6&Cb)(h8=c_rt+cFd`UM4o+2Jm#O7YQ=_D3f6AFCV!h@R# +zLLY$wemAJc5Ys-W_mmx6XVf&G7LBkr;A+~LU2XXtw-gsZ0yFc7tvdHE*6!gXUlUO +z?DUqLQ6R{&<0j^neCbV8WnCbChbv;)E#>A|WVLX^et1pJyZomb*U0Z=#~$EuYfm7) +z!vf3wl$#f=&fzvgmBV>s30c98@vocvKRmwqZf05!?yi)lr!--0ME5?VVA4u}2D}Z; +zrwjS5_8QxQ5+rRfGPn-|&1wkDcI;VG?f^`PuJ-1zv*M6Xu|_pcwBiidyx( +z>r#126yWNKQb&VZa=*R76ly=_Ia(0_UGJyb%dy?7p05{^L2_DsGxaqy%ZfzX?fIzPdns!<57c<5@n3Q=cCqQ8#cPZ);Ys_qe@~5c +zp8%sPw`J+9=jx+e~>)adr6 +z#H^4gT!hmvO1t8(I){o+u(&s|Vl+FtoEi#BiNqw`OTh=rT-a6Te|U8#^NLrFhL-jx +zvirZ?fGp7(GB90Hi|sx?Vns(`lEYztmO1|U9XqpMelE^&JhV0jH&ai_fEpMZ&gjli +z7`MGX@Cx(TiHA?Y!ME~{%b=fDoCOc(-kfTvJl%E4RN=WLt3sZdbL@f@p=5{4i4-ZT +z(XnZcAxV-5@+4)<|146X=Bsb@shO1*+jg##aVhN`AF;+_yO)?+C1bR8N +zE6jE7wT3NmTd%H5>F?rWo$GDG?QJODLuyKb4D=R0yA?EFxHzYm8^2o|sTw1K3 +zAY;2#|MGrRq1e{go%cVuYjzDDx;QP&f2pdxJCAVwIQ3!UHs+%z79KGsB$aD*1lf~s +zEmUvh+O|`_Rg00vW+oX;6DGyxPRJ)rypkE|E!<~v-;uP#xwqyat!nj?0ogUPznGF9 +zm-EfV%BHM|T3-66R^y%`RBJ%AbFW{Uo=fJ1R?Q*D7xwNimj46+XmF0>?1>qcoel16Cm*hHp3yOYG&ZqgkG=K5tR+Q~SBoMPb$+PPOf;N`l;29{P@c?UY +zjNo5cq1SW~h?(i=n8?_Crrr@M*f0faVO;rgueK5>j8W=Ld;FB*nP3AfkBskj$XSJ$ +z#vr`&*g+Qf1N^{7y8*>#T-`WOhB97F)m)6@DpAHO!N$)7^^FRMqL+r4iL2j{G0sba +zOpq?N`Y45%#e%q;Kko<9NMnj-2-pCNo?c8%CIy7kD4zZi=;t&>q7m3oDezM=9qw=j +z0XhksHMnH_ZdZ(RNAW)>Wb3PzMPXvPu6{X_y!5+m&!d2EYyFM5N|#-Op{=&-SAxaA +zbarR_cw_*O +z>-Xud&!?CPKMj6iALw3EnI?I;{SURaVvXLhHX~&FaVaN)qK!>(_{z)D#&N1j>UB3WWe;;ERx +zwFvt1!Omt5TqmdaQ?$qCvOT?4ckCXmZv^KMzHqD|SMaFGVvZk3*|L;xq`8(e=^VU- +zJJdjyu4hH>)geIPdL0|-1*_scWQ+4qgWkhFKFEVTu{FK20Yzhmo)e}q9A|X>Liz;i +zud+-cPi@2bJ3c%7qh3B_UC{bGb;rT=*b#Z-?%f~D{2%X&gTSDAo{^0PficeRH(<68 +zzL(#kmVRYdE~aj6g-3DbBKA3r&fAe@nsa3@M78Ku7FE?UD{mz;<9drNbGiFdKE6SJ +zMqZLWp#*P?M}MBk6b`-)JJkHLMUQxQ*U=wNjo*5H-0}6@Gcbv#miB0>+crE1Nh5N( +z(-u^*)$Q_T)wR;`)un{z?`hsB2d+uga5&?}a1Kyvuihg1acZO}%$b!XkR_@}fMZKI +zgOv-?L%20Du8=np{5r^e5TOUPWDgp#zb;l*5mAKE3JTei%o|y)0*Y=5&C=@w%UDlk +zB2|H>5JQ_m&%C84r4dD3qAOwPdf9&@3s>*2BPJ93It$Xc96#6Ls}qexRJjf51R5gE +z89I(NKQ`7E;WW;SX^ss4>`Gg*v<_cuN5&Qst^MmCAu4nNrZ+c!2X%U-^5@FJts9O^ +z*JUQ!=PxM<4m}%1bnllpyB5VNVvX@;#!_nDcZK?W1X|$Zo1a7TBACniiCnkK3t>11+~+ViFSo$ +z-d+1xZOZJvd|zc#b?%LxWFnEezo+v{tb?7`2Qs~7^%?XNLJ+yfM07){x@`C&Y(>l9 +zqwH)y=DiqnNW4SqQJkh=Oeo8b90tt0RJo?gv;D|}qF(A$;?LvOGQ`>8>r<%;_9=Ht +z1$w}4V7tHyj$lPEJHs-Z*S-|asm;W$Wo!@hAjV;4UHz}9_Lhpyi@@8y78YdHSf3noh>Tg*bclxW*AFxh2UBl5h(D_sv6fzB +z1$9j6hM4V<5XTmwddxsL8j9xbxcspI8)ZNp*>{YD@3*DW3 +zX+@_g*2k>H`xa!<6!Ri>+1Y5)6g?U3kgUpe7H2#Dh!yTtou&l;h+X@kSgix9zQP;C +zL{+{fv?F#gQ568}fgYHySkRwP69xjy52_4J7;wX#?H6XNf);~Lpo+hG5!T?00j{~d +zrTiN(&?T^5_&s(p4)cN{%%;{9AvhTrU_u$ik5gqF6zz@W-@u1B(r`nfm_qYvxA-1}14QBH(alP}XkuhW +z+T~x$>LK?o)S*93N~Fz2?r*KqR_Bj=FwV#IY-S}^bUfadp8>!LunKA#@wRrF5uhQr +zk>PBGLgH%}aNLe*Uq@d@E6sy%;f-bij-p%6p_9@|&3m1{Wr+Un$GSBdya`0;Q8ev& +zTVrS9Ba~ZAjog2WUCmhg?;D|$s*FXfEX;+!HqV@Zot#seU^o)ph})!+{eFR!re6A7 +zVEyKzrVVj9W{(DcfCE9u)66ia`vpw~%*-x3M~OQ}zb#oW)mUNm$&2gy?4?wsm?mDt +zT9THZ(Vi?XrrwMKAz_x=P^1!jhwvr+xAF0(8Bf2oE}ASlH~O>^A5ZU66cDW^B{9#f!)Z~ecBd+(^GvcF&0GRi0dqo_DiqB4jMO-4E- +zamIp*!XQeA2#AQ0-jk46K}CXy0@9+=L`vvAL}`&4dgw?EArv75NJzOm&OE>8-oNg; +z>%Hr}%eAsxJEw$mPImV9)4ooZIu=UqoKTKTN*JAUs(Jt09>jxJwm&x@JinelLb6&o +zRz@^aJF$8!doQyg*ds8{e0ApR$uz`1l>?<5=J4!Jk|81|t8a)Z9IO65&CpHZk1)a! +z{G(42>WI-7-|f_CWNeQN_Uv0pb!_!wtfMT{L!DAn{A@Lg3!tAdcDINx!xt5{7tv~gXaBlLAxZ@+{LMI&=r4tPKg3 +zUOWHCo_YZ4=6aMPLvbDyFOLe*iVMXg0e9rY1sUf&k_pWp!@8V$q1A%ENwg%JO{gn4H +z?$X-9NzJj3R}Zli-SXor +z7-8Pj+|7_^aBNLft==2cduUoH +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 +zpICV%UY(OIL|yFMFdvdh3)U4emJE;?m>a2(4Z +z_tJIEh*xn@Gt6%Cj_<*{m-6(IT^#PQ?Wz45pFakv9;`5jH)ciNo}z&9)9`0&o8ixH +zh#4AvlG$tZT9`t*cUqbw%i98dX9po9X30>7$uvrCKqozrJ5?^BGsOrgUehGY#~w1dpu;95D1? +zOo3%g0e}zadFcZ9d~Ry+yz(4Cax_3=-N0N0R%4^UnN&h4Abf;OB1It3KVyAs(wrY- +znmGSfu%-YVG)E4;=KNi>U|u|_Ea$)R?MN$bAn{7z{#;+55nv3_X3xP)d-tq;ktWeGrTU1IV?_n +z<9_*6I%zo2GV-y(zQANgc!s~_o2M!_`6Fj^)ffmmCYL!T&iVya8V@SMx!bo2TJbej +zbGI$Xi1vy~O|@S;@{6nk>Sa^3rd{qAM0h^ER7Ht{Nc3)@va)=R=UDdqt|tFo$@kVN +zuX$BV`2xtL&MFs70j#qBqYNjt{CEQGgXzX=4o-`o_*wX^1pd-P&O{GWE))g!Qj%M=#9pp-3K1< +z*Adz&QROMA!Bdn;KkCv6+;uab_7WFNDkpNH0BfYc#(83{QvtJ-C@dA0KrU>e!55<7 +zivVlDFAzq-I881+`i*|O*3!T8PMg8D&P0yP5Dq>Gzx?HK$OYGtDVJHC!)POkyiICV +zYRg1qjOLL0o6Y?jh*>gc3eh1@DjNIR?$hER6?alHI`}_*JxLG7npD( +z*-epHd5un%h^5e9$!&TP;n3xkW9GTa41SgZNEx-ZXs>@y73!OcpqQ*0L0)*c<1t9z +zap$;IS!RqZ-@x$$opbY^i679QQ?YE9ZWhBTRlf0s;k;#BQ#2-QuZs*@^uM^L>i>or@GyWyJCLL3NkZfc4l&gFl +z5dOtIPwg&p?Dm<$wX9aI5V!UudXvPKLJ>19`S)rfmG|k4eUE`8Rxq|?-*@hBHTmKGRD>bT(xN#1MBl^Px=Wf-}N(a>$}ibDbL;Cov+cWEmXrc +z*$Nhc-tPB$!Rv6UCcnz8|Hq-#RvPxkdMumttptHHUqAZe%nYFWa_lZ}K71!y1D}5{ +z0#O)C1`^ct-39RJalb3VMd`H!{DJN>5g4Dxu6DdvCA<-!6}<73e^QFz!i`%Jr}A$I +z?mn({dNtbXkj{jB`iOAjWH#P@gafIINDKPUSgqxbAv +zqr2PzDtwhVSi71!TBKp)glZC-GikqD6eby9KfH_VKSLz*5o0zN9zmI#`w=Q}{nu&` +zcKA*OMzU2<{%xYWL^)t>CclDfsBqfWFR)@J)? +zX=oZHh=LrwqtDG|Z&DBX5aSq;56&$j1Mc*xCwBcCqxU9{BptMomu +zl~{56hmH2K}Y6qI}m +z;kL44>;moC`c(Wu!1RhJU%+vPxugp|o(cR@w<0#CH2y#r7L +z_R{*cMHQ@>FGf|+ZH5W%axe6uB%oejm7c4U{qMIum`cda2PJBAR=L7K +z`6v64|NVE+J&lAN*$D$P)TT?8XX#JgOXnWVX4w_o6XboEJcZFPlq_C+zZ5|Etvmx% +zT9sk>zCYMq&_M+hbxTb?Q*1mb42U^JdgiY3UFLtv1Y9|0KhS4lq=z5BY++r>z9t!9 +z2N>(&?#zQg1bsGsaCHVozaTHtT9^Aj>5N*lCN0&VD6569sau-o(#53`H5%tsf_nE! +zJGN5Weyj2CR#|t*%}?sjk=^j=^LDe7r4tKmkgegnuduf|UniMi7uJIt3kU8rYSluQ}FW81{ +zmnUo8M!?p!tlIedSTr{dA%nWgyJAUr5Jokrc#yR63N2`27Ppb-WftmIZMnS7!ur0T +z1Cc!byTK&F+UZ!*f~Ed^(0Du`{wLl?ypa@%yN_P+K=~5&h_tL)efxl;%I& +z9Y;v;9=@z7+_hz^#Et^fpA=`V8d~Pzf4!-vslYsmmx^==OoKl+_PBd`>`uBeg!Rl4 +z)#Ja18d_TbO0v*u?%bR1p}f(Fyij|p!@f7(&z!o=*{z7;hNhZyOq;_e12W?c)wiVf +zxs!ZLTt${-X)j_g@vloqXrFW@4`0rJ#xuJ(zd2^TKUT6$=f?MhU&-||LXDcWP6j7i +zW)K+~N3wSzG4J+_R&W&gOgv#oSOJiAaPl=6R<#9AA7sOGL*a?wB^JX +z4}IaVHD&PQ!qY$@+Eyn#3@SWzhD&<^xfWKCvk +z!1VbO7K90Js_)gW2BV4t5B%h0U8M{t%LMu^~Q=%qd9BJj2Y) +zERE`mTWcb$tnC5hxExF?L*tt&Y +z>?p}TbomrV__^1RzPWonE~OWC<4T_<&xpFPiGYpO95kVcDfDT7*0teTnBJ$Cn@VMW +zbk3CY?WEN|MoYiIte^mLT)vb2ailu}JKY>K7d*B)yZX1_Z6rc)UgCxgss8hB=6Y37 +z>6DDwZk@)9#1p?4d_4HNwLi~zv5b&qPv +zbDx#>#PNyo-bZk~m|0R3 +z&0lRgM4eww_0d>Na1;mPmGy~FSt8)5J8?zp>$-xxba-M+S0b`>W6|#g_)ci&*A{@I +zUI1SaK>b->QJjlVgkZj3<9~%P8i2+!>L?WS{xFwQv!Oskec~TYI)>8jEsxL-LDzR7 +zZ$2>w%gfGJ0jeI6@gPF)`_yp~;YE;q^yVIcmY;Otbe3t)gdCvz)orMb9YnB@4^J`s4 +z`(Kr{;mWY?&(<36KwB>Vo}QEUvL;wW0(5q@HhQ8(s=cdBB@aSI_E`FAMT9GN2t&reYm01!y*3ICM#Kt#1 +zSREv17WKdrs4W?BR}l#{22ku|lj>Uo+uxIeyRK +zq;E{LReZJec5=>St%_~MkLTM?YBXe7Z(BW9BK2R@@ZL~r?DMyka +zvHqmjU^iC&@?<{@(SjI~E&;d~>J6#>2SjQaB~_BN5r60)dB{c6>u>#u2|tNbw$|l^ +zhf^{B>aL9KLtW5=c0+L6eoKLvXEmBD)h*+zQnOI}mw;^xAL&`Rvu@EIx)XgcTj^k) +z3Djl6FyPZpQl;KG_EC%c;1}`=G{sD7|AG~R(WMIo9)dVM;I*1xx*}{q;(}3hMXyA& +zr)$b+3)B3Z#uF)*j7ObewCy^55!W=~jez*&AlZtzT*rBh8K(7iS!N_CYC+veD&a%Gq*R2 +zSAr@a#{+n~VDtnW)UG;xcG(bcHfNkBC_7z9=GYga!<1RVS7>t$0%t&cHllKQRJbs% +z+bfN_IAYNyklsfP=wD{V!ya|~ecqej8mAIDa{7ln`a_PHO|rZKF{tTVazI1#Qn2ve +zi9k95H#sJNth*1>S|wTpjd^Xx^lP!Oe6NojCA@F`pj!S$E +z))i`FHBeg{n_7pTz2XB4z9kDU`XAblO*u+hY&ZY$LF +z7d&Z!ok*CEN_K`+z(BKaSU`TyapO0S<0Q*XSc+hEUb&(sZyp897wIq>9!=V2_E{+y +zs7W{%qRbPquNABP&p`n&L@=;k`ch(=OEmJgJzRf_{hWUiH0@CYpmrnxyqM7PzAW~e +za8r{<@i~rQW&O46-`zr7NMbaDlA4tcclTdndR5jk$&1W;y|GZ*J>?in6*%^FL0EIWWyQ7bgA)%qS5pyg=Wowjz +z*2qIw6W4qC6D;dKpGZq9+xFs&%^KfgAwDq6&UwRs>cDP5x>|?(hs`-VGvEI@W{iLT +zqFo5|a+yJhP_fl}4*&VtYXD+LO3E}vjBb#-J{9bKmFn|DV(69!!0Z+UzVsGT`-eBq +zMgG0#il2#=deeJ#%R#(`jfriLvw%CcWtDOdX2{1TM5y2K4E^RC&7AottD<}9lp`(@umwr%(NgK;!)3+!(ZTQ(wyIfG-N$T^!B^i#R&kX#X0H-+Y7iA&B&i;@c+L +z4nIjX+N@xRGt9Q!`ChG!s=3@+Zz-JS{8@nyDXoj$5Nu-i$m0~il1C4+sgjAlqi&1~y{9(FK|6}^hnFfe +zr2V|`r!7waQf#?>w3Uxv>fyotH%T1NXs_d_$-IYG#hW4lPk62_7G1qkJb{{Qw7=Jx +zTd1Vk&`guaT5h&|6XWy7^n&7=#acMemH08T8tX^;snFEtbyf(j#BE2sZmBtOHuFrh +z%D0c$H_0501rC$254E;N>#mfSRDj)*hx{>=5M#2wm+iUffMNtx2L-j# +z|8exhqODrB4o(f|cguTCT690@J}=W6Df?%nAFUT=%mzA^!RNVc2$6eCfqfox-D|&b +zrW)dAobCS8yT*G9^KgTVI8eIm*9qn!)|8tahuA(70Y*h^`RoFliT&>a8gBxB#o3AAK`}!S1#r)|Bu@b%TN(KGw2!B;ud^%2^~x8t~*yF}3@s +zu+WzmErTB2ZL!}dq^Vnbew;o&7azD*Q*5;`pUwWmtX%S&oN1dYL?T;aJkT)Uk2l+; +zva>Gb48G{rj16%?JZIs!Yen5=(B*NIjyjSz=zZnDzXILzIJz7KDyYB`#}7IDKO9@M +zBy7mwe@u;=B#$`9gZ%=`zBN*|U_}k{ic$>n;D#1e*W7(LcONdSP^cnnYG*Or~?b=Z`*enQ#>Of|CK) +z1`Jit$vBi77pdEY7=MSfCZf#ymXOn!-w1QXci&eO?dy1Xm53?(XsJj0VtF{=w3_^N +zI~0BC;l=ixx2^Y-h*LnG7wT+L_rxZ5|LX{~C(peSakgUZ+jZ2g!|1(^D?B0GjECz6 +zj9bTqh60$mT_@~ReIGxK&2hPg5s0Yk!+6CXqISmw_(Vm9%L=$8|4&CRSrD4I_u8c{ +z(Ka|^=+S1@fm3L9%9)J589Rup+ai<1|M0sIu +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 +zA1^<5SE+_NL8Y$jsX>+pMrptgdkhJCSw` +z#urVW;+YNW}czU?{eAuT)r<7K*_Uci!E6`<~_Kt7li?=Gm8b +z9AHnhxZbt5nYPNhD#Q2+aHX`&pz=b-8>#Gor0oMv`bA&&Bz0cK0fJZ7ih5N@n}l0X +zS=HyHRQ1*$O<@u7fPb5#fvD%+Ys?yXCP?82 +zKNFYGosL2Ley@4szYv17D=-%c}W-9PrWXYMJM+)PFi|9YDl^w +z|b*^2?NrVmQxAHl+F8Ek6q(t^(j6%MIxK}I!G2Sr$hPW!LNiN(@pCJ1 +z(R%m^G*z{ju#|v&qxG95uS58s+Olo>?2tBntaJ_!eHvPh`@UASGOE#HMKc$BG!Ams +z9~GmI%Pno*-81&;IFPr;O*zWA^-682cBhymx)hZA03(RWqyB4HlgU>w0NAB#1Hrn4 +z@QoEiV|z79YpjennvS-qA-rwl&q(djXNp~@;k?oKBi-|hQlf@V!%PKTi}W_%TVC+K +zXe#XOW(O&4Eyi`$T~?;PtN{>I`gU@zA51PAmJCD_S{+~UjMeg**n4YqZ_Bl+Q~ +z184cmf9BiqzazMv&&7DA_qTNm_s +z<6X+{SXf~(|NVQQ*Yg3kM(u{LXHxrnu6)Rlu?z-u8?q28oF=`KuU)_YqGj%@-Gx!Z +zUCkL*qv5@=&;hIfhv4FuKgklWoIHOZVqTMp9`Vtjh#nv2+G(pi!3o#+QVb^2dbIy4Xm4$+!Uw +zs7y{D-9p!sEdF<=AvW1TIJnP#sgOE?!g9xIcvO~K4$Ld$;9v@_dG{3icd293cP9qU +z_xU`VDQVMp_o#?-PNdxlJ$~s{@}cA{MK)O*mybZ3XTk^Wg)BDAysQLlM07Jo;o825n~y=bg7f$MdKADyw71@EJjCwo(JZ$j$k{}KLIRM7;8nw6VN?+( +zbMk2kqZdbs^di)7=Cr$Mo<_;X?L5ykWbjb&xsn07zadJ`r~IwI50Pr?U{@K{gH+wo +z+z=K?a{Zt@-|bhL=0o8<671uI&7`GiHA@7#-OwP4OL(%(vR_;363;s37xw264#J4; +zg#kT)j(skaX@evF&P0W +z=hg%N?%#!Ii2~+r0OWv!{@39D?x4R3EX=UM+^&cyFDjfJatq|xh<`Ci6aO|yz>!^1 +z3#+rec64a@t+7H{z}5S%c8YW7O+{96s~XzjWzak)A1JgH=rSD5A1^hx1X7y6Do;l2 +zX!kfV*ANE0^1$T?LW*3VqUn&GItrK)Q-^y~Q8U>a>yD%#ZhhNWm-2@|TtO2-D*J%O +zngYkqlVr`vGGaGm_;aC#@m!+k;ipd>J%a)1&AG>- +zahh7H?~vN{g=Frk*A)n+0iCgg>)rIr-DuRWQ%I_MeQN1+-C{%nR&G7axyM)Gki$I{ +z$fA-e=_UxOo9&Lkf3ensMu@_N@FBCnlBP*dazTChq^{kWE+hY_z#DZ?ZMDHqj@8jn +zy5iEVPg#9sgth<|uu-T(`JoK-M#L((IuZPr8dlsX~+S;p(MtAb#!o88SI@*Q6a#otlTlGu=A> +zLKsmrrNHNe&m{R>(Xj4KKVG@|VG^`38#Cixxmt9QxH7#9Yo!SP4sz1mok|`L3}?{^ +z_NS7&p)FY|3u(~YjN&r!s}eJQj+$5lR- +zOyTuw_??Na?2ng{l4T#mc_aZY)_5dcXNH1JixK|xS@X|lr);-riPPl_@9H()XxWtQ +z4U3RpP8IM^;T+Nk*ny=h8l&YmGOU(P4ZG#(Nj7~POWZ(haO4x5#Rs@<%?QXW0<8GtyVsg +zdS2OqZlt1zP0;oJzYyzyu{WML=>onc`}o=@kUYV&;3D0>$+mgzk89TvjwHJ_p$gXe +zU6^8GRmnoW#+5k7C5yiGeoh1`$+(QNlB_JpF6BsJPajdg>2P*9l`Y$l?l;eCV4Zg; +zBk_nMC=|DVBE0c_khMEVHs@!&#aXm|eg0c1<ukQIIvc`^7+do4V^47h%Dvcb_6k$XzuE?8fNJm(n9o+EWa~y9L*mOjy +z>bUW6zf_Hqfr*|Ewg3orSg$LB+aoCo==r;hOZT+DNk>SaU)&zAkHYXU8MAtnk6)R#3spAxdQ!*iyb!kWJixY?ZoF5#b70{joafaVU +zE*G?YVip|4^DmfY3lEARdXUp-FB1;njJJ0$RnJHHzFlG4oC=+7MQlfkRo$!!`f5k^ +za(g)0Z#S=W{6yXZ=vOmM&ugcNqf-G%n{9_(y$&X?e0iJtNb0AIu#p)Yok~`)hpnw< +zW(rqIgqL8c)dkA=D~4e~4r@0xGD5?aUMGOCxI5|_wy4$vAbABX4@21vE`1CyK>^Q1 +z8*WHgBXePMVR&PZZ}6$iGOEJ)hh1|_d|o#+P$1A1=s{vP)_8RWk$L(ln}CEI3!&oR +z!AyP~Jt5e%pW@lzG;9A#5ds!jw3RIIm3KiK@d{wr9RF|MBKnYD-t^v?Ce%fhOcoS_ +z#EW-3?`)H8GRXK9K%EsU>#H5dC1uozM=_ZkM+-ekcGjQd&QAzVJfXbxi>6Qc>{G?o +zBSC6HiEdr9r5b*zYEid3DINa`7ap|CA6&gJzkY4)+_g(5bK_nI`k9DZq`At=c-e+; +zyCqNi?s!=-)R8j63-lYEA=^caaPK59@bWu)Q&0lj%(JK~I1X=YXGs^ws%+8=Y*0p#%fuL&Jhi$+VG%UJu#&tV +zu{)KlYGX=fA6Qam&Yd)y=6f9ZuPgwx*sShG3j(aj{*Fm9R^1X}l<6_x)k6XD2moa9%M1!l=y +z5AT~|64g48%e`efY6zsi>W2Zpv-lHkiLiAwqgqcQQnhXUxK?x2atVsQ0!iZtJ94Em +zrdJ^s_Nzj$_w;G@#Vyz~e-oE@e_qdD3D{|ZEp|-(#>X~S4DoNe`>U6m-V(RWn_HhL +zLr~G*M`x>6E!6LfS$%p}0OWF#NkOW}6PpvgxeOc)E)mTB>(ZU-I5sVzP)ywOZ^%Vp +zwH~Q^NNm_1QYagb#x9blyrU4RDwnwZBbO_>|F)h_RNhr#Psj%O2Y8PZG +z3C~2p-q!`r5|@C(%{EAB1undAA;bXPLtKbGsD6g@@o_5w3n$I`h)s^zRiLi_C*Dg` +zH*Fk(3%6`}s0>1{A|`-hyE5ZPdeTy-j~Ny1`y=lbVng#cYBp37lxFLijRmrE8BA|} +zx<)fs8|O6BXx>ADIJHR)C1m?+Rid&i@l-bBEcArssw*3W<+PPpC|JI|^iOklq +ztrg?nS(D{|dQ^hnzgs|MfX#FL;hzTWV;MCoP{zhJ4oI8M5GLPX^WDT(-EPuYe-N^ +zyLvRU()!fkE`<+8xWcnHR5IX^^hgVHLn~d}(V*e6n9b;N>VbwbYISS$`fPcosYc;H +z!NH2m1iW!bW+Ta%k_Q}OTcnEfbr*mRPzEFV#-RN~kGw^FP6CjJmqKX(0FnQsIqM6j;anh;i!*4|ix$Cb|J?6Z9O=sI^EzeS+}`= +z8Hc*csM_@u7_2BfK2UcX<6U>P(?h`G#`^j3c)}?woD(;OF5rC=FX=OVk^28)s989-KAvx3QR0~~8O{aaz4tu&TlV`gnh-d}e+iD1n8 +zRq1>YF^A~ON^pB4ua0yqhN^oI#bQ19T_JH~-MmR2&Vsx6Zt0hyU~j8$vr=0mb#Dwl +z=9u&r?s%ZWERS0d34XpV9R?3~JxK2R5%)(j5 +zm(cn=5CSX?WYs1msxYD(%$NLTvnxQZdt0y%o&Oy)h)BlU4ab6qw2qBz0UsgY>iEVr +zV7CXE1#)5)CLAOSATgNQyhD8KaPR`D*l)n_*pK&*Fg&e_Flfg@u_|C58O<6+Xm +zI1ORFzad;#9=27ffoEb#T;Ld+9Uo#5*0xef{nh7-vx27%q)5fWg#wb@Sh65?qqtF= +zOrHK@ZH5->k~;q +ziGrm)h2k4me}R8Z-0%~;3#e*S02L0>z9yDGB6|6wc1v%u3$A2ns0#`kFlao5zcuk_JJYDsTX0`QE5c#r+e^qtLSCr((e`~LoVM>FO8 +z`>%UhAYqb~82Fc8sJg#^yf)F@4d<^24f#@DoKD6}i@C5{036|6B9v{`wPa)6Oyn0U2+~Fifkl8QL*57zyMFgEIc2Ot +z8rU|c>INt*oLbZZRBMJ|q;uEDFGf)FeL4+*C}aLM_X4ADdx06kjdEy{gOjM%zKkaw +zO=_uz4gm7qTWMOFGSZ6F0<>R~)R9lmey1)_z6FI|7$Oyo3m5fxsNY=4W@rGiWZ$2X +z2j$X2TQdOtf#U#PXPV1ZS~%)sc(X?yzXY#Sh_#*%P`fD05aZX$t%J>^8#@DuwZB?m +z0(a4yPuYjJ4(El5tZYEiz|*vQJ-y=0%jvIXC>^T5 +zK0f6w?;oRnh4|{>6n$k<*~QL7bVu$QJ(m +z<#k0y#u8X{e|`@4t6gBYY$)J}Jd@4xG#emVf58dVi;WjjQH;aH0%gDz8tMXMeP(CQ +zUH8gKb%iy-)<>jiYe1=Y_xfTVF`yKM$->`Cx$mh^%Ez`xeei~ivs=psgTN{027x?8 +zeAT=APWD_cYmY~kAD +zj@o$F1oMgY2*VzvLi|&Dv*!j<@Z;P)K9y$DiRjRRy^reG7Jcy%JzgOAYXf$PgQ_*} +zDh(nce6JBgkUHN??@Wj&^Gc)4tpzfGBtyXaqb37BT6;R%42niTW~utEv6Dxx+KNE* +zZkxE5UGLZ`FWe*f>SA8`_*bo%sr<%uU;>iqZ?7(nx +z+~0JM&(`L{#!@>nxo5XbV2imtJbc8PJ@x}URKMxw^;E`c*Hn^ICQ~HMp{V%mM;)`! +zP{DcDGTjBW=bA@proVPt^kNS+IP(=bVvgBel5?fea0&Qi`M}jU>-*0wS{3Uw{HX +z2|*3(RVM`CPdEPFmig81e(eBzWHLYJg($qrimTi<5#wN7CLY<-&eveNj@ +z44`t6uT2%^9GeBo6oiw%5d$lki2aeNgzcBvDRnALfVJ3d*jn#G^F?E2I`M>jcKP+8 +z3GNLJ>-DNIB45pX_1bdk>=Glu0JMEs+&wjxPt@=oF;X^uH*&H^D#jqXwC?uatoP7LXc_AaR6L`;JY(W^p=#vkc#W=&s%RbK +z;K+!PhUG{cuO~HVKkZEf-1h9jv7sDhAKfkg{j=@-B9C%60sY&pSpH8L+Z!vyQpQjX +zgM?<7!*`vBY)&s-=@Qqgx4xQnr_Y8vZ1|!$td+;5?V++po_VzO2X|OQ)~wZv&*@(( +zu11S5B@`d}I?5=Hjl%l&)z?)k*@xx?T4Sv)B4zLb$D-Xd;Ih9;6mm9z%M~u`+j4a# +zF)_nfg=rPmt>q5g)v$*l`$!(ZU*ZPss%nPgmBm6bUMP=_3=V)cpZh@Z+Jc|(uP +z(F7%-r!mzXh}Tkn;<#!jp&fq94Nc{9&LdhNk2;O8r5AFaaP +z;=J!d+^)}8bRel*yap%+L_CJ|noV4Dw?Vi0H(_kug$u~7J^KwM*XtoKTho+_I(>?vq +zHvF19NnGAvqQ7~6-A`L-c*VE9EyHr=<9)Fity@CaZ(1O%c$(uix&50WR>rn&h05^i +zO&Jbh`llivlt5M5Es^Q8-I;UHZg#6al{@;9!Wiu`&oDg}hg$I|* +z?=KCqhNu?mzEzo%{;QS2t0>cjDy)7JQCfcht;VQ^t3q8M<^dsMR2zx!hru+B!9rO%sE|zx@LPrx! +zA+XKuCw%9s{cM@9ZITA|W?2Itm=kh}>}-;nCGFHrW3ZI@&r*Hn>ad +z^5xd4%6>%^(x&CQhmj8wZfri_`!R5$#PQDA`qXl*erNZ88h-km8SJ +z`*1nO1Yd$`>!E9(T)ubGpj*r@GN|LuwanEos@xsUm#O(k&g3)y)A{+&7FPu +zkpoNA&XSiL=)TtSmnoh*7kUY$=u&<|BU8u(&A5(pz03q?!ymK(Ht#Fwbu~6~fqM|G +z$l%%`Cxtw1)v>o8qk#3bYcxA7JetV^z+didnAa>6D(*WZ4cJz|%N18|+(Zss7&58= +z8?HC{uEsSIwo4ohvnF;%{@XXB^Q|+Z{be|hLSa{Q+8?==^AJt8492NDhABZsr-!v+ +z;$VD4C(Gntvn4+9C&-l>msE+MTMi{YDbC^yx(r~IMeA;4C=tzW8*t(H$^hM?74;tUFIT%+bnJv&qm8c(=_FS@iD6CH7vzhS`sIeqm}S +zwExZ{Q~i!#ZtL-XkmGYZk^8BJ#Mr4kBjJn1c$|2Afh@%rww>`tOXGaG{%HA;C~m3L +zUnT>O=ryj(cC1ycyWc1REOPvn*ZHRqkZxg4UwzDIuihu0GNG&2F{d@PE^TK2EEsfj +zN~ruU7s`2aL{3VhKUS)o?XI>gIzOXBMwDnhM)_v7y +z&J{Kl84uB!3|0h}lOjwFy0)NWpMP2_%FL)=Y#^fg=A_$wK~2i53D^6(6#pWI;ADw7 +zsOp~;0|A-m5$?YD=$wOS9QK{MdlBBnq +zJvK{Q0(v8BU?CI{$Y!aVD)Rk>d~92&_2ZlSh!dIXp)t +zNa7HUpL=+B=2K$xIE2q@q#91$lVU6|i%3c=5*V{qLYyjmVdN;LIT~(7j1T{}ljxmEl>d3J(U3-(6OC2kDIg=p!HC{gH +zPXXbILZ3(7{NFs;2_r)6)9RD(pS!y-9`~*<#b|tvzh;!8cGUKJVqeO#K2usTpQ;tU +z_-M&1jLOWcL5Q1{FxxjiJ_SKAppV;@38jh#cwGPFr8oDk&1O9JvC8q3a<^s1K=$jP +znVvgIy`dOSsnkUbBhypLJSS!Ur$iS%)M!*y3d@b@@AlL8Aq}iGC($6DhC~X1;yq_( +zw^aM@!9Mx`u79nWSb`v|Od%oFdvX~GyMpZnG8~TotVIUs5U+vMy=9(VV25?)UgU=* +z)<>w&{&(h-TD@N6nRSH&V@BKPJ`rr!14}`=0{@F~LO1S$S<yj60tqGC;Uo8liV}Y7ls&P} +z0rSkfGfsNIaa;TLxSvT{bAptpO0k{ioa`NM|Z&s6?_PG*Lu +zbZwNhLO={Wk_m+l*At1hdO>)R%+a!LkHaCo=1Np0-MF%7nJ=yJ>7?I%A|uZ2VE!@W +z;vDr_L|1d8ujk@~$feL?&Q?#U$>&P5!=^3MR%>Qoi$rT~l{>xzr>a_xm@3!WR8)B_ +zhdmkzDsnWhP4{dnt_rKS*)mEg5*;WYr&FPfPd09(ja0L(Aw?_QTr=W7CzVvWlP1c% +zy(kG*7|&RVx#DvG~|_?@#RIy^~KQ#*8cUJo>$A +z?tocDp9Ql%I)MPtmf1V#PVDA`zf4BT{!CR8_H=&zoCm2cW+ +zM5Ng@YQukWo`D|gt(iX+8LOH8utQ74PWK5!v+1eg>`$%>i#){NcyL(t{kOg?Jt^>9 +zsvg#W#Z_ltr?Ig}lj|nW&$Eln?VW@T)SAyT`k84+usDZls-;U{rdD{6lrXkQZ?WvF +zs?a^-(vp0s(=;w;VYq^)8ElKbXW4CE0o!^nt3#9cigE4rdWrRB@Y;W=Uf9}b($n4_ +zs&jwEG(88m53y(SB*bh7{YY`lsi*vL5|$SJTEtDd68E*LtHa29ITUCO-8eh8fGN6| +zV*=*XkyyA&y&(ec@pIjCr{pL>1hgMjIn2}{U8|W|yEy4}98{+ek%iTgD%Gk2J#T0u +zuzxZAb@{+tD+t<67P#B5i2JWnpa;vFiY+{Ea>+&-SiLwME2Q(Z&Hu~M-7-~2;)$8h +zln_X@-*iGGgw(3t&!s5Kt%=S!jo6%$K-&$(J#2VrFPxzc>x*IBo1Kt%i2dla$0~5V +z{SrQmvn^1{<0`>cChtwVoU8s-4w~kPlmfBmKc1K#oaNv#EFo*i#eHNuH}Td>jIt%i +zGUpq*=7#126bq*b&;QQS2lz7bE +zwZ5u^-_Qmu2!c8Ez<#TpkN{q&WDIPQBHi`~Aq8n3@a~s~oaNWluXdN0Y-kYM-d%NH&~1 +zp!K60srT4hK$+|O&-~`l<(Buq;f}S8k^;xfbBDe +z?4gSDJk|qrH8)caKVdq;dqaPQle1Q?i;ZS2S5@F=xpnpWjJ0GR$EVoR=@&OpEpH@# +zKl;2`Mo%z#lx2?zich=A$YF-tcwg9J<^e_j{OG|5-ktR^2=34q+mUky@U=T)X7+X< +z0tQAb;Os(VGpqN|q~Jx>e#q8KFZer#+Wyc4BwX$eGo6u$uO_N(fe5%YhFvX|?vh2R +zn!|B{p)@N3S7gT`T=UQ*{2{4*XcM)jN_A44VD|PFd41(}_Im~$U5qDw<*h5ghjdwl +zy+$vB66bQaOo9=r$ro=nJ@AAFAbHT|>_zw$Pg>{xX0Q6oDKnO*UDK)qnZ3#8j>$e) +zzjeX}Y`)5v)NLZQF?-w#%o<~Wm^Ru!#62f8nZp!E +zF*%bN?cD8< +zy?16DQ2CR{p`COpCwT~_Nd(+^NQ}*a0lB+MIBfve9b8*}U}4;%{wu(7q9283Ik-g);p)-7gYK16dWT`~$ncD>NjI`Co}}y@-xS +zR5RyE%`r`wJD^xCAG_e9n)gofkQ)l|{D{J+Awp>*3LKZzv$x1>Pw8kha)gUnxMjj+ +z(}>*3Aw`NVzX6ZBD@#hW>aVi`;M}&ZlgJD8o@5(S&7|l9D_ikvhTACQV?`0%kU1QS +zsDD$;=%M~q?ynD0f)u6ghMi5`L={e;7KsXq1_c8UqW{SFT%nxLTIn4`>3t7R}dIDrys>TA!9Mm5wPK{$_|b +zU%42}s_s?e7M*R8fR +z=cAV137^PMa3>(jz}&Up^1OWv1)UO^wv3|RaaHO-LHmL$zitdN9Z8)HBX_syjS9a@ +zqFfWMq&vUuD9f8O#RqZSZ61^TyQ78VP|h64Vl164w2JenU97>^?&+jvD9a>A12wBP +zA)5hbXF+30-&=IMPuwlABowm0C9CW! +zEJqzS(m)UG`cxnsIgs%2JM=bEYlIqGj +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 +zn0KYs=0H42M=GJuQ6qF7-HhAP +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 +zFVM8jV(X_i-84<#tTwz|kS%-w$PMqx0#-U+ +zOb2rx3BKrrn^)ttg9kCZ$fKIu=_l+i +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 +zOz*vdFQR%%Gadu6y=cw@ilFgy +znM7(@oX2ldQQaD+C4zs=ZjfoE`g_nl$gt;?UHhK#k)eqdW`Q3|8tdI1f52O%Mwo#P +zX4Gn04Z;QiC5EA{L*_12NDlw9wak4Qy9bz3~obaW{Z!~ +z#qFJP&l7HO=G_;l(*jqHA +zQTd6)kAdY3(w}Zw%f%-hZ9Ikz@c?221j912LRkL{Ax_~9b08c}*zSYAv*DB8`myll +zl=wff_#($Ym-x6KzjVJMxuBRc?6w{>TjkP{@NeF|uD63@H-rIb2V_Qsoeq(j7Hv~I +zQET)ms8n(Pj^OCX<4$E;g-eZ^6fWR#9r)Z^f|~%qHlKb3i-9rdDYlV}jpazAs9K$@ +zlm8l`WjV#H?`XvRZ%pDGyEPk_e7E}kbrnl7rRnhNe-1xQAm=do**fhRNtpwE$*sZOTb!Mtc$f#h +z46!wZEgRBEj;Fv@2O0oT7uEs$UsWe2*p`#Um(eE3x*ucw`Q7~9@9qJxHWoPT^O(2? +zF#ZxyfX`-Y1jt4Uk8iqxT8C`7W*iY|tPc{ln_{i5PY!FG0M9>uxn#SQzY!u&AUXR05O#Ii +zKeh6=+NEntxRF(win{SdSKq3p&K16t|w&wAxr1rvRx5z+mjBWXGRxx)-qW +znT^k~__>Xs-7W=S0;B)QQH|wAc}w0n`|qWn+8(5MXHU!ll%nDDaa!3hF-?^lp1500h@HdJ61mvg+m@km#3!*=#;INdE +zL%w&^bU)ylUzS}Fhc$QFCu{>&5On{-rRY!=rkLClr}15o`I8%9sW>2iLoz}!cC5l! +zE;*N?U>Q!w<&{SJc}>MPC*`BRSP&4r8_FEET`#OYq&FA|c1T1E@`)(`I;7epD$9wD +z5DCI`6Z?;Wky~#Vq(G)%m4}tR_SvsQ{_5T2LssnYD}b)g_eq7qs}u$8eI0SBd{(84 +z{Gi`~(3$B&M^au7=S9$JA54M4_-^BvPu3oI2x-eT$Z-N@uDlbgw>L)>7bJUIYhf{} +zyI~t%Y^or^ajzReT1htJtGz!z#R*6}Uimig{bBy7ltn>#TS8bN{MTFP`E4}sbdu-% +zys2Ae_yvixaTIarXZE_!sJ{}3%&c!|T2%o@VsD&|b_V-cy!Gde1+-yX$ITqJ5PnNA +zN|lxKafH{xQo}BU`IV9)MdBvCE^2;|gEs*3XQw|&ca@D=i+G*pO}iy4^tnY}=~mN& +zp@wnM8hU&xGp5EK+|251CcC`C&<1~#05Tp4#n +zmQlLbMSM1%)-34Yxm~E%fq_|_`G)sxW*_G;pY^#UGW09M=TYbhu?xW7C?ISEIkSM=!$ +zXY8SnqOKB#}+;J#ATw8;NS)Je5r4!Y)JHQ&22RVpUhQupv#chk!B8}5u!|*{oy^cJ|HQl +z4V(0>Vct3%X+GARKQmp +z@Ax5}@n4yMuhmLwUx)%0qL}HwKBR|ZDNgDe625YKgJ!1OJEXfxtM?c1)`TPx|5$7* +zL{s4}9ORTDKimuY4B;P!jVFImS;?Z~QqA)2BHbL7F|i*AZ;9>X)-@mtGz|$dGOVLP +z@*W-R$8*oIEp@y?#X1d@au#!C93XzR+ksZQ^wO1Sz?g)Uj(8X*0>}VDDO@KjyzL3qxU60Mk&sbt8HW6RisF;t%ao- +z7c3Z_WEw10{Z?yoMpK9_1aL#t_*p}q|1`6ahE8yf(n9o4@S!?gYE1TS?95Z)NnOdQ +z&3m?xt70GSaIZY>f0DJIXj29We&f$-bLk_eSG~|Y6*dY0&El4xe +zS5~J&)E+kWMOE%wYaWZA%B~$j&MTzqxrD981Ln_2hOv+LnyQw~n7myg(-TbX +z8o_}=U_nwqpYudt7bTI%-AEJ|N0)k@kt2Q_xk5R->Z23rez52nVpApBS3#kr+z$Y0 +zC1s%C-&(p?P5PRJD+_^@NA% +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 +zh4Z&-vSs>ErrKx;Xc06~} +z=%Hhurxh>2#yXO{>O~v%6L)6Ly3JEOUw~d!Txh7(zwN?TLM`)~FdkVgY-Mx_UQNjo +zx7S%-plz9sIFt!!vE*z67D@vK=a~-KU%BE(5B{6AzOe+dmVTG+#}&B23zc6C30CVCRNjpf%ZxV8j&1pN#_y{v0#LCgLj4nmVRFY-t +z(5$+DPkv7Cmt0{Z2BQ0@*6dfmR_h6xF$8&P<2Z`@Q)-*H>tSEE`pI3O`MRp83zvLa +zyYTRtFs#Qf9`N2CrGbbXLTH%jRVjNCn*XKM3i_Q~m#ITxI*5Q)j#)0kIuj6EoF{~W +zr7|pPcm*0!^OA~N+`@|vVVx5BK%#BGUYDNNUS1nqK3{Mrs5jL-9r|nM2Ht@eRGwM( +zW=CsMcG%f#dkElCUQ!UJ@$Ay)Y +z(iUWije!$Y3B680i*aiH%lkuPuP1P(JhEPSgZn($NY*CDZEQoKx`Zv`6IGQsUcvq2 +zuiC&Zu2|_GFCX9NVR9?m%VdCVqFenr>BTa_olDR?x8~FR28IVeXY#UB +zf-;D;-%Nx%%IdB4yUhsgZ2J6dbo_w5^-8u%^Od=@D8)$o98=iV` +zTLHyRu4fB$o;VhJ{CC-FZC1@%zVmdk_yuxiDL?#Iio0aR@m~~>{}3KP +zZPa;OD{3o=`dSKr3RxghG$@8$uga3c=I*c0zS(*t+1@|FBzKIC;k}Q#Sq)Jax;)yk +z_TEU>A5Ol9O2r>|c<=i4ey1`=CW7E&6TmB0))udz30Hn!a&d?0z!tI#Lv-|Qfi~gZ +zOVCFx*7$udk25hQz*@ +zRtMe%P>U>b#Es{IZUt*lUq>PJ#d2ZJ*|l>y#XnEv758I!4k2{H(>*L+*}2d4YHQx@ +z+bfr`STj<;T|Dsz1%=Ca?LGPNSknPi4YwLc=1-$m!IJ3fgV1!w1A_1XKEDO!FFOx! +zEtb#jed`L<25Vbxl;CFhT%~h$8h$jsNjMrI%NlBNp7Vky{QGnm3|ST>-V=Qb1Cm(~ +z)aWIU40ILSJRAmCHiTImkjWjS6{oOX8htoL#JJRNGk7PUkvh-8Hu7l|0>@*u2xRyUGOQL%r2PB<Zu~y}p-EqZ2u1a3z-=QxPvuEYskE +zMLtZhr94|4p~%8MhOcGpX=OKX$;yM90ZXNXYO%T2s@Cd*TI_poWyW3$<5%0%9)sjd +z0`Q?r54E*D(N{s9Pw4XWQ$gz4M3X|XDhe-kr-o~A9|waINK2fAI|CL) +zqk6g8s+owc(6#PcDjgll_!6Cq~Z1Xu_>yHqx7o?sn{Me2yzV6)=%A&c^iL_9)paJ|_n^ +zMoh=;dy)_F*owO`QW5W-4A1wTItVm+DG$5-TMBJI*G!~l_5VjFO$HTJPCzc7YWm(! +zB@_(1OofW-WjFA~D-7!!147z{~Og$U=J9W6v{a +z^os_GNT^$S;>Qv_rDK}uGHB%Xpxg9UoEB%&&ewh6Ve>2Vbt17YcaQa`Er&Suhu*TT +z>2+5xcf2FRGr!MF~n6 +zWkOk?C`5J@wSJT7ezwhVWOWM_=N43Wci3<#eb0Ju`Z1{J0n?~rb0NH5n +z=PhXhom-{-9gDYm`V|hU!cfG6L)^gxaul70FhFq*~ +zuS%qc6+e25B;Zb{!iiz +zvj2p$GoWD>eqsjXr+{(`P~2!Q2IFq6C<~h+69!nXi{=lT#fK9_HddvdOx7y%l{!{t +zg+5u06yMvvITSTVU3~+YuHV`pqL>n$WdZY906la;%$P{B?OQQBeT)!n7NgXo=TKkq +z=^ui&n_lX}OJgSBHX)DbpHg>SOhBy|^j7~Tl`fty?=YC7TFC}ravsOoR&l5{;#4g9 +z)kovy{0!!F{TtNX#h84AwabD!CIc5{@Kfct?7^GRH_aJeBzL>Qzuf`*CQNkj+3%}w +zQSq4g6Ty);pQo|YuKbN$euOXb(O<6~FFK)d>uz??#Ph5(wuGcAVsHAt&5-8_1Nr4?ByX9a5 +zpK|B>>vJsN7+Y3-o(1HwNc(CgyGq={U)Fv$OBt)<#vkXlaUC(IjjLn-DG&6p{let% +z8gEri+9f+p0cd#`%;A734XRtT#NR=gNy(Kc!x}|%#lt88;bX@w(zo>5zEL;+Y~k?t +zm87|8bi-!ix|;9T9j>J%nITASK9xq=ONLgz{z|t%TGY34M?H?cEj4~(MEXF6qM|Wn +z<>DH&i8NG|xEfY1*varqhS#38Ec>^~!1m-iLZ&Q8loCbXINw(T`?658ub&hykYcit6kRcd9m>pDA^en@+J59|s&M$A8ynGUVFl@t2 +zGHaYXkLl3^zrSp~ix2}&C^|ukk>C_d%pkE!`;E|Y=9KI?dz+v9{&Cuy{&LWXCsVvd +z%jer1xcT=Lx`OjXldcVN#hcCzc2s5M55wOGazKg*B@f_{pSS5i&v=8h{JM*e=&NmZ +zcjduuJM5TfbPv)eXWQNW7pW_yKV=EU2Dj!3Nn#^C7HAAX3tTt5Ri)6iK~Mx-qhA-o +zHa7PzhC|k|VlISPC-;Nxq@V2tV3eC6N6Ed15I_R!0q*WxA>)&Z^WWjD1sFq1$uBPz7jmg~*RPpGOu{Eq&$^5D`kid7OyiDugl<>ME**bjOED68TeX +z%3Eq4oRT1%)<@=fG9$zhvS#OmC6^6MPS`kkodnmuD@o(szjV2J$FmQ9a4S2ccRt3y +zpx^iO332V}_P>6`Z3xRZ%)-6{y>ELyh`+({P{FgeGOcR>Ayi;kuNTi=8?Gz6#zgKf +z9-{oVLrKkdMU;K%srggs5oGwfAlvrJqsFna4^LyP%H`pY&zO)A4JHl1a>^2vIcYRNii +zt=ZkDioNyQ^c}T~0?I~XE2<>-p>d9Lw>xE52o!pw8S$(*S3w0-T^^4Q5|rQEFH|W2 +zdD>_H{vT1d$8bUPJWhZ9uy)(LrItayW-$rF(S8bf5FKTrlhoP}Rt_v2aO75?cJxjy +z7!18XS9S%rqd1qOZBk+ +z`=M8Wp@yzHtWpxkXmp0dJiY+WUaTRM^z|3y?l<@qRem|dxP{Y91GkV?0!5glPavip +z-L2O?T +z&wI8_LD?}NKFfmQMYr$08__+IWWmx^0vl@h-?vf(lJvP^+c1rIC}yN5sIhH)3ckwU +z*;N=^WF9_#eV|6RuiSpAi~xIQ)FN~6!`x`-+rsJpu;Wb;BRWu}Jy+9I{?U{EUhc?z +ztwqK8SATdbzFp&31LB}yeJQ~Q&_rJUe#zpqQ4p-LO!0f5`^M#P$R7QhgZ|^{^N)Sa +zTNBxRGYw%sWgxLIDM5=~;vmOw|7H5<+lMTnBT6J!a|@OuLpirZZTVya3^N6(qcP`) +zVW#QW5uB(;gvwN~f9c6gTgWFngAXN=$CoYjH@yr%tFKUy&2NhQ*99s64;Pe>ic3J3 +z+EHunZYkN?>a%!TMs-dFIZEIQ;F-*4X^|aHKqmvBEj}?BR8S +znUC)ytBEDJRwbJ`y90|OZf0N^pooxPz=7IVT5B#y#Wy2|-X*rudU++4C7XbOc4<9( +zSV&=jfwO}1L(!XTo{6)%w!mY)rp(3rhf!kAHdSNwPn=;!GQNA?ed5`e6n-ZQ$3I_? +z2OuNnCpe={)WQb09Qhejs%zq02bfRhg8bJMYCdFqN!1a7$?_D}NY0b86+ehvu$X?( +zJ->5g>3rIPftQ$n#ktzqIeMH2@=N={w2FvHCxT*%1w(?5P-G?u_<&SL)0J7s?KbaK +zvjRDVSFFxP*fhtwHM1BXZc46ycufIX?f1mRIjJ8E{o!Iq>1>D+=!S}EM-?*=FC7vq +zT`Qi26u%bjw-Kr;C+=ce3-zg>*CO=4dQ!!_3veR*AAePP?>~Jv?n4PIgBm6auw+|t +zS&Z;`={t~tU;Ff-&$6zMytOBkromAFKgPK2S^2eS0YAGEpiV?i|UoQY>5$ +z83G#d#|$38Svy;FdOM`0qoyFl_*;~poGb4X-A0DOwQ=3tQk*t&&VUeJ!_>33j1=GN +zRLTiGi=K>0X>yiTf%dOfbHpB6rh{`$6eMdE>Tk04I_S!SiT=Hgp|HP(`W{M*QIIGCCw4gB*h7s*_tQjKz-pI~Uq=h}lSL9-Ry0!NQwWJ|Zk +zP4ep&HT-YrOe32s=F#Z{a6mwRetKQ$k)*k?^05D+LGB^UV~6Q;EDIgztUJ +zzF#g^w$a;=V@@#DI&AqXfhD5{jihq|oXOi1k7J1E$nd``+4D0Y?GVIdc=*cr6JRpX +zD1);}kBVBrZh2-5qp&A@`^7GTc(-F;E!)n4WBzbNb*0*l+wv*mE%benm +z`wD#erX+IejTcvIPxy99P&tv +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 +z8+}O*!$7x?jmv0SL;#1+ZhUz6f +zBKaFIV>STe1I}1E^{YZT#d#0@N^rSEoEFSv;Y@b#*p5L?P2^%vPMRuuX7CT`m7I${ +z9j?;zlo;(&$ojL5+eMOJnh0#;0)@N(;SH+9!$+2f-VARs!s#OOtY?D%8H3?ZCh(a= +z@@az77N(NLsBX=9gTbq*yLa-hO_g}OGOlmaV-KPeL)>D)gV$&?CjEkn?xXm}=Ph-A%I3M_S3@dPw+4)S#wy+CO%)r5`qeO@=n9 +z!mE>qvi`~uXy@a7Fg;gsPW-KS@IjNO^qc6@wi3o?QJ>(K7)0UbF7q6qk(UaL2q% +ziG$=y`Tl68d2lMieqN3YROC9S>P9ck-r;qJ%OdW@qZ~7Zn}#d)iFdH7>w2dNJLxMt +zUv69`3BNhxf$0STMUj|Epr@N1-(p7mfOW3J%FTS9jJ>NS7*{A*99oj|`HX8x#GOJp +zFs}nR4N&UIQBxHS-v-36t}D=Wd*i6FH_I1;o#vz$GA=ivcD!PubEi$ftlL6rSmt9@ +zWCCyLqhG`}dE-2Ma5;j{tGJz)jqohT~7HBp9Eb6vEu +zH1xr}xW;XMY3=-Jnv+Y)|C4T|A57~*Fr^|h?;VxjdRM0$I7kpSBKC_O-Y2S|%tg1* +zyl=F4vl9{<8C)5brQB9G?(SRpmX_r?SFe6VlXp~8#bR!ABmF~6!QNEN +zuq2Pk;iLueGepnS$GHIgx^O!Ct4uF@>nzDfiat_Fp@2i2!-8d%ES=T4k?y$Cj_z +zdt{G()vJVpdb^7+yq)aHw_C2?#Z8|#go0j}k2Wp3dfY=@n|3*Vs`OE;OXD&-tB_jY +z(!KdkE*WtLJd9k*dSTwKnS5{Q{V{_a2zBWp-Iv=Pk +z)M^kGDV!t*WUEC$)cxH$?Q@ExD_NP=q^QXN=(t!-i<5>?5+;KD6b&+57kKc|^PBA3Rv}<$bc@ILP~W-07)L(yAZMn|kjh6ixJ9zTTUEe5Dt-SiUn_ +zZCg`kHo59~3fD~l4w59@C+gpWgbb8*B9-fGg6e;3G^;!i{Lzd~l`mllUy+w(1&D6) +zI9Mo-U9Q1R52%+A_kCw5Sgx%Yy6+PGO#J79?{^5fA +zDaKvnxu82^X*9wHv^?8cRn{N#{o35Iw_^JDMD-d$onb@1(0YRgyOnHlMQ?1jx)d&i +zBQ~Kv$*ZI|eoq+(W)}TQAzzIAfFLPK7VkvAQgyUrJvYT2nC2J`luUGRKLa`PJ3ud@ +zB`rA~Bm(256oo4(#A+7jiyK4;s0%qDzJ*l`hw{%d-f7VrvekRo<=8u)w_9#R15BOQ +z-MO20#ErxmUr7BS{IGm)oui#)O!B>D+hbcf2R=0P3%6kPF6WWTH|dj(gzC)9zlZOF +z&qX~ZCBM6f8~}maH&scY;f_#Eg24JDuw9F;XYB8x0fdZb@prB(E=x7S?z-c^-~QwH +zJ7wseI+qisaH!3-G-t-%2iyb6czLnMlTgeZrzgs(t$&#F6)X>th~@ex@uidRy~pUE +zsjlnGBf?ArwqH4!7lfI`k1tCQ1%9VX6$(D#J^o=!)-yW~HOL%7&#OdyD*D(J+z0$@ +z)Zy8ok_&`P*9d<8tZQ$+`|@a&$T<*yy8y*YxS>b>h>Vxj1D9d__6BEqR-?A +z>17eEki~0=#~kj +z`hMq0g*F6_Nj*ls@32i5I^%vfInDByV2tG5rankW#;)CBv9u^sUyX9dWL(i_(oPn) +z%9(;=XSH&sMVZSM3}R`sQ71;hsxvz%lKtp2&Kqer^YZ={3o8xB_%oBbH-0tRNnI;Q +z0wYC*2!+W4_j%Q_UA?0_8Sv+#z^9b4dz;W6$ +zlU*|#u-@z}kEs`a?T(g6mi@V?cF+WDGZv;l)vE +zg0#VvS9kkNaJ;#G4@==9DgX!qSJC{ +zH`(qEcVc{+o)g4P<$$o0$U%P*`8PyJJrN0JjIWaqsAOE5=w#unDLeeE=;>!}CiA9d +z5EConpN$bcO=-bxw|ULtac)fh?WjqS-;)DAqhcA6Rdf9@FJRnh<%mr$RI&Jr(lC`l +zam8M&4I$`Nqv|W;AhpFILue=Y*)mp5fez{uIZxm%p-Yz64QiOj40#C^6*#l9kcR#_ +z=71KRDnMu{W<@>?MtqjCbWx;4gh9F=wW+obsvf3vHRcv4DwmT}Dnsd450`*Ry740e +z*B9%cz{DRe3!RySvjbZqnz;#S#)?`?K*;WcCO4WbOa6eft$&)-z(8Z}kHm^j#+HH= +z+(tno^28Hd#sX~i>_$FTr{l}|acws79(Uyw5V9M($iGg +zIFsBRh|KB?0ytwRYe%Tt7Idr@oV^rdGTVlHR84`GSEl(!t*!mHbD~}zLB`otLg#_V +z!)%J8B6{k?N?jFLm))s6tJr+4tSdR_)Y`i#E-^p*_tBo3w?Om``L|KetrTP+R7#01mXP`T=8tDDFa2<;o%Gi|0b)z +zfVS?=H{>G*BJfluE4LtuO}^el +zL4JAC@%b76h~k75`ikd|{4K7z{SKv5Xmha8%e8OlZ)TExh7=cRnu*c(i!8H3rO(e* +z3@d$JwoYY-Ee{)T?5;2E#K5!wu3z=Wd-R5G@7?My%7||i=gqy}l$k@nf8R(sGqW1v +z*}k8vaW!b^+_#F!`>Ndm=``>^|NF^F0flI-Z9HGAn`OS>ANpt=vUTUNkZLUrD|G?c +zy;MN_Hyz{D0%wycW9|!&_EW_? +zF6!=|TcfWy3ywu0T*E{7Kc~72B2SM$Dde2wZ6kjQD=Uy +zv>ZHkg!1F6+NXfuhmL2fS?uy^x@S~jk6oKpt_s<^1zQuSspon5XK5CveTAMTd)>;V +zbNZM>IQsn1hX|vzu>a#^f2WSpvK=R4l-H~{e9Y5nvfiuZfltj)5taKEG6?GmkHW3n +zy+?>=`c(Fw9yotBs>i!#r~nwtp)@3kJe82vGVJ`xqV4K$(BbCR9~+h*?b1nz-_+i= +z!qV%*cQ<(Ht`)L%*Q64I4Ch1I-|=@vXEf}P>sEdIU&Ot8Jk#(0KTeWLtWr5!y*eml +z6_T)3DwRSgLRKW_LnNoosH7A^D5sGmr$$Z*o1EqlL(XJa&NMS)v(xWdpZDkR{eC~+ +z@9*}#{r>p+yKp57!z&?!bZbJM&nN9v@fFkP%mdp{%-yh-p*1 +z*!V|>eA}lHtIt)Sc%J#WP5nt!3>cDYqVy~;lUsw&3Ke@ugsNpuaQ~!sM2IDVx930*_?zsBD6DM(J4V +zw7GRc`%AU^qA_I>Lx)eMCSE^PGtXbNR1zobpaz_X&%T4H<>E@5G(QJbnguh3%Q$Bt +z5A#BX`1U4eM5W($pIv&r_Q+Z*aVQI#k%*WHGwwAc2o9{d@ofkjLeD?>N9W*{C!dp* +zwW_45hfbZy7AcoP)26wkice{;`hUTBCP-v@>aSb=rqV#mai*9s9Nswtywr^|r +zaGpzu{o^);{3##uLpsY#FZ3fvYrdjH>0k{Fi{oon&Dq`&Yx6B`G3kE%Z{KUFpkf$Y +zl^h(}PB1L|U)6j9V`#qar}XG>IwjC87x{oHHmTwMgMR)SrT4kVedPeTyRX3dZV#fF +z=?3Gbc~5!%ijxrILl>u8%9y=#blIsz*2}e~2MM^xPJ=c+O)1tehGia!c55{;mG;P* +zup9Ra^I(ELj+Nw9<3m%dQ2P_~H+sZoyNVf)o;67_E50n+bVKCnx$Gk0mO*HyRGnR_!VeQj)q;@CgWogLN}_W +zG*jWcH=P|q*Xu5IunuYJ);xF`+9g|n-}FexA+y+2OFPdJ$#372`19PBY#M`0p2nc3 +zTApUIzRyS9|A{W+L915tmV#m2Adc?g-uoX`({8xWqDw5WXd6L4KK20%<2hdxD9Ach +z=Q7MN+3N~|f~>69Rs9;_y|rdcMaZVNa|sF=mV^==?5o({+nl%kAi +zmb2tnm_17*6CRp5%_Us*{N|R0Zs=wWqeE5n!*YE+ybiqT?GR1g_G#!v%;ds%wh5vu +z+fWY5zc1N3Qv5O4@QKtVsm^q4yW**Lal$tMRV;M`STcKvO9B*4Zzadpddv96ZlThW +zYjsu(aJ3L0O_LQh?|zz_M;zLs6N?Iy9CXJRJDC +zTmQ{eJM$3-9?E~TOsylWA;>y=b=PkBw2S3sn@l}Q0H{{wjvd<#Hta|9UW83xT{CzAd>4-f&fRThDo2oT-f`XL7h3%m>S*5dy<2SAsnG#cl+5Gutxd+x +zYIv|g7X`kTo~eOw!83XOR4N9Cr+G8$eW6=YD%M)xe4RIPih1cP=i!f@zW7iGy<0_e +z{`L&lG;s#A=23h*_42k-({}2_YbS|oYq#hnrw1GFd?O_zRqpAW;w_DMJxwB?N>Jam +zT)WpsqFlc7H#FsS=M{*>%1Zbt59D<*ixq2`1bpcW<8E_{p`W6gG(Deh$$VeKd#^U$ +zJeA8li&8W~@t% +zy(fpRX-&a-?bfeHR;HvK_G$8rScT3LS&GhbVg^Xm^N>Z@oHD^a$3x0W_v0uN#qs@k +z0Mc76b|L+&IS<8~X5E}Ln*QJ)GOHsS*mAJ%>_m35;a-B=`b3tN(scxDx2}iH-MP1# +z$f`FXmvYzR?O#-zGKH@tU*9yxM#hV`Tux|7zG7|Tu#>1fS@HgbbixO#nwjGZUDD7( +z+Vj&bxB-{pt;WO;tfB1VycqX1Nz78W*N6s$-|dB-?nR}=2d8$S`#Acei{FC5AmVmE +zsx4qh2q~6M`EOsl?ed;oz^eM9p}W}{jI?g3bxI3@ +z5ix_CgM&cY=(9I}a{HyM2SH*F`l>b(& +z{YRai`&8V_Oyv{V?BShMI$>0-=+9X+cY5%#-fx|!m3<4|?eGEbsM2@Y|Fl2H^Dis; +zsLMra<>mJ67+u4V`Ntv23E^6UKMrm50PeZxon +z6th4lvHzz|)_RToBBnh~9QdAO+77wvtk@2j_0>In#DceF(~R+w459Qh+BIae;kqmHKUocaw2N +zm5DJ!KZvaKT`8MO5w?lpu1fd`v&$DgP3`k4dbU(@f4@g{sfQ|JchT2E+y2s>JG!hF +zRWBw6@M9zJDDA9q3eGp|^2h0FaQd_+Zs}v;IEuGl`dVUFcjszyziL&Bwy$+tKc?du +zl^++83gG_Oi2G@Gv2lq%rhgH}i(6OHa{`-(-`0vQ#-CIg?tb;wq1_>e)dcmmRwc11 +z+A$w>lSg_#Fu4_SmKa_xmd#ZfjkzI3y2s<@OadgagtiQyi92#+n7DOzGScXVYOmp)c9(^rqY`kuK|@X +z^iqu6ej;b%WxJKT2Rw?iU3YHP?}T%w0)7~Nxsy={HQD3S=c-u}UZ64yb4HSfk3Xc~ +z67MS@Wa~%7OjkroqYfT-M4Qfpt~PQ>7^`ydhK;;_k@FBIq)!?!@vJpS8nT6m1(;{$C|E-Vaimt +z#9{{8XC@5XoRvauN6^2V{-c+>5w)Qv*Y??55p?tU_hqDtA>vFU1Dv9xI_$q-EI@2ZQrY!BVv^r03H<%VW;Zg^Ar+ +znFS4xcYL@eow3G_k=%dYuT{C^T=fgyV9FYTV6Gb2oE@Jz@aklj5Udo(WNPa~vcB6& +zt29mvF!FVX{?X7K91~j`LmyTE4MP_d(g9x +zqcV3^xL#)*9qASrcM{FYM=~0)%KTP|KKbxo=&-L|Vk!l2uYA+E#UptpfH!yuscS?UqC +z6XqX78zd^*Lm_4$s}LfN4`1a<*|-=IWFP~tH5}2a%08vw%iemABg*0K%soSEChpm{ +zXAFjw>!3uhjz{k6A9=rJBtAB(^m^@(}&- +zMvqCAO#2-5=Df4?^|I;%!2QnnQciywyJvQ48?{8kZrq5eoZ4riV|+4h +zfC)i4l3k?&TQL`;K$+h+?qd##pZe^6P~-0pM-t+C(vAiGX>vJeuJQuSH&DuJ?6bb} +z3&r9k`I>oHxqN9%%FA2RYd1*uNp-)s+=v-dW#3F`&eu78EG@s%uFB-?7N6P--E@CG +zhYZ7H&Mp{s*JH{QOE>=sI;TZ8GfU9)ELJb2V((mHZ%DP8Y``*-0^t)EpC}#rHpiUjt15fr%w8|(5o=J5j +zzh61^{yo4{tA?`(N&&|?73LUe&!>whxtu2{u~m$(NllD{@;-?#-WBa{mv=~ASa_^h +zl&V-4xZ6b0Hk>@GOKb~Rh?!Hc%dA|3#uJIy`!{b)ZfUaC0}H@(JFy>=exwu+3a9G) +zxV?7pUz_Z_7f-`Tl6E#VHd(aU!$l%D??m8vDQ6RGuZQ>#bI2GsuXS@wj4h@pHZs0h4YsfHW7~8w4p{r^&97EO145u=Xs+3Ic2TV)5+9n4>(yrhX@d^m|_vtEnwr(oUylzN8N$NRtS|C8_HxVe=4mV0yUNI=b3eO0 +zbZhvRx0wwn6-%^~QIDgJD9zizPlXs^|Be+?4c6#@28cb8b3bpaqG}N+w8Q%#D}Oq9FeG!0NP``3p>kli +zul&LIHq`M}xIU5`vu)84i+~c#ZI1#M*)KYR@$YYp(3A2)=uHPbjQpKlIC1#ZS#?En +zHxrFkaj`j#&!!ozt9)DT7v`zqw|Kiyd(*|dzim%~AM2s+X}&yau2!Av^Jwt<%dKB~ +zo~r|V_M@FlHUIdFORlZX>}(CCaC-X}ui%%N4OYiK{!^mBCW;LBQDjQZ7a@IIjPWmXOZ#8@C0&zi7miOfPN3jAB}h<6i~= +zR-rCye_+}VxievhAdAxCUU}7v?L2fl9c*Hx&Lk}dFr)6 +z+XSDMAU>0#h|HTcf2m%)qt#}CV8Z}LVZc;V38%Okd_-GAon}rY!5aRClf(!qGZq9!R-E`sm#!_0~Wj&lFrx=w{|DMqI3T8kE)$BC+V2V +z(94{wQbwys@B`17=atJGb@iu`N!`pmw5!tA+70-b&9G7vEIY}2dx=G@c%k>1VA{^m +zpndFJNOuF&`*%ZMUi>MUayzqVPB#_Wvvk1_Kp^WQgr`s5W^b@_4i_1EnIzOBKA6L_ +zm!FVo?@7G&5UYh0am6M_Y$ytaovssK{5j1#sL-Icd+D62LZ@Bz#tge=c%$_2cC7Qq +za(6)nC}+y<(c2X&it5^7=ZuA~!N&LA&kdEf9uHleI4Hz8CusVf*_OhradP!iDT0&l +zt}`$DcE89=yl{s0p>~MqXFpBE2g2~MA5;^utD>)q^P1=B)sODvn2uN*(hb(D%D7=E +z5#1?55RWvAedUm^BZMhZdxN=ly5D;#$Q@RaWP9YQLdG%;dgPo2mQZ{W+Aw5kHjlqY +zAG&RJ#>TSB7oXGi_-pLj9oo*^Vtt8E4s{0kYse-AisT#xIvqvgfBl-L$6P1r?p)sc +zE;r!ckVlh_!C*QERm_)<`;fWe9jKI8Kq2erv>tQ|YUnaMS<@^+EJ+ +zG4HGtq!3e@buGXnD=_wQmj}4{{-_p(w<3y#6&-MXnq`9>?fLOFoef62Pe0xQpKsia9eR2npQ&S4d=~n&4b|rw&@~4u+O5KGfH_C+s|b_c +zHBQ_!b8~f+51f3(q5M>lcNgLOUVB$uQgu2d{T4UL@>E}*>5+_E$u?g^12Vay<+Z!` +zb(ZsG2BM#!qqx%w%_}qpZqN1Lnvq!szjYpx1LF*1d`qHZsh0no +zu_^rURu|2u09{CI*0uR7*iKmIai6X((SdW5*gIhxq%DTSBCdjj)hW+U6QUn&IMj8h +zy1c8p`NPb~b|;s$-GcK5LZgfOPbX7@T91MO>6{Mupy*NOCg1+@YNY2+RN^CK*ikSA +zNE}`e0M;Ur!J$BSk-d(V$sbB=aw2E*t}q6%H;{5zZqm9cP(j>8yP#GPedN{jlyQPfXom +zIq%P=a1D)5#RDw*(=Me&&$c;^^6S2rfI(?-O*wAAUGM=8 +z50oL>hl6jqIHDKO?guZ06@fx>$l1e}{ajGdIf9}xyJXIYQotpxE_nNZ13=cn5KmN-DucBCiU +z)Lt9eiq&H^E@eGII1J>CqR-2l79^*LXlPrlet>y(H~Md+R6QC@ZMaP?xWjVTSndQE +zh;8YdU_P3I=CRk;xTG~qi;yA&b=q%t0sYwyH8BBiY?)w0B52zN`!O2^bLvKif8mrV +zY-w`8)u^m6L&`L^7&K5HBx#F(nP%Am?uZJ0F7qZvhTQF>GYrU@CPJ4y4sg +zY=}E#zjThh6#{6stZK +zN#)~Fu2nbItLOt#+1j%;^ +zvPd!cP3M_wect;^QTb3wxk+$f!!j2}ZI0_L{r&p-5B(ACqLbl~o*YQ<*PeLvh3t-_ +z&8XEwW@P^B`a`#mztpMez0=T&F6EJZSbpP_=~3v(yaP*Um3EaM#5bkAF!Y*M!CG(P +ztyUg;Ni!PUb)rTfpZzDPyf_&vf=@%vHs(xavaqo##oHeB3WB)Z(BB +z9lva~`EqC6*Y{>Pwsm7lcj~sd(xyUMOdXU~IeF<*f +z?@{xzGh~vDy!xDjtO*-qBRa}aW7%}Ij`X0aguz{^4Ay!2ky&E-MdS%<62AGlsa(Uc +zJxhbPqiiUK30E|7o$f4VOh^y$M?+?dmsVJ7hsZvV__%dwAR2pR1LM8p*x4{)M(&z! +zn^MTxLBxd2`#mAp+gKd_WO3P2PV2a|1EellT3}7hBMT +z-6oL;r4kduN;>mU?dVdBAs)NF_if-uZOu)Ij3oS_Q@B8AcLN7=EBlFb!)uo;qA+N0}Y}N`j7dmOmiG;&)iZ6dpbvoea(2B +z9oTe{aOQ$E{Jb>BcyfyYUL;g8%Tp(G)OdD;S)~|5FCC_&=>qMDt_Tvonzr<#%PIfj +z;6h%+eV0tvpp3*P+r{=U=e!H9&G&9A$O~hr;Kho6-&Vj^hE*Tc^P7F43DF_8|5hNj +zqmgOyF~P^Rd7eZ%uR^0pzA1mkNN9L`xa?Qw_Z!zc6rt>7c}xXG5GBcI*pYQOq;U;p +z{=Sh{{If_?CU5xSp72j$Mm7b@<6G1+bI({htD%q!oQ5Y_&BzVcVTpYE%E;@LE>@Am +zI-Kt$*FEVCM#cv)8z=`%*gQ +zl?e()GzMXmLC{{1Fu?|!1Pmt_(uH0HOzKLISUa{KO{k<lazIZ@B}*C)h9-j{$Z#1 +z%egVfFF2s#AB)I;%LnYl0?#(=4%14Pn-Tru$_1g_bbbkeDUiF^s`|M6Ia-|_lwd(Y +zqj-v6YY?2#caUe6NX)w{&r8yUNwwcJ#=L|IbSZyG8lCZB8tje;e#o5f_{3Dgfk`oI +zy^-IWwsodH|xFJI!d$xJ$(Ytf2< +z#fY_`ITV!H7I)HTPk12QH;vv7I2McArLFW|&aUxdJKy|~s9;E)VTB@}yo-9{7gQd5QzDmT +z9eQy!Y2SRmF*0kTrO)*^@kCpdo!4%@o)Wi`a*N(s{J2l1M)mnhL#JhV$KV|3 +z5PW;^@B*Y=F=G@?z5LPlP(!idu>RoPxm|#87x_we=n^Bn;61J?mmdsgd +z5WCsFD>})~NO>;>s0I1i^9nGwY7~fD76y@@3E +zOUTFF`jo(|l6Q|BJdUj|eTBJ`id$<$j~A=;PhQTeT-HdRjG>L^pVmFCo-=W4b>TI| +zp;FI12*fRPz1L;kwgHZxt>{tHNhD0mtx?}^ZXQAKLfRed^9#-x8iUHlQi17}QqB4$ +zW?BjKIfm~LPwGE{3j~E%&^TGI+0(=}-W3XveFU!(9;Q(oG1)W?yIg%X@>>V( +z3*rT)4-o7lQui8l2wQ_dl9u?{2Gnw+Ng!BxRq^mwBry&k=y-sjXV2f%OH`n>R8g?H +zw6dkB{fKkskjBY#pWb{CcPe+WBR2I}6->ET_tJ0|rDt7(hcUwjxgo>fY)WW1iR25v +z6MI+7`6uoEfBNWW0QKui(^4#*dd2W$`j&#?d*X+05f||9O0LDNwRyKtSU4Hj%FI%CYq)>C8(LAmMIDpRzwm0PGIF7j) +z;-NeOh5S6`+wxBXS>&xOSt(T6LtUQ`gHY((s#VT|f>qJ1+fol%rs!9yHMG4m@1#|- +zxsT3cjLZt`2H@X?&Myg~H&B!Znz*D#KmPE3!J*%Dy@SQ5LqI6cz6OswjP%*mh+#dH +z8YLl82jgH%>zpJtG&9@(ssHVul22-O$3o6!|KRGGM-l=eTF$zljONV)URoyoF*(AU +zP&_1-O?$yR^lGCxsDW08E*UF+%0{Y~7+Y3*>+ONB3ta-4Ko&V8F(g;vf#h{6h8<@= +zx#kJw``e++PnC1eF!O&Rw+_#eHcpuR}mf+z8-XY#7TaQsu4-+Wgdlh+@zca_TrgLKl1 +zDuF#kzZbADl;7=pVd(lKDw0j?2;zB% +zpg5Dwo}OpW^atjup<<3A>2KeQDaM9@i(!%e3hc;pr0a0vqK=aAS)^9X$#SQhSH$&f +zpC%{0L>oT<(=;fdd-a9}(gA&aKB-j}OSAIq9ZaX}2wu5CcXj|;lmG!u9rZn4WW^*M +zv5Uv~PJkq>+0|1n1-)*{)@W2Z$l9k13s?%+Ywtb)6uRqbhQ?0O{Uv^ +zKG16yrF)riKYU5S8oo6l}>F%%- +zE4S{A)$rHWm~Cg*b4VCH&YBoPx?`~_<74~M(3||5$p&+=Ivt+|dIs)AZ4*<{L~MWg +zC=074kDj?C&b-Uzc*lJG65=VvR(Qwh*?6$x-iy)~+dMjFW3GKz5=mzND)&NZ*>&Du +z%b6`7M;XS=uHh{pNx*dy!95BpZKH_sbLp;yX0QExMp>~hO +z?_}yv;@g+os$=**6vQk}Xi3Ni{X@t#rIK+}FLB;#J>Xq+(QLf0JkZh>FHHAUELnBX +ze1An^8M0)cq#)Nh=nzSMs$fF|RNH7b0aTUXTb5pmz&?lp9;$_cc>kn*QEU37J7joW +z_)y1#6_bbG#Sy7e*ejK!f^A=0$rZK5f +z5A2xhxJNtx-X6pbf~9TnG45|Zs3*C^*{r>DJ=k;46D=My>9<#88`ed{)lY+Bv+6r< +z6QG6@f!--#4!)utW&iDoFUPiG!U^3}@wX4>(?^BIY9r>hH3!`kyG1DN;3WZycrhjs +zrU+pphoEaQ+!EAmzyQCS_Z72%oirlu=S@}#!F}iQ$EzYRJHaMiQWk#SjV%|aTJ;%W +zyDy!~uC3@i9?mV1pcLbe=7?>hVy+&)cQl01k5z*Aizb2eE|zK+VK^B^?DuznIUJy6nLQo +zK}V<3YsM=&s$mMlrxoxh&T!O=g7G-);q$*9KDTtU4z=d~Q?0-I(fju)N{2N(9y@>i +z6K;F&E4)?opZ?_zDb?8PWLp1bH>qP89@TF-&Qgvd!LmrJ4>-WN%#~>QunUUOs&E!0 +zm2QA0k-i_#Z{ZyoF16Nhk#2$AN?c=otn6BBc6dVNA2*MaITELGAlEZ=uU13SA*?^( +zkuGy6<1OMbxJlj<-Ro(>eweVUpWZxdGQ|6R{(h|63_TXA@~I(lqFBG5I5un5G~))% +zUSAT;D}D-aA20~te-^*$>W5ze`>$9yY(Yj6S8btBavWr{aOmeDUCKhGG-GDBkpF~( +z_HY27eqSx{^*`~_I)m+$la}r?^R`_6_&7G4pu+TDkZ^XdZJVZe^z5OPYyD*>i|IvLmfd2^8lgNFOVzV!0m6`CIM +z#y?VRbjy&_DpS44w6-}of4=kqTnF=hW}cuWd~n~F9XSd<_zzlT2VFuyAvCV*ZtUBpB3t&Rb@RJ_d1!M$Au4_&Ll`h)qAsjI~|@lu5F$64g9*wc*c +zrTBV&GR)6vm#WhC_x9Gfb1Clw2BmJ=Zg1Q)uQC`P;$hR+x%(xi&UwS^!oex){MGlr +zrGYB--urkH*|lnu{Nw$;VVhpjVYP6civJrJmVaEk`Esi2o$xCy^cPd6d$KJT@&lvK +zA&@iY!zSaXAM*Q9a!o2Df3|;TZtKdWO&zx_R{oV4Qom?Q=mN3`!r9R3sO+^m +zW<`kToeF>Fh1vxR5}OSF{n2x~u406)qklyV-!dAbt>?R7Lz7dcG)qVKp+Cgi8(}AB +zf15}*p|UD`ELEr*FG=WWR{;-%)$pH0sPEg4W_jlhS#0%*n7*9I<|LhOk>88w(NVY1 +zj~=b%tWL&HKCaAT@+wYas_g>xeLat&6Uj02h>=mL^hm-yA5Zt9to)MlvwKqA^yh`~ +z=b5K#7={x5A3y&>X9GiZDZ5BheU_trGvY`_GC5aII8XWxPTZu@xB%p&$U}9%z`g3v +zD;$R)nck-Y+z2cGw9j6p2klWp8z5A(qeDE!E_Q#m$iBuKUxsN?B_upnUu2fqhV_0J +z3bIG-(C5Zmg&Y1DE3x&y0DlDy&)p2zd^Hl4KPp>1ZX`S7H7n)g*vz)-R^QQSO!~p* +zCpgSt(uZwS6CH4^o`&3tiqkieV?d&^ELjH3ds*ujlswu +zxAaf6-egK*^`<--5RU?+9o|u2y_&53wgI;)p$pK6VgYq&TYF4`0mQ<=S;^<)D8JeX +zC`AbQaN)i27I85xTa~2ZmECjUU=H@wYpR&b<{2@jSG~p)T8-G|d0veg+92(k%;rU` +z!2VS2LU!>0Jv`(0hxSthJC8p$m)9eWY(=NTOM +z!x76rqMydPKnJypt5Q?1ieicB%3C(VEUq}|%hSui`P5f2VM$q5v`9RYV{&=!chWM# +zk%xFlInS(-hRa0%LfvT$y(&#h3!UB-e7F}ZI{&YDX?)Q7&NISs-4$aWJU)2~6%Yfm +z*B|F_f#pNeT+#&4JEl(pe}fPK&Z?snokaTzh&(<`0FdCjlbG4-*#RSnawi?4Wgb|{ +zXQ0C&dpWbdPzV-IOIYG&@#E^gDH8P6ZttA)+VOJ!H0|rz7NyXW$7B6Bs;F#4Wp_w# +zz3!5*Rekn?@aS`)cIi%zIjVR+L&42G;Vt`RgYt>uSGd`8?{a%|D?#lnb)DI^^88?j +zB9^ZMIilFRwO~4;0Jh^d*!KZQ|D_b!*1NtR4{ECMjTaiZJsF?E3vSkY}VcruEm# +z9k|gG{Cw_4U`M|^mwWMo_XptsvlpoO$1rKD<_l`ea_2Y7Wfbo9vU+~%`hzVuGW}ds +zrmPN-uM?t`>7)Eq0}aga>1*W<;SnYu;wV>Cqx^n@^1!`oMzHp?SM7{5e&en$v7q#Q +ze2T=2=6+wvBL!2*7VWGQGgY0ACOm)AmdR6=a%C$~56uPU1 +zPTX&7x{50fk5D>1Z=^eP9$Ia>t36BN4FjmHZhiuASZ=-XVYbOR;3}dK0!?2dyc1U` +zdohWMYRPFTTDhg}cO+v0(ZZX<@m!DDZ(0z!q?DIrhW1E#e0>lU9b79vR2#Y4w`W}X +za!lr2whU_=<-eSAea=!Ge{*DCJ?+?4Wq1|_)S%C9OFkfl(n6dfr*XQ4UI!}Ie6X{f +z43No?!p2}UKE|oJg#z)%pWjKFLVr+)X_(2fh&pODGt8SgB}@;CH?t~0x*{fd_4uZq +zzjBUk|ErwizbaYe&B^<{gflZmozW~uEhYd +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 +zm5o@ozs#_-_fuQWrN!+BqY~#ZY=P +zPrx1lYj@{PmiM0+7lb^L@?)T^6rp&SVsv}!VUVeNKLf8y6p-*YDiv=5zNohD5AUMx +z2)^f508d}M6+yGYPTI!|Jgoo)my_R)!Hdp<*+lCml(bq<52iGqVng>jz)hBxzbykD +z$QZJ_*`!M%9M=n)ja?dyAnXZww4@_3S^Xckik^tRY(Q^sM75sQNJM2Idf^OoZ +z(_!TT3cy>jBxj>KCUB8ec$D!f#uxf#@fP%y0eFr1ziS7WrUj0w!F_l2`hZ8x{*&VX +zJa`$U{tDu53beRUy~Gmz`D04+CAJGYQkKx`DgT@aI{`#3Y@yCWr;9|wuO9yGY$VaT +z$?uwI&Ut|`oek4aem*n$>serZ7@z=MICB*JJzO2-+{#P@W_Ib^tSE-5p<0Hsn4?}a +zHx@6Vit>?vUA5Wjjy!P;}*j8E87kv3$mCeRk8fX3JRvv0dfou4~4eG`;iWz2Y0%d5Fh*5na>fv3N$A +z1j^Yu??0QY{U1%vhJEb}hg<`eqy6P|C74o|nro+GFD`A46jrO;vLVyTD0t5&lkPAu3J?ozV+q3r>XOFY@ +z`OiMzcg}alsG}>)wdR~_uC?ZT-sgSZcT&Y=Cb2Y{>o)pE|rxg1jbaCI5yTCcC$c8stD!N0bNRIprO=LR; +z5;6GDZa;o(9ZXW;i`{a#{N`WRP6R^rTRZ;bh0QW{TXrte^FEtTPO@h&9zuCOaR%P1 +z*BkP$@a-CxRMROX6|9XPf7(1aA@+{rtJD6EF2V_WzBCWr_;nY2VAG@Wdk*@;eq0=O +z3;Txjn-8h$%~!LhJvw+?G;*H%8Kza4Or7f!3A)$jdn}%hwe?{|uBR6dN3JUG3jXN8 +zobnDkYsOs;m*E+T_s2?k;5YC7&A$uYK6i0>*X_sTF5<=w`G)Tf+vcS#by75Uhh;cU46W)^M*<<)7ZY#sBfLznJ0?c^s%l +zuJcl{TaYEO;SGYug8@;e5TnSy(5vDVhIS5v8ehMN-IcXzf|u&PspEs`#`*8KV~NdP +zSJ;zrqLk3!^js3+_DC$A&r%KLQ$N9a8#^Q8D|pKyb&pD$-`}L7dip|;{i00S5nAEs +z>^jY*Xw&C0-#^w6Ry>L^yCh8-9!oCv8~?Ksd*u<2#6Mu|akB}OnT_5(ZJJs%Wj*Bq +z)sWnNDV=tVv9x?0rFw8I#J1q~JZrqoljN?nJ=9=5#sTYN%ur>7qox8#h#ct|TT$&x +zXDM=$i#pUQI@{f->h+^dF|JMD60nmmdAu&~9b>NYFK-BRB1SpICuOntgM;%MmP?hh +zx<0J$!xi-qpm*4bJrc2PZer)=2x$_2$bu?>$Of}OJROD7TEg-c)%@{f@%-|fJfDR= +zXZnS|K9<)E(mMTSQ6RP1LGd-7aWl63GrK614{bp~$&`=Er~C#xnEylk2jvOn%)+xkedd559vuG_D2IPcJGOUwn6Rjh +zotk$evG4|{mGQx|Ip@w#wu|jYv!<>FCIF_R;x +zz1O%uenRhGW3fl8h1!^}8-u@nDJZ)LFsv^eIR``P>+5!@q0ZwHdq`i|PM`Z1)H2jM +z{naKDPnuQqQ*1gl{A~_}&(m7mTd!_BY@B +z%q2&hkbgMTu0Djf34MmL%z;T_XUX-GS?V<`-eIiy7rP*lg1xfkWa%6ptm|%|_!IFK +zlfW=M0dHnyWn7YZzRh +zD;6=bbi#M$Z&9UwyoXnabSRl;NPb6f4p;oNt4i|W>4fYa4+GU>h%WV#un?O$Cn|r)1Kd#42TtoPtbZyGIiE}`_g)8yr +zF)5+pqaz5zB0sxmaG{}TOiQ@lt|jbtzNvo88xz@q^OgD{uBNm;9c4@EL59%xqxVbe^o5<^)h3K4 +zsxJAlN6ZmrdWrwy3xK{w;6R=ea|3k!^t4%Q*iaaYT=ERfUT +z~{ +zW(}>nlE2>l;O%L7*Z3oo4txv3!#O}_PF{ur*^^v;2=5oHT0|Ek#QWCn+j6&VOa5%^ +zLWlOB8Ulbu3|$8+HM~}}`@tQsD0PL3=Ej9R-*l>B_K)H3q3$`{!6TD5MhwqTdP88- +zu#&F&LH8PxKQ+WlO|dtAbAm-c0Y-D28YR$NzRTJs4%ZHt*DgsJTsV$NNcV$)BzW)5=){o*pIAZpp +z{`S$vGY@CFZvND@E}`e^Et1Sd&m7S0mp8!2=J|mP>sv*K^${gb=mReu-Woe@E7`v^(s+x#MFpVLy4+N +z06qlN2z+Z^S?3=U)C~_+b~1Y=%u6$>DzD! +z9w%zC8P48>VTAX}W=x2G+`o+_pZ@5`uhA1$C(LZ0&*o!lf}S{_wmQB2c`NY;fWf8= +zC&Si%JDjXG4KW8Qq_aNSIPhoJc5lqH3!_yI^B;lj9pXm=wcXK|C%T;3;V`@q4!~kh +z!u0RVhsu1+D@`izug}le{4n9{HD{1fM!j|NllXNQhIO8`;@y;r8agS0(34g3s|S;} +zh(Z~Ndl5bO$M;n`j)wzrt`6|hs8!*Oom{2m5Hq~N1DGC7n(Oh=i{AdcTDsYcEAIL- +z;m9LA)*cMcrzH81X9gU+FjICvL$Ynl4_M2e&mYHv?Rik!U_J>ee)%dv`&)zh!J=ny +z%BwF6;nng2#sde&`}>s=8fUgUqYnSv?kv%@p&JwUpQTw?ra9%GRop+Dv-Ng*RO~&# +zZ^pP|z_wyVr{Y0c`5fx)GN*`6(-2J#lB~q76qV@OU_zE{|Hz)Q&#c%*n;p4l2DfxO +zPr)9X%O?E})DE7RjET~{RQ0wMUG&XEzG$l6EMDz>LAf#h8mOo2Z&w*32UJX`73^I= +zh#pX;Y??6Py9JAfs++RZHP!1L7TKL<4m$h^bCY__Rn&9FR^pgT=UZO&bGY59(}6ZF +zD^HcUe8AgGxV;Ty4}u??3(5~p#!!a8BaC!Nx^D%$E@)mkJJ)P+PuzVb^;*O+u!=mj +z*=yumSF*42(+Ba8Y-+!fO)#&>i;|t@%F0Qk0Da1;O +zpV?+F+vE!i{(iB@PMKJ~E-$K>HU$%srC9$SzQ5pmET$gouPvY@2*cv`yE}TJf7&TC +zzdBXdH8Z&1zLipzU~G$`I4HHgyhGx-N%WKh(_g|gx=iq!GGrK=(+)nKZZVw4USg+P +z{Jo;Pe%-Tnq40P3^6T_;E@d@F4Q2Bn+{33L+|EWbYlv~WL_DM5shT#18AfDovzuq*#u+-l& +z`{SJGtkEn}v>D_TRNrh*9gHpuV}Mu2{Mc3o4NnJrY{@Xwgx7P;vv&_+PdAc=n%pZK +zXw{o0_P9-KP?o;Q{{7*cCwWb(DRSL`Qd1>W!55Kg)Y?FP<{mTf+Na6`)vYH{EewzY +z`TS#JSdsNR>afT`4E4HtW$(JmZ03F^9;}#G*6K1Le0ufg=pQeveRQheN7&M$o{QLT +z>v$J&ZP9O3(?aaom;T~UWYshiRG?S9JG)RA7cuGW;*Ujh6Q6$V*V>tKtFm^!bVL~E +zP!}O_9@#q*n!fIO`a1uf?iHsG*Ii$o*po5g@-#I6BT8=qBZqi4CI;mF{VsY!bc1Pa +zbP(&;_R8w&?KyNxZb4j2@H#oec!b!%Hfz1XT;YJaNCn_*h@d{9=i`Cf4R +zTn^RZfVGes#P?A1Rk3jBgo(;k#R^Eyu%}gzYNlRsoagq1e^>OGiEtF*dlO1z0_i#Q +z+;s=ch63^Q!!UHu$CmJK&MxZ#HF`iNFuJ{OOgPG2y5%9QZJ<3ol1a1?3UPL9Ze3AYK)62ciM@FZ^t8euF11-Q;Yag8HI0Z8g;5{hGN>Z8Xhc +z-Lpq$Gbm;No&cE|L)U? +zJQu-L*^~%sw8>T~zGLG7Evr>3v{6i5J&F+dOBe9i#|FcXFj4ISLBlNNZb*?4kwKBb +zmQoOqR0%N)jS#8u`B9gi?YYQnD}&2+!Jukejgm@$;bTMOQM9ba1(^zBu6yv!jSnJO +z8K0iDeG~8G%_C0Zw+CW-@a*#|gAemODOs*~;WK#EfW8v@!EXnX+Rjyaf4u2y$|b$& +z7%XWBJ3=d501dRpXaU?DM1a+%))_K_h8Lj)`0} +zsXy7&Tf`YQYpIxSvsF>kY;tGHdXBMU3sW;6b#?4Z07KH^b>5I?gJc;fgw>PX#4toV +zo4oG7qB-a175=sgYa%T1PozF$jNX5=|91aXZ@eW_dccF>g>MKne|z)n5YGn5B|7SJ +z1qATAA8)ZXIa@o;A3s~NUo$yCzMSK$!!&(}r4f=s^aFQJZ +zPCah*aZ2?%pUB+7CHgvH@jWF$Z$r2Ur>wx~5phWcPM*n!66N5!krvW1SK;#!KkK2B +zk71q|{HNP$Zf?mA3s_jyYJE1+;u~NN0u`=o*wgIexRcM@h<1llU74?zNH!n~li8)1ws&S~+Q0?Gu_MY9;)Bn)l^gQdefEMID_cU>NeW={HAG!@@Z)ThcL!GG +z%$vISqYZD4&%9|oVwtYYUdC`)n}DzpFL#o&d(t)XQjMTZ0o- +zNR`!!#2)0@(w_=Vpiy{z7yhnKMJIl@$X+Gl-bw+E(2p)_fsf7E4chtsyxdc|I>UU? +z7Bm}WF0x;Qqqc6difzN<+t8mrZn;?UgBLaE`(YfowS~tbP^JRKurNnVay1=^QCc{} +zhN2>vb-#X8-l9Z0Sf7@}+Av7zyLU8OF06y#Wi3jDy0x|E)aZ{#&TM}_rHA`3wyoqD +zc0(|Zxn9wS}Y64|sY~Y|yg`p0T%#H9I@OP0M9S`1z +zBQdS;3X=7)a@d!b+h96EFo=tzB1}rQg>7`1Y&${J_gu*BD<6k1s$Gn7cLz*5FJHXL +zpUQ(qD?%Ccsx>BcV2!eJ%nd9N=& +z_8HiLxwL=4cx_bAIZ;caD}R92kj~aOY8DMENp065%P1So_}Gx(OkKxab+GP(nf3OO +zVAMHYMh!!)QzFvA&Rm6Cu%c%mVAw|0l6}n)#DHCA><90HHfD{rkiGlffW3tx)`^`o +zdPFjG@oW6qWv42eD%cYiGYEvrkl|YJkwKo8_SO0R$l?x|v2rVF6ub(er7dmN+DH-G +zldN02ZLqf6`Z>c(nu*QkN1E8((UaMaV|Q^X6GP%E2|d&kRH#D8EOmy}Q$4#F{@D4m +zsCy40##aHtr|88%eZsu~!MJ)|E%Xf4@S~DpF{E^NcSF>|OR%)|t;jfzrjcePT0Kys +zxZOy#$T(0#;n?oN?6{4fBx}QY80Zbnx<3$I7VBfm$FiyYHMZQxZlWzP>sz*v*Q+;( +z(Z+`!Qx{&IG>f*`i+Iz04vyz(8#&8P<3$U5(-YD>HMfqgWL?|@P>}v^Z_d0s(uM;! +zqFs--zL8pQxnE*Phn(-UzAgQ(&M(EbyuK-o=(`$;?{}}?6EclD8Y)pn*9Ncqf}c_P +zxfIcydzWu^51x+Vx52+)<;On0ow~&8mzL$JyS9(m`X)H-B3_LuQR_n>153G!S7Png +ziu-v>WIdWZ +zuG>Iot0S)wVOATPKIB}0-<_WIh_h<4P_z8x)IeoE6ppgVhvGyM9ZZjn{Zs7Wm4m{P +zLy<^q(eFp}Ue{91yku +zDLH1H3{3Y7%Fq>>pIRlU6~Wk}pdl9AUx@%9|FC5`Q~Z_+)lf6OPiKu>Rv%{jUSjMT +zVuCg1Xv|J;xEg$&x}G6kkr+%KO!kD!7ZMX(jw8Qt^}?GR`N!)Y?;A<>M5d!!vvgs2 +zZKh8}OVOu~+3Mr+w7~pcXFSo1n(HSoZXNKAzmyZPW)D`<((1`PR10s_M%wnJwnnoW +zX{PDH;*f{j>Kqo{zv?{#F3Hnv~jC&PkMQ(GX8s;z!u>zj#uiLhGpex34rc1rNoapA;-o@Si&ksHGxvT4KXZBjbT>J5{A<{w`j(IQ}&a$&k&NAWubCASUg +z(Bz|}5=7-=z5y7)fec+Ho!mn*3uvBZn78;|kq8;Tq>K7Sj8KVm=7mR^-_LJP+-6~` +zv>f9-V^xHOM^N4pFgD7N`5W&1ayd(yu4Ff&?j?Bm3>)7vG)K($eIx>uz>(=A_eB~j +z^`lG}eiWrA5Als&4pG1|&7s@=&HlQY+_)3ZUAp_h40vcKK*qKs@8Hs7ooIK4b?x8y +zgW#<)6Hm)#a13y!(pg1|CVL4b^T)xN0N5o`v#slb_#Q7Ag6$IDk?4xKtI=|EoICV% +zs9>Y7oDyOz +zUT^%&TmZ1F-lH#?GwlaWC#2;>sj`I;PV+`D{*|rYz5#AUElXlnFs;8*n1cb)bq0Ql68DhsGgcG|1i%w;EOVO`8e(&8s>jSsebs- +z`!p+-9u)5mz2YRqDiJJGknJs$@AjLS_-ruLSfikHKx^1Fr5d+MJ&qrs;?>RqHrONb +zdU<2)83WDn#h{z2uM~TSYklb=C=yu*wSyN@{UPye(gFz5_cG=&%rT-7o6_Sss7xfk +z48Xm;Er3pOV{LKy#IFGa&*9#pR?<5QV(Hhpa?*sG(+m4AxI2Hkj?T1xur2!JRr@Ov +zks%K&vA-hxLK-VR1WY30&BEd{_96xz7HWQ`VBX@z9IkA|ySuH^k^^ +z4JteZz6EN_EObh<{p$$qXn)dbZ<4*BXXSN!Cr~x5Yd3rc*pqy%YSR#~{dXXZ%hA|O +zQT{8Lofq-||75TjL{jq&G^(}PkqM9xmmgI$ +z@Fu1~_))coolPl-nyBtHiC>trWT9ZAL>U7hC!0S?j3&$>QxiA40!#)bkHJI%jSQwZ +z@K1mmBse{G15?>!H-BKJ1~Sx%foSNFB;X;PY{~}&nDvz#nD^ZLk=D#>zA3~JSxp+T +zN4u2a1=b)hotF0ZREq7vdVS*(aAx($_4BP0Q~eu-2zK{NwHrYJyMxaNeVujnQB5>! +zV)*92)S8 +zJ9d@xa4)+1uPer?o_!i7bBeFmEO1>&9T@MJ=RM{AIEw?sBS}LA4kBB>wyU~A#=sa- +zWjJ^}3S($Fqp$W|UYftrKKgTg&P!oFu_iY&*Z49xn;oy}lNHkHeC&EKg-7f-oqcPC2Q!9lhxH$gfl%ge3rYIko(^l+jKm5>g7V(o)nq&3giEJGX=0*m1Z*Khl_TCUD2^bWxDDf>sb2Mtm +zmkM4Y^zYvWn&R$HHO&^kLuus0eCsbTYb|(_-hU*iP*sJChVdac$}}SOg`v_Y(dJ>a +z&wN##tUgq^XXBvV2F!akm8=%I3pV*!2DMl9)QBXIdz+;$~FfAIxgsFL}{ +z8{p?%D8J_dK&j_WSn&0_59xx%3o0{rr0*jfTM-p%@go|CW&_@fKx}XY{HXfTBKLZ6 +z54I_lc3Bp^W#-x34b)`nH`u}A +znB4^{F43gg7Lik;@9@53wojq!+~#O`+R=dNFup8@vvLltJ-^Aa#m_8Ky2`7zxQ8tOSrmrN9dCY +zE|sc~X@PyS^@I>B;MJr10h-t1S)pS;xc{LaXv<4&q)9hi)X!V1lFOtTn%DlLL$I +z9RC5Bqks6vM^GZLlfU9M22byZ9`T+KMLCy}YMdQ_db7Y{qTN!` +z8kW?^j~wLH(%Lt0I`)f*M1@Wt2{7hWd5K5L#8fulB{)6M@*b(^x~ +zf?$-T2fQ?%*2Xi+YO9QaHPka1vj|XsMyBrqo8&{f(UBmt4a?-Qln5Ki!bW3DJ)i@& +zDKu!4zY;dO*LDDxh1Dm0-|t=Df;uFd%JMp2=NE8C+nb7@g$crve4-!2rEUr46!t&i +z&LU_g?c53YtD~;J2mwKMR@^h($p%O4c-B>tUaph3use$g<41TbULpb{08xk6uMv$O +zwF}$t=t%lv2Y&{D3P$!Pmcfggm|Hd}ScR@-_DN-xTco+0C3Dxfi6~TClg$ul3-%$Z +zE8kF%K|>qi%CXkO#98A_(5yun}JI>?V0bZS(s^`KxjTi(j-r9)0D{=NA +z#_j+1E5<0BI*Kw`FV&RWDrxitD@{>j%}1#-fi0YAjsijp%Rt;)Xn@iIGdrS)uA`_D +zn7-z(P8A?frbgNmo|*Zw(Zwqk<@&KanjZ~-A^hL{KSvs;>`!1uESra2Gz+_YmJZO- +z2)UbT#Omx%ErD8$XoCcVO^@A7 +zO3gcAUHcA!mgph??ru9jGC5_gOwa7aZ*uKDMgZjfEFOZnJo5 +zW4{@Tv|ip1tB117LjlSia-67fn=B$KICb2s>%?B?2d7r1Dr+J}B&C{~2m>!tdCM4j +z>^AQkOv~X3_U?^)Fb_%{z2YY><~FZ(rA(bjQu{Tn_tE(ZS(-)lC?ZdbBBEHfbmc%v +z3^&v0t4y`|Dw!<|&7uQE4Y3=b0c#WZ_skT{&Ald`7q1rOFkvWy^q!juu;WZSqbsWc +zrsQ2pw0w9ax2+3|bl7vp%MlHF6G!N;*Xv5zyVVjvq~Kf%bV6yPrQoFH#&&xX)FG(M +z?KhKYVLeKzfOMPs>L}EWqfoEDyxm-uS1DJDCmmEy%P)dCJZoVPTUnI(s0x|_4dsgL +zY_JzK2c^p$J7UqB2fDDzNC;s5_J`)b(9Od=Ap8 +z7zI|vN20qTI&V)`ccJftD_;Ixzc{{7t97zMBN}8W)Zdc%F@Ux{Ioj4yvk7Hwc-v@s +zWM*G2H2DQ5kM+a5rja}v&WW{?=+Z2@&dx>)x4?C|W0bWh?lEqxKe`4#q}^zEXv6WJZqC|kYFPm`+PA*}akn7iD_*lT+1-JTm0SbPzW{?umY|I;J>vfh8s +z!$30Y2KDp=%6`sKTk>LAE%(Dem4$=}e#yS7+l5ZYq}u^|s7}j2Zi=P@dsbFMX)gkv +zaNGXf)CNHg6J>piHV2((5ukEp{5Yac%Y>PaiR})0oTt?r&87oJ12r6)zZX2?Y?M?6 +z_zcPrGu|Ee>lrOtDFX0vrD7e8T~A%G1=5{2q7M~{%avHt7aR{L`X?rO<{QRh0?F1} +zeox~zMZ}B4*{)4u#1BQYQ&6F9ktc0AZtzYXGCs;S!-i*y2Y6%?Q;*^3o6cw?$pR>~ +zGV!qfuHHkUx#@w78f-)JX8x0JMnJPZi>SJ8(;_E){c**fyu$0}9cCkmar@g!i +z44Sx>Nd0vh;z1DR-u<7p1Q#y>ljj>6dDt(7IJy)w;s_)G!2LTlHt+PdhOK;iN$7ud +z$uF-YrFkHVuJoT#(hj-v +z>}2Xq_a-c&>J1vPZG4Q@!m5HOb}n^A@IxLU=`Mqi1mLr7$T!R)Yz@B-1NcCfHkh`&Rx1jf4y{29fnV0k!4POtVg<#g=R>|=u#K- +z$Wt<$qXsKTvchA1=3E7*xxzDDxXzg9SU7SyD}i9=qSC)I2Q6zz)69_~?8a(0Z$qd% +zZ$m`u_?egg>P%eDj&x7y@`kwez<8;k9(x|d<-72@Ny7?1CXDMEXNmbye~Lmd$tNir +z81o3Rwq-BP&awVjPu0u%QbC4`e#Ly8Kww_#XcvQm;V70?+eg%aieww4mu!^`v +zH)vh~?zDZx%SC`X;m<$wJgIVjG^Qur4Gs-w;?8w6XTWnXHMmuoE!>M{-C4GK8x0btE3^IcsPySc=#S0j59 +zQd=vT&_&0azE_xs7iaFdS^NO8v%?cV60rK%!oa*&wl>@PvSzWcIXJ}%d|BXo|3(57 +zARvKCYIl~6o6SucQg(P2lb!q)02Rhl>T}+7xK8h>+k2QQ&8zLp+}Grl4Rl8Z)+2<+ +zJoaPu67!bW-C%OKUcIg_X^1flukf?R?~b3_CN9RGHm=Lno;7F@s9{V9qNW +zaJqrn=V6pxkAySVMe2Ay)JZRbC4RM1SfQKkYoq9@Igq@*tHM~5A&+I2ZbGH`q)RfA +zY5sEcH$T$)sr{{L*sIVnnMYn@mM8B#JXD +z$`*z1uS!+nXf`KkK*-yeU|KbquSv^$zLs?;QF`ZeRTqigsT{w@J^!S8RPCW+1F_pi +zV-;y&wp@NS{Po;6)I02@RFgT)wCbtdKl#Vwsj^z@#g=*;HUc|%5Wnq$@dn5a(0#OU +z)i5xXqF;gcLq$&TJ(r*^9seZ8GW=d{MNfDcS9Y0i~VLo?U{T(6@X$pSZ +z1-SzZy5s4vlp#5G@)|8K9zoT;w1^infysT25zM5ajaTC5WL}fDTV^;(c!upsOsIdJ +zQD?X?p--R_gjiY<4ct#=N08^Bb?M@C-p{J)3b|TyM$=d&+hi#6FSVb0TIr +z;LUG{0~hAjg4WsUX?Sl`BX+AyR?U3 +zt&uBZzn61LR&5^M8`S|tLDsclw@76%{(t;D!3hrD#^kKJW=1J^;)^+_X+;f>IjelG +znt^4c@*OxcYc>+~KzKx}MUp7n`5~Y#^*rzMg2JBY9T}T-V)DwrQ3U4{S$+D^sIdmmVDfRejB_8<2r3*EbL=cY&&C +z12OZF@q9YAdOz(>EvRZXXKg0aekCrx$8mzFS+jIXWJLVRU0?GvB*pxJ;^>gmdR19f +zW&+@I%lc&=M2rL{S9Hf^zni8;znzb_oajU%_-9Dnpc8nTPo~t9@?7Cc$CYp*L4Q4|j7H4@RA{UN-=h=r0`w=1 +z#~+Bh%3zfyNbjD4cj$-W>cu#1Sv9}4vqH10$XQ|Uj`F{_JJ=BF_#j>XdrI9 +zuNfIiN!6|k@10%rrj9aRr{*Ixo{pzrlM$reeU<$GB696Br +z2^dkv{b1fS=VwzlI_Q8EHc|j)+R^ac&6f8WRMGXJk@*c4-RpMYO**|GkX@0A3X +z&nZjV&_HGIjl(x%=JwW&C$mZX(jvxH;*OFrS=!TM9-VfQ;6(G*rZHLCpLgGr*==-O +zrt5VDQYoS&oM_)=zZm7B`|}w)OR(jz;ON-JZI2Qj+G`Vkc5kD=eldSLa@kmIGuxis +z9lLnr;AdmC6&)2YsUIy~km_o?ls0J&JMLzyAHLg})-$Ijt|!`O&^rPSELf?>?Jx3x +z(6&wec#wbvV_ducZX+W|zT{HrpOzJk*2 +z&M&_yFS{HFD?IA{eVAi#3ZWUGm|k-86m)v|O+1Q4HU<23*-)p0`63%JDKJm7#6P|{ +zjrCL1?l8L-0bnIf01N>XrFpH}HSa&2>CwOiTPV +z%-D3^Fsrv_afmwrxpmQ@r@5%XFWyj-`F60z_~?E8Lw4uy1sH9K5g;U>kOjA8YK;T78lYyZ +zUNG>v+v}%~xlUD*fMqBEp2lxVycw?RhS3h?z@(XA3bEH;V0RijP!LJI0F*b3-;|#Q +z^V1I6>204>1|Hrz;(;LlDHAsX+p*_n>Jo3Q1Hx`m_fjeYAHt0DU44Ay3%JD82W3vR +z_o-d^*}la~^h@bWtgrYgm3qHW)l%xzm$hT2brQ{Px);OLPBLH0r34zken<<6S-7P7|>&}T?`PwgKp=pY% +z-R3`y>RH)DvrKn@F=A$5Ier0{q~709s(k_wYha#@PNDST2nItg-Y|F|X=Kl`1l#$V +zG}peQ4xm8SE=5&T)Zh+O1S|iC+?v?X?Lal)mgTW3zHr^v?-tqZCRl(J$=NG6GZ(M)Z43rRM;^px)1;>#+cGxgdq3ab%` +zU>iTgmDwaZ8tIpQZnGk#HB@=yFU#y$R^pml3@;=-)U}#>k;qgm{)_`3@AGoLp4tJu +zn1WaM4Z9xW=zQYP{666V0M63Tk=0h19;JAhX5Lfk8xp}miv-ce!tDS@_B*CWiy;AO +z(mt0Jq5AU|a=MoS74cgL=X@4)!$!jbg(88b=c#QVCN4Eq&eeVXqDA>c1}MXP$PMzZ+e<=*N?YW4UKmJiG9UPXgATsR +z{ukhVmH|pJb8A2k#mYa)<4cZ{{{ZP>h31aU?9nHLxk^ZvwHqHk8^|l49aPBT>MOhf +zsO88-6&egy)+vbYzS5vhFXJ3nb{hpF`uPYk-ql2K;McwjDP>AMQBnd%qR%5a@JaDm +zv1tB9kIgmFBco3^2~u>O7^fn$;|3&1gj)oDm=5r9x+LzZxKx2eD0R0)NThSaz(P<{ +z&ZsLLwT8-gsp0hBr|DJcWvoIHc)-!u0CrZEfYB5N6T!ps%8UjzvD--m+cQi2WWGKv +z!ADdPJ@UNO-f{jv-f{MRCGhCr7ff&X-5K-VVKT0L{N011(xSUcd~W=5)G2D|ZOTsx +zUi4%+J_ScBJ8qiJ1d2fcer;7(PJ+}k-Im+87byO7V8+}wbo9!}*oAz&mvw(#PBvc^ +zgc{jjz~~1F6us!eNK?V>;N6UF7Nxh~C<^#b$x%RdqQ$LYr}^oi7^n^}&w< +zN9arE8qETKYU{`onMYX*jodoKEOxp82c!CbM@PBU%66=^1slIm{N{7|7tNcVCx#TO +z_Px^-k2%~(^ccbsbDe6;=@$-3gglX^N3jy7q=LAPVv;Sb>;z8)9CQErJS$ddjMCqv +z0b|$3(~|-W2cGNi)otX9aCAWD@R59P(}98AYtvQ=T`*@CSB6ee41>5pbhWYyNI^;F +zBX$ij$IE;qCW5z%Z=26^#sO;_oYIDp=zHukW9xdP8E3(y1Gb_Fn~j66h?5HdTQORv +z9b%|SQKKMa0z?4<#Q?kkuods%f&%J)dgXo=0dL~0FAtV!FelAe%&3C91=GJmG~*;0p)zi +zPaDRIw_S(}XfMCzzSAY(MJsSSRG=SRWIV$D{OM=)k9Y9)2}2qWVs37X>`Q9e?vz*f +z=$24*W%~$0)O?nN;I*zw4 +zpAny)6Q;gwB>+W9T2;*J!icJ_*MaG)OL)M^!qTCBWbfZ;{te6+Ez_4%j@5(sf!BBz +zG@D$%C+z^3#)3U=8nQg~;KgB&)$4ccESR#w>c8ztZSBAoKPYQ8!CneiXSD%wNTlc1 +zL~KYjwJ&KTL{9w>TX6HJ@V|e>Yb{yI558?b$38M?R_w{%whw?92FT8U;LyrP!pzY= +z4O@X^Qv8I8((OkL*1Bj&=kT!@oRBOgzVbbkan(3(C^%0PUKjtNvjg`fI+>WGY|IVaIV>p&#h{ +zUSm7=exuugokXmL%z_#bj9N`${8o=q$WWKGQ!2&N*+_9_oX-s@-hAokI3E1A1jX$) +zwwq%%@NpyLlj7g50Opd~aiPho_T&pi>_1K)hln>7G|<{8Wl_E6E&}^*(*^+M%rO1W +zXQ0S)9FIfX0RAD68gC{h! +z5VY@=`hNpyHIOC>Q`@UjGbOm06 +zLj?eGg6Lu)D54F@kqFciY`@$CFtN{j0CZ(hIGX{S#E8>Gz$lQwI0_E}-)T#v+fk5jRP?TvRI)FM;ji%{$#S@!9DrG?QN&Jg5mO0bG&3xh2g=~{8y(8Ri`=q}cB`->yDO9}q;<5I#}@(@%TVVZ~AfPrdw +zGk5B@>5rZS=3SQF^Zk&1x1}b!d+b||{Y-J5(&>I%k*uh1A8@7nDe?4axHH$Jy^qgc +zlm2Qqs8EVufiVjJsou#?=}Z*wbLp&zmc`ePKL|uigF4JWfLy?CV9wQMaZ5Z@+9aN| +zSaef+DJS_6z)kXczc5bJN77X&;J&o1QX-Gq{gvTRu=&HM!c7(IQ6QG%W5m;8Y^cTO +z{E)6*mBTTsb0CI_R`3PPkJoCK%5K&cT9VpvtWELWGd??Wj$VB#+n3#M08E3C)gT8@pv-OO8X2Q5?TA;T +zC?1TJE1uhh$AZ9(hdW_Ncf +zD$__0OCQZ!z?a=GW&L#n_SGZCt+ium=eDZf2>uS8C&&2I{T%|$b?%X?c22;|-V#vi +z>pcJE#h&dQBZr;WYnXJ)bm^O3M_>+C7HpQM8UxWllk78+2#m&_{TaGC%VRfGg*Ra7 +z_7}kH@rFli%{Lg`>4104ZKDx_aMtzI!CHP~10V%khkOwrjQB1}*NgL#0-6&)x|H6s +zpZA7A90A&5z(IPNXY&VhvHfVIaejmGm0Lra^)e1b8;^H`{C}n!KSFHo#4kTz=DTL~ +zAw=5*w>gySXRp$2zqE7Sn66q;#`&IfXFgLq@v0C~vooR~jov}TZi;V@UL&soTh^+Z +zPK=E#DWwzE)3j)A0i{gb>jny=C04-a+ywG8?+aunp`oz?Z(OlC=(SKA4etZ0wuZ&9Do=`572=b0?be8= +zwZpF%h~Ye5`9@uZAm?P9F&fllVHY`~IJ)%u+uGC$^Wq5$#D^u +zS_b%U_P2{BtH0KU8AOc$|HLv1DF6`Qbu5IkJ1&QhA=_Cqi_FfkjloC&aQ+*BCKYEi +zm1<0V$ITR{1hTZ(wl?7o{OJLrr$9BXTL8g-YB@Ic`}dLskU)E)L;``ld3wtjFDg7R +z&z`9PDuh|-hR@I8x20ZWCg(lc^s;WfxH0+%F$lAvp*~(1uSl)J{-Imwe%c|(?Emd| +zO7zzNz2d3iI6KMy(JN#BR%xgLib*{DU|;*gUoO*AU!cS5aU*3LlcN#hWUR*fc&8p9 +zcgFvKU)V^0#)Ql8pN+-0A0E#>7{KOm`vjMqOk2K^q1N?)>TSJZMaMSVK +z9t5W#xw7L`?Ozx1ajnx`Nk;AzMhl6cSSY+^1zb19IR+P^OePW5qTVC2uNARxadR1s +z-gz_N`rCQ8l&$U=+&%vt7TNW9~oWH=TpU;Yoj +zY@JuKcvAW9twS?@c%ChK2bZ^jOe}ok=x8QNE~0Qu9O->PHiAH5DH&u2VE~pAV-;zB +z1Jor5M~>$HNA%=>x9-~>k4)DL5BpME@umYGe!~~oW>7YM5mnE6WdtFZ`Fr8w!W3J& +zo2FJ<`A<-Pj|--QkXA7Dr!#}mfZ1S-vOv-_Do{RXw1C$@jS9GP|G5(Mf4dX=ni$-v +zKY#rFzSo68>s6oq=yt6&YcI#CYVY(@EA^iGK;`A8;L4p0X0%^%!~Otz&+!8w{*)a5BhxbqaeMqM +zwTUJaD^o^>d=i6`OK?dq-TS!xm@>v+)-(oN7meKMbd%mb-RV))b@Mbf8Ybd*9Rr>5 +zv-jnuaLg??GwzMz253xi_fX`{Vs^2E5(mUNh`!|=96K2}hF%j8NA%6i$ +zgdGWXaZfaTq?}<0p78al;;!|{JK{Hp&V6 +zHc#=B;))m)KX_IWon`KA2XTzueVP>5i=&C@Ksp`Q3F2$;marQjWmOs3XJitsuzf4A +z0u4I$mit>IdOv%(uOdw5Q@l|El+{LZ@07g#OQc&V$1r*(UAF)=)>$}%W+@M6js6+r +z+o4$H{sRpLYf|Afw-vN`4)AX;)rAGPx)sbo)%xZi?jDoq_A9GefNa-K180FhR>s&R +zw0Z?xkONe>sr}fH8?^BZX`}rAJ@c-j6b_YGM$dPtWkG +z+*t@b`zvLB1vguF+QRCJ1g$Zd35*q*yUiaET^hPV@`B8kczt`Ijb;> +z^!e)2h>^X`yF59qbGI^GLqd~!?21up$BicI%Fe2$_9mp`?aoccRmZc_F!H4Pfe!Xg +zjB_vF$ZTO|dxmX3x1T86xab_K_~$hz^`m$h=VGZ{|8=r0F!`um)P--W`&41qeH9%+ +zuSpvV#5w{GeK98Qx{WOSVbq>r>^A2__n53JbhP=wSf;U%(Wn1ED*BYiG)+C%y7k@D +zm#wa;cTpguEw*rV{C4?z9)(kIbu89f6P0??m;5PxoK}G80iOaet&%FS0`N5~{XQK@lTD5=dH6Z$Tur7Lh5b +zB4S07DpJCb97QpLgfIwc6cS7{hcSU9BxF2q2Rh!~yVm>TwadQy_=mN>efD(L%HI3? +zzTfY6EUep;lMo_6nv!OwN!VXW2V5p_Gx86%l`1>zpj=NRto?mBLy|sG=QG6}r@5|s +zlF>)?_$k3Zk|A4H#L{02u)Decww5cfLaL&#k^uykRB!|UQ!9Pz>|xB@9%BwOX>`~g +zAq|R#eJT8Ejy?FQ-d7?TF!u0OPmK{!X$ru$#+YA(2ILT#H+II$gx!nm8G+@dm#1TP +zqDu)Y4XF8&e-But>sM`v!J}|b9)S3r=71l81rA0MkH%k0);|a_*-zLX5UqIzA#kxc +z5n9?@06rbInWCRbyikLC?mzH4RFH4&ooWs*VD_NJmLFPQ*r545M)@($4rquL8o|*m +z@`E_ROpNAB>?b*B`FXNLG}R}GZy!~tp28GdW-Rk!a6iWDNdRO~(OnF5BebzvbMza# +zJBA$`+)r+Q`^^vj;GzGA!=0gtZ59z?*^?FcX>0cdu9MwqNANiPW!(7xMO5lP!C`gv +zpR*1y)(2~PHookAtHtZSGauyG0iHn%cunHoY*ktM!U)BP9ei3C^FCG2om-J?-+yqz +z$^ml(|L4+G3^g{hJ75aYs*KQO_z-?BJz`?mcMcTWcd{^&kBOhh`MGpJw*Z#KNKvh(fpz`Dp4%Iet&9H +z+*or-9b^1ONk1~Kd)J{fd2s&4Q!mBVPTouKD4XakoVzPlK6^EDC0vS4lh3{q3q)(W +z7^bU!G4mCLT)X7N&f1?)ut)4Pxze7*RXGXrH9%hiaBhkjrv5DF3r9xF^TKfdRL3)a +z1dZhp<6Bbj_r767SLLl|XI0q4tN`hU9m@0$jc=)DMPRL0e_f|n{lnTA$^7g!F?mrr +z_JA;=k-M605AOp0knyS$GXT^8Mjnu0`&Hfd^`80#1oGS~v2bwluNUy=UmW*ioa^F~ +zwVJY71^^Kh(vEe71kc^ixLzc+?71}?)|6z?ZaDAEDO)Q(XFgw{V3@HStW +zA?G-pcoUtyr2UJ9%}Gtb^^`}wi-G6!^h32h0E}xoJFPxbRY+-bri^xzDgi23=LNX{ +z8uaHxzlmaR-Qx0q60&LVFT5XK%@_2?qFCVifuX&p?^eTwkL3y31=w! +zQcq)LfOQbW@xOu57sYstcsXFK;xsYIrY;ce4;PW&;_!gr9sm~8p4G?!zk2-o6{hwC +zo(dEO!Hc#&c)=%X1KJuPTR*xvaW-N@I=Vb5e);Qw;;eXuUG2=3drw5fz7kdJ-&Mib +zJ%%aAt{)9t|J?2iG0eBk7pp%{@aV%dEfp?b7dTYv#)Vh$Rq639(>KN~y({{%t}3GH +z!Whd~*0pRo@f}RU)6U@NrrQ|Qcm{pyF+%D#AU8=I#AcPg%D&W-zk5MGwsXx~6*)_7 +z4#!UA3xevL>w-cI+uehcU8?y@Vz@dm(ZiyUbQw!Cb(QPuC~5Bl!^mIFu5cR$fbqZK53=%q{D;8)vs! +zDaG|NjY@2tpP}qH&ak5BjJ)$zy_r;%SkY^}>ATs0hE@K0D19bO!+=I)gTjhTDQ|#l +z^3UxB9E1dUY}3_yppLi+oSv8OZ3-J-mYuee!hfqSTkdOACRiUZR!95zEm_*3U0icZ +z2{=>t`fe(HgFP@yLO>le+GoP`hdPjZmmiAK7OeC%+g;-~2l?atdnH}bgSPpn2gq45 +z(b{EbRC3LA8j$2BcK87}!*akxo93*oE19NrjibAO$^d{X*!gCp +zL6DJs8g=vxT);jB2x-&QwGfb4T>viAfYs*L3!v0fEV$Us1Z`~E(l`bAO2tz^lbdF+ +zb%MNYW7WWNk#F2WKyjNU!{xV$(XPy3F+gV=;M(yRc3xfWQIHlMTU&QuyEF1Gh%`@g +z;>tjF_XVHo7NaxZ{4AYF{d?ovwYGIzg_GKwSi8b-pAl>U96Eq*+YFQDyXkl-KpDBI +z5rvfiDFtRE4Y9j;pa|(VD73e*fOkptM3|F44wTZ<14*>x4f1X1Y$m6vDI6dZ42>Wc +zh*=2(?2^R)xI2e#dv}{0-xOX?xYrc^m42@#i_sHX?-J=5On%6iqGBpS?_t~^8~CxL +z$=Wdi0`pnJSgbmHT5%5f3-f4an!DY@M5*rDu?Yx87XHY5YIm>m^FC$^>FYyw!Dy>;1SE9oMBPs +z0rVh;tV+9Xt~wEjI+E-nZjI6QQywK)9tBOdfNzqK1bg~et6IrtPgj7C8x+nHm*N%W +z(mRoCAQ>0rF>G7=QQPU**d{-151Q)%B2g2L{3F2x@U55+4aE5*{4@I;Ym|2;u8JqW +zNgd1cF%`nOf;wEt1?@`L$Yf!IpA&lPDRraZeiWU9ni97*lxe?ZV%_k{+l7+Pni +zxa-{>L(QeKk71JZd%#jivywTx2zvANKo>F;h#PM|GX-yO@=`k`OUoa&!3{T9_VW(r +zMPx|SRmu;ZS(TQ1Tl}XENnB0??jD)7E{LVQPs6GW$Xlo#i4o*`eojtnyN1`hh=gKr +zbi#1Kts#Iz1zZM5e)%Z>#&=@!U`k|ShINN_&<{|^EFqQ;p8#^2tuQ1RfOo>uKH(4s +z8_EDbuC3-Cqk7zgv$3v`SowI@rm3TMMGhgqB?Y(p;NX59&XmHrFyS0_BcGG;+9?it +z53A)QY83Nr1W$kQS9V;>Nx|dJu4@2HQbm)$rq@)Xnt+Ef5?(u2#+%pk8~Zlk&&5!p +zCjgYCCk)+$=j+Sd_?n!IHLmc*f#KQ>8fC5Set@z&nTBH!PWY>3o-d1Lk08EeoCP;cwCg_hC=`-Fr +zY-^r%%F9vd>GZi{4$biO!on^wIS_6wCZ{hw6sCO?!SGY=YhH~i9P8f^CR&-p4{_^noIMY +z*gD;ci`3SRRD4^YFVTZ_@<|uEx_i%=!04OJr&pu7on5IXR2#O*{(ta4;I%soakfbX +zLjhG)51HgqbCt6mxE-dSJCzhr94)r3D2!UaoOgsHQ +z^{LT_SS-kZ|M{YgI0%VD%rcS8f!hot!(m%M0>_gQf9%1W8A7@vGLQC=n25kyLtOs> +zb6Zh36htAC^qMy1BXzD+Qp{_p3Y@4fP2EI9sS`u3s(})rmx7S7g(;V<4oVXr0eNey6j|qucC@{(`T|5fo#k|PW!99^<_D#wV +z$9;&w26@*X2QNkisT(EKlzi;5IV>{-A@pHr#_f5_HbM_iT8@UQ6K&ssPI*l<*L=F^|#NEgj$SeDqNo#dAz;6zAf0I2 +z2<=dp2**=_JtaN2y+9c`$g2vp0sFOF(W1>=mNmT8O#&IP|8aviTZ~B#@3p=eaQF5% +z<;hKv#1n2$aDF$h2R(d3_k(x^e=F9No^f*56_ENzSz018Y+Jy#P6*+~WvtK6iWa{8 +zka%-w+uu9`27KY$PjK+wi^kdZhSuLSgl!}owuw)u%`dKOsIB?0Xw|c8o(C=cUyCBh +zqn-<+e601vQK(SHY+V>?>bO78(bO6^rWYBj5Uo{Yom^t3J;xvUPNS3_-&cFCf_7^> +zGZP#0yqdmoZ>3JntVRydsIU764E|y+BAdv7GbqAG%z4yiNlOuR!KLS+Y|yupqbV^@ +zZ0q=n*IBd|O#!@S-X5+hVFW +z*K6yLJ_=mzDT&u9OT@H#LtD%s;du&OR8^6RA8wvo>aT9lKjEcHcOYvxW-2p|r;QHV +zHPY8kdMiIM7to^uPgCP~SoHB@y& +zo^99kJm6|(;(Cg82}AQSop!SgN_2KRn7x +z{bW9_i^U(@vh;iMXjO%QR;i|#;gYCEk*+++^abeF{GZkBxY0Q4(FIBXBhtSlq5=X2)v*+k<9|Sx +c +Date: Fri, 20 Jan 2023 20:34:09 -0500 +Subject: [PATCH 02/19] Add files via upload + +--- + .../AppIcon.appiconset/100.png | Bin 0 -> 11899 bytes + .../AppIcon.appiconset/102.png | Bin 0 -> 12288 bytes + .../AppIcon.appiconset/1024.png | Bin 0 -> 368312 bytes + .../AppIcon.appiconset/114.png | Bin 0 -> 14325 bytes + .../AppIcon.appiconset/120.png | Bin 0 -> 14957 bytes + .../AppIcon.appiconset/172.png | Bin 0 -> 27884 bytes + .../AppIcon.appiconset/180.png | Bin 0 -> 29700 bytes + .../AppIcon.appiconset/196.png | Bin 0 -> 34742 bytes + .../AppIcon.appiconset/216.png | Bin 0 -> 37727 bytes + .../AppIcon.appiconset/29.png | Bin 0 -> 2108 bytes + .../AppIcon.appiconset/40.png | Bin 0 -> 3404 bytes + .../AppIcon.appiconset/48.png | Bin 0 -> 4336 bytes + .../AppIcon.appiconset/55.png | Bin 0 -> 5234 bytes + .../AppIcon.appiconset/57.png | Bin 0 -> 5483 bytes + .../AppIcon.appiconset/58.png | Bin 0 -> 5685 bytes + .../AppIcon.appiconset/60.png | Bin 0 -> 5991 bytes + .../AppIcon.appiconset/66.png | Bin 0 -> 6675 bytes + .../AppIcon.appiconset/80.png | Bin 0 -> 8463 bytes + .../AppIcon.appiconset/87.png | Bin 0 -> 10024 bytes + .../AppIcon.appiconset/88.png | Bin 0 -> 9912 bytes + .../AppIcon.appiconset/92.png | Bin 0 -> 10594 bytes + .../AppIcon.appiconset/Contents.json | 232 +++++++++++++----- + 22 files changed, 166 insertions(+), 66 deletions(-) + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/100.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/102.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/1024.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/114.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/120.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/172.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/180.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/196.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/216.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/29.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/40.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/48.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/55.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/57.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/58.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/60.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/66.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/80.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/87.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/88.png + create mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/92.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/100.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/100.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b82a70a609fe20c4a578b7294d6eed27415aa477 +GIT binary patch +literal 11899 +zcmV->E`-sEP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91WS|281ONa40RR91WB>pF057}VK>z?PBUR&-nN_$(cBIk~8+;iO0mT +zW8;})yn+#q5y--Z#FQci&yU<$lZk +z?tLYzfFwxFEXyk9EIZd^`l{7_zUQ^txy$G4W4`C^zG_|1*T;O%YxV0cuk6Fh=kv-C +zccnjEUpfl-$e}-^-yaJ6fg!&?yiiE~z>t4R3^7K&UYJdNlUKH@R$i^FvR&Cd91nON +zWkvJdEOZQ0-{h73S1YepR@u&dZ|a-eJhRg2G|Y(YVVOdc*D5#9tL4TfaUgf9)mN=@ +z)7JD?5d0MxVZkF5!MA#brY>{VvH$c&9}yP*+5gJn(h60+%vk3Ok19hH@o|q~rBbPd +zO}A=2pXah7Q9)dfw5X|u&&JjeSrG8Tu!q2 +ztmMHivZNX_weBVU`n|CsZVB*%0Y0x^8Ia9oWjrw{Lo*{XfX{GjRK{>0P0dImn~-!a +zql{r?ug4<+v}^D+NOQ1BIvQG~JKQNtBi+)2yse={f?gk(DUv}uGKi@tL6?{r9R89s +z#7F~Yb;uu5l8nVC$(49I|htWN@ZsD>a7jxy4ADmbdzC^fc< +zqoDXbeu;oVOPac5P1|zW&~>@2X-pCTUq3;^G`Lb=&8(9i+9VqJIGE5JXp;A= +zyiq=I`8%ZzOq$8WQ3HQ8NEbL+)6>%zlp$14lnOs)Kc(Rx4m~1gr-!A{Zy0gmrJ-IL +zlH7EivykL?CLzn2j#}Tt?JFC!7#ej7cyDVX!L?HglmK*5Pm!vmG8a!V|n`Y +zUJ1bCp^eDp?X|}?#-F3}#cU$*!mYX!YoGOZc +zGwHalWB%l-kIRE8%c9DLVo2`q5&zhW^1V2i=#)y&&*3 +z(%(DyQ~BkwCm|J$${-qTwTTY&1_}4PG|2FoDOY%$2d132=GxtlQ>~b}pPBmRp}BY0 +z;WJb2zGfMXKJlc1fB&jmAWCQ*{O3+4M4`wJG`lPoBYeocWWGtwvy%NBb}Gf2|3MK +zVihd;n^*p~JU6&sT0+gXiaI}VDz3Ihw`Vcc1^qJ&jbzw>8W_)B&arl>u6D4cZPlF=Nna@8}SscaITXt*cEHcxmEl!wNJ|Tm-F?lO} +zT8?K2B$|sUQ^-uymm6LKE1$W`4UEj0a_E~l6ZfuAyL@2zJ7jv1F0nN-GGb_Bk5c2i +z(j(x)E)3W9!1!VL+AH7Il{lNSURf$(hhm5PPFAdkd(JG*x^y7}NobQRgKK1MV7WAV +znv`gi7F!LKgpb6kmPklp|tB# +zCF7COo_u!m{j#}zol1(TNVGL{GjuWaO}CZh*6{Ff8T6(D)1X?;It+)$-~xVm|2Ghy +zn!?6VKy_%f`g4^TqEgLJEnOGdD4T+-rO^t3Im!lYZtBg|*IdsGlSrrl)Kx5XsC=K)hbn%aW*k1 +z__wcrU!EO)Nh1ER&fdy;^WBrk>?;MS*ceb$845u4`-~kFtd%57ke-9}=D-Kbelo!zUkC +zyFmkvgfS0hqH-GL8&ZeeINCh03a0R${FCp4X*1Y)_lA#MdeJw7g$oO9Dog8@LT~%sq2A +zqj*nRaFcBiv>}a1D=rup#1OYQxf`;a_a`m{P8D2Dc`6 +zp5dO%pkyrbcgx3H-YZRTYdJd`ydjBr!#HVz6CtQmBBFgw!ceaV@VwdIBoSX2cB@Gk +zu(SzN(6){K2u_@Yr2)AgeHx~Cv3T>r<|*^wjCi4Py}l;#puNXo92b}=$w(M55w>N% +zZm=Y!Fx$8|cokv0H*qEY6pnpB|jOuzW +z2Gw>L04sAdqB4ebgC_#x-QjDIKWe@evnK@OostIRL|FU66`7_CA*GRU2NdB%cpGFS +zIVSriUX`;zv?b6iTidRb{_rw&0A>(hIy~`PnM|CO7BFN*>t^W;uYj|GgA17%Nv1|6 +zg8KsQlhN13!e)~%)GOZ55~vAAa=}!nm@MoXVf&+&TjhIGkH|zW3OnN`gbI%XRO#A% +z<OUUCx +zPs%<0cgWhvD*4Wv4@e<1DIIubVXg7z=ξ&j)2w--l&j?0GqP=KHd8$sLlJc}}dv +zNx0P>Oa?48+utQt&+UK(M~nbGq}98+Z;*~a +zt8Nb)!dLd-=0QyfaW^7S0ywJk?ASh;%1*1w(C`Q=k+}|URHwQdI^_g}3#Sh@-zs%TI4fp{+aZIx^(aRC#N5kAD#NKe60U2 +zxeT*^d-sj9q_Izu@N`}t_?a9S_>purtpx00@jz{jk3J%8%^Rh)`!1Ln%=n4lh;Q^^ +zDL_q0&-=xbi%S7Ij7*^`PFQb??2w;CpMcZ^F@u3B@TI9zTnQl4EE>SA#$+R{o*jEh +z?pk&$v_pN~V_im_vm=_Bmc5g&+6zF#0b9}(pjpgt0HvrVU@)(O7qbPfEw8y>qK_SE +zurb0nk#)*+HsPKOd3N-7a3K?N-^!24#U@W_Ark1thg6pjiqvYbhl2Jd_F1R$VTa1@fiuXT`P?pZuu2ogGg+8O`7YyqEuuCsbUyI#Lgs#WND~d +zdc#X4nw`P0mM**+5V~33*e|274~X$XEu_&=0juV?1hH7{YPwuvsbQ2SwLBcYLeB{2 +zb2C!N!Y#!qm@Gmxk{QEi3Iz9qY^Aa3OfXhJ*qh;^6Bpt%AKrXU8j)55=@F$JX-G}8 +zXogTu*~v@MgC$1T^s~PSV2wng(sS7n-U4F|JqqLuBMiZr+Zft=DpY0M=rTD^tkA2P +zf`le=NeTHvI{VlUqXn(d&oi(qseB5mDFk+4tpsn3{l?Oxs;<0nKLy0dVd3e)HQRbH +z4kf}rj +z&q>iUyQY1U>f@iEejJkn5mrQ)>2>WI*dyHy-C#jho;dv&v6sd`1aOAs@X&4Q< +z*J`*M;z2@;+ByQ-k%puti9T1F)2LI#=<6R(oR*2~l)9+&AnHlfnKa~E8#n2CBaRTb +zF0{%TV>ZHwvL26iK6vaO#e2LwmPD2L?>Br}KHPgN4EQhQ&FSN^CbB|?5~H$r{3W@6 +z)yL&S{kO|c-}=6c%^Z{Ecou_-8;u^2l`U7w(?l^>NGmtK!OnTReJ_YUmBsri?s +z6}Dk(|3_rQ(s!zn=dgLGv}McgmwaYG;$y!BnJfvlY!h$yZQ_fphEa#=a-0qK_`GI_ +zg*XtGr{lkq1o|?I)gnDu(T$#=3CG6Y5zz43rVT0~)I7D)oD3lWlQ{EwB6(KTjdtW7 +z)bv_W#&&e`t`4q~cIe;g(m_PwUIMwBmTZ$-mTot_&C02^7@ohi?-qIclI?0s=zVcT +z%wQxX?7C$;K0FKJ8I5}Zs*j#t0gU!zXRovOUP<=6Psi}W@RM8u+f<7g +ztVnz~QHaah;0k#mfe9fEAS(!4fxC8WH_}U0`(X5O&@ib^2i*BN)YhB~(Lf@+k&*1U +zu42`@DvntDfW9sx8uR +z60~fA?W)uQ?r~-@#CQ?97=(TuO;2D|9M_nPa+X9g#4@?*(YfdLE2E~DVI82J6_9ag +zYigF|Bq3INqmu+;7(P1nC#MG&J{-@T +zvlA_I$~h40Gn&iUkhknJOFGMSrgF9}@PiSEn`uW$;D>8@Q)Y4^gzmMRfx`mSL|gMJ +zS-bpxX~Zg?DI#)bx|`1|2?50R +zLk@+1quEJdhYNnHq-v#t}7)+DZ!CYO3Aq-s$w4dA#Sf?L(4U6S$DH(Li*XXBrlZs +z%F424dQ+7le8NuY?oA@vX-_#8+8vkoMFKhHxZ=p1bxZu63WUzUT99k~xxPRGsLjCC +zTZlIWC5x511tSfkgo&OOfAoZ8T2|R*90TwLCSI3p;}XfkfCnbu6ff-z%Cp#~$Rh|T +z2-|xQ>(V~v8oJ6eGqH#p@v_k(rI468q$pmPd#5gGsjGEVCR3`VnhfCxJnTl@M{(8W +z9DvE>dQ;vp-B`||HiX$Zqioeu)<9d$|Al_Bn6nb&vU=|qBn2WLyZ*n}u%Lg2J68Sf +zuVirjeKNWH1LDIpk=>Nj3FL +zy7NjfZxq%YOr(9`iW|_JUH>m6wseOwrtRcoviy~=%3EM;7Hur3FI1izkcy|oiMTPO +z!!3pSaI@(^S~3DbUesbpF}TQajbTx7LL;gyHC~R$ktJ?p#cL*04(N0s0vlxf2=^to +z6QHA?dOswrH#H%xXP%U?%kP${-gip-iAOLRyeQZJ?uKVzBSx3rEd3y|2b)(yTf-x) +z&Nx(I9&8)<5CQfELNdDHK8ZK4k=E0{mI4BkH2U?zW7mU3p$&24R1;K>z +zw7!EAfw3p)0%_zhgDR^U&C3{Kn8A@uW!sPuvl6kDGH$jy%;L--opdHZpw*xoMC!~{ +zIuOkb5APKp)KD(i2B~;i!iZm`BFmA#D#7Smwt7;q5N?NBI&<9@B!Vr|Q0$E4L3qNU +zUsw#%*cadmcO3d((l~ioqL;l_e9-6MicRD?VIxC`6BnOqKQKm78gx82Q8<3-!+IK2 +zG_-YcLvxeQY1FByd9c9_6QD;djOpT`~t +zSL+|6Wg0#fz& +zF@);MbYCT>Z~E_&$4PYBi;-(S3-^}sD%e9XGtD&%q>r{orK5c0y6zYTi32wVJb6lm +zbSfqHHB0S#Vo!`oOHOinT9q_0eay)aiddtCU>zmHO;e6j<(^_kk>=|J<5&a{cr-2_ +zoFWgR(8yX?+}RyfAOaPX>AA*sOUVpM4Q8VRoTvsIvvayKDxPJ9P1il8A8;P6G~1p;zkXiuQNEtS=+m5Vmfqa#pOU4w4{U> +zb6~2tbGkys#EKL{=FS|J7K^U~RHVv*%{_B`D3XKO5fyJrwLKfq3k~boDQVgDfFxIJ +zlgzfe#FM7#usbkgb2NHXv!sZ|nKl7GAj4j{*t6@{YYr`gZD1MKAvE+R**LHqC@T@| +zG0k&#?uMhR95+;1#7)&s?Ji2qoH`tzuU60$)6?=gI2)R?0k3CC2n+25rr?^V(Me?e +zI8WxzY$-X3ji8(c7Hz``41f*xu<3Bq23f=wGM4b{B%1 +z%Oj`+1I|D$l@dS7=-+2E85|kn0S2g1v}^QZLZBWQlg!{=_eDhFX}&Y)feNx2Gm}AE +zj!Br6eQ1Ph97t81h?_19)yYxxl?;S|w9uO}n&8wYtVf5{qI)5%Qf_vGVa)!S-}o9ks?e^ZpyiE8pnHm$M6an_o2CC$V$4&!^*l^CBn`ubaKNKi%f&` +z6kdB#3Wr{j90;51>6gGYJH+48CixT&LW9T_&Sy=ZIws@Cj^d~&!t5(oOV^53a_rC{ +z2{j>1-q$N<1_ot1mXPIrOJ(01CuC#>2faI5WmA8bJbP>qyN?BV$Lbz={P?82Je8K- +zrhwem+l13Bc&R4`mm07cxVS<;kbFaN;}KXg)}-Q91x@&z>WwsPmliv8g0clOgdK51 +zCW6h%4oJxfIg1#T+ZY-U3;8AJo>A^{qDM`bQ#SuaN>c?-Eokxc8(;sp9>4|CC +zIhdB2KoGx`<(G9`Y5C#X+Q1w?e!&4M81PWaIU$Ktad)#i>WZKHi*%%PLt|=jWsID5`GU~Ou|EMzLGes@A2`FSq=*`)yXa- +z3`4XVa0tJ9j`c*dcz^y~Y54hfBzE^_#JUq3OOS;8&>5Nh#+PL3p>Im~uf8smFa1Ua +zAA4BZuH7M*z3(mwLL#Py2jzuFA5mrnptgv0D2T8<420L~k%Oq6z73Z^o-< +zUYw?}qysAIXYX4j9U-4QbYe!n{901JbT}^Gy{;8|_CN+O^IgO-ypu?r^fd#;y9!wq +z8AAy+rJI`r4SV$EB)ZFVK`Ikz!AZ%9tBE)6k5dY<%*#q^na++`Vm7;9(;MPFUS-CM +zI1s?s4QM|!7Q}&Biwtl+oPiqif~qP&9R;6$Oma(?OK$5e;u$_Gg=4Ra2Tbv8xj`~# +zPe>A<0sQkT~?KFk`?w-o8yXt?I{t>kheL +z9U{G$?POE{6!_xy<#OH97U^yZ$>%n8$fhp8{CYHpvs8#&gOQw=#DRw!_@byCr>nvY +z#mgaqlW}}X)=H}vw6x)J*Dy3UF|C>s!ir2>mG()Gy1y~JYQw``ZaJyN69U3_BX;4m +z`7M!cYUmkwBoo-4Y~hv79*%_%-P%M3CdPx;kOhQIE3?V-XFX4=3G2P*o|c9OHMLC6@|p}Wl^8OHaLWo=Ci|_!>Mc-;6)R>25;s)1X1IkfRh~)@$nKdJ<@T0a +z1p8%0h9E93R>;|I#Z1-&Vl!M$#^hSsCHI*xBY22K9#k3CRv`$Fjg0DFg^#0k^uIHrx0nM2r4N^&}o<P11|fXF$f(^`Xq?;6u-9I6DT0Jf-h^5T_#U24|D& +z$j+CmjI=A!(@opi*YipU`{mizRfRt3!VCQqR#c?~V9lF26X?5-!3F-|#G~>Tkx%3B +z8p0*`H0*y&0?%Q?DT|(PCLy20+!-H}sax+A>r-Ep%)!0l{mQ?QVbQ{Edd_>|f +z+RgXvU8tM5|T}YHS&b#dG!_;T(OglphE9la#(vBQ61!T%k!z&i*nV} +zm2yk#3K`$}QSld`f~Xsyw>5ZKfGU9vkhRw$!U8w;3lB*Csb7famFE#&LELEbb<(~4 +z-4fn-jT90%>;{Rr;=X?+%`ZGH!*3qOOFDU3x8r76y=}Yf+p|YndzMHB?Uwg1lN}hQ +z0p1o>mr4nsgYuLcF6)qtUOtZGc*-IHe7HT|6Ij=i8b)XNOg +z1*}*5yD7g$!iA8;_!6m#7N6Em)-%sM0}$*)U@2N=7V%mW2<M(UbFEJRCB3cAe5-5*$CDoW2Z%{=-7C?Y*QJmB%)ZaVz?1kiYF``p +zmPBVxOE`(hD}GYk7soMud^|CHW+vfb;n)tCq2UsEQXY6v9uQe#c*zEg(isi}$P7|3 +z8;?N)rtkrTc&?0qx?c8d>MeGnj)<#nPHex +zD_nY+m*F>g#{_KC#03;8dQLXX$#byY{>0lnlbixi%LbhEeW1WC&?P8j)7>F`)9f +zZX~df+-1(>zSaV#Os_F%;#N{Nr`O0~{|Pw|cvBjnFLlAB6>Q(jw6lA(@7&kiYYAb2 +z$nD;*4u4zrCl1NI9e2u79Au7Ro0a>{i~&LOo374FPUr|LJ-!HjUSl9LEZ-gdi98W~ +zM(u_B_l4<0n&gJvT$`LaiF@TXT`pJJ#G$spQtd*tDX$Mt0z{&*VUpC1SIT#g4^2S^lt{UO&V_eJlJ +z26$;S?B_C>tf!uOs+>Y@Oy;doo45=jc9L;AvV$hNXFoAckcZcSqkVtJ3%-33YhfFxB6)_2iRJo)bej1ep>pG{|ooUzVMbXC(~1 +z$+B}zBr)AnzKh4-Lg~h9$XgpX%k@oH%eoNuEAWn=?m7Zu&Ugm-Yz1Va!1kQ2Jcz&? +zU*Kh4#_*2I;pAKL+{}L28#|z}DKbd+HNb4c!gGO}k{k0R_0qbA`aD%Y +z!c;z^-IxJ0w#PQfZP6Rl-F3^Y0=2*|>xn0xs2q2JUD(zA1)u!1ZMPg~IHHn59lF?L +z&v%As5U7JXqe|lolQi~JGyLJo0HU!xu*O7{mWFhZDac1x8?Cm7P(m+`KwK+5={W!lVK`FkzrX}o`ipm1UmuJW>jazu%#vID!+{w{k4Y<0FFSKER7!((qp +zDBL3l!nUNi)q=a9g#pW`(du96X3Egu@c35!Z9 +z=-JF*_hqzljW<_$RS9vmUC?Uc1U3tFwpfu!g5*>d9b73-M9tI9U!sk_{? +zWjlAd>C3dC@lJbe8*%ISHhJ3=eoV(>hx5-TGYH3dX9znbxf58;Uq87?I@7JPv-3Hb +z@JH1fGtZeb8Kf((^`Y~%&^ncUEwsIhUpdZuFcPshtL9*9a1Cj{v_*2S1g{44L>gP-fQ(O{2GJvjOvVL=6p(ykpv=~^I&1g4L1C>rz5g1dYNp9u9S{6PN<{Yes(cg +zVYA$Np~kh{2VmK?mQE*u$ks$`H4qc6$v3$=sVdZZK(# +zOt~>!roOwL>4&*#W9pM4oRM7d(u-jVWdm|~v`^MX`*qgR#*itK{uzlPpYbIm;lqwK +z2${o-*02rQF~;PD#04R74cVX?L0f#Kk0oH}4JZrasF|o8lI(X<#a|5|g<%xm{ZNt}N$0KV|?^(_PPf&8cYSqZ(N> +zUP=@m?wROX^VpIx-gd9}MqQK2 +zU_v49`KcQZrw#k7?2BbgmF4a+%(F6;WeV-)i~C+|UnH(cRBI%ri+;{idv=?8WDMf2 +zpmepmsD%#P{TfD^_SN#m;!&;7$};yDWelmT`1^KWVv&KYHc4mKWt-adO^=s4|0l(e +zOHHhcG5#MIaxtj9fH8_jeF1H1R&{#~?n<@F-F51{uGLqq@_PGq*Q?c6t#WtUdarBs +zr6(8X>cnku=DX(e$~u*0)yAr9W9n2Zuk6pab`?aVWG?tVVs +zwdu36eO)SRzRuZctvZ#@+yJ<*YqhVZ{Qsvh{vRU^4va&C3>W|a002ovPDHLkV1n;t +Bxh4Pr + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/102.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/102.png +new file mode 100644 +index 0000000000000000000000000000000000000000..aa57a20842e7a630704b087e2a067a4e6c995f29 +GIT binary patch +literal 12288 +zcmV+bF#peqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91W}pKA1ONa40RR91W&i*H0D(sx<^TXMYDq*vRCodHeF>1<)p_UF_c1d) +z_o2}>lF)?!AtCO=U;`$Q;2TUrt&b!m6>qk-*50_1t)yJZy4IVrw{~MYSv!u`0jlg^ +z8)L^{V}lTw!yrx}bRf_z&3#XIPv86deeeIe|J~C)(;7)2SNV;)-}}Ggd*A!M_Z{!} +zw>$*|L2x1_HF!Lpnt3c^U>jS{=4pXbX48yqxoyL|$~5zAu=V*|4L6%_>$zdsGR6$7 +zQw@f@jZNFwv^3w<+Oou5w=(T+Z*jD3s+GC>V0}+MpI64XEB`kA?o+_;=G427&TlcW +z6!ltZQaEfvr702!J4lR+qPC*iF@UK*fKZn +zi-Bd~uwOSUHy)K~Pdc6cjWGTN0h;;`DaF{J?H;syaHa~r>EWQje3!gKcinR_eNL;g +zd?8O>C}F)GulT)w@p`=`!%a=YBW0Y!1yf3nunZq~pOVdIC6~`RFu^K^X>L&GO8T5* +zOkTyIAY???7ZN0tu(O$28AuGvNPJX=6Js)#oRG=XjKnhuN$1iadQNHT_xdD+cF{mY +znnO*}7HO8wXuEVYv`K5YSt5b3GPZzKg0=(mDNSB5>0Aou1Y>kkgFwm*e@HxF#%y|4 +z4vZa^{i6rvz~~`4Hq|eq$#F@5L7e$kR~Ki!B`knZ?OD~wa!Ohh3~7(F%JSF}S=+u! +z*0-ZChn<$fSgII7t{Pan{Uv@@@I4#MSyJGKNI96&N#A%X4?QP^XXJ=3u +z5|XjRxIA~_WqJD8i*j)MsHC8pg5H3TVLlMZ61UbwaQ9Oyts}y?EK_snKa5}JM^?Xb@T9;*+Nby$l1c98eGrJ%*;E&7!sL(jlrl)!D#>d?Wg3Ihkhj^up4366-o%p +zjq$IB>eTNpzbN0|`-mEIdPtNKGJ}8TLZHf{`l6kov@DPH%Eva|DpxPtCh2@e)t|LLXA@t~ +z)YQ~jr3jhQ7;J!xJ1Y0@en_5$Euj$)LuIk-tag4Hl(P(?y(5#ZTDn#4zTks!z1viJ +z&Ng$DG1YXrHD2zq**qJ&%iL*}lju|p4S}dU-~Xz7=k*`x`h%(r0z##QCLBIlqo&zO +zBPx5gb!z3?wk&rC3%6Em>$=Nro`p$=h*n6H8Dz>QFZ`%n-g~jcq1q_rmO<8d*Go&= +zQ)O&v>zSOKBxV}iz*&L8=IMj$%bjnLv2Dl{9}GOz)DI8*TpoP$QAi0FenDM%7a77X +zYSE>LmF?82Y}?pu8{2#vYksXZ75QatEWq;E2mC2LT*!WS?fc~;>u-Tt!%hMm1IrwD +zi%Oc$~zaY)Vt8K|#@$kOpTWSbm-fSoOlN +z6K^UVmur`9lY1_@OFc~5o@&gg7jCtBp7HVVGsYM)g;EiR(fr@9{6BeP^nk>IjZkZ5 +zf2tY+ziD}#SYBv@sq~C&YCli@^OjFTT}M=!&Lnd@V`F1ygfW&WMEEN&e@hNd9#f;w +zO~W%CjMTw`Eg*h6F!lIO0|WL^g+f$qGmxCs&CBJpTmJ|Xuu0cKc0qg^J!(^BjMay3 +zU{-7^%PRBvOs3GDB(Qz*_b-1_4v{H=2GzfAn5UCAs|@TIfJ!-hvrpsGRiT<08fLaf +zd{{!7KWrf(|4h2&w4*bbxU7mTm%q5=9*O!R@Zd5~*X1*YG^(T{QLL4(Wuv2`Xj2-T +zt!!gfVsJmZ(`?CELPCA{)o;n(@wcQY&f?$A8A?LuhR3R<#{H#pp<1&R$ypWW1!4M2PZpBsnnP3vfJ`LtJ_C+`!9fQ|P(qtZ~!; +zJ5WTOXMI3sG2fM9w?vkuX)u?AZ1P5>*WV$_{XNp{Zr;n(uXr5s_-j&w#sKV-L3Y9 +zh*e6C!K}V-&+zat@mN&gz++HZ4;=iN`~aV3=vlgtryk5Gjf8kW%nU#jWQo61&JV7V +zzCf=sgQ|&rQYv(}K%3P<-;jj{nd*#8r1G20&B)=*N!gP=B>mZ8B_5@alk9XPi0~)V +z)AG^Px5yoOHUj{^9 +z;qR79!sp8>FeHFkodL7?N66#_L%p+6v7rOtG=w4pOdnuo8;QC^F +z2!D$U1|#mX{ijWzkZqk8>LK1@J+(z0lyPQpTV*&oCilJdkS-pTVlG=%_uxP<4k-bf +z(Bf^9tD~DCC98FY(^kw%T2&hj_+oCr`}2A?!z-MFi@Q0))3jatfDhGItu)Y`Xci6 +zefP_+hhK#U7FFZ#u3t}@2on|=a6xFTTp!)0_GA`zfk>Inka{33t`4Q1V-0&k>L~0; +zyePX=Z3>RZK!m-Y<}_j5;J(p=Vl5U +zSs)ewb$p{gD$fnSBF~RFOriLf`m(U+#3Z(@My7CgfY0x5yh=6)*Qt6TQx+@!b2?lg +zgLZ*|eMTTDw>P~o+=Z2uIlE~{r!q70(6L{N-{*(!Ms88&D!Sr`D$4jsBTgM3@&@ID +zP1nnszzX?42fwY`?0>fAKPX%~Nh%=fBk^FUr6Lw8*T$|d;}{g6HZyW*)O#_1VRjj_1E6q95oX+s)qYFVpxk__`$LszU>JK-fG>iv*dyt(pN|1)wtIiPN` +z8cQNw?ZbX6@-0)MSbu!H`4(9nTrP>itW0L7Wjr&f5=x2TH6==``$JeHI?K7BRp};^ +zknc|G-2jyahk*)*$WS9NWX4y$M6d>nwgL$zuBCuS{Z~e!Nz>T)(!J9z7NITtGb+?7}bb%0yxtQ +zGmP0MUl}-qxHm-t|Lo)w^8DBFXCV?L=76PXv9Fk?Q +zHy;MB-|@Jr(OW?EdY5w;qcejf05RNw93M&H +zHp}QMMl^}2rJTEBMVe4pjl`#sy{+*&byH{ZNu8an&N2(iFveVxU>O7R$f|E2d_bNa +z-6`uE*T^NU7sx0GEAOodwr!TCU^56H^7iQSvh(maW&gkMJ;1=Vr)gP0ao32uQO=D^qU}Fo%KHHd10JnK|j=d%;qf6!1rSFrRCyxbb5+qB@ +zO}+5y8dl4m$v5PRp6eux3m&t%IJ~}utnIu?mbYw^!Kqy`o0$R?(h`ZTmG0h;NdSvK +zzdsHP)814Y(3%cgCsN;iifqYrHq482_@x?$?a};X_ZexW7 +zkQ|gz7yLFN&aL#R?2L4V+i_cxr=wZb-}H36KCiTgS|yQ7VBqE)-Ur>TP(YMexJR#JdWA~@gR1@TxYCS9R+ITAmv=O6UMxFp~WO0I>vpvK12V=@7i(GX}-Vg#I-KRojm +zq^LzgnveBUdWc=YD~qZ_;eqGo&kdO&1zVsZ$rR(|S=@*-y~oXw4H(NZ9TUsyr-N5% +zw+l2RE$eZebpy)HJtFOXR@W3WaW8Z+*A84zmV%kprRTXR*0`o&i?-!dvxBXS>GBft +z(fA2DjG1*5OgMu0(9BUek?5DJJGaRwoR51C{y;`&$FObU*RA$%zIm^-gj%p0(I5{V +z{4Q>EoXk7=XMj_vweV%s +zSWu3@>lsY*3ahg{Ud9|FuC@(h>QT%mT{*9SJGw5^hxwM#^@h8iJI!6$0l2yUefL+3 +z11A)!EgmO)`I5hpJ68U#eE;afvU_sBbcZ_B5gCJL_8-@MO72?o2Xf#3Z^%FI`l9qk +zxU@u^>%CboU7> +zW10tXRAU?q$8;=%1vb@^R&=w3863T3AIm&Sy8+PfFUz&s*!FnLTDU5!|f&FhgE926ybVl>)YA{#MqT+o0nXI`!Fp3ciT+qz0uW+=>O#iI=tLSM=i-i{UT$kKvx2jFo$N38;LR#p;}dw +z$8smolZjzQZV0c^eK8_t`Lp8)jC+8*e +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 +zOffisG5OGjZuuWen{k~rEq}XzR_=K` +zUGcQ83KC^lIS(q{AP8pqGl`ew`q<@~rdicX5tI-Fjre6hL^gzV)5w5?xBp1eTdtMt +zC;zKaps+82RqG{r{D>rWy&&naVHw}~l&Z4zzyC+lyu44c$)t3z!HYtTO|t#LA30#5 +ze889#?8|M}Z{ycj=(iWijD^X&zw%lrT?5$5C*7j?!NM{Fk1hj)ozLYYJ#uWb)o4Jsqu*gpp6C(ij7be#Cfm1=PEsHH^!6f>*+Gx-#F=ieIw@8-`N!GKnAG +zJB`ZD#OpdHUM@GUW>k)R?lZ^9Yr;L!uC(OtGQ)gyT#zx8k_L&$8d)aCJ%bV~m`i_i +zyPun5RF%jhQ%}m)==n;d0tRU(8Ou!_CuRxqa$tbKyUO?WiEO5B@>oZ2 +z*Z?Pbnp{+JEII&cg}H)3P;&xD%zZV|FkHYLJ2AIp=2UcLEXWwvrP12p>62&WHO!m} +zb>;$AnN;TiGwY4nx8&*gOLAi)F7Ld=^r>a8tXCHb~4oKQ}R +z-2Mp(w$osOP#L(e{m1a!iF(-D=v^t3Fa27^_P#DlF2Sw+4DNXW*4s}$A(`1(qyZc4 +zNEmciB(gGu`N%XMI)`RmRLWy3Q-_k#gm-Cn%={YO*jxCS6zAe2E7TDv8Pqfz3acD9 +zd46djNHzXeuT|{>o%40?Wrc28>g$qYlo~kB^NFDw4(su@`wu35jvI{Y@m}K+tX$LT +zf;Rr>OJD|^(L7WIUlRt;^Ai&i|HChc_fvl%fiK)6o&nO!@j +z%NDie&r31U&up}nXB>-j- +zd3zi|scj7UWod-JWX@f5BSBm&HsHjwH;kWT@zchH<$mBkgfZA(yDd^+E-{KlOt3f$ +zEkoJ`^1SO@(l}NiY|Q%hO#shx&plUzs;p)LiObi>xy}8Jzz=1{lhkKhYU`Pps92Dt +zG-n|%A^d6Q$K_VM?l+28Cj4MhwZOZ^SayoQZO&t*pN9uV`{9YTNFWB=lE%-y!v;~w +z`$Blb3yam{#JJXpwzOiSARtLBDmnZ7usJ!{j~t|ejH#TRBt!-iB!GHUXLbfNKLOR) +ziHqhxo8BS+cldky;}CAb8r(}`G;CmQY5ctE)Ce2>C+UyiI|QSEaa5Vw23G02E*rz@ +zG+xbxM%kQSC)@ovv_d!RWNx6pV^OmRQtIf{gylP<56aR|k8Ek!gl+R_z4}AO+n{Yh +zaGgbvCK_a4SFb7NmP`WYGGMaKdT=ifCgDLETiZ0I`pTrRc?xMER5Fyz2?UJVu>CM5 +zlQ;=j&i*V@lzD)?q@i72j=!Ne>-&>{Si;moa_5+|9Y6OwsKz#DH%oKAQR0};*n+JJ +z#X__3Je!yX(IUc-Z@yZ$ExS?hHi|j~M4(!5qiV}JBzid1&tDn%7dbEswFD!Y<@F{I +z1ys?GG6aoC9B!$Q=y;#Pd{9T71>`ZCfi{G2=|Yn!3?#O~VST5fh0AhEhIOO)Y|FGy +zlySoGLj3;O!}68EZ!6AZ_UTh +z(I%Poq9e>)6%P`rjt`}V@8R=@-M%>RPx5y9s5Ilw|O>3 +z8^W>eDr0va7LKiB%gB^wy!%hwzBurYiYsv@?)8k()*;*!Xhd3(W~3cKEW{97uBzN} +zoSD^v&8IWMSHdq#Z<4M&4zfI$?VOQyFvZr%g9*IzJDH!BFZ6#^UP)1T|Y-5}6j%^wHCJwwo`bu&SaQg?vQST=MXN!M5G2xRoq!DRF +znvr%Kp`~Rdoh?Ibeo=dvo(yhgXomA;^WAw&a~w)^ +zq-`BLw&FA3o68U$sIHg{XGZ0#L-)$#)6eN|$k0d=N6v?Z#!?zNBpo;>J+pE_`aFEr +zNCIiSK(0_KF)e?#I5M}4G3C|fdouRsro`oP+&?HYUi``h9B8AAI1s}UMOa5=o-IV1 +z&v)R-=tdaY$ETi^-N^%Tcl+&fL+nar8ei}s<5)T2{R$^D~0kpaA*#T7osp+~>Ul={Yk4uGZOz2=*QwBh*+kTd-%7WIF5 +zcI?=p_}1UV)Fe@(`H<`l9hQG<`lW<)4~=DRaODg!EvtX)&MkHrc-nbUbc1}P^=8?I +zjn5DkcYJp-!`Jcf=Vp>2MRj;Kmu<*6+m?o$YLqZvOze^e$A2NOCHAS^BW0ET&*r5c%FFT2{$EA2?Uwb03Eu$VW&LN@RBqXaQg*+ +ziw#P2keXJ +zBeFBT3o7eb*_-4kB-XKbrNXdo(WGEcy6}E)e4FqS_Zk(pSX$^_85_IRfjd1PV0s$V +zq1VN?%7}kbc8A|qV@LOwWjgBl0N668t|bnC){$X9);hbBZ{oGMR@oF;D;HyjdOcpY +z?ZHo0HA3Z3%H|7XB3~mpf}bPVKYK_$z&%ixBUxM$fqmoqI}BEB&4FddVBP` +zekBrI)bWpYfU1YDCh-Tb+rg-ANKh9X1-iG5_+f1BVKJnk3TJSanQv`zZ)*?|G73iU +zC%6cUo|fJ&1uPo>dP6Ooxp_pUtV}JDyT)(UKCE4=7k0IJp2r`5yngJeK|mgv;>RvA +z7oFd0|Am|k;s6UO?sU|eyDO{WIQgi;cml{5OZf}ToM{^D%+yEY43KE{2kMw+k(Ej} +z{KckKQhfN)xpcdHeDr1s=kcR+y2(p6o?cj_S2nj(?xlruLAhh}M)|jn$D}{tFo%mX +z22!OKzV5OrX(eWn0lfQ*|DF*?4`kSU!7#xvgACQ`ZuqvbJI|&WGq}63WytnYefef( +zNxDNmhB0&O8840*VC>oN>4xG0lQVCj4?C+>hq!RH8_9;`<3l&eigXVU=cb)AGWP(B +zSUUr7mo1n!L2;6Z`;`F&NIivv8_n;$j66o +zk|@TkzsiKJYSHIZ^NU+Dl?^Q}?tHsD;4Wj@*5Pa+bAmW`xMT1}*_2ojU$Yfwf +zA~|zTQltheGdOXPMmFD+mea1H%&AghiUY3*%Xu!=vk4nlgXiR_AsMz?l7-NCV7jvPtZf3bMXM6igvaji|N>3mU>ERSVhXYsb8LydO +z8>jo^y(5=MbGD&u@pvW-eKiuCb;gkP32aT!Kz^YAT4mDH?Ym?oG@<(0pNAWZO6LlT +zC@54-Sug%`247k_QY~`L=tV-tPy=u*^=?X5BY3@e${4%pS4%b30#<2bSg#r^4ut+a +z-O2N(`lK(8E4M9g%Bw90WGWB`gYaY6d2E@0D(@DHRApgyWFaAGUsht7s9Z66zHFUX +z5A};5K!qx!zV-4(&jQn^7F|w-zMe-Oc?9*1A+N=NYWcPk%LrR%Ay_p2bPR%6j7m7-@>dc_dNXY!|%8jVTW8_&`YDVP-^x!9hH5tqcRvC!>ol@2L^FB!Ke*1I0KB* +z1t~hGx}trf6z3oze&EnO+a?>PR>=D4719JFpYg)CM7c6gTUZjlGqLBVKmF-D&KNs1 +zssySp+8JKG<$9n$GAeI3osgr^K^YHDL#^<#25z%J%DCF*AMKV6#U!cC;AGfG&B6mE +zmB-qg{gjYkE+DPxCRq{hmNhd=Wl6GK?|mslU|-mWGE#xQ^IvD(_%Adh5`ZgqZUmA6 +zOXHnNEbhCFh9;F!WY%bCN@fE1-Ehq090+H)1BxpF*^6a`V*&ILg$`3gSoAi65$&m% +zGJ%X}Pc`dS3YkUwm%+l35{gF+3)vD=>+F2L>x?N5i!{U^3C|P>)SYaT-b4r3h7(gr +z&Wt}P(_ju&UmWR#AHRi(d{s#fH7QwCfgwml6lBCjp?Bl%u3IhNUG9cO!&eMWk~V;KW8MiWFQSi{#(zFo)oRSh +zYxQ3(pKXe&%mS#4-H2EqHm~y8wzcK<*~XRm?)LN5skdG&7^j-=?ynN(TCm)0=Brb0 +az5fsByA>z>GH4(G00001H@ + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/1024.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/1024.png +new file mode 100644 +index 0000000000000000000000000000000000000000..14194650799a27be8e4e671e57c07642d3320a27 +GIT binary patch +literal 368312 +zcmeFa30zaxx;Bp5YO4imt+mP!hbpazlp+EGNn2ZK50+FBkugtF3{imuP!gFENq{7T%*o#Wwdv_Sr{~`9e&_zbd(S=R`|i)5 +zu3@jW_u4yqt^Ka&dEVEvUxo(T&tEp*&d$#M^UprnZfExr$i8Iv%3P2zT-;BAWLEO_ +z;E(OfJDtZs;gfy4KHvYv7j|nw{uR4f83$%M%mSrl;IEzCoS$ad%>n5w@W<|_*}olq +z$?m5)f6k)~y9N|4c6J}yeg4TuJ5pzj^Ui0j>r0Y|>(a@y)}3f_TK-|+XX+Inzxm$w +zmG8N~^KhX<^zICVka5`m!R5~)*L-@GbZO@+Ly!vXrsC%$pMo<}&i%lT3k +zW}}0`WeL~Vqzmh)OzD&xcR}QFbFr*Xm5azaYI-yLp3#pY`pj5dPoTv`&M08SZcaMf +z;^;Jw%N!nB4AszYq}}N>Ib)QDKef>^RsTnAa)yST?4o^dhTp8BA2?CJ1uj?srOau? +zV-;SBWp0@GDQ_YDYywLcPE}E+y!JENld(fr5@?I1bu8+IK8&`2nJSAUG#Sc4TfHDq +zzKWG5iqP7N%sKqc=!(a +z!&)hs#~#m+=WAjOZS-D76;71JPReHMy6cEoeFJ@|GzA*ZutiwngG@^!Op$nAoh%+V +zp7USa+|`DCWxLDNzSvVe-?a!Rx)mYyqUtD-=hy+!^B+CiD2gAL#)B;DNW7$}Gy%7b +z8(GQq0W*f$7@-|;!)Vv<53-!4bmY;>Zm}pMtN3|tI8!d!OWB9-CW^+17j@mMFq)n~ +zQ>&o6OI+oC0oXCBq{jVHMsG8P_e1W@@*wO+3rbu!K^;G`Fh;9CZfK +zFts~@uA*Ous$Jz*vD$RQW*blEhtXY;)?pN?GJ)y3&?>Qg2~OGhpK?mWqX7P_*Bg_j +zmycY#-Pm)|&|KYq^z#Xcc8AIH%FjjD`lS-%<;eBL1L>@_$ZGG~-8(E#ounVMt*%NJ +zhK)jdzq_1wkdZzdy}$O4$5m-JtU2wEwueoSNYu7%_-y2drBMfO*d{KLu8jWB +z&yyEV5kA-)@DV7VDX*mgC0&usHP{?+)s +z-jlcH#LsJXxZv`3!25q$@yzBBNHcg`aQHWl{Y7IQ`T3Z!7b(g(*sz~KP4lok49F)| +zs1%~9E2}KT)M}Q01@~_KW!h+Ahfg0lg=lKOWb>(y7CQGu#G-~!rz~&0?rs%T)&eh+ +zlqF=2m#pXRBcvrHf1!^Zh{7iCW!S4k-og6t9B~D=zOr_Wr99Dt?Oy?XM^=I>+-M{A +zMM(N$vS<<2m%&L14RyNqOSGO*V0EbumACRsqT9epxq|}~Sqoo*+GpgA;=R(IvQcnS +zu{tp*c`qU5pK90{);_LX<1cj8^3O&xXui(za1xx-!BjG+h%)MJCIhutkswpR`z%DD +zgrQ>`?B#&46LQVo% +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 +z0^I1I8>Z^TbKZ9Ht|rwRP=4*UUy +z7e?EGo%Q;Hq?RYRH9~6N%6Bh(U2$2ocaBrWp|6s8)~fo{J5jooPAPrl!10V!y~^m5 +zvrbto2-L-vM(&GcjKt&GJ#{%%XT)HU;J9i>lEJHKPu0f;Sys@Cp=4`b^ktx3V42s0 +zx8$UdUy^`p^wg0v3CUpPptOfc!5g_z-AC4qXBdm%P7N_J67aZbin?9Ambq979(@brk((>vo3R=mQqB +zUk4etcMh8tA*7!nC{)gn?DD=KT`q@zzUTa*=ani2u&P3Ag~NXud^h>OW$@6OI9;<7 +zslJkP?}zIm%4^HZZ-!$t$fi=-S!q7>P_ACjXl<{(=F7+y4#r}INB?1Jml!Kab}=99 +zC@;mm~Bo}8Vbi%RvV_!@FsD|6u5PNX+N+lyFC^jrWSYRXSkK{xF;77U- +zFYfLHK-K@zDT;jUj&}7)H+@LmyCU;upEQclH0oMO7+naMM8GP75s_1JWXa4v$ej;H +z<2fPd0fYG$y0RR=OZXVBpCQ*4VgdwV^%OV?Rq@ZY1?`6(t^zD2%2=Wu)_2HVD;W_~ +zFmggav!u-%Ou#>JiZK97V%NkaO?p{!rU3a!8U;rgMB3t<^mcl7uo3W+fDJ`E#O4Wu +z_9NxSDe$0fVH%E&dH|XI#)T#afx-}_sa7za0GGh?KishJ6abj|FFf023=dSQqGJj< +z=OB`{f~^Py{MqE+r@U7JG)F7m6b#ch#|_-%X>tm_znq6s*C;oB7^SXJn!6IEu2F8h +z3{clFN^|R3oQE^qcn_>^MrrO2lt)Lo@jEDwj?&zHfJbMb-1ttwqcd7x^YB4=^cij( +z<hquh8j;L)up=N_{`sN_O$CVe(z;r%P@7u8cq-p09~x+63>I%}Wv*<6XO +zgM*`;N{m5hxNXOz`s4z{TzRtC8v!&d_yJM$I^}a +zg1J>@9!aLG_l%7k@@J!>9`O20Z{V?j?|G8FTGG)LsO%$w$r`O|l~2dS-K}U$#-iFC +z@Pb3(Y-*@*6dhiEPMWAv`n!S1si>L=yuyqUtf_$277}qe)z?$|*8>rnVt{Dq_v1~B +z1ElBg2g1_U0&URm$2(9Dh|S**Bv76V)Jmjo+$)c2SIKi;=^ppbEb|w?uf3mdN#69} +z;if_~JWmbLc^FsQ>enRp6+}<@NP!5qvP1C){kmnD}E>d{P9?VWNJii1SUV;W`v5n}S;SZN)^ +zGgWuie)km3h-LkE`D8}AmQnn~svT6B}uz69n{VbV0nNNXkOBNW5ae6HYv+z-vD +zVpKs#d6tO|aeQ;KGnyfn8(eE8HoZ*gHSC{>W&*_N%or6tU8~F0I0vJdLM1P_oD2p_ +zX;00(ie@@>l2z43Qchg@L=}0qG11TH?(pmYyvWRW?ItWHXsHX +zHmN>OFOAMi__qkqBKdi@!-vOATmU4w9p2m=_-_i)el<6r4^+&-vz<0byw0pTq!;## +z#FV$voA=`4E7)F(aX=>K9$elE$LRnZ7p*(f=G^C&=+Wr|V7KHT@m{uH)6y*3XbDg` +zG2HS0Z?_ZH^tsv1{v)&LrO)6h?8>kn?vVC*2%W@VeKDB`#8Gg;@sYo`q)Jr=K2#=P +zgVrlKzU;1e{tZG?7&D24ovNz=Si851uBu6(WDD&qEzbjcp9pt(gG$>ximuQ0(cixa5bZ04;ntmYp4svhIc2lQ)K=C{i|dpRY?Y8S!PsOH6wKYZyUra?Y?3G-Pu!_ +zqt5d=I<>F3`ZVeDcx9gKa*?YgslJr(fGBEd%_)++1>S)&B0wi7;{r_u{Z(${DmTJq +zO0@CvhCAg4648?j+Wy}?`Nru^*xj!DBU#@o^HxemqfNV1(wU!xz0Yx7&a~3z8W~Rs?G-WY$iP#*{ +zD4@fOX3hefXwV|BYi3}87p?}^v2C9@ODnz}ElS4Ff${Q%==})kn~{%Bth{yX(1G{G +zJ2l-G%zk_O-q&2{IloT3P!8UxAyhOOLb>&UlRtK<6R +zox$a0LpjrXCJJ1MM*+~897^wO%~`zV&L;d~PnXCJ4=38$u-xRG$t~-5Cx`OaX`W!k +z`2XqhS5NFTgF5G{FTVV$&tuLXzHW`%?m4jtINHi}>CeoEN&>7I`Su-SO1VdAD1u-ppdZjV`E9E~fy+F8_~l{UcH5 +zTJf*_cMZ=|oq)Wue8FeE0W!O8a+;V4KxTn7k8EDAnvUhQ1pp~?7defiQp8F$)v`i< +zTL2BvwV99)I4l_h@HN?51`bb!N_*<+he;g)v>dV-(6TNJA~+2C>ej1_(b`byXd(YU +z`P76`#zd9)G7eGoUbC(ooGyPLB6|P@#UAiw^iJ#{mI1E@Q_Qn|1~JH@1k&i{GT;@* +zv#bD$3Ja+$fdLfF!kTby6`zb7NlqdnWx8>$FUGXAT2TdP^$hCz#0dz9Fm$q2xZ#~V +zky&ExF1t6tI3bW0zFxrBOndqP@gU +zDv2Y~nDk7>OJ9Cs_<4oy=#t~@46W>o@y*WGm$v8%rX@mDRgIdiKvZo+EzJ_3+%}*F +zYYJ;EA2lm)fOQ2mN+SRur9w?wU<^=E3p5;vxYJQX7Azot>nRcz(Di`q{^sP;e;2rP +zgu;OK1QVdAihwfV*7Ta_X +zDs^Mb=#<`HgVXlVBk}NB0+?&Nx6)-LwhERtoDb$jL$0;`zwUw_R6NhDC{ew1r0t_w +zqA$M({+58k0zQ4D34x{--t}t%qZLb@57Fyv@9Is|LHXyZV#vQx|ee{dQbSiA)N? +z`$gtBy6)bw*}ZI6j%U93!IB(v-vdm_rbc%sWe8t%-Ocr{8$|3Hy?s39eL|zVyF>PY +z*qzUwED9Bko(g`u2aHuT3RIfvrXu2d4NixL{-ZvUfT7_< +zcC{b=v@47I&GIMx+v5VG54)oi=ol5{ajU_Mt;7j{_d#;fOm*^a)i)~VRQwhT;D6EN +zzoR;s;rPub8HtlAKoAICi{2BdqVYG7WgA5<$Qx|R)9v`f0=L9SvGgtao}=T&Sg0IJ +z1a1f$st-BR_20(}ROS?2q&ro>soj^ZuFP-_po_UB!l=OjY=_6wQ|zFTUQHc6mL{4n +z)f`CdbG44I5M)YqN=4;PV(f_!$oDjjTdO)V;McB3tM)1;=a)J?>v-8n_&AB>+)#9H@iP9=bF2dt>IK6aN4&m +zR1Kk9{H_F+wVi3=K);yOVP4PjL-r({zSuB9T1=QYYn^GfN8t~zm5hOa4YF89V_hyK +z6S#qy+q2kdVvJ_}HP$e9s1U0iNs#D*>(3Xgok1h|q;bO_UKXwZ~Um}5loL$-FuFq%S}JT)kKh?5sL +zqbVaLZU_Yt>78L0XTU^7ed7#-Sio5}llG*YodFR2@jen1KP=I{0imd2GV5SHnGs}6 +zVB0NUL8>WnIwCfL=WLA?%BRuoS}0PEIqP6* +zg@)#*B-c2)ExVzO6pCObN-}b!siW#AN>5B2!=h^-lK4rfwlcBf$#j4tx*==mwlZI) +zav`*FR7#OgG(06iDXHn^;g3nss(jmfxZSgt2)yw@v{Z_@`*9aONc(6@ftZC2)J}Kw +zr?b;0)#KhmSBdtk3Ovp)(6>pIrXC-``I>w+$(Pt7De_F4A!pO1gQj_^pg<(1cMNIW +zGT@V`FqIB*y*8iUg4&Kn)x_?dVDNuiMf2sf{Up2FXFi>H>wfaGGM&7Jdx;24V0f7~ +ztLtkt6GIZWQ~}GDadD~ez-=^BUQHZ{0@gItd_lee&EUjOeU8>5WCxWqeOkeE#LNB>Idn#RO6#* +zWF9*m*-P-NS3jHQ;8`!1A*rhdi-VIZxt2w8EhaXcapFl7LmcoJ>B{F_QW{=8$%O)X6yotL2sMHomn#?_{R%nc3XI9M_` +zj~nW1?79d$a**L`skZO(wJc~Bj?LS4E`KDtDXl4RzO^IzRfVVYr{ILUkqo2fn@#iA +z&Q3}HEZSGWdC`^qRH5!2JiO5lw}H1*eR2$8ZY4QTttRGHeM1J5uiD&&>?T>~MVR;A +zKb+9u^k=i3DR;QwYv(G|ZoKRITdm9S<@7g@iLw3gQ%{CL-I2pjH;R~0a{XhZ(_P9= +zR5MbopVM{6MT2<3S1*&kFG*Y5ZFIi-Fw}Y=rchNpwrGwD$M;g-GSK!?!k(XQaKow3 +zHgF`!tp+z16Txk=Eo<=Rd=S6y&(6{H3&_ulBjVCV3ym+Dp4?~N)T~+-;*(xpr4K9P +z4jBr9YN9R0AnrvxOaqUbxk3E= +z!t|Ke@(uMP#0d@%MN~>9NkrVgQ5B;5f^D~JWq1D*^~2K_uNvkkB-Vmr;13ukY)aRL +zLI1H_h*cw);%kOUE`0bZ$rVBR_pXBVA<__E)BQkbMH&5%g~EN~r%B7(N#xD6yM4KE +zSFmw3gE!VWN?M%xa;|*82P0@=xp#p=KK?~;+Gr9Bx8K%i!BLFU^RQ{gR!6!*ePs-} +z$!5V!+}Ab7)y~O|yMXVa*&SvQOYs6`{ug+Cl^2)h7y+8}cygtGyv$M|1#^TuNDAiA+;;QVFn +zKXwY4Xb{I)E%{EiF^(l<9^+%GIY3pK2YqxTU7MbKDs*~mLT8;T>B&-UDAzTZy^!f^ +zZMRR~a!hJr7%R`_H;pL;9DV+D-g=UF$q(rd@kJYQx?Uj6AoaqMI&=vp? +za#aVOe*+8PLgaVdkT-w;U-QyO&K1$Ge3GZ!!HwB9TD2x|_u>Sn+WA1($c-BNCy-e# +zz~Fii#d!jbs+&g$=tnjVOfzgvBv-(^pv}~@ZC=RTo;!CX9a=%N=@r$-VqWba0#ZwpW2+B +z)O9}>*Qpy+4@5u=E5hXK8-|kH;3526imHykw3V>F77kaI-cA&1zQ7Yx6rW!9n>w&@@PG@}7{1wKwDD)FfBpLvH|$GR +zS)#HQSECBnC4OZuZ%L_m_<5EwX4S<*C4Uyidi*_wu}jI;#V72VKluDw%%o>LnLdMp_n2L4mgLG2}P=1Nox+VMHq7w +z#gE?rlF{c6v9&-Gs=bh7=Bhn=!mh3ca@70Tw4*?8DqHHQBMcI5aJGa15dW0BWkmF> +zqTM@AfzxIn)t>ZWwHRkq400icmSLTQJMKsKzqmNRTGN5=BqjFW&Kuff%E6dMw +zu0ihLqb#IOFUatu8@1q{5p9N$rylDw?BK&G`&t#2KO7&k1oyh`1ftjkeeuuyy;lsAjc%JS#f6?E_(IF)|<79^~^c&kP7&|I?n?GPcdh&MWtmQ@h~WYwq^b +zGVYXreOtu-*au(-fMz{Ac0?*W2&2iVIo$TU--3MrnkD2FSBQSqu@bJNyb5*$sH7Fz +z5Vmh3gKK+{dKDSX@U<|sr=Wm(y+|2+&NMMS{mi@UVA(G##x*cyWm+mDC@5#ZSnYc$ +z`Lx36B^IIZP-ULaA!qGmqG&CF#z;Qxg<}jcVEdI2*vz4U397ox&(pvrp$~W%(nx!AO_ArVBuVpvXQTK^fANnhwk=O9leIi3;Qu +ztrY21oDbC1)DE_y|jF}W#igG>%5LpAvvONUEPS&RE8VbD<+r?Cb*;*eWxto0Pr +z);^6aVInI(`dXtosuB4da4s@nv*J1t +zTL1z)n2i_jzNNCA7+n9lz6YS;-jiiw6d?q_do&k-gFr_|CGmCwB(PIHB%zc6)Dei> +z(v?*J-2i&J2pvo}6Rk-N$P%gL;jsopoT1`Po%(!bV&OGz)?@tOs>@t<3tRHlfaJ-` +z@buit{W`s}V7Ke1Rp||OxP|OxB5l_;+8>DDMR$yMC`on9&_v>?RheGM1gnu=z~Vlw +zYQeS2k*i&9vxhF8U|YVfe^1@ifZqyjxp`~{gvs$+OXTUI0Ql)%Iqyz&9Kcy@xzHV; +zQ>+7H=WhftCel@8P)jR7z;3oQ?sW(0)sHyaS_yS*qOz7(a~vlYIceF_lQX*ELN*^+ +z)JyBCQ_}f9wj@5zrYE?q;NIt}1yvX(7igVF{*~5wY+*9x`vT}J4R(8yDIDdNk)`Iebuz|i +zcEt2K#a?9cshyksWIb4NCg(JFaw@lipV$u(Qy;7&{1mXHMu`-O30P~6%GxssQ7xX= +z5JaIajNtnYTpoC4XJOwI=dq=eg%Y~Bcc|%6qejg!ZgaYM8*eg!XT(>?2S$u +zlGEb4S)B_)_b|b7==(}?ti`hg?$PJAQ;ntgA<38(2l65a%URRP}tpE>q&fezWL +zx>skjARX0`Kx&$KfsHX$hER-^Dym8Ci!(kAuC9jLt0nJuD2pSYS@~L%IjpIs14>(T +zqPA#P@6DY0-S2Zb->494^ecRLM^ZaC`2jET-06vQc(}d^=W9IAHkyX>XX7lFJe^r- +z<|{>W^Td(~CLM0axh_*bf;{!Se3Pv>P7RGc3jtwJ~!@(8;!x&-4*wmImBD;&dTu4ey +zO#HEGr|LGmDE+{|vm3oIGpZfrUIF$#|? +zczQP~5dArMXDhJ`JW-7o!?;MP5FbdH$uE`^R29trKV1|HM+b;$#r7l{t{lKA8lQr0@90 +zMc2gW@4`6b0f*x|hkwjiG=_kWWO7&JS?$r}>D2nyGyGIfZsgodnx+Ruk3#x5G_)8v +z%cR3N4O?Or7h+urMBL9(CuCPUGS%h@U1i>!mVCbxo46eFDB1*k403^-`BxD$);6{v +z54a=H?m;9=TA3E#ly2gDuq`_i2bB3ahKXE9m>?ZhDb +zLHT5LNdk!4(J%e*I*YlMCFhWXfPzhnG(<3t8EqtZY|y}m1p>w|sxq=9ues~+_N{9X +zS(7Gk6Yu1vzWf6pRZ~G^&*M+;&ljI;3+q8Koe}WX^bHh$6Mrmit)Ddz#|*72saV8V +z#?&$_L2uU$cb;eyl8sk5tSj)oli(B8pFlUMOW5Y7h75`2zW-O}jK*d`bFtEmce%1f1=bT)!x4C5Uj!$lmHYDz~Y)Oro)nr~12z$RYP +zu>E&C_O(7jVT|m_iWJ>=<^a=FyXu+OWICZffUyI(fce|kF?gJ}_XYBoC+g!8I{uekjS30K830}m=I5M_bAw@S^^c5_kR +zYN(WKl%y$u`xvyM$p&_Y@Y?B +z$E&Qb%8Jd?y&u>((5&UaATR!KnhZkCS!?U4{F*kIh;-Tcm8*6eog +zHS7|plMsG83?S?{%}BB?eYg)3ukZ$M7mHd>Ck0yKx6)*>NMn|;M|ClQaiLgPuLST$ +zt(m78XL{)X^bQb%2xu`Xy?ccvaN9*_^yYg8M_j-L^Ooj7_!^MJLAnN+ta~GJ>F@#65J{~0V_45SmX^T^) +z*7q1Z_lmAIUyUctB8fw_oEIj1Ac=^P+#33BdfH82MVVrn2Ap0Rwo2o?>-Bi9>S^_y +zW66Qgko@sw-`8Xo#ziF#UVKt&oW^0T=IQH);@(M#-pRjBH&G`7%mil%~MRaL}AYBo+>=6Y7EK)FIAF18HZ=*%g$+EOzV}$ +z;>z1C{=EBlC%(^KDAvg-d;Mse_rOW=Mb_?9Z(qfjc2~P-&v_voTuvjl(Mwv`>2utl9S4%t< +z^_vr@9yZs8z*A5Mjv~!F|8b1i$qp_=!2SKT5d8h253~1URT}L8z$(ukbT;qX9er`_<8k +z5XPK)J~17n12-R<{00TqNyp%z(1c2f^4AazM`MDf8m5eOOQ0lU85b5bFmmbr$dnWJ +z{lmk+&JsA?`MLOs$v#$RKRYRiI>8v}$$N9{o#O$cS9;ngz}$P9->Wt*QfW!An`}Dy +zyQ`W_5beCXejhzWR@g7IXuTt9My!zPzQqBtRzehGhtOsotn89H91*0#PC^Ey^E~lW +z_=%QXciB~d#@NzviEw#2532H{^-Dn_1 +zGXD+AqY|l6ZXV*;H1lk645e{Qzwoa(4FFlU1K^*oBHOS4?Z3! +zZHLy9SG~_HC)*(T6)+(VnWJYxCX>{!5$BmY`DmEX>t_rimmhymoKO1vsyu2&yI+uU +zwgi<_U8YRdicry2P(tjG0@YL%vC_+RljH?b;8Ec5a?rdr5xH~!o;@W%AyhWmZ;f%O9?jOU^+ +z-s@Z{uy(ORIjIFmzVfqljXLgVl(QI_Ftm>u91RIf6=JM9!SLZNe4X@4ATn-A4BcUl +zq6Kn?vbukHnors`(!K|b7q^PGRrj|>1YLcwa +zDNDuYx(%)8A_;7|UQO(RT-98@TIevd!(u!U!k35KKx9L2kB&AUVC3C0Xnl0C<7S{B +zrbh??haS#H2X+u@tn1YQ$+5MZWfIYE%-qO%8-Myqh^lc;>ywW@+EZ?`1K0po(*x{+ +zVnMDIjb*A(#RA1=Jlt=es-!0&0uv7T&dpGFm(l1BYm~tHYLMFG4Ui4Eg!4_qD(4(i +zKx0odec;fy7q32)E19>)7LY#Qe(-Ujv?4WVN~nDAF{s5aCP}~hD)Bv*L8WW9YHfuo +z47nx+N3#_V)#GGKg%$%vm8nI>9H~>r;5mpX0cjmPr83>S>RVKszEG=4RmnXSx7;}R +z!1$>E{?0&M38jZJw6wajl8lT4^NlvNG)tOzvX5 +z?NPpMzTK?#`!_cxFaK2}&5Q5cO#fBu%qIuR*wTB+i~->H40P9qOo5482<$BYS}^(% +zOBZg~APOL5hX&i+j%%GVyL{h#m*FaWx{x{>d5q7(z()?Q#0i5_mM~4jbFWV=vM6A- +z02uMsU(#JBJW(+^x`dxs-8_zSJ{Y)Yy44tMpm)1n`Y>K!?Y@v28 +zYXa=DmvnV8ZaKEi6Egc$XFoafJd4rRxp=B_K?aVEkux^U>w2pR>+E<)TmzH12or}q +z9+u8GE@9iMW_B^dcsO2YOttt0!X@(jEG%*(rnl%6&?8&l2#%Y%5g>*6{b*wt;Kz5t +z0V?(1xy>dsaCgi+a_K9I`rKW=DD9zKG&FyKP;*N%7_IG&j~Pv{0pc^W>M4Gb-B2wn +z7Sucxnv-BI8Af1%6l=|g;Ianr?de7?R!a*)UyjpgM{=ExFw&1(W}CmG#Cd_;+Ms=2 +z;!aoW?Wb^xcGg08IJHgFz< +zbBFkjLI$GfSDI|dc$cGtreqexy0|3%@?CF70k=4W2$_VxbE_Eng$SU4HF*!k+8DvtHXW)~W}z`{K?appku9?a19 +zn2nhV_}PvDdYQ(5+Cy~_kghDPZORQgW@Iz;5YGB6n65Bx`SAIGGVJL3pg5w(O`u#K +zGy)$S=E|}207L#I>KMxZbPvV?=Odm8cs0z(S$=<4hliMWyVq-c${jwFh|Dv3W}rp> +zTZGC*OO!LaQ!9o5lQSUGpcMP9X7&3eLg)n8m#&ru9!K}3>X(gU_AN17U$A9JX)dR? +zGt!&)sDOdPdq65*J^2dv?YJbGX3|`=3H$~JdTnEi@6TWR!_W4R2w4(m93LbwG`<|h +zr_Xa-c?*9EolbS$=s=#sy&G~EXrhBGXt?UXL6fa|gU^|Avdek>=2_R0tg;geUF9aQ<2>(Zd81`sd!<@IQAHOQ<&WQ-%fO +zh{)U_no&}MOP&74o8nK?_%l8VWDbq$t*gd4nBtT)@|*^jO@AWTlOBwn_gh1vJTAM! +z>>I1>imKc8*2eL}qhD+Q!BM5L()En=F9u>r^(%N_q1Xhu4$p6YZP*N%(%+26J>jZ! +zH_jE0Yk4o}9f?s%k +zL&95f-*w^qD)!AF3XlFvOqY{ZD%sw=b80R`;fIFKOWajL9kvR-P~0Xa{T!MB{%-~8 +zxL{0d0rS~fsVaoOdX5X=FIE3+psH_AxI{E-kvgr3kkdV5XDDU4z=8;n~f?U*tGVAn$%Yv>azU +zyRVF8h36)fGw#meEE+iY5{1PMj!w)40$zBmsdrjBfj=ZLiG7li53}NSSBsxN(D~ih +zUHfqFsFeTF`w*PCVM_c<+}B%?;Be=T;Da_&+~5I^L^j@ +zem_6vG}pzP=XovXaUB2S|G%#MVCC75kw$(etCl*yqCESZn~JX5i(mhDZY=k`NQ&%~1S0n>!5R(336tIZal7S`2S3A3eR;u(d-ho}ugU`V +znM4p>(yHeGutH0b&(OPnlr>>|Q9@U7c*8*yo^k}>Cz8qp^}wVdKDO6y6 +zQT6TU7?G}!GR{;xPY0^+I^!GYZ{g!ao_)f_FC7E<&UgA}D*I3gL?Y#`>;o||agNTa +zZ`Tj#lM$xj`$UsKZ|&s7T`8XTh)S#m37eGM}T?rHP;fTp@!?(lk~B +zjf;rovT-ID37#=hjYjXQK4$=x(bK~12vp+97xJe9fyVR-%qv20EhyB1%RZQa3Fgv} +zz>;WS5!SymFy#^cOR$lRU~!|rGcdu@P-M`v4pwdbM+PRiK%j?{s}zr&Sa(tR8q@_W +z>PP~!5W(b?ze_-NxPYddf0Te+Omqd4r+=4#1TmAtKTAL|7e{ntltTjo0FCG3A!N|w +zp$C16K)s>jndPBMcg4OzEOm7L5kf|2K0eGy?Psk$tP8v8C&7n@;#Z|FI +z{-F2trs)9sK-%Te^%+8`aXugplHy0J47SL6h+@cUV5E=|_yqCCyzntqRfvf|m~pxi +z<%KE<|BYUrBY>u%zXt`x4zlePwy#y*d}VK|W?UJbH~3@jb7m#yBhJ*)W32Ve@})a=Y+JF- +zkk{MW6s)N1b!Y2_=id82I)s^}IZ#7`c!j`^mX_J)t}|e$d%SHQ- +zhBtcYttz#c6c_2ln)Y96{%q)B@TAJ=i2ZHz +zudIrp><AG{w#1TOE(K?P7YX-2XM|o>#(KxHS?gIXRIXO+naZ&{`e-B3i_n5 +zd!#hPNz(OQcdR4M*36p7)1%4TxIJmvh%j~U;a3apl)u1nKqE`$t%OCWXRebSX{V6E +z*%;bfOaieTLr6y`xwBGO@4chmwEh +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 +z5|1|-b*S8mOh<4z{@yw_wCrtIQh{-{?l +zS|VQ|JsQq*F{2-W=YgakBU`xZ#{0Fr^GRYvDgY9?lwe_qeR(NLyo(=eWUwmdMF=h} +z0Q++K<4Y&p&3?5?XSKikViVR0NkWL@{~p6)E4vNGcE`JgjI?RFi!7w+!Xosq##cI8 +zTuW6=2uqE~J4FsrI997?((_es3(KHJx62-`o)=MK|IGe9#jSs@aZ#0Rr7bqfvn|vu +zEIT+`6j__+Yu=|lIQW2CL9Y@c22ikh{$SP?BF&|;x2L4j+cNBBM>l&d^sS>mG>c!~ +zu^rnLB-WwATsl-v0XI}X294fu57l1w1fg-`Vd8uC^l)YBt=Ni#=2ubl>kcA}R>g{^ +zibH~G!F%1}zglvxl%tED(ntJBh9^K!L1Lhx`=gll0{{&{w$jSFQx!OU4*8Ra^rQPu +z8h@FqnnDgtng$*^;eJk7tXwlivgV2}xbjzfll~%I#0O?cQ_@+lMqW+vEsj=zOM-kn +zh1x9Us^8mD8P9Qle1gw#`KyPoxj{izw=KRXPiMzVYPLJ2(-~xcllWYCwYH5o8$|cJ +z5rCC+o0dDxpg1AYB1B|ArOH0jA=3-9AVBBoDk9wiY-s>)gM>mW=~=#!pzHmILA=woj);!eMBtI^wTNU5c3HtaN=R7}<0z$9op +z)e+~00*%fsG-3jr>OCFXy*SHWn&h5#HNWYCO9ci}5@tGubFNQ_+hZe2KGurp#nOv_ +zSb-Eos+#HYnT|gc;FBKOHl2I_g0r|dEdY8M=l+ioP=o))2ynSoPG$`q6kGfgkn~uy +z#zror$qvbWq7`1GA5^qbI^XZW1;NjPxj2DE{mgPtDV+KZ)(S_uWxpGnm>)wo$}rqX +z<$h&~!M)lXF2YOW@ +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 +z&bhdmC@%t6X2E#pcnCY++bv=^|1X4 +zP)xv^U(GJq^dq6!1eDY@-3Pe|C}B@*?S1iz^(ozz$G49-)ReLo0wjlYY{={kGw@i=t;tb(thn^` +zb5c#jeHKa+@VQVwm>T4LZft30s&e99wF50duE=HG8lD(^ndLzli87NsfF$7_^p%tp +zHxKLzv0*kzpn-7@i$5hFl2t-)4_EuF`*vvqpn_HSWLcYA?qGD@Xn*}zZJCA)KQ>PI +z62XUdrw%`=Q=_EGb{YTiOR|H(eroWDIlL_%F?8qHSwu?i=}vROCOl>Yp}d;_*@=8| +zWOxro6AwLKlpD!;l~vdRTsvnO_z|=1!C$0lI2xO?@<_Ku`B7M|sJ=>us`M-kquaoT +zoH3%v*ru-Nzo8#_Rj0B7)*%;rNa>K0b3HU>SPAM=QQS%GE_d{r) +zj=)%I?LL2h*-xt3r|ITbowgp5ff!7|!)m35;o&=pe3z#u7^nCrlr(d^!4S_72tz9l +z!6HpEY)&*UO>bw34BH37OGma;Erx6Fbi0RnKDWs7Xp38d(*#Upq8R4wP=Q8j+lfAn +zKVJDTHF9*`B9&pUqobnccV4*TBc>hZs{<7Z@<~2XPs{(UX-_mCTU0n^{KbJjIdQ7@ +zYfHLRa}#=|bCn$49g^KO+P@gw{Jk$M7%U#65AiF7g#?A|pIsTLlLUMHiNsV;``mnZ +zrl#)0sAP8dPQ((dmLPBQ{c8Bg&LtD?*kbd1$f5clq0gqQSk~aNe{2nFpS;Ax8(ZJ} +zes+BDrfkQGLP6~4r}MB;ZgGd=R9w=4a#(;2j6mv2LV;uj_`Ob-B(Yhi=}`Yx#->wP2i1I +zi7k1I_+Ps|_k+GLQ%KcHIQ7fk?ZtueMAu2Xw1aGGwjO3dKWx#!p16?p6fHEzM(zS- +zyRd9gkwuaq9^P5%HexsU8NBSn{(Up^mnmlPlXxN(KOtKPr+|_RM*qyrUdwE; +zJYeng9|G0}HHC}r)C~PfTNo>0#6eW#3JQ&Th&=G4v9vX+&Jh +z+HHBik|zbnp8vkkV)iF1E8O@(ntzmiKBZ;tJM##O|>yzCn$^JJaEu4@S?` +zKy0oHs!^<%w^d+FHD(t~SY*E!VMf!o2?K-0+BO(a7)Hnlb7D_^eFe~~3B^@^m`;Cw +z=7cUn)hk=sapFM{rEvPHZEEe+AMjVN9RH*re|4| +zV4Kb=RNd!YC?#A5Z-I)h1@?86Xo_>;P4XR+3>Q#Y;bZNw5n^5=ijiYm;mW-VEVYUZ +zaNdgI-tH<&_yAvNFMdjrI(9hcnz1`uJ|^*exvs+=aCR}uQ$Ff6+UrZ;G|2RvSUO}7 +z`-NpMRNI*rde9oXh>t!qgn-F59+toyDLy%WujsLh0q +z#O1RYVUe;mSw~}>Ktf3Vj*&~p9kJ9gHR58T4CXg~ls}CUc?Z?S@msyDIbSXJK%bxW +zqpEp*Ja(kE+iwX^;n_x);+G3q@v$jSXtR@^Z_PB*M$T?JgoB&GasnheYWF$1Y5SA* +z=4Q)rJZr#_xWjFNYc^o5Ud_B${G+?78)V~@mYCa@KaPv=a*dK-Ig&R!lj^!FEIPn> +za#vX2=TSe9yEH@FzvqzuL&xiSmX8yJ*JW~!eNcuL+<>vfugf0m9E3S1Ztf>Ch9b*dW@A@X&#H&~s#K$-9Lo_$b?>t~rt?$0^SA4>_l +zcX*5mNsQeb3iS#II?qvk^UzpzMhSilym6OhAAR*Y2VBl*MOF$>3-Q|%$IU}*t-l4I3wTAh3Lw28G3ZetaV_;u?-=mc2NKa+ +z5#vINr`Ub=s!VwaikmTAKGxOoo=J&gNP3JGZR|AxHM}GlqL^|>@uRGN^A=EeBt%(Y +z+U2xGm8HtoEAIqA9&Y?k9&W&84z-!jW(Hvzq}(6CMEZzYYzVnlF-;?K6!*tMQNrMw +z{pG!IUvKF}?b)YnPf4wGX>DON9&_a#hk`w9SOuxU1@`Q%X}dK4=U~W5 +z4G)C>V|*f+9vN<2j$<$_8QqqRfWT} +zbPv4D!s*D6dTKJ&N$7#cE%W8P)`io{w_LkT%^?XP0oK-0xNIRkj~po9joADNy|!{f +z@z}e{Ghu6$B8R*#zupAQY;I~cd3zLx?q&m$Oq4IAlBG5~1PX&&jvPJ4(I<}AI;uX3 +zUGHtJzZ3SR7|U_aML3LHfF*!VcD6ok6W&x~hpNq<=F%Aa=Q!a*cEfmw!u*t=4&4Th +zi%H3US}wybJC`O!z!c~6rw3=qvhSO}xVK~*PYYdr&Tnjz3xLx)kXtl2^3N8kpKr*89tydNmg<=>qer;v=%?J$nra{7*3jQ5ly%xBXdy+3XH_Ots1q +zpB!84L!XA}VZYBBHu&>C<*(b#SKfueu@<>u)oovV1V#|eZ(;2(jc2m8Z*FU0%6Xfk +z@#z2wcG+{`5qw~mkh&^Scwpf-Y-eaTBwgSLv0|XqnYW2w;z{m6HTH=WTZV6Sm=p06 +zK(C-E!TL8*Dr4K?ynxzTSF^IkUfBv;FsMrk> +ztxT*7?dp23s7oGu%85N3l2@7z&fyW8-m0viBU{t6+;iDsm=Yf*ej|RAjBkWa1GyBQ +zZJe`LZ1c~GyomP0_XQ_EM5yIv?@;c}4Q#ak7;nWYJ$&DuaSvJ~-9))-{#0$ERj7KJ +z?A^^yIMqJrc6j5)AZeHU3>m!l(?8M`Nwe#r5DjD$HMU3xI5|WqpHv>Orj}>@3YoH& +z`z4;f4%ereahlj%*j=mDD#7<%*?BJ=LAM&{GWu`0)ll=Yg>RG~NEt)5|3c8mu%2g+ +zAC9Xe3}VgO}GcoLNueJ#%FXAhhI +zt1YEy#fjR3VYd9gy1*c}AzTgjp{r^giBY7lM2Q9|-#BdRkYoh&UQ9u`mXF`6cMm(% +z19TUA&uaEmwqYB0(pzU$p``k>A?7{ap|zr;YnnIChi%Q=R}<^_?8c<@Sq^%pJo6FwUX^4UZy=(c&rPy}ttfz75 +zz>ybhK@6FpmLWW>8hi~|);J!9;jVq_xDJ$rDv#UF@Z5%fG!|J9^~ApAa&Z3bPixPP+h^@l +z7&wHu@g{kot1R7q|(;EI{)_36H?4*5?Q&A@oR(s$@T@e;AcM<%* +zNDse5N0yasO80D)6TdpqJ|ilfLZ;$C-zbdjJLx2G3TcGMB^&{0u7ul@J7wT3A@<>j +z67R6tK#FLL9w=Tt$C(d(GEp%|rCj0Ms8f2Nb(m%y5Lz%Bt!=krj^L3Up*(&9+QTUE +zIM-%oPTik3i&1%%nxg+%Rm09j?OrGG2=VGiJA$VqKqB4Z=6bNlCl$E6Y@Bra7kWz6 +z1I=shmpsq)8US|vT2MRF^JdWv>9L0^(qOvwl-Lar2Im8V288y9%BGqx#FcR=i7pBg +zP9g7fvOw8F?Q2u??;&XZiy`Eju~rO#K8`n!zrOADZwX0P`fF@g`P9N<0{ewCH+aH; +zkqLkidQh6x8GPT^fvPnR?HUpO2$Ox64%*AA>9>X4CN@!n~!WVsaE +zBQz-N1#EUL7Uc;Ebvib#1Au>XENomgy*&3n#@{FC^ +zK~cwtb15}>WpiZ<+}Vo!U~k5mB@5MZK3?cDJ6?xIcc%zmi`Eg1+c{q)N?x17o?F0F_vgYnEC;HA8^Ui} +z@ykx<8FUni$2_bPYoLqYuBP6Vnq_*^hIU|e=sVVC0%(`D*m+$Z_vbVUY0H-ybPF7U +z<8jyCyRRci%4O3M(lk)r5BT(B^TMcHbU=nt9fMzIf +zaRKNS2u09pGf&SDK*v!js}3|hOhVl^6E+pV!CUJ8|35J}!ZPEl8Oz>Oxb^rfJCL2n +ziK-zk$t%1*9EUJ!TJhf=w|rv0qqP*8mV8!tm!M1hfO-bn(^Eack?{1fk%&rLlOE@M +zGil)>sPtNa_fyclNp05wI0Rh1v^EbCq)gDV8Z<2ON#tJtI;v7Ps(DRo|6B&5p0hm^@e&LgJw8Q}SWC6~(=_?#ley +zi%Kid=PNW)D{QSTvl(d@$@%zZ%Y?4{OFj6jK>6uphqZb+#^4-*4!cTnvYwISdxPSa +zH_tVlQ;<@0h09* +z?sJg^EXNcQJ4$0~^tIV~(r!*iPq;;i~?iK}is7gBPy6jD|_aB}&$ +zG4WNnGy-*p65NO`t4JdU-BS`vR)z}0F*3#b$_GPT1{OLfPEsdK^a|FP$c{lkx4x$K +zv+KL4H6#Ya^`0=FLrK06yJtKC8X)cAl2r55UmFZ`UA(+$PfI@Rr01hrNutNu(*`N@ +z?fB-S1_5wc1H=orW&gVTlXA3Zb^BVbs)C^UG2-Cm1LjI5mly>2Y5O`jF2fZ49xD9a +zG3$z!UE^fpx93DC=k~2beRlEKzV0Gc;|@!$;4k=jUh}BJG(7bU2f3qIzxc13%jjQm +zLm?_GHLRQmaSfu6yxsI_;*sn;tcK8Ohxd?l7$$&5ojPZoqilSDta0YWI?^#uEK;(s +zBKDT8js4;}Bw}n@MBvkRhuGlmDuMKLGEJw<#DPzVJV$5Anxp1?nW>?xbIvBIHN8GL +z{Kxc}@sm+_6P;KLWUPT-vxYYYzDAUYXmXN=J^X|0 +zROuvay^J!|Ft8_6Z}%pEoDf2r@??(WO0ZPesH{%|KEczX89(Yue#-mO$S8VJW6?jV +z&>X3XU+?LW>z&05K6Z9zxl3`;h?4fuuzuMdC_U*X2+YRdA%e?wbi_uu>upTR{!}z* +z%}VmIcTGwU;Sh99obyKCE@C{lL$u$MY>oTNftrXp`AGzE1591&_VMG4tNN}6j@L9h +zc4$DUX9g;kUAkk-l*@E-nyU6-;wQ*jBg!5&fiH+v8QNg~wZ_*S0AFB+Polw5g(O=4 +zgjHtamTYCajYgC26{Bx<=qi#5tn_ytT_inBU>v=>y&BJ9lvbcBxS6x_Z9m#fpVTXE +zP^Rq&B;M|ddG1+}x^Z&D4!@@FJuJ +z4&)gA;nDGSf#zl#vfwF!X`9sTppf%iwp!jIC*nb|%_<+4`B&u{^il+9o;VUZK`Nhow?`rGM5!a%< +z9wHix92j*QGopdT^7ouiAqx8kZpLi&ToOZi-3>`Cvj>JD?D1zq^gSfJ5{QO3!Z{J$Jh#hw!mKcP;5jRJM3JE>XM>JEjr-hAF0aq +zw#O%gNwewIjbY|Ge#`lgiw(bHj0Pa}&)>KJ%G`47Is?X;L4s}y7!kXJ&ktrSMJF$B +zHtXc;oq46g{SMot60+*p&203$6PSWLEcS4xao(lN*r^VChi@Gv-5jsw1Ocrlr!);V +z!WTkD-qRfoGDx5AXL{$EdwEBgjYK|QRJruTprn{YeJpxg-0&WO746jxrgev=sSK}0 +ziQnlMOCV(&yIBJ*Q3d$G)RkWBkl3@9Q2pzhgPQX4j!-t)XU_RCG-J1JiX|Vq^L_TY +z4J}++o0)s8(`_DuxM}oauF-q>3xOR-t><*kqypbWAEqgN2a;5*cb)0$nuV}sYOGTM +zzy~qDN){C=O?V|}tALHA1rP7xM|%!VFq0EKsW(}Bqk3|9d8OxCR;eKiTU==*?sl-7 +zFc0K3jAE|EJ_V!2i4+cqeh)R#y%T`)a+JwW0qiw&Kg)CS9`ZOa$s +z{r=-4v~H8??!cegA*oYaKTGa^QI2>t*pJ*{0XRzDG`O +z>oq=pIQi9$B3$jdXW8Pl*h^P)#m{yk@M>Y@XW~%1_XF308sdg8=xORltFB*%|9w5^JZjp!Ck1cgI{#gG +zDx{_7Ci$rf(Bl|)y7C(`*lx@ONWReK)Xk-5x%?mjq{^YOSql_9u++s{>~B+?){L`Z +zRt7}9rsnL-cL05`kOlq!=V14Na6sh3o+SRXP*qsooAc(t_YM%=PaNww%B*QO80+xg +zr^Ve!d<0rt<8gZ^;M{piI0pNhR5=z&j0*ldj9-WnsPMlITI^10Ejp!_0+BkhT3)V5 +zoclCdud|FD0Ydl3wXPU5&2-+5%{9cD@Y)&eem{k;B(==K=>r^ +z=$=tf%HYGeG>4BVW9-+3PGOy;ep+I%%Vn~cG-|O0-kPOm&_lEpm+>ahx!4hKA@!h8 +zok25 +ztHqjHv!+*T`_513nzj0u>udGw8_QFQ;%{w)h&I#?F5EB^C3_OsYe=KK*Fg`c}4& +z^z#YVZUqi{m*%N4oG +zvlAWs!7w>lpdr;&C|mi{_v;99#ddjCVzu^F2EpK2ldAi8g7Ej>fYwf=V38iH17@+2 +zN9e*u=&S}>_$h4ory}d~w7_f{q9Vwl%HX-#ZWYq8dv7x9#9Bs31*NVI9K1!edq1|o+wOa#a?yhYE+ZVI)pmOplRKgn70(EzJX6fhSfPM&=k|(E6;O}X{ +zCoG5xZ|*JqdM}q~-7(k-=A53#y8#}Okj-XwE^bMToWURl7d9T4}^HTR}5I +zJby;@IT$xR+F^`8l0GG&_Ek)aN_jcKvM#VvX7oiq9&V0#wm5jH&z8?ZZN^H$`2RR= +zVhkNfB2T>SJ`N;RM4Vf1;n507Drh+(&;Q)KiT)XMs%!(h>xOp2h(L>e1ZcLk056XY +zd^!`RFk$y|au(V8gO*J@ +zH8A+P57?+r;jY4@O^eV_`_%na-k&;@lJ5R^p%8qGHC@OI@i6bDbt|=9wBMigZq8P0 +z%P_9Zw6WvAcS#q{9I=V?ijH_a_s7>C9uTh;xqjHtp*#-$A9fFUXsB7o4_4wZ?fjY= +z-BI)t#H`57*sVr%%O$7k0UMs@x8>GX0Z=wt_%1x$oH}~G;n_#vHzRnPK+fmx;dG^# +zzYaE!{H-Ks3pdCIgLn)UyHq%z^z}W;=uXD%A(tRLO*;7iZ=`~t9yZFS%0#Kc=;FId +zFMAtb&Yg3SY9%Yba3A&7X4eII63=uBrUkCp8{7O~Nbr$~87(}YKo0~aqhy}uK(AT{ +zKmCD2$p_@nj3`}Cxe4^16w^zc7n*0i?Xj+<8@n&dv9s-g^AH8Soy}cmnvW$b9<9a* +zTIfM|?mS$uy2?vOb+lvkdJqJKMznH6N&>F=?7y$E61L{5eVoj{#cFF-sEMBPw;U+c +z%xb{?O&U&at%4$Z27xm2wZL2yyJ!bX7!U4b6I?N8g)^UjY}z{i +zdd>uxmh>ELD-ATn#!mL+#C7C=xrEkc-&`83KmG7sgP|e0Lcn03ER^5kNzOT1Iyze1 +z(7md2)knBeCQM@su?YsLsg2-8N>m4FQYs19WF+cVms?xbAx@*5qh-hsfalfWfeQL?HK*uO| +za(AjcO>1s{4;MmxmuSV@+LN;r1X9=R;@%>z4FKn6rNDF$rM-&39_?A0cKe(FT95d% +z4Bh+u6gI)pstR}wPb(8Ta*xJrM&wJ@un8iCd#m@Ee*JAs`mGKcI=BCJac@AMfk1Jc +z(y0Xa2zkDmb)A2WHKXMA_SWE5??ux;{Xw_Tyn(iPczgYrrDjQwE(x)awYu+_25os?C4w6>5;@KW)vh$gKDRj>6*2SB|O$kc3%?TC7O-&ixT+x-hBBU(*&tKE*ZP{68Jt +zD_on8#RZXEi)V;*X5_-LPg5u&n_ +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 +z_Iqd)n4FMRFSac0kXWMpiLreeC5cuaoG|Kp*$
|?X@SSS?ltbS2}Ci +z-kXrwopLHWH3PBbkw}aLfRQx9wow}l@y^ulEyXi6Ad8x9yyLm?q!!}3^2$6{*u?YZ +z1+1##OYzR>kUOgi1HLcroYC;B=1;I>#@%9zqpSS+O0Og8g@J2RJ;p1WDco)K5pwf7 +z_?Pj;)u7d1=W2aMJl$2^U0OzFa}-9sSl!4mekb|@A@7FW(V`dxTeaV7_DOb+X}+~& +zYWmX8TX1>15lxz3B{(I|NN=MCd|saNAi+VsKfVTLIr7y)v*`(75N#v$BMk +zi2U8<`Au>SdHMY-X>IAtF2nS8f(%wH&pVfBoj~m^cISfxu +z1SDpaNr58GK$%yB{&|fe<7|6IcTL1)*+unFxVTKE>nGxdYmH~hL{r-E{6@A;X?71A +z30vN4z@37&d8HpT#eFPIm~i?YG{Se&Rw +zRCKL#(?^fG(t+fQfGQ}EUe!=$Vu+hFq<{8!)-KK*0;CJW$eiDAwjs6r0rZ(X>$wb+ +zD+Ki+Dc&%bM(8I~6VhDhDEA{OQ4_iCUHC*?za4f{nE6~ah@AP^ +zqx44QtZjpI2S^pst;3BDb4A?tIe=4is)l*(E0-x~10p_c0{9yHD(}F{d@&l3dyINP +zkUl2OOqnMBO2c}pzrUvy5WKb+nP5Gh&90nXPS{SHBd&=)tvyYV|nsTFY +zM|7fC^R$3LoS)e&ec*|E&Pal`doLT)amBM&^2k)VF?(!F2_>iJuZC)_?fEFwP3BmS +z=@zXZW{Bv^i#$Va}c0g@a?dliX+){N@!%33-#L;bY0WZ>Q*V +zJge8gm~6B9=^gwLMKd1Y(8l{XX&QI7Rfb;@Q?WG=u-}&9a|pKYABt6nkZ>3v3&;y4 +zck)t`DWwa~jf=(wei>g9(as`vV9Homdw)GYvp-t`=p2!#&e+;bwUw$SnwiD-vw1mf +zs47|QEKB%jrE3$E8e{4|u@R8m8G$+gn-G8d{wS}U_Gx9R~q~BG3EVZwE+PRCqjY3fAE_wYO!#}oVY>SaCx=q_mK9Qr6ml{`# +z3W(lFE4S1+;rOOvtsnZ_W{QEPw^QhcZBvQodPY4ql?Vh*A!bw8?gXN{@+x@gXy(;6yqM-8~{%fhVZR+U83# +zFa)hyiQ#O$^ +zrh$zp;>;;SL=VkI1F`AsA9cCLP<#6SVIWvVOPH*Q<^Ug_MQ;H@ptq-kbk$wsw%_n8 +zt2SbyXQZAxk9atHxYDKD-hZgj=e3EU@`984=OcSnw&5>he>+@jU6I?XY8ZD;CnlxK +zp??*5F^f1`ifQhMu%$*qCuUJj7bq{%A2wcSkO9dvQQE_R_Xx9;2pxDo>VLwy*Yk2F +z(ZR<`X6MaAWrpx76y*(~cMr7T3(!>W7ya&^UOHMwQEf`sl2MVg; +zI6yB%Q5hxddUeN};u1(3kar$L08SyZjpD+L@M!x8IonXo5D_?y2c%0z3UQPnPEEdK +zcQ4WzWJGsR#`)6|npgq_+NS=pyjo(g#ZWSP{ex{+vkxSQh)DL>;q^kfI39EH<|f@U +zmS)RMAY7#Gnc0ebswm_3k?iDdEI(StRtj=!JJikJ&}Xjm?*lbs%2d3=mvxM$Kg>TN +zoIHlU;IRO_ln30kEFFI@X$;JUT*8L*$lHe;CJl0UdBg7~b!?^!RzK7yoZLwIdin`& +zznRygQ*RFT8brW=5E>Zz#PK>2Tf$xy@d1oP>`C3$LKUs%(2j77H(6-64bwiTLx$yS +z_)GzcX6;S)Pp7r)YHhYnP)Yl!4!P#{#X(d+{3hI180aS^yH#ox3NXJdB|;?^aVx^i +z@q^imST*0eMr+qf2SW>@+62Ca)lQ2U+@KWgHq9NM8rZ?RC?^!z_z(gM*u5G21FU-p +z<-tLsH+I|=NM`5*i64MB9DK?sFtt%zULw#U*zqdH+fzH?m!t<}++YQyOZ|4wnC-vS +zNU+H)sA~z&hn1$CQ5CFJ3?rlMaW4xih8Sr{E}-CQiufBpz(Z*A-u^rrs5%CUemrb% +zi0ZZDqmkPjhymAi9uGZQMpZ>MX8eYK|Aft=~LI`u>&3h22NP@l)2zX-7(+USNkba0_{ap)UplJWorx@R(p@gN9Ay8_t!0 +zR&h?cc0-q19|Kn}Dtn~R^=a;p`ouodp8$^oiJn&A%m4ZQg+cIT-d^it%7?OQ3s^E} +z`(l3rC>BXAlq}K7spT-f*{J(E4;B2!wR=WqXGeZTdU3Zi(?_AhtX|t5K(p{x}D! +zz~(RNf(JpSn+WU8s$9Qf;|wY(t%i|0+n$Tw*WJY=ZD~35PJKiCN!?y(X6$jq&Msyh +zzjBJpO9(5%faC%Dv=MuI6&0LcaWAv<_RGqy=SJDl_OW_3=YJO+N@IU5Sa;0&Bt3K3 +zl@w%sM9j*_rq}y1G(*42m3ev1cjK}j5W_GEXWnR^egG5--n +z$R?zh422tf-8T9XaAGvJ8H1SSpDsD>#C%dPWnW1$fS|sML;y*}F%Yeaq<$ZhY1JDo +zN@l#JGxP*3l*FX)vyAZ{yAXNOzOP(yL?~?Lt$QSnl2iXVf=*s5P(mn;FtaAGuoVOK +z1`?ykzN6k3_ttj(o~&4fEdKKHRN-;0`?avdP`r~m<;XZCR4Cv2j0TECX>=6DTWc@w +z9D`#K=W$W(`ezVENsL1%>n +zN$xFb4MbrnTT|PMN!&Vm$a$r;v+5SK(Dnsxi6k^nV6C@;#Vb5nB3-6V(;KyD@`J7< +zHBkn19^fddLTk;>a++OVx^|;7BA5q5+mLG!?dndfp +zv#G9!g1}$E6%cmFFdF3>o-C-A+AetwJ3sz0!|#qRxxrGSjV*5%Ln=Rd<0LGSK*4^o +z7n^eLIN5L`wSzKJ`FF;HG7tl3pVZc``(^q(*7oj+gFJ}(BC+o7d;F$V+0W(e*PjEP +zNSGGu>ebo+?=nkKCxvH%~2+WqzRzrU*By9>Fx1lh6w~cxc_#O +z9(0k^?F$S_|BET5X_+H@t +zQ0(pAVllpphGMT$w +zbjh&%!YYk~6$wrsNhU+3FP;G5V&UWeM2^Vlg>e;bH{^@Uf2ZRn?w053hC#TB3Z6|B +zFDKtsW7Th`UA~6ALnQ($Q+_7l+Q2Q!2m=&)NdXt1=iqk)1OvDDL^rrUHGQHko0zcH~1?qz^?v4 +zn6-slynD(Ru1m9i<^Slp-+nOF;gVw-8SS9lx8oku9CEMub=y#H*w{h;)J*wLNjqLM +z>{i$&mpD?vHD;IRetQ{39Wj}@JH_zSa4DqOyfvE7e6hGOzX?>Ai$kllJXI_%P9fDx +zQjIz70F|^W^>uSz&oIL7sCb}V8I(dK*Ic+LV_(DaVeTub?EbJe$B5}VmI?+$hMa)4 +z23|IBca1txa4GbL7`L6kfEk&D`jUYqM3HrGRcpVXDRsGmMHuGLhFH9H>+rxioCv2V +zX_XxpNCSCLZCSG#X;j_zHS{y9RFacefq6iyajFOJEk@dwx_vK`@93mHFB?zXLj&^i +zwJp$7NyI!<8>PVYCz-x2WxTkG!>x$t1}C(1D340^K% +zj_uwEcB_1aS-VcBU1he<=`QSB)Sj4<;-iB{XIoNRXWtn&`_L@8>4J^W%Au4BS{{)1 +z@$`mA;2gEo;=G{2b!(oaS^qor)I8Ms3)ecWRvXkh;OEn$OX^95U23P$Sn6a1*KOpR +z{6@*75|Y3@HH@II>%D&283d+2 +z(+A^*DN_Ur+etiiYQ(o|c8A!!(hikVRmAld^vZWo4UCr%c5KTVJ0G|oib!}!c!zi5 +z^@ak4Zle^?Vllfb@Et*4c-m+4>NA%A#7r3SqI7$Wu#^4;LF%04>SpAy3u@Z7WGxV; +zWt)r(f!%cyaCU)1s3=BX#!;jh?>mrTzr +zd4)kwjc%fsvL){i&n-v6qp8@~0DPm7jDT^o@c^}g2UCy?gD&WeTb~5uGl3OwCB;P=+?tr +zOe$~V``S2uDNxKZr^}pe8=%@OcD+shY?{ks4z$WQe>MuJBHhOxmH0e{1{%URVL|?n +zWF~6;uL*pO9MaqWL#JxXJG97AZAjLrwB~@F7UMeHh}zEO!1Ys~$WzhB{Azqrz!_-f +zQGI(+3FCKBms;s;5OenS?E25%ii0rHNQ)Y&%}v0kG02DAA3I>wgk+@`jat(^=JQY< +z^UM6w#T?$0;;5xvOarH#3~#6P-*`5h<~AzuZ7bG7(Yp8NI<`uDZGoe$-=>f0u<&@A +z&RyPpx@p2Z5WH7hBS@%WVBgXA5O(b2v}qo;LUZjIu|@-WzFMmwtJm*ozEvdkeO%ky +zJqFw|kbSl_Z)<_a+EFD7beNw!U=RASXnsD&`_4aiB2h%xWZ0$%`Uw|VWSBot*+4}r +z69!KNu%!$;P5B;45mS|@5c#`qkg;5^;yk*%cO=w9tc49MDpQ_6-SWM8l%!K6!v@6x +zBUZ+S{tsB?oZFu$|GSZ!fZ*2Rq6nm&QeU+>{&p99Ee2wWb-6y;L`a6WX3@A=YFj)_ +zrb7aCN;YC=ukw_)41Cjzs&qLRE8S@Npo;ONDfIAp!;x;GtnU}HcRi)#xRnY?|8Z6= +zi+8c9aL>=-KhoD?F=)#oiQK3&9KD<8i$&Xa8;)HjlMo78fZ}%dNk^$U_xL+X@Iz6@M6NDao@_ +zC-nsH1wF6))$r9V>6tLcJI}Y2u`7HgenLrF*kh2xe&a +zl^xiolO~gOWI>a!KK6(Dop;NW9elp0tvQ62Y>BE-Sc!4mZ35Jq>+fn5)IYcXYh43s +zcG7IUNlE&FtJGSev&k9!-#Gt9M(;9Mndkf9dqaQc?>F`0pc_TPVAf)^jT->cjN_^Q +z>g9gVi2^;z(gYJnJ6k;C5xcy|?c)Q;;{V&pk(@MhtMr6DCr4O>Aub}!@G|@*T +ze;M!4y7zVy`(xWZ>mlT&*#25B%&VB6`aRr*O(i;b^y#MTVp6HE3@i$(Xte*YI@58~txKxa76XGI`Fpd8n +zqp>H#N6#U-0=PF^x_GsljM-G^okU@~XzN)tj$;dPT9e0&?A&2|iuW7kz$Hq#@soEsP(0MKb_i43L%}s1{;84O*!GWAT4{rKni$+x) +zM`g!<MLP!sCdF#1d)4W@Df3)|#s~6|239wofHHMam%VJD(Ct`=C9u +z7=jZ+Epc`Z#VVJkNq+)%eWW7AA`y|1`igYDHh#?Xx^~Q#_m^zSt~t{j!-> +zmSA`7?b^35cY9kcsi!wk>D`lieP32^E1;EZ*R_rDHKBmiK*?Lg@HWbaHsPAY8$OJz$XWVb^4NzNQKb= +zZ7q$wQQ-ZtHxE?JbLko7o>6jZI^|01h0|z2}`(5zzhxZl!n{0&Ruj4lA>`_ +z9e@E~gtd<&7SBq%DGL`bbpLHuxzJ56YpAA4P*lGbevQWf#s`M3jL73ojW0D>L?Bp- +zd?qK~|GKoPcfn#X3jF1S2h^xy1=K8A7LhC}2xg=XiYacco!X?DJUeu5rYAs$7oZz1Q*c263NOEwi$pgAL!?m+LNp-^2&RE~RrYRIS{3JSFuTpL(OLyLlh{W;k&o!ZRJ;H(dFd=H2 +zqUS$VG*-L;XFH!B^rPx4D-)cFuHDgS0Znvxmmcn+F1-J_woC9WbU*uY^3v}`s%qR> +z;%lR#TR6tG1;b5K&!0CR8*|o!=#=I9A1WwXg{@oOH?0QBx20ou{M#W2XrBLXh-uy^ +z(ElC|D&m0BS5_}&(_@e@fQJ7dn$0pKfF&lv8HVepeD(5+B$|!miqlBIM6MjP^1m^W +z>t4^9r>a(H6+tj=eoxqv1ZdUmh5O!XK@L5ySruG3bW}4*tFNod1AcBHE4KZuFOP=% +zgu<1#qL)c12$InI$H~(#*97?au~Puts#^IC6fSmKXX%<;+x~AafTc`ZxVVR^v;W%Z +zw4c)_+Mpi-mc_fespT_*Pt|9RSN{pQlupon5W60`8$ie*@*s420SiqRwDmi@i=vov +zR@<8c?XAIhbxw|HMDaYZskGF}bx#+^7hUeF2;&gQ+8ra8sCiPz)@PqQ%I9<-6&NC@ +z(&*$5ntPid&SA4ApBsVlCa7{(ekG9RRQ|z*0gkvTrU48W-4@0fnOrbxi+)0z6+~j6 +z%~UeTw#zWYq>X^zkXov`ZNq{x1nB}A*Ak=ZKwM^Msug?EK&7;zu{5$O1UNZbCjSp; +zTyor##+VDC`T$=-*63RrZ^Ek*S_i +zOEG3HbdKUA148n|8xC^>Cz7GfzpNLys))j7`Fc6HYttnNTrv21dZP3jfTLbaWnd7sVk-0C8m0)sSJu5X1xI4-4pm_G(yxVZ>nH#d^2PcR5q6NIMPnZDUT(_A5m?~A>F7=6z3AT|;N!PlJ +z&B&pEg)x^;05whqjeQ$dx08;*Vi-H^67my90U3qxKcF)t3h&boUY-j{^ISh4-XJZZ +zffIz@Ti>vIDxjV6_k!PyB*gS&>8~hwI?QlE>a-_&TTGa)M5?G!1OC2=j}fd_U4Q!MN57B0f8FZs;=B +zLVNZwCOS9yo)V}Pz1IGx@cf_JXpduQ2n6Tft12yPrCwu=CY9~^hl}t4<7RbXFR9En +zH>cfI&!f8+=pJ0e2KwREe`@6asi0b)l>KhF=_q^BU=5;h7k!{A +z71Sww?gxzu{Ng`-JU%7#59RZ}VEytohdGh2##1Wj85<;tH`y2jGH +zEdMEgS%mx(YP@695_k(Mb<;DLq8y+oY+FY&}}B!#s`vfG2f8HYnK;V8;I!&9&wS +zfVmK1^?Org;s0gSwmi1gsk1$rnDWfe&T}x@rhME`EX@oTn7PG3{m4A9);Z^(yfFAE +z?TD$}$Mq*FS`42|{c*E*z8yVt$_PNH{dy!4 +z^})2@E%T-(=L)*M>IrRiVXoe>Q;^f`v?2fC%$LHk4BWIW>|v;fuH+^8L&;*7=k$xx +ziJ!DhZwuE_F7*p8pWX~D`sqP)zeI;4u!tEGTFQ(?aiH|xsH%M!xyGKgJR%S}S{$Cv +zjIu^!LIBhBm>E)uSJVevX&6Cra!HAsgkL)Ft3*XV&9nIF#A)b-7hilbOVd$Bmo%>b +z!v}VwMe!Eae>7UNIj=ntPpbE+Ka#7(a{<@yVgW))EvH@&u`-#Zx-7i?pIe^$P_n^m?JrNrXYsR7yh +zIWHt|>iXSJZ-qjEiz1MtMXuEQGRFWu{r!S9w*x+2>PX99aDnLLo;%9P(9~XmUsotg +z)yNr+tlSB8IT>kpkG?IwhmxqXc3g&ad7+R@dV3Hbmp8SMy9w-Zd6VlQshw(J(vc|O +z`X@uyeL4}zmDUq#EaOTms!tkS&~U_twt> +zvi~|9C>+&1CIRRwn;l|Jf@&UZ5*bpC;6aIbj>W6M43!nS1j@+1EDFr7Y6@eaYD7^*)u2pA4boJlL#Yqb>kNqQ@{W7mBUH8785GtTWjl!b3M}(>rO>&5kKY5QD{51%iUBW +z^Ut1BKujbwR49jBon{uU0T+j!pBMaVAJ9dQ=ce3*U0;ieb!nr<_Fh=5SBxkeCpCB{$o|sB8Zl5WVFb6#x<>@r1i8Oh-doIY +zagv9YI>Yk(kHh>fZS1fCrI%*Gh7D`>;6|)C_-H_Ukd3BajWg?Uk0`TQuv4v%JlJaj +zKif+pkM^cj9u0h%$KL#pXM?6WsZFME0IU70lLEXLub4Z*U%!^IgxOOP^MSU&>m*H} +zrG83-0LByATgoGunmW-`eiHhKe*CeZUfhHiev?8LE}<^_`qoUzEVUN}l^Z3 +zeCfmEL8_pE@?Mo&9`n)4_`i|jQ^}fg#}H_mp2vZL=lBu)kUqT%Ac}>$Ns_$K&d}*c +z-=V-5c=gU;=#;Am#PjF{ka^OR!s~*gg|#pC^*fn~=Fux4EE?;+UG@DygN+P}WB93^ +zZkv1V6Poi70g&w{0qOu!8_;|=tA$2$yH>+#s{ftMgS-k(JKWy%y9EmOXmFR8|kX7cQGyEDjX0JDwl<&wUw9(=3akG&pJ%P~VWy1_H*; +znDkn#uYGmX<~w|hUsh)0tHd}`o7^AU)u$&^=&TVILZ~N!&(7F*HTcdPt~IYRV^p1X +zCZi@F7V2+@l|wxb3Bw-=+DXqvPD5-*tZlXOt0=fub-{Lj7a +zDFZ@JcYR+o`d&tG3zP4qm7kea*xQpGx+9T-jtMX+g!q!2c!+C+t*&%N#+cUKpgD(T +zH`gtq<&qqsCnnCx7A-FqKDrnCT7@QzqWh-32pefcLtH3jowflLANb08?87G31DdaJ +z<4TYZ7lEJxFIn-5&@OFaE~|byM2)qEcn(5fhhwEdJ&~%-?#k2v_(H&?H94+-C9lUx +zzAbR&mDbAaJ;If3b-un0e>{XvoO_js``5{5)cgJ>aS!R@p9f#B{vDzw`ewgt1x8Xj>Q-+eLI0)o~nwS?c0Hr6O_g+=HMgc2_+;LI3Tb57&ZezHcL>&5x*n4B)zSueX>sMrvt)3&R0 +zy*u9Ir>w13GxaQ~y-{K!Ld?NIzVq|klX@e~<({`y#k=_Uq1)6WFEzG$eyFicqbgIl +z&7w*zyTnc1CK+C+evwv+gT>jBcGS5ZN*asri=dX*4s`VRpI5q%cCS$X{1z+q-@ZmU +zuL@Lx8f@iV``eMoFVga#1b-gg^?hdh<;LlV^8*Q(t*1?D7{0O6eyM63&hM8jhdu9i +z`BlrArqxk+^4dIHTeANBN|=I+QRL;HMPZMWoN*`M^?DNY_`aDd@*82k^5ss)M3G_Z +z*6W{tPsx&mp(D6>)GI50g=$AsbH +z2^tm3ufs^wd2upXSXnN$_rQx;RD)|ywvj@(9n8XOwyprEa^JBILioGixgxq7K +zJc_*Kw!5LPKJ*(=WCK$iCQ3F`ztk^sV>LWcmwl~?2k9Dld?tethasJkv#!f&a4EYx +zeO)KC<0QTEt-f_!e9BeX)T|*G^E0I|+QI=*eit>cxQmaVTUk`3a(D7DA&^J!?2L%xEz7sA>0HtmpCVURami^cyX&)(g&wM3xfO +zWw!D!@7PK|xqYE>>;A?d*gl4#RZXV!qaJ#&-os;KtIvtj>Te8k_bGks-X5EB^a{U% +z_zq;MEF?7YeQ9HUDZgOA0`5C?((ROqO8^&RnzAY+Uu^Zd`M_fl)1d`S#|}5#>{kD> +znlDH5s0=L(;gnt_M1Rn$(5a?Vdc`C{<)C}&x&RwyttEY(>9I2z&(EmugW!R=t>4xgfR~^+)4KfVv$c66*W9LtE +z-SI8HW!g-0t?py_aYRL-OD)$7G>Dh_6JRs@afR}Oci9wFJl!3r_k6SUY!$E;lEHDY +zk)8=J3zdSp<=_sc#X0Ll=IL?D>VysbW@zbc2=3x`1^GkMX9OHr$^LMZR9f-ldbvHz?=3 +z@A%H(QPYEG$4w`e2I3tZZ8g-vY1YMDsM +zPhbjzjjOVS9Z1wmVMlj9!#&?+>V0g!S^ve|>=HrxnZsM8mn7Y=9y({lzn@1l9*AG$ +zvR=F+6t%%*K1|NH=v5bexBhCuIvb%h5aMy=E>}BCwp1$ +zD?x5ty9yoHGaG?$(zQFZko>3nRK7}O{8&Yf6c4G{N1F&$#Jj8|v_1F%MlUN8Yy5uk +z^dI*iAA2tH!qR$E1VzF2EY;Aaj6T2 +zvuh3$pWh|^?s>?OLu(Ee;P*mTFJh0$|m}xRtdEHp0vz#N2+U0GE_6Tj4*_s +z+v%+cg^9G7f7#VO9|1{hH1z)|4|*d;-CKZ`fSrb0h^DU!4?h0o!TKyXNspEW9kenF +zWfNJ%d9YIngCY9qss4w>A^cRZAL@%?z%PCe(CQ@DomD8?_m=&(!MNh0&wDjgy%d5` +zj^>r1dBlW|-Zy=Cw4BU{0NWzH8N+01)rtQ7U-H7%>?=g=Had&+{l;G12-iQ`Y5TEp +z+kA1=)<5Z0`91NseueosPYGG{kqAV^*!lM%3kSnB#FpD);@f!oRyPxTJFgu&0e^ox +z$?eF`@j`yjBcZXe!#T6#Aal0OY;5(L}Y=5 +zt>2j+vLh)8LGk?K$KeMN(u9fa?;V?SsX>o-Wj`IkG3s5Zi$y0pwFUur%6EcIov|sVEUzK(|yQh&tC>^>;2B3 +zcy*f^e9za)n7ap3d=g&WP`|;rc9PyT@%(V~qgM{s@ZTtcjryqO*N=>5W0?22acQAnMt}85_}Qp4*g$Cz4i5&cDej +zzU^r09&DtPDRBjx{BcSI(iq{MGDci8D%-nZp4u!5zndC<_iRbyQj;je@}$h;vLMC* +zqd3u2Vi)F7=Rso)k?^ebFN$gE2>0NQghjB^srRQ7Sy{>U3SG^VX~Xl=;pUmpRB~)S +zY7*7F%e?=9oqOq6eyWPjVHq +zEL%L?{We65%Rk3YNBpOsyBG8~5B2WZHB)C1ua@@aWHmdv<)@J4O~!@j4D2?gJQLEZfs5%}ud54BPQ-{Y&GW|7uNZ-2ABsH2p69 +z8s_T_i=RbprX{O~O6((i59NiM`rmLU|9rQ;F(5WJkuQv`k#btc{gvwgEr`AP$&2{@ +zO8Ccg)0jsV=Tj@>rZP46?SIbP>-M?3S(EVHC_teoI2w96Q*KpPJWmweBI$fkM2 +z#@>Rk-i@qvL^RuDvHcn!1w+Za^BUW6Vsvk=V(m}@dv^>1EV|n`P&-9!omoFgh=Rr7&{7x;{s~Qf2beHO1h5c$=DnHVbJ1me+CqFy=Vd2>98eb&4`%uNtHH4R#ImU3yeV2cBW +z!MOB4pd&?^ai*B#`xnIl_!Sl`4t+|LoVq=w3QRvL_X7sn3vM?D-uj|HMBE<=!c5+` +zfxKm;O;ll_o;ow^p9^GgLnL$bn34IrLm+X& +zKLW|q)sj~f@0mIMz_H-)OU3%~Ll_@x_>-`guU`d828;S1zbA7u`8e{abE{_!bkSkS +zx=HNe(3Q?-{onprl--Tb2o-p_8+XViM7u06c$SH<;w*`33P(ylfeW4)?Q6R;@_8D} +z_S>5yeB<6$o)V?o;umbogF6gU7M?6pEWWpaS!Z@));>H= +zb1=>K)$g}_3K+y;w)|DesAPjg*WK!kRDKBoS@)~&xB6@s*xR}*mLujleHpQ8hx^|3 +zI`(Aw(d{vf+hePO8)BP0k&7wVy;E?LSNSm~MQ`Wd=fi7-hVUlRo6b>E5Y@-?E!AKO +zOsY(Ok%`}MN7^H&F`MG5z*pYs4~xWfus^I0w!3RoEj}wDlv}#^Xq60(`g5_+7lU>( +z;3uQZWyLE}vB5m66>X;+`q<&o3|lZh0jZjjx5X20?1r{fLs{odts6{#_D0(| +z#N=lSc1L4zGv5|d${%{Gyw|zWbvyhudSF~uZCZ?bihSNMyfSz{+s{u`sl~suecl5d +z_jCK>b8BhrsnQc%S9)oyzzLqq?<%C);gUu5YU7rTZ+boNk4jxZ6-l)e|Fvf2L?GOD +z=6h)|WJ`Owy-Nhtu59V;q;j1JL)ScxQW~qb2wg#rmZ@1`m&|<3&+iS!`R}ux-FPQc +zQ?zPf@i1J^HE$ejE?O-SV^X!72ia^ybfP!`X+z*G?Wb#6K}Cme;YNAI3)5Ct@>neG +zKB!XEUN5^V)*Y<_&nLEf_{s48m?^g{U$Bl8eRK-zat`j^nTIFuZ{;XJY6kBUoYj>1 +z4J7Emmf+fp{RWk0%)}a%ppJ)i4zSKJDnSDTz7oi=(slJ#PAt?KqWM&>xXMNFbvz$kO#W>HVO3A{L)m+APx^apLDbx|w8n*FDXCBfa_a+45~Cu4*xFOES(#%%9Zi +zH@fh7ej;yuoG)kjXDaVb{^`&=2B)3k^IFQ=;q?ZZPttOeR+eiZTY6OQ*TMSAo>3r^ +z>SU!i!WYDrB{De&V%F~=mD@!KvF@DHuv?MO +zm%-pTY5%e&@EokZ6zG?i2?xHlIALx9iU%>UO^=o{;T44nYe| +zW51g5K#&z7zb1|hFE1=11o`|3ePGx;QuwX*K~@JBv(14k`{25-hSM0iBIv4!fh{{B +z?-fP-l=i#KI8=+x=kSIf5|@5;@sGCNPZ*o)Ub$w}5hqn|q(k4 +z8J{#$y)8*MW(=p6RR6)&`B=yY*U{}aO(p=d>`U^42fF7|3=_v= +z=DQL3X^pWq2;B4p$`rgsLsD^=#IplM^7qb +z+!6Z9Iq)SxW#=rDR>?JOOa0M6zPxegx()M!QL*9`=R5COMB3lJkxwL&?Br7xJ<^=~ +z@=-e{nazPlCTFp<6G7b>$(|Xt9%FY=%!6@zf5o5Z7y0rwjC!FSOi#09T0E2xT*lKH +zDfj3X$^9X(USkVlfu3n1?%o0cLQqF|Z=apJ23o>J5G?R)5X>*Jds0BQnWDYo9y~ARZ;**vZl)k*C_8o)gJN-ZEscs>u>E%fG}R!l4TfSO3rBQm1C!w91UXUF +z)coG#cfb`=;3=# +zsa>mT@3wYrT6>Wf^sjYUc&>B^HH1^&zW`!WO5;0;6$v3a}=l1*k +zo1Bc>IoEa0bv+*U$Md=5yY9e4=ZnGc!7Eg(v@-&#u4)C~6(Pd|y#c|u@`r7h1SJ%^ +zUXD17j28*PD?+QtG6xD3NKtFwa%^&g_Y(oPY#IhP*3nz+!z}nmlzzlqPw`xA?<-SSlXQ?o+;{f5PL1=koz4nL-eOdb~#MNZ*PzB^^`?;FSCJ~K!zSDSr6#LfQ5KCUJ_$vQOXmMJPDe%( +z3$Wu9#L%htrIH$YvqnNp%xi3AKBu1EMGalb|PL^s*NH6GkArN +zkm!A-pIum6$v=&Elj3Br`&6SR_XyhMx4-15?6+S}e3+!j$uDNi!#i}~k7Kro6X<6; +z64tSF5Xn3~K32htVR5)nzE+P_V0PS^wl$9=woa9kG32ieB=jYeoo(N1}{2?7gOkywUpL`;xqR9eAQt}&Mg@5 +z(|vH0dC;5RE>R!X!>uFD@$5hyeUCqzKdYQtOu$XJcN-nPbE%*f64)D$@EXH|PLGTT +zpL}=!UA8V;p4SE1hMzBIqKn66{PKGhKR>KXb$o^C?n@WD&v)m>~Y{^ +zNkYNubu{Do6Z8?2qUX4lq$IKVDdK5EQpUl9oYU)bGd#?Ir{U*M`d=4_{DrjL_IUH0 +zXV%Ls-ZyTS1g*$=90p72$Z5uSLz^-I?_#!>wj^N&l@P70k?rg2)^TeI2*iKwz;6TW +z<~Hv3{+?_o`nOffMSAWP!6WMGj|0|_A?lnzFSXeY%F$%fo=GkkBJT;_+N$79A^OaA +z0xQsRwsEcd+Au>NspWe6dyXX$&;~BJ#c?)%p$B3l`7~5uggChbKx;^%Tt~*Opn(WK +zM7`%v1Ik{N^t5kIfq~nbbK(F$GH=j-3IQO^lKJLug@xP~s +z_aH|UuYnf}-c@iZ!L~>R_AT%UyJQ~xgdV=J7iY!UVcUTj5(3i9!TMJ<5Ve6R_!m)8 +zA@6miM@;FI$J8khva-|Gb3tZdjE~aSBEuu8gNe~P(J3K03Tyc-5An%k1@8?m^%svg +zg#^)SX)b35xI|;UnPsAD`SO8II4x`t=+5gBHn!!QM9( +zjlN^JYyh?aIIuO6>mY!0J?+t%w +z3wc%lUYoVxy$2mGUzlEnRRVuW`gF<)_8)I(?RyG#-Aa9Y=zfQ!q?W(M!M7kNMVGFW +z?_KYRlf!jUV8LtA*`pnyM~L*b+tTyK7P@C9fM+Sg88(H_TTMc(aJv_Q!Epr$CcCkl +z%`*YfmjH(VcJbjD{BoM8-_fW@wi-|3WYIh<7RaU9zHqg!zd@RY|fmz}Z+UvtYUKvCuqREr!^H17L9yaI> +zZ*X6~wBdJd_F7)uam2nP?l*ARKLg!@O#=4ipZaa9pAX2ylqSHuQgvr6=(cSzYhS44 +zLQhq*`)qdF96KDdDXv^eNv@5`6FQHfxOx;DouYCy^cO)itbQehgU^Ur4x-}`@{!PnY|Mo=Ppxd91zR<=yWtZZxk;HJ$V`KQcD +zXyzM_={>1Wy@m|hE=kF3p{_iBYa$m=pewCTifeMpfM%Z4hIjYIR8jrsrjsl9nH0m1 +zUhm?UKjX>s1`n3%5bH^mu8iqLsJY7d=NF*!tHuyiQ3_Nc?h`IjFSEYehMffWz>J4blt=w{X>6lkB3k=zNt00a1$D$yrw4wD`|2 +zhk&vTdea;i7%Bt2h1vC2+D?Y4u#O$)Z(8p*IvtPF4@We;GS|6W=jY~#pDrDlNu>JO +zfuB=zHsB7NfUa=Fl~x8b@e1))TDN_4M7GyO{zLlzA;F +z?Z$s01HLmb_n!xBPr=e*p|?;XqiVjq!(Pke6Oik+Y~krxdDl7F0pRYi#TmW&`+@{l2AThcm@qr5#73FZaqRIK=441f +z&KrU{2e*EmlnAjYS91DO*V@|Yc}Z%1Rjxdload864ZRxk$=i6doqS(c8%p^-y#Zp+ +zZ-Fdk%D(nD#hJ1Rh)-b<}m!i?#* +zz#)Xd1f5Rc?C&wMT$9E5A%rw=e2z$e#f2y_UbVhZe8Zts>CPxZUji^tg3na?mf^lj +zkOohGqGvmONvt*#efpk&yQ#i=wKMh&$Gd+)_e@gcX3eC%@+4wcOVO>u}ilNIVQC&jX$0lN6N}I4gp%M#Q@YbIU +z;MU$RJ?_wn<;BK%zXPPZKQg3Y;MoluFYJ4&=_>28l6y*3Ta3g0bimu#RgQ-tM)5>X +zX=%d0E35!<@%KKR#tALQH<5uh)(tK@EgUokQ?Z0oW{JaW`lGdA+zo-LLn?y5rw$p8 +z8l_n@AL?{>ljP9YFq2tluyNLDNq;(=6oNQyNuO6`Uex1fc4YnRy!!J(ZmhC7yI-Yo +zQ%Et?*~prCNzaWr*T{%>Y-Y_u3?|Devu@;{1smB`;Y!P=wjK&#=4Y@jOKnG{R^0S2KGXoe;#I6m +zkHsElNg25RDRI6E_GoYA*nOcJF|gNhF{lQ@EZ;ymQv~_=`2K9JYeZ`DfUWbG-dOWV +zysPBZRn9v0#`*?dGL)xOtq)uT(96^fx(IGc&)QH|VM<-zc{u0Y=KRvt>z-!E!>3^F +z9-*tVscnbw_w#&NyYnm{Tw8Zeng16XjaW461N{^SYeus8LKW-2`;EPMEp~ayT}7A9 +z9gs->bB)3J*Ln5I%6JNCxfl`2y4JWKu0jC~XU%B`{E=? +z7sm0MB2&!&+Y}M@cOdh~=P9oB;#v6t;e}e3Ub#a{Wu#p&;+myG1IH_QMx14QwMAWCT=wmGm)-{Beppmnp$h +z3>h8-wV$xldzi7mi*Fh-4ZigRXgr}~N~=*!lA2>9A=!KnmDRWq<8kDjiJ-3JuBgj6 +z@vfLvu8Ni4p6kmVDY>w-f(}?aO3qc)0S4U9$J-zD37T!YHw9d7T#k7=qW{(*Ye0}o +zMr`*7l^RHsv%KS?Nn<3%^Mt*Dfb*nRJeQpaS9!oFn$N-e30tz7cz7X$h7zN&d% +zHS6W7e{jFP?5I8F#s5Hu?ujV-z}m*5!)6E7*OR#krfpuy=CDbv1N7N?%A~&}07`A< +zAnn0za1Bs)vp7rz(|w+ccBbi+G6Sr{P_en#*!L47UNM4%@dfmm+l~dg2)vDsN}-2ec2S&H#*(aWA?fG{ +z_iQSTe!nE?nM0{F@q6+Py6vP(FDCn=x3#^(Nl0$wWR+2j40V|*T}-cxJ`AbZxp>%6 +zY2xZRw^dLOKqq6F8n#FMvRTz{gMqWhJ}lYwIOo*&YSg?Xz;`hZ#8_o-6QL3-z#Ln* +zKB142fO{D^DHv?(sa}nkY=C@nq%?D@tut9ZZ0+3^8j%AwR9SX!z+D{ordcZ&LO>1k +ztJr;DHsx38^wmXEJGY>zEusDj>Bpaf!mS!@L2D7Tx6T0bq)$jv^cOAO^N8|eUeDs1 +z?yjFS$)o38>ds(Qr--eZ5V=^>@c9AP{xBqUA*6!rafCwSyRV+d?M0BN9|`{wMOm(l +zzj%7hfct7W}!g#i3BI(Xy|iBCWEAtuR4_`!dCy20m@Tg>xR~E2I~2;>_cum(!wH? +zH%ETieAhgpMD1zKrwx{^kUI0N`QlnOw~x{{2_+6gcr=^Mrg9+qqB^uF8TGIZ#D_MS4n9xNJzDlX@_ck9`7nwfKsI;j%`+fbadBMBTH%3%nW0$aERZdR% +z?`3;a!@xHdKX@nkr)gj3gwJdWTCgq$jZ_977@+wi!98bV`ke!WZc{dljnW4L(+wJn +z_S2FS#Icr7tyE4;d8hSga)-yg>^s$dfoI%orBqZ@ZRzPw5qoujI%-K=kt+TKhFIba +zT{znZcFdcNw`0U#&VQ9GvFIoKy8Kz=C?0K6wJ_$`Zrh?o;Yvc@YjRvCrx+D|CtZGI +z-uS&J;BfR-#NLzA7k0}OP}+YN`Id}# +zRy^5ym>H`#6zw{!omH8gl+3c_|7dUA +z?xqo>RKOhwNGrX)AzHxSTkj_A5qqmWn&?{VZiT9I2Pn7$8iRUxK!?@n#ipO$rec~m +zNp`q%em3#v9O;pgG<1CA`mjGjv)T7dIV>AJCPPpDKE~dlIDx@5kXtiOhYa**&P~+{QorPkg`FOI_lf)p2t4p~-FOu#+5-|%HE%= +znMH8z_IJ#azsImObS3U!7m4z%R5}i)p*UTA<9qj+3HL8I>X+~9tsJW?LcfFO2Ln}D +z6O%;T?euA)+&0rpH7=917mlfjsC?F*)J~ce4mH|rY@Uf|E_^InR11lHyQNt}_3Ev3 +z+Kx{8Sp>Dj_Gguar7x;P_)RfCh$_~UJt)h35752?p2bwP-j;ze96)I>*B!Cv4FLQ& +zWd7U1b;lW1Hk5s_6VNAvxFn{Fu6_mzg-dPq*Mik92cFOxm|>43u5M|0sVSi4!X-95 +zO@_tMS6el@T~xeTot#T1FL%AcEY@1>f^U@h!!@dQ%_CxYrQUE7Ip^)Z-ok6y`Z;M?L59trEw~J +zQ!1)Cx4RR3hoo)C6mZ17Yw-Sg=hqg}!Q!Q<08X`(X+OCDD)I94YsU9= +z@7>_L4{%?&R>By*WDD|#)hYYsK6m}wFe%jQ)#Bc918wueg{yx4gjRXmBc_Y&-KEjZ +zJvnn2 +z-PvcoU7ld^Fz878gNahu=EenSC~>yGm+a8y)G2BXtvq0W=m_8h1+Fkhk}D;Q1c=*H +z7PWAHKG05O7GeraJDd4YFp3MSdL3sYLoBHezjr%?>D<=)P&z?UVstgDxf&gIW9m0? +z7J@3j>Hj3Z=g1Q>2(X=a3~QwnYGq7WXuf9`7tkOL0*UVr{3^RXCR7B%k0fW%A_AYY +zZ^~Kx$^K}rR@f1WkMhzm4^m_zTmE}x=E`5Vrn8xs1}=|LM&rPgrq^z9@j;iLlN!Dk +z0n6KpcC+s6JpVnwLi}lPl&CWEa$3AJO3$K#b`u+taS@g?c{Ie5|_XAf~K3wmdSZG+UOF9~J +zxK>VB99TjesBIsT^rX01b1skDegdxFdi$}}FVEmlO>ig&+Ks15No?ixmMiI~+z#ii +z2FvvOM*fwCOZ|`mTgPy*mzLht7X@gTtw5*B-r3{BlCLBHEG?QRor6Fn_OD(`v1HnRT;SV6=>Ha8~arNYxGgwa_`;i#rjsJOu +zg8w?(gYp%H({&JG11C=#g+Sn0uw*JSy_%}Jy|IYZlvx1HuCvzDywxbYEGT* +z_gHi7;ALR29ujqVzH7KNGmDpQC6|ig%(PvMsEbq94pbgP6(>NjNdOHDpS2KR(*RuV +zbz==HyB66}3f%_;g>PuJ>bF~f36cm7bux0X=(@krfE&%b-pW8vbVumv+nT$nldG}0 +zp3wftc%sSu0^9TIqdiX##~w?6JnkYlP*Cm2XA#RFR5A34k-qh|g37)o*Uj-w0F;P> +z{MjN``KO_nGQwIe#-LR7Y*-#W7VVEN;^S@5f?NrcPjHb->7RfGsqd#8{#IhPGW?%e +zK!C^8)lSuK){dcvJ?io*oLwJp)6_DgsF$97!*O}_R|!fD2zyIf^u{&YbQH8V@kiuo +zbKO36q0M~PWfQ|lf2~vFG)?KS&(aP6uQ6M6;)r1DR)ywlE5L6<*m#6Jq +zf^^;-^5>Dw3Ed&*i2i2NYiRCW-@#RWYMl{^uU~}mn3}Ik6b_l{l7?O{4bb6hdnFfn +z9oHRSOzreLP7~TZ_LIl#>|TBNmOVrJBT-J5Xmrg;Rc=g6HF;cSPxa_85ARe2eJhGC +z>iT0(m^;o;SIQ>bi9wW@!$ecA*0$v43XGu-KI9#Fdekr(L>XV@Iq^16@UZ?yS(2v# +zsoLRm;Hvi3#b-fo%;1N>sxOOW9pZ>Tlo7$iLSL=C1MuW@4*bA0T_5fBRKRAJW^;9p +zwza#&-^9AqgJ2n>GF;x_r2_1hFka|&lEOp( +z5gA^qXO_Nu;Tt%7>7d3$9oW>Ne=_3wc5*{U>Rd||LS*=9gE&>>wIZLDA8AI4Koui+ +zGToy~|KymhP^a0WD-9ld=Ab2oc@Wxp#>7qO&TTyGsGH#kS2}eeSpl +z^Y+GDe#36MWRH(Cp*Y4?kr^GH6kSU|in_VBFTJ#(_Uah~6&$08Jif&juC3OvfM|N3 +z&wR-cSFhhX$YN{$!)ho=(h{RcKr;RgWn9M9D}`J#6uR~P6kp4bu&VX%xWb-&VePQx +zJ7zrNNuQ@bNxbNExa0Cs@o>Y2{Oz@p+aZ;Rf#SdOvMjFQZ;jAWNOnZcO%J>K#8e9+ +zxOkA5hkV4N=HDYn1%XPw80-HwD5o4JRDk1yf +z%ZDJ1;kM7*Gsw_YEhuW^m~G;*Yx1S`@S}fzQf;5QL_O3g)B$#iQU6~pfOx~5u1lA| +zLv>}Y$6cxo4mwmMhLMp%iz)D(N_qp2D!aZxk@D7nl}Rli)=%HA5VOL#cH%%GRIyut +zz!ZD8Cql@h0)x{LQ{IC5;ryd1%#zp+0;j7zu2kXRyB{}2YRR9cKg1V;hx?8?@g|s1|2Jd2AyWdm3W9B(>`dx+?O%t7 +z8{dhmof1lHOg?Zw67or|Lq= +zOM0@22!^V)o^L1x`-?j*Mr6AKE1jlJsi!IA>CY>A; +zX&XK3O=%+?*?a!3*IW)~0Rz`@8atJ8g)W?*gUP66D_l(es4Cwg=eN7oYRd3Wg1vVR?uZwcYP)U3adjD-yA9g{vpWo2i4UysWIvt!ARf~ejq9r|NV6hZ9B +zY{-kY%UV`bGjrTVndzVg9mU(@0QHh8@bdn$(#-WE$Q=7I!`1e`su&)J;lt1wG_!8w +z%@!mSCRp8~j<#$Gnr)Bl!XN0OYeX-~SH#GZ>dc5&89%o_dpT!R`^#8oMn-aJ(!R>1 +zLfX=cvpTAq-`Yj7=70fvj$Cp0F|GO@I +zu=^no>DF=!w*?a~Rk^}}Ry|`bidO8cN+&uFFy+B#tABKIlJHJiQftx8sfl4JfT!tv +z70gnB1-wBoqc=OBWgebl0coG-zV0U6QI~AFb=Ogq@^>Do2=YVENUj6&swnH_$oIg|Mp}>70+WIB +zvC=OMlA4=ZPad4868-qO7?$&leRb`5u1ss3ASZ*2)I7gcq)t?; +zN}gq2Z8C%8E;VZ*&5>RRrz;5gwgnnMlIr73`RM)^>hzzTH!`A5RNG&^Cj;UPUrs!} +zP1wnl0(CN<+=*XsBXsH(l3z`IiurEx@Xs&c*}V$7&ufJ2#@>-@k%)Wt +zUV6|BpWB(PH~d@p3!jBJ$9nfd;rLBrgpF&%|7;wmaWTc02GzRizc+CY5*zn6PG*&0 +z>m%z!mnS;!-Wa!rJ6svbpR)$`j$G8{j#O@_BubtO;hJPifT#?-Jm_TCyycTavp0Ou +zoecu8IP@PoI-zj!+4f91Fp$kQU3>K)sKW=o%(}<14CCnsEzsltmHBZ&BtVC*1ww2R%nFHT_)XpKX6rBH9Lp2XUA!brKjS{IPmn +zcEA9R4{&ie@5oM)26=GnRv)r#`N95kPGTF6F)6t<*)P03A!nV76PYt>(mc|3qi*$$8StKX6U+mHW|`k~s`mRt|yL@5(6m50mfI3W8wy2CG_ +z*sk^{%<373>>PSw;se%Q5?v3z!cbv*8MRd1ZkOFq{!N24T&}r$Oq)L$zNqEyeH*uR +zw2AXl&)mM)@ +z22#}zCxx>IQbdj3%B=mzC#Oa?`j9%r{{KsWKwXRgTVVGeW8H0_VN5u1bj@BdFT85l +z(9Hl!I+Pe7fvmW(?AW(#CmY$wSQlqS-bXmj9TIcgG>u4RE@rsl|2wGp!dK+ +z>U9c)KGV16uFP!T`qTU2_L4gSd4hby>&}VA%Mi@N%=fx^8y&daNE`VScg5b +zLlaJ(crxQ?R1j044LgtXBpX5{@FTXHfP?=MwUi-P|Cvt7mLbCG;X{xGy+9S|7(@#G +zt%@%Wb75ER(1;PwM5T<6;m&Y4_xW!+?r^=mjit_(k8&j<$}TlKB7J=$n^UP@?l!8jSxA%C_Gxflt%K_mb>3F9l-{9 +z-2bA+hkNAUNQvl0{oc!0vu=_M;O|FYLjnQ@)-r75akc`{C^RH~r +z+YaWd`*7nKp+i^dxZ}V0rVa-<^8~r{cZD4w36{mi*prAhs%q(H&ALa)iNHlGpWJIM +zP3~om&QKwEXAL-L+!`6&iCb+F!J>ig3k2i9sy6Y~$jeQ^m+$f(7&P8<;Ip1XZeW_K +zt}UTt-XW7@-ZvS7)~BjO4?=Eml7B4HNIu>X|NiKdxI2Zb^hY(9NEyf@Z(GFq4}klJ +zzl^<^ZJ-6o!0SVSWOaYtzD*@%m0Hyb;#~QQn{0cYo9Q1 +z#4U|sDD{Xrwvw;!T@hciP40mkI-{?#7^tgQHj~~R)Scx( +zBcaJqY0NFlE1h`ZrNdtuR8!XHB3Az}%>N^BEjbKgDg*{%qtqz*@-QqR&svL+*5o=j +z8nq>y<@9fH9bnX#gzP7-vAxHRZB74v=WOFP +zOr2cQ9jce^m!|V~Um#_3$e0mk!Qzw;gnvbL_Fd%ra3Ct=X+lpLMZItN>QLrsHg$mzRlNAu`{ +zh`q|if)uKtUtkW((WITEv%1P@a~hS8iSOhYb>)ce24-m&haK?MOl` +znXlWqFqX{5@(%CNZI#wfhcL1^J$7d&`=QF1&X6(auh#7(HEooDbRw(CE$EqkKJoLrgttwCoAsx7xiLOKs;cBF%%67{!c%=fwAm(Zd#cFa +z^+>eC?i{d@0;ZYB)Vn5+JmmHcM&)X5k*Qp6cSO=-rZ8(xpA~q+t`6y%Z(@7QhV$g& +zI5tou0b+}ZocQ~x>;NIQ&UA;x7WK>UTRY3#MB7{bIj&)nZa?~I5lutv6sgyt@+CBf +zEYgAx!q#?N)Hk+|-h?Z12S(P6mPlQ&w5r&-D8d*C8Bf__d&xV$6yV31h( +zY>ys2lnAa3ME7E18W*l!q43>b8i3bDj;^R3)4g4qWdX<5;P8a&$HCF!XG9)@PY@}N +z+45}s-hYVhuu!{cF^=_3^V4RS%L{*&vAf~__)rr}gHn1eC|>maN6L=o<$1wjsir%v +zYjVHLzn*&?^qc)}Ck~nK{}LTMioG54NibM|==uOI^#KxkEzFX9vR)UL6Ko#%BV_jT +zy$UMUxcaZLk}s_rqJimwe0y3iE(3cN0podc)TCwNft-S54g+U0q{QiR@`vjYw~l-L +z*Rp{_B4XZuIemp`DOVtOBe(%Y;X$2iTyqYkm~5gDxQZ9gV_B){t}Dk6dlS%HC|MO$ +zSUlrkGhhlpCxhhNE=IR;Q|v7az6cg%BH8JuskG2-kcI`|A>v7aYeM3jgA~{>y_I-A +z?~u%TcvyHY1vkj|y-bp7;=C{?qto?N7ypLiz1VXzAQR&^u?E5>vAs!=%I>iJQwq&Q +z7Z|T}3(Kf)S^?)MIVJ%ik=!smtT?@`Oe!?qtsdN7U=M2khUY4i=5d!D&C*NM%qHIjq3ypzL> +z?%hoNO +znmxO7q^rE5r6FO#O{{{a`>QV_`6K1S+1PlvRfvyGuiS(3=fTRsx5BUeW{4h~+FP{)%Xe76SV5~x^0H9nbe#Ig~2n)=`$ajUPseNWPmqtD%mJvknH +zM6sN+#gZ=M7eC8S++mhCtpD|zJP+HgVqblFf0!tRmo3$+b2z$!97VTHa$)?0 +zgq6kfZ!A7uGkfDBr=&&w=SNOkX=D}?ykT5N&h;QVV{Pvc*NcG>KZdhNkBZal~8OijulgTxQ0u3 +zZz%0-LHi``@=kS)`iJ7-4{j3`kyp`P+YN+2LOlp}u$?Ndb{xbv1q||lPvdS*w0Mqh +zh~5Xju-safG(+H8DC5rAL~5imNzGr>(0maJJt|>!ICvHMHQ*!h)P0M9g6dwC|IGy} +zYbY6kj5rv@BE>^EijNq(SQV{tV$ +zsdqL!latF1X`lsMox8fu5hEIb*}%otKB%3|VB>X)EgSp}Bs=$XX|^dR=VJ4SQ!a2l +za?C0e@d3YUR)~CRNVP|cAqx~fu!aI*9L;)r>kF4n` +z6gN(^Ii5iF4s|giGQ;!=kcD$wna|#wJ(&UDyFSKI!)Jq$TIz8O{KJ$a!fH#r+})1c +zm*d1!x7OZuM!+5jg%}q1n8kbSH#q{&6VL%d9G^wR(EXK8&Yh9kq`~lUNHG1Hx0|<< +z^i^sGXHS<92^;Hh^yg`FT_2m1zVPJ1tfznJQ*08Hz2oV5i0LdZrv`|nI5#@)2;Q3T +zoA^LsL?8Tdtcaa!=G^vJ<>gV86gj5c@d?exHsGi6jJLtYbc`R_Hs9Nf1cm9rHRGT1 +zU?qs?=+|Poj~n(T&aB4#@!x07SX2OYgy!;`W@?_By`Zl*O1(VYow+1uM;fjlW2@qI +zZJm4IhrfUWe^kP&D0KCgx}Ony=#sicE>kX`h1GNx-~>)GE^c1$M3%AV7|MdXCZq>(_-zZqk!ktN{0cd>X~&dN_PFux3i&l|y`g_^ghCSWi3A%m +zOYNZ4hI5dN5=9$$DJz*;Q77|w4$W%lOX6%W0uNof!lJ;d1#@dnWe*d$yMaT*1&IlH=p?*4B%4@*$h4pB5tK_Rm{#)xn@jZOR7XHo| +z-qbjoiC=Xs8O5|UcOMx2w=~{*gQ+DyxCEMx5#+desV_D4_HLA`>E%y7{Ou<`Y}~%@ +z^Em_mr<$X#XOHZ}CZWMTWgQEc7|laNd?+Yz_0Ju@I)9AUH}GvrA=jcXYVms^g=*Ea +zT>@F8PD~xcI3d~0+#s5w8m923R{yW}?#dLc#ON!0Gk!v4TK=$%kb{IJ6dN1guT!b< +zsr4M`fMGA-Jr50|a?>2Lhiip$;V$kaBUu*Rd(Zu&rSHr{l8zvZzkg6f`)#VHYxa)( +z{9WvK_kbX-Kw+Wh{=k3_-ThIA_H3WqrQ@dI-7E?caq_dC-x?xYH +z`=UKk@gicW_53Rue4>rrX~PEZc+Crf^!T1tdk2D=5eA9@dDu(Id4bj_Z1?vRxvOzS +z<=`^`#A6U6Hg44_RF`ek=5PcTY0!RoCs8L((WcVi&epUijT}$lDTUu|C3Y`5F{HKh +zuXdoHF`y)&<2}Oqf`#YPxUJM!G&PefMHCl}UlJQd#w&R#L*7U_-s)*dR(bEE^TWYv +z^}YjM_CF0J#lQnQ14MBJ0$s`7QvKVu!=T<{t)!Ap*n4Gi06n~^Blr2ugKQ~jpPN6X +zz&j_>G+U0++MOEz9+0~%+hE}HU+*xkZ^~SrIQB$0ZDi&68v|U{6l7y~xJZn2VLyIE +zN?i=BySh7SHZEUWX{+yg5|JRu<%U`UPr0*u=NMTo3prAVKiio}Haf?~$0a;&Ze{8w-i#*`ZQCS9B{c6Sz3Wik!yIlBtda_-a(Ag6W`hXUsX97c?XLv4nOL-dD7tkp?3S)z<|z5TkWnE1xNFh +zA1H-`oY$H~`HQT3qg`6)1DrYlT7@eC_q;Hdf4;kMmElTPB>FP6*ZZ>Bd)9Z@u~y(+ +zuGEU>Xc>dNI^1cNMm(dQVp)gMK7?#i!*V^^u +zCbgb?R|b7X)5Wob@_Sz;GUG62{L&9M2+rDX?{qUG{P{`4+qq5O@+(2zhiKrv?G{4? +zf&e)lYUu0pXOlVVUhcEjaR9e^A^=J@a&q)BwKB}IjoC6aI^es;q2UhAK_Pc5{)l^7tc3{PnWW*b~N?wDPW)gwH +zQV+0At}F++$@qiipk)Q(`~WuSLP>r=#9D0se>uo`20{+9_O)Y`uH$3p7?Wy=JS9Rt +zTjuZA?V7pykxkUNH>gR)?i)>DjGm#&)8g}G5KIm~-vO%Wt)>1XWo%nV<9NALv_iVlx{>N~*?_kpjec-l&u@aHRGj;K +zhBX5v>)9la6&;^-<>BtaP7faU7?|P5+s?k-P`DnnKiavwzS?qC&&PqL6tZ6^Pwf$Z8L +zc)C{7mCw&>=!~jz4zsfI{1g&3P@p;Y1>Vr}=bXzm$g2S;Tx +zL8RQ;4j9?X+=5>Pg^=mI!M$O5bNyI6qgw&dM~M(mKTljyf-9*yceJjng03gXl@E_f +zjClBvzxE7Unqv)?$?iHGy1JzqzNSdd#{xhO?WI(6@5Mz%*HDPWa_#m$|{T$ +z(Qgh^e(2r+ywr*dZY!pjYYhMSY3|GN%^~aFOq2ZH5g(fIU}|K2Y{bGVw|mjLG6P{s +zNNZj-1vBGY7-6iNq=`;2>kknx-zZ_`_wK?0#+-VgiVXw~Y?ZZA8bUVWhQ+kb8@ +z;J>lzcAu*@;6ER`WDEG)Jn;83NkHqGBPjdJu#ElP^6s*WCRnR}p-?8lDA!G91z%EOGPgf3rHSvVB6bZd`PyWfL%wNLnQw}c)gZAjT_tPYNtP;}aU9y3{7-etO3h9B;L*35` +zp+lp$gtsaD90rQ`iig81!w^tX>+Io$Vb_kxfc +z-crY;*U3k5!o86fF*j3vc5>0@`>ZU7uW3mb+to*x#%@;C-O^2TL@GB&?+1$0xozC< +zU>NaCM1uyGafh(^&%8H{K)TP{n`;F-O6?fIm$~SGcpL11n)4hlE~yQ(#s^(LiS>hJ +zOJWnQoO>jnMQa%G^49Sc{rp)(F)VIlqnc3D)itdSO;K+gQMCOla`4xU@eY* +z@M_CJ4CH3dOjmE}AUkz@F~nHGOfDqxuA=cdfHp3z$Cv#>_8~_<(V0WQ^*$O(W>9c` +z(BC`7qOzowOG{re=fIRb+#;HohkN~^Uipv9t%5l${JI78S=jyu%IM*V6d!? +z)h@2l)eyhC=&P(268T*_VSfV4YY9h_70C8iWIjicZ(Y^Cxi~f^woXmJ-W^-oxVp@gAAmouKg#WDL8hTJsstUOEqNDeOHfhCX~3K`5F; +z04*Rg$>?Wl4O+RGgc4~4^I{t_`IbEowJk#sE!DP705uGfDcd(z4#Tut3`xHjPDjgoQ`UIsMzA~%>FQbn9&rjk7>mi;&__THNZJbd@5Rjdl_sZ1|7 +zgNGw(x1BAFUBfHsqc?rRiC+v0S;Q#N4?K5J{`bew`F1knQF@^rArtkmebIK@-+KgZ +zLO2$7Cw-FYzR|AV21MZcW{4Gy?6fAzg`T!rMOJfhlQ}ECCxe_@yYeR?{ +zPdU#x&x=kM9YSe9ev+<8H?ZG^H}u>aP+LM*Skf;Y*-Tg`|E%Cb(jg5(&b-gYd$ji8 +z4bb@%q4s##x79SFy~QP@dhC}YHV3;0VF0ofi}Rcf$_AiYfsE|X1%S}h?P5&c@LE)7t!pN#eOy$*JR+|SF{=$--=J#w +z63@PUhu+_M8#QY-ljKGA4@?}>o~cOY+!yV6oKd2(oCASm%nv#=t7|R2&xe^Rkyjr) +zRZl-kj5|R@(W4JHx6gUo=b*Mzgp3eg1(##MT^Twb!+mqv!dWKE(|n%a7K;1P_E^~o +z**++KQXORTadCe>WDt@y{o&2SI)nK?BCPe)DuLVlb9(Lru>o%!XxtyiEg-p??G2C( +z^K?kiV8*oUmKjTKKcjDd^^forQOFB(bwA{N(CJaHzxdqKz}sm|dG+Hc07RSz63Odh&qn_>g^N3)q%HIa7$)?2!&8MHK`q=LwD8Rnjv6$z(`8+{{Ax4L*H>i&h}&< +zqoOI1G-ui`?Ga=0@2)vne&b~(!khp!dPc|Wqvzf%^n#nQXL|_iB0im$C8Zvd(ic2j +z8(-VgG<0+7K2mOHCu`KI1&oXFZ?)-NuuF%JU4PoaAQ#K7>6?N}_Ko20MO^o2E)5<& +z!lF49rXHqLZ5PAJFbr|`R}XfueI0SZ9IL=~FDzj;z4rW<0lo*8%7evg7O1{vP0Qc* +z3%-E5E_DykD1}6I12V`xekx!*-i>wFLKN6MSKi5-1}&;OpAKH9N^b@G(dqPdo?Sw0 +z)FG!_kh79smZK>CkZ*k0rSXc7E$y7s@B9YeZT$jb4S2F@u5Nbc0Sn!k5|5@3WWw7I +zX4;K(?5k~O@j0K$*$Vt|%;`k7?(*`QaupK1b?JoO&VDeZ&uYf1vpu=);jFLS=^Uj- +z1V7MHDBDT1pb-Z+3{7Ue&yequM#gZ6g$T0GC5AAXvvN8KsqVg`D8B)6625ODXKTz& +z3SJ~2fkcPraEqkP`sGF92PGX +z1z*z0sA`n2a0&Bo*E(bq7^cb%hs1o+dB!HU$?_yP$O7jil466OT4$|(h8(^Ij5=;9 +z_0t;C5WqGZ#+&(l3;YtOY9)-AU2JlNba>yzKeFgKXn`gmW;o-(A#1C7hk&~ST00XD +z5S|bX<6ikg-^>sSQ=^;4N_}`Kz!QS)4yoTSn7J=^ezqp@j$HtdF_p+7f0T9u4}>?M +zPP5ox^4E$kq+9x^wCwxV;mTPFs76h9iJ9S+O2|g#6Kcl$$ZigAfMD=;qhrM!mJBCMb+fQV*3;CNGWEWyg{?3S5YJl`>oohHWsar;s%B#=!9HYaB-c&lou;2V$lqZv_QJ2z_;;MTH-W=pXJ^}oy%Z+X +zX>wY5Vl?~OQLQ=q<~YNbA#Yp~np72zF_b#%*|hHq*EnUR +zGIqPKFRFB?Q10wMkdr$r%tz`WRHX^vB7=vo*QJ)eeBx=r(D7IlpM}oRMFf6OojB!d +z9MF;v+wo_6qNNFduFguOo$VyG=Hai%ZNWv#f=EYv(mU#IUiVTu&!t-a?aSY!Dbnsc +zbjE@{&sl&f?E;u7^{n7+>LhHdiXIdYbnsFB?p|6(ulGNZjJyj62;kvi`!@9X?rD*; +z)mo7Ww5B%?xfx=g6m)JE$asv*#VEG +zkgDWf;T +z>2Orh@aK4aj|TM|ev!MH36Rb#lkdT#YnR8ndRz#>7|!y|A9Z+Gl7dO=Ou$Ffo|0#k +zH|M`6l-b)GMFHb#FGX=nH^~PtbJys~UC4xoiTL~)G@2>@!H~B3xCn0}d}SB1z%KiJ +z+vo7CLyoCuduS^POAF0FAx*o%jP;!I77dywj^Azpcz%IRq +z1V({rui;nkirMz-u+<_Rn@5Hs@UJYFNM}-n;G(48IC?7p2`^<;bhPsQFd4X8mVK|Q +z?@s#r$Qt?d+tf*X2N3g+`XgrH^eIyhcSgjrFV%tp<^ftK!p3!T4)x(@2`<8dz^@STDOdFoSse&gI$A9@@k2n&|eg@TQ9} +zt94r_z6<9FzQQ$|L1M-Lp0*L$xyB<|e*DiU>)E8>A=KWv3pt_?65S*~``wa{Jq%{R +z@tycIgsn5Y#Hr}*8@P^$>tIowTF^$F;b3NBpr($O}==Uv*;lXJou*_s7m3(2JH!q)p{uHZ2-<)F`q9z{&B*rhFKtFU)Jy#8MSY49W +z+y74)`dA?C@C&^ShpBBf(-Rx`|+{{T%;jo@Yv#0bX&G!fFYaKVlW3EG^BKV5Xj&oJnfCd7 +z%v+bHBZXa%X3+_9Y!XHy5T)dQ9wpVwa)>PeW2&>*d5~$}R27>c88R@)(sRp`nzZ<| +z>137y4(HTa;#6k?l048|{#TjwML`J#LEkyF5#f<7YxnwOSra^}Lx05~`@nE2!p*H# +zo7@_vHM6U9&lj*=R+>#sEsAMSTPqm$kN>F9^W1MgT^Y);y^4e7xe_W%X}4Q?40+&% +z-~}c<;Ppw{5i`sEBR8C6S)#bpMh(jya(g$FfQ*z*T%^7RHU)UQ^aR{c=>2|9*Dcn) +z6Ulrr(0i% +zjnL#2of2*q3qgn;rb#PF!cK+IAY#kZlh@QjdH)Z$+jn@blVxA6op=3M(`Gwr{<{I4 +zYSvBJNK}nL7&)y0pOsiwpNGLv%z*Aj`oH-^i%6Xb-^P6wI9zKItcWQOz)Xr#tYP$9 +z>TbSL>lI_+tV2>-#z3RyoAdWJ@})jbI>Gpd_gn!3Z(dZhPX}@<>${b*OW^UI_L#@U(Er-h^!=;`?V(rZ6f +z?v%gPZocbVw#ajl&vBy>AzkdCoL;r{zx!@T!f+EFKr& +z29#lp58C24L5IC*SA>~pt8iPIfG3N8zK<*2VprEoo*xk*2fMdP4PvmB5q`iIs!U+U +zbwm=t1;%=toUn<68`rLD($5lTx+R!5-KN|-eu;Rj+_pc+b0D>tc70MygeVkX_3hHq +zPuD+|&T#1SX!-526P0{t%*XL5E7A80c8>{9-@WZVeBQ?7fw-oyu+bh~2VgUBxp#?v +z(Y{q7IMpPm%7B5RsyJU80)G8P;Y-1FQe5KzaCBaR&tM}kLt1$sy+c=n*_kuium9d{ +zIQFV9;x*F~8;(`(hB1vXkG}H%u%pH|sY7~U%5n7(i#rjB`j77L8uC197VY=*R1Rlb +zN9Jj;_H%akL_bSdq72O&UFU2pmY{*k{mg>_sABvX`)2i5M_|E<#q>Zd1&|qwWX&}G +z-`B61lyF~cXw!Vg^V-9He|Y)(277Y(_TgXb$Kj>ijyl$1xuQTi;Sflg2+LULy!t^b +zDAx)RFMK}IF$`_Mw^)27o$xa@Q;A21Y#>71O(erHWBd?*N*}!l!|q;9^jJdeFowYndH&`qkgMF&#!XZ^i2qFIP=Qj?TKPdC+spI2HkuS_-;e +zh0Uv3LR;L1pN^=st9TkduD-Yyuaz(mY9H>S?Amys_vBGRB6MxlZzeDJXk(fOg9S^P +z#kISM4`5KQL5d1zcSsy?j1c)Ti%&J!F-^OzAkm9=au8y +z_>#EA{x_N-9KHjY4VF?)fxgCq&Nqk4R7bsQVzbOI{6Qf +z87IY&H(GhAuoQojYdy(>qxa-b>*~R`t`1*%LZ=TF@zkO+=S$DsdcHK7`&oTLKhTnM +zC@3{v%WbXR7B}6d(r2z@&~2|Y>@3&|549|)aO=@NDy}n_gp9Nij2^l=+y*1(Js7q< +zL#P>C{lG7`6t_n(`f2RU`O=u1LLE8 +zJyxBcPkl26&2HvKxtq&XF^^nN}+$lcR(2pxi06&OmrXuUu> +zo~ZfYB~;d)u;Uz)^1h#a`Cfc_>|LGYRu&0gj|CtJUc-6+ml(205$x92F4LovNTL%j +zFe>`QLBPeFjmZ0nYt)J2b@^DfU%88ybl2T)vB}|j +zkZW7ZUJG(H^Z4#GBH;5W8#1sDsh-VM-FDpS`FF9_b6^!zGxX6O2Ft%*d^8{VtB^$7 +z5j8y$K>avek`olat(_v<<~SxTdUL@Ih>pagF@YPtceBV74gJNB*P153KmjMsf~fKcS1A2ky6KVjmD(N{3VxO!805Sx +z^Hn_w-1B~R;LRsRPYKlDxhZO#Ou0b~R5>c^Vlk>_+xe+x_eLk<#WPZcZh=gP3J>MX +z2UyNBcfhM33$;v98T0}U0OG*e(xZoO>~cDJEWASnrU}#(Eh;@^b}+l+|PWV`pZzll=yiN4{oD?=w9?_qS4}ebUZ&`x4SR6rASibwz^lS=VKI} +zS|C05+WX(wQ`p{W?(aem73hQ2e@qPRXvl(;=kW!<^IP2GBua5AXyCVl=^bK4 +zd!1ch$EE(zuE`W6=X=HW%EVc+zX=2YiW?$9i!$k*A!w5F$>pl9=oxJ-F2s1WrqmJ^ +zRGY~kSh~x0D6<)KD0>i!Il5&lPGVC`K625QUvKKPaBbYB4)%7IWw?Sl!*V({h^Xt) +z7NM%-@o@OA&iy=FiIMB5YwlW!IM+)SfUWA`*2}turTQs5*A8hD8P7h5)*uU+k@1hJ +zhcx71KO2?=R*k7E{)CHzL3?8CcRqnEmXg@GqZx5>fPU5>Ebq*w&Jq`#4`j}8|;Q> +z&ehSQUyNi7I8H(?!NINJ;L41y*5a$qG +z+q`?;@G(f%gLvN(a;}fB-qj(J#lAghOo59wStg|KLdmR@&ZQf;kblE8*@m5Uy$R~y +z?$%Fmsb>RK6g=vy9DdwJH#wc`ft;qa3nq=7l4^D`PkvXIt*(y0Yk9yK%;y1~R4n)K +ziFyjn<)$QZ>1$Iwd0UW(-Hlm(6bn*#?Ol3@ol;xKs=n*Gtcw3;gx^G +z_3IfGTlUSwBqy`_<}KpaM&y|{d>!-Nf9-+0K$~8!z&JTYCb%cCPGuBXSSvrJmzDkV +z^E;_5=^r}rvU|Bfujw`GVkkCV&|MM~3UbmXn$LQcRC8RN4`cXC*;p^#uZ-?kWonM2 +zdIKX3zQwf8)RoHMuha*BjIua-lC9VNyUhWryBhxNVO2O=>^+H3LFF@;`kEQ~I&E(z +zh13qka#J@&0_XiMy?fz&Uy>^z<2*SH@L7THC+Y-_RKG0OwiEzL6~WE{q +zl}XP +zKCvixp9d<5_s+y4_i+$dVj*SL5=4)vWA$6R?8Ofd!y&=J +zN-IDf+^UchBs}0m({@z5%^+m=jI_j<)MlYLQFwrCl?S5{k-vYBLyycD3OBhmYc!sh +z7B1q?+@02vhMEKk7AI!HoAbFDPvy|B@iHr%RX%-#&zKGka;&Ay6O{%_!P)Qf=Y|u& +z#=u6;uO0Q9pw-rI$E_FM(m#Ejh;?Pd_zC;j9M)5@ib-*G)9U03BWvD=g8LB2fr^~v +zOt-Sj$69J^;{DBu=$nu{Eq(+;7bM_(uEE(u#i(rSBXhXP*;hN=(zOr*cVnzQcCF97YBx)5o7*(G)g7=Y3;dvn8JdO6i)Lo +z%MRMU+x3v$)(PTWeUe&kiC=vvKHbGdx?Cd-GrN)wv2Eh7hQV9hkm-i7mfW@NfH3c- +z(4cu>Z`Buw=Sjr=_mxdWhqA2%V0Ame;j)#`xe+Wv=!x&_M!#7(8#Ym2(y>nD#$0qM +zXvE#--M#9F>GPT92cR6xB$1x$SrS%jOrZJ`EQ@rQ`XMMbyNGhiyvt{c64|h1%k%J+R8q;LQREkfr1sXX4N#AH{oa_Nu?c*C|>^g7%WHj&nH%oLX_j +zPQW +z66s5N_1{PL$=JJlNKEK=bj&{Aha?8%`;`F$4dU}&evV+HO_F<902r!xO3yMghe +za^A;O?DW{mY4Q{ODzJ$;5{1S3?z))S1we`1ZP)y?NA9vRB(E=ouUsp4y=vnSkT!qZ +zbp&{r=4t~RywtCcc?T+cYWi%3?p2Ydp0^`*j2$?SJfZ;ur?#a;EJPd|wN +zDKg%9s%Y~vSW}UED!l01ZW^Y)|BIWmA;?gwX6+GUO2$L3km*Y((_pFd2Y&m-LV)|c +zgh27HDjWYg^oe~;^NmOFPa9~(z9V>P641nPb($_tL2>ZvirPZoMAh*0Q(i63BbfyE +z4XJkF**u@l%J10%(M0jSX#x$rc%AgOqsI~l;sf`;S(;a^^!a4T=9AtER=cniY@)O77D +zqUkbeQ=jY+qnfe~ZD@Dba(z+>sS_eg6p|LM^y(dInd2adY;klZ5q)R(801&DuIon< +zE5zH%e%bo(vII-vym+gn9mnl^d7dcL2|tg}(bPjHqUv&u=Pz-IKcV^!2(9B{9#qE& +z%XV{AjjtxBS>8WCGmSTtFRwMX+OARD3f>+{$uX*>!M64=t3L4s-Ko$+f5B{Zu!^%H +zOVPf9(!)}MFJ^>bg)d#9xl)Iu7yD++u-87T-sRaTY*JtF423?TeO7&gvw+YmEb8-NN0@eEud%~E$%ei{+B#s#GUE@%FinI`fU7{{& +z11BNROWZRD+@H}sKwxwl3a+8^Tn;4O)RFmfhBNgaY9L1?f=w~hZt|(AGrJ7$RNMx3 +zy$z5+-tM)MUKuWdta6O(T$mj|%C!2?OXZc1oPrnH-)A*(j{&hp@!ud(yPqBU=Eu>U +zfdj48-?akIB|+cwakDqmOq8v6i}Bw#f3p#gd#MdGIZr#URjisl^Mnp&SQ7j*nxh%! +znfK2EVS-vst}FIyIurUC61T*kIBqK&lr+eBc+Q$`3#gMJ%EDOZ0?}{m%0A!k)$mhBIfUK4W8yUS{`?+!mK2FW7 +z%9kf87Yfh{JOOkMNW8m$*Lv;{t1i(`?Kk2@-E8|KQWcflLWflTs*&p{P-{18Mpj#myLelLP +zNXq|_H?IzawI>4zqN~p7D&V<+Tg@G)5b<1-dj569es_DX17OxKvZ}uc=#dfJ&DtUp +zvVhv3N3t?pnvo#vcN2^MKMMdDvI7A6?FjyA#y<;4U%_?zlVRBQSfPGbM<3aSBO~zF +zh@wt9bl%hbNCkt{w)xvb4K#Nmie4d3n>T=J;?PwF*)HhKczJ*3z8k0r#N}(mXxzFy +zt8ffBf0`nMG&!#mCwVsGXLRc%RXI+PqnO3oeDMZyXEq3_>!x8cieqV^7+*Nq%_sY#dVP1GGzxKO+xWWXjY>WLjkv#6%DA|FHk7eJg% +zrq!y8!@8tSO9IzaHb49qJzamv`b)S*RE+CV=+2~+#N5lM%>z=y+1_LWd~bBAsu=#@ +zWnvZVozg(xLe`F09`^GHOAU3^=Re9ZKb&R_mz~Jr+2`fzuGn3QFy;{49C;586WHeX +zd;4P=#}?0TTIie=-_3F>A(6HbzeTbo)q{>QzZi@{2_T~=XpOsE#ODx6vMyeHS- +zZ$XOy`VZfzydp*zgf962|B_d(;fKt4L!;&OjN!0xyvEapg2m0euir<$_H2nv=Y@Vw +z(0>QMQ&f+P!89R7VGF9QBf`7P?q^e(+Su@t#W!5nxTNx`C{t{QXr0c~Z5U~f;%J76 +zpji{!aTc_t!3EjBfbNDoG3}RRI)_?ox9}c+_vq^%jP%5+Sv)EvYqrEyV`kkM$aZ;C +zjTI59M|=>Y9_q_;TE!EwqpbSkjn=tq*wqc-5P$Z(hYm-K}Q$ +z&Wn+f|F?JkmaQ%&GEYCOh1^{|2P!Gm_0dvMr9GW3aNQLUQa<*9BEp*jzOV3n#yarl +zdADYSuP(!cDESo#_Iwi8g~DhqT(;ULndRH!gce$a5l*Vl{GO=YG&${U9~Zp?mFpHK +zb*5aWMmY}Pn^ef@Jy+=CUq8Qv$@6*PEK*hu=lRBR>itvOtkXySf{$u5<;(_WLWBaY +zop<;hhf=D|`*MjP>@Nlxo&MN+V0SqC2B#0PN}`gdCXL@8G(|FHg+5i*r6P3xHpqAW +z!pOMf#bB{r@?(!g-(6dAp(ugZqVP!3W>83#^+9*W35+R7$90J)YY}lUOxey#pF-!J +zKLqy|U^}0OYT}&2^OirE +z@c&&Mx@fFfbh{!3esQ?p)i|g&@Y}Nh;O0#H +ze2;j_%BXlg3hU(j9InbgB9wcH@V>|LQw~V8{Ukq;2g#5qb*pE5s)|>wnc49pNzlH|>=icW+o%*c +z)#dZSe%=e|y!%`7l&VdBGxB!4I~%iO)(5*;RMkc}86e}N +zu(}0jK?MH%Wq5{T>p0;7R9|xW;O8!5MWNv4z_9mC-x)87`pH?0RT=)AS^87r)G-h) +zZHf`7wI`hXE+MyuPKLd0F?C(%qxhBeYQes4n|md8a^9=uRk@Cwr&>ce&H9R}j&+VD>;RvnU0 +z`aMZUQTf2O4_iMRweVOYUFwTnXU~0UD@8j|_v%mj4%eQ)LAj6T-JzGVTuVdzFWEi> +zaef7t5Q8^>f%@e9!zA;F@V_=;SYcv0(%9c|CF)6mDST+zx}TbBCh(wM@2n!Abc{LQI~SiBjGY? +zQrXo9X7qpSJ9|w${z3}DSyi@2IDW?N!C6Fw%swyN^1*d=sZ|Q*u1DI453ihe_yl9Y +zTig?I_vC`iZt_~;jzm#(gXz0gqo$Niein14LQ-~vB;sg?ZiT{xPp5k$T2Xr=m34t{ +zg#?63>=Hq*AwFxU2+`+k_N3T$&i9AoM$^<4SE}?Cw~Zf%Nz`stkqBg#2mMi3R@CaH +zlZXc1>}p90#ycCu+dzQ|TN@aca3yM`*%4%L5E9vV^Z)MtUdU&fI_E#gxDt}OUP^r| +z50LHBE(^J-*79aHaVMESixD!o7=$L){bd6W;t1vV%NN5c1cS)D9f*`>9yc8>#w7U# +z9EGKQjm0W{U#k`KM_W>_svK^q_;*3%kt_kS&cT7oNH^#J8oh=_3tt%Jm5)xQQBd6x +z1@R#0H_!Arvyq_bqUce|fgFT_}Lv +z#ISXq5DegpEbBQ&G%gp>&K6M!4p5&hg}|$|q?hb_I4cwRTo%xrI-OjFaAKz%xIy&R +zY8GtTT^`pw-TaZWvDy#XjbdRxmN0(rjmP5|J_5c$KyWPf>nUWRUTY5CARQ*3yu*dg1H-eLP*x-Fx8rf^DA7>nCCesNR-g +zX-Od%A{?~)TL-$=#~lo*tvKrSaeLH$yHvj48KLRmbo}9qTqGhwikq1}F +zaxF6WaP5B5Ax8ee+g#Yv+*!@=ZmY@dmZLOk(kG{#bLp2f?rP|yv3c9z!1#H&x1~k; +z;o09Ba{{oO1QTMC6Uoe+O#lMKiiF!PB07NmR!~Dm`+gm{#nQbaaew~o3b1|Zm;R?ld7f2&L{>vxYbxxNg*u4#S5tyy;)+(CMT-D5m+J)F +z{Lx8T72!8#;({q7R7#N61UvTM~CLaYRacZF=6ew12( +zmmuztIT_D9kgx0@`eGCH-*)*vK-Vz!EzJ^q0Hzl0|B!lSYPvyiY=(q!Hby@-i69X; +zkU(;V-y!vJ1N?I<%3fE(nop}$tAUs4)}_dX%k11N&O%)bh#0(mtRu37lL@@7M$KWn +z$rt<+Ld3R4>MKcD4QpYefqi^xx1k#>(&Mu4{fisH0pq+*odih*EA??zbie`h{la@`TY=yniL8#n- +ztwv8&fnsmSyo>Hm_IdEH)#@cF+jH?F2PZy3s50DSZ%vy>YCPl7_SM&RtG>UsO6EsP +zRgl|t!F@1rg?*B`1t5a(LuYHm=p1%~YGHP=e|et!2hTU*-4$#SokeVzz9j&$fa +zdUJHU>o&lCod?5U4o30`*)aEFlPR;N%udPl +zMb^E^TupW2xl7xlb&x#!JgSON``7o6&v|KfjfN_IaV9G39obkz&`}th$Im-bs(0M9OYB9Y|$5p&hTtHc;D_)Y%WgCl%4)XfEHzJjxg@x&8l3W +zL?x7&+N!YnL^VdK1~PMoNvKaM+8MuKEqfmh0(qDxJ +z%DAPUpks5`-0V31oMLjF)^eG<Qske-_vD8F=O&b7%Qfc3mP;!Z7O6OCU +zqH`=(1{kK}SUq3egj|fPy-Z0`N?!9OdLhB^6}di5tHQIHMuPvDE*}^uC +zPRnfV0)Y6HmPO&2)Uf&*3}v(SD(ii~wp0$?Sqs+T@@sVUKw`%Cqh?Bz0t=Xvx3!ZG +zSA$PW8zMO5!&l|3oEL&f{enXgzh}`xgZEa)CTC@N1XBsk&OjlMwx&06(EPzXfPe7f +zcZ54Gp +zYm4*zxRzlzY?K3hzH|)Px147-Q4iUSE`bvZ+hF#<_Eq1jp&HNnsjOfmRmKFhRA);i +z_YX?n`-<+C>GBYQ?7q1w2dcCqptKaNsbyY;@V}g!jfu{D7$Ib1@EVZSE~_w6Ka=`| +zEz8MQfY``Op%GPe^R1lyj;b0yhb{=Z+e;^MZdznr80LAM<$gz#tsMKC`rm +zo6Y8{Fv0`Ib*}qwP##7=N;-JfDF4 +z2ViKq*E1dl;B4Kdd)P(+EdgQtjVkH-WBFKFb%jWq-ep$2=9L3%m#(M(vtRXOK{PEN +zF1p;y1dgt94&^CWhrUXN8m>N)d!&?>W}f%!Z-tOUxrG26@!1*blfgD1dYN9E!!Lu! +zK@p3(|47l&5$UCk+T$>g!iz>Z8JrmHk6)$jBS&?biVk`Gw9o3WY;P6nfzIyLjv +zJ57U*E##lSrLQRWho&#FDcFyYX7LIe-#?i@cOLw3*h~GWJuwR2%r2jBV>^*o8*!C> +z@9hK;WIaKRRInUPLX`pXlEyZmjggLyxkNmVPT-^mCfJMFqxi%bI_I5PDyTJCec9`w +zByJ*fyAGn;n>@gK$t_nSJ$IMxR*nxNRHtVSYI|e)_b9YJ|3m;PE;BmO(l2gDw2n5# +zwSJQ$8yoC2xpLsLT1Dwk*01I~Y42cj>-_1{r#FY*=H2o=zNX6;B0%)vhvO`fl$?e3 +z{uXB*Q*sl(;*UmoOj9xFFL7qQpE{3Shja=<=34CK2L_ebl}C4a4t@kJxvd_Do6|pQ +z%Gl=lIu)E7us!UO8*-eqsr|q&o@+4J;x@2#`rPrkXk@e|_}>`h_e#}h0H&W&KMj6{ +zXNruFo=}pL=PReXkaLIesPn~YG*bgV4)%H*w{GgX)S2}Pg){~!?GJqnl-K=58Sr92 +zQvBudq|tn}^moe2*)!EAH#^AyB)%&!r@U$LBGB}6OT3JnG3%n!ociqowF)@qK +z@N@Xkf)~DUQ`~lxQbKqvZFf8ELfW0aK-W^1?tp72J_OV%<<|(=18!+bGSZTFGHmw60N%=lde0@}#W>+fT1LF#SRZ*x +z?VD;Q2lo2yjuBTM_052;(M<~)k4bN}TlyHRjw;XKGK6s}+JDS_Mp>h<;Hn+^L*C8D +zaT2HBUyW&yjh +z3*HJLzq90m^2F0oTZPfKR4T+psjbf{I&Br5)Z~!qZ)|SXkb9FVB(f=A>m}-G8Q-%f +z`IHhz1>8@=YGavSK-z;FP+d-=Q2M%`yJN=G@^_)O5e49kpDPN*%*`-0)n4|7d(Jb0An8bUX6UO9h +z*^L&-P(0c*OIn#i#KSQcjndOT86n9^?tgnFRIOsHis=5_vm0DYeGKTLR!RwUSXe?x +zfYY>TqE`L@icfSCtp@9wcnWc8xj%dyXZG#gJ4+nHZwkp@IT+4z&sWS1 +zh7tXB^v3f3E!&Xh#^mGI(zn)QFQ#RvpBX%o$ln^EasH4j^vB(ZL~8i3l)|8-3)eX@ +z`d4J}yxnFfp>=m8Hbko4=bov;T4r%(3>3F>%}Ds?FGVS`3qteyF05RWsc-jnyobP~LV7 +zwecAT(W+kSrA_H0Ff{j@5Hi-})?8gw3QD7MzKENt=-CB(li7KM10^yy>(cz5Va@X0 +z{Q^Llns2U`bognl$0vwAu966wd*$40*5pW +zt$$4e-SRP(n_Ob*#p9}2s>*12NCMqH@UCu#ek9Rczde;YUR3h-s80WIv}(QRzJx)g +z4X~1Ky6oRL_Mw3MX>YRfZrb-Wr`X0~kBfKTDhPMI_npgglRCtPHzyx0{pJ-hyvW9P +z=1=LjR-9O6zx+i*W`|ALN6qOj4Ba3?JWwik^XFFk3*-O>N3Uq9t9|Y#Puf_d6Yh#b +z$T*i+u#Q%x#LkjRZ=N$A-w;-#Q=1bhXqYmy-Z`u3{rywK1&_%%& +zsXXOoEbkSoxtXstxfk=ih6alL6TGJ*Jn*y +znX!!8rivVn^eMn@rL%Yg&I~@9dn|8{Xhy5q{=Iq~HqOx_)n2W5*%s^UHJq?#6w)M* +zQxVm^bF`F +z9})@q&2n*S;V +zn;P->$-(nUa8#-jAKUKbAD&A6Ehm2)KZW`@x{^c78{bC#ogCHto%0}p;jju;%bnTG +z8Sezt((8l6D5XV;knmjrQ@9iQqp>R!Ty?1~@r%7;k=AUn(X0oMTIVACi9(st2qO`e +zsDr=!C&hmFM;#~xgTUPHSHm=afFU~uL3%+mhmG-U)!UB6q7UMOnyZ6tT<)@0OP%NH +z+h;DSVG#}D;|E=^_l5O#UytG>XS-_15ARAa_RRUsjV;H3hIS(Xs4uK0;@wl#Qf}6UWqh`(+gG^nISqt7> +z<}>m}+yFUI@df7+KPJ*k8z{33^wl%$@lK&e;VJ!2L!pyVKG$wr=>7+*399OjQyAv! +z3urddpJP1RJG(*#>#v +zIeF6%Fxe@7xg4*>IvI?1h0)`7*51Fq8}Efkd?-5rg^O@1aV*z7HS89`{$Fb#+Rve; +zQ#^Ix6C1Gq>EE+&!L9Un=bSQS5IOFhPm>^@<}-dC5Y}q)1A%Pz +zb6FX0iJwa03qj{88o5)!yqt46YZ|GNIrF+T@qnC3Z=n)@V~?2Eza@-$(3m_O=qXtd +zapjQtg7at@Lu4(`vK5v?@~&BUB|^#=NM62P1Mdjro<>KyH5RhBe$l=+wV@-6y1X^q +z+FSthHG@wCZ>%0L87npl3vUnQt~kxjqa%FfDqd?-o<;loqOdNUAa+Urj-0kXHu3Ji +zZk<)bTLz*Zar1ES=_`NZG-aaJsnP7jMhkqhA=p|X`1MMO7Z!VvskJ0ev8wj*mP&

0vl(8Ke8WPm8(bCyFcTd;XV_#^zPFn{MAP&n~e+z6!9ydOS{$PGDLE(Ti +z`MDAWp$ebj#+`{+Ehy${M56cp>y9Z6cdzvO=#JlBke62O7_wW?uU>Sya1`qN^!ff> +zV%|9@ncyFRpwgZz5eSlH?Ak_sx3UCTl=xT4a$q+2P==d${Hx=S9pdzN;hsMmfzybs +zGki>;!XZIh=svtk^DM9hf^><8yxbr_O>2enBw<5fUXj+{)nbbh!;mUA1)<5AgjEjr +zMwpTq_Y8k_XG8If__==Ln@6p$FzbV?&pkQz(&EmMXV+@yoAtLek`5g8nmNiR9gs+P +zbNP`J`sL^82M*I3JWGY3{#7SeSX$O)$0ODa@d3>T_Da21kjsVT8Q_X>m+yGxo!OA? +z6&|2GOFvrX*N#)YrK}?UcYi^?9jG(&zrvm31;xLl?Xug<`DOLp|MLm&y0ji^ecmCQ +zdi!-imBRZ%-f8RGMh7Lc-OZuCqhf*@iwC3N%*3Ts$Dfu34yA0)mW>USFSmw;+{@}NO`+1gb)uryVKfG`#KpOdw2 +z&I?}wy<{xUnHa*;#W<9Clg)5qIG~%zwc+<@bis_+qxE^ta**W*lv37(k@;$InEqL^ +z4N49M-!s8!Tl19ip9Fab$3B+GW-WHs41c~jy>r*jAncC)imI&@(>+cbrd@FoM~|VA +z9^bEKofO}pp`gazal<)8g|TDs&6pi~grsC^B`4IuR-@oXq0l$L?ppS|_nC3$o2BKi +z+jw|;0&`d0jRz3ZAeNNo*qWD>myI!Mk@fhNiGab-dHNu+n=Xs%pA9fW +z|K|l_*p|pQul{46Re(_nS%YZxIv0#dK6A#9S$9@XILd`%hxYl +zNMV76g)PETYe~iH%%4Mc&*t_`n+R9|29m0G3M9Dg%E(IpypsG_SAFiI9dT<`pIr3g +z-6eauQ&*(+nm#fn4^$28*~vrKJWM4rhuZHM(gak?c5i*dh=h$pn<^6zzA?+z^jdyI_#q$^OrPQD3FmxoIe +zo71N4*rR7)Tma{z+$L6B?0+bM-O?AuRB3e~3qSZDe +zCzTie>Im((&gUg1pp??m$;xPDJQc$W5Y#&>PqJ9CgsPbOtcrE78D2V;1$ie(Qnn4u +zhd`Qc+X`?N5S`|jz|%F10|sS0h>#_|aA@^soe#!Q +zZ?(RPx7bJxHBm3Mr&D6umufaGXd#<(;@idjAGd@v3&L*o+|;#`HY=7SGvF^JwbRvx +z7fusG-ZD*B?odAeZT3u34pcGB6lDFIcRhc}mp1MieksM*CpHvG55Y7GcXmthCTa!z +zWyYOR&um2CKK0>#3*MpphK~&N1G+^G9TlwkOw=C3rYNZ0u(SHevprhQSfM^RIHG6A +z=-vF1!x?ynpzOs9Z3`V!n%&h +z@Hr`uqxNT?3+H(}_nQ*rqh8uN1Sifd6ea4frpArmlIPwl6SX*b>aw6cm`qx~JBv8! +zk@tmhi)m4ZocqMM<>@Tf8P`i(z +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 +zCzQm^W)XwV)yyhmoSRq& +z8!4Ho-W!R`1o!`be0T8g)kul6#@O5FR!mS=$U*!D49wLJycU18eEn3Tq2I<0y||5+ +z%fHnA_uD`5<8si{9^?(A4p~pd?yH;X^He_dzpSu-DQrk%U|Mz3>=U6}bO@IFn;@&*2sq5VrcB`fst;;CysIFB?MNJ{Xv +zDz?f?^zat0KjI)h*HslUJLE2@Tv;KD4?S6Cb=oM-#iWvRvaJLBo`jv1xfDNnOK#mK21ZuqgiUYL!{*nnt{S@`J*0T?>%+D1 +zl7fKNuTj3vneHXM6im`OVHgPp5j>>7n1_flviSWd`>;WT=JWJ*7N*|Shf1QB1nf|) +z#H<(!y+|&cI9M^8p202*3`pB=G#1z_sZ-2Al?e2mwu6yD=bI4KzrOkyZmBtYFD}xe +zyk_-z3rh3}zo{4drb>Fz=ye~*Ny^;90}Ne$yO*nrwl{fkg_wS?_2l5eQMQVh5zLRg +z8KE+jH>-$TVuaEa`>PuXB8d5n8!KE{VI5KXYO#E&DC97ByF4>*O4bzueewu(ww%-b +z)on+R!bS5p@T^9(&w)seUJVYxgS$LthU8m)Yo9~swrKx2zSNwOJ$dGp!o%F|6XOtfx;i^;uf`r6EYD0838|px$yPv?@a(*q!S05q0OqddQ!>33twM7SH`*o#vjLMUU*fN_S*?t%w +zjad9DuH|U2&U~`5E-8tAFy5ZJ`xO>9-@Irix_T}ZJwZB{7%etewuAQWsO^O? +zFnr{XN;Fz|MmAoGI@( +z?0NlTtu`VukW}L(=}(hV_kkCaUT!<%wb6Bddhe}Prq`Lq2TwlMex_*p>BsesMTGjk +z#_T2cl03;YQiP&V-^9zJbQYh1pKj?$Jx7Hil<67UIV)-K9yVlewDEuy*EV2U%5AOI +zr*UhA{lU}2Jds&f$-KD61J#C!rdg5tbLetLztaQKnwK^OGM`Yytz^M#!`fwb8q#BF +zLu|8}dzIjlal{Z0CU9PaS!BiyT2xEzliVSM67B3O+6{@&XJf%9*TJ)qBrQA}y4Y)ygH$ +z`o~{TUx8=bSvWXz{MGFv`(2wW-%9Lwzbgix8t5LA+Lk{=7UJcPT}jhC6t?KOoYJq^ +zPJYgW6vrG$c%clsV+C1-@vq2}pa$`p*Xfp3#8l$S!Heo<$U}eB`G!a{KR@_kf}m(_ +zvcZ<2^@p<#Nofg+2hc)arl{c$5xhUodZ8JM&X2hVty`zH;V72%gqL@(S+R*I%I9BD +zUpf}K0(rVPis@T>RF??@3VH?@4ns3#rwpDs8@0My3p&W5Xe-gGczsZk}&(# +z0RB)jQ+&~KK9JH;bZekI1Tqp9%&oQyDFNnHQK2!1jpE4SS*9KMpLLG9a?&Z5l;+1a +z)N`Ki&NjZ4yqh%%BKtzTu<{H6 +znh~8FES-fSRCG2f=)o)|;2tTjUHD8&EgIyEeDw@K_F^N&Fo$(=$J7YOueJ;=Da&a$3mN~K3yr@Q!vfn&hI^9kzv28K|E+-I;+J97!)F}uv~@yz&!3{GGRQ$cDrYOHIs4m{HjFGjvRhFzoRVi$ +zL_LsYMBjAq<4-;4ZzqBs0;!b{anpLEraaf15> +zr)*6_7gBWboUE8~i2BJaLp4&!u*XY#QfO=LDX)Y&<|SQhTy<-CUnXfsSTv23_G)Z- +z7dF_VTvdmbcLbd^am8Mp*;W#~dnL78TK+u2Ak&3nUfhGUm@Q?OSxn)KMy?k_N8AV$ +zwvNn6jHhV}bNUS&P7FNe=+9)O=128}guJ%7O&sdnd_9yM79YaIMt(c>#7cSYk=iL{%&Zw!x;34MU1R%M +z65N_4?YK7@=htoh!u3M+bZP-4gNCK0GKh +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 +z*g`jEiuUVZrKPb)A)fizH3&}EC(eNak +zJOgz?l&8`azKz^CTkHa558a4RjMEWv|5azRXNZC`sU$ytooY-~4pSgIi?J95=~}8J +zQO8My-?We^g1xoyjl=Yr5T5+82ke7krXkBSBI@TFQa^i449-1rw{-7rR^Ny!r8jat +zb*m${DM=KGP{3M+&M7Rzhgw}mou(G8F4g|I`e|Fh%LGqcL~OvXGECvHtpBE2M^<8c +z4|6Q!fgx{mg57zX)E6TdYaX6?eBoBodgkw^4f%?Jty_k2lm!40odSS5zrW*wTb~U- +zR+QFy294duRyikynlq{4q*cW|)TXBg8u}^?^Z6bQ2U|C<1Bp0ZupQH_tsu6L)PIOj +zFT}IossyR=FdyQ$aEw9p_MoSZ($(16Ekyuaz*QvvP>#AEppWWDLSPAt=g3~9c!s)< +zp}b&Q7>(^Y8rANhMNyxd8Dk~FpV6D^U}Yaz +z^=}O@J=$!! +zAW#pR`j)JYEvXk`iU%}P|J+nNZ1%7nDNiV41Yc2Y^+XB87F_I4RscvR`%eS~u#^qQ +z=9`Y<#$uZE7TVMMZ`z|hO~oG6M{shb-9$w$)>@gmhB=W}YmAa5QPwcXM%d9+YrgIC +z-m@rb(|ybUiyA%w7*(hf`y+WLLKdVeO&MrKv5kO6PkB#ftLVhh5My~(@9Bfw+3FP4 +zR4XYLZzfcRRzCDwNzkh4TAdc)F~wamQzLz%S#lX}N-b$gSj(5(-@{j9mIRrH?Nk${ZIu3VT2GmG@SqkiYlM2-U^>{Kokh +z>ib)msp_Qn$H7a&YO=CC3nQ&Kw>ikOuZW*vgCD}JRPkt!UL|GJ)a}g=#dx-gM8~`H +zuM`|*^a#11Z#J+@8PY=$ELrKGMKb-)+?Fbind6<9N{mYywNsMIJKNbQnJ{SgzO3lR +zw1r*9&L>apH^%u`PFWbkrN{W2w;;4gQA>Y`-TO<&uYOZ{LlfqDaaw^ILVf%@t^QW6 +z_L%wALT}t!)FpkCF-$$irH8QqPjz8;s)sbaF$@4yfpdHMB7~)k&tc@!nv<(>zuO0p +z>w1x>3dDRIvE?>tO<;pgqiYEb@%5V??THVjzdRbdK>;)$E7D5!dT$!jVMhN-$|R>z +z`C+xqk^vUdas~uPS8Hu0O)k9^olOC80bl{c2X}P~v2mP|n%b*4*^r2=%{@l>SR+A% +za_^utgtEc +zbVSxN>FjDUY_w+?vx|@5SxZ^4Mp&Ghg6GA0!^?sI5Te;bS(y1i-A4UPX=jI-lm+ly +z%vfu4_V-A{f;X4lHGTugXhti3g60rmpX#Bp6%AhJ`D>f@~V`ijET=!Y^&Qt#Rt`;w4 +zOg=HPcS3AJ%U0YWOf7tqEh$SPigqH#vdzX1D{>{k7n=Z<2!ts*Fl+I<;98W=7K^Se +zE9iaveX;ebZTNT15^H5^GqB8r`CJ6=K?d(2Y#Ip%hTDRjm7#hEBFusC9wPQh5;3&b +z+Cmu%{D*O@I~2+Ckaee`b4VGA;f_`C#30?F?^c%+bVv^gn2wlUE$N?!*@~Ef=6lZX +zZ7iAAY>-0w%i$@NHOI5rU{WuWpCvr3`txunlqD)2Po7^(m3GR`NbnQ$1{^IV2d(NM +zX3{ppO|^P+Ru7{lu*Z5^kPJ1}Cd}MzmY&4V2ZB}S+!~HRA6}9~;Ag2O#-Aw4N_D|R +z!d}vcG5_qKw^bR92+SzFqa8o0xyX9u=8+3jHF<)Vk^Ldb6+RrxmaG}{a6#@;U7%|< +z8WrZPhq65>mnq-R4fH1D!X$>fzg4WHgwhf7w6er##WnvyGh*oaFay +zm60%Vb;nm)>-LQ-!BlRo0$L8^<5p$Ewx*R$Pvs62`iR@rAAVSBcs=Dq7MS?pM(h9l +zM)a73_$JI)*<=Aja;sH_mrTtnFBg|(Iw%Z( +zI*@*h7_kwgdo5Z2vuNd;xPa%-PqQcbqNfl&c+CSvaeIxSELFj^!CU^9Rn|(=Q+l4C +z2Jre(tb9@)I#aRu#HyfS29(+lC#JV-@_~&@4vHs1~ +z-~hUGTewX(4LS*B`WV(7iCTL8My0*)3f~pF=^6?_%V2xnV%08pb4)p^y=Li{jsxOR +z*U6iB{Wr!*zzHREy$n}1tdZ4nz#o}03&Vs8ZitFV4*Ely4>fm3 +z2Eg5`#(yFMEd4a}eAZIo>g%^ddu%zsaO$dbUV*JCYmnIeN->RLyGGQn6QHB^1^)V2 +zo4+DSqao-jYbndw2)EP!0ELaR0k?viJ2hr1j5dDWQj#i&(85iJ5O31uO+vT_cV4`S +z6gHaYAvVL*qTRUTLPI=(_g}hXIN&&rQ?Jc}Fnm)Qts?XD?;nL~mCs)vU7c4GA7tC>;9*hepAM5iB)I{vY|K6ozOq3b5s(y_;-|YSTQb +zWLISPOsTJo_W*@?@q(_=^Y`bH`J5ubyBi-NN8~t$5h{A8yj7f_%1lrHQ-B1<;(A^D +zt^gj4GoQ4Lk}2NKLe^laK$UthURgTj+I}m*mceoNQJ)e8`olq!!7@#2z*m^!C%qzW +z1j?VcUQFeNlPnTj}N5T;9WxS`usC30t@}uX6rTPt`W*W1?c4UJdV? +zf=wQYi26trZ8OU6ollY5wsJ#T_>?}P^=ouZ{ZG*;6NI^8dTEj=(rt(R-uC8H+ +zoPS%GLh5M*CQ{AP7_QE7q8ao+Fp#V@5V^E=&iSU`(+lZOtxUg$0T=pr725(Q_CM+U +z)&O*6eG-P-aJD4YIyBIaeC)k5Z#6qa7U!B6I$x|SwLO9v*LqZZNi$}qV6Oh?dwNbZ +zy?n>60Cj7rS6%ksRc!ms@%UIR;UeZ7;Lx7!C->f=xrN*Lx+h}WkhsLP!4Y8o$j^|zAuTq$ZG035It`L;D+U~@g#z3q9PoG&!A7_&f(6?lFHyD +zv&d>S+sWxDcdEq40^J2;Y5)qg=8q+K)3k^(U)gLdapGx6;esVnTceTUnYsdJB9dq& +z?h2k!J(%+P9>0{U?I^=?qD~k^;Rry7w)YylB$hS>2L24^kH|Z7Wft@^g+ea&#k(!_ +zxMWd`vb=H@s=5;A6AGZm9^Bt8Xho{EFD49*&(}Q#S04Hy3O!SoAx;yCN@n9?^NqTADf|;A!}CHuSC*HXe0{XfR(FFZJ#v-6waWyR;bEjtg6q_J|vDv +zY+?%UP==vGGF0mE!e)B%h02#GIYAAK6s#uDy~_H`t`W6q-*jdWX|AUq#-h?P5RAD5mdE=d{x)4}m;Rl;{%FR}37} +zAAy4GV^0`Iq^f3pKt}D4Quc^tRj1wl9(Z+nv>T>|wNG%IF>O|-a_LPj$&N_U!(M_# +zeAhGu7`M3xfS7-|)KgrsQ1FG1DfqD;;+)e+qt4{T-+gs=CU+$#1U`jg!^Ep|hK8vT +z3N4FHCPt}fsTAN5N(N1OGes+d{qmpBXzfg$W0-w8NEknx?j7MwXG+UV&n?}WPAG1k +zVsHRO-l#Dn8b1(fU*S)# +zbhLtnZ7*kG+`}(N(WF<*GpA<~(>uIrysGJ5nYw(-kNw-5Tf7-sA}zHE`KN)L5o*k!$sf7G4@S9255>t6 +zZhiQsY=IPW`Cj@xt;uS2iKJdi)zWmhZu-57D%m~cw!W}MhwgdyOLdl9={y@4Y5-(1 +zJiA|jN=C6EcBl&7{JwyzLWF&GkfrZOArWS>-m_T-$bbI6O%@9_*}Eg^pj8OFN7OvK +zJ2nDxgB4$#_M(Aa_6G +zXo`kg#_!~7y?-0~+#Rs%a3g#()Cme0Zetmy`Oxr9t6ok +zypI<%;8c*q3%43GDrDvsP@icPQ7oc3f-oAwibrZyUHj$Vpq1+KrJ@8CtXkqCYsqz{ +zJ(62N-AsyuqDR>oRGZVtk62InZ&sNH+Dq*pL@qk}z4n>AzfaYb2pgFPpSc;dqkR<* +z%ctJt73Dodq>MlG%axu;AeQuQ6{~fZ%xi98oCv;h5gzKHDC>}Re@ +zHNsm!dD$AqjQk9b>iK^Fei&unJgYN|narh99mh?FuB$bXBq93s(%fcmUxilza*#As +zXsBK5L52E>%KoLb@q0t9qvwln{Cs&Q6u<!N#2MJa +z8#x9*m3P;sxJIqNGgRyE42rf%HzCv-L`hohuqj;n2j+o$;PzO;bZ&;KjZU8tl6kFK +zjqx+!{+daNpisXX5>1ivxET^#S+^tOC=i@iOq&1o=zLe04BSWxBjh59c)i+dLTLmv +z_({yptkd{iP{a%xxSiBy1*L3tlkLyEwmxs{SU2jRty&!D>}ET^D*$B+WRsS0lWKuv +zU@H(vf|j&4OS+z@+M54eOR%SnI0A2SG~)bIr-s3xWyeA{*q~e=?%_1C`SD|48*Cm0 +zY#0jL&@6K#KponbqeQfyz7?B_wK+}Y9UdOd%@_B=3RAawzJfRLMJc2j{o1R-Ar_G+ +z36OD-3fHP?Xn51E)A#uCHZ|=}FAQ1z@kd+8&GJIy?z`=|t2B9C!^wHQtt5b#h~VVpu7#5c +z`+*=8yaYDF5Y~TuUuLgm6Z^&Ch4SKDH>KNY?HJ1*Vm_j^B9Gsr_EtsDKg_`!X1;0) +z-=lLBMwxSoP`;06aXS=tvI8}M4s)BpgqFI9Q-3)FYlbJf +z?(zt%%6YTB`l^dJw$N^BKIKGr^N*+w{MR0PtN;9-?2^(pX_THrI81&5eOGfa)HcvA +zbhNAkTW*;80cBzfi^rNlKVTYX62~6R)ca&eeckt^P_87xH%hOmqUM@sb!{oqctW13 +zA^C|))n-aV-XrH;b^51G{C2jEZ<=XKG#6(HiUyJGZ?2+=k*bTGaH==(JGz;6O;c{4 +z5&;bJ~6(Tz<*9|@pwh>ZBfoGp +zEW^gH$R?z8TB#|uND!OJ_|c*@OgmE=s5`0MZznZL@U~R5qLI58&vZwT?UbSalCJuREKy(U-ehOg3eyx1q;qih4BGt>px +zvA5%<70;%;t#bMK{PZ+Rna5aO2ih0cOYZL(k#OV3Qgqy1;F%~RUhO-@_ii*1^5UDzK-(pj7aE$6odf5Fy~z1-`{+*D*H +zbTWb=4BH+2532qS{|R_W^~l_P{e>cXIGfc4`YLIm=V!(bm@vvdiX*K_pI2Yc*DO+e +zajqRhM&!+m9guO1_+~C50xD;U&WjFAelZgz8fB;@ +zXQv#xzFZnfS{mx<4Uxmf^g%+vC=2(4nBTY?PVF!H)Aig`xD+{TmI@D4-DD*fPzg=v +zV!s&C(8v{M$cyU;2YGtmoeIoVsZ~Tt=*w_$gqivvJxM+xUz4z~E2$F~FaX|l**Kko +z_#>a4GW59?E3{%&>!+J8NkcAkGsh$pg?RjlwdTGK8xdrTbC3#D?L2mXu4vvXkUsCB +ztfyklVDBq@pe&wxf!Q=bRTp1zHcG4{4y_Pvw&w2=0vZyezH`MaeM+!qOr5({e@s@s +zQwkUDL^USg9kancKm?s}YjprLnC@i3o5WL!J4W-~xHyAzY922eyTN&19E^8Z)rJh* +zZU?Bo@Q0+aV@G&;1mJk*o!o3;i~z|D*Nieyvw3d8CF8Z?Pk`mc`_A7> +zB<7a+)%n?C0dEy4mtItJUu4x6zV|yT;@MS-AlsgG7eM)Xs(&_%@AQA(tX4OL$YRmm +zqemX>I~!p5QW0BRSO54#)f}Mm_zuw5u>Q@&ARt(h-2v?MlN6baq@_dhga)`ub&#J~ +z(}Mu}Vw#vwRAmccegrdD1-yd&a3)~07XtleMnd4b;_wWmfRu;tA+Npa&t7g#|7(`l +z>CV>iB5i2R9gu_CZ2LermDvnJ$pI{mPc@AOi}e5FN&(es2AJrVUqUbW_*>u0{d9t}!Kb`!lZJPp+NNBpfnzH-MbS@JY#ZN8ypy6b +ztMNUM9&FphZb*sm3Of;Ew@;TJi(&njFPC9leGF=Gyhg#mq*k{nG71qTjOFI|tq2h1 +z7QOjv5q9re961UZXnCA~RS6vA^$Z7Wr-Dg>I4(hqf^zt8U;CB#VbX(JhXe{|Hi?9P +z1FII5_4>m;*!VphV81qWcOdWhjqXytXa45c(S7*FM^@h;p{*X}X(y_{X2;PFji0NZ +zRc+fn3}l!)_qOi*bs+WYRX@T@)=WC;B;ExHgvtR!B^9+IH+^sfyh$4}KlJM}oG|m^QOzbyZu;r1g_AS8TdWT8)VnU?awYew +zoNgy=8}2Rl(&%>PtxRe_w&$5|OaAZzTaiY%g#$bkE5(R{h+;|zGWk>@vRHK&**Blf_(V3rF=;^|m?7UNAK;T$AKWPsik3JC{tF?7vMk +zXTYT^X?esK)(+%y)vR0?p@5N;46uK2`c|iHlEr8l&|wo-9diCz8kyf$fc=*A!;_re +zT7d~GQP(>{&G))lHXiT^k4@_P+yIg{J%FPyRc +z_(N(#1QPoGazZl5BBmpkDI}j=bshdD8{KecWL_e4yiM>0XYyOBB8Kkx!0-~~AyxD_+{3X(@8TGn#gxx0Tb&wJ%)lC*{_1{=h}zpuA(KiiBd)(a?2BEo@W +z2qIY}4jO%e4MZl+AMm*;2@Py)FjvLZ{vJAbNaf$)c7gnkR@9fc7QhG;xUV%iJ&Cxf +z*ISZ|T5@#7x+6h5*7FWaTHwaSEI`Jp2@#8N5TOQvoWpzvGO(C2Q~QB9Y=H;y#&+mI +zE%xNg9_s7lomkoYV9GL_G8T_yz?F#ZLS@(=uRi{@i0%1xg$4uh7>;2z3P$6N^yTi5 +zlU^0sM&$I#%ypM~1777;g$qz#SvkXM7nqTqc`b+%8$}tAB`p}{1u0rr&BD1X>9>>K +ziiH+!Ch}iGL=}rTh5zB!aBBFYSK-cC-0F=W4By>{onT@w*JPYlTb1L2N0G8p#uDrsR>MKMyU=liegW!88BTsP5kas*q;FDe40idalTYb39C_D +zG{@jYPG{1|sx=89oSUJOPEb5iAL3`QEg;?t;w40BLc0yFBc@4v8W9Qy@osBAY?`X* +z9UWvc7M+c`ZYz=YVKXDYiBdzN^gq0)W}#$HzSJ$Rv$-Se3VD~W=!qKa5UC;GL=9oN +zrWBM+nS_3Z55QTCaP+kDju!sO8CZ&RFtRC4j+VR@dLQJ2ulH802=yLf$Wux_HT^v`Edr_joH`{B6 +zR`o4}6-fvBaR-#%%^l?o&AEng1Y?!!o2j#3_#d{#Tzz?%DQZUS8!_9|@1Eorr6N%w +ztcsr52Ue8&L#GRXeEoK7^99Rqgli&}jszZTDR26+AarZE9Sq(c#fjzSa-S$pRXJ1k +zyef;@fC44YJq|lxAiYRgV~oE&si%dqMGnKIkHfMbsZXA?*b}e-u)>1>2(!FQa7d7_ +zP;q&9mSvn)e>O&qw|3$#5ylRSvJ?XF)^u!_`b5k;4S(4Z4B(v}mtgOa04;%EDjV}) +zNP@mHbc_KPBGQb$Ra~gTj<~EZ8TjH(>9RGRR7KW+hG-2ixQGbuT&R)E4PEh8Z|A9+ +z7Tw&F)2KMYn2qQ^6dAP>p#%yMl<~i4LqB#>dy!ep4}Om8NBF5}jAj>`1*lHX@0TyA +zsmPB)1Zsqh&q%AKs`YJLzjHQFYgfg9=@Q&kMY}BjddQZuQ435*t41GEj;a#5$?GAh +zHua^`cmPF(RJ#CvI_sInYQSIZ(CeTE>ZHG?vQCP7!lv+!8fe*+h;0S +zxd?;=G+fzR)N)8X4C`$88bmVAsY3{O^)`-Kz4mOSW`89`HnPD&AA|$Mro6KK2%r^w +zkfDg0YkNy&asA`A1CKYo?1JfQZlx-?DtsiAU$7VvfY^MV^3%yb16$*Li{+OoQAyB> +zq8d{vQRHfbQBLq}E}3fJ@gG;9;qEt8?^d@Huy;)#BE~$i9V~TvrIu!lwNwwjfWp@N +zS57vY%H_NGEz9=&u;Z8N_SI@A6bjIdQ2_O0Beyszc*>dxmrh=5E!=Dhkb~GP*17wN +zhqw=J&d)*;6<90_uxKH`oA2FZVXBp~O&SC*=v_Z}DL~L_lwudqF4;_4L!sK$Bzp0y +znnhiyYocTm%yGLEV>oGlW`9{zUuET+ZLLK9x$8Ivv^Vr^QIgtQH1Gwxi?y0(3%F&pN&= +zDoC6f7s9vdX7@Rwpbbg9pTi1QmL7X?# +zU?)ZkWj~?%H7?Uy`}Mycx)g9o^n`$Nyt4fSIV%+QK~OAxY&3qDpCvt{x(frg9=KL( +zUW?a9(!6zrkjG`d{Ql*MnjVd7U4>Al_siOh3)S6uwoMiIH_}YHg +zbwHx5SDo$aG-VeFX3pyJ{i;4J;U7wl{-T$AP0pV5Y3RGE7K0fB!Lu3Mm3ChB+7LzZ +zOTY>UGjW64S&Z9km;bL$aRWoG6(6)1#NjuBYqG{sJ}2xeEcYF}^>X@8|MA(< +z62{4VIyCzy +z4tQl?KG#;LpH37}9(z>IXI?@t5p1qe9j4PAu*9vF(TZWOh<~q;q3QmoRs2^3HikGr +zZLRIUvn28RW7k7vHoVVBOO7W$i4fGp2*%x|Djoyb2VpK(HIav3Pf)$1!A*ca>#aD! +zY?ibUq@DKA*QjYE?%&-=+(!wDF{(f>!&XS=>s;mBJ;{H1xR~cUuaJ9d2e7Hc+BrlJ +z`?Q?4!(B5dw$*E&sY!TLx#SeQjdwv^w9$(g@PjKJ03{J&Os(c_o&rLXyA&4KGb`N- +z8(_gkfv=5(78K!8S8(%z9g_480xuQD&l*ywbw~AguHUNmSF25M6(2ufj{zOZ{^5Z1 +z6aaV`{=$7kHR*r1VsJ{WOMxA!6^nk*c)WxO8r+~*w@~~eRV$LdUY%Ff^khRCDQyPP#P26``JXv +zuAy^;ZXP9YlY>YdUwW2o_ac;S}`M*q5M4rgDEnd+Q@^yb0g&0!AewK +zzZ!05N5TgY-6!B0*|T`XH+ADzJN**A7y-hy6^1%BkH}&3`YgFV17sMUI|c77e?4#` +z*5W+AimP@Q#WM96st6E3b?A+kRjFsJha*)x%!dd+`=+a +z@mmEdKWc7@AtK$LVbwJpcJ_o&h34rurNcYeZcx-cHAMyU`zGqodH@RjLLbQiFpZgV +z1bBz2#;V4|C(u*wqL#J3?fQo9CP^l`BF(sY7iYDvg)$|bkS43g;AtIp(=H%^q6B!P +z&l{)@^38h_9M$7>sHRF$r2D1|>s^PWtx4mqmPot!?WW5ubzwsGw2ix3;Bk4jAq^Ui +z8qXIv@Z}0F*mN5_HrwUlzpFMgc`R}}@4H_Y2KGgt+JC5rJU98B^)hw6_&d46Z`?sG +zWao8j)}B^ZrsT +z?q_~s2M6GP^eOHBM}Y&S&rWx6-b&N)p> +z*^ZQR!errA7xXbv#g(gVWtxDQ1F}S*%E(Z!8!{jVFxduVpVEVX5mIYYWI&k0LgK#k +z7RcFDUnIJ)Q6I3gM7{4v^$yrTAa(q*c?A?RQSo0Zm^rt?^62fO5kL#Fq%hSTmxya; +zyN5PNE*zwyO}Ol0Gk5Zi10X;J!T^6sAEr`hL4I+gxufeH*~89$fXM-BaT*ek_DO1; +zN4FvOz4WrzP&O6P2pe5BO| +zKaP?tyT0y$@d{E>-IBihIT%XXY+9`2OBjbkEy?WWqUFoWFMLg)|Ub9k7HninS$ +zL(?N&4WV_aCwRlDD!=!KyD>HP9v^quR=3ygPQkClcObNahRPpN!f(vACFl?0iAPD> +z<-^xu{rXGqL6)`Qf{frWs5XREfKm^@cMEY#D-b1$$dc}&C`(at9{s7)XvpqF&RkN0Yy +zgAWuj8Q5IDg9^|~UotTnWTeci$#?}2J%!O~1-)IX+DWTwl5yRNNM=i}?C|ebd^6}8 +zS6(d@X(~%ikzjTrl7s;Fk$?o9e- +zqLkJV@ou|%u`w08h1&+?Dp~z(?*Tj|4gNU5f5;YLB@&6WmpHE(er%rm9%V7t7dG-P +zBb!xgI{Z&bGIk7v9~#6lPWKe>mR$jC6=@jC0m&f +z{Xid>PvSo)VlP;YCI2s*;bKYJ59fmj$Q?WNLV}*IoKGyncz9!{fa-f~3XmV_GkSt1 +zxBKvFIwWl%nDXay+B*gOIoY~|jFFS%EL9YHW55h>?W1J{MdWK=j>LtoZ;HoPPijw- +zs$}oK95E^aMw{-LK14sKOivqRV^Y?*`!T+i`0xvsAP}L3Lw!{rQ>w<)e2BUERl)G6 +zV0J2@LTn7YwBnj6rp3eBRK2hd@&290B +z2N&?s9sN+gydAswKP0>{)Fr3kLMJi=rBm(KP16wvFojb1jRj)&OxTEID7&4@qr!do +zvq#|J@(JG<4R!+@0vYDms|V{OWyp**<47HXa4($W$ZU`}HhV_hMap}mdsIEVv#@a* +zJOq9h5n|cf{O>OHhZE(WnC2*D()sBnCOU-Gqgb^LOP4+Qzx_LdE!tW$jC=4j%DfJ~ +z{X8EuR9CF=q$cR4lBFtbM@l%(SL}x}l(+EH^1|m_Pa;&k`+v0e=5bA4Tfey0R@yqC +zRSO7`Q>jvmWe^b%NZLA3i$Ytg5e1^6L`4}45QYp|tDsC(4l*Z45fMRBjmnUah)g1c +z6c8dqh$N5zfrOBWjL&Zedyc1l-}m=9_rCX>Pw#sVe>@5M*~8jOYQAM$m)h1v{F +zw!OpKio0RVJ`YbX&-EFYue)wUN3e{~n`!xoHZ(C``jTsx^q7<%|Et^l$YS~9(0ZFf9=#8IQ +zkZVcb5rpna`eyKE&Al8yqlrs|Cj35w1#9YJXWpUG0U`yJc>f{~u;lCTBS&@8!C^m> +z!#fM#cNmbXX!jPVMsWeW#G71Z01vmej|o`q5gS=ua?B}x^ZR78e9)ZnAQa~HO(O1g +zbL3;~D4-68kbATi%mv|-gsIB{DRaT$$t5mZVAcnp2N1!^3aE+Xt#D1T#)S5^=>0U{ +zq}d#>zPH7mxEW^hoaYiZAPk;!Bt-ng>`10?4r!iYQlW^%(gfF6McXX8HN`mv?(aC3 +zq_XVakxbE?zRG^IAS?E;=~&=)d6sFpEuqRS^yt-wUoKo2;H90ZFYSjut@tyF5d6S| +z&BqB{+<CeegY`Bk#~hU}6yv&dX?Q}c^HS?kIK +zaV@~fkN9ndmX2f`A;QTx#d)X0o%vU>971^L5i{N2PrGk>n<5d9?r +zgq?woB~GZy6eFyiL!Q}_d(L&as5C2^V5=kVAmrBnFuMOcIpG?Z^G`b!%ikTYJw`qk +z%y?|8>GpRNn(PdKHe?D%&~R|BBmmyLm-~M@L8?(9UUKxCA8VB7h4%OFawf4V?w*`{ +zgzrm+=P&dxqV6YPUIod8PkJu6=SSMSOpwTf_7Ul(0|`A@E3g^2U0I9t_Wc%G`vF89 +zR@-|yX1e~oiqW|BgDJFx{VvbK(7{t!&$KamkvSM_-N-9fwbO6D|VtI8j%IWkN*{jLDZy}ck +z^LoVv3nnLr$l@Ig!*(b}P6Ls=2>=R4Uwxc;de)G&AYA%hq$N=7bs>LktLa0t`@wN! +zO3be44XCr9KAyhvMWK*?^%g?V>1f;f9WKKuht~UyQhjYXIqKSL5oz%s`^ik$=}(Tk +z2*V%S!H0nd_hW-qW}NJ+>wFCE@oj*U>!0r0iF>;1?(31@U)|UwnmxT|8=&%E%u1X6 +zG3)!+eQL4`yuz0Ca9<1I(qJS>+AlbU%QtL +z$KKm@oj+=CBFkf24?;86-VCI-?YGPmrOar`)-5IRpIlNOVGOOeJ#yL+%+oI>Xo}={r^-YE!<|IK +zO%|~=ba(J;861^VuWn?mm_jfkY7JZKvoCN4P_XJjx=U0|Le?ulHJ>V7ShEtVLzj +z)Eg{;5yWhIHhTAENxWv)l|$c&!9(*w3l1o*3U}kanruEsv(trcE>~`my&H-FkI#j< +zkV5TW)Mei)!U+Am*g*S^F-G7BWYTYyqZ|4j&+L^p5?MvpO^SGKR_g{qG%lyrdwVMv7d44H97H548K&jt<1H3EjJ@liw?MwI=Wd)x- +zjJMHz4ea-C_0J+~NCojt&Ux02qKUvJa)ZueCL1sSi)XKLJ-ppzSB`9QPhs~^uOO1u +zAPUgvTI;BaD~MQrUx4xF0~H+365lcYP1<@ +zxk|ZJm1oQa|PCy-hf#_u>^xM8{|_ydy$N9 +zJtP-?E~oJ}$XC6ko?7yQaLM^_7G-%*IM1@WkM0>&*BSX(ZfzD(QgEnh01=+sMyu-T7q +z#rqkqhR3s==6b+SebYC3^vON5rrzmyKQ|2ta%0w(XBK^<-CNzw8wYBuFUqdPH@jD` +z>&%DbZF6HbyY|g!Mg|>RK>*|FgvgqkgjH>~mdxyk(>&~8Es#BSj5tF7m;_FwV5Aq+ +z`ne2%f%RtotaEyQw1?)K{{*5sXMDchbHmwP(IY?OdmHWYRMLBstaAe_vgbp0^W980;)N$h +z#V|L&#?0 +z}I!AQ(s +zsw`y5!tinekFn>3(fJ{Hn*r~58;}wIb~N5Xw!=g@xnT;Xfci(y(*LIglrkQ2X5r_5 +zjw-7Q_@SgQ={-O!*Za>;vfJg;=hqU=4cZ4d3Z^(akL-K7dy`s0U=Rb!6co0c1A$k2 +zks(Fl&pD))Ue>-xy&|Soul|_?^-Jd+z%DRXcH5hM-1FlNdQuZA7DV;3Ks=~MW(aB% +zCaV2GWPZ5Fh5s +z0ov7Wz@F#kidTAS^6TI`D!9+a!&Tad_Sh?hI93RGZEwVg!Yv8!F5J4qA3&o4%fsEz +z0t}U5jVW4d4?>QVraZFt1mQS%={5dWvp`gmy^a0pg&?Q2IjHnmE2w5aqt-->f8^wnE1LML*MNM#U1_0 +z#T?pnXRT;Dam4*P*OWx~e>tf}dC`3y?i-581``gVMlBL^=#EJr*JX}hFCN*d*+dde +zZ;cMd2+L8+5T{Vr9d%G%tD>M>eOB|Y +zF-K3-w#LpJ_ht{r@@s|d;N+pac19h3+jm>gOqI&jg^0R2+~MkDNdyL +z8Ltn{GtQFAEcc0rIm +zs#$ImVqY2FpK839(nkoFm_bR*`0Z*dL+^_ +zKjLf=2sw|5FRHHel!IfI^h&)Uf4p;9j{Y;>?md-RPJ)D`locE|G~rTrJ|~;`FX-e! +zI-aO+A?iQx*!}s)`@3lY=N`i`Gv=eAyJxy>o4|4!Uzmk>o^0$a)HnJ91Jl)3G?F=U +zgSgoqA^R54$kITpgJRqmj0H|Xt^_NtAll#f32>8}JmLR06{j~@gW%NKx0f~l03v=| +zc&B^lhrw;&NN|n+%?y)4p0#r7D-#D +zb-|4n&NiHl`?TWN(h;zo=fMnf@!iWw-+61sA~B=asnL55%mL?J>ympL;+q}(sk@LS +zV}zA`sH55K$hwnNHC2EpO;ETO0^VmO@T89v|L&&EL34o>#e=mz*Z^L1zXciLY0ddD +z+XRUNcB!V57iD6ZPi$xchk1W{^Xv(qG&G&RxgbWF8mAoysu?{Uv;t`N1xbKG3wqaJ +zGBNL#f-e5<=9^CTfVUa`t{;E2P8KCDeb)M{gmNk+;D>m>?ctt4SB01F90~BM`E$X9 +z$w6s7bm?Om2rL5#vUbG&aTEwjmd?9$Yy(VQ41QB4u!PwB?|kFrHuX8rlV9cBx)613 +z@mIKG?zZyIu?rSk?3>o@TC8D3gs<*e7nm7!ZNv`#z&ext$UNje=DVP4jX&`w=L~w~ +zyQcGlb~M>+kj_Nj`**Qx|FR)D#DsKA$oFkkk@bxwyC&{MH(da)=|F6Wx)|QO9lqe? +zXJY55ZwIfH$VSjz#vU!2ccSmn`QnBq!gbrs6mlFaV9ULejIZAh2RBXXq^kZdzWca< +zu&J=O7I_0WUOBv2o-77`md@B?VnSwyy^r7IUs!acgJ`E*0YE*;Vo$*bS2T(u`B +zUDq0QP&{Mxz%in=D}KiHBs2k(Qk3p+5x&*%eJ#u{R2x6jlP@g4_4E2EUc*c15OLa! +zIPLrOwfFjJdw<+;b;b<@BV5{W=RN#%u=hcyQMpTh<6W% +ze6(xsupy-e#ZCaB1csm!PA^12=Vu~GhJNN-KSw<1AG=ojZe?2)NB@1*F>pd0dr;Lc +z+sHz;1cQj{iF!lGC)|LfC6qVn{bRD9eBZrmAf}u_s{V4E&>tQTqQRTyfZ#Ow$PkoI +zIh8$_sv|;oZ|=+8MWM`WxS!xp!A8fY0quDk2fvtNKAO!GDL{N`TR|+pIbUZPLOh@c +zaaA(2%@e@6julmsK}=#@Dm#=ubP-l735~~pLecw_a*mfOEGaA8dk0&lwGDg_9tK~5 +zdnO14idU?N)GZFi&4p@|26E(WBm +zzXY7SQugb~x;NgKH{arC*Sw@)KhWMQwi%-}}z4dmIcowxn%pJJ&_#}hA|y%(i^<<^ZgC=hK@#pI5SaMv`n +zLBY16qFiipX1L^r}uj15_(8DMn9eMn4Kl9rPs=14eTKiRWv1+l8FrY +zgyg(h%>yNB0*t!}kH}U3Nj@paCpP7Sj7FlCc1O?XSF?}-mo+poQe%oub1|N2B|WG{Sl&-z3tg7Wb2z4JkK9PWK&u=ml1_wxxE)J7GlU<&-%oH}w~RrSf?4a^m+?L~aV_E@X|1vzqDv +zi`s*R6vW*=*zU&g9%u=imKKNp=Zl#+ooQTpu5*5n_`_$6M;B=px!MslbP`gud5efD +zf+s@VhJQfTW)Sz2jb&0{30%`h>_-?ju{Gp6R0rE|mONR?5RiLHi4(MhvH*gLtO{VZ +zV~l8NjvT`rwAYnMXVJ=WvNj@QB8zM&HFP`43!y&UsD98%-Ab77G6v$crHq1{e`&Mh +z2;&EzuRi(G>Myj_JQB7S+6Yb5bk_MuE1*EQsQM3)7TE;xAOXTCKm?9ORGe3Szd1yy +zd}>!0-V7ctIXz1@G1xVo?D*S+NjYT9T$MgV2Dzl_GbHS$kfKBR291=>l+=$ItHbDt +z%pqZdy`ZP2q)$!cLA7SZIzhf{!jM=XDoR6&u7~j;JS4VFlVpM_)Z)KZfrr!vN|JLe +zqSA^oL|HBsn9mDau=mxC=GKDIUQ70DB&Y6z>~y7Pvn!$Zo{RqwdUU8hehbe=V1*F( +zTG~sgXQhX|3nDXQY2?`Ov@CUC4c3{&a&L)mX4kqkx9Tbey)43V(n!8#sg5NJ$ +zlZKYFTu3r%M0)fL+(EsxnW_6x1&RrCw8L#{pzv-c8;C|GAn +z3{porg6ol1c6eFxlttq{097HSrsZyQNmm +zuHbzy(!=`RAht6hJVYd3ljg!Mmd^9Gl4($5oiKwkW2t+gL!#FK;hF@ +zi9zEXgAIsz(}>%L+dp?YvKvwCX?g;{TsJchsTYUh@C!q=RxI!UYy=bLYUI|UEd^p% +z%Wn3GjOdv#)1=F!y*>?=C~|!+VJ9Xn%e@WETpF=TV%0pWUEHj2%?HyNXqtUJEtc)v +z%t1TfCU@EhMp&jNNWi<7bjgJQzu;m>6I$9wUI(4Cf+D!CX)>i%+BkZ1i$?<0^eD|@ +z#iS!?6!zgiu!s&y=7VP`yD2waf}Fms_GnxVkJ;H+wa<KHsCPb-~w$7vlSswU;dr)KiecXFI6 +z`8ZLj7m5RQpebA$P*m|osbOI)yGl%yc1v|UJR_J$H1c#yV#tvkXsDEjfViRorCJ2l +z@jh2;;tW!})*$~i8>EVaLGOQFcSjrGvt7^w_rB@#zNn$190$P^dYG~?|DDPc?Y3M! +z72okig=f5T_tl|&grc&CRJjJc+vpb-VnAfmn18{{bhIg-3>$_1ve9ZPtaWgXy+uB8Y +zPI1kC%pb#5T2Z&TL#N4@W#LP0+hcBFvr*_z&op&vf?UIryNo-(>s<70=}w8qrdXzP +z;nR)b0RsMDLKib^?;+W7i=!vgx-U?dQ&BZZlScytSB<+rGpIFc5xeL>jql)&x!bfo +z?SxUu{ZyZHU#;sS1rIFgL`mawAHL%UexZf7gJ+Ja9I%6lW4`X&w0 +z=d0d7`D<#D*8IXOFo1AQGd~ml4QKkJTKA_8^2vABlX^r;XO|)MT@9Y_ +z?dqNJ$4PZh8mZdB`7r(!RH8>q^4QS3ly<5`Zv1|-*Q;$oGCy@u$PaCU;~trhGE +zj2SM)fiOO71G|}IN8iK_Im{2lOU{``H#zwf3bw^W{)iOzE!yo}&R#S9QRQq&G6t6- +zNuPf1opk;(T3NFI-nfdXh{`bUtXm$Ehjwz7Rlu=NlB@YSwjHuRw2+^WGoe-U7H9o3 +z%6%)CDQBDTic((7qFE7d#ZPtF-iB_9n9}Yn0x-zbJ`XjEkW)(3#u_>hIuiy$sEJh3 +z=JH^TeJ1=v(T1n;M#ss7ztx436c`)>Aca_4L{yn@55rmBBsM`?isDH1R1@Ygo}&w6 +zwsj*6wFD8_gm(lm2i<)iU>WTw1N_<)0nAFC25o|5x}E-2qV%hIkgAGl +zKyP{0_7~EXW(7HebVRQx+=q}Jrr$-h$rlT#@BkUu`}Z2h1y;XmfJ`^uKcIr#s{vK@ +z(mOa_me|^IJlmNufkleeq)D|M3epj80W%or9+52NVxafLGKT7_yMw2Ima~sZ+bTVb +z<6v(CRmuvQs>K4usS*wJ9*SJKw7E!f3N%j9a(fcY1T=C})x2Te!`2*bK_39pqb02)TdB@j-rgfipu}Z>4%0??19n=sd#rdO* +zrMoCMWhpv`Q$wxsk5fIH17v7;WDkC!pwAnVM&`3|Lw9wHo2dyxOThHe(D$jWfX?0S +zLb!sECzMNEfkK`as$WSI%J*~8KwEchncZM)7u~A`FR&;;XUO*I^Vo-C$w1F%+XzZ$ +zUCC7waG-^g{)r7yJYd9m-$0+_LD3IRr7ga)m;EWvw%K>lzQ`?zSk=Z!*Lcp0s|BG` +zr;ULG2@+Fw|AJi|FcTKp^U%|kWp?f@{e60>evs`&y&wo?uwMoHG`zG42fHepDP4;d +zPU7z;yAVwJD^RR1;*;wf^l8EaheA|4vDYKbL-m`0a_W5+^S*BJ&?=z4R($4^RP5DO +z_4j2KO5X=caqsncup|Oq`pu?d|>aTBv{}FOM +z?J3ZYAB`T5j6rKu&dp9Ht=i7L^k*R8FwklHXCAoMQgKO^f*g}3e6?WjOVFKZpemn9 +z=(FYqGJMixZ6*c#8EXR=0_3a}>;7ZAZsL +zFBf#3UPtVw6eM7Wg7FgdLzEUx0ACH=x?89m9v7;FtCRYj46aNsX{B)--vw|(2@y%w +z`Ap>)^LRyAB&2|kb4IahW;xqHQu#sc(hgcVF_EkQXrqqTBO(OoN{B+Nh}(mx3(&@D +zxCZG2hFNOpLda=y$pm@G-T*L4BUV|%>n4noHQWTOGC-O|2qs`5ns!inlBr~Ti0 +zeAcjo0V09w5DbEyPyv=tHeNCTmf5qmBCubU62VF?!5~4zoE*7_JJ_%cU?seu$zYz!s?mE4c`c1-Qt+R1}*z+~eKj +z9#3EFTo`gQKI%^KI>eQz%S~&Ja3)(Oube2$Gjk+Q4p{I0F%@XkNxGDJneR&)! +zqy{CslV@hDoLT}$6TCuj1f+8*2p +z`b-Cw5;fsPC}o3v*E{Yj?kV^Tb&H6G^iZy0cF#5Lbt}RRrU@*Na~%q`8NAm|;+pS3 +z*gr!Gvw6FMtWNA{k!nZxCG&R?ddjyXT_dXBxi_1T +zlfhHAg_D5=I9Nt^+DGZ1++}1yM19jIbXN%XZ9!AE`s5i?!BN9Cl;JLmG$Li2GQTHD +zlUh6q+}>7X&9x8rB5<6Xq&fNts^2i~8lsa-7|&TKxHUl(SKa>yWc)mtg4 +z3oV#e2@l)uTpuc?7bH8~_fFeOcD=I5KB?FyqA77_BHL_5CoaW;FfJVS+YP-CJ?pA( +z9r`5s(0$Teu`M&~gYM?2wO+$ni4%=o^*7>H4)3o(--1nTy1RyTgTrdbdFJox6MJ+# +z_lv1do^nMzGLf6rX|UopeLFQq>J&??8QbIX$IDjuwJbj6yIf*2f;m1`TykfyO;3iz +zs!qZf_B&RZN7{Nnru{FVc9Vhi4_3j{tBH^r2DK|Y&m`WcI{O7X4c{+qpL7^3Rf8|j +z^EytDhSVpSuIQSl_(Wc*p|Ws1O*oDxtGqDR|LK_=2uy|fybi`g2QzOkfrDJFAsP>T +z=1aV(%tkP2w5hq@pQhGtPKTYt21G#31V62d216ASQcJ<_)BR^6L^P_Q2Ikw-<-r>m +zW0&!OJ>1kIa-lMban%(uTmxCeTSrn^xd;rwE1F +z)uy$Yu?RKAfY+I$*O|r`z7`uQQS^jfIbfOCin`< +zF;gaZ^h^Y-JJ`B~s<0-H +z{Y6IH#vs{qh9}$B1k#$ea4RY^{36ZFN%1Ij_zF_RN>DiisFrQG;>*f41Un4+#NVK- +zS%joNi0q&y1Hd*xf&`*WN)HZ8>KEas4pj5A@febi3AV*B`QN&R5jpQ;%|ph*Tb{0> +zOcuyri>F(aneU>b?XOOn{u1T&VP*W^kHU+zKHj6J+zS@k{`*l)4mzRt>rNAzio@EC +z|6rHgq)w0$1u2;+nECBig?OhqqZ@24?Fu%*U0Mkj9VZ#N@G_J2`#=7FmhK)Q&qtBc +zddO;C>BCo7lz(;tK5j+1uvCC1*IibcEWVRDb6rrx2> +zN@QA&LL=9r-3PynLzI&%=;Xk*jOy=7^FU%x;@Zfu8{WKLJx9stC`w$#qyla-3 +zt1Dr|N8L3OdZPg}qJ7?X=0)4;AQSv)zMGyzDnv5k_nWuto)ab<&{f|$g-2cPqYQ!# +zTkVIJz53p~J)r}jBg$;*z?~eo>c&Z=#5Olx?d?gy0n;H@oo#r5?1(51>3#Kq2{Ao< +zRFb3R*O%Gm$_qzJQNOKHCP_FOqTvVnI7=OLWt2kh&bo^Fbz#i2VB;QiQZ`-K>*Fl) +zYztuiwn{!%K0=>qq9z_5LaO$nJZb5PffxKt@b3A`HK>VHv(m)F9hmE6!tbi2iCPmz +zQ_;#NbP90Ao{h6sK3JGz!fk=#!F*w1?yr1ODB6fHeD~WbvFt4Qa|`yw`2yA&>_yp5q@D$G25<}iW|Z4O6W$&@3osy-r}xe=Y0@5aS8C-xHKcrS8@K8;iYn8{xYvlCi@P^l<$7flh0!%oOE86(C?Mwt_o +zn1VK(Wxn{eFj)?u^cNOP+oLmH%*tQK!f=8|Hm*9i=}vO)51ZT1w;~2iRxE%S;pz=O +zXt&$ff#8IHr~Ws`!O()3A9d{e^+?#m#u*oX-o*W5$|tMDt?);g!lzE{>m9#Zs-9A` +zfAk^GL)jx}?^*EL5w&f|{M0I>t;ANA7Iv|~M!2jz(wmPFm75LCx!lcTvDGWGIhYtS +z0j-xg1o2@-o?9FCSUhZ;u+E%?!{SZgUX2$pa5_5iKWzKa?-pStJF464v-{d+I|h5M +z7NTS+_6HiM;?=U@56WOou7ip%{3;l-6si2Y2`VJh8j4;?Y`FFw+p8Pz67`gMpFb&F +zBYlHM#4c&SgA>nZZG{P(5vBcn?Dga93uMx2XcZyu9q77#H`5zL>5I63W-jw|ibD3X+o9&~IaF(4a +zKCk$6b!K&OKKrycKcp<7^r_ngkNg~c{;o5d$ss!g%dy`BcfFk?J0JTgoeeNwK-6H2 +z;>)~z&%{7u`!?G~`?>+o_v@l2oto`q$*rP0#ft8vOJH?ZK+!wGHEF(s4sO!#Uq3p4 +z({Wv0BC&bYX(&c^#y76%0bcx+q!MA#`_eh*(cu{04C6&n@s?WRufk!SZKEkK=zE9p +z5Sa;88Q(kS0GsHYbpM(6gs?!j-WCR$$^VICS&Y1J*g>DF8n(OZ=) +zOXKwb)U*S5zJnh&S9i0tDnKTn)%v7$*39YKz!?w-@J?3(5&*JWffF6uxmw`wE*=1c +z3h4xJiHm?s-0@)O;CL8531IudT-)ZcAlKWx9pQjFQ4t9ar7+6@Vq5fw6mB{Ic*|F5 +zu%A7DyPcWp;%cP6c>7Wf(-0qZj-PaLDb#hf +z7O8BPAXUT5I|;e^?&SPONL~9!{B%_F93{x>TlHZ`FC|0Tp;xxJX7yFHrQByUAMBkr +zP-*iwrOA)}H35#;Oc +zq&~e!*_xaB#gZkl{I6l3bsjuLeK)82L1f|$R^q4wq4&b&QJ1Hct6JFKvguEwE<5Nt +zydQ*UuE40N=Id+2CJ8+T8)du0Vo*fdZYR#B%(~EK58n)LmLR$RF7n?Pu{%Wl{Lig= +z_BQ8!dDybXE=U1DOD3g*jrZI}O4XN>lYK5HFa{C2l5zn5;b*#}<#G&f>zsc~9+E{= +z>e@+-bY2Zn@z>c*5QM01Jv5=t1NAU5&}2@;++K*Vk{gd9q}@o7 +zh!IOd=nPQ0dCAg6mDMvNi^K~0Za!M>X(5|5YWzDUJl&(okch}XrXZB7Ug-E3dy+xF +zQzx_9Z=MFFpdOWWV0y`QDLOp@I*(Rs(udshffCHLBlM_5kd9cUom4l8zMS)@Ne&x= +zeyD-%^GfU(f&p?3*E_zEhU?g|5#=o|JgoIaQ-%V4M1P8tzgjMx@wB)PYz6tball6Q +zEC=M22wQJ{FkH0ux)UkZ-`P-1MM^73m}Rtt=@hJ{F!cZ1x4n+1ETeXg;yuN=D{5K8{ON$xsGUIdDH7TRIZsuE0{&aL{#nwlO +zE{7MFu|f{cAoY_dZf2$tZQb$3q!8UsfImLNcjBL+RpsN(7)<3ohxd|3 +zi`P|-)uEC>8WE(4{+;$8#sDE}0n7c8O6bM5jf-oJ8d?@Twfm5n^lJa+ojLNm{;XVl +zki+Q!!9=<(CT)0AK|<4ppy)r3b&b +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 +z2?@=Yy}Y^Fpn6lq%uu&~kAlLNS4! +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 +z>UvbRQDij+qAs#8doE-f%O;&!oyOReZ& +z;O-Bc&U;`eHaaRDAqHd5kcn)Q1D2ZyLwF|viO-f7Lpv6yYr*vx@=NLDT5%bH@0yHc +zSsE*CA*{hTVmUu5M1fZ3ilPeZoy?rlb(C3hEY5Wx_cjYdZ%fyAz9^ZdKAHSiU&6&; +zs2~_MbjEZdp<%*6#?O~WMg_}hi;!Nn0Y~ESh4(J(kg_~Y^u9{{S4pdu$6{n8X?HSv +zsz^H|E`oLx0BW?h5Z@LCdZ2D`ICxN$gKnY3K8#r9Jnfh7rfCNw^^t3)I68Qx<_@xB +zZX6StX*?gn#j)*D5K$5`jMI@gemNjiaBEFt7=44u50e(yjyjFmT84SWdX#Vll^lb! +zb~RFr`|Vmf`?R{u*X=RFT5MN`m=7uK(nBoA*L +ziQS+efw1jH!-YiAJXY2=%9yM4KvGpR)Hh@TJe;*VHs;a}-tzmQg +zEstCp1`z7;lgq;3A;FQ)HZzDvkzNzTaU|8NH1itu7uBUxV}MVM~7ukVrE8~T3d0eJSJ1q_|1@XMtZwDWOQO$j*m +z$WNqj&2ko&xX9M_dRf;J$Ah?-B7DRZceiYKJ&8y7aC8^LJm>F@kv6AQDmKDA!cPGr +z%}INc$RIP>jJXmcZA2NT8D~YtX>s+1y5wy+emVfwQiV@&Sf31a>UD4OfZQfG0!XeW +z>55E5KkDG?pT+~EA*18CRtV-rzxrn)d!EMcf#f8MMSLdSD2Yq1k*3f5s>FNxq<}XW +zhp?4*eCNG#^0}vEYH~_aF#XdQ1RLLXi%iere(s+A@`2BMS~hLIQ0{;5F?sFK3Ay5u +zZSurxNALnf+(5@M*~XR2xh5Y5Nw`3UO<8zm-kw1TBO!o3e8L-xDZ;s3FZf=p^ +z*wiZ1SZ@NGlEZEro`3gWB-Yd-$A9o`Iq}2q +zNw{y7tpDKcQs31pV}k?o=JU^CUlzYB0!gF>&?l17cNS9h=u5B4$`#AyJ==QZt&tg7 +z(cLah4R}5hs&{HOCx86h3Aub_hupQbRbHFQ$=~;9>O%LmZxbf)=qG6p)lNn^ZCPif9~3(>LN +zT5iFN?83C$8|sv!g#lde<3l`f*1rjm-J9pmmUz#lYg@aD&-l#g#bg@fF%o +zB#k~r)Rc$}bLuEMl7o*_tdTzHEPzf3)6L6BEmYBv^`iAv4=W==aoHfNf3zR3y+c4JEO72a{sE +zABDt#iG1@URBIY$eh%|z2zlI1DWp??8QXTvEnoz+2N*&NmxFXUijnf?)8fi|Ji=rowak2^Jl +z!5rgss9vHOVWELZTE_}?lE5PjZZpM|b+9{F4Nm5qCXqq?%R=mrBECu1%3~os7|L;~ +z2r$y*OG +zlq8{6BUj&q!{QO_vEudtmlt3p=g_+LPMJLTI@-W{)Q1MK;ee$D2+k{myg^RfCP#2g +zg)~CVzKgU}V(Rjx$Q1T(xhgM6=fKm{k{V^HA`V!<*JExxksVYVoitLO%kOdiblIZYzVjaG)JUh$S1*U^ILx_Z~XID<;2UoCDye}hGDf1 +z4Gu}PwOwXru(u0G=Hx&mZU&HI70g2(iI{=Wlg5Vwv7C=Q!Ayp^Z3lIgYi^f% +zs@q@xFOpufN#ybSMP7ay1cbWm=#i#7?vj>UKd!qhxnxrMuDeOq@zEz9lCfh)Bzg3x +zgrRod|Jl1_=+uzB^vrX3m=(K8=%NuzjLx=Zy|1GX0&hhfUxc%#Au1~x@oTVAccjHU +ze)vekh8Pz95xo8zk~oexfqZrJyL#fGL!l!?X>Pgsg=l0mFT +zX3>?}&={5;WMGlO2179mQXSQMt6v-Wp5o%(Qc^V3idZ;&3?tNJkVK+~k4DwU6I?KJ +zuE=fGy;bJ=bY=NkZb8P5Ah`RY~%CFq7I#sv6`RLS}w*^gg+N +z{1LoV9j%3$ias{Lg%XJJdjAwmE0sYBZj6%wWMDo+`?#0} +z-xy*{W4u(?`YHM(v|rxJabDz$@b4Rc6gb?kxNv|59qU&(8=XkBJkoF$v?NVQTfSD5 +zG%)-Z;#bU(hLGQ}rJ2t>?#5r6*&(k+-`0uVFTa>D5#g)5?jHUo)?_jHKrge$n8;$*1J*k#8yv#*{@gQz}Z$MrkBXN!uXEKJ81D0)f+1 +zD=P(^rJ2unm#)Zl%jKCZ@^owu=FP=Fj?O-)Iyl1lZk)e7^))rOZ*RXzpLbw>P}-UH +zPC8R{d{pi}Xpz4f`bV78I@N5nSuA{<2f66KE`14T+T%6=U_@G9*4}*WpTCb%*3Y-4SUh;6;N)i_EGTg63UYNVg>8q9QmXL=dL)`v3%wAF1#V~{|tXiPNWBwsd`Y%z5$Nm +zX1;=?U{>N-F3a=FFzAQ(w`bNV4N1$OG}hurFfa7jV~=V7OQ8pe&qt~!L(}q=wtLiy +zrHVDCoZcp}^SiTnrO$Vva`S;FqB1*3tK-6{) +zAJ@H$Ssv3Y%pBeZrx8PGOGACXkvuGqOg$q{OzoBtyuyrgAs&lW2|5ets7jrIm3l+s +zQu)C2H8LCKeroltPNTW`e*cz6pH3O+7g$Qz2vdiR-hXP}DF@<5l(9K5vtr8h={wiJ +zE)U$Y7DgIXHjmQy`fMH-ZNfWju58*amo#p{%a~T+hgNX@SR9ZTeLA=Zmmx~_a+6$% +z=9S})($Vxu*^_u(cF*jSH&ci8HUnR4&69o(QZ!TPd>EPI=g)y7ix7td7`HjKRz5X; +zD{i23i?4FnRd%%SSm@!0ANIjmc+Egb5{=SB;J)7RL+P&@R^x|rf#DsfQcAac-}lQJ +zfJB+h;9XN*tIXh!s&E-z{jv_sTpM2r)!QrGklYr$e4Y&F98O1zkaei4haqVv`RjDJ +zu6P7YJe3*NJgx~@$NI1V>cg_wu;D}|(zsck>6XupeFz7^e3`|W&5J%Pp@$xN$mry! +zFDcArL|q=2l_ClGM%TZ{Saee2dE6#AOKR2!io3G>qiModmGNOAs#(shys}Ak$&Ci5 +zwxIqopHiY(Hlu2ocVt;Es*8HIrxL8+eoto}=KPlmXQU(BB6p2^NLq5((C3n^I4{~1 +zb|yV3BTe6)Nkdu}LxM~r^G2f+@{ip=l8MNS#BpUo*IQ@YLG=cdrI1t`{mKwXt^0Fz +znCDoJZ@+A@T=kaEJe324Ol-?G$!AACD4m%$#EVCO1geUw#gDo2LOXZvJZlnZFzNaW +zru8T!@}IhQ%4prB)aNLfepd|7fr&MA7JTc$@A)h=yPzg`UYmqP+L>*YPYvIyzMkVk +zPn>PH!o)7g4ACHogXHz&414j?Ah7gmd2HA6 +z8D@-s<|^|l+V@Ji(tg=;3#aE<+vdA^#5EDYA$O)rX+T=&X%T2M7v0VzJ@nv%52Ah$ +zPy=e|KGhi2EG^kI44`|vpO6EM&YESbRJA58OYddwn#8DD`*Wq2TPhDQD{FqaOgZGN +zPL^=P!l`fE+Jq!-POOoi9e%Igh9eCkWFpGdniH3rSCUADq{`P)nM^sLWa?|L^I^I3 +z)Qxi8#15z$?AU<8G(w0Jim0Ps@u`+qOtW&VXkly1;>wOHZL$tsu)Njdddc!Q5}0nj +zmSJ75T`gaX6DJN{;&|P}cEy>mL?aDo@UUGvlROuz{9bBa>GY!(!)oPKf^m9`bfB3{ +zL;IGIE2S^hDLcFI(uT+^?&09x4F6at=!$6-d4X~Z&a<|yO^a9YmDquPDvDLfGbx;n +z;AS~2(%XivlWo%%V6l$_V&E6tL$&s5(RHzTB}Q7~=g!Bg(6AWZI<;Q@2Oe;P +z5GJ`l3VdDdhgsc^`{9M;(W2#Im;~6@dQhJ1+A9-v(`wZ+?Z<_o25T~smbOf@ymw@W +zY@gf+?UGlUfExgGL7Hk}@oS-ZEbi0U4_jX8s)yewGyV8n;acV9%A*?6b2q4{OC~nT +z`kCeOT*s@jx9yM5mKXZL4}M^Cu;1=^2~+x_Fa~%Tw?952FLb;v2U?Edc@8`r3Wi2_f}Di|{OIY6Y_ +z^%e&Sv2(5_j>Yx5k3Y)?<7_FI#yH)a<&BYA>Rs?fHA-TVY21LPDkCEgHTTQWra>8r +zPv~AHnaC|LN-?F?7-1+dznTM&O3nrXrH*QoYe436?(0gm$(os7SvTD$y^ubtdNPkp +zWYa+gmKuGB0_So0v2YAYD6Tv+5x0Q&v1NPCSx;dWa!x* +z7~veqtPCrY+wl*BL>cU2Aq)Zzn1*ajjg{_HyY$U=>ZcuBYOx%Sn$RX0$n7@O1g`2k +zK5qx9`L1N70ZC?1K6!dTpOV*+YLV__yIeeWffAV3<5XQjKhyAMK=5P~Kf#SUlpb5o +zur8TK$*KqAnzHpe=e1_=3wQW5=5Tfi4Zt4BJl0KM;Hc~Y4mU8IwlMhKO@77l!}Kr# +z4C-PZ=xTXPGw17frdgh)Gc6dlat4E6heR~l;=((PD}>qxQk5y0dOT0qttwC3!58Pb +zAlcpAYAumvxJiI=#yCozwW~guuW)$tlNP|2!CwttA9g>?x{Oz=W9|B7{Ib>ZEsfxk5ifDQdOr&Bbu$^GpV7|pG7-@+=j=nKuKG?NfS$UL-2c@@^@naIG +zV5F&wcMI%u!4p(XL3rn?$8xpug6*7-_+0QT7RQRCYI{bo8Uk~PILp?`tJc;+)8=ZI +z>2u|=?OJ%$%B$68t-OWeQ?1-w?J|9?ylOaBNF)o?s=U;^Y6zU`w57tj)OzO{pK9&< +zu%5=qY88H(_U@;EE(ac{J0;k*5^`TU1~kT;MX-AeAt38 +z`*~L0FXM-UWtW-&~(eziPH^UL^Q=KFC!{7&QPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91c%TCS1ONa40RR91cmMzZ00`n$?f?Ke*GWV{RCodHeF>DD)ph2rt-GuD +zRo$)DzDt0FSQIcIY>bUfFu^z>wiCzpWX3tkOftz#&dK;pmYK;J&&f$9lYKc(#*Xbc +z2@W>c$OMys2-qwJArK&;ee0H5y{}bW>wMpRb*o)tbD)o+3(SC=7l`)&sg}acrj?GKa +zUpD32H}Gw*q7^zCiUkk}6eT4b3Ku>^uK;8ar-Ff*&F3VC4?6|EHC0$qfBVD!wgi|! +z@Q>_|gd-A*#sp|O_;MntY)Yn5(=we-;FFY@?2M$d8Oi3enkEuLo=8+`qSX?Q)<|tE +zF7a56RO4R4NJ5NJhvvy;U0vuTZ%4SJjw_e{cTS}(C*g2dsv}hriU0`!F+MXPM@9$a +zYdX{f4~w%Qiys_T%YP2IAj +zv0J+8JEXC?f%;qWxtz>oQYzsFwT-ElGxtJ?M8fH$%alq2LxxsIs{n39Qeg6l@jiKd +z;GpasJSfM;dSy5Q>o`$BUr!Px@$!MzI8mQ15n15vS +zq`c7gioA6CH8~D|seUoas;Z5JqhPd-nhrEFwgBLKJT5|0=m6{vWC-ieKs~3S0RX$I +z@nrybYu6QW-Qvx%62P;=B{NBMjI4I1`RaNr;uT=_eD=iPl?0UwD@SO#bmhY4%S*;` +ze5?krlTfoSp4uZ%9sePu^#I1zgvM1tMMnTAfnXi{yBLn(n}pI3*d<+%~D@o2lbuQIMo`|8O5G+Hf81bQZDT5oaOPDD{p9OYU<)}ryO;2gsH>=w0Nvm +zMv|lQu=dov11&38-)+ng7a@nA_!Vzrh34%?@rCqSRsYl+o{07;+{70mvrdblu +zEL8Ud`f_lg$;rvLhFgW!tMq|_x~f{0*vF4PBaa^WSLvPThcOky2bL{BB{MH4$4*Bv +zO~FE^@wK?2OYT^;U2a=(qtsW`sTJ=8c@9y&1PuyJOiU=}*gMUcgjkrV0E@S4Fdf5# +zVRPlB)N*P3E_qYf9)apVc*LV<=hk!t5YJxznvV7 +zGfH(55}m;~ef{Ds@>5s*7%cB@nZTS}<=qpaOVzf}`1trG<)j)>uzF*V(C;02O77pg +z0}PmyI*h#}BoC>c(?YpaoH@^WC}sScN>AzB`o4`nDj!^Vi(2F9T;`IG&7rZeu}cOp +zjgva88jWIc;>&x!AwPgx=1Ni&fO9G|8(5NM!-o0oO75HAt_(Bhhne55Ok;k#T0TF{ +z_xtJ0Z`X2p^EwYFpb4n$_ds2L=Bl5NW-OXa!3g7!bgA4W0hsETlG_lgmwm&BUxz}8=s1eCa&b40<4~ZpK%r3<&+oFOtn2RGbKF@o$~Wn|FmpqT`d#oNtI+u +z`o(sk(a}-k;6^9=%Ruf6mdaUpo}g*e~O1aF7DTy^6xl*D4m$JgH__pJG#s%tjsLitSISHfsc +zfSK`poq^9W_UmtaTOK;}m|D#Qgi`(gqf==GqFkZ7XY~i<6YKBRF`B$Ekl$>+T$JrX +z1F$w4m#^&oraXM)32DS`jqbJF#r}}iIU6{G +z)}ZDn;S3?{KjF`naxnqdvcU^>_#NO4H%dOa?rx~-X%h3MJKYa9bs8+))P^7LkFCC+ +zdC49cP9*+YN4_Ty9eJz-?nNNpL5iIp{H5|~1vd(qYQr_s5U#_gR_a5w5)Wf#EELn- +zCz1i^HGLvCBa``rOys8YGo4Ecjs<8tVxg#}zgV(Onj5i6@gR6qi(%}et3HT5Y-e37 +zFFhM4$Y;izn-8NoCD;en3iQK#KjSm`j827i_B|*6aBzo?xok+#u@}#UcPYN)^UENx +zl*}1%d%$(!xGafw%97Y3>5Q~VOSnO504l+DYsM}&OQZAa=BgP%O#Z>MYr?ft4Ie-uyEIWV|polDTFzgmw#kR +zDxboXBPu=74p~>VT$V+;6k;@6OsU3Fdr6Iz +zCqdm@y;i!T?EoYK3B;eSgt-i4+WELrhX|nqg(0_5beOE1$_&aYGY0_naYgLp&L7EC$|Hf@R&#{{>m)f{An|-5ox6psgC$q#cpOropHIG~ +zQcX#YVO%da1kGJ)`BuWF^5ugMNPV=fe53u|8|*t4=hb15(Gcp0w8-|_Yh`WKQdPYvNGyx6G+wrg;-zGh +zLSHDS6=7qk4YIv7$_M2C7~CB!MsjN6ARRXuBr9LAJ-Q +zfhAlcGZ=e`EXT=9>8vBs7~>>tZS^u)8tYV$cPHP_VT0hzYP+?`u0Fx#!Vu5=JcCAF +zZfssHi)z|1S58;#$P2+pIW=o6DG=g^nO{LAu=vpN%EsS+^bwiNPU$$D<2oW5pv#JE +zNWjl~{}W6{qSKU6T<>bwE_c;$SBn^@p)`y=nsIN%hjnu&h#ieK$DQ>zD~&$QY>(e2 +zzpa&cVd?YW9oMTV#pEf?RO2=I9dv%2`FXVu)9d4-^jKiItHs-uX?WtWHWHWT2VapF +zhhK#SU8^S;h@XR>sY`x_*~h{yorQBsGlTKAK2j?mZ~TyKtywQ$Ir)J6?*6}!#L$8gR7 +zxJX2vK0o-f@|dSK%i-dOX?{=eEUx%`umvpiN;Szb;ybO>gyu@5x6a__&y+I(A85+wJr4Cc6 +z+)Ck;=xKnw1nQbJlXkX2>F_kwLipgPp>fAOa`INk;esSD6dONXQG&J60r3ttj2Th4 +zN-DSeo*MX}9G~vfDG^yZuPcjCqs>)xaREiqyDHgK$1IQ7jja!Z<(ZLwFeFxOjGm +z5*?gQ;rR(^2F;|MZQufobv7k>))zaS>v*$*y&HBq?z$ZVZ~qlM_P17j@VqQVuf83JkFfjFO`h$7L`%49yag6%9+Jt-3`L*(8{bRVmD2M-qcF +znCO!n(l*18X^k&I$G|cx=Gg?*J)p$S0x+@MnZ?3GHa!85;}VY6qX}F=%OIUL8r;C? +zO4tpgoo)Eq*bbS*@@EvCvvS9u%?Hm?RnE7A7bC0yNxG&9!70?27?1KaYq0GVxLr!rJ93TL@AKPwz~QeR-`*fQ6W7qID;tn)ZZq{ +zW8J#&?}Mw7T1-oTOCKvzI~*iy|JY&q(?efTCTy%DMH`^xsQ3z6c<5vBeQd%|><2wtNT{_Jb3TOO0UFtI!6e+5C28ApGTc +zMc(o$4)Xfu_G`7{7dwja$P}X(pk*Gs0(uCtl|FS~{X#?x6KdNl{b +z2^8nGov}8#z5WLHX_R;d4s|h{uZjt_53t2?iS!^;^TDa(vbk}Ce7NT}l$=$odjj*x +zWsN;@&ypWS?y&3u-FGazTiR}P}_{SxN(~wa-Vp`p>LZXX*T5?t05}V#Dp=2+{Xt$DO^zh2IuzhS>XRH;zvllCZ +zJTZ0!!)YM0yyu2rF0QvziWmA>Fu;^vuDzZ}oRS06$J}ND<&{{R$A>-o1NApT3$S;? +zQpKME$nt0n8`B)v4sc7OaRp`$%?xA3CnX!2)=69eH`O%r*fyI=f!FD3aOkfJ +z)-#{amSi +zpsj3k<*8FCe>orNC-$pkkiBfyAX>LAOK(%-P$HMq_B;*psj2(+kUS6VtVqL?Ra(KfZJt4 +z;6f#MK~^*?;2!94sE9tOCC)DuVDO(;N)HXU>(4_vF#dp?99{h#e-j$dzXG#x-ia8;TfTS +z?SDpI0jPKP+##=z?v_VRJcz*{C+l0ULMdT64eNV%@3&+U?b_ONuQb3i&O*||FpMTA +zc1z#!FG*|rZMct1c4oii`X7|))EUV%zDL3^+Cq>_j3nyY&JEQ6)by>XYHX)3!Sz+|L3_74A^DuGjggP2kfAW9Io +z3C$VUq_^l-c#V8lwi1e-xUKdoU0otja}x=zfiX0VMTKwmeNQqcxd~CI75#=1IF6?T +z{^N$9l~1p^PtME?%1fiK%NrAir5)17yaTBbX~A5#8PD$iFjNn +zIDnZ+4PZW;mJRK<%El#kqFpnNCaC?Inq@LN^q3?^p2C!>PO5RFrv`K1Z0%Z!E%`X4 +z+;w3BQppke9HOsBn_o#DaKNDvj~DOol>r8-LYfp8K^Fq7zYtE-pFvg*ZHy`mZ{-}8+QHgXf@ +zu3Y2g80uW9aCSnDs~rF{UR5K%a>c)sou_^vFJJ>?EHj}heRK0B`C!j>EN1k`iqHya +zt!|a)dLNhJ=@TeDhnKBvlJyB@B!-u>aG_%XZJ-ssylSzmK>kD6OXeQ3^0y2R4RpI|o6%%#HR_^}y+03H +z;bvh};l3!rnxn!O!QqsnH`NdI%$*cg2j_$9-v`4BiF2WxY{u>jkKOQ;hOZ?wNtv%t +ztiET?bgYUJK9!k<8mp4Kmw!lZ@3~chr}4#cn^r7ezd(kpXkH^LU~NxB^69FfjUsr` +zF@^jriyatWnwA=(bMc+h+7p9rTXt%(eaG@Rq|n(ECZ)@Z02UIDA}3%tsnUHncuEOE7}5#VBXWu54Q$SVXSidopY;IE62YQ0II2_ +zRbA2+X@*2OHRz|IpUen?PDW6b^TX{z^ZQrL12A~CM>A>2kSUhV%C&oK8{$bD=e>-# +zkD~?UF|IJr)!x7mq{UZ}bU#lqu;8&cUU?d%E!K>aAYIA}mVK^{v=akjK}-xEyOt|& +zUKLFy@t=jNpQU)TdHvlFo>dncL!)d}^-?!&K@Xm*fn*4YF6S6Gm%GrsES~mbMmLKH +zsOvbh8eN8f`RZkBI2#}jUY$9povFyrGUWw>j2oP-5DNzjN~pjm%ReW;%1o3@^*WFl +zL2m}*Q9-3LjR-BAI3R!*uEtbB5|&|!kBbw!cu=uBIMU_=(xvjhSvzYpK-7z`Qn-bb +zu6`W-ka)Cl^V)x_TZy%`i_lhD?hDgebJ5Ha*mm-uI49OHd=+>FU(xFYF<2dWPu>k= +zhTXEIM}8%si({}A;$Jz4Q_?u+qVA`P&|c^G=q2@P@|H8 +zb4jpY#Qc8Lt!fi2v?WD96FQcPq)zKR!cEm$9vCg=np&1q0qQ<588;VjmS?^z+ndE$ +z-hs90dh9VzVRMCQw&)6^k&|?Gb$9NYye9^u*@@yj*kRvS&OSPCl|#+6`xtPU$+A$9_GVt|@Lo;(f;L}18-n2v3~K&KrY;I>2?Weirl +z+6z>N#w&Utr4C&N(s_Ia?KIdXfdwD6iF3N8e=cRY?>PZx<_IP5XhrmxePh$kF%w9#ZCI$(}!yy2+#PImYHt?nLVr8Cds8bes-= +zJpY{cES3ZU$WJ~5M_wFGa~@vhRsfk!t1a-*_j_e9mMWT9a1nf_2_XDhMtKun!3^Kdboey#&B0QGa4$p`RUq{B?p2Jj=6#d)v~tnX(bT+sIqwCgEF +z5XP(d3ABCuaEs@eDdi2mj7g4O*Fp=ktHtr&J{G1egL;Zio|NYPAIRw9_erYjdP&sd +zfZef&u_=LPfmtjTJi^#XN;I#PzIC6Hp4b0eY6f1Cd{qM!k$X9~E1M;Qd>E4v9X)p +zY<#TB`HKLPI6r~ivk +z5E}+wkgD+`P~WDGvB!(O)RA>RC1YJT%d(gLmxK~$Amxyvf;vYRa!rGV34u<2xRFok +z&tUuw^GvoHT3iruz@8uNs0Iaa>+eDwu^=Xd#K)|hzi1jV(s!B|0W3`8$b<9wuu$cn +zN#cbth-IKWjECXmkhJvelqA$@-I-m|aO7b~SptPer1`{S=m1zZHhTeWi@~_+zxr1s +z0~Nhw*YCjc=J*T1ls^52R8wj5!?`-zjV0RZ$>Wm6#sbwomn=(5n%184xUyDOY4oX| +z_Y40hE{YBtP}$9CMHk>j!wQV8Tu$Yf0@1cSsXbp?QaQ_lSm#o}3|U40rE=1RdttI$!jnSP>k@S{9TGeVd{b{zUgsNDBJ +zDt}p`7&9q%dOiw=+E+gP%hGiGQ5oF)3sA3^$Lh`xR4y##ES}mswfUE1=@0+AZtRoc +z%*snW##(v#PmyOvVu^lf>U&Zq+cwMi>U&kqtHf((I0urwq#=MpVd3$eA}>*|bLIGF +zalBf*GxYe7ny$A8G_Rk7{&@!j7Q%N_xK)=@CFXMl@{Z1~C2|ydG=j%HT}N=eSd*XY +z7kewDtg3&P&VNVO{=Vx{*)C@$J}YtT8|#>hxJ1KBsl`0FweN8-4pN3=I%hU~Rwh^7g;^A)NId@xqwT_+ +zYrEqGN+P%g2{fDyc!~kJIGfM3hhQ1wFNVM1uv(6`c_o4N<7g0<+Rg@;olr|fXVO*&7-3^NI{#_p5@nEL5*u0pl+;1&pBx +zv;+1Ck$1LgCQX$7B5m;du3R|x)d?ASp?Q&k)-s*rllyk}zF(7&I?YdkBPOi# +z&j~QI&|0g(%SX5;%!iS+7AuQ1%x;&9Dba>_u7-tWI6GF{2e#~bCE#oxq$CGRI0W-Q +zjNfKZm0M`Gs!>)|U}y;QUzH_vh&;-sb7VLcLSV-7ShcQ^U|~9 +zAiot+F`bvClGpOGqfg*K0(qg+MrN=IDrF9&;j%BWs0Jn`!4#27t~d{74-J0UyL1fB +zN2L+3DI(Zf7Ry`Uhg)1ciNMzqoyp>fKNv~O%SO8oD#33e#fC8cy>P$O9(opC9b+p0 +zifP{dezuvXQ3t>S@alJ5hIve`z0oULub4i1(X7XmD@aQ6pEHNB4QpjY`7%+K<@INlZ= +z!s)Ee!fi2{;Vy+s!y2>}gwtXu5CFdmw{n7462=XG@_@Wx{JA=EiW1xoENEzP-Q5SX +zoL^NmBj~g-!4@K%s=71WisIP_qy=r(XwAsH=F#+}8-_Cv$DB82j>w&|9rduw6mqbk +zg~o=kt*Ag0!YVR>uOh}Tkmakfr8fiX9Os|&u%shZSOQGp#h&Ss#mk?h3nOhf29=h^ +z!8_c?s*o3_C;3Wa`m-5~jA_i1@z_heCW_M>JW|9l6Gx43v?CtnQoFeB9+owDYpTk(u=T3&nMMOn6fgRI@OLHhbm%d;=NChJ$P +zka%6KJh6MfjHUo;eZAbY9>;xK8|3$Q?vu`@dim7W@C +zziIikN|Q8&>Sa_WbXGjOZr&+0h0KLmMagvt8fPOo74mxWklfyIBVPW=lazDNPc8k(tCGFV%PVj>2sf#n#Id7 +z&V^+3z&<(rjW5aM$cSX?nm$s=iUK+`2`^#wO&&SN6%V +z{$UxO$;#j~q#7OMaU`I?M9^i_%f;%`Z6bXa;H_!~)&jY{W@@0FfgZkH-Z|IGB1?AiIaoH%qy>KYp* +z3KdKjhMH}vua(isq^wxl1u5NxAES)P-qRzpZS`UpH6m^CsGQD*WPBwBl=p&Pjl&gq-$m>e&;Jju4Z>5*24=mO957JfPtUF{r&Fa%S@ +z^JTAHp?0YQ7F-Qe-W8H4zgS+txk)4f4NS(c5pva-8FK633k>1eFS?;+8s!H}QJ%dc-+ +zD)(*ZlFs@Xxw)rF{$MN4TA@kL;3qH+PNp$#bDHIB7QRH~;LLGtJKus^6b@^0fLD%( +zXM@FU!WH4gZXFt>@ZX$|mxb|Klwd!woS$lXMQE|qK{a$*BERuz>{UZ}VS(c)Id*+O +z+xQsPDDXTJ08S5KTM$N4^ZG0CgdmoYGnv&oG(Th#C1tMUieZMkyr66MME=rSr09g +zgrsw!hwH{{Gam})7|P{Fb-W-+;bKiKd!@$T%xc?@=oIzW<@<@E!}xOd?@$Jv@cY +zd4Ls4;6PvsXQmQ(vrT=2#1=1?NHxl)g$qYe^-Aj)g1~7KK+8=}D$o-LUe|J_P9BBOLvlFXL0TPiQTAZ($pXkF8ni-GYk(SG?A{0> +z@Wn8c#lMon9dGf)6{~NftsFCHT;n4`7Jj}X7LKCe*SUEKm0Z9|6{6fR$WVohYCh)WAc^r=k)e>B!qD6yG9#2q*Q|Mj|izJ$ylE`g$OS%zD +zrw@NsLPz$CoH;FdsP*vDRnqpUUy_Dx+o1{EBoN((jSwZ-`OEGFsMj=G!~T>SkR4i?$jgO&oS2V1L_vjsP1?KK=NH4PWdsO?dE3w +zvZ}mHRC7@W5{FLvcO&1_Ha6e|YDJBwyucUpslULj3cO-4ik8jUbEy~)9)=gkTIXPBU>cQ9 +zBp}@*+W4BrCI~s^!wAd5$__(y>)UydhsKi{RtPgjc_cu>-2#Kno&7lGoN}cZ6GHU-Gbgaqxa^8|SV_UTkks>!F3l +zqDs69LsO(fX}Kn|L2C0@9fPu_!BymqPe28Kahg;iUW1jX@bOBb__RKO8V0MQXAq6MLF;ymvW|XRX_28-17r46j*?Y +zSJElC1drjxG=;R3P`VtXFUO4tl*KTnv$oMs=idj*vGiup$_*sAV??D76BjdrUTzdL +z@d#U~#&&+8`6l-cwrbQvkGVI>s$D +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 +z^0bB3Wg0;XxolI~0V@m{}6NebYYRP#y| +zt!f@ubE-XXYjs_&YS`#4cP#>JCUZ3pA*K6ouhgr%`KyANJ1-oI)ZfM|{& +z5F*{Uw_s{iOW<8C+66HY#&G;CxL)1vbh(3h?B1)c=ncl%eehb$;CU>K1=)S@YVpM} +zmRxGSl$=fZ`TU^@N)+1 +zwfo@J&trZ|6TG)@yIQ<|4aV7h@X9Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91te^t`1ONa40RR91tN;K20QUr(*#H1Q07*naRCodGy$6_N$8jbY)z#kj +zO!s(;u^70)z=Hq*5hOuxM2VsmDea1sc&n4R-*@`R@4oN$wC46sw|jTHI_*)UDDp%r +zk~kU=AP5qcAORBI%>XkP?@fDG)m_zn{~ww0Ue>Eu)zv*SFeG!PD>EY_A|oT?#Y^|z +z%giFk0s_f0nalzxtCO4$zUPA{TX8=4o)4bCPO@fZW@Z*-u+`0O?ot{%JExW~AKY5_ +z%@=1r_0I=)zH-!pKcD*NgIi18^Tk<6{R=kO^W_QV+vr;Ge=BP(TADx3E1}m+u~;l| +za|^M0Hg%zN^H)<$vCujfN*C8W|I|Y3TqxcAC5$N+TIWLP;+p49l^N{ZBxjHDN?e%> +zmHM}`E>v^X=@zQjOrcOH@vzmaNiUu2%9^V@o$L95&LzuS<>yDLbgpyBGFN#z*Yg9N +zOP0CHYnAGp7;LST{TA=H8aP`G)RO_-a~RIm)e!Qml&+<&YB<%(D%H7AcrA5R!>Lxb +zP?;*x)lyeAoN8s2>Rc#%K6PcLr>9G;b)mKXmhQJ2co{TMA9~mMSo(ZqJ6pbK^l7m9 +z$W#gUZ26|qr@<=KKOgwn@=c>pgUv^#O1S5WZ)R$0>bD-Yl9qo9f7NNAYz)gQfg$v~ +zm87<-#%L-%Hw{*ynz*g`eBN|g3HLW1 +zP6KrFQpQjhI+R_?Un*VyT#iL0f%sIgc{qM0#J|myX`o~bTUH8yT?J`n +zwZf|Ls8&Y)bCriO%m+85OQy}Z2(Qc3NtS=vddbwORXKE6;q1(eOwSZ#x;Tx$f)r+p +zGBblezv@y4E3C_8rM@mJ4WO^DtCz-X1NhX@I!pKzL0bU7+1VL|+r{9qQlo0^tyV^6 +zbCrh`&IdQ73)9tjR4XHousoB?<$mKmEWIF1MQtccfuFgGkC`7s%vo{(H2FH}IIV^-a>&&?=ox?b6fSC5u~o +zWJ%j1>1|ysi(0y*qp=+qMppaTE`}m_vV-cpH`l`7;GdE)tXZwN +zb*RCZPopuI#cB9q8Os^cU`aUZ@^^W&hwIIXrS)PEYi! +zapnqBYLLnc24o(TvGa&l!XbbQF2)7H`gmc$gYr*x056+`2X3x!R3q+d?UmJ?%Vd4e +z8d=x1N|tvlk+#NGWkkcJCnv3WUpi^>XL}ixr>0^Zr0K$77L&x%$=I{g$jU+((`oQD +znBg*>udGI!nVg(7-4ga|9qd+5Wj19Sr4HV-fLrS<=#ZQqACSpH +zP7S)Aw{#jbVlzxr68SOcFO0EjP@{GjG&l?7K_e_;I8eawf*u+sAT995eQk^7g6=i4 +zt#6ZT?cE^D+n1;;9CqY!@sQSx*ZBRq$7--vVGY$S=+Tz$JJ9XTzX!% +z*Nm6?u=ZQJl8&sLb%bflGY*6C4Pjy0>LFg3CXVF|-*Akl)t|%*@iP+>6LYu*Lx1hX +zcKhVmk>2zSZtag9dsZGk@`SuJcmU(iNudX&5i_PDbTnI0BP@t7YGRk>7pkLjKCTv+ +zp!dw2&`lMmaIqD2n6R;Dtz5Tihg`Yh5*-82pnP&VuPxv(=hro;!J1`mWAn3tcB;& +zc&5RuhPcee(^D8Wv`XN`xQNxy1%& +zY%sW-Q$yu#-WKx98<{kex$@;4 +zVn~wKO48tIFvG7DCux#-8l*FtNemab0kN%jle}~D8|8{+7wg4JxJ@Q2)$(eGtHFj> +z90j&~c(oWjY*2W0Rl~KbFXWMgg}kheBu|4g<}wg>kT_1=hxO9iUc5_wb?hnHr^1L6 +z8)|vyvfPDaSu#(oG*~sb<6QkWn24ePT3WzgbxtuEC6V$kSjUFXL}K4L>tFI!Z0PW&(w!_u!5Z +zcbUGo`zP|_eGlroX&c6_46&hVwuYaiA=E(filNjlt9e|GWjTJo^@7*Sdp5r*(jD(Y +z&L_WOjhT1FYOu88@CqOogPDaV%dIBEGaANrrC6FVLx}4j?l**6eJn}V$yqU%pSY<0 +zIA;7`fByTjA8V*>jV-v@{sxZG}bQULTsRZ|UWMe2{oMcmyH^dTPN``n0waH4X +zIvl#;au_F{Z(4VQd|=x& +zai?cz|4Z`4r@sZSdRW?#XD481Uh(6O^Vuj$8i3^yYtpQW1lIXXvydUJJmBGw{IAhl +zIl-1TeuNnw(_t`NgION2CevggE(;mb$^#z2sKY-(#;~)uzI(O&i%Z{+$=OET>C;u- +zlyPmf{$j0jl@rH;;aY6)FlHG;Xaknc3=a=mYeSk>MVe#LdUyq{G5&Dxz4Fg5{1D!> +zsN*qu+_D;KWDGi#dKD}#xWHKvmOU=<)tvgEvF4>468DXC6#!TQooY2x?_?& +z{IjuVo&5Rbe<;h_mdF@ZU|x;m+RS_mHfiml(vxM$d^Oy#jGmPTnO_*#EC2P$FUvq~ +zNS9%Ft70%G7Sb>s8V1u0W~gcTuq;f6bjqa4PgrM&7S-qMFf7t^NEhLHth9V6UzjF| +z4!9kO`8s5uN +z#@Q>4^^xOG%IBW>nm&HQbE|H=I=2X+eT3;W$_!e~+ag1lc90r>O>@QvWCogxLnvRE +zPNNIu3)5-16=5b=6yHmSC|}z79UP)=gn}~Z#yXcf3Iz^vE2TsHO6icc5>6U?K6D{&rF2>yNmxjm +zEUT9HbnFXGxawx>RjE{tLHg?F}2Y)7C +z-1#kCvf_Fm9}28EK%;VN4Iyr&bS=C>+7$e_I8G^=W;s=?A%vur(lxNDsJFRjeVvq+ +zs{%aO{>A6NrQ@78ue}kTc2w_tbFn#}ah3D +zr&M$Ec1NiF_*YjgxOri#7hD^T$NX+$VqkJSJEiGvObf +zr*i97uFhFZiOpaXVoIfkLxo51KvsisT5Y{%FhfJ$JW0sk>ZEbqSk(v$6! +zMf|Jlly>CX>RO~Z!)LUTJ@pe&7C^_BcEyT$R_%!mvWM`RFx +zW3v+|D=4k;p~$3-LIqi^Tw4j8C`4)B{wNQ=^Uy0VIK2qbN9?OE4Bs|&uhTOfgfGMf +zA{iHu$ecNICeX?PICv7f8t3A`K|Qb3)42ipk5BwRGK?8$Q(c34FTGk#8Y);PeX*w5 +zff0_D$F*r0dzoauqs{QbGBpJ7wK8IxL6bM-qemoON2W!V)-RS-^-E=0cCmD4JESFJ +z&w^1rUSj;m8l2!3Q;xU}m!=`}!el*^lpcF>HZMcPQ8`iUmm`Ifa}au^ym_p%I8_vY6C={ +z53XmgQRejN(@xVNbe?H8mI71?R!+sRfi#N$^~ul4{?Q}STHm4`mx|X;i1hBX?BLF% +zRI%FCuIu6sbajWgEHkr=Qz4y`mNfjwTQ&c+!bn#)ER_untJF~GRcT~2OMMj)xH{fW +zrc$%4qyYzaQo3KmByS#>v^qv-#$mXpWbf1wISd1yn4QFc1Ft!P@vZ@j)pe511s5rcY1r +zjM2TkZFxhlY;W2k8{tt~F&m77{gLVmCEA4R3ou +z9?Ly1r;3Bp1Q^S7&3X=A=d##rn*I7$mwrMvb*na|15@e_K!m5tS4txqyZ!Yyxc5`T_7Z(BL++BDZS$(7C9i;Xrc3q7>K)9|d!V&bTbXaiRyCTH^UME(UB?oP;`*ET6e +zIFG2LrzG6+7F(rr#Oza^pIzCuOg?+rpXxZ=#cj$$a7gq6<#z%PMGMOHa4u5n_91gcU`1jmg7@;-Pcl}H|03D +zsjg8@6$a#iiO1xn>BGXYEscnV`*H=IFBrjzt~afCo&3?J_vw+u^X+9bCr+FwXP5+60`*=kr0J>>{#>~1cOLlu^hJLp +zm-SpIol1NO|+NUv(SSU%YG7U`>BgbA9TwX+HK7gh*Z)Hw{Dz*B +zHc=^`w4Y>sVR_lsY!bPad?*O)eJ4XxYd#+Ds8jNBj(oPI=pbn-rBv!ml8`Movoz{DkoI^u~I+d#!6LmE7U +zS=!=|o-hXEYd97saSbmG9@2zq;_^<$F*-LO-rey#(pA?XznFYVjhIaeZE8rq +z)oK`^4Gknrvl=zzN5 +zoka0@rXtW+Nm`kbF?qYVq&xw${xV$VIV_+PV4t(^8IpFvd>Y(f7N^k}ti;2H43%>Y +zKSpDycC|eC +zy0IK^I983tZuZpjX`e*qgUujNOF6Hbs+<4N)`eC^?hwmsRU1vFb=W$qWlE<+bg~f46%!7OCJaWfxAB21j*Jz!2 +zU>OSd^*B%Jc7w>rE?}dunDW^l#Ww*l_Sd$Oj(|wy92dtWmw< +zy!6UCtbSKtC>siW@MVSy+1U5A0op=ngh_iMgIZuAPO67BQ7Xlu5LPK;US(|<%RD;p +zth_k7AKuly0o(CG!-7U>#v7c2qtNn7U`le-4u>$$#3IBTv%aPMb#g^BmQ}EgY0n>J +zcnk7)o(u90z~8W=qw)Z5Aaeg$1CsLd7=z3Fq8@^4@fQ=NsCEI-w#_G;uH_!=;bGKNOr*YO{E`W1e +z;K(9MjTAOOW^wB$uE}UI(HM9q;e~qzE?|6+N$wi^xo$eRi^$>Vud1V5uTfnQl1hM_ +zmmy+ddAH-n9ZmNAQ-eF@szsORDv=ElA`+iS+7ZENu#hhL>`}78NkWzzEKHM`<=I(z +zbm-kD-FvUfloQo#jZ|vcQ{IfypE4O?ko$tc7P}`o~7( +z+0hqe>%gP(2dm#BOWT&>GfKzgr^oJ)Lu0!ITO~NYGK0+vk-`+dO)!lQ(@nl8hlhV9 +zSFCuy^t7+S&fk>G6lY}bv2RPUa7cPuHb`6Br)A*uw~%&0t@+k-9XX4J`x6ZmFtC7FOvRBpHcq*tZ= +zN_4(jiZ<}<@NU`Bv(1fV(O=16c4RTj!*qym@RBhsfph&CQ)6H;TftWdJ#gk%u0hr) +ziz$r%V}nf(NiS@0#UQPx*D;u;aRmd&9jxUIee!mUTY1Z)zSTgHh++z>9l?YP%91$z +z7vd(;94T^Vj>h`8FMUZ4=Z{Mx9y{k={-)-&a#_n}+19qfJ#BzB$GsE#<@0<0QO59f +z#AgPdlAR;ZsYm3Ym1QmKWo7dgS=PD%ux1Qd8e}woR316__cA^${Y4Onx$83u#* +zZ)pdVU%@1Brb%iG;OslnAYn`+X1nOQ`2DM|ANnqCrx+K5)0Vb%@~#zckrh~He%;X +zIJY0;;cExUAa%IqtA4!vC2jILqpqm4FAx6!9@g#nQL9d`re8-%7=!hL#Rk(t +z{6w@=t0&?Mr+Kl{7HAV2+t=vh;_M3xW;@J>X)6!mVR__XLqto5h{k|0`wQ_n6MkgS +z?Pt>iMprIm4AW|$l-vKYjbXXLqnMQh_%x^-eCjRjSIa6q8Gx_6qO((sm1Mwm^^t)O +zNLntK$f3YvXP%P%6GwFTaY5@^`Lj(Q$M_Ss@H!l(pRy++#BeL`f(hae;-UiBT)IQ$Tt@DZ?Ta&3kD +zY3-tps4MD>!vk(KsBYNcK)=bf^^L_Wx3tF8m)B_srwyx`4=0$wQALB@=E4U8>qg^U3+9E%;;!TDii?$$ktHN^}(DUIjdE8Zjx4Gp>x +z!p_$}zpb|q$nXg^L&WXE^G +zXtXu7nOB2qpB2C#COy3qOu$CXM>Li^`RaHyfH6Fc +z7I$6Pj0LkZgN3n`87^bODtg!?aY$&yjCtiW!bqPPc@eYcA-6W^H1DolB2~&K%R;=A +zG!I{M!tmyf>mqMN78at;0l=l50niA-z%qs~wlv{f7UK@xP+rQX(T +z1A=%od_FS5x1+GUw{fvvtf%v*u$(iFTDfsi>izZmwlK7ww$;*s89#5I6H{j}{Fnqg +zZ#>Xxdk2OAb?99D&*()7dFoInU-0@R +z{X-HXOG_Ipj9FnKPjAatP0=QvhHcPBLN7~_YQgN!a4cWZ!xGVuEX}w6rw!6$ABHv5??W;G#>5jc#dG`b$m9t*fb~KS2jcGX +zjLIVGPAf>Z*5HgCE|tzP<1##QeGP^JR5F*fv;#f5r7c!4S+kQhSiQ)XzRUn0lVM|6kLLPn>|H~-m@dG}PQv>TzX5dh9K-VJ +z(7*}n6jCO;2NMF&4BS_9Bklz7z)AvIj)!XrtXnUB@aOjJvie@V_{(cDZYGoEYmeCq +zKEhAiI0_r#qe#}qWK6ChjOj3MwMHJ+2tq_dvNDT9MtuDE`LUPu1rfSbqQ(HsC`N;$ +zbO^5{4MO)HKA|8twC%u)D_Ug+w?s1l#$lQ=8jQwZ{|INGak+m~XZpVa7Fb)bE48v^ +znbM!0>X)5^FXG9GHa)LEne@-|_#)P$Te(DqA%)?h5S_p`i?_>( +z;a%7*JFT*|H?4rt(qR3TE%=XNH6R1sVmM7I{(ub^wvZ!yVwaY&FEXtwk#-kH)ON3z +zWM288jAP6;c=#LIE?3>E4y|2P*d86wv-@43#1@!#a98fi4A)}APUdNFJb|>TVHq|FHt9?^ +zoMC%y5-3>uO?{8`cbKrHvWmRVpxnH(-Mz4 +zcb0+%>xKom?9j$aAz7Bp*Srp!B%~mGMB^mZ3y`h+ +z-;p03xgDCx$TxO>0nhK>A{)9d#E_v0D+H6+;o2!LoVo|?rWI%eMR!HkC~%w&_-x0 +zOB#Fi5hdbP3dueV^HpC4N5rt9mS@ZxY6HB+KFm7!>Jmk(|H135WyOr9Nh +z9G-Dj?mPTldGy5HcmeqYkwcw;7*+hL}SHR7(@A-9r%%8&10kSz%PBo7PL+st@2+>mE>dtyM8=`r%}YYqQ(%WCnHIkC%0D +zh!+JF$@LZcgF%18G+|zJHB@VcViVs@ym(;fCFpQv(=vEkj?d8rQJaD1Z7mslHc_Nw +zSR$qU5i5jS-l*xdc4Oh2GP>rtl7!4Ew9$l^rB`B%VJS9b%+?JF|$3rL(C+KE3S|a#QbB&;`b$2&3?fCo!%a +zrB?$VPGa7>>K)i9c$Z9NrsRX0KPqoriG6;+Df1+ZYZyyc^un-Om1*meH_DBh|5Oja +z=n4V7D+J>>HVbdOX6>IyYwI=uXofth$0L(Gq2*Q;W;(Bx?1q0W4LB_}3ppu8QU{bZ +z3|7vVf4n#;A9YI|bLGWwj4s)iDx?)^T#i9-5{jy1&*T9&hV}H7Y>RM)u-wwY<>a~e +zhzLpHLkupbkD=oZ<&Nv^DZIM0zNEwqpp}D(4b`ysJd_&;H7-wbTQ2I_ET7u&ky7vBYYoMu6wLEZ!MF4=&*4FHW3&A6mJi8I!`I8>r=P}7)+zNW +zG|07BPrbbN5?Oi;!fCE2B0ZZkDesviB$;>ILmMD3j`?XTd;u-g +zy`!4@x9S+yEIrAF0&vOaC>F>E3cQWD^~VTrUXr9Ym`HMHfkv3a1cf{{_iWHzFzSZ#a5BZm#wWP& +zkAH-*Y!V%_q+^*Z?|g5BPs5^d(sNIv9G0dA8XK0$#oexHOc0x~J-b7?aTL*35V-Tk +zV`3a$V7VkR*0~%^*upT)yNnxlEs_mQt8toZck}>bh&S)FH3fufu&@!@$|>BL)- +zl6u$<>pSZK(rWv3eKkRu$d)jxkg29CUOF85P}kHsA0`Yhz&Ujn$`hs&ve0gLOw+Z| +z*-!#y&TKsRnG-cepfb6pb^;6E94DHgo3dlf$|=LOIK-rK`BGu75B6lcFs{Nl4_7FI +z>s;TNKCcBq+B(N@tvrkkXD%4alYGLw@d@K(I?P*r26K694=*jY6MyJFu_0Zp=@JiHE0J^W6VhK8 +z*6}Nq8wLu^v5~=pWQe9|!?T7uR=C|lfg3TVVk41sxQR}(PPdpymbN&ADU;wQ#4&Ih +ztWufbCS&3oEJ+)}Ep5%>DXk(;X3aDy8OyEAaE%}1G?Tz(I_ +zj%%&fE5;RZqBAv{fDtZF&t+UFsWP9xE#LKc~>g%*EwXfS?OxKNOHMeX=&`n +zW|Zf@?HPQRi>tY78dvC^za0^^zKL}2MPX!R@g{=9(tc%mAU3UpcVpVj5SIDc +z8(Vc1$S$CWe}#nE-n>05*X_9O$YW!Crz&4xnLIXT4KYjAD>aZ_%YBO@Fo4=n!1;aw +zeovqes{`)!MsdrnfoyfVrqX*&;A<}3` +zP3KZpIvzTQKD>*p3tQ84Nc_x*?LuaJ6 +z6d?x0Rg&}au#S(LHk`cdh^Xg^ySFNzs_J!jbW +zso_}p+_4(0x!bwXX=bPd${obvW(^dS_3BTQNy!t3!CGdq631|Wsko&Li*pWz}uo)cq>xt=G-| +za!q|H-h%jC-ugwQHB@pXh0j|$Ehb6`kIB?_s23E|o~&J-Y1L@nLjrQ+ZF(5D46iFM +zKO3PExV*~B9}8g_aH9de(V<-Rz%o3xgsYq}8k%S%xjv40mEt- +zcu|dK8qZ~AaEi-qtE!O7Hp4Rk`C)0qsjNcx20Uil1AOe0M~Xq4V9<4ACnP&|REl_b +zaTc2xg5TQm;u2QDU+tdGq{K@rAZXkIL{t$q4PgVQnm@I9BX&QS2JYn3*`Rj$v$3>$wx(=;Q?yW0$8EV6e`uk7Gv5 +z#pYNXpV9{4Cn2a-tz}46ETeyMSNWp)PQ4wmBdQr}=tat#w*Ux+BQtoould+LvVPa! +zLe!!hUH5(&+WLo*oyJ{-2F3vRERX%2d`UJv^>1Zl@#S*p^8XQM19-@VXJ8>UF6;s} +zRk}_-EURAlZ*m+DCH7zZ2^eBQvZIG(!_)r@PGR9DN29cWiy+^$NQSyEmce!Jkr{kH +zpbiH|LZda*a~)I9)PE0jU$%Q0Rc8HcJ#R4)tc>Y$8(=AIW*ieQdkgz~jFnvDOP9GC +z0&R|q%+WDFHNH@2GD+qWjLmQr9N+@ZF%yrYbz%WqZx?#0I(ju;bpvd;V`2xF6E)PF +zH9khb=ci_Id+$AdFX})VW4gts9+J!?4qM~aZo%mEqQ$Jf6A#-hdEtvPjnxe=8ijOn +za>kDX+C08Tsr3THkbwNAnik8+B{$0HC9lKZ4Kmz)sbt~Zmma%Y)<5yr(s1T!y)bx8 +z#p*N}s>LC0m`SOP(T%?^^?03;28ga&!tD>}-sqUXqzV_tcr)Grl>ixdarD0QP35qrAKXJ-DY&Alwlza310~eD=W7RjA;}s +zU>4LsP-m$8YH7nKz2O-wEl*|gNz@*mmn}}o(CRnI@P_wd!qg8Dh2>$Icnn5sv4h5N%~J<>^I|r=QT%FuerSQgD&Hj|1 +zx6zV^5Lr+y(17@#TWb7Qq8JKH>G_8crWN4fR<3b?&paEvMs +zb{)G<>ZS%|VEIjwY3_y`B7-Y$QQ;QD^YYjqU$nuFbM4oJG+?`N9Nzf!s<*-`9+4H# +z{T*KHhBai4RlVNOf|539a}zM-2|4O`+r*3F3V2kfId?|t;N9_lBC4r`$NA6+cQUDe +z>k%iX`_(?85I&UjGvHx9OdCFRz_nQ2mQ{0tRe7T|oMar9M;?|)X60epU`pgHN-I<2 +zB@L02A!tytsA`@K1_Bkv+cQIwm35F7*6`zuDn?A^T?sr1CPkUiW3u?fLo$s+*5mlV +zL>3-_8-q%;oTFf}|UgOkN`fZz?drT1_97wVBa`=5}-yZ%vE34Bu$ +zjfq>vl)C^NFJ=@5W1pqLbArOLEuo&Qk{*)q^!ECCf+(cpSrPUD`y%RJUvEHCJy`{x +zwqxfA%ox++(Dp1Hc~~Q$6k$4)iWNm=CJ^J~ABmE%TJlQgRir)0j!g4P`B#!_Un_lweAq6^Hq`(poVqkN+Z%OBjMVR?^qQ?yMr3!(;Kjj(7K%i9Otvz103^$k`7|1XDJ~wr +z&g2GU(XspCCOf6?^uzdj1SsZTC@<2DUDA!06b}vW6TwT}Tr1+X=8`Ja^l$*cuDX8x>7`BXdAsJ-nC%W=}a1vxSr!blMG(UG2XRNGEJSB +zJd8sQN0`(H+rdD%wclbb@IN6eOtaYOocwVCJD;jDQLa!nZ}<_6gY77I#1fdNM-fXoDA$G=s_~0>lqQm$ +zm&})9m*zOW^d<`SiW%)ma9gjD25v9|90 +zuJj$bTQ@OASKorohPXr1+DDkdlX2K$DhNUFlB8OH5W +zd~1>8#(Mbt6lan8YMW#oB^91sMlU{$5sP?|w)^-4ykg}To_NizeuGYOIBR#(K{hNa +zW&3x^`bYnbbf0=eMkd|^FS|kopwV#$jJRw!A0Voq9+e4B!p084@P3N1C~jsfhP|E*1_kbyZ(3!=Vm*Q;Fc)Oc?Elk5}L5()Jt+SBG0vBqJbK +z3s%k;b6B_R6bc;>(}OsXy)aRkD~Ym^CgQre?n;I6)H`3CVOw}c6E-MJrA*Yr#}{2LQ!B2MCR{MH^)!ySBQk(Z_g#Vs)eh-7_!FK2A&vNgc^7xiaL#~okS{kIGWdF68(#X`_RQY^#^Ch^ +zL!QLbxcwLWuH-Iwo7Cf3C|&Y$NOS(CwRJ8cl?y`C`|%4fZez$zyyCtj7Z{Z?^Rg<$ +zNv>f3lWqfEFIYC?KeH*4SlZ%{S6E&$hD{=+<{>Aq5PCn}I$R%l?}(MP@w$E%y)FW{M2cWZJgGI?C5yIhz~D>oS9a$GEuZ~+@-{TtpdjPACak!wYZGoB_pp4t{9uvgI_-k +zd%7KufiK3kD-D&J!{L_G8{ZFf?|HQrkvw*p3hgUodhs^AGYbb`a3Rb>$)y_b$W@~9 +zwpKy5B2>cF0dAf0HAZ@W@fDjUX1!;$o>s}|?AToJVZM?LP@`NOpzZMK11^n{h_a>` +zs==)-#EFIkCi7e|E95&!THyW60HemJ$c}@R89(Br1?q!kjt6c@5S~}}$jq3m&MZR# +zJQ%MEAFN^47=kTrybM2yYjDzN8P-$jA*a{fB10FvRqC(-P{$Vs^Y*S)Iz=iSZ~NH& +zn(f&r!+jUSLl!Ysg)wzuV`0Z%>Zz_QJfSCK6^;*h((n`q^sIv+)3IDewttF(Xx@Ib +zUUm%R5KOpulaAWw^+4IJEtS&7&&svEtQR~CW;l$koa?XDJ>O?W!$OJnjpFdf-&IX& +zErqUJ|ApA4X_A6ixzTp&@J=zlm0S%xp#z5tdJngl@W{iO0tmDQrNtDGS794G0e3=B +zqlOA~xQ@*8K!mJmh=Jtuslqc@IeRGab}M< +zS<^UT52@9a)Q1fCW9xJZLk0>4`FLxuho{wcP~ISDlL=FtVRu{iMyK8vOIBbKP`ISy +zMgDGFOlT;7EoozFxE3dQg?QGtJYdc9BKj$Nb}U6yp**(bO>~waU5gFyuFN-3at<`* +zd7IHvMzcASD>PP?M;A;aCxY(?WS+W17CruLSS?{4fsr +z(O@}eI5CZ_VBQ(#)35Wu?S}2pHuaB2n{Y7JUXv}%SM;!9qmpS3mU}Xt+9+L`AOZyr +z1Fa~h^l3P0u(Y}ikCSP>iIR7>=m2-J4-@^R{9N~x +z_jdx9eam}OH*7~ITwWM6NQ+Izw0z`YiDZJO5kzGWf@`GR8GLfbpQtkYk~rB=Ul_H) +z$}Nt{VXzpx4Hie_RG}a5ds?GUTH5WZv<^p1qb>4fzZ@>&l#@bn)mqGkQ+|t$N0<-O +zR-P7zcwsuktpq1dwX(20i5KR>bXadP9pZ)Q5YON`nZ}C6q5Lt`y%}uOUq+PZF9oN; +zSdf6zU^$Va?YO6*OZ8#0FjjKAladwE45>R^Brqby!jHj7#j#FkVXW=a4GRnMKrn@jgi9ftAZnj)PS*kJ^}EJH22y~!a0Yg8DLp2lb`HtH}R +zJ-I+-@evn3bZD_xAn8JyFl{`cC@KqcD%=-*IxN%Xs!}3oNh0LQogm!}LL9=`K(|X2 +zld>v)j+3w6;+URQgfw9~rV4PNE9!dR)DgF&#j8INxGhh<7Q!@jUMUzJha0q+&P==7 +zkTEmcB7JCg$u#qB)bDE|fDH=~O^C3;ygFJ@@uIpe8N_#^`24z_on(bdz+dm-JdC!Z +zWr(e9)(`>+i}FbE9Kj3u{c@|^s0JK!(+b=Vnc5#AU=Vp?z(bh>s`MlbOjjD3@uUO1 +zv<2P&FW^a6tPE&ieJOzkn!&pTviO#l9y-?s!QcwGAK^uGJd#+4a@8;BXNvAH3|aA= +z1VpD176IqQ(};}=l?RRD=Q;BQ;G?__FNtfa$1y_?Oym2sQ-p)Mxq&Zic3R?PJ5fLx +zWU8+qFHlMXS6BG?yBG5Nyxvrq5f1xCn}i=rM}fnw4{Qd{bm&Tu +zHp1JS!(tOlFV18>8pDPJmJZ|4h&ldfz&hHJ%p%z%hg8T|&{$}SY#~m&hFG5Zgp8^L +z!{wNjr{4GDY9GK`p*y*O;7>al4rAB(u9HgOs-9AwitCjTwuMT|(0H2pCK4FOzFks0 +zum^`>@X8>Jg=gBkq<-xtXPO03&T^ +z>yVz6tEIEI7avBRlJSudHAotETRSF;prFHZC^Kx9v`^KP08+K{I1um^mVn#s-6yPM$E|WfiZc$ +ze?q2kTVIUpZAV|bENN?yVZIq3`V9NWbY=B3&(At>Ig2{C=eb-@#d@?pBfh0ACM>MO +z(qTCbb}4M8VYXghp6oyCpgJJEg_8aOFwB>DSR=5Qh-{RFC=V$(*;)OP_JsF|LV@(MH@07?Pg-)HyCjfxBwxgUKnIV?9F^f( +ztWX$=z_1E?o|F39J}>qA@I8aPz77qG4p`jAhc|NVoie#~yR^Ogqtd)|B|bHP4FY&U +zHiR!PhFg_mzkE5j+p-#q#kH6I|lk%yJZSu*Do!B*`-ki~v +z=nom{f)1z|+rhuW2cD^O{Zfw(uRx^>+uAWehK^OuK5w1oRnIXh2!Mx(uqYtIzCg61 +z4j_7x$OLV0Ces0x+;a8uN!~Yna7W&b*cTSW&Fp%0!-+ +z+zErd0-U@NlC_1%AdSB(2y>xvMi(5=sL%|?sIxHE;-mLV```Ufm`&o8KRntrCUMg( +zfWu(nDxJ4|`VkpCxJNqvVW{JyqZr$|+dk!TvSFhH9-hO9qbK|2Yj-{_q<09(D=RzMl+AlvlIU&Co#I75>GhTD;6aa%g4CDRmvpIZ2ZASjXr9Co& +zB|knrkqjy?bj!QilhCybYy?w?nTY7ZG|POjepg%%59t9Xf7;42!QIB+EzOpUO)YUn +z4;yxFIU_ts1|PCG(}m@&4mmSBjKeT|0+N_)6cW7Bw84Z0jnmeLjRKx#LmZ5!z=QAY +z+Le1rj$xUFFV^70YpMsbw4fbt85c*!5E*nST-%09GZ?QH4&(62=l+^IC@@sKV*bJ_ +zr0~Y~NnP)9SJ&`>5@%r +zS4dk+lZ;Q#$j|qkly_aWPI@r}I6QzIGyLO8j(wAO#~BXP>{#3?Z&}?b%R8F!5xk;& +z=SWT-90g8uR{m~(QEu!Vm$#yPc#3Z*EY%hJsu707rL3LMwZ1D&`_KBr;;=uBiN)Z_ +zb{J~H2G~YECA&D&4ReKFFq&OxsOn*>T>(6?+A7T$7Az5*(Z^%TIDNy0s?-o(({qXC +zTNt!Erf^%p!`Rn;Y~oq@-R?Kb6rR_Q&fyY~O7b0UbY`q-2#K;192jT;ldFaw{F5|} +zVGP-TcLZE@v&g^tcleSwCN-!_n}YFc^JUk_&=>zRHYk1}#iRRW?Aga;@%6XJ_z8@$ +zAG#Z7v)gcM&&i56yhGN$@$EX+FI3O`Z?mb<s6ZzQY +zf_(Bt^DZ=Y=#^14FtE|1{Z8D4T +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 +z0b41&M=DfG3Yi&g1D<*R+f)A}-ygaMU!=wx +zt3hXFA(A4}0H(2LkbSLcG9@yE|tS%+uA%V?Oxv!L3w3hXDGy +zBHU@deC9U!=fOL4+com6mGoB$Ua6uqIC!wXoABJpP5B*~Hd{zV_jVTAPbGZAF+L?b +zU6qIo*1}_}@?b +z1NPtwny)n3ph9X1#0zo5bQ-O^@*lMA%(Ex-6c$oR +zJsZz+5!1V}kJ;DkbM}2T?`pP^jMHQ>94m{)uv7*MEj9#;4Q@&c8KuG?GMBk-$Zwb3 +z4Tt1R-H@J#iU1%t7pF1a1Qe5O}km)ov=o?Lr1nXPXe2liQfN4K=ahGVhu +zh{mwS%wj{d*x-yU9hN0wETdOzo@tafPF}6&BAuc6CL{9tvx%f*2OyO}Tw-Y2l>mmE +z!aWZ092#Qcx^lu;cUOJ89LOJ$&m8?v^1b1o;BgR~%)~8Iw+cNU&pPs+RE+&8>l!?( +zDbwO4&sz9|v{ru@8&8Wl1mMGiTp?lGK6B(h=?Sb(w3+Rr4xA1>#W~O`IjO!qOG|SV +zh<)6G1N^F6Uv5#F&9E%A8B1Giv=$qW%mWWRVD(yA)tE{&rj};RVDOLuji_a|Nq*S& +zko>X<2QFrtgGP~#)rZy-i^Hoo&XwXhN`pC19OIe<7}w$-l{kU7@?G1uUH-WD_vC`+ +zH8PGb7xMXdeQC0xzXoDH6~M6jwM3Crhgupz@*(o_@omT5F! +z?z~-2X9qDf=Tr4u;HT=G$=Yws(@IPMrtlDMu$YQGV_q)JT4=aDVb8~y-`n#hd1v=6 +z*a7O$H_Fgkv7Cx|H3nYvG(=7uc^q)KI4ZYe72vyrKha?hHw36py~Ah&&c9ySryL6O +z6?^34BkzRi;$p!+SM&MPV&?w)?~i)jI*gvutlDA|AC-zVUtMGZG5(Ui3> +z0iH9vPw?a&D5QF(ZsGCnx=sN6Pim%iDNukGiWw_W_D7b>|#U280>#I@^{MyVGO +zem^?$Hd$R*sv8FMuGVIYtwQE4*qzv5$-Ln)wlb!PUt+KXp07Zqw$8T5FIt|KyV@U? +z))_nAh8pM6RajmrO~I{9WBhQ;Ykj5)b3+FjCBFqWg(a`8Ef>f;yWW5&a(754wlSyi +zCY3z?NTvr-lqs3NJb{Lwo)QA+SIsd_9Vv{;!(&g#?bu>{VRE0oKS1Bm0-c5(suHs8 +z3~YeuLjfs2VR@xA$*fFccN%K~xBs_{T_@L1UWP;alX{`2)Nsy0YOrjyS$nbuQwYn` +z@IqJ;m%L)WT${xSK1{;C*LlA@)w~-992jk~;z&zn1?L1nFG1DwG3Nqama(pBmAs+z +zI=KPw@mk%u9CG8M5i|HU7oJ0+0VzI>9)=LN$$0?Fn=UL)3L3&ySKbiJNLdHhQXBCI +z3(sX7o;ofMjXfs!jy$3hDn5K^U++<)PF7G;-mI@CLARAaMcY8L%kB0`OJOy-N$S3WeKc^!vT8Ruk`##jyIf!0pt9s +znsSXIoSnX-O3VT2<0{DTQ%n3l828^VYrPO2_j0+kWs59nzypgqnZZYTV7wgf@^CT( +z?bkZW;;4ckVRe~dvdF>QTN?Ss71lu`JvH4g&rH4ukNTuMJ+VvQhRu}?t_YBZIOiqQ +zpjW*!VZC*Ep-(IEgZ{I$+Yt=f{pmFRvJI>FUszP8zl#L#j8x1*lRvK4t{UX`Y +zyiP8K0bhu9+!YPW^r#+)WKK*p5eF@MJMw2};>Q`>19Ep@e25%0IA|B)yeu92#uM?0lxFey-UaYCI|5==rgB +zhnr=F>U9!?7rrUnWJ@ZzoZ5A;!9)5GW@+*z4h@S5dQ^^QX)rXNJ{a)orsXCypOJ73KSkp8xG<0Nt}4?YS}Nhb>D}lf1nP3wGvN5Qmdv(#8HtY +zEKZVoIB(znPOiiy^D)q9=Mk4dGp>Ek^TK%G4SD*=h6RMv`*HHarypAIycA>3=jJ%>8xkV9jN1kWyr<_gX^Qu1 +zX;_LJ)(2B{c(?4}^^vjaPL{UIja$#w2CQncmr8kqM~7bwV6h2eaW%N%SX>D=EVncj +zGmd4FE627f*ti-lOvz(5W(dZ-Qk=x28{>E&Ef}uFX*dQ;!|^ai<|`xPv?`Oa +z@pB~3xDEC)$ZAzZaap@yh#Z<>a?FgD#u59u-rU(u*bUTP2c(b<#rtmRR&&Y}R1W>X{} +z9{()uW5Xp}i^FnDgDmJI=A!#}at5bmtXmTvjl2QylM@AM9ynJ2t4vldQE{n?4-dY( +z|7N*xVx5d9@uf+SMw5m|nBkfLX?1ZcbR3>`D-_j+ +z6@>5hJ|Lr6d~X&@U|heoz@dWKhBE|TLIYrk3z6|KEwCRT7%o9Hq!PT4#>$MTn}{fh +zvI}vQSqbmgimbfdbJwb)*e35i{d!rQU#6Z_-$@4DB>PL7POYWbjg=*1!>wimtjF+3 +zAEuel+Mb +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 +bsp7u@<4{N+<zgltxi~k=(by1g> +zK`9@l-TT-11lCosR8c|U_}9ikL4`w5F#adRS{N6zH|L +zyN;Io$%}j&j6C6~xS1yDOA4;0m8Hcei+`oXE9GuwXoTq}{_wVQ6B)_Q6xw^61P`DR +zFSc}F#6@2m)R1DwcKyD()Ro(q&nKK_N7Cp2Gs3<6uNVe>MD!HC8$*?0Tv1%NPZ?8o +z%;1ou$!Zp0{AM={eOB(TToyN{LOwd*W#B&Q_KEtkSm-*?RfR)+iXOwuGjVHt +zZbDI*JJQ9M+OwvweMTNd3J7HN7e$?|F$I3ip3gtF;V)t#pS79&Mv +zTqVnc!+%H-rooPtHZ360JrJcwPv`zXR~`Rk&z81aBW3`V6sXI5(dN{qvFE09zo>7{ +z3F)k6C5i=FSyWev#4o?Qe1k?tCmYP&%eP8 +z&>hVPrx$k5py}5h^)ox%_ToP;ux?zXRJ_zckTAlzQ!e4g-eAWqDMwKX1F8!GsMLpU +z6BA2FU*h#8-|#6{B$RM<(7TP=A$s3FrRMU((-vM(*Ao3=?Zvmp#JLXt2=WUO=uq{V +zUSMt%mkEBpR~A6wp_4LG!6nIcJV +z$4LV$mdAbf&8v(0w+Roke8}HcYI};|!Hq_02MSg&m*gw|+ebh}?ze|Sa`ESd$G;(CiNMYPhj +zbzg%Y*HMzGVRSeL7aovO+vx3kO9;d|b~ZTia?Wt|J^M?~+JNsj2W`Sk?~lmYj~Bd6 +zAe&n61^Q;JiUzM3DuBF%qyxw(cX}(}${bxWxKMuUw&w>eodgdY5oPOXYV$?Ts?TgV +zj$ec0H);uLaiLb^M_#}Im?OYi}wlDw^8JDYB!Mqb=?P0k@L^(muCqQu5xo<`CX_ +zK2pcqVHscde`;?LcKvWoaGW$Jzw!h1rsRymGE7kCD*jGfS;X0_xpPmRXe#R5jw$ap +zDYa5`v&%%)WILO65FkOUM&Kxwbm|bum7#J3*f(BSto!fVrCm%-v&cYmy%ylqGNA@X +zFSLfa%unYv{?No+Q~wQ^=v<`MUzzbkFgU +z2BG@?`)i?Umn}W#&V84y!_2Zt^or35^)KbG@^1QCb)Te_x0(h91~gx)W)OF!!QW|> +z1nN!W+_r0g_3L-@w=ms0*MCeMrx9r%nA_yP#pUJ_*vpj;#KU3--gcmegHKJ(@rkx6F&6Z_aMyN||H +z^Q^@5UWS?C_x_hEM7x7%JJmgU)*Ul~)np){MM{xT8hT`7X}XTfkN=#Kq0wgraW3xE +zgT=G-O%_KIn~N$*Lt>IkfjXH~l)_L~U2)KP-4h_+g_M+ZIuVQJb7F%izA>R3HI0Yx +zuMk@&l~2Cr#?Y1Vntvv|L8?mpnTq-%VzEh9qx*cEMr{xsn;}k8_JQw)Ya_T6SB`dj +z3u85RYrLrD|_eBo0V$;Vw5Cb{nE5$qWt0+{( +zPNPID9^GwZ?2#qL@EHd2R&jcz;<=ADsxhL`R;DfK?iIZ@15tKuGUZENb)_e|VI@-p +zgP|RugCunmd&r7ie$&|*bfzHU1C7EAM&0Y}p&CQuCvl%_~|ugBc4h#@Y=vyJ5uQ~YFG7pc}?O&TjT +zcN`us_3qu3bAfKoLWh<7BsadLCPQ<@V)(51mcR}EA%nv+uGZi7$scJt4TS1xvg?Dj +zGe}qKZ;YG1zsT~7O1>+b@5$Dg#pGM;Y0vK9loWB@En`)hn*6)WeDe2P^=|F@#&on* +zou$&pq4~k=YnbOQ?9*+q7AI4BryRkQUSn_rt>IXlD?uM(u#~4S{jPqt!Bo{S`j2VP +z%jy2j<}NJDLHm?NZD-PtP;A{QNk2>VwV`>HGrV|UYlB8|k1N?O(dzK-z7|pC`c16K +zSzM+&vxE9!@!I%qcR^(E3g9r>1UV$<+?`0DYkZi$@90jBd>AyHbq{ug4L?+KwFMuX +z0T}{z`uh4>gb8=JUr&9tmwKG8db8zd+@fVnF~NdZS9$7Rn5uk#k- +zJ>dt@0>=7bdH9+m{pw+T3=JKfkbNf4-wgFOLG9z&I`e~@^=`Ex6Ui6*!(BQJWPw;^ +z3#~bNRYBh=|7S5R{3Ng*u()%;t%|=yY}-JID7UJS!r|Lfi-*Mk%uL4pt*_@CVsroM +z%>h}UmHLX!$~`xDT+<0(wGdjf=4jlk)%LLH?b%U?tK?E6Xfb*a*OWyaea%Q1h>Mj+ +zD33%T^aaUQ^Mn1vdzIhWUjarsyzp)sx!$+E3vw->{e+Sk%L0kD*s%G?R%7wm?#dv% +zOSAsHiWjR3{S<-2xKl|6Cu5fQjipg;7Kcg^I^(?o`=mqYgfB$J|$CN=Tcx9YG1m6-2O%JklGmwNzZJT*? +z*R&Ki2o4p`>_O3p|7N4YT0|KowC!TD+IOesvllo(L1zu&g+5a>wWAB;tcH=u?S2#B +z3t?%F>H(hIenOd=P^1K4^t*))#rI{h2vGt{lt>n`wF<-lhZ?P8C$~|?IyPqqprQrlBNkR;IGx>L*s64u2z7e5A^i_IvCaRMtq~^ +zujW@Nf-@5}`7g +zPIHVFQ18#+s(i9UfZU=uev@?<3Uu9s?DfP4pmQvHSSb8p;0YyLeyfd_*Jx#vDY@r_zsvsU0Fp*;Wp4J_bsOcQ0EZyaQDO +zJ{i&%#}CRFR*oq%cg|U(pQL0vdN)tEq*`gu8Z`&)&xPiBULuBkRE6D2WivV7I`XJx +z(9qIqW+7g8u9ZnTR7OyT=^gJ8H~0on_f~Z +z+VzsJZ#4B9(sEhFaAH13uC>f1j#|v|U0GI{G&}1Q0hd5yCqX&R07EyQZn}slvT^vl +z=;QZIhEJ*V$wN+m;Kp$;=hI29moE5eBEg=LA~~__aLd*|Rj#x&8J#Is;zYt(fW{e6 +zvEKidMTKD#9w<)+sEaZzsh#lvb{W%#am3!jt-7#=bH1xsO>o4AQS%`a`)5 +zGFv=#5EKCjTQDy0UU4<8wAl)NgOGdE-DEbYy~^=jek~;{m=DC4r53d-*iGi}X?Q8B +zQq&$0hIHPpks-Ko?Wsr<5#12P9qUOzS<&1ZJI4)Q`Q*zc&yT@ClUwRZ>KYN=XPU_q +zHaqCuLRmHwGw!6=-0&>(VD@A0d1ytxaQM5}JlGc|N5 +z1-Y{nNAR?_K^x%p@9Fwmg8J0FV_YxCq$bgAdyL+(fhAO3`52_k^<%x~<*0nci^=Ck +zU)6b>FQp)GS6FZq{XqF!pyP6~Z8XcHzVpary6v

FR->udafQFigSkIjuA2A?40r +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 +zIr1){5-780^I{E&~{dzHn0d=eMY~hHP{S +zOeOoaT(D4Hu(UE(XK-k}B^$Y8ehETXfQYbZ2#A(+BL2MyziHnSLx?!AqCg&9y7b23 +zvQKCX(lm)ZVdxMbuMz?_bFN6->XaWM0;gS@CXCRlF#iF+Pb#*WwPAgNgo-rlukuQBKk?yRKoSZ{OQr*`aji=Qxg0_tbrFQl+DNRF4lMMYaEcb_ +zD>>??PXPkdK_!NAbpXqyyQo6UroVP7=Kf2&kB2m7E4S9S!y@KNt*T(O;9?A`5~z5D +zbVC2kh&W|@d;ae?U1mSUGUKwjXvrSg?WqhDmKjDf_lg>1M5Jdu0=z(nL^CO>(wdZS +zImIxQaF`?|zUjM%R^XCU8O28>vy+y=@iA&c+$)-8Je|I!4tXA;0gkv{EQ{kRhfA_)P|)1;+l^dV<%KyZ)nqiJQZrR(?#Sa-x{%2iI*qp$<-W7 +zH6%}uGersohglphkpI;%fw1#@_bbDdulHCNwFR#RImTUUFE<$1AwsG|{DV2c(pj#r +z3$QM9%ZjE{iab-eRTOb;@7-W8Zbse`KBBlk&poD7x_^W$nH}xSgb|Z}m1l@K*gTOt +zQ6`f5Z%5Uj=viTJO)4V?6BZfKzo~K}{W2m!m!6u6rl+S*(KRnZwpENQ+7QT*tG&fkjP3H*_8as6R^TC5H +zFJ`~JM}Vip>_|Z`8DDq^C$sVn(d|AkmAh=2so3-RK>kz1_!vY&NviRl_-c31Si;P85|C*dzNAPDi= +z>IYu&3>P65SvTv?u(ceH2zLmF$dvD-vNwJhO?bBfb1vW3#?^NiZJZDT+2_id)wPAo +z$D3TilB`J*X2cm=sIGi;aW5y`$#5l*=%0yV5sa2F%Oy?J)JkP$wqgGwW}=9|KAfU< +zJSi@mr5PZ@Fu2K9pLf!QpoK5*wI>y%7FWK9k +z5i_RkFpM_1#bMKUUhB2LvO*Zgwvv9|WEFn?ZP~$sK +z=l++$jvEWp4Xq}dA*=j4kDytjA4Kx3S@4NB>mxdYrY}tVPKQH{=fhu^;&Un#(6hWC +zU-scQiVl}P>}Ahn1P^!v>jXlD%mwJSVfFZv>hhP<(+eGkl|b<;|Jrq6nD|>Qf~BCW +z{UF?DuAV1ZSktn4kxv5GhbyxmlZ}i0timk}COhI)E>qB#WD6llS35E}P44Y2yGj5T +zF|iaK%d_?Sw3vNt+yX*NLf(s#9#&wlTdkj&?!=nkuQI}eE$^ebU98Z*D6zBRe5W~n +z{96I{+nQ~mByi;-m`1mV*wdb^Ny2MaoGcotPqp;p}zvEI`Xax)o6xKyNJwlfoPJg +z?lW4RQ3Od-_6tEtlEC9|9RDthwS}|&|Lp2?QJ~}?shCU?sc%%u&MLyxf(d}5^d+O +z#C5WI$p`6?;FeL6HCUzeRG^o*)T&HLdabN*P5Y2(*m6aorP|18_Wce=TY;K-PSJe~ +zp5J6oLknQxZmi-^IZSBsGgvQrK<(~sMm)<|>W_9^=8|sd(km^R+iQEj!U~#X(oo$$ +z9fQ9ZCtbKcEs8TvwtmAl!=eBD!1hA}W^?*>az9>FSt&||xSzCpY$&3nyt9+pi!Zy6 +zjNR-{-fweIuXt3vGVc!J_1GIuDgMh+&-a6)S;Fznxg;c?0rh(6eON=?ngll%)$krwFVbKQzI%P=L_~(iT2zE(_?fg;_rAPTHa^PJBKYd?lHwyjDf72(Rklv +zO`D+Zjd1ctbBe6|La(KF*~#sW8hS76eGV9XCF-3TRCt`=mgb|P-BBa7k$X*e8;Xjo +z*V0k)x!AF2^TE6fMKqjpng8u);*aVa{YV1WB(|o}5&iwAjL?Dw +z(y5mZSi+X0QlourefNHdDPXMNPpvD?%F3663n{v!J1@_j4`?RYDa_9~07HXi3Frso +zEOD{|8pBGfZq>J3hyIEzhZx5`8E`}%kFA)ADRnat5m|g60Lal8l!3moDaWF--JV?L +z%>CXSOPe@XzTc)R>|Q!2f(2FWA6+*!PhDO6=LL54L`EJMB%eJbFXzs?hvhnvJ{6)`CJOrdV%obe!z|y#kR!UX^h~w>+=oURIU=mofY0d%0jkCHbWT-b7W}KN-Nu4!9#S6A9 +ziHJE{rLM5-woNPFxZL1YEr5o@?iz=8IDxf{q@B@RM@T#%rNGW-%??oa*srOgPlW_Z +z{N>k7-8Nt>H7DzMpwm?F-?p2&c8x-zPel}^0;IM?e>a6n`@;7#{)z>fkuIcZ7X6;$o|bx>V3k#&>rRp+lH=! +zMsC?}ErC$S;kb=ZRjY~(=|T+xO{uwsx|*2l##GhKJY_fGig);f(QCH)V7yDz(K&I! +zUs(LvaX4fA)uXRqd{9}k{jn>iViKD3)vv9L<;zwkq +zDc$A;L|pc5FDu$+I3yyHuhjuto0_tb6h=nF5eT6n(=RB5RzH=&!Z@U{1|KPB!&p6# +zq#jDK)y8EEvS8QypU6@$l#4#{Z!^9X-NjOV+Mi$@HdWw* +zn?%2+9U6|WS2o%1%?DERyD8DZ?_4=PDZU~3-3=#r-rB&J(`DS&Ei4foF@!R-# +zOQmE|c&DvfiNn_@Pbe%)HBF8 +z340Te@Yg`S)A`*uaT6GSpi*Dvz>_C#j!d=ezW`%!Vk|>y_9ml!`fg2SC>n7cF0W5h +z_MIJ!#D~H!X{`ex4yl?Kos9Qj8iKnmot-*hZkWZB@K>+&XmFjeUrc;(CFde)AYxbceV_0OlVe|FVC_GU-!t(_Y(t?P98` +z0JyQ2Ypq4d-}n+5d*Q5*i}>10( +z_@-55^LttMj!FYJcE@_}HwCk12^M@Ax6bvBSQ_H{$<3La34Z(l&1+nHflIwzq1E=; +zB*nx>_M5Vg5Kgb+pnB2*I^AH`8^>TB&Pc-6?LI|rIWDBiCjqinV)qi+Mgc2v2SLuf +zuKCBW!LE4tLX?plUxr9Ti=wg7F`fS2?a$(0;=CtbNdATX@IK#F;pF>Rw0cV_iu_ylrLP_1D!Wb>fr9I-U0Sb7k$gCz@?2N`8%J{%6-}E$?{E|9Ut% +z6JH_%RBN0^n~BYvKX?p(p_KKVUy*iR!{-lK+p_ +z_rDG0*r0cigO7%tjT=w}#9gyuPv`L+2GPum=W;3yr#3_@z|TuCP>1C@f!ID5vyC&k +zNYI&C(ah!xy?h;*khL7m^(xRde@Da~?kH6iH5*Mn#uv>rM%E(O_QrOo!kSzgR4P0; +z+CX7cfBudVDOBydLD=*(@13mS-XC|GI7ZOU_V=_o-8XVWQ7EM33n%Pms$+Gw9(z)oUYb~-m6aAQAJ30bjoax8D@o|GwC^O +z#0$zj;^xQ7-1-Ycl{_P#wA*%stS}>U{)D@wiqJSE>&v;SUKs}y8sP<4X8U=jY_z=7 +zx{KpkieWpjBDYAW`fvGbHhi196j$X6al|plpjf(WJ-DSzrD`oTm*Ii!qcGGoiIw|X +zs;p@9S9&a}*&aJB3pHZ)iqhv={i7QPS@R%#d&U?fzL; +zHZAvMcPYRfvxX!x%Ezu7zIjhL2gMj@m%7>63|%RK?&4e+ths=|ux(KXiYl_7cVdMU +zBUc&DN7p9tbO$~dmyd7NbRCf4UPOI=gEKnaXnd$oEoWSab|lW-U@ks%NkVHA9WM1| +z3B!(04U_XOex43pNYh~RD&8BwKRYWJ#kXz{r-vUtj1HiBhyB27cqP#S&JLNeU67TQ+nS+HW$cTYoh5gs{VmX2Jt%{wkXMNm9V%BWc +zPltH?_ivbOBU4GLpqFY)d5=qA8qHkMTp3TURWB&rt=aseS{JL4!-{j9;ZIgxdhzSV +zmT>GJO^aRQKZh=_Bg>qxiib82$(Jh0qukJxQB$c?Hxcg7wT3`g6EN)V>a94hi3qE1 +zbjL!Z!@^>#Qhi0Up*~D*J}X`cn+Z!8R%U$R0I^-=%0-X*f;wd60+VIWGN^Dgj>x6k +zQD7Q%6g-`Br>w05)=-uAw$))FzpjOjN&u4D95--hBr0TPMHE4Jr4vc)ncaNVUwOv{ +zrb`H~$g#oR$bF~Mc%~POF5IykG5@A-Fw^^=nNGId%<*(>d6fiuP39d#w|65;U^jFr +z)?kku4#|m7w-4H_v;!1B5v&l0qmsa?BXw5p!vqI+`5_@pcoCh86FLN;Mw5R&n8#N*}5=m +z9lo>S7PI^oZRsG8CsFX?Vl$rHlLGs?n}N&aEub2>ec(19ln#d@foVHAHE35K+X~)P +z{J{kOj;ip`HCpACNUdL^^W+5?)0GpkpX6VI2!YqHu<^z!rV@oa7lxr?!etg7A*9#i +zHm`r%zFe9;a?_}OzOwsCekT~S(ZYHOKD~E+6twoAVEP#|8P2Mod`(C3#lyi9%SDOQ +zhEYWbhj5|Tq8W#2+b}b@hm}uP6i!U5GTyzx0Oi66;o}W@UCl>GxctHF$DT8NMAYe5 +zZM8UUidPBJtvr%fv;|7E1b6r2-WQD@GkJ4V;wNTo^C;4!xP(PP0eZ@mb)ObI`W~q$ +zYX{@=#W`5;Ras{I3;*jKE#Wp=@?eKmapRTB8Ic>W=PXdtv}&=(q6x>VSbC3t0)y0>iCh5@rp$^soG_*;|ycHk>))E~OlX +ztu+_OfBX1-!4p8CUX!^5V3q7F}dgnWGbkHL)NYnk!e8G@Nb1MKVcjWek5btmO) +zS5s*cRdrf=NGcjBwN0Q7|00Qf=uw_BD+x!Q0S75ww)@p7nJ4z41CH9KpEiPal#XBO +z1)@z**%P +zYpTT};JBg!OBQDK?@5uXRd5ZzUM232mzr*G#r@-&u7#=!x?Lx>v%ak&e&l647~cDk +z@ur3U;fJFMe_Ex~mxraREartk*J~8h(1VbeZ8X$EgW7zb(#O&cv15|i-4aaRfP8Lk +zViizCM9MHh{o7z`+Rt7D3Tktm{k5;BUGi-44s--dt2pfZO+G4lac`o%aAmsLs-JYs +zU{VWV-Y|~NafCs=Ga(N#@C3cXyFQ58nIgZ(VDC39^y~K0JtBAE{~`un?2UT0SYetl3IaGN9Iz3L%_#hRF3 +z1{_UWzv)yUNz3%k`Ap?@rRx|6>W;XOJ6<>Zwh`qhLC1*v*tpxFpq@wG^s$=RjYdP!q&?d5h +zZ*e9I$o-){J=UMvZhY}6W6V#F0$7k|Kef +zUKX&;H^#M|w1b7sfaio&Lh|eALNrjbYtfBJCmSd%E7L&}e{Mg{>`9?B4vJY>8Xb5=m;(p5+ +zIp$)~P%=C=_PZNNgc+`}^@d3Z%# +zK9*s|nQ|dqei56u`1^9YP<+JGLt?S%CT&vCL$^S@VW?;OrqlE+@!f8xc({=iHdC4O +zW98+gBnOj$6j#k(iM(>rA}q>H|LfBZdmrnl%QYAz$E`Ko{^^x=c;j3E9Ov3cDYY=t +zkJ!X4y0WioIwhDW1+w}sDD%QevsP>WwDQAm2`8h&6Xz=m!~n=UEaY=)wQbgr|8tm%`14@W_Q+U>o3!SDycvt*HE +zHEjAE0#=^9ozskt?zCV4yc9u}b8*_5Og|phJX&Sh88Cv(pgR)fZ$9qj?HKw&++z1T +z%I#N_>FovVl_`Z>adQsWtwC?K9;IwJH7N1YVMyk_TP644P@6X2{Z1;U1rpDROI?o!~2i*+y={y@=o9)Nh_C8_mpP&D+EF93^(xyPLLu0cWHm8`q +z8tNUcX#B6hB!zN6fgfjuKZ_X3r!C5%{mUn~cn+`85Fd-rn&2YgU6rlDbERj1Pv)on +zM&m`9N^F=PNAhPCQuL?M`-ub-6gVjfm=JCcakU;&UQOXo(d?YD{LaY?%ddR0q&gB; +zOFeszsm~?u%spRP1;`}yiW9eDf#~}7m0zFa8Z^8tO?sYw=bxL$H6doQB>oc#o?VR3 +zyOgVdxZ7S(D!*nlyv`3Oe#$RF=d~qqy +zMPf^$JrK3$No_CiA8^^{*9mqqa|~%&aH1HQ%uhlvY +zk}SH9Ul`p2c+FCyfweY&%a0TZCh)(|-v{Dg34~kIyKPoht4DEmp{&>_J~a@w{`8;% +z>P2|eQoYlAsMXpsgD&onGi3C(nP%;-7mphX>phGsSNxJDrLBv~n_R5#{3x@uQ7>X2 +zsRA~9ke>~%u_LDI*-@d%9L?^K(q%#gb#qW7ye47HRkdeMwfd3LK&D?qZeQP%d-eH5 +zdr|ECS-P$FXj!mo+#z8v1FG$xd6uWlBn`smnkJ>rLj@Up)widW;7xYX#Qxp=)Rm8d +zZBL|=@SRsQXQH#gZ=Q9x3xZ7xf#Suf6PEgE)BI#Io{w`TO(TMbwBpTyg=1&OhLAoj +zCOA1+n*~dsP-dZUfii4_a?`ZZK}lfNSKGAe-Fpn&(p39b3Bp~3b=kkFGs9K1l|l7R +zX!PQ*E(%86!}*j!cnl&O+=lN_#b;yTNis>=p9}nLgL(%eg!?oqBm_d!I{%mfBKWKK +zyw#%$RoOJ@E1Kz+VN8=SaT<{@m-*I`*5*9f2BB<= +z(U|ceJiEE*?)&3FN7^{?U_Re}+XX20@~w-8HLTGjB<2ECNZ+&zX2r*>SPu|GzEP5= +zUTIu%fFZ2YY$BQDUT@#DIta9_d}g9O>LO*iZCiQVL|I9Viij;jrGopZ);Y%UwAfWb +z*D#ftPdhj*6SZ0Iiq=jAuOeV~8<<&fd$WX-0pO>^KP^aE@4%sytS|91E(taXvxlISCt(&FVk*kT@!xb=&TO0Q{>Eg)tfJroolVw!`3gc& +z)kfFbUJq7E4191_atRfPqH8-AIsPHx5G&j=VvXo-SAdMG*Qf6H)gYH~1CtKXRyy{> +zph7v&_Z+Cc_INFjzXaMM&B8xxs34QVkQSxOag*lckJ# +z;Q#(*MtmlIY$UdkvtL~BodJI11?AY6>tI@l2fUV=^57k!B*O7=%@4xU!9g3 +zPN$VuIpgDpq6J>Fb|Z3V#A-;cO)a1{dr$Z@rnm!e*Z@Rj2Knt&ej0EgZ>B9gBUo#^ +z1dYHxzmUclHHypwsuE-gEG4R(+k@I*7;~E(pCG=Gk!t$ +zm{Xh#`S2_>Az5hLmw|-%7`r}Jq}0B +zRmgT-l|mL(cedgt5QvGzWy$%WeDyyI_&A3LhWbf1S{{i*!){ol<=D@IQNmMoyZF#w +zU3^-M;NJ>`?`HimSc6_;0yvb=k^Bq}0XC6x3B76aA%)CMY61+{|1eX*2=Uv&lz+$9 +z*AxO3Ydd@5cRjYM^a@TewQ{-~u4!B{d0O7df9P+W^w~A0I(Qay{j~94og_f8?^Z2p +zG`}IF1{x>o^Fe!^lpJ``Df9V1FH660)UQ#f>i+-DB{-3zG!pS*pNL-nbVX_~_`B_c +zB&0cA8Wl!l<$%-H8#+CDM*@)MG{jyu!uechqA-TZ9*Q9>+h{H9jgjcQaZMphuEueX3oq_kc6NV6RC{EL)r$DWec_=YJS9S@u?!`R!vd&wq#>Kdaq(uMgA) +z;!ZD!h6r(X({Z=c%|$4?bXU8!V!zN!K2{ +zfwFA=bnTkj)}KYE)>olw6h!RxBue@+SEs4PvVsSMVW<+(Pgbk`erL$}Dh!@-l8^0q +z1PuZd@^s&EjZP>`jXR{+bmuU(^x69KY6JQG-MNri!d+TP +z-PD(d#YU6udjXT7%q@?vR^t3_R!8bfV{uz{^XKb@VRnMzyYawNiswGdy+6Bi%s0af +zUr?78ya;*F-NgP@Y3*!W3gG!Y^w&nAI~Ju-=9g;rdBTYoB)IAbj^&_c;#s&gd>`7EFU;W$Pt4zdNGHra>D)cJqQB5bEWeU@xMvQ(z +zcUYW^=4&tQz%>6%?`0hd!}fhgI=!c>v&NFJskLV<>)-E?!#mZ9m&`;=mLAr9+dZ6= +zza@UEm>S5LtH};9_t^_={$;f}0t25q-w9T2crk;)9zurH)MFe|5-x-PNs-dI4E1a1 +z{&XlSvZO)f79FCP*M6Kh83d6sRqH$Yk>0l-b>Ze5r +zlK)OJB}nw~l67Qid+dqQ;{UqG66N+oI57yYc4s;4aTdkp62vb0iLz0EtJe+q#nLNz +z7Nv~$M^497DsAwNN(1l%x6jB{8w5c4;y}~Aklh_F@YWuLmlp+WRT9^@CmH^=ajVe{cXto&ZXpB+ +z9^BpC-QC@T>p*aK9bj-9+}(ZfAe;Z3n{%!y1>UF)m&YYwCTyZ{VbtZc)E +zmk_g4A6ivs-C%Q@O})`l{|wXIhUHc}{r33i_XzTB$PRz&x)OW5V!yyyUdO+4Y3wrQ +z1#nRA40*r{J#`1hize|9njyqJm96=-JuC%OwjV-xCDFUNoP0P?cHHm!l^ZZ+%QBwN +zUyKOyFFv~R?`r>gRV-iA=EH|LKcF~?tS$6dy&i_}DM9Di@Id1`nr|{uN~m2b#x&~O +zan2JL?R(`=6{8^^*oy}d$mN?ku^>-xP1a4Mz1P?NdZ^S&M&5mk=hw +z37Zq^O|d+qo4EZ-@rc!RIYvsmIcY6Rzh+!9X{VMif5lF#;A9ctvDn)^4rBxTB<;l& +zt*xqYQcz)(Po{>JCANDqah)|st{W{}5hIAxI6@8^Jk*I?6TTzpB_?*aSc#F&u7q=O +zv>g`&)D75j#dU87T_os=r~qvXiwkM)~__ut1JH#?9m4UFXK<#4qJBVXdH +ze%00%l&J(K=9>2^oLv5ddxKNu-h##*7DA&O^Sv;%n-@X{q(#ucou>=~kv%4|LMlw+ +z?b#QDX`*NbsAI-r%X7T&_|9V`$E411d?rJZ>dGXm%!3S5Rv%(u0Q#As4$=0~ffqMe +zOa2E85V7s7X8>^VfQ@3IU#n2*uY{n=#)^rZ5GFDKU24E!eC8JhU=arO79_{0^A20p +z8MJG$?$=5X1ep)82RkQr!KK4(;K}c--}zuuWol^5`I +zGcMfL4Y6|hLMXm%;%^>&%$@I7+C_-xWNa}|{ +z&|f+@+k7)Rw;usMy+|INQqwh56K9L*D~-FJ%?>C6Dd~i2rKr?We3VQGVRBDZ&=nF1Sv-Fms=LL>D3e3rog9;;-)S!l*?60V6fPcMdyGigy#6{#As7S +z|2=?+--(EjiI2~E*Q*nwQYP1HpUd;kK}482#9hsR%;rd!JUy=oMSrXxyp;^Ti3RBc +zX_*g9tnJf%j$Y*0b-#^1=#i#$pvL~%B;tuW*x$J@d%7w`SzcLYq!hOjIs!h=yNEU6 +z$82P>V66lTTl9ya{R^R&8~;;A05$F;%xyFDRZ689IjGeselfN$ZN*TzJ04nbUq87D +zgTM(}dowJ-O$(Ye=_k-3sZ=|fsS9Jn0^3X~1iytA;wYJ0o1Yh%g%UJ+k0iTg{j +z!>!a_yt6e-s(2nfKfQaQrwpC@#1GVcN|>QW_+K{Gb?YKB>Ay0Un!RY9D~zY$@cm|Q +zk|c_l<5Fvu(1OX)uBo#`K0y;!I2L`Fn#-OA+D+eUo&#;j{JZB91w +z%sQ*oJ+A|bo~=FKiV{3iSiE4@7vm>}-yvR7Z@@O&n@n3`cK(VLDY&-9oO`zM^vi7z +zr;{(|!B+u{0#W40EmXP}3Q&S5kW}KL61s>s2Ne%uoAS@fONF_(Qq_+eH<6jQCClI1 +zw8>-vM4C94hQe|?34p#xo6#!An;~Syv*PaJFJ7Ml$ZF8cszM6_wQ>W#dO}H;h*m_F +zw(bExeKRQVhNAk8*}T^fP#OcElc(IuJbb^dn7!NIOxMJ7gU^e~2t}8Bs2seOBO0PN +z1leKPg9hMuqT|;YUSB~a59)7SoZNlWtf9lZ*+Y*r!1{-=cU3b9$*Ym?R{?-Z`#$g~ +z)A`Z2HE-E%1~pLJ$V1N^^8V(^GM%!=KR*&>B*bhdP9S1S@IisOejhoLEZbwELXL1g +zn*}1=XxN3DW>=x^1|D8w9L;cepreJ0wBOyNx~co;Lvpr&_S$b#mu*Oa;hb}0pLX>9 +z!w%Vg3U?GCZjv7oG|Uqj-PfF8y0QxLJsDXQ!oyOeU4u5ZOP9$T&m_JPvlZ0ktg(&sZ;F&OW+BL}O$x?%QN11q +zdOkn+yKllhB9YSG5FQ&32Ny@rB;T7jD>njK2>Zm0nRS;QlEz=4_4uKIx&FQ_F&j^) +zv;VHAeyz{J9P~XF_VM&EHc*Ns!S!IAEIX{j6+gTnmegS%{xQ4-vOccI3sSv?$478( +zuW>9)@yQu_&qrV=^7-zf0%~1_eMaKs>Yc$_K9dwIMatrB5A(pAZNz42WnyaT-I~;)J<%mQfdo`z7Lrnv9J~UHCJG@vZoQ3TeOME+2x557@M>nf1#T_Vv^REK*sVTABQGEBBJjo^ke4vE +zx$@W3Ywvw1tpso$O|t=3C1HdpRe}*y(Z|+htfY--NXZEOEZi$9Kt^-N2(IJBKD-1#!~;A#(8_tfM&0JFQ|f%!R%e(ge9NC} +z*QawA3UJ|PkH${eVA!O#X6{r$$nY9>{0k*k6rP)zk&w2a)^_zw$a;CeNzph%C1Xrw +zW>A^6a68I{o5PR{{*pNmJq4%>VvFOnr#g?7-M=?Tg|>DUaqrVwUIPcB`r){W8^cx* +zgagd>gEqLI)U&45)&vi(>Wad{9T{NTS}FRs?tmS`@oQ-jO(!aONzanWK<; +zLkg&Sixn8o6M5B8phz_MehX44$aa%0y6TkYvD9XXx&1V$P}4r5x*0j*q);^J*2+hL +z&B?<9(|uYPFTQ5*&#ypgIMN_F-J?`**kXgT=LNO7zAF+u9;Bm~s51CX6K7`Q$!wq09$bu0#%jiQ +zRE&2bF{x~enuQdxL_$I{!?IiIu{V+PfZBkv^!x!>6}Di@of4r|inHASG`uIlYB!x( +zV_R~xJac;ftBEV`Ari%$7D{5mKW^l%lI)Z;XqNZpN>%J~y?^4~rx%vuR}ICQrJI+w +z%1!f*Qz)w~%01(%h)D=hzj)AO +z*0kpUCsv7&YEd>iLU;lvfrN*wUv`}IQNY-+)v7$bOUqWxeKAp{NR?SUfpQ-Q5s +z^T|q{_x)?p>{fgqCkh372dv&R +zy~i;;@%n;gf%z;w5$S>w3Y{O+tP)|*565+c&+csvN><6aLW0-JinT8=*9-+1Ly73>bZlj!2 +z$I_W)_EFHy)4^yZg>$nc4T70b4~Nw}`O`ZQa3biF?5V*pG_0y&Ear9li8R&wa*mx{ +z+hc@199}It8*YJKmJ15(=Pt9B)PH(Ot4XLt46gHFS&<&DN37ruT4%cuPCKtAmogc+ +zTBNsm-q9GodH}z5y7{tGvsRzPvYDfpS6QxM;pA2shYn8%jQ9PfjVDP;U7bqA5abnV +z{&E59q-kelgOtZh(u?<*bllRi&XRDB3_5hQ^69so52IS}t(WoVn^A^s{O{ZJX7sFH +zOqAWtP`14ye(?$X2RyA!{*-UyR__FupE##P)bM8Tx(5du{=GRLw9o^l)6vPLE&NyH +z2S?wGxxIea%Tv_7w)%i1O`9incVlJ)uW^_=u;+hB*hZvtNdX+x)B0oJ$F7Wn`O^Km +zuEO+C&evx|qX(qWFx!c`6_pmFz}h46GR}OJ$fu~*lQF0KwF2Q;T`#4!N;)m#`!;(% +z&)wS8i|ZA6HDkuV_Y5OE8?(mT?`$=8fMmnYrv$-ahe9W8Uo2PM_YDFpin3RSkX?g0Sp=1ta^YU^f@VYxkv%SN}>$<<5u~ +zvRigFQS0C&0}!t@3KHVROFB(SoeFltPi&_*uU#7&!?!G9GyO8#x;iNSqP^7;x5lL2 +ztQ%2da(6F-W +z*@s?Yex}TzaKG#Kf0)Z}GYV3ND|h^W{QyQ;`BCMT_l7gi7ez)fW9(3MG(^pX@p_Z| +zKaQ|yS`lt#B+E-w78w2!){lQAJo|@!!_RPzS(5pn@Ambhw_$H&@>hHQiYV^(-xcKZ +z)<`M!#BvgEGqGz}L79SHmJ^nun^Fn}$sJBFl$EfK^zY|fhdP^&VS0Avi`P(Z4M;p1 +zuoJ8q4H_1}QF%gBYf1=y66WV&)+c_BdttHmBjLd`%+c6~Ld^{<1G-&CUA_pbkzX0m +zxtsGsdXx8FXt*B&4jh|}NLKqjv%z>8@KY}x`pH8NzDlLJKHvY4c4!xyr*it-#TPp~ +zhz!pS5o-t^rBS3E9mJ6iA%GmY(gImt;>P_i-czt~b!eQoz;(xrn!dpQ+8H0Y6Si+d +z_m`=(@3*MMuaylYBw%#rL}Vg9D#{G2l;7^~9K&HaNbCqdp;eH#Sip#WFmR@|&|=!< +zyg*ZFDR@KCVT+JXf?wa@t?6578|z_m%yW96a^iN#m$<8K4BEvttzh-fz!H0g%yNX= +z+z+7;^YkgZ{53*A-EdUXE51aY*HH;O1q3hMs=qMR=8rxD;i39SACd5DsQ>LR>^`nC +zsOrpC*3k~eE*C=P*iODq=QDCoeGperI)VjYewVq21Xd7)X?n(fG2qA^N6kv|Y_62r +z*TyhV0iy09$&s)hFs;tie<#j--m#Z?rF54@A!*!xBuo;x3BzKW9|n%?nk1m$F|Rl2 +zxOO#GZdPvaf#y+dtnFL3fvw9~iDD0HL;EO9gdR^{@L1Gj9mFDqkQiUNhO19EC_!~! +z{2U(a8pG64z7|Ok-HzQ|Qrr;16dZ4}sG5e!eZ{5!#UH%SL%b02G*zt;CPULG=ajYk +zNzx2q^g9Bp-&?D$9jW(s*A=_0Z&YPp&lKRCM-VtC@Tvz*krtwa)SJ@fAl7qkU!%|e +z%GR-}BJ+`lK>(ziz@FJG5=G_boJ{<(P;RA}0u*!o{l1jcQ +zY|-gK!May_z07ZIj`4jQ0~iC%@B{0R-RyyMyweR}i(S^Qx9T^+DH^(8NeC@H&iEM@ +z<*L@c*>d_2v0L@x+?~C@_{(hfU5>tVZ6+@B+#7oJH-xgn$SRuEG39Q$-5`p!CT +zr#e)B`w&Iec$MIE`d9rR@iK?^&ihxC4`b7P&>n$&mkhsgj|9|f(rnfBCOcXW~jkdo8rf9VzSsP32lg)@H*9U%tXy;*HtssdiTeyp%mYQPcVCD6TR +z6aajGY-@xi^#4$EOcfR-(gE{cwwoSiKM4%bUcAlW{uaf(~~rb%7|%>SxW0#6#2h~ +zfP?LiV_+k+y!as(6C9FsYw)=cgJGwf(!fc0ZVwsqRe!r9T7ruXvY~uSlkuCH0!Bjy +zNJB~zdLcFWEA0eSxJ(oQ7EdSkNek+`x+lJQuI1Y8(mtArksh2);d;L4Thn(zFaz7f +zP=UH!c+bF2zv!V)*2|A;%yxm{qUL?A00#_Fp~hIF^WUHt2j!%AV(HMuuR+aY;#afo +z3nEcjKrhuecm+V8H +zrP_OJjiNAgj^E*&f&?7)>~tkF-s_k{^Jqmg0~G#`--DW|(NuZRMq^t3vOD}4yj*%| +z>8|;UA^^b~$mZ$z?u_J{cvM1RUt(i5U2(}$4?hAzEPobFg|4nQ!C8bO_;2f95RGYBx|KyfPOM%EwU9p#N5rTNnHYq-}x;D?MwWcbvdg+5hQSe +zw+U%h>SHKx)>=(A;?ns*dN}`Tjy?Y9N3vu4uwS?dliB{Z_qPq3^(2Qqd3O@^uS1m7 +zDOt^)Ix`$hEB8uj55SavBsndRZBhEz@~GsJ)c=RtoI6yQ40o(~q{t1$#}34g$AY}% +zhb}^0CY?2B-xx#r%-d7@Hp>0zB%@6P`I`pVt`1-mVSQ^oiD^eXorqN9xYe1Voo+GG +z(kG)Ccpi9;a6(VZCm)h?uO`Dyb(3bX3F!!FCM#{_$M~K+5W<$>>)F}|C4n!=qxKga +zf6d6)Vw~|Z^F#s>rmMbDhM!eo_5q&o2a&c6rN`fluX;=}sJ%_HW6A(`O751hm?37%fBOFcW4K)xC}+t9L!Hm{%Q$ +zzL(N$!gd*lDUw*{Z4u4Nx81taga^!Ca1)6QPT-c0?i10g)Gt7$8qBqlPg!(NdjwC|#V3B{hr}Nx7bagVAlAgf8vS +z0DNSP-F+S`|HC8PtD|YedZ@f5RfY4IftY=j0UKo|;Sb%}dZyNfuQmGGsLjjlC};{! +ziD%8Kw7OqKtU|!mzp&aYjr+THD*|_5ycIA4Drp&m!F=V%hwlRpVeC};rF;ySE~<^V +z+o)Q%I;Rhg!BM?p2clph>3OT=%hrigJ;QqMGJG?cqYwoVhtQ5myG+Ca5_v^g>F3Q@5@TgQMWa;`Qy~uz(Dx72l4eXsGmFZv_ji0@ +zLH_LJb^Yr6rsS<>{@m;YHrym9}+J%W13_wUjCXvt=l`W`ZO`~%2$+}6(DU2h}SVUIMUVmI1T`L +zE55Y8@m%{flc0U&=A-9_Uq-}%lDE+R;WXtF_olV)q8y=>N; +z!=KMwhIwLER~1v)tx`-F0A@nQz^hqezMb{7+*d4>b5bDDi_yuSGWKZ66i +z)wU*TYqq~09mcK?&e1VZb*MGzfS~h3hH<0}-f%I1xIBZ#_ +znNx^0p#N)3?0NTb8YOS&F>^y<6t3M5M!{?fq32{k;Ptn1LZpAWiTyX>OMzbZh;5cH +z>8^OfU>rdvL&uG)oebLpGx+!br>4W^#DDu!|9S$s6;ABv0i>dbqCCYS#9k;)p@%SS +zlWU>0ihgdllCJHR!E|Y_DhJLF8{YO7hZwETliEn@yEkP992+MPrCsZryL*A#?+C}n +zUkIs6N?M8yRq<*ftxHKjdp4}4V}a?~!ZaetA3f!(65c(n31a6R41W&9R#%U)sK-<( +zTkqyf-N?^N=^B8`(gBO*;g-%ziJX2v}}s8i}#Uc +zDizpc7Z8L*lC*R8UL@^>3bcDf7G8zh+D^OLeJAZBrpL;A^mgVb@ADnI83l{Ww(o>; +zrHQtgze#3!v_`7qUffr<4mo+G_j8cDrDs>-}Go9!@! +z9&~=*RFZnLJd*_$UUd9omf4)BD8(g&=WC@7uP_FH&FO=r1Rt^dad=A|dP&!PFC!NF +zQmhw3k|mTT%Qed@lcbTyhBAil(i&#+l0Itq>SNLq5U-uPSg$KQ>l)nI@QQI<21?$1 +zjM4f`%3Qb$4|fo2IevV5P)_;^$M<;iv%An539gppkB4+OhfjJZXOp@2|II +zE{Hlv4ZXFT<*4zk%;SF@9}b@{Ycr7qIh6jmxahcCV4fmCpEtl_CPtssCR~$9oWjhT +z*x?KY#{#t7##;C<63sl04WK$Mzt +z1ZS_=$Al7wkAW+hJ}%0zyJJs80(M|uzv6g2X?lkQX_7A(&b2FtC&<)CADk%%K^QMW +zAtmjSXU^TA!_07VcJG}+h +zm9K>cTXmTXUK1kR8S`W_X7@a#FdI^2Y=(@@W%F8O4 +zn_})iwy{n!^*jshq^omUe{G2P-Qnl({A&h~tW@TN&d*9%?8o5S>}fn1)wvo8;jHv5 +zy8=4rUfLV`t*4HQL`)(`H9>6n0vY(pgNPOpc`&J*5rl$a*E}$|S)c=)bIwj~23_S% +zhQpS#glMg)RLCFqBk)0$22|sB%0uLmHyI>Gm2?%Wh?Rh8Bs;Gw(nE+@=g+MEiQ~i{ +zq#J*FBy%%;H1!6u)ZU2u?ms@9P2PfllC7XAT2Hkwz-7))~lUr?!(D5_SfhU7az?i!r1QljtKB?q*Hw +z?EkkJBy&|MXI3%WGBV2+he?YK-mP5=T1@YY7!wMkt2DCtR-Keb@Dgw!M(TAOvvUh- +zBTW%)u)H<%`Q?O_#pM5`h-74UkZ~9S&3@*g=XXb8urfX?Syj*I0|zOVZBS2+mhb(M +zTWDbq#J(O%2s~{MHCYh_7lQV@86TCzNU|@>tQT>cr(5}4x0c~yC#U#S3(%c`#z-=@ +zK-L4t&TR+!O)!4` +z3M4wyvA+0Yo1RDVlJ7F!yxphQ+-D`LIHf`1ewgDfVU+8!eoOOKZ*VLd7a3%;U({o$ +z(Y*rE)$N%R@^31Z9UTlb3yC&n?j1gAkBxV`(^z2``YyID=BqoFz +z7E+5XtI>Vkg71mlq1p-)O~?0k&-(xkCmNN4(L)BbKD;A%*-;roy`D?$KWbhEdXaDL +zHUvxwBsMYxxk#{d#77Qt8B4!=Ay<)S?nn?HE@y?}DMVY>?oFT{GT(& +z)ewRChCL*a@ui4Mld1Wpa>;>FjmV5WXeWe&;0vBJM=ZYYpm0_Yn>u71KU9Eh1$5*M}PIXMewwAMmx6-6_$2< +z6e$hAgFluAGybLCfw(g0VuH$<)$Cqs)u!Qo2KE;FUyQH%1cx%QIeW1^scDJJ9pImO +z1qrlh@z*mOC^(SUiS6r+&`X#%;}UC%I&W +zB$V=-O|4eOhCl-kx|llx{ZE@Q>|$O79RC77aD!u}>S;QoDn4gTJ{g7i`q&H^uC+Na +zLa5yjw_sHBFKlZ-*-r|)*T$`Y5=F>RZP6S>p0HnXwm_RW%?&S6H5f)`V~)&%#tbQ6 +z4KJ2L=dF>duO>btp07UUq(SX_PnY$1)lPdM+{-6OZR}^|jS{Nw;IL*i +zMRDJ9)p>4Gh&H;)t(b^P)n66qED5=k#@OGOp^XN{goLY)pVv>vD-GArg`CZq@z4!= +z_5Rh}3!9tWXM0~{UU!A69a#Z-%DGdD*de!-PORuTHX4aU6uxrp58`a2qUc*~pBNF5 +zh1N1Rx?USNE%g=eHwGj<@1X6!*U~4PhL0dA3R@`?)53!IaW(LRd5ZQ-OdO;}U%x_d +zVcyK}%1wFa|H@r8JLOFY8>HP*WoT|r<_rx7X9uN06N~;Ieq%Ys#^9(8L +zw%Vjh#5R-T-b*=r4a`k{CNV2q7f89N| +ze>@+bJwR@mH(xpOHcw6h4s(5SSI?`Fn=#|2&yW%Z{J8hsB4;{NiaZ`!rMH$pcXqtZ +z=P(@4jV9jy6T1X-P(I9NyiQO=Rhu^+M4A}QtCr^BJ#|i;#(d#^O2KvXtvsQB7z5L^ +zII>oW`ClXOHVNnYu{rbUYVhX(T&-JC4gBIpyGM=$#kmJ&%qwy(uCl%MF4Bpa-*}8g- +zP$dk8?U&15ik73@z$T2OtNl|v6N9M(&b7oKdFRCu8}-*lbRasx=hY_53;s;o3eslj +zmW%Cx-L%uA1Bd6kbJEhqH2Go?l4tK{r-z&uCB7H5&Bu1%e|^G!#OOsAL-N{vwdJdI +z^T1=;hD{ms%T@J?OuZLZH_hICK^eI46CxX6ob|_@C;sMf8*u#y-jX~R4kK%-K+*>< +zgs!H9cjw#-(QAC^b9eD^ezM@d9&~wj*x5X0ffJU86x~xpvhKgqq&@0ky9t|o+w2@)_h;?z?ZhGOP^BCMM8{d_QnbbCc)<37`P$zcVUf2)lG7phZ>JjI5n5(Xj +zfAGSsjz_+8Y8+z6ETy!c(EU}zk|XP%^TPRRywlLg+nBWZ>mb~`vbN>IFyk(i&8Tw! +z=CFRfeZyQiN~YluT=E35H1f6gYupNqUGQYKU2CVr%4r!6g9f;zZd`QFxxKWB1(^KDsvi_p%v +z4*vt-Ewr|aET#6kUCVw@xNV1Zk*et8`8dQ*vV5mAcBxFzs0gw%?DXvNet4XG{a*Zj +z(QNO$Zb_P8*G>MfZ=qrDq4P5PHXa;0@ggxLEWM;x&|T-ns@v+$pQA09I<)w(M={w_ +z6`fiCvq!^dil}|Fx~YpG5rEu+9PWG4Z;FIwz4+K0cvpa|jgBvsewnLaKba?|A3LF8 +z=$~tM(Up1;yT!mzb!E#5(&@l!tLn`I*JXj>bt*lQTXNGk&Q`N*<$Vs`W^{%n)lv4N +z@w!a~mqPvb%hnq8gGmmV9c^1}c?G9NtJL_8Z2Fm#@445wiS7Z2>1^MJ_IV`kDPllm +z*G}F$Z!Y{zE>!U=`e$u9!mID5?WW>!ibSVtcum)IoRFzL}{jX+o&6-t+ +zM5?ngl+EqTBty_}D|Z)Z@>`YpV$x}3fDp2?Hr`S^ +zVf5~}dvp~%;$riZfPIzd;$ljV%hq0RryPgfVNiEX@hz1JM7!Fz8nzp=8{H{*Z&N{P +z6*DS4`JmY*P_5S$W&EIIpDkeA&Sv9miv^89V!hnrK2`D_yDsPMHUS7#{I{XZfLBSB +zAE3CTK|LJtW9r@ETLnEpg?Q7aR)&Wji{G!v;X3(UX910`mLeFgmS*ApfI`@4P@v0; +ztcKh;cKuIdx4{q7sk)3cQ>tqI+aP#t35%}38c&@RFWsl98lahs_O*>TJbUFFzU9(q +z*kcaF&!KgRk{3IdhbYx?fa6r?;|}M|(a;9L7c!=pC38!Sf~nP`SSXOwR@Aa1B0dY` +zQOQkKGfJ@^p^<*0aIsCT>e*l@pb`@g%!I1Y$-+4%|It=oVXq05kpvjugX=t@K* +z!>pu=ezL4^qD~EvWclQ54X{+ea0^5IUfVRTO1rNrwj`PRU7|#|zF+)v +zQNm)_S#oM+87ZDoY|A&hj-S8R#IX<2vA)EVBdX~-k*`*H3$Dg$KT@jAWw&TUdkzd` +z3GZ#GK#8%}IG)irlcsjcp9$G()iPQN8KZCJgjK|IQR_@Na&Uug$VIv%I?Ww?r;Upp +z=}|Y5?-O5FPTMY*<73PymG=C>Rit)d9kK=7_J*m=viMUdn +zr9?K`;uoa$hLC)efH=;LP;)PjkOx&b6?5bj##<7Ch+=5}%ShOk$F~VeWdBz?S;nS5 +zSqw&f|ChP2I4PJrjt@`a|72P+Zbm*HR#;KFH5TC=3GRby;hN+{?2f(2*2GxftN%~H +zbRx#}qXju4sjSMHWa`07`GTf;=q|bA;M%9g+I!>Bb>A)V{|2l7Ptah?yexW|DVBUy +zSz8@E_4ieD#dH2pG*0UwgBhgRHvhFsb@G6c(D$cPL?bk1*7NCJvm-i7{gc};`CpOx +z@*a6RLfmVLEc!Buz&V??<){%hXoXi4SU +zFE#BRA6FfF^VL5JeDntje^?`FYm@0z +zYvDnGeN5TEsA?u08*OuoIr7;nYmu_rseN=D;FuWeN5S{q9^y5iDzBdT#K~Mgqd*0B +zWUCk7I(kgckvAmH{T#XXse&ieN@W>N^bpl^56zPHZw|X6Uv2sN*exdhsp9SyrT%$J +zq#WNcc@kodh?R1tAB8W;_F}A0lQIoGY5fWv=1AxyX;ZnZNTP83)u}}HMPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91#GnHJ1ONa40RR91!~g&Q0L!zu#Q*?607*naRCodGy$6t_$8{$7s=e>& +z@qXY2z`$D)Bmsy9G$19B5{(#?VaS|zrQMaZj5T+mxI2aR6dMlvNCF_?y_p$|?J?aw)860rz0B{gtn9z4yJrB35RlzfnfY91zI^HP|EsbH +zXNgm^QmG`+7cWTplr4Xyl2=3jY8jT-s`M#;d5%D_8v2)GJyaGJ7K#QTLzQy!xZo@C +zSHgRyG>!OjTpnLZ-bJ$#-ZQ0X#Fyjpxbn9Weg|>F4}tV%G})Ct0RQ8^s4`g*MN@@uXruIs(@ED5H--Ep`&ae +zMw)u?m1^*8_*cp+I{A6t>cMlmdhxU2Un#HXJg2J{ +zKO6p)@>XVNXJ4H%)vJM5;jcIi6e9#np0*-}=`@0Pq~uFH@96Nxs04vbY<`qrm*~iZ)RrZ)e%D4c-4Q!YoKP^m8~yrfoYhU +zQe1S3ON;g5tD(X+ +zoW=>)N3v49VB#08;yFHz=d?MGXypr^`U;aK4X1I!^^vR;FPQj6t9Xu2<2h~4BU<^y +zSEi?@8;%h9kRs-PN`JL^S}pxcT{f72Rq*E(6lN18Ns^-Ke$vXooUJxbtEI1&{-q1$ +zdGZF~EhEnJR+{vg@VwZv&o&Qd%b%Brh93Ue>k%9J8Y@*?H5F>Dfz-SeH6Z=5p;nux)zYt|ATnMV +zep98%nwy%frP6HH1S6H5f^czR!Di=YZFXVKX5i1kpIex>`NajVG^WQqHb)t)O)b{e +z+-5D1*Vf!>l_tz?6M1YH&JP(2kRg8e3ql9Kq+hGm>uTv=(#%KUX`WWpAbuQ~dO4)Q +zUW9*iRANh|#afziKQbEX?A)x4PLJ8i$q_p_F>J>tPI`EF>J;GPHa0VEQ*+a35Hn~P +zXbjPq3z-n4Mim-Ft97)rTX$Qx_2Dzn*>CGQ*Vy{5wfCbxr7e>@WpTn&e#YfQpZdbRSY@C* +z^xnp!l_T*+@|$Rdq2Wt~MMOw8Ae|S1{`E&5>;0*C=z|P}q<; +ztzzT2V&fjWbmN7#rDuaRq0!FHaoRTL?NaqFU&%|K@(EX1eomXx3N*6sNF!(R-W?LV#DQ&xXLM4Cm{d+8i4{VGkaC-0nO45JrN1c4~UmO|}h< +zgwrNA02x00;8tSTVblpc%QXVYP3e|T!~6Z%P?(M{;<2`2xUap}E=1$Fe(RNX)#g36 +zv3mmyYr)qw(!nd$22^ezAr#5|yana>mqWZ>83<>O%EfCt8p71vluw1ebKrh7hR1v) +z;IyZ`x!tEiG$``OOsi#=k;)e)kFOS9k3W^eaN1ymtNLLS31b*XwrQ+SxGv$yarNd) +z?F~Dwvy0cAZyl{2HVqxH0b#Y{J$F^g*@x=Y!`VxIaV1p7$H%F8cN)IZIKwIo{YEb3 +zS6F_^R|ZS*X_&NhY1)nWb6m>LuuqFn4lYXB<8xtr&%qzrT`&B=_6{F#gWyQPhQiXa +z2dynNV~vbZ)QxCZBDv+{iEg$2Qn}0#b-+IwK6ku0;+;3J!*1UBT6_KWYkWaIgXt7E +z1w_k~Q#~ptgr)T&xad<{%HN1jGEy3a<%^~)ofMac$xoN(t0tZ{h+M!wr#Sm|_KfXV +zB(pIb#_rI!(FpE(;a;p0juj&X`_izMSZYvbuaDJCnV4FhhdiF=D97jVDm`t3BLSQH +zG#Um+kIg+B?WUdA+Z%V@;5%1r6dX}}XRKi-P?h^~5BUhe7E-VEr3Fk|65(ob3`+*X +zxf4!4@p+gq$sxm(1Z|H$Yu``Yt&p)q{lhOtA`fhiFWzSLmE +zvwA-_zC138D}~piTTYJfEBC2)b_8qyQ}_&Y^xIEi#CZF8H`x|!<8mb7p`x~oRTrwS +zG^Kj=kkd+rcvHM&2$%Z8$tNxk6DE1YDK0v}1b2e?RT&!_3mhr*pGjB?#qQQFKP3Aq +z8p1dCeb0ubMy#u)!>0?_;fF%=0yi?oMmWh?35{r9D!)-4%5j`f(C9f@Okh2+wquRG +z>73WuJI=e=HgvDE@tFx9JxTM=)vc&OsAa8G31#$UFv%;!mBB>6oKId(1-e^1F&&t( +zJNMsXUwq~cJ2rOGy0CcUyg5vZQc1aypihT^`T*b9^4p>C5A47+hye +zqG4?6UT;6M`z`k7U9ZOmM4OGzPWp(VUbtLJIdrx4T1H<6Q)*?nGMMOdzcM;HO0Cs( +zEHnlFq`7+e;$ao1KUyT +z`;FuYCqMA2Va(vPo9m3-YtOa!U;IwHcFX0yw%|012azkak9u{M=k&)NPxG~GgZOc0 +z?o88TrSPu@*BMSs4B2f@-0tfH?x=KPdQ{#JY7L;8c0D*L8sQ`%rAfoWH}YRB`bKgZ +z;gq*3jT#0=3qs$B^~DGFyvy%X@qSh~`ykcJ-+6;*)WXx&Q&wE!>B?l3;mYI*CciA5 +z6qeJ`*tuxt2=MI#_uAh-@g+Z8d8wfQ<^j^8o}h} +zaK+{4bj!houjiM^TlDn>ImWP-*oZa7FQ8G}wBt3tg}ai`BCoeRb>iv%DQ&58`t)g* +z{$=YpMe4y?fjdT@c=Ypj_rd#oy2QqTi_yWZSvu<48-@oWfCyDSd{&6GQA1BUx)d28 +z;ahOV$Vf+647)7B=!=HoGADVUD|kWYVab(Geud$`CgGj +z)Y$Aq+@dWj)5`-^GzhlJv<0iRy1Emb;3>WMW0+1fsmy?>#icNg3LL7r +zgY=`pN9|*ed0+stPFxh=wqQ>C2TFZW$fv6IwRB*xN0YD+^EP +zm7M#je9@$^lsK1FMkg65Ul|?o32nnNkP?5`ZQ_(^3(hZo_44=GHJdNq|-BF_E!(zX5T;jfIk;N1L4R}W323@y>9W9)Hy+n +zR$&q8^buQu&!D@6xilU~Yh@;^Oepqf5$c|wTPqzUQRG4V)uT`04AZUDo}HE>gczNBnXhz+ +zS%%cntEF!wlj{XO6!YxxKKs)L|JDxTc?9k%am1j(u=uo@+M` +z+E6AVA*sRF%3dn77B4AF{XqAVQ3h(BQz$kJPNBBpd5nK`)i2ov1Lt@n;R8)&Znd_t +zTKcjymxEPCMn3XJfec=tK5r4}Q{br*b=W4pXGmAX9@X3+FHvT>Qe(rxTpv +z6qmw@qf7At68HrdETvVLekwENDGTSYlwUadDV*UHm!{{08D22biBB;4DU8j55Pow+ +zn4F#RYcjuuM)8`>SE5mjy=CA+)57rz}vCbHB=ctH}9){M0AK`p9Q^Sjh_-fz@(1Vl% +zf;3+RJrJI^nD>7UWnh7t@j`@IJe|i8{ll01yuJOLn{8}1oL8vq^?cce{CaePua>Ti +zK800=hljmRl)z7tA0|O&-7TH=>1V!TpMLtwzJB0EG~&)C<8Gv@C~PTxG~`u?sUa +z=}42piBDyVp1$a6c%d+EoKkdWbBBHMsV~?Up8E!-OkLj7o?TN&Q-3x5QffeT%Y(dk +zpZ^y7(8cfe=~S8~X=EFsC%(oW5*rgPm7%csQ{EJ(bW#|@DZDZ?G;}r{tz^HbJ`J9| +z2=60({E5%mSN44yjREHi>CIHNL-lZ}&)lSV#q*MqMzH1RQ(DTS6HI;zbAm|2aGpQH +z(ljMQevVgM`DL7LHS{TM;I8tgxHPOZ=$~O3_}m585x1W6Q}!!+e%|jvsg9M6pA_F; +zL-S9O8MWd(ZM9ZDyYSafeAd3Q|J!&LSch$(W@V*L@!S`U;Ebo?GJH;x)93M&KE0YFZV`~_5LctYW#Y(v>F+r +zt$7{3fb!GfOt6*uE8&&#r!ooS>GR(`{RR8#3up`&8MLrY=~f?B_qI~b)zX*Cb^Al5 +zyAP3+N*AVmAtqR`Rej3`F@j-H9=Ke}%__ucCwFZRB6P@ZB~( +zH&IncgS5}omKunxi)uJRlo@PYNg3iyc&Rk*CVl4FuhdfO2==AtX(6~Y%RfEv32(2o8eW0s>FD6f8xV#9y!F+lA!mAV +z#>N&VY&3pOFN`5R>2SOVlTE|l55*Uw(Rt%wz{^n0dQtAWWuTr}1~NyNhI80i)B~G& +z4>m_Wi#ld~zkTOTb_(kY>7dLuisVtZxs5iW7ax7m$rmn<7gMG@Au;6eJWjeYSUvtS +zdfq?kZSAppk3DRkcc&n0w@lqDcmpbNxvcn%S +zfZ(6K>kJynI2y$8!l(_-owQ@~Lw0^N)JwD5876) +zLK#UBAk}!So|n?s;$tH2IW3amBfOt@`tvr>-f!1!yv#;1Qm|2+tu3W#rD4gHFI*n4 +zoH%g;Fm7>5DI%@EpKU=MUYGq2E +ze6PY#j}DT;gB?}N#5uTE6F}aII%qQ%KfkdKJPSS8XGYjLSk*|T#?`+*{ +zJ6kr}rk1tVQ|aC(Ddl=E~7cxF +zQ+8zTggrB}-}cTP_Qpb7D|8%9v?gyMpDcTjSQcWriLa+a$qjVMd96u_SH7s2cixoU +z)Va=n|C--M-FITNo%6Ir^W*lKxm +z*IaJEE4Km5QH<9*uG?_A{mx|{_69->_5M%cD#wl;tIgqyoQu5Iqj)MNtQ)%R(|f;S +zpWXX4>tkbxhUHl(^pRE$Fn+zXEX$EjsDj_6Rc*Ztp1~?eqi6`o(^jktu5Q1`&Trjr +z9oQZ5kpc~Yj%AT6Eh{QkjX$RoeeR1+zVLZmaQV!N((;!vqXA4UPTO;{hwOprC++au +zai4OvVnH7ol9WZs&g`D2BUDj51_Wdf@i6yv^6FQl6KTO8DN5jM6ui#=-gDn!@5g5p +z4W!8%wul37QO;^&FM8-DZxCfUW^c=d^TR_=+JAZEqkbY??dNiitRiysixRJo9jzHmML1&IH~E+i&Ywhi +zTD@_QW@WCbqm|LGhAL>2)2EMI{%dx{+Kc_(Q+Uo|HFD0LwlX+4SZE|~fq8s2$&r^% +zJyy!g9)TCV{*Q1w@A7D$p*_Z +z@sDLnb(5BLC2*EYbn;bJ#p%(Qy%=e&TkC!+GXeYyv0gqu3A +zwzbWDm~P-r*$@~G&eB9)o?(@x1Lq(^3#aYwi3jWntT8yf;>X`kBK8oiOU6aCP)m=rAEI +zc+!CI@`Y<4m-fMp6?T;08NA3UpCFtF4EEK9%8_L%qRHcvwdp`TPrC_m|Iwmq(D`rFX>$(I_b@Q4K&o>CCpbSqukM@KqTp4B;By7yh*_8v>bxKaL^Rk_7ocfS0H@xktghZ_PYJ3j8T$FN4?F$F)D2ywZT971N +zG?JUrJ6+Ty;WYMWyM>6Hp2p2N^wh!(7R>$jp58Zk<rP$t#1U`N{E$b6r6lu~ASrAL_r=b;au-995<3v#kfuOHz+jxvKwA&%BS-iRmkC +z=B~l}+=e)EG_t>XIKt@~;e{*K5Mpx9j9IWoz67Q;VIkdO$ESwut4HoeW57?{29t|q +zA*12MGlm`G7L5@5t?1lHijvq58iwS3Ak84 +zg-@Y06#t|DGW!(yKZAVpjA$mF#ZXt&89S1&^-TRzTW3}e%$F;<;HRAUQFR3ZC#C)H +zYR^}X+=Vs8uwP3_EW&B@mD{i2@|VMlt{5T2P-fU=IKd={zIcW60^u;|&cW~7vFVe( +zkPfPpBBWfIq~L)n$QFz-(KDRD3uO|Xx-cD3WB5Sd+x&2fSM=B$x>M3Ao5FSFilDL2 +z@)v*X-3mjf&qo^nb9(lO9J5k=)aMmOy}shB^{JZ~=!ge-)EOH^*p{Wvn3vVo19Ko{ +zre(>MpVTSnsRzEanznQ2(R(~UepUi9*%~D)EW0C&E`X3Bb;;&qYT2T +zGFh=aT-(;V(cXuhB;NW|W2ou%i^__kAg2buiZ~^(B6-Nvg>#mkmTv6g;Di134on>> +zm-t-1__+Jlfm@%Qcs`_~r3b&*(~Vsh{(d%!~NTg#X6NCo6vk;DBCaU#Ngh?+ae2pIo9LDl+3d_d>I$%RT +zbX#J6(pg4sce&jvIr=HB!tzDea8XU-pj?qR_C?R4uqE@^*>4{EzKzVDhGBI1?g2Cv +zg@gio#6dAGv?B6w}0#)cCdzQXkx^A+Pm$Xp6&ST^j)^e1^oC3bj1AdfzcM|ss&Fm +zoSZy{AAC7%Cnt`g2Ip)|Cmu9v-)w8Ux8rAoJFw8_yN#;3X5O0d42DmW(Y-CeXbtPO +zW*8BgrOjh^W)82HY{t~1i4C%)74|u8i?}Ai-yv<}m^WT&r|#a5k>V4lzGTDmr*WNy +zMoC>K_2Yu1fB67LTl(P6pSBtN5Ixs5sgv!cFox^F +zb2`Oqwq5gzS7TVt7$i*mEFLez9Y*EebMgVS@VJl`;cEOumjxS@;T8}fS)9hntwe6E +zvUlUjGw<+(1#}?=h56rX5((nXcKHWcQ&?KX*b5PkXRop%4oLpD5j+ACB= +zXgS_&o7*?qjq9$n*KN4YDoy;oXlwyv6gV+)+`f18o3{V-V|Z`|2F%6S@J8D{a3ywqV9*$Wn=qP8;&(A#IQm&PT|Qf~eakzot$nSHoqpOTNAI`A>4UZ~ +za|)dket;gkYt3C3T5JEc*3!8Ftp^YJd-<5daz|bAY@!!u74Pf2#s2ox?P2|e6c^c( +zH>ig~qSGOk)l-NUR3YG5q1-B*9SuiU+R__0zSh>Z^+Rv9uP`OGj6b(m#buvW$;?u1 +zXIC>qh*1oAT=06n=zY3`VV?y!<)Z^$NX!zdu(<#h9ys@;h@y@HAN4MMa?(-IyQ~nG +zSj2p*kXIA9t2BY$xMpNvay0soA+go?A^9Q`j?0xtAYm*oE9~(2QTv?XTn`@6mTJUpA9pSF{u_hM=@<30E6+%0x$_;wo|{t8B% +zc{C{8Q{qntppiAr4_eFgV`iuBwAr;kZ7myawkAB1N`0wp@>w=I#+w(LeYB-6sngp| +ze?6|jkV6=|^E-959tf)exhf-6YV}Gj$h^#|XD@srgm@ueMLljK`fd^guyXYgpT`x6K4DBSc(pv@m(TL^4HCyEPuib8 +z_i;NoHE6x)@n_Hod29CauHE*U-Ye|d{>!WrH%s{vfpC)tUiIraA`l;jX+s?4Xj8*8 +zr%|Wj#~x*WQB0}*il&}VUg2s+2no%760g*;w+xG*`+awSYX_cGvuu(gpUUzcp^k9U +zr8EjlN$E&T;p|yCH}@N>UDt%|Lho&17)Zzsq^2w|cF)<;3K +zpLzt9++uIr^&z`p&85CxU>fuIY21?&c);h-7jT;XJf>Iu_QLR8wzg}RoxAA`C^r9K +zE;M$8=I5UaBMcf$CoU?scb>Kcsg* +zfm154{&2_XzTrpgts7r&V|cHVFY?J#Q?Er5D+;8%H4Q>WlS@e%s2sU6dS-A6!}#}x +zA3)C)9&%^tawSQI#%=3ekc51``*d#+YK9Uu-C1>$+q{NV|&(K4!%*`vziKQNNZEyE_+kQ +zzqIe{{Yx8}cn;H`HrsdNPTRijTC5||A0+VtTMM4^-n{+St+RUorc6YVDgUHQ +zDK4j9!0^ni)@R4}+Y6INd@A8 +zXAx$Pri#p2JdWB6e@kUMAMx>%@=Im~TbT=3-2LFhgKn6U=w+|!+haFxzQImmwBQ9o +zPAfQN;~(ELF^+}ot=n(0b31qWf_er$_k$;YWN+DVtL^GP7rowT&kWZN;e%^0c$lia +zt=+EL_H#&wYm62fpFV=M!?Q3DOq~j=3)Zt?%ZIF|cNbAYdY3m +zYYSLEFunlZHr#Nv@fR>B;)6nUHC*VC<)ChLtGNkjQcnG8MpW-%4y*6T*B +zN#^+A5*pj-$%DvOxQ9ggMU=a^#?o{7?k_}i8K*~BU)AJJg6rYAAjxdyy=Og#Q#@J=Jtro2( +z5T^Eb;%Ox-91>5dDYrU0i^V$O`e9So#xOF_K;X!m +z`@Cj8(6$B@N+aU!Tbvc}jHDiqD+lci(}li{&8QbgDsK^bXl-3zOrw_O +zo6QuC4+PD1BR$^ULY+??CzM&K$!}TS16>%qI66@0eb7B#*A{b0L3KW4rV~EIYU3%6 +zVY&pysW5GeHg*hWJhVA>B&nT}MRA4Y6P|`eCqL90C`9PgXYj?Li^uGbVJ^v +zR_s*p6*E)`S;f;B#NW_$m91}CX+TL<* +zrS{!$4WUFNOs%NQC+!?|L>@f-WT8aoXMxf}rC}$CUj-aWD#8hG4nv%kJA=ls71s)` +z@4U)ACA27tS1L3=^1_AHrEgD=LhJ +zTaS04vVb2t9{?TJ1Na-psCpVNTTpN3X)|}8NBSYm9jB4W1L)bqmSbnzIzQY?a*j0v +z4g=8(239Xvkq<~=uFx3qQt1x9Yl`IqcWa;LKPFeur}?kurK%I=eF`-|-Lno@7ov-` +z$|S>wfRLR61>#zm@bZyccZ$=;hq`4wKZvs&{wgh;7xc$CJ<@mdkR;6VvBG91PE?g@JbCZPq)xwxTn@t1U4qe)q(E +zFiM;vH}j$WYR|>=8E?UF_*czO+ZtmQ~6fotQu!pd)<{c)c!9V3U@XcF08s72I +z=W(L_97YB-B=n5^*hS(imRV-zx(QRE32d!SO&#;A8<PC80`9*q~1-|GJ)Xrgm +zF<#5ha`3Mm<)^I;V*N(jQ#vy4M0yb{!{v6pq(S5ag*0Y1X=Q{fPM^<9KQ+GBM(1(u +z0EVFq27W58o(lyG^ntF7HtG{XLWoAdE8M$Ux7wv07oevK3u#pv{rtlmtCS?h*j +z_TccW2bb&IhcR*_$Ui)Q>ul|?*Q~z^y5RXsJ9O}zeSZI!aVXbm9l%jOvrM1Ad(phm +zWFLL{lXhVIklncH_2Ji4v32|X<9FL5*uL#UL*bMl@NnJGWL;p +z;oVc#a~`H|=-mk`(VJjp`eRScOMk3`owyat=_~Wd0ljtYlH$xD3`V~^T_=l*XS +zSpN>|=-L4>tr$RHsu&p-kKb-B^T%;Q-Hkc!37gySGuDbnW*6tiKv&a07Gf1B)gO?| +z0blX|I@HB&r@rR9Y|g{_@*W<_gQ1dNbx$tIBTQlPQJ(6WamP83IMC9T2*=+O=zwk- +z;F$!IAT+poVd3ScbcEF$%!z0tj?pIruX8C@~-F`mE~jb$x{N3Y~a +zlZI11jt;zAb1|+GOk?)y+pH9pxLnaf2_E_%Kv7ZpTSWMaNA7@fF@-?5##Qz0J@+_X +zx%hfq(tFLutL=m5zQ+ciJYk2iW7CU~<@>`A*#jew+Ln$@KAjt#8?~bt-YI`w+kpMx +z{2&&$H2}hYI8zz}=>&CidA;+*N7;J%@Jw +zl+>-8aX5z)==I$j?AI>(P21SM30t^hE|d451}FC0QSePb7N3Wh!wERoAlL5rMZ0+W +z+ptZGgEn+Ta=}LMLgr0BZ*5rM^4hmglMHlr3e#AuaWEC+*@HpmT+emZbk1)fPn1FZ +z)f!T&Bc;*EXB}|cnRUY3v8lXJhvjut234J??pZ(jQyv&+N6Z_=2d0kr>;I`+*<|jM +zk1+W;Uh!gt5V3Q_uQFJQm+&U^OwUg4M0hAU{1<&x)px8;$ca=CcX(ja>AFWr3>LkV%RfxTf6@%kRJ@r&7e`N +zvwwTZZ`xf)zKdxW9%z}sd>ze|<>78f8;tK_%-3((e4|~x@d|H*lepfoy?=-O=B2-D +z-#h#*dmM}M3EYTnM!u+q1(dlJ`}{j`;CIR9H`#ieK+mE_4<`XZA5I7zEa1n|d(p@? +zZTb&bM|{DiM<21d*&#?lBS0NhuvTgA#1v}a4c3Nh94)9TJ{Q4*yR&taz~@a^CwEQU +zj}Z?Ce$f~TJ4))+(_@^Or=fb-p;g0`5hOULh_>Oj0KGmt`GQ^9b8(cD6K67GqX^KY +z-`*gYVG1uY4m!oDj!w7~3#Ks^!QwIO&Smp(+71}%dZ2LLCh-uSln;bigRyBdT#e++D +z2BH;fnr4i0hDPPKku`>u=q+d7Q$6J`qEf@{fUkK9;y)PTmJbKU>G@2Q_ +z-p1$tP8}K^N2bZSaqDRBw2L<5_9=RFI+k}HJhOb52e6uH64T3y&R%&Dz2*WMPFq`t +zwXeSjQeqyEzCS64^f{E*QCnSodWK5Aq-SM?b@RhX+^oglOX=9yXmhkZ+F&2Il;b)= +zb)xk1cs+Q{l!*lsqY6nz!i3A=JWLuyhPd6zi+w)Dp&q22BIOt$Jk?VgS6Dt-6oyZO +z;}wVXEd#czZ3~uhVY(D0yQh2#md6FpeU&?hpGn*o_$VW9{T8}|AQpvX;8tp$9`nh@ +z!^Qmc9B;ZtCBh?)SQij8V$nTZ@E)F5Uz0U +z6IYB7BBW23D@$?tqM;HFP7iuU_{tE+FU?PFp>lj0S6Dt1ieZ`s=c&8fcVeHv8_zp% +zVHtWqlF8)?$>XAXseR^GdC$|TmnZT#pBPd-2nL@vMpQ1xxtVM<`nnk?;Z4Ms2A8B& +zVt71ggOS>*W*ML7Yz>F`2E1df^ +z)+A&mr-+u}Icy!C8C+5^1=9)wYVgaEvap=9U(mkG>p4_@&`w@i^<;@ozUcBe;e?gJ +z#q(nMN<;o~aznm6gSDh3iVU=g1=VuAXffrTb;5tvQRu9eW=atGXO#(0uHrW6>y=Ds +znawszuUJ%zC>Owj5~c#Dcov=u%0cWqbDH3-6M|g*{uO&NhLur-8Dyv7KH^0O5_zh5 +z0Z#M)a(>9)cH4np{baA8-4W$YzWD3;qLVMWJiZ)U_!q-h+VYo|>89uPLLKSj_J|1O +zq_WcR^0Lp2LTPZ?!aC~5?wD_Sq@#FZ2eJv-K~1W%4+5iI_^8NmB7-(Z+Z&uc8Fscn +zoZ2Ya^EhF0%yWvbx&AGp)EBXQ;k>uTtZ@vBw-M}Xr#npPRw*lr`R5ujt`ma@#8Vs# +z?R2D#A1Q(itbU$7Y{4EopNivSslMG>r{YyP@?Azoo5Dm_<`b5}my1iTeDUUS$&pVy +zo#=C4xIpiOuEbfak!PmoZF+{9gCeP|RpvRTS6cFwmpm@M!bjSC|JE8j4amCkj?42z +zPTBzS80#8YRCc}29ZwntB5pZb3Jn4qJ9x^Fw&?4yLK+1%cDY>_BLoYSBgDUBK^aRdh)dLv-Z!@E8lnS#~=5A!OgaPH@L#pUPpis$&{ +z;^LD}`ZQb?&tam^ebUkSZW2b!?#=ee|cv4#T`n$~RN< +zC1ixDqH>>Hbb^OiH7>Y(;mdf+U@4!6F?|aP31v(1l3l<^i@YOqjuJfgabVyw13b`r +zUZ_hpNJ?=-!rE%K`a%MZ9FpY;#IGEd#?!EPRth7%Xj7kubgV0Olnm2oS*xM08K8^h +za?h~=>?q-)EjWg-7%yxlu+RpFFm?CF7)i?Qw%VBmPO3A&=oce|khxDHy4)9xb2oR& +zYY}k@e8qwVbvQPB)q^J_BWtRJluKb1lyT*s^eJ4lxxW$` +z2to$%q5)j_U`CtptTS%cF;lrXX29W#I6OkcDm-f_%?tI7JmRw2B8?ljWGm?XB-7!p +z6iTT&nj5ck8xP&+z`LR{1Zw|Y34Iw&8H@(nhq~&=MaN^A +zRH^8%NLYDEi|zKJOhtrX?x(~INBeOw4T&~_7ZSo2{YN~B&-5?p +z%lQpQ2o_W=XQ?1gW5R1yoQ?#_cac$XMe9%DqAmCu({PWOuRh_Op=rz}yg^8O9iMs6 +zE2|EvgI7aefq~AUx9{2aW!v@aUn4_Jc5>}CcI2Ah$IVO3<5@#;%m+3C<|l^j+{gbP +zYsXx7?#p8pzFXb&gU-qh)tjKR%_->z00^ +zmJrEdkydo>i=UZJ@gdA_P8GSZX2(gAWYrQ&x-w5SQA%CEF@&OUznKr_aDG^1l#*(q +zu>iHe()3D!Q8APF?G_4E90GbgtrqXw(Eu-utVp*&qgo!03HUyB|gb5@mE!5rlc~J$f^OM +z2&5gr3zj{7*@S!$`{qauQ%Oz}`l^l90Fe;JORTW@)<(a&;kH&Ic*POdwtB|20i*>l +z!}AP)iHB>x$RP6w7pez=7Z2jn?w&ut;?Zk%5@qi3wPM%K)j`?(*a`L%e^Cp4xeOs`r`@3jpF +zzGQ1gpR=9Mf6Dga>Ak6Q-(^jBkSUBP%*u;DYL?0L`ay)~65`@u&3rH>oEV3Gss^tJ +zd?l}KGRD;y6ehXC1wDb$G2?u@McAbXnjma7E~n4q%gGXbg$kdWwzWsT1w)>(;mvQb +z6Bqp=%G6?Ou|{Y% +zxwX^UyZZgAcN?yIH{(Yl=Xcy}2e19#?c@M%%R=7PeV@nGTU@Kbnng}!P<%OmCG_Pq +zEIl6@;wV?me^JK(3G6UrB=waq*+L$#u_Yjx25phIiD_I*_+ld{vvbN8Jk)|xTgDd? +zv(6&&VqH+CC)8BLkM)D}7io+q +zAF=+CCv2{Ly-jR-tu0`hG}?EuwNB#^(!<~O*F^F%i|36RV(k|euxJO@U2pSvdBD08 +zKd?2=eA4FeQUlUEjg&$~L^hR?px`jl;O!oKIT=pnd?%_2&p+_W_pytA&1PEBSdf>l +z!Fz2U(=6UNP~?4azKs0p>h8E-Bthq +zKmbWZK~&$Dmy=ng6I_0PhVK-naN#3g>>~N{fpD!S*h0aN?9v99ZSU>j=fzV|T^*55 +z;ewWYbnt15`FomV^kue9wjADAOXMhZC<^|09>5;k3zgBauyUng6@)}AtcX)MU;)k^ +zpve`>#F!oxUnrjdxHK+&4r@dwTG1$8$YO4=sBIa3#s;u(UBLYK)YdnnF(7Z4*H3M} +z!6xvIqmGG#)_wH5z+<{V{SYo( +z5u1YN!^`WcV)jD$Bd*9_6wlYr%woY#*Ur~n@+<=lqDmKJt|U$wo__RG9^q1a73K_H +zXDkD2GG;F+gzA@E)o@`80UT{0L{gl>RiAIEs_HJXugY812$8lXrotW|4239aQQ9p1 +zdhm?Qqd6_(_^`lKI^Xw1R~SizJ1jN|hEu1?5=`-WzUb(aMsy(#+rlW-clevwE*-Yh +zcFwbpK=IDSkp35OzO&TjbOqp +z@neGACMS;N<)_pod2@Uo7gGZ`ZGxRM|NOtsjEAC9JI=#rI6^SZkgzAfFdZ|Te^vq) +zjeN;qoX!=Yo>p;yg9X(1gry&6Phg7I^K)L&c@}W^RT(>EYw<&pi|GANYiko +z@GjN`yajK|{x4ePg)f0p+CT_~9u~(qlsfp2Hn{B#ZroI5VIY!?##F&OT`OxZu)}+P +z({?`mU$Fl8KDKcCY#xhI$z8$+3}L=LL)uE+*B>~$XhLJ?$2+08rkLzIA7_2oUB|+Q +zjV#s4a%EOFNhc@!5KM96B`^3P&N}mVTuFcv#z<9cicP{Rv?XwmGMtAof|&mkT6M}_ +z6;jQ!VAWF}K+?jIAdT0AJvCk)z#k02kIPv&Pd_VV0VguUF_F|ctr)7b3~@N*iiL&J +zUkz)lG~(qHmM?fczdjv11WbMKJ92A}+y%|IV{acX7DK}*b=Xzmp<3UmCv6DVIuvns)TK5ocn+&+5GhewP%<$tpL9$RZw&PY;czDI +zrB)`CY53HRJHZrFrU|F3CxdsH7UHW$sui2&hun8nUA!P0C6z-@&wiTdtK^yhMP;j)ikGUSG3m-xqCQ_%RU7 +z+2F2s<78|XXm9~DuD_%+`IL1gdLy6olgdivaazbn1GxLcou;Y_^~CR}0Sb%g09~~$ +z!S>iWdxKylNLsXA#p##jS7oU?WlEJKA*s(En|Iy$zM*1|8O38mp{uq|uX2YVD~_Wd +ziXCtYS9t>@d)@O;6-6WVP}IyHjb8t +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 +zpPz=Pq0e +z8Vi0H*#7&GdHeRzDf`>&=k2PEJvKIr22CBY#K?m>Ncr6I)G?mZQ4uf(DB-^GN9>v|yjcQdGJ94Mo%>=< +z#Ci}kk;-K`L-HjV0##r{bLcf&|MHKl_j_Nr>2;gX^N-ownsqjF>1%DOAJat$Y#Kgk +z^G`o)1_N$t@36_we$1K&HrT**Z@?=o$9#mDnV7JBfBWY)HF(Hc`}%Eq3SBa$P6Ov( +zU~T<)t2uVVhK~)}{IO#;dg7!F58q=gSYs^ky-hw<3VCP#nNNP&+FE^zG>d6cGa9My +z$9Lk+6AXIN)1c^#ugiL-$QQ0;}LHT~@s+LK;ou +zl9a+om&YSr5C}Zuq~TWloZDU>Y;d)Am>^(@D@F(^cWLHBq08Ws#5*Ls0=}bZvpqe( +zzsPE#H4&^awNxNNuebYVRK +zjhq~vw0rj+w(HN^jCBAeLVEE4%ZG3)Mw4zVq(5@iCc9}nUL@Tb-gtNL^rZdaW2fzN +z#~0Dy7H#i%vwdver2Q|Kb=XNXGLAH|3D;%JA4hN2$wQM*S +z76B0#Veo3~fbl4Vs^G5DjtYK62Y>wi@|tZ^rww0eJ`?bgV8O2f<`nhdqGP!hun5~_ +zTm8O~hO>}qmJ%Nl=_8FWF6ZH>9MKi{7%1Z5UK20+-H#s!uTgxI=Z529HVP$DAS0#< +zuhJu%U{Jh*o^u}Sfc9^E-YWS0=n6)L>5H#1`|Urp&i*ylJb^3SZ^?mnA5F=(R?-D}NV-HPEO)w +z#@r!UwDYgM&aQsPyTZIW&6ef +zd;blW;#Y?7f;UXZYC8?o8yfr{yk@(-=i<%SUTMX9dLavwqMd8|>@RQFXxI1QZFszp +zi$?Q>V|cOk3|@cWBUPp+lB5Q{5N2W#;3js{Ro20;yoJbVWg<9Z6o4 +zL0jVi;I7J6x53DjOZND3b}XhPud*a#%ACg2ummuV{JrR{w%+C?tKc+L3G;q-luJ0jBolz +z9|Ysu_U3n?rv)!|sW=_-ohRbprbb6?=bk;b?ZS(&b|D_Q=D&Z6fYWljwHs5J*IjY3 +z&0zOv1`Bc3(+oz1$r+4tpbX`57N1s)W9R7RZGCp*u61^7l5e}i?ibK_{?SIk)79Q) +zzqF$hWrnt~ntmReT?Z#-u{}#l$qV^n-dG1?xLU(HY2yZqQ-$=@qbpY5S6v6cRz}Xn +z4ISK+fX&hNI9+0rDm$t3up|&JynNC68X_kUk#of_(UjqMg@cV@du5Y7viOV-Utz~7 +zFf)BtruYb_NK!oueORm`{U)5^r+R3C8u|N;d)DAwsTnN+ +zZX69`7~5gzqj64Sogv4(a3_h60o*lqKdx&W_ONfcLI%^0Dt8vI$11ZzRoife2(HJE +z9IrTAGBdN=cG$y}r=2A&7f`{; +zPlS?=c+nSIaS4r+L|!SEY4R$^*G9kNXA*uu2bw}DAPg*#G0J01Mpsi)S$csP)HB#6 +z@=XHIrnSHDG^znc07GJ9K=h)YeEC?+NKY2i!k73G?r#G +zHZ~5rB|49VY{M2Tao!1tjyV2D8fwmUhd97Rm~smj>ot@+LIGQx#v`!EKl!TiC_dN$ +z59>nuNWs(fgh^0C&nG82fB!n_LRU3BFQh9n5dswBbspiut2nIxB{1esauk41ITuuR +z0>>QJP6Y>ONntZm +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 +z{4;pP%n(Lqt{1rqqr~t +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 +z9QAs{kVseRnL8^`+f(1hJ`H?|M?Pr2 +zAK({QDm^@SAY3>3MVTGs_`BQ$LWA`LRV!x2k>llj*5l`-IUqEr3;2P-O-7=9)EeDL{jXyQY?cfdeEuC?V6tt=Ite?Q=@e`7KjuAjIn +ze0}hD^(&%U8Yw924Qhk+Az~mW&dRB0WtF^VpMAEzXNbN4G~Q3hFYn0x#E;g>+Z$F5 +z$^gMvPPv}F0EK8G3w3nqlX2O3nv@r0t#4T?FEhAVUuLkY<67CBk)QjOQcudPfx~Co +zA;Li?;NMaP4uII{EA=QgZitc1;PjBr0?*6K7G56tbvPyW2-r!&@okL1&tkjcOF#WH +zz2Tc@zY^Nd<6Cgp{rmL7iqwGM2wTo#F%L}fXo#aNr^AoeKBIUT;PWkp7~QW}IZ>`(J&kUndL&2yh=uUz@S%V#Q8hrCj0I7 +z55m9nJ+0F_9Kbpe+uOE1OXg)3!@P(^I)(Rqn?{^ABZYIuwy8a{SQ*yI%(1=wO1&B1 +zv0C1AD_ghNvBEZIEmv4Wwc{X(<%*viCUE>ZJPIuBgl%B__QJ=qWr{(7ze5ur>248r +z!T4+ec4(b-)jSKU^>u+H)(=#(LZk?(G(@z)I4JX?j1)44$cuf84T?V=cpzLqzD>7V +zv3yE}W__v3S7A40$Mfn2M5-_siieq^bG9SA-1TO7y!Qopb4T%#GbsQX(FWV_;Iq?6 +zi6stcYlFBPr9LTfJ{|3IaKsq_ui-&Q;}>mkFm7E-U)a>TA#7}2A2zh~YZ^zXu?32y +z46gWm00=!?-7))Ms~6w+!?Ne3yz&JP&W_4k@=i^k6WNHo6+?c!L}maC0^B>GEb+XL +zy^OHLwKgJ$bs{A{MPohd+YmURc#V +z9^LRGC0BqHF2$pMN=6c`68>sE542JuLZq>fVU?`7fKwhybNy*3~ +z6%)xoIcX9k%<`=pjiwtKNa0evX7FAQ+i!R^;eKf>>`A}S^Lpr6R6B~{tTGz_Y} +z6iJ=D;480)6H9fACyrDx)T4q)*Wrx3ZoMviEUR$Cix}{9Xp4$Og|2 +z@V#ZEn61^ra)`rGA{tmGQe{%Pz?8-$U5E2>ub0C+J*cT&$7fz~FpP)0hxUa1gSYDL +zl0UTPeS)SyQ!?^ME#Af{C$%ygpEE;X1myyZS-DT=^cwNK9h`1_U|^pPiWj@z)Mpf# +zA)%)0I-yZ!7f>F{6`jA{Q(__DAgR`dUaaqDwPxu?tST*LLOg4@b9lG*Egrnt;C;Z# +z<`egJY}&?iHs{O`P^t=E?$cGeRWfS_CBRnffpd4N%1bgRI`QC+UPUhgkZ~ZHW)-ZA +za?lbeQDUg;#1_izRj15DB6_S=C@v=C!wzgCO{%;CPblS(AutV!09_l%FM%Q?hPuF4 +z#UW3X2}<*<15DNBWz$7jF&IWy$zT}T9UhcEMc;A>WiNEr2h{EYKfE2Aw(*qt$~zga +z?9<+0Be}%`o5RPxIxh`39S)rRt#H@S&Dx+kd9m|h3|q4{Fb#~wDF&Tg@L@>f)GuVT +zrFIILwPSTO4h4y593M!+ma#`$b@;+I@v2ySC?0l-KPyv*rAz>dp)HdqbeONk@lgb; +zQ|3WiU`WvN8+)`>hiAS8UKNWEQwKCP2E$#0H)~&FDU3njUld@~5zqOC#}PXpe98uS +z9-k=$Ytuf$8k;%f51*?s!0spr9Csh2bD{vC=?3i(uRWPlukfM-?Bcu!wN2);iuxTH+wkRW|zNM5Y6#>q>>>Iox^vraI$JRZsFDq!D +zZH)&4i)MxoX{pOrFT6_X0tbQ+B6dr3s+g<(rW`O5^p-&4$eSTLGSWpZ#j=2i2#u-u +z?Yx+mcihr~DipS8vt~UiYv!>`7@!wJ9dN&Z7fH0s5u86bbx*i{L>{`yl1bYf%Vaia +zLF@Y2%oyYY=HuYeFDWC1%m>Oq5uj^%v;~>oLy$pAC7TA1fqYWWN7~8|_i2xz4N~Hj +zN-JV}4$moej9eKWKK|vfcDhFz8oy0kyA48p(ctzk+N*U#j70?T7E?ol%T$dr7IkWx +zk&h0y2x)i&grp|*8Zpf>5$o|VM@__tkJ;2DFJX!%jp})Z@%_z8Oxh$%S^>NqEfOHZ#nUpg7w^wH2S?~_J%Fv +z8^SNvzZA~24TO#voPmP-E~Nu6rL9zJEp>TQc`R)mFo5CiV=d#Me{xND@YEgQn$atC +z0|dF}1_NZv=^G2N4;_Yb+m(zIUCf9}*;@)8%Y-kbUo*NTY&>!xJiYF}!kfK^Wu}lL +z(lUea_p)_t@M1;3VA>a^N)8$Hh@mcdv`IPBz*$|7ryWa)C(ou+_K5?nlG6?`)bnMc +zJW&T6vB3<0nc>Ev?cx4Y@@uU#9d$=Bau+1_8?*f^P+O*^W{CNY=nGLvmMNZpnhfnT +zt>LT3?+M$-wuE2yzZM2s!~ZQ=126Ii9sm +z3~uId!#yomvuj4S%51SQ{Cds*g_qX870$H{>(UClQ^D#Z>kE{DZ{tY&kkTi{%4o+^V4L9)1N@37o_OMtnjugr +z1}u{>)#LorK+8yYweOwq#+pN6sAV+ZDK`ej<)su`OIJMFUKj{?+T1hU8E%q$guQ2X +z>hcJ`0>w71XYXb$R6mgf((0#dW@rHrHnrGCK^nj)r%7J`8WIc|RO)KcnkrygY5yES6K3-mJmd +zU}oj4&IYLGMmY+zYv8J|bLh&@Gu5fj7jV-I*Nl(fE+r4Bu8YnP7$F>Kq)_8%L!6_? +z%8BtZVyI7f3g4`4;26AJo1d)<@Wdj{awxu7O5q3ymQ9ngEcm$NRCs&M2jTs$qk5kK +zXTZSGdkyGg`nU)K?xWz`xHrHR9~XrlSr%PAyd~@$+!n4FTQ6&5O%k3II7sk*Q7=OfJwm;Mr`yA3asF$Ew}x%QoAlutzO#TQ&e(P1!1;Xidb*a$C)K>l +zQiW+!@NJwp(v-~eeA?e)5DI^2Bb+Hm99?Xp!n +z6h7)a5kBZT9*%XK4nwlU!T~}&mE{3Lbv_snGZ*^CoX(Hz;{ceIK>!DjWyBI_)7ZMO +zZDeD(V)P4opMV(;g8%M-eBwx}baOJRo5PR~iqLc&9)0xD +zTFs;GMe&IWqG1?$bm#y82M9?-K~$C_s8x8mxJrwxv0LPx0`El~ZXF9JR-X$;I!?;q +zI1|pa59;xA+>pW>@w*ooC~z)&wT<>z(&mRu9H#M83ZRY)E3k)I4OewIK2DcnO2Ebd +zUfa_@(JP%@X;c!37S?DCM>I7vP1HP$)58(XG(|GZB@s+f$)&-4AJcqb(*v?8W!!QN +z5K~a>g&^*^j%5wFq!{K=&?$N8ktL^QtU$-7*}NX}e}2rF`}4c^ocrgy=bpQrOKtJZ +zv6Y)XKCyD-0Ur_guU3hL)+UVjPS0o*C|pSyBW{nU%nXLVRDte?ryhyS8!-U9X>o~_ +z9MzbzIy)wfVz9%-8v(5GQ&jww3Um3;^ScNrRdr$SEL@J{dc9T>*@aI{5s9O;U--+Y +z^Jnl`Yg)H*?BU5mDi-bwohkJzRpY15v*6b3rSscD-X8oqZMRfZ +zq*XTTYo{V63Web0Ttc$Dh8Wy9RYJ`{Qs~oN0(08Aq@Z-<~|>7a%>GD=JvNC3#ml=lMW#aaTKx6 +z^7y2&3)mAuaej@N4a%@;sO#;Vhoum5d}4pC{mqw2{O9(H*yVaw$ycAUtu3Bg2z$pW +z_2ndymZ74CoA}B6_Gtrx2Mx*G&pUUrEK!H5-q%7@A4Iy}kJFI!74J6$<4j;8Fz*LU +zGc8IJd6HwlFso>j0}~xx)8}ipoI36WRE`S>(sp|JG$CNcp+C4D#F$NvFF(`s%)aR` +zf~3a-_%jh2AUZiNM`6pS-1v9M;1A=)T@lVxq;G#x)7}LAzO(-##xVoF`rOg%fW90s +z&{>~MLuChwv-;sqUSlz0T%S_{<_R(O4MBbLrm)&_!n#wUb>K@<%=oa1%vX$vQmbXH +z1$?f5C~GQ3crSjUOILk?2>UOwC=rpahg$j;%__EUQNKvo72qBSgk*KhRMdg)yQa8` +z6jMfZrT+IFNU5-{I#Hs3XENteV;6vsEseXY+uJ$*SqUMet9$B#IEUP2rvOd^M9g#6 +z+O>3*ln3MJGG5EUxRAa>t@39W9RZQ5^AKzvNns)xlV2@hJL915YXoT@$6YxIlLXR?AQ}6Yimu5tAcWUuTkd;+a7! +zq?VUfMT&j~-?&XdO1X9izPp7QZJoINcTvPKy}lSfV8fTK`xby65)ZN^hbAEU|JV+a +zX||nz#H=z65d--nCi#2!+ii2Nxj*wvdl>yX5%hbwOGD0NxHk`tGfpBv$&mP-Rp2`{ +z66>1TC{wb~UJH-n4h*HFa=wuCAV#da;m6f= +zFQgX+cl;Xr!vB4gx_1btaf)Xad$e*Cu>FZq)feoTF|AMgYQKKezVnAc+l*1)9|i-r +zVKezV-tPMkpUuZu(konpyfX70K29=H-5wZ0FNI~gsbecIcl#Kvx$?jj^G$gd`@I%D +zRJw5%pkATgf;CgPG6zSFOvg9ns879tFP}v>dk5V-HY*nAeZQ%VJ6e!Of6lHXVY`|a +z9jmo*%bPZ9&|&gLJ0G+V^QDRG36vkogOw0w%5qB%fzJ)6hqD6nAgwNgl84+k_^a6Sz9W#8Aur&}nvtqK>$I*$h_8D?^jz19CBYOYQX +cUp4)74@_D?GMKQsMRWB>pF + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/216.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/216.png +new file mode 100644 +index 0000000000000000000000000000000000000000..293f465e3d058d341afeabbff85d45ad2f4afb94 +GIT binary patch +literal 37727 +zcmYIwWmFtZ&@Kr<5@eC!7J>zLSYUww36LNgAh@%*6C}8V0KwfYxVw`@7j|)59D*$_ +z!QC$J_nmw1kDBVPshO^xbGoaho|*~$qAZ8^it-g28XDdw`46g3eD*)W#(X-4zTrH0 +zV$Yma<)qOnN2qt6Iv>omKA9^ip|L%+vC*D|SfRc6Pvwayp9l>N{r598^e6u8KiTi+ +z|L^SVZ}k7){!ej#m){x&NLX# +zvG9#rB#K6?Q7|g8zRn$0*g+i7hpoB*1_KldS;S02#>UY^D;IJ78EhZ>RM +zq6Ke8b`+Iy+^v7UkGS +z{8#*kP^}+iadoQG((@&Nrd-&~Sv|oNdk*ZmTy+8IYe4q-iC23Nq2vR&Am>FH?}rllapenf(&_Z!n%nb7WQ7$nJpC!3iAV1IrJ4Ai!5240-_q`AoM +zt=51BZ)dO8fJvz1q$sPC6LvH8s+mGzc+vUC1wI?Xp5 +zTOBWWnw%&X?8KuUQI$9+d@J!G7~aa8C~~vZc$p4Ls3boLXoiU##8-U +z$}p-l|54@Pj;qUs_D@cZb%dS}+IbU!{QH=EYI~+@YfGc0PxyzC8ad=}Xry;iV+ts# +zadwbbA`b#37#ggu?`38<{EV`S_&3F&z-dVHOBk+0{7_s;`3i4B%Q68Tj5&;wa|-yK +zR-UTr(J6gY{xJM@GyCsPtmnHu)T4Wd2~u4V505op%A0VzOS|*dryJ(i)%Ol4x|e*d +z{l`1|**jLCQ>8y5Hq61=GL9J-C$LSB2OC@5FIQ9_;Nul%jYl$3u!Db|DSl!;*33#x +zI@z!P`d+Tc_)Ex7ej#Dff|i_jcD+JYHrBCjJ()#adX#Kc;6QeI%?AW2p`d*RGL-7--futHP0 +z{b77Sl&|)T$Qv6m4V(5q1!|O1i1%38vVYlJMAuoXjC)tV3X`Ga3ZWG(BU$Gh3$s8hZrb6F#>I=-i=K6&3$^7p6@7>{-T%NbY&P +zO9{;Gp8p;%` +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 +zb=;YI&6gyj@183<^?k;OK;l`-i$ZbnSinsR8~ +zr5S~Rk`E8-7`qt{{=`|L=c2k4Ni0PdyT$Mw2OL=|gIF%#<@FtFtNY&Aq;OgvPVti} +z`#a8Z=@7Z(ZSpGfFIcCV0%Z~S4*dkSOE!suo_T_xQ>S@LC^R8TKZu>;@Xv$g=+=4{ +zKbRRyv<%6H@@s$?%oVwAS!-0jTNBf^n?V`aG*l9O^CS^dFULZrh9KE +zjlul{&TWurP3Hw%bO1&XdF&}3yL5z8K=OTelGUKzAhA<yG18Hoz!YRm0+6UFB3lgiSXo>oYyviH88 +zsgL*zsikJN@qX{9=&+@&dt9<0tUT(*{g&)}6F$7)VwLMO3wHnCK^tLLED1EYkgxs0Th;3Mi+RuDM +zqy4l-5*vK*I4e8IKfH4Klpa26Fv)}13Sgdkd|YDzkijCjqavefR&n8=g+US|(OFmI +z&UYCyx}VC$RJ+>^f0D<mR)|!-%JverqrBl)o+|hG9x$ok5Eb(@i{OB} +z{%pjxz_F7-D%#ek5E@S1jirB=eHWWbd{HPly>CUR5_gM;SHFCRv>2+*lf(Eu!y%~+ +zEBU%?Bio!8X5-`TQBKd5U6~pgeOqp~e&-FYm@<*}Oq}_Zs+kJnMf~p|^v2P*j4~D{ +z@`F!P$4t461QlJakI}Z!-IgeFpJ$ER{x#vOiprkd#9;wvy%?JG7i9@n!`VD`N&{im +zwf68R)_-aAYrP9yiufr$q5sq&Z*_nMeDf&8!8@zU1`#?CtF5ocIA|n@pGMk%$TAOowJ_^kW)LU +zLz_#M-uc^~Al>IMN|Hp&LqYfRv`IxWbz$>6Z +zU-~56(k8q4gq8ypveR}Qdmh^>rFwN<-8(_+z=xY8F|LS4;@@&3S;>XKnV{MqYa$W&aBNgNyfK +zi7wNphuNHuM+@m;(}EroK)iS5^?6H)pFcJ>IK;L$8jx#xNcnKeCG&zaz-81-y9KAV +zPtD7EiGv-YL}^W?zqW_n+JhZ5w^>=Pwp~;?`~Ho`hL(O59lZ^|QANM@-^XW5- +z9AbaCXY#%_mb#bNWu2VU4nZTG#Qnaej9=GxeS>HT7pdQ&!DgbCijX{RUno;*B%jCE +zv*B2|5->1FEt#C90ptr9#Ov@YwFdc_@g9H$tHWYoWAE}U@!A^TZ{dH_FTI(|&_mo7 +z;w2}FHcH3t=p24szrG&ZIN}TmDc}y_-ppYuVP8sC`A!EDXK&&!MxM1%Ft%dfCtk2@ +ztd8C^C)p7wt19nUIfFhZQwiKo>gY?S7kTS{G&NxjAgNzLVh)CT2wK739j&aW)o$JS +z{?)rc{`#OFkf`%=*V*a08ui4EW%?u&jMx$#vjZ+uorkJ-Br5x{mv*y}C;lCkTFyn& +zzx_dg@j(Ss&fr$g*DdZr!7^eRp)>j19lVG9A5?Kr58sfJb~l1W&ojMMJsEUl%U;>l +zQcj$-Y?#x1r(~M%^t|qETw`pM5IhjKz9q!StG=s%%f0x_Y!-Aqq24pA!r{Oh%1Itk +zQxIB~D$C%JNQJ;$k<7Tt$r8j>pd3j2C3rwSbP}PI^U{jh!6m;&V8`22!cfaiIiu{> +z9;7o-cxhzZ)w_MV_Q5{u3Uu<(Xfp6Vyy$CqHQT&<;6I4?6vOJ;cy)A9jf1@Y1KD56 +zveCAnSPnt{*XCimpZzERd%M@z(F^;h0nr3YGRO*5g7f#dRmHp`+6zyqtHD0lx_43HM1(XG<=v|u*t%}|C3OL7(~IBp4U +zAn~UAS2ssD13M3hFL-ox_nstLYN!5-Sqx`{(W*&GAGn7VKS8>mZi +zaAi<0af1&$ZdgxO6BJmX-~wgLzgjW}$u9r8r8Qgz`Idfi?K{ci69A`l%TQakNs!u? +ziBh=q<6V1s`pUX0>hHNYY2OD~TW2%+4D5~$63hJ_=TV;cWfjedH~h{0qvMp|I;W=5QerT*$T`4WSG!|NiQg+uybk#^kM&}~+-{hlSuvuhOE_mA6L$%m<)J}K>nR^Pxt{v%VyM#1dVl(^Y +z39)NppVaJ}pl*Yk!#5tfeqYJYRQ +z0=TuS2?qex+5ceZ(~zWaBG0>eo!gC7ex@}COKAsBYl +zUe(Z|v>^Tx=4)-64H9pZs}%d5=YJ5G@ +zf7`mu<>&mcU`&a>F#%U4oR|DcYW6n%jEtTPDP;K!+Poxrl>%*fG@tTnYqWPMCk`Ct +zPEbzX5mzCIB{8Wk=z*G?vd4q*#JT01HddB?iITH#-^h_fLc3IZ+41TREF+nNn7mm5 +z?3Uj1YEoP@p$xs52M#edI#px!k$OUu+P1ZJFHHP216#8xQ^vVTo!O+fL`8gM9}e%c +zV_8=9KnMh@hL)9J}+vR+-ja`!EE%(;Ck`_JXli$ARD5eF&3;?}E?xjX)(I6VfyV2xZX763d}2vA?kq{3fjJjb_!eRN^u +zr`g!?7e)0#qzl(6L1J=$Pqj$oz(`&z>9lj4H09frcNb<82zm9)i5o45N$ExWfb!Ll +zP;;(46-d-WHH*^Mz%IVX&AaauJ=)M()H#j;>`ogoFcgRgLcYExSOknp6l!v1K~N;2 +zU1vnCf4@>WVnVpMX<#OzgZ$>dosVr-1uGUdqN37eSWvqIMgud7Cu&|VP~_w(Cs$Bh +zh0`D1LAdQ18~h>dZ;A#i3jWj(=WYG0Y-}qzbemhMQ5S0`L_+T&SiG*@s=*er`BZ9q +zDp0)LI&MFMhn*3>x5=*d@%MS7d-A=kvx03+{hK2P?pJjfE!q^U*$FZ*@b7Xppx?~1 +z4W)j5ge3O?XIXxev$*y1;T-gCaWVscetza6un#H28#4Davr4{a(c2ibWYUx@OEdIW +z={7yv^JDCsYTSKiHIlIdNy|xvg}YwZ!~NyMq*NJ5X;D&FKcXt8S$fGz$J7H +z>x+^g1v9Dy1*-MF&*{*HLs8d@*(4NbPrYhbmx{w+`mLM+hT`vD>bB;sqy1|#BY}`J +z>n{94LXavkP3s +zDw@$47VN7O{N9I>>v)ThqYHfS00_~0Mf-iU|3mGd&t~%V+c2xZN*4B|PaQCCCW6)Z +z`|_WH3e>jA#cv_8}f2eeMBQt>KmwbPAXcg&L-m7PGJ-sbu +z`E<@8j?Kipf7i`p<-ad!f7DAmK)xpr{{W?4Skb_?Q0I=Ki`$YjjI;SuHIVU7{&Oms +zw)hr3=`+*9U$56NHVSOIaP4^q3utMnJzq67QU{Ba$Ui5%LV}Rk!F5^zQOpJB&?xXu +z>S!0zeK{~{qpyp~PR#f{OP_NbE~q5Cen)=2{)*_2sk_lk^b?sK{YC2D; +zVsD*z!A~2r71I-G;j`h&)tP +zsqVtN3ERLvFxKaO+Kf88tU +z`1GndSURL!|B=_qs;jBVT(-ftJntcg76VGrT=1w-VicR}-y0`#W`kV(B@lJ+krF>C +z&9C8rjmC~wUn{G1D;MkbhY!&|MEBQB0Sc_Q{`CK5fON&R9l!fy%=kE1%JGg|5d9OW +z)uwbJxON#`2njn3PjY0E@KU`it+70@s)H>b5EogU1$u-=7)6H&x9aE%O$rNf9~g7Y +zo{;_-_*x~8pTaoTg1izQtN*;Tbc`tuhqVX?QgjrYp3oL5?f}@NQL7!)44?bI0=a~= +zuEn$^&}Hy%9rkpm2h_!r_teH+u<6Pbcf+&4{9SBNX+*V$NB6~CtjrENwzH_ +zH3$rr__r6?Rp7epcivMb@1$2-xDj3IxdVx6DYPC%$i3vY&QnP3JEhDyBvuT@n?eU~ +z7s<446MWXZ-4s0Bvd^wst!@m`Vf`o4bH~r +zgxsc7Jt_!>W~_q92@R2V>t4;oY4HN-m+t^-;rwWjTZX_cPCFo-S4Kh0XMq5GFY2PP +z>-}V91t`&4{RU^@n?lZPGO8g~QGxwb^=e;a*^#KA0cW~uUM07WkDj~rg@_(sb +zP5ccG!b`{l;~2THK^o$UB(WhYLDj#|Tcxec5t +zj0>r1c``4zoSf1;Fj0eF1s-O{ifuB$(xtEBtjBs0vxtu;+bC4 +zOO*v1(7moqdOdGxroNg}4x*iy{iWpnZpM05WJszMn3z2ot%9D>pqd(A!k3u{hb1}f +zQmmKW{ajMG_y)>2H_6tEY@eH|RYLC92{fDf>w^}m`7Gn9TP*XijLPb@=ec02b`puH +z!2Au05D{Xcnmny`4O?kYmeqrk_TA2So2R=*5rr%@g5o1HMWD7KZFbgHIesdmM^JwE +z(vlNzqa(D2@0!&`Ww;Rq +zl3QaTe%I4d4wnIfb`m4U5=ry{Z&Q6#`|>pIiX!VU``^k0x)0RWTx74-I*9frKIR^)C#!We91#k +z8XwGm!CP){K(SDjy*l2Dr$$Qx@nbZvhW5V7w|bjj{o#6upL`KfFa3g&i!Q#o#FdOT +zL$4_NtVUVm$9B>DD#2bv18FpAC|z3Wcn@zlHjkoAbyGu&5Bk4eqjkp{hJyH$lkJ?N +z*%uj=pKU-n=pKnh&i4DW#rPkKD6?qe&>6UQSB=^%zWm#bZpAH(Ur+But`)(v5N%Wd +z4b;?9?^Lk@`$S{S0IRhMGs3WQ`!y}CpvCdQ>d#6vin@3?S0@=q$&i*Df%+=M+{gXo +z8XKZEZCy}DS7`$->jkl7Q;$SziCxiB{O&th4Beyq^zLK_D$mOC{z(*I0(d8&b|Elb3t;79)E8{!+hgUNC&s3k(8b5=1|LR!ULkk{_^IK*ZYkjANJ^g3r2XW{w|9mdE2M!+-2t|2~zt~N{ +z?~}~mkuOFK;o{$9-7_C`iKv7PH5!K2zK3|Ch0M?+ooE>;$mQ^Mx7?tQKXu7>?q`{5 +zBNfdWf}jAK9~JlmUHy<%H)bcE>2s5xF0nA^m{;)=tb%iKEr171gpb>#DL}vQi7ox0 +zQ1K7Ss&V;MSKnoeoemx>6AavXN^gjnanj~0Y8JnH=4yOI65TeOX*Iz;r#B+`-`&iU+BD(+)YH(NgarWV8LA0Sj9vGq~dy5%wkJwmW!Mj=?}I +zF^{z*S$G4WyUT^T{Cl<{>KJD(?K#gKe-3Q;(xoa%#x&9C#R{BDRr6yAEb>Fs +z6T^RSTLWZkcVm8+snH!!V`8Ows24~u7!&8Ay~^aWkCPtd5(o6F_m{TU-V7s~LSmzf +z{#|$ODINTA*(Che>%E+Yr!LlYvuGQ_$2klf6?&ePV6Oi2XArY8@nyuJ=E6o0OT(6F +zkBPyxoqX)k1nE7xnaSUutp6ue$^;pvvg-x~q`sFdUQ&E1*C>TJ&3(??MNn4Lq +z76cr9mlv(zbi-Jgu?k`U+>Dg_RtYq@1ej8H|A?~Li7Bw^U>MnszoN(DUOv4Zh?Jk+iBq9hRp6IPV0(eb1s#y2*DwHsoaNTjZkGi2I{H1E@UplDsVUpI6Bp*d;hC5oJ%YT7Z&fFZg<hWbS+tw&q42wMl^Gu%3@f*vE6^ +z5fyWC3V~mHoaEx*)=>v-zxyf*(P0@qB&jy2@Ov}RgFhn9l2kG{!Sg^hqsP$UJmtqq +zb(}HfLA|+w=gOjSnZ~08Tcchl<&AT-z7HvqGqc%~y+(*hvX;%?=2sLb`Pw1;m}brw +zeg^Oc{VY|pc*PNz-p`paO|SpMHmlh0v=KZ&vbX%oB3+S7C{&%^WckF`4w)3K +zV6&G9?B#tP*`-2X_iP!*vd0j8NhKFwB%GL5D?e5Hp5AKdPJx`Hj!N9O~^G&Vtb*H^u0q +zMbH90#B8x%shD_)$bf6hDr>fQ_O+gX(TOttH8fo+EGKrb2a>;J38sVb8?&Hg%kQEW +z+5Jn_&X{%3xyQHasx!k&p|EsTlL`fqrQ&nC6)!TL!z3Wf$A>Fty!T&;xDzN9s|p$8 +zP3(9BQwUBJaoz8vgdEF@snA+!t=w +zVafO2Mm3_<&P1N*1qTXZ_$lkp{S_o`_@VrnTL9e^fey!Oul35v?|rMMa!#gLU?%iY +zRK3rzPi={Fpi6!Ip7^t9#bXmGUr~-dS5)xAI;D5+*3~tPPeX!?8ViRsbGU5+uq4Eh +zFl5vUibU_EE~u}n&%OI(Q*O7?rmLnFSpN6QnUDWS8RYHpx$v0sxqcQxps@myDX^NZ +zyQoD9qz$&IAMD3Y8(-E6!50K~^murdMzW91H2sT7K1$8sEqg96zsq=arfQro>>K_p +z*Iwk?gd4(9YAuApwk6B8o?rpmRY4=GAR0KVyUs&z+UP=^Zj`5j3h4VCeIL~(b;rMO+1txAsH>=>P=}#_4_A~eyhg-N +zAgVjN4lPqvidXX0oN;(FdKpi4^a@|3jPb6?J8PfHYER9gpRN;TT}z)B;e@hqZRAK9 +z^cj975L1?8+K%LIO!eniS{dk1VIUn`TV1-Y!2a>Wm$%}%!%J_q6p +zrx^M`M&TYV9z3Y$QKAJ06Tw!4J7)qpp>|7JrzYU^)VHl?r80RaK#XVBfFyVbevhj4XM +zR5_AHP_QgZ%(L9%z +z)@(myE0G^;T^u?g0=I?uYriNOc`QRd^^&J6X_d>HQ%CXCagN64sNmnlkP?E|$AYg( +z>+wPN!+|)H$(QK0Uko>mlFWxztX>XA7=4Zx$3S|`b_2%JE@;RY)52ESzl!rx-n}Vdl`Q*mUfqV%PJ5l +zoni&Nh7xYP{Ke^RjH5Z`-rG!$FWWmy@(Jh9Psu7h?Js)Iq6dVlV&N@=M<+;9#jRta +zuMq^*FM7V(<}QYhEp0T0vzP7hDvnzn5Ujdq@LUx;of*iXmUFY(Bx +z^^Ka(4ov92Ed==tw9~*y14hD(u+Qf)_Xei(8w074m}T9cLeXB>g@>Eg8_)CE>0rHb +za0zJr*Usee4_l+knQ6nS0Qh|>td_N0e?FtM?k6)#MGmpr`wvv6l#g|4^h}oAJ*NmyOKBReyUPYGjb~dp;j>qb1p7s4!dKGA1@>feJQq7?BMJDZDJLNK +zM@fzjPH7?ppfmR(YgX;I&^!Sac_=ZE>Tv(d@t0n0S_sZ`NgOJ>;7YC)pb_4`LVDYc +zjY^0JmiS3#x|=Bbat$9c6)#H|EgJ+ik8>H4$vCz|q8skUc)#}3kc@@R&})kMdsj91 +z-_-F33eKpAGzwdt=1#t}tF&cDB4Q#Snm3vbgyGYxYebIgM%k4xncRKUUFU$9Sgw-D +z0`}7fm0=*boEsv$Z|z`&U@8A&`X-i;78%{ioxeMvNdPtUdYr)Ew}lX>%E*dx!#ULV +zH4e3&d4)!wU=RCS(yV@6h)J*MuL<09et$xa7tNlkRRwy+NVnozwek6Ooo{_=U~MV% +zt6m>`?vMM6Kic0hFG$3beZ~_1$L=&is!32DHqmL_5Uz|N(}VZgi(I%suhYng`#oI` +zJ*KPzAcYaH1%q70y<5bVQCFOU*+)F!47aA8G!6m`_YrZU8=ecb{;WelkIC+O&n$D +zDu+-O(A>E=r-c_vh0Y?dX?a9rGiygN5kbAguCzvrmd%`IM;9XteUT6qpTleaPed7i +z_1z%Q6qRTLY^I8m=n`-=6ch`q%4cMFU-$vIj%z4Azli?WBi!$Zooc8y?i?JGshgCT +zN<5SMR6mXl)86l$=$b9s*UilQV(7XcJE5xX+ilVKF=617sBMK&H5{Faio6`;b;t+Zp{xaH$T6X7H@A~*$ +zFv~V$QV4^OE`*$PE6}r7N$d&OmrKfJupqphCYQFepM9!@V?f4+M@sWUjX2f%wJ{4rp}Mye)LFk +zyUj??1ph~nF!F^b^#1^7K$yQeQ~4=_VtB!60*rq}JYv!`Jt9rm-{D`eJS?4fZ_4VC +z-LmcAU&>{V{cCAD^_a}@88Fb-3fa1{l%Q9Gdp?6%Y_xf?=QBL}lzrQdwucKSF|jSg +z`B+k|Jo!TX14UI1^+sEs;4^gi#{na@dGdIePX~F`-z85GDa@2+X?iD4qg7Ma^=C#Ni)74*>&Ova=!Oh +zrHQBCt)g1C%P`Li2d?0o@tT1HottHD&9zd%)6DulLSU&gr#7v-))7Keed6A#+__0A +z+uth4$U!&4`ZCivuVSJ|3S7K_$w)bZqvR`%R#)ws;L!EGIPNs5fZnXwe&Eb +zj&X5*DYWcc_OZS*k%ADk` +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 +z@4_h$oLS6^sI;AaT*`Pi{CL-PnOS>_ +z?kCM9Ba4<`?a&N%cd*|yJ#eF(TYa;1VKuQ8iy`Bs_e!C)S7vaky^K>FWjwFNIw@C^M8tu;$igDjpN`1q$7VL*FV%)5;@3neQ*jN*(wQ;&_kjK|v37)3IP- +zWd!Ltd~LFb4dw8pur@YVxbngHhi~~keEb2gQ3GicPfuX~Z2IbZ<>=0jf)6jH(GTa@ +zDx?zyM`*;E!r4uC$gzQ&aBai156k`35&NbIACEY9`|oR>Tr7{ZVa!wo+XjVZe9;n4 +z*$l^;O`cCvbd8_+?XN-Tz%fspcchsl&mr>bp6p}xwb}t1p!H8|s+Mh}g4kf?L{x_z +zntoVz3x*Bd3xh6Ici=ahPvzH<$V?IIpjQ%K5I33I=wLVnz-P2VH+o5-O9`gGJSeDoB*Q+a6 +zH|r@2kEqkB@Mw!_hf_mzClBkoHI}eqDt& +zP20BMZQfw@#OX;63a~$8^m!{F6Qefta^8dS%ox))oSO{ws>Ie(wV3TO_GvOj`HY$z +zj!Nf~rz3dT4xM|+0m=*aJBXbkmn_E^^uCE5!Wvse4OuHr=#-bv#XuMp%lj~cDI))e +z&cyoXwZY&yF>A?tEj<97FZtDjqDdS@Mk=G>D=Vm{ntq}#Q*W+q_*xr1VN56az=w?C +z6C53%H$5D^_$0L*m-04WE6pMdXKChhM=(!l#Cb7c^m0~+qX^#ZtBN5!t-NM@K2eJ` +zj#*3BicJP%(6D}VFdoP}HFFl99=!rUpxmfI8lU$fAONQo@Tvj5YKQtXl(8ZSqvqzS +zRU^Z*KxVf)#=hl2@@C#cCM$wz=ge14up@6zY)?#= +z=0m@y_=Jyx1Rs%UX6rObP +zblTv>NmGi1hfO{)GZ^X}$?Gm^lM;uNrpH+9JP^9V|j!MT3v5v}f8f +zZJHmVu*z1 +zbiRxg=%v>HkKXYW6vwAeC#%ya)7!{GRq*!X(=m_7rDnse0UXwbE%Ua6o7~~M*~!B|+j&SQ7IRiC=GJ(YV>C>|1`+ +zL+^#GUo2ioN1n!~W1buwZ8x>$)T^_M-jTAH`MK1=$YdQ=Pn?QEjW};z-GHMw^lbdg +zsdq|#p^55+3^$M%iH30_d~$ja_hHz7;-)13(Sve=wNYts@2HC$_yD;sD3Bg}%Io-z +zCr4ans+@<TSU=~%(^W(g8bduXX^f6aStUI>Z)GJdSjuAWc`1zL8bcCi +z^01ps-qEsQ)A)Cwd^9YsfYuu8$kJqrn{SIc^5%k_v!#NPL@F;vERbJ_XSujq#VuFf +zLVTCJEOY`doa|G6?~NBjA2PN8R3`5UUD{|Y_99al=xMwBT2FrgpCV3HaLvZe-hJMR +zFdXxSx3r&P8vT-E-UIa%I;8{mGx`cOHXMIyn@Oxk>nIudw1JjRV$yiNlqZKzX`vAA +zy6>Gjp!Z=+(>NCVL*a3!sd!e_@fs{o)yw1bI9@Hk^J10aq;jf1hKlVXteyj)G=nM(e#HHKpr+i2mBY5dvFk;ymO +zI0k7dCxb&Da&ciF`jjihdOwe5>YbsluPa +zaAKkXC*K?3WOF5)R;RPMqfL2b@iYkE@zGFh)?-k!6>KBG*jauf&Opsh!xU$@z=J$a +zk2LaIL=2#r2F?Oc(HD#8YBmnlo0-NX5#<+ApJx1p4?*B!l`QU*XJ+wo9lRbDa+@Ht +ztyq;iF^xA0gO_D?KxUE4=US&w8poXR88{?p$X_eu>5%HPs)r06|WnTaOxLJ2jz~=H(+m! +z1`TP6LaZa>I(s>mR-U9DdHfzmd6q{4@1Do?yS0t$nNr!0r<9+5NaWNJyx*dXRZCoz +z`HaW_=FT45`P05)(3}!%rfe5_{cFGU8w)HYxAg}6>YdU$0d5MAXX=M_1I64mi^5vau8*m +z%(N+l>AaBQwT5%Dv4DLfhI#D*0mf!)2xHY|Vo*LEaET1Ek(R$Ht>K6X1u^y1(AdSombx|GRgPByE?(j^vaJ>>(mnu%gG;q53f)>jZp)q +z_9+V^3eMuovFCQnOOHG#n{K>Cu7Bsx$bsFv<=Kbf)L0#DY44Et|H{YoB|99w#>U3w +zZ@>9nl#g_IRzCiLcgeBAbMmF{J%;aZVg7-Yx(ev@)dryHdHRsN|N6`1?i;tuL#K!3 +z51%}avyHf_qaC+jzFtm_OvwNK_%V6l%rp)cG|DLWXSi5|d#8VYWK`a~YEu5EYr5p- +zH61d7fz-~~QFBd|p>rogOh^+rlH~*4Q97`~qu@rw~(6FtsEP +zN~1~fq$LAFs`NQMrnPVCW&QMLZ)2C9!VV;1ShtR?DgrL(Wl|gkD=dqv@=#(32GbZ< +z*trf&O`mu`y8hq)5wFW0k?C%%Lh*bdMh;%-dG*(?pS0kGo*3l{hxg0)r~a*!KlBOd +zyW?l^SPM>(z`#?v#iAVf#+T&u1K)we;N_|~xXVz1GjM82c@3bcV9##f1NY11WJyNh +zM9rX`RCS@8^x%L)(Tmhf#;WG(5Y}|mq(_=X4 +z4~OP7lz%;~MJcwn$Yfr1~@g}&F@3nR%dTqG34i4UqD~-sFF?%wNJ=tc0@V#*+wXjv~;QU;7T~lTraD24~{U_F)tY0;)Q6_5iCzo{V={CV@6kB`U+igb`BpJ(CZc}n6yBJ +zS=v|JXllX86Vq6pn6O-bZgxbTp4=<%?tTl5V*=OVFua?gvG|bY)J`ii??=HA&hs0C +z!E_M=_gm!`pOvov@UQTQ%Ct;%_esOVs7&{+mZ_WHCgs%|p&2~DS1w8A<-H;EXlf%Vd}>js@J@^+>HxFg^Cik$tyx1^Dd%8>=5oWP0uc3dUJo<4LuPVb)^ +zl%W&HrP$IUN1l5YBTyqw(-)-#Cs2a4y`e!g2J*4)2QexY;E2;8Z3M8Zg^q#I4MXh7 +zv65W9pqu!p%CV}xq`?Ei&#&X3Cs9HJ2;*x0S_klB0xiL?%EzzuV# +zAIq;`+BosxeNz7NpXun%tNPeK{Ec*6aW(3XNhI#AhF{t%!}os^ui3y^Ni?xiD#_|w +z-Xa_CxJx=$;S)nBlYyhx*<(j#_kDP2&gs*-7?C`lsd%fi79XmhaQ-x7(PA31@4VqE +zx$&wk($$8M6@=rZvfQ`luX&=2S}px;&3NPm +zyi+rB|M5}z=X*v%FvQ?ZHsl`42-thj#G$}_9-q`Ppda$(p$Zmx8U1kH1powF2KZmQ|{;5OQpgfE(uHYt| +zEH1FYssONB>0RzrA=g|d3GF~08_)ZeNW@Xon4q7o|n?qw}|}K?@L=>zch|w +zu5_M%LsEd_6{n}9`>yv()7>A@doQjw&K!P8CSKkr4V>PgjB^iu50_KkxZu79iy&)m +zzf*R8=w9jSTZM<5%Yfk_)2R|X3{&#Uw#l15@=@tp)sG{TSieIXeF%BIWTaq{lrh!3 +z`}XVQ19#pk>#^X`-rg>4ZEdo)zgK?cZP&{Um#vpctQPWFF&{X~8!gYsC$C;D|Ll#I +z=|V^u_g@p7CSoN0$j-I$nOnN08-2`yv;dF#>X|t?H8HJINb3_{Po{a_#Xj4QzGELU +z%_*Dqu{J45voe{y!4t{E*`FpN85w@Z130$>)OJxB&WcjIUclxl&Ij)s#-G)or%uvF +zXfeTgY5EO^)-9OD@+7kEhvmr2f>c{s(2{bAlEA}d1fH({0j3ySS)}7xM>4i_5O3vH +z`9Xlr3B6;q7F(6P9FlU$;7y^<6(NGBt$5*&id2+;it97Z(LT&x5>k>SCS2bx!pRGC8=eWF?dtT99*>Y` +z=N|6ywczs>IY<}>6J#;*d1>xJt(IOHD6EoWbEn~E$zulAR@U2kPvZn(cnSuMb_CN5 +zmJe-CItg&kgRCkESH8z4o|U81C-4F7HKDT-15r^(Q;Y)v5*U;7h*^|<9<+WH8#G=i_m^xNccv=VUdrianIFj`Y49K~&XCViR8S~np +zEZS~9Ik0IhrhvF#o57UOrktekdZ7q!=uA&xi{OpxIxtOamZ8$jyoC$4j*kGnrN3Fe +zc!FO%g%C9MAQnX4%1lzPP*%urwBYlEN2gDs@1Db>A{@Oq{E-U5_cLJ2u?>pQwwWx- +zRv_STCcd4FE8w(U+AxFJx5Xaj(;lA(zetN56djDb1J{CWvQZ8duu+JA+7eS1iIOxg +z5(Z8cKs@3$g-!=tV;iQITxo=3 +zHtHiXC=d5r)rUU|(zZH$&za?FnMpgW9vZ`8nz0ht-rXZ-v7E0C#`-xPWlnzBCOW3p +zKhdAb^JOSG@CivsV8yf*-xOne)nAhOn0(G6*p~xsFslN-eWnJ@<7~jFpln~T+;H}= +z8GZJU_FY#44q@x%DM-CowqfnDx?00n2fo~NTVa#Vyv8Mb*)pZOz=Tc_sdWEGnLcl6 +zgIi2^CJnFQ&El1XEm%bi@0AM_N~X$ZUX>O=Ar0jlJOOK->3OsUOM2e;7>7};Rqn?$ +z@o4#!F5i1aQknKg*_i-&z$S(eFrJoa289K*{_+YO0`M?)&A|XEjei`y!gd8tOARhlPRSTDUCyPQkC3NKy6z3_Ee|8FkG%Pn05*bxkXs6cD$@j8DJA>?$ +z57pyol0X;AP&&v^n3A)N*`Vd1PJu79fobZFOXEk&C(&n*>4T2!!yq~7dt@lj%d|A( +z3~fSZ&Gmf7!d@`>CjqB#y3d@#7h#Q8KE%jM3E +za|5yl!!6E3W90}}GdeJE+HfS2He~XYrGY{~Kw8!{jT1C^87vOD@XJw=+XH;m{2xXi +zkWch~M5l>*rY&i>r}t@ef6`m5KsKl`fZyU!agbwb$mt;ir-)_TdzG)dO-CV)QnRc) +zMlY66XW<|Jg()Kp3?o|e45n$DFArxI_1zpv*(k3vf#vx{0_!x3soUfjrjhE{RR-d; +z3RO^=Vta{aNZXZSlLXOT(a5vzwfHC#(qbtrAO-uf)WI+%WM8q*_(@=UoSL3GkDfii#yOY;eyEE*h7nn!|HKz^8yH_UJEx=pq=Z`3zW +z*||812?i1iv?@@&!BnhHl&{q4WXPaw9*t_iDq^J%JO4)y!jHl+5Q*wau85jfO4kx$xey?7By(j?VP4VTVVyW2TsgNzZFb@!PY+pE +z`nU?cZlOP|*djFQxu`wQbnTRFVK1zzE{e$Hw9y2{3R*0`01sty#F)hE&%QkTpTnLC +z>7y{uaBx$>GkgWypXfab?^7Tr{GluKz9qmKkY=45u{1q%&8;}CF)g#$d~H5)PzvAt +zE8Tc)9K&WVmg%`XFZy>LYuqEaXB!O*B7Ab1hknN}Ma2FXPkgjt->e0Hb2tIgh!Y>< +z`}fGX7oV5r?rxkn3(g`*E5YCv +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 +zMA+NA+xFN^}})LGPY4!`=q{1 +z{UAQ+3BJnq;)ptd`&r)Q*?Q +z_2FZ#+aeOUt!iM+7^JN7}t_eg9B$&u#*H=+PJjn`@D_)c=%k#pXpEnKY +zaF35Y6P}&;LHG#1MfS-}ciH1F{PYeV9!{J+a@_Tr0H1y-ubbK)f&!Ej982P$u`b__t_04MJ;=~WX +zJc**?b>p3nU8pC6=Gg3s@Dy%CJUaTF@Y3X~c1_ujMGZbT7auQKx_i|7qq&-{M2D7B +zJ-hBgK)rAB>hLoociPBhL9%qUo2zJv)N=ZKe15;gNV6n1+FB;w9K3tE)hjGCMPQr70S!v6pNdK@d^$sWAmLA +z-<$klcy8jwa8cLhaDDGJ;kNZRhU@#T3ER5x24LJr!pk-+*yb2;`9U${STFuAGqLcj +z9b`|C_82T(_~Sc0Sl4%EPlfMKz8sz$e=dA);^lAx&&Kha%e@FJe$$Op#{4>q)j8`v +z%*t41Sv*-x;eOX;v)ioC#P=Jz`YzLr&5AFl&$n>|lY%01rH~c0vj-q;HjC%7(BU#Y +z?~e_4jE668`g#~`pRhNkZ*%nL+7Qsj@emz~dpw}-nB4#r9SxH%Ou^3yz +z5I|gc!jPKndsa@?SJe-f +z1Ix;yzUXb=_{KM4&PZ$j!vj@;&05!@2UivUeDg!r;cQNg=2d0sMmavEv7G4USfZB` +zJ*B02YNmEoCV44N8dJR;P9I~59Id9Zo7UZ!o^9zI3_H6o#lpyCVQ0^!VMo`+VN2IW +zdz~2<8`$a5OA3S0{NmrNl3c~)eL3C)KRG*uFGju--kd%XUdKJFH}TNpskvc{n)s*$ +zr-&%Oi?0TUt}R>uNspBU#hS+=>yN9PRwW}_p6_YGqt)V&B~Q9=LM|ThB*bI+#nT_N +z5p1bNjg|C6)n_&EtOwXiD@O-%(c=ewuZ4RyK7zMV@l}!0(Xwg%4<7e);mtzXB9u;w +zTOLfFn95{CYXqsOk%pa`0XKt}lJYpI*Mmio{0Ja}-^^Wfk?8Ph4I4X7W +zHUZKcf{7nGV-Pu;Knd1}pz5*g56SPO>qE +zS8-hI@IJ{0qM^DM=cq5YG)?4>#PZ+zUQj`?amTaSs2M#xSgJZ4FaJj3FTI)tFtK@O{; +z000uPNklmt5e-b#!k$uy>u6L_8X5sW^3doHJJs>0$U +z;qh=X8X>2K{2UNFS{L4+%a^<|#bb%T+^(DxiLA+S!4AyoxLCs3@}b##?w&cbKjzuz +z%*>vhTdd&OvVBP#)f%626b-CDIN@lDPPx(t8jM*yhEaaKo69^%QP$OZul?XD(KF$^ +zkQ<8vBEhXtl#6C#T1PjlG#}e_apW%cDX;JTXpA;)Nw(!|A2`LlGc1r{(I%8OU_eKx +zre|HB>bJS4%}$g8aa1o!Bf~=cZL&LDn$P=G{XmRtFG2Bbu9dJGLU1o` +zE1n15z9t6aqzY^Rb@#r$-W|KMo|?I#J}=eP;^3b1cku<+R*Ds$JN-$e+Sz<1e?zGp +zPLonji_#?n`y$m7pwNcWQA=|}tEc^9--@AVdnzLvV`7bREYO-pLo{?lrrD~aJZ(H3 +z;3;4A-v7HnDjDMV-N`(R!Xo#B5fXXwpn#MxV8Q{>BE|ARn+Mp +zr2?j)&}9y=Q{FxSfOX-N&P?@?tY-E0d_r{M%3r5W_nVyC{qc!6=;y6kDrqa~h1*Th +zh_-pzd#XWDt6lgQSIA*?GkL;`2HMT>EOIEzWWF{sNg)`^=`oC&YZmieI_uX{gB%+I +z9x>APL5%6kx~hpY+oW$j%-shglWXzI()Jj;*8Y2eWhH*A(mjiD-3#i`*qV{;qt154 +zW9^k0@k^89+Wunm%>1`d;U8k`8p`JkTG}iFLB>BcQmX`bd$0h+%NsoxCEvSK6D7r{ +zI24s5QAKCO8T!bU@T+J-zR!79TrV<0OACEY=Jpoc8km2lEQe*ppHi$^_cGlOafix@ +zbQ9c!>TE94X#{&VcbQRW*lxr01^3F|AD +z76xH14m`xMJB@JF$%Zsu>99?V&Nfm|G8= +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 + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/29.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/29.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4ec6a9e7676d23cd606ddbd66b26eb8cae84307e +GIT binary patch +literal 2108 +zcmV-C2*dY@P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR919iRgM1ONa40RR919RL6T0N#5RQ2+o3rb$FWR7eelR$FgeR~7!wZRVW0 +zdd4=kW4pHFv~ldV3DhA5(nhKTO-1|GR4Q+Xci#C4{0Iby2PCKfDFLj62BmRB1f^-x +zHcqQHac~?vb}}=b+qs{^x3**BI7!)O&dfP`_WIUke`~F+B}tNUK!&Di*!#SDE&$kDgxPu4XI{Y|L|MfZ*jQ5P-KxGU)xiaE7f*%Gj^rsv6M5U<;BaqMJ +zu+mz?{8#VeUw5x!qg#U*LRT0}M*878QP7{O;^@A^I63(WhKqyf1YNF^&*NTe&1Q3J +zLm$RN!YSdgjV$JGUBJ6H{)&d*gk##UbW4SAZ|EfaVG_cPJoIEscx&o)oSZlTFZLBj +z_J&)l*Xuh<|LC_eGz#pr{2YwFpUr*5*PnR8VXo2VQHqC3zG<)u!|pz +zy^J5vyhURoS^kK>kAzpkn5%gAUJWWJVc +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 +z&7kGr~C +zS!CJh$)vEh7~#dSty~1@rCc#6UDCNOT468bi=`26LU +zuw(K)6u6ygt5hlp_{l{X{ILEFq@&p~&tT_KR(rA8kLj2yxm)}!HhXuX?y#(vCazLB +zGM~ud?a4iO{`@atGct>j3#-A(gJ%oy5YIOeHE0@c^1kO8Xel=O#OWLC2XJC +zj}~rmfvGjc9?LoE+U##Ix`iQBknk&9Ce4V!xQV%YYpe00dj{v+0i?rbwV_qExOu!) +zIe<$;Blv#DH?c9hj`(dfct+7qBerD@lfTG%k_CvO@lfRhyfpe}e9V%o;N}RvxhttS +ztvalHyd~7R##l`POkSP^WbNL)+n6{8C>6|Jn6Rhua_j4;+I6_m{E<+Ho%po2DZ3sI +z6z)TRdO6yhA`e^5Q=I^h`;$0PJB_!d-ormDM+|VC{^G-zOzYD!BH+6dkD)beF_n_~ +zuWr_^UAwLUs6nk-zHmM{gg>?KG=kiaMXZVlHZi2TO2{gOepXDhu&8LIkI|HD<*zlQ6=gu1d>Lr29L}{E$4dSmI +zZ)3)(af +zl4Wh*zWt^EHE5Wm3C7(?Z0md%XS0JylF39!larFB$4RZ)tZ~$DB*vr75s~jR=QV5( +zeU)xJGO`(MUJ*6A&?kX2Qnzi}_K5)Xf&0fsC +z2yXUrK9Tu0^DORZxM9qoa;#!UK +zPu6R%y>?3mrA&&AQvS-ZWoB(nW2s3DrzbGZYuT+fw@Av?c;3sPtzJY|trhLO#&eWY +zn@efRj2ATz>Ds$b#h}2&O-BQnMyv0r5Wq~U8B!oLStHjRQ>3dYAuD3zIU0)>tMRL4 +z>-qX-PIcFJewt?q)`30-)tuAhBU + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/48.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/48.png +new file mode 100644 +index 0000000000000000000000000000000000000000..e161454ecb5b32acff3fd64ceb6afac181da23b4 +GIT binary patch +literal 4336 +zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NST1iAfRA>d&S!rw>=Xri+W_M># +zE=7?PNlB#cE3#E9u`Ekz)TEM8Cr;xehEX&{YXoiMp9R{YDA4~!TNLQ8pl9G8jZzqm +zVLO&>xH=LzQqm}vEnA^3>OM&E-X-^(-I+emH#-z*(y=5bKl)K~?9BJQ@AKa8H?n-+ +z5AgqZ#3;b81%9ZNNH-R&Ukeu?76cKK2j?IfzM&Jqwrtq84TskVws{X9QkEY`VHW4{ +zEssw+K9L1NFhJaiBOY@M7QfjVe%@zf9?&O8uQz3k-{CKKxr%%j$*BTb)HpfZG8pqE(u5sxGcL)loZ>{Z~#5_o#!0eppr +z_<0oYUaVnFPf!0+0YuDo5-8KW|9twp_}TDjXoBF2wHf^5sei}N^mXLjEab}{UKGJ@(i+V` +zXU&LaN!J!rs{=-dLH}W4Yz_ +z+nsX@gOf{*JJo0K?AkBlYXeU}R#_^jt>NL}1pkGPw$ +z9(`Ds>4#t&LIf;d*O1o5)KZW#t4N?gfzNA_ns4y^vGP0kdG!}?EjQGRS$X%QqWRa` +zzlHuxA8LMmktJ*e#QeiFcSQ2a&BJt$8Z7oTffU&~ESs7~4WG|Giv8K$cx~h;%0bn% +z6AtHQnV}l|3#@?mS!&Xz>($`WqA|7s|q*})lZF>xD@tAK3VUR`Np7?oa1-f8_RafIe(SulE<4$!PgR?`XG8#=t +z`vmCQOs~8iAb6!VJ#!qM_+GtHHlC)wn$*0Do=g|kx2;8rt`cLL(Uo0EO}3%YEF(oL +zq}w*b$!vtxD6*9x4T4m$6m7Yvcp0mcwlJtl3zM)p#2De#bijj-|fOPdH(mh`?fbGDc-aSKmQ*r=; +z3ztkLlNCnG!zflpv99woxJp6Vm+eAV_a4qBuv8!E)_9{vklLhD#AC32X)f+U{)EDq +z8LC{zW4Rs10#RJf380Cpy0@8^<=e_4(Iln2d@ReHzY+~gjH1pHSV4CQ1yb5n6V}A` +zj?IK)vEi#=d8Ws>5G@bKT}Hte?DfMSXS-HVgsw?89WD(_kSyz~DGZ_e@ +z6f2L>Fk4DVr^%&e1=BQ@QlA8n0iq`TrB$kUHK7Ai4|hWuXnUea2;#t4FWg8t1j +zQ)fUI)9y=6!eQS7 +z3Irn|6MdNiRGHHiNXq-P8<|+F!ah3U?IzIFPDrTv!=g5t%r6Qa;l>Y!T`m-&!LuI51ZNy_jVyQArUz7YI;{qq7VknF_oX#gwX{B +z;GfzH<3gGeP#fww8q^FibLg4QJZOy!)1BFA5xzF;b3+W6^Aq(6IMlY6S&7W_AR6gz +zWJgaTP{z{1cg2mrN6;1Iuf2is<=dD7=|T%=`G$vh84nPD9P51X{)PhOZ+%HHZW? +z&*X<>;Q}(_r_oGxhIGt&(FhOGj#9JXDJJvq7;MBCrqS>^7sNg_Z!^+FL_Teb2`AIB +ziPS=co~^dRCKa3MHsE1t`^Vt2sL8->$MmPZNw>+sW%nAe_X#p9Fum=M5TCh0C2(Ue +z@aYvO4;-NBm3^2jj2;QJHN-=_jD}1cat0M9<;wEH=xaYh3&=adAm)uSO(KXHA5{Nt +zoJ7*|owPjRPeVdFi4^R@9XKOHXl&j~*I<)I?biDCn3%K}u=Uf2a+l59q7w#7;cF}h=t-;$~XpLbbX2w2~bW`dI8C7$yuvM>o-f*2)$FfXjc +zWR|3fy6p~J3T_zi(!PcY%!FUSCGR?RJFLViJg)Y|bSIfN;lh6XAiUulD6#oUANVS3 +zKoeIEA41U8hpAc^*`!P7vz)+CH&h8xka!Ur5pTv9BbB0&O +zbOJHGW8qk#5F!TpK$Zi-!OO_9Z4S8Ec2pA>OtzUH+ZO?xA)iM&fHn{0D-Ht&|47qd) +z-5q(P-2}I*HrD6adSnvlN-A-raDgp^EFfOuDc-^$EW*?u^csx98fGH8qHdy5W6f(K7!Oomb+ox^qF#EEFGd8jIP#lD3X5Og0jvv{iQxA3jDuW;i% +zMX6}UB>gwb>Um>`y>$jodj|~?M`d~n`q=Bz5&^H;9>!wY{IKuxXg#`x!y^%-@gI}_ +zh1UzmkaL(sl*U_X)3t6j@Lc`NSnIE(C=0ihi$1R_2M;uQu`$+iS>Qr?AdRc5+*jL)OPQN<;Pp;J +zJxGQz@ZE`*P;30JO> +zb-BrzwaeIF-i1D5DO>Dd8P$0%{!nQz +zv*(f4AI&_3FK|n^Ewuq1u{>)>_#YY3{06l>Ns9^a(V3s%Wa$G_jnmu&$>Q^efR>#q +zHrEF5Y+=7?;^x1fe{UTmvowBsElVKZcrJ$7`L(aXxbmsisRv +z^2deN2#FFd^JJ*6NNb@eVFp^vE}~U&YS>g7z?aAO!u1pIY-TUh*GF&{UzZHx`O^fY +zX0hrv9ej0UAAYjz41UVPv-!2H8Gd~>@Pt*^D6si$?pu_i`?)#c+^`@qX%M)Sv~O}J +z9-rE7I#2Pmo7zPzrKA>JUKZ7XyRX8#2#h{1Y3v<;7;8(tIMML|E@y6=lCL)0_CrI5 +z`sJ!f`C7#L@MmZlWmhGHitU*=+c3KddnO;k%1Rex1t~(B|2Xi5^r1tCLZ13{4?{!~ +zLEJF7p1y-K`AfK#xr0)SK}?j|@F@60(??QBAl4V)X3P&;iUtF;Y*qP|ZlxN@Vca#mz321C#=tM7)N($3H`2#m4Y^LNq0f$N+FI}B +zS_0>BPTdF{&I{e_L15oS^@%KSm(1Ne!BIoD02T!?;oA~Ov-N(#oVz6M>+V-Bz(;Za +eRe)WJ_WuF8fh9>-l_ZM*0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91H=qLm1ONa40RR91Hvj+t07-?+R{#JL+(|@1RA>d=T3K*i<$eF1bMC5p +zudZ~p+m>wEc)=hUJ7FtOmI8$ok|rrrvP_vNnQ5Blsh#$Lrwk8$=yW>mbke=)Oq=^w_G*_!j`xe515NyXry;{e7VF44_X-sBkFvs^?Id2$oYzIxjC|V;) +zbjI4y6>CRJq#2fNLsnF*lnBdZ^de%ptf4E`oFwc?*JTQZSQ+1$g-`I__+bo99>?gy +z7#50Yl&WQ;6^%y~80g%N-QCxqkMAkzO=ZKuGL_A +zeb(aQ;$>@2jD?(#LGaY@3wY+leq(kq`jCvyGgA-vr+K<&SSLeyW3~@o^=tU@wqK_J +zU~u`(^iuGxg@pwQV_8eyyMLi1tEd(w6SMhw{O$Wc#0OKykf0e!izc1;9m*4z*XIG# +zx0=Q;F(xKt4e3%AyE=B@_pkdVQqdOV$+XPgqf@l4_AWHm+}xZ;ioREEGM88&iqXtD +z{KdQfjPdN0VXRuOu4#I%p}FAP1fh4AEAgdqw@0I^H_dS9w_>n6)`36V^C)@~J;+wb +zAep~Zvu0*y8nFFR&_dS_s4)hPvzc-H*}=az5im+d#n@`iBf7%z3NJNgJVT^Hi#$D5PsjAjvJGF~WU +z@TUj=22=T2!>EY!m}mepFBXb*}1#;d?N3$--HE3^2d +zGKtyhf>{&hoV8e#nJU|5E +zPdGex0&zx2`JQP;V(zODm+NJQ^&0wv>#!@l4ZXoGM6HOKAcj2C)G`T1jH>191&mfE +z@Ihf1Bb70u<$x79KR7MnlCNdTSzOb)6@N7Ntp+Wg#d%Kym_OFU#KfwaQ{;;WV|en^ +zbNKJm`zWczs-`F+^YtP+0r1$!Ng*@ZB|RjhA?-cObF_eW7kVn>m1! +zTz*%wiwxrtyouK$(^+rT+bV$R?hcJ?p12CgnPPgqYpZGXM8`JIljB+ +zK7{z4$(=^Hwg9_0j;7Qds78C?(4+;ouvo&$(pf}pnke1GYcgR~Lqm%n89E1&+mWvp +zF3{cunv=$KzdH36Y8FkxFEzyg62{PhmOui(*?cEI*~vMcStur{uADC~;zy^S!a&Oo +z+|_+6&1fG!q;>~8Z$^LXAcn@C!fg5&#>SrD;yOZ+9#~`lfh82U$Z=Wr~0(wLQkf&lrOklmBG8L40r>1xjG+dQVi +zG{qpdK8NOxVtrFLzSws!ms*%9jGI_;Q_t +z==W=Hh2|K!xc`#YM6fXf674map1y934H~A(+CdYj{B&Kk3vW%mhcme`hUW}^rSp0` +z(0ez2aNzvcmooF7|ns3NM8Qt0X37EV)C4$sHW8=X@k!urUps3Omhm-X9FZi +z0XE2j0rk8aZGAvx?g=|)@Q&xEO*zOeLy+jBQy6-u%Ckr~F~Y48i>r}_&ne<4I8M`% +zC9T!+izf7idyFY4n#m;mxALL61)KXmNBca!%e*Zzr2`|@dYnW5V4mtpU4t!GeFGJl +z7w6bCK|ehA-NhrkhCsoiFpSFxF5!t@(QVb-?U(0w4b7RT$SAf@O`8zwGVil*(yJ3K +znTG(&nO8kPpjN7(W~4s;2^^ZrM)5P0IOumirf$ySq +zhPzQ{-U6Gsik$oO#!p_tC%nQhKO<|tIb?`FEV}7*Za!QZZup!whBAR1P03iBq_Z@M +zu+5kX+Bp44Vszu(i-oJc +z3Wudr>&UZ42p0WkWizfp?Fg@!6OE#$!JarVdaU0nGJ(36abw;^Y5|S~y9w4FlZ16gvhD +zo&bpxbE}!V@QE>vNpmvGh60x86y2giG;c&b +z+D2{W3@jI^_bWltSBbYu^Ydu&Mx{gJCLC~?TGm{{=VX*pso5}k+FDjVm(p<=1ajPe +zDRJwRSQ@D_8rnS0GmS(z4CRYkA3`a0H3?zTpZ^$EwS)>yQ${s@)8nQ;$76%w;wj{r +zDvIsb!eRZX+~&#CBVJ~yJ*Cbu6*#m#QlHn1k&<4~?H17FV`;ddIYpQnD}%VzM50%s +z5Iqd%JYSry&Er}!Rdk4SejLGLKSS|`-!eoA26z-8vkO)h>2pLBXU$0B>Z*R^7ftP? +zi|3WGPL$eqGQw4iK;(?BH@RdBltVIfN~1(RU7Is`He?0av&@`kOYow*QK4Mub3{l2 +zT9Kf17^*!J5TA{^j*&7W92vD(Lpr%xG=2DjAzsWkLU)sL8+|ewMzR#-06mb8Hba +z+-|*_vGCoUDLl{3G_Gsg3dW2KX5;-*q#ZeU@Mq13Ec9KpT+iNKMAaK82juseFN +z`1Fr3_48LyI5&!24?lvI?jDRBJxa^03E1O2Bw;#C^N6>Tg9Y}53gl*T~ +zh}Nzy9`4l8o=RfRj?LJ%uARH_5C+F@x5X2F4N)CBv+6o +z`$@0p7X4lt5I+sG)CZT)X-n9KKD@&Hl~nF;6akO+!Wb$X$D6qia669(%Clz>I>5@m +z!rA<@RCU8_@|xJ;!nSSw2_bzK(wgVR)+$ +z|9qj$9W{^AnQCXs6*LFp#PdE55nr5VrT&UvbSbw*5y7@vpP^gUATHFzkMroGkABbl +zP}I>uYO)^3S$hKGHVah-@P-2$XQnFo@1xRb+!Wh|NIHw^Ic|}r#!)|W67>fkVXz6J +zwEt<8^DK_H>_F?l=gs@+gKs0;+K%>(o6t$~BoElQp@-)v0hA~lg2k@&ZR}^!U9z#G +zwS<41`!}9*mfg*&NS8U04$)e)sfhYU+*}q&QwkG +zQ;MjRxzVM~m8l^kWk$v@|8SX6Kj9=f_So6)<6!O>;x!jP`!F!$;Ej@Lb8jX{0FYck9_HN>7QV-GDB13uA0&B{N|n( +zWb7R7%zqwt=WamOE|?vP+-YUAUVZh|3wwRDD04i~ycefJV~Eyxen_TQHu+$YPOl`o +zyXhJ{&~hhsMXzSG)6oJY%|cm`PKd;$*-_B1)RE>s?EU;v{B-^myq7!7>L|!MF?gPj +z35J?Y73b|D`b+EZ^~L+>g%{G|&UAmRmtTH)P3DwW0(G7+*?IhH>NzYpX&#`4j8<1_ +z!rk4u$Lo?}Ux}_K%(=(${7DSuhjFIFJs+mf`9=J4kOR~9#H;w6^>cv{pNYN>=HVoi~`JK3Bjt8}*vTU;m +zxD1VXh#Q+#uj67*r8{%%M+CP|UxzK3b$Gq)5KhI;87YTqL4#cQFJ@{haTpUOY?;59 +z()Z@}6}tPm~A=lNq&Bu`wJq%v5w# +zyHahLMN2=8EswwRO5Y2Xj>>`7LINGR7VNRNBOBmBQIKbop{#kA2BalvQ|241M3F4T +z&|Hr3JwpFt4x}IoOwwv%O6^L_&@Ax%d}_`4U>IlDxBgHfiOUefB|9m(-jp +zY=6SlLjU(_@0z1^YG&LALw#n93EouiORRfvH14&_#qG`ap5D64(wrg2Tgj*Yd#!hG +sx;O4USN5;;j{n`8?>#m4e>F}*>){xa#{d8T07*qoM6N<$g7j)FqyPW_ + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/57.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/57.png +new file mode 100644 +index 0000000000000000000000000000000000000000..679dd496fe1ebcb54089a002995fd25c1bda6789 +GIT binary patch +literal 5483 +zcmV-x6_o0UP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91IiLdo1ONa40RR91IRF3v0Jo8fpa1|A)k#D_RA>d=T4`)t*LD8hn>YIm +zXGn^oM6Hx8iL!Rrv0-?L)7EjV1c{T>aGW}7jsA$yrYO(_ZBU>n3=}9@2Syz?Xn!G$0?k9-`GlDy-R=r+t;Mcr4jmED%MmV(Ouhfo4g;b>eTAO8Ad}ZMg +zv7e?{`FwuvV!1+!a +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 +zN>LM8D~$og0f-!(pM7S=jAO8zVXHUZI +z?L*@ByAX=TasKs}F!m$3TATjADf +zcze%YTGz$?L&tGpWDGmjE=MZj;PGEx!11vn?pd3~Kfa&GGZ!l8h{|#{`EqSbrWU!B +zR^`e|tu7}KT!Hy?U +zmkS<0i1N~vs1qDFi>QqbVSFfu)xUEmmh89=OE+x9sk7&e3n!Ct+;;soY*^KU+}I>C +z5gXsx+Jnu@+wk&e1Fwx#v1@e}2WZ8ErDKM_;mi)r8pe2R7%D)UfdmUC{zxAHN5Un+1Q)w~5V~^JgZ{zx@w{c6yRmksq +zj8XOoKuc76HlVia&w&4a2&EtW69r=e?_P%GJMY3TAN?U-edIw{9bIVa=rlPn5sx7p +zc1$n{g>2Tc4k8W@z__;4P92LP8N8E!2e0!=k#DONwI0iqd0S%xGK~}p+E^RS2#wdQ +zef##!AmBRz;#nF_+k^Oz@K4Q2frje6l&ZlZqND#L&tM+t{$nhmTC~N{_E|a1&hST6 +zx~V&O7ItSh-I#?rCu(kf=mHY$>=!i#HJ6rj1d8+2FRKcqwt1m?1cTKa9=Px@gHM5x +zm?!t%Opf%Mf{u&(s$a#*`Vs?Jat7N>#Y2WBl9H27=vLIav7xaFC7Trp1u!ycHZSEU +z9Ze|GJ~;9yrs6i*GA!ZJZE(_b)e2ADXo<+`b#MrfYl48h^pIK7!#-M${SMtV7K?hd +zFms}3A9HdqO_9Ivt}68;-+Ia^c_p_L7p!*lJPV}!*dL%8 +z@TT$(bJS6{DWtM-;8GDE=jq(Z${GCKxrcb(I>->7Bo=O^=ypmcR*h$-nnpl=d1lg! +z`kI$CKK;zWHQK5@oWYhTQ0DT<(eOBNRK-0kh +zAg%P&x^R7EGYU3;&gP%5LI18gRvJH5J&*4Vd>^kA4lp`q_;W(sSc6DeiqW|VNFe9C +zrvGOMh1NW6cwfoy$M?=XNV)^&oJkvIS=Z;QyX28vlCP)QW#rZF!v_|;TQ9xzl9s}p +z=B+{b24hI(S)6q)BG!n^S@@bLhE~X_RfAukv(G?^~OqoP?jO7tHS>pG$7RO{r_KF}~Jpw8Q$PN&|e9 +zyjQ7!;o2CEmOjKQlLv4hf5`m)kzznoTZoSmf3zOP?~i^N9WKvjnL<47X4;$&YtNoN +zb0rQ8lLcb+C_ajw!{Z%4H^f5p9ltIN3^kAX!N%k|9!9C@B%vqLjV0kO{!ZD(HRSLx +zm|HH^p^BUX6_#}bs-|+ypKo5Yd?>0L*CqVBM{dK~@-h?|cx2g2HEZ|o-IoNZ$qF)w +zdJM;6r|^@`|1C5VwmHb$rau(4$iEb-7)5_IcMH~(mLYHRjEP4u^SSi&+~$Mz +z!V52m(-k!ViW68aJcehx_ThBw0>AT=jY72U@2-g8Wd`|lOCjd%VmEf?ZbVllgCYT| +z?@F8X{PWLWF-Q@WOGUWoUE9UJ_9HluJ&KCW-9O*?LR~5Ig~s`G6zC##2iJ~m#0{gH +zP0*`Y+UH*0MT4|wZJL7}mwGNUe9KinpWBXglgsgoj`#3E>Kw|U8o~q{VxL(~{J0`_ +zk|R^q(zeS4U$!d*~P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91I-mmp1ONa40RR91IsgCw0Hdp`^Z)=ApGibPRA>d|T3L`>)p`DI?|aW^ +zW+aW6P0I+hppA&dl8qEVKzOht;s8k~gQ<{8%9TpRRe5$*$}dT|;s>WHCW#*s5-i(5 +zsjx($NJue8>YC*vQwDK +zr;sjWP%M`?Ocj2wAJISr$zU9bU<@ID$S9&(t{`7780&jn0?$RWnJ0HYy>srZY&L5n +z%lYDSoF$-_Rtx%qsL(nWr?24n=qa2WJBv%a9;cwWQXa)h$tcoc!0+)P#Bb(>ljuow +zL?y<2Uj0nFGd>VkYDZkSVV*f&>x{=OSXqBjcH-zs8mIb(UoxT)G8Y`tL-5 +zP|p;zpIcZfl}gRULrb(cejB5I9V0yd>-bKb7&}8o0>(Gxe-#S$MVjrKmhsgB{q+_? +z`cGGV6RW$HV}^dNCUkt3W=%~^eQK^`7cVU(IKFs#4_-L+3WX{o;tLz$6l?7!Cfvh1 +zOzD~XTD{$U8{f&!LP(~RGw1Eg@5dhwZZj}1ldgxqxv`?LXPY%SIqBwT_D$23pyc=X +znF>ny>5=E~`p~NwN9>+`YRGoGfl1TT#mn4|6PRWE(&5AL7H~l%Jo_O(i$5Zn|pM2v*GG7 +zR{PPRf5-9h(@4;gij;FTSy>h+plFB(tpK8)Fv3<40n5kFEEK9mWUG0kD_P{L1>KGR#{d8>bo2n4|{^>^DV@He-Re=<{@T9jF3)>kRpl{HdW1FxHOLQ#ml%* +zx{7Qik04z{R+76k3n0b&sH~|%3U@77kMFI1+ypJd4tbbM25V$wq%LT)g+wUskK%>% +zd$8l|E+eFZK&vLka{kSeA>(O<3M;o+8oO31J`gpns(Bl&-^{qsJI?Py*&>8gy2{~Qhxiv%GRWbs*jlVaKV}## +zs@^I}{Ko5{z35X^H3JC;;MuAjy4RRG+x_TkR+*^Cq1)eq$J!piZQ&K52ix$i(G^XH +z2Yp{59q}k$#d9lJ^vollYCbfZkdM7K!g6lrJi@*Z0mM;A#C=FeF|sML4%?IW;H}BS +zI6QpB*4}6<_DmZ%iMWoWFaplT$@Q1qL3wFRW^sn$TFnMV80)G$0H=#eU$j}sRhY#^2 +ztEvtbuZJd&8{Q>DvsJJ2QFSP?P!|m4KZ1~ftK_Ibx58(dOg~5=RY>T$ig*d9Z}cwA +zg8y1!f{}3=Pb~R11`@q^Y+ySIw9@9AwsBgv1a}Sm84AToWbz~E?79z~-QPl}_X$}3 +z1@NSf!b3RI)P}}`iOsgP9Dc-$c;X=*Mfc5#!-jXs(Cn)X78NY~Ob?f`!#JD0ShuDl +zpe>N?m$!u(dT7ytRbnvlQTs{}U@Bp>MF}~=I!a*`eUD9@G>nYq$LK>v936ijLB1Oz +zWED}v!FFWQAE8{D1PWJy;s`8RRtlvLi-u_37FlVE47rw@Cn;W570*NDT{1`(w^fag +z$`Wd-S-oB_PNmNwQ_UjkjWqa#(uA^M#0ue#=o%9x6)`oS2rJmUKJqqBrOwbdvlxi= +z;#++W;1?gigqMf*lX2j_-fehmXfIBW9E693!seyl!PLYDm`R_+H +zYiX)HEyg@cWhf%w5m|#nxf6y5@#0Q9iW%ur1}DjTPjDftCHg$&(ofB-85u@-qYs7e +zGuaFEkZyX_{zxG?4sa_Ag6=>kwOcT=8NJR|3V5jZ9&GLY8t-ftRL3ri&d1V3KZY__ +z&>Ou8^Fr-d-ZqHQ^hI<<7NITLhtbgkn7{CTENEYk5}_Q3Eur%jsXSrRZY3&MG?#{Y +zaV&S5zX*D1jOxUn8gI1Z}a!7^}6sm)h^gNS#1`+mK7P{5=YncHGWd@IO7LoV>eRhgO +zm=g^=X9b1OMi*H@+DG!IZ2y$6)SCEL&c0F@H8RL3g0F+tdV0|}erj-{l)_Xc#gFVj +zu3Q(aoREskP302Npy+j1njXbrl@~`9% +zqJP=rCeX-7RniNt%}v2hsYJBJgGx~of$I!XP=;giK3$qYyD!1YjDpIo*y_Q^AmZ7O$o4__cS9->855 +z+6PP_IkcbOiN#k5-RYC8s94OipL;y#TH}glyDtgxplZ!%xyGM(70;SbNCqieOQ}vk +zs;3t{)XNMZRHEa{g0_%4+lK-|%ojB^up*1YMDy9J{Z +z>+CO4TeOqjUqO780q97Vk2)ErO-i5&}tr2_j(~~iU;vx_!7EnyozV>E*S(2 +zcZ!*{s08IUOo1Ay*0g1c1b%E=manP3kSD;9FU`*-C_i9X7RU|5S4`pRy1zx@%4=qx +znQ31EUw#s8mtH|J+D+hAP>A;-*SiH{E1p7R@+9HMi8LdBD?vq5=_W`X#ES&Ho=1+! +z>7U#~Q^D&kN+IhnT*5ilte>S=2}yqzRP1Y)(EJvGDB@S&KzQN=Vx#Z!ID}yO5jan4P=IM|1klNkHv#t8^Ppnrm4TZ +z%fOXn8@A+0BdOI32ANp6C+JLWRJeAAu)Asn(1TPZO)^EOU^hJsJT#4SMM_4$)XK+M +zld?SI`%K@xu$Wq;6ieFncVc|qU-P<%@!P)7cLkIKN%PJl*ww}oeYdzue}biWkfIxT +zw7Hd`g8bF%-P!=gM`cL~swoabjakYln`lN#QV9=JPcp<$R+)Zy1jI~;)2|EfBeClr +z2-ol|Q+f<$Td4zqW +zLFL$RwM>~O+Tua=w8`_1@p&#YJ7^guN^{xMwb{9LJs6o?Ee3)JJHJ!A!Y|i|Ha4;_SerG@wOt(H0M8?a3IxHiUQ;BE`F8(7Kir +zh;*(O4D8Mr$mJ6*UCj5)!w^OYVlAHt`F1lMfeste_3x56T8z_Y1@P?yUy|fp< +zJW1NgHoP@sVOwt!KU|$aN=sEW+D7q2+$>)<#8s?__h8j;ihn`f=~WL#5=DYic=TD_ +zc;EWamaaaW-V?3V>hau17%GimVPu&J2pUdS@o-D9nwSUQ?*E48#0MyT@9z=HW-#{L +zzW@t+F>&~9to)OwkzCY+|9$>f$j!_!XmGMpEaA!Rn~(?vaPa&n#&Tsmv#p2aVij9{ +zGmc05OW4pB!P(r1p&eo_Rq&iOfmpSL67OPEvQYJUVOqUlu>F)o=}!aIMaHsD^)Z{P +zR1JB#M485`GjE#YZM4eD$4Yka=!DglfM;q9R)D_u-fvJj{3c>|Y(a_E4JO*qwq!ZN +z(I|RoNqcHnMR(UcbhRfDqo53HSkV^5qC^-2@c@>^{1~D2W86R8N1CE77m|NEe96M% +zRcI9N1Icqdi+QW}4;=WB<%sxVv~Cmazh= +zUOk1tEB^*7&s{Lpq22vPA>OrjqLODSDCCjca2Kxp=m$8v`voMH-i*Wh_o2PF-{iY= +zHper^m!A<*6S*Sqb!}mUz8m(?nuQC7W`wlGgM^!HjK=&eLod22?M4P0wzECFPd)Y2 +z4;-hJJgWGGahd+Om%C(Kew5}+6B2l>h^jT*q0%tE9$Am_^f)j&1Z(0NDi_b8x^+7| +z{mW5&`RB-8z5s9UVnhd5A>OwbSB@OQ_y}Qt%SyB_Sb*fb4r8JI9zu>SSL9L-YsfV> +zG5?aG$$SO3cZTrn^s^W$UNceE@Z;i%Necx}5nIa}(NmdkQjoE;$gaxV@g@&5`CJH*UL0gC@_Dr`54Llita`GzJsafCs&`v&WQs^c)1nApSy|I +z5`XimNj#n3POh%!)r>0)D>S>C28&d=icq>0JA(({uhObbf~rs47sKw!y5DID>FC)vwi3k;2&m=zlU8s-&%8Cotq4HE?bgR`8CJfgRJY +zAZ_LG=UtC5gL%1X&z)&9DkeTl)A$-QPM_3#^Pfkb#jmIKBc>%C{+gS{&shcZmKT!O +z<%Vb3qgCI=VB{J}{^6sq-j}@t{}JECI~%(8Usp#yk8#2JrRn`_N0MpD>SGDqedkyT_k`z>PneEt%46Q-|B{nl(HYOC>+Hnq~8Ebd9)j;)#7koFL=^{81B +zz;&|r@83VCpz0?E0<`S&$yaeKbjB7|^Huw$eXji#<622fS2D&D>$p65J68*rhZdvD +z*UmISU{fJ#5+KVZ(b3WbPUX(wo%9hL%KRS#+zeubuEvsL8k%51Zsmg#a&>Mg9-jJr +zE{7JcLrcSVys`G}+gBIV)V3x{+T8>-0}q}BmZ;@RabYj(s>6x`Jq#`yd+q6Pg5;5fm*Y +zxDJh_rZ=*#1hZ2@>mXt}*Zv5aX>SgTbKUr(v3n4x`0QmLL&e?m`fF>?o;`JL-4@lg +znn|`sYb?|$tSq^!<8>U5o@F=>*_yn8z>ZJOo*nHwV%J%?o{HLu3525qTk#C@@tqrfYAEi}UNtHQ6p|B3y +z&KR?2=gsW+v+w4MZfN1gF`Msf0jXFI_izRzEJyH=~KR$?C +zruuL?ehD8Y&f{u$3|Swy8U@+B# +za5;#)w@A04KUVB4;2PpnUpA~TeCn@U9i@4NdsQZ@CzfEvWIx7&Q@9iv#pTE~j0L8V +z_GeARu23Myx)NMUP~>bYgwat*U{R(MJ((_a6~rR6Sh&Q}k8WV`S&4qB0-&mL +zj))MX9pyC8{ERnW*rLt!!jljda85I*U4q);YU-w|b`ct)91f +z=JeIMAPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91JfH&r1ONa40RR91JOBUy0E^%0TmS$T(Md!>RA>d|T6>IK)qVc%+!fs?DQB +z4Q(nY7=w)oF|S}AuCegj3+wf+_dUBi??=Dy+&Qy%XJ@bpjZ`UTeD~ga?z!jp`+o0p +zuANGyQpImk3s$SYRd^AkhU@xu90%tUK;syDZ_o9~T3l4&7qA1T#kj`q#`*2NJvWYT +zb?+1k1wRL^#=Yl$OG4DGbe? +z!FXm0^MwWEO9hl`ns+%q5)305PM|m5g~9gK*wnoa8#@Ql74J0QC8%leA{eNsTElnM*gM=l!JADvFhou>^tJ*foe-*58Qh +z26iAwVaP4iZ+WnDHQw9)#}oi7!FSyGYm!Lw*pCF +zyyuB)gyi-LT!NpI&r_gVdN$$it+(N_o{O;{ZP$3Hy>h`PC!J2eC%&ZBP#|OoJaY62 +zJbG-8@kxP~RVeD3Ca%@&?7H_~n}@YN|1p#M4=iWproHPvS*>AGRj3vxD2EOepw&4D4 +zpGQZejZr^m1hL#%nseh!PfuSEU`5tA!Jb_h$9G=+C!CoZLmQ*3g3Y@%Pg!yRuX)5Q +z$))}0V_I`a%L2W+Z6zMK>Wk=0^de(GUsy16rlzK7iHo_n8S?@gb0ZkdjN@AezK_Y= +z48g}}%B{f)iWrn97po6=dF*cU_DJuDH)w +zoSnBmwBf=T8yoXDXn3GonPFQnfuEjw9RE4A8||UCmS(J=k|)rx6T&sot=JaXOl`&u +z5LtsUQAS%K_1Gl=bK#K}Fcl{f%t9rD*Yij4tL$MEXe$EVDk#dlXA5)q#M+PHGwW`} +zTxr3$O)F5&=;&zEXEq`qojrwbzxj`~R8$*k->7jeu-OXDE7*gZ6W3vNaD@Rc|MWEI +zNmHQxCfDpix6bS>^~zXgvCKZVn|VT6P9LamT^ +zkRQf@5DS$!`&@JHGA=}UA7sB`jml1qS2gAES++_6hPv^&j$5%QI*1H?TeK|QB|LC` +z30J(TN>fE=aA*Zq!)I1wybjn0_N)Oa)+OPWCSJ!|b0^J;rs6P~a$-1?MC~joW|7Cm +z1bbKeM-8(h`7vX@F3U<=0wzNVn%X?xN*_0Fl4R~KRf|k*$B-{CuvSiRVlEJv2_&E@ +z`+}h)ili0fJa?r&N*aSEpc%~>9>j;oi+GELA~-@`#j~tI8AMq8xOBa2$HSVLRw;YV +zy+94P)G8-7ZSm~TSmm?*p1t$XSV(+K5)^eadd1K7V@LW +zWly4G#Vu&x@Kw0Qak!ID!40LzI4zDeL`w@2@uT_uJgG0@h7Hf+T^Ou({pY4WEFXAz +z=Ae-f0^Z~zU=P){GUe+N+ps3w$4FW-zA1B*M74m3v9|6Aw_~y}jqXSXws&8K9R2Xd +zmDibQ+@HLNR#C-Z*LIFgVLp2XZK*5K-nj#z!~mSm55mcuG=3|;&O1e{iS&`?c0*e{ +zSbpkf`nWQSc(;CReb}B2V7~-Z2~Ff@a5QrYVFnbFH+^6=dC@7MH`sw|6IY->M#PW- +z%ji>}nVw!4#xeTS!P&zG{7fN@C(rILnADgb1Y~l%=a^7j0 +z@^mT9ax%Is|CxNt6mV613p#>rm}kzk!AS%L;;Zn?=<^8E+~*1Knw~51#m)ENhbMl9 +z-6Oxi>iA0Bz3Cq88Tv2$3bPaY5X_CBz3pNIR&iCt48Uk+ +zunADR+lK9={Up;>LgwADXi<=xF3lPY+me@30XcFdiFj>E(9#-KmU5DS%Qh<8k+rkJ +zf1HB2EVceGY)=l>;0IcCB<0G +zL}~Kl6E7f{T#t1dzKmRM6mF!8FXxPD8m2gx=#)wGa?*Y-dw`MHI@HP2Op;ExQ&;V92N0#KftaRS3X;Dxp=je+; +zbVS>kCktM*;atf`icE81L13DvT;}>Vz+lK#7%J4Pr0-)^bR=-m?hmcNsRDy4vx5B7 +zHt{SM5C-LBlbU>1utdX>V3y2Hm1m6R^s*wMZMu|JFJkbBG9oT8U(1~RO+quFn#?*R +zRG~FMt01NwMRq6Lh5%`ppu$B+piIxC-}MjP!7j#Q6&MDmYVYMu784~%@o=m-L>Khr +zw>XmNiGYPcSR`=6Q*A&!O55rx%K)-K=^7wHC@t3y-2$pII%yu>sqCqHUl(iGlonb$03qLV)_t@$pK7U +z^83{6FHDWR&~*ii3I?yC|3)$1M@t~h*a{STuE5lm`>63OBH1x|0n1F%YNX*=mdAsh +zTeq`(TCEF%*4uI&t6iOadDyEvtNNHIhRKNWUvq7>>^+l-dBD80cfV-b(vCw*ND*Xg +z>M)XHFQaYjC4}Ind{l%XAoy$U*Zl$fc`tZkcf3-_Okm7SoO_s{3Iha3sR013_YK? +z`m5%h>8t((4#Ae0k0m6R3l|j|YDSRe%KIaw2(Wli#)weMBwcTUr2;BS4Ez+pm7new +z2hw!+i~`7ZkiGeX4lI7?g?yCm2L{;v|9#Q@jotu(AX# +z;+yr>@1jFocN3u8VEps{1hKHL8~+S2^7{G +z+(aAJUw$Q?dEo%&=uX26CER+=rPwz#jY2qvy)zZ8>u$q$w{?;>^E=0ka_J}@RIi(* +zqL`CnYA5;jN@56bTSRUu7c$Stn=dU94y7&=7;sjZ;IJ6+C`A*sX@(TYTy+5la&MY7 +zs*x@Qp(#xoApwUV!vFpca3@9){Nukw^rkzIe)Pwff9oL5?*2K}e)wkWxbto-%%(9h +zGQznX96iO_chey5-MIs+QgQ4*lSY4A6hHm&8XV*Iz6Vca(HVBQ9*!8=;z1@ZzWj%H +zmdURn24RsUS?$WKmjTum>uU6(J-}@kvjpP|LQ^};LYt-Ca|^E^U74qp!=Cg)td62_ +z1Y$H@5_I1=4u^YUl^=c=rI(*YsAnbS-h2(ofkE_r;0Cn!^kC}^ALLdJcQ43PUvC$# +zzH|dN_xB(Xi=sE`;**7;Y3;7(N%Sc`tHb-l0fp8rx<1TCKt;WMQ%JT?D3w`~}3==*`0F}R~A5g6ey +zHHJ!0ADyoY;V*p+v5$WmowwhE&K=ibZs;UtP8>n8P{4`TUO}a-6%ThEOZr4wLZPIn +zstv>nKcMlNPMo2lBxsj=U!p16;z50W-Z+inc^!Ed2D5k|CJR~^>uJfTiGM^+q5pDh +z!W)63hPZuZ&+?JD8^fdNXRxE|T5Rmzfcz_uA@u5V%s*NB=L(eX{RW(W`CH__{Qxrb +zyYTfNMfV+_!^#_O!l55OgenD6q>m;$yNqcj;@*yCfPSjL)D`193{+KGOIxVQ-HsTB +zxk>+Mdat1^9%`;>*)qJ!UoWd{GWl0nlr{X#dH(t5CD3I}N&BJj&oSbhGx>~is*ll? +zd^uOiV_jqbf6;qCTv-Q8Ib~T|5nM)SFOXm*a>Sn-7BGlH-5|ZFc +zMTFL@N2sHlw#KMUU=@OnrP`6~>gIMV^L~Vd2K%E?E)^*t9lB3M`C*;vQ6!EtK74=r +zhd7!aGIhLY8$pl{%a`%rK-ust-i5*Xt^eE^* +zJAI0IVg6P8^~m=a6^lsn<5`7gd(H~&{!s{kp7*n=9=*(9&UOcX?^kEBm7VpB~2WqdE1T8tW|8OY2ow=*M6xFbM +zshxijE0LkLU=lB8-@w<;eg~&ZXV4YyFn*{2=g=q3e`cv^&uX#R*)B=t!`+WcL*Eo7Rz6_3sA#Us;Cnm7^XVx-JpQ@WJEd?1StWq05snGYc2c)J`;0cnPP`}WlV +zOYO@VnRBZy{;mBBg#lh`L1G$xOVLx! +zR6x{>n%3dNg|pZ{_bQ%F@5ej5PB0Tlkb0w8QzexRAQC}bJsr%E#zDxATQ+$o&My^VBvj#k3Lp8~R?v2^r~W!5FwT%dsNQVO4+ +zx|Nm~G4*}ThBUNkbN1}nW9Mi(K%F8S=E`F_n8r`KcO&ic0~kTKlDys#VU?QtHk{|8 +zU#nO3=^L<8mqy4M^da06YS2_qdalo+`n77Zq`Xr=s+_<*lOIE8shtIfw^VKQj_r4z +zdg`gxGuu%-tE!1s!k7%r;%7a3F%jaPa=Ep6`(8D`1y+PSx2cg-L^eOK-AWLHD>y>~l1yLRoWTF2HvzoYx_Wn$8X +z%s9w(rrQ3_H}F!&VUsH(6@9`KI6piyZ1ImDfqLz|Jui-|Us(&t2e^GpzrA*53$CBO +z(mdBfK^kwxbA1xug{h@IGh6I!b#K8GwT;W)jT76kcA*cy=y@IQ#JG51G}oeANnb9| +zv*XUS>fNGqQGq;%~({`li9IBOib +z{9eQ&^lRnjx7vpATE|h0##kp)%L1-QD%^$unYRLKoJqpdAYoQ9VYXO}_8hFrc4Pa@ +zW?V8iXy%i@YI{y&f1S2u$K%(TAjfp2ifrr5I&4l4U?@I@w^BnGj-SJPC~M5!A#j&t +z45J2^$F2k*fUMq8X0@a}Dw%Dv7{ey|=_Tnw3}#lct`C{Or2hgDsAwmwRm3iBeEHyq6nL#?t3fE+j&1$%j+W&+5{{`ir +V@$U6^T897t002ovPDHLkV1fsicIE&8 + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/66.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/66.png +new file mode 100644 +index 0000000000000000000000000000000000000000..bfeacf0613b22c1b193f807ed0133f7d99e40eab +GIT binary patch +literal 6675 +zcmV+u8tmnXP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91LZAZx1ONa40RR91LI3~&0O+lO7XSbmeMv+?RCodHT6wHo)qVc%?EBkS +z;|;t3HfAxH#U=%^I3#I8QA&%_&^BpOwW(UEiiDb~Qlq9(QmKtpwTiMStso(wkdUy& +z;9#>ltTqmYczxdS^IPY=nR&BMzwg{R^X`n_dp6+wm7dX^d+)jD{Lb(9o!@rOy-v+7 +z_+2l7YPI^ij)9RsK!x~!Ac#N%2m#_aP6HGRkgaQdu7<633*GCP3pvkT@a>r9q1(b8 +z(}CsYeDTl_&U0aTb_#{UZ&f9#HP`g~jvoPk0FIC1SqTlA95uD15;B;;b6EkUKOF5J(C8H@Je-QCt +z3?0!n^v1f-pXfnPytC22R4$=JV0=W;YRLKI`Md&QXFn1M!{_rGVc$HlAG?R&!hwmy +zIGr6wt~Aq_Wod>r0Ao0H-So3>i~#n=yRf2T8P@e(f;BxW(N2)6)R26+KnxuCtXZ80 +zM4W6kdtOXKAP4|y!GVb**nZ?!c;)173O|M_=RCxEnTFq}xGR3^z_XT7LxuFpl`^%U +zB#{j$R}ZekO-rvMI7^M$2$1t-GEOFwY31h~;VS^#8I0l}0r>g8t$3LLyva$P!zeNVt1&X6e5HU`AcAWKFUQAMeE=7=FE!)HkGxkvoayQ5cMXJQO^nTy +z^LS|A6WDU-8LEDsY8^E*FOc3f@fM(@EfQ8^%DiMcn=gDHZd>&sM9G7ImqUKH#hIF# +zddIwKcB>45sZbnmjvm1Gc0YhalSh%Dvy*m+Sx!F{!74l1(5XM17$5`1>u9k{e>1*S^bCTD6x<5|ZNYm<|c-XV=g_NuVd)80!>jf(SMLT@?z +zEbiI!Qwm-&vtj@+5}(V^@3oC%0FgFI6F$A>53qUJjRqXopj=+hbrfe}VxkF%bLl9j +z_@lj#;GqLg7&DN{npE98 +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 +ztn}bw|1#_f>_e23J&@IIx8`bZ{fKu0Q +zj{JaEReY@N7W18h*w$VI|5!~xbnv=q=I9Spd=y?F7zfRJwehYg^mbe8iB7&%e`NA0 +zj`c$mC5-S*1Vzm)@)^n3!`y- +zHdj%2%+epcuW*%-!TN^zz%W2qt*|p-?>Um$yWEt&9Q%VuG2)*&Ud!#FPtbb7 +zE)mb9B;X595d)QOhHj<;>}B&wz3^@SSbjw#_e5eKa8%qglKZ-GfI{&mme}_(KhK +zQ)rc43y?N{l5eBd;`+puSRK6(-GL685glWzVvv&p-<1AaV$fgeU8|SH~o;oWKYHPr#MzA&Y5}rxy +z;u~r=w^*pNQf!m(sjG7Z60z*}8S>Lb5cE%F)8rAhxu>h+ie% +zI43YH0Rf_-Pl#k10!LOpTZ~~Cp=BCc>Z_bh1JtGgfGjCdQ8r<$E@vqVhR?bBiUoa}aP!1^q$+W2?c}!% +zd@C(Yk+3d{&90Pbm8qYl*QyK6lShAfMtk+OFuT`!6~uK1XI|es+&X?e)=yo6JOR-P +z&^r~g-uAWq +z>=;>^LVuwXn@6t2l6*gM^a*C6$qu%y?b~`*`1Q)|JpTCOXY12Sqj9egCDSPQirCTd +z26ndZGuL6(Da@KBe53VyyU+}q^q6Bx3#5TpPOifB6Ki=Lq9$-xonyY+@{UczJCM-N +zJN%fl>ch<=SK*SWrFg0HE$mMm!%U!vU{x=7v<+{xm9zBDFgJdLUDT`MtDxjBBUA}u +z&D3&SGkysM3S9;i@!(X?G(az}XS;q+Kp5iWQVXvvS9M)9laHRf0jDBk*wZ$IgNYMJ +z2l*bA4Q0oHn)_}-0NP?Ny>qFF6=>QeulTfY%DvxG0vBZ#VNH5D`tx08?V}W0TB75f +zf^5gPXXoLEAFjz(tj&1OjYjq7-g{l!wzgi(=og~eO7Q7G4##67IFdMp;RtuVgIN^) +zCC>uRE54ybSR5#fQw>(k+1&UFd3lm +zVLID5g-sP>XfGwrS@tjeC~=El&QP&KT`cGtZ!R7dsPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91P@n?<1ONa40RR91Pyhe`05RZ9PXGWQc}YY;RCodHd}(x?*LmJE`wRwy +zoeQ{t1jR)ZH&N7LTd`cpQY0&_6kCepy6LH+ldZ?cO&$A3;eI1~sX7L1}T(u&S#JGx>W=!~@?8j2d&75c$^DUWicY@YIRf_Yg0 +zEL%uaK_n1HAQVKtkjLTE$FTR*A?zO;!12jpjAtg0HqZ(L!jnwz`;0&e_+TJ_mSD_4 +zT;AS`wOy-lWzQ-sZ(D*`IEGTOh#bLGEx)OIgA~v6PhUEnc682j(^R!85G|AxNyV|r +zA^c?U4eT6#%kt?$#>zwfAc9n5ztq^&u{kLsRH`pYE0&8W@RC#u(7yI1*w(uVH!Qsx +zeFRhGX-c-zdkLg3l}gP!fKFAVb^>Jg=zeS;coDCk+=HoH3R20iq>&P3porZn*v9c3 +zU*(|B!ow@Hg6F+eFRUm##};AxKqke~7_$C9DsiH2)>H{w^<-i9l?ub@rMnbgV* +z%xCgVO-;=kfRcpPPz*^rfrs}!iS0*TqGS|I#l)b%y&Op(Nutxmj5(`YSKf$^t-Ay5 +zkp!j-X_NfEvczKC +zx9J{iTf7m|{H>%xz0~AOCX<&0prlH1T-YDNL;Ih^!~35yqaCFRmkhW|YW`CB6HKJf +zk1SPKPVHlBZ|8LfO-jLH$xBsf-^9ekMRO?d1YDs~#J6_+9bOvTi9|SVOpDk{AK!Vv +zk4=a{52%Vcu^X3d!|!bV*O2#@iMbRIeWy>Kz9;|Hy&o;K+4A5Q3!-m)eEfnb5_lm>p2CB_cOvTFlQ0oc=0}c5ACD+Unm4!b)6XjO(MK@r>BRsl5T^>$Skt}|pS$L_ +zZI&aIz8DaFV`F3V0aUjJgW9Z2z^GguiOIis{jc!O_(7^I!Q +z;VKOt5sm$du=+9qq1jI|KaCG8z6PJ#@Eg@Bpy!<%figN+rx7ay(5O6*FR51|6vy`u +zKY{NLJb|_lZC-UnWUlI-s``+tMO|3O=?5x>q(~9 +z)?jfIyK@I|sBqlW-?eqVs%jKZ1K#eZ*8-W#^lGBO@a)z +zU)lX_MEoAp=hKlG7cc_viqLYrKem~`EwrlnO2NR>52x01wdugo`(aXnSgfh&DEZyN(&I5*?2#;bX|!Q18~_|mzv??p7~CmJZS)WD(H!*Dl{h9J$3Ts +zU0=s3EOi0QEyJySuBX +zk%&-w_Dv4p`H`O>9%`Y_WaCwk+}(lZh!c2e3yI&wO1oGAd +zJ*}xH_Y5E2;D|@@s?-dN#A&X+JWv6JfDj$p-)Wvl)Wfp7;(loTBPGJ+#N +zK&k(;>?p5r99*Y1T5fH9AAT_P9Acd9m;tYqqLU^4xEMk|nuoA}erhYyvawl0heJ@-_842f6|y5lP`nHi*Hh{)f%6#+qD3^ViS!v=W)B-Q$nl}OY_Fn)*OG4=291u@NuTaB +z0w}~Yr7U($?K2{b?O8e%FjCc_!`}TyYAgGsn>u>*at1kjtGgISNGKn%K>@Ws%BVN#K +zawFBP3Ox;o!UrWOV}^6oP0_XJk1SgBT5-3AT;q~R91Y7-k1vv4EjBk^zEtgO44>^bQRvp9^jliLW&gYIX+~Q9d9t6 +z#rt6PT`Z6GQjPQ0jxk*K)f7N^+8{^lQ2H3vDvLN*NE#z^R8`U1VqSn<*Rqk+iXczo +z^vsMfL2RLltxsIRSW?t!k1nNcX3$&}3TwFf)f7NAB?&o9brB%scE)6* +zOUddDFEHs-3?|3nl6gY{wY+sH{%FgmNrY;gX;7ms$$bB!YjJJQ7TX9?Kr0o})bZ}s +zpFnEGzce6XT=^-pt$dNvKwx4mi_o|1_mIg9Q|e;$zF`v1{SFSkO9D+v3k0G~8X{Ux +z7Dl-g#<0doovYyPtR`B8L8*L$y`{luOick)mucFcVRoV=AM4}{&u6tEFeFKG9xY@- +zo>vq3W=SeTr8y^QWIeU_A6Z8| +zMem&UU4a}|oNJAu^>|^Jiw-j{h=^wif-n#k;*g>+b@?E*iyJzFOvIJXX2!rMj%_LrK#zhBF#t8Kw#iypm6` +zo$4_#t`J~9qk=N+UxhSnzUB*j&fj9rK(;Egeo4|bK%!MNYn59=;&^g*HKM#Y5eBCj +zPW1#j47|n;&H>PjEr&SCkU@*>T5r=7%#!P&1_0HU?<^t!Z2{URzB!ZnHg;^k1rF_8 +z``~t@7hHo1r*r}*GI0PE+OtAiKYTp@5}H1a05^g%UF(q;ei0!~_e4sTP9;mPEnv?l +zNiamCXzd`)gSAa|w$_9bt|Kt +z1ZkOH&l=Tprr);Q$<^(|=uRwuLwxC~B_hh-!a!IE +z;70Y;@1_9ifyCQ2=%WBd;g=9i9s;;MX))(q +z{gOt}+DeC4k$@;Q@a6b5{`pK;Gy`u|0JU4@8m_;)M%`V;Htd$EnmCC1(XZtNJ42Gh +z$SWvDIx)WScTtEhr4+t|a-^Lqn#9D)yHJcR#G>8bKq=f#6;d3>L7_^8X_F$^lPI_L +zBHOVBv8lt9PVXdGtq%g#G*22eu%g+tmgCb1nB&)JwXhIa%@!7BkU&`qZ)6-$P49fg +zb?y;+X6n?G_$pIcjge%vpZF0%>37ll+Mgkm8bZh5Gwg;^LFo)qI!CsC2GOYjbR2#J +zWr8SgU7`0ZbGlcGb2`UKeuVb15MNAZz^zd^u$h3Xm2(i7cOZ$)ro8bLdq)5>t7Wie +zQg{}C^^;~QSQSK8uQqn>T~R*cGk!$41<5r+Jqc)JO4wDnx)P_&3uecV?7s^YO5Nnj +zJK^I-ePZaJ2omSDRA)bJ)yS6LM>KtcUV55tk-+9AkT}X6!9$N=>5k7MA76s}f~ygb +zBjKPp02})?`l?OjcyEbGTV6tHQiTOxo#IuW!k +z#_;uDM39my8<<*lGh*DkC}&2HT5=<%SKMyWCj+QYeG*TN$);m07R@%8%-8s<hU2*`bOs52-YNnz>%O!QlO9)!9Ng^k>(QQ*Wj#PaTC_dUO +zA5V_f5)F8Ovxscphpi|~AT$s`N?5MDWn2jE@^mG9^u*@%PKhnDoG_%1`rDaA@8_G +zDbK|N*3~8L&`OacLiZs5R3cxbl(UThr6pI?0RYdCq)U<-HmQe9E@BwYjT+55e^XOm +z@0GK@HEW4deT9VrYK=_e`+jE(MYOvFLMvL(=I6N=?xu-4@!RYYQv!T{{)nxh2%{Ra +zJn)T>7B@ZSYj=|2YiUKL!1!wSt0?T*$vlsk#o|onje~Ol5Fj=#&AN$`>%4O!1&o0Pmd6;Eiz}?Esx +z1_6>NEdXXj#;Y2%b`{=LY2M_%tirgd`P8D!?s(@RztU=%69(-%(QLN})fTu_EI9>^J +zi7bKdT-V97(Ok+Zd)lJ8t!Nd^wlZDMcwJr?O6r7xjytIyhoSBbFMC!PBcW^O77}nRiz-uO;|nTprq=KWe*RdSA=J@Bl +zSR;SaJ7npnKIC +zy`bOoF+igFm}J2L?_kv54J5uS3HWVI-|H} +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 + +literal 0 +HcmV?d00001 + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/87.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/87.png +new file mode 100644 +index 0000000000000000000000000000000000000000..15c839634e3b3636ca909f6d857de9f4d308c3c6 +GIT binary patch +literal 10024 +zcmV+@C)e1CP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91SD*s`1ONa40RR91R{#J20Hadu6aWAwl1W5CRCodHdQ${>LPC;}g(Sd&IADxy7-Dc@$5Reo;+asM3CT=(;u>e{OkAE+>>(8=jy=Xp)!<15 +z2V8h;2O9`s-_2qWLI{x1zN^)%`gOm3neRLQyWM|3y{B$T4U<&mw%)tTf9}2KeD~aQ +z&%OVB3RD=tP>qyq7y^NSJ@eDLGCfea^8VO0=BKNrbu|9i(YwCtwd*f)ZMrtxGnaR9 +zy>{KRGxa4J*QSg8Wv&f>94ME|2Cge~z_`5P+D=vGI&jRYOu=8jw%)nWy7pY``moNb +zUyc`LUE0O2OmS@+j>aF?qjPQe>#Izmw#?-%E*6Uw*SJT1I)i%df-1S-%KZ)MnJZV? +z(fj+Tmu^&6+lKNAu1}Y?Lf@BbPqCx%m-+dseXhK}p7IL*`pWy;aQwK~=moA4?{x4p +z@lN;sPW2ad=%1;>w+o2b^ew(lqnn&a0Zb;(BtW$dr;Rg^&e`Kxfvet56L8L0@EWRs +z6UhECCDX&{Ea3DlP%Nhc(eSzbRm#e$z(-@0Dm^W{-7?g6IBRfgE1pZ<3FkCu3Zx2x +zfgmEGFoMC55cNVCD3*)%DU}6e*+34FCL9bSOnL;Xv_!dFE}=kr(YgU~eVq%x_3DV{ +z*|r(TX0tZ<^%{D+%F5C_YMlUT3O5;;g<=7N>0umA_2cN+37nW1z;I?1soVsz#jJs* +zdNv3IHx`beC7MJ>ydCqKyRookK0m$aN^~F+j+ln$i+L0)B^xW%d#A%Ys<~wXst^lD +zO+!<;aqJk_h3)-2v1@1_j;BsyJU>BAEg9ef#6Hs38jr>FnC)4cRF5zLZ*EGWucZg8 +zJ6B+R?;5P?Sk3`xHjT~}bJq7e334EvPQUG%>wy|TA`&x=+B0$xzdZ6XUOK)V$Hxb3 +z+DE9xkzfR&V9=)i6jQRU)u2SxWO&ikx2R+e^5p`GrJ|XPzUCfW+V^h!+Tu%aLHkk; +z5Rfip*@!m-T(fUi9GIAxnB;w~JCS{oh9x+K6<+Os6A$ix$}}~@sU8hAp(zwGFl}j) +zxi}9d1huoZYOhc#AV<>>=b*0dS%d3VT!o8!*IEy0_HV=Jn-S;Hb=|6g@$vEVk*98> +zDwMX$rpg4oF}NH5uStybt&7 +zdCXRD*;SbWTgm2%>+^0WU?w70qN_&F+lB~K4r5^wspWk#ddJ>(s0EW$kxR%d84h#gg2 +z!XO1v*P3~*-m*3@+GKRa=i!T&{62y1Fn8@-0S*if4xTl*Vm=%QBU8%a)~(;ek?|8W +z4RH!Ajjf$~4wCw@)4xK62Q&mL8i-(Cuod0mdFTwbp*5I9JQziU@JUG998?O(lyev> +zPhhA#ih<%NM#^Kzv7A(hkT>yhE+A{5CW;v>YMzfTZMp^VP>iOp$kxtIE=e007#KKf +za8*$ogumJTfAH$in`nt7s|O@bAP1S6o}N}+1*eAsL=?T@POOS7#*)Z<16LqBfCQ2s +zDADUr8w8cB4S{>8a00svhtXdgvU0T{4yNj=mdm>|3yjL+RJ3M;3lq4wb1nX8{qLEN +zE~>K)fs-ds&Kg{?qlK!OVBWR&7r6J}qg=dNPPeiCLH6)<{7V9Y5=5SWNRZ``h1eKf +zjm42(G!YCfkm|#m@=hEN2$%C1o?=_=g}5kb0m@U$4in^8a=Wm+#VLF^v)bPt`rmNpXBciaka0Jh0w&8ej5b;3N +z${ej_X7~~>8Ma67H +zlfN?gg@d!-eyo&scsT_%a9yDzc6mqS%I`b+I2RmG8zlbJM>P~&8IvZc2W(3yiJRK~ +z4f-P8$W(G%V47?J5-<|d0pv`BPOY?1Cc_D|a`DtF9kr)LCJ||&t*3hyZb6jpp9d%x +zEtZ9NjuF&>d$<)reF%h}Yq1l+>R)__9|!O>o@-^Wyar4&uLQ~Ou&BjG<^D2NowT`n +zsGx>K@f6Eay?L^+lIZQHfz3eBU-l()kiqh>$T +zKxJjM8>3G^{0 +zgQMG!h|T9q&KNSoPusH7lw5;gd?5n#iGwr=S@z!@?l6AtJas?hTg$JtSz?MYC4mRJ +zmzR0aPE_&>hjncinvX9TC4<9mT5aNK?&dTwS?ESboqFjq9v^tY+#@w6Et=`0X(e!P +zYVXToMi!+(-#>8#Z>09v$=9T< +zbwqVy`JL%)_7zb% +z`BOCY--%LkC6HLmsll03H4)YRxmbk~Lc+6>)ssfGG&R%59n>)CCf6z*UPjjsOO!N)`FJ`f%ao +zd|=uG&t^)sUGXLRzNLAy@oPPcDFwx~Y33!rT(j+|U51PB@h@TyR2Me}m!qNskbM(} +zaWX$_nq|uFI<6B7#4I)H!q`%*i7lVBvjWfnrr;9Zz%*bzZ$Wu&dAnlsur#?44;+7t +z=c_4nGA|x>j_$^?=B0RP;5iIuhtL-5;KJI9Jp<41p!+0x+tzWU=n%CiO?m$oy-qmU;41|b|&qe +zw7D8Ee-QdX4)2>2d+By_%25lXk&S|EsTM%RmnSYZ0L83aEfC# +zsK`d^gl!F{{HIs^Hg4T<8@{ydFR;FSEsm!9ad_eoKDXv(JaVKTw{81#Z0J~zJO_Mm +zY&$MlbOUE=*7TyR1ue^vKo80I$G0_&=}?s#>_I^!pd`zjT3)m!GHBlE_ +zX`rU#P+=4&3q#hJ`l=hMz>0C*%hD>WUCac%1!-h$5Zy(T7(3j+JYQi_ZczUTt!YFa|n%u0m_aMn3Vhw8DB?1*En0 +zf^2$>8ow^S5(iSpc%Iy3+Gq^bR$%+;Q!ZUUaTz8)9g%j*t+R|NSzNWc;L47KLP4C! +z51Jb#lb}Y=6g(!IuqsA3i3|tjAvCC9^f<*xN@|$%6h_hIMjA65M&bi!rkbNbXLJ7hXl<(6|G&W +zm)LOax#z-)z32%)1W#(nLbdHR3z~ZPN+xC-2pdU%9nv}=Rn4FF^7f4ix61)K`&Ly*Nn`m5@Q#5uwaE>4 +zWMF?m3Rot+$~Rv8$DI9nluNulQ^(f3{#>ly6a{2RpH`eRQ|H>!JC?d=%q72o)#T +zmoYg*pWb5uF22RTc??#yj=YnLI_X(Q_y{M#V1U>3R@cuJu~u&_O15xJHd+N!ovWIT6_y1;lv8lKy?7u1y>Jshf2;e+b}={WbMaw +zq^YD;UfW46MA8HS_{O_7 +zV9_goi88@8b3wM;3LPeI5ek~?-hk0XA4KbkXE_M8-L@n2_;7>m=fS1jOcVc-!SAsYJr-1ebLUW`2$Ril< +z-b5|UVWR6|v>$%Z?5h9@Q>zEo-D05jzW#lbsFlW+I#u7SuaDho;9?i#RQ2~Y)!%d; +z9F4Z*94U`~uSuV2ur9o>>NBr%dCyw-8z0^@T+obZGVj2%27UcZOR`gSBw8~GB-Y=I +zL5y)@5aZp4I2Wb>Zy2_oc+RRt({$)rRw0m74b#lym;MPBKL2GddWVo&`~d=}KI!LD +z!x3#mIDGGc>{^C^U~!zl4!rt{VBpkw#l7+Llq +zx?$Xf$+qzrv47*|vE<4BMC~jPkuaj!lj!@^S8btd8ase=@1;mD=F3R#^eR4=Y!|fIM%vg!H=Xy5^*pUWoQZGo +zuX}0{`nk4KGb)d7wdJK`f;>QlPp~3mq)pA~p&_`so0Sa2cu=A3;8fGD39loUqvn!M +z_qH^eX3NAv6;z{TTBgm@d~YgQjz84PEqX73(^2ztuhC*?W+RI%% +zLX1ltYuJD`5hY|7T}9KN-5c9yy)fIcHsom#amS~d>KbIn*Hjs|`viBWG-`5)h1%fS +zu?8uN08J1do#~$4*#cY8h{xgEvaVvL%skIQNu!8A?3C7yA$FM^e7BKeog+v5Wn+CC?Hmq)SR>)Ja +z-CXsV(J)Oyn>lJ)3#(UT9a-9VWy<(hu|Bo(y0YqX+2%IlBU$abzqK^|%Zy9yl+}2v +z?T$d(R4;0@K@fF>8mq0Nd_QS{aYrC17ox)lsEM7(uv~fX%h#AX;|YHt!jH7AK+WZ0 +zNWj`*OL{9plM$enSLphbd8p&{!Dm%X)cd{=+tv-4BIzY?glYR(E8CAnIDHxCN-}vK +zevSjpHXW89E}pP=Y$m<O}nNW~BJnn+Ey0lFcupKkfW_;iH9Icp1PovDw^O%~eBsr{5K5H@l(( +zWlbIb=uD+GYMh>=NR`L&dTtL^#+FbI@&;z5YWv7))v4Fi73U0c#p2vaJ^hae{pf!o +zo6951O+snGG9-TYbBHZlX`0;s+!HwXDw +z9ze^yb{rf@}45%F*TcVP1tgueE7 +zNPgve2zB>j-1bMhi$tK +zVD;kpxcS=m;Oe!Dc?22dLc?Dc?HR$+mL~kPtUSvYz?CY+L67>;UC3f3^PDJ*c#Gpm@c#2u+O9 +z#o`6f_q-p)AN&p#ioobf2UiZsR%W< +zp-lT)N{u10V37?>KFxeSkLLDvM3c0`R0OU5(%_av9Qh*cayD=F*He%RdZPheqXLF< +zC8mQ|5D#IXAXSiSXlOzFYV|isOhcKhhH9zH8V-8*CS1(ks-y-~mk&ElRc#fDDHn9N +zYY}?UNv~l9V^nh~y1H}UmaLX&>qy^^d;4vfop>el1}$TH@2~GhtSQE~wq%x|RS0-E*@A%=oFET{gG#R0s>l^tTPV1`jI5MnIjM*EcXV2EbxgIC7t4JO}}RRitk370Z(F65qqK8 +zNrSMs!Yf+ztJR6@t;5d6l6lfBD5Ky|S6Z5zti-Vix_KZNo2KHk|nhR`by +z(}$%^BQAl7EXutr5WMlWrRYtOpMO7o^f?|`+sHD7_}o_o%Nz2O9KI8+d +zKlYX82BnQ)zLedLulL_>mtCrQS7l8#om^9C4v*a?T3cR@PZoc}HXU+L&lG0VT#XF* +z!eyn4urqXEvg0$2m^xIqy2SV0!Mo7A@N>8zxs-nJgq7*}q(Ew%AZo`I>g8QpJ>!2s +zQOBT5?yaf2hno$)ePF&RN=+3l>&KX$1XY7o4e=Oh_*{JnSiMB;;mO+G +z{9$}&@J??xM)K*hc$|4ncxmH_R8kn>AXn8k8m^-Taoru77hTO8^Lu%crK_a39{)a$TI_BHaO+lsn5BaqG{hbJmM4$3Y0g@f== +zHHT57ct&vj6|c%~^f}s2yvDK2N0jz=s5FBAas1oZ$Dc0Ei_pcA7Dy|78w~?RWmfJ1 +z;s;7;+0oiEuej)g3?9Jo5wtdvtKO-OFM;EOdc?Y!;Nl~=fkoxhk_W0D>|v +z+;07T`PknWAG%v%TijXjFF7TzTH!GhuzDVN>ZzwlI&+X+()mG_)8hv%KgU== +z_LI{}Jl*s1E`}k=4wfIEG4fKiQ80Y&jwV>w$b*3Pu6&lfsADxJ)r6lk4rg>cX +zqv8AT52Fv6y${<#`0Re8OpeHH5v`RZZchCs7j~X|@K5El2{SHe{zmi?q`92Hwdu=o +zcgw>F%ZappB(M^m;MKxvRj*8@K-#c@Q5$|_?1ojdG+_?FZa@V32_d>di!vZ{WkH8=HDg@p}!|158>q^OZP_RR84#j89kxOen1{Az;tbNT0)0fEZk +z=Sg`VU&>mZkv0bt!3=&qy#d!vT+R&xO`&^egfo8y9)JAt+U{nqMGEb&?{0etyQ7D> +zTWP#?Y}A<3KuudMY^!+_{k_eXU{m5E-tnDJK;n~v>m)$hVs?xIs;>M_la<_OsP#wk +zC%Bb;owoI59x?7WE!LroXq+ik|t1|%KKVpVQ2K0bOaU;R`Erj~GqeBiOi9y@Dr +zC8)s72MYLM#{(D$4_EDxx63g_W5=#xryRAhc#|Dhds)7^k;dwmmW%j%-4)R#SQcG~ +z`Qa`){rq7c7a>~&snHppyPhhhc(^@?1G%HvmpepokDLA0OT!p1K5GDEW*iUd%k{6c +zfjW +zULL@?1Y6K3u2yk@T;NA*m+Z7IVu$z!UxlVnJ%kf6`u+do=oApwz}BRh77=%$_?M7ki}A%ryD#F3zJI*P1+%OY+r| +zd$whPhaP%pdQVl>W*bR=TSLt@@5m +z>DuS+nQK!t3bo}fuV+bTS7sLB!vj~^%*#__L)6&X_Ehg|!ddyb^%|DeNGb9h +z=}0+@kDa&%Pj+m@i|uciJEJo9QFgX?8;ue|w +z3Utjt0X$b>PQY~=0vUP*F{;Ckrcwmg^>4=7v1NF^^L6Y`95d~eeYV?y1i}r+jQ_4%~nL{b$przwWHk +zG6e!t;XvXzw$0m(g9+Z83GoFa?Qxh|WEwL^Ks!J+`}K?WBHwwb|E1~q*f6pR%hG+u +zixw@9*7KdMaE`wwHMibK)GKrS*FLM47p?w31v%oHt;;6*>~kVEgk3F%u(#zXMw`aX +zWN4~}s6qM@*a`w@deDREg??HsPQ@ViQv@~0_U7fAaY1S!R;QL=ezwz^$`MorEm~?y +zGskIQBN_Bu&lGCYR#^RV^<6yq_P0?7{>EJ6E_RK$*iY+T*;~8BL_lSE_#ugUGV{=v +z?!Bi +zuQETezuYmSGDqWLKb^`%Ybyo8Qc`CUG8eLS%f@+*kXm5&FBM4>;1q_VW2VvLVg9#2 +zVg3hJw2cBtUI?T`J9yK;XSo3tRUl!of?U8*Vj*OE)1 +zJ}VC&0_vx6^+jjkx(faVRKXGYD?3_$nd_|fnWOQ?(`Ym;?V-1*Xz?jnL3ISG0LgC4 +z7Q3LQva9;|eP@GHv!mLo>r3&Of};~nJ=)sm{=BQ>FmUEjPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ +z1ONa40RR91SfB#{1ONa40RR91SO5S30Ox>65C8xsB1uF+RCodHeFu}$0N&-yKmp_0^ow8W_T8N&$*}m|9AfLpZ}D* +z@RaF5C(q;YC^#i-A}ha?=l#4eSe*+Fo>Hka31D|23$_K=f~$8Mww>~RUPm~m;7}+O +z%5IR9q25{0tzVz+ez$q7?@p@^+dS5({5d-)$c2yVL5!Hjnk| +z(;K~e1aPB-_v7XU0l#|V*TES&ISM`e`E_#dDS*phXPbWvnT{u%7F79VPOz1qYCfS| +znV=2$HvfC17k=dc3&@htqVsvY2zdSQc)b!;#|iLK3B_^=B|dUq=JPR6qkQ>Nfq9E2 +zp8%h2elZy@;;&yBz!t24FMyEGZ&=LaGB`DH7H?1V;qCDO^rwa}nn@s;OCej#p+NA2 +zyx;3%nIK}pC|bkK=!$k=LA(nKnz}GA+KzBAZ0h6uf_y1&!X9>t?K2bcF8z8}0oL#? +zQDXfbA0qw;SuCS3Ifyq0k7D1zA-pxxi~i&=Qu#EBB}yR?@$yGf=ruOFg~+MLk$y@w +zrQAo*qk#yzV(nPbwgemJt;M>|mFSLjvK|kz`78>QY}I2_$-4xwCzVP$ +z3cwn^`iTXiX2?Hz{8{|$t)0}Z{RsMl)S)2><{%u=&H9oW9<7f^wAxX6{*Sgs=Ha0eA084V?!6xh*Jc#e? +zxgV#-&+URIe4m(8 +zN%oA6j=p1noeIimqQ3pv@n7H{_CH{(21%_o`WvzQUWn5KoTfBOeSGecPvDkiAHW3l +zvfDy=CvKdz$z@+i4e^1AAAH49(f#5+PKnZl4v=l+eW4fn~cALylU6dnkuAm +z=c7Pz#1K +zas%EJYgEV`XYGI}CHK2;{1A_w*oBr*+!*^#1?NQDq)h5G2RAMnxI^LIe{c_318QZm +z)JjhilTRx?)9H>qJ*nbzcyahC8y+Mma$j8kNu;PgOozJaaN{r&W=bjW(vw7s#}R#9K$W4LA4PV5|#Gh(^*YqsL;RI^0f}Db4r;0|RQa +z+6y*8aSF@X0tySrs6UK1N8iH#-19eP8SE~jJhM3gtD3XryeYpb(1T5(RaofnLdX*^ +z;Amq;qr}4MP*SV8)=ykOur^7z)J2YUo+C;xBM=`T;2e?*MX$uh;7S9iq)yI}Y(m3-Zo=IiZ0oXqz4R!r!%!JP0%LVG6R7&Ns^l?Ww0bLAGgM?L%X*HIZjKeKzq6M&MhT2Z2fb|t2}wC8M(_M +zYq2=kjenYW1}6$<5#@w=u97SruLaaE`d`Ln?U&&4j!S4+q|bS^=QTa9UZ3F+xRNey +zg#Y;DV`asdDB&^OF!LqMk)5?bbQKLSRw +zXynnAuDmuyA$J)~8P2;>v=N7kr`%e*f4B;ab?5u>AYl8L-UHrdVD;--Sqru +zaU4TAZn86v^xR~Sw19!xcyFQ#(%wdp3mIFlhHRMeQCcxUPPPuHPCZ^Pbua7mFprP+ +zx$|B&6KTOyH0|8k{6RyDXws;%^%`FUSLjyIrb*hRe|uA>3GRYgeFk2C48C9o +zE6wpl+EEI5PO+keCw#Ot4pUu(8|dVzyoqP+VGDz6I<_EUC%g*X)1fdcz*hG@)&Bze +zvV(||=t+}=Fn0HPr6n0pS_~`=F2HXzZ!?PniI>s0%r79#K_n&ITaqks*zqUgi(t?2 +ze*9hU4{5Dr*bxC_OF7)R@Wa^Jz6JLk`9H{H`_MwE_Loyw+ja%6UiJlyBo3nY^!->e +z??cFpJq>?ukdtWu;pVI0o&QNnGgT2m*7PQ67EOt<37n+u95QB{d*Z7Ij*Bf%`emK2V27JYW;6%N$^^_H5dI7_OVR0sP7JvQL_prHjJwDNMn;DwV559_rPdy9|Pl$V(mSF4h +zyU`Zv5G{YFG%>wwf-@C`md5J>Z)&$GN^0Z3>x +ziay@F9runrXlRqF(oiSqjuSx&^Rc{%b7Al-0scV8l}7cLGL<5Yycq!&Au(AFqX%)C +zQWK?gDX!`)F^n+aDnSI%6QH*@-H5J02a;lpmV(M!P)$|>t8K!P0a$u2h-U|1W}8v` +ziHbF8l2B|OK9u-FuE6g +zhH7F0<@RfgwEBl0L!s+q@KAk#>O^`xN59M8ft#DI#RKC{A;NWEm4^x+^5ks1l#J#B +zVX=Sw2)4FvL~<63V&+MXmFx25Zt6TEx9UovH^U>qG;6O3EyHEeb;vNRdkhv>`A!8A +zcIVQGMupxqfQPcfM&CvPVMDy`HArtRj`eUPjdS&M)umkh#xc1mm(#UWzNwU0% +zM3z$$Qz&sF^_0^nk&ZGK3!XxP7gczvMXi$t(InbLqi7Y)qJ1XboHPf6mxzhB77XPx +zSYXovENRom$v|!hhf~L$6`QKF_)O!M2$rA2Z(GxqlR&iq%c^kr@Nl8hgqC2l+2YhT +zXG^FB%bFJBt?^zAXGY9EK%DW?(Cwji0zQGaQ)j3Wc)5g@M40oz>9IYuCYlflwwcK; +zlcrkWdw|mFrSHogBe2|);JXx&ZUb3btiPSKie}M1D}SsbNZl?>`Y8;;NLWp0NldFE +zR4Cy0<8ZPUV}OtVD>s-zdOX|{GOk5gXgJr=*W|EU`vrf8M`Q)@g^OMt$LpOV> +z$4N}Pl)85(C)EG(#<%gQCAU*u#PCz*>!!}#+_njS|K_*xiRGW74(>qj@GCgf_Y`hg +z^{)}+V!*@6YH08Y_$cM^_(qhIhvDmg5T%Zr;SG0jIHn2UWO`&xEG4b$X`{cMIcUsL +zGZnh{6WwM6lWv8j?u5yaR4=Y=xs2*2M7ei~ +z*Jf;=e;qcouEURyd=Ec8`j0fP%4nq>eD$*5!s-Pd#Hs%0*rp$yogYDJ?0IDSpF$IL +zc&zglczZrg_VeUpDhP@ZU0b6Yv7cs}<-;^w;kFvbcZHQ-dRf?9)3Sv)Iq{Y3le}pG +z*09u)@I>ZqqpwUOHLNC8q89HT00Fz!q&vy# +zPSxOCfeI72uWtEwv?%(hYm4Zn4XkTX(#OBK;a_1ed6qgijTTxD5iUeZltL{o%51-5 +z-n9rXz7v_`N%#YC_?ZW6Qzn|ZEa;*~LGdNJMe{<^emc*48#E2wpw<;JY0}}n#KtU} +zN%?g78v?A%YNRhegrUM{4dD8gTApGHojCPzt@ +zYFQj##2P$i=S?=T!X*yJ&ZcgLyrw+?9i%Q--Fiw?QGR~_(dMN@kDPF#V*;P4(yR7O +zo$MmfEZTeXXDW8FI=!(IKGNC4#AYZzif&p;>ZGcv=PEX3l2e+PluqfRv7XkFQp5=> +ziM-@ul-gV(s3%IElq(fr#S5g=ut=JO+4FC +zUdBll^W3i$U~*-XuH~`nnw}Q5qdG;4XcrIS#Z==|RSUcLHP#Zb5k|sFm>H|WbgDYm +zd8SCP$;jq3ocr@S84!^K#CE7{)Ue_FQk0HyT77ZM4|JL`rc+#b>Vp=DTCdrlD(=F7+UEord(gQEOsTQdPvfKpUETQQE4s +zI~(S;Ej0F3dy%G<^rerWX;Si#t|BKz`CjT$wWi@-qNMq_=ODj8brzsGH?MU$?Oz^J +z@?_XZMdM}~#!7;9_SZ=s2D$H|m7d1eRGu9ijO|WRgpnhyBwN%8uL_n5Pm*AppsWHc +z!2?BQs$pfIZcHFS=?t`+^?H_*(QFc|O4OdIpY7>ikzg&@_f2G*dN8v5F8H}bFK{K< +zap*qeT32JDn-e2J4kUWfa_R~6ZTua?PwznM>7P@iIJ8-3vTG|6Js*abYQ$7pBVJ8T +zah3+1RA{eZ9(g#BJvs}|4#=Wi7@5m80@Ves#nR|t>5fSUo?@04ptV8n;ljZ7R+UzX +zTHT{Ot^PRMm|5S6DEmnFnJ}v>(~gae>_>C|i)bTYfy^KkFHa<>V`Jk-vE=ptg#ee! +zWlCy*6HD{Z9+YM7G0j6ThnL)n6v6H6eF$9#{|+TCw+)G|_H4Uu-_qbLfV_r>N&MFF +zY57(j)gz1wx-3r2+&Wl2DUhp^oQ*K6l8OZD#K8`A^_h9tpnN%ZoEnR9h!J1vzZ!^c +zW~K{EpOqIwd+*GD&VUFqAof1#l#RCf%JGaW8o7YNM6{|ci#hTGB +z^&mj&9|JJUOh%t$O+ZWWt0J@6VJKzBia#k%70_u3IfZBvF=HIdNqQrrZ@@>DkXU&q +zMpxX0*x+m2a^$8wH_rXJ1cq0A3fcHFEZp;T6lIo?KGiFFywulz?o$La{V2t{k&ARA +zoIK5r(6PM(#Edk!Xmofm>{NNRJiC1(WUO1NMOaBcS#aHwJVk;{Cfgg5QC2eh_l#`BxsWEfTrHPB( +zI?0OA5Ykft-zl%+v?QqlA_OPdbtQ(keAx{5vbGg@Pq+KUuOU2km^yYPO5s+TWhs=K +z782y&NBsDs+{Y>)7wzMu2G6q-D6O +zNM?O*@$1BKaY3GC&Uwji(LusiSM?hL?5xDNDZ}IK3WTOs17@{o?ad4m#*gs&k|aWs +zAm2DCetyqJ@q;(3d$%q};`|)?=_MaRnp=v&%m5QB^^)0vYyOyKSsvq;{By?BHr52k +zj>>gkhQY2aR2wOzmvVE56CAtPOq6BnU0*)wbf{V3x!Ri{D1jp3h6jV7CBH!#3$lbx +z7^$po?@MLXyM_SEz?St8_wxMB4ww3pb?+K}1C={rW+)meNeUVEp56!V#0Uy2w!%Z8 +zsh}p6)-IS6E&lI7%4jS?FpIx1iHhW;+VFC-Em;ML$3FX;C3S_X9Ij35>Ae0a?@7(gz|Ns#sGa3IgPkYAfSyw$_7j=REPA5ysjPfz$A +zG~)}5OXx2+m`-$9ks1tAMIFza<}FPwlR0VxlyNRT-8745jh{|$t1$|cUG>zvh5#$8 +zcC0!GuzE|oq_Z1?P +zf}{IUerX5qGw=h!#VZlIdOQ44s;FERz6h;~QztO+ChtjPbC`e0CWKpBarD3mtXQ`W +zqhm?D-8Xpua4xfsUwOzdf1ult-{@+;xzQACfM_PcTf^gRY^gZ(wj{f9+lv?@SaoaqcJaiDHrWOp0j$_&C +z)#x7>!jB)@iEw)d#(Cu2m-Fz>LK*89ci|hmd-33j2^`B&lDQB4jU!py(Ox!Zf3S49u!j`KFp8k%j+SCkceYXD2CRYfR*^4XJ!-211<-0@rR{LY_nM~joq +zP(S+r=(jPk>rr@b`6Nz1@Q>)&ay3?d>hlOvjf}i~20Q-W4-gD-Da`yqN~(10hUGoD +z?fT1+NM#U@gs}f@ZYA>W+x(_5zIFXFv{6lb{mlfvwl{^JFUjHdh5WoX&&z$h3bikD +z2%=rmE8c6uRL`r#$=N*=HsNvzDV|SDj2gKaCpk&?a?c{wXqq&2s2=;+8Y^{6Le;Z7 +zCU#RVN*7W}C9M@_-;L^E-5vtuJM=oddD^T4Zv%h+6{P?4-y?PZw@}J+m4D(WCJrB< +zE-s+wL$@Oo=CM&ah3=)xuek0K{DkB{j*2GSqqP*>~6$4O1Z7(he=>ys_2y#eV~$9iBn +z#j%Y%^NMz3Nf221YD$-BM5|~P?c%}kC;+UpVbRSv?a>I6rR4<%BgKiPMs8Ywm05bY +z4b52QS%|%!!_MuOX)02FHK9(B(tlv=3H(9VzjOeQ)j%ncRbVUwF(J!=e}JRBV!e^j +z(xq3!ch7HA>l1`DFPEG-fylxo7^ei6SZ?5z=h6J}Pa{BUA~T*q@4mg<2jXUq+EfP- +zVCnnnLl6bNiD$Z&v<1!ljMHqwJ~LL0ERYAro@56UjP+1~mpK|c35x`8ZJ8>k+-xqd +zSOIEOVn%?SUMXV}R$;IAaHH~5;zVGS`?Rm5_hV=BC44Y;3qR^hBRY5-@vncDy++fk +zK?i{^55}_{^8#|I4o;{rr(G7EtvL4Rk1%lJ +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 +zL60ap)QiU{Y9B!L&dD(jTz +z)xyM&T@~vQ_KWx7`}-cWd%1oxFZF{% +zuJ&o8{MvGh-8Z69n;+l;D`=CsyqkBdeJkE`;jh{PO83qTE!I-A&jQoa)2|BP0$YA? +znv>F(p8H4qZ1j0*bvyasbV#lLw-B5*&r;jpFnBROcF6~9Qr9}*)dD>*H8u5$(2%ZZ +zDJ|PP!4=_OZMzHmrw<$0wpck0(zUwgiZ{x4&zp%G(P)(K%#K{sxm*J0cMszaFaHSo +zxPq0f_gu$jT5en>FgZE-iU5~p3+xl=3H-&@uV5s3f-Ycup$TayVPnSZ3F~)&D| +zRR?SzFwG{-J0OapFW;G4QC8Ihzv3$k+={tUtPtd1SSwThDY$&QIg5`f=A{yXolz$3E{$WkW2orqk +z7^`vSA2K6a6s_(Y!Y42PC^y(zs05ryD|FA4V&LS-lLojZj58gMTA_Vz$Jem+&L+@u<4` +zx)Y5=Ifc=}1YXV`!{PiW=6FxPi8R7h;MKlI#cSWst3NH8o??YCn@?g(|3>`&=HEu1 +zyN_oZs(>4D^PwFa9!b{;ZU$Gbw74VEhHt)fFYZ3{LxSD0&}Ms8>wnHmYcs#?bx@=G +zLp|6WU5j-s!{`diyYVzw6SC9Lg`AyAUf@e3H3C$2x|G1a++pm<|1Ic=c-EVIkZ +zPb|q^h91GL2%_DQC1Fu1eZ6oybh#ANSvFiy9N| +zbgJj$LLjP6x}3#@(KWa}zJ)fLlM&~FG_tge-rlyaiY3p);zi4F;xms +zn*_K6-KG7pB;dUm;|nm;u3OvRi1&2fjP6i}fv@N4OqJ0UZz`Hts1ReT6{tb98L +zTbJP8L*K!H$*l-+k<-n$Nt^nw!^UN|@U2o7dk=mY13j11#ukv8co0#Vf!6r>2>0KL +zV6=}**qphJGB4suynS=#ep4drY|d+*eAeu|OzbQdB(ioG9~^remvwJ6Ii%&M3#TBkaiAFmo-DDL3rIyo9>B{TiH4|5{#%X>kYz}fVEjE;O86Jy^+xP@=*V?)5q;|Lx8OCUE@)pRp2wsMgQJ9KzUpGF2<*K{v`$6g^ykIAJG--wRSfweIw7J +zbYcJKeHiMz7|}=<0>ud|8~zVy>)1eO%E-^{LFnM00h14+H1q+ksuH9auvMt|6psfB +zBiNbUht@#M09BhV)XF!XUxu)`wCh5G;8f8)JvFvn9yb(f4ZqBRmc&QXqj-@MT#OT! +zW_rU!xHPzAC%I5JH|*w)YfxkzX|Egj +z=@2|O`vPsR-t&1&S$pij_E)H+1z?s_% +zBF}>p9@`SgdI>FXR8A9BZ?p#~f}AO4I8ky!B$)`~0>Llw?M#G|vjuH{SqH0K)|ZQE +zez$ymuj8HjC|fL$#jALhX<2kf&?mbv5jMg|Sm_;rKls5`+5i{WF8B+Gu2z7%=JuI8 +zCC9(o!>)pB+!yDlVM`;uxPtz!JQ4}ywAjTGNG3*mDFV;5m2D*oNqcj2NzVrSX!NJp +zIkg8}kq*0_I>AYjBQC_c4{AfhmZ{l$}x|k~E8*SoIyk60|!Fbo2p(?9SHp}zLE=(kcFcMY)8hrm^NJaga +zR&BU4{Xy19=0q#XquEhgRVvRw_ZM7{76bwA+U3dkCiA8BVVTmwaa`xlE!vX(=MhBm2Ycy+gC~VqTNl+eA}`ctTX0?;-IHl=%Rh@<|O#Z +z&A*2q9)A?OrwJD8eR%EraNW`?`TDNIo^Km@7^(aWhPyXoGieQUo`+<5lBOk#p1wDu +zpZ0!w>|d#MB}A701|kD&j~j2GLa^6Qkwc0ho;Q>CN7LJoAsz3v+CpXYDtdXsPrN0H +zX~SxH%YZ43^6G_#fSWdx*vlDCLe7-bqoBM>Cz$P~Fq@+5&=>Bu6`fzZy`lt_04$03 +z<3sE3FpAPHe^AG!C_s$o58r*>+imIWjSLQZ`q?r;7xZnw`o2xp!9glUk?j@vnlqUE6t? +zXF@94UnO2iGz46YYj_{ajhQd34lu&C6nyut%tf*DC=-oKNmLes>58jtlG~eg1Bbdd +z61+0%NQH92(Zov_i*elRbb{>%x!QT`0Htf&XKCYom@-I~EJu#! +zC4Vr!m@yx7;^f~1u@Yu7zrtc+EssK7z}2gI8#q&#MUwVg?vsKVs0Mdap(>^dWNt-x +zDSE=4HYrLVC!nh*0iB@kS?#@Pqv}d46{|913lzjN5tixY`932pt+@KqPjOUo5~PL) +zxxpoRt}O?!?p>b0eLc51hB6FD`c;}2XLcy{rPHCOLc8-=|#0M +zVJ(rk!h$)?j1GCy_H!Q7#W@=h^)OXlRl{8`i=K2y|Ffl}_4dLBC06~QrUxQD9?W*67cjN)` +z96&GkQ`G%#g&NC_W981zp@kb;CAx+odMvG};|69VKg+UZ9N+M}7`y0qkf$%d>e)X< +zOM+e&HQm@Je@*dYLkQ;H3i#^g)oCygRw;T=0=$uiTPGO6LW#j&Fk=e@X0jpm=YmU( +zSMn@oV;bghuIg0YKa86aQnaYu(b)rNo7{;bSKWyg?sd0~KgaxbY6}kqaSwcsn?x&~ +z|0@LK;c!V`(jK=wB7#|H=|+Cw5)^oxVeHb6BiVZidJlddCGM*SjlU)V*Jz*&ZInfH +zWkLjcReq*TX7OCPydDLFnIA(ds4`MwhU#95zmQA2O&lw#M*J6VUC%paq@h}!iAklK +z0=iO8fRqVLH?@0q@LHsYuEO;2Exi8$%Cza)4+-THm|XW>WV+U3=-EFfkn}{v7HNpN +z04J)T-lTK$D?)D}O+URQeZo3R%Frx7j(5qTvexK|P6Niy7bNI2?De1bCCQDU& +z#3M*@ey|&)1$?tY)s_QoZ#aDtU89d9oSDG#t)HRkID(GxXQ}lExkJT~LpCA=bnLSK +zgh+N0{d?|0(X?NqOA5e_;rmALYlJ1PRAaOIQQ%TPVE*};DS$I$PN|xa-^x@#b{IPF +zU0fG%O%xgdI;H1&u9*f^Pd)5r{8~^O-P>U_p4{p>d_Mu~M6qodBGk;XwqQF}qK9Uo +zOy4$04VD&%_~v}%@=u_H8(S^x9P?&~xF*-|++l&3zQQ +zg=y}&iCL+f{kb8@`Wl@2^as1s(9O*ueqtL=Zu|&R!#5$wQ%)tmlT4i4h9%oSN9`X) +zzO|obCuSZ>xnl?;TmA@ryY6CpoLV`FMp$QP>z!O(@;m{})5w-jqR@9CJAz({Tut)e +zf&kXNi(S5Am68m4L#2Ikv211ig-i~~V~#R)Rb +z$#R5wd?wI4S7GehJMG29#1)_Lw3%o7f~1ijxD=z;ecI~gxwmrchA&iL;C@ZC+jx-H +z3v31P4c!R)pH8rVmY>=(fz*j$n +z;M8#fF2C3t&JwbEv6IaV30z$wuhF7>-gtH9g|K=Rp}aK9QM+_mY1UQHGZ(zHQPKl@ +zW_5jO@vd!J$ztzeDVs54#6+-iIiiduzq}e@rY&k=ST!xabX^-RI$EZ81ls6V$9M!d +zZ9~jQf1ZI#rg}3>pLnz|&gJba_fxuTKf#2d01`b!MoeHsPYBKfVPvS0fe3A2<&6yT +zIqncri&@`-ux6cbOT^+*o6d>zdU~c +zsWn1=*mQ>JBHL8j1<9c^GgI7%k}MI~{z|7-L3f3H^*oEvO3dQ6kEANqdagX+Vm9$xNWV6Qv~W<_p`A +z-@6l~EcdtDcz{QA_&gNl$RLPwqsK9I_>h4dZs8ZX5(#@JE1HQEJr#nU%@uH9bOLi} +z9?jtW*ldcwPLboUPK5d8fedy`@GIZ!n2r|tNb~CkH6-38gJhA0E3c8v%2&I>s5{VU +zm@RfFsH)+rB%l?P)=PjGCxF2~ANWq%lh~ft`!LnB2V&s4%!|0T{c@vY+CzGdfKsMX +z8t#_Qi0zhQoGe5JhJJfw +z$sm?&xEMR1eICDZ`|arH?#BQ6&V5)hyb^mxrf`VBhTB&qEhM>1)eeB;vHD6k-LhZlidSCSQ(B4L<;MaSh0de +zR8_+*hadi4(cAYGSi;v#F>Ba?=E_!Mj~+Eb6DK#~i_>^IwFB?$ehYUT`C|eU)-~#_ +z;NiZhNo2VUpdBzU3V#Z~ZCKySJk}unf8JF|7N8|AB!G +zmmr@^VCh<(HQ`8k`mx99jBx2sdz;G_xF5a=?|CavQe|_vMl#Vn=GexH_9#AoJXW_e>JcOc!v=vIr(=hB|r7;)ipOn+!UmV()RQg4Rh;c6Ev{8X{Ku+KUSg +zOY4M+GM@stE37!rzg~3Ftn}j`j)Q~P^xj{_l-rk~k)dDqc{uSTZtT2@niZjan=fGA +zhkBnEZHt+gKxz(wH2wGF3?l#e12!PDT;Swrv&*#OB|a-moIs?b6KzYE(LJBBADhW% +zxP`i6r4g4Yu+d4n-5qT-OZ>hMZMHm)cvvS1fPPLZt&tEWvpg}tiF0+k_eyS-80qMR +z-au(fTD(gJ$zmgWo_*yk$Wpu72Oq+6^bsrfg)pn@tEZ%ZUlee?`QUFs-~tR|f8Ypf +z(9e~NR1^F;YDnKS(-)c^PCSKw*ZCGq6L8aT6>RO`)qFn8KrFPHELpWR*MJM0dc;>{aEco!Kcv(7!B9HEZ@+w5i +z{8k^q_k6MiRjM})y%ZY`q^urWUtUd{O5sU(LHAb4EKI1QbWr`?*&oxFJ!uEu#iTrp +z(2GwX@bo=?CVu;4xR(*Dm%zA)h`gBYzctki?fgw%@{)o{^Qk1e5LS;IlIJ8%HpvG%@Z +z;%~erEpTZ`~f +z*^j`N{{)$Dd=VLHcQ(UwAy?gq!gV*JeRvI4-|=DW{pWAsiO=4NLc9xkj*=zkugAo0 +zdK9ve{FB`-(q6ljt^-;oCd11*Kqaa5((n@Pc3wlBzZ39v@+zL&Yi)M}(A7pdki&-3 +zd00~Jt)9NEXHFbMfhV4LLijWcsvIN8yMz1j_3-_c)@#;zRd?0JmC`Pjh31=o9<==E +z;0JMAek~?OcTg}L#8FXx=)XW8pYC5|&3f*8^L)v^9Vi}nfp(v@nb*2*BUfQu;83GO +z)a2xeF-#oT$DdUyU|{Wf#JhWNyv;yYT6v3w +zz~hfU?x-zR&cM5?&idC#T^?l%Y&HmWGonO +z{NPtv%G7?ljd9zDQMNn=TW8E83pG1 +zLyW6Y(N9au8EZW7d>jvlcH&tcW&ZESzDOAfSA}QQ^~x#5w3I_tm=<6vtI@x_v;-f? +z{W?{!VuDn7k+7%@cQ(i-&vFP?7dBJ#NLbR=2@86TMFh4OE0WvK9OKu+d2qdh?n03p +zS;+8ZE4>fULjfmA*>_vQ3*fnFloQX&JJ#TVmY0Ti7ph>1&1BBc3fM@h4+{V;(>k-#wP(IS}Mv +zm|M1tMZ&`JwCbpTlHGJWw_2i9?l=f +zpN)Qru3*A=G%a037AL1@W`jAyLYN2}8v&;QTb)q_+3+UzMmb670B>~(kElcaZaycN~y<$J8&Ez}UYD;bQ^6cRA +z=@*R`@uV+|HSx=XuQ+XohEk4d-+iuFwXrrv<8Ev&#L +z`3sN=YQI1>+86xV;ma1I@@Zpq6%*9-KOXr4?xw%n$#0fv`7DP0z@3Y<+R!f+sm<@R +z?LQv*yzwHQ%-?pr*YGX7?Sf>LBOuv@!P@)^!$jCPy!<$-p1XIkxrHh$Ar+K%!GNyG +zmtTHk`U)I~978h5H{`Tm^EF&e#y&u$JAxBab{%7q8la?p|QEmZI1bJ&130{E%PC^Dp;9qAR!NKe?dzqqdbu?PCTcrjcLC#;vU>a{uU51+yS5-{v +znSm|Rfgk_)$7c+<<0(vY^6l;i@nZClb%205^Pm^VblZ58LBHP)oWUw*y!evE`C&|0ocK$YUn$mGgs +z0@ggD?M;2vL;2nGWLDC?4^#VxB1`zqgdSUVI}O$dNN^=PQJAKE9>d}6aU98y@YFAT +zc>c-zuwMcq$o|!%Yg26c(-pQC_u=%I(s3UD${%%v30$aRa=@+1%Mq@R{I1}!rNv)A<*kE +zb%rKM0qI%kvlfp&GhfvOv*;~!;Ws93K}Rue3U;<&OUBb~Ua8PxL6b;FA&xsH-imMa +zKZpr}9`l1Pc_n>qaQQCQbEdWZt3Ung9jSg4!3n6Mdf>&5tb6J`(NlYA;8fSOtx9K* +z7TB3k7JUR;vPs5lQ0HO1?FwV%EIz6WA8E_kT$(F0TzPio+wtBLH(@Z}i&V(-(TyJ` +zWR{QEmZ7SbTyj=j@VMs1Kit(RY0PWS3{E%)1tt$5$q&A6xkF}xT*%!!nT;~4~x +z7dyF6ZO;l+%6aMfpQ`D{$d#JUKReo9eQ&fRLusr}4&&|P*P*2pv1NR)M300GH;YLl +z{K8t?_=8&j`SV?#%J~~~`8I^fagOFCR0`o;V>jT@-tBmzYbR|M->%TkJGIRpnI2Y`Cke +zin`pr3Mtgf_c!9oNIx`*X=C)p@hw=M>BocpKf_dH4z0zCwriKiD)2+9s$0LxI+^@= +zDzDJ!S#7?f>0+;T-TGRVE2P31^yEA6*6}N`J~2%Dt*`%)HGcI`X6vjmsj(DwO-e18 +z)-pe8^XuMINKJexE)v!yR$?&Ii=Xs8haDaJ4cI7$sBoyh8?6Pl_TDwFxY4uPe0T3+ +zN5gk7<7bCrF?UW$+Qe3Al) +z*>oU-SfK@P8@&b>&aT4aeLHZZmFM+1Ek#P~>q_U$S3LJA4`!Z7208o=I;BiPpSB1U3-+s;2tO6F=& +z-Oh!8Vnuw&l4);V``Ef4%=BT))OuVnH*8z1Df-*ec-#3SC+8}hQ@|b5Hgx4y@o&S- +zYOI@EftTYW*wuXihvO$`Kl!p)lPk4e;H$h$>)CdICbOs07kKthZ2u?<) +zk=A5IuvJD|zg`D;06IGLV%I?exJUpM3-Q)s3kEr|RwtI>yu=Xtv;27`{^baCzQT*> +zook>S&w+dHxkrldng^RS*|J>52wh3p)Tx#P##$#Z(mKhGn8s{`zx>11ULi#@pxLLwd}ofx&aGao0g-B_0H#bCM*-MMy~Gek#wKk87Y(ecA!xsor>1G{# +z&(l*70NvSk^k=%TadM4;oTjNsgwsgUWs}<`SIs6nE%_K^hBW!csKxO@3~hF`GR<$q +z5qtq#U|F4v%7yf{zA{qS_G_il3uNZa>j$`>lL`Q`rFkx%6x0DxdN{55D3%gfVz*E$ +zl~L)md2>RKnIpj_Y67evkX6nG$m<5Pv0@)TAAmc4Dgf$MCPz!Cf`_y#ahllR^*X|J +zhU=Bn)O@WTR{_^b$~o~a?N(PV-!bLScV+dgQNF9^%7~u7Z0&R1m${6#GL;2~zr515 +zJbAQPuNm5vGLA-bw7oX{W$W@?hqk|+1uISWz%i}ZpY}K4FS}TNEjWI9{`6ur+_Ty? +z|E +Date: Fri, 20 Jan 2023 20:34:39 -0500 +Subject: [PATCH 03/19] Delete icon_20pt.png + +--- + .../AppIcon.appiconset/icon_20pt.png | Bin 876 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png +deleted file mode 100644 +index 9e63277b698ea6100f5d93a59e003b8de1e29965..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 876 +zcmV-y1C#uTP)Px&CP_p=R5%f>RLyG>Q4s&V{mAY%#3sgoEv@mZqNVCZ>PZAq5IqPAf@d${zu?tB +zz>|0pJctKx5vkBaMNgvkV6C4~Fj!*I)F!4)cC#PPH?!_Gl`0;bW#8NVy_w(4yqWhz +z7={x6QH&r6{zw#(NU1%HHNGW0Xz7HV;D-b~6Ew_#PA7=2h +z{sP^g3k54Y<`^&>Ob#E!>D|XLXy?>gY?F8p&1O?3gap1?s^aF{T_&RcgpB5XaSR(5 +z_n*f^X%CYoYogI;q^hr%Kj6mv9Z2<%n8LuYQNk8I&;O0EiF)u2zKpj?sBO43aRK9n +zF?E?nVdZ34i8^@LeTG_Zks(L7aOJ>dqPRT|vp?n` +z6y5K&Q`n)K5C(Pak7lK_Mp!}trf$MR +z5ARh9D_R$MEyt&Z3^$Ty)J9e5Qdii>pcEAlL;<+UQ4nGrJJ?%S^KiRaS=TB_>-5jJ +zTle7VJyl4FePSm=Yeah5P$v@_!N1&rw7`Ml;%NpgZKYE|>#;u|gdFs#sni|ivj-u=h +zrMn`gr>9dwLTmOHJSaYaugB*#xlNM2r1MJOmdxN}<1otZ8X4J(si~=TgameU7tafC +zQO$jZr}+e>Vnrs#+M_tMycYwZo#OPt&MTEldVT#KO(Y^TtQJ_lfJw5~?PU`mnNa-i$vW(uOiBw?#0000 +Date: Fri, 20 Jan 2023 20:34:50 -0500 +Subject: [PATCH 04/19] Delete icon_20pt@2x-1.png + +--- + .../AppIcon.appiconset/icon_20pt@2x-1.png | Bin 2110 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png +deleted file mode 100644 +index 46b16ff10e209aba01af4588659790ce8172a55e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 2110 +zcmV-E2*LM>P)Px+_(?=TR9FekSX*ygR~7!wnKPb?XU2AIoW_YSN?j+RG-)cLRB98UQi)2m&^H7~ +zJb_SO`UKDL0}!I{ROm~Qs6=@|LM@~riYOHkjY@9RN!ldM)wN@f$DWHl7tcAYZ=YGm +zXO3rLJ1U56owN2?d#|;>{jIexW6O125C6x-5rF?Qc%J9MvMf-tXq~cKahlDh>DaA9 +zSpOgcgzZ^ZaN&Ab7wzw`@qQhm2I0P?S{WDSuHar}0ZX+a3adray+4`7K(Y_Ry+e3> +zcnaA>#^`CQtWlwLWiZ;#J|@IEXw-lm!iD{so{PWV`T%EU&f{v~W-vLKCM@}*3>WGq +z9~#Huktc9;^vj6H;(<-4@f3^tuu7$p*KG!22ORjHchBLESKh^9bxG|*l6gdMo%4y> +zfn-0vIrSW#+I`5MOoY*pv!H4fi^cXS2Tgvy5M-%d!E5KnCsBUJ_0&E5J0CI`mx +z!-L;8q1UiRoS9G4Rwxv@c{H8wlxFeT#WxLWGGWOZ-<8%WS*TZCOCy4fzCknv28GR+ +z4}KRTy*o@U(ni6C!))dA`2b)zq%^owp2g44zK&Y6E??^mur2!8gE-Q5(lo8ORn*Z4 +zioMiXU#%7AS@%#4LEZ$rB7nYmlz+Vu3@w+EGhF2c@UI0Gq +zq~l3)X5j*^R|K3bUHu8Gz=X3C&u5;NfI0zVVTY`1m^7Cr61%W7{sp|davC=pGp2jE +z&$Y@;d~okP4i6m&Y}KdDqb~f^*Xnrtv%kT!ghv5rBhS1>N=;BnH%w=Y@em>iqH!+2~Sbz#Ln@@KKsEE;ge2_4DvP`nRc +z&mBX|_6HAxQxFQMn{;9hUJxGxPOb$|;w!%S6q?I8En|nV5L+9ARGeF$mKn+gg1}mm +z^=Gq3kakjr5wb@Rl***aFmSDhCy +zi%tG{7>z%S$>f;nvz1qLy9(zU?dfZGbqDS==FDm~K4q*=t9MXdTM4!+`Y{aB0iWse +zRROn7yV8H4cducrTjuq5+*DYmbp;7P+ +zL=m3#{?s0^w}Vw1Zd2Rs%6;PV?aF&HkZ;MYjRBjl=i#M&B_nIL8B)nobW3Knnh(*@ +zC}}5Pbn6EyrNq+d1y3(p=}>5x|IlnKvuvpB$`)hs4VhZ +z>y+Cm^u5|#G$uYgl2kS!RzGb3U2?{}U}-VPZ|2T_qnLd*_(|kLG#FYF<%HWpoQb7@ +zrXOxUC*-PyvH_?p5vbOcF=ba%CEDI?a%EIt$>K0RO%7Th25vQ4+8E4ODSs8WS_zVe +ze%V_=F82B5At$o5R>BIZ5;1=;QNb0)h(WhKwzU0d>PL1x#AZz~+!m(m*YI@aN#D~0 +zyrYZ~;B;NKG=giTlw9i>8W2MpKpJbP9wF_QX-H;jZEmmg;9IoNg62h{a!D!)zyhM-2{QQe15ensB=oo@qScFBUQ6 +zKFCMZIA6VlU)*~`)^&YbXD`_!`>)QwVSM;L)wdrZj%mpt%3i=AK`CNY?yZeumpg1| +z*AN><39^0}Kb`v(E>^E>Im8!hALA#Vy^0I9%fW;#Mo1=3IV!oguRam5rx7)TojP@@ +z;}7>$yN2KO{{^Mkio{r)3GKQ%`OWm%o7{tA*~54;{g_-r`=|~|VQm>7u6%^|OJ{Jo +zdOgqwmDaYB^D_8O;cG~_iJ&Q5u}+>m+4TTjh%e#y1Ahe*J6Z_P-zEK)l%2w$fTV6w +zz^%HgZSC4O7)&a0*)_gZcn(92{;2!l+d6ULL|_wWLluJj)8P9kIX;ux6lGNPDx(vK +z0?ajg@nZg&`+}n{>-h2G_XWsK4EH<3r!kY5=jQ_zO%KYE+7OUNMj_RP;?ZW=0aoG%Faw+hEg<0+7gTT#gMrW`U1NPaU +zA2(0cspEFJFMa6Qs=g^%qT?B5 +Date: Fri, 20 Jan 2023 20:34:59 -0500 +Subject: [PATCH 05/19] Delete icon_29pt@3x.png + +--- + .../AppIcon.appiconset/icon_29pt@3x.png | Bin 6581 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png +deleted file mode 100644 +index 05b0a95ad4a8232e59cd3b0755ba60d00a89ad30..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 6581 +zcmV;m8A|4fP)Py3Z%IT!RCoc!Tw82h=W(80a(NLcQWB{PEymStHtQWPn2 +zNiMl0JKvo1ot^XVIlEj@vVY?2%s(^#T)s2s-?KLs7IjEGz!nMxp@=*vMl*fv=9)>X +z{#&(gmRK`?&Ge!F!otFWu8Hss!3>SVc^E9zhyGf%5B-Jfm+QZozc79{57&qKLbY05 +z%V^Jd9}!9)9I`Y?}X_Mtvp +zf4%2nJ)!@?+}xbnENxo|oqgQJgvp2VR`a{j_JvBNlDjQ51Fu+LTu4&}>@x7_vZdbeP=UrfkTIL9Cjc~iFdkmZZAsks^XVC<}1 +zm>ib#dR#0I%fxJ1X67m~Ge0A<^Hu3+YnQIJPU$Lj$;yr%S>Ll(hI-e^20gZ}-Ynhi +zovDoI8$#9!iV=3M3EczNl0xNqXPU_trl+T`+Y{PSlBEr@0e|B1DS2!79XU4guDpNc +ztSm}YxN6k`sYUnL=~+!vOJ48Mr6}80Z<0F(ZDs +zwnw(~Z_M2WLyyay7bYhs^RjLEOy?zY_Ud_g{>00A`JdFnA}eg?;NxvQZ)qZ@ZQlCE +z(85i0qVCi!;|n`KC!6|)65n~uvO9NTVj>sZyr4^!&r~b&!pT=;@9EcU2`_a_$n&!2 +z762OQYrSoPq>J;?Z49sX5B`a*pOIg_?Mdkho&cj**XOY?K0cni=PoD2vCHqtKOXsx +zjL%MHV^fDk*vf%HFtwIvJ8OjS`JnE~$XMUs)hA!M`x!wu--u!0UQfs9#P7eiS6(`G +zKCXeumHMHwt58V|mwEU6lIn +zNZ*P~%}vWUj($r{jGn5yh|^HOby`xtzeW2ou?_8O(B-8c_}7fMHAK;)I}rl9W6d`C +z{awE)D@xsUbyLu+e%g^5xV+V%@LK42WkSAo_@Crl`C`00D6a0FFb!UK8Rs-w?h{~B +z`*b?Nsf}{kv~s=t(eB@o{?3)x0zuuH!szH|-l?zK$HLX@wo6l&yIwINEcL>REml-27!pxVJ^I+c^QWu7#kF$nSHq4rw4%l>{Gud +z{T<8e;KInrNR$l{(o@Nz5S)A-*wfV+`I{sEpj*MEx?EcocyKxkCE47*LDsbONq=#r +z^c1_LByG}OXp`#Vyi{dg$_vvnwlFE9^W$>1dQmEivl^0T2+_$$XUqFHZBT1?W!%)W +zPX6?s-?cqBuYUMxGz!DR!wI;dVI#1S?APA>XE`~3+LndMhsg%DM%xGLR}Xz{J+h^J +zNVb-4lA-oNHIG19N=}GKwWvx{_MR)l7GF +z-6jur@0NDmM{o4N9{u0bhvm)6yN&ZjGx~zaEA21!%AfE4L+LDbq|$8$Zjl|6T9q?_ +z?GMlHm#bBMNvp}&)q$ikj>T98YKLZCC>G`Mp8Mso757Q0&~E!061%ME?e61;lm8_%dS?;FK{Xhp +zp&!)!;NWf<>WcD@tkaJG7V8MGbuI#B9TrS=9N#d@MrypyNsIBD+%fGe +zbjX+be^EBJue0Frha_;2Hzt--MjKCy+I^UVdY(31o8@m)X}x?=^FThj(MLck1+PwP +zRC(*%n1V;$s2>C1WgXO+kv;&P#E?8F2G0QK>B+NlV&Z+30&G1rU_uc*mVtU606g9I +zsH|!4PXHk>*Fq5$>o~~M7l9|(kW&U8c_5#n0T0iyvZwE%x~%|#(NUn+ +z`mPfmSc9f`zn)<8WE +z8UC1DfBQ<=(X}>^Yjx^oB+r;$cJ{Ew`$LIq{wMU*EU(DdE?TjoVBt($SDJF +zxHv$87X~T#)GIUy{Fqs&$l2Ko32+3^Y;f7cphj~5vM4(`BVfIsR(K?iK^pR=bPu#6 +z4ecRE!PJxYAYjeyn)e⁣b#gg3PuBFgjQ(^}uCXzrWU{uRKFv(F#3RP@tWCOGAd^ +zY~^BV-^sf~63`VFB#A=u4&S|=&$AEZevRitJI+xkcndu +zbbdY8=Fu#B%JTdp_LkC+bnCY#r}S#AjktIf&&Zssz;;x4WAtBfM=?65zLQ~dHpmOK`?N}(50Xl02X|FZwqHb9czPR8a;G}0VQtnB-12-`En_eZ +zWB?p5uA>DRY+s!MrWWSfIe>r@M=;2PUhjeYlX^qv8TFUr&+0-`&KrU|BXbFuC7{{&4a-C*6Ms2}*iA7jDX^9HULcz#a5Az-&976fhysj@n?D>I3v8@PV2 +zAOwSjlbWj*A6i*UTT+C|; +zXvhMuy_t>L&Fk+OkhD)cJ8Zrb$znZ|CZFfCRr~zNBGtmYs!@}U;0Zgc{!%gefHg1I +zhT8%@?VOmOih==HjF_UM6-L+DBD00LWdRHK{xZcJiBpDoI0!l^^qvpx8_j3!Ifj>_ +zIjWgw)DL{{B7%b;lcqYCLei4HY3N@9(uq+$!KRB(G#Yq9?=Fg+(f*oOAbdl|7%89e +z#IGe!8rstr^-J*|`rv$Gpp@mO*_J$5*MZzo)2g +zwCf9NI&7D4&0{@>1PB1M1SXG$;B#%>$?-nH +zXW3ImTgLdPn*W7D)=G-CYYKg-W~3ibj8x}BKn3`L;;P!2(9!(cOl +z_xPngpbUXnBYjDCA{m@DpOnesvjiTmSWeA;D7Wc5V;muvEXF56+fRbBp7&?Z$~3-H +z7K6)L*{N1*Q2(GdAFp=g9^#jJLZbnT+#rK`N22>MUZ3rZYtp*<(KPE92W(AV=i2oPW!8aj +zrVJI=8EDZ5bP5bs-~dLX%G()MdSv>zDzHSi{)_`jK@RHqEZZ!ZUjrV4)bo&0P6|DI +zk}?laAVnj=E~enE)|e_kR9tJ{-0{GgWA{+>N_HhEk1YlLrJ?$?vlvt3<5VII +zl7LtJ@NQvTzfpKH0gpwJ!pav*p8Ak_0KkU_>}lh9+Id;%8*_{|EAPl<&D-ikji|-Z +ztopaeP_oyuF@YI)VrSktK_KuPFuX6M#hL(+(BNMgr%bX~+5QV8n#I~TXxo@2OTg&qh* +zYP`-#k>v~Hdu2}F*gz4>Ied3}emOq57WpAh)P<`qp`M3M57bI}muxqDxCMZ+gGp@( +z4FD#2P=DODpy0x_oeE1qXEh2w{2O1KknfDWWcw?M0WewMco}UxwIt)c5j=d6(l4oB +zN1i%R&qM$G)qmGt1nC!E>{X^#5YtqxaWi?@-HW%Tn$Hr_2VjOl>>{{=PBjbnux7DO +zZe7&RmoQMA9ppjdqGO680QQ0MLD@g?KdC1$=rCApNU1X;eE9=f50LD{w#Jwuvp +z{DuuKC3_P`&pN4ff*OJ91|!d2`WLx0f7yUT0-xl8Jib2soGcXd4XOs6>T4j6`hf$m +z3Gp#Z9O%&7eJ+ig(Z^Ub{B~mX|oF +z=bNotiXI*N)$`BF#3DX;)%@ZHv5BtK{3^M3 +zc4sOv1hz!54Im+0RvE{{;*|W=#c#;oiPsa*vH*c|$T`So*+S+|fagQ|eUq=tUuyhG +z%_A#6YXsDg{E-J0s~h!ujF2Pd9OP+J_uc{x^XMa$-EzEiTFS*~GfDPbokjaFR|05& +z6a`1I^ZNJA(eKJf)eG|FfzL~azPv^v&@nOcpjji!9(J@3X+^(5^Q|jCkpCF}aTLep +z10ZQ1A#R>5Y?OIaUC%ovItM!Znl?_V3^C5Nc?fQogq0h`io)w3aOMq_+^=oMJYX*2!;a +z7vHzy?v(%KOb$)GCI5E$1^H-B-~0~1;>k}Mf%-6D4DP3AcFDt2_k`Ld%?tbX?IRpZ +zT0kS+%H_NLd*w_i`p+OCmQAsyqnHks*2n`ZcFFxcyX21U?b^-ubP!$23IH!(b|xqX +z?nvIAeoqdSkIEb6BZ99Ph567nmj(;q{^q&$^6TS!8eUns{!~%eyLWFb%SM(Nx=L|Q +zzP;)d8EGH0hCo8`t`KdtOgLk0C_)l6$7fUb_S_*`^q1^I+S&N+SXZIbetV1G9#1dK +z*rk4M_M)88e*s9j0>3)?xb!XbL{D!(1qW}??Y>wAUgr56y`6Ej1NFT5!Fqt1 +zP|s(_x3@zzmc2n^>(p;dYd-b+Zd%8$U3o%Q%y*?~XWgV4CBXtR9N~R$>YL?Q00Ry> +z%3Dl_{c}C?8^e2KU|v74W8#2BdE8Opj~uAy^Yqb{tG3vB^)MeXH9q#uc;*+eWB(=x +zALkS5eNK_Tf(%sqwT_>cRn=ZNY6>3fCq5xHa48ItZ?@Pc&@_ +zAwxiUGhVGeP2*_Oz*Kv9cDeW_SPiPI++bE@{(y+U3-bNW=tu3S25k +zLt_F>@S*nu>+osugIDg9q3Hp6W$>VsOZss&MubU?dYR{GhuX0v#Aw({Yvql?UWavL +z#71@=J#;d<3e*N1IRl;cXqP@Y{D5qpS#K5#`1go9mQz15f}g@mFTIre4}@q)FcFk8 +zEDi^Cw6EwF^WIqfwjAw$H~CC0T=PlH@rrQQ_^tAgc57)q`r0e<2$3H4#_p}l>b +ziBDosf+slS^Ymdb%$X!8{ukIIBfDhh#1?sN;D~(Ko&R+qTlg_NY@S{x4`04V250pr +zsn*%GC-LiDf9lQh5FFG>8S8E~r=6z*l|K3WxzEbQj!`+Z=7gN?Iq%gU3%|8IB==w0 +zDeEfu-GkPJzn~eyx!J`wwg~H*%xMRj`Z|+WWbt7qXW2B8p|GdUJtS8<%W`7n8F^>r +zhceL~fB(19!fVv^&UMR<$(!Z&tDB{NHoCpSOJ$C*Qz_4*t=3<7@x>Q&_uMcDlEInd +zwh`)Eox|6K6{GUOiVJdX#fXe_jV)_$#$Gx&vr0Bjua%q2>+MO^=fvFEePKPJ-me88 +z+K2jZ-f+*&3dY3XC`%s(Xf#K%>&vTU!&LNNH}K8$;qEaRD^1E+$E1wwG2N!WnJMc3 +zZ!A{znAb~9|EJ?ZyOfl6&v#l!uAW<|v`5xXuab_%QgZ3~E=3-Q$L_lLz_p}MdES{COI;of^UtzlPN8qi!}Xz!?YVRsDluP* +zjy9k^8S^Q|V&wWML}&_C@wB|xwx +n51Kc)7JBleS!=wGJn8=ff=QlYg1~H;00000NkvXXu0mjflN|$p + + +From 805a752bd636c45f8cf0366a265bd12875dbfef9 Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:35:25 -0500 +Subject: [PATCH 06/19] Delete icon_40pt@3x.png + +--- + .../AppIcon.appiconset/icon_40pt@3x.png | Bin 10507 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png +deleted file mode 100644 +index 68f41228f27e0b684d1bfcd8fa2fe7452e519b10..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 10507 +zcmV+mDfHHfP)PyI#Ysd#RCodHed&`N*O6cLoEQuSAWj|tFOVQbf}|wUB6O@oN~Bi1OK(`Ry^?nw +z;dO)~?C<{KKfuQa$J*cQaIC#{tizU9vPIbzNsF>2QW7ODwY<$66b}#}fEnB~z}z#= +zU%vON&dRRp>K+UrYQvAL%6xer?^Rb<_cU6oIwTLEtyW7&A`W;tM!)|1m2b*nz3nym +zi~N55_afg~Sy?F>93B4u`LBNkhPVol3UR>o7)@7zCVx>s%13^TIm$`V8d{cf+{EM{*{T3RG +zKy8v=f8n@l#DrpiRXUfG)^B{5TK;n84qsLI^mU1j4UGny61rIZ^|s${JpIbYcrR8z +z+Kcl_`-_WDCBRi!MzqK1|0R` +z3d0Q{bYWl?4q=45_(Ugnk;6ra_XjR6@Q8j-P~Q5hW^l?}syBhE`b +z8vRGf7(eqSguKV2y{I4UuSLE!H#c|5c5n=Ez2_{*(dkKf|LhSte*T0UotczlGgES0 +zk9lpX-U;Y|6szAEfQLq3xoL-7wP~kZy=j-h>$mJSxZW|Zr#r3h(%EA>lhe;`!pDE}}-;>lGU|%WXSumXGbY +z$>8>}t!?HyU~A34AJ?r57cQ_Cje3sDiCI`{Jmp?l*=lQMbXRPidB +z{KkUEXu7vp*K}Ga`J&!wtxRcZ+RlyJ<+pFT&ze0rFc^dRmCsuoj>=|`!-O*^=W-&u|_rJMe1QwQanuYFG@&rhim%Lpv)IK50~TCz@AKnymA>$c2q +zUI0-)S#6)o_M*RC<2&UKZvS1medoTmO2)e750NH*G}w!LYkGQ`m5BO%&zl@p@v&3? +z>l^<|o}Q9cm2bcPm_3L{jf74par2fdJ8F~6f*URz$lwTZu +zNyS4$i{hb(Rb!pyc}vcQvUi314nkE>j@B99y;t8Qe|!H|Wn^HuxYLG0U42mZs?j7L +z`Q`%+rok!!@2IKaUbYTDJbg_5_@)0MQx{HFi?|&CfkvO9L7nAoFQH0@!C#bV^4}|e +z=h!y+`yc;(*)wrfbg^#ps#scQ&YUTBa1>ZK&)LxP$6t{@ef42k)MvzXm*m)>7(;x` +zjC|hJ0%An@CVqQ4RPUk~U+4agl(xq3z>xgm{=X@AU%5YqeaYt5U^EsZ?%<||H_3bc +zPY(Y={_KrMwCvS|V}_j@s$8(xpm>Fk`eB2wAxB(AP@5ECyIpBsj;<}6OUkqghz0kJ +zTOX1y?76p~5%Ki`E!Mw@PdgsAPMtbcRJ_SRjHZ0y(i_-cb_ovSdb1IN}x>S +zVNM<(Mn}Q56O6<7T4}~@3VoiM7EGV!iufP8;eL5&@0Ys9%D4eBm=|Exi1LsrHMmOY +zVrkz#_?Z0U$TJ#Tw$#+2=&(t?f!}w7qP-YToQDJcTj6c?eKR!GrzjOWl7F*LP?$D+k4SQX`bQcZc;lC9~ +zAx7kb#>>Y~kN$&a6z!^vVToO3{|K`Bv_*L6Fh?Oe>`PiYSN~QQ0o}qec_M +zL87$(2Lf<(i?LvU_-!>>Rj423v!rykL_f#su4|+Q8#Wr{u$> +zDLalWohWuX_>7-8MRj1P^;CwJ~IY6^Sw;UVpT51c)yk~f*D +zsi}%(3s&c#aX^fiEa-=4j>*4x`QHgXI4~J)Gn-O6$XshfSzFuw~ +zzE;KtMvH<37sbM3+>u|E$Lz|SyuEl>4lW*&No_pi>(CAPb&EIZVorHH1o?+|{XN+| +zeq|xnRPREt27!KSa&ofveQ>`H@D-VV{?Z@IiTTs*Vq-11D;g65#E8W;qCZvWUq5`c +z+%tNc>>Ao;l8rXJy*1!d%cteJx!2{r#Sc5Q8*5Y%KNm5K`Pg@E*e3tz6aT=Tcy%~Z +zLX)pb{_*3-dv0)*Q&0QTgAdE|CtfXfA$Uv%FpZFL(fwvV8vE%DcgnWGE!kFYpfYh? +z-6(D^gZige&dJYbUzQJ+j@9aREMU!#wB)OM{`c&-Q~q$@*Ln%7Cz%!++>>O3(9@GI +z$e+FQNT*cHr&FR#K{V6>NAXRqjq)2CKPh{Mcb8@Jj12(9@Vg?5tSfkD@rXP%`-05q +zjakR~jGmZF3N3Ow=bHcD+WS}KGrK<7$y)=(ZnCJ?Z(&&2bBi}f>b>s%QZ{t119WccrWOG3$P8ek`c7D^y9=UG#D*5q+=j4rr_tJXI@d7YK +z^AqwZm=LNOD*v$7^0qBE$(E6ck_79`yqfw2xd8~_PKDeGw-CqF_j +zLmY3r5Zi;B^cx&{$BvwtH(`;t@~jR$=D(n|eE850;HorOZ$OWigxmx&r3W2oHU^=S +zE$B#|eBiI2d0SpM^*XdnhJ3(8NWhw@D0K1Qp|GJ0zD`qqtTifsZS(!Ib1>aR(H0@( +zJZ^g7m&hhMStw +z6ym_ciQn7un?-YBuHS)XVE}r(&W@Myc%8g&Jn)@^Tjd*9{FXgbx!C-DO}>LGqt+NT +zU&~=Nz=_J((!lF30pNN0r%%2pQ}g<{t~RDHH=T_S#SaJRbJ<_%ej9YWjWE2|7 +z;vf!Kb$A)z7=*x~L+EWmrt0uA9;Ym9Mf+O@Hp$m@VQv}Rq+G4j8uGVVjWtLZ$I%wu30Z8)M+iB}c${*c20V_Y1p;~4LhN6g_>ycK+|V}BWBx^LY;mBF*i5VP +zqp3gFhek`KKCmZE8xleEb%~~7z`r>4vYc5wmm8**a`S9ADxUUb=h;?i4xadsK9T?G +z#201j&}J)?-!&d*Lz)l9ScHtlL-GK5lp0K89fUFCX$U{ml~oQmg@`%;%l+t%6CxCjG+YHl!K+x?2ccFJ|xLHN3 +zUk^d|yAU`AA#fI?n~jU%c^@9{X7i2>`{Z`bt117qEm9-Pc&d@6ulG5p1vSTD4{Q=n +zaRGqc*A9kp9KSgIa?vELzLbPoGhAmGB47ka2t2LU1SbZ^<;xSF>1eKUi>7(JTR}a~ +z>v)_pp5}4#BWzk=u;B;vG4MWlv*uWrztsZkRmJsfza7K@aj>>l^IU)SAwu{BjRSbs +zo2)8@>811X=FGe1+=9u0Ag9xLVx87wp*d;_l=vEaU_ +z)FXtAC?6Z-Wjr3`>gHYtxF7pQu9q7}^ci}{-*$uT3Y9LP;`$KCWC3xYc6czPpH5rt +zwSjg0s%m)OJNWtO*HZj70b4OOU={-b8V!N!fe+RJ?;rnEvQu$pa{zHbpU~sv!vt`S +zkwPD5;N}Lj47%dARVXW$1!`q5Q0GdA#80H+ry-YuNzxLK!9=RfC)FS25&Nuq9 +zG8xgti@JjT;ryhWT0C3XOy6v%V_>IueHI;+-kJTt9BO#EX=z=;Irb$65&)hONzM22 +zz&|_w$%1c6YdFz9REZO=!Q3TRLC$Y2zOUJ9eRRhHVqozbEmsgZpzh4Y_*ToCvX&xs(LNDX-DCg(M`Rd`FsXn64P@P2M!YNg5g239JofG!B@uAcAOa7)o3ilY!1gmriw-;}$Y +zs7JUS_N#1>hI#^LU5O+2qxz*jtA*7Bk>tg18zZsWH1NyyvmU7ZUIzSjeIE=X403Am +zlzz2TZ`09>J`TSM2h`#I{7?h75daS2hOFV_ZFrofJk8_1@+n8i8@jriygEK|AJm&c +z)}*SA);cW-V8TsWi={I?(1Xc^lSNrXrnnt5on({3**dHqR>Ok)MxyJP^!X7ix74ggV*(P^vQt8tCElQ +zXdAij9=b{nEq!P;GF?5fre-^>_f%vf=!vu}`{BZ*?9>}K=1&OmhgJYF)q#tH4A22T{r-#l4e)nl>@z^(%gS1ZV&7Z{y9 +zBNr#|yZ-44jR4}y--y9p5eUIR!x2$#5=d1z{+wj@@Re&W91E1pr($@T`R#J@vcw6! +zO^2`IQC1H~ld9CY_JhEF3*$|2YyDQC<<-hps5C +zEHjo*2$Dqvi8xnc6W`kcezEfLk`9}U1$fhF^1owvYuYfihKg!x^-?X{JG!NRG`FC? +zo;xq21La@It*Tp3TPig-tutFm){qpPqMAI4n&!mYD=zWTV2&6Fi$@5#Dx5SFkWHX0 +zi^{o&5y#vQ+9d?fV_2)QlwpR$8JZ3E~?EHWWo;;)K~$0hk0J2INSikk=(nNZC65 +z$fr%h=#O>@q3;_;y*fxeLezrwG@9BYuQN8SfoiDx@llzhfC%R2Jpt4EC|9_ +zHgC?X?&b*G@*tTIvS>1XlNm+9XetnkM|tS50KhT2&7*$wM_msg!+Djw=STn0i+l^R +z<}{+0)}o#T<|z(GA$6KQL$>mp1}@X^=|_wMe7i*ZEzNBXMFu^$GM}GXgQy4klx@=m +zVPfQ{R1Dq4t{!c*FDJ195c30mDdXwH*$6_?J@h={9x^xRM1Nk6Hc7*rIH9Lez8f6F +zw=VMzz~V>k05N#K%7z-VqTbdM$h(Ef-uZr(F3}J+CmBZEm^lyzXtdI)NcjM2 +z3qm=Vt124!R+PMuC{G&Z7*)EYMHuDHKsZsy%aTUlfK|h4k?Y0U +z74@yEr>iaGu(_-!*}nJVarhqc-HyQ^U?|{vkFS8@%{5EiTsm14 +znS~&P41ERlo~CiZz#eHZKtF_@Mw~HVP8_gm&<-JFJWk($7}4Hwtpyf6Mn^qEE$oS* +zhS7d<*s`x052w9Z*oLj>2ehuQ!AuZvTWgCPTRlAwpTi{bGXJuKx`iVc5 +z#^|RYkY(`DCC>P0i!j>9+>a`IYzpLP$3yz`cIt4**4bOqKiWI3wcudw2+?@M-LB4X?72m0ahQ@4DM&~K!tMIoQ|1Vc`#2aZntND(yab7(aD={y^yO(D@0AbR +z7=ZLc*o!^L_ye}62fS%emNw`c5H&z8`l(@*wO(it>=j_ufjGOqO+tWB1cXste2T+x +zf-pcnAcoh$-1864zh_@~hYSXxP1gD3Z4)Pqu0Us;;1Op|QGP9R`aU@Se!dFk8o-|( +zX_gU3h_T?3zI`D5%24E0#ntr^4Fx8-T`voW!rDj(0Td@g02{f1z?m4}!G%NeTaK56 +zKN@Go8Dn1W=ngKtU(|%Qi{>f;S3JaGS3V0S(b_9O1ie6C*c(FA%NvrmJMN+>3<2VR +zSGKmJmrApq8Z`foMjblB+>dv(!53ENWMeCR@Id>N2mB}u#Ko8p5AnMAdX+!FGAr*a +z=+|ELKed`uC2rfq=$`Lu4h7Wzs@9HDZ?d6ETGww?B5)qtWsCh@Rr(4n;!sa|STGqT +zJg+`P7LH|=es1>F((58#moNx{vygxu2M@#3DC41*F@No;1l`@(l+e{`{E&dVa@@(^rtIi)WPfJYE(Bnwdj&4 +z8p%Nv&~PjSFyVMro;m*_CZ)k*0D7E4p5}4#ebIe0XwTDF$bKOFK%T?L06g0FG%uTS +zPjz5DtbtZhV2MX)GUgXGRR4OQ2W%?h@eSo$UO?hqcQAxtfC@JZT$6%OM=2aQMi>be +zjdTsQz>J>)JhXUJa9m7*S?oF+NSrdjeUUv59tLIW>_xiQF#`=J=)b@4q2_(e>SZ-S +zjd0)z7NN(9_7-30@WC-)3sZw>hf5qVEeya{=iZVRXJ0Qh6LgGz8|-yFUbi^B +zjK}Nbo9Nz#$DxNDU(sAS&?pQ*k0&Y^83WXVHP)qWwP)iXMZ8=8+8>}+C{WSEjVl}E +zM%kmz)in+bLc?=}%)sQ7mgQ5x=_2#3(~sE)81Xd=g(0n~xXDfS1NXU7RkCZL^=qH8 +z0^+~`#0UG|I{hdDtjs@Ej~86b^suxt1fGu@Ww(s4julOXkJw<}C*l@Ow@We&d1H61 +z>ZO7Ww4e}04lqJ1J_1%5!&Njxe1ZEvpZ*?P^fi1DSyT_vRLt327zfS~^+6}i`E%f=zYj*u{mZ7u8ISK#(O?oG7|YpmXsp_V8pi%O_ue(VK^&5)CSpnGC8&Uk8!toZ;yb?o^7y}(sb&4wO>*Ns#I=T>IqkBWekJybAJ^ZX_{T^8l|H*YLN~?kW#Pd9&Ow~~2%F@a_|aaR +zBUZ#bmA`AnI`o>em$M#fYJd;U->bVSlVv)ZHOis))|lqe#uFE{Dbrx<-=6rEygv7~{M{XYLpHd7x(>xh3~U1N +z7#F=oXfdij8wEYmARFyReaJ7imgGN7{Woi{=dVZp__I*dwAXy-pE)ou&`S-j5}-0* +zEChMu%VTo?g?r=&8~;4*WNcaXON*h^gR+UIGaBC8z%G7m?w9g+wtrPVwJH6=8{%LS +zV1)^J$XLNA4v699jNoW>bJ79v!ToAUXzJYhGtFXL^A +zkB@y!{$Ts>%C#fqOIM7msW8rcC0b|i(ENw;&6D4gmuB(f+;#b}yLJ4s%XW5&{;`D{ +zM>zU0ePHa9KMB&`vxTC$jn?|pb&rf_xKDX&^nXrG(ro#RjNz?idM?a;H +z8=snfR^HaHy0-5T$^n*Voz8r`om{2l{0H@)@%a5S`tL<8ZLJhrE3x&&6HjRWay1*Q +z#05|%esJ^yd35trcA4!cKp=GVSNWvDK5;;dpl$^GW6=0<@jJ%$>2ZtPyy1r8FDQ~$ +z^BI3}@b=t$^2+R6^6Ko{^5)z-`USc4Zy+~o*Gp8zTdaCjv%K{3_0YM`$t?@ll{Q$k +ziaxOi;1RFekf67I_`@F-uffq^)4ZF*m&Ojtk0ze&FwxPl(9o#Ru>%4DYm+vi3%sQT +zyK-cQT%-RQ_*MF^g5xIy$MmbZxD&^iU7oYQcAQzhAjcM`@!JIYIMFvC +zMvNy>+vh6z2d4ju+%>zeEtIit^@T_iA2RkD3j3hI~)t%VoH*D4}bs@RFt{q=O!svb1R=XzfTTmjhI?fJ*_sdo{QJi +zFBL8CU^dskk0K4iG)(Aez^lf6XYZELl@WPn;?=~~-DMdW1W5}*TAl(hX~Rn=b}yIS +zI!T&7l-J}f@uCQzsW~>Z!(V0;0u;{nOTIBl4P=0jBE`5mf$PE?RRA$^t_NoJ%crOH +z!x|l|XM}M>nXo&tH+B7jXz4)*2z26cPXoQ*ap2s3!B>5r*z%lZ4tu-`BwM-2I$?2g +zf3$eqzq#P39EG4vJS*5=$}7&ln1_fjHhnXvjw1HiG3G&tco>6)2mgBH=}?5 +z+&Obo&J0rR!MH#nPS}=eW1dHx5K`7)1_uTcZkwpbC|jrR`ABGNWmLYu^=VnL%T`L6 +z$rmj)M0q6wtBykD7+JC)k0~y{R8JR6E|b*kWTTx|X#r$iUcyb&XenMsl4fli#4P6= +zBWPw@g#ick!|ASF*69ohrx`e>_A9DV^qhFGnF6^-y`P!v`+O=oRSWCbvc~A4Q +z)Q8>Hl7!ZNj=8{6*Jsf&02Z1M261Ts#30T~M-zYl^o?@;`77nA9WTq<Bq3j=?PM@d^uFNz}dR{BHUD$&bs%rS{JjHq|E@j`fcXjC|;` +zH^f_yJ@#1bldNbUI*0*X%>09~N%`@P7v$`)esKP4Jn&k3--%DkwX?g{J&U#U!y3#; +zVgsW=%JmBSwYQ=lP`tYNU3p>aL75r6(5st|gxvVjnB0Bl7TJI9M*X5&daBWH{{6}~ +zB@TO~*Wh>wfdRkeV*t@X)q?Q)#0jH4eE;aqvp30YXK#?VHh&<`U-71#8`giT=_5Qg +zFOF+tZCg~e5d1uoR +zd2`~B93G$4A0PT?go-cz?>WEAn!0ypx4zfp3;VCQV8J~WK*y7;AhWJht~RdNrWJ^? +z-88-1j@hAkd28YWJ5G+ae@JXy18gw1eSVAFGJUNbV@v6iDX8$qszJTjZN28-WUm)~ +z>ybwu(K`3GGnyI{`7waThU%q?GEo*l`J*?8l +z>)z(G<8sTHYt82Ak!d+Gaz@ULUJ&4CM`q-V-iM8 +z>qS4kVari)WdM4dLGn@n=yCGgp?zU@{9!#19_KrFcd-b223)a$Ya5p2oFczpzj&v5uSK9MD9XN|ySMVl&v=`@1`i!j({yOIW{{UL?HNUxuVjutj +N002ovPDHLkV1kXqsJ{RJ + + +From 4f4ccdc922f131df2817e2a000763d86739f2d5d Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:35:33 -0500 +Subject: [PATCH 07/19] Delete icon_29pt@2x-1.png + +--- + .../AppIcon.appiconset/icon_29pt@2x-1.png | Bin 3667 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png +deleted file mode 100644 +index d47b20b3711a40aa27f2041a6055dca572c68b3e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 3667 +zcmV-Z4y^HsP)Px@4M{{nRA>dwTHSA4)e)b&AGTw!9mjSY8^>`Rlf;B5kPk`&1X6@V0Z|?brAU2i +zt3LFte@NddRYFv1Rf$4Dpi-qpO$bpD6cR|9I3dP3gxE3uV7>m@wY}@z?fmB4***8{ +zU9UqB>WS{1IdkUB%x~tLv-e)dD{>>hf%QC(ERha{Qq=`TbLZdgxa+i*z4i3Hd_G?S +z>MGu9|8{}is=r&&j};09sUjx1fz~n8e;X-6mO)C#x{ya +zW48K+c{iT*Ca$}5H33RtD2%sd(8=XO3d3kOR~DKz=;qX@M( +zw$k4AU392xKi$1`Hv^Aja6`@YU2T$=$z-Z7T^P}-g&EK>p&azNiA(g+#03GFWw35@ +zVY=f;Mt!u7_A%J+-El7+?%q!kFH%ab?a!SX*0+lIWJ@y}Gqzut4oQmNJfu=wM&=i&D2PN?RXzx*amaFSYLMu!L1e!#lsZ@%o +zab=epGi*ilSMsa$;?OH}b#@fpil$5Lc9&|c`Gai(^vnIvQ$w`AA_iMvt7`VHd{U`0`)0Mg=Njbw@ahJ_T=I0}Z|O +zT+3tBUDqK?2+PR5A{-QCpzB>-@pgJ{^J6qn-)nrpXV}Ft1DUH|w +zUByr5M`>i~df5rUSwQ8`VcEfkL3%22Odj8CAkk=40D;=Pf>d2ih@A*L3O?0*j1Dyp +zN^+6lqQ@Rf6wAxVKI0e>s{&MNgAY8^V*pM?f!F_A6YrQR`q=?SI0BUx@n|>i$43%J +zR8m1gR?3^_v2!Dq1OyBzIH0^2L$-`xT01RKCfu#$9X5qrz +zr!=uTB^#a}N(h&L^eOnQ@iuy*RI19UM9q{gjIgtG@@gQxDZJ{E3;~%Ka +zv+U;bB%M!P32Z?dPXH)D>UDnpiWrrBY0R7IGOv5{@x)Q8i^MAe)PU{fs>|1=&{G}o +z3QUutGA!fAn;$UMM8Wi8u)>4#b$;%0DSpMFRFuK$qm27_^LZo(V_H+fMO)3I!vXZQp|6Uby0h~)yTfXdz-hJw%2vhSg!outJOpp;4gFR`G=UWvHSL)9g*2w6|fWR8y+WebDcsA@IRX{WP}b1BF{)QTNPW +zTOA|*ge&17E>sgV@H+}&j@S5HVUbT+vt*UpzhQ8;k!2|k{6hx(?Or&zkYsxcf!E~> +zK9ygfH9li>$tta=XfiiP1x!Zc;Dlo;jWY^>9q}z}+sF`nwWecAT|LMVNVRbt1JwrK +z5iSDnK0h{7R2k<`AWvrJtce!#OMa3#MookSToerLQS;?P#{!2DgsVmV?yAVtvQJUG=4g{t)ftkmok0i? +zpvuDZzo`r{%ommLc(7s6qv576+DZdFc=iCm`ll3kaNHsjE|0 +zUz4!W@p60|k8Cf2hDc;6c|BuLpgK1I6oG8^5+-vp#TZlI +zs5Cxr&KBnRAv^r#S`90;gH~Rt>L_&+0X>ze&h%Q63K3HXU=^@_7re)B8?B51^XwM* +z9TlSmR*W{A<%<<(U&tW$FRy+s$v`0Xg{6o-XxOD=I;WPtYXkGHtnz!O7J*}tBKR?a +zN9+-PwE-4XRjB|~FU0fL!Ao}K^ZzKo=d^I4o^mVS<15ll# +zpf9d`R!+X3c&Vz-?}&5@H~_S-z-yYK-xKLGzop0+PB+b%Z|quboMwv)0!V|iL2973 +zOu^fm7FUp40AdHF~ +zU&db_7EYCd&}`o>b%7~JwfolMJ0)-m)~5Kg1!7kmHVu7E!|~kjZTGWgz=}as7T}ql +zTOQ(v>&d`gbOS}-zTCiFeRo^|g2LC?%uwk|2NG{8skBJDIA+9dFInY7fnxBkLO+A@ +zm#r)d-rT%DAp^zr$JsadDI^yFYX_(MOP4anRA%$l#?=3ybge34 +zMimvD@}Qwh7Xy3pJE+rZ_bbTh!*8iLP)an;uS;nl`Vv#-$& +z{+eGp6nzfyKnB|Bwb9-JpDoTIq%R_Vp`p5I%Dl6uwnYHzsc+jy~^9* +zgY*TXj<|fAMxZq`zybZS^!;>T_0BN!0hxFD^y$j-1XN7t-NeUqe$y~_)ETpwS*43A +z3^wkfBm7sjBZ&jl73aUnh_bPVJN`sC#m}zimM+pq=}R=S@`aq{3Zn!PV9^}l2Uqse +z@ukCNtj66tb?Q{<@1u69G0)C8eoo$OeV4whn=F~sWNRFy0iUts;`5kV<1Mr$vRRUo +z%FokWZoz!E@l);Ev*#O=<;?bFyXcwJaXyPmX$iy&eH)K=^5n@4RTL9fy)2z*d!KI9 +zPoc}L?AY|Ryk+M`{_Wm(tZt(xXCI*YV%>%f2R^0P6@&#lBk0$8ae8{@7`@kefi5IQ +zDl^Eys~uLDUzvuW#P#RKgT&smw1*x_-6NHhCnGL9^w8Y-BJ^+a?H&qfF12OK!{o8l +zz0{U#p)>6lDDUw%RO1J6l+g%lPH5em6{n_55X-p9TshIz9>#^oU&A8w$n0Udd#PVk +zp;s$jQS@(8QJqkkL0dJ*?_2Drj+It=zx@)8Z<;oP9F!fX@I0avN;YpMRll3`6ZI^2 +z(u1=HsAF}rdA{`vQ!8HJQk}rkRlrKChhRqF_(u~D(T&C_`k;M?l6CX7rrgqadv-G& +zP41_@Wqv>Arg15?Wy&is^wCte<^zLKU;o~l?xgMMAJFHCn>3mjr}3s4%6V(+PpUE+ +zFUHu`R=P9YOS=}jym6YYC%&SI#w0DqGF6u>_HQD$iI-;w?Of`n9tIgF^JhQ!lYjnFg%7Qe&8y6% +z(9ssCC=_iV$}3PzQe$esraBhMd$eP58}%-9iambBriHo;Wut49^>QMM7h+Ujh*L|p +zQ4Sil4PVtNsP=8DF=D>*cDx#20H`|CL3e4WT&Zgq0jLZ*;9&#*=eBj#e3`Sy)ee8x +z5LWd;(OmyJSI2F@(0BWgXbPU*>zKyl>O-zEKwo3CsoHSu$B@6fNgue +l>r2O!y80?t>ds$J|9|QVx8BSDW0U{@002ovPDHLkV1jV0BAEaH + + +From a050fb3c6562101a44d9e64e05958ed730352a10 Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:35:39 -0500 +Subject: [PATCH 08/19] Delete icon_20pt@2x.png + +--- + .../AppIcon.appiconset/icon_20pt@2x.png | Bin 2110 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png +deleted file mode 100644 +index 46b16ff10e209aba01af4588659790ce8172a55e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 2110 +zcmV-E2*LM>P)Px+_(?=TR9FekSX*ygR~7!wnKPb?XU2AIoW_YSN?j+RG-)cLRB98UQi)2m&^H7~ +zJb_SO`UKDL0}!I{ROm~Qs6=@|LM@~riYOHkjY@9RN!ldM)wN@f$DWHl7tcAYZ=YGm +zXO3rLJ1U56owN2?d#|;>{jIexW6O125C6x-5rF?Qc%J9MvMf-tXq~cKahlDh>DaA9 +zSpOgcgzZ^ZaN&Ab7wzw`@qQhm2I0P?S{WDSuHar}0ZX+a3adray+4`7K(Y_Ry+e3> +zcnaA>#^`CQtWlwLWiZ;#J|@IEXw-lm!iD{so{PWV`T%EU&f{v~W-vLKCM@}*3>WGq +z9~#Huktc9;^vj6H;(<-4@f3^tuu7$p*KG!22ORjHchBLESKh^9bxG|*l6gdMo%4y> +zfn-0vIrSW#+I`5MOoY*pv!H4fi^cXS2Tgvy5M-%d!E5KnCsBUJ_0&E5J0CI`mx +z!-L;8q1UiRoS9G4Rwxv@c{H8wlxFeT#WxLWGGWOZ-<8%WS*TZCOCy4fzCknv28GR+ +z4}KRTy*o@U(ni6C!))dA`2b)zq%^owp2g44zK&Y6E??^mur2!8gE-Q5(lo8ORn*Z4 +zioMiXU#%7AS@%#4LEZ$rB7nYmlz+Vu3@w+EGhF2c@UI0Gq +zq~l3)X5j*^R|K3bUHu8Gz=X3C&u5;NfI0zVVTY`1m^7Cr61%W7{sp|davC=pGp2jE +z&$Y@;d~okP4i6m&Y}KdDqb~f^*Xnrtv%kT!ghv5rBhS1>N=;BnH%w=Y@em>iqH!+2~Sbz#Ln@@KKsEE;ge2_4DvP`nRc +z&mBX|_6HAxQxFQMn{;9hUJxGxPOb$|;w!%S6q?I8En|nV5L+9ARGeF$mKn+gg1}mm +z^=Gq3kakjr5wb@Rl***aFmSDhCy +zi%tG{7>z%S$>f;nvz1qLy9(zU?dfZGbqDS==FDm~K4q*=t9MXdTM4!+`Y{aB0iWse +zRROn7yV8H4cducrTjuq5+*DYmbp;7P+ +zL=m3#{?s0^w}Vw1Zd2Rs%6;PV?aF&HkZ;MYjRBjl=i#M&B_nIL8B)nobW3Knnh(*@ +zC}}5Pbn6EyrNq+d1y3(p=}>5x|IlnKvuvpB$`)hs4VhZ +z>y+Cm^u5|#G$uYgl2kS!RzGb3U2?{}U}-VPZ|2T_qnLd*_(|kLG#FYF<%HWpoQb7@ +zrXOxUC*-PyvH_?p5vbOcF=ba%CEDI?a%EIt$>K0RO%7Th25vQ4+8E4ODSs8WS_zVe +ze%V_=F82B5At$o5R>BIZ5;1=;QNb0)h(WhKwzU0d>PL1x#AZz~+!m(m*YI@aN#D~0 +zyrYZ~;B;NKG=giTlw9i>8W2MpKpJbP9wF_QX-H;jZEmmg;9IoNg62h{a!D!)zyhM-2{QQe15ensB=oo@qScFBUQ6 +zKFCMZIA6VlU)*~`)^&YbXD`_!`>)QwVSM;L)wdrZj%mpt%3i=AK`CNY?yZeumpg1| +z*AN><39^0}Kb`v(E>^E>Im8!hALA#Vy^0I9%fW;#Mo1=3IV!oguRam5rx7)TojP@@ +z;}7>$yN2KO{{^Mkio{r)3GKQ%`OWm%o7{tA*~54;{g_-r`=|~|VQm>7u6%^|OJ{Jo +zdOgqwmDaYB^D_8O;cG~_iJ&Q5u}+>m+4TTjh%e#y1Ahe*J6Z_P-zEK)l%2w$fTV6w +zz^%HgZSC4O7)&a0*)_gZcn(92{;2!l+d6ULL|_wWLluJj)8P9kIX;ux6lGNPDx(vK +z0?ajg@nZg&`+}n{>-h2G_XWsK4EH<3r!kY5=jQ_zO%KYE+7OUNMj_RP;?ZW=0aoG%Faw+hEg<0+7gTT#gMrW`U1NPaU +zA2(0cspEFJFMa6Qs=g^%qT?B5 +Date: Fri, 20 Jan 2023 20:35:45 -0500 +Subject: [PATCH 09/19] Delete icon_29pt.png + +--- + .../AppIcon.appiconset/icon_29pt.png | Bin 1376 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png +deleted file mode 100644 +index 65516e2b2c6bf437628472e3934ce8bb5207f5df..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1376 +zcmV-m1)utfP)Px)8c9S!R7ef2R{L)hRTTbaXJ%)&+tLSxwqhw_DW*+@D&hl?;7?*=Vq)|U@-NWD +zKR|ybCI*c*YO1xMp;ig0X|#Z*X#)jpx7|l)pEI8C?B40__7No9&7FJa+;h%%&vVua +zf*?eFgkcEFvcQ$Y?72S4;Z&>D#|CM=Wb4IRFKzgpN~NL}wF>avFmdJY_WBb3NiSog +zm_e?XN4u9omv;cidyZnbX9$-39%VS<-hKJaPce7wYsn +z@XC=1TpGTJl$+dFr +z9hyWj?hL{Jmlwar^vbLX(h|CkD~B=CIFnREQwAYi7R*^TVFuY^_1mu_LsUqCsm@b>EN>D5^bBoE=$ +z!xK$1S~AAHTNNK)tb8wkHOpvcd#nxbv|m84-PI)6_+pE|8D|W~yd(HBH;rttRd;u& +z`o_CXqRmM})evKyn)&VORcwVm!k9QyreoW9xART(#Sg-kz2i91%6;o3ANeU4#^mCn +zgZjQ(ory4r6=TV8Q>j+)>*hQ_W_nQ8*E%N9@AblUU7ZBxp6hOtXXHO8a$!tLQFL(5 +zX69AD!HO*XJHL!G48%D->IC&I*6mBVr`lx@oYXrI^ePUmjhaJH +z4KNx$TgzZ^Gc)$4)$OpdikzX>7S%y>o2rg!K{)33>RGI6K +z^BbqNR&S;ZaP4119zL$-f7`xAEs2%alJ9R&&thUepBu*O8>b+)HLBKq)R9_G-dI14 +zgXK%NJiRaT&;(x?NfoPv)h%W6LR^ +zXqVxM^0rC>eT5$M`P~xJM)Padn}$MFX20tnv%Nab;d~bk +Date: Fri, 20 Jan 2023 20:35:51 -0500 +Subject: [PATCH 10/19] Delete icon_20pt@3x.png + +--- + .../AppIcon.appiconset/icon_20pt@3x.png | Bin 3783 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png +deleted file mode 100644 +index e802e8ac2ee2925fb168120280da7be46571f69b..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 3783 +zcmV;&4mk0NP)Px@fk{L`RA>d&T3c*fXAz#W7hl)*+RnvJ(xjzvN}IH*TNJglQL8p73ZPynmkJ>v +zB&5Fbzza|ChE!evsR+sg0#PIoYE=@Ik~RqmEiEafQDV2$BsfVMU+T;Hvg_Toy}Qge +z|C!_e{Cn2BPV>TVot^pTpMPe)nK_p|Yp=qC`~lYUJhDW(6iHPV6vN&BN!MMc_3YKt +z$GTT4l>)%-hU-1Amyql2FUnq`TrNvhvFHXAwZWFv%ecF)KGcT#2E~ZdS6xsyzK!a` +zhPS-D98}mf;5xvD|ECd!Cjn46FkA)5bWM5H!CZOJMh1JL!b*|yt3^?7O*B(WvY9;o +zyB@!0rY&2-kqC@2-D1KSpOK-=hn&muNgYMKeot3>odK0Qn+GG3sqg +zQ-5kR-Q2y42K)BXj?RA9bwhL4zq?7|U0PZSTG~~(mifr+D7`x|Oz(~l({w%)G69%y +zrf@@xvW5hB)Z3b-!Tx;$eoxO$uG%M>d)aI@0PJR{UIlH>7c!UWkMF-s7c*BZvBFaq +zF68>_sQQ<0{XFev>c(R^64s61U6=ifi;Egf)j3(u0Sr!XtG+n$7inEnI|YGr9M=Ft +zp{u-q$$)6xVeh|l>uvP-z$4Vht^Y}eH$Ojr&FAndqo?Vmkyp7*{hYao?1&NNM%Nu= +zX!l144$|S9ACwihAPrS`Zf>q7VAp^;ST3#5Z-!r>cP7sV7))#%Ygx4iis9zR?HIiR +z?C-yWzH!?Vl)!0_EGHrwvs+<+{n5XENtxn&$jI6Rb~G$Vl?RO)8`Tfn +z=x*+!?+$*O(k-2`;8xU)A4=Zz^mH`Zux(l?uhNgt{faIxa%KI2a|-8g@ZjL!(*ROl +z8|_T=QCB=g?XebW^IFBiQYBBha)IVcS-P@1LD}+B$e!8`t`X|k^1riV8-3@FZ&5Oq +z2-T5&r=zaDvk{y84|3gj+h +z`2AD)DO +zdxFcTr+`yY1Q7FLw6E!Ax~utCYK`$@BkQZ3r~q6UbPJVbdZ+Ln4HYl)bD8;K;p(~b +zFW&GF9ol|h;Llyxxi>K}5dc=9O(*ly^uzPNU@U0ewVH~KBk17P{X*&hS2P`%Z~-fL +z(0XI0G)G6Xf1_+=DN@zWKTfOf-SISSZP^s5tHKx@J;gTrlbfl6#=@Uc<`GX21IKveLypyo +z-NvMROc@(2WH|o2c!kc-k1$eHL)-<_I5HQlZB1L~$*zOc7H3foz+`9F;vXG3e%MRp~tOoeCK5pSnQ +zJ0759JW27mc@R*FfZapaKy6<2Y#DeY0=6IPe2_ZXmn0f-NDLgCPb-L%{k_C7+ZbG4 +zDy$i?>Ba078eK9E7pA^GSSFfb1o=ezVM-<217HXca;=z4bxi>_s*mn@tn(qUD{aj{ +z*^ML~RCrFu<@{B;z_Hs{Y+fo13>e6U(sSG%T1^FrYzhy`$6)KHX=}1~U4Sm&dh_)X +z($};}d`cYb-&EC5;c-rLrP11MWp!TjqBWHL4}&r-V<G_-u|hg^HmS*8(AS07PY#Dlaebq^#D*cyWqmSLex#;U0>1K}mU-iO|oq +z?WJ~ZGj||BI03}~kNuz+$_F+@TKmJ@pW=(y-L1FL8%yuPn14>2_{{n3aqM$6R`{6E +z5g6(lH1eV~oHNxm2JmVAB!kR@?rq&&Rb96lQF8!=9JG-`b=4O3z_&TQ{0@}cro}V< +zq3nnN)ye`aj>rmME{>U&feoB1OfiIK+MVc>bJxgB^$>`TDBhN--nCLxF3mB_l^2kH +zi3_%r2ff4?6r}nV!1!>-R4Ef&{nQ9_po=yiXxb^a6n9_LT=sA>qWnM~!Ke=A%B#M+ +z4jqg=EjQAc{5dnxTw8RSF`&8_Y72bTYuZw!Oc{QN$AwB$5uz;L)YL73!a%)&R)j-P +zj79;eUEOO3jkTU+7nSp-0A;^uXtFW~3knRt!Y7ZK5*li07%lRHyIhTB8Ol;)Gs9Jy +z4Rj__0RUO3^Pw#THRYAsvM4jEr&M*iI0pWn!UGpYl^U={%2>+F)J)01C-8-SYJp<0 +zT$FY;CPK9}B6iTp-)psEzAzv#ir};&%DVvv8?KS*O7NQw2D(;`HD04GlnT_u-;*^K +z0jv}F1ut{cebpBH;9_xemBq9kAlTEkj?%}v+Gu1QIx+wjl?7FVJhj+0JZ6W?L+3E$ +zi3(@L-)8Q^<~+fg2Dezw1s5$B5cKS!V6`J${d()#88(HD9Oc(eJpku{uZV~p6a!fF +z!X*NcS?PhHr02gXk*%CBWRU-4`20d87n~P%AZpa5ssp+5N^P0V+v||q18WQAti%Q$ +zamxTsuuK6uNo(zF6gUZP2CyL=@1RU&A=s>VVF>(eWv=EqtcH~$7&|ECL8C^a`ZMJ@ +z|5tPy$v00kV|V_VGmfoEylikQmb^D}%?A77o4 +zDkFIN007KEqYn4`E_768^N^`rDb`_oZ1rP8h2>O3Mg2dM0FIZ#-2n_f9;N8!(6=QB +za178+Nt+mCCxJoVI9ljz@%;dp4N!T|s6&GWwRzRGWvXLS=$$RR&+++%P|8J-_Vwv* +z#-MnV0(hvUA%O8sl{9sEDVp~d1uTpFfgq)c=&#wg>7kB$sUyK}A$T7GxgJAf0L4H& +zHqDjubTWI!+>$stGgQ}9yPMD7&6RG6-B$=msKSsU8yI^yL%7eupMKv&dmFyOH-!Sd +zl098jMFa@&c2zdQ>t0YCXlJG1|Gapbiu@;e@Z*zKV)q7_=Dm6R<+7^z8KWl;fXFw2B)AYy+}+H$m|6?DTJG +z)x&=sna)EzQfWUPfZpzL+@&qjslcH{RPdpe#-e>ZuyVJ29fTn}gPH<7iQ#M5&t{(I +zch?kZKR4i7bGK!or!w7xDgx{@znB-_sHPk|3#j2ASiUQ$tb$cc09~`fSlm|HOuI`v +zOgkfs0In2{_z$uV3ZwMQB;yy({-yi#loYOWS09VkOghuH{{EOlb#(ydamE>}= +zmD;BlWT?gcg*!tXsu(l@px&udr#SNU$C;L4dcE~5>M4fTHaHTVCSq|q)OkNWo<7Jg +z=~L?)j#x!dS^jeJV&+vkzW8@qsjRY3z%gLK3uuu*Zelo)zmxVC_KI}95AWp3lfl0{ +ztf%;L#~bwTrb~{>nnP!Se>rTS!(9jH9)7KQL$Y70?CM}HS?4Pc=#}L$dMkI9UYS2l +zdH&tl9jqc3DNqb_4))!;d?OuR{A@6X9K*IP0{-w$oH!8xj#5y?5?>wvkbaFOk~4n3 +zHMfRBuNM3*{IY(KU+eZIH&IU_&0kJBCAbW~3dSqd$<-NpCwrczR%g|nP*c10?QdP_ +zrLWE%q&Tjc4Gi!2@#B8JsCRs`Qpzu{ml`n+FmcwoG`{V+yc1 +z|9oom(kd)B`+cfDe7d#7mE~C4OD&-bmBtQ=p%lC%^w_auH7g9IsDbu=t>+AV&~_y_ +zZ=&?-$$&|FLUf&yS6AFv+>_f$hcf#cZeu%+&`Z2p4(tu!5$K_*{nVT8qPNmR^3WkV +z8oj2_LF7yWu&OTojSA{jiFw2%m1c2_?~V7&?W4QqZZYm~d*pS!NQuz;&^58)%R}$9 +zun{ew2BJ1t_GmD(hi=UE)0^ExG}_L;Rsa!(QioSyO0jJ7!M=$7H|4g`y_tQ~z1+cj +z%q|6@6!z>9g{KOzg4B(+FF~roG~O~pZ}tw+1k>v|`U<^t@60~xXNsX< +zqkKfgr!v*|jvhT)^R@&)?grfms%xMa&>w4=rqR?mU1}evg=9|T8~x~9X_wBqDceu| +zc>`4Kt53|8xBaUu%BQRyIdUY_RZ)u9Dw}Cupv$QVnrxY+Ow%G|ll*GcZ%4I>C#Td( +ztF-FYLJ#fA_EB%q{AZo&Tu&N$Yw1>0v$dfN`dxt_dkP)Yo#&rKScZY$dP?yUEqmsl +z&YCLxe<3A)cV&Jv2`W}*J&bzsh?4c;>RU^~0!Qc-52Omt=2hlWvEqEFj*9I$zGoy$ +z33eLSWuZ1e`=Y75doK-bwkGOJsha@Et8Po!uNz$6vfU7?c5JFaz<~0g7`C3yRR?qB +zRUfkTMwGo!g`uEEVMuv(;I6yQ>gi)$tA@SG+ZD8Jy82N7)F<{S4~h{LZ|Jt9N}}y= +xs3lV!o4Ntj+N*l*x^2r|v-NA~)Y5nN{tqEfuA&dZtM~u_002ovPDHLkV1l*5Wt0E_ + + +From f9c5109e208a4aabfcba304b56a83f2c5d514f21 Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:35:58 -0500 +Subject: [PATCH 11/19] Delete icon_40pt@2x-1.png + +--- + .../AppIcon.appiconset/icon_40pt@2x-1.png | Bin 5780 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png +deleted file mode 100644 +index 3ea02f17f587b3114f3abc0fcdb8b7c07fe05631..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 5780 +zcmV;F7HjE=P)Py0PDw;TRCoc^TxpP8)pb6vyQgQ$al7@Mj%2FIpwDwRK} +zBvmQ@%kNaB@+Zr`R2(XCs$5BBtBRe(aoMsc0um785L1?oKne&6&@yP5(d=t?Pj}~h +z=f3at?c487&x{1I@6>ze+{;`R(MP +z;kD|A^TU2Sduj5hR;%fFf?<=*5Wps(c0z-pe69V^UpxCBwSJh7#kah?T+gboa6;H` +zmp~{F=U*>CAGZB4-mnk7MUORbcZ>{}y_CtASKa4k&qaT&a +z<@EgvVSGIVMQdkpt@>uvJGGnNPVSkyA?#}WMWs?Hsle+6sGY-h^6Sldt@dw-{?gJ? +zQh{qVc)bbx^DDJwxjJ`EuFhYR`SOC4s%2SPUNV)gLZ@`*JEgbSBU^em%htYO>Btq@ +z?g-!hYWVf!UqIEdktfBt&r^?dJq|f{d~s6Vy7sOfXXWhp`!c>bEp@5IVq7v1m%DT{ +z_n;EV=I%k+y=j-+xp|KsyJb`N(3&qfu;e%9N(!0J`?}zff3&c$kRW(HfP}{B00F=* +z+SKBVymsk?ygG7RF3enx;W1IusjlE@XnJO7%@8*C9Mre=-z>kh<9>Ny+dVSS)z@Ti +zwVn0kAI;CtGs@NaN%U6h@S=islW4nG?es#}hq_a?Lp4O(fn*5`gnVC!g+t^PP +zzdLzezVXJlWO8xJD>+qVj+jM0$u};~q@+~9GE4J9S*#x}Y#=s&L!ATiJNG^{J#ny1)aq}BMu +zp2y_zU7w7H-GdV>zV*`q;r{OAzsXNWPlY1u8=lG~VFm!T_*Gp5 +zm8IW)L7F{=0N;1hUGiH8p0d}H7GQj8i9_S$n6Kya(d6W00-!Gd&&i-@A)pvvs+Q#I +zC;nN^OrLKg+@?az*b1lS^c!Gi1-c&nJ%hXC_wN1;=`M6-MzWgxqlt-$B(8Q7LQeqi +z&wu*2GBS516n&`uwF1@>Ongb%(Yr-{|Ilwsm%htETWkK96OE6L>%8;|gF;rrwteP} +ze~`1Nyr9%u0?~@(HZpr50-lr3s6)C%-?rs@q$ldKq!y(l3$;aAs4q#WUh%XY+u|>X +zr)7dSuxDVWeD%O@+I9}}@YGUS^E);+mfS?bKvHMLgWq`ToASo^Y1dl;kd0POuXJz!h{-MbD4CBHulK)B=G*7+~t8U~p@Gv)tc(r))3WBsuTu8K|w;t!Z6< +zuskZq7vGXA)oZGYl|(~IT-8><(&GKX&dbDi?# +z{zv8RuDyb{RhtTB=W}_vr+c6Ln)-rI#E3tv7b$qeMe6fYl^M%1D}UlZ +z3cVaVX%wJh9Q5+yn7lOln$AE3m>E+L^kWJh!IEw+49Zsq9+#Uth7;fjP&?{_>hta9 +zZBt+Hc~fztL>i|pYD~eSR1)g*DnpK!7Dki2nLmpxq&W<%rX9X?OdkwX;m-a@U9b5J +za4|C6u~DAZL}v98;6SRi#9r24_N% +zBXUh^#EKvSTmvwz`uwqx`O9)@=B%qaRvxJZrKf~~sY_43Tb}Iyv=nn4Nx}$ru^u*g4aoK^`!GkgnQXN9B$l1pLJQ}HW^wd;=A;LuZ +z`O*JYca1-Qg&tS5ZY!x{N^#&i_k@DipWl!q=O>#5Kt7*0eNdk#KWWf#+X}<-$cB$uoMt|bH8UU0^@Qd;Q<<|+ +zd=Nw4ZXz5E5ytrOsgtgR~4^H1wa`!7}e +z1aCAS0tWjW3wEeT +zi!k2H?(MwQDW#lgyJ?>1FO-KS5Epeq8TyoE+27Z-Q+6zFkr90lOWSZ{6FiMocpP4_eb=CgQUTdk|Lw$#=0@Ah+#?VN?Gf~jA!`A`NxwMZt +z;5oOQKI9K=IMlR_)3!7+c3T-3oJ*<@^MMN+_@)omDIh(&c){J~F$t^UO{NYg9Cqf4 +z`u=u%0*Wsuk3`W(Iqp+mMxHdB%W+cQ4tZY&ephk3;E`D=(#K-V$HH=;**xZ|6d3$s +z-vJvYc%&Fy5y11MO9qbFQw|gjYXFvO0e-J;kAl9H@*4t%GbTZv0bH-#_qAHS5alh_ +zlS^k@5-Af=5X{*yAkZngnE)>9EAq*zKG{%o2ox#o_&oY|blqk^5fqG}5j^nNZUB#4 +zkvsuis~k4{20Olg@{ED<{hhny&C)xXT3ivnk$?vVcz6upIiK;uZYF?Zl?lyW15$$k +zixl?B(>)BL0uc~{HNBt$IR=VGT~dF{=d5f>K)dgS+Y?~-WNz1_6=L4uf1 +zu#i2l*xIq#sj5vj=oo-t(EN$x%aiV63xUe@nU_)P;-rnH@WD)X-aUS&4X4oniT#x* +z=Ypa!3C0)BZKqE=q?ixBOFuHe=OBxm4XSryupsoQ>a4vu7F-B5Ifm0KJHYG;IKD_Y(Q=Wi1hw-B6q(1!s2#KUM +zAAnF!87bsxeA<|=>&vrzg!=u3UKy>8$LhHF04yR%-T}CzpTn@Y`~|_}0t9RbgbJm4 +zne}IO%@pl}(ucAG1^3W^c77gczs9U7#?1l6igSY;6Is%&&dMX@O!w@XX5tcql6~2c +zfKi)zKo4LWidxF5pH>C_f?z5ahe5QH2X0%s;rvixMSs{vdXr3VL50LPFm9h(1u}Wx +zVNvv(Oc?++1WsX27E-q`?6tc_Ap!bN;~7(WqRn%u3yMbHyuA4F%+&Nr3qZ_l4Ovk- +zvbQju(GL5a`XH1QW2)9z109n7WQCk@MT|FE +zR3ms$ZSE@<<)+ty7>6BhBlO90OJQuKMz9zc06-&6<2lC^gA?OftS(v1iI};>`I$fE +z>33r^knkMiTzjC(4uzmYkv_t~io2K-3SCwnsPU?Ey8ON+25^ud4)UNrPdRL*fkAmY +z>f7{r&I|2B2kmtEoGSq2riX3in1V;nq#B@X%ne|gRU9d*FR4J2>d6N%uO&8^+aOc* +zSrfw-8?Sw&D8!ScGjgc+E~>1G5iVb137ulr~IV84+cODTg=W; +zoKUU6pYR82I)>KHl{< +zucbtHM*1@W;1(XZxMB>{F0^%7l(L-Bt$~CQFoPzA2lAAMlygCSo_hY6&r=>!Ux)lV +zrT6tcu)c*u{05enoQuYV3XQbW59KH3-_~7n +z-WHaHVKxCKiUSla&I`Hs*EiTtHJqUJ-1Mm&#D1{g56B*85Jq|UWsd5@#F&12>Uq1) +zAb4yk(r|nEGU%-4@aKRxw=wm3`trwceg4ku3-u3Tn+~b(^3-#OFWzN8ZajsHK5hY}3N-ygd9)B?Z<0kO3zzG2%*jf7Fc)R(&95G$0 +zj4DhnPST_(EI%j1SWXuexf7Et09zhs!M@*m>RqxwcbmMGdryZQQdlkAie>@bDQkZr_^wa#M2sOplOZsNTK8NX>Cze0RIOAa0X@NM`!bucznpOI(A{!uFRWd|B!j$cK9I=(?I5uNw(<%6kMg!rro +zAj@}ibx>}vZg+PrTzb@j-N8WhK%k`H0rYHbUcNT^_x7c5CIk?{v)MfDfZ~9R)aNP3 +zJn(F^1)8Rh=XigiG0ar;$xFkn#RnTKi0~SST!(8z$@T>f#DbJSt_YwxiMQ9MD*B;$ +z90eTv0pJ3SKTsS{1HG_(S^jkN>-u8cRU#A3q6CkCh13Vh=R-a8C#qBOXQO{37b=(I +z#ny-cA`YwpDc2*W$Pu{$AT&~+CwKs}>B~hFkP>asjm!OVf8~ybV=n+J3Jm}h2V9e$ +zD_@d7y!16WQ#zki4--aE;MvGi9#S7PpAYrUmM_R3UH(gfZwG^miGB<`bW#9Cj+?6P +z;ensO&l4Y-$lU8tfHK>IO9!P-UmIctZ4|kK$DKK*K5r|n~U2_e70XS=Hw5t>tCPr3Uc%T^7AK8IcW6q%P%W+AR#Cl +zjH`mYFCWQYm4EF&s#_GFr659gh6UGi!RS@Zf-(h@IE@{}t@7&|KQD)R*7o4R*~vct +zWZ{(j%f$C(q>P`PF`789I2Oc&)+}`+*t$>8J|^2L?z`MJ3V>ov&?gU?$X|NtCFjM4 +zR(E=>>!iHW`-VmmPlY{3wJH;leUssfgP)Uwz5DcQve-)*0eT69rmK3tKe=#5zN0VR +z-(Gqb7Gf0!laX2|Rv!<|-z^U;x$nS)epc#7$BrFKekZb$B4mC=9v=9CoGFgj6f6j^ +zj2EWG3}p%4o_{ss>y#0y(l9c`szLgj{r5a +z9M>M;##ZUg_2@TA2kaQqZg&mg%9MRqXTG+uW`ALPemvXD!}6u6MISdtZ` +zE@-0-R|e&&iASZgp8mfS!nnhNg1qT@VlUS8 +z(?`t($6E7;D+3S{2^1-WAz*Yw3S9*7cmToye$EA +z;y>7RV>$>QSPoL^#MGZld*K4?(QDop#~+rCs{8j**OPzK2kS6|GW9_OkXenod3~b# +z`D>q$ANRi{KN>ux_eM?7YkWz=mk|KK@lFp50z9~2c!6uYyE!{cz%6O)#1sn#w2VTD +zypuco>QU7moIW7;PwN|kSdBTOOMWf+w>*tWl2C(m%(3tq5IQ_GwO_U_Zj%2T{*lZT +z@a-~2`@md}pq +z?^jC0PL6rn5*^oV>O;nyAtn!sX8Aw+?6XY62K`ewAvEagf~Wp+zACQ`{;#~=f2ILi +zsQeN2BmETV-kH7fvB^87qh{YDShZ*7L%`DVw+hTs;OdYbf-Om)lc-sNQyh&5@KXT-V%3Tq*GZrpjXM=ftRfX-@B1}eQWP~Ko~y-XON(!i%LQmFd8 +zKi`-6IzAujBmWg|BH@IvPvfM15TS0neopU}LrZ;jPqecJTtTJ`<8;E}fh +zcq0G^jo*kq<056yS+=Q1dZYEz{5EajG=-n%vFoj{)#TpvR&F&Dd>yPbgTy#_(4U3I +zO7tmXyb +Date: Fri, 20 Jan 2023 20:36:06 -0500 +Subject: [PATCH 12/19] Delete icon_76pt@2x.png + +--- + .../AppIcon.appiconset/icon_76pt@2x.png | Bin 15300 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png +deleted file mode 100644 +index 5bab5b21cdf0bd49bdbaa2268010b069fe77624a..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 15300 +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 +zs*u-V7}iz57!-4uqN_{MyY)`tsbdj_Jv- +zueRr~bdW(O6FnyuVFEoATDkOgx``AJuorl0WO`BRV!fsSt&d3mY`(vW032+p?}f^R +zx`sNUHU{S?K9dj3X=9})>7N2D8Z>`ylgo3XZZ3lcrX2RbYT``;nx`*YyuNrYZ}lc< +zEvV3Z`L0du*eb9aZ$Jg$ftsFI@^T*jN`#Xo`X#<+*8F14 +zPpi90un!j&ZaK?5c(6h;HMCG9%G}=the}NE*lQBkt;H6kBr7<(~oMcL;UGwZT*9JX4dHJp3#Y<*r-h4P9!_YNoXh)rh(7S +z1es$L5s_$63R!8_CCwuMN?=irThXC&TDAbbGoW;6sCFPQg!hOdbY$vPV$6z@+xMp* +z&?^C}W&Lx`@^zL0j=ruHbQ0UF`RM;`8mpbikq-T%U^S}{?5%s+`f@bu%Xmw95E#(m +zqd>VDtuAUjLQeK*t7_(bw+K1vJypL@SZCx{Z{10|V|*@v*$;c|kL4NtdQn@NqrC(R +zC9<2Em2DH;XWcwY3fP_qYWon@SUl%+=A#_db2>T%K87kiTe$5V8#R5cX*j9QUtsFu +z?!k@G15{Eqi(rjJ3A^GMpxIVxQi6ybfoG;|os91LTT8pf3Bdj6pIPo6%cG*=uH!f7 +z29@`@3uP77St*m`H$rD^mlMB_4cA5Pp6$T8w6tph0L0p`hbW1Kh}(0avj7i#D5;>56u(VbCc1EB|%kMFs9i+KImlkr-Ny7YmO +zN!ULC5|PIM)rb!lB^P$<%j*&7XxPHurxM5#;BTbq|1zuMep6)k1GU@VPS{paPqeyj +zf96U!+a=BE9HXI47Zu7gf##3hoD>noSYMjvjhCABC+$wgVxvN#qF9DqybfloU|uV- +z=SuMtiH<$p&mG~}vP{Ic4hEiEnVjt6-udWxMBjY{?PkBCiSS_J};BK(aFALRCTrg@6VsZs2^R< +zz&nf|hcV4EkoKa4$C*H`Xd_n&Kj4$dw>WX?sy<(jRqKauZ7duY@b`wwe@W~)oD%MR +zt~{3xcWl>(3XDt)>sL~|JMSbIk7nOXjQu-D;0i-L)H@8FZCFl62NI+G;?O`d@V;ED +zc74wLev9p}5c)lXN2E`c1zj1R(^Vq!BXQBOQnWZxw9+UL@|~&#UgbbZxz#PTJn=I`A!$_16vm{+8N%1mPp#vD{6e%ydod(& +zTa~EHN={dXuK-w*vT945Fym9R%@cTh)S{K>#}0bBIH);KAXIV&#~l5k{&l6}J2|LV +z`$KvgNn$JeB3-0|`msV>th7G#*bVNF=aL=a3DZN%V?rUH_1!a9`q8Tv +zf+lHT>mGYh2rk{*%74zi^Z?hCkvBAcCd{%PfPA)%Jf=+aL9=uDpszBaiT>DEIPt6= +zXvlb3HCl#@6xF2qPYd;ry)SX?$b0QlUKxMrHXN|6BJN(|Mtg$1er!R9nc~y5rZ>y4 +zt{s1!h|lyPfThTlb`1dutW$J@SvXV>T5+m*POr7*mi^Ip`#cn+LD&sR<6rttuN96# +zWFNK6e=n8?kwuzFH2M9aPRic=meU|Vb)1df_Uk$r7HRJr{{fK$F1w%E)Pk64U7FR{ +ze&oVoK#szs>1cbKeSEXd?7#UQ-EI2TUv~%$H7|Z1vh0|}&O{yo#g-!KbVxV`L5G?q +z@SWb(ZZY1i~I(JbwArTjzByQZn!8OZIqhmVkDET~aotgXJpkk_i!t27Ob5b88KCp| +zPRP>`WPR20lN;!oZF|jt<@ydh=%9iY15rmWZ&XBLH?F3r9v^95vY7BELRcS`8imOS +z+Qa~2UyZ4GUR!FrQngF(I-O)1&xW3xL_}bykp*$g%3)qojQ|5Xw%aVc=;72CoLs(Q +zd`rrsXy-ta((DC|b2V2}^vtGjOxPd$hGVSC=F&Ych}@4;D30C3e|?0jiisY@?I}QF +z!9&<6=>GoKPoXrH8`k;JBcfw;y^cB)*VV;8%(J=WUgi4ecww642sevVGU|8B7P96X +zE@%6lj)Zdn>igJkf63wm7{&nvLli8~z^}$T3|}N-x7sahj%kqLCI?C-Wkp!1&_F<` +z6CnJ@(~lqdG#bUKVesyz9P-zgXuKCW5YG;0bDO`r;XwhW@YHa@36x4(|J=J5%KC-l +zx0RntF4h6o0t5r6*iDDLG8A%@jQu&118zq^OqdcRc=>ahvqPL3iwxDC^^H41hV*1b +zikJ9v!qelVBL|5R_iiE^Ty`NMwW8ip>ASXr7VfUHVq1vgQNs`ezcZb}w~#IjsMtYN +z@?a9{&jZq;QdKdF5@it=#z!`>umYhT+0ueSbO)hCWDptVLz0*Ufj==5)p=Zk(y|5m +zEjBWv#k*hif$oTtnLeKrBpu{q@xDT8LlhQq`>a6AA$;5exnH#nIsL%cun%WB;9FSc +z*|Xby!%cfzmgnnQ)}Ae3<=y$W&IR2+xFxZO(xg+?5|lha4?n6=FSIQ +zqk)QKc4dg^4RFjde-avbHjCePi1w!jD5lp312_Esi%yU(oxBoa$3#%!#`34N=qb% +ztpW-Fk(h8{h{Er4R#$Q40T>CG2Sps#e)}KZ&&g!}wi@E%!lo4ZyEPIQaV_&@F3jDq +z7k(EfOl6>$=mU`7IfZ&MlznP{bh!u!Tb6=UMiilm&?vl+QYlWc77YJ}u=Hvrv^l{Y +z($pd_Hq*!d#9-Vj>Pa(O*GTs^yl+3xyfp;jj|W_|wDIP@vGhN2#%1=$P=&s!?i}`t +z-3ws+ZdSpRi1F!`V2b+qcJj^bN8Yw}*fu}|^-cvQgI)8jMMcH4r%81f>u4@1n?5W& +zC0lorzi@3~9N|YlN<3dK=yIl37L8VtkHDVT?}?6kkp5F#l5db*c{d%M0xgOZ`G{hJ +z1uhRxb2~N(Ru;I)FVPoBbM#%aXeVrZAxyvs_*e|ho>S@6Wj@LVIu~3|bs$vgqfY7f +znkS4E8=5^>{0(^->R0ywU?H%j_Dj+M@Frr}KYk@Baw +ztndEVtzTSDvZ-RUT>p-U91>8*omrJ)Yy09X6CUH^l3cr2=heb)VzCtDpSUDRQ56S! +z@R^a2NO$lIG&|&$>3~YHirVTdSGm?xr9Lfu-9-Q?ImGCne%O59bUo|j_OHJ(UA=s* +z3KVpIfQu2JMzuDIPVoR`B`^PRxK|wvlQ?WCjv~xNBu)AOI5;YPGK{!J#lEAba@J +zq|rhKS%IqWAOUw>IgyG#gNiQ#(y`0yQP9Y^C0d!e8vtoBcrJF$NPYaN+9tU8gcih; +z(_J#@8(i9(&aiw!9V+5Ruc?!2k-6^~54F-CDEXEyy&ft8tCav}Wm)$j +zH22m^(Z@W$7$y3*Jewm721wCx)^ZSd20hv0H4Q*B_kJ +zI_Xl#b?8KW904H-NR1T`y*s3Y7xY$)XJd^N0iy(>EdDE5tC{hOl2M`EE)m{;4sDh`b0RPRN)mHK_m$E-TCN9 +zqQ4n$2%4WXb$3|N3SKrvG73dEq748-Z)tz~Lm53-|NXWyDnh<`5OxfV(!;ye3O-bX +z<{3{%A5zb=p>R_yvwzLi7}()CY)hV~)RNnxHG2iD^q-pX@GBC?rilLuPXy-0Cu4Nj +zpp*wMqZr%4e!t*>cAPnfR5?SHfafv_pK#F4x6l&(1tbt75fuVADUvkyC`?!B1enDrT8BDg;nb} +zkRum2tY<1rpo77f1dT$NNpb)F&$6VT)F_>edmlQDvHc-lyo_v1aI#GL)W|$kBUymP +ziS5+dkHm`1%AgUX*UBMogR{eUP)Sk+a_-pjaOFqnn}1t~bP6zLmbi-*j2BhtW+_lL +z;6o9|Z;sDHNC!#@Ypk7dG-xWk)6nV2@={g>G~DzNZbPnGL2gO}fk*j-w}$Rro*g7# +zjU+Zz9l}3JkR_TE5>LvEU#euj_aiowm&fX)4D^>n0AdDZ*G|K+<4}eaXp1QknQ6-q7I+*GZ-k$ICo|)*h+_thLDO=Mt}x`}}#Sk)kC@%|M81Gg4FaKn~5G +zuL6&BsB)9E6;e)%yt$Qzc>V<&ebT>$kaOPClS#{cEfL+E)BI64*yHypeQJhnEd;k6 +zL}$h-GrE*bL1W_3RNyZBwm;QWoG*+zcdh+weh;=K8X4GiS@rtR(l@O7|xE?f3{0dCIy!RmLWSn>mdJ3G&9UpvF! +zR6lp!=cHsAubRSQM;$u6XAdGC>TzQMQKnB%&(Rvfq>+^YgnVi%cEMzTg)1d|IelaK +zVL7TMkvU{VN+1KLdD=8k3(83YqJrgX>((9QG-izk3JH3OQH~HixV4EGTPKKHmiAt0 +zPFwMk`%TUca;?OT+C=OI_)MmGk4go(?4e8Gu1itvA-4F^+p#$V%7_ihuTeZPxXbx#-)N@gs6Q}DGXiU +zi3E2K<>bykAA)6Ss^M5-T=l&4!rs@lD7yp3Sn$j?IeFN!Qce8U%oQ_vh6c2@RH4NY +z1BtekvVqew`O?Yb%l+(84rj<4N&@OC@XtBDDe +z7(96#%wztV{Z6czcbelAj#Ty4NNa8DM=n~Vng1c}$FF|y(u$@kwRph0bEZLM_ZZB) +zYF6~(%CDc0Eh#_f7OnT){!H6$PP_3Ow)_X~yS=z~S9~4Pdw5DlBT@K5FIfq2<+KG? +zfy3_UkxiyquTGo=&)gFxf6@gJyht#KH|-)`;Vj7pLA=aU6SE;iPv^&6*zdX>+|nDm +znJOQ?c8><8=lP$K=U0eA7_J`j2^adMIzs<%ZZgE7@U@dW!op8Za#NXgewTh!VkT@t +zNaeDR=@Pn=^(-%T_eXa2h!{YIJt%lBo~f(ZRxxKXdMZ4utux;rwLTQ2&wU>w+|d-_O}D}ON4e5{ +zrCRyXxK}y(!Q}*>@F1vJfED{^u-67>owK2;X3%OT!WRS~v^Z*zn}XRV5@s~y%c-&H +zY9kZ1`3pmmSU12GEG(fWL5A!tUYTA{R7B&p00i}C_Q^T_>XTx*MG~v!wIAI8OHk#H1>(>Ul?z6s7(8G}*C&uVJ_4^IV6)aBw?Q +z4-CakDCs8Dd$=@Q{+fmBb5gYCzQup09sw>iY>ID^yuf{1BSM|PJ*5sgaZ!2!ysc*! +zj`h?}V3^L2uitg0`nllQEAZ_lMB{PbLJk=PSTsrQk9Iy&eJ~(-fAhoF4ejq+HHCNV +zhd^NL7#Avj9B!=@s_mK^v~hckiGkteet2!J5Vpp3a=D&e(O-u+|iU@)^@A-&rA +z8*tQMe%?Sd5r;;Nyl}1Aolnt%yRSx}Qm+G7q6p_0zlh=vvFR&fPFCQT2A6nlbgd{F +zyN&&OB=!mJz8SwQESjgKv2ITC-QV2xn)btpbpo5C*sR7E>1^gM;D2rzZS@xRBf8{W +zG}34*R8x5XNOi2pq4xdX;3YpD2xNdPPx(hXJl$GwY^bQzb&i8u?Bwwq|2nqoue5m# +zkfQ^&psJ!;fCK!5xbQ+GqyuTBtnqt_zfW<_5A*~+#mt7ueWjyOhTq*@XH~TwiYd|8 +zyRZt%3%Tn%zp$SW(1v5hq=>+zBv~7s#mNB=uHdq!)heZeN5?H9rbc5k1FMG5WH)S` +zbERO7|1h-{W$Pmxt(jy8nB7!J$}4bscMB1+8Y-1JU(uFkM&EgjSY-XyQUBoAXk{2W +zKz%|?I5oH^lP@_5Oox1H{?w|2B55oYlj+T<*Ss4)Wa(yN@AzXI-{U`8|fB-2m#Y^0T@^{u|P*S*_S{OvWSJiRmUZ(>LO^nAhDx{_zhpMvsNGf25pIW_i8-U +zs@$BiXbWIub+2F>6+j|vGjt)p!BGSV|0EZBH!Wz07L(--5|1C>guij5);ZK_QzU6c +zck?5zN@(Qsf0SIGL(Sp=TDd#J<`_EBXBfrs?iQE!>XM6#8q@=bHAC>~TnQotD!+aF +z&HG!RqtvC6hZIcp#*ZX@?5ppdN?NH$W0sKpETNrQ-Ad<+tBb(Qix-4XfvPOgKkZ~l +z8+GUpw#m%&!bj-e!E6FH6~N0R;OXdvkDeP^?~)O4kkXwO{P*!K(xQG^Xb{(LJ+@>Y +zLFk8^X(Nw%bJF3J!k8Z@I>7<7r4bfdSQ= +zGD&9a7rhjHw+Y;}AH_L6@D7(L6EB{HxlZ6&_y2%8_|_}q3!$_(Vm2bFk&jK$Ge5^= +zRR^QK*t*D63vE)dg8*lYf}q|;)h|#G)qaGHKg$QLUHpOJ>ZRnZkZNz+o8>S{5V=GBi5t9^ +z?_v)xA<3()ZfKu@rmZMt=|tnSRa4}c8GrJCD1(TPFbVLm9_Di3af1gS-Wpj6(RmDP +zEHis_p`VkP`Gn4H%TwhFWUo3NwjKuJDqwa6QwLEx`#s7f7r+;>U7wgv9ZC`Rj;h8? +z9R(`B!I{ye7*I>hRCo3>McZEfocxZ7H{A7ihHiNF%)O%#4AutqAgwJ&;)Zue6W1hG +z-cd8Rv^hrDcxJtBFKZLQhe7w$=;O)>2bBdL!nW_{!*t1*?sh?&T?f8s4@AEWbzKwrx*P0CLX5o~Gkl~=$ +zw*MR<{xy)q>>61|xrYo~(RqeDqD^`ho%cKw)v=00*lI3Dw%BNAAus!*f1q$YA$v1d +zw)jA{E2!Z;O`Ze##3*^SYerj^O}#y*5n?${J`iPtJUhH|?hXR!yxexp7x>^+Zal60 +z@hsSp9qu|d6afL>yPPZ3_QTZIyvR^dS5DyZUh9t7uQxd+4(W%~cQX2^pj!XLsC=tX +z9lTSiyMsQ}i_Bb&hEelnxT$QE`^X)ER5*iMoHb(tNl +z-X@%>4G+8`qH@eHHDVt%$@U$7VI3hZG}%-)H$k@z---=eKYk~_6=)@>Nh@%g8#yjN +z+yCP{tt6D0ok5~)6xfM#2_8I)2j6b(MK!qz7TajE2gTZr@Le#2fmbPOh?1<%}y +zbGubaUI6q#MEJx*Ji1b&qvwzGZn#nN@RXVsk}g1P-LV-_XPf6GRF*&PQ>9aIQOXni +zTG77st5T|RP_`NFujJn#OuUJZd8ByM=U;y|TH38zKa14hjsq}nGalCd@nenEqO(l| +zzad!g1&uMPwQ2`??nG>fE~+hVhlI2>&iH1Y;K4gn$9#{;BkzbOB4dBzDub9hffBl^ +z%$T#%x&EEUKnLPvvayflA0x~x`uHcSaD_>>t&zeNI@w~WI|U@r$RSSX11Npb!6-ol +zI7Y;rBU_+jvsu)-Y`qVifqsgq`dD{;)jSY4{+uXDL}ye9J_l|T=?fs)UvoB47{49&^Sh>_l$-+wfU~`4ZFu6_rd-D +z85VAkMCfI2x(dn50pa@7xWns^@pCir>UFpk`v4TK5VP1Sbs-KG1~0J1r09c_?83Pi +ziic{?vY;P$J26UCrL#y1h;YF7%de0uxYEXupxD4yiN-^w^O5g(2P@bzU_B1#h)0E~ +zua|W7ksJ|T2XUaOFzpx1c|wO +zecO1A@)jofLWeEJMT%)5GE4SE2I4JIez2IU++?_c&+^kUT3oceD#;P;uDvaEfRqQ(BYkE{}Pk +z9netBwhFpQc})?!<$zrH^`}tg1Mk+>kJl()2z|GR62f!rst! +zPUEf3*o6+*fZ|o=1k0Mz{x>16fKp$shQ+NUiA8iV-L@(_Q9$++8doseLN#5L`a8aE +z&Ol!7d<2FVyvP}xFDM&7qOE=cr@6Dw{}4#iMhF>(@gaSlxw{>d=_m(s1VnWQqaN>V +z*t~IGhdOD8+0gDs+Zo&VTQ43k)hHq0`3UeM-Pw<7qu;PX%l4g;MYx2Bg1VB$G(x3> +zR&RfK`w3tGF?DTwYc~V<2VZK4MSF!TJDp6I6wOuM=g+Z?;~f1Q(J`T1|DPnKv)Adk +z&bd(r;$A*E+=k~Ar^%*dOg7|LqYA0M8bB&ryH!}E)SJ~p!I2{j70 +ziCq1BcRHYJ)AUo-J=_G>>@;h*w&bE&6$<9}&D9e4utUscTkgwZePiV-xczE>tP8a= +zzI8q-oKP4mXU{R(`Cbm(+!P{2ZF6#QZF1xDIgRjItah9DNm$_&{)=GubO3-m;g1N} +ziY~z&y@jF}8^wAFT^$opa8lX_4jT7KXfk65yKR3FvcQXN*++P~?e*oT!d56%%nH?);5CS`1j50lJRSvjm}L%Atp3xzmv +zY7kWjBZPmzK-`Y{Db(>ry~*wRv^XIZjZn`fdvp}Xez(VsEg!hQx6MxVaSr(u)jeoK +zcV)sL!$XxL+?S@49shOX4@?EHPZ;ZD{il!VgQ35Z6-%@_|NHNDM`JJ5Mm`z4;Z5e9 +ztc(2*P-T<`Azaa`@7Da1Q$qAOVbJ?k&U4p>*3X(Lm +zHytBq!tgFiAqy*O-AM-S#fQvoaP!Fcb~M_n>gBUh-|5kOV&`O|HmD;&ppoY3OzVC#Rjddv@3eG$;N;8p1RH;`9(fcDbt*}P15 +z-EDjWU5rPZ^kwJoWJpEr1wWIQo?J#AP6jHK*Z0Hs(w4fUop@r@i=LKuN$2C!RD~W% +zu6>I-zgWZYlo%YawRxDxCxo3Yb-z^McGe%L8tvIVo290Y6JH +zm9#)DW1-s}L>dL@M=`|vqaKlLv1_r?^| +zTwQ947->+y<__3dA3E+_eTH%u+3KFovD^sVuKRX+^`@tp|2-3)b8Xs7sc$vwlQ-k@ +za-S82-fb}B*8rp_sF(sqs!%7*)9GSSgu$p}Tk~{c%AO~Abs4sXrg_x{_AbVO +zvw*k|4{^u8iw?h^#=@LX8=oDN(mO(9J%aip?7Qe(#~u@(@r^^f%a)@a>mwU9%^@YC +zjkM7#WaUjiQZc1TO`1!I`}g4???Q7&PQ^#c)#OyNfdx1X?r^OJm;O#@)gz>DZ#ZiJ-t)neF!*Ih^60MSt{q#NRv{=NB`t-?n2?*u=Pf +zben!TH1cV1P%7z0U!QqBF0WUPu0NKIdH3G?v0#Ls_ob%vJd;x%aEOujFjw;rRW9DL +zZeK;rHrn*JwWVo3r;x9--d?C5sV)Fhv(Wh-Tqk?H;S|?*UoR5)L#!qTQmoq+f9%aa +z>3RJS=-_UX#eJzj{6oWTMu6#88C5b)nd!{}&~@*DoxRyZ&xRC*@CMm- +z{5hGZZvX6~H;pi&>A7Yj@xp?vj7cflhGe`xW|yPdcOB-ue83RW{e~!NG +z`p%Y=Ay`&KEzvFXS3hXK&fre*3QFdfC;n@2%U)_uDdM0WU}w4wu6Lw^`bWhKAkce= +zJgen%mU$GA9FE#N-BV#;!agrw`3y1JLPo7kSuj?kcykd5)z$cBpZ +z^WbjxkACIk@8ZlT^HqI>3bh6-7o=IGK-|$daj{|8@D_jQ=)`F>6Gx;O3fP~MPK8EW +zdozg0h^Eexv(ry7u-zOjh_8I5fUvdau-TXRbnWGtlf5dzUa)4{-oAM|ciztuXYlVUzpAVx5z7jU-nM4nLRb(rnSd1 +zU;QN|tC@PmepA}WoWpxc_37R#mdD(gj>*=P*EdRhz|38c0+u9aq6)`pV(K7Z;fICc +z(FZU1Awn?ourgkpn+cV*U-{g5~9tk +zGb0Yr2jz*a;O?OB(Nm)dHb!NDG2t;}c`}o5#2;N;7T<qW~Ah +ztPt=iRRDi9vXt{4;b!(%u$}uX3?8~Yf~cM*L~mE|%#)r8_ +z2l?AbeOm6_z4O|#1jP0~-gzoh3E6*cI^71{tFr$K+xw-!*7&p_7tw`DzojV|q#p9CL!Lnc4EaBZO*Q=x4i@u>{r( +zI-RpARYldxL(&>c0B0~B@qf`A7F&Z8PUztYdSeFGD6cP?3(J&1?w-tczlzggG?nYXywzgSblaV_!%B*#s^W=Z`8@aUU=OaX{1 +zW=(kJ^?YP-2I^}Mz8$8RYykm8Ni!F(90YiJ*2g`vkj{EmxSARCgk3C}?ye>_mkJ2o +z4HQz|>SrOuRF>)d^}fa%pjbV(p2NcvXTzbIn?n=9`Sr`xNHPdU;@j1 +z>7IUFop1^YtZI0F-nl?|&79o}Zf9~0%}7|*m;--%e`Y2s?7HS|wvN5f;GarxdE?au +z@@0k%h79)VTJ7YGTg8L~T1AKa^}jMTJTnR2E!!R?7M`@h6lQ7&)+dA^wyKh|+{&~5 +z6`!&Ex1QKi)tNH6WIJ!TwlVp*!Zd~e&AeY6aucZAbrYaTnX7@$8tFxIORrLW*ZyX6 +z^i!s1;9$D?YxKCo@Up#&+@eska%SqbZAZ#xS&EJROL1>2@3*th4)COYxOOFy6?M;g +zUPIluY*#nK3P#IIcfI|Ie*x*Uo=pk8Z#`TR9Zrm`E5}{wUP0!J^0*Vkt&}c#(B>St +zFwJ?v^$$Si>>AF==;T{9ZF2VTG4`Teuq(qtkyAqF3~5cF4 +z8d!^Hw7gPStxks9d&Fvwjw^n4|9BTGZV{o-I%mik&)QMIzJPyS&fe*_5%B4^{tWupGvo?3`yP;obK6@UoW^@& +zMe#@G-v5#wT=IY83Lx3Q0R$n7L<__cU9-tcW|=0nS22yW+J5G}E$z}*M$gR2HguA$ +zPAA+2lP;7lS~jAY!t0E@`HSU;$)$;D2bcexH5PKU4Pk^m8gKC}>1xk<7Wk&w?iQSV +zR>7azRIB^nW`{Rz^8flFfZ($gNVUNAn;CGMU$X2?X4QVPeB4frXswK13;##B{*R6! +zxcERB8DbPEU^L-hpd38~$<~WDvq+??dlUHIUbuq8UTSd|n!GSdvh&uBCtgHhG|{kw +z&onm7KV8mY-_ze$guSrKIEykwJ|pBkSwumDP!w4&m)<7iK3PNwRXLeeeDfu=i%*(S +z27%Td-x@B~F55d&ZoR73>DM)=Zgf`z-BHod0;_SD)|vd^>>M%wkZ)h0ERO273VKt; +zqzoSmH}(;b2`*LiMlj6&;#^p7Im +z#OnXl+1598Hns+C7i9;{@ngIBn%HryMv<8}K2wllNw-9`{AQ5T0;}Xm7x9}6g<}x` +zedMO#Bh{UtG61hYxjQZ)_Qs5dVR&c4;MvfE&ko`)|LzR^|Ruq +JN-4vD{{{RBR`&n^ + + +From 51654c33ce2479ec5de85fd47966f179071e29d1 Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:36:13 -0500 +Subject: [PATCH 13/19] Delete icon_40pt@2x.png + +--- + .../AppIcon.appiconset/icon_40pt@2x.png | Bin 5780 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png +deleted file mode 100644 +index 3ea02f17f587b3114f3abc0fcdb8b7c07fe05631..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 5780 +zcmV;F7HjE=P)Py0PDw;TRCoc^TxpP8)pb6vyQgQ$al7@Mj%2FIpwDwRK} +zBvmQ@%kNaB@+Zr`R2(XCs$5BBtBRe(aoMsc0um785L1?oKne&6&@yP5(d=t?Pj}~h +z=f3at?c487&x{1I@6>ze+{;`R(MP +z;kD|A^TU2Sduj5hR;%fFf?<=*5Wps(c0z-pe69V^UpxCBwSJh7#kah?T+gboa6;H` +zmp~{F=U*>CAGZB4-mnk7MUORbcZ>{}y_CtASKa4k&qaT&a +z<@EgvVSGIVMQdkpt@>uvJGGnNPVSkyA?#}WMWs?Hsle+6sGY-h^6Sldt@dw-{?gJ? +zQh{qVc)bbx^DDJwxjJ`EuFhYR`SOC4s%2SPUNV)gLZ@`*JEgbSBU^em%htYO>Btq@ +z?g-!hYWVf!UqIEdktfBt&r^?dJq|f{d~s6Vy7sOfXXWhp`!c>bEp@5IVq7v1m%DT{ +z_n;EV=I%k+y=j-+xp|KsyJb`N(3&qfu;e%9N(!0J`?}zff3&c$kRW(HfP}{B00F=* +z+SKBVymsk?ygG7RF3enx;W1IusjlE@XnJO7%@8*C9Mre=-z>kh<9>Ny+dVSS)z@Ti +zwVn0kAI;CtGs@NaN%U6h@S=islW4nG?es#}hq_a?Lp4O(fn*5`gnVC!g+t^PP +zzdLzezVXJlWO8xJD>+qVj+jM0$u};~q@+~9GE4J9S*#x}Y#=s&L!ATiJNG^{J#ny1)aq}BMu +zp2y_zU7w7H-GdV>zV*`q;r{OAzsXNWPlY1u8=lG~VFm!T_*Gp5 +zm8IW)L7F{=0N;1hUGiH8p0d}H7GQj8i9_S$n6Kya(d6W00-!Gd&&i-@A)pvvs+Q#I +zC;nN^OrLKg+@?az*b1lS^c!Gi1-c&nJ%hXC_wN1;=`M6-MzWgxqlt-$B(8Q7LQeqi +z&wu*2GBS516n&`uwF1@>Ongb%(Yr-{|Ilwsm%htETWkK96OE6L>%8;|gF;rrwteP} +ze~`1Nyr9%u0?~@(HZpr50-lr3s6)C%-?rs@q$ldKq!y(l3$;aAs4q#WUh%XY+u|>X +zr)7dSuxDVWeD%O@+I9}}@YGUS^E);+mfS?bKvHMLgWq`ToASo^Y1dl;kd0POuXJz!h{-MbD4CBHulK)B=G*7+~t8U~p@Gv)tc(r))3WBsuTu8K|w;t!Z6< +zuskZq7vGXA)oZGYl|(~IT-8><(&GKX&dbDi?# +z{zv8RuDyb{RhtTB=W}_vr+c6Ln)-rI#E3tv7b$qeMe6fYl^M%1D}UlZ +z3cVaVX%wJh9Q5+yn7lOln$AE3m>E+L^kWJh!IEw+49Zsq9+#Uth7;fjP&?{_>hta9 +zZBt+Hc~fztL>i|pYD~eSR1)g*DnpK!7Dki2nLmpxq&W<%rX9X?OdkwX;m-a@U9b5J +za4|C6u~DAZL}v98;6SRi#9r24_N% +zBXUh^#EKvSTmvwz`uwqx`O9)@=B%qaRvxJZrKf~~sY_43Tb}Iyv=nn4Nx}$ru^u*g4aoK^`!GkgnQXN9B$l1pLJQ}HW^wd;=A;LuZ +z`O*JYca1-Qg&tS5ZY!x{N^#&i_k@DipWl!q=O>#5Kt7*0eNdk#KWWf#+X}<-$cB$uoMt|bH8UU0^@Qd;Q<<|+ +zd=Nw4ZXz5E5ytrOsgtgR~4^H1wa`!7}e +z1aCAS0tWjW3wEeT +zi!k2H?(MwQDW#lgyJ?>1FO-KS5Epeq8TyoE+27Z-Q+6zFkr90lOWSZ{6FiMocpP4_eb=CgQUTdk|Lw$#=0@Ah+#?VN?Gf~jA!`A`NxwMZt +z;5oOQKI9K=IMlR_)3!7+c3T-3oJ*<@^MMN+_@)omDIh(&c){J~F$t^UO{NYg9Cqf4 +z`u=u%0*Wsuk3`W(Iqp+mMxHdB%W+cQ4tZY&ephk3;E`D=(#K-V$HH=;**xZ|6d3$s +z-vJvYc%&Fy5y11MO9qbFQw|gjYXFvO0e-J;kAl9H@*4t%GbTZv0bH-#_qAHS5alh_ +zlS^k@5-Af=5X{*yAkZngnE)>9EAq*zKG{%o2ox#o_&oY|blqk^5fqG}5j^nNZUB#4 +zkvsuis~k4{20Olg@{ED<{hhny&C)xXT3ivnk$?vVcz6upIiK;uZYF?Zl?lyW15$$k +zixl?B(>)BL0uc~{HNBt$IR=VGT~dF{=d5f>K)dgS+Y?~-WNz1_6=L4uf1 +zu#i2l*xIq#sj5vj=oo-t(EN$x%aiV63xUe@nU_)P;-rnH@WD)X-aUS&4X4oniT#x* +z=Ypa!3C0)BZKqE=q?ixBOFuHe=OBxm4XSryupsoQ>a4vu7F-B5Ifm0KJHYG;IKD_Y(Q=Wi1hw-B6q(1!s2#KUM +zAAnF!87bsxeA<|=>&vrzg!=u3UKy>8$LhHF04yR%-T}CzpTn@Y`~|_}0t9RbgbJm4 +zne}IO%@pl}(ucAG1^3W^c77gczs9U7#?1l6igSY;6Is%&&dMX@O!w@XX5tcql6~2c +zfKi)zKo4LWidxF5pH>C_f?z5ahe5QH2X0%s;rvixMSs{vdXr3VL50LPFm9h(1u}Wx +zVNvv(Oc?++1WsX27E-q`?6tc_Ap!bN;~7(WqRn%u3yMbHyuA4F%+&Nr3qZ_l4Ovk- +zvbQju(GL5a`XH1QW2)9z109n7WQCk@MT|FE +zR3ms$ZSE@<<)+ty7>6BhBlO90OJQuKMz9zc06-&6<2lC^gA?OftS(v1iI};>`I$fE +z>33r^knkMiTzjC(4uzmYkv_t~io2K-3SCwnsPU?Ey8ON+25^ud4)UNrPdRL*fkAmY +z>f7{r&I|2B2kmtEoGSq2riX3in1V;nq#B@X%ne|gRU9d*FR4J2>d6N%uO&8^+aOc* +zSrfw-8?Sw&D8!ScGjgc+E~>1G5iVb137ulr~IV84+cODTg=W; +zoKUU6pYR82I)>KHl{< +zucbtHM*1@W;1(XZxMB>{F0^%7l(L-Bt$~CQFoPzA2lAAMlygCSo_hY6&r=>!Ux)lV +zrT6tcu)c*u{05enoQuYV3XQbW59KH3-_~7n +z-WHaHVKxCKiUSla&I`Hs*EiTtHJqUJ-1Mm&#D1{g56B*85Jq|UWsd5@#F&12>Uq1) +zAb4yk(r|nEGU%-4@aKRxw=wm3`trwceg4ku3-u3Tn+~b(^3-#OFWzN8ZajsHK5hY}3N-ygd9)B?Z<0kO3zzG2%*jf7Fc)R(&95G$0 +zj4DhnPST_(EI%j1SWXuexf7Et09zhs!M@*m>RqxwcbmMGdryZQQdlkAie>@bDQkZr_^wa#M2sOplOZsNTK8NX>Cze0RIOAa0X@NM`!bucznpOI(A{!uFRWd|B!j$cK9I=(?I5uNw(<%6kMg!rro +zAj@}ibx>}vZg+PrTzb@j-N8WhK%k`H0rYHbUcNT^_x7c5CIk?{v)MfDfZ~9R)aNP3 +zJn(F^1)8Rh=XigiG0ar;$xFkn#RnTKi0~SST!(8z$@T>f#DbJSt_YwxiMQ9MD*B;$ +z90eTv0pJ3SKTsS{1HG_(S^jkN>-u8cRU#A3q6CkCh13Vh=R-a8C#qBOXQO{37b=(I +z#ny-cA`YwpDc2*W$Pu{$AT&~+CwKs}>B~hFkP>asjm!OVf8~ybV=n+J3Jm}h2V9e$ +zD_@d7y!16WQ#zki4--aE;MvGi9#S7PpAYrUmM_R3UH(gfZwG^miGB<`bW#9Cj+?6P +z;ensO&l4Y-$lU8tfHK>IO9!P-UmIctZ4|kK$DKK*K5r|n~U2_e70XS=Hw5t>tCPr3Uc%T^7AK8IcW6q%P%W+AR#Cl +zjH`mYFCWQYm4EF&s#_GFr659gh6UGi!RS@Zf-(h@IE@{}t@7&|KQD)R*7o4R*~vct +zWZ{(j%f$C(q>P`PF`789I2Oc&)+}`+*t$>8J|^2L?z`MJ3V>ov&?gU?$X|NtCFjM4 +zR(E=>>!iHW`-VmmPlY{3wJH;leUssfgP)Uwz5DcQve-)*0eT69rmK3tKe=#5zN0VR +z-(Gqb7Gf0!laX2|Rv!<|-z^U;x$nS)epc#7$BrFKekZb$B4mC=9v=9CoGFgj6f6j^ +zj2EWG3}p%4o_{ss>y#0y(l9c`szLgj{r5a +z9M>M;##ZUg_2@TA2kaQqZg&mg%9MRqXTG+uW`ALPemvXD!}6u6MISdtZ` +zE@-0-R|e&&iASZgp8mfS!nnhNg1qT@VlUS8 +z(?`t($6E7;D+3S{2^1-WAz*Yw3S9*7cmToye$EA +z;y>7RV>$>QSPoL^#MGZld*K4?(QDop#~+rCs{8j**OPzK2kS6|GW9_OkXenod3~b# +z`D>q$ANRi{KN>ux_eM?7YkWz=mk|KK@lFp50z9~2c!6uYyE!{cz%6O)#1sn#w2VTD +zypuco>QU7moIW7;PwN|kSdBTOOMWf+w>*tWl2C(m%(3tq5IQ_GwO_U_Zj%2T{*lZT +z@a-~2`@md}pq +z?^jC0PL6rn5*^oV>O;nyAtn!sX8Aw+?6XY62K`ewAvEagf~Wp+zACQ`{;#~=f2ILi +zsQeN2BmETV-kH7fvB^87qh{YDShZ*7L%`DVw+hTs;OdYbf-Om)lc-sNQyh&5@KXT-V%3Tq*GZrpjXM=ftRfX-@B1}eQWP~Ko~y-XON(!i%LQmFd8 +zKi`-6IzAujBmWg|BH@IvPvfM15TS0neopU}LrZ;jPqecJTtTJ`<8;E}fh +zcq0G^jo*kq<056yS+=Q1dZYEz{5EajG=-n%vFoj{)#TpvR&F&Dd>yPbgTy#_(4U3I +zO7tmXyb +Date: Fri, 20 Jan 2023 20:36:24 -0500 +Subject: [PATCH 14/19] Delete icon_60pt@2x.png + +--- + .../AppIcon.appiconset/icon_60pt@2x.png | Bin 10507 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png +deleted file mode 100644 +index 68f41228f27e0b684d1bfcd8fa2fe7452e519b10..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 10507 +zcmV+mDfHHfP)PyI#Ysd#RCodHed&`N*O6cLoEQuSAWj|tFOVQbf}|wUB6O@oN~Bi1OK(`Ry^?nw +z;dO)~?C<{KKfuQa$J*cQaIC#{tizU9vPIbzNsF>2QW7ODwY<$66b}#}fEnB~z}z#= +zU%vON&dRRp>K+UrYQvAL%6xer?^Rb<_cU6oIwTLEtyW7&A`W;tM!)|1m2b*nz3nym +zi~N55_afg~Sy?F>93B4u`LBNkhPVol3UR>o7)@7zCVx>s%13^TIm$`V8d{cf+{EM{*{T3RG +zKy8v=f8n@l#DrpiRXUfG)^B{5TK;n84qsLI^mU1j4UGny61rIZ^|s${JpIbYcrR8z +z+Kcl_`-_WDCBRi!MzqK1|0R` +z3d0Q{bYWl?4q=45_(Ugnk;6ra_XjR6@Q8j-P~Q5hW^l?}syBhE`b +z8vRGf7(eqSguKV2y{I4UuSLE!H#c|5c5n=Ez2_{*(dkKf|LhSte*T0UotczlGgES0 +zk9lpX-U;Y|6szAEfQLq3xoL-7wP~kZy=j-h>$mJSxZW|Zr#r3h(%EA>lhe;`!pDE}}-;>lGU|%WXSumXGbY +z$>8>}t!?HyU~A34AJ?r57cQ_Cje3sDiCI`{Jmp?l*=lQMbXRPidB +z{KkUEXu7vp*K}Ga`J&!wtxRcZ+RlyJ<+pFT&ze0rFc^dRmCsuoj>=|`!-O*^=W-&u|_rJMe1QwQanuYFG@&rhim%Lpv)IK50~TCz@AKnymA>$c2q +zUI0-)S#6)o_M*RC<2&UKZvS1medoTmO2)e750NH*G}w!LYkGQ`m5BO%&zl@p@v&3? +z>l^<|o}Q9cm2bcPm_3L{jf74par2fdJ8F~6f*URz$lwTZu +zNyS4$i{hb(Rb!pyc}vcQvUi314nkE>j@B99y;t8Qe|!H|Wn^HuxYLG0U42mZs?j7L +z`Q`%+rok!!@2IKaUbYTDJbg_5_@)0MQx{HFi?|&CfkvO9L7nAoFQH0@!C#bV^4}|e +z=h!y+`yc;(*)wrfbg^#ps#scQ&YUTBa1>ZK&)LxP$6t{@ef42k)MvzXm*m)>7(;x` +zjC|hJ0%An@CVqQ4RPUk~U+4agl(xq3z>xgm{=X@AU%5YqeaYt5U^EsZ?%<||H_3bc +zPY(Y={_KrMwCvS|V}_j@s$8(xpm>Fk`eB2wAxB(AP@5ECyIpBsj;<}6OUkqghz0kJ +zTOX1y?76p~5%Ki`E!Mw@PdgsAPMtbcRJ_SRjHZ0y(i_-cb_ovSdb1IN}x>S +zVNM<(Mn}Q56O6<7T4}~@3VoiM7EGV!iufP8;eL5&@0Ys9%D4eBm=|Exi1LsrHMmOY +zVrkz#_?Z0U$TJ#Tw$#+2=&(t?f!}w7qP-YToQDJcTj6c?eKR!GrzjOWl7F*LP?$D+k4SQX`bQcZc;lC9~ +zAx7kb#>>Y~kN$&a6z!^vVToO3{|K`Bv_*L6Fh?Oe>`PiYSN~QQ0o}qec_M +zL87$(2Lf<(i?LvU_-!>>Rj423v!rykL_f#su4|+Q8#Wr{u$> +zDLalWohWuX_>7-8MRj1P^;CwJ~IY6^Sw;UVpT51c)yk~f*D +zsi}%(3s&c#aX^fiEa-=4j>*4x`QHgXI4~J)Gn-O6$XshfSzFuw~ +zzE;KtMvH<37sbM3+>u|E$Lz|SyuEl>4lW*&No_pi>(CAPb&EIZVorHH1o?+|{XN+| +zeq|xnRPREt27!KSa&ofveQ>`H@D-VV{?Z@IiTTs*Vq-11D;g65#E8W;qCZvWUq5`c +z+%tNc>>Ao;l8rXJy*1!d%cteJx!2{r#Sc5Q8*5Y%KNm5K`Pg@E*e3tz6aT=Tcy%~Z +zLX)pb{_*3-dv0)*Q&0QTgAdE|CtfXfA$Uv%FpZFL(fwvV8vE%DcgnWGE!kFYpfYh? +z-6(D^gZige&dJYbUzQJ+j@9aREMU!#wB)OM{`c&-Q~q$@*Ln%7Cz%!++>>O3(9@GI +z$e+FQNT*cHr&FR#K{V6>NAXRqjq)2CKPh{Mcb8@Jj12(9@Vg?5tSfkD@rXP%`-05q +zjakR~jGmZF3N3Ow=bHcD+WS}KGrK<7$y)=(ZnCJ?Z(&&2bBi}f>b>s%QZ{t119WccrWOG3$P8ek`c7D^y9=UG#D*5q+=j4rr_tJXI@d7YK +z^AqwZm=LNOD*v$7^0qBE$(E6ck_79`yqfw2xd8~_PKDeGw-CqF_j +zLmY3r5Zi;B^cx&{$BvwtH(`;t@~jR$=D(n|eE850;HorOZ$OWigxmx&r3W2oHU^=S +zE$B#|eBiI2d0SpM^*XdnhJ3(8NWhw@D0K1Qp|GJ0zD`qqtTifsZS(!Ib1>aR(H0@( +zJZ^g7m&hhMStw +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 +zFOF+tZCg~e5d1uoR +zd2`~B93G$4A0PT?go-cz?>WEAn!0ypx4zfp3;VCQV8J~WK*y7;AhWJht~RdNrWJ^? +z-88-1j@hAkd28YWJ5G+ae@JXy18gw1eSVAFGJUNbV@v6iDX8$qszJTjZN28-WUm)~ +z>ybwu(K`3GGnyI{`7waThU%q?GEo*l`J*?8l +z>)z(G<8sTHYt82Ak!d+Gaz@ULUJ&4CM`q-V-iM8 +z>qS4kVari)WdM4dLGn@n=yCGgp?zU@{9!#19_KrFcd-b223)a$Ya5p2oFczpzj&v5uSK9MD9XN|ySMVl&v=`@1`i!j({yOIW{{UL?HNUxuVjutj +N002ovPDHLkV1kXqsJ{RJ + + +From 6a69da849ce3512b8919d5be2bcc5fba6d9d0dcb Mon Sep 17 00:00:00 2001 +From: MikePlante1 <82073483+MikePlante1@users.noreply.github.com> +Date: Fri, 20 Jan 2023 20:36:30 -0500 +Subject: [PATCH 15/19] Delete icon_83.5@2x.png + +--- + .../AppIcon.appiconset/icon_83.5@2x.png | Bin 17350 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png + +diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png +deleted file mode 100644 +index b89cd4ed57db50c9e85711d13fd84d97adc4aa41..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 17350 +zcmYhjWmH@J(>070Da9#PAb4ztEy=C^0|-ZP2(sw{)?p5#3o92|z6?C0;WeaU|xRAkuJl|bJIYb6^^D<7p- +z;qL!VHgj{U8$=wst+fwiAeQf`f@YS=S*3uvITZtQ{5I +zrGs26Rh7!D&|Exj0!|YS%u=~ZSj0a#R9<~cI9G$ +z9W-BzcFTlyrip1VdX2H&Mer)BNSv`miR1q9-(GpX8&W!YY;8@URX%zNQr4a#uw0nD +zT0c63$o_HY*~oL~%Ze${(%K2x1RNE531z9Kx}bOZJJ{P-xgRz}33M1&fXEyE`c55E +ztXZ$$ceO*oj2ACFlN#$?_gjkw8jqW&r>Aw9Nfv0+Y8M-9<|~h_cgy$}t#OCCPd+8f +zVrnkD@7|PeUPgDKpOlB2*IonGmc=gJl)GDul8!S?ip~yqg5%pjFV*h8f9=GYr*aQ& +z@6FB4PyVLroMATi;&(x_aF`sf=YV^iS@;@l55LrWn%fAG*?M`m4KlhR&o`rV9My0?j5 +zaq-Qg`boZcVt_$I>r`l}zI*`{<%Xs(AAoeskkt+k(OM5{w8RqaG=idOKW)ol{lY)lS#jMojC_7fdrxxu$WRhSxf?G@$7 +zlOL;=<=4lNMFKUi0uCmKO@Trg8S|gUNsh%Kuj*@}tm9kj_aWpm#qlL0<&(1xX}Xt8 +zOcxG_o(gaywRUG-psDE1lHo^ib5h62%yPew?lIIeptG#3EcbZYMR_zSHNf+x>{8Ea +zOe4OV@{xs4V|lzm#jsI)zq465_#SqZh;O%IY4K#YQ|Jz8%@TwgQ2otmKi|z9USNvwJd^5q2|T%|3-iWXl1w230Nn*0eGo5sV@ge5rPb>% +z;dz~_>J86vYURH9qvz1x=%OCsKN3-=N4AhNaMK<>Q?r@Ut#9+9K_;Gr$;0+@)XPrB +zUgxXzG!B6E-+kxvS5L@f38FsqN~p-;_rZ9%17>%Wwa=ZOc+&*ibh%Jj>iyMIHUUqI +zl>2vX2G+-lNN)min}a_?S;FEUP7n^HH6F8KSsONw=S!l;+dR%O9=HDo3*)}I!u_u& +z<5=OtTmI?`p0lIpl{3<6kj1Cm+T>Vt)_cL=_3gPjz&GIG{B^kA +zNG-F{SLHBTkB74*y?j!=Y5S!;wxQ1F$L{g@TNU~iq3Fw|%81A@)R^zHnjW}$?)JpG +z+T&!QZ0&%#q*d@H`gZCsiP;!Cbmdcb>;3Fy5g}m4!`8C3?Iw@DCFEOyuI-laD_XPz +z!5YFqpxzu+(K@w9muXd9wR`kMA!+(C~Jxw18pOXc7=yr>3Q_eDIfuD3QIp0lVw+S)-rYCm`?3 +zcbAQ(Idyf0Vq3cyp|)yS)bxgp)ejlmU+jMO9D(nhW}s~h9b?K0>u%3O=I+Qua*()| +z)IM1U8sEL0dvFoCLq4kqdwgIkD3c91AG%Z~&`zXpwc1>Q87k&|as!%Fbx6IF+ak&S +zdl98Gdyjr~opW)hwEQB^7YRRSIQ~c-eKu?MLTJD7(f@F0`pD-|bi!j-HxrL69yA^E +zQ4Eh}wgD|*;26-b;R&fM>9fdva!%7q``E-LquSbb?T4iI;`L(m;^U*Y%kY#-N`}?# +z^{+bQ-oR0n_U)nxdasd>E3enG@MXYD{-7cZtn +zsqqg^YQ`?Ls`jlj>-X-yFFwQZfOxIzM9%v@r6Ddlv$wI+>heLnj^IqC_mD(6gZ>sW8xSy>`_rwGj19=j$DqxW@bsR}<> +zI+v{y@1Mt}PCrz6`r3Pdtpj!k!Y%>!kCl$UHsZbYa&?-Mf8<)bG~Mn5-$q;6ggXoP +zumJ)@p6^TEB*pZ|_h)|F2EA6LRYmy`d{&$D+x(7nEb~~E)+N#kCb(O)e(Sx6QM&e< +zjQ9Zw-7p}#bbgM#`sNjJTTQ0(>Gcewo1kjLIUTE++kzaPL;cSy1pcY$05U~CVwhKx +zu^Wz(iym;jLD<*f`!Cz?xsC^x8relU4vf6SV?mK=u4gusH@lKfV5 +znl>n_RHRh)nIU&><$INgv?(S51@aY%Q_5BB&LLwmc~3A)hKgtHO&mpjA7N=Q|F-i` +zyWvaeaM;x?sQB!HtOa2y+cD1(WBvpecuFSV{P{9XuDjCPC*jWr&jI*UE`7l(?T6r! +zH{l7kQ4zZ6p&T5T~GDmD|FxjM4hubM;{Nz{1IAKSG>v#36Q +zuFobO*$MX&cqUmULx}}0n{4djYFLNhwqQ$viZ)2COj7Uvss3@Irs5R@>? +zCSeoQA8unHe=XQW%oLgwMp0?S@l>*j`F1-hw&dZ5%!7UgZ>*L($>_C;1;K~_otbp` +zK{{$oTow2oOr=(Y8HY!PYMf~NzZ5V4YrL$l6!~jC8M8F`$>Pw38yt1xOa|rph$z6B +zH`%&x8MC9800-!qBM5q9Vo7#_9x8u|0X-QIwsgtxLbK!4$F=9k7wPDEeG-H2J_wrk +zuga2%$M8-XO2O8|WW)h~bu)*qu#^9a2;&w5;9s%Op8TVQZGGLJE}j7X(_As4yHO`w +zP+=X(?wR&B^5X_H`kyw{8hz^ho9}M-`}L(PjZu;1IRf6rx%Fc*L05Y9e=gb+nYig( +zLCrJ)7iDk6n}RN~tBZfrHUvky+p<6Oeh03xsg|OrecCAMcyXh)>EAaY4E+ma!&sN* +zB}@eshj@40uky;snDY411nKtT#Sp +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 +zRBWfhY4@1B*@c-UI-)`Cye +zm$>cHzCd3k*==M=*Hpi)Qw+MBlt{25405SqlWDtq9du*Y(u`WABd;|CH;cu%CaECE +zmP#L7Y}?8*B)!fm75IqRe(EJ+<(+@^d>1c3X=}sG2d81eOvqVIuZbI=zkJk*3Q%pk +zewjgWqV|qS3uY030f9^7tX!u9xzpFO1@5Q!Dx(NgJV>LQBy%p&?mE7_v2Q5vJr#Y*Y=O0 +zN12i%Zf{LW*#3k(_?N=P<_Dvw-Ds_OyP~nXQEdIiu<8?;|Ji9ds#qfH6s#ltFI|dl +zNVs{RuN?UxzWL?_0GAz4GF}_|z{%o0h;{t2YjW$K0s%Pz8s)XW2E*W^IZChLf7S$S +zsju)yHH}62h;JTSU`9|k1ioZckSLYr6O*-1#bJ8+j>no<`-()3`P0lxV4FfKu50R7 +zHL`H3%=WmN4}9?bFvjC-g788fUM4CvHsr0YxZW(qi`?X=%?FPe&J0S|d8D*Uqb7nU +z8|O|Iaa{Q~;pu_dYaInAUP@_8)fW|eBsT?fbz9&jI=TuA_<|&HJUkB~f8L|nB2lY-Vx|Fmz*FKkBtz1`k5X%mw}9m12FGDYV^MV{w#Z=0JO^lRU1q9LEE-YMG~bShUHV}{b%OMH20=m>b4ccNu+h&0~=7@ae1B{TQ+Q6 +zCaXVAT(nq_?f<#P$rF)*>Lcs{?%jL@ZA=!cSAt^NYTp2WVsqHCXwA+w(r)OM7~p7P +zCL*utF#frzo_SYz@cHZ6S~Pu?OpeqMArs*J%LzSE!}-e^!^~8YxR>{Kb +znzoU68)w|JbZ+z{&4&xu~Rl{$fGcmF%gvn$Z9rL3y|9$x`%#IV`fro}m2fZex(3C)MD1e3J|>UM)6nKs&&HTHaim7faq{%^}o+tuJ=HeMR1`#hUA`+6lXK3R!%NB^&TecR3-?IT>ueAoX#!@s-^e +zA7h6=l;cxhwtdjeP&~hUOf`6cCfi=VR@mg8_#Y;>=`5v;)b5X|mg}tbg=)l>c>NbV +zKFJX40Wq|<-%`+bJljPQ!QGsw1U;n8Bh}C0UJB4oD8Jl+16gMV^e$83}O?c#0U{dp40F1{r#T5NW6|$PR@O<^S-Y4xSI}V +zTC2Bnxah9~|2FBcaBV=lE&j4~czf}S)vqN-KcP?3!H|mSzVKrytIEy5xe~lJc91l* +zQZf+}AEgAk0Hosc6Wb5pR%~-oE-Ik;N +zWu`e*x9&?!kI!2T>+1QygS{m=5P&2xxi2am +zs)!&Xl?-V%jT5Y07$^$G(&2)B-(9EHEoJA@yAgi*C}9i!aMm68a8|b&_fLByj~pf`8iC{;W$IitM^YSJ7=o +zIn`;DlEdNw)6h0J=bwcH%!XT||KJlu7EE$GbQr`_*HeDcbT%7Htkp-vf{{s(4rP*s +z4bC}@u|Q7cpqhJzSb-6!?O*EL%oC~u6gThoojpQf%J)O1hs(3XLZ$K4?OuWX50wn- +zOIl3P9)`5UV4jVr;5Oa1OosMPg91h~oZGJkSL@z1Z`6<2k2nNXeck0spr2g%7B01P +zVqOKgZi(=MqV7DoZ01Uh&H74#{o0rlae7T4zU3!3FKIdqVQEVon?jG2Bs4ML +zp7)h6D|<-rA`X8Y_YUYNJBU!6tr^obXM1v7+^9&-o&EU1-%$PO8{y83CMF5-!uo`^ +zY>!rA0Ic}UytVWXrm^29?p8PntD(l#rOh(Qo +z1nq6Dew-FzoV$@6uinJ2rSng*A!-IFChB?=d@ki0Y-c?%>!JH~V@VXN&=V}nTXp){ +z#vXMkXmGY`?t}bvLF&;^k{eG%U8{GC1so1O+OU*&!>3pLrmU*foUxqOh1jCK9mE$q-$#7q_#rvW?N5aIQn*&B05yIwfoy-mw +z{syY!Exjen|1|;nA;T=)jLtX7kJkJPD}jx!A7OxgSQ)YGs{3PADQMUqeZ12&EP~^K +z7moDoBi<#^9Qks)5XZ)kah~K?=VMaP&fVHaVAA~IPkdc`>p+{QY8_d5DScF4TYBK1 +z>a?n2f_p0NvSwA7`>O!Qg$dxciy{MJ9tvVEMM1q`;Me*~W{rJ=C +z(HnHVbgcq!A1@~jbi0b7#YQ=Xx@_ziC%WeIQPq{GnvT~@H%RNgnL)fv%6ajV8Og;# +z4&1ZFdWK%}*eUEEoLhL#*J9Cpzy)y@uv;=x0epRdyZ>Au66SphKU*!-H&0V0nMA^O +z2a{jKGQwBfavU@mqJwr;>%xX-^sf5_*Ay$d1|Qk9T&Y&-ZoXjMV9qtyjh5i9BU+Ru +z)TdV9W30wDhVOiOHpt|g@?O7DyhIX4)e&JebddvPH)`YWGza#*T&#SFuar=Kuz0w +z^?Pv@TM{+Sjs56@^R>y-NpH2t}; +zn{Qo(ve#cJtmOI6l?)lRprPNp<9sj`34zbTd7na<5I*q@uj|_8ZP?pVE9zNCt1LYX +z`ivxtGcc~QQYm6HeQwxZ$kH~*83QBiJPuhcQ;>8e7>SYL=cdHHWU!feZJ++dG=?Jl +zeKY%BYT%Ntt&#Cr%KqHF>^uZNAx(+l7Q&)^kxoH;xF{thMbxqS(>h|*CMpIBb_YoZPxu?U|z%L>f21I<R~-51T8bXu2rpa +z_Pp8ueAL|_*U++y`7ud&ikR?QV4eT*XgaG4Yh6qSqg9ajx_4O+f*Pn0C1xgmg?(?J +zA{ND(b*N%rPlRFrXj!k0%>1~qfFkFwxQntrsF{GS-duVcEBw;H?3Wp!2arJZv@PIZ +z!G6JQRwTJfB476)Xmg4Ap7*l|=6%TWJ?1c2ljTu@mH}7f+i!st_l|=HzD9cAdv&`% +z=?bkk#y?7uX1k$`TC>HKo*D)JnmzeH68#u%F->KU+mVu>rh%q8({3T57XtJM8s7SA +zni~?ce-y?FDR}Es1nA(@9rY5u0bFBj(~*YW_Bxcxd;+U4`v2z;HiL*Y%Q0`{_2)~G +z13*6Y|xcdKpbmu|rz->X|~6Qy>r2O0_QAA;t24y7o%3aQCMX +z1~^wD@GXL8;Ct54;~hVr;rWdSwat~BaCc8ZKf4v_c$3Tb#oSzQXJY6DrSjX>nYbKN +zl1z?w5Jn1a+)V%`{SC=W=A$R2b+B6i9hN_kaiy%{qW47 +zoqy`yrA-!<>RTC+TYHQVV&#gT0rYHT$bafsYVR4$;%*r}N| +zvmPK7RKojk4fhTd3}3Ui41&nk|IKKfJlh!cB>W;`Co>6)l}tC_tCwb^sQz&akwNT| +z*TayjxH!hzcXhcY3tx>R5@-Qee6>fdNb^hSbP5qZ%|3{h7YMdv=Xpv-IroXDHT?il +z35Ne%YceMRW4=TZky^u&M!PV2P@_QG>Ozvk|MpT5kV?_812!_4p9uglGx!v+qR +zw>{>>T99`997$Xe26j(efo}UCB=YzXBd4GH8>#JT_$@lB?A$?4lQ9v)Fb%CCHq*!i +z_RGo$foBexj@(pqU3kt&d*BM%U(o@32*x^*X{2_tSrjFy1sR7OZ}Q59?xc~ajgVH3EIKWYx1-2=y_2OhFFx8+VMVSrtA#42 +zm;KkcbGM^uwFa=D{*!7&{PU!MiOTB74`UT&$KTZ8cnI|RIMby$?NB#$B1%_7s=j3x +z^`wA)n%x6>;f7u~^pR>6{tie+GaNEr%M=6d+zCKqe$45O&1Y1+2egY5ZjrQ%JbLxv +z=YbfFG|?``5KL0U0&ZlGzV$&y@}+ori<)LRkJ_kB-#)OfAus>K@!O0Bewt@8AELYR +z^-Ry3`$3jNyDTDx1rAd8Tf9gu#eAR@j*aux7^dJJ9;|%$(90lj&g7>gBinAmylFWE +z?~lzNjUFUxfZvLCZQoyoE;6jTp;6Ws!0(5ns`Y6?=W)Oh)_6HA*aH7@wLa^Qs@kS3 +z50?WaU8D(ZWI{geH5p6uE6O$;+h>t_pS@Ed3<3;W&UEFXN@INi-u5Yc@6jZu{Dm((L-b1e$vv|>?qn!N(_ +zosr9uU|`U1Jt9wCQ#t2VxOzR~X08O{Wp2`2DsDFXrE|LyN@^M2eb>twd)#sa>Z-`A +zJrIuW;tWy5qE6KYoLTbT7Z%`L1bfHxZDXIgpBI%4IE`@1*S^3X2tecd4g-9%rNN8iBo?-(do>Kr$AG67^(jz> +zSX7|G)p96n^fDFYp`XxoF;|oS|BFlAX32zRQTjO*iQ2diB(4Rs{9=E8$D>O?eenqv +z({v}bXCpRlof^O^0-k1_v8;PfW7JT!FXo1ny53J${$?Lzx4b40jeaU}FWTBGca5_1 +zLGr3R!|LSJxai|Z4ln#AA(3q#_$@`dh1TUZ!R~xJAi+Mq5#UY;#J(O`7h!B +z3fw#*>?64AH5CuEBN}i~Z=1NP%(IQYi^+Wb`wzB?m)&8*EF^M&v1u@;!!hI81AjV0 +zhe$rh?=CuC!TFRzBC~h)4WF<9y8vF$L~7ln*42?-9f^1o>86 +zvu%Bm`BZS4Le|pZUk47H)H4#u2C4+zUtsyuE+p#BVD*JUvdUzmqVbK_L!`m$1xl~I +zgyzZq;cF@!8&~~cZedLxU8b3r6<6NHlNvUuOmA!i#|RbUTBJ&tEIe%|c>YdhzB +zvZzm@u)>oUsVqrPLWBa06i^A-B%rS$2;`)zWNWn?Gw^6Dh`eoc8V~;P$5|V7fHW@WfI&T$SL< +z+ynKHv{=AZkByxc(doxcNS&xGL~XCV@^loAX}guYxTEm39MXY4YGUQ#Gg^l%uy8i%M_ +zfkTAoZu4vhMZ9;iq!}o;O@hub$K4~~)3_KhWZe1Bwo^GisoG)0ZWpzL7Wm@R>$) +zHE7WI+htE#_e2Kq*%y1?;v4-!AZm;1ZJ!Ncgj=DSi@)^yjh-`0^8GKx(30wgOi*S{ +zyXf&CyOkq^d5LwXN3@K52mDrq>$&eHp7+Oi-SqkOrGnOd-kKtIlqgL+>&FIeb!Q4n +zmawakk8o$5_R;U#Asjo@#L;e+L8GDTT`IsgKQkS@FBE_;Xi$kvYlpJ=~16eYXwUNypD +z`u^Ns)l~@aHaSVSIPboMh2ZiMqqi0|biF|2a@?~LXGM#Ae`HO3Yn%GfQ{}qg-nrvf +zDIq)>?ANTScTT-aA6i}fpyGp6sm0%bOk)AVQgmR?2ZK3Q_lXZ5B>L(1-P%$CbJ@|y +zD_rlKC)hokMI`vm_2?Ip)oWhUrX6f^is7Dcj21O-|916tQ!mSKPhUJJ8FzCVL=#a2 +zpAg&!keAY&b5szG{oe2HSxIeDjJ|a5jwbRhfDsWsFVx4hsS=f!!E6D +zaiSVFS?v=~N4NVT>B?%*A{3>qrWkB|PFr%gYtCd6EG&Xb5K!{;_R#XHv9180&9S6{ +zSe$eADg=WT!4P2qUw+poW1|BYvPE>vsG8cPRMPzRTXSg@E6O5`5h|Wn#`> +zU2BC7EZm=0IfuM5l5d|HeFO9WfOn}%77{p@1hGwqR8KuL5pT}|)K3m7z1QuNFcvl; +z%;zc;$=74GHL*Q1O$xuFA?NL!(kuYq>_?m!yTud=hqqzb#*;e?7ePLN@VF&%viw1{Z1Jgc*Yjp(p}Abc%6D^Q5uKrJgDK?92Tr +zv$73ty$D=f+I|Y8-n=I&FF=173HT%XGTT41!~r7Nshgw2fs0uqsBo}y +zkZu3&LaAPuxC5KE&nw?SL*ChDifPk{RikXf3bm64SPb)qFf6YlQ6}<#?4%$0p|W$a +zwRd76AY<>%=jjSzzEL%NlCMNQm!jqf*KbNv#N5!3VC<|%D(Vf +zRZwLgR?z5G`ol2jXZreO$SP6PY|!@wu6sxuP}=1)hBM<}`&ITV3C7z|2C=7?*M4>* +zu8t_O#@Pp092&@ITkwM8C|hi9y4A`sR$v6hENX>72REbEsRM7LZX$oHP)PIX^V&iv +z09lUO%2kBKEkFU1dXY=JWCji>qS+0)nI;ha-{iWl)FF&K)GA2Ze3&6(S#;bYjqbjp +zIM~x+c1I_V|4>kX&X9S?63B*XiFbo+mA-ly!%*!`C74|X0qZ6*r#V~+1{&mPF-K(# +z8MDzh8Cz0e&V5ZpUA+ORouoDozmZ!F1W?(>vR^H!DigrE=OPhCbBXPq$2Z|XRc>iekS +z(`*xm=Q`)zgD4{qse~+I-Qe|VOn2-Vpubsj2OdVtlOz0XEg!>&*$&K$nLT5r03!U* +z|6(kWS0#1C8meWHlVubea8Dadr4bO;4;dAs#@wPHFs$h)hlUGDsGTexub(1RZiHr# +z=hb~~_V@Apk8K*@+(nQgM%l+{YeW_*4+*YHC){16W^=d%yGBLzENy +z%l?S{yYH7D%KV0#*Ma)$IxN6g%9mp-?$yS-VvL%8|FJ;i=F&!FZB0rIWP5~jy0u+m +zDiVQc|2(bFYIpt69 +z?lOx{t;zO$!c@MqGv;eIe!OYH@9(&yJac;8308@n+8a%wE!mb?y%EiKPd$ssKj%5% +zrN?d8UDQJJAy{l+JQF2>pYbGD5Y+rd=PPYKn45w2C-^PW8BP20@tW7AzPKFzu#y}3 +z%v|=!2JXQB@&IveAm9Aj-iX3aG!VP{_7i)VzQVw-2Y^K$67~XTW4hd+n(Ss7w&sUC +zY<50M^^36dE_=P|^|E-qUza5@_YqsU?Hog{*mRR5Hfz_PLpM%$(l+k3-hFY}E$P); +z1` +zd-yNS>zLjfH?671{J9pIO2T@oW%A)Cwus#{H>zu_Lw=jY9hL=+QSRT>^=KZvC@WMd +zQE3~0z=F~+u9=OH)|ggA+sT1I_dP}2;@ktK+lU*-4#Ct^WGHCxhgAxb;X`gkV2u1_ +zKM6ES1QE{G(0`IZl~FJi7l-{%2OJnlishlw6aK@~1j9{9;vxvufL`*{n$x${$s;`SY2ZVcPE~&h15r;xNO>>Zu>Ed0!P%ZOiQrZmvKF9vqg|P@B;x@SRO=I%g1t!H28lXp)R=`)>lJ`}$ +zy@|ern!~p>96k;?+sjw~D0{N22yg$)?EWQD_836^DI+CO_A7bpUp`hn_gC@>g%P<#c9ZXdY!D*ng3m<8jVQ +zImDmI5mDawh;Q##jz+&Z(U&>D|nGfmPF9zT71b)GKYP4)?B-;uq5C$ +z7h-W)_9wM)9QOC|>5F8Ci9@W+z13+6R#@lfNqK5awj%epJ>A_$*_*R^o)gwT@b+t4 +z;UC%*kFvd4aF5GE55pwNFE`#HeFX%mheCikskTR2loxrobED$@??*a-GD)P>BK#Rp +z=XAi$ooJMhX9q{g#gz1bEIv&FJ#~n(2p4a42&8aO_WxE!wnTJ?G4spU +z^mI1&2mEYkr_i}TKEm=z~HRb|&6U)=gL(d3cpEP3T{c|Oo_50Z}8<*WJK7DyI +zebzHTjzZgjlnnkti1%g&dn{+#^n=(SQhD24X`w5=nFjx2z5aaLxe~Gc&`_|u%E9jX +zKATlz53uaYEn<4L&^e8_7!c95AmS8Mgz`HQ>x +zg6U`Pg>LF`jly=GB;lh8C4=c*Cf=Evl-yg$H6)OP#B{RGD)+W9+a79?*6adP7piRu +z=1W2jc!(fE7M3+?AtNEze_U(I;N_c}_mG3v&zQ)vy;G@rC4_=*oGOzat^G7{o!F9$ +z7zUGQ(edBj`2~%r(*3ckS1n?dVH*mw$(pa +z4j_m>AA>S%_`k_7W{m-{=YyvIZxS!^O`cSXKBSFnxcFCc5&=&(Q}UZAD12M}$N +zRN)|*won{$DcA7sUk*T77h3ND08RulEV0mSV%TzKgZDr+cGH_douhKIhc*biS(CFO +zaX2C$TqW~YHfos<_C|?a*j6b?P;6boBxpdKoEds40rw$vGj`MyF;Sm`2B#H +z`qbenpv~@AYS!o*P8LWAA3p-sG-i^HyV-yA|4ds*^x>tipGUpp_aGx5`{G(^)!Z}L +zYu-cV*xh|@+ko-H+(~0i7yj7husSs8U?s7LU-h8GrGrt=xwPE8VE|S9!@uEPt5RFG +z;hZsAPQ-YM^ +zUD-oK#?(Dh(aS>#y53(==nNt_e{80@(|j_+Mr*e1*#-zqdwku{F~KU|?$vM79?>sA +zUsVka&6gbpv@cYctIUyIRJPkXMv$dsjPs-*6I3Eg+21weya4~?Hb1{g5V3A%!Z$#n +zGb0h?s_@pM@S4iE?iJXmWSzuc7iQspXA5fGV=nQf#ji(!(Ie0yxf5g-`K+Nx#4zwuZJEq%|ldip5ndcv*VBqkx!pg1*rPT)Vio7I5||O&deeovpBm +zv)`qNyVbU8A#i4xrf%FHkWqSO;8m<_b!Ag1@GiDbWK~~Z--TpGeiY*SO2)d*dx=q} +zu_@Edy2;urV1)5_FPx&>T51$o9i~p4UIRbgBAvnXQT0?48@{;4H~PFC;%!oST|#n +zk#KZ)FuVU!+iK$AjEIXt;?7C)EHeN6M6UZPbnomkOrOUWkoYN6k4 +z+x1S9^m2BE?O$qCa;>rrVxqz06_X2 +zYdgn7i9ChX@)r=zH5K|UZ$`isD*%Q_MDY{-p`dJjXeo_yLU39i?VI`cxnk^G?T<&~ +zy5jb&2{4Dj1nr`yt5}0>N9F&wf@A*;yigKq=g|#&I{!j}B8_z$)ZXh>xJs^Gxy|Yw +zS1DoNng67AK}briV?Jj)QVv#+vo9UT84{;(0o*yO6bPxsEJQjY%QRR_;a$H5%Ue&U +zOSD>zKeFcMo9}6~+4gdw`85MG6mcJj`6K=uR&Y&5kG$E6jT7-wEu(g(UDf-j(zTM+ +z{@^vL%Z@;6s8}CmrdM~P;*Xhio1|J2>8zWaMk+2OOG=DLK0n7~EKNI>Yy9%q4H(Yy +z-hPD(SMhZiHOm2VC3wlm<8`w4Es3(sy3yH+;z>|QCi@)0YlZC&V=!Kv)2v4K>WQQL +z>I>|I+vEyCeKlBM6fki^yh#uBS~byc@2qRZp@Z#G~|?NH|cxr=hOu4B)(S*ti>Xj-G#(EJhe|GbID_hyJk6#?3ziL-L8$fYB$)0UgoD;4p0o@%$lc?C%-W|Ejxw;PT +zcq}e|;SEC)m?oRb +z#c~Y${vt#c0|*$GCBD;KFOj!PEY}H<_q*=)(l<)L3@b18Qp_gYq*}k)gzhz?b2kD4 +z-c@LtC)W0POz*YBMwUc1QG7(+D5W@6J2CoufkpC(C9#PuiI0@IK| +zF#MiXVEtqcOfZC&uXX|@9<-dU4H%i +z^Ky8*5z`t&TZk!iW#6MfXP3xNLbni(y85^i20O&59^9cNGPxufuKoCp>fY=vv+~#F +zz{R{0X;Qfxi+^!ZnfX4VKeB|uD<2iI@oDQeT$vD-njEvP<}}&Zb9~|?!6y7(7Q$AyR~acluwOnO +zO6Pq$PYKWRURe%FP`SI8bx8y+KS8O|K&-WX3BvAmp|Qm<3ANK~+DVDiwoxN$9@U`A +zDc8)c>oHh)(T=U@(|T0c{Z@Pu`$P#0tBX$husOMCD&!VmNyH!BN2?|(1%*P+X-{6y +z$f>-NafZ~n(2nk!Rsh>=6(y9B%X6bMpF+#Xov|?Mraw2asF}dg3HJ_WCWiQz{^f)tR5S_>(+aPfSBHHtKSUbD&!p=;)0~TM@&Niqt;#QmHTZ +zWMtTsCOZci9Y>?Su09R`hTY5l7r#Hs_efh9h)QZw3)+a?mCtq1E^+Khtn4jp<_)M(otAM@0j|`4=TksknK`u#8+QJz0BaYEatP0$ZBrZax4HVC(7B1FYq~G> +zc)TLj{7Ee3igxeM@s{!X1|;1R)K3CPz3QjOa}hW(HXX!%J8i(MfBVBub7Rb5CR3Tw +z&l5M^xztt*#HQHgIW(}^fmkUFFeCt$Ip8@p-<|QP`}fEEirMyz^`k<{2Gjqj*| +zzxdeezV_<7k61We!0VFhKt=+db8qql!~VUGWLG{5*&?!O7*0if*GdC?9|KMXso +zx+`c4$6T#$)fp*2*xVXSGjj^z*IV+NG(d;uT(tUq$f8!P^%2g3vtRNkl5495)wm=Y +z9k@5KYd@E#Y-!9MlDN>euNZ!rg}m~{znLqnL!Gw)9@gOzhI`i(ah}mP+4)mp +z@&)MJ<9z%4-EnSf(sJqI4s2p4S@~N%d}a4?(KjPg4uore2I1fIx%)s>`b%8xr8@~>RuUrarUPh_ijBFO4H64#KPCyNRQy}{P~pnVs&IGyWcUi-#Z +ziMRUt_gV}&JgCb?&nBj~-ga?xH#{!g!BMdD(MG;x5C&XpVTg>;e(Lux9Vq7*h@qRNo&Xkm;mZhB}Y%cL0+`E7f* +zbc^8;6s%A79rl)zE7pFLb>&!5EcYS#^7|^NF8#?!NJT0$aQ2I|>rBC*cqY#D&st0oq|(OE>QgJ!c;o9%%TK8KaY@c&Fbu7WzKhh$_D+@u3^??b +zZ+eCd@jUjF8arr-Q8~KrR^9EkMX73v0PlnCEA1DQRD!~Cre->s5b2WQ;&aGdvq|4A +z(+Th9$cy^~t_}i>3^KZJ#slY;V=Rc$O(-a-XjX59c>V>!dTrdDL%0WvCrw~j5&7M@ +zHOAcx^!un-baod#`mPF{wTROoUYzvfk_rXxSKYutJ%-zJBq$?*+SRDo(yKASS8lFs +zhmDZh)4p|Lmlrv$*S8qiw&H5E)P +zS>++ve!tGuE%AZMssH9Et#9$$`u-lym#C!@X*R{Q3}-?mmOs_4l&Wz_H#dB>Q4Uql +z0_4mtgF8XJOO!Is^rL8gRX;`R&_#dr5PA~5H+O$2p(H?s+yw0%&E~DVYHd`ZP9pkY +zSj`HC>s}CQH!UpuL7R#43JccAdDofr!I>q`pX`JW+t@cAoUmAV&5+Il=A4JxnA<<# +zPeaoieI!N%8XQ`xO6^}#-nr{OeiK;}&Um4BfFd>HMPgkpGXsY7?{ +zd0w4n|J4DuPt}X+YJMS(&BQ$uzMY_l>^#Mzq9d@=O;~MR;$0I_!Tj~!uiVMPsuKln +zS8dFCeWNK?zEpfyxq`6j`xrd+pA^@PC)eEx4__fW^M|5?58vg&Z`iyo5PAJ2-k%u{ +zm^}i$E?z7v1$2*R%=T4c2uT`dc^n3 +zpI6>R1d>ExpAbj5(FrNgDaOyKCqTl*v$-{Fsr=CMEu85WRdP=0wq@LfN$TjMS@hd( +z{avTg*+m+(RnwvkSJ2E94zH;qZCw>eTS^?x!DIHg0}ec9k|&i^&RSf;C3!1nSNQ?uav9rgarcbAMY%;nR>%ZYziRyrz)`HMkgaF=Ezop|KK>yM}@)9m|O=_?t&<#hq7 +zAJ?8d<|V#{Vd`cI+rkfUew(p52DF$gIv~X{Xt7T{eXRcbje?I=wWt6+XZYTYj_{4; +z%Bf2HM<%=hTbLK%GXLHR6;P{gOi>TmLD!O(Nq$~!@%3{R`(UHpfFmHw{=>Dc^`A)r +zRj=-~ASu}K@BAsj6>S#0LAnu(AFHZrbF#Ztqz`!&zWTd2yy=>fLl1ZhZv^?O3ztc> +zUCw+x10Pi^uz}U-L@*zH=XHrQIjpGpQ0h;-wyU&?L)SRjesXU8+^g7Z4T}SL^834# +z861rllLFPSBIwvHzS23yDynXrF@{cSrrwe#r;+%DRy!)QTAUM^XJnlZrQ>KaIU9{>CKenf$;M_gIUfYS!* +zGAtFex=`h7a-Lt;R%=$bx52ll8E@$NE9t*%vCo&xF`^>=tq=E`qV~AJ50nNM^wjtt +zCHPGI*yqX_D@fS-wqE?5gngtbH{Eu6#$S}ihY+-`3jdkNJnd^@!W%qck;7?Thl}!Z +zrLKgvQ>{I@DtMSXFIi_6VH9>0SeOWc-dn`=Bo>JrbXK%BHM_EZ2s&A4GdJelT*Xwg +zuhhLe3LQjP +ztFG=cK1nb-S)1}~X=37)+!hwwO}%4^O|U*t57>O(gf@X?tJ`@78lg_R(C6G9Ub%|d +zR(%EjZju{De+QA@fP}5<>(i$og#^visF>Lva_q^5}DOqbaeK626{2hDQZ3Z78 +z*w^dXrOr}g503swPiAetj&crsvPYyqFXM5%lpgl`bJBz|UuWWb24%~D?;bfZl}2H+ +zDq4G;ZIg6JD5nbq@NMU(e;)*DIeto+`J^;KLc +zNh0y^D*mH)*^RoEI}rxlhjC^fiWSFg{ErUfuE7oqgoc{JURq{()+U}jB+BZHmR0!Z +zT21T4n6E!7UNd^UbNFs=cJt#gf6m2Pi*-lOYCLzau!+kZ9kYLz7P>(dX-~5kJR|^m +zW4vY6|KqlQ7)DQgN^Zr(@RvHH_Fl|;5Bcw7Ar6mtN6QW;pOU*TD%N;IEfoy+nyZAz +z^^V#N)Jqt5`Jo=P>r+k>p*J!D3aqh@aYAZ7_U;=mQ8AXy%Q67RDcf9CnKd#GkC$Rr +zwP!yregd0VY9cj2RS?jWH;ePNi5#)8Y$T&VMHxigH;JBy4!X6r$- +z@%$Hlo2jjqYnh8ybG=gGv*!6u3-&Mf)3bZJDp*Uo84)?lQ2x3^)mbB{zxCj&?e4>i +z4D3qZKi_5I+$iu5sfi47G1#)g7e%;I@ihV*Zejbk7vM(~=H0g-1KxZ}u4D7*(tqCj +zC-qu=6Ztv)*fK@b2wGqeJS>)YLh+$m`N@t3RwKM1eOGF>??B!i^fTz#_+B2s22d*Cd|W)i1G41OX#ni=>k`Ys|J +zX64JHhbtVo&ozCQYeqbneSY$oC(g0fxaqZOPx)H&Cc6w<)_xxLQw54b$$ +zOSOV8o^1Twf6PjydU$JUVSZId^~~7x!*`kFikcVVwl~sh`<+uW5#9F0)46@GO~^I- +zdyQrCD=(0n41@+PTul1%laVZ%JA4Ns!@e|}KIQz)+eSRkqPTk~K;KYLVSGu8*<_$YQ(O)HY +zZPb2UxY0LpuO1Rqf>V55aj9aikKSto0okW(FGgX7g3ijRE=rffO?VGSvyqmw5R<-m +zD#A#3+t(glmc2gO31vRE8;MZTI~Y9Y)P#N? +zB~%r%Z5y%=hTUl;K=<{H)S>gBtDp2S6s9bOGnI#OMUv0B4-Me4pVBt@Wn>dyGpRW) +z+viLDI2=!a)){A?Ymbj}bzG`^&vl^jWTNS;GzE9;|0!Lh=P9E1kG5-m%e<5m{ZMoj +zU-zCRD4{V&^+<_6;z^^L(}1_gRMT%0+Fzri)Da)f`>v3*}B}y?(7Qte~Rl5TC@1Zf4uCgZl4_z5itr; +z<`24e+5NTUe$HCEWZxhnXax51e(&HpkKj>gF$oOY%K~PhBAMQ?+P%70BPDvVZ4J({Ik<-UQjXZP=<6__il4cor>`UP +zdoA{IMM%Hcq=~{}c0y+08^O +z&eK4ybta>)W71F^NP>3_EjZ&N-Pl_34e$FD!=4oFMc+669EL3yQ6d<;7B2w>E~McY +zt}`M1xI1TXvZEw;!xS&dw}!#DQ% +zE~A6wl>M?2+3_00hi9N#0%tsCb_P^A@qkw(skugh +zmGrJH`{}A&3z+%ZQK>JJ^xDT6Q0{<2<7>tNg*n~E-lyvGRTVPH#R#b>o@CF?DW2aI +zV^#e>6EkOX{h4ehi;Obih`1iBR9;Z8z14(vZ=3V(rYgg%K%?=OCY`{}-q8BI0pAbG +zD@or^=B%GkSZw`OaW;uimby8yr|qf|eO1(#Q*F@a`Juu2$Mly9KeZf&jC<2-57%PM +zUm6Oi(#n1iVi3qSI?0(+$_U4GBTIrAspR}}QUohuP_;$E&P;(6DG-#ZPU=KX7?aBa +zNy&NE(rYj5k%)jjiNz_t+!t950^L;LKOfA#W9CuQ26g^xw^@)0Y6lrOjZMBzDJu!S +zCBFUQa9oU>q|SKP$8t4f#+B+Nl^61#@>gOH#4<#Y^vBoigny +zV3>-AwLVOy*u}#o3eScPF1ogg^*x#=5&O%CTBo*fFWf@oh1fNJ0cO8#CPC@A_Se*v5aN&^ +zz{4YD*e!Q|cw1h25$>R2`PBXQ)93$(wD*o`qW!`}QB)KZK1Jye6%`SscLLE50Tq!Z +zMJYiLX$Dj}1OlRPDhWtcc8d=K=HnVY>dVVGEr9!+GVHu07nr>o#lK}0@VwIUTun!x{ +z_iL_++xRe&JpOP5AmlCzDetbaU3ViHs~L*YHZlIx97hu+;J1j6DIu#2C<`3Y*JZka`cY~}(VD|nf0Lv@#l%M;R$EO{X$(C`Dsw(3F`JA`cY^Xcp-$CW3|edmA0gUT +zVUi$|%HqEnL4RnMU!(^{2We2c*(qE{_P;d38tEZp>BRCQ>!gRzP)<{c(v^t?hPHtY +zv@Vq(i-xTfR;1U;)x=@G@ATkp0qwyjg!{69b48OXX_B{LDM3+U^@K$iOwd;IS^6M& +z>gunJSVntL_cRG#BlBYFx6Nlk@}EgT--+`MAvj)3{(ZGBv&OkM+fC#_e;Krrjd#nL +z6*%2Ruc{@2J6i>gt5rh{ZK({Yhj#^rBui9Zf;x;oId*gY^Ju8i*eIG?+tG&DFzHsL +zvmF_Ozff9uaM{&7N{je9>R@4_Pe`Q3-G4v)@di&6euIF?eXHq{@CDTP`O$6!jZ73t +zRdOeN?`p>!<^~Hj27fRlU)mlTd{ghhu +zo6AkA +z{&tNBJtL?QGcfgBE0EZF%@oAp+Y-kXR+o5P@$`9?A{g4 +zBPlNUv@>t>YaCTy>Qdmug3cp_pOTc*8m +zLtbsckNWXnVo+RF5Ju5-%}BYs#(S>f_7=(n9XZV`h(}X32K6ztYUU!m2=xB-!_`m2 +za*xryeDZ*gLD^Rd$6+YKgAS#BLF!H(37BTIcyq9d%vME#C@y)rqq$SyV1@qBWF1W$ +z3f@-_W%r3(?4armUG<$wE5U3~yry@@mMso?PB{2CyB{sGgw_0hc(jiyjAeUFy>_?y +z5;DjdbCc9`4p}A5v3ffp_tu!u7&NOa^Ne4ckyt}Rj&j$K&pQ}-IQNPFjIQ5>r1r<@ +z<<2}$_d-Nr%~Ii{{t+eMTh?4}v{-!qK1(hEgzXz}*npOy=q+-ipHxh*JTcxDtITNE +zR!C(nyxuPF5Dz!*?7{Y0qSogaePchOk2~AOfotq`NIoZN_KoeTOh)0W8505eedPhoPW-qjeJaK0HymWa_s6|Z3)HlXvH@E;PSKQ +zSZ&(SyBB@OiFD*)#|^mE=iaavV%uh?CBA`HGz&V%Ev52E3Bh>~i$(EdE%#5kjB)!fgsF!QB5ZTdmif0?)(U!58`~0Wd?p-MdJ+4`p}?8_uodyK +zX&8TY#GnqPnBf;$`_g;0B6mNCk`gL~^Wkj{)_;YyRfE=Y{Uz6$56zL0SrJe#3!s`E +z+^vBcjZY}S%<1-}5R5F2d4KO3oA?*_ZB!;44hSQp#GszB9C45R-kqIWzPVv;9D|=l +z>1IdiQ|~bR&04dVw|K{@$PLY*n;xk~>$Onj@iJc->sNG}mC?q{`xds|3AuHvDsp9U +zwJ&P+&E9GiyD+??5)Ep(hOr}~lOJxNvP~VL{J&Kje3K7+ +zOKWKm=QK;_$!*6y@Dk6!h@Fid0n+V~t^+V-5`Q2f0Mxg#B3;rg_al%QTxUb9Qs +zU~QWr!fzVe(7RNq`Ozc;N^%^jFFq)$Q0Y2oW86Y`F(3KZ%^Yw!cv6(WXH&sxmvT=( +zsuIsG0YD_D%UJ{IZw8YLtB?Wvau(ZH>0i<OC@L9vF<))o| +zbewt7mcb29r$9Rv8>b2JQRRn%slxT^RgU&Vx$uPYu+YA@Nh!hw><2eEf5(TMJIEy| +zIKZ`4$;7mL2evk$F*#n5RqXe1gp$@p5if__c7FN5C?SmtFbx)uN7_9MrL}R;7s|LL +zo>%vXU_G{?x$9cIFia+&^s;l+YtAhcs(s4N`?VbcEOli+&mE9TSvfoX8@{=|OrVp; +zUhwwxNbuCmn3cWp=OTLC&oko=8d|<^9nVw>t3jy~OeN&QBrn +zT5b^H-arwa?E7GN^V6v4-LQ<2VvDW}58*(XyfR_#Ej6Zb>pqW-kAJ`{ +zBhr-CkIIhR&}}yrc3RIpw{bKX=VQ}0oKnTk+*wZ54d-s7(FMY41Kw +zX5ks{T^O$CUpPnWj`P@$!YDE7m3Rl;g0BW(ti^I=XHBGtU+ZH`15Gka)PK|{5#(59 +zA>_Z~q+~BQCV*Iw!o8IV;y&p3{%6+Yqy%@=DIQ?D=?BE{O3EhaAYbwliW+)YYhTGvRj~D6h@P#& +zZt{9JOUj)=yW1JJ_P+$(H@rCr{6(f#=>(31B6oG@dAU5VSJyY3k_s=F9XHDTd;8*` +zfb692hywrM2W%b8Wd})RiztuJy-CB?os~J_nHTT@?V8cDyJ2nnLHl$Ioy +zO{9Z+$v=U@Npj&-ISCW|XN_6a$bsIImrJAu%doz3Z{|srts*I>jr3?i{cz}A+<&!iN2lMN@C%u|yGGJRHHI8<}GjGs8E8X43m+%at +zN<;me9b1*~*Rt6L!Q$*DpLVx1K9+$FMey|2YDe{7&3eTH@H58T?>J+hk$h3?yvTJ2 +z-44HDONHPUJt=C9Gi7-#{3DJJLl!)`A`C{Y7RC7GLekj%Ut;nqYRw2-3%6XxdETm3ZwrG39L-JEoM;Erpf)QfsLPTC${0 +z$gNse!KIs@SCR@z?J77N|EYybU@+i&0OQeG +zdupRmJTDiCoV08Tca-6z!6z(a?^_j2<*0Pke9g=2k0yPO*ufboG}uY_dD#~fEqIfu +z9V$AJV6oOSqcZEp1wHpcC*8BTZh$`%`PJzY{|Z`c&K|LU{kRB2LRbz>frYtIZn2zh +zw$qAzv-L|FrKevJq6Kr7CdLvM7uAx|E7Luk1(fIQY>h29Uz|_;hPtqVWAn-rSH${S +zu`RThzko`*>n@bWw@#8`DerbqXh}T72h63iMC`A==X0=we0k=-;Hx+rsPG`VK6dHp +z8GTovaka9P?ilT({sTm7vj%*-P;~$I!=jUceLMv<<@q)G1md)I;frO3&^wh&t>e`_ +zo;7P)8k6nYB|I?$wnYd}PlYtC2w&w1gMaCgMtIqR2K49!%YMLlve}ewmqx#x6 +zo|Wqf#A`3U-S0_25&V8rj(Iz7t=`b->zLQ@N$~he_1wL?ED~1Fv%7qxZT$5^)$~j? +z#b1|~KwGj)e&V`Oo%>ZQ1$)%eSD_%{#kIi<#2*gJsC=;F0Hi&}Zvb7G{`$VSZ4`7> +zkCnv3I1pv43}O3i&e8nbWhmn7xtM^~LB@k}7yYLd$o;->TKVT04DA`650={Sguo5n +z^WxVm-zU#Zh)xY+CyUg~;~MdtV|zEwXgpW=)zvx4M|sWhLfW*r;P{*QF9m-NoHd3~ +z5iKYzVTsTtS5W>}PoNpE47k=W(kJbvVJ8NgYKT3sR)@y~<|84m*daL=fIDP0; +zH(|)oJtvGciyNxmYr0|+KwUhA@d`1w06D^T%H}Mqt0U5Co-oVEL^Ppfr*&j3N5(cN +zNPV}BV{j<~5-Y9cC7Y%hsGe5MB}IP~cBa1}`s<>@%~45dqcTppH`I(XoNGdz{FTZt +zd@7Ii)L!}Xv9DTig7vBIxcjfyw&YZF0`Z}fs$9-3_56f6&l%IM2 +zldEOuT`$9Y<9AT^Xve2pS)4laPftTp0uck|fXbinrn#Mc4O#4=HGrziDn|n*WXH5% +zSA~jWqftJ|^njh9Yjy7Yt!@Io^ln1z-l-(1mwjbe+(HMqT28Gka^da +zbwBcNF2&ty?<>nbleKVXAY^6Y`PzyJRatqG?xz@%^2vldIm4eDG+|R;k{@bv +z47bWD2|w1C!bX(*?oSnMEc`k54?DBkfaEBaRc4Xy|Jg)umGV}F(#xlPpz0d6405t# +zP!KkSU1PmZI4&)N;>p^Aw1xcK(^UqUAQyhnc!v4XZM;+9L2%7*%}GAIVu%gL2i2?r +zjIwCHDE$!xm;x$|Ag>V6`^S9bT +z6XxWwp@tv9xL>!NnTGBVpzgiDrLgilA)4{V +z3H_-2{kw@O4(X}FIC-A85~=?7gO_Ui;K)hmJNpyP)#l%o-s9QWpf(Gt?%CQR`{o4s +zPa7moE;nvv>o9ljC%Yl%sC8##vToc<{Pk<{gNjv@MfF!baPauFqwG6PxniK((Q#bq +z-SzGfZt8U0OY?vw<$IiTb@U^j4)mXml0-BZhTj|9$@U0vpoQ@?so0R3B?i;5S}D?M +zd+|1@>10%eh8vzM)FXVnrZfWA&QGKUj8~v-{>)u{+}HpGng;yNv3WI{;MUX?iTc^{ +zp*Xo$ruSiuW3~N@&?70Z6dCLFEtPI1atocud?Uk$+~L2XAgr-6JYD)|Z495hS-)H3 +z6>5`8x^ORSyS?GwC7`_IbHQh%Z$4RPOM7TYt*BRX@A-4MwgT^~!>Zw%?N)crw0MDRNm0T{u&jZI*C&nl8CR?OK +zVXE+Tz7W`X!ww;KsC77oc2NPLd~U;3vq;66^lJwjbB&rCaHV?yfW^S +z&$=ZMEUxK@9sGhsHZIN$SCF!w8ZRKDB(*_mNVv61D(mzz!V>HM)8Xfvo@ez_^+BHM +zO`iQ@3Jc!1XwAA~K|7bYU3Q${t8=CBPIRHx5u)!CC666+n$%fZ6rtJ}31yeG=q`J70XsAik#@%MY-uml +z)6I?bX+vW$!UD4Rti4-iYxb6Yc%R<;0<8A~&T^7mZBk^*2lgF7@gYfs>FSZr4H))c +zh_eD@=2Em{yIGA0XxwD!wPwRt)nO#Nwb*X{FTtMbhjaH%xW&MR{4_FD9kjFpmK0W| +zCAJJpA*>Oz=7*}-tk@e!rg3AxKa0y26@%GR8EkLQN!!Lrb@>cNTPPjCzS@4$d?KQ8 +zyt`0{NGyolC0_f(II}xK>umKZ>+QMpus8WShfoP3B-$dA_#n1a%r|6;JMLP$U%*U9 +zXDit6oCHWhFI0i=rqtQ>SxB(n9m?HsAKSDIwsnJ4u+Re?^NG`?oh7&@D$?mgH0Dkh +zh>;ll!(7cU*4$HVPOgz1oH`Em-0-ICZ|-yu2`fxw&=sI?XQVYw39_8kpPc6Yy%oE?~WPEGwa~#DE{_8PqT_^QG5MG{Z%!$EQEFwpS|vvTDWZ=InhjdXv$f`cmXh6u?gY{yq%9NHGrE7XA)G2j@%-XrnlXvim71ELFJ9`v)?RQTH9ZR| +zDlYZcEUl>{R{>?68?i{pUzLA*VUs=W1&hVqs})-9SdOeoTwU*TW;$Cp0f!-0+hXih +zdL$RKVqOwztqeS$zwA=vV4Pk=kPS*7LYVrP1ZAK +zZ7MNJ^Vx=-+s{`mT0WJP-i!%{MUsR;{Ea2X70TXZRV#e8dCi>Ur|5*TL3OknOFOyDr-0>iSWF=q~#;V#jaYy +zGr6u&;&C&~WmIKR;rDLqw&F0}i3vq}(}#tG&%oMR)jkI7s6l55$;IR?2c$ryQ2BkQ +ziGTUY(G+j$*n|-uah0J|TSAE%x~n;ZVy>VjBd_~==Iej&tbb(tpezfS6xeh4&}YN- +zX(fJ@>v%M6bLU%vOpJ1!$;+EZMD*L~uZm7h>lo@rx;ailCY{z-{YLy9K2edL-5e*i +zQ60YOm`?VEs^C0CxZjBS|EL8ZNXER7h=9CV +zathwf9op5%9c%*@N@IFOUH5w8u^1tYYw6QcoUi6=30BSOou3qaNjI3j9vs-_FDfx_ +z-tpDu`O8Um4+Sk3{&MUilmSwc`dIzh*3Ld@^%6bd?bai`(z+X>Kle>Ap@ByHHi`^zssVC{W(ByTE4@NAq)EqIV#!s6LnU;i0iGN2$?3SucqdM7*T2nR+X?yrPF}@XQ=6{^zZN>PzTq`Qy +zsY3g|aP&l@zdOs>epQAT(jbXzh+nkD6}=MLoj|i%=5x&$m~~)}!~Rr17_>ST`3?(0 +zfHij(WwPUVf+RP<%zIDO0^7A@Ut+}VBxX8or`wi$L6yjJ*01`twBfk!!SEmlOxk@M +z&TVXv@{8RC|D(kP|CwvhKhY+kq=6=c`KMK?W&a+VjAFWhl!G9-kJzq538Qd_#vwJ6 +zYc?*6@iYZ#VXJUAC}*P$Su26-BU>Y0xHYuaMx_P)fWWUD;tn3kW<@#U!oFl?tf`Z79^P!ej7qxs$XCOE1&04D&)*EglhdpmDMeC +z`@-J99Alt?5U6Fh5p!0qEVwf)!j@1j?2#0ECxS1?x-KH!vL%BATzy4EfdM+r +zo$aQ^+z~{%`1Z#HjzNu4fGM4J!0Fv&cMJ5YjJ-MLt(qRA3`;b9*!4$c{kuIlBStdl +z&VYT>O;Lz%rOYC)uTRicUE+N7+QqSAv8Zjos1UiprU%rU8O*Jw{WB|Ty@-*&vlV%w +z3VL}TYbMSrQ)@o^wr#oMuSGmj?v5F|fGIpEnwSJ$X2WS@ +zRJV5B&xY7IS)2d*YflBi8~7ZgutvGT5xe#Y(#_;CWIhSNWn!#M&1(r%TQC#pDb&k) +zuxvHNHT&%wOU0e}(`${gJG658%W~^UFV^<7XU6)n-r3rh(8QR{RFAgRHjvMi@q?)R +z&8SzGVj$zO>RT2xDvYQaawP6NyuJG|RV45!&&zf*v5E!=mt`B9%Cz6|IYn~#mal?m +z$+j3$J0|w5LaAEFUb56G1EBiw3Ul;oxZtR)5j_MXXlb3lz`xwMc!^VW_Krf%C7PdM +zpTd>l>gv9=??FxI{f^Iazp%QZ*Tp{Q6_jU!=&qUI-OoPJxk+7m))aBAh4=woN$>A| +z7f-mP0GxuRb|bVKxb3m6Tmo{x-#Eu-A)mdCUG5&P)l_)#BgkdU?^8a!)e$nU{YVfN +zZ^H43!#=j=W3Fu3Zq24ZU(h49c}b!R%-1} +zZxoj$pJ?9ERSLxNMdTMEEa(C<6#D!|4Fd019t`&+cGr58wvOiw)M;PY`kgPaerLg6v`=p&vJ|bF#UUZb)A#>rjJlTNZEECU^j%5l +zx%V!37{y`#nT&CPE>hyK_^;_x0bPax*G^cg2MlI6CH;9mqUW!^JKcMp7Y@J34U5lB +z>uSd8;%g{22S6%yH2QUa`3J)IFp}KjfB8KK$bAiBRd--+_z@_O?3h>FbqM|wcRskv +z7=0f^=&vmfvOoaYm=8n4NUEHn$^HO93JHqR{?BmLFBZignL?JZ;QMoW!iy<8a@;|< +zN#EVEWLQE5Q-_oGkk +z3u`_vI0svYkmr4XEKYSoBFXXQpb6ugZ6{=@r!LFpK-_jck)$)#SnK|1%j#gwt3CK7 +zS0kJ4`24H4q9?8k`QtxYA|4>CpCPP;6XJNmI)T&E{U79aH1`Dkc3d*#((f$J3uHa* +z=IgjbnzPSieM@IyRSa`fG)dhnP@CNYN;Ztjbg;(0?k$gT(YBdZ))9o=8CYd}WEa{n +z8w*D=y@^S}+Z}PbEP+ZH+cZr3^)?Hfx)yD$&7pW(!VsVmzD))dmQWJAHxTO@M^KkIY|NX&N +zMti@C^5VaW;ouqEXmh~EJWR)MFC%Im`hAJKFhpkT*{R2FPM{sV+*@@zl)9NWA6S`; +z-+*-2Mwe7g%kjBL2A?Wj0C~Q!9xP#=m7(ZU<)vM0;1G6>*tfqzA7#m@(zY*M4L4bx +z>PXKB8dfkjW&GvQ=$M?u0xO;+hs%y06qM~}jESP{gG;Av{5j$D|eLPtC!&_wmPht-mVOA2>9+nuijTZm>gL2T=8IZvY2{>WQ0)$yaA1 +zvbLXb&pL=J6Tj!41_ymCl;6(gJ5X|3{8%c#bO&HJ-yw#8B<13Na~$OG5$*H@{b=V* +z9cT4#(G)C<4iDOP&g#<6so6oE*ZOmWQL0Jn-C3#RdA!UQ4wKhDm;Bnsye$N^bQ|1$ +z^xvI>q41A-v{_pCrlJWs-i-*>p)`3~FnLrvf06@~j*F#1|Z9R?Bsqx#hnbFk) +z5R>siUH{4a)8P5I8(aSdUgkT{r|JgI8tDd~IeJ38R9E(;YjX2V;Z=bM#dfzay(0hX +zYnP*m_FCBj0~o-~_*XCeaJvP6=9R#eCD;nP6v7RIiWYt3E`}TT#~xMn=NJuf`urwJ +zINKTmZrjZJ?o)V)gVBpLRUcD_NC9+kCD7V4OV%#dbvk^t +zrusUeMn~uXKuc&J_~|?1(E)9AvMK11Dqlv$9D@TJ5X1Kk__9{UOAab%fp_k%s8bWK +zm}9F9grgJmw^GYrYf<*6LuF{SUL{xl73JIM@#sp5n?W79Loh;d2}G7``@r<36kSj! +zWy#qJH#G>r9D$&dcunhQbL&0*Q@TM9ukfAU(5IpOioz7zOIsp}05$}*rW2{$5eL5h +z^bgWI6|;4(!C_fvMVzj6rm$=DL;c+MFy;3;-`qAn>Pe{IzMHlkZ$Oyn{q5U4@q2ef +z=dzvsW=9YED+wNzuGx^}Z*hBtaA#=e?KdgMw&ib}{F_TIex9&*ebfk|m$k>hEbe>c +z@NZ%++x*m`tGuX>x&JwYl=<#PxccCigW)Nhh$&w=>Z8`$#akoV8iQXn-HvD9a+LN9 +zM_F=6dcJ%R>63Lea8!L5@&_`;Id*qQ2xp)+CI{^43jOb%BG$AG3p(ScdN4)A3y8X@ +z@@SRbd!Kt#E0l6qkk&%&d&R8HBI9wj9uMkX%m%!il)0<osoS&K +zF@ihRp*X9B1{%ebymu_Z4rw?IAyg@mKF6j~Rriuq`4`nbU6uVWG{_yy4O1k8ajl$- +z_MPX~5|@WdqL;_wmU!K^7p;7w;7;}zUA;9!1lp2*iD^yN^?a7EX*Z&G0Jm&);P9z% +z##g78P`rs3aXqvH4Yq$`@7xEPb(}cQ^Y@;M9w*%-^VW5-*2}?J&0$5b$o(j7P7#1{ +zljZbs>A1$W0VNwOn8N&@cC!cgH>ggRd7G_GiSxbrej4nn`F%euMv*+i{R`$Pns;Ti +z15N)UWYw~F!j-2lJEJ${%kYM(`}Ygdk{kCFwigrta?22Bb;jaq1Witt{D;*dj2%h= +zQO&s5{>|%6Byk-<@P#<{bV0aGp!YrjU3(&Jvxvdr=0bb43di(2!5I`RBbF>JE18#(q21@cvwE(_R;=-pN;Dg6G +z;9cO>AF5seZ!ZT;yN-Vj{Q~g8c1*vKhTVF)OhNhf04FDzwhHi%gYK6IbPX9gcA1tc +zN&WAh2ty!3?x`;Q_$9`(a35&6S#69zYx_Q}Z>E4O7Wb=WH28)VQnZDNicao3BiSwx +zJ*+YJQN33WVE3f)0@ifql;Lpb{1LFpa!HAj;)IyOwcK_ntqx+d&-4IyhX1?M%_R=&E&&I=kyOh#6T2UV@NMSR +zkYn%Jq7_Lc@e;?gZaLbIb`0`Wbz-Cw)dd;)emmlh4~-PN?wc*0n9DyelVs?P+aFsr +zkzn^bwWS`&(d<~rpRH#u)?L5w47DKjP3AbE@ai*Ve^{)2SFE0rx45lmck_j&n_BlO +zJZxkC>Ve~$Ife3~3w_>Xf-C+cBTYq +zr}g^YTw#-asLb3i-2;8f)u2{!WtZX1(&Bf3Ze;&PspYJ`UzsuMa7`tCF!;}CbG#Af +z(Opt}`{%@74r87}2lc@Aak`qc$p`!YKTm_GW>uPk9;lAqG4yZ$qXkA)T)$ner*%oN +z7Xd_YP#JwNt4)eEhSOjx8y)u&HP!9f<@&@ornr&pER2XYOpllQ2>lJ@9{*$20Ug(Q +zq>n*WG{Q#OTfX)B+yLNQnL>}Ayc*KqQ5YswAklSyMLWg+oXO4ks_dPs(bV`?52(6` +z_Dj*k2f!~G&6KmvHxwCEZz`Q^P&k-DLq1{?iRC$y6o*YYW&8dU>HzD=7{y-KzB^Ik +zUwq^QKk9=l1L|M!Ij^L@esib`uUD{&ir?)%>UwJS*+o2ec32Y=335@Kab1Io`N(Z +zf((l41T1XIGN!bwkGWhu=Ec3WI>1|NVRAiwIp9Qgj65YlSL{GKy8QlJA^cQiz0#ua +z!AAojLc;c6y+i4y2}(5!wtdZ=t^ae?u`=B8uP45jrhCU}@vmWE^za?*O6g#}*CeGx +z-hSc!YyN(J+tetY2iu=KJyMdpZ|8%$N#XZUFYSC}i_s&k-r}e83gVPi3g+{*tnHTA +zufat$CAgrQ@L4xRfUjpBMo21lpw2kFoE>@pH)HWfQHfciJWE(3Wd#o*MIOS9plWCQcu@C9Vr;pU)AcdVbnw!r_n^OC}L}+e^e91c?5= +zs{CgH?`iz%vX-jeoLs@YKUzK;r5?U05>7_BGJ`H2ViiVO7lXAl35>laFV*RqAcva8 +z`{}!0HWuO1IE=c-0o+ZJf4 +znaZB@>MvTttI&xj_e-am6n+M7$iVTkUDKmwWdB=Ml6J3%7N;2hPVcY2O{-b;U=t^= +zuZh2v@Bk;3P|ifSdducKVjom_Qe=1z_Qz8HW}R1$ao$@mDauYi%p=M#6H6OpSlw +z?8s{qw8^7SqG$Y#7>lfjh3;29=aqAc^Zdsz)UiU%egEA1oIA=chR$+Gl@t5Ikf5JuHzS=T`Eib1f8H$NdH(}M6nI9Lk-L^qjmi-Lfy64K-)*G(u4q7^=aZX`d +zR6m*?e|=tuz1_7-Vp6Y360u}nOsS*ftZRozGJY@zC~Ml)@2H50xyC^rYYH?wAxJ8d +zYg_hKV1{sQW71=5H)H%5WPZa3rb|@X*A8F&2YO$^ +zk0EN;qKU~QtXi8Pm{hZ4VaS4cl@DcilJlL7)IlF9XFa+Qs;tiC9Kh+35!IBSw)a?M +z2da2{)OVdbs7rI^jyzfOl7Uu}*1-60Tg(pE4DbPzZNOJIv`TyRUyrCY12P;BXkJgD +z(1)T*0HXM)&4~bx2$IAIpe%PR0PU&FoYag>ib^)u`V189x-4|D4PB88T5ji%60zLo +zP?GekEzP5~Cy)C=k?F+wO0oXc?Z-Jat#?G)+4{UsBvauEu6ZEOUVu_7OlBn-vJ7au +zSp54H;U1JPA0rF*o&;-Yt!`7&1)_-IXC`{|d-_c8B%9}eHwlxY0k;7IOE>TV-T|{| +zMumk2I=z(y0h6ajHHf^mhF9*prg1ox=-2;q6O#h^gHSUI}ti$ovMTKWJKn%@#*8FRS~Jp};PlYf&!mMy*0 +zSeY7ngVR{Gb=ZO~`G(R7W +zQkJo?Bh!8!MPm-?69pt{}`@mI$(kEih +zWpP?k5s>n&j~qOaYhG@+uP|f8^0OxR-O(2GOEXP#8=p0Fbmf97_IkT8@w=^oL!fj< +z<$6`tvKDUOi^-(f_zz~2(DDRwbM@{m$#Gd$3&X+X%o;xC@d#CFr72|!G$F@@l@_7X +zL|A@c9kJPE*v{3NSIju90#aMdOmte+w(R@qrd~cGrttkx`x|I22>+SP$=ueSS?-& +zRYH-&pqXb&Juq%sHX9DXK>$3B4<3UzOkx={nqCw7poHpGjim1GBK>UWs^$mtAARer +zwCI8;uIRFzR6S}}$nrI?M`)7#c0g|?*vq*JzzSXC{K3l(kUsi78?l)D4k2p0CQOyy}zqoh&yUp*4^5uMNij*q^c(mdr4+Zl5nSfCK$#fX{ +z({gR_dht?bYP>*YUi&e8^%3D{ +zIe`@FZI1L?hbYVbNKoNQwbfo|wWz=QcR#y`JFDPP_UC3BW$7P|hbleq5WLnyy5Xyr +z-|l@PeRDXT!`#NfCbPVJ{Z~uvCXYaC4_sGt6(2~(B-9M0h*1}J-g`nj;~x7hHN1RU +zczka_`FHiPz>?B09%))jgtc?HxMIWkFTWv^g+<(uE*ecCF^6H_WCB@Yx9&*Z&eYtN +zlxj1v+V4kJMYD_$)ury1C|J7@OqG&~e8!B}MOJTHPcdId1;hnyB5=LZfSX0MWm}GM +z{=QG9mga4O{{He*NN>Dzn5k+HQhpf(A=us(9QqJJM&HB*E<=h^svda1{bR~Z&6PTV9g^Z0+D|(Be% +z(`2U6vO%sJLGT +zfSxBH(!Esxyz__zLj2lYq|YG|VD%UZn0-EIP`t+)Xyd##)wwng4GePYFxVf3942)J +z+>L{xfg%`izz-@$RGFS$1Wl@@GdIdnj|@FfulZLq5Gh(QbmtZ#V7P?S_Utvs>p8|Q +z2aCR6uYYx*;KsJP8m_s}mq6S5$vW7=Kl@=L@tETXJMTfJ +znDS)C&(&r<7C@pMfK2KI?Z`~{?jrXGFz01xdh|RLKS+gbrktgjNo9W&b)lRN#Arc; +z-L|zgyf>Inv{c3xFt`P*`D(5~mfr|ZmcF@+i0Da&^}(mBPu>1QniHnm9NHHp+bYm1 +z2zC0I^aBF#vJ@o~F^na~&`Ov=8xC4$WmX-~<)DL1^t-VUOli;`iFuu%B8kI;61N*@ +zd%!wy7pP^k+Zw!sq@A<1V4*1;%b%n5hLBo2aVrBo67~(%2bS8B5l{a)O98%{On#L; +z|9`)nxlZIj29Q*yfAuWYuXV@Es+(V`E^#Y6udtd8chVS~6FF-P{(({naX0ati5~8GhFaWsRJEJut#gN_N7K_6P0L%goAJi^O +zHRe7KMs03KMQ|J%5A +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 +zh8*4$Z}se9B<*9iz-?DPOR%^`qMRTgJf+ +zg5>v}mYn*HRVGczQ^cx8|Q-lajElsqVMm$KW%1%txt>muGF|F4dT02 +z&rakaIDHa_H97x9fXop>TqcYL`UxWwX)l<=P8^(xK;rliN%kk@S +zX%X81jWa@R9||&tEGACIuVi3Kp>vuNE8CC{PKadR!iyEX08@C|Xl@(Gan$U464_Zu +z`7MxPg6m)rV4e-kv3&w3JW$mF6OJG_+}Z|*=qQPeEc9vny>Kw$2y#4$MUZ}jkFJ1j +zn9!dBOJD^Hyw_GmcYFP3fftu1)H21q4m}}!>H7HmSPUS#rj`Okkv6|tc#VZadBKeY +znT#yaiqOL0I|$(B$s;AswcunACM-7)ey~GDJ)UvE(WrrH)r0J}<$JFT>)lX3@OW87kjq7xVh2@GLf`47?->H@ +zAU!+t>jld!=YOoVax&vZ?5?J#I+E+K9@;IS3dr(hhE|P#xUH^z{o$%kU}n~4rqb!f +zibZ8|xntUYY5^=$O}8wbG{AsO8Hu_d4umqByFxc1qOnM@|Kw|(AsqL~A1_r1peO{g +zmuTdB?M_LsgvQmeQ=mQNEMN=wu4~-rzGG_J^~yL%6f`+4Bu%+b8sho^D4bn0mugxY +zI2rQ5&*P@Mxc7m79EL{Gp2vX8uCHoB!Q#B{mew{~v4CAA%Kph5!962+QSte(&g1;Y +z8q6c+cPX7PhTJwf2lKS7|MZ3l_Z4Jqjs~HFWx+tLfwtApcQN!7maWHkeMdlPdP@C* +zQkcro$Lk6farVWpjP|cLX-}JFTiSp;3nz(xA+cyJ0j}o*?|}oc+nlYy)&EJEylF&8 +zAERJ1l@NF=BzD)?o_XHeVM%zo7$uv&bw%v#m_nQO49d%8>t2>N~9eVJN#|F3&Tn{|L@1^A&<39- +zF?llHaf)5Os4g)eDkN5*1S`Jsdg9&@Z1V$yp|=U^c58Blx7subvTMfCC(~)!y +z=!(3dm$N8pnDNoX4qWHlaB|lp8B-}=@Qk;2m{ZA@3AXo4lxMoPzvz4Z_CfcG3Ni%` +zxc3wZk!;6}@=J!PT>$5IQKm==TUv>4U+{h+X8+shLo*uY>ubjzM!=F{=A0M4$S>&; +ze+wkh&&ICH5Pw@a=vL0L9IX4GOcq=QPAvqnLH|53_~{dMH`4vX;YfvKx<_1g~iOTjZ&w>`-@ +zMZYqxo5SV>Z1DWwciy%piXJO1^uMk%c?r|-A>Ib`_ox?N-5$O5H^Bv1fAYw@{1I>w +z(6miNI;@qMP(bS{8@BvRDl&K&X|MbuJ4MW*IWn=N=k4X-hW2mQ)(!;s@jvPsLj{!v +z{uMm`W_g|e!7AVM8<~|4J5JM1g@wGs8D1@b#b=uBc+8?wZ)Dz&c^%Z{=)GSU3as=1=NpWIyW+5 +z*o@aCheEp;&Bw=pIs>5J!|tPfsduzQ7|Le&vQ5`JguUnHS$||J4OlyNvx3 +zbIDrCw_u~-gs;;Kj5+2z2(!d3R=H1D`v}EOryvj^1P4qtcXskLGh7fh+o#oMq|NE8 +z9+w*Ka^j3=C0uBAu|5zMt6qmOsM?&Gr_Qvn<$*aOKp5?>0_ME&6j?myrCDD((Zkt5 +zmXkhgMAX+9>)1Ru)n-21@gX>&5`1g(Nj~M_ydAKe2O}zd_$51BNJsHS +zfHhIubt{MpyspCqBIr25vkmfatZ;-7{0kIi$1%fa2~dxy;d=CCCx4|-y2%Zc4G=z+K*+uTW>Ptk1#oV-rIULt%u^+ +z$Fguvz?gVU*sNMpOevU~yCH<1p)U4M-}0%NwV9sj|BxgR{COyR#@h3?&G6H3({wwY +zKW=6hj@|)9B^l$^g~DtdTx7o$nz$KH_z%v)%EL|9p9O68qmm@95rTW;C8`XiYkr05 +z`Atn|u6FJ-G3ih2& +zDOA;vLGH2$5F9vGG(C`k+|6J2tcX00yJ;9rg*^~wQ)(#Q=v-aJUvXkuA^|R +zZmGLg=bpj332vrSfqU@;*k9rKpo{J%(oU;7c5y-!mG-X=i~CR9=fo- +zVe?np+xy%5{_8{V>q*P-4K*gO8{&Dbg{Qs23qLtIBIhJq8U}Vkn?5j#p3dSG`4~$4 +zDpn~9$``PyI%{(RXlzq{Q!A8Ce*31rEy~rtUcP@Z1!z;!uA=qDzN9|x5hj`Us^7Wp +zfLUm~d{U(IV$IYc1sA`GUec%)hHKf8pEJI17h2}p&KNc}`~Z*tvLe#xtm5`m0gP@re~Ymle&@=S-F +z?ft;PaH;*aPyE0CM`yUmN?IJNTQ6yOwYN9hT?1NOZMt^S=}gr>us0?Un#;%8UxLVv +zt6Ps{+5$J{=exmH*!^imysbRscUG)_*|qfv0fX7Uc%?Bj&!RQiWY`wu=Px*;gnhVt +z0fY8hf!FRl!>KnLWQKiuiGFzT^aV}mM%L;}k2xbF!j9W((WoAA-MgPo>s$FbiZyxH7x@CeFR{yg?c)flRUVIc$?V;H5-zjP_y2d8tzNYovGNPFuh$Hb+&lH{ +z>4V~kNEh4hU!4gsFZ;th<1d?v8%6O3W+ciEsAZCk!QUE(&YMf^5ju(lPL}ow$@~aY +zE>C;LJee*tU!agm)`^QHO`9X2mXHc=YA!aEp~h=%fMvBKzmg!!m7=g-Ze? +zU#Tav(pe(O-ia((M-uO;Jc{CViNKmPR$Twvcr9aUQd$hrA$msVqWnwm+kRjVX)TCw +zyA<>&IRr6C(oYLN4X9qVNG)r3qs01)eKBUUHi@&(UF;VIAnYttKf=xE(=d&&f?4qT +z`azI%;RxvL-Xq7-J1SH=clFi|6vM&sJ{y&B)I7v_pG_xtpUlEm{_88#J?%aTf#qKu +zFtdrUPAOx}&#Vry@=qB-ot>!hMs3CVG=FLnvn +zVh#-r)nz;$pc#T)RHRgDRM)%9YIa|AE$Q_7rrNW=wqkFu-Hh-K{pXTltPsk_yDd$I +zllE7{#atynjzqc)`-G+E?*DOMNE2fIsdqFW*Bc_~OIGvPO82E^C34^#Z5~}ERSs>t +z#Vxx7eJy-@t(%airU6$O%U|@1O2YLO5jtuKu5HH)GK1W|#v^4iX5=pqYMj@E`g}fW +zw3c6SX9x_lCLwxG+arX~VL%66<0=WwrB1=u6CxZ0h;YUoU@xqJhEf7rSBiF5&q51NZHceIR<5m`f>G7x+r$ +z0xLVd1icjy2>E{aSo)an7ASp~@QQaxuAPNp+g-OH)~Hr46wWhbR;?ijvwfE5Dz^UK +z>)X;@$hpCMY|p1+@MCwc!Pk{6jt1E7mB{+XP}cWdL(?MXqM@}7KYWBtIUTj*bK9f* +zG{;z<`dq{ojMv9QO{-oc>R5S9JccAm82lNYj=*7RrWni%oZCY8!=?}0Pu{Bv%SJid +zulQ|8fcIRJl(<{}{@<+kCdk*J)8bf0deDzXF$Dg{4*gS;hYHnJ#MZ#A%7sj +z200YIf-_{wGx5AB=CM9!Z+S7+-bcORIV;n0MUTf(*=FO%FQt#4$jhbPkE-XJ3f{x(jl)dgTl3{G`&oNUZ05k`ZEnvoc@2L*(c&tsc4eTSh+|WPYaPx;(!%q11P- +z>pSO0`njcxG;d1^|G`-!sup +zn{l>bKClEs8u)>uhnF=i?I-I?*5Bw?c%7)+ADN9<{Q2n>R`}ZG{13gEf9KtWo+wOc +zdikVm*X(6~u$bEXQ+KPkq2AF)#4Xa0Wls^gg7|SIfd2-?GGt}%?}O6kJ92)S(Fp|- +z54_D>cX8ig@;h!w19{Sxqrlql;L*SXKpdxyMxMm1HUcMPuW4cSPIJ!e=@kM4f`7kT +zqU~4LEZHbL`aq(2(~6NF%cyi6 +zLngqRY!n~#*E*8e6rXVAan!syZm8o%=^_1|b1Pp(WfHD;iQAajirXVlF{k?xg@!cW +z8c$eB430u!4Fb$9X+BKZGB%AMeb%8^rG@LZqVqvw#>7S)N$tdNdfnX3pG}Qh6ESsg@UFr6;d-=<=mi5}m{DE^Iwl84h(+4qycv}?1smv*w#Pj7& +z&zHdS3|&JQI2zOv$F*Lxrj!7-m@4)H3B<)XZtQBH2lqK=G@MMSp96XjgTSP9)&k(o +z_{;ZEcnW6BdoF<48m|!cmoJGw1kpBx<$CK&$-#rb39?gMO0m$INa8&=-*~WT`6X4E +zVuM6&=^OehYjpUqF6O?7IiP{<`5U2 +zU0*lh6=)+bM}xp3d=wZb?_>?unHDJ}^}Hk2_eHgKux(^wyG*I}q$lxPMEu|f8z7zb +zkp{QK%p$`HEo}<_*~m5l^exe|Xy#jHWp|!ahE@9xM?hp_*6*yGDi;_*h4-A;r)>Tav*U(Z?$gA6*wmW-@dY>pKLypi +zW}KHR>=&?!5I{2h@l*DJvqvt(Q(Y3dH|8n9#Zz#ezLfssg|{YB0OPLh4B$ou6xz{! +z+zAKFVxL6cuaQWm`5?eeoi%x;SISf?a*c#iiAmey=5aTn~v +zB{1YEEs4l-l$djCi1h=LUyf^1gALC7{wP3yh0gp#R*NQ@2m78#sT;U^d4!CCXhH +zScu)Q9t(@DPkj%(6T5IY?qr&Zfpfond7OBrkg0JjB6n# +z#`x=tZzDe|rs5_Im*>?-`vWm#uGgHx27#7`_$cI_(YQ-gP<<{Ie;)z;@GZ$gN!{l? +z^8N_}#X{9uNh7~E^RYxx+w}8S6V{rww}g~5Tm<*pzspmyhrI32+qWYvN6gKHML4%uu9Q`8#zqP+7Ep+`S;V}_42q~*ci=zI8n~(qV?G8SP}k* +zjaP?LpP~;PJHkg{l;JdGDPV-(LM?{JgwyjGl`N7nHW1@A?m0R?dH3mS6YG+f_hVie +zioFm_othN>Kv($Dp%+C}PAe^by_-+wDnE1(MF&r@0Y&HnLW_JbwXsKlPi +zVbfemS&~O%=~bis2n6TEq;-cUpIgBBM&PSp*~pWb`L&%>41r+$#F8}wUPy%!9@*LF +zTan-Y3J2Z^pFlm$dttUJf&P)Uahmth^U5og+2hEUz&i}51KS#V_Op%a7RCd(zJ#xz +z=pQZ4lAE}Gvmq*yc+T%pt=E#9o(9i?sI*z3^tG4hI?Eaw6v1GGWtKaT`kFwutJ5ex +zc-?f=5{go?Ru2-M5}f=7a3X#uAN+9KN9PO`=T+mDxCYh_?SJf91um;>RB%yX?nzaX +z`fFRtN{vj+Bk?N#=O4qp_B3I>-Cu{|biSS~FR2B?pRf>c$Z#oE1l?d*OZ%JqRYjz= +zR<4sLCYzTf;`=wt1^8zLd4U?#DELCGh_3bm-vdXdsnpLMbX?psRKPl}gfeO{U#%eY +zzpEgc5)S)~_e$|;$o_sTrDR1} +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 +zPu{IB~H^ +znfiC>=HZVi>AJi7Du%?d@;GfY8L4BxJ+I4Fs05o}BZ+Lg#XeKMug^8pb?%ju+(F`p +z8Dpo!9)Zwo7K5k`jU>9)7AVY^aK^YIm4b|rlEJJKX;gFjvyB#tx!P8}()*6-6O)>U +zh02TJfAMD{=XOAg1)KNYx~S|icxtS3g1_Onb^-EMP|Jw+dr{IV%gZ>zay2n2Eu=}_ +zVOK=nQ6PH>{fVQkz4aw{2Akc02F~cDRU%cx+tr|`MX4vw1_WvV0`qS)8$f1phI~Ve +zC~B~ZZHNf>Gl+63;}FOoa!KC39Bhf6;&C%DGrYO^ShLD<v<{|kUCUMI#wMKp@Ah> +zHcM7is*XTg3XoR#B1{V|41NRcPx-=$G>3RYbWu1P5u2BFJa2SdDY5b3B5~OgY>1j{ +z(E_G>8Dl$lb%?==hCqk08IrMy>OAdy8UJNH&SlU&ylBd;csv~Y~xvbG?Lg+PJ^Vopj4&>%3DX^Ga+!YlQyNv-Yw(?2H1g;qyQO8Q- +z0J2Z)nGijFxQuTQz(veG}RPsV0({qOvQ-0<` +zd;EyGz%oa-*l%uz&>yB&2$cZ!o|NUQ4@(%@d(kxEr&piLW~;yc1!JJ-#7)_YecG^= +zv3DYGjUZ7Ytoj9v@VG2Mn7Z=ALtY@O!&g_H;AB3X~>a?|u5 +zZ((>Hc&}v`Pb<)Qj?Yml*&t9SQ0wSjFb@qO{$f}85Gqz46_9v?2oE#}X`}Fi?1gQC +z&>C*p&JrKX-x!2*TH0di16aDY4UUUL)Xef`r^uCfeI{Zu6faV_fZ;`%_ks`VbuYaC +z$%wiaEfBU5)V@F3bBQSCDFrOi@!Uz3rAGh-sLWR@nKBTZ8C{abIeIoxQ=uH%pDkVN +z)gcF9|8aqJ;j|({Vs}NVv}qxX2$B*ym`I{D^-@{Y3&8yMQC=uNcX?OW%TDFQ-q`(Y +zxfdbl;FM3PZeA~l(g$e@#X;AK_wr`-#nVme{$dbn3Ys;(iFr05VoV&j)Gov<=`8>c +z$D!4hkdVj3p2rv>_DFu!*q=zhNs3p8fxe)M70x_}MpXc?U!a?bn^50Z)ZIfT1sXNi +zL-wZiwq%nqom~2BynnVOsSjNm@)v>u-+$XcFzjSJ*A(}iRir^TnAB~jUe#@RHu(Tm +zuQ1drvfJD3OR(b8oWut7^EGm}C3bc!i0*$ve3z!SmiCM->PBXfA!WmzN{GuN(LqdD +zTkqbWK5NRiE}S!f2tHEz)vJk{{R`rkD6Sf7cQ5Edk+zBTn@zqG$+^F)N)upBal#FF +znG?ykUU;~c+8|RPMYySMbx^qU0r3-LTfyAkz-f#*EuxY*i!|~Q`Vpxc`Lf3yHq!Gv +zVj}w0v>OOMQ|OhWV1HM(v6QJHR_&lB)+7}>48~y)k&=Ac!6^3s^Fwy4o(SHvVA5-5 +z%`#hr^Gh>t1DYZ*{*)OwR3xhFw(d9=XP}L<<)%|)jza%?17d<9v+bF~PRl-mT8ues +zYu2r2RTlRar1|WG>ekydo0~sw>+sU%Sz3}GE8t2iK}2;ZhCIrB!=Z&THIwxSeHgG@ +zYmNzg-V<9N(j-8VZsoFxp*{(fDbXoBlkSk$P0nu{0` +zU$jU9AD+P#l^=HBLin%9FWL3i^~wzUH<%_ficF^pBNOW6`%4an6v9Bv{Ig^#is%jw +zMe1a6{kD%|HHgBD4yTlDlV|ULLu$`56(AubftB6YUJ2LThxdh<)#mb>)hy~xUGw6EgpFlW5c8@HTwGYd$}Wf`yi+;{k*iq^ewzByKh +zsa0uswp1;$e&=)Gu>4nXw8KQ%{c-$Gfnzd?QFJkrz2VEzdi`o^n2O=Wv492trNWE~ +z4qp7L{@-OX_BxibEsJlAa9|#YJN9+noKtYGMw9@|6C(a#8*&OS^OpkGlfYK+Z}^bF +z1%`%!avBRi+f1tNw_`~(Nj*}^zpkrxg?qukgbg;K(E@0DY-ehSN74@!yVV(C$>6DkA6Ol$@aM +zwW*~%;B{y&{?`{y6F6&qDsN#*a1=$YKNwIa30Zbtl=(6`KeRZ2E%A^mwQ&TL +zI0z(Ut3QeSvDlBOI47B0BeKNJS3fhxaK +zNRy3op&_NDZaQ`w$%(^S2C;N`&-5xr6p4`l--dZMED-(@5^KX|hSdLHJo|NMfn5Lu +z#yQR82ZDKteML{KMzXEKYg7kEzXVs^dTXzt3Gwa_r8k2Gz(|%EXNsbpwZ8racrJ5+ +zT&38+3fm_)J}jO4Jb}$&z*bODta=E-hIKg6Y}OUK_$<~$vBjD|zW_Uc7xDxZ>clM~ +zMnJsm7)OfF)=l+nOF_BjadFsi2^b_;V4`N^5k|RUC;`lDEn1V``G$bG3y%_bf{l9% +zZX9P*IX>n)Wwf;V^N5J`;;W4bqnJb9Mv^L?#=q(vOWgYqx>2`TbFX(Q*^OikccjNp +za#V(Ca@ok~M(MS8AD$lH@yXTC6-g1OE-GK_lmwlcZur^Cl=64IT9+;dRo_X}J+s8!?XQ}hx- +zBsk|%ez3ugH6erZ4S0iL%Bfr1c_+^~P?EIqR$9t%f-UkG>!V8}>@dX}+N}v67ae^2 +z;Cs(SgMj^8qou&Y>!?Fkq?Qjx7g*nbjH6BQ?M08GM?q5>n$~K!)IoUWCHumoUvrt0 +z;;NEkub{n6V*Ptr2Ef3|ngREf?yP={>6y)|v^X(sSJg)aF}19u?0dLT99EcRvAHO4H<$;p)|(v*SeF=~ +ziQu~y?VY*fiE|Ol<}FYA`CG=ioOC&)MyFtq8Fmi%~GMNWgpp6h=Pw`gV<8FW4A;m$*Uhztb1; +z-ikGt4-B$KGsf2MQe2yg(&-pl6)q57v)c1H;0TeaLZ%wE=<>B73SpFD!;0|sSgtyZ +z1NnoiD|BJykh|@?31}_<@#ppYd)hO5z&>3sa|-!?>gw)7%MOA|frw!n)VSF<_$e9p +zz*_#YEHr$b@voHh6)a)s!|mPJ-$s@TQXChS3FSWP9We037Zr5YIi&kZ1(kS13M5Q1 +zl@$#tykcEtvz9)vjd(KRY}{*K +z%Hn#XH33&6W(^a^uGBBH=N^&03o*xm)L7-z7@UAk8GG0!C2;ObU^OHtwU7RDMd8P@ +z0K3ol)GDAi>w`HDTDc0!Okp;z6-if@a~ZHa{~A_3BkD0|-6en`5}ggwc2IzDGRPYR +z*W?*ax}x@^9RY_Z-=B1YtwEnt$k>3jN0}6kt_;ST)$Ml-ViKo84OEKs&W5EVls922 +zfE{uS(cW>sc7nbGrxQ1NTkFb@nJ;}C05l{HzKuq#GP6~$rF`l58Om0wz=G%?);=54 +z)__OPRR$A_^+(;q5i{i7vuL?{UH9@iV?XCyNv!`@F+uvjGEa{w)=Z2$wY~)5wX6^N +z8wcjEipT};0Ed(8KEa=%0e0ZGEdOksYat}s7PW2QrD*RkDUW_F1H>)dR&WInhiUN$ +z^!mXJYF~fpu@scFF$hYB_kj`yakChcK+=!JS8c81;#G!;#87?EMw^D8OXk#=$O7>9uUY*v9w=f+K@AID;qJp~W +zk7N|33A8jr4DRn(0C^Xx5cYpad(XJ0mcL&VL_k1bTTxoJ6_lnZA}vu-*oq2PKuS=g +zNbfxaMPw^YLBIk;R0Qe0lh6?n0tkd2AoLzWNY6SGpZ~d^=iYPfxi9X!m1HGZv&zhG +zzHK6O0!rLG>5r!;j|O%SI=)Kg +z&e`2E6q)XPbUIVQTDN8IS!4NIqGuW9y&p%3(H8WxCp`r{wR~+h*~j06U4qv(+?mOm +zG5s2nziK>15YRUl>V;oSv+Mc3UbrC!f0HS<;^lG4^+_>QSY7w<&bGc>qH>mh$n8(| +z@v+B@cPd`I`ERpJ*WxiW`skLei6l%)*_#V98=Zq5)#r@LNZ^L$ES#VNwyOf>`EW^2 +z?no86^8tE*q0Z%@=5uuWu`V8pu0Ip(M2%+64;izJx1ijbzqlzF-J`*h?Lk&sxUFs1 +z1V4W(t3AF^`bF~? +z+>|*pNtXb%v~;Y-#fCJeB5Qwq>s(ZmQ7nMkg;JLJlZvODq<}|yf7@GOH*|Z3=0jKm3k(g5AS-*CjEx$Dd;B;lY^-Z +z$<>;$s!lyShRDhXTyp01nsXn0LrPi;_PmdO?;9eS +z$L>R|Z|bf7p2N=HAA7LR&K&xvx9`|O6>fbnnL|wOBlz@jZ_Ip~jXe*^T8_+xQhv#d +zJ&i#<^jpWa()5he&6i3LZjvi#$67487z~HNMDb^9*cL7Lx8_q-;c9nB-I%c!8Wo^A +zw$lGsADd3%A2&{t_eO_KliXZw$MDv~r>WbMi@?}^7Xb^jSPDIao(WOB+fUgoe8N7hOkWgm!JIY@K@4h>x?3{@)>@H`G7pq_|{ +zM^mT5R|OnaebMM$xRZqO3qP3z*&h#%6W!(i-br-;9oL#z-Eht+ka-K7biPaj0c5 +zZFw+ICN$$b@Orf7gUdYzuF8CkEgRk6t(7D7I}(@bXImYHEXc)m8Hmyp4pIqN(8k?s +zjOFRuGL2WrVt&<)6;eLlO-J1UW0~foO6RmjhQ*w)cIDV>X1kl-lD(+HB740Q+-q9= +zuyvK$Kj6+%V$6lkUI-2yh=8@1E~R#1$Qzy{#-^UJm%m)qSlvdq5xc=58B?)hdH$$% +zvKcY{jJ2DN6tTBrS{9Q5kRi2-)F@sN8jA;SMJJDRwSc-ptIdH|m;PSSfaJJ%hU6A& +z;(hR_WInrOcMJ{(i~(3UX#jC=`a>CYgxjl8xD4HHGVAlJ>*eIAa(1*9!_<<^fW>4E +zLr6uxXH|6|?jVj_0T|3bnYQD`^4spH)y68`vKc~v*$0oUOyYKXZDDu-VoS$=y+GXH +z0x{cxn_iyVToPo$GVt{KA4#?$03*ONm*ZwofXlA{qNA<=9<7W&1I5YL5>c*8Qm|o_e9-^c6R5u6DEc`p}=I!BnSfEC+Gdm>X5UQqw`#a +za)^;z;A5cR8&CmtAMYlo|GCNYLYPdz>6Ne7OarFV?5W)5jo0LZaWhE}mWkqchsef7 +zfNP9)&p)ItV3hIj+=h +z$YNvf>CDV&V)UuS*8ZEpxvz>wrDIx2pP?ULEVdB%F;9BpBw_o0sr^eBQNEwK1i>@6 +zA)$)qQ*i;gzGVfYKa;^lGT-{R636i#d4($ovE~kN3hE}?SZi>W7RWS%=3xv%PDS$X +z8oiZCR!tS!maROOTj@Fk?z;|W@6zSGY5cyTldWFPy7n=MafD$<&o5`TyQSW0DCbwI +z+jo+}k;R +z9(V|5!dfF1%%qU*j!pJTPM$uf*iJ6tGiFn#VwY=y%K3kz~|F(^{sL3^H6 +zRF6oGEw1m`W|dr~>NB)+C>e-AiLZPeb%8R`n==R0v2KzvZS?y(1av;Pn@g7C26v6E +zt!f41AUAYKlMc1P{}eIZRV=BPT1rEBROe&4)u%>KDg41M&Lwa2jJTF>{91+=<~ry{o%LSyAXY0Znpj_5*h-t3 +znpyZLbCR?BftULW(dL-*vv20mA*-)v!TZVVkD~tfMsTUI{@3evFN&6Pf@zj3LMn@y +zhJ}0yTZ7Q)5o2p9OS{tNTp1 +zaiu0K!=W>Kc8)PBh>~UY*>a2%*DK)8C{hzR<%Z=UGQ8Z?n0?Djx +z>@^V>(coH~`-;=KGPl-}1>3QIi8h~6DlrH+Y@$3|jpi;ix+q@}yqS5_Xe_?USd#v^ +z;?9$HTwRw1YwG3)VaWpcER4D4PfKIf>Xi89hgK>sp@UI3XeH$-bCi2?As#i^*#4plfVboOZq;e>VD!SE3mJkSnTZ2@w~R`)+$D1cDBKLV|=HwZ$q +z4F-KNg5*0?!4>7xN%0Mi=ktDaKw7PhcDDMD+48K`%;3(0YiKz81Z`|4(x9fz|7O3x +ziF0Uk0fydRn}OFfF2490`x2qut2pGMyMf%ujNFa5=9RTmz<_#^w3c&3aH>6jhJwdiqKbo;h6vGE!tuBN=w0+A>zzAvJ@4FEYjNEp_B`SB$6Lc1 +z%iZLg;T7NA`T7#yy?%eZK_tB*;z2ulGcwSMj1gFGYlF|;R7n%JeeYs&wsB*9KXGkk +zu=^jxlXw9*#@zPGEVXI6nLI7ut@xB@wo??36HZiejlXyhjnqf(34|BTLTM3Wt1ZH5 +zYu175_O#s)|FaIUjwdmOn`VPYel4zIw=}wspGJ|^oN-s55ZridH&)`Sus7gqgD0j4 +zV;rtA9mQxwR4efv)o=QrSpYIhRO#(z53Fw+dzHil1QafJFo}HupMxknOrCZyF%{f9 +zjPg##-2Ct%C>V10>5!=jH276pw{IZty@FQjMbJJ9{#|j*KGz&gzE=C&&j}%d@*}>j +zoc5l$>cohC=EJYrFvf6qQo{0}^_81fZ1mI|l=mh{VJ`DuTimT^VmV#MpUihB^2T3$ +ze`}HSuON5V)GO@zOJ4Zhzk080_2t-w&-_*cV+*EvG-~)F)GvV)fN#L4G#Aq%B{gHisd;^6Cht9)&=q0lPB}KU7EHy;W +zhQI+*5tbU(SvDm++l5 +zvhSG~rH9pTS-4!Z9Vd?UcLB!Hy@j*ZIcGiNR=rW0@1dCyN7EWt@CuifR{Jw7fTK_5 +z(ItP8%g6bCh=)=0!g$nF4ImlC$I7Qlrtj;bR#ZT#p#(Q_V_^EY-YneWDq_8#c}QvE +zXOono>JSP%4lkqqKV{v+9bX*K7qp}o{2V!}BYSAagX@YhnO9G2AG;6OQL?-7>&M%A +ze8dv60vNTm^wpH{y-SPQJ_aOBeRs(`*wyQVuG`4>|a)sue5{ +z+Z%O}XBSIQZZ!o6z@~ZECUHMNHz6XD{S6{>3o6wt>B9a`I9?kU5`2y>mC#P24)Kk@ +zzPw|2^k=1-Cwb$(?Y)i5hpN)`{;k~c?@IDzln@O)f^Ns@{jGl9^TKbkM)Q%J7ce;PbOyd;!DSAEVfhSppX5lK +zGn(E#H>ybsMd%Xr<0LP)hdRjG3`&vuKVBJ)tJ8Ns^ikCeA0=LRp73?QD@FR+#M5-O +z2BDTjrZcm8hJ@?bf1zKDWwcEhoLZO%cMUlzHNL%mPG|xzCO_tTepKJ-+JK9f8l(Lr +zsx1D|WuaG5Yd12a%>XzI>RKS6M1h`piy(!N!oP~-y{H`xsM$2mPw_+6vGdlCaG?np +zSIx!pBn=9q;V!i3yfrKwvH*R)^PMfo{^qB{A=X!yevcp7)Z>mS;XT}SgPqkEa(xv~ +zf09@c_>2wMj$8{||LtqeJr8d!TsFsyL=&a(jSf{aaioqi2h@L^0}EH+YX_d1J$wo0 +z|B^c|1$4CvzcxO7wN^$YDgAz5_-81%9)JH6*f=`=0n+)orsGw?>RC0s)LhG-b#~iF +zw;e0O_5-vMf`5C__S=)B(XKWlz0%-Tmh;lNqK;wYhPzW^*(DuxZEKt%+}iYRwR! +zx_B1k_?-rg)7m;&U(eo +z64937r7DA-vB8om=v+)NVs25h%C9XUuI->l4JdxKobI&Z-iPa&Zmi*MQK%=BG^_nn +zs+v~3qF(N?mNIL2;IABr)Gdcq1Fjr%rV=|qf57wQ5c?(E`E35KQB}H-Jbj^{_t%rLmt2LY&EPyldegj)&DG8kyoNJw)_Pqg1AX?1!xSN%e8 +zlWf_9DgLjWu5go~0FvY>7d-#psy$Dy2bfqYyPs=&DB+ldFiMj#{*@g#!+x>VMvs~M +zVa`ADnmep_H0!V2D=-}h|V|Iy4_ +z^dR(t^$I-?hFsyXh%%#xV}b!y06N$~{fF>-XbjQ^Xtkh|w>d!2JD505D@0#>NOR6y +z^9k0RLT0`3<=ZQ@CeZ1!Fv}eF|8lM_n)uJ*Hu6?KKo;9vx00RlV5Sz5RD#3ufJGq8 +z@%oP(VM}V0TEKUTPv+F83_!PrxOwXWwue`sJA!Z0M^zbd&`o)QFjc2!=@PwzPfALy +z;^$DP4&O*g+ZJ?z)ITsGjuo7h2?=ww2#)yrC8mDM_50WqU0GKm6A+E)%wJHZDxzmB +zZ`1hAk!f+tZVyeYe#wkyG$KT=DHa<1_%a +zyRShk0YZ{g=WiH-^f>jh3-tAkb>o~P|u`=fw#E79xlrr7ENCeH|cn_=vyH_M%x +zA9M5dEQ5!w3%z&y_tw2}iHX4%K(^JIT$0diD;Ka^cTtgHs~;_Vtnb6mJD7VJmt8pf7F1r6t^a5(mk0*GDfSW#<(s$x0wJ=bi&Sm*5A`E*r%EfMP?99yTH8xWGfV% +zr8&SZtEB-4S7qmxGXB40OT2SJx7hZhvLoL35pXNx%U@r;^*2xP-;trVLm^-n@sh$R +z5x7FnQtvLrrSva>g_Q)hcO-gZ9?$%5d*`m0*ut%_yzy<5jeAvXS1l_mytC4g>t +zwJnu!2y&Gk@1nJ93zc@|kRpLsl!BCGgpODG~g*y8!+HSk-nuXeo_L2h8i +z=#jW>e+x7SCWof$Ug$-?hbYWT;|@KlG8?#KQW{1h4ij4xPe>CFeWbKqlkvf`Y4f +zwk3$!R1297;PPZMg||DTps05|MX$>^&{ +z>Op)l>;ZarEg(x%!ur#ipGLenf&sFn@;|(X&S@xEQf~rVyJoQ<@WL3Z75TaXm`{5J +zkiVrgT5-jC&U4KFdRzfy1iF2)c^A1PG(UyRngWvSINn_BKe*+8sk1>R>CNT|PuQ}x +zc963Gew4B|62Cj(1K2hmp&X^X9W(Y|`L`hD3eS0MrH;r4rLFy!|ph_1N6FeQJuIYr@fY$%Y$r}%=JdH}G80Hrc-YXUBxIEpQ#jQM}OUBey= +zSr}R^n{%7&HYl$csXnj%=7iueG$iCey(6ZWzW%AC(*D-kvF)NZmQ^DEe7+=jBuso= +z{c7Vd?I=?_*AnF_W*s8dkIL1#5gbo1UAwyJD_g}J-d{`KpUpD!|FCtG{Dhb=PxMGpdL~WWo4xz)?>)7bJF*nZJ^eILd+M)$ZRB~m1@2DOETY#~4N62w +zgmkRNF-xv>MPZF}ozWqUe#tG*SCOwH}gX8i3 +zi~|Hsk+fzZ*#TIj_(9MOKT~;2ZV3h0Hs|ro8+zdyY!mGQ#HGn`69N5zTi7 +zaK+qY&f13|2opGSRl-5v+&SRJqEiR+=w1*CQry0f0Fcr4Y7iX|x*N5EFh!1B)BT_h +zy7-l=Q%a1E@5ja>Yi6V51^Oxo#(a*2jme@e$)dT+xz#w`t*f-(83{*V)eQay?F+@V +zq1vyUE0A?4-^=YKeb=ukWIwVVxi9B+j(??kp1r6USD73Y`po!mS)c;8Byh +zX|UyC&qUC7QB2Z`xj6@P%{V05Kg7J$lUP)1PfZ!2l +zp|?67xajLv0j=YJ;lW2z|b}`Y5a^5%Ly>)5sF +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 +z{WH3O`SR{W6EnxS4+Y)N +z*0O}heu!L&YnITy8uGw!#9-5Jdwhk7s}lKG=`_sfnf6<9fn=N=H<^VT&`V$G-{~Be +z>+;4R&{rq0H|g`e0Yu#k<6^k8oU6qEbRM%QD-b6w(q9%;QcNmaMi(jWSw^4F;q-nd +zRF5s?;m@xrE{4=>zBi>%VjfXy7g98Efx9{hC7>CUn9nP&x3)d;caKSG7RqKk`SSa~ +z{~-=FP|O|Abfd-Isi^sq6KR;;DsCOCbN;QVOvuDkPiYWQ&!!NroncIw7vuClZNSKS +z1g)d66`!qyEieD2X40uyHzED~vQ+RR<J8;@5beMkje;4NZ +zp9I()IK?&iO|cKQ3fK!82vPkd$I!QMno;~G`nDI{Pu340D)LZHp?hNodf1AnRgf_2 +z`uJZmu>#x1*=Q$JA8{7WQCF~dyOxZ7p>MqJ%8iW7bSvTBZ*grJ<#uOc3+u;Uu3d^l-jtUp4l#g=>wI+I!UlLO1SHGu9r +zH1IhWx*a(SPw*AhdlQ#~ZtAf5M$iTS6?3BUQq9+xw(_%wTg^y=Pq5^+lz~?i?vLSg +z4}&IiaZ@emKIuUkdT|cB!Ir{=&jhN2uvy)|7d{$L5`JDW&T8euOKo~|UPH!j@2_os +z2pp6~@|TWjlH2+k*K!KH2WlrCaJ^^1O-o6R;12Sx*xvnr=xy(E#h +zM)~XAoePaoDXF8rC0dgZL3<*weX5i*k +zT(@e~yhy+H1Y>uu`NC3)hMK1tuSt>rOOyVzebVq$bLO|h9}}_Q!P+grF6W9~m|xe7 +z+AeftVb2%%-NNmdB4wZo0bWbaA3F9AuE!_@?&v=Z9_v5UPKqQ?;06i|&*0mvJ4SP( +zNLlE4O=Uofesg4hz$a0|n=kT)59e%BV;40%w(k)?;Grxh{Zn**bQl~Z5>$a+>(;+p +z6LPAfd1(Ptm&hjRlx6AH#)~rC7Q$bEWM|WZ&^H4tT%B;y6F?DtNB17}hEr3}%Xy=` +zlf}`y-u5`OCn)L1mwS|J%o(oxfbQNWG6iTrPE;ec7(xC%Gd3Zlis3VM+_0No(sT)9zq9eB&72xET;(Rx}io&nD +zlu8Ka+F9wcY+06CEE`>*Dd7~2I?c~NjNTHi+VpKn9%&=jTQjQ* +zn>B$%)ul%*@N}9DNGb&a-5(i}A;c&Wf7+(+!zlOee6_*Pu+10!UshMR3HHgU&{uP` +z()N*8PH@@2ro5>&mGtv@Vv^Ymk9gXKhY}b~t&OwZ-97s*IKA7T==A!-NU^gUKXzFK +ze1ER7FZG`<@?Mdl`#d~mk=ftC18`Up{_Mt#G5sg}jWCj%aXZpspLL@13Vesa^p5ZY +zHIaOeBUDQHC7#V^Ka%0)a++$`qz`g4oEA@mo=ra{TwHVs_q<@)0`)qQX?k|uj%|CR +zaZ{OsNJ@WijXnSHTEyXuJ;%GO5P7FEo>k_eZ$~cLJCE5ssr$*4a=xu%_OO_doc*2G +z)9Ln|AGFzEs7)%d?!%`0W#vw%=2ThNNWSCudVWzmZ3N8)HIQi1QW +z`aHh@W@q{JokptX6MFxoXx;o@-9G;_UaP=}o1hn0g@cD;Y8LO4++@$W8QdHRRiV

oa`Os&r5>pzaPY>6))t;^`pqs +zrw69Q80lf2mHRi=ZXkES{bdOX|I*1VY>2|YaxS1X0v>7-hVvA13=m``bKdmNM_@k;22_kPEatAVG*CXF#LI~MRU!`H-nTD}>pP=Q56 +z<^v%dxLAlYpfs_@0JPkE?fn}t>(E)Voex3|fw}36VmFwCZC+&`c4_V4914G5w)hM6 +zFn>K?xgfe#62iW-k^EJ{Pu}Xe!rl|25tN>c>K^h~p4bHQcP7s;o$%{=H8pQKxO +zuX%oI(xxY*=iORx{E`&NIJ%&!H$Va8CH);|E!6)VgiDCQ_cC@E4~w!$?PRA2gyzKruruk_jeXdx_T^VY!nf7Z9Ug +zyD1A#cXeH4o(VlK2QaRuOc=VroN*YrC;wxtWfq(B|Lt= +zQidA8```DsfauIPbXv&SQn^gJek}a=SbaZxwQnzKt(ile+qigH;7*Omw9VmrmYW?i +z`RIR$g8W6i!$9N5Yv$72aHPJRf^y#pG_#&Hv15YlzV#nXCcn43a4|HdaN*bd%k49{ +zLdCl&Rya%Ga3L27rhr~1k@=tF&!{F+A8EPwmsz*0dCe@=n~ek_xON2Zw!mC)yYDtG +z4<+sadg7iX1N8U&eO>?W3!(|8<#oi&(rn*UE8S{i=<;4W|kdiHE?TWk9 +zb49>5OG3kt=eQWizFH~2{Do4>1yC|m`eGCXDEJSwQ+Tcy$II+iPW-bb*DvINa#VvGBd#Anr(wW^JWAtU+;^|i!eQJRygY4PJi*Yx;Ll<%uQRMxp` +zN2jCb6qSz4-co6tt?^lXlJ!_|&6v1NO8vQfOy5h!h8N>g8p;i#WNG7dYWoURXuFh~ +zJ5Bez6PU|9-ez#s4PI-xCoawZ!X8fO%1JYq?0$z=u^04EoR1gg6y@83dTth%Z-yt| +zPntWH+^?znQ6}fdBmaXA$JY2&jdOEgrtL)h)-xAs2M}+%<3e_wBb0JEc +zEF@SgkT$X*?Y +zfML*pFdHLXd{xxos`=1xzPLQV3AHTYVbF*E)-;@sb{U=-fkq_Ly +z%ynQ&LN{yO`&9sq2q3EoG=0!};HdETWy8XxXWdzGK~V=}Ffhj^{n5Cf4_jWxLyG;3 +zhu$ouM=W?+*R_+r)&g=!LRVB)Dz^7ZQkR%ybOH6ixiQGwP7tDj|8fPHw}}yEAO0dQ +z;PX_c0;&74h3>jpOB+L1c$%lqMDPjk5YyIU>u+k?$hi6+f8cHFf2t~~7fRP<17tt` +zrT*#Kh|&Aj^dijcVO{5_Pg7B+I@8qOVw^2!p=qw+nfuI-EC;#)Dv3I3IVvP7XWFkJ +zDSg=g<5QcEbmL*BNxF#G+rjt>vV><6A%r5{TF>K-HQl7Ew^i?hf%Rj)h2)};HE{~* +zcN_BIR+-?#uIzsw_24w-;5%jMm_zz)1+Xt(-uX^?l8@r1d(v_VAG#~r7k20Klk;si +zUepe6_|m@U9NP2N>$c6_oW5?=!tTrjCj;h=QRvJ40c)ScUyoOwNamqSM*y`|fXq)3 +zce9aO&JkY+O^_4DM$b`R8J@~{t1kodSXnUhCwHQ#Eb4pGTa)0$BfT(*#m|e1+qwS$ +zw}9IF3*TMJtbwlV*rb)mADs-vKk(W-tR@~)Zx;AUc2tJDmo66#Zx4&#mwj8Ol}n5;x$1W;aINGxX3w{8A_ +zec%SzPy?j%F?5Iy7w_hD>rg9ycb#8Pkf)efgchVAw!A0~O&B_JWD6})L&_bO`D~OK +z*196*CCE!H{eqQCQtXk8w}0ixDz$=i0g{gJq&oGPKRNJ9t>i*sVWPjxfZUxJFOVE5dfGu(c>d9iOjV=;a7~M2?oRIZNng0*lNL%d +z7SG~9LffA8c0C4>4~kNmyx(WCGA>KlXnx|T)jRuQ&KKW1evNfGm@cM#(K$1;x(q63 +ze5V-ma?gIR;~J#|e98bCp-CLjQS(5p{uV%yGB#FGK7e2Vb%9K)#1gk~<_*f&u)-RQ +z1~n3{A$3*Zz%ldA;w6tUT_AMN?;J@KaLrMyVXm4}hI;S$^Q@gMFyI(y&RrjD9c<@BlfREhY}1Z*N6tU7;> +zOQe~9r<-Xp)g`>KLR>D0D=e}_``F~^PB_Ty7?XZ}T~N%7d1+3&w)CqNoEbLPvdmkBGf!G=3x6>Tv(Dh_by+3?w#(@ +z{__ybQ&56t%{?t=<=grx_~NbB`y`SIjaX9ac@NBo*yX@hg$UUBW58|zP_mb5W70%*4m~t+ +zl?uLIeIfMs=;_2%%{?xf5h)YpT-wd*-L5rpI9R*?mw+eH(}mcib904d&ngIeJ&Cv( +z(k&EOX0^Y@_R1L-s}@#`qMT883{oGD8#P2=SKPi_M>yOB=@X<(JsZz^cXxLVY{8@z +z->^ULnUfi3t@a8Dqzev)n6@ +z>yEhhBex#euPCcfA`&P6sGz}%CL-oM{3GYF_kG(w`e$=LfrtBxL8)o_`un4gTc@KU +zJ#Nk#YW%2rF>5g43B~$S#;-G7n~%L&ZE1}6rM;Ohtaxl`R`;MASD$NJ2UQcHG&j>4 +z(Y#@KYq<|)?%vl&5y7lNQnS8U05dE{aub2yFB90HfQQNdc4H@Ewq3I!s$db6DrUoV +zQG#38Ir6fbMizLYboBb9|E+nA1>R~Z?;pg0_m0|7K}afL^W~ueYJsaAFyyrtUN76q +zn@}*F7t@-_GfBo=m(R6VC)ILv{qCDIYVek%4ZAn@Qj;0Cu&!Tg=QTHTB@QHcnTD5| +zhT3TQdK#kqNg%MlAr5hHn`!MYX-q6GXiS{LF81*+Q3rpQnZqBhP0aY~sN=Ek(b$;M +zN`dfcVEJiI=|sdVMpJ>y_k~{HBoQpKA+B`XfvL-z3FRTrb9-a_wxraeImiK4JkPLr +zQiHH((Y4)KdPuk%;6UO~W@dZ#d +zv1bCQ1KieO#!yk}pMMs66uznh15V%z67tmpREIiIpd6t@de@Q<-VXr`i7LCcC?PQs +zD#j=SPg@DD!)iM#w6+yqx53s2}$}UKu%8&oNvgv9iiP +zj?-$ykBeQfS8Xt}%`PA@g@x8#uDgB+_#LQd^Jvi#7KZm=^FnIL-T0&avunNGSl%&5 +z{pnje;{$k`#q}4?a(3vPW{xfQUAK+6$!C1hfiv3fG+-m1|3GUk)vAloo0imu-R+Gs +z=}3;>4GwuO4xVd?g2h98!qgPp3!00b_dHrS_dG_Pqde#FCi_k`+W)e|iO=s1;5!RX +zx{UrBm5`j_5|Xon_Fta2#8H^&^Rf-p{JyQm7+q*UR}cFhiV2uj(8U503_sR#Vnk80 +zDeU*rCaxU_=rpwuJ4B~T>Je<&)j)*$?Xx+`t! +zgjIp{uoX#*v!JZOx(VX=3@_PvCd`WIE7d6bQ +z8t463_!fXYV6L;~5)DpdYrhe3bk(BC)yb!L<)XQ^aJejA^7;viZe)^ +zHvEv)wvnVuc=3v^cag(UhBKWCdjdycs^4~g5qoa3ALudrOGRHClZcznC?q`eD;+Hy +zanQocf;LK>hc{xswcyW)=-ccvdwyKPvtE&fo2kKlEgoVh~J}wp_!M|HXgiSJd1^i1P$G_Ve1V#8%jxaK7YTI +zO{>{bX3M^&-1`WZLHB!<3dZ`7BiML8w&<-~5&A?)psGnf_8RkR#>>`{AC{wz)Daf` +zwfGj{b#Hkh^Jhl{1^gNE~jR^+xg~@a*-&~?E`L7A*Er}0S1D4{lqz9U-whqw9 +z$FmFnd_LiD_lw)v0jSj9fw*p<5m*u69cE-B#Wd +z5vreb1&?~ih}|lJQ!1(ke8l;VB@asP4Lxfz3y^X@u7Hu>+f*rPMUD^_=PCV;(9?^L +zUcde+w+Zf^T#@Gif8F^qCrJ~A8t+0de2?uWJ|000%X>zh +z20G#E;vjpGBBMTByaF>(^s+z@kB1Z>g+kX7@ziO}=JKB}QWUjjazTOTdA>!dgxrU) +z`%CUC-;*Rf9L$^wtcydfHW|}E@)s8|GWB?S3bdG7UXRpx-6d*uI_a^a*-u0S^L##J +z$jXL6{Yt5~$Ld__x@YIogptb}#tB=qV}K2xkqm56M#`F&BKG~`^;64XQ` +z6!BvFS)m*hcI0l4??>7ti}4o@O#py*acniBr=n2%ef(HPw2(JUKnGFg$G<8cM#*dd +zMC*f}5q?I!ikIS3r{F^8{atalf7AulS62m@*diI4KKgiKveh9mGe8vU;{T@fu^?Ei +zE@nkVvS1!hZ->{v)=^|X1KvmYW$*vI0VeI(;@e;%1R^5%3qlh_mtkHGl8rQ()-VxX +zWtA?Ank|?kAY@8loH2Xw`x$0G5l#(SlL)RA(`>9?>YHco6+2n0{e8aInm(Cc1(xMG +z9j7^yDzJ=Iv?lsD{0W$`YL6Y2GU`=6rhMcY4NF$o=KK0>!c+>jHOVxI3ctClZN%`( +zMA_){L__Prf$V){*7)>*X?ro?LIcZ<|7?qcwPgDV!VyvtfKpmV@sDN9ud$?_G#{qK +zR%-}{SEOTeLNt;D4>HbmTCAc69W5#zlp +zk!yXLOh+|W{*no*a%+J#tU6mV2eq?{9H0@|z1;~`6ykpk +zu$#)CIZyhQ?5KpbbjGK74sL5--3vp$N@2h}vTTUlJQVPa6h<5al+&k+sVC!bp$+ee +z-9jzu&sc9Bd;tHZw3^%rM-IVQo>y|R?@j6UqHxm>GvA=UqD(rf3x&xQCjo6b2DkxA +zGSQ8i)13B4RlPXlp@q+L($H#Yo~>+G#4lj{TycwMCUH`mdKxxCi5h%oSW=X%+KUi1 +z{!2DNlL(%|yJECw_ZT3BEV#kYyL5CDI;&|3I{`HXn2c%N_E@@HF!qVUW6}a@Z}U*Tz+grVfZbPhl9VL44r{TR +z7j<$lfF0j_c-!rrt~D0EI^&Xxg~Yxvw)ZnW9M~)fKWIioj(XVl6hD8`@XXK1_2Ac& +zIbULaN?$2vcR#Si^lD|*X#Pa9Pr7stuH!nMlkAeaD-doctb)2?5&q^wazIZH%`A?i +zXZ7dr{VIJYCZ|r8eo%T_piNyU&l<_!HlX7XKeVyp_Fk;}i}1L>s)Vqwv#h- +zsq0XOOX>%Ox3q!D=&dx}Sc>59u@)JcFZEy`@^N}}pUq^nAbtbNgP9TWq81VzX;zFrGpDB!1Q##|- +zsiL~Cgytf@wfqF>KAo=xd8wv*uL-vcZP3*Qv+_ZjwO_!l@(Ts6n#|AzRKQfO;d1vr)tu7%fbnewOdHf0g*bS3{q$ +z*6%x?sEq>M+2kqXUSzr&IlzCKTyXjPyQc-?X7p9|VP+2Q`uMvjSLf3gF#UEEZh%+_ +zem5{w;FIDGJ;VEAEcJV4=@e&vNs-ZR8FJ+;UG=x!!cPMRrMo*W!0dtc_w)IY-{XV2 +zujX$eRvFxGyNZh8QiQGN8x$`z5OEu4lRt|cE0bjhM4{wy1*}m=3aqD9pJ3;G{Fu&b +zl0>*se|GHeIG9E(oE +za468T#BsZT!8_m~4Sp67-O21|Du%XnGra5xzq!HN!ptf%IC_B*kqt9Vf-u7!*XfQ{ +zm>ku-4?2#gPv%^%`>vv0==PgCwvu2y%_YqUspDj{@1KH~{Ts!J;zqCQlLdUp;QLMt +zdEw({K}z=q`<}sHR|PJh?5Uc4mukv_LcF-J`-!QtxfDF(y0)OQjzu!KD}<o1|}6=DKg1O{+4e!KXtT+BIh>e*dz<+5YWu;tN>t0xkL +z`$w}P2ztqdym%b%Jk%((f>Ole78=W%_U;lqxfwIvN&4TOF#p|vbx55-Tw4VFqJR(~ +zv|mP?T)7@PU{<&)2N>+AXpiGvX69oM0okKb7{g^}NvIo5x8z3jh;6AzaLz3$%_Nhp +z_gj}A2dfJL-?^piDib!%oky@uIE2B)+s)*)ud6qYI+-?aUy5e;B&L`X_Sn+kg5}Fu +z^*F^ubgz;h=(>RjPN?Vz1mQ4|M&JDX-&QlP-ak5E353ArV)&rg(YrCqTTjJ^aqyZ6 +ze-0YGkvQk}1$t5^cirPgmrdB_wt_CxU8X~$1A(yD%~}D}jL1btWKL{hm5sMrq=JUDrz2t)ZA+ +zmH&`|-irbb+IV8CqbA!tDNncTy2#p>Z*IceqUbyw1q?~2V;ed(N8YshC}<)_=2*m4 +zMYOhnxnZrysDTcKSK;DMVwj&&Pu!?D-H6k{1#`pt#%S +zo%(f7zsep|ZwFXq?G0}HEl$O%!)K!<-F9&N&eMQe{jqiEkRZgO?T|>lx4V7=l%^>J +zju(*M^VcR1{JVpm7N0k8GC5Gmj+tIG) +z6;9r*Gly!#yTJOJHNfi_7qlL46lYuHC`4BGfVDl1(60iTNtjp?K7))PP#@YP`NW7% +zfy9=iqgUBbJ%PC~s894%ikG$`xJ6s7Ts)-%ybJ`gJWzF%oCV;Ff6oGN0b!Dy0zeC5-iyk~)AqjtuFMfO9^XutmAiZARO|I5^r +znB)GV-f^xknZj2$K^Q9=3XELt0ruehDZB#+0Yo;+Lzu6wqU&qJ|*u!Fx|63kGIG +z=R5@w-9*)$X+umWS#t7u{GEW&%r|gK}Ho??8thkcO?zeZ?d6 +z0!t0Zvoo^P!#l~!Tea7YQhpY8!6}^3FCcDDZTLq~D#SheR@d6ayF&{(T62(~gH$XF +zW->?CvNsOvZYkR%5Qm19-b`(8rxs;2hncsBY5iHdom2w2la1(?sB`uewVDby)d@s- +zq(0k9=#C({Uc(HIkz2@p&;}@r+>{x`caYYV>cJ!aZX2hn4+Pad>7Yn{3eVN +z5-P+l@Aq0r0CAZps_{tq3kh6ohEX>?3aq~Gjip3 +zTSxxtnL!K{TF~7IRBO1#ds+Cbvb#Xrv~*k?TERTS@s1=M47~1AwP~$(nf9t2nYJHs +ze^mBt?R5nLr0Cua2!%e{e1lATF)k1>O$oXQ8P_p;3-3#M*)>LhLP8jbTmCYq^yZwrL8`LVuL_9Un?bmbxWSzhtO2_m*X +z;IlvFGIqa%?yGjY&!hGVSGf`&Ui^O0poI&1QHX${3z!6Et_j&gDgn#3QIfCw>TF}y +z)xz@)3kbJqq_aW-dvapn^c=5i@zXZ^K`;KUbjL9VyviETs5^alPXN$TBO4j3^x)Rq?wKqYx@i2Zv +zvTVPK;^1tO@sf*&`t|C_zuz9o@en%Clx|`}A|THAJ)_rCj%N9M7R0KESW`xq9yRm^na)W-Qgq-48T1SY>FiI62Lr?{)3u&c3GBdx?m0LTbp%WDq>7|S((wj+S=k&ZF~@-$q#E%l3QeH7f-aeKurj8#B`#2j(j=G4Mm +zz}zuTjz2Q0ddK%qq~HQ2mw~3f?eBCxqGAH`R;@|#tU5Bd`U}?>X)lVQjuDqO0?rjy +zTz4)Ec17Z3)AuLMBPY?^*zj?L{vqS&!{g8{d-!8Rz8VzkLUBT{;C;kI_ +zz<Uuw85B3`bE1yra$t!wO9TS!^=? +zFx%QY0!j%^S@Dhe4FdV2pf)GSe;VSUBJ9SnYGaq~jEY{#91k@zgfDN%?Tl?1srv!0CmA9I3q +zu0b@}h!6sP0=c?Q;aiH9IpqSyLXqf9i$<}0*?T0HFRI1h)gx`m|7Tnu#fw@}QlF** +z-&L|O%Vzx_uKW0nr{w#K; +zq=6SCwtqn8X+~!jie(j#rgQjqkt5#r)Z#?B;dnYVlB~BN82-7$zo}>`{CpIh~nv!4H2#LjC8cX +zj+)2PCO1Q3S;SU^_}4@zste~cmaL;zTTNVOl(#4aq>5wX-|pidDvqaWLW5aQ@6X{ymWcG6+)gms +zmvUFzLFd}JaFROa2_;K~gb(L1oy$gkBVF-hofYF$I$w|6oyPtLO*6$gmoYJAu_)R` +zlGquHdP$$)96;|=n^IYcHx(xZcJ?_bmDi=m3VK&k(2zhx-^5YDBVQjcF>=U=o9}l^zICwf5)ENk|vC!su3r!qq&3?m0B0b8)B9` +zE2EgPOkbZ?w6Q}CDxUnVwaOo_j&dgJK(T +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 +z2RGnmFWZ+V`5HJ(e{l!y1;AvW^KS> +z*pp0!LO9CrlX_Q_IJT@gClV9t=OIgm_q@Jj=`Z-`?T~?v+Cv^Og&bJU +z6}}|zUiNGaw@$n&P-9)xrY|^S$A5t~sqx2;T`J?}Bk8yX5-;BYypBYPdWoKhF^X`IYeKF| +z0}6>oU}>EmL(}bGZ6&kE1PT|pbz|RC}+7_OYSc-15MJBfPCl+&Y=wK +zsLde%8wN=3h8FdZMXf#^yLWSebAE^Pc2Z_*#?z~36-h!7m*wr>qhIJ3%X6tJgMt(z +zO@#F8^qlru^HMeHqae5Pu68i@$MFe{!tTE^UCLmB?dllAGPQ;s$t* +zE5@HvBchE{YW;a}TwTyJZIETZfAWPbkbP(hy}os6>kl?ks;vzr9d|k;CQ4VUZnF2RGR`2z`!x +zhW4*7eSk^TFTrfyvaU0Kz2%=>Ew}PDs;dk#L#{U+bL(wObHjWuv6anvr;%h7cH7mf +z=?cuPaD(ST*(3iP4&?{^X};>x^hC5?YFz}zYQ@#EO)dd#mNZxm#~pJ^*lCE+7U +zdU)%y?$5Ys3gbR_O6M8*H3ZfNL6v4dr|!te!`FB0rpqcT&#SHL>J!=}EOpAS_Sq}j +z(Xld$NiSUV^~o$edw5*~iF-!$^n~u3y52}6>UCj~M}ZiQE;lL@52+9T8cB{>p%KR} +z>tuDY6hD+WYY_R-m+3YHXEX?PCjLII{4R8_1TIU0A+S^<$|i;Hmde>|A&r?hfY3w` +z#Pne?==M7};E7CnOkj=FZInlop&ItracR~u^$k`Nw$d67^G=883paQhk?Dl@>DT%u +z*ic=e*sn;`5F6Q*N-;HspRUZI4O@yDNTLqE-Qn=&G%jBFSzysA{GurJIJuW^ocyA5 +zIrxg1zKq;jOh7M1IL(>1E&G4IG~u2Hp*++{fn1N|`g#?umcH6|^HpZOV!UgLiqAmc +zKHI1)q5dl=6MPVd7OB)=^rPQ8^h763%RY2oW3cqc=0p0J2DJI=n`h~f#ChmXm3J_G +z6X~p>lm$J}+i!3$-kPj%gV#k8m1jATSW`avWD0x66QNF8;*=znx1`a2iybJ3U*aOM +zrs@ba04{!aQ0 +z>yJ^tEojxN8polx``x%mUIMuaqP_zi1bw#Te?xrY3jF9%sj_8{rF!AI7ijtD2186) +zcbcd}s7ex9S6rjzgQh6sr-k!`iO8RYL=j%3>$EVIN9Vxh9W +zK%4<##DWI}>iU&TMyt;wZgrI0Yevqqn`zwB2&skL?i#WOvc{b$M_nr(=A)_%0WPce +z9_d#aCh*2JL&6iAANJDMvJd`-v?54a +z5WVo~L##U@+nAUtEP2}Sr^ltZi1GKZ)T9`*qG(b=JoMqgY)&*6d +zyg&_Vt6Aq-7dLEbD0I3N`9`x#ifNFr`_sdM-jy4b+-=T0T=shICaY%m)_4aK%-Eyc +ztOehjCw9GPFSJAK3?n7DDVN4;6mM%U<8Q?w@xFV)Y#OxbdgRr21~;2rC2k)+ZnDau +zod12HlMyQ%HWYC(i9z_4{4GVwPEv&JLxXbERcJDIz^8n)W`D$;CN_32?Hi*mJf8}& +z0?guWe%LlOEjmtyTHPS>L4*)mnkBD~QHf1^G|Aa1TKhOLNGubWb@(?e)j$S1i0=b6 +zI%uRvR21{7wd1Mm=tXnaryU}PRlabkuq*zEmhrjye0jZ)j+Oe;P14rWuhZAd{pmUt +zscj$*M=H4ER>J$KvynI=Eo5$`GC5-CGZ3I+0bxvjGrl-(|1oKRO@bSGDJK +z@moS{s$x|i2y-0f;=(MYQ&#gCb*sapLVV3WEBr~;zMhsVQ*+fKoKQd~mt}93#Ov;q +z=}brGht3NZB2>#+*>5>f4k)WYVc@l!j?z#YU8>Uvn4^kJy!AWup}C+InARh7&|HxxL-Q%PMlch9GZNYib4Tp7&S96Au`Y?u8oMGQ(V|`| +z-A@uezb3Kfnk(#&dfRII_F%!-|xHp +zuIb%iMz0+`Uc~$;b9MlKgoD>?#Ny*(KtSQK7f=-q+S#(3@0D%!(@p)rTMKua?UDD; +zl0)q30{~4)WEYfE$MXznxi53Oe>R@zg}o&1{{o}9HE!t>G#eLjv`HL{LZqGovjQ&6 +zwGp6U>9(vCM+h%M{~0keE!k377P=CTza%O9c#~AotZC2#34%iyGiElIGV1M<`pdp9 +zyGPJl+w@@VAFs4abJM7|6*RqWWtQhGX3ZA-#?jJ^=;^j}XiKs!DLve{1zQBNCXgcR +z=Fwi`Xi2+O(0P*<5JYiu^Ja|;h*2cv0%BLGWw#0R%A8eV=7N+9#Pyvq45J1cew>wj +z+l4wuOlS>(PjNQn`_srS$M?$=;9d=_Rpr3hu|> +z400OHIL8W8G)%rr%7a@bql&_@JIS_Ww@`pG^%R80nlXz(gj~Swp5kUIX#bVZHIXM} +zXL9V4JIGCKd9{3h-}1FiPB$Wwd|lutvmIW>tLH5c+i=M_MX`kZQMhG1XmMl!i=#9Y +zge40zf*b>y&L&oDK3^eN92Qrw$a-I~xpRx8u_6V!hE1%*7fjQ3c2rIE94mKS4r$@f +zXA|;eVnrS`&```z^Tal*c$&Ytl}7P(gV1c1rKO+=|7i=j*hhID{ljKSo*oj7CYqolJVkC1eop+7UedDlcQ4Yji3xE7*EYWa6i9t4ki#KkqTxpXeJ +zOoE2@tw;r7$XJK=>>-&)aTQBPG;WQ9Yd)P~JK4*RZd&)!!lPR#4f~!#;R_pTP +zGR9m1_u$syAK4kEQOGYAZ^ojll$X*)Lies^mPDz`r?#(b7FF^Uoh;aSsvS`otf1To +z_Bjmp>C*4!FTNqT>pmK7CzCt2Z00I&DrrdGAHnWQaV(xbEgbTz-0mgTwT{;_-dk^`E +zBSSYM{P=gCpCqE?o$u&cHK&AoYiPV`)$}fm5oFDjK8tIED(9@j~4%YEnpQ%7_V>}U0wzu_3yO43RkH+?1cr)*> +zwQzo-@1m#2NN;duSxKMMLtLCALx+<7xLMf=PV8?c|Fi4)Q4F#Rrr +zH1|)7-h%LTwOQk^g^vf{@fFqV+~eja9^eWV(0Vri`>kJmR6K$Te_dhy(6BM#!7=fA +zxM$RzV0g}pYeGD79mW#b)LUw^#RtxIB~f5p=d9q!ftSzTY;`=)UD~~NUVgA@**c%9 +znl`t88dYHViBkcmlw6#_6ZT(U{7d%V=bxQ8K=_c3KR;%L&2*E;*6-eEzFiv8Q~}QtHTxN9Jh-?yc7 +zG9T`Cy@U<%Id}`;377Y*~$O +z#HW*#qvpZzuYbc%DI-4?` +zW70C1=PJq0DkPy=DrZNI;hPR#cg$HBBkZJ%g5_;~#4+#EVw@vey5)t0`V`5viFQtYeMCNnttD)>n+>hHJQK>EXCF7azOU(?hza*DC}cVp41e_2^`QGf2}VB +znRE5uGy3f5bE4JefceS;EwAg_Khvi>w+SMp`%}dX$LE_FkZRxSu-+NmOR<=!P49`3 +z=D_S#SNXk!VnBj%W4G;ew-g_>Fwz!w5iDHf$!g5Z$9{BV2*?JK^D2DMC;|*=2@^_yMSGf +zH)G3kDPWqj3387$^@^!cE9Rn&@FF!;JHUfXq}W2Oj|7S|OVfR& +zHE2_Q-78&JVx81V3_U|US>X|!>TBX;jiBio|Jsa9!PpsRw0pqr152(V=~6emuX&SO +zV^l?^sdJ`K1#41PD=w`q4ehm~l#+x8d@Zwl0K`^cn>SxpKU=@W8V^*6YOiYmiWMCH +zmmlAr_4(Z)_gCZIppBi6oz%CW(CQHH7UqM?6Kl+f>npx>%x{{Ct9cEIA)Z!E`ZAZc +zzE=iYHTK&D%!1!su8}t_Xt@tgDR91A$+AgydZA36#0n+hyI(RzQLc{xP%3^E_{yA)aUd!g>il+b;2fFZQZ!= +zAKtmnCmk>sIG4^<XgXlR`iIh&-FyOaU=N=hQkpe6p +zo!aa4aFVRa`v0RGwAMs3GSzoKg!M5`No77Hc&~1KW(09mGSE=GK8)F3zYvn$h@#WE +z6WVcV=BP^px +z7Y8?>d{yp{ZjK(A1oHKGEx)JCl}^G84oQ8vPO7jyvRwjsI1^jHilH;&cRDQRmkW{F +z;mjln7p^ttYK-meJ^RLjupdf+%ECmCTQ-DYa%F7VlWatCnN?OTJ&{h0YNj~MT<-8&M-fn(6 +z)L)kZ|0n}4D|pgL+eK?y8%Z;9Y&E&vBUR_2MU4j|0%Ju~FLd^*cmXv8aU=}F7>c!C +z)LHbKUeqU!kzB&3(K(bAYGoL!ngjJ^kIEX@5uFn%gi*n^@M`&O^)8bgse{&rs{v<( +z+3b&dMB8na0MaHz*vaWTBh6{xJ!WVkR&yY# +zx)gC^Wak3KIdvvP3V%t#tuI_v@YtGph(oQ<{Ny)OvH6eB6paUeE);4@4q_!m!hk4$ +zjRV99p6I3(@5Mso!Gug=RkR_Y{fi`n*SKJC4Q72D$JMCS29)csQFD^0Ki9u6gIe$(TNh!1?{B65p#sGR0 +z#1k+EO{DWJQD$JlV>ETGe&xYTOYm|?WwN#{rYN86v~QZ@5th=Q9zHCU5fIuiW2@>j +z+rh<^e9_>f%Nt>DKz^Xy@G;u}ECJWBVA2w2#3KAyBB+*RBXAM$6=uU?GcV&uAk(}* +z7IboMK5^5^WMAkQ`NQ^p#?zw9S_guLbi!6NlpZ_qw!RQ~Y80-)cO6b4pdWKBe)_Gq +z=(V)*V7!*0a?$4GbkOFiH*Dsi;a8otV40PGyiw#M(6^0Nya%LLs2oZ#Km@=CI#maA +z(LgFiIEFnAU^ +zvrqi~^Wpt2;LZXNJ8Yi3%c44r{tv37m^r%@O#R_S3xh4#GsHDF;F-1`k%zPj6SXf`u%C-qR8r-!aJgHJo| +zl+01ndPblyJP6jll0~X9L5u8r_40CfNtw$BZXSW%s+uL@x!DW))h?k<#gVFB$C +za)qq|iZNz13DJKcoy7?(ZC-fjOwmly;+lZ9nY>7F?C)*n@@jZ+U-uLKMdrpdbK8w( +zCaiioY%vahtSE+~@?gzcmf4EgHO&IR-r(RpYk%mQD$q-M3uIIb*ExO2fu}cI)UP7< +zQPNH;x&k7UNLo+YRYKsvB*cr{(WISYKz4?r+H4_b!Y>*nnTBe?wGDHYBQL}1i+Er= +zn~_&psMUu*f;oL~OMRMpRL;1rIzG>{$^bt7&YB&wSvhJ5`7Q2cnh4A%*01GQun?AP +zPQ1|RMr)+};p1yak2P5&f?IPCF^$D%dJ)EgSp+=}PR62P%?+f7)bRhW4jjtZ1*02I8!ut!2`d^~-{LFUq^6cB=GLdey+v0m*} +z6Bd$>PKvm@TS9)lsZ#dP9= +z`TqN18K_;`^4inWRa+G^D|v*-Am#(%_T=VhP6QZZJVKZnzyY1*;N{ +zix?K*_5oYS{ZGOp&uca=WYlP(o^d-O +z`i*--*PGFk_ZI`6n)|vmE=qc3j8c`YGqM7Vl}Y7Kyj|#(ZxI^FV1Tj_jUL8?DQ}M_ +zSlx*Z4uK3T_Z5dP1tR+&KJAe>5aW8Gbyq(COqgl2k|jEXrrlF(e;$Kvz)|mv#gn|y +zvZQUsDt8-U5h18?j;-b-Q??^Kp^oH>sChO7J@o$S*`sRO*EOAc1ynp5NMa~uh%Lw& +zT;##ULlSWQs?XQ(bL2e)%ZJ*F$-M{FZTNSEF=7(QO46zKN=bFcuf7w)ly^ +zM6~u^uD7DZmIrbGuK#`wk36>a{`j{L@c{%B0&iw8oKv?UDuVUOvo@M7 +zJmC9TzWE|q=P(SzJRT9QmfDwKp`&FVxjSfNZAJSW{w~IHAx_Hpx{ynI@Gi;W;>9RR +z_>YfM?Q$q2jW7c#DYxeJX_}$*KqGi+XZr1nr}r7;|Ni}3+3c$oS5eI&0CY^PKgJRN +zQFT%a>qmxOVK0)73k84_J^L3Lfqe3gqx8z7v>kwsgpj8fKt_%@4Gr3*An-s(c8h7; +zXi7-`vBm@>L9uT>|b^Iidx6G{2tW&29N46$*UI}cj`K*rqsE!6*B8$-h8$+OO} +zxZO&CHUGDdMl?DRazsQe#EW*Z(*rC~vgPK>b*>cmy~8dSnw2PwX#KH!YH*ENfoIl5 +zMkv+v2o^JE<|AfozcZ}tJa)=T+&>V5=CV}ssM?>@9=<)PWG`c1#k +zXf79;_Xo?@uY@Lf&ORzseP%>i;FkS~nNW)qw8P&EZ2Kvzyz)TBk}rd(`v{~HmAT4m +zL_|yCrr!)|-pvj7=HlXVyAec?vDJw`Tp$v9k(+OAY&+O&-+W?^2h9_HfkHc8E)$H6i4%~d122A=O#R} +z=uEL;j-oB8WF^0@KR7@*?@OH5ul%RuB?k&iqj`_6QFixQRvvyoyg1vWvidEY(z#YF +z@?ogWFM;Q5k=yY<5g=$n~jN +z^Ezr?w=kZjLj+q54p`p2k^nL~uTSLQj-Wyby+`Ta)NGgpQW~AU0f61VV{}F+Ma|VY +z+>I;1a6fCW>a+UZJB;46}}hg!^-AaVyzKaTn5ihap_Lg8VDyKZvRnqshR4{Rn#xwn$ucN +zA>seIW6J++$NqS3@9_DhsWuJ_{DMYJfRi`#X($Ab@NVbOZDDS2Lw1(x?yoYnn4@NG +zV0BmJ#JSsm{Nhe0`ULE&c)2l&YFY>9n}K%7#!YYx86JR#)ugn^UU;nMX3L +z?1tcfJ#`oenJ0^epG{ggY!b=VkT*}@L%S}pzo|}5_~&w67n1VLFr!l;y6UY%<~iPT +zP?zMnO5>fGoc`G-MM*JAZlPr(PUU^h9&>z>-G`z9VysqjKaA>9QTt +z62ptw;(rf~_|HRA&+_6niD^hf`ds{6vTIS?$PEhvi_MDXGw@4tgLM~gbegr9@>oa9 +z^yac1vKlMHj+!S7h?RS}?doUFdjWWcjE0p=~fP{dS_)1Xj0$)g{baFYeWZvFkZM +zl()HU`DqET21nrwPF4|P4HDJzEQk%D-ZRb~HA(=hf(kfLs$ntZyDHgDa`5da`{A7=J3$ry2rFH6))%<_%bV?)Bzk{TstRYy4_ZhFh->kD<8IA&fEO-A3o08q_bi)Aw6MC-d`s?gk7J^QsLCy94v3$*J1+QL +zn((?Y9=Sr8?u56`x_dd(8zbzQTA11E$ +zck+pEO?(RUm=Vo{vC#~1Z_+!@pQ1^^V&}hQpzg7NOD93XU7d|%j+^&UdZt19uDUO5 +zY`1`X*uXuw!cD<^TlJ&)_0lWi2Q=W8*DHiu7Xu7_iKz{ByD3|@@LA3fiOe4(kR!E{ +z+x!EE6|*HrlgejGPT{Z0KN!iSB%{)13)IKizv>cQU)y$cmX{2nk4kx0YJ2^Y%Ngde +zscmWF;}N$4t$Hw*bMg8R9z}41^2#7ihWBoz`{{{ktJcqvb(t18LGB +zL4Buxl5fgF9KWTjJ?!T#{CGp%t(O-gc)9V?C*fNTVM)_F<|bj8ymbq6zgzyVT0?O}+VAZX? +z?2FH7h5dk-*4Gx9jcb3uHXeu9ZEZ~M>J&8fB2P`G`}L|zp~!tF)de3C=K|&5a8tg#$mTt +zYQQsYYeG|a>VMby5}VXBF?MCtykLi|3n4Mtn~Orn26# +zT(?I1|9w*{B^up)JiFdofyBdor}^EZ=&-`P#HEu*-|sFHoZSCvkKwT{P76MS+^`7O +z^6ci_FU4`r67GmmdO+(*yDH|T#`V^vuBY!U=NHvu=K@BkpR_)!SiV&c@yixZU +zCfDwf*0y&EszD<&IAF*7&Z8vE<{EvaWw~5aRe5-*U+mN6ANyS5nxA>_>$x?J)tRK{ +zB*!lv6yLCDQVf@Bu7t+7B*#1C9c&qEf+y|j6Db=h8$QL!KWpmKyo|$Lo1o3cT5%~n +zG}G-3gB7_FT(4OVy4?6Veg)dBORGiULzg7m{?>P!Npfxx`~nMIsA|D8_jg$T +z8ZQmo^WPjOKQ;y~#8urhw3G`vFFBtvR@>dHE+tu#rjeYqQ9fXyi`7+gZJPU-ne1gs +zkdPzhW>!Ks?i%)>)t$vHB^vS~NY+x?NO&`MRvPZxvjCXEv}HfVXL0)Gb`P+i!U3dT;p +zVAkW!!l!t_&7=&vPhxo=ck!4~>i1+IEfV4;oY&N#Mvqx!A1dZ)DJM)3WnuWA5(!o%?A>wISyuPU%BOz&ZU>J+N~ih8mxI}S +zy<;heD)7P?3Fh^?y4hu6+36UOog3z8#E9-wxON9B+AMSW*^BJrsUEFgsPVg<&{@kY`Znm#4#ABNh2ZzoV8S->Rm_5JGqwZ@Wq4`Nly7~enm`)v` +zJs|JX>^~yzbe_M0)9;Y%R3Z<4*wRd4`NZ|;m$y&M-PWd^cL^kh!$@~&zX!cI<O +zI#B7xiwfZc^O1DL;!Y@c_`i-V_-cS=NEQ;1e`m&tlyM@Qpac2NaW}1`A0#mdHSgcd +zF@hKO_|f4BZBi +zJvcwJeNp(REqqtN>B2@ij}hLb2=df{k;w6N2DF5G0=+vTf6_za$*0T939vl(lsmya +z{P@Du_zt*F_4mFk)eEH^v9;sQVOWJ$Gu|BYgRgrm&YNINhvFfaTU86LkEMm&u})@q16xUdtKa2+(n!Bk3kC-#^?QN4mp+T?v*AI>sl@4r?CaYar@O# +zdfh%ImZb+@dtsddb~RlciU(9nIG#+tIwL77=^rYZ%C|HZ*>O}$Z}z;04ES!_nv(q# +zK=;>&7JS-~w7%=E@`K%+(Y)TtsYlHf-712&cGr|qD{n@F9~Q*E^BHC-Anc=`8G7Ds +z{F!quZWz^e>xwuHDpoBECGHpT5LTf9_$>J}Th{jk*nS!&G4|MQqQQ}ldi&M +zJqi6ezS~P1_7}T0Uw>zd);Q6UK?1#7ksRNP*7Ea6_KFWmetsy4mK)<0O0a?cJm6VF +z`}|BTW99uQs(iIt%ZqElhvpE@v5z+<$&;gOs(ay_SeOb;Ia~eFzn<3jY}nv0u}nI5 +zsA_7aoTKaav1mbF`M{aZmuD%F>Mf6&6}WHI!=F1mJo8}qyUxjT{N9xxjhg!7>)(mZ +z5UggeN-ED^pE-k|cRgmvc-On+Ws?3$<)?l$qdWoC5d7{ARce +z5&~tykW1C& +zTzcz??X&eO#WBW&t{WI6$`Y|Lf!kPS=a09 +zejc)P^hR{CCOVOewrK(%nuh=IxKgm6t&6s}?$EVkO6J*p`Ve=7L%JzEa +z97Ic|QFd<6OXWIFu>J7878ReUswZ$%;CHeC9LwHRS>BAyq?uB`O+*!OIQ}}aGZV*C +zl)X}#J2s=Qa|ji6;L{yBAp9sZxh2GWNNAbs`P(tGSs(5@a{9{OA&I(1-@WHFzVy7n +z{Ot^992Z?S7f84T-pPO3;wDz!%Pv0C>N8s|`&f=G%nqXk+2q$T%w&aP!jG(YEYFCT +zOg|AOWj-d0VU>$j_|F9p5!Fyj#KJa^c5L|cJ)u?Z*9Rni7l%M@e@W0dsIx}abOjs& +zP!<_L3h;#xflw|Y)=ubfEhX4&0Ccmew7NOAT%E+43Lf|t3v$yc!6>A3?H6!Ng9C7~ +zq^QKpq1f=x*rW(bqYptmK)@3BZDpSjM|7Io5FZl(p??z8Ea0!`9-nVUtm8xrmT5of +zc9u8A)lcp!NA8lS&(`j2g@Te%EsD*iE;ClMeJNE+aFLWmbUJi$-(jT^JUg5_+tcfj8F!dr3>JCn9UK5lb +z1k)Dvd~{A_dD)QRM2EA-pne7xv{p;6H9txOJ+JIPBpv0E```D-umlV69@@9BsYKoa +zcc4rE3$2Gk(A@(z-fdUzL8*+5crq`hLcdT2rMgCx!k4DfIgSV>LC08IseZlyF=C(xu35$2A1&Z4o2Eyf5)x?YL0ijMwo?xM$#vJuk +zE2YOv?E{;UYuzL@`enz_*hG24IbWG1N5O<>96fWSbzL^N#EAx?Qf30A)uxM^kZsrAHsK)!%GgM@3 +zPfj;&<$HVkq;Nz?2leae=(Tr_?NaKULOnlm?Q4n~PcI&5G@uM(MQxrZ6h-4FKO_kx +zYE34JHpddgQb}(<{z5|<)yn)nsV|x@R=6_wK)H7a5&&SkX>nT<84rGL!>OlYkxx*c +zjIt8VS;>1Om)D$qV@hFCh;_3MoF6$4qVTRBHGQ^wL;?*MoL!5l`Adv;{ixx<1Mr`l +zlI_v`k{p3DbOwYGCM$g0uYtMfAc%Xuh@s=VVVJm(?V2Cnfx=+{0~^*a->PG#_Ltoh +zjY|}iUH6ZD$YmcSYme6(8xp~p1I4N-&U|5^DyAwnrd+V&o?&{tMzS!Xq|?3ur4k!H +z#O`*$@Ki3VqLWm~1zbo)^%Q^cbSe(aR35OZDM3@S?@)>dr>R$O_+#=N>XHKjDO^Wt +zeG?hu0@uEaZ5WE;WaGRyt`(&~{7JZZ=HOM3K`uE(e!gjh6)oWsv0Sjvx0doaqkXaK +zUZm*dgbBo%jd$RUc|IfCUL_E;OIi%-{ADK|sXz>=V8~fEUu;xi^tFUiYtYSO<-0Ce +zC(5sqmMJ$jf7IyPhMG${yzKU(B?IPI4p&NP7|36^mVV~C&pKOY+}HZ);ucf>1Z*}0 +zJ~v4fhS)___1TGWzaJ~>N=ll@XCF%rBb76Nu4}5Ox#Zi5 +z$BvrmZB|+B>1S@^6Eaq#bXRUyXy0F7dw6B;tMb1gh*GTz +zcr(&8>=ocil%vMZuwn*231p5QJ}kX=6X`g>={>lLE>BMu8@5OSRo>LB3~Hq# +z9yRAbQOIZ#;0>KDmGbrO^-sNMx{XSv9}r6UtD +zd90TOcbFnkb_$;wX!+!d6Oh2k2^mQ>y9wENb7zMr()x926D^J3=3_2Q7ljXHD&D^O +zwAgWVBIcsMs#Fv=y3BEIFtxmu+cv1#0rjq9rNca~I7ww#QTcR+-yG+DrMd8*d7SEu +zd->2`T#h%#;_-%+Hiwqpo$HygY)^c9-3qm^lkbW9zOre>wNxWmD@EHFQhAxuIX@or +zd8kvjT7QPq!R|K*phb89A4MVp8-yaprdFz1FwWu+PxM1db^RX!Z&1yYym?cJCrkbt +zHvJnQZ(c=H|LrSNzj}}AyK;Yn4zDqTAcor-?_$Rd)X!O$-&=rAza_6`KPh*~7hI*V +zu8Q3$bUxt5H0?P;c_~$lIM+WmiZA+9WZj5s_`b?)hHqr--`*H;*|Po`Y_>YQ_}&pRVxDuJ8R!(;F_Uopt*SkPcm +z<^qgCduwzv7<$e}zCY~&^eiFjS$C?V?@c3davpE_rK_{{LN~>eg!huw3_2u^*{{g? +z)+`Fdc9Z{x3<U#9R|xAKN1n+k;++Vw|&g +z;ey^jq&SG#`2zA3-nxcjrnIRS*P3O+6-IQ@%z*#RL!9g9t1kzIf?T)YP<3$?DPh$r!KX~b|lmIa^u6z6W +z+tX2xgF}YH`N5HI&qf;@?K5q5E@aIau280#V67UhZBl?>S!0V+El6(tbgwWwGi@*f +z%Av~p1pY*|(qxMuqIvq4wat;>7DmptES-cvzTBc!qvd}m({~`j42OcCy|*eIt`>jc +zo2e0xR|-P`PDX~WL!HaC0R=_&Wd`EEh@c<@`dwJ}3~y)RM%9U!TfkP0Oj?ly5LO5y +zd9+b#x;C*8v;(96WnVG~{8o~@dB9@zxm&r@O2l6XF*}Cg+fbb0RpUDv*`Fv{w){wb +z?&GgEj$^P1zN4-zi7l9R#8lik*wr0RPEX3Dk}k-iPzo(o08DrqF^~@%cLfCg?%5K< +zV|DMj`IbCjzO?xq#Os$2sy;SS^_umZ1pQ`bpGBEDmYmysCp~eN^gNy?_;2)h8;MQ%TqPXEF?6)t*7=bqvLnlHo0(FXl+aV +zzLVI>bYvyhAP4b8=%5?X(CUB=#?p8*#}EY>(wtNXcX>~0+rlz($ZGFn{6wb2(?^6(%l=mWqsi$$H6j&-&H +znFMR+U;zkFznU_q;%IkZ6OU;=PaliqywTC0u0HRxyZ^eyOp-_Bp6%rEx6<=5-BR~% +zPs>!?QD4zN^l7}(%s5|7UlbOzO4V~HIfpigu6>bnJtDDsQ*5Jn5=rtZpFUTt2}_~hM%Vja&>kdl5~2IsC^ +zEiK~x%DF<2g~74-5#Nd@4<)|*K@>k4dY4bgn}b@26`Z;>OQ$!5_8r@Ixb<94*4J*Y +z@;8rWB{b^Nb3xOw`9XMb>{rEULKNcrV2Ukqzmqk2b_{8q9$$6uNp#CvoydzdM9_I- +z^6WeAyTS#@K67K=dXILU*LsRx@A8IQ`8 +zQqGI}X9UwI@#8+TK#ljY?exi+G?A$1?6Td-_>wF^MHSf?oBmgD}~s6{kp-*M&T +zN~IIy|NKd%zj}$6xg_%&l`6N)|HG{|STJpRJqd6B#pJPOI_OcSfxh_#7{2KS@Qzj; +z&{Icg2eLWt{EuSkQTsA2*>X19s>q(aD%=JO|AXDhJ?ciA8?t^_0kwHp)ockLF#l*$ +z@TpYqTV`u--N)%R+nby(=7?xW@ao$9E&-!NAD+a#%zL?jcP*@fxy|ozps(ibi@((k +zPYJp3TuI(Ym&;x>V^*K8eii`oJExGL*qhzu)u312P9>7!0tf$ENak%wLH7hz9=V1B +z|6@r(vMnJ65c({!iH}Jtwg5hf3)b5KZe7-djwJoRcJ$B)L-xsa+FsmaX6?dYFk&=3 +z{?y6fOv{m<&4n$@ZWFO>lSUkI4YZ6Y$V^hSYp7+?2ct2dhXhP!MgHg&cVM*q9dz|g +ziZG({+TxDk|1o&7sp@&yoJ?WFEI6H5ppEsK6=Qi_3^=zo_wPIEa=;=(=kuW{^A+W^ +z4W&*i4Yl+7q&GR|0HfexOnhK%qG`Z4nT(VQv-Ze?E##e3nXfSlg=lzh+12ahS$`N| +zzh!kJUnd53^+7yFb(g*R#tj)@Ptw*qMjMTmqquPaiz*HW1B$uu%&Vnp3yJCrhYc3x +zKyL~Kgc3Z48JSl^K`pp9tQfDwuNg@hStZiBT_akOtkCI?D#Vu<3a^IZtaE79%`8uX?4m-!`o;0 +z$ELy4+IAt{t8br%(5B)TFn&>tNKd|pr3R}sqpUjAzCSS|){bgOHs&5~i_sbZW|48Q7s8qxHiK$b_y82C7 +zM3iLeSN*1*Zu9XkCSd<+DX3q-vXvIMk<6pC;FP5DGLwQ|Z948IjSDNoHE`i<^PY>8 +z3z80Y1%?wZE+o#x3#}5vl&Bgj779*@vfN#&d4qYAnNPH=j;<_KWQMNnI$k11Q?fOw!^cIqrlNR60f>s +zlhF@KPtt1;Q_KYSKC7O)7Kk@1EPI@gn;@HFBVd-X0$47Vk +zB-P!!h2r$$MIiZaEUx>6XmX*$5T72XkaQ_4RUv^Q{;Bwjl +zg{DiGLD3|IWN&k;;UcAl;8Uf{2m0u?5bWwvy_E77@T~AmQc`nJgw|ZIK+^s)K<<5Xv;=<$AF#9ID?6 +zJ;hx}eO-ZYH2#_$dp-0g!kyW!9$($4gU(S&=LAsjc(fR*%b%+wY)U>k^5ucTk6WPA +z%-e+nU(-+NsR9n?NAU^l$8`pW31qTt)g>X)YC{vwxIta;+eY(5;`~d?tCVbbPtxDj +z`1hR+=?z7{8@y!(u=W~7wurKagF4q9lF9(4l +zCt%#A;04~-Qm8o}HLl#8&*wG*n|s0eRSINtS(!aRc4Hb9`$Ufl42?5xkKcF@++LR} +z$Lbi4pH*T;8N$`0ZrS>yo^@Un_gBC4a6FDMQ`Rz4u5^I-xc0j&(5O`Pd@Cd +znq%qpN~Z|c#rYmOq?B-&Z!hJ=ZK~ci4$izh_R}mR)5viAf|%n-kx00b&RFo@#Y|FX +z)%vu97iUx&mr}NK@OKAY7sAGyq>gLAM}^APH}z^?Lm5IlCew=zq5re;b?^X|>uFzB +z$^v{=EWdRi4(L&R8@MuKqEEsr#^8 +zaP*EU-Cp4PY%CdC=>RfVVA}@2s>(8uh0RXp&Q}HtOk-XCwRy4JWrmsaWx-|;ACF;Q +z%cjHOE~JMrBiiwOA;Ukl_O*sFF(YICYe@?dt9!|Gx`;AG)s_TQPz#X?{Yh&18+|=j +zW{1ue!Sp%^Pbw2@abD`k;{KI~H!BvOk5%BdtqhAUL-T;Cth0*Zam;@%*S!be29hls +zKyvl(qYIpC)O3D_DQdcXu>s-jN#)xMUW^ip)Xt@2Uk_I9ztz<5^*OQdP}^;RO=GQ& +zab?%W`RA*^EICgw2Uw7`lnCK`11g*{;T5GL*J0}tVQK?OOe~d>ZPm~F-nre^R=_fybWZb8!s7S`{K@hCb86bY(5x`giQ%V1zO?oI+t +z3b2QuK=vvJVDgTUM4Ka-rlmo1@1sa)%=2rEm2ifm3-#a|j*7=QU%881#fqL(Z9YT^ +z8Lmf+|H3#_A+&V0UKDWrI-e+vKVNZ;<7t&CLVw0cu$|-xXPoQ90@vds%@IrVp$RlF +zIF<2F2X2pGi_1$Y-lxT2*tl_k~L-DjySc^|Jz*0(jQ9v|C +z3nRGqo32@=#g+%-Kx^lT^pfeSi$F{EI+2(L4NXFiCsPEW{hN2cRd14uE( +zv1IA(mgRd9y_Q%4OFoyQ-A{>?SfR +zsC9nK2$=6JqIiw0Gb%Gp@zRZEEdb#x#>7aL8dw?@t^GY+gvUAtU>7_8oes8-tc`iO +zeN_jYaQ>YHLS6#7j*>+dC5ZIztKZZXLIE`Pz-}Y#&kMhsqOUU|T=n%Sz68kGgBbZ0 +zOmefw`EM~H5pgs+-4+@LmZROKg$u0F7rz(;Ls!i6ffsCK)u>_mA{=;0ywCpCdMNhU +zXwX|RPiU^095MgK4^x~E4E`Fw)@&w+){71O_z(xQz!+r`R-XdB#ixE?-=Xx`I| +z1Txn&ievBjFh!2zIgFv~sCZn`X7;39{GXrUqlOMVEI +zS~Wi|3nrWrjB-gXB$oFOQehY)!AB<{?j!EXX=r^J@pV&HtG4c&bvPPXkwKwQ%EEj? +zy>~3kJ9JO9ZEcyFTSB=wxP_0!#E_6t@e^k9@mNey-snzN0q9U|C5=8XwXopSD)_Cs +zsY&Qbbzoc1vlK#N#AHA)n0l$-?;6Xk +z+^rfxPsgOR;e`%iN{mkUMflHA$zdVGdcNFGS$om1L=Skc>>TTsspO;s@982MA>Wto +zk!hfi{Nvf|X$P?4=G_3lfTR+pt>)HyZ`|L=V=+f}h^_yFt+$S9`j7udK@dbrKxvpr +zhlD}Hz#xk5<@`{>25}MNRA%ewUL9xZ=d_U-+S&o=l-{IUOTY! +zem&o>XFTF1o#S`F&F|gs=WNzmlKIX06I)y#oUz{Ar`#+tv&s?kpZ(0Z`a7CIvdI}f +zmjC+vjJR*lC7?{@px)Yn)~!>N$6|^srUJ5}c%=%p~mIYR|@KsVYrR7%4IN32>4(rHJ+a_NK$F +zZ(}v)_Y`Pea5|~Y#Y{2IWrCnlOCpDRZI4FS=g6>(n#r>fJc&BdhjEsA+hj5S>jl8= +z99epGJO)Gmtf&D!R9uOyxDV7fHHrlgb$8vY^~9|%`QogM63H;5v3bR+UDJjp4-z@! +zV9(|2-r8b5I!y*FH +z*WUxy5P(GN)yG)#$30HoXdNSCImWW4y}uPT_xbTTF6s~OG-_tWs{WhgnP-o7Kl{FYGL`-##~suSR*0A#Ex#ALyV;7>G4@~M!zi4X>7 +zea}xGC#SS~P{jNso#}o0oxXuDTe9~B{afQF8doZ!C}EDhhmndik%~d4>nv|65(%rD +zQQ4B+TJ!zW`uO)Px>&XAJ&1Qlw|ca9@T)wtQq8v9%{b;oC0jOshX>lcNC8^o?{nI0 +z{?BiH`>JyFZg{qSJXXgMC(XrRC+6&|p+7*VHlO$19~rpDZ*(kl78{!9Feda>`sVC- +zj7h&qFl@Q@>(=oHUB^K6t6T>su9;PfkQI}WAB$c}J}2~a1QE05`nYPINGXAez)C=C +z`@_mVnm4#}$rG+sc1K|b+_`W!)i-z%c5p|f`^uoTrI#a@vxsYCc0_4KYb_n)u`E5{ +zDy{2c^aUYiZoQ(DWLn#5a+eOY*`>7P1xMI!u7y+}7yUsay@#t;d8(b~#qdbBvPMOA +z`Og9h?A&6RGhI!BAB1i6gbBa3FR6UT8l2;Ik#TZ1$G>ip6}Jv#YYVtucHg*qU}^0r +z;VcS`qeU&O)&-QsFwhq-ex#B!*8T8-7Dxq+_M*oJ+h?WqT*b7%$f}OB_wAfx*zOW8 +z!_HMydGnN%nms6M+iSX7?O5%=3=dtkqEQ%4Cp(w_Mh5=-daUJF?+E^_sJY6QaL}1! +z)KuVrJ;8Q&7X7{V^iskesa +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 +zT%BWCs~e~r$MUEmz=TQo5e%0Iox?3 +z!k#Ev0;{B+{Z?xd`LIIE97z0)X8wUFvt#%EnYxyE8k4E`*f#Q^x<9EP8&VeH1s=G& +zh4#J{xQufWJI}%CDZiedvV1Y)c+j76OKS;?6>@0$?%mu~680JVPyahlW?4v?;`*4J +z3EX&Al!z(e>??fIcP@Q^dFKNQK%4?c1rITEc_d8^On^knM9|IB~D} +zaFFff3PjIXSs}LW=Y(rAN$u{Er|LE7>1km7!NGUV=@D0Sv+=dGdjJ-dc|k}jRhx}< +zkB|C{F>i(I%6s@Hxs9fQwX3uBe*kJPC(OdtE;&Q`BVX-W>CFCqDRv#}3Rw?&r)|CW +z;bFvwTO3q1X~=ND&w>4IQkeMXqKUH%aA-yI*692I1Hb9|$X~pl1{VaI4L|7J;JqPm +zxMt>~__4*HdRWi-wM<}-=H1>qw{`uj1b5g0&u)gJ?xndleih5oF^;w23T75~*QTiC +zvEkY8^xToOTwkMP0qxyg_}nqhO~Fz1a><21_9}S2fDin@ii&nrm0#MBt0&?qYdVOH +z=lj>EuRvqr^%58|BDIt!0Ycri`+J3e5`_4Efy+gq@zOzD{_TQ@ejJ_lxfi>s^l9IV7J1 +zpMe-Rv)<48TD7;zKcs)6E{T41OML4A?jRL^@fW|Je*2_zI_+SRTyeSdQ;S +zRcK05!#waO>Xp}vUa=3#1JQ<62G>0N=|gd%>DxnEFdctVuOM&S7G{DweH*@;ob_;1 +zrnxe6@BU{N%2%WQFiMdV$=nR{_+y-UZgkI2PTabM{Q;Gd@DjCF1GWy%I-rHC+D +z|C;Jj(zP$6fd+<{SH)68W_a0pZg-wvoVjg9$)$a +z`u!36<%^hT*4(M|VJd9FOcHJ%goRjdsmo1EHx;=~k=-7+ht#|!$D>n^DHK`_$L23x +zXkL@(!U@boq-7!>dQW>DN)Vhnk +z%$|3vU%0r4s6S{;tv|H49y3lhmo(~Pa00lTs@{q!t5>xG439mobI;2UD;Hl`zk7k3 +zsx~rlA1`ag!_62GU9Jb`=mkVEcCB)RO!N; +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 +z=OYjQ?!jU&e_7G=$qiyx9 +zbd3GJK?m`c-RJ{2g?~|J{s{wpV=mFdmdzrM#!=q1Klwt+WK%>~RMqYa +zZnc{tc?x>|IEx8Hbw;4t`$e^Z#2Nai13u^<;oSvc*xHHZG*B_$4ifT!z*hXNHYMqq +zKCgUDoIJ1oiS6%&8h4J{21Am~BmJBWpG@HVJWV1!T1Icv{0MeM>f0>e*qXhkjU^fz +znv&Z1a-mi%q3o5t<00} +zGHcx@Lm|}P(%5`l97fvauIvMlBTOz}PT_VgK}8vTPA;e@{-_o)xBn7W4V40iDw_h4di!PjHw#JP9G*gE3AJ2Tv@lP- +z`iNS}dI`0v%tdW>&FM1aEN7GTpVYnNphm~O-uvIOCTp}c}yZ` +zE1UhY{+>mq?MEY{3PbataTQe@s~*nSC5vgYNeo3!*jqQ27lR3gCNV&~5A6Qe@(Co7Md06^%~#sMhOdNDn`K +zK)JMlSvXyqM=G?!Ige`B0Hs?9dX&$B?6(UaOdc*>0RT9wA;44Kb^BW%q6VT!W2)8f +z6l`_O{(E|)KN*_urg0#geg{h%WxDfWfXv0~t@js;*ymRYTW8#k^q)1$NLY*DNX`_~ +z4jcGo+0*%N*j7}bzXiMgap+%PMW|DxUcWzsEK +z2SoN#&4x5kZop5hlZ3h2=`+6`ubKaK4 +zMvlLAPd;~BVsksf=C>T2zcthwQ^U*FJs>8)7PGd&aXit8q7w#M{W21ey!*iq{%rs^|EL0KWP+piWu((WGYPf>^nXPYp|t~ +zHCF82Y-bF!3#80>TUEMd_cAW7x}z-Va#qnsJfn1Jvh{OyD089JKD+ZA>6w;DCs{!_ +z1cJG_DE2jbR_2|XKYOot_A9;~)P&I%#zV1x&nc-=3}tc_zA)4FklJ&+S?_A2mdCO` +z6AvJ&f84$|-a8y;xftxYk{UM}Wu4;Rc859`roWHAaukOFdjE=%bN>d&Bq{n-nVM_y&f(fX$u_BNnb^ +zgX4g4#l*He>~9=1WX(X`Z>e&?4NKMwO$Pa-4 +zT}1;rYLB%Gfbaw-v96wFm*>P{3Qm)Id`(@LF;) +zpjqEt9uO%Nw8{nR?hYcXMdXYZG;l0WSA~Y+4Kmc1PP^jrZ6~ +zXtcQhEI!{i4DHU~7f@726`H;nLjJr4iKr@y#7M +zy&0!nk!ap_PsQ98QvVZb2v|k+F~4pR()t=Dz5iOr`##sXyZg;P9O8mM-h!OUxbFRlkjn?=rmg{r%zGSHS$+W9*=-g))$@S4Bs9{W247R)vqvprcISZD9=ACqC8+ +z@8))GUU{5i0ZIzF61ZP*JhG1UC=vPBVZmXZ)%A}N63?Y_Xacd6`V_T2aL3NaedaZZ +zN@Z}XX>*A7hNgmx8>1Alkx36v-Op%M!Xcx2=p`3or7j2hiyv(Uc810o4FX~)#d7*q +zAf9W+lHr*~PD4h=KNGZ($Rnzpwwsa=)1v!Q^$Dh_9^VVpl+Y}2gO*=Uq@K8$OXJ3T +zR#WW*FCx}nGke5riKFh>FWxpFr+b&v_olN)FHKCbLl%sF(Vw9HkG3isHF(u1uwtD| +z>#t`;@#ista4cc)1A(N^w +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 +z^Y~6~r63;q9Snu78 +z#3QHd4_miv14r^N9kor336)oFtIz}3YmmTS3zzKJ%HV?^EpOFL^_h-;+NvL?07c97GZ1zu0dC3Kc&*g{TSP^!+594-{A2CFC!C{ZIy-yrFjN?HEYk?kc2QN6jAc +zTL*r)Go>n6t^AH!#R3~fsoU-5Ii8xzds?Nd!E{aL5;(fub7?gYvT4|eHLWoD-L +z>t~+0KWkP_dPaU&%8PW4+Ag1?4Vlag^|Ut`WLcS`bIuarvKy0!)&KJ7V{XC=VT7Y^;eDt +z_x>Z8@JLGx%Kli|DXHy3CcyRVX6B>Q3o?n-DafK)uIBZ?c4rZyckc*ziZX9E~>zmU$bmWj-*;t>rFuiqrxYk`gV`9>Cv$>-xeIiyy +zfZp#+B9N>vn`5}1A+)#o*`jjlD47!H8ohk|95w*7kB%}d>kZ5-gjE&tqs13E+}k`Q +z2Kn)zSnb7_MjqxUm5Pf{%RRj8memPEh(j^MWCK_56VuiZHkl!)@EqSJYK*CUa+**!`h8=wf)I>V23P$QAl^i0Lw +z2H5T7o2M%h=4>oInx$;QT|Rc#@QcYy+WCn^IJTG0KqBW8gFK^Ff6BHnE_BUf%jF-6y+DgC%6U=->yCYUx?}=NW%(_ER3Kb-?-OfyPWb(Q +zW4tQ{+xJ-+yWeRD0w8#x*QOtgSO@Ovt$631cDJvPm}zJun3ML~9%jIM8aX7UJg6E- +z2xi{&{V{B*Tmg{HjQEe9Ko!}cZxh1;mK={7Mv=I +z6`UFYGUJ@E8r<|EEbh$@8loSm;i6Ba`F0%L#%Zleq?LJl=h1oL+vsvD<^2NZfO)0ir5 +zNU_uV{>{{FS#!7AtD!dU3D{YO2Yr>N!J%t1CVOSB0G$t0Ne%_O?GFcKF_<4qL3?JI +zIjc%fvtLdLX6Xp7{i67b3C&kE2|PpQG#^(x!4v0apF* +zpMba^-d8+7J4`j-o-QrNn3a>X{hp&7MK``7;8yCc@y&L**NA)$}M&G)7yo<mw4GiV`cJ15i-g9 +z<_q{Hp{nWo4A=sQ)j#8{PaC5BfuK|aF3+6)Q>+K;9YHb{HN_y}^GU#v)-w}B+&&@L +zxBI|}sRt6EzDdtfm#ykgzni3yYzJMSGsNmMBIjza^$YiPu4V$+f0PsG^z=&q!_jfw +zo;eNi*7b|;d0BMsK(eO3azHhf$?ov@FrY5DV|VB7UTb>M7n`eRUpTbJcX@stBMWL* +zNl0fph{|J_Htg^H;Ild#nqzW7@XFKmCXg)!=Mn|UdatD@RGxjf+3ogqvE26e>hn)zZ>=9p+FRX!2Y7Jqqxs0pWfat&5MImImM+Rwywx1lwbA(FClX`31Sdb*w!{~^BRT07+r8?gNU5`EPm=a|DqGRt)DNd +zab9tGBi6%}&Gt9S^-G=7eOqOHr8UOx-D7Xv&m>wtKT_U2QTAaeq6zr)-+RF?B0!X) +z8BW`bgZ6$T!XwY5nhq=6QQt%5$^L3jBVFaZiVvsJkf)ektfx?ASv$RoNy+Ev81c2i +zG0Tk@(5Rs|dr&m!0bXmD07(3n`p)(LUDz;pcsw^&-l{*Pj`wEpzGtZV%BZf=&687- +zxNolO>-**RlKa{mnOAcu(F_H4J(8~l31n1;pZEXQ3xGl#`K10$4pOt}+9`ADL2?>3 +z0knRc`hY4T;Ea3xVsOkz!|L}QFdG+0<;axe0$j5?F +zV3(omH|R3(iyx9NA#tpF8;w;8z_Cm8sP#qBSMAxpB|yqQ7s~XVvpeU +zuPBMnpLD5g#PJKk_XK%zX8`Fv(ffGj;@DYQ(p3Mvw#M3*BjxaslkRYNY|9yhuJ@Y< +z15AclcZBet%lt~eA7Rgzp6yml?{>$G#tyd|qmzKlAwMr@$r+Ey_0|S+n#Q&5<&bVq +z|K;1py~?17=M;yn{I!WXkj>4qUlG8wEhfHG?x6s6q%+do?jbXrlQ~&Cy&)WwQ}OQJ +zVY$^gf|0LArj4zR`UdUH;tg?MskT!{PN +z^0VdljnAfgIk2WiMttHX2ilmwy&70rJw3gXDbQ~76}g4n<H({CgHmP +zS!xd1pyXuR{;$H$TAPFK&kz!it?|N|SH(uZZq;**ycU{G$O76<99VY~zvg*tA`y5tn1$2P!HLMJ4YLCofuO0x+5zEH_~6 +zh58uUCg$UCDl+-YrEO&;U62heSQ?VD;ukDCPXYI|B-%_5(PKR5yVl{mKqOM$y7tfH2ho(ACkELx2=;zr1q>?6d#hcAUWc{09(5mnl&sGwg#Zo!J~vb#^`?_L;_ +z{-#kJnL!DKd>$@g-;%fAYdbDG8>-dEAP&UQRUqg83pjW@Ku8Nj&q^KAn9`P=^V9hx +zB3QTFf^Mzzb+f!w?p@F;2~4+bHKoX;jsK)W`Lz7L4<`u)>*tjlgoQ78m8FO{IttP; +zzPCMnJjUuHO>qYg{{SQgb2NQEF}nsm32-$eN_B%|I97;(m#dDnLUFYJ243*UXoQj= +z@_1?=3Q?UUm!6<+3x3xOtFiB=B6KLVP$!F4f7DqDsJNScUPb7`o8Nqy9q#JBnT#WY +zv}WEn;DVyM!T;Y+C|POlEDn3n2|rK+w4O5nu*8HYQ2VdU6ODzIUqt8D$wSQp!{b&S +zCro@mC)mUoLQPA~+~Subra^Z3B1$vU1P&i**pfei>lJL?wcdKbfy|`&2xk0+ZC5_B +z%uY|0Pw7Y-xW2wwk{8t+>$a}`V9&O5u=l^EjnVJ$DAp>7+Rw$;r)WGwrRH`4a=k2Q +zZ$n!_w7UEz&F-zZ%%+5bWHIzp_WxV80(&Wtbxh&EK^~ZOvCX@BEFBU7V{7Z{J9{D* +zVGGPwxRG|-?{FhR#-WvlY_@51ec0Q9p?PHR53Kna>TQHL2|mMX&@IzxS2REsB4XZ& +zyk9P)m6pKfK!$&ip0L-t&)Ytw-um1SvLd<2Z0qdG5cV3LLv1qfJ8f*T;qF}pkCT-N +zL~V4sh%EFVk&=D4*YTXHv|Fl&HN#-EqCeRF==GV`QTwQd%hlz@E?rUPAWVR>jQ;TY +zyrz6RC_WE&z$Nx%5@^KTsjTkhsOs7onL`P+zF7v}v+UZU4s!i`HT|ocm-W}LzaLuO +z{AoLxBK3p?WSv>`RNJ$5ZR~u?R`5WcJxfk5<^LIO1-tN)^IB&LYHYS%(bsV@y^j2# +zC;%Z`Sr@!{{OI3TD{%0DbuMCh?MQc-F06&WXv$g4o%lFH*6Ec)q}oam$t`HrTvlb+ +zl&Ea|Ahw;owALSA2VZ$7UWQXVW%ihfs`;;EGB<8;6ZQb7$_`2ox()P&u@a#UxaKqk +zc@Hpa-j(}_GxtK2Jf~DnPACv8G;0)roNZFpdmR13WPJA2?0qMIYtg;+gg8GADcE-V$PkVQQts&!>P}qi?{@2fsAw +z?M`I%{=w~DU9Va>`5w=T%`R^8A)?kSC}^#GWvlY#iUX +zKT7~v*kjAeb1gXAcu|*gO)7=vGM)2E@=^Gsm*CvsU!+ME6!e*+y~tyTMGsKwt&jU0 +ziR-+{{W!i4mOoAi{&C^ZeE(5sCc&23JMabZO_*L#Le;YQOd#0V|R7mj(nZy(0A3Obin~0Qpnw=C} +zx$=|Gb?Ghnt3PypT^Z!Ejqg4_EE0z;4os#Q&brSe|-yR=e0i3x&@lzZ~!hke+i_jZS +zNXw^`fZS(FkiMWbY9Nu~FB0K3HF>-YH+zi!D2V~tB?~Jr`CrnA4nqd$_;luWU~oNK +z%zE@cUyCC +z8q&YM>&cf!c~OmD76H>Bmw%deh#4PkNiA&Syf)j)NJse;f`k7asF)QIl#egV?VTIl +z(f%pb6ByZ|5}@ovBmRwQnzh@;mARU)%&x-6fo^|j=v(lMT|r5OSiY;S+}g9F;AXiK +zzWtvfSG*CY-2V)tBGkbZ-PA8!JPG&G?FnL;Hp9G2&K^&PNPIBE(o}ZDGJW%3vP4kl +z_H6|RS`8IqOxNOU|3E}2&UI| +zp8UJLP{o%K)Wi66%2{cq%#n`-r_W!zMGcx!<-1MFS=JGi8pm+q%;;^%rEcuX&Q=ZX +zo!6edc_I=hcc=8+S}(^)GjBoQ%3l}rBXx3I^eu-sf5y-S4sss7ROB)$f`mq@>z(KrTjkJ>tLLwbNlQIP_k)Y(xBY8Cjw-<>0K1 +ze~CwU?x_9Nc_K^NygN<$oUH++VmT!Z+}Yfvp8jUR!hJL{k*58nE&&ZbIx<+Acv;AB +z^MWQ2SaoANuL%17$Z8g@a?TI)&Iri)oc;&OQ9PDeFUM&g%v+b0@751nXJ1+>;Jn_( +zrLVy@d>?=F_Emq9;;@-k*xtVq)W`UIZ*`u8n?p_*{hUT;RPpo} +zJK9B6S9f3IiEn_#w-r$X4{a^^kqmD*r5~5CRH1xH$TZU7A7j@7Afm)J`XA<9)E|Zl +z|B3uVmfqQQhTJmy_x)|hzt`Bvs-K)%M06s>?=|Ah?z$sk26b&8PNTAA;hy);7*jr4 +z!S(R#zmKX=<+SrHdv1X)Cmt5v$%ePx#dTEk?YkadA&W{DwciBJe0`gXeFf1I2Fi5w +z*(=f6w&^)D4NhoHo4ZS!uISI{(Y1SWIp2ri)q_yPZ(hLFG!B|A@9GyHeCris9IIod +zmxtmamzL>mAqujwv?7}O;$Akc4nG;$L~R^Sk0mpO1h06%+#v5)B>N0M5uhaPu{=c7 +zR7Q;u#mzj~65Sqd;+X%3d4EH9n>A2Kv5j{$^E9Q!<1l9DBa0s!oZ$~ao4{E8v7%|+SaAtG`wo34we|LK{|Ps~;lf^X#B +zd_H@2k(}2h{d&b&=auHbBXWO!qvN;S +zSEghRrI)7_n^&e&Fl;wL00&j0_)&@h`>K9`@tgmNA>d(T>zAv&4K0?i1&{0&*^7oC +zz`YLvc$K!G44oLj~ +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 +zY1l*cUjEeo +z`7n-&T^&m`xAZ(6sbW3fpwG1=y1sc5Wc*Q^^!(o#b+GTd0hJf2G5~M#C&Cy$8(WJ> +z4_Zs!m;2KC{*24NDsC|mnx;|tr$N??Io6u3kcwL4-v@%6i+rCSE)2c-3BenO?tlWa +zP%)x}daCk!Huae;*zbqFl!{Z)pl)+nMOSuLV6YN9~Vy$Bl4Rgxfk!W64MdpVO<`E8YXl +z6~;^2ZMP|$1+?AdWAB&!82cg4W?-h?)K9lBwmCG3Zl2#9p0Wi=cXFT|(`EL+cJf@; +z8uzMb`TpOLkVp1_5cqM>Q+JL8}$ynIB`L +zh!eF&%=B_NG}dVk&dD4iO}^Y$9O;8RW4ZeDV1_s51R)6_Q#|vfnDNhP;UMRH6`jq%*Yhal-uo +zo7~71D}6x|(`t-O7GXz6>IZ~_+Wa^2eth{bX>P&%-0V+@sn{4s*`7|DT`sbC-*Tf> +z01#~hqyebS7?Xa%Y!7e!SM3FzKIMmbEJuLwtEt(Fc6`92!rg8$f9Wi8xl-n6WBrxW +z^WYf2xW0?S8N@n)_;$KP5HT(1iSbz^uU{X4vYnIN0rSdN8=+=+ZhE2$nq%MUpV +z28W_=lFw>?6vRTzVj~~wXux!IR`*YMzvA4!&e5&o-v5Mxf-EVIue2S1;` +zX)(sQg($^EBlI)U<8gUvSr1ZSuivni!+&1L@LJrR_Gjn$(E*5PwkWr3{D1dEn0y~? +z9b__OAWp6~tjsdOZ{ZhDlaU}RR`--J7XLBHo33%E1t)m>;<8M>f^;EidrbFs%fqw}ZU* +z>0(*z=!LvFHGD&OFH|#70v-~y=l@0PErYIK^|nINVECq6`P88FYycR=c`*lYiL_q7Djk3>O2GTc)pL+bX3cKn +zUWV^~Y>6SelAn?v+>jB5r_7Pwk`rrc+tSE%s$l_o0)Qt%R1b(=fN%?2kdr&it&H(} +z3o5lyUt`c(IR23q8qS_5FWzUC4B#*e#qS+TuwGt`?SUWKNaqj6ph0?%nOK0)xH3u0 +zl>}DfxcFHmVrTn=Nerjq*rRlhfa%FW_oZ@B-{9}gXCM_bh%NEn%1W@NMOPyoX`Ig7 +z*UH)Y$q7T)@JLpa6&WY&EKZS>9YDgJ7wDlyzIr@xqASXq18Na2{Z4KiEjTI(+zc($sV!P+;W1GQ!-1jQ8~;h +zGnVzi!$&Vlf8sx)!Kq)gi6@`8ccyjK%XqDvlC=`N{`+O7X(o#Ljef-H5<;IvP +zczx9nYe9Mc!H1K9-bl!;q2~5=Sp~a$wRq%GlpR&RD;wchypPeCD`! +z44y-|U0wz|V)C+K!As?k%Q<#eXu?l@fH92bZ6pWWe%$SZ$NmN$gZRsHN~zc$is;qvl#FT>4?D9p3rvhf(RD +zj0A^*puc~f0pTU$$W80FL}_-yioj|ltxS{q4(bwK2nFpZCo~6<#5gbjY_&Dge_(;f +zpaxaxQ7+$!^lRWstUt4UEXpiRLi8jlxspz&O6}(0aI6-MlaQg%mhZsTMltD*|4PNj +z*Z0-Te-A^x4?ZAJel!Nc-Y}YfI{DWgYxj9wwOm<1g +zdi`uHnD1bY`CNA{g`IiHJ?JI;e)9Rk4$gE#uKp?{*muq2Rm`6YXDTkds?4Lkz5JBb +zZo~B-M6VVaH&tG0r&(BC3TG>=p{5mH)$o1qAR)NuS5TmwUcW_qdqATX`~1zti$#Lv +zfKXGTf47zGy@%8_IO>Q<1LIMpEt3 +zKP0=%bj<_?@7DC~pPt$D_Gd(%8!hx)!jXUcQBgD>7QE&j{x;Y#-!%JjeYNl +zDwoHRcIaa6=!S?N6HkBtG`XxYO!Mw)4>y^2`8fwDzDo~r)m;LZD!@+htaC0^s7)P) +z$9=9vEB7`Sh7OZOSh3PQQP*|TbMl6r-%AUV>1SD6j;&58`%K8NJkJ#c!TnNZ)HHRB +zEZ1VZP(YpziU;hB0))YL%WP<_Ia86r70X3(qV2pm!uSWQBUZe@`=%f=P&OV9^z6ZGzhD(|IG6Lc12=CP0PJ +zz&>k3tE0hoY)z05MR>yL+imL_a1(R&H3b1)lnZ)!Djsh<5zwvk!`SiLi~%(;I5+qc +zbLt?tzI7};)mxRM4wyY0l~%{O^PPGkoV9CYn;h^-Jge$U#F!$R%pg6%@w$o%n?bY6 +z)<|=Lb30kSQg@$5_3VEG|DIKTw{}LetyC{m4Zv^%FH*Lc(!U)n#NZ624uJvg1CJNJ +zjCGPhrjH^ +zKWKTk+EI1HY4gu9zUHX0&RP28*oUudTc|gaty3*3 +z6o0Zccp@?dXVr%<}2lScNt +z`7-9Vip~M?`zJzjppJ8Uz|Efz5`dl?kYXEEWxfdDYteMo@XjgK&us*y=KP>lJMzrx={wbmp~^gw#+zT~VnMut +zR%DL=mLoscp+qZM-oWIt;ng&V_YR*tiFxkgZMt0%0EG+l7Tmnrx({8xVfR70;3&7G +z`&Go>FEzzw9h|J0Ey0Xp*Ii-~;48%s0q9#kk2UfrsMtW#wed%*CInuc9F&NVDG0{W +zTvZH;!d4x#5ku>@LcrERfK$HkJi)TSj(qaLA82g{06^SZOK~4Ch10GD%!M@AG_a|$+Td@~PDIthr#j7c6+5{2T)d0T +z+T%c<(KdZfHir_=tJR{r4gee32>75}+rk*6Js2e!JW#tvc8^|c#0_fzU;%)K8{TCwyV=Mcps#c+>&QlZ(Lws&G +z;hooHhaFGU$vtw&-Q>*^Z?wkNcx$p=2GcD<`16rDvmjgBa>~!BYD#8oSt~!$e6aAR +zb4H!p4oBuUc}2Aaj;-Y3_^7r3&|%yS=Oy(TkOllA&tNJuC6 +z7L1R+y4!h=J)?Xz+4J()RbE$paDL$3t$=Lb-Y +zO5m(B-q}c;FK5fpoW3awRy80h*yjB-4FFb!zM-QDE|aU;%#x#z9sjY)E!uR%8w?Tp +zuP`lb4>y0hH3KU6KCg(s#~gsvHaYFnX#P*3(wr18n_c-r>TB!#52jWHKE}m_@1`oEln#yBb1kpZckwk70me>W +ziH&!j0dwYnT*Me&_&JJdBdzsLiOVLbrzRY$YQ?Z7nV7HRCby;~c5NsFUrwugWz4M1 +z%L@9g(|{{E*}^%fG +z^QPx9r@Hun%&pSF^6KQlDZr@P>(Ua&u88Tc9$(!NK4`eu9J=_vpI;{5&?rmm5B*@>JHuhf;+;?Mo9CtCxC>+UdhLPNk7C#dAZ#~DX$cM%+ITDVa+uZ +zDS4_aG{&oEip5_^j?0oe9D;^!#e6Z555KnuIl7!s3ta9*tdb5#*S4KWOTln08J06B6P9&n=X`KbW1X7?jZ@d&d!A+VQvGQMhI$XsV?1nC3!;eMNlaN&b-}VPepHVkAyIs)o;O0JEVw=L-|pW0Mew$DbNE%;2v@6)_6Rbj +zujJ*Yk3!`G4=9^{E&AvR)rGq1Ugt1F5QW?-L`n}kA93{64(QlD3eqpwxwK0E!j=LYfh +z2ZqeSG$Rz?`1W?%!<4B6=81%I5|nbJ)i)h*uwc$hA_m%To|A=~wG9Cyx-y1__2=Ep +zWAhC^x&E>-z>0&Tq5-6CHCi4WRiv5I{Nt8&ZJ02{Z~h8dUik=xdAEF%^8py6;lX$R +zr<$e(6T&t962f2{hOdXl=Ux}rQWD^!6%BI`Jw;ZHL2VBzr_KH?ZQ4ToVfn;QTr!$( +z>yv*&W+~F@yV9!5(-nOGM2G$SI8-$gsjai4(MSE0Qb0&)v)~#mtO^J5#q;#gU}NOc +z_LVNp3%_y%2~M*71KTNi9%(ZkLjUN^cbmQhT0g_H;-G=@*>ZF%Ah3+Candd}#;03a +zWy~7h33Y}8@5PG?GQo)TZy2*AShDD_>jUv%e8i(|cA&N65%^4NXH?NST%2(RdA)KH +zLqrOILI98t&Wsy4)fZS_X5_a&}Z +znqDPF*GH8jdX@Z)IsEXo2F)?aMeuR;q!Z91_a$Z +zjBK|?ad@o@D2I?yOr+ffaD|dHcpt}fKtD81YSi;>)5}~S;2y!33`3hCv0aVJ&KqJt&GXjT$ +zz!WhMVAiO&u+!xFY=<{gq+n9CcK*oqFk?UWGaI5J2v;;~Kv<9B3ICj;*E7QH +z>C&nsbPxv27U*k&h9-V09rauFq&hxp@gE|6QSI1mkhOs&t!qZNuDxj_Ys +zAD!|Euk{v{zf3P7E;%XAFCk#~diM|m`O&>25SWtr1$tS-wNT{`ytPx}kI_gtZEHP> +zay>mLJ2y=u)q|T6SAWO4W1nEW*k+ueWrD1dD@t+FJ7nr}E7o0UE+AlWkr5~)Dbb44 +z0SmC+QInL&6Me28daUL0vGkRqIew@jEh?b~41~#7Naoh(+*zGtl~Z0_@j`3?ZZ$e> +zR%F)1txD94TkgK_63c3ST&o@5YD8mb6+|>@PTM^J6fXc6?tjs}CkFutwG`NNL`n +zmJM`JMZTF=D0fL}+DuN9HL?-0p!Ek4pb?T9Q5xI|Y4#n)SvJ<;M5p^`7Phoz8g+R- +zXz1Vj=;S08o&nV$elTz$io8xhn1Fb8M#RZ`d4*(m$^7g(OlS9gENLsg3;bbP2%|wW +zM`HWbQ9Sg{AST6kQp%T2GIdY(rw@I<6(IK}ZGhNWm<660Al`$7?w?gBHC-7fqA|5- +zTS+tz;M~uG{p?=@@*oGW)-4>5DV6;&NHmT2A&{+TV>7%^5ojPdd1#zL<%8*#;xRHB +z&1N5f;sMqBki)8eY1buoNf&tpQ7Ds{jgkO?wYEjmILw@_YPg_i5OCR~)nurk23HlG +z-VAY~9Xx>KnBL!;1!;xhYE}$?i)(iOo1A4fd|k{s0fNkqq(MHFGmosKmON%IjYs1RVC?l{@%uj%5-ds==9Uh$sp<&S<|L +zDj#_b!}j3;bhhL&3&WD}(a``{RzTHGPPJKoI?@=+{ecwk$RJU8fq)-MX%*@&#q7{y +zH=beUogiooD_DdNxYifc833E`4=vP(gzYu$xBZhJR!q#*u1~>!vaFC+Y)8EE#$+j< +zihrzGozEHyYtU06?q{vbjSMm2Rd}J|OY98wcWalzrn<{=&1MMsL=X4}k>aayM|BtY +zm!B1%1$gG+Cd$bm3Y-~q(vMQ!iJ@iAz7UD8BbU4*wG$*PsgX>Pb=&Oi}M_2vL?5nW43q&=L#tuD} +z<@u#_Z^f{?t{8_Qm%h%Rm?5om{@1?NlZ)`J?1rN}pHub>j8Y`2R>%3{C#?PF6=bJ9 +zCpX5m?As>q7B*u-GXnDL1FEPH+J3JIQcbsGBz=TS@UX1>ljlb9C@Vp#vDOjv565OIw~ +zY!ClbAOr~Nh0|D94y^MLKo5%{Wf5sQH +zjod3ROa#;JzgTc9el4u%?xNTquHUM~E-CsK)Seb}YfI|35p?}E;!{fk-xRJ5Koxa& +zs>wk)ta{LqS+P&cb4K38778q`eAD7 +z{-e?**Xq(=q)d`Crv956tH)lZ4Ds&v9m1<%>8t*v7mx0&!ip~Nfu3ud(VO~H>^;Hv +z&`myffGeTysI1O9MjTyz!rnwcL+uMHexjgSLlels!NxtAj_UEqEdS=76y2~m&_9;SA33#~;BU_nY$0#JHW(jS)WHyUV& +zqC0dmJVW*N$RP?TCS|1feCz#Lrsq7}0&yo_3B82e#iibs2aSV9AIr~M{@`N*i*6Tr +zEFn*RO(;M{HBeiPk+LAs@hJuK+FW%ukZ5(C>6-%(w$V3V4>fq;9)8Z^=yluAMm%BN +ztNT*(v3War_Cmd4oxNPGYYWHw5Ih{{8dP2D10bu4R5vwaWYEzqBvg=qDernZjUP|v +zb6K4ZUIWiZ(O-Mf-zIjF^*3I6$mhb9w)%jbgS3Gx*l~Sex)j)>2j!9(YY0}+SHf9D +zpWLOG-uyF_AAc;ldd-8Gc6_D7N<6{;!^p0jI2Si +z?zhXOe-A-V9q<5!E?`>A?!#rx3-*euU%i%Pv@MC9BK_GFp&|-vZJ6yT^Zs~-*2w>y +zmY(O)E%p3nm`x`OCOb#{2%4-KmJvLcLdsD5pT7hZ9|M^R5_HlV2Yu)(-NzWcAqreb +zr7gN{d0`KWojV;BW_bw9ZWAx)l?4P25iFiw2i11C=3+S8BVug)7 +zEnekWhr|o|sC8u$SoNkLV<&RZy8u)a-0@c%2eRHOn;B$t7t7pMd6APl$fLpSEv`ra +zlGXDVGb#`a{LQBzpJ!_!*+1ZO|5Z)cNp_lGz4J0qt+5VyzbABKtFc_z$aA>)oGjrh +z+fN(R{ayaa`JCRHLGR&W^eFXYQ6 +z>xRTMM)8g1eREM|#gXqiNoUad=X$`~#RU!V-< +zrJh_y-H+YdoG8tRkHdo(Zo{pAP0cJ}i!G#Sf=>=iT^t;Ojtqy|%Dzj;{G4_YU6!C) +z3>2LcXWHnIjITd2;6tM|vZsAS5;~c^rP(m#lKbDIXbs{ +zJTh6=2=9O@6o2ReI1QfC6E5L_F};{NogCT9f+HaG(r2^}c}#C^SjeI_RK(DFsPyL! +z@!q2+Y?t)#LG$yhK5@6_lI*mKKqlD?Km4Tf&gN^=D4sj+9z5rRpuZ0xUraq)K2>CB +zdt{P2GdA&U3{*U=riClEey)%6b-ZxIOFyM3=yZPTsZtH5v*A(HD#ANsCcgr3{urCx +zs-2u;K2khX`2Z?|vmR&X!F99EfPO|b+Ord2=QbidlM?m9(S>hj^$r=LaS#~LaY5x! +zgWCptj6m@pkf$c|r)H4r>>hWy_|Fi3&kSW&ZsCWv8=qMJ>jm)5Rfg|5r7Q20dPF7o02_LOmd%hGHz)$ARLoLf1!{Ln +z)ZTGc@;~^acMxkCTKf-c>Gidl){BlnQc$+v=5qXFUjoPE?BXS8GiovR=tjy`{tc&pFw=uKM9?Z4VG6Iem>8QU_H +z;@5NII-Ds93mYjceW`V|nn1cnt;Xl64@<3Yn_LBcC1QK?bi&qZK?h$QNAFIN$?beK +zw|*6UDBB!8GW$or&ieEGZEMbxmE)Ys!^3UDkXa<7lSM+kok3F~6UNGaApLnEj3gfl +z>_nNSpkTTvtcub!x63L>p7m|hwunXDnavyGwCtLO%c>vGFy)EgtY+RRaWU7p7tQ^^ +zqy_};wfIGxac#ZFQhaFudPL=Ya)YWWp1GH#QFNx6#yM}YoV@@y__=?~qS_1zuF??< +z3gY-&ch$e0J?`Z$_!zS8uNja6<8HG*9WzO(w`LYc&WpM~H>S1;^hw{#_czpp0eC{Z +z$fCPnojcoJ)!4CQ-+9N^vsmmv#Q8l&Rxj2r{*(Ekbw!{ql&jc$8~n-bjJg8sCH{DW +zV(k5EWw?_eki3h;0PWN&SFAtl{kj#t0UD@wYO7uP75x~8vp^@0#uV3;whjj`7m;8fo9vQYC+iS$pEzc5sY +zHJtlx8iSL$^~B^9bQvSZ01ahn4Wk0`t5Uj>i;8BJT0;HiTd@%(u^uG@(St!{W)Hrk +zG&+a)Hj0{$S02gISCooIe4=&bmQ~x253Z=xn`8DG#u&X!7DMksQQFql)NLd9{p=Z- +z)rC+=Oss(=3bLwk7IMV?5@f0c_>J9k{EF=Np){Gb7fFLPO`3uv4Pb>!Rua|0%PVYI5J&k)%3ECqnF~6sLa5~9afl9 +z{;xxd%Z5>#dg62$e6Ar+k?@n^lNCnzt2Bvy82~k9u=zwi0rntr9{xLzhmX(ueed_{^<1y^75HD;b!Pu6ez1A-eeAl3#@fc4Y^$nwG+zuz8RqzdOm+vaQN{0 +zgDe|2EBfojL(b2G7@XdGY$PU)HGV+Z-~P9phbO|6d`ps_asKy=s(VLI#3?Bfwqw!R +zDY1={|LpJ$tfblxHV-c87ZazVK~S@M-ek#(}C`G{1aIi!(` +zPiOqn&6(Zh(<-@!S0?vN-0baX7@8%|_E| +zM#?d}g6zKM*%C-EL(VQ#k!qYdrOf6N*lBe2oUbMNktbZPIX$ueA?&}4qU0Q0P +zW2fZg=Y!UVEyhnD!yMsF$%4Pns2|uHjsvKIv)w0co0{7 +zLTa6*@hxhO?Cx0k2Xsy#oCaO`EZxl8!}es^$3qgzNlb@}RMWINJGGZR*AEwc%ssgg +z5(u<*Xui#SRguy+zpV!b?ZCJSh^yFf=3p_=F#kXzq9ioEO$@RnJ^yoD4_^X#(Q2PW +z^^1zZ_KsF>fnFN0_W&?>WrD+-Z4iLrEQn$^&8zdfI5j?y9>J%D2}6Nz$Fmw&NFfm-s1VQd*d%6I?!GVA?=DU(99u#aYdP=$6{A +zR_~OG+P&xbcY39AWCjPH76E1E;N$nFW!V2*{LBXrh1yNdYGrjk0O#5RR0<=utxwea +zpvL5^M72+w%eKb=I^;9tguc9ez;v?z6gKu$dQPsMU}|w02PchAWUaTWm8Jg8zOImv +zX*d>xdnf&e`gES~_>LIFGdvNf->1m2n{k7$t^sD8EE5|pgcoGJS&6nk@XbKP;1 +zEucV(S-goa<+BS7B~x}LJ!j?f;ybqJPlwo39|qX}A#$A6EaC?Go*>oJQ; +zzpU)PV~jKlV$i>C7b4|z6xF-eY>FR1c0Q(CcjA$_-RTnL|$71cXUgZ$FI-x@_roYWmc}^_hwiBTrCa1HtKTwKJ7{n +ziT<0G5cj +zUt=Nnud1Oj{9M&apB~otM{#)%Le8lgCfM?_YUSLi2r*3Oe=S*xWYkir7<Spg;8ceiF6Kw}+R`rA3 +zIi`; +zEzz?yqFnyVZ4CCu>gc$)iif~_Fjj_BkRjQT%=Wq^L3wV^&nw}4#q;jmvKL7iPO=a8 +zItr%)n*`ad%-iZ-aV&dvSsCapsjey#!D}jK +zOQ^XIN+lSlQt-DaZygKfNuZQXRy +z1|;&9N!(5C({lUc_cAdS3#&A0@q7G~k0@Y+aNG{M(^<*nlQYtF^-Rrs@M17YLo4~9 +z>!Oe@pN^~ac#JmhY}SQBCajsxRuZ9rMQ>GjFLD&RV9tpz!e~4GV#wyF92o;KyC-@KS&6G(^%4oXY=B?b(}J5wTfbMJLra72&7~9 +z#m1T%j|n&R1KHH8!)uR +zszB-nPdjaNkX&Bt)Bf)EiGx7P_`ulE_yPMU_fFddxCUN&L~28w$*pocLCV_ +zdbU7iBW4ny3>36S|Bm#3xP&x1JXJih#~h@7aadc@b)#GxQ{YEM? +zvka#5EJA3CvdxNKlUnfLAC{5eUMeu=*uEwq#lM@-Ky;_l#Ql*Ya3mab4V`Mr3za{C +z$5BRm8+H<-Hr!u_a65@^D-oV}!%vdJ>SniQXJP32;8Pbd{g2j0p{y5JAEZOrz_KRS +zJ;ki+EZ5+1APl(a=%&SFOR430uTC6cp+wB7Hovtp( +zYM3Y@H>P6np57mz;68Dc27u;f^37t-7;SEVlhmw!M|`eT`ABU-jIxl>R>eS7@|M%# +z1DeyJM_9SE&1`M0m~qtA(-?^R>0v{b;eZY~c9LRN5Vn%W79V_&JE);pL;YwDX7e`e +zz%erLXc;(>w`U4>o?=DFYz$v^==)|k#dXAxoVk5D_)m4erRI=Ro4cwnzDUytY$Rfcd16#z4(ydCzr7*_82$LfSSvPpr&-FKpAR!M|p@0aOu&lxhw7@{@2`JYcuW +zETs4>>?s8iPhU%+Dm=R&_C7iUY%KcWtl~b|pd)tkS((C^Ms6r}g3?m)Fh6DwEdsf; +zbeUzP>ax^)W!rrHZXbNc6MDAWjz9g(=sgm3tW$v&u;|&e0j$SnKQP(u?=m`@8C*)6 +zG`D$41=3_QbjRDJ;k&>3n#G_oi^0CKpML> +zsP~eyc=+G?d^}_9N=?E(s*%J39zC7jvAo9*%#WUvn +zOx8RrZ~)6wabTW_JXK7;FfU@l;-Kt!1Hi}p<3(52Lj9U|w3Sj}_`Nn#ruV@yoleqk&+JPBZM!CH>!LHDT6iqg)rghH{nPFSWO^aU +zJdZJFqU^)g2ksFg3{=`1Ni%OUCz`_gd^#mYI*J~HRalsQU+{(8b +z`46DBW?qaoVM623pQbtM`69WzN3@t+u(^T!xFKsX6mmO?MYiEurW_O +znr6<0?axx`$h4oj@B7k~ZlmWy$)@M0weRcQ +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 +z&AMEvN=*U$1;p$_h10$0oJ_3ruY +zybu|j9u0zZAx +z_ww$NH~MOD+lO#0+ccZ?rS#Grh$-GD?ig0lZnHRt|5kodztaLI{Vcbazt6R|+#QYC +zT*`76npU#FyV!Xv>Gt(~XJ;L*5lVZ*;!wU^9dn51ywA8_@{%SNC*TGj}Wv9H$=ZgOG +zPV@VU6=`ote*^$HfTZvq_;PtA1OHXM<5RZ%qMnqYAVeZS<1*`#3tBk(WRH>Tn6_845AOg85+7_b&@Z?sR +z(n{)U1wL?s8G5eJ!>6wwSk>pTg1+Hs=U3-_`acY-EdWNZaEKu!IpBm +z5e?2l{MXmyAPSbUTK%St<$@NsWwm=b1=fHqFz`zXcsxFk$!SXfWnsbNq^vGcfP~G< +zg>F1EF?c%14>=iVarbgu$UsTXjV<=AGFvP#!O#hoD@c`t{@=Zj#pT@T&J=fB#yKuG +zGn(|eDj8?b86AJz@$~KGIW>jN;+vo~;eRhe&Ha}4$}1MVgRu+V8M(QXnu +zf8X_kMp7@<&mc65)Fb6&Rx0iQf<^1_PJ8Z(_K8|$T~(QDhJfJ|5<49$4Xo39$5chf +z^Nw;rtwwJRP&t5PLf;CAyyC%Jl@?!ltcHrIdISbU2S>L=KlKQMqwT4X)Nz-PW~TJK +zCsKR4Y0q-l)ZH!$|B1dAaXk^|^U~j6``byHg?eCLF7ca2ra;7s?3&EV=v;J#%Y=8& +ztaATsEY{WINr3qG-`)psuM?QG +za)c&6sqF+7anMI|-G@PZi8Z|96YHJ)s~he@-?HNnuJz{rJfK1SXyM7saslv;M4I0AdmyJG +z8)d*5ks{#W9WqQE=3#p7iK@pF>&A!rP^p^&T<0OlU{~pi%G$6bg`^n-JBVw$qD(%0 +zMj9CMDzfrwkzcR&9_~hId-B#$rp=bMZ|D4sK~6+9TNv9|zx1J~dC1#^uZOFiAEAKd +zYlQ_IrHOs~US&Dr13=VRivj3$>wiqpl5fONCjunq6 +z#|on;24y5VM0;PCz+1+a^kNG2U}6D7Vy~f^a(DEL`quhu6l;&bAQM#_7v00?B5zwz +zbu7Ur?zgKjJ$Zf*9=e+|eL+z>TyN0lLGJ_5fw>Rv5T9>%Ke~5zv|;D>e6dFi&Uy2P +zG!xl62%{MibV#XRu$v~#yJaA#WS!yGulj!HNmz)aAeW_q$f(NVouiVFXth7EmtC}? +zk{AwJarVz`Q@_-c%7H>Dh}-@5X}tFr?Tk%0JxBR>a4b9K(L#c#^#{?M{hikpsO55a +zRX1YF-KX$xDQ?eK;q&Ft4##`5pRT;NLn_;SChW27+|3@s?RI5iI@cT*lfG+#jj&=O +z1KKw&AB<^E_`j1%3w>6TzcuLp5pHNzPg{B`nUAqoz98&Y4caDL- +zzdV(g2z-&)=s>&OWA3Ek3kToV7~|yakNtd2&`|R+I4Uh208W+M0p<+P0l=uv=}EE= +zE&L5a(ge!Oo+oJ%Ze2r0y-^y|H}e>x;A{|9^D0S}Y3((7?AlXOagU$N)4tMa6wypHXPtwfS$L@TT56zM%@U5kI_8+e`)l@t +zV~x7Yele_5V|o~jpK?Mp?qR9Davu-&w&kn{aIzGn|NZ@?W*f^pTf>ewR{70Qo>=}* +zWaC|TLPuU_-H0q +zDbp>}nu(4bS{%*Oz5R!<#8-2mpw`ic)tMl_u$I{7u5&E))q&IdY`*_6C)va>1d9bI +ztTvWb{4&EG51X;U)Y8T3h6Q4*W%C{Mw)h0jrmSExR(V|_X9B<{{wnx?r{v6gyL8LT +z|3W-p3{%M-?^sFoX*}C&u`i*KTKPy3S(*aB96`-QFE&SfRMH0VOof#Y7#RTpA+}j0 +zP0kh&HWo6k{AMXDv~~(;IJ(1!Vv(#H@S)0MIBkmG6Y2^7>`p6`=iMZ_7J7a7(G3FK +zU4?f&6JV6UGn{^w88YEToU#{FI*eZ<=9tI(;F8W&X_7O=>;`?pLN$$6hn&Z^ozUxg +zJF*Q=RYz3N-*)$O$Q5qwZ_S+0tnNMjaiDt9hKoXcj)MRF8U40WALljjkh{n1{8v`n +zAHae5Z{q`W!&ZLinEq^kVf;Tskv(Hq7)wX<1^vP|B4J#@R>nQzsl{RJc)*Ez8~+<= +zg&E2unsjcnEi$~Wu#FSZC9Ht9Iw|x*c|(B`9Y!W;Y$Mn|;j2w48R)}EHm?VWFVdS3 +zA8^+Mjj3xzwa4#gt_1EOJb<~}HDvx$zFkWhSeFg)wY{_UW{Pw(U9aIf4a^R}wjwIb +z))=0~f0!{beIKTb$TeMkU4eZBe_#59MXg1xw2fOB+E+e93%kmmlw5@{IewhC=Lp}c +z4=D@tMr0qtrarx%mDl2Loye`LzaiI1?Mg=snqyl}u7s&;gK!nLn&DF4c%_#uvC4<$ +zxW#F>ld~1x#5%~5-42*Z@E=Mg^Y7#LkrHZ$6sXlHeCJb}bD57j9kbH@tSgflc1D9E +z@=W8q@j|%j@qf_A#f=mxB3;O`1fSpUYG; +z+qD=jr#BK(L{_JB#2G0IMQijnWRH@Aql`1aD_Oarj>RZ&%?Q)h*cpwrT}&f3=P?7C +zhH(?da3IK#PhFh-c>#Y9xfZ3Vj6RE>_daR++1I>~L|E7(Ue8%MxG&y*!(1WXY)yRb +zOg8OyS+psKW3UQ`;@G|HfhiS`vLdD1lMUH&0G_Iuer&bjW>B1d{ED~Ob*iC3Salso +zQppJT+NFEk9p1+0A7qMo`_nm*#Iqk8NWGPi~JDKp5M#Q?-Q2xNMngyGVL%W)eq4HIPuaR=C_11l +zvSpl8G-%*0V(9ugJx^74PxvA3;q$VFGf(I*H3iBo^9~^_FH_@wwo<5G|F`p#0@BKR +zOA1ZX-Igw`eEX;|zcVrpJcG=mjP0|%E!jO@a5A@U4IHylIT2ExCeWc@&Q#{Q|1r!p +z=Hs$9h;EO#vEj8`2(zk*s`p%)O!@TsvU2s&=kl_6zLLfT{52F(c_Tc@_VefC4?T$1LVnd~Jyy7INt9yTFEng)Tg* +zH9P!h#utWRFl7i2?mm?L<(s(fY_oJ(;OrU&a5aoOXg>!W9@>guR)4Yjavy1#6Ik=m +z&J{zad~pgUetJB0Vt!_G7rgL%eXMpzoL4C}EmF2U+bADsQ_`k6!Cp;Z!&f~?I7!t9 +zX~?OCc@QFTz+oR#l|Bj1ZA!?-Q=CXf750Q8(x#s5O}+>0gY;T+v9zH;%%|mwBhFF# +z*I}oYB_3cT{z1K3-WRnN0i5?S(7YD0g}J02y~3Yfj&Ly?y;w-CbWL*bB1cl?Q#Ha> +zDbugky(T;n)#Bf?zF~WXawe^L@dc(23)PCL$xaxy9IE*IC9h8QaeA}H*Zb#X(VCC? +zt9Xq21bcaQ8&sHihGD-L!Vzk7!&k7D@_UsZ&-rlK{R~N_ETAb~_LFMWUW?!D-Wt`D +zvW|{3_2z=Wg3rz##}yyccv$ZdofDjIB5!pDB10;M&fF9{$u(1ZG8CQ{Efb@v0dw~G +z$|twZ`o>Sn8V25qS=(J_x>oY0x-I@5#^(9lns0#NYX*j8KknDKkv_N$>iB)zNtfsH +zs+IDaKmDdqn3L0pbGAypGx%gZNCgQQC4W7m;h`u`&30JY3|o1%$sz)azD(2|_kL^h +zKlW=0+rY&hGbDn*9u2J_(RGc4Np6(I`^){ +zji8^{%jkP>r($Ei>X5xA1?74@d@hJV8T?ZYl+k4$_IzpH(enIC)CV7qQ9E_Sq5l`W +zD!RiGyTD|HiP2X2@#d09SX+$9&(k~jvzS>SBG#?prGM=Sn{pVzildy{T125u4G}s$ +zYh(H-)<^Z!38v+P_{Ao(pWmSCGr^vjU)9@Ju``+3?ob*Hsz-akeF`w!jki*;kiNyO +zUuv%d(LLthPu77Ew__UM-l!P&mf9%(syr=N*u}6Se_J)4(^a`>1)th4=$_t8lb?{m +z-JsLAPvlS(+L9~SCp2v5H1ROwA~CBn=`oy!THO~5+JU4%G4Qs$J=6gUIos_^!ni_5 +zCSO4%MEy>9;!K)QQps+D>s+UY +zH+4#IHVz`hRZWe78;SDRsz3+y)@f&hOp#~j1QuMVlQ9)sao{N9UbL%bOI%(^`ab3$+ +zwCR>;|kIc|ND0aup*t*?UG*#}Zu6&hDdoo&|JFD4p0`w$QNzF@_CV8An8JhzQy158{yPA2eN$)LN +zj%wRN*YtL-{f_o&XHZS7DuwEzprC=y*xI9R?RhX +zmVU&ko*DV(&a!Qs=f#c|awVd!tf|t8qe8;`a7NV4_AM+}7aRZ}v8V+da&`H=G5>cf +z7gIQ}ViY6d=4*x1GTe1#bn3>j0wMg3T_%}S*H^iqnpi4 +z`K0S6nI}&BVVXhoyGCSw3KsHw67t&8qQ7@${b+@^?(7;`@0bTG$b~nOeJ+wA7KCTX +zG0JN%(h02~R0}JXh7BUR0!5st9;YwY(QWmHECc@~T +z1$*+km8^%OHBde%B`no@bqTh!cAKP!4rW@aGf4;TU+!k)ONiEd6H(IYTg=$D$SGErzGh_ek?;>*8Fe +zxDtm~G#AG?#Wt=0omDm}$6f}GP!Y6ovw!=^`}sF`V{73&IZeaBxBP?r74Jp +zLA@HZe=d$tv;y;!Mz2sok?xYPu$PT-@RxHg@DrO>!cX@Gdt5040rf`qe95q<_h?+2& +zNxikw(^}2k>IY%$o!1rya6- +zVTql1YyVy1nJ@Y5)3FKh+N2f~f5>Qi*C%S0L_p;7;;(r$t>5cI^#}(RS +z2sOW-Z=px&%6aGV4(_`ZoYRNg6->TGzAewNyc*vm)7}L +z@}tj8dCC&hU1|0t_o#Q5ZsgO{E`IG=Wf9ph=SJrHRPt`itdvor_d;jdkEXIo6J2ss +zi(NxIGBV4#K8%N6n*+L~GKSdhfjT&}^?_OyC*T@E_NImg{nM$_8VDuf|)fTk0#DVY0DXN)yKY|gdazq +z=L$@v;f_P*t&X3Unvscixz#Oa-OnNTOeFp#x7V*li(08~`3?J1ks=GFUOL<0nYI%( +znJI*WWP*ab^+8+Fq$tf@{@0n8SL(yy9%oB%gpOh0$X9Fn`w=|i2kP~SGh}^hFe3*|#&eU|V6Jx(N4>OHT6k5g!Y`rb +zfX4FH&zY7A==^SzA7WRj$w3E}MO)c!3-8_L$0JaAh;Vok?X~sFVK8WQwE)_9PUgec +z?8xa0*@|ja(jh|21?)(R)B11?9m|m8Ed=Jze7;oJJArb~Ua9Cm#domu6F4A5MH5%} +z^q;~3TPV2#M3Lw<7(oAsZ^UT7tbMUo(XVzatI)01bQGgngNF@+xN3hUUHr7e==QDE +zpi&yIWTE?LP2B!{{ZQizEuF(PWqwDq^V*&9zO~%W5oFc)=|i=Cs5P20y)BJ~D`R_G +z3!Le;U=g)fu(Og27F>fyUf=`DeQ7EgFU%&R)v1eUTN9VVluPLWe6G#O)1z(GNpwq# +zZi0B4en47^6GH8O&gyrrN(2#4mG7z0iyV}Y?o9u%&~FEwtkLxSUIz|?chJ9A*9qgx +zICb&>vxB~Mjy#zTmUK!jS8hHjWc%U;_eK400G>Q(#g^}X!{C}8Z?@f+GB=j$BAh`x +zLzMLF)wIj8F;X`}R`vi7oD-|)R-hnHq+L%!CpE{?O2-ws&KGg$*9~MfH&rm7txQkn +zD9_5#k%+@W?8$zEblf7v>Hv2c04 +zva${z8psgZdZk1Dr84e##B*kVK@@924%1K)+<}4GD24ui74&AA(RxCO?x)?FH{dP9 +zVG+0O#oEXGQ62SdWd2Apf@_&SyXHpY8wi8SPlI2tJZ9&{GDx+QXRj?EkSj)JL33nJ +z85@ggyhyRX4}XlUCTo&~*HVnSKt9c)x`d^QL3^Z0zu%cT4tBU$zoxuYI@us}(#>>F +zVLOk6HoqwAeRGSH>n#+auD(x3Bi5r;ru93jkM=*-iA!gDtM*K;X)3oKBK!$I>AYq6 +zl}RtGg(SpK6||P$Olu#tW%ZSi+9~p7Bh9_-^9VPF0-w!7H=d>?Zhq7C_2tE<#c +zp&<;I$^;#Gm)a2T7k?L8IxwUJ_tk;{$JTG2;S8ddWgo^c`*v5iqO_7%|6#rE65nR) +zf>eSJI#z)kQMJk0%2JbA>X}bw=#PA7)g}sO!qYzDF;D^gYq^5K})ap&C +zhiwh*E_-!gcTm%@am=l5Z}Bqcx&g&vvay@^Yzq80WKgfIKZ75y+2~?~`*B(;^zlwc +zGdeB`&3JWahBrfBc{7Q5Mm*l4?lV=IEuUp +z51+8OQXLz*e%IvNt)9-U{_d<~J&ZG66;@YT*#8{xss{jNKuX;40jA%$!Io}cW|vq=@^PQyj_?avuQ;?B+N +zKLcNB-`N2D0lWE3MNjKliO%uWTQ0m$l2&tx-gmpJgJLh)EeloPYS#~O`0!28LgrXh +zsWUAfrH3D9ElXJxw}zZ|)I*0v6=tJLzkbq$s;t(A8NrM9)ZC#>#~irnX|i%2%SJ@F +z4yXSY^{vka)Qyvo5Y +zory>-z$R*CNmc4PZ0_VjYy9m$Eth +zwB2jnIg%uYyZM|f8NFD(C$vy>0z(i<^^^qFBdqp3q)e|){ln@#jO;V(*4xmKwPM*~ +zV9w263@l?k6QzSMA*JPSnG9&FAzAnk=CY%1ZFi(bZ8rAyc{1G)ldZ1P+8Vq>RgvE@`rm(@JbdjXh_8pxM>w^#bgX!HMeJV7~r5s6Nb +zWZZ8I6aa~Ld}UHG80EpPQ@5IR(iP=g8Z~2Uyg9yf`1kwJGmFo&9o#&Pc|;x#wTG(9 +ze0P3)^trsR(CXg}N+rlPOWnB_sHbX;Rp^Lku<}~!eK*++^Dm$TsVGz4&3n^TD5h~7 +z%XJoz;1(^}tJm+=KiB@w{AaOOQ$W59J{vA)+G=fxek?qbV`*hbWzS@Qqia0v+P3kE +zlwWbYf&*RgVu_u2PVAyWMUwOpxZmp%=yreV?6T-iXk;!ZtWe2RGsGWIisz6v-OC7+ +zG3kVn*3V&6HCv`+!;=+l)AxWghb5;kHU6^$E!(H97~ip?)CYgR`FiLCWVd~nwn&zb +z+kaH}UzS!8$p$nV4qhe>178qK7D|e_yykDDRA$ODSpIJo0Qs&;0JrEgD&;3XNs*64 +zo1?eowU4ljPcj +z67g)qZ?mj=$@f??6PlklM;PI5{8QESeX*F-sujw1AQfjkym(RnexPOhpYw&6mEtQ0 +zA!!NqTPTxWfT;B^B_an+EFxr`@bNOJy``ef$pjy(jiNJZ@o0d*Q4e~zTsqs +zjKl6^_P%|3<^64Qr6OH1AiDv`J6ZEQSAF@^q(<^)X>k8tITG=cQmSr$(#D%)__T(b +z^3)j3VeyW`>SpD3ZKAp8ojz5ny>D9?~> +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 +z86w(;=RQ?+J8=3 +zfA~y%-qVqoi%k{Mk?cb^?ZjoAXRWDUwc`__0w2K2PXVbS()ZrgKfilWzWuo^sYo$t +z3FrnTeE`de$3H)PEA1^DC=$Mzw^(%fdT7S-wpJ;}bGT-xCC%B!!-898F=FXf2298ut+NjVojFr}3x>+_oBhUWWmTfy(O`}*y&jK>`f@G`~yaK$amD6dytr3vv|k}pwc)dlF{{Bf7= +z)ReEA5Tb;#svN=ToxZ#c**`wG?*DS%-DjTQQ(gYOwdL#2boy%=R%>Vwkc|TA_<8gV +z(*c4oNXs2(!;P2L2^j10gO!L`L4O9Q2e?ZIY-7Eo?L(f6i0vu;@dC6~Nz$Z~J>KkA +z;U^*|&=)cFXvfyo=g8JaVn$OzJbu)D+XTW=eqKl;IH!9&Ky<4_D{uBa>~$O3o_TD&(3V;5!Iz6OLMOYs%M`Gq|8MDC_g^_)_hhY +znx{D-voTHwk0NUrsm06n!`fUJ?-ddbcrC_MG+W3-KrJjUN4`S>_lE +zu5S@p#q4@28}{({UDjB7v&p*i!OSfuLodQg7B{C9NM4R*U$z@(!$x!|--cJUTUrY2 +z6V|kA|E*Jx+CDgG6eq2}IhN-+lQt|OaPW}QW8t0t-*zwOTXIE!o&d@g2D~S2y!x$Y +zWZ7Le!YYamBu>Sy9b$=5?$XcN_LM7C=RJq3W}X5H*6XthBwsG|Q;+G2OPZ8c=#9#`&s^BYj{ +zYV2hrAC8bLV<6FXD~}I5-oG#M{#a9yxSGlPw1ae&J!&^U6ks|Cy&M#HRaO(_ +zGOtq_9k^Y7@+H+j|FiZqCr*!uq?;dr0=jh^=`AT1F`0|WWoC(*Y +zK?O~{PA>ghyDbMKWbEJcUC{e^j|129+oW|j}dSy +zw}=OcJTnNiM189@1?S8IA-uruu@iCazRDdVUwvSy?Zk^jU;1^>@?ot=7BX`iFdCe} +z{l>NmVEv6quRlU+*p*ML-mPC-Ztw5xbhZ>Zh`g>}E*D$~^V3IK$ctP3>hfJw!GeM$ +z9>)?bD)Mz-8+<%t^HX~pDAxhoaqCcZ?R;RJd#@!jF#fC^zVl)J_UML^#aFFp4L4-b +z*<0wN#(+-;+CRV5C$Q_rq2k}it55mKLL&3eSOTqWJ$G(ETs|o%*MDY)RKZ)7{R)iy +zpFpLX^p&6sMt2Kah5d{2ZB2fon(T{V&zIH23)}1@+(w2!Kf^X*Z8S0bt6p{8Nnf3l +zWi-5+a3kGDL?C9)V+ZZC_{H*u7_zv_jI?k0H0II;Af~7(>uzI(UjEmuhr?%f9?10r +zNy3$lCV*c6s9|XWq2D$XfR%^&4VY}y``;G)u^*)mxzZmL`#tdWg&QkJ>2qRpD=&9s +zemJgyipie%kwH9a(0!lC$BI{|03rNFs9@KDE7q)VMaI9=q3c +zaEIQr0Pw_f;V~2;Kkv-bJ7;%1&A30aD$oCs?*zvqH&y*NqODh^=Onjm)`H7-)w@uN +z>s|P~F9~yjxZ%5d{3gQ``#=5AdP~h_t3R!-{uNKfxd_RGZJ?a%)P!_B57miU=4q@C +z3)MY^pD|M)yJc( +z?@I`1Rr>hy5`VDF^1!Rf`+V>IT(LTEZ115X<|9wD(lVg>FVy#Jx_If|I{weo8+Wd~ +z+H)Dm1CBj*`5%|dz2m)l{g|bKoQ|cX9OTU<*N(ZLe-Tx1)Bz4-{#&f-uYXZZxg6GYKh9$UUwxx3+j9|0kx^FO^sR!YZTB +zH{Npk(wG((F~{m3$Ap^~R417xeq5Hm-!p9Y&7bS;y1Tmy;#-f}1aAtypuzsg8$UoF +zlZDx+3(al&RBpeqsa3(W*EJRTR#-$Qsm)@Q9W$Y>_{+@#UKLLVciASK_&%}JXw^>~ +z?xLT1TFGyjV6%*fHAhxVCZ;5+yeL0f18K^0jnkWWFEtOtgyV&Yx0z$DstpvdYS9nXgI3vGh8;>0>2?ibx!o)la~7Ija5 +z`o^~1xTH;XMm=?TkGpuMLa33Tjh)AIq6@b^`bb@2S(jpJ*cX>RZa^M-F^Bm*`efN_bKLbmG#Hbn!_K6e&*~%c|}Xp;%t_tvS$H#Br>lyX^I=!k^^)x|yB!rukX*=}!`CBt7Yg +z7*go^GQI3g*+gIfeNz1ApCqyG^@(Xj*O_g#ogejTlwFFVh6t17ZYYnv&R*kk*L!ib +zP$YXQw_!Gz=f-}5TFDHQo%CN$D`rOWQ=h-!7QG5dy+Rm!NKz@0r8nQX;28DnM9IWs +zipbvC@`ZDaDhI<09?W*81{$2@dcFFkW1&5&( +zbk0=Vlw?DSC)zD=Crs>46pXhqX5}vv=_~0G0|rue-R|B#$**w?lLjo7;y3P{*0u6} +z+%?-^m%yzJ^Ebw;=*ncraZ{Bb4>`4!tfC&*vTaANP0EFV8f(3j&}(CFYu}hXlq@PG +zb8w;-Zm9!bQ-56ettk`yAez&XPN&aKNJPCrxVNjF+51&CxX;lube5@bf~c~bN#yZ% +zmcilX=_H=uu1?yJko8Le6knZ2n&%xbN`XWMm2p#9?526BWm@3uOtR+g_I;O)m=$98 +zjog3a)l3_3@<$w~>Rt1bi(?@dA9Mo+vofBBxZC2i>m(BFWV^k&g-Ifmni(cVdZ!=q +z?(CN16!E-tn1k|can_Z0PNVc1Qu`pSDxHCC2G6RR-)F5Y)~^khSBK=Fl?D!w6r4e$ +zbBFpO-xfR%AkV++UTx;LbdZbH&+O@prK&d>Z*!#xderQ{3!$V%Co1=~*V2JCo? +z-Dj5yp+e?Cj)n%GW}+ly8f6Ajc4NtBZ~E<>W`;?RwHKP>n+aR6ND@?~5x2E7ObmE~ +z<}~CsD3X}L4c2Q&m%#b3d5!smEfM(Wsk^@Zov_n-yw}UFfzQ|vA@F?(nxnZ_<)Z9r +z)6rM`)v7PoHt{A(JcW70d7cgbm!+5^*5597Vl@Tr1q{*u$gJ@!%8M>gu-+U8a-T|m +zihF_O>~f!$_O?OBsP&o;a{A;Ca2i<4>`mV4PW#YxJ*faM92xI|BXHOZbGIL6CNodm +zZ*1=o?^8CVscmFmm;(%iRj#lmKfe| +zAWMhoDMWa`Ay5)U7d0>H*=H!x@1KgcZR&5@*jU%wVM2+AO|O*Z)@`2v4UzG(jN%qP +z1f*G?!6-V$zcoGeQZGc22RFxwEAt3t;q9Pi6I-qDW|8b06B3RlF2s|B>vG|^T)nKf +zRPFm4MzoSClgAM^19LOUx +z!c!Wu8lY8lv`|@kG&%(no|Dxz9j>`K+68L#tRE~>YoeMO@Mjoa(nWS29I{a>~L73kaIk9M4)k +zU0O$R9J;KwL^SH&Y1;m#_EO?hFX1Y0wU{JX%L0UrW^skXQvx7TTn3b5(2%=UeR-@h +zM3$>N6?!@ZKkel+Z*-v9`ZQTmJz)BiDW|vSy!MtK_;}Rcmx1(^Am;hcLgD5=+>S|0 +z*4a?+WygD);1R@^S$(!4Tr<44J3Ruo#!G2Pu4fmiSxK$>u?jbwb3Mvb7_g=5-D+Un!o9`d@@7i +zVD=wK(3NhY<^tCaGF@k8?HaEXfw)i8;y>-9#^8<{r?^25Oj{1cBV*0yliy7r8kkOwUrm1~UgrAQ2{Wjq{^GzF(IjavsEiMtHiYOH42|cO&@VL8 +z!8wTaKa%29%r|eu8)--LtJiP`%Ta4ax))(G=~dpB*!2_wwE8%dk2M_(7Q|Px@30ja +zba*oL+hO>L93?GY$s-u6&HN2%duy$+JA))$OPgC0A}}Yj8bI78o~8}QHSd~k2drw# +zRQGr@L7A9k_nh>O;;-9>YnHHy(J&q=qFafA%rO$1bwLWE2D7OP#PicGY;Y3}qf;eG +z*nOINwPDz^K#+joan}Pv7*LsX6qPlVDF##U>~rsO4Ox57>h3N|t=M!Qke9QIL4C$s +zmpvB*q1hU5jG?THA^%JcHek5RXc_KEm3#xOdn|??Me;c6soNB;x+!y~IvWUk@Xic= +zw~(l335`42K&``r&Xxyg#LN!&Gs8m7!x?C;!{Azaz?*jSbm?>icXp~DOP)fr<3ie9 +zSPQZ;gJj;1M{~M!_}~aeL9Hqq$k4;L*^Ng&y`Ex;#d@27)_4x5H+f4TtU#VM!;mBM +z)$=fJf`?@G*8mm*zWS^5PdX~Q%yS%e{ZAy@H3LneG~qOW^NLN%GN4^x5*4xh?oC7t +zC7S;qgBW$l{f6P^2QR%DI|i}&O;Zu7#Eo4=M)hf72!s +zmn9B8s%3Zgs&{o=j*vrq)`Y!xY<9|RF(=nh*$W=X3_Q?n^sTRW-0+{lllzXx(haA= +zG4xNRW+6X`0uC5-Dmu@Dwf|CqivK*5Cuxi-+v~;dn>zU-DDVAB*iftEGqxS0nyw2o +z#s!5&bZn=ji&B#~bhn8Or9T8DxtP$R_lAfm*UH$9Y#brie<9$m^^JZ%7j1+SM( +zrFbG`xoY&)^kUd6@T&p?4^O3aLQgQ7s +z{Fye$Zq>=m(lE3`EM`uHF+Z*i!gj#nDTG=T_8iSPoX17)>@*a6+JKa6jzAT;zHFfn +z^V6}kKP489`8V=fnR?fRGq$O3tI8bjO%o41=gD1!=w);tN*&i058;jSrq-8f;KSVn +z&a@ZDQ`c-F@b@)O{Js8m75{h{N2QhYbcZELS~BU&v&zzHYI6!zu0Ms^+&jG9tV4oQ5m0DkbU=>8WcWO>R*GD(!^vYFiN1nk7Ax7B8{vsvFB-Z){k7$;D9Of>lJTfOb}>IO&`x&~ql +zL%1^M5(3(&w)v4UB{4UoaDz}u +zb-|K_ZGY2+`>iF`XrGjSQ{W+8S^QU;ROZI=)H03pjzAoh^jPVbaGMe=3>n1qoY={K +z2v~_j+u8&9Bgnhd5LRQ~=Cilk +zhBH6q==V||npfKdty-~dSS1!%eB-rRZr|i$^GG11Gfd@KpkqM>dsyz#TTJ04dvN0` +zuXh^T6#;sWR>4R&~9vZQGHF4qh;MVl|5S@Os- +zJfmQMFZeLn^T>5Q6X3%>|0Ow7v-!@a8HopVRWCNgxNny{1>;|wG{|~C0Cr3}n-|qw +zhedKp=xv=@^3NJnrCp;dtJW87=vm_VYAh1>1*`QmbUq&kZ(Usk%>xj^Be&+lkHsO= +zGXqw}j9lZG32JL$<56<$BT&I_N#UDbn_u=!td~ru<#NTIaZTtx?wh|`*!1G1?V8;+ +zTmN(rG>BTFn61(!? +z*)hame(RMxQ9HXYUw)nD)*)esrv-=jWGo`1aSV1lX4l2j#^t_y7G6M3%c+Oeu=C3w +z6$~Uf1aF6Lw+fthDeccf`D#FN0(gVId|IkkDh9R&_=0Q#v&-Ikc`FFlODF*4Tl=x1 +zj?V)9>hCy)*~0M?Jy8}Dvw{J)q7k`B3B~k{A~VnRwxPXfy+L~FpyP)ER+y{RAel|s +zm!r%K)d%&sscoHVsXW+UI`HQ@0_j^XL*gVp&#n3i5zA2iO#}A_Kq~ExNgO*oLl3tT +zjOg2^jn1y6_3R7YUS+TXNwf+=mVs>s4ZEZRvi*^@7J|e4&o>J9GZ0T0=gU2Y;=G*#p|{Y0_Ksl?3I)j{YTi(S9|71Q +z(X<;s?cZvIj=7UWbBajH91bm#qOIOd&7rBDbroz-YzNgj}_6Lx~}* +zqq|-o+^d%E5oj`Wr_N%aEqU1AwkhZ3^b@^h6z5MDt5BbjOUR`!>63?Q2wHps8>H!4OA{S>qomt+TB>%s~DV&PUWozNLm`) +z56>SWPwi|cl)Vu%PFIZVX6H; +z#e6w{OoFc|kuY8&Vac4`6_UqO*W%{#z +z)Z0M4YbF4}xmX-G@gVcxG`Gr&4J^KrvUMOgX4_xtk&>IgaX~zg2 +z(@7AJ2|S0>&G79pMGZ04N^^sdk%lW9k3(ya>vh*y9Rl&n$vMK3gl2y=jHh?DEyVo? +zR#>Jy5+59ehoRuio-~GR?|^CUwC!f)%giXz5L9|#Y=+}EJo$Fy+A*Ld-V=juXd;3 +zoG-4g4Zvo-Zj3y3TK&UPNIaQY_XMTufmsW2<+C;B05F|364Y*khe4W;hj+3O+(*in +z=N2AFE+Cd%0HI9pSj;^f9sB#>qJs#jZC_SXfZl(3()CLSP})Ok%Lc6|CZVJ^zc!Ak +zq*ePbI?0rDrolW>x}N`y))<+MMWF{r3ZGb+yKfo0>0*5U;@ap~(@gCQ|{V+dbWpB*$ +z9;EpVnXL&=d)lu)w~4AN(x$u*6O$S^dBIf&+%>aLiC6i-_0vA(yzW_ttmtbQm92K) +zyQ}Lz-^_RXcJGv!#Tj*lig3~LAGH_EJT_iQ-1GkfjVA1{(}ga9d9iZRmX9 +z{{?3ho>Z7ffd$bpwongS&2)JD3_Qm~YXHpjQC* +zW%G5wyS9!I2FD_tm#gQ=6~WtmyXUlAg5Qzco;FtUPluOcnKg5dE;uH4 +z-zc3xJm627PhB}1f-_c3EVM%v_)Q>}cF|IcYZ}+o${fUX)>wh7=@7pcL0!Xk(+ml# +z!YCAFsVa0;Yqbf-u~F+fcySzeJf>OPdf&<=P2v^rxahIdJ!AN>%nx%hgxD^*ZuFy7-<4FbW<`{=PL9gOHI +z3jz2MUAj7#TqO9#+_)QenGiI)GPRVcILmI?i877(80Rs6k4|G3bG|c!goe{|8L@vqK6LMllh%`S&Z?h)eRLCP+{>ysMP9 +z;9^ut)p=r6nq~m)K0V5mR+S&^N?DpuF8Z%Sd(SPC=lcy{Nh=B*-EeoD7|GA)-mt$6 +zr=wLpgxJvvj5M$1@*i|fI5sAwpc8)wG@&~gm1Z#^AuAjGQ`UnMwk!7-*pN!-vkBbR +zswaY*UMtq$3$LZqyt_(!2FC4BfBBHk1=cKmGu4v={2@t?@s)n;Qcv;w^mhoQwSITT +z^f$Jp?5GJllWeIvYUnrV675cgMf^GEx$A47LqYr8blpUcXC)Hw6Hg?8 +zTh&7h`oGCV;fX<9f*+^G%C#f7t4Rx9WP82#1^6%Hlkdzq1xN78G4onZ!8xlPty{-= +z-T-G?woJ!A#;quD$&mEFEUyIEYQiR>bpNu%58!zg6SEVTeyucXsVmjpmcg(q*9~wiWZFxAS}Boe&i^sf +zT!wcoPcah^LrT!>Us;f^rK5x7HY8#=0N>A(K~sY?yR{_H^S)%*lA*}SE# +z?vJe^k-EHt#hi2U$d6a&j_(d29h`}DE}fs52q)7YYMi^L3E!MrmF!MMBXuTrwFr+7 +ze|wLNjbDLH*T;4?y%)$t7QGXZri*`QYu_&4PXm^o +z`CR3rS$EVsEJfe?JD7DP(7ybR$0^!=!WG(}#&j+g|5UEj`g~^6Up!im;Gsz3&i9_Vkh_rKpF=yD2aBW8@z!Zi +zmgd3K$(Eb{YkJZ4*%~bwOA1ukWBlj4QXKkU-*EY97Fyd^=YUBgvmI@f1;wZbcM*&d +zDE?BC_rrI`EZc=vc_M2Eo>XB2V1z-#@eE&M1t+6p2TO%XmUIx~r)ySV>Xt{}!8`J!=_Fbpr}34Z9)=XYrlz!LB0tm)^q7Ha +z+Z%V28B>2p=sUQzQB^vK5gO{HF;PsrUI?mRzca%(W(Q5%Nxiwx}L=*3-fk760(?>}!q??p$9P;dL$u&A~)IsvObs^>)d&ms- +zpOF&iEVkKnbT%boSPhajAw~N8tF|w9`SH(|+i6vs@4~L-dEF7VeGJ&aaeVjYU!dEI4`$Sc@>Ls--xXgoz+(Ja{2)R{&^CP=8;O0O`?jyXO1vUiz%5FF9Zs +za7AV6>z7Y4?DL%2T3)11E!~IsDqig|$Cq6`KPce<{l?%0bgc>z%4xY%(Ybh^M)Tl{ +zYfXurNx1N36Sm@1kESO8Fgjxv{>Y2$ST_ +zY~k>0XDbYHH3A=;bUjHfjGQ8KV2Bsc30@+IkGYg!K6KG~XtZn<`=a@2h>R9t-aufP +zirvnJAHohOO1mbE=eUp!cAW~9ITbsWC_00X!Ie1ckT^B9#Ig+)^JkAkW!6|W-7F;@ +zW~~ui^;WO7bZ;5RUMc0Rjp^*Kxyli$XHO`BT4$^MM|xkR-OyDvqIMX$8W8IkD4RP0Y6TV4y5S424Euzm%|UrmmEXA +zz8z6Ituz|-a^Y2eVEN9e$_$EIs>1PdTKRv;Z*_NyZLu` +zE=2u+%b}iQe~LO!zEvKI2(J?UEKph7EPf4Cusw7tRpGkft#)8a1a1m*$G5>x@?|*;jf0&^*cgut%#ho##-knie +z`O(l{M)B+RuZw|z!^%6R#1d5W)9UfGV|}CJ-Mh;Nd7^rOBQj^RrVU-L(<9RlEM14^ +zeM!N4Jz4+sDw$zCJ-onBMtNpdIDraYeVC$-kfQV*yK@1ioG4AEXrZ%7@bdJXU=)Ud +zI1YpC{$cpkb)(8*{iuMe?&$gz*13m{fM^)1k5X0bT7aOnVM|YNx^4y&Iv~I6v-d_} +z+2tF}hd%k;#QL4okaZFIo*`&0omS^}u{7kg>G7ah37r$aGZGiKZ*mXJcY`Qd8T~df +zw80M)PihElM8}z4LeMn7{Gv0+)z|WeFOZ~b)Z57;_?%8+3Kq&gLK>rwQ|H|3< +z)g}ge=ARoF(_I8PhGFRNOx$@3d#s%#8h4DyWbeWTSIOMKDzfJuou(NU(4BopxG9ZMl~f +zk`Y|JU9}OUTk*Q_(xd&NORQH`&(%H~H6(C=hy?yEVEQa(MoZ=)&E +z@GpaUq`d$sLokFfP7NyCN5{EsQpFFfyc}{6X`9(Ca_aoWczcr{ny~$L$sn`LFFNGJK;42 +z@mG^llZwlSt~!V-@=-sOh^JgF&j_3i*!AB2{CjWkk<<69-AyiR*Dz(!*&)W=oDTS* +zU^-)IhYdttU<07%H*6NJplfY8x+kDC(=MPul77CCcdBnb!Y!Xde!v>BSK6|2!*WgY +zj#FRusb}&F>vo}S8mP>z7+ydDS`Sc74~69B#Vjzy#+S-RQ^1WcWx4@x>%9`hl#fvi +zopuY->|+!2u}!6kbV4UH!4U}R=_r}&Yp@Ah7yp7Qe7~G&X6V-OE7^AXN-S_K@9Y6# +zU%fd*Dv!!6))*4mRBhWD7_rV*!MM@i@ijdg4$8|c_Pq;#GGX6UqX^r29BS!kbno9p +zL%Meh`$FI+rX8a~ny(gN69H2Hec$`|KYb6sS=t5GWS$%);*)HnZTcp^TQobF +z2n@coLt+S~ge-ZU^K~>0+xpbPUa7W=(Wo< +zUOtn_tLtAhogy5B${OoN`@_{Ii*hsikf7u%{Cu>to +z>pyD&z-$i>=o?-dxr)-uW)KiJ|7i7TW7yS44IE9_d9f?rSspW29K}8u4sCxZXnv;U +z@^2${>eIdF-cAD6Y`}`!y!>cl*OmK1AFi||-Ei8$mV5b()vA}=$NhAU8>DH$LYl4A +zCPki9HT9o_%L4ZD&&!)x$_|HSbA7Dyf*jpdAD6zH>)iFY)ST<>MM50UQr8GkAmkVm +z0Q4f|Enpnr*#Z=KAscO6CUWEF`u40F5NlXH?$asJ9;`Q7{7UjGFwOn+!jo-kPl8F) +zz@eVeU$szf<5`qW +zG)%ED%10)v$Qc!!9&Kb?BsvA3SN>~Nu0{Vf6E)|yZ=|4EB8%jIHYVcp=anu(BUN1H +z0oA1`PCZx*7^7WUoMG^ePseHhg4?A&FY=LH=Fgk0{94KY8zT0|^LJf!PmDXv +zv^M=Y@ONs;Q5-D;fCD<0l?UIiT=UDChQ|P=G#H@^e2r{NfjjMd-k|#e1}atZCgM*GCCqD$AK7_e!Vo{weEugh9^;em%~lgjKeF|Kk-UJL(?J}VOlp!(F#IF +zrBjRSL?x+i`iW9z(A`oEpHE<@V-bcnc)rhXvOF|T+8}1*zeu0`#+>1Hv7J5{^>wguzLpreM84 +zj(J&11WFu#$G@-3B$YIpwL1yP{cQ_@c1K@veRK0^bFD*PlHn}HT_KmcmEJ_|k9#lV2v?Jl!;Ez0PMk%Q +zk;}e@1gtYnQ>_JsdinK!RQpYGk}a +z=o=wFny~x(RjHx1b1CSXmKY|^F9@TgymKra%5o1h7x`+Wk%Z#q`otO=p&JU><|pN^K5kG70k-4tdJ=Z +zfM?%TnG%TDxeqsOGl*LoNBPg!0%RI(b4X-E`0X#sza4{FZ~0D;fEeLv<^DBlX2n;) +z16l|iN?t~I4hMC>mwU}^D@sv-3am*?y#}G4{DSjt>)IZ^X?W{`XcW0sEveD-$35!H^)Nu3X?hxkKe^OIIl=c#@@6A_o>~T)JBB&d&LlRz_IJuekmEhwyac>6; +z*B=@Bg&GN>te7->NP1L*rOjy7hYhFSxtezoK-diQ(%m}L{r&}iIRa20t&cZ6&U|XP +zTx>DCfopc^`SE(VnGm*YIrUxOvq0j|1qpv@^Z{Xas$u0MX7NyF)CtASo2bWyW^v8U +zFFxlNQlVk9NXNjaXVvOn%g^_;x-5CVedE=tcgF9<*`uvtRI@+PNhT(J4aq!87XEN| +zIx_QXe>!DFXQ@5Ou}DzU`17rI +z4b}Dkx|VN~UnmvlQ66*wfMP!?(qeHc^G`s?+4oARabS4Scw7HpnBYwc5x{k0D=z)} +z>3Vaa;a~r!kMof0^2d_IyCJ;(I#|PqKLci6j)8vAm5+zTEIa% +z<%m@HAR;m2DaLX4?8A!=rGwOxRjYexZ`@lKa=S{-(Dr}S_`a*@#jtYBrHh9m#qzuS +z^6`_}az04sSnsEq38=$!g+BoQgka6_2M!Ttz5N|c1#sKJtcr9ZoA3<8!w+k~f_E(D +zuW}z=o+o~LST(;5Aa^(FTh&v6eMhno&Z-IQyk`X{`A2MTt}}M$q54h;Qqw5o)udB! +z+uH57Y3*xGKu=R|o*Q@;4jCPR?xgZ+*Sd1iV?4Sfh04a0%uDb?BJiz~HUn#qZF#ks +z#=E}{Fe|_Bfabs`wZ|m{DF)hapo7(#ibg%k;n##=3&Vz=+>`o?_kSVjcs5>>9|crH +zDp^ck!vU0-?t??@w%U8B{>kG;4;vVjL|v)aa-($A-bwiZY^F1kW_`#_-c--%1M3$RcpM(ArDKv!Jt*v-W +zGPM|U!T=5-1Lk#e@d|ZAWllm%RIvQlBOO!x2^_7X6-V(OC0nzS++v(N$Z(JKsYzK; +z^v&|C&47`z^-8$5!kk!{U}A$2!>IfOTt@Zd37{?rA|LVl=;smX +zi}U{9?Gz!D?p82_Ub#ZeM*=P_UC7`~WliSWCfw12_ukEIFKQ-3Jy-jy;YRbzy@QNL +z&$?QL!*we}-H#~KTD9JGFR+*6qLq_?Ll;sJrkJRL!9IB&zEm<@%uQuao8U)fNNs}= +z|C;H{t5A%^|HIpRM>W+&{kkY3uOgr#B1NzvB0}UJ|^;$o|J +zEf~Ln6L15%ZZR)KXUcC*4<8S?PNejRq;5EBEyx|094eAgoMjb2#)Z-h?t{9-{P6pm +z-%6%OfN{LKFjVMf4lf4^P$Uh;BzE5jzW=z(nTzgo>G)FO_ukcI65t@TJX9MlaxI_iXzmtPyV}nj|3?zDFKy)d@sBzpMTUn*$v4*{6TD +zrM6}ZUl)xxd=+n*KLg|mCl3TPu1>)aK_)9t%_%+Ga$a0fY;IM#9S9^0{dViQKp9|T +z{iw+eSPpGH;tw%!Za`GVNsip-JCGiDCf;}M(=!lJ1pTIQ3oX +z`jsLfx88k6X{!%@7jz>PK!8WDboh-S-39K}4Q^W$4Q=zu3JEJYD@!rCp*e50nBB(U +z>l`$to!7W(!Xe;oYvedt#v{ekwaRVv|K>`M*W*DO0Y68Uy^6zfU6!9umG~Tf$Xe6m +zZQ-UHjs;NJI(^dK3^%)4!Nhvo4*%IrSMEQ+wF-tPgh +zW1K0sEpMkr37JWZ$FnE+%S~gFb}Bivqz_Zd=(GCwZPg_gS`rYM&yH!QL#*IF!R4pi +zDAyb`B#t(@j3$s~9J%H*0se*32eA1MgZITu25g{2PTy%csKE4|_Zh^LQF!g|k|Q4< +z7Wg{F8&_omaHk%w_!u>5WBsLPSCkkqCvT0lc6!JFfvgk)5Tz!k6Rm;xDau132*1%F +z=l`+x_nLjgMQJ^q^uit!8J08j0@|`c3YnFuf7Ua_{(U2g3oWaCA6Z1tPahJ01J!si})jM +zHj(qxHRVrk}6oN6IiLR}qMk26^ +zGuzf?ge4akVDeG;ST?W7z}S9_W-)FVfXPlgI-J2pe^*-wn>-;$(TRv`meu||5hiG; +zUmluYMUm!XE`Rwl7;<-IHQ?taJ}VjFPqk}Kw}Y6+us%eUDh%1c;x;Aqk*0?F%O-&9 +zSbhi5>Xd3!ez8gq`lD;IL6Ip0#-G^P#5o@k|TvO*GV->uSp+CDs2PXAtPDtzc8 +zliHu?mbY#ki>l1`KjN9!*m|#JG4vlDjGyDMzexYCpY$F1N{3_87{@QwfBdZXuu$fA +z`3v9CSjxj2TCZ*w)GQ5@&`M~btYdV4{@nBEx`}mss5_G=@OMImIX$E7R-43ag +zo=E>DQ?lfSB}hNQe1qAI%hC;4WtHK?&_;nd)nMj1*BIFO@F`h8Zdxg)Q$91G;!T)aTLWXC^s~cMs*!nvO#-Q1)Qr!8I?E8 +z5Qu_Q2i;G1B-bboQ5ApkCOTp_M;3U*BAxWofw(Dho^>z2Z9WoL&EBKw?I_HH-M +zUa%@Si?eoID?W5+;&in{exbEgjQbJ&s?icC&YMX>4}J1cYUsp%%i1BG>Vq!9 +z*zN55xRJKD3PsH9zHU4MqzqCA=>R4RMp|O19;Flhd;$f{eoj{+BhA?u8UTp$z}PGR +z5s|49*pb^JwkN`I1tLeE=NVlbNrw;ts3!J77M#UAW0zV9r-hw{OKQb<4 +z<(PT=&_tV!XaXAvqy__AQk~E3Q5r4adMq3qqBas4UmZz1TGx71w7qItXVzPO53Cgs +zS&h~4)x7D@>i8UI%iPcH_lS;`M0#CcO>6rsB>+x@I7tNC%8xc?kCI-t6Di)e|N5(5LmA +z9?&|0&Pmpx-G8x^XW^G%bd0N*P1uc&q=fZ(xi{>G)o}5eg!>1*h8{ip{Gegqid9rTFga`Q +z1ptaF8LTbyCN6Rt{F%lPce|CP7qDitP~RV{BO2PA?eB1$RDH^dy~IRV>^CBtiP`Z% +zO4L4L;j=tkqm;GNRG89Ymp{XCdwmFirKS$VyB53svh%_OM^8Z=0c;GUR%e9hBM4S| +z=a!d}by}0jMr&$>my-lnFZ$|Q3I{A6CRy>M(RAQG4EZL9I$6;T=)E+xPFAnl5Oc8m1e9t +zO9mo?19;`E9@ztKJc}aArmu4>h_)#pu%AdkL+balae?ww$^2Sx;sEFKN}8Ik2cK!j +zj;%k9s(rFaLt@L~$wMmh1u}+X$BTVW9J0AOXoVk*Sg5^s<>{l{XRMxF-;EEdfy6=n +ziMyQlCw4ejqk9S^OXwb^q+bLX2ZFnd4`aTLH!lw+lU^mROBrMgCAc?*HYQ=EbnX_p +zX%5dS%(MHcCDe_6@p>{h3J7}|(<6W(pV|5qyCKO!hXS(#4E-2=)09g3zdcH2u<2wJ +zA-$cUlSG_qaz<~j{dd%$r@0Gz^{}t#4;=$II$|%f-4^+?&~SXv_o+K?q4#bC^xo_A +zk#-h$BMjW-yM0|D0GRvVq_0>+i{?qAYAc@t{EnPd=Ae0R%Y*TcTrBbt7`x8wqC&?# +zwtgiS39Rr`18l^McQrH +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 +zZ)i&e?|S$r(B%iGiX +zy6|n-dFC#jiGGu+y^8f>z{!?xvmpC=iu_JDe!$AB_=k6;ST=@kf6R(^8BgBy@oZv>Lo>9lr0f0_=*VDqB1Yi|Q~WeZN3 +zseA1%u^xEF&E{&c)y?v_eThJ# +ztstN({C&rFwk?h`_;kS7tnvlTD{lQ*HLDRK>z@N^Ba8W)W=x!lj2pLTN$Ho<1<$q^ +z>c&o?=-f9gdyS&iiQMrQ+~!U$y7fFwCvwGmZ{G|j%!^Oax$k_&@n&|qO!r%zmE?4m +zZA5tXk=ET;@IO%Yo0LQU0!#5P`ppWH?De#tum8*pU72wJB-UutF(MCsN5F$e+xfC6 +zYO;A=vwR+=G(nYCr0YEhHE-V;;afRXF=%a6eniXqiY493I6Sv34`1m*J?GoKiRDFY +z^SutBFvK_gi`QXNQ(f%PWV)Tl`%8pdltVJnn`Q~w5nE==FuN?DB#T;mi|_7 +z2m?z~OSO2_;K6Pa|1-)}@)T{ydW_1)*A&(7DlFXxPXHVzXa(moUVz_6w1TGS11~bG +z)mgkyrP|MFGJ-qJ1eE#;t$(RK@^s6Eu(TFXxad6$Q6b86ThQ%|we9&WBhNnX9|id#2UotNaSTp1%ER*wZM!Ai2}v^M-5F +zN67hs=-hBSi+E!I0mjrT1i#gG(Ls^q?ObFnG?MYXcL#CBb794!<8K}Z=~B1EmdXge +zUq%mI1Xl9arW}6!gLnym$A|p`e9jJ|XA9RWQYNhNRHhN|sZty8(N=6B?uGeg7Lg0k +z`N&gb3f9u4n|V$`g9S6916v*brwA0=2nZw)b!+?SoJN2G--ucPk8^=Qg7N>G#)$B- +z=GmK1mB^dnSV%^=AW`dq5*i60pDrXajKjih>iv7_bmlQz7Ftj&x3>yIidoHN)S4u-q +zEbpqg`8nl?o8P}v0OM)V^>(oiD7sy&V=RAjGOcD%6@I4}3q*w0Wh-2&C|EE!BUNWt +zShi6A@*^=ykzq%I{laVEoLjVlG@sQX2kZ$CdE=^oimE11Dy@6gKYEvQ`RBb+G(uDul=9ydNu{=}dixc3}y2p@j+? +z_qJPvk{!c}ylI;8HnC;HUQT2-;LO}5F0zK;3?58N~ +zE;s(_Ts7!4_duPuRdyT(Ah&<(g(s&KerM5$AAXNZBTpauRkrKo-UE^et*?a{`{)rt +zx!sgZDzqyUKUHuu1gM>F`7^We=!KpO5^p_HOyk +zYrEIM+pDrT>sZ9fiYI*ruBF%^CNga!3@1Z^z>)@N&`IV_r4ZnMKqY3n+Bbhur8P#_ +z5J%esZ$t+gAT>q74HZLh6b9L8+ZuSi3`J<}s?p;zjRnD=Y%W2WZA^J@w{+AT4%}k( +z2O;0N0!h{xpla>;u+)$ZwLn)t^${RZ5G}mfcu9UWj0!;ZigZI#AdV|->GRc*2juRA +zWN%wNQQy}31 +zx9vNf?_XlhA}RXH?EPi>X}dN@?pG&Piy34nnJ!&qU0uWS^r3OAVBqSygTIsQioVtS +z8tt%x0mRhd{?%PVYbErGaibulZH8dDT}9b5aWNu((G$DTz0;XYf$^QIDkB0{^KUY` +zd>_wfVvM;Dvc>ChfG1i?rV)FxwIAyNZxCe}DER=6D2^Js>4Hp9th(0D0mCt5&Z8Hl +zfP^rf#@^U!!l8>k2ixp2lMjLeD1tMdgw8he=?y?wl4+qv!+_O|AksImd3je03~Z1nJ8@_+DK+LATY*TuGw@1NiaXKvFj;N73T7uvWdys +z@5)ZP{5x2HJeQSIN$CI9JJ+}#ehfNZqnMyQiy%p%H2tH68E^YIdaZ$zrozUdZ#lRbTDvtT<^dFFg2|Kd1Nl&vv(v4@aedzbx1{0u +z3^9SOU_i6jyu)GOxHW_Z#rds_`faXMUGH +zG7Eg=zx9%IQ@KmmCpmLZy!EvzvO17vo5I8J1a +z3z`QwtU=}%bWs9vm|6e25=&iaL>0NN}KS=2yy +z(6^ijB56Kb9ZfSJ(-MsdZZDQX!9?oD>{D}27Jc5&J&eB+*sLOnI2;^^*MkdeC@405 +z^o17~*TEL(&>xfiq8jTOR&=#zxgqDiW|{iU%lR60n|nl)Sp#_~s^swbM6pYbL!MJU +z5!;`dSY7!2B>GRe-mb~LHRkB=7yJVa0r3Qdz_$)2E$$6@iL^R@dg4VQBOPWh8X0>; +zCG4`uX$kBwhQ|`Qtq?vOA1f-k?CR621DJ?sRdbkZ)=iOrzkflOcQs^L#rY046cE#8 +z7Y0B~9{vNL1@R&nr43V;Jg^ra=B*cknqnui3o?c-ZpgOZgEBbbja-{YnwfOOjJV4V +zrJK{O2YZS3JNsgZM9LWYV(eT5`<(CcvGqr%b*kSWTK`RRi9jgQ`3D?sP#b`~l}wYF +zObaDr)hQ-3jGfo*s!!hRkZ=6Q=tEn)I?$;-xiV-p0O3U*?Bgr}+1Sg=J-45D +zAKi>|KZ{-G8IEtNR;G1@8Z&o-o}+RD+{ETQ&b*jwp;8%3mY-UJaNPGgVf!M^C(Aot +zHFlG|0Wva1g(7#W=Q78(h=d7R*38Tz)Y6H$CB~=n!}`(T1h$}IN#Oefvh61v7FTtHC8}yV0Xb^?2crI?$^<4_AJ|dgtTj%adB1ju07Bh2&_~+?b#p-0 +zI@Gv+LIFPglFq@Bd;7LrLJ|!@nq!Ostd!nH+b%Lt&YA<%Jse&3I(W;4 +zgkhILGXamXLpUQFld%lOvmK#w>7HF|=onoeF!=99b!nHG$vt*$S5DBd#{u-46m01nwqHF=(@xVA;AC8F4ZB5Gu< +zow}ppvX0~vacHi7v|t5C*a?SJuiYPhI?a2L?Z2Q5^@}E+8gZNfmDo7|&%INj3cpoF +zC^ts=nao54oxS^_%)%VHCW}M^h&C8&AM&`-*Uw&#(eg_5pR?6)JJrNtZA8}L;$PRw +zaUp{q^@Xty@B90gyws242#(=9RYGpms^UM;JWD>OPPyz)LkKY +zvI@jTTYe2M!&psQ02@9D?FF2QuK(toQ7n%C|M}DwlDrTr9NGA3%wJ$LKZ%p+Kf>Li^};s<89Bp6t6Qv4{3fnG7YMq%eq>1_RiOEc>n3!f%wXSZ?1U> +z)8rWB_Zf^wAs}#XKX{(5_FKV*Q2*d@=lQaahYQVosJ8TQ+GEu=d7&G(g@4~Mu5sD+ +zUQJ&8EJ`ob0q_9JZi_z&m>C@{$~&Z;EO?k=74Dh3h{$KD#IiohQkVoK^2J~qHC)Fy9gKt{qA?*D3GF$gfUG@bP7-j2P&oj +zMCkCNUs=sEDD5aTP*lQr1_u9CyDO5Yd_bIxHA`7e@>7dtqv*f6FjKK0Fg;Oz +zE1zXtsaV-m5TQdvNR0v#??zm6a_943EoZswE`OAiZyrpTlh#YeaXj +zp+gfXvx(t?nh(I1+D;-4MB@2o&7~IlYG)lb39rEZDrFN_Dp2L2Ef2)QCN5Lk>m0R% +zpK|*H^+aplDg67Yx{NiTw*F?c#2!Qayh6eYeS5DKhgrD?{=C5Zp>H&itht-$_O%B0 +z+`jcCrB$iC<6OkVbvqthzFe7_-)wJV!@MJvz})#aU5#ngX>0d4`Ca6`OKC-{F7khE +zWuOdD>5%UAGX(Smf&@H9I7=cPs0iflbsp<$Jg79O!EOR>$X{IifLx$&=jPhMofUDr +z&^#^@zI~!Qg&j~WIglAc)B`F|rzUPZ&YMlHf08{F8)&u~2rfPzo +z+Ci?a0PuRM=(!OKra-Z_Wy_*Lf_CkB^wbbDrp0IpNWhRiEWb)N<#7EUTL2tA@K<1r +z{Q`xLY+S=5>KMc&e!%$J#JI@9->HzSf{3n6 +z97L3--?NJxpj1d;iQj(i?W=6)ch3SFJ1+Fm-fwQl%z-3oV-nge(1$zNfEn);WgHiB +zlsVF1G6!jHZ}Dur>K3?-`Nt97l3dh1oW1nmg~7Xt=Z>sbR@$!mtNbnpe^?2&ooTX{gkx%?o3DG1wi +zGkySM89)IBOF)hChG1YNR>)50HGvCR;sgh{qDbp}&c<}T0Platc-uENj=%Bf8qGzR +z_HTt?=9G6p_qNpeTL$EsoaUj2xx>vmsdTyiUDfkrfMG$IUI^cRK%)BO8;-fm!sm7L +zXl!R8yqY0&crzYr=5a|efe=-1h;fy{R$a-VxhW@y&skSRCL8Z8);Oi61~lQY1X?N-N?a1_bVkR8B!2y(SV1(Jgr?lF^(EyRL+>XW@I~n~(pz3XX +zop!zQB4x?BaOdSwV~8gM?L+Y>V?`s*x?N|u=ix5J4Dq}?yH`47L`_Dj-0?g4x$q`H +z+0+K%A7Eg~-{i8R(1KOWD=r(rI6)AN$GNL5($p#pPR|J&qMllLzk=SR3g#d=O~fc7 +zlKFTxD=GNR8w~MPSWw8Ep51207AI(7VHriU1cMEwAu1{iN2kxAFYY)%Om45}zrJO8 +zBp~r<^dw?_`+FTg5Ew`(MvSiaivUOLe2FNH^|E!0b2LyB;Yo=foe|HpNRW1GUVk?# +zI7}rQ@$njXyAl_e&f4YqS>8R6*CD{$km+P+^lxiJFPd_=9n_>F%7lZ31-k#C>;lL; +zB&RbgEUQVB2)5J<3jik#Ec>R)&+|YJB)L=K2-`*oFTv@^tE_u(;@0fcyB1HrXMsnTp=_u67nv0?I2lx5P@J +z2uuy&0{&eRkh8o4NT#HqVN!COb1%$~5`y7P2?W1kefI68v>V=}qPmy|;u$Lb2QT0H +z;%z>7&)lc&o%--Q)!^a%y;rlJ?U_Atp?kK{VD?DnN92xZ;mXBIsdcmZp4pxIMW4CL +z58mjk(6ah^ikeoD@p%1ll}8Ueun+iR0w`vvc81)Yld>m7t~kk +zy!Mj+i2ohqxhs7^z@i*~^>At!CSVG}ryTP(9 +zmoIwB37J2t(-ICFCrkK@zIV|rS6{pvdP~2O(_2~V?lD}?jR{)xBEQjoGFlt5S;3Si +zND$r=5(o<1A6f<|17*DN|jUGGJP_^2)~tjlxekMyzJX@vHbD +zC3qnz+I0UCGOVMshsS&MYx6K>Opv12r1vf_azArE&~Ao=R$D(X!^!GU7H;Qd9cK$f +zEoP{|_xG>Mzk#2(5))=I+7m;NRa8jpn>->JDe_dpJMQ0| +z-Kc+0#_`=2JIrM{X`%UXjB>^0v#GB0t`QyboC%cI;HQ@6dm2ldfITs@oFzndN*$bx +z5jz}7{W`St5)>A2*(6XZ!FuF|pg>GRO8T0{G>Y%tVp?l+0yIATykZb(q#dq!_C9Bw +zZm)~Kv3|)9Y;AF7Gv9Y?WBAOH|Jaq3LrR;DAS&oJoCQN)mk|siXE@0={tGJanp2I+_EqGi +zWNN-mN4uH6tT*VcauKAA +z|26hvSiS$GGWV4-cV<4`xaOA*7JG#8Q${Bbt%N-b##6-Scxt}aNMq~urI)})nO}w0 +zZptqD8!IXeB`X=OMwhSVNUlY{N0e1IET&gom7Am7}p#Z*ysFiQj(69 +z>!y3e@7XU*RSGUW3*fv58%8?Lw&VN%OfsH1Y24od`k>0QN*)(dF}Pe8B1oq`=;9&` +z^S(FmTI0%TNnR=cwh~7D$IJxfA;6Osp^5Y|ZY4nX(t!}b5Ew0f;GQuhs7>6zkfKj9& +zR(~Zu`C4OT>>)U9q1T)yoNSnz%N9h#74B7J!dUmJ;uk?{Qj|QgX03Z0 +z5!T!S5!ecH{nDn0kgk&6TW#lBWoNiRDX%$|$M2|VZ-(D78q&Oj5d_bGE1JX(`@$}-UIC|0pETwu(q!X`gyp_}vX47R)MshjMj%)N^A@L5@GDFLHzlEY@- +zt^S!I<+c0bk2^>Fa(BiJLgy9KCOQ-aIhVx?%(4eJARF6XbyhV(0lbq&DSroP)_Oa$+!*Jcq8bmtg +za7c9U`JnF9fU6lB0f%XI*vcBrwrS6ZytKCv;2W1P85}Aju}eA@k$!{Zs+CwIBAZo-2-7TX(%abk^^uPO&*2%5rIjSehZ$IjbDg +znlF**OE*a52rr!|W|y*cTyze|JuWZnt2?z^p_(695_juKr|4#y=E)RX($B3gG;eMI +zyGujPRrydin2RD$h20V1sMmK-xX4lN*iimmzm5~M(>zL$3Upn+QHJKzMKMPMshL=+ +zT+$Cidh4*k)b7{39`%_QV5Pp<_w2hW?s4>XGe|(6DEG(eV@A^wy~p(1o143yQF29A +z8Rb{6?)hPJTF33a@XR3^vG&6W9cI;+!G9EVekd765(_^*T)pxuegE~_KX6Cp%nHhX +zXTgXv*IM)r8XZddnH6~9bQi)@@mDg_a>Wngb=#@pxJRj~2a4DBNtgMU7^4#WEIEVv +zP|&b=E};G-)9|j{w8F&3s>O8Uqu;+w^#;-YTCyC!h>tHi2yF>wdZeZcHw@rMlVdrz +z^TP5o5lL;I($>nY^`7>~5rvi|zJ5f>3F +zgUVGO(f-1Q2$-uQFac`yXCD6)c;lz(nC3;P;R;vneEpV6vjU@-Y;rezT4<*HWrhpw +z{jK2nSo>*L#DJ=zXP#0{z^Pn#@okBFi`QVvnE8I0^0v#!|KlMM(31bkMELILn{>_r +z57^AF(U`#E0QV3q)i$HVR5AG+>Flpac*!kIxUFd1gCGq2ZzVSaS9J3)8NxSet)x~JmRpXP#YOq(@n560zAb`;%7k<)@^K~y +zg@4x^J-8vKRQEU!RQEDII*_;RV)lV^ +zNis55v1#8z3-EWoqFFhX5Fzj3e~bsXt#;{to`k*Lf#yM-L+wma&2Mkuj6$0mPX<(T!Pi;06gF#> +zXpvd^_ol7(IFj$3IidZ-YOSTnLbJ{`FKzAAfSLa)1yL*moqw8as_6}XQT}FVuWoF!xu|0 +zIm3yqlFt5?^@1!+$d%55+Q5HI;0Hu&p4icBZ-`DG$@O`CX;0WuSNc6>C7dEr=7L~znPoMfuGc@Q00X#D(B%DpoW$gNIqhR&Xn?vs$X +z7tkb{_M*IK&X^@3bg=p5sh5|_^6$QDA<2D^9`TTGuW=G2&kBU_LftY?)wf?ASysw% +z^Ge%~9eKB+`tY%BvqD +z2hqMYGTWC7SM%lyR1|6A-EO6|r0}QKG+VK-)>*I`+8V5~-=YD$d +zxvLZyU3RQMF|Z{&`nnKG{L55DBxvvxSS4f}KFid5x*r?xRf +zKs%Qkn5#?7eH_shdw!w9@y~%<%g-5xzUOZjeQiPhi%ja(wI(+`B=Ayo8%wykc)3--s(n+Pj-OPA=GiDB>5c4?7 +zZ~|}lSVj^5=s>jaYcZR*35!V|e_TuCd|j9hF)|k_s5S3O+|{eiR_!gjoXk7p~9OKve5!;?)JjS+Bv0!qmeAF-;&3GCHXo;my)&asD%*m8TD +zB}W}gi)t%7E!*s`wlGs_i*;A;lTRVXBh!16jd`TGp`IM$#C)yOSvr`2Q(39L>Q7qt +zoEc)Y$ebD`UgUpI7VQ;H;5V$k0P%juJ^p0u-NL8PunMZjzrdX9lO-Tx4jB6t?sRBF^QtCJ=2NV +ziS`k%b52MqukU`JOXV&1#XIb;-DZsaS_Fy$WGfm`-&`w*ga;~eq* +zJ79$xJXei25-1_*MRWCDag1romrTg8PP+2Xj8O3Et!wgMTv>YQWoyN0TAq^sY3}e9?hx3Wj*Uvumdc_Zp+bM8zlI11 +z;mh2h(I|?`q5bKZ@|inYKL(`*r_l|m+UO@BLq(yCC`B1U%8UKs86{T<6PHiv`WVPB +z2{!9&=R96_R~3d`^+uxtPAxIP@<9&St|dOeySwFTUvWJqrlmM47Q8Q$(F-bXI5Km2 +zIkWkBK@Ba|8<9eD-|S>7O-?V3%8IFunr^1c{ImR7#ZT;20{j*f?zKs!+@2wvRGnn{ +zLq9DgI19~Z>(<(aYF*J3zP+{bu%xN5|@b%USMf2bwSCew8|J8tuv +zh4ZSde8iB>^qYwJ>{^f=+QRKX-(Qpe4*OMUs2~>SnQa{4#9g3TeKJ~~)c;xjIK +z`c)TeedP6}lknrO7G#&apjTTm)xys1M$?lOOnLs%CTBp>`M-m8&3eSbVsG!sr0tV5 +zc(lWAF-Lnab}vC9#psb_jDcl;)Hc=8ZV3k4<-gJO-ce0-;kzh^f=Y>E0R$2oA0SOc +zT7*PJ1wlbTr4x!$q=eof6anc)dKKwPm0m;dMJb^d=@5D#KrCJ$$Ej$rgc}SNVmf*Tn)=viI#R|xKZb=tuygV1j=jstyp%{! +z<>xBb(`RWNJ;PqVSJcK&$zTU4nrcpoik$et3M=Az@#1gmh#}a*Gk4`G0&@Go7!{$ +zspZO-doh3Wx3d}ScS*p-LrK5 +zwDSWCU1qUxRkn^T*U+nm+`i`rdFu# +zcyOCncpr3gagxp%P5$#GYStBg#4@nyBfaQREiaOexk9SbuM2(A +zde08L(sixr72@Y$i94HK_=v|u>R~#TyojJmyD;%dtLS#h2;(Lb10U?G!ryirYl^sN +z)&V@54DoxY#~)OIEdJWb_l63{qOt5`*#dAsZ3mbpc_^qj2%r}#uP8BOTn^1^7Nk^!!FJitG|6$kH|6tY+m9*`;U+d8R +zu6Vs@DvvR<7%UkRsEM8oFbIoRI*$B35Gek%xt8DDFDn(gd8N*?@AKqWs)($s>tx+u +zH66vTXxX$6Yks5U)_cz;Z8luAkyCN)a_ip@MRI>)c3##wPqJxSSFq8&xuRdtj9yt( +zy4N|<1-*1MopFGbgeAkML31h^sCm@piun(e{qUmCu34b6{DH>QC9Xx{{z)nShqf3| +zFp)hbN`w$m5&r;s`2^bf_!2M%-wca`^F#K=JHP!Kotf_CTl+!gmrnV~$P$hDR8FVy +zh{XEoLZvm2uJ*-ICu$W2-T!#;7@}8Bq~j=b>=c&|dei=Nxdb@X5gvWdr6pkd?d10j +zeM%GYa|jxm%VBpvK48uXk8T8NZr0KRpYR0Ap8?&NFRIhQ5G*_nM1mU0SO&7;;vX0) +z+M-*;!#J7x9v~l*^gBX@W6N7zo+xS4>kN`$SV*<)L>&cmGt%tUH}!3}-j^L-JX)v?JNeGd@$Dxw=EVeC +zaj9tfq&IPMDZCN4*-0>JG?NdnplGZfFA5QMYIaxg?M_aHe=D+`-l(>?+55J+k8SXL +zq<3$rzy=qtM4ITa|O=GUnW)qw=b#!Ll7=k+7gTE|xr=n!zn#snf +z(sVQVOAZyy#&Z9^N4I^v^DBZ@CKwxs2(*yDKbvlX?oR(wL7ekYj#>1@mG$KhUbRgu +z(P$x4|El97eoD9qci^r|G$^;>qzF};Q6M7JsD9GBbH#WoX6YufkL{$B;D@ApdHEHS +z^oN6Mmlg?08Nw@^Ex_xWWg92ZtM0exYpDSf7Zf!G_iB +zJ>!!1QRxz+FAMM1FZg%?(cRBkZaLV=6z&VsLC +z)b!P=vy%fu#)&|VJHeJOr|7?Rr3+|S0d)D(XseWB7|(l7Q67)0Rr}9TD|s*N)H_@@ +z`0uFv1b3)*9N#*52!xIH50}-sYxs?24r6XGPX7qBJ)IckThwhtjzemL72%`-(3nuxpvM79X>9s%&{VBdL{aLbFz(~YBA%A;V83ER3+?4uySAX@p(Kf(Z9z%O?k!Lb!ibHr!V^bZ2NrCw*dc$s +zk+-Ku>m0{@3uX(urUlz}{_t+4yCV!z^)WgWN2UA`f$Qt#+mwZ-)5{mhN> +zDo=FfQ|%marYX6v(B78?HL#+Qvi@THp#4Cd<$p+-^;~K1zjFEGv9h3z%!HyJbT9N3 +z=Z!-;hr1o|4;r!$E8gF|ub9#IF_!IuN1`bhX9F8Fro_zO3Fyx5Lq +zzbAW;=R=PaNWIh*e}^?8s+8w0iu@L8g4mC*oLDW;S!^nG=oiNh(alkeM#aDgDYabo +z+EFRWXiLY9v_~nkK#!&M#z7K1^EQAV0q8J1t4+;}PA+@>6SQv}C{Bx&E@rQcW$$~} +z3)w29WWqny&--$(1HG +zB-huf1W^f29*V>zxfLO7(-Uw{-%IPR?ADW4uVGxq21QS7KI*Nc5179YxM%+%h3b{T +zE~&No?2IYQF43wGmHySEAb=YsQ`KT$Fe!@DIt*fH(Ooq7@V}kdaEkzoKvvr(uC{Uk +zV0<&*0u7u)PUih+f%hyoBWP|uiAj1UN^YX<%Xk@ZEEfKtLr#U;)8r+lh4B5E;6F0P +z0w`28SmrbF*RQ=|km!^B2xE~tzuVF})K4j|1rJf_KokLwMh3QF{TF@n4l=fsCTlM<$;s`oqa;1oSo#7xGp`Zw; +zh{YZQj1yvek9Y7F55;kOR-cj)LWRoiHXxZA)67(YwIVjI4#Q^P6|El|g;&s8o}|{q +z72HTlaCZ(sZmJy3=~E@=@Jj0&b3h>_GBl?GpE91iY?Gf#NBML8gid)M7Bm$YAD;cX +zt}1H=eq5y_Q~sh|i7Vu(=ha~Z@YRqh_#$7dy6BcMz=Rg<_B%S^cTO>1Z17yRV+*58U--u3k}D09f+H +z?&lP~ihvur8+YKiH!bn7U<;=azvkL`23;K7Zo|wJx6FiU`|39&)%7xHxTWSbf!_#} +zdbUJ1Gqd6#Dk6F8T*#6fMy)}s{zjBP7e~`e{hoqv%~@fu;<63XlWzOqrayE;`7UpG +zsudlgmyVG~@Zf|sd*r;7@#A~2BWPl=(U#Vphvlk%48FkSJ?|;QvLm&}Oza!+Mv*(u +zeZU4B#5y9CbSlSna;+?@xBO0&MkSORg8Hr0L7GV-03YLUsD!tmn@fFAI1&zgM)olS +z?wdw^a!UsieXuiZKPa>1QUNJnwd2>^iZQ)Lb)bH=F#OpiS-%`!PSrrcJxQi`+v}u@ +zK83ba{=WA&H;=~yJuO#WOM(@Ty#Bym*wc5`lhd1{H69*n14*W0d)4G6D@L8TX{xs& +zfa=q9#$}F8PDiA{!^+XBX3*_$h6>@Iqx0qnk{bitOwX$T6IGr2KITq#@$1E`yP)hx +z65zF7k0syDsf4;GQ;Gk^Jqp&w_~yQ}tq_eD`vI@h$3N=1jdELpMRDme;`!2AnLXnW +z%Mt#f6>E4p;Cp_ +z*4qNGSu88nW6wtepYq|MMmleg3|y-dHqXqoUj6p3Z1G`wgyd@TN)YZv%_xP>&cI9b +z6E@PzG(>mZO(O|ev1*=;)iZA_E2T0to+LV)h~uwQ=;$bibF&+$wTagC9!Yeu#c~oB +zsfa)k)ZCF34gR&_yCJm6nA|ORUEQ*DJh=d>U+pv=f5y5p{qgik1N@bI#EM9E>d#W2 +zC!S;w)0QK4F|$Z=o=HH9Gi%}2N2{qyp$5Ds^{(eqe${e1%QS4^ISrA8j`XVuDdKhS +z@8Uz#Pi6pVStt*XV7*n7w%VBsuDE-F3$7>c9|5$KZf^)1jmw-|P~D4pkE80hPw6;? +zERN8wImfzZokQ!3oh^wm+b0)msBkW?3p4`0cZ!2#Kq+jon#nNv|E>+oJ9=W-|Mzo{ +zq%OLsqh|l>MQka2{5pGE3x9s@rc%-Kd)v6JVe`=Ifhm1T-L-uAxu0SC`Qf%Pp_y4} +z(Qb-si(gI-?$A&kPGUlOw})ccF1dWUS-SVZzmGEwO1Da7g8ClN-l3=aq9?ugu^wU8 +zY(N>GPUWhUJ0HYsk;+;<0ZQVt^&^$l9W`Rm4apO;wBCmgmt^?VB{ka|gCB3ufBkaD +z_*Us(u8gIVr~HQRs)sy8RhI$*KIPE|;0Yk(7y<-ELe3t=l87rVtiv~^ByvO=j|mQc +zpR=jB!cd2)C%E6oW4|#ayzS^l;_7;LC)iO1-1=TKJ+)N8kwml;R0=#9cfUL1)LMG5 +zG=rKhbi^=P-Ni7bxvWb{}j34zZ>rR^ALQro#JEhP~FOvqdL< +zj)hc@P*FD9rNq8YE*ETV_te6CZ^gC6l0nzQ#pcC3YM$QR=Yp7RV|vaZm`3>rFxeiz +z#TY!_-U~D$+`q2&Ph0u7kQgkV4G4?&0uVR%VT`B854vzb=xCSMS6nhxo-Zq;LdaWH +z!<@y?d1U_)-bdO?EloX{{T~?#p!wJe2;c_)2+{wye?>Tevsl)yXiFE_-Bgl1T%!s873IJr>A) +z$783J=scUOKaL~4-C_zp{4TQgiJY2GSxr^JKM87_pxf1^4zIGUth@rFrm^#B40Np2 +zjHf+nR$7$tGVGa@khgQ%GPl{K!+3MwtvD>Sq+1O{NI$qTcJ+rNlX>z~a2AAT44hpf +z#F59D`5x~6@%em?@M>Bg$7&cWem%`m_<^xWt1&n+eZsCdt#c&<%Q-$h_<`yY{*DuP +zLM6npf_)U{;)=!y&^vC(zp_?nFBhxq$Q2FdfWHS;7%drf5gN0|g&WQ5)+O&d71seJ +zMVvB@@^V*%k@xq3EaCNO=a#lB4~Zk>SUFEIm2f&hhLZ#RR-r#yV`g-08jk;5AILOu +zMrHn`!$4}q6+k8CKm!13$ScHthEQ(aoYod|dFL!9W8rfu%ob+_lCE4 +zhlPZ^Vuzr{J&0(Q(aM)YL-f?z!#69jFzMV&*H2XG94g$j^E-AM_9S5`Fv4fD!@M<7 +z**m|kj6-YF9fFyXhozA*=_;cG=Tqgj{O#%Cn7q@OD7;^FwChz1jAS^p!V#TtIDI+Z+LF>Y@FoD2QK&9zGAXYj*CsDS2X3 +z?B@f@tDZ{0EOg76Umc)LWDsN*kJ#=pfOYvseMHEXe0-tFo3MG~ +zt87>7BX7u?e)tsc=#ZrRs?H$EdY39+rh-EL3Sgeni_2K>VHBF<8ss*8a +z?BB~_o9Y`<3)7cnyE+_Ss(T~^>qu3WK2Ujue7*YAufe}K@&SGasUm8fcK2QsE0IfP +zwD!t*HVyVY26|507nzX65OMFz><<8BM#sj&q&WBIMporZ8CL@Fqkd1{PG4f<;#cLL0-@QH2u&ZSg4K9d3f`_4vhesmhU +zB5=$;+zIsk*~W2y2P(+WcK|)E6W#C%niAI3nEXsaK+?6-aXbK>->1_*cY*hk>%HlSXsZlr>2>borukXji}ImexNMtZA%X +z(KlU+5ZjfWuq<|>siL2RTH-AC$Mi`@>l3D%N2~7i8=ZNF8He|ZPL8q?3V#7@>v%=8 +z7PK4r$(yel-UCly+e-j?tN9sCcAk19(#9wlRBR*l3;FG&u)A}wcdMm8!I`$+qIE9I +zk6|lSJe!Sy4jjqmcak}BrlqQSB8-DgkK5MChV*_*t6YAqBv+( +z>a&mJGU;(8=(h7oT`fe=7?aSN1hHM9*S3>37vc0;sfr_BeJLMN#A0 +zVNC`2qyytXV;|!$(i;==jGk7%J2dT{7`1*ot6zk+;{zw9SCqioXvJWP{j^*RBvE#G +z;r&+nzEWM(Zlv7aZ&HE(;VqVgJ=ISv^HTE>%~Ezz5DA0uWrANIS8&E7r#boIT5f#1 +zXXhT#1L$%KLmCtQUeOsALLUf>QmU+Hk{aV?KOw&R489&4q#gVW-a6;+EJSgHI&CJ{ +z|3WGrmpUm}mZ%Oz{2BxbDdKS`mvC!ns$r!JLLG%DNQ+BJ%Hc%DAl=;=E@oZ>LVy87HCirvg(jS?kv;Sl +z+X>($(kz0zbe(Pn%IHfBeaC#_3^rW5od#SrT_Dc;op$7AIhOV$IEtx>G_ON?6yz1c +zG9*w&;49P|Zh4c{JpK3cpu0o-uYijtuxDrF@K$-Fp0C_QD&-Ox`F;MoKOgePHr7qL +zvnY3fl#qOQJpCB4-wa9cSi3gv4zy_6_3x)Y(a$HRD}>B&xuPZHe~Ob_jFoHXFPb#Q +zrFw}=OL!Hago-yz8)=$C&ajD|$ye7cv$#D!PP6ch^Tyz`IJK)-+E_>quXFO9Jif4m +zs4x=pGBUbl2)1mkQM!=g{=MAQHeJxi>bow(y3U^`2FL9g3I^$8w=1rzFJC?*6S#hp +zJLG`o-Ms-zC9pVe2~I8PNSo@KCJJ()rD2p0NzxF~nmjN2S~th0(N@`P69unx`uoy+Y=Y=UD8P3(^Hx +z4e>|hPj)qXrI6hxfrET=H8}Z`+>NZ+S?F%OIqs>O!D?N-WLsG}U-9wsQSMh4wNMci +z3ufY|Pe}1p4EPvZ_cQJ1C>;C3XeICZA5$rmv6~rIBztG}SS759Yq!j{{`%30x`x+- +z?aJiv+)fyUVdOoJg^p9hC{y#L0k$G{#Su~Lv0s=t!%B@)w>XlTcMZS~mVHm)iXFP1 +zTg>Ys>D2a^T_df(ekzXhhYxXeZYW9~18Jo&y`rBJ%}TZh-&AGbu~6&Qza?sr`F691 +z7IY)i<#AqJ!6CpdOpQ%BgC{KizFB5Q4f9$^Ol?*tN0d!KzikdMNQ>-Wu5z)tO^?k{ +zkOk-T+&L>%wO;G7vJ55I=Waai6a+>-P&J9s&EL8ZHPBqLh_bXjW;~K&m0@Wz4oo8k +zcW0hDw7RuDWDPtgn;8PQSc_r7iM;!#{Ll9k!ZmNRP~u&`&8dHt=<`2-4T-sYpFejY +zgH#Yk>A7rwwAJad|0b>Eh(^=cm5$bi<5}dmW!+;*W+}BIH)5 +zN;&u+$zS+FkJr-Zl=zgsjOfZ6Y#!^Gwr%C33z=yZaz=EZ>=h&3gTOQ>p)b0pJL%o+IGCqQ +zxq0Zqdyl0LTfox$JimsWjhvAi4lB#D`!v(`<(wBGO(pA)Z7M`>xoX4Ib^$?6M;&O^ +zE^p!c*LWINP=DIvvj#Waw@M;t=L>OoVQ(EgDnHY>I5PNAAU*pe$}h*NlHeq~ts*%? +zU|hc=Qs0`!HM!a*x!W^&zO#K&|85N~pmV4polMQaWa0~|o5vH4si}s1ntyR9Gi?Ik +z2sB4_kHhhfa;NSyvtjmm>>L?1OyS*9D&EvJV-chyHU?JhxJbwzwk>Xl>zDY1sM$xU +zyT1qSM)!DarZ1_a!-OY|xQ=x8fL9IXVv<5^|3FT0HL%&@eUK*MVDER1XfUw(>*)}& +z{qIAR?|9`-9Bips7PLcG_-s%zDo+}FllxKN`YWSTi9QN&Kb_Pi^{v$^K0XNKbhvh; +zdnr1D-Lj3twYcaPgXSNB=AWWo!+=fPKSs@-tV`NRV~oedY-^`)HLHJ&jk`51R%I%{?C9%W2?wc`m5m +zf`7>Uc0f6^-;nLgjmCi3R_U#buk_;mZr7Q(Ko0fU`@OIs6}tnbGPaqV(^G +zW?8YvgsT88o5gh*HjJ5rM@_GT-StBc$C9p&eNuz83oJuiJMdx{g!>yV?0h4@JpPa4 +z?i10N$bl^u=Pw$iOP32|$#%{`5=~<*yi&o~x!G;XvLjL@Sz-e1J!z0O!0UZjHCcRi +zy!hN*(x;{ZAI8?+&S5JJu<{Y=2)peHCCJ}CXoB%IcwYu_ZW^1gBRzKD3hA!LKVmj} +z=jfRatk9n$S<)0BlY2Z=wZ|QWPSifJw|3U=jT!@%bhjv-csZ0u{W4?ctjW&j(g@mJ +z&}2ctZgvtrgnf`aJ|M=qrsV$9|3}0^5**9v=J9?Cj>(q=JX_Nm5Ma93Op-&FBM!|$ +z!I_YwQF)+73@4)HksK +zT;qY8Q;`vld^yD%-atQ4+A4bc(PN#x5|Nt;uUSDnq0Et{d7&qlnNR~J0ALdbd6_RpOL6N%Wh5Ibl<0h2q-Q(RhA07)Xz7GtcCR&c`fUx)rF*m$A)z)PW(+GPFsMhYn#U%Y@X&OT9* +z>la5oqQn8+R(N4LM~Q}pLXp81w*Z663S0@L*m#4I1Uw9Ty*Yh?@vh5d8aQ$6M)e4| +z(m8)ZXRsm4t?y0M9?&U5>=e_57W}&95lmiP6JVuZOsH#vC_-cX# +z%ds#GHM;9?y@d{h$39c9{XTTg6-(g~N4 +zB0FwvKw5!JK^9W~9#Mg(siY$f8}_6V04Bd}(vL+A@WcR~*Y!t#X>Hjy! +z)LXpz0I~>Q|2)c5rO7@;7;Myqr&mVMB`6R22g;!J1xE7bvXJvcCTovRO)go +zo5mMjnVwu(0eS{kKC#t@5NzH{n-==SlP65ucE285{evT>T2vAXjlfO;dx9j>08gm^ +z;vC3=TujIHZ13zosm8A=C$-KgOxtP@;b}_I*v3pP{F$X>uBXP! +zeD$IXrwex57I9Ji{rwL}A{2c$^N0qaAunOuaS=LA95FnHJKkDxs`0RRXklSUgJmF= +z63ami`IL=4 +zrpMUlrMj4dnD=6uj?X`q+}|s?{mM8w@zI4)JN^cTsoXx55B=!1Z-`&bOrB1?6*v8( +z-1N>3Ti0zfPCT0bqRMDCVSli6nQWvmm%@O5-QCDPA-NnqTX}d|RS3IT +zRxkEK*V!i9`h}(`5FK0?xJA=$YKzoT#jx2E2(M#Qa-rLKJ=@)pRu +zXZ$?|QPe8J0aYIU?xwJvgcK-V&-Nps#g%#=e$p9#b44yb^;1OkH<-H=x#ci$=njNB +zrc^&rNtqDHTHpbS+yzT4by;aP1tFt@V4)PiB2r$lO<+w1VJDia+4ebr2YKESi?Ddl +z)l;HBxkWJoKxo9o;g{sf9%Lj28b)=vqLS}V_ZdK +zhBSc@qtiQbKCjd*fzB3;?o4I%{3fN?t}dHA7?dBOrIO}%m^!v6(?Ka<7P?O_#nMm9 +zgy_+#FZWS72{Pwp%lapw0SnuF7i6&%@CthaowUzrGJTlC^o%XY*M}#7BsNAO5+nc) +zsOrBZ-C2YrD6BHY3S4WI{X_aA(iGx+2mC**(@W%Le?4lPj7=s +z)!X-hZ&3Zx>E|aCGcQ)L`mJV7Ga~tkE~m1=3xz3Tcxea$10XPK6%w1Oi5T +zQQhL0FF}-|NQOgNlg&4c>=9%wodO2e`w0=iMRDl_a9>Mxw9<21e4&hwJrM?&qQmlI +zBN^9EtTh~TTv!e6`<~so&_ix*5hI6Zlu|NcuPqmMg@{3pE#9AEoAPuWe0Kr4zRErf +z_Y$X>gBU=pja~G>GHJ7A*o*^G*`R|x@Nk!Dim^<@l|xVIpS2$M94yXwAzgYO4a?&f +zlxVl~XbPR-k?b<=5jjVCM4Q?p9IA4GEY^R?T!U_K(Dg~^K!3s_{O(-LptKFSju0oA +zOE)-mq%&VfqfNIuzQVlTBnID-StJ=+yRz7)@z>p?Eq`KUEC>wl0K(p*YtFAvwqj9t5{wTa4xb0xu@l; +z7FpDz_x0Sp55m}gnTjcn$=%B-p2hL!aHE900jFK~ZSOkY>3k{9fNs~2kTIIri4w!p +zYhdkcj)1hs7`VrJo5N(yO=8g0ZN(4ds4w~HAvfpUfVKcueqiUPr#rtqW=adE>%A9mvMru2_gku!gj;Nj+LS`V?#9)Dkl8C;F^y@#ej-9^zpofw +z1b)Di{OYn{P-8p#>v=OKyRV=MTDf1!io3O_D6lap^(;#=F0rU1Fzxc$pniL{^_q(k +zf8`v*vvZ1&S4C}}!HU@qQ+z0F%FDQ-N|sV#N4b!32y{(}Wr@}Vwo79ldT6TqIy(78 +zJG!EDmMGovgXNhzjeYY$e*VLdURao_$U=?bBj%TQ(L$QZn+>>LlX1UZ` +z%;GE<8HT%DZ%F74 +z@B!~=t7nyiUUw~;qXMkR*0l!XH>>FKxOX#2qmJ3^SazcBQDWzRMXYoCrd&MLq6uHe +zW1j=%-P@rTRKED$xeW#q;Gw@##X3~{U(}^ciN6(68}Xbf;GR-4aE`!=q-W>iK8r9W +zUsO!_1`~S@_&*zeJMPiTH1d7vE#l1gyCb?Kb+svSxx`^;q|$6Jfv1EBtkvl=saG-z +znfsdp!@f%zbTtAyePwG}4Dqertc`*mX3r35dF_0w=R*aj{mNv9$;k6NG)>T@?w=OX +z6`i=d1hMOCo*WQB_x}f4=Mx}a1)Nd@fCG?-6CqfuIE4$rS~xV&j>E6XOZMgj+l3XzuF$M% +zVJ@ktZO!92l*x_y9=#BN_#S!D4drjXOfDTPj5Cgd?Tb<^wh622je)>=#5O4(Y@=$y +ze1Jq>^se)EhEb72X{%|eKPs;4_eMa=ceFi5rYs$BwAT1ckDf;Ys3q_($jK!+J%o%^ +zoKa(cNuPymglL&BaEWy%THYPN3F67td;S{=`Tg8lQZJyX4V|Bqu&j-5nPn7+Lp>ua{Zq-HCm0GL}znfk@z!I=mv1i&$pbO7*K+Ht~2 +zqX0ZM=+pj}3WfGR$ZR}NOX2p@%ZrUxx|vxFSm0V#fxLMLmlEVfG|jc?cFx`7?>B|( +zyqfJSL2|;HyU(pV=x9`~o|7|ewR#S%H0bg8_~6d@Ud;uh+s6D;4TZT)pj?~pb={S6 +z|919fz(L{KZ(_|XwI!bf<-*8F6g*e_XH)`2RSJ8kjybCT0+-~{N9Drykb92(KSVmp +zK#F!^BGul~4|DAbW8n5tB8vU_Ks_MRVT_Pm%8bA~h=F*8($TZ=xbm;dUw|7a%%pkk +z?*YlkEyV4umrgLB)JiICV6Rupj*s4s6HC856A<{~_4EdKqPn5W#A`m~j!il_TNify +zHIT{?9z-!cz4;b{B7nYg;A)HXM+ +z0wBDPs*Ao{Y#@k5xH9TT-5ab4u&ADUg>JPAeV2;^jCVo2r2-)U)0CGLMyZVhykpVx +z9R@4_dhoNm2gCuc&uKowet!nDqp^4$Y{>bbt3r(=)L80-c^;J3MOz>%5Mb4HbIk7K +zh`hx+91yZ4v>v#TK84*V71?&j2Yp?St0L$8)TDFzqNM_q1|ERco-5MuVeXazVt{uiUVFDz+lzXQky*S6#z*-nJ5sId~g8z8~^WdMC6s8P{wM%$#+%C2h +z)3mLHqwY4Gbi@z0rjr(nDzzH`!!-woNm2o4)!4pmky!+5^Fd;w*|#WNKqEVqBnj8& +zE)g-Q@k_R3p+x&rNUot^IB*^-lYJ;HR6^+u{dPywi3ubqW< +zd59+}s86KKiz>BiJ@Q761nAtEJyL}tZyD+38NQcQe}3J1jlDPp$jSVQRdIi>+haY5 +z%-?!-gdTs_)3X}yX3dwDzBe8GY>*;AQ}N4D4OqT3bc)3RbwcA*E&;NT{iwZ>CEi#Y +zU!&b;R;k}6-1pC;m=xNJHeJnD#8_APKev4x!2-?Y&7pneiAcJ@7+%ntu{12~U9FE^x12 +z^ZMyZ(hBUgGcb^UARMs)-Mnmj4pImIS| +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 +zj;g<2bajHs=5Axz5zB*s;gUfxMG*#eI|W +zPt_#ayDFf8ao+c5WtKeJO5{V#6YG`Hq;ize@gG1GACA@vP{KS3Qkch7pZHM)J$Eh> +z)tW-Kh%}on;tYIy!}iH+L&<3b^iat1^UHXNna-vEes*(mIfP&RiU58i9k&B6wCg!o +zaXAP16LtEL#2}!t%`m7o-f~-{rA||s#f8!Pb^G@QmomdlPwMkQ8VLP|xfjWguE96v +z2WK@A0F?gMOaX|V@BRq`X!5vcg2pj{2@?CyP$TEKu_4hC`$A*z{iyf{nBH0oR@=~9 +zfr^trcf9y1&;pzC-~2#5zc<10>Lqi>9Qa+mf6hK#{sf<0@vFgwu}8zSS|GwPO_i%qg}LAX?Aup$@xDtF+)UxzE{gK!4{gNM +z@O!J^zB7ueGLpoqAH7V1*EBWQBmbYqBiar!DhDZQoQttn*kLiA0F&R{#Q@*ksjc*OEVTDjGr|PjDm4$a+dKap)uDPX*J$z%;KlKS04IharK#cx +zCpngm-4D2#Z}hqxN0to&lNwkqoNPov_Q0aI0#YtyAVSUVm@fH=034tk?(|c_mrYX{ +zcF3BFkG5WR{-F$l%k<+{k*@}2fS58qd@fDR*fg8iS$*lH40eEI(5r3cgg1-Q~?SB774zz_9UHiKA?8=SY~{ +z5piK@EElnAj@Me~y{FTvuQ_FE;nL~P=Iq)P^kx^BJ+b9AUuB=6Y@T!iX|J%9Kal$0 +zqx4owVIE)n!u?##8rKG;dP+$JUs+|EmhR+mlm3kqzN* +zzL+ym>D`@!`+es=5nd(0v(L4DetB<5FSn!$Y0@Qgt;^KwN{4So87+)yRjA4F`IG61 +z5D{Ig>KcW1>rL0LiVPTfKWz;`|lIrcnR4OjAJLuV9PPzJ`A3%T7OT~$rFwDz|g$Spm +zsk$To1B+x-WHdQt_M2fkl}c!t8V+Fo>Wua_tso#=8pu7~{uN6?v +zf_UNVXB90d6($D9>YoHxpF4i!|NT%invNE5LM3pra?&q9kJnAwuGxfSJM`&KH=+4V +z%ZP6w_j&Ow!Bq$}T=sa6Iy{qb<d +zii(JUs7NPvK!l(u9ikwjbO=2_Y=}yU6bVX+ihw9ZdQVV+(4>>lBP5{(2nmFc{*L$F +z_r`m_G2Wl2?Bwin_E~GLx#p7Zb$RoeyL?{pwoEGd_NxnXH*bId>5t#zmcP-HRX&Nq +zPZY&s<5^(TAW(Bs!8Bt)VN+5BZoOh{6t88z?d%?czH9&8D{{XzO}hiDeAclPYp?A^D@S5C|1)0><)1d!-UYVU*2f*oli +zV5j+;h~X=ifUhcxd^FrusPwwfaS0CSv>h0*M^&x+YKMk^HS7 +z6x2hB^rQXg<0n@wR6k1{XXWZhT%8|09f9YtBK0G^TdcKc3Z; +z>aH24Dl%`T0@q6xscp3ep;oJl<-IT$A +z^SxxuV$?r0KMp2TgRdjF`HSf5iG0@Yf%?y+a=<;L9^S;B#36`zbuTH{ch#4^)K0vK +zNtlq0-Eqq&ul^VS7gy{57HvAoC#13#JWK*Vmf~VwU5DE>wU(a%_$+=U!c8I&v~p|| +zu5+=`5Wo2vqVwgGHCOSAPZE@UWa@VFI)6UCon5_YPTWgNd6A=FEl${)8sPtN7NMl? +zIj`vST<%WDmo!|?V8Zu!>yzh&)&Yo&m3fISB1Q0JIK>b9Vpd5P^401CHM#hLI%_0dEo9S-o{<;d*Lv +z`Ve<>2m#fP&Js!<+wHM#m8LlbWTImOt4$VNtG3atwo2|n!stFbWTseptDOqY_r4Fw +z-J-u4eY-Z0yI+H)Eoi3|KzPdq=~`7ZvCK$0n@^`bBM2=YNsHmNv1d$pe`2oJo+^fY +zj&S_k{SRJYpG-a=z*HTi}^o<8y$Q+>}aJlXW|h0X`5V`!&-75L@iG +zR%mDLG&IN6TrMhq&~Ec~);I3*#oWT}`ZW^U-(<1>NcYUJqH4rCxu#v}jJ+SOo;VJK +zq#B)iL`SLWgXP0t%Htq+UMH}NSFn>O!#zun_roOg{X4ACBgG!N_3^w#8iU$)A!xo| +zB>R;0(a9pJWWL`Q1PFJ1smiOZM`vAGM4ug05GuDlfgyS6)o~SXoW&~U4f#ay%YOO0 +zWhLfqxws8iE!&4B)h>Tp9*3AFth&AL})AbmjDt2&T*Gdh7k-hzzv56CkO +zXmKX4I1i^azm4KT3WU{-8S5d7-EVPPKdxAw9okW(ABEX0MWkZZ*Tew`E3euMr~#V) +zI18UY0ph1svEt;SvhCdRO-{J6Z+NMZFwO8GMLjSD{LbLZB_r#2?Ye0sU*jI;@Bh}@ +z{GX5Ob&19@j*L;~45nYTv +zUc8-zY~A4v!49C)6b5J9#gCz6mE_;_dg%aZtU%!Mv-{}j +z*Z%i@tb%&``(YOJ{@`{~v@#W3CCyxy6M13!!_EJq;iK2phyH8UBTEAE`CdRN`;(NP +z_)k9ixfj;*{!2;x`vJQ53*arzh`Fry-TVd81?cCy%S~Hv7G^TPNjtz!zL0w6k{B;@ +z`aT+wtRVQJ^cpVD_%>tm;*&z7HT4GnfJyB>7ThDsH`({XNjG(2M5>4ftG@(f6~tO@6@M>$ +z#=8UMGrOe(epds10A}k40y1GfGr&U3=cytAp~QiJ=@@_~ngqb(W$6equtk_*BU#lF +zZMuN?nsGZew6BsZ*iEhjlMcPOeZ#0%42XL<8Yw@E*s|GVpY{K8TN==FtXBK4+8Lm_ +zF|NDgzb3olNkF%-f6DTKf-g~bZ`Ju#9g^Qj`) +zf1kvtNrg6V2JcP7cE@F#Jab78ys30KBIwVnPCG-+vDYpCDo8h$%?Tix3w);*SU +z(R7O+P|#Rv;0+ac3C~O_Y}Q9LCGlETod?fC!0)Uz=a87k@w&AqUW@|iv>$m!TFr(l +z^|ZSU3rFBTCpeg=s+;FWx@!wm!Byz(P4qdf>P^V8&{6bTL{W3&<5cglinmZ%mxzJ3 +zMQ#~8U@%8}0>z!l*&_iVgKd}g>C7?30pBsp?FNYZ4QyQ|Yysy+Vp`WQG5AR@XFp}6 +z@-c>bGW!uAh`%hJdVc9U#HAAc#@J6-apwq+8(dQo2TxtQ|dfpEK6PQ>avP{Ap+b8>;B%&3j~%UW*LvI9K6b%K1%C)ZT{M1jqj0};Oe(T?v`dK2>ukmxrHA}gjs)~^T;VA}^#x_8m?!7p=k +zRwvh6+|)ZQ2$2k(3>WeTH`qXX?84=P^V*zmF@(H`VBhuN$zGuH#onv0sF;`97rgNgB?HZPjO8@X|EuH@Bm@V=nfFR=Ms +z36+FXK{<+g9ESSkVwv-E+mq>f&4SGhIcOAu122*L(=OxZKFj?%p0h4bR!^bn%7|K9pUPd?=x4Y+8$K=QImU@DaqZ)yA7nfn0!2#`7c040!jF3 +zkcB6gpxEvIR*u(Ne`EPZJA9?(LZO$V=jgWU-`+|H+;a6feqF4rQ> +z%RV?Qb;!rCp%gDT;9|eFT@FnL-KuPsyi3h@9wHIh4&!`hVG*iLa9HOwVYvQ?asT;Y +z@N?}kN_oD^?A=|}Qk}wfqt)vm{%GHjL}^S5f>GAE%u2Z&kLO#8LJAu3h;uP?GeUu) +zTX>fGipNRn%2u*`wpNpaI!DEcKOec$CVog*RKi>^STCrv3N@rdeMGA +z)$Hyy#OCOo)hK*#dFSh(P5#H{$Isn+_(4>3+YQz4M_>5IPbL59+;e`<>Y+*h_=!DJ +z1F_y_@jK%|;{)1F29q*74!`;E=zaSk)#pFl|2?Ge=K3v*J12|2Ruu{#MnxBOCz5QGJqiv@7$g>LEOpQ8Eg$NwySO)(_ +z!&O|hyZYzex|9~Fe?f1q`!0nVd?1jppS#o6hJo0q_rW6V@7mr(HKD6;goH(5I+x%R +zGM6X4-upa${R>BWQ$B-KDIS~BV-R>VU+-y{j;osWnEBn+6l9tQ%BPhR{%QJ$J@YKr +zVJ?|5BI04};t@9gR6_c93eNk>*p%GCL}n`w9{GzYx0jg#nN5+rR6{u;X|*x``+1_F +z+~Ay5h0SHGWLl`DT+5|9xs*bu4%+$7QBG7PsNubG&i6A;{MKkqq2d?eI%)_xRiG1! +zwzor+oLrr#qvgeDI<|GNMSCfE0jKfy76z94sjqkgrU}LdLwfosB<6<$aWd)?qF9Y# +z22TWKp@rR$kg2S}gyw*zb91){)W#lrc;J}N$j4hlG&kW&0(v#qR0s{hAqzoiGS5iT +z{tdZLY7Fm;k&6s(r6j)_Pe8j%Ga8 +z%>RfOXy+fYrtf-V^i}V4-8yTohr5oVH5~)+O9|GPu +zxkc04RwV*Bh#_Rj4c^Uzd~++#pE#tB{;woE?R0t{n*RLpoH2Pvwn5O`id%WTWDOAiS3j(SDjy +z>Ss`cc+J&Xg|XhcR94298(oVXi>}(5w6EAw@`&z{TQL~To#P~EBRp^ZNspI1WMJC# +zSOKl4;Yj}glhw!~mp}3QiXgwDuO)sY$iw?!%^i2@>&b4t+R-D0>335rAxOt$!B;zh +z=h}?i&m)DhhbQ)D@7%rra`AUY$K1wqi){@@hG +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 +z#ra~H?hY|*_Tc~gM~U*%%NAzz*tj}CZJ +z8FCc2{Dsp8-oKqr^};*0{xnj5x6uLh?i$7Y`BY?mY2-bmUCHf!8CItIvC1S9%-_Ne +z=Yv>Pdss2X_&KNj&h*(Kk-Y3ApIj%N&c+A+{9Imu4PDC&qYo^qIYwUz((PhfqY^th +zmY9c45o|yQ7tCh)PiL$<#vgE$8AVt#>&drQm>=8*(VVPvgAmc^KRwV8Guy +z!3I12*)QXzZ+-4*JoJyT(kJ^VPaa-*NXLDDwu#RA-;>YsK5*Z4gKJHr#P`#J$qDQA%n@E_-`Poxg6)g} +zk;-gcK~>$_7q}Nt +zHSGR9>YC>^#FD|x%joww=4Y*cK_7RxTuPFsZK|Oonv7UQh_RS0DJZp}a49X@hH-{Gp)+(w$<) +zDPC&EefkO371O2evhrPyl@FrCVB$5$O@51z|D8?n4{Ug`-COY+3Ue`vae$#H;<3G2 +zL?$`-+lP#tOFuHP`$2qw3xy#@3rOnUCOyk!xZ09@i#NMS=R^Tc(@yyn_LT}*Z~c1C +zbF#Q)Q*QTTxpX|G$3Feoq3o8c^%2udkaisjCycYyrX-BHGdJxAgUAst4?2DssOXj; +zstdNB>Zq8=ue_(tKV%Xrz8xs5rXaQDNdwOYO4+f=cFmfN-Zx9&h<9!x7=xJ32xES1 +zu+PG!47c0D**Fkw6(I}{k<;=OXo!_?YRW-IVNKk;GVox`pA1MltcNqi7v&dX&XzH>)$*vS}j(qiK<(HsZG +zQnAQi1TWB|iQ9`JRd}Bmh1(zgDe +zQ`*g|k%NwR+_oQo=?9I3BWD|vts!-!q4X52KAU$33b +z6GqIp9l?0KnO*KI-|2H1v(;gJYQYdyE-Q&3+xDDSWtf#ZnR=(uCbt+QbjL@xnKzP10+8#n=L=g~_? +z%rGo}1$AqTm3>Rz1H+9}t3ks8Ov}wKh!5W<7(DW!RW0}4N%M$ykr;`Sp?g%jhqub5 +zmmF{GC3RZ4GA^ru$vTa&5wg6DjQsj5k7B$67;`t#Or}e)V2>S)A^M>qL_T`0TxYzd +zmN?93+e5->{0`*Y_=1H?$rEk7xIeIsgT!oJLqV@{bu7=JdJBkTLepH;(BX&$uLel$20Da>SSPu% +zm~ysnswQMgp3J|d;)1qQ5@g0qRHlwD%RI)ZK1+$8^k5cOLK{MgxXXpH&G28g*b)A4 +zb6+|XJfL{eu%rMGK`V3iU()*AH?!5QC-e=kyyWG3H2Nab9{4j*dxL;HRPpQV3mrF@ +zluhW27|x+&RGBXB`K_~bJt7!6GE`w?ZL_h*V=am}oZE +zh4kh9>Z)-~8lZ>4Q@AB>j=#Dx@d@m88{pcE0*i>9e6uI>*@lOy?cP7CD))E2mNIK}kFMh7Yv8!p1W%-hfAOSVwLH7xtT0Z +z*J*c~WR}G}ESaBmfUa(k0*f2n?OCs@5(ehnwt$R1P>j1^0krbk3v{(~+?a6{t$^jW +zZe?I`*OLLPoeczVG~61BR2gk`|KAH_#HNs&zq%#1`0S4ggjnQT{S~Z;QW4H%&{n49 +zI`uk0>hApV=>^cdj@xE)_-8C!*xL8DPop1suS{_X9OK_oo5L;HkevXJDVs!vkVs%g +zb)@U&TT(5E5C7RQPYs=r;peT+5ZSawF3k!);~O<&=s|=_qpEjw{dmb9c;XGA3h35l(-X#}4 +z9x`i$nsPm+;6z4^@2B=30ZEU`zMq%=gy=h~_n)r+_sIba_-|$DHcP$GD;RluQaDioYhyrjihQV1%xx(3Cqz@{3b9AlC4qvBz=My%?jkZLdDkcY>#%DA|doXPq- +ziELHu>{^P{-%Z?04Gw%H8|M^0+?1LfEECy1?)LI|$qx7E4OGrtUfJBfUHDm_poKp> +z2A-9~u8BDd24aU&NNiVgpoC7BWE9r?h+HD50acc8h6&9Bs{Nfe#E;v%9O`O2)4ajg1mnb+b%pnI=AlI +zsVL7McxJooVPG7V7!azh1>MU2nXh6%~w579J;rxFt-0q9=?RiG1uT6~onp +zd`55U53f~BDxhIZ*IqQQdLY&&rW!FMv3f9O^(D&WA~aXharFA-raWApS)suhV0)d? +zYL=-zEE!Nw!LP0d2m=}kCcM7J<_*_}{70?U*aS>lzrq`__xfhqtvece`QwZff7$~5 +zNgv;5Qa8t4AO92O7F7p|_|KLr4MQ%HsN$5xb$zgC-908R)4OyA9*-(?E)bzjeLKOEugQ +z=GD)$iaK?32(z14=Z@4%9So7~+&J0#LQ7-NRudn(^~Bb9)i%w?ke(;exwvrte!s!d +zA!@duj{+6#xDj=db$u~Gl7+M|k9+W}r~U!sVRBQ4dJgaYorgQ8r-Z>z43t>Hs3hI< +zqmp+wh6J9(ju%Zu2yz13o99u#ubVB7pY@PN|B`C33NE&fwZv}gzixi-?gnya!M+PO +zHat!7yTi=tzV!K}Iy0}q6XWF)1?;J!=$X#37YR1+7C)tXKduUTLOltx?P{~yH!Q+% +zPm?@Rug|yKRC=e;pKsUj)bTAW1D^Pykm +zx(F78aS+5OIL*g81H?@x2bFeT<=kgLl)3m-6ScwcS89ow5TAJeOA$ljS|8ixg+np| +zwZ*uxzVNB?4Q2es%wwPUB#IWU~ADoj~{ctp@Ha86Y?}fj=tKi^Wp7j4rE5Pwytmsrw}bIw{X5wQ;^Zz +z79PAfrH=V2=aO5LnOlO3*d|AH_vo-X`*T*3v9-;3oa-wFe1TkHQh_&r2Pa*A`tjE6 +z>p0Fc1B6Zo72WvU^Bwp5rtl|)vEwnvt1i*s_POLfWOs_3;wS@2hs~2kSw^6yy9prh +zcM7ja{G$ldZT&jL +z9W&e7C}$>V5ybEiG(Qe8)y#dev2z4cNb@aIG`uqu9*kX?uAIWME5S?CoYDZt`ItL? +z8@s;BqdbB}Tiy%d(?ZoLTrAsi@v^9}D*6QZ0BBc-XMiilfrRN9LQlX6-_X?Q&?CyU +zHq?9eaKn=!B*W_lBQhrQ{;h>RwgGLHVX7Ukzu}|1SO(#3&O@h~H&uoA?To3rPL5K{ +zUr70~aa;8;#$#@djNA7%Bxsa@o(R}blc^)J|A;&Dww`DTNBh$MGqv{-*2}AiZb*W+ +z@&S*-KJU(v_U@(8Nc^ZOZT$owJh>TN94xphp8uYrAQ!o&QD@wJWnXI05*-|Ll)rDJ +z<4-6^eyR%X=>b(G5i3C3LG^7WdWd2Pt<&Q^JoswjsSty`RyjuT-L0@g&)p^+VgV#J +z5fT+_z9|ntw1GL@ZR4?~LF6lj7Tw^SQjWc~v-RHZ4s9>7=)lzV_mBC?sjR`TJBU4b +z%(!pn1}=s>Qf*{L#Bb&0HJ#I*mOKbDl+7@EdP*{3|LsI?QIz)z>qYdUMX=8wxXFgF +zi?Tk&?p~z%fcjthd_1=xeS)HU70|bga}^FDg;1U#AWX*ijayH4)|$E?N;Dmq>a2N8 +zeIxZwIP@(1ZZBQ#pCJ6nY_E)xtAdELiOfD#c1i+xY5 +z|KW!_8uHgOf8Gh%o?dO9%P;S|naV|cy?92f2%8&E9rTZ8DYY)9hP=c;4^jHY9F>j6|Z;f%1zDT75j(<>3l +z>nxXUJ`P}rJ>>?4-GR#-ZM6dY55iOCs|BBh;EgQ9aOutl!Yjimf(4GBQ+h0wN%UOa +z+9gR~#t3Vvh;cf>r?`9u?i@U=YLa16u{CZ-3Iw5iFoSK;rD@AbKqz7liE?>LSGZSK +z(6o~{s3?-sl2Dw_JmT6Ou0?b~FcN26F!h4zN^;twnn>MUPv?e+oy?bNb-@$_|Ed8t +z6aQdE_{#ju^N!K|+6L=K4Lq0h(%oOnIkM>_u +z_Ii~c&PP>eM)A6dZJK6kWjWH8*znI+?Ts_g&fJVqEA~DVYoawO@k +z1YSdhVLqKfyS5^PAs7-PRpi$4e;b;}_tX54 +zs4pF=ky=DhuHXVk>GAMddhSp-961?T0cXe{ZWeug=2Wl=J?5C_OYd6&%4bXnfeJb_ +z%*G~q#jQX52NOCZXc28zpMBom+C+`RmHmEdrA!Fy)3fKywl0b|c`2vLDk +z`!M->BE}J~jgS4CLnV?ok7v>Mv72^uDtsU>l(8G)apuWl{vTClx0%QVmBJ2kT>yKK +zT%ba?cyI;rn_#lfY`0Q!U>XFII+I8bOd899zuryMM67GD`;v6Q|3W@`E*9NZS3vn<&92HYDq(H9~dkP&+Q()q$%GDPXEOc@-d>OYS4{eu*|FN2>* +zme*G@iJyOQw*8mxgYZ@LVDh>`)A_nj;LyZ-#UPb_ScLzUdvp(IWzD*+V_rAHZ|y2# +zN$D31#UTnI+aDE@5e-G@pM_CmOLL@)^#z93$Jui)w#Yf8?wBui$5OOeM_tD!*eRDJ +zmLtDhG=7IM>x}z$xAQwMyQ2bm8r-U052_~|wS{z+n_uuheDjc!Wu|1$^UK89&tHEH +zV%^2%ybnp+wlX~FD8>DNq$%spAR(ZWv +z5Xjv@Ns_#ZJV)*~#a-LNiT4GjkjEdogQ^NNwhI^B!#z!{`DJ1Dc77ZZJcZX*cv9MxA|#AH|Zu8Y|Uv#n>-_#CNOFoKm57EZ?Yc0?dOg +zMssTJl`Yk6m4A#T)Ehqlza*8pWZ~!Mffw#yZC%JB(kYCO+P|i|UVT4@a_n7s2{z(S +zprfIQn|Xl9(ITaxQ~R4kwm!SQ@%$)w`=2q-IC>SeWqWtA5Z4rb3DcvkEUcn!lo1hM +zRdL7CvyY2i*J8_we~)eLR-=-A&V(^f8nBAJD5Aiub?c^o4deS990E7DclqRdq+T;U +z?>H`0tCKlNbP?1GZ0(LVj~JUWc33~K$<;!dSy#4*1LiE?nh$-IXC09l?b74zx)40v +znGKnJUVYeF*=9Zr?5h+~_k84|WRmr+dkQ)#uIHC5{7;q?CJ4r|wXXzg<%N4TBvy@) +zN`;X)VOuu^H=7|>4P~{v6}8oAsW{hKJdk-h!O?INON5&+ND^~*;jifr-XCp`)_IBf +z;m2PTOJthG@>-l?TCYr`8<3(F=AfjhMExM?liAqkMR%x +zP;*-nte}YaoJbrpj0PWimdEw-$7ZQOHUoNaK_aT)pu5JgnnEX2_fLLZ*$zvubT&l& +zseq?I5HgxqB^TY)N-d0!)8+pf&spMn96myDTtnMwuwW)TiR%TP3w$;k5;>t1_(T&J +zgA8FhCpqYoRZu%h(mCH%mpc^CnHzHa+z{Qc;tsaVe=S@HMsM%fe(4=3--QUE}a!{?s0U6Wxs*<`+o6Gkh +zn!<+!7qN3+FNP?d(brG@LQtI%{H=Fe@;y8rxO0#wUfr>HN$blQZs +zMp;z`@qP^GuDPXLEd1IDG^r%=6KJ_`8Z~x(h_)O{z5`uokONGalF$f%jwTSG(3%ch~xG9t@67j9W)EZk`M;52v|C@At1`nkkz|H +zn}#d~@Us+j5H2YWkSZt)=9&Sd8DehC1C$+?_2o3VMk4%7^BRHx%wzPrUP-!9t#AQE +zP#gF7nSrSCDHXkjdH72Pu#5e%)Tsbdj!1LZ{o2FNwi0Jz35`TRiwDmMoPaG}7V(f8 +zzi6mg=X75flB4S129Ex1`Mix#mUKKpLVD?07JIKZL<2*dXx(*CYyM}+lPP|HQ-0NR +zTN}B0lZ_^-J_`nr +z<+EQ;HAo%Ib|zlr0vp!&6d|-xAg8gmMiX9Vm9WrD4LCQK69kJz7Dl*64i6;;e-dyb +z2~;|mIgMUuFcU_y&-!xG5Y+az5Q-I251cFTzEsQG(K0C@Bs?_iA?_2C8q2d+)xtr)kaQi +z^9S=lb^hWHNDMo7mEI_@W3_}w+p~Hb-E`CI{Dj5gCuZL-Hyn=CuKPcGfwFHQ>^L~N +z8Ijw(7BY=oJ8`z+H1cILM5ojgKs%Xl50`jg&l%bk7v1jo#o3H~tYz6&`0x!K8QuD% +z4NFef;`CJ)y6@7>d=TZ=rgAjiBV8AL)=4*2u{fwv>R>vyJBz#?asM#UvyIa!rJu)e}JM2kspL2{UJ+&rs-<8{5E5QN`xC^%UrdY~*z^yZhWN +zdX;Ey76JR3*hb*0e(_hP7v8x_uRi-7$%DT1 +z>g8GE5yZcLX5D{^A1%=V%cb*M;_KepnAGC68HpO6{XeBT;xUi^3#}6z +z8Z{{W5~E8J;C?=clLiS3FoIRVIU4gJPaHe}}H+ +zvpR!8h`ce3y}FA3V-EVzqb0%mF=wh}CbXK15+mnfIr*#H06|Fj6|i^<;jr3Jc-v6c +zaWk40`rV%bgEQ5VXro{lYeN=UC{yMVlXqWwUWsV=$hqmwbYR3`fO(7R1KdLjqkMI2 +zHDmQ1iS?N^u)3O@Q(xK0{6Pp0Fb7WyYYbXtW110{`gOuvcXZ8FaNT6iRR1r^K;S6+ +zcObq~utYvMlwJ>P!NQ++SW^l2D%><4cJ=jp8T^K$6zKxt71Z<%eCh_Pri5^6%)odL +z)p)@vS`%(weI|*nAuS~y`ZNU+72EKYyOvxTg|rlRMXODd}NfmoB7a%Ws80a^jB7(olxF +z+{atD*BzEQ&{OxED#q!2G>sd-c=qU^6%Z9voq;9aT3!0S&ZFVhmOt|Y7Vc0#ly8I{D(XdpiBmzioH2Y<6q|xdLqwH3 +z3HLTB<<=pUEy3b}XZRuQca-Q`+Dy<=lz?3omNadRHW*r2S?LR<{UtbRxtOEJ`a2GG +zW$TtO%Vc6FjozDzoiN$_hH|{>dU4)KxKMicpuOh)=3Tn@72!8Kvgq;Y0$~D5J5>0K +z5UXX6GbuU_^mm+p^L(Ol^=xf5O7eAbcu_#OFe~|{leC-RdDeDId+T>^NfU;qhRXp4 +zn-^GUwBXNovG)cNeMfw$poL9-6R`$^5B<`P-8lR>{ij}_D^2(f+>2P(tc_^cAE|}rq5(x+qZCsk(WzbR?c(K^q*g3Lssnv(`Kl6J +z6&GCi`tNT(wY}iE_h-T}wuOTPqSz`JPiA`>Ewc?)fgOoLYg$PbZZXYR`o&11aCa~Q +zQ4gdIu*Ms?i1SwnIR?RB*`Zbhs4Mc^sFzFOk(yHH0dU&5EszYNc`jiBFUMX`%>Ic+ +zh(EsO@gwEX@uSk|%|N)_z={1*Oy)iI4wA519TDTzP-QU$Ui{M?6cv;m!j6OABFl9R +zQZ%4rRjK=JUql~csfnD)YGfV5$T*3dGkH+3@w~x&R_nc8b3H1b^P>N%b(&K&z({cW +zv-K#3dGT?S*yEVWQOTO`7KuJttUF~m*_^o)?e=c3Qmp%VW%9N*QgE>zaK==Hs-#8I +zXay-x!uYQyws(r(l64ur*1T}BZH82C%XV*qnZL*abPL&jhF@d>q+SQnBTGGez?a^( +zWySNbg3S%@tYHB3MX>SR1nu^KS&+~BvxU~*--3g2oEcH)Xq{MDp~FzNLFm&GUWyT3 +zMrL$2fu6O6dq3AxBbpY5?jIeb6(atcL7c8Waclink{$UaY1=O(K_!Q +zZn1l9RS>`wKzx1@TuN--fA$IXs-I)p~$<9FR5G*m0q>2=Z*VR)w7Uv{~!>mw*$Ng4Va$1VZ`q4=JkB +z#{UR-{}*%b9o5v={tIG3R1`!MP$?=RB9aJ-NDYdBihzpJNtB4Fi1Z$Uq6h*KsX=Kf +zQj`)w>5zbQf*>_?BoIOm2{ok6=KKEM_fENMX3fl9GxrbH$|>x9&OT*7&+{o~2cLfQ +z&d6Q#Bemvw%28VP6!8u&bfQWA)a->dw=%JDjUJzq9208iAVAYb!OJ$*Bu7SSa^AX2nPuZ +zw`r8&WG(tB0bN=4e8apPn&8eD{=_@rY{)i9X +z@Is|j>*DIx3*RX+<5{-i+OPi^4xeW@DKu%UVpWgNZL1CcJ1|-$Zvi^U?p8l&vvMUh +zfiR=tG2vMr886;;FaHPZh2OENU(U+w0a}G;g%?cyTgCsVLi>;?PH;tbxYpkTL8vDy +z#MkI(hhs%E5#9+~TFY=t+;%w1f4aVW)dv1!acde!nEb=?_sVT2nZ_xQIW+qAyumyL +zZ@n__jU8i64@6U~nX>vs*Z`6}#66CP1n~*eHi|i3Sq}sDNA>HLLCa}QSr-4bGCn9D +zfS_~_Rs>2p6<}!|>XVoyF`g~2Nqij1=?KbC`S(h5kiUbcrhOjDsQ2~fk8h_W!rDO5 +znj?#d#H<+d%Dn%xl1be##7n?R2%wSagLibWNbW@!dix3nr93hV#=bV9Kg6+;Fb