@Mark

thanks, it works when adding any other qualifier!

btw, do you think it would hurt to qualify the built-in conversation bean with 
@Named("javax.enterprise.context.conversation") in OWB? That way I could inject 
the built-in with @Inject @Named("javax.enteprise.context.conversation") and 
expose it via @Produces @Named("conversation") without resorting to some extra 
qualifier.

@Romain

I was wondering where exactly is your hacky el resolver implemented? If the 
"javax.enterprise.context.conversation" name is a requirement coming from the 
CDI spec, then I would suppose it is implemented in OWB (in the resolver you 
get from the BeanManager) but as my tests with OEJB+OWB fail, I suppose it is 
not there (or not enabled in some way). On the contrary, if the requirement 
comes from the java EE spec, then I suppose it is implemented in TomEE and that 
would explain why my tests fail.

Xavier




From: Mark Struberg <[email protected]>
Sent: Thursday, September 29, 2016 12:12 AM
To: [email protected]
Subject: Re: OpenEJB and EL
    
@Default is always assumed when you don't add a specific Qualifier other than 
@Named and @Any.

Xavier, can you please add any random qualifier? E.g. @Destroyed.

This will stop CDI from complaining but EL should work.

LieGrue,
strub





> On Thursday, 29 September 2016, 0:04, Xavier Dury <[email protected]> wrote:
> > https://gist.github.com/kalgon/fbf529dc9c9764c115433cfb2f0f82bf



OpenEjbElTest.java
gist.github.com
property=
> 
> 
> 
> From: Xavier Dury <[email protected]>
> Sent: Wednesday, September 28, 2016 11:54 PM
> To: [email protected]
> Subject: Re: OpenEJB and EL
>    
> No, I didn't add the @Default to the @Produces method.
> 
> I verified:
> 
> @RequestScoped
> public class ConversationWrapper {
>         
>         private @Inject Conversation conv;
> 
>         @Produces
>         @Dependent
>         @Named("conv")
>         public Conversation getConv() {
>                 return conv;
>         }
> }
> 
> result:
> 
> Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is 
> more 
> than one Bean with type javax.enterprise.context.ConversationQualifiers: 
> [@javax.enterprise.inject.Default()]
> for injection into Field Injection Point, field name :  conv, Bean Owner : 
> [ConversationWrapper, WebBeansType:MANAGED, Name:null, API 
> Types:[java.lang.Object,eg.ConversationWrapper], 
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> found beans: 
> ConversationImpl, WebBeansType:CONVERSATION, 
> Name:javax.enterprise.context.conversation, API 
> Types:[java.lang.Object,org.apache.webbeans.conversation.ConversationImpl,javax.enterprise.context.Conversation],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]  
> from 
> jar:file:/C:/Users/xavier/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl-1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class
> Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API 
> Types:[java.lang.Object,javax.enterprise.context.Conversation], 
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named]
> from 
> file:/D:/development/workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class
> 
> 
> 
> 
> From: Romain Manni-Bucau <[email protected]>
> Sent: Wednesday, September 28, 2016 11:47 PM
> To: [email protected]
> Subject: Re: OpenEJB and EL
>     
> Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API
> Types:[java.lang.Object,javax.enterprise.context.Conversation],
> Qualifiers:[javax.enterprise.inject.Default,javax.
> enterprise.inject.Any,javax.inject.Named] from file:/D:/development/
> workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class
> 
> Why is there @Default there? producer should only have the @Named you set
> 
> 
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog



Romain Manni-Bucau (@rmannibucau) | Twitter
twitter.com
The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) / 
Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: 
https://t.co/0VnvWwbedt . Blog ...
> 
> 
> 
> Romain Manni-Bucau (@rmannibucau) | Twitter
> twitter.com
> The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) / 
> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory:
> https://t.co/0VnvWwbedt . Blog ...
> 
> 
> 
> Romain Manni-Bucau (@rmannibucau) | Twitter
> twitter.com
> The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) / 
> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: 
> https://t.co/0VnvWwbedt . Blog ...
> <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog
> 
> 
> RBlog: the RManniBucau v2 Blog
> blog-rmannibucau.rhcloud.com
> RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, Angular, Open 
> Source,
> Code and geeky topics...
> <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> |
> 
> 
> [old blog] new RManniBucau().blog()
> rmannibucau.wordpress.com
> New blog on: https://blog-rmannibucau.rhcloud.com/
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
> 
> 2016-09-28 23:45 GMT+02:00 Xavier Dury <[email protected]>:
> 
>>  It seems that to inject the conversation in 
> ConversationWrapper.conversation,
>>  OWB does consider both the build-in conversation bean and the produced one
>>  from... ConversationWrapper.getConv().
>> 
>>  I tried something like that:
>> 
>>  @RequestScoped
>>  public class ConversationWrapper {
>> 
>>          private @Inject 
> @Named("javax.enterprise.context.conversation")
>>  Conversation conv;
>> 
>>          @Produces
>>          @Dependent
>>          @Named("conv")
>>          public Conversation getConv() {
>>                  return conv;
>>          }
>>  }
>> 
>>  But it gives the following error:
>> 
>>  Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
>>  type [javax.enterprise.context.Conversation] is not found with the
>>  qualifiers
>>  Qualifiers: [@javax.inject.Named(value=javax.enterprise.context.
>>  conversation)]
>>  for injection into Field Injection Point, field name :  conv, Bean Owner :
>>  [ConversationWrapper, WebBeansType:MANAGED, Name:null, API
>>  Types:[eg.ConversationWrapper,java.lang.Object],
>>  Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>> 
>> 
>> 
>> 
>>  From: Xavier Dury <[email protected]>
>>  Sent: Wednesday, September 28, 2016 11:34 PM
>>  To: [email protected]
>>  Subject: Re: OpenEJB and EL
>> 
>>  Got the same result with 'conv':
>> 
>>  Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is
>>  more than one Bean with type 
> javax.enterprise.context.ConversationQualifiers:
>>  [@javax.enterprise.inject.Default()]
>>  for injection into Field Injection Point, field name :  conversation, Bean
>>  Owner : [ConversationAliaser, WebBeansType:MANAGED, Name:null, API
>>  Types:[java.lang.Object,eg.ConversationAliaser],
>>  Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>  found beans:
>>  Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API
>>  Types:[java.lang.Object,javax.enterprise.context.Conversation],
>>  Qualifiers:[javax.enterprise.inject.Default,javax.
>>  enterprise.inject.Any,javax.inject.Named] from file:/D:/development/
>>  workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class
>>  ConversationImpl, WebBeansType:CONVERSATION, 
> Name:javax.enterprise.context.conversation,
>>  API Types:[org.apache.webbeans.conversation.ConversationImpl,
>>  javax.enterprise.context.Conversation,java.lang.Object],
>>  Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]
>>  from jar:file:/C:/Users/xavier/.m2/repository/org/apache/
>>  openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl-
>>  1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>  From: Romain Manni-Bucau <[email protected]>
>>  Sent: Wednesday, September 28, 2016 11:29 PM
>>  To: [email protected]
>>  Cc: Mark Struberg
>>  Subject: Re: OpenEJB and EL
>> 
>>  missing @Named("conv")?
>> 
>> 
>>  Romain Manni-Bucau
>>  @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> 
>> 
>> 
>>  Romain Manni-Bucau (@rmannibucau) | Twitter
>>  twitter.com
>>  The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) /
>>  Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory:
>>  https://t.co/0VnvWwbedt . Blog ...
>> 
>> 
>> 
>>  Romain Manni-Bucau (@rmannibucau) | Twitter
>>  twitter.com
>>  The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) /
>>  Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory:
>>  https://t.co/0VnvWwbedt . Blog ...
>>  <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog
>> 
>> 
>>  RBlog: the RManniBucau v2 Blog
>>  blog-rmannibucau.rhcloud.com
>>  RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, Angular, Open
>>  Source, Code and geeky topics...
>>  <http://rmannibucau.wordpress.com> | Github <https://github.com/
>>  rmannibucau> |
>> 
>> 
>>  [old blog] new RManniBucau().blog()
>>  rmannibucau.wordpress.com
>>  New blog on: https://blog-rmannibucau.rhcloud.com/
>>  LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>>  <http://www.tomitribe.com> | JavaEE Factory
>>  <https://javaeefactory-rmannibucau.rhcloud.com>
>> 
>>  2016-09-28 23:27 GMT+02:00 Xavier Dury <[email protected]>:
>> 
>>  >
>>  > Caused by: javax.enterprise.inject.AmbiguousResolutionException: There
>>  is
>>  > more than one Bean with type javax.enterprise.context.
>>  ConversationQualifiers:
>>  > [@javax.enterprise.inject.Default()]
>>  > for injection into Field Injection Point, field name :  conversation,
>>  Bean
>>  > Owner : [ConversationAliaser, WebBeansType:MANAGED, Name:null, API
>>  > Types:[eg.ConversationAliaser,java.lang.Object],
>>  > Qualifiers:[javax.enterprise.inject.Default,javax.
>>  enterprise.inject.Any]]
>>  > found beans:
>>  > Conversation, WebBeansType:PRODUCERMETHOD, Name:conversation, API
>>  > Types:[javax.enterprise.context.Conversation,java.lang.Object],
>>  > Qualifiers:[javax.enterprise.inject.Default,javax.
>>  > enterprise.inject.Any,javax.inject.Named] from file:/D:/development/
>>  > workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class
>>  > ConversationImpl, WebBeansType:CONVERSATION,
>>  Name:javax.enterprise.context.conversation,
>>  > API Types:[org.apache.webbeans.conversation.ConversationImpl,
>>  > javax.enterprise.context.Conversation,java.lang.Object],
>>  > 
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]
>>  > from jar:file:/C:/Users/xavier/.m2/repository/org/apache/
>>  > openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl-
>>  > 1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class
>>  >
>>  >
>>  >
>>  >
>>  >
>>  >
>>  >
>>  > From: Mark Struberg <[email protected]>
>>  > Sent: Wednesday, September 28, 2016 11:20 PM
>>  > To: [email protected]
>>  > Subject: Re: OpenEJB and EL
>>  >
>>  > +1
>>  >
>>  > means
>>  >
>>  > @RequestScoped
>>  >
>>  > public class ConversationWrapper {
>>  >   private @Inject Conversation conv;
>>  >
>>  >   @Produces
>>  >   @Dependent
>>  >   @Named("conv")
>>  >
>>  >   public Conversation getConv() {
>>  >     return conv;
>>  >   }
>>  > }
>>  >
>>  >
>>  >
>>  >
>>  > On Wednesday, 28 September 2016, 23:10, Romain Manni-Bucau <
>>  > [email protected]> wrote:
>>  >
>>  >
>>  > >
>>  > >
>>  > >a producer allows to get a shorter/more elegant naming like 
> #{conv.id}
>>  > if you @Produces @Named("conv") ;)
>>  > >
>>  > >
>>  > >
>>  > >Romain Manni-Bucau
>>  > >@rmannibucau |  Blog | Old Wordpress Blog | Github | LinkedIn |
>>  > Tomitriber | JavaEE Factory
>>  > >
>>  > >2016-09-28 23:01 GMT+02:00 Mark Struberg 
> <[email protected]>:
>>  > >
>>  > >Oh boy, sorry for you. You did hit a blank spot in the CDI spec.
>>  > >>
>>  > >>Problem is that the EE umbrella spec, the EL spec and the CDI 
> spec
>>  > contradict each other.
>>  > >>
>>  > >>The Weld guys solved this by introducing a Javax class. But 
> that takes
>>  > away the whole javax.* tree for the EL. That's just not good as it
>>  > contradicts the EL spec.
>>  > >>
>>  > >>Could you please try the following
>>  > >>
>>  > >>@RequestScoped
>>  > >>@Named("conversation")
>>  > >>public class ConversationWrapper {
>>  > >>   private @Inject Conversation conv;
>>  > >>
>>  > >>  public Conversation get() {
>>  > >>       return conv;
>>  > >>   }
>>  > >>}
>>  > >>
>>  > >>And in the EL just use #{conversation.get.id}
>>  > >>
>>  > >>LieGrue,
>>  > >>strub
>>  > >>
>>  > >>
>>  > >>
>>  > >>
>>  > >>
>>  > >>> On Wednesday, 28 September 2016, 22:12, Xavier Dury <
>>  > [email protected]> wrote:
>>  > >>> > I really don't understand how something like 
> <f:param
>>  > >>> name="cid"
>>  > >>> value="#{javax.enterprise. 
> context.conversation.id}"/> actually
>>  > >>> works... something must be made to make the EL processor 
> accept that
>>  > invalid
>>  > >>> bean name.
>>  > >>>
>>  > >>> Making a producer which @Produces @Named Conversation 
> conflicts with
>>  > the
>>  > >>> built-in bean from OWB (with WebBeanType.CONVERSATION)...
>>  > >>>
>>  > >>> ... so, I have done the following for my tests but I feel 
> a bit
>>  > ashamed because
>>  > >>> I can't imagine there is no better solution than this 
> ;-)
>>  > >>>
>>  > >>> public class ConversationAliaser {
>>  > >>>     public class Javax {
>>  > >>>         public Enterprise getEnterprise() {return 
> new Enterprise();}
>>  > >>>
>>  > >>>     }
>>  > >>>     public class Enterprise {
>>  > >>>         public Context getContext() {return new 
> Context();}
>>  > >>>     }
>>  > >>>     public class Context {
>>  > >>>         public Conversation getConversation() 
> {return conversation;}
>>  > >>>
>>  > >>>     }
>>  > >>>     @Inject
>>  > >>>     private Conversation conversation;
>>  > >>>     @Produces @ApplicationScoped 
> @Named("javax")
>>  > >>>     public Javax javax() {return new Javax();}
>>  > >>> }
>>  > >>>
>>  > >>> But that works!
>>  > >>>
>>  > >>> Xavier
>>  > >>>
>>  > >>>
>>  > >>>
>>  > >>> From: Xavier Dury <[email protected]>
>>  > >>> Sent: Wednesday, September 28, 2016 8:42 PM
>>  > >>> To: [email protected]
>>  > >>> Subject: Re: OpenEJB and EL
>>  > >>>
>>  > >>> Hmmm... I guess I'll have to @Produces @Named the 
> conversation if I
>>  > want to
>>  > >>> use it in ELs. I don't know if something like
>>  > >>> #{applicationScope['javax. enterprise.context.
>>  > conversation'].transient}
>>  > >>> would work?
>>  > >>>
>>  > >>> I remember back in my JSP days that, sometimes, I had to 
> use
>>  something
>>  > like
>>  > >>> ${requestScope['javax.servlet. 
> forward.request_uri']} instead of
>>  > >>> plain ${javax.servlet.forward. request_uri}.
>>  > >>>
>>  > >>> Xavier
>>  > >>>
>>  > >>>
>>  > >>> From: Romain Manni-Bucau <[email protected]>
>>  > >>> Sent: Wednesday, September 28, 2016 6:54 PM
>>  > >>> To: [email protected]
>>  > >>> Subject: Re: OpenEJB and EL
>>  > >>>
>>  > >>> hmm, wonder if it is linked to the value you try to 
> evaluate (which
>>  > doesn't
>>  > >>> respect EL spec even if in CDI spec - don't ask 
> please ;)).. See
>>  > >>> https://issues.jboss.org/ browse/CDITCK-462 /
>>  >
>>  >
>>  > System Dashboard - JBoss Issue Tracker
>>  > issues.jboss.org
>>  > Atlassian JIRA Project Management Software 
> (v6.4.11#64026-sha1:78f6ec4)
>>  > About JIRA; Report a problem; Powered by a free Atlassian JIRA open
>>  source
>>  > license for Red Hat ...
>>  > >>> http://lists.jboss.org/ pipermail/cdi-dev/2015-
> January/006009.html
>>  >
>>  >
>>  > lists.jboss.org Mailing Lists
>>  > lists.jboss.org
>>  > lists.jboss.org Mailing Lists: Welcome! Below is a listing of all the
>>  > public mailing lists on lists.jboss.org. Click on a list name to get
>>  more
>>  > information ...
>>  > >>>
>>  > >>>
>>  > >>>
>>  > >>>
>>  > >>> Romain Manni-Bucau
>>  > >>> @rmannibucau <https://twitter.com/ rmannibucau> |  
> Blog
>>  > >>>
>>  > >>>
>>  > >>>
>>  > >>> Romain Manni-Bucau (@rmannibucau) | Twitter
>>  > >>> twitter.com
>>  > >>> The latest Tweets from Romain Manni-Bucau (@rmannibucau). 
> ASF /
>>  > Java(EE) /
>>  > >>> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE
> Factory:
>>  > >>> https://t.co/0VnvWwbedt . Blog ...
>>  > >>> <https://blog-rmannibucau. rhcloud.com> | Old 
> Wordpress Blog
>>  > >>> <http://rmannibucau.wordpress. com> | Github
>>  > >>> <https://github.com/ rmannibucau> |
>>  > >>> LinkedIn <https://www.linkedin.com/in/ rmannibucau> 
> | Tomitriber
>>  > >>> <http://www.tomitribe.com> | JavaEE Factory
>>  > >>> <https://javaeefactory- rmannibucau.rhcloud.com>
>>  > >>>
>>  > >>> 2016-09-28 18:17 GMT+02:00 Xavier Dury 
> <[email protected]>:
>>  > >>>
>>  > >>>>  Hi Romain,
>>  > >>>>
>>  > >>>>  I tried with org.apache.tomcat:tomcat- 
> jasper-el:8.5.5 but it does
>>  > not
>>  > >>>>  parse my expression until I change 
> ".transient" by
>>  > >>> ".isTransient()" and
>>  > >>>>  then it gives the same error: javax.el. 
> PropertyNotFoundException:
>>  > >>>>  ELResolver cannot handle a null base Object with 
> identifier
>>  > >>> 'javax'.
>>  > >>>>
>>  > >>>>  Does the EL context need something else than adding 
> the
>>  > >>>>  BeanManager.getELResolver()  to be able to resolve 
> some implicit
>>  > objects? I
>>  > >>>>  don't understand why it works with ri-1.0.
>>  > >>>>
>>  > >>>>  Xavier
>>  > >>>>
>>  > >>>>
>>  > >>>>  From: Romain Manni-Bucau 
> <[email protected]>
>>  > >>>>  Sent: Wednesday, September 28, 2016 4:02 PM
>>  > >>>>  To: [email protected]
>>  > >>>>  Subject: Re: OpenEJB and EL
>>  > >>>>
>>  > >>>>  Hi Xavier
>>  > >>>>
>>  > >>>>  On the phone so hard to give you a link bit try 
> using tomcat el
>>  impl
>>  > of
>>  > >>>>  tomcat 8.5
>>  > >>>>
>>  > >>>>  Le 28 sept. 2016 15:29, "Xavier Dury" 
> <[email protected]>
>>  > >>> a écrit :
>>  > >>>>
>>  > >>>>  > Hi,
>>  > >>>>  >
>>  > >>>>  > I am using OpenEJB for my tests and need 
> support for EL
>>  > expressions in
>>  > >>> my
>>  > >>>>  > own code.
>>  > >>>>  >
>>  > >>>>  > By default, if I do something like this (pay 
> attention to the
>>  > >>>>  expression):
>>  > >>>>  >
>>  > >>>>  > ExpressionFactory factory = beanManager. 
> wrapExpressionFactory(
>>  > >>>>  > ExpressionFactory.newInstance( ));
>>  > >>>>  > StandardELContext elContext = new 
> StandardELContext(factory);
>>  > >>>>  > elContext.addELResolver( 
> beanManager.getELResolver());
>>  > >>>>  > ValueExpression expression = 
> factory.createValueExpression(
>>  > elContext,
>>  > >>>>  > "#{javax.enterprise.context. 
> conversation.transient}",
>>  > >>> Boolean.class);
>>  > >>>>  > expression.getValue(elContext) ;
>>  > >>>>  >
>>  > >>>>  > and only add org.apache.tomee:openejb-core: 
> 7.0.1 to my project
>>  > then I
>>  > >>>>  get
>>  > >>>>  > javax.el.ELException: Unable to find 
> ExpressionFactory of type:
>>  > >>>>  > org.apache.el. ExpressionFactoryImpl
>>  > >>>>  >
>>  > >>>>  > if I add org.glassfish:javax.el:3.0.0 then I 
> get javax.el.
>>  > >>>>  PropertyNotFoundException:
>>  > >>>>  > ELResolver cannot handle a null base Object 
> with identifier
>>  > >>> 'javax'
>>  > >>>>  >
>>  > >>>>  > if I switch the EL library to 
> com.sun.el:el-ri:1.0 (+
>>  > >>> META-INF/javax.el.
>>  > >>>>  ExpressionFactory
>>  > >>>>  > < com.sun.el. ExpressionFactoryImpl) then my 
> expression can be
>>  > >>> evaluated
>>  > >>>>  > but I can't use any new feature of 3.0 
> (like lambdas)
>>  > >>>>  >
>>  > >>>>  > So, either my dependencies are wrong or I am 
> not correctly
>>  > >>> initializing
>>  > >>>>  my
>>  > >>>>  > factory.
>>  > >>>>  >
>>  > >>>>  > Does anybody have an idea?
>>  > >>>>  >
>>  > >>>>  > Thanks,
>>  > >>>>  >
>>  > >>>>  > Xavier
>>  > >>>>
>>  > >>>>
>>  > >>>
>>  > >>
>>  > >
>>  > >
>>  > >
>>  >
>>  >
>> 
>> 
> 
    

Reply via email to