Manos Chorianopoulos

CouponViewController part1

......@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */; };
1E64E1832DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1E64E1822DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib */; };
1E64E1842DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E64E1812DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift */; };
1E917CD62DDF64B2002221D8 /* MyRewardsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1E917CD52DDF64B2002221D8 /* MyRewardsViewController.xib */; };
......@@ -150,6 +151,7 @@
/* Begin PBXFileReference section */
1E108A9728A3FA9B0008B8E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyableLabel.swift; sourceTree = "<group>"; };
1E64E1812DE48E0600543217 /* MyRewardsOfferCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsOfferCollectionViewCell.swift; sourceTree = "<group>"; };
1E64E1822DE48E0600543217 /* MyRewardsOfferCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsOfferCollectionViewCell.xib; sourceTree = "<group>"; };
1E917CD42DDF64B2002221D8 /* MyRewardsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsViewController.swift; sourceTree = "<group>"; };
......@@ -462,6 +464,7 @@
E6A77850282933340045BBA8 /* SwiftWarplyFramework */ = {
isa = PBXGroup;
children = (
1E4C4CFA2DE6014500279AAD /* CopyableLabel.swift */,
1E108A9728A3FA9B0008B8E7 /* Info.plist */,
1EA8E5B42DDF315600CD3418 /* screens */,
1EA8E5BC2DDF34FB00CD3418 /* cells */,
......@@ -926,6 +929,7 @@
1E917CD72DDF64B2002221D8 /* MyRewardsViewController.swift in Sources */,
E6A77915282933E60045BBA8 /* WLUtils.m in Sources */,
1E917CDC2DDF68C7002221D8 /* CouponViewController.swift in Sources */,
1E4C4CFB2DE6014500279AAD /* CopyableLabel.swift in Sources */,
E6A77947282933E70045BBA8 /* FMDatabaseQueue.m in Sources */,
E6A77922282933E60045BBA8 /* NSData+SSToolkitAdditions.m in Sources */,
E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */,
......
//
// CopyableLabel.swift
// SwiftWarplyFramework
//
// Created by Manos Chorianopoulos on 26/10/22.
//
import Foundation
import UIKit
class CopyableLabel: UILabel {
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
sharedInit()
}
func sharedInit() {
isUserInteractionEnabled = true
addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(showMenu(sender:))))
}
@objc
func showMenu(sender: AnyObject?) {
becomeFirstResponder()
let menu = UIMenuController.shared
if !menu.isMenuVisible {
menu.setTargetRect(bounds, in: self)
menu.setMenuVisible(true, animated: true)
}
}
override var canBecomeFirstResponder: Bool {
return true
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(UIResponderStandardEditActions.copy(_:)) {
return true
}
return false
}
override func copy(_ sender: Any?) {
let board = UIPasteboard.general
if var textToCopy = text {
if (textToCopy.contains(", ")) {
textToCopy = textToCopy.replacingOccurrences(of: ", ", with: "")
}
print(textToCopy)
board.string = textToCopy
}
// board.string = text
let menu = UIMenuController.shared
menu.setMenuVisible(false, animated: true)
}
}
......@@ -8,13 +8,125 @@
import UIKit
@objc public class CouponViewController: UIViewController {
@IBOutlet weak var couponImage: UIImageView!
@IBOutlet weak var infoView: UIView!
@IBOutlet weak var infoImage: UIImageView!
@IBOutlet weak var infoLabel: UILabel!
@IBOutlet weak var favoriteImage: UIImageView!
@IBOutlet weak var shareImage: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var subtitleLabel: UILabel!
@IBOutlet weak var expirationLabel: UILabel!
@IBOutlet weak var detailsLabel: UILabel!
// MARK: - IBOutlets for Coupon Code Section
@IBOutlet weak var couponCodeContainerView: UIView!
@IBOutlet weak var couponCodeHeaderView: UIView!
@IBOutlet weak var couponCodeContentView: UIView!
// Header elements
@IBOutlet weak var couponCodeTitleLabel: UILabel!
@IBOutlet weak var couponCodeArrowImage: UIImageView!
@IBOutlet weak var couponCodeButton: UIButton!
// Content elements (initially hidden)
@IBOutlet weak var couponCodeValueLabel: CopyableLabel!
@IBOutlet weak var copyButtonImage: UIImageView!
@IBOutlet weak var copyButton: UIButton!
// Constraints for animation
@IBOutlet weak var couponCodeContentHeightConstraint: NSLayoutConstraint!
// MARK: - IBOutlets for Coupon Code Section
@IBOutlet weak var couponQRContainerView: UIView!
@IBOutlet weak var couponQRHeaderView: UIView!
@IBOutlet weak var couponQRContentView: UIView!
// Header elements
@IBOutlet weak var couponQRTitleLabel: UILabel!
@IBOutlet weak var couponQRArrowImage: UIImageView!
@IBOutlet weak var couponQRButton: UIButton!
// Content elements (initially hidden)
@IBOutlet weak var couponQRImage: UIImageView!
// Constraints for animation
@IBOutlet weak var couponQRContentHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var termsButton: UIButton!
@IBOutlet weak var termsLabel: UILabel!
@IBOutlet weak var termsLabelHeight: NSLayoutConstraint!
@IBOutlet weak var mapButton: UIButton!
@IBOutlet weak var websiteButton: UIButton!
var coupon: OfferModel?
private var isDetailsExpanded = false
private var isCouponCodeExpanded = false
private var isCouponBarcodeExpanded = false
private var isTermsExpanded = false
public override func viewDidLoad() {
super.viewDidLoad()
// Show navigation bar for this screen (with back button)
self.navigationController?.setNavigationBarHidden(false, animated: false)
setBackButton()
setNavigationTitle("Προσφορά")
infoView.backgroundColor = UIColor(rgb: 0xFFFFFF)
infoView.layer.cornerRadius = 10.0
infoView.layer.borderWidth = 1.0
infoView.layer.borderColor = UIColor(red: 0.01, green: 0.05, blue: 0.11, alpha: 0.19).cgColor
infoImage.image = UIImage(named: "info", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
shareImage.image = UIImage(named: "share", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
couponCodeArrowImage.image = UIImage(named: "arrow_down", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
copyButtonImage.image = UIImage(named: "copy", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
couponQRArrowImage.image = UIImage(named: "arrow_down", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
couponQRImage.image = UIImage(named: "barcode", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
infoLabel.font = UIFont(name: "PingLCG-Regular", size: 13)
infoLabel.textColor = UIColor(rgb: 0x020E1C)
infoLabel.text = "Περισσότερα"
setupExpandableDetails()
couponCodeContainerView.backgroundColor = UIColor(rgb: 0xFFFFFF)
couponCodeContainerView.layer.cornerRadius = 8.0
couponQRContainerView.backgroundColor = UIColor(rgb: 0xFFFFFF)
couponQRContainerView.layer.cornerRadius = 8.0
termsButton.titleLabel?.font = UIFont(name: "PingLCG-Bold", size: 16)
// termsButton.imageView?.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.5)
termsButton.setTitle("Όροι Χρήσης", for: .normal)
termsButton.setTitleColor(UIColor(rgb: 0x020E1C), for: .normal)
termsButton.setImage(UIImage(named: "arrow_down.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
termsButton.semanticContentAttribute = .forceRightToLeft
termsButton.tintColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 1.00)
termsButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 0);
termsButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5);
termsButton.imageView?.layer.transform = CATransform3DMakeScale(0.8, 0.8, 0.8)
termsLabelHeight.constant = 0
mapButton.titleLabel?.font = UIFont(name: "PingLCG-Bold", size: 16)
mapButton.setTitle("Όροι Χρήσης", for: .normal)
mapButton.setTitleColor(UIColor(rgb: 0xFFFFFF), for: .normal)
mapButton.layer.cornerRadius = 4.0
websiteButton.titleLabel?.font = UIFont(name: "PingLCG-Bold", size: 16)
websiteButton.setTitle("Όροι Χρήσης", for: .normal)
websiteButton.setTitleColor(UIColor(rgb: 0x000F1E), for: .normal)
websiteButton.backgroundColor = .clear
websiteButton.layer.borderWidth = 1
websiteButton.layer.borderColor = UIColor(rgb: 0x000F1E).cgColor
websiteButton.layer.cornerRadius = 4.0
// Configure the view with offer data
if let offer = coupon {
......@@ -23,7 +135,59 @@ import UIKit
}
private func setupUI(with coupon: OfferModel) {
// Set up the UI based on the offer data
couponImage.image = UIImage(named: coupon.bannerImage, in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
favoriteImage.image = UIImage(named: coupon.isFavorite ? "favorite2_filled" : "favorite2_empty", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
titleLabel.font = UIFont(name: "PingLCG-Bold", size: 24)
titleLabel.textColor = UIColor(rgb: 0xF2709D)
titleLabel.text = coupon.title
subtitleLabel.font = UIFont(name: "PingLCG-Regular", size: 18)
subtitleLabel.textColor = UIColor(rgb: 0x020E1C)
subtitleLabel.text = coupon.description
expirationLabel.font = UIFont(name: "PingLCG-Regular", size: 18)
expirationLabel.textColor = UIColor(rgb: 0x020E1C)
// expirationLabel.text = ("Η προσφορά ισχύει " + coupon.expirationDate)
expirationLabel.text = "Η προσφορά ισχύει έως 30-09-2025"
couponCodeTitleLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
couponCodeTitleLabel.textColor = UIColor(rgb: 0x000F1E)
couponCodeTitleLabel.text = "Κωδικός Κουπονιού"
couponCodeTitleLabel.font = UIFont(name: "PingLCG-Bold", size: 24)
couponCodeTitleLabel.textColor = UIColor(rgb: 0x000F1E)
couponCodeTitleLabel.text = "coupons_ab"
couponCodeTitleLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
couponCodeTitleLabel.textColor = UIColor(rgb: 0x000F1E)
couponCodeTitleLabel.text = "QR Κουπονιού"
termsLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
termsLabel.textColor = UIColor(rgb: 0x020E1C)
termsLabel.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed ex euismod, feugiat justo eu, faucibus urna. Nulla sodales euismod arcu volutpat finibus. Etiam id urna at justo facilisis tempor. Morbi dignissim erat vitae magna sodales dignissim ac in mauris. Mauris tempor convallis tortor, interdum hendrerit turpis eleifend at. Praesent."
}
private func setupExpandableDetails() {
let fullText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed ex euismod, feugiat justo eu, faucibus urna. Nulla sodales euismod arcu volutpat finibus. Etiam id urna at justo facilisis tempor. Morbi dignissim erat vitae magna sodales dignissim ac in mauris. Mauris tempor convallis tortor, interdum hendrerit turpis eleifend at. Praesent."
detailsLabel.text = fullText
detailsLabel.numberOfLines = 3
detailsLabel.font = UIFont(name: "PingLCG-Regular", size: 18)
detailsLabel.textColor = UIColor(rgb: 0x020E1C)
// Add tap gesture
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(toggleDetailsExpansion))
detailsLabel.isUserInteractionEnabled = true
detailsLabel.addGestureRecognizer(tapGesture)
}
@objc private func toggleDetailsExpansion() {
isDetailsExpanded.toggle()
UIView.animate(withDuration: 0.3) {
self.detailsLabel.numberOfLines = self.isDetailsExpanded ? 0 : 3
self.view.layoutIfNeeded()
}
}
}
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CouponViewController" customModuleProvider="target">
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CouponViewController" customModule="SwiftWarplyFramework" customModuleProvider="target">
<connections>
<outlet property="copyButton" destination="uPp-hJ-U97" id="99c-QK-4uC"/>
<outlet property="copyButtonImage" destination="AXc-Yh-5Ek" id="4VG-c1-zbJ"/>
<outlet property="couponCodeArrowImage" destination="YoJ-w2-mm9" id="oQm-Mm-FL8"/>
<outlet property="couponCodeButton" destination="5sx-2G-cCM" id="vuv-NX-y5I"/>
<outlet property="couponCodeContainerView" destination="ElJ-Te-N4M" id="84s-Ab-iAG"/>
<outlet property="couponCodeContentHeightConstraint" destination="ky8-Xs-cjh" id="P1b-xY-vde"/>
<outlet property="couponCodeContentView" destination="wT1-HY-mg9" id="PEK-wT-l4v"/>
<outlet property="couponCodeHeaderView" destination="cTO-BG-Gzi" id="6Xm-p8-F13"/>
<outlet property="couponCodeTitleLabel" destination="lEF-bh-hOi" id="dVH-Zs-Rbg"/>
<outlet property="couponCodeValueLabel" destination="2Fn-5d-j8v" id="Dlf-7P-qlY"/>
<outlet property="couponImage" destination="Xiw-td-OMd" id="OxY-cx-CHa"/>
<outlet property="couponQRArrowImage" destination="OXW-Jx-8wp" id="ijU-6O-hcN"/>
<outlet property="couponQRButton" destination="xd4-3b-eOl" id="ElE-cn-nPX"/>
<outlet property="couponQRContainerView" destination="Cwz-uh-Zn5" id="igH-cb-FMa"/>
<outlet property="couponQRContentHeightConstraint" destination="odW-jh-UiA" id="LfK-Hl-1Ks"/>
<outlet property="couponQRContentView" destination="xqU-7k-Vxg" id="t1n-V2-Tv3"/>
<outlet property="couponQRHeaderView" destination="eEy-8l-te2" id="0U3-5V-9BB"/>
<outlet property="couponQRImage" destination="Z9w-Ue-Lij" id="cIj-vB-EMz"/>
<outlet property="couponQRTitleLabel" destination="NZj-6a-KB7" id="Yr1-32-jxM"/>
<outlet property="detailsLabel" destination="X7C-0H-IhU" id="fvt-P2-urI"/>
<outlet property="expirationLabel" destination="HLR-Nk-7Gm" id="sRz-Ot-p9b"/>
<outlet property="favoriteImage" destination="1Kx-s2-p1l" id="kMd-LA-04k"/>
<outlet property="infoImage" destination="tFA-1H-T5S" id="Pat-1s-nbE"/>
<outlet property="infoLabel" destination="K34-LM-bC1" id="wIV-dh-aQs"/>
<outlet property="infoView" destination="89U-JU-Imv" id="w8A-vj-7Lb"/>
<outlet property="mapButton" destination="j1U-rV-0FP" id="K5C-V5-ejo"/>
<outlet property="shareImage" destination="WjF-6P-8Wn" id="f7E-u8-Efc"/>
<outlet property="subtitleLabel" destination="VJr-Mc-WMf" id="D5i-m9-5pG"/>
<outlet property="termsButton" destination="Id4-Xw-01i" id="K7V-uP-07v"/>
<outlet property="termsLabel" destination="Ak8-Tc-k8X" id="lGl-Bm-k5q"/>
<outlet property="termsLabelHeight" destination="ZA1-TX-m9Y" id="zDj-wU-mre"/>
<outlet property="titleLabel" destination="u54-xs-f5a" id="jG6-28-Q0R"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
<outlet property="websiteButton" destination="t8z-s1-rIA" id="qZa-ex-J6Y"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XaT-fU-eNh" userLabel="Main View">
<rect key="frame" x="0.0" y="59" width="393" height="793"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YpC-uS-mhw">
<rect key="frame" x="0.0" y="0.0" width="393" height="793"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qrm-40-JLT" userLabel="Scroll Content View">
<rect key="frame" x="0.0" y="0.0" width="393" height="1225.6666666666667"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Xiw-td-OMd" userLabel="Coupon Image View">
<rect key="frame" x="0.0" y="0.0" width="393" height="211"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="211" id="fMe-eO-hFu"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="89U-JU-Imv" userLabel="Info View">
<rect key="frame" x="248" y="17" width="129" height="20.666666666666671"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="tFA-1H-T5S" userLabel="Info Image View">
<rect key="frame" x="1" y="3.6666666666666723" width="13.666666666666666" height="13.333333333333336"/>
<constraints>
<constraint firstAttribute="height" constant="13.5" id="uQt-vY-kbk"/>
<constraint firstAttribute="width" constant="13.5" id="yzR-99-6Vp"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Περισσότερα" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="K34-LM-bC1" userLabel="Info Label">
<rect key="frame" x="19" y="-0.3333333333333286" width="100" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="tFA-1H-T5S" secondAttribute="bottom" constant="3.5" id="2LU-6d-9tG"/>
<constraint firstAttribute="trailing" secondItem="K34-LM-bC1" secondAttribute="trailing" constant="10" id="7h2-jE-9iR"/>
<constraint firstItem="K34-LM-bC1" firstAttribute="leading" secondItem="tFA-1H-T5S" secondAttribute="trailing" constant="4.5" id="9BF-QB-VRC"/>
<constraint firstItem="K34-LM-bC1" firstAttribute="centerY" secondItem="89U-JU-Imv" secondAttribute="centerY" id="AJ7-80-sbu"/>
<constraint firstItem="tFA-1H-T5S" firstAttribute="top" secondItem="89U-JU-Imv" secondAttribute="top" constant="3.5" id="Nyk-Ax-H7g"/>
<constraint firstItem="tFA-1H-T5S" firstAttribute="leading" secondItem="89U-JU-Imv" secondAttribute="leading" constant="1" id="xHt-ua-5rb"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u54-xs-f5a" userLabel="Title Label">
<rect key="frame" x="24" y="234" width="249" height="20.333333333333343"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="1Kx-s2-p1l" userLabel="Favorite Image View">
<rect key="frame" x="284" y="228" width="40" height="40"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="cMn-6O-CHy"/>
<constraint firstAttribute="height" constant="40" id="wxC-Bz-5Ya"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="WjF-6P-8Wn" userLabel="Share Image View">
<rect key="frame" x="335" y="228" width="40" height="40"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="Hb1-K6-gef"/>
<constraint firstAttribute="width" constant="40" id="fIZ-xu-SFW"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VJr-Mc-WMf" userLabel="Subtitle Label">
<rect key="frame" x="24" y="254.33333333333334" width="345" height="20.333333333333343"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HLR-Nk-7Gm" userLabel="Expiration Label">
<rect key="frame" x="24" y="288.66666666666669" width="345" height="20.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="X7C-0H-IhU" userLabel="Details Label">
<rect key="frame" x="24" y="329" width="345" height="20.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ElJ-Te-N4M" userLabel="CouponCodeContainerView">
<rect key="frame" x="24" y="383.33333333333331" width="345" height="182.99999999999994"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cTO-BG-Gzi" userLabel="CouponCodeHeaderView">
<rect key="frame" x="0.0" y="0.0" width="345" height="55"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lEF-bh-hOi" userLabel="CouponCodeTitleLabel">
<rect key="frame" x="17" y="17" width="277" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="YoJ-w2-mm9" userLabel="CouponCodeArrowImage">
<rect key="frame" x="311" y="21" width="13" height="13"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="627-N9-Nwq"/>
<constraint firstAttribute="height" constant="13" id="MqD-PS-KVR"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5sx-2G-cCM" userLabel="CouponCodeButton">
<rect key="frame" x="0.0" y="0.0" width="345" height="55"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button">
<color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</buttonConfiguration>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="5sx-2G-cCM" secondAttribute="bottom" id="5b7-2R-dAJ"/>
<constraint firstAttribute="trailing" secondItem="5sx-2G-cCM" secondAttribute="trailing" id="CI1-1e-hkQ"/>
<constraint firstItem="lEF-bh-hOi" firstAttribute="leading" secondItem="cTO-BG-Gzi" secondAttribute="leading" constant="17" id="Gld-ir-1gP"/>
<constraint firstItem="5sx-2G-cCM" firstAttribute="top" secondItem="cTO-BG-Gzi" secondAttribute="top" id="MVC-wv-Mpz"/>
<constraint firstItem="YoJ-w2-mm9" firstAttribute="centerY" secondItem="cTO-BG-Gzi" secondAttribute="centerY" id="UcW-oq-76N"/>
<constraint firstAttribute="bottom" secondItem="lEF-bh-hOi" secondAttribute="bottom" constant="17" id="WvU-KU-XPP"/>
<constraint firstItem="lEF-bh-hOi" firstAttribute="top" secondItem="cTO-BG-Gzi" secondAttribute="top" constant="17" id="a9J-3H-Fxg"/>
<constraint firstItem="5sx-2G-cCM" firstAttribute="leading" secondItem="cTO-BG-Gzi" secondAttribute="leading" id="eSr-hy-hgk"/>
<constraint firstAttribute="trailing" secondItem="YoJ-w2-mm9" secondAttribute="trailing" constant="21" id="fle-ul-e4O"/>
<constraint firstItem="YoJ-w2-mm9" firstAttribute="leading" secondItem="lEF-bh-hOi" secondAttribute="trailing" constant="17" id="wG0-2i-Ums"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wT1-HY-mg9" userLabel="CouponCodeContentView">
<rect key="frame" x="0.0" y="55" width="345" height="128"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Fn-5d-j8v" userLabel="CouponCodeValueLabel" customClass="CopyableLabel">
<rect key="frame" x="16.999999999999996" y="26.000000000000057" width="56.666666666666657" height="76"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="AXc-Yh-5Ek" userLabel="CopyButtonImage">
<rect key="frame" x="84.666666666666671" y="47.666666666666686" width="33" height="33"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="33" id="7ds-Ao-fBn"/>
<constraint firstAttribute="width" constant="33" id="CQY-h3-dmj"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uPp-hJ-U97" userLabel="CouponCopyButton">
<rect key="frame" x="84.666666666666671" y="47.666666666666686" width="33" height="33"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button">
<color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</buttonConfiguration>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="uPp-hJ-U97" firstAttribute="leading" secondItem="AXc-Yh-5Ek" secondAttribute="leading" id="4AX-eb-8Eo"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="AXc-Yh-5Ek" secondAttribute="trailing" constant="17" id="7Pr-rr-Awn"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="trailing" secondItem="AXc-Yh-5Ek" secondAttribute="trailing" id="BlL-II-2cP"/>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="centerY" secondItem="wT1-HY-mg9" secondAttribute="centerY" id="FdP-94-Drs"/>
<constraint firstItem="2Fn-5d-j8v" firstAttribute="leading" secondItem="wT1-HY-mg9" secondAttribute="leading" constant="17" id="HYO-ML-C8b"/>
<constraint firstItem="2Fn-5d-j8v" firstAttribute="top" secondItem="wT1-HY-mg9" secondAttribute="top" constant="26" id="XpY-aU-BzN"/>
<constraint firstAttribute="bottom" secondItem="2Fn-5d-j8v" secondAttribute="bottom" constant="26" id="Y10-PC-eP5"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="top" secondItem="AXc-Yh-5Ek" secondAttribute="top" id="hSS-7f-MiM"/>
<constraint firstAttribute="height" constant="128" id="ky8-Xs-cjh"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="bottom" secondItem="AXc-Yh-5Ek" secondAttribute="bottom" id="v1F-S6-muO"/>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="leading" secondItem="2Fn-5d-j8v" secondAttribute="trailing" constant="11" id="vuS-Bk-Q0J"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="wT1-HY-mg9" firstAttribute="leading" secondItem="ElJ-Te-N4M" secondAttribute="leading" id="1fU-8Q-kc5"/>
<constraint firstItem="cTO-BG-Gzi" firstAttribute="leading" secondItem="ElJ-Te-N4M" secondAttribute="leading" id="827-rg-YnF"/>
<constraint firstItem="cTO-BG-Gzi" firstAttribute="top" secondItem="ElJ-Te-N4M" secondAttribute="top" id="DCX-hf-OZ5"/>
<constraint firstAttribute="bottom" secondItem="wT1-HY-mg9" secondAttribute="bottom" id="NTj-Gv-gK2"/>
<constraint firstAttribute="trailing" secondItem="wT1-HY-mg9" secondAttribute="trailing" id="ssf-Xv-Bxx"/>
<constraint firstAttribute="trailing" secondItem="cTO-BG-Gzi" secondAttribute="trailing" id="umy-qN-JFu"/>
<constraint firstItem="wT1-HY-mg9" firstAttribute="top" secondItem="cTO-BG-Gzi" secondAttribute="bottom" id="wkk-WM-rVY"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cwz-uh-Zn5" userLabel="CouponQRContainerView">
<rect key="frame" x="24" y="589.33333333333337" width="345" height="305"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eEy-8l-te2" userLabel="CouponQRHeaderView">
<rect key="frame" x="0.0" y="0.0" width="345" height="55"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NZj-6a-KB7" userLabel="CouponQRTitleLabel">
<rect key="frame" x="17" y="17" width="277" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="OXW-Jx-8wp" userLabel="CouponQRArrowImage">
<rect key="frame" x="311" y="21" width="13" height="13"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="G7f-Pn-WhD"/>
<constraint firstAttribute="height" constant="13" id="zVL-H5-ijW"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xd4-3b-eOl" userLabel="CouponQRButton">
<rect key="frame" x="0.0" y="0.0" width="345" height="55"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button">
<color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</buttonConfiguration>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="xd4-3b-eOl" secondAttribute="bottom" id="1yG-EQ-krt"/>
<constraint firstAttribute="trailing" secondItem="xd4-3b-eOl" secondAttribute="trailing" id="4cA-IG-MEv"/>
<constraint firstAttribute="trailing" secondItem="OXW-Jx-8wp" secondAttribute="trailing" constant="21" id="61o-1d-G8i"/>
<constraint firstAttribute="bottom" secondItem="NZj-6a-KB7" secondAttribute="bottom" constant="17" id="7Nq-qK-srn"/>
<constraint firstItem="xd4-3b-eOl" firstAttribute="leading" secondItem="eEy-8l-te2" secondAttribute="leading" id="BBO-lA-FMd"/>
<constraint firstItem="NZj-6a-KB7" firstAttribute="leading" secondItem="eEy-8l-te2" secondAttribute="leading" constant="17" id="C9L-Ez-BxU"/>
<constraint firstItem="xd4-3b-eOl" firstAttribute="top" secondItem="eEy-8l-te2" secondAttribute="top" id="Omk-77-XDb"/>
<constraint firstItem="OXW-Jx-8wp" firstAttribute="leading" secondItem="NZj-6a-KB7" secondAttribute="trailing" constant="17" id="gAd-xN-NrH"/>
<constraint firstItem="OXW-Jx-8wp" firstAttribute="centerY" secondItem="eEy-8l-te2" secondAttribute="centerY" id="gFQ-3l-Vyc"/>
<constraint firstItem="NZj-6a-KB7" firstAttribute="top" secondItem="eEy-8l-te2" secondAttribute="top" constant="17" id="x3M-GO-42H"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xqU-7k-Vxg" userLabel="CouponQRContentView">
<rect key="frame" x="0.0" y="55" width="345" height="250"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Z9w-Ue-Lij" userLabel="CouponQRImage">
<rect key="frame" x="72.666666666666686" y="25" width="200" height="200"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="200" id="UHz-Fg-n1x"/>
<constraint firstAttribute="height" constant="200" id="itM-bK-4dv"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="centerX" secondItem="xqU-7k-Vxg" secondAttribute="centerX" id="3jb-mY-gez"/>
<constraint firstAttribute="bottom" secondItem="Z9w-Ue-Lij" secondAttribute="bottom" constant="25" id="4Wr-Ld-HWz"/>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="top" secondItem="xqU-7k-Vxg" secondAttribute="top" constant="25" id="DoG-pU-Ipv"/>
<constraint firstAttribute="height" constant="250" id="odW-jh-UiA"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="xqU-7k-Vxg" secondAttribute="trailing" id="JEa-Zg-JIu"/>
<constraint firstItem="xqU-7k-Vxg" firstAttribute="top" secondItem="eEy-8l-te2" secondAttribute="bottom" id="Jf6-P1-9qS"/>
<constraint firstItem="eEy-8l-te2" firstAttribute="leading" secondItem="Cwz-uh-Zn5" secondAttribute="leading" id="iZp-kc-tZ2"/>
<constraint firstItem="xqU-7k-Vxg" firstAttribute="leading" secondItem="Cwz-uh-Zn5" secondAttribute="leading" id="nxQ-kb-BhT"/>
<constraint firstItem="eEy-8l-te2" firstAttribute="top" secondItem="Cwz-uh-Zn5" secondAttribute="top" id="qho-3x-oyY"/>
<constraint firstAttribute="trailing" secondItem="eEy-8l-te2" secondAttribute="trailing" id="sg9-Jq-q2G"/>
<constraint firstAttribute="bottom" secondItem="xqU-7k-Vxg" secondAttribute="bottom" id="wUN-aQ-c9t"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Id4-Xw-01i" userLabel="TermsButton">
<rect key="frame" x="24" y="944.33333333333337" width="345" height="35"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button"/>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ak8-Tc-k8X" userLabel="TermsLabel">
<rect key="frame" x="24" y="989.33333333333326" width="345" height="20.333333333333371"/>
<constraints>
<constraint firstAttribute="height" constant="20.329999999999998" id="ZA1-TX-m9Y"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j1U-rV-0FP" userLabel="MapButton">
<rect key="frame" x="24" y="1049.6666666666667" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="BZv-RS-JfU"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button"/>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t8z-s1-rIA" userLabel="WebsiteButton">
<rect key="frame" x="24" y="1124.6666666666667" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="EUh-DN-fJh"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button"/>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="t8z-s1-rIA" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="0ws-pJ-lPS"/>
<constraint firstItem="1Kx-s2-p1l" firstAttribute="leading" secondItem="u54-xs-f5a" secondAttribute="trailing" constant="11" id="22w-QH-w0I"/>
<constraint firstItem="Cwz-uh-Zn5" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="2Cq-bG-OqH"/>
<constraint firstItem="HLR-Nk-7Gm" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="3IS-pt-47I"/>
<constraint firstItem="Id4-Xw-01i" firstAttribute="top" secondItem="Cwz-uh-Zn5" secondAttribute="bottom" constant="50" id="CwG-Ev-Rvi"/>
<constraint firstItem="WjF-6P-8Wn" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="17" id="DTU-uH-exC"/>
<constraint firstItem="Xiw-td-OMd" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" id="GFv-Mo-QN0"/>
<constraint firstAttribute="trailing" secondItem="t8z-s1-rIA" secondAttribute="trailing" constant="24" id="Hel-rG-nvJ"/>
<constraint firstItem="VJr-Mc-WMf" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="Hoa-qW-OtC"/>
<constraint firstItem="89U-JU-Imv" firstAttribute="top" secondItem="qrm-40-JLT" secondAttribute="top" constant="17" id="JQF-r7-v7p"/>
<constraint firstAttribute="trailing" secondItem="Cwz-uh-Zn5" secondAttribute="trailing" constant="24" id="MCe-c8-R0P"/>
<constraint firstAttribute="trailing" secondItem="89U-JU-Imv" secondAttribute="trailing" constant="16" id="QJ1-AA-bn9"/>
<constraint firstItem="u54-xs-f5a" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="ScM-kH-ZEe"/>
<constraint firstItem="VJr-Mc-WMf" firstAttribute="top" secondItem="u54-xs-f5a" secondAttribute="bottom" id="Ssw-da-ntM"/>
<constraint firstItem="Id4-Xw-01i" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="T08-vK-q5K"/>
<constraint firstAttribute="trailing" secondItem="Xiw-td-OMd" secondAttribute="trailing" id="TGH-lz-pn5"/>
<constraint firstAttribute="trailing" secondItem="Id4-Xw-01i" secondAttribute="trailing" constant="24" id="YjW-2Y-Pgv"/>
<constraint firstItem="ElJ-Te-N4M" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="abd-4G-pI5"/>
<constraint firstItem="Xiw-td-OMd" firstAttribute="top" secondItem="qrm-40-JLT" secondAttribute="top" id="ajI-sR-3Pt"/>
<constraint firstAttribute="trailing" secondItem="j1U-rV-0FP" secondAttribute="trailing" constant="24" id="bBU-zw-nbU"/>
<constraint firstAttribute="bottom" secondItem="t8z-s1-rIA" secondAttribute="bottom" constant="46" id="bBi-iY-kAp"/>
<constraint firstItem="Ak8-Tc-k8X" firstAttribute="top" secondItem="Id4-Xw-01i" secondAttribute="bottom" constant="10" id="bGA-mQ-RpV"/>
<constraint firstItem="WjF-6P-8Wn" firstAttribute="leading" secondItem="1Kx-s2-p1l" secondAttribute="trailing" constant="11" id="bI6-jl-1U8"/>
<constraint firstAttribute="trailing" secondItem="X7C-0H-IhU" secondAttribute="trailing" constant="24" id="cXA-ke-cJ7"/>
<constraint firstItem="X7C-0H-IhU" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="d5O-SJ-gva"/>
<constraint firstAttribute="trailing" secondItem="HLR-Nk-7Gm" secondAttribute="trailing" constant="24" id="eDk-HB-bk1"/>
<constraint firstAttribute="trailing" secondItem="ElJ-Te-N4M" secondAttribute="trailing" constant="24" id="f9R-SZ-ReV"/>
<constraint firstItem="j1U-rV-0FP" firstAttribute="top" secondItem="Ak8-Tc-k8X" secondAttribute="bottom" constant="40" id="gym-1h-ewZ"/>
<constraint firstItem="HLR-Nk-7Gm" firstAttribute="top" secondItem="VJr-Mc-WMf" secondAttribute="bottom" constant="14" id="hfN-OE-fbk"/>
<constraint firstItem="j1U-rV-0FP" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="jac-wq-3ZZ"/>
<constraint firstItem="ElJ-Te-N4M" firstAttribute="top" secondItem="X7C-0H-IhU" secondAttribute="bottom" constant="34" id="jpp-m0-Hqs"/>
<constraint firstItem="t8z-s1-rIA" firstAttribute="top" secondItem="j1U-rV-0FP" secondAttribute="bottom" constant="20" id="lPW-dz-sru"/>
<constraint firstItem="X7C-0H-IhU" firstAttribute="top" secondItem="HLR-Nk-7Gm" secondAttribute="bottom" constant="20" id="mg0-Su-33x"/>
<constraint firstAttribute="trailing" secondItem="Ak8-Tc-k8X" secondAttribute="trailing" constant="24" id="oCu-13-6UV"/>
<constraint firstAttribute="trailing" secondItem="WjF-6P-8Wn" secondAttribute="trailing" constant="18" id="qhV-dn-76R"/>
<constraint firstItem="Cwz-uh-Zn5" firstAttribute="top" secondItem="ElJ-Te-N4M" secondAttribute="bottom" constant="23" id="sxz-YM-etJ"/>
<constraint firstItem="Ak8-Tc-k8X" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="v9m-et-nFd"/>
<constraint firstItem="u54-xs-f5a" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="23" id="w3l-OQ-ddG"/>
<constraint firstAttribute="trailing" secondItem="VJr-Mc-WMf" secondAttribute="trailing" constant="24" id="wJA-JP-ZWT"/>
<constraint firstItem="1Kx-s2-p1l" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="17" id="zNT-Y8-JpJ"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="qrm-40-JLT" firstAttribute="width" secondItem="zwi-OX-nWJ" secondAttribute="width" id="46f-KH-fWt"/>
<constraint firstItem="qrm-40-JLT" firstAttribute="leading" secondItem="z3x-Kv-DPe" secondAttribute="leading" id="Tqa-O8-lWQ"/>
<constraint firstItem="qrm-40-JLT" firstAttribute="bottom" secondItem="z3x-Kv-DPe" secondAttribute="bottom" id="bZd-DN-qHf"/>
<constraint firstItem="qrm-40-JLT" firstAttribute="top" secondItem="z3x-Kv-DPe" secondAttribute="top" id="tU6-Lf-ZiK"/>
<constraint firstItem="qrm-40-JLT" firstAttribute="trailing" secondItem="z3x-Kv-DPe" secondAttribute="trailing" id="wkW-P9-vPb"/>
</constraints>
<viewLayoutGuide key="contentLayoutGuide" id="z3x-Kv-DPe"/>
<viewLayoutGuide key="frameLayoutGuide" id="zwi-OX-nWJ"/>
</scrollView>
</subviews>
<color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="YpC-uS-mhw" secondAttribute="bottom" id="8Cp-bx-YIo"/>
<constraint firstItem="YpC-uS-mhw" firstAttribute="top" secondItem="XaT-fU-eNh" secondAttribute="top" id="FzN-9C-IcE"/>
<constraint firstItem="qrm-40-JLT" firstAttribute="height" relation="greaterThanOrEqual" secondItem="XaT-fU-eNh" secondAttribute="height" id="Haf-bw-iTI"/>
<constraint firstItem="YpC-uS-mhw" firstAttribute="leading" secondItem="XaT-fU-eNh" secondAttribute="leading" id="npV-aw-Pmw"/>
<constraint firstAttribute="trailing" secondItem="YpC-uS-mhw" secondAttribute="trailing" id="wj8-zH-sYG"/>
</constraints>
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="XaT-fU-eNh" secondAttribute="trailing" id="8CQ-aq-Ezd"/>
<constraint firstItem="XaT-fU-eNh" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="DIL-gG-nA2"/>
<constraint firstAttribute="bottom" secondItem="XaT-fU-eNh" secondAttribute="bottom" id="XXc-AZ-i85"/>
<constraint firstItem="XaT-fU-eNh" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="bpz-F0-O5d"/>
</constraints>
<point key="canvasLocation" x="12" y="-11"/>
</view>
</objects>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>
......