From: Subject: timesofmalta.com - Flora researcher finds two new plant species Date: Sat, 16 Feb 2008 12:18:02 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0098_01C87095.F9E48440" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.timesofmalta.com/articles/view/20080201/local/flora-researcher-finds-two-new-plant-species =EF=BB=BF timesofmalta.com - Flora researcher finds two new = plant species
3D"Westin
3D""=20=20 3D""=20
3D""=20 13=C2=B0C
Mostly Clear
Feels like:=20 13.9=C2=B0C
UV Index:=20 3.0
3D""=20=20 3D""=20
3D""=20=20 3D""=20
  • 3D"email
  • 3D"print
  • 3D"small3D"medium3D"large
  • 3D"comment=20

Subject
Flora researcher finds two new plant species

Name (your name)

To (email address of the=20 recipient)

Message (optional)

=20

3D""=20=20

Comment about "Flora researcher finds two new plant = species"

Full Name (your = name)

Email (your email = address)

Home town

Phone

Comment

=20

3D""=20=20

Friday, 1st February 2008

Flora researcher finds two new plant species

Rosanne Zammit

3D""=20=20

Iris pseudopum (left) and Amaranthus.

Two new plant species have been recorded in Malta by flora researcher = Stephen=20 Mifsud, who is also the author of maltawildplants.com, a Maltese online = database=20 of the wild plants growing in Malta and Gozo.

One, the amaranthus muricatus, belongs to the amaranth family, the = other, the=20 dactyloctenium aegyptium, belongs to the grass family.

Mr Mifsud, who hails from Sta Venera, said that discovering the new = species=20 was quite a surprise because Malta's flora has been studied = scientifically for=20 more than 180 years.

He observed a large specimen of the amaranthus muricatus in a waste = ground=20 habitat with mediocre soil rich in lime.

The plant is known as the African amaranth although it originates = from South=20 America. It is quite difficult to identify because it bears = inconspicuous tiny=20 flowers and fruit.

Unlike many amaranthus plants, it bears linear to narrow elliptic = leaves=20 rather than broad ones. The plant is found in several Mediterranean = localities=20 including Italy (as well as Sicily), Spain, France, Greece and North = Africa.

Mr Mifsud said that, since it is found in neighbouring countries, one = could=20 safely assume that it was introduced in Malta and overlooked by = botanists due to=20 its inconspicuousness.

He discovered dense populations of the dactyloctenium aegyuptium in = shallow=20 soil in rock basins in a garigue habitat and sometimes also in rock = pools with=20 shallow water.

Although the name of the plant gave the convincing impression that it = belonged only to Egypt, it is widespread in many countries around the = world,=20 including the US (southern states), South America, the Middle East, = Asia,=20 Australia, North Africa, and, according to the Flora Europaea of the = Royal=20 Botanical Garden of Edinburgh, only in Italy, including Sicily, and = Crete in=20 Europe.

Mr Mifsud said the discovery of this plant on the Maltese archipelago = was of=20 major importance because it was found in only a few localities in = Europe. It is=20 a very old species originating from tropic and sub-tropic regions and is = described to have various types of habitats, including sandy soils, = coastal sand=20 dunes, arable land and waste places near the sea.

The dactyloctenium aegyptium consists of two to three and, = occasionally, up=20 to five spreading, oblong spikes radiating out of a common point. Each = spike=20 consists of two rows or spikelets arranged next to each other giving an = overall=20 structure with an elaborate and beautiful appearance.

Mr Mifsud said that finding such rare plants required deep knowledge = of the=20 local flora and countless hours of field research.

This year, he has already discovered some very rare plants including = a new=20 population of the yellow-form iris pseudopumila and the very rare = primitive fern=20 asplenium trichomanes.

Mr Mifsud's research is posted on maltawildplants.com, which has, = since last=20 year, been sponsored by the Strickland Foundation and Middlesea = Insurance plc.=20 This year, it is being co-sponsored by HSBC.

Mr Mifsud said he could not understand why government institutions = involved=20 in research, rural development, education and the environment always = rejected=20 sponsorship requests. Likewise, he could also not understand why the EU = refused=20 to finance such research on grounds that it was carried out by an = individual=20 rather than by an institution or organisation.

  • 3D"Google 3DDel.icio.us=20 3DFacebook=20 3DBlogger=20 3DYahooMyWeb=20 3DDigg=20=20 3DReddit=20 3DStumbleupon=20
  • 3D"email
  • 3D"print
  • 3D"small3D"medium3D"large
  • 3D"comment=20

Subject
Flora researcher finds two new plant species

Name (your name)

To (email address of the=20 recipient)

Message (optional)

=20

3D""=20=20

Comment about "Flora researcher finds two new plant = species"

Full Name (your = name)

Email (your email = address)

Home town

Phone

Comment

=20

3D""=20=20

3D""=20=20 3D""=20
3D""=20=20 3D""=20
  • Previous article =E2=80=A2 Gran=20 Ballo in Valletta
  • Next article =E2=80=A2 Dance=20 couple for Canada

Article =C2=A9 Allied Newspapers Ltd., printed on Saturday, February 16, = 2008. This=20 article is for personal use only, and should not be = distributed.
3D""=20=20 3D""=20
3D""=20=20 3D""=20
  • Classifieds
  • Careers
=

PAOLA. = Finished=20 shop 34m.sq. near Paola Sq...

A BODY=20 massage achieves calmness and full ...

ST=20 JULIANS. Corner highly finished two bed...

SAN = =C4=A0WANN.=20 Luxuriously furnished three be...

VW BORA=20 TDI. 2003 model, one owner, full e...

KIRKOP.=20 Highly finished maisonette, three ...

more = =C2=BB


Technical Architect

C++=20 Programmer

Software Tester

Perl=20 Programmer Analyst

Financial = Controller

Accountant

General=20 Manager

3D""=20=20 3D""=20
3D""=20=20 3D""=20
  • Most=20 Read
  • Most=20 Emailed
  • Most=20 Commented
  1. UPDATED:=20 Second tremor felt in Malta
  2. AN=20 insists: Open centres will be closed if there is no EU help
  3. Couple=20 say they bought vehicle for under =E2=82=AC3,700 and paid over = =E2=82=AC11,500 in taxes
  4. Announcements
  5. Children's=20 charity to refuse An=C4=A1lu Xuereb's donations
  6. Announcements
  7. Tremor=20 in Greece felt in Malta
  8. Sant=20 promises tax cuts for sports
  9. Government=20 to help families buy new computers
  10. Do=20 your duty, vote, Gonzi tells university students
  1. UPDATED:=20 Second tremor felt in Malta
  2. Couple=20 say they bought vehicle for under =E2=82=AC3,700 and paid over = =E2=82=AC11,500 in taxes
  3. AN=20 insists: Open centres will be closed if there is no EU help
  4. Too=20 little, too late
  5. The=20 spring hunting orchestra
  6. Government=20 to subsidise one computer per family
  7. Tremor=20 in Greece felt in Malta
  8. Government=20 to help families buy new computers
  9. Frattini=20 wants Malta branch
  10. The=20 flowering and withering of a coalition
  1. AN=20 billboard causes shock, dismay
  2. Hunters'=20 federation claims 17,816-vote membership
  3. UPDATE=20 2: Gonzi to take personal responsibility for Mepa reform
  4. Coalition=20 government impossible
  5. Surcharge=20 cut applies to households - Sant
  6. Norman=20 Lowell to stand for election
  7. The=20 Mullah of Mosta
  8. Eddy...=20 Eddy
  9. AN=20 insists: Open centres will be closed if there is no EU help
  10. Updated:=20 Mintoff leaves Electoral Office without submitting=20 nomination
=0A= //=0A=
3D""=20=20 3D""=20
3D""=20=20 3D""=20

Poll

What do you view as the most important issue that = will sway=20 voters in this general election?

  • the EU=20
  • a need for change=20
  • lower taxes=20
  • education=20
  • accountability=20

=20

View=20 results

3D""=20=20 3D""=20
3D""=20=20 3D""=20

Fun Stuff


Play Sudoku

3D"Nestle
3D""=20=20 3D""=20
3D""=20=20 3D""=20

Advertise here
Contact Us | Terms and = Conditions=20 | Privacy Policy = | Copyright = Information=20 | R813

3D""=20=20 3D""=20
3D"timesofmalta.com
------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/tom_logo.gif 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 ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/rounded.php?r=5&o=tr&fg=eaeaea iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAOElEQVQImVXHMQrAQAgAwc2hCP7/ lZYi2likClymmyciRMTdzQw4wO5mZlUBwmdmVPVw6e7fd/cFdWkUeRzrMTsAAAAASUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/rounded.php?r=5&o=tl&fg=eaeaea iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAMklEQVQImU3HMQoAMQwDwY25/7/W yAgEvi5kujm7C9iWlOQDuntmAKBs3wAliUclef8DFQsdMRf9GBQAAAAASUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/weather/sunny.png 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 ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/rounded.php?r=5&o=br&fg=eaeaea iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAALUlEQVQImWN89eoVAxJgQuawsLCg 8Lm4uBB8Tk5OdnZ2FogyLi4udnZ2BgYGAOPGA2POH9MFAAAAAElFTkSuQmCC ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/rounded.php?r=5&o=bl&fg=eaeaea iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAMklEQVQImVXHwQkAMAgEsLMciO4/ pQMIgmB/peYXiQh8Dsl1d19XVTN7l5kBUFWZ2d0XOt4O33UXEwkAAAAASUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/articletools/email.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAUVBMVEX/ //+mpqZbW1u1tbV8fHx1dXVpaWmsrKyDg4N1dXX////39/fv7+/n5+fd3d3Y2NjMzMzGxsa9vb21 tbWmpqaZmZmTk5OMjIyDg4N8fHx1dXXopxmBAAAAG3RSTlMAu7vd3d3d7u7u//////////////// ///////3GgHgAAAACXBIWXMAAAsSAAALEgHS3X78AAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlh IEZpcmV3b3JrcyA4tWjSeAAAAHtJREFUGJWFz8kOwjAMRVETCEPsl5FM/P+HErcVGxa9Ox9FsUx0 2uVRa22t9dUYN0NXZveLxdKbM1i2WAo6VRezqLCTkkQBKrzNYUFzQCzidPZ+QVeIGcgpbjAYAQgp BfioMDlgXyLr6YI7649H4i2Z12fOcfS05vy2v76M5AnqrPfRdwAAAABJRU5ErkJggg== ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/articletools/print.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAh1BMVEX/ //+Dg4NhYWGDg4NKSkqDg4NRUVEiIiJ8fHxhYWF8fHyMjIyDg4NcXFwiIiJRUVGZmZmMjIyDg4Nc XFz////39/fv7+/m5ube3t7X19fMzMzFxcW+vr6zs7Orq6umpqaZmZmTk5OMjIyDg4N8fHxzc3Np aWlhYWFcXFxRUVFBQUEoKCgiIiITEovIAAAALXRSTlMAERFERGZmd5mZqrvMzMzd7u7u7v////// //////////////////////////+ZXlWIAAAACXBIWXMAAAsSAAALEgHS3X78AAAAH3RFWHRTb2Z0 d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAAKlJREFUGJU9j9uWgjAMReN1xrszkqaB BmgDqMj/f5+liPvt7JVknQAAbA4hor8wowaNMSTXWfwhkbVIsp8noiBLxuiUF5NgRl2OefOfRDSo ty3Aqs4DGkpXQtGu4cjUfKHiAppluflQZFkLDWJp84StEO/QMNfsEhyYe2idCywJVude0Ip41aa7 P/u+Exmgq0TLaaV8ST3A7vTw42+xCvrh/DN29fUHH8MbdiYWwGoVCuMAAAAASUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/articletools/textsmall.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAK8AAACvABQqw0mAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8yNy8wN6sEGYQAAAAfdEVYdFNv ZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAhUlEQVQ4je2T3Q2CYAxFD07ACIzA BrIBbOAIjsIIjKBugBM4gmxyfLAvfAF/IMQXmzRp2tyT3ibNVNbEbpX6D9gWcAZ6oHpLUNMsfMZd 7Sbmo5zaoAYG4AI0Syw0wDVs5ED5jYU81h/UPur2lYW0cQhRre7VW9ziY8ApERwDWMwBsp9/4wNE xdjC36WYLwAAAABJRU5ErkJggg== ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/articletools/textmedium.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAK8AAACvABQqw0mAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8yNy8wN6sEGYQAAAAfdEVYdFNv ZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAk0lEQVQ4jWP8//8/AyWAiSLdg8IA FjxyDTjYqOD////YsMF/VGCAQx1OL9hD6QNQOp5UF5yH2hwApc/jcgE2QQGopvtQ/nsoX4FYL/hD 6Y1otD8WtVhdsP4/drAfmwsYsSRlmEADlBZgYGAogLIFGRgYPuBzgT+a/2H4PlQ8nlAYBEDpDWji B9Dk4QCbF0gCFOcFAEmmF7Ib4OiWAAAAAElFTkSuQmCC ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/articletools/textlarge.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAK8AAACvABQqw0mAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8yNy8wN6sEGYQAAAAfdEVYdFNv ZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAqklEQVQ4jWP8//8/AyWAiSLd1DCA BY9cAQMDQwCU/QGJjQr+//+PC5//jwoUsKnD5QUFBgYGA6jNF6Fi/tgU4jIApvggAwPDASg7gRQD YP49gGSAAdRlqACLvwSQ/G0AFXsP5ccTEwbIfg1gYGBoYGBg+IjmMrwumP8fPxAg5AKYLQsYGBgc oLgASd4enwv8kWzSR5ODhcN8fC5wgNLI8Q8DG7CFA+OA50YA/MXqqwKkJUoAAAAASUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/articletools/comment.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngA AAFUSURBVDiNjZMxbsIwFIY/ogihTPYVDDdoFw7AxMwVysaKb4B7hGZiRT0BImKKlClbJMQQGNgb pCwRDHQgKcVKIn7Jku3n/3/vf7Y7i8VCAR+AohkBEGitD3bABebj8Vj1+/1a5uVyIUmSSRiGCtB2 3AFkG7nb7TIYDGiq0LUJdSJtcAFpb55OJxlFkcrz/ClmjPkppxnwDfhuuZCe5/1li6JIDYfDOmuy rEomSTIPw1A5QLBerzkejwghEEKQ5/mrfXlztNb+fr//XK1W2fl8Jo5jrtfrE+H/sPviAGitAyBL 05TNZlN5bEWv13sIGGMkoErytDrkeV4tWQhBURQPgRIxMC1fm2/3RQgBQFEUbLdblstlBvid2+1W m8UYMwG+ZrOZ3O12lbVDaS++O9dZo0Apko5Go8rau9Y6ts+0VSCBlPvd15LtHtiQ3H9hI7m1glfx Czvtr8xpqzuWAAAAAElFTkSuQmCC ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/ajax_activity_bababa.gif R0lGODlhEAAQAPQAALq6ugAAAK+vr2VlZaSkpDMzM1lZWQAAAEBAQBoaGn19fYuLiw4ODnJycgIC AicnJ0xMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05F VFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAA EAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4 IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1 BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEv qxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEE TAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAF eCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZI EiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5L coE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GI LQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQp BAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAIC aRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik 7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAs AAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYD lEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmN LQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN 8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HU rY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkK AAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pl eBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQM DAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv 4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQE jsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAA LAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJi AIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooC Bg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJK EHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASP g0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAA EAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYY PAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqY YwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA== ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/media/serve/20080201---loc_31.jpg /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARwAA/+4ADkFkb2JlAGTAAAAAAf/b AIQABAMDAwMDBAMDBAYEAwQGBgUEBAUGBwYGBgYGBwoHCAgICAcKCgsMDAwLCgwMDAwMDBERERER ExMTExMTExMTEwEEBAQIBwgOCgoOFA4ODhQUExMTExQTExMTExMTExMTExMTExMTExMTExMTExMT ExMTExMTExMTExMTExMTExMT/8AAEQgA+gHPAwERAAIRAQMRAf/EAL8AAAIDAQEBAQEAAAAAAAAA AAUGAwQHAggBAAkBAAIDAQEBAQAAAAAAAAAAAAMEAQIFBgAHCBAAAgEDAwIEAwUFBQUFBwMFAQID EQQFACESMQZBUSITYTIHcYFCMxSRobEjFcFSYjQ18NEkFgjh8XKCQ5KiwlNzgxeyYyWzRFRFdhEA AQQBAwEGAwYFAwQBBQEAAQARAgMhMRIEQVFhcSITBYGxMvCRocHRBuFCUnIU8SMzYoKSFaKy4kMk Bxb/2gAMAwEAAhEDEQA/API5hmuLqQoavIoA8qnqNDdgguwTRBipMj2pNg0IFzbSLdwUO58JVH2j fSJO27f0Ib9EnKzbZu6HCq4Kwv2zVlipLIXKzFY4lcEqN9zsR+/TF0hGBkjWzG0l16pxP08uns7O 3vLu2srBOJaJqURT1Fa0/ZpCFDR3yg3aeqyDxp2HMvvS5mu4u0+1O747H37a69tPajoQyMx8WP8A YdA53tkb4uCR1V4UyjMyA3AJctO97SXK3TOA6wueUBUxxREdCOOrVUSMRuzBtECXFMS56or/AMwS d1W17dPee3NHGVhEJ4LJxGyAjppficOqmBiYgB3RLrrJSeerLBu4sj3Pmbow5GKRTDyEcCqaUU0r 8ft1t8equA8q1qa4QDx6oIcWlu0bX0v85yONtEeTAnpyPQaZdHE30Ww47J3Ns1njFRf0y2vuSmm5 PQCusPlS/wBs95XO3VgxlLq6Wu6O8cri8muLghWMKFYsRVjy1Ht/BrlH1HT3E4ENokdU92Pc9xlu 1Gx97P8AqI4yrJa06g1Jqw32J21kXcOurmC0QDnWXVEt5NmwVP5QcD80pNHZwSm4ZBF6gay9AfIV 6nW7MykcaIW6Rwu7qxwt7NI/trFcOoaRkX5/Ik6vETA1Xo2TCF5CKC1rIg96SCnPqGC+B266JCBR Knl8VFj+4cfb3Mc9wfceOpNuBQ/dqbeJviR2q8+MSGVjunv677g/TwQSmGwXZVf/ANIdDTSntvtM OO5Ybj1RKqCPqLtonPCJdRRY28jvxc28MdDx2AqNqU/t0rzZkCUWycBL3nroQly/yGTi71vJnaQY qJCYHmpRgwBYV6fNXTnF4uyiMSPN3K5EfTxqrRbK39xyS4jjWn8uFX+YfdogDBigTbsTJhO3Jb7j HeXB4H1MOqA/HprJ9z5NfGG8h5KlNBumwwO1Jf1S7ejss3bQxXy3imAMBCpHtkEjiRU+Wm/YfcJc moylAwY9eq1occUjaC/eheHsc3joHcxv+j4+4WbdQPv07dZCRZ8pW6cJFnymO1OCv7APbwia8ag5 xGjA/Feh0lZVdGbv5EtKc4Fui9M/ULCqnb/YFxNJ7Utt2fg7co1F3jietfjvpL3WPqGMo9YD81pm IlEHuWewnioZTUN/HXPTj2qPTICsq/noJC8xU6NsKaoQrKUGuoAUsvrKKb6JEgKWSx3JeiCML08T TT/BgZSdTEIDj7mKUHkN9dC20BeMwvs0fJ9uh31MZIQViCyEq147nbV5TXlFPDJAwIU086apudRI 4RTFcy618ToMjqqgsUUzwJxrClDTqdtUrOXKZAdYvdRtDeSM43J/t1txyEYBc3mRHtcFO9KatCGV KGQwyhvdYGjb10YqAiUKtLQAbaqQy8idvC60r00Kwocin/s5hyJI6da6yOVgpXO5J31FuBLfhF8C aHReBkOmopIG32a0FK6EhAp015lLr6JD59fHUbVQhSAk7DVVZSrWmqlQplUk+fmdUdVwpBF023PX Vdy8pkg6N4+WqmxSVajhI6dPHVDJeVqOFtttDMlKvQwny30GclKvRx1ptoJkrbFYCcBuNvHVXUxi vhrT+zUKzLA4LsEuQvDgx408tdkYpUhE8J/Wbe7jzcMLy2yyUmAPzRdHFOvynQbTEja+UG0wI2Es UxQyZrtfIvc4mD+oXJkZ7IuOSRwN6kc/E10OFkZsT0+aDIwsHmLKHunvrv2W2MOdvJYGkUOkMZ4L xPlxOmCRM5yrU0VHMcrPUuJZJWupHLt83Ikk1HxOrsniOicMvn72G5iubI8ba4hgnf0eln4jlWvx 0rxq/Kx6EpcVAps7Z7+uWY/1OziFnxopjTixY7VNPDRJxjoQ6Qv4cemq7hvocle39ukoQyxiOCYb jkTUiukhWawGVTWYRBQXGdvMMsLqWIGW3JFwjV4sfBh9umZ3gwwmLOQDDHVNE+Vj/Um1aIRTLGGU inQbU21l3Ubw6zhxyQClDI4pc3mJ743yyTigWEmp28K60OMPTrEWYLUhYYQGF9vJsxj4hbY4MJFo ZUHQkeep9KEz5gvViMiSUEuM3k5ZlhvikZVuQDAMEPwG++mIVRjojxqiNEQizUuxQme7ioikg1YH rtqpCHKkHwXZurq6uWuERuG63C0rwOqE9CvCAiEFnvbayvHMsSSOgJQsPxHppiIcI0YuFyttLkpo lVljR19xl6fbqDJgvOy0bEX6YvthjA5lhZqLDUAjj1+3WPfR6vIHcHSNhlKW0oD3JnLC/wAYskEp QysFk3JYBfwjTnHplGRByEWioiSoYvNlHhtreEqtKC4r6vt30zOHVWsofKaR3VfwWTQPcgykkBkN XI8AR56Su4sLNR96HCljhE+ybKVlvctmQ29fYM4FSCPjvpfk3RA2wIx2JH3K5g0UX/W2Tu6hOcB2 ZPw0PmNYxiQXBWBL1BIFTJbYvH3VtlLOCNEioXCIFVSN99OzuN9ZgdSE3XyrJ4dyvS/1VhjyPYPb uVNCrds4yRG6ULRFxT9urWxFUKo9kIhdZAPAbuwLyvgO9ZUuVxt5vAXIEn4qnbU8n26Mw41RQMLQ IZ+Y618vjrmLazEshMrccldLyDKwDq5EwpvoSvtXyWQKhr0HjqQoZI+bdbyYjlU1pQHXR+31bYur Siyr47GSV5EEKPHWhOaEYuiEsQjQj8X79RGe5UBUdvMVahH9mvELx1V6aWGYBSKf7bapJwFEpYZX bCBQysBvoAfV1SI6qh3bkf00JjpyGmOPDcUzCSzHKMJSZPE+A1sVxZHQmO2LNyYVPgNMaKysSTIo 9sD19KDpqq86vY9TStPt1SZZDJRiEAkL0r/DS1kkOSeu3LcQW0szCi8dY3JscslYnzLNe8ZFnyjB TXj1pvp/ghoJuAwl0rtpx1dQsras68vyIxoaa8SoIV2KIkV0GUl4qykQ20MyUKZYj9tdUdeU6xVI /foRkoZXIbfkBttqhmylXYbSvhUaAbSpAdXEtqAf7tV3q4VhLc11TcrbFZWMDf7tQr7V+K1HTbXl 4OoGryA+I1KlYPexJbOoiX0uOnXfXYRLpCJdO3at4rY+K0deFwtapTZhXrrI59JfcFkc6o7twTq0 cdtbrcyLXggUgUrxJ9AP2aDAmIPasycpSLJW7ojtc3ZyNfx1MaUikHpK06AavxJWieuE7wTOuTOl O37ehFoPcAoRVQ3hrWNpdlrSvYpouobZcFY+5AhVYWj9I2ojEaSokfVsHeD+CUjORsOUstkcWkEs QmYMQQiqm/T46d9MumxXJ3XHbOVnxjq1yg/QXbyLbzNQgyRUDfs5DUWxEsdQicijdF08YXMmeRob lQl1FIGNBs8fgdLGsRyNFn207cjRcdxpaxZKa4th6XiLo/T7h9+vWjONHU1OVktlkLpMkWjc8i53 899aBGFqygCEZzGZycs5iEpDAevjt+/Q4QACpXXEIMiytKrzNU9QCaknREXonjB4yE2nKvt5apeQ xuWLRt8oNdhT4aUtl9yUvsbwTDZIsXGKgTY+5VRVz8fPQJh8pKZdU77t6zv4mg9lVeY15uxqoB2K +FdMQtYIld5BXX9DsYMNKsKIb2MGJmrQso/uk78tTFzkr3rkyylS4GQCJDYh/wBJbACbf8Z67ddX izudSnYtqvrdr3mQtII4biKMFyWMp4n1eOveqASoF4BUj9uXWM+eYSKlF96IkqR8Drwsde9UFWba C0sZbdTKZZ5W5KevU6rMEqkpEuntLnLPbN+qYfpoto1ZQOQArU01i8gV1nbEZWLyZVuB1K/WE8cj e3KoSJ+p3H7dK2uzMlrqh01RcWsNw/6aO4CwuV5QtSjqdiK/HVqiIuUKmYB0Xpb6u5Wxxfb/AGx2 7xWJZu3ccscQPL24lRo9ieoAFBoPO5BFdXUmEV3cKNz9Iheau5/p3jcXhbXu3C3TsrSrHc2kgLkM 5NJA/gPho3t3uptl6cxn8kAEdCimJupHtYi+zcVqfOm2s3n1gWFDZHIJenkdZs4q8RlXllA/t0Bk UhUcpeBIeANGcfu01xKN8lJilCaCb9Qshb0k9NdTCMYhLyDI3bTqGRAOPKgJ0OQdQ6vXsVsY+YNK 7GvU6HEl2VjFsodaRCeRtq0NB5U0UqhGVOti/usACBX7tDlPCBIMmLG2yKjGToBX9mgg4XoRWdd+ 5SM3PsRmu/Qa0OFX1TNcUlxtJKKMPT4kjWqyOuH5E0Tp56klQSuRbOXBI6agyXnV1ZPZ9I8PEaGc qFdsZZWlVjXr46VvLJa2TLS4bpLbBszUDFSTXr01gE7iQO1CpLrIr0PcXEsx3LsTrerG2ICcCqNA eg1fcpdfBbMfDXjNedSpakDcaoZqCVYjhodBlJeU4h0MzXipkiroZkoVmG3JptWuhysXkUtrM7Gm l5z7V7aiUVrSm2qmQKNEKf8AT8RsNRuCswXz2jq+4K5X3iab6qSF46Ll/D9mpBfReYKs9fcXz5Df VgF5lkVrj7PIyGKWdIzGpYyM2wB8duuutJIWPKcojATdYWGOsoY3s+Vz6aNLSlfs+GkbjumInTqs 22yUpMcK4gu3jlhlmAa5XhCrGhBG67eO+iSri4l2LzR1A0SXm7uLEt+iyE7XM3HkVRtkqdgdMxj1 C0Ka92QGQCDuKZQUI5x9VBPQauawmJUApig7psZcPAlw3EQyyLSla8qMf46VjxmtlIdQEseLIScJ Tu/ZubqR7UqI3NVBNOv26eCdAIGUflw80vZFhLFEz3MWTu0YIQwCyQxOtAPiDrPhYRypR6bIn8ZI krhtEern8le7f/VXLpHdxyQ3UFAsjAryXyNdEvIjp1SF+A46pi7oEqLEhipFHAyq1OtRqspDEUGg LNMLibm6yavbwNIFJdqAkADepp4aatsjEZLLUlops1aXkWQkE0ZQOeShQdxqK5iQwqwIIUeJxF1k sgiKoCr6m9w8VoN/HUzntDr05MHWpWWIuLiSOHH270jUc0iUnkfM/DSG/dhnWbLcdQososuDumW/ RY5xSik8mAPSg1eNZdj0VI1k4VOzvImaQX07x24LGMxx+6Sx6AqSKDRpBhgIvpBWoHsTBJbxX6Tr IC/CSNoyp8K9emg+pNsxYIU4HBZCLvHz2TpbyK6zTD3I3IK8lby8xolVsZadE1E4coNJkZ7O4NsI ebptR1Nf2aPtV9gkF9nyF5JD7BrGpavCm/3A68wXo1gZVWK/EFxFDLExCsNz84r5akBXMXC0yzgc WVLi4Y2/Gqh1ANDvvrA5U4+oSy57kGO92yqM00RZo4GooA9J8T8NUiJNlXjWwcqfFXKvdxPccjEp APE7qK76rZ5TgZVbq4hbb9e5uGZ7FigcyKOzcMVmbq6mScAn4mgOvc6LxgT/AERXXcc7a2d197Vx uIzOAPbHcDukd4FkeWM8WjdCGShO3Wmubhf6dxmNErAxBI7UQt+wO25bU2NrJPYX8FVinnf3opiO gIUCn26vZzzYfOA/cpNgBZKF1ZXOKvJbK8XhcQni61qPMEHxB0I5TESCuUkLUpqhCulfuK9mNyI4 qnh5fv1te2UhnKpOTBcW8k90gBX5ab+WtOxgk5zRS3tmMRJ2YaESF53UccF1M7BiSo6akMriSv2a pCeJG/8AbocpqCU0WttG0QYfboUyqyQjuHJpiLWSpoSCajy1emskqoCxm5u3ymQeZqspO1dbtMNo TcQyJxWdUA46sZsvEr5LZrFvQajeodVpQinw14KQFXRjJIVA216RbVVkWCY8HjGnmQeJI/frJ5lq RukSnHuS0FlixGp3K8dZlP1K1UGWdNanxH26196Z3rgWhJ+XY6qbGC9uUq2J60p5apK5lLr7+k+G qesrAr4bemo9RSF0kX79VlJ1GqsxW9SKD7tClNQilrZcqGmgSmrRi6LwWYXw0uZkq4ixV0QKAK/s 17e6Iy4aIeIrq+9SomjA6ffogLqWyoyu1AaDw231aJcqQoZBQeNfLRRkKQqbkc1P+IbffqwULD+1 8ff3chNsAyvQTF9lVK+Z111kmCyuTZGIymsZ+47eztvBdw0xHEI5pVR4cgfhoFNQOTqk40RsgSNU azva02TmhzmJuJGaMpNGEflGwB5bDw0xKtwQEvTytrwkEBvew5czmJMikvDHXZ911I9asfmQV8jo HHkdoB1GEzHnCMW6hL3duCtsXkI7bFW7mBIv58oq4Z/H9mjRk6b41xnF5apcWJmxM7BW5RzgsKHZ StKn7xqeqZfKu43tjL5S2lns4HkMQjdo1B5lJa8XUDqNtDs5EIECRZ0Oy+ECHOq1vtv6VdzRdvra ZWeO2tzfw3pImSvsmEowqpNDWm2ucu9944veLyO0jQ9oS13IiMhltv0j+lPa2U92TPTf1OOxdJZE VyDLzLKkLODVV2LGm5prkv3B+6b6ZbvoiR17sur+21+vKRkMDQLfl+g30suUEVxh0uSqK0fuTzN/ LbY9W0hH3blXD/ncgCUWx5T101C2/wDDqifoV/sT6Pdj/T6bKSYLGRA5Bqc5I1Z47dloYQxrVeVS fPataavy+fZyABYTID7P4/JXqpEHZQd0/SLsDuPF3NgO3LO2ydw6oby0t44ZkdQeMisgFBvuOh8d Yn/+j5tcK4UgyuhYIEZaQ7ZdNpHXofBFlxoSd9CErXX/AEy/TuXt9LXGwyW+ahCTf1aWRm5mNqSq 8YIXiQp6AU89dLxf3JdcDLtgZdwYyEh8CNTp8UtLhQDBuq1WDtrtu8WfH3OJtGR1UCUQRK5hChVA cAN6aUG+sf8Ab/uFkrZ8eRIIO6MwWO09ku0F/wAE1bABpLwr/wBRv0ozXY3chycBa97dv5S1lcuO TQvSpgkI8QN1P4h8QdfQvYPfByd1dha2H1d/ZIeP4LI5HGFZ3DQ/Zll+HsLi3ma4uaKz04lyeBJ3 OukJEiyy75iQYKTuC3tzOGs6y5KXgpjjqAynrtq3Vjoq0E9dE24+3uLrtueJ0VLnFhZLeWY1kUMQ rKK7089Y3Mj6PJhIO1nlPZ3Idlhl4BK+asLW6kW4kkEN8tA8kYqpWnUeetiGMK1M2x0VCbH23D9M t0v6rjyRzu1SPHx0TqjCZd2SNee+t5xY/wAwHdh4mvUaINE3FmTlbwXNtZx3lxknc8Q3sM1Vr8Rr PnMSkY7UlOQlLbtVy5v0khguYl4zgAhvA6WhS0iOiXjVtJHRXrPIygB0CqWI5Menx0CdABQZ8YEu V6M+p2PXOZ/6dXBXjaDsnB3EqgekIDcOB+/Wf7zd6VcB12xC34S/2wyv4m2EMdvK8Kpa3bK1w4Kl +LEcQCPIeGucED5QfpJylTIhM2QxNtY3QjSZbiMKxhkhIJXagqKkg/bq91cInDkDsXjF9Ug99wc5 LDID1e+kkbyVqWaJqCpp5HVaZ7g6Z45wlZDxXVymohJ804kv5i4qASNdFxIbYBAuKM41oQvTr+/X pnKSRF5DDGSFoW1EQVaBZS2iEoWJoTX9+ikowwuRbr73LlTep1WQcKk8Jpxyh4wQfDf7tLgqAHWZ /UnIRmQW4PXb7daPCDlFgHSljLVWKsPHz6DWnI4RpI1O6wqOI6imgOhkqjI7Ecn8OmrblAyhV1U1 p0HTRgiL5aIwatNz9uhWkIU5YWkdnwc5VcjZR1I/drA5ki6Td5BXO63ae4EINVjG4+J0Kg5cpmIS s9py6DTJkSpIXcdkD1G+qGSkKU2lPDQBYrBRNbU8K6tGSkKBratdtW3KwDrlbbfpr25eARC0tKn7 NClYpij1rZqAPTXScrOqIAiSWhC11Am6syjeLjUeXw16PepZQPHTw+3RFKgcAGpH36YipVd/3fw1 eESFIVWRtifLRYgq2FQkY+4vh6gdHEVVJC4m27dvGtsdJJJbXS1CSULK6mlAfs1vTs3xBXL+t60H OoTAtqqW6x3Eau7j+YrqG6jpvrNvtmD5SQsW/kTEvKWU1jPdWoa0hiZbBdkCigQDwA8tavHsltBP VaEfOHJyvl3ei7tpoIecPEhnp6W4nY0I6eGqmwiRI0K9Hyl1xisVbzAKIvdidikhPrkWorUVroUr juXp8kg5TBkO2cbcYuPt/C47mt6yHI3hUABV3qzU3p5a9/kxcF1SnmEy3PooMTLY9vXMuLggY3Ih SOAvGyxmGM0ADkUbc+B1lcjhz5J+rCHOm20b5HC2L6efSDN/UFI8tm5WxXaxcMjKtJbhVqGEKnwJ 25nbyrrBvuhxJsNQC8jn7u0ra4HsxPmlp8/0Wy4/sntftCZbDt20NtbXToZ2aV5JJGiBCli5NAOX QU18Z/c/vsufaROXlh5Y/E6n7l11PFhUAAGfJTx7l2MjP7MfKC2EArsDTieQr5UNdat1vIFx9GO4 UmD/ANu3zB9NC/czq8W69UVm9JDD5SNvhrpeeNhBGhH2/A/FBhlQSTNDELqOnuIKNXpxr4/frK5P NnRSORX9cdf7X6/FFEQTtOioQX5kkcyemOQHnGOilvEDyPXXKcb9wE3y9V4RsB3RGkZHrEa7ZfV4 ko8qsY6KRpeAjuIzUxng9PFDtuPuGmbefsFd9Z3GB2y74nGR8In4KBB3BUXdHa+G7zwc2DzdulxY 3YHIHYoequrdVZaVBGu9rlNoWVSEZ6gnRj0Pcw+SSlEFxIOF4g+rn0T7o7J5vJG9328s5Syv7dq1 Vj6ROKehvDyJ6HX0D2r3uFx2SxMaj57T1HgsO3iSqLjMT9srHb7E3uLnjuFJZogTLR+T79NdBGW5 ABEgxV62vchJb5AIzxvNboCSGo3FtqCnX7NL8kwJg+WP3IMqtG0dLl7kcskTLeW0kMHypK0bAN/5 iKb6cjOJ0IJTIoAyq9nFZgJeyzyiZalVPj9lPDV3KiROiHZK4/VzhjGFmUVRl6MOurAIkIsFaiy/ sGKOFakrRgx5AE/DQJUvkqkqwdVcTIrJEP6goVoz/KjGxp/u0I1MfKqem2iJ27W1yyEymIeEY6HQ JPHo6Xk4fC9id02cc2C+nwVuMl12b27b+8yt6Y0jkckEfi321zvv5/3YP/QPmVoRm0B4KrAJQBBb cZJIH9yLl6Vpt1/CT46wRKXQ6ZS0iSrkV6ecUrUSSYFJHRamvTdf7dDlZLGdV4yY6Kn3elo3ap9l WLxXcTVYUClkZSBt400So4LOzpzjgOswmYJE7nYKpJ0aIcpwMkuyU3V2wXozHXSgbYB0lyCmmKxM HEliD8fhoW59UsI4dErlVe1QqOnWmvOWViHCoQmdpVA+Xy1MY9SvZwjVvjTLRq+s7arJ9VMhhHBY yWFo8j1Chagk6GCDlViCsM7mkN/lmUsWCk/x1s8KLRdM1BtUQxVssaLy8BUV0SclclWpII5pa12H 7NCdCkQShOZaOHisfQeWi1RRAhUj+8oA6+ejqSURxdo87qoG+2keTYwSd1gC2bt/Ew4vEm5uAA/H kTTz6DWJbY+qpSOpS3dxGeeSVt+ZJ0KuTdUc4VJrUjwrq4sVQWXSW3jTQ5WFXCuxWuGFjfTX2RW1 vrIAizdTWQMKKAfAliBuPEa8ITkWYp6HEJhuJ+CGGENRl3BFQfMag4x1S4j0KrziKCNpZTxjXqdX hJ8dUWusyLalWpcVc28NtdTRFbe8Qy20vVZEB4kqRsd9tVFwLgdFe2kwLSwrtna7ig8tUkoEUetr QbbUI0qS6KIq77ClfIauANFLOqs1t1FNXgeiqVRkhPjog0XlSli66vBSFRmUqP36Z3diuUOnkIqP 3fZosQoJwh0so91N9+S/x0yI4VSgWPAy1zBcqjoYm5CKQDnuNjtrZEdoYarkpAVQIdWMr3V25YZC a0ykk8dypq/GMkbjqNQeNvStft1lgEgxCAZLuDG4orlcXfXt3k54vdtrO5X+SsJYVZkAB9Qrx+G+ mI7nA6BbFVEiNsgAO5PnbNr/AMw9tydxX9r/AE+d1KwwhgwdWoC1Oor4A6pyZggsNFmcgCue0Fwh vbsV9FI97kAbW0hd+ILFXdUqKnyBP7tJzIBGXQuTtcRiXKv5zvXGRFbXB5dpLWFVaV0BUe4RRqAb 01m8Dj3HN0NpcsH6Jn/1xgQA5/DPVaH9De0ZvqtnYpbu5kue2cIyS5AnlQ86lYEJ/E/E18lrq3uV 0eNFoxbd2dn69i1/b+FJ/NoPmvas6QRwJbwBVhjUJGiDiiIooFUeAFNtfMffLozjtB3fId2e9dJU Eq3EH6rNWts59PFmanXciv8ADXyariSu5AqljdIP+f4JyZGvcr8t6Yhe28LDhKy8pK1NFTjTTnP/ AHBOmF/GqzGyQeWp2xjt2/x7lMagWkeiNQXC3mPin6llXl8GA3p8NfSKedHmcCFnVmPdKOrf9KT2 7ZLi3YF2iehVqbHeoPXWf7XyB6kq5dW+77BXsGHVLuG0McP9RiFJISol49CjHx+yo0p+8/YROs8g DzQZ20Y/mHGezVTx7WLKjBde6nFtmYEH7NfOKedIxMJdQQ/cnTHqjOOnDKsLt6kNP2jbX0n9qe4i dYpnLzQLfeMH46JK+DFwreQxmOy1hLjcrbx3VhcDhNbSKGRlO+4Px19DjRDaN/bhixj3g66/gkyV hv1H/wCn/GxWbZ/6c2yWmYswZTYrGJ1uEXekay1IfxABoelNaFFtsTslL1a5DXSQ/Xv6hKXURI3R DSC8qd1d+Z6yuxDms3dW81s3tNDHbR27ROhqRx41Br1rrT9v9m40AfSrDS1fL/ekreXyLCH1j8EK b6t21xHHBf5e8uoIzUxTLG6PX+8pSh6+OnK/Yqa5mcKxGR6qP8jk7WfCrC6+lGfka4v7u9xhlbdr VYkhDeP8spQD7NM8g8qEf9oCRHb+qDAyB8w+5SzfTLDXdozdm9zW96xPOOO9T2mIP4Q6chv8aaWp 95mC11ZgfwVZXxBz8mWbZrtXuTti5rlrCSNA38u5Ue5bsfhIlV/frcrujMYKYhZGQwV1azJeusVz EGfwkHzDyGhTG3RVkGyF+e5isGPuy1m5URPEU+3XmMlG0le7M1LcSdm/Tiaqxxzdm9vfzKb+41ux IrvsAfLXI/uMNdH+0fMq08ABC4bdUmEfKiEcuEg5VHU0IpTXPyAfr80ADKItbSTXBM0clGXjCI6A 8Ogc8qdfOuq7DI5+wVgc5VDuQtF23eWc78j7sEkTChqQzLRqbAgV1eA2lnTNByyyjLyezYTU6kU/ adO8YPMJxwguJWKyYSt4j+OujsG4Ml5ohLcyXNxWOvAdTpcwYJaXcicj8bZV8T0+/Xq21UxLBELC yYxBitWNNWMwruyMY6Bv1Cg7BdxoEpKmpRDvfJ2dlgJQWAl4kAV8aamp5EBGAdefbCKS4uDPJvza p+zW/EbYsrswTaLLjGjovUbjS0pOVUhD53WCRlIofAEamMVQRyl285SzEndSTSumogBEBZfYrMlg uh2WYQrJ4Wi9kYOO5kWR19K7k01h8i1ykWcp8zRX2ks4tlXdwPOnTSEp7inIhkuyWwUUpvocVJCp GCurSKqCVUu8hjsZe2EWRk9qC4k/mycS3CNdySBvuaD79F41W8vqAn+JTuLsifcf0/y/clhL3x2d PFe451WG5WWQRSGSAqzjiwow+HXprXhfGIG7CesMtENt8fco8dsxWQ3HtfpVQg15qBxUjr6gd9Zv JkJzDdUrKo7k/wCV7B7fxHbC5DPItzK80dvKgBbaWQA+1VgpYoG9VDx69dD5BlVWTWRubDp3hwAk xCO93dm9yd4wWeT7exQt+2cRjYUsrTkqssYUyuFXbk29T+zWB7bMgESLydU57mWMrN7KDcbba1JE pOARuGKgFBqpLorBWfbqPjqI9ylQzQeNNGEsKAh00VPDzpqYjDqpDIfNHUV6aJHvUgIbPEKHRqiy kBBrpKV20zFeKEyofcTbfkD+/TEThDQXtwz/AKp3aRXdORfg1Au2wP8AHW2SNQFyfLba4Q24lsch d3N7eR+9Y4s0nkp6Z5WNY4FPU1PX4V0OIlAAA5l+CZrjKEQBrL8O9DR3XZ2bHI/p45clI388so+Q bCNR4KF2pov+OTh8Jk8YnD4Ws9v5myftqa9tY1hQlUjV2r19Tek9BQ00vYCKz/U6wb65CZHVd43P dt5O2/o2WEsMrCon4H2mUsy0LeB28dDhBohWPEMfOEiXf04vo8lcRY51WzkXmkshKqBWqgbE7jV7 /cK64jccrUr9xhtcr3J/0wdlHtH6aRzSye9cZe5lu5JOPGqpSJQBU1HoJ+/XIc62XIsNhDQ0A6+X JJ7vD4LouHMGqJ7c/etcuIfUjA1B8R0IP+1NcV7lwHlEguO0dhf5aMtCE0r3TsMvcTrssaCFT8SK sR+3Xy33fmmvkz2a5j4YY/HVOVxfJQW6vXYmzg3d1ZiB83AdTrMo4kiN7YB/FesuGide2o5DiEWY cWDUp4r0FCDr6x+yePv4MwdN5bu018cpO8sR4KV19i4RjsobiR8DpDlQPG5UJHA3bT4S0RR5ooqY oruB4ZBzjkUh18w4pr6XTTXyqTA+YEZH92B93YkiTEpFcPZSvaTfmQExj/EPA/eNfnH3L2i3jcmd JGYSb9D8Rla8LgQCidq8iSBnG7io+1daHAtlRys6TGPGP+hVZB4pjjf3Y1I2Z6fbt46+28a/16h2 zbx8VmyDFWI46NzINR0NaffrZ4vEaW8guNOnifDQfFClLovH/wD1g/TO0kntu+LNo7Vb9ltL1pEH ttdBSUdiOnNFpX/D8da/tPNHryhljkd/9ST5NbeZeTZO3J7eBYLyzSe1BB/UREMtPE806ffrp92V nyuHQ5Q+G0xsGQFvcUazkB9qpNB8Nhvq4yrEkxfqq73EuMuJILJzDTcFCQT5UOqygJa5UsJDKb+0 O6u95JDjktpMzj32uoJkDxBPEMzen9ukOVCisPKQgl7qoAODtTXH9O+28zeSXuHlaxyEa+5PgYnR /cNKkQOSaH/D+zVIXlmOUvHlExbqkHuC9wdmtwIMAsFzASjSX3Npy4O9VY7U07BywTNUJnWS9o3j vcdk/TaeN/50/ZXbjR2cSDqbZmJ5Hou9Brk/3HB7w2u0fOSYtj0Q6zanATRBZFU26sTX1VrU+fUg 65qMuh8EuFb9csvvyVBKAMrNUUBA9K08KV1eESS/XxXjJyhHcgd8KHQco2uirueoATkoJFK7ljvq kH1KZ42XWbZ+PjjpWIpSn8dP8Q+cJ0nCVE5FUZ32psBrpgAUrMonb3DRDgBVm2DfboNkXQSjlvAe KPdbRtSm+gkAK0RjKfMHZ2zQqzbqRt9mlZTO7uUuFfmtLa1Z7oHiqjc18NEicqIDKwz6h5/+p5A2 lu5MatuPM61uDX1RqwqeAspZStRRQR+waatmFMinC7MVrCh2pTb4nSY8xwoZJt+ks9yZgKRDpvps YUuoxaxM1W6jy1WyxkOckWxeNW4lAA3JoBrL5PIIx2pS2WFsPb+Ggw2L95/zWHI18z4aQsmGVqIM HVGUFmZ2NSxJJPx0nuYOUwFHlsRf4x0S9t2gaVFlj59HjYVDKRsRodHIhYHgXV7K5ROUGkaKEc5m VASAC21SxoB+/TABOFEImWiFYHtSX6hfUOzxMaMMbDLFFcz8fSqcx7lK7E+Gj28gcep/5pHC2uFH ZXnqtr+tvcGG+nD9odv4m2itLOe5aSSNVAijgJWN6hdmLHdif7usf2qq28ylKRIjkDvRIlnbqs17 Bix17m+UCO9mlxNHjkVCxZHdii/4Rx0/eTvy6M+2L9e1abnYJ8zPj7fKxi2ssdI00VrUDdlHAtv4 CvXSHM5W4GJLKePAyJbVOeMyndr4jIQ4yP34JbSaKw94gEyMvFCpOwG9R500tVxp1xNkiwIx4fxQ 7hHIGo1We9wfSrJ9q4+zvri5imaeqTxA8THKEL8VJPrqoJ28tNDmRDOGSUaZHRLcMW32fdpss6oF aCClAKU1UsNFZ1FNGKGvXRhjVQhdzGN9uuiAqqFXCEV1dWBIQu5H3DRK1CD3NDsfvOmYqShMoAlQ ebKK1266PEqrZQTtrA4/DxyWs11NIb+QsIkQe7xK8COfTx1p28oSG/sC47l8o2AHpHVCu/sfjsBF Hh8NWaNJHMNu7VYXM3WSQ+JC0VfLRPbrTa9hGun9qe4VkrDuP2CB4n6dZfJNYX12BELmUq9s9Q7K p3J01be2Br0Rb/cIQBAzhNP1C7bzWPxMNvjiFtAFae3jNZWp0IC+GlePtrm0z5ikPbro7yZ/UeqM /TqDIpi+fcURS6lDLamReMoRKA8gfPSPuch/JrH80H3KcTJoHRPFvDaTSG09xfccpFZ1aoeQ+njT fbWfVTGEJSsykIUGbdrr3L21iU7d7UxWGVQr2drDEyr0L8QZDX4sSdYnKtEOKO05Hxz4r6NVXtYD QBvuVPPxZFpMTPY1Cw38b3qiThyt/adGqKioBYNx+GuT5dvpREpDWX5di0eOYtIH+nHihkzB2d2O zEsT9u+viPMvNtspauSnIhgs5w3dNrc/Ve77ZfaeS1to4ixoG9azNx8ASja+se0+1x/9TTKUcSsc nvMhALnZ3n/LI/6cfMreLONoLu5h3Mbr7nFhQkeIGu49g4s+NzuRRkwnHe0g24aEDtbX4pm6QlAF VstCvESJuCNj9u41hfvn28CO+HUfxii8Wau4yQPbFl+Y8VAruCQdxrpv2fyhZxDKOp2xHxByPvQO TFpIF3HDBFeRXPp5FfakbwLoRQfsOuE//onAEuRXOpjNvTl3yjkfhu7NG6JnhzYF9FyYSkNtK3Wg JHwbXM8j2401cechkN/8kyJuSEYtAfbBVeThBxWtKny+zX032SBNbiO6QiGHaf00cpG3Vc4q6yNx zhyMUUTULqYixCmpHE8huaePT4a2fY/dJ8kypsG0gO/R9Ph3ZZDurEcjKzf/AKjcPjbr6T5lLz1n natCHNR7pnUVX48S2tCv2qvi2RsgZGTjU4y5KT5d5FZPYv5qXN7k+180La1v5Eti1XqAxKn/AAnY 67KouH6pCO2yLkI7+v7dyBSO8ieG5mrxuYlCBqjqy7iuqjf2BLbJx0XzIdoZGztxnMZZJnLCIVM8 bGV46f8AzIVoRT7DqotEjtJYolc9wY4S9d919wGOi3T20TDjLb24ESEdKEDXhwancxBPflXjTDsX zHdy32Okjv7SZoJo3Qq43JI8/ho8oAhl6VIK0Tu6zh+pfZ0ndeLjC9z49Aclar1uIk6uAPxAft1S oM76pfjy9Oe2S9NzkL2T9L2LFJh2N23xFaBz+lJ4Gm9Ncd+5y14/tHzKZvxJ1FZvC5VxFycqWehN WZgNyxp8tK0GuejaAMhVMQC6uQtKbjeL08G5yltvUalk69PHVoRk50VBkoRmihxaQKa8puR2O/BC BQ+W/loG8MwR+L1Wcd4J7WHmY7DbWh7eXtCcfCU8PFFfQrzbcdKdNtdROWwoEwmS2t7a3FGUNSgr oO9yhOBqmCS1a5s0KL6RTYfu1TCs7hEMa15HIsI+QU6dRpYgdqFIqx3pezWOCkdNiRSv3aLXF0WO iwXGwNfZFnlHIs1ak/HW0TsiyOMBaPjrG3s4+RpsNKGb6qDFCc073Ug4bRqd9M1RADqChQtruWqq CYfIeOvTsDocyVdt8cXWntkOPA7aTsubVAkWTd2f27NNdC5ZSIot9/E6zbTuSwiZyTnkLouf0ybR x7H4nScinY4wqfbaS5hob25gZMc90sJG/Iw+5w5nwAOqGDkBPS4pgIyWp95YjHz4ZO3bmYJlcBkV sIZXIDNZXC8w1OpCrxP3fHWdVxP8XkSqOA7/AAOU1ySLov1WB939k90SzWt8ti5xljKs9wFcFog2 8bSIu6rTxPjrS4fuNJlKO7zK9VG2PYrXZubz9jDPjcRIsNvZP+slZFCzPIJCRV/mNKsQNK+5URn5 ySn4MAAAnHL9sQfVa9wqdwzXN+3CP2b9JEiS3hCtNItFU8zWtamo1n8bnT4oIgw8cr0qg+VBbZXG /Truh8ZjxHeZaxdLXH2cacmMVwtWuHc7KypRafHTPFnK2v1X1RfT3eVFLXMzZyaaWT1I07LKEoGR wf7viPiNtZ3JqkdTqU1XT6fTLLZ8R3Bi8FibTFcWYvutAXfiSGqp320/zvcDXR6QDvgDU/BZc6xK TjCHfUe7yF52+jiB7McpZEDAmQxhOBrt6ahqV0txvb7rgJWx2CJcRfXs3IfqiDsdVjcUNAKD79a7 volWUjIB1GvB9VIVW4FQfDRogqpKG3AFSuihVIQu4XqD01ZedBbsUBB0SBwvOgty1K16+GmAVbcg dxMPfiHhzXf79MxGCUN0NxOUjfHS9wzRmH2B7cSE+kyEgUWvx0blUvZ6Y/m1XEcykytjTE6+Y+A/ VK+ftYcx7d9jrqSa/d/+KtJlAl9xj8yEbEa2qPLFiMBbdEjDEgw7V+7j7vyNpjLHFliuSgjK++BR 1UtUk/4jr0axMudBoq0cWJkZdFoPYd1kr3tMXvcMrTzyyf8ABCUDmI1oFFfjrG9y2mZAWR7mI+o0 R/quM/f3dvlrOS4vIIMdccokgJJnmlb00WnQL8TvonA44ETJnkUbiUAwLg7tfBAcB37io+5MbC0E zRRXsJuK7VRJV50Aqa0GmedxpSpmMZifktXi8MRkJSOAQv6jRrDdqLhZAy8FZGQkjiwqKeHTXz4c KvkkzMswjHQnGNOzH39y6TcY47VDfUjtLhlUjgOO++9P476x/fwKuJdKMTHYNv8A3bfDXKJTmQSZ eMUh4qaSOeC/f118CrjnwWpYWC8n9xdx3WE+tN/nbKSOS5xl7Cv6YsA3CGNAV4nwI2rr9L/t7231 fZKq/wCqL/EncD964z3C418jf2fZl7egzNplMfYZ3HyVhlSOUim6xygAhgd9j10v717pGPo8uqQE 6iBYBlonyzB/tkxx2Lbpi4IOh0VnLMpt6imwDUU120L973RnxNwb6QcH7aDtVuKPMquCujQwk9Ca E+BPX92ue/8A5p7sRA1E6Et4nX/4o3Nr6oH3bOYpYYDvGZi3qrU8VBH7anWX+7bZV8gwywscEu+j g/eT8VEB5QUSjlWewjKkFQo4EeXl92rci31uGxyQPKfxRIhpIzj2jFmW3DEAlhTYAU2J6a+i/tid Q4Bk5BIB3dwDYJ0SV4O9VCZowLmBy6Ahqbb7bAV/ZrmSb6QORRMyiCD0z2RD9uhPT8Uxg+Urz9/1 O98xzTY/sqF6xeyt/dha1MkoKwL9wqfv19No5I5Eoy6bQR4yD/Jcx7tPaNg+P5Lw59SBJHPar7Qi JqXbj6ywp463OGXBQfbpvEh0owXk8alt3VdmJqQCfjpxPEK3iO581gpReYS/ltZedJIw1Ub7VOx1 WUAdQrbUxyd3dvdykp3bYfpr9+uVsBwcnpWSP5TqS6oINoq2W7IvbK0GUw1xHmsJ8xurXd4/hLF1 WnnqosBLHVedSfTruy47e7jheeQ/oLkiC4jJ9PB9qkfDV2ZB5NW6GNV7s7wsbZcZ2XBb8I4oe1cM kG3RESQKF3ApQa4j9zx/3wP+kfOS8MiL9gS+JJQhWV2ZyqH3hGV5kiu1dt/t1zco4zoVJOV9kyVU EUSqYXXiq8vEelq06Cvjr0pEKm5lVvELWVunIOjlpQymuxAX+zQJeUBM8WDBZ/8AUMez23cyeVNa XtGb4psaFZV2hlwtwInP2ft12vMpJDhKWrYbOxt7iKKuzSU2+3WTl8qgg4Tla462t7QRh+RUb6Hu AwFYRXVtaIH91KeWg7kOSz/6l5mWYLh7bc7czp3hxeTosEqYPCtawve3HpKCqjz1pWF8IoDhUcl3 DdRils3DnWoPw1nzpeZB0Q5SbRH+3YLvI4ya/uk5JDTm48j8NRHliEtiFG7VW1ULEzRLRVO41Flp OVWUyjGBsZMhKoVQK05H7NKTt3YS9lrlgn11hw9mIIgBMwoAP3nS85JimLBBSpepJqW6n7dDmyKm 7trJquBnikRY6RCKB1UARSKwFW81IG+l6JFmK6G6INcZDsRb6hSwZbG4Tv8AtaiS5P8ATMrwoRDf QRkKx8gwX+HnrR59f+RSLB0G2fiP1CSopJtDIrZZHE4fFy3fctwokv7Jonj+cTAR1VTxqCd9tfNr PbboWx2uQ/Tp4rYmYkEBYkvaOVx8lrg2DW2Yy8sl7dN//jWqEV5HwoKCnmTru7I7iH0iPxSos6hC 859RL/IXF5bYqd7ft62VbKzjhjWL9QYCY2mDIASHr4Gh1E/a4RIeI3HPwTVABcksybOxe27awtpe 6O42a45JIlssgcSxuvJldXINBUg7fHUW3CuOmFc2BniUw9nYKOzxlxmJrRbe9umK4wuGDKr1q5Hx PSo6b6CARWTjd07ktfz5yLdE7duyx4i9iurwe5ct6o2QNJwehCoo6AHodLcOG2W7WXaqQhKzphXO 8cxddwYW8ntrZ2srZkSeVwQFJY8QNutTQj9ut0W76z5cOlr4gEALMoxRTtsdJ7FVl0yimrR1VWdU 7jiKt46JEDqvFCJ3Xf46ICqOhN09d/H4anqvEoRcg0OiRDqqAX70FD/sNMhVkUuTvW4jNejqf36c jFolCfqqudP6eGy7ft1WT2VjluQUqGLMFqVXy3bRuCDOUrT10XJe3j1DK84dwPAK9e4TH9sXb5xU YWyRxSe4x3lmNPSFbwqK617aywARoXTtiIjVC8XmY+6che3XtRva21HEVxEvFKk+mtPDw0rc9QHe mLKjUBnVWc/lcjeWa/0WX2riOqSRsmwFNzGdhUaiFFZaZVaKYCTyyslvRmLe8DTSvIIJBKGeTlR1 Na0JrrTABGFsx2kLV+0rHGWl3f5ue05pf+3Lj56gkGVQ0nAU2CkkH46zPcXMGB1wsrkkyAi/cv6Z 9uSxSYPFCzflbS2lvNzG4aP2l4V+3XzziExMaa8A+ebdgwAR3kN3sutI6/crGYkMVi7lSDcPxfYj c7bDzoNZH725EqPb52GJBvmRJwzE40/q2j5onFDzA7Ek3jRyTDclkG1eo18LmAMgnPbqtKRdJ2X/ AOnnsbuvN4zvMpJa55LyG+vWFbiC9VGHKGWGRgArBaemn2HX3X9re83Q4VdL+UxERjIdZl1MDMll rV/YDHuz268YpV4BKehaAACngNtZH7k9mlwuQZx+m0bT2Y7Uai3cGPRCpZHjcOjHix4OtTQN5fZr CO52dwcEdP8AREJZXcYyxze6KjejpTbbrTWh7P7fDg3746E5j0Ha320VJz3xZDO/pFL2roy0NSu2 9D4jx0L9/wBkbOTGUPpMX0+xQ6Q0M9qr47JiPCLMzAtG3FhXpU+P3awjyJR4Lghwfz/RFgQ+U0wv JJhoroGlsQNh1avSmu89rrvl7RC0lqxhusj/AA/igzkPUI6q7jpA1nHEwHIcgq8h0Bqp3+B10f7f vEuJCmQcgyADx0BeJL5OD1Qbh5nC8mf9SmHvG76XJW9vJ7C2MHK5VGMAKSOu7gcQR0oTrY9i5MBK yBkARNh9w0WF7zTMtIAs36rzN3rhLnMLHJbtyuoHrIjfiVhuft11/HmIv3rK4NwrcFAu47HGYzta OxtIgL6V1eZzszFepGj1z3F03x7JTtJfCzqYqIOIFJEPLR1qrq3l91QJVqfBhtrxUHCN4PuHKdvT rdY2cxMGqYzuj/Bl6EaqYgoZCdJoe3O/UN7jFjwvdqgNJZAhbW8Ybkp/cc/v16RZD+nwXtbONx7X +nRyH8px2pgzPUVl5+xRlIPgKn79cR+5m9aAP9I+ZUSiGHYyFLf2tpHI0M8ZE0bCNJVL+3EpBLEt sCR0bWFGW0PHUquB1QmSNrqWQW7c/cLCN6jiDxDKRSlNzXbVXZnGqXkHwr+SNDFBxCm3jWNiOrEb kkjxrpK3Vuxa/Hg0As0+qkqw9rz+bECmtX2KL3hEZgV58x941rcrKppQ6+jGG4MlphbV2n3Qt4sA c/LQEV6ax7+NsLoJJC13GWy3kZmVqqRrLtwVZWriOKysJp2PFUQmvx0AF+ioIOvOOYzklxmZrlDy 9RC+OwPhrd4vHaCPCLBGILqfIW4EjlU8RqxgI6qSQEt5n2xclF6J/sdKmW6RKrJiExdn93SWSy4r 2xJHcoUNfAHx0hyOJ5hPsSkwxdM1rBLdXAiRT7bEeGgztJwgSs6LTMTjIMNZe9IArUrXQZDai0Vd UHurtrq4aVj1+UeQ0HcE2Ul959zLiUeGFyJo4w0tCAoLH0L8WNK/Zp3i0GZyBqtHhcbcDI6BS9hf U6G4x8mEziPP7zS8L1KEqHTkiEL1qSabar7hwfTlvjp2LRr2mO0dFbwfePcy4bLYJ4K4W+WNpBKp VUkickSoTtXw+7SvIIEGB11+GiFGDHy5LpnzORzmHssTG0LR467tIJUmuI1ZZBG1QyMQSKECtN9Z 0KJwcnG5UNhcgoP/AFDId8Za6xmMu5FuLlEjzeXeoEVmnSCAE1JYbEjxNTp7i0EbZWadB1J71f1G BbVHvqfgXy0+GtOycOZ4e3qLPZWyNJFFbCJa8zEK0LLyFfGutCuz1JzYHRegDEBzqrGL7tyUtkqL hIRbxljFFdyFuRpUUWFG9XUUO3nrNurBw4+5M3F2RO7kvO4nMuXM2HtXolnbR+2wdwRySNgQxLU9 O1KbaAON/V10ZBhAk46K5bYaa3nextMvJHf2sjsyzBjVlK0BBK8SCKdf46rXxoCTOQQrS5Eg/UJ2 zOVxOCgtcLeo9zarECfZdfc51Bf3EPQ79Nas2iAG3R/FKHL9qzq4a3e5mNqpW25MYVY1YITsCfOm hWMZFtFViFE1Qvx6agBeQ668QDTVsLxGUFnrU1+7RQS2VQxQ2ceBpqVQoPdbAnV44VThLORbr8fH TlYdDnJLU0n85B4cl/jp+IwUJL1plnyF9f5hpmRWYsoB9UaigAH3a06qBCAh3LLHHFdcax0R++7i sctDBZXzs12FWFUC1DSdORY+kHVzKX1f0hKV8eUCZDRLWSzFtgFmw1hCYrgvW5UnkeY2p6dUjX6p Ejona6TY0pIXeTd13OStcPMksMty5WOClW2NGPFN6A7aYjGADhMRhXGJkurnt42N7Djb5hHkLh1T ga1JZuI66tvfIXoXCQcaLR8JbCa3uv0sbiLGCS3jcAldvxbf+bbSUxuPwdZduJB+uV7K/wCnXvWb N9r23a11A/6rDxjjdufzbYN/LAB3qtePkBTz1wfunt8qbQYx8tktzjV4h2/T4rp+Dyo2QZ8xDLXs 9701uQtVjtwrUryDO5oNvgNcn+/BdyacgiugRlruEpzLR16COT2OtHiMD3lJlw3turkbA8Qw6/E6 +MGJLx/mBJ+3gn5Yyi2By8S3ltas55O4X1dDU0FNdb+zOdZT7hTFztlIAvnXs7H0/RCviJQJ7k35 RA8QVttzsenTX2791VCcIg4yfksvjnKTchN+kIVlLqSPuFdfJOeP8fvD/d3p0SdXraZJByApU1rr ehyoziB1QhEpN7ygyN/noJ3mWPF4q2mW3iX8yee6KFw9eixqgI8y3wOsz3rkb+Oajkghv+mOp8XP 3K5pciQ7PxQQ37wWcqKRwkK8h5EVprjaoyIMRofyXnT5B3BEMZZ2COAtvEobru5G5P37a6rj/uEz 49XGGIVfiTkn8WCNLj7ST1KZ8Tas/tXTg85Y2PGtAEJFP26772T2gyuhcRmUJdWG3dFvickdiTts YEJF+qeQxk8Nz2ffN/w2StJTJKq83iaSojNKr0I5fNpf3Yx4/MgITAIluD9XOhlqH+7PgmePxpW1 nGNF4fayucZLdxZiM293jRIBWnKY1PA+IIPWo219QouG118+5VEq7DCQYrJbqz7m7myTpawtNHFU I52Ub1O51pUxAC1YSrqiHKA3GNea+nxpoMlGSjhT6SV3O/w0VNRnh+ipxqsUnsgH+WaGvideViun KsxXofAa8FCuYpmiulmDcTADIHrQgruNVnoqT0Xv/NTHJ9ofTV7hw17ddmYCXnyozPNb1ZiPLrrh /wBzY5Ef7R8yhXAadyX5Zl5fpWHEqoUsTV6qx41B6AdTrnySyDlW+37iaeb3biUCO1HvJO9RR3Yq K7E7Dp8NX6ueimuRJc9F+nkRW9p545ZRU8l9II8DxY1FdK2wHTRa1Vm8LKfrPOUwsMQJAeQV+7W7 +26/94+CJMYWDg70/frvQUsUwdt5V7O9j3PEEAivx0vyIbolBmF6u7RjY463uUYhJQGYfdrlriRJ AiSEn/Vruw2cAxVm/wDMl/MK+XiNF4kPUnnQJoZWQ2Fus/8ANYeNTX+GtwybREKZyBFBzjXiAN9J WywgzZKV836mWR/OtToFZZROTYWjfTLFY/LYK/wEuNYdwzTRZazyZKqBZW0brLHRgNjUt83h9mlu beQR2J7j8L1ayThar29hbWzhaWUrJFGSUmAoHXwIr4aTB2gusn/H8xHYq2ZybX0vtx7WybLTx0An d5loxrYIbFEZWCoKybkbgVoCT1+A1BI6qRVKRYBYr3zhcxnM1k7WySWSG3nSWaVAWEaMqqK06dab 66DhWRrrEj2LQohKVYiFoPa301x8natocerrko7qQyzJv7vBFA5k1OzNSijWJd7hO2fjgDuWn/jx rDBS3CX+Nabt3uBlS4s7ho7x6hYmhRvUytWhFPEaSsrAm8Rj78oUZDaR1Th3R3xhu7sLbdnYtkuI IlX9JIlF9t03/lmoJPEEGu2iG60kbgw70vKgaurGDs3se2RDinXE38z8VJjVmalVrUnqxB9WkpXe c7iXRoVbGIytQ+n9/N2TjDby2Qjyd/GrJc3D+u4lZ25SzPQk8SfSBsV6Bd9bXF9yFAaMQ/T7dUK6 r1C74WZ9xPkkvclc3d5FJcT3Kx3k9ugIrKBI3tRqBxI48ajWZNyTI+Yy1+3T4IjhsME3wYXFYDG2 iC7lyEl1LHdRfymYvJG3uAbn0gDY+Y+OnTZGIG1LxltJJLqwbi5ingydu7yXFxde77MkNFt4eDO7 NUMCo47KfP4aBCLneH/RRMgqp3ZbX5yRvL+JY/1I5Q0p641Ao5A8TXTMwcEpaJDpfMZU/Dx0JEXL A01YBQh9ytBqw1woKD3C79N9XdDYodcKKEEUOpLMoOiCXigV8Phq1eqGcJVyY+anXx09VqhSylaU f8Qh8OQ/jrQjoVV1U7F7G7gezF7NCEtrlgP00zCNiq14uyvvTx1r2WgHwWVy+RF26hNi9r4zt66f HzNkJZbxDI/uokVoskRDViajk+o7eNK6zOVfOMHI/FI3cvybm0wrD4ztm9u7e5yGAt7m4gA9v2rm a396QMSDMASHqaeWs6r3CyMdo0QuP7gYR26goy8+XxEqtb4rG4XI3bEzR3jrcXoUkgcfb5VRfInW xAmETE9vRFlWA4JO0IFlrXM52a1yOdaC8vcZKZzNGyqVWPcEc1Vjt+E6gkgExPiFHqkPtOD2pGm7 ihxOTuLuzklkCLJJNCrFPcjDAczTbl1ronpSsjq3YU7DjGcACr//AOa+6sLnLaPDNNDdY+5Vbb2p XDTQsdkPtcWPMH9mh2e3RupEbC+New9vwTnE43pyEwc/bC/olhu78ZedmY9b63bB567t42uMPcy8 54JSRUO+9Seo5b066+P++cvg18CdFZ3S6lz5yD9ZPf2dPBdRCqZnu6fbCDZe/MURSB6ilSRQ0HgK jXx7jQIJP9Sbnn4ITh8ojX8UH6r9NkHZf6c5PpaYMKISelfA66D2/h2CYnUTGyJBiR2v+Hy7Vauo zjLDga+C1tM9FeWyWt+hs8zDtPaS0DPtu6HowNPDX133L3+vk8aMLh6XIgWlCWpxmUe0EjosuPHM ZEjMToUhd139yyyNbD+VEOSq34zX1EAb0A18n9yvhdYYk46eKdrrUeBy141rFNE5l5H1xsa1HjSv Q+WgV86ynys+fwUyrZV+8MqsRlY+hwqqvIUZmYf9utW6cbpCuXifyTXE45mUpY5nzl7bYaz9VzIQ 9wTsEjQFiS32aUq9unmQHh9uwZVBx/TseX0/NaDZDtnt+3muL67/AFM1rJBHMqUCxciTQ0O5IFae Wtz23g8SuIM905GUdMRZ856nuRJC3kT2QGcn7dipZv674m0aeLAWxvmQe1FNMfaiMg8ABUlR4013 Vnv11dh9OI2MAN2rDuHT4rS4n7MtmAbTt64yWWMXfcGUzGYvMleTFru6kDO42APSijwApQDXMcwe sTOeScldJzeBVRTXGIwEh/Un27zHwXV1CkV21x7H6hKqzx+2S4K9Njx3Hidd7+3OXOY2HIiH8OzP 3r5t++eHRXGqUH35/wDH/VZ9bXdtgLGa1g5NdP8AO4HKiN04geJ13ULG8T8l89MZWydZNnbWe2vp LxY5EuLt2Z1CH0KenTz0aMnW/URtbsVaFFuiIZVaKfosjKRX4HV1JLZVO4x1wty0Mnpl6ox2qBqW ZXjMMoufsWdy5arS0jX+3VVbqv6Gy8P/AMffTAUX3G7H7Zq/41QW1T8RXwPnri/3LIC+P9o+ckve 274JdyaxyzPI6NMVKrHRvzCfPoaDXORkTkpcgdivwe//AE5xN6XmZnirUeldkXyOhEA+CvVAyDdq Fti7P9SbyeMSXZABY1oKeQ1P+QRHaNFqVVCIWWfWq4As7KE7lnYkfZrf/bQeciiWHCxMt4DprtQl JFXcWeM6/Fh/HVbBhDkcL1h2flkte0IbqZtoEPIH4a5DkjzlArLhY3ncgM1l7i+lakTOQvLy1qcO oQi/amYrq3nxtrKpMoMflUaZLkK+1fcz3Bby2pFuOCfLXzppOdZJYqCEt4imWytvaSVFrJIomCGj FKioBOwJ6DVrgK4vqVWEN8wF6ywmFwlr2+4W8ms/0l1HHYCeRI5IbeVjDMKx05O7Beg2A8tYl84y BwxftXRRkYgAKH623+P7C7fwxx9wjy/q1iuLZalpbWaMyOBuQODNyUjr00/CqFvlfzBJ2REi5CyT J98kTRLhljmtAVM0z8uR3BZEA2B8KnQBxgAdxZWr4pkE44fLZbLWzz5OxtsfY2cBkN7QRMkXAsC5 qQWoPEV31k3SJkGLrQhTCIbQkJS7P74fGW7WmGtBeXWUd1vbi65+26ufkopBNerNrS5LxGcYQ6a+ xaX2rn8Nju3bY/rIIM9jGluILQqZibgKxRj7YJpy8zQU1n8Z3Jz3Y/FE5UhhZz9WP+aMhf2eVu7a MyXFlAuRsQn8oyAsA6sNhzTidumtCgQH1FpdoSMgRpkIb9OMnirDMDH3OLlmvAFuLYFOUsTD8XJK gqKekjw0D3KuzbvBDLwOGZltllZ3eavbbIZB/wCnWkfJ7q+okkntsVNFjPWvn56yKKxJzYcdSNUw LyzAOpu4vqAz2UPbQZL/ACZRXF3FGym3Wp9viVqa0OjwEjFogyUEiJckBBrWwzOLgmu5sYs2UuKT iWU3EgeMKeMjLMvHl19PPz04Y2AaGJU+jE9VLe3Gfy99Jk5wmMsLj2Ut4FEiPB7UfBW9qgBLqnqI 20ttFknkC6BYDAeVFVvJDBFEZpDOKi4nDcRIhGy0AB289GjAadPFLbpHVF+5MzHmpbL2vc4WlusJ eWnJ36s23mdMW2iQAA0UCOcoAYx10EFXUEi06auQvMh86k1pqWXkNnj9J89XiUMlB7gUBNOmrthV GEDvab0/2OpjhClolTJgVOnK5MglLcifzl/8Q/jp8SwqugePz1tdImOitFXmwZGA4latWnMHpU9N alkJRBLj7lmXUEHcSmGPJdw2VrFYSW7XVjCx9tpZyzq0jUoA1R40GsyUK79JMezos6cKrf5mP4Id lGnzMxhOTbFwW4LS28NTLMK0J50AUCh3rv4aPRTCmJLbj0/RG49caYkgbie1QXndDh4bmN3hWFaJ O3F7hlqVoZTVgTSpodGhxpB3+qWvYj1cUgF8kn4KpNe3WaaMJK8MzkSPczGikDfiTWtTo1dG3XKL GoQ6fBVbHBXOSyoyp4RYaMGC8nm2iAkBUKPFmYnZF3+7fVZckVREdZHQDX+AHaUcSaLdVp/017Ts cx3VZ5m1VY7bFw+/LMwX9TczQsI4YyBUIlaMQOoFCTrlf3T7nPh8KTnzWHZFtIvqe8t29VqewQ9W 7adI5K2u8yhF5NEXMsyo8xdj8zcq8fiQK6+S08UzgJHqQPwZ/kvoPF4nnAIYFQv3JlTHwe4eQj5Q rAD4bdCNGr9n47/Quhj7Rxz5dqpjMX5uQ8/AqNyhFJEAp6hQ9Cdq6bn7dXCLRf7dPFZn/r/Qt2g+ WWn6Fbv2l37Y5eyhjzsf6i+tYWMFydnkhK1IY+DCla+P269P36MtseXX6kqxKLuzxbt7Rgjoeq5v ne1yqmdhYE58f0Qm6zVtl5Gjx5rDuGVqchUGgPltrjqvbLuRbthEga5+Lfok53RgMlCo7xMBHMhc yKrco0Ueqp6jy21f3L2ywXiI1b7Ooq5MS5KGZO/XMCTIyvvEnGOGvRuNQT51O2iHjW0SjGWd/wDN 3Pp8Ft+0XQsBbDHKUTmVxdvks1NIUXj7TcCV9wmh4/Gp4jXR1e2nkTr48Q/X7fNZnunO9Myk+Bp9 u9cFLi/+ntnJJJ/xuQuJb+ZXqmzNwjCnx4omw+OtsVwjzpQiPLSBDxw5P3krc/YTiPrT1m5/QIU2 Nv4rflMvtEDp12J3YeejzgJTX0CN8DLGVxhVdm4sDzU7jxqWNK6Q9wAis73+QEAeix36l915G87t Fla0GBx9II2CgiaQmszht+p9I+A19P8A297YONwxuHmn5pfkPgF8J945Y5VhkTpgJTuLrKX2eWKy d4bR6AKD4AAddbsGEX6rGrjCFbnVL/dL5i2yk8EV1M8sPFuHJhQUB28NtNQjjROcYxlAFtVf7ayT XUXO6lJvK0ZXPgOh31WyQig8iLaaK/lZLeZWExjaVQeDyKDSo1WNjnCFS/RJw/p8jLb3ttRQTQwM RyJ8aNUaJ4LQz0X9ALqGJuzfpskZ/lJ2V26DM1APbFsxAA33IB1w/wC54/8A7Ef7fzkg3HzfBJ80 zXMkdrZ+l5HULGG4j1dS4atRQb01ggnL6IAyWj1Rm7uAwSGOnswKEj40pRRSo0MvJbNdOwIZLJ+/ UbM4RMrDvrRcs95aQA7rGWp9p11n7draMiVFpWUpUKCfHXVMlCrlk3tzKT0qNRIYVCtdyXeEdr2r a4uzkq8i/wA6nhrnTxTK09iiEFn93mWkj9iNeJ68vPWxXUAEcBkNE087iJCSzHporABQSrmWuRCs Voh+RfV9vjpWEdxJUTXePkFvY/qVY/qHkUH/AMCHkKfaRod8XLdE/wAOoNuK9BfSTJXPcWC4Zm4Q z2NwLnGXkhPuW8aFnlqAf5lSPShH3657l0iFjR1H2wtKU3Dof9es1JPhsbjVD3dvk5Uks8gsa+3W 1LxTxVIDBwzLULUfu0f2quW7eThkGwDTqh/YH05uczChiY+7AEkNtwJG245vWlfJdU5Nkrd23p1T QuhW0CtI+oXak2I7FybbLPBa1EiSel1lkUuDQAMKA03O1NZ9HH2ziZDqhkZdJfY3Z02XwVs1vxSG WQRXM/IBoxxJAB8K030vzLj6pJOAnxGDfBbBhOxu2sRBDcrGbiaMKPaUHkzeNBtX4nS3/sI9qVlK BLAADtQnuYw29217fze/MEC2+PhJEIDUHH2ztXzZtJyuslLB8SolMMwDBZ7mPqEMdCmMwEcVll6P HeSezyMVTRVjOwLD7NaXG9uJAMiZDplKDJRLsHETZixBbuZjGOUtzb3ElKU6qWatKk/d10xfx4yf yiLIkpberrae0rHtjsu8Sa+t42uLorGJZCZXaWgqTXw3/F92vUcr/GI3Kk65WaKvmMzFnLnITjJr dPb2skptLcMtvbqDxVWfbepUCn8BosrBPzgmR+4Dw7VEpem4wkW0maaJY5OodpOXkGAHEDwG2qAZ SQsJDFEUoOmoLqXUlfjrwKl1yW1YBSFBIQevXVtVZVZFBP26sMLzKhcqN/3akZyhSS/fHrQbeWrb iVQ4S9e7hqdRq8QhSKVck4qw8dzp6sdEElAGr7ganiP46aGjKrqDtTtCGa0tcjazOeZ9Bn4oir1q SAfLz1oX3WSJgI5WFzubISMGTPcRQwWd3cOjXLwgrZiNlpLIoYOQT4b0B0pGgVjv0dZUAQRF2cpI vMo7pbSRrbY6ckJJG0gkYVNKGvXrp2ut5DqBp+q26+ONMyCU8zevFf3EiBUiUhFjUUBIFCf26fjH otCmDRAXeJs0v7l8llC9lj7c0u5lPMuy/wDpRJ4yNTbwA3O2hX2SiGgN0joPzPcrTk2Bqv2Ry17k 3tI7ANFjLQ8rXHxkkR71LN4s7fic/wANRTxxBycylqft0HYvQgwzqtCsO6E7Vy65azuRFaSW0aXN khr74cBmUjwoRWvUHWf7l7XXy4GuY6gg9h7UP27lW8ezdDUHqtCxH1J7T7o9Fldvb5aH+YY5kbp4 jkBuvx1wHJ/a3KokdoE4d2v3L6Hw/f4WZlg9n2wjNvdW94gEVwkihgqvC6soJ8Kj91dZtnHnWfNE jxC+ie28uF8HDEhZ9nO6cjFlb26tm5PYxyRwqeRFEBb2gB1LEa7zge0VHjiEx9WT49q4r3XnznCy Q1H2ZaJ213LPbYf+pZQSY2K5QAQz+mdC3qKmM9DXYVGuOu/b8b7ZQi0tnUfSezPd1CxbudbbSAdS mrs/u6zv7to14iSsiRIm3yEBiWbqammi+2+z/wCLyomzTRz2nQrmebKUQVf7xyDW8STSTJyJcwKK rLyUVFCDQ7cuo1pfuTh0TtjsaUiMt2f6pHjTkSyW8fn4LmBo2m9XUTAUjZmGzHyr8P46wOR7UdjS GNR2juXT+3Snx5CUdCMhLHdtzNfXuJ7VsJFkaZo2m9pg3KedqKDTyrXWr+26BXCzkyBByA/YP1XP +98kzs9MHx/L5utzy+CiwywY9AzQY1ILcClaRhPbBo23J2BANNYnBqlOJlIZlIk/E6fevqPspEKY wjo3ySrn5BAG5EpX0yA9VC/h+xf46btG3yjUrpeFHcs3zuaOPxUsVrKlvd5BnihkdgnGMbO9T8PS DrZ9o9k9a8SsH0MWOgPQH5/cuC/fP7hAHpV5On6pAlxONuLcT3d2JYlUlZIDUAr/ABOu7eILGWV8 i9WQkyg7awcXFszOkhtS7rj7h1KJIY/mNDpefKFcm1IV+ZOUQMYKhzGN7Z5yZTOz0iVkln39b8Ce K0Xfia7jXocy2z6Qq8e64hqwk+77j7ahup7jt7CpO8xJaa7LABT/APLjqaacrpsIAnL7lpwotIac /uSzlcwuRkVzapashpzjZ+nlxJI0zCDDVNV17QzuqkbJcoyRms24ikoRX4HV2V9F79yeX/p3YX0v xs7KqS9l9uERON3kFoVIFN+gNdcT+5NxvAGm0fOSFyJJesOMURu5gBNQpbLwB6kFmqd/T01zpbRD 4dZMnOgX1pQfT4/A6lnLlbAKgkbYk6kxVgywD6rXaTdwtGDtEgVh8ddl7HW1XiUK0pFjT3BTp5a3 UqpkRwaAbjUE4UKz+qdVCE1/s0ARy6KMLmN43BA2bx8tEUGSJ2EUcSvdt1QEL8SdL3y6KYhBp52m mZia1JNNXjFgqkq1CspgaDkVZxyh8qpX01+NdCkQ6a4tmCF6K+iljY/0W5ZVEl0IW5PKSWUspqFT oKDz1yvuN0vVIWjGQYBWu84bPubE9uRXs0hzePuLpLWKOOJbf9MlGfnxIKtWnD01PidL08j0qyck lGDmZHQLZfpRhbHt7GxXFwSMlPxYqpJpyqAoB60U76NVyIiDdSgGEhJzqrn1vaztsFeW3tRytb2M 9xOJGZU9afp4okK1q9XL7j8OnWgGJ6fYKkLD96y7Ad7dvWWHwXa2CcXH6e0N5lJoIiZZshIFDxUk C7RgBFNTXc+Osnn8P1QGcRH3klNCbEuc9E7NlS8sc+PDcJVEjrKd4qrQqKeNQPu1ytlERaWKAa5P q4StlLjK3k1xdXVqLWylISSSKZSFNNmY1LfYPDpp+Ne4YyyYhWSOxZtM2Yy15/TbGBL5S4ZRKnUp UKxY9KV231rUARDuR4KZVkDEXWr9kYPH4kyW2eEcWUSKOKeO3RCYZ35N6kK1PoKfDYjx01XyIRfe 6WmzuwBV+Dtq/wC483HkfeiVbWNDdBebFzASQ8ajqwHgF1nx2XycH+KZqv2jVHLiSx/TZGHIWRwz sEiuhGvuPIsf5bLTYBgytTw303WJBxIM3RJ8iEYnXVKQS2jnlW1YyWysRFIwozIDsSPA01ckZISK nD7AD/v1AAUhScgdV24VwVyxrqWI1Vgq7nc+GrxCsq8j066kdqkFDrl9jogL6IUkBvGrWnjqd3Yh lLmRkC1HQ+OrgdAgzKT8hLVzvXWhTFCJQw1rTR15ldxeLm7Ue1srMiSS0cvOVJKNUeuvmCK61fPG zcdVyl1ptkZFLnf3dty8scNgf0VnEm0EJ4+JADedeujACw5AZaXA4oIJkEk2Et1kVnnqr3aTwyCS TfZgykknyoNGLAgLUk0cdEWjtLvP2t5dvMY2SVEeRKFI4wCzuNt6AffqpaCDvEJAdq6t5ri8Y3nF oMNaW0phRqHg/Ep62AFZHNCx/s1AiM9q9JgW6kqLFz9s2pjivfckndOQuoZDH7bkVAUHxHTRGKmw WHRRZP2J4oZVdjCyUV9iTxqvqA28BWmqjVWg4R/tiGLt3A315MeGUu0b2/7yQ0otPtrXRJFWsOiC dqZzI4TO24tbhgtxKiSxkkq6u4BBA69dJc7iV31kTDstj23nWUzBhIxK2+LG2Xbl/PPcK9xnrh2e GThWC2V61CnoW82b7tcibZcuIztp/wDlJu3u7guo4/Gt5B2xBkT0H5pQ7k7hvWyUdtcIXRFrCKMo aUGrO7HrSv7Ka6LicauMPIs/kxsptMJxII6FL1x31L27lLW+wzDnZwe1IWAdiZpQ83EtsCaU5fHR Z+3RugY2ZBKx+bskWGiYPqP9QrzuXJWOD7ciluJ7OeOZ44wZC0oSqlONdqP189Z3tXtceNCU7CA4 bwHxWbx4ek5Tt2x233DiCJu6rpYbdIpLqXHQUYxxAF+EswJBqTsF6eeua9x99q5A28YOSdoke3uH 6rYstMIvI96AYm/93uWyvrl/aje8ikd1JBjX3QSQf8I10F/H28YwiHIiQO8t+a42Fm+wSPUv+K9W /UC99i+jt7Z1kkLF/dIBLy3DUXcVrxUbba47g21jjgxY6+LlfcvYqt0Nx0/IfqVm3ejS2LLaTyUs Vr7l2grwVTykBPX3C21Dv9xGo9lmLibG8wLRj39D4dUDnfuGmNEjXLzORLubC8/d1S3meyM15CeC 1WK2s51BiigQ0G43r4t8dd7wrI0REZZPU9p+2i+P8j3EW2GUtEV7cxllDjmsioksYJCXdTQSTNuV UncDz8hr3IslOWBqsjk2ylLci2emyuU7dvsTj5Vhu4wsmPaoVYvZ+ZF8ACldC4/EjC4HV/q7z2o/ G5LtGzzDp3JBxnZzrMmUyNx7UxBjuJfdSSOfmKUYMTSvw1viQbsCas5T+UDCD5f6YZ6Gb9Vg4pLy 0kYiNaqJAPNSNmG+iRsCPVzokNLCI9u9ghVuIcrcxRZZwURCBMIVI9TNQgBqdN9Ly5A3ABCu5rEb RhL3dva/cHb0tcb/AMdjQaRXdrG1fhzTcg/HppsZTVF8LAvaOXR7jtX6Wy3UfuPD2P25PKGFGRhb Nyann5eW+uH/AHOT64A6w/OStdEmQA0ZALi4LmKQALVNkHh6iNYcawB3pyqIAwoRL59NWZGBX6Vw Iy56UJ/Zrw1UxK80d3XQvc5eSE9XYA/Ydd57dXtqiEGwoIrstANPoLq7G3MPKfAfv8NBsPRXiFTe rmoPXVgvSU0NZGS3iFXY01BwoV7KzmzjW0iahUDkR56XrG4uVY4Qi2VnkHjuKnR56KhTJxjWAAOO a8WQ0O1Op0gQXTFNE4TB6J/7B7wvu3knFuof9Qm61HpalPt6axfceLuLgsteoBw60rCYHI9wLa56 zLXV1PMImtUjKBPc+Shbdi7LTYddZV3FJiIjP5otdsYTLrU+3u47G0P9RuriKOZC0K2oZWkiEXoP IE0BJr8dZMJmFm6WujKpBsOAs8+r3c1/m8bfW+PEhW4kE+RnLegwxn0rxI3Y1oNavBvE5vLtVOVE RYdim7dxmIvsMM1jxE9/LbIzxx7OeIpRkVQAVC1evXrqOdfIvF8jorVVwjkodF3J3HHeGzjs3uuT +xCsUTbuSAAKbEmo1mQ4MJAEHJT8jVEOnvt68vMdjri57lSKzjZmiuIpzH7TxAiquD1JI+Uaa2Cs eUsUtKRn9QYdB1VZc9jMZbSpiYBZLeuhW4eCiiJqsJIyRQVAbrTQYb4nr/BTtfq65lzPaeQvkusd ezWncMp4AG1aUTAmjKK+lvEb6fka5RDgulp8YjJ0TN7Xd9vbOyXdraW0LKWuY7MJMfE0HI+XnqcV DUkfBY9vLhE+UOgvceft4bQ4+7vJJ7khWkuJyoduPQenwp571171DPpqrzuExoke873wWMjLSXCs V/CpGma+NZLQKgI6lKl59bcdAxFpbmQDxOnoe0WEZK96wCDT/Xe5qfYtFA+7TEfZT2qvr50UmL+t OWv72KAWfuK5A4IKtqbPaowBkSolytoytuxqtfWEd5PE0LMKlG2prFdz5dFMeYDohVzMhZuBqtSA fs0Xaya3OEPnkDCldS3YvEIJfSgVPTUPjCFI9Up5SY0NTXrpmmLpaRSpcsWb79aEAwQ1X4nl11de CmzXcuNx+ED5O1la6iRVFxDIq81rRFfY1I1qUz3R2tnt7lzVHHNkmjhJ1/nuz84Yv1ljPGIo1V4o npITufm3FaHodGhXOOi06uNfXoQly7mxkdzdWeC99LMxcw1wVaTlGyvT0gDoDozHBOqfgJMDJnTO sNnjO1YGlnZI77iJEXaT1MGkovwVQB9ugyzMDsz+iTJM7Wb6UPyqYmXHw22HvSITSX2JAVNOjFj0 JrTRBgui173eQSvlLOa1umgmBFPEihI8CPt0WJTUJAhMXbmPOZkx9mJDHGju1xJ1Aij/AJjk12+W uvdUORYqDP5Q3Ly38TmOxnkkgtIn8I4zRW+/XixKuBluxVvpvA0v1DwEd21VF4soJOzGMGRRv5lQ NIe7k/4tjf0lNVHzBeibu+uryea39/2EkajjzNelPv1i8XhVwjE7XIGF1/D59lcSIkxdZd9Uc4pj sMPZTmWOzMonmFAWdiKio8BrV9s47GcyG3H8Eh71zjdscuQGWawQ3eWuYMfarzubqRI4Y+QUFmNF FW2GtKyyNcTI4ADlYGSvQPZXY6dpIJpGFxlpuIu7ha8R5JHXfiD1Pjr597r7ueWWGIDT9SkOQSSx Tf3Jc3d5icg8YLD2USQr1CRsrMT8Og1me08euFsCT/MW8SCg8vkS9PassMhFGFAy1ofj4a76AdZk Ay9F2HdFr3diMBk42C30ISzv4VNW/UoBGXIPQMvT7dfKr+FZxbbKG8uZR74n8xp8F9p/bvu8DwpS 1IGnY32dZz3Pl5bjIXOJmuVS0uXeeZmY8PdNTG1d/lJ10PttQhGMwMgN3t1XxGq2RMnOJkusGvc3 ms1lYsFZh7PKG4/TPGKUDK3E+oeC0r9mu/q41dcdxzh3WvVxoVxc5C1C2gisbaPH27lobVeIkbrL Id5JT8WO+l4DdLcdSsayw2SdWY7dbnG5ETS+ykVnOWPPixJWh4nwO+vWB5RPer0jzv2ZWfQxY5XR 7U1jRCKcvTUmrEjodX5FsjhmT0jJmKvWXcVtjw6yZN7SOUe1HFV6OrbEVHTVI1TOiifHlLQIf3BP kcRBDc9utK8Tki4u0HucUJ/FQbfs07VCD41ROOBM+cIjY9x5j9B+ogv5bu6f0xA0Ar0AYU8NWfvK DZVHcxDBequ8IrhsT9P5rk/8W/ZuBWcLsvMRyFqAdKknXLfuEf70f7fzK2K2ABGjJOdTX4eFdc/s L9yOFGGNd+g1496uq2YvBa4u5mrQqjU/ZolUd0gB2qy83m1v8xljaWNu91fXDkRQxLydj12A130C IRyWAQjEyLBVri1ntbmWzu4mguoHaKeFxxdJEPFlIPQgih0YTBDoRiXZSylI1FuD6ti339NBjnKN tZU3YRkodmG1NF1Q5YRTEQCKN8hL+EER/afHS98/5QvRTv2H2NB3na5lr4+3JJayGyuCygwPEyym ZlPRKLwJp+LbfSHL5noM3xTvH4wmCqf1D7dx3ZeRWWzdWscrb295jzxIXiye3NGB4cJldSPs1fg8 k8iIPYjWUxqdI0L3VzLSBSURecjMSVQDxP8AYNPsIjKFmRYLXuy8LjL3smfKzxPZdx2F0qJKzlo8 hDJGzeqMgGNlIFXJ4776573G5p7RkH8FocaLhbX2x3tgvpt2Re43MOid1yrFc423kiMty4nJVfbC mirSrK/l030tBzEiI+LfZkKVZMnWYdl9u9xd392wWksowllk5g6yyFiitI1AqgmtCx3pop49JYFi dEaNk4xK0juG0xVhibHG20de87pWiyGKuFkkiikDlEm58vStBvyU9dtZ91FMZAAkFehXIuTkJQ7g +n3c2C7YxmdwlbLubI3Fwb6xinZENrwHsxrFSpaRg3wHjo0Z1b9lmezt/BBnHbF4oLZd5ZfumSEn JHt/IYi0LLZPIYP1kqMq8Y3C7ysPB9qLsa7aqfb4VAu0h0Kmm8gpmtcvj8jj5FzlrK2VSWBpMnkJ 3mMfFHYKkNAVDEL4GlNz6hpOYDNFh39U5ZEHL4Wp9v5LszNdu43HXt9FNmEj9kziTiIrZQIVhkXg OaDfip3+7TVNUZNEgk9qUMgC4OEr9wWWDw+RhubiATYkOEtyob2+LV5yOwYPyDeA8KaUnSYWN07E 1GYMc6oX9SPqjF2vibNLK7e5vpIFjjglJDig4lpFIH8NF4/AlyLcEiI1XMc2trjtZl5uyvemezMz z3d27M3UVI+7bXW1cKuAYBVKAy300jfzXZh41J04IMvKLk7Vp01ZeRvtftLM925GPHYqBpXcgMwB 4qPMnQL+TGsOVSUm8V627E+jGG7HsUvsiyTZLiHeRwPS3kK65rlXStLyOFWFJlmSu5ruW0Cz2llH 7hoVDDZa+QpoMWCahSlGS4ogA2p1HWmpAynohgypyz1B/hqzdFQoLeTkg/w17b0QJ6JVyUta/bpq uLIJKAOAzfHwOmQGKGuKauquh/cvY3cfcTYywxqRSteX6wlFlQrVqKpYpUBQTvrQlyIcWqd1h8sA Sev05Kyva7I+pt6ywEi5TtfN9sX2SxmctJLS8tZjGarUNKpoODeKldwR1Gm+JzauTXG2qW6Mg4K2 LPLLb1C5w1pYATS3VwiT7IkTBiKvtUkbfdo9hLINkj0CI5vCZWuGw/qH6mOWdbqRWSKTnIVZkJG4 UKF20vRdGRkQRgt4Y/iqwkwNhDA6fD+KE3eGyGKycOOUPd27UMMoRgriRfWN+lPHfRxMGLq0bozh u0TZYdhdyZV1sLlRJiIyDDeVUyCNvFN6geanVfVDOEpLm1gbhqjL9s4HtaGWG+yIWGeVUKRljMkL RvGz7Eneo5eGh+qTohR5U7foGigm+nWDzuKgXHzXpWLksF0xjMbVNSTHQfx1AvIOij/2M4SyAguI 7YyHZWYs8rMv66TH3MNzE0cZPuQVKzJR+jcTVNRygLa5QdtwIT1PuEJSBGFsXckYxDyZOIcoQhuI WevEgiqkHx611j8HkerAR66FdcbR6Tgrz13LkGvGG/J5ZCxAFBv5ft10gCyLpugM8htJLW4QNHIv GSGWN/UHjb5qHaoI14gEMUsCV6+7fv4M5gbDLxgH9VEkjUGwcj1j4UYHXyHmUGi+df8ASfw6fgh8 4ggSHX7FMOLthc21+vsCSOcezIORB4MN6bHx1lc+705QLsRkIPtfGhypmEpbXGqzHI9kpFO8GPyc E8qHibaasLg16BjVSdd1xPfxKIlOuUR2jP8AFK8qiuuZhCe5vgjHbx/5ctbS0/TXkOQMsl5k7lV5 2zpbpIYo0ZSVFCBU+JPw0LnTHIM5iUTHbth/UNzblo8XnQponCAO+YO49Pgka/v3uZpeXqkaRmcj cHlvT7Bpynj/ACXMQiwZR43Aw22Yue7SVM11CkNsv4kmA9ueT7wq0/8AEdbNVj1xh2a/kmbOQTUI dUYRGduKeuShfbxCjkx/YNMuBkpQBUO45x/y9k4zIInlh9pHp0MrBf276gxaUUzxQ04rPrYxWltF YK2yjlI5O9P+3RJDcTJacnJdD8tayZG+guInUwxrQICNiN+ldHq8oRKiwZF8fc3liY7+C6EbuCJY JGPFaf3gdtSYug2REsEI7is5gJbyK2bjNe3UgZ44VPtoQOTMp8BQb6vGsdUvZRNn6Beue63/AFOD +n89Ke72hg3p/wCKJzrk/wBwgm8f2/mVr0hogdyT5YCegJrrn0RlXa34AEffqoi2iuzJB7/y/tQH HROFmK8nQmlV+Gtb2vjvLcUbY6SOyu8Yuzb+e9FvHcvOssNwkgI5RyIVAU9QQd+Q31t83jyuYAsy b4rQiX1KB3ctll8mWxkLpczySMVnnEjO8jVFXam4Nd/HTsXEWOiTnU8sIEzXEsz0hJeOgkFDVSDv XyOmIwwhuo1tpZbtYqepqVr5Hx16RYIBdMVxDIJbfFQxM71VREoPJidwABuSdJRLvIo9cHLLVcLb 5Hs20mVQyZy6X+nzW6ULTm6oBb0pQgemhG41zfKvN1m0aa/d1XS0VCMQSnz6u/Sy2x/00xdrkB7m XF7FezTcw9xLJJEVmjioPSlXWoFd1qdzq3A55rswGcfYlK31+okHC9sW9n2/b2kFvE09y7BkKB3R QB/MYnflX5dG5PPBk5KtRUBgBaz2J9Lv+YsJc4tkjOIaKSGQyyFZZCVHMcVozUoKtUACoHXVeJuL 2Oz/AG+CFfdF9urLMcZDhYbsZS9j/V5GyitraCOerBUs1ERWQkfL6aHbx0Gy+QiQOpdMxAORqtBs Mpd5Oe2FsgWRDzWSJQhWq8T8xNB9vh4azITkTkq8+ORk6J9vmtcHjUvc2LYT2tvczp7Fp/xUXuCj TPK3KRqs21fgRp+cCza40YBklG4O+g7zqsdiyuTvLiaHHySW/NvdtI29Uo4misHbxJPTWdGkRPip 9b1D3ITadhZu4yEzXSfq7udjLK8or7hJqWJFCDWu2mLuY3lGGVxCMgmPDdvdx213CI4y0akiMyky Ku61RnNDTetG6aiFcbhgoE90TkFk5Xl1lcUnszdt49Z1j95r0OS3AEAsAq1rvWoHjqxssrO3cNOx eNcTHcxPcsm7z+q02HE+FxQWS65sxdqyC3Zt6K0g5VFdvIa0eJwZ3jdMtH5rHu5Mp+UDaFh+Qv7v JXUl5fTPPPKavI5LMT9p10tVUYDbEMEBlUNabbaKApdSqFkAHH1DqdVOF5019m9i5buq/jtbOFzE SPckCkgDWdzvcY0xfqlbuTtwMleve1MFgPppiFjt0jF4E/nSEAszU/brm4W2WHdMovGiY56pZ7k7 uus1MQWMVsOkSmla+JOiGTlOxg+qXWugBX93lqwCYCqyXVTSv7dSMqSXVOa62IJ2OpOUKUkIu7it RXp/DRAgEpbvZeRNP26agEKSHMTo2BhVXwt0+3rqVCXPo/kclB9S8FaC4dLWS79t4mPpDGNlUUPQ l6aJ+6qwfbry38h+5XrqjKYLZy3iy3juXH47uizkxuZhRpShS2vChaWKngaFSwB8K18tcV7XybOG d1X0kvKPQ947D+Haucp5p3AT6ff3+Kwfun6fZXEQW+Itbf3FnnVra5iYvFPyf2wwc03AO6nceOvo PB91qviZgs2oOse4/roteq4Gbvg6LT8lllkH/K17DE9rjqW+Jnceq2MSiP5uvCQisg899ctwKxXI 3x//ACZmO1/zj07sLIs5cpPGWYv93gst7v7jv8PcLGIOeVQlArpVUVT8oUeGuv49fqB3wnuLxhMZ OFYXuzuG/ksUuJDj7UlWvo4K8nAFaIdqV8dFIg+cqY8aqJL5Sdf5C4OYlnmqG5tSJiSAvKoBr1Gm AARhPwgBFhom5vqLkbHHxQ4qJFsYkEZcL6oyV3rT5d/l0EU5ykhwYmRMjlL113XnLmFHnvpSlKxx uRQ06HoNWNUThk0OPAHRNlv9T3zva6do5hYYpIFdbXJ0bnV2J4TUJ9IrswG2siPtAp5MuRAk7tY9 PEd61quYRXGogNHQ/qljunsCWwNvLFmbbKxzKvKWyJaGOUjlwDHrQeNBrS4nMNoJMDDOh18UtybY Qs2RkJMBkaeGUsXuJeGO3WcEcOQ5bEEBq9R9umxJCE3XoT6R5u3v+27nHWvJf6eVAL7VEoqaf+YH 9uuA/c/F23ws/qHy/h8kte4qL9D+BWx9oFGimFQQV2Na+FNfPP3ECNp70t7ZPVZ53ti7D+pFw4tL uZ2COTxjkfrx5H5WPhXY66/2adhqDeYAfEfqlrJ+rOWPMPxSY2UyGKnNtO0scm6ncowB1tDjxtDh ig+mfAqe57ghniCSWkN1D192ZQZSfi60I/bqK+NKBwSD+CpESVu1iiurXguPktbdQ90r+9QMCACE E1QelQK6NHnyqLEiTltP0/RQCZPphfMfJi0leb9cFZlZFSaIoavsd1LAba0T7huABj16ZUiQHRKX etlljjYY7K1e8hMvuTSWo99VWMekN7dSKk16eGtKnl1TniQ+OE9wjFzkJIx+FymUnS3tIne4BLyp xpxA/vFqBQPjpydkYB5YCfstjAOUMz1zcYjJzY+SFEvICEkK0Kg0qCCuxqN66vXISiCNCr0CM4iQ LgoRJl757WW3kYOkxG5G60P4ToiOKwC6ZO0EFva3+YmZQYkFrET/AH5RVzX4ID+3VgluTkiPavc2 UYzdofTOUkcn7K7dbbpVrcnXIfuD/mH9v5lOQjhCUg5ddYDOiKrdpHCjyPRUQEk/AaoArRDrz33Z kI7/ADUuSDe5DUGNa+CHjt+zXT8Cswr29U/TDDlJN+rtPI/F/aY1j5AA8T02GtevRBtOVXS69iRJ k9LqDQjzpTRWQpSbK+rlJZbWUMAZZGYM/iem5Pnq+1sIYlhdw5GKzo6KHLCh5eVKbaFOBkvQiAXK 1b6JWlrkcnCblY1UXCyTXcjr76W4oWVC+4B6FhrH90BcA/T1TECTgLUu5O7Ow8d9SrbuDM36XSYp Hls8VaLzWS4HpjdmGwoBTc1r5baxrKLZRl6cfqIzpjsWtVIRAEilnuv6zf8A5E7oso3tn/R45GEU aMzAyzsCQBsNgABqP/V2wqMpEOfkoNsX2xWhdp4tLy8gs7iNbe4mKo3uugMQbchh16awbeNZKYiS 0UyDGED2rWLvN4TtHA32HwSqsscZSeb5pSZBSop1qdgB11qnlbY+nDsWZGly5XlSCIwhFyCvbrd3 JS6LqyMqlqup5DZidtFMumrJvinJZa72pk8PhcNNJyVp2UeyXXbmTQBFB3rXcnwGkxyhEEDVPX0E 5kcJiwcMF5De3eWUz32UiSG2x7bpL7fRZNxxAO5GnKYDYR/NL7ZWPNw0zgdEYz3YmGuu3oLxMb+i ns4IGt5rdgri4MdJLZSCwkVWA9Xhvvo3JpeH217AgwkHdINlm8tiK2+WWTHyBvTcSgMk4Bps1KU+ /WBbx7IZyyaFYsGCn3t76kWgWRedmlwIykUsicmZFHp9NQD031o8S8xfoe1lM+MQMnCyL6lfUbD4 rKPezXhyV1ewxe0LRgWVY2q8civtHufTTwA03VwLL5bgQe8oEuXGoMvP3ePdN13hmpspcRRwx1K2 6JGquIQfSJHHqdvNmJNddTxeP6UBF3WJbPcXS+UJpQHTIKG6t2uMubpxHFGXZiABQnQZ8iMeqHO0 RDkrbfp59BLzLJHk86Ta2RIYA7Eivx1z3L94Mztr07UvGcrPpwFt7DtjsS1NhhgqTKnFWUAs5HmR rMEGkZSLlM1cURWfZXM3N9M008hLN0UnYDRgXCcEUFeam50aIRVXkuqA76LEKzqnJdjff/u1O0Kk iqs11QVJr9mpAdCkUIu7rrQ6JCI0Qig8s3I1O+mYhDdQO3j9mrgOvM6haUhgPiNWYKHQGD9Kcvd5 rEW5x2StbolIEb+TBc2z1WSM7EBmANCNt9a1kBOvZPMZBj3gpYWSqMQS7deq3/IzLkBFkoVWODJQ xX0ShvTG0yc2QN5K1V+7Xy3hwNQNZcmsmB7TtLAnxDH4rF9wpEbpAaSzH45Q7+oIkRS8iE9uHWSW 1fxeNgRIp/CwI3ppz0S7wLFmfuPQ9oQquVKsuPiP070rdzYq4juGzMJNxjLl+QuFFfadzXhKB8p8 vPw1re3cmJj6RDTj07W6juRRUNplHI+2q5zAxEmJ/wCYLovLPjIkhu4Ioo5GkiJpHL6l5eg0ViD0 ofPTvtt8ozNJ+mT7fHrH46j4q3FmbY7AWkPxH8Elv33i7eaYnCwtHJGFLlv5iE9BWlPvA10MeIYh nTw9ukAPMVzksNhu5sXFk8NEqz8OKSRuzDkCKpIrE0O/XU1SMHBQqeROmRjND7LsrN2rpIntSrQq 6Rtx5L1FQ3XXpcmJRZ+5VSwlXvfG5THZMvNySK4X3OPVVYbECnh5aPxpiUWHRP8ADujZHHRKgZkp cRncGjb7g/7jplOJiss7cpCEYmW3fjyiJHHYUrQ+I+GhmtAlUD4oqYXySA4+gtmp78JahUnoSp8P iNU01Q9236k5diz32Mu8ybBPbt4MfwbkDsWuI1Vx4FqsdZPutNdnpif9f5FB5Mx6Z72+a3f6b3jr jreEmrCNamu5rXrr5p+6+OJTke9ZfEu22EBCvqjZe/iruVRV46TD/wAhqf3V1o/tO/bOI+CpYdt4 PalftfGW+e7apmVlmeMA2tworJHzl4KnI/hCo7b/AHa2vd7TTyP9pg4z2HHz0TN/IEATLQNprlSn sCKCF8ni8lBmIoOTvFbkCSIDc84mo5I+zWbH9wEy9O2EqiceYYPhIOE7b7bZOrfURZFs7TkeMdQl 4d2XCwyRXEYe4j9MTDklOJ6FT5a2f/XgkEHBWRLhZDaIU+Qe+m/USsPebdlVePx+/TsOOIBgEf0h EMFPBdnmoiJSSuxU8TX7tenSCM6IBqAytJsr6CbHJjcpDFd2xUe57yASVoT+YvF+p/va5e+iW8zh KUT3Et/4ny/gkY+4THlLSj2H9dVnHen0zwncmT/W4fInE5B444zBdgzWzmMcVPup612AG6trf4Hv NtMBGyO8DrHB+44/ELZ4nu1YAjIbR94WVdw/T/u7tVvdy+NkWyO0V/DSe0cnpSaOqg/BqH4a6Hhe 68fk4rkN39JxL/xOVuV2RmN0SCO5WspDJiu37XDVCTv/ADbonqJJaM4P2LxXWkl4+aZkvdN0FXsz 6Xr1A7H7bA+NLY65H34PcP7fzKdhlUgwUVH36wTFEST9TM0mLwEkKNwubqqLTrxpudNcGnfYA2NV YYWC2g/W44MtGYO6FfEBT0+GxrrorfJNP8eQlBAcrLJHfMlOICAda1ArSunaQDFLXy8yDAl2JJIj U7n+zTWiWd1LKwSOMLGENCdqgkeZ+OoAdSVQmdq10UBUdH8LkbiOaAW8jIUX5QaAg9dtKcioEZRq pFwyKXE0C5Bbtof1bmNf5TMeIK15dOugRHlbRM2/U4Ws9rZ7tWfFQpNiFtcnYv8AqLcmRPVRKcC3 EE1bc76xeTCyMtXBTVUcONVos3cUGZscFddvRmTum2aWa4lfgFjE68RECOu/j4U0nZXFmL+P6KSZ EZTJH2cvcES2d13ULe8nha5laEGYxSx7BTuQOJ3Vqg6z4QqiXiESRkI9iE9ydvXz5ZDJC1729M0f /HRxj25JoYwfckRCSrnjybwrXQItEbolUlMvgIri+08ZzsL22spzbI8Uk0DyqySKdjxZgeJ8RTRa 6X8xDjxVxzJHBKfsT27bdu26ZK9DZCdnJhhozowckipUU8N+Wqwr9DMfN+KreYzLlymumOyUAyWV yQjnJ9qKxVjFFboFqAijep2qdMTkLIbpyy+mjJWG4lojCpZFo8nZpj7PKwM0ho8N5DG8Uiiq0XkK hiduROmI2eUATRvSILyC8p/Vbtz/AJdtEs8DJcz3d9c3F9eurcFtUj9AgQLvxaocCp05w5QMxuIw G+PakeVGQGHyXWH+zLIS1CSfHrXW9vAWS6IWHbuVyTAWlq8nLYcVJ6aBbzIQ1KDZyIx6rTu0/oV3 NmQJ3tDHEN2aSg2+/WPf7uDiOUsbrLPoC2Xt/wCm/ZnZNm19nZo58ijAxwqa9B46ybbZWZlJh2K9 XDJzMqvnfqBcXK/osaqwWSAIhUUNBqkSMAaLQDDASbPdzTsZJZC7eBJ0SMC6uJFVHLP1/bpqEAix KrScqbb6MA2is6ozGUA7b6LHvXtzoZLJICa/Zou3CpIlUbi76iu2rCDlBkUKuLqvQ6NGtlVVDMd/ PRGUELgyk9emvbV4KMt6gfHVwFG1Xu6sTBYZ3LWjvJGtzdq1s0RUArKgdY3Ub1IPXRvbrzPjwl1Z K80gWy2jAWgdr3MN3hJe22Qpe4P1pCfmFrM3rUkdSkh5H/xa5H3zjSo5Qt0FuD3TiMf+UcfBZ949 aoE6w/8Ap/gVzlFSJJljoeQUq4qeKgU5LXqRoPHJLOsqZyh+Ny9/jra9ChZIIY4xLauvKKUTSBSr A9QVBp5a0j7bDkBy4I0I1B7kzxpGIlKKjGRsraKafFWgezcH37OT1lEccXU+LIQSK+HjoX+PY4Fh 8w0I7tPihGRFglDynVliXeeMTC5CSC3Yy2s8Pv2srdWSRiAD8VPpP2a7Xh8j1oCRweviul413qx3 IFiO4crgJHgxdx7QkQ++pAdS1OtD0IGmZQByUa2iFmZB2RqH6o9xrGEZLcydA/tsN/OgamgHhQfq k5e00k9USizEPdFtLDfSl76WN4yJaV3Gwj4gCg8BqDDZpovegaiNowE35H6YWeO+mEuMaCNu67JD mrq4H5lSq+9Z18RHDR6f31amsGj3cz5mv+3LyDx6S+Jx9ytH3ES5BpGgGv8A1dR934rE7OCtldyu CfZaNU32q7Gv7lOuoJynycptxJubaWO5tFZjIqr7AU8mHlTroMwDqk7gJBitT7PMN5j8zGie3cvB CZYqjZRLQ1HUHkV1z/uxMJVnsl+SxecDCsnoDH5p9+nk/BI16D20/aGYf2a5H9w17gfFKUWNcmTu 2FZ7CYP8rIwcnbYgg76x/ZLNkx4prnDQ9iRsNkrXE4i5xnuAw2sNnACu3uS8Xkkbz67DXUcuErrR Y2pPwGgQeVPdGTdSPwdIU921tde/AxidGqjKfUN9txrZqrEw0shG4sZRyCxTJc2lh3ZimyMwFnlY ELrexL+aUKrxdB1O+s/jQs49vpwO6J/lP5FM/wCdKUiJgOOow/iO3vSNe2d9i5gt8oeFvkvIjWM1 HjToaeB1v12xnpgjodUyGlpqiOFilldZ6+5aoeQboS3hQ6W5lgA29Ss/mTEQ3UpshvlkXjy5EeDd RrHlWyxjUqUt1W7UJ6uFKb9BogjhGjUdrpnx2cu7EfyGKpIpSWP5ldT+FlYEEfAjWbyOHC36g7aH qD2goVd86pvAsfmlXuzsvtfu52uon/oeaepEsK87ORjUkywdUr/ejNP8OtXh+6cnjhpf7sB2/V8J df8Au/8AJbnG956WR+I/ML0hnrWTFdvfTnGzSI8tp2bgLeR4yWjdooWQlCQCQSNtH95s3zhMaGAP zXTUyEogjQoE0tB/DWL08UcRZYV9Yc+txkRZxmqWy+3t/eO510Hs9BbceqiRYJH7ULS2l5ZxEi5c +7AT+JlG6/aRrQ52CJdExwTqEHzfJ7obVlZVWlN69KHTPHwO5e5Acrq1xYVKyUKR1Mh8CTr0rnK9 CjDoZdAyScjsF+Hh4aYgWCWlqqUzclZV6KP36KAhlfoHaEpIlQ4669IPhTEsU6dkW9hlcz//ACs5 t7GNWkkYV2JHhTWdzJGuGA5TdJ3FF5b3FXOSS1tZPcguJSlupNP5amg5fbpZpCBJGiY3AkBarbsM f2rNi8dZUvb50ikuEahhFahtc/byPM5OEedbSYLSfp9gsjiMddZAy+5ZlRC8YO/NuhPw1levveT4 VbpAYKcJorU4y8tIHe3ubmF44DJI36USFae4q+BHjTUzriOiqLJajKVsXJ3vZoMbNb29xIQViubN mm5N05gAdSPPXhZHQSwlzKZ/lymKy7nydvefoJr6G2uI6AQLPQtzrxO1CageDeGri8DI0/BeMpks WCc8Xh1zbJf5i4ia0hUut1G0cZZkoCktPV8wFT/d05Rya9ryYj8VeUiO0FZ/9Rbrt3FQ3EOGmfLZ yaotbaDkIoGPi7eIB3p46GbKpY6fgEnzOdCqLnXxWYdm/T7vWfMPmsrcsYpFmW7N1K3FxMhUkg7b E8l22IGiX8usxaEfisenmWmbgY7079tfRvs+0nWS7STKXPzzMRxjq1an9vw0E8q2ws+O79VSNJkc l1oq2fYXa9ooEMVtJGagxqC5Pka+FNelGuI82T+KYjx64JW7o+p0M/8Aw+At/ZRfSJCdjt1pqs+S /wBIZWlbEfSszvb2+yMzTXUrSOxrv0+7QgHQxMlQpAaedN9MQgrhdmPfTRh2IoXLRUFQNz00WMUa MlWaNgSCKjzGiB1IkqVxH6akff5all4nCC3QCqfHw0WBQXS9eNRjTx66YiFQlDGJrvooXiVE1d/9 q6uyjRRlunhqQF5cl6/aNX715lb75ae6vrvvvDs0kzR2732PUA+wYYlRZgDWsYAHLaqnrtvpD2SQ phHjS6E7T25Jbx+aUjyf8j6sFL+E+sN5ic5Z5S5sku7gkC9KMUMkMpKugCihqjeNd6a1Pc/aY8qm VZLPoewjIPwKJVwhAnONPgtmzj2sqiezl5W3FZbeSnzwP6gTTxFaEH4jXEcQTjiQzofFc3yKTGZj /Tp4JSvLto8dcuhqk08MRA3NIlZ9z47nXR8PEUaiHl8VBiMobW9iufw1AbxAHjUeI89TzeL6kCqX VMXGoV36kdqY3LYGe9wQV7u0VrpLNG5NG1AZBH4mNwKheqsPI6z/AGP3C2u307dJYEu3sf8A6une nuDy4meMP9Q7+0LzbbsWn5dS1a/Guu6XQFTooJ9RC778jv8AsGvKE0diQ2k/dOKSYySJDdRzyBUA QpCfdYEk9CFodtKc6RFM21YoPIs2RMuwLY7jPT3t6JZW/lzSP748GSUkOD8CCRrkqOOIAMPpb8Fy NdZEt3V3/NZZDY9rYN5Mb3Gt89ubi59qC1MfvTNbv+njHMgAKSXNfhrrxMyLxb/XP6LqDKc8wbT5 5TdaZjszKWX9AxuMyFnk8cA9ub6WrU5bhnPI08gB9ml+VM1x3HqkLq7IHfIhj2J27VvRKbqzktbd HFhIDdRx0nb2pElAeTqRtXXMc+2UoRzgSH5j81n8kPVMPhn+4guiPaF2LW6lgJ2jclR/hZqjWZ7n XvgkKptMEpq7ku0yQixULenh716V/DGPlSvgXP7tY3tlBqew9rR8e34LT5MxKOEgfpkbBZa9k/MT IrGletAhP/xa6TeRZGPbF0tZH/bie0/klG8WKWZwhIBAIBpX79bXHBEU1xyRFX8XdXFrYS20T0jL wur+Kn30NR9w0O2kSsEuv8FUtOZ7wQq2Ry81tgsxlIyvvcZJE5qHXkSSKqwIP2acFEZyiJJumHni OitYjN4++srEZELjMjLBFJJLChFmXkXmA0YqU2I3FR9ms3mcGdcjs847D9X39VHI4sZyLdqIXcSx Ir3EY9iTeO7ibnBID4hl0nXNyw17Oqzp8aUT9vsUClaaO6Bjb3F/Adgf/arQjWhGETDsKcriDBij UWXgMHFjSUD1eYPxGkjQXfos6fFk+i4jmlclj8nWoG+pICpKIGF6S73lK4/sLfr2jhD/AO4+i+5j Nf8AZH8123A/4Y+A+SSMvkxYY2a56yBaRp5uemsyERIsU+Mrzf3Zb5SW+L3Mbj3mLh2UgMSdyCdd bwzCMWHRAtk5YLvGWn9Nlt3qQ5FS3SkhO1NUus9QEJ3jRESHRe9s7fIQ3T2cIW7cVLbAmStSPvI0 nVZKBG44TUgJAgDKS7jLvamTH8KxqCHYbMW22PwrrXjRu8yRnc3lVMu3tPcpG1BspI2qR1PwGigZ ZCJw6HxwyTOsMSl3Y7gdSdHJZCEXRH9BFbyiKZ/clDcTGoIqdthXfQDYToiiAGCjRke0xrWsCCNp 3/mDbmOI2FdKs8nPRHB2jHVaX2H9Ibi4xKZ7MosEd2nKzlmYrxbwYAb/AB1l+4e4kHbFG49Q1Oq0 R7jE9n2Fvg7qb9dlL4iY3vHZY06bb65zkwna+0MAiykScp07M7igzc8mOLi1w8URkDyGhklXoSB8 dZ5oY+YsB0VTSQHGqZJH/V2DYm+kWTiXdJUBSkMg4sKdeVDp4E6KzNlkDyuSwd3KcNiory3tWgW0 e+sQquq0oTRxUmnUih/bpecog72GO3qsm73auMjW5c9Y9En4v6PTw3ZaepjiNVnJIqnUMD16Gum7 OfOUcR/RYVlN3qEE4ThNgbPDSWdgtze5Sa6qBbWokZVZuvNq0HTfStdHrSaOe3DJ0V2N/wAhPc6c LXt5MNaNLPBaWccgWRpZaNMrAeBPjon+OYDzEK0OOI6gfFBb7u7B2pq8r3kqAqFXZT9uqeoDoCVW U4jvS1fd/ZadWhsALSF+pTrTUvIhifuQJcg6DCXpZru9f3LiVpHbxY10PAQzInVdx2TN1Gpg5V1K uOO3p01VEkq8SvpsvAD7ft08I470eJX4WRG9NGj2ogKie0LHofhq+qlQvakClDrzKwkqFxabHXmX nQK/tdiQN9XfKoe1K1/akEmmnIuFQ9qCTrwJP7/josT0UAqszDrqwCsoXanTVwvAqFpByA8ajVwF LZVm3zMmOv4po1PJY4ywAqCClCCDUEeY0tZxRbA+J+ayBVuDgsQSqWX7HweVuoe4cDIbN/dWfIYx lrEgQ8maE9VQ0+XcL9mr8X3CcHrt1/ll29x7/mmquYdpEtVb7Myl7cWF12/ly0N2JpLrDVIIlWTl NPAjCoNDWSOn+IaH7rxdshbEY0l8gfyPw7EHn0gtIax18EYug0dhawtuXMs708OTBF//AEbarTFJ vohnvvBLxA58qcv9hpoBE2bgmHBZVLO/hlZqPF6o2r8v7dZnuPFEg0eqz7ajHzRSP392Jbwxz94d twsMI0n/API2UXq/RyOfzATU+yxP/lO3SmtD2v3IuKbT5+h/q/8AuHXt17Vv8Dm+sCDiQWVmcKWM UaoPA/Mf2nW+tFN30zJfPXNxKS36eyndKnozlIR+5zpD3I/7R+CQ9y/4iO0haNCsk8sUMILyySLG iAdWZqAftOsZhEEy0ZZArylb6kezZ933NkcaMk8EUQjuuUvBkC0aiR0H5nKpPU60vapmfHjJ23fb 5LV4Ef8Ab+rtUvbeYy+Tl/T5OzjtYLSJUtWSExtxr8hY7ttqPcYAQwUHlVRgHiXJK0LtVp/187hQ tr7V1BJO5pGrPAyoGY7Cp6a57mgRjEHVwe/VITpGwuQHBD9Mq/cTW2Iy8lrDKJjbpwmmWvGSYAOQ vjQEhBXVpcf1K49HDrOt44iRtL96MQXLR2Lu5rd3De5O/mabAfADYayrICU8fSMBVnbjCASX0K9u ZK1JHvtlS/Gu/H9PGa60JUH1oS6bPzTk801jx+QSjMw92o2PQnzrrcqj5UxWPKpLm5FpiLqbxBhR ftYsf7NTVDdb8F6mO61As1cs3a9zGP8A1Y1r8eRApp2Ef9wLRpH+4vt5J7VyYa0SNRGKeUaBB/DQ 5xckqoz8V9x3cOSxRb9HNSB0HuwOOcTj/Eh2+/rqt3Crt+ofr96uYuGRC3ltby4rbXH6C6lIP6eX 1W8pPgp/CfIH9ulLKZQjkbwP/IfqgyjhiHH4qzMEgdVu1MF2CaBq8Tv+Fvj5HQIEyHlyPtqEvsk+ MhW4r+SNhzNVFBX7PgNBnQlrOMDovTPflyi4vsGdmpH/AMm4OQnwoY5Dqvuccw/sj+a6vgBq4g9g +Sw297kte483HYnIxY2yh5lZ5z6CUWu/20oNRVxDGG6YJ8FosHZ2TX3rksJmex8I7TW6XkdeEcZU tyC0JNNxWmhQjPe7FDrhjPQrDss88tzGlstVVgGah47+dNbPGiAMqs5l8L5l58niXA9cf6iMMknG gkUHiXWvgaeOr1VwmmZSkEou8aM7uoZ2NWLbk/frRAKSIbVdxSZG+EghLmJVAKjZaHYADx14xjHV SJSloilncWmGtZQ0Z/qRAo2xG4qBT4aBMSme5FrmIAvqruOx0hKXxpIxIaaaRa1r4LoVto0Rqqyc lWBaRNl7aJ7pbh7qRQkEHq4mtAGJoAdUMjsOGZVl9S9OfTWa6/VW1/cXi3uNs0W3Fq5V0iAO4CjX KcgiMnAynZOYsU35Lsi37m7h4dsotxk52DM868I47cH1CmgQpNpIiWQCW10U2T7Wt8Hn4sUs1oP0 6rNMIByq9K8Sfh5aGRtntJBb5qSSR1RXE29pIst3dh5r66k4e3GCRBGDUkrToB46vVtnHIclCuJY DoE3ydu9t42Bnu54UY1Z35AMxIqKaHKqmsZZvxWR6AOcILe/U7sbB41seqG/nBqSKEggUoD5atXf EQ2xiT3qptgAxys9yv1ZyN0ns4i3SwhX5XUAyU+3VDvIZ28ECXKOkcJQu8zksixe8uZJTWoDMSNU FQCVMzLUquiFqV3PjqSVVlcgtuR36DQZzXgEVtrQEiuhw8xRQEUitQBstNO1xDaIoVpbUcQKU07E IkQvps1J6DRolFC4azTpTrqwIUrg2CU6akSfC8qs1ioBI/hqwL5UhkIurUCu2rDK8gV9agqRTp8N SoOUqZC1oDt/3aNWhgMle9g2O2+mYlQA6ByVUkaZGiJEMoGJJO/+/VwVYqBx6l+0auCvOvuVtvca Oe2dmiaNGgcgrzSmx1XiyYEHtLrJomwIPaVQtcnf2TqVY8Vao67f9mj2ceE9UeVcZK0zqUXIY1Fj MUy3FxbU2iK+oSw9GAB/unb7NVrJB2zzhn7e4/bKiOCx7Ps6csvPa5GNLq2AWeFhb3cSfLDMF5NH 9hryU+ddZMK5U2bDo2O8fqOqStr9OTdEvyoeJkJpx/h4/s8dacRhXieiitZh7ckvKqElT5gH8Q+H nosaw6tIZARGxzt7jPdtwVkt50Mc8LiscsbijAg9aqafHS/L9vhaQdCNChmkE7hgrMO8e148NKmQ xfJ8Fesf05bdoJRu0DnzHVT4r8a6e4nJM3jLEo6/qFr8a/eM6jVW/poD/UcnTr+iJ+4XEWh+5H/b HiED3H/j+K1jtmSOxN93FOtYsUh/TgjZ72b0wD/y7v8AdrnvcIeptpGthz/YPq+/6fikIj8Vnf1F uLyNcVfwTyR+7HNBKysR6o2Eg6efuHW/wGaUewpr25mlHv8AmuPpsc5kO50xF4k01ulHvBKGBgQE Eli3y8gaCvUkU0P3aUYUmWH6eKLzzCuszPT8e5egosWuBsVvI4h7QLpZRyhKmQsWMslPmK12+4a4 n/J9axj/ANzO3gua5F/qESbA+kfr2pNvJBZZGMOpacOksxfZuTeqh28Qa63KbHrBGihiIZ1Rf9VW Mgn0qSB9ms+cPNhJRkSlO5l/lXsv4Rfunh1/TRGmt4QG2H9q3IQeEPBCPeMjtuDv8o3A05CDJjaA qfdNx7OJt4waGa5FR8Iov976tw4+eRVuBF5E9y+4K5V8jZQOEIYMgEo5xhmBCFlPUA6NYdp3I/Ii 0SUJyN07310xFP5s23l6zrwgjQgGCq+5VFYdeAr+3RQFYRU0k/FwRSqkGvxG+qiKoIKKTu/J4PMX mKaIZLCXE4lTHy1Yr74D/wAh6FkJLdB6T4roV/Aha0/pm31D8+37MjxqE4B9e1aILC2t7GK7t4pI zIiyz4+Z1E9qGJHGVRUg+I3p50O2sG02iTS/8gMFZN0JOzv3rTv+oLuG7ssT9OsPjxwW57HwEjua 8hGyzKAKf+HWjPjCUoTl0jFdHwwfSHa35LztcRfp7ZmdfcnkNKGpOmolyjmLByhbTXYI955FjHTq OnlpkAdEEBNuKnupcPGto/8AxNzIIoy53UcuPInrrPvYT82gT3HrJi41Tb319MO9cXjMQiSPlrCS 3W6a5UEJDLLXnHVt9qD/AHaW4/Op3E/S6LZx5sw6LL8j27kcalpdZBALO8ZlilRwysYyBIppuCtd wda9d8ZAskrKjE+ZPFpc9hx4mY3ctzFeW9Y3tYuIEyFTx9skEAg9a6Q/3X0d03vgzDCze8Vrm8cW SySROx9nkv8AMZa0WoWu9PLWlDEcpCeThOOMllu7AYOdXtcnGQDGylGYAjqDvWmsy+IjLfqE1Cwy jtT3L9JB232bJ39fXbOgdEs4ESvJ3bjxatPUfhpQ882yEAMFWhWxyrOCtL+saY0S2UgCu0cUhjLc t6OAfPWXyMvuYp2O1l6J7eXNWvbjY7+rMmZW2kNEIFxG8m/qYANxp01lkR2kOcdFE2dwMIT2hmJX ivLTIWdvHcwcWF5ACsrEmhDcySxPU6DGWGAwqyrDguVoXdc5xnbsLYNJIbzJRek1AlSJFDtJIFWi gHc1OgQ5G6ZgA3x0QbKhPBOF5wyOYzFxcSRX93JKytTdjxI6ggeRG41pwogMgLm7t0SQVXiapqT1 89XISxV1GoKeOhEKrqeLc6HJQNUUt0rQfdpaZVkUgjpTSs5KwRa3QbU0aoBGARKJRxFdPVsEYBTq taU05EuykLvh56JHvVl+9quru6l1yY6Dpqui86rTR18NvE6mMl50IvIep89E3KSUv3kVK+XjqwUO lTJxAFj1Hjq8cFUKVL+LqOmmYHsUt2JZvFCMSOnnpus4VwqNanbRmVlG3UfaNWXlH+u43RwVwfb4 e1BHIx/LuRAjLUnwkB4nyIr56tXWJDeO8/B1mmpxuHf81TYSRu0cy/zEJVqilDo8e1ex0RTtu3/V ZyztgeIL82IP/pxqXf8AcDpbn27KpS6j5nRePaqT3v8ASslcZaAM+GvnKZO1DFmjDNUOCetCeSHz 28dE9P1ICMvqGh+34q8gLQxweiOXCRgBlcSqyhkkWnGWNxUOKeY0GqfQjKQi4wQyHs4tYVeNaxnY faPh46ciMo4DlD5rpqgUBi2KN/d+A/s0ZHEAyMW01mmMZMoguMTknMM9r0JSMAmZG/C6Ejg2keRS TMShiUPsx7ihkEF46hBsT25P213ZPZB/1FhkLKd7C9RTwlhBRwSB0YceLr/e+0avbyI207uw6dhR brhZU/UHTvWp9x4W5GGx+GxpSFLMGe/hfYtc3EfJWZt6nivAeHKo1zHt0nlPkTyJHaO6I/InKzxb EFjjGqXMV2nY95W0VvknaGGxnjuUdk5rIUBEkLJVWIcbHiajWpzObLjPKIfdj+L5GO9HqvjSZTlo y0rHYm3tJxkr2JIg6K1zduirIY0NFXnSrAAUVSfs1ynJ5cpR2xLl8Dv+2q56V07GgS8X3ZXOZydu jTdxXo5RQcExlgJKj3PwcuPgKFm0biVzAFFWAfrk33/E9ExxZ7pGRDDos3lubi+uJbq5cyXEzmV3 PViTUnW9OIhEQiGAGB3ItoJKLh+USyA7EUP2rQfw0pILKNfmdKeQlb2L1ASofIzBSPArbxLX9+uj rr8kD3LpqR5If2hDbUpZlSPV6vWfiaDeujSDhEm8kK7zueVxjrdTsI3mb/7knEfuTV+LFok9qPwo MCe9QWUrLc28indU6+RGpti8SEaweUqznuK5IyJtHdKLhV8vcFW/96uqVPtyqcc+Rj0whXvEKN/w 0P7dHARmVi2hmv5xBbrykYVrWiqoG7Mx2AHiTrxLKpLB1Lm72LHX9ta4gA5W/gghOYAJYDkYaWwN OFaUL/MfCmogHGdPtqvVZiSdA+ExzXhtZeVo5jMBWOFgTyCxLxG/3apsEgxy6SjnJ6rYPrzdJPP9 MpbplEs3YHbcrgAKCWNwTQCgAr4DSnJr2gCOgDLpOC2zKxfJ3Pu3H8hAwY+keXhXQqRjKYsLnAXN lZXl3kRayBWs1cB5R1Zep4aJZYIxfqqQqlKTdFoEOBubW8gkuLR4WikSOOMxcVJrx4gAUrtrnuTy XiQ+q3+PXAEdy3jHyzZnA2yX8Ra0Zf090VJaZSh4VWhXp0I1k0kykAzoN5YEhefvrH9Msn283/MF iPc7UupVNq3ugvBJJGGZJE6jcGh8aa6z23lRIA6rI5MCUsdi9qW+Wtbi6vY2aViiWxBXioJoWIbr U/u0bm8swIA+Krx6okEyWw4zE4fF5/GY3LWFmcjib1LeWJYT7kqvHzjuXYUBX1D0im9NY9/NsALF /knqqYlWv+pb6dS9sJj+9bax9i8uHgQ3ED1ieIxkD3FrVXqANq103wJTfZNmISNjax6IDefV+07n +k9r2HNaG3u7ST3p5k5O8zK1UCkbAU8dA/xJ1WYba+quLQfFXuyMpkbiDHWEK289/F6jLRTO3Og4 uxpUgazOcPMWLB0xCQ2udVs+ewmSssYl5YzG0zrp710AAS8ab0Qk1rtrNurhDyvnqh7zIuy57LyM V5BczWmLlvcxCImBugoWaRpPWeQ9PpG+50MWEBot81ayBBc6Ji7wyVtPibzH3mRK3SxBJ44AZ1O4 f22ZaAca9V8K+GohxthMnd1HfoFlWe7WxMuIXLW06W86qjXE0sgWEkqBwRRVia+Q6+GtGNgA7Sle dw4yG52KSWEcUzJDMJ4x8sqqVDbb7Nvq4yM4XPWAA4LqeMk/ZqhQSiFuP+/QJqAjVsgoKfCuk5lW ZE4aCm22lSUWKJwcQQa007BmRWyiUW4Gm4ZRHVuJR49dMheClCV6/u0QHqpdSCKmpdSo5UoDr3RS VSmXbpqDkKHQy7AodQ4dSli/pvQ00eJUpSybg1IPXRIhiqlKt9vU/Dx01WVLJZvvlJ8dOVqwQjlv t4eGmSFcrlmJI+GpUMjSwY21u7ua6x6ZG8v5WlVbqST2olJ4RswRkJ23oTotM2hHuCyhdKZHQMgt 5dW97cXMcLKL60b27lFBAYJ6eag1O3Q/dq7EZ6FEMDHJ0Ks4CeWxiyuSBH/DWcsUJI3El1SEUP2E 6T5sRMwh2yBPhHPzZRMuwHUpdjvpIqq681I4uhGzqRQgjWiawUY1gplwtmsuDeGzuWlMbsbSGRaP CGPJoS1fUCd12Gs3lXNYNw+KQ5V22wCQ16oVPLIispUlWFGHip8jp6oumYRBQcSOzmMmsdDUj92m AE0yN3jOtra2zDi8UCHj/wDVrJWnx5arAAue0/LCXhqSmzs+6S3xYusrIFjhuPaxLyV4/rmXcAfi SNSC/hUqNYHuEDKzZD+YPPuh+stB8UvyIMSR1GUdxk9xiZPeybNykj9i8gmasskDP6ZUU708UPX7 tBswTEDyy+7/AFWfzIYcBEreOew7kS0EsbPJGEtpFjqvtSHmu3pJYkb6D7nxBXTk7h9SRtkTVtTT 3D/S8biLS27iyKRrEHuXiYcpXZ/lVlGwA676xuCL781xAAxHp4nt8FccaW0RH1a96TI++McDK1na wXWPkjUG3mFpO6Egor1ZGaOtahRTW/V7btj5nfrqM+PVbHFjZxYEMGl2h/8ARBb7MnIQxxR2VrZw xElRbQqjtX+++7Gn26p/jiBdyX7S6XvtJiI4x3LuycvbOh6oQw899jqNrghZtkcpTyrhI2Qmha7v Zf2ukY//AEa6SseSPgt2rIHgEOtpYpZU5kGQbfGupnFgjTBAUWX7byGSa6zgkhhsLK3j4c3rJL7c YZgiLX8RPzU1aqcQBHqrU3xi0epQO2kIeM1Gwp+3fRZBMyGERzDFsZZ3n4oJJbV6HoG/mp/8WhVj JCFT9RHxQazguL+VLeGgNGZ5GNEjQGrO58FGjHCOSAis91HHbtjscT+k2aa5YcZLojxPiEH4U+87 6G3ahCDlzqrFvbWtze4i7uGblZ29zJGB0LRSVWpPxcagu3iVSUiIyHafmvs8zMNz/sfHVwFWEFuH 10xk98PpXLGTQfTvtlfT5/8AEHx+3SfLtESAexb3CpMousugxiQk+8wRh8x+YmvhpE3PotGHHZEc ZJbrl7OKVSLdnIc/3qigr4UroF7muTaqwAjILf77Cf1btezvbOU3d7hSVaGF+LBJ291qA7sUPivS uuVgXiS61AYCXY6t/T2yuc3E/bXttH7rFJnDU9svsu2x58t/hqtQMpsDgpfkS2REnyo/qzhJcb2H fdvTW1x+plnhS1WQO5ok7FmDtWqgekEeetniy9Nn6JC3zzJHULP/AKXdsSzX36aWORls0WSS1jWj ysm5UE7U8TqvO5O4uA6iMYwC0nK45L3u5Mzee3Z42yhs5pIrdfbje8gHFXYirfLStKA6RjzN0T2j 7lIkNoEdSUw905vsvuj6d9x2/ePcEC5INFcwxo3vzg2r8USOIlWYv0NPDfTvHkQOu51SdcjLAwEl fS/sXCYzsvId0Z/AM+NysfuY1pWZfeljm4LGPaYsA1Svh5jV+bfYGJyOigQAx1RHtfs/H4PJ3Oft 8cfcsC9xFbuDyB41VSrkbAnrvrOnKc8E5CiMgC4TZ9PLW9itMz3V32/u+9ILaFZX4qI3PISU29JB psNBeMS7aqCTIYQjuzuSwgvZsZ29l4LO1PEmQninEpyJTxHkNq6AeHEyeLsfuXo8mIDT1Wb9x5eR zDFaZn9cEADCFJIkjIrurNQvUGlTp+vjRGuUny/cCQ0CEv8AuTS0Ejs9PAkkaOIgaBY1lkpaklWI gfHVSgSVuJ96aHIKqLWpFB/DSs1KL27/AB6aUmFZEYHqdB2q8NUVt6U38NNVI7IjEAQNNwi6llcj IJH8NMALzq2g1d14KXXt3YrKKUbalSh85Ar56ghlCD3zBVP2aiKlKeRlA5b/AGaLDC8Ck/JS0r/s dMxyvFK17NWpPl089N1Be1QG6aoav7NNRCuEHY8WI8tNMpK4Jqa+WvKURvZXtoobpSDc3sRuVWU8 RHbMSkZYdauacQfDfV6ZRkDEdC3xGv3fNIDjenEA6lKVpdS2+RW7urC3mvKlhLas0TyhgQfdRapV hsfT46dkHizo0wJRZ8JkuKx4LgsbQ/1CQT+zL+ZHHEteLfEE6REXv/tHzSEM24OI/ml1yBv+IdRp 5PBWcdlJMfcrNHUxmglTpyX4fEeGg30CyLFCupFkWKNZNobhGvoGDJKpaVBQclqPWKU6VHLS3HJH lIZkCuJGOxLRVAJB4Nup+HnrRjlOlMZnaLuH3ZY1nt7aONZo3UsjQLCqspA/d8dLwaNfj+ZdKf8A 4/F0dyigjHZLHQe9aW8SxY1eBFrbuw9xi/MVM1TU16nfS9dOzcTncfMfy8Bol6rDmMjnr3/wV3tn PHLo1vfSs3tcvchc8vXWoarVKnrvrP8AcqzXF49cP3JX3GsxhhOV5c423tcL3QeUj2qiGC3qBJJJ GaAlvJTv00zzKq7aIDUEbSs6LgsEL7sd5+2Zrmwb3Mpe7PPJKiuqH1ynk/ViBxFN99tc97cW5IEs Rj079I/cnPa5j1fNq34rIu1VuopL9poJI45BHVpEZRyV9hVh1311/LIMQHytzlweI8U3Rv6Qehp5 +WshnWVKDq5YzfzuJICvVT942/fqkK2klZ1lK2WT9TkP0xYqqxzyEgdC08hH76a3I4iPALYq8sAf D5KxjMPDbwLfXI5xp6eKsAzyU5ADqRSo30Gc38EO24yLBVsuucyT2+Bw1tJczX7DmkUVSVZqKOQF FUsDWvlq9RjEGciwCLxYRPmPRcZP6cd54CB5bizWaMtwlW0lW4dFC+5ydU3CjifV8NTXzarND9+E 0L4SLOgkSSX+OurKIc5D7U6b+MbUJr0HpY10bQr2kgVQuLqOCA42yasFa3M42M7r5HrwX8I+86IA +UQB8lVZrsi2VK1MZqnmK9fu15lcRymHGSxjt8zt/m5Z3jQ+KxEIzfvVdVJyyWsHnboqk05LkDc9 NtSriLL1b9Te37zL4T6Y3FvJ7ar2H20hYn07RTE7dT1XXP8Au/KjXaAR/L+ZXR+2/wDF8fyCzt+y pi9vDMazOVRVWpZmc+k/CvQayx7hlgndzqbJdhMr3sVhL7qWrtDKzqQY/UWFadD6TWmrQ5zHOiCZ J9+nfcVliL+0xWcvUjWP24jcScoYLmN2oGRmAIpTcPTx1nXcYGZlH6SmocjysdVr2MTB9vnuG6sh AcZlmR8Zc47k01tzqgjEs9AycgeUijboK68IQAIGh/D49iRlukQ/RFbXumJfpzfZXLTWmOuMbMi2 Au2Sb3GgHLhCJKh3ajEIGYE9KV2dri1JyAcN/BUfz4Cx0fVOws83NdS4y+uM3eStNwSzW3eWFkKo 22yCqj0hfPfS0ePMvLB73CvMRUt/3dnrme+vrbHWuJvcgkYuFlf9R7qxE8Pdh+So2NVoa11ALHDf BAN7JZwM1kO4Dm+40/XXs0M8F+IBGAI5YjEQA4KIN+u9B5atK+QLByE7XGEoOCtQw31K7T7cw/8A Tr6OLJYyJkltcTaUk5On5Zd1CxLQj1gVr8dRUDE5D93RJX8mPxWK/wBdzaZF8jHezR3JbkDzLACu y8WqKAbUponpRA0DrMldIl3U9z3H3Feye9c5KeVwajk+ykCg4r0FB0poBri7tlQbpHqhTiSSRpZD zdiWZ2NSSfM6I6CQSvgXw8K6l0Pap0WnQ6q6oYLvnTp468hbVJE+4Nft1BCoUXtpRtpWYUgInBPU 9dtLSirbEXtXAIppYlEhFkatySATtXfTVYRkSjIoKaci68rKHcU8dXdeVkPTau2pBUOpBJtWupBV go5JwR8dEiXUBDLmYCp145Vku5K8G4Gp2qEpZG6BqK6tEBeKU7+YtXz301HvUjKWrxtzpyCsAgty 25rvpuIUoY9CduujhSuaH/fqV5L2Tzt7kbqL33AucnIJ5GNOEMfyRpv0UAE08tOU0RgBEaRDIMaw PgmCCTF4y3kiE0ZnVigkDLzkP4TQeerSBIKUkJzPcrtzlLJZbGwlBkmcBnkpX2mkBorAdS3KnEfb paESd0u0/gFWmouZdErT1UknZhsy9CCPDTYTQVX3GB+3fVldlNFfywp7KGpVvdgruOYFGU/4XBKn VDXl1G0KxAVuuKW6n2pfVDX5lb8UZ+I/hrwxqqy8uSj+XljsppLmUExkxmJOhuJVjBBNP/TT950C gEgJHjvKIA/0/iUQ7M7mhthPZ3Qa5x92Sb20dqn1n81CejD4aOZmGCHiVTmccliOic87h4sTPaRW cpntpI3mimdV5n3CBwDKKkEAbV1m+58aNYDFwQ6yp3SlFidESyl52fjLCws8wXaeCIfyeRCJJJ6y sjKOpPkNM8eqn047nMm0VKOPOR8qXMp37ZB4rJsdjVs7f1W6uWPJCvIENyU0I33GpwWaAHwWhXwZ auUOuu+MZPBb2LWttNFcEyyQ2zTlIylQvMyScak+W9NK2cJ5SmBtLMD+iZHBkPMZHwVK7vbafi9r bC0jp6oxI0gr5gvuB8NK11SGCXUGAdD2kW4RoWcR0qVdvlDL4HY9dOVxYqwwXU+Ox8hPNEaS4lUR CtCqBTXY+Vd99WttIwhX3t4LrLZfF2E0dkzN7yEKY4kDIoG55MSOTVPWlNRCqU8r1PHnMblN2hie 6LTuqfJNb3uPsL9JVsshKjQoVtyrbtWlPLzrohsqmNgkCYs4ftTPNpMKI9GZahDn0htGyN4TNcxN xuArASTinprUUoa77aSsohIh+iwxZlYZkeEOavrUIiyX5n9Ma8VSOZSyKqjzJHTWpXmIK6Cqe+uM l2/0x7ws+2T3hk7eHFYWNVaKS+uI4ppSwqixW9TKxbw9OlYe70Tt9GEt0xqwJbxOi0TWwckJKvvZ mRJ0X25yeLoPlO1aj/drUVII3Gxix1lCTTkrTEeXuNt/7qjVDq6CQ8iVT5gybnbz89Syuy94ZrEf r+z/AKYz8iAvZPbqdaLT9OTv+0a4v9yH/fj/AGj5lbfAm0PihF/gBPIrxxlrVIo4ggPJw8Y48618 2NNYLk6aJg2MFYx2KgtrS9mmjdPZnt1uIVko1zDK5XhFUEChA9W9DQnTEGEcjqhSm+iF3PauGuob VebpfXh9yMXMkK20VojSe5VqdfSAhHU18dFExp1PepEk79r9t5PG9qYuFAqRT5Fr7KIihJbSwjXj wVppKMK+oKV+ah1YBojsdz2t4qxOe9Fsjg1zf/LEmThlk7dS+lL4W0VHkjMBZGnLrRg7781rQJT1 EnRoXeeByY9Y9g/VSYhi2D2oN3PgLewyV1I1pE86XEsM5tSTHEZZnlhCkbcf0+1ATSh6HbVOUIxk QOmrafZlSBfVA4+28dcW1zJcWj2t3GAy3bcwCvEvUFiRQ7AbeehRAbsVZMg+X+mWPnrcG5QymkpW dVIY8TwFdia7nalfHfRo3yrGSgyg+i/Yv6d3eHy9lk5ILdxjofbfHtE/tXM/FuDNE7qeQ5qRuBVf UOtWTaSCD/FDEQ7lWPq5Df8Ac+SxWRxFhDY/p7SOHIyxwgR3Eylj7jLAp4sa0ZSK9NXHIEgN40DP +veg2kdiTES1fH2a3uOltJYZHgvZ7f8AnCWYbqCrepTxr0r9moaEvsyG4IRK77bwU1obvCZYXEkh VbeymVY53ZmIoVJFNvh11SXHB0VDAILDg7mVZU9t0uIq1Vh6CenAn8LfA9dDPGmOiptdVnsL6K3k uJIHSCJxDJIy0CyMCQD9w0MwI1CGYnXoqZqDqAUKUcr4JPCurMhsr9vcDYV2+3QZxUiJdGLSU7b1 qdJ2BFjFketHrQ/26WEXKsAjtqSVH7tHhA9VZkTiNNvDRoleVpXpooZeXfu06bHVtVC4ecgddWJ7 V5VnuPjT7dejJeAQm/vAAVrvq0QvJSyN7StT9miO2ql2SreXZJNTto9YXg6X726qCAafZpuEVYID cz1JqdNwgrshcx5itaaYjhSMKow367HRFC+eFPhXXlKzjKTm5uJJQpWpHAdQEAooH3a1IhgvQDBW MNA0k1u7t6nKpEp82enL/dqJlgVWZwiV7dP/AMx/qFJ4fqgE39IQFQDT/wAI0KEWrA7kOEfI3ciD tLc2s1yysy2svsXEnxYkIT9oFD93nqzhUbPihcsgDcdXCuAoGcGhHXVmUhHcbbtBFLJcsYYWXnfS VC+ygFAF2/MkrT7NCllBsl2fD7dyk7muP1F5E6bILeAxR1qFUr0H7NVoDD4lD4sWifErvFdx3MZE JtbWSJ3CELbIsjFtqAxgMTq1sHCtdx9/a632zzNonbLS38cDZbHKi2qKpMUbEVjqN6ttuK01l28n /Iq2kbRHA7/Bc/bAVltZfJZV3IJ8rLIWb/i6iTk7KiyM7H3NzQAmtdE49gckp/hTEfikLu+WSA4/ dH4xmKRkbkpaCQigI67Ea0qxha3HGCo7C/t2JZTSUIaoeoJIXp9+pkHCtOJTljZYbmNln5cigaPj /e26/Dz1nmvKzrAQcL9a46aSRp7gmPHKT61HJ5adRGNqnzPQasSAO9elMAAdUxxvdRYhnt4kjx9w /wDKZaM4Mf8AfbrXQZl0kQDLKWLrAw3uSjuDdC3DlWkeXkyFgQaDao0xVdhk5DkmMWZ1Hbd133ZO Slt7XKR5rESvKWsjJKUgMjVkIRgFDeFRosuPGZ3M0u37dExOr/IgHBiQn20ytteQPHHBRblVIk5E 0JIYUHx0lKIHiuetr2fBFu35+2Mdmo8j3BY27JCpit8hMvJrcopbko8SCKAkGldtIe412XV7K5GL 9ie4PKlE7WeJ+2ELzfcHaHdeZabJZtLmWJBaC0u7OCO1QAkngDRi5P4iQR0J1fi8SXEr21wPb9Tk /fp4J643bQWz2hAsn2Z2rkoZDBZTWk0aO8c9jJELeV1B41id2Ir/AIdtatPPqEBvJ3KK+btHmP36 ozP9BcpmMXb5LtnKQXU72sLvYXCtEyHhQqrgHy/EB9uqy50IkCWExC3LFZLmO3M129ez2WXtWgkt 39qaQeuIPSpUSLVSRXwOnI2CQwmBIFf0axHbVrmPp/8ATe5uclBjrX/lDAQxNcgkOVtFYio2rxYa 5X33jxndEylt8o+ZWnxZEQQGTGW9kyWNszSkygxzqqAq6tTkCxJIPXjrnNggQA/4JkTieq/XUeMu pbqKJJbhgPYUrNClXHzySJRqgkV611c3Rk/bpqplXplBZeyjdCMNNHaWcXuSJExDblRVQ6D8RUdQ aHVzWJ9Qhh30TdBkDHZjEW0KQ28Y9qNEpJI/FkYyGQgbkIKf9uizchhp3K7kaok+fWbHf0WdY7a3 Mkly2yxgk1IUDkPSRSq9fLoNXnYZR2nA1URkQXGqqZHK4qW0ji5Wf6gUMxHGOKRW5D1AGpYcjVm1 MpOAFBJQu2iwcq/pLW4jg90o9xMl0lWESsaEEkcAan5emq7YswwvEq9JjrC4hWO1eB40DBZpQkvv Inz7A9QKUoN99E2g4BCHKJV6SO4ubWxdpE/UvAIxGtG4yIxSJXc1KniF51Phrw0GcqSFDfY+4SxF rJKrxIzTTJwUxiRvSeLAmpJBoRT0+NdXY9ChydA8pgMNlYocfkLQwsrsFltyAWlqZWcMPPqKnYbe OpMssQqGsSQePtbt/Fm8nntjkYyqCzkuOYaLlWMll3qQCCN9tFja2miqIN3qge3FxtlH+qa9sckW eZ3iAaN2iuPTIVP8uQKCQw4n1aZFoYOFG1tdUOnuO5Le8/QwwQZ/GVjuFuJFEDyPuORIBUNQ8fV5 aKACHBVJFsaqKS6wWZxt1BkLM468DrS4mQUhlLAIqvEChoBQqafdTQZwJGQ6qdpC4z3ZVteg5K3u 1knm2b2EFCyqoLcE2AAKsSvmfs0H0YnA1VLOO/mS7edmZHHNNwmSaOEgl6FBwcEo3q/vU+49euqT 4p6FV9EqhBdRW7cbkmMqQDUGlft0lZxLDoFRmR6zyVqaBZk8D8wGxFR10jPjzicgqcOmizmHEGvU Ag+BU+I1bbt1Vgi0UlaAAfadWcnRSAp+YUUrtqwkwUELhptTu/FVZVpLoL1O2r7lCF3d+dwDT79S SvFAL2/FDVt/PV4aaqWSvkL3kWJbR6w6gRSxe3tK77eWnoQOFcBArm65V3+7TsIqQGQmecliBpqM GVwFXL1+3VmUrknf7deKhfqePiPhrzrzJLk7ckh7ilshFNPYRsrsYqc/akFQCx9IIHUnbbWrItog i14OmIdm5K0vIb+B0ubOQSi1ZarwIUiP3CfSCCegr56BbMbHOiWHKiYscFQXHZ2cWFJ09maVCjPE kh5kp1pyABP36FDm1k7XVYc6slnUsVveQSZHFzKYre+uIpFdl5IyvyA9Q2G9B8Dq5PlEuwJiExtf uS1e2c9qxEgPHkygnrVeoI8DpgSBRAXUthE6yQhF9y9nYLaRdaFjQOwP7v26g5VZnHcj752LB5K3 sLMLc2cFVvw6iRbp3FGDA9QP269EdUsKTZFzg9O5Oo7Qse6bT3sRbqjwAoLBHAuY0FPUhNAygn5W GhP9RBbOh/JIV3zhMg5f7fBfMbg17ZxqXWPUPeSztDJkpECuiotXigVt1rX1SfMegoNJ8gykN0w0 dAO/v/RNWe4iLiOra/onHBWdicHNDn5zbG4kM1vbVCTFYx1UN/e6CvXRuJx4SjL1C3YFhXA7sILn Mz2hfwxYZre7sv0cjEcBEz8un8xWYEn79Hl6RiAAQybqpsj5gzIRf4vs3JW9vzyNuBGTxiuseYRV tmDvB16DV4wiNJFNV3XR6filG97VwsVYbHNW89/EnGEiOYe6lQyxligHIU4qxpt11Zy7ap+F8j9U WC/YhVS1W9vuUdsjFY4x6XmkH4Fr0A/EfDQJDOFS3J2jVMGOysWYvGsriVrO3fgsfjHEyghSQo+X wIH26BOrvSdtJgHGVW7lub6O3/S4nmoib23aBuNeIFSAN9yK69TEE5V+NCLvJKEVpnprm3WWC7ZZ ZYyOaSkPycGtWFN6ad8oWg8WwQnbFfRS8yeP/qt7nrOyZ3dnsmSaSdY1XmWLACMbnjTl8fLWdf7o ISbYSMZ6ZUDl1trnOExvhrDCRW1lbXguf06cWmDKH9IqpPE0r9mqQtE3kxyuevlKUySNV1mrE3dt bx5Ee2ZofkA8DVQ32nrpeEJQn+KBRYa5YQK4+mmDu3gvBfSFno13aRqQXPiwkdeKA71+b4aeHMmZ bdrf9R0/VbUPcgI51+2qs3mH7E7Vsxk457wZNOX6axtbl/ZkCCvKZnrsTsfRTVnlOW1nHUn8lau6 dwYj8Fz2f9Wbm15WrSGzuzyW3IYmPjJsVRjurUO3hoHI4HZkKtvDlBzA4Q/6h22fzt/bu0k2Qui3 t8S5kPqoFI+AA30bhCMAeip7fcACZFers/dXNn2v9MbBpW9mLsvtxzGD6DKsDLyp0rtrC9+AN0T/ ANI+ZXS8fMVWbL3N7dNe3MhkuXPIuQBQ0psB01hTi5c5KY2A9FxJjrG8k91wyStUs8blCxPi1NSa 4ybCYjYUXgit4oIoET0x9GYklj5mp1YAdAvM6sFvPU7ApZVLp6KanVgG0VJBglvIy0qPvr9upBQp JVvZOTbfu1chLzBGiprLJEwZHZGHRlYqR+zUsCVXPRErTuzuLHo0drkZUjYAMpPMEA1A9QPiNQaw FbcQmTB/VC9sXkOXtzfEwvFHJG4Rgx6FlYMrAfZXyOvRO3TKgSRpfqdhJYyrRtHxGySIQzclAZeU ZO23Tx16VhIU7mKPT964ruzlW+gg5ovO2JEQkeNyw9JoCwDUXlXRDfv+oqNxRl8JibsGK0yNza4z hA7tMDK/K5b2v5cxpUAgdBvv8aWx0wEUMRql3JQ2trFBaNEXnhaWBhbVaNpY5VXkyqxNelNv7dRG 0uzIVkAAwS7JZQXLxWONlWUQyvK7+4xZ3cBW5Ctdiu1V8dFF+cZZBMGUVzDPj0Z4fetktGHuymUS KWdgTQEcfUTuDpkWAqgsIwp7Ncfm5DLLctc1iZrijoaTKQwIV4yVG33b6ICDorxLqsuAx1vFEBAJ YYy8gvYQJHUk04MjbbEji22w1Z1GqC3XaeOhuudvypGPcubd3UBlYfylqSG3JpX+zUiQGqCa+xQ5 Cws5C8tteXTxrFDydBxEbBqUoCQV3qpHgdUMYH+UKTHvV62x93HHA9nk5lkZeftOS/Jtjx9VBTie WqS41ctIrxiiMN/mKyK1uJUWpQ1HMhRuGUdD9mlLOBE6HKhyuGzaCKGWZWhWYVFVNFI2IJp4HavT S8uDOIxlQ6glvhIOSPVevXw+/S8q5R1C8yGXFwSCT92ohBsqdqB307MCK7+Wjw0USily+nah3pp2 uKuEs3krGu/TWlVFgpAQSeU166bAUgKoZCfu1dlK55b68y8uq9Bryhd70611ClLmR77yA9qSOGEN ItXQoQilSVAUAjoPE1On51b3cpUceJTH2h3xK/OPJ2oeyvGWJrePlRiASZBWpUqPEaiselgZHek+ XxAzxOQnS4s7aD27uKcz42f8qZQC7HxRxXZh4+el7eBAyEwfKs0RBORlUf0ZtLeadIjcRTJzIb5I 3V68GG9NqEV1WyTbCNHb5pgXdHSTmLCfIyC9toPdkZHnltowOKtAKOa+IIptovGBi8D/AC/JPcee 0bT0/NBLeQ461ky8h5Xl1yisSeqgijyfs9K6ZIyyPIbjt6DVDrOxa6JklkENsh9c53JJ8EH4m/2O rEsjp0wedlisks8TILSxhuQsskzvzkDrUOZFB3DDYDYaWlV5nOqTvrcl+xa/hL+27pxj2GZp71oy slwDxMwp84/t0zExtr22dFzttWw4WafUqbI5G8EdhbXMlszFuQjZiAg4r8o/ZpbjxDmRWr7aIgEk h0H7auxZXPHJYGSRnFP1LRSyShqEV/mhlp49BotsXGCnORHcPLJHZu2WusbeS2BdllpKaFgbeQbc 402YDfddxTQN5HwSseSRIA/6hKVtisnDKwz9vJax2T8pKRskt16KpHED15Cp5Dou+mBIdE/Owfy5 J/BfXushmppL6OFjagBY1jBMcS+CD4+Px66iYAKq0YBnR3tW345KH9WGQmRWZQByCAVruDpTkTxh K8uTxwnfP4O8hikj7f8AbM7cZRalXrIyVK83J+bfbenw0tGYcOMLNosD+d2VPHtf2EUs/dF4ywQE RO6cpAzAisSgmpodidE2vJgMItkYyLQGqzfvXvG5z980VlPImHgHGC3jqkVSd24r4dOun6adoc6r X4fG9OOdSrnahyFuqrJNaW0J9bQu4e8nqK1A5Nx8PAaHySG6v+CFzBE9CfkE+2A/W8rOSUwhC0qz sxoAgqVA8/KmsqZyCVgTABddvkb2e2ktYRwhMkaQwqxHugb0bzJO9K9dWjXGcwXyi1wi4yv2CtLK TKe5k8VFe0ilimF1E4MaMNxxNF3Kin7tOTlKMdsTkp2Nxh1wl64+nEF13Mn9FRosbFO7SxPMGkj3 5x0JAHAbD+9qDztsPOPMyOfcQIkHXotEuf0ghjwVskUsNvQ5FyaBlLUkDulDxA60Os+mcpPIBuv3 dixxZIEHvWzfUKC0sbbsCyxrl8db9n4OK0ckktDGsixkk77qBpT3g7pxJ1MR+a7fhy3QB7f0S/av TqdZG1k6Ai0ElAKn79RGJCvHRX4pNqVrqzZRIqbnQUB36Ea8NFYhVLmWik+Px1ZUlolvIvWo8deD IBCWblvUfPV4A6oMgqRYkkeJ8NEiMKrKREr1ruNVIBVWX0xGhoPDw0FVIUYhrt+zUKoXX6eo1BXi FftMvmMcvGzvZoU5B+COePJa0JU7bV0MqNxCO2ff+QihSK/s4b2SNv8AMMWjlKV+U+2eJ+2mjiZH ep3A6q//AMzdt5aVZprU4y/kahlgJiWPYDkJFqd9+WrC0HUaqN46YXU75C2lkfETjO4njVradlE4 BAJIZdmpQ0J/Zqwi30n71baNNUOOVwyTva31nLgMnHVvaudo5OR3RlXrWtdXeUcEfchygAi1smS9 u5uLCWC4SKIQ2rwn2WHqDgoo2qD101Xe+hdVjIhVMjeLSKO9tDFc+Erco5mIrQMqgbnpU+ejmQJX jIHoquOFlPKba9ElpBxMEkrKrKDwHBQaqAuyjf4nrrxJ8QqjOFZa3vWYXCugBlk4IhCxkIgQ1KAB fT0UHf7TqhHeqmRUUaZG1tpJ5ZAsTuHtppa81hLmq+ApU15Hag1YEDVVDhfM3ctc2S2ttdKVYCN6 KC3AUklVagfiby+OiAghXdxqhVmk+StGma3V4kYxgQuRI/tjrQnY1p4fi1JiNFUwwrl9iLk2kElr IWkMZPCRd6AAgEg7nqOWgT48J9y85ASzc212nti4CxvKWQVbbkq8qff4aGOJtyCvCfal7PWF/jHZ LqIqQaF1YOlfLkhI/fo1dfaiBKdw5Nfjvp2ACsELnFd6aPFeVNlI1d15fVU68oUyRkkaqSvKcQmn w1XcvOssu/zbX5f/AD/J834vh5611EUVT8qL838+f8j5/lXr/h/s0PqqnVat2z/ot11+SL838roP l/8A3P7ur1dVg8r60a7c/wBPyHy/np+Z0/M/H8fLWTzfpH9w0QLeiUJPy81/9S5/y3y9B+X8PLTR /wCX4J4fVHwGqV8j/mrf/Jfkx/538v5R+VpkJ2Gh116Jptv8lb/5L8tv8h8vzfg/+L46CdeqFbr1 VWT5h/qPVPk/8X4Ph/e1PXoh/cieL/MP+e/H/nunQ9P7NLT1/RL3dNPgoLn5k/1bofyfl1av4fFe 6fyqWHp//u/v+zV/uXh/2IvZfMP9U/8Au9f+7QZ69EGz/tRW7/Pt+v5R/wA58/yt+X8f7/wrqI6F Dh1/L4JTxny3f+kfKv8Akvk+b/1P7NMXaDVaN2g1+Ktx/wCtR/l/lx/L8v4f3f2aWl9KVGnxTlJ/ mI/81+W/yfJ8x6/HVrOmmn2+KVOnRJndH+Vb/N/kx/5X5/zX/d/8746ij6hp8U5xNRpqdft9yUvp x8mc/wBP/wAnJ/qXXr+H4efxpq3uX8n1/UPo/PuWpyNY69fkjVj/AJ1f9I/LT/TfzPw9fhr1mn83 xSvK+k/V8UwW/wDqkX/1T+X0/wDLpC/6SsOz6SorrrH1+c/+Hw+fVaUTh6H7FF8T88nzfKf4/wAf LU2f8kfiiWaotZf5q4+75Pn+Tx/xeWqR0P5pGzTrqlyz/Muvm/Jl/L6fL+P/AOLTcPoTJ0C9C99/ 6f8ATv8A/wCLwP8A/Tk1me7f8kP7R+a7Tgf8Y8B8kCteg1lBPorD4aqVIV6Lw+zXhqiwUp+/r4de mrhEVK56H+3VRqhTS9f9f26JLVCkl246nU1oUlXX7tEVeisJ92okhlSL0/DoCHHRcf8As9dQvRXw ePTp9+olooC/Sfi6aEVElCevh49NXlqqrgdfDVlB0V3F/wCdT835h/l/n6jpqCrRTR9SPyIvyfyW /wBT/wA118P8Xnp4fSrWapU+n3+bb/Pdf/7f/L9R11Q6qkfgtDz/AOL8r/7/AOd4fv8ALV+nVCml O5/025+f8HT5PH5/jo9GqpLREO2/9KvevzL+Z8ny/h/xeWmp/SiH6Vayv+a/H+a35H+W/wAsn+w0 rP6lWeqFH/Vo/k6j875fx/J8f+zTPTqqVq/c/wCrT/N8035n535z/NqsfiiHVWMp8o/J+V+n+Y/B +V/+15fGujnRVn0QKb8xfyfnk+f5PmPy/wBmqIckDuv8u3y/JcfN8nzP83+H+7r3Yohos6zP+bb/ AC/Rf8t+X0/j56bjom46INL4dNWUKnJ83h46uFK5HXVivFW4vu/s0GSoVYHj06ag6qV//9k= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit Content-Location: http://www.timesofmalta.com/articles/addviewcount/206317 ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/googlebm.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAABiVBMVEX/ ///////+//b3///+/+Pv///3/+3w//f4/+b4/+Ho////9//2+v34+/To//b/+Ob2+uv/9vb/+Nn/ 8v//9O3n+P//8Pb38f/k9vbw8Pju7v/X8v/B9f/d6//g5vzS5//K6vnQ5f/h3+zN3PPT2fm/3vDE 2+PJ1/+81//K0/LK0tTCzv6v0vqqtsKjqc1vrO96pNZ+nulWtkqBmd9HuUpDuFBNtVJVszlvmulI tjlNs0U8tUSJj9lPrVUtt0CGj9B8j8dlhdhihKlXc7xGdMpCbttaaK8ibrkdaOcVa9IxYLg3W9Yi YNkVY88vW9gHY+gZX9sUYeEbXtEVXPYmW8sgXMohWOgfVvccWrEnU9bMLiLSKA/bJRrNKgDSJBnW IC8cSbDRHx3WHw3HIwAdQrTcGgDdGBIWP78xN7EkOrHOFBkcOLXLFA4lM7YXO5McOIzREAcjNZka MsYTM7oTMcUgLsUENrEpMHQOKssTLKAVKqooJosaJY8AJb0VH4AAIpYLFqQPEp8AE1b4EsImAAAA g3RSTlMA//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////zlNFpwAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAfdEVYdFNv ZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAFnRFWHRDcmVhdGlvbiBUaW1lADEw LzI3LzA3qwQZhAAAAPRJREFUGJVVisVWA0EQALunRzY7G2AIG4K7u4ZkcXd3CA7B3R2+nDweF+pY VTDVGOmItoSjrV64OdLpeTCZgobb6BaKDNImuApzRCKrYfDo+n60rkQlx2CCqez+mxwb7bKLh8zA JSxw6rlyuUTCokq/WYNhp+m8mCzlk1qjtGKwSG0nmjEthEEm9SmsiKFliyUq/ooDmBHzWybInMSF aKVuwiwNfPgxHSmpND+vwtqFcVn/1q0IWdXh81kX24AldO++ygnT0Cl4r+XHMM18uS+f7S5Tovq7 hu/AiCBy+16fbuOPe70h3IaxAMc/HNRmHbz/7P8A3skovTPZrowAAAAASUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/delicious.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURQAAAP///93d3QAA/+4iTdsAAAAa SURBVHjaYmCEAmYoYBggARhggoIBEgAIMADrEAGBe3e9DgAAAABJRU5ErkJggg== ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/facebook.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX/ ///////r7vRthLRheaxFYp47WZin0VggAAAAB3RSTlMA////////pX+m+wAAAAlwSFlzAAALEgAA CxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAWdEVY dENyZWF0aW9uIFRpbWUAMTAvMjcvMDerBBmEAAAAP0lEQVQImWMQhAIGkTQwcGQQgzASwYwURTEI I0kQykgUS0NlJApCpZIUhdRwqIEwRI2NjQ2FjQMRDLilMGcAAK4NITjs/OgbAAAAAElFTkSuQmCC ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/blogger.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMS8wOS8wN5dsNmMAAAAfdEVYdFNv ZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAABXklEQVQ4ja3TMUhbURTG8d9LtJE2 Di1ZiyBObcEUakULIiI4CkIJ7RQ7pIMV7OLs7KJDpw6mdHXp4iZih1LNYkTngriKdqilscbnkKTP p0khtB9cOOfA97/3nHtvEBZksYRR7WkTb4OwYAfZNs0NlRP/YIZsRywNcILsU569oqub6m/21thY pRuJOCEOOMH4C16+4869qP4kR98IH2dJxQFxXv8g08W4GTq7GHvD8HN+/Q0w+pqO+hbvc8xkWHjI 2c9a7cEE31Fp1ULyVhSPz9E/xe00nXXoQI6FDFsfKH9qAggvorh3qLauKpXm8SQuWgCCKx19+8rR IcmAakjmfgRstHQDUD2L4vVl9jdIJalUeTRGoQ44j4YQhAXhn6xnkPnP0SCb6bzC4ggHJVy/hd1t itOcHjc3nx5TzLNbanGC6y8xla4NNkhQ+cGXFcol7tJw/ZfPlFf7mu1qE/lLUOpd804EyQMAAAAA SUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/yahoomyweb.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAABy1BMVEX/ //+ov9SbxrfZtZmpu8DEtLOuube3s7i7sLvFrbS9rMW7o8+sq7XRl4nr6N7/zJn6t57///////j2 ///+/+/6//f//+rw////+P/n///o//X/9/fp/+Ld///b//n29vH19eLe/b7o9OXr8vT28dL/7OT5 7O727eL76Pr/7Mf26Mj26LD149ry5Mfy3/D83rzk3M7h3Nn/0r7d2Nn/06nO2uPs0rbd2Kjr0cL0 z7rV1NbN19XO1t7D2NTY0N7xzL/D1tvP09DXz9XE1s7lzM//xNXL1cPPztzUz8zP0cXB1MfPztfY yuTbyNf8wrfD0NXkyLTpv+vvxZT7wZz8vcXzu+DMycDowLz6tdDavsH6uIjkvZz2tpTlt6TxtKLi tqDusKa9u8T6r5Lwrp7zr2n5q2bxql3jpaTzoGDXo5rznWmuqo3DpX/kmk7wkXLsk2XdlG7SlYPP lHvajpbUk2LtjGb3gJ3xhmTlimfqdqrmflXgfXDxej/veDvudj/VeUrpcz/fcl7QdFHgbR/oZSb0 YhLnYUfrXlfQaRntXh/1WSr2VzjdVXvmUl7jWCnjWgzsUiTxURb6RxX1Qzv8RAD0PAPkIFPbHzbl GFCV3+iZAAAAmXRSTlMAEREREREREREREREREVVVVf////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////9HUVWK AAAACXBIWXMAABu8AAAbvAG6t6C7AAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3Jr cyA4tWjSeAAAAQZJREFUGJVj8PL28XZ2dnf38HD3jxVgYGBwE4QBYeG8cn4GBidBSXEgTxxIyORO zeJj8BWVUrI3svQLERIUUTSPM2bwFBHTKu2aMqnaJcI1NFDQg8FGUFBaNbizL1yvctqMHgNHBgdB CWFJ4ZgJFWpl04sNFTwYvMWFhWWF5fMntvemKwsLWjE4AQUEpYV1uycnyAlLCHsz2IpIS4sIC2o2 tBmJCwuKezPkpCbFpKjoZLROrAqQAKlo6o8yaTZTj45PzozUkBCxYmis0Q6qswAqBjtf1Juhvjat o0UfyBYRAolYMWQXFpQUhZn62FlbW9nZWSUyMHHyMrOyMHJzsbBxcHGx8wAAAjc5xrUk8K0AAAAA SUVORK5CYII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/digg.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX/ ///////u7u7d3d3MzMyqqqqZmZlnlUlYAAAAB3RSTlMA////////pX+m+wAAAAlwSFlzAAAK8AAA CvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAABjSURB VAiZbcyxDYAwDATAb0IfIzFALGWBQCZggRShjgt+/xEwCiUv63WNH/hN75c3B1rcgMWrSQYsyt1S 7Q61prXCZDeSDj2tlFKxkF2S0t8QJJUxoS84ghwOHwzrRP5A+nE884cU3Mijh2MAAAAASUVORK5C YII= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/reddit.png iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAABHVBMVEX/ ///////29vbMzMy+vr6ZmZmFhYRKSkr////29vaZmZn////f39+Tk5OFhYRsbGyFhYRSUlL///++ vr6lpaWZmZlzc3NsbGxSUlL////f39+0tLT////2/P7W1taZmZmFhYR7e3tzc3PFxcWZmZnW1tat ra20tLSZmZlzc3PW1tb29vaFhYRSUlI6Ojr////2/P7/+PPv9//y9fbt8vTx8fH/7ujp7/L/49rm 5ubb6Oz/39Hf39/T3+T/08L/1L3W1tbMzMz/wav/upvFxcX/t5m+wcL/s5O+vr60tLT/nn+tra3/ mHWlpaX/h2iZmZmTk5ONjY2FhYT/ZTp7e3tzc3NsbGxmZmZbW1v/MAhSUlL/IQRKSko6OjozMzPm l/tiAAAAX3RSTlMAERERERERESIiIjMzREREVVVmZmZmZmZmd3d3iIiIiIiIiKqqu7vMzMzd7u7u 7v///////////////////////////////////////////////////////////////wZMOQMAAAAJ cEhZcwAACxIAAAsSAdLdfvwAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1 aNJ4AAAA3klEQVQYlTWOZ1fCQBREX+w9ih0Lii0oOqLYERJdkBjXl10XiFj+/88weyLz5Z47X2aI /uPrdtDp+UMDn9TsnUmWw4PipLxOS2yOHCtObnm1fLqwmMvnU9sq7nqsJDPHpZW1nU2KVNJt3Z8D F49hYmJBHa3vKi8PQL0JXxtFsn+F5693VD4+G2h9Cxo3wO1bHXh6vUZNjdKYEsDNJVCtAixHyDns Bgg4jOIaQnNgf+xrKdLZSLDZy14Wfk2UJvnZznyq1CvMue5Gu+/NWJ841jxr6WekaV/JeUvB0iX6 A/zQLBeqK/vVAAAAAElFTkSuQmCC ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/socialnetworking/stumbleupon.png iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAMAAADH72RtAAAAA3NCSVQICAjb4U/gAAABKVBMVEX/ ///////4/v71/vjt/P3r/fDq/e/j9/3P+9zf8eXE+My/9Mq/6fOv4/aY2u7MzMyh0uyizebFxcV2 4YSC3Yx/0O1623o08jlm3HOducgo7ChH3kcZ6xk43z2urq51wnUT6BNvt9og2iQO3w48ykoL3wxD yUNZsdkJ2QkizDJTrNcsxTWZmZksxDYC1AIfxi4owDUKygwAzAAavikTwSMDyQgKwgsBxQJOm8KK iooDvQUUtSIPthgAvACGhoYvlcQAtAFihZ8ArAAXi8NxcXENh8QXg7kfgLRYcIgRf7Qge61YbYIV eK0QdqgId7IBc7sKbrMAbrYBbqgGZqoAaK0AYqoFXZ8AXKAIWZYhVIEAWaUWU4cAU5wAUpUHTpAK TI0WSX4ASpIKSIdItKVXAAAAY3RSTlMA//////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////+Zh29aAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21l ZGlhIEZpcmV3b3JrcyA4tWjSeAAAACx0RVh0Q3JlYXRpb24gVGltZQBUdWUgMTMgTWFyIDIwMDcg MTA6MTY6MTcgLTA1MDBlGur8AAAAw0lEQVQYlWNgwAFkFVSlxZD44jLKGnp6eob8MAEpINdIz8jI llMIIqBkbqKvqalpam7LKgkRsuJmYmFhYeRwcGATdAQJqGkzagUEB1swGjuxCkbKAUXMbJjZedVj vRgNnNgEY3VAIk76wlxMPu6Mug5sArGWQBF5Y2NrCUZfPyYRFSbFaDuQQUyMjEx8UVGiTEw8gR5g u+zdPINiQqNCXJ3Dk1wgDvIPBIPQmDgPmKPDYsLDo6Ji4uECQBCRmJjgjSsYAPLaHsA76IKqAAAA AElFTkSuQmCC ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.timesofmalta.com/img/sudoku_icon.jpg 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 HnwH/9k= ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.timesofmalta.com/css/tom_v2.css * { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: Arial, = sans-serif; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none } BODY { BACKGROUND-COLOR: #ffffff } .png { BEHAVIOR: url(/css/iepngfix.htc) } HR { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: #a2a2a2; = LEFT: 5px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 530px; COLOR: #a2a2a2; = POSITION: relative; HEIGHT: 1px; BORDER-RIGHT-WIDTH: 0px } #print_disclaimer { DISPLAY: none } #container { BORDER-RIGHT: gray 0px solid; PADDING-RIGHT: 0px; BORDER-TOP: gray 0px = solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 10px; = BORDER-LEFT: gray 0px solid; WIDTH: 1000px; PADDING-TOP: 0px; = BORDER-BOTTOM: gray 0px solid } #header { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; = BORDER-LEFT: #000000 0px solid; BORDER-BOTTOM: #000000 0px solid } #content { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; FLOAT: = left; BORDER-LEFT: #000000 0px solid; WIDTH: 546px; COLOR: #333333; = BORDER-BOTTOM: #000000 0px solid } #navigationbar { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; FLOAT: = left; BORDER-LEFT: #000000 0px solid; WIDTH: 142px; BORDER-BOTTOM: = #000000 0px solid } #featuresbar { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; FLOAT: = left; BORDER-LEFT: #000000 0px solid; WIDTH: 300px; BORDER-BOTTOM: = #000000 0px solid } #features { =09 } #sections_navigationpanel_joined { LEFT: -6px; MARGIN: 6px 0px; WIDTH: 306px; POSITION: relative } #sections_navigationpanel P { MARGIN: 10px } #sections_navigationpanel .article_stats_list LI { MARGIN-BOTTOM: 6px; MARGIN-LEFT: 15px } DIV#funpanel { WIDTH: 147px } DIV#pollpanel { FLOAT: right; MARGIN: 0px; WIDTH: 147px; COLOR: #666666 } #pollpanel .submit { FONT-WEIGHT: bold; BACKGROUND: #555555; MARGIN-BOTTOM: 5px; WIDTH: = 137px; COLOR: #eaeaea; HEIGHT: 18px } #pollpanel P { FONT-SIZE: 12px; COLOR: #666666 } #pollpanel B { FONT-SIZE: 12px; COLOR: #666666 } #pollpanel I { FONT-SIZE: 12px; COLOR: #666666 } #pollpanel UL { LIST-STYLE-TYPE: none } #pollpanel LI { FONT-SIZE: 0.95em; MARGIN-BOTTOM: 4px; LIST-STYLE-TYPE: none } TD { FONT-SIZE: 0.95em; MARGIN-BOTTOM: 4px; LIST-STYLE-TYPE: none } #pollpanel TD { FONT-SIZE: 11px } #pollpanel .question { FONT-SIZE: 12px; COLOR: #555555 } #advert1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px 3px; WIDTH: 728px; PADDING-TOP: 0px; HEIGHT: 90px } #quickinfo { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; FLOAT: = left; MARGIN: 0px 3px; OVERFLOW: hidden; BORDER-LEFT: #000000 0px solid; = WIDTH: 113px; BORDER-BOTTOM: #000000 0px solid } #careers_content H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } #careers_content .title { FONT-SIZE: 14px } #careers_content IMG { MARGIN-BOTTOM: 100px; MARGIN-LEFT: 50px } #careers_content .date { FONT-SIZE: 0.95em; COLOR: #666666 } #footer A { FONT-SIZE: 11px } #footer { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 20px; WIDTH: 990px; PADDING-TOP: 0px; TEXT-ALIGN: = center } #footer P { FONT-SIZE: 11px; MARGIN: 0px 0px 0px 140px; COLOR: #888888; TEXT-ALIGN: = left } #footer .divider { COLOR: #cccccc } #tomlogo { FLOAT: left; MARGIN: 0px 3px 0px 1px; WIDTH: 134px; HEIGHT: 90px } #advert2 { MARGIN: 0px } #advert3 { LEFT: 1004px; WIDTH: 120px; POSITION: absolute; TOP: 10px; HEIGHT: = 600px } #advert4 { MARGIN-LEFT: auto; MARGIN-RIGHT: auto; TEXT-ALIGN: center } #featuresbar .roundedDiv { MARGIN-RIGHT: 0px } #featuresbar P { FONT-SIZE: 11px; COLOR: #aaaaaa } #funpanel P { FONT-SIZE: 11px; COLOR: #aaaaaa } #pollpanel P { FONT-SIZE: 11px; COLOR: #aaaaaa } #pollpanel H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #adsense_panel { TEXT-ALIGN: center } #adsense_panel IMG { MARGIN-BOTTOM: 5px } #weatherpanel * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; COLOR: #eaeaea; LINE-HEIGHT: 11px; PADDING-TOP: 0px } #weatherpanel TABLE { MARGIN-LEFT: 3px } #weatherpanel .temperature { FONT-WEIGHT: bold; FONT-SIZE: 20px; LINE-HEIGHT: 20px } #overlay { BACKGROUND: #000000; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: = 0px; HEIGHT: 100%; opacity: 0.75 } #prevnext_navigation LI { FONT-SIZE: 11px; VERTICAL-ALIGN: top; MARGIN-RIGHT: 10px; = LIST-STYLE-TYPE: none } #prevnext_navigation A { FONT-SIZE: 11px } #prevnext_navigation B { FONT-SIZE: 11px } #prevnext_navigation I { FONT-SIZE: 11px } #socialnetworking { BORDER-RIGHT: #eaeaea 1px solid; BORDER-TOP: #eaeaea 1px solid; = OVERFLOW: auto; BORDER-LEFT: #eaeaea 1px solid; BORDER-BOTTOM: #eaeaea = 1px solid } #socialnetworking LI { FONT-SIZE: 11px; FLOAT: left; VERTICAL-ALIGN: bottom; MARGIN-RIGHT: = 10px; LIST-STYLE-TYPE: none } #socialnetworking B { FONT-SIZE: 11px } #socialnetworking A { FONT-SIZE: 11px } #socialnetworking IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FLOAT: left; = BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px } DIV#firstarticle_div { MARGIN-BOTTOM: 10px; OVERFLOW: auto; WIDTH: 530px } DIV#firstarticle_div IMG { FLOAT: right; MARGIN-BOTTOM: 15px; MARGIN-LEFT: 15px } DIV#article * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } DIV#article P { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } DIV#article UL { MARGIN-LEFT: 20px } DIV#article TABLE { BORDER-COLLAPSE: collapse } DIV#article TABLE TD { BORDER-RIGHT: #d2d2d2 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #d2d2d2 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: = #d2d2d2 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #d2d2d2 1px solid } #refine_search_div { BACKGROUND: #bababa; MARGIN: 10px 0px } .submit_button { BORDER-RIGHT: #eaeaea 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #eaeaea 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: = #eaeaea 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #eaeaea 1px solid } A.current_issue_link { COLOR: #cc0000 } A.current_issue_link:visited { COLOR: #cc0000 } DIV#article I { =09 } DIV#article H3 { MARGIN-LEFT: 5px; FONT-STYLE: italic } DIV#article H1 { MARGIN-LEFT: 5px } DIV#article H2 { MARGIN-TOP: 5px; MARGIN-LEFT: 5px } DIV#article H2 I { FONT-SIZE: 16px } DIV#article A { FONT-WEIGHT: bold; FONT-SIZE: 1em } DIV#article A:hover { FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV#section_navigation_title { BACKGROUND: #bababa; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 100%; = HEIGHT: 21px } DIV#section_navigation_title H2 { FONT-SIZE: 14px; MARGIN: 3px 0px 0px 5px; COLOR: #ffffff } DIV#sections_navigationpanel A.link { FONT-WEIGHT: bold; FONT-SIZE: 11px; MARGIN: 10px 5px 0px 0px; COLOR: = #666666 } DIV#sections_navigationpanel .separator { MARGIN: 10px 0px 0px 5px; WIDTH: 290px; PADDING-TOP: 5px; TEXT-ALIGN: = right } DIV#sections_navigationpanel .cloudlink { FONT-WEIGHT: bold; FONT-SIZE: 11px; MARGIN: 0px 5px 0px 0px; COLOR: = #666666; LINE-HEIGHT: 17px } .link { FONT-WEIGHT: bold; FONT-SIZE: 11px; MARGIN: 10px 5px 0px 0px; COLOR: = #666666 } DIV#article_toolbar { BACKGROUND: #bababa; MARGIN: 0px; OVERFLOW: auto; WIDTH: 100%; COLOR: = #888888 } DIV#article_toolbar .socialbookmarks { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FLOAT: left; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN-LEFT: 5px; PADDING-TOP: 0px; = BORDER-RIGHT-WIDTH: 0px } DIV#article_toolbar .socialbookmarks IMG { MARGIN-RIGHT: 7px } DIV#article_toolbar UL { MARGIN-LEFT: 0px } DIV#article_toolbar LI { MARGIN-TOP: 1px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 11px; = FLOAT: right; BORDER-LEFT: #a2a2a2 1px solid; MARGIN-RIGHT: 5px; = LIST-STYLE-TYPE: none; HEIGHT: 20px } DIV#article_toolbar A { FONT-SIZE: 11px; COLOR: #777777 } DIV#article_toolbar A:hover { COLOR: #111111; TEXT-DECORATION: none } DIV#article_toolbar IMG { BORDER-TOP-WIDTH: 0px; MARGIN-TOP: 1px; BORDER-LEFT-WIDTH: 0px; FLOAT: = left; BORDER-BOTTOM-WIDTH: 0px; MARGIN-RIGHT: 3px; BORDER-RIGHT-WIDTH: = 0px } #email_article_panel { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = BACKGROUND: url(images/gradient_bababa.gif) #a2a2a2; OVERFLOW: auto; = BORDER-LEFT: #a2a2a2 1px solid; COLOR: #333333; BORDER-BOTTOM: #a2a2a2 = 1px solid } #email_article_panel INPUT { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 200px; BORDER-BOTTOM: #a2a2a2 1px = solid } TEXTAREA { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 200px; BORDER-BOTTOM: #a2a2a2 1px = solid } #email_article_panel .submit { MARGIN-LEFT: 5px } #comment_article_panel { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = BACKGROUND: url(images/gradient_bababa.gif) #a2a2a2; OVERFLOW: auto; = BORDER-LEFT: #a2a2a2 1px solid; COLOR: #333333; BORDER-BOTTOM: #a2a2a2 = 1px solid } #comment_article_panel INPUT { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 200px; BORDER-BOTTOM: #a2a2a2 1px = solid } TEXTAREA { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 200px; BORDER-BOTTOM: #a2a2a2 1px = solid } #comment_article_panel .submit { MARGIN-LEFT: 5px } #classifieds_table { OVERFLOW: auto; WIDTH: 530px } #classifieds_table .section_title { PADDING-RIGHT: 0px; PADDING-LEFT: 5px; BACKGROUND: #d2d2d2; FLOAT: = left; PADDING-BOTTOM: 0px; MARGIN: 1px 0px 0px 1px; WIDTH: 258px; = PADDING-TOP: 5px; HEIGHT: 20px } #classifieds_table .section_title:hover { BACKGROUND: #bababa } #classifieds_table A { FONT-WEIGHT: bold; TEXT-DECORATION: none } .classified_snippet { MARGIN-BOTTOM: 10px } H1 { FONT-SIZE: 20px; COLOR: #333333 } H1 I { FONT-SIZE: 20px; COLOR: #333333 } H2 { FONT-SIZE: 16px; MARGIN-BOTTOM: 10px; COLOR: #555555 } P { MARGIN-BOTTOM: 10px } .errors { FONT-WEIGHT: bold; COLOR: #cc0000 } .highlight { FONT-WEIGHT: bold; COLOR: #cc0000 } A { COLOR: #444444 } A:hover { COLOR: #000000 } A:visited { COLOR: #444444 } .articledate { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 4px; COLOR: #666666; PADDING-TOP: 0px } .articleauthor { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 4px; COLOR: #666666; PADDING-TOP: 0px } .author { FONT-SIZE: 0.9em } .clear { CLEAR: both } #newspaper_publication_date { MARGIN-TOP: 3px; FONT-SIZE: 11px; FLOAT: right } #publication_date { MARGIN-TOP: 3px; FONT-SIZE: 11px; FLOAT: right } .padded_content { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } DIV.homepanel * { FONT-SIZE: 11px } .homepanel A:hover { TEXT-DECORATION: none } .homepanel .title { FONT-SIZE: 10px; COLOR: #a2a2a2; FONT-VARIANT: small-caps } .homepanel .title A { FONT-SIZE: 10px; COLOR: #a2a2a2; FONT-VARIANT: small-caps } .homepanel H2 { FONT-SIZE: 14px; MARGIN: 0px; COLOR: #555555; LINE-HEIGHT: 1em } .homepanel H1 { FONT-SIZE: 18px; MARGIN: 0px; COLOR: #333333 } .homepanel H1 A { FONT-SIZE: 18px; MARGIN: 0px; COLOR: #333333 } .homepanel H1 I { FONT-SIZE: 18px } .homepanel .headline { FONT-SIZE: 17px; MARGIN: 0px } .homepanel .time { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; COLOR: #a2a2a2; PADDING-TOP: 0px } .time { FONT-SIZE: 11px; COLOR: #666666 } #tom_left_navigation * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 11px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } #tom_left_navigation P { MARGIN-TOP: 2px; PADDING-LEFT: 5px; PADDING-BOTTOM: 3px; BORDER-BOTTOM: = #ffffff 1px solid } #tom_left_navigation A { COLOR: #666666; TEXT-DECORATION: none } #tom_left_navigation A:hover { COLOR: #cc0000; TEXT-DECORATION: none } #tom_left_navigation P:hover { BACKGROUND-COLOR: #dddddd } #tom_left_navigation A.active { COLOR: #cc0000 } #tom_left_navigation .title { MARGIN-TOP: 5px; BACKGROUND: #a2a2a2; COLOR: #ffffff; PADDING-TOP: 2px } #tom_left_navigation .title A { COLOR: #ffffff } #tom_left_navigation .title A:hover { COLOR: #cc0000 } #tom_left_navigation .title:first-child { MARGIN-TOP: 0px } #tom_left_navigation .title INPUT { WIDTH: 125px } #tom_left_navigation P.title:hover { BACKGROUND: #a2a2a2 } #home_article_grid { MARGIN: 5px 0px 10px } .article_grid { =09 } .article_grid TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; = PADDING-TOP: 0px } #home_article_grid * { PADDING-RIGHT: 5px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; PADDING-TOP: 2px } DIV#exchangerates TABLE { MARGIN-LEFT: auto; WIDTH: 400px; MARGIN-RIGHT: auto } DIV#exchangerates TD { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 12px; PADDING-BOTTOM: = 2px; PADDING-TOP: 2px } DIV#exchangerates .evenrow { BACKGROUND-COLOR: #d2d2d2 } DIV#mediapanel { MARGIN-TOP: 5px; BACKGROUND: #dddddd; WIDTH: 100%; TEXT-ALIGN: center } DIV#mediapanel P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } DIV#mediapanel IMG { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } DIV#articleDiv { MARGIN: 10px 0px } DIV#articleDiv H4 { MARGIN-LEFT: 5px } DIV#articleDiv TABLE { MARGIN-LEFT: 5px } DIV#articleDiv TABLE TD { FONT-SIZE: 11px } DIV#mediapanel { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: = 100%; PADDING-TOP: 0px } CAPTION { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: = 100%; PADDING-TOP: 0px } DIV#caption { BACKGROUND: #333333; FILTER: alpha(opacity=3D50); MARGIN-LEFT: auto; = MARGIN-RIGHT: auto; opacity: 0.50 } DIV#caption P { FONT-SIZE: 10px; MARGIN: 0px 2px; COLOR: #ffffff; TEXT-ALIGN: left } DIV#caption A { COLOR: #ffffff } DIV#caption A:hover { COLOR: #ffffff; TEXT-DECORATION: underline } .all_small_text * { FONT-SIZE: 0.9em } .all_medium_text * { FONT-SIZE: 1em } .all_large_text * { FONT-SIZE: 1.2em } .small_text { FONT-SIZE: 0.8em } .horizontal_tabs * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .horizontal_tabs UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; HEIGHT: 20px } .horizontal_tabs UL LI { BORDER-RIGHT: #000 0px solid; BORDER-TOP: #000 0px solid; FLOAT: left; = VERTICAL-ALIGN: bottom; BORDER-LEFT: #000 0px solid; MARGIN-RIGHT: 0px; = BORDER-BOTTOM: #000 0px solid; HEIGHT: 20px; TEXT-ALIGN: center } .horizontal_tabs UL LI A { PADDING-RIGHT: 6px; PADDING-LEFT: 6px; FONT-WEIGHT: bold; FONT-SIZE: = 11px; PADDING-BOTTOM: 6px; BORDER-LEFT: #eeeeee 1px solid; PADDING-TOP: = 6px; BACKGROUND-COLOR: #bababa } .horizontal_tabs UL LI A:hover { TEXT-DECORATION: none } .horizontal_tabs UL LI A.active { BACKGROUND-COLOR: #eaeaea } .classifiedsnippet { FONT-WEIGHT: bold; MARGIN-BOTTOM: 4px; MARGIN-LEFT: 6px; COLOR: #666666 } .classifiedsnippet A { FONT-SIZE: 11px; COLOR: #666666 } .classified_panel H2 { FONT-SIZE: 12px } .classified_snippet P { FONT-SIZE: 11px } A.return_link { FONT-WEIGHT: bold; MARGIN-LEFT: 500px } A.return_link:hover { COLOR: #000000 } A.blog_link { FONT-WEIGHT: bold; MARGIN-LEFT: 375px } A.blog_link:hover { COLOR: #000000 } .vertical_tab_content H2 { MARGIN-BOTTOM: 10px } .vertical_tab_content .right { FLOAT: right } .vertical_tab_content LABEL { DISPLAY: none; FLOAT: left; MARGIN-RIGHT: 5px } .vertical_tab_content .textbox { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; FLOAT: = left; BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 150px; BORDER-BOTTOM: = #a2a2a2 1px solid; HEIGHT: 18px } .vertical_tab_content .submit { BORDER-RIGHT: #a2a2a2 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: = #a2a2a2 1px solid; PADDING-LEFT: 3px; FLOAT: right; PADDING-BOTTOM: 3px; = BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 65px; PADDING-TOP: 3px; = BORDER-BOTTOM: #a2a2a2 1px solid; HEIGHT: 18px } .vertical_tab_content LEGEND { DISPLAY: none } .vertical_tab_content SELECT { BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; = MARGIN-LEFT: 5px; BORDER-LEFT: #a2a2a2 1px solid; WIDTH: 60px; = BORDER-BOTTOM: #a2a2a2 1px solid } .vertical_tab_content .checkbox { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 5px = 0px 0px; PADDING-TOP: 0px } .vertical_tab_content .radio { MARGIN-TOP: 4px; WIDTH: 10px } .vertical_tab_content UL LI { FLOAT: left; MARGIN-RIGHT: 5px } .vertical_tabs { BACKGROUND: #d2d2d2; OVERFLOW: hidden; HEIGHT: 150px } .vertical_tabs A.active { BACKGROUND: #d2d2d2 } .vertical_tabs LI { LIST-STYLE-TYPE: none } .vertical_tabs LI A { PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: = bold; FONT-SIZE: 11px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px; = BORDER-BOTTOM: #d2d2d2 1px solid } .vertical_tabs A:hover { COLOR: #cc0000; TEXT-DECORATION: none } .vertical_tabs LI:first-child { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } .vertical_tabs DIV.tabs { BACKGROUND: #bababa; FLOAT: right; WIDTH: 125px; HEIGHT: 150px } .nomargins { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .article_stats_list LI { MARGIN-TOP: 5px; MARGIN-LEFT: 5px; COLOR: #666666; LIST-STYLE-TYPE: = none } .article_stats_list LI A { FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #666666 } .roundedDiv { MARGIN: 6px 6px 6px 0px } .roundedDivRed { MARGIN: 6px 6px 6px 0px } .roundedDivContent { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } .roundedDivContentNoPadding { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .roundedDivBlue .roundedDivBlueContent { BACKGROUND-COLOR: #eaeaff } .header { HEIGHT: 5px; TEXT-ALIGN: left } .footer { TEXT-ALIGN: left } .floatright { FLOAT: right } .header UL { MARGIN: 0px; LIST-STYLE-TYPE: none; HEIGHT: 5px } .header UL LI { FLOAT: right; WIDTH: 5px; LINE-HEIGHT: 5px } .footer UL { MARGIN: 0px; LIST-STYLE-TYPE: none; HEIGHT: 5px } .footer UL LI { FLOAT: right; WIDTH: 5px; LINE-HEIGHT: 5px; HEIGHT: 5px } .roundedDivBlue .header UL { BACKGROUND: url(images/corners_blue.gif) no-repeat -5px -5px; MARGIN: = 0px; LIST-STYLE-TYPE: none; HEIGHT: 5px } .roundedDivBlue .header UL LI { BACKGROUND: url(images/corners_blue.gif) no-repeat 0px -5px; FLOAT: = right; WIDTH: 5px; LINE-HEIGHT: 5px } .roundedDivBlue .footer UL { BACKGROUND: url(images/corners_blue.gif) no-repeat -5px 0px; MARGIN: = 0px; LIST-STYLE-TYPE: none; HEIGHT: 5px } .roundedDivBlue .footer UL LI { BACKGROUND: url(images/corners_blue.gif) no-repeat 0px 0px; FLOAT: = right; WIDTH: 5px; LINE-HEIGHT: 5px; HEIGHT: 5px } DIV.image_thumb { FONT-SIZE: 10px; BACKGROUND: url(image_content_panel.gif); FLOAT: = right; MARGIN: 3px 5px 0px; OVERFLOW: hidden; WIDTH: 100px; HEIGHT: = 100px; TEXT-ALIGN: center } DIV.image_thumb IMG { MARGIN-TOP: 6px; OVERFLOW: hidden; WIDTH: 90px; HEIGHT: 90px } DIV#login_panel * { FONT-SIZE: 11px } .partner_logo { MARGIN-TOP: 5px } .preferred_partner_box { FONT-SIZE: 10px; FLOAT: left; MARGIN: 0px 0px 10px 10px; WIDTH: 100px; = COLOR: #666666 } .agencyprofile { MARGIN-TOP: 10px } .agencyprofile * { FONT-SIZE: 11px; MARGIN-LEFT: 200px } .joblist { MARGIN-TOP: 20px; MARGIN-LEFT: 200px } .joblist P { FONT-SIZE: 11px; MARGIN: 0px 0px 4px } .joblist A { FONT-SIZE: 11px; MARGIN: 0px 0px 4px } #ticker2 { BACKGROUND: #c0504d; MARGIN: 5px 0px 10px; WIDTH: 530px; COLOR: = #ffffff; HEIGHT: 25px } #tickerText2 IMG { FLOAT: left; MARGIN: 5px 10px 0px } #tickerText2 A { PADDING-RIGHT: 5px; MARGIN-TOP: 10px; PADDING-LEFT: 5px; FONT-WEIGHT: = bold; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; COLOR: #ffffff; LINE-HEIGHT: = 28px; PADDING-TOP: 5px } .tickerTextSmall { FONT-SIZE: 0.85em } A.careers_home_link { MARGIN-TOP: 8px; FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: right } #article A.careers_home_link { MARGIN-TOP: 8px; FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: right } A.careers_home_link { MARGIN-TOP: 8px; FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: right } #article A.careers_home_link { MARGIN-TOP: 8px; FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: right; = MARGIN-RIGHT: 5px } .comments_panel .roundedDivContent { BACKGROUND: #eaeaff } .comment_div .title { BACKGROUND: #d2d2ff } .comment_div .title .time { FONT-SIZE: 11px; COLOR: #888888 } .comment_div .comment { MARGIN-BOTTOM: 15px } .backissues H3 { MARGIN-TOP: 12px } .christmaspanel { MARGIN-LEFT: auto; WIDTH: 600px; MARGIN-RIGHT: auto } #excessluggage { LINE-HEIGHT: 20px } #excessluggage INPUT { MARGIN-TOP: 5px; LEFT: 350px; POSITION: absolute } #excessluggage SELECT { MARGIN-TOP: 5px; LEFT: 350px; POSITION: absolute } #excessluggage INPUT.checkbox { =09 } .sIFR-flash { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: visible! important; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } .sIFR-replaced { VISIBILITY: visible! important } .sIFR-ignore { VISIBILITY: visible! important } .sIFR-alternate { DISPLAY: block; LEFT: 0px; OVERFLOW: hidden; WIDTH: 0px; POSITION: = absolute; TOP: 0px; HEIGHT: 0px } .sIFR-replaced DIV.sIFR-fixfocus { PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; FLOAT: none; PADDING-BOTTOM: = 0pt; MARGIN: 0pt; OVERFLOW: auto; PADDING-TOP: 0pt; LETTER-SPACING: 0px } .sIFR-active H1 { FONT-SIZE: 18px; VISIBILITY: hidden; LINE-HEIGHT: 1em; FONT-FAMILY: = Verdana } .sIFR-active H2 { FONT-SIZE: 14px; VISIBILITY: hidden; LINE-HEIGHT: 1em; FONT-FAMILY: = Verdana } TABLE.cake-sql-log { PADDING-RIGHT: 20px; PADDING-LEFT: 20px; FONT-SIZE: 9px; BACKGROUND: = #333333; FLOAT: left; PADDING-BOTTOM: 20px; MARGIN: 0px 0px 10px 10px; = WIDTH: 1000px; COLOR: #cccccc; PADDING-TOP: 5px; opacity: 0.9 } .cake-sql-log TBODY { FONT-SIZE: 9px } THEAD { FONT-SIZE: 9px } TD { FONT-SIZE: 9px } TH { FONT-SIZE: 9px } TR { FONT-SIZE: 9px } CAPTION { FONT-SIZE: 9px } .cake-sql-log TD { BORDER-RIGHT: #444444 1px solid; BORDER-TOP: #444444 1px solid; = BORDER-LEFT: #444444 1px solid; BORDER-BOTTOM: #444444 1px solid } .cake-sql-log CAPTION { FONT-WEIGHT: bold; BACKGROUND: #ffffff; COLOR: #000000 } .debug_timer { FONT-WEIGHT: bold; FONT-SIZE: 9px; RIGHT: 0px; BACKGROUND: #cc0000; = COLOR: #ffffff; POSITION: absolute; TOP: 15px } ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.timesofmalta.com/css/tom_v2_print.css * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: Arial, sans-serif } BODY { BACKGROUND-COLOR: rgb(255,255,255) } #print_disclaimer { FONT-SIZE: 9px } #header { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; = BORDER-LEFT: #000000 0px solid; BORDER-BOTTOM: #000000 0px solid } #content { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; FLOAT: = left; BORDER-LEFT: #000000 0px solid; COLOR: #333333; BORDER-BOTTOM: = #000000 0px solid } #navigationbar { DISPLAY: none } #featuresbar { DISPLAY: none } #pollsbar { DISPLAY: none } #funbar { DISPLAY: none } #advert1 { DISPLAY: none } #quickinfo { DISPLAY: none } #footer { DISPLAY: none } #tomlogo { FLOAT: left; MARGIN: 0px 3px 0px 1px; WIDTH: 89px; HEIGHT: 60px } #tomlogo IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; WIDTH: 89px; HEIGHT: 60px; BORDER-RIGHT-WIDTH: 0px } #advert2 { DISPLAY: none } #advert3 { DISPLAY: none } #prevnext_navigation { DISPLAY: none } #overlay { BACKGROUND: #000000; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: = 0px; HEIGHT: 100%; opacity: 0.75 } #socialnetworking { DISPLAY: none } DIV#article * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } DIV#article P { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } DIV#article H1 { MARGIN-LEFT: 5px } DIV#article_toolbar { DISPLAY: none } #mediapanel { FLOAT: right } .caption { FONT-WEIGHT: bold; FONT-SIZE: 10px } H1 { FONT-SIZE: 18px } .sIFR-flash { VISIBILITY: visible! important; MARGIN: 0px } .sIFR-replaced { VISIBILITY: visible! important } SPAN.sIFR-alternate { DISPLAY: block; LEFT: 0px; OVERFLOW: hidden; WIDTH: 0px; POSITION: = absolute; TOP: 0px; HEIGHT: 0px } .sIFR-flash + DIV[adblocktab=3Dtrue] { DISPLAY: none! important } .sIFR-hasFlash H1 { VISIBILITY: hidden } .sIFR-hasFlash H2 { VISIBILITY: hidden; LETTER-SPACING: -9px } .sIFR-hasFlash H3 { FONT-SIZE: 25px; VISIBILITY: hidden; LETTER-SPACING: -6px } .sIFR-hasFlash H4 { FONT-SIZE: 21px; VISIBILITY: hidden; LETTER-SPACING: -5px } .sIFR-hasFlash H5#pullquote { FONT-SIZE: 24px; VISIBILITY: hidden; LETTER-SPACING: -4px } .cakeSqlLog { DISPLAY: none } .debug_timer { DISPLAY: none } ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.timesofmalta.com/css/glider.css DIV.scroller { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 0px solid; = BACKGROUND: #d2d2d2; MARGIN-BOTTOM: 10px; MARGIN-LEFT: 7px; OVERFLOW: = hidden; BORDER-LEFT: #000000 0px solid; WIDTH: 400px; BORDER-BOTTOM: = #000000 0px solid; HEIGHT: 150px } DIV.scroller DIV.section { FLOAT: left; OVERFLOW: hidden; WIDTH: 400px; HEIGHT: 150px } DIV.scroller DIV.content { WIDTH: 10000px } DIV.controls { MARGIN-LEFT: 10px } DIV.controls IMG { MARGIN: 4px 0px 0px 3px } DIV.glider_thumb { FONT-SIZE: 10px; BACKGROUND: url(carousel_content_panel.gif); FLOAT: = left; MARGIN: 3px 5px 0px; OVERFLOW: hidden; WIDTH: 120px; HEIGHT: = 125px; TEXT-ALIGN: center } DIV.glider_thumb_highlight { FONT-SIZE: 10px; BACKGROUND: url(carousel_content_panel_red.gif); = FLOAT: left; MARGIN: 3px 5px 0px; OVERFLOW: hidden; WIDTH: 120px; = HEIGHT: 125px; TEXT-ALIGN: center } DIV.glider_thumb IMG { MARGIN-TOP: 6px; OVERFLOW: hidden; WIDTH: 90px; HEIGHT: 90px } DIV.glider_thumb_highlight IMG { MARGIN-TOP: 6px; OVERFLOW: hidden; WIDTH: 90px; HEIGHT: 90px } DIV.glider_thumb A { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } DIV.glider_thumb_highlight A { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } DIV.glider_caption { FONT-SIZE: 10px; MARGIN-LEFT: 10px; WIDTH: 100px } ------=_NextPart_000_0098_01C87095.F9E48440 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.timesofmalta.com/js/prototype.js /* Prototype JavaScript framework, version 1.6.0.2=0A= * (c) 2005-2008 Sam Stephenson=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://www.prototypejs.org/=0A= *=0A= = *------------------------------------------------------------------------= --*/=0A= =0A= var Prototype =3D {=0A= Version: '1.6.0.2',=0A= =0A= Browser: {=0A= IE: !!(window.attachEvent && !window.opera),=0A= Opera: !!window.opera,=0A= WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A= Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A= MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A= },=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=0A= ElementExtensions: !!window.HTMLElement,=0A= SpecificElementExtensions:=0A= document.createElement('div').__proto__ &&=0A= document.createElement('div').__proto__ !=3D=3D=0A= document.createElement('form').__proto__=0A= },=0A= =0A= ScriptFragment: ']*>([\\S\\s]*?)<\/script>',=0A= JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A= =0A= emptyFunction: function() { },=0A= K: function(x) { return x }=0A= };=0A= =0A= if (Prototype.Browser.MobileSafari)=0A= Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A= =0A= =0A= /* Based on Alex Arnell's inheritance implementation. */=0A= var Class =3D {=0A= create: function() {=0A= var parent =3D null, properties =3D $A(arguments);=0A= if (Object.isFunction(properties[0]))=0A= parent =3D properties.shift();=0A= =0A= function klass() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= =0A= Object.extend(klass, Class.Methods);=0A= klass.superclass =3D parent;=0A= klass.subclasses =3D [];=0A= =0A= if (parent) {=0A= var subclass =3D function() { };=0A= subclass.prototype =3D parent.prototype;=0A= klass.prototype =3D new subclass;=0A= parent.subclasses.push(klass);=0A= }=0A= =0A= for (var i =3D 0; i < properties.length; i++)=0A= klass.addMethods(properties[i]);=0A= =0A= if (!klass.prototype.initialize)=0A= klass.prototype.initialize =3D Prototype.emptyFunction;=0A= =0A= klass.prototype.constructor =3D klass;=0A= =0A= return klass;=0A= }=0A= };=0A= =0A= Class.Methods =3D {=0A= addMethods: function(source) {=0A= var ancestor =3D this.superclass && this.superclass.prototype;=0A= var properties =3D Object.keys(source);=0A= =0A= if (!Object.keys({ toString: true }).length)=0A= properties.push("toString", "valueOf");=0A= =0A= for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A= var property =3D properties[i], value =3D source[property];=0A= if (ancestor && Object.isFunction(value) &&=0A= value.argumentNames().first() =3D=3D "$super") {=0A= var method =3D value, value =3D Object.extend((function(m) {=0A= return function() { return ancestor[m].apply(this, arguments) = };=0A= })(property).wrap(method), {=0A= valueOf: function() { return method },=0A= toString: function() { return method.toString() }=0A= });=0A= }=0A= this.prototype[property] =3D value;=0A= }=0A= =0A= return this;=0A= }=0A= };=0A= =0A= var Abstract =3D { };=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (var property in source)=0A= destination[property] =3D source[property];=0A= return destination;=0A= };=0A= =0A= Object.extend(Object, {=0A= inspect: function(object) {=0A= try {=0A= if (Object.isUndefined(object)) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : String(object);=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= },=0A= =0A= toJSON: function(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =0A= if (object =3D=3D=3D null) return 'null';=0A= if (object.toJSON) return object.toJSON();=0A= if (Object.isElement(object)) return;=0A= =0A= var results =3D [];=0A= for (var property in object) {=0A= var value =3D Object.toJSON(object[property]);=0A= if (!Object.isUndefined(value))=0A= results.push(property.toJSON() + ': ' + value);=0A= }=0A= =0A= return '{' + results.join(', ') + '}';=0A= },=0A= =0A= toQueryString: function(object) {=0A= return $H(object).toQueryString();=0A= },=0A= =0A= toHTML: function(object) {=0A= return object && object.toHTML ? object.toHTML() : = String.interpret(object);=0A= },=0A= =0A= keys: function(object) {=0A= var keys =3D [];=0A= for (var property in object)=0A= keys.push(property);=0A= return keys;=0A= },=0A= =0A= values: function(object) {=0A= var values =3D [];=0A= for (var property in object)=0A= values.push(object[property]);=0A= return values;=0A= },=0A= =0A= clone: function(object) {=0A= return Object.extend({ }, object);=0A= },=0A= =0A= isElement: function(object) {=0A= return object && object.nodeType =3D=3D 1;=0A= },=0A= =0A= isArray: function(object) {=0A= return object !=3D null && typeof object =3D=3D "object" &&=0A= 'splice' in object && 'join' in object;=0A= },=0A= =0A= isHash: function(object) {=0A= return object instanceof Hash;=0A= },=0A= =0A= isFunction: function(object) {=0A= return typeof object =3D=3D "function";=0A= },=0A= =0A= isString: function(object) {=0A= return typeof object =3D=3D "string";=0A= },=0A= =0A= isNumber: function(object) {=0A= return typeof object =3D=3D "number";=0A= },=0A= =0A= isUndefined: function(object) {=0A= return typeof object =3D=3D "undefined";=0A= }=0A= });=0A= =0A= Object.extend(Function.prototype, {=0A= argumentNames: function() {=0A= var names =3D = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv= oke("strip");=0A= return names.length =3D=3D 1 && !names[0] ? [] : names;=0A= },=0A= =0A= bind: function() {=0A= if (arguments.length < 2 && Object.isUndefined(arguments[0])) return = this;=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function() {=0A= return __method.apply(object, args.concat($A(arguments)));=0A= }=0A= },=0A= =0A= bindAsEventListener: function() {=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function(event) {=0A= return __method.apply(object, [event || = window.event].concat(args));=0A= }=0A= },=0A= =0A= curry: function() {=0A= if (!arguments.length) return this;=0A= var __method =3D this, args =3D $A(arguments);=0A= return function() {=0A= return __method.apply(this, args.concat($A(arguments)));=0A= }=0A= },=0A= =0A= delay: function() {=0A= var __method =3D this, args =3D $A(arguments), timeout =3D = args.shift() * 1000;=0A= return window.setTimeout(function() {=0A= return __method.apply(__method, args);=0A= }, timeout);=0A= },=0A= =0A= wrap: function(wrapper) {=0A= var __method =3D this;=0A= return function() {=0A= return wrapper.apply(this, = [__method.bind(this)].concat($A(arguments)));=0A= }=0A= },=0A= =0A= methodize: function() {=0A= if (this._methodized) return this._methodized;=0A= var __method =3D this;=0A= return this._methodized =3D function() {=0A= return __method.apply(null, [this].concat($A(arguments)));=0A= };=0A= }=0A= });=0A= =0A= Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A= =0A= Date.prototype.toJSON =3D function() {=0A= return '"' + this.getUTCFullYear() + '-' +=0A= (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A= this.getUTCDate().toPaddedString(2) + 'T' +=0A= this.getUTCHours().toPaddedString(2) + ':' +=0A= this.getUTCMinutes().toPaddedString(2) + ':' +=0A= this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A= };=0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var lambda =3D arguments[i];=0A= try {=0A= returnValue =3D lambda();=0A= break;=0A= } catch (e) { }=0A= }=0A= =0A= return returnValue;=0A= }=0A= };=0A= =0A= RegExp.prototype.match =3D RegExp.prototype.test;=0A= =0A= RegExp.escape =3D function(str) {=0A= return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create({=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= execute: function() {=0A= this.callback(this);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.execute();=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= });=0A= Object.extend(String, {=0A= interpret: function(value) {=0A= return value =3D=3D null ? '' : String(value);=0A= },=0A= specialChar: {=0A= '\b': '\\b',=0A= '\t': '\\t',=0A= '\n': '\\n',=0A= '\f': '\\f',=0A= '\r': '\\r',=0A= '\\': '\\\\'=0A= }=0A= });=0A= =0A= Object.extend(String.prototype, {=0A= gsub: function(pattern, replacement) {=0A= var result =3D '', source =3D this, match;=0A= replacement =3D arguments.callee.prepareReplacement(replacement);=0A= =0A= while (source.length > 0) {=0A= if (match =3D source.match(pattern)) {=0A= result +=3D source.slice(0, match.index);=0A= result +=3D String.interpret(replacement(match));=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= },=0A= =0A= sub: function(pattern, replacement, count) {=0A= replacement =3D this.gsub.prepareReplacement(replacement);=0A= count =3D Object.isUndefined(count) ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= },=0A= =0A= scan: function(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return String(this);=0A= },=0A= =0A= truncate: function(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : = String(this);=0A= },=0A= =0A= strip: function() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= },=0A= =0A= stripTags: function() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= },=0A= =0A= stripScripts: function() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= },=0A= =0A= extractScripts: function() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= },=0A= =0A= evalScripts: function() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= },=0A= =0A= escapeHTML: function() {=0A= var self =3D arguments.callee;=0A= self.text.data =3D this;=0A= return self.div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D new Element('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A= $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) :=0A= div.childNodes[0].nodeValue) : '';=0A= },=0A= =0A= toQueryParams: function(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return { };=0A= =0A= return match[1].split(separator || '&').inject({ }, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var key =3D decodeURIComponent(pair.shift());=0A= var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A= if (value !=3D undefined) value =3D decodeURIComponent(value);=0A= =0A= if (key in hash) {=0A= if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A= hash[key].push(value);=0A= }=0A= else hash[key] =3D value;=0A= }=0A= return hash;=0A= });=0A= },=0A= =0A= toArray: function() {=0A= return this.split('');=0A= },=0A= =0A= succ: function() {=0A= return this.slice(0, this.length - 1) +=0A= String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A= },=0A= =0A= times: function(count) {=0A= return count < 1 ? '' : new Array(count + 1).join(this);=0A= },=0A= =0A= camelize: function() {=0A= var parts =3D this.split('-'), len =3D parts.length;=0A= if (len =3D=3D 1) return parts[0];=0A= =0A= var camelized =3D this.charAt(0) =3D=3D '-'=0A= ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A= : parts[0];=0A= =0A= for (var i =3D 1; i < len; i++)=0A= camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1);=0A= =0A= return camelized;=0A= },=0A= =0A= capitalize: function() {=0A= return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase();=0A= },=0A= =0A= underscore: function() {=0A= return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase();=0A= },=0A= =0A= dasherize: function() {=0A= return this.gsub(/_/,'-');=0A= },=0A= =0A= inspect: function(useDoubleQuotes) {=0A= var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A= var character =3D String.specialChar[match[0]];=0A= return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16);=0A= });=0A= if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"';=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= },=0A= =0A= toJSON: function() {=0A= return this.inspect(true);=0A= },=0A= =0A= unfilterJSON: function(filter) {=0A= return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A= },=0A= =0A= isJSON: function() {=0A= var str =3D this;=0A= if (str.blank()) return false;=0A= str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A= return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A= },=0A= =0A= evalJSON: function(sanitize) {=0A= var json =3D this.unfilterJSON();=0A= try {=0A= if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A= } catch (e) { }=0A= throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A= },=0A= =0A= include: function(pattern) {=0A= return this.indexOf(pattern) > -1;=0A= },=0A= =0A= startsWith: function(pattern) {=0A= return this.indexOf(pattern) =3D=3D=3D 0;=0A= },=0A= =0A= endsWith: function(pattern) {=0A= var d =3D this.length - pattern.length;=0A= return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A= },=0A= =0A= empty: function() {=0A= return this =3D=3D '';=0A= },=0A= =0A= blank: function() {=0A= return /^\s*$/.test(this);=0A= },=0A= =0A= interpolate: function(object, pattern) {=0A= return new Template(this, pattern).evaluate(object);=0A= }=0A= });=0A= =0A= if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, {=0A= escapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(//g,'>');=0A= },=0A= unescapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');=0A= }=0A= });=0A= =0A= String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A= if (Object.isFunction(replacement)) return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= };=0A= =0A= String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A= =0A= Object.extend(String.prototype.escapeHTML, {=0A= div: document.createElement('div'),=0A= text: document.createTextNode('')=0A= });=0A= =0A= with (String.prototype.escapeHTML) div.appendChild(text);=0A= =0A= var Template =3D Class.create({=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= if (Object.isFunction(object.toTemplateReplacements))=0A= object =3D object.toTemplateReplacements();=0A= =0A= return this.template.gsub(this.pattern, function(match) {=0A= if (object =3D=3D null) return '';=0A= =0A= var before =3D match[1] || '';=0A= if (before =3D=3D '\\') return match[2];=0A= =0A= var ctx =3D object, expr =3D match[3];=0A= var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A= match =3D pattern.exec(expr);=0A= if (match =3D=3D null) return before;=0A= =0A= while (match !=3D null) {=0A= var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', = ']') : match[1];=0A= ctx =3D ctx[comp];=0A= if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A= expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length);=0A= match =3D pattern.exec(expr);=0A= }=0A= =0A= return before + String.interpret(ctx);=0A= });=0A= }=0A= });=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= =0A= var $break =3D { };=0A= =0A= var Enumerable =3D {=0A= each: function(iterator, context) {=0A= var index =3D 0;=0A= iterator =3D iterator.bind(context);=0A= try {=0A= this._each(function(value) {=0A= iterator(value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= },=0A= =0A= all: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator(value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(filter, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= =0A= if (Object.isString(filter))=0A= filter =3D new RegExp(filter);=0A= =0A= this.each(function(value, index) {=0A= if (filter.match(value))=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= include: function(object) {=0A= if (Object.isFunction(this.indexOf))=0A= if (this.indexOf(object) !=3D -1) return true;=0A= =0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= },=0A= =0A= inGroupsOf: function(number, fillWith) {=0A= fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A= return this.eachSlice(number, function(slice) {=0A= while(slice.length < number) slice.push(fillWith);=0A= return slice;=0A= });=0A= },=0A= =0A= inject: function(memo, iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= this.each(function(value, index) {=0A= memo =3D iterator(memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= invoke: function(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.map(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= },=0A= =0A= max: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(value, index);=0A= if (result =3D=3D null || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(value, index);=0A= if (result =3D=3D null || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator(value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= },=0A= =0A= pluck: function(property) {=0A= var results =3D [];=0A= this.each(function(value) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= return this.map(function(value, index) {=0A= return {value: value, criteria: iterator(value, index)};=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= },=0A= =0A= toArray: function() {=0A= return this.map();=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (Object.isFunction(args.last()))=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= },=0A= =0A= size: function() {=0A= return this.toArray().length;=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= };=0A= =0A= Object.extend(Enumerable, {=0A= map: Enumerable.collect,=0A= find: Enumerable.detect,=0A= select: Enumerable.findAll,=0A= filter: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray,=0A= every: Enumerable.all,=0A= some: Enumerable.any=0A= });=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= if (Prototype.Browser.WebKit) {=0A= $A =3D function(iterable) {=0A= if (!iterable) return [];=0A= if (!(Object.isFunction(iterable) && iterable =3D=3D '[object = NodeList]') &&=0A= iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= };=0A= }=0A= =0A= Array.from =3D $A;=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= if (!Array.prototype._reverse) Array.prototype._reverse =3D = Array.prototype.reverse;=0A= =0A= Object.extend(Array.prototype, {=0A= _each: function(iterator) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= iterator(this[i]);=0A= },=0A= =0A= clear: function() {=0A= this.length =3D 0;=0A= return this;=0A= },=0A= =0A= first: function() {=0A= return this[0];=0A= },=0A= =0A= last: function() {=0A= return this[this.length - 1];=0A= },=0A= =0A= compact: function() {=0A= return this.select(function(value) {=0A= return value !=3D null;=0A= });=0A= },=0A= =0A= flatten: function() {=0A= return this.inject([], function(array, value) {=0A= return array.concat(Object.isArray(value) ?=0A= value.flatten() : [value]);=0A= });=0A= },=0A= =0A= without: function() {=0A= var values =3D $A(arguments);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= },=0A= =0A= reverse: function(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= },=0A= =0A= reduce: function() {=0A= return this.length > 1 ? this : this[0];=0A= },=0A= =0A= uniq: function(sorted) {=0A= return this.inject([], function(array, value, index) {=0A= if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value)))=0A= array.push(value);=0A= return array;=0A= });=0A= },=0A= =0A= intersect: function(array) {=0A= return this.uniq().findAll(function(item) {=0A= return array.detect(function(value) { return item =3D=3D=3D value = });=0A= });=0A= },=0A= =0A= clone: function() {=0A= return [].concat(this);=0A= },=0A= =0A= size: function() {=0A= return this.length;=0A= },=0A= =0A= inspect: function() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= },=0A= =0A= toJSON: function() {=0A= var results =3D [];=0A= this.each(function(object) {=0A= var value =3D Object.toJSON(object);=0A= if (!Object.isUndefined(value)) results.push(value);=0A= });=0A= return '[' + results.join(', ') + ']';=0A= }=0A= });=0A= =0A= // use native browser JS 1.6 implementation if available=0A= if (Object.isFunction(Array.prototype.forEach))=0A= Array.prototype._each =3D Array.prototype.forEach;=0A= =0A= if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, = i) {=0A= i || (i =3D 0);=0A= var length =3D this.length;=0A= if (i < 0) i =3D length + i;=0A= for (; i < length; i++)=0A= if (this[i] =3D=3D=3D item) return i;=0A= return -1;=0A= };=0A= =0A= if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D = function(item, i) {=0A= i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A= var n =3D this.slice(0, i).reverse().indexOf(item);=0A= return (n < 0) ? n : i - n - 1;=0A= };=0A= =0A= Array.prototype.toArray =3D Array.prototype.clone;=0A= =0A= function $w(string) {=0A= if (!Object.isString(string)) return [];=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= if (Prototype.Browser.Opera){=0A= Array.prototype.concat =3D function() {=0A= var array =3D [];=0A= for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]);=0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= if (Object.isArray(arguments[i])) {=0A= for (var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++)=0A= array.push(arguments[i][j]);=0A= } else {=0A= array.push(arguments[i]);=0A= }=0A= }=0A= return array;=0A= };=0A= }=0A= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= return this.toPaddedString(2, 16);=0A= },=0A= =0A= succ: function() {=0A= return this + 1;=0A= },=0A= =0A= times: function(iterator) {=0A= $R(0, this, true).each(iterator);=0A= return this;=0A= },=0A= =0A= toPaddedString: function(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= },=0A= =0A= toJSON: function() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= });=0A= =0A= $w('abs round ceil floor').each(function(method){=0A= Number.prototype[method] =3D Math[method].methodize();=0A= });=0A= function $H(object) {=0A= return new Hash(object);=0A= };=0A= =0A= var Hash =3D Class.create(Enumerable, (function() {=0A= =0A= function toQueryPair(key, value) {=0A= if (Object.isUndefined(value)) return key;=0A= return key + '=3D' + encodeURIComponent(String.interpret(value));=0A= }=0A= =0A= return {=0A= initialize: function(object) {=0A= this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object);=0A= },=0A= =0A= _each: function(iterator) {=0A= for (var key in this._object) {=0A= var value =3D this._object[key], pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= },=0A= =0A= set: function(key, value) {=0A= return this._object[key] =3D value;=0A= },=0A= =0A= get: function(key) {=0A= return this._object[key];=0A= },=0A= =0A= unset: function(key) {=0A= var value =3D this._object[key];=0A= delete this._object[key];=0A= return value;=0A= },=0A= =0A= toObject: function() {=0A= return Object.clone(this._object);=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= index: function(value) {=0A= var match =3D this.detect(function(pair) {=0A= return pair.value =3D=3D=3D value;=0A= });=0A= return match && match.key;=0A= },=0A= =0A= merge: function(object) {=0A= return this.clone().update(object);=0A= },=0A= =0A= update: function(object) {=0A= return new Hash(object).inject(this, function(result, pair) {=0A= result.set(pair.key, pair.value);=0A= return result;=0A= });=0A= },=0A= =0A= toQueryString: function() {=0A= return this.map(function(pair) {=0A= var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A= =0A= if (values && typeof values =3D=3D 'object') {=0A= if (Object.isArray(values))=0A= return values.map(toQueryPair.curry(key)).join('&');=0A= }=0A= return toQueryPair(key, values);=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= },=0A= =0A= toJSON: function() {=0A= return Object.toJSON(this.toObject());=0A= },=0A= =0A= clone: function() {=0A= return new Hash(this);=0A= }=0A= }=0A= })());=0A= =0A= Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A= Hash.from =3D $H;=0A= var ObjectRange =3D Class.create(Enumerable, {=0A= initialize: function(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= },=0A= =0A= _each: function(iterator) {=0A= var value =3D this.start;=0A= while (this.include(value)) {=0A= iterator(value);=0A= value =3D value.succ();=0A= }=0A= },=0A= =0A= include: function(value) {=0A= if (value < this.start)=0A= return false;=0A= if (this.exclusive)=0A= return value < this.end;=0A= return value <=3D this.end;=0A= }=0A= });=0A= =0A= var $R =3D function(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= };=0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new XMLHttpRequest()},=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A= ) || false;=0A= },=0A= =0A= activeRequestCount: 0=0A= };=0A= =0A= Ajax.Responders =3D {=0A= responders: [],=0A= =0A= _each: function(iterator) {=0A= this.responders._each(iterator);=0A= },=0A= =0A= register: function(responder) {=0A= if (!this.include(responder))=0A= this.responders.push(responder);=0A= },=0A= =0A= unregister: function(responder) {=0A= this.responders =3D this.responders.without(responder);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (Object.isFunction(responder[callback])) {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) { }=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() { Ajax.activeRequestCount++ },=0A= onComplete: function() { Ajax.activeRequestCount-- }=0A= });=0A= =0A= Ajax.Base =3D Class.create({=0A= initialize: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: '',=0A= evalJSON: true,=0A= evalJS: true=0A= };=0A= Object.extend(this.options, options || { });=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= =0A= if (Object.isString(this.options.parameters))=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= else if (Object.isHash(this.options.parameters))=0A= this.options.parameters =3D this.options.parameters.toObject();=0A= }=0A= });=0A= =0A= Ajax.Request =3D Class.create(Ajax.Base, {=0A= _complete: false,=0A= =0A= initialize: function($super, url, options) {=0A= $super(options);=0A= this.transport =3D Ajax.getTransport();=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= this.url =3D url;=0A= this.method =3D this.options.method;=0A= var params =3D Object.clone(this.options.parameters);=0A= =0A= if (!['get', 'post'].include(this.method)) {=0A= // simulate other verbs over post=0A= params['_method'] =3D this.method;=0A= this.method =3D 'post';=0A= }=0A= =0A= this.parameters =3D params;=0A= =0A= if (params =3D Object.toQueryString(params)) {=0A= // when GET, append parameters to URL=0A= if (this.method =3D=3D 'get')=0A= this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A= else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= params +=3D '&_=3D';=0A= }=0A= =0A= try {=0A= var response =3D new Ajax.Response(this);=0A= if (this.options.onCreate) this.options.onCreate(response);=0A= Ajax.Responders.dispatch('onCreate', this, response);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null;=0A= this.transport.send(this.body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= // user-defined headers=0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (Object.isFunction(extras.push))=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= var status =3D this.getStatus();=0A= return !status || (status >=3D 200 && status < 300);=0A= },=0A= =0A= getStatus: function() {=0A= try {=0A= return this.transport.status || 0;=0A= } catch (e) { return 0 }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this);=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + response.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(response, response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= var contentType =3D response.getHeader('Content-type');=0A= if (this.options.evalJS =3D=3D 'force'=0A= || (this.options.evalJS && this.isSameOrigin() && contentType=0A= && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i)))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON);=0A= Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= // avoid memory leak in MSIE: clean up=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= isSameOrigin: function() {=0A= var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A= return !m || (m[0] =3D=3D = '#{protocol}//#{domain}#{port}'.interpolate({=0A= protocol: location.protocol,=0A= domain: document.domain,=0A= port: location.port ? ':' + location.port : ''=0A= }));=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name) || null;=0A= } catch (e) { return null }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval((this.transport.responseText || '').unfilterJSON());=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Response =3D Class.create({=0A= initialize: function(request){=0A= this.request =3D request;=0A= var transport =3D this.transport =3D request.transport,=0A= readyState =3D this.readyState =3D transport.readyState;=0A= =0A= if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = {=0A= this.status =3D this.getStatus();=0A= this.statusText =3D this.getStatusText();=0A= this.responseText =3D String.interpret(transport.responseText);=0A= this.headerJSON =3D this._getHeaderJSON();=0A= }=0A= =0A= if(readyState =3D=3D 4) {=0A= var xml =3D transport.responseXML;=0A= this.responseXML =3D Object.isUndefined(xml) ? null : xml;=0A= this.responseJSON =3D this._getResponseJSON();=0A= }=0A= },=0A= =0A= status: 0,=0A= statusText: '',=0A= =0A= getStatus: Ajax.Request.prototype.getStatus,=0A= =0A= getStatusText: function() {=0A= try {=0A= return this.transport.statusText || '';=0A= } catch (e) { return '' }=0A= },=0A= =0A= getHeader: Ajax.Request.prototype.getHeader,=0A= =0A= getAllHeaders: function() {=0A= try {=0A= return this.getAllResponseHeaders();=0A= } catch (e) { return null }=0A= },=0A= =0A= getResponseHeader: function(name) {=0A= return this.transport.getResponseHeader(name);=0A= },=0A= =0A= getAllResponseHeaders: function() {=0A= return this.transport.getAllResponseHeaders();=0A= },=0A= =0A= _getHeaderJSON: function() {=0A= var json =3D this.getHeader('X-JSON');=0A= if (!json) return null;=0A= json =3D decodeURIComponent(escape(json));=0A= try {=0A= return json.evalJSON(this.request.options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= },=0A= =0A= _getResponseJSON: function() {=0A= var options =3D this.request.options;=0A= if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A= !(this.getHeader('Content-type') || = '').include('application/json')) ||=0A= this.responseText.blank())=0A= return null;=0A= try {=0A= return this.responseText.evalJSON(options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create(Ajax.Request, {=0A= initialize: function($super, container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= };=0A= =0A= options =3D Object.clone(options);=0A= var onComplete =3D options.onComplete;=0A= options.onComplete =3D (function(response, json) {=0A= this.updateContent(response.responseText);=0A= if (Object.isFunction(onComplete)) onComplete(response, json);=0A= }).bind(this);=0A= =0A= $super(url, options);=0A= },=0A= =0A= updateContent: function(responseText) {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'],=0A= options =3D this.options;=0A= =0A= if (!options.evalScripts) responseText =3D = responseText.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (options.insertion) {=0A= if (Object.isString(options.insertion)) {=0A= var insertion =3D { }; insertion[options.insertion] =3D = responseText;=0A= receiver.insert(insertion);=0A= }=0A= else options.insertion(receiver, responseText);=0A= }=0A= else receiver.update(responseText);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A= initialize: function($super, container, url, options) {=0A= $super(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D { };=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(response) {=0A= if (this.options.decay) {=0A= this.decay =3D (response.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D response.responseText;=0A= }=0A= this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (Object.isString(element))=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(Element.extend(query.snapshotItem(i)));=0A= return results;=0A= };=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Node) var Node =3D { };=0A= =0A= if (!Node.ELEMENT_NODE) {=0A= // DOM level 2 ECMAScript Language Binding=0A= Object.extend(Node, {=0A= ELEMENT_NODE: 1,=0A= ATTRIBUTE_NODE: 2,=0A= TEXT_NODE: 3,=0A= CDATA_SECTION_NODE: 4,=0A= ENTITY_REFERENCE_NODE: 5,=0A= ENTITY_NODE: 6,=0A= PROCESSING_INSTRUCTION_NODE: 7,=0A= COMMENT_NODE: 8,=0A= DOCUMENT_NODE: 9,=0A= DOCUMENT_TYPE_NODE: 10,=0A= DOCUMENT_FRAGMENT_NODE: 11,=0A= NOTATION_NODE: 12=0A= });=0A= }=0A= =0A= (function() {=0A= var element =3D this.Element;=0A= this.Element =3D function(tagName, attributes) {=0A= attributes =3D attributes || { };=0A= tagName =3D tagName.toLowerCase();=0A= var cache =3D Element.cache;=0A= if (Prototype.Browser.IE && attributes.name) {=0A= tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A= delete attributes.name;=0A= return Element.writeAttribute(document.createElement(tagName), = attributes);=0A= }=0A= if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName));=0A= return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes);=0A= };=0A= Object.extend(this.Element, element || { });=0A= }).call(window);=0A= =0A= Element.cache =3D { };=0A= =0A= Element.Methods =3D {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function(element) {=0A= element =3D $(element);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= return element;=0A= },=0A= =0A= hide: function(element) {=0A= $(element).style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= $(element).style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= content =3D Object.toHTML(content);=0A= element.innerHTML =3D content.stripScripts();=0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= },=0A= =0A= replace: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= else if (!Object.isElement(content)) {=0A= content =3D Object.toHTML(content);=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNode(element);=0A= content.evalScripts.bind(content).defer();=0A= content =3D range.createContextualFragment(content.stripScripts());=0A= }=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= },=0A= =0A= insert: function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D {bottom:insertions};=0A= =0A= var content, insert, tagName, childNodes;=0A= =0A= for (var position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= insert =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= childNodes =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= =0A= if (position =3D=3D 'top' || position =3D=3D 'after') = childNodes.reverse();=0A= childNodes.each(insert.curry(element));=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= },=0A= =0A= wrap: function(element, wrapper, attributes) {=0A= element =3D $(element);=0A= if (Object.isElement(wrapper))=0A= $(wrapper).writeAttribute(attributes || { });=0A= else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes);=0A= else wrapper =3D new Element('div', wrapper);=0A= if (element.parentNode)=0A= element.parentNode.replaceChild(wrapper, element);=0A= wrapper.appendChild(element);=0A= return wrapper;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return $(element).recursivelyCollect('parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= return $(element).select("*");=0A= },=0A= =0A= firstDescendant: function(element) {=0A= element =3D $(element).firstChild;=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= return $(element);=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return $(element).recursivelyCollect('previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return $(element).recursivelyCollect('nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return = element.previousSiblings().reverse().concat(element.nextSiblings());=0A= },=0A= =0A= match: function(element, selector) {=0A= if (Object.isString(selector))=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return $(element.parentNode);=0A= var ancestors =3D element.ancestors();=0A= return Object.isNumber(expression) ? ancestors[expression] :=0A= Selector.findElement(ancestors, expression, index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= return Object.isNumber(expression) ? = element.descendants()[expression] :=0A= element.select(expression)[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D element.previousSiblings();=0A= return Object.isNumber(expression) ? previousSiblings[expression] :=0A= Selector.findElement(previousSiblings, expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D element.nextSiblings();=0A= return Object.isNumber(expression) ? nextSiblings[expression] :=0A= Selector.findElement(nextSiblings, expression, index);=0A= },=0A= =0A= select: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= adjacent: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element.parentNode, = args).without(element);=0A= },=0A= =0A= identify: function(element) {=0A= element =3D $(element);=0A= var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A= if (id) return id;=0A= do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A= element.writeAttribute('id', id);=0A= return id;=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= element =3D $(element);=0A= if (Prototype.Browser.IE) {=0A= var t =3D Element._attributeTranslations.read;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= if (name.include(':')) {=0A= return (!element.attributes || !element.attributes[name]) ? null = :=0A= element.attributes[name].value;=0A= }=0A= }=0A= return element.getAttribute(name);=0A= },=0A= =0A= writeAttribute: function(element, name, value) {=0A= element =3D $(element);=0A= var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A= =0A= if (typeof name =3D=3D 'object') attributes =3D name;=0A= else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A= =0A= for (var attr in attributes) {=0A= name =3D t.names[attr] || attr;=0A= value =3D attributes[attr];=0A= if (t.values[attr]) name =3D t.values[attr](element, value);=0A= if (value =3D=3D=3D false || value =3D=3D=3D null)=0A= element.removeAttribute(name);=0A= else if (value =3D=3D=3D true)=0A= element.setAttribute(name, name);=0A= else element.setAttribute(name, value);=0A= }=0A= return element;=0A= },=0A= =0A= getHeight: function(element) {=0A= return $(element).getDimensions().height;=0A= },=0A= =0A= getWidth: function(element) {=0A= return $(element).getDimensions().width;=0A= },=0A= =0A= classNames: function(element) {=0A= return new Element.ClassNames(element);=0A= },=0A= =0A= hasClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= var elementClassName =3D element.className;=0A= return (elementClassName.length > 0 && (elementClassName =3D=3D = className ||=0A= new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName)));=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= if (!element.hasClassName(className))=0A= element.className +=3D (element.className ? ' ' : '') + className;=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= element.className =3D element.className.replace(=0A= new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return element[element.hasClassName(className) ?=0A= 'removeClassName' : 'addClassName'](className);=0A= },=0A= =0A= // removes whitespace-only text node children=0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.blank();=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= var originalAncestor =3D ancestor;=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (element.sourceIndex && !Prototype.Browser.Opera) {=0A= var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A= nextAncestor =3D ancestor.nextSibling;=0A= if (!nextAncestor) {=0A= do { ancestor =3D ancestor.parentNode; }=0A= while (!(nextAncestor =3D ancestor.nextSibling) && = ancestor.parentNode);=0A= }=0A= if (nextAncestor && nextAncestor.sourceIndex)=0A= return (e > a && e < nextAncestor.sourceIndex);=0A= }=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D originalAncestor) return true;=0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D element.cumulativeOffset();=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value) {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= }=0A= if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= getOpacity: function(element) {=0A= return $(element).getStyle('opacity');=0A= },=0A= =0A= setStyle: function(element, styles) {=0A= element =3D $(element);=0A= var elementStyle =3D element.style, match;=0A= if (Object.isString(styles)) {=0A= element.style.cssText +=3D ';' + styles;=0A= return styles.include('opacity') ?=0A= element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element;=0A= }=0A= for (var property in styles)=0A= if (property =3D=3D 'opacity') = element.setOpacity(styles[property]);=0A= else=0A= elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ?=0A= (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : = 'styleFloat') :=0A= property] =3D styles[property];=0A= =0A= return element;=0A= },=0A= =0A= setOpacity: function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= var display =3D $(element).getStyle('display');=0A= if (display !=3D 'none' && display !=3D null) // Safari bug=0A= return {width: element.offsetWidth, height: element.offsetHeight};=0A= =0A= // All *Width and *Height properties give 0 on elements with display = none,=0A= // so enable the element temporarily=0A= var els =3D element.style;=0A= var originalVisibility =3D els.visibility;=0A= var originalPosition =3D els.position;=0A= var originalDisplay =3D els.display;=0A= els.visibility =3D 'hidden';=0A= els.position =3D 'absolute';=0A= els.display =3D 'block';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D originalDisplay;=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=0A= },=0A= =0A= makePositioned: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.getStyle(element, 'position');=0A= if (pos =3D=3D 'static' || !pos) {=0A= element._madePositioned =3D true;=0A= element.style.position =3D 'relative';=0A= // Opera returns the offset relative to the positioning context, = when an=0A= // element is position relative but top and left have not been = defined=0A= if (window.opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto';=0A= if (element._overflow !=3D=3D 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if (element.tagName =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p !=3D=3D 'static') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'absolute') return;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= var offsets =3D element.positionedOffset();=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.width =3D width + 'px';=0A= element.style.height =3D height + 'px';=0A= return element;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'relative') return;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= return element;=0A= },=0A= =0A= cumulativeScrollOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= getOffsetParent: function(element) {=0A= if (element.offsetParent) return $(element.offsetParent);=0A= if (element =3D=3D document.body) return $(element);=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return $(element);=0A= =0A= return $(document.body);=0A= },=0A= =0A= viewportOffset: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= // Safari fix=0A= if (element.offsetParent =3D=3D document.body &&=0A= Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= clonePosition: function(element, source) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || { });=0A= =0A= // find page position of source=0A= source =3D $(source);=0A= var p =3D source.viewportOffset();=0A= =0A= // find coordinate system to use=0A= element =3D $(element);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= // delta [0,0] will do fine with position: fixed elements,=0A= // position:absolute needs offsetParent deltas=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A= parent =3D element.getOffsetParent();=0A= delta =3D parent.viewportOffset();=0A= }=0A= =0A= // correct by body offsets (fixes Safari)=0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= // set position=0A= if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px';=0A= if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px';=0A= return element;=0A= }=0A= };=0A= =0A= Element.Methods.identify.counter =3D 1;=0A= =0A= Object.extend(Element.Methods, {=0A= getElementsBySelector: Element.Methods.select,=0A= childElements: Element.Methods.immediateDescendants=0A= });=0A= =0A= Element._attributeTranslations =3D {=0A= write: {=0A= names: {=0A= className: 'class',=0A= htmlFor: 'for'=0A= },=0A= values: { }=0A= }=0A= };=0A= =0A= if (Prototype.Browser.Opera) {=0A= Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A= function(proceed, element, style) {=0A= switch (style) {=0A= case 'left': case 'top': case 'right': case 'bottom':=0A= if (proceed(element, 'position') =3D=3D=3D 'static') return = null;=0A= case 'height': case 'width':=0A= // returns '0px' for hidden elements; we want it to return null=0A= if (!Element.visible(element)) return null;=0A= =0A= // returns the border-box dimensions rather than the = content-box=0A= // dimensions, so we subtract padding and borders from the = value=0A= var dim =3D parseInt(proceed(element, style), 10);=0A= =0A= if (dim !=3D=3D element['offset' + style.capitalize()])=0A= return dim + 'px';=0A= =0A= var properties;=0A= if (style =3D=3D=3D 'height') {=0A= properties =3D ['border-top-width', 'padding-top',=0A= 'padding-bottom', 'border-bottom-width'];=0A= }=0A= else {=0A= properties =3D ['border-left-width', 'padding-left',=0A= 'padding-right', 'border-right-width'];=0A= }=0A= return properties.inject(dim, function(memo, property) {=0A= var val =3D proceed(element, property);=0A= return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A= }) + 'px';=0A= default: return proceed(element, style);=0A= }=0A= }=0A= );=0A= =0A= Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A= function(proceed, element, attribute) {=0A= if (attribute =3D=3D=3D 'title') return element.title;=0A= return proceed(element, attribute);=0A= }=0A= );=0A= }=0A= =0A= else if (Prototype.Browser.IE) {=0A= // IE doesn't report offsets correctly for static elements, so we = change them=0A= // to "relative" to get the values, then change them back.=0A= Element.Methods.getOffsetParent =3D = Element.Methods.getOffsetParent.wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= =0A= $w('positionedOffset viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= // Trigger hasLayout on the offset parent so that IE6 reports=0A= // accurate offsetTop and offsetLeft values for position: fixed.=0A= var offsetParent =3D element.getOffsetParent();=0A= if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D = 'fixed')=0A= offsetParent.setStyle({ zoom: 1 });=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= });=0A= =0A= Element.Methods.getStyle =3D function(element, style) {=0A= element =3D $(element);=0A= style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value && element.currentStyle) value =3D = element.currentStyle[style];=0A= =0A= if (style =3D=3D 'opacity') {=0A= if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/))=0A= if (value[1]) return parseFloat(value[1]) / 100;=0A= return 1.0;=0A= }=0A= =0A= if (value =3D=3D 'auto') {=0A= if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none'))=0A= return element['offset' + style.capitalize()] + 'px';=0A= return null;=0A= }=0A= return value;=0A= };=0A= =0A= Element.Methods.setOpacity =3D function(element, value) {=0A= function stripAlpha(filter){=0A= return filter.replace(/alpha\([^\)]*\)/gi,'');=0A= }=0A= element =3D $(element);=0A= var currentStyle =3D element.currentStyle;=0A= if ((currentStyle && !currentStyle.hasLayout) ||=0A= (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A= element.style.zoom =3D 1;=0A= =0A= var filter =3D element.getStyle('filter'), style =3D element.style;=0A= if (value =3D=3D 1 || value =3D=3D=3D '') {=0A= (filter =3D stripAlpha(filter)) ?=0A= style.filter =3D filter : style.removeAttribute('filter');=0A= return element;=0A= } else if (value < 0.00001) value =3D 0;=0A= style.filter =3D stripAlpha(filter) +=0A= 'alpha(opacity=3D' + (value * 100) + ')';=0A= return element;=0A= };=0A= =0A= Element._attributeTranslations =3D {=0A= read: {=0A= names: {=0A= 'class': 'className',=0A= 'for': 'htmlFor'=0A= },=0A= values: {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= _getAttrNode: function(element, attribute) {=0A= var node =3D element.getAttributeNode(attribute);=0A= return node ? node.value : "";=0A= },=0A= _getEv: function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= return attribute ? attribute.toString().slice(23, -2) : null;=0A= },=0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= title: function(element) {=0A= return element.title;=0A= }=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.write =3D {=0A= names: Object.extend({=0A= cellpadding: 'cellPadding',=0A= cellspacing: 'cellSpacing'=0A= }, Element._attributeTranslations.read.names),=0A= values: {=0A= checked: function(element, value) {=0A= element.checked =3D !!value;=0A= },=0A= =0A= style: function(element, value) {=0A= element.style.cssText =3D value ? value : '';=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.has =3D {};=0A= =0A= $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A= 'encType maxLength readOnly longDesc').each(function(attr) {=0A= Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr;=0A= Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A= });=0A= =0A= (function(v) {=0A= Object.extend(v, {=0A= href: v._getAttr,=0A= src: v._getAttr,=0A= type: v._getAttr,=0A= action: v._getAttrNode,=0A= disabled: v._flag,=0A= checked: v._flag,=0A= readonly: v._flag,=0A= multiple: v._flag,=0A= onload: v._getEv,=0A= onunload: v._getEv,=0A= onclick: v._getEv,=0A= ondblclick: v._getEv,=0A= onmousedown: v._getEv,=0A= onmouseup: v._getEv,=0A= onmouseover: v._getEv,=0A= onmousemove: v._getEv,=0A= onmouseout: v._getEv,=0A= onfocus: v._getEv,=0A= onblur: v._getEv,=0A= onkeypress: v._getEv,=0A= onkeydown: v._getEv,=0A= onkeyup: v._getEv,=0A= onsubmit: v._getEv,=0A= onreset: v._getEv,=0A= onselect: v._getEv,=0A= onchange: v._getEv=0A= });=0A= })(Element._attributeTranslations.read.values);=0A= }=0A= =0A= else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A= (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A= return element;=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.WebKit) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= =0A= if (value =3D=3D 1)=0A= if(element.tagName =3D=3D 'IMG' && element.width) {=0A= element.width++; element.width--;=0A= } else try {=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch (e) { }=0A= =0A= return element;=0A= };=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Element#cumulativeOffset for=0A= // KHTML/WebKit only.=0A= Element.Methods.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= };=0A= }=0A= =0A= if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A= // IE and Opera are missing .innerHTML support for TABLE-related and = SELECT elements=0A= Element.Methods.update =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= =0A= content =3D Object.toHTML(content);=0A= var tagName =3D element.tagName.toUpperCase();=0A= =0A= if (tagName in Element._insertionTranslations.tags) {=0A= $A(element.childNodes).each(function(node) { = element.removeChild(node) });=0A= Element._getContentFromAnonymousElement(tagName, = content.stripScripts())=0A= .each(function(node) { element.appendChild(node) });=0A= }=0A= else element.innerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= if ('outerHTML' in document.createElement('div')) {=0A= Element.Methods.replace =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase();=0A= =0A= if (Element._insertionTranslations.tags[tagName]) {=0A= var nextSibling =3D element.next();=0A= var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= parent.removeChild(element);=0A= if (nextSibling)=0A= fragments.each(function(node) { parent.insertBefore(node, = nextSibling) });=0A= else=0A= fragments.each(function(node) { parent.appendChild(node) });=0A= }=0A= else element.outerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= Element._returnOffset =3D function(l, t) {=0A= var result =3D [l, t];=0A= result.left =3D l;=0A= result.top =3D t;=0A= return result;=0A= };=0A= =0A= Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A= var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName];=0A= if (t) {=0A= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= } else div.innerHTML =3D html;=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= top: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= bottom: function(element, node) {=0A= element.appendChild(node);=0A= },=0A= after: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= tags: {=0A= TABLE: ['', '
', 1],=0A= TBODY: ['', '
', 2],=0A= TR: ['', '
', 3],=0A= TD: ['
', '
', 4],=0A= SELECT: ['', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= Object.extend(this.tags, {=0A= THEAD: this.tags.TBODY,=0A= TFOOT: this.tags.TBODY,=0A= TH: this.tags.TD=0A= });=0A= }).call(Element._insertionTranslations);=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= attribute =3D Element._attributeTranslations.has[attribute] || = attribute;=0A= var node =3D $(element).getAttributeNode(attribute);=0A= return node && node.specified;=0A= }=0A= };=0A= =0A= Element.Methods.ByTag =3D { };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= if (!Prototype.BrowserFeatures.ElementExtensions &&=0A= document.createElement('div').__proto__) {=0A= window.HTMLElement =3D { };=0A= window.HTMLElement.prototype =3D = document.createElement('div').__proto__;=0A= Prototype.BrowserFeatures.ElementExtensions =3D true;=0A= }=0A= =0A= Element.extend =3D (function() {=0A= if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A= return Prototype.K;=0A= =0A= var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A= =0A= var extend =3D Object.extend(function(element) {=0A= if (!element || element._extendedByPrototype ||=0A= element.nodeType !=3D 1 || element =3D=3D window) return element;=0A= =0A= var methods =3D Object.clone(Methods),=0A= tagName =3D element.tagName, property, value;=0A= =0A= // extend methods for specific tags=0A= if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A= =0A= for (property in methods) {=0A= value =3D methods[property];=0A= if (Object.isFunction(value) && !(property in element))=0A= element[property] =3D value.methodize();=0A= }=0A= =0A= element._extendedByPrototype =3D Prototype.emptyFunction;=0A= return element;=0A= =0A= }, {=0A= refresh: function() {=0A= // extend methods for all tags (Safari doesn't need this)=0A= if (!Prototype.BrowserFeatures.ElementExtensions) {=0A= Object.extend(Methods, Element.Methods);=0A= Object.extend(Methods, Element.Methods.Simulated);=0A= }=0A= }=0A= });=0A= =0A= extend.refresh();=0A= return extend;=0A= })();=0A= =0A= Element.hasAttribute =3D function(element, attribute) {=0A= if (element.hasAttribute) return element.hasAttribute(attribute);=0A= return Element.Methods.Simulated.hasAttribute(element, attribute);=0A= };=0A= =0A= Element.addMethods =3D function(methods) {=0A= var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A= =0A= if (!methods) {=0A= Object.extend(Form, Form.Methods);=0A= Object.extend(Form.Element, Form.Element.Methods);=0A= Object.extend(Element.Methods.ByTag, {=0A= "FORM": Object.clone(Form.Methods),=0A= "INPUT": Object.clone(Form.Element.Methods),=0A= "SELECT": Object.clone(Form.Element.Methods),=0A= "TEXTAREA": Object.clone(Form.Element.Methods)=0A= });=0A= }=0A= =0A= if (arguments.length =3D=3D 2) {=0A= var tagName =3D methods;=0A= methods =3D arguments[1];=0A= }=0A= =0A= if (!tagName) Object.extend(Element.Methods, methods || { });=0A= else {=0A= if (Object.isArray(tagName)) tagName.each(extend);=0A= else extend(tagName);=0A= }=0A= =0A= function extend(tagName) {=0A= tagName =3D tagName.toUpperCase();=0A= if (!Element.Methods.ByTag[tagName])=0A= Element.Methods.ByTag[tagName] =3D { };=0A= Object.extend(Element.Methods.ByTag[tagName], methods);=0A= }=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!Object.isFunction(value)) continue;=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= function findDOMClass(tagName) {=0A= var klass;=0A= var trans =3D {=0A= "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A= "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList",=0A= "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading",=0A= "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A= "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION":=0A= "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A= "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR":=0A= "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A= "FrameSet", "IFRAME": "IFrame"=0A= };=0A= if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A= if (window[klass]) return window[klass];=0A= =0A= window[klass] =3D { };=0A= window[klass].prototype =3D = document.createElement(tagName).__proto__;=0A= return window[klass];=0A= }=0A= =0A= if (F.ElementExtensions) {=0A= copy(Element.Methods, HTMLElement.prototype);=0A= copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A= }=0A= =0A= if (F.SpecificElementExtensions) {=0A= for (var tag in Element.Methods.ByTag) {=0A= var klass =3D findDOMClass(tag);=0A= if (Object.isUndefined(klass)) continue;=0A= copy(T[tag], klass.prototype);=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= delete Element.ByTag;=0A= =0A= if (Element.extend.refresh) Element.extend.refresh();=0A= Element.cache =3D { };=0A= };=0A= =0A= document.viewport =3D {=0A= getDimensions: function() {=0A= var dimensions =3D { };=0A= var B =3D Prototype.Browser;=0A= $w('width height').each(function(d) {=0A= var D =3D d.capitalize();=0A= dimensions[d] =3D (B.WebKit && !document.evaluate) ? self['inner' = + D] :=0A= (B.Opera) ? document.body['client' + D] : = document.documentElement['client' + D];=0A= });=0A= return dimensions;=0A= },=0A= =0A= getWidth: function() {=0A= return this.getDimensions().width;=0A= },=0A= =0A= getHeight: function() {=0A= return this.getDimensions().height;=0A= },=0A= =0A= getScrollOffsets: function() {=0A= return Element._returnOffset(=0A= window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft,=0A= window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop);=0A= }=0A= };=0A= /* Portions of the Selector class are derived from Jack = Slocum=C3=A2=E2=82=AC=E2=84=A2s DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= this.compileMatcher();=0A= },=0A= =0A= shouldUseXPath: function() {=0A= if (!Prototype.BrowserFeatures.XPath) return false;=0A= =0A= var e =3D this.expression;=0A= =0A= // Safari 3 chokes on :*-of-type and :empty=0A= if (Prototype.Browser.WebKit &&=0A= (e.include("-of-type") || e.include(":empty")))=0A= return false;=0A= =0A= // XPath can't do namespaced attributes, nor can it read=0A= // the "checked" property from DOM nodes=0A= if ((/(\[[\w-]*?:|:checked)/).test(this.expression))=0A= return false;=0A= =0A= return true;=0A= },=0A= =0A= compileMatcher: function() {=0A= if (this.shouldUseXPath())=0A= return this.compileXPathMatcher();=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=0A= return;=0A= }=0A= =0A= this.matcher =3D ["this.matcher =3D function(root) {",=0A= "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"];=0A= =0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A= new Template(c[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.matcher.push("return h.unique(n);\n}");=0A= eval(this.matcher.join('\n'));=0A= Selector._cache[this.expression] =3D this.matcher;=0A= },=0A= =0A= compileXPathMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns,=0A= x =3D Selector.xpath, le, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.xpath =3D Selector._cache[e]; return;=0A= }=0A= =0A= this.matcher =3D ['.//*'];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= if (m =3D e.match(ps[i])) {=0A= this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A= new Template(x[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.xpath =3D this.matcher.join('');=0A= Selector._cache[this.expression] =3D this.xpath;=0A= },=0A= =0A= findElements: function(root) {=0A= root =3D root || document;=0A= if (this.xpath) return document._getElementsByXPath(this.xpath, = root);=0A= return this.matcher(root);=0A= },=0A= =0A= match: function(element) {=0A= this.tokens =3D [];=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, as =3D = Selector.assertions;=0A= var le, p, m;=0A= =0A= while (e && le !=3D=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= // use the Selector.assertions methods unless the selector=0A= // is too complex.=0A= if (as[i]) {=0A= this.tokens.push([i, Object.clone(m)]);=0A= e =3D e.replace(m[0], '');=0A= } else {=0A= // reluctantly do a document-wide search=0A= // and look for a match in the array=0A= return this.findElements(document).include(element);=0A= }=0A= }=0A= }=0A= }=0A= =0A= var match =3D true, name, matches;=0A= for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A= name =3D token[0], matches =3D token[1];=0A= if (!Selector.assertions[name](element, matches)) {=0A= match =3D false; break;=0A= }=0A= }=0A= =0A= return match;=0A= },=0A= =0A= toString: function() {=0A= return this.expression;=0A= },=0A= =0A= inspect: function() {=0A= return "#";=0A= }=0A= });=0A= =0A= Object.extend(Selector, {=0A= _cache: { },=0A= =0A= xpath: {=0A= descendant: "//*",=0A= child: "/*",=0A= adjacent: "/following-sibling::*[1]",=0A= laterSibling: '/following-sibling::*',=0A= tagName: function(m) {=0A= if (m[1] =3D=3D '*') return '';=0A= return "[local-name()=3D'" + m[1].toLowerCase() +=0A= "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A= },=0A= className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A= id: "[@id=3D'#{1}']",=0A= attrPresence: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= return new Template("[@#{1}]").evaluate(m);=0A= },=0A= attr: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= m[3] =3D m[5] || m[6];=0A= return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= var h =3D Selector.xpath.pseudos[m[1]];=0A= if (!h) return '';=0A= if (Object.isFunction(h)) return h(m);=0A= return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A= },=0A= operators: {=0A= '=3D': "[@#{1}=3D'#{3}']",=0A= '!=3D': "[@#{1}!=3D'#{3}']",=0A= '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A= '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']",=0A= '*=3D': "[contains(@#{1}, '#{3}')]",=0A= '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A= '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A= },=0A= pseudos: {=0A= 'first-child': '[not(preceding-sibling::*)]',=0A= 'last-child': '[not(following-sibling::*)]',=0A= 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]',=0A= 'empty': "[count(*) =3D 0 and (count(text()) =3D 0 or = translate(text(), ' \t\r\n', '') =3D '')]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[@disabled]",=0A= 'enabled': "[not(@disabled)]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, v;=0A= =0A= var exclusion =3D [];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in p) {=0A= if (m =3D e.match(p[i])) {=0A= v =3D Object.isFunction(x[i]) ? x[i](m) : new = Template(x[i]).evaluate(m);=0A= exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= return "[not(" + exclusion.join(" and ") + ")]";=0A= },=0A= 'nth-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A= },=0A= 'nth-last-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A= },=0A= 'nth-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("position() ", m);=0A= },=0A= 'nth-last-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m);=0A= },=0A= 'first-of-type': function(m) {=0A= m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A= },=0A= 'last-of-type': function(m) {=0A= m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m);=0A= },=0A= 'only-of-type': function(m) {=0A= var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m);=0A= },=0A= nth: function(fragment, m) {=0A= var mm, formula =3D m[6], predicate;=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A= return '[' + fragment + "=3D " + mm[1] + ']';=0A= if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A= if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A= var a =3D mm[1] ? Number(mm[1]) : 1;=0A= var b =3D mm[2] ? Number(mm[2]) : 0;=0A= predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A= "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A= return new Template(predicate).evaluate({=0A= fragment: fragment, a: a, b: b });=0A= }=0A= }=0A= }=0A= },=0A= =0A= criteria: {=0A= tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;',=0A= className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A= id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;',=0A= attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", = c); c =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: {=0A= // combinators must be listed first=0A= // (and descendant needs to be last combinator)=0A= laterSibling: /^\s*~\s*/,=0A= child: /^\s*>\s*/,=0A= adjacent: /^\s*\+\s*/,=0A= descendant: /^\s/,=0A= =0A= // selectors follow=0A= tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,=0A= id: /^#([\w\-\*]+)(\b|$)/,=0A= className: /^\.([\w\-\*]+)(\b|$)/,=0A= pseudo:=0A= /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A= attrPresence: /^\[([\w]+)\]/,=0A= attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/=0A= },=0A= =0A= // for Selector.match and Element#match=0A= assertions: {=0A= tagName: function(element, matches) {=0A= return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase();=0A= },=0A= =0A= className: function(element, matches) {=0A= return Element.hasClassName(element, matches[1]);=0A= },=0A= =0A= id: function(element, matches) {=0A= return element.id =3D=3D=3D matches[1];=0A= },=0A= =0A= attrPresence: function(element, matches) {=0A= return Element.hasAttribute(element, matches[1]);=0A= },=0A= =0A= attr: function(element, matches) {=0A= var nodeValue =3D Element.readAttribute(element, matches[1]);=0A= return nodeValue && Selector.operators[matches[2]](nodeValue, = matches[5] || matches[6]);=0A= }=0A= },=0A= =0A= handlers: {=0A= // UTILITY FUNCTIONS=0A= // joins two collections=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= a.push(node);=0A= return a;=0A= },=0A= =0A= // marks an array of nodes for counting=0A= mark: function(nodes) {=0A= var _true =3D Prototype.emptyFunction;=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D _true;=0A= return nodes;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D undefined;=0A= return nodes;=0A= },=0A= =0A= // mark each child node with its position (for nth calls)=0A= // "ofType" flag indicates whether we're indexing for nth-of-type=0A= // rather than nth-child=0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= // filters out duplicates and extends all nodes=0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (!(n =3D nodes[i])._countedByPrototype) {=0A= n._countedByPrototype =3D Prototype.emptyFunction;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= // COMBINATOR FUNCTIONS=0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= // TOKEN FUNCTIONS=0A= tagName: function(nodes, root, tagName, combinator) {=0A= var uTagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= // fastlane for ordinary descendant combinators=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D=3D uTagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= if (!targetNode) return [];=0A= if (!nodes && root =3D=3D document) return [targetNode];=0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D 'child') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (targetNode.parentNode =3D=3D node) return [targetNode];=0A= } else if (combinator =3D=3D 'descendant') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.descendantOf(targetNode, node)) return = [targetNode];=0A= } else if (combinator =3D=3D 'adjacent') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node)=0A= return [targetNode];=0A= } else nodes =3D h[combinator](nodes);=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node =3D=3D targetNode) return [targetNode];=0A= return [];=0A= }=0A= return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : [];=0A= },=0A= =0A= className: function(nodes, root, className, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= return Selector.handlers.byClassName(nodes, root, className);=0A= },=0A= =0A= byClassName: function(nodes, root, className) {=0A= if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A= var needle =3D ' ' + className + ' ';=0A= for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) {=0A= nodeClassName =3D node.className;=0A= if (nodeClassName.length =3D=3D 0) continue;=0A= if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle))=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= attrPresence: function(nodes, root, attr, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= // handles the an+b logic=0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type=0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._countedByPrototype) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= // IE treats comments as element nodes=0A= if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._countedByPrototype) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv.include(v); },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); }=0A= },=0A= =0A= split: function(expression) {=0A= var expressions =3D [];=0A= expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, = function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= return expressions;=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D $$(expression), h =3D Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._countedByPrototype) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (Object.isNumber(expression)) {=0A= index =3D expression; expression =3D false;=0A= }=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= expressions =3D Selector.split(expressions.join(','));=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(Selector.handlers, {=0A= // IE returns comment nodes on getElementsByTagName("*").=0A= // Filter them out.=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= if (node.tagName !=3D=3D "!") a.push(node);=0A= return a;=0A= },=0A= =0A= // IE improperly serializes _countedByPrototype in (inner|outer)HTML.=0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node.removeAttribute('_countedByPrototype');=0A= return nodes;=0A= }=0A= });=0A= }=0A= =0A= function $$() {=0A= return Selector.findChildElements(document, $A(arguments));=0A= }=0A= var Form =3D {=0A= reset: function(form) {=0A= $(form).reset();=0A= return form;=0A= },=0A= =0A= serializeElements: function(elements, options) {=0A= if (typeof options !=3D 'object') options =3D { hash: !!options };=0A= else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A= var key, value, submitted =3D false, submit =3D options.submit;=0A= =0A= var data =3D elements.inject({ }, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= key =3D element.name; value =3D $(element).getValue();=0A= if (value !=3D null && (element.type !=3D 'submit' || = (!submitted &&=0A= submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) {=0A= if (key in result) {=0A= // a key is already present; construct an array of values=0A= if (!Object.isArray(result[key])) result[key] =3D = [result[key]];=0A= result[key].push(value);=0A= }=0A= else result[key] =3D value;=0A= }=0A= }=0A= return result;=0A= });=0A= =0A= return options.hash ? data : Object.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, options) {=0A= return Form.serializeElements(Form.getElements(form), options);=0A= },=0A= =0A= getElements: function(form) {=0A= return $A($(form).getElementsByTagName('*')).inject([],=0A= function(elements, child) {=0A= if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A= elements.push(Element.extend(child));=0A= return elements;=0A= }=0A= );=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name) return $A(inputs).map(Element.extend);=0A= =0A= for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('disable');=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('enable');=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= var elements =3D $(form).getElements().findAll(function(element) {=0A= return 'hidden' !=3D element.type && !element.disabled;=0A= });=0A= var firstByIndex =3D elements.findAll(function(element) {=0A= return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A= }).sortBy(function(element) { return element.tabIndex }).first();=0A= =0A= return firstByIndex ? firstByIndex : elements.find(function(element) = {=0A= return ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= },=0A= =0A= request: function(form, options) {=0A= form =3D $(form), options =3D Object.clone(options || { });=0A= =0A= var params =3D options.parameters, action =3D = form.readAttribute('action') || '';=0A= if (action.blank()) action =3D window.location.href;=0A= options.parameters =3D form.serialize(true);=0A= =0A= if (params) {=0A= if (Object.isString(params)) params =3D params.toQueryParams();=0A= Object.extend(options.parameters, params);=0A= }=0A= =0A= if (form.hasAttribute('method') && !options.method)=0A= options.method =3D form.method;=0A= =0A= return new Ajax.Request(action, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element =3D {=0A= focus: function(element) {=0A= $(element).focus();=0A= return element;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= return element;=0A= }=0A= };=0A= =0A= Form.Element.Methods =3D {=0A= serialize: function(element) {=0A= element =3D $(element);=0A= if (!element.disabled && element.name) {=0A= var value =3D element.getValue();=0A= if (value !=3D undefined) {=0A= var pair =3D { };=0A= pair[element.name] =3D value;=0A= return Object.toQueryString(pair);=0A= }=0A= }=0A= return '';=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= return Form.Element.Serializers[method](element);=0A= },=0A= =0A= setValue: function(element, value) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= Form.Element.Serializers[method](element, value);=0A= return element;=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= try {=0A= element.focus();=0A= if (element.select && (element.tagName.toLowerCase() !=3D 'input' = ||=0A= !['button', 'reset', 'submit'].include(element.type)))=0A= element.select();=0A= } catch (e) { }=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.blur();=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, value) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element, value);=0A= default:=0A= return Form.Element.Serializers.textarea(element, value);=0A= }=0A= },=0A= =0A= inputSelector: function(element, value) {=0A= if (Object.isUndefined(value)) return element.checked ? = element.value : null;=0A= else element.checked =3D !!value;=0A= },=0A= =0A= textarea: function(element, value) {=0A= if (Object.isUndefined(value)) return element.value;=0A= else element.value =3D value;=0A= },=0A= =0A= select: function(element, index) {=0A= if (Object.isUndefined(index))=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, value, single =3D !Object.isArray(index);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= value =3D this.optionValue(opt);=0A= if (single) {=0A= if (value =3D=3D index) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D index.include(value);=0A= }=0A= }=0A= },=0A= =0A= selectOne: function(element) {=0A= var index =3D element.selectedIndex;=0A= return index >=3D 0 ? this.optionValue(element.options[index]) : = null;=0A= },=0A= =0A= selectMany: function(element) {=0A= var values, length =3D element.length;=0A= if (!length) return null;=0A= =0A= for (var i =3D 0, values =3D []; i < length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) values.push(this.optionValue(opt));=0A= }=0A= return values;=0A= },=0A= =0A= optionValue: function(opt) {=0A= // extend element because hasAttribute may not be native=0A= return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A= initialize: function($super, element, frequency, callback) {=0A= $super(callback, frequency);=0A= this.element =3D $(element);=0A= this.lastValue =3D this.getValue();=0A= },=0A= =0A= execute: function() {=0A= var value =3D this.getValue();=0A= if (Object.isString(this.lastValue) && Object.isString(value) ?=0A= this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= });=0A= =0A= Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D Class.create({=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= Form.getElements(this.element).each(this.registerCallback, this);=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= });=0A= =0A= Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) var Event =3D { };=0A= =0A= Object.extend(Event, {=0A= KEY_BACKSPACE: 8,=0A= KEY_TAB: 9,=0A= KEY_RETURN: 13,=0A= KEY_ESC: 27,=0A= KEY_LEFT: 37,=0A= KEY_UP: 38,=0A= KEY_RIGHT: 39,=0A= KEY_DOWN: 40,=0A= KEY_DELETE: 46,=0A= KEY_HOME: 36,=0A= KEY_END: 35,=0A= KEY_PAGEUP: 33,=0A= KEY_PAGEDOWN: 34,=0A= KEY_INSERT: 45,=0A= =0A= cache: { },=0A= =0A= relatedTarget: function(event) {=0A= var element;=0A= switch(event.type) {=0A= case 'mouseover': element =3D event.fromElement; break;=0A= case 'mouseout': element =3D event.toElement; break;=0A= default: return null;=0A= }=0A= return Element.extend(element);=0A= }=0A= });=0A= =0A= Event.Methods =3D (function() {=0A= var isButton;=0A= =0A= if (Prototype.Browser.IE) {=0A= var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A= isButton =3D function(event, code) {=0A= return event.button =3D=3D buttonMap[code];=0A= };=0A= =0A= } else if (Prototype.Browser.WebKit) {=0A= isButton =3D function(event, code) {=0A= switch (code) {=0A= case 0: return event.which =3D=3D 1 && !event.metaKey;=0A= case 1: return event.which =3D=3D 1 && event.metaKey;=0A= default: return false;=0A= }=0A= };=0A= =0A= } else {=0A= isButton =3D function(event, code) {=0A= return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code);=0A= };=0A= }=0A= =0A= return {=0A= isLeftClick: function(event) { return isButton(event, 0) },=0A= isMiddleClick: function(event) { return isButton(event, 1) },=0A= isRightClick: function(event) { return isButton(event, 2) },=0A= =0A= element: function(event) {=0A= var node =3D Event.extend(event).target;=0A= return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? = node.parentNode : node);=0A= },=0A= =0A= findElement: function(event, expression) {=0A= var element =3D Event.element(event);=0A= if (!expression) return element;=0A= var elements =3D [element].concat(element.ancestors());=0A= return Selector.findElement(elements, expression, 0);=0A= },=0A= =0A= pointer: function(event) {=0A= return {=0A= x: event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || = document.body.scrollLeft)),=0A= y: event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || = document.body.scrollTop))=0A= };=0A= },=0A= =0A= pointerX: function(event) { return Event.pointer(event).x },=0A= pointerY: function(event) { return Event.pointer(event).y },=0A= =0A= stop: function(event) {=0A= Event.extend(event);=0A= event.preventDefault();=0A= event.stopPropagation();=0A= event.stopped =3D true;=0A= }=0A= };=0A= })();=0A= =0A= Event.extend =3D (function() {=0A= var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) {=0A= m[name] =3D Event.Methods[name].methodize();=0A= return m;=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(methods, {=0A= stopPropagation: function() { this.cancelBubble =3D true },=0A= preventDefault: function() { this.returnValue =3D false },=0A= inspect: function() { return "[object Event]" }=0A= });=0A= =0A= return function(event) {=0A= if (!event) return false;=0A= if (event._extendedByPrototype) return event;=0A= =0A= event._extendedByPrototype =3D Prototype.emptyFunction;=0A= var pointer =3D Event.pointer(event);=0A= Object.extend(event, {=0A= target: event.srcElement,=0A= relatedTarget: Event.relatedTarget(event),=0A= pageX: pointer.x,=0A= pageY: pointer.y=0A= });=0A= return Object.extend(event, methods);=0A= };=0A= =0A= } else {=0A= Event.prototype =3D Event.prototype || = document.createEvent("HTMLEvents").__proto__;=0A= Object.extend(Event.prototype, methods);=0A= return Prototype.K;=0A= }=0A= })();=0A= =0A= Object.extend(Event, (function() {=0A= var cache =3D Event.cache;=0A= =0A= function getEventID(element) {=0A= if (element._prototypeEventID) return element._prototypeEventID[0];=0A= arguments.callee.id =3D arguments.callee.id || 1;=0A= return element._prototypeEventID =3D [++arguments.callee.id];=0A= }=0A= =0A= function getDOMEventName(eventName) {=0A= if (eventName && eventName.include(':')) return "dataavailable";=0A= return eventName;=0A= }=0A= =0A= function getCacheForID(id) {=0A= return cache[id] =3D cache[id] || { };=0A= }=0A= =0A= function getWrappersForEventName(id, eventName) {=0A= var c =3D getCacheForID(id);=0A= return c[eventName] =3D c[eventName] || [];=0A= }=0A= =0A= function createWrapper(element, eventName, handler) {=0A= var id =3D getEventID(element);=0A= var c =3D getWrappersForEventName(id, eventName);=0A= if (c.pluck("handler").include(handler)) return false;=0A= =0A= var wrapper =3D function(event) {=0A= if (!Event || !Event.extend ||=0A= (event.eventName && event.eventName !=3D eventName))=0A= return false;=0A= =0A= Event.extend(event);=0A= handler.call(element, event);=0A= };=0A= =0A= wrapper.handler =3D handler;=0A= c.push(wrapper);=0A= return wrapper;=0A= }=0A= =0A= function findWrapper(id, eventName, handler) {=0A= var c =3D getWrappersForEventName(id, eventName);=0A= return c.find(function(wrapper) { return wrapper.handler =3D=3D = handler });=0A= }=0A= =0A= function destroyWrapper(id, eventName, handler) {=0A= var c =3D getCacheForID(id);=0A= if (!c[eventName]) return false;=0A= c[eventName] =3D c[eventName].without(findWrapper(id, eventName, = handler));=0A= }=0A= =0A= function destroyCache() {=0A= for (var id in cache)=0A= for (var eventName in cache[id])=0A= cache[id][eventName] =3D null;=0A= }=0A= =0A= if (window.attachEvent) {=0A= window.attachEvent("onunload", destroyCache);=0A= }=0A= =0A= return {=0A= observe: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var name =3D getDOMEventName(eventName);=0A= =0A= var wrapper =3D createWrapper(element, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.addEventListener) {=0A= element.addEventListener(name, wrapper, false);=0A= } else {=0A= element.attachEvent("on" + name, wrapper);=0A= }=0A= =0A= return element;=0A= },=0A= =0A= stopObserving: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var id =3D getEventID(element), name =3D = getDOMEventName(eventName);=0A= =0A= if (!handler && eventName) {=0A= getWrappersForEventName(id, eventName).each(function(wrapper) {=0A= element.stopObserving(eventName, wrapper.handler);=0A= });=0A= return element;=0A= =0A= } else if (!eventName) {=0A= Object.keys(getCacheForID(id)).each(function(eventName) {=0A= element.stopObserving(eventName);=0A= });=0A= return element;=0A= }=0A= =0A= var wrapper =3D findWrapper(id, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, wrapper, false);=0A= } else {=0A= element.detachEvent("on" + name, wrapper);=0A= }=0A= =0A= destroyWrapper(id, eventName, handler);=0A= =0A= return element;=0A= },=0A= =0A= fire: function(element, eventName, memo) {=0A= element =3D $(element);=0A= if (element =3D=3D document && document.createEvent && = !element.dispatchEvent)=0A= element =3D document.documentElement;=0A= =0A= var event;=0A= if (document.createEvent) {=0A= event =3D document.createEvent("HTMLEvents");=0A= event.initEvent("dataavailable", true, true);=0A= } else {=0A= event =3D document.createEventObject();=0A= event.eventType =3D "ondataavailable";=0A= }=0A= =0A= event.eventName =3D eventName;=0A= event.memo =3D memo || { };=0A= =0A= if (document.createEvent) {=0A= element.dispatchEvent(event);=0A= } else {=0A= element.fireEvent(event.eventType, event);=0A= }=0A= =0A= return Event.extend(event);=0A= }=0A= };=0A= })());=0A= =0A= Object.extend(Event, Event.Methods);=0A= =0A= Element.addMethods({=0A= fire: Event.fire,=0A= observe: Event.observe,=0A= stopObserving: Event.stopObserving=0A= });=0A= =0A= Object.extend(document, {=0A= fire: Element.Methods.fire.methodize(),=0A= observe: Element.Methods.observe.methodize(),=0A= stopObserving: Element.Methods.stopObserving.methodize(),=0A= loaded: false=0A= });=0A= =0A= (function() {=0A= /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A= Matthias Miller, Dean Edwards and John Resig. */=0A= =0A= var timer;=0A= =0A= function fireContentLoadedEvent() {=0A= if (document.loaded) return;=0A= if (timer) window.clearInterval(timer);=0A= document.fire("dom:loaded");=0A= document.loaded =3D true;=0A= }=0A= =0A= if (document.addEventListener) {=0A= if (Prototype.Browser.WebKit) {=0A= timer =3D window.setInterval(function() {=0A= if (/loaded|complete/.test(document.readyState))=0A= fireContentLoadedEvent();=0A= }, 0);=0A= =0A= Event.observe(window, "load", fireContentLoadedEvent);=0A= =0A= } else {=0A= document.addEventListener("DOMContentLoaded",=0A= fireContentLoadedEvent, false);=0A= }=0A= =0A= } else {=0A= document.write("