Web, Technologies, IA, Vidéo...

janv. 24, 2012

Changement de thème

Je trouvais depuis un certain temps que mon blog n'était pas très visible et peu agréable à l'oeil. Un petit rappel du précèdent thème :

J'ai donc décidé après une longue recherche de mettre en place le nouveau thème actuellement présent sur le site.

N'hésitez pas pour vos remarques.

janv. 23, 2012

FFmpeg, le couteau suisse gratuit de la vidéo

Je travaille avec le logiciel ffmpeg. C'est un outil en ligne de commande utilisé comme base pour beaucoup d'outils plus haut niveau dans le domaine de l'encodage vidéo. L'application est également fortement utilisé par des purs players de la vidéos sur la toile. FFmpeg est complété par une ensemble de librairies : libavcodec, libavformat ou encore libx264 pour le H.264 dont je parlerais plus à la fin du billet.

Commencer sur une bonne base (FR) tiré de la documentation Ubuntu, il permet de voir les premières commandes. Ce petit manuel (en anglais) reprend les différentes options de bases possibles.

Pour aller plus loin, Fabio Sonnati a réalisé 4 articles beaucoup plus poussés. Il est un des experts mondial dans le développement de plateformes média, l'optimisation de la diffusion diffusion et l'encodage des vidéos. Le nom de ces billets veut tout dire : the swiss army knife of Internet Streaming part 1, part 2, part 3, part 4

L'encodage au format H.264 représente 99% des vidéos disponibles sur Internet. Lorsque l'on veut travailler sur ce type d'encodage, il est important de connaître les différents options qui sont offertes entre ffmpeg et la librairie.

janv. 20, 2012

HDS - Late Binding Audio avec OSMF

Vous allez me dire, mais qu'est ce que ce titre signifie en réalité ? C'est assez simple, je vais décomposer :

  • Late Binding Audio : comprenez par là la possibilité d'avoir plusieurs pistes audios associé à un flux vidéo
  • OSMF pour Open Source Media Framework, un framework Flex utilisé pour la gestion des vidéos.

Mon article est tiré d'un article en anglais, j'y ajoute cependant quelques points de détails.

Récupéré une vidéo

Dans un premier temps, vous allez devoir récupérer une vidéo et la préparer dans différents formats. Pour préparer ces vidéos, j'ai utilisé ffmpeg (boîte à outils pour le traitement des vidéos) et transcodé les vidéos en MP4.

  • la vidéo originale avec l'audio encodé en format FLV ou un format compatible MP4
  • la piste audio seule provenant de la vidéo originale également au format FLV ou MP4
ffmpeg -i scenes.mp4 -vn -acodec copy -f mp4 scenes-audio1.mp4
  • une piste alternative audio, de préférence de même durée que la vidéo originale, encodé de la même manière* *
ffmpeg -i scenes2.mp4 -vn -acodec copy -f mp4 scenes-audio2.mp4

Packager la vidéo avec les outils f4fpackager

Afin de préparer le contenu, Adobe a rendu disponible un outil : le FilePackager ou f4fpackager; disponible sous Linux ou Windows. On effectue un package pour chacune des vidéos

f4fpackager --input-file=scenes1.mp4 --output-path=test-lba
f4fpackager --input-file=scenes-audio1.mp4 --output-path=test-lba
f4fpackager --input-file=scenes-audio2.mp4 --output-path=test-lba

Vous vous retrouvez maintenant avec les fichiers suivants :

scenes1.f4m
scenes1Seg1.f4x
scenes1Seg1.f4f
scenes-audio1.f4m
scenes-audio1Seg1.f4x
scenes-audio1Seg1.f4f
scenes-audio2.f4m
scenes-audio2Seg1.f4x
scenes-audio2Seg1.f4f

Créer le fichier f4m principal

Nous allons manipuler le fichier f4m afin de prendre en compte les pistes audios. Pour cela, il faut récupérer dans les balises bootstrapInfo et media dans les fichiers scenes-audio1.f4m et scenes-audio2.f4m et les copier dans le fichier scenes1.f4m à la suite de la balise media

                AAABS2Fic3QAAAAAAAAADgAAAAPoAAAAAAAEBWoAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAEIBAAABBmFmcnQAAAAAAAAD6AAAAAAPAAAAAQAAAAAAAAAAAAAQaAAAAAIAAAAAAAAQkAAAETAAAAADAAAAAAAAIegAAA2sAAAABAAAAAAAAC+AAAATiAAAAAUAAAAAAABC4AAADhAAAAAGAAAAAAAAUPAAABEwAAAABwAAAAAAAGH4AAAPoAAAACEAAAAAAAH0KAAAD6AAAAAiAAAAAAACA6AAABS0AAAAIwAAAAAAAhhAAAAPoAAAAD0AAAAAAAOqcAAAD6AAAAA/AAAAAAADyWAAABEwAAAAQAAAAAAAA9poAAAPoAAAAEIAAAAAAAP5WAAADBwAAAAAAAAAAAAAAAAAAAAAAA==



                        AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAcHjU/fO2RgAFd2lkdGgAQIaAAAAAAAAABmhlaWdodABAeUAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAMYXVkaW9jb2RlY2lkAgAEbXA0YQAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAEA5AAAAAAAAAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAGbGVuZ3RoAEFZIZgAAAAAAAl0aW1lc2NhbGUAQNhqAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAwAGbGVuZ3RoAEFoIQAAAAAAAAl0aW1lc2NhbGUAQOdwAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAAAJ

Ajouter des attributs au tags media dans le f4m principal

Pour faire fonctionner le multi-audio, il faudra rajouter les balises suivantes :

  • alternate = "true"
  • type = "audio"
  • lang="français"
  • bitrate=" "

Une fois tout cela prêt, vous aurez à compiler la dernière version de OSMF et à lire la vidéo en appelant le f4m principal que vous venez de préparer.

janv. 10, 2012

[Tribune] La 3D est l’évolution logique du cinéma

Je fais profiter de mon blog à Antoine Cabrera-Marchal (@3dproductionsfr) pour réaliser un article au sujet de la 3D. Personnellement, j'ai du mal avec la 3D peut être parce que j'ai du mal avec l'immersion. Je vous laisse cependant le parcourir.

Avant-propos

Alors, pour être très clair et très précis, on ne dit pas 3D mais relief ou stéréoscopie… La terminologie 3D étant un abus de langage pour désigner les films ou animations réalisés ou convertis en 3D stéréoscopique, permettant la restitution de l’image en relief, notre vision naturelle.

Depuis 2009 (année du re-lancement contemporain de la 3D relief à destination du grand public), j'entends de ci et de la des pseudos journalistes (tout juste méritant un cachet de pigiste pour un site Internet ayant 4 semaines de retard sur l'actualité hi-tech... Evitez les sites avec des chiffres binaires terminant par .net, car de valeur, ils n'ont que leur nom) critiquer avec véhémence ce qui est communément appelé la 3D.

On arrête de polémiquer sur l'arrangement de l'industrie qui cherche à vendre un nouveau matériel, à renouveler les gammes, à vendre, à vous faire dépenser, cracher, enrichir les actionnaires !!! A croire que les avancées technologiques n'étaient qu'un complot du conglomérat technico financier du CAC40 et du NASDAQ pour s’engraisser sur le dos des consommateurs victimes de ce qui brille… Oui, les consommateurs sont des victimes car on les force à acheter…

Et Non ! Les films en reliefs ne sont pas un effet de mode, c’est une réelle évolution technologique des loisirs vidéo et vidéo-ludiques. Ce n’est pas un petit pas technique mais un grand pas pour l’humanité !

Bref !

De la photographie au cinéma en relief

Je suis Lyonnais, et si j'ai bien une belle fierté, c'est de vivre dans la ville qui a vu naitre le cinéma ! Cherchez dans Wikipédia, je ne vais pas vous faire l'article… On a une avenue des Frères Lumière (c'est un indice :) )

Le premier film muet en n&b

Vous êtes un peu au courant de cette représentation ou un train entre dans une gare et ou les téléspectateurs effrayés quittent la salle ? Non… Google… J'ai la flemme de tout vous mâcher… http://fr.wikipedia.org/wiki/L'Arriv%C3%A9e_d'un_train_en_gare_de_La_Ciotat http://www.youtube.com/watch?v=hlb3XKjnZkE

Et puis ?

Ces gens ont juste été surpris par quelque chose de nouveau, d'inhabituel, ils connaissaient les /images fixes, Louis Daguerre et son daguerréotype.

D'une image fixe, on est passé à une image qui bouge… J'entends déjà les premiers grincheux… Qu'est ce que ça apporte ? On avait de superbes photos en n&b et la elles bougent ??!! Ca n'apporte rien à la beauté des corps, des monuments, que l'on peut observer, fixes ; apprécier, éternels… La photo figeait le temps, dans les films, on n’a plus le temps de voir… Des grincheux je vous dis…

Etant photographe, je vous garantie que la lumière est la composante la plus importante pour réussir un cliché, il faut essayer, tourner, atténuer, déplacer, approcher, ... Mais il n’est pas question de se passer de cela dans les films !

Le cinéma en couleur

Puis vient la couleur... Je saute les étapes du parlant, etc… car je ne suis pas assez cultivé... Inculte pour certains lecteurs, j'en suis convaincu…

Une pomme rouge, verte, jaune ? Personnellement, rien qu'à l'évocation, je ressens l'acidité de la granny smith, le coté farineux de la rouge que je mettrais volontiers sur un lit de pate feuilletée… et la jaune passe partout sucrée… En n&b, mon esprit trop imparfait aurait ressenti, … une pomme … avec un goût de … pomme ! :)

Ok des /images avec ces couleurs, c'est bien mais bon… Le noir et blanc a le mérite de faire ressortir les sentiments, les tensions, des nuances que la couleur ne traduit pas… La lumière et le contraste d'une photo en n&b fait passer l'essentiel, le principal... La couleur… ça sert à quoi ? Ce n'est qu'un message qui perturbe le principal, un peu de jaune, de bleu de rouge et ça détourne le message réel d'un cliché non ?… L’exemple de la pomme montre que la couleur ajoute des éléments, évoque des sens complémentaires.

Ce baiser serait-il le même en couleur ?

Et bien non, la couleur n'enlève rien aux nuances de contrastes et de lumière d'un cliché, la couleur apporte de la chaleur, une fraicheur, des sens com-plé-men-taires !
L'erreur serais de mettre de coté le cadre, la circulation de la lumière sur le corps d'une femme, de la statue de David (il en faut pour tous ;) ) pour apporter une touche de bleu ou rouge…. Au passage, un article intéressant.

Mais dites donc… Connaissez-vous des peintres en n&b à part l'œuvre Guernica de Picasso ?

Donc FILM… N&b pour des raisons techniques puis couleur… Vous avez bien saisi l’apport des différentes techniques ?

Parenthèse : Question : rêvez-vous en n&b ou couleur ? Quand la télé couleur n’existait pas, les gens rêvaient en n&b ? Il y a pas mal de publications scientifiques sur le sujet.

Alors… oui, il y a eu des efforts dans les films n&b… mais la couleur… Vous a-t-elle apporté un semblant de sentiment supplémentaire ? Regardez-vous encore des films en n&b ? Vous apportent-ils plus de plaisir ? La liste de Schindler, Sin City ?

La couleur a indéniablement apporté quelque chose de plus, y compris la liste de Schindler ! Il y a des couleurs liées à des sentiments. Une atmosphère glaciale, bleuetée, comme si l'on ouvrait la porte d'un frigo… Ou une atmosphère chaleureuse, romantique, teintée de rouge, lors d'un diner romantique….

Et la haute définition ?

La haute définition…  rien que des pixels en plus… rien à ajouter, enfin oui, c’est plus joli, net… la qualité semble meilleure… Le rendu de la réalité est plus fidèle …

En parlant de fidélité avec ce que l’on souhaite représenter, je rappelle que l’on a toujours existé dans les 3 dimensions voir 4 si l’on inclus le temps qui passe (ou plus, mais on ne va pas s’étendre sur les suivantes), c’est du relief animé… Le reflet de la réalité !

Et on en arrive enfin aux films et animations en relief

A ce jour, c’est cette forme de cinéma qui représente au mieux la réalité et qui ajoute une dimension aux animations.

Ce qu’il faut bien comprendre, c’est que l’on n’enlève rien au cinéma couleur, on ajoute une dimension, donc des possibilités, des émotions !
On n'exclue pas le scénario, la narration, les intrigues, on ajoute de la profondeur, on se rapproche encore de la réalité, de nos rêves, on facilité notre capacité à transposer le personnage héroïque avec notre vie…

Le gain

Le relief, c'est l'immersion, c'est plus de proximité avec le film, c'est jouer avec les héros… vivre avec, ressentir à leur cotés, éprouver le déséquilibre, avoir le vertige, ressentir la vitesse, toucher, avoir un frisson lorsque l'épée de Pirates des caraïbes transperce l'écran…!!!

Comme pour le son spatial qui ajouté une dimension incroyable aux films, le relief nous intègre dans l’action !
Une petite expérience : écoutez un morceau en mono, avec un casque, avec un système 5.1 ou 7.1… Franchement, il n'y a pas …"PHOTO" ! Pourriez-vous vous en passer aujourd’hui ?

On veut des sensations !

Certains attendent d’un film que ça bouge de partout, que les couleurs soient incroyables, mais ce n’est pas le cas général.
Pour les films en relief, certains attendent qu’il y ait des effets de profondeur et de jaillissement partout et ils sont déçus que les films ne soient pas pleins de ces artefacts mais ils ne représentent pas non plus la majorité !

Les publicités Haribo ou Oasis (je fais de la pub, envoyez-moi des caisses de bonbons et des cannettes siouplé) sont bluffantes, pleines d’effets de jaillissement vers les spectateurs, on a envie d’attraper les chamalows au vol, ou on détourne la tête pour éviter les fruits… Mais ce sont des effets de parcs d’attraction ! Comme dans le réel, ces effets fatiguent les yeux. Un film en relief ne doit pas nécessairement comporter cela. Vous donner le vertige lorsque le héro se penche sur une falaise, c’est déjà bien :-) Le vertige oui, la nausée, non !

Et après ?

La 3D relief réveille, éveille nos sens, après les 3 dimensions de l’espace, on imagine plus de sensations : odorat, mouvements, ce que l'on appelle la 4eme dimension dans les parcs d'attraction par exemple. C'est une révolution ou le rêve et l'évolution se mêlent, s'emmêlent !
On peut également imaginer une autre évolution dans laquelle la captation ou la réalisation des films permettrait de reconstituer l’ensemble du volume d’une scène, puis de s’y aventurer en devenant soit même le cadreur. Encore un autre débat…

* Antoine Cabrera-Marchal*

déc. 05, 2011

PHPTour 2011 - Retour des deux journées

L'AFUP a mis en place cette année un nouvel événement : le PHPTour qui est itinérant et s'est déroulé pour la première fois à Lille. J'avais publié la liste des conférences auxquelles je pensais assister. Cet article sera surtout un retour rapide sur certaines des sessions qui je pense sont à retenir voire à étudier.

PHP 5.4

Julien Pauli a pris le relais de David Soria Parra (malade) pour réaliser la présentation de PHP 5.4. On retiendra les points suivants en terme de process :

  • Une release php par an (pour suivre ubuntu)
  • Possibilité de publier une RFC (Requests For Comment)
  • Durée de vie 3ans pour une version
  • Cassage de compatibilité uniquement entre les releases majeures

Côté code, on notera :

  • *new SessionHandler, *
  • une amélioration de la CLI
  • le mixins pour les traits
  • E_ALL contient E_STRICT
  • Passage du code svn à Gît
  • Amélioration performance sur temps d'exécution et mémoire (

Xquery - XML

Jai souvent vu dans des articles des éléments sur XQuery, mais je ne m'étais jamais penché sur la question. J'aurais sûrement dû car c'est un sujet à creuser dans le cas où le XML est à manipuler. Deux informations principales sont à retenir :

  • Xquery permet de faire de la lecture, des recherches, du streaming de fichiers XML
  • L'importation d'un fichier XML de 700Mo prend :
  • via SimpleXML 9 Go en empreinte mémoire
  • Xquery seulement 19 Mo

20minutes tenue en charge site média

Pour gérer une tenue en charge, il y a 3 étapes :

  1. la mesure
  2. la (ou les) solution(s)
  3. l'analyse

Phpcloud

C'est l'annonce faite par Zend cette année. On y retiendra que c'est une plateforme de développement avec le debug et une grande partie des outils Zend. Pour des sociétés déjà présentes, je ne pense pas que cela soit intéressant en revanche pour un développeur indépendant ou une équipe qui se monte, cet outil permettrait d'industrialiser rapidement les choses.

Atoum

Frédéric Hardy n'a pas effectué une session technique, mais un historique de son framework de test unitaires. Les points suivants résumeront l'état d'esprit dans lequel le framework a été mis en place :

  • il faut apprendre à écrire des tests
  • Trois valeurs
  • Simplicité utilisation, un seul fichier à utiliser, une seule archive, autorun, langage naturel (vocabulaire évolutif),  : facile, rapport complet et modifiable
  • Moderne version de php, isolation des tests (sandbox), parallelisation,
  • Intuitif, logique floue, interfaces fluides, API cohérente, choix des tests à exécuter
  • Gain productivité et qualité

Magento

Cette session était très intéressante, dans le sens où ce n'était pas un technicien qui l'effectuait, mais un responsable webmarketing. C'est très rare de voir ce type de personnage dans des conférences techniques et je tiens à saluer le geste. En revanche, j'ai été fortement déçu de la réaction critique de certains...

La question lors de cette session était : peut-il tout gérer ou faut-il une solution maison ? Pour toutes les plateformes dont mobile, widgets. Deux solutions avaient été retenus : Drupal et Magento. Après le choix de Magento, plusieurs surprises sont survenus; deux exemples : le dimensionnement : 1 énorme serveur pour gérer la charge et 6,55 min par produits.

Magento répondant uniquement à 20% de leur demande, ils ont préférés revenir sur des solutions maisons et plus agiles : photo mail (picassa like), outil permettant la visualisation de tribunes pour les commerciaux, mise en place d'API e-shop.

Dev/admin. Sys

Cette conférence était plutôt un retour sur les problèmes entre les équipes de développements et les administrateurs systèmes. On pourrait résumer cela à un StreetFighter. L'une des solutions peut être le DevOps. Ce terme pourrait se traduire par une philosophie par exempel : un développement aurait une meilleure connaissance de son éco-système. Ce n'est pas un métier, mais un état d'esprit.
Structuration du travail et des opérations sur toute la chaîne est très important et les bonnes interactions entre les deux entités sont primordiales pour faire avance les choses plus rapidement. Il est également important de choisir le bon outil en fonction des besoins.

Cryptologie

Cette session a été annoncée en dernière minute, mais c'était l'une des plus pointus techniquement. Sans doute en raison de la non connaissance de la plupart des développeurs des outils de cryptages. Les éléments à étudier sont

On pourra retenir que la cryptographie ce n'est pas la sécurité et qu'il faut être en PHP5.3 pour accéder à ces fonctionnalités.

En résumé, je tiens à remercier l'ensemble de l'équipe d'organisation de l'AFUP mais également l'ensemble des conférenciers. Comme chaque année, j'ai pu revoir pas mal de personne que je connaissais. Je serais vraisemblablement présent au prochain ForumPHP qui se déroulera en juin 2012 à Paris.

déc. 01, 2011

Arduino 1.0 libéré

J'en parlais dans un précédent billet, maintenant c'est officiel : la version 1.0 d'Arduino est enfin sorti. C'est finalement 1 mois et demi après l'annonce des RC que la sortie finale est réalisée.

La nouvelle mouture inclus nativement :

  • le support de DHCP et DNS : très intéressant dans des mises en applications réseaux
  • des modifications dans la classe Serial et l'intégration d'une classe SoftwareSerial
  • le support multiple de fichier dans le librairie SD
  • et beaucoup d'autres évolutions et modifications.
La note de sortie est disponible ([release note](http://arduino.cc/en/Main/ReleaseNotes)). Cette sortie également officialise la stabilité du système.

nov. 28, 2011

[JM2L] Présentation de l'Arduino

Ma conférence "Présentation de l'Arduino" s'est déroulé ce week-end. J'ai pu profiter du soleil de la Riviera. Et je vous fais maintenant profiter du support de présentation, la vidéo sera disponible prochainement.

Je tiens en parallèle à remercier toute l'équipe d'organisation des JM2L et du conseil d'administration de Linux-Azur pour leur accueil et leur assistance. Je tiens à remercier tout particulier Renée Mages. J'aurais surement des sujets liés au libre pour la prochain édition.

nov. 21, 2011

La semaine des conférences

Le mois de novembre est l'un des mois les plus chargé de l'année en conférence, séminaires. Pour ma part, c'est cette semaine. En effet, je serais présent à deux conférences, l'une en tant que spectateur et l'autre en tant que conférenciers.

Je pars mercredi pour suivre le PHPTour qui se déroulera à Lille jeudi et vendredi. J'ai d'ailleurs déjà effectué ma sélection de session.

Je redescendrais ensuite samedi matin sur Nice pour me rendre aux Journées Méditerranéennes du Logiciel Libre, où je réaliserais une session de présentation de l'Arduino.

Dans un cas, comme dans l'autre, n'hésitez pas à me faire signe si vous souhaitez échanger autour d'un verre ou autre petit four...

nov. 16, 2011

Mon programme du PHPTour à Lille

Cette année, pas de ForumPHP à Paris faute de travaux à la Villette. Cependant, l'AFUP a mis en place une nouvelle formule : le PHPTour, un événement itinérant qui se déroulera dans une ville différente à chaque fois. Cette année, c'est à Lille et j'y serias. A ce sujet, je vous fais part de mon programme des sessions que je suivrais.

Le jeudi, je commencerais par la présentation de PHP 5.4 par David Sora Parra en session plénière. Ensuite, pour la première matinée de sessions:

  • Traitement XML de pointe avec PHP et XQuery
  • Tenue en charge d'un site média
  • Optimiser la performance business de votre site avec l'A/B testing.
Après un bon repas, je suivrais la conférence de Zeev Suraski qui présentera le nouveau produit phpcloud.com. J'aimerais en savoir plus sur ce sujet. L'après midi se poursuivra avec:
- La conférence sur les tests Mock, Stubs et Tests m'intéresse particulièrement car mon projet actuel me pose quelques soucis concernant la mise en place des tests - la présentation d'Atoum, le framework de test unitaire, mis en place par Frédéric Hardy - je terminerais la première journée par la présentation : Pourquoi on a abandonné Magento au profit d'un dévéloppement spécifique. Très intéressé de connaître les différents éléments qui les ont poussés à ce choix
Pour la deuxième journée :
- êtes-vous prêt pour le succès ? - Comment développer et déployer une application PHP maintenable ? J'espère pouvoir glâner des bonnes pratiques, cela peut notamment aider dans le cadre de déploiement d'applicatif PHP (non web) - Profiling PHP Applications par Derick Rethans. Je rappelle que Derick est le créateur de Xdebug entre autres... - Sécurité des applications PHP, j'attends de voir sous quel angle sera réalisé cette session
Pour la dernière demi-journée, encore une fois, j'aimerais me divisé pour aller à toutes les sessions. Mais il faut faire un choix :
- Caching and Tuning fun for high scalability - dev et admin sys : une cohabitation simplifiée... pour éviter de se taper dessus entre les deux équipes ;)
Ca fait un bon programme et je préparerais un compte-rendu des sessions que j'aurais suivi dans ce blog.

nov. 14, 2011

Ce robot est l'un des plus rapide du monde...

Ce petit bijou de robotique est suisse. En plus d'être rapide, il est également extrêmement précis, ce qui lui laisse un large champ d'application.

Les moteurs sont en rotation mais en sortie le mouvement est toujours une translation. Inventé par Reymond Clavel, ce robot est inspiré de l'industrie du chocolat. Le robot avec du matériel standard atteint les 15G d'accélérations. On entend d'ailleurs parler d'un robot qui atteint les 100G.

C'est juste hallucinant. La vidéo parle d'elle-même.

← Previous Next → Page 5 of 12