From: Subject: New To The List: Whoa, Savio! - Hawaii Business - August 2003 - Hawaii Date: Fri, 11 Apr 2008 15:47:23 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C89BEB.55E303E0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/Hawaii-Business/August-2003/New-To-The-List-Whoa-Savio/ =EF=BB=BF New To The List: Whoa, Savio! - Hawaii Business - = August 2003 - Hawaii

Hawaii Stocks

SYM PRICE CHANGE VOLUME
=
Adverti= se  |  = Subscribe  |  About=20 Us  |  Contact= =20 Us  |  My=20 Account  |  Log = In=20
=20
Hawaii=20 Business / Augus= t=20 2003 /  New To The List: Whoa, Savio!

New To The List: Whoa, Savio!

Hawaiian Island Homes' debut is marked by acrimony

By Kelli Abe Trifonovitch

Any interview that focuses on Peter Savio's new company, Hawaiian = Island=20 Homes Ltd., will soon focus on another Top 250 company, Central Pacific = Bank.=20 Says Savio: "They're malicious. They're vicious. I am going to become a=20 stockholder in Central Pacific Bank. I am going to reform that = institution.=20 Their mistake was they stomped me. They didn't kill me. I'm coming back. = I'm=20 going to have fun with them."

STILL = STANDING: Hawaiian Island Homes' Peter Savio is back in = the Top=20 250 with a new company in the same building where his old = company=20 used to be.=20 Photo: Ronen=20 Zilberman

Go back to the year 2001. Savio Inc., a holding company for eight = real estate=20 sales and development companies, was No. 56 on the Top 250, with $134.6 = million=20 in 2000 gross sales. But in 2001, Savio Inc. filed for Chapter 7 = liquidation,=20 and Peter Savio and his wife filed for personal bankruptcy protection. = Savio=20 says he was forced into the bankruptcies because CPB gave him just five = days to=20 move from his second-floor offices at 931 University Ave. Savio says he = had been=20 in a workout plan with a number of lenders after he started experiencing = cash-flow problems in the mid-1990s. But CPB forced his hand.

"The only way to stop them was, I had to file for personal = bankruptcy. So to=20 save my employees and everything else, I filed for personal bankruptcy - = one of=20 the most difficult decisions I've ever had to make. But I was really = pissed at=20 Central Pacific Bank for doing that," he says.

"It was tough," he adds. "Basically I lost everything. Lost my house. = Lost=20 everything. Had to basically come back from nothing."

Today, Savio is more than back. His real estate company, Hawaiian = Island=20 Homes Ltd., lists 2002 gross sales of $177 million. Its office is = downstairs in=20 the same building that Savio Inc.'s once was. And the company is No. 27, = ahead=20 of CPB Inc. (No. 49), something Savio will rejoice to read. Savio says, = "I've=20 decided that my goal is to beat them in the Top 250. =E2=80=A6 just so = we can say,=20 'Nannynannybooboo!'"

That's not all. "My short-term and my long-term goal is to reform = Central=20 Pacific Bank," Savio says. "I think I'm going to buy the bank."

Ann Takiguchi, Central Pacific Financial's communications officer, = says, "We=20 made every effort to work with Mr. Savio, and it is unfortunate that he = is=20 blaming us for his situation. Out of respect for our customers' privacy, = we have=20 no further comment. As a matter of bank policy, we don't comment on the = affairs=20 of our customers."

Bankruptcy court filings show that Central Pacific Bank claimed that = Savio=20 Inc. owed it about $1.5 million when Savio filed for bankruptcy in 2001. = The=20 Internal Revenue Service and Pitney Bowes Credit Corp. also listed = claims of=20 about $2,000 each.

The court-appointed trustee for Savio Inc.'s bankruptcy case, = attorney Jim=20 Nicholson, says the only unencumbered asset of the estate, a unit in the = Diamond=20 Head Beach apartment building, was sold for $375,000 in June 2003.

Gross sales for Savio's other new company, Hawaiian Island = Development, were=20 not reported for this year's Top 250, so one thing is for sure: Next = year, he'll=20 be back. Says Savio: "We're going to set up a new holding company = called, 'I=20 Hate CPB.' No, my attorney said I couldn't do that. I have a warped = sense of=20 humor, OK? But anyway, the new holding company is going to be Ohia=20 Holdings."

Knowing Savio, there is marked symbolism in that choice. After all, = the Ohia=20 tree can be found growing in the middle of old lava flows.

Do you like what you read? = Subscribe=20 to Hawaii Business Magazine =C2=BB

Reader Comments: 
Log In Create an=20 account
Add your comment:
Create an instant account, or = please log in=20 if you have an account.
Email address (not displayed publicly)   Password
 
Create an instant account, or please log in = if you=20 have an account.
Email address (not displayed publicly) Screen name

 
Enter your comments below:
Verification Question:
What is 4 + 9 ? =     This = is so we know=20 you are a human and not a spam robot.
=20
= =
ADVERTISEMENT
Don't Miss an Issue!
3D"Hawaii=20

Sign up for our Email Newsletter

=20

For Email = Marketing=20 you can trust

Home | = Hawai= i=20 Data | Industry= | Topics= | Events= | Regions | HBTV | = Polls = | Resourc= es=20
About=20 Us | Advertis= e |=20 = Store=20 | Contact= =20 | Arch= ive |=20 Log = In |=20 My=20 Account

Copyright 2008 Hawaii Business Magazine

| A Godengo = Technology | Privacy=20 Policy

------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/images/blank.gif R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/images/logo.gif R0lGODlhmwFIAPf5AJwlKJofIvnx8aQ1ON+5urlkZuzW1sJ4ev37+/36+vXq6rVcXv79/d62t7hi ZKM0N+K+v9OdntalpqlBQ9SfocR8fffu7qtER+XFxrdgYrNXWaU5O9WhouC6u7FSVJgcH9uvsKAu MaMyNf78/Nqur/Hg4PDe3vTo6JkeIdKbnPbq658qLbhhY5kdIMB0dq9NT/z5+fv29rtpa6pDRqc8 P/jv7+zV1qpCRdGZmq1JS/jw8JsiJfv19cR9f6c7Pp8rLp4oKvXp6bZeYLxrbaY6PaAsL5wjJvrz 9KEvMaMzNvHh4ffs7MqJi6lAQtGYmvny8qQ2OPv39+rR0vz4+Kc9QJshJJwkJ8aBg5ogI6lBRKAt MPbr7MaAgvft7ezU1aIwM+7a2/Li48qKi9akpdKcnbljZfr09LdfYevS0+rQ0L5wcrJVV6g+QK5M T+7Z2bpnaejMzfLh4uG9vrVbXurR0aU4OuG8va9PUatGSJ0nKbVaXe7Z2t21tvTm5ufJyr1tb6xI SqIxNNmrrJ0mKduwsatFR/Pl5eK/v8J5e+jNzt20tfLj5MiGiMV+gNGam9msrbBRU69OUOfKy7NY Wtemp7JUVsmHieTDxOPBwu/b3Nmqq9CXmaEwMuPAwd+3uLhjZejLzL5vcb9xc8V/gceDhL9ydObH x/ny88+Vl9Wio7BQUu3X154pLNWjpLRaXLZdX7FTVsuMjebIydqtrsF2eMR8fu3Y2KU3OcJ3eag/ QeLAwK1JTNCWmNenqZ4oK9ioqcN7fPDf382RkrFSVeTExeXGx8+Vltyxst63uKY5PM2PkbtoaseE hfPk5d2ztNOeoNyys8N6fK5LTsmIis6Sk8qLjN+4uebIyMiFhunOzuC7vO/c3enPz7pmaLRZW8+U ldSgofDd3bxqbKxHSbNWWOTCw8iFh8aCg61KTcF1d9ipqr5ucPTn59Oen8BzdLplZ8B0dc6TlMyO kMuNjuvT1L1sbs2QktemqJgbHv///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAPkALAAAAACbAUgA AAj/AJEAGEiw4K98CBMqzFemoEMAQxZKnEixosWLGDNq3MixY6OHIEFC8VbtUMeTKFOqXMmypUuU RvDJnElzzMU5NHPiK/Oyp8+fQBPi0km06MwbvRAEXcq0qdOnCgEYxSfh4oKpBaBq3frzwNSvOT2U 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 ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/pagetools-email.gif R0lGODlhEQAPAJECAJmZmZiYmAAAAAAAACH5BAEAAAIALAAAAAARAA8AAAIrhI95wu1vnnRRqMQq mDlv+0GfZkEl2J3nODZbyKby2nIxeAGBx01VT8kJCwA7 ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/pagetools-print.gif R0lGODlhDgAOAJECAJmZmY/hPQAAAAAAACH5BAEAAAIALAAAAAAOAA4AAAIilICpZsB/nlMoMgeb PNTq7EXUtIEYNy4n2KxsFbCtfKVpAQA7 ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/pagetools-delicious.gif R0lGODlhDgAOAIABAJmZmQAAACH5BAEAAAEALAAAAAAOAA4AAAIfhI8Zy73mgoJugmgxkrduqHjc oY1UA25iiHZRm8RGAQA7 ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/pagetools-digg.gif R0lGODlhEgAOAIABAJmZmQAAACH5BAEAAAEALAAAAAASAA4AAAIsjH+girYIUotOVpueWwzeQIHh xYUd1mzTuZUcOKUjRcsejLddnec8r6O5DgUAOw== ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/pagetools-yahoo.gif R0lGODlhDwAOAIABAJmZmQAAACH5BAEAAAEALAAAAAAPAA4AAAIhjA2Zxwfe2kORzXDrzU71ZWli +HmIYkIcSFpchb0aStcFADs= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/pagetools-comments.gif R0lGODlhDgAOAIABAJmZmQAAACH5BAEAAAEALAAAAAAOAA4AQAIhDI55Fu3fFpxgsuqwzXpf9Szd JilIhJ0Jiq7paMHMTI4FADs= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/media/images/feed-icon-14x14.png iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJDSURBVHjajJJNSBRhGMd/887MzrQxRSLb FuYhoUhEKsMo8paHUKFLdBDrUIdunvq4RdClOq8Hb0FBSAVCUhFR1CGD/MrIJYqs1kLUXd382N35 6plZFOrUO/MMz/vO83+e93n+f+1zF+kQBoOQNLBJg0CTj7z/rvWjGbEOIwKp9O7WkhtQc/wMWrlI kP8Kc1lMS8eyFHpkpo5SgWCCVO7Z5JARhuz1Qg29fh87u6/9VWL1/SPc4Qy6n8c0FehiXin6dcCQ aylDMhqGz8ydS2hKkmxNkWxowWnuBLHK6G2C8X6UJkBlxUmNqLYyNbzF74QLDrgFgh9LLE0NsPKx jW1Hz2EdPIubsOFdH2HgbwAlC4S19dT13o+3pS+vcSfvUcq9YnbwA6muW9hNpym/FWBxfh0CZkKG kPBZeJFhcWQAu6EN52QGZ/8prEKW+cdXq0039UiLXhUYzdjebOJQQI30UXp6mZn+Dtam32Afu0iy rgUvN0r+ZQbr8HncSpUVJfwRhBWC0hyGV8CxXBL5SWYf9sYBidYLIG2V87/ifVjTWAX6AlxeK2C0 X8e58hOr/Qa2XJ3iLMWxB1h72tHs7bgryzHAN2o2gJorTrLxRHVazd0o4TXiyV2Yjs90uzauGvvp pmqcLjwmbZ3V7BO2HOrBnbgrQRqWUgTZ5+Snx4WeKfzCCrmb3axODKNH+vvUyWjqyK4DiKQ0eXSp FsgVvLJQWpH+xSpr4otg/HI0TR/t97cxTUS+QxIMRTLi/9ZYJPI/AgwAoc3W7ZrqR2IAAAAASUVO RK5CYII= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/images/hb/hb82003/82003savio.jpg /9j/4AAQSkZJRgABAgEBLAEsAAD/4RotRXhpZgAATU0AKgAAAAgADAEOAAIAAAAgAAAAngEPAAIA AAASAAAAvgEQAAIAAAAKAAAA0AESAAMAAAABAAEAAAEaAAUAAAABAAAA2gEbAAUAAAABAAAA4gEo AAMAAAABAAIAAAExAAIAAAAUAAAA6gEyAAIAAAAUAAAA/gITAAMAAAABAAIAAIdpAAQAAAABAAAB FIglAAQAAAABAAACzAAAAuAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAE5JS09OIENP UlBPUkFUSU9OAE5JS09OIEQxWAAAAAEsAAAAAQAAASwAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAy MDAzOjA3OjI1IDEyOjEzOjE4AAAAABiCmgAFAAAAAQAAAjqCnQAFAAAAAQAAAkKIIgADAAAAAQAE AACQAAAHAAAABDAyMTCQAwACAAAAFAAAAkqQBAACAAAAFAAAAl6RAQAHAAAABAECAwCRAgAFAAAA AQAAAnKSBAAKAAAAAQAAAnqSBQAFAAAAAQAAAoKSBwADAAAAAQAFAACSCgAFAAAAAQAAAoqShgAH AAAAMAAAApKSkAACAAAAAzE3AACSkQACAAAAAzE3AACSkgACAAAAAzE3AACgAAAHAAAABDAxMDCg AQADAAAAAf//AACgAgAEAAAAAQAAASygAwAEAAAAAQAAAOmiFwADAAAAAQACAACjAAAHAAAAAQMA AACjAQAHAAAAAQEAAACjAgAHAAAACAAAAsIAAAAAAAAACgAABOIAAABuAAAACjIwMDM6MDY6MjQg MDQ6MDc6MDQAMjAwMzowNjoyNCAwNDowNzowNAAAAAAEAAAAAQAAAAAAAAAGAAAAHgAAAAoAAADI AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIC AQEAAAAAAQAAAAEAAAAEAgAAAAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAMuARsABQAA AAEAAAM2ASgAAwAAAAEAAgAAAgEABAAAAAEAAAM+AgIABAAAAAEAABbnAAAAAAAAAEgAAAABAAAA SAAAAAH/2P/gABBKRklGAAECAQBIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/b AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAYwCAAwEiAAIRAQMRAf/dAAQACP/EAT8AAAEFAQEBAQEB AAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQC BQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKy gyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3 h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLh coKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1 VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8Azb7Bm3tyQwvbaTViNDtrzUS39NS0 /wAy/Ist9T1rP8G/B/0FyvZfp03h9uy97afTbS0Qxhn27P8ARVVM+h/2ss/0lKo9FfkPuqyMgB+J RaTZLQbHOh25rXMjdcz1f6lXq5H/AAa3xidLybS3Hva+dW1u9jj/ACdrwx6sSnptu04YtRZ+XTRz MZ2XkBwoxcYtH0v0FUT8bPpu/eVkU9X0imhscRVTp8PaiZvU6umOFTK997dAwgtY3+s6Pd/UqVb/ AJ0ZXbGonsJf/wCSTLLNwx6hN6HW+QWA+QqHP9hV8z9p1s25ZL6nadton/hKdj6n/uv3Kf8Azny+ 1FH3P/8AJouN1+q12zLr9JzjAfXLmmf3q/dZ/m+olcu6uGHYNXFtqFm6p7KbHRHqM9Q7gGt3Nt3s 3fR/wiuW5WFXa6y8l97C1j7LSS5okWN9Opnp011fv+nR/wAYo3dIbdYbaqb3Vvk7WtFTfjvyA12z +pVYq92Vg4Ac1xr+0AAenSPVs/k778n9Gz/ttOA619SxTIuuM/3Y+qSZuTbfa6/God6j2ljnNkVh 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 i0kWS4iSw+3/AKLl0eAKreh5GK2JtwHkjuX1fp2k/wBti5ad+Nt7h4cP7QgqER4RW/VdPKckuL5f 0X//1eR6nu/aFs7924T622Zj+T+j9L/Q7f8ABolu/wBNm/dG/Sdm36J+j6Xu/wA9coknS67scfo+ q/4vv6a/4WfDhq6Ab/Xs9T7ZG8xO3b9L/Cej+cvCklaw/INvl6+ctmHJ83Xf9nV93yPs+5u/7ROx v0vXiI7+l7fU/f8A8IqX1t2/80b9n0dtsTu/dv8A9N7/APOXiqSUvlO+x8vlVHf6j83QM+36XlxH 9n+Wj3TGvp/RZ9Hjj86P8L/pFkJKkPnj5s52dARPf8Uz+e/yVBJWDspud/70Tss9JCKi3yn7LPST kPoHRf8AkWifscei/wCj/Sf8L/SNv+D/ANJ/wS5Gv7L6evpcD/uRHPks1JNl02+qB13+j//Z/+0d clBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAArHAIAAAIAAhwCeAAfICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAA4QklNBCUAAAAAABD7Caa9B0wqNp2P4sxXqayFOEJJTQPpAAAAAAB4AAMA AABIAEgAAAAAAt4CQP/u/+4DBgJSA2cFKAP8AAIAAABIAEgAAAAAAtgCKAABAAAAZAAAAAEAAwMD AAAAAX//AAEAAQAAAAAAAAAAAAAAAGAIABkBkAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAOEJJTQPtAAAAAAAQASwAAAABAAEBLAAAAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAA OEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJ TQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAG AAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAA AAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA//////////////// /////////////wPoAAAAAP////////////////////////////8D6AAAAAD///////////////// ////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAA OEJJTQQaAAAAAANNAAAABgAAAAAAAAAAAAAA6QAAASwAAAAMAFAAZQB0AGUAcgAgAFMAYQB2AGkA bwAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEsAAAA6QAAAAAAAAAAAAAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAA AAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21s b25nAAAA6QAAAABSZ2h0bG9uZwAAASwAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNs aWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVu dW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNl VHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcA AAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAOkAAAAAUmdodGxvbmcAAAEsAAAAA3Vy bFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFn VEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAA AAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGln bmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAA EUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91 dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAA 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 4Ak6u15KZ9j3GXR5AKfStli3ps5LRulPAA0j5JmvDAWnkmSmLtOyQpSomQrfS+pu6dmMyYL6j7Mi scurP02t/lt+lWqRJBn5JnDmPj96EtQQmJIIINEPWdYzb/sN+XgvcGsY39PW5zP0dzm1bXhpb6lb 9/8AMvXLCRjtIc6LSRZLiJLD7f8AouXR4Aqt6HkYrYm3AeSO5fV+naT/AG2Llp3423uHhw/tCCoR HhFb9V08pyS4vl/Rf//V5Hqe79oWzv3bhPrbZmP5P6P0v9Dt/wAGiW7/AE2b90b9J2bfon6Ppe7/ AD1yiSdLruxx+j6r/i+/pr/hZ8OGroBv9ez1PtkbzE7dv0v8J6P5y8KSVrD8g2+Xr5y2Ycnzdd/2 dX3fI+z7m7/tE7G/S9eIjv6Xt9T9/wDwipfW3b/zRv2fR22xO792/wD03v8A85eKpJS+U77Hy+VU d/qPzdAz7fpeXEf2f5aPdMa+n9Fn0eOPzo/wv+kWQkqQ+ePmznZ0BE9/xTP57/JUElYOym53/vRO yz0kIqLfKfss9JOQ+gdF/wCRaJ+xx6L/AKP9J/wv9I2/4P8A0n/BLka/svp6+lwP+5Ec+SzUk2XT b6oHXf6P/9kAOEJJTQQhAAAAAABVAAAAAQEAAAAPAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgA bwBwAAAAEwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAgADcALgAwAAAAAQA4QklNBAYA AAAAAAcABAABAAEBAP/hFWdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBi ZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjw/YWRvYmUteGFwLWZp bHRlcnMgZXNjPSJDUiI/Pgo8eDp4YXBtZXRhIHhtbG5zOng9J2Fkb2JlOm5zOm1ldGEvJyB4Onhh cHRrPSdYTVAgdG9vbGtpdCAyLjguMi0zMywgZnJhbWV3b3JrIDEuNSc+CjxyZGY6UkRGIHhtbG5z OnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIycgeG1sbnM6 aVg9J2h0dHA6Ly9ucy5hZG9iZS5jb20vaVgvMS4wLyc+CgogPHJkZjpEZXNjcmlwdGlvbiBhYm91 dD0ndXVpZDo3ZTlkNDRlZS1iZWViLTExZDctYmNiYS1iZDE1OTJmYzdiN2EnCiAgeG1sbnM6cGRm PSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8IS0tIHBkZjpTdWJqZWN0IGlzIGFs aWFzZWQgLS0+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIGFib3V0PSd1 dWlkOjdlOWQ0NGVlLWJlZWItMTFkNy1iY2JhLWJkMTU5MmZjN2I3YScKICB4bWxuczpwaG90b3No b3A9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8nPgogIDwhLS0gcGhvdG9zaG9w OkNhcHRpb24gaXMgYWxpYXNlZCAtLT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3Jp cHRpb24gYWJvdXQ9J3V1aWQ6N2U5ZDQ0ZWUtYmVlYi0xMWQ3LWJjYmEtYmQxNTkyZmM3YjdhJwog IHhtbG5zOnhhcD0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyc+CiAgPCEtLSB4YXA6RGVz Y3JpcHRpb24gaXMgYWxpYXNlZCAtLT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3Jp cHRpb24gYWJvdXQ9J3V1aWQ6N2U5ZDQ0ZWUtYmVlYi0xMWQ3LWJjYmEtYmQxNTkyZmM3YjdhJwog IHhtbG5zOnhhcE1NPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vJz4KICA8eGFwTU06 RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6N2U5ZDQ0ZWMtYmVlYi0xMWQ3LWJjYmEt YmQxNTkyZmM3YjdhPC94YXBNTTpEb2N1bWVudElEPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJk ZjpEZXNjcmlwdGlvbiBhYm91dD0ndXVpZDo3ZTlkNDRlZS1iZWViLTExZDctYmNiYS1iZDE1OTJm YzdiN2EnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8 ZGM6ZGVzY3JpcHRpb24+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZh dWx0Jz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgIDwvcmRmOkFs dD4KICA8L2RjOmRlc2NyaXB0aW9uPgogPC9yZGY6RGVzY3JpcHRpb24+Cgo8L3JkZjpSREY+Cjwv eDp4YXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKPD94cGFja2V0IGVuZD0ndyc/Pv/uAA5BZG9iZQBkAAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUG CQsIBgYICwwKCgsKCgwQDAwMDAwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBwcHDQwN GBAQGBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DP/AABEIAOkBLAMBEQACEQEDEQH/3QAEACb/xADIAAACAgMBAQAAAAAAAAAAAAAEBQMGAQIHAAgB AAIDAQEAAAAAAAAAAAAAAAECAAMEBQYQAAIBAgQEAgUIBgUJBgUFAAECAxEEACESBTEiEwZBMlFh QhQHcYGRsVJiIxWhwdFygpKiwjMkFvDhskNTcyUmF9I0ZHQ1CGOTs3U28eLyREURAAIBAwEFBQMK BQIDCQEAAAECABESAyExIjITBEFRQlJiYXIF8HGCkqKywtIjM4Hi8kMUkVNjc4OhscHh8ZOj0zQG /9oADAMBAAIRAxEAPwCLufuBdk266vF57t/wbKLiXmc0XL7vmx2sr2j2zyvT4r2p2Sq7d217kswv HWaSztzdX7ZF5LyQllir6InbVT2pNGKQlB8uKdBs1aU7Tu+7LNtTxbHtUUt2GuN33PTILWLmlkYK AkSDwSJKAu3IvM+LV3R6pkyVdtOFYqSzlut/J3FFkka7UvYAh4FKxazkwo7eGtsVFKnWaxkKpu90 d3e09tWSGO7M0VlcUabaYpGMLkGqsI61TQfsOq4qZVB7xHx5nYaCjSGGfsG3/sdslPpqWNfl1SYW 3H3R65u+Ze77GfzbIHH3lU/1sCid0NM3fJY967XiULHs40jyrRcvpJwQV7oLMp8Uwu9dsJK0qbBC ZHpqdljLGnCpKnDXr3RThyHxSQ9y7YBSPaIVA4CiD6lwLx3RuQ/mmj9zWjFW/KbcsmalgppXjTkx OZ7IOQ3mm/8Ai9gRp2+AAf5ejA5nsh/xz5pkd7XSghLOEfO36qYIy+yA9LXtiy8lg3JU6M52y+Rt UUwCvGzehgfZP8P72Dut6TF/UxetZ692t1tYmvisrrIjzSZiJiW5uViRpz4HFTIwM0Y8qMNDGVs2 yRO4i0SyxhdfRUBS2ZBNdK8PThKEy4MBGsfdNxdyvbbNYG8ePKa6ZwLeI+hnXVqb7kepsC2QuZmD tZbi/F7v25GV05ooCFVIyP8AZodSo33m1y/u4vXHMr9QOyE2sO3WjjqpJcxJPO6M7Fg0cgoquhop K+nTiwLM75x2xZve3vKYZbC7NqsL6ooZfx4lU1BQaiHVaMdID8rfdwbaxRnKnZthL362kalnKxZR kZ09OCQO2Vo7E0XZIL3eFtpYpKVinrpYZgH5B4Z4DEACHGpYmnZ4YJLvXQuXhdg1pKoZXU8ARgHJ Q+yOvTkrpoZDYXswtpZ7pWe1tqOZFoHIBplX5cVFyRSalwANUfVlhTcbb3uUWEolsS5ETqSQQMjx 9eNK6ic7KbXIGyJN/VntJVLMFRtTKpIDAHgaeGJkJt0k6dQXAMr6ygCigKPAAUGMd07AWk91TiVh pMiTAkm4kxIZsJMSsgm4kGBJSERSgriQ0knVqwVQWc8FUVP0DArDSTw2F1MatyL4gczfT5RgEwgR hbbTDGdVKv8AaObfSf6uBGpC2tVEZCrTxy9IzwRAYj/JF/xZ7/pHT6PU4e1wwtusa7Sf/9CqSX53 buG43hE69ls8nuu0W/hcX8porfur5q/ZXHUuua7u4ZwFSxLfE+8/pSbblt4tTdKtwZodvjSW8Kmr XF9I9Dq/dZ2bT+59nEYU/h96WYnrTTb9lJcdi2prWIXV3+Jutwo96mJqVHEQp9mOPy6V83mxcBaN dsxO1xovDFd8202W63G4WcfW3WYaWuHYukIpQiNeAJ9qmMruK1E34cbMoB4YmnkmmkMkrF5GNWY5 k4pJm1VAFBMQwyyuscalnbgBgVjUjiLtjditeiM/vLhbhDaZKva26/7NQP3hiXiG2SL2puXiEH8X +bEvktkg7S3D0xj5z+zAvhtmw7Qvj7cY/m/ZiF5LJt/g68P+tj/pfsxL5LIBuHbe42gLaRMg4tHU 0+UccENAVillIw0EIttxngXp5SwHzQyZrT1ejDrkImfJ06tqN0xrYtsNwuj3OAS0AWKSNDpGddOV M64YKrbJS2TIm3X1Rq12ljaMyExRRLmkQ0gAnwUUGLaACZSzMwods0G5R3FnJLAyvoQsPlArQjjg qRQ0ispuAYUgKb9b3VpJGWME2htAJyrTKjYQZAR3S5unZSPEsBXe5ZrSW3uF1s60WQDMEZ5jC8zS hl3+NRgVmYIt4uLTohC0DMNJfiKegnwwl5pSXDCA13bJrjbZ7SPpyHrTDmjthWmo+n2sKWoNZox4 LjpIbfae7bvS8VlDGwPkeNQo+kE4qOYTYOiMl3Ht/uWW2aPc7RGtwCQ1ocx8sYoG/lw65AdolWTo 2XZrJ+3rWaz22NJGd01N0pHNSVrkMyfLw0+zjbjOk8/1WO14XuK9SKZftofqwzColeI0YGU8SY58 7s26mJJMdU044klJ73injgQzVrunjiVkg0+7pFWrZ+jArDSMuzbuPe57uNmoLYKQqnI6q1qR8nsn ArDLrb7fDGoAUUHhSg/y+XEkhiQ+rBpJJlh9WJSSSrb+rBgmnugpWnN/Z/NWv1YNIKz/0ajsdxYW UH/D5luXsaWmzW8iiNpLycUluHFeC1KavsLJjpoRTT6M4OVSTrpdvP7kLg2n/jce32t0DbQGMXkh zae6JLyFvXUO37zfdwSNdNgjB92pH9MuO5R3raoqGFeDA5MR+oYofLUy7B0tBrEUm2spIpliqs2U nrbZJ7l6KNEY80h/V6cSsNJY9u2m3tV0xLzHzOeJwKyR/ZRBotJ4r9WARGBhHuw9GJSSsyLb1YFJ KzPuw9GJSSs97uMGklZsLcUrTLEpJWAypUkgYFJKxRuOwWN3VmTpyn/WpkfnHA4myTbKbuu1T2E5 jfND5JKZMP24YGKRF5NDhosaWV7uV1DJZBDcrIpUN4pXgS3Cny4s5hpQzOemW4MNJLtnbW6NKWZj bKKgsM2PgaD9uK60lxUHbDYe3tqs2JvrhXb2Y60/QOY4m3ZISBtm/vtlZoyWFiZBpLPNKywx0HpZ +Y/JTDFDtiLlB0Eg2Le933fcVWJUigh53RBWoBoBqNeLUGF9ssSpNJ0nbNmtoYzPMBLeSc08zen7 I+6uMpNTOzjW0UEnfoCo1AeimJsl2sDuGibJHDNwpUVxAYpMVT2kDLNGwCmUF0bwEo8f4hk2NPT5 KGk5nX9OGWsRSCoWviM8dATzToVNDKLcMY55IzxRmX6DjntoZ3VNQDIjPTxwsaaG6GedDgVhpA7n d4Ici1WPgMAmNSCe+bhdVEKaEPtGo/z4QvDbNo9nL0adzJ404L+zCFoaSzdgItr3II1FI7mJkyGV V5hn82HSK06gkHqxbFk6QYNIKzZ2ghFZXC+o8foxKSVmqTXU+VnbFh/tZOVcGkFZH7nvWvR106mr XTTy0pTThqRe2f/S5YGUUkiUMkP93sEPtSHJnr+v7rY0iYyK7ZaO09o3RL61uEKptdsTLc3EhOqW SjV0/wATambFyV/hMucrSninbZE2/dbKK5tJY7isa69BDUOnPUOIOM7rWbUMTHY4GlzWleC+FcV1 IllBMyWRhOnTQDgBhhFMhnmtrSEzXEixRLxdjQYaLWVe/wDiBcxzadqRUjGRllXUW+RfDBpFrA2+ IPcx4Txj5IlxKQzQ9+dzmp97A+SOP/s4lJJpH3z3RJGGe8eNj7OlKj6FxKSTDd49yn//AEJB8mn9 mJSSaHuvuM8dxmI9GofsxKQRztnf0yUj3GHqr/to6BvnXynEpDWWmx3TbdxTVZzLIfaj4OPlU54F IQZBuVhBdQvHMKp9rhQ+kHAkrK1bwduWMlJZRfXdcoo1Mpr6lWo+nD0rELAQ9LrcnBSx2wWqE1Ml 0Qnz9NObFgwkzO/VIJlrC8lVn3DcX6YzaOCkEYHrbzfpxaMIG2Zm6wnYJXtx7n7f23VHtVst1cjI yr5AfvStVm/hxCyrsihMj7Zp3UPedkmPjSOQU/eB/XhsnDFxGjR58ILcfk1/czZy9eOJGOR0qpel f3jXGHLoJ2ehNxrC+5e97+G7ay2oNMYKGeOGNpCB6ZH8qV9HmxiLHsnaUU2xhFFuF3skd1IWjnua /hmqkeqp8tcG00rNFwOkR7ZsHdFvcGWOWJG1E9FoCVI9c2oNX10wLT/GVlTX2Sy3/XSx1soMwFdA NRUZ0rlixWIOsz5MdykSr2+42880kCyBpENdPiMs646uJwdJ5rr8BG9Kb3HIttu1wGIUMQ4r46gD jNmFGM09Ka4xK/PvUeaQgyPwFM8UkzQBB4WvZryH3nlgdwGWuZrkP04W6NSE2W3wrczArWQOwqak 8fRhG2xo9t7MmlR8x/YMCSsJZIIhWQio8Dmfo4DEiyLa93t4O4tukU5LMqseOTZeGLE2xW2TsrOV k6ccTyyehRl9OL4hMmj2zc56GV1tYz7KZv8ATgwVhttsdjBzaOpJ/tJOY/pywaSRh0wFqTRR4nID Bgir852L8x919/g95p/Z6xXjiQT/0+cbDBDdbra1StqkiwQp4FagO38XlxrQVMw5TRSfZOu7n21d pFGBRrcorRonKoBFQNOJkc1iYMAAr4ol/Lrm1m1xM8MngykofpGK7potjew3juZWVSnvaDxlFD/O KHA0hFZbRcLJY+8XkYgKrVwG1U+eg44lJCZzruHbn3K4acTuvHRG3Mij0AZUwawUlYu9rvrYFnQN GMta5j9owQ0hED14MUzIeuJJNg+BDM6xiSTIbBkkkSvLIscalnY0VR4nEgju07fuInSW7votsA4S yEhq+haUz+fDIt0ry5LBHyp2k9DuW+G/I9iSXRH/ACJT68XDGomNuoYw+HuTsyyTRbXdrAo8IxT6 hh6gSoknvlf3rv3bIZHFgDeyHgwqsY+Vjmf4cBsoEC9OzHuEpW6b3uW5NW7nLR+ECcsQ/hHH+LFL OTN2PplX2wDiKeGEl9Jdpf7xsIBz1W6/oUfsxr2rOSdGPzx72HM1vtlnbR00zzTSykDylQEUH0k4 w9ToJ2fholh3CDt/blCwQdaeV9WgnIyMc3b04xGgnocakjWVqXd+/rudoUsEtLcOVgNwQy6Aci2j 0+rEq1YwAjdbzfLONWlImQj8VBUhT9wnm0/LgNUax90wyOSS6iLMhUHhX0+OFvqZUwAMSyWKLduo TpvCwOriJI3Wn6GxbhYjIJR1WJD073bLT9ac8+IG3dTd7eVmPTeGmkcKqx/URjb1ehE858PNUI7j E1vaIi/hqAB4j9pxjm+STQFVEnDQQwPDga8TgiQw+7ngstyl1DKYLIlOBDDDONYBI33mRhSJaD6B hQJKwZ2uJvOx+TgMPSCs1W1ZHSUDONgw8OBrhgIpn0zsEq3W2RTLmJI0kB+UZ4vldZBu/c/b2zIW 3C+ihI4JqBY+oAYMlZX3753XdJYrbtzbDJNOSI5b0m3GkDV1NLCpTLlp5sGkFZOnYm/bqdfc2+yy RHjYbcDbxfIZDWRvmCYlIIb/AIB+H/u/uP5da0r59R941enraurq/iwbYty7Kz//1EezduwbWsdx dAy3UYHRt4/JHThU+nG4ALt2zks7ZdF4fNL/AG3xAspbeO33CxeHpqEEsR6goopmp0tis6zUopDL a92S+b+73MbE/wCrc6G/lamKyssDRgNvCMMuOYxAJCYk37cBJJ7pGaxRHnI4F/8A9uCYsRyKfA5Y EYSm77dyXdxoQnoREhPWfFv2YFYYpd2TI5/LhxEOkHudxhtojJI2lRl6ST6sQ6SLA4+5VLVEDFPA 1AP0Yruj2wqy3qC5k6YVo5KV0tTP5CMMGrAwh4k9GGiVmTOqeOfgBxwYJpdbpezwC3llZoEbWsbG tGpSueJDA9VcSSkwXpiQzHUrxxIJiuJIZleOJWSXXaT1NngBz5Ch+YkY2Y+ETk5hRzDuyoGa51Bz /d2J6dSBz0Goj5jjndYDUTvfBrTjfzVWWC+2jdhObmyaOSUKemsxIUOfE0BPDGFRrO6G0kNlst88 R/N52vb1xWVk6gijJ8EXVGpC/u4sArK6HvpC7HtjbrZusj3By8rzPoGVCQldIriMo7IwJG2FT31v BBoSlF4U9PDFF2kYrrWL3vllDKVOqupWplmKUJxv6JCzA9izk/F84x4itd5+z0yld8xxCC1uJDQI 7ISfvCv9XGrq10BnD+HtqRKXJu8SmkSlz6cYaTqwee6u51IY6QfAYIEEe7xbm4sdmvQKma3COfWm X6sWsNBFBmLXa5XANKDCyRtDsqRx9WZliiGbSOQq/wAzUwwBilpmOSwl5LCCW/bxaFdEXzzSUX+X VhgsW6X/ALV7f7i33b4o7zeG23bo6xCysKNLRfB53/qpi0RZadt7W7M2GTqwWsb3njczE3E5P776 iv8ADpw4WVtkVe2Ld6ubG73L3xtSSRIIgAxBIq1CQM/aPjiwJMmTqSTpDBeXEsMas5CBQAgyUAD0 YYKBK2yM22Ce7/8AEOt7PTp/FWn1YMrprWf/1bwO37W82a0nEYEhiGtlyqR4mnjjXlGswdOdwfNE Nx2vzcpPziuKKmaABMR9p27MOrqb1cBhhIQI5uJY9p2wQw5O/LCKk09Jz9GGiSstQnM5nAhgktxa ic20lykcjqD03IGR+XCNCsjn7et2WvTpXgyZf5sV1Mt0MovcsD2O4G2rVdCuGpQkNi3HslT7ZXdy Xq21PEMMM0CzFtZEpWnhhaQlpiGIxXitw4ivzYIEhNYzSd+Go4aJSTVy/XiQyOR6YMkj6mBJSYL1 xJJ4VODWSSKpxKyUkqr6BngVhpLd26a7YoPFXYfprjXhO7OV1Yo8m265O3bozDnUhoyAaDmGR+Y4 r6hLkMu6DOMeUE8J3ZZ7TuVIyVuBqpkR6R6scalDPXBqib33xB26AdOJaCmYbI4cuRCig7YJB3RN uKlbdNCeMh4H5MVnITHIE9cCSSmryrxxUBHE1RsvRn+jwx2+gpYZ5P48DzQfDbEHfln7xsL0FTFI jj6dJ/0sXdQNyYOiamSUK22mV/DLHPpOwTGUezKFq+XpP+WWCFgLRgl/YflNrYqJLm4tJmIEC9RQ rcFL5Ipz9o4tpu0ig6w63g3mYZdKwjPiP7xP+qJP6WFqBBrG1j2cJ3WWeJ7uQZi4vWL0/dQ0Rf4V xYEZpU2ZFlmtu3IVUdeQsB7C5KPkxauDvmZ+qPYI5tIo7WEw29Y4yalQTmfScXBQJQcjHaZKCKYM SaokQYuFXWeLUz+nBkmxOJBMVxIZ/9bRLTdrF9VvLNARxMbMB+g0xffM1kbWXcHc6FQUW9X0yrQ/ zrpxKyUlss7x5rX3i7gW1KAlwraxQZ1rQYIglT3PcHvLppTlHwjX0KOGJJA9Tk0GZ8MAmESv3nbl /LLJO9JGc1Y8MV1jUiTcL7cNklVEnlgcjUIlJoR6aHlphxQxTURHuu+Xe63C3F2VMiIIwVULUAk5 08c8QaSUgLMGFDmK4hkEsm37Zrs0emZUH9NMWqsrJiXcYujcgfZY4VhQxkNZGkmYwI1IWGyxKyUk UrYEkiUMTiSUk6Qk8cSSknjgJ4DErDSFQ2ckjUVSx9AxJIxttlc0Mh0j0DM4FYaR9t1ulvCUQUFa 555419OdJy+uFGB9kgu4yJywy5q4tYaTKh1EOgS2vI5JreZJTA/TnCENoalc6fpxx86ds9b0eUnd MW34YzANCrFcs1r9GMpM6CrGG3rcFQyjSB5RSmK9ZdG1ukhBaY0SlTgrGKwqyMcsE9VKe9ldDstV AjBKhWHBjWuf2sdfpqoBUcU5HW9MOoVqHRPKd73rZBu2yXk9jcQxxidyn9iGUP6eDFfRjY5BBE88 vSZEYN4fNKWO3+6dRU7bJbRFWMctBKahaqdMZYaP4sZBim5q9s9adpz3DA3Cy3TD/bnRGD+4KD6d WAqM2yVPmVNss+19uJBZXFpOy9CdkcRxDSFKeg0/VjQuCg1mR+t8ojyzsrO3AEcQBHtHM/ScWLjA 2TO2Zm2mHK2HiAyQNgQ1m4bEhmQ2JJM1xJJ4nEkmK5Ykk//XssXcHbd0QTK1uT4TIV/SNS4vKiZg 0bw2tnKiyW8scyniUYN9WJbSEtFHce46f7hE2QzmI9PguDFleLYEkRXu6btFes9sTFCvKFZQQ1PE 1GFrGpJF73uLdQb20SVfF426Z+g6hg0gLUlS717n2repY59vDMbKB/elYUIqwoFYVVvHCk90dRKn HuNhLkJuk32ZRT9IqMSsNIbbRuzg5MhFQykEfSMGsU7J0jZbcHaIsqnp/wBbGldkztKb3Cmm6f1H CZNsbHFSPmMVS6kYLUjEkpM9HVgySeK19WBJD7XbJZfKuXpOQxKw0jW22aJaGQ6z6BkMCslIyhtF UBUUKPQMQCSZuZ7Cxi6t7OlvGOBc0J+QcT82GpBBto7i2zdbmeCx1sIFDNIw0hqmnKDn9ONPTnbO b142Qy7SprjQRMAjrbdj27adgW52+1SNGkDzRID1JVIGs+OrTqrnjl9SppPX/DAGFfFCG2yCZRNE BIjAMPWDjmgzr2TWGFQ+hV0kcRgwgRF3Z3NY7ZDLaOkplVAxCCiUIrnI2Q+jFy4u0xDmrsFbZzNv iV8QfzQXdrcCO3XSI7AIskGhMgCDma+01ebGkZG2TnslCWAtnTezPiY3cgO2X20+7XduuttBrCQc jTVzrU+yS+L8OQ19sTIEIBau9TelyF1t8Z1WheRpl5xRuKgeuv3dLKunDK9DWaX6d8iANQKr/Y+X vQuz3C1RWivUaaSNc1U1j1V08ACxIp4/1sXC7tnPyoppygpDsf3OPc97dVYDLuW3LM0DKt11ADGy ApIp4nJRnT7OKOdQ7Z0H+DplAuTlnxW/L7UkktUQRGKVZGlXUYxWqmlSpJAFfVjUr1FTPM9V8MZG NlSq/Ld800Vv0YecySBsSGs3DZYkNZsGzwIZtqxIZ4nEkmK4kE//0LEvatqoDPHrB+1w+TLFwrKD SHSyWuybezxIiSPyxIoA1N66fZw0QmVF5ndi7ks7ElmPiTgSQG43u0srtEmjaXKr6Kcvo44kMOh3 ztu4HNOsJPETqU/T5f04FokulQ+KdnZjb7Ce0kRo5ZXWTpMCrcoIrpOAVhU1MoW22wFnup40tif0 jC0lhMSGPLMfMcCEQ3YY9O5JpqAVao8Dlhl2xW2TtGxD/hcP7h+vGtdkyGUnunQk0zudKAVY8aDF eUamNiOyIbcxy0MMiSfunP6OOKKzTSWG32+copMbAHhUHErJGFvtEreYaB6+P0YlZI0ttsgShI1N 6TgyRgkIA9AH1YlIKxZuPdOw7cSjz9eYf6qCjn5z5R9ODSSVTdviNuUgMdkq2cf2l55afvEUHzDB kpKjdbhcXMpllkaSVvNI5LMfnOJJLd8KFubnuG4tYEaWaa35UUVJ0uv7cX4DrMfWoSop3zt8Xaln a2LXm6zIJFUsItYCKAeLH2j91f6WLMmSmkfovh1283DWcq7y+Mm/t3RLa9vxpDslmvuwgdEcylSN UjOKlat5NLcq4xu5JoDOvjAQ1IBHq4ZdPhz3Ed029nms2tyjEOiMZFUEV11I19Njq/dxjyYCNROh iz36aXVluvWtbW2knoA2min0sclH04RVqaS0E7Zzi82eTedyCX8b9CFT1Fi1FnCDMgE+XLHUqciU A4N36M5zouLJUNvZt9Vb/d8r/Q8MsSdh7NHHHfIiRWMJHTMVQem+S5tWslfZGKxpQimkRXL34t69 uL/mY/KvlhFh2RtCQ3W5WjG3mKAFQVBJH3GOsa6ZCuGVKmpqGj890tQqmRB9S73l4rfFD9o2K/kk aK1iNUFZ5ZWKF0f2GJ8WA9OCyMN2k2f5mGnML3BjuJb+29Puwi6hkgkTabWJrUmnvGpqgnTVGBWu ssDXARXrQSlsuEnm5DddwWL95Zs/SsrsStEFukRTCkVWLMkelR4U1V1HV/SxcCqihG8Zmyo+cAhz yE/c5m78vLBrjuKCPcRuQT2FDRBSBUAowYc2p9R9rFLMAaitTNmDpMjYTjcoqJwvXe9H0JLNdi7u XZYwrNmhXPWtK1NODLwfF6ZdbTOB1vwwcsZcZr/uL+Waq+NE4UkDYENZtqxIZtqwIazOrEkmNYrx xJKz/9G5bO27pGRf3YniArzIqkU8dQxoEymVnet0F/eM6mkEfLCPV6f4sSSLWmgQr1ZViVjpDOQB X58SSEnt2wuwZUIk1e2hDV+cYW2ENKv3vsj7Vs7XkBr+IkZ1Z01VzxACIDQzm0kkzklm1E4BjiMt mjLbZvJPhat9YwQNDITsldMeWRwsaF7IhXcoq+hvqOIu2K2ydl2If8Jh9Sn68a0mZpS+8Uq9wv3T 9WFzbYcXZKI1uANYFGBFCOOMlZrInaNsi/uMP+7X6sSQzW6ns7NepdTJCnpc0r8g4nDAQSu7l8QL G3DLZQmZxwll5E+YeY/0cNSCVDde791vwyyzOYz/AKpOSP6Bx+fBkiZrh245D0DEknkSSU0jUufG meJJLt8Pfhdfd0XImuZTbbWjUlkjAaV6cUiryVy5nY6UwRSsux9OzLd4Z3PYO3Nl2S1httkt47UX BKiZHDu3TBq8/md2rw5tOryrgrWopOg2PEqNUcFvvPd4LpB3XTcdgvrWZmluplMKMisqouWp2JzZ h97CE98vXDRgE4acLFb2en7a/ilI7a+HNqqST3Fk9zbWVWZljAWRGNCzMSrMV9lVxnAJbSuk15kX GlpKK+XzNwfLzNG9v2vewXk97CPd10BGAcBxGnDgGTVlzal04u5bjU0pMS5sIAVXbmeGxd294TO2 /XGyx2m4GITwzkQP0nSUJGQefp/6zPTzKq6cVKCRoNazRlpjy3Oa47d8rwuz/Lwwmx21k26KVbpI bidirxgMalTzMXBYLp/rY0Y7iBaaGVdQca5WGRC+NN/G3iXd4V4eKF2lrCkTNc3HViTkRIP7NWrp VzXRln7OHxburC4D6kHVLzNzDTG7gvkv/wD0ZNOD0yYNdXlq8jlIiqMY5AoUEIQtNRbl46sTJldh U6V7YOm6Tp8OQKtz2sFZK8OS3yRrtFpcW9sdys72GbRH/fbe6LGLWaFSremuKQ+tRGzoHIw5Fbi/ TdLb+X7kFeWe+g68pAuMpWLAdOM18GzC8n28bFIdacM5uXF/jZdP1E4LfFCJ5xMxu1EE8cGqOa21 9PXFGeUFgB6NS6hip1+zHwmm616czeRuLeb8LSm7ob25geK0RIl1lljZqDQQdLCtCdC+V/62Fx5i d2k39d0a4v1SzMd1rPK3j/pku3300VkBCR70AkkaxeCjMAEZ5rm2HyKq1Qa5JVgZ8lubJu9NSxrt 929f5fLHjCR41mZdMrLqnQeyx45eiuNON7hWeV+IdIMWRrTctZqHw85891K5DEkrM6m0kk0A8Tlg SRdedybHaVE97GXHsodbfQtcAsBGVSdkV/8AULY+rp6Vx0/9roFPorXCc1Zb/jPStJ//0rF3Vuaw xfl8J/EkFZyPBPBf4saZklVrgQyO+7euL3QzNpCjJPAV/XhSDCCIrue3NztI3khkMWkVMiMUp68s FASaRMrBVJizvc7zDs1jbR7nJudvcgvexvHqETxkFBrHOOJ4nFz4yJTizq3bKGWPBo+H2SD+g0OK TNQrGu0X1lDt26wylle5t2jiJRqajSgLcFwRsMBis7Y44z26/LNH+pjhbY10L2vb5RcidZoZEiP4 gRwxGqoHAYKrFZtJ1bYM9piHiA3140LKDKh3aqGeUMdKleZqVoDXPAzbYMRlOaLagCPfHPrEB/Ww xltHfNdx7p0WLctwWxhEVlOqmJQkuqIVWlNQ5zTDACCplU39RBEbq+ScIWA1tJG7Vbh4nB0g1iSF tsuJUSO0uZmdgAVZTxPoCtgihkYkDWT3lhb295Lbfl9wTExUMxcagDQMKJ44YrTsijJUbRNF2m8m otttErOfKT1WH1KMSwnsgOVRtYR1sPw93vd9whtLyZLO31jropFUSuddP4aufKoZtWrBKEbZMeQO 1F1nf9qU20dptVnB7vYQRvDDClCyxBqRjx/ENG1aeZ8ADe2d86m6uEm7W5P5/wAMaLttnb20V3ZR o6EhbdC51tI60bVWunQ2f+WnBAJoBFbKWLDIaGn6nkVU4bJHu9ylw8FjHb67tix6TmlZCKAgoSNJ px+1iMxXQ7Y3TdOCDlqwxgrvp5W4sfveaTNuT+5222NDNbXbRgzDpnRGqZcgz162Vc/ZxXjygUBE PUfDyS+RWVku3NeL3oNri2+6dmuYkikcJw5ohSrnSa8ftfe9rFuRQBdXdleMtlAQIeYB4fHpuXwJ 7a9luZWsbn3sMrxSNKQpZhxfIaSVqMLeVx0XUmWoqHNdmU41W1lRN5fdklrtEv5aIIY7dC0SyQzG YdQEMdQ18unUx8o+1itAAgA2zVnz16pi1zL4t38Ppg9wt/HZxXhMUVmj6o1Ygh3Bp5ac9KcfLh3D Mtw4Vj9O2LHk5TEtlybtyjeVPf8ALbxTYvuNxBJdW8UZtdJeVJQNDo2nUEAKsuXpbBd6C0azBitZ 6iiZA36b73/y+aQyIp2siw/vCvqd45CyqpVj5eZY9Sj2sWYsSnHrSHP12UdXsa7dT9Py/V+zA7QT LAkYZdMzMZURiG0oBkCa+nLAbFYApIo2ssy9Xz2OUKyth3N8D6zruzXcr3cJp2uxbiO3EQjuWjGS ggqFIXjy6cJsJ7qS3CQ4UV3le5LvFE+62sFzbpZTBLfqoOjdx5sNZBXXmBy0PDAc1x0pQr4pfcUy s6k5Fyb2TF9j6X5ZXe1d+isd0ls7smd2JEMhzyBGTLWnMmfHGcZNd6twmk9KxWmMryn++q/nnQhe WrXUdtBMLdJyXVGXRGK+2WblRaY3F0TRe2cIdLmyrzMgvCfpsv8AcfwssB7wv5u3THI1s1xb3FRB OjARkgA0rx8aj7S4s5oA1nn8nRktu7Puyk3Xfe8y16Ajtl8NI1N9JxW2fujp0PeYlutz3G7Ym5uZ JfUzGn0cMVHKxmlelReyQqQMVky8ACZoMCsM/9MaeeSeZ5pW1SSEszes40TJBb2G+mtytpUMTQyA 0IAzy9eFJpGEHjvu7LQf2jyAeDhZB+nPEDyWzeHufd7y2lt761gEUqlda6lfP7tSMbcWI1qZzOo6 pSCohG1WF5uF3HZ2cZluJMlUZcOJJ8APHGlmAFTOemMuaDbIL3ZYJdwewu7SOadJjbszBSNQbR5u NK4yN1CHsnRx9DlGxrZm37H02l5b2cKwRXqNbzt1CSnA10EEj7vs4qLIRoKTWiZRtYN/CLYfhRth Zgbx2o8K6lZACJ6lXro4aRqbFe7L6N3iS2nZm1Wz7hYxhg0AVjdvJrLaZFUaFARD5i2IHAqKQHGx oSY690fbrPoW06TlJZIjrWh5SCH5WPK1csEZaQ8oQLcO27C7jSeW7Vrl0R5LegCZsQUJrqOQ4ebE bJXWAYgNJibs3tXqN7vbwSFJYxCUjbNDRnLodVSvlpgXewQjH7TC5/wLkx2zo9lGwWAmJFPSByBB GRpkcC8yckdtf9ZdO6e39v226hWCNDBcJ1I42VSVoaEZjPjljZhYMJyuqQodCaRE6KARGBGfSoAp 9GLqTGTBbu9trCEzXc4RSaLXiT4BRxOITSFULHSQXCXd1CzSsYIAf7FWrIf33Hk/cT+fA2xjRdk9 atbWy24CAJ73bxBVyAq9SKjgfHGXq2AAE9F//O4ixyOdllv4/wAEuwt5bRHtxchL23QyySFndaGm nSKCns509rCWkAUO9SbhmXI5YoDhL+7d4pqjXaWrLbqbiWQNSbSQyqhpqTPlTV401M2Eqy6eadBu VkNxFvLo3L8GR6cHrf7qwmWG6je2ZXjZVL9SZSdSiob2CWXL2xzYR8W8BWsHT9SpxuSLDpbjbhu/ qke67pNdXrywu8j6dMTVakSAZNpALKBXLFhShNJXjocShgtK3Mvjy2+qtr+uaarJLW4RowyypqN1 KhZw5FQmohWqxAP3cK+JQP4QYOqyvlU+qyzHwWeeeiB29xfWyq8c4CyCckBJJQCKMv8AtC2ilNOE ZClG75Z/kJmDYmNnKP8Ab8Wu9/VB7uPdZpEaa2WBLmWQ64SSAOpzALw0qR5cHEC4oBLMuTDhJyXs 1Ftt+ju/T9UP3ja7e1trdUvXnGlk0PRyrLwCEcNbHyU5cXWso27sw4OqTM5uSmQ8Nn4rfKsCu7rf NssVMVrDXQtvLZSkkMiksW0qTTlOlfZwi42cVhzNgxuFVmJY8xW/D70XWEe03Ct70j2oZWEU3mQS 8RHwA0+b2tS8uK8RBWn2p0+svTKGXft/tLxb39yT2lnYyM5LyQSBR0QrVL6geeigmisU5cWY+lLb Jj6r4xyqq1j6726d30Snd8WW42Lw7lFPywjXcsDo/FFKKyjwyph8yMDr2falHS9SjrQaXHdVv7e2 7e8i3NFW17/uG8blHtt6q9WeNpSqggKukaRpXwbyDVitQ4bWXv1WBcQUbVuW7xfK7fnp7Lb9q6LX ISOecjppJkVOkHUHBLqvNoOrzMuLupGL2VMwdHk6vjW5kxtc3qnQbYwx3C3EcMN5AYBH0yuRDDlI r6hp1DCnCS273bJoHVVwi8lH5jZOZ9+Zv7Ce7il2jcUkG2GMTQx9VHMa086uT6eZFY/dXFSXAkEa TTlx4cuNWDLzMm7upbzGnKt32m52u9a1uAcuaKShAkjPlcV9OI2k4roVYg9kC1DC1izGumBWSY6u JWSf/9RbJMyIzKpcgVCjiT6MaDMog1p3PulrGEms43QeplP0iowA4kKwqPv3bDMIZ7CZTlVoyjqP p0YtVbtglOTKqbTK9PuVjaBprmZYYixK6zQkE5ADxONrZAu2cdMLOdBL38E9za/7luylnLHapZsY 7qYaNTGRBREPN5fapjLmcsNmk6XSYQjHWrR1ufw/7mut1vbmJIFinnkkjLS0OlmJFQAcZZ0KzFx8 Pd86EkkptIWCis5mlbSRTU2ae1T04klYDPtO1WE0lrd7ltMV3CQsqMZndH0ioICUz89MSsNJqk/a kKlX3jb6jgY7WeTTR9YpUD9z93EuElpkUu49pFTH+dOQVKaYLBhkwQZa348n9J8AtDaZFFvHalnE iR31+4R+opW0hDFqhuLPX2cQGS2Xuy7NhnjSZ7+6QLRoeWAHSRUEEKx9rxOGrEpPL8Le2j55bp/H +0UfUuJDWLPixsW23ybZJdB1a3WVI545GidANBPMpH9LGjAoNZg6x2WlJyIXW4QzRPtu43w29qgz 3kPXjBHoKjUVxZU9laSm1aG4Ld6Z6W7v3EQnitt2t7nW5urabQ8ghYHp1lpo0tT8OPEqfnkCjsqh EI2ndBq3G0W0ubQSTtL0uixZWKrWPX/ZpwrWuCrRcuPQGo2R3u12+3dtWNt7uBJcXK3cgBIAVSNI Le0aLqxl6ljWlJ6X4J0ihDku1au7+K37stFjNbS7i0UNyLmaSBRMrHp9NvAuwy0lhX7XJhQDtms5 QSVC8uxr7eK+7+SGWrzLe20sgYF4neaVW0hUGrTp+XSeOHt0DdsXJlNDhUaKy2+Zrv3PwxpedPb9 xjtdquUeGdALnXIc3b7ZHqPsYXHko0GXBzsBZwblbw+Vfw+bxQX3S6e8ktZZ4rRiz9WOMAqQhGpQ 3Bi1Ms+bDFsr1HfIp6XAquFuZF3Wu83okl9CvRPvMiSdN9SxspTkNQHNKVy0+xh2wNS3SZMXXYg5 dL8enh4bvldFl6VuLkvLzRqKGMrpVhpyYVOldI0+1gZVFQaXW8U19CzHGVryzlN6N4rq+XxSa1G5 WkscksZgWV1Fs8uvpaJMzHRf5/8A+WKFyutSO2a8/TdPlAUm+y6/l8dyeL8ELNpBZX0R3ZnW1uAJ 1XWWYmp5wFo0er2a+zhrlOjSleaRdiA0uV2ts/T8C+uE7leRy7rFbWthLWYJJI0qOoKVr1NHM2ka V0vqxb/lU3aTnt8JJwnLeLh4Pl4/TBu44UvbNLW1YyJ1mk6UDDRHLQazIhGpeLL9vCMt2glnQuen Y5cvl3buLL7nytiWzGzwWd2Lgu/RfRErh6qXHEUIXWhFdNcKjcutDwma+sx5updCFA5yem6J7j3e Xb3fc6NZPyxKTqejVUMCfssD5sWDNcKnYYmbpVxsMePjVd/yv4n3fpTku6Wlxs3dsiQ3fVt5kAtZ Y3C61UaAGBNRT5dGKcjlSYmDEpYXaeL+qWeC5i3rdXt75ys9rojsiH6SgK1WNQGZpM9fH7WK1AyP Sa8hfpsFUKlH/F+GXns6Xbriz1NNO8kRZWEb1IETEa4ycyFZdS8vtY0BgjmhrpMeUZMmEKVVQjf/ ACeX6caW67d+aP74wkgtkLzNcOVWQsxoSFUq3stnp5uXAyNc2vhXel2NXx9Ndj4sr/pKg/b037fK 0C7m2jYt8tpFs5emTrew1AKEKgBgleYo2Wpf5fLglVtrXilDDLmqjr+pi4n/APsnJL9ZrG7ktbmN kuYTpeJga1+bwPEH2sUNodZgpB+pdOSUhIHpblH68JeJKTb3e+rxStfLn6PThb4aT//VT2HcmywT SR3Kyk6tPVVQy0Hz1440giY41j7h7QlOhr2ONvFZVZPrFMEqILjOZ7rvZ3XdL+82+trtcTaEmVdc sgQBaop5VrixCbe5RM2VFv1Fzt9VZJttsILyCaW0XXOwRJZ26s4AUksT5Ur93FmNSrajbKczh1NC d36s7D8IjXuG49dq/wDppg9TwwfD+M/NLXe9+zQ3lxbJZCsEjR6mdubSSNVFXxxyW6ihpSd9enqK 1gw793RyoSzjGoVI0TsQfRkM8TnmmyTkCu2VzcrFNw3Oe/n2R5prltUjjrqCaUrpBHoxXz27o4wr 3zWHt1C66e3BxzLrOcvnfBGRz2SFEHbGG7bBa2e4XENns1qLddPQZkQ1qATVnavHDZHYHQRMaKRq YCUvYwT7vt0Pyi1B/Tiu/JLbccmfe94pR97giVRRVS5iWlPUtcOpyRGGPskJ3y50Hq9yIv3hcyE/ 0FOHpki1Tuj34hPbSbJsc86yXcRNdcSvKp1RqdbqOZgaZalxv6fbOT1wNBSc17Z3i0hsjaLKgnW4 mVFkbpgLrNNRalP3fPi9GFJjzYjWvskW2wxwz2l2xFBuVxE7A0j/ABVY1ArQcwrXAX/xlmTtHpWM 9vMt3dbtFauqwyXCl5+JziXyqfp1HlwQaVMAxFyqgVZt3/th3fMDbnLY21kH6kKIDBI2iscYC8pJ pnxbGDMbtBW+e06BB061cpyjuo6b36nq9M27bs7a9u9xe3kd41tIVtmdlCpICxZNQIrReNRgqLhT 2QNkbE4JVVLObj5l/r4ZcbO22prfXbBpI7dUrMzARu5DazVjTLh/SxdiVQw7hMnWdRmsIpv5LlsX 9xNkhgs7OTb5pbe3MplTpR3IVnGrUaNGtRSoyZvZwuRQTVe2V9L1ma4JkNqY7myfiu8zQfbrW2iN z73K8ot1V2iUyAh2qCuVCP5l1YVKoSK7Jt61ueMboireSi8y3eWS7VBfmL8zecixhmQSWzMxd4y1 NRGZ00wDmZjdsjHpcWIcigbJa36nlfyRjulL+9NtsZjHRjYyqVIQ6SCAoYZjP0cz4Z3IBANsy9Jj VKPmAfet4v25NcblZ7k9jZXUUrXSabi8SUCONQIyGy9tZPujC3BtD2Qjp8mC7LjK2vuYmXe4m+y3 vRLf3Wxpd9UQyDb49HQUKzMCoq1Q7cCftauXCoMZO9ovhnTyf5S4hYVbNX9XZvK3DbHS9xmaAzuk SHpao7QFXmD+LaaLTVp9nkWNcasloSvi8M87gws+YoDXH/cduC7zfkldunlurzrWMbRiJ69GXljd m81NGk18aYrx5CEJE1ZemVcyrlO7bdckEt7e8t7OdprKRpA7GdjzozjmAIFWGRbUQGwvSdoM1fGs wZsbY23f7a0tdPpQDcI42t2haQTbeVjkVouduJqv6sOygGm1dGi4WY0fhzG9Gu8L+b7s4x3/AO72 vdMdxHbtFBKgVn8ajhl4ACmKMzBjpEAbEwJ3j5oZc3FxCkU9r1I7a5jAln4hnZdLDm4VHmH9XFKM yarsnQPLzALktLCtqpxWS5fDOS4Wa/tduuWdUSOQIKJqDEq2ovlWPwpy68RanZtEV8uNKDINx2L/ APLb+duKXGCdAtzOlyXuFAgMM2TSIOGihpyEZ5//AFMWK5Ultv4ppyYBkVcRXlrx3Y/7WT+b5cMY PsSW+1S3VwiR3TIZBG2XRUkVQIQMya868uLb9Ng/LOaWYZxa7Prbuf37fE3h9LXRLvOwxb9tcc1u gfcrRFUZjWY+HTcmmqjA9NvZ8uK2oy0HEIvWdKwcsRZd9Vvl966UI2bKSjKVehVgeIK5UOM1Jzpn 3bLVT2f04kE//9ZenZllIlY868CjVH6MX8szLeJzzuvb3i7hl2S0kLyNp60mX4URUFq08Th1Undl LsFq52eGSIbG3tJreJ1VYAU0nKmnjjS5ULSYcIZslx7YWbl572wFuhqS7I8mS0CcaDm/0cEsSwpI qBUauvuzqHweinTuiRp52kY2ko0ABEHMhyXM/wAzYTqFNuplnROC5AFNJJv/AOZfmu5H89aGL3pw tGuj0l1GkdFTR+nHOLLWdlUYxS0MxFW7lmYfdjuj9ZGJzkh5Ld0he3tTlJv103yQSn/SlGJzVk5T TWDadsaSsm63Uin/AMP+2bA5yw8po673t+3T3JevdzXgnVIWkWNYVSnSUDSzvqY0+7i2VCInTtKH X+DeTFAC1Lm2WtfshUeuBdDQzM0nbMYUxbVc3RbPSt3Uj5dMIwayUmyNYuoMPbE7E8OpNcsP6Kri VknRu5YXuO0NkqrWoCx9SBSQVBhp09Tc4pT97GjBtnP63hHzzm+xm2t77ebExdQC71w2wUOSJEDc DlT0s2NC7TMeQEhT7IpG0252qe7ZChg3KjRodKhDMA61WlfNl9n2cJTT+MuuNaemWXtq3pv26rBL NIsLqUUMJAzmEBQWILa1zPHlVcJmagM6PwnFflVjS1BvXRh3yyJbWV/HKIryQNFPGSpLxMatJynK mM+M1ap2zr5gwQoorjDrveV+C2cz73udxg2G2uLK4WFNReVU1Rlm0jSQB6vRguwoCILcgLBtbfpb tZde394uUgtNvuriRYr63i/MnYKn4xSraXYU0tlhCxO73zRjxqi87TmY95V8Nv4WlndrSCG3t9uu D7xbkpQp53qKq4B8cs9Wn7PtYtVTjoPYbZifN/kFnYbly8xR4Yfa2+7SW1ykM0C3Op+v7MmoAN/a E0NOAWmJ0zUqTLfizq5xgAqtO/dVPchMttE8TtBYTSe61luJdYFaDyMT+Hytqfl1Ng57SdmyP0D5 FADMv6jWpfx8vzL4t7hW6BWF3dzzxpFdCVUDuUYdPRy0qpU1ZqHL2cUY1DkAmbOuTko7Bd5rbbd6 78sIuxvT71GqXSe8ELDEykKQmkmmknUFJPNrw9jY22gyrG+DJ01CrgA3fSgkVjrXcJRc27NHWKRW XNlY56NZrWo1ZHEK6VlnOUsisGFVtrdbw+a33osbZ7iTrXgteoA6qHGrlYDlIUEN48cBzkZakR1w 9IuQYg1ot3tR+p9LzLbwxb+T9zWVyL732QWc8gkNsxOvXqoFUEFqg+H9LFFrbdkvbJgauJP1GRWs u8O7vfqeSS3O47+rTyW93JtqTUOhwTI8rqVoB5VUV0f0sWA6Ejb4Zkboi5xrkC2Y133Vt2z8TQFr +LabdWu7n364ldY2iiNUQZ6w2XmSpxbey6ttlSct2KY13FF17fuX/laKO5Nj2Teo+m46MilfdZSt GIbIaqc2YNdJwGT+EBo403m3rvo/K2US8tpgYopHY2qMSwzISmTNpr6B4YzVMp6PIo0I1jTYN2ls t7istsmjliuPww7EkaiObWeBTjy/1sWlTSgl65Md9z+E3N9HhnRGluIbZrGSFIyikuQpZsvKENOZ TTx8uGON7bV10mzp+twM/OclLmtXe3PfdZbrTt3bprF4ZGa53GVBNHckksoVQVXi2qPzfxYOPCO3 bOb1Pxd+ZRVGNBctn45Wdy702HbIriJAb+4UMIra0UDR953YUD/ZWrYsy5UXd7ZViOViHLN7r+Jv yyh7n39b7nN77cWhjuWoDFENZoopzvRFZ/TRMZGNZnzspOgpFn+LW1/9xbpca6hqp6KUwukqpP/X 4kby4tV6scjoQaIqMVLMeC5YuBmVl1FIx2m4vEPvaxdSW9bREzZvPIAdTsxz0az/ACJi7GSNnbM+ cKQQfDBUjkG5Sid+tKpkVpD4kVrQeAxV4petLAZES8dunTJVi7EFTQ+AwAxpCUB0InTf/b/fbi3f ggnmdomsrikbt4jSa0OeCXY6GBMKKagS473Hvcu8X4j7fMye9OEkEFy4dNR/Er1FSvyDFBxCahkI G2CSWHdYjY23bdWHk1WlBw8dUp8cTlDuk5p74KYO8qlZtssbV1NGWRLaNgeNCJHrghB3SXnvnha9 2+zJt8fyPZ/L7IY4IQd0BeWXe76G4v5rq2vLV4enGvVBiOl0jGqrFGJ4YRw/ZCltNYG9zfFHEN50 2VSdSazpCipNEhHhgBXjXJGlh2z3fd2sNym7a4J0WSNutKKqwqDSgplgFHPbDzEHZCv8DdwuPxd0 Gf35Ticp++Tmr3RT8Zpb7Zvh3t4huHE9vdQxPNGSCw6cgzJzpjSrFZjyYw+2cFTe90lMsyXNxHNK 46kkb5tRaDV5clp6cOMh2xDhXQEaCen3GakSC4kHUFXDElSdRq1BUFmpxOCWPfIMY20nXfhTsMyb IlyFkN3cSPcNKSQDGT0o/XwDNhSK0nW6R+VjOymT625vfagPfNxaSgTGFofd6rKkapVgSQwoKOcv K2GZgHUkWkTTjx5D07qDzFc3L6PFddwe+nhlavmsrvtEqt1FJaQ6nNs9VdCuSMASeZs6rq04r3Rs O7KXLXEENzXp6pe9q27Yd62W1uLO/jmWRUIjYZQkGoZhxDqOWhxGqNhlvToHepU203vXpbZ+KP8A bLOGy25JYkW5NvLqe6ddJLMampXmpT2j5VXBd7qemMmIY2ZSbOavD6EXd+l5ZMZJJUkubpUjjuCs D3EJ5aRrnpPDUf8ASwqGuh8R4pc2IJQoWc4U5iY28zef8smbeZ4YXjii02gKq7JEEUxqKamPtt4Z ebzNi/gB0rObylz5Vq9rst29/ueRPJA7K/skmuVaHVZXOrmkUA6gtVppHhX2cV4WFanZWb/iHS5C gtb9RFttu3fU7fLemEmggvolt5ZJqCqx8yIPEhsy3D2saVyJzKAGtJgydPnPS3sUtZt9l47fCvy3 owttot5bJp40a4nlZVlRSNSq+ZYoa6UVh52xUG1JI2+GTLkbRAeWmLeXLxM7J6/F7sih2ud9vk2+ 4ujEsLshKyABQRVXBrqKV5ae17OBzNwrGyEDqVzAX371jDxfm8Ugu13PbNjFn1olUPIvUZhqKjm9 HlYHhzYQ4yBSu7NOLq8GTPfaea+6qrwq3DdKenbj7xK6i8/Bj5y1asS1KELXOgGn7uKwBfUbJp6k lcVXB5rfU3fldIbLt9ffIbSXUbZJGRrlFCszDOlDlqUYYYyz21qIxypi6c5QtG03K3ei73Y3vLS1 2d7tZFS7aWLqw15qyZ0rWlHGLXB7ds53MDoGxm3arL733lacfu9729SyKskrgmoC09R83rxhmGFD aLUdtW/cVkjQXcVwqTJUFMiwD0+1kvj7WLaigMfHkNaGWa/7xWCyiurqcWtIhGgRi4kVhVtApqrz eXyasPkLINPF938M6fRcioDAFcf6nr5vl/4yxfYdzd1bvDJY2U8thscjVaJTSWQUpV5BzCq8VRv3 sYjltqFOk0Zv1yHZVDAeGNrfaIIIQgSgUUqBhFiuukrW9WcMFwWUACQagBwr44LCczKtDFVIepWv zYlDSVVFZ//Q4jYWiXyz3c5ItbdSsQqRUnzOfmxeiilZkyZCGAHbLTYy9C4hurwLb20Vuz28JGcc OSrX778dP3tONSGhqe6YMi1Si6m6V03ET387JUuxlKq/LQmuRHmxjrvToKN0D2TR5ZDDDRtI5qhM syfT5vD04BOkcDWX/wCAjqnxEgHDXa3C/OUB/VhVj9hnc9w+IOy2FzNbyRXLtA5ikZIwVDiuVSw9 GA+ULtjpgZtkjb4g7dp1CzuSK0z6Qzyyzf14Q9QsYdM0qG4brtT7hJudL2P3qUzpEptiAzR9M8pL Hy/aGJ/kgR/8U98xbbxtTQgpHfUjJYKXt1aukJlSM+AxcjkiVPhp2wbuJtj7evU26GxvLlJYUutf vIQVnShBURNnpywZXAG7pJq0WyXcpIIOq5uWqGFCORV81c8Ssloh9r8VO7ba2itLPt1Y4IEEcSlL hyFUUAqczgXQ2wuP4jfEi5H4exhAeB93np9JbEuhtE1+K025bj8IIrvdUEF6LqF7hFUqBSR0FFJP FaYhiHbPn/WGtZhGNAUrkTWorSpp8uJXSCmsd7J28N7voLcztEVji5UUFjrcjInhi1Ur/CVHIQQK cRn0G9nfbZBHs9sE0yaFttGYVUoOY0GovpH3cLqpE76jFkQsASMaWO3m/onPu4pLh5JZJLIR9XIS ohqmk5tlUg8uEbqiQQw2+Oa8fw3GKcrJoim7FXdZ3nObuN4bZ/xkrJWIwClSWz9dczisKVB9sqbM rkV2r9m2P/hhYdwxRX1xQxQtEYrTUKFyr6i2ZHIKY0KhO3tnNTOFY2/2+L/qbs6TFuG/S7bMt1yw TSUcCkekqOcUAGT0blGFygnZsmvo2xAi793gxt57/wBtvoQjZzai7MZWe8ith7xBGuaLpoXZ1b2K UrilmUmg1AnROPKuK42Y3ybj6/Us9cI3G/S53K2eGKZ7S3bXGoXUdAOtqIapp9WLC3sJEy4OmIRq OiZG83h8PFxeaZ0VUS2EiSsivcXaqatFGBnq10XUvl0rgo7UAHZvQZylz827etRPJk5f83vTS83K wub5vdUitOssczJGaqxoGNCM0/dXRgI61qNsD48nJVn30rb5bFbcutbjno+5IIrmOeCNrfpKyzBg T1ASCFkAHMy/abFr9UrsDs80rX4JlTCU3clzDlMrcOrfZ8TT11uEO73VvJoMVvEqxwxClA4Osaj7 VWrynlxd0+Lm6mtkydXlHQpYCj56/UXIPs+9It23YSW0cU8SVR/xpEB/E0uQDFWrL9k4B3DvDt4f uxenwLkqcJKkpuu39r/dTI3u8Mm2WDZLuwa7jhkF0nVHWNQY2pVTlyVTlocUoqPqBSaet6rqMLDG xDJRf+ov88X2SGMylz7wquHuRp/E1KDUo5y8f48Wctl1B2Q/5ePJu22O62J/tt5eYvvSO92u+3G1 FxCgndnVtL1BaJgAKD7un+bC3MVuGpgJxI5R9xaHh/3FnI+9tiO1b9NbkU1APxBzI5uH3gcYsq0a Y3YMajYY37XBu+xN+suLwAzxg/d0v/UbDpqhEoOjyr7Xsybhei5nYvQBVDGoCrwA9GKMrmk6nSJU VnRdrtYoIlRAAPRjPOjGjFBGw4UHDDCI0qO6bRuu43arY2stwiijMi1AJPAnGrEhInF6xqNPf9Ou 5Ol1PcX118mpdVP3a1xbyTMnMn//0eTQQv7vNFEAtpb0WbKupzQCMfujmbF+EG2YczC8d9I9jS13 PfVlVupb2aDLirSo1AfWqGv8WNiAM1e6c/KTjx07WiKW2AlmlpmS5r451xzU451/B/CQyWcLMEYA KqKQPGrVJyGeIwNBGB1l6+CVnHB8QrV1Vh+BOKnIZp6K4GM6xjOib5a3771cm32eDU80jCSaDUZA D5gWcK2rjWmGONSY6vQbTAev3bECqbLaDOgJgt1oPnJxXy6dgll6ntMwbju8ADo2MLGhrps0YfzD DlB2GKGX2zeS67uCF/zOziIGSGa2Sh8alAeGFAYHbpCWSmyPu4zeNdWzLu0duGtYi0ZkkzNM3AQE EN6cV5ya7aQ4AKbKxSbWZhV97BB8QLlhn8gxRU+aXaeWa+4QAam3ZmFKsRFOR9JxPpSD3YOY9n1V bdHc/dt2P1sMAU74xLd0J+IPRf4L3htGeWOF4yrMuhqrcCvLU+nG5DuaTBk4tZwnt+0kurmNL6Fx BMxQBxpDcuoUNPAjF+IV2zLnag3Z0T4biG03M3DSRobZ5RbpNpSNnBpGCwFeSurjp5cWkG02iHpT jOYc1rVpOk90FbuzjaxuQbwgO13HTQAlSw18FOr2faxmyknZtne+GoEb9Q0xMd3HxX3+n8UpO8tc bbaAXcarHcovXKUr5TxVqNSjZ4fEVC74lfU3ZctMTFrWtX+qcu7kSymupGtVzFNEMflByzzrX6cK daa6CKSRWo3m4m/lnUfhlFLD2nts92tHmjZIw4yCrI2mpP2hi3GbtO4TEEtY08b3S1bxe2LiVKfg u8coVMjUjU5B+0CQuf3sAEDXsmrFhZiNbXtbe8nvfQVow2ndYW7de5tl6aLqgOpl6kkjZEcBnQ6u Ps4GJg2o0ifEMORM1Cb7VD6cNtOKLbO5gF6lq0iaZNDxB26aoCaaaUBelMWtlta2KOk5mHm71Nbr fP5m96SD3WK6u5YZ1ncxMkyzKy65CwaPJQFEWnI6mxmA3jTeM3M5fDjDjl41a5Xr4OF/Vzb/AAwE hNuu7JlhiDSuzkxynp83FQKcPs183tYZ0XGVHiMuTK/W4stx/SQLZu7254vzQXdLxrqS7u763brM QYiq9J1TTyM6AnzCjatOC6Aqa7ZOlyPiyY1xn9OjcW9zLjwp6t3dWQXW6KloLaQe72rant+UCZXW lD1F0h9WDkd0UKx3WXc/DLOl6fFnynLjF2VMi85m/be79zdfycM2Nkr2KzF2VlMZEssg09Mjiq0J PDwxVkDDadVl2DJjLEIq2Zb1tQffh1xFJa2nvG2S/wDDtxmVLm2AGsMBzBS3FXo3MOVvurgq5Go8 RmQ4lfcy0D4E3W9Hr9Sz1rJD1l1x+8bfcQ/hhiVq1dIUrxc5+AxqyitG8LTm46qDjG7mxP7ODzXe G37V0It7Z1ksZUaWKKR5I/d5AQqENrChR4asUIp0pN2bOrLkVwrWW76+O7d+XqlT+L+yS3O5WN7+ GsXTaIsDpzycAknSeJ8mJmxkmcmqhRSIuzrS3sX3GN545kubVg9vGS70FVJ5QfB8DHipWVHJUiB2 u0Jtt9JY856NP7QUbMBsx8+MOdaGk7nQmqAy0WkVRkMvHFAm0za5OlCCaDjqw1IjRBL3220B7GDb ZL11Yu7ddkjBbhWNMzjoYWAUTg9UtchMtf8AiOz/AOnf+Lfy+H3vo9P3OjU6/W0aK+fGiulZkrrS f//S5PZ3qPs8llChDEsWkHFUBA6jE+078MbBoKCc4gl7j3R1CXg3iezsolREjjVnI5Yo0XLLxZj5 f4mxelbiBMWShQFpWPzyK5na25y7qwDV0gUWvAAfXjFTWdUcMmO57fZXBDqVEkcYWlDkq09XicK6 QqZffg3utlcd+2CwtVnjnABy/wBWf2YVUIMatZet6GyrvG5vLuD6hOesPdTJ0iTTSGLqP0YqdwDN CY2IEiCbUzg9e5yp5bSBBzCo8z4Fw9sPKPsm0cmzHWyPeuFJLsIrRKUFTTM/0cMKkaAwFabSIsm7 g7SuJ1tZYr5xqNDI8Ma+itFTEUiuukJxECoMsvdF9tlu+3H3R5zJZxaCJHH4edAdAz+XByohOsGI tQ0iN96VkIh2KTlNPxJbgCg+TBHTLDzT3z0m7XS6Vh7cMo9oKLiT5PaGI2BRpIMte2aqO67iYpa9 vxxIKFXe1emfrZjnheQOyHnDtJlsnsdzl+Ht3a3VssV8dWmBFEak6wQQK+ONWMAETD1G8ppOS712 53MqRTxbdM0lu4kRdDMG8CKrX040uT2dk5+JKEg+ISGytNztrc+8wPC0jGR1KMKFs6cwGGQGkqys CdmyEy7TuRt3uLG9mtpJaM6I50MV4akPKfoxx+oyG8jsnr/hy2Y0ZeKkre77v3N1Su7RDcIlDBQr GKhK6Vag5eT0YrD1NTN4ysiWqFqeJ/HK7uE73l1H0oniUKoKFQpqo8KE40IRWczKxCmu2s+gth2G 2SwljE6mJLdTKErWBgilVp7VOpT2eZsXKKk67ZY2amPHRKWU4v7v+592C3FnpszHI4EkR6skgI0E lqE6hmaL6tWrC5CQoHas34LTlLUuXKvLVPKlvBb70n3JLCCKzvbSSS2ecmd4AKqAo09RKjTUkcfa xVXUEGlYcAex0dRkGOmNf/r83DJ7mWxt2ga4el4kJMc0SD8RjUFAGIKK2VGpq8+OkHVlo21fluzg rhyBi2EMcbsdzW3d3kbJ/wAuRXe8bbc7bFZwRmGWQqjPEqoD01ObVB5aVYV/mxRgyKTppNXXdFnx 1OQ3j8/E6fS4oKlpd+92gR4bgyqYbeSQ1HLWjaV9rh97U2M5Y8wE0nQTLi/xmxqMi2C9rPzfJZLu Me8iG13a7jF2iRm3knU5liOJKgNoHDhy82LyaENtHimfp1VkfEv6b1GTHc3lN1i+r727AEup5LwX FzavNGwEQEo4BhQBGpTw5GxQzVNaVr9mdNcKjFYGXGyVyNyz+56si8a+ubLfQ21wLC4BW3kFEeMl tIVmOaU83scuNWVyBY043S4wG5+I6A7+N93j9Xk8V03eCe526IxXheSHPoSssaxo9VyrzfZwgQNj BB31m1eos6lwy3Yc3C6b+8ohaNu88siWiJqWNdUkjg86c3IfZOfslfaw5yMtQBMS9LhtRsjbWO6o 4krb+GD3W5XF/Lbu7Na3KAB5AxAAkHErnp0n0DFN5NDsadDB0owhk/cxn2b24d7ei3vy5ju9litx Tr2umjKDm2ooxFfTxxc+YMfbScfquhbFhLEbrZJTe2jPbdw2RlDJ1w0VHqCQ6nOh9Ywq7ZyFoI63 lll7num9IiGXp6S1xg6rinpegH6Yja3h/DAB8MZxNhge5N01YcSONThhK3Ok5Pfbkb8300Kqr2zF wxrVlBplT5K546aqLZ57I1X+eH/40vP+mf5Z1m94/NNVa59LpaqfJrxK6Sum/P/T5Zt7RxdsTytp NzcSsAAaayhFFHqUY3bF+eco1OX2KI62W2uj+Y+a4uA+iSRVNWZUz4es5YvwigMx9UQSvzSs7d8P e8JpY7hLVLRgDV7l1HEUzRdTfoxlGFjOg3V4xpWssf8A0oSaQTblujaFABWJFWnCvO2X9DFnI7zM 56/yrLp8Ne2uytn7os5LKQS7mGdIpJJtcnNG4YBVIXh93CuigabY/T5cjPvDdlq7l3/siz3+a1vN rNxJqY7hKFPn0hk0jUFfVXmOMjKpOonTVmA0MX/40+G8Z0x9vl6eDRxfrZsSi90Nzd8Ktu8+1pra WW17fhCW+RSR4Y2ofsrQ1/hw67NIhGskbvXbYDSHaNuQjWBWVTmhy4R+3xTBpBWEN8RrzSoigtgu lyNPUcLo06fKfaqfL9hsGkEX7b8Tt4vYpmeGC3aN40CrDLKeY0etGyMfmbCjWMYtPxM77mmkht4I epHmyLCSyrXImrYGsOkC3Dvbv+8T3Jp+i07dMLFGkblgA9A3mGXtYmsmkunZG+7jvGxqN1m94vFu mVtSqDoBUgFVAHjh02xMg0jaYQ2N08ItIo7FAenIygDqNG0gUNXUSzg41ItV0Ov/AJzMzUMgn3S3 VKCFGCqjOQzgHUhJppZxk2leVpNPtYsGIntiFhKfuClNxuY2TRqYOFzqA4DDjn444XUimQz03RNX Esrm82UbRsQBTFE2yjNaLLu1tbpxmmSKgFTzsFyHz40YTMHVLpO0LH7reX0bLqCTNHGMuQqgoWHz ZjG0NHCG0anUfR8u79mD7lcWLQxWrVWOZ+kZI6EKQRoNDnwH82CxBU17dIVDplVgd7GvMbG3jv4/ tSCS3gjtIY5eobiPN0FVbSR49SgCD2QuBahQVBuWWpny8/IUZDjycC6uv2OBpPYX0Nux3Gakjo2c etXpG5GnSGrzahq+7iWA1fxSjK2QBenUWY6cZ86Vv3vJ4ZDuipcXEhtyPfYSLiCOOoUtKBmP/iai tF5fu4rbEa0G0b02YOsFiswrjdeXe/oPB7ts1n3vb7bb7eK7W4W8PNCY6P05VkHVq1VBoob2GVNW Kg6il22v1YTiyPlyBLGRk4KW81bd38P1YsW/cyJaWrPOj66RVYHmkz1aaUH3sOxHhNf/AFmrGpFT kAxsttz6cC4+JPV4Yfvt5eXcgjTp2XRNBZhuD0pV8hnQUXzKq43NmuUIKLSn2ZwsHSclmy7+Vcit +pS39zx+uO7fb9ukBFzbkXvu6SrIBTM0FUK11HXx+42KMnFXvlOHO3LCk1S61l9NsX++WN1GoklW G4gdlR5GIU0AOkLxpXjjR07oQSxidV0eXA4GIFlYe9Zf9m5ptYTiVSlreq1wwkrVAAGFKOKUIwLl C6Ndd96acuPIXLZcdvLZf/a8vlf1RjHdbfHfPZ3EEbyyRBhKeY66VJqTxoOX72FVVvt2VjHJl/x+ cDdY1rKp8EXXRe6vonuUVzEphM60Ak0Zg5ealdLUwrLR/aN2V9W4PTBRojnm2eTw/ale7xtIbZtu v4kCNBMNRHiKhv1HBJrOGQBFqMZt5u5AMus1KnwBpjm9Rxmen6TTGPmj0yokWfL6R68U1miVLu/d 1ttuuZA3OAUSnizZDFmJamZupe1TOTQTyRPUOQGycekHjXG8GcQzf3Fut7t1k6VOp1a8lKfX7OJS SvbP/9TmNrb2s/b8+5wL+GzGOziFSEQS0dhX2pGFW+7y42gbtZzGY8y2dB7at7667eju7IRvoMhZ WJAOqVqEU48MWl6AETMMFzkHspFe53ncqlk1iAf/AA1p+k1OKGztNSdHjHtlflh3Odz1pHk9bMW+ vFRYmaBjVdgku1PuG1bvabnAaz2kgkRT5TTip9TDLEhrLS+/R7xvk10dvZ7q8lBjt1USlqxhAlTT gRrWn8WIBGLQ6S23VNI/w+ABXUHhiQElQteaUU9P2dWHC+yKXg9sN+suqRa2w6zFn94ktG9gplqu K+Or97BGJuwGA5FmEn7gYhRdWUSg10B4SAdStWkcj8Cow4w5O6Kcq98lhsO4JJnZdyQtLUOsMMkg 5i5yAgk/2j8MEdO/dBz1km19tbneSXE9lf3c8nWIuntrefKUCjA0hio1DzLqwFwk9o/1jNlA7I0t /hjuzS9XTuWt8mZLZIiRxzMlyn1YYYB2ssTnHuMYN8OvcLRru+s9xNvCQ0spnsUZQxClgtLh/Hwb DL06k0uinO3dKT2rHfW/xb3bZjdSzQW7X1vbCZq+VgqMwFF1aVWrUxmxGjy5ySs6gLHdNKdG7RkU 8kgkoWUkAihYBaaeHNjdzE7RM1rd8Y7hHdOir0zIhqyiDSSlH1KM/a05Gnm04qQiOwMpXclrLabl BLJG6CaPQ2oAL1E8wSnsZ8mOd1y71R2zs/C33SvdE+4xrJbauHHL14wzrCcy3S4aw3eC6UkGCVJQ Rx5GBr+jF2KZc5prOv2m+RCR5Y5lnFwzOGA1SMJBpda+3y00n/WebGvYAZoW12YAMo0Zbjubu/cv p+7NrJdt3KeaS4UU67IioaBOWoQlTkwp/PizJQ7Nk5oyumld6wXXeLe8N3h/DANx3eIwj3+NhcW5 KLHQBnCmoZz4DPyrhlzKqai+hjp0OQ5iMTcpMiGz6u9Ao9/spGkmlhCqXUa9FVB05BiBkWoT/SxW Mys57EmjN8PyY8akNdkVbW3uPw7t3pmm3yRQzz310yuyVCxoGFHLArr8Uy/q4fF+4dbqiZ+ucnpk x2cuhu/DK/d90WkkjtBpis1alxAJNSyMG1GQLQaNdPZGMpQNUjZOnjcYaBjdlt3X4fobvlj7Yt97 ba6a5gnED9SQiNjl0XTOsgpyg05MbsGNAhJM4vxPNlyMuOmm7d6mb8sJ3XuKyvntpogoaSMWsS1X l1MM2Ymp/eZcV5ClLgdeGauhxZkJxsP00bmNd4rPL5vdkP8Aie32ZhGL9JtyNYhbisiNEByJU5Ze ytE0t9rExYKpUnUfdk67rseR7VX9N1+kmXzfW44mbvfY4r0ybizjqOfeZNVaVyOmg8y4qxMATpt8 U1dc4sWjDcoeV6oom+JfbcCFraOe4kCkKVqutiKVYeCjLg+FGMRcnxfJ2EU+5FkXxdvXk0SpIgAA MpClsgeWvoOL1yHT2TlZMimtBZfxW/llx2vuZkWKWON7iPp1iLy5NrNS1ACF/hwQO2ZMvWFltPs+ x4Zjeu4Lnc7ZrV4I41Qh+Ukt4045fowZkLVEi7cjllRnkU1arBvA1OeOXkNSZ6zCKKPmjOeR1qhF R7J9OElhnM/iFuJN7a7ehpWjzA+k5DGjEKCs5/UmpAlPdWV2B9k0xoU1Ew5VoaSf3ke5dHorrr/b V5tPHT9OHrKLdZ//1av2dtu32/aW3iaUdKWHqUeiikhLUzJ9OOljACCs4HUFmymnYZbO1u4e09pt JrJrpYIFVVhXS7DiScwD6cI7rQATT02N6ksOKY3Df+0pwdF9Ga+Gl/1rikkTXQxIL7t8TVS5Rs+A Vv2YQiPUwm72iCWL3iAgJTVnkKca58MPSJWBdj7ztEne+zWsTs8sl0qrRG01ofE0xFIrIRpOj+89 q9u9tdv3FzsVrd3G5QEvPIsSUaNNbF3dWqWrjqhGdmoeGYrlUCo2w+37t2191sLCx7etojewW9wH kUKyLcGlKRQv5ftMyrhDhIUktshDitAJFN3zdQXG6xy2cdpJZRXM9lbs0gaUQMBWqJ0mQrzckmpM EdMDTWtZDmpXSQXHeW/fl1hcW4R7m9neNYUSV3UJB1RSMzDVqz4lf3cFemWpB7JGzGgMktu6u4pp 9gjgjhQ9yR200M8MZKwyiUi7rq81Y8+by4h6dAG/4df5IBmY09XyaCRd195XFrvoF5dC9t1nFhFH EOMc6gEKsPHp1oeq2r7GLDhxgroLTxf6fPEGRyD3x7ZXG+3HZ3czX8l1PZIhbbJ76MRXDosYeTUt FOkSDlJXFLBRkWlK+K3hlgJKms5PC0tt/wC4Hcq5RyXVwQcvbi6g9eOaOObKG2dZvlsy8YghjkR1 YxJpI5yak5EfxYuUntrKyBNZomkV6WgJLaiSHHBQAag+rDKSIDEvc22QTdvy3iKqXVo/UCI7MCoy ZaEmjacZeqq607ps6J7HHqlcidbi00gVqOOOTPRCco79QQNKRmwRj6uBxdh2zL1fDM9u94y7b2VF czdR4IZRAqx01oWZmRlY5rp005T7WNwNBpOcmYVAYXW/c8kjl+IEUl8l+pnt5VZZDLGFDnkAOpaq rFjxbAZQdm2aE6srUEXp4LuL6Uw3xIS5uZ57zTIsoJUOpDEqRpK0rRq+H2V04lKadkI6oECm6y7n 0JiL4lqsIiYlwr9TVSjHOtBQUGk+XFuJlG0TJ1JLHdNBAt1+I09yVMQYkikhcgBvl8TicwV0ETW0 AmtID7ttt3t8O4bnur2rXDMogit+ooCmlah04/JivSMcjGQTT9vQxlIt5u5QoqgjtVQagMvNLUfR gUEIyt3xZbdw7nbiQJez81CApXTX1hg3DErJe3fBJb2d2Nwzs0znN3YsfpriViUkWq4mNTn66UxA CZKyVIpqZtSngMMEMF0nWMg1OdMWrjpELTp3Yu171LswdoNVoSWt5QynlJzWgPg2FbKoOsRujyPq o2x9Ns12dSn8HUNGs509dBil+pA2CaMPwpzxECXjtbYNkntfcTUzRR63ehRgtWGrUMmUM8fH+lhl GPIJfkbNhPsjHuj4a7jt9m12gZ7cLXTkSKD1fsxXl6cbVMswdeW0YU9U+Vu5bx7juS7mOYjl0KfU hp+rCqKCVu1WJnr+NVuXqdIYax+vDYzF6gaiAdXmpXlxZM1J/9YrsTYadmwWF/Ejz20cccnBgGCm tDjoOmgBnJwOCzEdrQPce0bPUdMQU+oYo5c13xava0SvTSPlwOXJfCrfYYopK6eGGCwFpVu8+4+q W2qzci3jNLiRT52Hsgj2R44V27IVEB+GKr/1F7e/84nj6jhcfEIzbDPpftzZds3Htzt+e8hEstnb H3c1IA6qGN8gaGq5Z46ORyrMB2mZFQEAnuirbZvhjd3aRwWZE1lbuYJJkmRejZEltDM1H6TYsYZQ NTxfjiLYf4fhmo7o+H8W2fntts4kG6TyWU69KKOQvTW4l6rKio+TcebB5OUm0nh3oL0ArTimYe/e 1rZ9tg27ZRHLuiJNYpohtxrkkMPMaUXysdftLgHpnNSTwyDKugA4pvvHxQg2e4mgfbQIrS9lsXZH 4GOJZNaqFGR1Zr9nEx9GWFa7RdI3UBeztpIX+Km4GG3nSC2t4Us7e9veu8pJ95kKaIAgJ5KczsuD /iDUa7Sq/R80n+R7O77UufcpE3a+6EZiSynI+QxEjGXFo4+eXPwmfLfxSMq9+X9zE7RyOLWdJFJU qXto2qGGanGLMKOZrxHdnU+0d1uX+He0uWuZLgrJquoh1ZNSOy8xJq2qv9HG3AKgTNm2mMBuF/Oo KS3sbwaC6vBlIHc0FK+zrVZM/YxdQeyVAmBb9e3A7fYRrLFPbzol1KVCGUPVWOXHjjNlEvxmUfYN 0S5jmVCV6cskBXxHTcrT9GOJlW1p6bpsl6CVf4iWTMjlE5CCoPyjBxHeg6kVSU/b4Uk7HvbNnUSe 8RtGD4lXUmn8LNjpLjJFJwyaNFN3ZzN5KUCqMxTJRT9WHbD3SB9KQE7fdOoGkCmYNcLyjDcJr+VX IzLL+nE5JkvmrbdcLVtS09GeAcRkvkzvdtt0dkSCkbmRaAVqRTjTVT1eXAsNIaiDLY3DAZUxBiaS 4SYbdKxBkepAAp6hkBhxhPbFOSTJZxJmFqfScWDEBFLmSdKhpTDWwVmTGNBHqwSNJAZmIBhX6cEH SCXPsDu642m6XbZZKbbdSAkNwSQ8uoegH2sUdRiqKjbNfS5rTQ7DOsXAJeNAmbZsPEVxyyZ2wII9 7dWE0N3ZuVu7Vw6EUzWvMp8CHHFcBWtNYMuO9SJe5v8A3D9rPsdzbzQTrvfTZGtJE0oSy5MrN7GW OiuQGcBsDIdZ8l7jPsJvriRIrmXXI7VEkaLmxOXI5pnliNSFKyz23cXb8G1xTz7braMBWPu9vM3N wJllPNX/AHS4CZFGlNY2XC1LidJj/qLtFOn+XS9H7Oixp/J7vT+lizmCZ+XP/9dTJb94WZcW+6So GPMEIUGnqpjSxczEgVdggrSd3sR1NzncHjn/AJsAXRyRCLK03yWUGfcLgpXMa6fVhwDEJnu8O5Dt 1oLC2f8Avsq/iPXNEPjX7bYDtSRROaSPnnimWCOvhjJI/wASu3SuUa3qfPkcPj4pG2GfVfZLf8p7 Qf8Aw6frxuz8Z+eZcfCIrTsLtrb9nu7SSboy34ljm3NiiT9OZjI8aFqqo0imQ8uLD1DFge7wxBhU CkGtuzuw4UeaO7aeyguIbqWB5hPEJen00Lgh2KyKRyk83LgnPkPz0tg5S/wmq9v/AA1EUVo8hmEV usESvJIWWKS41IVIAK/jtRHHlX7uDzcu35bJOWlKTbbrjs29vbmV9saVWu/wLttcyzSSr7s0rajy 1p021f6WEJyDTZ8ro1qH2x7a7V2jdTtYLtts77NpgSN4kbpq66gErqOjP+bCF3GtTvQ2KdKcMa7n Gr7TewgcrW0qAeoxkYrTiHzx22GfLPxMRz3FBMq6hPt23yE1oc7VBx/hxn6kUyH55fgNUE6J8Kty vLbsWIwWpuZ4biSExK1CF1FweBr5sW4dRrEy7ZDvM2y9SRLu5njl6zrpS5ZWjBfW5FEOtQxZfurj TzwO0QL0mRhoGjre9wuty7d3HqWxjgSES21xq1K6jMMPlA1DGZqU0MIBBoROK9qXbJ3FvVr1Boa8 eeEVBJVyScq19GOZ1S9s7Pw9+yXzfrLaDsr3F/LphjWr+NWPBR6WPhinFjLEAbZuzZAoN2ycVWO3 EzwWwYQK7O+o1NSclJx3USgpPOM1TWenICnx/acMRBWRlcuAwsImjRk8chiSQOfmYKOAwpEIm6iP QmWeIJJqVanhT0jBgrPUzwZJhhTEkkchoy+vAO2GbDDRZomTsvzjCDbSEzYsRQ/Pg1knXewO8It0 2k7fdke/2S0Rz5pI+Cn1svlOOb1GIKajYZ2eizXCh2iH3t00LFHZWY+APH/9MZCJvrSc6+IG5alg jUhZ3LayKVCAUoPlrjR047ZzOufslU2uGCe56UoqCCR8oxqGs5jEieuUjikkhpyoxBUs1Mj6MNaO 6EMx7ZFS346FpX14lBBrP//QWTd9yTN/6Oy+szD/ALGNIyeyZCk9a9w3lzKFTbVUE+ZpTl/Qw4Ym JQQnuHfbfZ9v6tAbuYEW8PhXxY/dXEZqSATlF7d3NxPJPPMXllYs7niScZzLQIIRPKaLzL7VfHAM YS7fCXb3k742uZwI/d7iN1AHmrUU44uxDWI50n0p2Q3/AChtB/8ADL9Zxtz8Z+eZcXCPmizuvuXY kufy+/gnkaCUKDFpA1zwsqmp+7J/Ph8WJqVEV3XYYsst52W1tb6O1264cSLGbhXlGpzFIiDTpXiN epsOyMSKmKGUSaCHbbmR3i2ZJHhEkep5ZWqIzLIqggAeeFf3WkwCSO2EU7oyFt7tLZpFssXuLrBN c6Ekd0mlZnIQe1oYVY09rmxXWtddY1AOyb2F53IbmKf8rEElw9v+Y/hKhI5+s2stzafw9PmbmbEY L3+7ICe6WiWjxun2lYfSKYoEsnyf8WNzubHeNnESKyHaLMyV8xCB4/6mK+qI5pBlmGoQQntvu7eN qsyu3SL0LgiXQ61AYilRQjwxSGIlxUGTT9wb3cPra8lTU7OY4iY0rIdTeXjVvtYBJl65SOxf9Js/ dG+JZR2IuSLQBYOnpX+z8umtCeGCplTmpJO2c8udwNh8U5JK6Y55o0fOgpNGo+s4qzrWsv6VrWBl k7+3+WadLCJj0rYAsn2pnH9VcXdFjtW7tMbr8tz29iyjT3nQj6ERq/GRvSx441FqaCY5JGT0lDGp OZPrwRsgpCUB0VOGpJWDzzUFBgEyQblALnCwz0XOgKjx4nAEhmCCtQMGCeD1GDJMOeGJJSRTV0A/ ZOEaETZWyGGEE0mbSyP66H58KxpQwiY6nFTiXSUk+1bpcbZuEV5AxV4zn61OTD5xinItRSXYshRg ROnLei9jjMbLrYD3cnjRuJ+jHOCEmk7D5gBU7Ih+Lmyw2FrsFzCK9SKaGeTxaRWWSp/+YRjcUtAE 4xylySZQ9ulMd7E/hqofnyxF2ytxpC95mjivTqBJcBqD6MMSBAgJEA9+h+y3oplhbhHtM//RWnc+ 2Hk0JN1Wbwjjkb9OnGyomGhhNzLYbXZyX03LCoqB7TE+VQPScE0EE5fvO8XW5Xsl1cHNskQcEUcF HyYzsay1RFhcs2nSzekrhYwjG3miiQA27j0EkeiuISBDSsvfwt0ydz7dcINI95jQr8oY4vwGsryC k712M3/J+0f+XA/pHG3Pxn55lxcA+aODBbGQyGJDI1NTlVJNOFTTwxVUx6CVu6tu9HnmFswjh13G hg0K8lPwdHLqHhXVzebFwKSvemu4bL3jPVbfc3tg4NWMrEqSykU5c8h/lqwVdBtFZCG7DIh27vpQ Jc7wpISVHDTOdfVRVUt5TyMtcDmL2CG1u+Wi3vbRIERrqJniVUkZXHmoF4VNNRI/mxSRLBCLa6t7 hBJBIssZOnWhqtQaHMYBFJAZ8m/G6N03PYpAKH8vaIfLFeTr9WF6xQWhwOVFYg7a3i2W1FrOdEiG iDM1B8BTGINTbNmhFy7PuyzxywMdCupcCpUEEj5uOGrBIr5kS2aQ5COjMfUDXBrTWG2ugnO+7pJh vv5mYwsyGCUpmeWgMZYfItDiosSde2XWgCo8MI3vcnn3K7uAarM+uI+kOAwP8pxsxGiiU5dWJiuN aAyvmR5flwwHbK6w20KlF1mgGeeLFgklxepTShy9OCWkpA+pqOeeErDI5XBNBgGGE2zKIfWMMIJq WB1YlZJGJF4YEk0Z88SSYJJUjxplgHZJNEfIVwAYTN5BrjYePEfNhmFRANshOaBvHgcVHUVjTQnK viMKYZ1HZbSO22S1lZR1zHGzsc6UoRT0ZYZMYGvbMebqHY0PCId8V4xddhW9wBU2d5Ga+hZVZT/U wMo0l+EzjatQgjwz+jFQlphu9jX0JhnqBB+sYLxcZiqmddOdeOEls//SU21hbWgad2VYoxqaTLSF HjXG2lJglH7n7kk3a5ASqWcNRBH9bn7xxSzVlirEBkUsAW0g+quXzYSPGdtLt0Meo6yBxOg8fnxK iSkImurWaJViVhQ1qwAyCnCOwpGVTWW74Uv/AMwbePTfRf6DY0dNslead57HqezNrUNQm3oGHgdT CuN+fjPzzLj4R80TBO6Le4i9/wB5t1kjUNPA1wFz5SRQL5W8D/2sPudgiC7tMzf7feG1e5ud8jhV rnQsokmKKZJRIkWR4qpov8Ps4isK6LIQe+T2ybftdvtV/PftPHC08on6UrtKjDy+hdNeWq/u4U1Y kUhGlCTFSR9qSPLFHe3M2iTrSCOIKQU606glmGXTcrSnNoXFhv7vlpFoO+GmPY7CC06U10/vcTXM EX4CkLHLG5ViR5uoNXte393C7xrGoBLpYWcVjD0I2dl1s9XNTV21ECgGWMzGstApPmD46IBdbO9P J+Yw/wDy7+T/ALWF6vi/gP8AulFdJyXruWBQUIbTx4DHNbWdDGoQU7xGm33N5DIJrZiGGUjjM08R zccV3UMUNJp94uLi2ENw8krpIzFw1DpI8hUZYJau2XK9IJPa2lyzyW5bQYxHJE5/TqoorXhgFqdk UORBYoJZVjRn1rEojU+peAx00TSAtWEvZJoFTQDwxaVigyCSNTlWgHDC0hkfSXxOJSSeIQcMSSaI gZjXgOOABJNmmClgvAcMCsMwjqSanM4lZJ6i+nBkmrDPjiESCZGWdcSCRspU+o4QrSGslThx44sE E0C6WKHgcKBTSEma6BqocC2Ss6VtF7HNssGrzGJVI/dGn9WITMTJrH26Rjc/h3ukXFlthOo9cJD/ AFIcBxVZox7ZwxMq4zLNEOnYyWCelafsw7HSVLxQToNWmr5vXim6W1n/0+d929yCcfltm391iP4z j22HgPuLjS7dkxqsqbSLUBmC1NKnhiuPSMbX8qiTXJMGp5mCsf1YIpJQwi7uLCWzMdtVnJUhqUAA PrwrkUjKp7ZHAjBV9YNfoOKTHlx+FrFe5duQ8RfREfOhxr6bZKs0772Gf+Ttp/3H9dsb8/GZkxcI lX33cu0Ze4Zri5gvGvpdVlpRkWNvdypJXjn5cXor20FKbZU5Wsktt52O/wBthtxZ3M9pPcwy0mlC usipysdKjSvIA33sKUYHb2Q3KRG1lPY3dpttg9gj2dzbyywIZJJCuekpUquWbc1f3fZxWwIJNdax hQgCLLa8vWheW27ZhRpI+q1IpDrdVddOdPY5Bq+3iwgbC0UHtAjexbuCae2ilsIoLdFnR293H4YT OEJqI5W9R9rFbW98cV7o/wBplvX223e+UpdlT1lIANQT4LkKjFTUrpLFrSfOPx4RALEllQx7nu0N WqBnJFJxoft4q600t90RcSXV+ecW12gLF1LFc9KnKvhjnGs20MlXcZDGsasIkrXTQVJr4nC2wWxl tNrFfXDqs3QZBrLla51AxW5tEfHjLGkjC8ksQkpCzFpKeU0Pr+nBrSITrTug1JYiWjY6fVjqiogm pupz41wbjDSYV5SSSMziAmSYd6ceOITJIWkAxWXhpMdc0oBSuAckNs1UmufjhRCZsla1wVgMlUZY tEWewZJ4HErJMEkih4YBknlBHhiCSSadSgjjhtsE1daEH04BknU+wexl3rtqG9N9JDWSSMxLwGhv 8+FtrKm2y3W/b0e2B9n6xmgubd4w78aSAg1+SpwaaUkG0GfPn5JvUcrxNZTkoStRG54GnoxlCmaC whcWz7u1s8Zsbj1Vif8AZh7TSVki6sj/ACLfenp9xuPRXpPw+jFfKMe4T//U4i+LpmkK/wBsPnwp hEOvP/Tbj9z9eJGXaIPtf/dkwplhjiHgnyH6sJBLZ8NP/wAs23/zkP8AoNjX0+yUZZ3vsP8A/D9p /wBz/XbG7PxmZcfCJXoP/V5v/uN59UeLTs/gJR2/Wln2n+2P7q/W2KWlyxyn9n8wxXLBMy+cfLgR pkYkkwcSCfM//uF/7gP/AL5uH/07fC9bsX3Yem2n55xCLzSfJjnGbDMxf9yb5W+oYHbAdsf9s/2l 1+5/XGM+fsluDiMik8s3yNhxMfbIoPK3ynHXGyWQY/2h+XA7YBCE8hw0PZBJfNipoRIDikxplPDD CSZf9WC0gm0fhgrAZNiyLNT5sSSZGDJMYkk28DiSCZj4nDLFM2k4r8+AZBsnd/gz/wDhMX/mZvrG JK22x5vf/qlv/u2+o4EJ2RV7WDFkg4H5MSSe/wD6uDFn/9k= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/core/includes/phpThumb/phpThumb.php?src=/Hawaii-Business/August-2003/82003cover.jpg&w=210&q=100 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gOTkK/9sAQwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQECAgEBAgEBAQICAgICAgICAgECAgICAgICAgIC/9sAQwEBAQEBAQEBAQEBAgEBAQIC AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC/8AAEQgAwgCR AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 3r79pn4Ef25dW9x+0F4D/wCQ8ftQ/wCE29NUzwPTFfamqfF7/gnWfEWmQeF/2nvhPqo3aXoeq6Fr PxqbT/DwOpH4jXa+L7TxJq+o6b/xKLQr4R/tHTf7S52nH/ISrmfA/wCyZ+zXrn/Bu743/aJuv2eP hRqXx+T4L/tFavbfF0/Dzw3f/FEa54c+OfxH0XRdZXxe2l/2i2r2Oj6RCF+YbRBxgAisrVf2U/2Y tP8A+Db4/tEy/s9fBy1+PMfwK0+9X4yXPw58M2fxPbUT8d4/D6a5J4vGlf2iup/2Typ3k4Ixw3H4 3h8kxGG+KrQm6uDljfevK1Om1dK3WXPv5Xtof2ZmXh/4SYbE5phqmb8U3ybi+HCFSVOWQRU8VUli 4rFw5aUefDL6lJtt2XtIpS/m6fSvi/8AsKCDwx9p/aT/AGetT0+517TLLxTrx+NWradr41A6n4LI /sjwfe6jx4DvAfF/2z/oG5/5CVfhV8a/G/wUuP2+vjZqPifVfAvjP4IXnh7xsdBudE+I3ijUPh/q PiOw+BbXXw2XSPEvw48aXfH/AAtDRvDWn5GsHk7fXEml/wDBGj/gp3q/w2Hxb0/9jj4gHwjd6IdY tdKvfEPgfT/ib/Z+3ft/4VPe+MP+EiDlSMaYdMGpH0zxXivjT/gnx+2j8PfBHwW+I3jH4Ca7pngr 9pDx14I8A/BTVW8ReBb288bePPihpj6v4A8JLpek+I/7T8Oatqa6ex/4mipjaQSCADwyw+Kc6UoZ bOly6+7RqQ5r2354x0vs1e1/S/8AXfhF4WeCfhnnufY/IvG7D8Q43OMDickq0aua5SpUaladHFOe Gnhp0akcXFYJxpXnCUeeUpKPLyz9k1bW/wBhLwtpWg6zcf2/48uLrwJgeDvBfjb4oHX9SN/pfgv7 JrHiS98R+ItNHgT4k/8ACXn4j/2l/wAhLTf7NOm/8SGuT+EB/Zsb4V+Bz8XNb0H/AITTxT4Q+PR1 bX7H4qeOtP8AEHgXX9OHhwfDXxH478DYNpq2rbj4kGj6Ho5BkwGb/iZnAzz/AMEv/wBvZfj3d/st zfs93tt8ftM+FH/C8dR8An4jfB5HsPg+PFP/AAh3/CenxcfGP9jKf+EmBstv9p79wwV646v4af8A BID/AIKVfF74caZ8WvAH7KPi/VvAWp2P9r6Fdar4x+GfhPX/ABDohhFwup6D4S8X+MrPVtR0m8jK tp+60H9oqwYblK5tUcwlUhOGUObpXUl9Xqu01yucfcjP4dNXa99Foz9grZ74WYPLKSxPjXg6axM8 PXWKnxFhOaUa1DGUcP7OUa1KFGhiPa1J80acvb+wStDkuVFP7KA+Lvhq3tvFHhK7+HNr+y/r3ijx 1pF78VfiboNhqfxe05PE/wDwjvh7wH4pblPilqGjnwFlNRz4asNXOpE8oNMPZWup/sKW1x4D0nU9 b0+4sNW1H9mD/hY3iay+I/xivdQ8N6Br/j74i2fx6u9IRdRFmniP/hVuj/Di71LjFnrPiIjTPu4H 3D+wF8OvB1v/AME2v23rX4h/8EzPEnxw+KPgTxX+014Yvf2ite8Efs9Sal+z74g8JfB/w4snhzxK fi78SNL8ZeGtY8I+II7nWbwaXosgVpFK7tTjaJ/0I8CfAj4AfET9o7/gkJ4G8R/8EyvCnwK8I+ON D+NCePtc+I3w2/ZgvfCv7Sa2P7F+qeKNIL2vw68ca9f+KQviNIdeH/CT2I2yQGRs6kcJ6mEy2vi4 UKlGph6Pt405tTw+IVuepCnZP2dny83M31slonzL8X4w8Zcj4ZzPiHBz/tzH4bhb2lD2+D4jyiP1 ulhMDVx/1mFB4uviZRrwhCnKPs/aVITkoRnyy5f53fCOk/sXa38ZvFWl658cfEHgv4Gn9mzwO3gz xT4obx5qHi4/tFeL/hf4N0j7X4i0Xwgt3uPh34qax4i1nV7ZWGj48NkfMDkd/pWl/wDBPG/h8MJr XxW8eaBc+JNA03wX4zex8R+PL4fCj4g2Gn/s92g+KOkK2hE/Ef4Yatq158XdROj4XVtO/wCJiRz/ AGHj+qVdC/4JYaj/AMFItU/4JqH/AIJh/CO58Z2fw3svH158V9I+CPwubwNYadf+GX8WIupGzsk1 Lw4pCrZrebCDqLqm5Swev5yP27v+CS3xT0b9sf8AbD8LfsP/AAhvvHP7PXwCXwX4n8YmP4ieA7BP hbqni74aaV8WvEfglU8e+KrXU9RhsfD0sV7ZAvIU06dELOxyViclzDB06lSH1XM/Z1VSlGjCpzxq faSjNK9tL2b31tY5uC/HzgzjfiDLMsz7O+IvDXDZplUMdgcXmeKymngMRhYTqUVWr16FNclevVjO MeeDc3RappzcadTwnwdbf8E/7jVvC58UeOfF3m/298AfC+rad/wm3jz/AIR5bDxl4WHib4u/EbWf EmYTnwvq3g/W9CGm9x8XNO/6A5qp4VuP2JvsOg23ijVBqnjg/GjxJZeKNBsviP4o8PeDx8L9Q/4W HZ+G9YsvHh8Z3mm6x/Zv2PwJ/wASjP8A3NXJrw6+/wCCfn7aGn/APwN+06fgL4quPgn8TB8OrP4e +MdH8SeAtfvvGV98XPEuleH/AId6T4c8C6R4jm8Sf2vq/iDXre0/5Bn/AC15xxu7z44/8Eo/+Chv 7O3wh1b41/F39mfxZ4X+GWj2S6z4i12z8R+BPF+o+CtOKq39seLfDXhDxnqOo+HdIw3+lt9k26eD kstcE4432cq08pcaNOkqzl7Fv3JfA7c32rS9LLfc/damP8OnjfqtXxspQxWY4p4SnS/t3LVOOIoq Kq4aioODdROUZYmhJy5pyjy1KcYqC9D8LaD+wbpMHwtv/Gn7Q1p4omg8c/Fm0+MWl+GdM+OzlvCP ivUdRsvgv4l8M6Vda9ph2eG9J8OSHUtMGrnUlXx2AxYqCfJr3U/2Trn4ifCfRdK1TxDoHgO40H41 Xfxe8S3fxE8deIdObxBYP8RfDnwi0fQH+wQXo8Oj/hEPhxrw+Vif+FkBSQFxX6+/8FKf2V9W+PPh n9h74Qfsmf8ABLe+/Zk+L/j3XPGV5ZTnTf2Tfh8nx207w98DZfEOr2X/AAknw4+KV6xFoudYx4lO mjdEdmNRwg/L4/8ABHj/AIKdDTvibqVz+yJ48tbT4Pq7eLkvPEXgWxJGmeGB4jZvA+3xp/xc5BpF 5jPhz+0hvIT/AJCZArbEYDGQrSpUMN9YpQtarRoYhRl83SfNZKzfrrrc+N4I8QvD/OsqrZvxL4nr hPMsRVxeH+o5vxJw+6sIJ4mhHE0Vl05U4pzxE44Z1akqtN4PCe5H2N6k18v7G/2HxPNba5YaD9p8 BfBbxPpgsvix478Yal4JYapfn4reBPsll4i/4rzx3q6rpBOu6dn+xuv/AAio5zzPxL0/9l/w/wDD T4hwfDjx1oXin4n6adNbS9UPxH8e6hpzJf8AinxpeMfAX9sanpn9sXX/AAga/DnJ/s7Uf+Jkp5GO MP8AZy/4Jjft5/tb+AP+Fr/AD9nfxD46+G9018uh+K9W1/wN4F0TxALN5Iw/hdPiL4h04+J4d8Ui iSwAj3IVLA8V598HP2FP2vvj/wDF7x18BPhL+zx48134rfDG+Nn8T/CurrpnhST4c6gAx2+OPEHi zUtO0/w9JN5b/ZF+1htSA3KGBrk/2p+wUcsb+uXjQ/cP95NW91WlputVe3Y+8w+O4EweLx0JeLtF /wCqsqOIzGjUznAVPq8aVTDwX12NavU9hRcklPlf2ru/Ij1X9nL4LRfHe2+JeneDP+LhfF7wf4W+ C/jLwv8AATT/ABDrNp8QfjX4DstH1G9/aWj+DSjU8eIPjNo7x6Pef2IANT/syXWv7G02RlWMdL8V Phf8F7f4cnx/4QHjDwt4K1P9mvxJ8W/B3iW88ReKNf1HUviAv7WnxF+Ffwu8H61aXmo/KdX+HHho f2lxxzqRxjnD8ZfshftU/srePPCHwD+LP7N/xj8B/tKfEb4k+B/HX7PXjD4bX+leLPEl/qHgBL1t a0b4Yaj4D8QTaf4k1oaz4l8NXvGoB/DYUOyrur9CP2w/gh+2v8DvCHi39pv43fsaeNvBuga1+zX8 a/gX411Sy8R/DPxl4S8OeI/2jPjr8Q/H+seNvFv/AArTxlqV54c0nT4vicjWX23TgD4oZG3KrKT1 UKFf2OMoToVoVaEVGonSqS5YzvefuRk/d5fhduZNWasz4TibjDCf27w1jOHeP8uxeUZ/jqTwFOnn WW4eOMoYWh7CvQoyniJUsZRxNelRhTxE8PHEYHFPEe1hiIexhD8rv7d13/oO6/8A+DPVKKy/sJ/6 f/0orlP1v2VH/oHpf+Aen97y/E/tI/YP+P8Aqn7J3/Bv5oH7Rmg+GrLxhq3wd8BftG+NtK8NavqZ 0+y199N/aN+K2LW6vrNSUzycqM/IfXn2D4h/Er4sf8FJP+CNujfELwbofhT4XfGr9o//AIVFH4Qt JdSbX/Cvg3xhF+054M0fR9b+3X2m7p4rP+xE1ElrQ7XjIAyOP5p/Dnx7/b0sf2M9T/4J/D4da9H8 HNe0L4i+C9f03RvhV4K1Dxg/h/xh8StU8W33/CPeObj4yWavqg/tnWsK2jHaZAwBILjs/Cn7QH/B TjwB+y5oX7Inw38CeNfBvwi+Hv8Awhj/AA88VWnwj+GupfGDStS8IeOtL+Jtrq154jPxzOmho/G2 mRfd0wjaBuO7cK/SqGE4lovDYTE8NZqsDSwDpVqX9nYtf7TLlVuadKF+ZKS0Tt1Suf5XcScOeG+f 5zxnxXkfjV4dy4jzbjivnGX4ufGOUVsPSyapisbinSxEIV5Q9tGvVwtaVGa/eRi4RnGzcv6Rf2cD ZfDn/godafAr4qftMftdftLftXaV+w/H4o8X+I/FWh+Bvh7+yvZfDm++Mken2GpW3ww+HGn6bAnx km8RDyl1SWLV5Tolu0Umt7i1vH2fwT1D4V/tgfC/4kXPxc0uy0y0/YF/4KSfH6+0mWBfsen6T4i/ Zm+MXi7xB8P/ABGYw2FgTwH4r0tpFB6uxHWvwFm/4Ki/8F+9QuNN1PSfgL8LLTTdMtb23uFX4X2S p4hEZXbquvrd/FaeaK5ARcLpbImAcqcnPw74U/ap/wCCsnw60b9rbw/ofwj8IaXo/wC2/wCLviH8 QPi3C3hzT3Om+LfiZ4ZHhLxbrHw1z4/J8PNc6QAw8z+1MSIsi/MAR10lnLqQhR4SznE03KpKa/sr HR+Ll5Vf2M29E1frv5L5TEcDcN4uljMbmvjz4aZLxF7LBwwVb/XzhnD0niFjP9qlh6NGWEo4Wj9X rynDD04TjD2XLzvnUof1M/teeM/h6P2UviJ/wVB+BFtHqfxa/aK/Yk+Fn7OfwV1TWDZWOntpf7R3 j+yPwRGr7x+6+x/En43217qI3MMB1XIUk53wK8Kax+z1+2L+yT8Af2i/2qf2qv2mf2mrz9nf4x65 oFxpfh/wB8Nf2V9F8DaZJ4L0XxK/jzwh4S0iwvfEPiIanp9tH4fvNQfWGjMTB/7OBj3/AMqPiLxh /wAFZPix+yR8HP2Lz8G47b4PfAjWvBniLwDrHhnTNO0/4gpffDJ7y88DjVfEZ8fkJHYXdwhIWzUk xIWyY1Ffdusf8FT/APgvvobeGLbVvg58KdMvPC9kv9q6kvws8O/b/Gy3mnFgPFav8RCsI63eNAXR x8oDKVAAiEc+rVoV5cI53GrClT0WV46cPavm9tzwo8qlqqfLz7a2W53Yzw/4UyfJsXhsD4++GePw 2Jx2Y0fb1+OOGcPXjl7w31bKKqxdepWrUeb6zjp4rDUJQ9t7OlCrVlanOH7Zatbw2v7O3/BwnbW0 IgjPxH/aPus23DNd33/BNT9nVpWUDo+4qcdMmqHiX/k4X/g3g/7FH49/+u8dYr8A5v2p/wDgtfqH gD9qDTz+zR8Om8I/tgX/AIk1r4zXNp4R09me/wDFvwb8G/AfVm8NSH4pk6ST4A8CeGB+8Ev7xPMY 9AvCa5+29/wV1tvFn7LnifWfgb8NtN1/9jKx8R2fwaKeDmWwFj4u+EH/AAqXV28YlvifnWGHhB5N pUIRI/mA8YOlKlnU5xjDhDO6nflyjGu1sQq2v7pb7L5y8jOvwbwvhcrUsX49eGWDw1aNKjCrV494 fpwk1w7PKFJueKjbmxLvZXstHq7n9Sd5+17+2Pa/8FZh+yPpX7Kja1+yLcfDjSfEuq/tH2ngjx9p 7+HdaHgTX/EUi6p8Sbxz4b1jZ4ki0bR00mNV1GM+IhMxZVdW8z+Ev7OXg39mub/gsr4D+G2vXviT TPHOiN8dJdM1fxDqXjHxf4c8ZfGD4EeM7vxH4b1rV9ZluNR1ON9Y0Qalpq3byMth4nRQ7gFj+F9t /wAFj/8Aguf4gYWGj/DD4MpqFyxtre5s/hVYi/sHJ5AXVfiGYDnn7wI/r5d+y/8AHD/guf8As4eL fjj478H/AAfi+K3i79o3W9M8WfEjW/jHpXhjXrq98UeHtLt/DOi+INEj8M/EDRf7Bhs/DcWjaeum qG0ddPt0AjUqrhKhn9Gs8TiOEM+k1ObhOplWOXsoNK0Ir2HvrTV3T/A8inwZwzjeH8Rg8m+kL4SZ dTeW4XA4ilgvELI66z7EUsy+u06+IqSxjpUq1OPK1rCnyYWEYwc51ai/d39nr4jePvgr/wAEVv8A gnZ8UPA3wG8U/tBeIvBej/so65c/Cjwj4fvvEXje/wDDeseINL0nWvEPhHRo1L/21YeH9ak1SzZi Ix9mBcop31m/F3whpn7fXhL9u/X/ANh79rP9or9nj9qCTwNZ/Dj9qD9l/wCMumC88Babr+neAde0 jSvAvir4b/Fjw/qcHwxl8ReG9Pk04+LPhvrI0p0LarjX2U+Z+M/xC/bQ/wCDgn4g+CPDfwv8Q+Ao dO17wj4r8G+PLH4neGvDPgbw98S5te8J+KP+Ei0ltcjs/GI0CbRb1ALPUdOfRf7Pu9NZl2hSd23+ 0V+2Z/wXy+NHwP8AHPws8d/AXwt8MPB3xA8P6t4L8beOvhl4R8O6F4+8Q6FqmnPaaxpq69f/ABV1 KPSpbvSHaz36dYrJtZkWRAxrkVDOHToYdcL53LDxo06VKP8AY+NpzqTimk6dT2cvZyd19mdkvNnv f6p5L/amZ55hPGXwrpZ/jszxWJqVanHuQYzD4WlXxNKuqOY4TFqrg8ZhYqM1dUMLPnUainFRcJf0 B/FMD/hrH/ghL5EP2e3Nr+0oPI4+TP7CniLanB/hyB+FQfsYfFH4meL/APgpJ/wW08C+LvHfjbxD 4G+Dvi39jrSPhX4Q1bX76/0H4b6f4x/Zjm8VeJo/BWlkf8SBdT8RXDX93swDMRJ13sf50fEv7Vf/ AAWy1HW/2cfjNrH7M3w7tx+yRp/jS++E2qWPhLT4tFSw8YfDV/hPrJ8SW6fFUtqwHhKWXaUaMqzg gAALXmnwv/bt/wCCtHwa+MX7UH7UXhH4M/DkeNP2q7z4VeJPjDfaz4QfUPCaj4Q+BV+HXgxPCOkj 4gq2kxnw8kXmBmk8wpk9AB30KGf1KsatLg7PKi9tSuoZTjpWtTUEpWo9XDtv6a+DW4C4Thg8dgsz +kB4V/XcTktSjQ9tx9w9D31xFh8wjioqeJjaj9U9tequZx2atNM/pH/a98afsg/s0/AT/gmvq3iD 4h/tVfC34R+CfHfwjuv2etD/AGONPkHhP4k+KdO8ANe+APhx8T9J8N+HLtvF3g3XvDY1ULo0ZT+2 CJsFiWLef6v+3H8LPCHxy/bG1Xx3+xB+2X8Kf2bfiv8ABrwTc/tJftSz/Aj4pfDPVPCnjTwzo3jj 4Z+Mp/HD6UF1yTQNP+EFt8OTo/inwSNR8oRs6qFiGr1/Pd+xx/wUL/4K8fsv/BnQ/gV8H/ht4S+J nw58JBbLwTB8V/BX9v6l8OrGNTcxeHfD2s2PxD0c/wBj2S7Rpx1LccLgDGAMP4Gftuf8FlPhJ8dP jB8ZtDXUPif40+OOp6Xq/wATPBXxWsPD+ueAtRvvD+mppWgR+HfCOi6/pY8Dx2HhuKLT/L0h1VhC BIrkDEqjxTipqeF4SzmKgoc9KnkeLn7KMb3lKc6DUk7+6oxg0ou7elvTp8A+GGW4Gphs+8dvDPHQ /wBpeBx9bxMybBwzCVedJ0aNLDxVecayVOU5OvicXTnV9jN0kqTVT92PiF4F+M37MvxJ/wCCa37X PwG+IH7Qv/BSb9kHT77UfBvw4+D1/wCG/C/xE+Pfw+0T42/Bnxouh/GnwP8AFe30DR9T8eaIfCAF jdjxffZ02w4fVlSXzdN0P2lfAmk/tofs3/8ABRD4pfsDftk/Hf4aeMtV0zxz4f8A2tP2X/jNpq6l 8PT4p8BfC2607x/8Ibrwp8bPCk+p/AHVtY8Pxx6fqOpeEtYXw+TCGVHjWSRfxL+MH7Rf/Bcf4+/G f4OfHW48E6n4I8T/AAB1DWr34W+GvhTofgvQfAfh2+8TaU2i+IU1fw7rnjXVW8VR6h4baTTRHqre WiSlIhGea9n/AGx/2x/+CxX7QnwM+JnwX8VfDe++Hvw18eada+GPGeq/D74VeG/h/wCL/GfhLxIj 6L4u8PeLPEk3xz8Qf2KLzSG+wgaQqnUYneJTErnGVPA57N4nDQ4Uz+NOfK1SlleZQ96zUnQqRh7S mpPlTjOVVJKPK171++tkfDipZJmn/Eb/AApecYapiIyxVTjPhurhqGEeOeIp0c6w06EcqzZzbnV9 vTpUq9Wcr4ifLQoRP5+/+Ex8Lf8APrf/APjtFfY//DIPx/8A+iI335+GP/ljRXxf+pXHf/RLZp/4 bcd5f9Q/9fM/vpfSI8CdP+Ol+Av/ABIsj8v+pofr5pX/ACMlz/2ENS/9Ole8WM/+g3XGP89OteDw QT6P4juv7Q/5/wA/6Tzn/P8AhXqH9q/Z9K1TUP8Aj6+mOp4r/QzPczweEp4vNMTU9jluFjOdSs/g hCFOc25dvhsl1u30s/8Ak/4JyTMq2Fw2RrCzhm9WvOEMPJWqynPltFR+T1u+h63oP/It3X/XhqX8 zXyTrvW1/wCvL+tcJ4O+Ff8Aw1B/wmXxQ+MGva9qnwX0HXvG3gv4N/BvRfEmqeH/AA/4j1D4f6p/ wjfjH4wfEj/hG9Rs7zxJ/wAVj/bFn4b0f/kG1V0r4c+B/A9/a/8ACD6D/wAIvbfYP9K0vRdS1T/h H9S7/wCmaPeaj5NeNwzxDxNmGUVc+y3hfD1cDiIe1o4WvjfY5hiKS1peyvhZ4SjWrQmpwp1MYqct VKvDkTl6fiFw3wnk2aZRw3nPFmKw+Z4KXsauKw+XfWMsw2IXJeOImsZDGVKK+1Wo4GpKP/LulW5p cn2R8Kp/+PX8+M/5HP8AKqvxVvv+Jr9bDTevtn1+tcH4H8f6Vo8/9n6ha699otf7NJ+x6bqmof8A Ev1D/jzvPzs6wb74qeB/jBPdeIPh/qn9veHrW/1Lwx/an9m6pYaedQ8P/wDEn1j7H9r/AOQx5Osf 8+derwLxXw/xHjKNTLMyjKrmGDeJp0KnuYhUUlGblSu+WdOop0akOZ8talUhd8t343i5wrxJw3w5 mFPMMvnSpZfjKWGqV4e/h3VlThUhy1fd5oVKc4VaU+X36VSnOy5rL6g0q+/4tla2/wBqxiw//Ua+ YPibB/xNte9v7N5/7hfr2/KtPSvjh8P7j7L8P7e61668UaXYabrWvaXZeCfFH/Et0/xBqmpaPo+s ax/xLv8AiT/bP7H1iuD1z4jeDvihfeMtQ8D6pqGqafpevDRbm6/s3VNO0/8AtDw//wASfWLOzvLz /kM/Y9Y/58634d4gyTFcTSweDzOlicTW9pVVNNqbhSm6VVwTXveyqQlTnquWpGcfs3fi+IHCnEGC 8OMBmGaZHXweBwf1WjKrOKUFOvQm6Sk03y+0p1Y1Y96coP7fu5fwyg/4qO079+1fox4Vvjb33T/l wr8/fhn/AMhy2/H+Qr7asb//AE66/wCvD2/zivr8w/eVcevhtSl572Pz7gKFHC4HC1L2vitu+3Xp a5avr4DxV/x9f8uGmj8tUGfw4NfS3iP4L/Fr4geD7S18P+GBawXeStzrRHh+wPuBrFWvhXofgD4b z6X8UPHH/E+8QapYfbdL0G9/5B3hvT+Psd3051irX/DUOq+ONc1S3+1fZD9v/wBF9ufWv55428Y8 Nw9PC4TJaEcTjcpsqlSuqnslOPL7sYwnD2nXmbl7ulviP768JfowYzjKjmGa8ZZlXy7BcTx5qOFw jgqv1ed+SrVqzU+SctbUVS92zvUndcvl/wAXPg94/wDC/wACPGOnXGhf2pqNt4SP2m08M6mPEBPX pZ9/Wvy/sf8ASPAF1zz9g6/561+8HhvxHfah9luLm6/0j/n6/DkEdv8A69fH/wC2F8EfDh+Hfjr4 u+D7T+yta07Tzf8AjDSrLiw1PT8qreJLQHprALr9s+orzPCT6RtHPc6hwjxNl9LAYnN8TTeFxdHn VKWIqVFCOHxCnKfs/acy9lUU3eUXBwfMnGvpQ/QxxHBfClTxN4AzevmeW8KZFiKWYZdiY03WhhKM KuIeLw1WDjz+zakq1F0tKV6yqXpOnU/N/Stc8VaRoYt9H8UX+l290f8ASv7F/svT8f55rqPDmq/Z p7q41C1/tTUP+fq91L6fkP8AGvOYP+QJaf8AcO/9BFVdVnn8i6+z/b+NP/49rLUjp/1/ka/oHO8N 9XzdxwdOMKlW/uxjy81rWu7va/bqfxFwVnH1zhim83rVK+BwlCnOFOpVqVIUp+979JTcvZz0+Jdl dOyPrTwdrn9j2F1ceINUsLXN/wD8en9pf2h/Zun80fGnXP8Aij9TP2r/AJf9Nzx2/rXyr4V8YzXH 2XSLjwvf3Pb/AEL+1NQx2/4/B5NdR8RvEfjHWIP7Ht9BsLXT/wDj9wNS0s/8g/v/AMhGvQy3FUcT jsNHHS+r4mE1OSnKnShp0pwnNb/aabt7t1qr659hauV8MZhicmpVc5yivQVOjLDxr4vEOrV+KNeX sKfuU+WNqlvtP3e/d/2hb/8APyPy/wDr0Vwvn3H/AD9WH/gyor3D8i/tT/p4/wCrf18jT8VT+OP+ Ej1S38H69f8AxG8P6X/aV7a5zqH9m6f6fyrvPGN9Pp/hzwvo/iDQb/wv4guv7Mvvst9pv/IS0/T/ APp8PWvB5774V/EDxx/aGoWt/a6zqn+m3Vr4Y/4p7w/pv9oddH1j7Yf+JxXt19pXjjR7G1uPD/w5 8B/Eb4f6D/aWi6XdWWpf2fqH9n3/APpn2z7H/aP2zNfxxnlTGZhkWdcOYbEfUcNmNKthIR5/bUo8 0HN30peyU/ZpN+/ff7Nn/qvkGXZbSzvC8UKn/aGJo4ilX9tTVPD1Y0YV6HuOMIS9vy82km4ct3ZP mdsv9mXSp/C/7KHw50fULX7LqGg+A/Ellqhvv+ghp/ijxF/bH/k5Xl99P+/tf+vDPOP89q9Q+C3x x0Pw/P8A8Kn8UeF9e1TwNdX/AIk1rXvFHw++G3ij4weIPDZz9rvP7Y0fwf8AbLzR/wDwDr59+Knx 98K28+qW/wAP/hf8Wvi1rHTwv/wjHwl8efD7w/8AXxL4w+JHh3TdN8H2fFfc8I+LeVZVk8cHmOW4 z+0sDQoQnhqdCdas54ehToS9l7KEoVYS5FJTUla9uXS7/JPEb6P/ABDxLnFPN8ozfAwyzE4qtX9p Wq+y5aVevOspzXvcvL7TlSu+blcrq9lveHNVvv8Ahe9ro+n3X/EvtfgR421rxRa/9hDx78O7PweP /KP4wrB+AM/2j4LfBu3/AOoD4k/9TzxmOtb37OfgfVdPvvHniD4ga9Yap8X/AItf2be+MvsX/Ev0 /wAE+H9P0v8A4oL4V+D/ALZ/pn/CH6D9s/7jGpf8TKuDsfH/AIA+C89r8P8AxB/wnml3Hg3/AISS ytdBsvhv488QeIdT/tDVNR8Sf8U1/wAIf4dvIfEn/IYrg8KsNT4NxuU5hnuJhh8DmGR4uE8RRjPF YenjqmevHyw86uFjW5Zyo14+ydSNP23spqmnO1M4fHv6zx7w9mnD3DGBq1sdk3EmWunhsR7PCYiv hKWU/wBnPHQo4mpSlVhPEr35Ufa8lOVCrV9nCpePt3hWee3+Jvx5g/5+tB+APvwPC/jMfhwe3rXl vwc/5IfpX/Y3fFr/ANXL8RK1vB2q+JNP0Px58cPiB4D8eeF7j4s694csvAfw5svDeqeMPihpvw/8 H+Fz4b8Hf8JJ4O8H/bP+Kw1i8/4STUv7N/5c6yvhJ/xL/hldeF9Q0vx5oPiDQde8bDVNL8aeCfFH w/1DTf8AhIPHniLxJZ/8Sfxhp1nx9j1ivf4KnOn4iLE1MPVofXcqzGpCFWlUpTX1niCeNowmpxXL VeFcas4Lm9nzRTbumfL+JuF/41DjcJRxFLFf2ZmuU4ec6VSnUhL6nwxhsDWqQcJS5qf1rmpU6i/d 1OSTpzlyyUfUvhl/yGx9B/MV9PwX3/E1urcf8+A6/wD1v88fl80/Dn/kLH8f/Qq9u+0T/wBuap9n /wBFuPsH+i3X/UQGl/4fzr9mx8/Z/wBpYq1/ZUKsuXvy03O1+l+S17O179LP+cuGaE61DhjCQq+z +uY7DU+blvy884wva6vbnva6va11e69Q/aU8caro9/oPg/T7W/tTpeg6b/an/grGQea+X/Cvjix8 L3114g8Ufb/7Htf7NvdUuv8AoG/p0qr4c8ceMfiB4A8L2/jHS7+11jQv7S8MG61rjxBqWn6fqn/I Y8Scf5xXZfDL9nPwr4o1UeOPEPjLx5pf/CG/2lrV1c+GfiRqng/T/wCz8f8AMyWdn/oes6P/ANfl f5WcRZ1DOMT/AGhVVXBUsfFV3FvlnS9p9mUbe98LtL3euh/0C8G8P4zK62EyrA+yxuJym2GjVS5o VPY06cOeKv7vNy3cbytdLmZ+lnw58V6TqGh2viDR9UsLrR9UsBe2t1/T+VeiXOq+HfiB4P8AHXh+ 31Sw1S31Pwp4k0XVcf8AHhjUfCupDkZ9SM+wr8t/2ZfB1jqF9+0F4Q0/Vb+00f4jY/4Re6stS1TU NQ8N6eSbv/iT8f8AEm619O/Dr4V6f8AP2fPidPoHjLx1491mz+G3xHa4/wCEn8Sf2lYDUTpGqXeb LgbTCocfQGvm+FJ1p8T5HQp1PqmJljsCqT9py885YujBRty/373vpbZ3uv0LxBxHJ4d8W4/F4COY ZVh8nzOpXjCFpypRwsnUileV+aHNG/TmvZ7H5XWP/ID0u35/5hvH/wCvtWqet3/14D+Yrn9K/wCQ Xpv/AF4ad/Ot8f6m4/7B/wDU1/rtn3/JR5d/19/SB/zWcA68BYmX8+Fo/wDktNQ/Hlv87dLmX/Yc Gof8fHTJ7/54rB1WxsfC9j/pGl3+vW/28YGtal/xL8jn/jz/AHP+TXZaVP8A5/kefx/wrg/jTPAP Ct1x/wAv+m+1dmY5bRxk6KjOeGqzkoxqQdpw5rXafyWnluTlfEdbh/K8xxkqVLG0qNCbnRrU6c4V YK14PnhPkvdapPzT6e248Df9AzQP/Bkf/mjor5q+0Ten6iivnlkubaf8LuK/8C9PP+rHorxI4K0/ 41fln/hJQ8v+nHqeoX2h/Z9dusj09/6emK9a8HeP/HHhefS7fR9UsPC+j82WqWl7/an9n9sUk9j/ AMTy66c+vbNLquhw3P2Xr+f9Pxr8uzfKMHmU60K3PT5rWlCXLOPe0rO19OnQ/q3hTiPMshoxqYKp +6j7Sp7N/A7ctoyX2rXdn0u9D6rsfi38D/hPfaD8WPFFr4S1TxD9v/4Ri00vwXqOqeD9Q1LxB4wx 4b0c2fiT+zvsdfKnj/4t+FfihpWqax8D/HnxLutP0v8A03VPC/xB1LVNQ8P+Gz/an2P/AJnDUf8A Q/8AicEWdfPvx3Pgfwv4x+Dfh/xB4nv7W3tbDxJ8aPFGl2XhvxR4w1D/AIo//iT/AA3sjo/g/wAO al/xJ/8AhMNY+2fbP+pbrjdK0PQ/EGq+KNQ0/wC33Vhqn9m+NNLurzTdU0//AIp/xh/pn/L5/wBT JZ6zX5xhMNbizF5Nl+ceypY2lWpU3OparSxeCp0KlWc6tvgnDEVnTfL731Oa+37n7DnXFGPfBuX5 rmWRRnSwtXDVqsFT54PA4+pXpR9kvd5ZUK2FpU661/3um9PZ2qfVPw5+NPjG38Y+M/EGoeA/+Eo+ y3/hvwX4y8eeGPgn4X1Dw/4b8Qaf4X8O3mj2f9sXniL7Z/yLY0f/AJhvavZfiN8VNJ0/w74N+IH9 l6Dr1xqmg+Nta8ZapZeG9L0/T9N0/wAH6p9j+x3mj/8AQY+x18g/Cv4jaV4H8cftBeH7i1+Jnii5 1T+zdatfC/hjTdU0/wAP6n4g0/4X+DPsfhu88Yax/wASf/hJJvsZrznwd4x1z/hR/jH4f/EDwH/Y PxB8Uf8AC7Pi34y16x8SHUPD/hv/AITDwv8A8iHo9mf+Qz/Zvhvw3o9n/wBhKvjcBm/FKyjGZrgM fVdLK8kli61Rfu50Kt66w1TWhThVp4j2Fb2lGUJW5I2nGz5/uc7w/BVPHZZkmePBxxPEObUsBh6d enUxfPOfsXX9m5qp7CpS9vR5aiXvX1i9OX9GPhl8fvh144uPhL/wkH7NPx48G6f4yv8Aw3ZeA/iN 4n+G/wDZ/h/U9Q8YHTv+EbwdH1Gb/n8rL+OHhzxHqHj/AMeXFvoF/dW91r2PtX9m+/8An8q+S/hH +0n8YtQ+HP7Pvge3+Dd9a6frw+EvgvS/FHxO8N6XqH9paf8A8IGLyz8SeG/+EP8AGf2zR9Yx4b/5 fK+tP+EH8f6hpXw5ufFHijXvAen/AGDxJe6pdeGNN/4SD/iYf8JRqPr/AKZX6xwnxRmuVZljI4qt VzKrKTgni4ez9lCM6U42q+xp88JcrUZ8mtm+WFrS/KuPPDfhvi3h/DRy+H9m4ajOnOpDARoVfbT/ AIF3BSqQjJe257Rqy5bNNvmTj5f4A0PVdP1X/iYaXf2v/X9pvbrj/P8A+r0bz4P7c172sMf05r26 DQ/A/kWun+KPjLr2vaP9g+xWt1/wjfhf/hIDqHH/AD+eIrP0rvPg7+y7P4g1XVNYz48tfC/hgabe /wBqeJ/BJ0//AIST+z9U/wCZb+2D/ib1+lVfELh7C5VmWY4/FyoVaVCc/YunUU5ctrqm5xhzyd1o lppfdH8+y8BuOIZxkmT5PgI43BTxVPlrSxVBWt9p0+d8sNfflzvl93R30+QfH5gt9VNvb6Xf6X/a mg+G9aNrrX/Ev1D/AE//AJff+wPef0rB+OHiLxV8N/2ZbnUPC/he/wDihp/xG1D/AIQvxR4N0XxJ pfg/xB/Z/wDx96x9j1jxJ/ofr+Br6g/4KB/aD4q+HPxw+y/ZbfxRYab8PvGX/MQ/s3xBp/8AyLf2 z/0jr4Z8Y6rquv2Og6N9l+1aPpZ+2/2X/wBRAf5P51/mNx5j6K4nzKpCj9Xw2Iq1KlGlzc3s6NSp KcI89o81uZq/LG9r2V7H+1vhHTnheG8FQrYr69iaWHp0K1Xl9nz1YQjCcuTmny/Cny8z3td2u/oH 9kn4dWPg7wDqfj/w/wCDT9nu9C1L+3fAY+I+mHxh/Z+n6VyTpGriEavq+PXHp14r691fWrXQv2fv i94vTS9f0Lw/qngfUrxtA8Tad/Z+o6fr/jHR5NFXRv7Gz/onz6yn2z6Zrhf2ZYINP0PS9P8A+PvU LrQfttz307Tf+Jp/yB68m/bi+LlnaeE5/gt4VvcOmo6VrnxBvbLGFKsL7RvDwIXqSFvT2+Ucdz9l 4O8Lz468RuFcpy7Cezw9Cvh8bja97+xwmHr0q9X3rLl5/ZqnF681SUFZHgfSn8Tcp8HPo++I/E2a 4yM8xxuV47AZZR5E6mIx+KwlWnRpU6bbVRrWpVd4+zoQq1LS5Wn8HaH/AKNY6Xb49+w/D9BXZzf6 i5/68D/6FXLaHB+4tff2zx+fWuyuIP8AQdU7f6B+P9fSv9NOIK0HxVg1B8372N+ltj/ATw6w86Xh tjIz05KEIrztz6+XocvYz/vv8/41518aLjHhYQd/7Q03I9cHrXdwf8fC/wCewryb4zzf8U8vvqI+ vJ9a+vpy5q1B2t7Oal62a0/Hc/O85XsuHc7o3vzYWav2s49P+CHnQ+35CiqvnH3/ACFFT7TyPy4+ 5YLfHiO66f59811FjB9ovrXrdf6f/wAevJ/P8DXL+RP/AG5qn9n/AGD+0P8Al1+2n/iX/wBof9Pn v/jWD4H8f31x4qtfB/jD+wbXxBoN/wCG7Lx4NF/tQeH9N1HxB/pln/Y+sax/x+aP/hX83cRcTZbw /icMsycqNLHVY0Y1bfuoTls68/8Al1DX4rS2emh/qbwtwzmWf5di6mWqNarl0ZzlR5rVpwgo3lSh 9u329Vy3jvzaejeAPB3irUZ/20vix44+F2vfDm48T2Hwl0X4S3V9qXhfUNP034X/AA/0vxFZ/wBj aP8A8I34i1K8H9peMPEn9sf8TKvkHXNc8RweOP8AR/hJ8S9e0e1/4kt14o0XUfAf/CP6lp9+ftn/ ACB9Y8Zw6l0/6c+1fr38Y4YLf9nP4jf8IPqlhqnij+wdN/sv+2v7UHh/+0Af+Yx9j/H86/KLwd4j 8VeIPGPjzT7jQfCVr4O8G3/hvwx/all4k1TUPEGpeMP+EX07xJrH/Eo/s7yf+EPs/wC2P+fzvXj5 TQwNajkuTYitj6eOpYzGZhh61OEHNVaVOpPETrVJxnaElipx9morn9pzOXuJP2eJq2Po47M88p0s nxGBxGWYPLcZh5zqL2lLEV4vDLD0YShepSlQT9pKT5eRJR/evl1PgfB4juNc+KGoeIPhf488B2/j O/03WrW68T6l4Dv9P/4l/hfw74P/AOZP8Z6l/wBAcVgz6V4/8Uar8ZPh/wCD/gP8S/Hn2rwkbL+3 tF8SfBrT9P8A7P1D/Q9ZvNH/AOEw+Ilnef8AL5+tfVWlWM/2HNuT/wAeH5df1x/Ku8/ZX0r+0PGP xQuOv/Eh1P8ATVP0r2HwPk9fhOOHlXxVN5VgsTg4VIVrVauBxVSM6mExE+R+0guSEoTiqdSnVhTq wlG0oS+YxXH+dYfj3A4mnl+DxP8Aa+Y4bGyp1YV5UcPmGCoVHQxuFh9YXs6utSE4SdSnUpValOcZ XjKPz78RtV/ah0/wP8Efh/4H/ZL+LXwv+IB8JeG/h94N8Za18Wv2c9Q0/UtQ8P6X4d8NDxhef8I3 8RP+JP8AY/8AkJV9YfBH9ir9pL9o6e88X6d471DwN8MrnXNRbS/G/jHxL4m1DU/EgsNUfafDnhu1 YDVlJjcC9YgEoRknivunxL8GPFPia88HeM/CHhex8Z+J/Bfh/wATX/w68GeJfETaF4R8S+PwNOOj jxf4hQTnSfDvoBZEk9Bmvl/Sfi5+0J4J/ag+F3wY+O//AArT4X6v4qGo2Y0D4f8AxH1W/wDAGm6/ qPgPxnrPg77H4j1r+x/+EvP2vw3zpv8AZor8a4n8QMRwpmSwuXYSed43GfV6FbFYqVCEMHb2jp06 UeWn7aThPnq+9G3uLS93/SfDfhxDi/CYfGZziv8AV3JMPLEVcPh8FLFc+Pqz9lFyxE6dXnowhUpT pxppy9p7z5tLL7s+Gf7IX7N/7PPhs+ONZH/C6/F1sReL8UPH3h7/AITB9OFgAD/wiPhwi72HcSPl LHoQc1754x8Rf8I/4wtfFEHgPT9d1jVL/TNG0HVB/wAS/wAQaj4f1/8A5DGkDPoRUfhDwB4y0nwL 498M33jq/wBY8XW3ilr208S61pw1AeH92PsQ0jcMBfsPHPqa8x8T6Z4/+HPhz+3/ABVcWWpeGfC2 uaZ4ottS0fTNT8Q6iP7P1MZsrLSbHN232zODgkc1+Q5/xbxHjc6wUMxwGJxuCxlOnNYqlCnUpYat TqVYOhUjSqytF2TnKFOPsbJONTmXL/QHDnCPCuS8PV6eVfVssxOEqXqUed+1xEJwpzU23Fzc6Sk1 Jzq1HUUlKKppPn8m/aT/AGdb7UfAPxjn8cXOo/GTwPqq6edL+GPhjw2NP8XjUL/bgaReaOcg2mrs COOinJHFfjP4i+EvxF+EF/oWjeP9Cv7a31yw/tnwxc3nJ1DQMBvtZHY4YG8HoQe9fu54N/bS8N/E f4neDPh/4Z+HfxLtbvx78Fz8Z9S1XXPhv4n03wf4L8IHxMfCOkaN4t8X3en/ANnXvi+88RLrP+ha dkgITnjJ+cr7wL8TtN8ZfESw+Mo8VfGz4MeM/iYfE/wy+If9oDxfqPwE17X9MOj6z8OPF/hy70+E j4chrUHOkZGj7iDgncPieNcqoZ5hqTwEqq5eflrQXuR5uS/tNdL8to73tLsfd8CZjLh7H/WateTy zMXCXI3z1Pa1L3qQjopODs5RuuZSVmna/mmlX3hX4T/DL/hZFva40/TNB03Wbr7Fpn/IS/tDpZ8d 6/N39tHwBpXwn+NPxQ8P6f4oOvaP4o17TfGmg3X9om/1D+z/ABf/AMTe80fWPXWNN1j/ABFfq34r +BWleKPiL4E+BHjjTLC6tbbXtM8f3OhDUh/YOo2Hww03/hIfDnFpx/wjY8S/8I327d6+7/iZ4U+C Xi/7L4X+JHhrwkL7x22naN/ah03S7LxDp+vWGmE6Rq+kax/rxjoDnpjIOMV9p9HjxEn4W8TZzj8w oSeSV40sBWw0pwpTnVozdWnVhKbfN7Cdm6ajrzq846N/mn02fBal488FcOcO5RnNPB8R4KFbMcJj HRnisO8PjaH1apCVKnOnKSxFH2iU1J+z5fgnzWX8reh/8uv+f7ld5PB/xKtU97D8+1fXn7Yf7L4/ ZhvdL1j+y/8AhMfB/jK/+xeF/E99qWp6fqP9oafpZuxpHiTR/DPg0jHXHP8AKvhv+1vFVxBqn2jS 9BtdPurD/j1sv7U1DUMZ6fy/Kv7vocX5LxZmmXZxl+NpUsDU5ajlUqcttrRj7vvbO70tpo7n+XU/ Cvibw24bzLhrH5bXzPGvmhGWDo+2g4QpzmqtR88fZwdrP4uW99bWeD/y2/4D/SvEfjFP/wAU5aj1 v8YPv04r2Saee3g+0agfsv2r/j1tf7S0o6h37WXWvEfi3P8A8Sq1t7j/AJ//AP8AVX6/hcRCqo16 UoVqXSUJc0JbN2lZbddOp/K/FeErYbK8zwmKhLD4mFJ89OdOpTnHa3NCpGE1fW14rYvUVYorjPz7 2fmfdth/yMl3/wBfv9BXnPgDQ7fxR8W/2jNHuP8Al6v/AIJ/Zbo/8wzUP+EY8RZ/z716NY/8jJqf /X+f5muY+Fek3tv8af2gtQuLX/iX3P8AwpP7LdXv/IP1P+z9L8RWn51/O/E+Gw2Y5llOBxmHhicN jPr1GpCa5oShVy7FQacdL25k9+lut1/qHwZicTgspzfG4SvLDYnCxwU6c4PlnGcMxwc1JS1t8DW3 W/Sz+lrHxx9n+C3xQ+E/jA2Nr448L/2b9luh/wAzL4f/ALUwP9MH/PGvz78HapY+F/8AhpbxBrH+ i6PoPxa1LWtU750/QPhf4M1i8+lfoJ8W/A9jq/w4/wCFgW5+y+IPC9/ptl/oX/MS0/UOPsftX546 Hof/AAlGiftQeH9Q/wBFt/FHxL8SWV1/2D/EHwa8GWn+FfnEcRxJkuGzDh3B+3x2b5Nlea18txjj 7SeKwjeDjGXNde1x+EdF0a0Lq96c7x5+VfpeJwXD2b4/K+I8xq0MJkmdZjkmGzTDN+z+qYt/XpS5 t+XDYtVlWoSsuW1SFpcvM974SfB3/hYHgDS/ih8cNe8W+MvGHxGsNM+INr4XPjfxR4f+H/wl8P8A iD/iceD/AAH4P8N+D9Rs+bPw3/yEtSvP+QlqVfWf7JPjKx8DfEbTPA+oC/1W3+J9/wD8Ky0vXbzU v7Q1HTvEGoapnw2NYz/yGP8Anz/GuO8HGf8A4Vz4X+0D/j18J+G7K6urL/kH/wBoafpf2PpXiNj4 40PT/j9+z78P7jVPstxpfxa8N/Fv4oXVl/xMNQ8E/B/4f+PP+EwvPEmsCz7694l0bw3oOg/9BKvr OJHkvDvA2W5zk1WhQxMKuEWHxEXzTxuHc/aYqniMRJSqYiFTC06spqo5WqQo1YOM6aZ8Xw3HPuKv FDEZJnFCvXwXsMxqYzDzhTVLA1qdBLDVaNOUJU8LOniZ06dN0oLnp1a9Opz05Sg/6NvAvxB13Xv2 l9B8H6Kp8M+EPh1od/d67dXmnLfnxp4fsvDd/p50rR/spA8OKviRvtxHUhcAE8H83v2gfBF78VP+ CjvwH0iC08JeKL6015fGWg2njLTDqOnrf+EPhj8VPEVm2kDt4tGQdIve2ogmvuf9mbx/rlx4j8d/ Ff7ONT+FGvWGm+GdB1TRRmw1O+v9V1D7drF36CzJGfr2JzXyF8arG/1j/gpN8ELfw/ruoaXiw+xf 8JRov9qZ03+0Pg38Vfsf/Hmf+W39r1/JeJzqtnFWpXxCr0qjzGrFylH2E5ezp0KftKMrz56NTlvC pZc2q5Va7/vKjl2HwGX5VRwipOnRo4RKLtVgm/au1SPu2mtLwb0VtXc+/wDUPjZr/wAR/Enx++F/ wivNZ8LfEjTdE8F+I5rrxR4eF/YN4S8X+GDaDxAmrnzoXez1ZGyBz8nTrj6s+Es2q6x8NfDA1m53 eJvDNgNH1/7GOP7S07Flq4x35XNfJfhf4afEz4P/AB98HWWj6noevz/FbQPEvgH4n3V2Nx8O6f4d DeMPCGrKinLNdi88SjGOrDHPTvvhbP4h+IGifFm38I+ML/wdqP8Awl2pLaapZAajqH/FI6pqGi5w x5E39j845x+VVkks6dCm85h7XOPb4um6cH7vJHmxFJUFb3v3c4ub0s5x3trrmUsBOpXnlilGlCnh HCUpc1v9nhGenKtOaMo+ainezVu5+Lmk+FvEPh3SfC+u+GfFd0LrUPsWnXPg0anYjw9faeRq2lf2 udH1KEjSbvH0ycEc8b3w0+IMvinUB4eg8LKLe5s9RvBqekgDT9P4BB1Tnrz+YxxXt+iW5nsRb/aR c39tZaeDqfXOoWOeT75/nXLS+L/Bng/xXoWgX95Y6JqPi+x1G60vTL2wNidQvxtyDnvzyK3xeSYn +2sJnOEzqOTYanyxxVONGH+00qelGm5zcuT2fNUtJQl/E20VnTzmk8szDKa2AqY+rTjKphG61T9x Vmk601CHLzc/LT91uNnDfVt/NXxi8HaHcfHb9n7V9A0v+xPECaD8Rhda6wBsdN8JX2q+C7XxFafZ DwWJKEdADXYeKvgv4dbQ/HZuNCPxD/4TGyF7qegXupD7BqV/p6/ZNvh+7P8AyB889D1A5rK8b+AZ /jD4u8HfEODRNb8EeMvAt540+G09trGoBrDVPD3i7Shf7gysRIp8R6NohXA7d8ivZ/hj8OJvCmh6 l9o1IalfXF6Lu5ts/wCg6b0AW044wP1/HPgywGOzDPcRShw3SxGS4yKr/XlPl9k406cPZvDunz+0 fLeSnKny6W59bdsMxw9DJcHWnm0qeYYOTo/VZR53PmqzqKXtVNciSlZLlkpd47HyF+1dpNj8YP2Z /HPgHRtN10eJdL8IN4z0JQB9v8PeIfAOmJ4mXw9q7Z41e78N7+Oc7+vAr+b24E/9lXWo6ebD7T9g N79q/s3+0NQ/D8c1/WDcagNVvNW0qxtj4Y1zxKPEfg+5ttY0451G+/so/wBk3huweVGj5P0OAOBX 8veq6H/Y/wDwmfh+4/4+PC99qWin1/4p/VP7Hr+iPBivSzGeLymrP6zhcHVhb7PxQUHpr/z5T8r2 6XP5W+kdQxGSf2dn+VzlSrZtha9J80uduVJurTttZSc5xWltObV3R4jP44n4t7i1v9Lt9LH/AB9f 2l/wkGoalzj/AI8/3PGa42+n8K6xP9o8Q6pYf6Vn7Ja3um/2fqHb/r8revrD/TtTP06f0/z+teI+ OIP+PX/r/Prgf4V/T74To/VqmKweaYrL6lGDl+6qW5ttJenR9Ls/gvHeL2PrTp4DiPIcu4hwOIko 8mIoe/ru/aXl5X93WyPqr/hFfAHr/wCXL/8AWory/wAmD/n1/l/hRXzKp57p/wALWK/8D9P8v6sf Sf214ff9Guyb/wAE0v8A5R/XyPtKxP2jxHqn/X/qR4/XrWD4A/Zs8AeCNctfiRo+l+PNM1H/AImV 7da9rXxa+KHiDw/qWn/8TH7Z/bGj+JPGc2m5/wCJP4krqNKgnuPGOqW9v/x8/b/sVran0H1r6Csd V8f6PpX/AAo/X9L0G08P6pYal/wlGg3vhrS/EHiDUtP8QeKdO/5jFnqP/Ln/AMIH8SNNs/8AscPE leTnkoOca1PCUMVjqF3SjVfLNQfK6sqVS0uW3uc65Jc3u6rl1/YeE4Xw1bDYjGYrCZbiKUlWlhqV SpzTVvZRmoJ8t71OVtr7Vk9bdT8TdD1XT/gtdfaNLv7X7Vr3hv7L/wAS38+vQ18CaH4OsfC8/ij+ x9Lv7W48ZePB4n1T7b/amof2l4g1DS/sf/MY97P/AI86/Q74xWPxN1j4c69ceF/FHi3+0PFF/wD8 V5df8TTUNQ1Pw/qHijw78SPGH9j58Rf8SfR/tnhof9w3/iW18q+KvEfxb8YarpdvrNrf/Z9L+NP/ AAtv+y7LTdU/4mXiD/iov+JOLz+0f9N8N/8AFSf+W3XNkmZYypCg6uX0HaU5+0liqHtcPB8nPJRv pe0b6+9ZbWL4pybLY4z2sM7xUKVahTg6MMBXlh8ROnCrOmqlbmXLtJRfs5W529ba8H4x/Zs0rwvq uqXGsaD8S/hz4wurDTb3XdL8MeNvHnw//tL+0NU+x/2xeeD9H1H+ze3/AB+fY6+gv2Cv2bPg7/wp 39oz4b2/he/0HR/iN/wjX/CUa9Zalqn/AAsDxJ4x0/xRqP8AY/iQ/Ei887WP+Ew03/lz/wBM/wBD xWDrmleMZ/B3jLWNHtR4D8P/ANoalotrpfhjUtU8P/8ACN/8JB8ZPEXxU+JOj2f9seMv7Y8eeMLz x58VP+ol/wAIr/zDdNr6W/Zl8SeKv+EV1T4gfEfxR/wi9v4Dv/G3+lXvhvVPEHiDUtQ8QaZ/wjf2 z/ipDeXl5/YP/CN/bP8AqMawP+JlXg57yU+DeIKtbIsLg/rUXGtiaUqFScfbX52lyVOXn5F9qN+X 7VtPo+H6dGXiTwnhFxlmmMwVGVapRwdbDYunh6sKNCfsZPFRqRguXnnpOHX3W/ePqT9jn4RWHwY0 nxh+zxb6HonhX9lHwr4VXRvC1vq3iPU28R6lr/i/VtQvfE2reJPHfia+bUdY8Wap4h1fWbptSF3n +0WO0q20j5j+LX/BNr9hHQPH3heD/hA/FlrrF14t03WvFBvP2o/2n7DxBqen6h/odnz/AMLW5H9s YrvNF+BOieL9K1P7R8Y/FvxH07x7qHgnxPbW2i48P6b4iX4feFvD3gTwJa+EfDZ8Sf2bo40HxINH 8R3hGTqJYadjGSPZPHv7N2lFfGHgifx5fG2+HfhH4Sa1oF34k07/AISPx8R8INTyCNavPEQ+26vr F3o/Br+ZsVPByo18NhMdOeJo/vJQlQnT/i06k1FSk+SVvYNXhKfxXkoac/8Aa2Ep4h0cLWrYKliK VaMUnUxMKlownSp1Ki5Iy2VWDaduZJJS918vturHwb+zx41/Z++G/hq6165tPiN4q03wZ4Z03xP4 k8UfEDX9O07QNKb+yReeMPF+palqV2Mav/zErzvwa4T/AIJ0+N/EfjGf9qm/8QeDh4N0fwx+0P8A Ejwx4WzjPiTQNO8T6n/xUt3nvdnFeIftLfGK50/4xfs1fFDShYa94I1TwP4n+y6roupf8g7Xv7N8 PbP7X55H/CQbR+Hrmu+/Zm+GniLxB8AbnxRb/wCi+IP+E88S+NPC2l3mo/YNA8R6hf8A/IH/AOEl Fln/AJjFeHlvEE8fxRmNChgeX+yq9VUoW9n7WE8DhZOrF2l7lSdaUoOz2a63Xu5jk8KGT5Qo4iMv reHpObSu4TliMRH2ctVf2cFCCenNq7I+s/EfxE+Ingf4i+BPB3hfwH/wlGj6/Yam2q+Mr0/2fp2m mw4s9Izn/kLk5r6T1Tw3pevQ6Xf3+mWN1fabe6ffWtzeD7pBHQ4+v5V+enwV+Pvj/wCJHgA+KPjD 8G9d/Z+8X6Z/aX9u/DjWvGvhf4oafpt94Q8TjRzeaR4w8HnD6RkHsOD+J+s7HWviVqXxHtLG3uNP tvhwNCx9nKj+0hqI0z/l7b03Divp8uxlGrCdKTq4vDY6ovZ0lrCPNfmaT+BR93mfvXutFbXxM2wG JpTVWb9nWhf2strLTl23T97yPbNesYLqzuPtFz9mFte6frEFzaemhamL0Z45+7z+NfNHg/TPjF8W PBHxD0D43aFY/DK4tvFmqXfhi68FeJVv7/7Bp2qaiNHvW+X7134fAuiOMbySOOPZfEmhfD74+/Dj xl4B1m5/tzwj4x0HU/BnigaLqWp6dqB0/XtLay1eys9W0hobvSGKkjOQf6WfAHiHw74h0q50/wAP apYakugWf/CHan9i1EX39n6hoH/EqNk11/C2Sck4OTmu7FYbB4nF4eNfEcuAxEa1OUIT5oV4ShyS jUVl8POnF3e8l5nz2Gq1KGHrpYXlrYerTcpzhadL2c4Sj7N3/wCXnLJSutHGL1vYua74ZsmGm210 Rqlxpv2C7tbm8I+3G/seBeHIHzc8/XvX8vP7UPg7/hD/AI/ftF+H7f8A49rbx3qWtWhPX/ioRp3i Tn/wcV/Snb+I/GEHxOt/DN/4YsT4ItfAy3tr47PiPTAdQ8QX2p39peeGh4bxnFotppB+2dPnx61/ ND+0kL0fH39pUX1yNTvx8StRW5uAMADGAAB0GAPyr9N8KqNGnxDjZUocnNCMWt78lehrsv5vP1Pw 76QbqvgvKqWJXtUq8pRd7b4XESt1/wCfaT85aq61+Edcgnt77VPbp78f/qrwbxVPnHI4v/r/AEr2 TxHff6dr1vj9ev8An+leN65P+4/0jt7emK/sbCxmsoqc8eW6R/k9xBiITz3DqFb2dvbdL3/f1PNW 2PWvtEPp+poq3/o//PqPy/8ArUV8L9Wpfy/1/SP0f29b+f8AD0/y/E++fDn+j+ONUuLfH2i117/R f+4fqnavefFV98XDY6prPif4n6D4DHjvUNM0XTPFOi6l4C1DxgPEJ8d6jfeDv+EQ8YaxqOsa9q+s ab478d+JTpvt4kr580Of/iqteHX/AE/Uv8n8q7PwbfeFNG+NXwa1Cw8L2F3b/Dn4TakboWXgn/iX eHNQ1/4yaj4kxo+sDTvsf9sHR83n+h1/M/jfmPiflWY8CYnw+wGV57SzHG5th8xweYZPj8wr1Y4T hbPeIMDDBY3B57lVLK6mOx2R0skVfF4XHw+s5vg69P2c8J9TzH+3/DLE5LSwOeRzHFYrK6saOElQ q4fE0KUIzqZhg8FN1aVbBYn23saeOlio8tSjyww9WD5vbKpR93+IC+MfBH2jxV4H8UaFa+L/ABPr /hv4feMDonhvwzf35P8Awk3w71c+G9ZvBibw6P7F8DDSPsRyP7NOonGQMfOfirQ/i34XtxrWsWug 2s+mjw34a1LxTZf8Iv4hvtPvtA+KGo/Enw013aWfiK8s/CHiP+19Z8SWdmfseOas2+rfDv4UeDvh j8GPAF1r+vT3nxb+G/ijx747Pw38UeD9A8N6B4P8d/8ACYeMfGPxJ8S+I/D8Q1nx7r17n/Q/+Jlq XPHqfJdb8Yap4o13xP8A8ILpfw1+HHw38Y/GjUvGevXHgrwV4n07x98WdO8P+KfEV54O/wCE68Re O/EP/EmP9r3Y1j/RNHOOgxzn8C4C8R/H/irizhfKMn8N8rznhCNaq8w4gxnC2d8NRxWVwq8L1cdU w1DPuKMHmGU4nLamecQ5bQo0st4kxWbY/h6jUp4fKsqzCrjsu+44uocN5ZRx+KxfHWY5fmU6cJYT L6GZ4HMPY41wzaMISWGy+vTxccY8twleU5TwlLC08bUjKpWqUKUcX9G6V4c8VT+DdDg0DQvAd1fL 4s8b3/hnX/FH/CL6fr633xP5+Kvh3wKdZ1GzwNeFn/pmf+Jlz/xLa9R8AeDfDnxJ8A+A/GHx4+J5 8MXOl2HiSy0u1H/CBeD9P1Hw9p2l/wDCHnwfx/pn/Et0ez5/0z+0up/tL/iZV80eI7/wbo+leDfE Gn678GPB/wAaNLvzZaV8Rfi18JfHfxPHwl+H+of6X/bHw40jwf4fltP+E9m8SWmj4/tG8Gm8cns3 CeHvjH4P+G/gD4N/EDxh8d/CPgT4L/BxvEujePNC+IH7N/ibx94v+LHh/UfHmpaxrOs6N4w8SfDu 81L/AISLxhrIGsf2bpg0jGdNwMA18h45eOHjBkdHxPw/CGSYPEZfwZnmEweGr1+BONIYutBYfM5Y qjgnl+ZV8Ln9GpiY5TgsJmqlw3SnjauLpOjXwk8Fjq31/hRw1k2Lznh3GZlm9WeNzTAVKtXAPMMJ iMPiHUnQhQrVqM8LTxGHqw5qk5YdSx16dSnJ1qXPaX7B3Hwl+COr618PHvfibZado/jn4DfDn4f6 Xrui6j4X06/bwh4e/wCEz8Rjx34Db+zfJXxJr3h34keIxd6laWY/s3TT/wAS3+zhXsV18M/g98Qf 2iPjubH4mX+oeOPE+g+C/iBr/hbRNS0wjTNAvdL8GeAvCOrr/wAS3LeGc/Cs7f8AS+dQOrnAzivw h+Dv/BRbwV8WPin4Z/aH1i88CaV8WNU+GuqfBjxf+ztffDjx14h+MGo6DY+O/Ees/DZf2ZE8OPd6 Q3iPxSdY8If8JJ/peNN1Hw0Bk6dX6y6/+zC3ws/Z68DazrPh/wAXeE/it4y0H4KXnx1tvBviT4w+ Lm07XvhfpX9s/wDCurLV/go0+saN4Ps73V/Elmv9khdJOCNn/Ey+b86yTxr8WMfV48zTA8LRzHI+ BcRFxyypluY5Lj+X6/muUYfLqWMxksdh81nTy/DZRxDWzHL6McFSpV1hJTqueGxNT+gMy4cyfCYj B4XG044XE5jS5ZXkq8G4fVqzrRham6XNNzpOHNJS5Iz573ifnp+1rol9+zx8XPgB+yv4PF9/wqbw t+z1qPiYXYIsNR0/xBqHxh8Ymz0jSMdDkn8ga/XD4QeOfD9t+yjpGsS+H/Ffw70e1On2NtpmuN9v 1/xDfkZ3kY/4lRvCBxx16ivxe/ZRsfFX7Y3/AAUe1bxD4v0vx4Phv+yX4C8OfCXQbX4nf2pf+P8A xJqOn6p4ivNH1jx6dY/0weMf7I8YC8vPrX7wa5+0X8JNH+JuhfAgan9q+JF3j+y9C/s3Gn6dx3vM fZMwgV+t5K6uYYfiLOKGIhkv+sFKOGwtPFUakp0KtbD0U3XoVPq8/aUpxlGVCXs5LRycOZI9LEcu W1MjUk5vBuFWpTVo83K7xjzOMlH7S5uRvqtdT4s+GHxgsdF+MOl+D/D+haH4Z+FFtoPjXRjb2mnf 2BoHhw+HxqHiP+2QOmrAgAm7ugBkk4yTX3L4X+OXgDT7C28fjxloN38OdBvdUs/E3jr+09KHhDw5 jSx/yF9YY+6j0yee1O8ffCzw544guvD/AIg0r/in9VsPsWq3Oi/6BqGpD/nzzafSvkjx1/wT9+BX xY+Enw602+8B2Gu23w58ef8AC9PB3gTxlqWqH4ZeIvGNlpfiHRtGtfiP4P0m/I8SeHLI6ybzTgc/ 8THBPoerhHKM+4Zy50Mbnk89xODlWq06kqNOjOFGXJyYajSpylelSs+W9R8vM7JXZtxHjaGd5lCc MFHBYXEqEKydbmblr++bdOPPUnq5t2u0mz9KdMHgHSPCfi3X9D0u8tfDnjHRNQ1y6/sbTdTsb/UG GmH7YVs2AJ1jAYAjB/WvnzwrqsXw/wBC8GeF/gd4Z8T+Mbb4jeK/EN63i+803dp3hq007T/7YutK 8dO+DafbHGqWaXZXIbuTir3wZ+I1lb6T4OsPifrmhW3ig3jfa9NsP7U/4RIahf6mTZ/YrvWPOJOQ Mc9TXq3xdv8Axj4I1r4c6n4Z1LwH4O8A23irUbP4r6zrt8LHUU0HUNKZfCWk+D1A+yHWLvxfJo4P 2vqOFyW5+g9vk2dUKXEOFqUqDwGF9nUlTlQji8JSxdSni6vPzV3RoznOElKFXmvy80ZK0k/mcbgs xyjMKuQ16dau8xqOpCFVv2OIq0Jzp0tEuao4RtFuEXrPVK6N3xPr7W/jvTbafwcWsrjwlf3dt4uY pfWP26/1TTx/wi+ABndx2AIXjniv56/27fB48E/tM/GOAf8AHt4zsPBHxBtCcjjxBpWnf2wP/Bxo 9f0HeKNC8TafrWo+OLG6166i0vwnqOjW/gRc7fEb6fuvtKu1zz/a55A9m9a/AP8Aa6/aK+D37S2u 6JrHwx0zxV/a/g7RNS8NeJfGHiXSm8OnxErakv8AZNlbaSXN5I2nSeY2bsKMMF25BY/sXhKsxocU 5p7WnVqe0q1av8GnD2VGU6U6Mf3aiqnN7Ka553qPec52Vv52+kKstreHeBpQxFKlmWHlBYekqk5z ruMJqq4Kcny8kKnPK102lFWveP5EeJP+Q74o/wA9xXlt9B9osbXt2/l6V614qg/4mvij7R/j0/kO a4P/AEHyP9GtT1/A4/8A1frX900618kqR5fjt17fLzP8dszwFZ8Vt80Y8/1j4ny/xK89t78vLrtu tj2TyV/zn/Giuo8lf85/xor839v/AHPx/wCAfrXsK38n4+n+f4H1VoX/ACNfiD/sIal/I17J8K9D n8QeKrXT7e1/tS4uuPst6fx7V5L4c8//AISrXs4z9v1L1znt/SvqD9lf7D/wuLQbjULqwtdPtbDx J9qur3U9L0/Tz/xK+/2yvlcdiZ0qWNqQVvZRUmu9tLX6eup/U2Q4SGJnlWHm7e3r043tflvpe19f vR0/x+sZ/hPffDnxBqHhfwlr1vpd/wCJdatfC97/AGVqHh/xJqGnaXqP9j6P4ks/+gP/AMJJXxx4 x1XwBqGk2v8Awj+g+LdK1D7D4JsrW2vf7L1DUNN1Dw/8L/Bv/CSf8Tn/AISKH/iT3niSz8YaP/0E v+ZkzX31/wAFCtc0LWL74TW/h/VNB1S3tbDUhdf2LqWl6hn/AImn/TnX5pz/AOo0v/r+1L/0Fqyw WE+v4DB5lVnVwuJpRlFexqckHepKbfLyu3xpWu9r9bLXP8z/ALO4gzLJ6WEwOPw1WVOTlVoe1qwv Qo2jCqpwnTgru0YtXtq3ZW+gvDniqx8P/Ebwb4o8QaXYf8K/0H4SeG/DGp6X/Zo1HT9T+IA8UfGa 81jxJ/Y9n/zGP+Ea8SeA/wDiZV438RtD8OeOP2bPHmn6h4W+1fC/SrDxJ4n17wb40/tTX/iB8SNQ /wCEo8ReJPDej/bPDfiLTbPwHrOm/wDFN/8AUNruvEn/ACKln+P867/4ZaF/wkHwz/sD/oKWP2P6 f8Sv/wCtXPmuTQx/DeMo06tV1cTSrU405T56Uvbe1vKpTtH2nJ7X3VzR2lqubQyfi/E5Xx1linha EsNQlhq6n7O1anyzw0OWlUu/Z8/LeUuV3tFW93X8ULKD4c6h8XP+Eo8H+F7Hwb4X+36b/wAIvpdl /aen/wBmjT/C/hz+2P8Aj88RXl5/yMh1j/l8r+j/AMCft4/E7wj8APHVv4lbXfHPiDS/hV4zk8De JygfxhYa+nhnUD4cXWASP+EiY6wq4PYjODX81l9pU/hfxVqmn3Frf40HXtRsrrr/AMw/VPbv1/Ov 1e+CHjGDWPDml29xam1t/wDl6+26l/P16V/nHUxePyPOK2MwFX+z8TOLpVaVNWo625qcoO/NbSzu rXeh/r7leV5HxHk0Mvx2H/tGlStKhiKkm60edrlqRkkmubl1jfWyTZ7x+wH+zLfeAP2dLXX/AIsa 8bq48Zaf/wAJr488eWRGn3/jbxh4g0z+2PEfiTR7zvZzf0r6+/ZKvvg78WfibqnxY8D6p/wnmsaD YHwx/wAJjrR1TUPEGmnT+f8AkMXo/wCox+teS+P/AIxWOoeB/hN8L/B/+lax/YP9i6pa8/2fpv8A xNP7H/Ovqr4H+G/CvwY0PwH4O8H2ug2n2rQtROqWllqWl6fqH9o37Z/tf7GD/wATjtXdwvk+S5XX qRy6Uq/tOWrjq03eVStWvXjTUVywp0qPtJxpwhFbybbukvl+Jq2Pxk6VPF06UKVD2lKmvZ3/AIdT klNvmV51OSLk7Loulz6U8RfFr4caN4y0r4Yah4osP+E414fbNM8L5/4mBsOOcevB/PmvMfGPwe1X xx4j+F+sX/jHxboOj+F9e1LRrrQPDGpf2fp+pafqH9ofY7y99+n511EHgDQr/wAf2vji48L6f/wl FzoOpf8AE9vdN/4mHtXrN/PpRsbXT7jXdP0wW1/p17/yEgONP1P7YRye5Ar9CpP6zzRxH7ymrXjt e/n027HwlSn7Sm4VPf7eXf16fmeIeCPgDDDrZn8b3Vjrhtr43lrbWXFjqNhgfYv7XBGCRn/9dfU3 xcv7vRPCGpX8GnLrdjbbr3XLXcinw/oFh4b1C8bVsdxv0ofjJ6mvnbwt4+8RX/xu1/Tr/U/Ap+Hy /wBm2lqLvUhp/iLTvt+mbiBk8nP86+i/A/gey+HGleL7mDVNc16DxLr5vWtr7UP7Q/s0nUTZmzQk /KMn3OARxWnDnDeSZZlWY5dkmXfVaOOnONevGf758v8ADdacoude3NU5FOceS8rfG7cHEnEGZZpm GXYvH4iU6+BlTjSpShyQfNZzcPe9y3LFvRt6aqyT8/8AhR8Q9T8ffDW3+IOvamB4S17Tl1jwj4lu j9gvf7A1DwyXGsXgIHOXYg8feyRX8eWh+I7H4f33jLwvq+qfarjS9e1Ky/7CX9n6obPt2ziv7LIv iBpvie30XT/B2l6f4w8M3PjjUvAXi82mbFfDdnYBg26z43KMLkDHDccmv4i/HHj/AF3T/i38Y9Pt 9LsNB1jQfjT8WtF1W1/5iGm/8V54iOfzr9K8LsdWyHE4DL/7Tnnn7iNGWLxC551pxXvVefmfNfmX ufZsvflfT8G8dMowvEWVQx/sv7Gp4avUcI0tYUoVoOCgo+5dxs5OXuqW/LG7tb1XSfFXiC+1TULf QdQ0rTrr/j11TWf+Jfp//wBevL5/CthbwfZ/EHjwfaLXH+i+GP8AiYVqeI/FV99hOoeKNe+y29qO brWtSr5L8VftGeHNPn/s/wAL2v8AwlGodf8AQ86fYenXt2r+huIOOZ5BlvJnvEVDJMNUu40Yu1Wc Fy2k6abnLfRQjLl67q/8d8NeFPDnFGavE5BwbjOKcTQm4SxOJnUp4RT6qU4tQhez/iS1t7trM/Rj 7Pof/QV17/vk/wCFFfIX/C4/in/0IY/8Fmq0V+SLxY4W0/4Wcf8A+E/p/wBPf6sfun/EE+I/+iIy f/wb/wDcz9/P2e/Dnwd8QeJPiz/wt/4i2HgS30zQtSvPB11rXiTS/B2n+I9f/tM/8Sg3msdf5819 fT+AP2LvA8/hi40j426fqmsapoX9tXFrefEnwwbA3+NO+xnSPtnh0bdIze6z/wATfnpknJwPyi1X Xf7H8R2usW9rYapc6Xr2pXtra61pv9oaf/aGf9DvPseOlfVGh+MNc+OH7MHxF/4aH8ZeLfE9r4O+ NHw5Pwx8ZXmm6V4v8f6dqXiHwx4x1n4j+EPDg1jULMnSP+Ea0fSP+Jb9t+oPGPD8QONc7y3inNMp wOOnhKVChQlTSdoP3FOSnO3u/wARKL5ZXs3psfc+GvCmRZpwVlGPx2AhicTiMRiISlLXevJ3S/Pv 30Przxt4C/Y48ceJ7mC7/aI8JXWhaFZAeGNbT43eAbHxB4j17UdOC2dtZ+HNJ8GqL1R4iItT3wCA CcA++T/8E2f2evItftGqfFv/AEUn/mdtL/8Amd9TX4F6rpXhzR/iNoOj+Hx4tGn2vi3wT/yUHw1p fg/xh/aH9qacbv7Z4bs9SvP8iv6+b7/j4u/+v81xcI8b8QZu8z+sZhVX1WdOK9++/Pd7LflWmvqe 3nXAnCWCq4WushwtSpV5+Z+ztfl5LdXrq/vPhjVP+CevwB1Cx/s+41T4l/Z8cD/hJNL/AKeHa7Hw P+w/8FvB8Gl2+kXXjz7Ppd+PspvPEel6h09P+Kdr6rnn7/y/I9vpVqxvhb/Zef6cdK+y/t7N/YrD f2hV+rfyc362/Q8FcJcLfXPr/wDq/hfrP83s/wDgn5U/GD/gkz+yz4n8e674w1PVfjRpupeJ71da vLbQ/GmmabprakAAxVT4OYquc4GTjpk9a77wB/wTm/Zz8L2P2DT7r4l3Vv8A9P3iPS9Q/l4d96/Q TxjPBqEFrcZH+i/j/nmsHQ5/f6c/n2+v9K/Mcw4eySvi69fE5VQxFSvJzk5Qv78knJrX7VldeW5+ zZLxTxHgcHTw2BzrEYPDUIwhCnCdoRhG7ikulrv1Py0/aE/4Js/BfUPH/g34kWHxH/aG8L6jpdj9 iFr4X+I+l6b4exp/T7bo174NnyevPGf5ec+Hf2JdJ0D4p3fxf0j9pX9qW28b3egnRNMuT4k+F50/ w5px0v7Hjw3o3/Cque9frp8VLH+0PCv9oW//ADC7/wC3Y/rmvmitMFwxw5RpL2WSUKXNa/LG17bX 321+8zzLPs6xVWFbFZtiMTUclJudS/w9Nut9XrstD+Xf46/8HHXg39kD9q39oL9jj48fADx18ToP gN8TPEfwis/j9ZfEjTf+FgeJvD/h/VMHxJ4i8O/8I1Z2K+IrpcEnTivBGM4OPr74Pf8AByR/wTO+ M/ii18Mtc+LvhLa3eoFR4h+IC6Xp6adZDlgttyPwyetfxW/8FkZ/s/8AwVk/4KF/6NYXX/GUfxIx 9u07d1Zu38A56e+e9fnz/wAJV9o/svT7jwvYWtva35vbq6suupf2fwbP/PpSxfC+X4m/JVq0HK3W E9v+vlOVv+3eVPqnpbrpcR5rT9nzVY1vZ3tzRvvbbXTbz/Q/2IPgH8Tvhx8Z/BtrrXgjxToHxP8A D/igHWrr+xm0vXxpun6j/wAeVlefY+D/AKHXoXiz4reOPCHjL4d/De1+GF/ffD/xPrep33jz40av 420jwf4T+FFjp+p58NWR0nWn/tHxf4j1nV2TTRZ2m0Atktg1/ky/Bb4/WPw/vv7Q8H+KPFvw51Af 8ff/AAjHiTxR4P7f9SfqPpX6X/Cn9oj4m+LvAnjX46/Gj9on9oX4tfD/AOHvi3wP8JPhJ8Mr/wCP nxQsdC8R/H3x9pviLxKdX1XWdI1L7Wvhrwh8IvDPiO8JF3u/tfxzoKhgpdW8avlOLwrn7KrFqO/O +S/ay97zT7XR6v8AbuHxfsliMLKmn70OV87U1a0tofDfRNNSP9JX4jfEj4f/AAJ8N2s2vPp/hm68 Ua9qA8M6FdlbDUPGvi/UNMN7/wAI5o4yf7X1g4OOvT2zX8Ifxw+MOqeKPHPxk+JAtbC1+IHjH4ta le+Mrn+zcf8AE/8AEGq8D7HX2j+wV/wS5+J3i++/Zp/4KT/tD/Fj4a2/hfXrDxH4n+E1t4m+P37R N/4w8NHUP+Ehs/8AhG9Z8OeJvB3iOzA/sbSdZOpXg17GB64Fen+Iv+CZng/xF4++Itz4Y+K/7J1y bfx5qXjXxToGt/tIftEWFgmn6h4XX4qfYr6zsv2euT/wgZOp8amR8p56Zn6rxHQ+u/VcNLD3oJp4 e0Z0pu/PDm1vb3bSsr6rlVtfJzJcOZlg8vjiHTr1qGMxCqQq35KkJwhCnO2u/NN2u2rWu1L3fxd0 n4K+OPiTPa6h4w8UX4tx/wAfVr/P619BeFfhJ4N8H/8AIP0s/aP+fm941D3/AKV+vHw6/wCCfOjX /i7wz8IfD/xU/Ze1X4lXP2CytPD1j8bfjn/aeq/8Jb4FPxe8M7Tefs+bRu+Gw/tRckYB+ba2Vrx/ 9rX9jTxV+zB4b0DxjrHij4aa7o+qePNS+GN3aeDPEvijxDqOmeMNP0rUfEpF4fEfg3Rx/wAgezr4 bO8l4gpQqZnmdKrXpR+OfxcvbTTfXrrbyPeynHZOoUMHgVHDufw04RtDpsunnqzyXyf+nT9P/sqK q+cv+c/4UV457x7d4HsfFXxo8f8A/CH+D9Bv9e8Ua9rxstL0uyx/2+Xt566PZ/8AL5X1RZweHT8R Pg54G174YfFnxR+zj8MPFmnf25dn4bePLAfEfUtR1PTv+Fj/ABV1nRR4eGbLUjZ86bnnw3XmP7Ad /wDBb4f+OPih4w/aA1S/8L/8SH7F4N1P+0vij/xLdQ/tT/icfY/+FP6jZ6kf+JP/APrr9NtD/aN/ YR8QfZtP8LfG7xbr2sWv/IU+w6l+3hqGn47k/Y/GfWv3zxGyatm/F+PzTDU5UMNX+r8inTnGUvYU +RxnGcYe5LRyim73SbVk3/NfhTioZXwPlWW4zE0qmIoyxEpKlVp1OTnrzsnySlb4dG7Xs7bM+U/F c3jLxifjFrHj7wdfWmnaVY/BTRfhPc32marqP9n3/wAL/ifYf8XHXxiPD0G0zeBf7X07POf+Ej0j Rsc5H9Cl9fYvrrr/AMhDH+cd6/LWfxH+yh8QPAGvahp+q6/488PWt8LG6tL0ftj/ANn/APCYaf8A 8TnRrP8Asfxh8Q/sfT/TK9jn/wCChX7KGj67baPqHijx5aax3/4tvqnTm8/kf1o4UyvGZd/alfEU 7U6vsLv+Xl9r99+by2+76vOsZg8TPBw+sxo29p8Ttf8Ah7eny/E+8bGeAQf6R9vPX2//AFdqLixn 8/7Rcf6Jb/5/+vX59/8AD0n9kPUJ7W3t/FHxKz6f8Kl8UfofpW9ff8FH/wBl83v2e48UePMn/qm/ ijr7e3OK+xo5fmmKgqlLBVa1N7Pkt28z5etnvDmHn7PEZpQo1Fup1LdttNet+3zPtzXZ7G3sbq3t /wDSv+nr8B+nSuD0O+guPstzb/8AHvdgV8q65/wUf/ZDtrHVPt/ifx5a29rYaj9qH/CuNUHBPJHH +cV+YXwS/wCDhb/glp498YWvww8P/Fj4tHxNqRvRokGsfAPxPoKahqGixtLcWJkuNQIEpRWIUkH5 GBwVIHj5xgMTgKMK+PpSwlON23KP2Fy88lrryXjdaX5lqj3shzjLs0xdXCZbjaWPqLkuqMueavzW 91JXvZ9Vsf0Mz+RcaVqlvcf8e5sP9Kz19P5V8g3H+utvw/ka+EP2gv8Agux/wTn+BXgDRda8a/EH 4s6bZfEHWdS8O6O9h8FfFWpajfDQLGKbxEWsftwAjLyxjdu+84GOc18Rwf8AByL/AMEjLie1/wCL tfHj8P2b/FGB68f2j9a8nLcRh8XReJwleOKw1W3JUg7wla9+V9bHv5thMXgMRHCY7DTwmJhFSlTq JxnHm6OL223vr2XX+Mr/AILE8f8ABV7/AIKG2+cZ/ak+JB6H108dfwr81PD0Av8ASzwft9r/AKFc 56/b7DkZx1+X86+5f+CiXxj8AftI/t9/tZftAfCi5v8AU/hh8Y/jt4k+IHgS61nTdT8P+INS0DUT p7Wf9r6ReAHSBk9+fwwB8W6H5Fx4q8Y+Hsc3X+nWv/YQ0/379a9EuhDkhh53vzSUbf4uvy5dutwg g+z/APIQtPtXpdWX49+9ex+Dvib8TfC9jc/Dfwv4817S/B/igf21deF7LU/+Jf8A8JB/xLv+Jx/2 GP7Hrzrz57ef7PqFr/pH5Dp0H6UaHPB/wn+gn/pw1L07f59a4a7hXg4Th+P/AADp/gf3ub5bff3P 9KX9gn/lBZ/wTLxc/af+KD8a/wClepx8Veev+cVzPhT/AJKL+0Z/14H/ANd+eIq/Ob9jH/gtR/wT b+FP/BOP9jn9j/43+Pfjv4Y+J/wK8Jto/ij/AIQ/4C+JfHnh1PEN9qPjAXiLrFrqEH9robPxExza HO44GcgD9Uv2Mvjj/wAE4/22f+Ft+KP2cvid8WLjWLrUNM0Xxja/Ez4deKfCWf8Ai1q/CA/2RpBv 1wR8OdZcAc51cAnBO0ejQ/hR9X+h89iqc6Uq8pq3JOUUu9ra+W/ma37Of/KRj4Xf9g/4A/8Arr01 8q2P7PXjH9pj4O/FDw/4X8UaDoOoeDf2h/gn4nurrxR/amoaf/Z+ofAfxpo/+h/YzX64+Bv2cvhl 8Pvjh4W+P6fEXXP7f8HNppbQNF8FeKL/AMP+I/8AhEPgPqX7PnhC0uxd6gZtIMPgX/nzA/4mRzn1 pyeFf2cPgPpfiDTvg1dfEi1uPHni/wAOa14vbx8dW1CwK+D/AAxqXhzRf7JDab8rBbxc4JyQSMZx VYnLYZhRlgcZQ9rhsR8Ub2vb5PuzBY/+z5wxmGrcmJpfBK217X0vrfTqtj8uf+HbPxo/6Hv4af8A l0f/ADO0V+s//Cc+Ff8An60/8/FP/wAr6K+f/wBR+Fv+gCr/AOFNf/5I9D/XLOP+gul/4J/+38z8 a9Z0XRrbwq/2fSdMg+0eL/ElvceTYWsXn2+D+4m2RDzYf9lsr7V9bfDjQNCtvhSYbbRdJt4pF/eR QabZxRyc/wAaRwgN+Ioor9UzT/e8R/19n+UT8o4R3of9gv8AkdH8P7W1tvhhr0NvbW9vF/wlmpfu oYY4o/8AkVx/Aigdz2718OalpWly6z4glk02wklA1LEr2du8n/IK/vtHn9aKK5cv/wBzxf8A19f6 Hq8Q/wAfI/8Atz80cto+laZFNbeVpthH0/1dnbp/6DGK9j/s+wxaf6FadD/y7Q+h/wBiiiv0/Kf9 xpf10R+AZ1/vb9P0RwmqafYSTXXmWVpJ/v20Lev95K/i41jRdG039oS0u9O0nTLC6tv2h9S+z3Nl YWtrcQf8VQB+5mgiVouP7pFFFfn/AIhf8i+n/wBesX/6ZP0/wl/5KSX/AHTv/T8z9Dv+Ctui6Pc+ L/2Z4bnSdMuIbb4Ra5c28U9hayxwXF548/0yeFJIiIppcnzGUBn/AIia/KPS/Dfh3+1v+QBov/Hi f+YXY+3/AEwoor8Z4J/5JXKf+43/AKfmf1Lx1/yV+c+mH/8ATEDvbHw14c+26Uf7A0TP/YKsfQ/9 MK4PRPDfh3/han/IA0X/AI/9S/5hVj/0Cz/0woor6g+Wrf8ALj/r7D9T2XXfCvhjzj/xTmg9v+YP p/oP+neuM8OeG/Dv/CcaT/xINF/5AWpf8wqx/wDjFFFc9D7fy/U7q/2Pn+h6Jqvhvw755/4kGi9f +gVY+/8A0wr+k3/g3Z0XRo/iB8d/L0nTI/8Aii9Ok+SwtU+fP3/li+/79aKK0y//AHyl/XVHn53/ ALpT/wCvsP1P66vD1rax58u2gj4/ghjTt/srVfWbCwlnPm2VpJz/AB20L+v95DRRXuV/sfP9D58d /Z2n/wDPjZ/+A0H/AMRRRRXnnQf/2Q== ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://img.constantcontact.com/ui/images1/safe_subscribe_logo.gif R0lGODlhqAAOAMQAADOZANnsz1msMMzMzDiXCJnMfzyVEGazQPL570CfEL/fr0GUF8zlv1mmM02m IHx8fJmZmf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA AAAALAAAAACoAA4AAAX/YCSOZGmeaKqubOu+cCzPdG3feK7v8eP/QJ+o4BDwjsgTZAkxNXfPl/Dk QwgAAKMImPqhuN/HTThdMSPRZzo5irrE4pJ4cE0oRtMySS+P8/FxOH9OJEtoam1oik1rh2mGiiJu jIiSVFsjBw0IEQUACQF7gYBwXhFgfHmlpqesplxkYK1lkIyRa7WRi4m4iW2IjXJ4IgZZAVh3omV+ pVvMs4Gqrc7T07HV1s/SvL5Mlbe63rrchd3je5g+AQRYAAdhqtfQy17S9q6j9NWxXGfhluUA2vrn xlLBRgNNwCmxDgsDFdfkDaJ2j5ozeRazURzV4qCvf4dAngspUiFHEQEMRiygoq3ZNonNNMqMGHNm zIklPAIcZ0gNpJ28JnUJAmTAAHjR6iWlx5RfU1IZnS49yQZFwRRXq2rdylWJi6xdw4odS7as2RAA Ow== ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.hawaiibusiness.com/images/powered-by.gif R0lGODlhcwARAPcAAJ+fn/X19Z6envDw8KKioqSkpP7+/v39/ZycnPn5+dXV1aCgoM/Pz/Pz89fX 17i4uNHR0aOjo+zs7IyuOvf398fHx8DAwPr6+vLy8tPT06ampvv7+6qqqr6+vvz8/KGhoerq6ry8 vNnZ2cLCwvHx8e3t7aysrNvb25ubm6enp/T09M3NzeTk5LW1tcrKyvj4+NTU1KWlpcTExLm5ue/v 752dneLi4t3d3a+vr+Hh4dbW1ujo6MHBwfb29s7OzsbGxt/f36urq62trb29vevr66mpqdLS0u7u 7snJyeDg4Le3t8PDw+bm5qioqMvLy7q6utjY2LS0tLOzs7GxsczMzNPgs+Xl5dra2r+/v7a2tsjI yLCwsOPj48XFxd7e3tDQ0LKysq6urv///pGyQ9zc3JGxQtfjuo2vPPr698PUl9TU0+rw26C8XPf4 9Pj686rDbu/05fP26vn69u7y4bLJe/X29PT18Pr7+b3Rjru7u+fn57/Skfb39Obt1MTVms7drJW0 Sc/dreTl4u/w7fH15+np6fT37NvmwfX38/j59Jqamv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABzABEA AAj/ABcJHEiwoMGDBwdE8SKQQhYFCCNKFCjGYMWBBg4e8DCxo8ePBkGgyCAwQI0KHQeQEUEGxAaB PXxAyOBjxwAFfAj9qcKzSiBDdTI0ALEiAwQIDQQy+WHhBEcbUK7cOCHiRFKBLAYsSgACA8ivBSUI gLgoAAEkHY0oIkBA0QMVi0jgWKBIiAiRXeaMmcB3Qhk4IxCUAGIChQApRBatUNQkjKIQL4YUaCsg RgobAhOYYLDoRQaUYENLAEDWLNqJRgjkIAKjhoUDizx0AADXwAMAbfD0neDHDoLXiwZwePCSiIAZ GC7A4EEhwBEbipDQoHFBYBJFQRIYUEEjdOgjpEsS/6DSEUIMEgKdFPC6yAKABAJvKFLQZ6/fNWpQ 5CjJYYbAEwhgJhBsAjWgCEkDHdDCBzWIUNASK0xBUg8yBJGBCksAsYEWTBjQgQ02mBBCABjwwAAP GJwQBBYULKIADj8sUFoMDzywxAAy6LAIBkOwMBAEBXS3CAQEoLfIbC3GpoEJd7zBFx1yRIDDS4s0 MFxGJRAAxhEZETSAIpwNZIUiUDwRRJcCoTDFFAKoUMEHTwAAgxQWYFCDESQs4AMHWWiwhFgCVGAD AU8UUAEJCEwBBgo6LtJDExGEgMAKM5iwyAmKFPJjASBQwEIEQxCI5EAMKMKFGROccYggikAwkJUP dP8pQgGKWGCFl2ASpEQRG9yAwA0ELcDFAAVkwIELi2yBxRItgKCICzfgUEEBl6aQBAFOLIKEBkOm oAAAEohVWgQyLCIEFgx8sGEQ1QmUAQImgAGAFFoJNGqBAOSBBiBsuBEFAQG8euVAErgQwbMEfhnm IiAIQN4GRURB4CIaSPDoEgTAcOQMDgihQwQjVKCEEzWMEMUCDmhwQnsCyIADADKkQEIA4ZX1wQqL PPDEDjHs0MIPBGUQ6WPt2gtAkgIFNsAeaQyCwAgEwYpmgUMoAmxwuQrEgwBHJODBCgj4KFDFAaRg wQIkddBCCUGE8EQIW1DhAwo8aAFFEhE4iEXLLjj/sO0AKtQcwAfkPdCCBzjEfLVAEGigQhfgEnSv UopokUgcFSiSmMCxLnJB0QkgwINACgt0BK0FRBBBWxZ0yWnZLsRgxCIzZHEADgWIEEINTEAgwCIb 6IC3gzxwG4ADDERAQgOCf5BtFC0sMgIAJrDHeJA9pBDGCwOdDd9AF2SxgAeIFNDCxIuo0J9APygx UAIlk571Cii44MMKKzDwwAKbI1DBFwJgwQOmkIMFAM0CH8DACBSRACAo4go/+MANYgCFRThAAF7o wAIc6AMnMKokMdhCEgAANQd2oCBAKsEiuKCILmTkAkMAAAbQ5wBFiOAKigBCQY5QBCVUxwWKgMEB /xIggxzKjzMBKEAICpInoC2CAEIQQAsMYAUCLEAIWumYARgQBuANQQAC0EEJCnAFzykBAAsQwQGU cBiUlaQIJtDAB3awCBogQGME+UIEJCAQJCDgBAHgAAAY46qBBKAIGkiBCXpAECikAAECwAERLjAD FBShCYqoAIFokKsvKEJsGBlBDQQSgxxI4HsN0AP3gJeUBARsEQfYgQo9MIDvbYAJQnrBDihAgu8Z gAQUkEC9HEAAFRKkBCdY5QUckIMXwEABDjACHQmSOUX4oCAgMIIDFKADuHjAASGwwH7e5wAV5sAL HCkIBvBYAFB6550CaYEJ0PdOCSAgAsaEJ0gI4CFOfYIFAx8AjT8XIQX/DPQjVljlQb/iKUYe1AZJ WGhHAgIAOw== ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://pixel.quantserve.com/pixel/p-155UsT_Yy1Za-.gif R0lGODlhAQABAAAAACwAAAAAAQABAID///8AAAACAkQBADs= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/css/hb-nav.css #navigation-container { FLOAT: left; MARGIN: auto; WIDTH: 970px; HEIGHT: 60px } UL#nav { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 970px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 35px; = PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; = LIST-STYLE-TYPE: none; POSITION: relative; BORDER-COLLAPSE: collapse; = BACKGROUND-COLOR: #999999; TEXT-ALIGN: center; BORDER-BOTTOM-STYLE: none } UL#nav LI { BORDER-RIGHT: #fff 1px solid; PADDING-RIGHT: 0px; DISPLAY: inline; = PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: 14px; FLOAT: left; = PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; COLOR: #000; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS, Georgia, "Times New Roman", = Times, serif; WHITE-SPACE: nowrap; LIST-STYLE-TYPE: none; = BORDER-BOTTOM-STYLE: none } UL#nav LI:hover { COLOR: #fff; BACKGROUND-COLOR: #333 } LI#home { WIDTH: 73px } LI#polls { WIDTH: 82px } LI#cp { WIDTH: 112px } LI#hbtv { WIDTH: 86px } LI#regions { WIDTH: 98px } LI#events { WIDTH: 93px } LI#topics { WIDTH: 86px } LI#industry { WIDTH: 99px } LI#hawaiidata { WIDTH: 121px } UL#nav LI#archive { WIDTH: 101px; BORDER-RIGHT-STYLE: none } #nav A { PADDING-RIGHT: 18px; DISPLAY: block; PADDING-LEFT: 18px; FONT-WEIGHT: = bold; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; = CURSOR: pointer; COLOR: #666; PADDING-TOP: 0px; FONT-FAMILY: Trebuchet = MS, Georgia, "Times New Roman", Times, serif; TEXT-DECORATION: none; = outline: none } #nav A.menuButton { BACKGROUND-COLOR: #999 } #nav A.menuButton-on { COLOR: #000; BACKGROUND-COLOR: #666 } UL#nav LI A:hover { COLOR: #fff; BACKGROUND-COLOR: #333 } DIV.menu { VISIBILITY: hidden; WIDTH: 970px; POSITION: absolute; TOP: 0px; = TEXT-ALIGN: center } DIV.menu TABLE { MARGIN: auto; BORDER-COLLAPSE: collapse } DIV.menu A { PADDING-RIGHT: 1.9em; DISPLAY: block; PADDING-LEFT: 1.9em; FONT-SIZE: = 13px; PADDING-BOTTOM: 0px; COLOR: #fff; LINE-HEIGHT: 25px; PADDING-TOP: = 0px; FONT-STYLE: italic; FONT-FAMILY: Trebuchet MS, Georgia, "Times New = Roman", Times, serif; WHITE-SPACE: nowrap; TEXT-DECORATION: none; = outline: none } DIV.menu A.tight { PADDING-RIGHT: 0.87em; DISPLAY: block; PADDING-LEFT: 0.87em; FONT-SIZE: = 13px; PADDING-BOTTOM: 0px; COLOR: #fff; LINE-HEIGHT: 25px; PADDING-TOP: = 0px; FONT-STYLE: italic; FONT-FAMILY: Trebuchet MS, Georgia, "Times New = Roman", Times, serif; WHITE-SPACE: nowrap; TEXT-DECORATION: none; = outline: none } DIV.menu A:hover { BACKGROUND-COLOR: #336699; TEXT-DECORATION: none } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/css/hb.css @import url( /css/hb-nav.css ); BODY { FONT-SIZE: 9pt; BACKGROUND-IMAGE: url(/images/page-bg.gif); MARGIN: = 0px; LINE-HEIGHT: 1.2em; BACKGROUND-REPEAT: repeat-x; FONT-FAMILY: = Helvetica, Georgia, "Times New Roman", Times, serif; BACKGROUND-COLOR: = #eee } FORM { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } A { COLOR: #336699; TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline } A:active { outline: none } A IMG { BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: = none; BORDER-BOTTOM-STYLE: none } .clearfix:unknown { CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: = "." } .clearfix { DISPLAY: inline-block } TABLE { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } H1 { MARGIN-TOP: 0.25em; FONT-WEIGHT: normal; FONT-SIZE: 24pt; = MARGIN-BOTTOM: 0.25em; COLOR: #000000; LINE-HEIGHT: normal; FONT-FAMILY: = Helvetica } H2 { MARGIN-TOP: 0.5em; FONT-WEIGHT: normal; FONT-SIZE: 16pt; MARGIN-BOTTOM: = 0.5em; COLOR: #333; LINE-HEIGHT: normal; FONT-FAMILY: Helvetica } H3 { MARGIN-TOP: 0.5em; FONT-WEIGHT: bold; FONT-SIZE: 12pt; MARGIN-BOTTOM: = 0.5em; COLOR: #666; LINE-HEIGHT: normal; FONT-FAMILY: Helvetica } H4 { FONT-SIZE: 11pt; MARGIN: 0.5em 0px; COLOR: #666; LINE-HEIGHT: normal; = FONT-FAMILY: Helvetica, sans-serif } H5 { MARGIN-TOP: 0.5em; FONT-SIZE: 9pt; MARGIN-BOTTOM: 0.5em; COLOR: #666; = LINE-HEIGHT: normal; FONT-FAMILY: Helvetica, sans-serif } H6 { MARGIN-TOP: 0.5em; FONT-SIZE: 8pt; MARGIN-BOTTOM: 0.5em; COLOR: #666; = LINE-HEIGHT: normal; FONT-FAMILY: Helvetica, sans-serif } .pullquote { BORDER-TOP: #990000 1px solid; MARGIN-TOP: 10px; FONT-SIZE: 16pt; = MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 10px; COLOR: #990000; LINE-HEIGHT: = normal; PADDING-TOP: 10px; BORDER-BOTTOM: #990000 1px solid; = FONT-FAMILY: Trebuchet MS, Arial, Helvetica, sans-serif; TEXT-ALIGN: = center } ADDRESS { MARGIN-BOTTOM: 0.25em } P { MARGIN-TOP: 0px; MARGIN-BOTTOM: 1.5em } BLOCKQUOTE { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; FONT-STYLE: italic } IFRAME { BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: = none; BORDER-BOTTOM-STYLE: none } #columns-1-2 { DISPLAY: inline; FLOAT: left; WIDTH: 724px; MARGIN-RIGHT: 10px } #splash { DISPLAY: inline; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 724px; = BACKGROUND-COLOR: #fff } #home-splash { DISPLAY: inline; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 724px; = BACKGROUND-COLOR: #fff } #home-splash IMG { MARGIN-BOTTOM: 0px } .search-field { WIDTH: 125px } #column-1 DIV { BACKGROUND-COLOR: #fff } #column-2 DIV { BACKGROUND-COLOR: #fff } #column-3 DIV { BACKGROUND-COLOR: #fff } #column-1 { DISPLAY: inline; FLOAT: left; WIDTH: 394px } .home-header-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: = 394px; PADDING-TOP: 0px; BORDER-BOTTOM: #70744e 1px solid; = BACKGROUND-COLOR: #b6bc96 } H2.headline { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 24px; PADDING-BOTTOM: = 2px; MARGIN: 0px; TEXT-TRANSFORM: uppercase; COLOR: #808548; = LINE-HEIGHT: 20px; PADDING-TOP: 2px; FONT-FAMILY: Arial, Helvetica, = sans-serif } .header-link { MARGIN-TOP: -13px; FONT-SIZE: 7pt; FLOAT: right; TEXT-TRANSFORM: = uppercase; COLOR: #000; FONT-FAMILY: Georgia } .header-box .headline H2 { FONT-WEIGHT: normal; FONT-SIZE: 16pt; MARGIN: 0px; LINE-HEIGHT: 0.7em; = FONT-FAMILY: Trebuchet MS, Arial, Helvetica, sans-serif } #column-1-content { BORDER-RIGHT: #e1ddd2 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: = #e1ddd2 1px solid; PADDING-LEFT: 15px; FLOAT: left; PADDING-BOTTOM: = 15px; BORDER-LEFT: #e1ddd2 1px solid; PADDING-TOP: 15px; BORDER-BOTTOM: = #e1ddd2 1px solid; BACKGROUND-COLOR: #fff } #column-1 H3 { MARGIN-TOP: 0px } #column-1 H4 { MARGIN-TOP: 0px } #column-2 H4 { MARGIN-TOP: 0px } .clear { CLEAR: both; FONT-SIZE: 1px } .photo-credit { FONT-WEIGHT: bold; FONT-SIZE: 10px; MARGIN: 5px 0px; TEXT-TRANSFORM: = uppercase; COLOR: #666666; LINE-HEIGHT: normal; FONT-FAMILY: Arial, = Helvetica, sans-serif; TEXT-ALIGN: left } .photo-description { FONT-SIZE: 10px; MARGIN: 5px 0px; COLOR: #666666; LINE-HEIGHT: normal; = FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left } #column-2 { DISPLAY: inline; FLOAT: right; WIDTH: 320px } .square-ad { MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 20px; LINE-HEIGHT: 0px; = PADDING-TOP: 20px; BACKGROUND-COLOR: #fff; TEXT-ALIGN: center } .column-2-content { MARGIN: 15px } #column-3 { DISPLAY: inline; FLOAT: left; WIDTH: 236px } .column-3-box { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: white } .column-3-box .header { BORDER-TOP: #5b5f33 1px solid; FONT-WEIGHT: bolder; FONT-SIZE: 9px; = MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; = COLOR: #808548; PADDING-TOP: 3px; BORDER-BOTTOM: #5b5f33 1px solid; = FONT-FAMILY: Arial; TEXT-ALIGN: center } .column-3-box .header H2 { FONT-SIZE: 8pt; MARGIN: 0px; TEXT-TRANSFORM: uppercase; COLOR: #808080; = LETTER-SPACING: 1px } .column-3-content { MARGIN: 8px; BACKGROUND-COLOR: white } .section-heading { FONT-WEIGHT: bold; FONT-SIZE: 18px; MARGIN-BOTTOM: 20px; = TEXT-TRANSFORM: uppercase; COLOR: #a6a6a6; FONT-FAMILY: Arial } .section-title { FONT-SIZE: 32px; MARGIN-BOTTOM: 15px; COLOR: black; FONT-FAMILY: = Trebuchet MS, Arial, Helvetica, sans-serif } .section-description { FONT-SIZE: 13px; MARGIN-BOTTOM: 12px; FONT-FAMILY: Arial } .section-byline { FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #20508b; FONT-FAMILY: Arial } #page-container { MARGIN: auto; WIDTH: 970px; TEXT-ALIGN: left } #header { FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: auto; WIDTH: 970px; = BACKGROUND-COLOR: #fff } #page-body { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 10px; WIDTH: 970px; PADDING-TOP: 10px } #footer { PADDING-RIGHT: 30px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 30px; = FONT-SIZE: 8pt; FLOAT: left; WIDTH: 910px; COLOR: #666; MARGIN-RIGHT: = -3px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: = white; TEXT-ALIGN: center } #footer A { TEXT-DECORATION: none } #footer A:hover { TEXT-DECORATION: underline } #footer P { MARGIN: 10px 0px; LINE-HEIGHT: 1.5em } #footer DIV { LINE-HEIGHT: 1.5em } #header-top { FLOAT: left; MARGIN: auto; WIDTH: 970px; PADDING-TOP: 10px; HEIGHT: = 90px } #topleft { FLOAT: left; WIDTH: 232px; HEIGHT: 90px; BACKGROUND-COLOR: #fff } #weather-date { FLOAT: left; WIDTH: 232px; BACKGROUND-COLOR: #eee } #stock-ticker { HEIGHT: 90px; TEXT-ALIGN: center } #stock-ticker H4 { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 3px; COLOR: #fff; PADDING-TOP: 3px; BACKGROUND-COLOR: #333; TEXT-ALIGN: = center } #date { BORDER-TOP: #fff 1px solid; PADDING-BOTTOM: 6px; VERTICAL-ALIGN: = middle; PADDING-TOP: 8px; HEIGHT: 20px; TEXT-ALIGN: center } #leaderboard { FLOAT: right; WIDTH: 728px; HEIGHT: 90px; BACKGROUND-COLOR: #eee; = TEXT-ALIGN: center } *:first-child + HTML #leaderboard { MARGIN-LEFT: 10px } #logo { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 10px 0px 0px; PADDING-TOP: 0px } #logo IMG { FLOAT: left } #branding { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: left; = BACKGROUND-IMAGE: url(/images/logo-masthead.jpg); PADDING-BOTTOM: 0px; = MARGIN: 0px; WIDTH: 970px; PADDING-TOP: 0px; BACKGROUND-REPEAT: = no-repeat; HEIGHT: 109px; BACKGROUND-COLOR: #fff; TEXT-ALIGN: left } #headerright { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: right; = PADDING-BOTTOM: 0px; MARGIN: 0px 100px 0px 0px; PADDING-TOP: 0px; = TEXT-ALIGN: left } #headerright-row1 { FONT-SIZE: 10px; PADDING-BOTTOM: 13px; COLOR: #fff; PADDING-TOP: 13px } #headerright-row1 A { FONT-SIZE: 10px; TEXT-TRANSFORM: uppercase; FONT-FAMILY: Arial, = Helvetica, sans-serif } #headerright-row2 { MARGIN-TOP: 6px } .searchform { WIDTH: 350px; MARGIN-RIGHT: 5px } #talk-back { FLOAT: left } DIV.article-list { MARGIN-TOP: 0px; BACKGROUND: #fff } DIV.period { FONT-WEIGHT: normal; FONT-SIZE: 14pt; TEXT-TRANSFORM: uppercase; COLOR: = #20508b; PADDING-TOP: 5px; FONT-FAMILY: Trebuchet MS, Arial, Helvetica, = sans-serif; TEXT-ALIGN: right } TABLE.articles H3 { FONT-WEIGHT: normal; FONT-SIZE: 14pt; PADDING-BOTTOM: 0px; MARGIN: 0px; = TEXT-TRANSFORM: uppercase; COLOR: #000; PADDING-TOP: 10px; FONT-FAMILY: = Trebuchet MS, Arial, Helvetica, sans-serif; TEXT-ALIGN: left } TABLE.articles TH H3 { FLOAT: left } TABLE.articles { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; BACKGROUND: #fff; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; LINE-HEIGHT: normal; = PADDING-TOP: 0px; BORDER-COLLAPSE: collapse; BORDER-RIGHT-WIDTH: 0px } TABLE#archive TH { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 5px; = VERTICAL-ALIGN: top; TEXT-TRANSFORM: uppercase; COLOR: #999; = PADDING-TOP: 20px; BORDER-BOTTOM: #666 1px dotted } TABLE.articles TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; = VERTICAL-ALIGN: top; PADDING-TOP: 10px } .article-item P { MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px } TR.article-item TD { BORDER-TOP: #ccc 1px solid } TABLE#archive TR.article-item TD { BORDER-TOP-STYLE: none; BORDER-BOTTOM: #ccc 1px solid } TABLE#archive { MARGIN-BOTTOM: 10px } TD.article-image { WIDTH: 92px } .article-summary { PADDING-BOTTOM: 4px } TABLE.articles TD.department-content { PADDING-TOP: 0px } .article-byline { FONT-SIZE: 8pt; TEXT-TRANSFORM: uppercase; FONT-FAMILY: Arial, = Helvetica, sans-serif } .article-item IMG { BORDER-RIGHT: black 3px solid; BORDER-TOP: black 3px solid; = BORDER-LEFT: black 3px solid; MARGIN-RIGHT: 12px; BORDER-BOTTOM: black = 3px solid } TR.department-header TD { PADDING-BOTTOM: 0px; BORDER-BOTTOM: #ccc 1px solid } TR.department-header TD { =09 } .archive-link { MARGIN-TOP: 10px; FONT-WEIGHT: normal; FONT-SIZE: 10px; PADDING-BOTTOM: = 0px; TEXT-TRANSFORM: uppercase; MARGIN-RIGHT: 5px; FONT-FAMILY: Arial, = Helvetica, sans-serif; TEXT-ALIGN: right } TABLE.articles TD.archive-link { PADDING-BOTTOM: 0px; VERTICAL-ALIGN: bottom; WHITE-SPACE: nowrap } DIV.archive-link { FLOAT: right } .archive-link A:hover { COLOR: #000; TEXT-DECORATION: none } .header-left { FONT-WEIGHT: bold; FONT-SIZE: 9pt } .header-left A:hover { COLOR: #000; TEXT-DECORATION: none } .horizontal-rule { CLEAR: both; BORDER-TOP: #cccccc 1px solid; MARGIN: 10px 0px; = BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 1px; BACKGROUND-COLOR: white } H2.pink { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #990290 } .modulepink { BORDER-RIGHT: #990290 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #990290 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #990290 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #990290 1px solid } H2.yellow { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #909902 } .moduleyellow { BORDER-RIGHT: #909902 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #909902 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #909902 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #909902 1px solid } H2.orange { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #993300 } .moduleorange { BORDER-RIGHT: #993300 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #993300 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #993300 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #993300 1px solid } H2.red { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #990000 } .modulered { BORDER-RIGHT: #990000 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #990000 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #990000 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #990000 1px solid } H2.blue { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #336699 } .moduleblue { BORDER-RIGHT: #336699 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #336699 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #336699 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #336699 1px solid } H2.green { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #336600 } .modulegreen { BORDER-RIGHT: #336600 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #336600 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #336600 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #336600 1px solid } H2.brown { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 16pt; = PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: 31px; = PADDING-TOP: 0px; FONT-FAMILY: Trebuchet MS; BACKGROUND-COLOR: #996600 } H2.pink A { COLOR: #fff } H2.yellow A { COLOR: #fff } H2.orange A { COLOR: #fff } H2.blue A { COLOR: #fff } H2.green A { COLOR: #fff } H2.brown A { COLOR: #fff } .modulebrown { BORDER-RIGHT: #996600 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #996600 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #996600 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #996600 1px solid } #searchtop { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; PADDING-TOP: 15px; TEXT-ALIGN: left } .coverimage { BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; = BORDER-LEFT: #ffffff 1px solid; BORDER-BOTTOM: #ffffff 1px solid } .issueperiod { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; TEXT-ALIGN: center } .menuitemul { PADDING-BOTTOM: 6px; PADDING-TOP: 6px; BORDER-BOTTOM: #bfbfbf 1px solid } .menuitemul2 { BORDER-TOP: #bfbfbf 1px solid; PADDING-BOTTOM: 6px; PADDING-TOP: 6px; = BORDER-BOTTOM: #bfbfbf 1px solid } .boldlink { FONT-WEIGHT: bold } .boldbluelink { FONT-WEIGHT: bold; COLOR: #20508b } .event-date { COLOR: black } .white { COLOR: white } .subscribe-top { FONT-SIZE: 12px } .subscribe-big { FONT-WEIGHT: bold; FONT-SIZE: 33px; MARGIN-BOTTOM: 10px } UL.video { MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 0px; MARGIN-LEFT: = 0px; LIST-STYLE-TYPE: none } LI.video { BACKGROUND-POSITION: 0px 0.5em; PADDING-LEFT: 25px; BACKGROUND-IMAGE: = url(/images/icon-video.gif); LINE-HEIGHT: 14px; PADDING-TOP: 3px; = BACKGROUND-REPEAT: no-repeat } A.black { COLOR: #000 } #breadcrumb { PADDING-RIGHT: 10px; MARGIN-TOP: 10px; DISPLAY: inline; PADDING-LEFT: = 10px; FONT-SIZE: 10px; BACKGROUND: #fff; FLOAT: left; PADDING-BOTTOM: = 10px; TEXT-TRANSFORM: uppercase; WIDTH: 950px; LINE-HEIGHT: 1.75em; = PADDING-TOP: 10px; FONT-FAMILY: Verdana } #x01-ad { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #fff; = TEXT-ALIGN: center } #right1-ad { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #fff; = TEXT-ALIGN: center } .ad { MARGIN-TOP: -5px; FONT-SIZE: 10px; MARGIN-BOTTOM: 3px; TEXT-TRANSFORM: = uppercase; COLOR: #999999; LINE-HEIGHT: 200%; FONT-FAMILY: = Arial,Helvetica,sans-serif; TEXT-ALIGN: center } .left-justify-pic { MARGIN-TOP: 5px; FLOAT: left; MARGIN-BOTTOM: 5px; MARGIN-RIGHT: 15px; = POSITION: relative } .left-justify-pic P { FONT-SIZE: 11px; MARGIN: 5px 0px; COLOR: #666666; LINE-HEIGHT: normal; = FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left } .right-justify-pic { MARGIN-TOP: 5px; FLOAT: right; MARGIN-BOTTOM: 5px; MARGIN-LEFT: 15px; = TEXT-ALIGN: right } .right-justify-pic P { FONT-SIZE: 11px; MARGIN: 5px 0px; COLOR: #666666; LINE-HEIGHT: normal; = FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left } UL.child-page-menu { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: = 0px 0px 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #fff } DIV.column-3-box UL.child-page-menu { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } UL.child-page-menu LI:first-child { BORDER-TOP: #ccc 1px solid } UL.child-page-menu LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 1px solid; LIST-STYLE-TYPE: = none; BORDER-COLLAPSE: collapse } UL.child-page-menu LI A { PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: = bold; BACKGROUND: #fff; PADDING-BOTTOM: 5px; PADDING-TOP: 5px; = TEXT-DECORATION: none } UL.child-page-menu LI A:hover { BACKGROUND: #f5f5f5; TEXT-DECORATION: none } DIV.content-box UL.child-page-menu { MARGIN-BOTTOM: 0px } #pager { MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; LINE-HEIGHT: 35px; FONT-FAMILY: = Arial, Helvetica, sans-serif } #pager .pageritem { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px = solid; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px = solid } #pager A.pageritem { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px = solid; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px = solid } #pager A.pageritem:link { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px = solid; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px = solid; BACKGROUND-COLOR: #eeeeee } #pager A.pageritem:visited { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px = solid; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px = solid; BACKGROUND-COLOR: #eeeeee } #pager A.pageritem:hover { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px = solid; COLOR: #fff; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: = #ccc 1px solid; BACKGROUND-COLOR: #3399ff; TEXT-DECORATION: none } #pager A.pageritem:active { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px = solid; COLOR: #fff; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: = #ccc 1px solid; BACKGROUND-COLOR: #3399ff; TEXT-DECORATION: none } .table-cell-01 { BACKGROUND-COLOR: #f5f5f5 } .table-cell-02 { BACKGROUND-COLOR: #fff } .subform { WIDTH: 120px } .header-link A { COLOR: #fff } P.fineprint { MARGIN-TOP: 20px } .fineprint { FONT-SIZE: 75%; LINE-HEIGHT: 1.5em; FONT-FAMILY: Arial, Helvetica, = sans-serif } .errors { FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #ff0000 } #subscribebox { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 10px; PADDING-TOP: 0px } #subscribebox .header-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px; BORDER-BOTTOM: #b6bc96 1px solid; BACKGROUND-COLOR: = #808548; TEXT-ALIGN: center } #subscribebox .header-box .headline H2 { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; = FONT-WEIGHT: bold; FONT-SIZE: 18px; PADDING-BOTTOM: 0px! important; = MARGIN: 0px; TEXT-TRANSFORM: uppercase; COLOR: #afb58c; LINE-HEIGHT: = 13px; PADDING-TOP: 0px! important; FONT-FAMILY: Arial, Helvetica, = sans-serif } #subscribebox .header-box .headline A { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; = FONT-WEIGHT: bold; FONT-SIZE: 18px; PADDING-BOTTOM: 0px! important; = MARGIN: 0px; TEXT-TRANSFORM: uppercase; COLOR: #afb58c; LINE-HEIGHT: = 13px; PADDING-TOP: 0px! important; FONT-FAMILY: Arial, Helvetica, = sans-serif } #subscribebox .header-box .headline A:hover { TEXT-DECORATION: none } #subscribebox .content-box { HEIGHT: 235px; BACKGROUND-COLOR: #b6bc96! important; TEXT-ALIGN: center } .subscribe-price { MARGIN-TOP: 6px; FONT-SIZE: 18px; COLOR: white; FONT-FAMILY: Trebuchet = MS, Arial, Helvetica, sans-serif } .content-box { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; = PADDING-TOP: 10px } .content-box-menu { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .content-box-white { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: white } .covers-title { FONT-WEIGHT: bold; FONT-SIZE: 12px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; COLOR: #656565; PADDING-TOP: 6px; BORDER-BOTTOM: = #cccccc 1px solid } .caption { FONT-STYLE: italic } #columns-1-2 DIV.video { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 20px; PADDING-BOTTOM: 10px; = BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #ccc 1px = solid } #columns-1-2 DIV.video-player { FLOAT: left; MARGIN-RIGHT: 20px } .sponsorship { MARGIN-TOP: 10px; FLOAT: left; WIDTH: 970px; POSITION: relative; = HEIGHT: 70px; BACKGROUND-COLOR: #fff } .sponsorship-ad { MARGIN-TOP: 5px; FONT-SIZE: 7pt; FLOAT: right; MARGIN-BOTTOM: 5px; = TEXT-TRANSFORM: uppercase; MARGIN-RIGHT: 5px; FONT-FAMILY: Arial, = Helvetica, sans-serif } .sponsorship H2 { MARGIN-TOP: 24px; DISPLAY: inline; FONT-WEIGHT: normal; FONT-SIZE: = 38px; FLOAT: left; MARGIN-LEFT: 10px; TEXT-TRANSFORM: uppercase; COLOR: = #2caae2; LINE-HEIGHT: 27px; FONT-FAMILY: Georgia, "Times New Roman", = Times, serif } .sponsor-logo { LEFT: 5px; FLOAT: left; BOTTOM: 5px; POSITION: absolute } .sponsorship#entertainment { COLOR: #c58caf; BACKGROUND-COLOR: #9c0058 } .sponsorship#charitable-registry { COLOR: #c58caf; BACKGROUND-COLOR: #9c0058 } .sponsorship#shop { COLOR: #ee0033; BACKGROUND-COLOR: #c4141b } .sponsorship#events { COLOR: #c6dc73; BACKGROUND-COLOR: #919f54 } .sponsorship#travel { COLOR: #f0abd5; BACKGROUND-COLOR: #9f407a } .sponsorship#dine { COLOR: #b63e3c; BACKGROUND-COLOR: #5e1308 } .sponsorship#calendar { COLOR: #aac75c; BACKGROUND-COLOR: #4c5a27 } .sponsorship#real-estate { COLOR: #5e62b6; BACKGROUND-COLOR: #20508b } .sponsorship#about-marin { COLOR: #aaa989; BACKGROUND-COLOR: #d8d8ae } .sponsorship#resources { COLOR: #ffe997; BACKGROUND-COLOR: #f5b834 } UL.restaurants { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 10px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } UL.shortlist { OVERFLOW: auto; MAX-HEIGHT: 150px } UL.medlist { OVERFLOW: auto; MAX-HEIGHT: 400px } * HTML UL.medlist { HEIGHT: 400px } * HTML UL.shortlist { HEIGHT: 100px } UL.restaurants LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #fff 1px solid; LIST-STYLE-TYPE: = none } UL.restaurants LI A:unknown { FONT-WEIGHT: bold; FONT-SIZE: 1.25em; LINE-HEIGHT: 1em; content: "=BB " } UL.restaurants LI A { PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 5px; BACKGROUND: = #f1f5f6; PADDING-BOTTOM: 3px; COLOR: #333; PADDING-TOP: 3px; = TEXT-DECORATION: none; outline: none } UL.restaurants LI A:hover { BACKGROUND: #e3ebee; COLOR: #000; TEXT-DECORATION: none } H5.cuisine-head { PADDING-RIGHT: 10px; MARGIN-TOP: 10px; PADDING-LEFT: 10px; FONT-WEIGHT: = bold; FONT-SIZE: 10px; MARGIN-BOTTOM: 1px; PADDING-BOTTOM: 4px; = TEXT-TRANSFORM: uppercase; COLOR: #fff; PADDING-TOP: 4px; FONT-FAMILY: = Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #7da9bc } UL.restaurants LI.rowA A { BACKGROUND: #f0f2ea } UL.restaurants LI.rowB A { BACKGROUND: #fff } UL.restaurants LI.rowA A:hover { BACKGROUND: #dbd666 } UL.restaurants LI.rowB A:hover { BACKGROUND: #dbd666 } #pagetools { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; FONT-SIZE: 10px; PADDING-BOTTOM: 5px; = TEXT-TRANSFORM: uppercase; BORDER-LEFT: #ccc 1px solid; COLOR: #aaa; = PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid; FONT-FAMILY: Arial, = Helvetica, sans-serif } #pagetools IMG { VERTICAL-ALIGN: middle; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: = none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none } #pagetools A { CURSOR: pointer; MARGIN-RIGHT: 10px; TEXT-DECORATION: none } TABLE.mini-calendar P { MARGIN: 0px } .single-rule { CLEAR: both; BORDER-TOP: #cccccc 1px solid; MARGIN: 10px 0px; HEIGHT: = 1px; BORDER-BOTTOM-STYLE: none } TABLE.mini-calendar H4 { FONT-SIZE: 10pt; MARGIN: 0.25em 0px; COLOR: #666; LINE-HEIGHT: normal } TABLE.mini-calendar H5 { MARGIN-TOP: 0.25em; FONT-SIZE: 9pt; MARGIN-BOTTOM: 0.25em; COLOR: #666; = LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif } .by-line { FONT-WEIGHT: bold; FONT-SIZE: 9pt; MARGIN: 15px 0px; TEXT-TRANSFORM: = uppercase; COLOR: #20508b; FONT-FAMILY: Arial, Helvetica, sans-serif } P.subscribe { PADDING-RIGHT: 0px; BORDER-TOP: #333 1px dashed; MARGIN-TOP: 10px; = PADDING-LEFT: 0px; FONT-SIZE: 8pt; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: = 5px; PADDING-TOP: 5px; BORDER-BOTTOM: #333 1px dashed; FONT-STYLE: = italic; TEXT-ALIGN: right } .lead-article-title { FONT-SIZE: 30px; COLOR: #9c0058; FONT-FAMILY: Trebuchet MS, Arial, = Helvetica, sans-serif } .lead-article-image { FLOAT: left; MARGIN-RIGHT: 15px } .lead-article-title:hover { COLOR: #666; TEXT-DECORATION: none } .lead-article-description { FONT-SIZE: 12px; COLOR: #000; LINE-HEIGHT: 1.75em; FONT-FAMILY: = Trebuchet MS, Arial, Helvetica, sans-serif } .lead-article-byline { MARGIN-TOP: 12px; FONT-WEIGHT: bold; FONT-SIZE: 12px; TEXT-TRANSFORM: = uppercase; COLOR: #9c0058; FONT-FAMILY: Arial, Helvetica, sans-serif } .module-box { MARGIN-BOTTOM: 10px; BACKGROUND-COLOR: #fff } .module-box .module-header { FONT-WEIGHT: bold; FONT-SIZE: 10pt; TEXT-TRANSFORM: uppercase; = LINE-HEIGHT: 31px; FONT-FAMILY: Arial, Helvetica, sans-serif; = TEXT-ALIGN: center } .module-header A { DISPLAY: block; TEXT-DECORATION: none } .module-header A:hover { COLOR: #000; BACKGROUND-COLOR: #b3b8ad } .blue-box { COLOR: #fff; BACKGROUND-COLOR: #6a96cf } .blue-header { BACKGROUND-IMAGE: url(/images/headbg_blue.gif); BACKGROUND-REPEAT: = repeat-x } .yellow-box { BACKGROUND-COLOR: #f5b834 } .yellow-header { BACKGROUND-IMAGE: url(/images/headbg_yellow.gif); BACKGROUND-REPEAT: = repeat-x } .sage-box { BACKGROUND-COLOR: #919f54 } .sage-header { BACKGROUND-IMAGE: url(/images/headbg_sage.gif); BACKGROUND-REPEAT: = repeat-x } .red-box { BACKGROUND-COLOR: #c4141b } .red-header { BACKGROUND-IMAGE: url(/images/headbg_red.gif); BACKGROUND-REPEAT: = repeat-x } .sienna-box { COLOR: #fff; BACKGROUND-COLOR: #9a1f0d } .sienna-header { BACKGROUND-IMAGE: url(/images/headbg_sienna.gif); BACKGROUND-REPEAT: = repeat-x } .taupe-box { BACKGROUND-COLOR: #ced4c7 } .taupe-header { COLOR: #567b67; BORDER-BOTTOM: #f5f5f5 1px solid; BACKGROUND-COLOR: = #ced4c7 } .white-box { BACKGROUND-COLOR: #fff } .white-header { BACKGROUND-IMAGE: url(/images/headbg_silver.gif); BACKGROUND-REPEAT: = repeat-x } .module-item-title { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #004893; FONT-FAMILY: = Trebuchet MS, Arial, Helvetica, sans-serif } .module-item-desc { PADDING-BOTTOM: 6px; PADDING-TOP: 6px } .module-item-title-light { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #fff; FONT-FAMILY: Trebuchet = MS, Arial, Helvetica, sans-serif } .module-item-desc-light { PADDING-BOTTOM: 6px; COLOR: #fff; PADDING-TOP: 6px } #columns-1-2-white { PADDING-RIGHT: 10px; DISPLAY: inline; PADDING-LEFT: 10px; FLOAT: left; = PADDING-BOTTOM: 10px; WIDTH: 740px; LINE-HEIGHT: 1.75em; MARGIN-RIGHT: = 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: white } .archive-link-2 { MARGIN-TOP: 19px; FONT-WEIGHT: normal; FONT-SIZE: 10px; PADDING-BOTTOM: = 0px; TEXT-TRANSFORM: uppercase; FONT-FAMILY: Arial, Helvetica, = sans-serif; TEXT-ALIGN: right } .cuisine-head { PADDING-RIGHT: 10px; MARGIN-TOP: 10px; PADDING-LEFT: 10px; FONT-WEIGHT: = bold; FONT-SIZE: 10px; MARGIN-BOTTOM: 1px; PADDING-BOTTOM: 4px; = TEXT-TRANSFORM: uppercase; COLOR: #fff; PADDING-TOP: 4px; FONT-FAMILY: = Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #a1adb3 } P.page-break { MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; COLOR: #666; FONT-STYLE: italic } .content-box UL.chevron { FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 10px } .content-box-white UL.chevron { FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 10px } .content-box UL.chevron LI { BACKGROUND-POSITION: 0px 1em; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 2.5em; = BORDER-BOTTOM: #ccc 1px solid } .content-box-white UL.chevron LI { BACKGROUND-POSITION: 0px 1em; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 2.5em; = BORDER-BOTTOM: #ccc 1px solid } .content-box UL.chevron LI UL LI { BORDER-BOTTOM-STYLE: none } .content-box-white UL.chevron LI UL LI { BORDER-BOTTOM-STYLE: none } .content-box UL.chevron LI:first-child { BORDER-TOP: #ccc 1px solid } .content-box-white UL.chevron LI:first-child { BORDER-TOP: #ccc 1px solid } .content-box UL.chevron LI UL LI:first-child { BORDER-TOP-STYLE: none } .content-box-white UL.chevron LI UL LI:first-child { BORDER-TOP-STYLE: none } UL.chevron { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = MARGIN-LEFT: 10px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } UL.chevron LI { BACKGROUND-POSITION: 0px 0.5em; PADDING-LEFT: 15px; BACKGROUND-IMAGE: = url(/images/bullet.gif); LINE-HEIGHT: 1.75em; BACKGROUND-REPEAT: = no-repeat } UL.chevron LI UL LI { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } .dropcap { FONT-WEIGHT: normal; FONT-SIZE: 600%; FLOAT: left; COLOR: #2baae2; = LINE-HEIGHT: 80%; MARGIN-RIGHT: 0.1em; PADDING-TOP: 2px; FONT-FAMILY: = Trebuchet MS, Arial, Helvetica, sans-serif } .pullquote { BORDER-TOP: #9e3a20 1px solid; MARGIN-TOP: 10px; FONT-SIZE: 16pt; = MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 10px; COLOR: #9e3a20; LINE-HEIGHT: = normal; PADDING-TOP: 10px; BORDER-BOTTOM: #9e3a20 1px solid; = FONT-FAMILY: Trebuchet MS, Arial, Helvetica, sans-serif; TEXT-ALIGN: = center } .resource { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 10px; = BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #ccc 1px = solid } .promo { BORDER-RIGHT: rgb(148,153,101) 1px solid; BORDER-TOP: rgb(148,153,101) = 1px solid; MARGIN-BOTTOM: 10px; BORDER-LEFT: rgb(148,153,101) 1px solid; = BORDER-BOTTOM: rgb(148,153,101) 1px solid; BACKGROUND-COLOR: = rgb(241,243,232); TEXT-ALIGN: center } .promo A { PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; = PADDING-BOTTOM: 10px; PADDING-TOP: 10px } .moduleright { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; MARGIN-BOTTOM: 10px; = PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #fff } .newstands { FONT-SIZE: 20px; MARGIN-BOTTOM: 8px } .subscribenow { MARGIN-TOP: 10px; FONT-SIZE: 24px } .newsletter-signup { TEXT-ALIGN: center } .newsletter-signup P { MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em } TABLE.stock-table { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 11px; PADDING-BOTTOM: 0px; MARGIN-LEFT: auto; LINE-HEIGHT: 1.1em; = MARGIN-RIGHT: auto; PADDING-TOP: 0px; FONT-FAMILY: Tahoma } TD.stock-green { COLOR: #009e04 } TD.stock-red { COLOR: #ca0000 } #article .comments .comment .commentcontent { PADDING-BOTTOM: 5px } #article .comments .commenttitle { MARGIN-BOTTOM: 0px } #usercomments TEXTAREA#commentField { WIDTH: 95%! important } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/css/hb-article.css #columns-1-2 { DISPLAY: inline; FLOAT: left; WIDTH: 640px; MARGIN-RIGHT: 10px } #article { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: #fff; = MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 15px; LINE-HEIGHT: 1.75em; = PADDING-TOP: 15px; FONT-FAMILY: Georgia, "Times New Roman", Times, serif } #article-image { FLOAT: left; MARGIN-BOTTOM: 15px; MARGIN-RIGHT: 15px } #column-3 { DISPLAY: inline; FLOAT: left; WIDTH: 320px } .column-3-box { BORDER-RIGHT: #fff 10px solid; BORDER-TOP: #fff 10px solid; MARGIN-TOP: = 10px; BORDER-LEFT: #fff 10px solid; BORDER-BOTTOM: #fff 10px solid } .column-3-content { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } #bottom-ad { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; = PADDING-TOP: 10px; BACKGROUND-COLOR: #fff; TEXT-ALIGN: center } #x01-ad { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; = PADDING-TOP: 10px; BACKGROUND-COLOR: white } #article .dropcap { FONT-FAMILY: Georgia, "Times New Roman", Times, serif } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/css/feedtools.css #poptagmenu { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 2px; Z-INDEX: 100; FLOAT: left; VISIBILITY: hidden; = PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; LINE-HEIGHT: 1.75em; = PADDING-TOP: 2px; BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; = BACKGROUND-COLOR: #fff } #poptagmenu A { PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 5px; FONT-SIZE: 12px; = MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 2px; TEXT-TRANSFORM: none; COLOR: = #000; MARGIN-RIGHT: 0px; PADDING-TOP: 2px; WHITE-SPACE: nowrap; = BACKGROUND-COLOR: #f5f5f5 } #pagetools #poptagmenu A { MARGIN-RIGHT: 0px } #poptagmenu A:hover { COLOR: #fff; BACKGROUND-COLOR: #f9812c } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/css/comments.css #commentmodule { BORDER-TOP: #ccc 1px solid; MARGIN-TOP: 10px; PADDING-TOP: 10px } .commentcontent { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; = PADDING-TOP: 10px; BACKGROUND-COLOR: #f5f5f5 } .buttondiv { FONT-WEIGHT: bold; FONT-SIZE: 10px; TEXT-TRANSFORM: uppercase; = FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: right } .commenttools A { TEXT-TRANSFORM: uppercase } .flagged { FONT-WEIGHT: bold; FONT-SIZE: 10px; TEXT-TRANSFORM: uppercase; COLOR: = #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: right } .commenttools A.selected { FONT-WEIGHT: bold; FONT-SIZE: 10px; TEXT-TRANSFORM: uppercase; COLOR: = #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: right } .commenttools { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px; TEXT-ALIGN: right } .commenttitle { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 5px; = PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; = BORDER-BOTTOM: #ccc 1px solid } .comment { MARGIN-BOTTOM: 10px } .commenttitle .stats { FONT-WEIGHT: normal; FONT-SIZE: 10px; FLOAT: right; TEXT-TRANSFORM: = uppercase; TEXT-ALIGN: right } .commenttitle .responseID { BORDER-TOP: #ccc 1px dotted; FONT-SIZE: 10px; TEXT-TRANSFORM: = uppercase; FONT-FAMILY: Arial, Helvetica, sans-serif } .commenttitle .commentauthor { FONT-SIZE: 10px; TEXT-TRANSFORM: uppercase } TEXTAREA#commentField { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 10px 0px; = BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #ccc 1px = solid; HEIGHT: 200px } TABLE#commentForm { BORDER-TOP: #999 1px solid; WIDTH: 100%; BORDER-BOTTOM: #999 1px solid; = BORDER-COLLAPSE: collapse } TABLE#commentForm TD { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/css/tabmenu.css .tabmenu { WIDTH: 100%; BORDER-COLLAPSE: collapse } .tabmenu TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; = BORDER-LEFT-STYLE: none; TEXT-ALIGN: center; BORDER-BOTTOM-STYLE: none } .tabmenu TD A { BORDER-RIGHT: #c6c6c6 1px solid; BORDER-TOP: #c6c6c6 1px solid; = DISPLAY: block; BACKGROUND-IMAGE: = url(/core/media/images/geobase-tab.gif); BORDER-LEFT: #c6c6c6 1px solid; = LINE-HEIGHT: 24px; BORDER-BOTTOM: #c6c6c6 1px solid; BACKGROUND-REPEAT: = repeat-x } .tabmenu TD A.unselected { BORDER-RIGHT: #c6c6c6 1px solid; BORDER-TOP: #c6c6c6 1px solid; = DISPLAY: block; BACKGROUND-IMAGE: = url(/core/media/images/geobase-tab.gif); BORDER-LEFT: #c6c6c6 1px solid; = LINE-HEIGHT: 24px; BORDER-BOTTOM: #c6c6c6 1px solid; BACKGROUND-REPEAT: = repeat-x } .tabmenu TD A:hover { BACKGROUND-IMAGE: url(/core/media/images/geobase-tab-selected.gif); = COLOR: #000; TEXT-DECORATION: none } .tabmenu TD A:active { BACKGROUND-IMAGE: url(/core/media/images/geobase-tab-selected.gif); = BORDER-BOTTOM: #fff 1px solid; outline: none } .tabmenu TD A:focus { BACKGROUND-IMAGE: url(/core/media/images/geobase-tab-selected.gif); = BORDER-BOTTOM: #fff 1px solid; outline: none } .tabmenu TD A.selected { BACKGROUND-IMAGE: url(/core/media/images/geobase-tab-selected.gif); = BORDER-BOTTOM: #fff 1px solid; outline: none } #tabcontentcontainer { BORDER-RIGHT: #c6c6c6 1px solid; PADDING-RIGHT: 15px; PADDING-LEFT: = 15px; PADDING-BOTTOM: 15px; BORDER-LEFT: #c6c6c6 1px solid; = BORDER-TOP-STYLE: none; PADDING-TOP: 15px; BORDER-BOTTOM: #c6c6c6 1px = solid } .tabmenu-hidden { DISPLAY: none } .tabmenu-displayed { DISPLAY: block } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/validate.js // validate.js v 1.98=0A= // a generic form validator=0A= // (cc) Brian Lalonde http://webcoder.info/downloads/validate.html=0A= // License: http://creativecommons.org/licenses/by-sa/2.0/=0A= var status =3D '';=0A= function show(object) {=0A= if (document.getElementById) {=0A= document.getElementById(object).style.visibility =3D 'visible';=0A= }=0A= else if (document.layers && document.layers[object]) {=0A= document.layers[object].visibility =3D 'visible';=0A= }=0A= else if (document.all) {=0A= document.all[object].style.visibility =3D 'visible';=0A= }=0A= }=0A= =0A= function hide(object) {=0A= if (document.getElementById) {=0A= document.getElementById(object).style.visibility =3D 'hidden';=0A= }=0A= else if (document.layers && document.layers[object]) {=0A= document.layers[object].visibility =3D 'hidden';=0A= }=0A= else if (document.all) {=0A= document.all[object].style.visibility =3D 'hidden';=0A= }=0A= }=0A= =0A= function toggleVisibility(divname){=0A= divobj=3Ddocument.getElementById(divname);=0A= if(!divobj) return;=0A= if (divobj.style.visibility=3D=3D"hidden"){=0A= divobj.style.visibility=3D"visible";=0A= }=0A= else {=0A= divobj.style.visibility=3D"hidden";=0A= }=0A= }=0A= =0A= function formFocus(frm)=0A= { // convenient way to start the form onLoad=0A= if(!document.forms.length) return;=0A= var els=3D ( frm || document.forms[0] ).elements;=0A= for(var i=3D 0; i < els.length; i++)=0A= if(els[i].type !=3D 'hidden') {=0A= els[i].focus();=0A= if(isRequired(els[i])) requireValue(els[i]);=0A= return; }=0A= }=0A= =0A= function formChanged(frm)=0A= { // determine whether any form fields have changed=0A= if(!document.forms.length) return;=0A= var els=3D ( frm || document.forms[0] ).elements;=0A= for(var i=3D 0; i < els.length; i++)=0A= switch(els[i].type)=0A= {=0A= case 'text':=0A= case 'textarea':=0A= case 'password':=0A= case 'hidden':=0A= case 'file':=0A= if(els[i].defaultValue!=3Dels[i].value)=0A= { status=3D 'The '+fieldname(els[i])+' field has changed.'; = return true; }=0A= break;=0A= case 'checkbox':=0A= if(els[i].defaultChecked!=3Dels[i].checked)=0A= { status=3D 'The '+fieldname(els[i])+' checkbox has changed.'; = return true; }=0A= break;=0A= case 'select-one':=0A= for(var j=3D 1; j < els[i].options.length; j++)=0A= = if(els[i].options[j].defaultSelected!=3Dels[i].options[j].selected)=0A= { status=3D 'The '+fieldname(els[i])+' selection has = changed.'; return true; }=0A= break;=0A= case 'select-multiple':=0A= for(var j=3D 0; j < els[i].options.length; j++)=0A= = if(els[i].options[j].defaultSelected!=3Dels[i].options[j].selected)=0A= { status=3D 'The '+fieldname(els[i])+' selections have = changed.'; return true; }=0A= break;=0A= case 'radio':=0A= if(els[i].length)=0A= for(var j=3D 0; j < els[i].length; j++)=0A= if(els[i][j].defaultChecked!=3Dels[i][j].checked)=0A= { status=3D 'The '+fieldname(els[i])+' choice has changed.'; = return true; }=0A= break;=0A= }=0A= return false;=0A= }=0A= =0A= function fieldname(fld)=0A= { // get the field label text or name=0A= // if(fld.id)=0A= // {=0A= lbl=3Dfld.getAttribute('label');=0A= if(!lbl || lbl =3D=3D '') lbl=3Dfld.name;=0A= return lbl;=0A= /*=0A= for(var i=3D 0, lbl=3D document.getElementsByTagName('LABEL'); i < = lbl.length; i++)=0A= if(lbl[i].htmlFor=3D=3Dfld.id) return = lbl[i].nodeValue||lbl[i].textContent||lbl[i].innerText;=0A= for(var i=3D 0, lbl=3D document.getElementsByTagName('label'); i < = lbl.length; i++)=0A= if(lbl[i].htmlFor=3D=3Dfld.id) return = lbl[i].nodeValue||lbl[i].textContent||lbl[i].innerText;=0A= */=0A= // }=0A= // return fld.name||fld.type;=0A= }=0A= =0A= function isRequired(fld)=0A= {=0A= =0A= r=3Dfld.getAttribute('required');=0A= if(r && r=3D=3D'true') {=0A= return true;=0A= }=0A= return false;=0A= }=0A= function requireValue(fld)=0A= { // disallow a blank field=0A= if(fld.disabled) return true;=0A= if(!fld.value.length)=0A= { status=3D 'The '+fieldname(fld)+' field cannot be left blank.'; = return false; }=0A= return true;=0A= }=0A= =0A= function requireChecked(fld)=0A= { // require a checkbox to be checked=0A= if(fld.disabled) return true;=0A= if(!fld.checked)=0A= { status=3D 'The '+fieldname(fld)+' checkbox must be checked.'; return = false; }=0A= return true;=0A= }=0A= function requireValueIfChecked(fld,targetId) {=0A= var targetElem =3D document.getElementById(targetId);=0A= if (targetElem && targetElem.checked) return requireValue(fld);=0A= return true;=0A= =0A= }=0A= =0A= function requireSelectedIfChecked(fld,targetId,options) {=0A= var targetElem =3D document.getElementById(targetId);=0A= if (targetElem && targetElem.checked) return = requireSelected(fld,options);=0A= return true;=0A= }=0A= =0A= function requireSelected(fld,options) {=0A= var firstOptionIsBlank =3D false;=0A= var index =3D fld.selectedIndex;=0A= if (options) {=0A= firstOptionIsBlank =3D options.firstOptionIsBlank || false;=0A= }=0A= =0A= if (index =3D=3D -1 || (firstOptionIsBlank && 0 =3D=3D = fld.selectedIndex)) {=0A= status =3D 'The ' + fieldname(fld) + ' must be selected.';=0A= return false;=0A= }=0A= return true;=0A= }=0A= =0A= function requireConfirmation(fld,confirmfld)=0A= { // require fields to match=0A= if(fld.disabled) return true;=0A= if(fld.value !=3D confirmfld.value)=0A= { status=3D 'The '+fieldname(fld)+' field does not match the = '+fieldname(confirmfld)+' field.'; return false; }=0A= return true;=0A= }=0A= =0A= function requireRadio(radios)=0A= { // require at least one radio in this group to be checked=0A= if(!radios.length) return true; // invalid parameter=0A= var visible =3D false, enabled =3D false;=0A= for(var i=3D 0; i < radios.length; i++)=0A= {=0A= if(!enabled) enabled=3D !radios[i].disabled;=0A= if(radios[i].checked) return true;=0A= else if((typeof(radios[i].offsetWidth) !=3D 'undefined') && = (radios[i].offsetWidth > 0)) {=0A= visible =3D true;=0A= }=0A= }=0A= if(!visible||!enabled) return true; // no visible/enabled options in = this group=0A= status =3D 'You must select one of the '+ fieldname(radios[0]) + ' = options.';=0A= return false;=0A= }=0A= =0A= function requireLength(fld,min,max)=0A= { // set minimum and/or maximum field lengths=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var len=3D fld.value.length;=0A= if(min > -1 && len < min)=0A= { status=3D 'The '+fieldname(fld)+' field must be at least '+min+=0A= ' characters long; it is currently '+len+' characters long.'; return = false; }=0A= if(max > -1 && len > max)=0A= { status=3D 'The '+fieldname(fld)+' field must be no more than '+max+=0A= ' characters long; it is currently '+len+' characters long.'; return = false; }=0A= return true;=0A= }=0A= =0A= function dependants(enabled,elements)=0A= { // convenience function to enable/disable dependant fields, passed in = as an array=0A= if(!elements.length) return true;=0A= for(var i=3D 0; i < elements.length; i++)=0A= elements[i].disabled=3D !enabled;=0A= }=0A= =0A= function allowChars(fld,chars)=0A= { // provide a string of acceptable chars for a field=0A= if(fld.disabled) return true;=0A= for(var i=3D 0; i < fld.value.length; i++)=0A= {=0A= if(chars.indexOf(fld.value.charAt(i)) =3D=3D -1)=0A= { status=3D 'The '+fieldname(fld)+' field may not contain = "'+fld.value.charAt(i)+'" characters.'; return false; }=0A= }=0A= return true;=0A= }=0A= =0A= function disallowChars(fld,chars)=0A= { // provide a string of unacceptable chars for a field=0A= if(fld.disabled) return true;=0A= for(var i=3D 0; i < fld.value.length; i++)=0A= {=0A= if(chars.indexOf(fld.value.charAt(i)) !=3D -1)=0A= { status=3D 'The '+fieldname(fld)+' field may not contain = "'+fld.value.charAt(i)+'" characters.'; return false; }=0A= }=0A= return true;=0A= }=0A= =0A= function checkEmail(fld)=0A= { // simple email check=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var phony=3D /@(\w+\.)*example\.(com|net|org)$/i;=0A= if(phony.test(fld.value))=0A= { status=3D 'Please enter your email address in the '+fieldname(fld)+' = field.'; return false; }=0A= var emailfmt=3D /^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,8}$/;=0A= if(!emailfmt.test(fld.value))=0A= { status=3D 'The '+fieldname(fld)+' field must contain a valid email = address.'; return false; }=0A= return true;=0A= }=0A= =0A= function checkIntRange(fld,minVal,maxVal,sep)=0A= {=0A= if(!fixInt(fld)) return false;=0A= var val=3D parseInt(fld.value);=0A= if(val < minVal) { status=3D 'The '+fieldname(fld)+' field must be no = less than '+minVal+'.'; return false; }=0A= if(val > maxVal) { status=3D 'The '+fieldname(fld)+' field must be no = greater than than '+maxVal+'.'; return false; }=0A= return true;=0A= }=0A= =0A= function checkFloatRange(fld,minVal,maxVal,sep)=0A= {=0A= if(!fixFloat(fld)) return false;=0A= var val=3D parseFloat(fld.value);=0A= if(val < minVal) { status=3D 'The '+fieldname(fld)+' field must be no = less than '+minVal+'.'; return false; }=0A= if(val > maxVal) { status=3D 'The '+fieldname(fld)+' field must be no = greater than than '+maxVal+'.'; return false; }=0A= return true;=0A= }=0A= =0A= function fixInt(fld,sep)=0A= { // integer check/complainer=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= if(typeof(sep)!=3D'undefined') val=3D val.replace(new = RegExp(sep,'g'),'');=0A= val=3D parseInt(val);=0A= if(isNaN(val))=0A= { // parse error=0A= status=3D 'The '+fieldname(fld)+' field must contain a whole = number.';=0A= return false;=0A= }=0A= fld.value=3D val;=0A= return true;=0A= }=0A= =0A= function fixFloat(fld,sep)=0A= { // decimal number check/complainer=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= if(typeof(sep)!=3D'undefined') val=3D val.replace(new = RegExp(sep,'g'),'');=0A= val=3D parseFloat(fld.value);=0A= if(isNaN(val))=0A= { // parse error=0A= status=3D 'The '+fieldname(fld)+' field must contain a number.';=0A= return false;=0A= }=0A= fld.value=3D val;=0A= return true;=0A= }=0A= =0A= function fixMoney(fld,sep)=0A= { // monetary field check=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= if(typeof(sep)!=3D'undefined') val=3D val.replace(new = RegExp(sep,'g'),'');=0A= if(val.indexOf('$') =3D=3D 0)=0A= val=3D parseFloat(val.substring(1,40));=0A= else=0A= val=3D parseFloat(val);=0A= if(isNaN(val))=0A= { // parse error=0A= status=3D 'The '+fieldname(fld)+' field must contain a dollar = amount.';=0A= return false;=0A= }=0A= var sign=3D ( val < 0 ? '-': '' );=0A= val=3D Number(Math.round(Math.abs(val)*100)).toString();=0A= while(val.length < 2) val=3D '0'+val;=0A= var len=3D val.length;=0A= val=3D sign + ( len =3D=3D 2 ? '0' : val.substring(0,len-2) ) + '.' + = val.substring(len-2,len+1);=0A= fld.value=3D val;=0A= return true;=0A= }=0A= =0A= function fixFixed(fld,dec,sep)=0A= { // fixed decimal fields=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= if(typeof(sep)!=3D'undefined') val=3D val.replace(new = RegExp(sep,'g'),'');=0A= val=3D parseFloat(fld.value);=0A= if(isNaN(val))=0A= { // parse error=0A= status=3D 'The '+fieldname(fld)+' field must contain a number.';=0A= return false;=0A= }=0A= var sign=3D ( val < 0 ? '-': '' );=0A= val=3D Number(Math.round(Math.abs(val)*Math.pow(10,dec))).toString();=0A= while(val.length < dec) val=3D '0'+val;=0A= var len=3D val.length;=0A= val=3D sign + ( len =3D=3D dec ? '0' : val.substring(0,len-dec) ) + = '.' + val.substring(len-dec,len+1);=0A= fld.value=3D val;=0A= return true;=0A= }=0A= =0A= function fixDate(fld)=0A= { // tenacious date correction=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= var dt=3D new Date(val.replace(/\D/g,'/'));=0A= if(!dt.valueOf())=0A= { // the date was unparseable=0A= status=3D 'The '+fieldname(fld)+' field has the wrong date.';=0A= return false;=0A= }=0A= fld.value=3D (dt.getMonth()+1)+'/'+dt.getDate()+'/'+dt.getFullYear();=0A= return true;=0A= }=0A= =0A= function fixRecentDate(fld,minyear)=0A= { // tenacious date correction=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= var dt=3D new Date(val.replace(/\D/g,'/'));=0A= if(!dt.valueOf())=0A= { // the date was unparseable=0A= status=3D 'The '+fieldname(fld)+' field has the wrong date.';=0A= return false;=0A= }=0A= while(dt.getFullYear() < minyear) { = dt.setFullYear(dt.getFullYear()+100); }=0A= fld.value=3D (dt.getMonth()+1)+'/'+dt.getDate()+'/'+dt.getFullYear();=0A= return true;=0A= }=0A= =0A= function fixTime(fld,starthour)=0A= { // tenacious time correction=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var hour=3D 0;=0A= var mins=3D 0;=0A= var ampm=3D 'am';=0A= val=3D fld.value;=0A= var dt=3D new Date('1/1/2000 ' + val);=0A= if(('9'+val) =3D=3D parseInt('9'+val))=0A= { hour=3D val; }=0A= else if(dt.valueOf())=0A= { hour=3D dt.getHours(); mins=3D dt.getMinutes(); }=0A= else=0A= {=0A= val=3D val.replace(/\D+/g,':');=0A= hour=3D parseInt(val);=0A= mins=3D parseInt(val.substring(val.indexOf(':')+1,20));=0A= if(val.indexOf('pm') > -1) ampm=3D 'pm';=0A= if(isNaN(hour)) hour=3D 0;=0A= if(isNaN(mins)) mins=3D 0;=0A= }=0A= if(hour < starthour) { ampm=3D 'pm'; }=0A= while(hour > 12) { hour-=3D 12; ampm=3D 'pm'; }=0A= while(mins > 60) { mins-=3D 60; hour++; }=0A= if(mins < 10) mins=3D '0' + mins;=0A= if(!hour)=0A= { // the date was unparseable=0A= status=3D 'The '+fieldname(fld)+' field has the wrong time.';=0A= return false;=0A= }=0A= fld.value=3D hour + ':' + mins + ampm;=0A= return true;=0A= }=0A= =0A= function fixTime24(fld)=0A= { // tenacious time correction=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var hour=3D 0;=0A= var mins=3D 0;=0A= val=3D fld.value;=0A= var dt=3D new Date('1/1/2000 ' + val);=0A= if(('9'+val) =3D=3D parseInt('9'+val))=0A= { hour=3D val; }=0A= else if(dt.valueOf())=0A= { hour=3D dt.getHours(); mins=3D dt.getMinutes(); }=0A= else=0A= {=0A= val=3D val.replace(/\D+/g,':');=0A= hour=3D parseInt(val);=0A= mins=3D parseInt(val.substring(val.indexOf(':')+1,20));=0A= if(isNaN(hour)) hour=3D 0;=0A= if(isNaN(mins)) mins=3D 0;=0A= if(val.indexOf('pm') > -1) hour+=3D 12;=0A= }=0A= hour%=3D 24;=0A= mins%=3D 60;=0A= if(mins < 10) mins=3D '0' + mins;=0A= fld.value=3D hour + ':' + mins;=0A= return true;=0A= }=0A= =0A= function fixPhone(fld,defaultAreaCode,sep,noext)=0A= { // tenacious phone # correction=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= if(typeof(sep)=3D=3D'undefined') sep=3D '-';=0A= if(typeof(defaultAreaCode)!=3D'undefined') defaultAreaCode=3D = defaultAreaCode + sep;=0A= var ext=3D '', val=3D fld.value.toLowerCase();=0A= if(val.indexOf('x') > 0)=0A= {=0A= if(!noext) ext=3D ' = x'+val.substr(val.indexOf('x')).replace(/\D/g,'');=0A= val=3D val.substr(0,val.indexOf('x'));=0A= }=0A= val=3D val.replace(/\D/g,'');=0A= if(val.length =3D=3D 7)=0A= {=0A= fld.value=3D defaultAreaCode + val.substring(0,3) + sep + = val.substring(3,20) + ext;=0A= return true;=0A= }=0A= if(val.length =3D=3D 10)=0A= {=0A= fld.value=3D val.substring(0,3) + sep + val.substring(3,6) + sep + = val.substring(6,20) + ext;=0A= return true;=0A= }=0A= if(val.length < 7)=0A= {=0A= status=3D 'The phone number you supplied for the '+fieldname(fld)+' = field was too short.';=0A= return false;=0A= }=0A= if(val.length > 10)=0A= {=0A= status=3D 'The phone number you supplied for the '+fieldname(fld)+' = field was too long.';=0A= return false;=0A= }=0A= status=3D 'The phone number you supplied for the '+fieldname(fld)+' = field was wrong.';=0A= return false;=0A= }=0A= =0A= function fixSSN(fld)=0A= { // tenacious SSN correction; fieldname isn't a big consideration, = probably only one SSN per form=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value;=0A= val=3D val.replace(/\D/g,'');=0A= if( val.length < 9 )=0A= {=0A= status=3D 'The Social Security Number you provided is not long = enough.';=0A= return false;=0A= }=0A= if( val.length > 9 )=0A= {=0A= status=3D 'The Social Security Number you provided is too long.';=0A= return false;=0A= }=0A= fld.value=3D = val.substring(0,3)+'-'+val.substring(3,5)+'-'+val.substring(5,12);=0A= return true;=0A= }=0A= =0A= function fixCreditCard(fld)=0A= { // tenacious credit card correction; fieldname isn't a big = consideration, probably only one card per form=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= var val=3D fld.value, ctype=3D 'credit card';=0A= if(val.indexOf('*')>=3D0) return true; // rivista uses safecc to = replace first 12 digits of card with * so we can ignore these here = because it indicates card on file=0A= val=3D val.replace(/\D/g,'');=0A= var prefix2=3D parseInt(val.substr(0,2));=0A= =0A= if( val.substr(0,1) =3D=3D '4' )=0A= { // Visa=0A= ctype=3D 'Visa\xae';=0A= if( val.length =3D=3D 16 );=0A= else if( val.length =3D=3D 13 ); // very old #, should be reassigned=0A= else if( val.length < 13 )=0A= { status=3D 'The Visa\xae number you provided is not long enough.'; = return false; }=0A= else if( val.length > 16 )=0A= { status=3D 'The Visa\xae number you provided is too long.'; return = false; }=0A= else=0A= { status=3D 'The Visa\xae number you provided is either not long = enough, or too long.'; return false; }=0A= }=0A= else if( prefix2 >=3D 51 && prefix2 <=3D 55 )=0A= { // MC=0A= ctype=3D 'MasterCard\xae';=0A= if( val.length < 16 )=0A= { status=3D 'The MasterCard\xae number you provided is not long = enough.'; return false; }=0A= else if( val.length > 16 )=0A= { status=3D 'The MasterCard\xae number you provided is too long.'; = return false; }=0A= }=0A= else if( (prefix2 =3D=3D 34) || (prefix2 =3D=3D 37) )=0A= { // AmEx=0A= ctype=3D 'American Express\xae card';=0A= if( val.length < 15 )=0A= { status=3D 'The American Express\xae card number you provided is = not long enough.'; return false; }=0A= else if( val.length > 15 )=0A= { status=3D 'The American Express\xae card number you provided is = too long.'; return false; }=0A= }=0A= else if( val.substr(0,4) =3D=3D '6011' )=0A= { // Novus/Discover=0A= ctype=3D 'Discover\xae card';=0A= if( val.length < 16 )=0A= { status=3D 'The Discover\xae card number you provided is not long = enough.'; return false; }=0A= else if( val.length > 16 )=0A= { status=3D 'The Discover\xae card number you provided is too = long.'; return false; }=0A= }=0A= else=0A= { // other=0A= if( val.length < 13 )=0A= { status=3D 'The credit card number you provided is not long = enough.'; return false; }=0A= if( val.length > 19 )=0A= { status=3D 'The credit card number you provided is too long.'; = return false; }=0A= }=0A= var sum=3D 0, dbl=3D false;=0A= for(var i=3D val.length-1; i >=3D 0; i--)=0A= {=0A= var digit=3D parseInt(val.charAt(i))*((dbl=3D!dbl)?1:2);=0A= sum+=3D ( digit > 9 ? (digit%10)+1 : digit );=0A= }=0A= if(sum%10)=0A= {=0A= status=3D 'The '+ctype+' number you provided is not valid.\nPlease = double-check it and try again.';=0A= return false;=0A= }=0A= fld.value=3D val;=0A= return true;=0A= }=0A= /* The given URL string must apply to the following criteria to pass the = test:=0A= * must start with http or https, followed by ://=0A= * domain name must consist of alphanumeric characters and dash, and = at least one dot=0A= * query string can consist of alphanum chars and a variety of special = chars (see regular exp. below)=0A= * port declaration is optional=0A= * NOTE: pattern matching is case insensitive=0A= */=0A= function fixUrl(fld) {=0A= if(!fld.value.length||fld.disabled) return true; // blank fields are = the domain of requireValue=0A= //http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=3D]*)?=0A= var pattern =3D = "^(http|https)://([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+(:[\\d]+)?(/[\\w-./?%&=3D= +;]*)?$";=0A= var regex =3D new RegExp(pattern,"i");=0A= var val=3D fld.value;=0A= if(!regex.test(val)) {=0A= status =3D val + ' is not a valid URL (E.g. make sure it starts with = http:// or https://).';=0A= return false;=0A= }=0A= return true;=0A= =0A= =0A= }=0A= =0A= function nameContains(name,str)=0A= { // Check for nontrivial inclusion=0A= // OK, *some* trivial cases must be handled...=0A= if(name =3D=3D str || name.toLowerCase() =3D=3D str.toLowerCase()) = return true;=0A= var nlen=3D name.length;=0A= var slen=3D str.length;=0A= var endat=3D nlen - slen;=0A= // too small to fit?=0A= if(nlen > str) return false;=0A= if(name.toLowerCase() =3D=3D name || name.toUpperCase() =3D=3D name)=0A= { // all lower/upper case name? underscores separate=0A= if(name.indexOf('_') =3D=3D -1) return false;=0A= str=3D str.toLowerCase();=0A= if( name.indexOf(str+'_') =3D=3D 0 ||=0A= name.indexOf('_'+str+'_') > -1 ||=0A= name.substring(endat-1,nlen+1) =3D=3D ('_'+str) )=0A= return true;=0A= }=0A= else=0A= { // proper case name? uppercase starts new words=0A= var sep=3D name.substring(slen,slen+1);=0A= if( name.indexOf(str) =3D=3D 0 && sep =3D=3D sep.toUpperCase() ) = return true;=0A= if( name.indexOf(str.toLowerCase()) =3D=3D 0 && sep =3D=3D = sep.toUpperCase() ) return true;=0A= var sep=3D name.substring(endat-1,endat);=0A= if( name.substring(endat,nlen+1) =3D=3D str ) return true;=0A= for(var index=3D name.indexOf(str); index > -1; index=3D = name.indexOf(str,index+1))=0A= { // for each occurence of the word, is it followed by a = non-lowercase char?=0A= endat=3D index+slen;=0A= sep=3D name.substring(endat,endat+1);=0A= if(sep =3D=3D sep.toUpperCase()) return true;=0A= }=0A= }=0A= return false;=0A= }=0A= =0A= function autocheckByName(frm)=0A= { // uses names of form elements to determine type=0A= for(var index=3D 0; index < frm.elements.length; index++)=0A= {=0A= var el=3D frm.elements[index];=0A= if(!el.type) continue;=0A= if(el.type =3D=3D 'text' || el.type =3D=3D 'password')=0A= { // text fields=0A= if(( =0A= nameContains(el.name,'Required')) && el.value.length =3D=3D 0)=0A= { alert('The '+fieldname(el)+' field cannot be left blank.'); = el.focus(); return false; }=0A= if(nameContains(el.name,'Date') && !fixDate(el))=0A= { alert(status); el.focus(); return false; }=0A= if(nameContains(el.name,'Time24') && !fixTime24(el))=0A= { alert(status); el.focus(); return false; }=0A= if(nameContains(el.name,'Time') && !fixTime(el))=0A= { alert(status); el.focus(); return false; }=0A= if(nameContains(el.name,'SSN') && !fixSSN(el))=0A= { alert(status); el.focus(); return false; }=0A= if(nameContains(el.name,'CC') && !fixCreditCard(el))=0A= { alert(status); el.focus(); return false; }=0A= if(nameContains(el.name,'Email') && !checkEmail(el))=0A= { alert(status); el.focus(); return false; }=0A= if( ( nameContains(el.name,'Phone') ||=0A= nameContains(el.name,'Fax') ||=0A= nameContains(el.name,'Pager') ) &&=0A= !fixPhone(el))=0A= { alert(status); el.focus(); return false; }=0A= }=0A= // handle required select and select-multiple=0A= else if(el.type.substring(0,3) =3D=3D 'sel' &&=0A= (=0A= nameContains(el.name,'Required')) && el.selectedIndex =3D=3D -1)=0A= { alert(status); el.focus(); return false; }=0A= // handle required checkbox=0A= else if(el.type =3D=3D 'checkbox' &&=0A= (=0A= nameContains(el.name,'Required')) && !requireChecked(el))=0A= { alert(status); el.focus(); return false; }=0A= else if(el.type =3D=3D 'radio' && !requireRadio(frm[el.name]))=0A= { alert(status); frm.elements[index].focus(); return false; }=0A= }=0A= //for(var index=3D 0; index < frm.elements.length; index++)=0A= // if(frm.elements[index].type =3D=3D 'submit') = frm.elements[index].disabled=3D true;=0A= return true;=0A= }=0A= =0A= function isMemberOf(elem,classname)=0A= { // checks to see if elem is a member of the (style) class=0A= // trivial cases first: no membership or simple equality=0A= if(!elem.className)=0A= return false=0A= else if(elem.className =3D=3D classname)=0A= return true;=0A= else if(elem.className.indexOf(' ') > -1)=0A= { // multiple class names; use split, if avail=0A= if(parseInt(navigator.appVersion) >=3D 4)=0A= {=0A= var names=3D elem.className.split(' ');=0A= for(var index=3D 0; index < names.length; index++)=0A= if(names[index] =3D=3D classname)=0A= return true;=0A= }=0A= // older browsers can fake it=0A= // WARNING: "fine" can be found in "oldRefined"=0A= else if(elem.className.indexOf(classname) > -1)=0A= return true;=0A= }=0A= return false;=0A= }=0A= =0A= function checkClass(el)=0A= { // validate the field, based on class membership=0A= if(el.type =3D=3D 'text' || el.type =3D=3D 'password')=0A= { // text fields=0A= if(isMemberOf(el,'required') && !requireValue(el)) return false;=0A= if(isMemberOf(el,'date') && !fixDate(el)) return false;=0A= if(isMemberOf(el,'time') && !fixTime(el)) return false;=0A= if(isMemberOf(el,'time24') && !fixTime24(el)) return false;=0A= if(isMemberOf(el,'ssn') && !fixSSN(el)) return false;=0A= if(isMemberOf(el,'cc') && !fixCreditCard(el)) return false;=0A= if(isMemberOf(el,'phone') && !fixPhone(el)) return false;=0A= if(isMemberOf(el,'money') && !fixMoney(el)) return false;=0A= if(isMemberOf(el,'int') && !fixInt(el)) return false;=0A= if(isMemberOf(el,'float') && !fixFloat(el)) return false;=0A= if(isMemberOf(el,'email') && !checkEmail(el)) return false;=0A= } // handle required select and select-multiple=0A= else if(el.type =3D=3D 'checkbox' &&=0A= isMemberOf(el,'required') && !requireChecked(el)) return false;=0A= else if(el.type.substring(0,3) =3D=3D 'sel' &&=0A= isMemberOf(el,'required') && el.selectedIndex =3D=3D -1) return = false;=0A= return true;=0A= }=0A= =0A= function autocheckByClass(frm)=0A= { // uses the CSS class of form elements to determine type=0A= for(var index=3D 0; index < frm.elements.length; index++)=0A= {=0A= var el=3D frm.elements[index];=0A= if(!el.type) continue;=0A= if(el.type =3D=3D 'radio' && !requireRadio(frm[el.name]))=0A= { alert(status); frm.elements[index].focus(); return false; }=0A= else if(!checkClass(frm.elements[index]))=0A= { alert(status); frm.elements[index].focus(); return false; }=0A= }=0A= // for(var index=3D 0; index < frm.elements.length; index++)=0A= // if(frm.elements[index].type =3D=3D 'submit') = frm.elements[index].disabled=3D true;=0A= return true;=0A= }=0A= =0A= function autocheckByBlur(frm)=0A= { // uses the onBlur handler of form elements to check value=0A= status=3D '';=0A= for(var index=3D 0; index < frm.elements.length; index++)=0A= {=0A= var el=3D frm.elements[index];=0A= if(!el.type) continue;=0A= if(el.type !=3D 'hidden' && el.name )=0A= {=0A= if(isRequired(el) && !el.onblur) el.onblur=3DrequireValue(el);=0A= if(el.onblur) {=0A= el.onblur();=0A= if(status) { alert(status); el.focus(); return false; }=0A= }=0A= }=0A= }=0A= //for(var index=3D 0; index < frm.elements.length; index++)=0A= // if(frm.elements[index].type =3D=3D 'submit') = frm.elements[index].disabled=3D true;=0A= return true;=0A= }=0A= =0A= function canCheckByBlur(frm)=0A= { // determines whether programmatic invocation of form element onblur = is available=0A= for(var index=3D 0; index < frm.elements.length; index++)=0A= {=0A= var el=3D frm.elements[index];=0A= if(!el.type) continue;=0A= if(el.type !=3D 'hidden' && el.name && = typeof(el.onblur)=3D=3D'function') return true;=0A= }=0A= return false;=0A= }=0A= =0A= function autocheck(frm)=0A= { // uses the best available method to check form values=0A= var bchar=3D navigator.appName.substring(0,1);=0A= if(isMemberOf(frm,'autocheck'))=0A= { return autocheckByClass(frm); }=0A= else if(canCheckByBlur(frm))=0A= { return autocheckByBlur(frm); }=0A= else=0A= { return autocheckByName(frm); }=0A= }=0A= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/rivista.js // checks the given email form field against the database=0A= // if the email address already exists, return false=0A= function check_email(fld,results)=0A= {=0A= listName=3D'checkemail';=0A= var r=3Ddocument.getElementById(results);=0A= if(fld.value=3D=3D'') {=0A= if(r) r.innerHTML=3D' ';=0A= return true;=0A= }=0A= reqType=3D2; // set the xml req mode=0A= var params=3D'req=3Dcheckemail&email=3D'+fld.value;=0A= var ok=3DgetXmlDocument(params);=0A= if(ok=3D=3D0 || ok=3D=3Dfld.value) {=0A= return true;=0A= if(r) r.innerHTML=3D' ';=0A= }=0A= =0A= alert('The email address you specified already exists.');=0A= //else r.innerHTML=3D'Email address already exists.';=0A= fld.value=3D'';=0A= fld.focus();=0A= return false;=0A= =0A= }=0A= =0A= function enableButtons()=0A= {=0A= return;=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].type =3D=3D "button") {=0A= aInputs[i].disabled=3Dfalse;=0A= }=0A= }=0A= return;=0A= =0A= =0A= }=0A= function disableButtons()=0A= {=0A= return;=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].type =3D=3D "button") {=0A= aInputs[i].disabled=3Dtrue;=0A= }=0A= }=0A= return;=0A= =0A= =0A= }=0A= =0A= /**=0A= * Default function. Usually would be overriden by the component=0A= */=0A= function submitbutton(formname,pressbutton,listmode) {=0A= =0A= =0A= =0A= if(pressbutton.indexOf('delete')>=3D0)=0A= {=0A= if(!confirm('Are you sure you want to delete the item(s)? This is an = unrecoverable operation.'))=0A= return false;=0A= }=0A= if(pressbutton.indexOf('save')>=3D0 || = pressbutton.indexOf('apply')>=3D0)=0A= {=0A= disableButtons();=0A= }=0A= if(window.doFormPost)=0A= {=0A= if(!doFormPost(formname,pressbutton)) return false; =0A= }=0A= submitform(formname,pressbutton,listmode);=0A= }=0A= =0A= function getSelectedRadio( srcName ) {=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].name.substr(0, 3) =3D=3D "sel") {=0A= if(aInputs[i].checked) return aInputs[i].value;=0A= }=0A= }=0A= return null;=0A= }=0A= =0A= function disableAll( srcName ) {=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].name.indexOf(srcName)=3D=3D0) {=0A= aInputs[i].disabled=3Dtrue;=0A= }=0A= }=0A= return null;=0A= }=0A= =0A= =0A= function enableAll( srcName ) {=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].name.indexOf(srcName)=3D=3D0) {=0A= aInputs[i].disabled=3Dfalse;=0A= }=0A= }=0A= return null;=0A= }=0A= =0A= =0A= function checkAll( srcName ) {=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].name.indexOf(srcName)=3D=3D0) {=0A= aInputs[i].checked=3Dtrue;=0A= }=0A= }=0A= return null;=0A= }=0A= =0A= =0A= function uncheckAll( srcName ) {=0A= var aInputs =3D document.getElementsByTagName("INPUT");=0A= for ( var i =3D 0; i < aInputs.length; i++ ) {=0A= if (aInputs[i].name.indexOf(srcName)=3D=3D0) {=0A= aInputs[i].checked=3Dfalse;=0A= }=0A= }=0A= return null;=0A= }=0A= =0A= /**=0A= * Submit the admin form=0A= */=0A= function submitform(formname,pressbutton,listmode){=0A= =0A= var objForm =3D document.getElementById (formname);=0A= objForm.action.value=3Dpressbutton+'_'+formname;=0A= if(listmode=3D=3D'1' || listmode=3D=3D'true') {=0A= val=3DgetSelectedRadio('sel');=0A= if(val!=3Dnull) {=0A= try {=0A= objForm.itm.value=3Dval;=0A= objForm.onsubmit();=0A= }=0A= catch(e){}=0A= objForm.submit();=0A= } =0A= else=0A= {=0A= alert("Please select an item from the list for " + pressbutton);=0A= }=0A= } else=0A= {=0A= objForm.submit();=0A= }=0A= }=0A= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/xml.js var req; var xmldoc; var isIE =3D false; var listName; var reqType=3D1; // listmode var xmlbusy=3Dfalse; var appid=3D0; function getItems(targetList,evt) { listName=3DtargetList; loadDoc(evt); =20 } // handles retrieved xml documents and puts them into a list box // need to modify to allow further parsing by javascript function handleXml() { xmlbusy=3Dfalse; switch(reqType) { case 1: // list mode { clearList(); buildList(); break; } case 2: // call back mode { var x=3DgetValue(); return x; break; } }=09 return true; } // handle onreadystatechange event of req object function processReqChange() { // only if req shows "loaded" if (req.readyState =3D=3D 4) { // only if "OK" if (req.status =3D=3D 200) { return handleXml(); } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } return false; } function loadXMLDoc(url)=20 { // branch for native XMLHttpRequest object if (window.XMLHttpRequest)=20 { xmlbusy=3Dtrue; req =3D new XMLHttpRequest(); //req.onreadystatechange =3D processReqChange; req.open("GET", url, false); req.send(null); return processReqChange(); // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { req =3D new ActiveXObject("Microsoft.XMLHTTP"); if (req)=20 { xmlbusy=3Dfalse; //req.onreadystatechange =3D processReqChange; req.open("GET", url, false); req.send(null); return processReqChange(); } } } function getXmlDocument(params) { // equalize W3C/IE event models to get event object // try { // this is where our url gets pieced together xmlurl=3D"/core/xmlrpc.php?" + params + '&c=3D' + = Math.random(); var x =3D loadXMLDoc(xmlurl); return x; // } // catch(e) { // var msg =3D (typeof e =3D=3D "string") ? e : = ((e.message) ? e.message : "Unknown Error"); // alert("Unable to get XML data:\n" + msg); // return; // } } function loadDoc(elem) { // equalize W3C/IE event models to get event object if (elem) { try { if (elem.selectedIndex >=3D 0) { // this is where our url gets pieced together xmlurl=3D"/core/xmlrpc.php?appid=3D" + appid + = "&id=3D" + elem.options[elem.selectedIndex].value + '&c=3D' + = Math.random(); loadXMLDoc(xmlurl); }=09 } catch(e) { var msg =3D (typeof e =3D=3D "string") ? e : = ((e.message) ? e.message : "Unknown Error"); alert("Unable to get XML data:\n" + msg); return; } } } // retrieve text of an XML document element, including // elements using namespaces function getElementTextNS(prefix, local, parentElem, index) { var result =3D ""; if (prefix && isIE) { // IE/Windows way of handling namespaces result =3D parentElem.getElementsByTagName(prefix + ":" + = local)[index]; } else { // the namespace versions of this method=20 // (getElementsByTagNameNS()) operate // differently in Safari and Mozilla, but both // return value with just local name, provided=20 // there aren't conflicts with non-namespace element // names result =3D parentElem.getElementsByTagName(local)[index]; } if (result) { // get text, accounting for possible // whitespace (carriage return) text nodes=20 if (result.childNodes.length > 1) { return result.childNodes[1].nodeValue; } else { return result.firstChild.nodeValue; =09 } } else { return "n/a"; } } // empty select list content function clearList() { var select =3D document.getElementById(listName); while (select.length > 0) { select.remove(0); } } // add item to select element the less // elegant, but compatible way. function appendToSelect(select, value, content) { var opt; opt =3D document.createElement("option"); opt.value =3D value; opt.appendChild(document.createTextNode(content)); select.appendChild(opt); } function getValue() { var select =3D document.getElementById(listName); var items =3D req.responseXML.getElementsByTagName("item"); var value=3Dnull; if(items.length>0) { value=3DgetElementTextNS("", "value", items[0], 0); } return value; } function buildList() { var select =3D document.getElementById(listName); var items =3D req.responseXML.getElementsByTagName("item"); for (var i =3D 0; i < items.length; i++) { appendToSelect(select,=20 getElementTextNS("", "value", items[i], 0), getElementTextNS("", "text", items[i], 0)); } //document.getElementById("details").innerHTML =3D ""; } // display details retrieved from XML document function showDetail(evt) { evt =3D (evt) ? evt : ((window.event) ? window.event : null); var item, content, div; if (evt) { var select =3D (evt.target) ? evt.target : ((evt.srcElement) ? = evt.srcElement : null); if (select && select.options.length > 1) { // copy element text for // the selected item item =3D = req.responseXML.getElementsByTagName("item")[select.value]; content =3D getElementTextNS("content", "encoded", item, 0); div =3D document.getElementById("details"); div.innerHTML =3D ""; // blast new HTML content into "details"
div.innerHTML =3D content; } } } function getList(listname,params) { listName=3Dlistname; getXmlDocument(params); } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/AC_RunActiveContent.js //v1.0 //Copyright 2006 Adobe Systems, Inc. All rights reserved. function AC_AddExtension(src, ext) { if (src.indexOf('?') !=3D -1) return src.replace(/\?/, ext+'?');=20 else return src + ext; } function AC_Generateobj(objAttrs, params, embedAttrs)=20 {=20 var str =3D ''; for (var i in params) str +=3D ' = '; str +=3D ''; document.write(str); } function AC_FL_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".swf", "movie", = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" , "application/x-shockwave-flash" ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_SW_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".dcr", "src", = "clsid:166B1BCA-3F9C-11CF-8075-444553540000" , null ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ var ret =3D new Object(); ret.embedAttrs =3D new Object(); ret.params =3D new Object(); ret.objAttrs =3D new Object(); for (var i=3D0; i < args.length; i=3Di+2){ var currArg =3D args[i].toLowerCase(); =20 switch (currArg){=09 case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] =3D args[i+1]; break; case "src": case "movie":=09 args[i+1] =3D AC_AddExtension(args[i+1], ext); ret.embedAttrs["src"] =3D args[i+1]; ret.params[srcParamName] =3D args[i+1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblClick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": ret.objAttrs[args[i]] =3D args[i+1]; break; case "width": case "height": case "align": case "vspace":=20 case "hspace": case "class": case "title": case "accesskey": case "name": case "id": case "tabindex": ret.embedAttrs[args[i]] =3D ret.objAttrs[args[i]] =3D args[i+1]; break; default: ret.embedAttrs[args[i]] =3D ret.params[args[i]] =3D args[i+1]; } } ret.objAttrs["classid"] =3D classid; if (mimeType) ret.embedAttrs["type"] =3D mimeType; return ret; } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/photoContainerScaler.js // Photo Container Scaler // function addLoadEvent(func) { var oldonload =3D window.onload; if (typeof window.onload !=3D 'function') { window.onload =3D func; } else { window.onload =3D function() { oldonload(); func(); } } } // getElementsByClassName from: = http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname= / function getElementsByClassName(oElm, strTagName, oClassNames){ var arrElements =3D (strTagName =3D=3D "*" && oElm.all)? oElm.all : = oElm.getElementsByTagName(strTagName); var arrReturnElements =3D new Array(); var arrRegExpClassNames =3D new Array(); if(typeof oClassNames =3D=3D "object"){ for(var i=3D0; i=3D 0) { this.isOP =3D true; this.version =3D parseFloat(ua.substr(i + s.length)); return; } s =3D "Netscape6/"; if ((i =3D ua.indexOf(s)) >=3D 0) { this.isNS =3D true; this.version =3D parseFloat(ua.substr(i + s.length)); return; } // Treat any other "Gecko" browser as Netscape 6.1. s =3D "Gecko"; if ((i =3D ua.indexOf(s)) >=3D 0) { this.isNS =3D true; this.version =3D 6.1; return; } s =3D "MSIE"; if ((i =3D ua.indexOf(s))) { this.isIE =3D true; this.version =3D parseFloat(ua.substr(i + s.length)); return; } } var browser =3D new Browser(); //-----------------------------------------------------------------------= ----- // Code for handling the menu bar and active button. //-----------------------------------------------------------------------= ----- var activeButton =3D null; /* [MODIFIED] This code commented out, not needed for = activate/deactivate on mouseover. // Capture mouse clicks on the page so any active button can be // deactivated. if (browser.isIE) document.onmousedown =3D pageMousedown; else document.addEventListener("mousedown", pageMousedown, true); function pageMousedown(event) { var el; // If there is no active button, exit. if (activeButton =3D=3D null) return; // Find the element that was clicked on. if (browser.isIE) el =3D window.event.srcElement; else el =3D (event.target.tagName ? event.target : = event.target.parentNode); // If the active button was clicked on, exit. if (el =3D=3D activeButton) return; // If the element is not part of a menu, reset and clear the active // button. if (getContainerWith(el, "DIV", "menu") =3D=3D null) { resetButton(activeButton); activeButton =3D null; } } [END MODIFIED] */ function buttonClick(event, menuId) { var button; // Get the target button element. if (browser.isIE) button =3D window.event.srcElement; else button =3D event.currentTarget; // Blur focus from the link to remove that annoying outline. button.blur(); // Associate the named menu to this button if not already done. // Additionally, initialize menu display. if (button.menu =3D=3D null) { button.menu =3D document.getElementById(menuId); if (button.menu.isInitialized =3D=3D null) menuInit(button.menu); } // [MODIFIED] Added for activate/deactivate on mouseover. // Set mouseout event handler for the button, if not already done. // if (button.onmouseout =3D=3D null) // button.onmouseout =3D buttonOrMenuMouseout; // Exit if this button is the currently active one. if (button =3D=3D activeButton) return false; // [END MODIFIED] // Reset the currently active button, if any. if (activeButton !=3D null) resetButton(activeButton); // Activate this button, unless it was the currently active one. if (button !=3D activeButton) { depressButton(button); activeButton =3D button; } else activeButton =3D null; return false; } function buttonMouseover(event, menuId) { var button; // [MODIFIED] Added for activate/deactivate on mouseover. // Activates this button's menu if no other is currently active. if (activeButton =3D=3D null) { buttonClick(event, menuId); return; } // [END MODIFIED] // Find the target button element. if (browser.isIE) button =3D window.event.srcElement; else button =3D event.currentTarget; // If any other button menu is active, make this one active instead. if (activeButton !=3D null && activeButton !=3D button) buttonClick(event, menuId); =09 } function depressButton(button) { var x, y; // Update the button's style class to make it look like it's // depressed. button.className +=3D " menuButtonActive"; // [MODIFIED] Added for activate/deactivate on mouseover. // Set mouseout event handler for the button, if not already done. // if (button.onmouseout =3D=3D null) // button.onmouseout =3D buttonOrMenuMouseout; // if (button.menu.onmouseout =3D=3D null) // button.menu.onmouseout =3D buttonOrMenuMouseout; // [END MODIFIED] // Position the associated drop down menu under the button and // show it. x =3D getPageOffsetLeft(button); y =3D getPageOffsetTop(button) + button.offsetHeight; // For IE, adjust position. if (browser.isIE) { x +=3D button.offsetParent.clientLeft; y +=3D button.offsetParent.clientTop; } // button.menu.style.left =3D x + "px"; button.menu.style.top =3D y + "px"; button.menu.style.visibility =3D "visible"; // For IE; size, position and show the menu's IFRAME as well. // if (button.menu.iframeEl !=3D null) // { // button.menu.iframeEl.style.left =3D button.menu.style.left; // button.menu.iframeEl.style.top =3D button.menu.style.top; // button.menu.iframeEl.style.width =3D button.menu.offsetWidth + = "px"; // button.menu.iframeEl.style.height =3D button.menu.offsetHeight + = "px"; // button.menu.iframeEl.style.display =3D ""; // } } function resetButton(button) { // Restore the button's style class. removeClassName(button, "menuButtonActive"); // Hide the button's menu, first closing any sub menus. if (button.menu !=3D null) { closeSubMenu(button.menu); button.menu.style.visibility =3D "hidden"; // For IE, hide menu's IFRAME as well. // if (button.menu.iframeEl !=3D null) // button.menu.iframeEl.style.display =3D "none"; } } //-----------------------------------------------------------------------= ----- // Code to handle the menus and sub menus. //-----------------------------------------------------------------------= ----- function menuMouseover(event) { var menu; // Find the target menu element. if (browser.isIE) menu =3D getContainerWith(window.event.srcElement, "DIV", "menu"); else menu =3D event.currentTarget; // Close any active sub menu. if (menu.activeItem !=3D null) closeSubMenu(menu); } function menuItemMouseover(event, menuId) { var item, menu, x, y; // Find the target item element and its parent menu element. if (browser.isIE) item =3D getContainerWith(window.event.srcElement, "A", "menuItem"); else item =3D event.currentTarget; menu =3D getContainerWith(item, "DIV", "menu"); // Close any active sub menu and mark this one as active. if (menu.activeItem !=3D null) closeSubMenu(menu); menu.activeItem =3D item; // Highlight the item element. item.className +=3D " menuItemHighlight"; // Initialize the sub menu, if not already done. if (item.subMenu =3D=3D null) { item.subMenu =3D document.getElementById(menuId); if (item.subMenu.isInitialized =3D=3D null) menuInit(item.subMenu); } // [MODIFIED] Added for activate/deactivate on mouseover. // Set mouseout event handler for the sub menu, if not already done. // if (item.subMenu.onmouseout =3D=3D null) // item.subMenu.onmouseout =3D buttonOrMenuMouseout; // [END MODIFIED] // Get position for submenu based on the menu item. x =3D getPageOffsetLeft(item) + item.offsetWidth; y =3D getPageOffsetTop(item); // Adjust position to fit in view. var maxX, maxY; if (browser.isIE) { maxX =3D Math.max(document.documentElement.scrollLeft, = document.body.scrollLeft) + (document.documentElement.clientWidth !=3D 0 ? = document.documentElement.clientWidth : document.body.clientWidth); maxY =3D Math.max(document.documentElement.scrollTop, = document.body.scrollTop) + (document.documentElement.clientHeight !=3D 0 ? = document.documentElement.clientHeight : document.body.clientHeight); } if (browser.isOP) { maxX =3D document.documentElement.scrollLeft + window.innerWidth; maxY =3D document.documentElement.scrollTop + window.innerHeight; } if (browser.isNS) { maxX =3D window.scrollX + window.innerWidth; maxY =3D window.scrollY + window.innerHeight; } maxX -=3D item.subMenu.offsetWidth; maxY -=3D item.subMenu.offsetHeight; if (x > maxX) x =3D Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth + (menu.offsetWidth - item.offsetWidth)); y =3D Math.max(0, Math.min(y, maxY)); // Position and show the sub menu. item.subMenu.style.left =3D x + "px"; item.subMenu.style.top =3D y + "px"; item.subMenu.style.visibility =3D "visible"; // For IE; size, position and display the menu's IFRAME as well. // if (item.subMenu.iframeEl !=3D null) // { // item.subMenu.iframeEl.style.left =3D item.subMenu.style.left; // item.subMenu.iframeEl.style.top =3D item.subMenu.style.top; // item.subMenu.iframeEl.style.width =3D item.subMenu.offsetWidth + = "px"; // item.subMenu.iframeEl.style.height =3D item.subMenu.offsetHeight = + "px"; // item.subMenu.iframeEl.style.display =3D ""; // } // Stop the event from bubbling. if (browser.isIE) window.event.cancelBubble =3D true; else event.stopPropagation(); } function closeSubMenu(menu) { if (menu =3D=3D null || menu.activeItem =3D=3D null) return; // Recursively close any sub menus. if (menu.activeItem.subMenu !=3D null) { closeSubMenu(menu.activeItem.subMenu); menu.activeItem.subMenu.style.visibility =3D "hidden"; // For IE, hide the sub menu's IFRAME as well. // if (menu.activeItem.subMenu.iframeEl !=3D null) // menu.activeItem.subMenu.iframeEl.style.display =3D "none"; menu.activeItem.subMenu =3D null; } // Deactivate the active menu item. removeClassName(menu.activeItem, "menuItemHighlight"); menu.activeItem =3D null; } // [MODIFIED] Added for activate/deactivate on mouseover. Handler for = mouseout // event on buttons and menus. function buttonOrMenuMouseout(event) { var el; // If there is no active button, exit. if (activeButton =3D=3D null) return; // Find the element the mouse is moving to. if (browser.isIE) el =3D window.event.toElement; else if (event.relatedTarget !=3D null) el =3D (event.relatedTarget.tagName ? event.relatedTarget : = event.relatedTarget.parentNode); // If the element is not part of a menu, reset the active button. if (getContainerWith(el, "DIV", "menu") =3D=3D null) { resetButton(activeButton); activeButton =3D null; } } // [END MODIFIED] //-----------------------------------------------------------------------= ----- // Code to initialize menus. //-----------------------------------------------------------------------= ----- function menuInit(menu) { var itemList, spanList; var textEl, arrowEl; var itemWidth; var w, dw; var i, j; // For IE, replace arrow characters. if (browser.isIE) { menu.style.lineHeight =3D "2.5ex"; spanList =3D menu.getElementsByTagName("SPAN"); for (i =3D 0; i < spanList.length; i++) if (hasClassName(spanList[i], "menuItemArrow")) { spanList[i].style.fontFamily =3D "Webdings"; spanList[i].firstChild.nodeValue =3D "4"; } } // Find the width of a menu item. itemList =3D menu.getElementsByTagName("A"); if (itemList.length > 0) itemWidth =3D itemList[0].offsetWidth; else return; // For items with arrows, add padding to item text to make the // arrows flush right. for (i =3D 0; i < itemList.length; i++) { spanList =3D itemList[i].getElementsByTagName("SPAN"); textEl =3D null; arrowEl =3D null; for (j =3D 0; j < spanList.length; j++) { if (hasClassName(spanList[j], "menuItemText")) textEl =3D spanList[j]; if (hasClassName(spanList[j], "menuItemArrow")) arrowEl =3D spanList[j]; } if (textEl !=3D null && arrowEl !=3D null) { textEl.style.paddingRight =3D (itemWidth=20 - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px"; // For Opera, remove the negative right margin to fix a display = bug. if (browser.isOP) arrowEl.style.marginRight =3D "0px"; } } // Fix IE hover problem by setting an explicit width on first item of // the menu. if (browser.isIE) { w =3D itemList[0].offsetWidth; itemList[0].style.width =3D w + "px"; dw =3D itemList[0].offsetWidth - w; w -=3D dw; itemList[0].style.width =3D w + "px"; } // Fix the IE display problem (SELECT elements and other windowed = controls // overlaying the menu) by adding an IFRAME under the menu. // if (browser.isIE) { // var iframeEl =3D document.createElement("IFRAME"); // iframeEl.frameBorder =3D 0; // iframeEl.src =3D "javascript:;"; // iframeEl.style.display =3D "none"; // iframeEl.style.position =3D "absolute"; // iframeEl.style.filter =3D = "progid:DXImageTransform.Microsoft.Alpha(style=3D0,opacity=3D0)"; // menu.iframeEl =3D menu.parentNode.insertBefore(iframeEl, menu); // } // Mark menu as initialized. menu.isInitialized =3D true; } //-----------------------------------------------------------------------= ----- // General utility functions. //-----------------------------------------------------------------------= ----- function getContainerWith(node, tagName, className) { // Starting with the given node, find the nearest containing element // with the specified tag name and style class. while (node !=3D null) { if (node.tagName !=3D null && node.tagName =3D=3D tagName && hasClassName(node, className)) return node; node =3D node.parentNode; } return node; } function hasClassName(el, name) { var i, list; // Return true if the given element currently has the given class // name. list =3D el.className.split(" "); for (i =3D 0; i < list.length; i++) if (list[i] =3D=3D name) return true; return false; } function removeClassName(el, name) { var i, curList, newList; if (el.className =3D=3D null) return; // Remove the given class name from the element's className property. newList =3D new Array(); curList =3D el.className.split(" "); for (i =3D 0; i < curList.length; i++) if (curList[i] !=3D name) newList.push(curList[i]); el.className =3D newList.join(" "); } function getPageOffsetLeft(el) { var x; // Return the x coordinate of an element relative to the page. x =3D el.offsetLeft; if (el.offsetParent !=3D null) x +=3D getPageOffsetLeft(el.offsetParent); return x; } function getPageOffsetTop(el) { var y; // Return the x coordinate of an element relative to the page. y =3D el.offsetTop; if (el.offsetParent !=3D null) y +=3D getPageOffsetTop(el.offsetParent); return y; } //]]> ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/feedtools.js /* feedtools.js */ var ie5=3Ddocument.all && !window.opera var ns6=3Ddocument.getElementById var xOffset =3D 0; var yOffset =3D 10; function iecompattest(){ return (document.compatMode && = document.compatMode.indexOf("CSS")!=3D-1)? document.documentElement : = document.body } function showtagmenu(e){ if (!document.all&&!document.getElementById) {return;} else { clearhidetagmenu(); menuobj=3Die5? document.all.poptagmenu : = document.getElementById("poptagmenu"); eventX=3Die5? event.clientX : e.clientX; eventY=3Die5? event.clientY : e.clientY; menuobj.style.left=3Die5?iecompattest().scrollLeft+xOffset+eventX+"px" = : window.pageXOffset+xOffset+eventX+"px"; = menuobj.style.top=3Die5?iecompattest().scrollTop+yOffset+event.clientY+"p= x" : window.pageYOffset+yOffset+eventY+"px"; //menuobj.style.width=3Die5?"65%" :"auto"; menuobj.style.visibility=3D"visible"; return false } } function hidetagmenu(){ if (window.menuobj) menuobj.style.visibility=3D"hidden" } function delayhidetagmenu(){ delayhide=3DsetTimeout("hidetagmenu()",500) } function clearhidetagmenu(){ if (window.delayhide) clearTimeout(delayhide) } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/comments.js =0A= var lvl =3Dnew Array();=0A= var index=3D0;=0A= var next_lvl=3D0;=0A= reqType=3D0;=0A= =0A= // this function sets the parentid field for the reply form=0A= // when posted back the php code will attach the reply to the proper=0A= // parent record=0A= function setReplyId(replyid)=0A= {=0A= =0A= document.replyform.replyid.value=3Dreplyid;=0A= document.location.href=3D"#commentsform";=0A= document.replyform.screenname.focus();=0A= }=0A= =0A= // this function should flag a comment=0A= // sned data to /core/xmlrpc.php=0A= // need to build function=0A= // parameters to xmlrpc: /core/xmlrpc.php?req=3DflagComment&id=3D1234=0A= // you will need to create a function in /core/xmlrpc.php called = flagComment(commentid) and fill in the=0A= =0A= function flagComment(commentid)=0A= {=0A= now =3Dnew Date();=0A= getXmlDocument('req=3DflagComment&id=3D'+commentid);=0A= flagspan=3Ddocument.getElementById('flag'+commentid);=0A= if(flagspan) {=0A= flagspan.innerHTML=3D'Reported';=0A= flagspan.className=3D"flagged";=0A= =0A= }=0A= //alert('Comment flagged');=0A= }=0A= function textCounter( field, countfield, maxlimit ) {=0A= if(maxlimit=3D=3Dundefined || maxlimit<=3D0) return;=0A= =0A= if ( field.value.length > maxlimit )=0A= {=0A= field.value =3D field.value.substring( 0, maxlimit );=0A= alert( 'Textarea value can only be '+maxlimit+' characters in = length.' );=0A= return false;=0A= }=0A= else=0A= {=0A= countfield.value =3D maxlimit - field.value.length;=0A= }=0A= }=0A= ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/prototype.js /* Prototype JavaScript framework, version 1.5.1.1 * (c) 2005-2007 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style = license. * For details, see the Prototype web site: http://www.prototypejs.org/ * /*-----------------------------------------------------------------------= ---*/ var Prototype =3D { Version: '1.5.1.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1 }, BrowserFeatures: { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: (document.createElement('div').__proto__ !=3D=3D document.createElement('form').__proto__) }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } } var Class =3D { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Abstract =3D new Object(); Object.extend =3D function(destination, source) { for (var property in source) { destination[property] =3D source[property]; } return destination; } Object.extend(Object, { inspect: function(object) { try { if (object =3D=3D=3D undefined) return 'undefined'; if (object =3D=3D=3D null) return 'null'; return object.inspect ? object.inspect() : object.toString(); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type =3D typeof object; switch(type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object =3D=3D=3D null) return 'null'; if (object.toJSON) return object.toJSON(); if (object.ownerDocument =3D=3D=3D document) return; var results =3D []; for (var property in object) { var value =3D Object.toJSON(object[property]); if (value !=3D=3D undefined) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, keys: function(object) { var keys =3D []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values =3D []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({}, object); } }); Function.prototype.bind =3D function() { var __method =3D this, args =3D $A(arguments), object =3D = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } } Function.prototype.bindAsEventListener =3D function(object) { var __method =3D this, args =3D $A(arguments), object =3D = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator) { $R(0, this, true).each(iterator); return this; }, toPaddedString: function(length, radix) { var string =3D this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); Date.prototype.toJSON =3D function() { return '"' + this.getFullYear() + '-' + (this.getMonth() + 1).toPaddedString(2) + '-' + this.getDate().toPaddedString(2) + 'T' + this.getHours().toPaddedString(2) + ':' + this.getMinutes().toPaddedString(2) + ':' + this.getSeconds().toPaddedString(2) + '"'; }; var Try =3D { these: function() { var returnValue; for (var i =3D 0, length =3D arguments.length; i < length; i++) { var lambda =3D arguments[i]; try { returnValue =3D lambda(); break; } catch (e) {} } return returnValue; } } /*-----------------------------------------------------------------------= ---*/ var PeriodicalExecuter =3D Class.create(); PeriodicalExecuter.prototype =3D { initialize: function(callback, frequency) { this.callback =3D callback; this.frequency =3D frequency; this.currentlyExecuting =3D false; this.registerCallback(); }, registerCallback: function() { this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer =3D null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting =3D true; this.callback(this); } finally { this.currentlyExecuting =3D false; } } } } Object.extend(String, { interpret: function(value) { return value =3D=3D null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result =3D '', source =3D this, match; replacement =3D arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match =3D source.match(pattern)) { result +=3D source.slice(0, match.index); result +=3D String.interpret(replacement(match)); source =3D source.slice(match.index + match[0].length); } else { result +=3D source, source =3D ''; } } return result; }, sub: function(pattern, replacement, count) { replacement =3D this.gsub.prepareReplacement(replacement); count =3D count =3D=3D=3D undefined ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return this; }, truncate: function(length, truncation) { length =3D length || 30; truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : this; }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), = ''); }, extractScripts: function() { var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img'); var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return = eval(script) }); }, escapeHTML: function() { var self =3D arguments.callee; self.text.data =3D this; return self.div.innerHTML; }, unescapeHTML: function() { var div =3D document.createElement('div'); div.innerHTML =3D this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match =3D this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return {}; return match[1].split(separator || '&').inject({}, function(hash, = pair) { if ((pair =3D pair.split('=3D'))[0]) { var key =3D decodeURIComponent(pair.shift()); var value =3D pair.length > 1 ? pair.join('=3D') : pair[0]; if (value !=3D undefined) value =3D decodeURIComponent(value); if (key in hash) { if (hash[key].constructor !=3D Array) hash[key] =3D = [hash[key]]; hash[key].push(value); } else hash[key] =3D value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { var result =3D ''; for (var i =3D 0; i < count; i++) result +=3D this; return result; }, camelize: function() { var parts =3D this.split('-'), len =3D parts.length; if (len =3D=3D 1) return parts[0]; var camelized =3D this.charAt(0) =3D=3D '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i =3D 1; i < len; i++) camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) { var character =3D String.specialChar[match[0]]; return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json =3D this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + = this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) =3D=3D=3D 0; }, endsWith: function(pattern) { var d =3D this.length - pattern.length; return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d; }, empty: function() { return this =3D=3D ''; }, blank: function() { return /^\s*$/.test(this); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, { escapeHTML: function() { return = this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement =3D function(replacement) { if (typeof replacement =3D=3D 'function') return replacement; var template =3D new Template(replacement); return function(match) { return template.evaluate(match) }; } String.prototype.parseQuery =3D String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); with (String.prototype.escapeHTML) div.appendChild(text); var Template =3D Class.create(); Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/; Template.prototype =3D { initialize: function(template, pattern) { this.template =3D template.toString(); this.pattern =3D pattern || Template.Pattern; }, evaluate: function(object) { return this.template.gsub(this.pattern, function(match) { var before =3D match[1]; if (before =3D=3D '\\') return match[2]; return before + String.interpret(object[match[3]]); }); } } var $break =3D {}, $continue =3D new Error('"throw $continue" is = deprecated, use "return" instead'); var Enumerable =3D { each: function(iterator) { var index =3D 0; try { this._each(function(value) { iterator(value, index++); }); } catch (e) { if (e !=3D $break) throw e; } return this; }, eachSlice: function(number, iterator) { var index =3D -number, slices =3D [], array =3D this.toArray(); while ((index +=3D number) < array.length) slices.push(array.slice(index, index+number)); return slices.map(iterator); }, all: function(iterator) { var result =3D true; this.each(function(value, index) { result =3D result && !!(iterator || Prototype.K)(value, index); if (!result) throw $break; }); return result; }, any: function(iterator) { var result =3D false; this.each(function(value, index) { if (result =3D !!(iterator || Prototype.K)(value, index)) throw $break; }); return result; }, collect: function(iterator) { var results =3D []; this.each(function(value, index) { results.push((iterator || Prototype.K)(value, index)); }); return results; }, detect: function(iterator) { var result; this.each(function(value, index) { if (iterator(value, index)) { result =3D value; throw $break; } }); return result; }, findAll: function(iterator) { var results =3D []; this.each(function(value, index) { if (iterator(value, index)) results.push(value); }); return results; }, grep: function(pattern, iterator) { var results =3D []; this.each(function(value, index) { var stringValue =3D value.toString(); if (stringValue.match(pattern)) results.push((iterator || Prototype.K)(value, index)); }) return results; }, include: function(object) { var found =3D false; this.each(function(value) { if (value =3D=3D object) { found =3D true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator) { this.each(function(value, index) { memo =3D iterator(memo, value, index); }); return memo; }, invoke: function(method) { var args =3D $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator) { var result; this.each(function(value, index) { value =3D (iterator || Prototype.K)(value, index); if (result =3D=3D undefined || value >=3D result) result =3D value; }); return result; }, min: function(iterator) { var result; this.each(function(value, index) { value =3D (iterator || Prototype.K)(value, index); if (result =3D=3D undefined || value < result) result =3D value; }); return result; }, partition: function(iterator) { var trues =3D [], falses =3D []; this.each(function(value, index) { ((iterator || Prototype.K)(value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results =3D []; this.each(function(value, index) { results.push(value[property]); }); return results; }, reject: function(iterator) { var results =3D []; this.each(function(value, index) { if (!iterator(value, index)) results.push(value); }); return results; }, sortBy: function(iterator) { return this.map(function(value, index) { return {value: value, criteria: iterator(value, index)}; }).sort(function(left, right) { var a =3D left.criteria, b =3D right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator =3D Prototype.K, args =3D $A(arguments); if (typeof args.last() =3D=3D 'function') iterator =3D args.pop(); var collections =3D [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } } Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray }); var $A =3D Array.from =3D function(iterable) { if (!iterable) return []; if (iterable.toArray) { return iterable.toArray(); } else { var results =3D []; for (var i =3D 0, length =3D iterable.length; i < length; i++) results.push(iterable[i]); return results; } } if (Prototype.Browser.WebKit) { $A =3D Array.from =3D function(iterable) { if (!iterable) return []; if (!(typeof iterable =3D=3D 'function' && iterable =3D=3D '[object = NodeList]') && iterable.toArray) { return iterable.toArray(); } else { var results =3D []; for (var i =3D 0, length =3D iterable.length; i < length; i++) results.push(iterable[i]); return results; } } } Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse =3D Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i =3D 0, length =3D this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length =3D 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value !=3D null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(value && value.constructor =3D=3D Array ? value.flatten() : [value]); }); }, without: function() { var values =3D $A(arguments); return this.select(function(value) { return !values.include(value); }); }, indexOf: function(object) { for (var i =3D 0, length =3D this.length; i < length; i++) if (this[i] =3D=3D object) return i; return -1; }, reverse: function(inline) { return (inline !=3D=3D false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value))) array.push(value); return array; }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results =3D []; this.each(function(object) { var value =3D Object.toJSON(object); if (value !=3D=3D undefined) results.push(value); }); return '[' + results.join(', ') + ']'; } }); Array.prototype.toArray =3D Array.prototype.clone; function $w(string) { string =3D string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat =3D function() { var array =3D []; for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]); for (var i =3D 0, length =3D arguments.length; i < length; i++) { if (arguments[i].constructor =3D=3D Array) { for (var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; } } var Hash =3D function(object) { if (object instanceof Hash) this.merge(object); else Object.extend(this, object || {}); }; Object.extend(Hash, { toQueryString: function(obj) { var parts =3D []; parts.add =3D arguments.callee.addPair; this.prototype._each.call(obj, function(pair) { if (!pair.key) return; var value =3D pair.value; if (value && typeof value =3D=3D 'object') { if (value.constructor =3D=3D Array) value.each(function(value) { parts.add(pair.key, value); }); return; } parts.add(pair.key, value); }); return parts.join('&'); }, toJSON: function(object) { var results =3D []; this.prototype._each.call(object, function(pair) { var value =3D Object.toJSON(pair.value); if (value !=3D=3D undefined) results.push(pair.key.toJSON() + ': ' = + value); }); return '{' + results.join(', ') + '}'; } }); Hash.toQueryString.addPair =3D function(key, value, prefix) { key =3D encodeURIComponent(key); if (value =3D=3D=3D undefined) this.push(key); else this.push(key + '=3D' + (value =3D=3D null ? '' : = encodeURIComponent(value))); } Object.extend(Hash.prototype, Enumerable); Object.extend(Hash.prototype, { _each: function(iterator) { for (var key in this) { var value =3D this[key]; if (value && value =3D=3D Hash.prototype[key]) continue; var pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, merge: function(hash) { return $H(hash).inject(this, function(mergedHash, pair) { mergedHash[pair.key] =3D pair.value; return mergedHash; }); }, remove: function() { var result; for(var i =3D 0, length =3D arguments.length; i < length; i++) { var value =3D this[arguments[i]]; if (value !=3D=3D undefined){ if (result =3D=3D=3D undefined) result =3D value; else { if (result.constructor !=3D Array) result =3D [result]; result.push(value) } } delete this[arguments[i]]; } return result; }, toQueryString: function() { return Hash.toQueryString(this); }, inspect: function() { return '#'; }, toJSON: function() { return Hash.toJSON(this); } }); function $H(object) { if (object instanceof Hash) return object; return new Hash(object); }; // Safari iterates over shadowed properties if (function() { var i =3D 0, Test =3D function(value) { this.key =3D value }; Test.prototype.key =3D 'foo'; for (var property in new Test('bar')) i++; return i > 1; }()) Hash.prototype._each =3D function(iterator) { var cache =3D []; for (var key in this) { var value =3D this[key]; if ((value && value =3D=3D Hash.prototype[key]) || = cache.include(key)) continue; cache.push(key); var pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } }; ObjectRange =3D Class.create(); Object.extend(ObjectRange.prototype, Enumerable); Object.extend(ObjectRange.prototype, { initialize: function(start, end, exclusive) { this.start =3D start; this.end =3D end; this.exclusive =3D exclusive; }, _each: function(iterator) { var value =3D this.start; while (this.include(value)) { iterator(value); value =3D value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <=3D this.end; } }); var $R =3D function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var Ajax =3D { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 } Ajax.Responders =3D { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders =3D this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (typeof responder[callback] =3D=3D 'function') { try { responder[callback].apply(responder, [request, transport, = json]); } catch (e) {} } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++; }, onComplete: function() { Ajax.activeRequestCount--; } }); Ajax.Base =3D function() {}; Ajax.Base.prototype =3D { setOptions: function(options) { this.options =3D { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '' } Object.extend(this.options, options || {}); this.options.method =3D this.options.method.toLowerCase(); if (typeof this.options.parameters =3D=3D 'string') this.options.parameters =3D = this.options.parameters.toQueryParams(); } } Ajax.Request =3D Class.create(); Ajax.Request.Events =3D ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), { _complete: false, initialize: function(url, options) { this.transport =3D Ajax.getTransport(); this.setOptions(options); this.request(url); }, request: function(url) { this.url =3D url; this.method =3D this.options.method; var params =3D Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] =3D this.method; this.method =3D 'post'; } this.parameters =3D params; if (params =3D Hash.toQueryString(params)) { // when GET, append parameters to URL if (this.method =3D=3D 'get') this.url +=3D (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params +=3D '&_=3D'; } try { if (this.options.onCreate) this.options.onCreate(this.transport); Ajax.Responders.dispatch('onCreate', this, this.transport); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) setTimeout(function() { this.respondToReadyState(1) = }.bind(this), 10); this.transport.onreadystatechange =3D = this.onStateChange.bind(this); this.setRequestHeaders(); this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests = */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState =3D this.transport.readyState; if (readyState > 1 && !((readyState =3D=3D 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers =3D { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*' }; if (this.method =3D=3D 'post') { headers['Content-type'] =3D this.options.contentType + (this.options.encoding ? '; charset=3D' + this.options.encoding = : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005) headers['Connection'] =3D 'close'; } // user-defined headers if (typeof this.options.requestHeaders =3D=3D 'object') { var extras =3D this.options.requestHeaders; if (typeof extras.push =3D=3D 'function') for (var i =3D 0, length =3D extras.length; i < length; i +=3D = 2) headers[extras[i]] =3D extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { return !this.transport.status || (this.transport.status >=3D 200 && this.transport.status < = 300); }, respondToReadyState: function(readyState) { var state =3D Ajax.Request.Events[readyState]; var transport =3D this.transport, json =3D this.evalJSON(); if (state =3D=3D 'Complete') { try { this._complete =3D true; (this.options['on' + this.transport.status] || this.options['on' + (this.success() ? 'Success' : = 'Failure')] || Prototype.emptyFunction)(transport, json); } catch (e) { this.dispatchException(e); } var contentType =3D this.getHeader('Content-type'); if (contentType && contentType.strip(). match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(transport, = json); Ajax.Responders.dispatch('on' + state, this, transport, json); } catch (e) { this.dispatchException(e); } if (state =3D=3D 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange =3D Prototype.emptyFunction; } }, getHeader: function(name) { try { return this.transport.getResponseHeader(name); } catch (e) { return null } }, evalJSON: function() { try { var json =3D this.getHeader('X-JSON'); return json ? json.evalJSON() : null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, = exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Updater =3D Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype, = Ajax.Request.prototype), { initialize: function(container, url, options) { this.container =3D { success: (container.success || container), failure: (container.failure || (container.success ? null : = container)) } this.transport =3D Ajax.getTransport(); this.setOptions(options); var onComplete =3D this.options.onComplete || = Prototype.emptyFunction; this.options.onComplete =3D (function(transport, param) { this.updateContent(); onComplete(transport, param); }).bind(this); this.request(url); }, updateContent: function() { var receiver =3D this.container[this.success() ? 'success' : = 'failure']; var response =3D this.transport.responseText; if (!this.options.evalScripts) response =3D response.stripScripts(); if (receiver =3D $(receiver)) { if (this.options.insertion) new this.options.insertion(receiver, response); else receiver.update(response); } if (this.success()) { if (this.onComplete) setTimeout(this.onComplete.bind(this), 10); } } }); Ajax.PeriodicalUpdater =3D Class.create(); Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), { initialize: function(container, url, options) { this.setOptions(options); this.onComplete =3D this.options.onComplete; this.frequency =3D (this.options.frequency || 2); this.decay =3D (this.options.decay || 1); this.updater =3D {}; this.container =3D container; this.url =3D url; this.start(); }, start: function() { this.options.onComplete =3D this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete =3D undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(request) { if (this.options.decay) { this.decay =3D (request.responseText =3D=3D this.lastText ? this.decay * this.options.decay : 1); this.lastText =3D request.responseText; } this.timer =3D setTimeout(this.onTimerEvent.bind(this), this.decay * this.frequency * 1000); }, onTimerEvent: function() { this.updater =3D new Ajax.Updater(this.container, this.url, = this.options); } }); function $(element) { if (arguments.length > 1) { for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++) elements.push($(arguments[i])); return elements; } if (typeof element =3D=3D 'string') element =3D document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath =3D function(expression, parentElement) { var results =3D []; var query =3D document.evaluate(expression, $(parentElement) || = document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i =3D 0, length =3D query.snapshotLength; i < length; i++) results.push(query.snapshotItem(i)); return results; }; document.getElementsByClassName =3D function(className, parentElement) = { var q =3D ".//*[contains(concat(' ', @class, ' '), ' " + className + = " ')]"; return document._getElementsByXPath(q, parentElement); } } else document.getElementsByClassName =3D function(className, = parentElement) { var children =3D ($(parentElement) || = document.body).getElementsByTagName('*'); var elements =3D [], child, pattern =3D new RegExp("(^|\\s)" + = className + "(\\s|$)"); for (var i =3D 0, length =3D children.length; i < length; i++) { child =3D children[i]; var elementClassName =3D child.className; if (elementClassName.length =3D=3D 0) continue; if (elementClassName =3D=3D className || = elementClassName.match(pattern)) elements.push(Element.extend(child)); } return elements; }; /*-----------------------------------------------------------------------= ---*/ if (!window.Element) var Element =3D {}; Element.extend =3D function(element) { var F =3D Prototype.BrowserFeatures; if (!element || !element.tagName || element.nodeType =3D=3D 3 || element._extended || F.SpecificElementExtensions || element =3D=3D = window) return element; var methods =3D {}, tagName =3D element.tagName, cache =3D = Element.extend.cache, T =3D Element.Methods.ByTag; // extend methods for all tags (Safari doesn't need this) if (!F.ElementExtensions) { Object.extend(methods, Element.Methods), Object.extend(methods, Element.Methods.Simulated); } // extend methods for specific tags if (T[tagName]) Object.extend(methods, T[tagName]); for (var property in methods) { var value =3D methods[property]; if (typeof value =3D=3D 'function' && !(property in element)) element[property] =3D cache.findOrStore(value); } element._extended =3D Prototype.emptyFunction; return element; }; Element.extend.cache =3D { findOrStore: function(value) { return this[value] =3D this[value] || function() { return value.apply(null, [this].concat($A(arguments))); } } }; Element.Methods =3D { visible: function(element) { return $(element).style.display !=3D 'none'; }, toggle: function(element) { element =3D $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { $(element).style.display =3D 'none'; return element; }, show: function(element) { $(element).style.display =3D ''; return element; }, remove: function(element) { element =3D $(element); element.parentNode.removeChild(element); return element; }, update: function(element, html) { html =3D typeof html =3D=3D 'undefined' ? '' : html.toString(); $(element).innerHTML =3D html.stripScripts(); setTimeout(function() {html.evalScripts()}, 10); return element; }, replace: function(element, html) { element =3D $(element); html =3D typeof html =3D=3D 'undefined' ? '' : html.toString(); if (element.outerHTML) { element.outerHTML =3D html.stripScripts(); } else { var range =3D element.ownerDocument.createRange(); range.selectNodeContents(element); element.parentNode.replaceChild( range.createContextualFragment(html.stripScripts()), element); } setTimeout(function() {html.evalScripts()}, 10); return element; }, inspect: function(element) { element =3D $(element); var result =3D '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property =3D pair.first(), attribute =3D pair.last(); var value =3D (element[property] || '').toString(); if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element =3D $(element); var elements =3D []; while (element =3D element[property]) if (element.nodeType =3D=3D 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return = $A($(element).getElementsByTagName('*')).each(Element.extend); }, firstDescendant: function(element) { element =3D $(element).firstChild; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element =3D $(element).firstChild)) return []; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element =3D $(element); return = element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (typeof selector =3D=3D 'string') selector =3D new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(element.parentNode); var ancestors =3D element.ancestors(); return expression ? Selector.findElement(ancestors, expression, = index) : ancestors[index || 0]; }, down: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return element.firstDescendant(); var descendants =3D element.descendants(); return expression ? Selector.findElement(descendants, expression, = index) : descendants[index || 0]; }, previous: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element)); var previousSiblings =3D element.previousSiblings(); return expression ? Selector.findElement(previousSiblings, = expression, index) : previousSiblings[index || 0]; }, next: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element)); var nextSiblings =3D element.nextSiblings(); return expression ? Selector.findElement(nextSiblings, expression, = index) : nextSiblings[index || 0]; }, getElementsBySelector: function() { var args =3D $A(arguments), element =3D $(args.shift()); return Selector.findChildElements(element, args); }, getElementsByClassName: function(element, className) { return document.getElementsByClassName(className, element); }, readAttribute: function(element, name) { element =3D $(element); if (Prototype.Browser.IE) { if (!element.attributes) return null; var t =3D Element._attributeTranslations; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name =3D t.names[name]; var attribute =3D element.attributes[name]; return attribute ? attribute.nodeValue : null; } return element.getAttribute(name); }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element =3D $(element))) return; var elementClassName =3D element.className; if (elementClassName.length =3D=3D 0) return false; if (elementClassName =3D=3D className || elementClassName.match(new RegExp("(^|\\s)" + className + = "(\\s|$)"))) return true; return false; }, addClassName: function(element, className) { if (!(element =3D $(element))) return; Element.classNames(element).add(className); return element; }, removeClassName: function(element, className) { if (!(element =3D $(element))) return; Element.classNames(element).remove(className); return element; }, toggleClassName: function(element, className) { if (!(element =3D $(element))) return; Element.classNames(element)[element.hasClassName(className) ? = 'remove' : 'add'](className); return element; }, observe: function() { Event.observe.apply(Event, arguments); return $A(arguments).first(); }, stopObserving: function() { Event.stopObserving.apply(Event, arguments); return $A(arguments).first(); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element =3D $(element); var node =3D element.firstChild; while (node) { var nextNode =3D node.nextSibling; if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node =3D nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element =3D $(element), ancestor =3D $(ancestor); while (element =3D element.parentNode) if (element =3D=3D ancestor) return true; return false; }, scrollTo: function(element) { element =3D $(element); var pos =3D Position.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element =3D $(element); style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize(); var value =3D element.style[style]; if (!value) { var css =3D document.defaultView.getComputedStyle(element, null); value =3D css ? css[style] : null; } if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0; return value =3D=3D 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles, camelized) { element =3D $(element); var elementStyle =3D element.style; for (var property in styles) if (property =3D=3D 'opacity') = element.setOpacity(styles[property]) else elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ? (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : = 'styleFloat') : (camelized ? property : property.camelize())] =3D = styles[property]; return element; }, setOpacity: function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element =3D $(element); var display =3D $(element).getStyle('display'); if (display !=3D 'none' && display !=3D null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display = none, // so enable the element temporarily var els =3D element.style; var originalVisibility =3D els.visibility; var originalPosition =3D els.position; var originalDisplay =3D els.display; els.visibility =3D 'hidden'; els.position =3D 'absolute'; els.display =3D 'block'; var originalWidth =3D element.clientWidth; var originalHeight =3D element.clientHeight; els.display =3D originalDisplay; els.position =3D originalPosition; els.visibility =3D originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element =3D $(element); var pos =3D Element.getStyle(element, 'position'); if (pos =3D=3D 'static' || !pos) { element._madePositioned =3D true; element.style.position =3D 'relative'; // Opera returns the offset relative to the positioning context, = when an // element is position relative but top and left have not been = defined if (window.opera) { element.style.top =3D 0; element.style.left =3D 0; } } return element; }, undoPositioned: function(element) { element =3D $(element); if (element._madePositioned) { element._madePositioned =3D undefined; element.style.position =3D element.style.top =3D element.style.left =3D element.style.bottom =3D element.style.right =3D ''; } return element; }, makeClipping: function(element) { element =3D $(element); if (element._overflow) return element; element._overflow =3D element.style.overflow || 'auto'; if ((Element.getStyle(element, 'overflow') || 'visible') !=3D = 'hidden') element.style.overflow =3D 'hidden'; return element; }, undoClipping: function(element) { element =3D $(element); if (!element._overflow) return element; element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow; element._overflow =3D null; return element; } }; Object.extend(Element.Methods, { childOf: Element.Methods.descendantOf, childElements: Element.Methods.immediateDescendants }); if (Prototype.Browser.Opera) { Element.Methods._getStyle =3D Element.Methods.getStyle; Element.Methods.getStyle =3D function(element, style) { switch(style) { case 'left': case 'top': case 'right': case 'bottom': if (Element._getStyle(element, 'position') =3D=3D 'static') = return null; default: return Element._getStyle(element, style); } }; } else if (Prototype.Browser.IE) { Element.Methods.getStyle =3D function(element, style) { element =3D $(element); style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize(); var value =3D element.style[style]; if (!value && element.currentStyle) value =3D = element.currentStyle[style]; if (style =3D=3D 'opacity') { if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value =3D=3D 'auto') { if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none')) return element['offset'+style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); var filter =3D element.getStyle('filter'), style =3D element.style; if (value =3D=3D 1 || value =3D=3D=3D '') { style.filter =3D filter.replace(/alpha\([^\)]*\)/gi,''); return element; } else if (value < 0.00001) value =3D 0; style.filter =3D filter.replace(/alpha\([^\)]*\)/gi, '') + 'alpha(opacity=3D' + (value * 100) + ')'; return element; }; // IE is missing .innerHTML support for TABLE-related elements Element.Methods.update =3D function(element, html) { element =3D $(element); html =3D typeof html =3D=3D 'undefined' ? '' : html.toString(); var tagName =3D element.tagName.toUpperCase(); if (['THEAD','TBODY','TR','TD'].include(tagName)) { var div =3D document.createElement('div'); switch (tagName) { case 'THEAD': case 'TBODY': div.innerHTML =3D '' + html.stripScripts() + = '
'; depth =3D 2; break; case 'TR': div.innerHTML =3D '' + html.stripScripts() = + '
'; depth =3D 3; break; case 'TD': div.innerHTML =3D '
' + = html.stripScripts() + '
'; depth =3D 4; } $A(element.childNodes).each(function(node) { = element.removeChild(node) }); depth.times(function() { div =3D div.firstChild }); $A(div.childNodes).each(function(node) { element.appendChild(node) = }); } else { element.innerHTML =3D html.stripScripts(); } setTimeout(function() { html.evalScripts() }, 10); return element; } } else if (Prototype.Browser.Gecko) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1) ? 0.999999 : (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } Element._attributeTranslations =3D { names: { colspan: "colSpan", rowspan: "rowSpan", valign: "vAlign", datetime: "dateTime", accesskey: "accessKey", tabindex: "tabIndex", enctype: "encType", maxlength: "maxLength", readonly: "readOnly", longdesc: "longDesc" }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { var node =3D element.getAttributeNode('title'); return node.specified ? node.nodeValue : null; } } }; (function() { Object.extend(this, { href: this._getAttr, src: this._getAttr, type: this._getAttr, disabled: this._flag, checked: this._flag, readonly: this._flag, multiple: this._flag }); }).call(Element._attributeTranslations.values); Element.Methods.Simulated =3D { hasAttribute: function(element, attribute) { var t =3D Element._attributeTranslations, node; attribute =3D t.names[attribute] || attribute; node =3D $(element).getAttributeNode(attribute); return node && node.specified; } }; Element.Methods.ByTag =3D {}; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div').__proto__) { window.HTMLElement =3D {}; window.HTMLElement.prototype =3D = document.createElement('div').__proto__; Prototype.BrowserFeatures.ElementExtensions =3D true; } Element.hasAttribute =3D function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods =3D function(methods) { var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length =3D=3D 2) { var tagName =3D methods; methods =3D arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || {}); else { if (tagName.constructor =3D=3D Array) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName =3D tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] =3D {}; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent =3D onlyIfAbsent || false; var cache =3D Element.extend.cache; for (var property in methods) { var value =3D methods[property]; if (!onlyIfAbsent || !(property in destination)) destination[property] =3D cache.findOrStore(value); } } function findDOMClass(tagName) { var klass; var trans =3D { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", = "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] =3D {}; window[klass].prototype =3D = document.createElement(tagName).__proto__; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass =3D findDOMClass(tag); if (typeof klass =3D=3D "undefined") continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; }; var Toggle =3D { display: Element.toggle }; /*-----------------------------------------------------------------------= ---*/ Abstract.Insertion =3D function(adjacency) { this.adjacency =3D adjacency; } Abstract.Insertion.prototype =3D { initialize: function(element, content) { this.element =3D $(element); this.content =3D content.stripScripts(); if (this.adjacency && this.element.insertAdjacentHTML) { try { this.element.insertAdjacentHTML(this.adjacency, this.content); } catch (e) { var tagName =3D this.element.tagName.toUpperCase(); if (['TBODY', 'TR'].include(tagName)) { this.insertContent(this.contentFromAnonymousTable()); } else { throw e; } } } else { this.range =3D this.element.ownerDocument.createRange(); if (this.initializeRange) this.initializeRange(); = this.insertContent([this.range.createContextualFragment(this.content)]); } setTimeout(function() {content.evalScripts()}, 10); }, contentFromAnonymousTable: function() { var div =3D document.createElement('div'); div.innerHTML =3D '' + this.content + = '
'; return $A(div.childNodes[0].childNodes[0].childNodes); } } var Insertion =3D new Object(); Insertion.Before =3D Class.create(); Insertion.Before.prototype =3D Object.extend(new = Abstract.Insertion('beforeBegin'), { initializeRange: function() { this.range.setStartBefore(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element); }).bind(this)); } }); Insertion.Top =3D Class.create(); Insertion.Top.prototype =3D Object.extend(new = Abstract.Insertion('afterBegin'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(true); }, insertContent: function(fragments) { fragments.reverse(false).each((function(fragment) { this.element.insertBefore(fragment, this.element.firstChild); }).bind(this)); } }); Insertion.Bottom =3D Class.create(); Insertion.Bottom.prototype =3D Object.extend(new = Abstract.Insertion('beforeEnd'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.appendChild(fragment); }).bind(this)); } }); Insertion.After =3D Class.create(); Insertion.After.prototype =3D Object.extend(new = Abstract.Insertion('afterEnd'), { initializeRange: function() { this.range.setStartAfter(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element.nextSibling); }).bind(this)); } }); /*-----------------------------------------------------------------------= ---*/ Element.ClassNames =3D Class.create(); Element.ClassNames.prototype =3D { initialize: function(element) { this.element =3D $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className =3D className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /* Portions of the Selector class are derived from Jack = Slocum=C3=A2=E2=82=AC=E2=84=A2s DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector =3D Class.create(); Selector.prototype =3D { initialize: function(expression) { this.expression =3D expression.strip(); this.compileMatcher(); }, compileMatcher: function() { // Selectors with namespaced attributes can't use the XPath version if (Prototype.BrowserFeatures.XPath && = !(/\[[\w-]*?:/).test(this.expression)) return this.compileXPathMatcher(); var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers, c =3D Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher =3D Selector._cache[e]; return; } this.matcher =3D ["this.matcher =3D function(root) {", "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"]; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { p =3D ps[i]; if (m =3D e.match(p)) { this.matcher.push(typeof c[i] =3D=3D 'function' ? c[i](m) : new Template(c[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] =3D this.matcher; }, compileXPathMatcher: function() { var e =3D this.expression, ps =3D Selector.patterns, x =3D Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath =3D Selector._cache[e]; return; } this.matcher =3D ['.//*']; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { if (m =3D e.match(ps[i])) { this.matcher.push(typeof x[i] =3D=3D 'function' ? x[i](m) : new Template(x[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.xpath =3D this.matcher.join(''); Selector._cache[this.expression] =3D this.xpath; }, findElements: function(root) { root =3D root || document; if (this.xpath) return document._getElementsByXPath(this.xpath, = root); return this.matcher(root); }, match: function(element) { return this.findElements(document).include(element); }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }; Object.extend(Selector, { _cache: {}, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] =3D=3D '*') return ''; return "[local-name()=3D'" + m[1].toLowerCase() + "' or local-name()=3D'" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id=3D'#{1}']", attrPresence: "[@#{1}]", attr: function(m) { m[3] =3D m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h =3D Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (typeof h =3D=3D=3D 'function') return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=3D': "[@#{1}=3D'#{3}']", '!=3D': "[@#{1}!=3D'#{3}']", '^=3D': "[starts-with(@#{1}, '#{3}')]", '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']", '*=3D': "[contains(@#{1}, '#{3}')]", '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]', 'empty': "[count(*) =3D 0 and (count(text()) =3D 0 or = translate(text(), ' \t\r\n', '') =3D '')]", 'checked': "[@checked]", 'disabled': "[@disabled]", 'enabled': "[not(@disabled)]", 'not': function(m) { var e =3D m[6], p =3D Selector.patterns, x =3D Selector.xpath, le, m, v; var exclusion =3D []; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in p) { if (m =3D e.match(p[i])) { v =3D typeof x[i] =3D=3D 'function' ? x[i](m) : new = Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e =3D e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m); }, 'first-of-type': function(m) { m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula =3D m[6], predicate; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; if (mm =3D formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "=3D " + mm[1] + ']'; if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] =3D=3D "-") mm[1] =3D -1; var a =3D mm[1] ? Number(mm[1]) : 1; var b =3D mm[2] ? Number(mm[2]) : 0; predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " + "((#{fragment} - #{b}) div #{a} >=3D 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;', className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;', id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;', attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;', attr: function(m) { m[3] =3D (m[5] || m[6]); return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = =3D false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"'); return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m); }, descendant: 'c =3D "descendant";', child: 'c =3D "child";', adjacent: 'c =3D "adjacent";', laterSibling: 'c =3D "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|\s|(?=3D:))/, attrPresence: /^\[([\w]+)\]/, attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\]]*?)\4|([^'"][^= \]]*?)))?\]/ }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._counted =3D true; return nodes; }, unmark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._counted =3D undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._counted =3D true; if (reverse) { for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) { node =3D nodes[i]; if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++; } } else { for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++) if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length =3D=3D 0) return nodes; var results =3D [], n; for (var i =3D 0, l =3D nodes.length; i < l; i++) if (!(n =3D nodes[i])._counted) { n._counted =3D true; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { for (var j =3D 0, children =3D [], child; child =3D = node.childNodes[j]; j++) if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child); } return results; }, adjacent: function(nodes) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { var next =3D this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node =3D node.nextSibling) if (node.nodeType =3D=3D 1) return node; return null; }, previousElementSibling: function(node) { while (node =3D node.previousSibling) if (node.nodeType =3D=3D 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { tagName =3D tagName.toUpperCase(); var results =3D [], h =3D Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator =3D=3D "descendant") { for (var i =3D 0, node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes =3D this[combinator](nodes); if (tagName =3D=3D "*") return nodes; } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.tagName.toUpperCase() =3D=3D tagName) = results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode =3D $(id), h =3D Selector.handlers; if (!nodes && root =3D=3D document) return targetNode ? = [targetNode] : []; if (nodes) { if (combinator) { if (combinator =3D=3D 'child') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (targetNode.parentNode =3D=3D node) return = [targetNode]; } else if (combinator =3D=3D 'descendant') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return = [targetNode]; } else if (combinator =3D=3D 'adjacent') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node) return [targetNode]; } else nodes =3D h[combinator](nodes); } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node =3D=3D targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes =3D Selector.handlers.descendant([root]); var needle =3D ' ' + className + ' '; for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) { nodeClassName =3D node.className; if (nodeClassName.length =3D=3D 0) continue; if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr) { var results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); var handler =3D Selector.operators[operator], results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) { var nodeValue =3D Element.readAttribute(node, attr); if (nodeValue =3D=3D=3D null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); if (!nodes) nodes =3D root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!h.previousElementSibling(node) && = !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p =3D Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a =3D=3D 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length =3D=3D 0) return []; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; var h =3D Selector.handlers, results =3D [], indexed =3D [], m; h.mark(nodes); for (var i =3D 0, node; node =3D nodes[i]; i++) { if (!node.parentNode._counted) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula =3D Number(formula); for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.nodeIndex =3D=3D formula) results.push(node); } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b if (m[1] =3D=3D "-") m[1] =3D -1; var a =3D m[1] ? Number(m[1]) : 1; var b =3D m[2] ? Number(m[2]) : 0; var indices =3D Selector.pseudos.getIndices(a, b, nodes.length); for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) { for (var j =3D 0; j < l; j++) if (node.nodeIndex =3D=3D indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h =3D Selector.handlers, selectorType, m; var exclusions =3D new Selector(selector).findElements(root); h.mark(exclusions); for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node._counted) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node.disabled) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=3D': function(nv, v) { return nv =3D=3D v; }, '!=3D': function(nv, v) { return nv !=3D v; }, '^=3D': function(nv, v) { return nv.startsWith(v); }, '$=3D': function(nv, v) { return nv.endsWith(v); }, '*=3D': function(nv, v) { return nv.include(v); }, '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); }, '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); } }, matchElements: function(elements, expression) { var matches =3D new Selector(expression).findElements(), h =3D = Selector.handlers; h.mark(matches); for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++) if (element._counted) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (typeof expression =3D=3D 'number') { index =3D expression; expression =3D false; } return Selector.matchElements(elements, expression || '*')[index || = 0]; }, findChildElements: function(element, expressions) { var exprs =3D expressions.join(','), expressions =3D []; exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); var results =3D [], h =3D Selector.handlers; for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) { selector =3D new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form =3D { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, getHash) { var data =3D elements.inject({}, function(result, element) { if (!element.disabled && element.name) { var key =3D element.name, value =3D $(element).getValue(); if (value !=3D null) { if (key in result) { if (result[key].constructor !=3D Array) result[key] =3D = [result[key]]; result[key].push(value); } else result[key] =3D value; } } return result; }); return getHash ? data : Hash.toQueryString(data); } }; Form.Methods =3D { serialize: function(form, getHash) { return Form.serializeElements(Form.getElements(form), getHash); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form =3D $(form); var inputs =3D form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) { var input =3D inputs[i]; if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form =3D $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form =3D $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { return $(form).getElements().find(function(element) { return element.type !=3D 'hidden' && !element.disabled && ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form =3D $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form =3D $(form), options =3D Object.clone(options || {}); var params =3D options.parameters; options.parameters =3D form.serialize(true); if (params) { if (typeof params =3D=3D 'string') params =3D = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method =3D form.method; return new Ajax.Request(form.readAttribute('action'), options); } } /*-----------------------------------------------------------------------= ---*/ Form.Element =3D { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } } Form.Element.Methods =3D { serialize: function(element) { element =3D $(element); if (!element.disabled && element.name) { var value =3D element.getValue(); if (value !=3D undefined) { var pair =3D {}; pair[element.name] =3D value; return Hash.toQueryString(pair); } } return ''; }, getValue: function(element) { element =3D $(element); var method =3D element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, clear: function(element) { $(element).value =3D ''; return element; }, present: function(element) { return $(element).value !=3D ''; }, activate: function(element) { element =3D $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() !=3D 'input' = || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) {} return element; }, disable: function(element) { element =3D $(element); element.blur(); element.disabled =3D true; return element; }, enable: function(element) { element =3D $(element); element.disabled =3D false; return element; } } /*-----------------------------------------------------------------------= ---*/ var Field =3D Form.Element; var $F =3D Form.Element.Methods.getValue; /*-----------------------------------------------------------------------= ---*/ Form.Element.Serializers =3D { input: function(element) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element); default: return Form.Element.Serializers.textarea(element); } }, inputSelector: function(element) { return element.checked ? element.value : null; }, textarea: function(element) { return element.value; }, select: function(element) { return this[element.type =3D=3D 'select-one' ? 'selectOne' : 'selectMany'](element); }, selectOne: function(element) { var index =3D element.selectedIndex; return index >=3D 0 ? this.optionValue(element.options[index]) : = null; }, selectMany: function(element) { var values, length =3D element.length; if (!length) return null; for (var i =3D 0, values =3D []; i < length; i++) { var opt =3D element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text; } } /*-----------------------------------------------------------------------= ---*/ Abstract.TimedObserver =3D function() {} Abstract.TimedObserver.prototype =3D { initialize: function(element, frequency, callback) { this.frequency =3D frequency; this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); this.registerCallback(); }, registerCallback: function() { setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, onTimerEvent: function() { var value =3D this.getValue(); var changed =3D ('string' =3D=3D typeof this.lastValue && 'string' = =3D=3D typeof value ? this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)); if (changed) { this.callback(this.element, value); this.lastValue =3D value; } } } Form.Element.Observer =3D Class.create(); Form.Element.Observer.prototype =3D Object.extend(new = Abstract.TimedObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer =3D Class.create(); Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), = { getValue: function() { return Form.serialize(this.element); } }); /*-----------------------------------------------------------------------= ---*/ Abstract.EventObserver =3D function() {} Abstract.EventObserver.prototype =3D { initialize: function(element, callback) { this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); if (this.element.tagName.toLowerCase() =3D=3D 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value =3D this.getValue(); if (this.lastValue !=3D value) { this.callback(this.element, value); this.lastValue =3D value; } }, registerFormCallbacks: function() { = Form.getElements(this.element).each(this.registerCallback.bind(this)); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', = this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', = this.onElementEvent.bind(this)); break; } } } } Form.Element.EventObserver =3D Class.create(); Form.Element.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver =3D Class.create(); Form.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) { var Event =3D new Object(); } Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, element: function(event) { return $(event.target || event.srcElement); }, isLeftClick: function(event) { return (((event.which) && (event.which =3D=3D 1)) || ((event.button) && (event.button =3D=3D 1))); }, pointerX: function(event) { return event.pageX || (event.clientX + (document.documentElement.scrollLeft || = document.body.scrollLeft)); }, pointerY: function(event) { return event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)); }, stop: function(event) { if (event.preventDefault) { event.preventDefault(); event.stopPropagation(); } else { event.returnValue =3D false; event.cancelBubble =3D true; } }, // find the first node with the given tagName, starting from the // node the event was triggered on; traverses the DOM upwards findElement: function(event, tagName) { var element =3D Event.element(event); while (element.parentNode && (!element.tagName || (element.tagName.toUpperCase() !=3D tagName.toUpperCase()))) element =3D element.parentNode; return element; }, observers: false, _observeAndCache: function(element, name, observer, useCapture) { if (!this.observers) this.observers =3D []; if (element.addEventListener) { this.observers.push([element, name, observer, useCapture]); element.addEventListener(name, observer, useCapture); } else if (element.attachEvent) { this.observers.push([element, name, observer, useCapture]); element.attachEvent('on' + name, observer); } }, unloadCache: function() { if (!Event.observers) return; for (var i =3D 0, length =3D Event.observers.length; i < length; = i++) { Event.stopObserving.apply(this, Event.observers[i]); Event.observers[i][0] =3D null; } Event.observers =3D false; }, observe: function(element, name, observer, useCapture) { element =3D $(element); useCapture =3D useCapture || false; if (name =3D=3D 'keypress' && (Prototype.Browser.WebKit || element.attachEvent)) name =3D 'keydown'; Event._observeAndCache(element, name, observer, useCapture); }, stopObserving: function(element, name, observer, useCapture) { element =3D $(element); useCapture =3D useCapture || false; if (name =3D=3D 'keypress' && (Prototype.Browser.WebKit || element.attachEvent)) name =3D 'keydown'; if (element.removeEventListener) { element.removeEventListener(name, observer, useCapture); } else if (element.detachEvent) { try { element.detachEvent('on' + name, observer); } catch (e) {} } } }); /* prevent memory leaks in IE */ if (Prototype.Browser.IE) Event.observe(window, 'unload', Event.unloadCache, false); var Position =3D { // set to true if needed, warning: firefox performance problems // NOT neeeded for page scrolling, only if draggable contained in // scrollable elements includeScrollOffsets: false, // must be called before calling withinIncludingScrolloffset, every = time the // page is scrolled prepare: function() { this.deltaX =3D window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY =3D window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, realOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.scrollTop || 0; valueL +=3D element.scrollLeft || 0; element =3D element.parentNode; } while (element); return [valueL, valueT]; }, cumulativeOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; } while (element); return [valueL, valueT]; }, positionedOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; if (element) { if(element.tagName=3D=3D'BODY') break; var p =3D Element.getStyle(element, 'position'); if (p =3D=3D 'relative' || p =3D=3D 'absolute') break; } } while (element); return [valueL, valueT]; }, offsetParent: function(element) { if (element.offsetParent) return element.offsetParent; if (element =3D=3D document.body) return element; while ((element =3D element.parentNode) && element !=3D = document.body) if (Element.getStyle(element, 'position') !=3D 'static') return element; return document.body; }, // caches x/y coordinate pair to use with overlap within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp =3D x; this.ycomp =3D y; this.offset =3D this.cumulativeOffset(element); return (y >=3D this.offset[1] && y < this.offset[1] + element.offsetHeight && x >=3D this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache =3D this.realOffset(element); this.xcomp =3D x + offsetcache[0] - this.deltaX; this.ycomp =3D y + offsetcache[1] - this.deltaY; this.offset =3D this.cumulativeOffset(element); return (this.ycomp >=3D this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >=3D this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, // within must be called directly before overlap: function(mode, element) { if (!mode) return 0; if (mode =3D=3D 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode =3D=3D 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, page: function(forElement) { var valueT =3D 0, valueL =3D 0; var element =3D forElement; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; // Safari fix if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element,'position')=3D=3D'absolute') break; } while (element =3D element.offsetParent); element =3D forElement; do { if (!window.opera || element.tagName=3D=3D'BODY') { valueT -=3D element.scrollTop || 0; valueL -=3D element.scrollLeft || 0; } } while (element =3D element.parentNode); return [valueL, valueT]; }, clone: function(source, target) { var options =3D Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || {}) // find page position of source source =3D $(source); var p =3D Position.page(source); // find coordinate system to use target =3D $(target); var delta =3D [0, 0]; var parent =3D null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(target,'position') =3D=3D 'absolute') { parent =3D Position.offsetParent(target); delta =3D Position.page(parent); } // correct by body offsets (fixes Safari) if (parent =3D=3D document.body) { delta[0] -=3D document.body.offsetLeft; delta[1] -=3D document.body.offsetTop; } // set position if(options.setLeft) target.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px'; if(options.setTop) target.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px'; if(options.setWidth) target.style.width =3D source.offsetWidth + = 'px'; if(options.setHeight) target.style.height =3D source.offsetHeight + = 'px'; }, absolutize: function(element) { element =3D $(element); if (element.style.position =3D=3D 'absolute') return; Position.prepare(); var offsets =3D Position.positionedOffset(element); var top =3D offsets[1]; var left =3D offsets[0]; var width =3D element.clientWidth; var height =3D element.clientHeight; element._originalLeft =3D left - parseFloat(element.style.left || = 0); element._originalTop =3D top - parseFloat(element.style.top || = 0); element._originalWidth =3D element.style.width; element._originalHeight =3D element.style.height; element.style.position =3D 'absolute'; element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.width =3D width + 'px'; element.style.height =3D height + 'px'; }, relativize: function(element) { element =3D $(element); if (element.style.position =3D=3D 'relative') return; Position.prepare(); element.style.position =3D 'relative'; var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0); var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0); element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.height =3D element._originalHeight; element.style.width =3D element._originalWidth; } } // Safari returns margins on body which is incorrect if the child is = absolutely // positioned. For performance reasons, redefine = Position.cumulativeOffset for // KHTML/WebKit only. if (Prototype.Browser.WebKit) { Position.cumulativeOffset =3D function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break; element =3D element.offsetParent; } while (element); return [valueL, valueT]; } } Element.addMethods(); ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.hawaiibusiness.com/core/media/js/Rivista_ajax.js // Rivisat_ajax.js=0A= // Created on Mar 30, 2007=0A= // @author Habes Alkhraisat =0A= =0A= node_array=3D new Array();=0A= label_array=3D new Array();=0A= var RivistaAjax =3D {=0A= url:"/core/ajaxserver.php",=0A= ER:"We're so sorry, the server is busy right now please try again", =0A= iconon_array :new Array(),=0A= iconoff_array: new Array(),=0A= doAjaxCall:function(params,method,callback){=0A= var myAjax =3D new Ajax.Request(=0A= this.url,=0A= {=0A= method: method,=0A= parameters: params,=0A= setrequestheaders:['Cache-Control: no-store, no-cache, = must-revalidate','Accept-Encoding: compress, gzip'],=0A= onfailure:function(){alert(this.ER);},=0A= onComplete: callback=0A= });=0A= },=0A= doToggleField: function(node,params,label,iconon,iconoff) {=0A= label_array.push(label);=0A= node_array.push(node);=0A= params =3D "req=3Dtoggle&"+params;=0A= RivistaAjax.iconon_array.push(iconon);=0A= RivistaAjax.iconoff_array.push(iconoff);=0A= node.childNodes[0].src =3D "/admin/media/images/ajax-loader.gif";=0A= RivistaAjax.doAjaxCall(params,"GET",RivistaAjax.doToggleField_handler);=0A= },=0A= doToggleField_handler:function(transport){=0A= if (transport.readyState =3D=3D 4 && transport.status =3D=3D 200){=0A= if(transport.responseText){=0A= node_t =3D node_array.shift();=0A= iconon=3DRivistaAjax.iconon_array.shift();=0A= iconoff=3DRivistaAjax.iconoff_array.shift();=0A= label_t =3D label_array.shift().split('|');=0A= if(transport.responseText.trim()=3D=3D'f'){=0A= if(iconoff)=0A= node_t.childNodes[0].src =3D "/admin/media/images/"+iconoff;=0A= else=0A= node_t.childNodes[0].src =3D "/admin/media/images/red-button.gif";=0A= node_t.childNodes[0].alt=3D label_t[0];=0A= node_t.childNodes[0].title=3D label_t[0];=0A= = RivistaAjax.changeAllRelated(node_t.childNodes[0].src,node_t.childNodes[0= ].id,label_t[0]);=0A= } else{=0A= if(iconon)=0A= node_t.childNodes[0].src =3D "/admin/media/images/"+iconon;=0A= else=0A= node_t.childNodes[0].src =3D "/admin/media/images/green-button.gif";=0A= node_t.childNodes[0].alt=3D label_t[1];=0A= node_t.childNodes[0].title=3D label_t[1];=0A= = RivistaAjax.changeAllRelated(node_t.childNodes[0].src,node_t.childNodes[0= ].id,label_t[1]);=0A= }=0A= }=0A= }=0A= },=0A= changeAllRelated:function(imgsrc,id,n_label){=0A= var imgs;=0A= imgs =3Ddocument.getElementsByTagName('img');=0A= for (i=3D0;i
");=0A= $('eventContainer').hide();=0A= $('ajaxloader').show();=0A= = RivistaAjax.doAjaxCall(params,"GET",RivistaAjax.loadCalendar_hanlder);=0A= },=0A= loadCalendar_hanlder:function(transport){=0A= if(transport.responseText){=0A= if($('mini_view')!=3Dnull && $('mini_view').innerHTML !=3D'')=0A= $('eventContainer').update(transport.responseText);=0A= else=0A= $('calendar').replace(transport.responseText);=0A= =0A= $('ajaxloader').hide();=0A= $('eventContainer').show();=0A= =0A= }=0A= },=0A= doSwitch:function(obj,container,newClass,classStyle){=0A= $(container).getElementsByClassName(classStyle).each(function = (element){element.removeClassName(classStyle);});=0A= obj.className=3DclassStyle;=0A= }=0A= } ------=_NextPart_000_0000_01C89BEB.55E303E0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://edge.quantserve.com/quant.js function _qcdst(){if(_qctzoff(0)!=3D_qctzoff(6))return 1;return 0;}=0A= function _qctzoff(m){=0A= var d1=3Dnew Date(2000,m,1,0,0,0,0);=0A= var t=3Dd1.toGMTString();=0A= var d3=3Dnew Date(t.substring(0,t.lastIndexOf(" ")-1));=0A= return d1-d3;=0A= }=0A= function _qceuc(s){=0A= if(typeof(encodeURIComponent)=3D=3D'function'){return = encodeURIComponent(s);}=0A= else{return escape(s);}=0A= }=0A= function _qcrnd(){return Math.round(Math.random()*2147483647);}=0A= function _qvoid(){return;}=0A= function _qcgc(n){=0A= var v=3D'';=0A= var c=3Ddocument.cookie;if(!c)return v;=0A= var i=3Dc.indexOf(n+"=3D");=0A= var len=3Di+n.length+1;=0A= if(i>-1){=0A= var end=3Dc.indexOf(";", len);=0A= if(end<0)end=3Dc.length;=0A= v=3Dc.substring(len,end);=0A= }=0A= return v;=0A= }=0A= function _qcdomain(){=0A= var d=3Ddocument.domain;=0A= if(d.substring(0,4)=3D=3D"www.")d=3Dd.substring(4,d.length);=0A= var a=3Dd.split(".");var len=3Da.length;=0A= if(len<3)return d;=0A= var e=3Da[len-1];=0A= if(e.length<3)return d;=0A= d=3Da[len-2]+"."+a[len-1];=0A= return d;=0A= }=0A= function _qcsc(dc){=0A= var s=3D"",u=3Ddocument;var d=3D_qcdomain();var a=3D_qcgc("__qca");=0A= if(a.length>0){s+=3D";fpan=3D0;fpa=3D"+a;}=0A= else{=0A= u.cookie=3D"__qca=3D"+dc+"; expires=3DSun, 18 Jan 2038 00:00:00 GMT; = path=3D/; domain=3D"+d;=0A= a=3D_qcgc("__qca");=0A= if(a.length>0){s+=3D";fpan=3D1;fpa=3D"+dc;}=0A= else{s+=3D";fpan=3Du;fpa=3D";}=0A= }=0A= var b=3D_qcgc("__qcb");=0A= if(b.length>0){s+=3D";fpbn=3D0;fpb=3D"+b;}=0A= else{b=3D_qcrnd();=0A= u.cookie=3D"__qcb=3D"+b+"; path=3D/; domain=3D"+d;=0A= b=3D_qcgc("__qcb");=0A= if(b.length>0){s+=3D";fpbn=3D1;fpb=3D"+b;}=0A= else{s+=3D";fpbn=3Du;fpb=3D";}=0A= }=0A= return s;=0A= }=0A= function quantserve(){=0A= if((typeof _qacct =3D=3D"undefined")||(_qacct.length=3D=3D0))return;=0A= if((typeof _qpixelsent = !=3D"undefined")&&(_qpixelsent=3D=3D_qacct))return;=0A= _qpixelsent=3D_qacct;=0A= var r=3D_qcrnd();=0A= var ce=3D(navigator.cookieEnabled)?"1":"0";=0A= var sr=3D'',qo=3D'',qm=3D'',url=3D'',ref=3D'',je=3D'u',ns=3D'1';=0A= if(typeof navigator.javaEnabled = !=3D'undefined')je=3D(navigator.javaEnabled())?"1":"0";=0A= if(typeof _qoptions !=3D"undefined" && _qoptions!=3Dnull){for(var k in = _qoptions){if(typeof(_qoptions[k])!=3D'string')continue;qo+=3D';'+k+'=3D'= +_qceuc(_qoptions[k]);}_qoptions=3Dnull;}=0A= if(typeof _qmeta !=3D"undefined" && = _qmeta!=3Dnull){qm=3D';m=3D'+_qceuc(_qmeta);_qmeta=3Dnull;}=0A= = if(self.screen){sr=3Dscreen.width+"x"+screen.height+"x"+screen.colorDepth= ;}=0A= var d=3Dnew Date();=0A= var dst=3D_qcdst();=0A= =0A= =0A= =0A= var dc=3D"1207596596-41664117-109573";=0A= var qs=3D"http://pixel.quantserve.com";=0A= var fp=3D_qcsc(dc);=0A= if(window.location && = window.location.href)url=3D_qceuc(window.location.href);=0A= if(window.document && = window.document.referrer)ref=3D_qceuc(window.document.referrer);=0A= if(self=3D=3Dtop)ns=3D'0';=0A= var img=3Dnew Image(1,1);=0A= img.alt=3D"";=0A= = img.src=3Dqs+'/pixel'+';r=3D'+r+fp+';ns=3D'+ns+';url=3D'+url+';ref=3D'+re= f+';ce=3D'+ce+';je=3D'+je+';sr=3D'+sr+';dc=3D'+dc+';dst=3D'+dst+';et=3D'+= d.getTime()+';tzo=3D'+d.getTimezoneOffset()+';a=3D'+_qacct+qo+qm;=0A= img.onload=3Dfunction() {_qvoid();}=0A= }=0A= quantserve();=0A= ------=_NextPart_000_0000_01C89BEB.55E303E0--