--- a/trunk/json/json-pac/Data Types/JSONVAR/FB_Init/svnobj
+++ b/trunk/json/json-pac/Data Types/JSONVAR/FB_Init/svnobj
@@ -1,7 +1,8 @@
-Gx_lÙ?!0…jüoî/~¹´%ÃßtèSystem.StringL{f8a58466-d7f6-439f-bbb8-d4600e41d099}ImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocumentL{f3878285-8e4f-490b-bb1b-9acbb7eb04db}TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}	Id
+Gx_lùN!0…jüoü<(‘¨§Õ»WK.System.StringL{f8a58466-d7f6-439f-bbb8-d4600e41d099}ImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocumentL{f3878285-8e4f-490b-bb1b-9acbb7eb04db}TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}	Id
 longTagText
Ò(*======================================================================================================="JSONVAR.FB_Init()VAuthor: Tim Van Meppelen, Pro Electric Inc.(timv@proelectric.com"Date: Nov 2, 2018 split the variable path into an array, and determine some object characteristicsªexample variable path: 'Test_M241.Test_M241.Application.TestJSON_PRG.TestStruct.var1'ÖTO DO:  objects and arrays should automatically close, as it is possible that this variable is the last one˜the following variable should close an array or object through PrevNameArrayÔ========================================================================================================*)’//====================GET VARIABLE NAME INTO AN ARRAY====================DNameStringPtr:= ADR(_VarNameFull);@StringIndex:= LEN(_VarNameFull);2VarNameEnd:= StringIndex;"VarNameIndex:= 1;¤//TO DO:  use SPLIT function to create an array first, then loop through the array4WHILE (StringIndex > 0) DOd	IF (NameStringPtr^[StringIndex] = ASCII.DOT) THEN 0	//found a "." character!B		VarNameBegin:= StringIndex + 1;"		#d		//clear array string  TO DO:  IS THIS NECESSARY?$&		Sysmem.SysMemSet(%Z			pDest:= ADR(_VarNameArray[VarNameIndex]), &"			udiValue:= 0, 'H			udiCount:= GPL_JSON.MAX_NAME_SIZE(		);)	*f		//copy string between VarNameBegin and VarNameEnd+&		SysMem.SysMemCpy(,Z			pSrc:= ADR(NameStringPtr^[VarNameBegin]), -r			udiCount:= INT_TO_UDINT((VarNameEnd - VarNameBegin)+1).\		//remove leading _ from the name, if present/Ž		IF FIND(STR1:= _VarNameArray[VarNameIndex].Name, STR2:= '_') = 1 THEN0Œ			_VarNameArray[VarNameIndex].Name:= RIGHT(STR:= _VarNameArray[VarNameIndex].Name, SIZE:= LEN(_VarNameArray[VarNameIndex].Name) - 1);1		END_IF2°		//check if this is an array, if yes then remove the array index from the variable name3˜		startarraystr:= FIND(STR1:= _VarNameArray[VarNameIndex].Name, STR2:= '[');4”		endarraystr:= FIND(STR1:= _VarNameArray[VarNameIndex].Name, STR2:= ']');5j		IF (startarraystr <> 0) AND (endarraystr <> 0) THEN6~			_VarNameArray[VarNameIndex].ArrayIndex:= STRING_TO_UINT(MID(7X				STR:= _VarNameArray[VarNameIndex].Name, 8N				LEN:= endarraystr-startarraystr-1, 92				POS:= startarraystr+1:			));;l			_VarNameArray[VarNameIndex].Name:= Standard.DELETE(<N				LEN:= endarraystr-startarraystr+1, =.				POS:= startarraystr>
-			);?x		IF (_VarNameArray[VarNameIndex].Name = 'Application') THEN@H		//was this the application level?	Aź		//highest variable name is always two less than the Application index	BB			_ParentVar:= VarNameIndex - 2;C			EXIT;DD		VarNameIndex:= VarNameIndex + 1;E¬		VarNameEnd:= VarNameBegin - 2;	//end of the next variable name is known, store for next loop			FB		StringIndex:= VarNameBegin - 2;G
-	ELSEH@		StringIndex:= StringIndex - 1;I	END_IFJEND_WHILEKŠ//====================JSON OBJECT CHARACTERISTICS====================L”//figure out whether this variable is the first value of a new JSON object, or if the previous variable is the last value of a JSON objectMFIF __ISVALIDREF(PrevNameArray) THENNÂ//check for valid reference--will be invalid when FB_Init is run on the first instance of JSONVARO¶	offset:= _ParentVar - PrevParentVar;	//check if the variable names have shifted up or downP*	IF (offset < 0) THENQ.	//objects shifted downR>		stoploop:= PrevParentVar - 1;S 		startloop:= 1;T0	//no shift, or shift upU8		stoploop:= _ParentVar - 1;V2		startloop:= offset + 1;WZ	FOR varlevelindex:= startloop TO stoploop DOXZ		prevvarlevelindex:= varlevelindex - offset;Y\		IF (offset < 0) AND (varlevelindex = 1) THENZš		//if objects have shifted down, then i-offset will never point to PrevNameArray[1][h		//the previous variable might need an array closed\X			IF (PrevNameArray[1].ArrayIndex > 0) THEN]			//end array^J				PrevNameArray[1].EndArray:= TRUE;_			END_IF	`ª		IF ((varlevelindex-offset) > 1) AND ((_VarNameArray[varlevelindex].Name <> PrevNameArray[prevvarlevelindex].Name) OR (_VarNameArray[varlevelindex].ArrayIndex <> PrevNameArray[prevvarlevelindex].ArrayIndex)) THENa.		//end previous objectbœ			PrevNameArray[prevvarlevelindex].EndObject:= TRUE;	//close previous object	c		END_IF	d˜		IF (PrevNameArray[prevvarlevelindex].ArrayIndex > 0) AND (_VarNameArray[varlevelindex].Name <> PrevNameArray[prevvarlevelindex].Name) THENe		//end arrayfh			PrevNameArray[prevvarlevelindex].EndArray:= TRUE;g		END_IF		hÚ		IF (_VarNameArray[varlevelindex].ArrayIndex = 1) AND (PrevNameArray[prevvarlevelindex].ArrayIndex = 0) THENi		//new arrayjh			_VarNameArray[varlevelindex].NewArray:= TRUE;				kø		IF (varlevelindex > 1) AND ((NOT _VarNameArray[varlevelindex].NewArray) AND (_VarNameArray[varlevelindex].Name <> PrevNameArray[prevvarlevelindex].Name) OR (_VarNameArray[varlevelindex].ArrayIndex <> PrevNameArray[prevvarlevelindex].ArrayIndex)) THENl		//new objectmš			_VarNameArray[varlevelindex].NewObject:= TRUE;	//new object at this level	n	END_FORoELSEpŠ//invalid reference to PrevNameArray, this must be the first variableqR	FOR varlevelindex:= 1 TO _ParentVar-1 DOr:		IF (varlevelindex > 1) THENsX		//every level above 1 will be a new objecttb			_VarNameArray[varlevelindex].NewObject:= TRUE;un		IF (_VarNameArray[varlevelindex].ArrayIndex = 1) THENv		END_IF			wEND_IFx|//set a reference to some variables for the next JSON variableyBPrevNameArray REF= _VarNameArray;z<PrevParentVar REF= _ParentVar;{Interface|L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}}*METHOD FB_Init : BOOL~VAR_INPUTÀ  bInitRetains : 		BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)€Ð  bInCopyCode : 		BOOL;  // TRUE: the instance will be copied to the copy code afterward (online change)END_VAR‚VARƒX	ArrayPosition:		UINT:= GPL_JSON.MAX_LEVELS;„ˆ	NameStringPtr:		POINTER TO ARRAY[1..GPL_JSON.MAX_VAR_NAME] OF BYTE;…&	StringIndex:		INT;†(	VarNameBegin:		INT;‡&	VarNameEnd:			INT;ˆ(	VarNameIndex:		INT;‰ 	offset:				INT;Š*	startarraystr:		INT;‹&	endarraystr:		INT;Œ*	varlevelindex:		INT;0	prevvarlevelindex:	INT;Ž"	stoploop:			INT;$	startloop:			INT;ÐÐÐEÐÐ	
+			);?x		IF (_VarNameArray[VarNameIndex].Name = 'Application') THEN@H		//was this the application level?	AH			_ApplicationLevel:= VarNameIndex;B			EXIT;CD		VarNameIndex:= VarNameIndex + 1;DÂ		VarNameEnd:= VarNameBegin - 2;	//end of the next variable name is known, store for next loop			EB		StringIndex:= VarNameBegin - 2;F
+	ELSEG@		StringIndex:= StringIndex - 1;H	END_IFIEND_WHILEJŠ//====================JSON OBJECT CHARACTERISTICS====================Kº(*VAR_STAT PrevApplicationLevel and PrevNameArray are references to the last JSONVAR variableLªthat was worked on.  This would be the previous variable in a structure or array, butM˜could also be a variable contained in a completely different JSON structure.N¢Because it is not possible to reference the next variable in a structure (becauseO its FB_Init() method has not run yet), the characteristics of the last variable P|in a structure are set in the STRUCT_TO_JSON function block.*)Q>//First variable of a structureRFIF __ISVALIDREF(PrevNameArray) THENSœ//there is a valid reference to a previous variable, check the previous objectT	;	(*TO DO:UÜ		I don't know if it is possible to determine whether or not this variable is the beginning of a new structureVÞ		or not.  There are so many possible combinations of variables, function blocks, and structures, and the only WÚ		information this program has to work with is the string which contains the path.  This string only containsXØ		names, and does not give any information about the type of variable, or which other variables are includedYÌ		This functionality is now contained in STRUCT_TO_JSON, which is able to determine the first and lastZÚ		variables in a structure.  There's nothing really wrong with this, except that it makes the code a bit more[¸		difficult to understand, as there's two locations that work on variable characteristics.*)\ELSE]//there is no valid reference to a previous variable, indicating that this is the first time FB_Init has run anywhere in the application^x//therefore, this is the first variable of a new JSON object_"	FirstVar:= TRUE;`END_IFa IF FirstVar THENbF//first variable of a new structurec`	FOR varlevelindex:= 1 TO _ApplicationLevel-2 DOd¢		//every level of the first variable could be either a new object or a new arrayen		IF (_VarNameArray[varlevelindex].ArrayIndex = 1) THENf		//new arraygb			_VarNameArray[varlevelindex].NewArray:= TRUE;	h@		ELSIF (varlevelindex > 1) THENi		//new objectjb			_VarNameArray[varlevelindex].NewObject:= TRUE;k		END_IF			l	END_FORm
+ELSE	nV//not the first variable of a new structureoŅ	offset:= _ApplicationLevel - PrevApplicationLevel;	//check if the variable names have shifted up or downp*	IF (offset < 0) THENq.	//objects shifted downrL		stoploop:= PrevApplicationLevel - 1;s 		startloop:= 1;t0	//no shift, or shift upuF		stoploop:= _ApplicationLevel - 1;v2		startloop:= offset + 1;wZ	FOR varlevelindex:= startloop TO stoploop DOxZ		prevvarlevelindex:= varlevelindex - offset;y|		//====================End previous array====================z\		IF (offset < 0) AND (varlevelindex = 1) THEN{Ø		//if objects have shifted down, then i-offset will never point to PrevNameArray[1]|h		//the previous variable might need an array closed}X			IF (PrevNameArray[1].ArrayIndex > 0) THEN~			//end arrayJ				PrevNameArray[1].EndArray:= TRUE;€			END_IF	˜		IF (PrevNameArray[prevvarlevelindex].ArrayIndex > 0) AND (_VarNameArray[varlevelindex].Name <> PrevNameArray[prevvarlevelindex].Name) THEN‚h			PrevNameArray[prevvarlevelindex].EndArray:= TRUE;ƒ		END_IF	„~		//====================End previous object====================…Ŗ		IF ((varlevelindex-offset) > 1) AND ((_VarNameArray[varlevelindex].Name <> PrevNameArray[prevvarlevelindex].Name) OR (_VarNameArray[varlevelindex].ArrayIndex <> PrevNameArray[prevvarlevelindex].ArrayIndex)) THEN†œ			PrevNameArray[prevvarlevelindex].EndObject:= TRUE;	//close previous object	‡j		//====================New array====================ˆŚ		IF (_VarNameArray[varlevelindex].ArrayIndex = 1) AND (PrevNameArray[prevvarlevelindex].ArrayIndex = 0) THEN‰h			_VarNameArray[varlevelindex].NewArray:= TRUE;				Šl		//====================New object====================‹ų		IF (varlevelindex > 1) AND ((NOT _VarNameArray[varlevelindex].NewArray) AND (_VarNameArray[varlevelindex].Name <> PrevNameArray[prevvarlevelindex].Name) OR (_VarNameArray[varlevelindex].ArrayIndex <> PrevNameArray[prevvarlevelindex].ArrayIndex)) THENŒš			_VarNameArray[varlevelindex].NewObject:= TRUE;	//new object at this level	|//set a reference to some variables for the next JSON variableŽBPrevNameArray REF= _VarNameArray;XPrevApplicationLevel REF= _ApplicationLevel;Interface‘L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}’*METHOD FB_Init : BOOL“VAR_INPUT”Ą  bInitRetains : 		BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)•Š  bInCopyCode : 		BOOL;  // TRUE: the instance will be copied to the copy code afterward (online change)–END_VAR—VAR˜X	ArrayPosition:		UINT:= GPL_JSON.MAX_LEVELS;™ˆ	NameStringPtr:		POINTER TO ARRAY[1..GPL_JSON.MAX_VAR_NAME] OF BYTE;š&	StringIndex:		INT;›(	VarNameBegin:		INT;œ&	VarNameEnd:			INT;(	VarNameIndex:		INT;ž 	offset:				INT;Ÿ*	startarraystr:		INT; &	endarraystr:		INT;”*	varlevelindex:		INT;¢0	prevvarlevelindex:	INT;£"	stoploop:			INT;¤$	startloop:			INT;„$	FirstVar:			BOOL;¦	i:					INT;ŠŠŠE¢ŠŠ	
 ­AÚÐ-
ÐÐ	
 ­BÚÐ-ÐÐ	
 ­CÚÐ-ÐÐ	
@@ -14,19 +15,15 @@
 ­ÚÐ-ÐÐ	
 ­dÚÐ-ÐÐ	
 ­óÚÐ-ÐÐ	
-­MÚÐ-ÐÐ	
+­&ÚÐ-ÐÐ	
 ­NÚÐ-ÐÐ	
 ­ÚÐ-ÐÐ	
 ­ÚÐ-ÐÐ	
 ­ÚÐ-ÐÐ	
 ­ÚÐ-ÐÐ	
-­ÚÐ-ÐÐ	
-­ÚÐ-ÐÐ	

ÚÐ-ÐÐ	
 ­
 ÚÐ-ÐÐ	
 ­	ÚÐ-ÐÐ	
-­ÚÐ-ÐÐ	
 ­LÚÐ-ÐÐ	
 ­ÚÐ-ÐÐ	
 ­ÚÐ- ÐÐ	
@@ -69,103 +66,128 @@
 ­;ÚÐ-"ÐÐ	
 ­<ÚÐ-?ÐÐ	
 ­=ÚÐ-@ÐÐ	
-­>ÚÐ-AÐÐ	
-­?ÚÐ-BÐÐ	
-­@ÚÐ-CÐÐ	
+­?ÚÐ-AÐÐ	
+­@ÚÐ-BÐÐ	
 ­AÚÐ-1ÐÐ	
 ­BÚÐ-)ÐÐ	
-­CÚÐ-DÐÐ	
-­DÚÐ-EÐÐ	
-­EÚÐ-FÐÐ	
-­FÚÐ-GÐÐ	
-­GÚÐ-HÐÐ	
-­HÚÐ-IÐÐ	
-­JÚÐ-JÐÐ	
+­CÚÐ-CÐÐ	
+­DÚÐ-DÐÐ	
+­EÚÐ-EÐÐ	
+­FÚÐ-FÐÐ	
+­GÚÐ-GÐÐ	
+­HÚÐ-HÐÐ	
+­JÚÐ-IÐÐ	
 ­OÚÐ-ÐÐ	
-­öÚÐ-KÐÐ	
-­€ÚÐ-LÐÐ	
-­¼ÚÐ-MÐÐ	
-­‚ÚÐ-NÐÐ	
-­ÆÚÐ-OÐÐ	
-­æÚÐ-PÐÐ	
-­åÚÐ-QÐÐ	
-­îÚÐ-RÐÐ	
-­ÇÚÐ-SÐÐ	
-­çÚÐ-GÐÐ	
-­ÉÚÐ-TÐÐ	
-­íÚÐ-UÐÐ	
-­ÊÚÐ-VÐÐ	
-­¸ÚÐ-IÐÐ	
-­óÚÐ-WÐÐ	
-­ÁÚÐ-XÐÐ	
-­ÅÚÐ-YÐÐ	
-­ÎÚÐ-ZÐÐ	
-­ÌÚÐ-[ÐÐ	
-­ÔÚÐ-\ÐÐ	
-­ÕÚÐ-]ÐÐ	
-­ÖÚÐ-^ÐÐ	
-­èÚÐ-_ÐÐ	
-­ãÚÐ-1ÐÐ	
-­ÄÚÐ-"ÐÐ	
-­ÚÚÐ-`ÐÐ	
-­ÛÚÐ-aÐÐ	
-­ÜÚÐ-bÐÐ	
-­ÝÚÐ-cÐÐ	
-­ÞÚÐ-"ÐÐ	
-­ßÚÐ-dÐÐ	
-­àÚÐ-eÐÐ	
-­áÚÐ-fÐÐ	
-­âÚÐ-gÐÐ	
-­ ÚÐ-)ÐÐ	
-­¢ÚÐ-hÐÐ	
-­£ÚÐ-iÐÐ	
-­¤ÚÐ-jÐÐ	
-­ØÚÐ-cÐÐ	
-­žÚÐ-)ÐÐ	
-­­ÚÐ-kÐÐ	
-­ ÚÐ-lÐÐ	
-­¡ÚÐ-mÐÐ	
-­×ÚÐ-cÐÐ	
-­SÚÐ-nÐÐ	
-­½ÚÐ-ÐÐ	
-­¾ÚÐ-oÐÐ	
-­ÀÚÐ-pÐÐ	
-­ÿÚÐ-qÐÐ	
-­ÚÐ-rÐÐ	
-­ÁÚÐ-sÐÐ	
-­ÚÐ-tÐÐ	
-­úÚÐ-1ÐÐ	
-­üÚÐ-uÐÐ	
-­ýÚÐ-iÐÐ	
-­þÚÐ-jÐÐ	
-­ûÚÐ-vÐÐ	
-­õÚÐ-nÐÐ	
-­ŒÚÐ-wÐÐ	
+­öÚÐ-JÐÐ	
+­ÚÐ-KÐÐ	
+­ÚÐ-LÐÐ	
+­ÚÐ-MÐÐ	
+­ÚÐ-NÐÐ	
+­ÚÐ-OÐÐ	
+­áÚÐ-PÐÐ	
+­ÁÚÐ-ÐÐ	
+­TÚÐ-QÐÐ	
+­OÚÐ-RÐÐ	
+­tÚÐ-SÐÐ	
+­¾ÚÐ-TÐÐ	
+­ÖÚÐ-UÐÐ	
+­ÙÚÐ-VÐÐ	
+­ÛÚÐ-WÐÐ	
+­ÜÚÐ-XÐÐ	
+­ÝÚÐ-YÐÐ	
+­ßÚÐ-ZÐÐ	
+­àÚÐ-[ÐÐ	
+­oÚÐ-\ÐÐ	
+­yÚÐ-]ÐÐ	
+­zÚÐ-^ÐÐ	
+­pÚÐ-_ÐÐ	
+­VÚÐ-`ÐÐ	
+­RÚÐ-ÐÐ	
+­JÚÐ-aÐÐ	
+­bÚÐ-bÐÐ	
+­cÚÐ-cÐÐ	
+­xÚÐ-dÐÐ	
+­hÚÐ-eÐÐ	
+­iÚÐ-fÐÐ	
+­jÚÐ-gÐÐ	
+­uÚÐ-hÐÐ	
+­wÚÐ-iÐÐ	
+­vÚÐ-jÐÐ	
+­kÚÐ-kÐÐ	
+­_ÚÐ-lÐÐ	
+­lÚÐ-mÐÐ	
+­nÚÐ-nÐÐ	
+­ÔÚÐ-oÐÐ	
+­|ÚÐ-pÐÐ	
+­}ÚÐ-qÐÐ	
+­~ÚÐ-rÐÐ	
+­ÚÐ-sÐÐ	
+­€ÚÐ-FÐÐ	
+­ÚÐ-tÐÐ	
+­‚ÚÐ-uÐÐ	
+­ƒÚÐ-vÐÐ	
+­„ÚÐ-HÐÐ	
+­…ÚÐ-wÐÐ	
+­†ÚÐ-xÐÐ	
+­©ÚÐ-"ÐÐ	
+­ªÚÐ-yÐÐ	
+­‡ÚÐ-zÐÐ	
+­ˆÚÐ-{ÐÐ	
+­‰ÚÐ-|ÐÐ	
+­ŠÚÐ-}ÐÐ	
+­‹ÚÐ-~ÐÐ	
+­ŒÚÐ-ÐÐ	
+­ÚÐ-€ÐÐ	
+­ŽÚÐ-1ÐÐ	
+­¤ÚÐ-ÐÐ	
+­¥ÚÐ-ÐÐ	
+­§ÚÐ-‚ÐÐ	
+­ÚÐ-ƒÐÐ	
+­¨ÚÐ-"ÐÐ	
+­«ÚÐ-„ÐÐ	
+­ÚÐ-…ÐÐ	
+­‘ÚÐ-†ÐÐ	
+­“ÚÐ-ƒÐÐ	
+­”ÚÐ-"ÐÐ	
+­¬ÚÐ-‡ÐÐ	
+­šÚÐ-ˆÐÐ	
+­œÚÐ-‰ÐÐ	
+­ÚÐ-ƒÐÐ	
+­žÚÐ-)ÐÐ	
+­­ÚÐ-ŠÐÐ	
+­ŸÚÐ-‹ÐÐ	
+­¡ÚÐ-ŒÐÐ	
+­¢ÚÐ-ƒÐÐ	
+­£ÚÐ-lÐÐ	
+­SÚÐ-ÐÐ	
+­ŒÚÐ-`ÐÐ	
 ­“ÚÐ-ÐÐ	
-­ÚÐ-xÐÐ	
-­±ÚÐ-yÐÐ	
-­°ÚÐ-zÐÐ	
-­ÚÐ-Ð{|ÐEÐÐ	
-­ÚÐ-}ÐÐ	
-­ÚÐ-~ÐÐ	
-­ÚÐ-ÐÐ	
-­	ÚÐ-€ÐÐ	
-­«ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­±ÚÐ-ŽÐÐ	
+­°ÚÐ-ÐÐ	
+­ÚÐ-А‘ÐEÐÐ	
+­ÚÐ-’ÐÐ	
+­ÚÐ-“ÐÐ	
+­ÚÐ-”ÐÐ	
+­	ÚÐ-•ÐÐ	
+­«ÚÐ-–ÐÐ	
 ­¬ÚÐ-ÐÐ	
-­¨ÚÐ-‚ÐÐ	
-­˜ÚÐ-ƒÐÐ	
-­ÚÐ-„ÐÐ	
-­(ÚÐ-…ÐÐ	
-­)ÚÐ-†ÐÐ	
-­<ÚÐ-‡ÐÐ	
-­PÚÐ-ˆÐÐ	
-­QÚÐ-‰ÐÐ	
-­RÚÐ-ŠÐÐ	
-­ïÚÐ-‹ÐÐ	
-­ôÚÐ-ŒÐÐ	
-­ñÚÐ-ÐÐ	
-­ìÚÐ-ŽÐÐ	
-­ÚÐ-ÐÐ	
-­›ÚÐ-ÐÐ	
+­¨ÚÐ-—ÐÐ	
+­˜ÚÐ-˜ÐÐ	
+­ÚÐ-™ÐÐ	
+­(ÚÐ-šÐÐ	
+­)ÚÐ-›ÐÐ	
+­<ÚÐ-œÐÐ	
+­PÚÐ-ÐÐ	
+­QÚÐ-žÐÐ	
+­RÚÐ-ŸÐÐ	
+­ïÚÐ- ÐÐ	
+­ôÚÐ-¡ÐÐ	
+­ñÚÐ-¢ÐÐ	
+­ìÚÐ-£ÐÐ	
+­ÚÐ-¤ÐÐ	
+­SÚÐ-¥ÐÐ	
+­ÀÚÐ-¦ÐÐ	
+­›ÚÐ-–ÐÐ	
 ­ÚÐ-ÐÐ	
 ­ÚÐ-
\ No newline at end of file