From 9c40e7d9ce93d0c39d4fb45eb78edb862c8d7245 Mon Sep 17 00:00:00 2001 From: Breno Oliveira Date: Thu, 18 Feb 2016 23:53:44 -0200 Subject: [PATCH] Added Swift Version --- .../Whatsapp-Swift.xcodeproj/project.pbxproj | 627 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../Whatsapp-Swift/AppDelegate.swift | 38 + .../Whatsapp-Swift/Base.lproj/Main.storyboard | 168 ++++ .../Whatsapp-Swift/Bridging-Header.h | 3 + Whatsapp-Swift/Whatsapp-Swift/Chat.swift | 35 + Whatsapp-Swift/Whatsapp-Swift/ChatCell.swift | 59 ++ .../Whatsapp-Swift/ChatController.swift | 91 +++ Whatsapp-Swift/Whatsapp-Swift/Contact.swift | 31 + .../Whatsapp-Swift/DAKeyboardControl.h | 60 ++ .../Whatsapp-Swift/DAKeyboardControl.m | 750 ++++++++++++++++++ .../Whatsapp-Swift/HPGrowingTextView.h | 126 +++ .../Whatsapp-Swift/HPGrowingTextView.m | 666 ++++++++++++++++ .../Whatsapp-Swift/HPTextViewInternal.h | 37 + .../Whatsapp-Swift/HPTextViewInternal.m | 127 +++ .../Images.xcassets/Contents.json | 6 + .../AppIcon.appiconset/Contents.json | 38 + .../Brand Assets.launchimage/Contents.json | 36 + .../Images.xcassets/app default/Contents.json | 6 + .../LaunchImage.launchimage/Contents.json | 23 + .../chat background.imageset/Contents.json | 22 + .../chat background.imageset/Layer 1.png | Bin 0 -> 93608 bytes .../chat background.imageset/Layer 1@2x.png | Bin 0 -> 253053 bytes .../bubbleMine.imageset/BubbleOutgoing.png | Bin 0 -> 2166 bytes .../bubbleMine.imageset/BubbleOutgoing@2x.png | Bin 0 -> 1986 bytes .../bubbleMine.imageset/BubbleOutgoing@3x.png | Bin 0 -> 3051 bytes .../bubbles/bubbleMine.imageset/Contents.json | 23 + .../bubbleSomeone.imageset/BubbleIncoming.png | Bin 0 -> 1959 bytes .../BubbleIncoming@2x.png | Bin 0 -> 1851 bytes .../BubbleIncoming@3x.png | Bin 0 -> 2865 bytes .../bubbleSomeone.imageset/Contents.json | 23 + .../inputbar/share.imageset/Contents.json | 22 + .../inputbar/share.imageset/share.png | Bin 0 -> 2183 bytes .../inputbar/share.imageset/share2x.png | Bin 0 -> 2509 bytes .../status_failed.imageset/Alert7.png | Bin 0 -> 1595 bytes .../status_failed.imageset/Alert7@2x.png | Bin 0 -> 1488 bytes .../status_failed.imageset/Contents.json | 22 + .../status_notified.imageset/Contents.json | 22 + .../status_notified.imageset/notified.png | Bin 0 -> 1351 bytes .../status_notified.imageset/notified@2x.png | Bin 0 -> 1517 bytes .../status_read.imageset/Contents.json | 22 + .../status_read.imageset/read.png | Bin 0 -> 1393 bytes .../status_read.imageset/read@2x.png | Bin 0 -> 1730 bytes .../status_sending.imageset/Contents.json | 22 + .../status_sending.imageset/sending.png | Bin 0 -> 1285 bytes .../status_sending.imageset/sending@2x.png | Bin 0 -> 1611 bytes .../status_sent.imageset/Contents.json | 22 + .../status_sent.imageset/sent.png | Bin 0 -> 1184 bytes .../status_sent.imageset/sent@2x.png | Bin 0 -> 1294 bytes .../user.imageset/Contents.json | 22 + .../Images.xcassets/user.imageset/user.png | Bin 0 -> 3375 bytes .../Images.xcassets/user.imageset/user@2x.png | Bin 0 -> 6691 bytes Whatsapp-Swift/Whatsapp-Swift/Info.plist | 42 + Whatsapp-Swift/Whatsapp-Swift/Inputbar.swift | 194 +++++ .../Whatsapp-Swift/LaunchScreen.storyboard | 41 + .../Whatsapp-Swift/LocalStorage.swift | 60 ++ Whatsapp-Swift/Whatsapp-Swift/Message.swift | 59 ++ .../Whatsapp-Swift/MessageCell.swift | 285 +++++++ .../Whatsapp-Swift/MessageController.swift | 205 +++++ .../Whatsapp-Swift/MessageGateway.swift | 113 +++ .../Whatsapp-Swift/TableArray.swift | 162 ++++ Whatsapp-Swift/Whatsapp-SwiftTests/Info.plist | 24 + .../Whatsapp_SwiftTests.swift | 36 + .../Whatsapp-SwiftUITests/Info.plist | 24 + .../Whatsapp_SwiftUITests.swift | 36 + 65 files changed, 4437 insertions(+) create mode 100644 Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.pbxproj create mode 100644 Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Whatsapp-Swift/Whatsapp-Swift/AppDelegate.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Base.lproj/Main.storyboard create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Bridging-Header.h create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Chat.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/ChatCell.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/ChatController.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Contact.swift create mode 100755 Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.h create mode 100755 Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.m create mode 100755 Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.h create mode 100755 Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.m create mode 100755 Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.h create mode 100755 Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.m create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/AppIcon.appiconset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Brand Assets.launchimage/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/LaunchImage.launchimage/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Layer 1.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Layer 1@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/BubbleOutgoing.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/BubbleOutgoing@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/BubbleOutgoing@3x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming@3x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/share.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/share2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_failed.imageset/Alert7.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_failed.imageset/Alert7@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_failed.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_notified.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_notified.imageset/notified.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_notified.imageset/notified@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/read.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/read@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/sending.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/sending@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/sent.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/sent@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/user.imageset/Contents.json create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/user.imageset/user.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/user.imageset/user@2x.png create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Info.plist create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Inputbar.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/LaunchScreen.storyboard create mode 100644 Whatsapp-Swift/Whatsapp-Swift/LocalStorage.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/Message.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/MessageCell.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/MessageController.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/MessageGateway.swift create mode 100644 Whatsapp-Swift/Whatsapp-Swift/TableArray.swift create mode 100644 Whatsapp-Swift/Whatsapp-SwiftTests/Info.plist create mode 100644 Whatsapp-Swift/Whatsapp-SwiftTests/Whatsapp_SwiftTests.swift create mode 100644 Whatsapp-Swift/Whatsapp-SwiftUITests/Info.plist create mode 100644 Whatsapp-Swift/Whatsapp-SwiftUITests/Whatsapp_SwiftUITests.swift diff --git a/Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.pbxproj b/Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e295372 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.pbxproj @@ -0,0 +1,627 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 550D42651C765206006A6961 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42641C765206006A6961 /* AppDelegate.swift */; }; + 550D426A1C765206006A6961 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 550D42681C765206006A6961 /* Main.storyboard */; }; + 550D427A1C765206006A6961 /* Whatsapp_SwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42791C765206006A6961 /* Whatsapp_SwiftTests.swift */; }; + 550D42851C765206006A6961 /* Whatsapp_SwiftUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42841C765206006A6961 /* Whatsapp_SwiftUITests.swift */; }; + 550D429C1C765514006A6961 /* Chat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D429A1C765514006A6961 /* Chat.swift */; }; + 550D429D1C765514006A6961 /* ChatController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D429B1C765514006A6961 /* ChatController.swift */; }; + 550D42A01C7658BC006A6961 /* MessageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D429F1C7658BC006A6961 /* MessageController.swift */; }; + 550D42A21C765904006A6961 /* Contact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42A11C765904006A6961 /* Contact.swift */; }; + 550D42A41C76590C006A6961 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42A31C76590C006A6961 /* Message.swift */; }; + 550D42A61C765FB3006A6961 /* LocalStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42A51C765FB3006A6961 /* LocalStorage.swift */; }; + 550D42A91C7664D1006A6961 /* ChatCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42A71C7664D1006A6961 /* ChatCell.swift */; }; + 550D42AA1C7664D1006A6961 /* MessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42A81C7664D1006A6961 /* MessageCell.swift */; }; + 550D42AD1C7673F0006A6961 /* Inputbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42AB1C7673F0006A6961 /* Inputbar.swift */; }; + 550D42AE1C7673F0006A6961 /* TableArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42AC1C7673F0006A6961 /* TableArray.swift */; }; + 550D42B61C767CB7006A6961 /* DAKeyboardControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 550D42B11C767CB7006A6961 /* DAKeyboardControl.m */; }; + 550D42B71C767CB7006A6961 /* HPGrowingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 550D42B31C767CB7006A6961 /* HPGrowingTextView.m */; }; + 550D42B81C767CB7006A6961 /* HPTextViewInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = 550D42B51C767CB7006A6961 /* HPTextViewInternal.m */; }; + 550D42BA1C768959006A6961 /* MessageGateway.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550D42B91C768959006A6961 /* MessageGateway.swift */; }; + 550D42BE1C76A4BA006A6961 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 550D42BD1C76A4BA006A6961 /* Images.xcassets */; }; + 550D42C01C76A841006A6961 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 550D42BF1C76A841006A6961 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 550D42761C765206006A6961 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 550D42591C765206006A6961 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 550D42601C765206006A6961; + remoteInfo = "Whatsapp-Swift"; + }; + 550D42811C765206006A6961 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 550D42591C765206006A6961 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 550D42601C765206006A6961; + remoteInfo = "Whatsapp-Swift"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 550D42611C765206006A6961 /* Whatsapp-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Whatsapp-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 550D42641C765206006A6961 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 550D42691C765206006A6961 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 550D42701C765206006A6961 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 550D42751C765206006A6961 /* Whatsapp-SwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Whatsapp-SwiftTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 550D42791C765206006A6961 /* Whatsapp_SwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Whatsapp_SwiftTests.swift; sourceTree = ""; }; + 550D427B1C765206006A6961 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 550D42801C765206006A6961 /* Whatsapp-SwiftUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Whatsapp-SwiftUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 550D42841C765206006A6961 /* Whatsapp_SwiftUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Whatsapp_SwiftUITests.swift; sourceTree = ""; }; + 550D42861C765206006A6961 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 550D429A1C765514006A6961 /* Chat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Chat.swift; sourceTree = ""; }; + 550D429B1C765514006A6961 /* ChatController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatController.swift; sourceTree = ""; }; + 550D429F1C7658BC006A6961 /* MessageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageController.swift; sourceTree = ""; }; + 550D42A11C765904006A6961 /* Contact.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Contact.swift; sourceTree = ""; }; + 550D42A31C76590C006A6961 /* Message.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = ""; }; + 550D42A51C765FB3006A6961 /* LocalStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalStorage.swift; sourceTree = ""; }; + 550D42A71C7664D1006A6961 /* ChatCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatCell.swift; sourceTree = ""; }; + 550D42A81C7664D1006A6961 /* MessageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageCell.swift; sourceTree = ""; }; + 550D42AB1C7673F0006A6961 /* Inputbar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Inputbar.swift; sourceTree = ""; }; + 550D42AC1C7673F0006A6961 /* TableArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableArray.swift; sourceTree = ""; }; + 550D42AF1C767CB7006A6961 /* Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = ""; }; + 550D42B01C767CB7006A6961 /* DAKeyboardControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DAKeyboardControl.h; sourceTree = ""; }; + 550D42B11C767CB7006A6961 /* DAKeyboardControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DAKeyboardControl.m; sourceTree = ""; }; + 550D42B21C767CB7006A6961 /* HPGrowingTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HPGrowingTextView.h; sourceTree = ""; }; + 550D42B31C767CB7006A6961 /* HPGrowingTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HPGrowingTextView.m; sourceTree = ""; }; + 550D42B41C767CB7006A6961 /* HPTextViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HPTextViewInternal.h; sourceTree = ""; }; + 550D42B51C767CB7006A6961 /* HPTextViewInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HPTextViewInternal.m; sourceTree = ""; }; + 550D42B91C768959006A6961 /* MessageGateway.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageGateway.swift; sourceTree = ""; }; + 550D42BD1C76A4BA006A6961 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 550D42BF1C76A841006A6961 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 550D425E1C765206006A6961 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 550D42721C765206006A6961 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 550D427D1C765206006A6961 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 550D42581C765206006A6961 = { + isa = PBXGroup; + children = ( + 550D42631C765206006A6961 /* Whatsapp-Swift */, + 550D42781C765206006A6961 /* Whatsapp-SwiftTests */, + 550D42831C765206006A6961 /* Whatsapp-SwiftUITests */, + 550D42621C765206006A6961 /* Products */, + ); + sourceTree = ""; + }; + 550D42621C765206006A6961 /* Products */ = { + isa = PBXGroup; + children = ( + 550D42611C765206006A6961 /* Whatsapp-Swift.app */, + 550D42751C765206006A6961 /* Whatsapp-SwiftTests.xctest */, + 550D42801C765206006A6961 /* Whatsapp-SwiftUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 550D42631C765206006A6961 /* Whatsapp-Swift */ = { + isa = PBXGroup; + children = ( + 550D42921C765429006A6961 /* Controllers */, + 550D42931C765433006A6961 /* Cell */, + 550D42941C76543A006A6961 /* Helpers */, + 550D42951C765451006A6961 /* Model */, + 550D42961C765457006A6961 /* Gateways */, + 550D42971C765461006A6961 /* Third-Party */, + 550D42991C76547F006A6961 /* Supporting Files */, + 550D42641C765206006A6961 /* AppDelegate.swift */, + 550D42AF1C767CB7006A6961 /* Bridging-Header.h */, + 550D42681C765206006A6961 /* Main.storyboard */, + 550D42BF1C76A841006A6961 /* LaunchScreen.storyboard */, + 550D42BD1C76A4BA006A6961 /* Images.xcassets */, + ); + path = "Whatsapp-Swift"; + sourceTree = ""; + }; + 550D42781C765206006A6961 /* Whatsapp-SwiftTests */ = { + isa = PBXGroup; + children = ( + 550D42791C765206006A6961 /* Whatsapp_SwiftTests.swift */, + 550D427B1C765206006A6961 /* Info.plist */, + ); + path = "Whatsapp-SwiftTests"; + sourceTree = ""; + }; + 550D42831C765206006A6961 /* Whatsapp-SwiftUITests */ = { + isa = PBXGroup; + children = ( + 550D42841C765206006A6961 /* Whatsapp_SwiftUITests.swift */, + 550D42861C765206006A6961 /* Info.plist */, + ); + path = "Whatsapp-SwiftUITests"; + sourceTree = ""; + }; + 550D42921C765429006A6961 /* Controllers */ = { + isa = PBXGroup; + children = ( + 550D429F1C7658BC006A6961 /* MessageController.swift */, + 550D429B1C765514006A6961 /* ChatController.swift */, + ); + name = Controllers; + sourceTree = ""; + }; + 550D42931C765433006A6961 /* Cell */ = { + isa = PBXGroup; + children = ( + 550D42A71C7664D1006A6961 /* ChatCell.swift */, + 550D42A81C7664D1006A6961 /* MessageCell.swift */, + ); + name = Cell; + sourceTree = ""; + }; + 550D42941C76543A006A6961 /* Helpers */ = { + isa = PBXGroup; + children = ( + 550D42AB1C7673F0006A6961 /* Inputbar.swift */, + 550D42AC1C7673F0006A6961 /* TableArray.swift */, + 550D42A51C765FB3006A6961 /* LocalStorage.swift */, + ); + name = Helpers; + sourceTree = ""; + }; + 550D42951C765451006A6961 /* Model */ = { + isa = PBXGroup; + children = ( + 550D42A31C76590C006A6961 /* Message.swift */, + 550D42A11C765904006A6961 /* Contact.swift */, + 550D429A1C765514006A6961 /* Chat.swift */, + ); + name = Model; + sourceTree = ""; + }; + 550D42961C765457006A6961 /* Gateways */ = { + isa = PBXGroup; + children = ( + 550D42B91C768959006A6961 /* MessageGateway.swift */, + ); + name = Gateways; + sourceTree = ""; + }; + 550D42971C765461006A6961 /* Third-Party */ = { + isa = PBXGroup; + children = ( + 550D42B01C767CB7006A6961 /* DAKeyboardControl.h */, + 550D42B11C767CB7006A6961 /* DAKeyboardControl.m */, + 550D42B21C767CB7006A6961 /* HPGrowingTextView.h */, + 550D42B31C767CB7006A6961 /* HPGrowingTextView.m */, + 550D42B41C767CB7006A6961 /* HPTextViewInternal.h */, + 550D42B51C767CB7006A6961 /* HPTextViewInternal.m */, + ); + name = "Third-Party"; + sourceTree = ""; + }; + 550D42991C76547F006A6961 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 550D42701C765206006A6961 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 550D42601C765206006A6961 /* Whatsapp-Swift */ = { + isa = PBXNativeTarget; + buildConfigurationList = 550D42891C765206006A6961 /* Build configuration list for PBXNativeTarget "Whatsapp-Swift" */; + buildPhases = ( + 550D425D1C765206006A6961 /* Sources */, + 550D425E1C765206006A6961 /* Frameworks */, + 550D425F1C765206006A6961 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Whatsapp-Swift"; + productName = "Whatsapp-Swift"; + productReference = 550D42611C765206006A6961 /* Whatsapp-Swift.app */; + productType = "com.apple.product-type.application"; + }; + 550D42741C765206006A6961 /* Whatsapp-SwiftTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 550D428C1C765206006A6961 /* Build configuration list for PBXNativeTarget "Whatsapp-SwiftTests" */; + buildPhases = ( + 550D42711C765206006A6961 /* Sources */, + 550D42721C765206006A6961 /* Frameworks */, + 550D42731C765206006A6961 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 550D42771C765206006A6961 /* PBXTargetDependency */, + ); + name = "Whatsapp-SwiftTests"; + productName = "Whatsapp-SwiftTests"; + productReference = 550D42751C765206006A6961 /* Whatsapp-SwiftTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 550D427F1C765206006A6961 /* Whatsapp-SwiftUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 550D428F1C765206006A6961 /* Build configuration list for PBXNativeTarget "Whatsapp-SwiftUITests" */; + buildPhases = ( + 550D427C1C765206006A6961 /* Sources */, + 550D427D1C765206006A6961 /* Frameworks */, + 550D427E1C765206006A6961 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 550D42821C765206006A6961 /* PBXTargetDependency */, + ); + name = "Whatsapp-SwiftUITests"; + productName = "Whatsapp-SwiftUITests"; + productReference = 550D42801C765206006A6961 /* Whatsapp-SwiftUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 550D42591C765206006A6961 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = "Breno Lima"; + TargetAttributes = { + 550D42601C765206006A6961 = { + CreatedOnToolsVersion = 7.2.1; + }; + 550D42741C765206006A6961 = { + CreatedOnToolsVersion = 7.2.1; + TestTargetID = 550D42601C765206006A6961; + }; + 550D427F1C765206006A6961 = { + CreatedOnToolsVersion = 7.2.1; + TestTargetID = 550D42601C765206006A6961; + }; + }; + }; + buildConfigurationList = 550D425C1C765206006A6961 /* Build configuration list for PBXProject "Whatsapp-Swift" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 550D42581C765206006A6961; + productRefGroup = 550D42621C765206006A6961 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 550D42601C765206006A6961 /* Whatsapp-Swift */, + 550D42741C765206006A6961 /* Whatsapp-SwiftTests */, + 550D427F1C765206006A6961 /* Whatsapp-SwiftUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 550D425F1C765206006A6961 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 550D42BE1C76A4BA006A6961 /* Images.xcassets in Resources */, + 550D42C01C76A841006A6961 /* LaunchScreen.storyboard in Resources */, + 550D426A1C765206006A6961 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 550D42731C765206006A6961 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 550D427E1C765206006A6961 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 550D425D1C765206006A6961 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 550D42651C765206006A6961 /* AppDelegate.swift in Sources */, + 550D42B61C767CB7006A6961 /* DAKeyboardControl.m in Sources */, + 550D42A91C7664D1006A6961 /* ChatCell.swift in Sources */, + 550D429C1C765514006A6961 /* Chat.swift in Sources */, + 550D42A21C765904006A6961 /* Contact.swift in Sources */, + 550D42B71C767CB7006A6961 /* HPGrowingTextView.m in Sources */, + 550D42B81C767CB7006A6961 /* HPTextViewInternal.m in Sources */, + 550D42A41C76590C006A6961 /* Message.swift in Sources */, + 550D429D1C765514006A6961 /* ChatController.swift in Sources */, + 550D42AE1C7673F0006A6961 /* TableArray.swift in Sources */, + 550D42A61C765FB3006A6961 /* LocalStorage.swift in Sources */, + 550D42A01C7658BC006A6961 /* MessageController.swift in Sources */, + 550D42AD1C7673F0006A6961 /* Inputbar.swift in Sources */, + 550D42AA1C7664D1006A6961 /* MessageCell.swift in Sources */, + 550D42BA1C768959006A6961 /* MessageGateway.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 550D42711C765206006A6961 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 550D427A1C765206006A6961 /* Whatsapp_SwiftTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 550D427C1C765206006A6961 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 550D42851C765206006A6961 /* Whatsapp_SwiftUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 550D42771C765206006A6961 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 550D42601C765206006A6961 /* Whatsapp-Swift */; + targetProxy = 550D42761C765206006A6961 /* PBXContainerItemProxy */; + }; + 550D42821C765206006A6961 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 550D42601C765206006A6961 /* Whatsapp-Swift */; + targetProxy = 550D42811C765206006A6961 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 550D42681C765206006A6961 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 550D42691C765206006A6961 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 550D42871C765206006A6961 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 550D42881C765206006A6961 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 550D428A1C765206006A6961 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets"; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = "Whatsapp-Swift/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hummingbird.Whatsapp-Swift"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Whatsapp-Swift/Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 550D428B1C765206006A6961 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets"; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = "Whatsapp-Swift/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hummingbird.Whatsapp-Swift"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Whatsapp-Swift/Bridging-Header.h"; + }; + name = Release; + }; + 550D428D1C765206006A6961 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = "Whatsapp-SwiftTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hummingbird.Whatsapp-SwiftTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Whatsapp-Swift.app/Whatsapp-Swift"; + }; + name = Debug; + }; + 550D428E1C765206006A6961 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = "Whatsapp-SwiftTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hummingbird.Whatsapp-SwiftTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Whatsapp-Swift.app/Whatsapp-Swift"; + }; + name = Release; + }; + 550D42901C765206006A6961 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = "Whatsapp-SwiftUITests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hummingbird.Whatsapp-SwiftUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_TARGET_NAME = "Whatsapp-Swift"; + USES_XCTRUNNER = YES; + }; + name = Debug; + }; + 550D42911C765206006A6961 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = "Whatsapp-SwiftUITests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.hummingbird.Whatsapp-SwiftUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_TARGET_NAME = "Whatsapp-Swift"; + USES_XCTRUNNER = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 550D425C1C765206006A6961 /* Build configuration list for PBXProject "Whatsapp-Swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 550D42871C765206006A6961 /* Debug */, + 550D42881C765206006A6961 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 550D42891C765206006A6961 /* Build configuration list for PBXNativeTarget "Whatsapp-Swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 550D428A1C765206006A6961 /* Debug */, + 550D428B1C765206006A6961 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 550D428C1C765206006A6961 /* Build configuration list for PBXNativeTarget "Whatsapp-SwiftTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 550D428D1C765206006A6961 /* Debug */, + 550D428E1C765206006A6961 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 550D428F1C765206006A6961 /* Build configuration list for PBXNativeTarget "Whatsapp-SwiftUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 550D42901C765206006A6961 /* Debug */, + 550D42911C765206006A6961 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 550D42591C765206006A6961 /* Project object */; +} diff --git a/Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..6858205 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Whatsapp-Swift/Whatsapp-Swift/AppDelegate.swift b/Whatsapp-Swift/Whatsapp-Swift/AppDelegate.swift new file mode 100644 index 0000000..b5ee153 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/AppDelegate.swift @@ -0,0 +1,38 @@ +// +// AppDelegate.swift +// Whatsapp-Swift +// +// Created by Breno Lima on 2/18/16. +// Copyright © 2016 Breno Lima. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + return true + } + + func applicationWillResignActive(application: UIApplication) { + } + + func applicationDidEnterBackground(application: UIApplication) { + } + + func applicationWillEnterForeground(application: UIApplication) { + } + + func applicationDidBecomeActive(application: UIApplication) { + } + + func applicationWillTerminate(application: UIApplication) { + } + + +} + diff --git a/Whatsapp-Swift/Whatsapp-Swift/Base.lproj/Main.storyboard b/Whatsapp-Swift/Whatsapp-Swift/Base.lproj/Main.storyboard new file mode 100644 index 0000000..e296e73 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Base.lproj/Main.storyboard @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Whatsapp-Swift/Whatsapp-Swift/Bridging-Header.h b/Whatsapp-Swift/Whatsapp-Swift/Bridging-Header.h new file mode 100644 index 0000000..c8c1ab8 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Bridging-Header.h @@ -0,0 +1,3 @@ +#import "DAKeyboardControl.h" +#import "HPGrowingTextView.h" +#import "HPTextViewInternal.h" \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Chat.swift b/Whatsapp-Swift/Whatsapp-Swift/Chat.swift new file mode 100644 index 0000000..f97e0f3 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Chat.swift @@ -0,0 +1,35 @@ +// +// Chat.swift +// Whatsapp +// +// Created by Rafael Castro on 7/24/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit +import Foundation + +class Chat { + var contact:Contact! + var numberOfUnreadMessages:Int = 0 + + var lastMessage:Message! { + willSet (val) { + if self.lastMessage != nil { + if self.lastMessage.date.earlierDate(val.date) != self.lastMessage.date { + self.lastMessage = val + } + } + } + } + + var identifier:String { + get { + return self.contact.identifier + } + } + + func save() { + LocalStorage.sharedInstance.storeChat(self) + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/ChatCell.swift b/Whatsapp-Swift/Whatsapp-Swift/ChatCell.swift new file mode 100644 index 0000000..92be9df --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/ChatCell.swift @@ -0,0 +1,59 @@ +// +// ChatListCell.swift +// Whatsapp +// +// Created by Rafael Castro on 7/24/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + +class ChatCell:UITableViewCell { + @IBOutlet weak var nameLabel:UILabel! + @IBOutlet weak var messageLabel:UILabel! + @IBOutlet weak var timeLabel:UILabel! + @IBOutlet weak var picture:UIImageView! + @IBOutlet weak var notificationLabel:UILabel! + + override var imageView:UIImageView { + set { + + } + get { + return self.picture + } + } + + var chat:Chat! { + didSet { + self.nameLabel.text = chat.contact.name + self.messageLabel.text = chat.lastMessage.text + self.updateTimeLabelWithDate(chat.lastMessage.date) + self.updateUnreadMessagesIcon(chat.numberOfUnreadMessages) + } + } + + override func awakeFromNib () { + self.picture.layer.cornerRadius = self.picture.frame.size.width/2 + self.picture.layer.masksToBounds = true + self.notificationLabel.layer.cornerRadius = self.notificationLabel.frame.size.width/2 + self.notificationLabel.layer.masksToBounds = true + self.nameLabel.text = "" + self.messageLabel.text = "" + self.timeLabel.text = "" + } + + func updateTimeLabelWithDate(date:NSDate) { + let df = NSDateFormatter() + df.timeStyle = .ShortStyle + df.dateStyle = .NoStyle + df.doesRelativeDateFormatting = false + self.timeLabel.text = df.stringFromDate(date) + } + + func updateUnreadMessagesIcon(numberOfUnreadMessages:Int) + { + self.notificationLabel.hidden = numberOfUnreadMessages == 0 + self.notificationLabel.text = String(numberOfUnreadMessages) + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/ChatController.swift b/Whatsapp-Swift/Whatsapp-Swift/ChatController.swift new file mode 100644 index 0000000..7b1717a --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/ChatController.swift @@ -0,0 +1,91 @@ +// +// ChatListController.swift +// Whatsapp +// +// Created by Rafael Castro on 7/24/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + +class ChatController: UIViewController, UITableViewDataSource, UITableViewDelegate { + + @IBOutlet weak var tableView:UITableView! + var tableData:[Chat] = [] + + override func viewDidLoad() { + super.viewDidLoad() + self.setTableView() + self.setTest() + + self.title = "Chats" + } + + override func viewWillAppear(animated:Bool) { + super.viewWillAppear(animated) + self.tableView.reloadData() + } + + func setTableView() { + self.tableView.delegate = self + self.tableView.dataSource = self + self.tableView.tableFooterView = UIView(frame:CGRectMake(0, 0,self.view.frame.size.width, 10)) + self.tableView.backgroundColor = UIColor.clearColor() + } + + func setTest() { + let contact = Contact() + contact.name = "Player 1" + contact.identifier = "12345" + + let chat = Chat() + chat.contact = contact + + let texts = ["Hello!", + "This project try to implement a chat UI similar to Whatsapp app.", + "Is it close enough?"] + + var lastMessage:Message! + for text in texts { + let message = Message() + message.text = text + message.sender = .Someone + message.status = .Received + message.chatId = chat.identifier + + LocalStorage.sharedInstance.storeMessage(message) + lastMessage = message + } + + chat.numberOfUnreadMessages = texts.count + chat.lastMessage = lastMessage + + self.tableData.append(chat) + } + + // MARK - TableViewDataSource + + func tableView(tableView:UITableView, numberOfRowsInSection section:NSInteger) -> Int + { + return self.tableData.count + } + + func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell + { + let cellIdentifier = "ChatListCell" + let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! ChatCell + cell.chat = self.tableData[indexPath.row] + + return cell + } + + // MARK - UITableViewDelegate + + func tableView(tableView:UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) { + self.tableView.deselectRowAtIndexPath(indexPath, animated:true) + + let controller = self.storyboard!.instantiateViewControllerWithIdentifier("Message") as! MessageController + controller.chat = self.tableData[indexPath.row] + self.navigationController!.pushViewController(controller, animated:true) + } +} diff --git a/Whatsapp-Swift/Whatsapp-Swift/Contact.swift b/Whatsapp-Swift/Whatsapp-Swift/Contact.swift new file mode 100644 index 0000000..47455f1 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Contact.swift @@ -0,0 +1,31 @@ +// +// Contact.swift +// Whatsapp +// +// Created by Magneto on 2/12/16. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright © 2016 HummingBird. All rights reserved. +// + +import UIKit + +class Contact { + var identifier:String = "" + var name:String = "" + var imageId:String = "" + + func contactFromDictionary(dict:NSDictionary) -> Contact { + let contact = Contact() + contact.name = dict["name"] as! String + contact.identifier = dict["id"] as! String + contact.imageId = dict["imageId"] as! String + return contact + } + + func hasImage() -> Bool { + return self.imageId.characters.count > 0 + } + + func save() { + LocalStorage.sharedInstance.storeContact(self) + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.h b/Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.h new file mode 100755 index 0000000..bbc1ef5 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.h @@ -0,0 +1,60 @@ +// +// DAKeyboardControl.h +// DAKeyboardControlExample +// +// Created by Daniel Amitay on 7/14/12. +// Copyright (c) 2012 Daniel Amitay. All rights reserved. +// + +#import + +typedef void (^DAKeyboardDidMoveBlock)(CGRect keyboardFrameInView, BOOL opening, BOOL closing); + +/** DAKeyboardControl allows you to easily add keyboard awareness and scrolling + dismissal (a receding keyboard ala iMessages app) to any UIView, UIScrollView + or UITableView with only 1 line of code. DAKeyboardControl automatically + extends UIView and provides a block callback with the keyboard's current origin. + */ + +@interface UIView (DAKeyboardControl) + +/** The keyboardTriggerOffset property allows you to choose at what point the + user's finger "engages" the keyboard. + */ +@property (nonatomic) CGFloat keyboardTriggerOffset; +@property (nonatomic, readonly) BOOL keyboardWillRecede; + +/** Adding pan-to-dismiss (functionality introduced in iMessages) + @param didMoveBlock called everytime the keyboard is moved so you can update + the frames of your views + @see addKeyboardNonpanningWithActionHandler: + @see removeKeyboardControl + */ +- (void)addKeyboardPanningWithActionHandler:(DAKeyboardDidMoveBlock)didMoveBlock; +- (void)addKeyboardPanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock + constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock; + +/** Adding keyboard awareness (appearance and disappearance only) + @param didMoveBlock called everytime the keyboard is moved so you can update + the frames of your views + @see addKeyboardPanningWithActionHandler: + @see removeKeyboardControl + */ +- (void)addKeyboardNonpanningWithActionHandler:(DAKeyboardDidMoveBlock)didMoveBlock; +- (void)addKeyboardNonpanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock + constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock; + +/** Remove the keyboard action handler + @note You MUST call this method to remove the keyboard handler before the view + goes out of memory. + */ +- (void)removeKeyboardControl; + +/** Returns the keyboard frame in the view */ +- (CGRect)keyboardFrameInView; +@property (nonatomic, readonly, getter = isKeyboardOpened) BOOL keyboardOpened; + +/** Convenience method to dismiss the keyboard */ +- (void)hideKeyboard; + +@end diff --git a/Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.m b/Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.m new file mode 100755 index 0000000..c629ca4 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/DAKeyboardControl.m @@ -0,0 +1,750 @@ +// +// DAKeyboardControl.m +// DAKeyboardControlExample +// +// Created by Daniel Amitay on 7/14/12. +// Copyright (c) 2012 Daniel Amitay. All rights reserved. +// + +#import "DAKeyboardControl.h" +#import + + +static inline UIViewAnimationOptions AnimationOptionsForCurve(UIViewAnimationCurve curve) +{ + return curve << 16; +} + +static char UIViewKeyboardTriggerOffset; +static char UIViewKeyboardDidMoveFrameBasedBlock; +static char UIViewKeyboardDidMoveConstraintBasedBlock; +static char UIViewKeyboardActiveInput; +static char UIViewKeyboardActiveView; +static char UIViewKeyboardPanRecognizer; +static char UIViewPreviousKeyboardRect; +static char UIViewIsPanning; +static char UIViewKeyboardOpened; + +@interface UIView (DAKeyboardControl_Internal) + +@property (nonatomic) DAKeyboardDidMoveBlock frameBasedKeyboardDidMoveBlock; +@property (nonatomic) DAKeyboardDidMoveBlock constraintBasedKeyboardDidMoveBlock; +@property (nonatomic, strong) UIResponder *keyboardActiveInput; +@property (nonatomic, strong) UIView *keyboardActiveView; +@property (nonatomic, strong) UIPanGestureRecognizer *keyboardPanRecognizer; +@property (nonatomic) CGRect previousKeyboardRect; +@property (nonatomic, getter = isPanning) BOOL panning; +@property (nonatomic, getter = isKeyboardOpened) BOOL keyboardOpened; +@end + +@implementation UIView (DAKeyboardControl) +@dynamic keyboardTriggerOffset; + ++ (void)load +{ + // Swizzle the 'addSubview:' method to ensure that all input fields + // have a valid inputAccessoryView upon addition to the view heirarchy + SEL originalSelector = @selector(addSubview:); + SEL swizzledSelector = @selector(swizzled_addSubview:); + Method originalMethod = class_getInstanceMethod(self, originalSelector); + Method swizzledMethod = class_getInstanceMethod(self, swizzledSelector); + class_addMethod(self, + originalSelector, + class_getMethodImplementation(self, originalSelector), + method_getTypeEncoding(originalMethod)); + class_addMethod(self, + swizzledSelector, + class_getMethodImplementation(self, swizzledSelector), + method_getTypeEncoding(swizzledMethod)); + method_exchangeImplementations(originalMethod, swizzledMethod); +} + +#pragma mark - Public Methods + +- (void)addKeyboardPanningWithActionHandler:(DAKeyboardDidMoveBlock)actionHandler +{ + [self addKeyboardControl:YES frameBasedActionHandler:actionHandler constraintBasedActionHandler:0]; +} + +- (void)addKeyboardPanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock +{ + [self addKeyboardControl:YES frameBasedActionHandler:didMoveFrameBasesBlock constraintBasedActionHandler:didMoveConstraintBasesBlock]; +} + +- (void)addKeyboardNonpanningWithActionHandler:(DAKeyboardDidMoveBlock)actionHandler +{ + [self addKeyboardControl:NO frameBasedActionHandler:actionHandler constraintBasedActionHandler:0]; +} + +- (void)addKeyboardNonpanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock + constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock +{ + [self addKeyboardControl:NO frameBasedActionHandler:didMoveFrameBasesBlock constraintBasedActionHandler:didMoveConstraintBasesBlock]; +} + +- (void)addKeyboardControl:(BOOL)panning frameBasedActionHandler:(DAKeyboardDidMoveBlock)frameBasedActionHandler constraintBasedActionHandler:(DAKeyboardDidMoveBlock)constraintBasedActionHandler +{ +#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0) + if (panning && [self respondsToSelector:@selector(setKeyboardDismissMode:)]) { + [(UIScrollView *)self setKeyboardDismissMode:UIScrollViewKeyboardDismissModeInteractive]; + } else { + self.panning = panning; + } +#else + self.panning = panning; +#endif + self.frameBasedKeyboardDidMoveBlock = frameBasedActionHandler; + self.constraintBasedKeyboardDidMoveBlock = constraintBasedActionHandler; + + // Register for text input notifications + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(responderDidBecomeActive:) + name:UITextFieldTextDidBeginEditingNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(responderDidBecomeActive:) + name:UITextViewTextDidBeginEditingNotification + object:nil]; + + // Register for keyboard notifications + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(inputKeyboardWillShow:) + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(inputKeyboardDidShow) + name:UIKeyboardDidShowNotification + object:nil]; + + // For the sake of 4.X compatibility + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(inputKeyboardWillChangeFrame:) + name:@"UIKeyboardWillChangeFrameNotification" + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(inputKeyboardDidChangeFrame) + name:@"UIKeyboardDidChangeFrameNotification" + object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(inputKeyboardWillHide:) + name:UIKeyboardWillHideNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(inputKeyboardDidHide) + name:UIKeyboardDidHideNotification + object:nil]; +} + +- (CGRect)keyboardFrameInView +{ + if (self.keyboardActiveView) + { + CGRect keyboardFrameInView = [self convertRect:self.keyboardActiveView.frame + fromView:self.keyboardActiveView.superview]; + return keyboardFrameInView; + } + else + { + CGRect keyboardFrameInView = CGRectMake(0.0f, + [[UIScreen mainScreen] bounds].size.height, + 0.0f, + 0.0f); + return keyboardFrameInView; + } +} + +- (void)removeKeyboardControl +{ + // Unregister for text input notifications + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UITextFieldTextDidBeginEditingNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UITextViewTextDidBeginEditingNotification + object:nil]; + + // Unregister for keyboard notifications + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardDidShowNotification + object:nil]; + + // For the sake of 4.X compatibility + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"UIKeyboardWillChangeFrameNotification" + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"UIKeyboardDidChangeFrameNotification" + object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillHideNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardDidHideNotification + object:nil]; + + // Unregister any gesture recognizer + [self removeGestureRecognizer:self.keyboardPanRecognizer]; + + // Release a few properties + self.frameBasedKeyboardDidMoveBlock = nil; + self.keyboardActiveInput = nil; + self.keyboardActiveView = nil; + self.keyboardPanRecognizer = nil; +} + +- (void)hideKeyboard +{ + if (self.keyboardActiveView) + { + self.keyboardActiveView.hidden = YES; + self.keyboardActiveView.userInteractionEnabled = NO; + [self.keyboardActiveInput resignFirstResponder]; + } +} + +#pragma mark - Input Notifications + +- (void)responderDidBecomeActive:(NSNotification *)notification +{ + // Grab the active input, it will be used to find the keyboard view later on + self.keyboardActiveInput = notification.object; + if (!self.keyboardActiveInput.inputAccessoryView) + { + UITextField *textField = (UITextField *)self.keyboardActiveInput; + if ([textField respondsToSelector:@selector(setInputAccessoryView:)]) + { + UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero]; + nullView.backgroundColor = [UIColor clearColor]; + textField.inputAccessoryView = nullView; + } + self.keyboardActiveInput = (UIResponder *)textField; + // Force the keyboard active view reset + [self inputKeyboardDidShow]; + } +} + +#pragma mark - Keyboard Notifications + +- (void)inputKeyboardWillShow:(NSNotification *)notification +{ + CGRect keyboardEndFrameWindow; + [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardEndFrameWindow]; + + double keyboardTransitionDuration; + [[notification.userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&keyboardTransitionDuration]; + + UIViewAnimationCurve keyboardTransitionAnimationCurve; + [[notification.userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&keyboardTransitionAnimationCurve]; + + self.keyboardActiveView.hidden = NO; + self.keyboardOpened = YES; + + CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:nil]; + + BOOL constraintBasedKeyboardDidMoveBlockCalled = self.constraintBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView); + if (constraintBasedKeyboardDidMoveBlockCalled) + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, YES, NO); + + [UIView animateWithDuration:keyboardTransitionDuration + delay:0.0f + options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) | UIViewAnimationOptionBeginFromCurrentState + animations:^{ + if (constraintBasedKeyboardDidMoveBlockCalled) + [self layoutIfNeeded]; + if (self.frameBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, YES, NO); + } + completion:^(__unused BOOL finished){ + if (self.panning && !self.keyboardPanRecognizer) + { + // Register for gesture recognizer calls + self.keyboardPanRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self + action:@selector(panGestureDidChange:)]; + [self.keyboardPanRecognizer setMinimumNumberOfTouches:1]; + [self.keyboardPanRecognizer setDelegate:self]; + [self.keyboardPanRecognizer setCancelsTouchesInView:NO]; + [self addGestureRecognizer:self.keyboardPanRecognizer]; + } + }]; +} + +- (void)inputKeyboardDidShow +{ + // Grab the keyboard view + self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; + self.keyboardActiveView.hidden = NO; + + // If the active keyboard view could not be found (UITextViews...), try again + if (!self.keyboardActiveView) + { + // Find the first responder on subviews and look re-assign first responder to it + self.keyboardActiveInput = [self recursiveFindFirstResponder:self]; + self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; + self.keyboardActiveView.hidden = NO; + } +} + +- (void)inputKeyboardWillChangeFrame:(NSNotification *)notification +{ + CGRect keyboardEndFrameWindow; + [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardEndFrameWindow]; + + double keyboardTransitionDuration; + [[notification.userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&keyboardTransitionDuration]; + + UIViewAnimationCurve keyboardTransitionAnimationCurve; + [[notification.userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&keyboardTransitionAnimationCurve]; + + CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:nil]; + + BOOL constraintBasedKeyboardDidMoveBlockCalled = self.constraintBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView); + if (constraintBasedKeyboardDidMoveBlockCalled) + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + + [UIView animateWithDuration:keyboardTransitionDuration + delay:0.0f + options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) | UIViewAnimationOptionBeginFromCurrentState + animations:^{ + if (constraintBasedKeyboardDidMoveBlockCalled) + [self layoutIfNeeded]; + + if (self.frameBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + } + completion:nil]; +} + +- (void)inputKeyboardDidChangeFrame +{ + // Nothing to see here +} + +- (void)inputKeyboardWillHide:(NSNotification *)notification +{ + CGRect keyboardEndFrameWindow; + [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardEndFrameWindow]; + + double keyboardTransitionDuration; + [[notification.userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&keyboardTransitionDuration]; + + UIViewAnimationCurve keyboardTransitionAnimationCurve; + [[notification.userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&keyboardTransitionAnimationCurve]; + + CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:nil]; + + BOOL constraintBasedKeyboardDidMoveBlockCalled = self.constraintBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView); + if (constraintBasedKeyboardDidMoveBlockCalled) + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, YES); + + [UIView animateWithDuration:keyboardTransitionDuration + delay:0.0f + options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) | UIViewAnimationOptionBeginFromCurrentState + animations:^{ + if (constraintBasedKeyboardDidMoveBlockCalled) + [self layoutIfNeeded]; + + if (self.frameBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, YES); + } + completion:^(__unused BOOL finished){ + // Remove gesture recognizer when keyboard is not showing + [self removeGestureRecognizer:self.keyboardPanRecognizer]; + self.keyboardPanRecognizer = nil; + }]; +} + +- (void)inputKeyboardDidHide +{ + self.keyboardActiveView.hidden = NO; + self.keyboardActiveView.userInteractionEnabled = YES; + self.keyboardActiveView = nil; + self.keyboardActiveInput = nil; + self.keyboardOpened = NO; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(__unused NSDictionary *)change + context:(__unused void *)context +{ + if([keyPath isEqualToString:@"frame"] && object == self.keyboardActiveView) + { + CGRect keyboardEndFrameWindow = [[object valueForKeyPath:keyPath] CGRectValue]; + CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:self.keyboardActiveView.superview]; + + if (CGRectEqualToRect(keyboardEndFrameView, self.previousKeyboardRect)) return; + + if (!self.keyboardActiveView.hidden && !CGRectIsNull(keyboardEndFrameView)) + { + if (self.frameBasedKeyboardDidMoveBlock) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + if (self.constraintBasedKeyboardDidMoveBlock) + { + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + [self layoutIfNeeded]; + } + } + + self.previousKeyboardRect = keyboardEndFrameView; + } +} + +#pragma mark - Touches Management + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + if (gestureRecognizer == self.keyboardPanRecognizer || otherGestureRecognizer == self.keyboardPanRecognizer) + { + return YES; + } + else + { + return NO; + } +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch +{ + if (gestureRecognizer == self.keyboardPanRecognizer) + { + // Don't allow panning if inside the active input (unless SELF is a UITextView and the receiving view) + return (![touch.view isFirstResponder] || ([self isKindOfClass:[UITextView class]] && [self isEqual:touch.view])); + } + else + { + return YES; + } +} + +- (void)panGestureDidChange:(UIPanGestureRecognizer *)gesture +{ + if(!self.keyboardActiveView || !self.keyboardActiveInput || self.keyboardActiveView.hidden) + { + self.keyboardActiveInput = [self recursiveFindFirstResponder:self]; + self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; + self.keyboardActiveView.hidden = NO; + } + else + { + self.keyboardActiveView.hidden = NO; + } + + CGFloat keyboardViewHeight = self.keyboardActiveView.bounds.size.height; + CGFloat keyboardWindowHeight = self.keyboardActiveView.superview.bounds.size.height; + CGPoint touchLocationInKeyboardWindow = [gesture locationInView:self.keyboardActiveView.superview]; + + // If touch is inside trigger offset, then disable keyboard input + if (touchLocationInKeyboardWindow.y > keyboardWindowHeight - keyboardViewHeight - self.keyboardTriggerOffset) + { + self.keyboardActiveView.userInteractionEnabled = NO; + } + else + { + self.keyboardActiveView.userInteractionEnabled = YES; + } + + switch (gesture.state) + { + case UIGestureRecognizerStateBegan: + { + // For the duration of this gesture, do not recognize more touches than + // it started with + gesture.maximumNumberOfTouches = gesture.numberOfTouches; + } + break; + case UIGestureRecognizerStateChanged: + { + CGRect newKeyboardViewFrame = self.keyboardActiveView.frame; + newKeyboardViewFrame.origin.y = touchLocationInKeyboardWindow.y + self.keyboardTriggerOffset; + // Bound the keyboard to the bottom of the screen + newKeyboardViewFrame.origin.y = MIN(newKeyboardViewFrame.origin.y, keyboardWindowHeight); + newKeyboardViewFrame.origin.y = MAX(newKeyboardViewFrame.origin.y, keyboardWindowHeight - keyboardViewHeight); + + // Only update if the frame has actually changed + if (newKeyboardViewFrame.origin.y != self.keyboardActiveView.frame.origin.y) + { + [UIView animateWithDuration:0.0f + delay:0.0f + options:UIViewAnimationOptionTransitionNone | UIViewAnimationOptionBeginFromCurrentState + animations:^{ + [self.keyboardActiveView setFrame:newKeyboardViewFrame]; + /* Unnecessary now, due to KVO on self.keyboardActiveView + CGRect newKeyboardViewFrameInView = [self convertRect:newKeyboardViewFrame + fromView:self.keyboardActiveView.window]; + if (self.frameBasedKeyboardDidMoveBlock) + self.frameBasedKeyboardDidMoveBlock(newKeyboardViewFrameInView); + */ + } + completion:nil]; + } + } + break; + case UIGestureRecognizerStateEnded: + case UIGestureRecognizerStateCancelled: + { + CGFloat thresholdHeight = keyboardWindowHeight - keyboardViewHeight - self.keyboardTriggerOffset + 44.0f; + CGPoint velocity = [gesture velocityInView:self.keyboardActiveView]; + BOOL shouldRecede; + + if (touchLocationInKeyboardWindow.y < thresholdHeight || velocity.y < 0) + shouldRecede = NO; + else + shouldRecede = YES; + + // If the keyboard has only been pushed down 44 pixels or has been + // panned upwards let it pop back up; otherwise, let it drop down + CGRect newKeyboardViewFrame = self.keyboardActiveView.frame; + newKeyboardViewFrame.origin.y = (!shouldRecede ? keyboardWindowHeight - keyboardViewHeight : keyboardWindowHeight); + + [UIView animateWithDuration:0.25f + delay:0.0f + options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState + animations:^{ + [self.keyboardActiveView setFrame:newKeyboardViewFrame]; + /* Unnecessary now, due to KVO on self.keyboardActiveView + CGRect newKeyboardViewFrameInView = [self convertRect:newKeyboardViewFrame + fromView:self.keyboardActiveView.window]; + if (self.frameBasedKeyboardDidMoveBlock) + self.frameBasedKeyboardDidMoveBlock(newKeyboardViewFrameInView); + */ + } + completion:^(__unused BOOL finished){ + [[self keyboardActiveView] setUserInteractionEnabled:!shouldRecede]; + if (shouldRecede) + { + [self hideKeyboard]; + } + }]; + + // Set the max number of touches back to the default + gesture.maximumNumberOfTouches = NSUIntegerMax; + } + break; + default: + break; + } +} + +#pragma mark - Internal Methods + +- (UIView *)recursiveFindFirstResponder:(UIView *)view +{ + if ([view isFirstResponder]) + { + return view; + } + UIView *found = nil; + for (UIView *v in view.subviews) + { + found = [self recursiveFindFirstResponder:v]; + if (found) + { + break; + } + } + return found; +} + +- (void)swizzled_addSubview:(UIView *)subview +{ + if (!subview.inputAccessoryView) + { + if ([subview isKindOfClass:[UITextField class]]) + { + UITextField *textField = (UITextField *)subview; + if ([textField respondsToSelector:@selector(setInputAccessoryView:)]) + { + UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero]; + nullView.backgroundColor = [UIColor clearColor]; + textField.inputAccessoryView = nullView; + } + } + else if ([subview isKindOfClass:[UITextView class]]) { + UITextView *textView = (UITextView *)subview; + if ([textView respondsToSelector:@selector(setInputAccessoryView:)] && [textView respondsToSelector:@selector(isEditable)] && textView.isEditable) + { + UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero]; + nullView.backgroundColor = [UIColor clearColor]; + textView.inputAccessoryView = nullView; + } + } + } + [self swizzled_addSubview:subview]; +} + +#pragma mark - Property Methods + +-(CGRect)previousKeyboardRect { + id previousRectValue = objc_getAssociatedObject(self, &UIViewPreviousKeyboardRect); + if (previousRectValue) + return [previousRectValue CGRectValue]; + + return CGRectZero; +} + +-(void)setPreviousKeyboardRect:(CGRect)previousKeyboardRect { + [self willChangeValueForKey:@"previousKeyboardRect"]; + objc_setAssociatedObject(self, + &UIViewPreviousKeyboardRect, + [NSValue valueWithCGRect:previousKeyboardRect], + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self didChangeValueForKey:@"previousKeyboardRect"]; +} + +- (DAKeyboardDidMoveBlock)frameBasedKeyboardDidMoveBlock +{ + return objc_getAssociatedObject(self, + &UIViewKeyboardDidMoveFrameBasedBlock); +} + +- (void)setFrameBasedKeyboardDidMoveBlock:(DAKeyboardDidMoveBlock)frameBasedKeyboardDidMoveBlock +{ + [self willChangeValueForKey:@"frameBasedKeyboardDidMoveBlock"]; + objc_setAssociatedObject(self, + &UIViewKeyboardDidMoveFrameBasedBlock, + frameBasedKeyboardDidMoveBlock, + OBJC_ASSOCIATION_COPY); + [self didChangeValueForKey:@"frameBasedKeyboardDidMoveBlock"]; +} + +- (DAKeyboardDidMoveBlock)constraintBasedKeyboardDidMoveBlock +{ + return objc_getAssociatedObject(self, + &UIViewKeyboardDidMoveConstraintBasedBlock); +} + +- (void)setConstraintBasedKeyboardDidMoveBlock:(DAKeyboardDidMoveBlock)constraintBasedKeyboardDidMoveBlock +{ + [self willChangeValueForKey:@"constraintBasedKeyboardDidMoveBlock"]; + objc_setAssociatedObject(self, + &UIViewKeyboardDidMoveConstraintBasedBlock, + constraintBasedKeyboardDidMoveBlock, + OBJC_ASSOCIATION_COPY); + [self didChangeValueForKey:@"constraintBasedKeyboardDidMoveBlock"]; +} + +- (CGFloat)keyboardTriggerOffset +{ + NSNumber *keyboardTriggerOffsetNumber = objc_getAssociatedObject(self, + &UIViewKeyboardTriggerOffset); + return [keyboardTriggerOffsetNumber floatValue]; +} + +- (void)setKeyboardTriggerOffset:(CGFloat)keyboardTriggerOffset +{ + [self willChangeValueForKey:@"keyboardTriggerOffset"]; + objc_setAssociatedObject(self, + &UIViewKeyboardTriggerOffset, + [NSNumber numberWithFloat:keyboardTriggerOffset], + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self didChangeValueForKey:@"keyboardTriggerOffset"]; +} + +- (BOOL)isPanning +{ + NSNumber *isPanningNumber = objc_getAssociatedObject(self, + &UIViewIsPanning); + return [isPanningNumber boolValue]; +} + +- (void)setPanning:(BOOL)panning +{ + [self willChangeValueForKey:@"panning"]; + objc_setAssociatedObject(self, + &UIViewIsPanning, + @(panning), + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self didChangeValueForKey:@"panning"]; +} + +- (UIResponder *)keyboardActiveInput +{ + return objc_getAssociatedObject(self, + &UIViewKeyboardActiveInput); +} + +- (void)setKeyboardActiveInput:(UIResponder *)keyboardActiveInput +{ + [self willChangeValueForKey:@"keyboardActiveInput"]; + objc_setAssociatedObject(self, + &UIViewKeyboardActiveInput, + keyboardActiveInput, + OBJC_ASSOCIATION_RETAIN); + [self didChangeValueForKey:@"keyboardActiveInput"]; +} + +- (UIView *)keyboardActiveView +{ + return objc_getAssociatedObject(self, + &UIViewKeyboardActiveView); +} + +- (void)setKeyboardActiveView:(UIView *)keyboardActiveView +{ + [self willChangeValueForKey:@"keyboardActiveView"]; + [self.keyboardActiveView removeObserver:self + forKeyPath:@"frame"]; + if (keyboardActiveView) + { + [keyboardActiveView addObserver:self + forKeyPath:@"frame" + options:0 + context:NULL]; + } + objc_setAssociatedObject(self, + &UIViewKeyboardActiveView, + keyboardActiveView, + OBJC_ASSOCIATION_RETAIN); + [self didChangeValueForKey:@"keyboardActiveView"]; +} + +- (UIPanGestureRecognizer *)keyboardPanRecognizer +{ + return objc_getAssociatedObject(self, + &UIViewKeyboardPanRecognizer); +} + +- (void)setKeyboardPanRecognizer:(UIPanGestureRecognizer *)keyboardPanRecognizer +{ + [self willChangeValueForKey:@"keyboardPanRecognizer"]; + objc_setAssociatedObject(self, + &UIViewKeyboardPanRecognizer, + keyboardPanRecognizer, + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self didChangeValueForKey:@"keyboardPanRecognizer"]; +} + +- (BOOL)isKeyboardOpened +{ + return [objc_getAssociatedObject(self, + &UIViewKeyboardOpened) boolValue]; +} + +- (void)setKeyboardOpened:(BOOL)keyboardOpened +{ + [self willChangeValueForKey:@"keyboardOpened"]; + objc_setAssociatedObject(self, + &UIViewKeyboardOpened, + @(keyboardOpened), + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self didChangeValueForKey:@"keyboardOpened"]; +} + +- (BOOL)keyboardWillRecede +{ + CGFloat keyboardViewHeight = self.keyboardActiveView.bounds.size.height; + CGFloat keyboardWindowHeight = self.keyboardActiveView.superview.bounds.size.height; + CGPoint touchLocationInKeyboardWindow = [self.keyboardPanRecognizer locationInView:self.keyboardActiveView.superview]; + + CGFloat thresholdHeight = keyboardWindowHeight - keyboardViewHeight - self.keyboardTriggerOffset + 44.0f; + CGPoint velocity = [self.keyboardPanRecognizer velocityInView:self.keyboardActiveView]; + + return touchLocationInKeyboardWindow.y >= thresholdHeight && velocity.y >= 0; +} + +@end \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.h b/Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.h new file mode 100755 index 0000000..8b343c5 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.h @@ -0,0 +1,126 @@ +// +// HPTextView.h +// +// Created by Hans Pinckaers on 29-06-10. +// +// MIT License +// +// Copyright (c) 2011 Hans Pinckaers +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#if __IPHONE_OS_VERSION_MAX_ALLOWED < 60000 + // UITextAlignment is deprecated in iOS 6.0+, use NSTextAlignment instead. + // Reference: https://developer.apple.com/library/ios/documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html + #define NSTextAlignment UITextAlignment +#endif + +@class HPGrowingTextView; +@class HPTextViewInternal; + +@protocol HPGrowingTextViewDelegate + +@optional +- (BOOL)growingTextViewShouldBeginEditing:(HPGrowingTextView *)growingTextView; +- (BOOL)growingTextViewShouldEndEditing:(HPGrowingTextView *)growingTextView; + +- (void)growingTextViewDidBeginEditing:(HPGrowingTextView *)growingTextView; +- (void)growingTextViewDidEndEditing:(HPGrowingTextView *)growingTextView; + +- (BOOL)growingTextView:(HPGrowingTextView *)growingTextView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; +- (void)growingTextViewDidChange:(HPGrowingTextView *)growingTextView; + +- (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height; +- (void)growingTextView:(HPGrowingTextView *)growingTextView didChangeHeight:(float)height; + +- (void)growingTextViewDidChangeSelection:(HPGrowingTextView *)growingTextView; +- (BOOL)growingTextViewShouldReturn:(HPGrowingTextView *)growingTextView; +@end + +@interface HPGrowingTextView : UIView { + HPTextViewInternal *internalTextView; + + int minHeight; + int maxHeight; + + //class properties + int maxNumberOfLines; + int minNumberOfLines; + + BOOL animateHeightChange; + NSTimeInterval animationDuration; + + //uitextview properties + NSObject *__unsafe_unretained delegate; + NSTextAlignment textAlignment; + NSRange selectedRange; + BOOL editable; + UIDataDetectorTypes dataDetectorTypes; + UIReturnKeyType returnKeyType; + UIKeyboardType keyboardType; + + UIEdgeInsets contentInset; +} + +//real class properties +@property int maxNumberOfLines; +@property int minNumberOfLines; +@property (nonatomic) int maxHeight; +@property (nonatomic) int minHeight; +@property BOOL animateHeightChange; +@property NSTimeInterval animationDuration; +@property (nonatomic, strong) NSString *placeholder; +@property (nonatomic, strong) UIColor *placeholderColor; +@property (nonatomic, strong) UITextView *internalTextView; + + +//uitextview properties +@property(unsafe_unretained) NSObject *delegate; +@property(nonatomic,strong) NSString *text; +@property(nonatomic,strong) UIFont *font; +@property(nonatomic,strong) UIColor *textColor; +@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft +@property(nonatomic) NSRange selectedRange; // only ranges of length 0 are supported +@property(nonatomic,getter=isEditable) BOOL editable; +@property(nonatomic) UIDataDetectorTypes dataDetectorTypes __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0); +@property (nonatomic) UIReturnKeyType returnKeyType; +@property (nonatomic) UIKeyboardType keyboardType; +@property (assign) UIEdgeInsets contentInset; +@property (nonatomic) BOOL isScrollable; +@property(nonatomic) BOOL enablesReturnKeyAutomatically; + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (id)initWithFrame:(CGRect)frame textContainer:(NSTextContainer *)textContainer; +#endif + +//uitextview methods +//need others? use .internalTextView +- (BOOL)becomeFirstResponder; +- (BOOL)resignFirstResponder; +- (BOOL)isFirstResponder; + +- (BOOL)hasText; +- (void)scrollRangeToVisible:(NSRange)range; + +// call to force a height change (e.g. after you change max/min lines) +- (void)refreshHeight; + +@end diff --git a/Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.m b/Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.m new file mode 100755 index 0000000..9871c6f --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/HPGrowingTextView.m @@ -0,0 +1,666 @@ +// +// HPTextView.m +// +// Created by Hans Pinckaers on 29-06-10. +// +// MIT License +// +// Copyright (c) 2011 Hans Pinckaers +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "HPGrowingTextView.h" +#import "HPTextViewInternal.h" + +@interface HPGrowingTextView(private) +-(void)commonInitialiser; +-(void)resizeTextView:(NSInteger)newSizeH; +-(void)growDidStop; +@end + +@implementation HPGrowingTextView +@synthesize internalTextView; +@synthesize delegate; +@synthesize maxHeight; +@synthesize minHeight; +@synthesize font; +@synthesize textColor; +@synthesize textAlignment; +@synthesize selectedRange; +@synthesize editable; +@synthesize dataDetectorTypes; +@synthesize animateHeightChange; +@synthesize animationDuration; +@synthesize returnKeyType; +@dynamic placeholder; +@dynamic placeholderColor; + +// having initwithcoder allows us to use HPGrowingTextView in a Nib. -- aob, 9/2011 +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if ((self = [super initWithCoder:aDecoder])) { + [self commonInitialiser]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + if ((self = [super initWithFrame:frame])) { + [self commonInitialiser]; + } + return self; +} + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (id)initWithFrame:(CGRect)frame textContainer:(NSTextContainer *)textContainer { + if ((self = [super initWithFrame:frame])) { + [self commonInitialiser:textContainer]; + } + return self; +} + +-(void)commonInitialiser { + [self commonInitialiser:nil]; +} + +-(void)commonInitialiser:(NSTextContainer *)textContainer +#else +-(void)commonInitialiser +#endif +{ + // Initialization code + CGRect r = self.frame; + r.origin.y = 0; + r.origin.x = 0; +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 + internalTextView = [[HPTextViewInternal alloc] initWithFrame:r textContainer:textContainer]; +#else + internalTextView = [[HPTextViewInternal alloc] initWithFrame:r]; +#endif + internalTextView.delegate = self; + internalTextView.scrollEnabled = NO; + internalTextView.font = [UIFont fontWithName:@"Helvetica" size:13]; + internalTextView.contentInset = UIEdgeInsetsZero; + internalTextView.showsHorizontalScrollIndicator = NO; + internalTextView.text = @"-"; + internalTextView.contentMode = UIViewContentModeRedraw; + [self addSubview:internalTextView]; + + minHeight = internalTextView.frame.size.height; + minNumberOfLines = 1; + + animateHeightChange = YES; + animationDuration = 0.1f; + + internalTextView.text = @""; + + [self setMaxNumberOfLines:3]; + + [self setPlaceholderColor:[UIColor lightGrayColor]]; + internalTextView.displayPlaceHolder = YES; +} + +-(CGSize)sizeThatFits:(CGSize)size +{ + if (self.text.length == 0) { + size.height = minHeight; + } + return size; +} + +-(void)layoutSubviews +{ + [super layoutSubviews]; + + CGRect r = self.bounds; + r.origin.y = 0; + r.origin.x = contentInset.left; + r.size.width -= contentInset.left + contentInset.right; + + internalTextView.frame = r; +} + +-(void)setContentInset:(UIEdgeInsets)inset +{ + contentInset = inset; + + CGRect r = self.frame; + r.origin.y = inset.top - inset.bottom; + r.origin.x = inset.left; + r.size.width -= inset.left + inset.right; + + internalTextView.frame = r; + + [self setMaxNumberOfLines:maxNumberOfLines]; + [self setMinNumberOfLines:minNumberOfLines]; +} + +-(UIEdgeInsets)contentInset +{ + return contentInset; +} + +-(void)setMaxNumberOfLines:(int)n +{ + if(n == 0 && maxHeight > 0) return; // the user specified a maxHeight themselves. + + // Use internalTextView for height calculations, thanks to Gwynne + NSString *saveText = internalTextView.text, *newText = @"-"; + + internalTextView.delegate = nil; + internalTextView.hidden = YES; + + for (int i = 1; i < n; ++i) + newText = [newText stringByAppendingString:@"\n|W|"]; + + internalTextView.text = newText; + + maxHeight = [self measureHeight]; + + internalTextView.text = saveText; + internalTextView.hidden = NO; + internalTextView.delegate = self; + + [self sizeToFit]; + + maxNumberOfLines = n; +} + +-(int)maxNumberOfLines +{ + return maxNumberOfLines; +} + +- (void)setMaxHeight:(int)height +{ + maxHeight = height; + maxNumberOfLines = 0; +} + +-(void)setMinNumberOfLines:(int)m +{ + if(m == 0 && minHeight > 0) return; // the user specified a minHeight themselves. + + // Use internalTextView for height calculations, thanks to Gwynne + NSString *saveText = internalTextView.text, *newText = @"-"; + + internalTextView.delegate = nil; + internalTextView.hidden = YES; + + for (int i = 1; i < m; ++i) + newText = [newText stringByAppendingString:@"\n|W|"]; + + internalTextView.text = newText; + + minHeight = [self measureHeight]; + + internalTextView.text = saveText; + internalTextView.hidden = NO; + internalTextView.delegate = self; + + [self sizeToFit]; + + minNumberOfLines = m; +} + +-(int)minNumberOfLines +{ + return minNumberOfLines; +} + +- (void)setMinHeight:(int)height +{ + minHeight = height; + minNumberOfLines = 0; +} + +- (NSString *)placeholder +{ + return internalTextView.placeholder; +} + +- (void)setPlaceholder:(NSString *)placeholder +{ + [internalTextView setPlaceholder:placeholder]; + [internalTextView setNeedsDisplay]; +} + +- (UIColor *)placeholderColor +{ + return internalTextView.placeholderColor; +} + +- (void)setPlaceholderColor:(UIColor *)placeholderColor +{ + [internalTextView setPlaceholderColor:placeholderColor]; +} + +- (void)textViewDidChange:(UITextView *)textView +{ + [self refreshHeight]; +} + +- (void)refreshHeight +{ + //size of content, so we can set the frame of self + NSInteger newSizeH = [self measureHeight]; + if (newSizeH < minHeight || !internalTextView.hasText) { + newSizeH = minHeight; //not smalles than minHeight + } + else if (maxHeight && newSizeH > maxHeight) { + newSizeH = maxHeight; // not taller than maxHeight + } + + if (internalTextView.frame.size.height != newSizeH) + { + // if our new height is greater than the maxHeight + // sets not set the height or move things + // around and enable scrolling + if (newSizeH >= maxHeight) + { + if(!internalTextView.scrollEnabled){ + internalTextView.scrollEnabled = YES; + [internalTextView flashScrollIndicators]; + } + + } else { + internalTextView.scrollEnabled = NO; + } + + // [fixed] Pasting too much text into the view failed to fire the height change, + // thanks to Gwynne + if (newSizeH <= maxHeight) + { + if(animateHeightChange) { + + if ([UIView resolveClassMethod:@selector(animateWithDuration:animations:)]) { +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000 + [UIView animateWithDuration:animationDuration + delay:0 + options:(UIViewAnimationOptionAllowUserInteraction| + UIViewAnimationOptionBeginFromCurrentState) + animations:^(void) { + [self resizeTextView:newSizeH]; + } + completion:^(BOOL finished) { + if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) { + [delegate growingTextView:self didChangeHeight:newSizeH]; + } + }]; +#endif + } else { + [UIView beginAnimations:@"" context:nil]; + [UIView setAnimationDuration:animationDuration]; + [UIView setAnimationDelegate:self]; + [UIView setAnimationDidStopSelector:@selector(growDidStop)]; + [UIView setAnimationBeginsFromCurrentState:YES]; + [self resizeTextView:newSizeH]; + [UIView commitAnimations]; + } + } else { + [self resizeTextView:newSizeH]; + // [fixed] The growingTextView:didChangeHeight: delegate method was not called at all when not animating height changes. + // thanks to Gwynne + + if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) { + [delegate growingTextView:self didChangeHeight:newSizeH]; + } + } + } + } + // Display (or not) the placeholder string + + BOOL wasDisplayingPlaceholder = internalTextView.displayPlaceHolder; + internalTextView.displayPlaceHolder = self.internalTextView.text.length == 0; + + if (wasDisplayingPlaceholder != internalTextView.displayPlaceHolder) { + [internalTextView setNeedsDisplay]; + } + + + // scroll to caret (needed on iOS7) + if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) + { + [self performSelector:@selector(resetScrollPositionForIOS7) withObject:nil afterDelay:0.1f]; + } + + // Tell the delegate that the text view changed + if ([delegate respondsToSelector:@selector(growingTextViewDidChange:)]) { + [delegate growingTextViewDidChange:self]; + } +} + +// Code from apple developer forum - @Steve Krulewitz, @Mark Marszal, @Eric Silverberg +- (CGFloat)measureHeight +{ + if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) + { + return ceilf([self.internalTextView sizeThatFits:self.internalTextView.frame.size].height); + } + else { + return self.internalTextView.contentSize.height; + } +} + +- (void)resetScrollPositionForIOS7 +{ + CGRect r = [internalTextView caretRectForPosition:internalTextView.selectedTextRange.end]; + CGFloat caretY = MAX(r.origin.y - internalTextView.frame.size.height + r.size.height + 8, 0); + if (internalTextView.contentOffset.y < caretY && r.origin.y != INFINITY) + internalTextView.contentOffset = CGPointMake(0, caretY); +} + +-(void)resizeTextView:(NSInteger)newSizeH +{ + if ([delegate respondsToSelector:@selector(growingTextView:willChangeHeight:)]) { + [delegate growingTextView:self willChangeHeight:newSizeH]; + } + + CGRect internalTextViewFrame = self.frame; + internalTextViewFrame.size.height = newSizeH; // + padding + self.frame = internalTextViewFrame; + + internalTextViewFrame.origin.y = contentInset.top - contentInset.bottom; + internalTextViewFrame.origin.x = contentInset.left; + + if(!CGRectEqualToRect(internalTextView.frame, internalTextViewFrame)) internalTextView.frame = internalTextViewFrame; +} + +- (void)growDidStop +{ + // scroll to caret (needed on iOS7) + if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) + { + [self resetScrollPositionForIOS7]; + } + + if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) { + [delegate growingTextView:self didChangeHeight:self.frame.size.height]; + } +} + +-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [internalTextView becomeFirstResponder]; +} + +- (BOOL)becomeFirstResponder +{ + [super becomeFirstResponder]; + return [self.internalTextView becomeFirstResponder]; +} + +-(BOOL)resignFirstResponder +{ + [super resignFirstResponder]; + return [internalTextView resignFirstResponder]; +} + +-(BOOL)isFirstResponder +{ + return [self.internalTextView isFirstResponder]; +} + + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark UITextView properties +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setText:(NSString *)newText +{ + internalTextView.text = newText; + + // include this line to analyze the height of the textview. + // fix from Ankit Thakur + [self performSelector:@selector(textViewDidChange:) withObject:internalTextView]; +} + +-(NSString*) text +{ + return internalTextView.text; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setFont:(UIFont *)afont +{ + internalTextView.font= afont; + + [self setMaxNumberOfLines:maxNumberOfLines]; + [self setMinNumberOfLines:minNumberOfLines]; +} + +-(UIFont *)font +{ + return internalTextView.font; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setTextColor:(UIColor *)color +{ + internalTextView.textColor = color; +} + +-(UIColor*)textColor{ + return internalTextView.textColor; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setBackgroundColor:(UIColor *)backgroundColor +{ + [super setBackgroundColor:backgroundColor]; + internalTextView.backgroundColor = backgroundColor; +} + +-(UIColor*)backgroundColor +{ + return internalTextView.backgroundColor; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setTextAlignment:(NSTextAlignment)aligment +{ + internalTextView.textAlignment = aligment; +} + +-(NSTextAlignment)textAlignment +{ + return internalTextView.textAlignment; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setSelectedRange:(NSRange)range +{ + internalTextView.selectedRange = range; +} + +-(NSRange)selectedRange +{ + return internalTextView.selectedRange; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)setIsScrollable:(BOOL)isScrollable +{ + internalTextView.scrollEnabled = isScrollable; +} + +- (BOOL)isScrollable +{ + return internalTextView.scrollEnabled; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setEditable:(BOOL)beditable +{ + internalTextView.editable = beditable; +} + +-(BOOL)isEditable +{ + return internalTextView.editable; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setReturnKeyType:(UIReturnKeyType)keyType +{ + internalTextView.returnKeyType = keyType; +} + +-(UIReturnKeyType)returnKeyType +{ + return internalTextView.returnKeyType; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)setKeyboardType:(UIKeyboardType)keyType +{ + internalTextView.keyboardType = keyType; +} + +- (UIKeyboardType)keyboardType +{ + return internalTextView.keyboardType; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)setEnablesReturnKeyAutomatically:(BOOL)enablesReturnKeyAutomatically +{ + internalTextView.enablesReturnKeyAutomatically = enablesReturnKeyAutomatically; +} + +- (BOOL)enablesReturnKeyAutomatically +{ + return internalTextView.enablesReturnKeyAutomatically; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +-(void)setDataDetectorTypes:(UIDataDetectorTypes)datadetector +{ + internalTextView.dataDetectorTypes = datadetector; +} + +-(UIDataDetectorTypes)dataDetectorTypes +{ + return internalTextView.dataDetectorTypes; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +- (BOOL)hasText{ + return [internalTextView hasText]; +} + +- (void)scrollRangeToVisible:(NSRange)range +{ + [internalTextView scrollRangeToVisible:range]; +} + +///////////////////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +#pragma mark UITextViewDelegate + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { + if ([delegate respondsToSelector:@selector(growingTextViewShouldBeginEditing:)]) { + return [delegate growingTextViewShouldBeginEditing:self]; + + } else { + return YES; + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (BOOL)textViewShouldEndEditing:(UITextView *)textView { + if ([delegate respondsToSelector:@selector(growingTextViewShouldEndEditing:)]) { + return [delegate growingTextViewShouldEndEditing:self]; + + } else { + return YES; + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)textViewDidBeginEditing:(UITextView *)textView { + if ([delegate respondsToSelector:@selector(growingTextViewDidBeginEditing:)]) { + [delegate growingTextViewDidBeginEditing:self]; + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)textViewDidEndEditing:(UITextView *)textView { + if ([delegate respondsToSelector:@selector(growingTextViewDidEndEditing:)]) { + [delegate growingTextViewDidEndEditing:self]; + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range + replacementText:(NSString *)atext { + + //weird 1 pixel bug when clicking backspace when textView is empty + if(![textView hasText] && [atext isEqualToString:@""]) return NO; + + //Added by bretdabaker: sometimes we want to handle this ourselves + if ([delegate respondsToSelector:@selector(growingTextView:shouldChangeTextInRange:replacementText:)]) + return [delegate growingTextView:self shouldChangeTextInRange:range replacementText:atext]; + + if ([atext isEqualToString:@"\n"]) { + if ([delegate respondsToSelector:@selector(growingTextViewShouldReturn:)]) { + if (![delegate performSelector:@selector(growingTextViewShouldReturn:) withObject:self]) { + return YES; + } else { + [textView resignFirstResponder]; + return NO; + } + } + } + + return YES; + + +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)textViewDidChangeSelection:(UITextView *)textView { + if ([delegate respondsToSelector:@selector(growingTextViewDidChangeSelection:)]) { + [delegate growingTextViewDidChangeSelection:self]; + } +} + + + +@end diff --git a/Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.h b/Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.h new file mode 100755 index 0000000..175f4d4 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.h @@ -0,0 +1,37 @@ +// +// HPTextViewInternal.h +// +// Created by Hans Pinckaers on 29-06-10. +// +// MIT License +// +// Copyright (c) 2011 Hans Pinckaers +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + + +@interface HPTextViewInternal : UITextView + +@property (nonatomic, strong) NSString *placeholder; +@property (nonatomic, strong) UIColor *placeholderColor; +@property (nonatomic) BOOL displayPlaceHolder; + +@end diff --git a/Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.m b/Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.m new file mode 100755 index 0000000..e007bae --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/HPTextViewInternal.m @@ -0,0 +1,127 @@ +// +// HPTextViewInternal.m +// +// Created by Hans Pinckaers on 29-06-10. +// +// MIT License +// +// Copyright (c) 2011 Hans Pinckaers +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "HPTextViewInternal.h" + + +@implementation HPTextViewInternal + +-(void)setText:(NSString *)text +{ + BOOL originalValue = self.scrollEnabled; + //If one of GrowingTextView's superviews is a scrollView, and self.scrollEnabled == NO, + //setting the text programatically will cause UIKit to search upwards until it finds a scrollView with scrollEnabled==yes + //then scroll it erratically. Setting scrollEnabled temporarily to YES prevents this. + [self setScrollEnabled:YES]; + [super setText:text]; + [self setScrollEnabled:originalValue]; +} + +- (void)setScrollable:(BOOL)isScrollable +{ + [super setScrollEnabled:isScrollable]; +} + +-(void)setContentOffset:(CGPoint)s +{ + if(self.tracking || self.decelerating){ + //initiated by user... + + UIEdgeInsets insets = self.contentInset; + insets.bottom = 0; + insets.top = 0; + self.contentInset = insets; + + } else { + + float bottomOffset = (self.contentSize.height - self.frame.size.height + self.contentInset.bottom); + if(s.y < bottomOffset && self.scrollEnabled){ + UIEdgeInsets insets = self.contentInset; + insets.bottom = 8; + insets.top = 0; + self.contentInset = insets; + } + } + + // Fix "overscrolling" bug + if (s.y > self.contentSize.height - self.frame.size.height && !self.decelerating && !self.tracking && !self.dragging) + s = CGPointMake(s.x, self.contentSize.height - self.frame.size.height); + + [super setContentOffset:s]; +} + +-(void)setContentInset:(UIEdgeInsets)s +{ + UIEdgeInsets insets = s; + + if(s.bottom>8) insets.bottom = 0; + insets.top = 0; + + [super setContentInset:insets]; +} + +-(void)setContentSize:(CGSize)contentSize +{ + // is this an iOS5 bug? Need testing! + if(self.contentSize.height > contentSize.height) + { + UIEdgeInsets insets = self.contentInset; + insets.bottom = 0; + insets.top = 0; + self.contentInset = insets; + } + + [super setContentSize:contentSize]; +} + +- (void)drawRect:(CGRect)rect +{ + [super drawRect:rect]; + if (self.displayPlaceHolder && self.placeholder && self.placeholderColor) + { + if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) + { + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.alignment = self.textAlignment; + [self.placeholder drawInRect:CGRectMake(5, 8 + self.contentInset.top, self.frame.size.width-self.contentInset.left, self.frame.size.height- self.contentInset.top) withAttributes:@{NSFontAttributeName:self.font, NSForegroundColorAttributeName:self.placeholderColor, NSParagraphStyleAttributeName:paragraphStyle}]; + } + else { + [self.placeholderColor set]; + + NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: self.font, NSFontAttributeName, nil]; + [self.placeholder drawInRect:CGRectMake(8.0f, 8.0f, self.frame.size.width - 16.0f, self.frame.size.height - 16.0f) withAttributes:dictionary]; + } + } +} + +-(void)setPlaceholder:(NSString *)placeholder +{ + _placeholder = placeholder; + [self setNeedsDisplay]; +} + +@end diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/AppIcon.appiconset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Brand Assets.launchimage/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Brand Assets.launchimage/Contents.json new file mode 100644 index 0000000..a0ad363 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Brand Assets.launchimage/Contents.json @@ -0,0 +1,36 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/LaunchImage.launchimage/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..fadb823 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/app default/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Contents.json new file mode 100644 index 0000000..88bb437 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "Layer 1.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "Layer 1@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Layer 1.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Layer 1.png new file mode 100644 index 0000000000000000000000000000000000000000..19e198a4eeffaf69c5e523af35aacc74311d7c44 GIT binary patch literal 93608 zcmaI7bx>Tv*DVSO!2$^u+}&kx5AF~wI0Sch8-hb{cL?qb!F34k3^2e14=#hd^YZ)d z{qB8#yziYlr%v~-z1Cj6dsp@8t~$|QROK+yiO~@d5HJIEyN`2bdLrrOGAxf>otHP<`B4ue~EAQuK zsp+SxW$tHhE@(k5E=DQhBlM5J(bB_|(#O%k$z8}tl={DTh5ohwW9Fcy{4W;|dr|8D zB}!N23#F8^n7cQpr9ZJCx8P0VEgC6=I-m{ zVd}%?cEgHFNg#5T*X7^nVS((dGZpI=TPvH2q5$hmWZX z2Nyf%e}?qmjw&ku|E`XX|Hs?iL&Ng_>iz#DcGvQCvE_RCe^PVOG2PUe;h z(xTM=c-U=iErg_HBm@8wf-;;^Qi5DuGQ0v@vfKiKQoQ`K5}XozoZSD7m3B7wbhLEx z_;0Mm|HaDwkJ$edgrm#9$kLW>wqBMNvTn|fl>aqwA>031i`4(f_rI|g|Fah9{}Ida zPYlO@ruY9f-T!U+S4014{-5Ig*ZDu?Z|U@}=H31kH?n>ZHUgp@zJj!bme0~ew^Acq zzM&N5`%1zD@!ad{TVlJib}Kt>+u7FA-ZTpUoDcf6z{_-bgc2=_RR8^B4Eg8p+fyAi zLg{-)Dj}amL{>65Ox9l1UbkM)OgJ*e*G-I#vs)ZUpo!!`U{jUFWj6u>Ku!7 z)^Al(#Gp+F6qgV&F|lmu!CY4tn5UnkoSy@>-%)q}^5O&rgR@~C&(QXEW6=G2f6ztX zzW&~&OI`--sq@NtwY<*j_+h65YVv4b5L9p?9;o)9{Ge)d`{-vYCN6&I3E3kESf_i{ zc_oi9B~94yhZfw-P2SFXZ;5)qtO9NhxDPrGZk?T-#|bym>f#D@!7=6?ey>cgtgAr} zpt^z~mgl4A=h|Nhf9wNHh{fXu?*qX18UZ3V5a7#acXlOq*(zPoCxbm^zzteOzFM>2(F%WBgV#eiLNVKn>t1bMPhYo!o?jzI?{b_mh;n%p z##Ng6-#6!cCBqy9C7AU0bk3mWra#Zz!tG0B5?`)`SZ5PV&7cT*DZx4TlEiISv3|}S zJst&@Z^jemL9r%aAmDp{5Y#HAccg#>=-F<3`MYer9P{Pkg3ob{&xGySDR<Z5_c&XmilW)k!ngYP2)Co!KLv^s zsX5Me-9_%%UjFuEv3GC3x)+=Zb@dDM&#QxOV`fYMJ3A~*NK{_pul8Ekf#W%B-52_V zzecZMtiNd>laI}#4mvgkBmfFqptD=YU|H{341RO z|?*j z*8=e#v52<^EU!OpGv1dM1b$rLClX+r@@kTep(6wG`O6&)WDp1vMS;e>`D6`8JHYsU z*(D&z;2*CP?+h>;5b%1oEP}O2S*p2l(R@=@H{Q4DvX7^dQa~=mHpNpfbl-rIjX!hc zpg(cYDcgS`M)GT0y(~vjTrD&cL#jiKSW+buST@+UH*@Fzv<`#skCvq9nCFVjyK;TZ zd4hR%QhbdIb|&*9gqO@*DB$?UTl9CGAcqwpyp;@p$TD+Fd6$R8oa>G}ZXSNX zw*1pl+=zrdnkCkB{TmZx_>$0bq~EZp)4>wF9CW|_vKK`1a^ubRyQ`Ppn@wc^i+}sw zktwuIm!r5`fJjbdiHW3ohMI%jQ`ldt`j}h!i`#}}jfHe`mU!eSxmq8dMo*nc*nC9p zf&-u1vrt%W|AK4`C=XLn|MS7pR^{}rN(zRmUzsL<7&2&&G^7MlE|Y!2zpB$IG(%9l zrcxM0{893)e~us^9Z-Y51HFbeLj_9V@#MAz6e5$52jb^_SGBD=Yc-hCrBJ+ghNx4x zfG;X&OCoVkT-5$G4U{BRndUtd>`YHn{~7CGE!)#rYo_a)jD@dX;e_E2{`PA*RCo;}gtoRMy69C%^;-S#cH&s_Mm zaMAX4{PIDxJ1D{`BFH-G8zDz{sV$k&qbp{KczH{X)S}?$ecp$yAkRq*US$Y>pVF46 zhx2{lb6d}4cEj};*W{X+mrvc++Vo}fBq{HXt61Kyjq}QSvCim7G&a=ItwdF`q9!n1 zWPHY6d=i4K^4e8a{%c%SuhW?FUMR&;!JaF~N*5)x@OfA;kkc3IAk?k>dfT=!@cALX z7UaSc&g_@ylwC7Oas(^4p)oAZ`h_~UYwO(gv0&aTlj0DNA7Oi$XEFu--l~EXF!^fJ zyb&rRv>7peY8=UFIY2ne^d!c%(3{wW@m9BDIK-j?le4VD|6Ryp)O(NCF7s;c4cJj`i`Rd5FFmHWb7UXlc zvcuffVANHCr%E6CZ!H*mVe|i#0f7i=8A@5BNgDF@s~>GiS6B!Eqb2*Z-Gg? zLz5h!|5Vw%yt4wFr<-4fKhwonM%_G%4Zm$}ibIZT2cQmwYJg>{%ei^vz&j{cg`pM)XNv2GF+`(-$`UxlQ()t&vce_I*De`^a) z6SNM8pPfRZpzk{=;=Z=_oq2v|=mObicqYdg3;Wfgy}{)Rm^A&}=Dp9DKD~D=AjscuIR4Gre9h$IHW!Luhx^_j8#Z^gZozwv;LeEjk&Oh`F_zC7^NnuT zXar5U(k>#nE}fg-dFZKZ`r!E4bKv8|Pa$M2k)I5$ou4Gv;@2c@qGo>sTZ@I)RdiJw zoELx61z26lHkPNYrF0L%VlVgC7Nu_&)O+zma3xpO@i=SiL{#$+ecEY?z- zTtC`pPC%8u$2IYj-1rfRzg|4>ks{Cx{8ZTy0C8qpNPFly5xJXk32`>UL~3hqyxiPS zi`#W7z+xLYRkQ;`B3n!?{DB|$K28;8&bNs{ldo%@dVjWf2y2_Ev0S?b&26J9Y z5f@uPNc^(f#`arIc`0*%JHCWz8plp8RJI$!)Awdut5S(ahS$ zDBlKLdLQB*VUn6M$Lt*3*N%3shnq01Q9N?*t*e&Ruuq%8P_%0}95-{fUc%I3`MPc- z#^WU*2<~~}M2NDmWZ4);b%51?aeJTK5ZD9GhCbS!7siZIC%MYgq!C&54H~ARZu@V4I+X+p9BZmkJ9xxOr zTu|06C}ULQX1enjzS4t}jzg7s#GIGj9#a{!V6kf|XU* zZtJ}1N<*W8(cD|35v98u6^--*5w zP6J&?)8eC7uli8pLu!AShvXzfZ-8G5ob%UlOyMYLA7T0oqdR|r7S#Ke20@s8taWtS z(CTeDXM3La0Ou&Q#DnD?8~Dt(UY^T%fS(X8 zPIAhjUdVp`c`9>nCmWZ?){y~3wbj8LUWF+#JHBK;OPmjG>{Pzr z_@zQI0Za9fzs>zPIQlk+NfT-}m37n`wa4frWK*s*WpGm!W!;}ce(NeMsItqLJLIp8 zH-2>1by~KkYHZ>b&;U($Q0y2t?a2)adUW(ESrY5h9|{ii6;06FXri1dKj6acIb6cZ zpO9a+kmuWmtSY-VlhE|54USuHAilErQVxg&Fwv>{milmxa_@32ehaFoymta zTl*NH`J;p`F+?f~UE`jyE`VJjQmyr3R~1NJS9g=RxQsQ??yeBq8?(knDtUi+Ln2Ej zSPvtMIy7UTvI~R!>RXq|j!L}Y?Dhs-f8Z=>E8Jq|TY5J18c*ZsV)@Z&L*1CZe}(-v z1L!{W)g`PkeZsRxr~pvx`0(Q30-B8F%IE)uYbm&Fg`{8Za&sMkgIIUqL<)L$rIN$t zSY<*nzBwnmUrw@55Bs{Y?l2y*7O zg)93tw?^P>Pnx3v4)yWwpVTNAyhI9@K25RkGO7LNOpM5v^4k5y>s)k+wCHk)TYso& z%}Dr===rrQ#D4QeWxe{0on*lF!|V&8X(g9L<}Pg`Lh?*Dxc}oP-~A4V#eVW_O7cg+ zf!r=dqIHWu2E}QFC}r(leQ(%0?3NZQdNA|9sXk$>KQDAovWA}fhP2yT&uSBO96o+( zy^J84k8iQQCKtqodGUp;$ZZfm!GiA9vXC2pFo(({s~y5KbLAIqj=R4cxEOUdjUi3h z`fiF8zsq%2RY>ECY5Im3G71I{$yCG|p{wJFrJt}oKczOhOh!3($7-eW{kF+I=yV%Y z^v>@N^$0>ov-kBc_V(?5{_(YB!}I1|2$#TFG>Q>%9r#p`5Rg(|67j0RHs)MXKe3Tmo-rL>XH|NMVz~*)D!hRt0tiQ#-iVanz zb1YIh(_f-=NA;(3EFmqk+1dqaJ%Sz=uujsba z%@K;@`mIa23>AOlJL}z6D$;7x(G~x`@1~Oj`G)8h1Df2m_$Nm*NxP;>ZP*%47c+0R zjI&^0z4cAI`1Nk1H0F%=6sddz$J;#IEr+_Sz+j!&XzWSNeL3a&A7*k2ExBf!m@ z?fcj<)G?9_sz2O7gImgvm#Fz|pES5h)3{Q9?e^CAsz4;i^jsY`gl8W;SI1L#V1^8k zI>7>KMObe4afXmtplnle`x5;;fm-~qVe4eG=W~9nFF&!4hGI6p7TZ_TD@1~M90Ted zZ!Xf=Tqn#8X4;m1n<++jdoT03v>R;-t=gH;soUj~BbT2x%xk{DxMA9CltdMKim1*XPse*M!vqgUWnKH?v@05>#X9D_Ws49gObXgt z_^jJEb~rc(_VB8_xve>TpM0OKoS#KpO^2%r<}*ExjkUS~E>0N3W^Xjc%TV8MKjuhz z4i@eYk7b>X+f4+lT<@`hQ_iB7v1)rP*Ka4Kt%>@ERAp{VvUK{pqMgWs{| z??ze1tu*{Q)EJi)A|s5Z%t_`x_}z8`OOr^+NW>@U&&zrZPo^M}*;GJpCLbK92B~Cb zoK=|Mx|{s&{QX=k8=kYm#bcGLBpbSsJ0y)P4A4)AS3|=wWrX;{as>k`JanZ=a?L$1 z^A{u!$~w>4pRq<B){J_} zpY40Gwgfd?eTzC7I`0%aBOE-YyFECnrHMaIbbXaoKC)+SKD3I@=L=XjzR>Zee4Fsp z2uxccl(^(O%jDxM^s15HcPoRt>$M$A1CMYaP7?%>p=P~|PQzs&IHMHL%JlU%|68Vj z*4AT3C3PuUce%%xX4o$?ODYw9L~MW7qJR5;XSKnD0}W^AQ_Vcr9%_H)6?6F-EbeCm zT1`_OZ18{!O9;uyVA~BJkpEI_S(}YTbhcXuury``{oXk9;jbbtZ?nk1aVow>a^ME*-F=#Vf2J zA|(^{%SkV&ERhU;8P;C&WI!1RBv##LQK!K#=1@c#6!bLqZeAgk68`>>wxB_6Zyasn zg3e)e=}!z-7bcZ%g=jjh%DQ*n*tOG-bIV-WbA<3pg>q-X;~Z_l1%5@>FwX-l1riyw z52hx}5-j0bS9l)BBTyIRuz8f$r(VZg#~O*itZov10e|GgWHo@x$`QecRZ`G!XgqRx z=vYENs2Ly-m+J3Wlg{b=;7|v7%(*NMPM*n)0@MFPiSHM(e(2ZG&p&o29|03)Cp<8zy z`kw#rOd!~|9+6BN?}w0hZO&vw6SWmMNYD$paRc^muj(#x(1NK*N3S~ zc`J!8ZVXa%HX1zwK$zK`xrLG>&s6XNXCe#%C&S4cfRGSAk=|ne`8$wE!25IEGNuH3 zw(X^wyOfJJtM0~!_G~g+Q+v#@TYj3}q0CqA(mS%iz`A&}{eA%XE4KNS~kj3d9 z%~EnCwd|CZdQ*J_8u-9dcB!8)5VX3Dc+-pQXieR${=U4b7Q;O-ZqZTu+*|bgFCT&C z#F(I_jN*7mc}*9!Atc*H zBgvPnyMr~(-AE+gLkhs^K6L7jG5iQpIKOi~Z6)@Gk$vSNP+C6uCis{3W;|k+er)JU zD0uw&4d9W*A816f08O4v1VWZ%GEkFeG|ePJvij;g*!+U^Ndfe1hpo*-7GHQyw&T&< z19;ni=}YOpJ#@c3d~+jqIttLlN>VpE)NvRp8`IEYA@ z4}5kt*Xp~>eN)Lh#%R*^GU~F{sxf<2QUER6^`pA8xLp}yjeBH*ykX|_z4}DGQHgaB zg=^i&e&4TXU=`(&`muc$iIULaexq4U3s!69ufOeCM7{Cez^&42`HlZPJ;ir3E-P0t^df~9-7nyICs_Ed8*jal1JHf|_E&z`8T^j4-bn_)xxz`75O zZknYK^>$3rhhZ@AU`EChI-%OAuZV>$Dgrn9x~Hg4{)m^FwE5OrI}z-Z%X~e`evA;9^Jqk7?cKr-|5=BW z6j(Uq_eqaR=&Gl{_K#a>?_Orfz71PvX|BCiK-+EvfZ1G$L2`I30gWZqY_#;%xHpQe zX{y1$%7^^uwM75dAVv0YgAs21qm|ykW;h#ZB_H>4C+4-KA5$aki(*+hsm3^Jaue&v zj9EErtj-!WDBVB~W=yJ~?X%pw2Tv=Yc(6cfuYqZ*A#X(Rr z&}g}a5unbvnUgzY1{t5Zb=ewWY{2_r`aZf*)oLMP`XTw>+B^zx{q9~xj*wla&wZJ)rs9~q~)k@71`Ii$bQ8++D94)QeRDpH43*OqL2 zRJofOy}yhzvlQ>@K0MoKi-~uMgEjHN z5pG=LffYwX^S6!pmiY_Cb)xA9lv%lW((w+wd6DlJXWE81xgRIE7=kpm7;@)C1#Ua` zZr(zBJlV)f#*XkiUwC=*Ub0CLzkU66XE-x0Lv@wUs>jMB+>$4+>mPp?(Vg5e$~(7@ zyW=RNoLOU7#aZ{4&MPImV|dzLO8$D6>#e9!!lQ<|MbOl%yhkTwh0)f*I%lGfu_+)c z#qxPR|NJmy0d>6mQK-jj9A%ja`={oqKMuBtCC4!xF0DaIpxRRFX(;v+dEd%hjP^5K zI(ZkYmrWG3PY&}S4pNJKa+)IvAgenMaflmRtkVoa-wepl)HA%}yDc6;g4d0TMvAi+ z#7y^TRl%B9ncI_GqcTpWi{j2cYe;Qh3&xLje5=Z}36^1K#~^#h-AY@g_*!=@OWRZO zIDMC7yeWwwM_X;zXS!KlI))h$3HTE7=?N^)R75aU=X*g7?fJw$zNH{)woL~J_Tab~ zZU53Yt!*h{Kt|^9a>};IRsOvF_82b2CyO&q6_cJgJGQ<;4)Xcu`38eXJV3R2*P#NXY)w zB+lOnl`P@;30ZoMHi^S?tcqULv8{;i!A~g};{tlwuy1Z#DbvW$nGLkHxu z>vX*`p==3CdMCxqEdJ8=USx*NhL~qcic|AA-jC$zJMH`) zsT}+DadH&c2f`uL)Sv|2yxkv(F+;Rlc`1nsI)>WFLXt-ZCV{7_yn4t%a#eld&) z=8rmWu;JK&@*`>N8`^6QlNR*(Fc2^of*I9wn8kQh)$R(U+xtrR^8@Et<+0`Xtw8D+ zzFbow$)RjvLwOkH1<^{PRixD6*z;_M#`!mma0N4RA`^dKqXVCoi@OKDiq*mVaJe>( z+=5sK^>q+|75~@NU#q`2d!2cdI=Mm||9}K>xFGtG0dYO+bPpLXle9x_J;KFvu zDa8`GrIf$^Wm3R$D7ia`Sw7~ud17Hm$JX@$oyYauF|#`jmW^>Bxo#^J!YpyV;)6UF zrT-*LLN8kW+0|{X$yR!i5>X%7iG3rOUjSySih>jO)Yzv?Asq78PyG}kCA*4JNep04 zP;~W`XXrniC%FQnS-XVVOz0WWT=4!vRw`cDz8PixLgLxQZ(D~AT_Z0?5w5aZK)SxDt}@4@qwx4vmEXGl zDvcN@=x18tu=u*c4Xd0ebEGC{VZ#!C{NzYi@C_C&g@@Q@xN`Mmmwh3PbAFVee3Bk( zpueIYRq`+bj{!t#HMKEx{ou=n4KoMOy_D7~=P#to6-x)lwqyL;Tlenu58`xLWzu;V z2PeJAx3CaNOtyhe&0XG(CC-OGc~0Cy2rMbq{MIYRCSSbhR%G9oktsQ=_G9KhY7^85 zjtl74Y5Iecde6~ueREdAcqFUYd3$O1n@srKovY_!N!$nZJ~F9=iwa+H&oJ0jJkzFI zD~gzy#=H2Cod(}AFyN}y&x_2e(`fXMtoi#Qkx_<_xwo%->2-)~xlE;oMm{1a4 z>`UO)vT#IO1bQ=uzT4W-swK{+zSZqp@ezPtl4tzYmrkuCjiK`^E@k6Mwa3a~K0My- zUgCSM4f@n{=z!)r85fe1HIWB^uEWNe-Rw4+jg#2KAPyH_-yLRT(I>My`ZKGu;ZF-h zDx{pJ$eqXMQ#FQ6%o!TW@<&F7&Zy{-TDt8*=`zNe%yn8QEmCq!02&4{sw5IVQ~0lA z=LAIGd_Bg{HFQ6d7l3sN>#NYZ$Wv=^!gWM7p%5uDzXnzr^Xm|ng(Fkl3qlV8(G=oF z%ekF!`z>_fv^yZF4>CG^KE2_CMS(Xjhr&t1FY4}8BtOvDhRs_&hugX<+?;_ssp2k+ z{zY5~r-|e$-OFqWBAfsIA`@e~ty`SwhiE!5aauB*dSY!7%mrej9~jd*A3Yw;0vV^tPQNYIv%6 z{I1rz4EXMyZEhZ%SVb{Kq}XcwIpO-}YuXIF0W-vcqx1b|k}adpHHkFe*pa!pw#8{ zSF{IvKAi>iK-1_&peJb8@n&(f(?%I8aqcd-6=}NWTRz!@W&VlM*GL9#*i)|Ja#vuVK{%xfi$75R=v*L1(-0J) zjjf`7>QJ^jyWF-q++#kT_28hN95`TiRnl?z~*B;&joqEVMIt7 ze)HuYlE>=ElLT0??DYH4zsK?{S*Q4Q4#BSKUZK#;sotzF-Z6245O)h# z^GPV5r>55k`xjf+oLRcHB-T0;sdDCBpP6e1Aod7K#ifZxh9#$jOhshm`;7+(8JN%| zsCF?S?Y|;b9Es|XD#as~u#AkpZ7;N1Fj&Kn3v`4DI7#9_yZPNl-xj;N2P4=~qlbLs zjiiXpevIM8ta7AsQFBv-oXlR^X+c~v9^)+Sj8D5iEsC%txx+Ojt?G}YkXwYGVZtP6X%9DmPQxlR{8nXS zMp0Ir>}$d3+}S(PstTNQz~Vykb3*jTUk|hwpB0w%g0~PqNv{u{-a=MGFV*Y6n^K=E zJ}--ElPUI9>#_CKn?xk!r((438l${xd`ck3UyT{LFocD9GiHBQV6CN5%WZEPn(?ny zS4~)O2rBJwq*d6BINX0bh0d^~jw`zWzv7)ONv5r{c;{oy`crCBzQm1aM!AlQGMg$$PBNKm6Cn1)6 zX4>f?DvBDG$?{KsN~)GEvQscVG%nTw7>_A(-)}T1Rq4A<3X78TKkj4wgq4Plj6>{b z+loS+l#tg3?eb{k^TbV?OX6INkqSpx@LLY<91rSiARTpr-!){!dy^>p``}@p4s3uH zsD!fab*(2GBM)xmHSSs&o;ArW*I+MdH+`KSRZXfof%eIbX8^*R47w1-#GDU^rc+AM zE4HQ1Z4Y2@7A}LR8-}}DBHoQGW{h)#ef!?$hoV!~(1H>NjgM2%Xj7y zLj5#;D02j|Z@%VnVv0&D zdZ~h!w?}6gZP&H}JN;A_Daf_-rl|>J4ds|#A>&p0ObnbUmt3_hRrr(jktdD^4V}_0 znqTP>0@uDgC*wPPZB0P2Cornd$j~e+-qvJ6%cpnJ0)*_VaFT#qB9Nz%Ml8AceHJgD z_Fa7`FxW0|oMXzL79_R9LoveW)p6a@s7`rT8@MP_2Ak)2Jm9}Ty zr{VZh#Ufn9-M;MK_B|*bq=Mi03F*%{{i#qS9le4PJB;11G-(L{!{o}PSn1+YYpu5! z{DNz~CBoFkVo@J1c8iYKQ)~ykv#`AgX|pLfek^5cIS?YW6&JDTIjk%Xz_ zR(zi{CRFdirbA|AW$seDHK|hl)9D;;+a(u?eN$JdDb9T8eX0#h-=GVWMphY$HShDE zxf~BI8OXt*1)P=od#j}&S#E+w28!M$te@(+s5uCv$tjQy+bbFE6kQKZbYS3*3n++Q zIy@eGQnvDP@$;Ch>rLLTbQ$7$iTp|WxR`X?jzt3+)Xb>lGFiMQjGkZQ>QqImZ=y*4 zd0CkwW$qha?(~#ZQg`W}k{zh8Q>_W+GTxdKWV+pTTuLiX)gV7WW^^n~?pRh?IsJ<@ zS%cs>QEY~)^6~rk`mS2}&8mf{6JLIG?zDC&vgZe4rGcV4Gv0MLj;z+vH(ixtP`ybx zzo^trdgdpOY0_x4Y=3SjkK&k_o$8-sr_&u#WkqA5cWTWa7MCvGV>a0Qq)sfzuNpsm zFTMg;Lw8h|fSGI-9a}eV(i(#O`;ZLu4l5k?vxXpz5g3A%_%+-8#%--~XjCnVKagBy0zr|oYXt)- z-0?Jme_l}elki9!Kg{9};I33{conzO-A?rfzd_a7axLO_)$b*~_^W_Xem9tp9o<%1 zqK}>7;hcLt0*LKEUdBo6Crk^{U~QSBuzuFJ^vm<1k(tkQCKRbPRMT4TS7W(5dz-o^mYWT4Gf|#** z@Exrbn~19JhwdAkz%8NK3mYc=?`h|D*0{NxWJv~;o_{W8^LOi* zbD(vX=|xRr9Pf!iLXCWWJ-n9cnyQy4jr2`?I*Pa-D}1E8#DFNoGjk-i-$t5ZeZ|5d z?rFg+o)1SNY8nsqSLO(-8mlDIJSMNv2K$uhmfw9bCc+xcpy&>Ib8r0XGvXT{0n;ak ztA1d+c`0Z>Pz(Q#q}{=s8y$k`+tai}h8BWz_JrDq);=Sx?3T^-=f}e;_}La8vNe zbCJ%b@rKEBvieuaV8Wlt)cy)ZBT|KuYG}l!XeA&wV|LrC88exuCQi2wz3dpF!*_Ez+cJxP88>sj7rLnkEG=lZlegNnWnu z_JrR-r+W9HIGZoc?jLs+Inh&1G~W%yy@qJ~ba%H{KT&iOcTGa=H;w+J_EP+wug_k3 zG!grJNNm7EYqF5t$xr;zPlS6wR52zA_L~;RR;D?>(jVB@*5a^KZ@Za5^E}3Q z99Mhc1OGUBUQO*|n$FHV9d@1tNaSphoGJ@pd*QHNBf{u*cg;=oMNCL?d(kehhJ=fa z{F`F7M+#!T_C{zvZEbW-OS++OdE#yA_94VskDT68Q!EHG<$iX1d)OORcirQ$0k3O3|69 zn~k_%p8ClWv}d1}na%{d$5&Pzn=0D^EA@Pet?&}#?Dr{?M)uQ_u-}c|dtu-Tiq{#) z>S#>iHm5EawNs|yG`e*KqK^6Z1rk>bZzh^% z4388k2fK6MsuvLY`;|*~HI>_Lg1S_Ex77RjOxb*d6cWSKizma4yG26m*AvWDr9Uj^ z0?eQaMq^}G4*MyKsq|p|N>XhNi56lD86r12MjsA`X?F5FP?n5mAZE@H*?x16{}mk~ zwqG>{cXZ`~&!ikRkL0^&&kbW{3`YjrYI5uyKQT~>MZUV`gTZ9*jmhiy>xJ`b<)gn- zV(xM;+k3{#7Pr97V_G=|E4G!tloxajZp%SD%rw2P#|0SSSYc)!v+xMhKtjlSFyM2LZ77{qof^a0;-xev@r3m z<6PDM(2VhjJPq)(ini`XVsJu>L;JK<9i)UTj#jk+_>i zJsa??%x(1(DIb^SL#@R)XAg}}+cxJy2*;~H$tOw0gs-lL1pUO&>lVToNI87jnER|JndwSVksB*=Q)8EA zJBwwrWfQy8suA{?+^5b~`(=o(HA>}GZ1c}%G)yq83W_xp`1Em96;vtHythYx5or!I z(-aCEqUs7sD=lgYz6(e%0EA$iw<6iLiga~*?id3AL+{`UH zv?b`62qWt4InJJzu{P;xDx*~>i|W%>jw*WU+MMV(Y*=a-F@M~t*GcTX|BS3bE=5~; zm6Bg@o0Z6QGivV5yQwLMua6YPVw)&pY1hwnRHM?hQa#YO#~^l4NWvnn82Pi$D6K?Y zC#hThgo$GA?f^^;G-om=3iq10dXU(U$dG{74O+wH^s|BkSxL+xHzAy%3L!j-}w@+ABLI zB1)DN?Ptl)l#~r0IoiE}enDu4Sw#7|9NhNpD^f8F@0D^X+Q)VYSvH>9f<}k540ep^ zFlI!t(Mk^2GI#cb@YeR`N;<>@j}?bvL`(C+Shv_twJ+K4eqIq(5s3<;-8I5UE^+5P zp00-r+^K7Y<09CY=i1Kmaks+$ecMX;Ofk4Bel9^&A-1Ws4)=VEYoeqTzED!P^0o%M zbB<|r8m6suhj7$46n=|)m5$17W|CB~km&~3_fY&Ym*0S={S6zu^(DZ`$%8M?cOixv zL#yXT|0{E;!}*8k;8L!%UbDL#KK@5Giu01Z9-Q+;~_M)$MW-eTGY4U%_Pb~Ws?AIQ*Uhzc@T z(YEGC`WT{}-Ja83NBtP8LAto8&z28gFSM^xq_3)D#QvcWn}Csga=(aT;plk2`slGR znWN82OH|#;ewivRCKsOPx?-}>j=E~_P$JIVx9gtKmG$ojBMtwtG6PsUIF{I;9BzwE z*wxag^%crjZ6#$WPp6te-zyp(bu^lf4;WG}uWR`&7clTx3_BPbGl2oT4m zcvAi796yq?o{|;cB?g(2i;If)vCmc_>eb$O3`1!ceNz8O13;Q+OHZc7X0Ld>6zi`M zXm1@1CQ&hpQAzYMiT#e3EbM@@aS8cgRE(rys~Yd}&YGbja$eGyM%%UP!`|F*K~Hu9 zC}GzP%){Z#C}}hFCf;c(G?P5|TX|{OwLjg({lmr5lkdIzL>oN_MUml@V+(CwwObNI zxq>smRywMrNC_rv9?jIkYDw>6osqJWQA_XyrW8GJ*NFRHJuHn`LO(*I}8#YuJgBjLtV zWRabae#8b@apQ2(IaOOIv?9Pi|9AQjTM+gy>kJD+G#bE?m*TAVXwk|05+Rdem%wRd zMr9nmD&Q#Ar$wg_dj?t`Y*>EOBc;bdMc|*nI9+X+ULT3CBBshPGW+|eW*{+789jx< z;y((LesnJOlvK8QZ+MvP$}PUR_B^KO=h|n)+_|r!Ybc9OZ!uD@*$PvinarTPy<@I| zvyLPPeSDmXbABBUrX=j577F=rPE{n`saT+pVXajD#xC!UdwhL=%|eE=T1KiGIo*1A zJf*fUwJn+iHyX*kUQ;Q9o8Bk#u!jOiHVd&n8Q87LhOLFnljff8Z&ANZ@7BKM#dRHx4EGWpD|>2%Dz5^-pFcOBh=TPIyE)n+8=8gN(hNH4@W}@KnJr z8Z&Ye6}d&9zqfDjUIax*jC)D-?aD74#UyW>fdt14Htf`%=V)T?J^brq)zQ!ov+Q7% z@F96=U*A)QrPCTjy$4fbh)^<4#QeNpNr|SQlaGy?L=`A;y!bPDJz9WUUSG`#%8;bi z2)k4h4nb4xQL9gfj9}!J(0i#`LFUqDpIlbf22F;p@>G zx9i_gLS@e=5RX-IN}f79yE$IIwWexY(ay5<;Odg@M8||7`6GP6ymn6A3T_fVGQGqq zQ2n_-W4=cU5v*t>Qa)tE14Soqo~7__ zEj)!9loa2ZkcbRQQB9J1?+L?rQh9G-KgDVVULA{Mh~g?X@+7oyiGgk@azA1KRog5N zJa_sU7P9cb^z7^{QhNaZv|*(8wHH#eUotl=Yu)9AuarW`yhcwE5llHJ@fONuW;%PYcfLZl@NCV+IY+D=K1t8sMFlkexmcmw= zUP?zJsHD#xX0=3B=z6XoEnTM{uX}91lQ#B4; z*E7^|BPKa{etIp65W`KkOA+@)(ldR$5Vpdz=s^jt*Hn`*VZm}b;en-I9Nv4h)W~J4 zmY4iD;y?^JB5Wlxe)4))YwBcIEntO&_mEl%tb3`R8@}|C$MqA`i7m{NxStlV;0<}` zY{Pm~{_K%wsP(Q(o0{!YDVj!$i19jCJeBVORN*M%Vi?@0lH!HC8>Pt8khMw z*x*caM=klb!Y1}IbFX2Yio|{yheAuaYB* zFt$QqX1Q6~seRzdL5{g_LSgaje#iEs6cHhFLf@MVk?*zIFxwpgVT)U}*W~>&x~n1b z@ACw+3gD`Neew!N+qFc5O*^*JJe?CxdCro5pI;wMFanF1;H_s^&ic?J5>{1vdW!3} zr`D@QK(CLOol^;z;bey`O4i@&@(bUKR6J@pcO{m;|M6_8a|8FnT}r(>5G;?+W&BH> z*q-G9ZY74~$!JZ`17>!Vjor75^F87ZdzkYhp)(b6Tm?Hy()qK=gI6f2b}I>o%?7VaTM|&O$e~JYdV#cJ#!p` z&!z<&EjE89Z8Rk_*zYyk)bnXo?6k;Y5|^C`q_=|5~q#e4=oc8DTmM&q|#6Vd|LUjRQ8t z%YDBV6+VaIQ_~#^8Cc61m1}J+_$@VIem_rq8a_U_CREu?Em(!Sq;Nc|JKR>NzxP?4 zitKEqq=dJ6bPp*lz~pIfWrC>=tq_Tc6*qcEO6%@@k*K?sSYenbItY^>B_sD}AC^+$ zLS8o$ZTEgp)bM=|QzX4h-mwm_t;R#8P+DHUV~~6IFARCj>ff>F`9)T^RMzH`OjnuMMM+nX*;S^oOY{~QK%JO65lec5_ZYk= zsdMk-c?~JYF$zmqm`}x+h|DTO!lVHW?J<>h(~nKVL{`^(nf9^{~X0pMQW#!*s9dI zCkyOkc8#yFCD!4V4(*!ktz*BwMw!KxK~eZiGIOLt?Q2}2vYv^J>5phtvU(%pDAGe@ z#@;uJ(~0@99(apY z@15*R9?>&t8@2B(g=`Vl0WstqS!K2s=<;Cv9xSdscw>kMeWy77y~ zQby8C_^9}u4ze_-;(Drsp(iexKuNHN2=S#VmKx_IawfXYbOfmIB3zhZB+1jIkdf>M zCfbw;Jc?J7&*wO%46Ou%Jtj(c9`Q6FCyvdrQr_V4r1W{IYvh^-d9HQ})DwQl@DY^g6M zG5suBf$$7&LY;!%AgA`b{d7q#wlb!2q2)#VRJeN&4I?smd(|}juZ+9O>GtkHyh(YD z&x8X=Qdibi6dU3;^a@30-otfxjb~O8D74l3AT3BrLn@|sDu;gWVYVkCBI*}CV8?+q zPcjCS!m4?ZN6ComDEC!+(Z@vlNQYR|9Lv`Sg&w#zb?C_GrSXsw6d4gwm|wfUwxFl; z_=6_vW)TOWwT|5HN4k&6f)hv41Z%=Yrap>0MkhK$8--5Px_fpK;GP#dt?8cG7`;SJ zR@jk@yzrMjPge)Svno3Ta=DAt^KgQDm@qTVr@Glkp|dys>{;(oyvHM~c8Xx{Vqp8e|5b!-DLtErgq z>ehM@g-HhoIlMXyDFfyW$&O^N>oLG)ErCw?9RDIsjA#ip-QP+sDS>SbHfvYg2e3!- z&}3xT#C(glShJx>J*eG$CCMvFn$tsL=pw^L#Tvh^L;^H74pciHbA+a`<(ZLJMyVlY zJJ|y`s(`3j(0e+Pdzo0uRYiTJN#>`alIO~X?&;-?$ZKGW5+Y46 zG|tXhEI}<1U5Qj1Cr&FN@wdPIt=P+?RNqTgBR2aYZXb=A4j>P)*)D)};S#SeJc@C>v2*v;*l_Yj}|3wTt-M-Z|^9vNc`3_@e~~?jpbf1aP4owHBsoy z`I52JGm%e750Nrr^wg{12w@Eo#t<1n4S+U3jb%;a8W{|FWEym0E%$hryl>YDRBs7= zS1qXQ3zo{$^w`{cC~XiLWGbWR^8$e>ekx3jeRLxZp|0Zv@p~IEGB}Yg9YY~%H#+Ts zvP;Yw-dm-?deTS2ABz8y+)Nx=8AtNiWCX=1*iwio{j8=J2s;6i&ZR_5314IA=p}F3 zXF7;@z|u=}0Sb0qbdR#cC9Q#gv?j#w-4jrz*Y9%wBzVg~sDXcYk1IVuVlAGPq|576 z3aXE6B^dM`r%9Ch0^jqJf$|b6HjTN5M??jTbWIs3@88SoMh1vV%U-T0tjUcI8?r}w zfP4yZU<>J>e-7TD^zH<1mP_aGD=_8|*7` z)a#2%$VjJQ&2LR(^v%VN`(_g;LO(jxJ=0wCz0n#i;c!=@n7I**_8Xrm!rD9;Rl-c& zkb3frnP2w$E`9!J@{j_*TWwVdxsepk62J&r^5pH-y`4!gjVdm*P*l1S;dIRA=nrL! z=#o>ElY~gAIjhq<4TYCT5hGwIE4PD9k2+k;j66vRHh14YvfKp&3Dg!00 zm@q08vipg6kM5zDWJN$UYmA)>c7$Hz-aqA*YMQR^b!?-jLNdHI7Cj$!^ebsoMn+&u z3$mmZ6dmd$KC{UX*Ro6K(}-!lS#h&RoneavMjN`1TH4#u7uR*vu!!%|y+qvzos4~i zFPWXY1W2Zf{r>y!H>aN5Nftsob`>oOwlU;}@iH8*ZB?5~y8B)y%y8UKQ%XF^+vKKY z=J}}c^Y3C~p*t>8d2W}Cp4kg;%7*(b;6RuA>)ylCsc*9!eqay)-iRDJii|bU%uW9Pj3O5iaPwN1sFgjx#;Kt;`h-2g|Uc z4sS9>&Z{bgwfu}qZs-|An1>T=nH^$BG4De_SGlCVyTzSTMv#U$>e=gLWqH{yC8U#^ zDj76-#GoP$+}8Ih=_5#@cCqR{c&KoJinXutkI2_YYEAV_UjKbh;>0HN69m3j8%YF{7!{&9y3?GThMEt|_d8zBtyOUATVL+TQ@=&6&Cjp$G zvCj|tq_{`w{fb!^Ta)D2^ETposu4htqKXOF&!v0!Mkn|s?#Y8wXJ-SFNWebKV z&Ea{Ao8{`kEVw6j=tfhE;vO1{CY~-o!$SQ`v=#xR38NI7pM5~JQJEys3F{4mYH&f8 z{xDPKfGnlUwXqc%F-(`&N&_ncr=*Px&lVO_8dn)?H4%yyO1c+v`j`Z8j+jFDn*PaK zxF0=DZ{q!kb|aYyu7J(D--vHYW%AmFU#jbnx?D z!dh!ugI=Z>d0HqzI{`Y?yKK%DcZfcJ=CJ&58 zM8;2>ueRbM@(egRq|E44B39-hIXy4dFl(@>HlZ5Fnt_Wjh3IrAtDhcLq{$}(EdwND zNJ)4t^1bSlC^;n$OZO8=g)4i{Hik}cuC2zX_0*JvaFvyNDLce{d9Zs)9wpuHEf13e zKye1`31-WkW)q41?zLu(oDv$-66LJcC!o2Fb5Uh{)L^WUA<3AvwC_ ztyi!H{&A+h79Yli3Ze_Kc9q^0H|)J346j86S!P1H04N|SLnwnIW2i+buvil>wt20H zV(CSEh8_XiI+DA@8b}#VWj{UTzbDDHb?>^Cx0`gYf*!ORx~N^_Js6!{)Q_X$$59WW zbO@E?_St_qqPf&0JxI|Z@Gg=)Yn`{&IQ1MEUF~IWBMkFi4~%Oul8p1RMm9Dlq{IZ$ zJ=7~vx3qsEZlk>W65HUOsG<6ojOb^A&Omsua&IqeYuN01!z}*sF zSbO9AZg-W5w~)Wcz6uOw)ER8_LukCOTyq z3YWr2-OICHQO#;?d7RH}O$fZ@c}3a8BQHV$l&w#HYQT7IR)yr+Ge?s>wd{u;xGmn`k!PBI{*U&*{a^n%hrlE}5{GlE@0>WDVtOw* zVMlPkqaLC>CKo!0>T120fQQ*sP2MvOQ3ygAA9@42rZ&AdV|Us_sm^jQB(Dum6l#c8 z@Dt*$d&WuYBZ5at&&u|SUNm2tBUa~lXr@h8>Tj`k025B&&!j_n<#UUX!a6jvfq4!Dv)i z=T|F5Um}j~4HzYzw1`<4?NZ<*YdZlulI-3)t(4_shL?k_+THX=;bkc_aDLy`^Orp7 zy>4X$*eN>sSG=6!as(b>B7u5`TOl4*TbS8)p@w^&UxzB6f$QmLVn}OJ&-N%}v=s^- zQ8tfiq)FTt&CF%?=_HY4UYhSH$-?mZ2(GyI91#QJ>~T0hL{CKev-C;w2gV zXTDfN%+P;plST_YeO95--b))uMvm|V%Q){*r(r^f9%{sK-D}(vB@UjYbiLQ^w8Yyi z$$7CAtHxM@t)$2?3X;=QBTx_>){*GLQSHsW*SW->@eLOh_($}SqaGh+l}N%Yk+W;b zl2MPt~Ftdm#0yffC}5nlDRj*Y#O~lr^eK7pgqvp z%j6<~&Qjed^I()HDNhJUY0GE)KVPt6}>C!ICyWCeJdp1QeE0>F{x|F z2x@Ni?23Yj-PMrVqyEs3WVMfew)2}&$&Ghl;t5?U$#OM~TC71E(CZKHHEj1bOWC>> zn+`G5VkS&k)`X8n9kL#MNi0Gh6+I?OQ7Hu9<2DMorViXuBOP%^RhCGi>fR=xFfYTc z$bh)ow;#@tfg^A9(XdkCpAJI(oqB_%?@`uQS$}1Xx8$4dX;Zp~6(89%+|Q(OX`Qo@ zL}Q_*WSXy9qg_M!dIXCOLtxhUmP(z3r6{b4dLdBm`p6(FNf6l$;VQG_Dqr+A0eVrW zv{rzEB=~1_!t>{5qa)Ry)9A3hq>GHQ4d%0xPe(ke5?x5yUhQ!v9w{avVS^)i0Kr8% z4F2lZnPG>QWJS_6R9_&l&mwQ%NHrM5U)69t@>-+NJ>m|^;4s7GW5xv0Rw!Fr5#wzp zSp!Y)lbK1SG-x4E8YN=sEqnN=A^lcl3US#;m^5`&j?ZHBG34&%dX{ z^C$t|$<=3`UKA88TFj}N8?%oJFCtm)XZN1H=RJFwUpIcHC8o5)d)0?L^t=whV3;YQ48whd1+To zsJNA3rhcBQ5;2JqVk@bkL>=$9#IaLY%cPqN*%v-z)XQcsa(E;>)*e4=vb=zt1<1Ytc;k`E$sQ+d@5Y{;@L;7#X<=|-$}5&J zkar~G&&4ipXD{SEQn1aFlD%hj0CD3e)MRB0y^k8Y3rmq?1h+I3DcQsgP|Jgp!DP~4 zYu-v5v*bx@EHpMz+l8ap8NFU@*rc=Q__vo2I(>ulLQ;5Cp2yah5v+0~#AOMe)|8?I ze{ZBuDd7=P;i5LI@_0#?;d2W*@~DsukXn!L(WFRrW+KTWSI;d0qFX%%{v&vPbgkJO zCNkEhi4 zw-zTq%dv}UjkmlTdfe`js3eW=c_zL_okh(7dwH<8i;H)%Hw`O~6j^vNg4V4F^1fV(PSR=fGHG8&)W?elMk#V z)@S#6gAl_~2Gz`AM_&Kl!AfCJl9OxeaqrEhYAj`JWjJ(*DkI7| z^e9nA#cKA+(Hyu6kd$oLGD3$W`FC5MJL`14H7)NU+MDhiP(7QyVIqZahP)aNQLt(q znUbx!caHNs&;ux?${*oNMU3t}Dn%^@u=l+T&%ETu0elyHC6>WSrb_RgnCiW(e&VVM zH9SM+5<%>}>)~3BY`MG1&-t&Cg1jLCVLM^?5DEUHR1^rxwDi6-&fcq+b<#BO3W4Q$%7FTK(L*Cw&-a1unVEX>T9t4k1;>@j zOZ$zwh*5$?&!PjwTV>pPNZm8ntG1Y&OkYHN59tUcaGV3B(~nwy(ZXWU^F79oWNy}i zy7A+)P?cAcuMM6iO2ysWV5Nd*LAw=`^aImYxv36V>Nad_f)}1w?6F zi65%`P~rv7pNu>r8E)NGb>6z+?SiQC2by!6Wqn>pr$w)`t2DLt;%)N_m zlu9bp5MMF}kS2++jH zh{ywF#*<38I*oWAdz-{hZ!+WAQsL+bo{Gvokx=# zG$g9?_Li)rEV<@PPQ;evme#8{m%l4Y=6GB5z{DmqnIywDhsSV3Sm!S%ZgVs#El)^R{Yk9(ZI9DlasqvFw z=U*j;`d5ptJ`3w3bm9s~Thu4+q1t2~Ihaw0GuC#O4%A3gK(LMs2Fc8RuS{HcLW<9? z1QwGm^5lf)$&j+q5+N~C&V;#_#)$XImILll>aY?fUVHGKn<5MIiUKR$13E zMS5Ot>Ali~bO2A9M3{|SdiK|#Vu}D_iI&P+V;42HI@}5wJ!JJhAOd-P@i75YqJB^c z-20~<;Y^8RR@)=E*1$e9@$(rxxKmRMcmY0KeYcf5!W6-81Gh0rlzVn*wR z__hm})~GfMx7Fd!L!T{M^;}%5+~-W}?X~n&M8%3Iccj?Qh8+-h$6i)@i`L;6qV}9T zloGJ({c#y`YBHF`)4!QbbK!+8{W^u@B-*k@moio|KS9eQ{)caugDa5Q(R3smfIN5-mT)RDE7Y!DBfkcJ*GTQ0A>L={|LP!ay0of^S zu27nFp$w%ZX~pK#dy7!sX+-&`@kF@E#PfPqGNW|QtiEwh88hoY{bIiwipcIsb$RPh zuHBMa_}-XqK|U1PU}U8CC=2bdj4OkaY`rB3zbDvHGQfhI*w!=}7aCngb>ueItXtxQ z?!nSCrzQb&20PyOxoGI3iPJ)&XI9c|i;Cp^dpK|!SY}W65-59pQ@4O(S5%I&N_#JD z5`o?x=JHfzBkfd2>LJNql0_4%Qm-Q~hUPjUk2VB4LL1RR;NBOrw(LV(N*F!E7)zpx z^dxz6ItU^eG_8{@BSx=^4nU+Xv}JTSKT1yccZ(GfIVhw=ZFyivy=ZFvd4hos44ER{ zr7@Dyr!Cm?ju}2H=b$?5C^>k9qIIstk~Aqgfug3;t|=(`Mnnhk%#JrZ-cqmKIxTcc z*ETvYh4~79w^{}`nU~>4)Xe@ynf_-QKgy+1!A4`?^Uv{n zcB3YCDkI)1!&q8Jk=z#70)MUzC=i~|NeUIUE_l62B_%SPWETiBaSUD8^ziUV<0Jn$ zy-j&ArWeRe5!9`FV`zNjRQ9Z}vVyhcXudE+ zi#XC5ZZA5}yi++_i#{0v7U2s55X?Y{F^%U@kEK*2%EZDJY!G==(Ku4Kj!}vXKaHK^ za>SQCfu}>wX*iMLBP%NoOpk{KPLOUzMSF+Tk6-Pd!bR5r^_gl z0<+Gg^tHQkTB4ZU!AGivxBvjd1!iQ(;iExf29n|2JsrAAF1t1prL7o(D_ayTBn|YI z;HIz-Zy3L|2=^HIwaEvD!sL$C92V})3ZAHGU$B=1q7n@=a>79sc1to{->s0G&6*gh zmhdTJ)>@+x!0!#}dB0m~*;+&7ywRhLdZ4(%Nd*4WLnP~fvSrlL^CnSRmyX##GxM#( zE6tmX9rq3K>j+x%@Rog=_cG3%5&l-aK0t6 zY8se5g&cV=oJV=I#88>ME5SnKhbrmEj&PF3;+!yh>)LydbhO(uf{g6wnd|dTU5PwR z8fwYOF*94+3c?*Njfq-9FkvbRjN_He;Cr#gnIS8^K$faR;jZ@*iOPNm{Idw2N*7z1 zntM(-U5h8HQ+T{)k)e%9o;;-^5Z^n2mGCQ1h@`Bu3fxOI)in#3!l*Su0K{dPZLBRJ z+FGy*jkM5Z^z^LhkDBDjb5<77!xg=!rgZ>`uZ~I62ok!`n%GOaXin(`>gUSF(^D;F zl%wWh9zL_gG}3z{oIoz;PwD14{lzi)z244TZywS+ouvlD)%w1Eta3 z)81>%z;G~y<^kI%2tz=!T1l2shV$EvX&d;|cm_ zwO)vsdsoQldwC$TT_&->ny8PoAFT&gn^3~eHEGdF_srjOZ-+Q9=aV-eAYLbv4A)+QfZno01Kj9T$??#UhfYoA&J#Yu z16gUpqIFiBM8Xb7+bu>$NXAB9t>m=i`KkO)#)_MylU$ou(`agqlI~gMaxxMO>ucEoN4~H0 zxrp)=&2gz`jOLQC2M-4?uVXSsiJH>5b8VHp^c4?Kz-FoH!utWp6(>GI+DlY(8r50) z;-&Y*Z09osFTFB_eKnLUsZo`PHmUAeIF}pksQ&Vi?5l(I>AyU1WE}l~I!cQu-75{c zxOR#RSVC6AODnZz+$xaQbFubw>zSwlSxXbqI1+THzy^~&wb)ikV03T%WjvW2VPZwz zj@H66IF*qh-7~Cy5P5G94{=!*%1G0*>dgG^HQ{ncswC2SjzD)eG%RUREbq-*+@fnj znf;A$zKDXuls82eYN{W$HUVilRDj_L>ay}R9p{)~CH11zyS1eMcZ7E0UW&5o%udQ1 zI8x7ibg{cAMbuEIw%A?00Y?B&whjSxAo~(N* z9#P0KV78g#%f?Noh}TOEPelwGGvSSHS14jq(|_9&VvhOdIjCuX z&2&A%b01v)J6Zlwe*h9n-DM>;f?1`bry4f^d1|ackpb}%yc*-gjmC^&36ytgL=CU8 z#t5ZnlBAMI$6NOssYu^*xDXb3gv%L)p0zzps0DQFAR}bVx%W1{KlKy=B#quxrYHG5=!V+oxRHDTC$r_$x31gDnR3s@* zTr@g3A}n#M`Ao?ODFjpPE5Ym1JRe!$(f8|l9jv~0!+2}b8Y!tXp316wGjxVOdzt0E z=N5laA$JsFG3@u|?`$JVdPbxn$PRBV5EAVt4?nf8)A#=I#~-WA>0e<4x4eHfgi0?Z zCu*4wTT*>d?qaKdbRJiMjh^b~iMG|(fMJDF()zt7A*#7#irhh97hjY|LkXTEcp$-V z$>n$lv3q-5@YIUrt-N2Yiz7r`^H_(>E?PDCnXpGytMIwGNFr6;ni}bn5hB^VMxuWU zqdn?PGTW#>&Lt#ncQk@<$t7lAiJyCUA-nQvJyX|G1ahZ#a2=4#8j;pZR1_Hr8BKEM z{+Ta1BfJ-1FOd+f##oKZyq-OpTkfUe+96jh>Mpg13DL!5U8feM!htBE5@nfuFcb>= z0BBR!Hb$4H!ftU#C$1(8E!8kH>qw;(7P#}EpuQUWqSS<>E)Xe$&ti5bsUGDaMqVHf zr=zm_>|spW%n?t6hLawY8^1@AP9oTQyHrI-EFE*MBHL&xM3qsEG%vMg*h^QNpV?7Y zZujSrp;3ggC(~c!h1GuE*OlynGZSjAA*PC)iD>;Y$w-^zwfr-_8%gLKIk9;$c~mZk zQ%akAp>&jTS17}Fm2BI$=ao?qK?8D6v3>1(qU^9jqx4FXC$QWTGkR8?^cqij)`A1J z7NdJB%%pRZxYpgH_>K|*%-Gk`dRU_Oj0%S+QBd;o@2NCm&uDRBbwG22lQBUlD^-#R zHYgc<^8Q%&tUo$Dw-N$cV;WaVkR7SVJsK61-XqU>%fpX~540~l10RLQUdvw+9nRwr zHCeeQ)-T2B><|@MYFYCr^Gq*Lp3vS2=9xEAA5ysSXcw^~^Z~yHHwZB)iodc&AfKO$ zS2*TY`k#jhn`%c&CXYNPU&7+lK8@8I{%Ls0}8Y-WTNzUuJS zJSbbQc_3z36J;ojmN%#f&i7Y@@3MlW#tC?q5p<>pt4eCF&#se7kkYGTVwQ=nh*Qe< zXXlI5jhbxVmIpuz1gRnNd|UyT*;Df7qVJ|^b*%wZbxYcq+GOk%@XX9sB$640|6bNa zWea(I41aaHOI*W~giNNIjzt4DByD3p!NXhDDrX z89y1+Gy8Ou!Z}wi_S(vb-=@j-_Is2f*J4pP;Re**Rc{uvhx<_|K=sbv;p^F+9|t#5 zH6ejj-T^z&MS`mG7}@8ww(+_fLTa`-)!?W{5J{)A-jj3?$8)wA1+}5oPf#)aMC ziLi=OfaK98`U%A<9Ou5LvMIVBc|hz%T{_Sx`&LUhkFG-{BsWfbMo?>9@Rvgg-r!7x zZaQ65AkzDYwQs$2Am{zLhk-bgUSGsw=ZMnb9wezXB(1s;+>>_N8e|z^kxE4dR>=5F z;}=m#WSCr%hYOy{GZbod60b`k`L&!BUVGoVHk&o=;a^ds?4wxPv!t86x}(%C@+Uk) z_sV4iX?QqJ+#AZkx_I!t;k$e73~i$}u8~J{RG^m>D$#0$N2Y_IrY_epV>t+_r}kPG8 zuCVJ(jUum!tpYR#JaLH^JwqTOdNz$`gx_hgl|b~G-V{d^f%%M*Nh8%oi3NJLo@j{_ zaJKGg3s>?eM>sYUbY99PsEH!5C5&v(6O7tUdc}($aISXFu81}KNcRFY7vA#ph}WuX zP+5l%l5_Y3Bc=Ch9q753M2ixVtRkbaJl9xjVHg4{d3r=8bAD=iX_EKb;3+Q78r3yQ zGCQnOCJ{EhTs7h+5*~cUh@~H8;8?(4`d)c6Oy|?Zcg@B}yjs5pW+_<(d%|2^m$qUr=^$aA4Yr{s~&|W3Zp4^xB^znqG zmxHp4+mZR9hNym4D+ji<{xmnj_#!=0dAiyQs=QHooxE};3FUA|w~_aJt^xHK2GihC zIzQU@><{aSlG15U&Km_$qwKR6i0gi%n%g7Xu%kwjl_pz@M!#2LgJTlO2Ql1al}W8o zz)=j9bOR@vN1Bl0{BfKgHHHk)s18D-A>&7bphSQe1yo2OL?P%QYT|v55tMO}D1$Pa z)Iv-zCFPjNipoGE2Za4D6m~{V2Voa_=ZfH>dA+B(lCNiapC#yH3m)Mfl^4y%U+zFe zA+$VeXH$4s?X5q~d)^vRMN9S@)iPuDW&^&pl-zNOD|8xlHN2Si@kQU&&HAO$uN^n z#Cd1+ipb^?;?@1IhlrpgMz5m7$(HPf!0xSV;RUQhpu1i384^XA$lz(GYwKt90_pM9 zHXX0QTOvHKrYQ`6&qeEvpmfTmu4$1+B0?>xF~okHo^;g9^$oTKBs&L?JkG7octaB0Hr$p|K~FMBRhggRHUg#CdAy4f4>mscQ#H z7F(buRW;oE@y${@q24EyC#yHC_8!S{r;~RQZFVj&ijz`7+r#CkE>rgymBn%MkT)5D z^G7zYYctkBjdMjmVzRvyya9iG9tp#@8dm^COnN6f!fz zxmRJ}l_Dznit1H8n-_U!HF$0_mYCle-tCgP*^z#cCe%q#9{+IyCOouJBJP677n!K(nevg z8!++R6fS6iMy>7qlq0|H$f?3p-ZPjAg;=&Hz?v-yBM_Y%IBLW~GI*&@v6RWv?<8x* z$*)OnY#E57n|n`zr&c*f&%-K!S`9$gPu%)`rO5YJFaz{n`kxKerLT#^pmR=;~uNdM|R*mD~m=|Tcc&IaR@Kd31Dd|zu96h4o zC>o`Q5=NyEg(Y(|*3ZIeXaJd%kfGiRPnlV(_22~R zAMMql^^+0^B^rjBnR`NGuY6CTu;x!Cg}VxKPLmB z&^|J5#0|F${JoiBKNO!(GI%s}@i~*Xq4#Rcd_y~qS(|a*spAxNP7og<*KV(7Q(j=yG{-ycmBd7~nIekH(W;gjQglR@AfJsD z4Uupyd%7IWBuCVaJrBg`AKJwJSuOT^Jz{xynp0m>ij4F=iqvY2@xW&k@`!ww!h0Fj zQf62ioWdLQ?v*X3PN7;(=-z46-1~R@nqnmG^tgN;4?FEkiLLBO;cdY%3V}5z#0Ci^ zuvGV4%DC!8khK&rtVxXGYW}@O*2=rY>H8?R^GLI8U55>kD50p0>t?B^ZJZ#~q zG0;L{$ylUP;ohh+US27}1L_FQ7j2kGJ;c32-6OMxZm??)JZ3fT!7;hU*hZ63!6SW% zHRclZB{t|GrZ6X}^=P9x=ZwU5Ur&3Opu;6Kgnv@EIOZ&QBs@if$i`->%cu8G?@iw& z!>O@iPilQ{{krP}3tUexXLjK7y`682z%&l6TWgh{Kqhfc&^!=-C* zK4e_PA(b~srb2|}mhfqJ5cIsfo*V}j5-@A){9E=_J|fZ@;kXQM>3x$MC z=I6ZR%A+bN#<;f_8LmA{Fv2HGYk{H_p0J`yxf^+5oh7|J88yn(d$ySex>T!6e8Cbn zx>fA3rwA_3Pp}kgv-7$qiBh;#6pM4PYZQs)wWMpNaL}8VL}H$D%VnkS31dil=4p8Z zJ7aHGdBpdC{9Jf!bnPIsFL>t@x`FUU-&^-VMV`{h>T{v@yUH&~w|id9mWQRtK+(ZH z41-$A#?gM)S~FhC=+FRpcJiRv$JvDmv<{i9DM_g9(RG}^S5yC-ymuKhRZF;J7{^E0 zq3BAbCR`K)rru$sBdMQ}no}Z9-_wk#bbs}zh}gvH6_omghOvV*OBBKlawz9&AK&uSw04;>r#NX8w##VK;fl0B_r#3veJQ$`Ji+r#jLp=v3>aPA zNV9E^%jCU>k8rY%gh2{3TrNiohPrB{R-Y7ErM&h%v=g${HRzN!a^1J6)g&nhUI|ch z>Xi!PqfO~JIb8yjb*7nu(H5`E zgS{oPkTJm0;0WIkV9L|B2LC#`5Ff#C=>4fGLAZ;s7=_{VKq!c+%`V()#s~m4K+3-$ zJ$3JMd%2wMjWvu6H`p^cN*)|JeB@M&t8-)p|&8NM^Tmbh2At`yCULUU{Dvf$g5^Il7$@@Ro;6~nOHwxA6F@Ad~?W4Go zcjcm>D8rgG**uwu-LS!mFP>)@c9Ms6V(S#uLg0NfB#=jVgcc-EK1#N*|8R7=k~dXK zCf##rd2eXP6Qi2k$kRSz{GxV|{7!kJHM~a3pOFF+Vc$xK=snJ`AZ3h%_?iPH;si1T zF123Oyt55}AAm;=S5mzwH^oG%8(<2*viX@)!U(_B^lgbGuQnByw(uV<2qsF{ z$&rj(wBXqCl3vP|Xad6l^$CzSDDI*R8wt2nJYjXl9?j$43?w}-dV}IXl7Hw;sB6B@ z519zlVb(tq&7`K`GraT&qaoSd+hIl-`_h3K@y8-q!JBl^b1NMJQN~gS7%5IpET$3g zhDd&Wjd4x=c&RbF?#mN>x<6vKdJl2Qd*Lj{Jn7Z#^^K;~7@HsYt5hlCxGi~(3boVE z*(=)b;aoCE?7pT@nAy>vmeF<*hEm5emPOG`W=Rf1SuPZ2yoj@D0v`?OYu?MU9pQtV zM27A)3-xFtn&<#3ky3x6vmU8dQAn-LT`I`;u!bB}&uVM!Dh!Q6*}agP?-Ngy#r zTskfFWjZA^z)BEkQM%OkGYkcZ!18(+D*ED~;s!IPGH|R3c5H#w7&>KYO6Hy+OyG;a z@y2_!((YNnB~c6a#(wG*VNT2(%G23O5NJ($y((3FH2(zIYZE#pnfa2Z>PCu+CsE`; zDYd;4N5?;vTvIet%8r+~w|ho^f4*W*5a_7Cna^F1DfP-hu=uL_70LfTuI=c zMPd0%e-oREcqor18n@cL1A3uRGa?NH`AC$*Q3G#bV%{{H-o{oR<41|NdvaF( ze0w~(y~fk`WUyHZ_0ummzEpS-q#?uL)kG1lr9+yVf+boy{G3mD&ml%xd3sn;<08E; z!sMLVvPDnwG4l|9iGgxY)a!@OP{MKLjIl+g)`c88 zPekQ0*N5c!cuPMnAZ}W!FO+bXnoSu|33N@KhVleT^{iZsROOZ7re`3L0vS5G(NWdM zPk1<`@p8}a9s>4J!xJ@Tcg2^V@<3hPMofL-Y;5==%!uWInqwJDWxQn&v`$^vKw(yQ-q|9Hj{9SAgH7hf%3fGk?wk>!!!E%qleRW)-|oJW#|Tls}( zKWXhq28*zf4myg}ihzFR2coco;TdCXWhZqi*Oo^43F-KazRyD-$xLl!K$%??X24_! zPgoj!wi9GV???s3J(IlGL}n}eeS|VpQUKZ7=+7|zHSeXD$MBE`H8bIqi5Kiap-&2X zcn@l3DetXlA>88G)l~y-=u7%|>)Gg~)a<7kWBrp{-SL1)d+8&4fu~bSgh+<}<=PwME@iy8~b z@M%Caz@lJyd(J)YueJ-@o&n{=aYEdfmuj&e!Q@KB-cop^!{i>%^4?Op=nxS0oaX6| zKmJ(JC72vzkKafwg@>(k5RZ&*!3dT-uACmyjVO3qW(8$DE#@jEoGS77q)#RnkSEdaIUkYXdsr z*ays|yi2_msPRSR2T~EzOJrab<9kcWs2u50!|pGgP=XXVS)2>!GEpJtS>d=7nxnA0 zCS>3Hjz{m6yiR$8-oY@+B1eXlq8qNxbMHJywaw0F<3=pCQlOV|50?DX$*TB1npGn) zVXS+R1EDoJQaq4+J&Ffd;wzRQBaXQ$sKjNyDTQM;MyC~}uD#KUk`7VlxGmtADS8>x zbaQ*Wp^^a*o~K4Wl)~mh5e`Ehqc=f+G@Oe(7@qQ^-ViHc?*vUUm2|yn{E>}W!cA#J zc*wBltYg159`IHr$D;0cDt?5IlA3mO|2f5Mh0T^QD~6kFUd|+lVt$or)nZ@_ z@dSD&TqlylKH}Ol2_j?dWoBIHa)q}H%DvbK`wj?~q6|JoC1?=2IK4iVs@;)P+0pxS z4L8aZIlOSh1K#o!f7&=c3SVd}*v?>&*Tyx)x?ewlsI;_KW+&d@Js91V>J1Z%@~#wp z9pUc@&Kbw6Ta`32`_5t3Hi-_l{Qr~IPCrrR`q$GHYy@UWMhLDz>nf`w57 zZ?Dfm%?9L2O9h)XIJ+1jFEQIwp*^w*T|GzXcaqDa7K^O7iKMs)8kfp^YR5{Vr_te8 zs+rx}kWo+Al5zcKyrS$o|E@8Wp{Ru%qRs61qYe}{EZ;IZR0Y4sOOA-o+OwMX8X<-) zhhzM2GVERt-DiBTREFsl9UMb)_t?Ct1Z|WsXX3sk1AjgusL9D?#`Fm2EziiqD;JvF z>qA|Ln9LG*>d3?5sgQ)oLk}Z42+{RtCsN3Mp*LRoMLn1eFRB2(m0Mn z3tNO||2KP@+#^uJq~Tbmdd(cb<-Pktyu_i&JJvoZdB8PTFV|%x+_EZ#tMUG78t_E% zynnH*yJvmrSw<)0QR5ed#pDNhf`rA>TVecOdrWrzk|9;Mt90tJwpr3$Je_0+g?qRM zKx|INl5+bs#`<3TtOPhynV9zxiCd6_{%BZtkLS1bJFQEuks}pPTGQ-8#?Xxs3agjc zC`<<>g$f?UR|#<_E6N_ewO#ol@YnCp=Sg^-q?-1^RUYKJ z2CG+CxkAY`CgkLCk`eKUJY2MgXjn^(g`*g%;2L%jtZ`T<_`w?VdofQoLnHOb)v1|$ zI+q4d9+NlJ**Xz;f<@sJ%ZI!xn#+;z#r5}`f~*)Qg#_No%LiJjG+qM8Zf^2|6jCz_ zrTbtQ=y;p!py}VGiI)*%_VTYtG*Dx)gjG2<=Hi#N9*1yGm9^EjC@tYu6h+WH>44Nc zMSV9sb6avAXhhw>M7%}P&F;nIYCLB?;}*BJ)(dpQuQ2uqEl%V8sHZRItE4c^v7Q^p z`$gD0lMA*MYoH1)Lm}@eTPhlN9Lc@7sL8l{MG>~)ZnYa;Qcog}L7RmAg&jX)Ehx$4 z#Co=bFMV98ZCIiK=rgL;(R;Uy%%g-^j>(o%OZ1&JnQJy@myzXxvyfhBe-K!iLqrwOVv6@VI1ms zx>yAFG--UH0c0OsTF%TMM!9_=Q_Y`Z7g921TbX*&FTgRa6Ul;n|x5K%bX0gwl!C_;h`Di9wd|2kHqjGt2i=N6`Px>~KkYu$f=WY^YB$3q`uRuN?cvVGg0gZ;o&J&CEWPY3y|^CX7ipTf)utu>MbLv zBnxY&^>Ai^_qwMfA=p@m+j7ft3&feQ>xsfE>dYMU()u--2@2Isj(G%z;HPS#M zX`~0ZchIdA;ch?Mwr#s9cUNtNcwGtuD=+pB zM0L;Dy>ayZ-o()(lC~1~%DUupGDht2joDkw`cxvGv*-rmJe?KQJeNnYz<<|^b*r37 zLJSUwQVNgXw|H_wL=Kp82pDJe)C>DZw1*Wh{7CR(#$Q$RL9XBB+rJ*2p8c;<@%^X$OZ3dM!8|e z$cwdz|I3}%?ulH^KL0XQsHL7i&vHwD{P9(qj=zlJ&+kvCFJG4;5~~1JLwI_IFsq~~ zuxZ#NQ&i*1RqJ+APJ@X#%Ku-EmNKnrbFns*q;W@vgtV|s$D)xoLs4)=IX z4i-+ugzX#xMSYGP44*_ z|Id8b{9V(H9IbPH9fg}v-!s|{Xu36vM{%GP!-&dnB?j61T+jI3I-n@QcOuYg!IB=q zgMn7keusik?>>{$W^J@eS$RuuZAOYjmYzmt%*a*tl$dt~{TQX^w?4;DciSiUp2n-R;B&+^)gS_qP!g3Syeix@v%ooGjPrS^sJf`mCg1)()S$nGm8G5 zQB==}Yr#nV`RAVxJxBI70Y^0nFJU6m$i(Po-(xyaZyIE_w9-FKL`;A)GJ2~;qt7Lb z4Ghyt)y|@zTheAPE|eb2-}lBHdQ*D1I{!T)i)K%BVxEsgUio{;5p;DqMIY=0NS(Kc zZO*Ta=%*RGcAqa#mp;(_dUdz!emxu5uV0(NZ)xj|V&r+cd_ImS!SLSmYU|aEDC^RL zc`8R#f%iU?mOZPaoMy&v#h93kKI<8-s;j=2?3eE~L0Fk6RkgS5bcP<(k|AQADvP1zZ`*<2j^RsNi8)bYbRkGIG4{b*%Y^)p}F}@FT_% z`nh=iMY}eq6;=Ai`!R&6abbWK~4v(Kv&)?ofJ0GnP%HHxF=T)F9lia`sZN)m3cMvqsN_jLtAZ zHM4q8JF9u0UULf@n_oM+PwNu)uH|F_(If>YPpKDWtxyo$@{@hP6}84vO-Wy2Q9MT% z`irq9S6)}B6V=1vVQ*0ec@#ID{jSr?>actBq{22u6Q_iyKBO{x<@OR zmXW%A)|c}viuNekw;YO;RUbv{R3ptQF#N*vHxmN*VP(Bi`l(Vs@#iG=HiL+`*DB4P zWkzmIrFFAMiZ;*AVjL9OsMdQ5V`cDs?yGa?%DRPwT@>RUxqqkNd%8+aw6D10QdOwH zo~rSGvrs)1c3CtwUk<0qjnkthINC4{=aPDUZjW*9drv$EdQFecuwv|1F|ZLv=-27#LQ}AX?Zn#*gh#MobCfsrg{`~eHWnOU3ma;YjXpGQ($WBLRn;)(w z&y)y^2+vaQCOG4KM>>-34Ic@7cpW(4d~fpL@?7~mT1u`rI4Egh$g_Yf1Wje zcTtHZg)GqI}mhF6si(mhk*XI|f};tAC{ zIs!8`m(O_>4tZ;ZmS0Bj*HgHX^o=nxe5cpnTCKU&STG)@w$Md`QM7UohP;~boBP4U z{0f@LC}}kUce|Wr^qZk@ktB)e{%nj2MaCXY%F=GUk24JS(c&GX(-rGrG~YXmh^C(cBfZFx-)=u7noF=hR+cZ8^TlLM#H5ss?O_O*~PH3S@M9) z^o@x&FIPAaL(+JMtw7SoFpi$l=;tP^8%oGEwbBVXjn0y0lM1uNvzLx1lfY2ycu9EcuLsK5=yqc3n%yUC}nR2s+y*iY4t8U8lHFEVO0HN?~$IAJZ#S{;?h z^*i$FMMqUH=^otBPQlNLsKm1v_$=czY*w%PR(x{=bY~>l-hw(Xo_o*Ci=6Shmse>h zz(tVJv!k=gBOzv~Eo))%h7r{!g9a1pdF})Ysk@kX80R$ajWg|zs_MLu`qCNZ{fp6~ z<oxxLXcV}@?HMyJo77H5*Qr|3Bf#6isHbMNoD4@teTF%nLbF=&WA&h)!5 z5FSY6hwLbU{GOXiS@qSbUL{NJ7AEimSC7rR%JhE3j$h$I^4SS;&(x)7_nH(T4u|_) z9SLM#F8500y~i+*9MAnTe7QSZtKZkzv>zxod(!n4QC1r$oCguk%xSRR@b!A{cgk$R zU>hhLn4LgRbe3!@MRI|lfIvps6Zjw)TVm`OMzCbo2U`J;7JjJDvezZ=1$++!$C?># zaIr0gY%5CJ2m?Nia372jAMSq28P|%JyA^s>u6z(|v{a+nnx-XfArBzlv6^YJrMQu} zOAoKaC_GYls17|F#|OnD0562xzs`B&_wPT>tz~#|B6|;weiWay^7HKgzKEIMDu^$e zKX*hu+WN`}e@55wclLnyDz!xzgtV)c!7R3=}JWxMda3k-lR=K?^ZM?mn)8bY8HBvs=D(he2uq$fM zdkR`6Tw5=aK%)H|2bNfDQe!Zb5UjK6Not#ECs_bw`4l**W_9y9GgygelJ78Y4^Zx{&&5Uy7U_Vp~uimgYymgCsf4+P7cklQ7&ia3TS;7HV z2BSMV=!;xFoyp8C5WHdy_3eb*@AB`qguE`Q{$%iwEJ&S23X@kp|KWn;)r|}>(e>iJ@A;fhcer5t)s_l> z)+>!~s<>c09C7R;fl46G|y&~B9DTQ zUO@=sp9<+1c%nqkYLfRWfr|Vdu*0OjjAjPEU(0D|tjOWv`&17$Wy>8+eU=89y%ktR zFIBNPrN&3O;BdO0b8X5wy4g7)MTNvj8QAsglZ? zw$;2>)bT=AhtB@a#7inw>gqxBGe?}2$GdveZ@(V#%iCF|>gUhD-v8~_kA4}#X7s*% zd7diNT(GB0#CTC;c{~4orV4&rMrM*G()+Wa?X#h6dO2|!synZFLp z>G_UFHZt%zP4De(EOP2p$Kxfd2xsd)`DkeB@s42Dh8uc^d6vdzzw}-byL;4mR;i6Q z`(2)?sbd}_<}sgH%ou3_@~ql=*$C#Cimae}I$%0uuVf6gC;(};k#VNYj?6; zH9~=uooBY%_&>)cU#>5dm}BQigiVre1k}Vi~UDy2w$bF+J*rTWQ$P7>yk5NA-4gfK22hTEg=gd+J5M z?%kwvW_m;=KL)EF5A2kpy}hNr=2%_(DxYto07j{wjWZbOWu0o3m)`T_d(Bha!xnHf zc5xU#?;>zV9X@cQ@2aZSmGSZ5Zy=1V9W*AZZ;gPxcXJ}3Q%@i%z9ZMbksC%PGY%qt z3j-&&E{mhpSu^gJsyn?%oT#1kww>v%3;oJl_tS|RujH<0dTwlN(&jBHF{^2V#~Ehh zwhvblo_jr-{!aHVn)sPh?6S{w^fEmG!)yZU2p{p^!D29`JtGL-YW@?R_(GBR;~FV4 zoXA2H$?NPH98-BNZEeq8a&j-#09na*Tc9B0bU75vt#IsRo^x*mEe0%u7#nuC!CCEv&t*+URpU{0dp2W- zf)Q)YHKoe94St@n85#OijVxTL{8&neD9V-4Be-0S{NPF%qhld>`0i_6jYM$(7@JCh zAFOSLGdkV#U?x8pt9WF3>+AJ&x0G$FD#9F6Z_uXG*HXgE!Fj%tk-;jz|NUbLXR*%S z#o%00;F(B8wf;ycxj=&V?xlp4iplN$Up|aQwQ5n`TE&s8C@`drF7i=yfJs1vvZ}D{ zXTM5$@Ej@bGN2&bNFw_W^kmNFbvbm+?pIVw}e@-X z#h|uzZ}*rfwjG3{6VLX&7_ReboiWaD-x`4b#~Js#6ls1gWf)cU_Hy8Fkp~claZpbh zTseI1x$n&_8GT088D%45U0(*#)})u^M*l5FU`$I&Fz*th^}t;N?vF z!Kk?vsfQ^gFr5ROi6S}FM9-<8=7T~iT@A?g`|;F7LgzI(y*$11m){TVg~)74^ce}* z73T|i`Q@E@a-*MAPyvSBJ+4)IB~C7f9OZ}so^9&uB`)fywz{X=z5l$MIG41JHuIQ6 zW}McTt8uVdByHGe#YnBD#uz_SYF03HvJAsaRugi6ubC3u_sVcD_d}<0Ox6^fIri|p zoX@?LZ|wB?9R06OcB`sCuFfLMJyVC7RrQ?q8n5c5j+Xv0_SFlqd(3bQ77J4~%i}dh zQKmhY4JCMpy*~i6l|?M`@8~n-t$I-d(F#uC=dWz==a05V7e$uV4T2%!URnzicurQR zZ`bhU9A&j$;^*hrYZ0Y4;Vh@|AzkFQsO&hh;mgC3#%qR6_hz`5I%7qk`{?`Wy>i~x z@;|N$)EGvnUqmFXruWt_aog1~0i)JFvp0H$g8Yue)ZHg+mV%iG)phjx^sBuf7+h3O8wR%>TGSV1;@QK1S`CdM(*kS$lg^BqJjVRAX;=lG(@G;8`wZS-g%GY z5_AH{)oz?7g-OzBj|Sq+2!6pvupw~dX2sjodRrYU>f*xNTc#T~eZKc6aCJKEf6bXQ z7JGTNFLy14XSL=*6wh-cy2J=_U>&KOB;KPS9re1&M*X}~%Dx@mpXH&)Sopr2o}0f} z6}E6>GaPvZwlOS0>tj!4sG4`eeYbO!gN?ioSF(e=rsM(J=#%ldV$Huha;GW5IQ`N3 z0_Xj=rTEb^TGiZ**#M%7X5r1{3KkKUMILV$(EX@H4%rH`zvmgi(h{=(&!8&RqqbCn z3jQq5%&<(jhwW5c#%esk=mBHk?ho?wQ`&8}1G+8jvO#Y&hSoyY_TfFr(fbK(t;?lFyiIu;#q{lts- z!AA>)DeUVsb#}(A7inY2-o_|VcyyMP(pA-W5as&}RN0hO%bgZ`t=Nw^jUyf6HL%$8 zixuut5ffLVLG!~>eb(%EV+9^`P6d~$D+X*fR&!MGbmW8abELv%>K*=3iQm`8_hJ01 z)Y&|`t#VJ*GjlZP&o@EY5s#I9+j6v&@bbSeQ!E#F1bokxazJ&Qif5Npia8z_v=?vw z>#s{weltX0zka)}!Ts}kI+Mj)<(vbJY?Ym}4>bG3g}E8$^U(uriL24)xu9WVS@rz7 z3&Vj8u+(Tuq1hnqnl5X68(NjB)x6KyPW~HRE;g!lCP?VPVb%C zXEcn_`PhXp-eevu#J)+YOI9s=GpYGZ3PLu@RkT=jF133gf^1kQN;y^E?M=^)zVoM& zBIOhh61?Z^^swla=Qv9HENwr6dU6B=2Hb;j!p<$3wJd0Za2IM(Afp+g34xV0ke zp-(x`g|wk3L4<+yI=RDxL(jbv`CzbJStJcHHDRxmd`ho7LS}7mLIpQtcQG!{R|0fP z5igQhZ&L$^VQ}@ldTy)H98tf8EBw4Fd9?dz=|9ftZM**SceaAg+w*zqTwl+hC#DJQ;+=1UNYr{^JNUyf~vl5?g#9Bq#{k>GSl9qfl+|*dB;K7 zpnF^>X>%o`|H$jKCw#PcqIq3x^igxYdl1=_7KC)aB?r**?MZ?*@a!1^&{jNPWfZ>W zA;gi)xw;6LUaPXrWwD>_bPgSem8w@ABPm-d|UOq%^)7VDDIeE z^yu8>o-ua^Muo8%f`GWqK63|0QeLdg>}YL7uW>5gb8tXazz@dl+n)w8xZsg{gLMRs z=tbk7ZUEU7l(Sta%5Z!%D$^6`NwbW-*%(?CHyfV83UZ9+s84p)&?D(&?KL*~NP7%J zX2DAL=z5AA|BZ+CVb0Akn?o^6iP_|T{`u#JL)A-@%Si3{BL}ehPE#se;HhRxZz0h8 zb5g6&G!?#|OyKh0A0@P&o^H0hO7AX{?0&qrHU9Cz>SL5rSmM$7FV&0aJ+a7qh9;I< zCf~|Q=Ax2b+A;UIxOqK%UZpn8H6_NIm1*mAy6DIGcPplqj`kEfy9RJX>dnoUq+HVo zMn;C{&S7vx{>}7k#P9J8Q}fP<(l9R7L!7CgSgetVcO|X%z-@~)VhmkDBx+7Yi%P7v z!WUN}2hU_q%xr{5mEZB!@0(2w&!pdsKy$Rh-t^F&H*T*pw)zpjdN<;4&p{E&>u3k_ z<=j@-x@S(Ow_AJNd0_j?-QL@p)^ADUa3nb~uEI_oCFUL``ZwH^BP#9mdzygR#@Orf z@No6)+Hm@u5gpgS*|n%G26fa`vjQo+JpHDZ!B{Xq^LyM@#KW+mnSuUQIqbvXNTbjTWH3+YxT^YXilACVtvuR~YzdZ*RxAwiQ^rLMTu$b}0? z#(NKdu}>?-j7Dc#X_}}fF%6`T*vYIZorP#t}bI9^g_6iv* zn|H6VaFhI~D7Ty{oxVu$_VucUlf?;3NgXw2loXOZk^zC?5%){GyNIHi4I1fi7DJi= zb?{NqPe`vTT9BW6Qgu=+)pJ5}54zItAO|C84aC&~;2{{`)|W}XPJ4TNx>brmQY3Qf zo2e6?9r{QF>u9G(_N}5vyd|5Bw8G-Ec;u>A7K+i{E&?JjOP%LIa`6ScX2k)SCc}SQ zi>``NdI#%Br<<_NUITb>95>2P8xL?9D|$f>Z73}7wKuh|Dy&3gJq<>TAJuke7fwHM z1{6r_Z26h@qdRnLw5;IVJGU0=t)}n!b3CdONXQB=9=n;dZbqF$e3m8lf13exvC0;F|opvS~B*NwsRzBrKXZ`@AYtxBUE;G?c2X`D-aPWbR}(`tsr6#67%0zi02-jT(`j*Py%_@dEaO-4RcEPD;)JbZwxYac8)f48bN;vbGLASqLwrZ3zP>M4o;~;2 zU0ybpnJTltvie-Dr|DS6j8C7j>Dq@Qd`-pqS#%eIGa9L7mG}G1( zi)%I3wKt7M7RbYja=>#{(F4C35plN|0it5kYDehSOIsaC-DNJfynxx7wu{p{$8mTZ9B(gqa@qX;(K zb9$Co8#xX#0{E?Yp8S0#X1m)e>2&lcnv(B#ULNSl<>w(-Lk}2h5gWjx;i0iZH+G2Rciuw^fT`D8PAci$Y~(HvkyD2@Ko2+$USZ3U3eie4@Hn*yg5EW=rY+Cs`l0nYo> z)RrX2_Z))T89k}3mwpm3m{ybfA$yW7Gw0$9*_@+4le}$5RvI0$$zm7*Zk-IzLvu7y zshV)nRpDb5qnUY73>Dwywl*jj8O2qphdU;WX;#hdTZ%RuKF{^dF`1Sb>!lHE=l`AX ztEp*Bd25QtO*Pr~I2#~TMa&6GZ+Tvy9sRX!aKZ3yt(4!s{X@q2XF1#CA|v*4<^W#) zxgDOr&wpkTQG2TNRjV5*TeYT6TP@lOR8wVLz(1a=!+xf!+AjkA{J;sU=6JZUQC+vA zXScjz(2`K?QL%;`Qpk5klXL5?`|(dlZMK{c<;C|KmT<^S$lu z?M~$L7NLBs;-`u?dnoyApB2fnFWeuWBC$k9I7l0_6qvBkMb4+ez+_bDLei?_Ruv`s z^BkQz%FEtlzuyf5DNM3bM057X@6mUBF8Cc~{17ay@_w)k4=>p}S9KNhvUmU(2@63% zqQcd3I(_0+7Gizmz*-wGRWPb_c&|~y_!--3vx0APpPzTn=>4zosvs0|PEV(AR~i(? z#4U@*wAfu?CS?E zQFbF(DaE~#d2Qa5kET2(DO)eCGU!JfHVi{EdM)y6|C{0x|IW1ai2I|+gp$s!BK`JG zuK&k*Xi~e~zyA7vuf@7N{5Z-MJzBr;GYTJh56OYMPw8)wsDll2N;6di%5fU#`8HJ~ z!3;a_%lp3EJ^QWlU0X9L6P~NR+oP-C$aDU5)losTmMSlKZzd6s_K2ml zDiVK+u_hUs>&`-nqeUA=&(K-Tw0w=89drl=h=*__m;<%l=$}~27SMgqwYmGigWxTB z1vkz;ywC=a?DA)B9lyCHjjJNDp2X1n8g4TdEIsy_25;N-J!UkB`kdxm4h(Wo|9RFg zY=-QHN#AfG^F!O`0Mk$`vTW98JBd8pRSKCE)QqBx84^V~P4+-@8?3~C4O=TUOVMP!^c2}>g?!tfD(q}pQvtI4H%`Ugv z3f_qYH|_^$&gS$SWOJ>Kj8F;PD~050cIs;M2i9|E{GQ)FD7zeaAD=nY2&3+9g5;7C z@memeig+OegZW+XYzigM4`Hxd?kQDSe61!s=O8B{H5<;1%G^^-p~Pvn0~V8|F%(&C zO~|O%`|RSV3oz#EnwMLVq21@ag`n@T3K(AY#I@<*sE6maE)OzcQS#>9_F_EaGhWt) z^H3tZ8wSUfuoRliO>#svxJn}`Y%zz4Z&kx>VxAvJqtC}4URU~8M?OCCeJQDy|4vj` zbu3)h?p*}X`hpj1_{W(9{r&sj=h-0a>(4OgCNz_wBs^luR8~qc7+LwXu{1b!wo-d>Mw0DI?o1Y*@F-E?$;#j_Y{?@#sV7{ z(@H%3Eyrih3|sOAD`VpV3BgS@hsE=HDvU2NL06K!e@x?9fp2ms8 zxut2jN&80dF=gUhKkGVToO66);--(hEZc68&Z=NU_EEKuZE;GM)VX0tHvrv+_sDeL z%0lL^+Bh2DGz8%E(;Xi+E*3iQy5xj9_ks7gjyAlB>t+8sdnAXeC)2|B!@W9Vtoor> zpCSA|8^Ly#kl#Dh047EN_{gLzw^=#dcdqVgIz{QFpO4IDuHXSr604#BgZm~BKgt-u=)fg(gj7{f zj|d=gzq#ASVj?gYY=A1RUB#zMdXVwkMjNqZxr6QElN1KNh>)dX(MT-_>^n8b-fpdf2CQ~{hOYu@;T$z@6cJQia z%E-~*k>BU^FWU)84J^mrOCOIiLPS?KGC9!NG=oQ9c<*cp%!rhsIyR6Gb~Ok2jek9rwYm3|!h03G#4k*Rect6|m%Sofpn1il^TqE{qo?;`>?;n{u8=F?fBx>A&>=r`5*wRlG* z0Bi1{0}apWar9^Q!)*}#eGBcZ2f2D~BX$Ou<&_Tf*#_) z%h?EC?(3;Egg2)C>-BI|2Phqhxt*(o)oSJh-eP4rWU*9a_**(xc{QALFQxks#4IGwTR>?)}O z1fHpThbsjox3AF}Yt2Gmiz~?~OJ_`bYmj3df|-3foCoLwnbl6yHvqOhYLZ24(O@Oe z2|kh)(vcc$57^&Bo9T5Ea2R_tZrQXh?(__FyJt3xX+dsC?-?JO`(2PRmda#0_=A@< ze>n?+*6a0reNMfqsxeYhE=MCP>z({hHa|urDL1odAP2#xcxj9Hnqj;}??3JeDJ^1L zId6_~?Yu}4kxg^OHm98R4k<>2C^Lu2o0gPCAyc#R8Q95WWZxrTa}Slss^Jw6p-1bJ z$j`%1{1_r=|)+kN{8X-{mYlP>mF)^@g|%wJ7gH_ z)7GP$$#2av38&t*KOsXP?9TjwG>Xf9NG;|0&}!PPbAh03)45W2jz4SQv%mm#$_lImypTEf)Bw z3RK=R8KtLcdR~)7LMnYi%kq1oAwRoGll^h0S?KqtHUJc{N9jvEn_e(;Eu@V$>Rt+i zy{to0F0%4CSzT?5V08{60gDlE6RU@0@4r_Yh=+?2aQK}(Ivb#ovaXdqY#@6SkNlj< z>m|;_+LEGipf6G9>6{j~Na#jg`1@QeaP`!xZE|pO4Dg%`n+e zwp72R#l61a+yjPn+z7>>~=#xH&R(+bN*u(#l65iy~|!&o832+ z#Jw{Wu;^57F)z`*zUB{_W4kqw@qjOrzta&AO@EjRe3SqIUuKOx7YkMnwIjaNYI6vi zUTIY9cqB5c+J~xCD~)KXeN@KUy}=w5*3D@_@}%~Vo-JD8-t1O2ZAQZdfXiY2dQJiLa%i zU3tbY2ih`E&Pq%l;(AjatXd<><>wp`tGjz}7eNA!FuQVc{H8y%lFZs;{QMaRC{$u7 z*R=jK6j%Jf4CL~FT;%8#Q2a9wdp3*PDRUn1qXkwyZLXT+W|7oU6xl1<7-)tAXNhw* zdG?>?nq|t@WB=c-fr(oeY7EAqMco%-Z7t8#+ki)`Glssc!7)Q?O<8^($S!2+0uNU>PU`M ziH^8FS5mDO)N?w9hiuecq*~FD#E_ekmY6QHh^|vu&SK(3`ugek~(q^us?HOzQRR$(iQ z(+1RI1QN${iVC*G0drT0E0MGLA}-iKcj0^e=LUrT_@GAp{QP>yIr9k5qm1B9ob+A? zZp81pudKhGDL#z|-i%->1g}B|Nn_!^i89)L#2{E%+M>CprBH+-3L%|#N}B}Zs=D99 z+%vF93HljykW{7&NIWGkEB@ST;=`tPd5@aUn{sno>k$q{oT)JO!U7Stcc-2TaTR`N zgpp0yJ_J@cUKI;i<>jI0Mek!qT;_otoeEn8Cey)+s*yx)M}R3@$)>Q^&EZQX+ZxQZ zEYd7ex8zvk#6b?OHd?jQ` zs1Qy~hzNUxX!Em3k67dE_jHujE3B}YJWzVeux_Hq%V%67y7s@uZL4k^A}e>C0Dw1# zbflxpR2aqZQQ-#%<1Pf_OpaK3*q<|r_HWIooBD!rAd*94j&#fP6i51*9=lkRa0b_C zqtMHojyhX5$k~a+HMkc&TO%F)8RAJYdy1b{v$r2TvlKcg%<#RW!ZZzBr@~c3$}5$Y zlq7dwU8d1nd-%4z%!(_7Z{j%SM_dH*FWK%TZ^4a%F-tg#{vUX&|ZH^inHbn+{L}CUZ*#NTf zXJZ5sMzJ$U8VO1;95%R%E?D{V*|Q$FUU4^jqhmko#ko$|v4jHLi=Nl!D!7BF3XkXK zIY<0a={Ap&z-hS{5|w z!PsY2iT3AM@gr4a*eux{a%d3>H)ijsxXYyEJ9_;}TDHxkGQ0xC?$P}~* z0Q4=!?{du-<9CU0p3gkLG~i(}7Y^Cel~nv0FZY5Q*IWJFS!290Fe~zKNJwpoemF!P z9Pa8UTsxqW9#HS#;IksVS;5i9D>Et!n%I!!=j6-|x6tMJccl1PbHKA`=+@N_GlI8z z8{;fs2haktV*-50)xy0Yu0z_C_wkJ085Z^^6~@s8X^zviUP->fwjgh09`<$zq)gOZI$ZwmbCyEWQh1hYU;SdYq=|`u&!=C>ez0i-oMTjW2*)?M~|a& zG{e3(mI_6tMSgVJfD=O7s;anK*Zh%8sv_vKo)s@Qiyp?RdqS+P6q|5w!^r+Uxc75IS7yQM1JTbnlj_piS$ znCzc_{&6?k8obEquX~?~#%-X%cuD(6yW9xi^-dwzDrz0c<3HlW-PfMR+3jh`wKW!> z1~l8HE3bhb!z41yr>toWmkh6&0QH?ndPxUa)oDA9gd1WxP>Or z+gKx~;B=;E0CZR?uq(00oop=QSa^1P@H&uG2+|U~b^YFiO_%%QN~N)k72O<8b4erHANC;z#rl?{X4#)=f`2+X6QtQw zPUZF%`!IkhR9tnDTHaa2PPU6fvzL!_TfpZ}_ybI=Jr;eVo|0_x`d2Wd?Mk zvsV$)s{_HIWf)ghU~No2T;0Ve(?lBSnZwk6hEe5yz`seg*dx}1q!>oAgow%z69p9) z9uWtDOSgvr&6?-1bz|!;IA-dbJj%Y?-u}UO7~81@11`d@7#N(A`IkR_Tt)>nDo_)IX#d-AL8ua>Ph1~{&2xd_ z7*^z7qQ4Y8@Kit(XwbQY7^NvXiy9TyRJ}UDZh+;UxV9#1=%sr{S87A&^ zX5Tm?tD+^0X%D^{?H9MURrsp~11h4p`M;T>CrhLHUaMqprNfMPfupLhJAu5vPQ1Z4 z|f6s@s zx8nVIsrw~rdwzDS)v44>gwE277MpQtky0f)HM%!<5?Qb_tKLL80N2$3ER$PrM&{Pa zb}?c%nWd&|WBy)~`)`u?sAD_L#ju(T?5M@U9BHuH`&!|nDjLq7J7=(Jhjakq_pCUb z3Py0Rd38Q}*P8>5JTY;_pmEMT8|bt4z8en=D_lpf`ruZJ-dj}9MNPwniUh`L>&QV` zy)vB6hm_STq7g#zdr$v#C)Q|>>y4fYGI<{vT{^8XsO&?%rTV&l{2;P%-b%9BRW@4HE}-;Wo)7{s@CtnKX_4Yux; zivjy~7I(OO$M-W2(1kn?`DS0C>1RC42e}gHc*F_zvV+-kUo}FWz_wZga3!0flB4() z=bx3@&w62xfI%R)dOx!=yz>@ZX4vZtMPX*Vx}S zPy^;K&hF>*GEDbyBu@bgfS-yw1Xgpl5?1g`T%tdopVf#P&c{J$Mvh@n%^0><`+hq@ zr*izgMRZknhb7$GwbKv$NI|GNV>URmxh1RLZ9XIIaC=fvGNFu2D|?ZX3_T;{GczDE zQIF|8-+!gToEM#oKI5g46846D&my1%jJ?^Yh~;#8QWp+`yEFJX*W{2t#Rq)72@Dfu z8VvS)21g4ijkT47xbmK*b$$Ctu5JI*Zn@3O{cr#6KYp$0xAWgG%kcU>O#C8`&)=KD zXzyu%E;9Mg@9(+I(XH>X9k9Re3?UU(o{0~P=S4Szg41c~YKz=jgy)t!p3y~g^pErP zU9RW#e2o{S>jtM>gk4Xk_FR6v_dmbhK_;%`y5eh5TZ|yEin~LsiJ8&b=nUojm`5Dv z*6KcI!)=+py;{-YObpM!fdYg@DJrgGm1T_a=k0BfPR}Wboo$SP*KHNR`9mPAt_ODa ztAeREQ>8ss1r}k4EZwu2F`n)wp`*hSy!=qA$zsMms)&zkG#~IYqQS?a$9q5?P@4O> zseU|N=_9v+P_Jdg(v#ok-;Fgp3O6S$qxl0;rOj2{xP(1E+<(%M5J@Kzs!28S$0Ru+V4ZWx8`5k?>?*Zj&Lr-KG)(EYJX?;hU)rDG*uo`BZs;||IjB0dbZ?L#Ga2`I4fujKH<~fCS zafN?7QX_9ARhr>{6@7s4t6lo-;CI0cI zJuOqex_2#g1+Hf-)N`a+Bi`>0ua!}ut0{l4vh8-tQzb4sGJ@40p3(a$d9Q}97!s|bKGxyBK-4DJRG|k4pRTMw=Dch?bL1Xz03=w*OXC|c4CQ7ghcTVLS z9k$AOurJ```T1ZRjSIFkn#iFQGaButxAAjiDru^tT%qgQBj+=M!O@XN{TQT_JZJkB2}1q^4wtFv@3k1)jZz^wW2+YMl-7ThUV~GTUyBQ2A08^Rfvyh z4O^{#R(NG~hvlHW%eQa;xEiab%+k*Kzy9@~S|^_QHrX~8q4<0cmv_`g)`1c9ls($s zoazG4&?@HkD)UZf95>6Vxlx}v!bFCTsJ~=yZ*QMeolY+Dx$A@b^qFQYDyP4d39*;f zv-0v;K3{Xy?7aFxD=lBW68Bc{ws*)^ltgCqgOs4}O_fU(kDPdqK{R&xXg{>mNWAYO zIM3|&tKLt(+ZFgMNR7VNywICby~t0cQNQ3#msYmR9(%f`yp61U`|k1JcPhNqwPor` zBxX*U$-P8^Ez*O6Wg|!$?Lt^O-(I@O8o5!QXcHXHqN{u7+?c0oq0*JYOP&E6L)(Ji zjbHEm44>iCtaYV_LvR?f9j%HmQfg<IXZL~NJ@CEM1h$~ z=R~Xs^ZZYykIOm@B*h$XOLkFY#X$7qAk^77vme zB^5i4@QQ3wqK>xKEehef9fA4Ul6F*Klca>qvZxHJd$Kw7K6n+TRHehY0RhY}Y41%) zw{@SiNbl>{U)RzO`qQlqE$L4)032M=l}2A9<2*gn7*cTiZ>!C?N7!^454hip^JePa zzMG-~*W|7VN3Iq$tsoB1qP7km&zA3@B3q4`JqohwF*u9^A2AklOC)%j9q`%10yG96 z@g_(wvnNd5`tMtR*K`~BTt|4S)rwt@TEO}NhC6Cu;#gI1;JH-&s8xZey|=Y_ng5nh zhugcdst3n2BWYuOK7^hN(YiZ+{`~7YhoeP*?jyf+tbDl|GELeg0w2$ZP7p9mo>SG$v=@^zU$&y2 z&1N4zVgP5K_mBZh8Udg!M$w})AIa6X{QK75b7VoaZ_jldje!s)c>}sHHmNxt(o^ZI z@f^^xGq}!yOKj5{o@bezFz~8+g)(qB9HAxUFDd5Rxm^uW0=Fx2Pd2iy@b>Ur|IE~# z9zKZycBG4FY8pr!B~i22&y=f2(mFd14520HZS1P7s|r+1?2s3{t zM}z*33^5rgrz#}PG{X<1>IyN*)RjLBQJ*Ec z{49t991R&WvIsy%ltc>dTVAb1SNGuo;T0#8^o)bsD#1=iopxiKFZcZATqL2IZeAM3 z-NrkifXeudo|)y5TSiU&fBjlCb8e@mVWNr|zSnmZOU!r{u}`0@%1IX_XJoLa63?fjg`iiwYn3%+3iP z47V-)JGwPEz-$P-{B?M9U~0ZT57z0W@ZRWDEmQU?tNWwEQ#ygs1|)j10&#wyzxVRF zFYgBFud^ZKGYsN$Xsr^Hdx?X!0&8I87;p|P2D${5Vr%45 zhuvgn#%hIcZyJ1GiM-)XmFJy#!Xu2OMO(pTax+vFYXjny`gU)_jOY}-^{pbxl@!VS zml$jpQl4M#Q?Uyu|3j(X+lRTcL}$jA&1dD=8r)yWLNIbrPxxHYVXlve6@#*+-+L?5 zVAbHv2CRcAn_I~5xk|j+jWPN+Fm;a}Fkjd*XJ$A_&tvAk#v?ZgtO3r-d*?WSV zv!9JN9=If_y4wveoBr2*{Iu7^wiXijaEpNL6}yCVDn6{rdCF`FeSJ{*eC@zW1#A3`ZG>xN@K8P5kSi zy|mA7B;5A~gd>J4tzv=6(PDGZ{+9iXL?Kq$I08dm`MutAnEfsj(2QgK{PB8M%(?8f zAMXzE%N=O%ihWObG^s8`)5z-+4JH_VM~;0b33H#B&2T8K33$X|+!Ot+rmF6KaIoXa zj$5buRauZH$>rLx-los-JWTQ@B5mvhN8wcFk5tS#B~C&}?CMN45NYKC5*T;tbvAx~ z{n|jV(x0C1s1t<0=0a_GFjnn#0l-y6O8(btb!vb4;nUM^!UJ7R1(QjBV$ujmAzZ=S zVzgJDXXTLgboV$KbXt_vK}QJr{Y1uKbX)F~2o&S%G_bdad;f-kp}{DPX+^fIwL&zt+(M?Hw{O!1+xZvSbFec8kHt?zoLr|XmV<#R|Y-UcT3UxYy9T-?|#QUHuL`H6p*QBAQ@ad=`dwtKrF+G%K{JN1n$_?{4LK zJ*I+l>9L$ypcvuEJ$*y(<5mE%BV%9U&?|bJsaqIiOOp9Ba?NKM;OH5gOjb7CB_*A* zk~3O(4+{6^+5?=^z9uvD^;=oZaund!veiRI>k`-A!fE4A*A5j)W_?Jr-|@iT;n_3A z{a6^df$!isZk}g-w_>I%gPY7TtOi5v1?{VQ?>SU3=+R*v8C&mTj3E2$2=(RPq2j#9 z`PxXC;$nJD(%kkKY2&06tST|%Olb`@IO8#FlCzZeu2VUv9p#C-Vg2cjeAzoZ8My%p zTfT`f*VLK{cgU2BE`U)BRE33Dy4)mfTAZ$GEsbsedK)l(E%vm}ingkig?*$0B-1ZD zllK00?XGf~Y|a|@u+Lc(QB~8xWAMUGQ&JmlZ&bW;usw*orvq6zken0kX9-Dr6v1tg zamyCL7326>xZvo&E9W)B5?6SCR`@m*%V~G+70Bk6UIS9Fq?WIDWk$&AXwRzw1UG`& zZfwNm>(v%9-=HnIy$yY!!^89TbT@!K3jm|yOX5u!HgGaL;cbzBz3)90rs=$;<)`pY zzatV%&L7cvi(pfg1KN?Xv?DMh6Iq#s>&PLs;hYK{y-t>yk@BH1yMN>r&k@-B)Gos5z2r>KdF38$1kXml8Oa~tZ-Z*uD8+Y-%@wVq z=Jt-pAAZ!#`&QmJ*Ivz^c!Z~D>JuK_(GA~cte0xu9(-=}GJ$&axr0MppKT#l%V)NG zWGtr1=&Zv?4&Lia)!x^Lqfc03uT$DnmEH0gd(vMQRot~>%+Hu3>fG*1N+*<&ygOC0 zZEkBe@xeB@L%_&t|s@$jbUB>HLxFxz0;?cK~iRqc7JRonBcCVa`T*J*k}@HKzSOo2oZb(#Ex1+~=ku_sd(zyExo7uH#D4 zNX;chO`Xo&Nwv3dT@e^weMG{nu%fEHu<~3zPnO*ay$E!LyR}u8pMp#FkeVsrG}-A1 zhS1>k-WEfQNJUxctz(szj^G9=qrBg^HRr%;EL9sKhuoqdj?giZTc}(kOmAy1{Hkd1 z3VvN_23j7!dNw&%rm`K?I0@@jW^rW8Iu5JAJq#+Nu2m0g&JG)FYrg)hke3!OfL0IH zHa`p{3r`vAMK>HOLU^t-`+-+@kd6YfvgYCJ{;Uz5;0S!Crw!)~+A|JB*dB=pRs&w+ zjmdpmZod6~iwa#0+yfn8Ty1biDUT1?sb=vH?`7n;dSPER-#M}ZqI3u{+e9ReOgP; z0s~a7E!cnqIcnk=pJ^4Q9-|^t)Gf5OYH#_h=9$a$;b0)eR;p38#!{>4agRa;ceJQ2 zIKZecHQz_1z|G96c>aCU9@u#FD{?T?o1{nUMLAAYF5%fXeV0zXv5io0+_n4FKGHRwj)8MsxZ2dC|Ph5v1!j+AjY0oU;wK(XE zt5}U{$Vl8j177igz72EwQO@k}-U7Eig7fDJJ=fx*UUiRt_AXp)#nck+B9N#Idlfh& zrq_NSu6>eSv#Bb6$vLvN#mIs;8@umd4?~E#oxO3!9~r zsi17boH)jaW5jo+NJLJO^QKJv!=FLQ&%I{Va}_&Go**03qaBGzdY@xD5S!dR$u1nE zQ}P;`7iOJ97Zqj^-Ad%=R6MB^vuMiCBUMQ32;I40b_4g5>OF}&x9D&tFfi(b;paq@ z*3laYm>P#;PuVdM?K>0M(q9apF9$4*Fk6cwIO8y!L^kD$eKme|mHOj)fl2+R5q>l) z{d?n8glKOv8@5W?#tJ7ah%1Yu-c3APj^-OJNJf9FA+#TWCB#!n!&HE34zF93yb;@V zF?h$`xsoUE-KY7Rzyl_^o0yu0(4q`h0kZN5sf#213Lj!kTwKHZB91zesY*zpdU=l+ zYfU-|pOcZCBTWm@`WljeZMqC=Gow4LjD<)eXfn64K6;x+^PNZ6Vp(WpqN(RNWl~lo>T9d zJxrW~4kyrr>k8IzWxY}!CJiQ%p~7ArV(!87L@Gl>Q+=k-PIox)ZCxRiR}mXHogo9d z96abNTg&!RPb$nEhwed3x%Xy4$}EMp+#1R@u7Ix^Q%A-`f+=%vJ75Q6=Yax@@mqe6 zePj%F#&oCx9#f;PpUpp-a9V}K`9*XAu<@#Lwj(s-AfBU3_)X~Ri**##t89|47z661 zjrK-UE@H>PWD4!;vvH{~re4+6^6geGVY96C_x2Q#k#)y_xczH1B;EW_4x_7ZJuv~k zmtj5_&Kywh0p%v!`xz6ZdJ0+s=}xCB9+@+UtX$@2ad=%+aJJ)Wcc#OSzU(+K_?Ce) zw1I=HaNO0@)se3y|2Y>cB>qf=aX5$}WbrQtcR6z+lD8U_jn*AiZSj87QSzPsoD*T8 zQ;rc>os-2zhufaqa_Gjp06f!RxC6uA^?}C|a{NxcDhv~Y%XjV>3ZK<2uZttQUf*SU z{A?An7^EA_t4%rTjb_-7Q$V+8^{RyF(2V7Qp_mk%{4DywNuk?;Nbyn}AcmhJNj~H1 za3%;p+keLP5+BS6)&}3zeJZ-i2i)2_TSa^nHQ2koNGyjqVU(ep>`};ZlYk}vw~UBQ z-9*b_86&p%GAXHxNv^8H`haNf7TcLIuCCKCkbi#4MtiHY&cf>?EUvbGVbKkYr!lP* zX?mc4TQqlwcu}jvup0TT(t|LDRa?;3O_avenus&C?W*cc^kd=66{l6DOg4l>gczc3Ijb1%M<%&>?lGk8y_`ie0N8gpJU>4Im-d~m0hn3f{l6NlU{gjF>FZj$=hvEB zJ^ah}S z?;yfa99i8;P(f{iH3dt|7Ddk6$z(=L1+7Fa7(I)1t{4=PAzf9ZIzv>+A!(b_z;kl$ zk_R}`4P2QavZrdt^@9}=+E<@xl5rNHFd(C-&M5;usI#c($Vqk?IS|eJd1ZHiy}Kzk zHmI{mg?+&Ewv!ZlDt_o_?K1L9Lbq84?9VMUkI|gPtpg##J8| zKKM6Cynv#f#FgqGW{>}l>0HKVJiEg!Ja#D6#&PfFm6TbGBUphG*f6YFk5{&e*X~K> zcz(tQU2VssTO7cBw5u2o-_@ur94Pl4Cw4b; zHE)U3a&Kc);Rrrj@it?G!cBHWIU?s;T%k}NGJ+Xe~ zxw7KLMfG|~8A?sWU;?uVyF>?DC@p*b-4E1CBF0CFRLzl0>V*$!MoO#d9ZqeTQJc!% znF4Q_VY?Me%Hl^mJk2=ykn_xle2fQfm0L3wNwk2|oMCj?;bGaTi~`MDZ2t~dGvSFD zSJQMULpxg|zx;Pk2uvfewJ74QD9)jE_#Vj=z&a@;apu_rFA^or`&&8JRpbzmF6nM=a8I2@i{q;v%_9_ zr`0K1)!c}xU@=QOjeT;6A)=-RTUMB>!qpywSluuGORB@j1)@~`&8jo22DYcM$mhDf zDzA?$0;s{m!bz*$Gm0TKYoWc@IHu_xqyBTwiur}3w0u=U&VATs59~2cRk70=oR1p6 zG=iKro{6Qy%!SSM>U~$mVCnVIm%YGyJVuIERz`q_<1~PXv1dTQ4G5XDDY_!g&K`hu z`^-)998#i^BNUBSs5Dh|c@=|9I!<#MImadWcfP;X)aB6>*_a*9ZRNn{{U%Jq--%Q( ztQ8sF!@+TwR6HR7vnR7pmi>rBW(`w*zZXsAkgF8ncr+5X$U$PkkGyc6p51Z8Ily7F z&S^JrJe*5X{1JYQgIbNq&(OgtPiPh6=ovDwKT-(}C=CDVvxqF=Cb3B?GHpv_MRVx)|!@8pY|g#1m_HRVMd8rb$&!; zy`fuMKR=&4K}?P*fdiDOy)ynRU)!$EEV5+b5 z4oo{BO+m)kZ^9OaGoW#}%cz%ba>zXsglHq%2I*em;4<`RB;3mLqT`ApSswC7GYgL^ z$WDlAFRku3!%mN$h03{k4as8oZ}uDKel&8_EsO4w85QkLTW_T54#7hZ%_ZU16UIn^ zAe2@qa8~IYwY7A^)w-33>CcBl27nEQXkxch>n+^5l}HF9j>q;v8%5V9dt1w}*Oc$i zBFf!5SUl&ZM(+I^GVI*tx|MjULcJwLPS;qLjF|MQ>!yz{oRDx?jo$577t$iZqUs8nli zAz1p`9Svp6WJWv|Bv@^?o3S1&v1J&>Y=%b|0GZ*qO>xUefgTjIRVVO~=#?PJJ?0hW zI~;WM>vPC-X1L+$QQ({R(yPfswMVuh#7fD!hfm?Djm>N=?OPCl&1rUe0_eTy<&j7* zQ^FAm*y5&nZL9b1f=@=bl^i^d%SNwirL)(z*yM^VxykF$QhL-Y4mIRyID1wCBD$r@ zOr(-rO$r%~W;k#dsg=lXHR2%x1zU6~Z8)ZC@!Bi?X)J68>8wCKRa7|}P_=cPoW{cb zFh*Y)!BwL=D)_xTn#X4(i05p7hs4ZA?I{{3F61g)3K`@e<-Hz)aoc)rdO$g zU&Wshj>$R_v2y=g*1#P#U}C)j0bo4_7sJ!=Hwda3kwa+p=g*v|g0ZgfCQ zRyJjYgO4FI5!}!N*Uws-GnRNS*;$#LX=8F( zq+HD!ljb#Q5^z8Tgprx!EJ&%iy2~l>(fNHv-@x#gzvZ4$SAkpruqNG6uinA_j292W zJVPIr(dO~oU5rMfv}8rIM<3w8^(4Va+3uRf)t}tMMw5u0;~#tTU|mRY|8S;WHehs@ zzzy}kSI&g%rjOiwIp{8XEB`Bz)Tpi0YX(JTi>lIWpCKd9dDl{ zp=IaDBU#vP1GsASdq2k;nq}`97>;<@l+}RtNBR<1XKQTf#oX!)(i>KSsJU*wf2;6R zeVWxgUX#a(lqv&gzMl2|Jm`88+dh%b#e z(Q9u;$le!e{Y*~ELZqAl)_x_b8Xj(mlJ=Sg_Tr2qjlk+>Zc}vIY~sq*I@0Qx#jlyI zva{W70QZ*Cd*08~7!D{04da&ulQaa6s+m+;fiCxdc2wM(rM!B5PD7GRONwlr!i;n+ zXJ4hvq`#IhUj@Eh)UcSSMPe=Y<*F;6=Yx_MPF92~=UfrbO^I2#k4NRMe802vlO0b; zhK=^)42!eE60D3Zx`RD~wxvnHqdZ}PP=tcYw&nXxqZ>t#N#Gt4qfe{ejC3Ktcr~K( z4Y~RSN5={(d$F}D!djVAI@(k-mi}Iiy=v}kGJ%t!CzLRTKJp>y|jHqsing>Zmry39Ot8I|`!f><-y7 zO0#lqqw|ve*Df-V_M`UXwVBN}Syj3**EnZ)d+nDDpoL2x#VGs$+_$%)qP}xUdch)nU zsXXu9cVrp8fmKIg-h1~!>fW`YlB=JOV1XVbu=hMTs@fW;cyBrF&kW|#=aGd!G72;! zojH|yfYk?L^?Sp4w)AxxmvE`NXZ3rZZ7yJ{o;XB)#Bf!dyDA#XiEx#{PIa2uVHqj% z_a!MFgcR5sCni79a-a4z_MK&n~EVAuqGO; za`!C-5#|`+^=ET${TUn@d+`L$EsmHn=dO58SX^x#4_>3t6dkf_E7lQlYu3gW2LGl;he znCA1JIgv{7r&o;}sRx0VVF)oIIUjk&FeEQ> zAYHvqD^gX#$!S(X=Hi^9uz53l-@@4JgTg*YoxF!3SD}5 zvJE5=n9JRy+Ek%NUJnU=3$OY?jnc<#74ke%4!UtOA10^lKCm{pHpb~-a0Ew+Rhn>3 z#AnQweZYOu2b?Wx8PO-z$p(c^lBy%)kr(~LM5xXNs=`@L`t$QmEy5KnZA;Jk=$W_| zoMwHTMmthqNL6$&vl64EP%!eiJzk-!)kMNXF)JI$qbIY+btHPR1yrvjmX50a zW?`pt5Z2DK_$Jwe4InsNPjWu7JGY{Zs?&Q&$sRV|oOX6m_11%PW$}nDn3_9lMp;}s z_G%AV!fQkiG6eC6TGNM45KCwq%jqfnI^s)0uG^zY~6nBt}c(vA7^nBixS<02et$vq27HmNrt2N)Bm`S$((&f}t@%+0o#Ln&PS^siP~BTZ~|Zqi|h*e~JV6{T`lf+`y_P zm0HNCs%3G>q^o3Fuw`RIcFic-2hZAddC#lf+8rW3EL-Rxqc*}vjTQ#l1Ml~?820v3 zkBIIHJowWrb7||?u=8r5SAMt8mEZeF#O(cUgOXL^(RvsQtcc+=HE-{&gg-p%#RU-C zldY0pHl!E6YZYsy<&uRDEc#g~%9vSyN&x1YaNYLc?Q50yJSXEh_aU-kr-VBhv zX{uBDnJs1U9v-wuF=mSaOh7gNp2pE)ng;UShUJ3@m8Na@G=O|Q zx^=x_JJkfMBvw}nF+{AR0>WxVmwO#??2e?<^dN!?Q0MS*n7me1;j1bhBr)A&T4Tgy zD^*b`gMraHSparKwD;^`(&nRhj%heCI&{~xpQFZ8MVf9$>**<0Qu#ecxDV{@*eUE9G`ZmEA4vSzF)NGd$HHM2W(>d86tQIE&M0r^?k# zhtcO%Yg7GqkGio3GjbX}`pm5qq7|(>ch*$b>jwQEKh&CXJ?VIBBAQQVJgyqq>VgK} zP3mq~BqMzcw+E4rQejt-D9% zb9xnLk1mfN9=E_*LaXs8+t6cpIV{j_y@2v2)EFk#$z1WbH*@&hy^ddQz@^kZy zQpY4buc#6G+7p{SdS3CCB1#Xd0d((y{2YQRwHz7r?8X`Oob${r)?vYn-hsj}GSJE0 zHYpnhrs#};$kq~3BT5fO$ifDdsKAJ~x?1(F3~s8eyF&zH*_#*Bi|{ER`fNHf=GkLc zOo^$^aXzn%=J)RViaK|)$N<$Fho3A+b~P9;0Hn0uSdUV&ml`vw0K359(A+6%)wAnL zUK+EU7{)`+YbC1b&2>%6K;Ea7J{6SzGG1Hy(L%>}9cJ9YUgl5+1J?;ljV&X@N;?eA~x z4edjpo?qVY<>mQWJ;oSgAQF_WB7;>iRa0PQ&u0Y}-{a?GU(BQ6Ars-BYPj#96QKyVWtWDXCRCcEf7D zGw3$P)s|6G@H;`&(I&@3`S3XHaihJby{+*3R;ewi1W|nsX;K>Ep4ZGYtn$>o=yA~u zeRL@AvEcddzb^CV>-}MLbN-5m>!@1CJ(AYhX|0TF9DUztUJ1sQl++j(2HD=-hKLG% zR%b^>(+9?DXS#|Fv47X|gp=E6J;)LK;zJFkY|G3M&&j~x^PEh!H&)k!8%9nHBj1d> zr?O=QKBu-h`0?IxI`2k-(K*T5zz8yMw^SCG;5xb}gvgq1Z0mi@Zq z^cE{U0>B^X2WI7{8WvO;3UH8AnWzY#8BJ}YpPV20^-mTxJg9|3X2IFL2Fmx~D8c~r zmYEK@4|-if>Jg!(;z)b7&#clwS1>aR z;IQ``q9?G8s5-MqjYDdOl`7)yXt9jcN+5xgq4;L{k1Ob8cg7Mu!y|c?TgMqxg_aZx zAyTx%b`gc=HKSu?jRT(KY2~5tr9GZgPj^2L{7NT7B`ANSvpx$oDYI){7J0Qz8f=sHoIL2ApPksWYPysvFMV@srD zY)TF|4wnd|nkUh#uu@p?+zS59VznM0nox?hC@TuiXdpMvEe-I>{zwdsh>&|qZ9@0; zR#ANq(={>MXWM$7b}X#BarLCB_2jX7_5fUQWOppU%ymG$GEVHlU?WPE|NER-jHDzm?>C%I2s3p*;*yf~!$mqOkLNJ%5Z+-`?8&T#6&l&$s4( zt7})qpAlUI?27ftikz>1i?>cb7Hi=&lh0{6v2@c2#+~)ZuJEO-$uz*4eHFy?uM!hcn z0EapFv0C#Me0dZgWz&M6bEO>Q^&C<0u8w1tc2dPzQAplWl3sne3e*lkauzEPxF^R> zTG9UAXa}i4Y-3kNgIm(yE4T3Zz54s~_HOjXsgJAQTQNruulE3K1N@oJua0r_Ooyr` z7vsX3TH@STU*0>>L~{FD`fF7px*Aqy`r_c|aB`cQ$1%3gHs>`DI??D%eZ*0b*PImX zQEHOYQle8jx7r^HHe9cV2PIsQ8jkD}3Qq39&4P)eN4E+39(wrah+V)M_nHJe+m~nK z{`iW$VJqEk%aq2G+p(}S`N&_^(2kA!`Y0O z@t_&TLv)jzN)N}vaCr!PMl}ZDE6Bz3l8r;V7*eSnZxMja;r1R>Ww^mbKx<7_+)CdI z&IKa3XAigEgRGrX7l9>M=U&x&w0FrID#6&SlzR$f-b0RQT`g#yMv=zo=UXC_(P8U# z4VZ{c1Oex46e0DnJ8+Fm-zvqHOd&i>dy9Pe`5Kh9=@n z1GuHC=Lb5g>K+kQW4JkZV0<>@6_~#_E$g+EwKXJqwlM<7^B^A6KfIA$1YvKsC?q4R znFDm6Z>GX_D$aC>LfMNL8N(&eFN{N_II1hHJ*Ai^y_Ry@!&)#DY4JBY>~sC zJzGArr>x`jEdlrJrM0rS@0IskX=KJ+@I2j$_f{RKY>gxeBnu&`vynH&$DBnB#!B(# z5y#iQ2h0>hnDd!2jK&YMUl`2QLBq9L8jTLgCv_%3mNgq)ne#~;q0X{QvKX#|`|Ghm ztoVLs0O9*M#XB-O!DD-nbEXPjFsCJ{6;~Obs`s{Pl+S_WPLWLzt$2YI9yeN(l(b*L zLPoM*Iq+tb8gSq(^pMlURwnkXIylpLh(MA*=XR`izz~*ogw7s>UQ@}DWmLWrk((fE z3QvWF`A~Y=A5k?<+{Vw<*Bmb7GDs7~9#PV;%-s5~*y ze8tt4SmS$Uc#NhqIxw;7bxy;xf>Q=v4t!2#-S^aLXFR?w4fIKZb^7UnE`HBSXq<+y z>R1?w2{;X^h@)E!gcsXW>fkcDO=?CN-~slq(iwGP#RJdoYc{gdpOgK*PBBx)jJ1Yt zl=EZ~4tYctjP8c2lOgvB4%?9{hsf7xJlUNtK5+c~=qRvv7BOZv%vPFlRE$#~3xv3i zVN9V~IGzM6mJ1{6BEs%f>_=k*ut7M&p0hRFkgb@!$Gz`K4f1|HnQOzM9WB|-!m_cP z^73G~K*I1!Cv7V}@W`gx5&=CI)m^u=`GK;=RTs*vs$5mKj=&CAxmuOljqy!BDR8|Ff<@^}4A#$Wa ze%~p*RomQzqNB3%7DJH|`pLsGreG;=N25noOSc%cD*an|KL@*#2=c$LXeajgen&-s zE5-nAK$5@KT6@M!{eD+XEAa{IMH=WfSFXZB4Xh`Wu_fa7B(yYSjzUS_h? zKHM^hu{VMEh{5r*XI{OB;DX-sbW}Vy^a+^_MC96D@Gz~`P0N8gIHFC zCHEEuh-3-py~aK`{_mBFrX#4Mi&ZOC?JA;nL1Hwh$h^5MG$asT8Bn6Mgao!4cB_{= zs$>cx-(lyUV-|4MS4pM!Ov%Cl#tuDeWA>~^D$rXEUxl+-YAc78n>z_qg_FS001;57 z_d0^jwa`f?PQ!mGx`EJu|T4}<<5{>~b)U+Eyikj(V*KKqru*6`;%Bge{5RI%B2S*&u8 zGLGL-nH|6$hm}ReJyCPgz|1#383eUtk_Se+I=dPPZasK>ADf1#!1RTj@$d+ZV>U_d z5hK{EBC`oNNTakb2go?`GjZG!WEFt@=yNfaWO8vugsxJx+*|Zu6ImKR;(bIRnf|0y z(j!IytU0lv#E;x%gJA=*X-?bY5*+zi9eRt9$UfoSr(I_)4WVVW_+yoo987Nb%F<_i z-YS0IgImDvW@AvdGEh7o<7EB~ht423Z}eP*qar0=AP2~7azb*_pOmGqj9vcO0>W;I zn6}_CsWg(kj7~KjdHCSwjtp?Hs+?xPz3WKa}+oQ`A*IpvQlKRG!q-fMTL7U!H@W- zqcj{C-Z}eFElZEbPL3kg&($;&!{A<7o|)T|93gmyOK$$Qw}>9CGUKY|BYaSc>QcF6 z4KaQ^4-B@kK2qpR%k8j6?RFKu`x%(vmH}6miRYQN6hB)PJrl(D-kwi8YaXpj<#iMG>99fTqZ|EmAWAh?c0?8N1}8mCa`i|o z^3lj*B?YrLHDkZm283tMQH5#r{k~ocVfL+B_!7gDT+mVL8P`t4faiAv#C7IqM9-zp zq25kWX$dqu^GIu%=@vwBI7tspaxpM5y-_h{mZEOa(cC|jYaSUHn!yN~pY(S@R9{%GB zbdr`i@NK=?^R=ky><}84BeFAJkkmK@Dv0!xKS=dI3t_&FSr^L+<;0LnN=fCsW(ysR zAb}AbY;U%3MAX;Q_H}z7II)8u%|7+LH&S~ zxjO4ed0mSjSb09w7M0Cw%7UeFdc3Vi4GA}f=kbQm32Kg#JiFEDB;;zMh+agqm0-Jq z`&9;!bP5o8rht(u&e`~F51l|Z@1bgG?5#SaIXR5YJ;PoQ*6=l1q_e{9?AY8TL|O&# zJ{xwkrLa@cVmLT1Zn(hFYh$bA{kL*tM|kTN%xjkNR{N{^U2AT-(BbTlJ%*Fp0-4MV zH_^X^YW-cFL+;aaRR{!_^`M>}7Umx&4d4m!KpxS{acKQKEk|q8v!U(e$ zrTJ{APj#2X04;oKo);d3iq>isck4aO{GyqFo9okZz+Jgyht%UjEwZH%Q=bzV963)_Ami@{-xNR#bIgbAD zqSe6mUPPP^(LK`u)+yFW3hI=CnGWE%M8wtiTXsFytaq55dME9m_Y4!7FfO+`#66!4 zhIpobnDb`y@71$Njmxaeuj(zjV(O~A!TKByzjtr0806l++c}uBX8iAwIn%wfL>5D^ zK!?f7q&>rQ>D=G%;eVVsES?UP`dJSD-AvxA@T?Gpw=9-ht+p&In-Dw;P=D)u-yWSM z|BZ!pCCuDKe$R43GiZRd@?fFltC2EbbTD$>n0}8VLkdJaey90zl^|;x5dOPeL-t{2 zik0_i=V2^v&!IAY#eG_)e{^sv4yo_W9TR@WRx)YdHS7LxmV*(^;oeqkwh`PVXv%W1}~cHt+E``EQJ$g)|aW?-_<3@6L{g^#T&IMqN@dMl=uiiQDjH zQHp3kN%Skw(`pJnN}+9xX3u@4@HG0}YTw$B8S5T(p;er}>hn)2_Q(Jmus0tj(qZ^L zd#iB2`(@RSq>`-A2S%xARX}j>v=0aGN%~N40$*N7MtKy8z-TI*%;}uLWiTezhJs8L zA@SJ_KA^K>iziPN=H4hnuk8$fCHl(sWk0)OixJPLa5W0#T9OLlwyjh<@8NRU>4T9T zT@wx!2ebv-oIRUrWGU-v*2hs8-<|@aovDjtX#`UtCgszr@4Xs8Jf|@igTQW_-eUZY zPKUSBRV?m66u6~DZfo_;1Wt1&Evs(a)VheHHbajU0E;t@=Z1b?V?|wPhKvfCXJ#<} zH6uui+F~d(8d%-@vks0KXUr8pFwji#G1{Xl{OpCJNr7AAUKF1kRrVMW)_`6Xue_e|KsJ%rhUe^5%bUij za5ZLf<@qL7mMVM0$;v=0*bh7>qGIy{iTo<#SK-CY*nru3V9}~U zFoc2gS}~lxdmN>}tf8aLf2Z+-?cmX$D0@2_^8O*po_+VpQsG2)8MzoE+Iu5MVuD+~ zXC@D|dR?P}$V%H&@4Fl+W&~$)v-y1-K9i!iC}n`j+1L@`wS&qa@+vLF3xlU^aTLZJ z-D7Lf(A5J>B=2-Q2cO%?SO$ND8*!+zbuuA^>`5LK$Sfq%YvW5%kjg=O01?>gYHFG3 zVX_peqT?f-HmjIl6)fcEq~w+dP^IKQ*%HrjG%xrZkYpQB4kYo0`2SyPmEzt*uBOYm z+1#5F9uvmT(HDnr?=x`<>pobF5$Sqfx3AZc>#AS`6>_>dFl4@lRfAe>>g-Ro12-<) z6I3=vQ7eK7iy;pnDDm&0%vK7f4068nysqn0LL&Stpr6Yw6-J5wl+CLOEa=2DLcQ$|f z&Ze*5QP3{#l^IL9&LdEA zKZ|czm#`TbxRvby;gq&G{FOqC$EdQ-7$Zk~#yj10)5E}BM9cS95>tBzPi;MStAeI3 z1d$2RgKXVF2OA!X$@B6)=lf5t=%zOsP5F8>Vp_5MTT;xUBD|h_&fbVNdv7!9<1iE9 zabVqhNl5QVyee>PS*PT7rF>RWhfL~qVJ9Pqs+yYD-!?833x5xVw$&Gg%|m)H-kJKY z46|oltj?43saFa#iJSIjRJ)zbDkq#hA{_d%t%>I-l?XE%25fwB7H(k3sJT*II$ELn zk**PEs(GHA5rO$yl_=*zUsGTf4s5~Q0!I#VeiUDOWGMC{73UQxpOw$FfP_;q@IKQ^ z7+zy_+$~DnTQJH@AzZEYbUqADZ%S9?&^*t@GheNx=X55k%Ohb3Yw%gdK8G)P-A12> zAd z3f}a{S`cM8Rdv;ubQpu?wzZ1a*WN>v2T<*TfDOOf$B2MDQ+729ulXXlLiDHqWB1A-~Tv0@U|s5VXwBE0D^{z6N%|=pK>MRwEQ1HKb`XuoFNR zo^@UYGbdNO$d7yNPDhHKRvy!Oe`!$MVUaUwKQkrH1)qV#J;iEk9CD9UMc0)sw{jg> z6zWBS@B@iHtTgRNm3y!fi1}Bf85nM>@>uC4BR6m@{(W!7u-9ENb5N$$q}tqFFRIie6;zC&nFDoHrE1FzkUbqFzAtZ9jG)Qo9;lPzo1aA#_cgk` z%eab-inSpzlF9GOzE+Po;5|e?PQyqS_f)m>?^|Yua1U-#tk&I;qRH)5LBz9nozmxC zVh@<$%)ir{?~Vu0Cb594xsE;DdejHc?|?z#u!zWef+VX^--uc8hy!22VtWjO^L?8q zQ&oH)eR&W#9?iXzJ_POWElkf+HE97=AP(tKY2j9d;XNsI79DK-Jf|a#;*r?ND#&aK zl)o3plXLOHjhPB#bhjD{2SIQaF}PM0dSv`SOF?tCB2^H&z>v&U$)BaL~dYsHtZBOeDEo7x!u&xu{j)T0FsuICSwFWpo~Zp zqi0Ifh{fQ+^&TNx^|9~enx^;zc&D+^f9LDuRHip>anHfWb9zvBg$r6`#+Z=-(y;etKw6PP$`XcvP=!C28w8jzjInZFuEuGaHbzlzS zZ05)oBb58zk*3q^Dj?{Iy;emn8_iW&vC;rOn(pQW<2@5Z_26|5g9|T77VS-)^L)@z z1olW&;2Fs_#z$a^?x&qKp067B*;Ki$YqMq0)!l~DpmDSIaf(EA?sUPx8eiktTLX?x znInZcs%K;M7Voj1)+Eo9J(C0BtKUyqCu>OZUUx5Gq*BSpvwLiC-REs(A6{0X9^s(9 z7S5H7!{^p;KO1QB~ceWfH&z|+cq{?T^%bvjW zker#3*kD!eucmT6^74fGN7C)yCh>sj?7v*)V2;wcUW&5v8CE^1y!Gh!J$26x#fIN1 zzfO~UV2FB*je((A6!gf-J<*iss#FJuwB7e<#gbmzV$QL)zGLE|j>0WE;SL=*g2pF# zW~SGqY?#L*RQs|1Fc%ldcZ#AcyEM!UrwC!qQVn1?ZF)eBSqbn#oo#* zOK)jUX~`W&n>HFQ{imE2odxa1lszIW8_}%|=)H#X5sfCXw={k{H?TOOA=HYqVqf7$ z7&Ai~sk&@2P>ihU9T^!P&4H{6N&dc^t!(ucA|C<=Q&d(I)l;O_5iZ}2u`^AH=!^`b zlF2uZkfwsna_DlYjA+ij@gDP(JB-t+f>Kq;P9ft(=x-*NKfPpXcwXW(OM&1b=n9YdD6z zH*3RWO{`s*g|9uus0t%B4C7jXGp;Pu-97j7KfnL%t#D*l5B>IfwV1E3mq_sIx33=n z&gz0K%;Q#CX(Vl8ymj2x=Pg?A@K99T15Zr|U|2w~r z_co|&40P0^yhWLMwP=*HDLiMD=-oJAZz`I9Mg+{Et_lGjC=YJREZ;O_RlC;Ak#S#1 zvtW;Vha}WHY$!d-=N~>~0bA`R!^9ab7RK%-8K7e*N#y*I$O~`>&MqYfDep zdjC8_6w6E`=n8JChTyHdDN(<0-*8Wf;t|S2Z-Zxeoy8g!+#ZKM-YP{;B5ZmnqAf5l z4w&1a_C|H1`>yUE!^8o}g9kzQpa1;laFBXsG*XMsYn@mh#y>|>=J>-c#vfzao>g1uoHDn0rNR*Vf@eJ1r>>-Wj|gtNP9}AgKbCyWH2$?djutnvHw8e$mtOU0cn!Z(mEgM-St1+Y+pQ_Yqo}+ayeW zjsPT)Bv{ZR(%dTtq!L)QWx$SlPcXbOi=aFx~e?;!@lyoYt(8C)Vn_!EV??_8QFW?FhG^~CJ_pS zjOt)#ClsxL73IoepJq^aen>`T{47&;Kc9U5J!*+nta&b@=yN6YwE?_6h80+FUD&)T4Vy%!Mc@ z(^!NKdN9ToI!fhGl2T=|(@RZ+}JeX0*orRhjrMimIEmPDmP-XMah+~W%E+L__4(`X^IKkscF-X^$AZrj@Bw%4c=eXhUcN#dQG&|M};i%TXu>!>LC`Tb4=6!<3y8-a!1fC!9Ts z`9axWBUQ@WM40PlDTU=MdT_S(bQFnAWPwe*-%arar13iqBb+KtsU_VyTo50R-0Kcg;< z%!DoxWoupg@y>Dl&%3l6XGZ4u^XHEe^}EkrZp{==uW#3Dd?9pY(e6A(LORd=klnqJ z=}n3Dtb>Nf*i+d(DgyKnavzvpIG(hQRQPaORT)WF;HoOKy>oVB0zNW+&DAKqITDi@-_;7rQ)guDvJV_KY{02fbt+jFZ5H>>;nR18;1V(oK@S0rH( z568wy>~95+TEUUBBGgM+dmfC3%F)O}x7G-+N^l1agSat#t&A*~^Lbod_s;#|!I_qq5wts4Rvf1fr?vOe2(bn^ zQqooIBrfxN7$H}*-SX-6@2#y{^?Lgzg@wI`Dk0*mUgs!+6erF-omE(z2s9cyhgGM{ zJ@V&r{@$*I5U({Dsj~#G^X28s(>nwD@|>RD3EO{vzn=N`&;RSxtmZ%dak2ETKkw7n zi>(W$b&CSu?mdOs=-w2B#5taD#=l$Ps#OtLZjAIil@f*L%G#Kj+3$)ppGAsn&Ys6! zRxhGUw+vPr)2VMe@bH})eFO6N7G1#H@K$4?3&0Zn`Tq8EcM9wgB+V$y<03f#rom){ z4GA6n$Q&{1w0J~#wz1=Rn6T_twk${_QP^oM2S2qhskque=DA7Xi3;x}3d}Y+~R)=8+PxMQUZ*K@uj|t#&X@l*;7X?x<)|S?`kIZ{uk37HsUwhLp z7y9(|{kfX0a%#X~tMs0|&`ap>Jt^vQ`g{HR+ZkNs#@*I7ic(e&N)^?3GM9_e_TJGI0-(-r=hHysZ(FJ_ena0M1lU? z%DLFV`MXDLb=9Uf$ICKf?uYg~Uq?P*U|^H82y@2obaegy@%BDVj^xU7Ab?DgHPVON zi)1F#n#pw7!|%)PWzF`e!(QH0kxXDS0&u_)iTuNwe(HJsX1c42OlAUs2oDc;9>Lr5 z)L``#E8UN;@t7K8;f$rR+Bv@uXXYb862L6L(0OEy4|jPVIWTPi-m}bP%y2ZZ!psiN z1liyTNsbi(xpFWw{l%)HSH+fc|FCbgG@lCQ`)+P{h(R!4Qys*V6E^OU^FCe!ATG8D z3%czbq&@^`dbko4eeMoxLKvnYcCpvZy)xXtr$oc}0$Vxx`*{t;+-@``7A+1J?ytD|{jCN+2ws&w6s{4VgOpF9*TaVDTC- zgJE8$-IDGsQ#j(OVS})sAx<66VsHZBYdDoSYvgiyWUOSbfo0nf07ob4Cyg3xd@JoU zx=-94ML=deip3SM&_@JUzQRQVAue|ntexj)zL5fEEc4Lg8O7=XL+uBbpN zcx-R2V@-~pF{>|Q{OwG1zGI`kNu_6)cYC(*R0T=Dl=c1-$Z0*pcsu5Hs7{WC|uUs z0el2N9?(C!7S=0dtYvQu?8@ij;KbK4DpB}k3E$3Jv7l+2E(PC9} zjz0TY6NHt*ZFikVB$?BOLv8Ol*%H`pVE&EQ#lgsvHnx$*-)jRc?(YaM#B=1Y+bJlk z9K#0y%Z%Cez!@cfPFvA1FA$%V6{nA8k@;{KjV@Z~=PJ&3H8^g5-nak2`=c`8sU!;{ zNhK?B%pNwWf6Jfg|N5W*{Xf=h?@PoGB(l~LYE3aUkkyj6&m!8JIYiT35_`vKV)>W1 z&EwNfAscCP;Io0lW)ghzF>L@3jFZ0qrwq`^rx{!3elK%>g`;!F(K8tV?~k5j zX9vV12xWUgoB!AZ>274RG(BqO8`pg^Pc8T%qbwO4$~04_VHZsIjr~ruNNL;<7bD@3CxnOpS$r#{7YcT z{Cyl$F#Wp}YuuVp*4LK4(?WxSMt1w6MbWF6C@wPW9QVWj| zF$(`|t6}}-{35rl$*`73nRA$)j!}HjE{@ zGM2^Kgj^!Y0)sjUHrz;kWt3eYfL;v(BLe8CGs|5_8)PjLpFJ`_k+Eei8*=Y4@_FQo zvnCukAQt1An47ofS8_&Q!ae7*_N;?@M3x;1Ss;j5@;H}=JjctQ-x7rpL`H##XKF`2 z8ko=+Da%-em{Hf2y@~hiDOefCW@!k*EIz^n_#-d|dk}Sd z!?nq?K0t2ysaA-^(f!i*MaNxU-|vv{qiJT$cg#+P(&;UXcPT%mpAuW!T3XPXtZ%qr z_X8pSnJofGeyseExD9W+bx8BAPy_Se@Su1&o~J_gtSo;+2EOtO*MY1ce`@iG&)k6nCnu7-m60i^gi!JYR7t9l<{b^O`(bT&uT4GzsK2iq18JXb9m2IJWL zwL7?J3Iv4>nvBWyQU_8)3&*CaDj2XDuTi^^OCd&M1SOV=7=P!S^E=Tu#`Xa?!@vVN z6LuVRtJtFzV^P+>6?h0|Ay5io1(1=)0GDaM-JpA!j4k>3^D+VX)4+<+x;@Ma8=1S5 zoSDk?AUKZ>yQ6aIfA=qjHJCKZpA%USV^Um_j#Qv61%%fc-(L#_vECz>yUYt^`jV}r zIJoTv1_btz$O7{Y+2@C0C4P>qQey+?nJy()Z6n{8qlSm|1iuSz{F9 z64YVvJ78`uQh*zk6qQ>?<$-l?Lv-ZNE7Y28w$~acJfM%$>30QhY{wCsBX9!vcFO-G$)K6#Vc@^p{CI9inWepYS%cL^qZ@{5DT zh;zsA00#`*V~g2wfMh9lZVa*9JO??>BCTkGZFKErS*$>9@i>dyap2)=8{vc&Qo(by zc(^Tv&(vKQpT0tX?gCo4p7nJRC%LgSTWaf6Wd4S+WQsWr^syy~NZz8>&r8?jP%LnL zvEbXV_oyp0tm#WuiNBLS@0kW&4Itc|w3dywdp8=5vlIy6X7)tie6C-pQ`9RH%VvjsB$C3_x}+U3pV8m4$tAndofIu8`@m zFvO@_#MfDwg@Yh-^!Ok_aJASkzqVC-9%W>#;KG?KXOS#?foI6-Of~^vjPz`sSwV-r z$&UdUiNpqP3VJV=^=1&7!3C$N{Lyp|%t^(}1CIHS>nhOh!N9OFTDQ9=qJK;Cx>U$uu zy+;TH*r-@|N4Od{d!S*sC&gv6W|lA?8Ae?dHf8YvKnE7*+6!u|Gl&Y{PpHjscEemb zT&vBX5Y%`LqN!m6IvZfIPl+9Qv&u16V~?{)s}2Kw!BNwLm8_5C>Ur(jGTu%ral?(h zH5e1-!}I7FeIk5%);Zq%T{4MBYJbNSrQ)R$+i3c_?MF!kCa< zh<_?m;n`qp4!ePl%1;)dxZ(=NR!dOS8 z7haeBD{PqwsD$yrk+!21tsP0~vm(mq>&T{%^;_9|G$+_&gYT!+FWkGomZQjrJ=-o= ztj^lDTKP6s=iU=OxLWd}2Y`xzv1EJjRAG#t_4-S5Gw+o~6pR?%)f%|y7u2q-@8g^^ z8K6E~q=w~(>&O%4EG4?qgGRY1LD0o?smoJKhr%;dXQs&y6sOZJ9mU>IY-;NzYkhgS z(ZS>^s9LS?(Rm8Fm_C1a9M+pvb}Znnf1Q zU;{iS))^elW!ug!m;4OapE;O~e0r_vJ+2+u74!7$^JmS$k;xIho(wOItq<_5kclxC z%Qg#^zBFpMj6@UIUzlMZydKuT8E2C_z*gnv>~P;zgn?g&@leM7V%2i?0hZv01GB2( zpkLt{|I;QwHF+5`pE z*%VWra8KB-l;4L{We@=N2)w|Vu1uC7P++0}8yC+NloxyWjhY0UJu!oT%R~7LAeaM} z#r?8fS3EN-{)yK_ptf`zP-_?uWyS(mAdq_+aXUw%qbwMLp#p|km}9%AT7)3T(?5LQ zxdCe5`;hDB$5}fLMI3OOanL1pel-sLiqJxaof((TZ#~#;DOv(uupPb44JqX3pYM#3 z+$8;9U+uNL-S_jSH>|nP^5(9sTqk=E@68Kev2)z}KK4F9#=yh;>_WHaL9s^${gb>k zWDS;@b99>8hJ)26+*^#yo@YfJz9t^bN2bW#&XKhv7AQ}ZoMpay^c%i6^4`ob!@&hk zAF?G|LfLy`$;n)jI;2^h=a(bIPWuSv9PyK znDc5g^(!1ZHVd<==bu+aTL(A0wsAjk_*A8*X|8+Gau=mhYb&Lk`9*b-6Sm4M$(kFP zq_6iV>lApBlP=>)5Pp`lv@9$v4&De+0_O{9a>(5oe|%$eS{ujwHa~s=t4i`oqoiId zWh~qzu>z1bfTEGIS0etYau^%iKIFY@deoUcD^d2kvsP+}br+HKv7(L*GS(IqcoU^cx_~>dcc+d?vd&FzDX-^ z+*6*Bk2xu$5;q^*IY8ev`x^(pf&of5W?i^*=#)r=TO(o!&o#I$u`$~5;1r)&FCvPe zy7Ofaq%5+C-+N}*xzttd{^BlI75E7wsGPw8zHk*B=Z-L|i!iQaneHrU1Pp~$sIQQZ z&vjl_mL) z8Ypa&%Z(BiOWkM%roCtEdY@kG_1O9hZ|Mbu^)OoAJ^e_Ut4mgM5iYX+_EGtL^81z6 zJv*)C{9pfhja_S%=BG{?Zq3Zx7g6g(SOGsPL30V~K3xAhiy=_D-A?uOVZ3qxm`eF! zg%y`IIEn&8U6335%(6i?m=4eIwwoB!UK2e2igz?3AM=9-B?ggl-)dgf&Y`)SzbJ7#BdqH9rZIj6InNtXE|6N{bni@ueZI-&{|IN z=++rom#shXdfe%?!SdJAjnpk7OUpjUtSCLwfSB#zPDF#u_}zb2cEOt z8^}`8j?An%nH~I(F-aT)xeEUjO}dqY}4x`0D3`PXv)qt!WC@t~kmd#cTLy@q@8_CkW@+s^TH(-X;!ID+9)cEqGl4k#=WWQm?U(!+DYBL$03vMlyou_cF9F0q@_p6r&> z#*~5I;FXMxS}i!Xo!rYHfY-4s{cm}cw!F5=*Gz1-9o?(ELgsuj_mVL|zL)HsVLulK zDh~W3g&q!)M;N4~z_4l!-yi0IT4;hTGLgYqxiId&a+jL-4FdG0bY|c1s^S8j&_uy+ zKucb;KQEp_Md|sz2EpJ%EeC}sn3J!s^=l8E>s6^!@%V6SNx%NTiWx}u_^-d+dkvO? z7eY(G?XJ5_labe%;jX0SMkO0WR;0w)`BobtOL^#)x{w{@@*7GP2pz$E1IDEu)MoOJ zQkOX8u5)>1;CVn$%e2^GMvVuFU^8 z>qW>z0?GB2PgYS;l{C|*9N4P-m3&WXnthGfTzbYB^hn!8uy!}s_ndA)<+Y+=d1rNp z61;u(0ceXA#2+m5cq+5a7||Z)#ft=lU@Ro2*Vq#6Xai%hS-^R;DUWb5w)^9t%o!0j zFoNpUv9?jU%+m}^7vat{N-j&mKv3jhf=$cn)>j%rBXtla=(Aareb&r-pL;OKkS#TgE&wHl^7X20Enj^lQkF;KBpjOC%WK^!@TERj413YlASq{n1)o%+ z^Rt@&NPUgYN;OzE94tvWqju45mBN>(gR7Oi>FUO!%78#;MN@ll)jH9+DrxO&ZtYJq zF$59LVwfz73=e!V&Iouh9|hDA=7R-SQ*!EBTCU&T6b4EUG$xRFx6u)M1Q@F-BD1jV&*rpTD#8FRokMUZW)og&?T1Qs@GXCk!4 zDDic9W~|(7@ka!~kpebPjPPfIM=ydevN;ZNY=+K<2KF(6DhFp&H_X%A>-3K@?a`sD zQy9rt+|F+%F+zv6r=mHKTx+OixjhP=g`rYKEx6hlF-j~I+SqPJaR_&%OEvh(f;)_hP|>KIeQkj3TaRQ77LHn@8f z-|ae0MMXZ8L`vRmo^;Hk3loAHMuwAYMMaS|)=ojH)nmt%n^S)3>cPKR7M-q5xT8VMBOrZP!( zMEX1`xw(|V<{8mQ>>&MKAZ4O7G9N2jWidIXX#AF!2>b`M2y{(R+M^+Wpak$7_ZitA z2bn9g#x|Q{$`T70@O2_f!=%IN=)huY0p_)e&2C!iAZ`C1 z$onwC(Fr~0uT5#3=^X_>juLsqw=X&6kMr}p%%4g?E4;j1hfg}~@$>rDKYz_%T8}S< z_#D5>IN2JQW=y!GR{8?OOdU>8Qrz{MU-6~EP;fwfU*M2*Bl=9Q`-J7U%qcHjN7y!& zM?`7{QrYj98x)|zjHXzQ0CoG{tWaaIEMzP;NVAg{XI(rp#F;2cbd)wnwuhf&f*b@< zCgHvL{-E5&rbFh7EC<8)pLnTQ2QhZ_Lzd3>k;NfwDarwSM5(dQi-VTs^VvxbCQVxx zJ7iSc7_#@4joL@!mI!tzd$Cq6caZHG0Et-qnJb?w(sTA;W|~xOyyeKZ!7mw)RS4ug zsp3=KUoA-bY0i5#w2&1l&M)_VF+nR;Y%u@()siI39x08M4DAGFJ9l1LrL(F?88RPCT3FWd&Ey(* zvSaUABH&n&2Ha~7E^JnBu`mRLkw7Y6KV!}o#z0`@`^!Prib~+`K=8IrnB7k9fPI_y zSm+oMz#(g(_D-9lJSvIGPOm3rgL2KBm)>Jr_vKu?pXab~l+;&=p1QV)LScz9(j;-I zgFqS_qspiqB_?&RAs$HgezsFppx;Y9RfK<|n{ry}#*_e)Q*TdHWF)j)cZ`j%gYO%2lO9;W!)Uno71iLkXO8YWBswe zP53(Am%WBjw)0xU{kJxw+u+wqrj}jxj0@)P+Obl`4qr4;1y+f49pKHP4K=yuDb#}v z8R9M8)Rx!td%7lhKP>B9n+nqB^?sG!MZ=sWetBo`R}O$uep>F;>*u9EBmwIuJ+*$v zY0Lyl32LEuZ~9uVmlPHk=v^nZ-pWd^*`#EVs9lAR=)+u{rS#$XzNfOm-i*qP-Scvd zu>@A;O0g1(T=zuXPa9;oj5``3V|8D<*-)bLSd_)=I1A#e0gVslec6(nS^8k~AA$e> zq&v*z4Xz7K8s?hW8R{!pDbrXu7-9`sGA@69=1W>NmMh*W_H%Lr%Z{~KD}z0V1kY{{ ze`J~t&rn-4dt4KU$+!=U5A*$KUKq=!L9-=>jDlaOvI?)wPC<>Pa5^182R=+xYQfreH`>qdRX!k#FAgQ=J+)OX(HJA)5=Zbr?GU9l-X$eC7NPKfL!^mO~pm`qmO5*|<89IHy?U0Gs z>4Q(3BX&g0zBen7VAEX9MD4g2-^(*MK868sjh`y`SR*5JXpeBi5oHABw{2RT**jQ6 zcbhpvV#^+ge7GSS zw}>y-IX~8b?dJZJUtc?z&1`WW8z_!Of~-;ocPTl0u|JCp5m^(U1`vI(cmj_`$QZU@ zjE;lqr-AS+d$f}hoPk{lf;_j1`^6JEN1vaG!90G)O{A+lM3jywJC9VWS)c;Xk_9zJ zhU-U%i#%_Z&$0*aUNGeb8wR zOUC`wFeVKQk-Kt2@mXUJ0$V>Kn`v^&LB{=mFH~^_tzt*mue^?E8_Z0o^rfDbdQ>jx zeqS@1l)+#H7=2lcVql~qSbn$j>gnI`+*gk15}0n1iGIH{Q-g8MT4ZSu z-0=P6pU9(AXp=`$qG&z@=q6{8g{U{NNpK5Z_~Ubw``bswm?<5pb_kQ;ztLqecRggg?y!k-;)1cyte}7zB4kKP84+RUYQy?ZE=< zZ*9BMpIWJcN&1DeQ=PLDdWa}ZtWo)auF6v8bXnvuG`r%Q<4J~?>u_JPJ&lvv4$t{${`j6a zJiaznBp^$$TS|vEmf&ztcMXv02w$g9Qad3;Wg@te$(EbL6rj2YQoTW$qqx4$ql^0 zcF;2Eb^T%sie;B_OCk}M0mUjh)y^h^o(3+G-|_i|z{9%*C|QDEU-zupr+;4Kk0e3Q zALSa>U?wpnhFme0eUBtZn;^HMr@8*K_*lGuTlkd8Hl;F2u+{W_Y9vZ6Azrc402~j= z&rGdox`CWR_ZuiwFOix?qbApgEnh3|30yPuH@CxneDjpTeezPz6PS+YJ;_ zVijy`0j!P2g|1`7Bwl9A?+Gl}Owo355qyv-u$L@&YM*2)M;YLelO8&^TxuQh#YO@0 z=o*oQu#Mv2SLCh%ySX7J0q<6?RX?)hzLNfMtfy<@HLHgmf)nIR&j!!;!I zIo;QCc-}Nag`rvw%D#4*<@_{w*0? zzEEHBo1QP0J4n)w(jP7JGFh>9JvAiQyUdG3DRv|UjxrA!9}mD+GkF52*(jSmX*-;B z#})6a}k!Ne!e%;^K!h810iL69?>3jYRNmzZNa1r z4F0^HbSz}`)y>Ifi*e^VNgSrRXfW{9svsp6sr!|6FWJ|vi~_kt#xxE8s|(lov*N_! zz*vD|-=C(|i^iqy@MB3vz;*)8Bu;|?#@F=y;&)R?npH)>XJxy#M1&x);obfhz1@{jq zv=p$+5eJZuOQut^8kdUIX74mV70hO-r=KeV470xePwh~bF`GFPr30nv;Ggl0)052i zr4D#v9He--9E*hmDX=TMQL0EQjcVC0F%}XFjH0XomUCrX=?ZpqCeUz&eu04erycPA zDIxn$UJt8DbBSwl+P&tEg*I&C!9cTUBnzM0r2vK{{exe<&9}aM39b?(WehLd*FD>; zF6akq2`V@7x%_BG#yl)ts8VvSX|Xg`>d<#`v_J|Squ?R+#1?X7%%e>oLs-}IeA?DIU0kt zDnBo2=*S*@l+n74baZ99G)9T~k*|CG5wbp}@G~Fxj)@|TTUQmNTowSNaX;XuSOfFp z@t4C)oxqiOfxMLWH_`M%D`1a1e>@hZi!7M#QRzyhq8TH69~iYTiC6=c;&->h+Q+M^TDCr2vQ+er~$79dE;)(`ef zW%^1$>lLx83(_;z^<9BQuESoh18PPw5fJ9L6Zy+Cc^rT!4vELRt1+aXfopafkT83 z$ogb?PIwJ!G1OC_V`ckH)7$IzX`==BMrp%$!i?}RSu?s@XRz*@f@;eAK<>mYWfDbR z|5X%nN8$vMDY5|No+LP$FvB#y;4MrBw+#I=(EezXS0_PKtHfs93+xqut&z9{_IDkGMAp+bM$G$t~=`Tzu%$G)U&Bq<$e~6T5k?O z%ueT|=;*<$UtOj;iiTeq-pP`BH^KGi+>3n`!Gcsw*f8D2nWKL89Xnl%y-)tYBRu(T z#^2r>y&pn_`TqV_v$iW6Q4|zr`B5204*dfF*ACLvUTSH|{IJP&6Q*EP3AZQYdn#S4 zR9!{d4M@3L#KH%TvOdjJ@NX?;`$-F>0z|)|r`+J|Rpt)W=j7+90a1gXJT$@S1h;eI zEH8lTG%k7IU2G3#lC+Q$nFFkIez&`MC4<=W6al#Z32}Ol^JcXL|3rEEPku2O`4i$c zMlY?B34%N;fioTm5d~{Z^rr$}*FsE#;Ab#ws~356zpYVH#r#S`B2Qms!Q)gnbfMj> zUwXd3*FE5J)gu|&AnVKT9ZHQHYkXGP+v~X|BvWaA=HMt^L)BKIFf(QvQ&g|;qADGA zGGrn#u}gfta(c2IwSyz+MEEJ4uN87rtgk^UJoRI>Oxcl%tt`W0j(R)2skBhK-N*hUxb{7Aet1uPrU2v>A9y_rakynL$+gJLd%S9utrsd6juZA&awxfq zD`-nQg-g7mhU?*6p6owtthzxGRg?|{{DDSlz(jJ(h;5X4o>p@{xD z(KL0Pl)yC2^agzfr%aXG)Zm`r`$PAnPq9(smOCW1_>1I%B&g}wT9=-unh~P(*7W+B zrR{;2>`?(4hcDGJUCSFBae;D)+B?kq64-@9C|`fQvuHxT;j);18kPrFD&Me!`(KZm zDat8=AgDhBB@K8kloDchQz!4tZR&r8G{o$#W_Zk5WBGjE;OsPK)mJQTX*bIe-2>!q zbm<*s!aQHh*%HdFKfx#L=uBk#gDmh$AjG}1)|~7mYp)$$eH;WVbq0OIQKxuwJw9!^ zwLIk%2R_PddpgRxxeNwWv8Moz#zyzP!TRu|YHXBqoX{DVb(nVA4}9D#RfVQdRG9?p zyUpUhwn>g8=m`u}Gh3ZOkyXT`oWEVV}&{X`<470Pm7k(D1(9H11 zrm=?adnI=?WOHuV?76$KpT<=T@hD>&1uK-OBma!Oh7p1n=sx@#%_w-7;4rbx7S`&s zqiLJx3SwE>mISpCM~3&z2w-WgGpHg%KkM2Qm?nf?FO#;7><7?H(spCI=(9Ave}#HY znHuJ^ps-Xa$#Ut%MXOZC z?ZOVNXD{&8=bF2si(a@syjL+sUgAbhTgpK`QH7|ir6i52Z8A6$m4Q8Mz9u)(Z%fS7 zealvMi%-u&FH**H}#kIki5BiuqQIXg8(ufGAJIWa?$o)*WIU`Tod!zfV*jM~jM)92U zn^FXOF52+tU7e-Phh3B5$_K=H|5O>ucM^769++40;@rIO9Z}ovRc$za|1^oPFy$#Q zPp*bcZSkZ1+7cRp&{A^yGkQK9v4-5N6AB@3`ftd0uNMWQ6V4V`2L0>tRcI<(+3ic6 zFe}TGwjWjk;t@vZ>1NcCCYL&I-|Fu=jWdzv8|u`TlqXm;X#D(`uA6U7p(|L=u)&j0 z)x6=r)=8CYZb9Aqdcq4XqRkFr!v8#*P zQmmE5A^1&`%m#s<=eO>ihdw8NS#GNLwaABIZYa)v%nO*!1kLdyVSc6NJHfUCj?Sa7A}%|UQ-=i}0SH^~w^6CTPQ0kiNB z{SNsNH>3vcqIBCl3bu5ds>hmg8ZX#{oJe*Cv@>D;bYcUZ5@ms4^9tBK%@Zl>>`N!f zeMjk}YBKUUi|o%{073ARX_|)|TEXv5F&t&6?&y9GzFxUj$;0^n^0)u=k@MPzQ)jxbMF$Gc-B}lJlV%mafNiRED1oHOzBoqTRSfM8ED2sSYa_34z+gwB}eMvwvPz0Ck>n5ttPszfjihqbm zqNK)4NxkoX-ATRJcNmi1ylE*a4!-D7mm?>I?t^Q9A^u+jJNggcEBCJ0qQ_~USCz^Q zG}&gSVB@xAVm9%~qcy&_<)ar!{ul?0Y%n7mKmwR_#fqfQBi+iu;ThUAWeQEth@;m1 zR^+r`?$XqEK(i5yR>#`>-F@Bv>bY~Nh5h$*)O%m=Z|Yh4-oUWlkAp9QAiAnYO&+H5 zpfg(qBBnOA09tMyiNab5)kKS#2ps%I*()*~$)+XClY>M7c+gXD@8#Z3S=r=YKmStQ zOvuBhVjBtZ)(kOZkL_eQ%id$uGmmS@&qYIn8CN-U?Xkfr!jsGEV$rUs9vFa-60bX7 z$3@@ea1ctERC^Eq*pi8*M1Q@DSNKD-HLMjj9glT;+U8DCT2a66>=7bLE{n=p%_LBY zy|WZPVIQDk&CqUb#1$q=WliPacPoPkIhN>i329j4B}2JO>)M&QyyF0<5>-VD?=~|Q zSjvnPJ6Co->3b)vR$hYGn1e+en;iK@h(6w$_*mz*gDG*x%MVY~CgJ|5>a)2s)&K_B zjf^>r$pi||iF=-Ck?cl*-%>KQ@-%e|<0_3JxmNlDQ(=qK3;|3<3Mn?JAUStc7d zL2rC--C;xJD3d@o$ErS+Oy8-9C*~s*$)&euVCX#8Io)ME3$2oFMWI}qAjRPgxEw2? z#H^;PnbKFt+KE#3g7pB5kG1>caPx{I-z(1#nQQC#-rX)@G9pTwu68~kiXgEA9c*cA z1&rKlQc*Hr$(qYF47(#vRQ(}dD~9f%-`DmR>z;%HQME*-Rai64|I7MOs6ZhHsmyGK z9ERCh*mRd&rM1=MWDTfEO_=iGIIdh;#*QOPGtU@{^j{GX$R%%^+0#?hWr|1-(5AAP zV!b)HqU^$wRq}U5bGc+!i)JNS%H8rJQ}G3NU4PDXbVNVIShhdE1%;c3LCe~j5&3+{ z%k?^sqdkU~aGloERX)E?T!>syOpQe9{b8nr2gyn%qHfC^GMVANtFKF;H~36!*XI?y z+YC3wGqSQjm;yg8oteOUG{VMB7GQn|gmNH-N{vVz{-{~k_fHLef|XWX$P%5?#ze`RbR6%$%O7V-zJFsy9j-xdg!D4X7eosYo_7=tMh}l?4HXZ z{4zATn6g}a$mNjkAuU^_Aym1q?d--iK=usWS*;MrcqmbGrSeJdbEWLGYmH!d4H*$5 zg8azQZx153TiU)&XIVPmwNt#u0hB`^>3zvQGSq>Pu3WQBWdMZFl#Cwp>zZh=L!``iOG()umiJ|5 z+?UQjf)_&}Qfi_S!sfHH*6hNDQ9=Ye4g@T!TV2jvI?edmZdGtKO->5!rM3v<^DAze z%1CJ1WfZ8{*c2)rjbBV9h`w zCr|vrTyPOu;KRn3pPMy%qfV@)7r`fqTnzXhX7JEuRT^OqS5l6hq!v|vEe6<5wG zWYM}qFKkc$3n{RCk7R%1i>(K_upCMdtoWmJQsv-WmwT4~^0Po!HQ#peJcq@uVACVsNQ3j6ENW`Sy{c_jZc8oP5wztGZ3O2_+Inl@ny zy8$(s0O4If;Sv4*Hp)>Wo@Tzb+kV<~As9d^i0}7LIcS?P5crVq*WWek1ry;nO{%SqV-H)v zI7%8!f^)M7hm^|fa|8SkSPkP=N|iy`<{E_wU1-2hSObs8oWXh~lUpb!WWshRS^m#@ zoyY)zSu$**_;FEW=C!}wl&PC8QJh(_L8+ML9&^PSzbb^Gdq;S9X&OF~RD=+;Z5Nl0 zA+V&_GH*j4gPvfe3lTj>M`mTuxrVOI^Iy4y$nx{gEFQ4F=J)eQPhTmAB|-UFGPOmt z@%)s<4E4der8=|Wrejuf(k__Wlz810N3zuf1Td8{Q6#RGbUaue$?zCdn=XT}v9d_r z$MpnXul;dbPq!&mnX5pABtIZ%a>kU1sK|WAZVai&t#>1Pw25V&TJH5N#dTo$k|!r9wPUBjU<-cdI!us!Qt z+|7WK!m!OiqVI1}I!f&iGFT;6OBN)PB+oLts+oB1RJ)R;WFd*WW={EsGgVlrFj8(V zvZNPL@+cT!UTCro1xyJ90tl%CY0!+2JHqs&ARvGbNQq&l^)=dG^8Tx zTAD#toyPZKOD+Z(Jz0Nt&P!hDGLx?hf5t*W>Yb&m@w<>03mG&(F{S7k0IL9JFgHD( zo%Y(b@h1cuSG&!xB3J*lF0OO}(AQHcUGu?^#UdH4i~~&|I#a3AWs;k<5ltAG`Yb5H z)Hz?>4~=r6bY+8@_cE;u_SHORi$}9OVC9|tNcT?`+m{=SO{D>o|C4c`T}5Kz@FAFX4U2SxTSl2!RUNR81yxK#{J&0Sx!vVCUysJ-&sH0 z#eONb&uf4Jgr@5t^v#H>A`K}qzbmBI2c~WT;;(pMPW)Kk4DyxRE6jSt~1T7^I>R8H$B$Yytxd`O3`27IJie zu%C;pbx9;bIdC^#Fa6-M2`We|TsLcuk<5$-=0IBoB`l=1UjO&sVmXl~WY{|#`@lY9 zeuldKsOyVS#Z-Be0}7cRG}#Ey;m-JM)h_yysz}w73bN;yM1vw_{|waSTEg=9Ry^0d zs~ez<*iAHt_zBOic4~*D$a2%4uSUxVp}R>u?z7P%+)H1bY2_Cpsss>VC%k!CF(sy1 z!S+h-EOZAR-}B*mSQ}~5x#Z6?vI5v+VQ1xz%-zbIsZb?{*gpg_wY>2xrH83IS2I9s zImsK+mwS^cpDyjwbka$7cfm50=f`zD7tw%xk75T;Z1h;nWoc=gvUHouzHeyex#5`k zo2^*~7^UHzFU8m)x#j7=2i?S0WR{bO#$;DQnspRSa=@-~`h2F|4Q|wM%6o0e(--ty zA#IO}h&_4WrB^4o@w5Q zp1R1)v#g3D8LP_Yub%_v=iVGb|D+`EKVMIm@U#p-H%Tj(6faU*R%eeOgw=y7K# z$UB}hb!YisYRv?Yt!ruTcF6Fl_w3cGAm%-in<-OIIpGLgL_w?|tPOsfa?-Kl&xv~- z9}a1&?+IKk75iJJ5`of$il?$mf~RERrk(!UOo;us1ak{NDS`Cx6OR-*i7@k;Qs%?) ziQ9a315Fb!Pizf-PZ{xABlXv97jvuZ{T-cueo&gK&zUNa6`7x%##@#zkIr7qNH35d zmXbu(BJ(;s9cw-uPW7w$nR^O3Y)*WE>XOkSx z_mo-Rl$~t@0YRAW!I|+6a6rgRL1)n7h`5fA{Yui+fZ4K*?!A%Llt6F&mphZ8AxmLg zTJ2G@j(CR%W^!;yKoB8@iTpECZRn+~k~3&cE_PavX~1&e&xc^k7_+K8Iafx*dQWQ3 z@NxzhTWYwo5UT(KNv_ol52+E%{Fz~(eZSD@Qu2CYNXI&q0 zTG|xB_4u|OMLY?hJZ%D#A$(TetO+G~aK%xu=oVhhAa6;2yU2)5q2nR~Z}cJd6rBz~?k7beHR1fp`nS&q@T3Tl{1nw|J@6rg<$R)X zC897$OWy|tZlABr?ZXV3PR>bG*DlRmYjQ31mRHRXc@TOu?NLE>F=W5ZJsW<>T6P*N zT$YncC1V_JAfp!;d?p~b$%v%mJg`hUOv{#Z2kYJlAPDS>r#lxr;)C+9m`QubDnCWhRT_ww#Mpe@TW>?Qqi zaN=?U!S__0c9114?_^9AzSMb&#Z2p{6|FCtcd=5&S|gxefbg=;l345Bae4kVH(9cR zwBUz7Kd<#QWq(iA2n{z}X(#0#-PWH&#yA{0z~LRUm8Je!uA}&UsBptZy}XfUSrZhJ zb1bcus4MLJ)_?Kr`PiIYFm_OcbQbt_3#HSN)KLwjXqX~Tf^y2u_lrKrC|{!)M-e$l zL5BLvTtw`Ji!*0<*Due$9>j-`1A9v6qInE%ZVD?&EHg7Ndn~EXD(NAO<|)BQFad?ZBFaV zWlYLHQibWot8z%DJ9vFv`8&lyaE;QfTNm%wZR?4kAIW_2T>81+2eK5&sw^ay-Y$482w|x zjZh_{eis5?bL^f8FhG^9TGz;zQfTJvUbx<4IeZmf@mUN&K4Dn$NaT+kfG+BMG5l-7 zX6&rLq8PRegFNX`Hs%rzKas*NlkA!GK#YE4+Ym|c!Ikk-J30uc3K%oL!Cd9Vra}gG zI+~h^`SI4F#pVD+B3MrF7DYcU1KIp zivZ{QnF-0l(|kV*_Ed1B+jOsV3OP|{)%^Q%KXF~_uk~4oP^MHO>6}wJrIz3;uJp4$ z`>!b-*P4~Q zYH5%inU;ECxwT!o$El_H8CP3RmRYioqKZ+5{x-y7(e~HHnX-nU4;>65!BzsST42_$ zREu=U5J5fh@uFq|Fa5VN`CT)?(cpT2Xke3UFr%I8<`^UY+9qa4S zS4`zuW|{V9;XB@RL$<&Jo6TG<$wEc*BbTqSfX;q138T|8!B?U@mY9b4qDB)5qKHMs zTKr~}F7tks3B zMEEq|VP>Ug$);qzic6VfCMqy|0;0&&a4eO9kZ@l*`ss;W9*;BQrO<+Ws2;!p_?pjh zC!*l4qkKPaGI45fOLk8zTtl6+je7qwfw=jM_~dIACV#KE`ZLSltD*Zlm*{`pAJrbC zHEG75BhdQtY1CYbhq$*V&mhlZjcF{ZEGAFO`fTDWm;du?i8IQwOufi*;|MfTGWuem zVwvMoR?d&NyFGHUnLCV8$FDM-L%2#)5r&MrAilKq=bNZq2v!l%SJ(HSsH2#Oah{4= z@AfmMLgY>PM4W{*D&{M(=rOCS-A`7I7KtlG;2=w{NJw)~y`q$1lVLtfeetwmaFBNH6 z1I#3n?~-i_=9KrRzQAJ*!hW9eK)u}GN2WITC6;0R>35+o^ar3G-s?tuNSUt!sc#yl z_lhyILbwE~xfDxxcQ?n*#NN??D<$+aFIqCsw=7dXUZ2|#I3bx>pV>UgdL%7O zA2zg@Qh(;ljlN;;31n>m6q!UVd+A%qqLcHFc}@3wDKmZ|@!$(Qb}^BuQ(1Ac(utl@b*5QLJmKH>lS z|M`Fa*Rm)A+{%+GJKd07+zyd zBBq&5d6N6Lj{d&*(nQF7wOK2hGdVCw*k$ak3ANsD_f|F@u8&yO;;YbBdKywN zqgiNtRKxh9Y8{I3g?3%F+A%Zu)MP-zCnpo_;LeFf-^;Phg+^?Ss&KANP2)7!Wn}4C zoFdc;E{^nJPX)_Unuhb;N4-HbMb~@%|NZ|03;=%up;_oIIcWd@002ovPDHLkV1nr| BaT5Rl literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Layer 1@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/background/chat background.imageset/Layer 1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..69b472c8dea599c3ca7f6ec490846e0907fbf849 GIT binary patch literal 253053 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�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Ⓢ?#27ZcxV&jPBYI0i%wgn9w*kv&i=(zB2LcN9d7! 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∾`%v69YRmBiG+)D?hvwuT4xA9|#1d@~=Vj4)DX-!Vo}p`IFs zrSyRWRF#?G=-{gKEr!fzP{Tsdr+(m41bbWr&3)!>59YhUu;Vf)q@vY=E1Ks@s{?H~ z%}PT-az++$e{fF|cWY7gywkOKXEi=Pi95Y-0UnSlRUOQ(kBL=sDR*I9QFvf_x^269 zvsu1S(&|Vwn87opIPOM)etbxnb!x~>9>$UODiAa%=0T&+NYMK<%Cwm^wcF|i*#4pS zH-Ecp-So}*-1P7RN@qWHIvhT`r>k~y4gEiRySKRB!aBY6r7ngCIX{{?0U!~8Dz-A6N~r*%CsC}~>hkbR3$jUh>p zUgn~WwSRE2GA(8lOoEVityfv)tY#=4uPCPL+5L+lnF~`KqR64-4LK15Z)2_C+nth& zpl2HMv=*$VP@&r5ORRIaUC}SFw8c0(4ZNyVLZ15Ie1A90p28J9lk1N1)6{&L=*Q9Y z_DF0yJ-z;kFJtDF$H6EGQp0qleREs)$(L8*5E*@SYIB+@hs_pU(|vUmVf&)S;70FCTJ&(nz}Oi(sb zpz*2^rkD>7f(4_=cSYRORjtl@lYuZl9fd#gb*AcIZ_|o< z95X*yE!IcCXMepYGRDl!G`PX5=D|v_0VflmARE`=RmC=)2wF)lxSS0ns&KZd9@vfJ z+Cn7g1Lw-$I&;UhbLWqD{;ewCA4b2m+Uh8L{}iy?KXkH!^*WlkdCv#IOI^NipkN!w z*J)Kd-{8EH)BaYW4iOe(M+&J>7l~hIzB3*urjtZsz>gXY=l|mQ1NzF0tbJx;!*gO< zZOTV>%&~Bh^)r{hxx}YZ|G)_wqoJGH-7(WrU*Y@r@6I(nd)m(jkDk|qWPS0mbq*+?l3bjMLaj2aT+ZJtUTZ7FgN2<40uuYRkW1c>>GN zuu6O>zO0ki+UaHEF`9rmG2Vl}NU3=7;{kv9$xEhn`NJ>2{NkLTcJbv8jICSj;s}5| z-nFbfJ2c*D^HZEDSg7fu>h)61rngT;w^2~BG2jK5;Y*DqRVf=)AzTve{{JI^2pP7gv;I!Q3;n)KLEwJw$AetWY{B2z zvj?Yf#R64fMb0K4(rhEyWCCQP?_vFV^3Cq_V)D+3=hZb60%`CfKG+&OLPQKA!_A-X ztOvSK5P9g7Z@TyomM=GN?<$9I0}rw>dy?9>-$U#Z93}&NGwV3gO4#7AYGb~_?;QGK z4w*NV?xXqb#p%DF=FlrnY0s){Zh>os2lMP;!`>{-zreu8wMH@B<#8<#My>g|Ei;Eq zBoeLiZM4AN4>n?l^%+5nhwhZ6Lpx!o7-ezyljY6Pf$?LqD_>wOj|5;}*a?mI-j(+j zW^Q_dfJILG>=SPzx?n>Vq3-l<45W^b>G@-hGYLo(z zLhvtdNb3xd+t6*yYu=@(~Ce-hR%faMs&A5kHcx3%_ue5#dJcf4-?OKkb z&-(`L$l&vf4$4&m!6dFx(`oG+JD)L$OGrca#--j=dXx4ib@n9=g{m-QS9=YaO?pIX zs^?Oi{=k(X^syQ*iA@yaLlNdX4TbL#nN6Ta-H^Cvc&EilUR02Ty>ZEg)MB9Z5J-t- zhgtKNB~*f-AgHx|zJ2>vL*xiVJ5&dx&xuh9Vl~J-`?qP+_EAp`w?_n>;Kx`VV9cy^ z_Jzt+x!S57%r|qxSC%;u8a4&Y8;z)FO+Oxk&y^b9|G&BL)w9T zO1*oV^sGFhRHv$&n(tEE<02OKF>pj~;V}baw$K!v@f}wPih+bN8xy<>dOfm#c)ld& zVaT!RnK{H7h31YC;rbe=%^Ci5PYlLJ!h8D6_qBbm2Zw?e6AgTRV`B^8RUt_lwsvlv>WLn8ms|*t2(Mv6&BYPWCV;-XgVl6#aFWR6jLJZD$V~ zOVE#edCJIBHyjZ@x`SHm@hU)OWA!$sWQBMiL0++7GA(~QW;(`1@ok&hItIa|?F@L= zEMLtc!IdO5BEfWmGXyKFt87}0Ke}_r#)6uAFuAra*uLmL z-Z;3~^YioFPrt0T5I4ujSeKdXy>k!gepm$@=~RfItr8%o8hEG~h_13PQnxC6$GZW0 z$QT8RV|5F{&rMh&VsJkkEOp6@(~&ovHke`yu+dBiD3PxU&z>4EmyNI*z3?d^ISz-< zs)jvX!xyB7>Y2vC24dH^ZOqognTM0)^5^1;#wlS94eoF_1A1Q*efdfHpaBrZ-9Fb3 z@_f0)fFE%@t8ZPo0*R~(p3P7tZAY84bu0HD5gpPa6L?QQo6dFA5$K6|{|-U>4`EU< z#a%6w*d2SOU64&6iG-lLXH0*-2TK~6(=i)m;J5BKi*jWX0Gfq*-9H)OHgr$xIJW;IN-w6m z*pJ8qNRc0$Xo~k?XihPQz3D!>IbIQ@?xA5~a&&)Xi(WxP1AvWz(Fn{`X0Pzjy!Slx z8uQp8g+!PNtlq~Uw(U~LSIEgM6Bd2?xA&LVl_`NVs%rtzgRk{j!@&f2i`ATtJ2b_I zM9th+9fxPeLg3wF`YYX}&M+X)1GqIsKTg6Q=4CZ**h{g`U2s8AoO%bDRvvY24Ofhr z#w?rAKbQgGgL!N z&eeKjWp{aDryxddr_$Ce>5k$){h-{O5gu8dLL<{#O^yZ79c`^zCsh@Vcgky*p=J>R z3;V8mDc*$WS4IUdU3%V)UMVA#@w^OJx+Xpm zbli`N%593N94~+C7FDie?hfOx9p!Q!9D0Z=eT6r-_e}%DLFZ!?}|zm z6`L;rWkmdINliivf^BaRu^>Ba4lG*l$lZAu^d=8$+W0sZO=I+aU*Yx1{a^*g`XnwA zbeXj^gDhOz-15KLrN958kvj9$3y=iFs%76tZ$qfkat(~0`>Z^kD6eug56D?(cr-~@ zax6Pi56${lnLgeJPkrn{q$s?dDb+dz%*w<--c^^s2%K;vU|;7na}HVv*PSX}|EX7n zy$a6}J_8LR2`e5}IZ4-ifqjvAlpLo$4>lSB%z(Q&EMmIy^%NMdstUdyVz7LUG{Ry& zq8@J1&Biq?aWuQwNd8>?hv!gN4>juUSp$D4&QYCh@JA2WodW=h@veT}P3cz?KF@kl zrWn&7l76)Pbr~SFfF7)Q+kzf zeAs!nZ#}pp$gPN6Bt-I}1$%j2j=VS;d~eMg@+1R{8;^x_S*vkNNXK!-&6m)4KT+|= zR2yw(_G4FVbK2nygYg(BFcejs51jb)dYwRkpM_nf@zVZu+^yedX`lECZOBSfxFIpy z1Dm(o5xO5#MT>mltvE7I zBz}L`emn7tQ&e**8#47{v1YG3pDJP9tXhmW^zi0)vx07H zd#_}oFHowfq|-Rp1LU|K?g~tMuduf7c@zJjEWo~=%6E4}y~-&9YE?_N-=R*WQ59Ss z^ZO#viBWrhcOouNjj@wYNd))M^tjeAvDp-XXIkx<-^UjKPe8E0hp1n_$hQvLs~GD7 zEpYJT*>Q(M93w^&LiFvCHjrh%thEx1mgrU45XqV$Qy#8~_l~|$;ref_4z#zGMYGL{ z!`S2m!hDYHg4+hd1pr4ZFIzEl6G?MIqAUc>Pr&2HkS8;7!KnO=ULes@db7sOfd9ywf5Z)~2ww_K+%P2pt>N?#EM4UKu?K^?-d9 zvbsMWsSh(mFuDl9UG&kq5DYaz0)ozF)5EE>3sAqoSW>f{qwWZdfg0x42J7rsL5re6q*`xYw)(Wnj4`cl`MhT%`vBTE>}?wF zQHz*6cg^am!X9NIN@ddc<=n3W{c=*(2JdQ`F<1e)#?$$Ma76v|6K38qxNLigY40Nv zFTXs#VE~K?qF6;7zf8Ni@nJp}66n?-qHj|Bg(*1a6XzhwDcuYj;1F}RXQh|KYeoC$ zd!Y&jDi+HWc88lTw0Tuz_JHAmFz65UFivO=-y5o9W|6<4hhd!^?@14a1O2xHOfX=}Pe}%}>ufgA5tnkOu-egSzmr!W&t50))EegXCMD;n3Y89JL<_5fRT%c9 zP;k*1Z*^F8d)OiyRT_T%`gJt^Q9beR-@ns#nR21`2*m22+_K~iHv+)MP^YG!@mqdR zidAl7z}KTqwEsEP;x9b4S3_TBG)CD6fTcYv;i+4*hJkdJ3&RFD&(x~2VfCwH@Xyc# z-uGYYes+PzNS`CMT&YbRWRg!w+AFPtpREG+4yRV=<{vRp?YrtSx@XzJc^Qp|6>KSj zR?UYHlU6&3*~E^IO*P%_?E#N#&StDM_$45mR{6KSTm5Uvk1$^4wHHph)>QI`T9v8p zQstLG_aVjFIl~_ldQWWd;H*WlYl|e#a4U!VxqBJdoTIqJA(`hvBlJG)=VA4UacvjP zr`N8fT zNkF5X zNQHK4Ia$nFh?J~z2uEkl0a6J)gJk;`l*yS2v54)~zc*n6j4!q)*tsY+= zsh^g)hO#}{WR-QY#y4j-4nm$p9?}?_>dAe2r2?qMP+Fl(HgRJfyjt2_Bk7T^b5K(1 z=Xv$7AEj-SZq|Z_8MndkJ>b-Z_#I+ndxs3?)P;U5hL1ns<{M24tZAw+>YW_=w?P5r zH~^$Y*g5Pk9X^K)hN%%RzctP7`(wISSLbm`1npi@6AB2PI8>?Fo570mGuCiIF$+(sy?;6YWKZ5id z$V8WfjF{nL^iq*TsE(2LpDlffZykPO(;U(G!L;YytyIEt!1b|vtD(S0S+l_yqfy<> zWnYod@I|bc5jKnCns>>419Y)~h8b|Sl)$ruR$A4*kRHMe*oKT%BmV98*S)9n&)m`? zDo{;qTUULZC7|7vjP7hk-|PMazvNzV;}_YjHz!QX#}!a<65JCNG`w2!qXh70Kjj3Vq|^RN3&)Mk+zJ9k;2MUJm6&e zicqN}H>!izeNZ>}%zn3^o=r3D792|8CstzsOJgyJb%bwt?qNlxi@0x`nQ!CT2RxlPYT) zbl;I@-S*ylrl9rF_h;wSvKttC)n+E~Ak(k?dHcA$ZBPh*3l zoWT901}(7A{R^P`nvKTf!=u1PRuJtEo#g251uh6AKHWZ#l>1%Ne!OdFgsjCuFY|jJ zTo}s+^z}y^VeC3ABVsh$Ck1CT>GpI4{)4-59pkOT-I`%$V?tzgqi8g_&g1^C`$coG zo_PAa?_D;%9U`7CEaGdx09|Cqa;c%;R1p{7o)sKKQfPHO1HT_!4Tmhr5hHQqqE_7t zsb1!K>jXsC$y{hdh4#Uv5Zc!fN6T00@;4C6xnlvq*!nk^ zykt})k<5rz>%^S6aV^z%A^@Am7p%|m&X&J9=5+5XM(}$j6W`^H1jKHsBn$m~!SSl* z1gwhkSpj$~l#S~!V!{<>8TZ|gySv4AjRqMPJs9MEp4X~;G+NN{^9}i#?}){i`vQQX zHQrFm#;whWuiRUhJDi)PB}F}}x=t94bpA)AZ9 z1`2|UJDpB3O*sAdBKWz&JL6hL4T)1X1-#wHyTD7`G~}@`9PB>aL|KADk%!7{De{2& z=vu3gww_V}8+ooL3)q7J;<&c6eAf98?a|RD5&XU0r~;Yaa$AU@9r9D)-1=g?W67G- zR;Pd-rzD`yC3^9TwWR8FzFgboj@Kd>*CHnD%x(+QtGdw??MX_2VvI3{i)0V&Q&*hT z_c|!jdsj()bAa2RvE6Jsn}D~fy=u!s(rS`CPlb8-VKm7`cS&o*SI$QYRqK z>Km0TbNyHyh_x@QyiLgxjjKm?>y%Javw|*FZGFbVi~1>UxRp4mcu-3)X{$FcS(eil z{yrBEhtuPk?qPMYy6HTyNC7^5fTSBy*|iF)#ZB@3`1Rlx`5AQosHY6lyjq3(CZsc!r3_mkkI2LkIQ^Y2YLOgNZx*ONtb3J>owPL7G5QEM0f)msmjeDiGO`x*PU$GNB zcR_N4q9nDok+g7h=+j($T-Cu;&m_$ikicLmADx}7=-C^x$<0;TXVR?O#nJDUA$b*} zt3JG_pD3oCOF0vo3aO53^QaS5*SY=pbIvJonAiQkEE3bjedZf_@zx-P;^(W?N_kCc zizG0qkKf-NlSgh^tO2*TO;5R83FT!dXN|48Ly$?w^=R(&xs%p-8sg1%R0Rc8s=^s( zD5jSJ_JXeO!#4hT))xGWm|b>DX?37%fMv`0+3CetO3#MwokIIb^gW_{=|e0G4wA;A z7VF5j5rXI`&h+OU(Fsu=`&&s`dME;R23U^2DOzA1ne4Uok<)<+8%Wc17$#hqh>aNr z$gBLT#Xu~Z;JX)Uz*e#x*J|~Qg4pzI-y8Ex^O3r(<6$K6WS3JSR^2OHrS?+ zIKkNkJ3VY_#x;BENR2ywJ~H#uKf+z}s$y#l$w6yetC$&y85%a}!f+0CbbPU{@({#$ zCxvlb93j?hURBd0Ujf}6zZnucVD?VbwY|iYbrg!88`?G>O?3Dp0OQN(D>DRveg&## zb|c|e>hQHRZlEro6+%d|y5=p{*)2G3B1m+z!o-y4%6WPmI^G*TJ_1agi~XHRS~ImydKW5K4^vUMDPbhCQ43gxiuKARf*-SmcvV`a-c+y4)a$Tzzw1zNy9;St zkFK)y@NJ!nzjyg9XO_L=<9=SZ8X&b? z{Y!sv+#9~(8)5sm+ecc71Ux_iiD$B^dj7;5 zUG>F4LhmBQR@DheOXePyzy!G^;f}E(2c_GUhZ4@}$)PY$;-#`{OO<9J)s)XQgw`Z8 z2a7P`E3HZCT2Fz`?CwzNzxHff8hi+honYz;lw#HgZ*wJ<^5fWeo|&1h4;X|fl`&}C zMfXZ&?(e_<&LB#%tHBjzzq56C{&pJtJ8I&^=xfOqo9=Q?vICiDE!90^cZil{vnTB7 z8sUQ!_h-R=nfk;9X3B}CvfMBrleMb^Vrget!q)@OEpgXW*v(Bz{*JLHS)eFM2}DT4 zf_z2YK00q_IkB%4$s!gfAdVJKYl3|*5@e}Gq8vKDr`t8XT0pC|7*tG#aCPNi8v;wZ+`#&U7Z^9dCV*djc@4;)R=?zDU~r4Yp96wlzD63 z5SlE>3Xcf{r|Q*~mJ~Vl2{`^|*jP)P+}_i%CVKq$m0Ak4@v^ZH77C2Pxdk1$gQVeq z)_9VkosrYU3{{rx9SAw~x`~!nTWeWcouhBRpr-NqWV2N5H=P8fvE^|__w@#?V=X+& z@!LbBm=w_k);-*8Oo@nCP|kvhf=$XZZ5PEsNioS#i$;C}&+}5rge%HUt2S4-C41a7 zeOR5VKSCQtZ$q*YVb}-zxr6;VAHHF7&xfVN8;$zDgpFCsFrKG}@e0 zvD(WerZ$2eqKYjxHRuyCKn@HNh&TH2s z8o1isrMW$hYJ;_^@mwq1ZBkQ{<=mU<9hwMbuI3-?aD6Hl^0Rfv+LAyJR|3bYV*6;* zF~3m?8w*L|Yc_`yV{b&BWGc@-0>}NcT=TZ1LtuSq_t zF>hJA8GlL+E$upVPT?dC(Q!M`2U|a^qKc8sfM{Kbq%GL^WJx+$oO}y*f}=8s1R|o# z^jFO(imO74f?RrX2t?LzaR(yzH!WOBE~tWx+t?EKZ4nH-OYeQaj;8IdgoxuH%97yb z9!QcS?=vMQb6=3d<8X&abXylA(1l`+99YkoEf0d8 z1}EFJZBD)`xn^tb!1N{a0KK@m-?Alxmh`A0kC+Z$=DB7~V51Ts! zvHP;AtOxz)pMMfh=83FBpK8x#rbq%;tGuT&?77W##{!r&JFM zla`23cEhlzHLfGS{!6-}JZ)_ZpD~!ds4@Vnr9r_2nV?ZCfFc#tZ~OXIt|btqY-!1? zF-a-8oeL~kuc}JYfYA=DE~mS*_K)~eB5r8luU)4J)w@+e$+FwRc}t$SIqg-k74S(* zhTek;rWBxP@V_&;W>&8BWVF_)wj{r!4`t&|T5{?d5Da{x}c?zdP=cn3p*40`A_CawKDKOtLb~!_?%H9^e!}iH1eZ(^$I8oB5lqA z{xSlPfN_yIl#fO@P$p`sO>1m*lvP9mZ9__#%Mt+Cbc|e31hy(kwo*2&YD24;v+%al z*iZe5o^ibjm}sQ3_1+lC7>KjdpAAusjWW8ctYKI3UZ;f5=u|O67`)NT@g*Q0Mxko%PftSELMi zNE`O&+$y6l`z%^}ihs=LsiYm#h7Xn_S&uU(;wz&X^ERF48EMEV$beL(>k$p7H^i0E z*KHlv%n=dOmGnd71`f2A*2l|x+j*Pgw9p#G3;Nlp!jW)FAi$K(F|6WiihEwR%5*ll zNGM*}_hia0*~)2e&2OAbh{c1(nc*adRk1(^ib2eIC|o zL!~^R$B*zX6vF2E<1xrmv_Vrh>lUs2Tu+}5CjZumqXRt0IL0Q~de^9TKC%r<6kSj^ zO^O*xcg#^-eA;+HcKvnsNhDd3cse6Wz0$HzM#a80=EQ@gB~49wfQEShLu@FS_u7-z z<5Z)!VL+Mqfsz=d?VBr-JZ&il6eh1@T*OL1&Swt_k?h-T8b*9yqi&fL1N%*nbcM)f z;z8e&Mj04Le*rvu@2_x^lAu5_XYL@CZRQ{RbW+R8u{Q-Q8Qo&$Y6oSPX<}85(KD+z8lfq{a=0j@l*#T^89K7t!@l5-%_!8nbAn z$(Y45p$1QA^`h9#rI^6Lu(Qmj)q7UJ>uHJi7BFX9DUmZ(z?Qa4w!TdMI7d{f=#j}~ z%AlDfyrG#*g%gP)nR()P6LEyhP|CbFO{FArb}Z*08H&GR>%j>8cQJi3I7DtdIkz;% zW*8pyFCVOZH;201dpCO)1W{1u%8>2LgOKqq2i+yFVs6??=YINB066GfjeJOpjPNMhDX1~=n1@U4S zrniiV1d+DGf6_`2q0s=Ddk?Rc1UIsogyc|uYK7#>_TDZb{%aNGHpldR!G^1^ERqaS$ z1l1DO)0CG$={)nzWP;jwxd^sp-{zdDjNXgN$hf|~*DfgA)G#Oupcbz_i$Ryhyk!N+ z$47jg6?0qSey^km%I$Dd&&}!1hWkKS zC{vj*$=>L`3)&%JZ9G2oWytg3ay&%kb zsIV=~0+wY&w!4Zz5;u@*qO@4wmf@O&@0x9_3nO{QCMeofdPOLWC_EaHp(u&rKp{yNlq&$u11<8w% zV8E@li_FiOhngh^u??*t)_S&avIbX!+>14a9nn;k2pr=nMNu?<%{i0lmeP@B`qv*n zevpvZOJVKcws{JrAmp7j3}wWijJeM~WXL;jp^uQa_QYXG0 z^MB@ox2?rM=i|5)ocFaa8?Z6fea{tY@zGFznNh)Dp2%rJe?aC}4BLEmA-{ER1(SQX zJle7#IeV)z6(C5?oJ_E@4SDCf%_O2I_9qo|8wwcv!jem@eC0t*V#9HfVY#vg_h7&5 zGa%*1f1S87p(Bxw$6JQ?EnAiuGCDvyUzO}jgGRWY9VJ04RRFfuuMV#@>BGM}0F#c( zzW5raw#9X}Z4Vd}(=d0NIilGGlQltB?Z4{^dp-?1L*)g_!%kv~^j%mv&p^jXgLWG@ zkXBxg;U-Fr5@=JHA||FD}bzyq+y#tfTf2esGNgsJn340 zTG6O>4FWWxF4J;HM>)xci$-1)KaY(-9h}D{9jsEn3rj4G#K-TLdEk`A;Db{DYjYQ2 ztK>F|g|(z4#rwboNuL1vtf;L(TBxYrNwODImUSn?*FEi*hw;l$G1??%B!1c1F zXPp(c@3b9CmY)KQ#*Kbr5&T5C7(z8-V`$4zP;YQCrm144WGkQAE1lPv0?T10+D;VO z=CHYhj!AdiknooH;b;8(vlc<`?Wi?sx)7f+gnkz1~zf~G!Lqw7)) zkSqn#wPrL}s1`}c6JsUrwEGhXuVqOT8=04P$ zD&MzLDT_U+28x@|Fc z4IMdL8Hi%IG_hqmfeKS8QJJ3PJN-N;yZCzj(i%1u+qT-}ki(xUuMHA^uDWCnt0gjL zxs>Uf{*>tZ^n=l$4h|sj1kg;gWH?LE-tJOX^%?bm75o)eMTQLYk5amvViaXYbcXc; zu>bBJupONoffy)XesMwEtBnSfdUJWpGz9)Nhc5m#Te{Lniv9|cEN1lOQtY|umHC;< zYvOO#)|Fr^lixg^WcGqWYonCe4A$KxJy?1Yn`zogK+HsvsdK{Cl6ou3%uEcx00Rz; z-n(wCeOu-hB7O=;ezqJg-+9GUi~aQf$beSvsxB&j<;*WWsX6*R@f@(EVe#Vi zG(Yvieo7Bm#xu-&s39-dFV2CM*rSHzYrWljJ+CoPq$o>ST8$Mc#S&x>sksfuN68Xz9oA)=yZvzAwzx9aw#?0qxkFe zF=KGibQs8&W}UZT^-6R_7^w+sNM9u`iJ>|!l@mdxn{8kTH_#}OCnGcH32JV)Vk z&v?v&ZgYOMUP?XzPtVb5!kAY}sb$T*^GiuPJRZ?)a9o)glahGKT2v;xLE;rpNaJ`e z_kcqSS8x*@$m0(>Q1oZ=A+zqu6El}joe%z`YoqB$OOm1apH>zqiz(s2%c!jz7|#t( zvM`uTw5yb~#F%6SZR+2ppj}Kra(F}30joJ;;pIwt>>J->X6YiMwJe-Xu1e%K$ALb5 zbJ`sm4$devlh-yEBh=V*dHgN*=I!VtmP_Yw_3&76mi6~|OGZqhm~ABA96_ox%l-PO#;V9?AwMyVb5uNkgh8kX)8q-f}xJb*6<}hqwa(1m@l%@UG{`#fb&!3cM z49G#$T^ZP~#)@KfOVt8O^pR!y8PAB;DB4=ufkB;%T_lF8saG0y$403b95Ot}#M-;y zW#tW_%5I!E%Z(oK5-^1<3gopVk`X_q5*nIKE!qW^9m+QMKb3N-iO{wAR1%%4*XOcy zi<5_v@V~{LVyj$%?H4)XWnzueIiIfo$B!TMxw)&DF)0{ZtA-(QHZn8(DYWvhIp1tl zPjDB5Ykd3wcw`1MZ9UTL%^97D8s)yrCK2!UD;-H=@$pO%@}MzavJ#Ay`oF&ZebG1f zbjuBIaW{t(&gy8MO-GChU#`06+ILe>g0n*n{46G&u_-vq+~SH41Lr z=OGZL%f+<9;*@*>YfS&;=wZRUcJWNh(|73ynt^*#`Q?nRbRIh;FHM z#e$5>p8Qf~*3*9Z{rBH_Lt16o)Jwv+nT7CcB7z#RS>bDQa>jYB>H6Q^-b(0lP(((h zPM?gi3|#32Lin0;K+;q%`9yU36K;3ceNgbzshaa43)prXlR$0(SY$o2<=dPo63ynA zDKERTZQVS#5dtzV(w?JzM&185H@^Et;_l;>5;r)VW^z)c$f)AeMklBp6tPkSE{=GV zK1;8h;8eRS+zO3Pq)LTQc$p)AYRvnm%m@Dz*R2f^_uh*i462$mu|;2V%dt7&R(Y8{ zajcwZo)S$NN5*j@OR_c}SI~3-Z%a7@rRupsJISW_+KM(XmAM21QZRu;bd~Zw4X|xbq^fWhK5m?9M-P#^L9Jop)s+>tB#+sqsWO^jNy@ z*hq^Z8JuzA1bIvRi3^}bGM>2mSd6S^_NBY{B;ESQqRwvP2QH5S%%S5(m!kER{27$A;lJi*ecpXwkxXnEz zbfXO3r$R0J>zO3T*R2L^DYKNlBCEIwi?R+7kKMM!RPwIE>yKp|aFit#qEI^|SY<`K_rh2EPk4JaWiucvhBvE=b9 zTf)6PKWM*=UuWe75HQI$?``gFS>7K-U(K)yQ;B6w>Y#+K%BJsNz<2%q?7b#U8Z_M= zWJt1q+uT>9U3oy_K(M)Mb@Q~RD6o*}sipWZy?qq+sEQngbpV*tNgZM7k3arU4F3N8 zd+CV2{zk>SgnK;AIi#*E)ob}%Fgr2Jmc@hH`f%BzP1IB3rCIcpb#NPs(p#f})l7US zk++pd2^m(1oo-GfMofKl)W*Y#X_hwEVq+MNwK4seIm4Hds8*Vn?t$duX<>)syZYiK zJB)vj%XNcBSjZ#h1n9F%-bHzzr+h{1(^6+sgZIiZZxW=*Eu}Y?S~+%BoPLGXH*-v( z5ZYkRoy+{ZR_it!#4;ED1=GFFSk1QHxluNQ zzVW>Zpl(a5t8GrEqhe^U?l13*ly-CGoi)3=~P^#LO7jQxMeA zi~6rx=pvvBe^5gD4;nfe&#f8}X58a>F8}t|jOc?)&C1nzz+Ycd?xlT#P7TEs4I?Q% zd~ODvRrMDiB|QdW!5dH8EDOo4AoP@t{7S^$CKiaAis#rMKHR{Lw6|lQb-J1Iw^8HS zaNw2B9QmJgk!BY|5LK0HF9%u^2noE=<;9E^K5xPIAo1Q77B7`lVM8D(a?;>ArimlX z$BTTU9YpGDL{sy;%cMwwq6)xzWaFmzn)Hb3n_o;a{erqE=hM~>(;tLn2>BPVCkeT% zbXEjlHQr1Vki@H8{{Cw8E2F2bRIYivto-^g{KzU?3E}bpqB~)O(4aQ6*dmmPi1nw^ zO^3BAV}<9ZK>Zd?%cFmcMrz!mT`8;*J+>dC&mHXwN`=_mATKvIo4$1RlnooRJ$^uDk_!pb5yuhso@V$Z04v`o13nG{X^}^tsogKR`2}#Uj+lX%cnLMweg6f~ z^`Bc(vpvSHa05e9ho&av6j=qRT2qrk9Ao>0ZC@Iw&(eD1)GaD<`QVy$6$hpG!Nsv6 zV8CLo$DpBZ4rRIG?y=?*_G>KwTFpn&(7?15SIbWAdvA5VZ={pZx=K@0+p^m{&8$R( zQTg*W5vP7R)otcW+8280#+K4oumtFM&8$w(P8%Wih!jkJ zaE|w;<;Fyk{hqHR_&qUpenx(i&l(k2thWR^Q#L^rn7UasClJa)v2nIMo>&2wP||p1 zQW=NVG!1S948yDfZ7nfimqQ@*ALY2GDoCb=QwAJeKq>&VYePEjo(^awpd4G+4D$?r z%gznMmeyBAC9mEDTeJ>8&ksNt&zQNLC&3ylEJ?ExBoH;O7**l3&KHa)8&i2U^()o3 zc#)p11@E2>F{{4Hy`+_`fou*vR?&J^^zDI{pAm!aEwA%WGWizZr-8H*ez-u;oM&e~ zE)K|NBkxa)Kuk<>|HkC&Y+%cvwtspFyLmI@rlt-)5^z|z(JhttoH`pVO~|!-H1;+_ zNo!UwA$JWJL{y84#5@pL>u{S<|BGmRn-8L}fYwivenFEZ1!mE#1SBY6@P=#BR5`@@ z1Gl`NIkGY%(Z%G$Wu*ZkQ$2lNa=%-j#QxxcOOHYd>#L_*egtDsOS`I^!&Z3|KM;$G zy_+afmjp*JmA8pWTnJ^Q6>s&aF>Uo6R-V zE8yU6Xq)N8oW8<{t$|_x3z|Xp+!@U!z6^N$^Y`!HKQ+VpbprX~&u241qGUQLI9)?u zBOwjck%)7OZXXoklk4?US`znW<;LrlD@ovf6oKM#reje#Yn%JiS^jEoYAPkFQw2Md zVl6zM{!VjqU7iIj8^%iM6Wx{ziJ3tdx?5)!45F|rdqq)?GGlX2G80)can9pd7Dy%KcY+B2ZQhj?<3NSTH40#gmTrzo%i;=Em$| zcqzZ3>$$bJIA|NMsj2Ac2#UJJj!hyKvfpXwsk1Jptun_?qT>_Q0_B=B1)V^JKpm4s z9IL&m@l5UE$p1JjHx9!an!aq)1ak1_pMUCP&bHj2*YO?Xd;^;)#u^)2&+q<9I+7B3 zA=-Abd|6eO=OZa_YSReZc>LrUM2c6NDtnGJ2)L6JgJ?Cs8aRB{3f_j)_2Re2)i^6c z>1M`nxf{`6AvfB8WhqmYU#dBJ6M^QWYf!3X%37#VTkD{g^f8t6`CBp}u$dW3H)y|1 zF~D;9r*j3KXcNh5n`4xV2nYYG`@?leS&Xu*$qmlPhgcjNN5Q5o?6eh$HCtA&bD?Tm z3qbjku7_QA0UL_n4X!5^Q15zD8F$rsGj}p!U5p4%M<&=JRG6p0wV5veQ^>R3IbgQg zl}2R`?JxFgWLhA!GiQrhF*FZR^0t|ULQlzPU?XdYT)o8bEsXM0qR;rfs z_|W4Rh~xjVnkQ4bE%1%goaJ)O$QTV3^w+3+bd(3kq`TUZfvB~LOIXOBQG|+^U$CZo zgPhst9VnagMX{E~0oY0cWzRAfBAK~iAf$B^*4X+r8Z(jqv8h~}PbEbF(+V!Dz5Ch5GFv$22T*G&t$L0dr9 z83qYvS-Z~;z^2}y<4mi(b zU*Ep}DsG-yFPZXS4k1s89OIwY15i;O(2y<1b{(yYZ4+mia0y0V&Ey4+I{l>P?Nr_= z*9$qJMaKWHABmqBjikTB`3jw4HVrINiPZI!;QvzyZu*$wueP~KgT>l>8d9*rP*4f; zk|#xllYBoTkdqzF(yh%kA0&iiSG%DC9&3_6eZjLF9OsDn{#fxUZ3EpUH8M+~D~_D$ zmGxNJGUy3r@kx=bq5_UON4$3)nAS+BB|N1KOk!oMnf7?LO2mN|U5M}H%Ph;b}Ko1(_^uIeI)p@K;Fx=Bz#CuUwdTIO`{UlpyBi@e{pbGr=g&fUQM4>^671? z6YcNwmlP7z;bY@jZb-o%C+kOrQ9K1bi%1mIO)S0KHy9&+%|W)lpka1m9@4Ck8alqT z6XuR!q$I&DCsq7D7j|aR>t9t(wmDmZv$;Hr8Vq`;hi<~Cx+JAy#!j$F-<4ky+ln>W z<`Z$*;ERJ>JteG1)HWgmkVLi;ed+|1!Z`mR*m)L!Ns}pq?k6c0E$%K3a`di&>p+Jc zf1bTJ`(|zwab`fuHSOQ>b#FRln~G=w5j?_x#L$Q(+JSi2F8x{1G^v=vq6f|349BT3 zHPH-KFbb{|DWvO>8tv4G7WIasUm6k7h!nA6lcRao{dxMbTwJ9*9|)87){O2?)S8Ay zumV;X=1iR#WJo5UcHXLiT9JR-nYkR}x0uCqYIW_83VR>ezg%Wku*w?NR= zu_L1n<kQ{DZe@bWnbH6U`o}}F~D`%?MzDk~g8he_JGX{zY?uf)l;Xq** zMEQ8?HITiPCNqBgqs=eJPLYE#urj)^P!kU`<}OSkCr@!G>X^shubkfy))NobxV7a? zvp;BRlk)|%Mphjx@mDQZrN!3$(w*e9V8Lg-dEV_`mbYSU_1@ZGlag}c86Y)!l#1q3 z$U>`BcpEQ6Nj!ZxdQ}R;q_w?74i&@_TF~LzOA;9swInjik*$dFEL+JixXVA7GN_zK zw?{y_wfaii%I?8eJSje0GQdr{CeoLG;>mnV)Fic$k42kvSbu1)ocHB1L?nc|^9}T$ z+;xkunAD^aJzE#?EHz@NtcndM%K6e*?N{i<+TLD&fUeYjD$&&ZlqvqKu6gun2+gtY zYeop;sk;Y7Vi$Q{_r5->Rmnt)Un2@t)+o+IP4is{pWW$2{_~&zuJiE|$SiE|pSB*Vb@-IS#fWVTPxE{z7g8>8g=ESB zor9dB!{i0jn3Yi9;9m!NXF2W+ z;+?VWN-EWDQI)~DRJ3_+rjr3-5+8C0tNdWGdZ>n&ZO^IOXPU!IJ4_0DT;+Uy-2H;u zWsyF>V8E#@VQ#E_H~8{?-og2(BC}T(oxv)GUj&r<>AhhyyCnrzO-CK*gN%5a zFv#O!d*F_>2E`HbMyd`s{08z19UU4bhN*-_6&h^{=_n~4Q1Vl%9fG6Ve6Ze>p(uIQ z=C%`0TzmH_B~kMziaZssglaQDYUevsD3-7~WJF}kMniTGONoMdy@RF|$#+qn(r{4i zVN%>RUli{Zhmt~Uycbb=RoD@~t@~h927X89txzjvdu?f4Pz|X;Rkm0*WW>HqeW(MW zmj6I_T)=o1PSLu`D`cE3mW;e{wqe7W8Kk*E(CZt4pH~HHY>unEOeg7H9&5;m13jtn z5(d!%%5&(wfs@S{{ez*=GBo zq3nADuq6Gcgsezlz%{W)#SD(WGcBOWw>=lKc>{Z#PVjJBD$lhi_V(_&|7vF%Cv_=!E9MUCR+-AyU5harnZlcRzP0#WS7LL8sn z8_u102{L5P=NDuH1SB&3C)@V*e0evQ!e3kgoBh#)0C@TOI+0oU@^H60NtYz@r{HKC zv{SG#(iZ0_$?MicsrlP{hEMaoAX#Jyi_tgJWy|70g|)2x472U!?rc{v=IKPrBGsgr z#IHmxt9CwnIwZulKkT*4(Tu_*iwj!FgXkAv5%D75!c3 zh_&MLyqdL6S9Tz%Y`_e3^XGa>6Llz; zjm!sE)V=eXa)gvW;CSZ5$jJsyuoh9VsAGiVx#j0A?H}kxNZBmwrnkAXuLggGfiq@E zj8E8}?wdrRt*yx6K&dJTS~t8}0gQ=V=CZL$8KkX-Al{qcGA-zh$#HDjw!eW-0sxG? z*eX+6i`gxiTZ3A0ZG|G`87pwrpSs395kCb8<7c8wVbiK(0hzbR8<86eLDFUv=E ztAIGQG0`bA*;PJq3zAIUPH#0Cd+|O9XvfksE3blfj)N7Jet@pquIX0Tj z3QfM4Ld1~)OecFNOH2Lc=^)C6`yZvbfH5kNF)c7}p8EfuPHbipb-@kviMbhTtoe_Y8F>Vq@9JOK#iA6B0A(nUahfMV=kK>mU2-QiH^M-(mmwB_4f9rBy^>? zxhd~FCGh0bUf}a|VLyKS2<{9QjiEXsQkM5W7jR|*lds26J}qmVKJDs?nqBkCKs7$8 zH?WI0h|%}H;-J)B zz8|ebTI6bgTj`zlS`PtwdQzoZq&veK61aMUO19l?6Jn$?cFY9)04O zH>e#*@jiZFVA7Lkf9dlP%S>gVe!yp_b*;2jX+y5p8l1L-ZixB{j#KikUI^9W*bE@4 zPvC%t*~J3YM$)lj0Y63VzBjXzHdpo^bX689-&S~;HWOF4@_H(z&_FCkJe4T$`I6NY z3US(ZqF8UJ>^CgwOg)X>TOLj=NiGfZC&Y>(Jd{JjjN(eZ&CPJ-n3-N#r6hx^aw#qY z0pL1zY=zK?OUQ(R?!eT9(K?=KZ*GF-C^mmQ_^=#hmVBEaj9bgf?tJ z0a(yYZgg>EJ|DQERY&vSrvSVw;b?8J(EpO4zaSUVOtj$cdTQp(qmzBg;0Q8{rKwd# zHoHpm4d=4O-Fw-~y*U6&wfQUrCDTouRy`-xF~oB7`O^Db1ZhaGHS(90eT1FO z!BY^3c2fg^P6=y##kvyOlnwNjW~f_dd5QTF8pbZ=!t7$ylDGZdTp(cvfxxNcz6y5n~C7Eu;~7h7#Ix@RJHOH5S`?-CxO^b#yZBW-_D!OMqRx{(UkX?+v6^(~CdZDw-AeP?GQN9Va3)x<3O z2!rD&-vph{?C)G4=&&O+291r@-31AbDcX8Y(WVjwG%8mmo)HVRZmg-^Dy18hV$unU z=S|%{E?f@L%lFDy9wk`u6a;l!^yM;&^Ch6s>CZ-U$emQ83vp0t_4D}SkcKiObHFAo zF4ia&mlTc6m0{c6c(4Lq{2GiWDaf^}&}QZk@MnlXnk+^J=+=BL`qVNw8N9(GBOYJu z0y%h!I6eJoK%V|2{J^PJj!i4F^70f6*wTt} zSp-idA}b+KRj%qot65;mE$j_x)|q2wZ9dDV*-I)#kNJa?{mOJ}v$iCBW$V2Bq*mkz zPtFuJ9w3y@lidPKOh~?d2aNw z${|O9YkEU9%;>8=Q#=E$3Cb!lsVT`*_6Hpwv0kUdLL!$m4Hdv;Lr1h+9ca66Mo69# ziOmT|iZ+^F$Tx@n%J~#1$#eo;RV8z2s)1oEl1N4j2b*p1wmYymzx&{g%>(k5pEa=V zThb_|Gmm~o_-CxNa%f=;)fyL+@}H)$r)CxH0pjo#KE&ZsgLCyW>?TOea)aI5z2jbG z3ru6>gNYzh&xqK`YD{pEo(1V9CTm4)WReZnbfdCrP+YvMBg$k^H(z_Lbtc?2KPmZ+ zHP@rxBEcmWsmjCxP&Rn8DpPqTu4 z@yhcAnob6-@K+X3%BlGW4l~fPa&ti9s5sqBvz95rv}~qb5;es^Q1%+Bw4iKOHVn+I z@?goQ!`C;4^HXFD7SLqsRj z*t15W;SthS8TmLpmGM1Rd!}!t^H;fxb(fTXD9ev}lxfo%23DRn)@fTdVhLHR#^r9} zg5lHqB*ZEn;m7cah^5E`G-%toJ82Tg z{DGBnOt<^r4sAF6Z{NFbvGoK*zm{fdrhUOdeyyZ?o4yUR(t&OfVln~|5g2h4O9e{W zfi+lwg}g00I`Nt5K21N-oLQGocSAw^Tr8R!iQ8scSd?m0)~~`SA_RGWCBxGWZk-(> zFSNNhs79{sscG3X4AgIvZ2Z)_+QYIaA4mw%WO9|xTWVZFAZttxZ0l+1N;Au36F4!c z+b&W}yUyFh(1<-C%O`kR_3E|_0d)h*LDMqED9lr#O4+B+_{SfA2wJ1=CdXg|SEwyT zp1BG&) z?6fhPOrNG#tTIs%DdN;(4@KAfU~5U&95;%*alu74N5dS+<7O)Sh6I_{) zA&^|^0-}`_35|%=VqI0m8=HK!!A&)i9|@?f(gdbsATves!YJFz$?2A~QKx^B9s@<>WF?%9}`X8kIaM21=E)FX{h{~8aHQn!H= zsl_rdFVYgBijbBsv+VXOeVG{mK{?Aa$atg*o%wc=jWSs17EyYc77Hn9bdW|HqA2l> zEMm$B^b>Es`F9$c|P6`O~AjI7|9;k#IDW<{XfWR6JJtHC0_sR6x z5Pf-h7DNd!^cbXM1~DHU>{H$u{bC8lmn}BlA`R!nnbQMr*7$d+K|no?-cPa=*5@T` z8=SZZrO`Sp+n*)usZE;6E+)dIJfKw?kYnZ-qpya$NV2&LSJ;NQlqR;ks|vup59Vl+ z&4AkqO8m;}6mWY&s!9bP<9SkSw&!cui@|2<61PCQdP+8hm01&-8IwBDSzNo6Kw{Ka zrXM@XP}9va5zj5f@+n-_i!I5y35Zq_6CX44)ad!x`#8o2>7fGgIAY$8WTiG&0}zy& zMMBolJs!NDi_LpWlS$niNYG?aagOnn_i)Wfec4$QSFyY&Hgl<}g{7^!ypgcdvCeb} zOpvdK;@rhn%@(=2!Z1`>^9v*~jZYf_7?h*3be7Dud^5#X4V40+9b;DM;F8F@8H20( zS2htyJ{8w8?o3Io$X=^-bkN+IRNhpMEANTdSEZyno|mzPC2D@d5(aoMbgkrt<)qmp zjk7Xy_K6=b&W3%-bhS|pA9vPtxG1d-HjKbbQU})`Z7m4}aI8W{Sd7~%V`7b4N<3!g zwcd>rrW&k@SO?~tJ=Xc!aKt?8S2&b4hP;g5NP>fjoJfyzP5EWQ1(`t0QEZVdS#~HC zna)o6aXy>fw#N9KC!KgtJcW%RA;AYtd~zEL{WJRXVgRF>1jp0M0@`SUV(XM{VC*F` zdt+BDmx+(y3da5$M|9?PnoCpzwXGic7&F4+dQ4f2csNO0RtT;a0MF2_ktGcPXQUTN zg&~%Pk_wPLnFgj3G}tq_Gh|(S@uCwn(a4qp@g&+)|oD8&;KW z?=2P!s%;flZg#{&d=1vt>?d|wsUPnje;iC6;5(K&T}~+`zY7+ z9it_yGbFn-k}`TO86*@)8rtyf$4%uvuQJQ7#yy8)9{mgzgsh`Y8}nxYHm;|W1ers|ZZJmgB2@=rbgaN6S&08g^m1Cs+F@KFZ$(cvZyvp_q?~F(i64$#+ zX*~0rf@Age_Le8m3(t)iomfgkld6i3<1SQ7}_oL8(5 z!sWNff!J`C<`hld42JXP)_yMW%agWbFpQ6J{MM}x$cuUHv0c;*D8c9QSH`h~D5d%P z3TZLvk2V(~7T1^UvD|59$dBufMX&YR`mPdRRs=6bVlt<+II>V&K9L!Er6+JxK07~3 zdNmHPwd`))E7X*>Gjpf-IL8~rOJ9@fes*9k=W+F^S-WQ^I1T2B9b?Ow16u17R(tyG zs-a=OnCS~FyVZH&q@T%P8Mm%PblYmZ_YB^!^+OJ@JS~hmZos?L-4%n!J>V?xP7TNg zezioHc_Nc>BW%F%8_W2|;9oX4qMCp1BUmF=)jxSd4W!&s0?ZHvK0(pYq`_eFYScke zImFKKxChM9f1O&I4O0-gSCw{stIlqw$X~oamQ0lDT^S)8D8{dgzMcze(Z2Rp5(j>G z_m78e!++3=)$`!=k?EvozBoAu(w!g|+$PB=x2+mi>^p7`K&i$`Zk_b?x{2I*SuH<^!8PA_Aso1uaSk%qyXvCV#Hii0awK(SUG zXaBQ{_+l_CH4O%yV;PDt7=uxblx7ZGnKO?->}-a%20~}(%}gk*5XP0fi%s%9ih(JU zUiqMjD)XN>BS$!zZ7;iHYRZ~a;bM?5pon~kQk{n4A;iGxSk>kl#f*+Qh01lC;N=YL zn|n&b@G)`t-iES7ibfRr;H@*F^2Ab@sWZ83?K+E`(ZOx-=e>brw?B^vA7^T{CkVRt z>e_)!JWsu`jzP-6S2(AQGQ^g%Z$dU^7p5@fSnMjl=gv(z$D6u0?==d$vi z^&p8KirySqOWBJpOIQsTwz*N@@*EpreADT*0$n?qezbyF6oXYyYqF*Fr5?WWYjK`Z zWqo#6WtUe-9cA<_^W#5UzUiJ#;bzsH?WS+S4++TEnpkeK+W}teHIgRa5 zhKQ2|YBskl&)fBA%$V07fBr=kJz_r7yL|ipo38cx7#On;evnN!s?B+iZO2gu4mre7 z6y=0;4V)1&#H=M5EOt#aLmcMSIVP1!+-F4Jl_^qByiF08vH((xZS%p(JY;OSP7vIL zKn^~86a=!K*6d(U$jOxGHTXCkvYMPRvSrL7$7kueR4wkz%>{8*0vewwItOD0-8Q+B z>wKn|%w7+VDk1UgCerIjQE#$@D6+#CJw5eOAyljB{8%}3xi{dBhW30Zb|N_XsVUyL zhw|zfz<26yN^*Q!IUH?obJ2+`$Db!DggL7%LP57SCl3=gkYJ=7X9o+C=L|Op`BNMR z%6)`(l^@R@!-9xopOX2=*(&o^(jA!Yf6&W?DCl=}B{uF)TjHLqX79Mu-B#2$bxf-C zY-kLdCS8NqVQz?=-)KL5n)i3wFf`p*<65@L-RE%pm}1=ZKBNmf-n@qMD_o zaK7jHpx1d(_Mgg2qHV&Y zYkC95si~ehp1MMfgs4IoV9|Dnb9XQR6J+XTfs|p=5p6p(@?E2p=0Au7FEoPE+4hs> zG)jqVv*%jeN0jcNT^P~zHAmC>@Jv?u97)Pdg=a`ek>^m$8d?QPEHWkC22kf6@+{-`0h!AtP_v|*o&HAG zr{|!p(nsdV9}mDH7_uVImV&BHxiEORFxw~%wJgBfiZy+86A`oNpkU-?rBbWjs1MJn zNT!uJJC7j8u$qS(nTpAyMre7SCDmNJ0m3~JMyXM3a{Mee2V-&^=rHzN+=QrTr$4Ai zKCon^|6pJqNN7pgM!OKq`Th43Qq&sbsbL|_2;wwG)7_n`Nc{2dp`*ll-OD+JzGhrnuI%$d6 zEaM|Kfim%=rJa~|jw@NwrZ7M9+y=_`nO$xA`;G}2 z=2)EBSTQSAA~c!T)-V|rG1#V}^WLGKJnd|`coun-Op3fscEayOBJ~LM! zydl1~kRckDnAO|7bX+^HtdFe6q$(x)2(Q8f=>KYU?NRZ5cdV=4>N{5NFD6a&U$o1J zg~EFjr^%G`2m$BBu5{=*G)Kjf!=hYDwlXYjbFzvvr0pXyB;wTIs3XIw1t& z6Xl`m0po;QL!hpN`Nof!rG+S03>7-VOCv19b=cAp9?n4{m%zI^KZxVi|WMlxX-@GD+jO3PpWR5O%V2) zyWH69ANS&=eJ6W~x9bov2|>{$e&U1ZL0ECnv-f75m$BeJ706YA{R%~J)-$38h|#d6 zLC7za0^<9yoHZz$eMcR~QCyY}G3Y>{E@K@LY7O2W9S1J=vvpe!r2w#y2Hm$y z@-)5D?wZW1AERALOyGDpSGM`iKP#H3 zS6z)eF1@39Fa4&sndp*9+@0q zt!tZ4wRq3(uzhP*!42$aU5P>5=G?$BGr=vTN?q#=>kIi*1~U++(^H5m7f3dM^euJH zMLBR1u1W*1qY1=~`j4&?K#6rZB~A4L+&CfDX3T;@7N zu9N*0)R29FAHx97ei;A=3+g|Mqsi0s8~&!?>4X(eL&i zQx{7;p(r{Xs9&n*Ev(YW7us^YQZLtG_s+`?D#%{$*3;4|hm2`Fk{=IUe%oA9z{G4~lgNCE7z9H-X|vlKxi zgui+KU9W@Cd-U4mvGikuO;@EyAa+cfTV!TzlMjycoB{T8R{~)!hq(}G^D#V~k`hj$ zrcGdsYQVF%*B~~cj}t!}&nR<@CC+?Nvb`eDWffw9FjJl5cV!M^gSO_3sfMK_1n4zu zM=JAF>h{n?GT&s?j&j8={rEHy8^w)gYBhc;!71KhA}H2(oL*u2bz7qCs_3Lwi+>WU z(ex?#fDBc#xma6o;y3VK_2ez5H=XYMU+1ssuR+1lxL4i?f?KWeVWg)_AXtg{#e#{G zM9q7trYLZlX&B8&NUS3>PN;iWM8`jo>2`Xr2E1^0-i&Qeg5IfX@b~-lZ!f={qUUtr zaC-i9!33Qy&n&q(%{TwCyeYkdhE_0AVYNz*8<<&Du6Li(Gb^!st!>CQ6$DG3b2 z*1agrWUL8f3I@!0SbFBEO2QAOXFK@RWKC0uBTIQ_i?q$uw!v9rQnyql(maL`s=-)= z4KRl$sWLvy=&mu@QZRYo>`C}NaG>yv$(<$^aHe==%aVfz z4CiaiKbWADovE^DCLCg?oP}P_jxsSC)6mxB)_i62|0rE_c^N`nIHqy=?5Bu!;aagE zRHYQTyJB#gs^8OZ;mQxkQ(X++AHOaESZx&-4LR(xn9c?y&?b>(&eM`)yq;nvraqCe zyg0Dcs|(G&C;y7c2DQ~@!xsM-;O*#CG9}opWU6NmJGS~5dRv;=FYguQfpVqZxB=YPys5fW_7^2V{i^}LRBP%18;?SDWWDDL50C~CI+uK&+Vu!4)D;+w7I+eEa znNn%NidTJVmB{SFjoUqI*k`$FCm5T>%!RcGLZm!x*}|l|QFi$?A2w_E7)MN@m;JJy zR4RMw^xd-@cd;u$8dS+eD7obVLJ1>jk+X-r^3db!WCS8_H0>H;_20gIvt!{f|1!7o z%(&hbeaS&n8a@40$ymLe zYUg^!aW=+xxDdcj-`RH<(dbTVfS8lf<+wtQf2GOxvr6FsExCt{XK|A@7pCU9(9=ZB zZ&yweT6c|Ep2iS`eCD#rr1Hv2D3@y`A&US8`z2gqWejE?R}qUJha&ZMe&tqod7YLz zjCU*#cWpNHGPNPcxQmU|QXwk?n`P3rCReZ`GIqPoNLU=ARvPDX)W^zofE1u8UzHtl z@=VJHc18AxWhp@C&?pC~-;$Z7RO^e!s_tE$AmGuj*%Im7sKaV2io+m-3PjIc^JzxR z&T*7Ic+Er0E1rsyJ#`(957=?ajCLgv)wr&)FeF-;t0|j57Bz&;3(d0`%B?j<%j##9 zSeoqDJ194aHE{LA#gqYe%R!0i#YsGx5H1zEcPQkj&6W;yOz zi69<(7%ZUama(G}SIIpm6Xbe?Cc35|HcouLo>J^4uVb509-mpJd6rdhjhkbGyo2({ z3`8vwTb-1BesU(Rm6tW-dfMH_M5Q7$t1itr+8YhhVTur~;YsRj;=9NlYud5OY{o^f z-H;%W4s7On74X;|k!z2ATr+#trRG^O3n#34_3WfcE4`Pp1ENW2@t!!j+2#tfJ zob(WosBEc3R><@gVr z*$IO{Lf)HevL$8`Y%}#X7qR-tX*lAnOI6(EIj`2tN?n095VWRv%%Oz0kp+*s60{sW zdnllNb2!o&jOZ-sr9mjU5%P~kBc_%j`9J^r|Bf)QKN%OEOYiB&Ki)s4@R_GS@e=2` z;9WjY4(He$82T9`t9ZK(3H_0nem&SsgMT zA4A9GSOr}&d92*~l?gkV;%A+z>06TL%?z%zrK4*?e9Y*94Nhvy)yTqIM0(1PrdQDY zFV{)tK$K-bIepZt9eZa*IsZz^bg$*q(rlZRiDf7)&nUi~0jG=EeBPdBO+601nPbnj zGqf0_79hJTr<=&CLoe|Ox!%(eNBjoLNz zq{@@-Arif7yB>4U+Q6qHD3|9^*Y-xp7wgCYX|NoRYn3jv&HuGeklwYZmc{P z2AH97KGXQNKM&(saAqU3qT(wCFa*;ne>dvN*fw1Ey!^;zm|;q5nQSh?auhepx6Qmq z4QfQ?!7>Zfi(REfauW~zh(Ma1U@j8tZLE!8_f4v{C2eZ+;v_wu^k(aEHVhy!lp3TV z1cjqYYYu2z0GZ!6PHlN|8Bw;)t!FtDE>RI?X?loxd9ag8{(TvFUa zYtY(UuOfuzyBMPMjw)F=qQ=yL8^?ThO|^})e45iO9|1Avf%UQu3Vj6QxGDNtonV6D z<+`#wM%Szy!e&)_=!k?P%0^>}V~vqWeauLJ6y79ekbj-+PnDr}C3fq>t>Jd8bL<4j zxX6{IbljaIR!s4-8#QIo)5}kvcz^om6CO4)2quxgW?aw z{uk4m+ncirIss#Ek9Bj(%2idDD!KNVU*_*kCp!Z$dMOvLP)!;`_&HzO=6bww4pK2+ zH_D2?Qi0E=HRNSUVucDXA+)AYZ@371vD9#XB)hi}puE2rarN_*l{Y05YMp9>_Y#!5 z>TXLP(#+!8q`MGrB$CNGmqjtbq??(O~J-jMdyK!4$T~U$7R*QHK8t-93 zU<+QIR9YO`<(0ymnuk_7Rqktn0cv}5jJQGCTK`0(XC-NoJZBQldnbcf(3!Zt;hY(a zzpi}Ql@lm@eNo|Lt}GXdjMy3DoqD~wmp8bKS4*O~VovwsaH51A5AB=|OjWH@%h(yp zOt~I!u$(u2dI%|Xd2}9G{u_7STq1e`w!M>4Cm^Mi*yLw0Ce*nelQB}U+AY=!eR=@q z_T%Xzm#Q`wiW=~fHGRZpRl_(IO;>c{#5cvt(Z&#uar$%MU9GQ)E#mAh-|Ry$tDN7TB{_eg+vh8 za2@?*yb(8x2_+hvX>pcDPdvzIK{B_Vw19dMeFO645OWW!lX)MlP_ zNnCPD`^;6)0`LaYPfH_WkFZ)Z-l#r>RV?@Vc8^1HX)XUqZOz*fkM)l~{t%j-SqMh% zxl{tjQ(-O7CAKqeYpHYlU;dx}`G1t7_u?X+eh7ugKqM^Z)QclPcfrf|{+K-~PHid- zXy1~jm(?G8P4zsd%S4zjXhLf|Ps??-#^)=yV5yh89)eyU7)s_yODf;xFWR9m(opu@ z#PI6Xp zSF0kkH>`tRHZsUV&iG;G`3g@KX8v?QD3fdFpzw0KOIAY#4 znHNF|UREzr$g~OR#o)v-LZhMN(}4H$kweCcrCz*P18#Re;I96Qx)n4ND`#`^4csTE zgJN@au6H`jt~$UUyXz?1g%)uetUjIwn?736GRftI3+VJkPU5nHCw-p2ieFjv@Ybws zs|-{>X&HT{^^ugB4U|uiPfHF^)7vl$-wK^Odv*5Zs%xqMmxxTrLCFTv@`|EgiYERaZd@y z&O`zId`O*VmOj&55t^dFwQ;N)TlHFmsC#9r!t!SQy!de(@a^4LElwfi9OKF0s&GBMoz7A;3 zBbreoO<|1}Dt6Bxp)t>PvES_l1%{I+IVh@nzHg7*e`|>9B8i$%eux>EbcsL7Ez!~! zb#u!NQmQkO&?JE>YRlN@uz+Q@lgkc~M6V=JoUK#jX|FI$_EXOvjF31h;}VEA=S`00 z4?61_Oc!B|SWyWs8m&QLQsHy@`tjq3sH5w1boLr7%eTE;D#2w**EN+l1rN-RoFxAZ zq4#`YBjhQvz@WzmJ4Y;T1N<(lx*glx|D#L_2bc8vaeO~BzFtmk-s!*R(d5&Ie?MSN zoOHQ%5!H`}>1_|~sCdTIjC5ZTSXQ#Jo_JVL1zW{d><9In^pj$-lCDDjvq_)x88Es} z-`7HClSahRm>n{DEdfJOJjR)67KM%&yk_v=u1L_cm&mLW1%tQ`I{PxHSO(xc8mLlO zITM|d>Bz=XK>w7LB}xjY9ut2{3tO8%%5=$-@ukeK@WC})g3NI!@XnZmprysKb;?lK zz00E)FofAsDku-g_KcQ!>WLy`ik_B&@Nu-ObbgOq5`jGSel`s5k;QBTC?}wVTWDb1 zdz3sL#Zl_@aa!dSNb&rh|1?bHsx|&H5<4mV|n-5r@?&1C>i8UMCI5zgkPygC4e{UqL+2%Q(U-ZMp zm9FvTd|DlE3SMTbAbchp{SI2|PtVgejc3dqtz! zv5>*W04Opu?PMhAmwDPbdmtlMmQ%_q$Q$5&5Dm)8(0kd%<2D$TaOfeZ4{o9{Z9cnF z>XY2df6VE!^j`STt;p+TY&nTk!%NP)Wfr0lGClo#VHPQ4!Z5duln0wKHghSPO(0Vt zE`#G|#)9M!5v}gNfB&Aj2s~bF#xy`0>ZNNR@wpEvIRRrIL$mWHS@X0zR}i zc%(>e^I1?%a@q+{O3jRpwcRMt80wk%@Z>$5R^Z2>&9!(h%lL2~4F2+e{m=gv;v1)V z-e}97H`cy!+Io7M(_GZ~JLhLG?ZEes!^hz?^^2ZdWLWdD%VOJG(l&ibo}@L3MH=I+ zP^wx-)wZ^g-7H)FqW{(GjavgX1lU?~Hu{*4M!ble&Q=t%-xb8KKR6ANCH)c~edI zWxG9_1Z~&hT4Kv~8F^ycWTbK#M>2#?7@NJZCuqd=R*mGA{G(h88o#f!EYyUgk^{yw zUPEc(TM{O+#&~Znm7k0GqRoPnZ(JI`nmJw;-nXlrUD8>Ys>SeaakYgpT}!HDZap`} zy=yBZkW^OTQ+;~+>wfn-o&TpEao4-^Qf>{{n1*x>3KUaOR)h%4;>SDWiC&A_SD<&|D2$zZwvX*W?J0bu@eJ!)H;neyJ~G#zpe_dBordbp|E)pL4XlW@Nt&ZE7BtY0NH<_WEkSjbztibc=FTLnY9NxAN3%AQvF!0dY=4T9x*2?aN(?p$ zCkjEZ9?g2f&$?QYgE&nzfI}4_1kjmErG$Z$<&ej&*(DU@ADNwjNXiJaOm_GsO%UQzi+U47Yi-b3?k5|QN5BQvSFbvM&HG1m0-zq8VJ86 z<%(xWueUf0z*nYLvpV?lqr2nPouS1r6RjR*S!ZRbaam*+6#hK(dm}jX?#?nsmme^h z4s-;QDk6k)l{HKS5BHwEc8z;Phvsd;PACfRTii!>Yo`s@4^lCgvHN5=(KF9yse zHL6TsWpSekry=<(>yJ|DGtb|XBHo6=N(3d*BK}!afZC6&`^jc>} z=ca1eIr=+BhxY;WItW-_sx(qAt(h@ihP?Sw;%h6TS z_f+UJV$aiZCBZ^qz77XtSLpVdr>}9=t1BHG60vV#;wv_<{2{Z%+?=XaS`W6zFnKd5J24+rx;PZr~6#o$t{sYFLw62VaHe0zIi zOCoMpo@iG)fQ}&gVHMNH2i6vd0ffjE$OX%%6Ghskh-3rG){u%>2^EEd`j2sRJXve# zv_3_fTRUg{Ysml?&0S|`g{c;c3R6;H{B9VIRU^TKI(M26S_Zm(uK2F;SrFw=45vEo@K!v|`OEd4r&VwSr>LL=&2Xc=LH}a~h`=XJ3hVmQZ27w`K^_5(D;G0a!sxp=qT-b_}%@5^rRhP$v4{6o6@mM-BRxNH-i?(zITLH=@>Na$c@9&WCV- zm_o38K{4A!P?Gp)>8~eucO`IU!)_;)f)G`!@_pb&AQf4cH{M(tt`o(9t@IM()p(35 zP9p8uM)~ksZ1N@+1HJ-tMR@rqzEc<2u z_y73s`{UJ}@T~dVb}(Q$8xS7OQ_Q=Q>%(!syL5ribImiz;KI>}jFTU}yO4@a< zgE9iW0kR9+esxUT;s57!;FKk3@wC(R>?uSX?Qxp{E%o|W0NhZ62b`XR_0Lgwl8GG(bhG>1I|-jO8f#pm>FidGzqWoS0H!SS$f84|9+I)Gw(VQ>2VK zg4wdVCy-=^uZ39qfEiX%u5Y?D(HnTe( zC8}!rmI{*Pb=vu(Ly0tIbA_T?Fhxsp1k#cwJ=<;z+cCPCyn*>lYaRRW))`fA>*NP4 zYj4S%_x8IB0BE+a>j8oF^|3V% zN~G~Y2$B3lic92m!||1|FRX#ar4PJv_6BK@PsMM?sDnidZEv-{^jU0pnoE48`W;WS zEa+hyd)(1rg>5apo(g78U>BPv!Un0*VE4g9D+g~qraSPg6j^L6KlFJELjrSA(HcA; zreSuxR%nUeQV17r!R9V;)JzL%u>Yd~B>P9~A8X{P%{4s;!`PUO{)rKn%rCvHMj?70 zf^BZHBnR<4(>!>Ta%+epM@|pqUP$VE`tRG@TRApEEkFLEQU_^R@)mLMEIzE2nClne zy}igD6{h_DxPzIWwJD_xKEmYJX6cTrAG1H~ zU(WUN>;C2Mk9X5_i2dp7h|0;Cq8xTdt1SdYmV@UBH=^W1qol#x;$eezcFbFoqS@oNsCZ{i}f zkuXJjYZl~TIrDSQV)P~LHgTBS)7@@_l)|)jQY*<+vT!t2=BQ|Kw2yZZ(1a2a|ct#q`99@a2 z0y%4UIfDf^MOI5CbE?cQHy^)ku03A5gq6uk_Wu|M{@H#%UIHRM+JTI%)5cw7RvfDya7nhxbdo8imKUw~#G2!DaUX3^5oS(S4~R3vA{t-wm@^v4`p)H= zc9&6m$}#ASQ{~dO&CR0-mS*F6EpZcR;?8my#)hEY6k#oSk0OmDM7xUj^yVBRHT3$Mq17=1fNse*S5T+w*LYY`#UZ9rhJPD=Ric*h z027|1e+;eq@+7f>P+VjQ4#fv&P!s{4wQ`#qil`hXKw^k!51ET)z9m=v~mdEC|$dopL zY^5(|93RT)wHm}~wi8+CiYDusklN@ZXAcaG`GV8dP*Xc+)#Q`mgrWsw@R}a5QFvsj zB+QUr3oGsROn07w&xU5}$je&)i$2YyN3m!Vf~up|Qqp^uqOr+{C>q=RQ@L}l*%59JrDbM#<#TZjx3m3*S8V zmEV-j1yg}00AnVY+qz?m1E{yl+ntAE+CIx-ncqdb^ihW(7Yn zGDX)%elO+&U#7rn>&8G-+@H6%w@@dxibri2Ia`rRY8|Fh!1imjg$bNyy?cXjv-&1y zG1uf+R$Ft1M5L9w_>)WvSfR3!Z_`0{-BqH94c3I&WSV$j=JXB@AO&^ZPeQ?^7t`Yh z-y%1=9L*JFspQF)DpGnsn!vmi=UK&vBrgs zf=;C;NpDgq&vtYsd?>jboMW0qGK#4AKp}xTIVxtw3Q^&RZA#RFeJB|YIY%F?r8E@YQ9qiCJGIdF* z&IGUhe6m7S+UW%aB86AUi4Jxlb{+SvjA3OYF1bHi4X3-@4pW?)LgZ;k>s$&?Z$hE- z%xoId^XwY5VWcK6sJRD~Z~#$2uD?MJc zOzYzdVz6;fvd9;QGKD$Eg~j3?D9&^G_Rl~6%zZdE$mI-Uf@?e-a$utrhS;i13oOYn znV|tWOP`w2*Q6V$Gdz7jiGGW_u&Ajkg(mTvxJcN>(`s2mY>D@cWof7e*-VDxaqMb< zl<=Sz>Oj3VDm=HdI*0NSQ7$NL%UH-?H~UCw{l_~_TaSeS&AjCes<~>5j`{)OI?9r# zeI4&89kSDN_YM?BYM8JQnEYG zlxy>bu0!!YXkFM;TP=ZmX3>vl z`fJ{r$mF;ZvH%&UTZ3aU(^X4L)i<)6!3D(ghLSvI=nXFe%vD-8Xj}Eo2*C?`?qKj_P^hs?DK~#1g@+(PL zkJrc4OJR%Z$B!SHUAA7n#jhy<>%#^Ckl4c|(b;*YBL@OS&%4^7uLIL*>k6N34yO;` z<06*^!{NM9+f8(IdX?!~Ua;sd4<^o<{cbtmss4!-a7#`>mjSBX@#!(9yxoIdBPH?Z zRAIq2NQ|OZ5>c>Cl|>%b$hd!545syk&h*R&S@UY;z;Uk$y^}kX z8k3i4Wh8<$S)#+EV3K=jdf9r_YRc(lr>up8Fl(rV_tw6>Y?9ZbQ%Hk(Z7!IlsC;_y z!!hrD!}$)o>%hVpc|J=q?g`l;^VCc%xKZU@RZv!g_gPMtjLzP}7*aH?(KEU#1qf`G{v}JY`ONbR)=3xLn-J(U!syYw{AJP^EtI zVj@DjCt=_LU|ImCy0T&nv2J^CJ#K^^nR(AK!V$05eb#U=Sy3EYGIzofETLXR_T=E= zv_X&CtmnK#XWw~ydlP&u6x2Wnu4EmFJ^AU9WILFZrWgfQXWPZ(r^)ZCSIHabR zvYwBq=Z{le|IUQh2t=FfHbYcaCJh^6eC|y8Uj3Z^TmKC zxqzt#y-6#GDPLru zcG5TC5Zxm<#3CCYP+0-yl5x(CayHu|4y{`CxiMVI5*e%C#)R@KnAZ!#iD*qseZ*!j z*NK?toXR!RFoUl&_!N(Z+cO)|n9eB4R#_S)_H{tqtx`Bw05)+IDlnJpgjr6jD9r?) z*RYhcg$x620MT}8kwvjydUjixq#rQ7Ii8kQrW1PEU+j&Vu^03EYOMm{a|+HiwVM8a z)#;pGwe^K4P|d$uY-5Smt5j^>kxHtHi#NFV<4{(p$4xO(04xc3B@Wh(&wSDbaxN+l z69!QhrpU_4arGXg@tvn@*j&_|$CP&C1J(YP!@IT1<4x+rD1mPgl;iF71PI?$4Bw1zc%m(K>EO zsz-%si$!cPgKui~%)AmYw#XSSuf#%Hd814znu?O_9rl=U;w5CkkU{%EL>{{m`u=88 zbXop3C}S)4&2Go*!=b4nx4A~F2#hd1W?|0=ZQjte(Fy)4S|M*LU z&)MT-cln+e$&_St+^m0td-@-X)ixKsxI&peL*2OS-orBUMg0EMOiCCNS5_iIu+dbj}My6U-uSXF#$y zC9D)pxS$Oz@HRHg$Fu!mGeW`Qq^M+1a7H6T8Z_suxtX7?*?Qav*6Pk6aMn4$7jrJo zlVP!DyOpO6wMB0hc4wB74F%azpq%ft+1t_Vr1-1XL%0PNb1Jc3UhQC?eem>IUh`(o zf;G7Zd;y<#ryUYYS#)S(r>7-&cH!V6ez4NY_|=2szbh|nWvOAA6dOW0`<8f(apyEN znHxxK;jEv9{p{9n=44W|(hjMWGvDK6E-Kt?p*g5r@hgpYGGIFo#iR+^jl zIAcr{5ERp1^i{R$gq}j{>x|yPZG#WGei2;TT$Yv6{Nr~iMOxU0etUb1GsIFZ>$Q_J zVLI64c9n~hwg+P4m&KNDMNBUJ`0;~7K}?`a-i+>*=tyMAP=ZZiRUeZ?Gs@74V!a5H zw7EzT=jbBWvEpp-QZ%p_Q8+d z;^h<^1KDLN>Dvo^WlpblY-VVo=vxZ2j6c_FBm|e_cOM~oM;XQQ(G!}J=Zg05*XhEh zi+Fh@w_7xK#gF%6Xoj3^gZD4()FHk|h}<6hYyq5?^1fSHo}>8bZcMu={`~s-?RfaO zjw!b@MQwN1#=5>m&Yq6D0fM@|k{CE)vFWQbtJfgp>^~WOw!LGiO{| zJ@-!Mdlx#Zc8*bIhOp(%RB{$(s|r%gNnLP!qIlUjoz?2Lj#`OMZ|FOe8qutph3G;%5i zbp$GN2P)T_399JD#avg*~ z#DnHQih2Y&iucmrQsd!zVju0qo+pSnZ}+>8vmNggZl?Qms{2o)ue+FszNj^P98N+Q zan!u-cVT)TXWH=`QFoWv5few#IrZ1!@98@)zrE~Uz6pFj2f~;A@j&&o)4n*jSznS8 z&hc!8blk_E;}e~evmH1J249?(McXId0e0`<=NTr_u{b2a`r2W8i63WzI_p7>-A2H;{eE@yq<=#T%}J z(z=NjJ}F1g=Bg=H^7hcJ2gToQYf*bo(brgYnM}0il4$L$n-c;8t-}f5);cNM-g*0! z{%&PUFQfG9!GC_Dh~*NE=XqkR}b`X%@jo=Z|K~aIiqDfDgz=tI)9>9!#w7F-}A)UZohK6I$!xK_uC~u zYWrkLb&OQ|lsSIfG$r(CnIzs4>XY=<;r;M#hsa@fh+cB4M*{$CLzcwp-RP55e6X{h zakq1D{{B_Fv&*2~;9F^xUyr&)wF+kLaRUR@v;#d>O zX!PDfhk^}}3)tZc=8CF^Ih!uQfB>>mql046Horkw!uF&%mYFy@$nZE;6rYqh;Rb^D zV&*~iU*G zxHzZmvXxkO2v&&yVG|8)J~>9Fw~2>~xfUNVOajWa!Hd!B=x&%l3Nssavh>!{LQ$cm zjyMS@BF5(_fHmuOd2;=@Tq;~(wzix8|N8Pe{r6-4A;f-vib5ATOJw#S@MBgrlDC&uzf( z&UscnU-PDYio$5FWeKO3VxPHfR!&0eg4r}#i9C@@XpAI^Trzrb=7+?_1|#sE$A+yC z`VBJxkLiS@gAE=KyMR$XN;9jxk})HiWHgRB_12i(6NUD;&r;9ja-~umhwI|XLzL0> zvUx;`gu896K4n%ot~?S2mBOcIbU0>=$G+NehWzVXdY@~G#Y-44mJf$}Z^CQX`X0|F z59jyaUHZ0|G|)jGK)H!^nbHDnKp>reeup!Jd=0>X z+@@Y!3iLI~_D9*C^ZWPjY6{A{@1n&$SI(mX1IYr^$;yXa?AVfdbk}_w4>K4sJM;KB zY$t<4vHz(JNjZBfQ1tz>0*-I$^A_!;dlreRa1*u9A}wZqmES8@hjL187|^6j!@afp z`U9@STIqtoPHpQu`jN7*#?Lq>ObzqIl;vtyrgVcWE_IIRR-*5VPfpJ2;6R^3%a0#F z;!S%#7R*j01s{j<^y}8{$vu80DC}b7&P8@b%!y`{uz?BFV7qmu@)(0z2e-M-rIsrd zWO-!Wm`B(YwEQv&ivm(=hfSH|Zt?8B+{43he-&Gn=k7@l>eTZ+W~lkM-8avnuR4#H z`*{XXcc+p%>Wzq2=Op|6<|{MR)-U@P68P6`)xFihuf&(GRIHr^5(6%7P3bGOUBlPP znwht@YQXE*R!J9?WcRZ4853;=r{P_Mo%O#ZUn6B_mM2>Oi6=fa{Brtiiaf*{vhQ~u zNqnT}&oMqDoMuT&WK3ib9kOK&&9lQy!E!|8>gVU(kWF(J#DPw=hp?;4T{oUzocS&n zus%W#?M1D=uSW ziCQzPzP-I=rIBbMQwr3O$a|@*+iKqo)>4FSioWGopc=zY)!sQeHJ^RIwa-8PerH>q z{eGTWcYV6o(!1UY8a4w$dtb~N15GbBj zmk`~|(pRn)Wu@98<8{)&+t&nhn@>6Oo|LkzxjHwul7?wo9)6#xd>~Z4f zB0>`RpcW7ZBPC9v(97uC)7Vj=wK5(b5353QxD4&C4Ck{6?-`=4WKb_3?HpeYaPBRK z^r7$E0}VOeux#dK=*U zlWVKG+hA1XBDp@Bqjqlipc&1@AJio za1`V++Ar$lB0<#9@4O7MSo9;gHizrjbd3K-WkAUV#Sc}?6m06%g+YoDeOFkPp8F$> zrIMbr=B32{RA0j&@obl5#q=Nm8+c(r23 zDOHP?qAp6ILd09GBBN~^{X*?+BlKCvk$Ika*zDzzWMf`Qy#?GO(Aj}w5@3eLi{D^| z7OMWeOS*|SGhea0dtZcWwP6m^7|v7GNQ}@Hu+-=n(IU*N{uB|%%vzMtoG##Xch`aQ zdia=@?{vra$8+y@zdMadak}gBsa{`Re|y=VFTh=i-cMeHr{8TmAxJ-d{KzwBDx+_e zF4NM^;I1xwcf8>H(+YXrpBQc@657kYRUURGoPB<>al7}6;Oh0IJ_g9`Vxep)KTjDU zoH{A!a7;)ra3{@TDx5bMamQVib_cC823oAb;7uiWNJ$PqLC`s=S4SEaJIQDdw? z;fWcCNSt3x`MIb}PkVYhy7M*|ks2fH5!O;U&?O8*n{Zm#vXfJJ}=i-;IusR*|=OO)G(M|wtRN-pt2*RZ*j?Q0kzG&{ms32@y!^d&Eh*<;A^i$1&1o80{+yvg_ly zwb@ns8W&D0h8e3sNF{(mKPrmQmh&U4{;_|cuknK>PUT{zlC+NH!TEB!`c{v(gqpb_T}rX56c>?aRYfoDrOj2G$fjd;HNDXL;qQxr zbm1T8Jh$UT)C}oL)%9t#?MVPnpLyEL$HhRz*`gAI-R4V%nMz6$d1yBg$4{d)^nF zWa5n?osuA*jYZO~N6|~;Mn+7Vz8@%&z=r8prdmJt+VnROj?fYf;_y z@~+Oty1F{YI$TxA=)PS=0CUGTYTx6|W5nNoz2^qaEr~ojV`-Nnbl)%KIOcVq0qtGU z12*93{o|d&X{Nn$IC8k?ARl8RRcbh~Iyw&i# zgkdv3%NG55S)!b+i=xb&x92%p+FR)r7U^9ic&iS!aZgqajh$Au% zvWN{j{TXB8xksWP%5F<@I5u0U;Ai|*9{P_ofb;il< zBVUH%YuO0rFp|-N_!LZVqbJMCkj8+j(8Yk-Fcu|rmuQDIrwt*n9=}HF%iKbHTt_SK zPqd<_bv0PV%8=9~;*bT!oQ*FQp_-Zm)ElsM#cL?%=y=wd^(0d|BVpZw-wNBrHkWx3 z!Em1U(l_nD)c&_}*wQZ=D04l9y@p_mA^Z zn>NzRF*3?MwV-#SY~r};Yp0ZAHbaaEa!_r) zk_Aov^96U>Hw6zq`00qL*b*q_VE%I@ap5`gr|ZlVJctQ}U!1VLDx5l%8b= z=!swDA+83nDj1T;v@aq{h(D`s%qFWyZ4sf>Y5w!iKjT(#JXa>rkHAF@wjah7Vl$p2 z7Uo`+{TZ2G>glu|J-2e$tSY-FlqCKYGZ zQet&X<5-k4f)uHLs}H&?Kz(K39tuvba;bygsGO^|-jy`6M-(%$mx>nz#-6__k-tEoaxiD34bj z4Wx-$eP%nsdNZF?_?Fd@-7BdW1}B_;*sKCgWKoc*VA~jIiTgJFSTukmmQadB{qINk zgKQ0&=!eS3NCK1&_K;`OAhgqvmu-xj!F{Hr3|T*cB1AQo#e4)%QxeYfF&cylauQ?O zFA8iDyC9rkJZjw)?ifr1r5Z)HI44t@A>bZSC-Zq-nRg zecL;frJDI*!cxu?C+K4#4CkqshN*wcA+)U3a^vezjWQ@X#@KwYWY;@dMlUL+QQjDk zObjxkmx~8(M!zZiVzZ|N%)SN&<9lLLDZ!9K+C2A^(Ad?PO4tmmx zV5)=Tz$FH|;d5nwJ>5xb+-d+x&V%hbYh(lwn+LTAEoloTBJ0T$rfsQ-0O>yFPp8Y9 z-Z!9KGN;T`Dle**hR6k77__5aiFKMI=mtSgdd`{vMp|HQnTC@mwnUk4q(gY>~?CPl?DGz5jpz{{KGO$ML+n-ga-l zeZTm1zwS@z{O)km3%yYF{{H*zv|0D<<6YtR<^?2T6Z}J&a3zR_3r?k2sLoFR{r&gf<0A9q zD5Zll&xpNn5;sb#M2h;BLkN01bydxGnbY)73BWdlV=%1oY@=q4ifsy?5r^Vprkfde zGJ3;QdWv?hT=xF>#b&$Sq%mJ`0*oB9Nr4+dNNg_x0sk^lFl%&DkDJpuxvJ$R#ybN>1SmE zaBRm4gwTyOuWM687uCy*G#G~GBKfsE6XD&O@jccg?YYXE)bL!(3ylw9Lj*R(uyV#(c9?12a$mvTDgB{b=&q zpz6g-6>zO7VHE_-Dn#GioKi4%5kRW;w(3_cJQf_ZWz?t3+)O?l6=bn^)WOx$$wkRv zuNetB3qR$laVdT)U`(?YnM=eMRWYh1(p)Cs+W^Y@!ewDAva59_xO@jhA(H(Mvi zNB4VfZ(E*p>vSM^4}|b;(EXLQxC=kWTLlxJVRze&A&D6U=Ki>sN3_7GQ-ZVK(Vr(? zr(IK&D*E17V;M11&PX>1v&1=`v`P*ir|GE==7zU1l2F&|bf$;otlcuBEwQyTr6MZ{ z5RfDw%yEdRkcz9-(OFuhF2d1ez{}86u9CUv^%4Gm^1g1(aaBtaknF5;`ZecbZss}r zk#=QTf)OkT1q+ZR+f`@!n>^LKt1_Logkb%~ia?b~73kVZk;+_ApHypdaJ<{dfSGuC zkdZr2f7$^nOD$bqc}CpJWO)*dlQGa8&J1ev+@l3C^2>E~elBq2GBnwi%2}YA>z1bG zXk%BcD%*T(u&vykm4HL(-99yZY8G75({2MojmmI6iF==@65;5z#VTwwR85~sJL7EP zQq{>~P%1j;YWUdnw5k-mpuJi_fiZK-3!S)8;v06&x(ZCx@_wM&p&ale1qr+I_yDUo zuvK@GHM+Qr5C2%!g~2XpmGV8#W=Dy4@wnuGlacgxP$D*6uVmcRR^ybZsXB4Nj}n`{ z11`s^nYb@w)Qr5?wKl!Q(UJ;JW*JQE5z>2q0ih}xaO)3Hs1ZK|Y-Fr=ErI(AFv>Uv z@$m=$0-exnj9o3Z6A6uC!_GbR)ZgNCN6wqD#Ho4tE|1``jcCKPE?kQvhSqcA3c1HK zLRzXl2gxkt!3TN7#G2{~y^M6T<(`$gG|Te9SMiM2Yj=d= zBp(eh@^dK*HWalM?r|~|PY-cw5haT+!JH+tJGDB4XL@^v$P|&`bqVy<@H8tcptb}c zn^Mhcl_J~d@C>vNEM~mbyHG6E8RdYo%YCf?&&tCoF=_VYXIN0e;e72=a3TjiOjHT; zB0Hb!I$cs16?5Po;dju3=X?N6f_Z<=?vm!)nHZ&=U7%YK&z&xeqyxn;cs@Y#>!C02tAyGWZwp8q96mf(+AC}wHKBAO;a-nA0BB|K1 zM%cLhC{=H^dvLS46%rSZ3zmzyxfws1Zu7-L-jFk^`yIb{=|h{O)Ui^5XveMixMbTe zO}1jI!7_^F!bpZ9Q5wc`%j-&)i4T(Kdn@WyKtXoR}%_GJW!^lGYtbR z)9)b#k%PpTueR^_RLoB0=v>}}#s8ZnXj~E|i_pzwIIdhUCc<%r3{yfZtIi8^7G5nu zt0YM-@AvQDo6%>LUrgO_ky%CeJfv%CW~ePWp7#ve|+zu5y`|#7#xvweg z%H6QO#e%3b5ltwrIkytg3=3sfl1z!?_yez(ASO3TX08y}(^ma?8<>+2hLq#+#d!Mm z)#F_r?(?}@m<$Tt-G`A zSD0{|5j_lBP_vBNL)r|2@d3?aIs9nmn=t{`sg_%?y?txiUKB1>CO#R9q`2t1tQrh- zR7=;LB{&n!n3{4(u?CuEq>Af@N-{-}RJ2qB>8fZNPl1`t?l>r5F_&E}#I&2z~d2Otr|B(Wj7 zW|b}*8h&FUi*|~dy|~hZxYh}_Z7oVxY*HH1t*1nL`zu%*tcsa7<-6YNNL*T`lbSAeB^V#1buje}4mQC=)U&ch67A2a)65?&3Rr zfx7l&nenyf#Edyy20*F6)FY3;5Gmd^$Ap|$~2$b|}CZCMaR zu84=E6bWF|JDlez|6n{u@-47NK+?yMW}m5bsk`n?-dW%as7tZ>p3G1g8jnWgXPWul zr)YBqV{%Ds1i9epWUi2RCtus|pwQh;IUm~!hJtfBgf#&b4J|W&;iFX~fmng@hNhmx zRWui^$iW$d_H=z(+t_Bn>bH1oj0@(w!>(gH4G!Q$*_!SI$7Wp^_m24NQ^IJ9>Hx6H z{7p|R-@<@|Kxc=(aYqK2{~rWEW;#rYR$Rygb!-ltI9Mh!hOZw#{g#d zITj$|IJ6~KQqVJ0hfpsu=hTzB0)@&bE6IeG(oa<;+P6AM;MGQ3j=vns$8wiUnv7$gNC0M9#hzkwLq3ZQqxRH;VcBn2G6t%j}?-q}Zd_$*G8~ z&*)oXdBw@q=GoK5U~Bk6^e<%|J*APx3Ll9OYC04oJgOZL7LesM-*|f z^F3giP7Wmpr$5Q*8OAei`R?s@Pj71@dMaI=NjR7* zJlnhv`Q-Cl>;X~m(|nXwdzsq{&m9CEtkrWS(>(~k@Eid%Zn4V8>(E8rs~Rc9Gk|h< zXFq^Zj@iP^K!z3-6z108UD~a*DaU{c#F^!Np$}S0O)Gblm~s+ap65~SA4f+b-rDSZ zH1cjzadVdo=qXB^EhnB)T7*i*3Wlhy`H$w2X5qBTu0B1>#Pqx}MgvoTl9t6DtC`kR zGVzOF!otZ7l2<8DZSSwJ#5SC=Wv1o9!h{YxKu zyCh$`+ou)s(h1fT9xfswl}AAmaV~3Ra}$mWZfX;^L{TT{Y`E~nkxGk+V+0wX=G+|| z36CpjcLt#GQ8~T;NZJtWFyA|h`3aw!TrR79C+Dl zrL%n^zXy0x!$k*i4<9jP(t%RSeNXLjmm*5x2T^>6?c(a_ z)qTQuM}19^WwaDRAKDE z+CLc$8W`GYCj`@lo|Hygf?2G=+ptb6gD^M}RaAN-w*;kth`)BT@LdT;O1|4lm2^wc z!42ksxy0euSnu^~;7FEn-VDas^mAH+MVy1+C5XUZqt2{$Fs z%fK-nDSnOAf&&qSQBZ_^d_78z)6}X#2hkN~lccIQ3eeB2(rD@6ePe|nSbzrD_JUkY zC;H|yvO-S-M4|@EGJ=w?D=@!WWJ(^w(@$Y!9KQ)mI<`z<-D2vFt>e$gOeJPlx1N{+ zX$jw()4DmHL5e%L6eXm(3wPq9=2MtNO{igv>OAiZRjc^tR8J9*OFZD&l?|PG13apf zc}bkTecj~>zaKxpZofGD+)aQrEdq!mqaZD2wNslr`u+I5dxiTn+nK#ZoS$|!V#{sH zdhKM_pr-mp=Z8V9-S~j#vbq&@(+s?KU9TbP+BQAvmV&W=Kpf9}H?6Wg=5}_7->VWD z++SpmrLtj`1LB#qPw9>^^z{6c9njHe^hzF#!G@Q^1?1ww0^Q0jjYQjfy?JN*#gHc2?mbr>H3V?((J&{H3OW7i#O)gIcBV_8g1&ryVTU> zaeqXOzAzo3IU!40Khr+fJ?vY_BK)#NDT_z+tWuXY#R9|bT|1a*L;=KzA=-j1uaY?%_$`-u6!K#jH=#0yKy$VEhxhZM^&LW z#!$S{tOZ2q-V{(@s{BW*|>hLiA zxP}%w#2F{IR3(~Gby{U8+Y@WXvpot^#vE_0JOcwSyY9B-*n=TsxmGqnocp$=;FlB4 zRwjXkV6o1aQ#S>W+%~q~XRt#X_vt0Bcz1U*Ww?rJ3o`Iae2S`a3f1~B}TlX+B$ zZQIFRLwvBXqYSuJ#Nu%;MLl+@TVaU#3p*C4j2T$pz=RmlV~-HHOZvE~>Ts8nXT z?H1e=x>pC2#KVXCtaQ(KOpMYov~4Ut`(nTOHSeopUj`UX(+&vrIX%!EAWuc=RaDL8 zA81hn1ozaEz;w@s*tB8aLG4k7nWvFd*@M5Z!tL9nv$^L;3?&uMZs?&Uk zR0s&s!!r)J-D!YvNwr2X7^@TdzUL6r47xGJVkoz-rjNSqB)p!r+j+KabiYshq9qo> z%>86b?h9MtBs-Yr+dNP0JWD&7{X+HLnzIQrM-AyRJuW2OiM>s;Fj5p-l(x<6HYfH7 zc3ZwjMX#e1HvsoxI(?Wc#Q&?82n2SptPza0Wyu`XRqJ_H(h0 zVn#Gp<=L}F3i}CDOS!$7Oem+@Ldz5}f@$>5_?7YcfBpLX`?rXUGS6aBd}@#G@JP4g z2LLa$BL{q>ncr$#V`jNxiCJbI=vo9-+U;gnEjb3W^0woNcv~JiYO_Q9BD##G7CB)} z4lYL{R9CZ17YW04`ZX#7E0ih6n*6z!#$ygZSm&b(wToDyj%TS^Klo}%9Akt#GLeE0 zLs-8vA|+~xlpG$jb9XBfCrjK+%DZ@O>yv?m&ruurJ3!v!Cq_wZ2 zM)*{e)A`V~V#Y8Cm_1SR${-IvPgQ%y0@p?(v1j$QsdKlp*r#1DnA>2pRYAN#WfCZr6H$C06j&NbH+++$8P(6SpD{$ zHL4lg?Sl$4T8@gOn9xj~?cL=FdQPLak2Nt%d__0>C~}pPnPi+A3H`%(6^VQ6p*vf; z_iOGFhj4RK;tNZmQug3haBX`iV4YtDfVIV+ab9^lP0JFg`M2A%DPG(DJ8y3#HZ!a) z#Zhr3f>Yp3=EhRASqHUfcHU}gu$_zVI)0Q)V59&g!$c6i&lPD-wLb`P>Q(|6H^d+; z+5I35M&m#wh3BQYU(4n}lmR7OOv3O){>xm-JmC$9HLEEzRmgE*p|%sxA9itz-5Ktu z#Al|*q{hF6Y5~NRk%B1YT~o{dan_5zDT|C@WJqn!gA&WZ9WlNHU`#^_4H%!3%otxg z$pbC8T)AvlOi8I~XO3&refv-@-f8(b^-%nJ(-CccWuTdhH5uo46OTDLZz^SaQ#s z=R~$w`b^ol{gg^Fgxa8dycoSy$Ho~Fcc&0rz$=b1$nkg|%Op#Z<^hG9gXb&~7ATn?}xrLm@H#IDY? zWG*7>#!%sX4($7Si_+?CiN1 z0~C%TRmGV?(*%)ImuD~p-=bDoK}h{~a`R}Dt4AZ(yajKWr=urJ^}@R8-?iq6_kHgx zuS1!YXrG{xkrU$mHGQPVH@#8QAd4OZ%Z=es5(nx`o;H`(3N5h z%P}B;On3g@5dTxvIo`pOVh< z_n9VENoA#39FnZN=*{WY|)LiKDVDmVlGwe5P`6UDG-k7wCJv>aH z>8dF4uqP^N+cFj>!We?c>Ksg)Y~&0w3?U{8Anit7>=4I=P&GutHY2d&!E>BaJ6o=C<;m@O&Vo8s4)sP-@kv$ZdBuK*qN&1tER)>3~0LR#vF5Oa}lblVK7Ce2z!NNjvE|B z0IbQVqHRvWyT+%D-Fe2$5L+jcotb8C^U@T+Xx&VY75F1(ze@%ON3K{FQaaasjFi8m_bsyGIYfANaG6Bu9f;hL@cG6Zb2}$90wodD4-ZX;ZR*Am^B%-F& z72id5etgnAPLwN&j4VqaN7~gSgdG1Kv2b#(d=AKJiiwuBqvcG;;YWPK%`nB}+(v>( zH8N+Msu#MU;xK$Xw51j!;fH9xH62eiVouOfj+2*SLNMZK1fR#tE*2g|H zVZn&5_GinkWzV8XKsSa-pS&|ehajP=>04EjCK)kK_B*UT8SVpTho})BF;_Ixh0Rht zT-@cxGlwwbQ-FYHltIgJ+I4{kZAEaGv{@Yns3$G>57Kqg{@VK;n*S z2hTWhQH8Hrit}ipLBEB2#v^VAHHh_*4C9>x-zH&D5P3&{=xPSs^}$L)2YB62Wx$`R zG_*Oy(?#pf*o=rKo(4~hl$1jux@YKTW5N)|iVLkg^V2Piy`KRq%ZA|*lwQPsGJqUl zn%&O0-DJ1d*|yTZf4)^Ig&AqsXmF9ah2Vfuha)W>uQwk;J9FyQ(z$=O?xo%YNm~CdJWf4^_q1?{EmA3NNEvYR0JiJ@o*H=VJ$7bwWSlKEZ1oYck z47Gp@=JdB5GRux<9Wl;0S$K}C3K9??e&i`brXo7PWFbk#!N9Mp`qGGHe#Chz)njhw zGap4ac!INMX)L%{OiXdG&p&NxGG919uk|L+TL%Fc4)Uk^2)9x=i<+%+M44cZQ zz4lS=J7U!0!e{Q{dD#y^L~OS|8B&wScX{9LpS7$>bJJM?^d*+WAksJ1cYe|rZa-H|-F}QkJQc2#Sqzz2nA6`F6U>wHlp>xgskt)i zig*Ey1Q3nM&C1XNdh-6fLf7xNY z8TNJuno(4M+O(J+K?}c6RC%n&pxSSouTL?Pka1|o6Hd4|Kx3| zxqr;3Zo5%n2M94y4`V?NRdrBt=Lb>HZDkAA13avTrj?X}h&Z$MP3m08fLR4O>pb1q z95L_8dERUsVT=asXngBhME9Hfvzm*wbGsQnSdn67t-K#n7MoiGiAHHxGjtB|m85fw zKM*}&Dk{hlJpn?i_WXRmeZ`<--MsOX)g6qTCsa-2U|HVNCJv|GZqeZ z+z*Ut%2SzXMLtcYuVMu~W}m5ns`OZz~MAI z(I;kUWtKTh>#^Oji?GgJU?$r32u#C$VLtlREla!%I%{Dv08|6(q>xq&p+~ENIVgB`=wy2e8h4V5+x-l2$jfSIQ8QEwvVW-lhNib?ZDh1~kN8hzwceu@Wn>yld zN*mAQIAFVX@ii`wY59zmF88veT&on!r0XH}IfX~$wrz1qk-oy}s?Xe3GF9DQsZG5g z<9c|2jVkaS@Y7uuo{94MSf%ZA8G;B8>urJo$t=vwC|jvw<^2bc(E+XmhZZ~<;kOGV+N6v1n% zKBHg!NWWGk=&cVJRrufRx&Ft$j!6n%{=!jG6D%!afD-~1zJ%q$9I9kWcsZ(zPDXFgANyRx%vB_-#QYsJ6g<5yQC<{&r+n8 zE93z!-}Uli5atm^D#FEg4nsm6=V&YC>EfyWJ^x#HtR%(cre=J7s_#z)+7Q;wK`yu* zK(RnbWQd_=bET7+1)QaZM7u+c`32qrug}mn;W?6<6(vMgcvf#Xl00H2+XDpFD12d} zyMw?0SU{)0h&g^0VWgUUV$lUt6X<`+QK<<<)w$^Y^c}kZ%f<8#d@)yh(*F@!zSkV* zr=FK$tue$xr8nGYQ(r80ZT@t^e8FJlYNzfW6>I-vYK(>)!%KRe)-1)W2Aw&ZFm zqz!ykx8hhg_hiRcm7URYW=>N>+H|{X%>2#2e*IFx)EY9RFy3vbBri_Vu67S?itWN?Me=g_La44P3hh(? ze^ZgczJNt)Z@G=s5HB+d8vYfT3Y$^>IK?jXet$@XDN2O+Bk3mRD+XhD%~a9|^?HyA z{lD*hTQdEZ9Wd&je8v@FI9x1tRI8Bycn1m+=G=&|(gh#g*D-qeYK7(?AmGGE>BWAq zfWcv?8t&(DULHG?s<;Xun7u?v=a!WWpSo<&nek}T_V%q=Q{{1%*W~Vlg4F1o+dSDk z2x52w33=w3q>YswLLK4tXAK#558ja6GNGvG@75kNtfA#B%NZKHU=8 z^>(SN|9LEKo)lT5BJ1D=q&$(>BC@e*5yz5KsE~f@yBo}f+80W@J=PNXLO`LexARC6 z2Q)49$I0jZ!ii;f%gTmIisK_aTEzg$gGsM3QoSij@+W+4w>$npl(ia=gCH>vszLh? zd=#q0g88eHK|fPJp4o42X29oB&?f`LK7e+dLKgdmgBn%FBLkrID#gSK4sHq zEZVLn!F1(Mq~ed`E|b)pcd>`drA}qfDb19@ISXnPCM|H-`hwD(5q`q^=>tVce{=767)w3ZO2;=rhJX zsNrb_cAC>V0UXJyw)eh$sa~y;2_7`+0(86dI>&{OlOB;rvC%})vR@xcEHH1)s!irq zMyfwO-t&Iubeze(R?24Hh89K7{*TqZ)dQ9DA_N+&VtE{>9oyoMWWWkVfABsC*3}g6 zr#7mZo&diGIw`1E0l~!c&?8_PCS15UmtXAO+HY;F##1(i#$?q13)+-?c48sWPG+ok z+2+3O7+bd%jcc3DJla3~Qso%@1*)P-n7r;?%M$0ralhN`>1I@XD2$iwZWzUDyV9hJ zKv^l4Ce2s+Ez^}WC^29B+uh9wj^we)_)zz`#*eUO#8}CpbZzdT@QD~6lb_9oM4;rA|pD4 zTqcxs8K3ynaXyuK_*7tYupe52t)#}lx^c*jAny@cp_R| z%#?SbKyQW8c|K@$CDNx=3{3jYoCug*ruQp}6b2x$i;w zmiaeCZekjjuPR%YGyuJ1RwoWf9_!!S*0RhsPfBvSt|FRAP^?J_#n^G+c`_zqia3_B z0~)YRp}J=S8;gHk=@W3BO$4yi5KecZu`2u?O2Sp5zow%vo8=S>ypyH5Q3+R6psJ+C ze8pVfJG1y*W!4c94DL;-w`8^sZ}LD66v==2FQ;_H1uyK77BO9SsgFmnMygY<^-7SZ zveGt0pFr>+R0O~@NPM&XC4Rq23Q<=R`+Od5@>>vzbHW2 zfgLyq$dnUd!L*TGDp{|)bnf!ttIR!bPiNPKm?E4E2QofdpJuV`v}I~GdkfWw7ff^> zQO(?#a(%LrpN(>gb{E(vNO9pb86CWJmYA%f#@-pReN$bLcV3HbZiywL zn$fZblS{#vm%u-z6qd-c7B@Lg!ek0NM~I6@?r7>M8Y}`>Fr}&M(h4G0t+2kb9o@Ey z{^8eU%f%z;Y@XaK9TZ_njlG|Yg>N3b3wbrH!Tlb1ZdMcq|2rG#mO%8)-seGipW^_S zX$kX%g`ep;KQc9on-W8biZ=>(U4e~*0y{FiGnx8lM~z3T%_6~B42|f!*%G}xAB^_O z9>mkgJ3qMXLxn%`>+1_Oe>7z6GSWkw`X zENwrVtm`t_wRG;(FtV&C$Rq@6L>~Qhu3C8!R!`-Nt-|JccFKmS>Of6ZUpX-IE-KdM7l9bcgnvC0rbxqbP0Y{7z!Z1|}NDg;VW zs!bQa_*JG%cY30fm`w#Y6Pk5PR8bDnMgl0_JaznOw)yJ;h5(UAF24`x@OIamGwc)) zWFy*hj#`e-~B@=9IneAl*3JB}Um z)u&n3L1*xa6Z_-ose10*H8`_G_z~DTRYgQi+rxbPY0#FETx5{lC2@u0{lHS~VqSD1 zsx(_2RGrcNlYWLd^K}DiGto!`CydXZ?{d0Bg{QIl@%#Z+^tL;oO%G8 zF`8?(a_A57(}^9na)mRS+k&#)v!O*h?&C#j+Tim zvRScVnw^v{@?I2(vLkb|y=*On%qFPf^Pga7>K>$nv7+wCytyJOcl>(A(WB6(mw>NV zj|VnCWTQ+oW~#7qt)FX2`BkCsX=DE5-CzDh?m)5h$eUY>$pdi46$KK9AgC?#c0wDH z*Nyu%$I?~Df#6jXbi2nu>7am$rXjDW5)WJX1~p|jf>|67?sviho98T2RnoDJYRE|1 zbg5QIn=+&&Z;2=yzr^c|8Q?_GOzOdhqujT5kyY+XiP>KM1apY+9*Wlc7WZxrSTNbC z^<3Q5-pj~SCq^kctO1Er36i2*U7GxG2itjvEL1ZlqXzeAWwBSD8*!n0V~!E1&2O%qL&QxsMLItA^9W&(bGqdI;0x@GmV7QXLk{RyD(?+ z?1ZDPB`R-;5ZyxFb zpv^)X!kh-;T}45+Q-b-kLT7A`Pjp>Rj#y6hdj4EYLgT)US-ZQUei)$!iBLN}w=bse zL{5U0Arl?w&0ka}YqLo%jewuaSi?)l1S4sNWm1GlmI8~sdXHUKl%x{4(H51mX@hZ1d-_#O#B`0n1>_+{j>~fW{|?$wyVx&%l{8y1XCHfLmx`+Y@;? zc9AF(Od4WdP?VOEn;?T2`hbBMREc=(9`>5K`=JVa)r`E50rz7^XFWuB$#d{Hma3W_ zL`8_vq1(n;zCw)l`B@Vgl%@U?d$LT;Tjo226Pb^;tiA9Ah!d)p^!mm?LAVKM;w{)c zDbEwY1(%R=$*{9f)EIc7NRlv?2Nu%0<#RWcA!h1B4|}wEkIfEJS_~3ui(c>Ndl?V( z{r!zovE5VDA!tlSb$W*hR={_6poQG&#g+P@ENL{upKmrv2&dI7fR4fX~L%bKn3BdgU3nl zYMNn(V+w#fc>rlDV@;$5xw$U8LQWP7pp6jz?_|Jg8jX>Xd)7$d3-jFZ?0~8%s?3$u z$5|P(UB=PTMn}&ypg&u{p2#vy0+I1aM1K$?8+ZpsfpwpJKjI(n6RGx@dZ?1&md5Tu zFj5XRy27*O-8RAbfJ~^DrOde(gv`|CgnzROjzyS*@zcEh?pNJx;Di!_=kP*k2>)Yj<(vsd;_D;Pw5A6^*9EDH^eP5i=O! zb1T^h5OxQ@s%Aq9_@u`YRT;Mbzuj+$@WC~1HMbcNo_J2xA?hTt;sp*v>cz*RXT_Cb=jse&!@ z3CKfKZ9E>gg^goku>b957Rk z8`7=^HzBuU&eRe*8L)jmQqn#kM1efYETtOdsyQ=m_ZZJl;=aIH*uwXowitMOC%~{F z8l^DmmkZWpvs$7TlvQjK)AIHm;G0Gk2CD5N*SlYvvjNGs1^qz$yfl70ncePH!@lf> zWdNknr%3@;f_%4e;V2~7EPWc`;fCP$*4u8lRY>7;yjsKWllzoq+w+N7&3cnU3t zvl>WkBjf7yg=(|yC(H2x*?GsxaE>lOVvF)_iM6-Mo-wCSe^kucj1-oqG%;?#sK9o* z1UpT6kfi&5W41n8B75+BWwmA8^zrzP54V7p{?K^BEQ)g9j~{P*%KcWvfaqW52QcXG z8c$J4=|5~nW?3J+fp!M=6ji0vFtp=RqiOo0HKem!4hR&s~BpmNRv;nIkapbnI#30}u zM)IYbz~+8*Wi_qY5MQM*JZz!qUtlFL!pD(DuW(XKFVSe%^G z7z&}9W~G9)x75nWy!mXlzP~#ut_%(bMuvEJ*6oIV9$P+_*F<^*p;~uadZKNq96J-m z-cq5%kx6AcNwJ)rZu6FgZOeF@?-Cs%JW74x%@{6{X6%yZbVkCU)QkWnF4_7JkXL-N zc2-4#?qIYE9CMF+Sw*H^fgICX%{=*5O(NI<$Zm3p!TlJV#w~zP9Nxj~a=Yp@6Su&Wg0_{Uq!fAhf#B|mI zpg@i&1snGFiuo0nq*PD1`KLaVqbP*4;`PC8py;7&D0vm+r(94_kVzK<$E9Feqo zthUJnUbDA6^<#RmG+u5$3mDVdSLtAxeK9;lytf*p2yW-a9r?6OyQR6NE~);sDdwXdzdR%is_Tj z=L?i|t#v*gtU6{2ll#JW8}Bsb*GDaeQDscA|0}RnEA|YmJ{0R9;yDTk6jT#$g7ZhS)&^HWswSeTDE;Um4l4>cjFR|rEBX@W!_(#+ zKauT1p)SL9mjef&YBt_96)CHWOqK(h$TVdi{(*K$30srHFqzxK=P``|*AMQ<_+k)Z z!){A|gRMpePI|JaAh&H!8V!eV%pRi$O}o|!utuU&K6FQQ!?O7kcY$r*p0)GY0ZU+l z0uipBbFXa?6;Dk|EvagcJ0QY!1SnoWd!B*s{s~%!_UL8{?koW7>h_u1G>*-@|=CevyR@u$j-NzX#`{U-+2}LJAH( z4zLS)2E9p^tgYZCO6DA8OSDJ|%)-kclTt!EZ-UD4wj=GxwwT8(fr_Sz4^i32Pk46E z*m*?}+GZC|OM}-k;KKc}7ju@xROZ4yhZ9zh(Rk!xiek+WdnM*8!~vUn_~cE1)yw|X zTM^wj+e=5ns}izo*-OaMo(Fv2rNQxIib0>_I~^-U!?F6XtfmIyBLHVK^$V-P6p4Bx zhJGUl?ly3@%<3LtO5wvO5=^6iF)DLO^u)Ufsn52i%g*am5S|`=cZ7U*;tB?ftS_Tt8 z*{_et@~}kFvpCK$wV}Y9U!7u7+0}9jPboHyD;2$zo`O-J8laL>lQw~yr`-peov;kG z2b3|yRt4*L9_+cdOLNjPQM-NCZ1?nR|3zP}kc57eesBcGh2*e~7eAUD`_vPkbGi67qeD{)gBG^H+f}8x%>86)HXj}r0kg^ZNb^$( z@uxm?)Zz2NE2c2TaFn)ehhX8-$m~*b5xjY;ES3i=OYipN`|}Yx<5Wgy=Q8PjidT{y z9)qNC$mP~VG$z|hH^j-e?nhCea6JayN6wqykuU7-kn_aU-D-q9+%D1gC<8v2b7j!R z&J&cPH&g;N{-X%Ts;aeVD7_Sxjpu(WBl z4Ty50Wp`~~(&Lb1>5>iQK!I!HjG8{fg?_xR+SL<@lL%$qG_p&V*W zDYn>tf}NcUgL}vl)RAK};LfRS(gbj*MBx7>{bbyW)}Ld5D!kSw9Iz|lWxx7u6F4Cl zwsZ$Bs*TDX%TH9n6g3aC=Ox_MVjG9cKUpC-qlemsNT_L1XKX9)c(Qn_Xt$9bVf-=W z!S*;H;0se7UmhallCMI^U8*y8%c0%BKb_Z9nl`YrJXpndcd`u5)jUo*xyH-O!uB*1 z^3VemmOCy-9qj5i`xXnCCD%I5P}Ds+xeRdF+vv zb!Vpj@OEqIv%AD{#o)VmagT*$ShtUujrkhy^I$ohD>aX>kKdfBW^v7t{vLL0TFCe( zlV*~w@@Q8J9%HJ&1mfd`=7E8mR5-n+b@hd)j8i>$1x0ZMbgQYS6h5UCYp#%|f2z+{ z0ZMD}U={c?3Eb7|`T6-#uV>~2E(}(vrE}6%-19h@r7>f0#Xn_Tw{vsg7#2{c}YnVOO*E2UJ!EDv?A!AL_y=U$Uxrq@waIb23sfkyxZ;AgaEw9 zSYcjnqS1&c)v}=R&otejW%2Vnk~Pl1GBo4ylcl+B+8D|fqlaf^VV^L_t|UUq6;`?P zlus7`y4PFBlhAK^UXvkC^SK|PR3%o5jwU}U{h1vyO!P8N@?yc%nM@6hTsc&~zQ>8^ z@5`Gn)Hl)Pp_k2dMb#U|yo&()*$PY67zqNmnMal=uW)24Df8 z@-XVe7djprg-PX-*Hq766SjQ&reBwoj!D1RcjtFgjVRNb#5wHckxE&sOAN%!w``bX zRM6r!BVgk%oFLJv4osMOOJ`c;6u8%sSyvg>AhL}#%5y!_Al?Y4ll0v2J3L#vMCo7e(hlQxcjpqDAzgB3{2ej~Gx#zGSx z-Lx%?NCU0Qdesnb7M($_^3L%#<*M=ypRCY8#Ziw(A}ib?h}4zz*4^$Ap=0;qB42HW zq~R7e%kDx66l9P(hMU%l%3st-5{N~i$EqyD&eIpqh)J5|w@G573060c2Bjc6EfeEhc(-X<@f_mtEi)4;7=X;0JblrO!zKlxzq?_j+c3)1iFcpP7R?=f5)b zyzLM>M>7-$ft;+1Cq?1j#Eq0ZCxwO!-ZVraakI^s^ip`1wm-!EByRkun7vJgcG|Eq zYsG}6D#RAOtE#Lj(<5$ve`@n8pyspf>VxD7bx6)y@^~>d^FCO*A7%Ed>GyyuA;q2$ z@~7$<3Rp1B6T=I5i!!&LN}=#dDsZ_!`ZSOAn4kXE)8VCK9{-l=Qn5kp)hXjUBG%){ zF{R0f*ne-Po&&PsH7I@x!^Y$Lr?oRYsK!NR0TwYa9O$4GUnAcm9zC>jxt!aEq)MuJ zm&mO#2j>UX)H*0dOQaukIr~0W3&JtkQ=7&@@2GhgQj|#J-NH(ky|XV z_yzrZjKrj037HEEp4%FwKF!<_Vljb$rJ_VmRT6;0A(;w^sH?E8t+sT`)hYNO;LDkQ z26M_xU#x+1c}+$_#gVWiGxRe1kzg3Lwr!iar!Kzl+6(9UwYb=NSmK|IN=Q219?|mY zWk1gr$-Pf7_^Y;JOIw&E%d%()t}BMEg9V!W)qUbGI_zPn(Mrp;z$jH}8})iy^bMwO z#m~Ws#_hBd_GU@gSg@(VZVFDw(nE6a(FZ+gn80+VK0>~aD4dm)%$VB_1GuJ4QNoxo zH+wG0kXe(uf*dg@d?+ZT3I}=gMa^*>-11Ou$xwQeF}Fs6TT?ewTv}kvf9@s}6RIqg zOc%LKW1sEG{T>OexM44BV*6ZE6MtZ5vIC}jZ(1Zy@AKSWwUS@;!O7O!wpAgMBYyR$ z-<)7=a!-K7FS5Fq{K! z95WAbqFaH=2U9p%-ht90zW{Der%OI(#?hsKG1h=wma0Xtbe>$k-C6BODYeZ+&2x6e@xdMylh;oGP`RtARoe(lTsCuyeQC zHHzsPt`Y4+&Ys)r$L+Ve#RvC0d|rtMDzB$;ta*w&8z6ArB-r*cBk**8GK&Cqf*~T+ z!Yg3gp>wqjxXyIdnBeUz%-e9Dy{6XEi>BDV6ek9>GvkE6+z24_AW$KACkk zg`sQW(Mf%m_|T*6NDxH{_HC@4r|s^7{NajaixuFO&DC@IK@`R)oK>{LW;_RsxqNlt z6+aA_GnRfsdk&QktC~%MQ_YSc(yit*$ZRk>-Xg9`f1Mx857rOAB@ZaJBfZ&jfqh;m z`0wRAdJaLK5KC2hz!_r^v#;1MPNOlt1ozRgd1pgL7`Yv1F6Rpxf2bB1(xg%-8&!X9 z3!x+P;14PmrQ0jPv=}!bKgo(rE=i}wB9l+|D;9Cv?z1(E@W%(+>h2}1hF>{q5yQJh z^U`r|3y|Aec46dzTMGai#Y@(^LwB66#H;S_vM${XKfBp9RO*swsX>M(C+HPgsy=5m zWO+eWzlT9UjT}Z@`~462z@5pJ4XoiVRKm%JDrc(^K$Yo^Oo@7&2*4FQX+@l*Zp*7`gh0LAah0}?)DUbMor^`&C0ZoP^Lc2s)Z z%FR~RV0zx;?=?OgS6LzXCD|S)ZQ|^e<{*>}D!C-cdeWoSq`w@|78AN6(N~wPLSf`iOr?izS5Bs#mO0@Ki3EKwPB_!%cIVe& zztpuse$m*Qp$YHTxSd}(m8kKc513Y_Gn9Xf`W6_Mo(Kq(G?J;DU5Ip-HW7`*zeJRs z>k=#GtCY4xL}y!cdAWS8OT<3^Uxd=d*v`r~53Si=nPR$s=azPDJJ`x9)_Da3l$JP=Y@01V2UnbUg%D zK~R2FNHIIPwi)(L2CPKR6>lOs7u#RtkN}T^P<^0Y?#$U}`0(*MysbYISY)xQ!};Kb z={~dr4Ji^L6UyC%`z0HjaOtsc?DV zm_AW=yO^vWKmm2-fN-0dW=n*{#Lc%BuWJUo)JPY4z*MV1oFV5rk;YHTD#YSWWqQlQEP8R=5v(%SW7a^lZf;6NqlL>Y(*EEnQUwDU zS!6|VXHJZhwiSO_;+7dd(5xY>Mq)_m82a;R@l{CFU+X=2^%p_f;&zX+w+3UR6+AssL%ZlCU#JY_g zeCP_MLc$W`h1_0MP%m~WJX{{%=h2}T?iP)5pkV!RRChqF#eu#II7t!=9qzOTO#41C z)*Li&pdd<%$fp4bR#B#k-db||7drh1JzBJ!VyV;Zz@Ivku`Q5?H+i?q*jjQ`xrAG7 zE0?VWKxHCss;PS1w4KhbgMz%NecP?}e`HwyypNF0h62nbD*>WYUP%xNaax=y@tK4= zKX{*hw#JbZ27>1lP10B=gL`T8*+#*QI8m@JU-k>@Q;Zi9;3^dj7BwGJ6AMThhjI|tR6|p& z2-WEEz`&7%=v)aAb!10wI|iL4MddmXkhb+nRg~s&PYB4M>(({F$Y8`ovTixH3bWoL zlLMGVY6e-=+;8cEOY}z$>yduC4k`yP1`Vgrq&*1o*gm$cbXg59zjxn#-_-_AiH zf{SEM;Z#gbDTRHAkAQCm7cW9R8OrCxl(jFVtJe)jQ2tfy8Lo`gB@lGZ(Cp+yFWgJ> z*H}T{rsrW83@jI{2JqN(@ZfmTw7Q*|U%!5#K%E#7 zQWs<37^cLh-6~MEMGN`y+zn2TjSeFhI07~GxQOgjCfI}bMK?tW6bkz>j|(4T{a*`n zT3)KZkneVZ;@s?1V7Kvh`Ln?w*Wx%$VOz!kpV7|2Ygk{_G;@K9ph~fQRixt0bprb; zhzZ#VOP(*QnBBd0SXl;oOT}JJjeT) zFmz_r6%UCQGPBfbT?@lhFsd|~s}qU#ID+?V*0UA7gf{^o8hJ6Ob5!vG8)A8+SH@;X z$+~jYscmu&M!a2ko(B)4)a~1|DkFX0idBcF3yfVNz&Fm<&WWBTiM$xU40=ejy>um4 z@2Jattx)yM#CtHG#+Vw0n6`C(_7FSi9i`oEl?phfr~e)RIe8zSt{`dfRapz$S7i+3uynWV$Fe)99|2E7=`n zzCmXqJ@pCgZ5|oT(-Q@hDUkAbU$PF=2=|oIwJ6$D91WSf-uC(}nanQlLlhGWT16hLNB{DDcuhw@fnMB?_seVX2W z-n#weMsN2lu_OqVh|6Vtt2F2Ve~N)*M5D^SO`)QA6RUm9ND9?-RL%yXtt__MBC6DZ z5wk1B$x=m_6|M0ll;+D0_)~2vULuy`z1*v=*SUo>105|`HdNRc3xh0NIwKrOUtPCL z>%$x@ENv7$XiCMUEL?F(HcQ8-Mqs4DN`Va0)Ut^!kQn73CE28~GU`dS9ajD+P(^2m zYZSXab7t`>DJ2q9GcYr!l@iz(0c%vmEWec{F3P(BuOpQbH_hE;=?Yo?sX}8o+c|0< z5Dx@pWeCkP9P#)_Z2-p-4dc$oP43wTRaXUveeyb$r{q9Esq18LoOKfJ zS!o-FoE-SHuhKxtnjII>)v5Xi1FgCA+AVG?BM7R2ViY`-Oj5QXbV6hGnDyFT8U^To znkw)8h_hVhoR|(-(m>pN)?XGIZqop60tZP~(j`&SL`FQhdAf}%2Um|t7lS6aQwOV^ zl98k*8_RJ^`9e1lja!v&N{@D)(%|xvLXFK*xg0t~T#2M90Xa!u-W!|0Q^>K^&4l6s z;#f)HiL+&9Iq?a5k=%}A;lcI04D_bn7HTUZS5jClWTIfjVgIVoYG~>!!lv#4X?=lk zJ1|Ge@>rc+^J9`cIWD6FE87PxsuIKT#|O4|sN42|B^v7y8xc8S4=B>n;Asq|W?pZ3&K+8i*2D`2$&_*o^ z&K{*ZC5YK>X{jqHGG|#szL9>y6Y36@1V{CT&#+Ci(>sIUx|>H~S`RH`)wnrnP8DUh zDb!lBysCiQ!YvgR>HQkyRcwK+y_muzXY!evqVb($-kloYyPo6RK;f?$@zPZv9K$zV zB4c7gJkj|U&x5cgwG3xm8v$HP;H)Z54BUANlm{P!J_eoOEVR_)jyT)YJw~1kvh&mm zFv1;`l`@MYs%oR6Dlo`^=WB+Kv^&mi_F(g}$M}8mE1c*~ygX&3pQJ%d9l$}ZQgh3H z30@7D@?qd!#t7-trF_||DSi<;m;A>FRgbH!8U+E%wG*`tddXu`;xB z#4|R2mEq4qw42Jww|SR{*`o8PQ6oMqp^qiJW>LQvGXASjCPfjiiVfWF2Y^utQv&iS zuDV6v@XMG0Ss5$*lyQjNvMm#Fv!ku(v?ieojHJr3ex!!HM-7fhAuVSz#{_vuIxHYc zW6>uC#j3b|%S5jUDI2@)1rr}%dfPRq{*?FC=&f2PjuMor+Y5eI2Hs|3ehDMv9d;Cm zwbdR|rFfqN()RlEfbw%6H}`t>L<&Z$+&eM%3nD6S(K5VXlK^tM4(q$)=cAI5Ku={U z0m(DXC{=8PEWtFmC)q1pc}9d7sQ3K-bm{-GtHuPHb3*qM(~f!KQZqYaB?)yf>w@VTWoXj8_#G0n>h-3V zVqD(_e`MRJDbJPzeEgfoKdj0XhSYgYQ8ZG$A%I%9=OrpbSs$|=A^p_xIp9)mZ=d58 zxdx!4(JtMIGZO`)RM$|3$!W(tqw@`6i4j*9B9DWH2=95ZX>xg3Oq7u%Em3*)2>DB;K+v+@Hp`7GL>Bafn;e35T_(dI z6ydgwA%8=*Joea>qP2bXMr^KqM)Dewy_EE6O?}EAvo0<~jm{}9O*&szK%^BBPHp%{ zL>wbM+La^3;8m~Jn4r>7Q@9>m%nnea{IZa!Z8tlx<;vXYm!U%`R6dr(v=>qG{_&m0 zQvEJ}>m_|DwBBi6HzGrG_UQWgZhM$fO1<9-wTmzB>6PQ0s50>!s8v_fkpB)`AETWi84XjSTzlG6c{^%8T= zsP({)dwU>@7tWByi&KdSMHIH4glReopE2zYpG$6@ob6`j*$C!a+af0mFm0G-de%V}r2 z$q4Ad=)E+rf+F@+k2Bf8NUmg7)_LUgcTFUM!flyju`Ldcl8J`cs)QU{`?og(ZSot8^XWKC6TKDXxH^r1* z`z={?SU?$`ai2@X!TQ&mgN&$go*2XI$uG4 z1oxt1l2Y(|p*bRUY?}AhuMZfIf2ZSB?b><{l6y1TS1dQVeHN0};-KIdKA}TrYTboW z1I$o1&Gy%V#g1Cc!@}rL)wpP^gxm|XXx4I{59C42?Z>P!%bJp{#d9}7-f$O0i=lBY zYezY!E%uE2=T>x2(`{W0AV#2`kAU)2|CMiCVQogdfGQnP;4((-D*I)|lYUnNKGRd$ zfD{3({o&J-h?ftK@6zH~(Fsm* z;hkrBIwz*Lo{YotHJ6zoj2p8nD^~3(HV$)AX|XYqnZy~)vQpA077Ry^*NJJr_P&7S zt!bn^{8%1&Genm&mB=Hmi90Ngw&}}$^yP6|tTXB`#kYMXOBg$_Yj2{~3dFh6 zZ&TWBs4q#Smz9gAgzI58)ZDattg2CT+~&WkxBBsUT$Qi1nD91bVWK7JFRDxnz#r4V zO2t&2zu%`mSY`Pww|3iHSN#asdId242rwd;%dk?@3=_g|DXL`Yk|_Kw;*YC~35azz zk`yTONJ!iAY~`mIqQyOCwI946(g}3|%!!D@LcewKD~EUS*cKK-tdBcXZMtL+QHt1! zqhr~2pGx4{9GOrigoy4Dm~&&*y>|_ATi9zm7p9j@wIk8xckQKRsZglasL^oS7?xR; z#qiHxzkYQ)TamM=r^EnKcxl20fZ>8e`pZk4BXKulcz~gdS1jdFg(h#}HBPFfH%}d} zxu@A;$1Cd(OSl77jnRRTfK-hheH>_3M{WK%nLzX%?ZUdps-Ue`8ycsJGh3U{r==G6!bwDSs`xN!{_rEXt#0OsIz3roIJ@fu3CSFyjSFA%){bO29z@S=IhlA*0 zqzC*o1BTbZtd0V&buE`6>Lo6-i?>jMU8C|tmFf1H*&$q)B1@WSlKX=78ntLUrDjKT zJ+af7Kn^}D7^X*r)ch`jmh$J8MK_*s30awx9kA(@VW0R zw8q@Mj5!dkV5pIQ&soofg1LQ6=Qc{GUKk&!BH+%!U62UrQy zOczwGUpKYlOCRhNsgH}u5gX1l60TO2Prj1V-%$|vqG7t;uIR!eIZsmFSB^0{f`T%Q z3hAZkWy&~&G`TTX7L2C#c%R~XdM|Q+x@bJsf`W~T-&s1XwF_*9*n8pnTL%p0I7OZF zLIw;dI6?&GZfpgVMoCHAm^1?#*E2x2_rKavSFAY`s4?L)@8`BLf8GIe4PfL#xar%! zeS(@}EJp=oXR35+Vg>gF)OR|4d-Gdqh4JL8IafL>{`-j~)OyBlF96_X54l0T}nsU&oHt(N71{u;Y&b0}&58n`5!FirEw^Fw!bw=9DG8Y`|tcGxoEk<M^&iXfu}0RylE3eW<-i zbA_ai70s@epgR`^%Jm|3ny=FY#jJTeRdR5=ga|Wwk!^3!F2SBnm$k87-mbWr3{YVM zs1P=C;ZHXBp?8wt4o_}AZ58Z8jR=bx<&}VYryaF9cZLI*rP}aF^ zJRFe5<*Eo#hqS6#I+K{3Vk>1PVWnp>A|ih6i&5`8+4_Hm{yFYQOinYMde;{G9iD21 zR>(uWlj|xy<3S5(PIP9rulv_cc7tMWt4&Y9fp}-A?wmt?tC+zKn7h2p0@y-`L88RW zT+B|Rg6?*5x_k5#mD0-&_$m9_)4s__9lTSuHlJa5JubQ`Qt@_Fec!RccSn2MfaVy* zZAh@;U_eb* z8yI|WfjtEn^X^rIkt&X1^deJ{D9;y*4axtCk7bWgF|-&h|LO=Hd(!D}l?5LmT-j~i zaaNE4-ekIZZt_rEBZZ6nQ*RIUI=nbP35d&v6fVqe zny1+aNTElO$_zN%`br>(hJ8BNgFU(hC=73jcabK09^3yGpXch*b1 z>Uw5+QuCP}xnlp2U_6Z#RpoII*8v;^k^uzl+b@3Ie+h$!lw_s;j6SiK+1?b2MU|`j zO^CFz)SX{h!}XvCbE$5zyNA$+U2sW_ML?C{YkndHEm+wO-V`!HnA(Bc-{mLUKX214 z0y}XJeE)2lK{$YH8j}=!Vv^a82hV#Q65-%n?ro3!Zc(`5i{HJbhDO-^^|}>XYBZc@ z+e+Z?pr#G2`E}q3FNr#+TV<1N#JE)fT9MjquI$+f+UX=&q~V~X-~MwcMEzkgH^aah7)#`Qd1$rhLA3J=_d#nWsz% z9^_%j`3==>u-WU`GZlLDfID;5z{XdbGZY65>Q__K3U&ik(IH{zb}2rG5XytV$VzbJp-|lXuf5tOg?zx|0$It=Uhll6`wU zyQSdv)QmFh{RQOqRIdL=VTs4j>wudYf$}4L30H~Q7+uS$q#aCyp^+MrkWN}ECsGWhOOfCE;IG*nuw@ZBU;8Gig#WyMr2 z5J{c20?GO7f3nk?fGnp8wrzq!%1|Y3Fk3C#<$;0je!pdbU@7%ctiS`o49@z1a2o=tnLfUnACzrs=1)Qmd$t?*8iv5xA-K;cB_%h_G0S=^+n?9xFjdF(C zl<38hU=TymTe7VX;nB^G0@#m}68|zaB(-vuLsPC0zhFW)R1H^90#CMW$d#v*rRT31 ztDH25svd2(`tPhol#v1b=}8};G!grclz*N^_Xm|%m1!Z{R_o4>5HY4Q#7xoheoTbQ zHs82xskT3q^`KHQR*KSpxkbJ2Y`b5%A^B26Bcyx!oa$80{tZ8GW+ z>V(W##f&eT1O!j)cezM7%Ib7rI!0w9=9LN|TiCW*#XguT^Pi%MyXt@s2v54`eU3I( z5=Lva5V#J()=x9pjKyDv!2VJy{46rqjk>XbMsHl2pJy~v`WoZj+md-*Jw_c5sOm2goFwEfc68OQuuh-<`Do&`Pd?Ajrh@u^^iMBtrOXF`?)zJOrku`oSEtvQ))7FJ1leV5&a!{+eK0 zdN@5ZcG3PE>^E+>FprHK{}~Bcdw#lI0cMjy&~cycG9G#m@}M2tox|g<0Bg2i4KC1W z1{90)AA4@O`Z;t$ws(SEm>!B_S{tkMfa8K2647k`X8cCel@<}Nx> zyh(sS9tAYq3lzVS(9T{}1npsA_n^hD_)xRaTUH(cZOf4D{X)tK;MvxEz1##IB2+Dt!S2)akMw=Jp?BL3**`b+7(|o;&u9DlBHfMD$lUwc zVH^R`e6a21!HNPCH2`d4%#XtC-fZfWhyAy#M1qdC>D7{~JxUfK@*JWb)0)=M^F$q6 zMw|hb7>l4y@=w*oMQ=}A;}SzrDRcQ})m{58J!g$@_Dplly)mAh;I1&BSjQ>*fx+d{ zB4-tf)mBlmqitboAnRZLI;rD}&dzs|Z*!rFEU|#9PAjlgZp1ttyErxcf~`Zn*ix z3k_d_0)bp_rA<_MrGSsk>&ekybZma+7N3{Gl7c zre`985R3v?IirF#dx64ogi;;J|1-6~0sXj$U>OTh;3uS~0Y^Fuk3J^Wj8eH2`76#t_k=s`HyNid{B% z9B;L;U}=38WjAviW3jna7t5HdYCM-1A|Ye^5{Y;25dtEUvYRDOXS&poV`-A+JR1Z3 zm{KCKEyrf|!o%J+%Q3Ak`gJ39=FN5_&W4z%d`(~TzX95)t*+qFJXR(b8f%oesLtUdX;>C~UTgfMYD}W)XPg_LHo56*8(>xso zuI>&a@iZq>JN1Ym|1%jdGB7zuk^)BGbNj+E7epr;4Q@RuEHpAp_!Z#Vn6tw8@R5s` zxF2#OJMp2p+-v7ny`1{rzkh%Ix?KXY9B(iMCW7s11$-XM18dc;HeL^$!Imcg1ll%P zxr;YC4&sdSei#gtuB(SVzD6TVM;}eb=mTb*@cLNrJjnQ-sFw8RMxDquQJ=OY0I-#Z$Ww$8$erNwQigKwxy+O z+`iMVTa+#Ki-}T|fRdIaL}(fni`l$ilYn;EvaroOWht>v-=zh8?AFaanO82MYltO|Eglux)h)1G zCu{bYOajNv$@~wEk0089F{?{bpPc&L+MUQfyG(rMTFQ2F?OHc z9`wK}el)T{%TG2^abdTcPq?0Gh8s>D%G|I>?%_v~)K8_IA%h!}bOQFl#{pV+N=$2k zxB%nKzxk{bg$L$h( zbKa*v);|2S8WFSM=K6N+OU^EWPi79~o)Rq~yKu4ix}A*aR)ZdJS_^|!*i6A@7gE1+ z+mr!UsW07;tMrLkPv@VAWR9_bA zvkDyl0J4ZVGd24R^sI`@82NTpkWxv0wqmIKDU2|J=TpQ(my(N?ycF@i#M+ALf%7m4 zoYnZL;*Q7Qa>43WbRSZ~=sMu_5VpnFQ;HCa;$LOf?r!P~9DoGT!ZX@(jKke3Vj#qP z>N%Rij?#S)VAWQ22&^`zT($`@l{m~^5iKhZFvN&fu-j8q^T)}4^}D=G+0%wZti6L# zPSxH%(3JWMJ!5WEGv|zKW}eFg(^GfKi!W1t1OSR+BYB6JPPMC{iP9bScn$MG>}f@6 zmxybg2MT0|t4F!|?l!}utb(~X7toKF+f>kHeqLOGZx5zIMM#%WNI?Ath&tUz{h;#0Ao&DE$K^9lQnkvBmkFem|r`6$PG? zHC*cXB8fEDB#Lv3&92n)vY|vXTL!(X48X>IeLVK}Pmzv2jy_}$#0F-_G9VLi2X-p1 zA|{bq+rl8Ku@BO&^FdmK(tGZ<(kceHgda9(jG@qqB|#Dzc4BL_)2FT3b!}PawxA}{ z2jwZ-_^&Ao-EUd-_F{LR>nqL+l=X3Kqh>LU<~TWCl(;1RNuts6iK~qF&S7ftO}kC> z>(1blYI<`jKIGm?;am25b$VuN6|Jq9+Ej^|Voxmmq!MA2Qi@Gi*HssZXw?GpT4_|D z1>{j+BnvL=bTW^>O6Ql25dxqxx9#EFAty1YYWfnaOvP-aOR}2tT=gK7%M=ms6cD-D z-r~lNZS`fl-*`KdD|pGcT95RbqX1R$b%1vx#PLJ2*#Oi6vp{PKJ5@QB}{dwX%G7Euja^i zU}nfHeloj}6Lg=KLNwnp=BrQ!NWUdY3@?Iy@b!#)A~7_fv^gGfj9PX=;b})9E!U6I zWiAw6CtQzVEqN(7<|4CC@_&MIhy}eJa-~GaGl|#~ju9+PX6d^La~K{0|1|5Z-_3R3 zziUjN?36fZ5{*?tdnCMfaI;J%Rh+lBqmzSwid}2Nv2HjZ(Ys1ScnA``uAiTuJdPc9 z-IxpJfqYvR)!fbbRL0O{7{7GhlMV7{a?6|_m=}RRL}&@!1w(^gOg^j@Hod@hBkLSN zH<8B@j;QQ(A-eEHa$D4!m6J%-!t`nGQw6hlz5rojK0C=h1olP>70Jq`aeZcYP;W2= zKnp%|xdohRMLGuBfqgD6IBuA=BX9~;aKH@383r<7MXbaX4psU#Br1S*a;69-e&FUq z|1(Wsp4zIIn@al5)eAY}rXhUb^pO(qMI0eDXs5 zrGN_~TdgWsdt~-FqHAqA8#W&Y<_cLx>>r$qQBi@fIY+cMmxaJ5D6q^>J7CixoXTbG z&9LK40dLD+mx#3fC+5B_wgae$nAU!m;-||MGwFg@4-i?I2ba%s(_B;f1$kQ$vamVz zN!epaeF*z|nr`l9BCIw@P2Py)PC`G%u1`7^KS`M*raS3j$Bvp@MOzTAOZrKj$s|5y zaTS{jNu8exz_|a-o0@|Sy`Rb@qwC;?)pfgb9m`F5iSPs(oq^?fz%Ra`oum7aU?C-K z*00meZXw@dohW-)6Gsh`b`v!hBN8v+7DG~1+S0_?Qf`+&y=eQWEioDdwzks~iG86h zs9fi?-ciC!+_1p7O~k261Bv3nH4iMJIqVW`lLa|iL}19u#5eFiaIp`+{dOv&$#0oQ z62kI!ewg?}yM*m#e~qpmmL&tGQhO~$0Nd{JX-V?7O_c;+@K8A?-@Z5BwrBWdn=eXF zEu3bWXb&SSg0%*kQ4;ec#gz#8$0-TxPJaOL>Y6kzH#JeObd z;1%pZ?9;9$Hff`MV;HSz0w(I?jF`ycvyQY@m38{DX-p$lyrN=Z0GU)QD3r?3JZ<}D z$F*&yBULIXcK2dALK`&1=jDX5!=`jOK^#O+cYlsz05crS?C<)B&G3*;z5OYyk)jVC z+!StiiO$#9A|tliG-%Mb+he!((CcaWcUP6y2J0`n*xRA&Z4i`WS6%2cBjjLP#~Axd zJrIa|PH}ug9e@gL%M{->T9mXOl2j$cnC;ZG&xRr|Ob+Qe2QO#9ZOdmLH=#ZsYo~V; z9nN6F={Ts=opu&e?h2!`Xi8HgmuS|7;UP>?%{^&Qc8qAGuFf?c?2>&C5IcOGF@*NQ zTDcFEN#n(m8%cqS>A_p7wF4ezhMIFhTXqiX?{d>u4L2w2($~LgRd4eg{oFSS!gQ8* z!n${Y?-Wb5J=6oSRc2@bQ=1GO08JKmi#Or)G5O#ZN*cJ%65THhDaUc{_bp2;oy9F5n#)b7P}393yp+nuy{oI>ZA|3AJI{v$Q`=CATR1^sKX$c-tD zhiV=P_&0^wTX+BM;wne6kjIwu&h9p?Tf!#9%dsWkcL3BBhXf_nmR4mbEz4Dg;*22c z%(`|qsJA)nimkjYzfMit*ngbvPQq<#*jLE^e~jCrZ5XpAVvxb9P7vutx@uFmFRA^e z%{AXr6MK#TgxJ`<;U=4Mh}-vRQXA?@h^M%)#;$>0 zwl~UC3rBhAf|J@o`;z>}ZTSc{a=-|hZ31U+q40L6vvM#`#fN0EuB|k{VK}LiJt$QxI8Iv#mk|hFotydaRMT{I(spE$m#& z?nuymu;N6X=k2F1%%fA*9pK&GbF(082I!?tXx%}kIQoi2k?9dE(fDl1THKtQ+YG4( z{77%O?Va2ah+zErdUxCj_#^TOh%EGG^=_F;)^Gyj!(?s;2~)MHBt_ZwNr+LHp+P?T z_3tI(0H$a|lQmmX1<1JDPXt5Fw7ruM_nh!PTgp{pqjlfXl>`f871K?X=U(!cx!pf@ zuL$ndqxim4>PVY(tW$wO44UmHp=DWD*;R2-bTHBE&c0Pd*gI|Q!3$@r?Pak8Cu&oX z6Z%wCHM$;-%5&Ijb`>pCu%PIPw)zvm4H=_33M5xnQ0*d`_1x#tqnkV!6EmW|zP!%~VYxt3BAk#5e>uaHBO zI3~F}j?AU(sJZPo;!G}~i!;?Z=XZNQpXYs_=Xt-+<@>znF_4p$>?>lnj^vPHV%(en<-cf)BnFV~9>fFyVBx@Q3Yp5ZW!pi%B5Wo4h8qR}e}%B3?I2ihU$8Tc zK>%ApEum%*Gzbg^qZkp#Z80wUzlTdKI|z}*qT9k?@$vD{cnc_v5eb7Mkw}=CIn3PL zRDv*No}jXDY*Q-J;9HVE^SBV0#~36!i$tS>H}c}}v{;rM1hP@+ul2o83jMD_ROWY9 z5`Hi?jt+xE&0zm8h($X7cYFU4wQ=(;>?^Bp#ZZ#b*g7)^I2MiJPot61jvKQBdr)wZ z1PlQeaRLSVZ^Yl7qBc_69%PUR60RGJ&~Oy&e|+EZDA)$wf203xwqL!H;i5s3N`F2S z8nheQV+R1px_G!a`eT6&*l4m}fVRDme{y6bjv(igN^Pf4595^)*+DsKX!o3OcEm?K zWKS!t(ET>Yn1N7Ccf^}>S~fd+FFI?cOIyNK0(a`CnHaxqJvMw@(Aj!mFm5)nXndVN zm-ldnig<_Wm_-WLKNYR7-V9VJC^2j00I|77>zZ2l$C_rTBZu~Jw-q|Ja2%>Cbb%}t ze6@|~fvSL#gDU!*7+EWk@{gY%4_W-4Pe_qDC(CoVMVV(B3k?N*{z@Rwu1Cp&;+oPQ zDHi#UhsPQEz-+DO!~w5hH`yJ7{)V_!!@kKuOxO#@7Uhz&H+Ls>vByh}_{zJve#{k) zzNlI@a`m`-e|Kr=nA(GvS@A!}9z)$d3+``oNl#SuE~XV_>WyB&X6j6PxI$GQDGlmF zpLb<_5zO^aw~WR*H~1uXn0al@vNjNMI;L=P%Fb6X0Az4+_JHB(rBGTx;q3D~=6%!i z+;CqanQUn=dxc`|K+A`@uwcGM3ZOo z8vN=gqiC&6zIhTpLCPWKS5AS~hbIKRr5B-N9Qw+*$HTZ7LxJMX%CORQY&nC{eu)*3 z6qYKjUe?~iT6L=_!i0nr!N>aHL+%GMuZkZ$y}G*n)+MNg@{6*??cF=GjucG7>N95o0t1DLPD<@bCy|A0GH!3hzfXp5l~_16OfP-IY-RCf&6=kfdZ3U~GU zvPVTNDL1TSDGmN1(u_uqciw~(&e+wGq^--rGcN$37S~0;ALz+qvI8d z5r+f zQbFh9B;eGMT6vp6_~C%x(q?LNx?KM$tjnlXx)rUceac2#!KRbjup5pEYQ}KAnSDBjN8~iny&8F zPX@-;&5bX&e{Q6Niuk3$W%*LfkogoLrI(LZVTwaOCi#cU#_7$z zki3<7ai7izVs`A(rA^5Id9qx|_Qvg)2_h$TIn`^Y+E@og@D}}!1EIXB@#yKb)N*?| z^5zIOpv=%pH?}kPinumv|K(_;I#qW;I#Rr5)G~fKruW{c=>e0WIld}?eBY_XN;I3C zv-TOM0Sc1mhEk42X>C)I&Z(q^56~pQ~Qd9Ocm@vr6O_4ckk(^GrUz(6Ak;?`m!>h4svU0 zACcFoC*HS1tqop2tTL_;tIkC$c zr0EpUPYXe5iV_GtGi{D%99~t_DJ8PoISr(jB{uo*nz{3cd(yI#sj0GCszaXHW9o0k zt<`CV_2B*bJrT9=m%>aUOSxp`Ch}7uZh-I~t*@+qlSLL-dnO+3k3&CwJTlHHlCw@KYo`~HBcBjonfsty=fB7} XHC#KNGn*B<@fq-N^>Hb83P1Y?ie9|3 literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/BubbleOutgoing@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/BubbleOutgoing@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..912a8d3534e40f81e27a7574ce70b5c5a4e54c94 GIT binary patch literal 1986 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 literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/Contents.json new file mode 100644 index 0000000..569f945 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleMine.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "BubbleOutgoing.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "BubbleOutgoing@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "BubbleOutgoing@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming.png new file mode 100644 index 0000000000000000000000000000000000000000..7559e9b357f7dd52e860d92f9e98855242622d51 GIT binary patch literal 1959 zcmZuy2{_d0AOAUWv(9NYWXy=vm>H6`U&cCfB*(1A;E!f7Ofoag3`U!jkh3)-XU1e* zp^;kG=17+DM?=`~lv)*{+C+{?r5)Ao{*Qg1=e@q~=X-oU@AE!ynwN*Os?s(k002~7 zT^wseVMSu$gu`Ai z2O1*`wijiI!oY2mU@(|9Ba{r{91nhRm+Y|c2o{SDqS3Ljv8dQRC>kRiZN7j1el*4c zZDC<1L6|Y)s4ODejLJlO4)SLl$1r9HgFC~$!E7utUf2RmPi9SFv5r|8pDT1J8omQsU6HU ziWnY-3nPZcS)>0K@pq-xn;}6@1|>|wb(4{exi$L#Y+vx!=uNu+LI1P1pR5vbZImRL z{=6s~B~z3L3jkZ9T^;Rw2#Sq_LoSiN+M@Qi1<;)J$RqVj>hVoF89sa+`5uUALvFgb z+{@JM`Bj2<1n=Hg4L&>dzkvvN+B$k^4m!w+)DDP~eEJ^w)7d`?J@1GPkAt&8+z1BK zVUljmZ(Rdly!>g%#>5{JAVp>dp_I{#Z9 zpYKaoTi#N2F*P?oU%CDL`%`=onTfDTgk9tcni6Fj-H{}a=V1_SwQpY!Wjrvy(@WME z-=#HY`@wLfepj6pC$0Jf$w|egrndH{@$vD|NbchrXJ_X=+dx0R#jcql1!-I%Q71W> zwRD`p7|Al!FiGi7Ie)${nIvPd70>)_VCpx8O63RDaYLk*-23lelUY;35pUztr(+8%K47m#ITxalT&cSCe_byxfQ`#V=xV>Ffq zppX35ix*+*=Ph-Ac#MU~?GS3`m@YVc@8r~@lA8P24%$^v0*p>)-$j-bdt@fzeSLd& zOOM?i9UayDq4!My9zWJ=lx!Z^cB0GA{WM#}R~=!hFnWd&6EoYR_+I*hfo+WsqUY!B zGMK){XTjMxj8ICK-!H!ML`rO2$D?81K7%b=mE3Y?d)|yU>g>7U*o*0%85_fE>~kp& zh9{_TwA(`Mf~ANk=QfK4^Ah71ISNK{lT9rxJ2ht|au{S~WtDQd+#%cg!51qh|DCb> zc8G^|!}S)+1j|X!jk(}KnaN8zIa=7bQ3NhLyejhmC(}=hVl2$e&W=q9 zmO&xYb|MWdleVvU@O$23L(tH`z&l{dt}aOSTbJt8y^#(M=c41|A1=IkyOAWVY(TxH zs;Zg`(b1VtRq-XpBMq)q?x&G|TeE-*djU%zP%WHa9nX zI+C~e^eLpA*4x|b8Iff6;aYR^n%1N=bpwRMgrks?%Dz0+M@tCKM-LdNc*MOe;u-!p z+Qv;J66FmH9ICFacBN7%CmI?XA4Ww*#Rq@)-JTS!LwdrbOvO&`JHG3>a{s#0E_sQ!o=m62L2WU21Wt;T1p9_k zGxOE8wFG0U({NDzMX^bvjy=adY`2R31YuUCcMocxyw=(pP&_pU~9_HMvuUAjZ z?>0<@3g_kl@Ypd`k%xMw#jvm}g;aEZdbn}yg14n~y0^zjnvi(l6_dTP`FpxLc{tYDA5HuN2mV)T literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c9991e78d8a896ed1da8a78ffa43bca07d44702f GIT binary patch literal 1851 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 literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming@3x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/BubbleIncoming@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6213164a16f228111378e7f538648d6bfb0aff8e GIT binary patch literal 2865 zcmV-13(oY3P)TxZP7xMF z9TLxP^CAS~rmz!<*taMO@_IwYXo1lMt#PPJNnB?!Xel@UBv zpkXbH@H~I3P$+C0hGEhK=m%<=rd22ue&l)n)_{hNR|`c^yw_+n-p~x_2ij;f-iV@j zZ$LY#M~nbKB$LTJZnaux2dHy!;i- zn1P70EI%<#(;jz3FQ#eQvMfKL5ici>h*eq*k~)deL>= zOr=u7mAhM_AOjHrV7go`S0)|NOSxQrL2@etM`|LG5Ddex5%Hf-5<8Jdq(d-?fV|em zTrRhbfc?qm^FLgIBxc0=wUGsYX#j{eo6X-5uRqOZ^XY+S=N;h~}U5_4RLjT1gb7H&*#lsq_NT{8K8Geg*)Jl<^ugRyhEe+27y) z4bl8_aB%SJ#XbeKa%7N~+sFYxTv3$25Y0b|qWl2>Q4+>$=xG%IZmX)=LNx!Vs;XV= z)5yo`Ajmtqt~-e4pLV-#kp}7aevAUZ9Rv#x0PrNdCw;HvE*^{rfR7Q2PRPp#9fTYX za%RARhX}~Kh($MK)Pr;!$HfF^2uNnskTdak{8Pjl8j>Rxa&B(!K4SfA$SGnV7Zw&C zA{P0OL6-sEH)Kqf<*yNIAY_ab$e_!B*v7`j_lQM5WPE35=O@IX8$fon(EH^0L+k`Kv*{n=`EcJ>ohRW;KzUCi(qCFGP}8+Uhi ze?b`XAwy59tE;PPwrwNK{{;Cr00030|4jICu>b%Di%CR5RPEbcXj5kx2k?K>oY+{~ zL|d!<%16J_F=yzkO0BH0RWet0BfA`aY(d6A5klHtDTp5oR&Q)dK^%-R2D=%(QAjVe zrB`CHZnN6ai?*aV6L+*<=CmDl7d{!UhveksB&qp$5B%?JPx}1wyze>ZIRdFU3Yh39 zg#h#b1gFz^U}0flB^(ZK@FX4pTLEkVV4#{7GIfsBJ-vuEH8u8`nVA3w$!thP#M;{0 zy2p~hy?VuyMA8Kr7qO$Gqx0$0ry-7*nUG3= zg#h$Aoo9!|NO|^B@b=R#qfQ zl6c`W2vP~~e?+s{Tz>xi`HRn=KYy{hy2=ZlVUTgVu)V##+I}2 z>G%8ZanN^@xw*N2v_R@)ki`J10o2)SwvRm?&-Y_vV~>`Xmp6DeCzF$ta{!FVKa z5QMhY*4C4!PMx~a*Vp&!?c2A2x0N>gwt~apJ@kuh%>H57l0}NH4JVufcF{TeO|A3kmJ1_uh;t>)wqc2pAcj`%y^)3R2H_3a4Tpzt^r^H zP*+t|F-Z@H)=(Vw+u%EWid^3pV{2j*7kKE5Ln1n#6Tdh zaOlvX<8)7LCPa2`OldbJi>h=x6A#m2v)Q^vMn-b(0%&w}^pVYGbJ6g@EL&3Jbz{mQ zwJyPGF?RuI5(HsicXzih7na&kC?xgt^!Nlp*h|l)w=;-pu2j>GsQEttDPTq}fNTKv zSS*&$eLmk%Ha^Z1MR9FlU|`54-ZdFO-(%u1Okhj`5Ma7($ecdAh0+!HTBHz_doFYd_!)x`)Xrj<1w1>G}Ee5 zK}%_AjOA3w#3ePAn8mWkdS%q1bpRYR7IOko~twp zUOd38M@-dFJKF4%O-Y)=o{NQJ@mRo|L`(!z?NHk&1Ky0V=Pi=qu^p%uFe?$YyrrOz zGy9A-;7(Vfozo!eJ|)1MLew(Yjy3y~<8D^upFuvxQv;Y2h^cy0Ay$MGC*JwwpD`X_ z&LO5^sGTX%>i_@Mzc6T*)y#N`J+v>pEe!n>CT P00000NkvXXu0mjflW{&e literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/Contents.json new file mode 100644 index 0000000..125fa79 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/bubbles/bubbleSomeone.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "BubbleIncoming.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "BubbleIncoming@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "BubbleIncoming@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/Contents.json new file mode 100644 index 0000000..0e69c28 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "share.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "share2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/share.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/share.png new file mode 100644 index 0000000000000000000000000000000000000000..ca56ff73972ea4d40e241241acf0b355b492335b GIT binary patch literal 2183 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey1|%P7U0DF67>k44ofy`glX(f`a29w(7Bet# z3xhBt!>lsd^Q;1whpd3^o;3KxS@gNuokUZcbjY zRfVk*ScMgk4HDK@QUEI{$+lIB@C{IK&M!(;Fx4~BGf=YQQczH^DN0GR3UYCSY6tRc zl`=|73as??%gf94%8m8%i_-NCEiEne4UF`SjC6r2bc-wVN)jt{^NN)rhQQ2mNi9w; z$}A|!%+FH*nVXoDUs__Tqy(}E4xsMLE%5b)Ta{M~^%u~G`W1-<`i6Q2`nkFK*mM?` z1f?PziB)HDNM%8)eo$(0erZv1Dp0vHHiLixhu;C%G?iqg;jkPe19mq&On_dt0b1hg zYvqz!lv$RV;#QQO3l5lq#G>LVmsA(;nC8&>{B znZWQ)1mzApLmPbzF{pYQeNfgx%1V%Y3Kj)sR68!9O|VRF$CWYXxdE_<;PiBH4DsOY z4UP2)aTl>OKHcA~qt!d@Qkz(`tGCB5hlIvi3|X^|h0QiINlosk|2TEJny=O?(+d%t zvD0qYnM7p>WGs3qyt}v4{=miDRB-fPPpc*>U=ccvLmdg=?(%y>3ivTVV7r zg6CP+0nTHF^MsS^UPt)m{_VS!_h$XeLo1)zeV=S{L5ja8xhA*d>!j8tUn+iHixdvM zzIyl7{0?EudHqRzX_g(EUK+98I6iIuP5-4AVlJKFJ8mG@_sDd0YRTTzD_+XU{_m;8dPLnE;*?iNjs?a}D-LC6T z3vZqMdEI$GAL^ODtYzjZ`1SDp71`+IdbNa>+4?Hq^Zts3uMqk1&GM^%asH-{N5v!L zUT=_Fq`Xk?*}MFnmA9pGvQ|9zjqBBX%)hPl(U*4ngwxu~KYagtf4BR#@>MU-S5L0~ zV`0C4qx;>YSc`k>--*mUy1pc!US-zIS#Eke*flO64bj|p?0Ap$jp=uOpR?Th;izl* z{D+md&wuFl>@R(~M?h5f_5-%&IhPlh-1zhKIZKxocWBCs6%q@@^G@;}F#aL5ok!-} zzOc|0QBI5+-yZA!S9rNmFDEa&xRz5VX~IoAw*NKVn-)LO$(y8J*tM21<$=!s*7ss85dVBq8b=@7^zo+CkY;jrZB=&64o7?O^ zeU{#vU?;QiK~dGpAck+ncg%J6zO+4Yda;~J`F>TdcY24Vdn}z#{@!rU* zeJG!B??_M1e!P7=_mx?nP)HS=nyA%4CVv zvSq1Lwgn|@aon*je9wY|mFF+%E7u?Ew>p$+2aKYxWyfZ&lZcjG)AeYB=oh1n{yC+; zm&Q)r_y6yXRV$>{bw6BiTq$<<$D59S|F~H!6MAxa?gfst!2OfNfa&WcPXPPZ@5NIS z_Nn^_R{LB0GN^cWOCs*kx9r_ZSl6ePioXd8-n#M3Y>lslKUn)LMeg*gKmU+o;H~4Y zb7+10w!>#P^>z$K-R{hAidGx_G-bJ-9X6!h``J*)Gk<5do zKl1;7uYU0OQ|}E!c>&SICBOC8Fg$zSv|{<~{Rva^{zp1)w_j8F`#-l=kA}kfcGf6R O>%i01&t;ucLK6U@FJ1}& literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/share2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/inputbar/share.imageset/share2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aaea5583811699a0806f329907921455bcf773cd GIT binary patch literal 2509 zcmaJ@dpwhU8{eB_$|8psh1)`?9huo!doYv397YUzm~FPjcCT%IH`~LCv-k;BX|9;nXU*GTb{ax4fxj*-on5a;5 zGY2yW1Y#bxoJ`ZNh?(2eSpQ6HU4qju_L2~~Bo54!NEsqFB#;GWuz@f>gTtn=87%qg zOY8s$#K40WPnXcCkpw2lM=)k$5Hh|{kA^@3NHQUVnZ=d>8Eg(uK!m+$?|=b377><+ zrJ|_9U^bVxTp?n|DWc+;iYz9c1tTp30%Qa|0iP{l05X2IKunMkVPAL&`u&U>2?M@_ zNV15qzeUlhF+eaVVgp!&FPw=&`v5pR0*&>>;c-g=jNV3~{E!$F9EB%fy$L7`@b!Y} zvx!)l1R9z0HJ9EZ!nhKNkbp!=rBZ~{8v%+qNHiXgN1`xD32TB*?u2hz43kg*#iB{i}b^-O1b(o1Y+zT zMh=XZ-599I5?ZaWzVPC<%5J^`mzh#UqdnSiVikiNyYTQyFYEJxKXD}YT$UM!lIllC zr?i%RAPn#VP+oJbO^nQz$vogefkH#&yyW`yh&W)tmw)2~>($VcPv9|SkZ0IQ_-fAc z>|>Sdt{|l^{=7Avl!vAaEG!?%II~^x7_laXCQky2eDi$PnjSps+y)Lu; z9717u8_1%5H}Tft-n#Qm7IS1Nhw4X?sQagm1$nohDvN@Klbxx#=5A`;+;L66)DU;I zYsbmObA1gz*r=4j15Km`xqNW-voi(HT!}e&)S&ybOO7s%U15y-Ws#&F)LHFq#xm0i=fy0P2OJX<>|_7-))-bV%{{efUZu@5%$E?Xs)V7$gYjrP4O4PTwdIrf5$h>4siU!RGuiO@s&`O_%g#1lQNwmR z+dC#^$(}v87U$&uV<{26GH$%pF;7{K$|GSojkrMS!CnAPyPnM#sPmrUFEbxkil)zVb`(ab5b*?@B2VMRu9=>=uMQP^ayG<9iUba26L zKY79DbZpwS<2$BPxAAQ$U5MFI>dnK`6B&(uKDIX*b(*cr8|MU0Yey^Q7X3O-^A9_V z`FxK)f++31PwJj<(^__^ht+o%s>96#c3bSi6J57$nti-Y(~`h_FjhFUD7gk&&TTa# zAo;tswYRP|+f{vhk5#_(eoBj#CdhB}sd~tBe|_Nb@To$*bV;tm!{>8K=dbg)lU1p@ zbaGy8+|jr4=1bmA93yY|{Ypq@zbVyUSNgnUMdY*gRp%xwcO*|6V~-OY>oFVWjd& zxLV$YdvlVNU_blyFL%$Wjw7^Xk9jvi`WVS z6?TgcB_*0+c>LP1OTGy$vO8={w|p!msOo(}N$=a2!pJC;Y|QbN_3aA^-CenETGs25 zALQ(ClN_fytH>c|`i%R@4#yTPIZ;jwTBXXzNzH7l;Q8_rECFq8u{X;S^QYrVhM~73 zb9UaV_W}O5wKfz~99QmFjXLM=m-bk^+Sq#|WHx->F+1xz*+#+L>~*Ui)uiw3+~XM^ z*V$%QU2<;BM%5gY+5aG^)}Wy(Y2Sqd6=SL=K6~w(MneW&e6J)ADYuU<*u1yF{f`)0 zg!Ao$2m39--n7z>hw{w}OKRISJ(PT~uTz5w*!pHM7I}WbRGU>rx#pxWBfT|g`)}=+ zt?YAw=#`*}b(Xy8p7A7E8o2x&w4L^^z;4y>s7;l&dDj|ERNoszm)h<-PV`N=cZvJM zYgf7YDUH-xNSQp%#Fy-(&&dHNiD zak0UAst9j#FmmVB7ju7is=qfl=T@TYrN)c>8xPHVXVNMWRsO!G&=tCaJCGwQ>-IFc zr`pA>Uwa?@?1=?XYWU2j^0nhUY{Y>cde86Bt$DE*f@UXoq@Q_y_zIlfIBk2Z*pG|& zEx;|XfW2@@Mu!`BUHBHz^LoImILDr1H@DB#E4=pXw7TU3cuwqt9!iPyAV!ana4}C~ zOkadgMwmLKl^+B;HfY*s?eY+%RgguY;Sb_VkuJJL8pzt%jqwRh#j|F9u);#3$o~#X GU;h^{k`=uG literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_failed.imageset/Alert7.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_failed.imageset/Alert7.png new file mode 100644 index 0000000000000000000000000000000000000000..755cbdeb6c3d5b293045d8884ce3e8ff5c6388dd GIT binary patch literal 1595 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pn}txArU1JzCKpT`MG+DDfvmMdKI|^K-CNkHWgMtW^QUpqC!P(PF}H9 zg{=};g%ywu64qBz04piUwpEJo4N!2-FG^J~)icpEP_pAvP*AWbN=dT{a&d!d2l8x{ zGD=Dctn~HE%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij^UTz|3(;Elw`V zEGWs$&r<-Io0ybeT4JlD1hNPYpzh2qfLoMT4D}VzfBF@P1^R}12Kv}Em1L$NoQI+d zBm>a~_7%i38(`2_ITxiSmgEEak-Ay^xF zKU*eL)S^9bLwplI$w^?|v25q(f;+VVoE5ATs_AjLu&HiF8EP^7n zn-;C;Z*q%Pw#!(!gg-0Gdjrd^mrYx5Mo1@J)3}*Zo>sp8e!2SOb%qrW&R7=L)fB(m z`TdSzhC+7kWW!}@!e9Nml%LdcG|5hhKC$TjM4!Ikd5ZPterQTc7k|zBB5?7c@rtbV zF`16#-?bxjZ2Mn2NhRAKDBLK)y3CxZ`TL}D#+!XgLFRK8JT`qcExAXdKr%$X6!l0NblPPVa4Lxt%^E{Rlk_F<=glDc`~=+O#w^Pui3mD zjQ#IUDQ&1@-d<3DUj7t^HEsG(&O@d z$sv{Q>koGJuhQ_@da1_c!0$VSNnBZ1ExxqnJW^|CobEgS&!yC8U(@nGwsWK>KX>eJ zuU9{|FJ0Pbo_C(lhM2M}+X;^&_0BOCKe^LC(RZI)(AB-U#}Zi`_iNqjc{Ja_DD~fF zm#-TuWeYn0RnBAisLI!sQ`nzeuyy%N2`QCk-I&X-IxK=F*?kQS(Q^;-PyfB&=0JP; zy2N0sZm*Mvwyf*~b?$X`;0YFUxI z<@`;zt+XB_-nnGhzHoW1&r_W*PiNSCE6-$n@l5o?$K`_F(|z~N5b}I*o%6ws&738< za}{4~c-O@gwDS9hN2d=wkq_PeSgL7;NvhTUSr!{hZYBlgY+^lep1tCs>b#z3{4Fm9 zESj`FtJfG8iOX3^JX&bW$?_)oL~n3vec{iW(aI}c##d-={irO%5vp|||9qQ-<;(+% z+mA__cs#fuaOJP5#!j~$p*?pS@6Y>ovDDq9ca_P#4bw_D>}lxvRWtSU{xe?gerlXm zbAR#+lmyLK*A*dXQF-UtOY3hveS7qN&3c=;_V(P{Yu>5@J@Ng6K=PvQx;>j-EsD=v zcHrmMS+@0djg5_uWjYpX#N-xlUO(}=MYq{UyM68Z)!y0d+J0`sa`{WYw2BW)I45c! zsLCt}IDcu${Fia%^BK%{XUNt4^U=Rx=Ow3>(D*5SXVri9^~Z$7e>tuH4=T|;UHx3v IIVCg!05_7V1uy!EP)EUMeW(aK5{Ec4WS^vxi65C;8ow@cn)G@w|MW-@`Cv z42?#kVOf@Sxm>PLC=^O05{Ya!o5epPo6Tkui9}*@a&pq;a=BQRWi=X&hS~37u~;mA zzuymqgX1{PYPDMT9JIH$w>KJ%M&-nUAW73tf%^{u$LGMYQ-Gl!s5X!|SVunV{S3J0 z2Bv02Q4oqn`TNmmH0p3T9MnPedcB_Kd0tL5|3Z?k+yrWkn*skT4D~>5BXH#gF!y|Y zUDgW*gF(Gsucrdr-QC?S2!a3r3yZ~~^Ab>VboY>NikhQ9|3zS7fq)BwAlU78ds(n< zx7#gOVVnaFH6bh2`^|$mvx5ig4U~P^3lU}da ztEjTs*TrIY-`>N@ai$l@X2}$ByWQ?x!FG0bcFL9APgps+`+!1$Op%U`j*hp&>U26? zKA+D6WI-rNxOFJea9)%o0LbU_d7VzDdn0f#7z_e{Kd8JyG=QrOz!QFL4FGta=XZp4 zI2;ZDSWFg+hZ_EW;KL2TUkkY$0QB_q^lSr`PcWrZfi`fp0T{SMrbaXxjc$T%Yinx* zfVp`|D)&&J30!j&n0rpll-X=HZvanBOiTd4)m!DSa+<)^2H@KFWN-HQe7+5fC>xoN zn%+O)BgX*QFsapQHPh14(gFZezrUN2*)L#2J@DIfG6?|9&CSis(9qBj0Ni~*XX9U5 zF2OFZ(9yi_CTD}w>2xxoP$&ctKTAV==2;1N<{2H$vtJNBp67XHc6N3a0GdzI5g+GD zz~dYp%@z~Ui^t<}W_5LS6#zawLPz|@of7bkJM=6l0Ho9DGy?#VM9;kRoi73Rou{WO z59+||sggK*ijL+7hyDdDU&{~H(GfpT0|)|%12uavB@&550wA|rT2=nzPZG5Bj++T^ zEEbDxSW24nZ6ZK#hp09HXTK!Cfj}U@xLht5Kza-NeY@Cg+B=L?0}#_|$8;Y)kwlVEvTwMJlmo&cLn zCex-{M-L00{mpib|{U=y3`5(PQP+^#{n#z;PV+#=eABtJP*Q zVXt-cK(8cYj=5{B`Q(OWDW(KqL~0*ladiMMXu$ zp1#+aOeWLF$jFG&hsCk6v9Z?H*48}--8xh%mC9%|8V3dj2K;`%KNgF{R#u2v0f1C0 qm5RsXagO6Sr_DSr z1<%~X^wgl##FWaylc_cg49pstArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XQrEMU}&OXZmDNz zYG!U}uA^WCh1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1rM`iYzLAkGP=#)BWnM{Qg>GK4GRy>*)Z*l#%z~24{5%DaiHS-1 zr6smXK$k+ikXryZHm?{OOuzusuShJ=H`Fr#c?qV_*B8Ii++4Wo;*y|LgnO|XTpUta zkg6Y)TAW{6lnjixG-Z%g1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;hnzhnj+hZ(?$0 z9!O9VtjpKe$}_LHBrz{J)zigR322U9W@d_&o29Y2xtY0(p`)>jp`oj(lcA-BtE-`j zxvPb_tFfsOOs`9Ra%paAUI|QZ3PP_dPQ9Q6ky`+?*(J3ovn(~mttdZN0qk+BOx$j9 z!f75x*d1A_c3OMML$7Pe`yc0ipFFieX_c$gz5O*U-Cpmc z*RJO^zbsgG>RGy^dsl65`AY-It+&_qgt>kV}<=XK&T3Tcp{(2NwMNa{SLK`HJJGQ$HHc*3C0; zEC0A>-jcw5yX4*q&6%sXruEKxoo?N%rN=j4{%ISV{ou~Owng9P+t*e$xE_>Xo{?8q zm|f7l+a}xO`IP!)a|~wp8hAQtG*;~W-(vkI@y7eThbtNl*$#WZOqO}+`#IG2VA}lU zxl+~#SX|3(?(dd$+q>Lr#iF;>=DwHan-m^9c}kgwFGV--xApyaCLV_GUZ8U}fi7AzZCsS=07??FOLn2Bde0{8v^KVPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&py2Eb4mAZ0-^Aq1 zJdmI!SeLJ_m1kaYNn&1ds;7&s63`sI%*+%kH%nu4b6{W_IvTqe8oHV~8CqJnx*D38 zyIPpL8k-uy^t$9Hm*%GCmB93-AoM!o)C)=wxdlL*T~doO%TiO^it=+6z#g~C#O)Sy zoaRCGrr>sq1x~&CK*#8Vq8BN;VM4$(1Y*JyFOUOI{;7GuG+zWv+}yH@&NDDDMSHq9 zhE&{2`tkq2J@eKNZI3_y6JDJ6eW~dGNQo6J&+^{;5GrB&R2HZ1G}Rt$h2@ z(%sAc{Qvk@ea6~_%bliJ`PPQ+u!t1Xzi<5Z|91WR2XitjJ=u&U_1)e~^J`r_IdFng zp!=qytNG6S`Tz8CxWVknvnL-sZNavBsrI)fneV)3o;`b-^ueUdEs%X%#qFJ{|Ha?W z`7?jQ(${@we*XV>SKVOt#EBCfZ#(cVe{5IZV$nCTv(xc*fUGm`<6Vo3|L?E-D3&Lo z@!~=(JCn5kng9P^-ITV7cXXY0FjSw(`R=Rc&Hw5vehZ!pzZjBIaE0e!z;PC@)HOM4 z68KhxRDOCOd3e&?;DDO_Z_gx&cvt?c+z`dZC79yP>dFFSeN#DM6j8^L%DaQ*!uJI% zj7ucs?pAjRu(QQ_IT${^m%aMm{rz7%9Amtu9K5bGuki22$`2Em8O6fH*o>{6*>daH z|A-y#G7dP|#DAbE?_Arx{|7elFSn9a=4JC{jh|B~ts1KSOU$S#ri+_{<8!m_-TGSI zIB(UIBOju=OsyYonlrO?rs5Sl-W-V&MUk$VYuJhk3LBc|1@Il5)xR-v-KwQ6hrS#1 z9NHigFQ$AdspPaH>+ZE)3~l-sbfbP0l+XkK-HJb0 literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/Contents.json new file mode 100644 index 0000000..076377e --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "read.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "read@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/read.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/read.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0a1e7f6581605ac0da26aa2e7f08fc4cd3c6cc GIT binary patch literal 1393 zcmaJ>eM}p57(N1)0bRCbn(~pw%YhTa+Up0U^rR5zm91(CDHu8-!nJpW2JWuAJ7~+M zj3qN-8oQWiXb6^Ys6ymg*0QDqR zOBe|Zcb)i&$OC}bOk25$Ga24MEHo*>A{dF2wDW8L$SZK#F-twcfo7uCMroj>ABG^% zhHIb-r9o=2Yl%ABv1W!SYc46bG}l|yI8=}i<~b2wfFw8!bdn7ei#RpVmM+5IBW@T1 zw;)`-26~#5$xsSvX@&rmk{q!`D$52{YKcslqf)DmfO6i3rMa+NDwe7dr2>)4!R-g) zqcOM@F`~uWv3N@Z)p491fnkTkA#o@qG*b)9)M_;>mBVtmm`8|N7sX*tF~z1w6;Oh; zFg819qbV?=h?(g|P6P3oJ}rT?@5oZ@cANNy!A{H$%OuiBNl~D|@c&Sf+(EOPk$9Hx ze+skZE;|7m36^eTEd1cC>5))&M9UBuM>FL#-4N|!X&uecY#nU}wc4$&ftd!(VxuC? zSGHIN1EQx`4x=oD9@Rj+j>Klek>VV!LX};N$_f>zOr}#7$<(I=@M4B0!L7m(+wQp(?W(uU#dps|yDJywlYt}S z{nxmoE`En1*PZ3%jh*!;D1PS|e!21ZEBycvm zd+!&8e8O}*#Hzao-kBT~J|7$(UcbL@swt&)>9d+^Zg+QTXKQLW_Dk>47Zw3>^{X;h z+Nxi3&*P{*?j3w${ypPm|Lu{g`2p3ztQ*-Kg8g&&lZoLyH<3r(qvx|GU6=B{emj0J zG#XkNsg!)XG}JK@4vhav_4r3Too(|6r&?bfWknZ1@(Q^R1XoW_!2V?Gp*J7Qo-E54 zGdx-oe%hs~I`#8-D3o^pRz;V0;KH=8;oMxXKk&G^SkPV%yB^wJ|V+YM=#F% z7siEdacSl!Sp!R=yPMNrWCdJlSEWtuEyBM)zT6y8zf1oCTGS&cB0oXBt_1BV HsyXuy%w8QO literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/read@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_read.imageset/read@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1c04aee323b5f356bd4a607546d88802842be492 GIT binary patch literal 1730 zcmaJ?Yfuwc7!3vifrz!V5FfA&9RW2@40%WhF@ch500R|tDzGFAL`Zg1tu@q6U zMZu9u9hlY*il_yO*fJUsY@sNkmT7^CR0YI}Ac!J?Y&TS}KT3CI_ulW$ch2`ZcXoe7 z*asxXWsU>_fg}x;$nn(!f0sJg;onW8nofKnqrov~B%Fw*gIb6nQo;!kAXS4&kQ@S) z#!p(H00M#Nql$__V`Q873Rq18tv)n^8o|*7LV(bKfQl3d1rnenl}11rt~XHtl~O>7 zX3H2dL<}XXLNl~bWJXw&A|pk?Q&NP1K!Aad6R05+1Ptm_jgD^+P-b}f_}+R}g=0*J*kT?2e% zphBgw9{SFpWHP=~qeDTB0+LDu6r6{qQYrZ%{$fAQx)2^ya~&s` z%L(>lvu3dpSfN)#8gv$`e1jFui?s?ujo^_bkXDrjDMPfd8ki}ZubMv>&b)lDvC8># z;m(Vt@nLmFK3T3p-(Ic3@Sonc5Nq9{XG!UTp1iR_Vz z^}nqcO}ji1p5N70=whj1MA)Qe7&=m~+8o_qxe4n{IH>7K$cv0_j7Sk;KVw4defMIY zT6CahBma`QsN6Dj*^*`%fMAz4h#nc zDs5l6E=OXY4`JoQmCmcQp6<8xN69T0CYtJX@}c^Uf!&jB3GX$Jmw-p=xn8tdkByft z*uI&YDb#%f0-BUT{P5HSC~3f|It8TX6vB+{S@i$#P%Z-&W`s>AMFrt$(q6* z3Yz5PY)@x(n%rk|!-8t0!MF3cQ@H+#pZZ*p`Io`38WMd&w-3j54A#YtO7^f>m;$+F z&^eTJHS0YsLPIMlvBsujAvw_W-J^b8(UWV%KTLOEkuJ7CPtsIYqik&awojq=_H7^c zn+iy+-QyM5?}CN}2F7Dke8Jn3i(f3P&VE+XGi{p8cWbl%X^qcj)q*cM1szP;*b?Yr z-vqIL%6#)w)q~?Px=y>Hv)vwX{(F2YxFeNsC7*W7KMzc;)cCSOJ15`0CSN&t6WAzv ztSLJK*}ek;y%&4U*v(KC>EX`sv(ZlEY^JHN+CYg2B`s~j$YCd|nJ-QlN3!~OzIG|! zraSMVEzRG$KDJT3*j8f9VoHt&Tq51s=fOe_imrf`mss5H`{9pnC5Dq754pNi2c{-5 zvrAiLYr!y5`lrx~7!nnKa>o*GL32xUqs6`)yyEJ70lnI3Hc)FLjZSs0Zb8qOTG8Uw zk%w)(yW?^jr7MueWuFJUGW8wc=EiRBDRu7t#^}BXl2saC##8LQIOaIlD(;xK&y?MA za){@NW2bVN(@D)$JAxrs{W8X^%7THaLlE*Q(xZM)zV8n(->NGBWJaG s7%Fwx@>IXi19OQRvj}}j_In6KLS8^`ZJr?0`iCM&gTo}}HpK7!8;}dSV*mgE literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/Contents.json new file mode 100644 index 0000000..baddde9 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "sending.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "sending@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/sending.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/sending.png new file mode 100644 index 0000000000000000000000000000000000000000..92ffab80d0b9e3d0397b2d53143b95867ef1c50f GIT binary patch literal 1285 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4NtU=qlmzFem6RtIr7}3CnZLlXsaOFctV zGjmIG9R(vGU*Et&-^f7Mz|zXp*vi020Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4 z^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDg0nL?)D$#)6O%LZ zK!TcJUB13no_WP3iFwJXo-VdZKy&mmGgGY0OkLd^o!nfEOf8)a4P8y0j7=;Z&D>nf zT%1hZT$~(XdR_99OLJ56N?>|Z5PDs4>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zJ@ zPV=C8Q*gV*8K+)-pkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-?n0hb5ey8B#hxyX zAr-e&`u65sagaHZ{{PzOIWvwm*mzkmP2r!>>(>#vpfUNy97c4l#tGxBUx zI)6`Gxb#%@+VkR}r9y`PrgrEp4cTkP9GTs^{qe&`-~YI*`de(b{@LXsqn}Lv{vCnJ zQ)_14cvreNYyZ^kr zup!8>Qy4<2vB@5>tFXm<+Y!x_h=}X9jimf|-T`q8aZ&WC~CSBwG6j$>S z|Hl?O?`-ev{_*p1)~ZQggg^helxLf?P1wLKMn8}5dT#B97a#wz_E*+y`~6^Fmf6|B v`{nFB|KA=~cQ?6nd++Zsmyb8&8QB=_GpuKD&%gd3R4{qE`njxgN@xNAr&Z6- literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/sending@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sending.imageset/sending@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..87e587f3f2bd6cd88cf4067851dc2d5a4c5042f5 GIT binary patch literal 1611 zcmaJ>X;2eq7|wuLK`kl~trS@o$3isOB;+8Ga3o70mT-g=83#*3val)aZb%l1s8uOA zc(f7~s3I_O>44M=n0QwOk!r_^C~Xz2s0Br(WdPe+up0#IkJ6pl{l52|=Xu_9c6)SW z*ld?YE;Jf#wjvx>Q74^x-DXUuzWKYD4b<@g85&Q<63Jwy)`ZYP^h6Q@C@^gbqC&L# z_35oh0FCD8V^GJF@yZCXj=)%2JBDS!j1-$j3kb3pwYpS<1d@;x110%H&| zRRX?EDqa~4$Osbx@L2+;j?Li#LJ^C@7YIed6#$pAA+|rnWi#0#G2c(j<^tmnNJTU0 zlf^1nJ|2s*Bp^zXMll3sW@fT7{aA!41>%TAB8bg}xLhWMV4BzCq}Ia3&E69VFk;r3 z3`WvG;DB9Gn?z)g5|GODZ3&ohQWiIlw~1;PWYHQS4vTFsX#%KJ{y!AMCedb6g}lr6 zKZVWe^+p6zA!Z`Oq@xCx>}?Na6w6GAmLyDSf=HX_Vl+ySgc&7_fJ`>lHNZ!y)fsTR z(|3%eREib2nbhJsL;*`cN{3}I=*0qls60d}7jgL_8HW?fm-_KUAp$upfTesnEDf39 z!h|jZLvV6}tAEE0nUZT?2+T-Dh7prt9io?;2n-l2Tx^&+7vYq8<6QmJx%f}Xg{Wj8 z`*{B~?g0g+`Xe~C^CoJ!b9dV`G@8R{1stNb{CrTYOm&N)OZvapFWb9M zKtDPHIFqXreB*0os9<v`P-Imi^ z-PEoREbH&$E$OaQyWU9ZIwyM7Wxjb{>YM8xxG(X@9jF%NEjkic%bw-P*r8b@01e+} ztPOXLFLaX47#to3%WigSMr~+%p8LZam+Kit*V(zww|OBwr9DfY_#YWLDqABcbDWzE z1T*$Orj>RCvx=_lmleUqzdgLSvSzTZ$tn?|^Qu(GF^>yg!M$k?^UK|~_N6-&V&!qQ zT8m{)&+dfzzrG&uYdCo_dtZrk;kJdIp3U1w7ED{WwWut)y{*Ne=u<|)@jr%6>}gK2 zo;rm7lqM)ld)XzRWAMowYcrcIu%?s)T_ zuX>`K!}=n)G2T^q^!tfJ*rhkydW4!~mAImO`Bm_)q)pd{h(dQ!j}~IEN)CcE&we9`v=k7{BMD z!0G%7LtS-iL6?}kTl1Z(1eb5#JUw>rYIuWJ;DL*^i~^U9=P#gw?OQ-M#m@X!CFoyY zj#l(H>Xz(n{pI)pGZKDNXji1qOB2zY$R>x8FeP5mc6GqVmq|8a5QCGV9yUe1-% dx3Q>EcMT1_rmw1KKVY^0-W8#d@HbLT_CLuIaQ*-Q literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/Contents.json b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/Contents.json new file mode 100644 index 0000000..548236d --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "sent.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "sent@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/sent.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/sent.png new file mode 100644 index 0000000000000000000000000000000000000000..cc03a2daeb295184f8a66b508c49e3e1dfcb40ac GIT binary patch literal 1184 zcmeAS@N?(olHy`uVBq!ia0vp^AT}ol8<6B)wpSQPNtU=qlmzFem6RtIr7}3CnZLlXsaOFctV zGjmIG9R(vGU*Et&-^f7Mz|zXp*vi020Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4 z^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDg0nL?)D$#)6O%LZ zK!TcJUB13no_WP3iFwJXo-VdZKy&mmGgGYG%*`zfU7aip9gSTK4P8y03@t5OT@6jl zT`kOAjZKYUdR_99OLJ56N?>|Z5PB_f>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zJ} zPV=C8Q*gV*9H(A=pkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-ZWT7~dkhSWe4Z|j zAr-f30#17!4iK38J7@N?i!Rxmb_e(cV>&y!_3m`eSNg^Hi+h)FOvl8qUE8GhyP24E zo}BySn5V`IH}6uFC+rVnN+zFc9K$RjfsL!T?3w(bzI4^9 zS-gK8{&_BWz3YgPRK>eGgDYXf literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/sent@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/status icons/status_sent.imageset/sent@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc560d9dd613ca72ff27bb952e2bb3506bbca1b GIT binary patch literal 1294 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 literal 0 HcmV?d00001 diff --git a/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/user.imageset/user@2x.png b/Whatsapp-Swift/Whatsapp-Swift/Images.xcassets/user.imageset/user@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c862f10732f7008e2563e1c53f8cf093c18a48d9 GIT binary patch literal 6691 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 + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIcons + + CFBundleIcons~ipad + + CFBundleIdentifier + com.hummingbird.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + Main + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + + diff --git a/Whatsapp-Swift/Whatsapp-Swift/Inputbar.swift b/Whatsapp-Swift/Whatsapp-Swift/Inputbar.swift new file mode 100644 index 0000000..7947a6d --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Inputbar.swift @@ -0,0 +1,194 @@ +// +// Inputbar.swift +// Whatsapp +// +// Created by Rafael Castro on 7/11/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + +let RIGHT_BUTTON_SIZE:CGFloat = 60 +let LEFT_BUTTON_SIZE:CGFloat = 45 + +@objc protocol InputbarDelegate:NSObjectProtocol { + func inputbarDidPressRightButton(inputbar:Inputbar) + func inputbarDidPressLeftButton(inputbar:Inputbar) + + optional func inputbarDidChangeHeight(newHeight:CGFloat) + optional func inputbarDidBecomeFirstResponder(inputbar:Inputbar) +} + +class Inputbar: UIToolbar, HPGrowingTextViewDelegate { + + var inputDelegate:InputbarDelegate! + + var textView:HPGrowingTextView! + var rightButton:UIButton! + var leftButton:UIButton! + + var placeholder:String! { + didSet { + self.textView.placeholder = self.placeholder + } + } + var leftButtonImage:UIImage! { + didSet { + self.leftButton?.setImage(self.leftButtonImage, forState:.Normal) + } + } + var rightButtonTextColor:UIColor! { + didSet { + self.rightButton?.setTitleColor(self.rightButtonTextColor, forState:.Normal) + } + } + var rightButtonText:String! { + didSet { + self.rightButton?.setTitle(self.rightButtonText, forState:.Normal) + } + } + + + var text:String { + return self.textView.text + } + + override init(frame: CGRect) { + super.init(frame: frame) + + self.addContent() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + + self.addContent() + } + + func addContent() { + self.addTextView() + self.addRightButton() + self.addLeftButton() + + self.autoresizingMask = [.FlexibleWidth, .FlexibleTopMargin] + } + + func addTextView() { + let size = self.frame.size + self.textView = HPGrowingTextView(frame:CGRectMake(LEFT_BUTTON_SIZE, + 5, + size.width - LEFT_BUTTON_SIZE - RIGHT_BUTTON_SIZE, + size.height)) + self.textView.isScrollable = false + self.textView.contentInset = UIEdgeInsetsMake(0, 5, 0, 5) + + self.textView.minNumberOfLines = 1 + self.textView.maxNumberOfLines = 6 + // you can also set the maximum height in points with maxHeight + // self.textView.maxHeight = 200; + self.textView.returnKeyType = .Go + self.textView.font = UIFont.systemFontOfSize(15) + self.textView.delegate = self + self.textView.internalTextView.scrollIndicatorInsets = UIEdgeInsetsMake(5, 0, 5, 0) + self.textView.backgroundColor = UIColor.whiteColor() + self.textView.placeholder = self.placeholder + + //self.textView.autocapitalizationType = .Sentences + self.textView.keyboardType = .Default + self.textView.returnKeyType = .Default + self.textView.enablesReturnKeyAutomatically = true + //self.textView.scrollIndicatorInsets = UIEdgeInsetsMake(0, -1, 0, 1) + //self.textView.textContainerInset = UIEdgeInsetsMake(8, 4, 8, 0) + self.textView.layer.cornerRadius = 5 + self.textView.layer.borderWidth = 0.5 + self.textView.layer.borderColor = UIColor(red:200/255 ,green:200/255, blue:205/255, alpha:1).CGColor + + self.textView.autoresizingMask = .FlexibleWidth; + + // view hierachy + self.addSubview(self.textView) + } + + func addRightButton() { + let size = self.frame.size + + self.rightButton = UIButton() + self.rightButton.frame = CGRectMake(size.width - RIGHT_BUTTON_SIZE, 0, RIGHT_BUTTON_SIZE, size.height) + self.rightButton.autoresizingMask = [.FlexibleTopMargin, .FlexibleLeftMargin] + self.rightButton.setTitleColor(UIColor.blueColor(), forState:.Normal) + self.rightButton.setTitleColor(UIColor.lightGrayColor(), forState:.Selected) + self.rightButton.setTitle("Done", forState:.Normal) + self.rightButton.titleLabel!.font = UIFont(name:"Helvetica", size:15) + + self.rightButton.addTarget(self, action:"didPressRightButton:", forControlEvents:.TouchUpInside) + + self.addSubview(self.rightButton) + + self.rightButton.selected = true + } + + func addLeftButton() { + let size = self.frame.size + + self.leftButton = UIButton() + self.leftButton.frame = CGRectMake(0, 0, LEFT_BUTTON_SIZE, size.height) + self.leftButton.autoresizingMask = [.FlexibleTopMargin, .FlexibleRightMargin] + self.leftButton.setImage(self.leftButtonImage, forState:.Normal) + + self.leftButton.addTarget(self, action:"didPressLeftButton:", forControlEvents:.TouchUpInside) + + self.addSubview(self.leftButton) + } + + func inputResignFirstResponder() { + self.textView.resignFirstResponder() + } + + + // MARK - Delegate + + func didPressRightButton(sender:UIButton) { + if self.rightButton.selected { + return + } + + self.inputDelegate?.inputbarDidPressRightButton(self) + self.textView.text = "" + } + + func didPressLeftButton(sender:UIButton) { + self.inputDelegate?.inputbarDidPressLeftButton(self) + } + + // MARK - HPGrowingTextView + + func growingTextView(growingTextView: HPGrowingTextView!, willChangeHeight height: Float) { + let diff = growingTextView.frame.size.height - CGFloat(height) + + var r = self.frame + r.size.height -= diff + r.origin.y += diff + self.frame = r + + if self.inputDelegate != nil && self.inputDelegate!.respondsToSelector("inputbarDidChangeHeight:") { + self.inputDelegate.inputbarDidChangeHeight!(self.frame.size.height) + } + } + + func growingTextViewDidBeginEditing(growingTextView: HPGrowingTextView!) { + if self.inputDelegate != nil && self.inputDelegate!.respondsToSelector("inputbarDidBecomeFirstResponder:") { + self.inputDelegate.inputbarDidBecomeFirstResponder!(self) + } + } + + + func growingTextViewDidChange(growingTextView: HPGrowingTextView!) { + let text = growingTextView.text.stringByReplacingOccurrencesOfString(" ", withString:"") + if text.characters.count == 0 { + self.rightButton.selected = true + } + else { + self.rightButton.selected = false + } + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/LaunchScreen.storyboard b/Whatsapp-Swift/Whatsapp-Swift/LaunchScreen.storyboard new file mode 100644 index 0000000..25dcb3b --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/LaunchScreen.storyboard @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Whatsapp-Swift/Whatsapp-Swift/LocalStorage.swift b/Whatsapp-Swift/Whatsapp-Swift/LocalStorage.swift new file mode 100644 index 0000000..12c5c01 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/LocalStorage.swift @@ -0,0 +1,60 @@ +// +// LocalStorage.swift +// Whatsapp +// +// Created by Rafael Castro on 7/24/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + +class LocalStorage { + private var mapChatToMessages:[String:[Message]] = [String:[Message]]() + + func storeMessage(message:Message) { + self.storeMessages([message]) + } + + func storeMessages(messages:[Message]) { + if messages.count == 0 { + return + } + + let message = messages[0] + let chatId = message.chatId + + var array = self.queryMessagesForChatId(chatId) + if array != nil { + array!.appendContentsOf(messages) + } + else { + array = messages + } + + self.mapChatToMessages[chatId] = array + } + + func queryMessagesForChatId(chatId:String) -> [Message]? + { + return self.mapChatToMessages[chatId] + } + + func storeChat(chat:Chat) { + //TODO + } + + func storeChats(chats:[Chat]) { + //TODO + } + + func storeContact(contact:Contact) { + //TODO + } + + func storeContacts(contacts:[Contact]) { + //TODO + } + + static let sharedInstance = LocalStorage() + private init() {} +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/Message.swift b/Whatsapp-Swift/Whatsapp-Swift/Message.swift new file mode 100644 index 0000000..f584a1b --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/Message.swift @@ -0,0 +1,59 @@ +// +// Message.swift +// Whatsapp +// +// Created by Rafael Castro on 6/16/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + +enum MessageStatus { + case Sending + case Sent + case Received + case Read + case Failed +} + +enum MessageSender { + case Myself + case Someone +} + +class Message:NSObject { + var sender:MessageSender = .Myself + var status:MessageStatus = .Sending + var identifier:String = "" + var chatId:String = "" + var text:String = "" + var date:NSDate = NSDate() + var height:CGFloat = 44 + + func messageFromDictionary(dictionary:NSDictionary) -> Message { + let message = Message() + message.text = dictionary["text"] as! String + message.identifier = dictionary["messageId"] as! String + message.status = dictionary["status"] as! MessageStatus + + let dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS" + + //Date in UTC + let inputTimeZone = NSTimeZone(abbreviation: "UTC") + let inputDateFormatter = NSDateFormatter() + inputDateFormatter.timeZone = inputTimeZone + inputDateFormatter.dateFormat = dateFormat + let date = inputDateFormatter.dateFromString(dictionary["sent"] as! String) + + //Convert time in UTC to Local TimeZone + let outputTimeZone = NSTimeZone.localTimeZone() + let outputDateFormatter = NSDateFormatter() + outputDateFormatter.timeZone = outputTimeZone + outputDateFormatter.dateFormat = dateFormat + let outputString = outputDateFormatter.stringFromDate(date!) + + message.date = outputDateFormatter.dateFromString(outputString)! + + return message + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/MessageCell.swift b/Whatsapp-Swift/Whatsapp-Swift/MessageCell.swift new file mode 100644 index 0000000..ff952d4 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/MessageCell.swift @@ -0,0 +1,285 @@ +// +// MessageCell.swift +// Whatsapp +// +// Created by Rafael Castro on 7/23/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + + +class MessageCell:UITableViewCell { + + private var timeLabel:UILabel! + private var textView:UITextView! + private var bubbleImage:UIImageView! + private var statusIcon:UIImageView! + + var resendButton:UIButton! + + var message:Message! { + didSet { + self.buildCell() + message.height = self.height + } + } + + + var height:CGFloat! { + get { + return self.bubbleImage.frame.size.height + } + } + + + func updateMessageStatus() { + self.buildCell() + //Animate Transition + self.statusIcon.alpha = 0 + UIView.animateWithDuration(0.5, animations:{ + self.statusIcon.alpha = 1 + }) + } + + // MARK - + + override init(style: UITableViewCellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + self.commonInit() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + + self.commonInit() + } + + func commonInit() { + self.backgroundColor = UIColor.clearColor() + self.contentView.backgroundColor = UIColor.clearColor() + self.selectionStyle = .None + self.accessoryType = .None + + self.textView = UITextView() + self.bubbleImage = UIImageView() + self.timeLabel = UILabel() + self.statusIcon = UIImageView() + self.resendButton = UIButton() + self.resendButton.hidden = true + + self.contentView.addSubview(self.bubbleImage) + self.contentView.addSubview(self.textView) + self.contentView.addSubview(self.timeLabel) + self.contentView.addSubview(self.statusIcon) + self.contentView.addSubview(self.resendButton) + } + override func prepareForReuse() { + super.prepareForReuse() + + self.textView.text = "" + self.timeLabel.text = "" + self.statusIcon.image = nil + self.bubbleImage.image = nil + self.resendButton.hidden = true + } + + func buildCell() { + self.setTextView() + self.setTimeLabel() + self.setBubble() + + self.addStatusIcon() + self.setStatusIcon() + + self.setFailedButton() + + self.setNeedsLayout() + } + + // MART - TextView + + func setTextView() { + let maxWitdh = 0.7*self.contentView.frame.size.width + self.textView.frame = CGRectMake(0, 0, maxWitdh, CGFloat(MAXFLOAT)) + self.textView.font = UIFont(name:"Helvetica", size:17) + self.textView.backgroundColor = UIColor.clearColor() + self.textView.userInteractionEnabled = false + + self.textView.text = self.message.text + self.textView.sizeToFit() + + var textViewX:CGFloat + var textViewY:CGFloat + let textViewW = self.textView.frame.size.width + let textViewH = self.textView.frame.size.height + + var autoresizing:UIViewAutoresizing + + self.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] + + if self.message.sender == .Myself { + textViewX = self.contentView.frame.size.width - textViewW - 20 + textViewY = -3 + autoresizing = .FlexibleLeftMargin + textViewX -= self.isSingleLineCase() ? 65 : 0 + textViewX -= self.isStatusFailedCase() ? (self.failDelta()-15) : 0 + } + else { + textViewX = 20 + textViewY = -1 + autoresizing = .FlexibleRightMargin; + } + + self.textView.autoresizingMask = autoresizing + self.textView.frame = CGRectMake(textViewX, textViewY, textViewW, textViewH) + } + + // MARK - TimeLabel + + func setTimeLabel() { + self.timeLabel.frame = CGRectMake(0, 0, 52, 14) + self.timeLabel.textColor = UIColor.lightGrayColor() + self.timeLabel.font = UIFont(name:"Helvetica", size:12) + self.timeLabel.userInteractionEnabled = false + self.timeLabel.alpha = 0.7 + self.timeLabel.textAlignment = .Right + + //Set Text to Label + let df = NSDateFormatter() + df.timeStyle = .ShortStyle + df.dateStyle = .NoStyle + df.doesRelativeDateFormatting = true + self.timeLabel.text = df.stringFromDate(message.date) + + //Set position + var timeX:CGFloat + var timeY = self.textView.frame.size.height - 10 + + if self.message.sender == .Myself + { + timeX = self.textView.frame.origin.x + self.textView.frame.size.width - self.timeLabel.frame.size.width - 20 + } + else + { + timeX = max(self.textView.frame.origin.x + self.textView.frame.size.width - self.timeLabel.frame.size.width, + self.textView.frame.origin.x) + } + + if self.isSingleLineCase() { + timeX = self.textView.frame.origin.x + self.textView.frame.size.width - 5 + timeY -= 10 + } + + self.timeLabel.frame = CGRectMake(timeX, timeY, self.timeLabel.frame.size.width, self.timeLabel.frame.size.height); + self.timeLabel.autoresizingMask = self.textView.autoresizingMask + } + func isSingleLineCase() -> Bool { + let deltaX:CGFloat = self.message.sender == .Myself ? 65.0 : 44 + + let textViewHeight = self.textView.frame.size.height + let textViewWidth = self.textView.frame.size.width + let viewWidth = self.contentView.frame.size.width + + //Single Line Case + return (textViewHeight <= 45 && textViewWidth + deltaX <= 0.8*viewWidth) ? true : false + } + + // MARK - Bubble + + func setBubble() { + //Margins to Bubble + let marginLeft:CGFloat = 5 + let marginRight:CGFloat = 2 + + //Bubble positions + var bubbleX:CGFloat + let bubbleY:CGFloat = 0 + var bubbleWidth:CGFloat + let bubbleHeight:CGFloat = min(self.textView.frame.size.height + 8, self.timeLabel.frame.origin.y + self.timeLabel.frame.size.height + 6) + + if (self.message.sender == .Myself) { + + bubbleX = min(self.textView.frame.origin.x - marginLeft, self.timeLabel.frame.origin.x - 2*marginLeft) + + self.bubbleImage.image = self.imageNamed("bubbleMine").stretchableImageWithLeftCapWidth(15, topCapHeight:14) + + + bubbleWidth = self.contentView.frame.size.width - bubbleX - marginRight + bubbleWidth -= self.isStatusFailedCase() ? self.failDelta() : 0 + } + else + { + bubbleX = marginRight; + + self.bubbleImage.image = self.imageNamed("bubbleSomeone").stretchableImageWithLeftCapWidth(21, topCapHeight:14) + + bubbleWidth = max(self.textView.frame.origin.x + self.textView.frame.size.width + marginLeft, + self.timeLabel.frame.origin.x + self.timeLabel.frame.size.width + 2*marginLeft) + } + + self.bubbleImage.frame = CGRectMake(bubbleX, bubbleY, bubbleWidth, bubbleHeight) + self.bubbleImage.autoresizingMask = self.textView.autoresizingMask + } + + // MARK - StatusIcon + + func addStatusIcon() { + let timeFrame = self.timeLabel.frame + var statusFrame = CGRectMake(0, 0, 15, 14) + statusFrame.origin.x = timeFrame.origin.x + timeFrame.size.width + 5 + statusFrame.origin.y = timeFrame.origin.y + self.statusIcon.frame = statusFrame + self.statusIcon.contentMode = .Left + self.statusIcon.autoresizingMask = self.textView.autoresizingMask + } + func setStatusIcon() { + switch self.message.status { + case .Sending: + self.statusIcon.image = self.imageNamed("status_sending") + case .Sent: + self.statusIcon.image = self.imageNamed("status_sent") + case .Received: + self.statusIcon.image = self.imageNamed("status_notified") + case .Read: + self.statusIcon.image = self.imageNamed("status_read") + case .Failed: + self.statusIcon.image = nil + } + + self.statusIcon.hidden = self.message.sender == .Someone + } + + // MARK - Failed Case + + // + // This delta is how much TextView + // and Bubble should shit left + // + func failDelta() -> CGFloat { + return 60 + } + + func isStatusFailedCase() -> Bool { + return self.message.status == .Failed + } + + func setFailedButton() { + let bSize:CGFloat = 22; + let frame = CGRectMake(self.contentView.frame.size.width - bSize - self.failDelta()/2 + 5, + (self.contentView.frame.size.height - bSize)/2, + bSize, + bSize); + + self.resendButton.frame = frame + self.resendButton.hidden = !self.isStatusFailedCase() + self.resendButton.setImage(self.imageNamed("status_failed"), forState:.Normal) + } + + // MARK - UIImage Helper + + func imageNamed(imageName:String) -> UIImage { + return UIImage(named:imageName)! + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/MessageController.swift b/Whatsapp-Swift/Whatsapp-Swift/MessageController.swift new file mode 100644 index 0000000..ae7694c --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/MessageController.swift @@ -0,0 +1,205 @@ +// +// MessageController.swift +// Whatsapp +// +// Created by Rafael Castro on 7/23/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +class MessageController:UIViewController, InputbarDelegate, MessageGatewayDelegate, UITableViewDataSource, UITableViewDelegate { + + @IBOutlet weak var tableView:UITableView! + @IBOutlet weak var inputbar:Inputbar! + + var chat:Chat! { + didSet { + self.title = self.chat.contact.name + } + } + + private var tableArray:TableArray! + private var gateway:MessageGateway! + + override func viewDidLoad() { + super.viewDidLoad() + + self.setInputbar() + self.setTableView() + self.setGateway() + } + + override func viewDidAppear(animated:Bool) { + super.viewDidAppear(animated) + + self.view.keyboardTriggerOffset = inputbar.frame.size.height + self.view.addKeyboardPanningWithActionHandler() {[unowned self](keyboardFrameInView:CGRect, opening:Bool, closing:Bool) in + /* + self.view.removeKeyboardControl() + */ + + var toolBarFrame = self.inputbar.frame + toolBarFrame.origin.y = keyboardFrameInView.origin.y - toolBarFrame.size.height + self.inputbar.frame = toolBarFrame + + var tableViewFrame = self.tableView.frame + tableViewFrame.size.height = toolBarFrame.origin.y - 64 + self.tableView.frame = tableViewFrame + + self.tableViewScrollToBottomAnimated(false) + } + } + + override func viewDidDisappear(animated:Bool) { + super.viewDidDisappear(animated) + self.view.endEditing(true) + self.view.removeKeyboardControl() + self.gateway.dismiss() + } + + override func viewWillDisappear(animated:Bool) { + self.chat.lastMessage = self.tableArray!.lastObject() + } + + // MARK - + + func setInputbar() { + self.inputbar.placeholder = nil + self.inputbar.inputDelegate = self + self.inputbar.leftButtonImage = UIImage(named:"share") + self.inputbar.rightButtonText = "Send" + self.inputbar.rightButtonTextColor = UIColor(red:0, green:124/255, blue:1, alpha:1) + } + + func setTableView() { + self.tableArray = TableArray() + self.tableView.delegate = self + self.tableView.dataSource = self + self.tableView.tableFooterView = UIView(frame:CGRectMake(0, 0, self.view.frame.size.width, 10)) + self.tableView.separatorStyle = .None + self.tableView.backgroundColor = UIColor.clearColor() + + self.tableView.registerClass(MessageCell.self, forCellReuseIdentifier:"MessageCell") + } + + func setGateway() { + self.gateway = MessageGateway.sharedInstance + self.gateway.delegate = self + self.gateway.chat = self.chat + self.gateway.loadOldMessages() + } + + // MARK - Actions + + @IBAction func userDidTapScreen(sender:AnyObject) { + self.inputbar.inputResignFirstResponder() + } + + // MARK - TableViewDataSource + + func numberOfSectionsInTableView(tableView: UITableView) -> Int { + return self.tableArray.numberOfSections + } + + func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return self.tableArray.numberOfMessagesInSection(section) + } + + func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("MessageCell") as! MessageCell + cell.message = self.tableArray.objectAtIndexPath(indexPath) + return cell; + } + + // MARK - UITableViewDelegate + + func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { + let message = self.tableArray.objectAtIndexPath(indexPath) + return message.height + } + + func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + return 40 + } + + func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + return self.tableArray.titleForSection(section) + } + + func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + let frame = CGRectMake(0, 0, tableView.frame.size.width, 40) + + let view = UIView(frame:frame) + view.backgroundColor = UIColor.clearColor() + view.autoresizingMask = .FlexibleWidth + + let label = UILabel() + label.text = self.tableView(tableView, titleForHeaderInSection: section) + label.textAlignment = .Center + label.font = UIFont(name:"Helvetica", size:20) + label.sizeToFit() + label.center = view.center + label.font = UIFont(name:"Helvetica", size:13) + label.backgroundColor = UIColor(red:207/255, green:220/255, blue:252/255, alpha:1) + label.layer.cornerRadius = 10 + label.layer.masksToBounds = true + label.autoresizingMask = .None + view.addSubview(label) + + return view + } + + func tableViewScrollToBottomAnimated(animated:Bool) { + let numberOfSections = self.tableArray.numberOfSections + let numberOfRows = self.tableArray.numberOfMessagesInSection(numberOfSections-1) + if numberOfRows > 0 { + self.tableView.scrollToRowAtIndexPath(self.tableArray.indexPathForLastMessage(), atScrollPosition:.Bottom, animated:animated) + } + } + + // MARK - InputbarDelegate + + func inputbarDidPressRightButton(inputbar:Inputbar) { + let message = Message() + message.text = inputbar.text + message.date = NSDate() + message.chatId = self.chat.identifier + + //Store Message in memory + self.tableArray.addObject(message) + + //Insert Message in UI + let indexPath = self.tableArray.indexPathForMessage(message) + self.tableView.beginUpdates() + if self.tableArray.numberOfMessagesInSection(indexPath.section) == 1 { + self.tableView.insertSections(NSIndexSet(index:indexPath.section), withRowAnimation:.None) + } + self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation:.Bottom) + self.tableView.endUpdates() + + self.tableView.scrollToRowAtIndexPath(self.tableArray.indexPathForLastMessage(), atScrollPosition:.Bottom, animated:true) + + //Send message to server + self.gateway.sendMessage(message) + } + func inputbarDidPressLeftButton(inputbar:Inputbar) { + let alertView = UIAlertView(title: "Left Button Pressed", message: nil, delegate: nil, cancelButtonTitle: "OK") + alertView.show() + } + func inputbarDidChangeHeight(newHeight:CGFloat) { + //Update DAKeyboardControl + self.view.keyboardTriggerOffset = newHeight + } + + // MARK - MessageGatewayDelegate + + func gatewayDidUpdateStatusForMessage(message:Message) { + let indexPath = self.tableArray.indexPathForMessage(message) + let cell = self.tableView.cellForRowAtIndexPath(indexPath) as! MessageCell + cell.updateMessageStatus() + } + + func gatewayDidReceiveMessages(array:[Message]) { + self.tableArray.addObjectsFromArray(array) + self.tableView.reloadData() + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/MessageGateway.swift b/Whatsapp-Swift/Whatsapp-Swift/MessageGateway.swift new file mode 100644 index 0000000..b105218 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/MessageGateway.swift @@ -0,0 +1,113 @@ +// +// MessageGateway.swift +// Whatsapp +// +// Created by Rafael Castro on 7/4/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +protocol MessageGatewayDelegate:NSObjectProtocol { + func gatewayDidUpdateStatusForMessage(message:Message) + func gatewayDidReceiveMessages(array:[Message]) +} + + +class MessageGateway:NSObject { + var delegate:MessageGatewayDelegate! + var chat:Chat! + var messagesToSend:NSMutableArray = NSMutableArray() + + func loadOldMessages() { + let array = LocalStorage.sharedInstance.queryMessagesForChatId(self.chat.identifier) + if array == nil { + return + } + + self.delegate?.gatewayDidReceiveMessages(array!) + + let unreadMessages = self.queryUnreadMessagesInArray(array!) + self.updateStatusToReadInArray(unreadMessages) + } + + func updateStatusToReadInArray(unreadMessages:[Message]) { + var readIds = [String]() + for message in unreadMessages { + message.status = .Read + readIds.append(message.identifier) + } + self.chat.numberOfUnreadMessages = 0 + self.sendReadStatusToMessages(readIds) + } + + func queryUnreadMessagesInArray(array:[Message]) -> [Message] { + return array.filter({(message:Message) -> Bool in + return message.status == .Received + }) + } + + func news() { + + } + func dismiss() { + self.delegate = nil + } + + func fakeMessageUpdate(message:Message) { + self.performSelector("updateMessageStatus:", withObject:message, afterDelay:2) + } + + func updateMessageStatus(message:Message) { + + switch message.status { + case .Sending: + message.status = .Failed + case .Failed: + message.status = .Sent + case .Sent: + message.status = .Received + case .Received: + message.status = .Read + default: break + } + + if self.delegate != nil && self.delegate.respondsToSelector("gatewayDidUpdateStatusForMessage:") { + self.delegate!.gatewayDidUpdateStatusForMessage(message) + } + + // + // Remove this when connect to your server + // fake update message + // + if message.status != .Read { + self.fakeMessageUpdate(message) + } + } + + // MARK - Exchange data with API + + func sendMessage(message:Message) { + // + // Add here your code to send message to your server + // When you receive the response, you should update message status + // Now I'm just faking update message + // + LocalStorage.sharedInstance.storeMessage(message) + self.fakeMessageUpdate(message) + //TODO + } + func sendReadStatusToMessages(messageIds:[String]) { + if messageIds.count == 0 { + return + } + //TODO + } + func sendReceivedStatusToMessages(messageIds:[String]) { + if messageIds.count == 0 { + return + } + //TODO + } + + static let sharedInstance = MessageGateway() + private override init() {} +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-Swift/TableArray.swift b/Whatsapp-Swift/Whatsapp-Swift/TableArray.swift new file mode 100644 index 0000000..38765ed --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-Swift/TableArray.swift @@ -0,0 +1,162 @@ +// +// MessageArray.swift +// Whatsapp +// +// Created by Rafael Castro on 6/18/15. / Swift Version by Breno Oliveira on 02/18/16. +// Copyright (c) 2015 HummingBird. All rights reserved. +// + +import UIKit + +class TableArray { + + var mapTitleToMessages:[String:[Message]] = [String:[Message]]() + var orderedTitles:[String] = [String]() + var numberOfSections = 0 + var numberOfMessages = 0 + var formatter:NSDateFormatter! + + init() { + self.formatter = NSDateFormatter() + self.formatter.timeStyle = .NoStyle + self.formatter.dateStyle = .ShortStyle + self.formatter.doesRelativeDateFormatting = false + } + + func addObject(message:Message) { + return self.addMessage(message) + } + + func addObjectsFromArray(messages:[Message]) { + for message in messages { + self.addMessage(message) + } + } + func removeObject(message:Message) { + self.removeMessage(message) + } + func removeObjectsInArray(messages:[Message]) { + for message in messages { + self.removeMessage(message) + } + } + func removeAllObjects() { + self.mapTitleToMessages.removeAll() + self.orderedTitles.removeAll() + } + + func numberOfMessagesInSection(section:Int) -> Int { + if self.orderedTitles.count == 0 { + return 0 + } + let key = self.orderedTitles[section] + let array = self.mapTitleToMessages[key] + + return array!.count + } + + func titleForSection(section:Int) -> String { + let formatter = self.formatter.copy() as! NSDateFormatter + let key = self.orderedTitles[section] + let date = formatter.dateFromString(key) + + formatter.doesRelativeDateFormatting = true + return formatter.stringFromDate(date!) + } + + func objectAtIndexPath(indexPath:NSIndexPath) -> Message { + let key = self.orderedTitles[indexPath.section] + let array = self.mapTitleToMessages[key] + + return array![indexPath.row] + } + + func lastObject() -> Message { + let indexPath = self.indexPathForLastMessage() + + return self.objectAtIndexPath(indexPath) + } + + func indexPathForLastMessage() -> NSIndexPath { + let lastSection = self.numberOfSections-1 + let numberOfMessages = self.numberOfMessagesInSection(lastSection) + + return NSIndexPath(forRow:numberOfMessages-1, inSection:lastSection) + } + + func indexPathForMessage(message:Message) -> NSIndexPath { + let key = self.keyForMessage(message) + let section = self.orderedTitles.indexOf(key) + let row = self.mapTitleToMessages[key]!.indexOf({ (el) -> Bool in + return el == message + }) + + return NSIndexPath(forRow:row!, inSection:section!) + } + + // MARK - Helpers + + func addMessage(message:Message) { + let key = self.keyForMessage(message) + var array = self.mapTitleToMessages[key] + + if array == nil { + self.numberOfSections += 1; + array = [Message]() + } + + array?.append(message) + + + let sortedArray = array?.sort({ (m1, m2) -> Bool in + return m1.date == m2.date + }) + + self.mapTitleToMessages[key] = sortedArray + self.cacheTitles() + + self.numberOfMessages += 1 + } + func removeMessage(message:Message) { + let key = self.keyForMessage(message) + var array = self.mapTitleToMessages[key] + if array != nil { + + for (index, msg) in array!.enumerate() { + if msg == message { + array!.removeAtIndex(index) + return + } + } + + if array!.count == 0 { + self.numberOfSections -= 1 + self.mapTitleToMessages.removeValueForKey(key) + self.cacheTitles() + } + else { + self.mapTitleToMessages[key] = array + } + + self.numberOfMessages -= 1 + } + } + + func cacheTitles() { + let array = self.mapTitleToMessages.keys + + + let orderedArray = array.sort { (dateString1, dateString2) -> Bool in + let d1 = self.formatter.dateFromString(dateString1) + let d2 = self.formatter.dateFromString(dateString2) + + return d1 == d2 + } + + self.orderedTitles = orderedArray + } + + func keyForMessage(message:Message) -> String { + return self.formatter.stringFromDate(message.date) + } +} \ No newline at end of file diff --git a/Whatsapp-Swift/Whatsapp-SwiftTests/Info.plist b/Whatsapp-Swift/Whatsapp-SwiftTests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-SwiftTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Whatsapp-Swift/Whatsapp-SwiftTests/Whatsapp_SwiftTests.swift b/Whatsapp-Swift/Whatsapp-SwiftTests/Whatsapp_SwiftTests.swift new file mode 100644 index 0000000..169f884 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-SwiftTests/Whatsapp_SwiftTests.swift @@ -0,0 +1,36 @@ +// +// Whatsapp_SwiftTests.swift +// Whatsapp-SwiftTests +// +// Created by Breno Lima on 2/18/16. +// Copyright © 2016 Breno Lima. All rights reserved. +// + +import XCTest +@testable import Whatsapp_Swift + +class Whatsapp_SwiftTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Whatsapp-Swift/Whatsapp-SwiftUITests/Info.plist b/Whatsapp-Swift/Whatsapp-SwiftUITests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-SwiftUITests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Whatsapp-Swift/Whatsapp-SwiftUITests/Whatsapp_SwiftUITests.swift b/Whatsapp-Swift/Whatsapp-SwiftUITests/Whatsapp_SwiftUITests.swift new file mode 100644 index 0000000..96b01f9 --- /dev/null +++ b/Whatsapp-Swift/Whatsapp-SwiftUITests/Whatsapp_SwiftUITests.swift @@ -0,0 +1,36 @@ +// +// Whatsapp_SwiftUITests.swift +// Whatsapp-SwiftUITests +// +// Created by Breno Lima on 2/18/16. +// Copyright © 2016 Breno Lima. All rights reserved. +// + +import XCTest + +class Whatsapp_SwiftUITests: XCTestCase { + + override func setUp() { + super.setUp() + + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +}