kivio

kivioglobal.cpp

00001 /* This file is part of the KDE project
00002    Copyright (C) 2003-2004 Peter Simonsson <psn@linux.se>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include "kivioglobal.h"
00021 
00022 #include <qdom.h>
00023 #include <qpixmap.h>
00024 #include <qprinter.h>
00025 
00026 #include <kdebug.h>
00027 #include <kglobal.h>
00028 #include <klocale.h>
00029 
00030 #include <KoGenStyles.h>
00031 #include <KoZoomHandler.h>
00032 #include <KoGlobal.h>
00033 
00034 #include "kivio_common.h"
00035 #include "kivio_settings.h"
00036 #include "kivio_stencil.h"
00037 #include "kivio_intra_stencil_data.h"
00038 #include "kivio_screen_painter.h"
00039 
00040 struct PaperSizeDef {
00041   const char* title;
00042   float width;
00043   float height;
00044   int unit;
00045 };
00046 
00047 void Kivio::savePageLayout(QDomElement& e, const KoPageLayout& layout)
00048 {
00049   XmlWriteFloat(e, "width", layout.ptWidth);
00050   XmlWriteFloat(e, "height", layout.ptHeight);
00051   XmlWriteFloat(e, "marginLeft", layout.ptLeft);
00052   XmlWriteFloat(e, "marginRight", layout.ptRight);
00053   XmlWriteFloat(e, "marginTop", layout.ptTop);
00054   XmlWriteFloat(e, "marginBottom", layout.ptBottom);
00055   XmlWriteString(e, "format", KoPageFormat::formatString(layout.format));
00056   XmlWriteString(e, "orientation", Kivio::orientationString(layout.orientation));
00057 }
00058 
00059 // ## TODO: remove this method, now that layout.saveOasis() does it all
00060 KoGenStyle Kivio::savePageLayout(const KoPageLayout& layout)
00061 {
00062   return layout.saveOasis();
00063 }
00064 
00065 KoPageLayout Kivio::loadPageLayout(const QDomElement& e)
00066 {
00067   KoPageLayout layout;
00068 
00069   if(e.hasAttribute("unit")) {
00070     // Compatibility with Kivio <= 1.2.x
00071     kdDebug(43000) << "Compatibility mode..." << endl;
00072     KoUnit::Unit unit = Kivio::convToKoUnit(XmlReadInt(e, "unit", 0));
00073     layout.ptWidth = KoUnit::fromUserValue(XmlReadFloat(e, "width", 0.0), unit);
00074     layout.ptHeight = KoUnit::fromUserValue(XmlReadFloat(e, "height", 0.0), unit);
00075     layout.ptLeft = KoUnit::fromUserValue(XmlReadFloat(e, "marginLeft", 0.0), unit);
00076     layout.ptRight = KoUnit::fromUserValue(XmlReadFloat(e, "marginRight", 0.0), unit);
00077     layout.ptTop = KoUnit::fromUserValue(XmlReadFloat(e, "marginTop", 0.0), unit);
00078     layout.ptBottom = KoUnit::fromUserValue(XmlReadFloat(e, "marginBottom", 0.0), unit);
00079     Kivio::setFormatOrientation(layout);
00080     kdDebug(43000) << "Ready." << endl;
00081   } else {
00082     layout.ptWidth = XmlReadFloat(e, "width", 0.0);
00083     layout.ptHeight = XmlReadFloat(e, "height", 0.0);
00084     layout.ptLeft = XmlReadFloat(e, "marginLeft", 0.0);
00085     layout.ptRight = XmlReadFloat(e, "marginRight", 0.0);
00086     layout.ptTop = XmlReadFloat(e, "marginTop", 0.0);
00087     layout.ptBottom = XmlReadFloat(e, "marginBottom", 0.0);
00088     layout.format = KoPageFormat::formatFromString(XmlReadString(e, "format", pageSizeString(KGlobal::locale()->pageSize())));
00089     layout.orientation = Kivio::orientationFromString(XmlReadString(e, "orientation", "Portrait"));
00090   }
00091 
00092   return layout;
00093 }
00094 
00095 KoUnit::Unit Kivio::convToKoUnit(int tkUnit)
00096 {
00097   switch(tkUnit) {
00098     case 0:
00099       return KoUnit::U_PT;
00100     case 1:
00101       return KoUnit::U_MM;
00102     case 2:
00103       return KoUnit::U_INCH;
00104     case 3:
00105       return KoUnit::U_PI;
00106     case 4:
00107       return KoUnit::U_CM;
00108     case 5:
00109       return KoUnit::U_DD;
00110     case 6:
00111       return KoUnit::U_CC;
00112   }
00113 
00114   return KoUnit::U_PT;
00115 }
00116 
00117 QString Kivio::orientationString(KoOrientation o)
00118 {
00119   if(o == PG_LANDSCAPE) {
00120     return "Landscape";
00121   }
00122 
00123   return "Portrait";
00124 }
00125 
00126 KoOrientation Kivio::orientationFromString(const QString& s)
00127 {
00128   if(s == "Landscape") {
00129     return PG_LANDSCAPE;
00130   }
00131 
00132   return PG_PORTRAIT;
00133 }
00134 
00135 void Kivio::setFormatOrientation(KoPageLayout& layout)
00136 {
00137   const PaperSizeDef PapersTable[] = {
00138     {"A0",841,1189,KoUnit::U_MM},
00139     {"A1",594,841,KoUnit::U_MM},
00140     {"A2",420,594,KoUnit::U_MM},
00141     {"A3",297,420,KoUnit::U_MM},
00142     {"A4",210,297,KoUnit::U_MM},
00143     {"A5",148,210,KoUnit::U_MM},
00144 
00145     {"B4",250,353,KoUnit::U_MM},
00146     {"B6",125,176,KoUnit::U_MM},
00147 
00148     {"C4",229,324,KoUnit::U_MM},
00149     {"C5",162,229,KoUnit::U_MM},
00150     {"C5",114,162,KoUnit::U_MM},
00151 
00152     {"DL",110,220,KoUnit::U_MM},
00153 
00154     {"Letter",8.5,11,KoUnit::U_INCH},
00155     {"Legal",8.5,14,KoUnit::U_INCH},
00156 
00157     {"A",8.5,11,KoUnit::U_INCH},
00158     {"B",11,17,KoUnit::U_INCH},
00159     {"C",17,22,KoUnit::U_INCH},
00160     {"D",22,34,KoUnit::U_INCH},
00161     {"E",34,44,KoUnit::U_INCH},
00162 
00163     {"null",0,0,-2}     // -2 for end of list
00164   };
00165   int j = 0;
00166   PaperSizeDef sizeDef = PapersTable[0];
00167   bool found = false;
00168   float width, height;
00169   layout.format = PG_CUSTOM;
00170   layout.orientation = PG_PORTRAIT;
00171 
00172   while((sizeDef.unit != -2) && !found) {
00173     width = KoUnit::fromUserValue(sizeDef.width, static_cast<KoUnit::Unit>(sizeDef.unit));
00174     height = KoUnit::fromUserValue(sizeDef.height, static_cast<KoUnit::Unit>(sizeDef.unit));
00175 
00176     if((layout.ptWidth == width) && (layout.ptHeight == height)) {
00177       layout.format = KoPageFormat::formatFromString(sizeDef.title);
00178       layout.orientation = PG_PORTRAIT;
00179       found = true;
00180     } else if((layout.ptWidth == height) && (layout.ptHeight == width)) {
00181       layout.format = KoPageFormat::formatFromString(sizeDef.title);
00182       layout.orientation = PG_LANDSCAPE;
00183       found = true;
00184     }
00185 
00186     sizeDef = PapersTable[++j];
00187   }
00188 }
00189 
00190 KoSize Kivio::loadSize(const QDomElement& e, const QString& name, const KoSize& def)
00191 {
00192   KoSize size;
00193   if(e.hasAttribute(name + "Unit")) {
00194     // Compatibility with Kivio <= 1.2.x
00195     KoUnit::Unit unit = Kivio::convToKoUnit(XmlReadInt(e, name + "Unit", 0));
00196     size.setWidth(KoUnit::fromUserValue(XmlReadFloat(e, name + "Width", def.width()), unit));
00197     size.setHeight(KoUnit::fromUserValue(XmlReadFloat(e, name + "Height", def.height()), unit));
00198   } else {
00199     size.setWidth(XmlReadFloat(e, name + "Width", def.width()));
00200     size.setHeight(XmlReadFloat(e, name + "Height", def.height()));
00201   }
00202 
00203   return size;
00204 }
00205 
00206 void Kivio::saveSize(QDomElement& e, const QString& name, const KoSize& size)
00207 {
00208   XmlWriteFloat(e, name + "Width", size.width());
00209   XmlWriteFloat(e, name + "Height", size.height());
00210 }
00211 
00212 QString Kivio::pageSizeString(int pageSize)
00213 {
00214   QString psStr = "A4";
00215 
00216   switch(pageSize) {
00217     case QPrinter::A0:
00218       psStr = "A0";
00219       break;
00220     case QPrinter::A1:
00221       psStr = "A1";
00222       break;
00223     case QPrinter::A2:
00224       psStr = "A2";
00225       break;
00226     case QPrinter::A3:
00227       psStr = "A3";
00228       break;
00229     case QPrinter::A5:
00230       psStr = "A5";
00231       break;
00232     case QPrinter::A6:
00233       psStr = "A6";
00234       break;
00235     case QPrinter::A7:
00236       psStr = "A7";
00237       break;
00238     case QPrinter::A8:
00239       psStr = "A8";
00240       break;
00241     case QPrinter::A9:
00242       psStr = "A9";
00243       break;
00244     case QPrinter::B0:
00245       psStr = "B0";
00246       break;
00247     case QPrinter::B1:
00248       psStr = "B1";
00249       break;
00250     case QPrinter::B10:
00251       psStr = "B10";
00252       break;
00253     case QPrinter::B2:
00254       psStr = "B2";
00255       break;
00256     case QPrinter::B3:
00257       psStr = "B3";
00258       break;
00259     case QPrinter::B4:
00260       psStr = "B4";
00261       break;
00262     case QPrinter::B5:
00263       psStr = "B5";
00264       break;
00265     case QPrinter::B6:
00266       psStr = "B6";
00267       break;
00268     case QPrinter::B7:
00269       psStr = "B7";
00270       break;
00271     case QPrinter::B8:
00272       psStr = "B8";
00273       break;
00274     case QPrinter::B9:
00275       psStr = "B9";
00276       break;
00277     case QPrinter::C5E:
00278       psStr = "C5";
00279       break;
00280     case QPrinter::Comm10E:
00281       psStr = "Comm10";
00282       break;
00283     case QPrinter::DLE:
00284       psStr = "DL";
00285       break;
00286     case QPrinter::Executive:
00287       psStr = "Executive";
00288       break;
00289     case QPrinter::Folio:
00290       psStr = "Folio";
00291       break;
00292     case QPrinter::Ledger:
00293       psStr = "Ledger";
00294       break;
00295     case QPrinter::Legal:
00296       psStr = "Legal";
00297       break;
00298     case QPrinter::Letter:
00299       psStr = "Letter";
00300       break;
00301     case QPrinter::Tabloid:
00302       psStr = "Tabloid";
00303       break;
00304     case QPrinter::Custom:
00305       psStr = "Custom";
00306       break;
00307     case QPrinter::A4:
00308     default:
00309       psStr = "A4";
00310       break;
00311   };
00312 
00313   return psStr;
00314 }
00315 
00316 QPixmap Kivio::arrowHeadPixmap()
00317 {
00318   const char* lineends[] = {
00319     "50 272 2 1",
00320     "  c #000000",
00321     "X c #ffffff",
00322     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00323     "X                                                X",
00324     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00325     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00326     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXX X",
00327     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXX X",
00328     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00329     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX X",
00330     "X X                                        XXXXX X",
00331     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX X",
00332     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00333     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXX X",
00334     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXX X",
00335     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00336     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00337     "X                                                X",
00338     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00339     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00340     "X                                                X",
00341     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00342     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00343     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXX X",
00344     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXXXXXXXXX X",
00345     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXXXXXXX X",
00346     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX           XXXXXXX X",
00347     "X X                                        XXXXX X",
00348     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX           XXXXXXX X",
00349     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXXXXXXX X",
00350     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXXXXXXXXX X",
00351     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXX X",
00352     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00353     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00354     "X                                                X",
00355     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00356     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00357     "X                                                X",
00358     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00359     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00360     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXX X",
00361     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X   XXXXXXXXXXXXX X",
00362     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX   XXXXXXXXXX X",
00363     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX   XXXXXXX X",
00364     "X X                            XXXXXXXXXX  XXXXX X",
00365     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX   XXXXXXX X",
00366     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX   XXXXXXXXXX X",
00367     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X   XXXXXXXXXXXXX X",
00368     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXX X",
00369     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00370     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00371     "X                                                X",
00372     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00373     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00374     "X                                                X",
00375     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00376     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00377     "X XXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXXXXX X",
00378     "X XXXXXXXXXXXXXXXXXXXXXXXX    XXXX    XXXXXXXXXX X",
00379     "X XXXXXXXXXXXXXXXXXXXXXXXX      XX      XXXXXXXX X",
00380     "X XXXXXXXXXXXXXXXXXXXXXXXX                XXXXXX X",
00381     "X X                                        XXXXX X",
00382     "X XXXXXXXXXXXXXXXXXXXXXXXX       X       XXXXXXX X",
00383     "X XXXXXXXXXXXXXXXXXXXXXXXX     XXX     XXXXXXXXX X",
00384     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXX   XXXXXXXXXXX X",
00385     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
00386     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00387     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00388     "X                                                X",
00389     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00390     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00391     "X                                                X",
00392     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00393     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00394     "X XXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXXXXX X",
00395     "X XXXXXXXXXXXXXXXXXXXXXXXX X  XXXX X  XXXXXXXXXX X",
00396     "X XXXXXXXXXXXXXXXXXXXXXXXX XXX  XX XXX  XXXXXXXX X",
00397     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXX  XXXXXX X",
00398     "X X                        XXXXXX  XXXXXX  XXXXX X",
00399     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXX  X XXXX  XXXXXXX X",
00400     "X XXXXXXXXXXXXXXXXXXXXXXXX XX  XXX XX  XXXXXXXXX X",
00401     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXX   XXXXXXXXXXX X",
00402     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
00403     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00404     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00405     "X                                                X",
00406     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00407     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00408     "X                                                X",
00409     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00410     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00411     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
00412     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X",
00413     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00414     "X X                                       XXXXXX X",
00415     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
00416     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00417     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00418     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00419     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00420     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00421     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00422     "X                                                X",
00423     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00424     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00425     "X                                                X",
00426     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00427     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00428     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00429     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00430     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
00431     "X X                                       XXXXXX X",
00432     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00433     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X",
00434     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
00435     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00436     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00437     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00438     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00439     "X                                                X",
00440     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00441     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00442     "X                                                X",
00443     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00444     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00445     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
00446     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
00447     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
00448     "X X                                       XXXXXX X",
00449     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
00450     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
00451     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
00452     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00453     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00454     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00455     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00456     "X                                                X",
00457     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00458     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00459     "X                                                X",
00460     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00461     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00462     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00463     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00464     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00465     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
00466     "X X                                        XXXXX X",
00467     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00468     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00469     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
00470     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00471     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00472     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00473     "X                                                X",
00474     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00475     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00476     "X                                                X",
00477     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00478     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00479     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00480     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
00481     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00482     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00483     "X X                                        XXXXX X",
00484     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
00485     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00486     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00487     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00488     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00489     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00490     "X                                                X",
00491     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00492     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00493     "X                                                X",
00494     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00495     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00496     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00497     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00498     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00499     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00500     "X X                                        XXXXX X",
00501     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00502     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00503     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00504     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00505     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00506     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00507     "X                                                X",
00508     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00509     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00510     "X                                                X",
00511     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00512     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00513     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXX X",
00514     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXXXXXXXXX X",
00515     "X XXXXXXXXXXXXXXXXXXXXXXXXXXX           XXXXXXXX X",
00516     "X XXXXXXXXXXXXXXXXXXXXXXXXX               XXXXXX X",
00517     "X X                                        XXXXX X",
00518     "X XXXXXXXXXXXXXXXXXXXXXXXXX              XXXXXXX X",
00519     "X XXXXXXXXXXXXXXXXXXXXXXXXXXX          XXXXXXXXX X",
00520     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXXXXXX X",
00521     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXX X",
00522     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00523     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00524     "X                                                X",
00525     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00526     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00527     "X                                                X",
00528     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00529     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00530     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXX X",
00531     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXXXXX X",
00532     "X XXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXXXXXX X",
00533     "X XXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  XXXXXX X",
00534     "X X                        XXXXXXXXXXXXXX  XXXXX X",
00535     "X XXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXX  XXXXXXX X",
00536     "X XXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXX X",
00537     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XX  XXXXXXXXXXX X",
00538     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXX X",
00539     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00540     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00541     "X                                                X",
00542     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00543     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00544     "X                                                X",
00545     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00546     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00547     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00548     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX X",
00549     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00550     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXX X",
00551     "X X                                        XXXXX X",
00552     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXX X",
00553     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00554     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX X",
00555     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00556     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00557     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00558     "X                                                X",
00559     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00560     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00561     "X                                                X",
00562     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00563     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00564     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXX X",
00565     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00566     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00567     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00568     "X X                                        XXXXX X",
00569     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00570     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00571     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00572     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXX X",
00573     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00574     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00575     "X                                                X",
00576     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00577     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00578     "X                                                X",
00579     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00580     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00581     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00582     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX  XXXXXX X",
00583     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXX X",
00584     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXXXXX X",
00585     "X X                                        XXXXX X",
00586     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXXXXX X",
00587     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXX X",
00588     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX  XXXXXX X",
00589     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00590     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00591     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00592     "X                                                X",
00593     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"//,
00594     /*"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00595     "X                                                X",
00596     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00597     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
00598     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00599     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00600     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
00601     "X X                                       XXXXXX X",
00602     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
00603     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
00604     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00605     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
00606     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00607     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00608     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00609     "X                                                X",
00610     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00611     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00612     "X                                                X",
00613     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00614     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
00615     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXX X",
00616     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXX X",
00617     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXXXXX X",
00618     "X X                                       XXXXXX X",
00619     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXXXXX X",
00620     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXX X",
00621     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXX X",
00622     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
00623     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00624     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00625     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00626     "X                                                X",
00627     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00628     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00629     "X                                                X",
00630     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00631     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXX X",
00632     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXX X",
00633     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXX X",
00634     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXX X",
00635     "X X                                       XXXXXX X",
00636     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXX X",
00637     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXX X",
00638     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXX X",
00639     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
00640     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00641     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00642     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00643     "X                                                X",
00644     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00645     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00646     "X                                                X",
00647     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00648     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXX X",
00649     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXXXXXXXXX X",
00650     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXXXX X",
00651     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXXXX X",
00652     "X X                                       XXXXXX X",
00653     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXXXXXXX X",
00654     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXXXXXX X",
00655     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXX X",
00656     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
00657     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00658     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00659     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00660     "X                                                X",
00661     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00662     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00663     "X                                                X",
00664     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00665     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00666     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXX X",
00667     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXXXXXXX X",
00668     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXX X",
00669     "X X                                       XXXXXX X",
00670     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXX X",
00671     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXXXXX X",
00672     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXX X",
00673     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00674     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00675     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00676     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00677     "X                                                X",
00678     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00679     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00680     "X                                                X",
00681     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00682     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00683     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXX X",
00684     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXXXX X",
00685     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXXXX X",
00686     "X X                                       XXXXXX X",
00687     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXXXXXX X",
00688     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXXXX X",
00689     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXX X",
00690     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00691     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00692     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00693     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00694     "X                                                X",
00695     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00696     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00697     "X                                                X",
00698     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00699     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00700     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00701     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXX X",
00702     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXX X",
00703     "X X                                       XXXXXX X",
00704     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXX X",
00705     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXX X",
00706     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00707     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00708     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00709     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00710     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00711     "X                                                X",
00712     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00713     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00714     "X                                                X",
00715     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00716     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00717     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXX X",
00718     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00719     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXXXX X",
00720     "X X                                       XXXXXX X",
00721     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXXXX X",
00722     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXXXXXXXX X",
00723     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXX X",
00724     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00725     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00726     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00727     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00728     "X                                                X",
00729     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00730     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00731     "X                                                X",
00732     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00733     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00734     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00735     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXX X",
00736     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXX X",
00737     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXX X",
00738     "X X                                          XXX X",
00739     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXX X",
00740     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XXXX X",
00741     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXX X",
00742     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00743     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00744     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00745     "X                                                X",
00746     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00747     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00748     "X                                                X",
00749     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00750     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00751     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00752     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00753     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00754     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00755     "X X                                          XXX X",
00756     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00757     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00758     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00759     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00760     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00761     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00762     "X                                                X",
00763     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",*/
00764     /*"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00765     "X                                                X",
00766     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00767     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00768     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00769     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXX X",
00770     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXX X",
00771     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXX X",
00772     "X X                                    XXX XXXXX X",
00773     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXX X",
00774     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXX X",
00775     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXX X",
00776     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
00777     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00778     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00779     "X                                                X",
00780     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00781     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00782     "X                                                X",
00783     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00784     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00785     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXX X",
00786     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X  XXXXXXXXXX X",
00787     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXXXX X",
00788     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX  XXXXXX X",
00789     "X X                                XXXXXX  XXXXX X",
00790     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX  XXXXXXX X",
00791     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  XXXXXXXXX X",
00792     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXX X",
00793     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
00794     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00795     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00796     "X                                                X",
00797     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00798     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00799     "X                                                X",
00800     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00801     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00802     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00803     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00804     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X  XXXXXXXX X",
00805     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXX X",
00806     "X X                                  XXXXX XXXXX X",
00807     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXX X",
00808     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  XXXXXXXX X",
00809     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00810     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00811     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00812     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00813     "X                                                X",
00814     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00815     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00816     "X                                                X",
00817     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00818     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00819     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00820     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00821     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXXXX X",
00822     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX  XXXXXX X",
00823     "X X                                XXXXXXX XXXXX X",
00824     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX  XXXXXX X",
00825     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX  XXXXXXXX X",
00826     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXX X",
00827     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00828     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00829     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00830     "X                                                X",
00831     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00832     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00833     "X                                                X",
00834     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00835     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00836     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00837     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXX X",
00838     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXX X",
00839     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  XXXXXXX X",
00840     "X X                                  XXXX  XXXXX X",
00841     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  XXXXXXX X",
00842     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X  XXXXXXXXX X",
00843     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXX X",
00844     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
00845     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00846     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00847     "X                                                X",
00848     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00849     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00850     "X                                                X",
00851     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00852     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00853     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00854     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXX X",
00855     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXX X",
00856     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX X",
00857     "X X                                     XXXX XXX X",
00858     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX X",
00859     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXX X",
00860     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXX X",
00861     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00862     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00863     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00864     "X                                                X",
00865     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00866     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00867     "X                                                X",
00868     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00869     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00870     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00871     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00872     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
00873     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
00874     "X X                                    XXXXX XXX X",
00875     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
00876     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
00877     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXX X",
00878     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00879     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00880     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00881     "X                                                X",
00882     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00883     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00884     "X                                                X",
00885     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00886     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00887     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00888     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
00889     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
00890     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
00891     "X X                                        XXXXX X",
00892     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
00893     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
00894     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
00895     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00896     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00897     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00898     "X                                                X",
00899     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00900     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00901     "X                                                X",
00902     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00903     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00904     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00905     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
00906     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
00907     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
00908     "X X                                        XXXXX X",
00909     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
00910     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
00911     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
00912     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00913     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00914     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00915     "X                                                X",
00916     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00917     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00918     "X                                                X",
00919     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00920     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00921     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00922     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXX  XXXXXX X",
00923     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
00924     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXXXXXX X",
00925     "X X                            XXXXX       XXXXX X",
00926     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXXXXXX X",
00927     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
00928     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXX  XXXXXX X",
00929     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
00930     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00931     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00932     "X                                                X",
00933     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00934     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00935     "X                                                X",
00936     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00937     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00938     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00939     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXX XXXXXXXX X",
00940     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
00941     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XX XXXXXXXX X",
00942     "X X                            XXXXX       XXXXX X",
00943     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XX XXXXXXXX X",
00944     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
00945     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXX XXXXXXXX X",
00946     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00947     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00948     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00949     "X                                                X",
00950     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00951     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00952     "X                                                X",
00953     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00954     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00955     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00956     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXXXX X",
00957     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX XXXXXX X",
00958     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXX XXXXX X",
00959     "X X                                  XXXXX XXXXX X",
00960     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXX XXXXX X",
00961     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX XXXXXX X",
00962     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXXXX X",
00963     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00964     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00965     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00966     "X                                                X",
00967     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00968     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00969     "X                                                X",
00970     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00971     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00972     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00973     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX   XXXXXXX X",
00974     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXX XXXXXX X",
00975     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX XXXXX X",
00976     "X X                                  XXXXX XXXXX X",
00977     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX XXXXX X",
00978     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXX XXXXXX X",
00979     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX   XXXXXXX X",
00980     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00981     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00982     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00983     "X                                                X",
00984     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00985     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
00986     "X                                                X",
00987     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00988     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00989     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00990     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX   XXXXXXX X",
00991     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXX XXXXXX X",
00992     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX XXXXX X",
00993     "X X                                  XXXXX XXXXX X",
00994     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX XXXXX X",
00995     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXX XXXXXX X",
00996     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX   XXXXXXX X",
00997     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00998     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
00999     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01000     "X                                                X",
01001     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01002     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01003     "X                                                X",
01004     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01005     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01006     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXX X",
01007     "X XXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXX   XXXXXXX X",
01008     "X XXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXX XXX XXXXXX X",
01009     "X XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  X XXXXX XXXXX X",
01010     "X X                 XXXXXXXXXXXXXXX  XXXXX XXXXX X",
01011     "X XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  X XXXXX XXXXX X",
01012     "X XXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXX XXX XXXXXX X",
01013     "X XXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXX   XXXXXXX X",
01014     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXX X",
01015     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01016     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01017     "X                                                X",
01018     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01019     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01020     "X                                                X",
01021     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01022     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01023     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01024     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXXXX X",
01025     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX     XXXXXX X",
01026     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX       XXXXX X",
01027     "X X                                        XXXXX X",
01028     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX       XXXXX X",
01029     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX     XXXXXX X",
01030     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX   XXXXXXX X",
01031     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01032     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01033     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01034     "X                                                X",
01035     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01036     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01037     "X                                                X",
01038     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01039     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01040     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01041     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX   XXXXXXX X",
01042     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX     XXXXXX X",
01043     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX       XXXXX X",
01044     "X X                                        XXXXX X",
01045     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX       XXXXX X",
01046     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX     XXXXXX X",
01047     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX   XXXXXXX X",
01048     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01049     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01050     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01051     "X                                                X",
01052     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01053     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01054     "X                                                X",
01055     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01056     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01057     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01058     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX   XXXXXXX X",
01059     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX     XXXXXX X",
01060     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX       XXXXX X",
01061     "X X                                        XXXXX X",
01062     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX       XXXXX X",
01063     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX     XXXXXX X",
01064     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX   XXXXXXX X",
01065     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01066     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01067     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01068     "X                                                X",
01069     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01070     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01071     "X                                                X",
01072     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01073     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01074     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXX X",
01075     "X XXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXX   XXXXXXX X",
01076     "X XXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXX     XXXXXX X",
01077     "X XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  X       XXXXX X",
01078     "X X                 XXXXXXXXXXXXXXX        XXXXX X",
01079     "X XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  X       XXXXX X",
01080     "X XXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXX     XXXXXX X",
01081     "X XXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXX   XXXXXXX X",
01082     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXX X",
01083     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01084     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01085     "X                                                X",
01086     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01087     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01088     "X                                                X",
01089     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01090     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01091     "X XXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXXXXX X",
01092     "X XXXXXXXXXXXXXXXXXXXXXXXX    XXXX    XXXXXXXXXX X",
01093     "X XXXXXXXXXXXXXXXXXXXXXXXX      XX      XXXXXXXX X",
01094     "X XXXXXXXXXXXXXXXXXXXXXXXX                XXXXXX X",
01095     "X X                                        XXXXX X",
01096     "X XXXXXXXXXXXXXXXXXXXXXXXX       X       XXXXXXX X",
01097     "X XXXXXXXXXXXXXXXXXXXXXXXX     XXX     XXXXXXXXX X",
01098     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXX   XXXXXXXXXXX X",
01099     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
01100     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01101     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01102     "X                                                X",
01103     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01104     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01105     "X                                                X",
01106     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01107     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01108     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01109     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX   XXXXXXX X",
01110     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX     XXXXXX X",
01111     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX       XXXXX X",
01112     "X X                                        XXXXX X",
01113     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX       XXXXX X",
01114     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX     XXXXXX X",
01115     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX   XXXXXXX X",
01116     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01117     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01118     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01119     "X                                                X",
01120     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01121     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01122     "X                                                X",
01123     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01124     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01125     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01126     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX   XXXXXXX X",
01127     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX     XXXXXX X",
01128     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX       XXXXX X",
01129     "X X                                        XXXXX X",
01130     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX       XXXXX X",
01131     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX     XXXXXX X",
01132     "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX   XXXXXXX X",
01133     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01134     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01135     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01136     "X                                                X",
01137     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01138     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01139     "X                                                X",
01140     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01141     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01142     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXX X",
01143     "X XXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXX   XXXXXXX X",
01144     "X XXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXX     XXXXXX X",
01145     "X XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  X       XXXXX X",
01146     "X X                 XXXXXXXXXXXXXXX        XXXXX X",
01147     "X XXXXXXXXXXXXXXXXXX  XXXXXXXXXXX  X       XXXXX X",
01148     "X XXXXXXXXXXXXXXXXXXXX  XXXXXXX  XXXX     XXXXXX X",
01149     "X XXXXXXXXXXXXXXXXXXXXXX  XXX  XXXXXXX   XXXXXXX X",
01150     "X XXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXX X",
01151     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01152     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01153     "X                                                X",
01154     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01155     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01156     "X                                                X",
01157     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01158     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01159     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01160     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX X",
01161     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXX X",
01162     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXX X",
01163     "X X                                  XXXXX XXXXX X",
01164     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXX X",
01165     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXX X",
01166     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX X",
01167     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01168     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01169     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01170     "X                                                X",
01171     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01172     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01173     "X                                                X",
01174     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01175     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01176     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01177     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX X",
01178     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXX X",
01179     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXXXX X",
01180     "X X                                        XXXXX X",
01181     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXXXX X",
01182     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     XXXXXX X",
01183     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX X",
01184     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01185     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01186     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01187     "X                                                X",
01188     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01189     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01190     "X                                                X",
01191     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01192     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01193     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
01194     "X XXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXXXX X",
01195     "X XXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXX X",
01196     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXX X",
01197     "X X                                        XXXXX X",
01198     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXX X",
01199     "X XXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXX X",
01200     "X XXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXXXX X",
01201     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
01202     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01203     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01204     "X                                                X",
01205     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01206     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01207     "X                                                X",
01208     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01209     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01210     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
01211     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  XXXXXXXXXXX X",
01212     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX  XXXXXXXXX X",
01213     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX  XXXXXXX X",
01214     "X X                                        XXXXX X",
01215     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX  XXXXXXX X",
01216     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX  XXXXXXXXX X",
01217     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  XXXXXXXXXXX X",
01218     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
01219     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01220     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01221     "X                                                X",
01222     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01223     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
01224     "X                                                X",
01225     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01226     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01227     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
01228     "X XXXXXXXXXXXXXXXXXXXXXX XX  XXXXXX  XXXXXXXXXXX X",
01229     "X XXXXXXXXXXXXXXXXXXXXXX XXXX  XXXXXX  XXXXXXXXX X",
01230     "X XXXXXXXXXXXXXXXXXXXXXX XXXXXX  XXXXXX  XXXXXXX X",
01231     "X X                                        XXXXX X",
01232     "X XXXXXXXXXXXXXXXXXXXXXX XXXXXX  XXXXXX  XXXXXXX X",
01233     "X XXXXXXXXXXXXXXXXXXXXXX XXXX  XXXXXX  XXXXXXXXX X",
01234     "X XXXXXXXXXXXXXXXXXXXXXX XX  XXXXXX  XXXXXXXXXXX X",
01235     "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
01236     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01237     "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
01238     "X                                                X",
01239     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"*/
01240   };
01241 
01242   return QPixmap(lineends);
01243 }
01244 
01245 QPixmap Kivio::connectorTargetPixmap()
01246 {
01247   const char * connectorTarget_xpm[] = {
01248   "7 7 3 1",
01249   "       c None",
01250   ".      c #FFFFFF",
01251   "+      c #051EFF",
01252   " .   . ",
01253   ".+. .+.",
01254   " .+.+. ",
01255   "  .+.  ",
01256   " .+.+. ",
01257   ".+. .+.",
01258   " .   . "};
01259 
01260   return QPixmap(connectorTarget_xpm);
01261 }
01262 
01263 QPixmap Kivio::lockPixmap()
01264 {
01265   const char * lock_xpm[] = {
01266   "10 10 3 1",
01267   "     c None",
01268   ".    c #FFFFFF",
01269   "+    c #000000",
01270   "    ..    ",
01271   "   .++.   ",
01272   "  .+..+.  ",
01273   "  .+..+.  ",
01274   " .++++++. ",
01275   " .+....+. ",
01276   " .+.  .+. ",
01277   " .+....+. ",
01278   " .++++++. ",
01279   "  ......  "};
01280 
01281   return QPixmap(lock_xpm);
01282 }
01283 
01284 QString Kivio::systemDefaultUnit()
01285 {
01286   QString defMS = "cm";
01287 
01288   if(KGlobal::locale()->measureSystem() == KLocale::Imperial) {
01289     defMS = "in";
01290   }
01291 
01292   return defMS;
01293 }
01294 
01295 QPixmap Kivio::generatePixmapFromStencil(int width, int height, KivioStencil* stencil)
01296 {
01297   KoZoomHandler zoomHandler;
01298   QRect rect = zoomHandler.zoomRect(stencil->rect());
01299 
01300   double zw = (double)(width - 2) / (double)rect.width();
01301   double zh = (double)(height - 2) / (double)rect.height();
01302   zoomHandler.setZoomAndResolution(qRound(kMin(zw, zh) * 100.0), KoGlobal::dpiX(), KoGlobal::dpiY());
01303   rect = zoomHandler.zoomRect(stencil->rect());
01304 
01305   QPixmap pix(width, height);
01306   pix.fill(Qt::white);
01307   KivioScreenPainter kpainter;
01308   kpainter.start(&pix);
01309   kpainter.translateBy(-rect.x() + ((width - rect.width()) / 2), -rect.y() + ((height - rect.height()) / 2));
01310   KivioIntraStencilData data;
01311   data.painter = &kpainter;
01312   data.zoomHandler = &zoomHandler;
01313   stencil->paint(&data);
01314   kpainter.stop();
01315 
01316   return pix;
01317 }
KDE Home | KDE Accessibility Home | Description of Access Keys