r13839 by fschmid - Initial support for 3D-Annotations in PDF. Requires the presence of the OpenSceneGraph librarys and includes for compiling and running. With -DWANT_NOOSG=1 the new additions will not be compiled.

scribus-commit scribus-commit at lists.scribus.net
Wed Aug 26 05:32:56 CEST 2009


Revision: 13839
Author: fschmid
Date: 2009-08-10T22:27:37.456191Z
Commit message: Initial support for 3D-Annotations in PDF. Requires the presence of the OpenSceneGraph librarys and includes for compiling and running.
With -DWANT_NOOSG=1 the new additions will not be compiled.

Changeset: 
A  /trunk/Scribus/scribus/prc/PRCbitStream.h
M  /trunk/Scribus/scribus/ui/propertiespalette.cpp
M  /trunk/Scribus/scribus/collect4output.cpp
M  /trunk/Scribus/scribus/scribusXml.cpp
M  /trunk/Scribus/scribus/ui/annot.cpp
A  /trunk/Scribus/icons/16/annot3d.png
M  /trunk/Scribus/scribus/pageitem.h
M  /trunk/Scribus/scribus/scribusdoc.cpp
M  /trunk/Scribus/scribus/undomanager.cpp
A  /trunk/Scribus/scribus/ui/AdapterWidget.cpp
M  /trunk/Scribus/scribus/commonstrings.cpp
A  /trunk/Scribus/scribus/prc
M  /trunk/Scribus/scribus/documentchecker.cpp
M  /trunk/Scribus/scribus/scpreview.cpp
M  /trunk/Scribus/scribus/scribusstructs.h
M  /trunk/Scribus/scribus/pdflib_core.cpp
M  /trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
M  /trunk/Scribus/scribus/ui/pdftoolbar.cpp
M  /trunk/Scribus/scribus/scribus.cpp
A  /trunk/Scribus/scribus/ui/osgeditor.cpp
A  /trunk/Scribus/scribus/prc/PRC.h
M  /trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
A  /trunk/Scribus/scribus/prc/exportPRC.h
M  /trunk/Scribus/config.h.cmake
M  /trunk/Scribus/scribus/ui/outlinepalette.h
A  /trunk/Scribus/scribus/pageitem_osgframe.h
M  /trunk/Scribus/scribus/pageitem_desaxe.cpp
A  /trunk/Scribus/scribus/prc/writePRC.cc
M  /trunk/Scribus/scribus/canvasmode_normal.cpp
A  /trunk/Scribus/scribus/prc/writePRC.h
A  /trunk/Scribus/scribus/prc/oPRCFile.cc
M  /trunk/Scribus/scribus/pageitem.cpp
A  /trunk/Scribus/icons/22/annot3d.png
M  /trunk/Scribus/scribus/CMakeLists.txt
A  /trunk/Scribus/scribus/prc/oPRCFile.h
M  /trunk/Scribus/icons/CMakeLists.txt
M  /trunk/Scribus/scribus/ui/annot.h
M  /trunk/Scribus/scribus/canvasmode_create.cpp
M  /trunk/Scribus/scribus/ui/selfield.cpp
M  /trunk/Scribus/scribus/scribusview.cpp
A  /trunk/Scribus/scribus/ui/AdapterWidget.h
A  /trunk/Scribus/scribus/prc/PRCdouble.cc
A  /trunk/Scribus/scribus/ui/osgeditor.ui
M  /trunk/Scribus/scribus/commonstrings.h
M  /trunk/Scribus/scribus/actionmanager.cpp
A  /trunk/Scribus/scribus/prc/PRCdouble.h
A  /trunk/Scribus/scribus/prc/exportPRC.cpp
M  /trunk/Scribus/scribus/ui/outlinepalette.cpp
M  /trunk/Scribus/scribus/pdflib_core.h
A  /trunk/Scribus/scribus/pageitem_osgframe.cpp
M  /trunk/Scribus/scribus/canvasmode.cpp
A  /trunk/Scribus/scribus/prc/CMakeLists.txt
A  /trunk/Scribus/scribus/ui/osgeditor.h
M  /trunk/Scribus/CMakeLists.txt
A  /trunk/Scribus/scribus/prc/PRCbitStream.cc
M  /trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp

Diffs:
Index: scribus/documentchecker.cpp
===================================================================
--- scribus/documentchecker.cpp	(revision 13838)
+++ scribus/documentchecker.cpp	(revision 13839)
@@ -102,7 +102,11 @@
 		}
 		if ((currItem->OwnPage == -1) && (checkerSettings.checkOrphans))
 			itemError.insert(ObjectNotOnPage, 0);
+#ifdef HAVE_OSG
+		if (currItem->asImageFrame() && !currItem->asOSGFrame())
+#else
 		if (currItem->asImageFrame())
+#endif
 		{
 		 	if ((!currItem->PictureIsAvailable) && (checkerSettings.checkPictures))
 				itemError.insert(MissingImage, 0);
@@ -220,7 +224,11 @@
 			itemError.insert(PDFAnnotField, 0);
 		if ((currItem->OwnPage == -1) && (checkerSettings.checkOrphans))
 			itemError.insert(ObjectNotOnPage, 0);
+#ifdef HAVE_OSG
+		if (currItem->asImageFrame() && !currItem->asOSGFrame())
+#else
 		if (currItem->asImageFrame())
+#endif
 		{
 		 	if ((!currItem->PictureIsAvailable) && (checkerSettings.checkPictures))
 				itemError.insert(MissingImage, 0);
Index: scribus/pdflib_core.cpp
===================================================================
--- scribus/pdflib_core.cpp	(revision 13838)
+++ scribus/pdflib_core.cpp	(revision 13839)
@@ -48,6 +48,7 @@
 #include <QRegExp>
 #include <QStack>
 #include <QString>
+#include <QTemporaryFile>
 #include <QTextCodec>
 
 
@@ -78,6 +79,9 @@
 #include "util_formats.h"
 #include "util_math.h"
 #include "util_ghostscript.h"
+#ifdef HAVE_OSG
+	#include "prc/exportPRC.h"
+#endif
 
 using namespace std;
 
@@ -2139,6 +2143,8 @@
 							PutPage(PDF_TransparenzFill(ite));
 						PutPage(setTextSt(ite, pag->pageNr(), pag));
 						break;
+					case PageItem::OSGFrame:
+						break;
 					case PageItem::Multiple:
 						Q_ASSERT(false);
 						break;
@@ -3261,6 +3267,18 @@
 	{
 		case PageItem::ImageFrame:
 		case PageItem::LatexFrame:
+		case PageItem::OSGFrame:
+#ifdef HAVE_OSG
+			if (ite->asOSGFrame())
+			{
+				if (Options.Version != PDFOptions::PDFVersion_X3)
+				{
+					if (!PDF_3DAnnotation(ite, PNr))
+						return false;
+				}
+				break;
+			}
+#endif
 			// Same functions as for ImageFrames work for LatexFrames too
 			if (((ite->fillTransparency() != 0) || (ite->fillBlendmode() != 0)) && (Options.Version >= PDFOptions::PDFVersion_14))
 				tmp += PDF_TransparenzFill(ite);
@@ -5645,6 +5663,96 @@
 	return tmp;
 }
 
+#ifdef HAVE_OSG
+bool PDFLibCore::PDF_3DAnnotation(PageItem *ite, uint)
+{
+	QStringList lightModes;
+	lightModes << "None" << "Headlamp" << "White" << "Day" << "Night" << "Hard" << "Primary";
+	lightModes << "Blue" << "Red" << "Cube" << "CAD" << "Artwork";
+	QStringList renderModes;
+	renderModes << "Solid" << "SolidWireframe" << "Transparent" << "TransparentWireframe";
+	renderModes << "BoundingBox" << "TransparentBoundingBox" << "TransparentBoundingBoxOutline";
+	renderModes << "Wireframe" << "ShadedWireframe" << "HiddenWireframe" << "Vertices";
+	renderModes << "ShadedVertices" << "Illustration" << "SolidOutline" << "ShadedIllustration";
+	QTemporaryFile *tempImageFile = new QTemporaryFile(QDir::tempPath() + "/scribus_temp_osg_XXXXXX.prc");
+	tempImageFile->open();
+	QString imgName = getLongPathName(tempImageFile->fileName());
+	tempImageFile->close();
+	PRCExporter *exprc = new PRCExporter();
+	exprc->convertFile(imgName, ite->asOSGFrame());
+	delete exprc;
+	double x = ite->xPos() - ActPageP->xOffset();
+	double y = ActPageP->height() - (ite->yPos()  - ActPageP->yOffset());
+	double x2 = x+ite->width();
+	double y2 = y-ite->height();
+	PageItem_OSGFrame *osgframe = ite->asOSGFrame();
+	QList<uint> viewList;
+	uint viewObj = 0;
+	QHash<QString, PageItem_OSGFrame::viewDefinition>::iterator itv;
+	for (itv = osgframe->viewMap.begin(); itv != osgframe->viewMap.end(); ++itv)
+	{
+		uint viewObjL = newObject();
+		viewList.append(viewObjL);
+		if (osgframe->currentView == itv.key())
+			viewObj = viewObjL;
+		StartObj(viewObjL);
+		PutDoc("<<\n/Type /3DView\n");
+		PutDoc("/MS /M\n");
+		PutDoc("/C2W ["+osgframe->getPDFMatrix(itv.key())+" ]\n");
+		PutDoc("/LS << /Subtype /" + lightModes[itv.value().illumination] + " >>\n");
+		PutDoc("/RM << /Subtype /" + renderModes[itv.value().rendermode] + " >>\n");
+		PutDoc("/P << /FOV "+FToStr(itv.value().angleFOV)+" /PS /Min /Subtype /P >>\n");
+		PutDoc("/CO "+FToStr(osgframe->distanceToObj)+"\n");
+		if (ite->fillColor() != CommonStrings::None)
+		{
+			PutDoc("/BG << /Type /3DBG\n");
+			PutDoc("/C [ "+SetColor(ite->fillColor(), ite->fillShade())+" ]\n>>\n");
+		}
+		PutDoc("/XN ("+PDFEncode(itv.key())+")\n");
+		PutDoc("/IN ("+PDFEncode(itv.key())+")\n");
+		PutDoc(">>\nendobj\n");
+	}
+	uint appearanceObj = newObject();
+	StartObj(appearanceObj);
+	PutDoc("<<\n/Type /3D\n");
+	PutDoc("/Subtype /PRC\n");
+	PutDoc("/VA [");
+	for (int vl = 0; vl < viewList.count(); vl++)
+	{
+		PutDoc(QString::number(viewList.at(vl))+" 0 R ");
+	}
+	PutDoc("]\n");
+	QByteArray dataP;
+	loadRawBytes(imgName, dataP);
+	if ((Options.CompressMethod != PDFOptions::Compression_None) && Options.Compress)
+	{
+		QByteArray compData = CompressArray(dataP);
+		if (compData.size() > 0)
+		{
+			PutDoc("/Filter /FlateDecode\n");
+			dataP = compData;
+		}
+	}
+	PutDoc("/Length "+QString::number(dataP.size()+1)+"\n");
+	PutDoc(">>\nstream\n");
+	EncodeArrayToStream(dataP, appearanceObj);
+	PutDoc("\nendstream\nendobj\n");
+	uint annotationObj = newObject();
+	StartObj(annotationObj);
+	Seite.AObjects.append(annotationObj);
+	PutDoc("<<\n/Type /Annot\n");
+	PutDoc("/Subtype /3D\n");
+	PutDoc("/F 4\n");
+	PutDoc("/3DD "+QString::number(appearanceObj)+" 0 R\n");
+	PutDoc("/3DV "+QString::number(viewObj)+" 0 R\n");
+	PutDoc("/3DA <<\n/A /PV\n/TB true\n/NP true\n>>\n");
+	PutDoc("/Rect [ "+FToStr(x+bleedDisplacementX)+" "+FToStr(y2+bleedDisplacementY)+" "+FToStr(x2+bleedDisplacementX)+" "+FToStr(y+bleedDisplacementY)+" ]\n");
+	PutDoc(">>\nendobj\n");
+	delete tempImageFile;
+	return true;
+}
+#endif
+
 bool PDFLibCore::PDF_Annotation(PageItem *ite, uint)
 {
 	ScImage img;
Index: scribus/canvasmode_create.cpp
===================================================================
--- scribus/canvasmode_create.cpp	(revision 13838)
+++ scribus/canvasmode_create.cpp	(revision 13839)
@@ -529,6 +529,12 @@
 		itemType  = (int) PageItem::TextFrame;
 		frameType = (int) PageItem::Unspecified;
 		break;
+#ifdef HAVE_OSG
+	case modeInsertPDF3DAnnotation:
+		itemType  = (int) PageItem::OSGFrame;
+		frameType = (int) PageItem::Unspecified;
+		break;
+#endif
 	}
 }
 
@@ -544,7 +550,8 @@
 		(createObjectMode == modeInsertPDFButton) || (createObjectMode == modeInsertPDFTextfield) ||
 		(createObjectMode == modeInsertPDFTextfield) || (createObjectMode == modeInsertPDFCheckbox) ||
 		(createObjectMode == modeInsertPDFCombobox) || (createObjectMode == modeInsertPDFListbox) ||
-		(createObjectMode == modeInsertPDFTextAnnotation) || (createObjectMode == modeInsertPDFLinkAnnotation))
+		(createObjectMode == modeInsertPDFTextAnnotation) || (createObjectMode == modeInsertPDFLinkAnnotation) ||
+		(createObjectMode == modeInsertPDF3DAnnotation))
 	{
 		skipOneClick = false;
 	}
@@ -855,6 +862,21 @@
 			m_doc->m_Selection->delaySignalsOff();
 		}
 		break;
+	case modeInsertPDF3DAnnotation:
+		if (modifiers == Qt::ShiftModifier)
+		{
+			z = m_doc->itemAddArea(PageItem::OSGFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->toolSettings.dBrushPict, CommonStrings::None, true);
+		}
+		else
+		{
+			m_doc->ApplyGuides(&Rxp, &Ryp);
+			z = m_doc->itemAdd(PageItem::OSGFrame, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->toolSettings.dWidth, m_doc->toolSettings.dBrushPict, CommonStrings::None, true);
+		}
+		currItem = m_doc->Items->at(z);
+		currItem->setIsAnnotation(true);
+		currItem->AutoName = false;
+		currItem->annotation().setType(12);
+		break;
 	}
 	if (z >= 0)
 	{
Index: scribus/pageitem_osgframe.cpp
===================================================================
--- scribus/pageitem_osgframe.cpp	(revision 0)
+++ scribus/pageitem_osgframe.cpp	(revision 13839)
@@ -0,0 +1,257 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+						pageitem_osgframe.cpp  -  description
+						-------------------
+	begin                : Wed July 29 2009
+	copyright            : (C) 2009 by Franz Schmid
+	email                : Franz.Schmid at altmuehlnet.de
+***************************************************************************/
+
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+
+#include "pageitem_osgframe.h"
+
+#include <QDebug>
+#include <osgDB/ReadFile>
+#include <osgUtil/Optimizer>
+
+#include "prefsmanager.h"
+#include "scpainter.h"
+#include "scraction.h"
+#include "scribus.h"
+#include "scribusdoc.h"
+#include "undomanager.h"
+#include "undostate.h"
+#include "util.h"
+
+PageItem_OSGFrame::PageItem_OSGFrame(ScribusDoc *pa, double x, double y, double w, double h, double w2, QString fill, QString outline)
+		: PageItem_ImageFrame(pa, x, y, w, h, w2, fill, outline)
+{
+	setUPixmap(Um::ILatexFrame);
+	AnName = tr("OSG") + QString::number(m_Doc->TotalItems);
+	setUName(AnName);
+	struct viewDefinition defaultView;
+	defaultView.trackerCenter = osg::Vec3d();
+	defaultView.cameraPosition = osg::Vec3d();
+	defaultView.cameraUp = osg::Vec3d();
+	defaultView.trackerMatrix = osg::Matrixd();
+	defaultView.angleFOV = 30.0;
+	defaultView.trackerDist = 0.0;
+	defaultView.trackerSize = 0.0;
+	defaultView.illumination = Headlamp;
+	defaultView.rendermode = Solid;
+	viewMap.insert( tr("Default"), defaultView);
+	currentView = tr("Default");
+	loadedModel = NULL;
+	distanceToObj = 0.0;
+	modelFile = "";
+}
+
+PageItem_OSGFrame::~PageItem_OSGFrame()
+{
+}
+
+void PageItem_OSGFrame::setExternalModelFile(QString val)
+{
+	modelFile = val;
+	if (!modelFile.isEmpty())
+	{
+		QString test = modelFile;
+		if (QDir::isRelativePath(test))
+			test = QDir::homePath()+"/"+modelFile;
+		test = QDir::cleanPath(QDir::convertSeparators(test));
+		QFileInfo pfi2(test);
+		modelFile = pfi2.absoluteFilePath();
+	}
+}
+
+void PageItem_OSGFrame::loadModel()
+{
+	if (!modelFile.isEmpty())
+	{
+		loadedModel = osgDB::readNodeFile ( modelFile.toStdString() );
+		if (loadedModel)
+		{
+			osgUtil::Optimizer optimzer;
+			optimzer.optimize(loadedModel);
+		}
+	}
+}
+
+void PageItem_OSGFrame::setImage(QImage &image)
+{
+	isInlineImage = true;
+	if (PictureIsAvailable)
+	{
+		image.save(Pfile, "PNG");
+		m_Doc->LoadPict(Pfile, ItemNr, true);
+	}
+	else
+	{
+		tempImageFile = new QTemporaryFile(QDir::tempPath() + "/scribus_temp_osg_XXXXXX.png");
+		tempImageFile->open();
+		QString imgName = getLongPathName(tempImageFile->fileName());
+		tempImageFile->close();
+		image.save(imgName, "PNG");
+		m_Doc->LoadPict(imgName, ItemNr);
+	}
+	setImageScalingMode(false, true);
+}
+
+void PageItem_OSGFrame::clearContents()
+{
+	viewMap.clear();
+	struct viewDefinition defaultView;
+	defaultView.trackerCenter = osg::Vec3d();
+	defaultView.cameraPosition = osg::Vec3d();
+	defaultView.cameraUp = osg::Vec3d();
+	defaultView.trackerMatrix = osg::Matrixd();
+	defaultView.angleFOV = 30.0;
+	defaultView.trackerDist = 0.0;
+	defaultView.trackerSize = 0.0;
+	defaultView.illumination = Headlamp;
+	defaultView.rendermode = Solid;
+	viewMap.insert( tr("Default"), defaultView);
+	currentView = tr("Default");
+	loadedModel = NULL;
+	distanceToObj = 0.0;
+	modelFile = "";
+	PageItem_ImageFrame::clearContents();
+}
+
+void PageItem_OSGFrame::applicableActions(QStringList & actionList)
+{
+	actionList << "itemImageIsVisible";
+	actionList << "editEditRenderSource";
+	if (PictureIsAvailable)
+	{
+		actionList << "editClearContents";
+	}
+}
+
+QString PageItem_OSGFrame::infoDescription()
+{
+	QString htmlText;
+	htmlText.append( tr("3D-Model") + "<br/>");
+	QFileInfo fi = QFileInfo(modelFile);
+	htmlText.append( tr("File:") + " " + fi.fileName() + "<br/>");
+	htmlText.append(PageItem::infoDescription());
+	return htmlText;
+}
+
+double PageItem_OSGFrame::getDistance(osg::Vec3d pos1, osg::Vec3d pos2)
+{
+	double dist2D = sqrt((pos1[0]-pos2[0])*(pos1[0]-pos2[0]) + (pos1[1]-pos2[1])*(pos1[1]-pos2[1]));
+	return sqrt(dist2D*dist2D + (pos1[2]-pos2[2])*(pos1[2]-pos2[2]));
+}
+
+#define normalized(x, y, z)		\
+{					\
+	double modulo;			\
+	modulo = sqrtf(x*x + y*y + z*z);	\
+	if (modulo != 0.0)			\
+	{					\
+		x = x/modulo;			\
+		y = y/modulo;			\
+		z = z/modulo;			\
+	}					\
+}
+
+QString PageItem_OSGFrame::getPDFMatrix(QString viewName)
+{
+	struct viewDefinition defaultView;
+	defaultView = viewMap[viewName];
+	osg::Vec3d trackerCenter = defaultView.trackerCenter;
+	osg::Vec3d cameraPosition = defaultView.cameraPosition;
+	osg::Vec3d cameraUp = defaultView.cameraUp;
+	double viewx, viewy, viewz;
+	double leftx, lefty, leftz;
+	double upx, upy, upz;
+	double transx, transy, transz;
+	double roll = 0.0;
+	double roo = getDistance(cameraPosition, trackerCenter);
+	cameraPosition.normalize();
+	cameraUp.normalize();
+	viewx = -cameraPosition[0];
+	viewy = -cameraPosition[1];
+	viewz = -cameraPosition[2];
+	if (viewx == 0.0 && viewy == 0.0 && viewz == 0.0)
+	{
+		viewy = 1.0;
+	}
+	leftx = -1.0f;
+	lefty =  0.0f;
+	leftz =  0.0f;
+	if (viewz < 0.0) /* top view*/
+	{
+		upx = 0.0f;
+		upy = 1.0f;
+		upz = 0.0f;
+	}
+	else /* bottom view*/
+	{
+		upx = 0.0f;
+		upy =-1.0f;
+		upz = 0.0f;
+	}
+	if ( fabs(viewx) + fabs(viewy) != 0.0f) /* other views than top and bottom*/
+	{
+		cameraUp.normalize();
+		upx = cameraUp[0];
+		upy = cameraUp[1];
+		upz = cameraUp[2];
+		leftx = viewz*upy - viewy*upz;
+		lefty = viewx*upz - viewz*upx;
+		leftz = viewy*upx - viewx*upy;
+		normalized(leftx, lefty, leftz);
+	}
+	/* apply camera roll*/
+	{
+		double leftxprime, leftyprime, leftzprime;
+		double upxprime, upyprime, upzprime;
+		double sinroll, cosroll;
+		sinroll =  sin((roll/180.0f)*M_PI);
+		cosroll =  cos((roll/180.0f)*M_PI);
+		leftxprime = leftx*cosroll + upx*sinroll;
+		leftyprime = lefty*cosroll + upy*sinroll;
+		leftzprime = leftz*cosroll + upz*sinroll;
+		upxprime = upx*cosroll + leftx*sinroll;
+		upyprime = upy*cosroll + lefty*sinroll;
+		upzprime = upz*cosroll + leftz*sinroll;
+		leftx = leftxprime;
+		lefty = leftyprime;
+		leftz = leftzprime;
+		upx = upxprime;
+		upy = upyprime;
+		upz = upzprime;
+	}
+	/* translation vector*/
+	roo = fabs(roo);
+	if (roo == 0.0)
+	{
+		roo = 0.000000000000000001;
+	}
+	transx = trackerCenter[0] - roo*viewx;
+	transy = trackerCenter[1] - roo*viewy;
+	transz = trackerCenter[2] - roo*viewz;
+	QString ret = "";
+	QString desc4 = "%1 %2 %3 ";
+	ret += desc4.arg(leftx).arg(lefty).arg(leftz);
+	ret += desc4.arg(upx).arg(upy).arg(upz);
+	ret += desc4.arg(viewx).arg(viewy).arg(viewz);
+	ret += desc4.arg(transx).arg(transy).arg(transz);
+	distanceToObj = roo;
+	return ret;
+}
Index: scribus/canvasmode.cpp
===================================================================
--- scribus/canvasmode.cpp	(revision 13838)
+++ scribus/canvasmode.cpp	(revision 13839)
@@ -120,6 +120,7 @@
 		case modeInsertPDFListbox:
 		case modeInsertPDFTextAnnotation:
 		case modeInsertPDFLinkAnnotation:
+		case modeInsertPDF3DAnnotation:
 			result = new CreateMode(view);
 			break;
 		case modeEyeDropper:
@@ -584,6 +585,7 @@
 		case modeInsertPDFListbox:
 		case modeInsertPDFTextAnnotation:
 		case modeInsertPDFLinkAnnotation:
+		case modeInsertPDF3DAnnotation:
 			qApp->changeOverrideCursor(QCursor(Qt::CrossCursor));
 			break;
 		default:
Index: scribus/pdflib_core.h
===================================================================
--- scribus/pdflib_core.h	(revision 13838)
+++ scribus/pdflib_core.h	(revision 13839)
@@ -152,6 +152,9 @@
 	QString PDF_TransparenzFill(PageItem *currItem);
 	QString PDF_TransparenzStroke(PageItem *currItem);
 	bool    PDF_Annotation(PageItem *ite, uint PNr);
+#ifdef HAVE_OSG
+	bool    PDF_3DAnnotation(PageItem *ite, uint PNr);
+#endif
 	void    PDF_Form(const QString& im);
 	void    PDF_xForm(uint objNr, double w, double h, QString im);
 	bool    PDF_Image(PageItem* c, const QString& fn, double sx, double sy, double x, double y, bool fromAN = false, const QString& Profil = "", bool Embedded = false, int Intent = 1, QString* output = NULL);
Index: scribus/collect4output.cpp
===================================================================
--- scribus/collect4output.cpp	(revision 13838)
+++ scribus/collect4output.cpp	(revision 13839)
@@ -16,6 +16,9 @@
 #include "undomanager.h"
 #include "filewatcher.h"
 #include "pageitem.h"
+#ifdef HAVE_OSG
+	#include "pageitem_osgframe.h"
+#endif
 #include "scraction.h"
 #include "scpattern.h"
 #include "util_file.h"
@@ -208,6 +211,24 @@
 			}
 		}
 	}
+#ifdef HAVE_OSG
+	if (ite->asOSGFrame())
+	{
+		PageItem_OSGFrame *osgframe = ite->asOSGFrame();
+		QString ofName(osgframe->modelFile);
+		QFileInfo itf = QFileInfo(ofName);
+		if (!itf.exists())
+		{
+			ofName = QDir::convertSeparators(PrefsManager::instance()->documentDir() + "/" + ofName);
+			itf.setFile(ofName);
+		}
+		if (itf.exists())
+		{
+			QString oldFile = ofName;
+			osgframe->modelFile = collectFile(oldFile, itf.fileName());
+		}
+	}
+#endif
 	if (ite->asTextFrame())
 	{
 		if (ite->isAnnotation())
Index: scribus/scribusdoc.cpp
===================================================================
--- scribus/scribusdoc.cpp	(revision 13838)
+++ scribus/scribusdoc.cpp	(revision 13839)
@@ -52,6 +52,7 @@
 #include "pageitem_polygon.h"
 #include "pageitem_polyline.h"
 #include "pageitem_textframe.h"
+#include "pageitem_osgframe.h"
 #include "ui/pagepalette.h"
 #include "pagesize.h"
 #include "pagestructs.h"
@@ -124,6 +125,7 @@
 	ActiveLayer(0),
 	docUnitIndex(prefsData.docUnitIndex),
 	docUnitRatio(unitGetRatioFromIndex(docUnitIndex)),
+	rotMode(0),
 	automaticTextFrames(0),
 	m_masterPageMode(false),
 	m_ScMW(0),
@@ -194,7 +196,6 @@
 	BookMarks(),
 	OldBM(false),
 	hasName(false),
-	rotMode(0),
 	AutoSave(prefsData.AutoSave),
 	AutoSaveTime(prefsData.AutoSaveTime),
 	autoSaveTimer(new QTimer(this)),
@@ -234,6 +235,7 @@
 	ActiveLayer(0),
 	docUnitIndex(unitindex),
 	docUnitRatio(unitGetRatioFromIndex(docUnitIndex)),
+	rotMode(0),
 	automaticTextFrames(pagesSetup.autoTextFrames),
 	m_masterPageMode(false),
 	m_ScMW(0),
@@ -306,7 +308,6 @@
 	BookMarks(),
 	OldBM(false),
 	hasName(false),
-	rotMode(0),
 	AutoSave(prefsData.AutoSave),
 	AutoSaveTime(prefsData.AutoSaveTime),
 	autoSaveTimer(new QTimer(this)),
@@ -3572,6 +3573,12 @@
 			newItem = new PageItem_LatexFrame(this, x, y, b, h, w, toolSettings.dBrushPict, CommonStrings::None);
 			Q_ASSERT(frameType==PageItem::Rectangle || frameType==PageItem::Unspecified);
 			break;
+#ifdef HAVE_OSG
+		case PageItem::OSGFrame:
+			newItem = new PageItem_OSGFrame(this, x, y, b, h, w, toolSettings.dBrushPict, CommonStrings::None);
+			Q_ASSERT(frameType==PageItem::Rectangle || frameType==PageItem::Unspecified);
+			break;
+#endif
 		default:
 //			qDebug() << "unknown item type";
 			assert (false);
@@ -3770,6 +3777,9 @@
 			newItem->setFillShade(toolSettings.shadePict);
 			break;
 		case PageItem::LatexFrame:
+#ifdef HAVE_OSG
+		case PageItem::OSGFrame:
+#endif
 			newItem->setFillShade(toolSettings.shadePict);
 			break;
 		case PageItem::TextFrame:
@@ -3801,7 +3811,7 @@
 			break;
 	}
 
-	if (frameType==PageItem::Rectangle || itemType==PageItem::TextFrame || itemType==PageItem::ImageFrame || itemType==PageItem::LatexFrame)
+	if (frameType==PageItem::Rectangle || itemType==PageItem::TextFrame || itemType==PageItem::ImageFrame || itemType==PageItem::LatexFrame || itemType==PageItem::OSGFrame)
 	{
 		newItem->SetRectFrame();
 		//TODO one day hopefully, if(ScCore->usingGUI())
@@ -6819,7 +6829,12 @@
 						m_Selection->itemAt(i)->asLatexFrame();
 					latexframe->rerunApplication();
 					toUpdate = true;
-				} else if (m_Selection->itemAt(i)->asImageFrame())
+				}
+#ifdef HAVE_OSG
+				else if ((m_Selection->itemAt(i)->asImageFrame()) || (m_Selection->itemAt(i)->asOSGFrame()))
+#else
+				else if (m_Selection->itemAt(i)->asImageFrame())
+#endif
 				{
 					PageItem *currItem = m_Selection->itemAt(i);
 					if (currItem->PictureIsAvailable)
@@ -8848,8 +8863,8 @@
 
 	itX = Xsorted.begin(); //first item is left most
 	int itemIndex=itX.value(); //get our first item's index in the AObjects array
-	bool found=false;
-	double itXX=itX.key();
+//	bool found=false;
+//	double itXX=itX.key();
 	minY=999999.9;
 	maxY=-999999.9;
 	int nextItemIndex=itemIndex;
@@ -8872,7 +8887,7 @@
 	}
 
 
-	if (circleListCounter!=alignObjectsCount) //need to reverse back now
+	if (circleListCounter != static_cast<int>(alignObjectsCount)) //need to reverse back now
 	{
 		QMap<double,uint>::Iterator itX2_2 = itLast;
 		while (itX2_2!=Xsorted.begin())
@@ -8962,8 +8977,8 @@
 
 	itX = Xsorted.begin(); //first item is left most
 	int itemIndex=itX.value(); //get our first item's index in the AObjects array
-	bool found=false;
-	double itXX=itX.key();
+//	bool found=false;
+//	double itXX=itX.key();
 	minY=999999.9;
 	maxY=-999999.9;
 	int nextItemIndex=itemIndex;
@@ -8986,7 +9001,7 @@
 	}
 
 
-	if (circleListCounter!=alignObjectsCount) //need to reverse back now
+	if (circleListCounter!=static_cast<int>(alignObjectsCount)) //need to reverse back now
 	{
 		QMap<double,uint>::Iterator itX2_2 = itLast;
 		while (itX2_2!=Xsorted.begin())
@@ -10330,7 +10345,7 @@
 		QMap<int, QList<PageItem*> >::iterator groupIt;
 		for (it = toDelete.begin(); it != toDelete.end(); ++it)
 		{
-			PageItem* groupItem = it.key();
+//			PageItem* groupItem = it.key();
 			int groupId = it.value();
 			groupIt = groupObjects.find(groupId);
 			if (groupIt == groupObjects.end()) 
Index: scribus/scribusXml.cpp
===================================================================
--- scribus/scribusXml.cpp	(revision 13838)
+++ scribus/scribusXml.cpp	(revision 13839)
@@ -35,6 +35,9 @@
 #include "page.h"
 #include "pageitem.h"
 #include "pageitem_latexframe.h"
+#ifdef HAVE_OSG
+	#include "pageitem_osgframe.h"
+#endif
 #include "selection.h"
 #include "units.h"
 #include "prefsmanager.h"
@@ -54,6 +57,7 @@
 #include "util_math.h"
 #include "util_color.h"
 #include "scpattern.h"
+#include "sctextstream.h"
 #include "scxmlstreamwriter.h"
 #include "scpainter.h"
 
@@ -624,7 +628,11 @@
 	writer.writeAttribute("BEXTRA"   , item->textToFrameDistBottom());
 	writer.writeAttribute("REXTRA"   , item->textToFrameDistRight());
 	writer.writeAttribute("FLOP"	,item->firstLineOffset());
-	if (((item->asImageFrame() && !item->asLatexFrame()) || (item->asTextFrame())) && (!item->Pfile.isEmpty()))
+#ifdef HAVE_OSG
+	if (((item->asImageFrame() && !(item->asLatexFrame() || item->asOSGFrame())) || (item->asTextFrame())) && (!item->Pfile.isEmpty()))
+#else
+	if (((item->asImageFrame() && !(item->asLatexFrame())) || (item->asTextFrame())) && (!item->Pfile.isEmpty()))
+#endif
 	{
 		writer.writeAttribute("ImageRes", item->pixm.imgInfo.lowResType);
 		writer.writeAttribute("Pagenumber", item->pixm.imgInfo.actualPageNumber);
@@ -645,6 +653,28 @@
 		else
 			writer.writeAttribute("PFILE",Path2Relative(item->Pfile, baseDir));
 	}
+#ifdef HAVE_OSG
+	else if (item->asOSGFrame())
+	{
+		if (!item->Pfile.isEmpty())
+		{
+			writer.writeAttribute("PFILE", "");
+			writer.writeAttribute("isInlineImage", static_cast<int>(item->isInlineImage));
+			QFileInfo inlFi(item->Pfile);
+			writer.writeAttribute("inlineImageExt", inlFi.suffix());
+			QFile inFil(item->Pfile);
+			if (inFil.open(QIODevice::ReadOnly))
+			{
+				QByteArray ba = qCompress(inFil.readAll()).toBase64();
+				writer.writeAttribute("ImageData", QString(ba));
+				inFil.close();
+			}
+			PageItem_OSGFrame *osgframe = item->asOSGFrame();
+			writer.writeAttribute("modelFile", Path2Relative(osgframe->modelFile, baseDir));
+			writer.writeAttribute("currentViewName", osgframe->currentView);
+		}
+	}
+#endif
 	if (!item->Pfile2.isEmpty())
 		writer.writeAttribute("PFILE2",Path2Relative(item->Pfile2, baseDir));
 	else
@@ -946,6 +976,9 @@
 	QMap<int,int> groupMap;
 	QMap<PageItem*, int> groupID;
 	QMap<int, ImageLoadRequest> loadRequests;
+#ifdef HAVE_OSG
+	QHash<QString, PageItem_OSGFrame::viewDefinition> viewMap;
+#endif
 	QList<PageItem*>  TableItems;
 	ScImageEffectList imageEffects;
 	bool VorLFound = false;
@@ -1147,6 +1180,8 @@
 	QString inlineImageExt;
 	int lowResType = 1;
 	int actualPageNumber = 0;
+	QString modelFile;
+	QString currentView;
 	while(!sReader.atEnd() && !sReader.hasError())
 	{
 		sReader.readNext();
@@ -1220,6 +1255,8 @@
 			LatexDPI = attrAsInt (attrs, "LatexDpi", 0);
 			LatexPream = attrAsBool(attrs, "LatexUsePreamble", true);
 			LatexConfig = attrAsString(attrs, "LatexConfig", "");
+			modelFile = attrAsString(attrs, "modelFile", "");
+			currentView = attrAsString(attrs, "currentViewName", "");
 		}
 		if (inItem && sReader.isStartElement() && tagName == "ITEXT")
 		{
@@ -1268,6 +1305,46 @@
 			loadingInfo.useMask = attrAsBool(attrs, "useMask", true);
 			loadRequests.insert( attrAsInt(attrs, "Layer"), loadingInfo);
 		}
+#ifdef HAVE_OSG
+		if (inItem && sReader.isStartElement() && tagName == "OSGViews")
+		{
+			struct PageItem_OSGFrame::viewDefinition currentView;
+			currentView.angleFOV = attrAsDbl(attrs, "angleFOV", 0.0);
+			QString tmp = "";
+			tmp = attrAsString(attrs, "trackM", "");
+			ScTextStream fp(&tmp, QIODevice::ReadOnly);
+			double m1, m2, m3, m4;
+			double m5, m6, m7, m8;
+			double m9, m10, m11, m12;
+			double m13, m14, m15, m16;
+			fp >> m1 >> m2 >> m3 >> m4;
+			fp >> m5 >> m6 >> m7 >> m8;
+			fp >> m9 >> m10 >> m11 >> m12;
+			fp >> m13 >> m14 >> m15 >> m16;
+			currentView.trackerMatrix.set(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16);
+			tmp = "";
+			tmp = attrAsString(attrs, "trackC", "");
+			ScTextStream fp2(&tmp, QIODevice::ReadOnly);
+			double v1, v2, v3;
+			fp2 >> v1 >> v2 >> v3;
+			currentView.trackerCenter.set(v1, v2, v3);
+			tmp = "";
+			tmp = attrAsString(attrs, "cameraP", "");
+			ScTextStream fp3(&tmp, QIODevice::ReadOnly);
+			fp3 >> v1 >> v2 >> v3;
+			currentView.cameraPosition.set(v1, v2, v3);
+			tmp = "";
+			tmp = attrAsString(attrs, "cameraU", "");
+			ScTextStream fp4(&tmp, QIODevice::ReadOnly);
+			fp4 >> v1 >> v2 >> v3;
+			currentView.cameraUp.set(v1, v2, v3);
+			currentView.trackerDist = attrAsDbl(attrs, "trackerDist", 0.0);
+			currentView.trackerSize = attrAsDbl(attrs, "trackerSize", 0.0);
+			currentView.illumination = static_cast<PageItem_OSGFrame::LightType>(attrAsInt(attrs, "illumination", 1));
+			currentView.rendermode = static_cast<PageItem_OSGFrame::RenderType>(attrAsInt(attrs, "rendermode", 0));
+			viewMap.insert(attrAsString(attrs, "viewName", ""), currentView);
+		}
+#endif
 		if (inItem && sReader.isStartElement() && tagName == "CSTOP")
 		{
 			QString name = attrAsString(attrs, "NAME", "");
@@ -1313,6 +1390,13 @@
 				QFileInfo pfi2(test);
 				OB.Pfile3 = pfi2.absoluteFilePath();
 			}
+			if (!modelFile.isEmpty())
+			{
+				QFileInfo pfi(fileName);
+				QString test = QDir::cleanPath(QDir::convertSeparators(pfi.absolutePath()+"/"+modelFile));
+				QFileInfo pfi2(test);
+				modelFile = pfi2.absoluteFilePath();
+			}
 		}
 		if (sReader.isEndElement() && (tagName == "ITEM"))
 		{
@@ -1358,6 +1442,16 @@
 					}
 				}
 			}
+#ifdef HAVE_OSG
+			if (Neu->asOSGFrame())
+			{
+				PageItem_OSGFrame *osgframe = Neu->asOSGFrame();
+				osgframe->modelFile = modelFile;
+				osgframe->currentView = currentView;
+				osgframe->viewMap = viewMap;
+				osgframe->loadModel();
+			}
+#endif
 			Neu->itemText = storyText;
 			Neu->effectsInUse = imageEffects;
 			Neu->pixm.imgInfo.RequestProps = loadRequests;
@@ -1387,6 +1481,9 @@
 				Neu->updatePolyClip();
 			imageEffects.clear();
 			loadRequests.clear();
+#ifdef HAVE_OSG
+			viewMap.clear();
+#endif
 			inItem = false;
 		}
 	}
@@ -2203,6 +2300,51 @@
 		writer.writeAttribute("LatexUsePreamble", QString::number(static_cast<int>(latexitem->usePreamble())));
 		writer.writeTextElement("LATEX-SOURCE", item->asLatexFrame()->formula());
 	}
+#ifdef HAVE_OSG
+	if (item->asOSGFrame())
+	{
+		PageItem_OSGFrame *osgitem = item->asOSGFrame();
+		if (!item->Pfile.isEmpty())
+		{
+			QHash<QString, PageItem_OSGFrame::viewDefinition>::iterator itv;
+			for (itv = osgitem->viewMap.begin(); itv != osgitem->viewMap.end(); ++itv)
+			{
+				writer.writeStartElement("OSGViews");
+				writer.writeAttribute("viewName", itv.key());
+				writer.writeAttribute("angleFOV", itv.value().angleFOV);
+				QString trackM = "";
+				for (uint matx = 0; matx < 4; ++matx)
+				{
+					for (uint maty = 0; maty < 4; ++maty)
+					{
+						trackM += tmp.setNum(itv.value().trackerMatrix(matx, maty))+" ";
+					}
+				}
+				writer.writeAttribute("trackM", trackM);
+				QString trackC = "";
+				trackC += tmp.setNum(itv.value().trackerCenter[0])+" ";
+				trackC += tmp.setNum(itv.value().trackerCenter[1])+" ";
+				trackC += tmp.setNum(itv.value().trackerCenter[2]);
+				writer.writeAttribute("trackC", trackC);
+				QString cameraP = "";
+				cameraP += tmp.setNum(itv.value().cameraPosition[0])+" ";
+				cameraP += tmp.setNum(itv.value().cameraPosition[1])+" ";
+				cameraP += tmp.setNum(itv.value().cameraPosition[2]);
+				writer.writeAttribute("cameraP", cameraP);
+				QString cameraU = "";
+				cameraU += tmp.setNum(itv.value().cameraUp[0])+" ";
+				cameraU += tmp.setNum(itv.value().cameraUp[1])+" ";
+				cameraU += tmp.setNum(itv.value().cameraUp[2]);
+				writer.writeAttribute("cameraU", cameraU);
+				writer.writeAttribute("trackerDist", itv.value().trackerDist);
+				writer.writeAttribute("trackerSize", itv.value().trackerSize);
+				writer.writeAttribute("illumination", itv.value().illumination);
+				writer.writeAttribute("rendermode", itv.value().rendermode);
+				writer.writeEndElement();
+			}
+		}
+	}
+#endif
 	QDir::setCurrent(CurDirP);
 	WriteITEXTs(writer, doc, item);
 }
Index: scribus/pageitem.h
===================================================================
--- scribus/pageitem.h	(revision 13838)
+++ scribus/pageitem.h	(revision 13839)
@@ -47,6 +47,9 @@
 #include "text/nlsconfig.h"
 #include "text/storytext.h"
 #include "desaxe/saxio.h"
+#ifdef HAVE_CONFIG_H
+#include "scconfig.h"
+#endif
 
 class ScPainter;
 class ScribusDoc;
@@ -64,6 +67,9 @@
 class PageItem_TextFrame;
 class PageItem_PathText;
 class PageItem_LatexFrame;
+#ifdef HAVE_OSG
+class PageItem_OSGFrame;
+#endif
 
 struct CopyPasteBuffer;
 /**
@@ -151,7 +157,8 @@
 		Polygon		= 6,
 		PolyLine	= 7,
 		PathText	= 8,
-		LatexFrame  = 9,
+		LatexFrame      = 9,
+		OSGFrame        = 10,
 		Multiple	= 99
 	};
 
@@ -175,6 +182,9 @@
 	virtual PageItem_PolyLine * asPolyLine() { return NULL; }
 	virtual PageItem_TextFrame * asTextFrame() { return NULL; }
 	virtual PageItem_LatexFrame * asLatexFrame() { return NULL; }
+#ifdef HAVE_OSG
+	virtual PageItem_OSGFrame * asOSGFrame() { return NULL; }
+#endif
 
 
 	/** @brief Frame Type
@@ -601,6 +611,11 @@
 	//
 	bool fitImageToFrame() const { return !ScaleType; }
 	void setFitImageToFrame(bool val) { ScaleType = !val; }
+	bool isImageInline() const { return isInlineImage; }
+	void setImageInline(bool val) { isInlineImage = val; }
+	QString inlineExt;
+	void setInlineExt(QString val) { inlineExt = val; }
+	void setInlineData(QString data);
 	
 	//Text Data - Move to PageItem_TextFrame at some point? --- no, to FrameStyle, av
 	double textToFrameDistLeft() const { return Extra; }
Index: scribus/commonstrings.cpp
===================================================================
--- scribus/commonstrings.cpp	(revision 13838)
+++ scribus/commonstrings.cpp	(revision 13839)
@@ -53,6 +53,7 @@
 QString CommonStrings::itemType_Polyline   = "";
 QString CommonStrings::itemType_PathText   = "";
 QString CommonStrings::itemType_LatexFrame = "";
+QString CommonStrings::itemType_OSGFrame   = "";
 QString CommonStrings::itemType_Multiple   = "";
 
 QString CommonStrings::itemSubType_PDF_PushButton;
@@ -271,6 +272,7 @@
 	CommonStrings::itemType_Polyline   = tr("Polyline");
 	CommonStrings::itemType_PathText   = tr("Text on a Path");
 	CommonStrings::itemType_LatexFrame = tr("Render Frame");
+	CommonStrings::itemType_OSGFrame   = tr("PDF 3D Annotation");
 	CommonStrings::itemType_Multiple   = tr("Multiple", "Multiple frame types");
 	CommonStrings::itemSubType_PDF_PushButton     = tr("PDF Push Button");
 	CommonStrings::itemSubType_PDF_TextField      = tr("PDF Text Field");
Index: scribus/scribusstructs.h
===================================================================
--- scribus/scribusstructs.h	(revision 13838)
+++ scribus/scribusstructs.h	(revision 13839)
@@ -423,7 +423,8 @@
 	modeCopyProperties,
 	modeEditClip,
 	modeDrawLatex,
-	modeImportObject
+	modeImportObject,
+	modeInsertPDF3DAnnotation
 };
 
 struct AlignObjs
Index: scribus/pageitem.cpp
===================================================================
--- scribus/pageitem.cpp	(revision 13838)
+++ scribus/pageitem.cpp	(revision 13839)
@@ -50,7 +50,6 @@
 #include "resourcecollection.h"
 #include "scclocale.h"
 #include "sccolorengine.h"
-#include "scconfig.h"
 #include "scpainter.h"
 #include "scpaths.h"
 #include "scpattern.h"
@@ -382,6 +381,7 @@
 	switch (m_ItemType)
 	{
 	case ImageFrame:
+	case OSGFrame:
 	case LatexFrame:
 		//We can't determine if this is a latex frame here
 		// because c++'s typeinfos are still saying it's 
@@ -1167,7 +1167,7 @@
 //					p->setLineWidth(0);
 				if (!isTableItem)
 				{
-					if ((itemType() == LatexFrame) || (itemType() == ImageFrame))
+					if ((itemType() == LatexFrame) || (itemType() == ImageFrame) || (itemType() == OSGFrame))
 						p->setupPolygon(&PoLine);
 					if (NamedLStyle.isEmpty())
 					{
@@ -1207,7 +1207,7 @@
 		double scpInv = 1.0 / (qMax(view->scale(), 1.0) * aestheticFactor);
 		if (!isGroupControl)
 		{
-			if ((Frame) && (m_Doc->guidesSettings.framesShown) && ((itemType() == ImageFrame) || (itemType() == LatexFrame) || (itemType() == PathText)))
+			if ((Frame) && (m_Doc->guidesSettings.framesShown) && ((itemType() == ImageFrame) || (itemType() == LatexFrame) || (itemType() == OSGFrame) || (itemType() == PathText)))
 			{
 				p->setPen(PrefsManager::instance()->appPrefs.DFrameNormColor, scpInv, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
 				if ((isBookmark) || (m_isAnnotation))
@@ -1354,6 +1354,7 @@
 			case ImageFrame:
 			case TextFrame:
 			case LatexFrame:
+			case OSGFrame:
 			case Polygon:
 			case PathText:
 				embedded->DrawObj_Item(p, cullingArea, sc);
@@ -2276,6 +2277,7 @@
 			{
 				case ImageFrame:
 				case LatexFrame:
+				case OSGFrame:
 					tmp = m_Doc->toolSettings.dBrushPict;
 				case TextFrame:
 				case PathText:
@@ -2388,6 +2390,7 @@
 				case Polygon:
 				case ImageFrame:
 				case LatexFrame:
+				case OSGFrame:
 					tmp = m_Doc->toolSettings.dPen;
 					break;
 				default:
@@ -2456,6 +2459,7 @@
 				case Polygon:
 				case ImageFrame:
 				case LatexFrame:
+				case OSGFrame:
 					lineColorVal = m_Doc->toolSettings.dPen;
 					break;
 				default:
@@ -2484,6 +2488,7 @@
 			{
 				case ImageFrame:
 				case LatexFrame:
+				case OSGFrame:
 					fillColorVal = m_Doc->toolSettings.dBrushPict;
 				case TextFrame:
 				case PathText:
@@ -5561,6 +5566,25 @@
 	}
 }
 
+void PageItem::setInlineData(QString data)
+{
+	QByteArray inlineImageData;
+	inlineImageData.append(data);
+	if (inlineImageData.size() > 0)
+	{
+		tempImageFile = new QTemporaryFile(QDir::tempPath() + "/scribus_temp_XXXXXX." + inlineExt);
+		tempImageFile->open();
+		QString fileName = getLongPathName(tempImageFile->fileName());
+		tempImageFile->close();
+		inlineImageData = qUncompress(QByteArray::fromBase64(inlineImageData));
+		QFile outFil(fileName);
+		if (outFil.open(QIODevice::WriteOnly))
+		{
+			outFil.write(inlineImageData);
+			outFil.close();
+			isInlineImage = true;
+			Pfile = fileName;
+		}
+	}
+}
 
-
-
Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp	(revision 13838)
+++ scribus/scribusview.cpp	(revision 13839)
@@ -3589,6 +3589,7 @@
 		Q_ASSERT(false);
 		break;
 	case PageItem::LatexFrame:
+		{
 		z = Doc->itemAdd(PageItem::LatexFrame, PageItem::Unspecified, x, y, w, h, 1, Doc->toolSettings.dBrushPict, CommonStrings::None, true);
 		undoManager->setUndoEnabled(false);
 		Doc->Items->at(z)->setImageXYScale(Buffer->LocalScX, Buffer->LocalScY);
@@ -3609,7 +3610,28 @@
 		latexframe->setFormula(Buffer->itemText); //itemText seems to be a good choice...
 		undoManager->setUndoEnabled(true);
 		break;
-
+		}
+	case PageItem::OSGFrame:
+#ifdef HAVE_OSG
+		z = Doc->itemAdd(PageItem::OSGFrame, PageItem::Unspecified, x, y, w, h, 1, Doc->toolSettings.dBrushPict, CommonStrings::None, true);
+		undoManager->setUndoEnabled(false);
+		Doc->Items->at(z)->setImageXYScale(Buffer->LocalScX, Buffer->LocalScY);
+		Doc->Items->at(z)->setImageXYOffset(Buffer->LocalX, Buffer->LocalY);
+		Doc->Items->at(z)->Pfile = Buffer->Pfile;
+		Doc->Items->at(z)->IProfile = Buffer->IProfile;
+		Doc->Items->at(z)->EmProfile = Buffer->EmProfile;
+		Doc->Items->at(z)->IRender = Buffer->IRender;
+		Doc->Items->at(z)->UseEmbedded = Buffer->UseEmbedded;
+		if (!Doc->Items->at(z)->Pfile.isEmpty())
+			Doc->LoadPict(Doc->Items->at(z)->Pfile, z);
+		Doc->Items->at(z)->setImageXYScale(Buffer->LocalScX, Buffer->LocalScY);
+		Doc->Items->at(z)->setImageShown(Buffer->PicArt);
+		Doc->Items->at(z)->ScaleType = Buffer->ScaleType;
+		Doc->Items->at(z)->AspectRatio = Buffer->AspectRatio;
+		Doc->Items->at(z)->setLineWidth(Buffer->Pwidth);
+		undoManager->setUndoEnabled(true);
+#endif
+		break;
 	}
 	PageItem *currItem = Doc->Items->at(z);
 	undoManager->setUndoEnabled(false);
Index: scribus/commonstrings.h
===================================================================
--- scribus/commonstrings.h	(revision 13838)
+++ scribus/commonstrings.h	(revision 13839)
@@ -114,6 +114,7 @@
 	static QString itemType_Polyline;
 	static QString itemType_PathText;
 	static QString itemType_LatexFrame;
+	static QString itemType_OSGFrame;
 	static QString itemType_Multiple;
 	
 	static QString itemSubType_PDF_PushButton;
Index: scribus/actionmanager.cpp
===================================================================
--- scribus/actionmanager.cpp	(revision 13838)
+++ scribus/actionmanager.cpp	(revision 13839)
@@ -740,7 +740,10 @@
 	scrActions->insert(name, new ScrAction(ScrAction::DataInt, loadIcon("16/pdf-annotations.png"), loadIcon("22/pdf-annotations.png"), "", defaultKey(name), mainWindow, modeInsertPDFTextAnnotation));
 	name="toolsPDFAnnotLink";
 	scrActions->insert(name, new ScrAction(ScrAction::DataInt, loadIcon("goto16.png"), loadIcon("goto.png"), "", defaultKey(name), mainWindow, modeInsertPDFLinkAnnotation));
-
+#ifdef HAVE_OSG
+	name="toolsPDFAnnot3D";
+	scrActions->insert(name, new ScrAction(ScrAction::DataInt, loadIcon("16/annot3d.png"), loadIcon("22/annot3d.png"), "", defaultKey(name), mainWindow, modeInsertPDF3DAnnotation));
+#endif
 	//Set the applicaton wide palette shortcuts
 	(*scrActions)["toolsProperties"]->setShortcutContext(Qt::ApplicationShortcut);
 	(*scrActions)["toolsScrapbook"]->setShortcutContext(Qt::ApplicationShortcut);
@@ -771,7 +774,9 @@
 	*modeActionNames << "toolsEditWithStoryEditor" << "toolsLinkTextFrame" << "toolsUnlinkTextFrame";
 	*modeActionNames << "toolsEyeDropper" << "toolsCopyProperties";
 	*modeActionNames << "toolsPDFPushButton" << "toolsPDFTextField" << "toolsPDFCheckBox" << "toolsPDFComboBox" << "toolsPDFListBox" << "toolsPDFAnnotText" << "toolsPDFAnnotLink";
-
+#ifdef HAVE_OSG
+	*modeActionNames << "toolsPDFAnnot3D";
+#endif
  	for ( QStringList::Iterator it = modeActionNames->begin(); it != modeActionNames->end(); ++it )
 	{
  		(*scrActions)[*it]->setEnabled(false);
@@ -1470,6 +1475,9 @@
 	(*scrActions)["toolsPDFListBox"]->setTexts( tr("Insert PDF List Box"));
 	(*scrActions)["toolsPDFAnnotText"]->setTexts( tr("Insert Text Annotation"));
 	(*scrActions)["toolsPDFAnnotLink"]->setTexts( tr("Insert Link Annotation"));
+#ifdef HAVE_OSG
+	(*scrActions)["toolsPDFAnnot3D"]->setTexts( tr("Insert 3D Annotation"));
+#endif
 
 
 	//Extras Menu
@@ -1927,6 +1935,9 @@
 	itnmenua->second << "toolsPDFListBox";
 	itnmenua->second << "toolsPDFAnnotText";
 	itnmenua->second << "toolsPDFAnnotLink";
+#ifdef HAVE_OSG
+	itnmenua->second << "toolsPDFAnnot3D";
+#endif
 	itnmenua->second << "specialToggleAllPalettes";
 	itnmenua->second << "specialToggleAllGuides";
 	itnmenua->second << "specialUnicodeSequenceBegin";
Index: scribus/ui/pdftoolbar.cpp
===================================================================
--- scribus/ui/pdftoolbar.cpp	(revision 13838)
+++ scribus/ui/pdftoolbar.cpp	(revision 13839)
@@ -35,4 +35,7 @@
 	this->addAction(parent->scrActions["toolsPDFListBox"]);
 	this->addAction(parent->scrActions["toolsPDFAnnotText"]);
 	this->addAction(parent->scrActions["toolsPDFAnnotLink"]);
+#ifdef HAVE_OSG
+	this->addAction(parent->scrActions["toolsPDFAnnot3D"]);
+#endif
 }
Index: scribus/ui/osgeditor.h
===================================================================
--- scribus/ui/osgeditor.h	(revision 0)
+++ scribus/ui/osgeditor.h	(revision 13839)
@@ -0,0 +1,67 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*   Copyright (C) 2009 by Franz Schmid                                   *
+*   franz.schmid at altmuehlnet.de                                                   *
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+*   This program is distributed in the hope that it will be useful,       *
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+*   GNU General Public License for more details.                          *
+*                                                                         *
+*   You should have received a copy of the GNU General Public License     *
+*   along with this program; if not, write to the                         *
+*   Free Software Foundation, Inc.,                                       *
+*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+***************************************************************************/
+
+#ifndef OSGEDITOR_H
+#define OSGEDITOR_H
+
+#include <QDialog>
+#include "ui_osgeditor.h"
+#include "scribusapi.h"
+#include "scribusdoc.h"
+#include "scribus.h"
+#include "pageitem_osgframe.h"
+
+class SCRIBUS_API OSGEditorDialog : public QDialog, Ui::OSGEditor
+{
+	Q_OBJECT
+
+	public:
+		OSGEditorDialog(QWidget* parent, PageItem_OSGFrame *frame);
+		~OSGEditorDialog() {};
+
+	public slots:
+		void clearDisplay();
+		void setCameraValues();
+		void changeView(QString viewName);
+		void addView();
+		void removeView();
+		void renameView(QString newName);
+		void changeRenderMode(int mode);
+		void changeLightMode(int mode);
+		void reportCamera();
+		void openFile();
+		void accept();
+
+	protected:
+		PageItem_OSGFrame *currItem;
+		QHash<QString, PageItem_OSGFrame::viewDefinition> viewMap;
+		PageItem_OSGFrame::viewDefinition currentView;
+		QString currentViewName;
+		osg::ref_ptr<osg::Node> loadedModel;
+		QString modelFile;
+};
+
+#endif
Index: scribus/ui/annot.cpp
===================================================================
--- scribus/ui/annot.cpp	(revision 13838)
+++ scribus/ui/annot.cpp	(revision 13839)
@@ -1751,7 +1751,7 @@
 	item->annotation().setFormat(it);
 }
 
-void Annot::SetCo(qreal x, qreal y)
+void Annot::SetCo(double x, double y)
 {
 	SpinBox21->setValue(static_cast<int>(x*Breite));
 	SpinBox31->setValue(static_cast<int>(y*Hoehe));
Index: scribus/ui/outlinepalette.h
===================================================================
--- scribus/ui/outlinepalette.h	(revision 13838)
+++ scribus/ui/outlinepalette.h	(revision 13839)
@@ -107,6 +107,7 @@
 	QPixmap listBoxIcon;
 	QPixmap annotTextIcon;
 	QPixmap annotLinkIcon;
+	QPixmap annot3DIcon;
 	bool selectionTriggered;
 	ScribusDoc *currDoc;
 };
Index: scribus/ui/osgeditor.ui
===================================================================
--- scribus/ui/osgeditor.ui	(revision 0)
+++ scribus/ui/osgeditor.ui	(revision 13839)
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>OSGEditor</class>
+ <widget class="QDialog" name="OSGEditor">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>552</width>
+    <height>380</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>3D Properties</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_3">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_4">
+     <item>
+      <widget class="QFrame" name="frame">
+       <property name="frameShape">
+        <enum>QFrame::StyledPanel</enum>
+       </property>
+       <property name="frameShadow">
+        <enum>QFrame::Sunken</enum>
+       </property>
+       <property name="lineWidth">
+        <number>2</number>
+       </property>
+       <layout class="QGridLayout" name="gridLayout_4">
+        <item row="0" column="1">
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>118</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="1" column="0">
+         <spacer name="horizontalSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>105</width>
+            <height>1</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="1" column="1">
+         <widget class="ViewerQT" name="drawingarea" native="true">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>30</width>
+            <height>30</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>400</width>
+            <height>400</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="2">
+         <spacer name="horizontalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>104</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="2" column="1">
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>118</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QPushButton" name="loadButton">
+           <property name="text">
+            <string>Load Model ...</string>
+           </property>
+           <property name="autoDefault">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="clearButton">
+           <property name="text">
+            <string>Clear Model</string>
+           </property>
+           <property name="autoDefault">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="groupBox_5">
+         <property name="title">
+          <string>Views</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout">
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_2">
+            <item>
+             <widget class="QLabel" name="label_10">
+              <property name="text">
+               <string>Name:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QComboBox" name="viewCombo">
+              <property name="editable">
+               <bool>false</bool>
+              </property>
+              <property name="insertPolicy">
+               <enum>QComboBox::InsertAtCurrent</enum>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QGroupBox" name="groupBox_4">
+            <property name="title">
+             <string>Options</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_5">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_8">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="text">
+                <string>Renderstyle:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QComboBox" name="renderStyleCombo">
+               <item>
+                <property name="text">
+                 <string>Solid</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Solid Wireframe</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Transparent</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Transparent Wireframe</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>BoundingBox</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Transparent BoundingBox</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Transparen tBoundingBox Outline</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Wireframe</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Shaded Wireframe</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Hidden Wireframe</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Vertices</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Shaded Vertices</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Illustration</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Solid Outline</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Shaded Illustration</string>
+                </property>
+               </item>
+              </widget>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_9">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="text">
+                <string>Lightning:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QComboBox" name="lightStyleCombo">
+               <property name="currentIndex">
+                <number>1</number>
+               </property>
+               <item>
+                <property name="text">
+                 <string>None</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Headlamp</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>White</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Day</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Night</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Hard</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Primary</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Blue</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Red</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Cube</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>CAD</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>Artwork</string>
+                </property>
+               </item>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="QGroupBox" name="groupBox_3">
+            <property name="title">
+             <string>Field of Vision</string>
+            </property>
+            <property name="flat">
+             <bool>false</bool>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_3">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_7">
+               <property name="frameShape">
+                <enum>QFrame::NoFrame</enum>
+               </property>
+               <property name="text">
+                <string>Angle:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="ScrSpinBox" name="fovAngle">
+               <property name="minimum">
+                <double>1.000000000000000</double>
+               </property>
+               <property name="maximum">
+                <double>180.000000000000000</double>
+               </property>
+               <property name="value">
+                <double>1.000000000000000</double>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <item>
+          <widget class="QPushButton" name="buttonAddView">
+           <property name="text">
+            <string>Add View...</string>
+           </property>
+           <property name="autoDefault">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="buttonRemoveView">
+           <property name="text">
+            <string>Remove View</string>
+           </property>
+           <property name="autoDefault">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ViewerQT</class>
+   <extends>QWidget</extends>
+   <header>ui/AdapterWidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QDoubleSpinBox</extends>
+   <header>ui/scrspinbox.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>OSGEditor</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>OSGEditor</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: scribus/ui/osgeditor.cpp
===================================================================
--- scribus/ui/osgeditor.cpp	(revision 0)
+++ scribus/ui/osgeditor.cpp	(revision 13839)
@@ -0,0 +1,322 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/**************************************************************************
+*   Copyright (C) 2009 by Franz Schmid                                    *
+*   franz.schmid at altmuehlnet.de                                           *
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+*   This program is distributed in the hope that it will be useful,       *
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+*   GNU General Public License for more details.                          *
+*                                                                         *
+*   You should have received a copy of the GNU General Public License     *
+*   along with this program; if not, write to the                         *
+*   Free Software Foundation, Inc.,                                       *
+*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+***************************************************************************/
+
+#include <osgDB/ReadFile>
+#include <osgViewer/Viewer>
+#include <osgGA/TrackballManipulator>
+#include <osgUtil/Optimizer>
+#include "osgeditor.h"
+#include "commonstrings.h"
+#include "sccolorengine.h"
+#include "ui/customfdialog.h"
+#include "prefsfile.h"
+#include "prefsmanager.h"
+#include "units.h"
+#include "util.h"
+#include <QFileDialog>
+#include <QInputDialog>
+
+OSGEditorDialog::OSGEditorDialog(QWidget* parent, PageItem_OSGFrame *frame) : QDialog(parent)
+{
+	setupUi(this);
+	setModal(true);
+	currItem = frame;
+	int wd = 300;
+	int hd = 300;
+	double asp = currItem->width() / currItem->height();
+	if (asp > 1.0)
+		hd = qRound(300 / asp);
+	else
+		wd = qRound(300 * asp);
+	drawingarea->setFixedSize(wd, hd);
+	drawingarea->resize(wd, hd);
+	updateGeometry();
+	viewMap = currItem->viewMap;
+	currentViewName = currItem->currentView;
+	currentView = viewMap[currentViewName];
+	viewCombo->addItems(viewMap.keys());
+	setCurrentComboItem(viewCombo, currentViewName);
+	fovAngle->setValue(30.0);
+	fovAngle->setNewUnit(SC_DEGREES);
+	if (currItem->fillColor() != CommonStrings::None)
+	{
+		const ScColor& col = currItem->doc()->PageColors[currItem->fillColor()];
+		QColor fillColor = ScColorEngine::getShadeColorProof(col, currItem->doc(), currItem->fillShade());
+		drawingarea->getCamera()->setClearColor(osg::Vec4(fillColor.redF(), fillColor.greenF(), fillColor.blueF(), 0.0));
+	}
+	if (currItem->loadedModel)
+	{
+		loadedModel = currItem->loadedModel;
+		modelFile = currItem->modelFile;
+		renderStyleCombo->setCurrentIndex(currentView.rendermode);
+		lightStyleCombo->setCurrentIndex(currentView.illumination);
+		fovAngle->setValue(currentView.angleFOV);
+		drawingarea->setCameraManipulator ( new osgGA::TrackballManipulator );
+		drawingarea->setSceneData(loadedModel.get());
+		osgGA::TrackballManipulator *trb = dynamic_cast<osgGA::TrackballManipulator*>(drawingarea->getCameraManipulator());
+		trb->setByMatrix(currentView.trackerMatrix);
+		trb->setCenter(currentView.trackerCenter);
+		trb->setDistance(currentView.trackerDist);
+		trb->setTrackballSize(currentView.trackerSize);
+		drawingarea->updateTraversal();
+		double fovy, aspectRatio, zNear, zFar;
+		drawingarea->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
+		drawingarea->getCamera()->setProjectionMatrixAsPerspective(currentView.angleFOV, aspectRatio, zNear, zFar);
+		drawingarea->updateGL();
+		connect(drawingarea, SIGNAL(mouseMoved()), this, SLOT(reportCamera()));
+		connect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+		connect(buttonAddView, SIGNAL(clicked()), this, SLOT(addView()));
+		connect(buttonRemoveView, SIGNAL(clicked()), this, SLOT(removeView()));
+		groupBox_5->setEnabled(true);
+		buttonRemoveView->setEnabled(true);
+		buttonAddView->setEnabled(true);
+		clearButton->setEnabled(true);
+	}
+	else
+	{
+		groupBox_5->setEnabled(false);
+		buttonRemoveView->setEnabled(false);
+		buttonAddView->setEnabled(false);
+		clearButton->setEnabled(false);
+	}
+	connect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+	connect(loadButton, SIGNAL(clicked()), this, SLOT(openFile()));
+	connect(clearButton, SIGNAL(clicked()), this, SLOT(clearDisplay()));
+	connect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
+	connect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
+}
+
+void OSGEditorDialog::clearDisplay()
+{
+	disconnect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+	disconnect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
+	disconnect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
+	disconnect(drawingarea, SIGNAL(mouseMoved()), this, SLOT(reportCamera()));
+	disconnect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+	disconnect(buttonAddView, SIGNAL(clicked()), this, SLOT(addView()));
+	disconnect(buttonRemoveView, SIGNAL(clicked()), this, SLOT(removeView()));
+	currentView.trackerCenter = osg::Vec3d();
+	currentView.cameraPosition = osg::Vec3d();
+	currentView.trackerMatrix = osg::Matrixd();
+	drawingarea->setSceneData(0);
+	loadedModel = 0;
+	currentView.angleFOV = 30.0;
+	fovAngle->setValue(currentView.angleFOV);
+	currentView.illumination = PageItem_OSGFrame::Headlamp;
+	currentView.rendermode = PageItem_OSGFrame::Solid;
+	renderStyleCombo->setCurrentIndex(currentView.rendermode);
+	lightStyleCombo->setCurrentIndex(currentView.illumination);
+	modelFile = "";
+	viewMap.clear();
+	currentView.trackerDist = 0.0;
+	currentView.trackerSize = 0.0;
+	viewMap.insert( tr("Default"), currentView);
+	currentViewName = tr("Default");
+	viewCombo->addItems(viewMap.keys());
+	setCurrentComboItem(viewCombo, currentViewName);
+	groupBox_5->setEnabled(false);
+	buttonRemoveView->setEnabled(false);
+	buttonAddView->setEnabled(false);
+	clearButton->setEnabled(false);
+	connect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+	connect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
+	connect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
+}
+
+void OSGEditorDialog::setCameraValues()
+{
+	drawingarea->getCamera()->setProjectionMatrixAsPerspective(fovAngle->value(), static_cast<double>(drawingarea->width()) / static_cast<double>(drawingarea->height()), 1.0f, 10000.0f );
+	drawingarea->updateGL();
+	currentView.angleFOV = fovAngle->value();
+}
+
+void OSGEditorDialog::changeView(QString viewName)
+{
+	disconnect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+	disconnect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
+	disconnect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
+	viewMap[currentViewName] = currentView;
+	currentView = viewMap[viewName];
+	currentViewName = viewName;
+	renderStyleCombo->setCurrentIndex(currentView.rendermode);
+	lightStyleCombo->setCurrentIndex(currentView.illumination);
+	fovAngle->setValue(currentView.angleFOV);
+	osgGA::TrackballManipulator *trb = dynamic_cast<osgGA::TrackballManipulator*>(drawingarea->getCameraManipulator());
+	trb->setByMatrix(currentView.trackerMatrix);
+	trb->setCenter(currentView.trackerCenter);
+	trb->setDistance(currentView.trackerDist);
+	trb->setTrackballSize(currentView.trackerSize);
+	drawingarea->updateTraversal();
+	double fovy, aspectRatio, zNear, zFar;
+	drawingarea->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
+	drawingarea->getCamera()->setProjectionMatrixAsPerspective(currentView.angleFOV, aspectRatio, zNear, zFar);
+	drawingarea->updateGL();
+	connect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+	connect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
+	connect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
+}
+
+void OSGEditorDialog::addView()
+{
+	disconnect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+	viewMap[currentViewName] = currentView;
+	bool ok;
+	QString newName = currentViewName;
+	while (viewMap.contains(newName))
+	{
+		newName = QInputDialog::getText( this, tr("Add a new View"), tr("Name:"), QLineEdit::Normal, tr("New View"), &ok);
+	}
+	if (ok && !newName.isEmpty())
+	{
+		currentViewName = newName;
+		viewMap.insert(currentViewName, currentView);
+		viewCombo->addItem(currentViewName);
+		setCurrentComboItem(viewCombo, currentViewName);
+	}
+	connect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+}
+
+void OSGEditorDialog::removeView()
+{
+	disconnect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+	if (viewMap.size() > 1)
+	{
+		viewMap.remove(currentViewName);
+		viewCombo->clear();
+		QStringList vKey = viewMap.keys();
+		viewCombo->addItems(vKey);
+		currentViewName = vKey[0];
+		setCurrentComboItem(viewCombo, currentViewName);
+		currentView = viewMap[currentViewName];
+		changeView(currentViewName);
+	}
+	connect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+}
+
+void OSGEditorDialog::renameView(QString newName)
+{
+	viewMap.remove(currentViewName);
+	currentViewName = newName;
+	viewMap.insert(currentViewName, currentView);
+}
+
+void OSGEditorDialog::changeRenderMode(int mode)
+{
+	currentView.rendermode = static_cast<PageItem_OSGFrame::RenderType>(mode);
+}
+
+void OSGEditorDialog::changeLightMode(int mode)
+{
+	currentView.illumination = static_cast<PageItem_OSGFrame::LightType>(mode);
+}
+
+void OSGEditorDialog::reportCamera()
+{
+	disconnect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+	osg::Vec3d vecEye, vecCenter, vecUp;
+	drawingarea->getCamera()->getViewMatrixAsLookAt(vecEye, vecCenter, vecUp);
+	currentView.cameraPosition = vecEye;
+	currentView.cameraUp = vecUp;
+	osgGA::TrackballManipulator *trb = dynamic_cast<osgGA::TrackballManipulator*>(drawingarea->getCameraManipulator());
+	currentView.trackerCenter = trb->getCenter();
+	currentView.trackerMatrix = trb->getMatrix();
+	currentView.trackerDist = trb->getDistance();
+	currentView.trackerSize = trb->getTrackballSize();
+	double fovy, aspectRatio, zNear, zFar;
+	drawingarea->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
+	currentView.angleFOV = fovy;
+	fovAngle->setValue(currentView.angleFOV);
+	connect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
+}
+
+void OSGEditorDialog::openFile()
+{
+	QString fileName;
+	PrefsContext* dirs = PrefsManager::instance()->prefsFile->getContext("dirs");
+	QString wdir = dirs->get("models", ".");
+	QString docexts("*.ac");
+	QString filter = tr("All Supported Formats (%1);;All Files (*)").arg(docexts);
+	CustomFDialog dia(this, wdir, tr("Import 3-D Model"), filter, fdHidePreviewCheckBox);
+	if (dia.exec() == QDialog::Accepted)
+		fileName = dia.selectedFile();
+	else
+		return;
+	if (!fileName.isEmpty())
+	{
+		loadedModel = osgDB::readNodeFile ( fileName.toStdString() );
+		if (loadedModel)
+		{
+			osgUtil::Optimizer optimzer;
+			optimzer.optimize(loadedModel);
+			modelFile = fileName;
+			drawingarea->setCameraManipulator ( new osgGA::TrackballManipulator );
+			drawingarea->setSceneData(loadedModel.get());
+			reportCamera();
+			groupBox_5->setEnabled(true);
+			buttonRemoveView->setEnabled(true);
+			buttonAddView->setEnabled(true);
+			clearButton->setEnabled(true);
+			connect(drawingarea, SIGNAL(mouseMoved()), this, SLOT(reportCamera()));
+			connect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
+			connect(buttonAddView, SIGNAL(clicked()), this, SLOT(addView()));
+			connect(buttonRemoveView, SIGNAL(clicked()), this, SLOT(removeView()));
+		}
+		dirs->set("models", fileName.left(fileName.lastIndexOf("/")));
+	}
+}
+
+void OSGEditorDialog::accept()
+{
+	if (loadedModel)
+	{
+		currItem->loadedModel = loadedModel;
+		osg::Vec3d vecEye, vecCenter, vecUp;
+		drawingarea->getCamera()->getViewMatrixAsLookAt(vecEye, vecCenter, vecUp);
+		currentView.cameraPosition = vecEye;
+		currentView.cameraUp = vecUp;
+		osgGA::TrackballManipulator *trb = dynamic_cast<osgGA::TrackballManipulator*>(drawingarea->getCameraManipulator());
+		currentView.trackerCenter = trb->getCenter();
+		currentView.trackerMatrix = trb->getMatrix();
+		currentView.trackerDist = trb->getDistance();
+		currentView.trackerSize = trb->getTrackballSize();
+		double fovy, aspectRatio, zNear, zFar;
+		drawingarea->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
+		currentView.angleFOV = fovy;
+		currentView.illumination = static_cast<PageItem_OSGFrame::LightType>(lightStyleCombo->currentIndex());
+		currentView.rendermode = static_cast<PageItem_OSGFrame::RenderType>(renderStyleCombo->currentIndex());
+		currItem->modelFile = modelFile;
+		QImage image = drawingarea->grabFrameBuffer();
+		currItem->setImage(image);
+		viewMap[currentViewName] = currentView;
+		currItem->viewMap = viewMap;
+		currItem->currentView = currentViewName;
+	}
+	else
+	{
+		currItem->clearContents();
+	}
+	QDialog::accept();
+}
Index: scribus/ui/annot.h
===================================================================
--- scribus/ui/annot.h	(revision 13838)
+++ scribus/ui/annot.h	(revision 13839)
@@ -239,7 +239,7 @@
 	void HandleCalc();
 	void SetCalc();
 	void SetFoScript ( int it );
-	void SetCo ( qreal x, qreal y );
+	void SetCo ( double x, double y );
 	void SetPg ( int v );
 	void SetCross();
 	void SetVals();
Index: scribus/ui/AdapterWidget.h
===================================================================
--- scribus/ui/AdapterWidget.h	(revision 0)
+++ scribus/ui/AdapterWidget.h	(revision 13839)
@@ -0,0 +1,83 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#ifndef ADAPT_H
+#define ADAPTC_H
+
+#include <QtCore>
+#include <QtGui>
+#include <QtOpenGL>
+#include <osgViewer/Viewer>
+#include <osg/Vec3>
+
+class AdapterWidget : public QGLWidget
+{
+    Q_OBJECT
+	public:
+
+		AdapterWidget ( QWidget * parent = 0, const char * name = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 );
+
+		virtual ~AdapterWidget() {}
+
+		osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); }
+		const osgViewer::GraphicsWindow* getGraphicsWindow() const { return _gw.get(); }
+
+	signals:
+		void mouseMoved();
+	protected:
+
+		void init();
+
+		virtual void resizeGL ( int width, int height );
+		virtual void keyPressEvent ( QKeyEvent* event );
+		virtual void keyReleaseEvent ( QKeyEvent* event );
+		virtual void mousePressEvent ( QMouseEvent* event );
+		virtual void mouseReleaseEvent ( QMouseEvent* event );
+		virtual void mouseMoveEvent ( QMouseEvent* event );
+
+		int button;
+		osg::ref_ptr<osgViewer::GraphicsWindowEmbedded> _gw;
+};
+
+
+class ViewerQT : public osgViewer::Viewer, public AdapterWidget
+{
+	public:
+
+		ViewerQT ( QWidget * parent = 0, const char * name = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) :
+				AdapterWidget ( parent, name, shareWidget, f )
+		{
+			getCamera()->setViewport ( new osg::Viewport ( 0,0,width(),height() ) );
+			getCamera()->setProjectionMatrixAsPerspective ( 30.0f, static_cast<double> ( width() ) /static_cast<double> ( height() ), 1.0f, 10000.0f );
+			QColor bg = palette().window().color();
+			getCamera()->setClearColor(osg::Vec4(bg.redF(), bg.greenF(), bg.blueF(), 0.0));
+			getCamera()->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+			getCamera()->setGraphicsContext ( getGraphicsWindow() );
+
+			setThreadingModel ( osgViewer::Viewer::SingleThreaded );
+
+			connect ( &_timer, SIGNAL ( timeout() ), this, SLOT ( updateGL() ) );
+			_timer.start ( 10 );
+		}
+
+		virtual void paintGL()
+		{
+			frame();
+		}
+
+	protected:
+
+		QTimer _timer;
+};
+#endif
Index: scribus/ui/propertiespalette.cpp
===================================================================
--- scribus/ui/propertiespalette.cpp	(revision 13838)
+++ scribus/ui/propertiespalette.cpp	(revision 13839)
@@ -1762,7 +1762,11 @@
 		{
 			imagePageNumber->setMaximum(CurItem->pixm.imgInfo.numberOfPages);
 			setter = CurItem->ScaleType;
+#ifdef HAVE_OSG
+			if ((CurItem->asLatexFrame()) || (CurItem->asOSGFrame()))
+#else
 			if (CurItem->asLatexFrame())
+#endif
 			{
 				FreeScale->setEnabled(false);
 				FrameScale->setEnabled(false);
@@ -1815,6 +1819,22 @@
 			KnockOut->setChecked(!CurItem->doOverprint);
 			Overprint->setChecked(CurItem->doOverprint);
 		}
+#ifdef HAVE_OSG
+		if (CurItem->asOSGFrame())
+		{
+			TabStack->setItemEnabled(idXYZItem, true);
+			TabStack->setItemEnabled(idShapeItem, true);
+			TabStack->setItemEnabled(idGroupItem, false);
+			TabStack->setItemEnabled(idLineItem, false);
+			TabStack->setItemEnabled(idColorsItem, true);
+			TabStack->setItemEnabled(idTextItem, false);
+			TabStack->setItemEnabled(idImageItem, false);
+			Rotation->setEnabled(false);
+			RoundRect->setEnabled(false);
+			EditShape->setEnabled(false);
+			SCustom->setEnabled(false);
+		}
+#endif
 	}
 }
 
@@ -2322,7 +2342,11 @@
 			setter = CurItem->ScaleType;
 			FreeScale->setChecked(setter);
 			FrameScale->setChecked(!setter);
+#ifdef HAVE_OSG
+			if ((CurItem->asLatexFrame()) || (CurItem->asOSGFrame()))
+#else
 			if (CurItem->asLatexFrame())
+#endif
 			{
 				FreeScale->setEnabled(false);
 				FrameScale->setEnabled(false);
@@ -2388,6 +2412,22 @@
 		if ((CurItem->Groups.count() != 0) && (isGroup))
 			DoUnGroup->setEnabled(true);
 	}
+#ifdef HAVE_OSG
+	if (CurItem->asOSGFrame())
+	{
+		TabStack->setItemEnabled(idXYZItem, true);
+		TabStack->setItemEnabled(idShapeItem, true);
+		TabStack->setItemEnabled(idGroupItem, false);
+		TabStack->setItemEnabled(idLineItem, false);
+		TabStack->setItemEnabled(idColorsItem, true);
+		TabStack->setItemEnabled(idTextItem, false);
+		TabStack->setItemEnabled(idImageItem, false);
+		Rotation->setEnabled(false);
+		RoundRect->setEnabled(false);
+		EditShape->setEnabled(false);
+		SCustom->setEnabled(false);
+	}
+#endif
 	updateSpinBoxConstants();
 }
 
@@ -2531,21 +2571,42 @@
 			TabStack->setItemEnabled(idXYZItem, false);
 			Cpal->ChooseGrad(0);
 			break;
-		case 2:
-			TabStack->setItemEnabled(idShapeItem, true);
-			TabStack->setItemEnabled(idTextItem, false);
-			TabStack->setItemEnabled(idImageItem, true);
-			TabStack->setItemEnabled(idLineItem, true);
-			if ((!i->ClipEdited) && ((i->FrameType == 0) || (i->FrameType == 2)))
-				RoundRect->setEnabled(!i->locked());
+		case PageItem::ImageFrame:
+		case PageItem::LatexFrame:
+		case PageItem::OSGFrame:
+#ifdef HAVE_OSG
+			if (i->asOSGFrame())
+			{
+				TabStack->setItemEnabled(idXYZItem, true);
+				TabStack->setItemEnabled(idShapeItem, true);
+				TabStack->setItemEnabled(idGroupItem, false);
+				TabStack->setItemEnabled(idLineItem, false);
+				TabStack->setItemEnabled(idColorsItem, true);
+				TabStack->setItemEnabled(idTextItem, false);
+				TabStack->setItemEnabled(idImageItem, false);
+				Rotation->setEnabled(false);
+				RoundRect->setEnabled(false);
+				EditShape->setEnabled(false);
+				SCustom->setEnabled(false);
+			}
 			else
-				RoundRect->setEnabled(false);
-			if ((doc->m_Selection->itemAt(0)->FrameType == 0) || (doc->m_Selection->itemAt(0)->FrameType == 2))
-				RoundRect->setEnabled(!i->locked());
-// 			if (visID == 2)
-// 				TabStack->setCurrentIndex(0);
+			{
+#endif
+				TabStack->setItemEnabled(idShapeItem, true);
+				TabStack->setItemEnabled(idTextItem, false);
+				TabStack->setItemEnabled(idImageItem, true);
+				TabStack->setItemEnabled(idLineItem, true);
+				if ((!i->ClipEdited) && ((i->FrameType == 0) || (i->FrameType == 2)))
+					RoundRect->setEnabled(!i->locked());
+				else
+					RoundRect->setEnabled(false);
+				if ((doc->m_Selection->itemAt(0)->FrameType == 0) || (doc->m_Selection->itemAt(0)->FrameType == 2))
+					RoundRect->setEnabled(!i->locked());
+#ifdef HAVE_OSG
+			}
+#endif
 			break;
-		case 4:
+		case PageItem::TextFrame:
 			TabStack->setItemEnabled(idShapeItem, true);
 			TabStack->setItemEnabled(idTextItem, true);
 			TabStack->setItemEnabled(idImageItem, false);
@@ -2558,7 +2619,7 @@
 // 			if (visID == 3)
 // 				TabStack->setCurrentIndex(0);
 			break;
-		case 5:
+		case PageItem::Line:
 			TabStack->setItemEnabled(idShapeItem, false);
 			TabStack->setItemEnabled(idTextItem, false);
 			TabStack->setItemEnabled(idImageItem, false);
@@ -2574,9 +2635,9 @@
 // 			if ((visID == 1) || (visID == 2) || (visID == 3))
 // 				TabStack->setCurrentIndex(0);
 			break;
-		case 1:
-		case 3:
-		case 6:
+		case PageItem::ItemType1:
+		case PageItem::ItemType3:
+		case PageItem::Polygon:
 			TabStack->setItemEnabled(idShapeItem, true);
 			TabStack->setItemEnabled(idTextItem, false);
 			TabStack->setItemEnabled(idImageItem, false);
@@ -2588,7 +2649,7 @@
 // 			if ((visID == 2) || (visID == 3))
 // 				TabStack->setCurrentIndex(0);
 			break;
-		case 7:
+		case PageItem::PolyLine:
 			TabStack->setItemEnabled(idShapeItem, true);
 			TabStack->setItemEnabled(idTextItem, false);
 			TabStack->setItemEnabled(idImageItem, false);
@@ -2597,7 +2658,7 @@
 // 			if ((visID == 2) || (visID == 3))
 // 				TabStack->setCurrentIndex(0);
 			break;
-		case 8:
+		case PageItem::PathText:
 			TabStack->setItemEnabled(idShapeItem, true);
 			TabStack->setItemEnabled(idTextItem, true);
 			TabStack->setItemEnabled(idImageItem, false);
Index: scribus/ui/selfield.cpp
===================================================================
--- scribus/ui/selfield.cpp	(revision 13838)
+++ scribus/ui/selfield.cpp	(revision 13839)
@@ -45,7 +45,7 @@
 		PageItem* item = Doc->Items->at(se);
 		if (Art < 2)
 		{
-			if ((item->isAnnotation()) && (item->annotation().Type() > 1))
+			if ((item->isAnnotation()) && ((item->annotation().Type() > 1) && (item->annotation().Type() < 12)))
 				AvailFields->addItem(item->itemName());
 		}
 		else
Index: scribus/ui/outlinepalette.cpp
===================================================================
--- scribus/ui/outlinepalette.cpp	(revision 13838)
+++ scribus/ui/outlinepalette.cpp	(revision 13839)
@@ -74,6 +74,10 @@
  						case PageItem::ImageFrame:
  							if (pgItem->asLatexFrame())
 								tipText = CommonStrings::itemType_LatexFrame;
+#ifdef HAVE_OSG
+ 							else if (pgItem->asOSGFrame())
+								tipText = CommonStrings::itemType_OSGFrame;
+#endif
  							else
 								tipText = CommonStrings::itemType_ImageFrame;
  							break;
@@ -177,6 +181,7 @@
 	listBoxIcon = loadIcon("22/list-box.png");
 	annotTextIcon = loadIcon("22/pdf-annotations.png");
 	annotLinkIcon = loadIcon("goto.png");
+	annot3DIcon = loadIcon("22/annot3d.png");
 	selectionTriggered = false;
 	m_MainWindow  = NULL;
 	freeObjects   = NULL;
@@ -413,6 +418,10 @@
 	case PageItem::ImageFrame:
  		if (pgItem->asLatexFrame())
 			item->setIcon( 0, latexIcon );
+#ifdef HAVE_OSG
+		else if (pgItem->asOSGFrame())
+			item->setIcon( 0, annot3DIcon );
+#endif
  		else
 			item->setIcon( 0, imageIcon );
 		break;
Index: scribus/ui/AdapterWidget.cpp
===================================================================
--- scribus/ui/AdapterWidget.cpp	(revision 0)
+++ scribus/ui/AdapterWidget.cpp	(revision 13839)
@@ -0,0 +1,99 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#include <osgViewer/Viewer>
+#include <osgViewer/ViewerEventHandlers>
+#include <osgGA/TrackballManipulator>
+
+#include <QtCore>
+#include <QtGui>
+#include <QtOpenGL>
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <unistd.h>
+#include <cstdlib>
+#include <cassert>
+#include <string>
+#include "util_icon.h"
+#include "AdapterWidget.h"
+
+AdapterWidget::AdapterWidget ( QWidget * parent, const char * name, const QGLWidget * shareWidget, Qt::WFlags f ) : QGLWidget ( parent, shareWidget, f )
+{
+	_gw = new osgViewer::GraphicsWindowEmbedded ( 0,0,width(),height() );
+	setFocusPolicy ( Qt::ClickFocus );
+	button = 0;
+}
+
+void AdapterWidget::resizeGL ( int width, int height )
+{
+	_gw->getEventQueue()->windowResize ( 0, 0, width, height );
+	_gw->resized ( 0,0,width,height );
+}
+
+void AdapterWidget::keyPressEvent ( QKeyEvent* event )
+{
+	_gw->getEventQueue()->keyPress ( ( osgGA::GUIEventAdapter::KeySymbol ) * ( event->text().toAscii().data() ) );
+}
+
+void AdapterWidget::keyReleaseEvent ( QKeyEvent* event )
+{
+	_gw->getEventQueue()->keyRelease ( ( osgGA::GUIEventAdapter::KeySymbol ) * ( event->text().toAscii().data() ) );
+}
+
+void AdapterWidget::mousePressEvent ( QMouseEvent* event )
+{
+	switch ( event->button() )
+	{
+		case Qt::LeftButton:
+			qApp->changeOverrideCursor(QCursor(Qt::OpenHandCursor));
+			button = 1;
+			break;
+		case Qt::MidButton:
+			qApp->changeOverrideCursor(QCursor(Qt::SizeAllCursor));
+			button = 2;
+			break;
+		case Qt::RightButton:
+			qApp->changeOverrideCursor(QCursor(loadIcon("LupeZ.xpm")));
+			button = 3;
+			break;
+		case Qt::NoButton:
+			button = 0;
+			break;
+		default:
+			button = 0;
+			break;
+	}
+	_gw->getEventQueue()->mouseButtonPress ( event->x(), event->y(), button );
+}
+
+void AdapterWidget::mouseReleaseEvent ( QMouseEvent* event )
+{
+	switch ( event->button() )
+	{
+		case ( Qt::LeftButton ) : button = 1; break;
+		case ( Qt::MidButton ) : button = 2; break;
+		case ( Qt::RightButton ) : button = 3; break;
+		case ( Qt::NoButton ) : button = 0; break;
+		default: button = 0; break;
+	}
+	qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
+	_gw->getEventQueue()->mouseButtonRelease ( event->x(), event->y(), button );
+}
+
+void AdapterWidget::mouseMoveEvent ( QMouseEvent* event )
+{
+	_gw->getEventQueue()->mouseMotion ( event->x(), event->y() );
+	emit mouseMoved();
+}
Index: scribus/prc/PRCbitStream.cc
===================================================================
--- scribus/prc/PRCbitStream.cc	(revision 0)
+++ scribus/prc/PRCbitStream.cc	(revision 13839)
@@ -0,0 +1,399 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+/************
+*
+*   This file is part of a tool for producing 3D content in the PRC format.
+*   Copyright (C) 2008  Orest Shardt <shardtor (at) gmail dot com>
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU Lesser General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU Lesser General Public License for more details.
+*
+*   You should have received a copy of the GNU Lesser General Public License
+*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+*************/
+
+#include <iostream>
+#include <zlib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <cassert>
+#include "PRCbitStream.h"
+#include "PRCdouble.h"
+
+using std::string;
+using std::cerr;
+using std::endl;
+
+void PRCbitStream::compress()
+{
+  const int CHUNK= 1024; // is this reasonable?
+  compressedDataSize = 0;
+
+  z_stream strm;
+  strm.zalloc = Z_NULL;
+  strm.zfree = Z_NULL;
+  strm.opaque = Z_NULL;
+  if(deflateInit(&strm,Z_DEFAULT_COMPRESSION) != Z_OK)
+  {
+    cerr << "Compression initialization failed" << endl;
+    return;
+  }
+  unsigned int sizeAvailable = deflateBound(&strm,getSize());
+  uint8_t *compressedData = (uint8_t*) malloc(sizeAvailable);
+  strm.avail_in = getSize();
+  strm.next_in = (unsigned char*)data;
+  strm.next_out = (unsigned char*)compressedData;
+  strm.avail_out = sizeAvailable;
+
+  int code;
+  unsigned int chunks = 0;
+  while((code = deflate(&strm,Z_FINISH)) == Z_OK)
+  {
+    ++chunks;
+    // strm.avail_out should be 0 if we got Z_OK
+    compressedDataSize = sizeAvailable - strm.avail_out;
+    compressedData = (uint8_t*) realloc(compressedData,CHUNK*chunks);
+    strm.next_out = (Bytef*)(compressedData + compressedDataSize);
+    strm.avail_out += CHUNK;
+    sizeAvailable += CHUNK;
+  }
+  compressedDataSize = sizeAvailable-strm.avail_out;
+
+  if(code != Z_STREAM_END)
+  {
+    cerr << "Compression error" << endl;
+    deflateEnd(&strm);
+    free(compressedData);
+    return;
+  }
+
+  compressed = true;
+
+  free(data);
+  data = compressedData;
+
+  deflateEnd(&strm);
+}
+
+unsigned int PRCbitStream::getSize() const
+{
+  if(compressed)
+    return compressedDataSize;
+  else
+    return byteIndex+1;
+}
+
+uint8_t* PRCbitStream::getData()
+{
+  return data;
+}
+
+PRCbitStream& PRCbitStream::operator <<(bool b)
+{
+  writeBit(b);
+  return *this;
+}
+
+PRCbitStream& PRCbitStream::operator <<(uint32_t u)
+{
+  while(u != 0)
+  {
+    writeBit(1);
+    writeByte(u & 0xFF);
+    u >>= 8;
+  }
+  writeBit(0);
+  return *this;
+}
+
+PRCbitStream& PRCbitStream::operator <<(uint8_t u)
+{
+  writeByte(u);
+  return *this;
+}
+
+PRCbitStream& PRCbitStream::operator <<(int32_t i)
+{
+  uint8_t lastByte = 0;
+  //while(!((current value is 0 and last byte was positive) OR (current value is -1 and last value was negative)))
+  while(!(((i == 0)&&((lastByte & 0x80)==0))||((i == -1)&&((lastByte & 0x80) != 0))))
+  {
+    writeBit(1);
+    lastByte = i & 0xFF;
+    writeByte(lastByte);
+    i >>= 8;
+  }
+  writeBit(0);
+  return *this;
+}
+
+PRCbitStream& PRCbitStream::operator <<(double value)
+{
+  // write a double
+  if(compressed)
+  {
+    cerr << "Cannot write to a stream that has been compressed." << endl;
+    return *this;
+  }
+  union ieee754_double *pid=(union ieee754_double *)&value;
+  int
+        i,
+        fSaveAtEnd;
+        PRCbyte
+        *pb,
+        *pbStart,
+        *pbStop,
+        *pbEnd,
+        *pbResult,
+        bSaveAtEnd = 0;
+  struct sCodageOfFrequentDoubleOrExponent
+        cofdoe,
+        *pcofdoe;
+
+  cofdoe.u2uod.Value=value;
+  pcofdoe = (struct sCodageOfFrequentDoubleOrExponent *)bsearch(
+                           &cofdoe,
+                           acofdoe,
+                           sizeof(acofdoe)/sizeof(pcofdoe[0]),
+                           sizeof(pcofdoe[0]),
+                           stCOFDOECompare);
+
+  while(pcofdoe>acofdoe && EXPONENT(pcofdoe->u2uod.Value)==EXPONENT((pcofdoe-1)->u2uod.Value))
+    pcofdoe--;
+
+  assert(pcofdoe);
+  while(pcofdoe->Type==VT_double)
+  {
+    if(fabs(value)==pcofdoe->u2uod.Value)
+      break;
+    pcofdoe++;
+  }
+
+  for(i=1<<(pcofdoe->NumberOfBits-1);i>=1;i>>=1)
+    writeBit((pcofdoe->Bits&i)!=0);
+
+  if
+  (
+    !memcmp(&value,stadwZero,sizeof(value))
+    ||      !memcmp(&value,stadwNegativeZero,sizeof(value))
+  )
+    return *this;
+
+  writeBit(pid->ieee.negative);
+
+  if(pcofdoe->Type==VT_double)
+    return *this;
+
+  if(pid->ieee.mantissa0==0 && pid->ieee.mantissa1==0)
+  {
+    writeBit(0);
+    return *this;
+  }
+
+  writeBit(1);
+
+#if defined(WORDS_BIGENDIAN)
+  pb=((PRCbyte *)&value)+1;
+#else
+  pb=((PRCbyte *)&value)+6;
+#endif
+  //add_bits((*pb)&0x0f,4 STAT_V STAT_DOUBLE);
+  writeBits((*pb)&0x0F,4);
+
+  NEXTBYTE(pb);
+  pbStart=pb;
+#if defined(WORDS_BIGENDIAN)
+  pbEnd=
+  pbStop= ((PRCbyte *)(&value+1))-1;
+#else
+  pbEnd=
+  pbStop= ((PRCbyte *)&value);
+#endif
+
+  if((fSaveAtEnd=(*pbStop!=*BEFOREBYTE(pbStop)))!=0)
+    bSaveAtEnd=*pbEnd;
+  PREVIOUSBYTE(pbStop);
+
+  while(*pbStop==*BEFOREBYTE(pbStop))
+    PREVIOUSBYTE(pbStop);
+
+  for(;MOREBYTE(pb,pbStop);NEXTBYTE(pb))
+  {
+    if(pb!=pbStart && (pbResult=SEARCHBYTE(BEFOREBYTE(pb),*pb,DIFFPOINTERS(pb,pbStart)))!=NULL)
+    {
+      writeBit(0);
+      writeBits(DIFFPOINTERS(pb,pbResult),3);
+    }
+    else
+    {
+      writeBit(1);
+      writeByte(*pb);
+    }
+  }
+
+  if(!MOREBYTE(BEFOREBYTE(pbEnd),pbStop))
+  {
+    if(fSaveAtEnd)
+    {
+      writeBit(0);
+      writeBits(6,3);
+      writeByte(bSaveAtEnd);
+    }
+    else
+    {
+      writeBit(0);
+      writeBits(0,3);
+    }
+  }
+  else
+  {
+    if((pbResult=SEARCHBYTE(BEFOREBYTE(pb),*pb,DIFFPOINTERS(pb,pbStart)))!=NULL)
+    {
+      writeBit(0);
+      writeBits(DIFFPOINTERS(pb,pbResult),3);
+    }
+    else
+    {
+      writeBit(1);
+      writeByte(*pb);
+    }
+  }
+
+  return *this;
+}
+
+PRCbitStream& PRCbitStream::operator <<(const char* s)
+{
+  string str(s);
+  *this << str;
+  return *this;
+}
+
+PRCbitStream& PRCbitStream::operator <<(const string& s)
+{
+  if(s == "")
+  {
+    writeBit(false); // string is NULL
+    return *this;
+  }
+  writeBit(true);
+  size_t l = s.length();
+  *this << static_cast<uint32_t>(l);
+  for(size_t i = 0; i < l; ++i)
+    writeByte(s[i]);
+  return *this;
+}
+
+void PRCbitStream::writeBit(bool b)
+{
+  if(compressed)
+  {
+    cerr << "Cannot write to a stream that has been compressed." << endl;
+    return;
+  }
+
+  if(b)
+  {
+    data[byteIndex] |= (0x80 >> bitIndex);
+  }
+  nextBit();
+}
+
+void PRCbitStream::writeBits(uint32_t u, uint8_t bits)
+{
+  if(bits > 32)
+    return;
+  else
+  {
+    for(uint32_t mask = (1 << (bits-1)); mask != 0; mask >>= 1)
+    {
+      writeBit((u&mask) != 0);
+    }
+  }
+}
+
+void PRCbitStream::writeByte(uint8_t u)
+{
+  if(compressed)
+  {
+    cerr << "Cannot write to a stream that has been compressed." << endl;
+    return;
+  }
+
+  if(bitIndex == 0)
+  {
+    data[byteIndex] = u;
+    nextByte();
+  }
+  else
+  {
+    data[byteIndex] |= (u >> bitIndex);
+    unsigned int obi = bitIndex;
+    nextByte();
+    data[byteIndex] |= (u << (8-obi));
+    bitIndex = obi; // bit index is not changed by writing 8 bits
+  }
+}
+
+void PRCbitStream::nextBit()
+{
+  ++bitIndex;
+  if(bitIndex == 8)
+  {
+    nextByte();
+  }
+}
+
+void PRCbitStream::nextByte()
+{
+  ++byteIndex;
+  if(byteIndex >= allocatedLength)
+    getAChunk();
+  data[byteIndex] = 0; // clear the garbage data
+  bitIndex = 0;
+}
+
+void PRCbitStream::getAChunk()
+{
+   if(allocatedLength==0)
+     data = (uint8_t*)realloc((void*)data,CHUNK_SIZE);
+   else
+     data = (uint8_t*)realloc((void*)data,2*allocatedLength);
+
+   if(data != NULL)
+   {
+     if(allocatedLength==0)
+     {
+       allocatedLength = CHUNK_SIZE;
+       *data = 0; // clear first byte
+     }
+     else
+       allocatedLength *= 2;
+   }
+   else
+   {
+     // warn about memory problem!
+     cerr << "Memory allocation error." << endl;
+     exit(1);
+   }
+}
Index: scribus/prc/PRCdouble.cc
===================================================================
--- scribus/prc/PRCdouble.cc	(revision 0)
+++ scribus/prc/PRCdouble.cc	(revision 13839)
@@ -0,0 +1,2133 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#include "PRCdouble.h"
+
+// from Adobe's documentation
+
+PRCdword stadwZero[2]={DOUBLEWITHTWODWORD(0x00000000,0x00000000)};
+PRCdword stadwNegativeZero[2]={DOUBLEWITHTWODWORD(0x80000000,0x00000000)};
+
+struct sCodageOfFrequentDoubleOrExponent* getcofdoe(unsigned Bits, short NumberOfBits)
+{
+  struct sCodageOfFrequentDoubleOrExponent *pcofdoe;
+  for(pcofdoe=acofdoe; pcofdoe < acofdoe+NUMBEROFELEMENTINACOFDOE; ++pcofdoe)
+  {
+    if(pcofdoe->NumberOfBits == NumberOfBits && pcofdoe->Bits == Bits)
+      return pcofdoe;
+  }
+  return NULL;
+}
+
+int stCOFDOECompare(const void* pcofdoe1,const void* pcofdoe2)
+{
+  return(EXPONENT(((const struct sCodageOfFrequentDoubleOrExponent *)pcofdoe1)->u2uod.Value)-
+      EXPONENT(((const struct sCodageOfFrequentDoubleOrExponent *)pcofdoe2)->u2uod.Value));
+}
+
+#if defined(WORDS_BIG_ENDIAN)
+void *memrchr(const void *buf,int c,size_t count)
+{
+  unsigned char
+      *pcBuffer=(unsigned char *)buf,
+                 *pcBufferEnd=pcBuffer-count;
+
+                 for(;pcBuffer>pcBufferEnd;pcBuffer--)
+                   if(*pcBuffer==c)
+                     return(pcBuffer);
+
+                 return(NULL);
+}
+#endif
+
+sCodageOfFrequentDoubleOrExponent acofdoe[NUMBEROFELEMENTINACOFDOE] =
+{
+        {VT_double,2,0x1,{DOUBLEWITHTWODWORDINTREE(0x00000000,0x00000000)}},
+        {VT_exponent,22,0xd1d32,{DOUBLEWITHTWODWORDINTREE(0x00000000,0x00000000)}},
+        {VT_exponent,22,0xd1d33,{DOUBLEWITHTWODWORDINTREE(0x00100000,0x00000000)}},
+        {VT_exponent,22,0xf78d8,{DOUBLEWITHTWODWORDINTREE(0x00200000,0x00000000)}},
+        {VT_exponent,22,0xf78d9,{DOUBLEWITHTWODWORDINTREE(0x00300000,0x00000000)}},
+        {VT_exponent,22,0xf78da,{DOUBLEWITHTWODWORDINTREE(0x00400000,0x00000000)}},
+        {VT_exponent,22,0xf78db,{DOUBLEWITHTWODWORDINTREE(0x00500000,0x00000000)}},
+        {VT_exponent,22,0xf78dc,{DOUBLEWITHTWODWORDINTREE(0x00600000,0x00000000)}},
+        {VT_exponent,22,0xf78dd,{DOUBLEWITHTWODWORDINTREE(0x00700000,0x00000000)}},
+        {VT_exponent,22,0xf78de,{DOUBLEWITHTWODWORDINTREE(0x00800000,0x00000000)}},
+        {VT_exponent,22,0xf78df,{DOUBLEWITHTWODWORDINTREE(0x00900000,0x00000000)}},
+        {VT_exponent,22,0xf78e0,{DOUBLEWITHTWODWORDINTREE(0x00a00000,0x00000000)}},
+        {VT_exponent,22,0xf78e1,{DOUBLEWITHTWODWORDINTREE(0x00b00000,0x00000000)}},
+        {VT_exponent,22,0xf78e2,{DOUBLEWITHTWODWORDINTREE(0x00c00000,0x00000000)}},
+        {VT_exponent,22,0xf78e3,{DOUBLEWITHTWODWORDINTREE(0x00d00000,0x00000000)}},
+        {VT_exponent,22,0xf78e4,{DOUBLEWITHTWODWORDINTREE(0x00e00000,0x00000000)}},
+        {VT_exponent,22,0xf78e5,{DOUBLEWITHTWODWORDINTREE(0x00f00000,0x00000000)}},
+        {VT_exponent,22,0xf78e6,{DOUBLEWITHTWODWORDINTREE(0x01000000,0x00000000)}},
+        {VT_exponent,22,0xf78e7,{DOUBLEWITHTWODWORDINTREE(0x01100000,0x00000000)}},
+        {VT_exponent,22,0xf78e8,{DOUBLEWITHTWODWORDINTREE(0x01200000,0x00000000)}},
+        {VT_exponent,22,0xf78e9,{DOUBLEWITHTWODWORDINTREE(0x01300000,0x00000000)}},
+        {VT_exponent,22,0xf78ea,{DOUBLEWITHTWODWORDINTREE(0x01400000,0x00000000)}},
+        {VT_exponent,22,0xf78eb,{DOUBLEWITHTWODWORDINTREE(0x01500000,0x00000000)}},
+        {VT_exponent,22,0xf78ec,{DOUBLEWITHTWODWORDINTREE(0x01600000,0x00000000)}},
+        {VT_exponent,22,0xf78ed,{DOUBLEWITHTWODWORDINTREE(0x01700000,0x00000000)}},
+        {VT_exponent,22,0xf78ee,{DOUBLEWITHTWODWORDINTREE(0x01800000,0x00000000)}},
+        {VT_exponent,22,0xf78ef,{DOUBLEWITHTWODWORDINTREE(0x01900000,0x00000000)}},
+        {VT_exponent,22,0xf78f0,{DOUBLEWITHTWODWORDINTREE(0x01a00000,0x00000000)}},
+        {VT_exponent,22,0xf78f1,{DOUBLEWITHTWODWORDINTREE(0x01b00000,0x00000000)}},
+        {VT_exponent,22,0xf78f2,{DOUBLEWITHTWODWORDINTREE(0x01c00000,0x00000000)}},
+        {VT_exponent,22,0xf78f3,{DOUBLEWITHTWODWORDINTREE(0x01d00000,0x00000000)}},
+        {VT_exponent,22,0xf78f4,{DOUBLEWITHTWODWORDINTREE(0x01e00000,0x00000000)}},
+        {VT_exponent,22,0xf78f5,{DOUBLEWITHTWODWORDINTREE(0x01f00000,0x00000000)}},
+        {VT_exponent,22,0xf78f6,{DOUBLEWITHTWODWORDINTREE(0x02000000,0x00000000)}},
+        {VT_exponent,22,0xf78f7,{DOUBLEWITHTWODWORDINTREE(0x02100000,0x00000000)}},
+        {VT_exponent,22,0xf78f8,{DOUBLEWITHTWODWORDINTREE(0x02200000,0x00000000)}},
+        {VT_exponent,22,0xf78f9,{DOUBLEWITHTWODWORDINTREE(0x02300000,0x00000000)}},
+        {VT_exponent,22,0xf78fa,{DOUBLEWITHTWODWORDINTREE(0x02400000,0x00000000)}},
+        {VT_exponent,22,0xf78fb,{DOUBLEWITHTWODWORDINTREE(0x02500000,0x00000000)}},
+        {VT_exponent,22,0xf78fc,{DOUBLEWITHTWODWORDINTREE(0x02600000,0x00000000)}},
+        {VT_exponent,22,0xf78fd,{DOUBLEWITHTWODWORDINTREE(0x02700000,0x00000000)}},
+        {VT_exponent,22,0xf78fe,{DOUBLEWITHTWODWORDINTREE(0x02800000,0x00000000)}},
+        {VT_exponent,22,0xf78ff,{DOUBLEWITHTWODWORDINTREE(0x02900000,0x00000000)}},
+        {VT_exponent,22,0x3a8300,{DOUBLEWITHTWODWORDINTREE(0x02a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8301,{DOUBLEWITHTWODWORDINTREE(0x02b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8302,{DOUBLEWITHTWODWORDINTREE(0x02c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8303,{DOUBLEWITHTWODWORDINTREE(0x02d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8304,{DOUBLEWITHTWODWORDINTREE(0x02e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8305,{DOUBLEWITHTWODWORDINTREE(0x02f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8306,{DOUBLEWITHTWODWORDINTREE(0x03000000,0x00000000)}},
+        {VT_exponent,22,0x3a8307,{DOUBLEWITHTWODWORDINTREE(0x03100000,0x00000000)}},
+        {VT_exponent,22,0x3a8308,{DOUBLEWITHTWODWORDINTREE(0x03200000,0x00000000)}},
+        {VT_exponent,22,0x3a8309,{DOUBLEWITHTWODWORDINTREE(0x03300000,0x00000000)}},
+        {VT_exponent,22,0x3a830a,{DOUBLEWITHTWODWORDINTREE(0x03400000,0x00000000)}},
+        {VT_exponent,22,0x3a830b,{DOUBLEWITHTWODWORDINTREE(0x03500000,0x00000000)}},
+        {VT_exponent,22,0x3a830c,{DOUBLEWITHTWODWORDINTREE(0x03600000,0x00000000)}},
+        {VT_exponent,22,0x3a830d,{DOUBLEWITHTWODWORDINTREE(0x03700000,0x00000000)}},
+        {VT_exponent,22,0x3a830e,{DOUBLEWITHTWODWORDINTREE(0x03800000,0x00000000)}},
+        {VT_exponent,22,0x3a830f,{DOUBLEWITHTWODWORDINTREE(0x03900000,0x00000000)}},
+        {VT_exponent,22,0x3a8310,{DOUBLEWITHTWODWORDINTREE(0x03a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8311,{DOUBLEWITHTWODWORDINTREE(0x03b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8312,{DOUBLEWITHTWODWORDINTREE(0x03c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8313,{DOUBLEWITHTWODWORDINTREE(0x03d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8314,{DOUBLEWITHTWODWORDINTREE(0x03e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8315,{DOUBLEWITHTWODWORDINTREE(0x03f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8316,{DOUBLEWITHTWODWORDINTREE(0x04000000,0x00000000)}},
+        {VT_exponent,22,0x3a8317,{DOUBLEWITHTWODWORDINTREE(0x04100000,0x00000000)}},
+        {VT_exponent,22,0x3a8318,{DOUBLEWITHTWODWORDINTREE(0x04200000,0x00000000)}},
+        {VT_exponent,22,0x3a8319,{DOUBLEWITHTWODWORDINTREE(0x04300000,0x00000000)}},
+        {VT_exponent,22,0x3a831a,{DOUBLEWITHTWODWORDINTREE(0x04400000,0x00000000)}},
+        {VT_exponent,22,0x3a831b,{DOUBLEWITHTWODWORDINTREE(0x04500000,0x00000000)}},
+        {VT_exponent,22,0x3a831c,{DOUBLEWITHTWODWORDINTREE(0x04600000,0x00000000)}},
+        {VT_exponent,22,0x3a831d,{DOUBLEWITHTWODWORDINTREE(0x04700000,0x00000000)}},
+        {VT_exponent,22,0x3a831e,{DOUBLEWITHTWODWORDINTREE(0x04800000,0x00000000)}},
+        {VT_exponent,22,0x3a831f,{DOUBLEWITHTWODWORDINTREE(0x04900000,0x00000000)}},
+        {VT_exponent,22,0x3a8320,{DOUBLEWITHTWODWORDINTREE(0x04a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8321,{DOUBLEWITHTWODWORDINTREE(0x04b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8322,{DOUBLEWITHTWODWORDINTREE(0x04c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8323,{DOUBLEWITHTWODWORDINTREE(0x04d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8324,{DOUBLEWITHTWODWORDINTREE(0x04e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8325,{DOUBLEWITHTWODWORDINTREE(0x04f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8326,{DOUBLEWITHTWODWORDINTREE(0x05000000,0x00000000)}},
+        {VT_exponent,22,0x3a8327,{DOUBLEWITHTWODWORDINTREE(0x05100000,0x00000000)}},
+        {VT_exponent,22,0x3a8328,{DOUBLEWITHTWODWORDINTREE(0x05200000,0x00000000)}},
+        {VT_exponent,22,0x3a8329,{DOUBLEWITHTWODWORDINTREE(0x05300000,0x00000000)}},
+        {VT_exponent,22,0x3a832a,{DOUBLEWITHTWODWORDINTREE(0x05400000,0x00000000)}},
+        {VT_exponent,22,0x3a832b,{DOUBLEWITHTWODWORDINTREE(0x05500000,0x00000000)}},
+        {VT_exponent,22,0x3a832c,{DOUBLEWITHTWODWORDINTREE(0x05600000,0x00000000)}},
+        {VT_exponent,22,0x3a832d,{DOUBLEWITHTWODWORDINTREE(0x05700000,0x00000000)}},
+        {VT_exponent,22,0x3a832e,{DOUBLEWITHTWODWORDINTREE(0x05800000,0x00000000)}},
+        {VT_exponent,22,0x3a832f,{DOUBLEWITHTWODWORDINTREE(0x05900000,0x00000000)}},
+        {VT_exponent,22,0x3a8330,{DOUBLEWITHTWODWORDINTREE(0x05a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8331,{DOUBLEWITHTWODWORDINTREE(0x05b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8332,{DOUBLEWITHTWODWORDINTREE(0x05c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8333,{DOUBLEWITHTWODWORDINTREE(0x05d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8334,{DOUBLEWITHTWODWORDINTREE(0x05e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8335,{DOUBLEWITHTWODWORDINTREE(0x05f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8336,{DOUBLEWITHTWODWORDINTREE(0x06000000,0x00000000)}},
+        {VT_exponent,22,0x3a8337,{DOUBLEWITHTWODWORDINTREE(0x06100000,0x00000000)}},
+        {VT_exponent,22,0x3a8338,{DOUBLEWITHTWODWORDINTREE(0x06200000,0x00000000)}},
+        {VT_exponent,22,0x3a8339,{DOUBLEWITHTWODWORDINTREE(0x06300000,0x00000000)}},
+        {VT_exponent,22,0x3a833a,{DOUBLEWITHTWODWORDINTREE(0x06400000,0x00000000)}},
+        {VT_exponent,22,0x3a833b,{DOUBLEWITHTWODWORDINTREE(0x06500000,0x00000000)}},
+        {VT_exponent,22,0x3a833c,{DOUBLEWITHTWODWORDINTREE(0x06600000,0x00000000)}},
+        {VT_exponent,22,0x3a833d,{DOUBLEWITHTWODWORDINTREE(0x06700000,0x00000000)}},
+        {VT_exponent,22,0x3a833e,{DOUBLEWITHTWODWORDINTREE(0x06800000,0x00000000)}},
+        {VT_exponent,22,0x3a833f,{DOUBLEWITHTWODWORDINTREE(0x06900000,0x00000000)}},
+        {VT_exponent,22,0x3a8340,{DOUBLEWITHTWODWORDINTREE(0x06a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8341,{DOUBLEWITHTWODWORDINTREE(0x06b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8342,{DOUBLEWITHTWODWORDINTREE(0x06c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8343,{DOUBLEWITHTWODWORDINTREE(0x06d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8344,{DOUBLEWITHTWODWORDINTREE(0x06e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8345,{DOUBLEWITHTWODWORDINTREE(0x06f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8346,{DOUBLEWITHTWODWORDINTREE(0x07000000,0x00000000)}},
+        {VT_exponent,22,0x3a8347,{DOUBLEWITHTWODWORDINTREE(0x07100000,0x00000000)}},
+        {VT_exponent,22,0x3a8348,{DOUBLEWITHTWODWORDINTREE(0x07200000,0x00000000)}},
+        {VT_exponent,22,0x3a8349,{DOUBLEWITHTWODWORDINTREE(0x07300000,0x00000000)}},
+        {VT_exponent,22,0x3a834a,{DOUBLEWITHTWODWORDINTREE(0x07400000,0x00000000)}},
+        {VT_exponent,22,0x3a834b,{DOUBLEWITHTWODWORDINTREE(0x07500000,0x00000000)}},
+        {VT_exponent,22,0x3a834c,{DOUBLEWITHTWODWORDINTREE(0x07600000,0x00000000)}},
+        {VT_exponent,22,0x3a834d,{DOUBLEWITHTWODWORDINTREE(0x07700000,0x00000000)}},
+        {VT_exponent,22,0x3a834e,{DOUBLEWITHTWODWORDINTREE(0x07800000,0x00000000)}},
+        {VT_exponent,22,0x3a834f,{DOUBLEWITHTWODWORDINTREE(0x07900000,0x00000000)}},
+        {VT_exponent,22,0x3a8350,{DOUBLEWITHTWODWORDINTREE(0x07a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8351,{DOUBLEWITHTWODWORDINTREE(0x07b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8352,{DOUBLEWITHTWODWORDINTREE(0x07c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8353,{DOUBLEWITHTWODWORDINTREE(0x07d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8354,{DOUBLEWITHTWODWORDINTREE(0x07e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8355,{DOUBLEWITHTWODWORDINTREE(0x07f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8356,{DOUBLEWITHTWODWORDINTREE(0x08000000,0x00000000)}},
+        {VT_exponent,22,0x3a8357,{DOUBLEWITHTWODWORDINTREE(0x08100000,0x00000000)}},
+        {VT_exponent,22,0x3a8358,{DOUBLEWITHTWODWORDINTREE(0x08200000,0x00000000)}},
+        {VT_exponent,22,0x3a8359,{DOUBLEWITHTWODWORDINTREE(0x08300000,0x00000000)}},
+        {VT_exponent,22,0x3a835a,{DOUBLEWITHTWODWORDINTREE(0x08400000,0x00000000)}},
+        {VT_exponent,22,0x3a835b,{DOUBLEWITHTWODWORDINTREE(0x08500000,0x00000000)}},
+        {VT_exponent,22,0x3a835c,{DOUBLEWITHTWODWORDINTREE(0x08600000,0x00000000)}},
+        {VT_exponent,22,0x3a835d,{DOUBLEWITHTWODWORDINTREE(0x08700000,0x00000000)}},
+        {VT_exponent,22,0x3a835e,{DOUBLEWITHTWODWORDINTREE(0x08800000,0x00000000)}},
+        {VT_exponent,22,0x3a835f,{DOUBLEWITHTWODWORDINTREE(0x08900000,0x00000000)}},
+        {VT_exponent,22,0x3a8360,{DOUBLEWITHTWODWORDINTREE(0x08a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8361,{DOUBLEWITHTWODWORDINTREE(0x08b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8362,{DOUBLEWITHTWODWORDINTREE(0x08c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8363,{DOUBLEWITHTWODWORDINTREE(0x08d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8364,{DOUBLEWITHTWODWORDINTREE(0x08e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8365,{DOUBLEWITHTWODWORDINTREE(0x08f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8366,{DOUBLEWITHTWODWORDINTREE(0x09000000,0x00000000)}},
+        {VT_exponent,22,0x3a8367,{DOUBLEWITHTWODWORDINTREE(0x09100000,0x00000000)}},
+        {VT_exponent,22,0x3a8368,{DOUBLEWITHTWODWORDINTREE(0x09200000,0x00000000)}},
+        {VT_exponent,22,0x3a8369,{DOUBLEWITHTWODWORDINTREE(0x09300000,0x00000000)}},
+        {VT_exponent,22,0x3a836a,{DOUBLEWITHTWODWORDINTREE(0x09400000,0x00000000)}},
+        {VT_exponent,22,0x3a836b,{DOUBLEWITHTWODWORDINTREE(0x09500000,0x00000000)}},
+        {VT_exponent,22,0x3a836c,{DOUBLEWITHTWODWORDINTREE(0x09600000,0x00000000)}},
+        {VT_exponent,22,0x3a836d,{DOUBLEWITHTWODWORDINTREE(0x09700000,0x00000000)}},
+        {VT_exponent,22,0x3a836e,{DOUBLEWITHTWODWORDINTREE(0x09800000,0x00000000)}},
+        {VT_exponent,22,0x3a836f,{DOUBLEWITHTWODWORDINTREE(0x09900000,0x00000000)}},
+        {VT_exponent,22,0x3a8370,{DOUBLEWITHTWODWORDINTREE(0x09a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8371,{DOUBLEWITHTWODWORDINTREE(0x09b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8372,{DOUBLEWITHTWODWORDINTREE(0x09c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8373,{DOUBLEWITHTWODWORDINTREE(0x09d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8374,{DOUBLEWITHTWODWORDINTREE(0x09e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8375,{DOUBLEWITHTWODWORDINTREE(0x09f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8376,{DOUBLEWITHTWODWORDINTREE(0x0a000000,0x00000000)}},
+        {VT_exponent,22,0x3a8377,{DOUBLEWITHTWODWORDINTREE(0x0a100000,0x00000000)}},
+        {VT_exponent,22,0x3a8378,{DOUBLEWITHTWODWORDINTREE(0x0a200000,0x00000000)}},
+        {VT_exponent,22,0x3a8379,{DOUBLEWITHTWODWORDINTREE(0x0a300000,0x00000000)}},
+        {VT_exponent,22,0x3a837a,{DOUBLEWITHTWODWORDINTREE(0x0a400000,0x00000000)}},
+        {VT_exponent,22,0x3a837b,{DOUBLEWITHTWODWORDINTREE(0x0a500000,0x00000000)}},
+        {VT_exponent,22,0x3a837c,{DOUBLEWITHTWODWORDINTREE(0x0a600000,0x00000000)}},
+        {VT_exponent,22,0x3a837d,{DOUBLEWITHTWODWORDINTREE(0x0a700000,0x00000000)}},
+        {VT_exponent,22,0x3a837e,{DOUBLEWITHTWODWORDINTREE(0x0a800000,0x00000000)}},
+        {VT_exponent,22,0x3a837f,{DOUBLEWITHTWODWORDINTREE(0x0a900000,0x00000000)}},
+        {VT_exponent,22,0x3a8380,{DOUBLEWITHTWODWORDINTREE(0x0aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a8381,{DOUBLEWITHTWODWORDINTREE(0x0ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a8382,{DOUBLEWITHTWODWORDINTREE(0x0ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a8383,{DOUBLEWITHTWODWORDINTREE(0x0ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a8384,{DOUBLEWITHTWODWORDINTREE(0x0ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a8385,{DOUBLEWITHTWODWORDINTREE(0x0af00000,0x00000000)}},
+        {VT_exponent,22,0x3a8386,{DOUBLEWITHTWODWORDINTREE(0x0b000000,0x00000000)}},
+        {VT_exponent,22,0x3a8387,{DOUBLEWITHTWODWORDINTREE(0x0b100000,0x00000000)}},
+        {VT_exponent,22,0x3a8388,{DOUBLEWITHTWODWORDINTREE(0x0b200000,0x00000000)}},
+        {VT_exponent,22,0x3a8389,{DOUBLEWITHTWODWORDINTREE(0x0b300000,0x00000000)}},
+        {VT_exponent,22,0x3a838a,{DOUBLEWITHTWODWORDINTREE(0x0b400000,0x00000000)}},
+        {VT_exponent,22,0x3a838b,{DOUBLEWITHTWODWORDINTREE(0x0b500000,0x00000000)}},
+        {VT_exponent,22,0x3a838c,{DOUBLEWITHTWODWORDINTREE(0x0b600000,0x00000000)}},
+        {VT_exponent,22,0x3a838d,{DOUBLEWITHTWODWORDINTREE(0x0b700000,0x00000000)}},
+        {VT_exponent,22,0x3a838e,{DOUBLEWITHTWODWORDINTREE(0x0b800000,0x00000000)}},
+        {VT_exponent,22,0x3a838f,{DOUBLEWITHTWODWORDINTREE(0x0b900000,0x00000000)}},
+        {VT_exponent,22,0x3a8390,{DOUBLEWITHTWODWORDINTREE(0x0ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a8391,{DOUBLEWITHTWODWORDINTREE(0x0bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a8392,{DOUBLEWITHTWODWORDINTREE(0x0bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a8393,{DOUBLEWITHTWODWORDINTREE(0x0bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a8394,{DOUBLEWITHTWODWORDINTREE(0x0be00000,0x00000000)}},
+        {VT_exponent,22,0x3a8395,{DOUBLEWITHTWODWORDINTREE(0x0bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a8396,{DOUBLEWITHTWODWORDINTREE(0x0c000000,0x00000000)}},
+        {VT_exponent,22,0x3a8397,{DOUBLEWITHTWODWORDINTREE(0x0c100000,0x00000000)}},
+        {VT_exponent,22,0x3a8398,{DOUBLEWITHTWODWORDINTREE(0x0c200000,0x00000000)}},
+        {VT_exponent,22,0x3a8399,{DOUBLEWITHTWODWORDINTREE(0x0c300000,0x00000000)}},
+        {VT_exponent,22,0x3a839a,{DOUBLEWITHTWODWORDINTREE(0x0c400000,0x00000000)}},
+        {VT_exponent,22,0x3a839b,{DOUBLEWITHTWODWORDINTREE(0x0c500000,0x00000000)}},
+        {VT_exponent,22,0x3a839c,{DOUBLEWITHTWODWORDINTREE(0x0c600000,0x00000000)}},
+        {VT_exponent,22,0x3a839d,{DOUBLEWITHTWODWORDINTREE(0x0c700000,0x00000000)}},
+        {VT_exponent,22,0x3a839e,{DOUBLEWITHTWODWORDINTREE(0x0c800000,0x00000000)}},
+        {VT_exponent,22,0x3a839f,{DOUBLEWITHTWODWORDINTREE(0x0c900000,0x00000000)}},
+        {VT_exponent,22,0x3a83a0,{DOUBLEWITHTWODWORDINTREE(0x0ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a83a1,{DOUBLEWITHTWODWORDINTREE(0x0cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a83a2,{DOUBLEWITHTWODWORDINTREE(0x0cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a83a3,{DOUBLEWITHTWODWORDINTREE(0x0cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a83a4,{DOUBLEWITHTWODWORDINTREE(0x0ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a83a5,{DOUBLEWITHTWODWORDINTREE(0x0cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a83a6,{DOUBLEWITHTWODWORDINTREE(0x0d000000,0x00000000)}},
+        {VT_exponent,22,0x3a83a7,{DOUBLEWITHTWODWORDINTREE(0x0d100000,0x00000000)}},
+        {VT_exponent,22,0x3a83a8,{DOUBLEWITHTWODWORDINTREE(0x0d200000,0x00000000)}},
+        {VT_exponent,22,0x3a83a9,{DOUBLEWITHTWODWORDINTREE(0x0d300000,0x00000000)}},
+        {VT_exponent,22,0x3a83aa,{DOUBLEWITHTWODWORDINTREE(0x0d400000,0x00000000)}},
+        {VT_exponent,22,0x3a83ab,{DOUBLEWITHTWODWORDINTREE(0x0d500000,0x00000000)}},
+        {VT_exponent,22,0x3a83ac,{DOUBLEWITHTWODWORDINTREE(0x0d600000,0x00000000)}},
+        {VT_exponent,22,0x3a83ad,{DOUBLEWITHTWODWORDINTREE(0x0d700000,0x00000000)}},
+        {VT_exponent,22,0x3a83ae,{DOUBLEWITHTWODWORDINTREE(0x0d800000,0x00000000)}},
+        {VT_exponent,22,0x3a83af,{DOUBLEWITHTWODWORDINTREE(0x0d900000,0x00000000)}},
+        {VT_exponent,22,0x3a83b0,{DOUBLEWITHTWODWORDINTREE(0x0da00000,0x00000000)}},
+        {VT_exponent,22,0x3a83b1,{DOUBLEWITHTWODWORDINTREE(0x0db00000,0x00000000)}},
+        {VT_exponent,22,0x3a83b2,{DOUBLEWITHTWODWORDINTREE(0x0dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a83b3,{DOUBLEWITHTWODWORDINTREE(0x0dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a83b4,{DOUBLEWITHTWODWORDINTREE(0x0de00000,0x00000000)}},
+        {VT_exponent,22,0x3a83b5,{DOUBLEWITHTWODWORDINTREE(0x0df00000,0x00000000)}},
+        {VT_exponent,22,0x3a83b6,{DOUBLEWITHTWODWORDINTREE(0x0e000000,0x00000000)}},
+        {VT_exponent,22,0x3a83b7,{DOUBLEWITHTWODWORDINTREE(0x0e100000,0x00000000)}},
+        {VT_exponent,22,0x3a83b8,{DOUBLEWITHTWODWORDINTREE(0x0e200000,0x00000000)}},
+        {VT_exponent,22,0x3a83b9,{DOUBLEWITHTWODWORDINTREE(0x0e300000,0x00000000)}},
+        {VT_exponent,22,0x3a83ba,{DOUBLEWITHTWODWORDINTREE(0x0e400000,0x00000000)}},
+        {VT_exponent,22,0x3a83bb,{DOUBLEWITHTWODWORDINTREE(0x0e500000,0x00000000)}},
+        {VT_exponent,22,0x3a83bc,{DOUBLEWITHTWODWORDINTREE(0x0e600000,0x00000000)}},
+        {VT_exponent,22,0x3a83bd,{DOUBLEWITHTWODWORDINTREE(0x0e700000,0x00000000)}},
+        {VT_exponent,22,0x3a83be,{DOUBLEWITHTWODWORDINTREE(0x0e800000,0x00000000)}},
+        {VT_exponent,22,0x3a83bf,{DOUBLEWITHTWODWORDINTREE(0x0e900000,0x00000000)}},
+        {VT_exponent,22,0x3a83c0,{DOUBLEWITHTWODWORDINTREE(0x0ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a83c1,{DOUBLEWITHTWODWORDINTREE(0x0eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a83c2,{DOUBLEWITHTWODWORDINTREE(0x0ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a83c3,{DOUBLEWITHTWODWORDINTREE(0x0ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a83c4,{DOUBLEWITHTWODWORDINTREE(0x0ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a83c5,{DOUBLEWITHTWODWORDINTREE(0x0ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a83c6,{DOUBLEWITHTWODWORDINTREE(0x0f000000,0x00000000)}},
+        {VT_exponent,22,0x3a83c7,{DOUBLEWITHTWODWORDINTREE(0x0f100000,0x00000000)}},
+        {VT_exponent,22,0x3a83c8,{DOUBLEWITHTWODWORDINTREE(0x0f200000,0x00000000)}},
+        {VT_exponent,22,0x3a83c9,{DOUBLEWITHTWODWORDINTREE(0x0f300000,0x00000000)}},
+        {VT_exponent,22,0x3a83ca,{DOUBLEWITHTWODWORDINTREE(0x0f400000,0x00000000)}},
+        {VT_exponent,22,0x3a83cb,{DOUBLEWITHTWODWORDINTREE(0x0f500000,0x00000000)}},
+        {VT_exponent,22,0x3a83cc,{DOUBLEWITHTWODWORDINTREE(0x0f600000,0x00000000)}},
+        {VT_exponent,22,0x3a83cd,{DOUBLEWITHTWODWORDINTREE(0x0f700000,0x00000000)}},
+        {VT_exponent,22,0x3a83ce,{DOUBLEWITHTWODWORDINTREE(0x0f800000,0x00000000)}},
+        {VT_exponent,22,0x3a83cf,{DOUBLEWITHTWODWORDINTREE(0x0f900000,0x00000000)}},
+        {VT_exponent,22,0x3a83d0,{DOUBLEWITHTWODWORDINTREE(0x0fa00000,0x00000000)}},
+        {VT_exponent,22,0x3a83d1,{DOUBLEWITHTWODWORDINTREE(0x0fb00000,0x00000000)}},
+        {VT_exponent,22,0x3a83d2,{DOUBLEWITHTWODWORDINTREE(0x0fc00000,0x00000000)}},
+        {VT_exponent,22,0x3a83d3,{DOUBLEWITHTWODWORDINTREE(0x0fd00000,0x00000000)}},
+        {VT_exponent,22,0x3a83d4,{DOUBLEWITHTWODWORDINTREE(0x0fe00000,0x00000000)}},
+        {VT_exponent,22,0x3a83d5,{DOUBLEWITHTWODWORDINTREE(0x0ff00000,0x00000000)}},
+        {VT_exponent,22,0x3a83d6,{DOUBLEWITHTWODWORDINTREE(0x10000000,0x00000000)}},
+        {VT_exponent,22,0x3a83d7,{DOUBLEWITHTWODWORDINTREE(0x10100000,0x00000000)}},
+        {VT_exponent,22,0x3a83d8,{DOUBLEWITHTWODWORDINTREE(0x10200000,0x00000000)}},
+        {VT_exponent,22,0x3a83d9,{DOUBLEWITHTWODWORDINTREE(0x10300000,0x00000000)}},
+        {VT_exponent,22,0x3a83da,{DOUBLEWITHTWODWORDINTREE(0x10400000,0x00000000)}},
+        {VT_exponent,22,0x3a83db,{DOUBLEWITHTWODWORDINTREE(0x10500000,0x00000000)}},
+        {VT_exponent,22,0x3a83dc,{DOUBLEWITHTWODWORDINTREE(0x10600000,0x00000000)}},
+        {VT_exponent,22,0x3a83dd,{DOUBLEWITHTWODWORDINTREE(0x10700000,0x00000000)}},
+        {VT_exponent,22,0x3a83de,{DOUBLEWITHTWODWORDINTREE(0x10800000,0x00000000)}},
+        {VT_exponent,22,0x3a83df,{DOUBLEWITHTWODWORDINTREE(0x10900000,0x00000000)}},
+        {VT_exponent,22,0x3a83e0,{DOUBLEWITHTWODWORDINTREE(0x10a00000,0x00000000)}},
+        {VT_exponent,22,0x3a83e1,{DOUBLEWITHTWODWORDINTREE(0x10b00000,0x00000000)}},
+        {VT_exponent,22,0x3a83e2,{DOUBLEWITHTWODWORDINTREE(0x10c00000,0x00000000)}},
+        {VT_exponent,22,0x3a83e3,{DOUBLEWITHTWODWORDINTREE(0x10d00000,0x00000000)}},
+        {VT_exponent,22,0x3a83e4,{DOUBLEWITHTWODWORDINTREE(0x10e00000,0x00000000)}},
+        {VT_exponent,22,0x3a83e5,{DOUBLEWITHTWODWORDINTREE(0x10f00000,0x00000000)}},
+        {VT_exponent,22,0x3a83e6,{DOUBLEWITHTWODWORDINTREE(0x11000000,0x00000000)}},
+        {VT_exponent,22,0x3a83e7,{DOUBLEWITHTWODWORDINTREE(0x11100000,0x00000000)}},
+        {VT_exponent,22,0x3a83e8,{DOUBLEWITHTWODWORDINTREE(0x11200000,0x00000000)}},
+        {VT_exponent,22,0x3a83e9,{DOUBLEWITHTWODWORDINTREE(0x11300000,0x00000000)}},
+        {VT_exponent,22,0x3a83ea,{DOUBLEWITHTWODWORDINTREE(0x11400000,0x00000000)}},
+        {VT_exponent,22,0x3a83eb,{DOUBLEWITHTWODWORDINTREE(0x11500000,0x00000000)}},
+        {VT_exponent,22,0x3a83ec,{DOUBLEWITHTWODWORDINTREE(0x11600000,0x00000000)}},
+        {VT_exponent,22,0x3a83ed,{DOUBLEWITHTWODWORDINTREE(0x11700000,0x00000000)}},
+        {VT_exponent,22,0x3a83ee,{DOUBLEWITHTWODWORDINTREE(0x11800000,0x00000000)}},
+        {VT_exponent,22,0x3a83ef,{DOUBLEWITHTWODWORDINTREE(0x11900000,0x00000000)}},
+        {VT_exponent,22,0x3a83f0,{DOUBLEWITHTWODWORDINTREE(0x11a00000,0x00000000)}},
+        {VT_exponent,22,0x3a83f1,{DOUBLEWITHTWODWORDINTREE(0x11b00000,0x00000000)}},
+        {VT_exponent,22,0x3a83f2,{DOUBLEWITHTWODWORDINTREE(0x11c00000,0x00000000)}},
+        {VT_exponent,22,0x3a83f3,{DOUBLEWITHTWODWORDINTREE(0x11d00000,0x00000000)}},
+        {VT_exponent,22,0x3a83f4,{DOUBLEWITHTWODWORDINTREE(0x11e00000,0x00000000)}},
+        {VT_exponent,22,0x3a83f5,{DOUBLEWITHTWODWORDINTREE(0x11f00000,0x00000000)}},
+        {VT_exponent,22,0x3a83f6,{DOUBLEWITHTWODWORDINTREE(0x12000000,0x00000000)}},
+        {VT_exponent,22,0x3a83f7,{DOUBLEWITHTWODWORDINTREE(0x12100000,0x00000000)}},
+        {VT_exponent,22,0x3a83f8,{DOUBLEWITHTWODWORDINTREE(0x12200000,0x00000000)}},
+        {VT_exponent,22,0x3a83f9,{DOUBLEWITHTWODWORDINTREE(0x12300000,0x00000000)}},
+        {VT_exponent,22,0x3a83fa,{DOUBLEWITHTWODWORDINTREE(0x12400000,0x00000000)}},
+        {VT_exponent,22,0x3a83fb,{DOUBLEWITHTWODWORDINTREE(0x12500000,0x00000000)}},
+        {VT_exponent,22,0x3a83fc,{DOUBLEWITHTWODWORDINTREE(0x12600000,0x00000000)}},
+        {VT_exponent,22,0x3a83fd,{DOUBLEWITHTWODWORDINTREE(0x12700000,0x00000000)}},
+        {VT_exponent,22,0x3a83fe,{DOUBLEWITHTWODWORDINTREE(0x12800000,0x00000000)}},
+        {VT_exponent,22,0x3a83ff,{DOUBLEWITHTWODWORDINTREE(0x12900000,0x00000000)}},
+        {VT_exponent,22,0x3a8400,{DOUBLEWITHTWODWORDINTREE(0x12a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8401,{DOUBLEWITHTWODWORDINTREE(0x12b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8402,{DOUBLEWITHTWODWORDINTREE(0x12c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8403,{DOUBLEWITHTWODWORDINTREE(0x12d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8404,{DOUBLEWITHTWODWORDINTREE(0x12e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8405,{DOUBLEWITHTWODWORDINTREE(0x12f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8406,{DOUBLEWITHTWODWORDINTREE(0x13000000,0x00000000)}},
+        {VT_exponent,22,0x3a8407,{DOUBLEWITHTWODWORDINTREE(0x13100000,0x00000000)}},
+        {VT_exponent,22,0x3a8408,{DOUBLEWITHTWODWORDINTREE(0x13200000,0x00000000)}},
+        {VT_exponent,22,0x3a8409,{DOUBLEWITHTWODWORDINTREE(0x13300000,0x00000000)}},
+        {VT_exponent,22,0x3a840a,{DOUBLEWITHTWODWORDINTREE(0x13400000,0x00000000)}},
+        {VT_exponent,22,0x3a840b,{DOUBLEWITHTWODWORDINTREE(0x13500000,0x00000000)}},
+        {VT_exponent,22,0x3a840c,{DOUBLEWITHTWODWORDINTREE(0x13600000,0x00000000)}},
+        {VT_exponent,22,0x3a840d,{DOUBLEWITHTWODWORDINTREE(0x13700000,0x00000000)}},
+        {VT_exponent,22,0x3a840e,{DOUBLEWITHTWODWORDINTREE(0x13800000,0x00000000)}},
+        {VT_exponent,22,0x3a840f,{DOUBLEWITHTWODWORDINTREE(0x13900000,0x00000000)}},
+        {VT_exponent,22,0x3a8410,{DOUBLEWITHTWODWORDINTREE(0x13a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8411,{DOUBLEWITHTWODWORDINTREE(0x13b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8412,{DOUBLEWITHTWODWORDINTREE(0x13c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8413,{DOUBLEWITHTWODWORDINTREE(0x13d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8414,{DOUBLEWITHTWODWORDINTREE(0x13e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8415,{DOUBLEWITHTWODWORDINTREE(0x13f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8416,{DOUBLEWITHTWODWORDINTREE(0x14000000,0x00000000)}},
+        {VT_exponent,22,0x3a8417,{DOUBLEWITHTWODWORDINTREE(0x14100000,0x00000000)}},
+        {VT_exponent,22,0x3a8418,{DOUBLEWITHTWODWORDINTREE(0x14200000,0x00000000)}},
+        {VT_exponent,22,0x3a8419,{DOUBLEWITHTWODWORDINTREE(0x14300000,0x00000000)}},
+        {VT_exponent,22,0x3a841a,{DOUBLEWITHTWODWORDINTREE(0x14400000,0x00000000)}},
+        {VT_exponent,22,0x3a841b,{DOUBLEWITHTWODWORDINTREE(0x14500000,0x00000000)}},
+        {VT_exponent,22,0x3a841c,{DOUBLEWITHTWODWORDINTREE(0x14600000,0x00000000)}},
+        {VT_exponent,22,0x3a841d,{DOUBLEWITHTWODWORDINTREE(0x14700000,0x00000000)}},
+        {VT_exponent,22,0x3a841e,{DOUBLEWITHTWODWORDINTREE(0x14800000,0x00000000)}},
+        {VT_exponent,22,0x3a841f,{DOUBLEWITHTWODWORDINTREE(0x14900000,0x00000000)}},
+        {VT_exponent,22,0x3a8420,{DOUBLEWITHTWODWORDINTREE(0x14a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8421,{DOUBLEWITHTWODWORDINTREE(0x14b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8422,{DOUBLEWITHTWODWORDINTREE(0x14c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8423,{DOUBLEWITHTWODWORDINTREE(0x14d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8424,{DOUBLEWITHTWODWORDINTREE(0x14e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8425,{DOUBLEWITHTWODWORDINTREE(0x14f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8426,{DOUBLEWITHTWODWORDINTREE(0x15000000,0x00000000)}},
+        {VT_exponent,22,0x3a8427,{DOUBLEWITHTWODWORDINTREE(0x15100000,0x00000000)}},
+        {VT_exponent,22,0x3a8428,{DOUBLEWITHTWODWORDINTREE(0x15200000,0x00000000)}},
+        {VT_exponent,22,0x3a8429,{DOUBLEWITHTWODWORDINTREE(0x15300000,0x00000000)}},
+        {VT_exponent,22,0x3a842a,{DOUBLEWITHTWODWORDINTREE(0x15400000,0x00000000)}},
+        {VT_exponent,22,0x3a842b,{DOUBLEWITHTWODWORDINTREE(0x15500000,0x00000000)}},
+        {VT_exponent,22,0x3a842c,{DOUBLEWITHTWODWORDINTREE(0x15600000,0x00000000)}},
+        {VT_exponent,22,0x3a842d,{DOUBLEWITHTWODWORDINTREE(0x15700000,0x00000000)}},
+        {VT_exponent,22,0x3a842e,{DOUBLEWITHTWODWORDINTREE(0x15800000,0x00000000)}},
+        {VT_exponent,22,0x3a842f,{DOUBLEWITHTWODWORDINTREE(0x15900000,0x00000000)}},
+        {VT_exponent,22,0x3a8430,{DOUBLEWITHTWODWORDINTREE(0x15a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8431,{DOUBLEWITHTWODWORDINTREE(0x15b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8432,{DOUBLEWITHTWODWORDINTREE(0x15c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8433,{DOUBLEWITHTWODWORDINTREE(0x15d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8434,{DOUBLEWITHTWODWORDINTREE(0x15e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8435,{DOUBLEWITHTWODWORDINTREE(0x15f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8436,{DOUBLEWITHTWODWORDINTREE(0x16000000,0x00000000)}},
+        {VT_exponent,22,0x3a8437,{DOUBLEWITHTWODWORDINTREE(0x16100000,0x00000000)}},
+        {VT_exponent,22,0x3a8438,{DOUBLEWITHTWODWORDINTREE(0x16200000,0x00000000)}},
+        {VT_exponent,22,0x3a8439,{DOUBLEWITHTWODWORDINTREE(0x16300000,0x00000000)}},
+        {VT_exponent,22,0x3a843a,{DOUBLEWITHTWODWORDINTREE(0x16400000,0x00000000)}},
+        {VT_exponent,22,0x3a843b,{DOUBLEWITHTWODWORDINTREE(0x16500000,0x00000000)}},
+        {VT_exponent,22,0x3a843c,{DOUBLEWITHTWODWORDINTREE(0x16600000,0x00000000)}},
+        {VT_exponent,22,0x3a843d,{DOUBLEWITHTWODWORDINTREE(0x16700000,0x00000000)}},
+        {VT_exponent,22,0x3a843e,{DOUBLEWITHTWODWORDINTREE(0x16800000,0x00000000)}},
+        {VT_exponent,22,0x3a843f,{DOUBLEWITHTWODWORDINTREE(0x16900000,0x00000000)}},
+        {VT_exponent,22,0x3a8440,{DOUBLEWITHTWODWORDINTREE(0x16a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8441,{DOUBLEWITHTWODWORDINTREE(0x16b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8442,{DOUBLEWITHTWODWORDINTREE(0x16c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8443,{DOUBLEWITHTWODWORDINTREE(0x16d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8444,{DOUBLEWITHTWODWORDINTREE(0x16e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8445,{DOUBLEWITHTWODWORDINTREE(0x16f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8446,{DOUBLEWITHTWODWORDINTREE(0x17000000,0x00000000)}},
+        {VT_exponent,22,0x3a8447,{DOUBLEWITHTWODWORDINTREE(0x17100000,0x00000000)}},
+        {VT_exponent,22,0x3a8448,{DOUBLEWITHTWODWORDINTREE(0x17200000,0x00000000)}},
+        {VT_exponent,22,0x3a8449,{DOUBLEWITHTWODWORDINTREE(0x17300000,0x00000000)}},
+        {VT_exponent,22,0x3a844a,{DOUBLEWITHTWODWORDINTREE(0x17400000,0x00000000)}},
+        {VT_exponent,22,0x3a844b,{DOUBLEWITHTWODWORDINTREE(0x17500000,0x00000000)}},
+        {VT_exponent,22,0x3a844c,{DOUBLEWITHTWODWORDINTREE(0x17600000,0x00000000)}},
+        {VT_exponent,22,0x3a844d,{DOUBLEWITHTWODWORDINTREE(0x17700000,0x00000000)}},
+        {VT_exponent,22,0x3a844e,{DOUBLEWITHTWODWORDINTREE(0x17800000,0x00000000)}},
+        {VT_exponent,22,0x3a844f,{DOUBLEWITHTWODWORDINTREE(0x17900000,0x00000000)}},
+        {VT_exponent,22,0x3a8450,{DOUBLEWITHTWODWORDINTREE(0x17a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8451,{DOUBLEWITHTWODWORDINTREE(0x17b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8452,{DOUBLEWITHTWODWORDINTREE(0x17c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8453,{DOUBLEWITHTWODWORDINTREE(0x17d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8454,{DOUBLEWITHTWODWORDINTREE(0x17e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8455,{DOUBLEWITHTWODWORDINTREE(0x17f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8456,{DOUBLEWITHTWODWORDINTREE(0x18000000,0x00000000)}},
+        {VT_exponent,22,0x3a8457,{DOUBLEWITHTWODWORDINTREE(0x18100000,0x00000000)}},
+        {VT_exponent,22,0x3a8458,{DOUBLEWITHTWODWORDINTREE(0x18200000,0x00000000)}},
+        {VT_exponent,22,0x3a8459,{DOUBLEWITHTWODWORDINTREE(0x18300000,0x00000000)}},
+        {VT_exponent,22,0x3a845a,{DOUBLEWITHTWODWORDINTREE(0x18400000,0x00000000)}},
+        {VT_exponent,22,0x3a845b,{DOUBLEWITHTWODWORDINTREE(0x18500000,0x00000000)}},
+        {VT_exponent,22,0x3a845c,{DOUBLEWITHTWODWORDINTREE(0x18600000,0x00000000)}},
+        {VT_exponent,22,0x3a845d,{DOUBLEWITHTWODWORDINTREE(0x18700000,0x00000000)}},
+        {VT_exponent,22,0x3a845e,{DOUBLEWITHTWODWORDINTREE(0x18800000,0x00000000)}},
+        {VT_exponent,22,0x3a845f,{DOUBLEWITHTWODWORDINTREE(0x18900000,0x00000000)}},
+        {VT_exponent,22,0x3a8460,{DOUBLEWITHTWODWORDINTREE(0x18a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8461,{DOUBLEWITHTWODWORDINTREE(0x18b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8462,{DOUBLEWITHTWODWORDINTREE(0x18c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8463,{DOUBLEWITHTWODWORDINTREE(0x18d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8464,{DOUBLEWITHTWODWORDINTREE(0x18e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8465,{DOUBLEWITHTWODWORDINTREE(0x18f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8466,{DOUBLEWITHTWODWORDINTREE(0x19000000,0x00000000)}},
+        {VT_exponent,22,0x3a8467,{DOUBLEWITHTWODWORDINTREE(0x19100000,0x00000000)}},
+        {VT_exponent,22,0x3a8468,{DOUBLEWITHTWODWORDINTREE(0x19200000,0x00000000)}},
+        {VT_exponent,22,0x3a8469,{DOUBLEWITHTWODWORDINTREE(0x19300000,0x00000000)}},
+        {VT_exponent,22,0x3a846a,{DOUBLEWITHTWODWORDINTREE(0x19400000,0x00000000)}},
+        {VT_exponent,22,0x3a846b,{DOUBLEWITHTWODWORDINTREE(0x19500000,0x00000000)}},
+        {VT_exponent,22,0x3a846c,{DOUBLEWITHTWODWORDINTREE(0x19600000,0x00000000)}},
+        {VT_exponent,22,0x3a846d,{DOUBLEWITHTWODWORDINTREE(0x19700000,0x00000000)}},
+        {VT_exponent,22,0x3a846e,{DOUBLEWITHTWODWORDINTREE(0x19800000,0x00000000)}},
+        {VT_exponent,22,0x3a846f,{DOUBLEWITHTWODWORDINTREE(0x19900000,0x00000000)}},
+        {VT_exponent,22,0x3a8470,{DOUBLEWITHTWODWORDINTREE(0x19a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8471,{DOUBLEWITHTWODWORDINTREE(0x19b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8472,{DOUBLEWITHTWODWORDINTREE(0x19c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8473,{DOUBLEWITHTWODWORDINTREE(0x19d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8474,{DOUBLEWITHTWODWORDINTREE(0x19e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8475,{DOUBLEWITHTWODWORDINTREE(0x19f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8476,{DOUBLEWITHTWODWORDINTREE(0x1a000000,0x00000000)}},
+        {VT_exponent,22,0x3a8477,{DOUBLEWITHTWODWORDINTREE(0x1a100000,0x00000000)}},
+        {VT_exponent,22,0x3a8478,{DOUBLEWITHTWODWORDINTREE(0x1a200000,0x00000000)}},
+        {VT_exponent,22,0x3a8479,{DOUBLEWITHTWODWORDINTREE(0x1a300000,0x00000000)}},
+        {VT_exponent,22,0x3a847a,{DOUBLEWITHTWODWORDINTREE(0x1a400000,0x00000000)}},
+        {VT_exponent,22,0x3a847b,{DOUBLEWITHTWODWORDINTREE(0x1a500000,0x00000000)}},
+        {VT_exponent,22,0x3a847c,{DOUBLEWITHTWODWORDINTREE(0x1a600000,0x00000000)}},
+        {VT_exponent,22,0x3a847d,{DOUBLEWITHTWODWORDINTREE(0x1a700000,0x00000000)}},
+        {VT_exponent,22,0x3a847e,{DOUBLEWITHTWODWORDINTREE(0x1a800000,0x00000000)}},
+        {VT_exponent,22,0x3a847f,{DOUBLEWITHTWODWORDINTREE(0x1a900000,0x00000000)}},
+        {VT_exponent,22,0x3a8480,{DOUBLEWITHTWODWORDINTREE(0x1aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a8481,{DOUBLEWITHTWODWORDINTREE(0x1ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a8482,{DOUBLEWITHTWODWORDINTREE(0x1ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a8483,{DOUBLEWITHTWODWORDINTREE(0x1ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a8484,{DOUBLEWITHTWODWORDINTREE(0x1ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a8485,{DOUBLEWITHTWODWORDINTREE(0x1af00000,0x00000000)}},
+        {VT_exponent,22,0x3a8486,{DOUBLEWITHTWODWORDINTREE(0x1b000000,0x00000000)}},
+        {VT_exponent,22,0x3a8487,{DOUBLEWITHTWODWORDINTREE(0x1b100000,0x00000000)}},
+        {VT_exponent,22,0x3a8488,{DOUBLEWITHTWODWORDINTREE(0x1b200000,0x00000000)}},
+        {VT_exponent,22,0x3a8489,{DOUBLEWITHTWODWORDINTREE(0x1b300000,0x00000000)}},
+        {VT_exponent,22,0x3a848a,{DOUBLEWITHTWODWORDINTREE(0x1b400000,0x00000000)}},
+        {VT_exponent,22,0x3a848b,{DOUBLEWITHTWODWORDINTREE(0x1b500000,0x00000000)}},
+        {VT_exponent,22,0x3a848c,{DOUBLEWITHTWODWORDINTREE(0x1b600000,0x00000000)}},
+        {VT_exponent,22,0x3a848d,{DOUBLEWITHTWODWORDINTREE(0x1b700000,0x00000000)}},
+        {VT_exponent,22,0x3a848e,{DOUBLEWITHTWODWORDINTREE(0x1b800000,0x00000000)}},
+        {VT_exponent,22,0x3a848f,{DOUBLEWITHTWODWORDINTREE(0x1b900000,0x00000000)}},
+        {VT_exponent,22,0x3a8490,{DOUBLEWITHTWODWORDINTREE(0x1ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a8491,{DOUBLEWITHTWODWORDINTREE(0x1bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a8492,{DOUBLEWITHTWODWORDINTREE(0x1bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a8493,{DOUBLEWITHTWODWORDINTREE(0x1bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a8494,{DOUBLEWITHTWODWORDINTREE(0x1be00000,0x00000000)}},
+        {VT_exponent,22,0x3a8495,{DOUBLEWITHTWODWORDINTREE(0x1bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a8496,{DOUBLEWITHTWODWORDINTREE(0x1c000000,0x00000000)}},
+        {VT_exponent,22,0x3a8497,{DOUBLEWITHTWODWORDINTREE(0x1c100000,0x00000000)}},
+        {VT_exponent,22,0x3a8498,{DOUBLEWITHTWODWORDINTREE(0x1c200000,0x00000000)}},
+        {VT_exponent,22,0x3a8499,{DOUBLEWITHTWODWORDINTREE(0x1c300000,0x00000000)}},
+        {VT_exponent,22,0x3a849a,{DOUBLEWITHTWODWORDINTREE(0x1c400000,0x00000000)}},
+        {VT_exponent,22,0x3a849b,{DOUBLEWITHTWODWORDINTREE(0x1c500000,0x00000000)}},
+        {VT_exponent,22,0x3a849c,{DOUBLEWITHTWODWORDINTREE(0x1c600000,0x00000000)}},
+        {VT_exponent,22,0x3a849d,{DOUBLEWITHTWODWORDINTREE(0x1c700000,0x00000000)}},
+        {VT_exponent,22,0x3a849e,{DOUBLEWITHTWODWORDINTREE(0x1c800000,0x00000000)}},
+        {VT_exponent,22,0x3a849f,{DOUBLEWITHTWODWORDINTREE(0x1c900000,0x00000000)}},
+        {VT_exponent,22,0x3a84a0,{DOUBLEWITHTWODWORDINTREE(0x1ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a84a1,{DOUBLEWITHTWODWORDINTREE(0x1cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a84a2,{DOUBLEWITHTWODWORDINTREE(0x1cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a84a3,{DOUBLEWITHTWODWORDINTREE(0x1cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a84a4,{DOUBLEWITHTWODWORDINTREE(0x1ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a84a5,{DOUBLEWITHTWODWORDINTREE(0x1cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a84a6,{DOUBLEWITHTWODWORDINTREE(0x1d000000,0x00000000)}},
+        {VT_exponent,22,0x3a84a7,{DOUBLEWITHTWODWORDINTREE(0x1d100000,0x00000000)}},
+        {VT_exponent,22,0x3a84a8,{DOUBLEWITHTWODWORDINTREE(0x1d200000,0x00000000)}},
+        {VT_exponent,22,0x3a84a9,{DOUBLEWITHTWODWORDINTREE(0x1d300000,0x00000000)}},
+        {VT_exponent,22,0x3a84aa,{DOUBLEWITHTWODWORDINTREE(0x1d400000,0x00000000)}},
+        {VT_exponent,22,0x3a84ab,{DOUBLEWITHTWODWORDINTREE(0x1d500000,0x00000000)}},
+        {VT_exponent,22,0x3a84ac,{DOUBLEWITHTWODWORDINTREE(0x1d600000,0x00000000)}},
+        {VT_exponent,22,0x3a84ad,{DOUBLEWITHTWODWORDINTREE(0x1d700000,0x00000000)}},
+        {VT_exponent,22,0x3a84ae,{DOUBLEWITHTWODWORDINTREE(0x1d800000,0x00000000)}},
+        {VT_exponent,22,0x3a84af,{DOUBLEWITHTWODWORDINTREE(0x1d900000,0x00000000)}},
+        {VT_exponent,22,0x3a84b0,{DOUBLEWITHTWODWORDINTREE(0x1da00000,0x00000000)}},
+        {VT_exponent,22,0x3a84b1,{DOUBLEWITHTWODWORDINTREE(0x1db00000,0x00000000)}},
+        {VT_exponent,22,0x3a84b2,{DOUBLEWITHTWODWORDINTREE(0x1dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a84b3,{DOUBLEWITHTWODWORDINTREE(0x1dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a84b4,{DOUBLEWITHTWODWORDINTREE(0x1de00000,0x00000000)}},
+        {VT_exponent,22,0x3a84b5,{DOUBLEWITHTWODWORDINTREE(0x1df00000,0x00000000)}},
+        {VT_exponent,22,0x3a84b6,{DOUBLEWITHTWODWORDINTREE(0x1e000000,0x00000000)}},
+        {VT_exponent,22,0x3a84b7,{DOUBLEWITHTWODWORDINTREE(0x1e100000,0x00000000)}},
+        {VT_exponent,22,0x3a84b8,{DOUBLEWITHTWODWORDINTREE(0x1e200000,0x00000000)}},
+        {VT_exponent,22,0x3a84b9,{DOUBLEWITHTWODWORDINTREE(0x1e300000,0x00000000)}},
+        {VT_exponent,22,0x3a84ba,{DOUBLEWITHTWODWORDINTREE(0x1e400000,0x00000000)}},
+        {VT_exponent,22,0x3a84bb,{DOUBLEWITHTWODWORDINTREE(0x1e500000,0x00000000)}},
+        {VT_exponent,22,0x3a84bc,{DOUBLEWITHTWODWORDINTREE(0x1e600000,0x00000000)}},
+        {VT_exponent,22,0x3a84bd,{DOUBLEWITHTWODWORDINTREE(0x1e700000,0x00000000)}},
+        {VT_exponent,22,0x3a84be,{DOUBLEWITHTWODWORDINTREE(0x1e800000,0x00000000)}},
+        {VT_exponent,22,0x3a84bf,{DOUBLEWITHTWODWORDINTREE(0x1e900000,0x00000000)}},
+        {VT_exponent,22,0x3a84c0,{DOUBLEWITHTWODWORDINTREE(0x1ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a84c1,{DOUBLEWITHTWODWORDINTREE(0x1eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a84c2,{DOUBLEWITHTWODWORDINTREE(0x1ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a84c3,{DOUBLEWITHTWODWORDINTREE(0x1ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a84c4,{DOUBLEWITHTWODWORDINTREE(0x1ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a84c5,{DOUBLEWITHTWODWORDINTREE(0x1ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a84c6,{DOUBLEWITHTWODWORDINTREE(0x1f000000,0x00000000)}},
+        {VT_exponent,22,0x3a84c7,{DOUBLEWITHTWODWORDINTREE(0x1f100000,0x00000000)}},
+        {VT_exponent,22,0x3a84c8,{DOUBLEWITHTWODWORDINTREE(0x1f200000,0x00000000)}},
+        {VT_exponent,22,0x3a84c9,{DOUBLEWITHTWODWORDINTREE(0x1f300000,0x00000000)}},
+        {VT_exponent,22,0x3a84ca,{DOUBLEWITHTWODWORDINTREE(0x1f400000,0x00000000)}},
+        {VT_exponent,22,0x3a84cb,{DOUBLEWITHTWODWORDINTREE(0x1f500000,0x00000000)}},
+        {VT_exponent,22,0x3a84cc,{DOUBLEWITHTWODWORDINTREE(0x1f600000,0x00000000)}},
+        {VT_exponent,22,0x3a84cd,{DOUBLEWITHTWODWORDINTREE(0x1f700000,0x00000000)}},
+        {VT_exponent,22,0x3a84ce,{DOUBLEWITHTWODWORDINTREE(0x1f800000,0x00000000)}},
+        {VT_exponent,22,0x3a84cf,{DOUBLEWITHTWODWORDINTREE(0x1f900000,0x00000000)}},
+        {VT_exponent,22,0x3a84d0,{DOUBLEWITHTWODWORDINTREE(0x1fa00000,0x00000000)}},
+        {VT_exponent,22,0x3a84d1,{DOUBLEWITHTWODWORDINTREE(0x1fb00000,0x00000000)}},
+        {VT_exponent,22,0x3a84d2,{DOUBLEWITHTWODWORDINTREE(0x1fc00000,0x00000000)}},
+        {VT_exponent,22,0x3a84d3,{DOUBLEWITHTWODWORDINTREE(0x1fd00000,0x00000000)}},
+        {VT_exponent,22,0x3a84d4,{DOUBLEWITHTWODWORDINTREE(0x1fe00000,0x00000000)}},
+        {VT_exponent,22,0x3a84d5,{DOUBLEWITHTWODWORDINTREE(0x1ff00000,0x00000000)}},
+        {VT_exponent,22,0x3a84d6,{DOUBLEWITHTWODWORDINTREE(0x20000000,0x00000000)}},
+        {VT_exponent,22,0x3a84d7,{DOUBLEWITHTWODWORDINTREE(0x20100000,0x00000000)}},
+        {VT_exponent,22,0x3a84d8,{DOUBLEWITHTWODWORDINTREE(0x20200000,0x00000000)}},
+        {VT_exponent,22,0x3a84d9,{DOUBLEWITHTWODWORDINTREE(0x20300000,0x00000000)}},
+        {VT_exponent,22,0x3a84da,{DOUBLEWITHTWODWORDINTREE(0x20400000,0x00000000)}},
+        {VT_exponent,22,0x3a84db,{DOUBLEWITHTWODWORDINTREE(0x20500000,0x00000000)}},
+        {VT_exponent,22,0x3a84dc,{DOUBLEWITHTWODWORDINTREE(0x20600000,0x00000000)}},
+        {VT_exponent,22,0x3a84dd,{DOUBLEWITHTWODWORDINTREE(0x20700000,0x00000000)}},
+        {VT_exponent,22,0x3a84de,{DOUBLEWITHTWODWORDINTREE(0x20800000,0x00000000)}},
+        {VT_exponent,22,0x3a84df,{DOUBLEWITHTWODWORDINTREE(0x20900000,0x00000000)}},
+        {VT_exponent,22,0x3a84e0,{DOUBLEWITHTWODWORDINTREE(0x20a00000,0x00000000)}},
+        {VT_exponent,22,0x3a84e1,{DOUBLEWITHTWODWORDINTREE(0x20b00000,0x00000000)}},
+        {VT_exponent,22,0x3a84e2,{DOUBLEWITHTWODWORDINTREE(0x20c00000,0x00000000)}},
+        {VT_exponent,22,0x3a84e3,{DOUBLEWITHTWODWORDINTREE(0x20d00000,0x00000000)}},
+        {VT_exponent,22,0x3a84e4,{DOUBLEWITHTWODWORDINTREE(0x20e00000,0x00000000)}},
+        {VT_exponent,22,0x3a84e5,{DOUBLEWITHTWODWORDINTREE(0x20f00000,0x00000000)}},
+        {VT_exponent,22,0x3a84e6,{DOUBLEWITHTWODWORDINTREE(0x21000000,0x00000000)}},
+        {VT_exponent,22,0x3a84e7,{DOUBLEWITHTWODWORDINTREE(0x21100000,0x00000000)}},
+        {VT_exponent,22,0x3a84e8,{DOUBLEWITHTWODWORDINTREE(0x21200000,0x00000000)}},
+        {VT_exponent,22,0x3a84e9,{DOUBLEWITHTWODWORDINTREE(0x21300000,0x00000000)}},
+        {VT_exponent,22,0x3a84ea,{DOUBLEWITHTWODWORDINTREE(0x21400000,0x00000000)}},
+        {VT_exponent,22,0x3a84eb,{DOUBLEWITHTWODWORDINTREE(0x21500000,0x00000000)}},
+        {VT_exponent,22,0x3a84ec,{DOUBLEWITHTWODWORDINTREE(0x21600000,0x00000000)}},
+        {VT_exponent,22,0x3a84ed,{DOUBLEWITHTWODWORDINTREE(0x21700000,0x00000000)}},
+        {VT_exponent,22,0x3a84ee,{DOUBLEWITHTWODWORDINTREE(0x21800000,0x00000000)}},
+        {VT_exponent,22,0x3a84ef,{DOUBLEWITHTWODWORDINTREE(0x21900000,0x00000000)}},
+        {VT_exponent,22,0x3a84f0,{DOUBLEWITHTWODWORDINTREE(0x21a00000,0x00000000)}},
+        {VT_exponent,22,0x3a84f1,{DOUBLEWITHTWODWORDINTREE(0x21b00000,0x00000000)}},
+        {VT_exponent,22,0x3a84f2,{DOUBLEWITHTWODWORDINTREE(0x21c00000,0x00000000)}},
+        {VT_exponent,22,0x3a84f3,{DOUBLEWITHTWODWORDINTREE(0x21d00000,0x00000000)}},
+        {VT_exponent,22,0x3a84f4,{DOUBLEWITHTWODWORDINTREE(0x21e00000,0x00000000)}},
+        {VT_exponent,22,0x3a84f5,{DOUBLEWITHTWODWORDINTREE(0x21f00000,0x00000000)}},
+        {VT_exponent,22,0x3a84f6,{DOUBLEWITHTWODWORDINTREE(0x22000000,0x00000000)}},
+        {VT_exponent,22,0x3a84f7,{DOUBLEWITHTWODWORDINTREE(0x22100000,0x00000000)}},
+        {VT_exponent,22,0x3a84f8,{DOUBLEWITHTWODWORDINTREE(0x22200000,0x00000000)}},
+        {VT_exponent,22,0x3a84f9,{DOUBLEWITHTWODWORDINTREE(0x22300000,0x00000000)}},
+        {VT_exponent,22,0x3a84fa,{DOUBLEWITHTWODWORDINTREE(0x22400000,0x00000000)}},
+        {VT_exponent,22,0x3a84fb,{DOUBLEWITHTWODWORDINTREE(0x22500000,0x00000000)}},
+        {VT_exponent,22,0x3a84fc,{DOUBLEWITHTWODWORDINTREE(0x22600000,0x00000000)}},
+        {VT_exponent,22,0x3a84fd,{DOUBLEWITHTWODWORDINTREE(0x22700000,0x00000000)}},
+        {VT_exponent,22,0x3a84fe,{DOUBLEWITHTWODWORDINTREE(0x22800000,0x00000000)}},
+        {VT_exponent,22,0x3a84ff,{DOUBLEWITHTWODWORDINTREE(0x22900000,0x00000000)}},
+        {VT_exponent,22,0x3a8500,{DOUBLEWITHTWODWORDINTREE(0x22a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8501,{DOUBLEWITHTWODWORDINTREE(0x22b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8502,{DOUBLEWITHTWODWORDINTREE(0x22c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8503,{DOUBLEWITHTWODWORDINTREE(0x22d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8504,{DOUBLEWITHTWODWORDINTREE(0x22e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8505,{DOUBLEWITHTWODWORDINTREE(0x22f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8506,{DOUBLEWITHTWODWORDINTREE(0x23000000,0x00000000)}},
+        {VT_exponent,22,0x3a8507,{DOUBLEWITHTWODWORDINTREE(0x23100000,0x00000000)}},
+        {VT_exponent,22,0x3a8508,{DOUBLEWITHTWODWORDINTREE(0x23200000,0x00000000)}},
+        {VT_exponent,22,0x3a8509,{DOUBLEWITHTWODWORDINTREE(0x23300000,0x00000000)}},
+        {VT_exponent,22,0x3a850a,{DOUBLEWITHTWODWORDINTREE(0x23400000,0x00000000)}},
+        {VT_exponent,22,0x3a850b,{DOUBLEWITHTWODWORDINTREE(0x23500000,0x00000000)}},
+        {VT_exponent,22,0x3a850c,{DOUBLEWITHTWODWORDINTREE(0x23600000,0x00000000)}},
+        {VT_exponent,22,0x3a850d,{DOUBLEWITHTWODWORDINTREE(0x23700000,0x00000000)}},
+        {VT_exponent,22,0x3a850e,{DOUBLEWITHTWODWORDINTREE(0x23800000,0x00000000)}},
+        {VT_exponent,22,0x3a850f,{DOUBLEWITHTWODWORDINTREE(0x23900000,0x00000000)}},
+        {VT_exponent,22,0x3a8510,{DOUBLEWITHTWODWORDINTREE(0x23a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8511,{DOUBLEWITHTWODWORDINTREE(0x23b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8512,{DOUBLEWITHTWODWORDINTREE(0x23c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8513,{DOUBLEWITHTWODWORDINTREE(0x23d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8514,{DOUBLEWITHTWODWORDINTREE(0x23e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8515,{DOUBLEWITHTWODWORDINTREE(0x23f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8516,{DOUBLEWITHTWODWORDINTREE(0x24000000,0x00000000)}},
+        {VT_exponent,22,0x3a8517,{DOUBLEWITHTWODWORDINTREE(0x24100000,0x00000000)}},
+        {VT_exponent,22,0x3a8518,{DOUBLEWITHTWODWORDINTREE(0x24200000,0x00000000)}},
+        {VT_exponent,22,0x3a8519,{DOUBLEWITHTWODWORDINTREE(0x24300000,0x00000000)}},
+        {VT_exponent,22,0x3a851a,{DOUBLEWITHTWODWORDINTREE(0x24400000,0x00000000)}},
+        {VT_exponent,22,0x3a851b,{DOUBLEWITHTWODWORDINTREE(0x24500000,0x00000000)}},
+        {VT_exponent,22,0x3a851c,{DOUBLEWITHTWODWORDINTREE(0x24600000,0x00000000)}},
+        {VT_exponent,22,0x3a851d,{DOUBLEWITHTWODWORDINTREE(0x24700000,0x00000000)}},
+        {VT_exponent,22,0x3a851e,{DOUBLEWITHTWODWORDINTREE(0x24800000,0x00000000)}},
+        {VT_exponent,22,0x3a851f,{DOUBLEWITHTWODWORDINTREE(0x24900000,0x00000000)}},
+        {VT_exponent,22,0x3a8520,{DOUBLEWITHTWODWORDINTREE(0x24a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8521,{DOUBLEWITHTWODWORDINTREE(0x24b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8522,{DOUBLEWITHTWODWORDINTREE(0x24c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8523,{DOUBLEWITHTWODWORDINTREE(0x24d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8524,{DOUBLEWITHTWODWORDINTREE(0x24e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8525,{DOUBLEWITHTWODWORDINTREE(0x24f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8526,{DOUBLEWITHTWODWORDINTREE(0x25000000,0x00000000)}},
+        {VT_exponent,22,0x3a8527,{DOUBLEWITHTWODWORDINTREE(0x25100000,0x00000000)}},
+        {VT_exponent,22,0x3a8528,{DOUBLEWITHTWODWORDINTREE(0x25200000,0x00000000)}},
+        {VT_exponent,22,0x3a8529,{DOUBLEWITHTWODWORDINTREE(0x25300000,0x00000000)}},
+        {VT_exponent,22,0x3a852a,{DOUBLEWITHTWODWORDINTREE(0x25400000,0x00000000)}},
+        {VT_exponent,22,0x3a852b,{DOUBLEWITHTWODWORDINTREE(0x25500000,0x00000000)}},
+        {VT_exponent,22,0x3a852c,{DOUBLEWITHTWODWORDINTREE(0x25600000,0x00000000)}},
+        {VT_exponent,22,0x3a852d,{DOUBLEWITHTWODWORDINTREE(0x25700000,0x00000000)}},
+        {VT_exponent,22,0x3a852e,{DOUBLEWITHTWODWORDINTREE(0x25800000,0x00000000)}},
+        {VT_exponent,22,0x3a852f,{DOUBLEWITHTWODWORDINTREE(0x25900000,0x00000000)}},
+        {VT_exponent,22,0x3a8530,{DOUBLEWITHTWODWORDINTREE(0x25a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8531,{DOUBLEWITHTWODWORDINTREE(0x25b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8532,{DOUBLEWITHTWODWORDINTREE(0x25c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8533,{DOUBLEWITHTWODWORDINTREE(0x25d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8534,{DOUBLEWITHTWODWORDINTREE(0x25e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8535,{DOUBLEWITHTWODWORDINTREE(0x25f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8536,{DOUBLEWITHTWODWORDINTREE(0x26000000,0x00000000)}},
+        {VT_exponent,22,0x3a8537,{DOUBLEWITHTWODWORDINTREE(0x26100000,0x00000000)}},
+        {VT_exponent,22,0x3a8538,{DOUBLEWITHTWODWORDINTREE(0x26200000,0x00000000)}},
+        {VT_exponent,22,0x3a8539,{DOUBLEWITHTWODWORDINTREE(0x26300000,0x00000000)}},
+        {VT_exponent,22,0x3a853a,{DOUBLEWITHTWODWORDINTREE(0x26400000,0x00000000)}},
+        {VT_exponent,22,0x3a853b,{DOUBLEWITHTWODWORDINTREE(0x26500000,0x00000000)}},
+        {VT_exponent,22,0x3a853c,{DOUBLEWITHTWODWORDINTREE(0x26600000,0x00000000)}},
+        {VT_exponent,22,0x3a853d,{DOUBLEWITHTWODWORDINTREE(0x26700000,0x00000000)}},
+        {VT_exponent,22,0x3a853e,{DOUBLEWITHTWODWORDINTREE(0x26800000,0x00000000)}},
+        {VT_exponent,22,0x3a853f,{DOUBLEWITHTWODWORDINTREE(0x26900000,0x00000000)}},
+        {VT_exponent,22,0x3a8540,{DOUBLEWITHTWODWORDINTREE(0x26a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8541,{DOUBLEWITHTWODWORDINTREE(0x26b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8542,{DOUBLEWITHTWODWORDINTREE(0x26c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8543,{DOUBLEWITHTWODWORDINTREE(0x26d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8544,{DOUBLEWITHTWODWORDINTREE(0x26e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8545,{DOUBLEWITHTWODWORDINTREE(0x26f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8546,{DOUBLEWITHTWODWORDINTREE(0x27000000,0x00000000)}},
+        {VT_exponent,22,0x3a8547,{DOUBLEWITHTWODWORDINTREE(0x27100000,0x00000000)}},
+        {VT_exponent,22,0x3a8548,{DOUBLEWITHTWODWORDINTREE(0x27200000,0x00000000)}},
+        {VT_exponent,22,0x3a8549,{DOUBLEWITHTWODWORDINTREE(0x27300000,0x00000000)}},
+        {VT_exponent,22,0x3a854a,{DOUBLEWITHTWODWORDINTREE(0x27400000,0x00000000)}},
+        {VT_exponent,22,0x3a854b,{DOUBLEWITHTWODWORDINTREE(0x27500000,0x00000000)}},
+        {VT_exponent,22,0x3a854c,{DOUBLEWITHTWODWORDINTREE(0x27600000,0x00000000)}},
+        {VT_exponent,22,0x3a854d,{DOUBLEWITHTWODWORDINTREE(0x27700000,0x00000000)}},
+        {VT_exponent,22,0x3a854e,{DOUBLEWITHTWODWORDINTREE(0x27800000,0x00000000)}},
+        {VT_exponent,22,0x3a854f,{DOUBLEWITHTWODWORDINTREE(0x27900000,0x00000000)}},
+        {VT_exponent,22,0x3a8550,{DOUBLEWITHTWODWORDINTREE(0x27a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8551,{DOUBLEWITHTWODWORDINTREE(0x27b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8552,{DOUBLEWITHTWODWORDINTREE(0x27c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8553,{DOUBLEWITHTWODWORDINTREE(0x27d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8554,{DOUBLEWITHTWODWORDINTREE(0x27e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8555,{DOUBLEWITHTWODWORDINTREE(0x27f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8556,{DOUBLEWITHTWODWORDINTREE(0x28000000,0x00000000)}},
+        {VT_exponent,22,0x3a8557,{DOUBLEWITHTWODWORDINTREE(0x28100000,0x00000000)}},
+        {VT_exponent,22,0x3a8558,{DOUBLEWITHTWODWORDINTREE(0x28200000,0x00000000)}},
+        {VT_exponent,22,0x3a8559,{DOUBLEWITHTWODWORDINTREE(0x28300000,0x00000000)}},
+        {VT_exponent,22,0x3a855a,{DOUBLEWITHTWODWORDINTREE(0x28400000,0x00000000)}},
+        {VT_exponent,22,0x3a855b,{DOUBLEWITHTWODWORDINTREE(0x28500000,0x00000000)}},
+        {VT_exponent,22,0x3a855c,{DOUBLEWITHTWODWORDINTREE(0x28600000,0x00000000)}},
+        {VT_exponent,22,0x3a855d,{DOUBLEWITHTWODWORDINTREE(0x28700000,0x00000000)}},
+        {VT_exponent,22,0x3a855e,{DOUBLEWITHTWODWORDINTREE(0x28800000,0x00000000)}},
+        {VT_exponent,22,0x3a855f,{DOUBLEWITHTWODWORDINTREE(0x28900000,0x00000000)}},
+        {VT_exponent,22,0x3a8560,{DOUBLEWITHTWODWORDINTREE(0x28a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8561,{DOUBLEWITHTWODWORDINTREE(0x28b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8562,{DOUBLEWITHTWODWORDINTREE(0x28c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8563,{DOUBLEWITHTWODWORDINTREE(0x28d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8564,{DOUBLEWITHTWODWORDINTREE(0x28e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8565,{DOUBLEWITHTWODWORDINTREE(0x28f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8566,{DOUBLEWITHTWODWORDINTREE(0x29000000,0x00000000)}},
+        {VT_exponent,22,0x3a8567,{DOUBLEWITHTWODWORDINTREE(0x29100000,0x00000000)}},
+        {VT_exponent,22,0x3a8568,{DOUBLEWITHTWODWORDINTREE(0x29200000,0x00000000)}},
+        {VT_exponent,22,0x3a8569,{DOUBLEWITHTWODWORDINTREE(0x29300000,0x00000000)}},
+        {VT_exponent,22,0x3a856a,{DOUBLEWITHTWODWORDINTREE(0x29400000,0x00000000)}},
+        {VT_exponent,22,0x3a856b,{DOUBLEWITHTWODWORDINTREE(0x29500000,0x00000000)}},
+        {VT_exponent,22,0x3a856c,{DOUBLEWITHTWODWORDINTREE(0x29600000,0x00000000)}},
+        {VT_exponent,22,0x3a856d,{DOUBLEWITHTWODWORDINTREE(0x29700000,0x00000000)}},
+        {VT_exponent,22,0x3a856e,{DOUBLEWITHTWODWORDINTREE(0x29800000,0x00000000)}},
+        {VT_exponent,22,0x3a856f,{DOUBLEWITHTWODWORDINTREE(0x29900000,0x00000000)}},
+        {VT_exponent,22,0x3a8570,{DOUBLEWITHTWODWORDINTREE(0x29a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8571,{DOUBLEWITHTWODWORDINTREE(0x29b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8572,{DOUBLEWITHTWODWORDINTREE(0x29c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8573,{DOUBLEWITHTWODWORDINTREE(0x29d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8574,{DOUBLEWITHTWODWORDINTREE(0x29e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8575,{DOUBLEWITHTWODWORDINTREE(0x29f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8576,{DOUBLEWITHTWODWORDINTREE(0x2a000000,0x00000000)}},
+        {VT_exponent,22,0x3a8577,{DOUBLEWITHTWODWORDINTREE(0x2a100000,0x00000000)}},
+        {VT_exponent,22,0x3a8578,{DOUBLEWITHTWODWORDINTREE(0x2a200000,0x00000000)}},
+        {VT_exponent,22,0x3a8579,{DOUBLEWITHTWODWORDINTREE(0x2a300000,0x00000000)}},
+        {VT_exponent,22,0x3a857a,{DOUBLEWITHTWODWORDINTREE(0x2a400000,0x00000000)}},
+        {VT_exponent,22,0x3a857b,{DOUBLEWITHTWODWORDINTREE(0x2a500000,0x00000000)}},
+        {VT_exponent,22,0x3a857c,{DOUBLEWITHTWODWORDINTREE(0x2a600000,0x00000000)}},
+        {VT_exponent,22,0x3a857d,{DOUBLEWITHTWODWORDINTREE(0x2a700000,0x00000000)}},
+        {VT_exponent,22,0x3a857e,{DOUBLEWITHTWODWORDINTREE(0x2a800000,0x00000000)}},
+        {VT_exponent,22,0x3a857f,{DOUBLEWITHTWODWORDINTREE(0x2a900000,0x00000000)}},
+        {VT_exponent,22,0x3a8580,{DOUBLEWITHTWODWORDINTREE(0x2aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a8581,{DOUBLEWITHTWODWORDINTREE(0x2ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a8582,{DOUBLEWITHTWODWORDINTREE(0x2ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a8583,{DOUBLEWITHTWODWORDINTREE(0x2ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a8584,{DOUBLEWITHTWODWORDINTREE(0x2ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a8585,{DOUBLEWITHTWODWORDINTREE(0x2af00000,0x00000000)}},
+        {VT_exponent,22,0x3a8586,{DOUBLEWITHTWODWORDINTREE(0x2b000000,0x00000000)}},
+        {VT_exponent,22,0x3a8587,{DOUBLEWITHTWODWORDINTREE(0x2b100000,0x00000000)}},
+        {VT_exponent,22,0x3a8588,{DOUBLEWITHTWODWORDINTREE(0x2b200000,0x00000000)}},
+        {VT_exponent,22,0x3a8589,{DOUBLEWITHTWODWORDINTREE(0x2b300000,0x00000000)}},
+        {VT_exponent,22,0x3a858a,{DOUBLEWITHTWODWORDINTREE(0x2b400000,0x00000000)}},
+        {VT_exponent,22,0x3a858b,{DOUBLEWITHTWODWORDINTREE(0x2b500000,0x00000000)}},
+        {VT_exponent,22,0x3a858c,{DOUBLEWITHTWODWORDINTREE(0x2b600000,0x00000000)}},
+        {VT_exponent,22,0x3a858d,{DOUBLEWITHTWODWORDINTREE(0x2b700000,0x00000000)}},
+        {VT_exponent,22,0x3a858e,{DOUBLEWITHTWODWORDINTREE(0x2b800000,0x00000000)}},
+        {VT_exponent,22,0x3a858f,{DOUBLEWITHTWODWORDINTREE(0x2b900000,0x00000000)}},
+        {VT_exponent,22,0x3a8590,{DOUBLEWITHTWODWORDINTREE(0x2ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a8591,{DOUBLEWITHTWODWORDINTREE(0x2bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a8592,{DOUBLEWITHTWODWORDINTREE(0x2bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a8593,{DOUBLEWITHTWODWORDINTREE(0x2bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a8594,{DOUBLEWITHTWODWORDINTREE(0x2be00000,0x00000000)}},
+        {VT_exponent,22,0x3a8595,{DOUBLEWITHTWODWORDINTREE(0x2bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a8596,{DOUBLEWITHTWODWORDINTREE(0x2c000000,0x00000000)}},
+        {VT_exponent,22,0x3a8597,{DOUBLEWITHTWODWORDINTREE(0x2c100000,0x00000000)}},
+        {VT_exponent,22,0x3a8598,{DOUBLEWITHTWODWORDINTREE(0x2c200000,0x00000000)}},
+        {VT_exponent,22,0x3a8599,{DOUBLEWITHTWODWORDINTREE(0x2c300000,0x00000000)}},
+        {VT_exponent,22,0x3a859a,{DOUBLEWITHTWODWORDINTREE(0x2c400000,0x00000000)}},
+        {VT_exponent,22,0x3a859b,{DOUBLEWITHTWODWORDINTREE(0x2c500000,0x00000000)}},
+        {VT_exponent,22,0x3a859c,{DOUBLEWITHTWODWORDINTREE(0x2c600000,0x00000000)}},
+        {VT_exponent,22,0x3a859d,{DOUBLEWITHTWODWORDINTREE(0x2c700000,0x00000000)}},
+        {VT_exponent,22,0x3a859e,{DOUBLEWITHTWODWORDINTREE(0x2c800000,0x00000000)}},
+        {VT_exponent,22,0x3a859f,{DOUBLEWITHTWODWORDINTREE(0x2c900000,0x00000000)}},
+        {VT_exponent,22,0x3a85a0,{DOUBLEWITHTWODWORDINTREE(0x2ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a85a1,{DOUBLEWITHTWODWORDINTREE(0x2cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a85a2,{DOUBLEWITHTWODWORDINTREE(0x2cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a85a3,{DOUBLEWITHTWODWORDINTREE(0x2cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a85a4,{DOUBLEWITHTWODWORDINTREE(0x2ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a85a5,{DOUBLEWITHTWODWORDINTREE(0x2cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a85a6,{DOUBLEWITHTWODWORDINTREE(0x2d000000,0x00000000)}},
+        {VT_exponent,22,0x3a85a7,{DOUBLEWITHTWODWORDINTREE(0x2d100000,0x00000000)}},
+        {VT_exponent,22,0x3a85a8,{DOUBLEWITHTWODWORDINTREE(0x2d200000,0x00000000)}},
+        {VT_exponent,22,0x3a85a9,{DOUBLEWITHTWODWORDINTREE(0x2d300000,0x00000000)}},
+        {VT_exponent,22,0x3a85aa,{DOUBLEWITHTWODWORDINTREE(0x2d400000,0x00000000)}},
+        {VT_exponent,22,0x3a85ab,{DOUBLEWITHTWODWORDINTREE(0x2d500000,0x00000000)}},
+        {VT_exponent,22,0x3a85ac,{DOUBLEWITHTWODWORDINTREE(0x2d600000,0x00000000)}},
+        {VT_exponent,22,0x3a85ad,{DOUBLEWITHTWODWORDINTREE(0x2d700000,0x00000000)}},
+        {VT_exponent,22,0x3a85ae,{DOUBLEWITHTWODWORDINTREE(0x2d800000,0x00000000)}},
+        {VT_exponent,22,0x3a85af,{DOUBLEWITHTWODWORDINTREE(0x2d900000,0x00000000)}},
+        {VT_exponent,22,0x3a85b0,{DOUBLEWITHTWODWORDINTREE(0x2da00000,0x00000000)}},
+        {VT_exponent,22,0x3a85b1,{DOUBLEWITHTWODWORDINTREE(0x2db00000,0x00000000)}},
+        {VT_exponent,22,0x3a85b2,{DOUBLEWITHTWODWORDINTREE(0x2dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a85b3,{DOUBLEWITHTWODWORDINTREE(0x2dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a85b4,{DOUBLEWITHTWODWORDINTREE(0x2de00000,0x00000000)}},
+        {VT_exponent,22,0x3a85b5,{DOUBLEWITHTWODWORDINTREE(0x2df00000,0x00000000)}},
+        {VT_exponent,22,0x3a85b6,{DOUBLEWITHTWODWORDINTREE(0x2e000000,0x00000000)}},
+        {VT_exponent,22,0x3a85b7,{DOUBLEWITHTWODWORDINTREE(0x2e100000,0x00000000)}},
+        {VT_exponent,22,0x3a85b8,{DOUBLEWITHTWODWORDINTREE(0x2e200000,0x00000000)}},
+        {VT_exponent,22,0x3a85b9,{DOUBLEWITHTWODWORDINTREE(0x2e300000,0x00000000)}},
+        {VT_exponent,22,0x3a85ba,{DOUBLEWITHTWODWORDINTREE(0x2e400000,0x00000000)}},
+        {VT_exponent,22,0x3a85bb,{DOUBLEWITHTWODWORDINTREE(0x2e500000,0x00000000)}},
+        {VT_exponent,22,0x3a85bc,{DOUBLEWITHTWODWORDINTREE(0x2e600000,0x00000000)}},
+        {VT_exponent,22,0x3a85bd,{DOUBLEWITHTWODWORDINTREE(0x2e700000,0x00000000)}},
+        {VT_exponent,22,0x3a85be,{DOUBLEWITHTWODWORDINTREE(0x2e800000,0x00000000)}},
+        {VT_exponent,22,0x3a85bf,{DOUBLEWITHTWODWORDINTREE(0x2e900000,0x00000000)}},
+        {VT_exponent,22,0x3a85c0,{DOUBLEWITHTWODWORDINTREE(0x2ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a85c1,{DOUBLEWITHTWODWORDINTREE(0x2eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a85c2,{DOUBLEWITHTWODWORDINTREE(0x2ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a85c3,{DOUBLEWITHTWODWORDINTREE(0x2ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a85c4,{DOUBLEWITHTWODWORDINTREE(0x2ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a85c5,{DOUBLEWITHTWODWORDINTREE(0x2ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a85c6,{DOUBLEWITHTWODWORDINTREE(0x2f000000,0x00000000)}},
+        {VT_exponent,22,0x3a85c7,{DOUBLEWITHTWODWORDINTREE(0x2f100000,0x00000000)}},
+        {VT_exponent,22,0x3a85c8,{DOUBLEWITHTWODWORDINTREE(0x2f200000,0x00000000)}},
+        {VT_exponent,22,0x3a85c9,{DOUBLEWITHTWODWORDINTREE(0x2f300000,0x00000000)}},
+        {VT_exponent,22,0x3a85ca,{DOUBLEWITHTWODWORDINTREE(0x2f400000,0x00000000)}},
+        {VT_exponent,22,0x3a85cb,{DOUBLEWITHTWODWORDINTREE(0x2f500000,0x00000000)}},
+        {VT_exponent,22,0x3a85cc,{DOUBLEWITHTWODWORDINTREE(0x2f600000,0x00000000)}},
+        {VT_exponent,22,0x3a85cd,{DOUBLEWITHTWODWORDINTREE(0x2f700000,0x00000000)}},
+        {VT_exponent,22,0x3a85ce,{DOUBLEWITHTWODWORDINTREE(0x2f800000,0x00000000)}},
+        {VT_exponent,22,0x3a85cf,{DOUBLEWITHTWODWORDINTREE(0x2f900000,0x00000000)}},
+        {VT_exponent,22,0x3a85d0,{DOUBLEWITHTWODWORDINTREE(0x2fa00000,0x00000000)}},
+        {VT_exponent,22,0x3a85d1,{DOUBLEWITHTWODWORDINTREE(0x2fb00000,0x00000000)}},
+        {VT_exponent,22,0x3a85d2,{DOUBLEWITHTWODWORDINTREE(0x2fc00000,0x00000000)}},
+        {VT_exponent,22,0x3a85d3,{DOUBLEWITHTWODWORDINTREE(0x2fd00000,0x00000000)}},
+        {VT_exponent,22,0x3a85d4,{DOUBLEWITHTWODWORDINTREE(0x2fe00000,0x00000000)}},
+        {VT_exponent,22,0x3a85d5,{DOUBLEWITHTWODWORDINTREE(0x2ff00000,0x00000000)}},
+        {VT_exponent,22,0x3a85d6,{DOUBLEWITHTWODWORDINTREE(0x30000000,0x00000000)}},
+        {VT_exponent,22,0x3a85d7,{DOUBLEWITHTWODWORDINTREE(0x30100000,0x00000000)}},
+        {VT_exponent,22,0x3a85d8,{DOUBLEWITHTWODWORDINTREE(0x30200000,0x00000000)}},
+        {VT_exponent,22,0x3a85d9,{DOUBLEWITHTWODWORDINTREE(0x30300000,0x00000000)}},
+        {VT_exponent,22,0x3a85da,{DOUBLEWITHTWODWORDINTREE(0x30400000,0x00000000)}},
+        {VT_exponent,22,0x3a85db,{DOUBLEWITHTWODWORDINTREE(0x30500000,0x00000000)}},
+        {VT_exponent,22,0x3a85dc,{DOUBLEWITHTWODWORDINTREE(0x30600000,0x00000000)}},
+        {VT_exponent,22,0x3a85dd,{DOUBLEWITHTWODWORDINTREE(0x30700000,0x00000000)}},
+        {VT_exponent,22,0x3a85de,{DOUBLEWITHTWODWORDINTREE(0x30800000,0x00000000)}},
+        {VT_exponent,22,0x3a85df,{DOUBLEWITHTWODWORDINTREE(0x30900000,0x00000000)}},
+        {VT_exponent,22,0x3a85e0,{DOUBLEWITHTWODWORDINTREE(0x30a00000,0x00000000)}},
+        {VT_exponent,22,0x3a85e1,{DOUBLEWITHTWODWORDINTREE(0x30b00000,0x00000000)}},
+        {VT_exponent,22,0x3a85e2,{DOUBLEWITHTWODWORDINTREE(0x30c00000,0x00000000)}},
+        {VT_exponent,22,0x3a85e3,{DOUBLEWITHTWODWORDINTREE(0x30d00000,0x00000000)}},
+        {VT_exponent,22,0x3a85e4,{DOUBLEWITHTWODWORDINTREE(0x30e00000,0x00000000)}},
+        {VT_exponent,22,0x3a85e5,{DOUBLEWITHTWODWORDINTREE(0x30f00000,0x00000000)}},
+        {VT_exponent,22,0x3a85e6,{DOUBLEWITHTWODWORDINTREE(0x31000000,0x00000000)}},
+        {VT_exponent,22,0x3a85e7,{DOUBLEWITHTWODWORDINTREE(0x31100000,0x00000000)}},
+        {VT_exponent,22,0x3a85e8,{DOUBLEWITHTWODWORDINTREE(0x31200000,0x00000000)}},
+        {VT_exponent,22,0x3a85e9,{DOUBLEWITHTWODWORDINTREE(0x31300000,0x00000000)}},
+        {VT_exponent,22,0x3a85ea,{DOUBLEWITHTWODWORDINTREE(0x31400000,0x00000000)}},
+        {VT_exponent,22,0x3a85eb,{DOUBLEWITHTWODWORDINTREE(0x31500000,0x00000000)}},
+        {VT_exponent,22,0x3a85ec,{DOUBLEWITHTWODWORDINTREE(0x31600000,0x00000000)}},
+        {VT_exponent,22,0x3a85ed,{DOUBLEWITHTWODWORDINTREE(0x31700000,0x00000000)}},
+        {VT_exponent,22,0x3a85ee,{DOUBLEWITHTWODWORDINTREE(0x31800000,0x00000000)}},
+        {VT_exponent,22,0x3a85ef,{DOUBLEWITHTWODWORDINTREE(0x31900000,0x00000000)}},
+        {VT_exponent,22,0x3a85f0,{DOUBLEWITHTWODWORDINTREE(0x31a00000,0x00000000)}},
+        {VT_exponent,22,0x3a85f1,{DOUBLEWITHTWODWORDINTREE(0x31b00000,0x00000000)}},
+        {VT_exponent,22,0x3a85f2,{DOUBLEWITHTWODWORDINTREE(0x31c00000,0x00000000)}},
+        {VT_exponent,22,0x3a85f3,{DOUBLEWITHTWODWORDINTREE(0x31d00000,0x00000000)}},
+        {VT_exponent,22,0x3a85f4,{DOUBLEWITHTWODWORDINTREE(0x31e00000,0x00000000)}},
+        {VT_exponent,22,0x3a85f5,{DOUBLEWITHTWODWORDINTREE(0x31f00000,0x00000000)}},
+        {VT_exponent,22,0x3a85f6,{DOUBLEWITHTWODWORDINTREE(0x32000000,0x00000000)}},
+        {VT_exponent,22,0x3a85f7,{DOUBLEWITHTWODWORDINTREE(0x32100000,0x00000000)}},
+        {VT_exponent,22,0x3a85f8,{DOUBLEWITHTWODWORDINTREE(0x32200000,0x00000000)}},
+        {VT_exponent,22,0x3a85f9,{DOUBLEWITHTWODWORDINTREE(0x32300000,0x00000000)}},
+        {VT_exponent,22,0x3a85fa,{DOUBLEWITHTWODWORDINTREE(0x32400000,0x00000000)}},
+        {VT_exponent,22,0x3a85fb,{DOUBLEWITHTWODWORDINTREE(0x32500000,0x00000000)}},
+        {VT_exponent,22,0x3a85fc,{DOUBLEWITHTWODWORDINTREE(0x32600000,0x00000000)}},
+        {VT_exponent,22,0x3a85fd,{DOUBLEWITHTWODWORDINTREE(0x32700000,0x00000000)}},
+        {VT_exponent,22,0x3a85fe,{DOUBLEWITHTWODWORDINTREE(0x32800000,0x00000000)}},
+        {VT_exponent,22,0x3a85ff,{DOUBLEWITHTWODWORDINTREE(0x32900000,0x00000000)}},
+        {VT_exponent,22,0x3a8600,{DOUBLEWITHTWODWORDINTREE(0x32a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8601,{DOUBLEWITHTWODWORDINTREE(0x32b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8602,{DOUBLEWITHTWODWORDINTREE(0x32c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8603,{DOUBLEWITHTWODWORDINTREE(0x32d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8604,{DOUBLEWITHTWODWORDINTREE(0x32e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8605,{DOUBLEWITHTWODWORDINTREE(0x32f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8606,{DOUBLEWITHTWODWORDINTREE(0x33000000,0x00000000)}},
+        {VT_exponent,22,0x3a8607,{DOUBLEWITHTWODWORDINTREE(0x33100000,0x00000000)}},
+        {VT_exponent,22,0x3a8608,{DOUBLEWITHTWODWORDINTREE(0x33200000,0x00000000)}},
+        {VT_exponent,22,0x3a8609,{DOUBLEWITHTWODWORDINTREE(0x33300000,0x00000000)}},
+        {VT_exponent,22,0x3a860a,{DOUBLEWITHTWODWORDINTREE(0x33400000,0x00000000)}},
+        {VT_exponent,22,0x3a860b,{DOUBLEWITHTWODWORDINTREE(0x33500000,0x00000000)}},
+        {VT_exponent,22,0x3a860c,{DOUBLEWITHTWODWORDINTREE(0x33600000,0x00000000)}},
+        {VT_exponent,22,0x3a860d,{DOUBLEWITHTWODWORDINTREE(0x33700000,0x00000000)}},
+        {VT_exponent,22,0x3a860e,{DOUBLEWITHTWODWORDINTREE(0x33800000,0x00000000)}},
+        {VT_exponent,22,0x3a860f,{DOUBLEWITHTWODWORDINTREE(0x33900000,0x00000000)}},
+        {VT_exponent,22,0x3a8610,{DOUBLEWITHTWODWORDINTREE(0x33a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8611,{DOUBLEWITHTWODWORDINTREE(0x33b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8612,{DOUBLEWITHTWODWORDINTREE(0x33c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8613,{DOUBLEWITHTWODWORDINTREE(0x33d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8614,{DOUBLEWITHTWODWORDINTREE(0x33e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8615,{DOUBLEWITHTWODWORDINTREE(0x33f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8616,{DOUBLEWITHTWODWORDINTREE(0x34000000,0x00000000)}},
+        {VT_exponent,22,0x3a8617,{DOUBLEWITHTWODWORDINTREE(0x34100000,0x00000000)}},
+        {VT_exponent,22,0x3a8618,{DOUBLEWITHTWODWORDINTREE(0x34200000,0x00000000)}},
+        {VT_exponent,22,0x3a8619,{DOUBLEWITHTWODWORDINTREE(0x34300000,0x00000000)}},
+        {VT_exponent,22,0x3a861a,{DOUBLEWITHTWODWORDINTREE(0x34400000,0x00000000)}},
+        {VT_exponent,22,0x3a861b,{DOUBLEWITHTWODWORDINTREE(0x34500000,0x00000000)}},
+        {VT_exponent,22,0x3a861c,{DOUBLEWITHTWODWORDINTREE(0x34600000,0x00000000)}},
+        {VT_exponent,22,0x3a861d,{DOUBLEWITHTWODWORDINTREE(0x34700000,0x00000000)}},
+        {VT_exponent,22,0x3a861e,{DOUBLEWITHTWODWORDINTREE(0x34800000,0x00000000)}},
+        {VT_exponent,22,0x3a861f,{DOUBLEWITHTWODWORDINTREE(0x34900000,0x00000000)}},
+        {VT_exponent,22,0x3a8620,{DOUBLEWITHTWODWORDINTREE(0x34a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8621,{DOUBLEWITHTWODWORDINTREE(0x34b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8622,{DOUBLEWITHTWODWORDINTREE(0x34c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8623,{DOUBLEWITHTWODWORDINTREE(0x34d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8624,{DOUBLEWITHTWODWORDINTREE(0x34e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8625,{DOUBLEWITHTWODWORDINTREE(0x34f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8626,{DOUBLEWITHTWODWORDINTREE(0x35000000,0x00000000)}},
+        {VT_exponent,22,0x3a8627,{DOUBLEWITHTWODWORDINTREE(0x35100000,0x00000000)}},
+        {VT_exponent,22,0x3a8628,{DOUBLEWITHTWODWORDINTREE(0x35200000,0x00000000)}},
+        {VT_exponent,22,0x3a8629,{DOUBLEWITHTWODWORDINTREE(0x35300000,0x00000000)}},
+        {VT_exponent,18,0xf787,{DOUBLEWITHTWODWORDINTREE(0x35400000,0x00000000)}},
+        {VT_exponent,18,0xd1d4,{DOUBLEWITHTWODWORDINTREE(0x35500000,0x00000000)}},
+        {VT_exponent,19,0x77f9f,{DOUBLEWITHTWODWORDINTREE(0x35600000,0x00000000)}},
+        {VT_exponent,18,0x3b8fb,{DOUBLEWITHTWODWORDINTREE(0x35700000,0x00000000)}},
+        {VT_exponent,19,0x1ef1a,{DOUBLEWITHTWODWORDINTREE(0x35800000,0x00000000)}},
+        {VT_exponent,21,0x1d4315,{DOUBLEWITHTWODWORDINTREE(0x35900000,0x00000000)}},
+        {VT_exponent,16,0x3de2,{DOUBLEWITHTWODWORDINTREE(0x35a00000,0x00000000)}},
+        {VT_exponent,22,0x3a862c,{DOUBLEWITHTWODWORDINTREE(0x35b00000,0x00000000)}},
+        {VT_exponent,22,0x3a862d,{DOUBLEWITHTWODWORDINTREE(0x35c00000,0x00000000)}},
+        {VT_exponent,22,0x3a862e,{DOUBLEWITHTWODWORDINTREE(0x35d00000,0x00000000)}},
+        {VT_exponent,22,0x3a862f,{DOUBLEWITHTWODWORDINTREE(0x35e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8630,{DOUBLEWITHTWODWORDINTREE(0x35f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8631,{DOUBLEWITHTWODWORDINTREE(0x36000000,0x00000000)}},
+        {VT_exponent,22,0x3a8632,{DOUBLEWITHTWODWORDINTREE(0x36100000,0x00000000)}},
+        {VT_exponent,22,0x3a8633,{DOUBLEWITHTWODWORDINTREE(0x36200000,0x00000000)}},
+        {VT_exponent,22,0x3a8634,{DOUBLEWITHTWODWORDINTREE(0x36300000,0x00000000)}},
+        {VT_exponent,22,0x3a8635,{DOUBLEWITHTWODWORDINTREE(0x36400000,0x00000000)}},
+        {VT_exponent,22,0x3a8636,{DOUBLEWITHTWODWORDINTREE(0x36500000,0x00000000)}},
+        {VT_exponent,22,0x3a8637,{DOUBLEWITHTWODWORDINTREE(0x36600000,0x00000000)}},
+        {VT_exponent,22,0x3a8638,{DOUBLEWITHTWODWORDINTREE(0x36700000,0x00000000)}},
+        {VT_exponent,21,0x1d431d,{DOUBLEWITHTWODWORDINTREE(0x36800000,0x00000000)}},
+        {VT_exponent,22,0x3a8639,{DOUBLEWITHTWODWORDINTREE(0x36900000,0x00000000)}},
+        {VT_exponent,22,0x3a863c,{DOUBLEWITHTWODWORDINTREE(0x36a00000,0x00000000)}},
+        {VT_exponent,16,0x3de0,{DOUBLEWITHTWODWORDINTREE(0x36b00000,0x00000000)}},
+        {VT_exponent,18,0x3a95e,{DOUBLEWITHTWODWORDINTREE(0x36c00000,0x00000000)}},
+        {VT_exponent,21,0x1d431f,{DOUBLEWITHTWODWORDINTREE(0x36d00000,0x00000000)}},
+        {VT_exponent,22,0x3a863d,{DOUBLEWITHTWODWORDINTREE(0x36e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8640,{DOUBLEWITHTWODWORDINTREE(0x36f00000,0x00000000)}},
+        {VT_exponent,20,0x34749,{DOUBLEWITHTWODWORDINTREE(0x37000000,0x00000000)}},
+        {VT_exponent,20,0x3474d,{DOUBLEWITHTWODWORDINTREE(0x37100000,0x00000000)}},
+        {VT_exponent,22,0x3a8641,{DOUBLEWITHTWODWORDINTREE(0x37200000,0x00000000)}},
+        {VT_exponent,22,0x3a8642,{DOUBLEWITHTWODWORDINTREE(0x37300000,0x00000000)}},
+        {VT_exponent,22,0x3a8643,{DOUBLEWITHTWODWORDINTREE(0x37400000,0x00000000)}},
+        {VT_exponent,22,0x3a8644,{DOUBLEWITHTWODWORDINTREE(0x37500000,0x00000000)}},
+        {VT_exponent,22,0x3a8645,{DOUBLEWITHTWODWORDINTREE(0x37600000,0x00000000)}},
+        {VT_exponent,22,0x3a8646,{DOUBLEWITHTWODWORDINTREE(0x37700000,0x00000000)}},
+        {VT_exponent,22,0x3a8647,{DOUBLEWITHTWODWORDINTREE(0x37800000,0x00000000)}},
+        {VT_exponent,22,0x3a8648,{DOUBLEWITHTWODWORDINTREE(0x37900000,0x00000000)}},
+        {VT_exponent,22,0x3a8649,{DOUBLEWITHTWODWORDINTREE(0x37a00000,0x00000000)}},
+        {VT_exponent,22,0x3a864a,{DOUBLEWITHTWODWORDINTREE(0x37b00000,0x00000000)}},
+        {VT_exponent,22,0x3a864b,{DOUBLEWITHTWODWORDINTREE(0x37c00000,0x00000000)}},
+        {VT_exponent,22,0x3a864c,{DOUBLEWITHTWODWORDINTREE(0x37d00000,0x00000000)}},
+        {VT_exponent,22,0x3a864d,{DOUBLEWITHTWODWORDINTREE(0x37e00000,0x00000000)}},
+        {VT_exponent,22,0x3a864e,{DOUBLEWITHTWODWORDINTREE(0x37f00000,0x00000000)}},
+        {VT_exponent,22,0x3a864f,{DOUBLEWITHTWODWORDINTREE(0x38000000,0x00000000)}},
+        {VT_exponent,22,0x3a8650,{DOUBLEWITHTWODWORDINTREE(0x38100000,0x00000000)}},
+        {VT_exponent,22,0x3a8651,{DOUBLEWITHTWODWORDINTREE(0x38200000,0x00000000)}},
+        {VT_exponent,22,0x3a8652,{DOUBLEWITHTWODWORDINTREE(0x38300000,0x00000000)}},
+        {VT_exponent,22,0x3a8653,{DOUBLEWITHTWODWORDINTREE(0x38400000,0x00000000)}},
+        {VT_exponent,22,0x3a8654,{DOUBLEWITHTWODWORDINTREE(0x38500000,0x00000000)}},
+        {VT_exponent,22,0x3a8655,{DOUBLEWITHTWODWORDINTREE(0x38600000,0x00000000)}},
+        {VT_exponent,22,0x3a8656,{DOUBLEWITHTWODWORDINTREE(0x38700000,0x00000000)}},
+        {VT_exponent,22,0x3a8657,{DOUBLEWITHTWODWORDINTREE(0x38800000,0x00000000)}},
+        {VT_exponent,22,0x3a8658,{DOUBLEWITHTWODWORDINTREE(0x38900000,0x00000000)}},
+        {VT_exponent,22,0x3a8659,{DOUBLEWITHTWODWORDINTREE(0x38a00000,0x00000000)}},
+        {VT_exponent,22,0x3a865a,{DOUBLEWITHTWODWORDINTREE(0x38b00000,0x00000000)}},
+        {VT_exponent,22,0x3a865b,{DOUBLEWITHTWODWORDINTREE(0x38c00000,0x00000000)}},
+        {VT_exponent,22,0x3a865c,{DOUBLEWITHTWODWORDINTREE(0x38d00000,0x00000000)}},
+        {VT_exponent,22,0x3a865d,{DOUBLEWITHTWODWORDINTREE(0x38e00000,0x00000000)}},
+        {VT_exponent,21,0x1d432f,{DOUBLEWITHTWODWORDINTREE(0x38f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8660,{DOUBLEWITHTWODWORDINTREE(0x39000000,0x00000000)}},
+        {VT_exponent,22,0x3a8661,{DOUBLEWITHTWODWORDINTREE(0x39100000,0x00000000)}},
+        {VT_exponent,22,0x3a8662,{DOUBLEWITHTWODWORDINTREE(0x39200000,0x00000000)}},
+        {VT_exponent,21,0x1d4332,{DOUBLEWITHTWODWORDINTREE(0x39300000,0x00000000)}},
+        {VT_exponent,18,0xd1d5,{DOUBLEWITHTWODWORDINTREE(0x39400000,0x00000000)}},
+        {VT_exponent,18,0x3bfda,{DOUBLEWITHTWODWORDINTREE(0x39500000,0x00000000)}},
+        {VT_exponent,15,0x7528,{DOUBLEWITHTWODWORDINTREE(0x39600000,0x00000000)}},
+        {VT_exponent,15,0x7529,{DOUBLEWITHTWODWORDINTREE(0x39700000,0x00000000)}},
+        {VT_exponent,18,0x3a95f,{DOUBLEWITHTWODWORDINTREE(0x39800000,0x00000000)}},
+        {VT_exponent,17,0x1d434,{DOUBLEWITHTWODWORDINTREE(0x39900000,0x00000000)}},
+        {VT_exponent,19,0x750cd,{DOUBLEWITHTWODWORDINTREE(0x39a00000,0x00000000)}},
+        {VT_exponent,18,0x3a867,{DOUBLEWITHTWODWORDINTREE(0x39b00000,0x00000000)}},
+        {VT_exponent,19,0x771fd,{DOUBLEWITHTWODWORDINTREE(0x39c00000,0x00000000)}},
+        {VT_exponent,15,0x7764,{DOUBLEWITHTWODWORDINTREE(0x39d00000,0x00000000)}},
+        {VT_exponent,20,0xee3f9,{DOUBLEWITHTWODWORDINTREE(0x39e00000,0x00000000)}},
+        {VT_exponent,18,0x3bfdb,{DOUBLEWITHTWODWORDINTREE(0x39f00000,0x00000000)}},
+        {VT_exponent,16,0xeff7,{DOUBLEWITHTWODWORDINTREE(0x3a000000,0x00000000)}},
+        {VT_exponent,18,0xd1d6,{DOUBLEWITHTWODWORDINTREE(0x3a100000,0x00000000)}},
+        {VT_exponent,22,0x3a8663,{DOUBLEWITHTWODWORDINTREE(0x3a200000,0x00000000)}},
+        {VT_exponent,22,0x3a8666,{DOUBLEWITHTWODWORDINTREE(0x3a300000,0x00000000)}},
+        {VT_exponent,18,0x3b8fa,{DOUBLEWITHTWODWORDINTREE(0x3a400000,0x00000000)}},
+        {VT_exponent,17,0x1d435,{DOUBLEWITHTWODWORDINTREE(0x3a500000,0x00000000)}},
+        {VT_exponent,17,0x1dfe4,{DOUBLEWITHTWODWORDINTREE(0x3a600000,0x00000000)}},
+        {VT_exponent,19,0x750d8,{DOUBLEWITHTWODWORDINTREE(0x3a700000,0x00000000)}},
+        {VT_exponent,18,0x3a95b,{DOUBLEWITHTWODWORDINTREE(0x3a800000,0x00000000)}},
+        {VT_exponent,19,0x77f9e,{DOUBLEWITHTWODWORDINTREE(0x3a900000,0x00000000)}},
+        {VT_exponent,19,0x750d9,{DOUBLEWITHTWODWORDINTREE(0x3aa00000,0x00000000)}},
+        {VT_exponent,18,0xd1d7,{DOUBLEWITHTWODWORDINTREE(0x3ab00000,0x00000000)}},
+        {VT_exponent,18,0x3b8ff,{DOUBLEWITHTWODWORDINTREE(0x3ac00000,0x00000000)}},
+        {VT_exponent,17,0x1dc7c,{DOUBLEWITHTWODWORDINTREE(0x3ad00000,0x00000000)}},
+        {VT_exponent,19,0x750da,{DOUBLEWITHTWODWORDINTREE(0x3ae00000,0x00000000)}},
+        {VT_exponent,17,0x7bc2,{DOUBLEWITHTWODWORDINTREE(0x3af00000,0x00000000)}},
+        {VT_exponent,18,0x3bfca,{DOUBLEWITHTWODWORDINTREE(0x3b000000,0x00000000)}},
+        {VT_exponent,19,0x1a3a5,{DOUBLEWITHTWODWORDINTREE(0x3b100000,0x00000000)}},
+        {VT_exponent,17,0x1d4ac,{DOUBLEWITHTWODWORDINTREE(0x3b200000,0x00000000)}},
+        {VT_exponent,18,0x3a86e,{DOUBLEWITHTWODWORDINTREE(0x3b300000,0x00000000)}},
+        {VT_exponent,17,0x1d438,{DOUBLEWITHTWODWORDINTREE(0x3b400000,0x00000000)}},
+        {VT_exponent,18,0x3bfcb,{DOUBLEWITHTWODWORDINTREE(0x3b500000,0x00000000)}},
+        {VT_exponent,19,0x1a3a7,{DOUBLEWITHTWODWORDINTREE(0x3b600000,0x00000000)}},
+        {VT_exponent,17,0x1d4ae,{DOUBLEWITHTWODWORDINTREE(0x3b700000,0x00000000)}},
+        {VT_exponent,18,0x3bfce,{DOUBLEWITHTWODWORDINTREE(0x3b800000,0x00000000)}},
+        {VT_exponent,18,0xf78c,{DOUBLEWITHTWODWORDINTREE(0x3b900000,0x00000000)}},
+        {VT_exponent,17,0x1dfec,{DOUBLEWITHTWODWORDINTREE(0x3ba00000,0x00000000)}},
+        {VT_exponent,17,0x1d439,{DOUBLEWITHTWODWORDINTREE(0x3bb00000,0x00000000)}},
+        {VT_exponent,17,0x68e8,{DOUBLEWITHTWODWORDINTREE(0x3bc00000,0x00000000)}},
+        {VT_exponent,18,0xf786,{DOUBLEWITHTWODWORDINTREE(0x3bd00000,0x00000000)}},
+        {VT_exponent,15,0x771e,{DOUBLEWITHTWODWORDINTREE(0x3be00000,0x00000000)}},
+        {VT_exponent,17,0x1dfe6,{DOUBLEWITHTWODWORDINTREE(0x3bf00000,0x00000000)}},
+        {VT_exponent,15,0x77f8,{DOUBLEWITHTWODWORDINTREE(0x3c000000,0x00000000)}},
+        {VT_exponent,14,0x3bb3,{DOUBLEWITHTWODWORDINTREE(0x3c100000,0x00000000)}},
+        {VT_exponent,14,0x3b8e,{DOUBLEWITHTWODWORDINTREE(0x3c200000,0x00000000)}},
+        {VT_exponent,14,0x3a82,{DOUBLEWITHTWODWORDINTREE(0x3c300000,0x00000000)}},
+        {VT_exponent,14,0x3b96,{DOUBLEWITHTWODWORDINTREE(0x3c400000,0x00000000)}},
+        {VT_exponent,13,0x68f,{DOUBLEWITHTWODWORDINTREE(0x3c500000,0x00000000)}},
+        {VT_exponent,12,0x3d4,{DOUBLEWITHTWODWORDINTREE(0x3c600000,0x00000000)}},
+        {VT_exponent,13,0x1dca,{DOUBLEWITHTWODWORDINTREE(0x3c700000,0x00000000)}},
+        {VT_exponent,12,0x346,{DOUBLEWITHTWODWORDINTREE(0x3c800000,0x00000000)}},
+        {VT_exponent,12,0xee7,{DOUBLEWITHTWODWORDINTREE(0x3c900000,0x00000000)}},
+        {VT_exponent,12,0xeea,{DOUBLEWITHTWODWORDINTREE(0x3ca00000,0x00000000)}},
+        {VT_exponent,11,0x1ed,{DOUBLEWITHTWODWORDINTREE(0x3cb00000,0x00000000)}},
+        {VT_exponent,12,0x3df,{DOUBLEWITHTWODWORDINTREE(0x3cc00000,0x00000000)}},
+        {VT_exponent,11,0x1a2,{DOUBLEWITHTWODWORDINTREE(0x3cd00000,0x00000000)}},
+        {VT_exponent,11,0x56f,{DOUBLEWITHTWODWORDINTREE(0x3ce00000,0x00000000)}},
+        {VT_exponent,11,0xb9,{DOUBLEWITHTWODWORDINTREE(0x3cf00000,0x00000000)}},
+        {VT_exponent,13,0x7b2,{DOUBLEWITHTWODWORDINTREE(0x3d000000,0x00000000)}},
+        {VT_exponent,13,0x1dd8,{DOUBLEWITHTWODWORDINTREE(0x3d100000,0x00000000)}},
+        {VT_exponent,13,0x15ba,{DOUBLEWITHTWODWORDINTREE(0x3d200000,0x00000000)}},
+        {VT_exponent,12,0xee6,{DOUBLEWITHTWODWORDINTREE(0x3d300000,0x00000000)}},
+        {VT_exponent,13,0x15b8,{DOUBLEWITHTWODWORDINTREE(0x3d400000,0x00000000)}},
+        {VT_exponent,14,0xf79,{DOUBLEWITHTWODWORDINTREE(0x3d500000,0x00000000)}},
+        {VT_exponent,14,0x3a81,{DOUBLEWITHTWODWORDINTREE(0x3d600000,0x00000000)}},
+        {VT_exponent,14,0xd1c,{DOUBLEWITHTWODWORDINTREE(0x3d700000,0x00000000)}},
+        {VT_exponent,15,0x7765,{DOUBLEWITHTWODWORDINTREE(0x3d800000,0x00000000)}},
+        {VT_exponent,14,0xf54,{DOUBLEWITHTWODWORDINTREE(0x3d900000,0x00000000)}},
+        {VT_exponent,13,0x15b9,{DOUBLEWITHTWODWORDINTREE(0x3da00000,0x00000000)}},
+        {VT_exponent,13,0x7ab,{DOUBLEWITHTWODWORDINTREE(0x3db00000,0x00000000)}},
+        {VT_exponent,15,0x7500,{DOUBLEWITHTWODWORDINTREE(0x3dc00000,0x00000000)}},
+        {VT_exponent,15,0x1eaa,{DOUBLEWITHTWODWORDINTREE(0x3dd00000,0x00000000)}},
+        {VT_exponent,15,0x7501,{DOUBLEWITHTWODWORDINTREE(0x3de00000,0x00000000)}},
+        {VT_exponent,15,0x1eab,{DOUBLEWITHTWODWORDINTREE(0x3df00000,0x00000000)}},
+        {VT_exponent,14,0x3b97,{DOUBLEWITHTWODWORDINTREE(0x3e000000,0x00000000)}},
+        {VT_exponent,15,0x752a,{DOUBLEWITHTWODWORDINTREE(0x3e100000,0x00000000)}},
+        {VT_exponent,15,0x77fa,{DOUBLEWITHTWODWORDINTREE(0x3e200000,0x00000000)}},
+        {VT_double,10,0xf4,{DOUBLEWITHTWODWORDINTREE(0x3e35798e,0xe2308c3a)}},
+        {VT_exponent,14,0x3a93,{DOUBLEWITHTWODWORDINTREE(0x3e300000,0x00000000)}},
+        {VT_double,11,0x77c,{DOUBLEWITHTWODWORDINTREE(0x3e45798e,0xe2308c3a)}},
+        {VT_exponent,13,0x1dc6,{DOUBLEWITHTWODWORDINTREE(0x3e400000,0x00000000)}},
+        {VT_exponent,13,0x7bd,{DOUBLEWITHTWODWORDINTREE(0x3e500000,0x00000000)}},
+        {VT_exponent,13,0x1dff,{DOUBLEWITHTWODWORDINTREE(0x3e600000,0x00000000)}},
+        {VT_exponent,12,0xefe,{DOUBLEWITHTWODWORDINTREE(0x3e700000,0x00000000)}},
+        {VT_double,8,0xaf,{DOUBLEWITHTWODWORDINTREE(0x3e8ad7f2,0x9abcaf4a)}},
+        {VT_exponent,12,0xeed,{DOUBLEWITHTWODWORDINTREE(0x3e800000,0x00000000)}},
+        {VT_exponent,11,0xb8,{DOUBLEWITHTWODWORDINTREE(0x3e900000,0x00000000)}},
+        {VT_exponent,12,0x3d8,{DOUBLEWITHTWODWORDINTREE(0x3ea00000,0x00000000)}},
+        {VT_exponent,11,0x1eb,{DOUBLEWITHTWODWORDINTREE(0x3eb00000,0x00000000)}},
+        {VT_double,9,0x1d2,{DOUBLEWITHTWODWORDINTREE(0x3ec0c6f7,0xa0b5ed8e)}},
+        {VT_exponent,13,0x1d4b,{DOUBLEWITHTWODWORDINTREE(0x3ec00000,0x00000000)}},
+        {VT_exponent,13,0x7b3,{DOUBLEWITHTWODWORDINTREE(0x3ed00000,0x00000000)}},
+        {VT_exponent,10,0x5d,{DOUBLEWITHTWODWORDINTREE(0x3ee00000,0x00000000)}},
+        {VT_exponent,12,0xeeb,{DOUBLEWITHTWODWORDINTREE(0x3ef00000,0x00000000)}},
+        {VT_exponent,11,0x1ee,{DOUBLEWITHTWODWORDINTREE(0x3f000000,0x00000000)}},
+        {VT_exponent,10,0x5f,{DOUBLEWITHTWODWORDINTREE(0x3f100000,0x00000000)}},
+        {VT_exponent,10,0x2b6,{DOUBLEWITHTWODWORDINTREE(0x3f200000,0x00000000)}},
+        {VT_exponent,9,0x1de,{DOUBLEWITHTWODWORDINTREE(0x3f300000,0x00000000)}},
+        {VT_double,10,0xd0,{DOUBLEWITHTWODWORDINTREE(0x3f454c98,0x5f06f694)}},
+        {VT_double,6,0x9,{DOUBLEWITHTWODWORDINTREE(0x3f4a36e2,0xeb1c432d)}},
+        {VT_exponent,8,0xe8,{DOUBLEWITHTWODWORDINTREE(0x3f400000,0x00000000)}},
+        {VT_double,4,0xf,{DOUBLEWITHTWODWORDINTREE(0x3f50624d,0xd2f1a9fc)}},
+        {VT_exponent,8,0xae,{DOUBLEWITHTWODWORDINTREE(0x3f500000,0x00000000)}},
+        {VT_double,5,0x16,{DOUBLEWITHTWODWORDINTREE(0x3f60624d,0xd2f1a9fc)}},
+        {VT_exponent,7,0x1b,{DOUBLEWITHTWODWORDINTREE(0x3f600000,0x00000000)}},
+        {VT_exponent,7,0x76,{DOUBLEWITHTWODWORDINTREE(0x3f700000,0x00000000)}},
+        {VT_exponent,7,0xa,{DOUBLEWITHTWODWORDINTREE(0x3f800000,0x00000000)}},
+        {VT_exponent,6,0x8,{DOUBLEWITHTWODWORDINTREE(0x3f900000,0x00000000)}},
+        {VT_exponent,6,0xe,{DOUBLEWITHTWODWORDINTREE(0x3fa00000,0x00000000)}},
+        {VT_double,11,0x751,{DOUBLEWITHTWODWORDINTREE(0x3fbe69ad,0x42c3c9ee)}},
+        {VT_exponent,6,0x4,{DOUBLEWITHTWODWORDINTREE(0x3fb00000,0x00000000)}},
+        {VT_exponent,6,0xc,{DOUBLEWITHTWODWORDINTREE(0x3fc00000,0x00000000)}},
+        {VT_exponent,5,0x3,{DOUBLEWITHTWODWORDINTREE(0x3fd00000,0x00000000)}},
+        {VT_double,11,0x777,{DOUBLEWITHTWODWORDINTREE(0x3fe00000,0x00000000)}},
+        {VT_double,9,0x1d6,{DOUBLEWITHTWODWORDINTREE(0x3fefffff,0xf8000002)}},
+        {VT_exponent,4,0x8,{DOUBLEWITHTWODWORDINTREE(0x3fe00000,0x00000000)}},
+        {VT_double,4,0x0,{DOUBLEWITHTWODWORDINTREE(0x3ff00000,0x00000000)}},
+        {VT_exponent,5,0x13,{DOUBLEWITHTWODWORDINTREE(0x3ff00000,0x00000000)}},
+        {VT_exponent,5,0x1b,{DOUBLEWITHTWODWORDINTREE(0x40000000,0x00000000)}},
+        {VT_double,9,0x15a,{DOUBLEWITHTWODWORDINTREE(0x401921fb,0x54442d18)}},
+        {VT_exponent,5,0x17,{DOUBLEWITHTWODWORDINTREE(0x40100000,0x00000000)}},
+        {VT_exponent,5,0x12,{DOUBLEWITHTWODWORDINTREE(0x40200000,0x00000000)}},
+        {VT_double,11,0x774,{DOUBLEWITHTWODWORDINTREE(0x4035ee14,0x80000000)}},
+        {VT_exponent,5,0x19,{DOUBLEWITHTWODWORDINTREE(0x40300000,0x00000000)}},
+        {VT_double,9,0x1d3,{DOUBLEWITHTWODWORDINTREE(0x404ca5dc,0x1a63c1f8)}},
+        {VT_exponent,5,0x1a,{DOUBLEWITHTWODWORDINTREE(0x40400000,0x00000000)}},
+        {VT_double,11,0x77e,{DOUBLEWITHTWODWORDINTREE(0x405bb32f,0xe0000000)}},
+        {VT_double,10,0x5e,{DOUBLEWITHTWODWORDINTREE(0x405c332f,0xe0000000)}},
+        {VT_exponent,5,0x18,{DOUBLEWITHTWODWORDINTREE(0x40500000,0x00000000)}},
+        {VT_double,9,0x1d7,{DOUBLEWITHTWODWORDINTREE(0x40668000,0x00000000)}},
+        {VT_exponent,5,0x1c,{DOUBLEWITHTWODWORDINTREE(0x40600000,0x00000000)}},
+        {VT_double,9,0x1d5,{DOUBLEWITHTWODWORDINTREE(0x40768000,0x00000000)}},
+        {VT_exponent,5,0x14,{DOUBLEWITHTWODWORDINTREE(0x40700000,0x00000000)}},
+        {VT_double,11,0x77d,{DOUBLEWITHTWODWORDINTREE(0x408f4000,0x00000000)}},
+        {VT_exponent,5,0x5,{DOUBLEWITHTWODWORDINTREE(0x40800000,0x00000000)}},
+        {VT_double,10,0xd2,{DOUBLEWITHTWODWORDINTREE(0x409233ff,0xffffffff)}},
+        {VT_double,8,0x3c,{DOUBLEWITHTWODWORDINTREE(0x40923400,0x00000000)}},
+        {VT_double,11,0x753,{DOUBLEWITHTWODWORDINTREE(0x40923400,0x00000001)}},
+        {VT_double,10,0xd3,{DOUBLEWITHTWODWORDINTREE(0x4092abff,0xffffffff)}},
+        {VT_double,8,0x35,{DOUBLEWITHTWODWORDINTREE(0x4092ac00,0x00000000)}},
+        {VT_double,11,0x770,{DOUBLEWITHTWODWORDINTREE(0x4092ac00,0x00000001)}},
+        {VT_exponent,8,0x16,{DOUBLEWITHTWODWORDINTREE(0x40900000,0x00000000)}},
+        {VT_exponent,12,0xee2,{DOUBLEWITHTWODWORDINTREE(0x40a00000,0x00000000)}},
+        {VT_exponent,12,0xee4,{DOUBLEWITHTWODWORDINTREE(0x40b00000,0x00000000)}},
+        {VT_double,7,0x1f,{DOUBLEWITHTWODWORDINTREE(0x40c81c80,0x00000000)}},
+        {VT_exponent,8,0xac,{DOUBLEWITHTWODWORDINTREE(0x40c00000,0x00000000)}},
+        {VT_exponent,13,0x15bb,{DOUBLEWITHTWODWORDINTREE(0x40d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8667,{DOUBLEWITHTWODWORDINTREE(0x40e00000,0x00000000)}},
+        {VT_exponent,22,0x3a86d8,{DOUBLEWITHTWODWORDINTREE(0x40f00000,0x00000000)}},
+        {VT_exponent,22,0x3a86d9,{DOUBLEWITHTWODWORDINTREE(0x41000000,0x00000000)}},
+        {VT_exponent,22,0x3a86da,{DOUBLEWITHTWODWORDINTREE(0x41100000,0x00000000)}},
+        {VT_exponent,17,0x1dc7e,{DOUBLEWITHTWODWORDINTREE(0x41200000,0x00000000)}},
+        {VT_exponent,22,0x3a86db,{DOUBLEWITHTWODWORDINTREE(0x41300000,0x00000000)}},
+        {VT_exponent,22,0x3a86dc,{DOUBLEWITHTWODWORDINTREE(0x41400000,0x00000000)}},
+        {VT_exponent,22,0x3a86dd,{DOUBLEWITHTWODWORDINTREE(0x41500000,0x00000000)}},
+        {VT_exponent,22,0x3a86de,{DOUBLEWITHTWODWORDINTREE(0x41600000,0x00000000)}},
+        {VT_exponent,22,0x3a86df,{DOUBLEWITHTWODWORDINTREE(0x41700000,0x00000000)}},
+        {VT_exponent,22,0x3a86f0,{DOUBLEWITHTWODWORDINTREE(0x41800000,0x00000000)}},
+        {VT_exponent,22,0x3a86f1,{DOUBLEWITHTWODWORDINTREE(0x41900000,0x00000000)}},
+        {VT_exponent,22,0x3a86f2,{DOUBLEWITHTWODWORDINTREE(0x41a00000,0x00000000)}},
+        {VT_exponent,22,0x3a86f3,{DOUBLEWITHTWODWORDINTREE(0x41b00000,0x00000000)}},
+        {VT_double,6,0x2a,{DOUBLEWITHTWODWORDINTREE(0x41cdcd64,0xff800000)}},
+        {VT_exponent,22,0x3a86f4,{DOUBLEWITHTWODWORDINTREE(0x41c00000,0x00000000)}},
+        {VT_exponent,22,0x3a86f5,{DOUBLEWITHTWODWORDINTREE(0x41d00000,0x00000000)}},
+        {VT_exponent,22,0x3a86f6,{DOUBLEWITHTWODWORDINTREE(0x41e00000,0x00000000)}},
+        {VT_exponent,22,0x3a86f7,{DOUBLEWITHTWODWORDINTREE(0x41f00000,0x00000000)}},
+        {VT_exponent,22,0x3a86f8,{DOUBLEWITHTWODWORDINTREE(0x42000000,0x00000000)}},
+        {VT_exponent,22,0x3a86f9,{DOUBLEWITHTWODWORDINTREE(0x42100000,0x00000000)}},
+        {VT_exponent,22,0x3a86fa,{DOUBLEWITHTWODWORDINTREE(0x42200000,0x00000000)}},
+        {VT_exponent,22,0x3a86fb,{DOUBLEWITHTWODWORDINTREE(0x42300000,0x00000000)}},
+        {VT_exponent,22,0x3a86fc,{DOUBLEWITHTWODWORDINTREE(0x42400000,0x00000000)}},
+        {VT_exponent,22,0x3a86fd,{DOUBLEWITHTWODWORDINTREE(0x42500000,0x00000000)}},
+        {VT_exponent,22,0x3a86fe,{DOUBLEWITHTWODWORDINTREE(0x42600000,0x00000000)}},
+        {VT_exponent,22,0x3a86ff,{DOUBLEWITHTWODWORDINTREE(0x42700000,0x00000000)}},
+        {VT_exponent,22,0x3a8740,{DOUBLEWITHTWODWORDINTREE(0x42800000,0x00000000)}},
+        {VT_exponent,22,0x3a8741,{DOUBLEWITHTWODWORDINTREE(0x42900000,0x00000000)}},
+        {VT_exponent,22,0x3a8742,{DOUBLEWITHTWODWORDINTREE(0x42a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8743,{DOUBLEWITHTWODWORDINTREE(0x42b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8744,{DOUBLEWITHTWODWORDINTREE(0x42c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8745,{DOUBLEWITHTWODWORDINTREE(0x42d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8746,{DOUBLEWITHTWODWORDINTREE(0x42e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8747,{DOUBLEWITHTWODWORDINTREE(0x42f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8748,{DOUBLEWITHTWODWORDINTREE(0x43000000,0x00000000)}},
+        {VT_exponent,22,0x3a8749,{DOUBLEWITHTWODWORDINTREE(0x43100000,0x00000000)}},
+        {VT_exponent,22,0x3a874a,{DOUBLEWITHTWODWORDINTREE(0x43200000,0x00000000)}},
+        {VT_exponent,22,0x3a874b,{DOUBLEWITHTWODWORDINTREE(0x43300000,0x00000000)}},
+        {VT_exponent,22,0x3a874c,{DOUBLEWITHTWODWORDINTREE(0x43400000,0x00000000)}},
+        {VT_exponent,22,0x3a874d,{DOUBLEWITHTWODWORDINTREE(0x43500000,0x00000000)}},
+        {VT_exponent,22,0x3a874e,{DOUBLEWITHTWODWORDINTREE(0x43600000,0x00000000)}},
+        {VT_exponent,22,0x3a874f,{DOUBLEWITHTWODWORDINTREE(0x43700000,0x00000000)}},
+        {VT_exponent,22,0x3a8750,{DOUBLEWITHTWODWORDINTREE(0x43800000,0x00000000)}},
+        {VT_exponent,22,0x3a8751,{DOUBLEWITHTWODWORDINTREE(0x43900000,0x00000000)}},
+        {VT_exponent,22,0x3a8752,{DOUBLEWITHTWODWORDINTREE(0x43a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8753,{DOUBLEWITHTWODWORDINTREE(0x43b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8754,{DOUBLEWITHTWODWORDINTREE(0x43c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8755,{DOUBLEWITHTWODWORDINTREE(0x43d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8756,{DOUBLEWITHTWODWORDINTREE(0x43e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8757,{DOUBLEWITHTWODWORDINTREE(0x43f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8758,{DOUBLEWITHTWODWORDINTREE(0x44000000,0x00000000)}},
+        {VT_exponent,15,0x1a3b,{DOUBLEWITHTWODWORDINTREE(0x44100000,0x00000000)}},
+        {VT_exponent,22,0x3a8759,{DOUBLEWITHTWODWORDINTREE(0x44200000,0x00000000)}},
+        {VT_exponent,22,0x3a875a,{DOUBLEWITHTWODWORDINTREE(0x44300000,0x00000000)}},
+        {VT_exponent,22,0x3a875b,{DOUBLEWITHTWODWORDINTREE(0x44400000,0x00000000)}},
+        {VT_exponent,22,0x3a875c,{DOUBLEWITHTWODWORDINTREE(0x44500000,0x00000000)}},
+        {VT_exponent,22,0x3a875d,{DOUBLEWITHTWODWORDINTREE(0x44600000,0x00000000)}},
+        {VT_exponent,22,0x3a875e,{DOUBLEWITHTWODWORDINTREE(0x44700000,0x00000000)}},
+        {VT_exponent,22,0x3a875f,{DOUBLEWITHTWODWORDINTREE(0x44800000,0x00000000)}},
+        {VT_exponent,22,0x3a8760,{DOUBLEWITHTWODWORDINTREE(0x44900000,0x00000000)}},
+        {VT_exponent,22,0x3a8761,{DOUBLEWITHTWODWORDINTREE(0x44a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8762,{DOUBLEWITHTWODWORDINTREE(0x44b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8763,{DOUBLEWITHTWODWORDINTREE(0x44c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8764,{DOUBLEWITHTWODWORDINTREE(0x44d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8765,{DOUBLEWITHTWODWORDINTREE(0x44e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8766,{DOUBLEWITHTWODWORDINTREE(0x44f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8767,{DOUBLEWITHTWODWORDINTREE(0x45000000,0x00000000)}},
+        {VT_exponent,22,0x3a8768,{DOUBLEWITHTWODWORDINTREE(0x45100000,0x00000000)}},
+        {VT_exponent,22,0x3a8769,{DOUBLEWITHTWODWORDINTREE(0x45200000,0x00000000)}},
+        {VT_exponent,22,0x3a876a,{DOUBLEWITHTWODWORDINTREE(0x45300000,0x00000000)}},
+        {VT_exponent,22,0x3a876b,{DOUBLEWITHTWODWORDINTREE(0x45400000,0x00000000)}},
+        {VT_exponent,22,0x3a876c,{DOUBLEWITHTWODWORDINTREE(0x45500000,0x00000000)}},
+        {VT_exponent,22,0x3a876d,{DOUBLEWITHTWODWORDINTREE(0x45600000,0x00000000)}},
+        {VT_exponent,22,0x3a876e,{DOUBLEWITHTWODWORDINTREE(0x45700000,0x00000000)}},
+        {VT_exponent,22,0x3a876f,{DOUBLEWITHTWODWORDINTREE(0x45800000,0x00000000)}},
+        {VT_exponent,22,0x3a8770,{DOUBLEWITHTWODWORDINTREE(0x45900000,0x00000000)}},
+        {VT_exponent,22,0x3a8771,{DOUBLEWITHTWODWORDINTREE(0x45a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8772,{DOUBLEWITHTWODWORDINTREE(0x45b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8773,{DOUBLEWITHTWODWORDINTREE(0x45c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8774,{DOUBLEWITHTWODWORDINTREE(0x45d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8775,{DOUBLEWITHTWODWORDINTREE(0x45e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8776,{DOUBLEWITHTWODWORDINTREE(0x45f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8777,{DOUBLEWITHTWODWORDINTREE(0x46000000,0x00000000)}},
+        {VT_exponent,22,0x3a8778,{DOUBLEWITHTWODWORDINTREE(0x46100000,0x00000000)}},
+        {VT_exponent,22,0x3a8779,{DOUBLEWITHTWODWORDINTREE(0x46200000,0x00000000)}},
+        {VT_exponent,22,0x3a877a,{DOUBLEWITHTWODWORDINTREE(0x46300000,0x00000000)}},
+        {VT_exponent,22,0x3a877b,{DOUBLEWITHTWODWORDINTREE(0x46400000,0x00000000)}},
+        {VT_exponent,22,0x3a877c,{DOUBLEWITHTWODWORDINTREE(0x46500000,0x00000000)}},
+        {VT_exponent,22,0x3a877d,{DOUBLEWITHTWODWORDINTREE(0x46600000,0x00000000)}},
+        {VT_exponent,22,0x3a877e,{DOUBLEWITHTWODWORDINTREE(0x46700000,0x00000000)}},
+        {VT_exponent,22,0x3a877f,{DOUBLEWITHTWODWORDINTREE(0x46800000,0x00000000)}},
+        {VT_exponent,22,0x3a8780,{DOUBLEWITHTWODWORDINTREE(0x46900000,0x00000000)}},
+        {VT_exponent,22,0x3a8781,{DOUBLEWITHTWODWORDINTREE(0x46a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8782,{DOUBLEWITHTWODWORDINTREE(0x46b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8783,{DOUBLEWITHTWODWORDINTREE(0x46c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8784,{DOUBLEWITHTWODWORDINTREE(0x46d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8785,{DOUBLEWITHTWODWORDINTREE(0x46e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8786,{DOUBLEWITHTWODWORDINTREE(0x46f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8787,{DOUBLEWITHTWODWORDINTREE(0x47000000,0x00000000)}},
+        {VT_exponent,22,0x3a8788,{DOUBLEWITHTWODWORDINTREE(0x47100000,0x00000000)}},
+        {VT_exponent,22,0x3a8789,{DOUBLEWITHTWODWORDINTREE(0x47200000,0x00000000)}},
+        {VT_exponent,22,0x3a878a,{DOUBLEWITHTWODWORDINTREE(0x47300000,0x00000000)}},
+        {VT_exponent,22,0x3a878b,{DOUBLEWITHTWODWORDINTREE(0x47400000,0x00000000)}},
+        {VT_exponent,22,0x3a878c,{DOUBLEWITHTWODWORDINTREE(0x47500000,0x00000000)}},
+        {VT_exponent,22,0x3a878d,{DOUBLEWITHTWODWORDINTREE(0x47600000,0x00000000)}},
+        {VT_exponent,22,0x3a878e,{DOUBLEWITHTWODWORDINTREE(0x47700000,0x00000000)}},
+        {VT_exponent,22,0x3a878f,{DOUBLEWITHTWODWORDINTREE(0x47800000,0x00000000)}},
+        {VT_exponent,22,0x3a8790,{DOUBLEWITHTWODWORDINTREE(0x47900000,0x00000000)}},
+        {VT_exponent,22,0x3a8791,{DOUBLEWITHTWODWORDINTREE(0x47a00000,0x00000000)}},
+        {VT_exponent,22,0x3a8792,{DOUBLEWITHTWODWORDINTREE(0x47b00000,0x00000000)}},
+        {VT_exponent,22,0x3a8793,{DOUBLEWITHTWODWORDINTREE(0x47c00000,0x00000000)}},
+        {VT_exponent,22,0x3a8794,{DOUBLEWITHTWODWORDINTREE(0x47d00000,0x00000000)}},
+        {VT_exponent,22,0x3a8795,{DOUBLEWITHTWODWORDINTREE(0x47e00000,0x00000000)}},
+        {VT_exponent,22,0x3a8796,{DOUBLEWITHTWODWORDINTREE(0x47f00000,0x00000000)}},
+        {VT_exponent,22,0x3a8797,{DOUBLEWITHTWODWORDINTREE(0x48000000,0x00000000)}},
+        {VT_exponent,22,0x3a8798,{DOUBLEWITHTWODWORDINTREE(0x48100000,0x00000000)}},
+        {VT_exponent,22,0x3a8799,{DOUBLEWITHTWODWORDINTREE(0x48200000,0x00000000)}},
+        {VT_exponent,22,0x3a879a,{DOUBLEWITHTWODWORDINTREE(0x48300000,0x00000000)}},
+        {VT_exponent,22,0x3a879b,{DOUBLEWITHTWODWORDINTREE(0x48400000,0x00000000)}},
+        {VT_exponent,22,0x3a879c,{DOUBLEWITHTWODWORDINTREE(0x48500000,0x00000000)}},
+        {VT_exponent,22,0x3a879d,{DOUBLEWITHTWODWORDINTREE(0x48600000,0x00000000)}},
+        {VT_exponent,22,0x3a879e,{DOUBLEWITHTWODWORDINTREE(0x48700000,0x00000000)}},
+        {VT_exponent,22,0x3a879f,{DOUBLEWITHTWODWORDINTREE(0x48800000,0x00000000)}},
+        {VT_exponent,22,0x3a87a0,{DOUBLEWITHTWODWORDINTREE(0x48900000,0x00000000)}},
+        {VT_exponent,22,0x3a87a1,{DOUBLEWITHTWODWORDINTREE(0x48a00000,0x00000000)}},
+        {VT_exponent,22,0x3a87a2,{DOUBLEWITHTWODWORDINTREE(0x48b00000,0x00000000)}},
+        {VT_exponent,22,0x3a87a3,{DOUBLEWITHTWODWORDINTREE(0x48c00000,0x00000000)}},
+        {VT_exponent,22,0x3a87a4,{DOUBLEWITHTWODWORDINTREE(0x48d00000,0x00000000)}},
+        {VT_exponent,22,0x3a87a5,{DOUBLEWITHTWODWORDINTREE(0x48e00000,0x00000000)}},
+        {VT_exponent,22,0x3a87a6,{DOUBLEWITHTWODWORDINTREE(0x48f00000,0x00000000)}},
+        {VT_exponent,22,0x3a87a7,{DOUBLEWITHTWODWORDINTREE(0x49000000,0x00000000)}},
+        {VT_exponent,22,0x3a87a8,{DOUBLEWITHTWODWORDINTREE(0x49100000,0x00000000)}},
+        {VT_exponent,22,0x3a87a9,{DOUBLEWITHTWODWORDINTREE(0x49200000,0x00000000)}},
+        {VT_exponent,22,0x3a87aa,{DOUBLEWITHTWODWORDINTREE(0x49300000,0x00000000)}},
+        {VT_exponent,22,0x3a87ab,{DOUBLEWITHTWODWORDINTREE(0x49400000,0x00000000)}},
+        {VT_exponent,22,0x3a87ac,{DOUBLEWITHTWODWORDINTREE(0x49500000,0x00000000)}},
+        {VT_exponent,22,0x3a87ad,{DOUBLEWITHTWODWORDINTREE(0x49600000,0x00000000)}},
+        {VT_exponent,22,0x3a87ae,{DOUBLEWITHTWODWORDINTREE(0x49700000,0x00000000)}},
+        {VT_exponent,22,0x3a87af,{DOUBLEWITHTWODWORDINTREE(0x49800000,0x00000000)}},
+        {VT_exponent,22,0x3a87b0,{DOUBLEWITHTWODWORDINTREE(0x49900000,0x00000000)}},
+        {VT_exponent,22,0x3a87b1,{DOUBLEWITHTWODWORDINTREE(0x49a00000,0x00000000)}},
+        {VT_exponent,22,0x3a87b2,{DOUBLEWITHTWODWORDINTREE(0x49b00000,0x00000000)}},
+        {VT_exponent,22,0x3a87b3,{DOUBLEWITHTWODWORDINTREE(0x49c00000,0x00000000)}},
+        {VT_exponent,22,0x3a87b4,{DOUBLEWITHTWODWORDINTREE(0x49d00000,0x00000000)}},
+        {VT_exponent,22,0x3a87b5,{DOUBLEWITHTWODWORDINTREE(0x49e00000,0x00000000)}},
+        {VT_exponent,22,0x3a87b6,{DOUBLEWITHTWODWORDINTREE(0x49f00000,0x00000000)}},
+        {VT_exponent,22,0x3a87b7,{DOUBLEWITHTWODWORDINTREE(0x4a000000,0x00000000)}},
+        {VT_exponent,22,0x3a87b8,{DOUBLEWITHTWODWORDINTREE(0x4a100000,0x00000000)}},
+        {VT_exponent,22,0x3a87b9,{DOUBLEWITHTWODWORDINTREE(0x4a200000,0x00000000)}},
+        {VT_exponent,22,0x3a87ba,{DOUBLEWITHTWODWORDINTREE(0x4a300000,0x00000000)}},
+        {VT_exponent,22,0x3a87bb,{DOUBLEWITHTWODWORDINTREE(0x4a400000,0x00000000)}},
+        {VT_exponent,22,0x3a87bc,{DOUBLEWITHTWODWORDINTREE(0x4a500000,0x00000000)}},
+        {VT_exponent,22,0x3a87bd,{DOUBLEWITHTWODWORDINTREE(0x4a600000,0x00000000)}},
+        {VT_exponent,22,0x3a87be,{DOUBLEWITHTWODWORDINTREE(0x4a700000,0x00000000)}},
+        {VT_exponent,22,0x3a87bf,{DOUBLEWITHTWODWORDINTREE(0x4a800000,0x00000000)}},
+        {VT_exponent,22,0x3a87c0,{DOUBLEWITHTWODWORDINTREE(0x4a900000,0x00000000)}},
+        {VT_exponent,22,0x3a87c1,{DOUBLEWITHTWODWORDINTREE(0x4aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a87c2,{DOUBLEWITHTWODWORDINTREE(0x4ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a87c3,{DOUBLEWITHTWODWORDINTREE(0x4ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a87c4,{DOUBLEWITHTWODWORDINTREE(0x4ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a87c5,{DOUBLEWITHTWODWORDINTREE(0x4ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a87c6,{DOUBLEWITHTWODWORDINTREE(0x4af00000,0x00000000)}},
+        {VT_exponent,22,0x3a87c7,{DOUBLEWITHTWODWORDINTREE(0x4b000000,0x00000000)}},
+        {VT_exponent,22,0x3a87c8,{DOUBLEWITHTWODWORDINTREE(0x4b100000,0x00000000)}},
+        {VT_exponent,22,0x3a87c9,{DOUBLEWITHTWODWORDINTREE(0x4b200000,0x00000000)}},
+        {VT_exponent,22,0x3a87ca,{DOUBLEWITHTWODWORDINTREE(0x4b300000,0x00000000)}},
+        {VT_exponent,22,0x3a87cb,{DOUBLEWITHTWODWORDINTREE(0x4b400000,0x00000000)}},
+        {VT_exponent,22,0x3a87cc,{DOUBLEWITHTWODWORDINTREE(0x4b500000,0x00000000)}},
+        {VT_exponent,22,0x3a87cd,{DOUBLEWITHTWODWORDINTREE(0x4b600000,0x00000000)}},
+        {VT_exponent,22,0x3a87ce,{DOUBLEWITHTWODWORDINTREE(0x4b700000,0x00000000)}},
+        {VT_exponent,22,0x3a87cf,{DOUBLEWITHTWODWORDINTREE(0x4b800000,0x00000000)}},
+        {VT_exponent,22,0x3a87d0,{DOUBLEWITHTWODWORDINTREE(0x4b900000,0x00000000)}},
+        {VT_exponent,22,0x3a87d1,{DOUBLEWITHTWODWORDINTREE(0x4ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a87d2,{DOUBLEWITHTWODWORDINTREE(0x4bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a87d3,{DOUBLEWITHTWODWORDINTREE(0x4bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a87d4,{DOUBLEWITHTWODWORDINTREE(0x4bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a87d5,{DOUBLEWITHTWODWORDINTREE(0x4be00000,0x00000000)}},
+        {VT_exponent,22,0x3a87d6,{DOUBLEWITHTWODWORDINTREE(0x4bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a87d7,{DOUBLEWITHTWODWORDINTREE(0x4c000000,0x00000000)}},
+        {VT_exponent,22,0x3a87d8,{DOUBLEWITHTWODWORDINTREE(0x4c100000,0x00000000)}},
+        {VT_exponent,22,0x3a87d9,{DOUBLEWITHTWODWORDINTREE(0x4c200000,0x00000000)}},
+        {VT_exponent,22,0x3a87da,{DOUBLEWITHTWODWORDINTREE(0x4c300000,0x00000000)}},
+        {VT_exponent,22,0x3a87db,{DOUBLEWITHTWODWORDINTREE(0x4c400000,0x00000000)}},
+        {VT_exponent,22,0x3a87dc,{DOUBLEWITHTWODWORDINTREE(0x4c500000,0x00000000)}},
+        {VT_exponent,22,0x3a87dd,{DOUBLEWITHTWODWORDINTREE(0x4c600000,0x00000000)}},
+        {VT_exponent,22,0x3a87de,{DOUBLEWITHTWODWORDINTREE(0x4c700000,0x00000000)}},
+        {VT_exponent,22,0x3a87df,{DOUBLEWITHTWODWORDINTREE(0x4c800000,0x00000000)}},
+        {VT_exponent,22,0x3a87e0,{DOUBLEWITHTWODWORDINTREE(0x4c900000,0x00000000)}},
+        {VT_exponent,22,0x3a87e1,{DOUBLEWITHTWODWORDINTREE(0x4ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a87e2,{DOUBLEWITHTWODWORDINTREE(0x4cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a87e3,{DOUBLEWITHTWODWORDINTREE(0x4cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a87e4,{DOUBLEWITHTWODWORDINTREE(0x4cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a87e5,{DOUBLEWITHTWODWORDINTREE(0x4ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a87e6,{DOUBLEWITHTWODWORDINTREE(0x4cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a87e7,{DOUBLEWITHTWODWORDINTREE(0x4d000000,0x00000000)}},
+        {VT_exponent,22,0x3a87e8,{DOUBLEWITHTWODWORDINTREE(0x4d100000,0x00000000)}},
+        {VT_exponent,22,0x3a87e9,{DOUBLEWITHTWODWORDINTREE(0x4d200000,0x00000000)}},
+        {VT_exponent,22,0x3a87ea,{DOUBLEWITHTWODWORDINTREE(0x4d300000,0x00000000)}},
+        {VT_exponent,22,0x3a87eb,{DOUBLEWITHTWODWORDINTREE(0x4d400000,0x00000000)}},
+        {VT_exponent,22,0x3a87ec,{DOUBLEWITHTWODWORDINTREE(0x4d500000,0x00000000)}},
+        {VT_exponent,22,0x3a87ed,{DOUBLEWITHTWODWORDINTREE(0x4d600000,0x00000000)}},
+        {VT_exponent,22,0x3a87ee,{DOUBLEWITHTWODWORDINTREE(0x4d700000,0x00000000)}},
+        {VT_exponent,22,0x3a87ef,{DOUBLEWITHTWODWORDINTREE(0x4d800000,0x00000000)}},
+        {VT_exponent,22,0x3a87f0,{DOUBLEWITHTWODWORDINTREE(0x4d900000,0x00000000)}},
+        {VT_exponent,22,0x3a87f1,{DOUBLEWITHTWODWORDINTREE(0x4da00000,0x00000000)}},
+        {VT_exponent,22,0x3a87f2,{DOUBLEWITHTWODWORDINTREE(0x4db00000,0x00000000)}},
+        {VT_exponent,22,0x3a87f3,{DOUBLEWITHTWODWORDINTREE(0x4dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a87f4,{DOUBLEWITHTWODWORDINTREE(0x4dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a87f5,{DOUBLEWITHTWODWORDINTREE(0x4de00000,0x00000000)}},
+        {VT_exponent,22,0x3a87f6,{DOUBLEWITHTWODWORDINTREE(0x4df00000,0x00000000)}},
+        {VT_exponent,22,0x3a87f7,{DOUBLEWITHTWODWORDINTREE(0x4e000000,0x00000000)}},
+        {VT_exponent,22,0x3a87f8,{DOUBLEWITHTWODWORDINTREE(0x4e100000,0x00000000)}},
+        {VT_exponent,22,0x3a87f9,{DOUBLEWITHTWODWORDINTREE(0x4e200000,0x00000000)}},
+        {VT_exponent,22,0x3a87fa,{DOUBLEWITHTWODWORDINTREE(0x4e300000,0x00000000)}},
+        {VT_exponent,22,0x3a87fb,{DOUBLEWITHTWODWORDINTREE(0x4e400000,0x00000000)}},
+        {VT_exponent,22,0x3a87fc,{DOUBLEWITHTWODWORDINTREE(0x4e500000,0x00000000)}},
+        {VT_exponent,22,0x3a87fd,{DOUBLEWITHTWODWORDINTREE(0x4e600000,0x00000000)}},
+        {VT_exponent,22,0x3a87fe,{DOUBLEWITHTWODWORDINTREE(0x4e700000,0x00000000)}},
+        {VT_exponent,22,0x3a87ff,{DOUBLEWITHTWODWORDINTREE(0x4e800000,0x00000000)}},
+        {VT_exponent,22,0x3a9000,{DOUBLEWITHTWODWORDINTREE(0x4e900000,0x00000000)}},
+        {VT_exponent,22,0x3a9001,{DOUBLEWITHTWODWORDINTREE(0x4ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a9002,{DOUBLEWITHTWODWORDINTREE(0x4eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a9003,{DOUBLEWITHTWODWORDINTREE(0x4ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a9004,{DOUBLEWITHTWODWORDINTREE(0x4ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a9005,{DOUBLEWITHTWODWORDINTREE(0x4ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a9006,{DOUBLEWITHTWODWORDINTREE(0x4ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a9007,{DOUBLEWITHTWODWORDINTREE(0x4f000000,0x00000000)}},
+        {VT_exponent,22,0x3a9008,{DOUBLEWITHTWODWORDINTREE(0x4f100000,0x00000000)}},
+        {VT_exponent,22,0x3a9009,{DOUBLEWITHTWODWORDINTREE(0x4f200000,0x00000000)}},
+        {VT_exponent,22,0x3a900a,{DOUBLEWITHTWODWORDINTREE(0x4f300000,0x00000000)}},
+        {VT_exponent,22,0x3a900b,{DOUBLEWITHTWODWORDINTREE(0x4f400000,0x00000000)}},
+        {VT_exponent,22,0x3a900c,{DOUBLEWITHTWODWORDINTREE(0x4f500000,0x00000000)}},
+        {VT_exponent,22,0x3a900d,{DOUBLEWITHTWODWORDINTREE(0x4f600000,0x00000000)}},
+        {VT_exponent,22,0x3a900e,{DOUBLEWITHTWODWORDINTREE(0x4f700000,0x00000000)}},
+        {VT_exponent,22,0x3a900f,{DOUBLEWITHTWODWORDINTREE(0x4f800000,0x00000000)}},
+        {VT_exponent,22,0x3a9010,{DOUBLEWITHTWODWORDINTREE(0x4f900000,0x00000000)}},
+        {VT_exponent,22,0x3a9011,{DOUBLEWITHTWODWORDINTREE(0x4fa00000,0x00000000)}},
+        {VT_exponent,22,0x3a9012,{DOUBLEWITHTWODWORDINTREE(0x4fb00000,0x00000000)}},
+        {VT_exponent,22,0x3a9013,{DOUBLEWITHTWODWORDINTREE(0x4fc00000,0x00000000)}},
+        {VT_exponent,22,0x3a9014,{DOUBLEWITHTWODWORDINTREE(0x4fd00000,0x00000000)}},
+        {VT_exponent,22,0x3a9015,{DOUBLEWITHTWODWORDINTREE(0x4fe00000,0x00000000)}},
+        {VT_exponent,22,0x3a9016,{DOUBLEWITHTWODWORDINTREE(0x4ff00000,0x00000000)}},
+        {VT_exponent,22,0x3a9017,{DOUBLEWITHTWODWORDINTREE(0x50000000,0x00000000)}},
+        {VT_exponent,22,0x3a9018,{DOUBLEWITHTWODWORDINTREE(0x50100000,0x00000000)}},
+        {VT_exponent,22,0x3a9019,{DOUBLEWITHTWODWORDINTREE(0x50200000,0x00000000)}},
+        {VT_exponent,22,0x3a901a,{DOUBLEWITHTWODWORDINTREE(0x50300000,0x00000000)}},
+        {VT_exponent,22,0x3a901b,{DOUBLEWITHTWODWORDINTREE(0x50400000,0x00000000)}},
+        {VT_exponent,22,0x3a901c,{DOUBLEWITHTWODWORDINTREE(0x50500000,0x00000000)}},
+        {VT_exponent,22,0x3a901d,{DOUBLEWITHTWODWORDINTREE(0x50600000,0x00000000)}},
+        {VT_exponent,22,0x3a901e,{DOUBLEWITHTWODWORDINTREE(0x50700000,0x00000000)}},
+        {VT_exponent,22,0x3a901f,{DOUBLEWITHTWODWORDINTREE(0x50800000,0x00000000)}},
+        {VT_exponent,22,0x3a9020,{DOUBLEWITHTWODWORDINTREE(0x50900000,0x00000000)}},
+        {VT_exponent,22,0x3a9021,{DOUBLEWITHTWODWORDINTREE(0x50a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9022,{DOUBLEWITHTWODWORDINTREE(0x50b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9023,{DOUBLEWITHTWODWORDINTREE(0x50c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9024,{DOUBLEWITHTWODWORDINTREE(0x50d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9025,{DOUBLEWITHTWODWORDINTREE(0x50e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9026,{DOUBLEWITHTWODWORDINTREE(0x50f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9027,{DOUBLEWITHTWODWORDINTREE(0x51000000,0x00000000)}},
+        {VT_exponent,22,0x3a9028,{DOUBLEWITHTWODWORDINTREE(0x51100000,0x00000000)}},
+        {VT_exponent,22,0x3a9029,{DOUBLEWITHTWODWORDINTREE(0x51200000,0x00000000)}},
+        {VT_exponent,22,0x3a902a,{DOUBLEWITHTWODWORDINTREE(0x51300000,0x00000000)}},
+        {VT_exponent,22,0x3a902b,{DOUBLEWITHTWODWORDINTREE(0x51400000,0x00000000)}},
+        {VT_exponent,22,0x3a902c,{DOUBLEWITHTWODWORDINTREE(0x51500000,0x00000000)}},
+        {VT_exponent,22,0x3a902d,{DOUBLEWITHTWODWORDINTREE(0x51600000,0x00000000)}},
+        {VT_exponent,22,0x3a902e,{DOUBLEWITHTWODWORDINTREE(0x51700000,0x00000000)}},
+        {VT_exponent,22,0x3a902f,{DOUBLEWITHTWODWORDINTREE(0x51800000,0x00000000)}},
+        {VT_exponent,22,0x3a9030,{DOUBLEWITHTWODWORDINTREE(0x51900000,0x00000000)}},
+        {VT_exponent,22,0x3a9031,{DOUBLEWITHTWODWORDINTREE(0x51a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9032,{DOUBLEWITHTWODWORDINTREE(0x51b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9033,{DOUBLEWITHTWODWORDINTREE(0x51c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9034,{DOUBLEWITHTWODWORDINTREE(0x51d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9035,{DOUBLEWITHTWODWORDINTREE(0x51e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9036,{DOUBLEWITHTWODWORDINTREE(0x51f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9037,{DOUBLEWITHTWODWORDINTREE(0x52000000,0x00000000)}},
+        {VT_exponent,22,0x3a9038,{DOUBLEWITHTWODWORDINTREE(0x52100000,0x00000000)}},
+        {VT_exponent,22,0x3a9039,{DOUBLEWITHTWODWORDINTREE(0x52200000,0x00000000)}},
+        {VT_exponent,22,0x3a903a,{DOUBLEWITHTWODWORDINTREE(0x52300000,0x00000000)}},
+        {VT_exponent,22,0x3a903b,{DOUBLEWITHTWODWORDINTREE(0x52400000,0x00000000)}},
+        {VT_exponent,22,0x3a903c,{DOUBLEWITHTWODWORDINTREE(0x52500000,0x00000000)}},
+        {VT_exponent,22,0x3a903d,{DOUBLEWITHTWODWORDINTREE(0x52600000,0x00000000)}},
+        {VT_exponent,22,0x3a903e,{DOUBLEWITHTWODWORDINTREE(0x52700000,0x00000000)}},
+        {VT_exponent,22,0x3a903f,{DOUBLEWITHTWODWORDINTREE(0x52800000,0x00000000)}},
+        {VT_exponent,22,0x3a9040,{DOUBLEWITHTWODWORDINTREE(0x52900000,0x00000000)}},
+        {VT_exponent,22,0x3a9041,{DOUBLEWITHTWODWORDINTREE(0x52a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9042,{DOUBLEWITHTWODWORDINTREE(0x52b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9043,{DOUBLEWITHTWODWORDINTREE(0x52c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9044,{DOUBLEWITHTWODWORDINTREE(0x52d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9045,{DOUBLEWITHTWODWORDINTREE(0x52e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9046,{DOUBLEWITHTWODWORDINTREE(0x52f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9047,{DOUBLEWITHTWODWORDINTREE(0x53000000,0x00000000)}},
+        {VT_exponent,22,0x3a9048,{DOUBLEWITHTWODWORDINTREE(0x53100000,0x00000000)}},
+        {VT_exponent,22,0x3a9049,{DOUBLEWITHTWODWORDINTREE(0x53200000,0x00000000)}},
+        {VT_exponent,22,0x3a904a,{DOUBLEWITHTWODWORDINTREE(0x53300000,0x00000000)}},
+        {VT_exponent,22,0x3a904b,{DOUBLEWITHTWODWORDINTREE(0x53400000,0x00000000)}},
+        {VT_exponent,22,0x3a904c,{DOUBLEWITHTWODWORDINTREE(0x53500000,0x00000000)}},
+        {VT_exponent,22,0x3a904d,{DOUBLEWITHTWODWORDINTREE(0x53600000,0x00000000)}},
+        {VT_exponent,22,0x3a904e,{DOUBLEWITHTWODWORDINTREE(0x53700000,0x00000000)}},
+        {VT_exponent,22,0x3a904f,{DOUBLEWITHTWODWORDINTREE(0x53800000,0x00000000)}},
+        {VT_exponent,22,0x3a9050,{DOUBLEWITHTWODWORDINTREE(0x53900000,0x00000000)}},
+        {VT_exponent,22,0x3a9051,{DOUBLEWITHTWODWORDINTREE(0x53a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9052,{DOUBLEWITHTWODWORDINTREE(0x53b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9053,{DOUBLEWITHTWODWORDINTREE(0x53c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9054,{DOUBLEWITHTWODWORDINTREE(0x53d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9055,{DOUBLEWITHTWODWORDINTREE(0x53e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9056,{DOUBLEWITHTWODWORDINTREE(0x53f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9057,{DOUBLEWITHTWODWORDINTREE(0x54000000,0x00000000)}},
+        {VT_exponent,22,0x3a9058,{DOUBLEWITHTWODWORDINTREE(0x54100000,0x00000000)}},
+        {VT_exponent,22,0x3a9059,{DOUBLEWITHTWODWORDINTREE(0x54200000,0x00000000)}},
+        {VT_exponent,22,0x3a905a,{DOUBLEWITHTWODWORDINTREE(0x54300000,0x00000000)}},
+        {VT_exponent,22,0x3a905b,{DOUBLEWITHTWODWORDINTREE(0x54400000,0x00000000)}},
+        {VT_exponent,22,0x3a905c,{DOUBLEWITHTWODWORDINTREE(0x54500000,0x00000000)}},
+        {VT_exponent,22,0x3a905d,{DOUBLEWITHTWODWORDINTREE(0x54600000,0x00000000)}},
+        {VT_exponent,22,0x3a905e,{DOUBLEWITHTWODWORDINTREE(0x54700000,0x00000000)}},
+        {VT_exponent,22,0x3a905f,{DOUBLEWITHTWODWORDINTREE(0x54800000,0x00000000)}},
+        {VT_exponent,22,0x3a9060,{DOUBLEWITHTWODWORDINTREE(0x54900000,0x00000000)}},
+        {VT_exponent,22,0x3a9061,{DOUBLEWITHTWODWORDINTREE(0x54a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9062,{DOUBLEWITHTWODWORDINTREE(0x54b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9063,{DOUBLEWITHTWODWORDINTREE(0x54c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9064,{DOUBLEWITHTWODWORDINTREE(0x54d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9065,{DOUBLEWITHTWODWORDINTREE(0x54e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9066,{DOUBLEWITHTWODWORDINTREE(0x54f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9067,{DOUBLEWITHTWODWORDINTREE(0x55000000,0x00000000)}},
+        {VT_exponent,22,0x3a9068,{DOUBLEWITHTWODWORDINTREE(0x55100000,0x00000000)}},
+        {VT_exponent,22,0x3a9069,{DOUBLEWITHTWODWORDINTREE(0x55200000,0x00000000)}},
+        {VT_exponent,22,0x3a906a,{DOUBLEWITHTWODWORDINTREE(0x55300000,0x00000000)}},
+        {VT_exponent,22,0x3a906b,{DOUBLEWITHTWODWORDINTREE(0x55400000,0x00000000)}},
+        {VT_exponent,22,0x3a906c,{DOUBLEWITHTWODWORDINTREE(0x55500000,0x00000000)}},
+        {VT_exponent,22,0x3a906d,{DOUBLEWITHTWODWORDINTREE(0x55600000,0x00000000)}},
+        {VT_exponent,22,0x3a906e,{DOUBLEWITHTWODWORDINTREE(0x55700000,0x00000000)}},
+        {VT_exponent,22,0x3a906f,{DOUBLEWITHTWODWORDINTREE(0x55800000,0x00000000)}},
+        {VT_exponent,22,0x3a9070,{DOUBLEWITHTWODWORDINTREE(0x55900000,0x00000000)}},
+        {VT_exponent,22,0x3a9071,{DOUBLEWITHTWODWORDINTREE(0x55a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9072,{DOUBLEWITHTWODWORDINTREE(0x55b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9073,{DOUBLEWITHTWODWORDINTREE(0x55c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9074,{DOUBLEWITHTWODWORDINTREE(0x55d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9075,{DOUBLEWITHTWODWORDINTREE(0x55e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9076,{DOUBLEWITHTWODWORDINTREE(0x55f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9077,{DOUBLEWITHTWODWORDINTREE(0x56000000,0x00000000)}},
+        {VT_exponent,22,0x3a9078,{DOUBLEWITHTWODWORDINTREE(0x56100000,0x00000000)}},
+        {VT_exponent,22,0x3a9079,{DOUBLEWITHTWODWORDINTREE(0x56200000,0x00000000)}},
+        {VT_exponent,22,0x3a907a,{DOUBLEWITHTWODWORDINTREE(0x56300000,0x00000000)}},
+        {VT_exponent,22,0x3a907b,{DOUBLEWITHTWODWORDINTREE(0x56400000,0x00000000)}},
+        {VT_exponent,22,0x3a907c,{DOUBLEWITHTWODWORDINTREE(0x56500000,0x00000000)}},
+        {VT_exponent,22,0x3a907d,{DOUBLEWITHTWODWORDINTREE(0x56600000,0x00000000)}},
+        {VT_exponent,22,0x3a907e,{DOUBLEWITHTWODWORDINTREE(0x56700000,0x00000000)}},
+        {VT_exponent,22,0x3a907f,{DOUBLEWITHTWODWORDINTREE(0x56800000,0x00000000)}},
+        {VT_exponent,22,0x3a9080,{DOUBLEWITHTWODWORDINTREE(0x56900000,0x00000000)}},
+        {VT_exponent,22,0x3a9081,{DOUBLEWITHTWODWORDINTREE(0x56a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9082,{DOUBLEWITHTWODWORDINTREE(0x56b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9083,{DOUBLEWITHTWODWORDINTREE(0x56c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9084,{DOUBLEWITHTWODWORDINTREE(0x56d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9085,{DOUBLEWITHTWODWORDINTREE(0x56e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9086,{DOUBLEWITHTWODWORDINTREE(0x56f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9087,{DOUBLEWITHTWODWORDINTREE(0x57000000,0x00000000)}},
+        {VT_exponent,22,0x3a9088,{DOUBLEWITHTWODWORDINTREE(0x57100000,0x00000000)}},
+        {VT_exponent,22,0x3a9089,{DOUBLEWITHTWODWORDINTREE(0x57200000,0x00000000)}},
+        {VT_exponent,22,0x3a908a,{DOUBLEWITHTWODWORDINTREE(0x57300000,0x00000000)}},
+        {VT_exponent,22,0x3a908b,{DOUBLEWITHTWODWORDINTREE(0x57400000,0x00000000)}},
+        {VT_exponent,22,0x3a908c,{DOUBLEWITHTWODWORDINTREE(0x57500000,0x00000000)}},
+        {VT_exponent,22,0x3a908d,{DOUBLEWITHTWODWORDINTREE(0x57600000,0x00000000)}},
+        {VT_exponent,22,0x3a908e,{DOUBLEWITHTWODWORDINTREE(0x57700000,0x00000000)}},
+        {VT_exponent,22,0x3a908f,{DOUBLEWITHTWODWORDINTREE(0x57800000,0x00000000)}},
+        {VT_exponent,22,0x3a9090,{DOUBLEWITHTWODWORDINTREE(0x57900000,0x00000000)}},
+        {VT_exponent,22,0x3a9091,{DOUBLEWITHTWODWORDINTREE(0x57a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9092,{DOUBLEWITHTWODWORDINTREE(0x57b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9093,{DOUBLEWITHTWODWORDINTREE(0x57c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9094,{DOUBLEWITHTWODWORDINTREE(0x57d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9095,{DOUBLEWITHTWODWORDINTREE(0x57e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9096,{DOUBLEWITHTWODWORDINTREE(0x57f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9097,{DOUBLEWITHTWODWORDINTREE(0x58000000,0x00000000)}},
+        {VT_exponent,22,0x3a9098,{DOUBLEWITHTWODWORDINTREE(0x58100000,0x00000000)}},
+        {VT_exponent,22,0x3a9099,{DOUBLEWITHTWODWORDINTREE(0x58200000,0x00000000)}},
+        {VT_exponent,22,0x3a909a,{DOUBLEWITHTWODWORDINTREE(0x58300000,0x00000000)}},
+        {VT_exponent,22,0x3a909b,{DOUBLEWITHTWODWORDINTREE(0x58400000,0x00000000)}},
+        {VT_exponent,22,0x3a909c,{DOUBLEWITHTWODWORDINTREE(0x58500000,0x00000000)}},
+        {VT_exponent,22,0x3a909d,{DOUBLEWITHTWODWORDINTREE(0x58600000,0x00000000)}},
+        {VT_exponent,22,0x3a909e,{DOUBLEWITHTWODWORDINTREE(0x58700000,0x00000000)}},
+        {VT_exponent,22,0x3a909f,{DOUBLEWITHTWODWORDINTREE(0x58800000,0x00000000)}},
+        {VT_exponent,22,0x3a90a0,{DOUBLEWITHTWODWORDINTREE(0x58900000,0x00000000)}},
+        {VT_exponent,22,0x3a90a1,{DOUBLEWITHTWODWORDINTREE(0x58a00000,0x00000000)}},
+        {VT_exponent,22,0x3a90a2,{DOUBLEWITHTWODWORDINTREE(0x58b00000,0x00000000)}},
+        {VT_exponent,22,0x3a90a3,{DOUBLEWITHTWODWORDINTREE(0x58c00000,0x00000000)}},
+        {VT_exponent,22,0x3a90a4,{DOUBLEWITHTWODWORDINTREE(0x58d00000,0x00000000)}},
+        {VT_exponent,22,0x3a90a5,{DOUBLEWITHTWODWORDINTREE(0x58e00000,0x00000000)}},
+        {VT_exponent,22,0x3a90a6,{DOUBLEWITHTWODWORDINTREE(0x58f00000,0x00000000)}},
+        {VT_exponent,22,0x3a90a7,{DOUBLEWITHTWODWORDINTREE(0x59000000,0x00000000)}},
+        {VT_exponent,22,0x3a90a8,{DOUBLEWITHTWODWORDINTREE(0x59100000,0x00000000)}},
+        {VT_exponent,22,0x3a90a9,{DOUBLEWITHTWODWORDINTREE(0x59200000,0x00000000)}},
+        {VT_exponent,22,0x3a90aa,{DOUBLEWITHTWODWORDINTREE(0x59300000,0x00000000)}},
+        {VT_exponent,22,0x3a90ab,{DOUBLEWITHTWODWORDINTREE(0x59400000,0x00000000)}},
+        {VT_exponent,22,0x3a90ac,{DOUBLEWITHTWODWORDINTREE(0x59500000,0x00000000)}},
+        {VT_exponent,22,0x3a90ad,{DOUBLEWITHTWODWORDINTREE(0x59600000,0x00000000)}},
+        {VT_exponent,22,0x3a90ae,{DOUBLEWITHTWODWORDINTREE(0x59700000,0x00000000)}},
+        {VT_exponent,22,0x3a90af,{DOUBLEWITHTWODWORDINTREE(0x59800000,0x00000000)}},
+        {VT_exponent,22,0x3a90b0,{DOUBLEWITHTWODWORDINTREE(0x59900000,0x00000000)}},
+        {VT_exponent,22,0x3a90b1,{DOUBLEWITHTWODWORDINTREE(0x59a00000,0x00000000)}},
+        {VT_exponent,22,0x3a90b2,{DOUBLEWITHTWODWORDINTREE(0x59b00000,0x00000000)}},
+        {VT_exponent,22,0x3a90b3,{DOUBLEWITHTWODWORDINTREE(0x59c00000,0x00000000)}},
+        {VT_exponent,22,0x3a90b4,{DOUBLEWITHTWODWORDINTREE(0x59d00000,0x00000000)}},
+        {VT_exponent,22,0x3a90b5,{DOUBLEWITHTWODWORDINTREE(0x59e00000,0x00000000)}},
+        {VT_exponent,22,0x3a90b6,{DOUBLEWITHTWODWORDINTREE(0x59f00000,0x00000000)}},
+        {VT_exponent,22,0x3a90b7,{DOUBLEWITHTWODWORDINTREE(0x5a000000,0x00000000)}},
+        {VT_exponent,22,0x3a90b8,{DOUBLEWITHTWODWORDINTREE(0x5a100000,0x00000000)}},
+        {VT_exponent,22,0x3a90b9,{DOUBLEWITHTWODWORDINTREE(0x5a200000,0x00000000)}},
+        {VT_exponent,22,0x3a90ba,{DOUBLEWITHTWODWORDINTREE(0x5a300000,0x00000000)}},
+        {VT_exponent,22,0x3a90bb,{DOUBLEWITHTWODWORDINTREE(0x5a400000,0x00000000)}},
+        {VT_exponent,22,0x3a90bc,{DOUBLEWITHTWODWORDINTREE(0x5a500000,0x00000000)}},
+        {VT_exponent,22,0x3a90bd,{DOUBLEWITHTWODWORDINTREE(0x5a600000,0x00000000)}},
+        {VT_exponent,22,0x3a90be,{DOUBLEWITHTWODWORDINTREE(0x5a700000,0x00000000)}},
+        {VT_exponent,22,0x3a90bf,{DOUBLEWITHTWODWORDINTREE(0x5a800000,0x00000000)}},
+        {VT_exponent,22,0x3a90c0,{DOUBLEWITHTWODWORDINTREE(0x5a900000,0x00000000)}},
+        {VT_exponent,22,0x3a90c1,{DOUBLEWITHTWODWORDINTREE(0x5aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a90c2,{DOUBLEWITHTWODWORDINTREE(0x5ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a90c3,{DOUBLEWITHTWODWORDINTREE(0x5ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a90c4,{DOUBLEWITHTWODWORDINTREE(0x5ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a90c5,{DOUBLEWITHTWODWORDINTREE(0x5ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a90c6,{DOUBLEWITHTWODWORDINTREE(0x5af00000,0x00000000)}},
+        {VT_exponent,22,0x3a90c7,{DOUBLEWITHTWODWORDINTREE(0x5b000000,0x00000000)}},
+        {VT_exponent,22,0x3a90c8,{DOUBLEWITHTWODWORDINTREE(0x5b100000,0x00000000)}},
+        {VT_exponent,22,0x3a90c9,{DOUBLEWITHTWODWORDINTREE(0x5b200000,0x00000000)}},
+        {VT_exponent,22,0x3a90ca,{DOUBLEWITHTWODWORDINTREE(0x5b300000,0x00000000)}},
+        {VT_exponent,22,0x3a90cb,{DOUBLEWITHTWODWORDINTREE(0x5b400000,0x00000000)}},
+        {VT_exponent,22,0x3a90cc,{DOUBLEWITHTWODWORDINTREE(0x5b500000,0x00000000)}},
+        {VT_exponent,22,0x3a90cd,{DOUBLEWITHTWODWORDINTREE(0x5b600000,0x00000000)}},
+        {VT_exponent,22,0x3a90ce,{DOUBLEWITHTWODWORDINTREE(0x5b700000,0x00000000)}},
+        {VT_exponent,22,0x3a90cf,{DOUBLEWITHTWODWORDINTREE(0x5b800000,0x00000000)}},
+        {VT_exponent,22,0x3a90d0,{DOUBLEWITHTWODWORDINTREE(0x5b900000,0x00000000)}},
+        {VT_exponent,22,0x3a90d1,{DOUBLEWITHTWODWORDINTREE(0x5ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a90d2,{DOUBLEWITHTWODWORDINTREE(0x5bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a90d3,{DOUBLEWITHTWODWORDINTREE(0x5bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a90d4,{DOUBLEWITHTWODWORDINTREE(0x5bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a90d5,{DOUBLEWITHTWODWORDINTREE(0x5be00000,0x00000000)}},
+        {VT_exponent,22,0x3a90d6,{DOUBLEWITHTWODWORDINTREE(0x5bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a90d7,{DOUBLEWITHTWODWORDINTREE(0x5c000000,0x00000000)}},
+        {VT_exponent,22,0x3a90d8,{DOUBLEWITHTWODWORDINTREE(0x5c100000,0x00000000)}},
+        {VT_exponent,22,0x3a90d9,{DOUBLEWITHTWODWORDINTREE(0x5c200000,0x00000000)}},
+        {VT_exponent,22,0x3a90da,{DOUBLEWITHTWODWORDINTREE(0x5c300000,0x00000000)}},
+        {VT_exponent,22,0x3a90db,{DOUBLEWITHTWODWORDINTREE(0x5c400000,0x00000000)}},
+        {VT_exponent,22,0x3a90dc,{DOUBLEWITHTWODWORDINTREE(0x5c500000,0x00000000)}},
+        {VT_exponent,22,0x3a90dd,{DOUBLEWITHTWODWORDINTREE(0x5c600000,0x00000000)}},
+        {VT_exponent,22,0x3a90de,{DOUBLEWITHTWODWORDINTREE(0x5c700000,0x00000000)}},
+        {VT_exponent,22,0x3a90df,{DOUBLEWITHTWODWORDINTREE(0x5c800000,0x00000000)}},
+        {VT_exponent,22,0x3a90e0,{DOUBLEWITHTWODWORDINTREE(0x5c900000,0x00000000)}},
+        {VT_exponent,22,0x3a90e1,{DOUBLEWITHTWODWORDINTREE(0x5ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a90e2,{DOUBLEWITHTWODWORDINTREE(0x5cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a90e3,{DOUBLEWITHTWODWORDINTREE(0x5cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a90e4,{DOUBLEWITHTWODWORDINTREE(0x5cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a90e5,{DOUBLEWITHTWODWORDINTREE(0x5ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a90e6,{DOUBLEWITHTWODWORDINTREE(0x5cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a90e7,{DOUBLEWITHTWODWORDINTREE(0x5d000000,0x00000000)}},
+        {VT_exponent,22,0x3a90e8,{DOUBLEWITHTWODWORDINTREE(0x5d100000,0x00000000)}},
+        {VT_exponent,22,0x3a90e9,{DOUBLEWITHTWODWORDINTREE(0x5d200000,0x00000000)}},
+        {VT_exponent,22,0x3a90ea,{DOUBLEWITHTWODWORDINTREE(0x5d300000,0x00000000)}},
+        {VT_exponent,22,0x3a90eb,{DOUBLEWITHTWODWORDINTREE(0x5d400000,0x00000000)}},
+        {VT_exponent,22,0x3a90ec,{DOUBLEWITHTWODWORDINTREE(0x5d500000,0x00000000)}},
+        {VT_exponent,22,0x3a90ed,{DOUBLEWITHTWODWORDINTREE(0x5d600000,0x00000000)}},
+        {VT_exponent,22,0x3a90ee,{DOUBLEWITHTWODWORDINTREE(0x5d700000,0x00000000)}},
+        {VT_exponent,22,0x3a90ef,{DOUBLEWITHTWODWORDINTREE(0x5d800000,0x00000000)}},
+        {VT_exponent,22,0x3a90f0,{DOUBLEWITHTWODWORDINTREE(0x5d900000,0x00000000)}},
+        {VT_exponent,22,0x3a90f1,{DOUBLEWITHTWODWORDINTREE(0x5da00000,0x00000000)}},
+        {VT_exponent,22,0x3a90f2,{DOUBLEWITHTWODWORDINTREE(0x5db00000,0x00000000)}},
+        {VT_exponent,22,0x3a90f3,{DOUBLEWITHTWODWORDINTREE(0x5dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a90f4,{DOUBLEWITHTWODWORDINTREE(0x5dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a90f5,{DOUBLEWITHTWODWORDINTREE(0x5de00000,0x00000000)}},
+        {VT_exponent,22,0x3a90f6,{DOUBLEWITHTWODWORDINTREE(0x5df00000,0x00000000)}},
+        {VT_exponent,22,0x3a90f7,{DOUBLEWITHTWODWORDINTREE(0x5e000000,0x00000000)}},
+        {VT_exponent,22,0x3a90f8,{DOUBLEWITHTWODWORDINTREE(0x5e100000,0x00000000)}},
+        {VT_exponent,22,0x3a90f9,{DOUBLEWITHTWODWORDINTREE(0x5e200000,0x00000000)}},
+        {VT_exponent,22,0x3a90fa,{DOUBLEWITHTWODWORDINTREE(0x5e300000,0x00000000)}},
+        {VT_exponent,22,0x3a90fb,{DOUBLEWITHTWODWORDINTREE(0x5e400000,0x00000000)}},
+        {VT_exponent,22,0x3a90fc,{DOUBLEWITHTWODWORDINTREE(0x5e500000,0x00000000)}},
+        {VT_exponent,22,0x3a90fd,{DOUBLEWITHTWODWORDINTREE(0x5e600000,0x00000000)}},
+        {VT_exponent,22,0x3a90fe,{DOUBLEWITHTWODWORDINTREE(0x5e700000,0x00000000)}},
+        {VT_exponent,22,0x3a90ff,{DOUBLEWITHTWODWORDINTREE(0x5e800000,0x00000000)}},
+        {VT_exponent,22,0x3a9100,{DOUBLEWITHTWODWORDINTREE(0x5e900000,0x00000000)}},
+        {VT_exponent,22,0x3a9101,{DOUBLEWITHTWODWORDINTREE(0x5ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a9102,{DOUBLEWITHTWODWORDINTREE(0x5eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a9103,{DOUBLEWITHTWODWORDINTREE(0x5ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a9104,{DOUBLEWITHTWODWORDINTREE(0x5ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a9105,{DOUBLEWITHTWODWORDINTREE(0x5ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a9106,{DOUBLEWITHTWODWORDINTREE(0x5ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a9107,{DOUBLEWITHTWODWORDINTREE(0x5f000000,0x00000000)}},
+        {VT_exponent,22,0x3a9108,{DOUBLEWITHTWODWORDINTREE(0x5f100000,0x00000000)}},
+        {VT_exponent,22,0x3a9109,{DOUBLEWITHTWODWORDINTREE(0x5f200000,0x00000000)}},
+        {VT_exponent,22,0x3a910a,{DOUBLEWITHTWODWORDINTREE(0x5f300000,0x00000000)}},
+        {VT_exponent,22,0x3a910b,{DOUBLEWITHTWODWORDINTREE(0x5f400000,0x00000000)}},
+        {VT_exponent,22,0x3a910c,{DOUBLEWITHTWODWORDINTREE(0x5f500000,0x00000000)}},
+        {VT_exponent,22,0x3a910d,{DOUBLEWITHTWODWORDINTREE(0x5f600000,0x00000000)}},
+        {VT_exponent,22,0x3a910e,{DOUBLEWITHTWODWORDINTREE(0x5f700000,0x00000000)}},
+        {VT_exponent,22,0x3a910f,{DOUBLEWITHTWODWORDINTREE(0x5f800000,0x00000000)}},
+        {VT_exponent,22,0x3a9110,{DOUBLEWITHTWODWORDINTREE(0x5f900000,0x00000000)}},
+        {VT_exponent,22,0x3a9111,{DOUBLEWITHTWODWORDINTREE(0x5fa00000,0x00000000)}},
+        {VT_exponent,22,0x3a9112,{DOUBLEWITHTWODWORDINTREE(0x5fb00000,0x00000000)}},
+        {VT_exponent,22,0x3a9113,{DOUBLEWITHTWODWORDINTREE(0x5fc00000,0x00000000)}},
+        {VT_exponent,22,0x3a9114,{DOUBLEWITHTWODWORDINTREE(0x5fd00000,0x00000000)}},
+        {VT_exponent,22,0x3a9115,{DOUBLEWITHTWODWORDINTREE(0x5fe00000,0x00000000)}},
+        {VT_exponent,22,0x3a9116,{DOUBLEWITHTWODWORDINTREE(0x5ff00000,0x00000000)}},
+        {VT_exponent,22,0x3a9117,{DOUBLEWITHTWODWORDINTREE(0x60000000,0x00000000)}},
+        {VT_exponent,22,0x3a9118,{DOUBLEWITHTWODWORDINTREE(0x60100000,0x00000000)}},
+        {VT_exponent,22,0x3a9119,{DOUBLEWITHTWODWORDINTREE(0x60200000,0x00000000)}},
+        {VT_exponent,22,0x3a911a,{DOUBLEWITHTWODWORDINTREE(0x60300000,0x00000000)}},
+        {VT_exponent,22,0x3a911b,{DOUBLEWITHTWODWORDINTREE(0x60400000,0x00000000)}},
+        {VT_exponent,22,0x3a911c,{DOUBLEWITHTWODWORDINTREE(0x60500000,0x00000000)}},
+        {VT_exponent,22,0x3a911d,{DOUBLEWITHTWODWORDINTREE(0x60600000,0x00000000)}},
+        {VT_exponent,22,0x3a911e,{DOUBLEWITHTWODWORDINTREE(0x60700000,0x00000000)}},
+        {VT_exponent,22,0x3a911f,{DOUBLEWITHTWODWORDINTREE(0x60800000,0x00000000)}},
+        {VT_exponent,22,0x3a9120,{DOUBLEWITHTWODWORDINTREE(0x60900000,0x00000000)}},
+        {VT_exponent,22,0x3a9121,{DOUBLEWITHTWODWORDINTREE(0x60a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9122,{DOUBLEWITHTWODWORDINTREE(0x60b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9123,{DOUBLEWITHTWODWORDINTREE(0x60c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9124,{DOUBLEWITHTWODWORDINTREE(0x60d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9125,{DOUBLEWITHTWODWORDINTREE(0x60e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9126,{DOUBLEWITHTWODWORDINTREE(0x60f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9127,{DOUBLEWITHTWODWORDINTREE(0x61000000,0x00000000)}},
+        {VT_exponent,22,0x3a9128,{DOUBLEWITHTWODWORDINTREE(0x61100000,0x00000000)}},
+        {VT_exponent,22,0x3a9129,{DOUBLEWITHTWODWORDINTREE(0x61200000,0x00000000)}},
+        {VT_exponent,22,0x3a912a,{DOUBLEWITHTWODWORDINTREE(0x61300000,0x00000000)}},
+        {VT_exponent,22,0x3a912b,{DOUBLEWITHTWODWORDINTREE(0x61400000,0x00000000)}},
+        {VT_exponent,22,0x3a912c,{DOUBLEWITHTWODWORDINTREE(0x61500000,0x00000000)}},
+        {VT_exponent,22,0x3a912d,{DOUBLEWITHTWODWORDINTREE(0x61600000,0x00000000)}},
+        {VT_exponent,22,0x3a912e,{DOUBLEWITHTWODWORDINTREE(0x61700000,0x00000000)}},
+        {VT_exponent,22,0x3a912f,{DOUBLEWITHTWODWORDINTREE(0x61800000,0x00000000)}},
+        {VT_exponent,22,0x3a9130,{DOUBLEWITHTWODWORDINTREE(0x61900000,0x00000000)}},
+        {VT_exponent,22,0x3a9131,{DOUBLEWITHTWODWORDINTREE(0x61a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9132,{DOUBLEWITHTWODWORDINTREE(0x61b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9133,{DOUBLEWITHTWODWORDINTREE(0x61c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9134,{DOUBLEWITHTWODWORDINTREE(0x61d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9135,{DOUBLEWITHTWODWORDINTREE(0x61e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9136,{DOUBLEWITHTWODWORDINTREE(0x61f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9137,{DOUBLEWITHTWODWORDINTREE(0x62000000,0x00000000)}},
+        {VT_exponent,22,0x3a9138,{DOUBLEWITHTWODWORDINTREE(0x62100000,0x00000000)}},
+        {VT_exponent,22,0x3a9139,{DOUBLEWITHTWODWORDINTREE(0x62200000,0x00000000)}},
+        {VT_exponent,22,0x3a913a,{DOUBLEWITHTWODWORDINTREE(0x62300000,0x00000000)}},
+        {VT_exponent,22,0x3a913b,{DOUBLEWITHTWODWORDINTREE(0x62400000,0x00000000)}},
+        {VT_exponent,22,0x3a913c,{DOUBLEWITHTWODWORDINTREE(0x62500000,0x00000000)}},
+        {VT_exponent,22,0x3a913d,{DOUBLEWITHTWODWORDINTREE(0x62600000,0x00000000)}},
+        {VT_exponent,22,0x3a913e,{DOUBLEWITHTWODWORDINTREE(0x62700000,0x00000000)}},
+        {VT_exponent,22,0x3a913f,{DOUBLEWITHTWODWORDINTREE(0x62800000,0x00000000)}},
+        {VT_exponent,22,0x3a9140,{DOUBLEWITHTWODWORDINTREE(0x62900000,0x00000000)}},
+        {VT_exponent,22,0x3a9141,{DOUBLEWITHTWODWORDINTREE(0x62a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9142,{DOUBLEWITHTWODWORDINTREE(0x62b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9143,{DOUBLEWITHTWODWORDINTREE(0x62c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9144,{DOUBLEWITHTWODWORDINTREE(0x62d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9145,{DOUBLEWITHTWODWORDINTREE(0x62e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9146,{DOUBLEWITHTWODWORDINTREE(0x62f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9147,{DOUBLEWITHTWODWORDINTREE(0x63000000,0x00000000)}},
+        {VT_exponent,22,0x3a9148,{DOUBLEWITHTWODWORDINTREE(0x63100000,0x00000000)}},
+        {VT_exponent,22,0x3a9149,{DOUBLEWITHTWODWORDINTREE(0x63200000,0x00000000)}},
+        {VT_exponent,22,0x3a914a,{DOUBLEWITHTWODWORDINTREE(0x63300000,0x00000000)}},
+        {VT_exponent,22,0x3a914b,{DOUBLEWITHTWODWORDINTREE(0x63400000,0x00000000)}},
+        {VT_exponent,22,0x3a914c,{DOUBLEWITHTWODWORDINTREE(0x63500000,0x00000000)}},
+        {VT_exponent,22,0x3a914d,{DOUBLEWITHTWODWORDINTREE(0x63600000,0x00000000)}},
+        {VT_exponent,22,0x3a914e,{DOUBLEWITHTWODWORDINTREE(0x63700000,0x00000000)}},
+        {VT_exponent,22,0x3a914f,{DOUBLEWITHTWODWORDINTREE(0x63800000,0x00000000)}},
+        {VT_exponent,22,0x3a9150,{DOUBLEWITHTWODWORDINTREE(0x63900000,0x00000000)}},
+        {VT_exponent,22,0x3a9151,{DOUBLEWITHTWODWORDINTREE(0x63a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9152,{DOUBLEWITHTWODWORDINTREE(0x63b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9153,{DOUBLEWITHTWODWORDINTREE(0x63c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9154,{DOUBLEWITHTWODWORDINTREE(0x63d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9155,{DOUBLEWITHTWODWORDINTREE(0x63e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9156,{DOUBLEWITHTWODWORDINTREE(0x63f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9157,{DOUBLEWITHTWODWORDINTREE(0x64000000,0x00000000)}},
+        {VT_exponent,22,0x3a9158,{DOUBLEWITHTWODWORDINTREE(0x64100000,0x00000000)}},
+        {VT_exponent,22,0x3a9159,{DOUBLEWITHTWODWORDINTREE(0x64200000,0x00000000)}},
+        {VT_exponent,22,0x3a915a,{DOUBLEWITHTWODWORDINTREE(0x64300000,0x00000000)}},
+        {VT_exponent,22,0x3a915b,{DOUBLEWITHTWODWORDINTREE(0x64400000,0x00000000)}},
+        {VT_exponent,22,0x3a915c,{DOUBLEWITHTWODWORDINTREE(0x64500000,0x00000000)}},
+        {VT_exponent,22,0x3a915d,{DOUBLEWITHTWODWORDINTREE(0x64600000,0x00000000)}},
+        {VT_exponent,22,0x3a915e,{DOUBLEWITHTWODWORDINTREE(0x64700000,0x00000000)}},
+        {VT_exponent,22,0x3a915f,{DOUBLEWITHTWODWORDINTREE(0x64800000,0x00000000)}},
+        {VT_exponent,22,0x3a9160,{DOUBLEWITHTWODWORDINTREE(0x64900000,0x00000000)}},
+        {VT_exponent,22,0x3a9161,{DOUBLEWITHTWODWORDINTREE(0x64a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9162,{DOUBLEWITHTWODWORDINTREE(0x64b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9163,{DOUBLEWITHTWODWORDINTREE(0x64c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9164,{DOUBLEWITHTWODWORDINTREE(0x64d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9165,{DOUBLEWITHTWODWORDINTREE(0x64e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9166,{DOUBLEWITHTWODWORDINTREE(0x64f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9167,{DOUBLEWITHTWODWORDINTREE(0x65000000,0x00000000)}},
+        {VT_exponent,22,0x3a9168,{DOUBLEWITHTWODWORDINTREE(0x65100000,0x00000000)}},
+        {VT_exponent,22,0x3a9169,{DOUBLEWITHTWODWORDINTREE(0x65200000,0x00000000)}},
+        {VT_exponent,22,0x3a916a,{DOUBLEWITHTWODWORDINTREE(0x65300000,0x00000000)}},
+        {VT_exponent,22,0x3a916b,{DOUBLEWITHTWODWORDINTREE(0x65400000,0x00000000)}},
+        {VT_exponent,22,0x3a916c,{DOUBLEWITHTWODWORDINTREE(0x65500000,0x00000000)}},
+        {VT_exponent,22,0x3a916d,{DOUBLEWITHTWODWORDINTREE(0x65600000,0x00000000)}},
+        {VT_exponent,22,0x3a916e,{DOUBLEWITHTWODWORDINTREE(0x65700000,0x00000000)}},
+        {VT_exponent,22,0x3a916f,{DOUBLEWITHTWODWORDINTREE(0x65800000,0x00000000)}},
+        {VT_exponent,22,0x3a9170,{DOUBLEWITHTWODWORDINTREE(0x65900000,0x00000000)}},
+        {VT_exponent,22,0x3a9171,{DOUBLEWITHTWODWORDINTREE(0x65a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9172,{DOUBLEWITHTWODWORDINTREE(0x65b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9173,{DOUBLEWITHTWODWORDINTREE(0x65c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9174,{DOUBLEWITHTWODWORDINTREE(0x65d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9175,{DOUBLEWITHTWODWORDINTREE(0x65e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9176,{DOUBLEWITHTWODWORDINTREE(0x65f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9177,{DOUBLEWITHTWODWORDINTREE(0x66000000,0x00000000)}},
+        {VT_exponent,22,0x3a9178,{DOUBLEWITHTWODWORDINTREE(0x66100000,0x00000000)}},
+        {VT_exponent,22,0x3a9179,{DOUBLEWITHTWODWORDINTREE(0x66200000,0x00000000)}},
+        {VT_exponent,22,0x3a917a,{DOUBLEWITHTWODWORDINTREE(0x66300000,0x00000000)}},
+        {VT_exponent,22,0x3a917b,{DOUBLEWITHTWODWORDINTREE(0x66400000,0x00000000)}},
+        {VT_exponent,22,0x3a917c,{DOUBLEWITHTWODWORDINTREE(0x66500000,0x00000000)}},
+        {VT_exponent,22,0x3a917d,{DOUBLEWITHTWODWORDINTREE(0x66600000,0x00000000)}},
+        {VT_exponent,22,0x3a917e,{DOUBLEWITHTWODWORDINTREE(0x66700000,0x00000000)}},
+        {VT_exponent,22,0x3a917f,{DOUBLEWITHTWODWORDINTREE(0x66800000,0x00000000)}},
+        {VT_exponent,22,0x3a9180,{DOUBLEWITHTWODWORDINTREE(0x66900000,0x00000000)}},
+        {VT_exponent,22,0x3a9181,{DOUBLEWITHTWODWORDINTREE(0x66a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9182,{DOUBLEWITHTWODWORDINTREE(0x66b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9183,{DOUBLEWITHTWODWORDINTREE(0x66c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9184,{DOUBLEWITHTWODWORDINTREE(0x66d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9185,{DOUBLEWITHTWODWORDINTREE(0x66e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9186,{DOUBLEWITHTWODWORDINTREE(0x66f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9187,{DOUBLEWITHTWODWORDINTREE(0x67000000,0x00000000)}},
+        {VT_exponent,22,0x3a9188,{DOUBLEWITHTWODWORDINTREE(0x67100000,0x00000000)}},
+        {VT_exponent,22,0x3a9189,{DOUBLEWITHTWODWORDINTREE(0x67200000,0x00000000)}},
+        {VT_exponent,22,0x3a918a,{DOUBLEWITHTWODWORDINTREE(0x67300000,0x00000000)}},
+        {VT_exponent,22,0x3a918b,{DOUBLEWITHTWODWORDINTREE(0x67400000,0x00000000)}},
+        {VT_exponent,22,0x3a918c,{DOUBLEWITHTWODWORDINTREE(0x67500000,0x00000000)}},
+        {VT_exponent,22,0x3a918d,{DOUBLEWITHTWODWORDINTREE(0x67600000,0x00000000)}},
+        {VT_exponent,22,0x3a918e,{DOUBLEWITHTWODWORDINTREE(0x67700000,0x00000000)}},
+        {VT_exponent,22,0x3a918f,{DOUBLEWITHTWODWORDINTREE(0x67800000,0x00000000)}},
+        {VT_exponent,22,0x3a9190,{DOUBLEWITHTWODWORDINTREE(0x67900000,0x00000000)}},
+        {VT_exponent,22,0x3a9191,{DOUBLEWITHTWODWORDINTREE(0x67a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9192,{DOUBLEWITHTWODWORDINTREE(0x67b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9193,{DOUBLEWITHTWODWORDINTREE(0x67c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9194,{DOUBLEWITHTWODWORDINTREE(0x67d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9195,{DOUBLEWITHTWODWORDINTREE(0x67e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9196,{DOUBLEWITHTWODWORDINTREE(0x67f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9197,{DOUBLEWITHTWODWORDINTREE(0x68000000,0x00000000)}},
+        {VT_exponent,22,0x3a9198,{DOUBLEWITHTWODWORDINTREE(0x68100000,0x00000000)}},
+        {VT_exponent,22,0x3a9199,{DOUBLEWITHTWODWORDINTREE(0x68200000,0x00000000)}},
+        {VT_exponent,22,0x3a919a,{DOUBLEWITHTWODWORDINTREE(0x68300000,0x00000000)}},
+        {VT_exponent,22,0x3a919b,{DOUBLEWITHTWODWORDINTREE(0x68400000,0x00000000)}},
+        {VT_exponent,22,0x3a919c,{DOUBLEWITHTWODWORDINTREE(0x68500000,0x00000000)}},
+        {VT_exponent,22,0x3a919d,{DOUBLEWITHTWODWORDINTREE(0x68600000,0x00000000)}},
+        {VT_exponent,22,0x3a919e,{DOUBLEWITHTWODWORDINTREE(0x68700000,0x00000000)}},
+        {VT_exponent,22,0x3a919f,{DOUBLEWITHTWODWORDINTREE(0x68800000,0x00000000)}},
+        {VT_exponent,22,0x3a91a0,{DOUBLEWITHTWODWORDINTREE(0x68900000,0x00000000)}},
+        {VT_exponent,22,0x3a91a1,{DOUBLEWITHTWODWORDINTREE(0x68a00000,0x00000000)}},
+        {VT_exponent,22,0x3a91a2,{DOUBLEWITHTWODWORDINTREE(0x68b00000,0x00000000)}},
+        {VT_exponent,22,0x3a91a3,{DOUBLEWITHTWODWORDINTREE(0x68c00000,0x00000000)}},
+        {VT_exponent,22,0x3a91a4,{DOUBLEWITHTWODWORDINTREE(0x68d00000,0x00000000)}},
+        {VT_exponent,22,0x3a91a5,{DOUBLEWITHTWODWORDINTREE(0x68e00000,0x00000000)}},
+        {VT_exponent,22,0x3a91a6,{DOUBLEWITHTWODWORDINTREE(0x68f00000,0x00000000)}},
+        {VT_exponent,22,0x3a91a7,{DOUBLEWITHTWODWORDINTREE(0x69000000,0x00000000)}},
+        {VT_exponent,22,0x3a91a8,{DOUBLEWITHTWODWORDINTREE(0x69100000,0x00000000)}},
+        {VT_exponent,22,0x3a91a9,{DOUBLEWITHTWODWORDINTREE(0x69200000,0x00000000)}},
+        {VT_exponent,22,0x3a91aa,{DOUBLEWITHTWODWORDINTREE(0x69300000,0x00000000)}},
+        {VT_exponent,22,0x3a91ab,{DOUBLEWITHTWODWORDINTREE(0x69400000,0x00000000)}},
+        {VT_exponent,22,0x3a91ac,{DOUBLEWITHTWODWORDINTREE(0x69500000,0x00000000)}},
+        {VT_exponent,22,0x3a91ad,{DOUBLEWITHTWODWORDINTREE(0x69600000,0x00000000)}},
+        {VT_exponent,22,0x3a91ae,{DOUBLEWITHTWODWORDINTREE(0x69700000,0x00000000)}},
+        {VT_exponent,22,0x3a91af,{DOUBLEWITHTWODWORDINTREE(0x69800000,0x00000000)}},
+        {VT_exponent,22,0x3a91b0,{DOUBLEWITHTWODWORDINTREE(0x69900000,0x00000000)}},
+        {VT_exponent,22,0x3a91b1,{DOUBLEWITHTWODWORDINTREE(0x69a00000,0x00000000)}},
+        {VT_exponent,22,0x3a91b2,{DOUBLEWITHTWODWORDINTREE(0x69b00000,0x00000000)}},
+        {VT_exponent,22,0x3a91b3,{DOUBLEWITHTWODWORDINTREE(0x69c00000,0x00000000)}},
+        {VT_exponent,22,0x3a91b4,{DOUBLEWITHTWODWORDINTREE(0x69d00000,0x00000000)}},
+        {VT_exponent,22,0x3a91b5,{DOUBLEWITHTWODWORDINTREE(0x69e00000,0x00000000)}},
+        {VT_exponent,22,0x3a91b6,{DOUBLEWITHTWODWORDINTREE(0x69f00000,0x00000000)}},
+        {VT_exponent,22,0x3a91b7,{DOUBLEWITHTWODWORDINTREE(0x6a000000,0x00000000)}},
+        {VT_exponent,22,0x3a91b8,{DOUBLEWITHTWODWORDINTREE(0x6a100000,0x00000000)}},
+        {VT_exponent,22,0x3a91b9,{DOUBLEWITHTWODWORDINTREE(0x6a200000,0x00000000)}},
+        {VT_exponent,22,0x3a91ba,{DOUBLEWITHTWODWORDINTREE(0x6a300000,0x00000000)}},
+        {VT_exponent,22,0x3a91bb,{DOUBLEWITHTWODWORDINTREE(0x6a400000,0x00000000)}},
+        {VT_exponent,22,0x3a91bc,{DOUBLEWITHTWODWORDINTREE(0x6a500000,0x00000000)}},
+        {VT_exponent,22,0x3a91bd,{DOUBLEWITHTWODWORDINTREE(0x6a600000,0x00000000)}},
+        {VT_exponent,22,0x3a91be,{DOUBLEWITHTWODWORDINTREE(0x6a700000,0x00000000)}},
+        {VT_exponent,22,0x3a91bf,{DOUBLEWITHTWODWORDINTREE(0x6a800000,0x00000000)}},
+        {VT_exponent,22,0x3a91c0,{DOUBLEWITHTWODWORDINTREE(0x6a900000,0x00000000)}},
+        {VT_exponent,22,0x3a91c1,{DOUBLEWITHTWODWORDINTREE(0x6aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a91c2,{DOUBLEWITHTWODWORDINTREE(0x6ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a91c3,{DOUBLEWITHTWODWORDINTREE(0x6ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a91c4,{DOUBLEWITHTWODWORDINTREE(0x6ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a91c5,{DOUBLEWITHTWODWORDINTREE(0x6ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a91c6,{DOUBLEWITHTWODWORDINTREE(0x6af00000,0x00000000)}},
+        {VT_exponent,22,0x3a91c7,{DOUBLEWITHTWODWORDINTREE(0x6b000000,0x00000000)}},
+        {VT_exponent,22,0x3a91c8,{DOUBLEWITHTWODWORDINTREE(0x6b100000,0x00000000)}},
+        {VT_exponent,22,0x3a91c9,{DOUBLEWITHTWODWORDINTREE(0x6b200000,0x00000000)}},
+        {VT_exponent,22,0x3a91ca,{DOUBLEWITHTWODWORDINTREE(0x6b300000,0x00000000)}},
+        {VT_exponent,22,0x3a91cb,{DOUBLEWITHTWODWORDINTREE(0x6b400000,0x00000000)}},
+        {VT_exponent,22,0x3a91cc,{DOUBLEWITHTWODWORDINTREE(0x6b500000,0x00000000)}},
+        {VT_exponent,22,0x3a91cd,{DOUBLEWITHTWODWORDINTREE(0x6b600000,0x00000000)}},
+        {VT_exponent,22,0x3a91ce,{DOUBLEWITHTWODWORDINTREE(0x6b700000,0x00000000)}},
+        {VT_exponent,22,0x3a91cf,{DOUBLEWITHTWODWORDINTREE(0x6b800000,0x00000000)}},
+        {VT_exponent,22,0x3a91d0,{DOUBLEWITHTWODWORDINTREE(0x6b900000,0x00000000)}},
+        {VT_exponent,22,0x3a91d1,{DOUBLEWITHTWODWORDINTREE(0x6ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a91d2,{DOUBLEWITHTWODWORDINTREE(0x6bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a91d3,{DOUBLEWITHTWODWORDINTREE(0x6bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a91d4,{DOUBLEWITHTWODWORDINTREE(0x6bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a91d5,{DOUBLEWITHTWODWORDINTREE(0x6be00000,0x00000000)}},
+        {VT_exponent,22,0x3a91d6,{DOUBLEWITHTWODWORDINTREE(0x6bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a91d7,{DOUBLEWITHTWODWORDINTREE(0x6c000000,0x00000000)}},
+        {VT_exponent,22,0x3a91d8,{DOUBLEWITHTWODWORDINTREE(0x6c100000,0x00000000)}},
+        {VT_exponent,22,0x3a91d9,{DOUBLEWITHTWODWORDINTREE(0x6c200000,0x00000000)}},
+        {VT_exponent,22,0x3a91da,{DOUBLEWITHTWODWORDINTREE(0x6c300000,0x00000000)}},
+        {VT_exponent,22,0x3a91db,{DOUBLEWITHTWODWORDINTREE(0x6c400000,0x00000000)}},
+        {VT_exponent,22,0x3a91dc,{DOUBLEWITHTWODWORDINTREE(0x6c500000,0x00000000)}},
+        {VT_exponent,22,0x3a91dd,{DOUBLEWITHTWODWORDINTREE(0x6c600000,0x00000000)}},
+        {VT_exponent,22,0x3a91de,{DOUBLEWITHTWODWORDINTREE(0x6c700000,0x00000000)}},
+        {VT_exponent,22,0x3a91df,{DOUBLEWITHTWODWORDINTREE(0x6c800000,0x00000000)}},
+        {VT_exponent,22,0x3a91e0,{DOUBLEWITHTWODWORDINTREE(0x6c900000,0x00000000)}},
+        {VT_exponent,22,0x3a91e1,{DOUBLEWITHTWODWORDINTREE(0x6ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a91e2,{DOUBLEWITHTWODWORDINTREE(0x6cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a91e3,{DOUBLEWITHTWODWORDINTREE(0x6cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a91e4,{DOUBLEWITHTWODWORDINTREE(0x6cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a91e5,{DOUBLEWITHTWODWORDINTREE(0x6ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a91e6,{DOUBLEWITHTWODWORDINTREE(0x6cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a91e7,{DOUBLEWITHTWODWORDINTREE(0x6d000000,0x00000000)}},
+        {VT_exponent,22,0x3a91e8,{DOUBLEWITHTWODWORDINTREE(0x6d100000,0x00000000)}},
+        {VT_exponent,22,0x3a91e9,{DOUBLEWITHTWODWORDINTREE(0x6d200000,0x00000000)}},
+        {VT_exponent,22,0x3a91ea,{DOUBLEWITHTWODWORDINTREE(0x6d300000,0x00000000)}},
+        {VT_exponent,22,0x3a91eb,{DOUBLEWITHTWODWORDINTREE(0x6d400000,0x00000000)}},
+        {VT_exponent,22,0x3a91ec,{DOUBLEWITHTWODWORDINTREE(0x6d500000,0x00000000)}},
+        {VT_exponent,22,0x3a91ed,{DOUBLEWITHTWODWORDINTREE(0x6d600000,0x00000000)}},
+        {VT_exponent,22,0x3a91ee,{DOUBLEWITHTWODWORDINTREE(0x6d700000,0x00000000)}},
+        {VT_exponent,22,0x3a91ef,{DOUBLEWITHTWODWORDINTREE(0x6d800000,0x00000000)}},
+        {VT_exponent,22,0x3a91f0,{DOUBLEWITHTWODWORDINTREE(0x6d900000,0x00000000)}},
+        {VT_exponent,22,0x3a91f1,{DOUBLEWITHTWODWORDINTREE(0x6da00000,0x00000000)}},
+        {VT_exponent,22,0x3a91f2,{DOUBLEWITHTWODWORDINTREE(0x6db00000,0x00000000)}},
+        {VT_exponent,22,0x3a91f3,{DOUBLEWITHTWODWORDINTREE(0x6dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a91f4,{DOUBLEWITHTWODWORDINTREE(0x6dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a91f5,{DOUBLEWITHTWODWORDINTREE(0x6de00000,0x00000000)}},
+        {VT_exponent,22,0x3a91f6,{DOUBLEWITHTWODWORDINTREE(0x6df00000,0x00000000)}},
+        {VT_exponent,22,0x3a91f7,{DOUBLEWITHTWODWORDINTREE(0x6e000000,0x00000000)}},
+        {VT_exponent,22,0x3a91f8,{DOUBLEWITHTWODWORDINTREE(0x6e100000,0x00000000)}},
+        {VT_exponent,22,0x3a91f9,{DOUBLEWITHTWODWORDINTREE(0x6e200000,0x00000000)}},
+        {VT_exponent,22,0x3a91fa,{DOUBLEWITHTWODWORDINTREE(0x6e300000,0x00000000)}},
+        {VT_exponent,22,0x3a91fb,{DOUBLEWITHTWODWORDINTREE(0x6e400000,0x00000000)}},
+        {VT_exponent,22,0x3a91fc,{DOUBLEWITHTWODWORDINTREE(0x6e500000,0x00000000)}},
+        {VT_exponent,22,0x3a91fd,{DOUBLEWITHTWODWORDINTREE(0x6e600000,0x00000000)}},
+        {VT_exponent,22,0x3a91fe,{DOUBLEWITHTWODWORDINTREE(0x6e700000,0x00000000)}},
+        {VT_exponent,22,0x3a91ff,{DOUBLEWITHTWODWORDINTREE(0x6e800000,0x00000000)}},
+        {VT_exponent,22,0x3a9200,{DOUBLEWITHTWODWORDINTREE(0x6e900000,0x00000000)}},
+        {VT_exponent,22,0x3a9201,{DOUBLEWITHTWODWORDINTREE(0x6ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a9202,{DOUBLEWITHTWODWORDINTREE(0x6eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a9203,{DOUBLEWITHTWODWORDINTREE(0x6ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a9204,{DOUBLEWITHTWODWORDINTREE(0x6ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a9205,{DOUBLEWITHTWODWORDINTREE(0x6ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a9206,{DOUBLEWITHTWODWORDINTREE(0x6ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a9207,{DOUBLEWITHTWODWORDINTREE(0x6f000000,0x00000000)}},
+        {VT_exponent,22,0x3a9208,{DOUBLEWITHTWODWORDINTREE(0x6f100000,0x00000000)}},
+        {VT_exponent,22,0x3a9209,{DOUBLEWITHTWODWORDINTREE(0x6f200000,0x00000000)}},
+        {VT_exponent,22,0x3a920a,{DOUBLEWITHTWODWORDINTREE(0x6f300000,0x00000000)}},
+        {VT_exponent,22,0x3a920b,{DOUBLEWITHTWODWORDINTREE(0x6f400000,0x00000000)}},
+        {VT_exponent,22,0x3a920c,{DOUBLEWITHTWODWORDINTREE(0x6f500000,0x00000000)}},
+        {VT_exponent,22,0x3a920d,{DOUBLEWITHTWODWORDINTREE(0x6f600000,0x00000000)}},
+        {VT_exponent,22,0x3a920e,{DOUBLEWITHTWODWORDINTREE(0x6f700000,0x00000000)}},
+        {VT_exponent,22,0x3a920f,{DOUBLEWITHTWODWORDINTREE(0x6f800000,0x00000000)}},
+        {VT_exponent,22,0x3a9210,{DOUBLEWITHTWODWORDINTREE(0x6f900000,0x00000000)}},
+        {VT_exponent,22,0x3a9211,{DOUBLEWITHTWODWORDINTREE(0x6fa00000,0x00000000)}},
+        {VT_exponent,22,0x3a9212,{DOUBLEWITHTWODWORDINTREE(0x6fb00000,0x00000000)}},
+        {VT_exponent,22,0x3a9213,{DOUBLEWITHTWODWORDINTREE(0x6fc00000,0x00000000)}},
+        {VT_exponent,22,0x3a9214,{DOUBLEWITHTWODWORDINTREE(0x6fd00000,0x00000000)}},
+        {VT_exponent,22,0x3a9215,{DOUBLEWITHTWODWORDINTREE(0x6fe00000,0x00000000)}},
+        {VT_exponent,22,0x3a9216,{DOUBLEWITHTWODWORDINTREE(0x6ff00000,0x00000000)}},
+        {VT_exponent,22,0x3a9217,{DOUBLEWITHTWODWORDINTREE(0x70000000,0x00000000)}},
+        {VT_exponent,22,0x3a9218,{DOUBLEWITHTWODWORDINTREE(0x70100000,0x00000000)}},
+        {VT_exponent,22,0x3a9219,{DOUBLEWITHTWODWORDINTREE(0x70200000,0x00000000)}},
+        {VT_exponent,22,0x3a921a,{DOUBLEWITHTWODWORDINTREE(0x70300000,0x00000000)}},
+        {VT_exponent,22,0x3a921b,{DOUBLEWITHTWODWORDINTREE(0x70400000,0x00000000)}},
+        {VT_exponent,22,0x3a921c,{DOUBLEWITHTWODWORDINTREE(0x70500000,0x00000000)}},
+        {VT_exponent,22,0x3a921d,{DOUBLEWITHTWODWORDINTREE(0x70600000,0x00000000)}},
+        {VT_exponent,22,0x3a921e,{DOUBLEWITHTWODWORDINTREE(0x70700000,0x00000000)}},
+        {VT_exponent,22,0x3a921f,{DOUBLEWITHTWODWORDINTREE(0x70800000,0x00000000)}},
+        {VT_exponent,22,0x3a9220,{DOUBLEWITHTWODWORDINTREE(0x70900000,0x00000000)}},
+        {VT_exponent,22,0x3a9221,{DOUBLEWITHTWODWORDINTREE(0x70a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9222,{DOUBLEWITHTWODWORDINTREE(0x70b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9223,{DOUBLEWITHTWODWORDINTREE(0x70c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9224,{DOUBLEWITHTWODWORDINTREE(0x70d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9225,{DOUBLEWITHTWODWORDINTREE(0x70e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9226,{DOUBLEWITHTWODWORDINTREE(0x70f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9227,{DOUBLEWITHTWODWORDINTREE(0x71000000,0x00000000)}},
+        {VT_exponent,22,0x3a9228,{DOUBLEWITHTWODWORDINTREE(0x71100000,0x00000000)}},
+        {VT_exponent,22,0x3a9229,{DOUBLEWITHTWODWORDINTREE(0x71200000,0x00000000)}},
+        {VT_exponent,22,0x3a922a,{DOUBLEWITHTWODWORDINTREE(0x71300000,0x00000000)}},
+        {VT_exponent,22,0x3a922b,{DOUBLEWITHTWODWORDINTREE(0x71400000,0x00000000)}},
+        {VT_exponent,22,0x3a922c,{DOUBLEWITHTWODWORDINTREE(0x71500000,0x00000000)}},
+        {VT_exponent,22,0x3a922d,{DOUBLEWITHTWODWORDINTREE(0x71600000,0x00000000)}},
+        {VT_exponent,22,0x3a922e,{DOUBLEWITHTWODWORDINTREE(0x71700000,0x00000000)}},
+        {VT_exponent,22,0x3a922f,{DOUBLEWITHTWODWORDINTREE(0x71800000,0x00000000)}},
+        {VT_exponent,22,0x3a9230,{DOUBLEWITHTWODWORDINTREE(0x71900000,0x00000000)}},
+        {VT_exponent,22,0x3a9231,{DOUBLEWITHTWODWORDINTREE(0x71a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9232,{DOUBLEWITHTWODWORDINTREE(0x71b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9233,{DOUBLEWITHTWODWORDINTREE(0x71c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9234,{DOUBLEWITHTWODWORDINTREE(0x71d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9235,{DOUBLEWITHTWODWORDINTREE(0x71e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9236,{DOUBLEWITHTWODWORDINTREE(0x71f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9237,{DOUBLEWITHTWODWORDINTREE(0x72000000,0x00000000)}},
+        {VT_exponent,22,0x3a9238,{DOUBLEWITHTWODWORDINTREE(0x72100000,0x00000000)}},
+        {VT_exponent,22,0x3a9239,{DOUBLEWITHTWODWORDINTREE(0x72200000,0x00000000)}},
+        {VT_exponent,22,0x3a923a,{DOUBLEWITHTWODWORDINTREE(0x72300000,0x00000000)}},
+        {VT_exponent,22,0x3a923b,{DOUBLEWITHTWODWORDINTREE(0x72400000,0x00000000)}},
+        {VT_exponent,22,0x3a923c,{DOUBLEWITHTWODWORDINTREE(0x72500000,0x00000000)}},
+        {VT_exponent,22,0x3a923d,{DOUBLEWITHTWODWORDINTREE(0x72600000,0x00000000)}},
+        {VT_exponent,22,0x3a923e,{DOUBLEWITHTWODWORDINTREE(0x72700000,0x00000000)}},
+        {VT_exponent,22,0x3a923f,{DOUBLEWITHTWODWORDINTREE(0x72800000,0x00000000)}},
+        {VT_exponent,22,0x3a9240,{DOUBLEWITHTWODWORDINTREE(0x72900000,0x00000000)}},
+        {VT_exponent,22,0x3a9241,{DOUBLEWITHTWODWORDINTREE(0x72a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9242,{DOUBLEWITHTWODWORDINTREE(0x72b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9243,{DOUBLEWITHTWODWORDINTREE(0x72c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9244,{DOUBLEWITHTWODWORDINTREE(0x72d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9245,{DOUBLEWITHTWODWORDINTREE(0x72e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9246,{DOUBLEWITHTWODWORDINTREE(0x72f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9247,{DOUBLEWITHTWODWORDINTREE(0x73000000,0x00000000)}},
+        {VT_exponent,22,0x3a9248,{DOUBLEWITHTWODWORDINTREE(0x73100000,0x00000000)}},
+        {VT_exponent,22,0x3a9249,{DOUBLEWITHTWODWORDINTREE(0x73200000,0x00000000)}},
+        {VT_exponent,22,0x3a924a,{DOUBLEWITHTWODWORDINTREE(0x73300000,0x00000000)}},
+        {VT_exponent,22,0x3a924b,{DOUBLEWITHTWODWORDINTREE(0x73400000,0x00000000)}},
+        {VT_exponent,22,0x3a924c,{DOUBLEWITHTWODWORDINTREE(0x73500000,0x00000000)}},
+        {VT_exponent,22,0x3a924d,{DOUBLEWITHTWODWORDINTREE(0x73600000,0x00000000)}},
+        {VT_exponent,22,0x3a924e,{DOUBLEWITHTWODWORDINTREE(0x73700000,0x00000000)}},
+        {VT_exponent,22,0x3a924f,{DOUBLEWITHTWODWORDINTREE(0x73800000,0x00000000)}},
+        {VT_exponent,22,0x3a9250,{DOUBLEWITHTWODWORDINTREE(0x73900000,0x00000000)}},
+        {VT_exponent,22,0x3a9251,{DOUBLEWITHTWODWORDINTREE(0x73a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9252,{DOUBLEWITHTWODWORDINTREE(0x73b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9253,{DOUBLEWITHTWODWORDINTREE(0x73c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9254,{DOUBLEWITHTWODWORDINTREE(0x73d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9255,{DOUBLEWITHTWODWORDINTREE(0x73e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9256,{DOUBLEWITHTWODWORDINTREE(0x73f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9257,{DOUBLEWITHTWODWORDINTREE(0x74000000,0x00000000)}},
+        {VT_exponent,22,0x3a9258,{DOUBLEWITHTWODWORDINTREE(0x74100000,0x00000000)}},
+        {VT_exponent,22,0x3a9259,{DOUBLEWITHTWODWORDINTREE(0x74200000,0x00000000)}},
+        {VT_exponent,22,0x3a925a,{DOUBLEWITHTWODWORDINTREE(0x74300000,0x00000000)}},
+        {VT_exponent,22,0x3a925b,{DOUBLEWITHTWODWORDINTREE(0x74400000,0x00000000)}},
+        {VT_exponent,22,0x3a925c,{DOUBLEWITHTWODWORDINTREE(0x74500000,0x00000000)}},
+        {VT_exponent,22,0x3a925d,{DOUBLEWITHTWODWORDINTREE(0x74600000,0x00000000)}},
+        {VT_exponent,22,0x3a925e,{DOUBLEWITHTWODWORDINTREE(0x74700000,0x00000000)}},
+        {VT_exponent,22,0x3a925f,{DOUBLEWITHTWODWORDINTREE(0x74800000,0x00000000)}},
+        {VT_exponent,22,0x3a9260,{DOUBLEWITHTWODWORDINTREE(0x74900000,0x00000000)}},
+        {VT_exponent,22,0x3a9261,{DOUBLEWITHTWODWORDINTREE(0x74a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9262,{DOUBLEWITHTWODWORDINTREE(0x74b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9263,{DOUBLEWITHTWODWORDINTREE(0x74c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9264,{DOUBLEWITHTWODWORDINTREE(0x74d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9265,{DOUBLEWITHTWODWORDINTREE(0x74e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9266,{DOUBLEWITHTWODWORDINTREE(0x74f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9267,{DOUBLEWITHTWODWORDINTREE(0x75000000,0x00000000)}},
+        {VT_exponent,22,0x3a9268,{DOUBLEWITHTWODWORDINTREE(0x75100000,0x00000000)}},
+        {VT_exponent,22,0x3a9269,{DOUBLEWITHTWODWORDINTREE(0x75200000,0x00000000)}},
+        {VT_exponent,22,0x3a926a,{DOUBLEWITHTWODWORDINTREE(0x75300000,0x00000000)}},
+        {VT_exponent,22,0x3a926b,{DOUBLEWITHTWODWORDINTREE(0x75400000,0x00000000)}},
+        {VT_exponent,22,0x3a926c,{DOUBLEWITHTWODWORDINTREE(0x75500000,0x00000000)}},
+        {VT_exponent,22,0x3a926d,{DOUBLEWITHTWODWORDINTREE(0x75600000,0x00000000)}},
+        {VT_exponent,22,0x3a926e,{DOUBLEWITHTWODWORDINTREE(0x75700000,0x00000000)}},
+        {VT_exponent,22,0x3a926f,{DOUBLEWITHTWODWORDINTREE(0x75800000,0x00000000)}},
+        {VT_exponent,22,0x3a9270,{DOUBLEWITHTWODWORDINTREE(0x75900000,0x00000000)}},
+        {VT_exponent,22,0x3a9271,{DOUBLEWITHTWODWORDINTREE(0x75a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9272,{DOUBLEWITHTWODWORDINTREE(0x75b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9273,{DOUBLEWITHTWODWORDINTREE(0x75c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9274,{DOUBLEWITHTWODWORDINTREE(0x75d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9275,{DOUBLEWITHTWODWORDINTREE(0x75e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9276,{DOUBLEWITHTWODWORDINTREE(0x75f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9277,{DOUBLEWITHTWODWORDINTREE(0x76000000,0x00000000)}},
+        {VT_exponent,22,0x3a9278,{DOUBLEWITHTWODWORDINTREE(0x76100000,0x00000000)}},
+        {VT_exponent,22,0x3a9279,{DOUBLEWITHTWODWORDINTREE(0x76200000,0x00000000)}},
+        {VT_exponent,22,0x3a927a,{DOUBLEWITHTWODWORDINTREE(0x76300000,0x00000000)}},
+        {VT_exponent,22,0x3a927b,{DOUBLEWITHTWODWORDINTREE(0x76400000,0x00000000)}},
+        {VT_exponent,22,0x3a927c,{DOUBLEWITHTWODWORDINTREE(0x76500000,0x00000000)}},
+        {VT_exponent,22,0x3a927d,{DOUBLEWITHTWODWORDINTREE(0x76600000,0x00000000)}},
+        {VT_exponent,22,0x3a927e,{DOUBLEWITHTWODWORDINTREE(0x76700000,0x00000000)}},
+        {VT_exponent,22,0x3a927f,{DOUBLEWITHTWODWORDINTREE(0x76800000,0x00000000)}},
+        {VT_exponent,22,0x3a9280,{DOUBLEWITHTWODWORDINTREE(0x76900000,0x00000000)}},
+        {VT_exponent,22,0x3a9281,{DOUBLEWITHTWODWORDINTREE(0x76a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9282,{DOUBLEWITHTWODWORDINTREE(0x76b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9283,{DOUBLEWITHTWODWORDINTREE(0x76c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9284,{DOUBLEWITHTWODWORDINTREE(0x76d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9285,{DOUBLEWITHTWODWORDINTREE(0x76e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9286,{DOUBLEWITHTWODWORDINTREE(0x76f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9287,{DOUBLEWITHTWODWORDINTREE(0x77000000,0x00000000)}},
+        {VT_exponent,22,0x3a9288,{DOUBLEWITHTWODWORDINTREE(0x77100000,0x00000000)}},
+        {VT_exponent,22,0x3a9289,{DOUBLEWITHTWODWORDINTREE(0x77200000,0x00000000)}},
+        {VT_exponent,22,0x3a928a,{DOUBLEWITHTWODWORDINTREE(0x77300000,0x00000000)}},
+        {VT_exponent,22,0x3a928b,{DOUBLEWITHTWODWORDINTREE(0x77400000,0x00000000)}},
+        {VT_exponent,22,0x3a928c,{DOUBLEWITHTWODWORDINTREE(0x77500000,0x00000000)}},
+        {VT_exponent,22,0x3a928d,{DOUBLEWITHTWODWORDINTREE(0x77600000,0x00000000)}},
+        {VT_exponent,22,0x3a928e,{DOUBLEWITHTWODWORDINTREE(0x77700000,0x00000000)}},
+        {VT_exponent,22,0x3a928f,{DOUBLEWITHTWODWORDINTREE(0x77800000,0x00000000)}},
+        {VT_exponent,22,0x3a9290,{DOUBLEWITHTWODWORDINTREE(0x77900000,0x00000000)}},
+        {VT_exponent,22,0x3a9291,{DOUBLEWITHTWODWORDINTREE(0x77a00000,0x00000000)}},
+        {VT_exponent,22,0x3a9292,{DOUBLEWITHTWODWORDINTREE(0x77b00000,0x00000000)}},
+        {VT_exponent,22,0x3a9293,{DOUBLEWITHTWODWORDINTREE(0x77c00000,0x00000000)}},
+        {VT_exponent,22,0x3a9294,{DOUBLEWITHTWODWORDINTREE(0x77d00000,0x00000000)}},
+        {VT_exponent,22,0x3a9295,{DOUBLEWITHTWODWORDINTREE(0x77e00000,0x00000000)}},
+        {VT_exponent,22,0x3a9296,{DOUBLEWITHTWODWORDINTREE(0x77f00000,0x00000000)}},
+        {VT_exponent,22,0x3a9297,{DOUBLEWITHTWODWORDINTREE(0x78000000,0x00000000)}},
+        {VT_exponent,22,0x3a9298,{DOUBLEWITHTWODWORDINTREE(0x78100000,0x00000000)}},
+        {VT_exponent,22,0x3a9299,{DOUBLEWITHTWODWORDINTREE(0x78200000,0x00000000)}},
+        {VT_exponent,22,0x3a929a,{DOUBLEWITHTWODWORDINTREE(0x78300000,0x00000000)}},
+        {VT_exponent,22,0x3a929b,{DOUBLEWITHTWODWORDINTREE(0x78400000,0x00000000)}},
+        {VT_exponent,22,0x3a929c,{DOUBLEWITHTWODWORDINTREE(0x78500000,0x00000000)}},
+        {VT_exponent,22,0x3a929d,{DOUBLEWITHTWODWORDINTREE(0x78600000,0x00000000)}},
+        {VT_exponent,22,0x3a929e,{DOUBLEWITHTWODWORDINTREE(0x78700000,0x00000000)}},
+        {VT_exponent,22,0x3a929f,{DOUBLEWITHTWODWORDINTREE(0x78800000,0x00000000)}},
+        {VT_exponent,22,0x3a92a0,{DOUBLEWITHTWODWORDINTREE(0x78900000,0x00000000)}},
+        {VT_exponent,22,0x3a92a1,{DOUBLEWITHTWODWORDINTREE(0x78a00000,0x00000000)}},
+        {VT_exponent,22,0x3a92a2,{DOUBLEWITHTWODWORDINTREE(0x78b00000,0x00000000)}},
+        {VT_exponent,22,0x3a92a3,{DOUBLEWITHTWODWORDINTREE(0x78c00000,0x00000000)}},
+        {VT_exponent,22,0x3a92a4,{DOUBLEWITHTWODWORDINTREE(0x78d00000,0x00000000)}},
+        {VT_exponent,22,0x3a92a5,{DOUBLEWITHTWODWORDINTREE(0x78e00000,0x00000000)}},
+        {VT_exponent,22,0x3a92a6,{DOUBLEWITHTWODWORDINTREE(0x78f00000,0x00000000)}},
+        {VT_exponent,22,0x3a92a7,{DOUBLEWITHTWODWORDINTREE(0x79000000,0x00000000)}},
+        {VT_exponent,22,0x3a92a8,{DOUBLEWITHTWODWORDINTREE(0x79100000,0x00000000)}},
+        {VT_exponent,22,0x3a92a9,{DOUBLEWITHTWODWORDINTREE(0x79200000,0x00000000)}},
+        {VT_exponent,22,0x3a92aa,{DOUBLEWITHTWODWORDINTREE(0x79300000,0x00000000)}},
+        {VT_exponent,22,0x3a92ab,{DOUBLEWITHTWODWORDINTREE(0x79400000,0x00000000)}},
+        {VT_exponent,22,0x3a92ac,{DOUBLEWITHTWODWORDINTREE(0x79500000,0x00000000)}},
+        {VT_exponent,22,0x3a92ad,{DOUBLEWITHTWODWORDINTREE(0x79600000,0x00000000)}},
+        {VT_exponent,22,0x3a92ae,{DOUBLEWITHTWODWORDINTREE(0x79700000,0x00000000)}},
+        {VT_exponent,22,0x3a92af,{DOUBLEWITHTWODWORDINTREE(0x79800000,0x00000000)}},
+        {VT_exponent,22,0x3a92b0,{DOUBLEWITHTWODWORDINTREE(0x79900000,0x00000000)}},
+        {VT_exponent,22,0x3a92b1,{DOUBLEWITHTWODWORDINTREE(0x79a00000,0x00000000)}},
+        {VT_exponent,22,0x3a92b2,{DOUBLEWITHTWODWORDINTREE(0x79b00000,0x00000000)}},
+        {VT_exponent,22,0x3a92b3,{DOUBLEWITHTWODWORDINTREE(0x79c00000,0x00000000)}},
+        {VT_exponent,22,0x3a92b4,{DOUBLEWITHTWODWORDINTREE(0x79d00000,0x00000000)}},
+        {VT_exponent,22,0x3a92b5,{DOUBLEWITHTWODWORDINTREE(0x79e00000,0x00000000)}},
+        {VT_exponent,22,0x3a92b6,{DOUBLEWITHTWODWORDINTREE(0x79f00000,0x00000000)}},
+        {VT_exponent,22,0x3a92b7,{DOUBLEWITHTWODWORDINTREE(0x7a000000,0x00000000)}},
+        {VT_exponent,22,0x3a92b8,{DOUBLEWITHTWODWORDINTREE(0x7a100000,0x00000000)}},
+        {VT_exponent,22,0x3a92b9,{DOUBLEWITHTWODWORDINTREE(0x7a200000,0x00000000)}},
+        {VT_exponent,22,0x3a92ba,{DOUBLEWITHTWODWORDINTREE(0x7a300000,0x00000000)}},
+        {VT_exponent,22,0x3a92bb,{DOUBLEWITHTWODWORDINTREE(0x7a400000,0x00000000)}},
+        {VT_exponent,22,0x3a92bc,{DOUBLEWITHTWODWORDINTREE(0x7a500000,0x00000000)}},
+        {VT_exponent,22,0x3a92bd,{DOUBLEWITHTWODWORDINTREE(0x7a600000,0x00000000)}},
+        {VT_exponent,22,0x3a92be,{DOUBLEWITHTWODWORDINTREE(0x7a700000,0x00000000)}},
+        {VT_exponent,22,0x3a92bf,{DOUBLEWITHTWODWORDINTREE(0x7a800000,0x00000000)}},
+        {VT_exponent,22,0x3a92c0,{DOUBLEWITHTWODWORDINTREE(0x7a900000,0x00000000)}},
+        {VT_exponent,22,0x3a92c1,{DOUBLEWITHTWODWORDINTREE(0x7aa00000,0x00000000)}},
+        {VT_exponent,22,0x3a92c2,{DOUBLEWITHTWODWORDINTREE(0x7ab00000,0x00000000)}},
+        {VT_exponent,22,0x3a92c3,{DOUBLEWITHTWODWORDINTREE(0x7ac00000,0x00000000)}},
+        {VT_exponent,22,0x3a92c4,{DOUBLEWITHTWODWORDINTREE(0x7ad00000,0x00000000)}},
+        {VT_exponent,22,0x3a92c5,{DOUBLEWITHTWODWORDINTREE(0x7ae00000,0x00000000)}},
+        {VT_exponent,22,0x3a92c6,{DOUBLEWITHTWODWORDINTREE(0x7af00000,0x00000000)}},
+        {VT_exponent,22,0x3a92c7,{DOUBLEWITHTWODWORDINTREE(0x7b000000,0x00000000)}},
+        {VT_exponent,22,0x3a92c8,{DOUBLEWITHTWODWORDINTREE(0x7b100000,0x00000000)}},
+        {VT_exponent,22,0x3a92c9,{DOUBLEWITHTWODWORDINTREE(0x7b200000,0x00000000)}},
+        {VT_exponent,22,0x3a92ca,{DOUBLEWITHTWODWORDINTREE(0x7b300000,0x00000000)}},
+        {VT_exponent,22,0x3a92cb,{DOUBLEWITHTWODWORDINTREE(0x7b400000,0x00000000)}},
+        {VT_exponent,22,0x3a92cc,{DOUBLEWITHTWODWORDINTREE(0x7b500000,0x00000000)}},
+        {VT_exponent,22,0x3a92cd,{DOUBLEWITHTWODWORDINTREE(0x7b600000,0x00000000)}},
+        {VT_exponent,22,0x3a92ce,{DOUBLEWITHTWODWORDINTREE(0x7b700000,0x00000000)}},
+        {VT_exponent,22,0x3a92cf,{DOUBLEWITHTWODWORDINTREE(0x7b800000,0x00000000)}},
+        {VT_exponent,22,0x3a92d0,{DOUBLEWITHTWODWORDINTREE(0x7b900000,0x00000000)}},
+        {VT_exponent,22,0x3a92d1,{DOUBLEWITHTWODWORDINTREE(0x7ba00000,0x00000000)}},
+        {VT_exponent,22,0x3a92d2,{DOUBLEWITHTWODWORDINTREE(0x7bb00000,0x00000000)}},
+        {VT_exponent,22,0x3a92d3,{DOUBLEWITHTWODWORDINTREE(0x7bc00000,0x00000000)}},
+        {VT_exponent,22,0x3a92d4,{DOUBLEWITHTWODWORDINTREE(0x7bd00000,0x00000000)}},
+        {VT_exponent,22,0x3a92d5,{DOUBLEWITHTWODWORDINTREE(0x7be00000,0x00000000)}},
+        {VT_exponent,22,0x3a92d6,{DOUBLEWITHTWODWORDINTREE(0x7bf00000,0x00000000)}},
+        {VT_exponent,22,0x3a92d7,{DOUBLEWITHTWODWORDINTREE(0x7c000000,0x00000000)}},
+        {VT_exponent,22,0x3a92d8,{DOUBLEWITHTWODWORDINTREE(0x7c100000,0x00000000)}},
+        {VT_exponent,22,0x3a92d9,{DOUBLEWITHTWODWORDINTREE(0x7c200000,0x00000000)}},
+        {VT_exponent,22,0x3a92da,{DOUBLEWITHTWODWORDINTREE(0x7c300000,0x00000000)}},
+        {VT_exponent,22,0x3a92db,{DOUBLEWITHTWODWORDINTREE(0x7c400000,0x00000000)}},
+        {VT_exponent,22,0x3a92dc,{DOUBLEWITHTWODWORDINTREE(0x7c500000,0x00000000)}},
+        {VT_exponent,22,0x3a92dd,{DOUBLEWITHTWODWORDINTREE(0x7c600000,0x00000000)}},
+        {VT_exponent,22,0x3a92de,{DOUBLEWITHTWODWORDINTREE(0x7c700000,0x00000000)}},
+        {VT_exponent,22,0x3a92df,{DOUBLEWITHTWODWORDINTREE(0x7c800000,0x00000000)}},
+        {VT_exponent,22,0x3a92e0,{DOUBLEWITHTWODWORDINTREE(0x7c900000,0x00000000)}},
+        {VT_exponent,22,0x3a92e1,{DOUBLEWITHTWODWORDINTREE(0x7ca00000,0x00000000)}},
+        {VT_exponent,22,0x3a92e2,{DOUBLEWITHTWODWORDINTREE(0x7cb00000,0x00000000)}},
+        {VT_exponent,22,0x3a92e3,{DOUBLEWITHTWODWORDINTREE(0x7cc00000,0x00000000)}},
+        {VT_exponent,22,0x3a92e4,{DOUBLEWITHTWODWORDINTREE(0x7cd00000,0x00000000)}},
+        {VT_exponent,22,0x3a92e5,{DOUBLEWITHTWODWORDINTREE(0x7ce00000,0x00000000)}},
+        {VT_exponent,22,0x3a92e6,{DOUBLEWITHTWODWORDINTREE(0x7cf00000,0x00000000)}},
+        {VT_exponent,22,0x3a92e7,{DOUBLEWITHTWODWORDINTREE(0x7d000000,0x00000000)}},
+        {VT_exponent,22,0x3a92e8,{DOUBLEWITHTWODWORDINTREE(0x7d100000,0x00000000)}},
+        {VT_exponent,22,0x3a92e9,{DOUBLEWITHTWODWORDINTREE(0x7d200000,0x00000000)}},
+        {VT_exponent,22,0x3a92ea,{DOUBLEWITHTWODWORDINTREE(0x7d300000,0x00000000)}},
+        {VT_exponent,22,0x3a92eb,{DOUBLEWITHTWODWORDINTREE(0x7d400000,0x00000000)}},
+        {VT_exponent,22,0x3a92ec,{DOUBLEWITHTWODWORDINTREE(0x7d500000,0x00000000)}},
+        {VT_exponent,22,0x3a92ed,{DOUBLEWITHTWODWORDINTREE(0x7d600000,0x00000000)}},
+        {VT_exponent,22,0x3a92ee,{DOUBLEWITHTWODWORDINTREE(0x7d700000,0x00000000)}},
+        {VT_exponent,22,0x3a92ef,{DOUBLEWITHTWODWORDINTREE(0x7d800000,0x00000000)}},
+        {VT_exponent,22,0x3a92f0,{DOUBLEWITHTWODWORDINTREE(0x7d900000,0x00000000)}},
+        {VT_exponent,22,0x3a92f1,{DOUBLEWITHTWODWORDINTREE(0x7da00000,0x00000000)}},
+        {VT_exponent,22,0x3a92f2,{DOUBLEWITHTWODWORDINTREE(0x7db00000,0x00000000)}},
+        {VT_exponent,22,0x3a92f3,{DOUBLEWITHTWODWORDINTREE(0x7dc00000,0x00000000)}},
+        {VT_exponent,22,0x3a92f4,{DOUBLEWITHTWODWORDINTREE(0x7dd00000,0x00000000)}},
+        {VT_exponent,22,0x3a92f5,{DOUBLEWITHTWODWORDINTREE(0x7de00000,0x00000000)}},
+        {VT_exponent,22,0x3a92f6,{DOUBLEWITHTWODWORDINTREE(0x7df00000,0x00000000)}},
+        {VT_exponent,22,0x3a92f7,{DOUBLEWITHTWODWORDINTREE(0x7e000000,0x00000000)}},
+        {VT_exponent,22,0x3a92f8,{DOUBLEWITHTWODWORDINTREE(0x7e100000,0x00000000)}},
+        {VT_exponent,22,0x3a92f9,{DOUBLEWITHTWODWORDINTREE(0x7e200000,0x00000000)}},
+        {VT_exponent,22,0x3a92fa,{DOUBLEWITHTWODWORDINTREE(0x7e300000,0x00000000)}},
+        {VT_exponent,22,0x3a92fb,{DOUBLEWITHTWODWORDINTREE(0x7e400000,0x00000000)}},
+        {VT_exponent,22,0x3a92fc,{DOUBLEWITHTWODWORDINTREE(0x7e500000,0x00000000)}},
+        {VT_exponent,22,0x3a92fd,{DOUBLEWITHTWODWORDINTREE(0x7e600000,0x00000000)}},
+        {VT_exponent,22,0x3a92fe,{DOUBLEWITHTWODWORDINTREE(0x7e700000,0x00000000)}},
+        {VT_exponent,22,0x3a92ff,{DOUBLEWITHTWODWORDINTREE(0x7e800000,0x00000000)}},
+        {VT_exponent,22,0x3a95a0,{DOUBLEWITHTWODWORDINTREE(0x7e900000,0x00000000)}},
+        {VT_exponent,22,0x3a95a1,{DOUBLEWITHTWODWORDINTREE(0x7ea00000,0x00000000)}},
+        {VT_exponent,22,0x3a95a2,{DOUBLEWITHTWODWORDINTREE(0x7eb00000,0x00000000)}},
+        {VT_exponent,22,0x3a95a3,{DOUBLEWITHTWODWORDINTREE(0x7ec00000,0x00000000)}},
+        {VT_exponent,22,0x3a95a4,{DOUBLEWITHTWODWORDINTREE(0x7ed00000,0x00000000)}},
+        {VT_exponent,22,0x3a95a5,{DOUBLEWITHTWODWORDINTREE(0x7ee00000,0x00000000)}},
+        {VT_exponent,22,0x3a95a6,{DOUBLEWITHTWODWORDINTREE(0x7ef00000,0x00000000)}},
+        {VT_exponent,22,0x3a95a7,{DOUBLEWITHTWODWORDINTREE(0x7f000000,0x00000000)}},
+        {VT_exponent,22,0x3a95a8,{DOUBLEWITHTWODWORDINTREE(0x7f100000,0x00000000)}},
+        {VT_exponent,22,0x3a95a9,{DOUBLEWITHTWODWORDINTREE(0x7f200000,0x00000000)}},
+        {VT_exponent,22,0x3a95aa,{DOUBLEWITHTWODWORDINTREE(0x7f300000,0x00000000)}},
+        {VT_exponent,22,0x3a95ab,{DOUBLEWITHTWODWORDINTREE(0x7f400000,0x00000000)}},
+        {VT_exponent,22,0x3a95ac,{DOUBLEWITHTWODWORDINTREE(0x7f500000,0x00000000)}},
+        {VT_exponent,22,0x3a95ad,{DOUBLEWITHTWODWORDINTREE(0x7f600000,0x00000000)}},
+        {VT_exponent,22,0x3a95ae,{DOUBLEWITHTWODWORDINTREE(0x7f700000,0x00000000)}},
+        {VT_exponent,22,0x3a95af,{DOUBLEWITHTWODWORDINTREE(0x7f800000,0x00000000)}},
+        {VT_exponent,22,0x3b8fe0,{DOUBLEWITHTWODWORDINTREE(0x7f900000,0x00000000)}},
+        {VT_exponent,22,0x3b8fe1,{DOUBLEWITHTWODWORDINTREE(0x7fa00000,0x00000000)}},
+        {VT_exponent,22,0x3b8fe2,{DOUBLEWITHTWODWORDINTREE(0x7fb00000,0x00000000)}},
+        {VT_exponent,22,0x3b8fe3,{DOUBLEWITHTWODWORDINTREE(0x7fc00000,0x00000000)}},
+        {VT_exponent,21,0x68e90,{DOUBLEWITHTWODWORDINTREE(0x7fd00000,0x00000000)}},
+        {VT_exponent,21,0x68e91,{DOUBLEWITHTWODWORDINTREE(0x7fe00000,0x00000000)}},
+        {VT_exponent,21,0x68e98,{DOUBLEWITHTWODWORDINTREE(0x7ff80000,0x00000000)}},
+}; // End of acofdoe array
Index: scribus/prc/writePRC.cc
===================================================================
--- scribus/prc/writePRC.cc	(revision 0)
+++ scribus/prc/writePRC.cc	(revision 13839)
@@ -0,0 +1,192 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+/************
+*
+*   This file is part of a tool for producing 3D content in the PRC format.
+*   Copyright (C) 2008  Orest Shardt <shardtor (at) gmail dot com>
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU Lesser General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU Lesser General Public License for more details.
+*
+*   You should have received a copy of the GNU Lesser General Public License
+*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+*************/
+
+#include "writePRC.h"
+
+void UserData::write(PRCbitStream &pbs)
+{
+  pbs << size;
+  if(size > 0)
+  {
+    uint32_t i = 0;
+    for(; i < size/8; ++i)
+    {
+      pbs << data[i];
+    }
+    if(size % 8 != 0)
+    {
+      for(uint32_t j = 0; j < size%8; ++j) // 0-based, big endian bit counting
+      {
+        pbs << (bool)(data[i] & (0x80 >> j));
+      }
+    }
+  }
+}
+
+void SingleAttribute::write(PRCbitStream &pbs)
+{
+  pbs << titleIsInteger;
+  if(titleIsInteger)
+    pbs << title.integer;
+  else
+    pbs << title.text;
+  pbs << type;
+  switch(type)
+  {
+    case KEPRCModellerAttributeTypeInt:
+      pbs << data.integer;
+      break;
+    case KEPRCModellerAttributeTypeReal:
+      pbs << data.real;
+      break;
+    case KEPRCModellerAttributeTypeTime:
+      pbs << data.time;
+      break;
+    case KEPRCModellerAttributeTypeString:
+      pbs << data.text;
+      break;
+    default:
+      break;
+  }
+}
+
+void Attribute::write(PRCbitStream &pbs)
+{
+  pbs << (uint32_t)PRC_TYPE_MISC_Attribute;
+  pbs << titleIsInteger;
+  if(titleIsInteger)
+    pbs << title.integer;
+  else
+    pbs << title.text;
+  pbs << sizeOfAttributeKeys;
+  for(uint32_t i = 0; i < sizeOfAttributeKeys; ++i)
+  {
+    singleAttributes[i].write(pbs);
+  }
+}
+
+void Attributes::write(PRCbitStream &pbs)
+{
+  pbs << numberOfAttributes;
+  for(uint32_t i = 0; i < numberOfAttributes; ++i)
+  {
+    attributes[i].write(pbs);
+  }
+}
+
+void ContentPRCBase::write(PRCbitStream &pbs)
+{
+  attributes->write(pbs);
+  writeName(pbs,name);
+  if(eligibleForReference)
+  {
+    pbs << CADID << CADPersistentID << PRCID;
+  }
+}
+
+AttributeTitle EMPTY_ATTRIBUTE_TITLE = {(char*)""};
+Attribute EMPTY_ATTRIBUTE(false,EMPTY_ATTRIBUTE_TITLE,0,NULL);
+Attributes EMPTY_ATTRIBUTES(0,0);
+ContentPRCBase EMPTY_CONTENTPRCBASE(&EMPTY_ATTRIBUTES);
+
+std::string currentName;
+void writeName(PRCbitStream &pbs,const std::string &name)
+{
+  pbs << (name == currentName);
+  if(name != currentName)
+  {
+    pbs << name;
+    currentName = name;
+  }
+}
+
+void resetName()
+{
+  currentName = "";
+}
+
+uint32_t layer_index = m1;
+uint32_t index_of_line_style = m1;
+uint32_t behaviour_bit_field = 1;
+
+void writeGraphics(PRCbitStream &pbs,uint32_t l,uint32_t i,uint32_t b,bool force)
+{
+  if(force || layer_index != l || index_of_line_style != i || behaviour_bit_field != b)
+  {
+    pbs << false << (uint32_t)(l+1) << (uint32_t)(i+1)
+        << (uint8_t)(b&0xFF) << (uint8_t)((b>>8)&0xFF);
+    layer_index = l;
+    index_of_line_style = i;
+    behaviour_bit_field = b;
+  }
+  else
+    pbs << true;
+}
+
+void resetGraphics()
+{
+  layer_index = m1;
+  index_of_line_style = m1;
+  behaviour_bit_field = 1;
+}
+
+void resetGraphicsAndName()
+{
+  resetGraphics(); resetName();
+}
+
+uint32_t makeCADID()
+{
+  static uint32_t ID = 1;
+  return ID++;
+}
+
+uint32_t makePRCID()
+{
+  static uint32_t ID = 1;
+  return ID++;
+}
+
+void writeUnit(PRCbitStream &out,bool fromCAD,double unit)
+{
+  out << fromCAD << unit;
+}
+
+void writeEmptyMarkups(PRCbitStream &out)
+{
+  out << (uint32_t)0 // # of linked items
+      << (uint32_t)0 // # of leaders
+      << (uint32_t)0 // # of markups
+      << (uint32_t)0; // # of annotation entities
+}
Index: scribus/prc/PRCbitStream.h
===================================================================
--- scribus/prc/PRCbitStream.h	(revision 0)
+++ scribus/prc/PRCbitStream.h	(revision 13839)
@@ -0,0 +1,84 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+/************
+*
+*   This file is part of a tool for producing 3D content in the PRC format.
+*   Copyright (C) 2008  Orest Shardt <shardtor (at) gmail dot com>
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU Lesser General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU Lesser General Public License for more details.
+*
+*   You should have received a copy of the GNU Lesser General Public License
+*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+*************/
+
+#ifndef __PRC_BIT_STREAM_H
+#define __PRC_BIT_STREAM_H
+
+#include <string>
+#include <stdlib.h>
+#include <stdint.h>
+
+#define CHUNK_SIZE (1024)
+// Is this a reasonable initial size?
+
+class PRCbitStream
+{
+  public:
+    PRCbitStream(uint8_t*& buff, unsigned int l) : byteIndex(0), bitIndex(0),
+                 allocatedLength(l), data(buff), compressed(false)
+    {
+      if(data == 0)
+      {
+        getAChunk();
+      }
+    }
+
+    unsigned int getSize() const;
+    uint8_t* getData();
+
+    PRCbitStream& operator <<(const std::string&);
+    PRCbitStream& operator <<(bool);
+    PRCbitStream& operator <<(uint32_t);
+    PRCbitStream& operator <<(uint8_t);
+    PRCbitStream& operator <<(int32_t);
+    PRCbitStream& operator <<(double);
+    PRCbitStream& operator <<(const char*);
+
+    void compress();
+  private:
+    void writeBit(bool);
+    void writeBits(uint32_t,uint8_t);
+    void writeByte(uint8_t);
+    void nextByte();
+    void nextBit();
+    void getAChunk();
+    // bitIndex is "big endian", zero based, location of next bit to write
+    unsigned int byteIndex,bitIndex;
+    unsigned int allocatedLength;
+    uint8_t*& data;
+    bool compressed;
+    uint32_t compressedDataSize;
+};
+
+#endif // __PRC_BIT_STREAM_H
Index: scribus/prc/PRCdouble.h
===================================================================
--- scribus/prc/PRCdouble.h	(revision 0)
+++ scribus/prc/PRCdouble.h	(revision 13839)
@@ -0,0 +1,125 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#ifndef __PRC_DOUBLE_H
+#define __PRC_DOUBLE_H
+
+#include <cstdlib>
+#include <cmath>
+
+#ifdef HAVE_CONFIG_H
+#include "scconfig.h"
+#endif
+// from Adobe's documentation
+
+union ieee754_double
+{
+ double d;
+ /* This is the IEEE 754 double-precision format. */
+ struct
+ {
+#if defined(WORDS_BIGENDIAN)
+  unsigned int negative:1;
+  unsigned int exponent:11;
+  /* Together these comprise the mantissa.  */
+  unsigned int mantissa0:20;
+  unsigned int mantissa1:32;
+#else
+  /* Together these comprise the mantissa.  */
+  unsigned int mantissa1:32;
+  unsigned int mantissa0:20;
+  unsigned int exponent:11;
+  unsigned int negative:1;
+#endif
+ } ieee;
+};
+
+
+
+
+enum ValueType {VT_double,VT_exponent};
+
+struct sCodageOfFrequentDoubleOrExponent
+{
+  short Type;
+  short NumberOfBits;
+  unsigned Bits;
+  union {
+    unsigned ul[2];
+    double Value;
+  } u2uod;
+};
+#if defined(WORDS_BIGENDIAN)
+#       define DOUBLEWITHTWODWORD(upper,lower)  upper,lower
+#       define UPPERPOWER       (0)
+#       define LOWERPOWER       (!UPPERPOWER)
+
+#       define NEXTBYTE(pbd)                            ((pbd)++)
+#       define PREVIOUSBYTE(pbd)                ((pbd)--)
+#       define MOREBYTE(pbd,pbend)              ((pbd)<=(pbend))
+#       define OFFSETBYTE(pbd,offset)   ((pbd)+=offset)
+#       define BEFOREBYTE(pbd)                  ((pbd)-1)
+#       define DIFFPOINTERS(p1,p2)              ((p1)-(p2))
+#       define SEARCHBYTE(pbstart,b,nb) (unsigned char *)memrchr((pbstart),(b),(nb))
+#       define BYTEAT(pb,i)     *((pb)-(i))
+#else
+#       define DOUBLEWITHTWODWORD(upper,lower)  lower,upper
+#       define UPPERPOWER       (1)
+#       define LOWERPOWER       (!UPPERPOWER)
+
+#       define NEXTBYTE(pbd)                            ((pbd)--)
+#       define PREVIOUSBYTE(pbd)                ((pbd)++)
+#       define MOREBYTE(pbd,pbend)              ((pbd)>=(pbend))
+#       define OFFSETBYTE(pbd,offset)   ((pbd)-=offset)
+#       define BEFOREBYTE(pbd)                  ((pbd)+1)
+#       define DIFFPOINTERS(p1,p2)              ((unsigned)((p2)-(p1)))
+#       define SEARCHBYTE(pbstart,b,nb) (unsigned char *)memchr((pbstart),(b),(nb))
+#       define BYTEAT(pb,i)     *((pb)+(i))
+#endif
+
+#define MAXLENGTHFORCOMPRESSEDTYPE      ((22+1+1+4+6*(1+8))+7)/8
+
+#define NEGATIVE(d)     (((union ieee754_double *)&(d))->ieee.negative)
+#define EXPONENT(d)     (((union ieee754_double *)&(d))->ieee.exponent)
+#define MANTISSA0(d)    (((union ieee754_double *)&(d))->ieee.mantissa0)
+#define MANTISSA1(d)    (((union ieee754_double *)&(d))->ieee.mantissa1)
+
+typedef unsigned char PRCbyte;
+typedef unsigned short PRCword;
+typedef unsigned PRCdword;
+
+extern PRCdword stadwZero[2],stadwNegativeZero[2];
+
+#define NUMBEROFELEMENTINACOFDOE   (2077)
+
+#if defined( WORDS_BIGENDIAN )
+#       define DOUBLEWITHTWODWORDINTREE(upper,lower)    {upper,lower} 
+#else
+#       define DOUBLEWITHTWODWORDINTREE(upper,lower)    {lower,upper}
+#endif
+extern sCodageOfFrequentDoubleOrExponent acofdoe[NUMBEROFELEMENTINACOFDOE];
+
+struct sCodageOfFrequentDoubleOrExponent* getcofdoe(unsigned,short);
+
+#define STAT_V
+#define STAT_DOUBLE
+
+int stCOFDOECompare(const void*,const void*);
+
+#if defined(WORDS_BIGENDIAN)
+void *memrchr(const void *,int,size_t);
+#endif
+
+
+#endif // __PRC_DOUBLE_H
Index: scribus/prc/writePRC.h
===================================================================
--- scribus/prc/writePRC.h	(revision 0)
+++ scribus/prc/writePRC.h	(revision 13839)
@@ -0,0 +1,186 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+/************
+*
+*   This file is part of a tool for producing 3D content in the PRC format.
+*   Copyright (C) 2008  Orest Shardt <shardtor (at) gmail dot com>
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU Lesser General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU Lesser General Public License for more details.
+*
+*   You should have received a copy of the GNU Lesser General Public License
+*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+*************/
+
+#ifndef __WRITE_PRC_H
+#define __WRITE_PRC_H
+#include <string>
+#include "PRCbitStream.h"
+#include "PRC.h"
+
+struct Point3d
+{
+  double x,y,z;
+  Point3d(double a, double b, double c) : x(a),y(b),z(c) {}
+  void write(PRCbitStream &out)
+  {
+    out << x << y << z;
+  }
+};
+
+struct Extent3d
+{
+  Point3d min,max;
+  Extent3d(const Point3d &m1, const Point3d& m2) : min(m1),max(m2) {}
+  void write(PRCbitStream &out)
+  {
+    // flip the order? Following the documentation, in a real file, min>max.
+    // Considering the file to be right, min and max can be flipped in both places (here and in description)
+    // resulting in no practical difference.
+    // But in other places (Extent3D and Extent1D), min is really before max, so for consistency
+    // this is left alone.
+    min.write(out);
+    max.write(out);
+  }
+};
+
+class UUID
+{
+  public:
+    UUID(uint32_t u0, uint32_t u1, uint32_t u2, uint32_t u3) :
+      id0(u0),id1(u1),id2(u2),id3(u3) {}
+    void write(PRCbitStream &out)
+    {
+      out << id0 << id1 << id2 << id3;
+    }
+  private:
+    uint32_t id0,id1,id2,id3;
+};
+
+uint32_t makeCADID();
+uint32_t makePRCID();
+void writeUnit(PRCbitStream &,bool,double);
+
+void writeEmptyMarkups(PRCbitStream&);
+
+class UserData
+{
+  public:
+    UserData(uint32_t s = 0, uint8_t* d = 0) : size(s),data(d) {}
+    void write(PRCbitStream&);
+  private:
+    uint32_t size;
+    uint8_t* data;
+};
+
+union SingleAttributeData
+{
+  int32_t integer;
+  double real;
+  uint32_t time;
+  const char *text;
+};
+
+union AttributeTitle
+{
+  const char *text;
+  uint32_t integer;
+};
+
+class SingleAttribute
+{
+  public:
+    SingleAttribute() {}
+    SingleAttribute(bool b,AttributeTitle t,uint32_t y,SingleAttributeData d) : 
+      titleIsInteger(b), title(t), type(y), data(d) {}
+    void write(PRCbitStream&);
+  private:
+    bool titleIsInteger;
+    AttributeTitle title;
+    uint32_t type;
+    SingleAttributeData data;
+};
+
+class Attribute
+{
+  public:
+    Attribute(bool t,AttributeTitle v, uint32_t s, SingleAttribute* sa) :
+      titleIsInteger(t),title(v), sizeOfAttributeKeys(s), singleAttributes(sa)
+      {}
+    void write(PRCbitStream &);
+  private:
+    bool titleIsInteger;
+    AttributeTitle title;
+    uint32_t sizeOfAttributeKeys;
+    SingleAttribute *singleAttributes;
+};
+
+class Attributes
+{
+  public:
+    Attributes(uint32_t n, Attribute* a) : numberOfAttributes(n), attributes(a)
+    {}
+    void write(PRCbitStream&);
+  private:
+    uint32_t numberOfAttributes;
+    Attribute *attributes;
+};
+
+class ContentPRCBase
+{
+  public:
+    ContentPRCBase(Attributes *a, std::string n="",bool efr = false,
+                   uint32_t ci = 0, uint32_t cpi = 0, uint32_t pi = 0) :
+      attributes(a),name(n),eligibleForReference(efr),CADID(ci),
+      CADPersistentID(cpi),PRCID(pi) {}
+    void write(PRCbitStream&);
+  private:
+    Attributes *attributes;
+    std::string name;
+    bool eligibleForReference;
+    uint32_t CADID, CADPersistentID, PRCID;
+};
+
+extern AttributeTitle EMPTY_ATTRIBUTE_TITLE;
+extern Attribute EMPTY_ATTRIBUTE;
+extern Attributes EMPTY_ATTRIBUTES;
+extern ContentPRCBase EMPTY_CONTENTPRCBASE;
+extern ContentPRCBase EMPTY_CONTENTPRCBASE_WITH_REFERENCE;
+
+extern std::string currentName;
+void writeName(PRCbitStream&,const std::string&);
+void resetName();
+
+extern uint32_t layer_index;
+extern uint32_t index_of_line_style;
+extern uint32_t behaviour_bit_field;
+static const uint32_t m1=(uint32_t)-1;
+
+void writeGraphics(PRCbitStream&,uint32_t=m1,uint32_t=m1,uint32_t=1,bool=false);
+void resetGraphics();
+
+void resetGraphicsAndName();
+
+
+
+#endif //__WRITE_PRC_H
Index: scribus/prc/exportPRC.cpp
===================================================================
--- scribus/prc/exportPRC.cpp	(revision 0)
+++ scribus/prc/exportPRC.cpp	(revision 13839)
@@ -0,0 +1,162 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#include <osgDB/ReadFile>
+#include <osg/Material>
+#include <osgUtil/Optimizer>
+
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <unistd.h>
+#include <cstdlib>
+#include <string>
+#include "exportPRC.h"
+
+
+void PRCExporter::analyse ( osg::Node *nd, prcfile *out )
+{
+	/// here you have found a group.
+	osg::Geode *geode = dynamic_cast<osg::Geode *> ( nd );
+	if ( geode )
+	{
+		// analyse the geode. If it isnt a geode the dynamic cast gives NULL.
+		analyseGeode ( geode, out );
+	}
+	else
+	{
+		osg::Group *gp = dynamic_cast<osg::Group *> ( nd );
+		if ( gp )
+		{
+//			osg::notify ( osg::WARN ) << "Group "<<  gp->getName() <<std::endl;
+			for ( unsigned int ic=0; ic<gp->getNumChildren(); ic++ )
+			{
+				analyse ( gp->getChild ( ic ), out );
+			}
+		}
+//		else
+//		{
+//			osg::notify ( osg::WARN ) << "Unknown node "<<  nd <<std::endl;
+//		}
+	}
+}
+// divide the geode into its drawables and primitivesets:
+
+void PRCExporter::analyseGeode ( osg::Geode *geode, prcfile *out )
+{
+	for ( unsigned int i=0; i<geode->getNumDrawables(); i++ )
+	{
+		osg::Drawable *drawable=geode->getDrawable ( i );
+		osg::Geometry *geom=dynamic_cast<osg::Geometry *> ( drawable );
+		for ( unsigned int ipr=0; ipr<geom->getNumPrimitiveSets(); ipr++ )
+		{
+			osg::PrimitiveSet* prset=geom->getPrimitiveSet ( ipr );
+			analysePrimSet ( prset, out, geom, dynamic_cast<const osg::Vec3Array*> ( geom->getVertexArray() ) );
+		}
+	}
+}
+
+void PRCExporter::analysePrimSet ( osg::PrimitiveSet*prset, prcfile *out, osg::Geometry *geom, const osg::Vec3Array *verts )
+{
+	unsigned int ic;
+	const osg::Vec4Array *Diffuse = dynamic_cast<const osg::Vec4Array*> ( geom->getColorArray() );
+	double r = ( *Diffuse ) [0].x();
+	double g = ( *Diffuse ) [0].y();
+	double b = ( *Diffuse ) [0].z();
+	double a = ( *Diffuse ) [0].w();
+	// you might want to handle each type of primset differently: such as:
+	switch ( prset->getMode() )
+	{
+		case osg::PrimitiveSet::TRIANGLES: // get vertices of triangle
+//			osg::notify ( osg::WARN ) << "Triangles " << std::endl;
+			for ( ic=0; ic<prset->getNumIndices()-2; ic+=3 )
+			{
+				double ( *points ) [3] = new double[4][3];
+				double *knotsU = new double[4];
+				double *knotsV = new double[4];
+				knotsU[0] = 1.0;
+				knotsU[1] = 1.0;
+				knotsU[2] = 2.0;
+				knotsU[3] = 2.0;
+				knotsV[0] = 1.0;
+				knotsV[1] = 1.0;
+				knotsV[2] = 2.0;
+				knotsV[3] = 2.0;
+				points[0][0] = ( * verts ) [prset->index ( ic ) ].x();
+				points[0][1] = ( * verts ) [prset->index ( ic ) ].y();
+				points[0][2] = ( * verts ) [prset->index ( ic ) ].z();
+				points[1][0] = ( * verts ) [prset->index ( ic+1 ) ].x();
+				points[1][1] = ( * verts ) [prset->index ( ic+1 ) ].y();
+				points[1][2] = ( * verts ) [prset->index ( ic+1 ) ].z();
+				points[2][0] = ( * verts ) [prset->index ( ic+2 ) ].x();
+				points[2][1] = ( * verts ) [prset->index ( ic+2 ) ].y();
+				points[2][2] = ( * verts ) [prset->index ( ic+2 ) ].z();
+				points[3][0] = ( * verts ) [prset->index ( ic+2 ) ].x();
+				points[3][1] = ( * verts ) [prset->index ( ic+2 ) ].y();
+				points[3][2] = ( * verts ) [prset->index ( ic+2 ) ].z();
+				out->add ( new PRCsurface ( out, 1, 1, 2, 2, points, knotsU, knotsV, *new RGBAColour ( r,g,b,a ) ) );
+			}
+			break;
+		case osg::PrimitiveSet::TRIANGLE_STRIP: // look up how tristrips are coded
+//			osg::notify ( osg::WARN ) << "Triangle Strip " << std::endl;
+			break;
+		case osg::PrimitiveSet::QUADS: // get vertices of quad
+//			osg::notify ( osg::WARN ) << "Quad " << std::endl;
+			for ( ic=0; ic<prset->getNumIndices()-3; ic+=4 )
+			{
+				double ( *points ) [3] = new double[4][3];
+				double *knotsU = new double[4];
+				double *knotsV = new double[4];
+				knotsU[0] = 1.0;
+				knotsU[1] = 1.0;
+				knotsU[2] = 2.0;
+				knotsU[3] = 2.0;
+				knotsV[0] = 1.0;
+				knotsV[1] = 1.0;
+				knotsV[2] = 2.0;
+				knotsV[3] = 2.0;
+				points[0][0] = ( * verts ) [prset->index ( ic ) ].x();
+				points[0][1] = ( * verts ) [prset->index ( ic ) ].y();
+				points[0][2] = ( * verts ) [prset->index ( ic ) ].z();
+				points[1][0] = ( * verts ) [prset->index ( ic+1 ) ].x();
+				points[1][1] = ( * verts ) [prset->index ( ic+1 ) ].y();
+				points[1][2] = ( * verts ) [prset->index ( ic+1 ) ].z();
+				points[2][0] = ( * verts ) [prset->index ( ic+3 ) ].x();
+				points[2][1] = ( * verts ) [prset->index ( ic+3 ) ].y();
+				points[2][2] = ( * verts ) [prset->index ( ic+3 ) ].z();
+				points[3][0] = ( * verts ) [prset->index ( ic+2 ) ].x();
+				points[3][1] = ( * verts ) [prset->index ( ic+2 ) ].y();
+				points[3][2] = ( * verts ) [prset->index ( ic+2 ) ].z();
+				out->add ( new PRCsurface ( out, 1, 1, 2, 2, points, knotsU, knotsV, *new RGBAColour ( r,g,b,a ) ) );
+			}
+			break;
+		case osg::PrimitiveSet::QUAD_STRIP: // look up how tristrips are coded
+//			osg::notify ( osg::WARN ) << "Quad Strip " << std::endl;
+			break;
+			// etc for all the primitive types you expect. EG quads, quadstrips lines line loops....
+	}
+}
+
+void PRCExporter::convertFile(QString fileName, PageItem_OSGFrame *frame)
+{
+	if ( !fileName.isEmpty() )
+	{
+		if (frame->loadedModel)
+		{
+			prcfile oPRC ( fileName.toStdString() );
+			analyse (frame->loadedModel.get(), &oPRC );
+			oPRC.finish();
+		}
+	}
+}
Index: scribus/prc/oPRCFile.cc
===================================================================
--- scribus/prc/oPRCFile.cc	(revision 0)
+++ scribus/prc/oPRCFile.cc	(revision 13839)
@@ -0,0 +1,862 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+/************
+*
+*   This file is part of a tool for producing 3D content in the PRC format.
+*   Copyright (C) 2008  Orest Shardt <shardtor (at) gmail dot com>
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU Lesser General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU Lesser General Public License for more details.
+*
+*   You should have received a copy of the GNU Lesser General Public License
+*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+*************/
+
+#include "oPRCFile.h"
+#include <time.h>
+
+using std::string;
+
+uint32_t PRCentity::getGraphicsIndex()
+{
+  if(useMaterial)
+    return parent->colourMap.size()+parent->getMaterialIndex(material);
+  else
+    return parent->getColourIndex(colour);
+}
+
+void PRCline::writeRepresentationItem(PRCbitStream &out,uint32_t index)
+{
+  out << (uint32_t)(PRC_TYPE_RI_Curve);
+  ContentPRCBase(&EMPTY_ATTRIBUTES,"line",true,makeCADID(),0,makePRCID()).write(out);
+  writeGraphics(out,m1,getGraphicsIndex(),1);
+  out << (uint32_t)0 // index_local_coordinate_system+1
+      << (uint32_t)0; // index_tessellation
+
+  out << true // has wire body
+      << (uint32_t)index+1 // index of context in geometry section
+      << (uint32_t)1; // body index in topological context
+  UserData(0,0).write(out);
+}
+
+void PRCline::writeTopologicalContext(PRCbitStream &out)
+{
+  // topological context
+  out << (uint32_t)(PRC_TYPE_TOPO_Context);
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << (uint8_t)0 // behaviour
+      << 0.0 // granularity
+      << 0.0 // tolerance
+      << false // have smallest face thickness
+      << false; // have scale
+
+  out << (uint32_t)1; // number of bodies
+  // body
+  out << (uint32_t)PRC_TYPE_TOPO_SingleWireBody;
+
+  out << false // base topology: no base information
+      << (uint8_t)0; // content body: behaviour
+  // Not sure what a 0 means, since it satisfies no #define,
+  // but I think it means no bbox
+
+  // wire edge
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_TOPO_WireEdge
+      << false; // base topology: no base information
+
+  // polyline
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_CRV_PolyLine
+      << false // base topology: no base information
+      << (uint32_t)KEPRCExtendTypeNone // extend info
+      << true // is 3d
+      << false // no transformation
+      << 0.0 << static_cast<double>(numberOfPoints-1) // parameterization interval
+      << 1.0 // no reparameterization
+      << 0.0 // no reparameterization
+      << (uint32_t)numberOfPoints;
+
+  // points
+  for(uint32_t i = 0; i < numberOfPoints; ++i)
+    out << points[i][0]*scale << points[i][1]*scale << points[i][2]*scale;
+
+  // ending of wire edge
+  out << false; // trim surface domain
+}
+
+void PRCline::writeExtraGeometryContext(PRCbitStream &out)
+{
+  //geometry summary
+  out << (uint32_t)1; // number of bodies
+  out << (uint32_t)PRC_TYPE_TOPO_SingleWireBody; // body's serial type
+  //context graphics
+  out << (uint32_t)0; // number of treat types
+}
+
+void PRCcurve::writeRepresentationItem(PRCbitStream &out,uint32_t index)
+{
+  out << (uint32_t)(PRC_TYPE_RI_Curve);
+  ContentPRCBase(&EMPTY_ATTRIBUTES,"curve",true,makeCADID(),0,makePRCID()).write(out);
+  writeGraphics(out,m1,getGraphicsIndex(),1);
+  out << (uint32_t)0 // index_local_coordinate_system+1
+      << (uint32_t)0; // index_tessellation
+
+  out << true // has wire body
+      << (uint32_t)index+1 // index of context in geometry section
+      << (uint32_t)1; // body index in topological context
+  UserData(0,0).write(out);
+}
+
+void PRCcurve::writeTopologicalContext(PRCbitStream &out)
+{
+  // topological context
+  out << (uint32_t)(PRC_TYPE_TOPO_Context);
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << (uint8_t)0 // behaviour
+      << 0.0 // granularity
+      << 0.0 // tolerance
+      << false // have smallest face thickness
+      << false; // have scale
+
+  out << (uint32_t)1; // number of bodies
+  // body
+  out << (uint32_t)PRC_TYPE_TOPO_SingleWireBody;
+
+  out << false // base topology: no base information
+      << (uint8_t)0; // content body: behaviour
+  // Not sure what a 0 means, since it satisfies no #define,
+  // but I think it means no bbox
+
+  // wire edge
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_TOPO_WireEdge
+      << false; // base topology: no base information
+
+  // curve
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_CRV_NURBS
+      << false // base topology: no base information
+      << (uint32_t)KEPRCExtendTypeNone // extend info
+      << true // is 3D
+      << isRational
+      << (uint32_t)degree // degree
+      << (uint32_t)numberOfControlPoints-1 // control points - 1
+      << (uint32_t)degree+numberOfControlPoints; // knots - 1
+
+  // control points
+  for(uint32_t i = 0; i < numberOfControlPoints; ++i)
+  {
+    out << controlPoints[i][0]*scale << controlPoints[i][1]*scale 
+	<< controlPoints[i][2]*scale;
+    if(isRational)
+      out << weights[i];
+  }
+
+  writeKnots(out);
+
+  out << (uint32_t)KEPRCKnotTypeUnspecified // KEPRCKnotTypePiecewiseBezierKnots
+      << (uint32_t)KEPRCBSplineCurveFormUnspecified; // curve form
+
+  // ending of wire edge
+  out << false; // trim surface domain
+
+}
+
+void PRCcurve::writeExtraGeometryContext(PRCbitStream &out)
+{
+  //geometry summary
+  out << (uint32_t)1; // number of bodies
+  out << (uint32_t)PRC_TYPE_TOPO_SingleWireBody; // body's serial type
+  //context graphics
+  out << (uint32_t)0; // number of treat types
+}
+
+void PRCsurface::writeRepresentationItem(PRCbitStream &out,uint32_t index)
+{
+  out << (uint32_t)(PRC_TYPE_RI_BrepModel);
+  ContentPRCBase(&EMPTY_ATTRIBUTES,"surface",true,makeCADID(),0,makePRCID()).write(out);
+  writeGraphics(out,0,getGraphicsIndex(),1);
+  out << (uint32_t)0 // index_local_coordinate_system+1
+      << (uint32_t)0; // index_tessellation
+
+  out << true // has brep data
+      << (uint32_t)index+1 // index of context in geometry section
+      << (uint32_t)1 // body index in topological context
+      << false; // is closed???? when is it closed?
+  UserData(0,0).write(out);
+}
+
+void PRCsurface::writeTopologicalContext(PRCbitStream &out)
+{
+  // topological context
+  out << (uint32_t)(PRC_TYPE_TOPO_Context);
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << (uint8_t)0 // behaviour
+      << granularity // granularity
+      << 0.0 // tolerance
+      << false // have smallest face thickness
+      << false; // have scale
+
+  out << (uint32_t)1; // number of bodies
+  // body
+  out << (uint32_t)PRC_TYPE_TOPO_BrepData;
+
+  out << false // base topology: no base information
+      << (uint8_t)0 // content body: behaviour. Not sure what a 0 means, since it satisfies no #define, but I think it means no bbox
+      << (uint32_t)1; // number of connex
+
+  // connex
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_TOPO_Connex
+      << false // base topology: no base information
+      << (uint32_t)1; // number of shells
+
+  // shell
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_TOPO_Shell
+      << false // base topology: no base information
+      << false // shell is closed
+      << (uint32_t)1; // number of faces
+
+  // face
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_TOPO_Face
+      << false; // base topology: no base information
+
+  // NURBS
+  out << false // not already stored
+      << (uint32_t)PRC_TYPE_SURF_NURBS
+      << false // base topology: no base information
+      << (uint32_t)KEPRCExtendTypeNone // Extend Info
+      << isRational // is rational
+      << (uint32_t)degreeU // degree in u
+      << (uint32_t)degreeV // degree in v
+      << (uint32_t)numberOfControlPointsU-1 // control points in u - 1
+      << (uint32_t)numberOfControlPointsV-1 // control points in v - 1
+      << (uint32_t)degreeU+numberOfControlPointsU // knots in u - 1
+      << (uint32_t)degreeV+numberOfControlPointsV; // knots in v -1
+
+  // control points
+  for(uint32_t i = 0; i < numberOfControlPointsU*numberOfControlPointsV; ++i)
+  {
+    out << controlPoints[i][0]*scale << controlPoints[i][1]*scale
+	<< controlPoints[i][2]*scale;
+    if(isRational)
+      out << weights[i];
+  }
+
+  writeKnots(out);
+
+  out << (uint32_t)KEPRCKnotTypeUnspecified // KEPRCKnotTypePiecewiseBezierKnots
+      << (uint32_t)KEPRCBSplineSurfaceFormUnspecified; // surface form
+
+  // ending of face
+  out << false // trim surface domain
+      << false // have tolerance
+      << (uint32_t)0 // number of loops
+      << (int32_t)-1; // outer loop index
+
+  // ending of shell
+  out << (uint8_t)1;
+  // orientation of surface normal w.r.t. face normal:
+  // 0: same, 1: opposite, 2: unknown, 1 used in example
+}
+
+void PRCsurface::writeExtraGeometryContext(PRCbitStream &out)
+{
+  //geometry summary
+  out << (uint32_t)1; // number of bodies
+  out << (uint32_t)PRC_TYPE_TOPO_BrepData; // body's serial type
+  //context graphics
+  out << (uint32_t)0; // number of treat types
+}
+
+
+void PRCCompressedSection::write(std::ostream &out)
+{
+  if(prepared)
+    out.write((char*)data,getSize());
+}
+
+void PRCCompressedSection::prepare()
+{
+  writeData();
+  compress();
+  prepared = true;
+}
+
+uint32_t PRCCompressedSection::getSize()
+{
+  if(!prepared)
+    return m1;
+  else
+    return out.getSize();
+}
+
+void PRCGlobalsSection::writeData()
+{
+  // even though this is technically not part of this section,
+  // it is handled here for convenience
+  out << (uint32_t)(0); // number of schemas
+  out << (uint32_t)PRC_TYPE_ASM_FileStructureGlobals;
+
+  SingleAttributeData value = {PRCVersion};
+  SingleAttribute sa(false,EMPTY_ATTRIBUTE_TITLE,KEPRCModellerAttributeTypeInt,value);
+  AttributeTitle iv; iv.text = "__PRC_RESERVED_ATTRIBUTE_PRCInternalVersion";
+  Attribute a(false,iv,1,&sa);
+  Attributes as(1,&a);
+  ContentPRCBase(&as).write(out);
+  out << numberOfReferencedFileStructures; // no referencing of file structures
+  out << tessellationChordHeightRatio;
+  out << tessellationAngleDegrees;
+  out << defaultFontFamilyName; // markup serialization helper
+
+  out << numberOfFonts
+      << (uint32_t)parent->colourMap.size();
+  for(std::vector<RGBAColour>::iterator i = parent->colourMap.begin(); i != parent->colourMap.end(); i++)
+  {
+    out << i->R << i->G << i->B;
+  }
+  out << numberOfPictures << numberOfTextureDefinitions;
+
+  out << (uint32_t)parent->materialMap.size(); // number of materials
+  for(std::vector<PRCMaterial>::iterator i = parent->materialMap.begin(); i != parent->materialMap.end(); i++)
+  {
+    out << (uint32_t)PRC_TYPE_GRAPH_Material;
+    ContentPRCBase(&EMPTY_ATTRIBUTES,"",true,makeCADID(),0,makePRCID()).write(out);
+    out << 3*parent->getColourIndex(i->ambient)+1 // ambient + 1
+        << 3*parent->getColourIndex(i->diffuse)+1 // diffuse + 1
+        << 3*parent->getColourIndex(i->emissive)+1 // emissive + 1
+        << 3*parent->getColourIndex(i->specular)+1 // specular + 1
+        << i->shininess // shininess
+        << i->ambient.A // ambient_alpha
+        << i->diffuse.A // diffuse_alpha
+        << i->emissive.A // emissive_alpha
+        << i->specular.A; // specular_alpha
+  }
+
+  out << (uint32_t)1 // number of line patterns hard coded for now
+      << (uint32_t)PRC_TYPE_GRAPH_LinePattern;
+  ContentPRCBase(&EMPTY_ATTRIBUTES,"",true,makeCADID(),0,makePRCID()).write(out);
+  out << (uint32_t)0 // number of lengths
+      << 0.0 // phase
+      << false; // is real length
+
+  out << (uint32_t)(parent->colourMap.size()+parent->materialMap.size()); // number of styles
+  uint32_t index = 0;
+  // colours are written first
+  for(std::vector<RGBAColour>::iterator i = parent->colourMap.begin(); i != parent->colourMap.end(); i++, ++index)
+  {
+    out << (uint32_t)PRC_TYPE_GRAPH_Style;
+    ContentPRCBase(&EMPTY_ATTRIBUTES,"",true,makeCADID(),0,makePRCID()).write(out);
+    out << 0.0 // line width in mm
+        << false // is vpicture
+        << (uint32_t)1 // line pattern index+1
+        << false // is material
+        << (uint32_t)(3*index+1); // 3*color_index+1
+    if(i->A < 1.0)
+      out << true << (uint8_t)(i->A * 256);
+    else
+      out << false;
+    out << false // additional 1 not defined
+        << false // additional 2 not defined
+        << false; // additional 3 not defined
+  }
+  // materials are after colours
+  index = 0;
+  for(std::vector<PRCMaterial>::iterator i = parent->materialMap.begin(); i != parent->materialMap.end(); i++, ++index)
+  {
+    out << (uint32_t)PRC_TYPE_GRAPH_Style;
+    ContentPRCBase(&EMPTY_ATTRIBUTES,"",true,makeCADID(),0,makePRCID()).write(out);
+    out << 0.0 // line width in mm
+        << false // is vpicture
+        << (uint32_t)1 // line pattern index+1
+        << true // is material
+        << index+1; // material_index+1
+    if(i->alpha < 1.0)
+      out << true << (uint8_t)(i->alpha * 256);
+    else
+      out << false;
+    out << false // additional 1 not defined
+        << false // additional 2 not defined
+        << false; // additional 3 not defined
+  }
+  out << numberOfFillPatterns 
+      << numberOfReferenceCoordinateSystems;
+  userData.write(out);
+}
+
+void PRCTreeSection::writeData()
+{
+  out << (uint32_t)(PRC_TYPE_ASM_FileStructureTree);
+
+  EMPTY_CONTENTPRCBASE.write(out);
+
+  out << (uint32_t)1; // number of part definitions
+      // part definitions
+  out << (uint32_t)(PRC_TYPE_ASM_PartDefinition);
+  ContentPRCBase(&EMPTY_ATTRIBUTES,"",true,makeCADID(),0,makePRCID()).write(out);
+  writeGraphics(out,m1,m1,1,true);
+  Point3d M=Point3d(1e20,1e20,1e20);
+  Point3d m=Point3d(-1e20,-1e20,-1e20);
+  Extent3d(M,m).write(out);
+
+  out << (uint32_t)parent->fileEntities.size(); // number of representation items
+  for(uint32_t i = 0; i < parent->fileEntities.size(); ++i)
+  {
+    parent->fileEntities[i]->writeRepresentationItem(out,i);
+  }
+
+  writeEmptyMarkups(out);
+
+  out << (uint32_t)0; // no views
+
+  UserData(0,0).write(out);
+  out << (uint32_t)1; // number of product occurrences
+  // only one product occurrence
+  out << (uint32_t)(PRC_TYPE_ASM_ProductOccurence);
+  SingleAttribute sas[3];
+  SingleAttributeData sad;
+  AttributeTitle at;
+
+  at.text = "FilePath";
+  sad.text = "file name not specified";
+  sas[0] = SingleAttribute(false,at,KEPRCModellerAttributeTypeString,sad);
+
+  at.text = "FileSize";
+  sad.integer = 1234;
+  sas[1] = SingleAttribute(false,at,KEPRCModellerAttributeTypeInt,sad);
+
+  at.text = "FileModificationTime";
+  sad.time = time(NULL);
+  sas[2] = SingleAttribute(false,at,KEPRCModellerAttributeTypeInt,sad);
+
+  at.text = "__PRC_RESERVED_ATTRIBUTE_A3DF_ProductInformation";
+  Attribute attr(false,at,3,sas);
+  Attributes attrs(1,&attr);
+  ContentPRCBase(&attrs,"Unknown",true,makeCADID(),0,makePRCID()).write(out);
+
+  writeGraphics(out,m1,m1,1,true);
+  out << (uint32_t)1 // index_part+1
+      << (uint32_t)0 // index_prototype+1
+      << (uint32_t)0 // index_external_data+1
+      << (uint32_t)0 // number of son product occurrences
+      << (uint8_t)0; // product behaviour
+  writeUnit(out,true,10.0);
+  out << (uint8_t)0 // product information flags
+      << (uint32_t)KEPRCProductLoadStatus_Loaded; // product_load_status
+  out << false // has location
+      << (uint32_t)0; // number of references
+  writeEmptyMarkups(out);
+  out << (uint32_t)0 // number_of_views
+      << false // has entity filter
+      << (uint32_t)0 // number_of_display_filters
+      << (uint32_t)0; // number_of_scene_display_parameters
+  UserData(0,0).write(out);
+
+  // File Structure Internal Data
+  out << (uint32_t)(PRC_TYPE_ASM_FileStructure);
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << makePRCID(); // next available index
+  out << (uint32_t)1; // product occurrence index
+
+  UserData(0,0).write(out);
+}
+
+void PRCTessellationSection::writeData()
+{
+  out << (uint32_t)(PRC_TYPE_ASM_FileStructureTessellation);
+
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << (uint32_t)0; // number of tessellations
+  UserData(0,0).write(out); // no user data
+}
+
+void PRCGeometrySection::writeData()
+{
+  out << (uint32_t)(PRC_TYPE_ASM_FileStructureGeometry); 
+
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << (uint32_t)parent->fileEntities.size(); // number of topological contexts
+  for(uint32_t i = 0; i < parent->fileEntities.size(); ++i)
+  {
+    parent->fileEntities[i]->writeTopologicalContext(out);
+  }
+
+  UserData(0,0).write(out);
+}
+
+void PRCExtraGeometrySection::writeData()
+{
+  out << (uint32_t)(PRC_TYPE_ASM_FileStructureExtraGeometry);
+
+  EMPTY_CONTENTPRCBASE.write(out);
+  out << (uint32_t)parent->fileEntities.size(); // number of contexts
+  for(uint32_t i = 0; i < parent->fileEntities.size(); ++i)
+  {
+    parent->fileEntities[i]->writeExtraGeometryContext(out);
+  }
+
+  UserData(0,0).write(out);
+}
+
+void PRCModelFile::writeData()
+{
+  // even though this is technically not part of this section,
+  // it is handled here for convenience
+  out << (uint32_t)(0); // number of schemas
+  out << (uint32_t)(PRC_TYPE_ASM_ModelFile);
+
+  SingleAttributeData value = {PRCVersion};
+  SingleAttribute sa(false,EMPTY_ATTRIBUTE_TITLE,KEPRCModellerAttributeTypeInt,value);
+  AttributeTitle at; at.text = "__PRC_RESERVED_ATTRIBUTE_PRCInternalVersion";
+  Attribute a(false,at,1,&sa);
+  Attributes as(1,&a);
+  ContentPRCBase(&as,"PRC file").write(out);
+
+  writeUnit(out,true,10); // unit is 10 mm, and happens to come from a CAD file
+
+  out << (uint32_t)1; // 1 product occurrence
+  //UUID
+  out << parent->fileStructures[0]->header.fileStructureUUID[0]
+      << parent->fileStructures[0]->header.fileStructureUUID[1]
+      << parent->fileStructures[0]->header.fileStructureUUID[2]
+      << parent->fileStructures[0]->header.fileStructureUUID[3];
+  // index+1
+  out << (uint32_t)1;
+  // active
+  out << true;
+  out << (uint32_t)0; // index in model file
+
+  UserData(0,0).write(out);
+}
+
+void makeFileUUID(uint32_t *UUID)
+{
+  // make a UUID
+  static uint32_t count = 0;
+  ++count;
+  // the minimum requirement on UUIDs is that all must be unique in the file
+  UUID[0] = 0x33595341; // some constant
+  UUID[1] = time(NULL); // the time
+  UUID[2] = count;
+  UUID[3] = 0xa5a55a5a; // Something random, not seeded by the time, would be nice. But for now, a constant
+  // maybe add something else to make it more unique
+  // so multiple files can be combined
+  // a hash of some data perhaps?
+}
+
+void makeAppUUID(uint32_t *UUID)
+{
+  UUID[0] = UUID[1] = UUID[2] = UUID[3] = 0;
+}
+
+void writeUINT32_T(std::ostream &out, uint32_t data)
+{
+
+#ifdef WORDS_BIGENDIAN
+  out.write(((char*)&data)+3,1);
+  out.write(((char*)&data)+2,1);
+  out.write(((char*)&data)+1,1);
+  out.write(((char*)&data)+0,1);
+#else
+  out.write(((char*)&data)+0,1);
+  out.write(((char*)&data)+1,1);
+  out.write(((char*)&data)+2,1);
+  out.write(((char*)&data)+3,1);
+#endif
+}
+
+void PRCUncompressedFile::write(std::ostream &out)
+{
+  writeUINT32_T(out,file_size);
+  out.write((char*)data,file_size);
+}
+
+uint32_t PRCUncompressedFile::getSize()
+{
+  return sizeof(file_size)+file_size;
+}
+
+
+void PRCStartHeader::write(std::ostream &out)
+{
+  out.write("PRC",3);
+  writeUINT32_T(out,minimal_version_for_read);
+  writeUINT32_T(out,authoring_version);
+  writeUINT32_T(out,fileStructureUUID[0]);
+  writeUINT32_T(out,fileStructureUUID[1]);
+  writeUINT32_T(out,fileStructureUUID[2]);
+  writeUINT32_T(out,fileStructureUUID[3]);
+
+  writeUINT32_T(out,applicationUUID[0]);
+  writeUINT32_T(out,applicationUUID[1]);
+  writeUINT32_T(out,applicationUUID[2]);
+  writeUINT32_T(out,applicationUUID[3]);
+}
+
+uint32_t PRCStartHeader::getSize()
+{
+  return 3+(2+2*4)*sizeof(uint32_t);
+}
+
+
+void PRCFileStructure::write(std::ostream &out)
+{
+  header.write(out);
+  writeUINT32_T(out,number_of_uncompressed_files);
+  for(uint32_t i = 0; i < number_of_uncompressed_files; ++i)
+  {
+    uncompressedFiles[i].write(out);
+  }
+  globals.write(out);
+  tree.write(out);
+  tessellations.write(out);
+  geometry.write(out);
+  extraGeometry.write(out);
+}
+
+void PRCFileStructure::prepare()
+{
+  globals.prepare();
+  resetGraphicsAndName();
+
+  tree.prepare();
+  resetGraphicsAndName();
+
+  tessellations.prepare();
+  resetGraphicsAndName();
+
+  geometry.prepare();
+  resetGraphicsAndName();
+
+  extraGeometry.prepare();
+  resetGraphicsAndName();
+}
+
+uint32_t PRCFileStructure::getSize()
+{
+  uint32_t size = 0;
+  size += header.getSize();
+  size += sizeof(uint32_t);
+  for(uint32_t i = 0; i < number_of_uncompressed_files; ++i)
+    size += uncompressedFiles[i].getSize();
+  size += globals.getSize();
+  size += tree.getSize();
+  size += tessellations.getSize();
+  size += geometry.getSize();
+  size += extraGeometry.getSize();
+  return size;
+}
+
+
+void PRCFileStructureInformation::write(std::ostream &out)
+{
+  writeUINT32_T(out,UUID[0]);
+  writeUINT32_T(out,UUID[1]);
+  writeUINT32_T(out,UUID[2]);
+  writeUINT32_T(out,UUID[3]);
+
+  writeUINT32_T(out,reserved);
+  writeUINT32_T(out,number_of_offsets);
+  for(uint32_t i = 0; i < number_of_offsets; ++i)
+  {
+    writeUINT32_T(out,offsets[i]);
+  }
+}
+
+uint32_t PRCFileStructureInformation::getSize()
+{
+  return (4+2+number_of_offsets)*sizeof(uint32_t);
+}
+
+void PRCHeader::write(std::ostream &out)
+{
+  startHeader.write(out);
+  writeUINT32_T(out,number_of_file_structures);
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+  {
+    fileStructureInformation[i].write(out);
+  }
+  writeUINT32_T(out,model_file_offset);
+  writeUINT32_T(out,file_size);
+  writeUINT32_T(out,number_of_uncompressed_files);
+  for(uint32_t i = 0; i < number_of_uncompressed_files; ++i)
+  {
+    uncompressedFiles[i].write(out);
+  }
+}
+
+uint32_t PRCHeader::getSize()
+{
+  uint32_t size = startHeader.getSize() + sizeof(uint32_t);
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+    size += fileStructureInformation[i].getSize();
+  size += 3*sizeof(uint32_t);
+  for(uint32_t i = 0; i < number_of_uncompressed_files; ++i)
+    size += uncompressedFiles[i].getSize();
+  return size;
+}
+
+bool oPRCFile::add(PRCentity *p)
+{
+  fileEntities.push_back(p);
+  if(p->useMaterial)
+  {
+    if(getMaterialIndex(p->material) == m1)
+    {
+      materialMap.push_back(p->material);
+
+      if(getColourIndex(p->material.ambient) == m1)
+        colourMap.push_back(p->material.ambient);
+
+      if(getColourIndex(p->material.diffuse) == m1)
+        colourMap.push_back(p->material.diffuse);
+
+      if(getColourIndex(p->material.emissive) == m1)
+        colourMap.push_back(p->material.emissive);
+
+      if(getColourIndex(p->material.specular) == m1)
+        colourMap.push_back(p->material.specular);
+    }
+  }
+  else
+  {
+    if(getColourIndex(p->colour) == m1)
+    {
+      colourMap.push_back(p->colour);
+    }
+  }
+  return true;
+}
+
+bool oPRCFile::finish()
+{
+  // only one file structure is currently used
+  // prepare data
+  fileStructures[0] = new PRCFileStructure(this,0);
+  fileStructures[0]->header.minimal_version_for_read = PRCVersion;
+  fileStructures[0]->header.authoring_version = PRCVersion;
+  makeFileUUID(fileStructures[0]->header.fileStructureUUID);
+  makeAppUUID(fileStructures[0]->header.applicationUUID);
+  fileStructures[0]->number_of_uncompressed_files = 0;
+
+  // write each section's bit data
+  fileStructures[0]->prepare();
+  modelFile.prepare();
+
+  // create the header
+
+  // fill out enough info so that sizes can be computed correctly
+  header.number_of_uncompressed_files = 0; 
+  header.number_of_file_structures = number_of_file_structures;
+  header.fileStructureInformation = new PRCFileStructureInformation[number_of_file_structures];
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+  {
+    header.fileStructureInformation[i].UUID[0] = fileStructures[i]->header.fileStructureUUID[0];
+    header.fileStructureInformation[i].UUID[1] = fileStructures[i]->header.fileStructureUUID[1];
+    header.fileStructureInformation[i].UUID[2] = fileStructures[i]->header.fileStructureUUID[2];
+    header.fileStructureInformation[i].UUID[3] = fileStructures[i]->header.fileStructureUUID[3];
+    header.fileStructureInformation[i].reserved = 0;
+    header.fileStructureInformation[i].number_of_offsets = 6;
+    header.fileStructureInformation[i].offsets = new uint32_t[6];
+  }
+
+  header.startHeader.minimal_version_for_read = PRCVersion;
+  header.startHeader.authoring_version = PRCVersion;
+  makeFileUUID(header.startHeader.fileStructureUUID);
+  makeAppUUID(header.startHeader.applicationUUID);
+
+  header.file_size = getSize();
+  header.model_file_offset = header.file_size - modelFile.getSize();
+
+  uint32_t currentOffset = header.getSize();
+
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+  {
+    header.fileStructureInformation[i].offsets[0] = currentOffset; // header offset
+    currentOffset += fileStructures[i]->header.getSize() + sizeof(uint32_t);
+    for(uint32_t j = 0; j < fileStructures[i]->number_of_uncompressed_files; ++j)
+      currentOffset += fileStructures[i]->uncompressedFiles[j].getSize();
+    header.fileStructureInformation[i].offsets[1] = currentOffset; // globals offset
+    currentOffset += fileStructures[i]->globals.getSize();
+    header.fileStructureInformation[i].offsets[2] = currentOffset; // tree offset
+    currentOffset += fileStructures[i]->tree.getSize();
+    header.fileStructureInformation[i].offsets[3] = currentOffset; // tessellations offset
+    currentOffset += fileStructures[i]->tessellations.getSize();
+    header.fileStructureInformation[i].offsets[4] = currentOffset; // geometry offset
+    currentOffset += fileStructures[i]->geometry.getSize();
+    header.fileStructureInformation[i].offsets[5] = currentOffset; // extra geometry offset
+    currentOffset += fileStructures[i]->extraGeometry.getSize();
+  }
+
+  // write the data
+  header.write(output);
+
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+  {
+    fileStructures[i]->write(output);
+  }
+
+  modelFile.write(output);
+  output.flush();
+
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+    delete[] header.fileStructureInformation[i].offsets;
+  delete[] header.fileStructureInformation;
+
+  return true;
+}
+
+uint32_t oPRCFile::getColourIndex(const RGBAColour &c)
+{
+  for(uint32_t i = 0; i < colourMap.size(); ++i)
+  {
+    if(colourMap[i] == c)
+      return i;
+  }
+  return m1;
+}
+
+uint32_t oPRCFile::getMaterialIndex(const PRCMaterial &m)
+{
+  for(uint32_t i = 0; i < materialMap.size(); ++i)
+  {
+    if(materialMap[i] == m)
+      return i;
+  }
+  return m1;
+}
+
+uint32_t oPRCFile::getSize()
+{
+  uint32_t size = header.getSize();
+
+  for(uint32_t i = 0; i < number_of_file_structures; ++i)
+  {
+    size += fileStructures[i]->getSize();
+  }
+
+  size += modelFile.getSize();
+  return size;
+}
Index: scribus/prc/oPRCFile.h
===================================================================
--- scribus/prc/oPRCFile.h	(revision 0)
+++ scribus/prc/oPRCFile.h	(revision 13839)
@@ -0,0 +1,409 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+/************
+*
+*   This file is part of a tool for producing 3D content in the PRC format.
+*   Copyright (C) 2008  Orest Shardt <shardtor (at) gmail dot com>
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU Lesser General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU Lesser General Public License for more details.
+*
+*   You should have received a copy of the GNU Lesser General Public License
+*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+*************/
+
+#ifndef __O_PRC_FILE_H
+#define __O_PRC_FILE_H
+
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <string>
+
+#ifdef HAVE_CONFIG_H
+#include "scconfig.h"
+#endif
+
+#include "PRC.h"
+#include "PRCbitStream.h"
+#include "writePRC.h"
+
+class oPRCFile;
+
+struct RGBAColour
+{
+  RGBAColour(double r=0.0, double g=0.0, double b=0.0, double a=1.0) :
+    R(r), G(g), B(b), A(a) {}
+  double R,G,B,A;
+
+  bool operator==(const RGBAColour &c) const
+  {
+    return (R==c.R && G==c.G && B==c.B && A==c.A);
+  }
+};
+
+struct PRCMaterial
+{
+  PRCMaterial() : alpha(1.0),shininess(1.0) {}
+  PRCMaterial(const RGBAColour &a, const RGBAColour &d, const RGBAColour &e,
+              const RGBAColour &s, double p, double h) :
+      ambient(a), diffuse(d), emissive(e), specular(s), alpha(p), shininess(h) {}
+  RGBAColour ambient,diffuse,emissive,specular;
+  double alpha,shininess;
+
+  bool operator==(const PRCMaterial &m) const
+  {
+    return (ambient==m.ambient && diffuse==m.diffuse && emissive==m.emissive
+        && specular==m.specular && shininess==m.shininess);
+  }
+};
+
+class PRCentity
+{
+  public:
+    PRCentity(oPRCFile *p,const RGBAColour &c, double scale = 1.0) : 
+      colour(c), useMaterial(false), scale(scale), parent(p) {}
+    PRCentity(oPRCFile *p,const PRCMaterial &m, double scale = 1.0) : 
+      material(m), useMaterial(true), scale(scale), parent(p) {}
+    uint32_t getGraphicsIndex();
+    virtual void writeRepresentationItem(PRCbitStream&,uint32_t) = 0;
+    virtual void writeTopologicalContext(PRCbitStream&) = 0;
+    virtual void writeExtraGeometryContext(PRCbitStream&) = 0;
+    RGBAColour colour;
+    PRCMaterial material;
+    bool useMaterial;
+    double scale;
+  virtual ~PRCentity() {}
+  protected:
+    oPRCFile *parent;
+};
+
+class PRCsurface : public PRCentity
+{
+  public:
+    // contructor with colour
+    PRCsurface(oPRCFile *p, uint32_t dU, uint32_t dV, uint32_t nU, uint32_t nV,
+	       double cP[][3], double *kU, double *kV, const RGBAColour &c,
+	       double scale = 1.0, bool iR = false, double w[] = 0,
+	       double g = 0) :
+      PRCentity(p,c,scale), degreeU(dU), degreeV(dV),
+      numberOfControlPointsU(nU), numberOfControlPointsV(nV),
+      knotsU(kU), knotsV(kV), controlPoints(cP),
+      isRational(iR), weights(w), granularity(g) {}
+    // contructor with material
+    PRCsurface(oPRCFile *p, uint32_t dU, uint32_t dV, uint32_t nU, uint32_t nV,
+	       double cP[][3], double *kU, double *kV, const PRCMaterial &m,
+	       double scale = 1.0, bool iR = false, double w[] = 0,
+	       double g = 0) :
+      PRCentity(p,m,scale), degreeU(dU), degreeV(dV),
+      numberOfControlPointsU(nU), numberOfControlPointsV(nV),
+      knotsU(kU), knotsV(kV), controlPoints(cP),
+      isRational(iR), weights(w), granularity(g) {}
+    virtual void writeRepresentationItem(PRCbitStream&,uint32_t);
+    virtual void writeTopologicalContext(PRCbitStream&);
+    virtual void writeExtraGeometryContext(PRCbitStream&);
+  protected:
+    virtual void writeKnots(PRCbitStream &out)
+    {
+      for(uint32_t i = 0; i < degreeU+numberOfControlPointsU+1; ++i)
+        out << knotsU[i];
+      for(uint32_t i = 0; i < degreeV+numberOfControlPointsV+1; ++i)
+        out << knotsV[i];
+    }
+  private:
+    uint32_t degreeU, degreeV, numberOfControlPointsU, numberOfControlPointsV;
+    double *knotsU, *knotsV;
+    double (*controlPoints)[3];
+    bool isRational;
+    double *weights;
+    double granularity;
+};
+
+class PRCline : public PRCentity
+{
+  public:
+    // constructor with colour
+    PRCline(oPRCFile *p, uint32_t n, double P[][3], const RGBAColour &c,
+      double scale = 1.0) :
+      PRCentity(p,c,scale), numberOfPoints(n), points(P) {}
+    // constructor with material
+    PRCline(oPRCFile *p, uint32_t n, double P[][3], const PRCMaterial &m,
+      double scale = 1.0) :
+      PRCentity(p,m,scale), numberOfPoints(n), points(P) {}
+      virtual void writeRepresentationItem(PRCbitStream&,uint32_t);
+      virtual void writeTopologicalContext(PRCbitStream&);
+      virtual void writeExtraGeometryContext(PRCbitStream&);
+  private:
+    uint32_t numberOfPoints;
+    double (*points)[3];
+};
+
+class PRCcurve : public PRCentity
+{
+  public:
+    // constructor with colour
+    PRCcurve(oPRCFile *p, uint32_t d, uint32_t n, double cP[][3], double *k,
+	     const RGBAColour &c, double scale = 1.0, bool iR = false,
+	     double w[] = 0) :
+      PRCentity(p,c,scale), degree(d), numberOfControlPoints(n), knots(k),
+      controlPoints(cP), isRational(iR), weights(w) {}
+    // constructor with material
+    PRCcurve(oPRCFile *p, uint32_t d, uint32_t n, double cP[][3], double *k,
+	     const PRCMaterial &m, double scale = 1.0, bool iR = false,
+	     double w[] = 0) :
+      PRCentity(p,m,scale), degree(d), numberOfControlPoints(n), knots(k),
+      controlPoints(cP), isRational(iR), weights(w) {}
+    virtual void writeRepresentationItem(PRCbitStream&,uint32_t);
+    virtual void writeTopologicalContext(PRCbitStream&);
+    virtual void writeExtraGeometryContext(PRCbitStream&);
+  protected:
+    virtual void writeKnots(PRCbitStream &out)
+    {
+      for(uint32_t i = 0; i < degree+numberOfControlPoints+1; ++i)
+        out << knots[i];
+    }
+  private:
+    uint32_t degree, numberOfControlPoints;
+    double *knots;
+    double (*controlPoints)[3];
+    bool isRational;
+    double *weights;
+};
+
+class PRCCompressedSection
+{
+  public:
+    PRCCompressedSection(oPRCFile *p) : data(0),prepared(false),parent(p),
+        out(data,0) {}
+    virtual ~PRCCompressedSection()
+    {
+      free(data);
+    }
+    void write(std::ostream&);
+    void prepare();
+    uint32_t getSize();
+
+  private:
+    virtual void writeData() = 0;
+    uint8_t *data;
+  protected:
+    void compress()
+    {
+      out.compress();
+    }
+    bool prepared;
+    oPRCFile *parent;
+    PRCbitStream out; // order matters: PRCbitStream must be initialized last
+};
+
+class PRCGlobalsSection : public PRCCompressedSection
+{
+  public:
+    PRCGlobalsSection(oPRCFile *p, uint32_t i) :
+      PRCCompressedSection(p),numberOfReferencedFileStructures(0), 
+      tessellationChordHeightRatio(2000.0),tessellationAngleDegrees(40.0),
+      defaultFontFamilyName(""),numberOfFonts(0),numberOfPictures(0),
+      numberOfTextureDefinitions(0),numberOfFillPatterns(0),
+      numberOfReferenceCoordinateSystems(0),userData(0,0),index(i) {}
+    uint32_t numberOfReferencedFileStructures;
+    double tessellationChordHeightRatio;
+    double tessellationAngleDegrees;
+    std::string defaultFontFamilyName;
+    uint32_t numberOfFonts,numberOfPictures,numberOfTextureDefinitions;
+    uint32_t numberOfFillPatterns;
+    uint32_t numberOfReferenceCoordinateSystems;
+    UserData userData;
+  private:
+    uint32_t index;
+    virtual void writeData();
+};
+
+class PRCTreeSection : public PRCCompressedSection
+{
+  public:
+    PRCTreeSection(oPRCFile *p, uint32_t i) :
+      PRCCompressedSection(p),index(i) {}
+  private:
+    uint32_t index;
+    virtual void writeData();
+};
+
+class PRCTessellationSection : public PRCCompressedSection
+{
+  public:
+    PRCTessellationSection(oPRCFile *p, uint32_t i) :
+      PRCCompressedSection(p),index(i) {}
+  private:
+    uint32_t index;
+    virtual void writeData();
+};
+
+class PRCGeometrySection : public PRCCompressedSection
+{
+  public:
+    PRCGeometrySection(oPRCFile *p, uint32_t i) :
+      PRCCompressedSection(p),index(i) {}
+  private:
+    uint32_t index;
+    virtual void writeData();
+};
+
+class PRCExtraGeometrySection : public PRCCompressedSection
+{
+  public:
+    PRCExtraGeometrySection(oPRCFile *p, uint32_t i) :
+      PRCCompressedSection(p),index(i) {}
+  private:
+    uint32_t index;
+    virtual void writeData();
+};
+
+class PRCModelFile : public PRCCompressedSection
+{
+  public:
+    PRCModelFile(oPRCFile *p) : PRCCompressedSection(p) {}
+  private:
+    virtual void writeData();
+};
+
+void makeFileUUID(uint32_t*);
+void makeAppUUID(uint32_t*);
+
+class PRCUncompressedFile
+{
+  public:
+    uint32_t file_size;
+    uint8_t *data;
+
+    void write(std::ostream&);
+
+    uint32_t getSize();
+};
+
+class PRCStartHeader
+{
+  public:
+    uint32_t minimal_version_for_read; // PRCVersion
+    uint32_t authoring_version; // PRCVersion
+    uint32_t fileStructureUUID[4];
+    uint32_t applicationUUID[4]; // should be 0
+
+    void write(std::ostream&);
+
+    uint32_t getSize();
+};
+
+class PRCFileStructure
+{
+  private:
+    oPRCFile *parent;
+    uint32_t index;
+  public:
+    PRCStartHeader header;
+    uint32_t number_of_uncompressed_files;
+    PRCUncompressedFile *uncompressedFiles;
+
+    PRCGlobalsSection globals;
+    PRCTreeSection tree;
+    PRCTessellationSection tessellations;
+    PRCGeometrySection geometry;
+    PRCExtraGeometrySection extraGeometry;
+
+    PRCFileStructure(oPRCFile *p, uint32_t i) : parent(p),index(i),
+      globals(p,i),tree(p,i),tessellations(p,i),geometry(p,i),
+      extraGeometry(p,i) {}
+    void write(std::ostream&);
+    void prepare();
+    uint32_t getSize();
+};
+
+class PRCFileStructureInformation
+{
+  public:
+    uint32_t UUID[4];
+    uint32_t reserved; // 0
+    uint32_t number_of_offsets;
+    uint32_t *offsets;
+
+    void write(std::ostream&);
+
+    uint32_t getSize();
+};
+
+class PRCHeader
+{
+  public :
+    PRCStartHeader startHeader;
+    uint32_t number_of_file_structures;
+    PRCFileStructureInformation *fileStructureInformation;
+    uint32_t model_file_offset;
+    uint32_t file_size; // not documented
+    uint32_t number_of_uncompressed_files;
+    PRCUncompressedFile *uncompressedFiles;
+
+    void write(std::ostream&);
+    uint32_t getSize();
+};
+
+class oPRCFile
+{
+  public:
+    oPRCFile(std::ostream &os, uint32_t n=1) :
+            number_of_file_structures(n),
+            fileStructures(new PRCFileStructure*[n]),modelFile(this),
+            fout(NULL),output(os) {}
+
+    oPRCFile(const std::string &name, uint32_t n=1) :
+            number_of_file_structures(n),
+            fileStructures(new PRCFileStructure*[n]),modelFile(this),
+            fout(new std::ofstream(name.c_str())),output(*fout) {}
+
+    ~oPRCFile()
+    {
+      for(uint32_t i = 0; i < number_of_file_structures; ++i)
+        delete fileStructures[i];
+      delete[] fileStructures;
+      if(fout != NULL)
+        delete fout;
+    }
+
+    bool add(PRCentity*);
+    bool finish();
+    uint32_t getColourIndex(const RGBAColour&);
+    uint32_t getMaterialIndex(const PRCMaterial&);
+    uint32_t getSize();
+
+    const uint32_t number_of_file_structures;
+    PRCFileStructure **fileStructures;
+    PRCHeader header;
+    PRCModelFile modelFile;
+    std::vector<PRCentity*> fileEntities;
+    std::vector<RGBAColour> colourMap;
+    std::vector<PRCMaterial> materialMap;
+
+  private:
+    std::ofstream *fout;
+    std::ostream &output;
+};
+
+#endif // __O_PRC_FILE_H
Index: scribus/prc/PRC.h
===================================================================
--- scribus/prc/PRC.h	(revision 0)
+++ scribus/prc/PRC.h	(revision 13839)
@@ -0,0 +1,317 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#ifndef __PRC_H
+#define __PRC_H
+
+#include <stdint.h>
+
+const uint32_t PRCVersion=7094;   // For Adobe Reader 8 or later
+//const uint32_t PRCVersion=8137; // For Adobe Reader 9 or later
+
+// from Adobe's documentation
+
+#define	PRC_TYPE_ROOT				0			// This type does not correspond to any entity
+
+#define	PRC_TYPE_ROOT_PRCBase			( PRC_TYPE_ROOT + 1 )	// Abstract root type for any PRC entity. 
+#define	PRC_TYPE_ROOT_PRCBaseWithGraphics	( PRC_TYPE_ROOT + 2 )	// Abstract root type for any PRC entity which can bear graphics. 
+
+#define	PRC_TYPE_CRV				( PRC_TYPE_ROOT + 10 )	// Types for PRC geometrical curves
+#define	PRC_TYPE_SURF				( PRC_TYPE_ROOT + 75 )	// Types for PRC geometrical surfaces
+#define	PRC_TYPE_TOPO				( PRC_TYPE_ROOT + 140 )	// Types for PRC topology
+#define	PRC_TYPE_TESS				( PRC_TYPE_ROOT + 170 )	// Types for PRC tessellation
+#define	PRC_TYPE_MISC				( PRC_TYPE_ROOT + 200 )	// Types for PRC global data
+#define	PRC_TYPE_RI				( PRC_TYPE_ROOT + 230 )	// Types for PRC representation items
+#define	PRC_TYPE_ASM				( PRC_TYPE_ROOT + 300 )	// Types for PRC assembly
+#define	PRC_TYPE_MKP				( PRC_TYPE_ROOT + 500 )	// Types for PRC markup
+#define	PRC_TYPE_GRAPH				( PRC_TYPE_ROOT + 700 )	// Types for PRC graphics
+#define	PRC_TYPE_MATH				( PRC_TYPE_ROOT + 900 )	// Types for PRC mathematical operators
+
+#define	PRC_TYPE_CRV_Base			( PRC_TYPE_CRV + 1 )	// Abstract type for all geometric curves. 
+#define	PRC_TYPE_CRV_Blend02Boundary		( PRC_TYPE_CRV + 2 )	// Boundary Curve. 
+#define	PRC_TYPE_CRV_NURBS			( PRC_TYPE_CRV + 3 )	// Non Uniform BSpline curve. 
+#define	PRC_TYPE_CRV_Circle			( PRC_TYPE_CRV + 4 )	// Circle. 
+#define	PRC_TYPE_CRV_Composite			( PRC_TYPE_CRV + 5 )	// Array of oriented curves. 
+#define	PRC_TYPE_CRV_OnSurf			( PRC_TYPE_CRV + 6 )	// Curve defined by a UV curve on a surface. 
+#define	PRC_TYPE_CRV_Ellipse			( PRC_TYPE_CRV + 7 )	// Ellipse. 
+#define	PRC_TYPE_CRV_Equation			( PRC_TYPE_CRV + 8 )	// curve described by specific law elements 
+#define	PRC_TYPE_CRV_Helix			( PRC_TYPE_CRV + 9 )	// Helix curve. 
+#define	PRC_TYPE_CRV_Hyperbola			( PRC_TYPE_CRV + 10 )	// Hyperbola. 
+#define	PRC_TYPE_CRV_Intersection		( PRC_TYPE_CRV + 11 )	// Intersection between 2 surfaces. 
+#define	PRC_TYPE_CRV_Line			( PRC_TYPE_CRV + 12 )	// Line. 
+#define	PRC_TYPE_CRV_Offset			( PRC_TYPE_CRV + 13 )	// Offset curve. 
+#define	PRC_TYPE_CRV_Parabola			( PRC_TYPE_CRV + 14 )	// Parabola. 
+#define	PRC_TYPE_CRV_PolyLine			( PRC_TYPE_CRV + 15 )	// Polyedric curve. 
+#define	PRC_TYPE_CRV_Transform			( PRC_TYPE_CRV + 16 )	// Transformed curve. 
+
+#define	PRC_TYPE_SURF_Base			( PRC_TYPE_SURF + 1 )	// Abstract type for all geometric surfaces. 
+#define	PRC_TYPE_SURF_Blend01			( PRC_TYPE_SURF + 2 )	// Blend surface. 
+#define	PRC_TYPE_SURF_Blend02			( PRC_TYPE_SURF + 3 )	// Blend Surface. 
+#define	PRC_TYPE_SURF_Blend03			( PRC_TYPE_SURF + 4 )	// Blend Surface. 
+#define	PRC_TYPE_SURF_NURBS			( PRC_TYPE_SURF + 5 )	// Non Uniform BSpline surface. 
+#define	PRC_TYPE_SURF_Cone			( PRC_TYPE_SURF + 6 )	// Cone. 
+#define	PRC_TYPE_SURF_Cylinder			( PRC_TYPE_SURF + 7 )	// Cylinder. 
+#define	PRC_TYPE_SURF_Cylindrical		( PRC_TYPE_SURF + 8 )	// Surface who is defined in cylindrical space. 
+#define	PRC_TYPE_SURF_Offset			( PRC_TYPE_SURF + 9 )	// Offset surface. 
+#define	PRC_TYPE_SURF_Pipe			( PRC_TYPE_SURF + 10 )	// Pipe. 
+#define	PRC_TYPE_SURF_Plane			( PRC_TYPE_SURF + 11 )	// Plane. 
+#define	PRC_TYPE_SURF_Ruled			( PRC_TYPE_SURF + 12 )	// Ruled surface. 
+#define	PRC_TYPE_SURF_Sphere			( PRC_TYPE_SURF + 13 )	// Sphere. 
+#define	PRC_TYPE_SURF_Revolution		( PRC_TYPE_SURF + 14 )	// Surface of revolution. 
+#define	PRC_TYPE_SURF_Extrusion			( PRC_TYPE_SURF + 15 )	// Surface of extrusion. 
+#define	PRC_TYPE_SURF_FromCurves		( PRC_TYPE_SURF + 16 )	// Surface from two curves. 
+#define	PRC_TYPE_SURF_Torus			( PRC_TYPE_SURF + 17 )	// Torus. 
+#define	PRC_TYPE_SURF_Transform			( PRC_TYPE_SURF + 18 )	// Transformed surface. 
+#define	PRC_TYPE_SURF_Blend04			( PRC_TYPE_SURF + 19 )	// defined for future use. 
+
+#define	PRC_TYPE_TOPO_Context     ( PRC_TYPE_TOPO + 1 )	// Self-containing set of topological entities. 
+#define PRC_TYPE_TOPO_Item   ( PRC_TYPE_TOPO + 2 ) // Abstract root type for any topological entity (body or single item).
+#define PRC_TYPE_TOPO_MultipleVertex   ( PRC_TYPE_TOPO + 3 ) // Vertex whose position is the average of all edges' extremity positions to whom it belongs.
+#define PRC_TYPE_TOPO_UniqueVertex   ( PRC_TYPE_TOPO + 4 ) // Vertex with one set of coordinates (absolute position).
+#define PRC_TYPE_TOPO_WireEdge   ( PRC_TYPE_TOPO + 5 ) // Edge belonging to a wire body / single wire body.
+#define PRC_TYPE_TOPO_Edge   ( PRC_TYPE_TOPO + 6 ) // Edge belonging to a brep data.
+#define PRC_TYPE_TOPO_CoEdge   ( PRC_TYPE_TOPO + 7 ) // Usage of an edge in a loop.
+#define PRC_TYPE_TOPO_Loop   ( PRC_TYPE_TOPO + 8 ) // Array of co edges which delimits a face.
+#define PRC_TYPE_TOPO_Face   ( PRC_TYPE_TOPO + 9 ) // Topological face delimiting a shell.
+#define PRC_TYPE_TOPO_Shell   ( PRC_TYPE_TOPO + 10 ) // Topological shell (open or closed).
+#define PRC_TYPE_TOPO_Connex   ( PRC_TYPE_TOPO + 11 ) // Topological region delimited by one or several shells. 
+#define PRC_TYPE_TOPO_Body   ( PRC_TYPE_TOPO + 12 ) // Abstract root type for any topological body.
+#define PRC_TYPE_TOPO_SingleWireBody   ( PRC_TYPE_TOPO + 13 ) // Single wire body.
+#define PRC_TYPE_TOPO_BrepData   ( PRC_TYPE_TOPO + 14 ) // Main entry to solid and surface topology (regular form).
+#define PRC_TYPE_TOPO_SingleWireBodyCompress   ( PRC_TYPE_TOPO + 15 ) // Single wire body. (ultra compressed form).
+#define PRC_TYPE_TOPO_BrepDataCompress   ( PRC_TYPE_TOPO + 16 ) // Main entry to solid and surface topology (ultra compressed form).
+#define PRC_TYPE_TOPO_WireBody   ( PRC_TYPE_TOPO + 17 ) // This type is the main entry to wire topology. 
+
+#define	PRC_TYPE_TESS_Base			( PRC_TYPE_TESS + 1 )	// Abstract root type for any tessellated entity. 
+#define	PRC_TYPE_TESS_3D			( PRC_TYPE_TESS + 2 )	// Tessellated faceted data; regular form. 
+#define	PRC_TYPE_TESS_3D_Compressed		( PRC_TYPE_TESS + 3 )	// Tessellated faceted data; highly compressed form. 
+#define	PRC_TYPE_TESS_Face			( PRC_TYPE_TESS + 4 )	// Tessellated face. 
+#define	PRC_TYPE_TESS_3D_Wire			( PRC_TYPE_TESS + 5 )	// Tessellated wireframe. 
+#define	PRC_TYPE_TESS_Markup			( PRC_TYPE_TESS + 6 )	// Tessellated markup. 
+
+#define	PRC_TYPE_MISC_Attribute			( PRC_TYPE_MISC + 1 )	// Entity attribute. 
+#define	PRC_TYPE_MISC_CartesianTransformation	( PRC_TYPE_MISC + 2 )	// Cartesian transformation. 
+#define	PRC_TYPE_MISC_EntityReference		( PRC_TYPE_MISC + 3 )	// Entity reference. 
+#define	PRC_TYPE_MISC_MarkupLinkedItem		( PRC_TYPE_MISC + 4 )	// Link between a markup and an entity. 
+#define	PRC_TYPE_MISC_ReferenceOnPRCBase	( PRC_TYPE_MISC + 5 )	// Reference pointing on a regular entity (not topological). 
+#define	PRC_TYPE_MISC_ReferenceOnTopology	( PRC_TYPE_MISC + 6 )	// Reference pointing on a topological entity. 
+
+#define	PRC_TYPE_RI_RepresentationItem		( PRC_TYPE_RI + 1 )	// Basic abstract type for representation items. 
+#define	PRC_TYPE_RI_BrepModel			( PRC_TYPE_RI + 2 )	// Basic type for surfaces and solids. 
+#define	PRC_TYPE_RI_Curve			( PRC_TYPE_RI + 3 )	// Basic type for curves. 
+#define	PRC_TYPE_RI_Direction			( PRC_TYPE_RI + 4 )	// Optional point + vector. 
+#define	PRC_TYPE_RI_Plane			( PRC_TYPE_RI + 5 )	// Construction plane, as opposed to planar surface. 
+#define	PRC_TYPE_RI_PointSet			( PRC_TYPE_RI + 6 )	// Set of points. 
+#define	PRC_TYPE_RI_PolyBrepModel		( PRC_TYPE_RI + 7 )	// Basic type to polyhedral surfaces and solids. 
+#define	PRC_TYPE_RI_PolyWire			( PRC_TYPE_RI + 8 )	// Polyedric wireframe entity. 
+#define	PRC_TYPE_RI_Set				( PRC_TYPE_RI + 9 )	// Logical grouping of arbitrary number of representation items. 
+#define	PRC_TYPE_RI_CoordinateSystem		( PRC_TYPE_RI + 10 )	// Coordinate system. 
+
+#define	PRC_TYPE_ASM_ModelFile			( PRC_TYPE_ASM + 1 )	// Basic entry type for PRC. 
+#define	PRC_TYPE_ASM_FileStructure		( PRC_TYPE_ASM + 2 )	// Basic structure for PRC files. 
+#define	PRC_TYPE_ASM_FileStructureGlobals	( PRC_TYPE_ASM + 3 )	// Basic structure for PRC files : globals. 
+#define	PRC_TYPE_ASM_FileStructureTree		( PRC_TYPE_ASM + 4 )	// Basic structure for PRC files : tree. 
+#define	PRC_TYPE_ASM_FileStructureTessellation	( PRC_TYPE_ASM + 5 )	// Basic structure for PRC files : tessellation. 
+#define	PRC_TYPE_ASM_FileStructureGeometry	( PRC_TYPE_ASM + 6 )	// Basic structure for PRC files : geometry. 
+#define	PRC_TYPE_ASM_FileStructureExtraGeometry	( PRC_TYPE_ASM + 7 )	// Basic structure for PRC files : extra geometry data.
+#define	PRC_TYPE_ASM_ProductOccurence		( PRC_TYPE_ASM + 10 )	// Basic contruct for assemblies. 
+#define	PRC_TYPE_ASM_PartDefinition		( PRC_TYPE_ASM + 11 )	// Basic construct for parts. 
+
+#define	PRC_TYPE_MKP_View			( PRC_TYPE_MKP + 1 )	// Grouping of markup by views. 
+#define	PRC_TYPE_MKP_Markup			( PRC_TYPE_MKP + 2 )	// Basic type for simple markups. 
+#define	PRC_TYPE_MKP_Leader			( PRC_TYPE_MKP + 3 )	// basic type for markup leader 
+#define	PRC_TYPE_MKP_AnnotationItem		( PRC_TYPE_MKP + 4 )	// Usage of a markup.
+#define	PRC_TYPE_MKP_AnnotationSet		( PRC_TYPE_MKP + 5 )	// Group of annotations.
+#define	PRC_TYPE_MKP_AnnotationReference	( PRC_TYPE_MKP + 6 )	// Logical grouping of annotations for reference.
+
+#define	PRC_TYPE_GRAPH_Style			( PRC_TYPE_GRAPH + 1 )	// Display style. 
+#define	PRC_TYPE_GRAPH_Material			( PRC_TYPE_GRAPH + 2 )	// Display material properties. 
+#define	PRC_TYPE_GRAPH_Picture			( PRC_TYPE_GRAPH + 3 )	// Picture. 
+#define	PRC_TYPE_GRAPH_TextureApplication	( PRC_TYPE_GRAPH + 11 )	// Texture application. 
+#define	PRC_TYPE_GRAPH_TextureDefinition	( PRC_TYPE_GRAPH + 12 )	// Texture definition. 
+#define	PRC_TYPE_GRAPH_TextureTransformation	( PRC_TYPE_GRAPH + 13 )	// Texture transformation. 
+#define	PRC_TYPE_GRAPH_LinePattern		( PRC_TYPE_GRAPH + 21 )	// One dimensional display style. 
+#define	PRC_TYPE_GRAPH_FillPattern		( PRC_TYPE_GRAPH + 22 )	// Abstract class for two-dimensional display style. 
+#define	PRC_TYPE_GRAPH_DottingPattern		( PRC_TYPE_GRAPH + 23 )	// Two-dimensional filling with dots. 
+#define	PRC_TYPE_GRAPH_HatchingPattern		( PRC_TYPE_GRAPH + 24 )	// Two-dimensional filling with hatches. 
+#define	PRC_TYPE_GRAPH_SolidPattern		( PRC_TYPE_GRAPH + 25 )	// Two-dimensional filling with particular style (color, material, texture). 
+#define	PRC_TYPE_GRAPH_VPicturePattern		( PRC_TYPE_GRAPH + 26 )	// Two-dimensional filling with vectorised picture. 
+#define	PRC_TYPE_GRAPH_AmbientLight		( PRC_TYPE_GRAPH + 31 )	// Scene ambient illumination. 
+#define	PRC_TYPE_GRAPH_PointLight		( PRC_TYPE_GRAPH + 32 )	// Scene point illumination. 
+#define	PRC_TYPE_GRAPH_DirectionalLight		( PRC_TYPE_GRAPH + 33 )	// Scene directional illumination. 
+#define	PRC_TYPE_GRAPH_SpotLight		( PRC_TYPE_GRAPH + 34 )	// Scene spot illumination. 
+#define	PRC_TYPE_GRAPH_SceneDisplayParameters	( PRC_TYPE_GRAPH + 41 )	// Parameters for scene visualisation. 
+#define	PRC_TYPE_GRAPH_Camera			( PRC_TYPE_GRAPH + 42 )	// 
+
+#define	PRC_TYPE_MATH_FCT_1D			( PRC_TYPE_MATH + 1 )	// Basic type for one degree equation object. 
+#define	PRC_TYPE_MATH_FCT_1D_Polynom		( PRC_TYPE_MATH_FCT_1D + 1 )	// Polynomial equation. 
+#define	PRC_TYPE_MATH_FCT_1D_Trigonometric	( PRC_TYPE_MATH_FCT_1D + 2 )	// Cosinus based equation. 
+#define	PRC_TYPE_MATH_FCT_1D_Fraction		( PRC_TYPE_MATH_FCT_1D + 3 )	// Fraction between 2 one degree equation object. 
+#define	PRC_TYPE_MATH_FCT_1D_ArctanCos		( PRC_TYPE_MATH_FCT_1D + 4 )	// Specific equation. 
+#define	PRC_TYPE_MATH_FCT_1D_Combination	( PRC_TYPE_MATH_FCT_1D + 5 )	// Combination of one degree equation object. 
+#define	PRC_TYPE_MATH_FCT_3D			( PRC_TYPE_MATH + 10 )	// Basic type for 3rd degree equation object. 
+#define	PRC_TYPE_MATH_FCT_3D_Linear		( PRC_TYPE_MATH_FCT_3D + 1 )	// Linear transformation ( with a matrix ). 
+#define	PRC_TYPE_MATH_FCT_3D_NonLinear		( PRC_TYPE_MATH_FCT_3D + 2 )	// Specific transformation. 
+
+#define 	PRC_PRODUCT_FLAG_DEFAULT        0x0001
+#define 	PRC_PRODUCT_FLAG_INTERNAL       0x0002
+#define 	PRC_PRODUCT_FLAG_CONTAINER      0x0004
+#define 	PRC_PRODUCT_FLAG_CONFIG         0x0008
+#define 	PRC_PRODUCT_FLAG_VIEW           0x0010
+
+#define 	PRC_TRANSFORMATION_Identity     0x00
+#define 	PRC_TRANSFORMATION_Translate    0x01
+#define 	PRC_TRANSFORMATION_Rotate       0x02
+#define 	PRC_TRANSFORMATION_Mirror       0x04
+#define 	PRC_TRANSFORMATION_Scale        0x08
+#define 	PRC_TRANSFORMATION_NonUniformScale 0x10
+#define 	PRC_TRANSFORMATION_NonOrtho     0x20
+#define 	PRC_TRANSFORMATION_Homogeneous  0x40
+
+#define 	PRC_FACETESSDATA_Polyface                          0x0001
+#define 	PRC_FACETESSDATA_Triangle                          0x0002
+#define 	PRC_FACETESSDATA_TriangleFan                       0x0004
+#define 	PRC_FACETESSDATA_TriangleStripe                    0x0008
+#define 	PRC_FACETESSDATA_PolyfaceOneNormal                 0x0010
+#define 	PRC_FACETESSDATA_TriangleOneNormal                 0x0020
+#define 	PRC_FACETESSDATA_TriangleFanOneNormal              0x0040
+#define 	PRC_FACETESSDATA_TriangleStripeOneNormal           0x0080
+#define 	PRC_FACETESSDATA_PolyfaceTextured                  0x0100
+#define 	PRC_FACETESSDATA_TriangleTextured                  0x0200
+#define 	PRC_FACETESSDATA_TriangleFanTextured               0x0400
+#define 	PRC_FACETESSDATA_TriangleStripeTextured            0x0800
+#define 	PRC_FACETESSDATA_PolyfaceOneNormalTextured         0x1000
+#define 	PRC_FACETESSDATA_TriangleOneNormalTextured         0x2000
+#define 	PRC_FACETESSDATA_TriangleFanOneNormalTextured      0x4000
+#define 	PRC_FACETESSDATA_TriangleStripeOneNormalTextured   0x8000
+
+#define 	PRC_TEXTURE_MAPPING_DIFFUSE                        0x0001
+#define 	PRC_TEXTURE_MAPPING_BUMP                           0x0002
+#define 	PRC_TEXTURE_MAPPING_OPACITY                        0x0004
+#define 	PRC_TEXTURE_MAPPING_SPHERICAL_REFLECTION           0x0008
+#define 	PRC_TEXTURE_MAPPING_CUBICAL_REFLECTION             0x0010
+#define 	PRC_TEXTURE_MAPPING_REFRACTION                     0x0020
+#define 	PRC_TEXTURE_MAPPING_SPECULAR                       0x0040
+#define 	PRC_TEXTURE_MAPPING_AMBIENT                        0x0080
+#define 	PRC_TEXTURE_MAPPING_EMISSION                       0x0100
+#define 	PRC_TEXTURE_APPLYING_MODE_NONE                     0x00 // let the application choose
+#define 	PRC_TEXTURE_APPLYING_MODE_LIGHTING                 0x01 // use lighting mode
+#define 	PRC_TEXTURE_APPLYING_MODE_ALPHATEST                0x02 // use alpha test
+#define 	PRC_TEXTURE_APPLYING_MODE_VERTEXCOLOR              0x04 // combine a texture with one-color-per-vertex mode
+
+enum EPRCModellerAttributeType {
+  KEPRCModellerAttributeTypeNull = 0,
+  KEPRCModellerAttributeTypeInt = 1,
+  KEPRCModellerAttributeTypeReal = 2,
+  KEPRCModellerAttributeTypeTime = 3,
+  KEPRCModellerAttributeTypeString = 4
+};
+
+enum EPRCPictureDataFormat {
+  KEPRCPicture_PNG,
+  KEPRCPicture_JPG,
+  KEPRCPicture_BITMAP_RGB_BYTE,
+  KEPRCPicture_BITMAP_RGBA_BYTE,
+  KEPRCPicture_BITMAP_GREY_BYTE,
+  KEPRCPicture_BITMAP_GREYA_BYTE
+};
+
+enum EPRCProductLoadStatus {
+  KEPRCProductLoadStatus_Unknown = 0,
+  KEPRCProductLoadStatus_Error,
+  KEPRCProductLoadStatus_NotLoaded,
+  KEPRCProductLoadStatus_NotLoadable,
+  KEPRCProductLoadStatus_Loaded
+};
+
+enum EPRCExtendType {
+  KEPRCExtendTypeNone = 0,
+  KEPRCExtendTypeExt1 = 2,
+  KEPRCExtendTypeExt2 = 4,
+  KEPRCExtendTypeG1 = 6,
+  KEPRCExtendTypeG1R = 8,
+  KEPRCExtendTypeG1_G2 = 10,
+  KEPRCExtendTypeCInfinity = 12
+};
+
+enum EPRCKnotType {
+  KEPRCKnotTypeUniformKnots,
+  KEPRCKnotTypeUnspecified,
+  KEPRCKnotTypeQuasiUniformKnots,
+  KEPRCKnotTypePiecewiseBezierKnots
+};
+
+enum EPRCBSplineSurfaceForm {
+  KEPRCBSplineSurfaceFormPlane,
+  KEPRCBSplineSurfaceFormCylindrical,
+  KEPRCBSplineSurfaceFormConical,
+  KEPRCBSplineSurfaceFormSpherical,
+  KEPRCBSplineSurfaceFormRevolution,
+  KEPRCBSplineSurfaceFormRuled,
+  KEPRCBSplineSurfaceFormGeneralizedCone,
+  KEPRCBSplineSurfaceFormQuadric,
+  KEPRCBSplineSurfaceFormLinearExtrusion,
+  KEPRCBSplineSurfaceFormUnspecified,
+  KEPRCBSplineSurfaceFormPolynomial
+};
+
+enum EPRCBSplineCurveForm {
+  KEPRCBSplineCurveFormUnspecified,
+  KEPRCBSplineCurveFormPolyline,
+  KEPRCBSplineCurveFormCircularArc,
+  KEPRCBSplineCurveFormEllipticArc,
+  KEPRCBSplineCurveFormParabolicArc,
+  KEPRCBSplineCurveFormHyperbolicArc
+};
+
+enum EPRCTextureMappingType {
+  KEPRCTextureMappingType_Unknown,
+  KEPRCTextureMappingType_Stored,
+  KEPRCTextureMappingType_Parametric,
+  KEPRCTextureMappingType_Operator
+};
+
+enum EPRCTextureFunction {
+  KEPRCTextureFunction_Unknown,
+  KEPRCTextureFunction_Modulate,
+  KEPRCTextureFunction_Replace,
+  KEPRCTextureFunction_Blend,
+  KEPRCTextureFunction_Decal
+};
+
+enum EPRCTextureBlendParameter {
+  KEPRCTextureBlendParameter_Unknown,
+  KEPRCTextureBlendParameter_Zero,
+  KEPRCTextureBlendParameter_One,
+  KEPRCTextureBlendParameter_SrcColor,
+  KEPRCTextureBlendParameter_OneMinusSrcColor,
+  KEPRCTextureBlendParameter_DstColor,
+  KEPRCTextureBlendParameter_OneMinusDstColor,
+  KEPRCTextureBlendParameter_SrcAlpha,
+  KEPRCTextureBlendParameter_OneMinusSrcAlpha,
+  KEPRCTextureBlendParameter_DstAlpha,
+  KEPRCTextureBlendParameter_OneMinusDstAlpha,
+  KEPRCTextureBlendParameter_SrcAlphaSaturate
+};
+
+enum EPRCTextureWrappingMode {
+  KEPRCTextureWrappingMode_Unknown,
+  KEPRCTextureWrappingMode_Repeat,
+  KEPRCTextureWrappingMode_ClampToBorder,
+  KEPRCTextureWrappingMode_Clamp,
+  KEPRCTextureWrappingMode_ClampToEdge,
+  KEPRCTextureWrappingMode_MirroredRepeat
+};
+
+#endif // __PRC_H
Index: scribus/prc/exportPRC.h
===================================================================
--- scribus/prc/exportPRC.h	(revision 0)
+++ scribus/prc/exportPRC.h	(revision 13839)
@@ -0,0 +1,61 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+#ifndef ADAPT_H
+#define ADAPTC_H
+
+#include <QtCore>
+#include <osg/Vec3>
+#include <osg/Texture2D>
+#include <osg/Drawable>
+#include <osg/Geometry>
+#include <osg/Vec4>
+#include <cassert>
+#include "oPRCFile.h"
+#include "pageitem_osgframe.h"
+
+class prcfile : public oPRCFile
+{
+		std::list<PRCentity *> entities;
+	public:
+		prcfile ( std::string name ) : oPRCFile ( name.c_str() ) {}
+		~prcfile()
+		{
+			for ( std::list<PRCentity *>::iterator p=entities.begin(); p != entities.end(); ++p )
+			{
+				assert ( *p );
+				delete *p;
+			}
+		}
+
+		void add ( PRCentity* e )
+		{
+			entities.push_back ( e );
+			oPRCFile::add ( e );
+		}
+};
+
+class PRCExporter
+{
+	public:
+		PRCExporter() {}
+		virtual ~PRCExporter() {}
+		void convertFile(QString fileName, PageItem_OSGFrame *frame);
+	private:
+		void analyse ( osg::Node *nd, prcfile *out );
+		void analyseGeode ( osg::Geode *geode, prcfile *out );
+		void analysePrimSet ( osg::PrimitiveSet*prset, prcfile *out, osg::Geometry *geom, const osg::Vec3Array *verts );
+};
+
+#endif
Index: scribus/prc/CMakeLists.txt
===================================================================
--- scribus/prc/CMakeLists.txt	(revision 0)
+++ scribus/prc/CMakeLists.txt	(revision 13839)
@@ -0,0 +1,24 @@
+INCLUDE_DIRECTORIES(
+${CMAKE_SOURCE_DIR}
+${CMAKE_SOURCE_DIR}/scribus
+${OPENGL_INCLUDE_DIR}
+${FREETYPE_INCLUDE_DIRS}
+)
+
+SET(SCRIBUS_PRC_LIB_SOURCES
+    oPRCFile.cc
+    PRCbitStream.cc
+    PRCdouble.cc
+    writePRC.cc
+    exportPRC.cpp
+)
+
+SET(SCRIBUS_PRC_LIB "scribus_prc_lib")
+ADD_LIBRARY(${SCRIBUS_PRC_LIB} STATIC ${SCRIBUS_PRC_LIB_SOURCES})
+
+# This is a convenience library that for linkage purposes is part of Scribus's
+# main API.
+SET_TARGET_PROPERTIES(${SCRIBUS_PRC_LIB}
+  PROPERTIES
+  COMPILE_FLAGS -DCOMPILE_SCRIBUS_MAIN_APP
+  )
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp	(revision 13838)
+++ scribus/scribus.cpp	(revision 13839)
@@ -137,6 +137,9 @@
 #include "ui_nftdialog.h"
 #include "ui/nftwidget.h"
 #include "ui/nodeeditpalette.h"
+#ifdef HAVE_OSG
+	#include "ui/osgeditor.h"
+#endif
 #include "ui/outlinepalette.h"
 #include "page.h"
 #include "pageitem_imageframe.h"
@@ -2389,7 +2392,11 @@
 	{
 		for (int i = 0; i < doc->Items->count(); ++i)
 		{
-			if ((doc->Items->at(i)->itemType() == PageItem::ImageFrame) && (!doc->Items->at(i)->asLatexFrame()))
+#ifdef HAVE_OSG
+			if ((doc->Items->at(i)->itemType() == PageItem::ImageFrame) && (!((doc->Items->at(i)->asLatexFrame()) || (doc->Items->at(i)->asOSGFrame()))))
+#else
+			if ((doc->Items->at(i)->itemType() == PageItem::ImageFrame) && (!(doc->Items->at(i)->asLatexFrame())))
+#endif
 			{
 				enablePicManager = true;
 				break;
@@ -2642,6 +2649,9 @@
 		scrActions["toolsPDFComboBox"]->setEnabled(false);
 		scrActions["toolsPDFListBox"]->setEnabled(false);
 		scrActions["toolsPDFAnnotText"]->setEnabled(false);
+#ifdef HAVE_OSG
+		scrActions["toolsPDFAnnot3D"]->setEnabled(false);
+#endif
 	}
 	else
 	{
@@ -2671,6 +2681,9 @@
 		scrActions["toolsPDFComboBox"]->setEnabled(true);
 		scrActions["toolsPDFListBox"]->setEnabled(true);
 		scrActions["toolsPDFAnnotText"]->setEnabled(true);
+#ifdef HAVE_OSG
+		scrActions["toolsPDFAnnot3D"]->setEnabled(true);
+#endif
 		pagePalette->enablePalette(true);
 	}
 	scrMenuMgr->setMenuEnabled("ItemLayer", doc->layerCount() > 1);
@@ -2746,6 +2759,9 @@
 	scrActions["toolsPDFListBox"]->setEnabled(true);
 	scrActions["toolsPDFAnnotText"]->setEnabled(true);
 	scrActions["toolsPDFAnnotLink"]->setEnabled(true);
+#ifdef HAVE_OSG
+	scrActions["toolsPDFAnnot3D"]->setEnabled(true);
+#endif
 
 	bool setter = doc->Pages->count() > 1 ? true : false;
 	scrActions["pageDelete"]->setEnabled(setter);
@@ -2887,7 +2903,11 @@
 	scrActions["editPasteContents"]->setEnabled(SelectedType==PageItem::ImageFrame);
 	scrActions["editPasteContentsAbs"]->setEnabled(SelectedType==PageItem::ImageFrame);
 	scrActions["editEditWithImageEditor"]->setEnabled(SelectedType==PageItem::ImageFrame && currItem->PictureIsAvailable && currItem->isRaster);
-	scrActions["editEditRenderSource"]->setEnabled(SelectedType==PageItem::ImageFrame && currItem && currItem->asLatexFrame());
+#ifdef HAVE_OSG
+	scrActions["editEditRenderSource"]->setEnabled(SelectedType==PageItem::ImageFrame && currItem && (currItem->asLatexFrame() || currItem->asOSGFrame()));
+#else
+	scrActions["editEditRenderSource"]->setEnabled(SelectedType==PageItem::ImageFrame && currItem && (currItem->asLatexFrame()));
+#endif
 	if (SelectedType!=PageItem::ImageFrame)
 	{
 		scrActions["itemImageIsVisible"]->setChecked(false);
@@ -4671,6 +4691,9 @@
 		scrActions["toolsPDFListBox"]->setEnabled(false);
 		scrActions["toolsPDFAnnotText"]->setEnabled(false);
 		scrActions["toolsPDFAnnotLink"]->setEnabled(false);
+#ifdef HAVE_OSG
+		scrActions["toolsPDFAnnot3D"]->setEnabled(false);
+#endif
 		//CB dont need this until we have a doc...
 		//propertiesPalette->Cpal->SetColors(prefsManager->colorSet());
 		propertiesPalette->Cpal->ChooseGrad(0);
@@ -6172,6 +6195,9 @@
 		scrActions["toolsPDFListBox"]->setEnabled(false);
 		scrActions["toolsPDFAnnotText"]->setEnabled(false);
 		scrActions["toolsPDFAnnotLink"]->setEnabled(false);
+#ifdef HAVE_OSG
+		scrActions["toolsPDFAnnot3D"]->setEnabled(false);
+#endif
 		scrActions["itemDelete"]->setEnabled(false);
 		layerPalette->setEnabled(false);
 		outlinePalette->setEnabled(false);
@@ -6243,6 +6269,9 @@
 	scrActions["toolsPDFListBox"]->setEnabled(true);
 	scrActions["toolsPDFAnnotText"]->setEnabled(true);
 	scrActions["toolsPDFAnnotLink"]->setEnabled(true);
+#ifdef HAVE_OSG
+	scrActions["toolsPDFAnnot3D"]->setEnabled(true);
+#endif
 	scrActions["toolsEditContents"]->setChecked(false);
 	scrActions["toolsEditWithStoryEditor"]->setChecked(false);
 	scrActions["toolsMeasurements"]->setEnabled(true);
@@ -6333,6 +6362,9 @@
 	scrActions["toolsPDFListBox"]->setChecked(mode==modeInsertPDFListbox);
 	scrActions["toolsPDFAnnotText"]->setChecked(mode==modeInsertPDFTextAnnotation);
 	scrActions["toolsPDFAnnotLink"]->setChecked(mode==modeInsertPDFLinkAnnotation);
+#ifdef HAVE_OSG
+	scrActions["toolsPDFAnnot3D"]->setChecked(mode==modeInsertPDF3DAnnotation);
+#endif
 
 	if (HaveDoc)
 	{
@@ -6491,6 +6523,7 @@
 			case modeInsertPDFListbox:
 			case modeInsertPDFTextAnnotation:
 			case modeInsertPDFLinkAnnotation:
+			case modeInsertPDF3DAnnotation:
 				if (docSelectionCount!=0)
 					view->Deselect(true);
 				qApp->changeOverrideCursor(QCursor(Qt::CrossCursor));
@@ -8270,6 +8303,9 @@
 			scrActions["toolsPDFComboBox"]->setEnabled(false);
 			scrActions["toolsPDFListBox"]->setEnabled(false);
 			scrActions["toolsPDFAnnotText"]->setEnabled(false);
+#ifdef HAVE_OSG
+			scrActions["toolsPDFAnnot3D"]->setEnabled(false);
+#endif
 			pagePalette->enablePalette(false);
 			dia->show();
 			ActWin->setMasterPagesPalette(dia);
@@ -8308,6 +8344,9 @@
 	scrActions["toolsPDFComboBox"]->setEnabled(true);
 	scrActions["toolsPDFListBox"]->setEnabled(true);
 	scrActions["toolsPDFAnnotText"]->setEnabled(true);
+#ifdef HAVE_OSG
+	scrActions["toolsPDFAnnot3D"]->setEnabled(true);
+#endif
 	uint pageCount=doc->DocPages.count();
 	for (uint c=0; c<pageCount; ++c)
 		Apply_MasterPage(doc->DocPages.at(c)->MPageNam, c, false);
@@ -8819,6 +8858,9 @@
 		scrActions["toolsPDFComboBox"]->setEnabled(false);
 		scrActions["toolsPDFListBox"]->setEnabled(false);
 		scrActions["toolsPDFAnnotText"]->setEnabled(false);
+#ifdef HAVE_OSG
+		scrActions["toolsPDFAnnot3D"]->setEnabled(false);
+#endif
 	}
 	else
 	{
@@ -8828,6 +8870,9 @@
 		scrActions["toolsPDFComboBox"]->setEnabled(setter);
 		scrActions["toolsPDFListBox"]->setEnabled(setter);
 		scrActions["toolsPDFAnnotText"]->setEnabled(setter);
+#ifdef HAVE_OSG
+		scrActions["toolsPDFAnnot3D"]->setEnabled(setter);
+#endif
 	}
 	scrActions["toolsPDFAnnotLink"]->setEnabled(setter);
 	scrMenuMgr->setMenuEnabled("ItemLayer", doc->layerCount() > 1);
@@ -9100,11 +9145,19 @@
 		// - IMHO ScribusMainWindow has way to many slots already
 		// - my code here is short and without sideeffects
 		PageItem *currItem = doc->m_Selection->itemAt(0);
-		if (currItem->asLatexFrame()) {
+		if (currItem->asLatexFrame())
+		{
 			currItem->asLatexFrame()->runEditor();
 			return; //Don't process the functions for imageframes!
 		}
-
+#ifdef HAVE_OSG
+		if (currItem->asOSGFrame())
+		{
+			OSGEditorDialog *dia = new OSGEditorDialog(this, currItem->asOSGFrame());
+			dia->exec();
+			return;
+		}
+#endif
 		QString imageEditorExecutable=prefsManager->imageEditorExecutable();
 		if (ExternalApp != 0)
 		{
Index: scribus/pageitem_osgframe.h
===================================================================
--- scribus/pageitem_osgframe.h	(revision 0)
+++ scribus/pageitem_osgframe.h	(revision 13839)
@@ -0,0 +1,109 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+						pageitem_osgframe.h  -  description
+						-------------------
+copyright            : Scribus Team
+***************************************************************************/
+
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+
+#ifndef PAGEITEM_OSGFRAME_H
+#define PAGEITEM_OSGFRAME_H
+
+#include <osg/Node>
+#include <osg/Matrixd>
+#include <osg/Vec3>
+#include <QObject>
+#include <QWidget>
+#include <QString>
+#include <QHash>
+
+#include "scribusapi.h"
+#include "pageitem.h"
+#include "pageitem_imageframe.h"
+
+
+class SCRIBUS_API PageItem_OSGFrame : public PageItem_ImageFrame
+{
+	Q_OBJECT
+
+	public:
+		enum LightType
+		{
+			None		= 0,
+			Headlamp	= 1,
+			White		= 2,
+			Day			= 3,
+			Night		= 4,
+			Hard		= 5,
+			Primary		= 6,
+			Blue		= 7,
+			Red			= 8,
+			Cube		= 9,
+			CAD			= 10,
+			Artwork		= 11
+		};
+		enum RenderType
+		{
+			Solid							= 0,
+			SolidWireframe					= 1,
+			Transparent						= 2,
+			TransparentWireframe			= 3,
+			BoundingBox						= 4,
+			TransparentBoundingBox			= 5,
+			TransparentBoundingBoxOutline	= 6,
+			Wireframe						= 7,
+			ShadedWireframe					= 8,
+			HiddenWireframe					= 9,
+			Vertices						= 10,
+			ShadedVertices					= 11,
+			Illustration					= 12,
+			SolidOutline					= 13,
+			ShadedIllustration				= 14
+		};
+		PageItem_OSGFrame(ScribusDoc *pa, double x, double y, double w, double h, double w2, QString fill, QString outline);
+		~PageItem_OSGFrame();
+		
+		virtual PageItem_OSGFrame * asOSGFrame() { return this; }
+		virtual ItemType realItemType() const { return PageItem::OSGFrame; }
+		virtual void clearContents();
+		void setImage(QImage &image);
+		void setExternalModelFile(QString val);
+		void loadModel();
+		virtual void applicableActions(QStringList& actionList);
+		virtual QString infoDescription();
+		double getDistance(osg::Vec3d pos1, osg::Vec3d pos2);
+		QString getPDFMatrix(QString viewName);
+
+		osg::ref_ptr<osg::Node> loadedModel;
+		struct viewDefinition
+		{
+			osg::Matrixd trackerMatrix;
+			osg::Vec3d trackerCenter;
+			osg::Vec3d cameraPosition;
+			osg::Vec3d cameraUp;
+			double angleFOV;
+			double trackerDist;
+			double trackerSize;
+			LightType illumination;
+			RenderType rendermode;
+		};
+		QHash<QString, viewDefinition> viewMap;
+		QString currentView;
+		double distanceToObj;
+		QString modelFile;
+};
+
+#endif
Index: scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
===================================================================
--- scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp	(revision 13838)
+++ scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp	(revision 13839)
@@ -19,6 +19,9 @@
 #include "scribusview.h"
 #include "hyphenator.h"
 #include "pageitem_latexframe.h"
+#ifdef HAVE_OSG
+	#include "pageitem_osgframe.h"
+#endif
 
 #include "units.h"
 #include "util.h"
@@ -1248,6 +1251,52 @@
 			latexinfo.appendChild(latextext);
 			ob.appendChild(latexinfo);*/
 		}
+#ifdef HAVE_OSG
+		if (item->asOSGFrame())
+		{
+			PageItem_OSGFrame *osgitem = item->asOSGFrame();
+			if (!item->Pfile.isEmpty())
+			{
+				QHash<QString, PageItem_OSGFrame::viewDefinition>::iterator itv;
+				for (itv = osgitem->viewMap.begin(); itv != osgitem->viewMap.end(); ++itv)
+				{
+					QString tmp;
+					docu.writeStartElement("OSGViews");
+					docu.writeAttribute("viewName", itv.key());
+					docu.writeAttribute("angleFOV", itv.value().angleFOV);
+					QString trackM = "";
+					for (uint matx = 0; matx < 4; ++matx)
+					{
+						for (uint maty = 0; maty < 4; ++maty)
+						{
+							trackM += tmp.setNum(itv.value().trackerMatrix(matx, maty))+" ";
+						}
+					}
+					docu.writeAttribute("trackM", trackM);
+					QString trackC = "";
+					trackC += tmp.setNum(itv.value().trackerCenter[0])+" ";
+					trackC += tmp.setNum(itv.value().trackerCenter[1])+" ";
+					trackC += tmp.setNum(itv.value().trackerCenter[2]);
+					docu.writeAttribute("trackC", trackC);
+					QString cameraP = "";
+					cameraP += tmp.setNum(itv.value().cameraPosition[0])+" ";
+					cameraP += tmp.setNum(itv.value().cameraPosition[1])+" ";
+					cameraP += tmp.setNum(itv.value().cameraPosition[2]);
+					docu.writeAttribute("cameraP", cameraP);
+					QString cameraU = "";
+					cameraU += tmp.setNum(itv.value().cameraUp[0])+" ";
+					cameraU += tmp.setNum(itv.value().cameraUp[1])+" ";
+					cameraU += tmp.setNum(itv.value().cameraUp[2]);
+					docu.writeAttribute("cameraU", cameraU);
+					docu.writeAttribute("trackerDist", itv.value().trackerDist);
+					docu.writeAttribute("trackerSize", itv.value().trackerSize);
+					docu.writeAttribute("illumination", itv.value().illumination);
+					docu.writeAttribute("rendermode", itv.value().rendermode);
+					docu.writeEndElement();
+				}
+			}
+		}
+#endif
 
 		//CB PageItemAttributes
 		docu.writeStartElement("PageItemAttributes");
@@ -1424,7 +1473,11 @@
 	docu.writeAttribute("BEXTRA",item->textToFrameDistBottom());
 	docu.writeAttribute("REXTRA",item->textToFrameDistRight());
 	docu.writeAttribute("FLOP",item->firstLineOffset()); // here I think this FLOP "cher à mon cœur" is legitimate!
-	if (((item->asImageFrame() && !item->asLatexFrame()) || (item->asTextFrame())) && (!item->Pfile.isEmpty()))
+#ifdef HAVE_OSG
+	if (((item->asImageFrame() && !(item->asLatexFrame() || item->asOSGFrame())) || (item->asTextFrame())) && (!item->Pfile.isEmpty()))
+#else
+	if (((item->asImageFrame() && !(item->asLatexFrame())) || (item->asTextFrame())) && (!item->Pfile.isEmpty()))
+#endif
 	{
 		if (item->isInlineImage)
 		{
@@ -1443,6 +1496,28 @@
 		else
 			docu.writeAttribute("PFILE",Path2Relative(item->Pfile, baseDir));
 	}
+#ifdef HAVE_OSG
+	else if (item->asOSGFrame())
+	{
+		if (!item->Pfile.isEmpty())
+		{
+			docu.writeAttribute("PFILE", "");
+			docu.writeAttribute("isInlineImage", static_cast<int>(item->isInlineImage));
+			QFileInfo inlFi(item->Pfile);
+			docu.writeAttribute("inlineImageExt", inlFi.suffix());
+			QFile inFil(item->Pfile);
+			if (inFil.open(QIODevice::ReadOnly))
+			{
+				QByteArray ba = qCompress(inFil.readAll()).toBase64();
+				docu.writeAttribute("ImageData", QString(ba));
+				inFil.close();
+			}
+			PageItem_OSGFrame *osgframe = item->asOSGFrame();
+			docu.writeAttribute("modelFile", Path2Relative(osgframe->modelFile, baseDir));
+			docu.writeAttribute("currentViewName", osgframe->currentView);
+		}
+	}
+#endif
 	else
 		docu.writeAttribute("PFILE","");
 	if (!item->Pfile2.isEmpty())
Index: scribus/plugins/fileloader/scribus150format/scribus150format.cpp
===================================================================
--- scribus/plugins/fileloader/scribus150format/scribus150format.cpp	(revision 13838)
+++ scribus/plugins/fileloader/scribus150format/scribus150format.cpp	(revision 13839)
@@ -28,6 +28,9 @@
 #include "util_color.h"
 #include "scgzfile.h"
 #include "scpattern.h"
+#ifdef HAVE_OSG
+	#include "pageitem_osgframe.h"
+#endif
 #include <QCursor>
 // #include <QDebug>
 #include <QFileInfo>
@@ -1709,6 +1712,9 @@
 
 	bool layerFound = true;
 	struct ImageLoadRequest loadingInfo;
+#ifdef HAVE_OSG
+	struct PageItem_OSGFrame::viewDefinition currentView;
+#endif
 	QList<ParagraphStyle::TabRecord> tabValues;
 
 	LastStyles * lastStyle = new LastStyles();
@@ -1789,6 +1795,46 @@
 			loadingInfo.useMask = tAtt.valueAsBool("useMask", true);
 			newItem->pixm.imgInfo.RequestProps.insert(tAtt.valueAsInt("Layer"), loadingInfo);
 		}
+#ifdef HAVE_OSG
+		if (tName == "OSGViews")
+		{
+			currentView.angleFOV = tAtt.valueAsDouble("angleFOV");
+			QString tmp = "";
+			tmp = tAtt.valueAsString("trackM");
+			ScTextStream fp(&tmp, QIODevice::ReadOnly);
+			double m1, m2, m3, m4;
+			double m5, m6, m7, m8;
+			double m9, m10, m11, m12;
+			double m13, m14, m15, m16;
+			fp >> m1 >> m2 >> m3 >> m4;
+			fp >> m5 >> m6 >> m7 >> m8;
+			fp >> m9 >> m10 >> m11 >> m12;
+			fp >> m13 >> m14 >> m15 >> m16;
+			currentView.trackerMatrix.set(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16);
+			tmp = "";
+			tmp = tAtt.valueAsString("trackC");
+			ScTextStream fp2(&tmp, QIODevice::ReadOnly);
+			double v1, v2, v3;
+			fp2 >> v1 >> v2 >> v3;
+			currentView.trackerCenter.set(v1, v2, v3);
+			tmp = "";
+			tmp = tAtt.valueAsString("cameraP");
+			ScTextStream fp3(&tmp, QIODevice::ReadOnly);
+			fp3 >> v1 >> v2 >> v3;
+			currentView.cameraPosition.set(v1, v2, v3);
+			tmp = "";
+			tmp = tAtt.valueAsString("cameraU");
+			ScTextStream fp4(&tmp, QIODevice::ReadOnly);
+			fp4 >> v1 >> v2 >> v3;
+			currentView.cameraUp.set(v1, v2, v3);
+			currentView.trackerDist = tAtt.valueAsDouble("trackerDist");
+			currentView.trackerSize = tAtt.valueAsDouble("trackerSize");
+			currentView.illumination = static_cast<PageItem_OSGFrame::LightType>(tAtt.valueAsInt("illumination"));
+			currentView.rendermode = static_cast<PageItem_OSGFrame::RenderType>(tAtt.valueAsInt("rendermode"));
+			if (newItem->asOSGFrame())
+				newItem->asOSGFrame()->viewMap.insert(tAtt.valueAsString("viewName"), currentView);
+		}
+#endif
 		if (tName == "ImageEffect")
 		{
 			struct ImageEffect ef;
@@ -1844,7 +1890,11 @@
 		newItem->updatePolyClip();
 		newItem->Frame = true;
 	}
+#ifdef HAVE_OSG
+	if (newItem->asImageFrame() || newItem->asLatexFrame() || newItem->asOSGFrame())
+#else
 	if (newItem->asImageFrame() || newItem->asLatexFrame())
+#endif
 	{
 		if (!newItem->Pfile.isEmpty())
 		{
@@ -2146,6 +2196,7 @@
 		break;
 	//
 	case PageItem::ImageFrame:
+	case PageItem::OSGFrame:
 	case PageItem::LatexFrame: /*Everything that is valid for image frames is also valid for latex frames*/
 		z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, 1, doc->toolSettings.dBrushPict, CommonStrings::None, true);
 		currItem = doc->Items->at(z);
@@ -2153,7 +2204,12 @@
 			currItem->OwnPage = pagenr;
 		currItem->setImageXYScale(scx, scy);
 		currItem->setImageXYOffset(attrs.valueAsDouble("LOCALX"), attrs.valueAsDouble("LOCALY"));
-		if (!currItem->asLatexFrame())
+//		if (!currItem->asLatexFrame())
+#ifdef HAVE_OSG
+		if ((currItem->asImageFrame() || currItem->asOSGFrame()) && (!currItem->asLatexFrame()))
+#else
+		if ((currItem->asImageFrame()) && (!currItem->asLatexFrame()))
+#endif
 		{
 			bool inlineF = attrs.valueAsBool("isInlineImage", false);
 			QString dat  = attrs.valueAsString("ImageData", "");
@@ -2181,6 +2237,15 @@
 			}
 			else
 				currItem->Pfile = Relative2Path(attrs.valueAsString("PFILE"), baseDir);
+#ifdef HAVE_OSG
+			if (currItem->asOSGFrame())
+			{
+				PageItem_OSGFrame *osgframe = currItem->asOSGFrame();
+				osgframe->modelFile = Relative2Path(attrs.valueAsString("modelFile"), baseDir);
+				osgframe->currentView = attrs.valueAsString("currentViewName", "");
+				osgframe->loadModel();
+			}
+#endif
 		}
 		currItem->IProfile    = attrs.valueAsString("PRFILE", "");
 		currItem->EmProfile   = attrs.valueAsString("EPROF" , "");
Index: scribus/plugins/fileloader/scribus134format/scribus134format.cpp
===================================================================
--- scribus/plugins/fileloader/scribus134format/scribus134format.cpp	(revision 13838)
+++ scribus/plugins/fileloader/scribus134format/scribus134format.cpp	(revision 13839)
@@ -2261,6 +2261,7 @@
 		break;
 	//
 	case PageItem::ImageFrame:
+	case PageItem::OSGFrame:
 	case PageItem::LatexFrame: /*Everything that is valid for image frames is also valid for latex frames*/
 		z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, 1, doc->toolSettings.dBrushPict, CommonStrings::None, true);
 		currItem = doc->Items->at(z);
Index: scribus/undomanager.cpp
===================================================================
--- scribus/undomanager.cpp	(revision 13838)
+++ scribus/undomanager.cpp	(revision 13839)
@@ -787,7 +787,7 @@
 		{
 			if (i == 0)
 				at(i)->transactionCode = 1;
-			else if (i == static_cast<int>(sizet() - 1))
+			else if (i == static_cast<uint>(sizet() - 1))
 				at(i)->transactionCode = 2;
 			else
 				at(i)->transactionCode = 3;
Index: scribus/scpreview.cpp
===================================================================
--- scribus/scpreview.cpp	(revision 13838)
+++ scribus/scpreview.cpp	(revision 13839)
@@ -583,6 +583,7 @@
 			{
 			case PageItem::ImageFrame:
 			case PageItem::LatexFrame:
+			case PageItem::OSGFrame:
 				if ((OB.Pcolor != CommonStrings::None) || (OB.GrType != 0))
 				{
 					pS->setupPolygon(&OB.PoLine);
Index: scribus/pageitem_desaxe.cpp
===================================================================
--- scribus/pageitem_desaxe.cpp	(revision 13838)
+++ scribus/pageitem_desaxe.cpp	(revision 13839)
@@ -16,7 +16,11 @@
 #include "pageitem_polyline.h"
 #include "pageitem_textframe.h"
 #include "pageitem_latexframe.h"
+#ifdef HAVE_OSG
+	#include "pageitem_osgframe.h"
+#endif
 #include "scribusdoc.h"
+#include "sctextstream.h"
 #include "util_color.h"
 #include "util_math.h"
 #include "util.h"
@@ -185,6 +189,17 @@
 		else
 			result.insert("image-file", Path2Relative(item->externalFile(), QDir::homePath()));
 	}
+#ifdef HAVE_OSG
+	if (item->realItemType() == PageItem::OSGFrame)
+	{
+		if (!item->Pfile.isEmpty())
+		{
+			const PageItem_OSGFrame *osgframe = dynamic_cast<const PageItem_OSGFrame*>(item);
+			result.insert("modelFile", Path2Relative(osgframe->modelFile, QDir::homePath()));
+			result.insert("currentViewName", osgframe->currentView);
+		}
+	}
+#endif
 	if (!item->fileIconPressed().isEmpty())
 		result.insert("icon-pressed-file", Path2Relative(item->fileIconPressed(), QDir::homePath()));
 	if (!item->fileIconRollover().isEmpty())
@@ -292,10 +307,12 @@
 	const PageItem_LatexFrame *latexframe = NULL;
 	if (this->realItemType() == PageItem::LatexFrame)
 		latexframe = dynamic_cast<const PageItem_LatexFrame*>(this);
-	if (latexframe) {
+	if (latexframe)
+	{
 		handler.begin("latex-source", empty);
 		QMapIterator<QString, QString> i(latexframe->editorProperties);
-		while (i.hasNext()) {
+		while (i.hasNext())
+		{
 			Xml_attr property;
 			i.next();
 			property.insert("name", i.key());
@@ -306,10 +323,108 @@
 		handler.chars(latexframe->formula());
 		handler.end("latex-source");
 	}
+#ifdef HAVE_OSG
+	if (this->realItemType() == PageItem::OSGFrame)
+	{
+		const PageItem_OSGFrame *osgitem = dynamic_cast<const PageItem_OSGFrame*>(this);
+		if (!osgitem->Pfile.isEmpty())
+		{
+			QHashIterator<QString, PageItem_OSGFrame::viewDefinition> itv(osgitem->viewMap);
+			while (itv.hasNext())
+			{
+				Xml_attr osg;
+				itv.next();
+				osg.insert("viewName", toXMLString(itv.key()));
+				osg.insert("angleFOV", toXMLString(itv.value().angleFOV));
+				QString tmp;
+				QString trackM = "";
+				for (uint matx = 0; matx < 4; ++matx)
+				{
+					for (uint maty = 0; maty < 4; ++maty)
+					{
+						trackM += tmp.setNum(itv.value().trackerMatrix(matx, maty))+" ";
+					}
+				}
+				osg.insert("trackM", trackM);
+				QString trackC = "";
+				trackC += tmp.setNum(itv.value().trackerCenter[0])+" ";
+				trackC += tmp.setNum(itv.value().trackerCenter[1])+" ";
+				trackC += tmp.setNum(itv.value().trackerCenter[2]);
+				osg.insert("trackC", trackC);
+				QString cameraP = "";
+				cameraP += tmp.setNum(itv.value().cameraPosition[0])+" ";
+				cameraP += tmp.setNum(itv.value().cameraPosition[1])+" ";
+				cameraP += tmp.setNum(itv.value().cameraPosition[2]);
+				osg.insert("cameraP", cameraP);
+				QString cameraU = "";
+				cameraU += tmp.setNum(itv.value().cameraUp[0])+" ";
+				cameraU += tmp.setNum(itv.value().cameraUp[1])+" ";
+				cameraU += tmp.setNum(itv.value().cameraUp[2]);
+				osg.insert("cameraU", cameraU);
+				osg.insert("trackerDist", toXMLString(itv.value().trackerDist));
+				osg.insert("trackerSize", toXMLString(itv.value().trackerSize));
+				osg.insert("illumination", toXMLString(itv.value().illumination));
+				osg.insert("rendermode", toXMLString(itv.value().rendermode));
+				handler.begin("OSGViews", osg);
+				handler.end("OSGViews");
+			}
+		}
+	}
+#endif
 	handler.end(elemtag);
 }
 
+#ifdef HAVE_OSG
+class OSGViews_body : public Action_body
+{
+	void begin (const Xml_string& tagName, Xml_attr attr)
+	{
+		if (tagName=="OSGViews")
+		{
+			PageItem_OSGFrame* osgframe = dynamic_cast<PageItem_OSGFrame *> (this->dig->top<PageItem>());
+			struct PageItem_OSGFrame::viewDefinition defaultView;
+			defaultView.angleFOV = parseDouble(attr["angleFOV"]);
+			QString tmp = "";
+			tmp = attr["trackM"];
+			ScTextStream fp(&tmp, QIODevice::ReadOnly);
+			double m1, m2, m3, m4;
+			double m5, m6, m7, m8;
+			double m9, m10, m11, m12;
+			double m13, m14, m15, m16;
+			fp >> m1 >> m2 >> m3 >> m4;
+			fp >> m5 >> m6 >> m7 >> m8;
+			fp >> m9 >> m10 >> m11 >> m12;
+			fp >> m13 >> m14 >> m15 >> m16;
+			defaultView.trackerMatrix.set(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16);
+			tmp = "";
+			tmp = attr["trackC"];
+			ScTextStream fp2(&tmp, QIODevice::ReadOnly);
+			double v1, v2, v3;
+			fp2 >> v1 >> v2 >> v3;
+			defaultView.trackerCenter.set(v1, v2, v3);
+			tmp = "";
+			tmp = attr["cameraP"];
+			ScTextStream fp3(&tmp, QIODevice::ReadOnly);
+			fp3 >> v1 >> v2 >> v3;
+			defaultView.cameraPosition.set(v1, v2, v3);
+			tmp = "";
+			tmp = attr["cameraU"];
+			ScTextStream fp4(&tmp, QIODevice::ReadOnly);
+			fp4 >> v1 >> v2 >> v3;
+			defaultView.cameraUp.set(v1, v2, v3);
+			defaultView.trackerDist = parseDouble(attr["trackerDist"]);
+			defaultView.trackerSize = parseDouble(attr["trackerSize"]);
+			defaultView.illumination = static_cast<PageItem_OSGFrame::LightType>(parseInt(attr["illumination"]));
+			defaultView.rendermode = static_cast<PageItem_OSGFrame::RenderType>(parseInt(attr["rendermode"]));
+			QString name = attr["viewName"];
+			osgframe->viewMap.insert(name, defaultView);
+		}
+	}
+};
 
+class OSGViews : public MakeAction<OSGViews_body>
+{};
+#endif
 
 class CreatePageItem_body : public Generator_body<PageItem>
 {
@@ -545,7 +660,26 @@
 {};
 
 
+#ifdef HAVE_OSG
+class OSGParams_body : public Action_body
+{
+	public:	
+		void begin(const Xml_string& tag, Xml_attr attr) 
+		{
+			if (this->dig->top<PageItem>()->realItemType() == PageItem::OSGFrame)
+			{
+				PageItem_OSGFrame* osgframe = dynamic_cast<PageItem_OSGFrame *> (this->dig->top<PageItem>());
+				osgframe->setExternalModelFile(attr["modelFile"]);
+				osgframe->currentView = attr["currentViewName"];
+				osgframe->loadModel();
+			}
+		}
+};
 
+struct  OSGParams : public MakeAction<OSGParams_body> 
+{};
+#endif
+
 const Xml_string PageItem::saxxDefaultElem("item");
 
 
@@ -669,10 +803,18 @@
 	// TODO: obj attributes
 	
 	ruleset.addRule(itemPrefix, SetAttribute<PageItem,QString>( & PageItem::setExternalFile, "image-file" ));
+	ruleset.addRule(itemPrefix, SetAttributeWithConversion<PageItem,bool>( & PageItem::setImageInline, "isInlineImage", &parseBool ));
+	ruleset.addRule(itemPrefix, SetAttribute<PageItem,QString>( & PageItem::setInlineExt, "inlineImageExt" ));
+	ruleset.addRule(itemPrefix, SetAttribute<PageItem,QString>( & PageItem::setInlineData, "ImageData" ));
 	ruleset.addRule(itemPrefix, SetAttribute<PageItem,QString>( & PageItem::setFileIconPressed, "icon-pressed-file" ));
 	ruleset.addRule(itemPrefix, SetAttribute<PageItem,QString>( & PageItem::setFileIconRollover, "icon-rollover-file" ));
 	ruleset.addRule("latex-source", LatexSource());
 	ruleset.addRule(itemPrefix, LatexParams());
+#ifdef HAVE_OSG
+	ruleset.addRule(itemPrefix, OSGParams());
+	OSGViews osgViewset;
+	ruleset.addRule(Digester::concat(itemPrefix, "OSGViews"), osgViewset);
+#endif
 	
 	ruleset.addRule(itemPrefix, SetAttributeWithConversion<PageItem,QVector<double> >( & PageItem::setDashes, "line-dashes", &parseDoubleVector ));
 	ruleset.addRule(itemPrefix, SetAttributeWithConversion<PageItem,double>( & PageItem::setDashOffset, "line-dash-offset", &parseDouble ));
Index: scribus/canvasmode_normal.cpp
===================================================================
--- scribus/canvasmode_normal.cpp	(revision 13838)
+++ scribus/canvasmode_normal.cpp	(revision 13839)
@@ -184,7 +184,13 @@
 			}
 			if (currItem->imageShown())
 				m_view->requestMode(modeEdit);
-		} 
+		}
+#ifdef HAVE_OSG
+		else if (currItem->asOSGFrame())
+		{
+			m_view->requestMode(submodeEditExternal);
+		}
+#endif
 		else if ((currItem->itemType() == PageItem::Polygon) || (currItem->itemType() == PageItem::PolyLine) || (currItem->itemType() == PageItem::ImageFrame) || (currItem->itemType() == PageItem::PathText))
 		{
 			if ((currItem->locked()) || (!currItem->ScaleType))
Index: scribus/CMakeLists.txt
===================================================================
--- scribus/CMakeLists.txt	(revision 13838)
+++ scribus/CMakeLists.txt	(revision 13839)
@@ -17,7 +17,26 @@
 IF (WANT_DESIGNER)
   ADD_SUBDIRECTORY(designer)
 ENDIF (WANT_DESIGNER)
+IF(HAVE_OSG)
+  ADD_SUBDIRECTORY(prc)
+ENDIF (HAVE_OSG)
 
+
+IF(HAVE_OSG)
+  SET(SCRIBUS_OSG_UI_SRC
+  ui/osgeditor.ui
+  )
+  SET(SCRIBUS_OSG_CLASS
+  ui/AdapterWidget.h
+  ui/osgeditor.h
+  pageitem_osgframe.h
+  )
+  SET(SCRIBUS_OSG_SRC
+  ui/AdapterWidget.cpp
+  ui/osgeditor.cpp
+  pageitem_osgframe.cpp
+  )
+ENDIF (HAVE_OSG)
 # We setup something like a group to gather setter related stuff
 # because it could expand into a huge amount of file at some point.
 SET(SCRIBUS_ITEMSETTERS_UI_SRC
@@ -119,6 +138,7 @@
   ui/unicodesearch.ui
   ui/useprintermarginsdialog.ui
   ${SCRIBUS_ITEMSETTERS_UI_SRC}
+  ${SCRIBUS_OSG_UI_SRC}
 )
 
 SET(SCRIBUS_MOC_CLASSES
@@ -369,6 +389,7 @@
   ui/useprintermarginsdialog.h
   ui/vruler.h
   ${SCRIBUS_ITEMSETTERS_CLASS}
+  ${SCRIBUS_OSG_CLASS}
 )
 
 SET(SCRIBUS_SOURCES
@@ -741,6 +762,7 @@
   vgradientex.cpp
   ui/vruler.cpp
   ${SCRIBUS_ITEMSETTERS_SRC}
+  ${SCRIBUS_OSG_SRC}
 )
 
 IF(WIN32)
@@ -770,10 +792,17 @@
   ${CMAKE_CURRENT_BINARY_DIR}/fonts
 )
 
+IF(HAVE_OSG)
+  LINK_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}/prc )
+ENDIF (HAVE_OSG)
+
 SET(SCRIBUS_TEXT_LIB "scribus_text_lib")
 SET(SCRIBUS_STYLES_LIB "scribus_styles_lib")
 SET(SCRIBUS_FONTS_LIB "scribus_fonts_lib")
 SET(SCRIBUS_DESAXE_LIB "scribus_desaxe_lib")
+IF(HAVE_OSG)
+  SET(SCRIBUS_PRC_LIB "scribus_prc_lib")
+ENDIF (HAVE_OSG)
 
 INCLUDE_DIRECTORIES(
   ${CMAKE_SOURCE_DIR}
@@ -803,6 +832,7 @@
   cmake_policy(SET CMP0003 OLD)
 ENDIF(COMMAND cmake_policy)
 
+IF(HAVE_OSG)
 ADD_EXECUTABLE(${EXE_NAME}
   ${SCRIBUS_MOC_SOURCES}
   ${SCRIBUS_SOURCES}
@@ -814,7 +844,22 @@
   ${SCRIBUS_DESAXE_SOURCES}
   ${SCRIBUS_WIN32_ONLY_SOURCES}
   ${GESTURE_FRAME_PREVIEW_SOURCES}
+  ${SCRIBUS_PRC_SOURCES}
 )
+ELSE(HAVE_OSG)
+ADD_EXECUTABLE(${EXE_NAME}
+  ${SCRIBUS_MOC_SOURCES}
+  ${SCRIBUS_SOURCES}
+  ${SCRIBUS_MAIN_CPP}
+  ${SCRIBUS_UI_SOURCES}
+  ${SCRIBUS_TEXT_SOURCES}
+  ${SCRIBUS_STYLES_SOURCES}
+  ${SCRIBUS_FONTS_SOURCES}
+  ${SCRIBUS_DESAXE_SOURCES}
+  ${SCRIBUS_WIN32_ONLY_SOURCES}
+  ${GESTURE_FRAME_PREVIEW_SOURCES}
+)
+ENDIF (HAVE_OSG)
 
 IF(WIN32)
   SET_TARGET_PROPERTIES(${EXE_NAME}
@@ -887,6 +932,18 @@
   )
 ENDIF(HAVE_PODOFO)
 
+IF(HAVE_OSG)
+  TARGET_LINK_LIBRARIES(${EXE_NAME}
+    ${OSG_LIBRARY}
+    ${OSGGA_LIBRARY}
+    ${OSGUTIL_LIBRARY}
+    ${OSGDB_LIBRARY}
+    ${OSGVIEWER_LIBRARY}
+    ${OSGTEXT_LIBRARY}
+    ${SCRIBUS_PRC_LIB}
+  )
+ENDIF(HAVE_OSG)
+
 # Now build plugins
 SET(PLUGIN_LIBRARIES)
 IF(WIN32)
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(revision 13838)
+++ CMakeLists.txt	(revision 13839)
@@ -418,6 +418,7 @@
 ENDIF (WANT_QT3SUPPORT)
 SET (QT_USE_QTXML TRUE )
 SET (QT_USE_QTWEBKIT TRUE )
+SET (QT_USE_QTOPENGL TRUE )
 IF (APPLE)
   SET( QT_USE_QTSQL TRUE )
 ENDIF (APPLE)
@@ -451,6 +452,7 @@
     -DQT_GUI_LIB
     -DQT_THREAD_LIB
     -DQT_XML_LIB
+    -DQT_GL_LIB
   )
 ELSE(QT_FOUND)
   MESSAGE(FATAL_ERROR "No Qt4 found")
@@ -476,6 +478,19 @@
 ENDIF(PNG_FOUND)
 #>> ZLIB, PNG
 
+IF (WANT_NOOSG)
+    MESSAGE("Building without 3D-Extension")
+ELSE (WANT_NOOSG)
+  FIND_PACKAGE(OSG)
+  IF(OSG_FOUND)
+    MESSAGE("OSG found OK")
+    SET(HAVE_OSG 1)
+  ELSE(OSG_FOUND)
+    MESSAGE("No OSG found, building without 3D-Extension")
+  ENDIF(OSG_FOUND)
+  FIND_PACKAGE(OpenGL)
+ENDIF (WANT_NOOSG)
+
 #<< JPEG, TIFF, PYTHON
 FIND_PACKAGE(JPEG REQUIRED)
 IF (JPEG_FOUND)
@@ -692,6 +707,8 @@
   ${PYTHON_INCLUDE_PATH}
   ${TIFF_INCLUDE_DIR}
   ${ZLIB_INCLUDE_DIR}
+  ${OPENGL_INCLUDE_DIR}
+  ${OSG_INCLUDE_DIR}
 )
 
 ##############################################################################################################
Index: config.h.cmake
===================================================================
--- config.h.cmake	(revision 13838)
+++ config.h.cmake	(revision 13839)
@@ -25,6 +25,7 @@
 #cmakedefine HAVE_LIBZ 1
 #cmakedefine HAVE_FONTCONFIG 1
 #cmakedefine HAVE_PODOFO 1
+#cmakedefine HAVE_OSG 1
 #cmakedefine HAVE_SYS_TYPES_H 1
 #cmakedefine HAVE_SYS_STAT_H 1
 #cmakedefine FT_FREETYPE_H
Index: icons/16/annot3d.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: icons/16/annot3d.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: icons/22/annot3d.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: icons/22/annot3d.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: icons/CMakeLists.txt
===================================================================
--- icons/CMakeLists.txt	(revision 13838)
+++ icons/CMakeLists.txt	(revision 13839)
@@ -242,6 +242,7 @@
 16/align-vertical-center.png
 16/align-vertical-top-out.png
 16/align-vertical-top.png
+16/annot3d.png
 16/checkbox.png
 16/close.png
 16/color-fill.png
@@ -363,6 +364,7 @@
 22/align-vertical-center.png
 22/align-vertical-top-out.png
 22/align-vertical-top.png
+22/annot3d.png
 22/checkbox.png
 22/close.png
 22/color-picker.png




More information about the scribus-commit mailing list