Hi Alex,

Forgot this for now, I must to rethink a bit. I'll be back when I have more
clear something. Thanks in advance.
Anyway, I think item renderers docs will be very helpful for me and others

Thanks!


El mar., 10 mar. 2020 a las 5:51, Alex Harui (<[email protected]>)
escribió:

> FWIW, I built TDJ locally on Feb 19 when I pushed the has branch.  If I go
> to the ComboBox there is a demo with sliders and the sliders work for me.
> Is that ComboBox virtual or no?
>
> -Alex
> On 3/9/20, 4:54 PM, "Carlos Rovira" <[email protected]> wrote:
>
>     Hi Alex,
>
>     in Jewel ComboBox something is not working as expected for
> ItemRenderers,
>     while in VirtualComboBox is working right. I mean rowCount/rowHeight.
>     If you check ComboBoxPlayGround in TDJ for an example where those
>     properties are set (the one with HSliders), you'll see those
> properties are
>     not causing effect. Instead in the VirtualPlayGround a similar
>     VirtualComboBox is configured with that properties and works ok.
>
>     I think the problem is in the mapper for List, that is different from
>     Basic. I can investigate if is a good time to remove jewel mappers now
> that
>     renderers are more modular, but I'll need a bit of documentation,
> since I'm
>     digging though all the code and is a bit cumbersome to imagine what's
> all
>     about.
>
>     So could you add some docs to the Itemrenderer royale doc page [1]? I
> think
>     it will be of help to me, and others here, and for users too.
>
>     Thanks in advance
>
>     Carlos
>
>     [1]
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapache.github.io%2Froyale-docs%2Ffeatures%2Fitem-renderers&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=j9LG%2FW3EhKlHeWgMr%2FRcfkKFind4I1o3pnu2kGnFVGY%3D&amp;reserved=0
>
>
>     El lun., 2 mar. 2020 a las 9:28, Alex Harui (<[email protected]
> >)
>     escribió:
>
>     >
>     >
>     > On 3/1/20, 11:54 PM, "Harbs" <[email protected]> wrote:
>     >
>     >     Sure. I think separating Selection from the Renderer was the
> right
>     > thing to do, but we also need to figure out how to make it do the
> “right
>     > thing” be default.
>     >
>     >     I’m wondering if there should be a “selectionBead” property in
> every
>     > item renderer which could be null.
>     >
>     >     Maybe DataContainerBase should accept a selectionRenderer
> property the
>     > same way it accepts an itemRenderer?
>     >
>     >
>     > I don't know what your scenario really is, so don't have an
> opinion.  The
>     > SelectableItemRendererClassFactory could look on the List's Strand
> for an
>     > instance of a bead that it can use instead of getting the class
> reference
>     > from CSS.  It depends on where you want to control the configuration
> and
>     > why.  I'm not sure there will be "one way".
>     >
>     > An item renderer should probably only have a selectionBead settable
>     > property if you can assign different selection beads per renderer,
> not per
>     > list, which is probably renderer-specific and not something for the
> base
>     > classes.
>     >
>     > FWIW, DataContainerBase isn't intended to support selection, it is
> just
>     > supposed to crank out a bunch of children for a container.  The
> Lists are
>     > generally where selection becomes optional/required.
>     >
>     > -Alex
>     >
>     >
>     >     > On Mar 2, 2020, at 9:47 AM, Alex Harui
> <[email protected]>
>     > wrote:
>     >     >
>     >     > More loosely-coupled pieces often results in head-scratching.
> But
>     > it also results in PAYG and flexibility.
>     >     >
>     >     > Our job is to find the common patterns, and pre-compose as
> needed,
>     > such as the Express component set.  This "has" pattern is a new
> pattern so
>     > we'll have to figure out new best practices.  And there are probably
> more
>     > than one.  You might want to override what Selection bead is used
>     >     >
>     >     > 1) from some List-level config/attribute/css
>     >     > 2) in the renderer itself
>     >     > 3) by some renderer-level config/attribute/css
>     >     >
>     >     > IMO, it depends on where you want to control the composition.
>     >     >
>     >     > My 2 cents,
>     >     > -Alex
>     >     >
>     >     > On 3/1/20, 11:36 PM, "Harbs" <[email protected]> wrote:
>     >     >
>     >     >    Yes. If I replace the default
> SelectableItemRendererClassFactory
>     >     >
>     >     >    My work-around was to use:
>     >     >
>     >     >    js|List{
>     >     >           IItemRendererClassFactory:
>     >
> ClassReference("org.apache.royale.core.OverridableSelectableItemRendererClassFactory");
>     >     >    }
>     >     >
>     >     >    The average user will be scratching their heads on how to
> solve
>     > this problem.
>     >     >
>     >     >> On Mar 2, 2020, at 1:19 AM, Alex Harui
> <[email protected]>
>     > wrote:
>     >     >>
>     >     >>
>     >     >>
>     >     >> On 3/1/20, 12:33 AM, "Harbs" <[email protected] <mailto:
>     > [email protected]>> wrote:
>     >     >>
>     >     >>   I’ve also discovered that setting the selection bead is more
>     > difficult than I would hope it to be.
>     >     >>
>     >     >>   For example there should be an easy way to specify the
> selection
>     > bead in a situation like this:
>     >     >>
>     >     >> I may not be understanding the problem.  The
> SpreadIconRenderer
>     > could have the SelectionBead in its bead list.
>     >     >>
>     >     >> -Alex
>     >     >>
>     >     >>   <js:List
>     >     >>
>     > itemRenderer="com.printui.view.renderers.SpreadIconRenderer"
>     >     >>          height="100%" width="100%"
>     >     >>          >
>     >     >>          <js:beads>
>     >     >>                  <js:ArrayListSelectionModel/>
>     >     >>                  <js:DataItemRendererFactoryForArrayList/>
>     >     >>                  <js:EasyDataProviderChangeNotifier/>
>     >     >>                  <js:VScrollViewport id="scrollView"/>
>     >     >>          </js:beads>
>     >     >>
>     >     >>   </js:List>
>     >     >>
>     >     >>> On Mar 1, 2020, at 1:43 AM, Alex Harui
> <[email protected]>
>     > wrote:
>     >     >>>
>     >     >>> I've tried two different patterns:
>     >     >>>
>     >     >>> 1) ItemRendererOwnerVIew via "has":  See
>     >
> Core/src/main/royale/org/apache/royale/core/ItemRendererOwnerViewBead.as.
>     > Then the ItemRendererClassFactory or the initializer can set it
>     >     >>>
>     >     >>> 2) Baking it in where needed and implementing
>     > IItemRendererOwnerView and setting it in the initializer.
>     >     >>>
>     >     >>> The main "benefit" of this part of the refactor is that not
> all
>     > item renderers need to be assigned a host since many don't need it,
> so it
>     > is PAYG for those who do.  The advantage of the "has" approach is
> that
>     > custom item renderers don't add an itemRendererOwnerView property,
> but if
>     > the component doesn't allow custom item renderers, might be simpler
> to use
>     > approach #2.
>     >     >>>
>     >     >>> HTH,
>     >     >>> -Alex
>     >     >>>
>     >     >>> On 2/29/20, 12:17 PM, "Harbs" <[email protected]> wrote:
>     >     >>>
>     >     >>>  What’s the recommended pattern for getting the “data host”
> from
>     > an itemRenderer now that itemRendererParent/itemRendererOwnerView is
> no
>     > longer a “thing”?
>     >     >>>
>     >     >>>  I have the following code in an itemRenderer which inherits
> from
>     > DataItemRenderer:
>     >     >>>
>     >     >>>  (itemRendererParent.host.parent as
>     > PagePalette).showMenuHandler(myValueEvent);
>     >     >>>
>     >     >>>> On Feb 24, 2020, at 7:02 PM, Alex Harui
> <[email protected]>
>     > wrote:
>     >     >>>>
>     >     >>>> It seemed like a separate concern.  Right now there are two
>     > highly used ItemRendererClassFactory, but several Initializers.
>     >     >>>>
>     >     >>>> -Alex
>     >     >>>>
>     >     >>>> On 2/24/20, 3:06 AM, "Harbs" <[email protected]
> <mailto:
>     > [email protected]>> wrote:
>     >     >>>>
>     >     >>>> Why is IItemRendererInitializer separate from
>     > IItemRendererClassFactory?
>     >     >>>>
>     >     >>>>> On Feb 21, 2020, at 12:03 AM, Alex Harui
>     > <[email protected]> wrote:
>     >     >>>>>
>     >     >>>>> I pushed changes that I think has everything working in
> Jewel by
>     > using the same "has" pattern that is used in other component sets.
>     >     >>>>>
>     >     >>>>> The Lists in the ToDo examples use a regular
>     > ItemRendererClassFactory instead of
> SelectableItemRendererClassFactory that
>     > is now used in most other places (List/DataGrid/Table)
>     >     >>>>>
>     >     >>>>> The recommended pattern for disabling selection in a list
> is
>     > whether you choose a ClassFactory that attaches a Selection Bead to
> each
>     > renderer.  There was an exception to that rule in one of the Table
> examples
>     > because it wanted only certain renderers to not have selection. I
> added a
>     > bead that turns off the selection for that case.  IMO, how to deal
> with
>     > such an exception will be based more on what percentage of the
> renderers
>     > need selection.  If most do, then add a Selection Bead to all
> renderers but
>     > disable selection where you don't want it.  If most do not want
> selection,
>     > then add the bead where you need it.
>     >     >>>>>
>     >     >>>>> Thanks,
>     >     >>>>> -Alex
>     >     >>>>>
>     >     >>>>> On 2/20/20, 11:28 AM, "Carlos Rovira" <
> [email protected]
>     > <mailto:[email protected]> <mailto:[email protected]
> <mailto:
>     > [email protected]>>> wrote:
>     >     >>>>>
>     >     >>>>> yes, Jewel has the "structure" and is organized in SASS
> files,
>     > then
>     >     >>>>> JewelTheme has the "styling" part and is as well SASS.
>     >     >>>>> so Jewel should not need to change, and people should only
> need
>     > to change
>     >     >>>>> JewelTheme or create a new theme one using it as a
> template.
>     >     >>>>>
>     >     >>>>> I'll add examples to ant tomorrow
>     >     >>>>>
>     >     >>>>> thanks
>     >     >>>>>
>     >     >>>>>
>     >     >>>>> El jue., 20 feb. 2020 a las 20:17, Alex Harui
>     > (<[email protected] <mailto:[email protected]>>)
>     >     >>>>> escribió:
>     >     >>>>>
>     >     >>>>>>
>     >     >>>>>>
>     >     >>>>>> On 2/20/20, 11:04 AM, "Carlos Rovira" <
> [email protected]
>     > <mailto:[email protected]>> wrote:
>     >     >>>>>>
>     >     >>>>>> forgot to say. Can you add missing examples to ANT? don't
> know
>     > where
>     >     >>>>>> to do
>     >     >>>>>> that
>     >     >>>>>> and checking Jewel don't see the use of
>     >     >>>>>> SelectableItemRendererClassFactory.
>     >     >>>>>> all times ItemRendererClassFactory is used
>     >     >>>>>>
>     >     >>>>>> I could fix the Ant side, but I don't have time.  It
> think all
>     > you need to
>     >     >>>>>> do is add it to the examples/build.xml
>     >     >>>>>>
>     >     >>>>>> I didn't use SelectableItemRendererClassFactory in Jewel
>     > because I wasn't
>     >     >>>>>> sure if the selection was supposed to be changeable at
>     > runtime.  I think
>     >     >>>>>> you've confirmed that it isn't so we can change to use
>     >     >>>>>> SelectableItemRendererClassFactory
>     >     >>>>>>
>     >     >>>>>> I knew the themes were generated by SASS, but I didn't
> realize
>     > the Jewel
>     >     >>>>>> one was as well.
>     >     >>>>>>
>     >     >>>>>> -Alex
>     >     >>>>>>
>     >     >>>>>> El jue., 20 feb. 2020 a las 20:00, Carlos Rovira (<
>     >     >>>>>> [email protected] <mailto:[email protected]
> >>)
>     >     >>>>>> escribió:
>     >     >>>>>>
>     >     >>>>>>> Hi Alex,
>     >     >>>>>>>
>     >     >>>>>>> remember that Jewel uses SASS to create the CSS. I
> already
>     > pushed a
>     >     >>>>>> commit
>     >     >>>>>>> with ["warning"]. It's not the first time I warn about
> it ;)
>     >     >>>>>>> You must to change SASS file. The css is just generated
> (like
>     > other
>     >     >>>>>>> generations in compiler), and is committed since no body
> added
>     > SASS
>     >     >>>>>> to ANT.
>     >     >>>>>>> Maven has a sass plugin to compile SASS.
>     >     >>>>>>>
>     >     >>>>>>> I saw you response and commented there
>     >     >>>>>>>
>     >     >>>>>>> Thanks
>     >     >>>>>>>
>     >     >>>>>>> Carlos
>     >     >>>>>>>
>     >     >>>>>>>
>     >     >>>>>>> El jue., 20 feb. 2020 a las 19:55, Alex Harui
>     >     >>>>>> (<[email protected] <mailto:
> [email protected]>>)
>     >     >>>>>>> escribió:
>     >     >>>>>>>
>     >     >>>>>>>> I replied on this topic on your commit email.
>     >     >>>>>>>>
>     >     >>>>>>>> So I don't have to copy that into this thread, read
> what I
>     > said in
>     >     >>>>>> that
>     >     >>>>>>>> email and reply on that thread and let's figure out the
> right
>     > thing
>     >     >>>>>> to do.
>     >     >>>>>>>> I am having some weird problem with my Maven build where
>     > every time
>     >     >>>>>> I try
>     >     >>>>>>>> to change Jewel's defaults.css something overwrites
> it.  I'm
>     > trying
>     >     >>>>>> to
>     >     >>>>>>>> figure out what is going on there.
>     >     >>>>>>>>
>     >     >>>>>>>> -Alex
>     >     >>>>>>>>
>     >     >>>>>>>> On 2/20/20, 10:47 AM, "Carlos Rovira" <
>     > [email protected] <mailto:[email protected]>>
>     >     >>>>>> wrote:
>     >     >>>>>>>>
>     >     >>>>>>>> Hi Alex,
>     >     >>>>>>>>
>     >     >>>>>>>> I found that TodoMVC examples was not working, so I
> fixed it
>     >     >>>>>> removing
>     >     >>>>>>>> the
>     >     >>>>>>>> non existing properties (hoverable and selectable).
>     >     >>>>>>>> But I found Jewel ListItemRenderer has all baked, so I
>     > created a
>     >     >>>>>>>> SimpleListItemRenderer (in Jewel Simple in the normal
> prefix
>     >     >>>>>> for a
>     >     >>>>>>>> "base",
>     >     >>>>>>>> "basic" or "simple" option) that hast the minimum
> required.
>     >     >>>>>>>>
>     >     >>>>>>>> So at least in Jewel if people wants hoverable and
> selectable
>     >     >>>>>>>> renderers use
>     >     >>>>>>>> the normal ListItemRenderer.
>     >     >>>>>>>> If don't want that indicators, use
> SimpleListItemRenderer. If
>     >     >>>>>> you
>     >     >>>>>>>> want just
>     >     >>>>>>>> show hover, but not selected state, then extend Simple
> version
>     >     >>>>>> and
>     >     >>>>>>>> add "
>     >     >>>>>>>> ClassSelectorListRuntimeSelectableItemRendererBead" and
>     >     >>>>>> configure to
>     >     >>>>>>>> have
>     >     >>>>>>>> just "hoverable" to true ¿ok?
>     >     >>>>>>>>
>     >     >>>>>>>> Hope I understand ok how it works. Let me know if
> something is
>     >     >>>>>> not as
>     >     >>>>>>>> expected.
>     >     >>>>>>>>
>     >     >>>>>>>> Thanks
>     >     >>>>>>>>
>     >     >>>>>>>> Carlos
>     >     >>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>>> El jue., 20 feb. 2020 a las 18:06, Alex Harui
>     >     >>>>>>>> (<[email protected] <mailto:
> [email protected]
>     > >>)
>     >     >>>>>>>> escribió:
>     >     >>>>>>>>
>     >     >>>>>>>>> I'm not sure I understand what you mean by "control".
>     >     >>>>>>>>>
>     >     >>>>>>>>> Before the "has" changes, every ItemRenderer contained
> or
>     >     >>>>>> inherited
>     >     >>>>>>>> code
>     >     >>>>>>>>> that had hovered/selected APIs that drew visuals, and
> the
>     >     >>>>>>>> ItemRenderer also
>     >     >>>>>>>>> "had" a bead like ItemRendererMouseController that set
> the
>     >     >>>>>> hovered
>     >     >>>>>>>> property
>     >     >>>>>>>>> on that item renderer, and the List's controller would
> set
>     > the
>     >     >>>>>>>> selected
>     >     >>>>>>>>> property.
>     >     >>>>>>>>>
>     >     >>>>>>>>> Now, every ItemRenderer "has" a bead that has the
>     >     >>>>>> hovered/selected
>     >     >>>>>>>>> properties, and the ItemRendererMouseController and the
>     >     >>>>>> Lists's
>     >     >>>>>>>> controllers
>     >     >>>>>>>>> get that bead instead of talking to the ItemRenderer
>     >     >>>>>> directly.  I
>     >     >>>>>>>> guess
>     >     >>>>>>>>> that's the new way of thinking for has/composition vs
>     >     >>>>>>>> is/inheritance:  a
>     >     >>>>>>>>> component doesn't have to have all of its APIs glued
> to its
>     >     >>>>>> API
>     >     >>>>>>>> surface.
>     >     >>>>>>>>> We mainly do that for convenience in MXML, but for more
>     >     >>>>>> internal
>     >     >>>>>>>> stuff like
>     >     >>>>>>>>> this, loose-coupling via has/composition shared more
> code and
>     >     >>>>>>>> increases
>     >     >>>>>>>>> configurability, but does add some runtime overhead in
> its
>     >     >>>>>> raw form.
>     >     >>>>>>>>> Hopefully we can optimize that away.
>     >     >>>>>>>>>
>     >     >>>>>>>>> HTH,
>     >     >>>>>>>>> -Alex
>     >     >>>>>>>>>
>     >     >>>>>>>>> On 2/20/20, 5:01 AM, "Piotr Zarzycki" <
>     >     >>>>>> [email protected] <mailto:
> [email protected]>>
>     >     >>>>>>>> wrote:
>     >     >>>>>>>>>
>     >     >>>>>>>>> Hi Alex,
>     >     >>>>>>>>>
>     >     >>>>>>>>> Could you provide an example how would I control
>     >     >>>>>>>> hovering/selecting in
>     >     >>>>>>>>> item
>     >     >>>>>>>>> renderer when I don't have build in hover property
> etc. ?
>     >     >>>>>> How
>     >     >>>>>>>> should I
>     >     >>>>>>>>> compose such item renderer ?
>     >     >>>>>>>>>
>     >     >>>>>>>>> Thanks,
>     >     >>>>>>>>> Piotr
>     >     >>>>>>>>>
>     >     >>>>>>>>> czw., 20 lut 2020 o 03:20 Alex Harui
>     >     >>>>>> <[email protected] <mailto:
> [email protected]>>
>     >     >>>>>>>>> napisał(a):
>     >     >>>>>>>>>
>     >     >>>>>>>>>> I pushed the "has" changes.  TourDeJewel seems to be
>     >     >>>>>> working
>     >     >>>>>>>>> correctly for
>     >     >>>>>>>>>> me.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> The principle of "has" is similar to inheritance vs
>     >     >>>>>>>> composition.
>     >     >>>>>>>>> Just
>     >     >>>>>>>>>> like top-level components like List are composed of
> many
>     >     >>>>>>>> beads, the
>     >     >>>>>>>>> item
>     >     >>>>>>>>>> renderers are now composed of more beads as well.
> That
>     >     >>>>>>>> reduces the
>     >     >>>>>>>>>> requirement to add code to a class in order to "be/is"
>     >     >>>>>>>> something.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> There used to be copies of code that drew hover and
>     >     >>>>>> selected
>     >     >>>>>>>> states
>     >     >>>>>>>>> on
>     >     >>>>>>>>>> the item renderers in each new kind of item renderer
>     >     >>>>>> that
>     >     >>>>>>>> couldn't
>     >     >>>>>>>>> inherit
>     >     >>>>>>>>>> from an item renderer that could draw selected and
>     >     >>>>>> hovered
>     >     >>>>>>>> states.
>     >     >>>>>>>>> Now,
>     >     >>>>>>>>>> the itemrenderers compose their selection visuals.   A
>     >     >>>>>> single
>     >     >>>>>>>> item
>     >     >>>>>>>>> renderer
>     >     >>>>>>>>>> like StringItemRenderer can be composed with no
>     >     >>>>>> selection
>     >     >>>>>>>> drawing at
>     >     >>>>>>>>> all,
>     >     >>>>>>>>>> or with solid color selection drawing or with
> alternate
>     >     >>>>>> color
>     >     >>>>>>>>> selection
>     >     >>>>>>>>>> drawing or something new.    And that means that some
>     >     >>>>>> new
>     >     >>>>>>>> kind of
>     >     >>>>>>>>> item
>     >     >>>>>>>>>> renderer, like a TextInput can become an item renderer
>     >     >>>>>> more
>     >     >>>>>>>> easily,
>     >     >>>>>>>>> by
>     >     >>>>>>>>>> composing a selection visuals bead instead of having
> to
>     >     >>>>>> add
>     >     >>>>>>>> all of
>     >     >>>>>>>>> that
>     >     >>>>>>>>>> code.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Another place I started using "has" but didn't fully
>     >     >>>>>> replace
>     >     >>>>>>>> the old
>     >     >>>>>>>>> code
>     >     >>>>>>>>>> was in handling itemRendererParent, which is now
> called
>     >     >>>>>>>>>> itemRendererOwnerView (to try to make it more clear
>     >     >>>>>> that isn't
>     >     >>>>>>>>> always the
>     >     >>>>>>>>>> parent of the item renderer and is sometimes an
> internal
>     >     >>>>>>>>>> datagroup/container).  Turns out a lot of our
> renderers
>     >     >>>>>>>> didn't need
>     >     >>>>>>>>> to know
>     >     >>>>>>>>>> the itemRendererParent, so in many cases we no longer
>     >     >>>>>> figure
>     >     >>>>>>>> it out
>     >     >>>>>>>>> and
>     >     >>>>>>>>>> assign it.  But in cases where it is needed, the
>     >     >>>>>> property is
>     >     >>>>>>>>> currently left
>     >     >>>>>>>>>> baked into the renderer, but in some new cases, it is
>     >     >>>>>>>> composed.  An
>     >     >>>>>>>>>> ItemRendererOwnerViewBead is added to the strand
>     >     >>>>>> instead of
>     >     >>>>>>>> added to
>     >     >>>>>>>>> a
>     >     >>>>>>>>>> class and contains the reference to the ownerView.
>     >     >>>>>> Maybe
>     >     >>>>>>>> someday
>     >     >>>>>>>>> we'll
>     >     >>>>>>>>>> fully remove the old pattern, not sure.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Ideally we would do more "has" than "is".  It could
>     >     >>>>>> allow us
>     >     >>>>>>>> to
>     >     >>>>>>>>> eliminate
>     >     >>>>>>>>>> much of the required code to be a top tag in an MXML
>     >     >>>>>> document.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Other changes in this branch were to add
> "Initializers"
>     >     >>>>>> so the
>     >     >>>>>>>>>> RendererFactories didn't bake in code for specific
> item
>     >     >>>>>>>> renderers,
>     >     >>>>>>>>> and to
>     >     >>>>>>>>>> create a few base classes with overrides so there is
>     >     >>>>>> less
>     >     >>>>>>>> code to
>     >     >>>>>>>>> maintain.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> There should be little if any impact to application
>     >     >>>>>> code.  It
>     >     >>>>>>>> should
>     >     >>>>>>>>>> mainly affect the internals of how item renderer-based
>     >     >>>>>> things
>     >     >>>>>>>> are
>     >     >>>>>>>>> created.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Thanks,
>     >     >>>>>>>>>> -Alex
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> On 2/17/20, 4:33 PM, "Carlos Rovira" <
>     >     >>>>>> [email protected] <mailto:[email protected]>
>     >     >>>>>>>>>
>     >     >>>>>>>>> wrote:
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Hi Alex,
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> if will be of help if you point us to different
>     >     >>>>>> links
>     >     >>>>>>>> where we
>     >     >>>>>>>>> can
>     >     >>>>>>>>>> learn
>     >     >>>>>>>>>> about this modifications, since I at least can just
>     >     >>>>>>>> imagine what
>     >     >>>>>>>>> is all
>     >     >>>>>>>>>> about, but will need to get deeper in the concepts
>     >     >>>>>> to
>     >     >>>>>>>> understand
>     >     >>>>>>>>> the
>     >     >>>>>>>>>> changes and to apply this patterns.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> In Jewel each "list component has its own type of
>     >     >>>>>>>> renderer, so
>     >     >>>>>>>>> for
>     >     >>>>>>>>>> example
>     >     >>>>>>>>>> List uses ListItemRenderer and DataGrid has
>     >     >>>>>>>>> DataGridItemRenderer, since
>     >     >>>>>>>>>> usually at that component level the user needs
>     >     >>>>>> similar
>     >     >>>>>>>>> infrastructure
>     >     >>>>>>>>>> like
>     >     >>>>>>>>>> hoverable, selectable...and some (not much) more,
>     >     >>>>>> don't
>     >     >>>>>>>> know
>     >     >>>>>>>>> right now
>     >     >>>>>>>>>> how
>     >     >>>>>>>>>> all this will fit with the "has" new
>     >     >>>>>> pattern....I'll try
>     >     >>>>>>>> it.
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Just one important thing. There's actual users and
>     >     >>>>>>>> clients using
>     >     >>>>>>>>> Jewel
>     >     >>>>>>>>>> and
>     >     >>>>>>>>>> other UI sets and are with very short times for
>     >     >>>>>> their
>     >     >>>>>>>>> migrations, so
>     >     >>>>>>>>>> just
>     >     >>>>>>>>>> want to ask you to test as much as possible, since
>     >     >>>>>> TDJ
>     >     >>>>>>>> has many
>     >     >>>>>>>>>> examples
>     >     >>>>>>>>>> now. Other thing you can test is new TodoMVC to see
>     >     >>>>>> how it
>     >     >>>>>>>>> behaves,
>     >     >>>>>>>>>> since
>     >     >>>>>>>>>> it uses a List with IRs. So we can ensure (as much
>     >     >>>>>> as we
>     >     >>>>>>>> can)
>     >     >>>>>>>>> the merge
>     >     >>>>>>>>>> left things working (as much as we can)
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Thanks for working on this, will try all of this
>     >     >>>>>> tomorrow
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> Carlos
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> El lun., 17 feb. 2020 a las 22:35, Alex Harui
>     >     >>>>>>>>>> (<[email protected] <mailto:
> [email protected]
>     > >>)
>     >     >>>>>>>>>> escribió:
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>> I've pushed the "has" branch that contains a
>     >     >>>>>>>> refactoring of
>     >     >>>>>>>>> the item
>     >     >>>>>>>>>>> renderers.  Tour De Jewel and MDL Example seem to
>     >     >>>>>> be
>     >     >>>>>>>> working
>     >     >>>>>>>>> as is
>     >     >>>>>>>>>> Basic
>     >     >>>>>>>>>>> List Example and MX AdvancedDataGrid.
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> "has" is really just calls to getBeadByType.  If
>     >     >>>>>> we
>     >     >>>>>>>> start to
>     >     >>>>>>>>> see
>     >     >>>>>>>>>>> performance issues, then we'll look into
>     >     >>>>>> optimizing.
>     >     >>>>>>>> The
>     >     >>>>>>>>> motivation
>     >     >>>>>>>>>> to
>     >     >>>>>>>>>>> switch to "has" came from several bugs about
>     >     >>>>>> using MX
>     >     >>>>>>>>> Label/CheckBox
>     >     >>>>>>>>>> as
>     >     >>>>>>>>>>> item renderers.  In Royale, the ItemRenderers
>     >     >>>>>> were in
>     >     >>>>>>>> control
>     >     >>>>>>>>> of the
>     >     >>>>>>>>>>> visuals of their rollover and selected state.
>     >     >>>>>> That is
>     >     >>>>>>>> a more
>     >     >>>>>>>>> proper
>     >     >>>>>>>>>>> encapsulation than the way it was in Flex where
>     >     >>>>>> the
>     >     >>>>>>>> lists drew
>     >     >>>>>>>>> the
>     >     >>>>>>>>>> rollover
>     >     >>>>>>>>>>> and selected states and it was hard to override
>     >     >>>>>> the
>     >     >>>>>>>> visuals
>     >     >>>>>>>>> for a
>     >     >>>>>>>>>> custom
>     >     >>>>>>>>>>> item renderer.  But in the develop branch Royale
>     >     >>>>>> code,
>     >     >>>>>>>> it would
>     >     >>>>>>>>>> require
>     >     >>>>>>>>>>> that custom itemrenderers implement a lot of APIs
>     >     >>>>>>>> related to
>     >     >>>>>>>>>> rollover and
>     >     >>>>>>>>>>> selected visuals.  Instead we can now reuse/share
>     >     >>>>>> code
>     >     >>>>>>>> for
>     >     >>>>>>>>> visuals
>     >     >>>>>>>>>> between
>     >     >>>>>>>>>>> different renderers because a renderer now can
>     >     >>>>>> "has" a
>     >     >>>>>>>>>> rollover/selection
>     >     >>>>>>>>>>> implementation instead of being one.
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> There are more pieces involved, but there is more
>     >     >>>>>>>> sharing of
>     >     >>>>>>>>> code.
>     >     >>>>>>>>>> Along
>     >     >>>>>>>>>>> the way I found that there were some not-so-PAYG
>     >     >>>>>>>> patterns
>     >     >>>>>>>>> being used
>     >     >>>>>>>>>> in MDL
>     >     >>>>>>>>>>> and Jewel renderers that might deserve further
>     >     >>>>>>>> modification.
>     >     >>>>>>>>> There
>     >     >>>>>>>>>> are
>     >     >>>>>>>>>>> "hoverable" and "selectable" APIs that appear to
>     >     >>>>>> be
>     >     >>>>>>>> used to
>     >     >>>>>>>>>> permanently
>     >     >>>>>>>>>>> turn off selection and hover visuals.  In
>     >     >>>>>> general, I
>     >     >>>>>>>> think
>     >     >>>>>>>>> there is
>     >     >>>>>>>>>> better
>     >     >>>>>>>>>>> use of PAYG and composition when functionality is
>     >     >>>>>>>> "built up"
>     >     >>>>>>>>> and not
>     >     >>>>>>>>>>> "turned off", so with the "has" pattern the
>     >     >>>>>> renderers
>     >     >>>>>>>> can be
>     >     >>>>>>>>> added
>     >     >>>>>>>>>> to a
>     >     >>>>>>>>>>> list without any selection visuals at all (for a
>     >     >>>>>>>> non-selectable
>     >     >>>>>>>>>> list) or
>     >     >>>>>>>>>>> re-composed with custom visuals that only support
>     >     >>>>>>>> hoverable,
>     >     >>>>>>>>> for
>     >     >>>>>>>>>> example.
>     >     >>>>>>>>>>> I left it "hoverable/selectable" in the API
>     >     >>>>>> surface for
>     >     >>>>>>>> now,
>     >     >>>>>>>>> but
>     >     >>>>>>>>>> something
>     >     >>>>>>>>>>> to think about going forward.
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> I’m going to run a few more tests before merging
>     >     >>>>>> and
>     >     >>>>>>>> pushing to
>     >     >>>>>>>>>> develop.
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> -Alex
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> On 1/15/20, 10:44 PM, "Alex Harui"
>     >     >>>>>>>> <[email protected] <mailto:
> [email protected]>>
>     >     >>>>>>>>> wrote:
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> You are welcome to try and see how many cache
>     >     >>>>>> hits
>     >     >>>>>>>> it
>     >     >>>>>>>>> gets.  I
>     >     >>>>>>>>>> think
>     >     >>>>>>>>>>> in renderers, we ask once per renderer.  I'm not
>     >     >>>>>> sure
>     >     >>>>>>>> there is
>     >     >>>>>>>>> a
>     >     >>>>>>>>>> faster way
>     >     >>>>>>>>>>> to do the first lookup of "is", but for "has" we
>     >     >>>>>> could
>     >     >>>>>>>> change
>     >     >>>>>>>>> the
>     >     >>>>>>>>>> lookup
>     >     >>>>>>>>>>> and save time.
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>> On 1/15/20, 10:38 PM, "Greg Dove" <
>     >     >>>>>>>> [email protected] <mailto:[email protected]>>
>     >     >>>>>>>>> wrote:
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>    For the  'something is ISomeInterface'
>     >     >>>>>>>>>>>    I had wondered in the past if these types
>     >     >>>>>> of
>     >     >>>>>>>> lookups
>     >     >>>>>>>>> could be
>     >     >>>>>>>>>>> incrementally
>     >     >>>>>>>>>>>    cached on the 'is' target (after first
>     >     >>>>>> lookup),
>     >     >>>>>>>> that
>     >     >>>>>>>>> might
>     >     >>>>>>>>>> make
>     >     >>>>>>>>>>> sense for
>     >     >>>>>>>>>>>    interfaces, which are the deepest checks I
>     >     >>>>>>>> think?
>     >     >>>>>>>>>>>    caching result (could optionally create
>     >     >>>>>> the Map)
>     >     >>>>>>>>>>>
>     >     >>>>>>>> ISomeInterface['implMap'].set(something.constructor,
>     >     >>>>>>>>>> isResult )
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>    then earlier in the interface checks, it
>     >     >>>>>> could
>     >     >>>>>>>> do
>     >     >>>>>>>>> something
>     >     >>>>>>>>>> like:
>     >     >>>>>>>>>>>     if (ISomeInterface['implMap']  &&
>     >     >>>>>>>>>>>
>     >     >>>>>>>> ISomeInterface['implMap'].has(something.constructor) )
>     >     >>>>>>>>> return
>     >     >>>>>>>>>>>
>     >     >>>>>>>> ISomeInterface['implMap'].get(something.constructor)
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>    I realize its extra code, but it should be
>     >     >>>>>>>> quite a bit
>     >     >>>>>>>>>> faster over
>     >     >>>>>>>>>>> time I
>     >     >>>>>>>>>>>    think.
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>    On Thu, Jan 16, 2020 at 7:20 PM Alex Harui
>     >     >>>>>>>>>>> <[email protected] <mailto:
> [email protected]>>
>     > wrote:
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>> Hi,
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> Several different threads have brought
>     >     >>>>>> up
>     >     >>>>>>>> issues with
>     >     >>>>>>>>>> sharing
>     >     >>>>>>>>>>> code between
>     >     >>>>>>>>>>>> component sets.  Other threads have
>     >     >>>>>> offered
>     >     >>>>>>>>> different and
>     >     >>>>>>>>>> clever
>     >     >>>>>>>>>>> ways to
>     >     >>>>>>>>>>>> do various things like how MXML is
>     >     >>>>>> applied to
>     >     >>>>>>>> a
>     >     >>>>>>>>> component.
>     >     >>>>>>>>>>> Meanwhile, over
>     >     >>>>>>>>>>>> in MX emulation, I was starting to copy
>     >     >>>>>> some
>     >     >>>>>>>> code
>     >     >>>>>>>>> from
>     >     >>>>>>>>>> Basic to
>     >     >>>>>>>>>>> MXRoyale to
>     >     >>>>>>>>>>>> get the various MX components to be
>     >     >>>>>> valid item
>     >     >>>>>>>>> renderers.
>     >     >>>>>>>>>>> MXRoyale is
>     >     >>>>>>>>>>>> using Basic's item renderer architecture
>     >     >>>>>>>> which is
>     >     >>>>>>>>> better
>     >     >>>>>>>>>>> encapsulated:  the
>     >     >>>>>>>>>>>> renderer draws its hovered and selected
>     >     >>>>>>>> state.  In
>     >     >>>>>>>>> Flex,
>     >     >>>>>>>>>> the
>     >     >>>>>>>>>>> List draws
>     >     >>>>>>>>>>>> over the renderer, which makes it hard
>     >     >>>>>> to
>     >     >>>>>>>> customize
>     >     >>>>>>>>> the
>     >     >>>>>>>>>> way the
>     >     >>>>>>>>>>> renderer
>     >     >>>>>>>>>>>> will look when hovered and selected.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> It finally occurred to me that one of
>     >     >>>>>> the
>     >     >>>>>>>> reasons we
>     >     >>>>>>>>> end up
>     >     >>>>>>>>>>> copying code
>     >     >>>>>>>>>>>> is because we are still using too many
>     >     >>>>>> "is"
>     >     >>>>>>>> checks
>     >     >>>>>>>>> instead
>     >     >>>>>>>>>> of
>     >     >>>>>>>>>>> "has"
>     >     >>>>>>>>>>>> checks.  I'm not even sure we have any
>     >     >>>>>> "has"
>     >     >>>>>>>> checks
>     >     >>>>>>>>> in the
>     >     >>>>>>>>>> Royale
>     >     >>>>>>>>>>>> framework.  I was afraid of the
>     >     >>>>>> overhead of a
>     >     >>>>>>>> "has"
>     >     >>>>>>>>> check,
>     >     >>>>>>>>>> but
>     >     >>>>>>>>>>> I'm starting
>     >     >>>>>>>>>>>> to change my mind because:
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> 1) The "is" check actually runs a fair
>     >     >>>>>> amount
>     >     >>>>>>>> of
>     >     >>>>>>>>> code,
>     >     >>>>>>>>>>> especially for
>     >     >>>>>>>>>>>> (comp is ISomeInterface)
>     >     >>>>>>>>>>>> 2) The length of bead arrays don't seem
>     >     >>>>>> too
>     >     >>>>>>>> long.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> A "has" check calls
>     >     >>>>>>>> getBeadByType(ISomeInterface),
>     >     >>>>>>>>> so it
>     >     >>>>>>>>>>> actually will run
>     >     >>>>>>>>>>>> the (bead is ISomeInterface) on
>     >     >>>>>> potentially
>     >     >>>>>>>> the
>     >     >>>>>>>>> entire
>     >     >>>>>>>>>> strand
>     >     >>>>>>>>>>> array/vector,
>     >     >>>>>>>>>>>> although we could speed that up by
>     >     >>>>>> annotating
>     >     >>>>>>>> beads
>     >     >>>>>>>>> or
>     >     >>>>>>>>>> keeping
>     >     >>>>>>>>>>> track of
>     >     >>>>>>>>>>>> what is on the strand.  But the code
>     >     >>>>>>>> sharing/reuse
>     >     >>>>>>>>>> potential of
>     >     >>>>>>>>>>> this
>     >     >>>>>>>>>>>> pattern seems significant to me.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> For example, it could change how hard
>     >     >>>>>> it is
>     >     >>>>>>>> to make a
>     >     >>>>>>>>>> component
>     >     >>>>>>>>>>> usable as
>     >     >>>>>>>>>>>> a top tag in MXML.  Instead of the
>     >     >>>>>> component
>     >     >>>>>>>> having
>     >     >>>>>>>>> to
>     >     >>>>>>>>>> implement
>     >     >>>>>>>>>>> certain
>     >     >>>>>>>>>>>> methods, the component could have a bead
>     >     >>>>>>>> installed
>     >     >>>>>>>>> and the
>     >     >>>>>>>>>>>> MXMLDataInterpreter could talk to that
>     >     >>>>>> bead
>     >     >>>>>>>> instead
>     >     >>>>>>>>> of the
>     >     >>>>>>>>>>> component.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> In the case of the item renderers,
>     >     >>>>>> instead of
>     >     >>>>>>>>> testing if
>     >     >>>>>>>>>> the
>     >     >>>>>>>>>>> renderer "is"
>     >     >>>>>>>>>>>> ISelectableLIstItemRenderer, it could
>     >     >>>>>> ask if
>     >     >>>>>>>> the
>     >     >>>>>>>>> created
>     >     >>>>>>>>>> widget
>     >     >>>>>>>>>>> "has" an
>     >     >>>>>>>>>>>> ISelectableLIstItemRenderer bead and the
>     >     >>>>>>>> logic in
>     >     >>>>>>>>> that
>     >     >>>>>>>>>> bead can
>     >     >>>>>>>>>>> be reused
>     >     >>>>>>>>>>>> in both Basic and MXRoyale without being
>     >     >>>>>>>> copied.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> Some code, like Container overrides of
>     >     >>>>>>>> addElement
>     >     >>>>>>>>> probably
>     >     >>>>>>>>>> can't
>     >     >>>>>>>>>>> be
>     >     >>>>>>>>>>>> refactored into a "has".  But I wonder
>     >     >>>>>> how
>     >     >>>>>>>> many other
>     >     >>>>>>>>>> things
>     >     >>>>>>>>>>> could.  I'm
>     >     >>>>>>>>>>>> not sure I would move everything that
>     >     >>>>>> could
>     >     >>>>>>>> be moved
>     >     >>>>>>>>> into a
>     >     >>>>>>>>>>> shared bead.
>     >     >>>>>>>>>>>> We'd have to think about the overhead
>     >     >>>>>> on small
>     >     >>>>>>>>> components
>     >     >>>>>>>>>> and
>     >     >>>>>>>>>>> apps.  But
>     >     >>>>>>>>>>>> for MXML support and Item Renderer
>     >     >>>>>> support,
>     >     >>>>>>>> it seems
>     >     >>>>>>>>> to
>     >     >>>>>>>>>> make
>     >     >>>>>>>>>>> sense.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> Anyway, I will look into refactoring
>     >     >>>>>> the item
>     >     >>>>>>>>> renderer
>     >     >>>>>>>>>> code in
>     >     >>>>>>>>>>> a  few days
>     >     >>>>>>>>>>>> unless feedback indicates otherwise.
>     >     >>>>>> Bugs
>     >     >>>>>>>> like #676
>     >     >>>>>>>>> and
>     >     >>>>>>>>>> #681
>     >     >>>>>>>>>>> inspired this
>     >     >>>>>>>>>>>> post.
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>> Of course, I could be wrong...
>     >     >>>>>>>>>>>> -Alex
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>>
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>> --
>     >     >>>>>>>>>> Carlos Rovira
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=z5Qw0OvSwtILm%2B3e%2Bw9aKu02Hu4uLzIb540OehTuiro%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=z5Qw0OvSwtILm%2B3e%2Bw9aKu02Hu4uLzIb540OehTuiro%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=z5Qw0OvSwtILm%2B3e%2Bw9aKu02Hu4uLzIb540OehTuiro%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
>     > >>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>>
>     >     >>>>>>>>>
>     >     >>>>>>>>> --
>     >     >>>>>>>>>
>     >     >>>>>>>>> Piotr Zarzycki
>     >     >>>>>>>>>
>     >     >>>>>>>>> Patreon: *
>     >     >>>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
>     > >>>
>     >     >>>>>>>>> <
>     >     >>>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
>     > >>>
>     >     >>>>>>>>>> *
>     >     >>>>>>>>>
>     >     >>>>>>>>>
>     >     >>>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>>> --
>     >     >>>>>>>> Carlos Rovira
>     >     >>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > >>>
>     >     >>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>>>
>     >     >>>>>>>
>     >     >>>>>>> --
>     >     >>>>>>> Carlos Rovira
>     >     >>>>>>>
>     >     >>>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > >>>
>     >     >>>>>>>
>     >     >>>>>>>
>     >     >>>>>>
>     >     >>>>>> --
>     >     >>>>>> Carlos Rovira
>     >     >>>>>>
>     >     >>>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > >>>
>     >     >>>>>>
>     >     >>>>>>
>     >     >>>>>>
>     >     >>>>>
>     >     >>>>> --
>     >     >>>>> Carlos Rovira
>     >     >>>>>
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
> >>
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
> >
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
>     > <
>     >
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725649667&amp;sdata=z4NUk9PMRcAxzHa6RY%2FYvfFUXIgt9xVL3RZyV9oRFjY%3D&amp;reserved=0
>     > >>>
>     >     >
>     >     >
>     >     >
>     >
>     >
>     >
>     >
>     >
>
>     --
>     Carlos Rovira
>
> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725649667&amp;sdata=z4NUk9PMRcAxzHa6RY%2FYvfFUXIgt9xVL3RZyV9oRFjY%3D&amp;reserved=0
>
>
>

-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to