--- a/trunk/Display_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/ByteSwapPuzzleStateMachine/svnobj
+++ b/trunk/Display_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/ByteSwapPuzzleStateMachine/svnobj
@@ -1,11 +1,11 @@
-Gx_l†V!0…jüo¼2(ñ¢#€ÄD|System.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument	L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
+Gx_lç\!0…jüoS7ç
ëòl%¡KfÕSystem.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument	L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
 TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}Id
longTagText$IF NOT xInit THEN	N	UM				(		sName := 'Normal Operation', ì							dwSupportedStates := PACK_ML.State.All - PACK_ML.State.Suspending - PACK_ML.State.Suspended - PACK_ML.State.UnSuspending - PACK_ML.Holding - PACK_ML.Held - PACK_ML.UnHolding, Ô							dwAllowsLeavingFromStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, Ö							dwAllowsEnteringIntoStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, \							eInitialState := PACK_ML.State.Aborted,0							xActive := TRUE);	xInit := TRUE;	END_IF4IF Client.bReadyToPLC THEN:	CASE Client.iCommandToPLC OF"	0 : 	//Handshake	1 : 	//Lock		IF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[0]) =  0 THEN		 4			overrideKey := TRUE;			!–		ELSIF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[1]) =  0 THEN		"2			//Second Lock Function#
-			;	$		END_IF%	2 : 	//Key&	3 : 	//IO'	4 : 	//Media(	5 : 	//Hint)	6 : 	//State	*p		IF SysStrCmp(Client.sCommandFromPLC, 'SC') =  0 THEN		+&			StateComplete();,x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') =  0 THEN		-			Start();.v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') =  0 THEN		/			Stop();0x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') =  0 THEN		1			Reset();2x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') =  0 THEN		3			Abort();4x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') =  0 THEN		5			Clear();6v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') =  0 THEN		7			Hold();8z		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') =  0 THEN		9			Unhold();	:|		ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') =  0 THEN		;			Suspend();<€		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') =  0 THEN		=			UnSuspend();>		?	END_CASE@6	Client.iCommandToPLC := 0;A8	Client.sCommandToPLC := '';B:	Client.bReadyToPLC := FALSE;C.CASE UM.CurrentState OFD,PACK_ML.State.Stopped:E	;F,PACK_ML.State.Aborted:G&PACK_ML.State.Idle:H2PACK_ML.State.Complete :	I.PACK_ML.State.Execute :J(	CASE Client.Mode OFK		Mode.Mode1:LH			IF puzzleTimer.iProcess = 50 THENMF				IF Client.ActualStep <= 10 THENNú					SendCommand(Command := CommandType.Media ,Value := 'https://en.wikipedia.org/wiki/Bit_numbering#Least_significant_bit');O				ELSE Pœ					SendCommand(Command := CommandType.Hint ,Value := 'Unlock the panel.');		Q				END_IFR			END_IFS.			CASE Client.Level OFT&				Level.Beginner:UF					ShadowInByte := ROL(InByte,0);V.				Level.Placeholder1:WF					ShadowInByte := ROL(InByte,2);X.				Level.Intermediate:YF					ShadowInByte := ROL(InByte,4);Z.				Level.Placeholder2:[F					ShadowInByte := ROL(InByte,6);\&				Level.Advanced:]F					ShadowInByte := ROL(InByte,8);^			END_CASE_		Mode.Mode2:`Î					SendCommand(Command := CommandType.Media ,Value := 'https://www.youtube.com/watch?v=dQw4w9WgXcQ');a			END_IF			b,			temp.7 := InByte.5;c,			temp.6 := InByte.2;d,			temp.5 := InByte.7;e,			temp.4 := InByte.1;f,			temp.3 := InByte.6;g,			temp.2 := InByte.0;h,			temp.1 := InByte.3;i,			temp.0 := InByte.4;j				k2			ShadowInByte := temp; l		Mode.Mode3:mð					SendCommand(Command := CommandType.Media ,Value := 'https://en.wikipedia.org/wiki/Endianness#Files_and_byte_swap');n			o,			temp.7 := InByte.0;p,			temp.6 := InByte.1;q,			temp.5 := InByte.2;r,			temp.4 := InByte.3;s,			temp.3 := InByte.4;t,			temp.2 := InByte.5;u,			temp.1 := InByte.6;v,			temp.0 := InByte.7;w4			ShadowInByte := temp; 	x4	CASE Client.ActualStep OFy0		0:	// Waiting for key.zV			IF DI_Key_switch OR overrideKey THEN				{`				Client.ActualStep := Client.ActualStep + 10;|&				ViewIndex := 0;}–				SendCommand(Command := CommandType.Key,Value := Client.KeyCommands[0]);~4				// Turn on the screen.			END_IF	€.		10: // Check solution		 	‚ 			IF ton.Q THENƒ@				IF LocalOutByte = 255 THEN		„.					LocalOutByte := 0;…				ELSE†L					LocalOutByte := LocalOutByte + 1;‡>				OutByte := LocalOutByte;			ˆ^				Client.ActualStep := Client.ActualStep + 5;‰			END_IF		Š
-		15:‹4			IF CheckSolution() THENŒ`				Client.ActualStep := Client.ActualStep + 5;				ELSEŽf				Client.ActualStep := Client.ActualStep - 5;				h			IF NOT DI_Key_switch AND NOT overrideKey THEN				6				Client.ActualStep := 0;‘&				ViewIndex := 1;’6				// Turn off the screen.“
-		20:”"				OutByte := 1;•f				Client.ActualStep := Client.ActualStep + 10;		 –		30:	—D				IF ShadowInByte = OutByte THEN˜b					Client.ActualStep := Client.ActualStep + 10;™:					Client.ActualStep := 10;šl				IF NOT DI_Key_switch AND NOT overrideKey  THEN				›8					Client.ActualStep := 0;œ(					ViewIndex := 1;8					// Turn off the screen.ž				END_IF	Ÿ
-		40: "				OutByte := 2;¡d				Client.ActualStep := Client.ActualStep + 10;	 ¢		50:	£
-		60:¤"				OutByte := 4;¥		70:	¦
-					§
-		80:¨"				OutByte := 8;©		90:	ª		100:«$				OutByte := 16;¬		110:	­		120:®$				OutByte := 32;¯		130:	°		140:±$				OutByte := 64;²		150:	³		160:´&				OutByte := 128;µb				Client.ActualStep := Client.ActualStep + 10; ¶		170:	·		180: 					¸(				StateComplete();¹2PACK_ML.State.Resetting :º 	ViewIndex := 1;»,	overrideKey := FALSE;¼$	LocalInByte := 0;½&	LocalOutByte := 0;¾&	ShadowInByte := 0;¿	OutByte := 0;À"	StateComplete();Á0PACK_ML.State.Starting :Â4PACK_ML.State.Completing :Ã0PACK_ML.State.Aborting :Ä.PACK_ML.State.Stopping:Å2PACK_ML.State.Clearing :	ÆEND_CASEÇLClient.ActualState := UM.CurrentState;ÈbIF NOT (x_EmergencyGF AND NOT x_EmergencyFF) THENÉ(	 //Emergency Abort.Ê	Abort();	ËäpuzzleTimer(xStartTimer := UM.CurrentState = PACK_ML.State.Execute ,xPauseTimer := ,xStopTimer:= NOT (UM.CurrentState = PACK_ML.State.Execute),tMaxPuzzleTime := Client.Duration);ÌPClient.Progress := puzzleTimer.iProcess;ÍFIF puzzleTimer.iProcess >= 100 THENÎ	Stop();	ϸton(IN := (Client.ActualState = PACK_ML.Execute AND Client.ActualStep = 10 ),PT := T#500MS);ÐInterfaceÑL{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}ÒRFUNCTION_BLOCK ByteSwapPuzzleStateMachineÓVAR_IN_OUTÔ.	Client : PuzzleClient;Õ"	ViewIndex : INT;ÖEND_VAR×VARØ0	UM	: PACK_ML.UnitMode; Ùj	xInit				: BOOL := FALSE; // Flag for initializationÚ(	overrideKey : BOOL;Û6	puzzleTimer : PuzzleTimer;Ü&	LocalInByte :BYTE;Ý(	LocalOutByte :BYTE;Þ,	InByte AT %IB0: BYTE;ß(	ShadowInByte :BYTE;à.	OutByte AT %QB0: BYTE;á	ton  : TON;â	iRol:INT := 4;ã	temp : BYTE;ä"UniqueIdGeneratorå860æPOULevelçL{8e575c5b-1d37-49c6-941b-5c0ec7874787}èStandardé ChildObjectGuidsê8System.Collections.ArrayListë,AddAttributeSubsequentìboolÐÐ-ÐÐ	E
-×ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­lÚÐ-ÐÐ
­eÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ŽÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­®ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­µÚÐ-ÐÐ
­´ÚÐ- ÐÐ
­¶ÚÐ-!ÐÐ
­·ÚÐ-"ÐÐ
­øÚÐ-#ÐÐ
­¯ÚÐ-$ÐÐ
­ÚÚÐ-%ÐÐ
­ªÚÐ-&ÐÐ
­«ÚÐ-'ÐÐ
­¬ÚÐ-(ÐÐ
­­ÚÐ-)ÐÐ
­¹ÚÐ-*ÐÐ
­ºÚÐ-+ÐÐ
­»ÚÐ-,ÐÐ
­¾ÚÐ--ÐÐ
­¿ÚÐ-.ÐÐ
­ÀÚÐ-/ÐÐ
­ÁÚÐ-0ÐÐ
­ÂÚÐ-1ÐÐ
­ÃÚÐ-2ÐÐ
­ÄÚÐ-3ÐÐ
­ÅÚÐ-4ÐÐ
­ÆÚÐ-5ÐÐ
­ÇÚÐ-6ÐÐ
­ÈÚÐ-7ÐÐ
­ÉÚÐ-8ÐÐ
­ÎÚÐ-9ÐÐ
­ÏÚÐ-:ÐÐ
­ÐÚÐ-;ÐÐ
­ÑÚÐ-<ÐÐ
­¼ÚÐ-=ÐÐ
­¸ÚÐ-$ÐÐ
­½ÚÐ->ÐÐ
­—ÚÐ-?ÐÐ
­ÓÚÐ-ÐÐ
­ÕÚÐ-@ÐÐ
­ÖÚÐ-AÐÐ
­×ÚÐ-BÐÐ
­•ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-CÐÐ
­ÚÐ-DÐÐ
­ÚÐ-EÐÐ
­ÚÐ-FÐÐ
­ÚÐ-EÐÐ
­ÚÐ-GÐÐ
­ÚÐ-EÐÐ
­ ÚÐ-HÐÐ
­¦ÚÐ-EÐÐ
­ŸÚÐ-IÐÐ
­ÚÐ-JÐÐ
­ÚÐ-KÐÐ
­6ÚÐ-LÐÐ
­7ÚÐ-MÐÐ
­8ÚÐ-NÐÐ
­9ÚÐ-OÐÐ
­:ÚÐ-PÐÐ
­;ÚÐ-QÐÐ
­4ÚÐ-RÐÐ
­5ÚÐ->ÐÐ
­ÚÐ-SÐÐ
­ÚÐ-TÐÐ
­ÚÐ-UÐÐ
­ÚÐ-VÐÐ
­ÚÐ-WÐÐ
­ÚÐ-XÐÐ
­ÚÐ-YÐÐ
­ÚÐ-ZÐÐ
­ÚÐ-[ÐÐ
­ ÚÐ-\ÐÐ
­!ÚÐ-]ÐÐ
­"ÚÐ-^ÐÐ
­#ÚÐ-_ÐÐ
­OÚÐ-LÐÐ
­PÚÐ-MÐÐ
­QÚÐ-`ÐÐ
­RÚÐ-OÐÐ
­SÚÐ-PÐÐ
­TÚÐ-QÐÐ
­UÚÐ-aÐÐ
­NÚÐ->ÐÐ
­DÚÐ-bÐÐ
­EÚÐ-cÐÐ
­FÚÐ-dÐÐ
­GÚÐ-eÐÐ
­HÚÐ-fÐÐ
­IÚÐ-gÐÐ
­JÚÐ-hÐÐ
­KÚÐ-iÐÐ
­LÚÐ-jÐÐ
­(ÚÐ-kÐÐ
­%ÚÐ-lÐÐ
­>ÚÐ-LÐÐ
­?ÚÐ-MÐÐ
­@ÚÐ-mÐÐ
­AÚÐ-OÐÐ
­BÚÐ-PÐÐ
­CÚÐ-QÐÐ
­<ÚÐ-RÐÐ
­=ÚÐ-nÐÐ
­)ÚÐ-oÐÐ
­*ÚÐ-pÐÐ
­+ÚÐ-qÐÐ
­,ÚÐ-rÐÐ
­-ÚÐ-sÐÐ
­.ÚÐ-tÐÐ
­/ÚÐ-uÐÐ
­0ÚÐ-vÐÐ
­1ÚÐ-jÐÐ
­'ÚÐ-wÐÐ
­&ÚÐ-jÐÐ
­ûÚÐ-?ÐÐ
­ùÚÐ-ÐÐ
­»ÚÐ-ÐÐ
­ÆÚÐ-ÐÐ
­ÇÚÐ-xÐÐ
­òÚÐ->ÐÐ
­óÚÐ-yÐÐ
­÷ÚÐ-zÐÐ
­ûÚÐ-{ÐÐ
­	ÚÐ-|ÐÐ
­
ÚÐ-}ÐÐ
­üÚÐ-~ÐÐ
­úÚÐ-ÐÐ
­ËÚÐ-€ÐÐ
­±ÚÐ-ÐÐ
­×ÚÐ-‚ÐÐ
­ØÚÐ-ƒÐÐ
­ÙÚÐ-„ÐÐ
­ÚÚÐ-…ÐÐ
­ÛÚÐ-†ÐÐ
­ÜÚÐ-QÐÐ
­ÞÚÐ-‡ÐÐ
­ßÚÐ-ˆÐÐ
­²ÚÐ-‰ÐÐ
­þÚÐ-nÐÐ
­ÿÚÐ-ŠÐÐ
­¾ÚÐ-‹ÐÐ
­¿ÚÐ-ŒÐÐ
­ÁÚÐ-ÐÐ
­ÃÚÐ-ŽÐÐ
­½ÚÐ-‰ÐÐ
­ÆÚÐ-ÐÐ
­ÈÚÐ-ÐÐ
­ÉÚÐ-ÐÐ
­ÊÚÐ-‘ÐÐ
­ËÚÐ-’ÐÐ
­ÇÚÐ-ÐÐ
­ÅÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-“ÐÐ
­ÚÐ-”ÐÐ
­gÚÐ-•ÐÐ
­ÚÐ-–ÐÐ
­ºÚÐ-—ÐÐ
­fÚÐ-˜ÐÐ
­"ÚÐ-…ÐÐ
­#ÚÐ-™ÐÐ
­$ÚÐ-QÐÐ
­}ÚÐ-jÐÐ
­ÚÐ-jÐÐ
­€ÚÐ-šÐÐ
­ÚÐ-›ÐÐ
­‚ÚÐ-œÐÐ
­ƒÚÐ-ÐÐ
­„ÚÐ-jÐÐ
­~ÚÐ-žÐÐ
­%ÚÐ-ŸÐÐ
­&ÚÐ- ÐÐ
­hÚÐ-¡ÐÐ
­(ÚÐ-¢ÐÐ
­)ÚÐ-—ÐÐ
­iÚÐ-˜ÐÐ
­+ÚÐ-…ÐÐ
­vÚÐ-™ÐÐ
­-ÚÐ-QÐÐ
­…ÚÐ-jÐÐ
­‡ÚÐ-jÐÐ
­ˆÚÐ-šÐÐ
­‰ÚÐ-›ÐÐ
­ŠÚÐ-œÐÐ
­‹ÚÐ-ÐÐ
­ŒÚÐ-jÐÐ
­†ÚÐ-žÐÐ
­.ÚÐ-£ÐÐ
­/ÚÐ-¤ÐÐ
­jÚÐ-¡ÐÐ
­1ÚÐ-¥ÐÐ
­2ÚÐ-—ÐÐ
­kÚÐ-˜ÐÐ
­4ÚÐ-…ÐÐ
­wÚÐ-™ÐÐ
­6ÚÐ-QÐÐ
­ŽÚÐ-jÐÐ
­ÚÐ-šÐÐ
­ÚÐ-›ÐÐ
­‘ÚÐ-œÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-¦ÐÐ
­ÚÐ-žÐÐ
­7ÚÐ-§ÐÐ
­8ÚÐ-¨ÐÐ
­lÚÐ-•ÐÐ
­:ÚÐ-©ÐÐ
­;ÚÐ-—ÐÐ
­mÚÐ-˜ÐÐ
­=ÚÐ-…ÐÐ
­xÚÐ-™ÐÐ
­?ÚÐ-QÐÐ
­•ÚÐ-jÐÐ
­–ÚÐ-šÐÐ
­—ÚÐ-›ÐÐ
­˜ÚÐ-œÐÐ
­™ÚÐ-ÐÐ
­šÚÐ-¦ÐÐ
­”ÚÐ-žÐÐ
­@ÚÐ-ªÐÐ
­AÚÐ-«ÐÐ
­nÚÐ-•ÐÐ
­CÚÐ-¬ÐÐ
­DÚÐ-—ÐÐ
­oÚÐ-˜ÐÐ
­FÚÐ-…ÐÐ
­yÚÐ-™ÐÐ
­HÚÐ-QÐÐ
­œÚÐ-jÐÐ
­ÚÐ-šÐÐ
­žÚÐ-›ÐÐ
­ŸÚÐ-œÐÐ
­ ÚÐ-ÐÐ
­¡ÚÐ-¦ÐÐ
­›ÚÐ-žÐÐ
­IÚÐ-­ÐÐ
­JÚÐ-®ÐÐ
­pÚÐ-¡ÐÐ
­LÚÐ-¯ÐÐ
­MÚÐ-—ÐÐ
­qÚÐ-˜ÐÐ
­OÚÐ-…ÐÐ
­zÚÐ-™ÐÐ
­¢ÚÐ-QÐÐ
­£ÚÐ-šÐÐ
­¤ÚÐ-›ÐÐ
­¥ÚÐ-œÐÐ
­¦ÚÐ-ÐÐ
­§ÚÐ-¦ÐÐ
­QÚÐ-žÐÐ
­RÚÐ-°ÐÐ
­SÚÐ-±ÐÐ
­rÚÐ-¡ÐÐ
­UÚÐ-²ÐÐ
­VÚÐ-—ÐÐ
­sÚÐ-˜ÐÐ
­XÚÐ-…ÐÐ
­{ÚÐ-™ÐÐ
­ZÚÐ-QÐÐ
­©ÚÐ-jÐÐ
­ªÚÐ-šÐÐ
­«ÚÐ-›ÐÐ
­¬ÚÐ-œÐÐ
­­ÚÐ-ÐÐ
­®ÚÐ-¦ÐÐ
­¨ÚÐ-žÐÐ
­[ÚÐ-³ÐÐ
­\ÚÐ-´ÐÐ
­tÚÐ-µÐÐ
­^ÚÐ-¶ÐÐ
­_ÚÐ-—ÐÐ
­uÚÐ-˜ÐÐ
­aÚÐ-…ÐÐ
­|ÚÐ-™ÐÐ
­cÚÐ-QÐÐ
­dÚÐ-·ÐÐ
­ÚÐ-¸ÐÐ
­ÊÚÐ->ÐÐ
­ÉÚÐ-?ÐÐ
­ÀÚÐ-ÐÐ
­ÃÚÐ-ÐÐ
­´ÚÐ-ÐÐ
­@ÚÐ-ÐÐ
­¥ÚÐ-ÐÐ
­ªÚÐ-ÐÐ
­þÚÐ-¹ÐÐ
­ÚÐ-ºÐÐ
­ÚÐ-»ÐÐ
­ÚÐ-¼ÐÐ
­ÚÐ-½ÐÐ
­ÚÐ-¾ÐÐ
­ÚÐ-¿ÐÐ
­ÚÐ-ÀÐÐ
­ÚÐ-ÁÐÐ
­ÚÐ-ÀÐÐ
­RÚÐ-ÂÐÐ
­ ÚÐ-ÀÐÐ
­UÚÐ-ÃÐÐ
­!ÚÐ-ÀÐÐ
­WÚÐ-ÄÐÐ
­"ÚÐ-ÀÐÐ
­[ÚÐ-ÅÐÐ
­#ÚÐ-ÀÐÐ
­	ÚÐ-ÆÐÐ
­gÚÐ-ÐÐ
­ÚÐ-ÐÐ
­fÚÐ-ÇÐÐ
­YÚÐ-ÐÐ
­ZÚÐ-ÈÐÐ
­[ÚÐ-ÉÐÐ
­\ÚÐ-ÊÐÐ
­ÚÐ-ÐÐ
­VÚÐ-ÐÐ
­ÚÐ-ËÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÌÐÐ
­4ÚÐ-ÐÐ
­ÚÐ-ÍÐÐ
­8ÚÐ-ÎÐÐ
­7ÚÐ-ÐÐ
­âÚÐ-ÐÐ
­ãÚÐ-ÐÐ
­ÚÐ-ÐÐ
­áÚÐ-ÐÐ
­àÚÐ-ÏÐÐÑÐ	E
-ÐÐ
­$ÚÐ-ÒÐÐ
­%ÚÐ-ÓÐÐ
­&ÚÐ-ÔÐÐ
­ÚÐ-ÕÐÐ
­*ÚÐ-ÖÐÐ
­+ÚÐ-×ÐÐ
­XÚÐ-ØÐÐ
­-ÚÐ-ÐÐ
­.ÚÐ-ÙÐÐ
­/ÚÐ-ÐÐ
­0ÚÐ-ÐÐ
­ÚÐ-ÚÐÐ
­ÚÐ-ÐÐ
­1ÚÐ-ÛÐÐ
­2ÚÐ-ÜÐÐ
­ŒÚÐ-ÝÐÐ
­ÚÐ-ÞÐÐ
­ÚÐ-ßÐÐ
­‘ÚÐ-àÐÐ
­’ÚÐ-ÐÐ
­ÌÚÐ-áÐÐ
­ÚÐ-âÐÐ
­2ÚÐ-ÐÐ
­3ÚÐ-ãÐÐ
­ŽÚÐ-ÐÐ
­3ÚÐ-ÖÐÐ
­ÚÐ-Ðä-åÐæç-èéêÐëì­
\ No newline at end of file
+			;	$		END_IF%	2 : 	//Key&	3 : 	//IO'	4 : 	//Media(	5 : 	//Hint)	6 : 	//State	*p		IF SysStrCmp(Client.sCommandFromPLC, 'SC') =  0 THEN		+&			StateComplete();,x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') =  0 THEN		-			Start();.v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') =  0 THEN		/			Stop();0x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') =  0 THEN		1			Reset();2x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') =  0 THEN		3			Abort();4x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') =  0 THEN		5			Clear();6v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') =  0 THEN		7			Hold();8z		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') =  0 THEN		9			Unhold();	:|		ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') =  0 THEN		;			Suspend();<€		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') =  0 THEN		=			UnSuspend();>		?	END_CASE@6	Client.iCommandToPLC := 0;A8	Client.sCommandToPLC := '';B:	Client.bReadyToPLC := FALSE;C.CASE UM.CurrentState OFD,PACK_ML.State.Stopped:E	;F,PACK_ML.State.Aborted:G&PACK_ML.State.Idle:H2PACK_ML.State.Complete :	I.PACK_ML.State.Execute :J(	CASE Client.Mode OFK		Mode.Mode1:LH			IF puzzleTimer.iProcess = 25 THENM´				SendCommand(Command := CommandType.Hint ,Value := 'Collect the object in the room.');	N			END_IFOH			IF puzzleTimer.iProcess = 50 THENP–				SendCommand(Command := CommandType.Media ,Value := 'Padlock K000367');	Q			END_IF			RH			IF puzzleTimer.iProcess = 75 THENSF				IF Client.ActualStep <= 10 THENT’					SendCommand(Command := CommandType.Media ,Value := 'https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_operator_rol/');U				ELSEV2					overrideKey := TRUE;W				END_IFX			END_IF				Y			Z.			CASE Client.Level OF[&				Level.Beginner:\F					ShadowInByte := ROL(InByte,0);].				Level.Placeholder1:^F					ShadowInByte := ROL(InByte,2);_.				Level.Intermediate:`F					ShadowInByte := ROL(InByte,4);a.				Level.Placeholder2:bF					ShadowInByte := ROL(InByte,6);c&				Level.Advanced:dF					ShadowInByte := ROL(InByte,8);e			END_CASEf		Mode.Mode2:gÐ					SendCommand(Command := CommandType.Media ,Value := 'https://www.youtube.com/watch?v=dQw4w9WgXcQ');	hÒ					SendCommand(Command := CommandType.Media ,Value := 'https://www.youtube.com/watch?v=dQw4w9WgXcQ');		i				j			END_IF		k
+					l,			temp.7 := InByte.5;m,			temp.6 := InByte.2;n,			temp.5 := InByte.7;o,			temp.4 := InByte.1;p,			temp.3 := InByte.6;q,			temp.2 := InByte.0;r,			temp.1 := InByte.3;s,			temp.0 := InByte.4;t2			ShadowInByte := temp; u		Mode.Mode3:vJ			IF puzzleTimer.iProcess = 50 THEN	wœ				SendCommand(Command := CommandType.Media ,Value := 'Padlock K000367');				xö					SendCommand(Command := CommandType.Media ,Value := 'https://en.wikipedia.org/wiki/Endianness#Files_and_byte_swap');			yō					SendCommand(Command := CommandType.Media ,Value := 'https://en.wikipedia.org/wiki/Endianness#Files_and_byte_swap');		z,			temp.7 := InByte.0;{,			temp.6 := InByte.1;|,			temp.5 := InByte.2;},			temp.4 := InByte.3;~,			temp.3 := InByte.4;,			temp.2 := InByte.5;€,			temp.1 := InByte.6;,			temp.0 := InByte.7;‚4			ShadowInByte := temp; 	ƒ4	CASE Client.ActualStep OF„0		0:	// Waiting for key.…V			IF DI_Key_switch OR overrideKey THEN				†`				Client.ActualStep := Client.ActualStep + 10;‡&				ViewIndex := 0;ˆ–				SendCommand(Command := CommandType.Key,Value := Client.KeyCommands[0]);‰4				// Turn on the screen.Š			END_IF	‹.		10: // Check solutionŒ		 	 			IF ton.Q THENŽ@				IF LocalOutByte = 255 THEN		.					LocalOutByte := 0;L					LocalOutByte := LocalOutByte + 1;‘>				OutByte := LocalOutByte;			’^				Client.ActualStep := Client.ActualStep + 5;“
+		15:”4			IF CheckSolution() THEN•`				Client.ActualStep := Client.ActualStep + 5;	–			ELSE—f				Client.ActualStep := Client.ActualStep - 5;				˜d			IF NOT ( DI_Key_switch OR overrideKey) THEN				™6				Client.ActualStep := 0;š&				ViewIndex := 1;›6				// Turn off the screen.œ
+		20:"				OutByte := 1;žf				Client.ActualStep := Client.ActualStep + 10;		 Ÿ		30:	 D				IF ShadowInByte = OutByte THEN¡b					Client.ActualStep := Client.ActualStep + 10;¢:					Client.ActualStep := 10;£f				IF NOT ( DI_Key_switch OR overrideKey) THEN				¤8					Client.ActualStep := 0;¥(					ViewIndex := 1;¦8					// Turn off the screen.§				END_IF	¨
+		40:©"				OutByte := 2;ªd				Client.ActualStep := Client.ActualStep + 10;	 «		50:	¬
+		60:­"				OutByte := 4;®		70:	¯
+		80:°"				OutByte := 8;±		90:	²		100:³$				OutByte := 16;´		110:	µ		120:¶$				OutByte := 32;·		130:	¸		140:¹$				OutByte := 64;º		150:	»		160:¼&				OutByte := 128;½b				Client.ActualStep := Client.ActualStep + 10; ¾		170:	¿		180: 	À.				ViewIndex := 2;				Á(				StateComplete();Â2PACK_ML.State.Resetting :Ã 	ViewIndex := 1;Ä,	overrideKey := FALSE;Å$	LocalInByte := 0;Æ&	LocalOutByte := 0;Ç&	ShadowInByte := 0;È	OutByte := 0;É"	StateComplete();Ê0PACK_ML.State.Starting :Ë4PACK_ML.State.Completing :Ì0PACK_ML.State.Aborting :Í.PACK_ML.State.Stopping:Î2PACK_ML.State.Clearing :	ÏEND_CASEÐLClient.ActualState := UM.CurrentState;ÑVIF NOT x_EmergencyGF AND x_EmergencyFF THENÒ(	 //Emergency Abort.Ó	Abort();	ÔäpuzzleTimer(xStartTimer := UM.CurrentState = PACK_ML.State.Execute ,xPauseTimer := ,xStopTimer:= NOT (UM.CurrentState = PACK_ML.State.Execute),tMaxPuzzleTime := Client.Duration);Õ>messageQueue(Client := Client);ÖPClient.Progress := puzzleTimer.iProcess;×FIF puzzleTimer.iProcess >= 100 THENØ	//Stop();	Ù¸ton(IN := (Client.ActualState = PACK_ML.Execute AND Client.ActualStep = 10 ),PT := T#500MS);ÚInterfaceÛL{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}ÜRFUNCTION_BLOCK ByteSwapPuzzleStateMachineÝVAR_IN_OUTÞ.	Client : PuzzleClient;ß"	ViewIndex : INT;àEND_VARáVARâ0	UM	: PACK_ML.UnitMode; ãj	xInit				: BOOL := FALSE; // Flag for initializationä(	overrideKey : BOOL;å6	puzzleTimer : PuzzleTimer;æ:	messageQueue : MessageQueue;ç&	LocalInByte :BYTE;è(	LocalOutByte :BYTE;é(	ShadowInByte :BYTE;ê	ton  : TON;ë	iRol:INT := 4;ì	temp : BYTE;í"UniqueIdGeneratorî1004ïPOULevelðL{8e575c5b-1d37-49c6-941b-5c0ec7874787}ñStandardò ChildObjectGuidsó8System.Collections.ArrayListô,AddAttributeSubsequentõboolÐÐ-ÐÐ	E
+êÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­lÚÐ-ÐÐ
­eÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ŽÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­®ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­µÚÐ-ÐÐ
­´ÚÐ- ÐÐ
­¶ÚÐ-!ÐÐ
­·ÚÐ-"ÐÐ
­øÚÐ-#ÐÐ
­¯ÚÐ-$ÐÐ
­ÚÚÐ-%ÐÐ
­ªÚÐ-&ÐÐ
­«ÚÐ-'ÐÐ
­¬ÚÐ-(ÐÐ
­­ÚÐ-)ÐÐ
­¹ÚÐ-*ÐÐ
­ºÚÐ-+ÐÐ
­»ÚÐ-,ÐÐ
­¾ÚÐ--ÐÐ
­¿ÚÐ-.ÐÐ
­ÀÚÐ-/ÐÐ
­ÁÚÐ-0ÐÐ
­ÂÚÐ-1ÐÐ
­ÃÚÐ-2ÐÐ
­ÄÚÐ-3ÐÐ
­ÅÚÐ-4ÐÐ
­ÆÚÐ-5ÐÐ
­ÇÚÐ-6ÐÐ
­ÈÚÐ-7ÐÐ
­ÉÚÐ-8ÐÐ
­ÎÚÐ-9ÐÐ
­ÏÚÐ-:ÐÐ
­ÐÚÐ-;ÐÐ
­ÑÚÐ-<ÐÐ
­¼ÚÐ-=ÐÐ
­¸ÚÐ-$ÐÐ
­½ÚÐ->ÐÐ
­—ÚÐ-?ÐÐ
­ÓÚÐ-ÐÐ
­ÕÚÐ-@ÐÐ
­ÖÚÐ-AÐÐ
­×ÚÐ-BÐÐ
­•ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-CÐÐ
­ÚÐ-DÐÐ
­ÚÐ-EÐÐ
­ÚÐ-FÐÐ
­ÚÐ-EÐÐ
­ÚÐ-GÐÐ
­ÚÐ-EÐÐ
­ ÚÐ-HÐÐ
­¦ÚÐ-EÐÐ
­ŸÚÐ-IÐÐ
­ÚÐ-JÐÐ
­ÚÐ-KÐÐ
­ˆÚÐ-LÐÐ
­‰ÚÐ-MÐÐ
­ŠÚÐ-NÐÐ
­‹ÚÐ-OÐÐ
­ŒÚÐ-PÐÐ
­ÚÐ-QÐÐ
­‘ÚÐ-RÐÐ
­’ÚÐ-SÐÐ
­“ÚÐ-TÐÐ
­žÚÐ-UÐÐ
­ŸÚÐ-VÐÐ
­ ÚÐ-TÐÐ
­”ÚÐ-WÐÐ
­7ÚÐ-XÐÐ
­5ÚÐ->ÐÐ
­¦ÚÐ-YÐÐ
­ÚÐ-ZÐÐ
­ÚÐ-[ÐÐ
­¥ÚÐ-\ÐÐ
­ÚÐ-]ÐÐ
­ÚÐ-^ÐÐ
­ÚÐ-_ÐÐ
­ÚÐ-`ÐÐ
­ÚÐ-aÐÐ
­ÚÐ-bÐÐ
­ ÚÐ-cÐÐ
­!ÚÐ-dÐÐ
­"ÚÐ-eÐÐ
­#ÚÐ-fÐÐ
­zÚÐ-LÐÐ
­{ÚÐ-MÐÐ
­|ÚÐ-NÐÐ
­}ÚÐ-OÐÐ
­~ÚÐ-PÐÐ
­ÚÐ-NÐÐ
­‚ÚÐ-RÐÐ
­„ÚÐ-SÐÐ
­…ÚÐ-gÐÐ
­šÚÐ-UÐÐ
­ÚÐ-VÐÐ
­œÚÐ-hÐÐ
­†ÚÐ-WÐÐ
­™ÚÐ-iÐÐ
­‡ÚÐ-jÐÐ
­QÚÐ-kÐÐ
­NÚÐ-YÐÐ
­DÚÐ-lÐÐ
­EÚÐ-mÐÐ
­FÚÐ-nÐÐ
­GÚÐ-oÐÐ
­HÚÐ-pÐÐ
­IÚÐ-qÐÐ
­JÚÐ-rÐÐ
­KÚÐ-sÐÐ
­LÚÐ-iÐÐ
­(ÚÐ-tÐÐ
­%ÚÐ-uÐÐ
­dÚÐ-LÐÐ
­eÚÐ-MÐÐ
­iÚÐ-NÐÐ
­kÚÐ-vÐÐ
­qÚÐ-wÐÐ
­fÚÐ-NÐÐ
­>ÚÐ-RÐÐ
­sÚÐ-SÐÐ
­¡ÚÐ-xÐÐ
­¢ÚÐ-UÐÐ
­£ÚÐ-VÐÐ
­@ÚÐ-yÐÐ
­CÚÐ-WÐÐ
­tÚÐ-NÐÐ
­=ÚÐ-YÐÐ
­)ÚÐ-zÐÐ
­*ÚÐ-{ÐÐ
­+ÚÐ-|ÐÐ
­,ÚÐ-}ÐÐ
­-ÚÐ-~ÐÐ
­.ÚÐ-ÐÐ
­/ÚÐ-€ÐÐ
­0ÚÐ-ÐÐ
­1ÚÐ-iÐÐ
­'ÚÐ-‚ÐÐ
­&ÚÐ-iÐÐ
­ûÚÐ-?ÐÐ
­ùÚÐ-ÐÐ
­»ÚÐ-ÐÐ
­ÆÚÐ-ÐÐ
­ÇÚÐ-ƒÐÐ
­òÚÐ->ÐÐ
­óÚÐ-„ÐÐ
­÷ÚÐ-…ÐÐ
­ûÚÐ-†ÐÐ
­	ÚÐ-‡ÐÐ
­
ÚÐ-ˆÐÐ
­üÚÐ-‰ÐÐ
­úÚÐ-ŠÐÐ
­ËÚÐ-‹ÐÐ
­±ÚÐ-ŒÐÐ
­×ÚÐ-ÐÐ
­ØÚÐ-ŽÐÐ
­ÙÚÐ-ÐÐ
­ÚÚÐ-UÐÐ
­ÛÚÐ-ÐÐ
­ÜÚÐ-WÐÐ
­ÞÚÐ-‘ÐÐ
­ßÚÐ-’ÐÐ
­²ÚÐ-jÐÐ
­þÚÐ-YÐÐ
­ÿÚÐ-“ÐÐ
­¾ÚÐ-”ÐÐ
­¿ÚÐ-•ÐÐ
­ÁÚÐ-–ÐÐ
­ÃÚÐ-—ÐÐ
­½ÚÐ-jÐÐ
­ÆÚÐ-ÐÐ
­ºÚÐ-˜ÐÐ
­»ÚÐ-™ÐÐ
­¼ÚÐ-šÐÐ
­½ÚÐ-›ÐÐ
­ÇÚÐ-ŠÐÐ
­ÅÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-œÐÐ
­ÚÐ-ÐÐ
­gÚÐ-žÐÐ
­ÚÐ-ŸÐÐ
­ºÚÐ- ÐÐ
­fÚÐ-¡ÐÐ
­"ÚÐ-UÐÐ
­#ÚÐ-¢ÐÐ
­$ÚÐ-WÐÐ
­ÆÚÐ-£ÐÐ
­ÇÚÐ-¤ÐÐ
­ÈÚÐ-¥ÐÐ
­ÉÚÐ-¦ÐÐ
­}ÚÐ-§ÐÐ
­ÚÐ-iÐÐ
­~ÚÐ-iÐÐ
­%ÚÐ-¨ÐÐ
­&ÚÐ-©ÐÐ
­hÚÐ-ªÐÐ
­(ÚÐ-«ÐÐ
­)ÚÐ- ÐÐ
­iÚÐ-¡ÐÐ
­+ÚÐ-UÐÐ
­vÚÐ-¢ÐÐ
­ÊÚÐ-WÐÐ
­ËÚÐ-£ÐÐ
­ÌÚÐ-¤ÐÐ
­ÍÚÐ-¥ÐÐ
­ÎÚÐ-¦ÐÐ
­†ÚÐ-§ÐÐ
­.ÚÐ-¬ÐÐ
­/ÚÐ-­ÐÐ
­jÚÐ-ªÐÐ
­1ÚÐ-®ÐÐ
­2ÚÐ- ÐÐ
­kÚÐ-¡ÐÐ
­4ÚÐ-UÐÐ
­wÚÐ-¢ÐÐ
­ÏÚÐ-WÐÐ
­ÐÚÐ-£ÐÐ
­ÑÚÐ-¤ÐÐ
­ÒÚÐ-¥ÐÐ
­ÓÚÐ-¦ÐÐ
­ÚÐ-§ÐÐ
­7ÚÐ-¯ÐÐ
­8ÚÐ-°ÐÐ
­lÚÐ-žÐÐ
­:ÚÐ-±ÐÐ
­;ÚÐ- ÐÐ
­mÚÐ-¡ÐÐ
­=ÚÐ-UÐÐ
­xÚÐ-¢ÐÐ
­ÔÚÐ-WÐÐ
­ÕÚÐ-£ÐÐ
­ÖÚÐ-¤ÐÐ
­×ÚÐ-¥ÐÐ
­ØÚÐ-¦ÐÐ
­”ÚÐ-§ÐÐ
­@ÚÐ-²ÐÐ
­AÚÐ-³ÐÐ
­nÚÐ-žÐÐ
­CÚÐ-´ÐÐ
­DÚÐ- ÐÐ
­oÚÐ-¡ÐÐ
­FÚÐ-UÐÐ
­yÚÐ-¢ÐÐ
­ÙÚÐ-WÐÐ
­ÚÚÐ-£ÐÐ
­ÛÚÐ-¤ÐÐ
­ÜÚÐ-¥ÐÐ
­ÝÚÐ-¦ÐÐ
­›ÚÐ-§ÐÐ
­IÚÐ-µÐÐ
­JÚÐ-¶ÐÐ
­pÚÐ-ªÐÐ
­LÚÐ-·ÐÐ
­MÚÐ- ÐÐ
­qÚÐ-¡ÐÐ
­OÚÐ-UÐÐ
­zÚÐ-¢ÐÐ
­ÞÚÐ-WÐÐ
­ßÚÐ-£ÐÐ
­àÚÐ-¤ÐÐ
­áÚÐ-¥ÐÐ
­âÚÐ-¦ÐÐ
­QÚÐ-§ÐÐ
­RÚÐ-¸ÐÐ
­SÚÐ-¹ÐÐ
­rÚÐ-ªÐÐ
­UÚÐ-ºÐÐ
­VÚÐ- ÐÐ
­sÚÐ-¡ÐÐ
­XÚÐ-UÐÐ
­{ÚÐ-¢ÐÐ
­ãÚÐ-WÐÐ
­äÚÐ-£ÐÐ
­åÚÐ-¤ÐÐ
­æÚÐ-¥ÐÐ
­çÚÐ-¦ÐÐ
­¨ÚÐ-§ÐÐ
­[ÚÐ-»ÐÐ
­\ÚÐ-¼ÐÐ
­tÚÐ-½ÐÐ
­^ÚÐ-¾ÐÐ
­_ÚÐ- ÐÐ
­uÚÐ-¡ÐÐ
­aÚÐ-UÐÐ
­|ÚÐ-¢ÐÐ
­èÚÐ-WÐÐ
­éÚÐ-£ÐÐ
­êÚÐ-¤ÐÐ
­ëÚÐ-¥ÐÐ
­ìÚÐ-¦ÐÐ
­cÚÐ-§ÐÐ
­dÚÐ-¿ÐÐ
­¤ÚÐ-ÀÐÐ
­ÚÐ-ÁÐÐ
­ÊÚÐ->ÐÐ
­ÉÚÐ-?ÐÐ
­ÀÚÐ-ÐÐ
­ÃÚÐ-ÐÐ
­´ÚÐ-ÐÐ
­@ÚÐ-ÐÐ
­¥ÚÐ-ÐÐ
­ªÚÐ-ÐÐ
­þÚÐ-ÂÐÐ
­ÚÐ-ÃÐÐ
­ÚÐ-ÄÐÐ
­ÚÐ-ÅÐÐ
­ÚÐ-ÆÐÐ
­ÚÐ-ÇÐÐ
­ÚÐ-ÈÐÐ
­ÚÐ-ÉÐÐ
­ÚÐ-ÊÐÐ
­ÚÐ-ÉÐÐ
­RÚÐ-ËÐÐ
­ ÚÐ-ÉÐÐ
­UÚÐ-ÌÐÐ
­!ÚÐ-ÉÐÐ
­WÚÐ-ÍÐÐ
­"ÚÐ-ÉÐÐ
­[ÚÐ-ÎÐÐ
­#ÚÐ-ÉÐÐ
­	ÚÐ-ÏÐÐ
­gÚÐ-ÐÐ
­ÚÐ-ÐÐ
­fÚÐ-ÐÐÐ
­YÚÐ-ÐÐ
­ZÚÐ-ÑÐÐ
­[ÚÐ-ÒÐÐ
­\ÚÐ-ÓÐÐ
­ÚÐ-ÐÐ
­VÚÐ-ÐÐ
­ÚÐ-ÔÐÐ
­—ÚÐ-ÐÐ
­˜ÚÐ-ÕÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÖÐÐ
­4ÚÐ-ÐÐ
­ÚÐ-×ÐÐ
­8ÚÐ-ØÐÐ
­7ÚÐ-ÐÐ
­âÚÐ-ÐÐ
­ãÚÐ-ÐÐ
­ÚÐ-ÐÐ
­áÚÐ-ÐÐ
­àÚÐ-ÙÐÚÛÐ	E
+ÐÐ
­$ÚÐ-ÜÐÐ
­%ÚÐ-ÝÐÐ
­&ÚÐ-ÞÐÐ
­ÚÐ-ßÐÐ
­*ÚÐ-àÐÐ
­+ÚÐ-áÐÐ
­XÚÐ-âÐÐ
­-ÚÐ-ÐÐ
­.ÚÐ-ãÐÐ
­/ÚÐ-ÐÐ
­0ÚÐ-ÐÐ
­ÚÐ-äÐÐ
­ÚÐ-ÐÐ
­1ÚÐ-åÐÐ
­•ÚÐ-æÐÐ
­–ÚÐ-ÐÐ
­2ÚÐ-çÐÐ
­ŒÚÐ-èÐÐ
­ÚÐ-éÐÐ
­’ÚÐ-ÐÐ
­ÌÚÐ-êÐÐ
­ÚÐ-ëÐÐ
­2ÚÐ-ÐÐ
­3ÚÐ-ìÐÐ
­ŽÚÐ-ÐÐ
­3ÚÐ-àÐÐ
­ÚÐ-Ðí-îÐïð-ñòóÐôõ­
\ No newline at end of file