new ios ownbrander manual
@@ -3,7 +3,7 @@ Table of Contents
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:maxdepth: 3
|
||||
|
||||
index
|
||||
release_notes
|
||||
@@ -22,11 +22,11 @@ Enterprise Subscription Only
|
||||
----------------------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:maxdepth: 3
|
||||
|
||||
enterprise_installation/index
|
||||
enterprise_clients/index
|
||||
enterprise_external_storage/index
|
||||
enterprise_user_management/index
|
||||
enterprise_files_drop/index
|
||||
.. enterprise_ios_app/index
|
||||
|
||||
@@ -14,13 +14,13 @@ they are loaded into your account.
|
||||
|
||||
.. image:: ../images/ownbrander-1.png
|
||||
|
||||
.. Building a Branded iOS App
|
||||
.. --------------------------
|
||||
Building a Branded iOS App
|
||||
--------------------------
|
||||
|
||||
.. Building a branded iOS app requires your own artwork, and you must create a
|
||||
.. P12 certificate and three provisioning profiles for digitally signing your
|
||||
.. apps. Apple has strict and specific requirements, so it is a lengthy
|
||||
.. process. See:doc:`../enterprise_ios_app/index` for a complete tutorial.
|
||||
Building a branded iOS app requires your own artwork, and you must create a
|
||||
P12 certificate and three provisioning profiles for digitally signing your
|
||||
apps. Apple has strict and specific requirements, so it is a lengthy
|
||||
process. See:doc:`../enterprise_ios_app/index` for a complete tutorial.
|
||||
|
||||
Building an Android App or Desktop Sync Client
|
||||
----------------------------------------------
|
||||
|
||||
@@ -3,9 +3,9 @@ Creating Branded ownCloud Clients (ES only)
|
||||
===========================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:maxdepth: 3
|
||||
|
||||
creating_branded_apps
|
||||
custom_client_repos
|
||||
publishing_android_app
|
||||
.. ../enterprise_ios_app/index
|
||||
../enterprise_ios_app/index
|
||||
13
admin_manual/enterprise_ios_app/index.rst
Normal file
@@ -0,0 +1,13 @@
|
||||
===================================
|
||||
Creating Branded iOS Apps (ES only)
|
||||
===================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
publishing_ios_app
|
||||
publishing_ios_app_2
|
||||
publishing_ios_app_3
|
||||
publishing_ios_app_4
|
||||
publishing_ios_app_5
|
||||
publishing_ios_app_6
|
||||
46
admin_manual/enterprise_ios_app/publishing_ios_app.rst
Normal file
@@ -0,0 +1,46 @@
|
||||
==============================================
|
||||
Building and Distributing Your Branded iOS App
|
||||
==============================================
|
||||
|
||||
Building and distributing your branded iOS ownCloud app involves a large number
|
||||
of interdependent steps. The process is detailed in this chapter over several
|
||||
pages. Follow these instructions exactly and in order, and you will have a nice
|
||||
branded iOS app that you can distribute to your users.
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
* A Mac OS X computer with Xcode (free download) and Keychain Access
|
||||
(included in Utilities)
|
||||
* An iOS developer account on
|
||||
`Developer.Apple.com/ios <https://developer.apple.com/ios/>`_,
|
||||
which costs $99 per year.
|
||||
* An ownCloud Enterprise Subscription, with the ownBrander app enabled on
|
||||
`Customer.owncloud.com <https://customer.owncloud.com/owncloud>`_
|
||||
* Some iPhones or iPads for testing your app, which must have their UDIDs
|
||||
registered in your account on `Developer.Apple.com
|
||||
<https://developer.apple.com>`_. You may register up to 100 devices.
|
||||
|
||||
Procedure
|
||||
=========
|
||||
|
||||
You need the Apple tools to build three provisioning profiles and a P12
|
||||
certificate, which you will email to branding@owncloud.com after building your
|
||||
app with the ownBrander app on `Customer.owncloud.com
|
||||
<https://customer.owncloud.com/owncloud>`_. It is best to create the
|
||||
provisioning profiles and P12 certificate first, before building your app,
|
||||
because you must supply a unique **bundle ID** and an **app group** to build
|
||||
your app. These are created in your account on `Developer.Apple.com
|
||||
<https://developer.apple.com>`_, and with Keychain Access on your Mac computer.
|
||||
|
||||
We use the provisioning profiles and P12 certificate to complete building your
|
||||
app, and then in 24-48 hours your new branded app is loaded into your account
|
||||
on `Customer.owncloud.com <https://customer.owncloud.com/owncloud>`_.
|
||||
|
||||
The next step is to test your app on your registered iOS devices. When it
|
||||
passes testing, the final step is to upload it to your iTunes account for
|
||||
distribution.
|
||||
|
||||
You will need a lot of graphics for building your app, and for your iTunes
|
||||
store listing, in specific sizes and file formats. The ownBrander app and
|
||||
iTunes detail all the image specifications you will need.
|
||||
90
admin_manual/enterprise_ios_app/publishing_ios_app_2.rst
Normal file
@@ -0,0 +1,90 @@
|
||||
==================================
|
||||
Create Certificate Signing Request
|
||||
==================================
|
||||
|
||||
Create a `.certSigningRequest` (CSR) file on your Mac, using Keychain Access.
|
||||
Open Finder, and then open Keychain Access from the Utilities folder.
|
||||
|
||||
.. figure:: ../images/mac-1.png
|
||||
:scale: 80%
|
||||
|
||||
Next, open **Keychain Access > Certificate Assistant > Request a Certificate
|
||||
From a Certificate Authority**.
|
||||
|
||||
.. figure:: ../images/mac-2.png
|
||||
:scale: 80%
|
||||
|
||||
Enter the email address that you use in your Apple developer account, and enter
|
||||
a common name. The common name can be anything you want, for example a helpful
|
||||
descriptive name like "ios-acme". Check **Saved to disk** and **Let me specify
|
||||
key pair information**, then click **Continue**.
|
||||
|
||||
.. figure:: ../images/mac-3.png
|
||||
|
||||
Give your CSR a helpful descriptive name, such as
|
||||
**ios-csr.certSigningRequest**, and choose the location to save it on your hard
|
||||
drive, then click **Save**.
|
||||
|
||||
.. figure:: ../images/mac-4.png
|
||||
|
||||
In the next window, set the **Key Size** value to **2048 bits** and
|
||||
**Algorithm** to **RSA**, and click **Continue**. This will create and save
|
||||
your certSigningRequest file (CSR) to your hard drive.
|
||||
|
||||
.. figure:: ../images/mac-5.png
|
||||
|
||||
In the next screen your certificate creation is verified, and you can click a
|
||||
button to view it, or click **Done** to go to the next step.
|
||||
|
||||
.. figure:: ../images/mac-6.png
|
||||
|
||||
You also get a corresponding public and private key pair, which you can see in
|
||||
the **Login > Keys** section.
|
||||
|
||||
.. figure:: ../images/mac-7.png
|
||||
|
||||
Now login to the **Member Center** on `<https://developer.apple.com/>`_.
|
||||
Click **Certificates, Identifiers, & Profiles**.
|
||||
|
||||
.. figure:: ../images/cert-1.png
|
||||
:scale: 80%
|
||||
|
||||
Then click **iOS Apps > Certificates**.
|
||||
|
||||
.. figure:: ../images/cert-2.png
|
||||
|
||||
Next, click the add button (the little plus sign) in the top right corner of
|
||||
the
|
||||
**iOS Certificate** page.
|
||||
|
||||
.. figure:: ../images/cert-3.png
|
||||
:scale: 80%
|
||||
|
||||
Under "What type of certificate do you need?" check **App Store and Ad Hoc**,
|
||||
then click the **Continue** button at the bottom of the page.
|
||||
|
||||
.. figure:: ../images/cert-4.png
|
||||
:scale: 80%
|
||||
|
||||
The next screen, **About Creating a Certificate Signing Request (CSR)** has
|
||||
information about creating a CSR in Keychain Access. You already did this, so
|
||||
go to the next screen. "Add iOS Certificate", to upload the CSR you already
|
||||
created, then click the **Generate** button.
|
||||
|
||||
.. figure:: ../images/cert-5.png
|
||||
:scale: 80%
|
||||
|
||||
Your new certificate is named **ios_distribution.cer**. Download it to your Mac;
|
||||
then find it and double-click on it to install it properly in Keychain.
|
||||
|
||||
.. figure:: ../images/cert-6.png
|
||||
:scale: 80%
|
||||
|
||||
After installing it, you should see it stored with its corresponding private
|
||||
key in Keychain.
|
||||
|
||||
.. figure:: ../images/cert-7.png
|
||||
:scale: 80%
|
||||
|
||||
Remember to make backups of your keys and certificates and keep them in a safe
|
||||
place.
|
||||
206
admin_manual/enterprise_ios_app/publishing_ios_app_3.rst
Normal file
@@ -0,0 +1,206 @@
|
||||
=================
|
||||
Create Bundle IDs
|
||||
=================
|
||||
|
||||
The next step is to create three **Bundle IDs**. These are unique identifiers
|
||||
for your branded iOS app. You must also create an **App Group** and place your
|
||||
three **Bundle IDs** in your **App Group**. You will need your base **Bundle
|
||||
ID** and **App Group** when you build your app with the ownBrander app on
|
||||
`Customer.owncloud.com <https://customer.owncloud.com/owncloud>`_.
|
||||
|
||||
Create App ID
|
||||
-------------
|
||||
|
||||
Now you must create your App ID. Go to **Identifiers > App IDs** and click the
|
||||
plus button (top right) to open the "Register iOS App ID" screen. Fill in your
|
||||
**App ID Description**, which is anything you want, so make it helpful and
|
||||
descriptive. The **App ID Prefix** is your Apple Developer Team ID, and is
|
||||
automatically entered for you.
|
||||
|
||||
.. figure:: ../images/cert-8.png
|
||||
:scale: 70%
|
||||
|
||||
Scroll down to the **App ID Suffix** section and create your **Bundle ID**.
|
||||
Your
|
||||
**Bundle ID** is the unique identifier for your app. Make a note of it because
|
||||
you
|
||||
will need it as you continue through this process. The format for your **Bundle
|
||||
ID**
|
||||
is reverse-domain, e.g. *com.MyCompany.MyProductName*.
|
||||
|
||||
.. figure:: ../images/cert-9.png
|
||||
:scale: 80%
|
||||
|
||||
The next section, **App Services**, is where you select the services you want
|
||||
enabled in your app. You can edit this anytime after you
|
||||
finish creating your **App ID**. Make your selections and then click the
|
||||
**Continue** button at the bottom.
|
||||
|
||||
.. figure:: ../images/cert-10.png
|
||||
:scale: 80%
|
||||
|
||||
Now you can confirm all of your information. If everything is correct click
|
||||
**Submit**; if you need to make changes use the **Back** button.
|
||||
|
||||
.. figure:: ../images/cert-11.png
|
||||
:scale: 80%
|
||||
|
||||
When you are finished you will see a confirmation.
|
||||
|
||||
.. figure:: ../images/cert-12.png
|
||||
:scale: 80%
|
||||
|
||||
Create App Group
|
||||
----------------
|
||||
|
||||
The next step is to create an App Group and put your App ID in it. Go to
|
||||
**Identifiers > App Groups** and click the plus button (top right).
|
||||
|
||||
.. figure:: ../images/Selection_015.png
|
||||
:scale: 80%
|
||||
|
||||
Create a description for your app group, and a unique identifier in the format
|
||||
*groups.com.MyCompany.MyAppGroup*. Then click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-14.png
|
||||
:scale: 80%
|
||||
|
||||
Review the confirmation screen, and if everything looks correct click the
|
||||
**Register** button.
|
||||
|
||||
.. figure:: ../images/cert-15.png
|
||||
:scale: 80%
|
||||
|
||||
You'll see a final confirmation screen; click **Done**.
|
||||
|
||||
.. figure:: ../images/cert-16.png
|
||||
:scale: 80%
|
||||
|
||||
When you click on **App Groups** you will see your new app group.
|
||||
|
||||
.. figure:: ../images/Selection_019.png
|
||||
:scale: 80%
|
||||
|
||||
Now go back to **Identifiers > App IDs** and click on your App ID. This opens a
|
||||
screen that displays all your app information. Click the **Edit** button at the
|
||||
bottom.
|
||||
|
||||
.. figure:: ../images/cert-18.png
|
||||
:scale: 80%
|
||||
|
||||
This opens the edit screen; check **App Groups**.
|
||||
|
||||
.. figure:: ../images/cert-19.png
|
||||
:scale: 80%
|
||||
|
||||
When you check **App Groups** you'll get a popup warning you "If you wish
|
||||
to enable App Groups for any existing provisioning profiles associated with
|
||||
this
|
||||
App ID, you must also regenerate them." If you are following this guide for the
|
||||
first time, then you have not yet created provisioning profiles, so click
|
||||
**OK**.
|
||||
|
||||
.. figure:: ../images/cert-20.png
|
||||
:scale: 80%
|
||||
|
||||
When you click **OK** the popup is dismissed, and you must click the **Edit**
|
||||
button.
|
||||
|
||||
.. figure:: ../images/cert-21.png
|
||||
:scale: 80%
|
||||
|
||||
Select your app and click **Continue**
|
||||
|
||||
.. figure:: ../images/Selection_026.png
|
||||
:scale: 80%
|
||||
|
||||
Review the confirmation screen, and then click **Assign**.
|
||||
|
||||
.. figure:: ../images/cert-23.png
|
||||
:scale: 80%
|
||||
|
||||
You will see the message "You have successfully updated the App Groups
|
||||
associations with your App ID." Click **done**. If you go to **Identifiers >
|
||||
App IDs** and click on your app, you'll see an additional confirmation that you
|
||||
successfully assigned your app to your app group.
|
||||
|
||||
.. figure:: ../images/cert-24.png
|
||||
:scale: 80%
|
||||
|
||||
Create a DocumentProvider Bundle ID
|
||||
-----------------------------------
|
||||
|
||||
Now you must return to **Identifiers > App IDs** and click the plus button to
|
||||
create a DocumentProvider Bundle ID. Follow the same naming conventions as for
|
||||
your App ID.
|
||||
|
||||
.. figure:: ../images/cert-25.png
|
||||
:scale: 80%
|
||||
|
||||
Confirm your new App ID and click **Submit**.
|
||||
|
||||
.. figure:: ../images/cert-26.png
|
||||
:scale: 80%
|
||||
|
||||
You will see one more confirmation; click **Done**. Now you need to add it
|
||||
to your App Group. Go to **Identifiers > App IDs** and click on your new
|
||||
DocumentProvider Bundle ID to open its configuration window, and then click the
|
||||
**Edit** button.
|
||||
|
||||
.. figure:: ../images/Selection_035.png
|
||||
:scale: 80%
|
||||
|
||||
Select **App Groups** and click the **Edit** button.
|
||||
|
||||
.. figure:: ../images/cert-28.png
|
||||
:scale: 80%
|
||||
|
||||
Select your group and click **Continue**.
|
||||
|
||||
.. figure:: ../images/Selection_037.png
|
||||
:scale: 80%
|
||||
|
||||
On the confirmation screen click **Assign**, and you'll see the message "You
|
||||
have successfully updated the App Groups associations with your App ID."
|
||||
|
||||
Create a DocumentProviderFileProvider Bundle ID
|
||||
-----------------------------------------------
|
||||
|
||||
One more time, go to **Identifiers > App IDs** and click the plus button to
|
||||
create a DocumentProviderFileProvider Bundle ID. Follow the same naming
|
||||
conventions as for your App ID, then click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-30.png
|
||||
:scale: 80%
|
||||
|
||||
Confirm your new App ID and click **Submit**.
|
||||
|
||||
.. figure:: ../images/cert-31.png
|
||||
:scale: 80%
|
||||
|
||||
You will see one more confirmation; click **Done**. Now you need to add it to
|
||||
your App Group. Go to **Identifiers > App IDs** and click on your new
|
||||
DocumentProviderFileProvider Bundle ID to open its configuration window, and
|
||||
then click the **Edit** button.
|
||||
|
||||
.. figure:: ../images/cert-32.png
|
||||
:scale: 80%
|
||||
|
||||
Select **App Groups** and click the **Edit** button.
|
||||
|
||||
.. figure:: ../images/cert-33.png
|
||||
:scale: 80%
|
||||
|
||||
Select your group and click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-34.png
|
||||
:scale: 80%
|
||||
|
||||
On the confirmation screen click **Assign**, and you'll see the message "You
|
||||
have successfully updated the App Groups associations with your App ID."
|
||||
|
||||
Now you should have three new App IDs, and all three of them should belong to
|
||||
your App Group. (You can verify group membership by going to the edit
|
||||
screen for each App ID and looking at the **iOS App ID Settings**.)
|
||||
|
||||
.. figure:: ../images/cert-37.png
|
||||
40
admin_manual/enterprise_ios_app/publishing_ios_app_4.rst
Normal file
@@ -0,0 +1,40 @@
|
||||
==========================
|
||||
Setting up Testing Devices
|
||||
==========================
|
||||
|
||||
The $99 Apple Developer account allows you to test your iOS apps on a maximum of
|
||||
100 devices, and you must register the UDID of each device in your Apple
|
||||
developer account.
|
||||
|
||||
First you must find the UDIDs of your test devices. The easiest way is to
|
||||
connect to your iTunes account. Then connect your iOS device to your Mac
|
||||
computer. Your device will appear on the left sidebar in iTunes. Click on this
|
||||
to display your device information. Then click on the serial number, and you
|
||||
will your UDID.
|
||||
|
||||
.. figure:: ../images/itunes-udid.png
|
||||
:scale: 80%
|
||||
|
||||
Return to your account on `Developer.apple.com
|
||||
<https://developer.apple.com>`_, go to **IOS Apps >
|
||||
Devices > All**, and click the plus button on the top right to register a new
|
||||
device. You can make the name anything you want, and the UDID must be the UDID
|
||||
copied from iTunes.
|
||||
|
||||
.. figure:: ../images/itunes-udid-3.png
|
||||
:scale: 80%
|
||||
|
||||
If you have a large number of devices to register, you may enter them in a text
|
||||
file in this format, and then upload the file::
|
||||
|
||||
Device ID Device Name
|
||||
A123456789012345678901234567890123456789 NAME1
|
||||
B123456789012345678901234567890123456789 NAME2
|
||||
|
||||
Click ``Download sample files`` to see examples of plain text and markup files.
|
||||
|
||||
.. figure:: ../images/itunes-udid-4.png
|
||||
:scale: 80%
|
||||
|
||||
When you are finished entering your device IDs click the **Continue** button.
|
||||
Verify, and then click **Done**.
|
||||
133
admin_manual/enterprise_ios_app/publishing_ios_app_5.rst
Normal file
@@ -0,0 +1,133 @@
|
||||
============================
|
||||
Create Provisioning Profiles
|
||||
============================
|
||||
|
||||
The next phase is to create three provisioning profiles. These are the profiles
|
||||
that you will email to branding@owncloud.com after building your branded app
|
||||
with the ownBrander app on
|
||||
`Customer.owncloud.com <https://customer.owncloud.com/owncloud>`_.
|
||||
|
||||
First Provisioning Profile
|
||||
--------------------------
|
||||
|
||||
Go to **Provisioning Profiles > All**, then click the plus button (top right)
|
||||
to open the *Add iOS Provisioning Profile* screen. Select *Ad Hoc* and click
|
||||
**Continue**.
|
||||
|
||||
.. figure:: ../images/cert-35.png
|
||||
:scale: 80%
|
||||
|
||||
On the **Select App ID** screen select the first of the three App IDs that you
|
||||
created and click **Continue**. (The first one has the shortest name, if you
|
||||
followed the naming conventions in this manual.)
|
||||
|
||||
.. figure:: ../images/cert-36.png
|
||||
:scale: 80%
|
||||
|
||||
Select the certificate that you created at the beginning of this process and
|
||||
click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-38.png
|
||||
:scale: 80%
|
||||
|
||||
Select the devices that you want to install and test your app on, then click
|
||||
**Continue**.
|
||||
|
||||
.. figure:: ../images/cert-39.png
|
||||
:scale: 80%
|
||||
|
||||
Name your provisioning profile with a descriptive **Profile Name**, which is
|
||||
your **bundleID**, and click **Generate**.
|
||||
|
||||
.. figure:: ../images/cert-40.png
|
||||
:scale: 80%
|
||||
|
||||
When it has generated, download your new profile to your Mac computer.
|
||||
|
||||
.. figure:: ../images/cert-50.png
|
||||
:scale: 80%
|
||||
|
||||
Find it on your Mac (usually the Download folder) and double-click to install
|
||||
it in Xcode.
|
||||
|
||||
.. figure:: ../images/cert-41.png
|
||||
|
||||
Second Provisioning Profile
|
||||
---------------------------
|
||||
|
||||
Return to the "Your provision profile is ready" screen, scroll to the bottom
|
||||
and click **Add Another**. On the following screen select **Ad Hoc** and click
|
||||
**Continue**.
|
||||
|
||||
.. figure:: ../images/cert-35.png
|
||||
:scale: 80%
|
||||
|
||||
This time select the Select the **.DocumentProvider** app ID and click
|
||||
**Continue**.
|
||||
|
||||
.. figure:: ../images/cert-42.png
|
||||
|
||||
Select the certificate that you created at the beginning of this process and
|
||||
click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-43.png
|
||||
:scale: 80%
|
||||
|
||||
Select the devices that you want to install and test your app on, then click
|
||||
**Continue**. These must be the same devices you selected for the first
|
||||
provisioning profile, and they will be selected by default.
|
||||
|
||||
.. figure:: ../images/cert-39.png
|
||||
:scale: 80%
|
||||
|
||||
Give this provisioning profile the same **bundleID** as your first profile
|
||||
plus **.DocumentProvider** and click **Generate**.
|
||||
|
||||
.. figure:: ../images/cert-44.png
|
||||
:scale: 80%
|
||||
|
||||
Just like the first provisioning profile, download it to your Mac computer, and
|
||||
then double-click to install it in Xcode.
|
||||
|
||||
Third Provisioning Profile
|
||||
--------------------------
|
||||
|
||||
Return to the "Your provision profile is ready" screen, scroll to the bottom
|
||||
and click **Add Another**. On the following screen select **Ad Hoc** and click
|
||||
**Continue**.
|
||||
|
||||
.. figure:: ../images/cert-35.png
|
||||
:scale: 80%
|
||||
|
||||
This time select the Select the **.DocumentProviderFileProvider** app ID and
|
||||
click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-46.png
|
||||
|
||||
Select the certificate that you created at the beginning of this process and
|
||||
click **Continue**.
|
||||
|
||||
.. figure:: ../images/cert-43.png
|
||||
:scale: 80%
|
||||
|
||||
Give this provisioning profile the same **bundleID** as your first profile
|
||||
plus **.DocumentProviderFileProvider** and click **Generate**. There is a
|
||||
50-character limit, but don't worry about counting characters because it will
|
||||
be automatically truncated if you go over.
|
||||
|
||||
.. figure:: ../images/cert-47.png
|
||||
:scale: 80%
|
||||
|
||||
Download it to your Mac computer, and then double-click to install it in Xcode.
|
||||
You should now see all of your provisioning profiles in your Download folder:
|
||||
|
||||
.. figure:: ../images/cert-51.png
|
||||
:scale: 80%
|
||||
|
||||
And listed in your "iOS Provisioning Profiles".
|
||||
|
||||
.. figure:: ../images/cert-52.png
|
||||
:scale: 80%
|
||||
|
||||
You have one more certificate to create, and that is your P12 certificate.
|
||||
|
||||
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 56 KiB |