Diff of /trunk/json/json-pac/Data Types/JSONVAR/FB_Init/svnobj [r7] .. [r8]  Maximize  Restore

Switch to unified view

a/trunk/json/json-pac/Data Types/JSONVAR/FB_Init/svnobj b/trunk/json/json-pac/Data Types/JSONVAR/FB_Init/svnobj
1
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
1
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
2
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>
2
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>
3
          );?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
3
          );?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
4
    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ÐÐ 
4
    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
5
­AÚÐ-
ÐÐ  
5
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¢ŠŠ 
6
­BÚÐ-ÐÐ  
6
­AÚÐ-
ÐÐ  
7
­CÚÐ-ÐÐ  
7
­BÚÐ-ÐÐ  
8
­DÚÐ-ÐÐ  
8
­CÚÐ-ÐÐ  
9
­ÚÐ-ÐÐ  
9
­DÚÐ-ÐÐ  
10
­‘ÚÐ-ÐÐ  
10
­ÚÐ-ÐÐ  
11
­ÚÐ-ÐÐ  
11
­‘ÚÐ-ÐÐ  
12
­ÚÐ-ÐÐ  
12
­ÚÐ-ÐÐ  
13
­ÚÐ-ÐÐ  
13
­ÚÐ-ÐÐ  
14
­ÚÐ-ÐÐ  
14
­ÚÐ-ÐÐ  
15
­dÚÐ-ÐÐ  
15
­ÚÐ-ÐÐ  
16
­óÚÐ-ÐÐ  
16
­dÚÐ-ÐÐ  
17
­MÚÐ-ÐÐ  
17
­óÚÐ-ÐÐ  
18
­NÚÐ-ÐÐ  
18
­&ÚÐ-ÐÐ  
19
­ÚÐ-ÐÐ  
19
­NÚÐ-ÐÐ  
20
­ÚÐ-ÐÐ  
20
­ÚÐ-ÐÐ  
21
­ÚÐ-ÐÐ  
21
­ÚÐ-ÐÐ  
22
­ÚÐ-ÐÐ  
22
­ÚÐ-ÐÐ  
23
­ÚÐ-ÐÐ  
23
­ÚÐ-ÐÐ  
24
­ÚÐ-ÐÐ  
24
­
25
­
ÚÐ-ÐÐ    
25
ÚÐ-ÐÐ    
26
­
26
­   ÚÐ-ÐÐ    
27
ÚÐ-ÐÐ    
27
­LÚÐ-ÐÐ  
28
­   ÚÐ-ÐÐ    
28
­ÚÐ-ÐÐ  
29
­ÚÐ-ÐÐ  
29
­ÚÐ- ÐÐ  
30
­LÚÐ-ÐÐ  
30
­ÚÐ-!ÐÐ  
31
­ÚÐ-ÐÐ  
31
­ÚÐ-"ÐÐ  
32
­ÚÐ- ÐÐ  
32
­ÚÐ-#ÐÐ  
33
­ÚÐ-!ÐÐ  
33
­ÚÐ-$ÐÐ  
34
­ÚÐ-"ÐÐ  
34
­ÚÐ-%ÐÐ  
35
­ÚÐ-#ÐÐ  
35
­ÚÐ-&ÐÐ  
36
­ÚÐ-$ÐÐ  
36
­ÚÐ-'ÐÐ  
37
­ÚÐ-%ÐÐ  
37
­ÚÐ-(ÐÐ  
38
­ÚÐ-&ÐÐ  
38
­ÚÐ-)ÐÐ  
39
­ÚÐ-'ÐÐ  
39
­ ÚÐ-*ÐÐ  
40
­ÚÐ-(ÐÐ  
40
­!ÚÐ-+ÐÐ  
41
­ÚÐ-)ÐÐ  
41
­"ÚÐ-%ÐÐ  
42
­ ÚÐ-*ÐÐ  
42
­#ÚÐ-,ÐÐ  
43
­!ÚÐ-+ÐÐ  
43
­$ÚÐ--ÐÐ  
44
­"ÚÐ-%ÐÐ  
44
­%ÚÐ-(ÐÐ  
45
­#ÚÐ-,ÐÐ  
45
­&ÚÐ-"ÐÐ  
46
­$ÚÐ--ÐÐ  
46
­'ÚÐ-.ÐÐ  
47
­%ÚÐ-(ÐÐ  
47
­(ÚÐ-/ÐÐ  
48
­&ÚÐ-"ÐÐ  
48
­)ÚÐ-0ÐÐ  
49
­'ÚÐ-.ÐÐ  
49
­*ÚÐ-1ÐÐ  
50
­(ÚÐ-/ÐÐ  
50
­+ÚÐ-"ÐÐ  
51
­)ÚÐ-0ÐÐ  
51
­,ÚÐ-2ÐÐ  
52
­*ÚÐ-1ÐÐ  
52
­-ÚÐ-3ÐÐ  
53
­+ÚÐ-"ÐÐ  
53
­.ÚÐ-4ÐÐ  
54
­,ÚÐ-2ÐÐ  
54
­/ÚÐ-5ÐÐ  
55
­-ÚÐ-3ÐÐ  
55
­0ÚÐ-6ÐÐ  
56
­.ÚÐ-4ÐÐ  
56
­1ÚÐ-7ÐÐ  
57
­/ÚÐ-5ÐÐ  
57
­2ÚÐ-8ÐÐ  
58
­0ÚÐ-6ÐÐ  
58
­3ÚÐ-9ÐÐ  
59
­1ÚÐ-7ÐÐ  
59
­4ÚÐ-:ÐÐ  
60
­2ÚÐ-8ÐÐ  
60
­5ÚÐ-;ÐÐ  
61
­3ÚÐ-9ÐÐ  
61
­6ÚÐ-7ÐÐ  
62
­4ÚÐ-:ÐÐ  
62
­7ÚÐ-<ÐÐ  
63
­5ÚÐ-;ÐÐ  
63
­8ÚÐ-=ÐÐ  
64
­6ÚÐ-7ÐÐ  
64
­9ÚÐ->ÐÐ  
65
­7ÚÐ-<ÐÐ  
65
­:ÚÐ-1ÐÐ  
66
­8ÚÐ-=ÐÐ  
66
­;ÚÐ-"ÐÐ  
67
­9ÚÐ->ÐÐ  
67
­<ÚÐ-?ÐÐ  
68
­:ÚÐ-1ÐÐ  
68
­=ÚÐ-@ÐÐ  
69
­;ÚÐ-"ÐÐ  
69
­?ÚÐ-AÐÐ  
70
­<ÚÐ-?ÐÐ  
70
­@ÚÐ-BÐÐ  
71
­=ÚÐ-@ÐÐ  
71
­AÚÐ-1ÐÐ  
72
­>ÚÐ-AÐÐ  
72
­BÚÐ-)ÐÐ  
73
­?ÚÐ-BÐÐ  
73
­CÚÐ-CÐÐ  
74
­@ÚÐ-CÐÐ  
74
­DÚÐ-DÐÐ  
75
­AÚÐ-1ÐÐ  
75
­EÚÐ-EÐÐ  
76
­BÚÐ-)ÐÐ  
76
­FÚÐ-FÐÐ  
77
­CÚÐ-DÐÐ  
77
­GÚÐ-GÐÐ  
78
­DÚÐ-EÐÐ  
78
­HÚÐ-HÐÐ  
79
­EÚÐ-FÐÐ  
79
­JÚÐ-IÐÐ  
80
­FÚÐ-GÐÐ  
80
­OÚÐ-ÐÐ  
81
­GÚÐ-HÐÐ  
81
­öÚÐ-JÐÐ  
82
­HÚÐ-IÐÐ  
82
­ÚÐ-KÐÐ  
83
­JÚÐ-JÐÐ  
83
­ÚÐ-LÐÐ  
84
­OÚÐ-ÐÐ  
84
­ÚÐ-MÐÐ  
85
­öÚÐ-KÐÐ  
85
­ÚÐ-NÐÐ  
86
­€ÚÐ-LÐÐ  
86
­ÚÐ-OÐÐ  
87
­¼ÚÐ-MÐÐ  
87
­áÚÐ-PÐÐ  
88
­‚ÚÐ-NÐÐ  
88
­ÁÚÐ-ÐÐ  
89
­ÆÚÐ-OÐÐ  
89
­TÚÐ-QÐÐ  
90
­æÚÐ-PÐÐ  
90
­OÚÐ-RÐÐ  
91
­åÚÐ-QÐÐ  
91
­tÚÐ-SÐÐ  
92
­îÚÐ-RÐÐ  
92
­¾ÚÐ-TÐÐ  
93
­ÇÚÐ-SÐÐ  
93
­ÖÚÐ-UÐÐ  
94
­çÚÐ-GÐÐ  
94
­ÙÚÐ-VÐÐ  
95
­ÉÚÐ-TÐÐ  
95
­ÛÚÐ-WÐÐ  
96
­íÚÐ-UÐÐ  
96
­ÜÚÐ-XÐÐ  
97
­ÊÚÐ-VÐÐ  
97
­ÝÚÐ-YÐÐ  
98
­¸ÚÐ-IÐÐ  
98
­ßÚÐ-ZÐÐ  
99
­óÚÐ-WÐÐ  
99
­àÚÐ-[ÐÐ  
100
­ÁÚÐ-XÐÐ  
100
­oÚÐ-\ÐÐ  
101
­ÅÚÐ-YÐÐ  
101
­yÚÐ-]ÐÐ  
102
­ÎÚÐ-ZÐÐ  
102
­zÚÐ-^ÐÐ  
103
­ÌÚÐ-[ÐÐ  
103
­pÚÐ-_ÐÐ  
104
­ÔÚÐ-\ÐÐ  
104
­VÚÐ-`ÐÐ  
105
­ÕÚÐ-]ÐÐ  
105
­RÚÐ-ÐÐ  
106
­ÖÚÐ-^ÐÐ  
106
­JÚÐ-aÐÐ  
107
­èÚÐ-_ÐÐ  
107
­bÚÐ-bÐÐ  
108
­ãÚÐ-1ÐÐ  
108
­cÚÐ-cÐÐ  
109
­ÄÚÐ-"ÐÐ  
109
­xÚÐ-dÐÐ  
110
­ÚÚÐ-`ÐÐ  
110
­hÚÐ-eÐÐ  
111
­ÛÚÐ-aÐÐ  
111
­iÚÐ-fÐÐ  
112
­ÜÚÐ-bÐÐ  
112
­jÚÐ-gÐÐ  
113
­ÝÚÐ-cÐÐ  
113
­uÚÐ-hÐÐ  
114
­ÞÚÐ-"ÐÐ  
114
­wÚÐ-iÐÐ  
115
­ßÚÐ-dÐÐ  
115
­vÚÐ-jÐÐ  
116
­àÚÐ-eÐÐ  
116
­kÚÐ-kÐÐ  
117
­áÚÐ-fÐÐ  
117
­_ÚÐ-lÐÐ  
118
­âÚÐ-gÐÐ  
118
­lÚÐ-mÐÐ  
119
­ ÚÐ-)ÐÐ  
119
­nÚÐ-nÐÐ  
120
­¢ÚÐ-hÐÐ  
120
­ÔÚÐ-oÐÐ  
121
­£ÚÐ-iÐÐ  
121
­|ÚÐ-pÐÐ  
122
­¤ÚÐ-jÐÐ  
122
­}ÚÐ-qÐÐ  
123
­ØÚÐ-cÐÐ  
123
­~ÚÐ-rÐÐ  
124
­žÚÐ-)ÐÐ  
124
­ÚÐ-sÐÐ  
125
­­ÚÐ-kÐÐ  
125
­€ÚÐ-FÐÐ  
126
­ ÚÐ-lÐÐ  
126
­ÚÐ-tÐÐ  
127
­¡ÚÐ-mÐÐ  
127
­‚ÚÐ-uÐÐ  
128
­×ÚÐ-cÐÐ  
128
­ƒÚÐ-vÐÐ  
129
­SÚÐ-nÐÐ  
129
­„ÚÐ-HÐÐ  
130
­½ÚÐ-ÐÐ  
130
­…ÚÐ-wÐÐ  
131
­¾ÚÐ-oÐÐ  
131
­†ÚÐ-xÐÐ  
132
­ÀÚÐ-pÐÐ  
132
­©ÚÐ-"ÐÐ  
133
­ÿÚÐ-qÐÐ  
133
­ªÚÐ-yÐÐ  
134
­ÚÐ-rÐÐ  
134
­‡ÚÐ-zÐÐ  
135
­ÁÚÐ-sÐÐ  
135
­ˆÚÐ-{ÐÐ  
136
­ÚÐ-tÐÐ  
136
­‰ÚÐ-|ÐÐ  
137
­úÚÐ-1ÐÐ  
137
­ŠÚÐ-}ÐÐ  
138
­üÚÐ-uÐÐ  
138
­‹ÚÐ-~ÐÐ  
139
­ýÚÐ-iÐÐ  
139
­ŒÚÐ-ÐÐ  
140
­þÚÐ-jÐÐ  
140
­ÚÐ-€ÐÐ 
141
­ûÚÐ-vÐÐ  
141
­ŽÚÐ-1ÐÐ  
142
­õÚÐ-nÐÐ  
142
­¤ÚÐ-ÐÐ  
143
­ŒÚÐ-wÐÐ  
143
­¥ÚÐ-ÐÐ 
144
­“ÚÐ-ÐÐ  
144
­§ÚÐ-‚ÐÐ 
145
­ÚÐ-xÐÐ  
145
­ÚÐ-ƒÐÐ 
146
­±ÚÐ-yÐÐ  
146
­¨ÚÐ-"ÐÐ  
147
­°ÚÐ-zÐÐ  
147
­«ÚÐ-„ÐÐ 
148
­ÚÐ-Ð{|ÐEÐÐ    
148
­ÚÐ-…ÐÐ 
149
­ÚÐ-}ÐÐ  
149
­‘ÚÐ-†ÐÐ 
150
­ÚÐ-~ÐÐ  
150
­“ÚÐ-ƒÐÐ 
151
­ÚÐ-ÐÐ  
151
­”ÚÐ-"ÐÐ  
152
­   ÚÐ-€ÐÐ   
152
­¬ÚÐ-‡ÐÐ 
153
­«ÚÐ-ÐÐ 
153
­šÚÐ-ˆÐÐ 
154
­¬ÚÐ-ÐÐ  
154
­œÚÐ-‰ÐÐ 
155
­¨ÚÐ-‚ÐÐ 
155
­ÚÐ-ƒÐÐ 
156
­˜ÚÐ-ƒÐÐ 
156
­žÚÐ-)ÐÐ  
157
­ÚÐ-„ÐÐ 
157
­­ÚÐ-ŠÐÐ 
158
­(ÚÐ-…ÐÐ 
158
­ŸÚÐ-‹ÐÐ 
159
­)ÚÐ-†ÐÐ 
159
­¡ÚÐ-ŒÐÐ 
160
­<ÚÐ-‡ÐÐ 
160
­¢ÚÐ-ƒÐÐ 
161
­PÚÐ-ˆÐÐ 
161
­£ÚÐ-lÐÐ  
162
­QÚÐ-‰ÐÐ 
162
­SÚÐ-ÐÐ  
163
­RÚÐ-ŠÐÐ 
163
­ŒÚÐ-`ÐÐ  
164
­ïÚÐ-‹ÐÐ 
164
­“ÚÐ-ÐÐ  
165
­ôÚÐ-ŒÐÐ 
165
­ÚÐ-ÐÐ 
166
­ñÚÐ-ÐÐ 
166
­±ÚÐ-ŽÐÐ 
167
­ìÚÐ-ŽÐÐ 
167
­°ÚÐ-ÐÐ 
168
­ÚÐ-ÐÐ 
168
­ÚÐ-А‘ÐEÐÐ  
169
­›ÚÐ-ÐÐ 
169
­ÚÐ-’ÐÐ 
170
­ÚÐ-“ÐÐ 
171
­ÚÐ-”ÐÐ 
172
­   ÚÐ-•ÐÐ   
173
­«ÚÐ-–ÐÐ 
174
­¬ÚÐ-ÐÐ  
175
­¨ÚÐ-—ÐÐ 
176
­˜ÚÐ-˜ÐÐ 
177
­ÚÐ-™ÐÐ 
178
­(ÚÐ-šÐÐ 
179
­)ÚÐ-›ÐÐ 
180
­<ÚÐ-œÐÐ 
181
­PÚÐ-ÐÐ 
182
­QÚÐ-žÐÐ 
183
­RÚÐ-ŸÐÐ 
184
­ïÚÐ- ÐÐ 
185
­ôÚÐ-¡ÐÐ 
186
­ñÚÐ-¢ÐÐ 
187
­ìÚÐ-£ÐÐ 
188
­ÚÐ-¤ÐÐ 
189
­SÚÐ-¥ÐÐ 
190
­ÀÚÐ-¦ÐÐ 
191
­›ÚÐ-–ÐÐ 
170
­ÚÐ-ÐÐ  
192
­ÚÐ-ÐÐ  
171
­ÚÐ-
193
­ÚÐ-