MESSENGER-2762 Initial Merge

This commit is contained in:
Frank Rotermund
2022-03-17 15:51:23 +01:00
parent ecae8d618f
commit c2108a2178
384 changed files with 17708 additions and 1928 deletions
@@ -1,354 +1,358 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="V8j-Lb-PgC">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="AdB-e5-Xbz">
<device id="retina5_9" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
<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>
<scenes>
<!--Enter Pin Code View Controller-->
<scene sceneID="mt5-wz-YKA">
<scene sceneID="8pW-TW-WWh">
<objects>
<viewController extendedLayoutIncludesOpaqueBars="YES" automaticallyAdjustsScrollViewInsets="NO" id="V8j-Lb-PgC" customClass="EnterPinCodeViewController" customModule="Riot" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="EL9-GA-lwo">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<viewController extendedLayoutIncludesOpaqueBars="YES" automaticallyAdjustsScrollViewInsets="NO" id="AdB-e5-Xbz" customClass="EnterPinCodeViewController" customModule="Riot" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="pcv-uC-hzc">
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1YE-D1-eHn">
<rect key="frame" x="0.0" y="20" width="375" height="627"/>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2C5-9h-WBh">
<rect key="frame" x="0.0" y="64" width="375" height="694"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="app_symbol" translatesAutoresizingMaskIntoConstraints="NO" id="8qz-Yk-9a4">
<rect key="frame" x="137.5" y="243.5" width="100" height="100"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="callkit_icon" translatesAutoresizingMaskIntoConstraints="NO" id="a9H-du-3Ut">
<rect key="frame" x="137.66666666666666" y="277" width="100" height="100"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="Ux9-pH-SW9"/>
<constraint firstAttribute="height" constant="100" id="o3K-YH-5tn"/>
<constraint firstAttribute="height" constant="100" id="Vtd-ot-Whs"/>
<constraint firstAttribute="width" constant="100" id="neB-pG-djO"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="8qz-Yk-9a4" firstAttribute="centerY" secondItem="1YE-D1-eHn" secondAttribute="centerY" constant="-20" id="IKY-me-86i"/>
<constraint firstItem="8qz-Yk-9a4" firstAttribute="centerX" secondItem="1YE-D1-eHn" secondAttribute="centerX" id="cPb-3H-3yK"/>
<constraint firstItem="a9H-du-3Ut" firstAttribute="centerY" secondItem="2C5-9h-WBh" secondAttribute="centerY" constant="-20" id="4w6-Ka-MA0"/>
<constraint firstItem="a9H-du-3Ut" firstAttribute="centerX" secondItem="2C5-9h-WBh" secondAttribute="centerX" id="cKn-Ta-6Aj"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="center" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="DMT-DS-IA8">
<rect key="frame" x="0.0" y="8" width="375" height="651"/>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="center" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="ijj-tP-TWa">
<rect key="frame" x="0.0" y="52" width="375" height="718"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="app_symbol" translatesAutoresizingMaskIntoConstraints="NO" id="UHg-qE-anw">
<rect key="frame" x="167.5" y="0.0" width="40" height="40"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="callkit_icon" translatesAutoresizingMaskIntoConstraints="NO" id="dYQ-6D-LIv">
<rect key="frame" x="167.66666666666666" y="0.0" width="40" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="5If-kl-LuA"/>
<constraint firstAttribute="width" constant="40" id="EK6-ed-26b"/>
<constraint firstAttribute="height" constant="40" id="IIc-aG-P5U"/>
<constraint firstAttribute="width" constant="40" id="yLU-gr-Vqn"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="Welcome back.Choose a PIN for security" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bxI-mu-qng">
<rect key="frame" x="16" y="59" width="343" height="53"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="Welcome back.Choose a PIN for security" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P02-LU-aJg">
<rect key="frame" x="16" y="70.333333333333329" width="343" height="52.666666666666671"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="22"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rn2-qe-htS">
<rect key="frame" x="16" y="131.5" width="343" height="54"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vP5-71-7ne">
<rect key="frame" x="16" y="153.33333333333334" width="343" height="54"/>
<string key="text">Setting up a PIN lets you protect data like messages and contacts, so only you can access them by entering the PIN at the start of the app.</string>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="l5x-qO-sdf">
<rect key="frame" x="2" y="204.5" width="371" height="79"/>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Dh9-xJ-vo2">
<rect key="frame" x="2" y="238" width="371" height="79"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="24" translatesAutoresizingMaskIntoConstraints="NO" id="xi9-P9-8WP">
<rect key="frame" x="101.5" y="0.0" width="168" height="24"/>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="24" translatesAutoresizingMaskIntoConstraints="NO" id="fj9-IE-pSQ">
<rect key="frame" x="101.66666666666669" y="0.0" width="168" height="24"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="Gwx-8X-ZWk">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="kgZ-eU-4vi">
<rect key="frame" x="0.0" y="0.0" width="24" height="24"/>
<constraints>
<constraint firstAttribute="height" constant="24" id="aek-t8-dK4"/>
<constraint firstAttribute="width" constant="24" id="cJN-ZQ-6aQ"/>
<constraint firstAttribute="height" constant="24" id="BMA-ib-68l"/>
<constraint firstAttribute="width" constant="24" id="dXQ-sz-phd"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="qDY-R1-l5l">
<rect key="frame" x="48" y="0.0" width="24" height="24"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="KP0-pu-QoV">
<rect key="frame" x="47.999999999999986" y="0.0" width="24" height="24"/>
<constraints>
<constraint firstAttribute="width" constant="24" id="QDg-LP-R4J"/>
<constraint firstAttribute="height" constant="24" id="f4G-d8-hoA"/>
<constraint firstAttribute="width" constant="24" id="Gvq-He-FDA"/>
<constraint firstAttribute="height" constant="24" id="eFj-BL-PHT"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="X0l-q3-fXm">
<rect key="frame" x="96" y="0.0" width="24" height="24"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="9fv-sI-MDc">
<rect key="frame" x="95.999999999999986" y="0.0" width="24" height="24"/>
<constraints>
<constraint firstAttribute="width" constant="24" id="HQA-9R-8bC"/>
<constraint firstAttribute="height" constant="24" id="Zjd-RW-DiW"/>
<constraint firstAttribute="width" constant="24" id="4w6-Pp-pAw"/>
<constraint firstAttribute="height" constant="24" id="fI8-PY-oSh"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="3" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="o1F-px-ZT5">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="3" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="gR3-zu-B3I">
<rect key="frame" x="144" y="0.0" width="24" height="24"/>
<constraints>
<constraint firstAttribute="height" constant="24" id="FA6-QR-ld2"/>
<constraint firstAttribute="width" constant="24" id="TcR-MF-wE3"/>
<constraint firstAttribute="width" constant="24" id="Auj-zb-Dfw"/>
<constraint firstAttribute="height" constant="24" id="War-av-znh"/>
</constraints>
</imageView>
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CBc-7Z-a5Z">
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eVt-IS-UTE">
<rect key="frame" x="0.0" y="24" width="371" height="55"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Q0w-RD-JD3">
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PaC-DW-0rz">
<rect key="frame" x="0.0" y="8" width="371" height="2"/>
<color key="backgroundColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="backgroundColor" systemColor="systemRedColor"/>
<constraints>
<constraint firstAttribute="height" constant="2" id="thx-rI-kOC"/>
<constraint firstAttribute="height" constant="2" id="mWl-i8-Lu7"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="For security reasons, this PIN isn't available. Please try another PIN" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H5g-FI-xEj">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="For security reasons, this PIN isn't available. Please try another PIN" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="da8-CR-YzN">
<rect key="frame" x="8" y="18" width="355" height="29"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="textColor" systemColor="systemRedColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="H5g-FI-xEj" firstAttribute="top" secondItem="Q0w-RD-JD3" secondAttribute="bottom" constant="8" id="Ass-T4-TrH"/>
<constraint firstAttribute="trailing" secondItem="Q0w-RD-JD3" secondAttribute="trailing" id="KBv-AB-wkc"/>
<constraint firstAttribute="trailing" secondItem="H5g-FI-xEj" secondAttribute="trailing" constant="8" id="SK3-JE-bIK"/>
<constraint firstItem="Q0w-RD-JD3" firstAttribute="leading" secondItem="CBc-7Z-a5Z" secondAttribute="leading" id="ZwL-3A-TND"/>
<constraint firstItem="Q0w-RD-JD3" firstAttribute="top" secondItem="CBc-7Z-a5Z" secondAttribute="top" constant="8" id="fgi-r2-9bD"/>
<constraint firstItem="H5g-FI-xEj" firstAttribute="leading" secondItem="CBc-7Z-a5Z" secondAttribute="leading" constant="8" id="idG-Mm-XPq"/>
<constraint firstAttribute="bottom" secondItem="H5g-FI-xEj" secondAttribute="bottom" constant="8" id="xhM-lP-67t"/>
<constraint firstAttribute="trailing" secondItem="da8-CR-YzN" secondAttribute="trailing" constant="8" id="2ey-LQ-ixb"/>
<constraint firstItem="PaC-DW-0rz" firstAttribute="top" secondItem="eVt-IS-UTE" secondAttribute="top" constant="8" id="5cF-cF-r1D"/>
<constraint firstAttribute="bottom" secondItem="da8-CR-YzN" secondAttribute="bottom" constant="8" id="6yz-HE-VYJ"/>
<constraint firstItem="PaC-DW-0rz" firstAttribute="leading" secondItem="eVt-IS-UTE" secondAttribute="leading" id="gjt-2e-7YD"/>
<constraint firstAttribute="trailing" secondItem="PaC-DW-0rz" secondAttribute="trailing" id="me7-eF-BaI"/>
<constraint firstItem="da8-CR-YzN" firstAttribute="leading" secondItem="eVt-IS-UTE" secondAttribute="leading" constant="8" id="vcH-2w-cUG"/>
<constraint firstItem="da8-CR-YzN" firstAttribute="top" secondItem="PaC-DW-0rz" secondAttribute="bottom" constant="8" id="wE8-0k-7Oa"/>
</constraints>
</view>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" alignment="center" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="W0M-eq-abZ">
<rect key="frame" x="77.5" y="302.5" width="220" height="276"/>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" alignment="center" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="5Ek-SS-9WZ">
<rect key="frame" x="77.666666666666686" y="347.33333333333331" width="220" height="275.99999999999994"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Uqh-o2-7HP">
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="AjR-nP-uYH">
<rect key="frame" x="0.0" y="0.0" width="220" height="60"/>
<subviews>
<button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BEe-II-qt8">
<button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="78K-OY-C0X">
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="HSC-fC-0mb"/>
<constraint firstAttribute="height" constant="60" id="UsP-qt-rq1"/>
<constraint firstAttribute="width" constant="60" id="3HV-ab-JKB"/>
<constraint firstAttribute="height" constant="60" id="xsp-hI-i7r"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="1"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="bJg-z4-FSc"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="1nS-w1-21C"/>
</connections>
</button>
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vRL-nn-bIH">
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2u3-sb-V4Q">
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
<constraints>
<constraint firstAttribute="height" constant="60" id="HaJ-0E-bl3"/>
<constraint firstAttribute="width" constant="60" id="JJz-zL-t77"/>
<constraint firstAttribute="width" constant="60" id="iAP-5G-liC"/>
<constraint firstAttribute="height" constant="60" id="lxA-13-mpH"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="2"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="jWB-aT-7CT"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="a3K-KP-Xkr"/>
</connections>
</button>
<button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m5E-4b-a2B">
<button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="akC-9K-A6S">
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="height" constant="60" id="9Uy-xG-5Vq"/>
<constraint firstAttribute="width" constant="60" id="EZw-k5-DP8"/>
<constraint firstAttribute="height" constant="60" id="JE1-jE-yaU"/>
<constraint firstAttribute="width" constant="60" id="RAi-8T-wrd"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="3"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="yNt-BA-OvG"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="dlb-gg-6BK"/>
</connections>
</button>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Z9D-6N-neq">
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="DsI-FY-Zw6">
<rect key="frame" x="0.0" y="72" width="220" height="60"/>
<subviews>
<button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q2U-ek-vSc">
<button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rnh-UG-sal">
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="G0j-6T-fRk"/>
<constraint firstAttribute="height" constant="60" id="JhY-SW-MMe"/>
<constraint firstAttribute="height" constant="60" id="4Cv-iv-R57"/>
<constraint firstAttribute="width" constant="60" id="5PZ-f7-vxq"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="4"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="aHq-oD-jeB"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="3gj-Cn-NDm"/>
</connections>
</button>
<button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ziv-SY-nXQ">
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
<button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NU9-Sc-W4F">
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="5Ry-eq-V0D"/>
<constraint firstAttribute="height" constant="60" id="iCm-G8-2Us"/>
<constraint firstAttribute="height" constant="60" id="gRF-KA-ZOe"/>
<constraint firstAttribute="width" constant="60" id="pMx-nu-gEh"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="5"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="t2w-kA-5Ej"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="JMq-lf-7rS"/>
</connections>
</button>
<button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PNU-iI-oCX">
<button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2NR-Jr-WY3">
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="odD-FC-4eB"/>
<constraint firstAttribute="height" constant="60" id="zHt-bd-Jwg"/>
<constraint firstAttribute="height" constant="60" id="JJf-Uy-Gyd"/>
<constraint firstAttribute="width" constant="60" id="NL8-Zb-19Z"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="6"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="q9A-aO-qvf"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="Azs-88-d5i"/>
</connections>
</button>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="YeU-UN-Uo0">
<rect key="frame" x="0.0" y="144" width="220" height="60"/>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="s7S-CK-dxx">
<rect key="frame" x="0.0" y="144.00000000000006" width="220" height="60"/>
<subviews>
<button opaque="NO" tag="7" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Lnz-5u-oFb">
<button opaque="NO" tag="7" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nh4-gD-vTM">
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="Ye8-5w-NMv"/>
<constraint firstAttribute="height" constant="60" id="lPa-Qd-zDM"/>
<constraint firstAttribute="height" constant="60" id="Dkf-Sa-fdb"/>
<constraint firstAttribute="width" constant="60" id="wvt-Xe-Pbq"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="7"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="i3U-c4-Cp9"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="q7N-xQ-T84"/>
</connections>
</button>
<button opaque="NO" tag="8" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OCE-R0-CMN">
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
<button opaque="NO" tag="8" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="h8m-8D-UUY">
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="5LE-yh-yoi"/>
<constraint firstAttribute="height" constant="60" id="65e-mr-hid"/>
<constraint firstAttribute="width" constant="60" id="G3f-Hj-q1t"/>
<constraint firstAttribute="height" constant="60" id="RZ2-vh-vPE"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="8"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="wpv-qG-N2w"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="Yr2-xn-lht"/>
</connections>
</button>
<button opaque="NO" tag="9" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1dz-Qd-zCl">
<button opaque="NO" tag="9" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Zh-zo-u55">
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="rS1-XX-Xw9"/>
<constraint firstAttribute="height" constant="60" id="zza-iD-Oue"/>
<constraint firstAttribute="width" constant="60" id="NGe-fS-DDY"/>
<constraint firstAttribute="height" constant="60" id="Rml-7e-ETR"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="9"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="tTD-CN-iVS"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="Zua-xx-ssE"/>
</connections>
</button>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Nrp-tS-u1k">
<rect key="frame" x="0.0" y="216" width="220" height="60"/>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="NFx-bW-9f2">
<rect key="frame" x="0.0" y="216.00000000000006" width="220" height="60"/>
<subviews>
<button opaque="NO" userInteractionEnabled="NO" tag="-99" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DEv-rc-fGB">
<button opaque="NO" userInteractionEnabled="NO" tag="-99" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PwK-W5-bnP">
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="fVd-IS-maA"/>
<constraint firstAttribute="height" constant="60" id="x1Z-Ar-22U"/>
<constraint firstAttribute="width" constant="60" id="SVI-mJ-adg"/>
<constraint firstAttribute="height" constant="60" id="ieC-9A-CKt"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sc1-u3-yvh">
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z3I-Kq-kI0">
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
<constraints>
<constraint firstAttribute="height" constant="60" id="DDy-yf-FOR"/>
<constraint firstAttribute="width" constant="60" id="vSL-tm-biX"/>
<constraint firstAttribute="width" constant="60" id="T11-lW-w7V"/>
<constraint firstAttribute="height" constant="60" id="tLT-3h-t6n"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" title="0"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="9nh-0D-5vB"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="KIB-eh-NHn"/>
</connections>
</button>
<button opaque="NO" tag="-1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LpO-9j-dlN">
<button opaque="NO" tag="-1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yUt-tN-2gL">
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="DAY-CR-kKO"/>
<constraint firstAttribute="height" constant="60" id="iDt-BW-fEz"/>
<constraint firstAttribute="height" constant="60" id="fGF-OO-gHY"/>
<constraint firstAttribute="width" constant="60" id="yVB-ui-IWP"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
<state key="normal" image="back_icon"/>
<connections>
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="CVc-4x-WXb"/>
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="rIj-fJ-frg"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
</stackView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CRt-Fb-0Dq">
<rect key="frame" x="146.5" y="598" width="82" height="33"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TMg-AX-OiC">
<rect key="frame" x="146.66666666666666" y="653.66666666666663" width="82" height="33"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<state key="normal" title="Forgot PIN"/>
<connections>
<action selector="forgotPinButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="hE4-CJ-Bdh"/>
<action selector="forgotPinButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="UzX-Z9-Sd8"/>
</connections>
</button>
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="N9V-f7-d5k">
<rect key="frame" x="67.5" y="650" width="240" height="1"/>
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a0M-Zw-56s">
<rect key="frame" x="67.666666666666686" y="717" width="240" height="1"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="oFX-h1-fx7"/>
<constraint firstAttribute="height" constant="1" id="gT3-E7-D21"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="Rn2-qe-htS" secondAttribute="trailing" constant="16" id="WIb-QJ-vx7"/>
<constraint firstItem="bxI-mu-qng" firstAttribute="leading" secondItem="DMT-DS-IA8" secondAttribute="leading" constant="16" id="cg2-vW-LtI"/>
<constraint firstAttribute="trailing" secondItem="bxI-mu-qng" secondAttribute="trailing" constant="16" id="j5H-f5-nqY"/>
<constraint firstItem="Rn2-qe-htS" firstAttribute="leading" secondItem="DMT-DS-IA8" secondAttribute="leading" constant="16" id="y20-NI-Hl0"/>
<constraint firstAttribute="trailing" secondItem="P02-LU-aJg" secondAttribute="trailing" constant="16" id="Cfs-Tk-x96"/>
<constraint firstItem="vP5-71-7ne" firstAttribute="leading" secondItem="ijj-tP-TWa" secondAttribute="leading" constant="16" id="OaR-ZQ-v14"/>
<constraint firstAttribute="trailing" secondItem="vP5-71-7ne" secondAttribute="trailing" constant="16" id="VH1-l3-G4u"/>
<constraint firstItem="P02-LU-aJg" firstAttribute="leading" secondItem="ijj-tP-TWa" secondAttribute="leading" constant="16" id="ePx-lP-s1D"/>
</constraints>
</stackView>
</subviews>
<color key="backgroundColor" red="0.94509803921568625" green="0.96078431372549022" blue="0.97254901960784312" alpha="1" colorSpace="calibratedRGB"/>
<viewLayoutGuide key="safeArea" id="JOO-VS-ZhZ"/>
<color key="backgroundColor" red="0.94509803920000002" green="0.96078431369999995" blue="0.97254901959999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="bFg-jh-JZB" firstAttribute="bottom" secondItem="1YE-D1-eHn" secondAttribute="bottom" constant="20" id="5mk-pT-EGS"/>
<constraint firstItem="1YE-D1-eHn" firstAttribute="top" secondItem="bFg-jh-JZB" secondAttribute="top" constant="20" id="Jzf-aA-rX7"/>
<constraint firstItem="DMT-DS-IA8" firstAttribute="top" secondItem="bFg-jh-JZB" secondAttribute="top" constant="8" id="Mlg-kp-E06"/>
<constraint firstItem="bFg-jh-JZB" firstAttribute="trailing" secondItem="DMT-DS-IA8" secondAttribute="trailing" id="Vwu-g7-vNh"/>
<constraint firstItem="bFg-jh-JZB" firstAttribute="trailing" secondItem="1YE-D1-eHn" secondAttribute="trailing" id="cxG-Xd-t0n"/>
<constraint firstItem="bFg-jh-JZB" firstAttribute="bottom" secondItem="DMT-DS-IA8" secondAttribute="bottom" constant="8" id="gPa-B5-LIs"/>
<constraint firstItem="DMT-DS-IA8" firstAttribute="leading" secondItem="bFg-jh-JZB" secondAttribute="leading" id="kA7-cw-VK1"/>
<constraint firstItem="1YE-D1-eHn" firstAttribute="leading" secondItem="bFg-jh-JZB" secondAttribute="leading" id="qOT-0t-zQs"/>
<constraint firstItem="2C5-9h-WBh" firstAttribute="leading" secondItem="JOO-VS-ZhZ" secondAttribute="leading" id="GDm-Zj-HkD"/>
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="bottom" secondItem="ijj-tP-TWa" secondAttribute="bottom" constant="8" id="NOR-4o-53b"/>
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="trailing" secondItem="2C5-9h-WBh" secondAttribute="trailing" id="WtN-Mc-Yc9"/>
<constraint firstItem="2C5-9h-WBh" firstAttribute="top" secondItem="JOO-VS-ZhZ" secondAttribute="top" constant="20" id="gfi-Hz-NNR"/>
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="trailing" secondItem="ijj-tP-TWa" secondAttribute="trailing" id="vf0-Cs-hGp"/>
<constraint firstItem="ijj-tP-TWa" firstAttribute="top" secondItem="JOO-VS-ZhZ" secondAttribute="top" constant="8" id="w0n-j6-vi0"/>
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="bottom" secondItem="2C5-9h-WBh" secondAttribute="bottom" constant="20" id="wAu-A9-h4H"/>
<constraint firstItem="ijj-tP-TWa" firstAttribute="leading" secondItem="JOO-VS-ZhZ" secondAttribute="leading" id="z53-0s-WYH"/>
</constraints>
<viewLayoutGuide key="safeArea" id="bFg-jh-JZB"/>
</view>
<connections>
<outlet property="bottomView" destination="N9V-f7-d5k" id="H5X-Px-d4w"/>
<outlet property="digitsStackView" destination="W0M-eq-abZ" id="xnb-6w-dtC"/>
<outlet property="explanatoryLabel" destination="Rn2-qe-htS" id="8WG-b4-nhE"/>
<outlet property="forgotPinButton" destination="CRt-Fb-0Dq" id="kHp-wn-P0o"/>
<outlet property="inactiveLogoImageView" destination="8qz-Yk-9a4" id="DFZ-fF-0NC"/>
<outlet property="inactiveView" destination="1YE-D1-eHn" id="I2t-3r-WUQ"/>
<outlet property="informationLabel" destination="bxI-mu-qng" id="pbX-aZ-inC"/>
<outlet property="logoImageView" destination="UHg-qE-anw" id="8C0-pd-i3b"/>
<outlet property="mainStackView" destination="DMT-DS-IA8" id="qYw-KO-M4k"/>
<outlet property="notAllowedPinLabel" destination="H5g-FI-xEj" id="QYZ-bo-QLC"/>
<outlet property="notAllowedPinLineView" destination="Q0w-RD-JD3" id="pJ4-2x-eTq"/>
<outlet property="notAllowedPinView" destination="CBc-7Z-a5Z" id="ySo-7J-MBK"/>
<outlet property="placeholderStackView" destination="xi9-P9-8WP" id="ynl-7M-Rpb"/>
<outlet property="bottomView" destination="a0M-Zw-56s" id="nlL-WO-RWV"/>
<outlet property="digitsStackView" destination="5Ek-SS-9WZ" id="1TV-zd-a0a"/>
<outlet property="explanatoryLabel" destination="vP5-71-7ne" id="Skx-tQ-sV1"/>
<outlet property="forgotPinButton" destination="TMg-AX-OiC" id="0xJ-0V-oGD"/>
<outlet property="inactiveLogoImageView" destination="a9H-du-3Ut" id="yab-rw-0IM"/>
<outlet property="inactiveView" destination="2C5-9h-WBh" id="EEN-2K-5JO"/>
<outlet property="informationLabel" destination="P02-LU-aJg" id="RNn-0E-gM1"/>
<outlet property="logoImageView" destination="dYQ-6D-LIv" id="2Pi-aB-UN7"/>
<outlet property="mainStackView" destination="ijj-tP-TWa" id="Ewq-Xl-zf5"/>
<outlet property="notAllowedPinLabel" destination="da8-CR-YzN" id="8gj-sh-BZe"/>
<outlet property="notAllowedPinLineView" destination="PaC-DW-0rz" id="MvD-mH-RwB"/>
<outlet property="notAllowedPinView" destination="eVt-IS-UTE" id="aID-QN-yrd"/>
<outlet property="placeholderStackView" destination="fj9-IE-pSQ" id="3IO-F8-3We"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="zK0-v6-7Wt" userLabel="First Responder" sceneMemberID="firstResponder"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="8iF-Ux-8rI" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-3199.1999999999998" y="-648.12593703148434"/>
</scene>
</scenes>
<resources>
<image name="app_symbol" width="120" height="120"/>
<image name="back_icon" width="14" height="23"/>
<image name="callkit_icon" width="40" height="40"/>
<image name="selection_untick" width="22" height="22"/>
<systemColor name="systemRedColor">
<color red="1" green="0.23137254901960785" blue="0.18823529411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>
@@ -2,6 +2,7 @@
// $ createScreen.sh SetPinCode/EnterPinCode EnterPinCode
/*
Copyright 2020 New Vector Ltd
Copyright (c) 2021 BWI GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -161,7 +162,7 @@ final class EnterPinCodeViewController: UIViewController {
}
private func setupViews() {
let cancelBarButtonItem = MXKBarButtonItem(title: VectorL10n.cancel, style: .plain) { [weak self] in
let cancelBarButtonItem = MXKBarButtonItem(title: NSLocalizedString("cancel", tableName: "Vector", comment: ""), style: .plain) { [weak self] in
self?.cancelButtonAction()
}
@@ -171,6 +172,7 @@ final class EnterPinCodeViewController: UIViewController {
self.title = ""
notAllowedPinLabel.text = VectorL10n.pinProtectionNotAllowedPin
forgotPinButton.setTitle(VectorL10n.pinProtectionForgotPin, for: .normal)
placeholderStackView.vc_removeAllArrangedSubviews()
for i in 0..<PinCodePreferences.shared.numberOfDigits {
@@ -227,6 +229,7 @@ final class EnterPinCodeViewController: UIViewController {
self.logoImageView.isHidden = true
self.informationLabel.text = VectorL10n.pinProtectionChoosePin
self.explanatoryLabel.isHidden = false
self.explanatoryLabel.text = VectorL10n.pinProtectionExplanatory
self.forgotPinButton.isHidden = true
self.bottomView.isHidden = false
self.notAllowedPinView.isHidden = true
@@ -258,15 +261,16 @@ final class EnterPinCodeViewController: UIViewController {
self.mainStackView.isHidden = false
self.informationLabel.text = VectorL10n.pinProtectionConfirmPin
self.notAllowedPinView.isHidden = true
self.explanatoryLabel.isHidden = true
// reset placeholders
renderPlaceholdersCount(0)
}
private func renderPinsDontMatch() {
let error = MXKErrorViewModel(title: VectorL10n.pinProtectionMismatchErrorTitle,
message: VectorL10n.pinProtectionMismatchErrorMessage)
let error = MXKErrorViewModel(title: NSLocalizedString("pin_protection_mismatch_error_title", tableName: "Vector", comment: ""),
message: NSLocalizedString("pin_protection_mismatch_error_message", tableName: "Vector", comment: ""))
self.activityPresenter.removeCurrentActivityIndicator(animated: true)
self.errorPresenter.presentError(from: self, for: error, animated: true) {
self.viewModel.process(viewAction: .pinsDontMatchAlertAction)
@@ -294,23 +298,23 @@ final class EnterPinCodeViewController: UIViewController {
}
private func renderWrongPinTooManyTimes() {
let error = MXKErrorViewModel(title: VectorL10n.pinProtectionMismatchErrorTitle,
message: VectorL10n.pinProtectionMismatchTooManyTimesErrorMessage)
let error = MXKErrorViewModel(title: NSLocalizedString("pin_protection_mismatch_error_title", tableName: "Vector", comment: ""),
message: NSLocalizedString("pin_protection_mismatch_too_many_times_error_message", tableName: "Vector", comment: ""))
self.activityPresenter.removeCurrentActivityIndicator(animated: true)
self.errorPresenter.presentError(from: self, for: error, animated: true, handler: nil)
}
private func renderForgotPin() {
let controller = UIAlertController(title: VectorL10n.pinProtectionResetAlertTitle,
message: VectorL10n.pinProtectionResetAlertMessage,
let controller = UIAlertController(title: NSLocalizedString("pin_protection_reset_alert_title", tableName: "Vector", comment: ""),
message: NSLocalizedString("pin_protection_reset_alert_message", tableName: "Vector", comment: ""),
preferredStyle: .alert)
let resetAction = UIAlertAction(title: VectorL10n.pinProtectionResetAlertActionReset, style: .default) { (_) in
let resetAction = UIAlertAction(title: NSLocalizedString("pin_protection_reset_alert_action_reset", tableName: "Vector", comment: ""), style: .default) { (_) in
self.viewModel.process(viewAction: .forgotPinAlertResetAction)
}
let cancelAction = UIAlertAction(title: VectorL10n.cancel, style: .cancel) { (_) in
let cancelAction = UIAlertAction(title: NSLocalizedString("cancel", tableName: "Vector", comment: ""), style: .cancel) { (_) in
self.viewModel.process(viewAction: .forgotPinAlertCancelAction)
}
@@ -2,6 +2,7 @@
// $ createScreen.sh SetPinCode/EnterPinCode EnterPinCode
/*
Copyright 2020 New Vector Ltd
Copyright (c) 2021 BWI GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -120,14 +121,15 @@ final class EnterPinCodeViewModel: EnterPinCodeViewModelType {
updateAfterPinSet()
case .unlock, .confirmPinToDeactivate:
// unlocking
if currentPin != pinCodePreferences.pin {
if !pinCodePreferences.pinsMatch(currentPin) {
// no match
updateAfterUnlockFailed()
} else {
// match
// we can use biometrics anymore, if set
pinCodePreferences.canUseBiometricsToUnlock = nil
pinCodePreferences.canUseBiometricsToUnlock = true
pinCodePreferences.resetCounters()
EncryptionKeyManager.shared.initKeys()
// complete with a little delay
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.coordinatorDelegate?.enterPinCodeViewModelDidComplete(self)
@@ -135,7 +137,7 @@ final class EnterPinCodeViewModel: EnterPinCodeViewModelType {
}
case .changePin:
// unlocking
if initialPin.isEmpty && currentPin != pinCodePreferences.pin {
if initialPin.isEmpty && !pinCodePreferences.pinsMatch(currentPin) {
// no match
updateAfterUnlockFailed()
} else if initialPin.isEmpty {