Wednesday, December 23, 2009

Tech: Motorola Droid: Companion Link USB sync

Yesterday I wrote about the Droid and one of the gripes I had was the inability to sync notes and tasks. I also wrote about CompanionLink for Google. Well, turns out they have another product, CompanionLink USB for Android, that does exactly what I was going to write an app for. While Android does not have a native Notes or Tasks, CompanionLink USB has a built in app to store these items. Plus, it doesn't use any 3rd parties in the cloud, it just syncs directly. While it doesnt give me the ability to drag tasks to the calendar, thats OK, I typically do this on Outlook anyway. It also uses its own internal calendar, which while lacking a month or week view, it lays appointments out one after the other, just like the Today screen on the HTC Touch did, or the Agenda view in the Android calendar. This is perfect, exactly what I was looking for. The only other thing I could want from it is a widget that displays this on the desktop. Other than that, this was the final nail in the coffin for my trusty HTC Touch, you will be missed.

Tech: Motorola Droid

Its been a busy past few months for me. I am in the process of writing a revision to “Practical Data Analysis and Reporting with BIRT”, so I haven’t had much time to blog. Plus, with the holiday season, and a forced effort to continue with my extra curricular activities that got put on hold due to several months of travel, I’ve been neglecting the ‘ole blog here.

In the midst of the hustle and bustle, I broke down and bought a Motorola Droid from Verizon. My beloved HTC Touch was beginning to show it’s age in its lack of many of the on-demand features I am starting to demand as I get sucked into the world of social networks. And while I did get a hands on with the Nexus One (and no, I can’t divulge any information about it), I decided that I wasn’t willing to wait for its release, and had my doubts about it having CDMA capabilities since the units I had a hands on with were all GSM.

I won’t go into too much detail about the technical specs of the Droid since that has been covered to death elsewhere. What I will give are my impressions. First, and what was my biggest concern, was with the ability to tether. Verizon does not provide tethering for the Droid as of this writing. While the sales-girl at the store I bought mine from indicated that it would be available early next year, I’ve learned never to trust the grunts in the stores. This was a major stall point for me in buying it initially. Fortunately, there is an app called PDANet that solves this issue for me. It consists of a app the resides on the phone, and an app that sits on the computer. Using this, it was just as fast as tethering was with the HTC Touch. The only drawback is that it requires a connection to my PC, whereas with my Touch I was able to connect it to my beloved Cradlepoint PHS. So while I lose the ability to connect my iPod Touch to my PHS, I now have my main business travel tool back, and can offset the loss of Facebook on my iPod Touch with the fact that the Droid has this already.

So the next concern was syncing with Outlook. In this area I had to make a concession. I have lost the ability to sync my Outlook tasks and notes with the Droid, at least temporarily. I can sync everything else just fine, such as contacts and calendar events. This might be a bit of an issue going forward since it is very convenient to pull out my phone when I need to look at one of my notes. And since my notes contain some sensitive information, storing them in Google Docs or any other 3rd party cloud service is not an option. Its also a pain to lose the ability to plan my day on my phone by dragging over my tasks to my calendar. But this is only a temporary setback since this is an open source platform, and I am a programmer. I foresee a project in my future.

For the items that I can sync, there were a number of programs out there. I could have gone the manual route and exported from Outlook and imported into Google Apps or Gmail, but I liked the idea of an auto-sync between Outlook and Google/Android. So I settled on a program called CompanionLink. A little pricier than I would have liked, but I initially thought the Tasks sync would work, but they didn’t. They added all the tasks as daily events on the day that I initiated the sync. Not what I was looking for, but the Contacts and Calendar sync worked perfect. There is also the option of using Google Calendar Sync, or paying the 50 dollars a year to use Google App Sync as an Exchange server.

Some of the gripes I initially heard about the Droid centered around the keyboard. While the keyboard is offset from center, it wasn’t awkward for me. But to be fair, I have rather large hands. The added thumb wheel that makes it off center is something that I’ve hardly even used. Another gripe that I have is with the proprietary connector on the cable. In this day and age, why do manufacturers still do that when the mini-USB is pretty much standard. The dang connector is the same size, and its just a USB connector, so why use some proprietary plug in the phone? Its also quite a bit heavier than almost any other phone on the market. I am not sure what makes up the weight. I was also disappointed that Bejewled 2 wasn’t in the app store since I am hooked on it K

Despite these initial things, I love this phone. It is light years ahead of my HTC Touch. I used to think it was uncalled for with the criticism of Windows Mobile; especially since I was dual running Windows Mobile and Android on the Touch and preferred Windows Mobile on it. I just dismissed these criticisms as tech snobbery, even though in all honesty I did use my iPod Touch through my PHS tethered to my HTC Touch. But seriously, I haven’t been able to put this device down since I got it. After using this for a week, it really shows just how behind the times my old phone was. I get constant updates for all my email accounts, Facebook, Twitter and IM. I have gotten addicted to the Google Maps ability, and have branched out into exploring with Foursquares (and found some rather unusually tagged places, obviously someone playing pranks on the buddies). There are apps that I can talk to SMS message people rather than type. I’ve started using the famous barcode scanning app, which I had always dismissed as a gimmick until I actually had hands on with it. And I have plenty of the apps I was using on my iPod touch, such as Facebook, Pandora radio, and of course chess, to making my belt a little less saturated with gadgets I needed to use these apps in the past. I can use the camera as a portable scanner and convert documents to PDF to email to myself or others on the fly. Lots of potential here. And this is from a platform that is still in its infancy.

Tuesday, December 01, 2009

Article: Using Eclipse BIRT Extension Points: Aggregation

I wrote an article for IBMs DeveloperWorks that was published today. if your looking into the dark depths of BIRTs extension points model, its work a look. It is meant as an introductory tutorial to BIRTs extension points.

Wednesday, October 28, 2009

General: Upgrade RAM on Acer Aspire One D250

I love my new netbook. When netbooks were first released I thought they were a gimmick. I thought they were not a tool for serious users. Most people had laptops that had much more computing power. What I wasn't taking into account was “much more computing power” is usually too much for most tasks. So I've been traveling with my Aspire One D250 for the past 5 days, and its been great. Its a lot less strain on my shoulders lugging around this thing than lugging around my 17 inch Dell Vostro.

One of the things that has really kind of chafed me though was that it only came with 1Gb of ram. This is actually more than enough for simple web browsing and email reading. But in my case, there is a little nagging feeling in the back of my mind if I'm not getting the most out of my machine. Seriously, right now I have a Firefox instance open with Facebook, a Yahoo chat window open, Thunderbird open for email, and OpenOffice.org open while I type this article on a stock Windows 7 Starter (no default services shut down) and I'm still only using 833 Mb of memory. Still, I wanted to get the most ram for this thing that I could. With RAM being a fairly cheap commodity these days, it was a no brainer.

So I went down to the Office Depot and bought some ram for this netbook (OD being the only store close to where I was). They had a single stick of 2 Gb Kingston Valueram (KVR667D2SO/2GR) for 34 dollars at the time of this writing. Not a bad deal considering that it is 46 bucks on Amazon.

Installing the ram is fairly simple. Since I was traveling I had to run down to Radio Shack and get a cheap set of Jewlers Screwdrivers. And tiny philips head jewlers or flat head should work. Shut down the netbook, unplugged the power supply, remove the battery, and wait 5-10 minutes. You don't want any current running through this while you are working on it so you need to give any capacitors time to discharge. While the current in everything except the screen is fairly small and wont hurt you, its enough that it could short and destroy the netbook itself. I didn't remove any bios batteries, but that didn't seem to be a problem. I also typically ground myself with an anti-static wrist strap, however I didn't have one handy, so I touched some grounded metal to discharge any static that I had on me.

Flip the netbook over. There are three panels.


The one in the middle is the one you want to remove. It has a little picture of a memory stick on it so you will know it was the right one. Unscrew the single screw holding it in place. Popping the cover itself off took a little bit of gentle force because there are two tabs holding it in place. Just be careful not for force it too much, you dont want to break the plastic cover or try to force a knife or screwdriver under the slot and have it slip and nick any of the circuits inside.



With the cover off, there are two silver tabs on each side of the memory slot. Pull those out with the jewlers as a pry and the memory will pop up at an angle. Grab it by both sides (I try not to touch the memory stick itself just in case I have a little bit of static) and pull it out. Slide in the replacement stick at a slight angle. Make sure that the connections are under pins completely, and that the memory wont slide in any more. It has a notch and the slot has a key to make putting it in incorrectly very difficult. Once in place, push down until the two metal tabs lock into place. Replace the cover.

Turn on the machine. Hit F2 immediately to go into the BIOS and confirm that the bios recognizes that there is the correct amount of memory. Exit and save. Then boot normally and confirm that the OS sees the correct amount of memory.

Tuesday, October 27, 2009

Experience: iPod Touch Stuck on Apple Logo

I hate it when technology that is supposed to make my life easier makes it more complicated. I iPod Touch is a perfect example. Such a great little device. It has my music, all my exercise videos such as P90X and Gimnastica Natural, and movies I watch on planes. With all the additional apps, the added utility of the device has just shot through the roof. I can check Facebook, Twitter, play Scrabble with my friends. I have the Kindle app on there and learned Spring from reading “Spring Recipies, A Problem-Solution Approach” over the course of a couple of nights while traveling. Needless to say, this device has become a major part of my life. I joke that it does everything I need but make phone calls (damned you AT&T and your exclusivity).

So, of course, the dream fades into reality when last night while playing Scrabble with my wife it reboots itself and gets stuck on the Apple Logo. Damned.

So, after a bit of research there are two ways to fix this.

Fix 1. On your computer, start iTunes. On the iPod Touch and press and hold the Power and the Menu button until the screen turns off. Plug the USB cable into your computer. Hold the Home button and plug in the USB cable into the iPod, or turn it on. You will get a notice on your computer that an iPod in restore mode has been connected. Do not click on restore just yet. Wait 5-25 minutes leaving it plugged in. All of a sudden, you will get a notice that you can send diagnostic information to Apple, the iPod will reboot, sync, and work.

When I did this, I did click on restore, and I was on my tethered cell phone, so the connection was slow in downloading the firmware update. The reset and work process above set in before the download was complete, so I didn't have to do a complete factory restore, losing everything on my iPod, which would have been bad because I can't restore anything being that I am on the road.

Fix 2. Follow the above, click on the Restore button, and let iTunes do a complete restore, losing everything on the iPod touch.

I don't know why I had this issue. I had plenty of battery life. I read on a few forums that leaving it there and not clicking restore will work. You've got nothing to lose in trying it. If it doesn't, just go through with the Restore procedure and reload your apps and music. For me, it was a pain because I didn't have a backup, violating rule #1 :|

Friday, October 23, 2009

General: Initial Impressions of the Acer Aspire D250 with Windows 7

Yesterday I purchased an Acer Aspire One D250. I have been in the market for a netbook for a few weeks now, but have been holding out for one of two things, the Android D250 or the Windows 7 D250. since the Android version got such scathing reviews, I went with the Windows 7 version. While I really wanted an Android device, I will just wait for the Verizon Droid to come out to replace my beloved but aging HTC Vogue XV6900.

So, I’ve been messing with this for about a day now, and decided to write up my initial thoughts. What am I going to say about Windows 7 that hasn’t been said already? Not much. If your looking for a discussion about the technical merits of Windows 7, look elsewhere. There are better qualified people who have spent more time with it than I who can paint a better picture. This is more about my trials trying to accomplish some simple tasks with the D250 with Windows 7 and my impressions.

So the first thing to address is “why did I choose the Aspire One D250 over the other netbook models out there”? I did quite a bit of shopping and comparing. What I found is the majority of netbooks have the same exact configuration, the Intel Atom N280 running at 1.6Ghz, 1 Gig of ram, 10 inch screens, and 160 Gb hard disk. They come in all shapes and sizes, varying battery life, wireless and 3g networking options, but for the most part, the above core specs are the most common, give or take a few models that had much smaller SSD, or Celeron processors, or whatever. Basically, your average run of the mill netbook is similar to the laptop I just gave up due to lease expiring, except they are single core instead of dual core, half the ram, and a much larger hard disk. Besides, the ram for these things can be bought for 40-80 bucks online, so I can easily bump it up to 2 gigs if I choose.

What I found funny is that with most netbooks having an almost identical configuration, reviewers claims of one netbook being “blazing” vs “average” vs “slow” over another didn’t quite equate. Tech reviewers are typically idiots. How is one netbook with a 1.6 Ghz processor, 1 Gig of ram any faster or slower than another, give or take a few cycles based on bus architecture? Im not sure, and considering my low opinion of tech reviewers, I figured they didn’t either. If there is a difference, its so negligible that price became my determining factor, and the D250 won out in that area. AT&T had a few models that they subsidized for prices ranging from free to 50 bucks with a 2 year subscription plan, but I wouldn’t subject myself to AT&T’s horrible service, so paying full price was my forced route.

Unboxing it was like opening Christmas presents because I’ve wanted to get a netbook so that I wouldn’t need to carry around my rather unwieldy Vostro 1720. The first thing I noticed when starting up and doing the registration is that by default it throws McAfee Security Center with a 90 day trial. I personally don’t use McAfee, and haven’t since the days when they offered it as shareware on BBS systems alongside Commander Keen. Once the 90 day trial is over, I will ditch it.

Outside of that, the first startup took about 10 minutes to do all the filling in of user information. I skipped the networking setup as a later task, which I will cover later.

What follows below are my first impressions and my experiences trying to set up my network, looking around applications, and just playing around with it netbook.

First Impressions

My first glimpse of Windows 7 didn’t blow me away. It is more polished than Windows XP, and by polished I mean I have found that certain tasks are easier to do, and user interface is a little more intuitive once I get past my old dogmas.

For example, I’ve grown accustomed over the years to the Start Bar. I mean, me and the ‘ole Start Menu have been working in cohesion for almost 15 years. I know how to go to Start/Programs/Foo and click on the Bar icon. Second nature. So when I got into the new Start Menu in Windows 7 I was in for a bit of a shock. XP had a similar interface, but I always just set it back to classic mode. Vista might have forced the new interface on users, but I wouldn’t know because I skipped Vista entirely. So imagine my surprise when I couldn’t switch my Start Menu to classic mode. I’m stuck with this scrollbars within menus thing, and this bizarre shortcut thing on the right. That means change for me, and change scares me. Although, I do like the search bar, but Ill get to that later.

The taskbar is a direct rip-off of the OSX dock. I wont complain about it though, because I like the dock, and its not that far of a cry from the taskbar of old. It looks cleaner somehow, at least to me.

The resolution is a little off. I am too used to the 4:3 aspect ratio, even after using 16:9. 1024*600 just seems weird.

Changing the Background

The biggest shock to me is that I couldn’t change my background. This isn’t a groundbreaker to me since I never use wallpapers anyway. The first thing I always think when I see a picture of someones family on their desktop is “what a dork” or “soccer mom”, even when it’s a guys computer. This is a holdover from the days when having a wallpaper would be a killer on performance back in Windows 3.1. The habbit just stuck with me. But not having the option is bugging me. Granted its only in Windows 7 Starter that this limitation exists, but it still bugs me. Seriously. A feature available for almost 20 years in GUI’s is now crippled in Windows 7 Starter. But I can go to my default of a black background.

So how do I do this? I tried right clicking on the desktop and going into properties. Being a PC user since the time of the dinosaurs, I expected there to be a properties menu, but guess what? No properties.

My next instinct, go to control panel/display and change from there. So I go to the Start menu, and in that scarry right hand side is the control panel. I recognize that from XP, and I hated it then. I want my classic mode. But I digress. So I go into Control Panel.

And damnit, what do I get. 8 icons with a bunch of hyperlinks. Here is that damned philosophy of the OS developer trying to protect the user from themselves. I don’t want this stuff grouped into categories, I want it all layed out for me. Again, a habbit from as far back as Windows 3.1. Fortunately, to get what I want isn’t nearly as complicated as it was in older versions of Windows, having to switch to Classic view in Control Panel. Here I can just change the View By from Category to Large/Small icons. And look, there is Display.

The Display dialog is also different from what I’m used to. I want to change the color scheme, so I click on the “Change color scheme” link on the left hand side. No more tabs, apparently the new user experience are hyperlinks on the left.

The Window color and Appearance dialog looks like the old versions. Its good that Microsoft stuck with a consistent user interface in between dialogs, otherwise I’d get confused. (Your sarcasm detector should be going off). No, what’s interesting is I can set this to Windows Class, click on Advanced, and change my desktop color. Great. The Start Menu is still this bizarre new thing, but it looks familiar now, with the old fashion square button. And my black desktop. But if I try to do the same thing in Windows 7 Basic, no matter what I choose as my color, it defaults back to that stupid wallpaper. Argh. Oh well, mission accomplished, I have my black background.

What Applications Are Available?

So I navigated around to see what’s available.

I was greeted with a little pop-up from the Acer eRecovery console to create my system restore DVD’s. That’s when I noticed, there was no software in the box. Acer cheaped out on that and passed the buck on to the consumer to be responsible for creating recovery media. Apparently there is a hidden disk partition that boots a small version Windows in order to do a factory restore, but you have the option of creating external discs. Since my DVD burner was 1200 miles away at my office, I would just have to wait until I got home to do this. Sad, because it advises you that this should be the first thing you should do before using your computer. I guess they never considered that people buy things on business trips or when visiting family and leave their USB peripherals at home. Regardless, I will need to skip this step for now, but I will need to revisit it since I plan to wipe the drive clean and try Ubuntu Netbook Remix and Moblin, and would like to keep that option of going back to Windows 7.

So looking through the software selection, I have the much hated Microsoft Works. What’s sad is that this is probably going to be my productivity suite. Ironic because I have thought of as a joke since even my earliest computing experiences), but now that I own my own personal computer, I’m too cheap to pay for Office myself. A 90 day trial of Office 2007 is there, but I refuse to use that god awful Ribbon interface. I foresee OpenOffice making a home on this little guy at some point, which is fine because I have been using OO more and more for my home finance spreadsheets. I don’t have Exchange to anchor me to Outlook anymore, so Ubuntu is starting to look pretty good at this point. Ah Ubuntu, how I miss thee.

Anyway, the next thing I checked out was the Acer default software. Excluding the eRecovery tool, there is the Acer Updater, Welcome Center, Acer VCM, Games, and the Crystal Eye Cam. Acer Updater, I imagine, does what its name implies. I didn’t bother to run it. Welcome Center is just a tacky web page advertising the various programs installed on the machine, such as McAfee and Office. I didn’t want to do the Office trial when I started Office, why am I going to do it through the Welcome Center. VCM didn’t appear to do anything when I ran it. Identity Card shows you the information about your machine, such as Serial Number, Part Number and date of purchase. Useful during the registration process.

So the two fun things come next. I checked out the Crystal Eye Cam, which works surprisingly well. I have an external webcam that I picked up cheap for my Vostro, so having a webcam in the machine just like my wife’s Mac is nice. I think video chatting is in my future. One less device to carry in my backpack. It had a good picture for a low light area that I was testing it in, so I was pleased with that.

The games were something interesting that I hadn’t seen since the days of Packard Bells. You get this awful WildTangent interface, and these little “tokens” when you start the Acer Games application. There is a limited selection of games you can play, such as World of Goo, Zuma, Scrabble, and a few others, all set up as trial versions. I tried World of Goo. I was expecting the actual game, not some stupid picture of an arcade coin slot telling me I had a freebie and giving me the option to buy the full version. Oh Packard bell, I knew your involvement in the Acer Group would somehow manifest its ugly head. You bastards, I hated you when you were sold by Radio Shack, and I hate you now. I thought you had died and burned a long time ago. How wrong I am. This must be in partnership with WildTangent. Outside of Xbox Live, I have very little experience with these online gaming companies, such as Wildtangent or Gametap, so I was a little peeved. Piss off, its crap like this that makes people pirate. Since I own most of these games on other media (Scrabble on my iPod touch, World of Goo on the Wii), these will get removed very quickly to make space for more useful stuff. I remember a day when games came installed on machines as part of the package. I must be getting old.

I went to the old trusty rusty games like Solitaire. Microsoft absolutely butchered it. Just butchered it. Why the hell do I keep getting prompted to restart the game when there are no more moves. And what’s with these stupid animations? There is something to be said for the quite simplicity of the original versions of Solitaire. Where is my winking Jack? And that’s not a euphemism. Minesweeper wasn’t that bad.

So, speaking of the old staples, I went into Wordpad and Paint. What the hell is with the Ribbon. Seriously. Why is Microsoft pushing this down our throats? Piss off Ribbon, your hated, and noone likes you. So, we now have a mix of user interfaces littered throughout Windows. The old fashion menu bar, and the ribbon. That’s intuitive; I can’t imagine how Aunt Tessie will react to that. “Where’s the File menu I’ve been using since the Great Depression?” I don’t know Auntie, I just don’t know…

I didn’t play with Windows Live. I will when I make that backup disc and am sure that I can connect to the Internet and if this thing gets littered with virii in less than 5 minutes, I can restore from a clean image.

Connecting to the Network

So, out of curiosity, I decided to check out how hard it is be to set up the network on my Craddlepoint Personal Hot Spot. Right-mouse click, choose wireless hotspot, and click connect. Seems easy enough. But in my case, I have a MAC address filter set up, so I need to find the machines MAC address. So, my next quest was to find my MAC address for the wireless adaptor.

The Run menu that I had grown so accustomed to is hiding in a tree of menus in this new and fancy Start Menu. But I did have this nice little Search menu at the bottom of my start menu. So I typed in cmd to see if it was the same as Run. Not exactly, a list of options came up, and cmd was in there. So I click on it, and sure enough, my old favorite, the DOS prompt, greeted me, and I got my MAC address through IPCONFIG.

So I wanted to try this search box out. I don’t think it was in XP since I used classic interface, and I wasn’t one of the three people who actually used Vista, so I have no idea if it was there. I figured, “Hey, lets go find the MAC address through the Control Panel”. So I typed Control Panel, and got a few options. I selected All Control Panel Items. Nice, there is my Control Panel with all my options.

Then I realized, I could probably type anything and skip having to go through the Control Panel to get to my network settings. So I typed in Network. Sure enough, I got my Networking options. Change… it scares me. But this is pretty cool. I’m slowly learning.

Next I typed in Mac Address. OK, so it’s not THAT smart. Let’s try Network Adaptor Settings then. I get the Devices and printers. Isn’t a printer a device? Perhaps it’s now a special category of devices. But I’m not here to split hairs over semantics. Anyway, I right click on the icon showing my computer, and choose network settings. Under the Network and Internet Window, I click on Change Adaptor settings. I then right click on my Wireless Network Connection and choose properties. If I hover over the “Connect Using” text box, my Mac address shows.

That was kind of convoluted. There has to be an easier way. I mean, I know to how use the command line and ipconfig to get it, I’ve only been doing it since Windows 95 OSR 2. But remembering my days as a PC tech and having to do over the phone tech support, I couldn’t help but think how is your everyday average user going to know. So I go into Windows Help and type in MAC address. First item is “Using command line tools for networking information”… right. I should have guessed. The more things change the more they stay the same. At least if I was guiding grandma to the command prompt, its easy enough to say click the Start Menu, and type cmd, then Start Menu, then click, then type cmd. Besides, grandma isn’t going to have a MAC based whitelist on her wireless router.

Finger Gestures

One thing I noticed is how unresponsive the touchpad is. That’s when I realized like a big dummy I left a sticker on there. Slap forehead dummy. When I look at the sticker, I noticed it had a bunch of pictures of two fingers making gestures. So I tried one, then I realized that these were finger gestures just like on my iPod Touch. Now, I’m sure this is old hat to a lot of folks, but seriously, I’ve never had a machine that I could do finger gestures on except the iPod Touch and the iPhones I’ve played with. So, all my familiars are there, the pinch to zoom in and out, two fingers swiping up for scroll, and two fingers going left or right to go back or forward in a browser. I like this.

Desktop Gadgets.

Noticing that my desktop context menus properties menu was missing, I did notice a thing called Desktop Objects. I decided to look into this thing. What I got was the exact same thing as the KDE 4 Widgets. And by KDE 4 Widgets, I mean that’s where I was first introduced to them. At first I was shocked by this in KDE 4, but I’ve grown accustomed to them, and they are a welcomed addition in Windows. These might have been in Vista, but again, I wouldn’t know.

Etc.

I do like Powershell. I will have to play around with the Powershell ISE a little more to see what I can do with it. The concept of Powershell was interesting when it was first released, and the idea of interacting directly with .Net objects in script is compelling. I do wonder just how bad this is crippled due to security concerns. I only played with it for a little bit, and despite the help file saying there was colored syntax highlighting, nothing was highlighting for me.

Doing a search for Pictures in the search bar brings back all folders and images. I can imagine this providing situations that are… embarrassing. Same with videos.

I like how light this thing is. While I can easily move my Vostro around on the fly with one hand if I am zipping from one side of a cubicle to another, its not even a though with the Aspire. I mean, it weighs 2 pounds. Im afraid I might accidently throw the thing when I lift it. Say goodbye sore shoulders from lugging the Vostro around in my backpack.

The button under the touchpad is a pain. It’s a single button, but click on the left hand side for left click, right hand side for right click. I saw a single button and assumed they were trying for the Mac type touchpad. I kept wondering why it was so hard to push the button before I realized that the center of the button is a pivot.

Conclusion

So far I like this thing. It will be a welcome relief to carry around such a lighter system for engagements where I don’t need to use the beefy power of the Vostro. For instance, I’ve been on an assignment the past three months where the client provided me with a desktop system. I only needed my laptop to browse the web and check emails. I could use my smartphone for that, but seriously, a PC is much nicer. That’s where the netbook fits in. It will also be nice for presenting at conferences since I’m typically just going through PowerPoint slides and taking notes during other peoples presentations. I don’t need a 17 inch screen and a dual core machine with 4 gigs of ram for that.

While this is just superficial, initial impressions of the device, I have a feeling its going to grow on me more. Once I get my usual tools installed, such as Eclipse, I will have more day to day interacting with it. While it wont be a replacement for the workhorse I have now, given that it has the capability to do multiple monitor setups, it will be nice for those cases where I don’t need all the computing power strapped to my back. If your considering a netbook, you should consider the D250.

Wednesday, October 14, 2009

Fitness: Real Sauna Sauna Suit

I see more and more success stories about getting fit these days. It seems Fit is in. This is encouraging, especially with the dreary winter months coming, where we typically gain due to holidays and lower activity levels. I posted a number of years ago about my weight loss plan, eat less, exercise more. Pretty standard line of thought. I'm happy to say its almost 3 years later, and I've lost about 80-85 pounds going that route. I' floating around 205 at this point (my highest weight was at around 290 when I really got serious), give or take water intake. Still not at my target weight, but then again, its not a race, and I've got plenty of time.

So, one of the tools in my weight loss toolshed is the sauna suit. The one that I use and can honestly recommend in good faith is the Real Sauna sauna suit.

I got this thing almost 2 years ago while looking for something to help me get accustomed to extreme heat during exercise. I needed this for a number of reasons. First, I live in Texas, where we have 60 degree winters and 100+ degree summers. Second was this was a killer for me in Brazilian Jiu-Jitsu when I started out and I found myself not being able to endure 5-15 minute matches due to overheating. I also wanted to encourage more sweat while increasing my water intake so I could flush my system of garbage.

So I went through a few different sauna suit, which were all pretty much junk. They all tore and none of them sized correctly. Plus, it looked like I was some kind of hobo wearing a garbage bag.
I came across the Real Sauna suit out of the blue while searching the internet. It was pricey, but it sounded durable, which was my main focus after going through a few other brands. At the time, they only had the gray hoodie. While not exactly stylish, it looked like a normal sweat suit so people wouldn't look at me like I was crazy. So I gave it a try.

So here are the activities that this thing has survived with me over the years:
  • Running
  • cardio kick boxing
  • general house work
  • Wii Fit
  • Wii Punchout
  • Dance dance Revolution
  • and Gimnastica Natural
It has survived being stuffed into a suit case over and over. It has survived multiple washes. It even survived my wife accidentally putting it in the dryer. Only within the past 3 months did the inner lining finally tear, which has forced me to order another suit. Now, take into consideration, thats over the course of 2 years of heavy use.

I only have 2 real gripes about the real sauna suit. First is that it is expensive. Second is that they do not sell the pieces individually. Since I did need to get a new pair of pants, I wanted to order just the pants. This wasn't an option on their site. So, while I did order another gray suit, I ordered the new one that does not have the hoodie in addition to the Navy blue one.

Word of caution. I learned the hard way to not wear the suit if it is over 80 degrees. I pushed the envelope and was wearing the suit when the temperature got into the upper 80s and 90's, and started to suffer the effects of severe dehydration and heat stroke. If your not accustomed to the heat, don't push it. This thing gets hot, and I mean really hot. If you wear this while exercising, you will pour buckets of sweat. I do. You can easily lose 5-10 pounds of water weight with one session, so when you take it off, don't take it off on your carpet. Second word of caution, hydrate like crazy. And I mean, drink lots of water. You will need it.

Wednesday, August 19, 2009

BIRT: Restoring a Report Design from a Report Document

I often get asked to help with problems people have with their report designs. Of course, troubleshooting report designs can be a tricky endeavor. People use different data sources, and more often than not I don't have access to this. So, rather than ask people to send me a data extract, their report design, and any relevant icons or images, I typically just ask for the rptDocument, as generated by the report designer under the "Run/Generate Document" menu option.

From this format, it is possible to use as a data source using a special ODA I designed, extract the data using the BIRT Web Viewer to create a CSV in case the ODa gives me issues, and extract the original report design file. So, how do you extract the report design? This was a question asked on the BIRT Exchange, and this was the solutions I provided:

package birt.executor;

import java.io.IOException;

import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportDocument;
import org.eclipse.birt.report.engine.api.ReportEngine;

public class RestoreReportDesign {

/**
* @param args
*/
public static void main(String[] args) {
try {
String birtHome = "C:/Libraries/birt-runtime-2_3_2/ReportEngine";

EngineConfig engineConfig = new EngineConfig();
engineConfig.setBIRTHome(birtHome);

Platform.startup(engineConfig);

ReportEngine re = new ReportEngine(engineConfig);

IReportDocument doc = re.openReportDocument("C:/Contracts/MyReportDesign.rptdocument");

doc.getReportDesign().saveAs("C:/TEMP/extractedReportDesign.rptdesign");

doc.close();
Platform.shutdown();
} catch (EngineException e) {
e.printStackTrace();
} catch (BirtException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

Thursday, July 16, 2009

BIRT: Using Reflection to get Total Page Count

I could have sworn I had posted this previously. My mind must be slipping.

A common question that comes up in the newsgroups for BIRT is how to access the total page count during render time. You would think this is an easy question to answer, however it has proven more difficult than originally thought. There is an Auto-Text item already in BIRT that will display the total page count, but none of its properties are accessible publicly.

Fortunately, there is a workaround. To get access to the total page count, you need to get access to the Report Document Reader created after the Run Task has completed. This is stored in the application context, but in a private field. So how do we get access to the report document? By using Java Reflection. Below is an example of how to get access to the Report Document Reader stored in the app context. This needs to be put into the beforeFactory event, which means it is only available at Render Time.

var rciClass = reportContext.getClass();

var fieldFromScript = rciClass.getDeclaredField("context");
fieldFromScript.setAccessible(true);

var execContext = fieldFromScript.get(reportContext);

// Now, we have the exeuctionContext. We can get the currently rendering
// report documents location

var doc = execContext.getReportDocument();

if (doc != null) {
var pageCount = doc. getPageCount();

reportContext.setGlobalVariable("totalPageCount", pageCount);
}

So now you can use the totalPageCount variable anywhere in the Render phase. So keep in mind, you can’t add this to a report because the report element are created during run time, this is only used to affect Render operations. You could create a report item extension to display it, and to demonstrate that, I dropped a chart since charts are created at render time. The chart will display the text “Page Count” on the X Axis, and the bars will go up to the actual page count.

<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.17" id="1">
<property name="createdBy">Eclipse BIRT Designer Version 2.3.2.r232_20090202 Build &lt;2.3.2.v20090218-0730></property>
<property name="units">in</property>
<method name="beforeRender"><![CDATA[var rciClass = reportContext.getClass();

var fieldFromScript = rciClass.getDeclaredField("context");
fieldFromScript.setAccessible(true);

var execContext = fieldFromScript.get(reportContext);

// Now, we have the exeuctionContext. We can get the currently rendering
// report documents location

var doc = execContext.getReportDocument();

if (doc != null) {
var pageCount = doc.getPageCount();

reportContext.setGlobalVariable("totalPageCount", pageCount);
params["PageCount"].value = pageCount;
}
]]></method>
<property name="iconFile">/templates/blank_report.gif</property>
<property name="layoutPreference">auto layout</property>
<property name="bidiLayoutOrientation">ltr</property>
<parameters>
<scalar-parameter name="PageCount" id="80">
<property name="hidden">true</property>
<property name="valueType">static</property>
<property name="dataType">string</property>
<property name="paramType">simple</property>
<property name="isRequired">false</property>
<property name="controlType">text-box</property>
<property name="defaultValue">-1</property>
<property name="distinct">true</property>
<structure name="format">
<property name="category">Unformatted</property>
</structure>
</scalar-parameter>
</parameters>
<data-sources>
<oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="Data Source" id="7">
<property name="odaDriverClass">org.eclipse.birt.report.data.oda.sampledb.Driver</property>
<property name="odaURL">jdbc:classicmodels:sampledb</property>
<property name="odaUser">ClassicModels</property>
</oda-data-source>
</data-sources>
<data-sets>
<oda-data-set extensionID="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" name="Data Set" id="8">
<list-property name="columnHints">
<structure>
<property name="columnName">EMPLOYEENUMBER</property>
<property name="displayName">EMPLOYEENUMBER</property>
</structure>
<structure>
<property name="columnName">LASTNAME</property>
<property name="displayName">LASTNAME</property>
</structure>
<structure>
<property name="columnName">FIRSTNAME</property>
<property name="displayName">FIRSTNAME</property>
</structure>
<structure>
<property name="columnName">EXTENSION</property>
<property name="displayName">EXTENSION</property>
</structure>
<structure>
<property name="columnName">EMAIL</property>
<property name="displayName">EMAIL</property>
</structure>
<structure>
<property name="columnName">OFFICECODE</property>
<property name="displayName">OFFICECODE</property>
</structure>
<structure>
<property name="columnName">REPORTSTO</property>
<property name="displayName">REPORTSTO</property>
</structure>
<structure>
<property name="columnName">JOBTITLE</property>
<property name="displayName">JOBTITLE</property>
</structure>
</list-property>
<structure name="cachedMetaData">
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">EMPLOYEENUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">LASTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">FIRSTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">EXTENSION</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">EMAIL</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">OFFICECODE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">REPORTSTO</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">JOBTITLE</property>
<property name="dataType">string</property>
</structure>
</list-property>
</structure>
<property name="dataSource">Data Source</property>
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">EMPLOYEENUMBER</property>
<property name="nativeName">EMPLOYEENUMBER</property>
<property name="dataType">integer</property>
<property name="nativeDataType">4</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">LASTNAME</property>
<property name="nativeName">LASTNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">FIRSTNAME</property>
<property name="nativeName">FIRSTNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">EXTENSION</property>
<property name="nativeName">EXTENSION</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">EMAIL</property>
<property name="nativeName">EMAIL</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">OFFICECODE</property>
<property name="nativeName">OFFICECODE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">REPORTSTO</property>
<property name="nativeName">REPORTSTO</property>
<property name="dataType">integer</property>
<property name="nativeDataType">4</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">JOBTITLE</property>
<property name="nativeName">JOBTITLE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
</list-property>
<property name="queryText">select *
from CLASSICMODELS.EMPLOYEES</property>
<xml-property name="designerValues"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<model:DesignValues xmlns:design="http://www.eclipse.org/datatools/connectivity/oda/design" xmlns:model="http://www.eclipse.org/birt/report/model/adapter/odaModel">
<Version>1.0</Version>
<design:ResultSets derivedMetaData="true">
<design:resultSetDefinitions>
<design:resultSetColumns>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>EMPLOYEENUMBER</design:name>
<design:position>1</design:position>
<design:nativeDataTypeCode>4</design:nativeDataTypeCode>
<design:precision>10</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>EMPLOYEENUMBER</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>EMPLOYEENUMBER</design:label>
<design:formattingHints>
<design:displaySize>11</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>LASTNAME</design:name>
<design:position>2</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>LASTNAME</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>LASTNAME</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>FIRSTNAME</design:name>
<design:position>3</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>FIRSTNAME</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>FIRSTNAME</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>EXTENSION</design:name>
<design:position>4</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>10</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>EXTENSION</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>EXTENSION</design:label>
<design:formattingHints>
<design:displaySize>10</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>EMAIL</design:name>
<design:position>5</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>100</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>EMAIL</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>EMAIL</design:label>
<design:formattingHints>
<design:displaySize>100</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>OFFICECODE</design:name>
<design:position>6</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>10</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>OFFICECODE</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>OFFICECODE</design:label>
<design:formattingHints>
<design:displaySize>10</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>REPORTSTO</design:name>
<design:position>7</design:position>
<design:nativeDataTypeCode>4</design:nativeDataTypeCode>
<design:precision>10</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>REPORTSTO</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>REPORTSTO</design:label>
<design:formattingHints>
<design:displaySize>11</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>JOBTITLE</design:name>
<design:position>8</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>JOBTITLE</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>JOBTITLE</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
</design:resultSetColumns>
</design:resultSetDefinitions>
</design:ResultSets>
</model:DesignValues>]]></xml-property>
</oda-data-set>
</data-sets>
<styles>
<style name="report" id="4">
<property name="fontFamily">"Verdana"</property>
<property name="fontSize">10pt</property>
</style>
<style name="crosstab-cell" id="5">
<property name="borderBottomColor">#CCCCCC</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1pt</property>
<property name="borderLeftColor">#CCCCCC</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1pt</property>
<property name="borderRightColor">#CCCCCC</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1pt</property>
<property name="borderTopColor">#CCCCCC</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1pt</property>
</style>
<style name="crosstab" id="6">
<property name="borderBottomColor">#CCCCCC</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1pt</property>
<property name="borderLeftColor">#CCCCCC</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1pt</property>
<property name="borderRightColor">#CCCCCC</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1pt</property>
<property name="borderTopColor">#CCCCCC</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1pt</property>
</style>
</styles>
<page-setup>
<simple-master-page name="Simple MasterPage" id="2">
<property name="topMargin">0.25in</property>
<property name="leftMargin">0.25in</property>
<property name="bottomMargin">0.25in</property>
<property name="rightMargin">0.25in</property>
<page-footer>
<text id="78">
<property name="contentType">html</property>
<text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
</text>
</page-footer>
</simple-master-page>
</page-setup>
<body>
<table id="9">
<property name="width">100%</property>
<property name="dataSet">Data Set</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">EMPLOYEENUMBER</property>
<property name="displayName">EMPLOYEENUMBER</property>
<expression name="expression">dataSetRow["EMPLOYEENUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">LASTNAME</property>
<property name="displayName">LASTNAME</property>
<expression name="expression">dataSetRow["LASTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">FIRSTNAME</property>
<property name="displayName">FIRSTNAME</property>
<expression name="expression">dataSetRow["FIRSTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">EXTENSION</property>
<property name="displayName">EXTENSION</property>
<expression name="expression">dataSetRow["EXTENSION"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">EMAIL</property>
<property name="displayName">EMAIL</property>
<expression name="expression">dataSetRow["EMAIL"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">OFFICECODE</property>
<property name="displayName">OFFICECODE</property>
<expression name="expression">dataSetRow["OFFICECODE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">REPORTSTO</property>
<property name="displayName">REPORTSTO</property>
<expression name="expression">dataSetRow["REPORTSTO"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">JOBTITLE</property>
<property name="displayName">JOBTITLE</property>
<expression name="expression">dataSetRow["JOBTITLE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">Column Binding</property>
<expression name="expression">"Total Pages: "</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">Column Binding_1</property>
<expression name="expression">reportContext.getGlobalVariable("totalPageCount")</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">Column Binding_2</property>
<expression name="expression">params["PageCount"].value</expression>
<property name="dataType">string</property>
</structure>
</list-property>
<property name="pageBreakInterval">4</property>
<column id="53"/>
<column id="54"/>
<column id="55"/>
<column id="56"/>
<column id="57"/>
<column id="58"/>
<column id="59"/>
<column id="60"/>
<header>
<row id="10">
<property name="fontWeight">bold</property>
<property name="textAlign">left</property>
<cell id="11">
<label id="12">
<text-property name="text">EMPLOYEENUMBER</text-property>
</label>
</cell>
<cell id="13">
<label id="14">
<text-property name="text">LASTNAME</text-property>
</label>
</cell>
<cell id="15">
<label id="16">
<text-property name="text">FIRSTNAME</text-property>
</label>
</cell>
<cell id="17">
<label id="18">
<text-property name="text">EXTENSION</text-property>
</label>
</cell>
<cell id="19">
<label id="20">
<text-property name="text">EMAIL</text-property>
</label>
</cell>
<cell id="21">
<label id="22">
<text-property name="text">OFFICECODE</text-property>
</label>
</cell>
<cell id="23">
<label id="24">
<text-property name="text">REPORTSTO</text-property>
</label>
</cell>
<cell id="25">
<label id="26">
<text-property name="text">JOBTITLE</text-property>
</label>
</cell>
</row>
</header>
<detail>
<row id="27">
<cell id="28">
<data id="29">
<property name="resultSetColumn">EMPLOYEENUMBER</property>
</data>
</cell>
<cell id="30">
<data id="31">
<property name="resultSetColumn">LASTNAME</property>
</data>
</cell>
<cell id="32">
<data id="33">
<property name="resultSetColumn">FIRSTNAME</property>
</data>
</cell>
<cell id="34">
<data id="35">
<property name="resultSetColumn">EXTENSION</property>
</data>
</cell>
<cell id="36">
<data id="37">
<property name="resultSetColumn">EMAIL</property>
</data>
</cell>
<cell id="38">
<data id="39">
<property name="resultSetColumn">OFFICECODE</property>
</data>
</cell>
<cell id="40">
<data id="41">
<property name="resultSetColumn">REPORTSTO</property>
</data>
</cell>
<cell id="42">
<data id="43">
<property name="resultSetColumn">JOBTITLE</property>
</data>
</cell>
</row>
</detail>
<footer>
<row id="44">
<cell id="45">
<property name="colSpan">8</property>
<property name="rowSpan">1</property>
<extended-item extensionName="Chart" name="NewChart" id="81">
<xml-property name="xmlRepresentation"><![CDATA[<model:ChartWithAxes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:attribute="http://www.birt.eclipse.org/ChartModelAttribute" xmlns:data="http://www.birt.eclipse.org/ChartModelData" xmlns:layout="http://www.birt.eclipse.org/ChartModelLayout" xmlns:model="http://www.birt.eclipse.org/ChartModel" xmlns:type="http://www.birt.eclipse.org/ChartModelType">
<Type>Bar Chart</Type>
<SubType>Side-by-side</SubType>
<Block>
<Children xsi:type="layout:TitleBlock">
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>0.0</Width>
<Height>0.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Visible>true</Visible>
<Label>
<Caption>
<Value>Bar Chart Title</Value>
<Font>
<Size>16.0</Size>
<Bold>true</Bold>
<Alignment>
<horizontalAlignment>Center</horizontalAlignment>
<verticalAlignment>Center</verticalAlignment>
</Alignment>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
</Children>
<Children xsi:type="layout:Plot">
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>0.0</Width>
<Height>0.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Visible>true</Visible>
<HorizontalSpacing>5</HorizontalSpacing>
<VerticalSpacing>5</VerticalSpacing>
<ClientArea>
<Outline>
<Style>Solid</Style>
<Thickness>0</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>0.0</Left>
<Bottom>0.0</Bottom>
<Right>0.0</Right>
</Insets>
</ClientArea>
</Children>
<Children xsi:type="layout:Legend">
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>0.0</Width>
<Height>0.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Visible>true</Visible>
<ClientArea>
<Outline>
<Style>Solid</Style>
<Thickness>0</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>2.0</Top>
<Left>2.0</Left>
<Bottom>2.0</Bottom>
<Right>2.0</Right>
</Insets>
</ClientArea>
<Text>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Text>
<Orientation>Vertical</Orientation>
<Direction>Top_Bottom</Direction>
<Separator>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>true</Visible>
</Separator>
<Position>Right</Position>
<ItemType>Series</ItemType>
<Title>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Title>
<TitlePosition>Above</TitlePosition>
</Children>
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>570.75</Width>
<Height>150.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Visible>true</Visible>
</Block>
<Dimension>Two_Dimensional</Dimension>
<Units>Points</Units>
<SeriesThickness>10.0</SeriesThickness>
<SampleData>
<BaseSampleData>
<DataSetRepresentation>A, B, C</DataSetRepresentation>
</BaseSampleData>
<OrthogonalSampleData>
<DataSetRepresentation>5,4,12</DataSetRepresentation>
<SeriesDefinitionIndex>0</SeriesDefinitionIndex>
</OrthogonalSampleData>
</SampleData>
<Interactivity/>
<Axes>
<Type>Text</Type>
<Title>
<Caption>
<Value>X-Axis Title</Value>
<Font>
<Size>14.0</Size>
<Bold>true</Bold>
<Alignment>
<horizontalAlignment>Center</horizontalAlignment>
<verticalAlignment>Center</verticalAlignment>
</Alignment>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Title>
<TitlePosition>Below</TitlePosition>
<AssociatedAxes>
<Type>Linear</Type>
<Title>
<Caption>
<Value>Y-Axis Title</Value>
<Font>
<Size>14.0</Size>
<Bold>true</Bold>
<Alignment>
<horizontalAlignment>Center</horizontalAlignment>
<verticalAlignment>Center</verticalAlignment>
</Alignment>
<Rotation>90.0</Rotation>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Title>
<TitlePosition>Left</TitlePosition>
<SeriesDefinitions>
<Query>
<Definition></Definition>
</Query>
<SeriesPalette>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>80</Red>
<Green>166</Green>
<Blue>218</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>242</Red>
<Green>88</Green>
<Blue>106</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>232</Red>
<Green>172</Green>
<Blue>57</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>255</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>64</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>170</Red>
<Green>85</Green>
<Blue>85</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>0</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>192</Red>
<Green>192</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>192</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>7</Red>
<Green>146</Green>
<Blue>94</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>128</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>255</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>0</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>64</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>80</Red>
<Green>240</Green>
<Blue>120</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>64</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>0</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>0</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>64</Green>
<Blue>0</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>0</Blue>
</Entries>
</SeriesPalette>
<Series xsi:type="type:BarSeries">
<Visible>true</Visible>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Label>
<DataDefinition>
<Definition>reportContext.getGlobalVariable(&quot;totalPageCount&quot;)</Definition>
</DataDefinition>
<SeriesIdentifier>Series 1</SeriesIdentifier>
<DataPoint>
<Components>
<Type>Orthogonal_Value</Type>
</Components>
<Separator>, </Separator>
</DataPoint>
<LabelPosition>Outside</LabelPosition>
<Stacked>false</Stacked>
<Riser>Rectangle</Riser>
</Series>
<Grouping>
<Enabled>false</Enabled>
<GroupingInterval>1.0</GroupingInterval>
<GroupType>Text</GroupType>
<AggregateExpression>Sum</AggregateExpression>
</Grouping>
</SeriesDefinitions>
<Orientation>Vertical</Orientation>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Visible>true</Visible>
</LineAttributes>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
<LabelPosition>Left</LabelPosition>
<MajorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>true</Visible>
</TickAttributes>
</MajorGrid>
<MinorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</TickAttributes>
</MinorGrid>
<Scale>
<MinorGridsPerUnit>5</MinorGridsPerUnit>
</Scale>
<Origin>
<Type>Min</Type>
<Value xsi:type="data:NumberDataElement">
<Value>0.0</Value>
</Value>
</Origin>
<PrimaryAxis>true</PrimaryAxis>
<Percent>false</Percent>
</AssociatedAxes>
<SeriesDefinitions>
<Query>
<Definition></Definition>
</Query>
<SeriesPalette>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>80</Red>
<Green>166</Green>
<Blue>218</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>242</Red>
<Green>88</Green>
<Blue>106</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>232</Red>
<Green>172</Green>
<Blue>57</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>255</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>64</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>170</Red>
<Green>85</Green>
<Blue>85</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>0</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>192</Red>
<Green>192</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>192</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>7</Red>
<Green>146</Green>
<Blue>94</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>128</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>255</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>0</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>64</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>80</Red>
<Green>240</Green>
<Blue>120</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>64</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>0</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>0</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>64</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>64</Green>
<Blue>0</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>128</Green>
<Blue>0</Blue>
</Entries>
</SeriesPalette>
<Series>
<Visible>true</Visible>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Label>
<DataDefinition>
<Definition>&quot;Page Count&quot;</Definition>
</DataDefinition>
<SeriesIdentifier></SeriesIdentifier>
<DataPoint>
<Components>
<Type>Orthogonal_Value</Type>
</Components>
<Separator>, </Separator>
</DataPoint>
<LabelPosition>Outside</LabelPosition>
<Stacked>false</Stacked>
</Series>
<Grouping>
<Enabled>false</Enabled>
<GroupingInterval>0.0</GroupingInterval>
<GroupType>Text</GroupType>
<AggregateExpression>Sum</AggregateExpression>
</Grouping>
<SortKey/>
</SeriesDefinitions>
<Orientation>Horizontal</Orientation>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Visible>true</Visible>
</LineAttributes>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
<LabelPosition>Below</LabelPosition>
<MajorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>true</Visible>
</TickAttributes>
</MajorGrid>
<MinorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</TickAttributes>
</MinorGrid>
<Scale>
<MinorGridsPerUnit>5</MinorGridsPerUnit>
</Scale>
<Origin>
<Type>Min</Type>
<Value xsi:type="data:NumberDataElement">
<Value>0.0</Value>
</Value>
</Origin>
<PrimaryAxis>true</PrimaryAxis>
<CategoryAxis>true</CategoryAxis>
<Percent>false</Percent>
</Axes>
<Orientation>Vertical</Orientation>
<UnitSpacing>50.0</UnitSpacing>
<Rotation/>
</model:ChartWithAxes>
]]></xml-property>
<property name="outputFormat">PNG</property>
<property name="height">2.0833333333333335in</property>
<property name="width">7.927083333333333in</property>
</extended-item>
</cell>
</row>
</footer>
</table>
</body>
</report>