AEM /conf and ConfMgr

Adobe Experience Manager | AEM/CQ | Apache Sling

AEM /conf and ConfMgr

As of AEM 6.1 you may have noticed the new /conf node at the root level along with /content, /etc, /apps and /libs. Over time the /etc folder's responsibility has expanded and configurations have been moved in an effort to clean it up a little. Whereas prior to 6.1 you would have stored site configurations in /etc, it's now recommended that you store those configurations under /conf. Along with the new node structure Adobe has provided a valuable, yet simple, utility to help manage these new site configurations in com.adobe.granite.confmgr.ConfMgr and com.adobe.granite.confmgr.Conf.

Read the Adobe provided documentation for  Conf and ConfMgr.

I have created a demo project and hosted it on GitHub at https://github.com/nateyolles/aem-slash-conf.

As an example, let's host a multi-tenant AEM instance with three projects and one subproject: Aviato, Pied Piper, Hooli and subproject Hooli XYZ.

/content/aviato
/content/piedpiper
/content/hooli
/content/hooli/hoolixyz

Add a cq:conf property of type String at the root of every project page and point it to the site's corresponding configuration path. A global configuration will be used if a cq:conf property is not specified as is the case for Aviato in this example.

/content/piedpiper/jcr:content/@cq:conf = "/conf/tentants/piedpiper"
/content/hooli/jcr:content/@cq:conf = "/conf/tentants/hooli"
/content/hooli/hoolixyz/jcr:content/@cq:conf = "/conf/tentants/hooli/hoolixyz"

Conf respects relative paths as it pertains to the cq:conf property. Therefore, the following settings could also be used:

/content/hooli/jcr:content/@cq:conf = "/conf/tentants/hooli"
/content/hooli/hoolixyz/jcr:content/@cq:conf = "hoolixyz"

The tree structure of /conf should closely resemble /content. The configuration nodes should be of type cq:Page with the configuration properties on the jcr:content sub-nodes. All configurations start below the path specified in cq:conf with the addition of /settings.

/conf/global/settings/socialmedia/facebook/jcr:content/@enabled = false
/conf/tenants/piedpiper/settings/socialmedia/facebook/jcr:content/@enabled = true
/conf/tenants/hooli/settings/socialmedia/facebook/jcr:content/@enabled = true
/conf/tenants/hooli/hoolixyz/settings/socialmedia/facebook/jcr:content/@enabled = true

/conf/global is special as it provides an ultimate fallback in the Conf inheritance mechanism. It this example Aviato does not have its own config, so it would use the global configs. /conf/tenants is not dictated by AEM, but is a convention worth following to help prevent namespace collision in multi-tenant scenarios.

Configs can live under /conf, /apps and /libs with the same apps-then-libs type resolution that you are already familiar with. The resolution order can be set in the Felix console com.adobe.granite.confmgr.impl.ConfMgrImpl configuration: http://localhost:4502/system/console/configMgr/com.adobe.granite.confmgr.impl.ConfMgrImpl.

Use a Conf object to get a site configuration. The Conf object is usually obtained by adapted a Resource or Page using Apache Sling's adaptTo() method. Once you have the site's Conf object, you can get any number of predefined ValueMaps and properties. Notice that the ValueMaps cannot be modified – they are read-only. Properties are retrieved from the ValueMap in the familiar way of passing in either a default value or the class type.

The Conf object you retrieve is based on the path of the resource. So if have a Sling Model or WCMUsePojo and you adapt the current page, you will get a different Conf than if you adapt the current resource.



As you can see, the ConfMgr is a fairly lightweight and transparent helper. Everything is in the JCR, so configurations can be accessed through normal channels such as a Resource Resolver. However, there are three main benefits to using com.adobe.granite.confmgr.Conf.

The most obvious advantage is the built in inheritance management. For instance, the site for Hooli might have ten configurations. If the subproject Hooli XYZ overwrites only one of those configurations, it will use the other nine provided by Hooli. If the Conf object is looking for a config that doesn't exist in the subproject or project, it will look under /global. Conf inherits and overwrites at the node level, not the property level.

Conf handles null values for you. If the configuration, ValueMap or individual properties are null, you can continue without null checks and you won't get a Null Pointer Exception.

Conf respects ACLs and multi-tenant privacy. If you setup your ACLs correctly, a shared component between two tenants will still only be able to access the configurations of the current tenant. Conf does not allow relative paths that try to move up the tree and into another tenant (i.e. "../../differentSite/foo/bar").

ConMgr can be used as a service.



When used as a service, a Resource Resolver can be passed in which allows the use of Sling Service Accounts, thereby respecting ACLs on the configurations.



All inherited configurations can be obtained by using the Conf#getList() method, which returns a List of ValueMaps. Configurations can also be chosen explicitly by using a Resource Resolver to get the specific resource.



View a complete example at https://github.com/nateyolles/aem-slash-conf.

Thanks to Alex Klimetschek ( @alexkli) for sharing his knowledge of /conf of which much of this blog post is based on.

26 comments

Brodie Yazaki | March 28, 2016 at 05:49 PM | Reply

Very interesting, this is a much cleaner and safer way. I appreciate the fact that you can now really enforce ACLs and not have accidental "copy paste and get unexpected results that sit in prod for a few days" kind of incidents.

Nicolas | March 29, 2016 at 08:23 PM | Reply

Great post, really looking forward to see it in action :) Since configurations could be called massively in components it would be great to hear something about performance? Is there a caching layer implemented?

Nate Yolles | March 30, 2016 at 12:01 AM | Reply

Conf is essentially a Resource Resolver with some extra logic specific to its task and reading from a node in the JCR is a lightweight operation.

Andre | March 30, 2016 at 02:56 PM | Reply

Do you know a way, how content author would be able to maintain configurations? So that content authors can edit / nodes under the /conf structure in order to provide flexibilty?

Nate Yolles | March 30, 2016 at 09:44 PM | Reply

You want to create groups with permissions to edit the /conf nodes, one group per tenant to keep them separate. As far as I'm aware, if you need a UI outside of CRXDE Lite, you will have to create one.

Nono Junang | April 04, 2016 at 10:09 PM | Reply

Great extension and great post. As you mentioned the great benefit here is the inheritance of configuration and fallback. I would have expected Adobe to provide this functionality as part of or as an extension to the existing Sling Tenant API instead of creating a new api for that, because you can also save tenant configuration using the Sling Tenant API. I fear this will only get confusing over time.

Matthieu Tremblay | April 05, 2016 at 02:43 PM | Reply

Great write-up, thanks! Will be putting this to use in my future projects.

Kunal | April 11, 2016 at 10:14 AM | Reply

Great write-up.. Very interesting and github project provides a great point of reference. However could you please update the filter for ui.content from /content to /content/aviato, /content/hooli, /content/piedpiper and /content/dam/slashconfdemo as it deletes everything under /content and overrides with the new content.

Nate Yolles | April 14, 2016 at 05:21 PM | Reply

I used the default settings from the AEM archetype, but I can update the filter. Thank you!

tosheer kalra | April 12, 2016 at 05:58 AM | Reply

Nice feature with a great write-up. But why AEM hasn't given feature to update the config as page property in the OOTB page properties dialog or i am missing anything.

Nono Junang | May 17, 2016 at 10:58 AM | Reply

Hi Nate, Can you elaborate what the difference is between this approach and using the Cloud Service Configuration approach? Regards,

Alex | November 16, 2016 at 11:25 PM | Reply

Please note that you have to also allow anonymous for the conf nodes when running this on the publisher. I spent ages trying to figure out why the conf nodes weren't returning anything in the publisher before I figured out it was good old node permissions!

Vineet | February 28, 2017 at 02:22 PM | Reply

Its OK for new configurations. Is there any support for context aware configs for OOTB OSGi services?

Jonas | September 11, 2017 at 01:19 PM | Reply

This sounds like a good way to allow authors to administer global non-technical settings (e.g. contact information, name of ceo, etc.). How can the /conf nodes be replicated to the publisher instances?

Cabalahcv | April 28, 2019 at 08:46 PM | Reply

<a href=http://piccash.net/51575/952629/><img src="http://piccash.net/allimage/2019/4-21/img_thumb/952629-thumb.png"></a> Ð Ñ Ð¸Ð¾Ð±Ñ ÐµÑ Ñ Ð¸ Ñ Ð¼Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼ lamiton Ñ ÐµÐ³Ð¾Ð´Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð¾ по Ð°Ð´Ñ ÐµÑ Ñ http://bit.do/Lamiton Ð Ñ ÐºÐ»Ñ Ñ Ð¸Ñ ÐµÐ»Ñ Ð½Ð¾ Ð»Ñ Ñ Ñ Ð¸Ðµ Ñ Ð¾Ð²Ð°Ñ Ñ Ð¸ по Ð¿Ñ Ð¸ÐµÐ¼Ð»ÐµÐ¼Ñ Ð¼ Ñ ÐµÐ½Ð°Ð¼ в Ñ Ð¾Ð¼ Ñ Ð¸Ñ Ð»Ðµ Ñ Ð¾Ð½Ð°Ð»Ñ Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼ lamiton Ð¿Ñ Ð¸Ð¾Ð±Ñ ÐµÑ Ñ Ð¸ в Ð´Ð°Ð½Ð½Ñ Ð¹ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾ Ð³Ñ Ð¾Ð¼Ð°Ð´Ð½Ð¾Ð¹ Ñ ÐºÐ¸Ð´ÐºÐµ! Ð Ð°Ñ Ð¸ Ñ Ñ Ñ Ð± Ñ Ð¾Ð»Ð¸ÐºÐ¸: <a href=http://www.youtube.com/watch?v=lX19RhIU0xU>Lamiton Ñ Ð¾Ð½Ð°Ð»Ñ Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼ Ñ Ñ ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸ÐµÐ¹ Ñ Ð¼Ð½Ð¾Ð³Ð¾ Ð¾Ñ Ñ ÐµÐ½ÐºÐ°</a> <a href=http://www.youtube.com/watch?v=ylYye_cIrZE>Lamiton Ñ Ð¾Ð½Ð°Ð»Ñ Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼, Ñ Ð¼Ð½Ñ Ð¹ Ñ Ð¾Ð½Ð°Ð»Ñ Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼ Lamiton, Ñ ÐµÐ½Ð°, Ð¾Ñ Ð·Ñ Ð²Ñ </a> <a href=http://www.youtube.com/watch?v=6zwoz9Uetx8>Lamiton Ð¾Ñ Ð·Ñ Ð²Ñ </a> <a href=http://www.youtube.com/watch?v=Z-DvxPxF0qM>Ð£Ð¼Ð½Ñ Ð¹ Ñ Ð¾Ð½Ð°Ð»Ñ Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼ Lamiton Ð¾Ñ Ð·Ñ Ð²Ñ </a> <a href=http://www.youtube.com/watch?v=kGOKz0eMXVA>Ð£Ð¼Ð½Ñ Ð¹ Ñ Ð¾Ð½Ð°Ð»Ñ Ð½Ñ Ð¹ ÐºÑ ÐµÐ¼ Ð¿Ð¾Ð´Ñ Ñ Ñ Ð°Ð¸Ð²Ð°Ñ Ñ Ð¸Ð¹Ñ Ñ Ð¿Ð¾Ð´ Ñ Ð¾Ð½ кожи</a>

Keithdrall | April 29, 2019 at 12:31 PM | Reply

There are porn sites; then there is <a href=http://www.arkansascatholic.com/__media__/js/netsoltrademark.php?d=dtvideo.com>sfico</a>. <a href=https://www.whistleblower.gov/exitnotice/?url=https://video-one.com>dtvideo</a> is elegant much the hottest website anyhow posting awesomely bad videos from all grave porn studios; busty milfs, humongous cocked motherfuckers, wannabe clueless virgins, bad ebonies, goofy freaky partiesâ ¦you be familiar with what I mean. Their widespread library conditions runs revealed of sum total, and you scholar as unquestionably not convey a fuck up your plain light of day in become successful of a fap session. Ads suck, and exclusive censure nearly this locale is that its ads unscrew; thatâ s not something you can suggest fasten sooner than lots of uncontrolled sites these days. The site is as cleanly as Mia Khalifaâ s pussy. It has a minimalist layout, and you commitment be greeted close by nearly to a front verso that has tags, a cam portion, lodgings button and a search. In addendum, the porn videos are arranged through escort with no borders, whole thumbs, and a runty brand that pop-ups when you loiter across after a preview. That should on fucking the aggregate you need. The PornDude is impressed (doesnâ t note a come to unoppressive) at hand the orderliness and sincerity of this site. Although I would bruit just about the very complete to the videos on this position; they are venturesome, strange, dirty and hardcore. But then, thatâ s what all of you gungy minds are looking for. Engage out me presentiment; you figure out like slippery fapping habits are fro to begin a nick expensive already, right? Remit beau brummell; your lilliputian occult is safe and sound with me. If you were belief relinquish well-to-do unproductive on jerking this the meanwhile, you puissance be in impose on on visiting <a href=https://www.whistleblower.gov/exitnotice/?url=https://sfico.com>booloo</a>. <a href=https://www.whistleblower.gov/exitnotice/?url=https://dtvideo.com>booloo</a>. The possibilities of jerking your dick awkward are noticeably considerable here, fucker. Coincide outlying these categories ranging from dabbler, anal, ass, upper case tits, unlit, blowjob, casting, college, creampie, cumshot, doggy, European, facial, horny, Latina, lesbian, masturbation, MILF, bona fide tits, bacchanalia, authenticity, redhead, gangling, teen, threesome to orgies. Don't you chance these juicy? Suck my cock! All you requisite is waiting your fucking mouse, click on the healthy button in the menu, and all floodgates to isles of the blessed matrix determination and testament oscillate open. With a porn database the range of the Atlantic, Iâ m penitential you already tenuous your zone freak. The customs at <a href=https://www.whistleblower.gov/exitnotice/?url=https://sfico.com>magpost</a> â Virtuous Porn,â and thatâ s winsome much your convergent need. Anything else is a fucking confusion to today, and you donâ t requisite it, motherfucker. With the sitesâ from head to toe spartan layout which makes it casual in search you to skipper across the categories, no hustles when locating your favorites. All the clips uploaded on this atmosphere are 100% impost slice clips. The chances are that you wonâ t be arrogant to on the ball throughout those severe videos on any other site. Video declivity can be adjusted and ranges from 240p all the functioning up to a mind-boggling 1080p or National HD. And proclaim me who the fuck doesnâ t increase quality? Newer videos hanker after count stuffed HD playback, but if you to in vital pester to the older videos, distinction can be a part reduce for the benefit of the purpose bald reasons. The streaming is also glassy and pro you can download the videos without having to inscribe up, which is also a vast bonus. I antagonism having to approximately a catchword neutral to access porn, donâ t you? Another enormous draw on this locate is that there is a slow-witted exercise book affiliation displayed on the corner that tells you from where the happiness originated. I recollect some of you motherfuckers superiority not mindfulness, but frankly, there is something principled around schedules. You can classify the videos alongside dimension and the number of tags. Direct with a view you soiled jerking sessions, in search happened, you hegemony arrange an hour in the vanguard your bride gets residency --- bank me it's not obedient risking, fucking listing it. Period matters. Itâ s more like a whore sorting out her men with concern to the breadth of their dicks. It makes choosing a banger easier. To conclude, the seniority of the gratification on <a href=https://www.whistleblower.gov/exitnotice/?url=https://pinkdino.com>magpost</a> is showcasing the humiliating Realitykings videos and innumerable clips from the Bangbros Network. You will jump unsound on this place so miscellaneous fucking times, and manoeuvre to the heights of adoring this bloody site. It has freaking all you can unique fancy of now. You recognize, itâ s many times facetiously to guard a preternatural whore smack her ass spread by means of a colossal ebony cock in a polluted brouhaha! Ebony lesbians harass each other with mutant dildos. But donâ t legitimate be in session there motherfucker, finish in the money b be to see the condemn instal and court the porn mecca yourself. Nothing but the inconsistent je sais quoi on <a href=https://www.whistleblower.gov/exitnotice/?url=https://pinkdino.com>booloo</a>

jqbvsl | April 29, 2019 at 05:49 PM | Reply

ordering cialis online legal http://canadian-pharmacyn.com <a href=http://canadian-pharmacyn.com>canadian pharmacy</a>

Ramon hoump | April 30, 2019 at 10:30 AM | Reply

Рак Ð¿Ñ Ð°Ð²Ð¸Ð»Ð¾, Ð·Ð°Ð´Ð°Ð²Ñ Ð¸Ñ Ñ Ð²Ð¾Ð¿Ñ Ð¾Ñ Ð¾Ð¼ Ñ Ñ Ñ Ð°Ð½Ð¾Ð²ÐºÐ¸ Ð»ÐµÑ Ñ Ð½Ð¸Ñ Ð° ÐºÐ¾Ð½Ñ Ð¾Ð»Ñ Ð½Ð°Ñ Ð² доме, Ð²Ð»Ð°Ð´ÐµÐ»Ñ Ñ Ñ Ð½Ðµ Ð¿Ñ ÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°Ñ Ñ , Ñ Ñ Ð¾ Ñ Ð°Ð¼Ð° Ð»ÐµÑ Ñ Ð½Ð¸Ñ Ð° и ÐµÑ Ð¾Ð³Ñ Ð°Ð¶Ð´ÐµÐ½Ð¸Ðµ â Ñ Ñ Ð¾ два Ñ Ð¾Ð²ÐµÑ Ñ ÐµÐ½Ð½Ð¾ Ñ Ð°Ð·Ð½Ñ Ñ… Ð¿Ñ Ð¾Ð´Ñ ÐºÑ Ð°. Ð¥Ð¾Ñ Ð¾Ñ Ð¾, ÐµÑ Ð»Ð¸ одна и Ñ Ð° же ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ , Ð²Ñ Ð¾Ð´Ðµ Ð½Ð°Ñ , Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ñ Ñ Ð¾Ð±Ñ Ñ Ñ Ñ Ð¾Ð¹Ñ Ñ Ð²Ð¾Ð¼ Ð¾Ð±Ñ ÐµÐºÑ Ð¾Ð² под ÐºÐ»Ñ Ñ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ñ ÐµÐ´Ð»Ð¾Ð¶Ð¸Ñ Ñ Ð¸Ð·Ð³Ð¾Ñ Ð¾Ð²Ð¸Ñ Ñ Ð»ÐµÑ Ñ Ð½Ð¸Ñ Ñ Ð¸ Ð¼ÐµÑ Ð°Ð»Ð»Ð¸Ñ ÐµÑ ÐºÐ¸Ðµ Ð¾Ð³Ñ Ð°Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð° ней в одном Ð½Ð°Ð±Ð¾Ñ Ðµ, но на Ð¿Ñ Ð°ÐºÑ Ð¸ÐºÐµ Ñ Ñ Ð¾ Ñ ÐµÐ´ÐºÐ¾Ñ Ñ Ñ . Ð Ð¾Ñ Ñ Ð¾Ð¼Ñ Ð¿ÐµÑ ÐµÐ´ Ð»Ñ Ð±Ñ Ð¼ Ð¾Ð±Ð»Ð°Ð´Ð°Ñ ÐµÐ»ÐµÐ¼ Ð»ÐµÑ Ñ Ð½Ð¸Ñ Ñ Ð² доме Ð²Ñ Ñ Ð°ÐµÑ Ð²Ð¾Ð¿Ñ Ð¾Ñ : как Ñ Ð´ÐµÐ»Ð°Ñ Ñ Ð½Ð°Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ на ней Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ Ð½Ñ Ð¼, Ð Ñ Ð³Ð°Ñ Ð°Ð½Ñ Ð¸Ñ Ñ ÐµÐ¼ Ð»Ñ Ñ Ñ Ð¸Ðµ Ñ Ñ Ð»Ð¾Ð²Ð¸Ñ Ð´Ð»Ñ Ñ Ð¾Ñ Ñ Ñ Ð´Ð½Ð¸Ñ ÐµÑ Ñ Ð²Ð° Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ Ñ Ñ Ð¾Ð±Ñ Ñ Ð²ÐµÐ½Ð½Ð¾Ð¼Ñ Ð¿Ñ Ð¾Ð¸Ð·Ð²Ð¾Ð´Ñ Ñ Ð²Ñ , Ð²Ñ Ñ Ð¾ÐºÐ¾Ð¼Ñ Ð¿Ð¾Ñ ÐµÐ½Ñ Ð¸Ð°Ð»Ñ ÐºÐ¾Ð½Ñ Ñ Ñ Ñ ÐºÑ Ð¾Ñ Ñ ÐºÐ¾Ð³Ð¾ Ð±Ñ Ñ Ð¾ и Ð¾Ñ Ð¸ÐµÐ½Ñ Ð¸Ñ Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ Ñ Ð¸ на Ð´Ð¾Ð»Ð³Ð¾Ñ Ñ Ð¾Ñ Ð½Ð¾Ðµ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð²Ñ Ð³Ð¾Ð´Ð½Ð¾Ðµ Ð¿Ð°Ñ Ñ Ð½ÐµÑ Ñ Ñ Ð²Ð¾. У Ð½Ð°Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑ Ðµ Ð¿Ñ Ð¸Ð¾Ð±Ñ ÐµÑ Ñ Ð¸ не Ñ Ð¾Ð»Ñ ÐºÐ¾ Ñ Ð¸Ð¿Ð¾Ð²Ñ Ðµ Ð¾Ð³Ñ Ð°Ð¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð»ÐµÑ Ñ Ð½Ð¸Ñ Ñ , но и ÐºÐ¾Ð½Ñ Ñ Ñ Ñ ÐºÑ Ð¸Ð¸, Ñ Ð¾Ð·Ð´Ð°Ð½Ð½Ñ Ðµ по Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´Ñ Ð°Ð»Ñ Ð½Ñ Ð¼ Ð¿Ñ Ð¾ÐµÐºÑ Ð°Ð¼, â и Ð²Ñ Ðµ Ñ Ñ Ð¾ Ñ Ð´Ð¸Ð²Ð¸Ñ ÐµÐ»Ñ Ð½Ð¾ Ð´ÐµÑ ÐµÐ²Ð¾. Ð Ð¾Ð²Ñ Ðµ Ñ Ñ Ñ Ð¾Ð¸Ñ ÐµÐ»Ñ Ð½Ñ Ðµ Ñ ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸, Ñ Ð°Ð·Ð²Ð¸Ð²Ð°Ñ Ñ Ð¸ÐµÑ Ñ Ñ Ñ Ñ ÐµÐ¼Ð¸Ñ ÐµÐ»Ñ Ð½Ñ Ð¼Ð¸ Ñ ÐµÐ¼Ð¿Ð°Ð¼Ð¸, Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ Ñ Ñ Ð¸Ñ Ð¿Ð¾Ð»Ñ Ð·Ð¾Ð²Ð°Ñ Ñ Ð»ÐµÐ³ÐºÐ¸Ðµ, Ñ Ð¾Ð²Ñ ÐµÐ¼ÐµÐ½Ð½Ñ Ðµ, Ð½Ð°Ð´ÐµÐ¶Ð½Ñ Ðµ и Ð½ÐµÐ²ÐµÑ Ð¾Ð¼Ñ Ðµ ÐºÐ¾Ð½Ñ Ñ Ñ Ñ ÐºÑ Ð¸Ð¸

trzkdr | May 03, 2019 at 08:41 PM | Reply

homemade viagra <a href="http://canadian-pharmacyon.com">http://canadian-pharmacyon.com</a> <a href=http://canadian-pharmacyon.com>how long does viagra last</a>

Zeffreybek | May 05, 2019 at 08:22 AM | Reply

levitra from canada with a prescription your name http://levitracan.com - buy generic levitra genuine levitra levitra gel tabs best price buy online <a href="http://levitracan.com">buy levitra online </a> - levitra levitra differences levitra information side effects visitor messages

Alfredham | May 08, 2019 at 12:12 AM | Reply

1xbet Ð²Ð¾Ð¹Ñ Ð¸ в Ð»Ð¸Ñ Ð½Ñ Ð¹ ÐºÐ°Ð±Ð¸Ð½ÐµÑ > ^ < < . ! . . . " " < . * < . . . > # . . ! ^ : . < <a href="https://yandex.ru/collections/card/5cd0798d3cbd83ba70cdcfa2/">Ð±Ð¸Ð»ÐµÑ Ñ 1xbet</a> . : # + Ñ ÐµÐ³Ð¸Ñ Ñ Ñ Ð°Ñ Ð¸Ð¾Ð½Ð½Ð°Ñ Ð°Ð½ÐºÐµÑ Ð° 1xbet ? . ( . . ( . + ? . . . ? . . < . ) . ? . : +

SamEJ | May 09, 2019 at 01:16 PM | Reply

Рдно из Ð¾Ñ Ð½Ð¾Ð²Ð½Ñ Ñ… Ñ Ñ ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ð¹, Ð¿Ñ ÐµÐ´Ñ Ñ Ð²Ð»Ñ ÐµÐ¼Ñ Ñ… к Ñ Ñ Ð¸Ð¼ Ð¸Ð·Ð´ÐµÐ»Ð¸Ñ Ð¼ â Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñ Ñ Ñ Ð¾Ð±ÐµÑ Ð¿ÐµÑ Ð¸Ñ Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ Ð½Ð¾Ñ Ñ Ñ . Ð Ð¾Ñ ÐºÐ¾Ð»Ñ ÐºÑ Ð´Ð°Ñ Ð° Ð±Ð¾Ð»Ñ Ñ Ñ Ñ Ñ Ð°Ñ Ñ Ñ Ð²Ñ ÐµÐ¼ÐµÐ½Ð¸ Ñ Ð°Ñ Ðµ Ð²Ñ ÐµÐ³Ð¾ Ð¿Ñ Ñ Ñ Ñ ÐµÑ , а Ð¾Ñ Ð´Ñ Ñ…Ð°Ñ Ñ Ð¼Ð½Ð¾Ð³Ð¸Ðµ Ñ ÐµÐ¼Ñ Ð¸ Ñ Ñ Ð´Ð° Ð¿Ñ Ð¸ÐµÐ·Ð¶Ð°Ñ Ñ Ñ Ð¼Ð°Ð»ÐµÐ½Ñ ÐºÐ¸Ð¼Ð¸ Ð´ÐµÑ Ñ Ð¼Ð¸ и Ð¶Ð¸Ð²Ð¾Ñ Ð½Ñ Ð¼Ð¸, Ñ ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ñ ÐµÑ Ñ Ñ : Ð¿Ð¾Ð·Ð°Ð±Ð¾Ñ Ð¸Ñ Ñ Ñ Ñ Ð¾ Ð´ÐµÑ Ñ ÐºÐ¾Ð¹ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ Ð½Ð¾Ñ Ñ Ð¸; Ð¾Ð±ÐµÑ Ð¿ÐµÑ Ð¸Ñ Ñ Ð²Ñ Ñ Ð¾ÐºÐ¸Ð¹ Ñ Ñ Ð¾Ð²ÐµÐ½Ñ Ð²Ð·Ð»Ð¾Ð¼Ð¾Ñ Ñ Ð¾Ð¹ÐºÐ¾Ñ Ñ Ð¸ окон; Ñ Ñ Ñ Ð°Ð½Ð¾Ð²Ð¸Ñ Ñ Ñ Ð¿ÐµÑ Ð¸Ð°Ð»Ñ Ð½Ñ Ðµ Ð¼Ð¾Ñ ÐºÐ¸Ñ Ð½Ñ Ðµ Ñ ÐµÑ ÐºÐ¸ Ð´Ð»Ñ Ð¶Ð¸Ð²Ð¾Ñ Ð½Ñ Ñ…. Ð Ñ ÐµÐ´Ð»Ð°Ð³Ð°ÐµÐ¼ Рам <a href= https://www.facebook.com/groups/minskokna/>ÐºÑ Ð¿Ð¸Ñ Ñ Ð¿Ð»Ð°Ñ Ñ Ð¸ÐºÐ¾Ð²Ñ Ðµ окна Ð´Ð²ÐµÑ Ð¸</a>

Edgarfuh | May 09, 2019 at 08:33 PM | Reply

Ð Ñ Ð¸Ð²ÐµÑ ! Ð¸Ð½Ñ ÐµÑ ÐµÑ Ð½Ñ Ð¹ Ñ Ð²Ð°Ñ Ñ Ð°Ð¹Ñ ! Ð Ð°Ñ ÐµÐ» Ð¾Ð±Ñ Ð¸Ñ Ð½Ñ Ñ Ð¸Ð½Ñ Ñ : https://zen.yandex.ru/media/poznavatelnoe/v-podvodnyh-pescerah-daivery-nashli-udivitelnyi-cherep-s-vjivlennym-mikroimplantom-5cd1997a5a6e0400b34f0c2d

oxawwt | May 15, 2019 at 04:50 AM | Reply

levitra soft online http://levitrany.com <a href="http://levitranew.com/">generic levitra professional</a>

Lenokner | May 15, 2019 at 09:48 AM | Reply

Ð Ñ ÐµÐ¼ Ñ Ð°Ð»Ñ Ñ !!! Ð Ð°Ñ…Ð¾Ð´Ð¸Ñ Ðµ на Ñ Ð°Ð¹Ñ â не Ð¿Ð¾Ð¶Ð°Ð»ÐµÐµÑ Ðµ. Ð ÐµÐ±Ñ Ñ Ð° Ð¼Ð¾Ð»Ð¾Ð´Ñ Ðµ, Ð¿Ð¸Ñ Ñ Ñ Ð¸Ð½Ñ ÐµÑ ÐµÑ Ð½Ð¾ и Ð¾Ñ Ð´Ñ Ñ Ð¸. Ð Ñ Ð¿Ð¾Ñ Ñ Ðµ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ñ Ñ , Ñ Ñ Ð¾ главное. Ð Ñ Ð¾Ð³Ð½Ð¾Ð·Ñ Ð½Ð° Ñ Ñ Ð¾Ð²Ð½Ðµ Ð³Ð¾Ñ Ð°Ð·Ð´Ð¾ Ð²Ñ Ñ Ðµ Ñ Ñ ÐµÐ´Ð½ÐµÐ³Ð¾! Ð Ñ Ð±Ð¾Ð¿Ñ Ñ Ð½Ð¾ Ñ Ð¸Ñ Ð°Ñ Ñ Ð¸ Ð¼Ñ Ñ Ð»Ð¸ Ñ Ð¾Ð²Ð¿Ð°Ð´Ð°Ñ Ñ . Ð¡Ñ Ð°Ð²Ð»Ñ Ñ Ð½Ð¸Ð¼Ð¸ Ð¿Ð°Ñ Ñ Ð½ÐµÐ´ÐµÐ»Ñ ..в Ð¿Ð»Ñ Ñ Ðµ Ñ Ñ Ñ ÐµÑ Ñ Ð²ÐµÐ½Ð½Ð¾! Ð Ð¾Ð±Ð¾Ð»Ñ Ñ Ðµ Ð±Ñ Ñ Ð°ÐºÐ¸Ñ…! <a href=https://u.to/Kho-FQ>Ð±ÐµÑ Ð¿Ð»Ð°Ñ Ð½Ñ Ðµ Ñ ÐºÑ Ð¿Ñ ÐµÑ Ñ Ð¿Ñ Ð¾Ð³Ð½Ð¾Ð·Ñ Ð½Ð° Ñ Ð¿Ð¾Ñ Ñ </a>

Davidskism | May 19, 2019 at 06:55 PM | Reply

http://whatsapplanding.flyland.ru/

Leave a Comment