Achat Villa à Marrakech : Guide Légal et Étapes Administratives

Achat d’une Villa à Marrakech : Ce que Dit la Législation Marocaine

Achat Villa à MarrakechMarrakech, surnommée la « Perle du Sud », attire chaque année des milliers d’investisseurs désireux d’acquérir une résidence dans cette ville historique. L’achat d’une villa à Marrakech est un investissement stratégique, que ce soit pour une résidence principale, secondaire, ou à des fins locatives. Cependant, il est essentiel de comprendre la législation marocaine avant de se lancer dans cette transaction immobilière, afin d’éviter les obstacles juridiques. Cet article vous guidera à travers les aspects légaux de l’achat d’une villa à Marrakech, tout en soulignant les étapes à suivre pour sécuriser votre investissement.

1. Le Cadre Légal de l’Achat Immobilier au Maroc

1.1. Le Dahir des Obligations et des Contrats (DOC)

Le Dahir des Obligations et des Contrats est le texte de loi principal qui régit les transactions immobilières au Maroc. Ce code juridique encadre les droits et obligations des acheteurs et des vendeurs, et garantit que chaque transaction est réalisée dans le respect de la loi marocaine. Il est crucial de comprendre que tout contrat de vente ou d’achat de villa doit être rédigé et signé en respectant les règles du DOC.

1.2. L’Immatriculation Foncière

Au Maroc, l’immatriculation foncière est essentielle pour garantir la légalité d’un bien immobilier. Avant de procéder à l’achat d’une villa à Marrakech, il est impératif de vérifier que le bien est immatriculé auprès de l’Agence Nationale de la Conservation Foncière, du Cadastre et de la Cartographie (ANCFCC). Ce processus permet de sécuriser les transactions en s’assurant que le vendeur est le véritable propriétaire du bien et que la propriété est libre de toute hypothèque ou litige.

1.3. Les Types de Propriétés

Le marché immobilier au Maroc se divise en plusieurs types de propriétés :

  • Propriétés immatriculées : Ces biens sont inscrits au registre foncier, ce qui garantit une protection juridique forte. Cela inclut la majorité des villas à vendre à Marrakech.
  • Propriétés non immatriculées : Ces biens sont souvent issus de transactions familiales ou de terres collectives. Ils nécessitent une régularisation avant toute transaction légale.
  • Propriétés Melkya : Ce sont des biens non immatriculés mais appartenant à des familles ou à des communautés. Leur vente peut s’avérer plus complexe et requiert généralement des démarches administratives supplémentaires.

2. Les Étapes Juridiques pour l’Achat d’une Villa à Marrakech

2.1. Vérification des Documents de Propriété

Avant d’acheter une villa à Marrakech, il est crucial de vérifier que le bien dispose d’un titre de propriété valide et qu’il est bien inscrit au registre foncier. Cette vérification permet de s’assurer que la villa n’est pas grevée d’hypothèques ou impliquée dans des litiges juridiques. Il est souvent recommandé de faire appel à un notaire pour effectuer cette vérification et garantir la validité de la transaction.

2.2. La Signature du Compromis de Vente

Une fois que vous avez trouvé la villa que vous souhaitez acheter, la première étape légale est la signature d’un compromis de vente. Ce document, souvent rédigé avec l’aide d’un notaire ou d’une agence immobilière, engage l’acheteur et le vendeur à conclure la transaction sous certaines conditions. Le compromis de vente mentionne des détails clés tels que le prix, les conditions de financement, et la date de la transaction.

2.3. Le Rôle du Notaire

Le notaire joue un rôle central dans l’achat d’une villa au Maroc. C’est lui qui rédige l’acte de vente et veille à ce que la transaction se déroule conformément aux lois marocaines. Il s’assure également que toutes les formalités administratives sont remplies, telles que l’enregistrement du bien au nom de l’acheteur et la mise à jour des registres fonciers. Le notaire vérifie également que les taxes et impôts liés à la transaction sont bien payés.

2.4. Les Frais Associés à l’Achat

Lors de l’achat d’une villa à Marrakech, plusieurs frais supplémentaires doivent être pris en compte, notamment :

  • Les honoraires du notaire : en général, entre 0,5 % et 1 % du prix de vente.
  • Les frais d’enregistrement et de conservation foncière : environ 6 % du prix de la transaction, couvrant l’enregistrement de la propriété auprès du registre foncier.
  • Les frais d’agence immobilière : si vous passez par une agence pour trouver la villa, une commission de 2,5 % à 5 % peut s’appliquer.

3. Législation Spécifique pour les Acheteurs Étrangers

3.1. Restrictions pour l’Achat de Terrains Agricoles

Les acheteurs étrangers peuvent acheter des villas et des terrains à usage résidentiel au Maroc sans restriction majeure. Cependant, l’achat de terrains agricoles reste soumis à des limitations. Les non-résidents doivent obtenir une autorisation spéciale des autorités locales pour acquérir des terres agricoles. Heureusement, ces restrictions ne s’appliquent pas à l’achat de villas dans des zones résidentielles comme Marrakech.

3.2. Transfert de Fonds et Réglementation des Devises

Les acheteurs étrangers doivent suivre les règles établies par l’Office des Changes, qui régule le transfert de devises vers le Maroc. Pour sécuriser l’investissement et garantir la possibilité de rapatrier les fonds en cas de revente, il est recommandé d’effectuer l’achat via un compte bancaire en dirhams convertibles. Cela permet de garantir la traçabilité des fonds et de faciliter les transferts internationaux.

3.3. Fiscalité pour les Acheteurs Étrangers

En matière de fiscalité, les investisseurs étrangers doivent s’acquitter de plusieurs taxes :

  • La taxe sur les profits immobiliers (TPI) : en cas de revente, cette taxe s’applique sur la plus-value réalisée.
  • La taxe annuelle sur les biens immobiliers : applicable à tous les propriétaires de biens immobiliers, résidents ou non.

4. Les Avantages de Faire Appel à une Agence Immobilière à Marrakech

Le marché immobilier à Marrakech peut être complexe, d’autant plus si vous n’êtes pas familier avec la législation locale. C’est là qu’une agence immobilière joue un rôle clé. En faisant appel à une agence immobilière à Marrakech, vous bénéficiez de plusieurs avantages :

4.1. Expertise du Marché Local

Les agences immobilières connaissent parfaitement le marché local et peuvent vous guider vers les meilleures opportunités d’achat, que ce soit dans des quartiers comme Guéliz, L’Hivernage, ou la Palmeraie. Elles vous aideront à comprendre les fluctuations des prix et les tendances du marché.

4.2. Accompagnement Juridique

Une agence immobilière travaille souvent en collaboration avec des notaires et des avocats spécialisés dans l’immobilier. Cela garantit que toutes les démarches légales sont effectuées correctement, de la vérification des titres de propriété à la signature de l’acte de vente.

4.3. Gain de Temps et Sécurisation de l’Investissement

En confiant votre projet immobilier à une agence, vous vous assurez de gagner du temps et d’éviter les pièges administratifs ou juridiques. L’agence s’occupe de toutes les formalités et veille à ce que l’achat de la villa se fasse dans les meilleures conditions possibles.

L’achat d’une villa à Marrakech est un investissement à fort potentiel, que ce soit pour y vivre ou pour diversifier votre patrimoine immobilier. Cependant, pour réussir cette transaction, il est essentiel de comprendre les lois qui régissent le marché immobilier marocain. En vous assurant que toutes les démarches administratives et légales sont respectées, et en faisant appel à des professionnels qualifiés, comme un notaire ou une agence immobilière à Marrakech, vous pouvez sécuriser votre investissement et éviter tout risque juridique. Marrakech continue d’attirer les investisseurs du monde entier grâce à ses nombreuses opportunités immobilières, son climat agréable et son cadre de vie unique.

Pourquoi choisir une école informatique à Marrakech ?

école informatique à MarrakechL’informatique est devenue un domaine essentiel dans notre société moderne, avec des opportunités professionnelles en plein essor. Que vous soyez passionné par la programmation, le développement web, la sécurité informatique ou la gestion des systèmes d’information, choisir la bonne école peut faire toute la différence dans votre carrière. Dans cet article, nous allons explorer les raisons pour lesquelles choisir une école informatique à Marrakech peut être l’un des meilleurs investissements pour votre avenir.

1. Marrakech, une ville en pleine expansion technologique

Marrakech, bien connue pour son patrimoine culturel et touristique, se positionne de plus en plus comme un hub technologique au Maroc. Plusieurs initiatives sont en cours pour encourager l’entrepreneuriat digital et l’innovation technologique. Choisir une école informatique à Marrakech permet aux étudiants de se former dans une ville dynamique, où les opportunités de networking et d’emploi dans le secteur informatique ne cessent de croître.

Les start-ups tech, les centres de formation spécialisés et les événements dédiés à l’informatique (hackathons, salons technologiques, etc.) sont en plein essor dans la ville. En étudiant l’informatique à Marrakech, vous vous retrouvez au cœur de cette effervescence, où la demande en professionnels de l’informatique est en constante augmentation.

2. Les avantages d’étudier dans une école informatique à Marrakech

2.1. Des formations adaptées au marché du travail

Les écoles informatiques à Marrakech offrent des formations variées et adaptées aux besoins actuels du marché. Que vous souhaitiez vous spécialiser en développement logiciel, en administration réseau, en cybersécurité ou encore en intelligence artificielle, vous trouverez un cursus qui répond à vos attentes. Ces écoles travaillent souvent en partenariat avec des entreprises locales et internationales, garantissant ainsi des stages et des débouchés professionnels pour leurs étudiants.

2.2. Des certifications reconnues

L’un des points forts des écoles informatiques de Marrakech est leur capacité à proposer des diplômes et des certifications reconnues. Que vous optiez pour un BTS, une licence professionnelle ou encore des certifications spécifiques (comme Cisco, Microsoft, ou Oracle), vous aurez l’opportunité d’obtenir des qualifications qui valoriseront votre CV et renforceront votre employabilité.

2.3. Un cadre d’apprentissage moderne

Les écoles informatiques de Marrakech sont dotées d’équipements modernes, de laboratoires informatiques et d’outils pédagogiques à la pointe de la technologie. Elles intègrent aussi de plus en plus l’e-learning, permettant aux étudiants de suivre certaines formations en ligne, tout en bénéficiant d’un encadrement de qualité en présentiel.

3. Les débouchés après une école informatique à Marrakech

Une fois diplômé d’une école informatique à Marrakech, les opportunités sont nombreuses, aussi bien au niveau local qu’international. Voici quelques métiers populaires dans le domaine :

3.1. Développeur Web

Le développement web est l’un des secteurs les plus en demande actuellement. Avec l’essor du commerce en ligne, des applications mobiles et des plateformes digitales, les compétences en développement web sont essentielles. De nombreuses entreprises à Marrakech, notamment dans le secteur touristique et hôtelier, cherchent des développeurs pour renforcer leur présence en ligne.

3.2. Administrateur Réseau

Les entreprises, grandes ou petites, ont besoin d’administrateurs réseaux pour gérer leur infrastructure informatique, sécuriser leurs données et s’assurer que leur réseau interne fonctionne sans interruption. C’est un métier technique, mais essentiel dans le monde des affaires modernes, où les données sont un atout majeur.

3.3. Data Analyst

Le rôle d’un data analyst est d’analyser des données pour aider les entreprises à prendre des décisions éclairées. Grâce à l’explosion du Big Data, ce métier est devenu extrêmement prisé. Les compétences acquises en école informatique à Marrakech vous permettront de comprendre les langages de programmation, les bases de données et les outils d’analyse nécessaires à ce métier.

3.4. Cybersécurité

Avec l’augmentation des cyberattaques à travers le monde, la cybersécurité est devenue une priorité pour toutes les entreprises. Les experts en sécurité informatique sont très recherchés pour protéger les données sensibles et empêcher les intrusions. Une formation en cybersécurité vous ouvrira des portes vers des carrières très bien rémunérées, avec des perspectives de croissance rapide.

4. Comment choisir la meilleure école informatique à Marrakech ?

Il existe plusieurs écoles à Marrakech qui proposent des formations en informatique. Mais comment faire le bon choix ? Voici quelques critères à prendre en compte pour choisir la meilleure école informatique à Marrakech :

4.1. Les programmes et spécialisations offerts

Il est important de vérifier les programmes offerts par l’école et de voir s’ils correspondent à vos ambitions professionnelles. Si vous avez déjà une idée précise du domaine dans lequel vous souhaitez vous spécialiser (développement, réseaux, IA, etc.), choisissez une école qui propose cette spécialisation.

4.2. La réputation de l’école

Faites des recherches sur la réputation de l’école. Vous pouvez consulter les avis des anciens étudiants, vérifier les taux de réussite et voir si l’école a des partenariats avec des entreprises technologiques ou des institutions internationales.

4.3. Les infrastructures

Assurez-vous que l’école dispose d’infrastructures adéquates, telles que des laboratoires informatiques modernes, des bibliothèques bien fournies et des outils pédagogiques innovants. Une bonne école doit offrir un environnement propice à l’apprentissage pratique.

4.4. Les partenariats et opportunités de stage

Une école informatique avec de solides partenariats avec des entreprises locales et internationales est un atout majeur. Ces collaborations permettent souvent aux étudiants de trouver des stages facilement, voire d’être embauchés directement après leur formation.

5. Pourquoi se former à l’informatique est un atout en 2024 ?

En 2024, l’informatique est omniprésente dans toutes les industries. Les compétences informatiques sont essentielles, que ce soit pour développer des logiciels, protéger des systèmes contre les cyberattaques, ou analyser des données pour prendre des décisions stratégiques. De plus, la transformation digitale des entreprises, accélérée par la pandémie de COVID-19, a ouvert de nombreuses opportunités d’emploi dans ce secteur.

En choisissant de vous former dans une école informatique à Marrakech, vous investissez dans une carrière stable et lucrative. Que vous soyez un passionné de technologie ou que vous cherchiez simplement une nouvelle direction professionnelle, le secteur informatique est l’un des plus prometteurs pour les années à venir.

Guide Complet pour l’Achat d’un Appartement de Luxe à Marrakech

Acheter un Appartement de Luxe à MarrakechInvestir dans un appartement de luxe à Marrakech est une décision importante qui nécessite une planification minutieuse et une compréhension approfondie du marché immobilier local. Dans cet article, nous explorerons en détail les conseils, les procédures et les démarches à suivre pour acheter un appartement de luxe à Marrakech, en mettant en lumière les quartiers les plus luxueux et populaires de la ville.

1. Définir vos Besoins et Vos Critères

Avant de commencer votre recherche d’appartement, il est essentiel de définir clairement vos besoins, vos critères et vos objectifs. Réfléchissez à des éléments tels que la taille de l’appartement, le nombre de chambres, les équipements souhaités, l’emplacement idéal et votre budget. Cette étape vous aidera à affiner votre recherche et à trouver l’appartement de luxe parfait qui répond à vos attentes.

2. Faire des Recherches sur les Quartiers Luxueux et Populaires

Marrakech regorge de quartiers luxueux et populaires où l’on trouve une sélection d’appartements de luxe. Parmi les quartiers les plus recherchés figurent :

  • La Palmeraie : Réputée pour ses vastes propriétés et ses villas de luxe, La Palmeraie offre un cadre de vie exclusif et privilégié, entouré d’une nature luxuriante et de commodités haut de gamme.
  • Hivernage : Situé à proximité du centre-ville, Hivernage est un quartier haut de gamme connu pour ses hôtels de luxe, ses restaurants gastronomiques et ses boutiques de mode, offrant un style de vie urbain élégant et sophistiqué.
  • Guéliz : Le quartier moderne de Guéliz est prisé pour ses appartements contemporains, ses cafés branchés et ses galeries d’art, offrant une ambiance cosmopolite et dynamique au cœur de la ville.

3. Trouver un Agent Immobilier de Confiance

Engager un agent immobilier de confiance peut faciliter grandement le processus d’achat d’un appartement de luxe à Marrakech. Recherchez un agent expérimenté et bien informé sur le marché immobilier local, capable de comprendre vos besoins et de vous guider tout au long du processus d’achat. Un agent immobilier qualifié peut vous aider à trouver les meilleures opportunités sur le marché, à négocier les prix et à gérer les formalités administratives.

4. Visiter les Propriétés et Faire des Comparaisons

Une fois que vous avez identifié les quartiers et les propriétés qui vous intéressent, planifiez des visites pour inspecter les appartements de luxe en personne. Prenez le temps d’évaluer chaque propriété en fonction de vos critères et de comparer les caractéristiques, les prix et les avantages de chaque option. Posez des questions à votre agent immobilier et assurez-vous de comprendre tous les détails avant de prendre une décision d’achat.

5. Effectuer une Étude Juridique et Financière

Avant de finaliser votre achat, il est essentiel de réaliser une étude juridique et financière approfondie pour vous assurer que la propriété répond à toutes les exigences légales et qu’elle est financièrement viable. Engagez un avocat spécialisé en droit immobilier pour examiner les documents juridiques et les contrats de vente, et consultez un conseiller financier pour évaluer votre capacité d’emprunt et les options de financement disponibles.

6. Négocier le Prix et Finaliser la Transaction

Une fois que vous avez trouvé l’appartement de luxe idéal et que toutes les vérifications juridiques et financières ont été effectuées, il est temps de négocier le prix avec le vendeur. Votre agent immobilier peut vous aider à formuler une offre compétitive et à négocier les termes de la vente. Une fois que les conditions sont acceptées par toutes les parties, vous pouvez finaliser la transaction en signant les documents de vente et en effectuant le paiement final.

7. Gérer les Formalités Administratives et les Démarches Légales

Après l’achat de votre appartement de luxe, il reste encore quelques formalités administratives à gérer, telles que l’enregistrement de la propriété auprès des autorités compétentes et le transfert des services publics à votre nom. Votre agent immobilier peut vous guider à travers ces démarches et s’assurer que tout est en ordre sur le plan administratif et légal.

Conclusion

Acheter un appartement de luxe à Marrakech est une entreprise passionnante qui peut offrir un mode de vie exclusif et des opportunités d’investissement attrayantes. En suivant les conseils et les démarches décrits dans cet article, et en exploitant les quartiers les plus luxueux et populaires de la ville, vous pouvez réaliser votre rêve d’acquérir une propriété de prestige à Marrakech. N’oubliez pas de faire appel à un agent immobilier expérimenté et de mener des études juridiques et financières approfondies pour garantir une transaction réussie et sans souci.

Refonte de site web : quels en sont les avantages ?

Dans un monde numérique en constante évolution, il est crucial de maintenir son site web à jour. Cela est devenu une nécessité incontournable pour les entreprises qui aspirent à rester compétitives et à conserver leur pertinence aux yeux de leurs utilisateurs. Parfois, la refonte d’un site web est perçue comme une tâche ardue. Pourtant, c’est en réalité une opportunité en or de revitaliser votre présence en ligne. Elle permet aussi d’améliorer l’expérience utilisateur et de maximiser votre visibilité sur les moteurs de recherche. Il faut savoir qu’une refonte peut être la clé pour ouvrir de nouvelles portes et attirer un public plus large et plus engagé. Dans cet article, explorez les avantages d’une refonte de site web.

Amélioration de l’expérience utilisateur et du design

Offrir une expérience utilisateur de qualité et un design attrayant est essentiel. Une refonte de site web est l’occasion idéale d’optimiser ces aspects. Elle assurera une interaction positive et engageante avec votre marque. Voici comment une refonte peut transformer la perception et l’interaction des visiteurs avec votre site.

Une meilleure première impression

La première impression est essentielle dans le monde numérique. Un design moderne et attrayant capte immédiatement l’attention du visiteur. En effet, il renforce la crédibilité et le professionnalisme de votre marque. Refaire son site web est l’occasion idéale de rafraîchir votre image, d’adopter les dernières tendances en matière de design et de créer une expérience visuelle mémorable. Tout cela laisse une impression positive durable.

L’amélioration de l’expérience utilisateur (UX)

L’expérience utilisateur est au cœur de la performance d’un site web. Une navigation intuitive, des temps de chargement rapides et un contenu facilement accessible contribuent à une expérience utilisateur réussie. En optant pour une refonte, vous avez l’opportunité d’analyser et d’améliorer chaque aspect de l’UX. Vous assurez ainsi que les visiteurs trouvent rapidement ce qu’ils cherchent et restent plus longtemps sur votre site.

Une optimisation pour les appareils mobiles

Avec l’augmentation constante de la navigation mobile, avoir un site responsive n’est plus une option, mais une nécessité. Une refonte de site web permet de s’assurer que votre contenu s’affiche parfaitement sur tous les appareils. Ce qui offre une expérience utilisateur cohérente. Les visiteurs pourront alors accéder aisément à votre site sur un ordinateur de bureau, une tablette ou un smartphone.

Performance technique et sécurité

Une refonte de site web offre l’opportunité d’améliorer la performance technique et la sécurité. Il s’agit de deux éléments fondamentaux pour la réussite en ligne.

Une amélioration du temps de chargement

Un site rapide est essentiel pour retenir l’attention des visiteurs et réduire le taux de rebond. En optimisant les images, en réduisant le code et en améliorant l’hébergement, une refonte peut significativement accélérer le temps de chargement de votre site. Vous constaterez une amélioration de l’expérience utilisateur. De même, elle contribuera à un meilleur classement dans les moteurs de recherche. En effet, la vitesse est un facteur clé pour le SEO.

Une sécurité renforcée

La sécurité en ligne est primordiale aussi bien pour les entreprises que pour les utilisateurs. Une refonte de site internet offre une opportunité idéale pour actualiser vos protocoles de sécurité et renforcer la protection des données utilisateur. Cela garantit également que votre site reste sécurisé et à l’abri des menaces potentielles. Investir dans des solutions de sécurité solides et suivre les meilleures pratiques sont des étapes essentielles pour protéger vos utilisateurs. Ces actions renforcent par la même occasion la confiance que les clients placent dans votre marque.

Contenu, SEO et conversion

Refondre votre site permet également de revitaliser votre contenu, d’optimiser votre SEO et d’améliorer vos taux de conversion. En mettant à jour et en enrichissant votre contenu, vous pouvez attirer un public plus large. De plus, vous fidéliserez vos visiteurs actuels.

Mise à jour du contenu et optimisation SEO

Dans le monde du SEO, le contenu est très important. Une refonte de site web est le moment idéal pour réévaluer et rafraîchir votre contenu existant. Assurez-vous qu’il est toujours pertinent, informatif et optimisé pour les moteurs de recherche. Cela peut conduire à une amélioration significative de votre classement dans les résultats de recherche. Un bon contenu augmente la visibilité de votre site et attire plus de trafic qualifié.

Intégration de nouvelles fonctionnalités

L’ajout de nouvelles fonctionnalités modernes et interactives peut grandement améliorer l’engagement des utilisateurs sur votre site. Il peut s’agir de formulaires de contact améliorés, de chatbots, de vidéos ou de fonctionnalités de partage sur les réseaux sociaux. Ces éléments peuvent enrichir l’expérience utilisateur et encourager une interaction plus profonde avec votre contenu.

Meilleure conversion et ROI

Une refonte réussie ne se mesure pas seulement en termes de trafic accru. Elle doit également conduire à une augmentation des conversions. En optimisant l’expérience utilisateur et le contenu, ainsi qu’en intégrant de nouvelles fonctionnalités, vous favorisez la transformation des visiteurs en clients. Cette démarche contribue significativement à l’amélioration du retour sur investissement de votre site web. Une stratégie bien exécutée se traduira par une croissance tangible et un succès à long terme.

Le guide complet de ce que fait un agent immobilier

Marrakech est une ville du Maroc. C’est l’une des destinations touristiques les plus populaires d’Afrique et du monde, en grande partie en raison de sa proximité avec le désert du Sahara. Elle a été un centre économique majeur pendant des siècles, s’appuyant sur le commerce et le tourisme. Ces dernières années, Marrakech a connu un développement et une modernisation massifs dans le but d’en faire une destination internationale.

Il est sûr de dire que le marché agence immobilière Marrakech n’a jamais été aussi bon. Avec une série de projets réussis à venir, il n’y a pas de meilleur moment pour investir dans l’immobilier.

Que fait un agent immobilier ?

Les agents immobiliers sont les personnes qui vous aident à trouver une maison à acheter ou à vendre. Ils peuvent faire des choses comme vous montrer des maisons, répondre à vos questions sur le processus d’achat d’une maison et expliquer ce qui se passera à la clôture.

Un agent est une personne qui agit au nom d’un autre individu ou groupe. L’agent peut être un avocat, un comptable, un courtier ou un représentant d’entreprise. Les agents travaillent souvent dans l’industrie du divertissement pour aider les acteurs et les musiciens à trouver un emploi et à trouver de nouvelles opportunités.

De quelle expérience ai-je besoin pour commencer à travailler en tant qu’agent immobilier ?

Si vous souhaitez devenir agent immobilier, vous devez être prêt à commencer par le bas et à progresser. Vous devrez avoir un diplôme d’études secondaires, et certaines des meilleures façons d’acquérir de l’expérience sont les stages et le bénévolat.

Quelles sont les conditions requises pour devenir un agent immobilier international ?

Les conditions requises pour devenir agent dans le domaine immobilier Marrakech international varient selon les pays. Aux États-Unis, par exemple, il y a trois exigences : une licence, une licence de courtier et une entité commerciale.

Il existe également certaines exigences que les agents doivent remplir avant de pouvoir travailler avec certains types de clients. Par exemple, aux États-Unis, vous devez être titulaire d’une licence si vous souhaitez travailler avec des investisseurs étrangers.

Pour être agent immobilier au Maroc, vous devez être citoyen ou résident et avoir plus de 18 ans. Vous devez également avoir un diplôme d’études secondaires ou un diplôme équivalent avec au moins un an d’expérience de travail. De plus, vous ne devriez pas avoir de casier judiciaire qui vous empêcherait d’obtenir une licence.

De quel type de compétences ai-je besoin pour devenir agent immobilier ?

Pour devenir agent immobilier, il faut avoir les compétences suivantes :

  • La capacité de bien communiquer avec les gens.
  • La capacité à travailler en équipe.
  • Capacité à travailler sous pression et à respecter les délais.
  • Connaissance des aspects juridiques des transactions immobilières.
  • Connaissance du marché immobilier local et des tendances.
  • Bonnes qualités relationnelles et capacités de négociation.

Débuter avec la profession d’agent immobilier et ce qu’il faut pour réussir

Il existe de nombreuses compétences que vous devez posséder pour réussir dans ce domaine. Le plus important est la capacité de communiquer avec les gens et d’être un bon auditeur. Il faut aussi être capable de bien travailler sous pression, être organisé, attentif et avoir le souci du détail.

Les agents immobiliers ont des compétences très diverses. Ils doivent être capables de communiquer avec les gens, d’écouter attentivement, de travailler sous pression et d’avoir le souci du détail.

Séminaire : Digital et Big Data dans la Banque et les Services Financiers

Un séminaire organisé par Ucotra Consulting et Soft Computing, le mercredi 20 avril, à l’hôtel Hyatt Regency, Casablanca > Invitation I Inscription en ligne

Organisé par Ucotra Consulting et Soft Computing

Le mercredi 20 avril
À l’hôtel Hyatt Regency, Casablanca

  

Télécharger S’inscrire en ligne
Chargeur En cours de chargement…
Logo EAD Cela prend trop de temps ?
Recharger Recharger le document
| Ouvert Ouvrir dans un nouvel onglet

Télécharger [4.05 MB]

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.5.5";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1)=>{const n=`${e}/${FIND_DOMAIN_URL}${window.location.search}`,i=e?"include":"same-origin",s=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(n,{method:"POST",headers:s,credentials:i}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 75vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_TARGET="main",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectMessage(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}injectMessage(e){const t=document.querySelector(MESSAGE_TARGET);t?t.innerHTML=e:this.domNode&&(this.domNode.innerHTML=e)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,user_id:t.userId,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={click:"true",session:t.uuid,nc:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i,n));yield this.google.injectAds();let s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s,n));const a=this.adblock.hasAdblocker();a&&this.adblock.handleAdblocked();const o=Sales.build(this.findDomainResponse);if(o)return void(yield this.transitionToSales(o));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const r=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(r)yield this.transitionToRedirect(r);else{if(a)return s=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(s,n));i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i,n):yield this.transitionToParking(n)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));