[r78]: / trunk / Library / POUs / FB_TestSuite / AssertEquals / svnobj  Maximize  Restore  History

Download this file

330 lines (330 with data), 36.5 kB

Gx_l_Ž!0…jüoo…Ƹ•![v÷<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
HIF GVL_CfUnit.IgnoreCurrentTest THEN    RETURN;END_IFNAnyComparator(AnyValueOne := Expected, 4			AnyValueTwo := Actual);Ì(* First check whether the input data are any of the standard data types that are supported by TcUnit.Ô   In this case call the standard Assert-methods for that data. But before doing that we need to make sureJ   that both the expected and actual:B   - Have both the same data typeB   - Both have the same data size*)¨IF NOT AnyComparator.DataTypesNotEquals AND NOT AnyComparator.DataSizeNotEquals THEN    (* BOOL *)ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_BOOL THEN®		MEMCPY(destAddr := ADR(boolExpected), srcAddr := Expected.pValue, n := SIZEOF(BOOL));²        MEMCPY(destAddr := ADR(boolActual), srcAddr := Actual.pValue, n := SIZEOF(BOOL));¼        AssertEquals_BOOL(Expected := boolExpected, Actual := boolActual, Message := Message);        RETURN;     END_IF!    (* BYTE *)"ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_BYTE THEN#º        MEMCPY(destAddr := ADR(byteExpected), srcAddr := Expected.pValue, n := SIZEOF(BYTE));$²        MEMCPY(destAddr := ADR(byteActual), srcAddr := Actual.pValue, n := SIZEOF(BYTE));%¼        AssertEquals_BYTE(Expected := byteExpected, Actual := byteActual, Message := Message);&    (* DATE *)'ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DATE THEN(º        MEMCPY(destAddr := ADR(dateExpected), srcAddr := Expected.pValue, n := SIZEOF(DATE));)²        MEMCPY(destAddr := ADR(dateActual), srcAddr := Actual.pValue, n := SIZEOF(DATE));*¼        AssertEquals_DATE(Expected := dateExpected, Actual := dateActual, Message := Message);+.    (* DATE_AND_TIME *),¬    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DATEANDTIME THEN-Ú        MEMCPY(destAddr := ADR(dateAndTimeExpected), srcAddr := Expected.pValue, n := SIZEOF(DATE_AND_TIME));.Ò        MEMCPY(destAddr := ADR(dateAndTimeActual), srcAddr := Actual.pValue, n := SIZEOF(DATE_AND_TIME));/ê        AssertEquals_DATE_AND_TIME(Expected := dateAndTimeExpected, Actual := dateAndTimeActual, Message := Message);0    (* DINT *)1ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DINT THEN2º        MEMCPY(destAddr := ADR(dintExpected), srcAddr := Expected.pValue, n := SIZEOF(DINT));3²        MEMCPY(destAddr := ADR(dintActual), srcAddr := Actual.pValue, n := SIZEOF(DINT));4¼        AssertEquals_DINT(Expected := dintExpected, Actual := dintActual, Message := Message);5    (* DWORD *)6     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DWORD THEN7¾        MEMCPY(destAddr := ADR(dwordExpected), srcAddr := Expected.pValue, n := SIZEOF(DWORD));8¶        MEMCPY(destAddr := ADR(dwordActual), srcAddr := Actual.pValue, n := SIZEOF(DWORD));9        AssertEquals_DWORD(Expected := dwordExpected, Actual := dwordActual, Message := Message);:    (* INT *);œ    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_INT THEN<¶        MEMCPY(destAddr := ADR(intExpected), srcAddr := Expected.pValue, n := SIZEOF(INT));=®        MEMCPY(destAddr := ADR(intActual), srcAddr := Actual.pValue, n := SIZEOF(INT));>¶        AssertEquals_INT(Expected := intExpected, Actual := intActual, Message := Message);?    (* LINT *)@ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LINT THENAº        MEMCPY(destAddr := ADR(lintExpected), srcAddr := Expected.pValue, n := SIZEOF(LINT));B²        MEMCPY(destAddr := ADR(lintActual), srcAddr := Actual.pValue, n := SIZEOF(LINT));C¼        AssertEquals_LINT(Expected := lintExpected, Actual := lintActual, Message := Message);D    (* LREAL *)E     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LREAL THENF¾        MEMCPY(destAddr := ADR(lrealExpected), srcAddr := Expected.pValue, n := SIZEOF(LREAL));G¶        MEMCPY(destAddr := ADR(lrealActual), srcAddr := Actual.pValue, n := SIZEOF(LREAL));HÞ        AssertEquals_LREAL(Expected := lrealExpected, Actual := lrealActual, Delta := 0.0, Message := Message);I    (* LTIME *)J     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LTIME THENK¾        MEMCPY(destAddr := ADR(ltimeExpected), srcAddr := Expected.pValue, n := SIZEOF(LTIME));L¶        MEMCPY(destAddr := ADR(ltimeActual), srcAddr := Actual.pValue, n := SIZEOF(LTIME));M        AssertEquals_LTIME(Expected := ltimeExpected, Actual := ltimeActual, Message := Message);N    (* LWORD *)O     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LWORD THENP¾        MEMCPY(destAddr := ADR(lwordExpected), srcAddr := Expected.pValue, n := SIZEOF(LWORD));Q¶        MEMCPY(destAddr := ADR(lwordActual), srcAddr := Actual.pValue, n := SIZEOF(LWORD));R        AssertEquals_LWORD(Expected := lwordExpected, Actual := lwordActual, Message := Message);S    (* REAL *)Tž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_REAL THENUº        MEMCPY(destAddr := ADR(realExpected), srcAddr := Expected.pValue, n := SIZEOF(REAL));V²        MEMCPY(destAddr := ADR(realActual), srcAddr := Actual.pValue, n := SIZEOF(REAL));WØ        AssertEquals_REAL(Expected := realExpected, Actual := realActual, Delta := 0.0, Message := Message);X    (* SINT *)Yž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_SINT THENZº        MEMCPY(destAddr := ADR(sintExpected), srcAddr := Expected.pValue, n := SIZEOF(SINT));[²        MEMCPY(destAddr := ADR(sintActual), srcAddr := Actual.pValue, n := SIZEOF(SINT));\¼        AssertEquals_SINT(Expected := sintExpected, Actual := sintActual, Message := Message);]     (* STRING *)^¢    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_STRING THEN_â        MEMCPY(destAddr := ADR(stringExpected), srcAddr := Expected.pValue, n := DINT_TO_UDINT(Expected.diSize));`Ö        MEMCPY(destAddr := ADR(stringActual), srcAddr := Actual.pValue, n := DINT_TO_UDINT(Actual.diSize));aÈ        AssertEquals_STRING(Expected := stringExpected, Actual := stringActual, Message := Message);b    (* TIME *)cž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_TIME THENdº        MEMCPY(destAddr := ADR(timeExpected), srcAddr := Expected.pValue, n := SIZEOF(TIME));e²        MEMCPY(destAddr := ADR(timeActual), srcAddr := Actual.pValue, n := SIZEOF(TIME));f¼        AssertEquals_TIME(Expected := timeExpected, Actual := timeActual, Message := Message);g*    (* TIME_OF_DAY *)h¨    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_TIMEOFDAY THENiÒ        MEMCPY(destAddr := ADR(timeOfDayExpected), srcAddr := Expected.pValue, n := SIZEOF(TIME_OF_DAY));jÊ        MEMCPY(destAddr := ADR(timeOfDayActual), srcAddr := Actual.pValue, n := SIZEOF(TIME_OF_DAY));kÞ        AssertEquals_TIME_OF_DAY(Expected := timeOfDayExpected, Actual := timeOfDayActual, Message := Message);l    (* UDINT *)m     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_UDINT THENn¾        MEMCPY(destAddr := ADR(udintExpected), srcAddr := Expected.pValue, n := SIZEOF(UDINT));o¶        MEMCPY(destAddr := ADR(udintActual), srcAddr := Actual.pValue, n := SIZEOF(UDINT));p        AssertEquals_UDINT(Expected := udintExpected, Actual := udintActual, Message := Message);q    (* UINT *)rž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_UINT THENsº        MEMCPY(destAddr := ADR(uintExpected), srcAddr := Expected.pValue, n := SIZEOF(UINT));t²        MEMCPY(destAddr := ADR(uintActual), srcAddr := Actual.pValue, n := SIZEOF(UINT));u¼        AssertEquals_UINT(Expected := uintExpected, Actual := uintActual, Message := Message);v    (* ULINT *)w     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_ULINT THENx¾        MEMCPY(destAddr := ADR(ulintExpected), srcAddr := Expected.pValue, n := SIZEOF(ULINT));y¶        MEMCPY(destAddr := ADR(ulintActual), srcAddr := Actual.pValue, n := SIZEOF(ULINT));z        AssertEquals_ULINT(Expected := ulintExpected, Actual := ulintActual, Message := Message);{    (* USINT *)|     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_USINT THEN}¾        MEMCPY(destAddr := ADR(usintExpected), srcAddr := Expected.pValue, n := SIZEOF(USINT));~¶        MEMCPY(destAddr := ADR(usintActual), srcAddr := Actual.pValue, n := SIZEOF(USINT));        AssertEquals_USINT(Expected := usintExpected, Actual := usintActual, Message := Message);€    (* WORD *)ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_WORD THEN‚º        MEMCPY(destAddr := ADR(wordExpected), srcAddr := Expected.pValue, n := SIZEOF(WORD));ƒ²        MEMCPY(destAddr := ADR(wordActual), srcAddr := Actual.pValue, n := SIZEOF(WORD));„¼        AssertEquals_WORD(Expected := wordExpected, Actual := wordActual, Message := Message);…è(* If we've come to this row, it means that the data input is not any of the standard primitive data types, and thus†H   we need to do special handling *)‡¾TestInstancePath := AddTestNameToInstancePath(TestInstancePath := FINDTestSuiteInstancePath());ˆPIF AnyComparator.DataTypesNotEquals THEN‰â    ExpectedDataString := CONCAT(STR1 := '(Type class = ', STR2 := F_AnyTypeClassToString((Expected.TypeClass)));Š”    ExpectedDataString := CONCAT(STR1 := ExpectedDataString, STR2 := ')');‹Ö    ActualDataString := CONCAT(STR1 := '(Type class = ', STR2 := F_AnyTypeClassToString(Actual.TypeClass));ŒŒ    ActualDataString := CONCAT(STR1 := ActualDataString, STR2 := ')');TELSIF AnyComparator.DataSizeNotEquals THENŽÄ    ExpectedDataString := CONCAT(STR1 := 'Data size = ', STR2 := DINT_TO_STRING(Expected.diSize));¼    ActualDataString := CONCAT(STR1 := 'Data size = ', STR2 := DINT_TO_STRING(Actual.diSize));ZELSIF AnyComparator.DataContentNotEquals THEN‘ü    FOR Count := 0 TO MIN(Expected.diSize-1, 38) BY 1 DO // One byte will equal two characters (example: 255 = 0xff, 1 = 0x01)’€        ExpectedDataString := CONCAT(STR1 := ExpectedDataString,“Ì                                                  STR2 := BYTE_TO_HEXSTR(in := Expected.pValue[Count],”Î                                                                                       iPrecision := 2,•Ô                                                                                       bLoCase := FALSE));–    END_FOR—–    ExpectedDataString := CONCAT(STR1 := '0x', STR2 := ExpectedDataString);˜ø    FOR Count := 0 TO MIN(Actual.diSize-1, 38) BY 1 DO // One byte will equal two characters (example: 255 = 0xff, 1 = 0x01)™x        ActualDataString := CONCAT(STR1 := ActualDataString,šÄ                                                STR2 := BYTE_TO_HEXSTR(in := Actual.pValue[Count],›Ê                                                                                     iPrecision := 2,œÐ                                                                                     bLoCase := FALSE));Ž    ActualDataString := CONCAT(STR1 := '0x', STR2 := ActualDataString);žæIF (AnyComparator.DataTypesNotEquals OR AnyComparator.DataSizeNotEquals OR AnyComparator.DataContentNotEquals) THENŸh    AssertResults.ReportResult(Expected := Expected, `                               Actual := Actual,¡d                               Message := Message,¢ˆ                               TestInstancePath := TestInstancePath,£†                               AlreadyReported => AlreadyReported);¤–IF NOT AlreadyReported AND (AnyComparator.DataTypesNotEquals OR AnyComparator.DataSizeNotEquals OR AnyComparator.DataContentNotEquals) THEN¥(    SetTestFailed();¦–    AssertMessageFormatter.LogAssertFailure(Expected := ExpectedDataString,§Ž                                            Actual := ActualDataString,¨~                                            Message := Message,©¤                                            TestInstancePath := TestInstancePath);ªInterface«L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}¬///­Ì///  Asserts that two objects (of any type) are equal. If they are not, an assertion error is created.®Ð///  For REAL and LREAL it's recommended to use the AssertEquals_REAL or AssertEquals_LREAL respectively¯¸///  as these give the possibility to specify a delta between the expected and actual value.°4///.. code-block:: codesys±/// ²,///  Positive example:³
///  ´///  VARµ,///      a : INT := 5;¶,///      b : INT := 5;·///  END_VAR¸///   ¹:///  TEST('Test_ANY_Equals');ºN///  Assert.AssertEquals(Expected := a,»J///                      Actual := b,¼j///                      Message := 'Values differ');½*///  Failing example:¾.///      b : UINT := 5;¿L///  TEST('Test_ANY_Differ_DataType');À4METHOD PUBLIC AssertEqualsÁVAR_INPUTÂJ    Expected : ANY; // Expected valueÃp    Actual : ANY; // The value to check against expectedÄš    Message : T_MaxString; // The identifying message for the assertion errorÅEND_VARÆVARÇ"    Count : DINT;ÈH    ExpectedDataString : STRING(80);ÉD    ActualDataString : STRING(80);ÊF    TestInstancePath : T_MaxString;Ë6    AlreadyReported : BOOL;ÌJ    AnyComparator : FB_AnyComparator;Í0    boolExpected : BOOL;Î,    boolActual : BOOL;Ï0    byteExpected : BYTE;Ð,    byteActual : BYTE;Ñ0    dateExpected : DATE;Ò,    dateActual : DATE;ÓP    dateAndTimeExpected : DATE_AND_TIME;ÔL    dateAndTimeActual : DATE_AND_TIME;Õ0    dintExpected : DINT;Ö,    dintActual : DINT;×4    dwordExpected : DWORD;Ø0    dwordActual : DWORD;Ù,    intExpected : INT;Ú(    intActual : INT;Û0    lintExpected : LINT;Ü,    lintActual : LINT;Ý4    lrealExpected : LREAL;Þ0    lrealActual : LREAL;ß4    ltimeExpected : LTIME;à0    ltimeActual : LTIME;á4    lwordExpected : LWORD;â0    lwordActual : LWORD;ã0    realExpected : REAL;ä,    realActual : REAL;å0    sintExpected : SINT;æ,    sintActual : SINT;çB    stringExpected : T_MaxString;è>    stringActual : T_MaxString;é0    timeExpected : TIME;ê,    timeActual : TIME;ëH    timeOfDayExpected : TIME_OF_DAY;ìD    timeOfDayActual : TIME_OF_DAY;í4    udintExpected : UDINT;î0    udintActual : UDINT;ï0    uintExpected : UINT;ð,    uintActual : UINT;ñ4    ulintExpected : ULINT;ò0    ulintActual : ULINT;ó4    usintExpected : USINT;ô0    usintActual : USINT;õ0    wordExpected : WORD;ö,    wordActual : WORD;ÐÐÐEêÐÐ	
­ÚÐ-
ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­(ÚÐ-ÐÐ	
­	ÚÐ-ÐÐ	
­
ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­
ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­)ÚÐ-ÐÐ	
­*ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ- ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-!ÐÐ	
­ÚÐ-"ÐÐ	
­ÚÐ-#ÐÐ	
­ÚÐ-$ÐÐ	
­ÚÐ-%ÐÐ	
­ÚÐ-ÐÐ	
­ ÚÐ- ÐÐ	
­!ÚÐ-ÐÐ	
­"ÚÐ-&ÐÐ	
­#ÚÐ-'ÐÐ	
­$ÚÐ-(ÐÐ	
­%ÚÐ-)ÐÐ	
­&ÚÐ-*ÐÐ	
­'ÚÐ-ÐÐ	
­(ÚÐ- ÐÐ	
­)ÚÐ-ÐÐ	
­*ÚÐ-+ÐÐ	
­+ÚÐ-,ÐÐ	
­,ÚÐ--ÐÐ	
­-ÚÐ-.ÐÐ	
­.ÚÐ-/ÐÐ	
­/ÚÐ-ÐÐ	
­0ÚÐ- ÐÐ	
­1ÚÐ-ÐÐ	
­2ÚÐ-0ÐÐ	
­3ÚÐ-1ÐÐ	
­4ÚÐ-2ÐÐ	
­5ÚÐ-3ÐÐ	
­6ÚÐ-4ÐÐ	
­7ÚÐ-ÐÐ	
­8ÚÐ- ÐÐ	
­9ÚÐ-ÐÐ	
­:ÚÐ-5ÐÐ	
­;ÚÐ-6ÐÐ	
­<ÚÐ-7ÐÐ	
­=ÚÐ-8ÐÐ	
­>ÚÐ-9ÐÐ	
­?ÚÐ-ÐÐ	
­@ÚÐ- ÐÐ	
­AÚÐ-ÐÐ	
­BÚÐ-:ÐÐ	
­CÚÐ-;ÐÐ	
­DÚÐ-<ÐÐ	
­EÚÐ-=ÐÐ	
­FÚÐ->ÐÐ	
­GÚÐ-ÐÐ	
­HÚÐ- ÐÐ	
­IÚÐ-ÐÐ	
­JÚÐ-?ÐÐ	
­KÚÐ-@ÐÐ	
­LÚÐ-AÐÐ	
­MÚÐ-BÐÐ	
­NÚÐ-CÐÐ	
­OÚÐ-ÐÐ	
­PÚÐ- ÐÐ	
­QÚÐ-ÐÐ	
­RÚÐ-DÐÐ	
­SÚÐ-EÐÐ	
­TÚÐ-FÐÐ	
­UÚÐ-GÐÐ	
­VÚÐ-HÐÐ	
­WÚÐ-ÐÐ	
­XÚÐ- ÐÐ	
­YÚÐ-ÐÐ	
­ZÚÐ-IÐÐ	
­[ÚÐ-JÐÐ	
­\ÚÐ-KÐÐ	
­]ÚÐ-LÐÐ	
­^ÚÐ-MÐÐ	
­_ÚÐ-ÐÐ	
­`ÚÐ- ÐÐ	
­aÚÐ-ÐÐ	
­bÚÐ-NÐÐ	
­cÚÐ-OÐÐ	
­dÚÐ-PÐÐ	
­eÚÐ-QÐÐ	
­fÚÐ-RÐÐ	
­gÚÐ-ÐÐ	
­hÚÐ- ÐÐ	
­iÚÐ-ÐÐ	
­jÚÐ-SÐÐ	
­kÚÐ-TÐÐ	
­lÚÐ-UÐÐ	
­mÚÐ-VÐÐ	
­nÚÐ-WÐÐ	
­oÚÐ-ÐÐ	
­pÚÐ- ÐÐ	
­qÚÐ-ÐÐ	
­rÚÐ-XÐÐ	
­sÚÐ-YÐÐ	
­tÚÐ-ZÐÐ	
­uÚÐ-[ÐÐ	
­vÚÐ-\ÐÐ	
­wÚÐ-ÐÐ	
­xÚÐ- ÐÐ	
­yÚÐ-ÐÐ	
­zÚÐ-]ÐÐ	
­{ÚÐ-^ÐÐ	
­|ÚÐ-_ÐÐ	
­}ÚÐ-`ÐÐ	
­~ÚÐ-aÐÐ	
­ÚÐ-ÐÐ	
­€ÚÐ- ÐÐ	
­ÚÐ-ÐÐ	
­‚ÚÐ-bÐÐ	
­ƒÚÐ-cÐÐ	
­„ÚÐ-dÐÐ	
­…ÚÐ-eÐÐ	
­†ÚÐ-fÐÐ	
­‡ÚÐ-ÐÐ	
­ˆÚÐ- ÐÐ	
­‰ÚÐ-ÐÐ	
­ŠÚÐ-gÐÐ	
­‹ÚÐ-hÐÐ	
­ŒÚÐ-iÐÐ	
­ÚÐ-jÐÐ	
­ŽÚÐ-kÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ- ÐÐ	
­‘ÚÐ-ÐÐ	
­’ÚÐ-lÐÐ	
­“ÚÐ-mÐÐ	
­”ÚÐ-nÐÐ	
­•ÚÐ-oÐÐ	
­–ÚÐ-pÐÐ	
­—ÚÐ-ÐÐ	
­˜ÚÐ- ÐÐ	
­™ÚÐ-ÐÐ	
­šÚÐ-qÐÐ	
­›ÚÐ-rÐÐ	
­œÚÐ-sÐÐ	
­ÚÐ-tÐÐ	
­žÚÐ-uÐÐ	
­ŸÚÐ-ÐÐ	
­ ÚÐ- ÐÐ	
­¡ÚÐ-ÐÐ	
­¢ÚÐ-vÐÐ	
­£ÚÐ-wÐÐ	
­¤ÚÐ-xÐÐ	
­¥ÚÐ-yÐÐ	
­¦ÚÐ-zÐÐ	
­§ÚÐ-ÐÐ	
­¨ÚÐ- ÐÐ	
­©ÚÐ-ÐÐ	
­ªÚÐ-{ÐÐ	
­«ÚÐ-|ÐÐ	
­¬ÚÐ-}ÐÐ	
­­ÚÐ-~ÐÐ	
­®ÚÐ-ÐÐ	
­¯ÚÐ-ÐÐ	
­°ÚÐ- ÐÐ	
­±ÚÐ-ÐÐ	
­²ÚÐ-€ÐÐ	
­³ÚÐ-ÐÐ	
­´ÚÐ-‚ÐÐ	
­µÚÐ-ƒÐÐ	
­¶ÚÐ-„ÐÐ	
­·ÚÐ-ÐÐ	
­¸ÚÐ- ÐÐ	
­¹ÚÐ-ÐÐ	
­ºÚÐ-ÐÐ	
­»ÚÐ-ÐÐ	
­¼ÚÐ-…ÐÐ	
­½ÚÐ-†ÐÐ	
­¾ÚÐ-‡ÐÐ	
­¿ÚÐ-ÐÐ	
­ÀÚÐ-ˆÐÐ	
­ÁÚÐ-‰ÐÐ	
­ÂÚÐ-ŠÐÐ	
­ÃÚÐ-‹ÐÐ	
­ÄÚÐ-ŒÐÐ	
­ÅÚÐ-ÐÐ	
­ÆÚÐ-ŽÐÐ	
­ÇÚÐ-ŠÐÐ	
­ÈÚÐ-ÐÐ	
­ÉÚÐ-ŒÐÐ	
­ÊÚÐ-ÐÐ	
­ËÚÐ-‘ÐÐ	
­ÌÚÐ-’ÐÐ	
­ÍÚÐ-“ÐÐ	
­ÎÚÐ-”ÐÐ	
­ÏÚÐ-•ÐÐ	
­ÐÚÐ-–ÐÐ	
­ÑÚÐ-—ÐÐ	
­ÒÚÐ-ÐÐ	
­ÓÚÐ-˜ÐÐ	
­ÔÚÐ-™ÐÐ	
­ÕÚÐ-šÐÐ	
­ÖÚÐ-›ÐÐ	
­×ÚÐ-œÐÐ	
­ØÚÐ-–ÐÐ	
­ÙÚÐ-ÐÐ	
­ÚÚÐ-ÐÐ	
­ÛÚÐ-ÐÐ	
­ÜÚÐ-žÐÐ	
­ÝÚÐ-ŸÐÐ	
­ÞÚÐ- ÐÐ	
­ßÚÐ-¡ÐÐ	
­àÚÐ-¢ÐÐ	
­áÚÐ-£ÐÐ	
­âÚÐ-ÐÐ	
­ãÚÐ-ÐÐ	
­äÚÐ-¤ÐÐ	
­åÚÐ-¥ÐÐ	
­æÚÐ-ÐÐ	
­çÚÐ-¦ÐÐ	
­èÚÐ-§ÐÐ	
­éÚÐ-¨ÐÐ	
­êÚÐ-©ÐÐ	
­ÚÐ-Ъ«ÐE[ÐÐ	
­ëÚÐ-¬ÐÐ	
­ìÚÐ-­ÐÐ	
­íÚÐ-®ÐÐ	
­îÚÐ-¯ÐÐ	
­ïÚÐ-¬ÐÐ	
­-ÚÐ-ÐÐ	
­.ÚÐ-¬ÐÐ	
­/ÚÐ-°ÐÐ	
­,ÚÐ-±ÐÐ	
­1ÚÐ-²ÐÐ	
­;ÚÐ-³ÐÐ	
­<ÚÐ-´ÐÐ	
­=ÚÐ-µÐÐ	
­>ÚÐ-¶ÐÐ	
­?ÚÐ-·ÐÐ	
­@ÚÐ-¸ÐÐ	
­AÚÐ-¹ÐÐ	
­BÚÐ-ºÐÐ	
­CÚÐ-»ÐÐ	
­DÚÐ-¼ÐÐ	
­EÚÐ-³ÐÐ	
­FÚÐ-½ÐÐ	
­PÚÐ-³ÐÐ	
­QÚÐ-´ÐÐ	
­RÚÐ-µÐÐ	
­SÚÐ-¾ÐÐ	
­TÚÐ-·ÐÐ	
­UÚÐ-¸ÐÐ	
­VÚÐ-¿ÐÐ	
­WÚÐ-ºÐÐ	
­XÚÐ-»ÐÐ	
­0ÚÐ-¼ÐÐ	
­YÚÐ-³ÐÐ	
­+ÚÐ-ÐÐ	
­ðÚÐ-ÀÐÐ	
­ñÚÐ-ÁÐÐ	
­òÚÐ-ÂÐÐ	
­óÚÐ-ÃÐÐ	
­ôÚÐ-ÄÐÐ	
­õÚÐ-ÅÐÐ	
­öÚÐ-ÆÐÐ	
­÷ÚÐ-ÇÐÐ	
­øÚÐ-ÈÐÐ	
­ùÚÐ-ÉÐÐ	
­úÚÐ-ÊÐÐ	
­ûÚÐ-ËÐÐ	
­üÚÐ-ÌÐÐ	
­ýÚÐ-ÐÐ	
­þÚÐ-ÍÐÐ	
­ÿÚÐ-ÎÐÐ	
­ÚÐ-ÏÐÐ	
­ÚÐ-ÐÐÐ	
­ÚÐ-ÑÐÐ	
­ÚÐ-ÒÐÐ	
­ÚÐ-ÓÐÐ	
­ÚÐ-ÔÐÐ	
­ÚÐ-ÕÐÐ	
­ÚÐ-ÖÐÐ	
­ÚÐ-×ÐÐ	
­	ÚÐ-ØÐÐ	
­
ÚÐ-ÙÐÐ	
­ÚÐ-ÚÐÐ	
­ÚÐ-ÛÐÐ	
­
ÚÐ-ÜÐÐ	
­ÚÐ-ÝÐÐ	
­ÚÐ-ÞÐÐ	
­ÚÐ-ßÐÐ	
­ÚÐ-àÐÐ	
­ÚÐ-áÐÐ	
­ÚÐ-âÐÐ	
­ÚÐ-ãÐÐ	
­ÚÐ-äÐÐ	
­ÚÐ-åÐÐ	
­ÚÐ-æÐÐ	
­ÚÐ-çÐÐ	
­ÚÐ-èÐÐ	
­ÚÐ-éÐÐ	
­ÚÐ-êÐÐ	
­ÚÐ-ëÐÐ	
­ÚÐ-ìÐÐ	
­ÚÐ-íÐÐ	
­ÚÐ-îÐÐ	
­ ÚÐ-ïÐÐ	
­!ÚÐ-ðÐÐ	
­"ÚÐ-ñÐÐ	
­#ÚÐ-òÐÐ	
­$ÚÐ-óÐÐ	
­%ÚÐ-ôÐÐ	
­&ÚÐ-õÐÐ	
­'ÚÐ-öÐÐ	
­ÚÐ-Å