Oh, I didn't realize that you wanted to add -outputFolderMap in addition to my proposal. That sounds good to me!
- Josh On Fri, Jun 2, 2017 at 9:03 AM, Alex Harui <aha...@adobe.com.invalid> wrote: > Agreed. So I think with the defaults I propose we will implement what you > propose and I can tweak it for my needs? > > -Alex > > On 6/2/17, 8:55 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > > >That's a perfectly valid solution for some people. I prefer to work with > >unmodified SDKs so that I don't accidentally release any projects that > >break for other people because their SDKs are not modified like mine. > > > >- Josh > > > >On Fri, Jun 2, 2017 at 8:42 AM, Alex Harui <aha...@adobe.com.invalid> > >wrote: > > > >> I would modify my flex-config.xml, so I don't have to modify every > >>project. > >> > >> -Alex > >> > >> On 6/2/17, 8:38 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > >> > >> >If I need to set an option, then I might as well set -output or > >> >-js-output. > >> >I simply wouldn't use -outputFolderMap. > >> > > >> >- Josh > >> > > >> >On Fri, Jun 2, 2017 at 8:25 AM, Alex Harui <aha...@adobe.com.invalid> > >> >wrote: > >> > > >> >> OK, sorry, I did miss that. I thought you were the one who wanted > >>the > >> >> output in the same folder, but I was mistaken. > >> >> > >> >> Keep in mind that: > >> >> > >> >> 1) The SWF compiler (MXMLC for both the regular Flex SDK and FlexJS) > >> >> defaults to putting the output in the same folder. So, if you have: > >> >> > >> >> /projects/SomeProject/SomeProject.mxml > >> >> > >> >> By default, the SWF is: > >> >> > >> >> /projects/SomeProject/SomeProject.swf > >> >> > >> >> 2) I have another folder of projects that don't have src folders at > >>all. > >> >> So before November 2016, when the default was as you propose it to be > >> >> again, the problem was this. If I have two projects: > >> >> > >> >> /projects/SomeProject/SomeProject.mxml > >> >> /projects/SomeOtherProject/SomeOtherProject/mxml > >> >> > >> >> Compiling one overwrites the bin folder of the other in projects/bin. > >> >> > >> >> > >> >> IMO, there is "no right answer", so I now think that we should add a > >> >> configuration option like: > >> >> > >> >> -outputFolderMap=src/main/flex,bin > >> >> -outputFolderMap+=.,../bin > >> >> > >> >> Then folks can configure defaults any way they want. The "." is the > >> >> special case for no matches with other patterns. You have proposed > >>the > >> >> default to be > >> >> > >> >> > >> >> -outputFolderMap+=.,../bin > >> >> > >> >> > >> >> It is currently: > >> >> > >> >> -outputFolderMap+=.,bin > >> >> > >> >> > >> >> AIUI, Maven actually specifies the equivalent of: > >> >> > >> >> -outputFolderMap=src/main/flex,target > >> >> > >> >> So folks who want to leverage that somehow could do so. > >> >> > >> >> > >> >> Thoughts? > >> >> -Alex > >> >> > >> >> > >> >> On 6/2/17, 7:33 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > >> >> > >> >> >You seem to be missing the most important part of my proposal. The > >> >> >compiler > >> >> >will put the "bin" directory in the parent of the main source > >>folder, > >> >> >regardless of whether it's named "src", "source", "alex-is-cool" or > >> >>*any* > >> >> >name whatsoever. I put some pseudo-code to explain that in one of my > >> >> >emails, but I guess you missed it. That's the main proposal. In > >> >>addition > >> >> >to > >> >> >that, "src/main/flex" would still be a special exception because > >>it's a > >> >> >more complex nested structure (otherwise, you'd get > >>"src/main/bin"). I > >> >> >hope > >> >> >that makes it clear! > >> >> > > >> >> >- Josh > >> >> > > >> >> >On Thu, Jun 1, 2017 at 10:39 PM, Alex Harui > >><aha...@adobe.com.invalid> > >> >> >wrote: > >> >> > > >> >> >> Maybe I don't understand your proposal. Currently I think you can > >> >>say > >> >> >> that there are exceptions for "src" and "src/main/flex". AIUI, > >>your > >> >> >> proposal is that only "src/main/flex" would be handled > >>differently. > >> >> >> > >> >> >> -Alex > >> >> >> > >> >> >> On 6/1/17, 12:13 PM, "Josh Tynjala" <joshtynj...@gmail.com> > wrote: > >> >> >> > >> >> >> >Why would you need to stop and reconfigure all of those projects? > >> >>With > >> >> >>the > >> >> >> >change that I suggested, all of your projects that use "src" > >>would > >> >> >> >continue > >> >> >> >to work just fine with no changes required. > >> >> >> > > >> >> >> >Yes, I'm perfectly happy making any changes after this release. > >> >> >> > > >> >> >> >- Josh > >> >> >> > > >> >> >> >On Thu, Jun 1, 2017 at 12:05 PM, Alex Harui > >> >><aha...@adobe.com.invalid> > >> >> >> >wrote: > >> >> >> > > >> >> >> >> Believe me, I am not worried about perfection here. > >> >> >> >> > >> >> >> >> I am saying that if we make changes, we should allow the set of > >> >> >>patterns > >> >> >> >> to be configurable so we don't have to change the compiler to > >>add > >> >>new > >> >> >> >> patterns. I already have a large set of projects with only > >>"src" > >> >> >>and I > >> >> >> >> would prefer not to have to stop and reconfigure all of those > >> >> >>projects. > >> >> >> >> When I have to debug into the compiling of a Flash Builder > >> >>project, > >> >> >>it > >> >> >> >> will save me time to not have to remember to add the output > >> >>folder. > >> >> >> >> > >> >> >> >> Having a config option would allow you to have what you want > >>and > >> >>for > >> >> >>me > >> >> >> >>to > >> >> >> >> have what I want. Can we agree to add a config option, but > >>maybe > >> >> >>after > >> >> >> >> this release? > >> >> >> >> > >> >> >> >> Thanks, > >> >> >> >> -Alex > >> >> >> >> > >> >> >> >> > >> >> >> >> On 6/1/17, 11:51 AM, "Josh Tynjala" <joshtynj...@gmail.com> > >> wrote: > >> >> >> >> > >> >> >> >> >If there are other nested source directory structures > >> >>recommended as > >> >> >> >> >standard practice by opinionated tools, similar to how Maven > >>use > >> >> >> >> >"src/main/flex", then sure, let's add them as we become aware > >>of > >> >> >>them. > >> >> >> >> > > >> >> >> >> >"srcx/main/flex" would indeed not be solved by my recommended > >> >> >>change. > >> >> >> >> >However, "source", "srcx", or "whatever-i-want-to-call-it" > >>would > >> >> >>all be > >> >> >> >> >solved, and I think a single directory with a different name > >>than > >> >> >> >>"src" is > >> >> >> >> >vastly more common than another nested directory structure > >>like > >> >> >> >> >"srcx/main/flex". At least from my experience looking at real > >> >>world > >> >> >> >> >projects over the years. Let's not let perfection stop us from > >> >> >>making > >> >> >> >>an > >> >> >> >> >improvement that will reduce the time users spend on figuring > >>out > >> >> >>why > >> >> >> >> >something isn't working as expected and contributors spend > >> >> >>explaining > >> >> >> >>why > >> >> >> >> >"src" is a special case when it doesn't need to be. > >> >> >> >> > > >> >> >> >> >- Josh > >> >> >> >> > > >> >> >> >> >On Thu, Jun 1, 2017 at 11:11 AM, Alex Harui > >> >> >><aha...@adobe.com.invalid> > >> >> >> >> >wrote: > >> >> >> >> > > >> >> >> >> >> If we allow one exception, why not more than one? > >> >> >> >> >> > >> >> >> >> >> What if we add an "outputFolderExceptions" list and default > >>it > >> >>to > >> >> >> >>just > >> >> >> >> >> contain "src/main/flex". Then I could add "src" in my SDK > >> >> >>installs > >> >> >> >>to > >> >> >> >> >>get > >> >> >> >> >> what I want. Still not sure how it solves the original > >>problem > >> >> >> >>though. > >> >> >> >> >> If someone has a src/main/flex pattern and changes it to > >> >> >> >>srcx/main/flex > >> >> >> >> >> seems like they will still be surprised. > >> >> >> >> >> > >> >> >> >> >> -Alex > >> >> >> >> >> > >> >> >> >> >> On 6/1/17, 10:39 AM, "Josh Tynjala" <joshtynj...@gmail.com> > >> >> wrote: > >> >> >> >> >> > >> >> >> >> >> >If we do as I suggest, there would no longer be a list of > >> >> >>patterns. > >> >> >> >>I > >> >> >> >> >>want > >> >> >> >> >> >to allow *any* folder name. That's what I mean by > >> >>generalizing. > >> >> >>Just > >> >> >> >> >> >automatically put the "bin" directory relative to the > >>parent > >> >> >> >>directory > >> >> >> >> >>of > >> >> >> >> >> >the main source file. (with one exception: Maven-style > >>project > >> >> >> >> >>structures > >> >> >> >> >> >with src/main/flex would still be a special case). > >> >> >> >> >> > > >> >> >> >> >> >Right now, if you compile like this... > >> >> >> >> >> > > >> >> >> >> >> >mxmlc src/MyProject.mxml > >> >> >> >> >> > > >> >> >> >> >> >...you get a "bin" directory in the same parent directory > >>as > >> >> >>"src". > >> >> >> >> >> > > >> >> >> >> >> >I want to allow you to use ANY name instead of "src" too, > >>like > >> >> >>this: > >> >> >> >> >> > > >> >> >> >> >> >mxmlc source/MyProject.mxml > >> >> >> >> >> >mxmlc whatever-i-want-to-call-it/MyProject.mxml > >> >> >> >> >> > > >> >> >> >> >> >... and still get a "bin" directory relative to "source" or > >> >> >> >> >> >"whatever-i-want-to-call-it". Replace "source" or > >> >> >> >> >> >"whatever-i-want-to-call-it" with *any* folder name at > >>random, > >> >> >>and I > >> >> >> >> >>want > >> >> >> >> >> >it to just work. > >> >> >> >> >> > > >> >> >> >> >> >The compiler would do something similar to this > >>pseudo-code: > >> >> >> >> >> > > >> >> >> >> >> >File mainClass = new > >> >> >> >> >> > >> >> >> >>>File("/path/to/MyProject/whatever-i-want-to-call-it/ > >> >> MyProject.mxml"); > >> >> >> >> >> >File bin = > >>mainClass.getParent().getParent().resolve("bin"); > >> >> >> >> >> > > >> >> >> >> >> >You'd get /path/to/MyProject/bin/ > >> >> >> >> >> > > >> >> >> >> >> >- Josh > >> >> >> >> >> > > >> >> >> >> >> > > >> >> >> >> >> >On Thu, Jun 1, 2017 at 10:18 AM, Alex Harui > >> >> >> >><aha...@adobe.com.invalid> > >> >> >> >> >> >wrote: > >> >> >> >> >> > > >> >> >> >> >> >> I just want to optimize for a couple of common cases in > >> >>order > >> >> >>to > >> >> >> >> >>save me > >> >> >> >> >> >> and maybe other folks some time. If for some reason I > >>need > >> >>to > >> >> >> >> >>compile a > >> >> >> >> >> >> Flash Builder project from the command-line or Ant or > >>Java > >> >> >> >>debugger, > >> >> >> >> >>I > >> >> >> >> >> >> don't have to remember to set the -output parameter. > >> >> >> >> >> >> > >> >> >> >> >> >> I used to get FB projects in JIRA and email and then > >>unpack > >> >> >>them > >> >> >> >>and > >> >> >> >> >> >> compile them outside of FB because then I can get the > >> >>debugger > >> >> >>on > >> >> >> >> >>them > >> >> >> >> >> >> more easily. All of our examples are set up so you can > >> >>compile > >> >> >> >>them > >> >> >> >> >> >>from > >> >> >> >> >> >> the command line and not have to type the -output > >>parameter. > >> >> >>And > >> >> >> >>if > >> >> >> >> >>you > >> >> >> >> >> >> make a mistake typing the output folder name, it ends up > >> >> >>creating > >> >> >> >>a > >> >> >> >> >>new > >> >> >> >> >> >> folder with that name. > >> >> >> >> >> >> > >> >> >> >> >> >> I'm not sure what you mean by generalizing. Are you > >> >>suggesting > >> >> >> >> >>allowing > >> >> >> >> >> >> folks to add more patterns to the set of folders where > >>the > >> >> >> >>compiler > >> >> >> >> >>will > >> >> >> >> >> >> chose the parent of the folder pattern? I'm not sure how > >> >>that > >> >> >> >>solves > >> >> >> >> >> >>the > >> >> >> >> >> >> problem. Seems like you'd still be surprised if you use > >> >> >>"source" > >> >> >> >>or > >> >> >> >> >> >> something that isn't in the default list so a warning > >>would > >> >> >>still > >> >> >> >> >>help, > >> >> >> >> >> >> but if that's what you want to do, seems like it wouldn't > >> >>hurt. > >> >> >> >> >> >> > >> >> >> >> >> >> My 2 cents, > >> >> >> >> >> >> -Alex > >> >> >> >> >> >> > >> >> >> >> >> >> > >> >> >> >> >> >> On 6/1/17, 9:59 AM, "Josh Tynjala" > >><joshtynj...@gmail.com> > >> >> >>wrote: > >> >> >> >> >> >> > >> >> >> >> >> >> >I'm not sure that I understand why you mentioned > >>changing > >> >> >>Flash > >> >> >> >> >> >>Builder's > >> >> >> >> >> >> >default source path. That seems mostly tangential here. > >> >> >> >> >> >> > > >> >> >> >> >> >> >I'm saying that the compiler shouldn't care whether it's > >> >>named > >> >> >> >> >>"src", > >> >> >> >> >> >> >"source", or "whatever-i-want-to-call-it". It should > >>simply > >> >> >> >>default > >> >> >> >> >>to > >> >> >> >> >> >> >putting "bin" in the parent of that folder. A warning > >>might > >> >> >>be a > >> >> >> >> >>good > >> >> >> >> >> >> >temporary workaround, but generalizing this behavior is > >> >> >> >> >>significantly > >> >> >> >> >> >> >better, in my opinion. > >> >> >> >> >> >> > > >> >> >> >> >> >> >- Josh > >> >> >> >> >> >> > > >> >> >> >> >> >> >On Thu, Jun 1, 2017 at 9:26 AM, Alex Harui > >> >> >> >> >><aha...@adobe.com.invalid> > >> >> >> >> >> >> >wrote: > >> >> >> >> >> >> > > >> >> >> >> >> >> >> I think "src" is for Flash Builder. I don't know > >>what it > >> >> >>would > >> >> >> >> >>take > >> >> >> >> >> >>to > >> >> >> >> >> >> >> get FB to default to something else. I know I have > >>lots > >> >>of > >> >> >> >> >>projects > >> >> >> >> >> >> >>with > >> >> >> >> >> >> >> just a "src" folder. > >> >> >> >> >> >> >> > >> >> >> >> >> >> >> I agree it is confusing. We could output a warning or > >> >> >>error if > >> >> >> >> >>you > >> >> >> >> >> >> >> haven't specified -output, -js-output and don't have > >> >>"src" > >> >> >>or > >> >> >> >> >> >> >> "src/main/flex" folders. Something like "Warning: > >>output > >> >> >> >>folder > >> >> >> >> >>not > >> >> >> >> >> >> >> specified and src or src/main/flex folders not > >>specified. > >> >> >> >>Output > >> >> >> >> >> >>will > >> >> >> >> >> >> >>be > >> >> >> >> >> >> >> in <name of output folder". > >> >> >> >> >> >> >> > >> >> >> >> >> >> >> Would that help eliminate confusion? That's easy for > >> >> >>someone > >> >> >> >>to > >> >> >> >> >>add > >> >> >> >> >> >>to > >> >> >> >> >> >> >> MXMLFlexJSPublisher.java. > >> >> >> >> >> >> >> > >> >> >> >> >> >> >> Thoughts? > >> >> >> >> >> >> >> -Alex > >> >> >> >> >> >> >> > >> >> >> >> >> >> >> On 6/1/17, 8:52 AM, "Josh Tynjala" > >> >><joshtynj...@gmail.com> > >> >> >> >>wrote: > >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >I think I had some trouble trying to get -output to > >> >>accept > >> >> >>a > >> >> >> >> >> >>directory > >> >> >> >> >> >> >>for > >> >> >> >> >> >> >> >a JS-only project, and that's when I figured out that > >> >> >> >>-js-output > >> >> >> >> >> >> >>exists. > >> >> >> >> >> >> >> >Maybe I was doing something wrong at the time. Or > >>maybe > >> >>it > >> >> >> >>didn't > >> >> >> >> >> >>quite > >> >> >> >> >> >> >> >work properly yet. > >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >Although, I still think it's confusing to those who > >> >>don't > >> >> >> >>realize > >> >> >> >> >> >>that > >> >> >> >> >> >> >> >"src" and "src/main/flex" get special treatment and > >>then > >> >> >>"bin" > >> >> >> >> >>ends > >> >> >> >> >> >>up > >> >> >> >> >> >> >> >somewhere else if they happen to choose a different > >>name > >> >> >>for a > >> >> >> >> >>new > >> >> >> >> >> >> >> >project. > >> >> >> >> >> >> >> >Between me and Santanu, that's two people who had to > >> >>waste > >> >> >> >>time > >> >> >> >> >>on > >> >> >> >> >> >> >> >figuring > >> >> >> >> >> >> >> >out why "bin" ended up somewhere we didn't expect. I > >> >>could > >> >> >> >>live > >> >> >> >> >> >> >>without it > >> >> >> >> >> >> >> >being the current working directory if "bin" would > >> >>simply > >> >> >>go > >> >> >> >>into > >> >> >> >> >> >>the > >> >> >> >> >> >> >> >parent directory of the directory containing the main > >> >> >>class by > >> >> >> >> >> >>default, > >> >> >> >> >> >> >> >regardless of whether it's named "src" or not. If > >> >> >> >> >>"src/main/flex" is > >> >> >> >> >> >> >>the > >> >> >> >> >> >> >> >only special case, that's better, in my opinion. > >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >- Josh > >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >On Thu, Jun 1, 2017 at 8:16 AM, Alex Harui > >> >> >> >> >> >><aha...@adobe.com.invalid> > >> >> >> >> >> >> >> >wrote: > >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >> And if you just use -output and not -js-output the > >>bin > >> >> >> >>folder > >> >> >> >> >> >>will be > >> >> >> >> >> >> >> >> where you specified -output, and if you specify > >> >> >> >> >> >> >> >> -output=somefolder\somefile.swf the output will be > >>in > >> >> >> >> >> >> somefolder\bin. > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> The logic is trying to say: > >> >> >> >> >> >> >> >> 1) If you specify -output as a SWF, we will use the > >> >> >>parent > >> >> >> >> >>folder > >> >> >> >> >> >>of > >> >> >> >> >> >> >>the > >> >> >> >> >> >> >> >> SWF > >> >> >> >> >> >> >> >> 2) If you specify -output as a folder, we will use > >> >>that > >> >> >> >>folder > >> >> >> >> >> >> >> >> 3) If you specify -js-output, we will use that > >> >> >>regardless of > >> >> >> >> >>what > >> >> >> >> >> >>you > >> >> >> >> >> >> >> >>used > >> >> >> >> >> >> >> >> for -output > >> >> >> >> >> >> >> >> 4) If you didn't specify -output or -js-output then > >> >> >> >> >> >> >> >> A) If you have a src folder or src/main/flex > >>folder > >> >>we > >> >> >> >>will > >> >> >> >> >>use > >> >> >> >> >> >>the > >> >> >> >> >> >> >> >> parent of src > >> >> >> >> >> >> >> >> B) Otherwise we will use the parent folder of the > >> >>main > >> >> >> >>source > >> >> >> >> >> >>file. > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> I don't agree that CWD is the right default. For > >>me, > >> >> >>I've > >> >> >> >> >>always > >> >> >> >> >> >> >>had a > >> >> >> >> >> >> >> >> folder full of test cases and am not always > >>changing > >> >> >> >>folders. > >> >> >> >> >>I > >> >> >> >> >> >> >>think > >> >> >> >> >> >> >> >>the > >> >> >> >> >> >> >> >> regular Flex MXMLC worked this way as well so I > >>didn't > >> >> >>want > >> >> >> >>to > >> >> >> >> >> >>change > >> >> >> >> >> >> >> >>that > >> >> >> >> >> >> >> >> pattern. > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> 4A is just a convenience for those who follow > >>certain > >> >> >>common > >> >> >> >> >> >> >>patterns so > >> >> >> >> >> >> >> >> they don't have to do as much typing on the command > >> >>line. > >> >> >> >>It > >> >> >> >> >> >>might > >> >> >> >> >> >> >>also > >> >> >> >> >> >> >> >> "do the right thing" for Flash Builder users. I > >>think > >> >> >>Maven > >> >> >> >> >> >>always > >> >> >> >> >> >> >> >> specifies the output folder. > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> My 2 cents, > >> >> >> >> >> >> >> >> -Alex > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> On 6/1/17, 7:48 AM, "Josh Tynjala" > >> >> >><joshtynj...@gmail.com> > >> >> >> >> >>wrote: > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> >In that case, the SWF will use the -output option: > >> >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >> >mxmlc -output=path/to/MyProject.swf -js-output=. > >> >> >> >> >> >>source/MyProject.as > >> >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >> >- Josh > >> >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >> >On Thu, Jun 1, 2017 at 7:30 AM, piotrz > >> >> >> >> >> >><piotrzarzyck...@gmail.com> > >> >> >> >> >> >> >> >>wrote: > >> >> >> >> >> >> >> >> > > >> >> >> >> >> >> >> >> >> Ahh..Ok now it is clear. What about if we have > >> >> >> >> >> >> >> >> >> -compiler.targets=JSFLEX,SWF - > >> >> >> >> >> >> >> >> >> So -js-output will be also the place where SWF > >>file > >> >> >>will > >> >> >> >> >> >>landed? > >> >> >> >> >> >> >>- If > >> >> >> >> >> >> >> >> >>yes > >> >> >> >> >> >> >> >> >> in > >> >> >> >> >> >> >> >> >> that case this param could have different name. > >> >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> >> Thanks, > >> >> >> >> >> >> >> >> >> Piotr > >> >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> >> ----- > >> >> >> >> >> >> >> >> >> Apache Flex PMC > >> >> >> >> >> >> >> >> >> piotrzarzyck...@gmail.com > >> >> >> >> >> >> >> >> >> -- > >> >> >> >> >> >> >> >> >> View this message in context: > >>http://apache-flex- > >> >> >> >> >> >> >> >> >> > >> >>development.2333347.n4.nabble.com/FlexJS-Why-FlexJS- > >> >> >> >> >> >> >> >> >> > >> >> >> >>compiler-statically-looks-for-src-folder-tp61991p61997.html > >> >> >> >> >> >> >> >> >> Sent from the Apache Flex Development mailing > >>list > >> >> >> >>archive > >> >> >> >> >>at > >> >> >> >> >> >> >> >> >>Nabble.com. > >> >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> > >> >> >> >> >> >> >> > >> >> >> >> >> >> > >> >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> > >> >> >> >> > >> >> >> > >> >> >> > >> >> > >> >> > >> > >> > >