You are on page 1of 20

SocialPlayer

the broadcasting software of messages


from the most famous social networks.

User Manual

rev. 12/03/2019

Style and innovation with


2 / 20
Introduction

ClassX srl
Via Del Tiglio 91
56012 Calcinaia (PI) ITALY
Tel. Fax. +39 0587 48 81 28
E-Mail: support@classx.it
Home-Page: www.classxcg.com

Copyright:
No part of this manual may be reproduced or transmitted in any form or by any means, electronic or mechanical,
including photocopying and recording, for any purpose without the express written permission of a duly
authorized representative of ClassX srl.

The information contained within this manual is believed to be true and correct at the time of publication.

ClassX, CastaliaCG, MoreCG, CoralCG, LiveBoard, SGL, TemplateActions, LiveStadium, FrameMarker,


MediaPlug, SocialServer, SportsGraphics, ThemeChannel are registered trademarks of ClassX srl.

All other brand names are trademarks of their respective holders.

© Copyright 2000-2019 ClassX srl. All rights reserved. Unpublished rights reserved under International copyright
laws.

3 / 20
Introduction

1 Introduction
Compliments for having purchased SocialPlayer, the broadcasting software of messages from the most famous
social networks.

1.1 What is SocialPlayer ?


SocialPlayer is a complete system for broadcasting messages from SocialServer. It is the messages manager,
able to directly manage an unlimited number of messages according to an accounts profile. It provides a set of
tools for managing, filtering and selection of messages to be broadcast.

The diagram in the figure clearly describes the architecture that links SocialServer and SocialPlayer.

SocialPlayer can be connected together via a local network to more SocialServer running on separate
machines. Each SocialServer manages and candidates for the broadcast messages from Social Network
account. SocialPlayer collects all the candidates messages and sends them through a graphics content into
LiveBoard.

4 / 20
Installation

2 Installation
2.1 System Requirements
ClassX applications are subjected to a long and thorough beta-testing period in order to prevent malfunctions
and ensure, at all times, the best performance. The information listed below will guide you in the process of
setting up your workstation.

Supported Video Cards:

Brand Model
BlackMagic DeckLink 8K pro
BlackMagic DeckLink 4K Extreme 12G
BlackMagic DeckLink Studio 4K
BlackMagic DeckLink SDI 4K
BlackMagic DeckLink Quad 2
BlackMagic DeckLink Duo 2
BlackMagic DeckLink Mini Recorder 4K
BlackMagic DeckLink Mini Monitor 4K
BlueFish444 SD/HD/4K
AJA SD/HD/4K
NewTek Tricaster

System Requirements:

Hardware/Software Minimum Recommended


Operative System Windows 10 Windows 10 Pro
Disk HDD SSD
RAM 16 GB DDR3 32GB DDR4
CPU Dual-Core Quad-Core
GPU GeForce GTX 750 GeForce GTX 1050 TI

2.2 System Configuration


Bios Settings

• Disable Hyper Threading: Enter the Bios by pressing “Del” at startup and find the Hyper Threading
feature in the Processor options and disable it.

Windows Settings

• Disable the screensaver (Control Panel/Display Properties /Screensaver/None).


• Enter Power Management (Control Panel/Power Options) and switch to “High performance”,
moreover set “Put the computer to sleep” to “Never”.
• If your computer has at least 8GB RAM, disable virtual memory (right click on "My Computer/Advanced/
Performance/Settings/Advanced/Virtual Memory/Change/No Page File").

5 / 20
Installation

QuickTime Player

LiveBoard doesn't need QuickTime installed to play “MOV” files at 32/64 bit, only ClassX Templates Editors
(CastaliaCG, MoreCG and CoralCG) need QuickTime installed to use “MOV” files (only at 32bit).
QuikTime Player has to be installed in its full installation. If you are installing QuickTime from scratch, choose
the custom installation and enable the installation of all options, especially Quicktime For Java.
If you have QuickTime Player already installed without QuickTime for Java, you'll need to uninstall Quicktime
and install it again from scratch (“repair” will not work for this feature).

Media Settings / Audio / Video

• Install LAVFilters for the decoding media files of popular formats.


(https://github.com/Nevcairiel/LAVFilters/releases/)

• Install Newtek codecs in order to create AVI files with alpha-channel


(http://www.newtek.com/support/documentation.html)

• Install NDI Tools


(https://www.newtek.com/ndi/tools/)

2.3 Protection
The biggest danger to your and our investment is software piracy (in many countries it is not even recognized by
current morality as "theft"). Despite the time spent looking for an effective and painless protection for your
SocialPlayer, someone copies or tries to do so, despite laws and sanctions.
Please keep in mind that all the time spent in the development of a new protection scheme has NOT been
dedicated to the development of a new function or feature of the program. Please consider also that the
development of a new protection involves the writing of these amenities and obviously leads to a greater
hardship for registered users, who will be forced awkward maneuvers to secure their interests.

2.3.1 Product download/Update - Entering the registration key – Product activation

You will need to download the initial ClassX distribution from your account:
Please register on http://www.classx.it/dashboard/ and fill in the form correctly. The request will be processed by
ClassX and a return e-mail will be sent to you with your credentials (that are going to be your email and a
password) to access your account in the ClassX Dashboard.

Please save this mail since with your password since you will need it for every access to your Account. It is
not possible to change the password assigned by ClassX.

The DashBoard will give you access to the Download Area and to the area where you can see your licenses.
The Download area will by default contain the download link to the CD_Broadcast v6 and will contain the v6
updates (Broadcast_Install) if your ClassX Maintainance Agreement (CMA) is active.

You will need to install the CD first, containing the ClassX Distribution (pls do not change the installation path).
Once you're through installing the CD, you may install the Broadcast_Install exe file, that will update the
Distribution to its' most recent version.
Any future update will be a Broadcast_Install file, please check the dates.

Your ClassX Applications will be installed by default in C:\ClassX_Applications_V6.


You will find SocialPlayer in a dedicated folder. Each application has 4 executable versions: SocialPlayer (32
bit), SocialPlayer_c (32 bit), SocialPlayer (64 bit) and SocialPlayer_c (64 bit). The _c means that the program
will run with an opened console. Every one of these executables have the same access codes and need to be
registered separately. Normally you're going to use only one, so choose it and create a shortcut to your desktop.
See par.1.4 for further information on the file organization.
Please right- click on the executable file that you chose to run for the first activation and select “Run as
Administrator” . This requirement is essential for the registration of SocialPlayer, because only administrators
can register the software on your computer.

6 / 20
Installation

You have the choice to activate the software with a USB dongle or with a Network Key, depending on what kind
of license you purchased. To retrieve your password you can send an email to ClassX specifying the personal
data, serial number and the KeyID of the dongle.

USB: enter name and surname or company name into the Nickname field,
valid e-mail, Serial Code and Product Key (the last two are provided to you
by ClassX) to register SocialPlayer. After you have typed in all the data, just
press "Confirm registration" to start using the program. If the serial number
and password have been entered correctly, the registration window will
never be displayed again, because the information will be part of the
program, as long as the USB Dongle is inserted.

The serial number and the password uniquely identify the license owned by
the user who can use the program without any limitation (WARNING: When
inserting the passwords, observe the uppercase and lowercase). Better
do a copy-and-paste from the email that you get from ClassX.

NETWORK: enter name and surname or company name into the Nickname
field, e-mail, Password and Serial Code to register to the network. A valid
internet connection must be running continuously in order to use the
Network registration and to use SocialPlayer.
Email and Password are the same that ClassX provides you when you
register to the ClassX Dashboard, while the Serial Code is unique for the
product license that you purchased or are trying in a Demo version.

DEMO VERSIONS: demos work only with Network licenses, when you
request a demo from ClassX, you will be given a unique serial code and will
use it along with your Name, Email and Password to register. Demos have a
30 days working period and are functionally unlimited, i.e. they no product
limitations.

Notes: If you enter an incorrect password, SocialPlayer will be closed automatically in few minutes.

Warning: the serial number and password uniquely identify the user of the program. By installing the
program, you agree not to disclose your personal codes and key in any way.

Warning: the user is solely responsible for the safekeeping of the USB dongle. The USB dongle must be
stored carefully and kept in a safe place after use. The loss of the USB dongle causes the termination of
the license. To reactivate the software, the user will have to buy a new license. If the USB dongle should turn
out to be defective, ClassX agrees to replace it free of charge. The USB dongle remains the property of
ClassX and is granted solely to the legitimate user's use of the ClassX software.

7 / 20
Installation

2.4 Organization of files and directories


After the installation process, as we have already seen, you will find a folder on your hard drive in C:\ called
"ClassX_Applications" containing files and folders of the ClassX Distribution.

In detail, the folder "ClassX_Applications" contains the following directories:

Folder "SocialPlayer" - contains the application and everything you need for SocialPlayer.
Folder "jre" - contains the directories and libraries needed by the ClassX application.
"Shared" folder - contains all the resources shared by ClassX applications (Images,
Video, DataSource, Scripts, Audio, 3D objects, preset themes, etc..).

The folder "SocialPlayer" contains the main program, it supports files and any additional
trays to complete the program. The following are the contents of the SocialPlayer
directory:
Folder "doc" - contains all the related documents, such as manuals.
Folder "projects" - contains all the projects that come with SocialPlayer and is the
directory where new projects will be saved unless the user defines a new path.
Folder "export" - contains all the animations and sequences of frames generated by
SocialPlayer.
Folder "presets" - contains all the presets that come with various versions of
SocialPlayer.

With the introduction of the 64-bit architecture, folder "SocialPlayer" contains four
executables: SocialPlayer64.exe and SocialPlayer.exe: the name of the executable that has the suffix 64 will
start the 64-bit version, while the other one will work at 32 bit; the file name SocialPlayer_c.exe or
SocialPlayer64_c.exe allows you to start SocialPlayer with the console.

Warning: the folders "platform", "shared / plugins" contain files necessary to run SocialPlayer. These
folders and related files should neither be moved, nor renamed or altered.

2.4.1 The ClassX conventions for naming files

To further facilitate the work of maintaining on-disk files, it is advisable to use appropriate names, chosen on the
basis of small and clever everyday-rules that can greatly reduce searching times.
For example, if we were to save a SocialPlayer project to a topic, it would be advisable to use the name
"Argument.cst" and the corresponding sequence of frames with "Argument_xxx.jpg".
The name "topic" would immediately understand what it is, while suffixes ".cst" and ".jpg" serve to indicate the
file type.
In general, therefore, the prefix should indicate the category of file (eg "Theme_", "Title_" etc..), While the suffix
represents the type (ex ".gif", ". jpg", ". cst ", etc...).
Note: SocialPlayer automatically adds the appropriate extensions when saving files.

8 / 20
User interface

3 User interface
SocialPlayer is a stand-alone application designed to broadcast the messages received from SocialServer
through a graphic template created with MoreCG, CastaliaCG or CoralCG located on LiveBoard. The connection
between SocialServer, SociaPlayer and LiveBoard can be performed only through the Local Area Network
(LAN).

SocialPlayer can be connected simultaneously to several SocialServer running on separate workstations, but
accessible via the local network. The candidates messages from the various workstations of SocialServer are
collected into a single list. As SocialServer, the list displays for each message:

• User profile picture that wrote the message.


• Account type: Facebook, Twitter, Instagram, SMS.
• Status of the message.
• Username who wrote the message.
• Text message.
• Post time which refers to the time elapsed between the last update and the date of publication of the
message.

In the lower part, SocialPlayer displays the connection status with LiveBoard and SocialServer, the number of
messages in the list, the number of SocialServer users and a handy tool that allows you to filter messages.

9 / 20
User interface

3.1 The toolbar


The Toolbar provides the tool to airing the social messages, the access to application preferences and to see the
documentation, program information and debug Console.

• File: it allows you to exit the program;


• Preferences: it contains the menu for setting the program;
• Help: clicking on "Help" will open the user manual; "Info" invokes the window shown in the following
figure, which contains useful information on the status of the program.

Memory Management

SocialPlayer has been programmed to optimize


memory usage. At the start of the program is
allocated enough memory to satisfy the need for
initial loading of resources. Allocated memory, uses
only a part, using the remaining ("free memory") in
case of need when using the program. In the event
that the "free memory" is not enough, the program
will allocate more.
The panel above information is used to display the
memory allocated by SocialPlayer, showing the
amount used, total and free. The bar in the center
panel is a graphical representation of memory: the
colored part of shows that used as the transparent
displays the free memory. The panel is updated
periodically, so you can check real-time memory
status.
Clicking the "GC" (garbage-collection) is forced to
release the memory occupied by the resources no
longer used. This is still done automatically by the
program, if necessary.

3.2 Path
In the Preferences menu there is the "Path" tab from
which it is possible to change the path from which the
program will take an image as an icon for the various
accounts.

10 / 20
User interface

3.3 Connection with LiveBoard and SocialServer (Connections tab)


“LiveBoard” and “SocialPlayer” are automatically connected at the startup of SocialPlayer according to the
connection parameters managed on the preferences panel.

As shown in the figure, for each SocialServer you need to know: the IP address of the machine on which
the application is running and the communication port. This information is displayed in a table. The first
buttons on the right allow you to add and remove an item in the table.

The button performs a connection test for each data present: the result is shown in the column
"Connected". If the test fails, the table displays a yellow triangle, in this case, verify if the IP address and
connection port are correct and if SocialServer is running.
The connection with LiveBoard requires the same settings like IP address of the machine where the application
is running, the communication and event port.

3.4 Receiving messages


Once you start the SocialPlayer, the social messages
to be broadcast will come from the various
SocialServer: this is done according to a defined time
interval on the preferences panel. During the arrival of
new messages, SocialPlayer can be easily minimized:
at the arrival of a new message, the application will
display a notification message (see figure).
The property "Hide when minimized" which is in the
preferences panel allows you to view SocialPlayer
between the system icons when it is minimized.

11 / 20
User interface

3.5 Broadcast Message


SocialPlayer is able to play a graphics template created with MoreCG, CastaliaCG or CoralCG with the
information coming from the SocialServer. SocialPlayer changes the value of the objects according to the
information of each social message and sends it on the air using LiveBoard. The “Misc” tab in the preferences
panel allows you to personalize templates for messages and polls, giving you the possibility to specify more
than one name for templates (LiveBoard buttons) by separating them with “;”.

Besides it is possible to set the Social Player to remove the 'new line' characters from the message body, and to
specify messages length ranges: this functionality was added to resolve some problems with the broadcasting
of messages with a scroll.
If you use a single scroll to display messages with different lengths, the message with the shorter text will be
displayed more fast then a message with a longer text.
By setting the ranges of messages length it is possible to specify more scrolls with different timelines to get
results more similar possible: this is done by enabling different groups according to the index of the interval
(“group_0”, “group_1”, etc..).

12 / 20
User interface

3.5.1 Graphic template to broadcast

The graphics template as mentioned earlier is updated by SocialPlayer: in particular to each element of the
template is associated with a message item.

Object Name Object Type Software Description


Content name Button LB, LB LE Name of the graphics template in LiveBoard
Username Text CCG, MCG, CRG Username
Message Text CCG, MCG, CRG Text message
Avatar Picture CCG, MCG, CRG User profile picture
Social Picture CCG, MCG, CRG Social Network icon

Legend:
LB = LiveBoard, LB LE = LiveBoard LE, CCG = CastaliaCG, MCG = MoreCG, CRG = CoralCG

The table above describes how this association is defined: the object with "username" will be associated with
the "User Name" of the message, the object with the "message" will be associated with the text message, and
so on.

username

social avatar message

The names of the objects can be changed according to your needs in the preferences panel. Within CastaliaCG,
MoreCG or CoralCG in the "Data" panel, make sure that the objects "username", "social", "avatar" and
"message" are of "Manual" type.

The preference pane also defines the name of the button that identifies the graphic template in LiveBoard.

13 / 20
User interface

To create polls templates you will need to follow a very similar procedure, with few small differences: you will
need to create different groups, on the basis of the number of items in the poll: for example if the poll has 3
item, you will create a group which will contains the fields repeated tree times.
This group will be named as “results_3”, where the appendix indicates the number of items that this group
contains.
At the same way the fields inside the group will need to have an appendix that indicates to which object it
belongs, starting from 0.
In this way the SocialPlayer before the broadcast will be able to display the correct group and it will be able to
update all its fields.
Regarding the Parterre polls, it is possible to select automatically the guests images, by putting them in a
specific folder, customizable from preferences. To ensure the correctness of this mechanism it is necessary that
the desired image it's in “png” format and has the same name of the guest.

3.5.2 Broadcast: automatic or manual

For airing SocialPlayer relies on the lower part of the program, as shown in the figure.
SocialPlayer allows the broadcasting of messages in two ways: manual or automatic.
The manual mode broadcasts the selected messages on the list starting with the oldest. The button "Play" is
responsible for displaying messages: when pressed, SocialPlayer stores the selected messages and begins to
view them one after the other. The display can be stopped at any time by pressing the same button. On the
contrary, once the sequence of messages, the button returns to the initial state and is ready to manage a new
mailing list. If you delete a selected message after the sequence has started, this will still be aired.
The toolbar “Resume” button allows to resume the graphics template when it is paused. By this way we can
arbitrarily decide the time to display messages without being tied to the duration of the project.
The toolbar “Update” button allows to update the playing graphics template with the data of the selected
messages. By this way when the graphics template is paused, we can dynamically change the on air message
without wait the end of the template in order to display the next message.
You can also send one message at a time by a right-click on the selected message and then on "Put onair" or
simply with the combination of the CTRL + B keyboard.

The automatic mode instead takes no account of the selection, but when you press the button "Play",
SocialPlayer begins to broadcast all messages in the list have not yet been transmitted starting with the oldest.
Once this sequence, SocialPlayer awaits the arrival of new messages in the list to display it. The automatic
mode is enabled in the preferences panel.

In the list of messages ready to air, below the social image, you will see three types of icons:

It shows that the message has just arrived from SocialServer and is ready to air.

It shows that the message was correctly displayed on LiveBoard.

It shows a probable presence of offensive words included in the SocialServer list.

14 / 20
User interface

3.6 Polls
Social Player allows you to receive and broadcast polls from Social Server, with the possibility to choose from
different templates for the results.

The poll question is linked with a single template, that you can set in the preferences. It is displayed in the text
area on bottom left, while the poll results are in the table on the right.

The polls percentage are calculated in a dynamic way, as it is possible to enable or disable some polls option.

It is also possible to edit the descriptions of the different options: this operation is allowed only if you have
choose to do not keep the Social Server values in the preferences.

3.6.1 Poll settings

The poll settings allow the user to define how the template results will be sent on air, giving the ability to define
different templates and behaviors to the same poll.

To edit the settings it is necessary to disable the automatic update to avoid conflicts during the editing.

Each platform supports different functionality, which will be examined in detail in the following sections.

15 / 20
User interface

3.6.2 NeverNo functionality

NeverNo supports only two functionality: “call to action” e “result”.

• Call to action: show a text in the template, usually the poll question or the action that the viewers will
have to undertake. This functionality does not show the results.

• Result: allows to show the poll results.

3.6.3 Parterre functionality

Parterre supports a variety of functionality: “call to action”, “single like/dislike”, “like comparison”, “dislike
comparison”, “like ranking”, “dislike ranking”.

Despite the two different versions (like/dislike) of comparison and ranking, those functionality will be analyzed in
a generic way because the only difference is in the value used to calculate the result.

• Call to action: show a text in the template, usually the poll question or the action that the viewers will
have to undertake. This functionality does not show the results.

• Single like/dislike: show the comparison between like and dislike of a single guest. If more than one
guests are selected, the first will be used.

• Comparison (like/dislike): show the comparison by the value indicated in the functionality (like or
dislike) between all the selected guests, until the max supported by the template.

• Ranking (like/dislike): show the ranking by the value indicated in the functionality (like or dislike)
between all the selected guests, until the max supported by the template.

16 / 20
User interface

3.7 Social wall


SocialPlayer allows to put on air a “social wall” created on exported messages from SocialServer.

The “social wall” consist of two templates, a background (wall) and a template that shows one or more
message at the time (popup).

The interface shows a list with a preview of the message that will be used to build the wall. The list is built on the
exported messages in the csv file and it is not editable.

The controls under the list allow the user to edit some settings of the wall: the path of csv file with the exported
messages, the duration of the popup template, the number of popups on air at the same time, the play mode
(sequential or random) and the kind of images used to build the wall.

This setting allows 3 different possibilities:

• Only images: to build the wall the SocialPlayer will use only messages that contains an image. All the
messages without images will be avoided.

• Only avatars: to build the wall the SocialPlayer will use only messages that contains an avatar.

• Avatars/Images: to build the wall the SocialPlayer will give priority to the image, and if the image is
missing it will use the avatar. In this mode the SocialPlayer will not avoid any message.

Please note. To ensure the correct behavior of the Social Wall the images number and popups number need to
be exactly the same as they are in the templates in LiveBoard.

17 / 20
User interface

3.8 Extra
This section allows you to create additional "buttons" in order to start content in the LiveBoard grid.

With simply right-click on the empty area of the section and then click on "Add". A window will appear as shown:

On "Content Name" it is necessary to specify the name of the LiveBoard content grid button to which it refers,
while on "Description" it is sufficient to write a description which will then appear as a name on the SocialPlayer
button as example:

18 / 20
For the users

4 For the users

4.1 Programming Errors


SocialPlayer was developed with the utmost care and has been tested on different configurations. The program
should be free from problems and ready to be thoroughly exploited.
However, since it has been developed and tested by humans, could suffer from problems never encountered
during the tests. It is an advantage for everyone if the user encountering such a problem sends a detailed written
report to ClassX at support@classx.it bearing the following information:

• configuration
• steps to reproduce problem
• expected result
• obtained result
• workaround (if applicable)
• reproducibility (always/sometimes/rarely)
• level (show-stopper / urgent / low priority)

4.2 Collaboration
Do you have new ideas for improvement of SocialPlayer?
Do you have advice and/or constructive criticism?
You want to develop a new effect or a new form of Export?
Any such communication will be seriously considered and evaluated for the development in a next version of
SocialPlayer.

4.3 How to obtain support via internet by ClassX


Please send an email to support@classx.it, remembering to include in the subject line the word "SUPPORT to
SocialPlayer ". Please allow us a week's time to answer your mail if you have no priority support-contract with
ClassX (ClassX Maintenance Agreement).

All the latest news about SocialPlayer and other products can be found at www.classxcg.com

Find tutorials, Tips&Tricks and more videos on our YouTube channel:


https://www.youtube.com/user/ClassXDevelopment

4.4 Important
Nothing contained in this document will give rise to representations or warranties, express or implied,
with respect to the products described herein, the functionality, compatibility and availability.
In addition, the ClassX assumes no responsibility or liability for statements or assertions made by itself
or by third parties or vendors in the prints reproduced here.
In any case, ClassX will never be liable for any direct, indirect, incidental or consequential damages
resulting from any claims that may arise from allegations here, although there was no information on the
possibility of such damages.

19 / 20
For the users

General index
1 INTRODUCTION................................................................................................................................................ 4
1.1 WHAT IS SOCIALPLAYER ?................................................................................................................................ 4

2 INSTALLATION.................................................................................................................................................. 5
2.1 SYSTEM REQUIREMENTS................................................................................................................................... 5
2.2 SYSTEM CONFIGURATION.................................................................................................................................. 5
2.3 PROTECTION................................................................................................................................................... 6
2.3.1 Product download/Update - Entering the registration key – Product activation.....................................6
2.4 ORGANIZATION OF FILES AND DIRECTORIES.......................................................................................................... 8
2.4.1 The ClassX conventions for naming files...............................................................................................8

3 USER INTERFACE............................................................................................................................................. 9
3.1 THE TOOLBAR................................................................................................................................................ 10
3.2 PATH............................................................................................................................................................ 10
3.3 CONNECTION WITH LIVEBOARD AND SOCIALSERVER (CONNECTIONS TAB).............................................................11
3.4 RECEIVING MESSAGES.................................................................................................................................... 11
3.5 BROADCAST MESSAGE................................................................................................................................... 12
3.5.1 Graphic template to broadcast............................................................................................................ 13
3.5.2 Broadcast: automatic or manual.......................................................................................................... 14
3.6 POLLS.......................................................................................................................................................... 15
3.6.1 Poll settings......................................................................................................................................... 15
3.6.2 NeverNo functionality......................................................................................................................... 16
3.6.3 Parterre functionality............................................................................................................................ 16
3.7 SOCIAL WALL................................................................................................................................................. 17
3.8 EXTRA.......................................................................................................................................................... 18

4 FOR THE USERS............................................................................................................................................. 19


4.1 PROGRAMMING ERRORS................................................................................................................................. 19
4.2 COLLABORATION............................................................................................................................................ 19
4.3 HOW TO OBTAIN SUPPORT VIA INTERNET BY CLASSX...........................................................................................19
4.4 IMPORTANT.................................................................................................................................................... 19

20 / 20

You might also like