Function TOfficeObj(n);
Begin
	case lowercase(n) of
	"nodeinfo":
		return new NodeInfo("");
	"tfont":
		return new TFont();
	"tcomment":
		return new TComment();
	"tcomments":
		return new TComments();
	"trichtext":
		return new TRichText();
	"txdrfromto":
		return new TxdrFromTo();
	"toff":
		return new TOff();
	"text":
		return new TExt();
	"txfrm":
		return new TXfrm();
	"tclientdata":
		return new TClientData();
	"tgraphicframepr":
		return new TGraphicFramePr();
	"tgraphicframe":
		return new TGraphicFrame();
	"ttwocellanchor":
		return new TtwoCellAnchor();
	"tchart":
		return new TChart();
	"tlegend":
		return new TLegend();
	"tplot":
		return new TPlot();
	"tchartaxis":
		return new TChartAxis();
	"tnumfont":
		return new TNumFont();
	"tnamelayout":
		return new TNameLayout();
	"tpt":
		return new Tpt();
	"tstrcache":
		return new TStrCache();
	"tstrref":
		return new TStrRef();
	"tccat":
		return new TcCat();
	"tnumcache":
		return new TNumCache();
	"tnumref":
		return new TNumRef();
	"tcval":
		return new TcVal();
	"ttx":
		return new TTx();
	"tsolidfill":
		return new TSolidFill();
	"tschemeclr":
		return new TSchemeClr();
	"tln":
		return new TLn();
	"tcontourclr":
		return new TContourClr();
	"tsp3d":
		return new TSp3D();
	"tsppr":
		return new TspPr();
	"tdpt":
		return new TDpt();
	"tmarker":
		return new TMarker();
	"tser":
		return new TSer();
	"tdlbls":
		return new TdLbls();
	"tccharts":
		return new TcCharts();
	"tcscaling":
		return new TcScaling();
	"tcchartlines":
		return new TcChartLines();
	"tcnumfmt":
		return new TcNumFmt();
	"tar":
		return new TaR();
	"taendpararpr":
		return new TaEndParaRPr();
	"tap":
		return new TaP();
	"tappr":
		return new TaPPr();
	"talatin":
		return new TaLatin();
	"taea":
		return new TaEa();
	"tacs":
		return new TaCs();
	"tarpr":
		return new TaRPr();
	"tabodypr":
		return new TaBodyPr();
	"ttxpr":
		return new TTxPr();
	"tcaxs":
		return new TcAxs();
	"tplotarea":
		return new TplotArea();
	"tview3d":
		return new TView3D();
	"tborder":
		return new TBorder();
	"tborders":
		return new TBorders();
	"tnumfmts":
		return new TNumFmts();
	"tfills":
		return new TFills();
	"tpattern":
		return new TPattern();
	"tgradient":
		return new TGradient();
	"tstop0":
		return new TStop0();
	"tstop1":
		return new TStop1();
	"talignment":
		return new TAlignment();
	"tprotection":
		return new TProtection();
	"tstyle":
		return new TStyle();
	"theaderfooter":
		return new THeaderFooter();
	"tmargins":
		return new TMargins();
	"thyperlink":
		return new THyperLink();
	"tsheetview":
		return new TSheetView();
	"tpagelayout":
		return new TPageLayout();
	"tappproperty":
		return new TAppProperty();
	"tbr":
		return new TBr();
	"twfont":
		return new TwFont();
	"twrpr":
		return new TwrPr();
	"twppr":
		return new TwpPr();
	"tcnvgraphicframepr":
		return new TcNvGraphicFramePr();
	"tnvpicpr":
		return new TnvPicPr();
	"tprstgeom":
		return new TprstGeom();
	"tpicsppr":
		return new TpicsPpr();
	"tfill":
		return new TFill();
	"tpic":
		return new TPic();
	"tgraphicdata":
		return new TGraphicData();
	"tgraphic":
		return new TGraphic();
	"twinline":
		return new TwInline();
	"twdrawing":
		return new TwDrawing();
	"trun":
		return new TRun();
	"tparagraph":
		return new TParagraph();
	"twbody":
		return new TwBody();
	"twtcpr":
		return new TwTcPr();
	"twtc":
		return new TwTc();
	"twtrpr":
		return new TwTrPr();
	"twtr":
		return new TwTr();
	"twtblpr":
		return new TwTblPr();
	"twgridcol":
		return new TwGridCol();
	"twtblgrid":
		return new TwTblGrid();
	"ttable":
		return new TTable();
	"tcoreproperties":
		return new TCoreProperties();
	"tpicture":
		return new TPicture();
	End;
End;

///////////////////////////////////////////////////////////////
/// TFont
///////////////////////////////////////////////////////////////
type TFont=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('font');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"background", "obj":Background,"attrEx":"","nodeType":"","attrName":""),("name":"b", "obj":Bold,"attrEx":"","nodeType":"empty","attrName":"")
			,("name":"color", "obj":Color,"attrEx":"","nodeType":"","attrName":"rgb"),("name":"color", "obj":ColorIndex,"attrEx":"index","nodeType":"","attrName":"")
			,("name":"fontstyle", "obj":FontStyle,"attrEx":"","nodeType":"","attrName":""),("name":"i", "obj":Italic,"attrEx":"","nodeType":"empty","attrName":"")
			,("name":"name", "obj":Name,"attrEx":"","nodeType":"","attrName":""),("name":"outlinefont", "obj":OutlineFont,"attrEx":"","nodeType":"","attrName":"")
			,("name":"shadow", "obj":Shadow,"attrEx":"","nodeType":"","attrName":""),("name":"sz", "obj":Size,"attrEx":"","nodeType":"","attrName":"")
			,("name":"strikethrough", "obj":Strikethrough,"attrEx":"","nodeType":"","attrName":""),("name":"subscript", "obj":Subscript,"attrEx":"","nodeType":"","attrName":"")
			,("name":"superscript", "obj":Superscript,"attrEx":"","nodeType":"","attrName":""),("name":"u", "obj":Underline,"attrEx":"","nodeType":"empty","attrName":"")
			,("name":"color", "obj":ThemeColor,"attrEx":"theme","nodeType":"","attrName":""),("name":"tintandshade", "obj":TintAndShade,"attrEx":"","nodeType":"","attrName":"")
			,("name":"rFont", "obj":rFont,"attrEx":"","nodeType":"","attrName":""),("name":"charset", "obj":Charset,"attrEx":"","nodeType":"","attrName":"")
			,("name":"scheme", "obj":ThemeFont,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Background;
	Bold;
	Color;
	ColorIndex;
	FontStyle;
	Italic;
	Name;
	OutlineFont;
	Shadow;
	Size;
	Strikethrough;
	Subscript;
	Superscript;
	Underline;
	ThemeColor;
	TintAndShade;
	rFont;
	Charset;
	ThemeFont;
End;

///////////////////////////////////////////////////////////////
/// TComment
///////////////////////////////////////////////////////////////
type TComment=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('r');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Font := new TFont('rPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":Font.NodeName, "obj":Font,"attrEx":"","nodeType":"","attrName":""),("name":"t", "obj":Text,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"t", "obj":Space,"attrEx":"xml:space","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Font;
	Text;
	Space;
End;

///////////////////////////////////////////////////////////////
/// TComments
///////////////////////////////////////////////////////////////
type TComments=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('comment/text');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('authorId':AuthorId,'ref':Ref) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	Function AddComment(text);
	Begin
		o := new TComment("r");
		ExtNodes[ length(ExtNodes) ] := array("name":"r", "obj":o, "attrEx":"", "nodeType":"");
		o.Text := text;
		o.Font.Bold := "";
		o.Font.Size := 9;
		o.Font.rFont := "宋体";
		o.Font.Charset := 134;
		return o;
	End;	

	Function Comment(index);
	Begin
		return GetNode(index);
	End;

	//Attributes
	AuthorId;
	Ref;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TRichText
///////////////////////////////////////////////////////////////
type TRichText=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('si');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	Function AddText(text);
	Begin
		o := new TComment("r");
		ExtNodes[ length(ExtNodes) ] := array("name":"r", "obj":o, "attrEx":"", "nodeType":"");
		o.Text := text;
		return o;
	End;

	Function RichText(index);
	Begin
		return GetNode(index);
	End;

	//Attributes

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TxdrFromTo
///////////////////////////////////////////////////////////////
type TxdrFromTo=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('xdr:from');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"xdr:col", "obj":Col,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"xdr:colOff", "obj":ColOff,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"xdr:row", "obj":Row,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"xdr:rowOff", "obj":RowOff,"attrEx":"","nodeType":"pcdata","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Col;
	ColOff;
	Row;
	RowOff;
End;

///////////////////////////////////////////////////////////////
/// TOff
///////////////////////////////////////////////////////////////
type TOff=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:off');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('x':X,'y':Y) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	X;
	Y;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TExt
///////////////////////////////////////////////////////////////
type TExt=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:ext');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('cx':Cx,'cy':Cy) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Cx;
	Cy;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TXfrm
///////////////////////////////////////////////////////////////
type TXfrm=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:xfrm');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Off := new TOff('a:off');
		Ext := new TExt('a:ext');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":Off.NodeName, "obj":Off,"attrEx":"","nodeType":"","attrName":""),("name":Ext.NodeName, "obj":Ext,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Off;
	Ext;
End;

///////////////////////////////////////////////////////////////
/// TClientData
///////////////////////////////////////////////////////////////
type TClientData=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('x:ClientData');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		ObjectType := "Note";
		MoveWithCells := "";
		SizeWithCells := "";
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('ObjectType':ObjectType) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"x:MoveWithCells", "obj":MoveWithCells,"attrEx":"","nodeType":"empty","attrName":""),("name":"x:SizeWithCells", "obj":SizeWithCells,"attrEx":"","nodeType":"empty","attrName":"")
			,("name":"x:Anchor", "obj":Anchor,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"x:AutoFill", "obj":AutoFill,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"x:Row", "obj":Row,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"x:Column", "obj":Column,"attrEx":"","nodeType":"pcdata","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	ObjectType;

	//Nodes
	MoveWithCells;
	SizeWithCells;
	Anchor;
	AutoFill;
	Row;
	Column;
End;

///////////////////////////////////////////////////////////////
/// TGraphicFramePr
///////////////////////////////////////////////////////////////
type TGraphicFramePr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('xdr:cNvGraphicFramePr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"xdr:cNvPr", "obj":Name,"attrEx":"name","nodeType":"","attrName":""),("name":"xdr:cNvPr", "obj":Id,"attrEx":"id","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Name;
	Id;
End;

///////////////////////////////////////////////////////////////
/// TGraphicFrame
///////////////////////////////////////////////////////////////
type TGraphicFrame=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('xdr:graphicFrame');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		GraphicFramePr := new TGraphicFramePr('xdr:nvGraphicFramePr');
		Xfrm := new TXfrm('xdr:xfrm');
		Graphic := new TGraphic('a:graphic');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":GraphicFramePr.NodeName, "obj":GraphicFramePr,"attrEx":"","nodeType":"","attrName":""),("name":Xfrm.NodeName, "obj":Xfrm,"attrEx":"","nodeType":"","attrName":"")
			,("name":Graphic.NodeName, "obj":Graphic,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	GraphicFramePr;
	Xfrm;
	Graphic;
End;

///////////////////////////////////////////////////////////////
/// TtwoCellAnchor
///////////////////////////////////////////////////////////////
type TtwoCellAnchor=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('xdr:twoCellAnchor');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		XFrom := new TxdrFromTo('xdr:from');
		XTo := new TxdrFromTo('xdr:to');
		GraphicFrame := new TGraphicFrame('xdr:graphicFrame');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('editAs':EditAs) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":XFrom.NodeName, "obj":XFrom,"attrEx":"","nodeType":"","attrName":""),("name":XTo.NodeName, "obj":XTo,"attrEx":"","nodeType":"","attrName":"")
			,("name":GraphicFrame.NodeName, "obj":GraphicFrame,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	EditAs;

	//Nodes
	XFrom;
	XTo;
	GraphicFrame;
End;

///////////////////////////////////////////////////////////////
/// TChart
///////////////////////////////////////////////////////////////
type TChart=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('t:chart');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Series := array();
		XAxis := new TChartAxis('XAxis');
		YAxis := new TChartAxis('YAxis');
		Legend := new TLegend('Legend');
		Plotarea := new TPlot('Plotarea');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"BegColOff", "obj":BegColOff,"attrEx":"","nodeType":"","attrName":""),("name":"BegRowOff", "obj":BegRowOff,"attrEx":"","nodeType":"","attrName":"")
			,("name":"EndColOff", "obj":EndColOff,"attrEx":"","nodeType":"","attrName":""),("name":"EndRowOff", "obj":EndRowOff,"attrEx":"","nodeType":"","attrName":"")
			,("name":"Name", "obj":Name,"attrEx":"","nodeType":"","attrName":""),("name":"Title", "obj":Title,"attrEx":"","nodeType":"","attrName":"")
			,("name":"Type", "obj":Type,"attrEx":"","nodeType":"","attrName":""),("name":"VaryColors", "obj":VaryColors,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ShowLegendKey", "obj":ShowLegendKey,"attrEx":"","nodeType":"","attrName":""),("name":"ShowVal", "obj":ShowVal,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ShowCatName", "obj":ShowCatName,"attrEx":"","nodeType":"","attrName":""),("name":"ShowSerName", "obj":ShowSerName,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ShowBubbleSize", "obj":ShowBubbleSize,"attrEx":"","nodeType":"","attrName":""),("name":"ShowPercent", "obj":ShowPercent,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ShowLeaderLines", "obj":ShowLeaderLines,"attrEx":"","nodeType":"","attrName":""),("name":"Ord", "obj":Ord,"attrEx":"","nodeType":"","attrName":"")
			,("name":"Series", "obj":Series,"attrEx":"","nodeType":"","attrName":""),("name":XAxis.NodeName, "obj":XAxis,"attrEx":"","nodeType":"","attrName":"")
			,("name":YAxis.NodeName, "obj":YAxis,"attrEx":"","nodeType":"","attrName":""),("name":Legend.NodeName, "obj":Legend,"attrEx":"","nodeType":"","attrName":"")
			,("name":Plotarea.NodeName, "obj":Plotarea,"attrEx":"","nodeType":"","attrName":""),("name":"ShowBlanksAs", "obj":ShowBlanksAs,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ChartNode", "obj":ChartNode,"attrEx":"","nodeType":"","attrName":""),("name":"C", "obj":C,"attrEx":"","nodeType":"","attrName":"")
			,("name":"xmlObj", "obj":xmlObj,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	Function AddSeries(Name, Categories, Value);
	Begin
		Series union= array(("Name":Name,"Categories":Categories,"Values":Value));
	End;

	//Attributes

	//Nodes
	BegColOff;
	BegRowOff;
	EndColOff;
	EndRowOff;
	Name;
	Title;
	Type;
	VaryColors;
	ShowLegendKey;
	ShowVal;
	ShowCatName;
	ShowSerName;
	ShowBubbleSize;
	ShowPercent;
	ShowLeaderLines;
	Ord;
	Series;
	XAxis;
	YAxis;
	Legend;
	Plotarea;
	ShowBlanksAs;
	ChartNode;
	C;
	xmlObj;
End;

///////////////////////////////////////////////////////////////
/// TLegend
///////////////////////////////////////////////////////////////
type TLegend=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('legend');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"ShowLegendKey", "obj":ShowLegendKey,"attrEx":"","nodeType":"","attrName":""),("name":"Position", "obj":Position,"attrEx":"","nodeType":"","attrName":"")
			,("name":"None", "obj":None,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	ShowLegendKey;
	Position;
	None;
End;

///////////////////////////////////////////////////////////////
/// TPlot
///////////////////////////////////////////////////////////////
type TPlot=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('TPlot');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"ShowBubbleSize", "obj":ShowBubbleSize,"attrEx":"","nodeType":"","attrName":""),("name":"ShowCatName", "obj":ShowCatName,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ShowLeaderLines", "obj":ShowLeaderLines,"attrEx":"","nodeType":"","attrName":""),("name":"ShowPercent", "obj":ShowPercent,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ShowSerName", "obj":ShowSerName,"attrEx":"","nodeType":"","attrName":""),("name":"ShowVal", "obj":ShowVal,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	ShowBubbleSize;
	ShowCatName;
	ShowLeaderLines;
	ShowPercent;
	ShowSerName;
	ShowVal;
End;

///////////////////////////////////////////////////////////////
/// TChartAxis
///////////////////////////////////////////////////////////////
type TChartAxis=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('ChartAxis');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		NumFont := new TNumFont('NumFont');
		NameLayout := new TNameLayout('NameLayout');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"None", "obj":None,"attrEx":"","nodeType":"","attrName":""),("name":"Crossing", "obj":Crossing,"attrEx":"","nodeType":"","attrName":"")
			,("name":"MajorGridlines", "obj":MajorGridlines,"attrEx":"","nodeType":"","attrName":""),("name":"MinorGridlines", "obj":MinorGridlines,"attrEx":"","nodeType":"","attrName":"")
			,("name":"MajorTickMark", "obj":MajorTickMark,"attrEx":"","nodeType":"","attrName":""),("name":"MinorTickMark", "obj":MinorTickMark,"attrEx":"","nodeType":"","attrName":"")
			,("name":"MinorUnitType", "obj":MinorUnitType,"attrEx":"","nodeType":"","attrName":""),("name":"MajorUnit", "obj":MajorUnit,"attrEx":"","nodeType":"","attrName":"")
			,("name":"MajorUnitType", "obj":MajorUnitType,"attrEx":"","nodeType":"","attrName":""),("name":"TickLabelSkip", "obj":TickLabelSkip,"attrEx":"","nodeType":"","attrName":"")
			,("name":"DisplayUnits", "obj":DisplayUnits,"attrEx":"","nodeType":"","attrName":""),("name":"DisplayUnitsVisible", "obj":DisplayUnitsVisible,"attrEx":"","nodeType":"","attrName":"")
			,("name":"DateAxis", "obj":DateAxis,"attrEx":"","nodeType":"","attrName":""),("name":"ReverseOrder", "obj":ReverseOrder,"attrEx":"","nodeType":"","attrName":"")
			,("name":"Max", "obj":Max,"attrEx":"","nodeType":"","attrName":""),("name":"Min", "obj":Min,"attrEx":"","nodeType":"","attrName":"")
			,("name":"NumFormat", "obj":NumFormat,"attrEx":"","nodeType":"","attrName":""),("name":NumFont.NodeName, "obj":NumFont,"attrEx":"","nodeType":"","attrName":"")
			,("name":"LogBase", "obj":LogBase,"attrEx":"","nodeType":"","attrName":""),("name":NameLayout.NodeName, "obj":NameLayout,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	None;
	Crossing;
	MajorGridlines;
	MinorGridlines;
	MajorTickMark;
	MinorTickMark;
	MinorUnitType;
	MajorUnit;
	MajorUnitType;
	TickLabelSkip;
	DisplayUnits;
	DisplayUnitsVisible;
	DateAxis;
	ReverseOrder;
	Max;
	Min;
	NumFormat;
	NumFont;
	LogBase;
	NameLayout;
End;

///////////////////////////////////////////////////////////////
/// TNumFont
///////////////////////////////////////////////////////////////
type TNumFont=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('NumFont');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"Color", "obj":Color,"attrEx":"","nodeType":"","attrName":""),("name":"Bold", "obj":Bold,"attrEx":"","nodeType":"","attrName":"")
			,("name":"Italic", "obj":Italic,"attrEx":"","nodeType":"","attrName":""),("name":"Underline", "obj":Underline,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Color;
	Bold;
	Italic;
	Underline;
End;

///////////////////////////////////////////////////////////////
/// TNameLayout
///////////////////////////////////////////////////////////////
type TNameLayout=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('NameLayout');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"X", "obj":X,"attrEx":"","nodeType":"","attrName":""),("name":"Y", "obj":Y,"attrEx":"","nodeType":"","attrName":"")
			,("name":"Width", "obj":Width,"attrEx":"","nodeType":"","attrName":""),("name":"Height", "obj":Height,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	X;
	Y;
	Width;
	Height;
End;

///////////////////////////////////////////////////////////////
/// Tpt
///////////////////////////////////////////////////////////////
type Tpt=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pt');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('idx':IDx) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"v", "obj":V,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	IDx;

	//Nodes
	V;
End;

///////////////////////////////////////////////////////////////
/// TStrCache
///////////////////////////////////////////////////////////////
type TStrCache=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('strRef');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Pt := new Tpt('pt');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"ptCount", "obj":PtCount,"attrEx":"","nodeType":"","attrName":""),("name":Pt.NodeName, "obj":Pt,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	PtCount;
	Pt;
End;

///////////////////////////////////////////////////////////////
/// TStrRef
///////////////////////////////////////////////////////////////
type TStrRef=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('strRef');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		StrCache := new TStrCache('strCache');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"f", "obj":F,"attrEx":"","nodeType":"pcdata","attrName":""),("name":StrCache.NodeName, "obj":StrCache,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	F;
	StrCache;
End;

///////////////////////////////////////////////////////////////
/// TcCat
///////////////////////////////////////////////////////////////
type TcCat=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('cat');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		StrRef := new TStrRef('strRef');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":StrRef.NodeName, "obj":StrRef,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	StrRef;
End;

///////////////////////////////////////////////////////////////
/// TNumCache
///////////////////////////////////////////////////////////////
type TNumCache=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('numCache');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Pt := new Tpt('pt');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"formatCode", "obj":FormatCode,"attrEx":"","nodeType":"","attrName":""),("name":"ptCount", "obj":PtCount,"attrEx":"","nodeType":"","attrName":"")
			,("name":Pt.NodeName, "obj":Pt,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	FormatCode;
	PtCount;
	Pt;
End;

///////////////////////////////////////////////////////////////
/// TNumRef
///////////////////////////////////////////////////////////////
type TNumRef=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('numRef');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		NumCache := new TNumCache('numCache');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"f", "obj":F,"attrEx":"","nodeType":"pcdata","attrName":""),("name":NumCache.NodeName, "obj":NumCache,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	F;
	NumCache;
End;

///////////////////////////////////////////////////////////////
/// TcVal
///////////////////////////////////////////////////////////////
type TcVal=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('val');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		NumRef := new TNumRef('numRef');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":NumRef.NodeName, "obj":NumRef,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	NumRef;
End;

///////////////////////////////////////////////////////////////
/// TTx
///////////////////////////////////////////////////////////////
type TTx=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('tx');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		StrRef := new TStrRef('strRef');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":StrRef.NodeName, "obj":StrRef,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	StrRef;
End;

///////////////////////////////////////////////////////////////
/// TSolidFill
///////////////////////////////////////////////////////////////
type TSolidFill=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:solidFill');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SchemeClr := new TSchemeClr('a:schemeClr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":SchemeClr.NodeName, "obj":SchemeClr,"attrEx":"","nodeType":"","attrName":""),("name":"a:srgbClr", "obj":SrgbClr,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	SchemeClr;
	SrgbClr;
End;

///////////////////////////////////////////////////////////////
/// TSchemeClr
///////////////////////////////////////////////////////////////
type TSchemeClr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:schemeClr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('val':Val) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"a:lumMod", "obj":LumMod,"attrEx":"","nodeType":"","attrName":""),("name":"a:lumOff", "obj":LumOff,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	Val;

	//Nodes
	LumMod;
	LumOff;
End;

///////////////////////////////////////////////////////////////
/// TLn
///////////////////////////////////////////////////////////////
type TLn=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('t:Ln');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SolidFill := new TSolidFill('a:solidFill');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('algn':Algn,'cap':Cap,'cmpd':Cmpd,'w':W) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"a:noFill", "obj":NoFill,"attrEx":"","nodeType":"","attrName":""),("name":"a:round", "obj":Round,"attrEx":"","nodeType":"","attrName":"")
			,("name":SolidFill.NodeName, "obj":SolidFill,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	Algn;
	Cap;
	Cmpd;
	W;

	//Nodes
	NoFill;
	Round;
	SolidFill;
End;

///////////////////////////////////////////////////////////////
/// TContourClr
///////////////////////////////////////////////////////////////
type TContourClr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:contourClr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SchemeClr := new TSchemeClr('a:schemeClr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":SchemeClr.NodeName, "obj":SchemeClr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	SchemeClr;
End;

///////////////////////////////////////////////////////////////
/// TSp3D
///////////////////////////////////////////////////////////////
type TSp3D=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:sp3d');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		ContourClr := new TContourClr('a:contourClr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('contourW':ContourW) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":ContourClr.NodeName, "obj":ContourClr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	ContourW;

	//Nodes
	ContourClr;
End;

///////////////////////////////////////////////////////////////
/// TspPr
///////////////////////////////////////////////////////////////
type TspPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('spPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SolidFill := new TSolidFill('a:solidFill');
		Ln := new TLn('a:Ln');
		Sp3D := new TSp3D('a:sp3d');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"a:noFill", "obj":NoFill,"attrEx":"","nodeType":"","attrName":""),("name":SolidFill.NodeName, "obj":SolidFill,"attrEx":"","nodeType":"","attrName":"")
			,("name":Ln.NodeName, "obj":Ln,"attrEx":"","nodeType":"","attrName":""),("name":Sp3D.NodeName, "obj":Sp3D,"attrEx":"","nodeType":"","attrName":"")
			,("name":"a:effectLst", "obj":EffectLst,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	NoFill;
	SolidFill;
	Ln;
	Sp3D;
	EffectLst;
End;

///////////////////////////////////////////////////////////////
/// TDpt
///////////////////////////////////////////////////////////////
type TDpt=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('dPt');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SpPr := new TspPr('spPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"idx", "obj":IDx,"attrEx":"","nodeType":"","attrName":""),("name":"bubble3D", "obj":Bubble3D,"attrEx":"","nodeType":"","attrName":"")
			,("name":SpPr.NodeName, "obj":SpPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	IDx;
	Bubble3D;
	SpPr;
End;

///////////////////////////////////////////////////////////////
/// TMarker
///////////////////////////////////////////////////////////////
type TMarker=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('marker');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SpPr := new TspPr('spPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"symbol", "obj":Symbol,"attrEx":"","nodeType":"","attrName":""),("name":"size", "obj":Size,"attrEx":"","nodeType":"","attrName":"")
			,("name":SpPr.NodeName, "obj":SpPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Symbol;
	Size;
	SpPr;
End;

///////////////////////////////////////////////////////////////
/// TSer
///////////////////////////////////////////////////////////////
type TSer=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('t:chart');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Tx := new TTx('tx');
		SpPr := new TspPr('spPr');
		DPt := new TDpt('dPt');
		DLbls := new TdLbls('dLbls');
		Marker := new TMarker('marker');
		Cat := new TcCat('cat');
		Val := new TcVal('val');
		XVal := new TcCat('xVal');
		YVal := new TcVal('yVal');
		BubbleSize := new TcVal('bubbleSize');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"idx", "obj":IDx,"attrEx":"","nodeType":"","attrName":""),("name":"order", "obj":Ord,"attrEx":"","nodeType":"","attrName":"")
			,("name":Tx.NodeName, "obj":Tx,"attrEx":"","nodeType":"","attrName":""),("name":SpPr.NodeName, "obj":SpPr,"attrEx":"","nodeType":"","attrName":"")
			,("name":DPt.NodeName, "obj":DPt,"attrEx":"","nodeType":"","attrName":""),("name":DLbls.NodeName, "obj":DLbls,"attrEx":"","nodeType":"","attrName":"")
			,("name":Marker.NodeName, "obj":Marker,"attrEx":"","nodeType":"","attrName":""),("name":"invertIfNegative", "obj":InvertIfNegative,"attrEx":"","nodeType":"","attrName":"")
			,("name":Cat.NodeName, "obj":Cat,"attrEx":"","nodeType":"","attrName":""),("name":Val.NodeName, "obj":Val,"attrEx":"","nodeType":"","attrName":"")
			,("name":XVal.NodeName, "obj":XVal,"attrEx":"","nodeType":"","attrName":""),("name":YVal.NodeName, "obj":YVal,"attrEx":"","nodeType":"","attrName":"")
			,("name":"smooth", "obj":Smooth,"attrEx":"","nodeType":"","attrName":""),("name":BubbleSize.NodeName, "obj":BubbleSize,"attrEx":"","nodeType":"","attrName":"")
			,("name":"bubble3D", "obj":Bubble3D,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	IDx;
	Ord;
	Tx;
	SpPr;
	DPt;
	DLbls;
	Marker;
	InvertIfNegative;
	Cat;
	Val;
	XVal;
	YVal;
	Smooth;
	BubbleSize;
	Bubble3D;
End;

///////////////////////////////////////////////////////////////
/// TdLbls
///////////////////////////////////////////////////////////////
type TdLbls=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('t:chart');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"showLegendKey", "obj":ShowLegendKey,"attrEx":"","nodeType":"","attrName":""),("name":"showVal", "obj":ShowVal,"attrEx":"","nodeType":"","attrName":"")
			,("name":"showCatName", "obj":ShowCatName,"attrEx":"","nodeType":"","attrName":""),("name":"showSerName", "obj":ShowSerName,"attrEx":"","nodeType":"","attrName":"")
			,("name":"showPercent", "obj":ShowPercent,"attrEx":"","nodeType":"","attrName":""),("name":"showBubbleSize", "obj":ShowBubbleSize,"attrEx":"","nodeType":"","attrName":"")
			,("name":"showLeaderLines", "obj":ShowLeaderLines,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	ShowLegendKey;
	ShowVal;
	ShowCatName;
	ShowSerName;
	ShowPercent;
	ShowBubbleSize;
	ShowLeaderLines;
End;

///////////////////////////////////////////////////////////////
/// TcCharts
///////////////////////////////////////////////////////////////
type TcCharts=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('t:chart');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Ser := array();
		DLbls := new TdLbls('dLbls');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"barDir", "obj":BarDir,"attrEx":"","nodeType":"","attrName":""),("name":"bubbleScale", "obj":BubbleScale,"attrEx":"","nodeType":"","attrName":"")
			,("name":"grouping", "obj":Grouping,"attrEx":"","nodeType":"","attrName":""),("name":"radarStyle", "obj":RadarStyle,"attrEx":"","nodeType":"","attrName":"")
			,("name":"scatterStyle", "obj":ScatterStyle,"attrEx":"","nodeType":"","attrName":""),("name":"ofPieType", "obj":OfPieType,"attrEx":"","nodeType":"","attrName":"")
			,("name":"varyColors", "obj":VaryColors,"attrEx":"","nodeType":"","attrName":""),("name":"wireframe", "obj":Wireframe,"attrEx":"","nodeType":"","attrName":"")
			,("name":"ser", "obj":Ser,"attrEx":"","nodeType":"","attrName":"","arrObj":"array"),("name":"serLines", "obj":SerLines,"attrEx":"","nodeType":"","attrName":"")
			,("name":DLbls.NodeName, "obj":DLbls,"attrEx":"","nodeType":"","attrName":""),("name":"shape", "obj":Shape,"attrEx":"","nodeType":"","attrName":"")
			,("name":"holeSize", "obj":HoleSize,"attrEx":"","nodeType":"","attrName":""),("name":"smooth", "obj":Smooth,"attrEx":"","nodeType":"","attrName":"")
			,("name":"overlap", "obj":Overlap,"attrEx":"","nodeType":"","attrName":""),("name":"axId", "obj":AxID,"attrEx":"","nodeType":"","attrName":"")
			,("name":"axId", "obj":AxID2,"attrEx":"","nodeType":"","attrName":""),("name":"axId", "obj":AxID3,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	BarDir;
	BubbleScale;
	Grouping;
	RadarStyle;
	ScatterStyle;
	OfPieType;
	VaryColors;
	Wireframe;
	Ser;
	SerLines;
	DLbls;
	Shape;
	HoleSize;
	Smooth;
	Overlap;
	AxID;
	AxID2;
	AxID3;
End;

///////////////////////////////////////////////////////////////
/// TcScaling
///////////////////////////////////////////////////////////////
type TcScaling=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('scaling');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"logBase", "obj":LogBase,"attrEx":"","nodeType":"","attrName":""),("name":"orientation", "obj":Orientation,"attrEx":"","nodeType":"","attrName":"")
			,("name":"max", "obj":Max,"attrEx":"","nodeType":"","attrName":""),("name":"min", "obj":Min,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	LogBase;
	Orientation;
	Max;
	Min;
End;

///////////////////////////////////////////////////////////////
/// TcChartLines
///////////////////////////////////////////////////////////////
type TcChartLines=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('cChartLines');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SpPr := new TspPr('spPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":SpPr.NodeName, "obj":SpPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	SpPr;
End;

///////////////////////////////////////////////////////////////
/// TcNumFmt
///////////////////////////////////////////////////////////////
type TcNumFmt=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('numFmt');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"formatCode", "obj":FormatCode,"attrEx":"","nodeType":"","attrName":""),("name":"sourceLinked", "obj":SourceLinked,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	FormatCode;
	SourceLinked;
End;

///////////////////////////////////////////////////////////////
/// TaR
///////////////////////////////////////////////////////////////
type TaR=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:r');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		RPr := new TaRpr('a:rPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":RPr.NodeName, "obj":RPr,"attrEx":"","nodeType":"","attrName":""),("name":"a:t", "obj":T,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	RPr;
	T;
End;

///////////////////////////////////////////////////////////////
/// TaEndParaRPr
///////////////////////////////////////////////////////////////
type TaEndParaRPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:endParaRPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('lang':Lang,'altLang':AltLang,'sz':Sz) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Lang;
	AltLang;
	Sz;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TaP
///////////////////////////////////////////////////////////////
type TaP=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:p');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		PPr := new TaPPr('a:pPr');
		R := new TaR('a:r');
		EndParaRPr := new TaEndParaRPr('a:endParaRPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":PPr.NodeName, "obj":PPr,"attrEx":"","nodeType":"","attrName":""),("name":R.NodeName, "obj":R,"attrEx":"","nodeType":"","attrName":"")
			,("name":EndParaRPr.NodeName, "obj":EndParaRPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	PPr;
	R;
	EndParaRPr;
End;

///////////////////////////////////////////////////////////////
/// TaPPr
///////////////////////////////////////////////////////////////
type TaPPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:pPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		DefRPr := new TaRPr('a:defRPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":DefRPr.NodeName, "obj":DefRPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	DefRPr;
End;

///////////////////////////////////////////////////////////////
/// TaLatin
///////////////////////////////////////////////////////////////
type TaLatin=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:latin');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('typeface':Typeface) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Typeface;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TaEa
///////////////////////////////////////////////////////////////
type TaEa=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:ea');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('typeface':Typeface) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Typeface;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TaCs
///////////////////////////////////////////////////////////////
type TaCs=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:cs');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('typeface':Typeface) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Typeface;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TaRPr
///////////////////////////////////////////////////////////////
type TaRPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:defRPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		SolidFill := new TSolidFill('a:solidFill');
		Latin := new TaLatin('a:latin');
		Ea := new TaEa('a:ea');
		Cs := new TaCs('a:cs');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('altLang':AltLang,'b':B,'baseline':Baseline,'bmk':Bmk,'cap':Cap,'dirty':Dirty,'err':Err,'i':I,'kern':Kern,'kumimoji':Kumimoji,'lang':Lang,'noProof':NoProof,'normalizeH':NormalizeH,'smtId':SmtID,'spc':Spc,'strike':Strike,'sz':Sz,'smtClean':SmtClean,'u':U) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":SolidFill.NodeName, "obj":SolidFill,"attrEx":"","nodeType":"","attrName":""),("name":Latin.NodeName, "obj":Latin,"attrEx":"","nodeType":"","attrName":"")
			,("name":Ea.NodeName, "obj":Ea,"attrEx":"","nodeType":"","attrName":""),("name":Cs.NodeName, "obj":Cs,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	AltLang;
	B;
	Baseline;
	Bmk;
	Cap;
	Dirty;
	Err;
	I;
	Kern;
	Kumimoji;
	Lang;
	NoProof;
	NormalizeH;
	SmtID;
	Spc;
	Strike;
	Sz;
	SmtClean;
	U;

	//Nodes
	SolidFill;
	Latin;
	Ea;
	Cs;
End;

///////////////////////////////////////////////////////////////
/// TaBodyPr
///////////////////////////////////////////////////////////////
type TaBodyPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:bodyPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('anchor':Anchor,'anchorCtr':AnchorCtr,'rot':Rot,'bIns':BIns,'compatLnSpc':CompatLnSpc,'forceAA':ForceAA,'fromWordArt':FromWordArt,'horzOverflow':HorzOverflow,'lIns':LIns,'numCol':NumCol,'rIns':RIns,'rtlCol':RtlCol,'spcCol':SpcCol,'spcFirstLastPara':SpcFirstLastPara,'tIns':TIns,'upright':Upright,'vert':Vert,'vertOverflow':VertOverflow,'wrap':Wrap) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Anchor;
	AnchorCtr;
	Rot;
	BIns;
	CompatLnSpc;
	ForceAA;
	FromWordArt;
	HorzOverflow;
	LIns;
	NumCol;
	RIns;
	RtlCol;
	SpcCol;
	SpcFirstLastPara;
	TIns;
	Upright;
	Vert;
	VertOverflow;
	Wrap;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TTxPr
///////////////////////////////////////////////////////////////
type TTxPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('txPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		BodyPr := new TaBodyPr('a:bodyPr');
		P := new TaP('a:p');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":BodyPr.NodeName, "obj":BodyPr,"attrEx":"","nodeType":"","attrName":""),("name":"a:lstStyle", "obj":LstStyle,"attrEx":"","nodeType":"","attrName":"")
			,("name":P.NodeName, "obj":P,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	BodyPr;
	LstStyle;
	P;
End;

///////////////////////////////////////////////////////////////
/// TcAxs
///////////////////////////////////////////////////////////////
type TcAxs=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('catAx');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Scaling := new TcScaling('scaling');
		MajorGridlines := new TcChartLines('majorGridlines');
		MinorGridlines := new TcChartLines('minorGridlines');
		NumFmt := new TcNumFmt('numFmt');
		SpPr := new TspPr('spPr');
		TxPr := new TTxPr('txPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"axId", "obj":AxID,"attrEx":"","nodeType":"","attrName":""),("name":Scaling.NodeName, "obj":Scaling,"attrEx":"","nodeType":"","attrName":"")
			,("name":"delete", "obj":Del,"attrEx":"","nodeType":"","attrName":""),("name":"axPos", "obj":AxPos,"attrEx":"","nodeType":"","attrName":"")
			,("name":MajorGridlines.NodeName, "obj":MajorGridlines,"attrEx":"","nodeType":"","attrName":""),("name":MinorGridlines.NodeName, "obj":MinorGridlines,"attrEx":"","nodeType":"","attrName":"")
			,("name":NumFmt.NodeName, "obj":NumFmt,"attrEx":"","nodeType":"","attrName":""),("name":"majorTickMark", "obj":MajorTickMark,"attrEx":"","nodeType":"","attrName":"")
			,("name":"minorTickMark", "obj":MinorTickMark,"attrEx":"","nodeType":"","attrName":""),("name":"tickLblPos", "obj":TickLblPos,"attrEx":"","nodeType":"","attrName":"")
			,("name":SpPr.NodeName, "obj":SpPr,"attrEx":"","nodeType":"","attrName":""),("name":TxPr.NodeName, "obj":TxPr,"attrEx":"","nodeType":"","attrName":"")
			,("name":"crossAx", "obj":CrossAx,"attrEx":"","nodeType":"","attrName":""),("name":"crosses", "obj":Crosses,"attrEx":"","nodeType":"","attrName":"")
			,("name":"crossBetween", "obj":CrossBetween,"attrEx":"","nodeType":"","attrName":""),("name":"majorUnit", "obj":MajorUnit,"attrEx":"","nodeType":"","attrName":"")
			,("name":"minorUnit", "obj":MinorUnit,"attrEx":"","nodeType":"","attrName":""),("name":"auto", "obj":Auto,"attrEx":"","nodeType":"","attrName":"")
			,("name":"lblAlgn", "obj":LblAlgn,"attrEx":"","nodeType":"","attrName":""),("name":"lblOffset", "obj":LblOffset,"attrEx":"","nodeType":"","attrName":"")
			,("name":"tickLblSkip", "obj":TickLblSkip,"attrEx":"","nodeType":"","attrName":""),("name":"tickMarkSkip", "obj":TickMarkSkip,"attrEx":"","nodeType":"","attrName":"")
			,("name":"NoMultiLvlLbl", "obj":NoMultiLvlLbl,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	AxID;
	Scaling;
	Del;
	AxPos;
	MajorGridlines;
	MinorGridlines;
	NumFmt;
	MajorTickMark;
	MinorTickMark;
	TickLblPos;
	SpPr;
	TxPr;
	CrossAx;
	Crosses;
	CrossBetween;
	MajorUnit;
	MinorUnit;
	Auto;
	LblAlgn;
	LblOffset;
	TickLblSkip;
	TickMarkSkip;
	NoMultiLvlLbl;
End;

///////////////////////////////////////////////////////////////
/// TplotArea
///////////////////////////////////////////////////////////////
type TplotArea=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('plotArea');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Chart := new TcCharts('chartname');
		CatAx := new TcAxs('catAx');
		ValAx := new TcAxs('valAx');
		SerAx := new TcAxs('serAx');
		SpPr := new TspPr('spPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"layout", "obj":Layout,"attrEx":"","nodeType":"","attrName":""),("name":Chart.NodeName, "obj":Chart,"attrEx":"","nodeType":"","attrName":"")
			,("name":CatAx.NodeName, "obj":CatAx,"attrEx":"","nodeType":"","attrName":""),("name":ValAx.NodeName, "obj":ValAx,"attrEx":"","nodeType":"","attrName":"")
			,("name":SerAx.NodeName, "obj":SerAx,"attrEx":"","nodeType":"","attrName":""),("name":SpPr.NodeName, "obj":SpPr,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Layout;
	Chart;
	CatAx;
	ValAx;
	SerAx;
	SpPr;
End;

///////////////////////////////////////////////////////////////
/// TView3D
///////////////////////////////////////////////////////////////
type TView3D=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('view3D');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"rotX", "obj":RotX,"attrEx":"rgb","nodeType":"","attrName":""),("name":"rotY", "obj":RotY,"attrEx":"index","nodeType":"","attrName":"")
			,("name":"rAngAx", "obj":RAngAx,"attrEx":"","nodeType":"","attrName":""),("name":"depthPercent", "obj":DepthPercent,"attrEx":"","nodeType":"","attrName":"")
			,("name":"perspective", "obj":Perspective,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	RotX;
	RotY;
	RAngAx;
	DepthPercent;
	Perspective;
End;

///////////////////////////////////////////////////////////////
/// TBorder
///////////////////////////////////////////////////////////////
type TBorder=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('border');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('style':LineStyle) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"color", "obj":Color,"attrEx":"rgb","nodeType":"","attrName":""),("name":"color", "obj":ColorIndex,"attrEx":"index","nodeType":"","attrName":"")
			,("name":"weight", "obj":Weight,"attrEx":"","nodeType":"","attrName":""),("name":"color", "obj":ThemeColor,"attrEx":"theme","nodeType":"","attrName":"")
			,("name":"tintandshade", "obj":TintAndShade,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	LineStyle;

	//Nodes
	Color;
	ColorIndex;
	Weight;
	ThemeColor;
	TintAndShade;
End;

///////////////////////////////////////////////////////////////
/// TBorders
///////////////////////////////////////////////////////////////
type TBorders=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('border');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Left := new TBorder('left');
		Right := new TBorder('right');
		Top := new TBorder('top');
		Bottom := new TBorder('bottom');
		Diagonal := new TBorder('diagonal');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":Left.NodeName, "obj":Left,"attrEx":"","nodeType":"","attrName":""),("name":Right.NodeName, "obj":Right,"attrEx":"","nodeType":"","attrName":"")
			,("name":Top.NodeName, "obj":Top,"attrEx":"","nodeType":"","attrName":""),("name":Bottom.NodeName, "obj":Bottom,"attrEx":"","nodeType":"","attrName":"")
			,("name":Diagonal.NodeName, "obj":Diagonal,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Left;
	Right;
	Top;
	Bottom;
	Diagonal;
End;

///////////////////////////////////////////////////////////////
/// TNumFmts
///////////////////////////////////////////////////////////////
type TNumFmts=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('numFmts');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('numFmtId':NumFmtId,'formatCode':FormatCode) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	NumFmtId;
	FormatCode;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TFills
///////////////////////////////////////////////////////////////
type TFills=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('fill');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Pattern := new TPattern('patternFill');
		Gradient := new TGradient('gradientFill');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":Pattern.NodeName, "obj":Pattern,"attrEx":"","nodeType":"","attrName":""),("name":Gradient.NodeName, "obj":Gradient,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Pattern;
	Gradient;
End;

///////////////////////////////////////////////////////////////
/// TPattern
///////////////////////////////////////////////////////////////
type TPattern=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('patternFill');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('patternType':PatternType) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"fgcolor", "obj":ForeColor,"attrEx":"rgb","nodeType":"","attrName":""),("name":"bgcolor", "obj":BackColor,"attrEx":"rgb","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	PatternType;

	//Nodes
	ForeColor;
	BackColor;
End;

///////////////////////////////////////////////////////////////
/// TGradient
///////////////////////////////////////////////////////////////
type TGradient=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('gradientFill');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		TopPosition := new TStop0('stop');
		BottomPosition := new TStop1('stop');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('degree':Degree,'type':Type,'left':Left,'right':Right,'top':Top,'bottom':Bottom) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":TopPosition.NodeName, "obj":TopPosition,"attrEx":"","nodeType":"","attrName":""),("name":BottomPosition.NodeName, "obj":BottomPosition,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	Degree;
	Type;
	Left;
	Right;
	Top;
	Bottom;

	//Nodes
	TopPosition;
	BottomPosition;
End;

///////////////////////////////////////////////////////////////
/// TStop0
///////////////////////////////////////////////////////////////
type TStop0=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('stop');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('position':Position) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"color", "obj":Color,"attrEx":"rgb","nodeType":"","attrName":""),("name":"color", "obj":ColorIndex,"attrEx":"index","nodeType":"","attrName":"")
			,("name":"color", "obj":ThemeColor,"attrEx":"theme","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	Position;

	//Nodes
	Color;
	ColorIndex;
	ThemeColor;
End;

///////////////////////////////////////////////////////////////
/// TStop1
///////////////////////////////////////////////////////////////
type TStop1=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('stop');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('position':Position) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"color", "obj":Color,"attrEx":"rgb","nodeType":"","attrName":""),("name":"color", "obj":ColorIndex,"attrEx":"index","nodeType":"","attrName":"")
			,("name":"color", "obj":ThemeColor,"attrEx":"theme","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	Position;

	//Nodes
	Color;
	ColorIndex;
	ThemeColor;
End;

///////////////////////////////////////////////////////////////
/// TAlignment
///////////////////////////////////////////////////////////////
type TAlignment=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('alignment');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('horizontal':Horizontal,'vertical':Vertical,'wrapText':WrapText) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Horizontal;
	Vertical;
	WrapText;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TProtection
///////////////////////////////////////////////////////////////
type TProtection=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('protection');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('locked':Lock,'hidden':Hide) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Lock;
	Hide;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TStyle
///////////////////////////////////////////////////////////////
type TStyle=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('xf');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Border := new TBorders('border');
		Font := new TFont('font');
		NumberFormat := new TNumFmts('numFmt');
		Fill := new TFills('fill');
		Alignment := new TAlignment('alignment');
		Protection := new TProtection('protection');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":Border.NodeName, "obj":Border,"attrEx":"","nodeType":"","attrName":""),("name":Font.NodeName, "obj":Font,"attrEx":"","nodeType":"","attrName":"")
			,("name":NumberFormat.NodeName, "obj":NumberFormat,"attrEx":"","nodeType":"","attrName":""),("name":Fill.NodeName, "obj":Fill,"attrEx":"","nodeType":"","attrName":"")
			,("name":Alignment.NodeName, "obj":Alignment,"attrEx":"","nodeType":"","attrName":""),("name":Protection.NodeName, "obj":Protection,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Border;
	Font;
	NumberFormat;
	Fill;
	Alignment;
	Protection;
End;

///////////////////////////////////////////////////////////////
/// THeaderFooter
///////////////////////////////////////////////////////////////
type THeaderFooter=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('headerFooter');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('differentOddEven':DifferentOddEven,'differentFirst':DifferentFirst,'scaleWithDoc':ScaleWithDoc,'alignWithMargins':AlignWithMargin) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"oddHeader", "obj":OddHeader,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"oddFooter", "obj":OddFooter,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"evenHeader", "obj":EvenHeader,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"evenFooter", "obj":EvenFooter,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"firstHeader", "obj":FirstHeader,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"firstFooter", "obj":FirstFooter,"attrEx":"","nodeType":"pcdata","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	DifferentOddEven;
	DifferentFirst;
	ScaleWithDoc;
	AlignWithMargin;

	//Nodes
	OddHeader;
	OddFooter;
	EvenHeader;
	EvenFooter;
	FirstHeader;
	FirstFooter;
End;

///////////////////////////////////////////////////////////////
/// TMargins
///////////////////////////////////////////////////////////////
type TMargins=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pageMargins');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		bottom := 0.75;
		footer := 0.5;
		header := 0.5;
		left := 0.75;
		right := 0.75;
		top := 0.75;
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('bottom':Bottom,'footer':Footer,'header':Header,'left':Left,'right':Right,'top':Top) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Bottom;
	Footer;
	Header;
	Left;
	Right;
	Top;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// THyperLink
///////////////////////////////////////////////////////////////
type THyperLink=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('hyperlink');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('linkType':LinkType,'linkUrl':LinkUrl,'ref':Axis,'display':Display,'tooltip':Tooltip) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	LinkType;
	LinkUrl;
	Axis;
	Display;
	Tooltip;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TSheetView
///////////////////////////////////////////////////////////////
type TSheetView=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('sheetView');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('showGridLines':ShowGridLines,'showRowColHeaders':ShowRowColHeaders,'zoomScale':ZoomScale,'zoomScaleNormal':ZoomScaleNormal) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	ShowGridLines;
	ShowRowColHeaders;
	ZoomScale;
	ZoomScaleNormal;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TPageLayout
///////////////////////////////////////////////////////////////
type TPageLayout=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pageSetup');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('scale':Scale,'fitToWidth':FitToWidth,'fitToHeight':FitToHeight,'paperSize':PaperSize,'orientation':Orientation,'blackAndWhite':BlackAndWhite,'firstPageNumber':FirstPageNumber,'errors':CellError,'draft':Draft,'cellComments':CellComments) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Scale;
	FitToWidth;
	FitToHeight;
	PaperSize;
	Orientation;
	BlackAndWhite;
	FirstPageNumber;
	CellError;
	Draft;
	CellComments;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TAppProperty
///////////////////////////////////////////////////////////////
type TAppProperty=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('Properties');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"Application", "obj":Application,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"DocSecurity", "obj":DocSecurity,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"ScaleCrop", "obj":ScaleCrop,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"Company", "obj":Company,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"LinksUpToDate", "obj":LinksUpToDate,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"SharedDoc", "obj":SharedDoc,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":"HyperlinksChanged", "obj":HyperlinksChanged,"attrEx":"","nodeType":"pcdata","attrName":""),("name":"AppVersion", "obj":AppVersion,"attrEx":"","nodeType":"pcdata","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Application;
	DocSecurity;
	ScaleCrop;
	Company;
	LinksUpToDate;
	SharedDoc;
	HyperlinksChanged;
	AppVersion;
End;

///////////////////////////////////////////////////////////////
/// TBr
///////////////////////////////////////////////////////////////
type TBr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:br');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('w:type':Type) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	Type;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TwFont
///////////////////////////////////////////////////////////////
type TwFont=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:rFonts');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('w:eastAsia':eastAsia,'w:eastAsiaTheme':eastAsiaTheme,'w:hAnsi':hAnsi,'w:hAnsiTheme':hAnsiTheme,'w:hint':hint,'w:ascii':ascii,'w:asciiTheme':asciiTheme,'w:cs':cs,'w:csTheme':csTheme) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	eastAsia;
	eastAsiaTheme;
	hAnsi;
	hAnsiTheme;
	hint;
	ascii;
	asciiTheme;
	cs;
	csTheme;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TwrPr
///////////////////////////////////////////////////////////////
type TwrPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:rPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Font := new TwFont('w:rFonts');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":Font.NodeName, "obj":Font,"attrEx":"","nodeType":"","attrName":""),("name":"w:b", "obj":Bold,"attrEx":"","nodeType":"empty","attrName":"")
			,("name":"w:bCs", "obj":bCs,"attrEx":"","nodeType":"empty","attrName":""),("name":"w:i", "obj":I,"attrEx":"","nodeType":"empty","attrName":"")
			,("name":"w:strike", "obj":Strike,"attrEx":"","nodeType":"empty","attrName":""),("name":"w:dstrike", "obj":dStrike,"attrEx":"w:val","nodeType":"","attrName":"")
			,("name":"w:sz", "obj":Size,"attrEx":"w:val","nodeType":"","attrName":""),("name":"w:szCs", "obj":szCs,"attrEx":"w:val","nodeType":"","attrName":"")
			,("name":"w:u", "obj":U,"attrEx":"w:val","nodeType":"","attrName":""),("name":"w:vertAlign", "obj":vertAlign,"attrEx":"w:val","nodeType":"","attrName":"")
			,("name":"w:lang", "obj":Lang,"attrEx":"w:val","nodeType":"","attrName":""),("name":"w:lang", "obj":eastAsia,"attrEx":"w:eastAsia","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Font;
	Bold;
	bCs;
	I;
	Strike;
	dStrike;
	Size;
	szCs;
	U;
	vertAlign;
	Lang;
	eastAsia;
End;

///////////////////////////////////////////////////////////////
/// TwpPr
///////////////////////////////////////////////////////////////
type TwpPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:pPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		rPr := new TwrPr('w:rPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":rPr.NodeName, "obj":rPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	rPr;
End;

///////////////////////////////////////////////////////////////
/// TcNvGraphicFramePr
///////////////////////////////////////////////////////////////
type TcNvGraphicFramePr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('wp:TcNvGraphicFramePr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"a:graphicFrameLocks", "obj":noChangeAspect,"attrEx":"noChangeAspect","nodeType":"","attrName":""),("name":"a:graphicFrameLocks", "obj":xmlns,"attrEx":"xmlns:a","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	noChangeAspect;
	xmlns;
End;

///////////////////////////////////////////////////////////////
/// TnvPicPr
///////////////////////////////////////////////////////////////
type TnvPicPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pic:nvPicPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"pic:cNvPr", "obj":Name,"attrEx":"name","nodeType":"","attrName":""),("name":"pic:cNvPr", "obj":ID,"attrEx":"id","nodeType":"","attrName":"")
			,("name":"pic:cNvPr", "obj":Descr,"attrEx":"descr","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Name;
	ID;
	Descr;
End;

///////////////////////////////////////////////////////////////
/// TprstGeom
///////////////////////////////////////////////////////////////
type TprstGeom=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:prstGeom');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('prst':prst) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	prst;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TpicsPpr
///////////////////////////////////////////////////////////////
type TpicsPpr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pic:spPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		PrstGeom := new TprstGeom('a:prstGeom');
		XFrm := new TXfrm('a:xfrm');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":PrstGeom.NodeName, "obj":PrstGeom,"attrEx":"","nodeType":"","attrName":""),("name":XFrm.NodeName, "obj":XFrm,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	PrstGeom;
	XFrm;
End;

///////////////////////////////////////////////////////////////
/// TFill
///////////////////////////////////////////////////////////////
type TFill=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pic:blipFill');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"a:blip", "obj":blip,"attrEx":"r:embed","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	blip;
End;

///////////////////////////////////////////////////////////////
/// TPic
///////////////////////////////////////////////////////////////
type TPic=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('pic:pic');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		nvPicPr := new TnvPicPr('pic:nvPicPr');
		Fill := new TFill('pic:blipFill');
		spPr := new TpicsPpr('pic:spPr');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('xmlns:pic':xmlns) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":nvPicPr.NodeName, "obj":nvPicPr,"attrEx":"","nodeType":"","attrName":""),("name":Fill.NodeName, "obj":Fill,"attrEx":"","nodeType":"","attrName":"")
			,("name":spPr.NodeName, "obj":spPr,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	xmlns;

	//Nodes
	nvPicPr;
	Fill;
	spPr;
End;

///////////////////////////////////////////////////////////////
/// TGraphicData
///////////////////////////////////////////////////////////////
type TGraphicData=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:graphicData');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Pic := new TPic('pic:pic');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('uri':uri) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"c:chart", "obj":R,"attrEx":"xmlns:r","nodeType":"","attrName":""),("name":"c:chart", "obj":Rid,"attrEx":"r:id","nodeType":"","attrName":"")
			,("name":"c:chart", "obj":C,"attrEx":"xmlns:c","nodeType":"","attrName":""),("name":Pic.NodeName, "obj":Pic,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes
	uri;

	//Nodes
	R;
	Rid;
	C;
	Pic;
End;

///////////////////////////////////////////////////////////////
/// TGraphic
///////////////////////////////////////////////////////////////
type TGraphic=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('a:graphic');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		GraphicData := new TGraphicData('a:graphicData');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('xmlns:a':xmlns) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":GraphicData.NodeName, "obj":GraphicData,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	xmlns;

	//Nodes
	GraphicData;
End;

///////////////////////////////////////////////////////////////
/// TwInline
///////////////////////////////////////////////////////////////
type TwInline=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('wp:inline');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		cNvGraphicFramePr := new TcNvGraphicFramePr('wp:cNvGraphicFramePr');
		Graphic := new TGraphic('a:graphic');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('distR':distR,'distL':distL,'distB':distB,'distT':distT) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"wp:extent", "obj":cy,"attrEx":"cy","nodeType":"","attrName":""),("name":"wp:extent", "obj":cx,"attrEx":"cx","nodeType":"","attrName":"")
			,("name":"wp:effectExtent", "obj":r,"attrEx":"r","nodeType":"","attrName":""),("name":"wp:effectExtent", "obj":b,"attrEx":"b","nodeType":"","attrName":"")
			,("name":"wp:effectExtent", "obj":t,"attrEx":"t","nodeType":"","attrName":""),("name":"wp:effectExtent", "obj":l,"attrEx":"l","nodeType":"","attrName":"")
			,("name":"wp:docPr", "obj":Name,"attrEx":"name","nodeType":"","attrName":""),("name":"wp:docPr", "obj":ID,"attrEx":"id","nodeType":"","attrName":"")
			,("name":"wp:docPr", "obj":Descr,"attrEx":"descr","nodeType":"","attrName":""),("name":cNvGraphicFramePr.NodeName, "obj":cNvGraphicFramePr,"attrEx":"","nodeType":"","attrName":"")
			,("name":Graphic.NodeName, "obj":Graphic,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes
	distR;
	distL;
	distB;
	distT;

	//Nodes
	cy;
	cx;
	r;
	b;
	t;
	l;
	Name;
	ID;
	Descr;
	cNvGraphicFramePr;
	Graphic;
End;

///////////////////////////////////////////////////////////////
/// TwDrawing
///////////////////////////////////////////////////////////////
type TwDrawing=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:drawing');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		WInline := new TwInline('wp:inline');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":WInline.NodeName, "obj":WInline,"attrEx":"","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	WInline;
End;

///////////////////////////////////////////////////////////////
/// TRun
///////////////////////////////////////////////////////////////
type TRun=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:r');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		rPr := new TwrPr('w:rPr');
		Br := new TBr('w:br');
		Drawing := new TwDrawing('w:drawing');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":rPr.NodeName, "obj":rPr,"attrEx":"","nodeType":"","attrName":""),("name":"w:t", "obj":Text,"attrEx":"","nodeType":"pcdata","attrName":"")
			,("name":Br.NodeName, "obj":Br,"attrEx":"","nodeType":"","attrName":""),("name":Drawing.NodeName, "obj":Drawing,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	rPr;
	Text;
	Br;
	Drawing;
End;

///////////////////////////////////////////////////////////////
/// TParagraph
///////////////////////////////////////////////////////////////
type TParagraph=class(NodeInfo, DocumentPart)
	Function Create(); overload;
	Begin
		Create('w:p');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		pPr := new TwpPr('w:pPr');
		Run := new TRun('w:r');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":pPr.NodeName, "obj":pPr,"attrEx":"","nodeType":"","attrName":""),("name":Run.NodeName, "obj":Run,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	pPr;
	Run;
End;

///////////////////////////////////////////////////////////////
/// TwBody
///////////////////////////////////////////////////////////////
type TwBody=class(NodeInfo, DocumentBody)
	Function Create(); overload;
	Begin
		Create('w:body');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		Parts := array();
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"w:p", "obj":Parts,"attrEx":"","nodeType":"","attrName":"","arrObj":"array")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Parts;
End;

///////////////////////////////////////////////////////////////
/// TwTcPr
///////////////////////////////////////////////////////////////
type TwTcPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:tcPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"w:tcW", "obj":Width,"attrEx":"w:w","nodeType":"","attrName":""),("name":"w:tcW", "obj":Type,"attrEx":"w:type","nodeType":"","attrName":"")
			,("name":"w:shd", "obj":Shd,"attrEx":"w:val","nodeType":"","attrName":""),("name":"w:shd", "obj":Color,"attrEx":"w:color","nodeType":"","attrName":"")
			,("name":"w:shd", "obj":Fill,"attrEx":"w:fill","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Width;
	Type;
	Shd;
	Color;
	Fill;
End;

///////////////////////////////////////////////////////////////
/// TwTc
///////////////////////////////////////////////////////////////
type TwTc=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:tc');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		TcPr := new TwTcPr('w:tcPr');
		P := new TParagraph('w:p');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":TcPr.NodeName, "obj":TcPr,"attrEx":"","nodeType":"","attrName":""),("name":P.NodeName, "obj":P,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	TcPr;
	P;
End;

///////////////////////////////////////////////////////////////
/// TwTrPr
///////////////////////////////////////////////////////////////
type TwTrPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:trPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"w:trHeight", "obj":Height,"attrEx":"w:val","nodeType":"","attrName":""),("name":"w:trHeight", "obj":Rule,"attrEx":"w:hRule","nodeType":"","attrName":"")
			,("name":"w:jc", "obj":JC,"attrEx":"w:val","nodeType":"","attrName":"")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Height;
	Rule;
	JC;
End;

///////////////////////////////////////////////////////////////
/// TwTr
///////////////////////////////////////////////////////////////
type TwTr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:tr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		TrPr := new TwTrPr('w:trPr');
		Tc := array();
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":TrPr.NodeName, "obj":TrPr,"attrEx":"","nodeType":"","attrName":""),("name":"w:tc", "obj":Tc,"attrEx":"","nodeType":"","attrName":"","arrObj":"array")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	TrPr;
	Tc;
End;

///////////////////////////////////////////////////////////////
/// TwTblPr
///////////////////////////////////////////////////////////////
type TwTblPr=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:tblPr');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"w:tblStyle", "obj":Style,"attrEx":"w:val","nodeType":"","attrName":""),("name":"w:tblW", "obj":W,"attrEx":"w:w","nodeType":"","attrName":"")
			,("name":"w:tblW", "obj":Type,"attrEx":"w:type","nodeType":"","attrName":""),("name":"w:tblLook", "obj":Val,"attrEx":"w:val","nodeType":"","attrName":"")
			,("name":"w:tblLook", "obj":NoVBand,"attrEx":"w:noVBand","nodeType":"","attrName":""),("name":"w:tblLook", "obj":NoHBand,"attrEx":"w:noHBand","nodeType":"","attrName":"")
			,("name":"w:tblLook", "obj":LastRow,"attrEx":"w:lastRow","nodeType":"","attrName":""),("name":"w:tblLook", "obj":LastColumn,"attrEx":"w:lastColumn","nodeType":"","attrName":"")
			,("name":"w:tblLook", "obj":FirstRow,"attrEx":"w:firstRow","nodeType":"","attrName":""),("name":"w:tblLook", "obj":FirstColumn,"attrEx":"w:firstColumn","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	Style;
	W;
	Type;
	Val;
	NoVBand;
	NoHBand;
	LastRow;
	LastColumn;
	FirstRow;
	FirstColumn;
End;

///////////////////////////////////////////////////////////////
/// TwGridCol
///////////////////////////////////////////////////////////////
type TwGridCol=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:gridCol');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return array('w:w':W) union ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes
	W;

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TwTblGrid
///////////////////////////////////////////////////////////////
type TwTblGrid=class(NodeInfo)
	Function Create(); overload;
	Begin
		Create('w:tblGrid');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		GridCol := array();
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":"w:gridCol", "obj":GridCol,"attrEx":"","nodeType":"","attrName":"","arrObj":"array")) union ExtNodes;
	End;

	//Attributes

	//Nodes
	GridCol;
End;

///////////////////////////////////////////////////////////////
/// TTable
///////////////////////////////////////////////////////////////
type TTable=class(NodeInfo, DocumentTable)
	Function Create(); overload;
	Begin
		Create('w:tbl');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		TblPr := new TwTblPr('w:tblPr');
		TblGrid := new TwTblGrid('w:tblGrid');
		TR := array();
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":TblPr.NodeName, "obj":TblPr,"attrEx":"","nodeType":"","attrName":""),("name":TblGrid.NodeName, "obj":TblGrid,"attrEx":"","nodeType":"","attrName":"")
			,("name":"w:node", "obj":Node,"attrEx":"","nodeType":"","attrName":""),("name":"w:tr", "obj":TR,"attrEx":"","nodeType":"","attrName":"","arrObj":"array")
			) union ExtNodes;
	End;

	Function Style(styleId);
	Begin
		TblPr.Style := styleId;
	End;

	//Attributes

	//Nodes
	TblPr;
	TblGrid;
	Node;
	TR;
End;

///////////////////////////////////////////////////////////////
/// TCoreProperties
///////////////////////////////////////////////////////////////
type TCoreProperties=class(NodeInfo, CoreProperties)
	Function Create(); overload;
	Begin
		Create('w:p');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return ExtNodes;
	End;

	//Attributes

	//Nodes
End;

///////////////////////////////////////////////////////////////
/// TPicture
///////////////////////////////////////////////////////////////
type TPicture=class(NodeInfo, DocumentPicture)
	Function Create(); overload;
	Begin
		Create('w:p');
	End;

	Function Create(name); overload;
	Begin
		Class(NodeInfo).Create(name);
		Init();
	End;

	Function Init();
	Begin
		pPr := new TwpPr('w:pPr');
		Run := new TRun('w:r');
		//TODO...
	End;

	Function GetAttrs(); override;
	Begin
		return ExtAttr;
	End;

	Function GetChildren(); override;
	Begin
		return array(("name":pPr.NodeName, "obj":pPr,"attrEx":"","nodeType":"","attrName":""),("name":Run.NodeName, "obj":Run,"attrEx":"","nodeType":"","attrName":"")
			) union ExtNodes;
	End;

	//Attributes

	//Nodes
	pPr;
	Run;
End;

