( V. Õö ¡2 signature_flag 4294967296''crc 3996477610CallTask__TaskFunction RelativeStack+Output, IsCompiled, RelativeStack, Typified ptaskinfo _IMPLICIT_TASK_INFO *Input, IsCompiled, RelativeStack, Typifiedpapplicationinfo_IMPLICIT_APPLICATION_INFO Compiled, Typified, Located$64a6db1c-7d12-4620-af5a-df39cad9e5c1$00000000-0000-0000-0000-000000000000 131785522generate_implicit_init_function__Setup__Call__POUProgram$e4b9f5fc-afff-5a6c-96c4-74fa6fb0e1f8 2728864722real32__to__any32indwType2External, Compiled, SuperGlobal, Typified, Located$adb07db6-6cb2-4889-b206-007b85f53578 4094399910any32__to__real32$bc57a7e2-ed11-422f-976f-8be4fc5666bf 2020165724 real32__eq in1!in2"$79084732-5d65-4953-878b-b9d1570ab3c3# 651050431$ real32__ne%$26c1b838-f805-4f80-b547-7a6b4efbbbb5& 1108587135' real32__lt($8897f859-01db-4c48-85cd-8862ad90c271)76373463* real32__le+$06045a98-b196-40fe-bbf3-cc6b9cd04fa6, 4168934275- real32__gt.$57dc0ec0-25cf-4c02-9dde-c27a20a79806/ 32024852910 real32__ge1$27ea9ccf-ca7d-4bbb-8a0b-76d96b1b096b2 10447566433real32__add4$4001e5c9-2959-421b-a1ea-3192b559210f5 2673141556real32__sub7$7af69ff9-2d09-4573-9668-4abfb8238c6b8 11036320749real32__mul:$07fdcf4d-2f32-4026-ba50-865a9a4cac44; 1466051322<real32__div=$7433aafb-0867-4fb3-b51c-62aedc81235f> 886904492?real32__abs@$a891677e-9887-4115-baf6-5bc18c14f21fA 3404262884Breal32__minC$7f040799-feda-40a7-b376-ee0db6e12abfD 4154332537Ereal32__maxF$c46be4ae-b278-40fc-8552-9cdb664b8607G 497866625H real32__limitIin3J$6049606a-24c9-4d04-8810-fd7a837dc535K 1847162626L real32__truncM$ef945a32-7190-4712-af4e-686069feba9eN 346942548Oreal32__tanP$84acc91c-76a8-41d8-8957-1617354730fcQ 843193954Rreal32__atanS$4e10f990-4cf5-4424-abd6-16195b2c1947T 2676881535Ureal32__sinV$b59097e9-0c6c-4edf-a18e-d34da5f674deW 4177298540Xreal32__asinY$12baf47b-573e-437a-b3eb-06f4c4745ccfZ 406941506[real32__cos\$21313f85-d945-4d56-bab3-9c0d70303453] 3446532930^real32__acos_$29048f1c-76ff-4555-a36d-61013b9112e7` 831403110a real32__lnb$412735d8-6e6f-49d1-8d62-aad6e08f4198c 2281156508dreal32__loge$bac2aa4e-fb73-4beb-bee8-1cbe13a49551f 1964720339greal32__exph$f127665c-c7d1-4290-b6be-8db37fc1df1ai 2929814886jreal32__exptk$bbbdf0cf-b7ce-4f53-af3f-df8a531c4d5dl 2945838411mreal32__sqrtn$cf137188-d4b3-4d76-b1f6-87afe6ee2148o 2367094826pDoLinkq int32__divr$16597b72-e6ca-4e3e-b487-0fab4f60f55ds 1538210473tuint32__divu$1acf0b76-2778-4975-844a-6ec15f762b2ev 997952827w int32__modx$32f74310-0500-40a8-bcdc-38e3a235c1a5y 1194593076zuint32__mod{$cd4339d7-cb4c-4660-b471-ee4a5c114ad0| 3531525309} int32__abs~$62876995-1a07-4244-a3f0-8c8f63eec49c 147726259int32__limit$79dd4eba-d759-4918-8c09-9ba7cedb378c 1413729490 uint32__limit$46a8a0a1-a4c6-464a-a53c-87329443b190 2280991083 int32__mul$3330a6c6-0b50-4a3c-91f0-5ad24d44fbf5 1292175001uint32__mul$47a65ed1-25f8-43b6-85a3-dee72d9a73cd 4142655437 int32__shr$1128c6ef-4d56-40a2-a91f-4f5dc0185d98 4111070444uint32__shr$c1f5d873-aaf1-4f92-b314-c17c78644b9d 2164893551uint32__shl$1393b595-1c79-4a79-a17f-db4b5fda7a44 2239779883uint32__rol$af9cbc04-84b4-409b-8830-f18c8ed3a6ec 4051699624uint32__ror$181ef5ee-7190-4ce0-ada3-cca4fd45a289 695114823 get__time$79ad9f0e-3a56-4c79-af55-c1dafc05b5e6 2006625495__sys__rts__cycle slotLower slotUpper¡ stTaskName¢AnyInt£stApplicationName¤$8f58c4c2-6bd5-47c7-a149-8588821180e6¥ 2641387053¦__sys__register__slot__pou§nSlotNumber¨dwFunctionPointer©$70da5b5d-fcb8-48d4-ac57-7c4cb04e2caaª 3903245801«__sys__unregister__slot__pou¬$9e4827e4-6b50-4e6a-bc7b-adeb6c4dd526 3363294660®SysCpuDebugHandler¯$d6a84056-f4d9-45ca-9a49-a66cec23e145°hide± ² 242570791³_Implicit_Application_Info´TypeµRelativeInstance¶''NORMAL__COMMENT·â rest of runtime info DO NOT USE ! pcArea : ARRAY [0..APPL_NUM_OF_STATIC_AREAS-1] OF POINTER TO BYTE //Pointer to data areas of this application unsigned short ausAreaType[APPL_NUM_OF_STATIC_AREAS]; /* Area type */ unsigned long aulAreaSize[APPL_NUM_OF_STATIC_AREAS]; /* Area size */ unsigned char StaticSessionIdPool[MEM_GET_STATIC_LEN_(APPL_NUM_OF_STATIC_SESSIONIDS, sizeof(unsigned long))]; unsigned char StaticForcePool[MEM_GET_STATIC_LEN(APPL_STATIC_FORCE_ENTRIES, ForceVarDesc)]; unsigned char StaticBPPool[MEM_GET_STATIC_LEN(APP_STATIC_BP_ENTRIES, Breakpoint)]; ¸pParentApplication¹8Local, Structure, IsCompiled, RelativeInstance, Typifiedº pbyRights»guidCode¼guidData½udState¾ udOpState¿dwDoNotUse_0ÀdwDoNotUse_1ÁdwDoNotUse_2ÂdwDoNotUse_3ÃdwDoNotUse_4ÄdwDoNotUse_5ÅdwDoNotUse_6ÆbAppendBootprojectÇbPersistentForceÈdwPSVersionÉdwTargetSettingVersionÊFB_INITË 3526140261ÌMethodÍbInitRetainsÎbInCopyCodeÏ__INSTANCEPOINTERÐ4Input, IsCompiled, RelativeStack, Implicit, TypifiedÑ __Index__0Ò2Local, IsCompiled, RelativeStack, NoInit, ImplicitÓ'NonVirtual, Compiled, Typified, LocatedÔ$ff589828-12c2-4e6a-9f0d-1d6dbb3264b6Õ__FB_PARTIALINITÖ 1565233622×2NonVirtual, Generated, Compiled, Typified, LocatedØ?Structure, NonVirtual, Compiled, SuperGlobal, Typified, LocatedÙ pack_modeÚ8Û 1691734129Üint64__to__any32Ý$e8c04d52-7d17-4965-9598-cb38a570750eÞ 2445978047ßany32__to__int64à$fbd44dd8-302c-4269-9682-4e63f10e32eeá 716714719âreal32__to__any64ã$4996aebf-7b1a-4606-9275-58c6595fe093ä 3713006940åany64__to__real32æ$fba8c26a-b719-4b40-ab2a-36a9440d345bç 2394705132è int64__divé$5df34150-5072-488a-a457-a82fe4dddcafê 1872403673ëuint64__divì$c72c0ae2-f6fb-4752-9d81-65e25c2adeddí 953205245î int64__modï$285230dc-fbd4-44eb-96d1-c35d9d1d95a4ð 593286487ñuint64__modò$7cf5a04d-a334-4d66-8458-aa41fd3d3cb4ó 113053312ôuint64__addõ$bd215293-9d5f-451b-8b34-fbf355380a1fö 3531041404÷ int64__addø$f853b3c3-030b-457f-9c6f-904c951d4c1bù 4246887690ú int64__subû$b74d723c-4571-496b-9991-776c19eac243ü 924210632ýuint64__subþ$91c29cfe-4ed7-4aaf-862d-2b211eba3727ÿ 2220778925 int64__mul$56cf99a8-dd26-40fc-bd98-c75e222d12a2 2033230057uint64__mul$9f1b41e0-0777-4b76-9af1-a82c5e0d5e37 3251236970 int64__min$938d42a9-f6db-4a23-944c-1eb5ddb2deee 4061158343uint64__min$f38314a9-aaa0-47b1-8175-b88faad4b296 3984229475 int64__max$0d9bcbbc-7c0b-403c-afcc-ba79b0a580ab 3479610202uint64__max$611c06e1-6846-4ba2-82b4-76c65f121ab0 2541544546uint64__xor$367ed89a-2489-42df-ab7c-864d2f1d2f78 721305799uint64__and$c5a4df4a-a8a2-4c18-a05f-5857c4899a0c 2965688650 uint64__or$32a1c099-4e89-49fc-b341-847a90f50e30 2371146893uint64__not$b178ef7a-1592-434b-b462-6c46fac2c8a4 1107659532 uint64__eq$cea9db66-1a76-4c47-b9a0-6577ad6e4e74 480444143¡ uint64__ne¢$a5ae5f79-8207-4854-943b-288c0a7d2b9b£ 2021617967¤ uint64__lt¥$2c377459-e121-40b9-9e5a-1118a48f743d¦ 1054973575§ uint64__le¨$ae239119-6f5f-4534-a1ee-b390262a39a3© 3255836883ª uint64__gt«$1450c7da-db41-485f-83a7-d6227fc55a01¬ 2223951739 uint64__ge®$20395126-4d3f-43d9-9df8-5b21c66b6dcb¯ 863509285° int64__eq±$e8ff23a5-d7c7-48b8-805a-b0c01e09cce3² 881440595³ int64__ne´$18d11e8b-afdf-443e-82d2-046d71021018µ 238341524¶ int64__lt·$35ead342-0197-4bd8-ba6f-d3002ea536e8¸ 3414395280¹ int64__leº$0a31942a-efba-4ddf-9c0d-7d4e887ec3ca» 701077656¼ int64__gt½$b93d8de7-8cc7-458d-b76b-54805d224bf8¾ 3967736988¿ int64__geÀ$e3fa00fa-76dc-48d3-b18d-70546f8817d1Á 1867067789 int64__absÃ$83f47c43-8882-441b-809f-1bf3202ee267Ä 3263826000Åuint64__rolÆ$d9ff9b48-8cb1-41b0-92d2-319173b767fcÇ 3062520787Èuint64__rorÉ$8292f004-04fa-4067-bf44-2dd2c43db842Ê 3322149652Ëuint64__shlÌ$4f5894be-5a41-4c9b-8659-e81c12575fc4Í 2986584215Îuint64__shrÏ$821a527f-8831-4a09-b5da-58ca3b768f66Ð 2726094904Ñ uint64__limitÒ$26311cc1-5920-4260-9336-be3754cf23cfÓ 2206011875Ôint64__limitÕ$b3a15fa1-b9b4-4cad-91f6-3fd673edbae6Ö 1272716029× int64__shrØ$427ca261-109e-4d61-a08b-24f6068e58daÙ 655075154Ú get__ltimeÛ$aeaaf22a-a260-4bac-83d9-18ff949be644Ü 3183966539Ýreal32__to__real64Þ$9673b4f8-36d6-42ee-b5ca-e06e2602fab5ß 3519950284àreal64__to__real32á$68d11de2-a882-4f63-8e95-577fbe97dbefâ 2972115768ãreal64__to__any32ä$51322543-1fa0-4892-92ab-c1559ce724faå 2081721515æany32__to__real64ç$48ba7277-d0f9-4a61-8d0a-cfa10c9598a2è 3454954494é real64__truncê$78aea275-8aff-407b-981c-8abf25d34255ë 3137264130ìreal64__taní$8ee3c317-6d75-4714-ab7c-ad187c5db2eeî 3753412847ïreal64__atanð$79d8c72b-fe9c-4bd0-8d79-62e93b3d01b9ñ 836685353òreal64__sinó$df65bfb9-6613-453b-b2b8-4fcb3789d916ô 352719585õreal64__asinö$dad7794c-0bfd-4662-adbc-f2c4e528d37b÷ 3054655764øreal64__cosù$22fbcf03-320c-4e2b-83ce-a942e5631489ú 546799055ûreal64__acosü$a11f5103-2691-4d71-bad3-db29bf365b4bý 3328776656þ real64__lnÿ$1c3bb0cc-2170-475c-b9b2-2c991a82ed64 698653130real64__log$9335cd5c-acb1-4e96-ad18-0076459fc955 3678959237real64__exp $4ffba013-6cc1-43e2-b6bb-6715ab108128 3062998530real64__expt$fdfe2381-2e31-4926-b6d4-4cf674ac1326 942060455real64__sqrt$4ffd7525-5270-4695-b699-ddbbc4b96fd3 3310343244 real64__eq$475d8087-1c89-48a4-8923-1690f76c80fd 2615714223 real64__ne$7229c098-2c5d-434a-9ab4-f35ad2b92202 4281675375 real64__lt$5de9e5f2-dd5e-4a6e-b860-18fd191e23ee 3115041223 real64__le$7301d2cc-2aa1-4de3-9bef-548d89987e86 1163558803 real64__gt$38f386c3-7170-454b-8528-c10a39021b2363213627 real64__ge$f9510bc1-1227-49ab-9870-64870fd1a5fb 175120083real64__add $9dc891f0-020c-40ef-b8a7-99b35c1d6808¡ 1004225947¢real64__sub£$2fd9375a-655d-4573-bd00-1bcc1c494227¤ 1979560122¥real64__mul¦$e2479120-cb69-43ba-87fa-98e33b5112c2§ 1666681994¨real64__div©$a1c7ca2c-f191-46d4-a7f5-1504f1ba9eb8ª 1943489239«real64__abs¬$99947bf9-0e45-48b1-ad7f-8efb60cecd95 4275915668®real64__min¯$fb18f571-3f0d-4f1e-9a10-9bf219caed48° 3282809609±real64__max²$7b55e231-072f-4e70-a3f9-b4b1a98c1c66³ 3952341867´ real64__limitµ$b701090f-8dde-42e6-b8fe-5f22597768ee¶ 960100917·real64__to__any64¸$d8153915-f13d-4be5-963e-2e0db8de9f44¹ 1431364689ºany64__to__real64»$97dc91e6-edb3-4c35-be5d-6e444884a6ee¼ 1535689152½__sys__rts__cycle__2¾ hTaskinfo¿$1230b333-5d6b-46b8-a973-900b5373db72À 1746117600Áexchange__and__addÂ$a39e5468-86fa-4e6d-affe-3e2e51db2150à 1630658070Ätest__and__setÅ$78879ef1-a378-4991-b06f-4f6324e3955fÆ 2102519854Çcompare__and__swapÈpAddressÉxwExpectedValueÊ xwNewValueË$84b9de1a-938d-454b-a526-1c5121467a99Ì 2355386198Í __memcopyÎpDestÏpSrcÐdwSizeÑ$9d234cab-298b-4f80-8b06-238a4ecbdbf1Ò 1888671637Ó__stringcompareÔpStr1ÕpStr2Ö$9f5705df-d2f0-46b3-8c4d-6a4d6217fac6× 2923953018Ø__wstringcompareÙ$0bea6546-230e-4059-a0c6-574c96c9dcc9Ú 826746150Û__cycle__code__TaskÜ hTaskInfoÝ&Generated, Compiled, Typified, LocatedÞ$3749207f-5699-41f4-9804-8efcd5bde69bß 450027817àLogToDeviceápMessageâ$87fa260a-0206-486b-b1c7-ddcd71ec0182ãJbreakpoint logging functions, 3.5.5.0 (3s - smart software solutions gmbh)ä''DOCU__COMMENTåä Appending of a string to a target string. The string to append and the target have both a maximum length of 255. If there is no more room in the target, the remaining characters will be missing. There won't be an error. .. cds:ranges:: :HEAD: |StringRange255| :TAIL: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] æ 3222489690çAppendToStringè& Head part of the concatenated result éHEADê% Tail part of the concatenated resultëTAILìIntíindex1î*Local, IsCompiled, RelativeStack, TypifiedïindexRetð$2534de7b-0ca5-4f62-a5ca-98671b8c49e2ñregister_in_runtimeò 1073741824óM This function has been automatically generated from the project information.ô 1469785038õ GetCompanyö$445d2084-07f9-535b-a7f3-344d40c93a36÷7sm3_basic, 4.5.1.0 (3s - smart software solutions gmbh)ø 1964895382ùGetNumberPropertyústKeyû$e295b6c9-ff6d-5381-bbee-773fd87d3204ü 1258494685ýGetTextPropertyþ$9e8e5459-88fe-5df2-ac9d-89f410214521ÿ43555609GetTextProperty2$8c17b05e-753b-53cb-bf48-4ed2a4d3062a 2163245402GetTitle$478d9b56-a0dd-5777-9b97-b6c17315dd5a 331523042VERSIONuiMajoruiMinor uiServicePackuiPatch 3231598516$5181460b-9464-4c0f-82f2-1f9633a4c34e 1518820524 2092109079 GetVersion$2fb5a435-4d43-5674-b7e5-b5caa6f2922f 1521809942GetVersionProperty$b83afbb8-9370-57ec-8097-c83762f87191 138421936GetBooleanProperty$aea8ac5b-4806-5a31-a702-d9b7848973ce5sm3_cnc, 4.5.1.0 (3s - smart software solutions gmbh) linkalways 1647294876__DataSegmentsnNumOfSegments pDataSegments __SEGMENTINFO __SegmentInfo 4060142437 __DATASEGMENTS¡$6d5ee79a-0165-410b-9a03-2dcb86d77084¢ 4207933064£2Structure, NonVirtual, Compiled, Typified, Located¤ 1489859144¥displaymode¦hex§dsKindOf¨__DATASEGMENTFLAGS©uiAreaªudOffset«udSize¬udHighestUsedAddress 176517104®$86a3bd70-f6af-446c-a3ca-d70c9d74cefb¯ 224398676° 3195237607±__BasePropertyInfo²pVarAdr³ 930619704´__BASEPROPERTYINFOµ$31ba9dec-acd8-475d-b624-39b6068c7eaf¶ 461629027· 236822733¸__PropertyInfoStruct¹pGetterºpSetter» pInstance¼ 4145388846½__PROPERTYINFOSTRUCT¾$85b65d0b-a93f-4e02-80e4-fafd3f54abc3¿ 1714484629À 3751468166Á__POUInfoStruct dwCRCCodeÃdwCRCInterfaceÄudiNameStringIndexÅusiAreaCodeLocationÆusiAreaFPPointerLocationÇudiOffsetCodeLocationÈudiOffsetFPPointerLocationÉ 519335429Ê__POUINFOSTRUCTË$8467172f-0c66-4acf-9d6b-245b2445da14Ì 2202995516Í 2428029082Î__FBInfoStructÏdwCRCVFTableÐudiAreaVFTableLocationÑudiOffsetVFTableLocationÒ 1621815094Ó__FBINFOSTRUCTÔ$1964cd27-f960-4298-b539-cf555cb4552cÕ 2130618155Ö 901311032×__MethodInfoStructØudiParentPOUIndexÙ 2699900021Ú__METHODINFOSTRUCTÛ$d277c0d4-0a58-4c92-97d1-0453f8828707Ü 3731023454Ý 2494911014Þ__DUTInfoStructß 2398341060à__DUTINFOSTRUCTá$76a1e5d2-9eb5-4a1b-a8e7-baf1b7eb9716â 1327871788ã 3489042165ä__GVLInfoStructå 1374809287æ__GVLINFOSTRUCTç$a40cb7c8-28fe-4494-89ac-d9ba39db98a8è 2456846774é 994902498êAnyTypeëpValueìdiSizeí TypeClassî TYPE_CLASSï 3543456108ðANYTYPEñ$b60a5c90-aa6c-4c3f-8332-c02981c0bf59ò 696726884ó 2125849342ô__CodeLocationStructõudiCodeSizeö 2823972544÷__CODELOCATIONSTRUCTø$bb81851c-8557-43fd-ad66-2f0071e45f53ù 802123132ú 147588528û__ImplicitReferenceTypesInitü$270c4366-521b-4273-856a-24cad42924c9ý 2353654990þ__TaskSpecificInfoÿ TaskIndex pTaskInfo 2567373613__TASKSPECIFICINFO$5f3af15b-046d-4359-9fb1-4011c841ebb0 1278195045 qualified_only 1554034293__CheckedInterfaceAssignInterfaceInput correction$09818148-288b-4e68-aaac-88d3699e851b 4255647081 __memcmp__iecptr1ptr2i$0ac70c4a-9600-4218-ba11-7d8ad957fb05 4118428513any32__to__string diExponentdwMantdiExp10pstrdiAfterKommaudPowdwTODdwDatepszHelp(Compiled, SuperGlobal, Typified, Located$52f276ac-71ea-475d-be1d-c34d7442869eF new and better way to convert single precision float values to string 812339439 new__real32__to__string¡ Area: 65535, Offset: 0x0 (0)¢index£pdw¤dw¥bSign¦decexponent§binexponent¨binmantissa©decmantissaªstrMantissaRaw«strMantissa¬pstrMantissanLen® bFirstChar¯nNewExponent°nPointPosition±nIndexMantissaNew²bNan³bInf´ExponentµbNegExponent¶nTens·nOnes¸__CONVERSION_CONSTANTS¹FºAdr»PF¼Bool½bContainsPoint¾Byte¿CHAR_0ÀFLocal, ReplacedConstant, Constant, IsCompiled, RelativeStack, TypifiedÁ CHAR_POINT CHAR_MINUSÃCHAR_EÄ$a891eece-ca29-4db8-b9cf-c1a855c9feacÅ 4263303623Æany64__to__stringÇdintHighÈudintLowÉ udintHighÊLWordËulDivÌulDigÍbFirstÎnDigitsÏnWidthÐcountÑ$3cce6ca9-0c61-42bf-9945-73fd93e91f59Ò 748513653Óreal64__to__stringÔszÕ pszSourceÖ pszHelpSource×pszDestØDIntÙnSignÚiExp10ÛnExpSignÜbSÝdiEÞliMßxNanàxInfá$2a265c59-789e-4c94-a95e-f5f70529f084â__OffsetI_TESTRESULTFORMATTERãFORMATä 1989740091åI_TestResultFormatteræ Interfaceç 3382072716èFormaté The total amount of test suitesêAmountOfTestSuitesë5 The total amount of test cases (for all test suites)ìAmountOfTestCasesí? The total amount of test cases that had all ASSERTS successfulîAmountOfSuccessfulTestCasesïC The total amount of test cases that had at least one ASSERT failedðAmountOfFailedTestCasesñBusyòI_TESTRESULTFORMATTERó$033e8873-ad7a-489b-8ba9-f0de8a344939ô$fa75ee61-43fb-4767-8061-125a3a9e3424õcfunit, 0.9.1.0 (open source)öCompiled, Typified÷__GETINTERFACEPOINTERø__GETINTERFACEREFERENCEù__MAINú__VFINITû This function block reports the results from the tests using CmpLog functionality. This sends the results into the DeviceLog ü 2677203639ýFB_LogTestResultFormatterþ FunctionBlockÿ__INTERFACEPOINTER__257None=Local, IsCompiled, RelativeInstance, NoInit, Implicit, NoCopy Although we can print a message no #1 prior to message no #2, the message #2 can still be displayed before message #1, most likely because of some delay. To workaround this, we add a small delay between each message. In CfUnit, this delay has been removed.USIntLastPrintState -Local, IsCompiled, RelativeInstance, Typified PrintState__VFTABLEPOINTER 3298891267__GetInterfacePointerpRefFB_LOGTESTRESULTFORMATTER$d14d6247-3ce3-459f-be22-6ee3520279ed 1190260893 3685989275> The total amount of test cases (for all test function blocks) ErrorCode$dba8c729-8b99-4be3-97cd-3a4fea4cd051 2457848138 486230573__GetInterfaceReferencenInterfaceId 2121478464 2899725525I_TestResultFormatter__Union__Interface5Local, Structure, IsCompiled, RelativeInstance, Union__vfTablePointer?Local, Structure, IsCompiled, RelativeInstance, Union, Typified 1286751965!Output, IsCompiled, RelativeStack Input, IsCompiled, RelativeStack I_TESTRESULTFORMATTER__UNION¡*Input, IsCompiled, RelativeStack, Implicit¢NonVirtual, Compiled, Located£\Structure, NonVirtual, Generated, Union, ImplicitInterfaceUnion, Compiled, Typified, Located¤RUNTESTSUITETESTS¥Y This function block is responsible for holding track of the tests and executing them. ¦ 707407959§FB_CfUnitRunner¨M Inidication of whether all test suites have reported that they are finished ©AllTestSuitesFinishedª3 Prints the results to Log to display the results. «LogTestResultFormatter¬TestResultPrinterG These variables (statistics) are occupied once all tests are complete ®UInt¯AmountOfTestSuitesFinished°= Indication of that the printing of test results is complete ±DonePrintingTestResults² 3420340229³FB_CFUNITRUNNER´$857e16d6-a26c-468a-935e-aa7317c263b9µ 3778827230¶ 4269434566· 398340060¸ 1236638042¹RunTestSuiteTestsºCounter»BusyPrinting¼¦ We need to hold a temporary state of the statistics (failed, successful, total amount of test cases etc) as we don't consider the tests to be completely finished until all test suites have executed completely. The reason we want to do it this way is because a test suite can run over several cycles. Only once all tests are finished (which might take many cycles), do we gather correct statistics ½AmountOfTestSuitesFinished_Temp¾AmountOfTestCases_Temp¿AmountOfFailedTestCases_TempÀ AmountOfSuccessfulTestCases_TempÁ$d333e6c4-a1da-4b5b-91b3-4b4808e6c299 530014754à external_nameÄ Task_InfoÅ m4export_hideÆ Task information out of the task configuration Task configuration menbers which are used with |IecTaskCreate| are marked with [c], status members are marked with [s]. Note for SIL2: This information is already inside of the data area, so we don't need to tag it as safe anywhere.Ç61652668È Task_Info2É! [c] Version of the structure (2)Ê dwVersionË [c] Name of the task, mandatoryÌpszNameÍ% [c] IEC priority of the task (0..31)Î nPriorityÏ9 [c] Kind of task. See corresponding category |TaskType|.Ð KindOfTaskÑ$ [c] Is TRUE, if watchdog is enabledÒ bWatchdogÓC [c] Is TRUE, if profiling is enabled (not used, FALSE recommended)Ô bProfilingÕE [c] Function pointer to the event check routine, see |IecTaskCreate|ÖdwEventFunctionPointer×7 [c] Name of the event, if it is an external event taskØpszExternalEventÙF [c] Function pointer to the task code, mandatory, see |IecTaskCreate|ÚdwTaskEntryFunctionPointerÛ [c] Watchdog sensitivityÜdwWatchdogSensitivityÝ [c] Interval in microsecondsÞ dwIntervalß" [c] Watchdog time in microsecondsàdwWatchdogTimeá5 [s] Cycle time in microseconds (last execution time)âdwCycleTimeã' [s] Average cycle time in microsecondsädwAverageCycleTimeå' [s] Maximum cycle time in microsecondsædwMaxCycleTimeç' [s] Minumum cycle time in microsecondsèdwMinCycleTimeé [s] Jitter in microsecondsêiJitterë [s] Minimal jitterì iJitterMiní [s] Maximal jitterî iJitterMaxï [s] Cycle counterðdwCycleCountñ( [s] Task state. See category TaskState.òiStateó3 [s] Number jitter statistical distribution entriesôwNumOfJitterDistributionsõ, [s] Statistical jitter distribution entriesöpJitterDistribution÷JITTER_DISTRIBUTIONøJitter_Distributionù [s] Timeslicing enabledúbTimeSlicingûbyDummyüwDummyý- [s] Cycle counter for execution of user codeþdwIECCycleCountÿ 2750948561 TASK_INFO2$a1e9fbd6-93bf-46b3-bfe6-3b3118b8971acmpiectask, 3.5.14.0 (system)) reads the taskinfo from the current task 380229896 GetCurTaskInfopCurTask CMPIECTASK CmpIecTaskRTS_IEC_HANDLEpResultpCurTaskInfoCurTaskInfo.Output, IsCompiled, RelativeInstance, Typified 4105761433GETCURTASKINFO$21adb24c-373e-4435-8059-bba210563e99 2413748294 1915908239 4214002233 2906446323GETNAMEISFAILED ISFINISHED SETFAILEDSETFINISHEDSETNAME; This function block holds all data that defines a test. 197467033FB_TestTestNameT_MAXSTRING T_MaxString¡C Indication of whether this test has had at least one failed assert¢ TestHasFailed£TestHasFinished¤ 2582292532¥ IsFinished¦FB_TEST§$813a9067-b864-4739-9c14-830160e0eabc¨$a51e9086-33ec-4162-acad-93a76961e893© 3079764566ª 423273558« 2594211687¬ 3881623904 3180690025®SetName¯Name°$4c12f6eb-bbe4-4872-ac89-4411e2e81414± 3873235943² SetFailed³$b840b41b-4045-4fd9-b97d-0bf226c46fb3´ 1977553996µIsFailed¶$e42409e3-251f-4133-8b14-3630785983d6· 2103648522¸ 1314032143¹GetNameº$94757f0e-9979-49d0-ad9f-e35c823175d4» 3133059768¼SetFinished½$e1245d1c-be22-4d60-bc91-fe0262827234¾Á Detects a rising edge of a boolean signal .. code-block:: codesys (* Example declaration *) RTRIGInst : R_TRIG ; (* Example in ST *) RTRIGInst(CLK := VarBOOL1); VarBOOL2 := RTRIGInst.Q; .. cds:ranges:: :CLK: [TRUE,FALSE] :~CLK_OLD: [TRUE,FALSE] :Q: [TRUE,FALSE] ¿hide_all_localsÀ 754564685ÁR_TRIG Boolean signal to be checkedÃCLKÄ-Input, IsCompiled, RelativeInstance, TypifiedÅ ``TRUE``: Rising edge detectedÆQÇMÈ 3552750443É$752f4be3-bcd1-4b9f-8c29-de66d869ade4Ê 2057466445Ë 2279655128Ì 725723096Í 2849467804Îstandard, 3.5.14.0 (system)Ï 227646264ÐU_ExpectedOrActualÑboolExpectedOrActualÒbitExpectedOrActualÓbyteExpectedOrActualÔdwordExpectedOrActualÕlwordExpectedOrActualÖstringExpectedOrActual×udintExpectedOrActualØuintExpectedOrActualÙusintExpectedOrActualÚsintExpectedOrActualÛintExpectedOrActualÜwordExpectedOrActualÝdintExpectedOrActualÞlintExpectedOrActualßulintExpectedOrActualàrealExpectedOrActualálrealExpectedOrActualâwstringExpectedOrActualãtimeExpectedOrActualältimeExpectedOrActualådateExpectedOrActualædateandtimeExpectedOrActualçtimeofdayExpectedOrActualè25436326éU_EXPECTEDORACTUALê$539c30a7-a560-469c-8422-aaf8c09f45d9ë9Structure, NonVirtual, Union, Compiled, Typified, Locatedì 2825047456íST_AssertResultîExpectedïActualðMessageñTestInstancePathò 1612349127óST_ASSERTRESULTô$63e20a3e-c451-4aff-a3c2-cc9b3a584290õ 1583981908öST_AssertResultInstances÷AssertResultø* Amount of instances of the "AssertResult"ùDetectionCountúD Amount of instance of the "AssertResult" in this specific PLC-cycleûDetectionCountThisCycleü93536004ýST_ASSERTRESULTINSTANCESþ$018c91ab-7038-42ef-b6e4-5007ea06204fÿADDASSERTRESULT3COPYDETECTIONCOUNTANDRESETDETECTIONCOUNTINTHISCYCLECREATEASSERTRESULTINSTANCEGETDETECTIONCOUNTGETDETECTIONCOUNTTHISCYCLE$INCREASEDETECTIONCOUNTTHISCYCLEBYONE REPORTRESULTý This function block is responsible for keeping track of which asserts that have been made. The reason we need to keep track of these is because if the user does the same assert twice (because of running a test suite over several PLC-cycles) we want to know it so we don't print several times (if the assert fails). An instance of an assert is keyed/identified with the following parameters as key: - Value of expected - Value of actual - Message (string) - Test instance path (string) 2083454144FB_AssertResultStatic<The total amount of instances of each of the "AssertResults" AssertResultsGVL_PARAM_CFUNITGVL_Param_CfUnitMaxAmountOfAsserts# The total amount of unique assertsTotalAsserts- Function block to get the current task cycleGetCurrentTaskIndex= The total amount of instances of each of the "AssertResults"AssertResultInstances The last PLC cycle count CycleCount Only run first cycleFirstCycleExecuted 1249903082FB_ASSERTRESULTSTATIC$9683a633-879e-475e-a97f-0742f9ecfd04 692841312 1389387818 23729146033CopyDetectionCountAndResetDetectionCountInThisCycleIteratorCounter $Compiled, Typified, Located, Private¡$a8cc95e0-191e-40c8-a6bc-8d58d9231bfa¢ hasanytype£ 324331413¤$IncreaseDetectionCountThisCycleByOne¥uselocation¦Expected.pValue§Expected__pValue¨2Local, IsCompiled, RelativeStack, NoInit, Typified©Expected.TypeClassªExpected__typeClass«Expected.diSize¬Expected__sizeOfanytypeclass®ANY¯ Actual.pValue°Actual__pValue±Actual.TypeClass²Actual__typeClass³ Actual.diSize´Actual__sizeOfµ$b4a5f59b-b092-46e9-a592-20ecca6c06c9¶ 1534235042· 1576367466¸ 875312424¹CreateAssertResultInstanceº$0e48fb23-038c-40ed-90ff-ee834be2653d» 4040583768¼GetDetectionCountThisCycle½$9f89a925-0785-44b9-83cb-36f87d5bc546¾ 1863076118¿GetDetectionCountÀ$75f01348-487a-4441-a0e3-f41feb6c1781Á¸ This method is called in every assert and returns whether this particular assert has already been called. The reason one would like to know whether this assert has already been reported or not is to not report it several times to any logging service. Because a test-suite can consist of several tests, and certain tests can require the test to run over several cycles it means that certain asserts could be called several times and thus we need to keep track of which asserts we've already reported. The user of the framework should not need to care for any of this and he/she should be able to call the asserts in any way they FIND suitable. To know what assert this is we need to check for the total combination of: - Test message - Test instance path - Expected value - Actual value Theoretically we can have a situation where a test has three different asserts, each and one with the same test message/test instance path/actual value/expected value but called within the same or different cycles. In order for us to handle all situations we need a simple algorithm that works according to: - Keep track of how many instances the combination of test message/test instance path/expected value/actual value we have. So for example, if we have called Assert(Exp := 5, Act := 5, 'Hello there', 'PRG.InstanceTestSuite.Test') two times in one cycle, we have two instances of that combination. This is done according to: - Iterate all existing reports. - If we have a new PLC-cycle, set the current detection-count to zero. - If new report does not match in any of the above fields, create it (together with current PLC-cycle). Also store the information that we have one instance of this combination and +1 on the detection-count. - If new report matches in all of the above, +1 in the detection-count. If this detection-count is larger than the stored detection-count for this combination, create a new report and add +1 to the storage of the detection-count.  2144796275ÃReportResultÄAlreadyReportedÅ LocationIndexÆDataTypesNotEqualsÇDataSizeNotEqualsÈDataContentNotEqualsÉCurrentCycleCountÊDetectionCountTempËFoundOneÌAdditionalIdenticalAssertÍ$675e4dfe-54f1-4dc0-a6fd-481bc63973c5Î 3239381763ÏAddAssertResultÐ$22afb213-95b2-4bfd-ada6-e7cf020d9c1dÑ 3525697315ÒST_AssertArrayResultÓ% Size in bytes of the expecteds-arrayÔ ExpectedsSizeÕ% The data type of the expecteds-arrayÖExpectedsTypeClass× TYPECLASSØ# Size in bytes of the actuals-arrayÙActualsSizeÚ# The data type of the actuals-arrayÛActualsTypeClassÜ 2307666740ÝST_ASSERTARRAYRESULTÞ$a97be192-7eab-4934-bf94-f1c1e71902f6ß 1707683493àST_AssertArrayResultInstancesáAssertArrayResultâ/ Amount of instances of the "AssertArrayResult"ãI Amount of instance of the "AssertArrayResult" in this specific PLC-cycleä 2861258322åST_ASSERTARRAYRESULTINSTANCESæ$32c33d09-e3c1-4756-8559-edad569b31f5çADDASSERTARRAYRESULTèï This function block is responsible for keeping track of which array-asserts that have been made. The reason we need to keep track of these is because if the user does the same assert twice (because of running a test suite over several PLC-cycles) we want to know it so we don't print several times (if the assert fails). An instance of an array-assert is keyed/identified with the following parameters as key: - Array-size (in bytes) of the expecteds - Datatype of the expecteds - Array-size (in bytes) of the actuals - Datatype of the actuals - Message (string) - Test instance path (string) é 285741936êFB_AssertArrayResultStaticëC The total amount of instances of each of the "AssertArrayResults" ìAssertArrayResultsí$ The total amount of unique asserts îTotalArrayAssertsï. Function block to get the current task cycle ðAssertArrayResultInstancesñ The last PLC cycle count ò Only run first cycle ó 3879263428ôFB_ASSERTARRAYRESULTSTATICõ$b20832df-51fb-47f1-8077-6f683834a939ö 4126057407÷ 2905686437ø 4129591207ù$a7fb8083-d80a-4b1b-8816-a954d21029f6ú 4220474593û 2080793920ü 2799846253ý$f9a4ac71-1920-4a28-b414-2ab956ba44baþ 2199397778ÿ$a67f455d-9f04-4265-a3ae-ec73cfedab30 1425005247 $da11a180-ba29-4114-ba12-6fb4c00ea850 ¸ This method is called in every assert and returns whether this particular assert has already been called. The reason one would like to know whether this assert has already been reported or not is to not report it several times to any logging service. Because a test-suite can consist of several tests, and certain tests can require the test to run over several cycles it means that certain asserts could be called several times and thus we need to keep track of which asserts we've already reported. The user of the framework should not need to care for any of this and he/she should be able to call the asserts in any way they FIND suitable. To know what assert this is we need to check for the total combination of: - Test message - Test instance path - Expecteds size (in bytes) - Actuals size (in bytes) - Expecteds datatype - Actuals datatype Theoretically we can have a situation where a test has three different asserts, each and one with the same test message/test instance path/actuals size&datatype/expecteds size&datatype but called within the same or different cycles. In order for us to handle all situations we need a simple algorithm that works according to: - Keep track of how many instances the combination of test message/test instance path/expecteds size&datatype/ actuals size&datatype we have. So for example, if we have called Assert(Exp := [5,4,3], Act := [5,4,3], 'Hello there', 'PRG.InstanceTestSuite.Test') two times in one cycle, we have two instances of that combination. This is done according to: - Iterate all existing reports. - If we have a new PLC-cycle, set the current detection-count to zero. - If new report does not match in any of the above fields, create it (together with current PLC-cycle). Also store the information that we have one instance of this combination and +1 on the detection-count. - If new report matches in all of the above, +1 in the detection-count. If this detection-count is larger than the stored detection-count for this combination, create a new report and add +1 to the storage of the detection-count. 334711663 $9acdaaa9-94c5-4747-8072-7b7279f5cd81 2602585500 $909102be-4739-47e1-abb5-2b1a0d9602c4 1114810495 AddAssertArrayResult $60d61a50-adb0-4323-b700-3d64bcdd7ef0 __OffsetI_ASSERTMESSAGEFORMATTER LOGASSERTFAILURE 355528328 I_AssertMessageFormatter 4291550583 LogAssertFailure I_ASSERTMESSAGEFORMATTER $35efab01-6ac8-46a5-a5e1-adb4f1f5f9b2 $71246e7e-3534-44b1-a788-c1f37427a096 ¾ This function block is responsible for printing the results of the assertions using the built-in LOGSTR functionality provided in this library. This sends the result to the DeviceLog. 856032233 FB_LogAssertMessageFormatter __INTERFACEPOINTER__437 3082900915 FB_LOGASSERTMESSAGEFORMATTER $54911d7d-b4a4-43a8-a981-a2fc14a13f71 1702637047 3821178837 498102394 2988799914 ,AdjustAssertFailureMessageToMax252CharLength /FB_ADJUSTASSERTFAILUREMESSAGETOMAX252CHARLENGTH /FB_AdjustAssertFailureMessageToMax252CharLength¡ TestInstancePathCleaned¢ TestInstancePathFinal£ ReturnValue¤ TestInstancePathProcessed¥ MessageProcessed¦ $48cbc6b0-5380-44b8-a045-57b6ad9f189d§ 4086985287¨ 694510288© I_AssertMessageFormatter__Unionª 1092183428« I_ASSERTMESSAGEFORMATTER__UNION¬ ADDTEST ADDTESTNAMETOINSTANCEPATH® ALLTESTSFINISHED¯ ASSERTARRAY2DEQUALS_LREAL° ASSERTARRAY2DEQUALS_REAL± ASSERTARRAY3DEQUALS_LREAL² ASSERTARRAY3DEQUALS_REAL³ ASSERTARRAYEQUALS_BOOL´ ASSERTARRAYEQUALS_BYTEµ ASSERTARRAYEQUALS_DINT¶ ASSERTARRAYEQUALS_DWORD· ASSERTARRAYEQUALS_INT¸ ASSERTARRAYEQUALS_LINT¹ ASSERTARRAYEQUALS_LREALº ASSERTARRAYEQUALS_LWORD» ASSERTARRAYEQUALS_REAL¼ ASSERTARRAYEQUALS_SINT½ ASSERTARRAYEQUALS_UDINT¾ ASSERTARRAYEQUALS_UINT¿ ASSERTARRAYEQUALS_ULINTÀ ASSERTARRAYEQUALS_USINTÁ ASSERTARRAYEQUALS_WORD ASSERTEQUALSà ASSERTEQUALS_BOOLÄ ASSERTEQUALS_BYTEÅ ASSERTEQUALS_DATEÆ ASSERTEQUALS_DATE_AND_TIMEÇ ASSERTEQUALS_DINTÈ ASSERTEQUALS_DWORDÉ ASSERTEQUALS_INTÊ ASSERTEQUALS_LINTË ASSERTEQUALS_LREALÌ ASSERTEQUALS_LTIMEÍ ASSERTEQUALS_LWORDÎ ASSERTEQUALS_REALÏ ASSERTEQUALS_SINTÐ ASSERTEQUALS_STRINGÑ ASSERTEQUALS_TIMEÒ ASSERTEQUALS_TIME_OF_DAYÓ ASSERTEQUALS_UDINTÔ ASSERTEQUALS_UINTÕ ASSERTEQUALS_ULINTÖ ASSERTEQUALS_USINT× ASSERTEQUALS_WORDØ ASSERTFALSEÙ ASSERTTRUEÚ FINDTESTSUITEINSTANCEPATHÛ GETAMOUNTOFFAILEDTESTSÜ GETAMOUNTOFSUCCESSFULTESTSÝ GETAMOUNTOFTESTSÞ GETINSTANCEPATHß SETTESTFAILEDà SETTESTFINISHEDá call_after_initâ reflectionã Á This function block is responsible for holding the internal state of the test suite. Every test suite can have one or more tests, and every test can do one or more asserts. Itâs also responsible for providing all the assert-methods for asserting different data types. Only failed assertions are recorded. ä 2043484281å FB_TestSuiteæ instance-pathç noinitè InstancePathé 5Local, IsCompiled, RelativeInstance, NoInit, Typifiedê Ê We need to have access to specific information of the current task that this test suite is executed in. This is for instance necessary when we need to know whether a test is defined already. The definition of a test that is defined already is that we call on it with the same name twice in the same cycle ë NumberOfTestsì Testsí MaxAmountOfTestsForEachTestSuiteî Rising trigger of whether we have already notified the user of that the test name pointed to by the current position is a duplicate ï TestDuplicateNameTriggerð Last cycle count index for a specific test. Used to detect whether this test has already been defined in the current test suite ñ TestCycleCountIndexò Prints the failed asserts to DeviceLog to display the assert message. This assert formatter can be replaced with something else than the DeviceLog ó LogAssertMessageFormatterô AssertMessageFormatterõ 902185581ö FB_TESTSUITE÷ $f80c23f2-119d-406b-ae11-06d1991bf64dø ¼ Parameters: | Expecteds â LREAL 3d array with expected values | Actuals â LREAL 3d array with actual values | Delta - LREAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive test2 here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing test1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing test2 here> TEST_FINISHED();ù 2739881928ú AssertArray3dEquals_LREALû $ LREAL 3d array with expected valuesü variable_length_arrayý Dimensionsþ 3ÿ Expecteds " LREAL 3d array with actual values Actuals ¤ The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell Delta 0 The identifying message for the assertion error Equals SizeEquals ExpectedString ActualString & Index when looping through Dimensions DimensionIndex 2 Lower bounds of Expecteds array in each dimension LowerBoundExpecteds 2 Upper bounds of Expecteds array in each dimension UpperBoundExpecteds 0 Lower bounds of Actuals array in each dimension LowerBoundActuals 0 Upper bounds of Actuals array in each dimension UpperBoundActuals * Size of Expecteds array in each dimension SizeOfExpecteds ( Size of Actuals array in each dimension SizeOfActuals ? Current Array index offsets from Lower Bound in each dimension Offset D Array of current Expected array indexes when looping through arrays ExpectedArrayIndex B Array of current Actual array indexes when looping through arrays ActualArrayIndex Single expected value Single actual value implicit_input Expecteds__Array__Info¡ __ARRAY__DIM__INFO¢ Actuals__Array__Info£ $251da4d5-4df8-4eed-b154-a479323eb0d5¤ ð | Asserts that two BOOLs are equal. If they are not, an assertion error is created. Parameters: | Expected â BOOL expected value | Actual â BOOL actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : BOOL := TRUE; b : BOOL := TRUE; END_VAR TEST('Test_BOOL_Equals'); AssertEquals_BOOL(Expected := a, Actual := b, Message := 'Bools differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : BOOL := TRUE; b : BOOL := FALSE; END_VAR TEST('Test_BOOL_Differ'); AssertEquals_BOOL(Expected := a, Actual := b, Message := 'Bools differ'); TEST_FINISHED();¥ 741724600¦ AssertEquals_BOOL§ BOOL expected value¨ BOOL actual value© $0c41b405-ea35-4450-93cc-7c3349bdf754ª È | Asserts that two WORD arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â WORD array with expected values | Actuals â WORD array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE]; b : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE]; END_VAR TEST('Test_WORD_Array_Equals'); AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..5] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB]; b : ARRAY[1..7] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB, 16#FFFF, 16#1122]; END_VAR TEST('Test_WORD_Array_DifferInSize'); AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1133]; b : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1122]; END_VAR TEST('Test_WORD_Array_DifferInContent'); AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();« 2964612237¬ AssertArrayEquals_WORD WORD array with expected values® 1¯ WORD array with actual values° Index± ExpectedDWordString² ActualDWordString³ ExpectedsIndex´ ActualsIndexµ $16eada18-ce2b-459d-a8d9-277e84766935¶ Ä | Asserts that two STRINGs are equal. If they are not, an assertion error is created. Parameters: | Expected â STRING expected value | Actual â STRING actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : STRING := 'Hello there'; b : STRING := 'Hello there'; END_VAR TEST('Test_STRING_Equals'); AssertEquals_STRING(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : STRING := 'This is a string'; b : STRING := 'This is another string'; END_VAR TEST('Test_STRING_Differ'); AssertEquals_STRING(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); · 3117031323¸ AssertEquals_STRING¹ STRING expected valueº STRING actual value» $cad7fed3-5db3-4371-9240-856c3c740489¼ | Asserts that two ULINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â ULINT expected value | Actual â ULINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ULINT := 45683838383; b : ULINT := 45683838383; END_VAR TEST('Test_ULINT_Equals'); AssertEquals_ULINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : ULINT := 10000; b : ULINT := 53685437234; END_VAR TEST('Test_ULINT_Differ'); AssertEquals_ULINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();½ 1533126720¾ AssertEquals_ULINT¿ ULINT expected valueÀ ULINT actual valueÁ $6f1e7566-33c3-4f9c-b92d-7828feb26211 | Asserts that a condition is true. If it is not, an assertion error is created. Parameters: | Condition â Condition to be checked | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : WORD := 16#ABCD; b : WORD := 16#0123; END_VAR TEST('AssertThatWORDsAreNotEqual'); AssertTrue(Condition := (a <> b), Message := 'WORDs are equal'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : WORD := 16#ABCD; b : WORD := 16#0123; END_VAR TEST('AssertThatWORDsAreEqual'); AssertTrue(Condition := (a = b), Message := 'WORDs are not equal'); TEST_FINISHED();à 1814216526Ä AssertTrueÅ Condition to be checkedÆ ConditionÇ $c415013c-c271-42ba-83ad-6c2c653d8f2eÈ 3257275533É GetAmountOfFailedTestsÊ FailedTestsCountË $12e4522b-e67f-439a-af1d-8713231888aaÌ | Asserts that two BYTE arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â BYTE array with expected values | Actuals â BYTE array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E]; b : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E]; END_VAR TEST('Test_BYTE_Array_Equals'); AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..2] OF BYTE := [16#AB, 16#CD]; b : ARRAY[1..5] OF BYTE := [16#AB, 16#CD, 16#EF, 16#01, 16#23]; END_VAR TEST('Test_BYTE_Array_DiffersInSize'); AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..3] OF BYTE := [16#AB, 16#AA, 16#BB, 16#89]; b : ARRAY[0..3] OF BYTE := [16#AB, 16#CD, 16#BB, 16#89]; END_VAR TEST('Test_BYTE_Array_DiffersInContent'); AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();Í 3366653025Î AssertArrayEquals_BYTEÏ BYTE array with expected valuesÐ BYTE array with actual valuesÑ ExpectedByteStringÒ ActualByteStringÓ $375a5287-a3e9-4833-ac17-bab8f3f0fdc9Ô 3352982536Õ SetTestFailedÖ $3adab5a4-e3e4-4dd7-8096-bf6ad3b874d9× ý | Asserts that two WORDs are equal. If they are not, an assertion error is created. Parameters: | Expected â WORD expected value | Actual â WORD actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : WORD := 16#ABCD; b : WORD := 16#ABCD; END_VAR TEST('Test_WORD_Equals'); AssertEquals_WORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : WORD := 16#EF01; b : WORD := 16#2345; END_VAR TEST('Test_WORD_Differ'); AssertEquals_WORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Ø 845481049Ù AssertEquals_WORDÚ WORD expected valueÛ WORD actual valueÜ $85132cdb-0553-4070-be9a-976fcddd873dÝ Þ | Asserts that two ULINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â ULINT array with expected values | Actuals â ULINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000]; b : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000]; END_VAR TEST('Test_ULINT_Array_Equals'); AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..1] OF ULINT := [0, 9_400_000_000_000]; b : ARRAY[0..0] OF ULINT := [0]; END_VAR TEST('Test_ULINT_Array_DifferInSize'); AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 9_400_000_000_000]; b : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 18_446_744_073_709_551_615]; END_VAR TEST('Test_ULINT_Array_DifferInContent'); AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();Þ 1925503454ß AssertArrayEquals_ULINTà ! ULINT array with expected valuesá ULINT array with actual valuesâ $916529a0-57b3-4947-a5b8-e7b9ff17f35fã 171176124ä | Asserts that two LINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â LINT expected value | Actual â LINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LINT := -123456789; b : LINT := -123456789; END_VAR TEST('Test_LINT_Equals'); AssertEquals_LINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LINT := -451416345; b : LINT := 589532453; END_VAR TEST('Test_LINT_Differ'); AssertEquals_LINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();å 1613096602æ AssertEquals_LINTç LINT expected valueè LINT actual valueé $9dc34017-cbc7-41a9-83a2-941f39cc7271ê 3103726108ë | 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. Parameters: | Expected â Expected value | Actual â Actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : INT := 5; b : INT := 5; END_VAR TEST('Test_ANY_Equals'); AssertEquals(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : INT := 5; b : UINT := 5; END_VAR TEST('Test_ANY_Differ_DataType'); AssertEquals(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ì 2234915396í AssertEqualsî Expected valueï $ The value to check against expectedð Countñ ExpectedDataStringò ActualDataStringó AnyComparatorô FB_ANYCOMPARATORõ FB_AnyComparatorö boolExpected÷ boolActualø byteExpectedù byteActualú dateExpectedû dateActualü dateAndTimeExpectedý dateAndTimeActualþ dintExpectedÿ dintActual dwordExpecteddwordActualintExpected intActuallintExpected lintActual lrealExpectedlrealActual ltimeExpectedltimeActual lwordExpectedlwordActualrealExpected realActualsintExpected sintActualstringExpectedstringActualtimeExpected timeActualtimeOfDayExpectedtimeOfDayActual udintExpectedudintActualuintExpected uintActual ulintExpectedulintActual usintExpectedusintActualwordExpected wordActual $092092ee-35b6-45cc-a1ac-e428e5d747ba¡ª | Asserts that two TIME_OF_DAYs are equal. If they are not, an assertion error is created. Parameters: | Expected â TIME_OF_DAY expected value | Actual â TIME_OF_DAY actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; END_VAR TEST('Test_TIME_OF_DAY_Equals'); AssertEquals_TIME_OF_DAY(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : TIME_OF_DAY := TIME_OF_DAY#15:36:30.123; b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; END_VAR TEST('Test_TIME_OF_DAY_Differ'); AssertEquals_TIME_OF_DAY(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();¢ 420776148£AssertEquals_TIME_OF_DAY¤ TIME_OF_DAY expected value¥ TIME_OF_DAY actual value¦$d892dd01-3d32-4eb1-9f95-980dff16616c§ô | Asserts that two USINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â USINT expected value | Actual â USINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : USINT := 5; b : USINT := 5; END_VAR TEST('Test_USINT_Equals'); AssertEquals_USINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : USINT := 3; b : USINT := 7; END_VAR TEST('Test_USINT_Differ'); AssertEquals_USINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();¨ 2519788779©AssertEquals_USINTª USINT expected value« USINT actual value¬$7f12117a-f0ab-475b-ba47-c8a5c801a9ac² | Asserts that two DINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â DINT array with expected values | Actuals â DINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538]; b : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538]; END_VAR TEST('Test_DINT_Array_Equals'); AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[3..4] OF DINT := [-11, 2147483647]; b : ARRAY[4..6] OF DINT := [-11, 2147483647, 0]; END_VAR TEST('Test_DINT_Array_DifferInSize'); AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[3..5] OF DINT := [-4746, -2147483645, 0]; b : ARRAY[3..5] OF DINT := [-4746, -2147483641, 0]; END_VAR TEST('Test_DINT_Array_DifferInContent'); AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();® 1001631274¯AssertArrayEquals_DINT° DINT array with expected values± DINT array with actual values²$4f0d9b20-0c78-467d-a52a-6badbd5d37cc³ | Asserts that two LREALs are equal to within a positive delta. If they are not, an assertion error is created. Parameters: | Expected â LREAL expected value | Actual â LREAL actual value | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Equals'); AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.2, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Differ'); AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); TEST_FINISHED(); ´ 4213307678µAssertEquals_LREAL¶ LREAL expected value· LREAL actual value¸v The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal¹$205d107c-0a2d-44f7-b68a-eb06720b6a6bº¹ Parameters: | Expecteds â REAL 3d array with expected values | Actuals â REAL 3d array with actual values | Delta - REAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive test2 here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing test1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing test2 here> TEST_FINISHED();» 3532111388¼AssertArray3dEquals_REAL½# REAL 3d array with expected values¾! REAL 3d array with actual values¿$0dc8fccf-4b9a-4206-8d9f-212f576edb04ÀÑ | Asserts that two USINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â USINT array with expected values | Actuals â USINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..100] OF USINT := [42, 100(33)]; b : ARRAY[0..100] OF USINT := [42, 100(33)]; END_VAR TEST('Test_USINT_Array_Equals'); AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..100] OF USINT := [101(42)]; b : ARRAY[0..70] OF USINT := [71(42)]; END_VAR TEST('Test_USINT_Array_DifferInSize'); AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..10] OF USINT := [0,1,2,3,6(4),5]; b : ARRAY[0..10] OF USINT := [0,1,2,3,6(5),6]; END_VAR TEST('Test_USINT_Array_DifferInContent'); AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();Á 2334199940ÂAssertArrayEquals_USINTÃ! USINT array with expected valuesÄ USINT array with actual valuesÅ$b3215098-2f26-48bf-a7e4-ee1a0803a968Æ 3498222671ÇAddTestNameToInstancePathÈCompleteTestInstancePathÉ$abecfe2f-b0e2-4118-a1c6-bb248556b776Ê= Searches for the instance path of the calling function blockË 2007265447ÌFindTestSuiteInstancePathÍ$e69a4510-81a2-4d65-94e4-52c06ac49944ι Parameters: | Expecteds â REAL 2d array with expected values | Actuals â REAL 2d array with actual values | Delta - REAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive test2 here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing test1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing test2 here> TEST_FINISHED();Ï 2086273169ÐAssertArray2dEquals_REALÑ# REAL 2d array with expected valuesÒ2Ó! REAL 2d array with actual valuesÔ$dc3b5666-7b5a-49ae-9837-cbb9bedd911aÕé | Asserts that two INTs are equal. If they are not, an assertion error is created. Parameters: | Expected â INT expected value | Actual â INT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : INT := -12345; b : INT := -12345; END_VAR TEST('Test_INT_Equals'); AssertEquals_INT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : INT := -32000; b : INT := 15423; END_VAR TEST('Test_INT_Differ'); AssertEquals_INT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Ö 3654937006×AssertEquals_INTØ INT expected valueÙ INT actual valueÚ$7c61106e-9bcd-4577-a949-ab96d8862e41Û 4288444846ÜGetAmountOfSuccessfulTestsÝ$635213dc-96ca-4be6-9c0d-c0454c29d34dÞ¤ | Asserts that two DATEs are equal. If they are not, an assertion error is created. Parameters: | Expected â DATE expected value | Actual â DATE actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DATE := DATE#1996-05-06; b : DATE := DATE#1996-05-06; END_VAR TEST('Test_DATE_Equals'); AssertEquals_DATE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DATE := DATE#1996-05-06; b : DATE := DATE#2019-01-20; END_VAR TEST('Test_DATE_Differ'); AssertEquals_DATE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); ß 1846796480àAssertEquals_DATEá DATE expected valueâ DATE actual valueã$1645ab79-f969-41aa-a170-f589a5757e7fäé | Asserts that two REALs are equal to within a positive delta. If they are not, an assertion error is created. Parameters: | Expected â REAL expected value | Actual â REAL actual value | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Equals'); AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Differ'); AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.05, Message := 'Values differ'); TEST_FINISHED();å 2728596166æAssertEquals_REALç REAL expected valueè REAL actual valueé$fba4feaf-27d0-4f8b-9014-3895f7bb9cc7ê | Asserts that two UDINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â UDINT expected value | Actual â UDINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : UDINT := 21845123; b : UDINT := 21845123; END_VAR TEST('Test_UDINT_Equals'); AssertEquals_UDINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : UDINT := 34124214; b : UDINT := 52343244; END_VAR TEST('Test_UDINT_Differ'); AssertEquals_UDINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ë 3329528385ìAssertEquals_UDINTí UDINT expected valueî UDINT actual valueï$9c21e8db-62d7-4e5c-8e00-cd508f4f5abcðþ | Asserts that two LTIMEs are equal. If they are not, an assertion error is created. Parameters: | Expected â LTIME expected value | Actual â LTIME actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LTIME := LTIME#213503D23H34M33S709MS551US615NS; b : LTIME := LTIME#213503D23H34M33S709MS551US615NS; END_VAR TEST('Test_LTIME_Equals'); AssertEquals_LTIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LTIME := LTIME#213503D23H34M33S709MS551US615NS; b : LTIME := LTIME#1000D15H23M12S34MS2US44NS; END_VAR TEST('Test_LTIME_Differ'); AssertEquals_LTIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ñ 2897700765òAssertEquals_LTIMEó LTIME expected valueô LTIME actual valueõ$05ea6378-c553-40a9-9e6b-8f3736f63098ö· | Asserts that two SINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â SINT array with expected values | Actuals â SINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..3] OF SINT := [-128, 127, -34, 62]; b : ARRAY[0..3] OF SINT := [-128, 127, -34, 62]; END_VAR TEST('Test_SINT_Array_Equals'); AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..0] OF SINT := [-128]; b : ARRAY[0..1] OF SINT := [-128, 127]; END_VAR TEST('Test_SINT_Array_DifferInSize'); AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..0] OF SINT := [-128]; b : ARRAY[0..0] OF SINT := [127]; END_VAR TEST('Test_SINT_Array_DifferInContent'); AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();÷ 687092469øAssertArrayEquals_SINTù SINT array with expected valuesú SINT array with actual valuesû$133c577e-0641-4157-b42b-46dbf29f788eü | Asserts that two TIMEs are equal. If they are not, an assertion error is created. Parameters: | Expected â TIME expected value | Actual â TIME actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : TIME := T#11H34M13S244MS; b : TIME := T#11H34M13S244MS; END_VAR TEST('Test_TIME_Equals'); AssertEquals_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : TIME := T#12H34M15S10MS; b : TIME := T#11H34M13S244MS; END_VAR TEST('Test_TIME_Differ'); AssertEquals_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ý 2310054264þAssertEquals_TIMEÿ TIME expected value TIME actual value$717a0cdd-16a7-4f45-90f3-f5700dba9369ì | Asserts that two DATE_AND_TIMEs are equal. If they are not, an assertion error is created. Parameters: | Expected â DATE_AND_TIME expected value | Actual â DATE_AND_TIME actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30; b : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30; END_VAR TEST('Test_DATE_AND_TIME_Equals'); AssertEquals_DATE_AND_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DATE_AND_TIME := DATE_AND_TIME#1996-05-06-15:36:30; b : DATE_AND_TIME := DATE_AND_TIME#1972-03-29-00:00:00; END_VAR TEST('Test_DATE_AND_TIME_Differ'); AssertEquals_DATE_AND_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); 113999760AssertEquals_DATE_AND_TIME DATE_AND_TIME expected value DATE_AND_TIME actual value$42befc01-2199-49e2-b7ef-cf909b8890f9 633676930AssertArrayEquals_LREAL! LREAL array with expected values LREAL array with actual values$fbc23ff0-cdf6-43f2-82cd-e6f3a7903664 | Asserts that two DWORDs are equal. If they are not, an assertion error is created. Parameters: | Expected â DWORD expected value | Actual â DWORD actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DWORD := 16#7890ABCD; b : DWORD := 16#7890ABCD; END_VAR TEST('Test_DWORD_Equals'); AssertEquals_DWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DWORD := 16#12345678; b : DWORD := 16#90ABCDEF; END_VAR TEST('Test_DWORD_Differ'); AssertEquals_DWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); 1371371786AssertEquals_DWORD DWORD expected value DWORD actual value$3ce6ba77-0ab2-46fc-a7c9-978b376b93be 3629326530FB_initH if TRUE, the retain variables are initialized (warm start / cold start)O if TRUE, the instance afterwards gets moved into the copy code (online change)$9273f5af-0583-448b-bab6-3359f03f9b91 | Asserts that two DINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â BYTE expected value | Actual â BYTE actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DINT := -80000; b : DINT := -80000; END_VAR TEST('Test_DINT_Equals'); AssertEquals_DINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DINT := -55555; b : DINT := 70000; END_VAR TEST('Test_DINT_Differ'); AssertEquals_DINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); 398443318AssertEquals_DINT DINT expected value DINT actual value$b7177b75-64df-4021-85c6-c366f61f5f89ä | Asserts that two UDINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â UDINT array with expected values | Actuals â UDINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000]; b : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000]; END_VAR TEST('Test_UDINT_Array_Equals'); AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys a : ARRAY[-5..-4] OF UDINT := [4294967295, 0]; b : ARRAY[0..2] OF UDINT := [4294967295, 0, 5000]; END_VAR TEST('Test_UDINT_Array_DifferInSize'); AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-5..-4] OF UDINT := [4294967295, 5]; b : ARRAY[0..1] OF UDINT := [4294967295, 4]; END_VAR TEST('Test_UDINT_Array_DifferInContent'); AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); 2700899206 AssertArrayEquals_UDINT¡! UDINT array with expected values¢ UDINT array with actual values£$5f690331-57e2-4ea1-b1d7-ab65b52dc848¤ | Asserts that two INT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â INT array with expected values | Actuals â INT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[-5..1] OF INT := [64, 98, -32768, 32767, 5478, -378, 42]; b : ARRAY[1..7] OF INT := [64, 98, -32768, 32767, 5478, -378, 42]; END_VAR TEST('Test_INT_Array_Equals'); AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[-4..3] OF INT := [64, 98, -32768, 32767, 5478, -378, 42, 6234]; b : ARRAY[1..5] OF INT := [64, 98, -32768, 32767, 5478]; END_VAR TEST('Test_INT_Array_DifferInSize'); AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-8..-6] OF INT := [42, -23, -32768]; b : ARRAY[1..3] OF INT := [42, 24, -32768]; END_VAR TEST('Test_INT_Array_DifferInContent'); AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();¥ 3834307937¦AssertArrayEquals_INT§ INT array with expected values¨ INT array with actual values©$d54cf111-a7e7-4f51-bdf4-9853e055f62dª | Asserts that a condition is false. If it is not, an assertion error is created. Parameters: | Condition â Condition to be checked | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : INT := -33; b : INT := -44; END_VAR TEST('AssertThatINTsAreNotEqual'); AssertFalse(Condition := (a = b), Message := 'INTs are equal'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : INT := -33; b : INT := -44; END_VAR TEST('AssertThatINTsAreEqual'); AssertFalse(Condition := (a <> b), Message := 'INTs are equal'); TEST_FINISHED(); «73141978¬AssertFalse$022665a8-9003-4aaa-8ef4-bd39fe196883®È | Asserts that two LINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â LINT array with expected values | Actuals â LINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[-1..0] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; END_VAR TEST('Test_LINT_Array_Equals'); AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55]; b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; END_VAR TEST('Test_LINT_Array_DifferInSize'); AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_853_775_808, 55]; b : ARRAY[4..6] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55]; END_VAR TEST('Test_LINT_Array_DifferInContent'); AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();¯ 1590775622°AssertArrayEquals_LINT± LINT array with expected values² LINT array with actual values³$d7e53e6b-caed-4867-9ef5-3ccb7ae16bf8´í | Asserts that two LWORD arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â LWORD array with expected values | Actuals â LWORD array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; END_VAR TEST('Test_LWORD_Array_Equals'); AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210]; b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; END_VAR TEST('Test_LWORD_Array_DifferInSize'); AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210]; b : ARRAY[1..1] OF LWORD := [16#01234567890ABCDE]; END_VAR TEST('Test_LWORD_Array_DifferInContent'); AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); µ 4016979687¶AssertArrayEquals_LWORD·! LWORD array with expected values¸ LWORD array with actual values¹$7bc0c786-fccc-46e3-b38f-2013c44bfcb0º÷ | Asserts that two UINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â UINT expected value | Actual â UINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : UINT := 65535; b : UINT := 65535; END_VAR TEST('Test_UINT_Equals'); AssertEquals_UINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : UINT := 64322; b : UINT := 32312; END_VAR TEST('Test_UINT_Differ'); AssertEquals_UINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); » 2072876926¼AssertEquals_UINT½ UINT expected value¾ UINT actual value¿$86b960b9-ebc0-46af-91ed-94a423f501dcÀ¼ | Asserts that two LWORDs are equal. If they are not, an assertion error is created. Parameters: | Expected â LWORD expected value | Actual â LWORD actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LWORD := 16#0123456789ABCDEF; b : LWORD := 16#0123456789ABCDEF; END_VAR TEST('Test_LWORD_Equals'); AssertEquals_LWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LWORD := 16#0123656789ABCBEC; b : LWORD := 16#0123256789ABCAEE; END_VAR TEST('Test_LWORD_Differ'); AssertEquals_LWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Á 2863501046ÂAssertEquals_LWORDà LWORD expected valueÄ LWORD actual valueÅ$08b090fb-911b-49fa-a51a-7f5edfd3dd2cƼ Parameters: | Expecteds â LREAL 2d array with expected values | Actuals â LREAL 2d array with actual values | Delta - LREAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive test2 here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing test1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing test2 here> TEST_FINISHED();Ç 4068978934ÈAssertArray2dEquals_LREALÉ$ LREAL 2d array with expected valuesÊ" LREAL 2d array with actual valuesË$964c2fec-9de7-47ae-bee4-23c559ae4a3fÌ 2400552134ÍGetAmountOfTestsÎ$6f67c6d5-c29e-4577-8651-51bd6db3ab63Ï | Asserts that two BOOL arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â BOOL array with expected values | Actuals â BOOL array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE]; b : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE]; END_VAR TEST('Test_BOOL_Array_Equals'); AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..6] OF BOOL := [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]; b : ARRAY[1..4] OF BOOL := [TRUE, TRUE, TRUE, TRUE]; END_VAR TEST('Test_BYTE_Array_DiffersInSize'); AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..5] OF BOOL := [TRUE, TRUE, FALSE, TRUE, FALSE, TRUE]; b : ARRAY[0..5] OF BOOL := [TRUE, TRUE, TRUE, TRUE, FALSE, FALSE]; END_VAR TEST('Test_BYTE_Array_DiffersInContent'); AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();Ð 2882148535ÑAssertArrayEquals_BOOLÒ BOOL array with expected valuesÓ BOOL array with actual valuesÔ$3d4059ab-c241-4859-9a9f-090cab6db606Õ 3891127203ÖAddTest×ErrorMessageØFunctionCallResultÙTestWithThisNameAlreadyExistsÚLowerCasedTestNameÛTrimmedTestNameÜ$d383011f-6bea-4b05-9018-ea4782ad2837Ý 1810088230ÞAssertArrayEquals_REALß REAL array with expected valuesà REAL array with actual valuesá$c42ec40e-0859-4258-a3b2-11b258dab324â | Asserts that two DWORD arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â DWORD array with expected values | Actuals â DWORD array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[2..3] OF DWORD := [16#6789ABCD, 16#EF012345]; b : ARRAY[1..2] OF DWORD := [16#6789ABCD, 16#EF012345]; END_VAR TEST('Test_DWORD_Array_Equals'); AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#67890ABC, 16#DDDDDDDD]; b : ARRAY[-3..-2] OF DWORD := [16#6789ABCD, 16#EF012345]; END_VAR TEST('Test_DWORD_Array_DifferInSize'); AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EFAA2346, 16#ABABABAB, 16#EEEEEEEE]; b : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#ABABABAB, 16#EEEEEEEE]; END_VAR TEST('Test_DWORD_Array_DifferInContent'); AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();ã 3815237450äAssertArrayEquals_DWORDå! DWORD array with expected valuesæ DWORD array with actual valuesç$eec9d02d-95a1-4885-9906-ad4b2d0f4cabè 1577461429éö | Asserts that two BYTEs are equal. If they are not, an assertion error is created. Parameters: | Expected â BYTE expected value | Actual â BYTE actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : BYTE := 16#CD; b : BYTE := 16#CD; END_VAR TEST('Test_BYTE_Equals'); AssertEquals_BYTE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : BYTE := 16#AB; b : BYTE := 16#CD; END_VAR TEST('Test_BYTE_Differ'); AssertEquals_BYTE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ê 1867854019ëAssertEquals_BYTEì BYTE expected valueí BYTE actual valueî$c039f3f1-9c41-4f5e-93a3-393ce160979aï 3050453849ðAllTestsFinishedñ$2b211901-49a8-4e51-90e1-4b1e298f9e0cò 594487417óGetInstancePathô$178fa338-5ed3-417b-8f4d-e9f120ace4b9õ 2638420974öSetTestFinished÷$1ec94335-80d7-46d3-a0f0-345f8eda2ea4øÓ | Asserts that two UINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â UINT array with expected values | Actuals â UINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59]; b : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59]; END_VAR TEST('Test_UINT_Array_Equals'); AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..2] OF UINT := [0, 4, 8]; b : ARRAY[0..3] OF UINT := [0, 4, 8, 12]; END_VAR TEST('Test_UINT_Array_DifferInSize'); AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..3] OF UINT := [0, 4, 8, 99]; b : ARRAY[0..3] OF UINT := [0, 4, 8, 12]; END_VAR TEST('Test_UINT_Array_DifferInContent'); AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();ù 2061975295úAssertArrayEquals_UINTû UINT array with expected valuesü UINT array with actual valuesý$358571ac-0a0d-4e71-8097-c7943f718fceþï | Asserts that two SINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â SINT expected value | Actual â SINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : SINT := -128; b : SINT := -128; END_VAR TEST('Test_SINT_Equals'); AssertEquals_SINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : SINT := 127; b : SINT := -30; END_VAR TEST('Test_SINT_Differ'); AssertEquals_SINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ÿ 3522167796 AssertEquals_SINT SINT expected value SINT actual value $10052dfe-cfcb-4a5a-aa97-151e272ce217 2671643726 Alias, IsCompiled, Typified Alias, Compiled, Typified $a429e267-db3b-4872-871e-1ca509b971e2 1774802008 $1f187897-1eca-4745-9dd7-6e656076701f &systypes2 interfaces, 3.5.4.0 (system) Jitter distribution 3779252147 Maximal range wRangeMax Jitters events negative wCountJitterNeg Jitter event positive wCountJitterPos 1489059357 $f914311f-5c52-4cd5-b2c8-3263a1508247 Ë This function block is responsible for making sure that the asserted test instance path and test message are not loo long. The total printed message can not be more than 252 characters long. 3001289633 Test instance path MsgFmtString Test message StringArg MsgFmtStringProcessed StringArgProcessed MsgFmtStringTemp String ...TestName too long TestNameTooLong¡ ...TestMsg too long¢ TestMsgTooLong£ X This is actually 253, but if StrArg-argument is used (which it is in TcUnit) it is 252.¤ 'MSG_FMT_STRING_MAX_AMOUNT_OF_CHARACTERS¥ ILocal, ReplacedConstant, Constant, IsCompiled, RelativeInstance, Typified¦ 228984903§ $d7648cea-fb9f-427f-b157-93784e5b7cab¨ 3505840675© 197406720ª 2734844869« 3297551346¬ 2662650258 diLower® diUpper¯ 3465986364° $c2d24aa9-2fc9-4f89-80ac-14d9f558122a± 319472823² Á This FB compares two instances of any object type and returns whether they are the same type, size and value or not. This is necessary for two reasons: 1. So that we can know exactly what differs between the two input parameters 2. It's not possible to do a comparison (= or <>) between two instances of ANY. ³ 797308994´ AnyValueOne.pValueµ AnyValueOne__pValue¶ AnyValueOne.TypeClass· AnyValueOne__typeClass¸ AnyValueOne.diSize¹ AnyValueOne__sizeOfº AnyValueOne» AnyValueTwo.pValue¼ AnyValueTwo__pValue½ AnyValueTwo.TypeClass¾ AnyValueTwo__typeClass¿ AnyValueTwo.diSizeÀ AnyValueTwo__sizeOfÁ AnyValueTwo < The data type of the two ANY input parameters are not equalà < The data size of the two ANY input parameters are not equalÄ ? The data content of the two ANY input parameters are not equalÅ 3159686021Æ $e4f95c0d-0ece-47a8-977f-f9d45a4f920eÇ 3901074272È 11252403É 173265148Ê 958090425Ë __GETBUFFERSIZEÌ __GETLENGTHÍ __SETAPPENDÎ __SETLENGTHÏ COPYÐ CUTOFFÑ FINDÒ FINDBACKÓ SETÔ Q This functionblock acts as an IO stream buffer for use with FB_XmlControl Õ 3380907502Ö FB_StringBuffer× pStringØ udiLengthÙ udiSizeOfÚ propertyÛ setÜ Appends a string to the bufferÝ message_guidÞ $1420d8a5-f130-452c-8825-a3f354a987ecß Appendà getá Read current Buffersizeâ $68afd1a2-de65-4e12-b73f-fea349e03e95ã BufferSizeä $4091adec-4bb4-4fd6-8526-9c7c148f5fb6å Lengthæ 3044084225ç CutOffè udiStartPosé udiCutLenê XmlErrorë E_XMLERRORì iLoopí pByteCutî pByteBufferï FB_STRINGBUFFERð $c6a3de4e-6324-4b78-aaa1-8f0f469c3e8añ $e52f4441-8a0a-4101-967b-b7eab2a848a9ò Find a searchstring in the buffer and returns its position. It's possible to add a preffered startposition within buffer ó 817594632ô Findõ sSearchStringö udiLoop÷ iSearchø pBufferù pSearchú $005c59da-78f6-44f5-992f-5ed00155aa65û 3946453572ü FindBacký udiSearchþ $9839d1e8-50a3-46d6-bcc3-683d35336c78ÿ Sets the Buffer 2195020359Set Set buffer adress (ADR ...)pbyAdr Set buffer size (SIZEOF ...) udiSize$4febb494-7fac-41a4-adad-f24be4f91872 1318540506 244166695__getLength$68d61c18-5880-4fca-bc19-2627561e031b1 Copies a string from the character buffer 3779162972CopyudiStartudiEnd udiCopyLen pByteCopy$2c390f42-4281-4b36-9491-cb075b58b84f 915874502 2096635386__setLength$771e0e96-6938-4002-9e95-f5464d90932a 1451408511__getBufferSize$50c00d93-002d-4d51-b127-116588bc6b70 3164512357 1039761658 1421433567 1880372656__setAppendpByteIn $0b19b506-e9b9-4278-a6d8-4293484e7c2a¡CLEARBUFFER¢CLOSETAG£ NEWCOMMENT¤NEWPARAMETER¥NEWTAG¦ NEWTAGDATA§ NEXTPARAMETER¨NEXTTAG© SETBUFFERª TOSTARTBUFFER«WRITEDOCUMENTHEADER¬Ý Organizes parsing and composing of XML data. Data can be treated as STRING or char array. Filebuffersize is default 4096 bytes and can be set via Gvl_Param_XmlControl Usage example: 1. Initiate VAR XML : FB_XMLControl; Buffer: STRING(GVL_Param_XmlControl.udiMaxFileSize); //or Buffer: ARRAY [0..GVL_Param_XmlControl.udiMaxFileSize] OF CHAR; END_VAR XML.pBuffer: = ADR (buffer); XML.LenBuffer: = SIZEOF (buffer); Add your own preferred fileheader like: XML: <?xml version=\"1.0\" encoding=\"UTF-8\"?> XML.WriteDocumentHeader( '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'); 2. Compose a tag with a parameters: XML: <MyTag ParaName = "11" /> XML.newTag(sTagName: = 'MyTag'); XML.newPara(sName: = 'ParaName', sPara: = sValue); XML.CloseTag(); 3. Add tag value: XML: <MyTag> MyText </ MyTag> XML.newTag(sName := 'MyTag'); XML.newTagData(sTagData :='MyText'); XML.CloseTag(); 4. Jump to the beginning of the XML data XML.toStartBuffer(); 5. Add a comment: XML: <!-- MyComment --> XML.newComment(sTagName: = 'MyComment'); 6. Returns the next tag from the current position in buffer XML.NextTag(); 7. Output the parameter of the tag XML.NextPara(sPara: = LastValue); Feedback: sPara returns the value found (string) 602734887® FB_XmlControl¯Buffer°TagList±sTags²TagListSeek³ sTagsSeek´TagµsTag¶xTagOpen·iSelect¸iSelectStart¹ iSelectEndºiSelectStartPara»iSelectEndPara¼iSelectTagClose½iSelectStartValue¾iSelectEndValue¿udiSearchPosÀ<ÁTAG_OPENÂ7Local, Constant, IsCompiled, RelativeInstance, TypifiedÃ>Ä TAG_CLOSEÅ/> Æ END_TAG_CLOSEÇ ÈSPACEÉ=ÊEQUALSË"ÌQUOTEÍ\Î BACK_SLASHÏ/Ð FORWARD_SLASHÑ<!-- ÒOPEN_COMMENTÓ -->Ô CLOSE_COMMENTÕ$4fdf30b6-5fe7-4452-ad0a-85e866e236d0Öm Must be called after opening a new tag XML.NewParameter(Name: = 'ParaName', Value: = 'Value'); × 921326128ØNewParameterÙValueÚ FB_XMLCONTROLÛ$60c10606-ff09-4f9b-a3dd-0b54d0f565c7Ü$f48b7de2-5c07-4763-a8be-3d8ab3c1f58cÝ 1480213951ÞH Closes a Tag: XML: <MyTag /> Method: XML.CloseTag(); ß 562036203àCloseTagá$eedd2aac-2425-4325-8128-bfe1e984f3f7âP Creates a new Tag: XML: <MyTag> XML.NewTag(Name: = 'MyTag'); ã 3334231889äNewTagå$c44bdbda-725a-4943-a5cc-fa5ea9485541æ 658386211ç 202570919èNextTagé$d039b781-905d-4b69-b5aa-bb0323e598deê 4266376561ë NextParameterì Parameterí$4394d0a2-f7bc-4847-9625-00022c462a79î´ Add your own preffered fileheader like: XML: <?xml version=\"1.0\" encoding=\"UTF-8\"?> XML.WriteDocumentHeader('<?xml version=\"1.0\" encoding=\"UTF-8\"?>'); ï 424089131ðWriteDocumentHeaderñHeaderò$14bf2549-9e7d-451f-8ab5-fe662eb30712óc Adds a comment; XML: <!-- MyComment --> XML.NewComment(Comment: = 'MyComment'); ô 546130022õ NewCommentöComment÷$0f41fa45-b92e-4e7e-b2b3-ecb5d5918326ø 956221524ù$267105d4-b124-4c5c-a359-0434c4992afcú 2490628950û 3925419184ü 3665343355ý NewTagDataþDataÿ$e4679d3f-10eb-47fd-936c-97e3aaaa3768 3659702301 SetBufferiSizeOf$cbfaa6d5-eab9-48d0-a339-a8bf334e344e1 Clears the contents of the entire buffer 240981288ClearBuffer$651b4460-232e-47e8-95ba-ecea1541fbb9G Jump to the beginning of the XML data XML.ToStartBuffer(); 4253228143 ToStartBuffer$cb065068-a6c8-48d5-8c1d-535a21365348 3133643262CLOSEOPENREADSAVE 1695361983FB_FileControlACCESS_MODESYSFILESysFile AM_WRITE_PLUSFileAccessMode FileHandleSYSTYPESSysTypes 2535989555FB_FILECONTROL$92b054f5-6c17-4a97-bba0-430785a7dda3 1889971345 2355446001 3308839526¡Read¢RTS_IEC_RESULT£ Call with ADR();¤ Call with SIZEOF(); ¥Size¦FileSize§RTS_IEC_SIZE¨$f93ea44f-4d8d-464c-9dd2-7b8491d1d0cf© Closes the current fileª 4214760544«Close¬$9e59e2f2-4c01-4eef-a03e-ca6cece47c41 2474451454®\ Saves the contents of the buffer into a file Be sure to call Open() before calling Save()¯ 2206094130°Save± Call with SIZEOF();²$2f313ee5-51e4-4400-81ec-246d44b99c29³ Opens a file´ 2914156665µOpen¶p File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/)·filepath/output.xml¸FileName¹AM_APPEND_PLUSº$edeba3e3-eab7-4baf-8c37-097da76a12ae» 527503827¼ 3634529286½FB_jUnitXmlWriter¾Xml¿GVL_PARAM_XMLCONTROLÀGVL_Param_XmlControlÁMaxFileSizeÂBufferSizeChangeÃFileÄ 2208479216ÅFB_JUNITXMLWRITERÆ$a78295b3-d56b-4cd3-b3eb-fb9ed18a63feÇ 3675480125È 2094096280É 1172147931Ê 3478665142Ë 3827756189Ì$5de0d991-1359-4458-ba16-a7e779ed9ddcÍ 161063444Î$fc07005b-6ac8-404d-b2cd-f68d25f42f8eÏCONFDYNLICCHALLENGEÐDEMOMODEEXPIREDÑDEMOMODESTARTEDÒFB_EXITÓGENERATEEXCEPTIONÔGETCODEMETERLICENSEVALUEÕGETDEMOLICENSEÖGETLICENSEVALUE×GETLICENSEVALUEBITØGETPURELICENSEVALUEÙGETUSERLICENSEVALUEÚLICENSEMISSINGÛLOGERRORMESSAGEÜREADLICENSEFILEÝREQDYNLICCHALLENGEÞSTORELICENSEßUDINTVALUEOFLINEàVALUEOFLINEál This FB manages the access to license values. There is one global instance of it with the name ``g_olm``.â 1762817067ãOLM_OnlineLicenseManagerä_hFileå _udiTargetæ_udiTypeç_udiCPUè_udiOSé_abyFileContentêgc_uiMaxFileSizeë_uiFileSizeì _xFileReadí_uiStoredLicensesî_udiDynLicReqIDï_udiDynLicReqValueð_udiDynLicChallengeñ _xDemoMessageò _semaStoreó_adwLicensesStoredôgc_uiMaxStoredLicõ 3309119800öOLM_ONLINELICENSEMANAGER÷ __Index__1ø$85fe17fb-708c-43f1-921d-b15ce3e6d622ù 1174879541úReadLicenseFileûresüuxiSizeý udiTargetþ udiTargetMASKÿudiTypeudiCPUudiOSpsSerialpdi uiCheckSum abyGenbOnlineLicenseManagerstComponentstFilestrti$245266f5-25c0-4347-ba16-cf8db3cb144883slicense, 3.5.14.0 (3s - smart software solutions gmbh)÷ With this method a component that previously asked for a license and received a negative result can post an error log message in a unified way Hence this method should be called after GetUserLicenseValue has been called and returned no license. 3647277004LicenseMissing name of the componentstrComponent$c917544e-997c-4a95-85b8-b296375d8bdb 3970679331UdintValueOfLinestrId$482e9fa5-988d-470b-a26c-e7f543b44f5f 699475816GetLicenseValueBitudiLicenseIDusiBit udiLicense$0dd60a5f-bcb6-4ca9-bbbe-47aee3a7178a 2096955056fb_init $05fb8a48-e7b2-4a22-ad11-1fd89ee4b04e¡ 1640385473¢GenerateException£$3e4d0264-ac0c-4627-a2fa-6f413a9caafe¤ 3646185970¥LogErrorMessage¦$35438eb1-a664-41a5-9c91-1c77ddde2b52§w With this method a component can propagade in a uniform way that its demo mode has expired and it has stopped to work.¨ 3922114547©DemoModeExpiredª$e0a0ee36-9b29-4376-92d8-210830590cea« 2895160340¬ 3063148035fb_exit®$fce63f6e-52d8-4464-9446-53dd8cc9eff7¯ 167456217°GetPureLicenseValue± xNotFromCache² xFromCache³udi´udiCPUOSµui¶udiWibu·$23227458-e40f-430b-b25c-630ba433fec3¸ 4203605720¹StoreLicenseºudiValue»$3c47975d-1574-4342-8c3b-38c7e032490c¼ This method allows to ask for the license value of a component (specified by udiLicenseID) :return: Possible values: +-------------+------------------------------------------------------+ | 0 | no valid license installed | +-------------+------------------------------------------------------+ | 16#FFFFFFFF | demo mode (lasts for 30 min) | +-------------+------------------------------------------------------+ | else | license value; interpretation depends on component | +-------------+------------------------------------------------------+½ 1784112674¾GetUserLicenseValue¿O ID of the component that asks for its license value (centrally assigned by 3S)À$faf62368-1791-496f-9aac-1dcccaddbebbÁ 1553897900ÂConfDynLicChallengeÃudiNewLicenseValueÄudiChallengeÅudiLicenseValueÆ$3c2f7c5c-8743-4910-b672-93d5c08a11dbÇ 4275231191ÈGetCodemeterLicenseValueÉudiProductCodeÊ$2fd2d7ac-965c-4a78-9a9b-c721a84cea62Ë 1869023576ÌGetDemoLicenseÍstHelpÎ$3dea640c-ce74-46db-89a9-6a2e7e8a089cÏ With this method a component can propagade in a uniform way that it is running in demo mode and will - after a certain time - stop. This method should be called after it is clear that the license will stay in demo mode, in particular the (possibly later / after initialization phase) confirmation of dynamic licenses should be taken into account. Therefore it is recommended for the OEM to confirm dynamic licenses *during the initialization* (after global init slot 40000) and *before the application* is started.Ð 3669514694ÑDemoModeStartedÒ$c9961dd4-2fb3-4d0b-9b3f-67937056004cÓ 3864497688Ô4293952ÕGetLicenseValueÖparam×CMPEVENTMGRØCmpEventMgrÙ EVENTPARAMÚ EventParamÛ eventparamÜEVENTIDSÝCmpMgr_LicenseRequestÞ$d5b19f2e-90e0-4b05-a5e8-3068951f9d50ß 1280744906à 3890662013áValueOfLineâpbyãuiEndOfLineäjå usiBitOffsæbyOrigçbyPermèbyBuffébyOldê xEndOfLineë$969097ae-9ac4-46e5-a05b-018cd3f16004ì 584426206íReqDynLicChallengeîudiTimeï$477a8134-64d2-4992-ac2b-50ed5f5a8858ð 565296024ñ8 EventID of the event. Contains the class and the event òEventIdó Component ID of the provider. ô CmpIdProviderõ0 Id of the parameter structure (see pParameter) ö usParamId÷5 Version of the parameter structure (see pParameter) ø usVersionùR Pointer to the event specific parameter, that is specified by Id (see usParamId) ú pParameterû 3380528868ü$708ad4f5-2a48-4fd2-8d88-fb3b143a33a4ýcmpeventmgr, 3.5.14.0 (system)þ 154268403ÿulLicenseIDulLicenseValue 2430688636CMPMGR_LICENSEREQUEST$ec71f5d5-b2a8-42f3-8e75-3a56c8942752 2765784940 _Implicit_Task_InfoKindOf_IMPLICIT_KINDOFTASKbProfilingTaskdwLastCycleTimediJitterdiJitterMindiJitterMaxwTaskStatus_IMPLICIT_JITTER_DISTRIBUTION_Implicit_Jitter_DistributionbWithinSPSTimeSlicingbShouldBlockbActivenCoreConfigurednCoreCurrent pTaskGroup_IMPLICIT_TASKGROUP_INFO_Implicit_TaskGroup_InfopszParentTaskName 3064147540$e6cf92f3-3b47-5338-beaf-26e2a5a83457 4288098520 1363320977 235137531$0a97d8c5-2310-5720-bcd3-ed20eb927bba 2880228939 2164913627¡pszGroupName¢dwTaskGroupOptions£ diMaxCores¤parrdwCoreBits¥ 638065670¦$6c5d8c89-bc4d-538f-8200-63970dba9812§ 187872831¨TEST_ANY_DIFFER_DATATYPE©TEST_ANY_EQUALSªTEST_BOOL_DIFFER«TEST_BOOL_EQUALS¬TEST_BYTE_DIFFERTEST_BYTE_EQUALS®TEST_DATE_AND_TIME_DIFFER¯TEST_DATE_AND_TIME_EQUALS°TEST_DATE_DIFFER±TEST_DATE_EQUALS²TEST_DINT_DIFFER³TEST_DINT_EQUALS´TEST_DWORD_DIFFERµTEST_DWORD_EQUALS¶TEST_INT_DIFFER·TEST_INT_EQUALS¸TEST_LINT_DIFFER¹TEST_LINT_EQUALSºTEST_LREAL_DIFFER»TEST_LREAL_EQUALS¼TEST_LTIME_DIFFER½TEST_LTIME_EQUALS¾TEST_LWORD_DIFFER¿TEST_LWORD_EQUALSÀTEST_REAL_DIFFERÁTEST_REAL_EQUALSÂTEST_SINT_DIFFERÃTEST_SINT_EQUALSÄTEST_STRING_DIFFERÅTEST_STRING_EQUALSÆTEST_TIME_DIFFERÇTEST_TIME_EQUALSÈTEST_TIME_OF_DAY_DIFFERÉTEST_TIME_OF_DAY_EQUALSÊTEST_UDINT_DIFFERËTEST_UDINT_EQUALSÌTEST_UINT_DIFFERÍTEST_UINT_EQUALSÎTEST_ULINT_DIFFERÏTEST_ULINT_EQUALSÐTEST_USINT_DIFFERÑTEST_USINT_EQUALSÒTEST_WORD_DIFFERÓTEST_WORD_EQUALSÔCfUnitÕµ This testsuite tests the different assert-functions for all the different data types in TwinCAT. For every data type at least two different tests have been defined: 1. One test that succeeds (Expected and actual are equal) 2. One test that fails (Expected and actual are false). Ö 1070688907×FB_PrimitiveTypesØ 3620816422ÙTest_LINT_DifferÚLIntÛaÜFB_PRIMITIVETYPESÝ$0cb4e3f2-729d-4d75-8a0a-07516a9794eeÞ$d6f75dd1-f045-4082-8776-85982b0ae74cß 1656850260àTest_DATE_DifferáDateâ$ebffe951-7f27-462e-ba85-3f2a43270aecã 1488232747äTest_DWORD_DifferåDWordæ$66ceea20-5a7d-4b95-b1eb-e7ee3c4b70abç 2180744207èTest_USINT_Equalsé$cde72b40-2fd6-4a92-a04b-0269b424b2b7ê 2473017636ëTest_TIME_OF_DAY_Equalsì TimeOfDayí$85b6b1a1-2462-4da9-a251-839c4ad33df3î 3533535052ïTest_BOOL_Equalsð$d651b9d0-71bd-4878-9d2a-2c66a765b494ñ 4042043810òTest_LINT_Equalsó$3c0c4aa8-9424-42f1-8731-d26293625ab3ô 3162049214õTest_BYTE_Differö$9fca7156-628d-44c1-894f-faa6a71a4cb1÷ 1195216282ø 753850732ùTest_DINT_Differú$418a15a8-8942-49de-a21f-56f7300e9e30û 198389480üTest_DINT_Equalsý$fa1d9c35-669d-435c-9546-d70c8c7a94b2þ 2627522554ÿTest_LREAL_EqualsAnyReal$a6c932be-4f0b-491a-ad95-e6f71c55d689 4139474265Test_WORD_DifferWord $317e9494-4efd-4b73-a4a1-57f443dfc0a8 3968155212Test_TIME_DifferTime$a2a654a2-ed53-4c52-a509-5a2db7ecc761 2604989754Test_BYTE_Equals$c70715ae-5a04-466d-b626-61983eac447d 284634104Test_REAL_EqualsReal$3ff5f032-f56a-4bde-877a-abef9f04842e 4191488800 1728221018Test_DWORD_Equals$8ebd3af4-2c8a-4b2c-8bd9-6ffcce8288b9 3497657072 3823116006 2889501815Test_ANY_Differ_DataType$727d1587-a665-48c7-a3e8-8439592b1864 915563648Test_LTIME_DifferLTime$7a97b632-b7b0-4607-996d-4d3bf6c0810c 1324226636Test_ULINT_Equals ULInt¡$77c931b5-b02f-44a9-aa1d-9b1c38d24d32¢ 1014784762£Test_LWORD_Differ¤$42c0d250-6fed-4761-bbd6-b6618c453bf5¥ 3235634345¦Test_ANY_Equals§$f83e4948-5c3d-4d05-8637-52a58b5c2c14¨ 2592807266©Test_UDINT_DifferªUDInt«$62ab8ea6-6d7c-4923-bc8b-9990cfa99a91¬ 183225360Test_STRING_Differ®This is a string¯This is another string°$bd078c70-d4cc-4f1e-9b59-781cb6a3aadb± 3515263709²Test_WORD_Equals³$4e51651a-d7d1-4780-80a3-72ea1ca78f2b´ 653268572µTest_SINT_Differ¶$00951826-692b-41c4-8e91-b80ea25e2eb7· 3192760958¸Test_USINT_Differ¹$b15f330c-b7f1-4831-a041-9baf2e7afb7fº30269912»Test_SINT_Equals¼$74a08324-89cf-4885-85ec-ab50cb20e9c6½ 3417885128¾Test_TIME_Equals¿$73b6837a-0142-4874-8ee8-8557d9cc2dc5À 978378722Á63589515ÂTest_LWORD_EqualsÃ$81ec823f-5c65-4a2b-80ae-540b503cacbeÄ 1661423725ÅTest_INT_DifferÆ$0e29bf59-ed94-41f5-80b8-e9cb3b8b1c20Ç 153373425ÈTest_LTIME_EqualsÉ$f78dfe01-ebfd-4eef-9bb6-b1e9a54045a9Ê 138473335ËTest_DATE_AND_TIME_EqualsÌDateAndTimeÍ$12feba5c-6f76-4f0c-8b02-2cdd4212851cÎ 2314545827ÏTest_INT_EqualsÐ$fcdc4c69-64f9-42c0-b5cf-f07a205198f8Ñ 936041596ÒTest_REAL_DifferÓ$eeecbc98-51d6-4618-88bd-2fcd3dc91d0bÔ 4090862110Õ 2737496459ÖTest_LREAL_Differ×$e338a5cf-2fe9-45bc-b970-d38cea93e991Ø 1901606461ÙTest_ULINT_DifferÚ$0d0d9e30-1840-46c4-a3ac-cf0cd182d193Û 3855610535ÜTest_DATE_AND_TIME_DifferÝ$105dcf9b-120f-47e5-b827-eb4805658d35Þ 1174171856ßTest_DATE_Equalsà$810985db-2155-47b2-8546-863846ff9ab5á 2277019686âTest_UINT_Equalsã$ea252140-8e94-46a4-ad1a-7cc742796feaä 1901659501åTest_TIME_OF_DAY_Differæ$88c402bd-74ed-48a9-9ffb-b2c7b47dde3cç 2693097378èTest_UINT_Differé$2925eb23-7cf3-4688-b8fb-8da6c368ee8fê 4120936648ëTest_BOOL_Differì$6279ed0b-29d3-4713-a912-29375b72f630í 2772252435îTest_UDINT_Equalsï$f4df0884-683d-4a41-ab0c-743fcd42e36bð 163799222ñTest_STRING_EqualsòHello thereó$ed0937c8-047c-4f54-9007-aa5de45de9b3ôASSERTTHATINTSAREEQUALõASSERTTHATINTSARENOTEQUALöASSERTTHATWORDSAREEQUAL÷ASSERTTHATWORDSARENOTEQUALø÷ This testsuite verifies that the Assert_True and Assert_False methods do what they are supposed to. It does so by making sure that every assert-method (assert_true & assert_false) does both one failing and one successful assert. ù 1271152990úFB_AssertTrueFalseû 246191547üAssertThatINTsAreEqualýFB_ASSERTTRUEFALSEþ$e329edff-158b-47b8-b448-4482e312fc51ÿ$4a344c15-007d-4e24-b34e-25e793163fe6 320104211 3984085859AssertThatINTsAreNotEqual$e9713416-6687-4536-b3eb-d0e312881039 103446585 2122037051 1025769214AssertThatWORDsAreNotEqual$7f2e9dc0-aaa1-4524-9220-4e31b7d76d84 2716321451 3593351592AssertThatWORDsAreEqual$cb8a8728-6b7f-485b-9255-e9e2c3d7b1b4 690419177TWICEASSERTCALLÆ In this testsuite we are running the same testcase over two cycles, and thus calling every assert method twice. This is in order to verify that we don't print every FAILED assert twice. 1989861691FB_AssertEveryFailedTestTwiceAssertCount 2696038033FB_ASSERTEVERYFAILEDTESTTWICE$3bea6e4d-8d08-467b-90da-24a784807eae 4282869222 2625023338 2448907021 4171858112TwiceAssertCallaANYbANYaBOOLbBOOLaBYTE bBYTE¡aDATE¢bDATE£aDATE_AND_TIME¤bDATE_AND_TIME¥aDINT¦bDINT§aDWORD¨bDWORD©aINTªbINT«aLINT¬bLINTaLREAL®bLREAL¯aLTIME°bLTIME±aLWORD²bLWORD³aREAL´bREALµaSINT¶bSINT·Hello world¸aSTRING¹ Hey thereºbSTRING»aUDINT¼bUDINT½aUINT¾bUINT¿aULINTÀbULINTÁaUSINTÂbUSINTÃaTIMEÄbTIMEÅaTIME_OF_DAYÆbTIME_OF_DAYÇaWORDÈbWORDÉ$69d3987a-7ce5-4206-ac7a-879b67c9a54dÊ 365334915ËTESTONEÌ TESTONE_AGAINÍTESTONE_AGAINAGAINÎTESTONE_AGAINAGAINAGAINÏÏ This testsuite creates four tests in the same testsuite with the same name. Every test in a testsuite should have an unique name. Every assert should be ignored if a duplicate test is being run. Ð 3250938232ÑFB_CreateFourTestsWithSameNameÒ 3281589091ÓTestOne_AgainAgainÔFB_CREATEFOURTESTSWITHSAMENAMEÕ$f97b8825-364c-4046-983a-104d2c070686Ö$7b1f39ab-8960-43b8-8ec6-8f13e574f736× 3191698294Ø 4168777753ÙTestOne_AgainAgainAgainÚ$2d274c02-8a97-4c6e-806e-1f05be2e2af3Û 1209541766Ü TestOne_AgainÝ$01798474-e702-41c3-94c8-ec7fd2bc4723Þ 1643426206ß 3146324223à 3050414125áTestOneâ$a0db3538-83d9-431d-9b73-12250812435fã 3475197072ä 143144007åTEST_BOOL_ARRAY_DIFFERINCONTENTæTEST_BOOL_ARRAY_DIFFERINSIZEçTEST_BOOL_ARRAY_EQUALSèTEST_BYTE_ARRAY_DIFFERINCONTENTéTEST_BYTE_ARRAY_DIFFERINSIZEêTEST_BYTE_ARRAY_EQUALSëTEST_DINT_ARRAY_DIFFERINCONTENTìTEST_DINT_ARRAY_DIFFERINSIZEíTEST_DINT_ARRAY_EQUALSî TEST_DWORD_ARRAY_DIFFERINCONTENTïTEST_DWORD_ARRAY_DIFFERINSIZEðTEST_DWORD_ARRAY_EQUALSñTEST_INT_ARRAY_DIFFERINCONTENTòTEST_INT_ARRAY_DIFFERINSIZEóTEST_INT_ARRAY_EQUALSôTEST_LINT_ARRAY_DIFFERINCONTENTõTEST_LINT_ARRAY_DIFFERINSIZEöTEST_LINT_ARRAY_EQUALS÷ TEST_LREAL_ARRAY_DIFFERINCONTENTøTEST_LREAL_ARRAY_DIFFERINSIZEùTEST_LREAL_ARRAY_EQUALSú"TEST_LREAL_ARRAY2D_DIFFERINCONTENTûTEST_LREAL_ARRAY2D_DIFFERINSIZEüTEST_LREAL_ARRAY2D_EQUALSý"TEST_LREAL_ARRAY3D_DIFFERINCONTENTþTEST_LREAL_ARRAY3D_DIFFERINSIZEÿTEST_LREAL_ARRAY3D_EQUALS TEST_LWORD_ARRAY_DIFFERINCONTENTTEST_LWORD_ARRAY_DIFFERINSIZETEST_LWORD_ARRAY_EQUALSTEST_REAL_ARRAY_DIFFERINCONTENTTEST_REAL_ARRAY_DIFFERINSIZE TEST_REAL_ARRAY_EQUALS!TEST_REAL_ARRAY2D_DIFFERINCONTENTTEST_REAL_ARRAY2D_DIFFERINSIZETEST_REAL_ARRAY2D_EQUALS!TEST_REAL_ARRAY3D_DIFFERINCONTENTTEST_REAL_ARRAY3D_DIFFERINSIZETEST_REAL_ARRAY3D_EQUALSTEST_SINT_ARRAY_DIFFERINCONTENTTEST_SINT_ARRAY_DIFFERINSIZETEST_SINT_ARRAY_EQUALS TEST_UDINT_ARRAY_DIFFERINCONTENTTEST_UDINT_ARRAY_DIFFERINSIZETEST_UDINT_ARRAY_EQUALSTEST_UINT_ARRAY_DIFFERINCONTENTTEST_UINT_ARRAY_DIFFERINSIZETEST_UINT_ARRAY_EQUALS TEST_ULINT_ARRAY_DIFFERINCONTENTTEST_ULINT_ARRAY_DIFFERINSIZETEST_ULINT_ARRAY_EQUALS TEST_USINT_ARRAY_DIFFERINCONTENTTEST_USINT_ARRAY_DIFFERINSIZETEST_USINT_ARRAY_EQUALSTEST_WORD_ARRAY_DIFFERINCONTENTTEST_WORD_ARRAY_DIFFERINSIZETEST_WORD_ARRAY_EQUALSõ This testsuite tests the different assert-functions for all the different type of arrays (varying by the different data types that are available in TwinCAT). For every type of array (BOOL, BYTE, INT etc.) at least three different tests have been defined: 1. One test that succeeds, where the data and size of the arrays are matching 2. One test that fails, where the size of the arrays differs 3. One test that fails, where the content of the array differs 2699084327 FB_ArrayPrimitiveTypes¡ 1283235838¢Test_UINT_Array_DifferInSize£FB_ARRAYPRIMITIVETYPES¤$b31cd7c7-b957-491f-bd93-b12e1f3bbcd4¥$50358d3a-b100-454e-8d82-abe092455655¦ 3953698730§Test_LREAL_Array_DifferInSize¨$0a4de673-fd9b-43b6-850e-74dbd41b55a8© 2081626709ªTest_BOOL_Array_DifferInSize«$41caa71a-6ab3-4490-bc09-94996e7d75ba¬ 3952018129Test_SINT_Array_DifferInSize®$1e2cf123-18a8-4cbd-8e48-7b26724ed431¯ 3484298254°!Test_REAL_Array2d_DifferInContent±$d59b10ba-c9b8-4aa5-b74d-ea45c0a97441² 2541860279³Test_UDINT_Array_Equals´$6c304295-4f17-4c57-8891-0f1fad1602aaµ 1835772602¶Test_UINT_Array_DifferInContent·$da5beac5-bfad-43f6-bccf-6e73673259ad¸ 3270196743¹ 4121323061ºTest_BYTE_Array_Equals»$8cb3cfd1-77fc-469e-8ac9-576771a3f2ca¼ 1626830512½ Test_UDINT_Array_DifferInContent¾$d7edb2d8-5f1b-4ffb-9939-432d3de30e56¿ 2181332731ÀTest_REAL_Array_DifferInContentÁ$d301c239-4bf1-4c0d-85af-4599db00b21a 3414218012ÃTest_UDINT_Array_DifferInSizeÄ$ad97c736-6e06-46d5-9c00-65f6c2edd9e0Å56003460ÆTest_REAL_Array_EqualsÇ$703914ba-e617-4db8-9101-ad1e09d951faÈ 460706827ÉTest_WORD_Array_DifferInSizeÊ$63e71fa0-e00e-4421-8325-513028737c05Ë 3793371623Ì Test_DWORD_Array_DifferInContentÍ$f7dc0453-b8e0-4434-a8ea-0a0c1ad42e07Î 467253204Ï!Test_REAL_Array3d_DifferInContentÐ __Index__2Ñ$0218ea1f-8ab3-4780-855a-4bda76b4bd29Ò 3426194533ÓTest_REAL_Array2d_EqualsÔ$c2e03616-7116-4142-98e9-1cdbbf9188f6Õ 549657412Ö Test_LWORD_Array_DifferInContent×$d3192e95-f722-47ec-b7f2-44bda4348e2fØ 3283755235ÙTest_REAL_Array3d_DifferInSizeÚ$2f5f884e-e0a5-4854-ae56-af720801bb1fÛ 2106604960ÜTest_UINT_Array_EqualsÝ$9766c6d1-f91e-4861-a12b-6da36072d9a8Þ 716197780ßTest_USINT_Array_DifferInSizeà$c5f2ed88-90cb-4cd5-b782-f07722f54aa3á 465230461âTest_SINT_Array_Equalsã$43848a04-b953-4660-8589-62195d762770ä 2178838410åTest_LINT_Array_Equalsæ$4bdfad96-2390-412b-a1a3-fa1e514fb731ç 616078359èTest_REAL_Array3d_Equalsé$ac6e988d-1d5a-4b2f-9434-494cd25e9d00ê 2021118962ëTest_LINT_Array_DifferInSizeì$63ab26dc-0fab-4888-8aea-e3bd038f5016í 994396293îTest_BOOL_Array_Equalsï$602dc3c1-d714-446a-b1c9-fe3db70e04f2ð 559292979ñTest_INT_Array_DifferInSizeò$33a9368b-fc55-4cd4-8de0-0f331d4f93edó 1122440789ôTest_LREAL_Array3d_Equalsõ$35a98408-a9d2-467b-ab41-be1336f4d5d1ö 2350659139÷Test_LREAL_Array2d_DifferInSizeø$28f95767-365d-466d-b941-002765b7aacbù 3175161527úTest_BYTE_Array_DifferInContentû$5a3fc488-ce8e-4416-afcb-989908d1a477ü 3735703926ýTest_DINT_Array_Equalsþ$d64e3057-abc8-4ec9-90f7-e0bae1e032aaÿ 1570086498Test_LREAL_Array2d_Equals$78fed880-525c-48dc-8dc2-6a8b82a2b4e4 830890264Test_DINT_Array_DifferInContent$21b235e1-384f-4032-a872-5b20bb0909a6 313734004Test_SINT_Array_DifferInContent$68217455-3726-49b2-85d5-66552f2e3d11 3758696761 Test_LREAL_Array_DifferInContent$31469020-3298-4354-8358-e4fbceae9705 940798199Test_WORD_Array_DifferInContent$7043cf17-eda5-41c0-8101-ae3e52fdbf57 4124015028Test_DWORD_Array_DifferInSize$c334c67b-514e-4468-90d8-4277568b0b2a 1214728264Test_INT_Array_Equals$ff6e4d4a-b40e-4bcd-b765-ce99ddf56df3 1477388691Test_REAL_Array2d_DifferInSize$d16073c4-cace-4970-8af2-a2b4804325d1 1571139330Test_USINT_Array_Equals$024c8113-991a-4779-a9f7-55567c26bb69 1434196650Test_REAL_Array_DifferInSize$f718071d-c28b-4a93-b758-c0cdbe82cc9a 955244002Test_BOOL_Array_DifferInContent$7b271ca5-8f9a-4fcf-9207-0915581f4c7c 2908960794¡Test_BYTE_Array_DifferInSize¢$adf0d435-012a-46fa-86ef-fb8e0dd23d8d£ 402120151¤ 1138834347¥ 1431320248¦ 2852748274§ Test_ULINT_Array_DifferInContent¨$b79f6469-858a-402c-849d-dc166751ba74© 1859603635ª"Test_LREAL_Array2d_DifferInContent«$9363c675-3308-4b60-90d8-bc707c8055bb¬ 3304282053 2048032359®Test_INT_Array_DifferInContent¯$b81da39f-9c49-4b61-a088-a3afaeda8830° 688685866±Test_LREAL_Array_Equals²$09667cfd-34f5-4531-bd9a-4046fa57fdcb³ 1099872069´Test_LWORD_Array_Equalsµ$a80af460-c72c-448c-aeb0-96d724afc9a5¶ 2682207806·Test_LREAL_Array3d_DifferInSize¸$18a94bce-050f-43d3-b411-b74954895b02¹ 596550510º Test_USINT_Array_DifferInContent»$a21148d1-d45d-4070-b3a5-fadc62daa9f6¼ 1838016790½Test_DWORD_Array_Equals¾$b0c44502-c8cc-4726-8b79-ef1c800cbe36¿ 1567077497ÀTest_WORD_Array_EqualsÁ$e858d122-3913-46cd-84b3-f0f6a3a3b0a4 3064787725ÃTest_DINT_Array_DifferInSizeÄ$86eb5976-92fb-4ce3-948d-bdf07eb99e3eÅ 2088439193ÆTest_LWORD_Array_DifferInSizeÇ$3d52b6dd-665b-4dc1-88a4-e1331996e9c4È 425218498ÉTest_ULINT_Array_EqualsÊ$8b0f2531-7534-4e71-a52f-4d759d52b09fË 1068957092Ì"Test_LREAL_Array3d_DifferInContentÍ$e361e8eb-896b-43c9-aa55-90f36713ed72Î 3033418415ÏTest_LINT_Array_DifferInContentÐ$2698005b-e405-4442-b11f-bb5aab8920b0Ñ 1406480748ÒTest_ULINT_Array_DifferInSizeÓ$6e834fe5-5254-48ec-9178-d37e9e35a502ÔTESTDISABLEDÕTESTENABLEDÖµ This testsuite runs two tests. One that is enabled (and that is supposed to fail), and one that is disabled (and even though it also is failing is not supposed to run). × 2499854457ØFB_CreateDisabledTestÙ 1628698511ÚTestEnabledÛFB_CREATEDISABLEDTESTÜ$aaa74956-ecdb-40ff-a4da-e0ad237c9503Ý$3f1093ff-32d2-455a-8cf0-190014c55a4cÞ 4132480384ß 2238999680àTestDisabledá$773db475-8255-416d-8669-8526d3357b4dâ 1023559596ã 4290862005ä 3909217540å 3836025984æTEST_ANY_BOOL_DIFFERçTEST_ANY_BOOL_EQUALSèTEST_ANY_BYTE_DIFFERéTEST_ANY_BYTE_EQUALSêTEST_ANY_DATE_AND_TIME_DIFFERëTEST_ANY_DATE_AND_TIME_EQUALSìTEST_ANY_DATE_DIFFERíTEST_ANY_DATE_EQUALSîTEST_ANY_DINT_DIFFERïTEST_ANY_DINT_EQUALSðTEST_ANY_DWORD_DIFFERñTEST_ANY_DWORD_EQUALSòTEST_ANY_INT_DIFFERóTEST_ANY_INT_EQUALSôTEST_ANY_LINT_DIFFERõTEST_ANY_LINT_EQUALSöTEST_ANY_LREAL_DIFFER÷TEST_ANY_LREAL_EQUALSøTEST_ANY_LTIME_DIFFERùTEST_ANY_LTIME_EQUALSúTEST_ANY_LWORD_DIFFERûTEST_ANY_LWORD_EQUALSüTEST_ANY_REAL_DIFFERýTEST_ANY_REAL_EQUALSþTEST_ANY_SINT_DIFFERÿTEST_ANY_SINT_EQUALSTEST_ANY_STRING_DIFFERTEST_ANY_STRING_EQUALSTEST_ANY_TIME_DIFFERTEST_ANY_TIME_EQUALSTEST_ANY_TIME_OF_DAY_DIFFER TEST_ANY_TIME_OF_DAY_EQUALSTEST_ANY_UDINT_DIFFERTEST_ANY_UDINT_EQUALSTEST_ANY_UINT_DIFFERTEST_ANY_UINT_EQUALSTEST_ANY_ULINT_DIFFERTEST_ANY_ULINT_EQUALSTEST_ANY_USINT_DIFFERTEST_ANY_USINT_EQUALSTEST_ANY_WORD_DIFFERTEST_ANY_WORD_EQUALSî This testsuite tests the different assert-functions for all the primitive data types in TwinCAT, but using the ANY-version of the Assert-method. For every data type at least two different tests have been defined: 1. One test that succeeds (Expected and actual are equal) 2. One test that fails (Expected and actual are false). For every failing test the printed value should be the same as if we were using the primitive data type assert directly. 2825987487FB_AnyPrimitiveTypes 2296896902Test_ANY_TIME_DifferFB_ANYPRIMITIVETYPES$361fa935-4959-4eb6-b25a-f9965f1f30dd$bf0ad75f-805b-4448-a5e9-9fafb9350eaa 3592231864Test_ANY_DINT_Equals$ac4e8032-dccc-4a7e-9803-44020c8533e4 1000547020Test_ANY_ULINT_Equals$f13de1a5-523a-4c9d-8e7e-8c0b2840de93 1806283063Test_ANY_ULINT_Differ $dae19af6-fcc2-42c1-aaca-8dc7c861bdcc¡ 1893644941¢Test_ANY_DATE_AND_TIME_Differ£$0d3f804a-d51e-43e6-bd81-f031ee7308e1¤ 2437122568¥Test_ANY_SINT_Differ¦$b0f8ac71-681f-4f1a-94dd-32b085f23744§ 2912586807¨Test_ANY_BOOL_Differ©$9def4202-9b1d-4fca-a694-7baecaa73c6dª 3487798320«Test_ANY_LTIME_Equals¬$ccdb0dec-fafe-402a-802f-577154e15f12 2682849227®Test_ANY_LTIME_Differ¯$c72b07c9-bd17-4b41-8647-93f2630ffe0c° 4230101695±Test_ANY_DINT_Differ²$cb70e186-1a96-4b29-985d-60f5f4684775³ 930357502´ 3700644572µTest_ANY_UDINT_Equals¶$9c466d83-1d0b-48d6-a187-0404dcd7fc0c· 2445959671¸Test_ANY_STRING_Differ¹$8384ce7c-1f54-4249-9dc0-3b2f1dfa1e90º 2732129409»Test_ANY_TIME_Equals¼$8b715def-1875-46d4-8b4b-cd8cbb83966f½12461003¾Test_ANY_LREAL_Equals¿$d886c391-4ffc-42ba-aacc-8f8f2b3a5e54À 4221124688ÁTest_ANY_DATE_DifferÂ$cfc83bfe-e5f8-4bb0-9243-3c64bb120daeà 2755016397ÄTest_ANY_USINT_EqualsÅ$44a01ea7-d3cf-4d20-aeb7-e4787721e931Æ 2430674199ÇTest_ANY_INT_DifferÈ$3902bfc9-94f5-457a-8cf1-bf8e15c96e38É 138420671ÊTest_ANY_WORD_EqualsË$962442d1-3576-440d-880d-7ca8abee0ca2Ì 1390932524ÍTest_ANY_BYTE_EqualsÎ$2f42883b-2905-4fcf-ab87-5d19e1fac7b2Ï 578748600ÐTest_ANY_WORD_DifferÑ$684677fe-b88b-4336-9954-f4e16d3d3cf5Ò 624049899ÓTest_ANY_TIME_OF_DAY_EqualsÔ$54c634d0-a0c1-46c0-81a9-2d082c52fde4Õ 720044093ÖTest_ANY_REAL_Differ×$f2472e3d-089e-474c-b4b8-54a3d353ad64Ø 856130493Ù 3410836388ÚTest_ANY_LINT_EqualsÛ$668fbd05-1b2c-4b08-8d52-d1aaaa059802Ü 1419013707Ý 3145509647ÞTest_ANY_SINT_Equalsß$630cc9a7-6d4d-40eb-ab44-a0a4844068f6à 3644680110áTest_ANY_DATE_AND_TIME_Equalsâ$3b6f68a1-4ae4-42ef-9963-3b1290dfe7f6ã 1677282816äTest_ANY_TIME_OF_DAY_Differå$6a1b7492-d6c5-4590-b52d-c2c8e1ee1844æ 3691440655çTest_ANY_DWORD_Differè$23ed3054-fb0f-4676-a33d-13cb685f2f27é 267086174êTest_ANY_LWORD_Differë$ef3f03f1-1a53-4489-8c36-c28660c1e7b7ì 1608645285íTest_ANY_LWORD_Equalsî$19993f03-49d7-4cee-97a1-88ff9d9eb2e6ï13902138ðTest_ANY_REAL_Equalsñ$8290f811-4b5b-4e83-b6ee-422a2bd05e2bò 3578830441ó 2653464199ôTest_ANY_STRING_Equalsõ$45fb731e-62a5-4739-983d-66e18d9850beö 486070871÷ 1354018864øTest_ANY_LREAL_Differù$c7618ef1-aae1-478a-8d43-1bb5a958b641ú 3782351523ûTest_ANY_LINT_Differü$fb115c0d-34a2-4d3c-af00-30e036afd5d7ý 246386581þTest_ANY_INT_Equalsÿ$16ed816c-bec6-46ce-a406-42d965e0fb31 4097615158Test_ANY_USINT_Differ$feb2c66c-f754-4a55-ba64-e1fdc77ddce6 2358888743Test_ANY_UDINT_Differ $e30459bf-ebf3-48ab-a1c1-3d0dd57a829e 3517342039Test_ANY_DATE_Equals$d466f1ae-1c99-4517-81d7-ba44ee80c32f 2275781936Test_ANY_BOOL_Equals$24b88842-0df5-436f-8f65-86f62612214c 3266197740Test_ANY_UINT_Differ$6fcb372c-bdc6-4fa3-bdd8-941d914d6b3a 2027475755Test_ANY_BYTE_Differ$dd37329d-bb06-4679-abf4-e4d04399c232 3901823467Test_ANY_UINT_Equals$9e678934-ef5b-42e1-a53f-17737ee06d35 2349627892Test_ANY_DWORD_Equals$5708854e-5f0b-4ac2-80a1-0b3d9009a3edTWICEASSERTCALL_ARRAYSú In this testsuite we are running the same testcase over two cycles, and thus calling every assert method twice. This is in order to verify that we don't print every FAILED assert twice. With this version we are doing it with arrays. 2731224403)FB_AssertEveryFailedTestTwiceArrayVersion 3310563177)FB_ASSERTEVERYFAILEDTESTTWICEARRAYVERSION$5b8060b0-3687-4b9b-9022-5637e5f78c2d 3280665375 TwiceAssertCall_Arrays¡aLREAL2d¢bLREAL2d£aLREAL3d¤bLREAL3d¥aREAL2d¦bREAL2d§aREAL3d¨bREAL3d©$3223af5e-9433-428f-b1bd-3d3746f6e73fª 4253876260« 2568231803¬ 867412798 910118007®TEST_BIT¯ TEST_BOOL° TEST_BYTE± TEST_DATE²TEST_DATE_AND_TIME³ TEST_DINT´ TEST_DWORDµTEST_INT¶ TEST_LINT· TEST_LREAL¸ TEST_LTIME¹ TEST_LWORDº TEST_REAL» TEST_SINT¼TEST_STRING½ TEST_STRING_2¾ TEST_TIME¿TEST_TIME_OF_DAYÀ TEST_UDINTÁ TEST_UINT TEST_ULINTà TEST_USINTÄ TEST_WORDÅTEST_WSTRINGÆ2 Tests the free function F_AnyToUnionValue. Ç 950625724ÈFB_AnyToUnionValueÉ9 Only structures and function blocks can have BIT definedÊBitËaBitÌ 681837092Í Test_DINTÎresultÏFB_ANYTOUNIONVALUEÐ$c81a9536-5ff4-4424-9f7e-1d8c5133b5e3Ñ$0cc46357-158c-41b7-afc0-2c79ec82f0f6Ò 3917569571ÓTest_BITÔ$2bab70c5-093e-48a7-94e6-ae7f2bb2e7b3Õ 566006787Ö Test_LREAL×$af2fee48-9d46-49ec-9fe0-6a046d6c2f7dØ 311731436Ù Test_UDINTÚ$2ae444f0-9149-4c01-b7ad-2fdcab7bba7cÛ 975394959Ü Test_REALÝ$5ff5264d-4661-4dc4-8889-01d457341535Þ 172755847ßTest_WSTRINGàWStringáThis is a random stringâ$cd24edfa-28c7-4bf7-ad9e-262f073a3ddfã 1665664983ä 4246374902å Test_STRING_2æ 255 charactersçÿ8YNn5KOmPC4dAcpOBdLWnw4WkN126EwXsj65xeurG48gWBepinNaOIKeCVMtWNBSxQWPdtUYiAusDkjMLtQhDtiWbwvmoKcFwiUGDd7pOe0fd52J7hK60oaYAX6VWWmceLJX8utaDVrVzCGXafeZLeHl6jj5enfjg4tfb2WMEBdsBuG2iDKwzwhBLCPqXDnhe5HbemIbtZT7p62OEj2oDqiIYDD6tZdlhBCCelDBx6dbIp32wFm0TpRKsTiwkZ6è$1e075eec-d55a-483a-976e-656d4a8d5ac3é 591497212ê Test_USINTë$ef948bb4-ae4e-47a7-b963-d71ce86c9997ì 916277003í Test_SINTî$fd59d157-95aa-462e-812a-26f74d790e8cï 340379343ð 3522644331ñ 1399560010òTest_DATE_AND_TIMEó$76b46507-8743-481c-8853-3b45d1544ad5ô 2731946299õ Test_BYTEö$226781dc-3660-487a-bcbd-00cc36750e0e÷ 1033078010ø Test_LINTù$d2a7cc80-d43e-4823-a346-11defa0d180fú 2842627597û Test_DATEü$84a5fde1-b357-4804-bf01-5c83bfeb54b3ý84583040þ 4282332081ÿ Test_ULINT$5e5e97df-5e62-40a2-b054-3ba7c91cef7063816872Test_STRING$825e7694-a502-4c32-9d34-807560d3aa4c 1143447900 Test_LTIME$1affac86-d501-40a0-99f5-4eeb9cd389fd 102530888 Test_WORD$3859891c-ade4-48ca-89f8-da9a77a2ccbb 3374558849 Test_TIME$e7b3c2aa-6660-47ce-9edf-58924221789c 3966668324 Test_BOOL$48f55beb-9fc1-4336-8784-72fc7eda80de 3885155971Test_TIME_OF_DAY$55ccbe56-fcd0-4e7f-8497-d0c19c60ad6a 1637131823Test_INT$77ff5bf1-1822-4366-a4ee-34a185c0d47e 2178852710 Test_LWORD$f0464dd4-9a3f-4fed-bf6c-84c05edc34ab 579344440 1302761495 Test_UINT$3309739e-f1a1-45d7-928b-c636d1592c1c 3815693493 Test_DWORD$e6dfcf37-a491-45b2-9543-b7fdd8847283 ASSERT_SEVERALTIMES¡Ä This test-suite runs several asserts with the same parameters (same expected, actual, message) in the same cycle and in the same test. The reason we want the framework to support this is that theoretically the user could want to do an assert with the same message, in the same test, with the same data values for both expected and actual, although the data that the user does the assert on might be from different data sets. ¢ 4081204642£:FB_MultipleAssertWithSameParametersInSameCycleWithSameTest¤ 613592518¥:FB_MULTIPLEASSERTWITHSAMEPARAMETERSINSAMECYCLEWITHSAMETEST¦$9957a11f-d554-4b5d-be35-f56d53aab4f2§ 2308546305¨ 3727129239© 3252720130ªAssert_SeveralTimes«c¬de®f¯$cd07d59b-c5ef-4bab-a334-9a8ba622ccca° 1729793733± 3827496724²ÿ Implements a timer with a turn-on delay .. code-block:: codesys (* Example declaration *) TONInst : TON ; (* Example in ST *) TONInst(IN := VarBOOL1, PT:= T#5s); VarBOOL2 := TONInst.Q; .. image:: @(Ton) .. cds:ranges:: :IN: [TRUE,FALSE] :PT: [0..255] :~PT_OLD: [0..255] :Q: [TRUE,FALSE] :ET: [0..4294967295] ³ 2584096362´TONµK | Rising edge: starts delay counter | Falling edge: resets delay counter¶IN·$ Time for the delay counter [ms] ¸PT¹d | ``FALSE`` if ``IN`` is ``FALSE`` | ``TRUE`` if ``IN`` is ``TRUE`` and delay time ``PT`` elapsedº) Elapsed time since rising edge at ``IN``»ET¼ internal variable ½ StartTime¾ 2487846102¿$e1ef856a-b512-4271-b62a-e2b2db25e9c1À 2628074829Á 3509158782 1138189611à 3981616308ÄASSERT_SEVERALTIMESAGAINÅASSERT_SEVERALTIMESAGAINAGAINÆ¿ This test-suite runs several asserts with the same parameters (same expected, actual, message), calling the asserts in different cycles and using different tests. On top of this, we will call new asserts (though with same parameters) in later cycles. The reason we want the framework to support this is that theoretically the user could want to do an assert with the same message, in different tests, with the same data values for both expected and actual, although the data that the user does the assert on might be from different data sets. Ç 4068034930ÈIFB_MultipleAssertWithSameParametersInDifferentCyclesButWithDifferentTestsÉ( Timer to call "AssertSeveralTimesAgain"ÊAssignË TimerAgainÌ- Timer to call "AssertSeveralTimesAgainAgain"ÍTimerAgainAgainÎ- Indication of whether we've called all testsÏ CalledAllÐ 824481148ÑIFB_MULTIPLEASSERTWITHSAMEPARAMETERSINDIFFERENTCYCLESBUTWITHDIFFERENTTESTSÒ$0b8cb81e-eae8-42e4-b5ff-552a60654ab4Ó 4221773756Ô 3980418740ÕAssert_SeveralTimesAgainAgainÖ$13865f28-fa53-4b31-8e3e-fc9c2f3580da× 2308466723Ø 3821193263Ù 1800543707ÚAssert_SeveralTimesAgainÛ$7d562c97-c3cc-4d37-92fc-9c428ab6a443Ü 2347385415Ý$5aa8b452-9e18-4334-94e6-939c93281b5bÞ 327773621ß This test-suite runs several asserts with the same parameters (same expected, actual, message), calling the asserts in different cycles and using the same test. On top of this, we will call new asserts (though with same parameters) in later cycles. The reason we want the framework to support this is that theoretically the user could want to do an assert with the same message, using the same test with the same data values for both expected and actual, and splitting the asserts on different cycles. à 2872403778áAFB_MultipleAssertWithSameParametersInDifferentCyclesAndInSameTestâ 2988540845ãAFB_MULTIPLEASSERTWITHSAMEPARAMETERSINDIFFERENTCYCLESANDINSAMETESTä$b90749b6-04c8-4717-bf88-8db2fbf83f6aå4280250æ 1229944362ç 3183058166ègéhêkëlìmínîoïpðqñrrò$fec25683-5d3d-4525-82ab-3bcd5de9b899ó 859150843ô 2622326539õ7TESTINSTANCEPATH220CHARSEXPECTSHORTENEDTESTINSTANCEPATHö5TESTINSTANCEPATH252CHARSEXPECTTOOLONGTESTINSTANCEPATH÷5TESTINSTANCEPATH255CHARSEXPECTTOOLONGTESTINSTANCEPATHø§ This testsuite tests the function block FB_AdjustAssertFailureMessageToMax255CharLength_Test The total printed message can not be more than 252 characters long. ù 2889695940ú3FB_AdjustAssertFailureMessageToMax252CharLengthTestû 2765194856ü3FB_ADJUSTASSERTFAILUREMESSAGETOMAX252CHARLENGTHTESTý$305341a5-f462-4bcb-ba17-ae2773c50e69þ 4228322229ÿ 21523420827TestInstancePath220CharsExpectShortenedTestInstancePath @Text-FixtureÜPRG_TEST.LongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceName@LONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELO TestInstancePathNameWith220Chars<Very long message that is 60 characters long which means tha TooLongTestMessage60Chars @Test-Result-Expected 220 + 32 = 252 (in other words, expected test message should be 32 characters long including '...TestMsg too long' Very long mes...TestMsg too longTestMessageResultExpected @Test-ResultTestInstancePathResultTestMessageResult$dc008964-f701-440f-97f6-bba60a51fe93 15750122935TestInstancePath252CharsExpectTooLongTestInstancePathüPRG_TEST.LongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceName@LONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNA TestInstancePathNameWith252CharsVery short messageShortTestMessage @Test-Result-ExpectedüPRG_TEST.LongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceName@LONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELO...TestName too long.TestInstancePathNameWith252CharsExpectedResultShortTestMessageExpectedResult&TestInstancePathNameWith252CharsResultShortTestMessageResult$f67e3ff5-02f7-4268-9fa7-f06935f8269a 1967219966 1570258145 1731583882 8414714685TestInstancePath255CharsExpectTooLongTestInstancePathÿPRG_TEST.LongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceNameLongInstanceName@LONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAMELONGTESTNAGAV TestInstancePathNameWith255Chars¡$fbb2640b-9b30-45ae-a207-49da858d57e9¢y This is an empty testsuite with no test cases, so that we can verify that the system still prints the test results. £ 2885988520¤FB_EmptyTestSuite¥ 314000593¦FB_EMPTYTESTSUITE§$1ac34d34-5767-43bd-8deb-b4e9cf217e56¨ 2779519499© 2216622724ª 1086682074« 484821319¬ 2870520515PRG_TEST®PrimitiveTypes¯1Local, IsCompiled, Absolut, Initialized, Typified°AssertTrueFalse±AssertEveryFailedTestTwice²CreateFourTestsWithSameName³ArrayPrimitiveTypes´CreateDisabledTestµAnyPrimitiveTypes¶&AssertEveryFailedTestTwiceArrayVersion·AnyToUnionValue¸7MultipleAssertWithSameParametersInSameCycleWithSameTest¹FMultipleAssertWithSameParametersInDifferentCyclesButWithDifferentTestsº>MultipleAssertWithSameParametersInDifferentCyclesAndInSameTest»0AdjustAssertFailureMessageToMax252CharLengthTest¼EmptyTestSuite½$076b236c-19e9-4a2d-94a1-f0c31f2ce92e¾ 2338394504¿_Implicit_Task_Config_InfoÀTODO eventtasksÁwVersionÂnNumOfTasksÃpszApplicationNameÄptasksÅ 3669029852Æ_IMPLICIT_TASK_CONFIG_INFOÇ$90fd8182-038e-5383-bb1b-5c607613857fÈ 1234088797É 1833442206Ê__sys__setup__tasksË%External, Compiled, Typified, LocatedÌ$367f78aa-81ce-5dee-b8fd-520b5ed4913cÍ <SIL2/>Îm4export_32bit_nosignatureÏ 830427680ÐLogAdd2ÑhLoggerÒudiCmpIDÓ udiClassIDÔ udiErrorIDÕ udiInfoIDÖpszInfo×$f782c8f1-3e37-44f5-9ca0-ba40c1145169Øcmplog, 3.5.5.0 (system)Ù 2222278874Ú__HelpConvertDateÛppstrÜnYearÝnMonthÞnDayßDayOfMonthTableà$1c137676-f66f-428c-af12-54699e1772b8á 2130786092â__HelpConvertTimeãdwHourädwMinuteådwSecondæ dwMilliSecondç$13c0f538-7207-41d3-8311-a322a7c20a0eè 3586288056é__HelpConvertTimeWithUnitêdwDayë$50f01a4a-c350-4e6e-9dfa-0c242ec58ce8ì 371843759í __HelpConvertî$fdd0113a-d0f8-4f19-bc73-fa6acf9ecc59ï 1562513299ð __ExtractRealñL True iff f is infinity, diM = 1 for +Infinity and -1 for -Infinity, iE is 0òiEódiMôxNaNõuiEöudiM÷$b4fbe026-742b-4541-9a4b-a710de7d376cø 2223293048ù__HelpConvertLTimeWithUnitúlwDayûlwHourülwMinuteýlwSecondþ lwMilliSecondÿ lwMicroSecondlwNanoSecond$9b7fa8d4-59a0-43f0-a610-be7bd5350ad9 1212736547__ExtractLRealudiE uliM$0ffc8285-5cf0-4854-bfbf-cfca06799935 3132572671__HelpRealConvertpnBeginnDigdBegindDivbNeg nHelpBegindDiff$e6a8a736-c389-4a55-8363-2e30c26fed79û Ads a message to the log, if the message is longer then 127 characters it splits into two log messages (max 255 chars = 2 log entries) Usage example: LOGSTR( msgCtrlMask := UDINT_TO_DWORD( CmpLog.LogClass.LOG_INFO ), msgFmtStr := 'Ammount of tests : %s', strArg := uiTestAmmount ); results into the following logstring Ammount of tests : 3 4018939086LOGSTR/ use UDINT_TO_DWORD( CmpLog.LogClass.LOG_.... )msgCtrlMask( Usage example: ' Ammount of tests : %s' msgFmtStr Usage example: uiTestAmmountstrArg uiMaxSizesTextiCharPos$4faf44db-355b-4967-8254-5b291732f959[ Removes leading spaces from the character string and returns the reduced character string. 1900748652 F_LTrim¡$6ef917e6-7f9e-46f0-99fd-87a9a9b883ad¢O Truncates all trailing spaces from the specified value and returns the result.£ 3142262884¤F_RTrim¥$29c1cd9e-70b7-43a9-8e3e-f8e8ed84bff7¦d The F_ToLCase function converts a specified string to lowercase. Contains portions of OSCAT BASIC§ 886767803¨ F_ToLCase©posª$4177f901-1a7a-4eea-8fe8-63097fea53f3« Searches for the position of a partial string within a string. ``FIND(STR1, STR2)`` means: Find the position of the first character where ``STR2`` appears in ``STR1`` for the first time. If STR2 is not found in STR1, then OUT:=0. .. code-block:: codesys (* Example declaration *) arINT1 : INT ; (* Example in ST , result is '4' *) arINT1 := FIND ('abcdef','de'); :return: Character position of the first occurance of ``STR2`` in ``STR1``. If no occurance is found, result is 0 .. cds:ranges:: :STR1: |StringRange255| :STR2: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ¬ 3278768737* String within which ``STR2`` is searched ®STR1¯/ String whose position is searched in ``STR1`` °STR2±pszComp1²pszComp2³$182b0d71-64b9-4f59-8550-dfdea6ddbf15´ <category>Project information</category> * <description> * Contains the project information as specified in the project information dialog in CoDeSys. To use this, the checkbox * "Automatically generate POUs for property access" in the project information dialog be enabled. * </description> * <element name="stProjectName" type="OUT">Project name without ending</element> * <element name="stTitle" type="OUT">Title</element> * <element name="stVersion" type="OUT">Version as string in the format "x.x.x.x"</element> * <element name="stAuthor" type="OUT">Author</element> * <element name="stDescription" type="OUT">Description</element> µ 3365268717¶PROJECT_INFO· stProject¸stTitle¹ stVersionºstAuthor» stDescription¼ 1178342348½$c1e43dbd-7721-4bd4-a684-c21620fe030f¾cmpapp, 3.5.14.0 (system)¿8 reads the application info from the current applicationÀ 3589885213ÁGetCurProjInfoÂCMPAPPÃCmpAppÄpCurAppÅAPPLICATIONÆpCurProjInfoÇ 1186304137ÈGETCURPROJINFOÉ$a1b4b1d0-961b-443c-bfbc-d2cb7b8d4e24Ê 3673772398Ë 1934937439Ì 2447250513Í 4156868057Î 3449547646Ï6F_RemoveInstancePathAndProjectNameFromTestInstancePathÐCharacterPositionOfProjectNameÑProjectNameWithDotÒ$7816860e-5623-4ff0-b466-902e340371e3Ó 3203763967Ô POINTER TO parent application Õ pAppParentÖ* Id of the application. Is always unique. ×iIdØ GUID for IEC code ÙCodeGuidÚ GUID for IEC data ÛDataGuidÜ> State of the application. See definitions Application states ÝudiStateÞR Operating state of the application. See definitions Application operation states ß udiOpStateà Handle to bootproject áhBootprojectâ Handle to debug task ã hDebugTaskä Global Init Function åpfGlobalInitæ Global Exit Function çpfGlobalExitè Handle a pool of session-ids éhSessionIdPoolê Handle a pool of force entries ë hForcePoolì Handle a pool of breakpoints íhBPPoolî Is persistent force enabled ï Application name ðszNameñMAX_LEN_APPLNAMEò7Version number of Programming system (set in download) óudiPSVersionô?Version number of Target settings used by PS (set in download) õudiTargetSettingVersionö 1512497683÷$91664799-0da5-417a-9e5e-db9ec74ea6f2øÈ Concatenates two strings ``CONCAT(STR1,STR2)`` means: Connect ``STR1`` and ``STR2`` to a single string ``STR1STR2``. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SUSIWILLI' *) VarSTRING1 := CONCAT ('SUSI','WILLI'); :return: Concatenated string, max. 255 characters. If the result doesn't fit into these 255 bytes, it will be silently truncated. No error is produced. .. cds:ranges:: :STR1: |StringRange255| :STR2: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ù 2972623772úCONCATû1 String 1 to be concatenated, max. 255 charactersü1 String 2 to be concatenated, max. 255 charactersý¯ This function converts a decimal number into a hexadecimal STRING (base 16). If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! If the iPrecision parameter and the in parameter are zero, the resulting string is empty.þ 1972422664ÿBYTE_TO_HEXSTR) The decimal number requiring conversion.. Minimum number of displayed digits (digits). iPrecision[ This parameter determines whether lower or upper case letters are used in the conversion. bLoCase m_Format$83e397b4-6883-4c4e-9910-e0278934299a This function converts a decimal number into a hexadecimal STRING (base 16). If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! If the iPrecision parameter and the in parameter are zero, the resulting string is empty. This is modified version of the DWORD_TO_STRH made by OSCAT, version 1.3, programmer hugo. 3725441371DWORD_TO_HEXSTR4 Minimum number of displayed digits (digits). tempptm_NumberOfDigitsm_precision$37af6bb4-598b-402b-99e0-bd140fa86122 1557660451LWORD_TO_HEXSTR$6f6ad65d-94c9-44e7-b5f7-5394a261509c± This function converts a decimal number into a hexadecimal STRING (base 16). If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! If the iPrecision parameter and the in parameter are zero, the resulting string is empty. 952797014WORD_TO_HEXSTR$028c7654-6828-48cd-8703-659f86aef415? Copies buffer with size of N bytes from source to destination 549027355MEMCPYdestAddrCAAPVOIDsrcAddr$7d591bcc-b453-4853-8327-1622b58624cc; Realize a target specific data type for general pointers. 2208387490¡ Prefix: p ¢$607a79a2-c60b-4e09-b161-a4f6d8099b00£4caa types extern, 3.5.13.0 (caa technical workgroup)¤e This function takes the type-class of a ANY-variable and returns the STRING representation of it. ¥ 3242817338¦F_AnyTypeClassToString§AnyTypeClass¨$9e1352f3-5f86-40fd-88db-b6807b901391©Ê Returns the number of characters of a string .. code-block:: codesys (* Example declaration *) VarINT1 : INT ; (* Example in ST , result is '4 *) VarINT1 := LEN ('SUSI'); :return: Length of string ``STR`` .. cds:ranges:: :STR: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ª 2091238964«LEN¬ String to be analyzed STR®$d60923f9-da06-44f9-ab52-de513236e3e2¯O Funktion to get own task handle :return: Returns the current IEC task handle° 4249138636±IecTaskGetCurrent²K Pointer that returns the runtime system error code (see CmpErrors.library)³$b1d506b4-a9e7-4ec3-8e73-e6697d723ffb´t Function returns the task information of the specified task :return: Return a pointer to the task info structureµ 4205902187¶IecTaskGetInfo3· Handle to the specified task¸hIecTask¹ptiº$941fd632-1e71-4fc0-a13a-6074eb0adf1c» 2092783167¼F_AnyToUnionValue½AnyValue.pValue¾AnyValue__pValue¿AnyValue.TypeClassÀAnyValue__typeClassÁAnyValue.diSizeÂAnyValue__sizeOfÃAnyValueÄ$04a97242-7600-4a30-a234-b9e3b1c2770cÅ 3394829069ÆF_IsAnyEqualToUnionValueÇuExpectedOrActualÈExpectedOrActual.pValueÉExpectedOrActual__pValueÊExpectedOrActual.TypeClassËExpectedOrActual__typeClassÌExpectedOrActual.diSizeÍExpectedOrActual__sizeOfÎExpectedOrActualÏAnyExpectedOrActualÐ$1ab30776-5b8c-4eb4-8ece-b0c087a9b905Ñç Returns a specific number of characters of a string, starting from left ``LEFT (STR, SIZE)`` means: Return the first ``SIZE`` characters from the left in string ``STR`` .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SUS' *) VarSTRING1 := LEFT ('SUSI',3); :return: Resulting string .. cds:ranges:: :STR: |StringRange255| :SIZE: [0..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Ò 3595690875ÓLEFTÔ String to be analyzedÕ Number of characters ÖSIZE×$305543de-642d-43ec-a366-8f771da1539dØj Close a file specified by handle :return: Returns the runtime system error code (see CmpErrors.library)Ù 3248367802ÚSysFileCloseÛ Handle of the fileÜhFileÝ$81419da6-4d52-4d99-806c-f8e599dcca66Þsysfile, 3.5.9.0 (system)ßÀ | Open or create file. A standard path will be added to the filename, if no path is specified in the file name. | If a file extension is specified in the settings, this path will be used (see category settings). .. note:: File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/) and not with a Backslash (\\)! :return: Handle to the file or RTS_INVALID_HANDLE if failedà 4264633759áSysFileOpenâ File name. File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/) and not with a Backslash (\\)!ãszFileäÎ | Requested access mode to the file. See |ACCESS_MODE| for details. | Here find some examples: :AM_READ: If file does not exist, an error is returned. If the file exists, the file will be opened :AM_WRITE: If file does not exist, a new file will be created. If the file exists, it will be overwritten! :AM_APPEND: If the file does not exist, an error is returned. If the file exists, the file will be opened åamæ= Pointer to runtime system error code (see CmpErrors.library)ç$4e9f3f6c-f1b2-41f5-8e6e-4c9d0f916cb0è\ Read number of bytes out of the file :return: Number of bytes read from file. 0=if failedé 3409369966êSysFileReadë Handle of the file ì Pointer to buffer for read dataí pbyBufferîL Number of bytes to read from file. Must be less or equal the buffer size! ïulSizeð$db542d11-09a1-412e-ba36-040235d1f6a6ñ Write number of bytes to the file. File must be opened with |AM_WRITE| or |AM_APPEND|. :return: Number of bytes written to the file. 0=if failedò 4012792623óSysFileWriteô/ Pointer to buffer with data to write to file õM Number of bytes to write in the file. Must be less or equal the buffer size!ö$a0372ebf-eb9b-4113-942f-e5da73df71dd÷ 4221632325øLicenseFunctionsùdwStructSizeúpfGetUserLicenseValueûpfConfDynLicChallengeüpfReqDynLicChallengeý 1958349117þLICENSEFUNCTIONSÿ$54113402-1f1a-4625-9cf5-98f840f808d4$component manager, 3.5.13.0 (system) 3247230088CMRegisterLicenseFunctionslicenseFunctions$9d4b8b53-13e6-49d1-812f-48d05c3b6bde 674459537UnregisterLicenseFunctionslf$fad78c76-def3-4349-88ac-a7d7b102610049087098SysTargetGetIdpulTargetId/External, Compiled, Typified, Located, Internal$2882c277-8c61-400a-b7f8-fedf8770b0b5 1255376976SysTargetGetTypepulType$8626ba32-8246-4efc-a245-c6603743ef15 2879083722RegisterLicenseFunctions$3a698490-0f8e-4b05-ba85-54b389411e5bCodeMGetContentByFirmcode2 3702754381CodeMGetContentByFirmcodeduiFirmcodeduiProductcodelicenseEntryRTS_CMBOXENTRY*Inout, IsCompiled, RelativeStack, Typified$22f4fc39-59c8-43ad-9dcc-9e20e4b9a58bcmpcodemeter, 3.5.5.0 (system) 669955528 musBoxMask¡mulBoxSerial¢ mflFiCtrl£mulFirmCode¤musFirmAccessCounter¥musFirmItemRef¦mulFirmUpdateCounter§mulFirmPreciseTime¨mausFirmItemText©mulProductCodeª mulFeatureMap«mulUnitCounter¬mulLicenseQuantitymusProductItemRef® 3504795969¯$b624d05d-ae57-4b33-b835-ddb290871f29°<Structure, NonVirtual, Compiled, Typified, Located, Internal±ignore_link_all² 3026495541³"CodeMGetFeatureMapByFirmcode_local´%Compiled, Typified, Located, Internalµ$8c1740e2-dc30-4803-9b05-2837c6a74377¶ 2158031774·myUDINT_TO_STRING¸i2¹bytº$126f9170-8764-47f4-b18b-ad639b548e48» 1069101478¼CMAddComponent½pszComponent¾udiCmpId¿ udiVersionÀ$90843a1a-36bb-40cc-8a00-b137a07f82ddÁ 1408105662ÂSysFileGetSizeByHandleÃ$203db6ac-ecc2-4b85-b1e0-d533c0597079ÄØ <description> Test and set a bit in an ULONG variable in one processor step. This operation is to provide a multitasking save operation. </description> <result><p>RESULT: Returns the runtime system error code (see CmpErrors.library). ERR_OK: If bit could be set and was set before, ERR_FAILED: If bit is still set </p></result>Å 3306130432ÆSysCpuTestAndSetÇ <param name="pulValue" type="IN">Pointer to the unsigned value to test and set a bit inside in one atomic processor step</param> ÈpulValueÉp <param name="ulBit" type="IN">Bit number inside the variable to test and set. 0=first bit, 31=last bit</param> ÊulBitË$1b91f178-37d6-463f-a613-9f24443e9396Ì!syscpuhandling, 3.5.13.0 (system)Í 2702096027ÎmySTRING_TO_UDINTÏuiBaseÐ$7c03f9aa-a908-4345-8fdc-2902079aa956Ѻ Returns a specific number of characters of a string, starting from a specific position ``MID (STR, LEN, POS)`` means: Retrieve ``LEN`` characters from the ``STR`` string beginning with the character at position ``POS``. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'US' *) VarSTRING1 := MID ('SUSI',2,2); :return: Partial string of ``STR`` .. cds:ranges:: :STR: |StringRange255| :LEN: [0..255] :POS: [0,1..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Ò 176614815ÓMIDÔ, Number of characters, counted from the leftÕ& Start position for the partial stringÖPOS×$83426200-a15f-4a0f-939b-ec775900aa99Øë Returns a specific number of characters of a string, starting from right ``RIGHT (STR, SIZE)`` means: Return the first ``SIZE`` characters from the right in string ``STR`` .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'USI' *) VarSTRING1 := RIGHT ('SUSI',3); :return: Resulting string .. cds:ranges:: :STR: |StringRange255| :SIZE: [0..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Ù 1359190538ÚRIGHTÛ Number of characters ÜiResultÝ$e1f7857b-7abd-48e8-91d6-d6b740f939c9ÞB This function runs all test suites that have been initialized. ß 740068242àRUNá$bd49b256-e7ba-4b73-b669-380d1f428417âc This function declares a new test (if it has not been already declared in an earlier cycle) ã 2860862278äTESTåCounterTestSuiteAddressæCounterTestNameç$8dd61791-c583-4b5e-b392-3e0ecf487849è 563735047é TEST_FINISHEDê$9922b45b-fca5-4323-be8f-93710371a816ëÇ Extracts the components of a REAL floating point number without interpreting them. Extracts the sign, (biased) exponent, and mantissa of a REAL value. We assume the IEEE 754 binary32 format. All values, including NaN and Infinity are supported. See http://en.wikipedia.org/wiki/Single_precision_floating-point_formatì 2007885473í__ExtractRealRawîC The mantissa as stored in the REAL, without the leading bit 24 setïpudið$3d3aa07e-b7ec-4780-af79-d77e0e2cb50fñ 1475096513ò__HelpLConvertó$26023af2-e263-44c0-b290-4197ca6caa6aô 202956791õ__ExtractLRealRawöpuli÷uliø$e543e1fd-2bb8-4ac1-a749-ebad37d711fcùÑ Replaces a specific number of characters of a string by another string ``REPLACE(STR1, STR2, L, P)`` means: Replace ``L`` characters from ``STR1`` by ``STR2``, beginning with the character in the ``P`` position. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SKYSI' *) VarSTRING1 := REPLACE ('SUXYSI','K',2,2); :return: Resulting string .. cds:ranges:: :STR1: |StringRange255| :STR2: |StringRange255| :L: [0..255] :P: [0,1..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ú 517832753ûREPLACEü# String of which a part is replacedý) String which replaces a part of ``STR1``þ) Number of characters, counting from leftÿLs Start position of the characters to be replaced. ``P = 1`` or ``P = 0`` are both addressing the first characterP indexDestindexSource$f57e2f3d-6edd-4042-ac47-a14833c273c8 448115908 LogOptions Name OF logger Logger active/inactive bEnable See above log types uiType0 Log filter. It is a combination of log classes uiFilter MAX number OF LOG entries iMaxEntries Max file size iMaxFileSize Max number of files iMaxFiles 2267289889 LOGOPTIONS$f29300f0-f83d-490d-9603-d3255fa3095b 2950684213ST_LogCMPLOGCmpLogLOGTYPESLogTypesLT_STDhLogCreated 3954219779¡ST_LOG¢$6fa083cf-0816-49b4-9f1f-643d3266b682£ADDLOGENTRY¤PRVCREATENEWLOGGER¥? registers a Log component in devicelog and accept log messages¦ 2253974937§CmpCfLog¨hCmp© hStdLoggerªResult«vendorId¬cmpId 3274057501®CMPCFLOG¯$e54b0b42-bf68-4a14-aacc-2136ead10c0b° 3109562382± 1341592248²FB_Init³P if TRUE, the instance afterwards gets moved into the copy code (online change) ´$4b49c03c-b562-4a6d-a8a9-76b527f97a0eµ 1919457194¶AddLogEntry· udiClassId¸ udiErrorId¹ udiInfoIdº$f39143e0-de49-4075-8bca-59cb6ff62612» 281198645¼FB_Exit½$3ba547bb-218f-4ecb-aa09-3033908bd527¾ 2650069375¿ 1638336279À 3519561854ÁprvCreateNewLoggerÂ$e2af6d5a-2680-44e7-b66a-3c3897d9cb0aà Deletes a number of characters from a string ``DELETE (STR, L, POS)`` means: Delete ``L`` characters from ``STR``, beginning with the character in the ``POS`` position. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SUSI' *) VarSTRING1 := DELETE ('SUXYSI',2,3); :return: String remaining after deletion .. cds:ranges:: :STR: |StringRange255| :LEN: [0..255] :POS: [0,1..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Ä 1739723417ÅDELETEÆ String to be modfiedÇA Length of the partial string to be deleted, number of charactersÈZ Position in ``STR`` after which the deletion starts. Counted from left, starting with 1ÉindexResultÊbSkipË$11510cc9-b7a0-4dd6-8600-402b1638691eÌ 1693369342ÍTO_LOWERÎ$1e55f1d2-e8f8-4c11-a343-0d7e1cf88411Ï 2665969477Ð AppGetCurrentÑ$7b15c08a-0653-4e21-bae0-a0b9c0885693Ò 1239233586ÓAppGetApplicationInfoÔAPPLICATION_INFOÕpAppÖ$a1d0114c-e318-46c3-9f61-93c7e287c132×Ï <category>Application information</category> * <description> * Contains the application information as specified in the application property dialog in CoDeSys. * </description> * <element name="pstProjectName" type="OUT">Pointer project name</element> * <element name="pstAuthor" type="OUT">Pointer to author</element> * <element name="pstVersion" type="OUT">Pointer to version as string in the format "x.x.x.x"</element> * <element name="pstDescription" type="OUT">Pointer to description</element> * <element name="pstProfile" type="OUT">Pointer to used CoDeSys profile name</element> * <element name="dtLastChanges" type="OUT">Time and date of last modification of the application (UTC)</element> Ø 2334584805ÙpstProjectNameÚ pstAuthorÛ pstVersionÜpstDescriptionÝ pstProfileÞ dtLastChangesß 3658178702à$d8358556-d5ee-4109-b0bb-55d3f6ee3e15á 2020938782âPrintfã. The buffer, where the result will be returnedä cbpResultå" The capacity of the result bufferæuiResultCapacityç0 The format string used for formatting the valueè cbpFormatéV A pointer to the begin of the piece of memory, where the value to format is stored.êG A __SYSTEM.TYPE_CLASS value describing the type of the value to formatë typeClassì$ba8d48f4-b190-46c7-be6b-9336508c391cí iecstringutils, 3.5.8.0 (system)îIecTaskGetInfo2ï 711891942ðIecTaskGetInfo2_Internalñ TASK_INFOò$c6d3a5e1-7385-4753-b73c-f3b0df563229ó 2900023005ô tIntervalõ tWatchdogTimeö tCycleTime÷tAverageCycleTimeø tMaxCycleTimeù tMinCycleTimeú 3657274649û$b83e07ab-a3d0-41a5-8f83-2de38b279984ü 1673363469ýFctConfDynLicChallengeþ$f9972cfc-8a33-4e40-85fb-7109a5d893d5ÿ 2401095727FctGetUserLicenseValue$c20edd8e-8e57-4f8a-87df-58345eb4164f 2469315043FctReqDynLicChallenge$a38e7aa2-cfa8-41d5-adf5-85021e7b5eaa 1900323445CMUnregisterLicenseFunctions$f1a79dd5-021a-4cf4-ad25-7ec56df08e56CodeMGetContentByFirmcode_local 3040543732CMRemoveComponent hComponent$11bbd436-1d57-4172-8904-e44dc772fedb 3645932812LogClose$c8aaeb24-0f38-477e-9044-1ecd207cbde3 1735259385 LogDelete$52842e3b-7e02-4eaf-bb44-a5db3758476c 2881342543LogOpen$8b85ed35-90d0-4d91-aef7-00ef0b080aad 1116480908 LogCreatepOptions$b35829e6-d182-4ea6-91ec-f4e82032a361Y Does a sprintf for the given format string and the given variable. Will not return NULL!k link even in simulation mode prevent introducing a signature check lately to prevent compatibility flawsm4export_nosignature 120951582 StuSprintf the formatstring pstFormat¡2 the address of the variable that shall be printed¢8 the type of the variable as a __SYSTEM.TYPE_CLASS value£ udiVarType¤+ the buffer where the text is to be printed¥ the size of the buffer in bytes¦dwBufferSize§$4933794d-6fe5-4285-9a7e-ea7baab7d3f3¨stringutils, 3.5.14.0 (system)© 1908096708ª"I_TestResultFormatter__Struct__257«GLocal, IsCompiled, RelativeInstance, NoInit, Implicit, NoCopy, Typified¬ 1713818289"I_TESTRESULTFORMATTER__STRUCT__257®=Structure, NonVirtual, Generated, Compiled, Typified, Located¯ 2646927996°%I_AssertMessageFormatter__Struct__437± 3579290701²%I_ASSERTMESSAGEFORMATTER__STRUCT__437³__download__code´__online__change__codeµglobal__init¶__bInitRetains·__Index¸ __bInCopyCode¹GLOBAL__EXITº"__DATASEGMENTFLAGS__224__GVL__Init»$36b719e5-3a34-450b-b806-362248c6fc69¼#__COMPILE_CONSTANTS__225__GVL__Init½$db173c48-0431-4ee2-8080-d72c759a68e3¾__WATCHVARS__226__GVL__Init¿$e4086481-b65b-4bfc-821c-c1f278b8711dÀ1__ALLOCATEDIMPLICITREFERENCETYPES__227__GVL__InitÁ$4e6b58d5-7a7d-4d43-b710-af56f2531e62Â#CONSTANTS__228__SYSTEM____GVL__InitÃ$c912f995-f4b5-48bd-9416-f36b0846c0e1ÄTYPE_CLASS__399__GVL__InitÅ$f4fafa0b-0199-4a4a-82c6-354c2db388c0Æ$_IMPLICIT_KINDOFTASK__582__GVL__InitÇ$071b2dea-1a86-5d57-8ce3-3f8b7f1f1b55È/_IMPLICIT_TASK_CONFIG_VARIABLES__985__GVL__InitÉ$91c9263a-862c-5f16-92ba-ff58510973daÊ/_IMPLICIT_TARGET_INFO_VARIABLES__137__GVL__InitË$0de9e5f1-f2f0-4550-99b9-b0c9c5d532d1Ì!__APPLICATIONNAME__138__GVL__InitÍ$7e624f9d-69d6-42d1-923c-54726d605ee6Î%__TASKSPECIFICINFOGVL__139__GVL__InitÏ$90165385-435d-46ce-bd91-03a9cc5300c5Ð__TYPECLASS__989__GVL__InitÑ$93b6cd3f-8269-4c38-ace2-cca38ff00963Ò&__CONVERSION_CONSTANTS__994__GVL__InitÓ __Left__2Ô,Local, IsCompiled, Absolut, NoInit, ImplicitÕ __Right__3Ö$8282e63e-5bdc-4a17-9c51-c6019a0fc9eb×(__LCONVERSION_CONSTANTS__1076__GVL__InitØ$7b8ad65d-ee2e-4a1e-8258-daddee07b488Ù __SETUP__CALL__POU__1__GVL__InitÚPRG_TEST__598__GVL__InitÛAPPLICATION_CONTENTÜ Offsets in stringtable!ÝSizeOfÞudiInfoSizeßudiInfoVersionà uiNumPOUsá uiNumDUTsâ uiNumGVLsãuiNumFBsäuiNumMethodså uiNumLibsæarPOUsçMinusèarDUTséarGVLsêarFBsë arMethodsìarLibsístringtableîOutput, IsCompiledïInput, IsCompiledðInput, IsCompiled, ImplicitñCompiledòNonVirtual, Generated, Compiledó1Structure, Generated, Compiled, Typified, LocatedôRemovedAfterDownloadõ__RELOCATE__CODEö__PAreaOffsetsNew÷__dwVersionø__PAreaOffsetsInù __pAdrHelpú__iû__jü__RELOCATE__RESULTý __dwOffsetþ__wHighÿ__wLow__wCount__PRELOCATIONTABLE__PAreaOffsets8Generated, NoCompareWithNew, Compiled, Typified, Located 669599553 __DataSegmentFlags VarGlobal) special flag to indicate an area segmentDA_Data=Local, ReplacedConstant, Constant, Enum, IsCompiled, TypifiedDA_ConstantDA_Input DA_Output DA_Memory DA_RetainDA_CodeDA_Area DA_PersistentEnum, Compiled, Typified 2121841030__COMPILE_CONSTANTSsystem_variable__CONTAINS_COPY_CODEAReplacedConstant, Constant, Global, IsCompiled, Absolut, Typified 629370838__WatchVarsCompiled, Typified, Internal72176917!__AllocatedImplicitReferenceTypes'Generated, Compiled, Typified, Internal 3976988861 Constants Like x86, ARM etc¡ bLittleEndian¢A the runtime version number as defined by the device description.£RuntimeVersion¤<Constant, Global, IsCompiled, Absolut, Initialized, Typified¥S the compiler version as defined in the build options (not OEM Customized Version!)¦CompilerVersion§. TRUE if project is running in simulation mode¨bSimulationMode©e Number of Bits per Register. Possible values: 16 (c16x, 186), 32 (x86, ARM, PPC ...), 64 (x86-64Bit)ª nRegisterSize«a the pack mode as defined in the device description. Should match to the pack mode of the runtime¬ nPackMode Does the target support an FPU®bFPUSupport¯4 the runtime version coded in the nibbles of a DWORD°RuntimeVersionNumeric±5 the compiler version coded in the nibbles of a DWORD²CompilerVersionNumeric³( Does the target support multiple cores?´bMulticoreSupportµR The optimal vector size for a vector of lreals, or 1 if no vectors are available.¶vcOptimalLREAL·Q The optimal vector size for a vector of reals, or 1 if no vectors are available.¸ vcOptimalREAL¹)Compiled, Typified, SystemNamespaceForcedº 997431391» TYPE_BOOL¼TYPE_BIT½ TYPE_BYTE¾ TYPE_WORD¿ TYPE_DWORDÀ TYPE_LWORDÁ TYPE_SINTÂTYPE_INTà TYPE_DINTÄ TYPE_LINTÅ TYPE_USINTÆ TYPE_UINTÇ TYPE_UDINTÈ TYPE_ULINTÉ TYPE_REALÊ TYPE_LREALËTYPE_STRINGÌTYPE_WSTRINGÍ TYPE_TIMEÎ TYPE_DATEÏTYPE_DATEANDTIMEÐTYPE_TIMEOFDAYÑTYPE_POINTERÒTYPE_REFERENCEÓ TYPE_SUBRANGEÔ TYPE_ENUMÕ TYPE_ARRAYÖTYPE_PARAMS×TYPE_USERDEFØ TYPE_NONEÙTYPE_ANYÚTYPE_ANYBITÛTYPE_ANYDATEÜTYPE_ANYINTÝTYPE_ANYNUMÞTYPE_ANYREALß TYPE_LAZYà TYPE_LTIMEá TYPE_BITCONSTâ 3708279434ã_Implicit_KindOfTaskä_implicit_cyclicå_implicit_eventæ_implicit_externalç_implicit_freewheelingè_implicit_parentsyncéno_precompile_checksê 2361088820ë_Implicit_Task_Config_Variablesì$166ce3b9-d8b4-4ebd-8cff-b06fc4f725eaí__APPLICATIONNAMEî__ApplicationNameïTaskð__task_string_tableñ2Global, IsCompiled, Absolut, Initialized, Typifiedò$__Implicit_Jitter_Distribution_Arrayó__CYCLE__CODE__TASKô__Taskõig_task_config_infoö'Compiled, InhibitOnlineChange, Typified÷__ArrayData__994__2ø__ApplicationInfoVariablesùno_initú appContentû?Constant, Global, IsCompiled, Absolut, NoInit, NoCopy, Typifiedü__BlobInit__1153__0ý__DataSegmentInfoVariablesþinit_on_onlchangeÿarrdataSegments dataSegments __BlobInit__994__0 __BlobInit__994__1 IMPLICIT__DEFINITIONS POU__0__START__ADDRESS -Global, IsCompiled, Absolut, NoInit, Implicit POU__1__START__ADDRESS POU__52__START__ADDRESS POU__136__START__ADDRESS POU__140__START__ADDRESS POU__141__START__ADDRESS POU__144__START__ADDRESS POU__145__START__ADDRESS POU__146__START__ADDRESS POU__147__START__ADDRESS POU__148__START__ADDRESS POU__597__START__ADDRESS POU__149__START__ADDRESS POU__150__START__ADDRESS POU__151__START__ADDRESS POU__153__START__ADDRESS POU__154__START__ADDRESS POU__155__START__ADDRESS POU__156__START__ADDRESS POU__157__START__ADDRESS POU__158__START__ADDRESS POU__159__START__ADDRESS POU__160__START__ADDRESS POU__164__START__ADDRESS POU__169__START__ADDRESS POU__174__START__ADDRESS POU__179__START__ADDRESS POU__184__START__ADDRESS¡ POU__189__START__ADDRESS¢ POU__194__START__ADDRESS£ POU__199__START__ADDRESS¤ POU__204__START__ADDRESS¥ POU__209__START__ADDRESS¦ POU__214__START__ADDRESS§ POU__216__START__ADDRESS¨ POU__220__START__ADDRESS© POU__222__START__ADDRESSª POU__223__START__ADDRESS« POU__229__START__ADDRESS¬ POU__230__START__ADDRESS POU__231__START__ADDRESS® POU__232__START__ADDRESS¯ POU__251__START__ADDRESS° POU__255__START__ADDRESS± POU__256__START__ADDRESS² POU__253__START__ADDRESS³ POU__252__START__ADDRESS´ POU__254__START__ADDRESSµ POU__259__START__ADDRESS¶ POU__239__START__ADDRESS· POU__243__START__ADDRESS¸ POU__241__START__ADDRESS¹ POU__240__START__ADDRESSº POU__244__START__ADDRESS» POU__242__START__ADDRESS¼ POU__339__START__ADDRESS½ POU__335__START__ADDRESS¾ POU__332__START__ADDRESS¿ POU__334__START__ADDRESSÀ POU__333__START__ADDRESSÁ POU__331__START__ADDRESS POU__357__START__ADDRESSà POU__350__START__ADDRESSÄ POU__354__START__ADDRESSÅ POU__352__START__ADDRESSÆ POU__351__START__ADDRESSÇ POU__360__START__ADDRESSÈ POU__358__START__ADDRESSÉ POU__356__START__ADDRESSÊ POU__353__START__ADDRESSË POU__355__START__ADDRESSÌ POU__359__START__ADDRESSÍ POU__371__START__ADDRESSÎ POU__368__START__ADDRESSÏ POU__370__START__ADDRESSÐ POU__369__START__ADDRESSÑ POU__367__START__ADDRESSÒ POU__395__START__ADDRESSÓ POU__392__START__ADDRESSÔ POU__398__START__ADDRESSÕ POU__380__START__ADDRESSÖ POU__378__START__ADDRESS× POU__385__START__ADDRESSØ POU__383__START__ADDRESSÙ POU__388__START__ADDRESSÚ POU__379__START__ADDRESSÛ POU__381__START__ADDRESSÜ POU__384__START__ADDRESSÝ POU__387__START__ADDRESSÞ POU__386__START__ADDRESSß POU__389__START__ADDRESSà POU__382__START__ADDRESSá POU__420__START__ADDRESSâ POU__424__START__ADDRESSã POU__408__START__ADDRESSä POU__406__START__ADDRESSå POU__413__START__ADDRESSæ POU__416__START__ADDRESSç POU__407__START__ADDRESSè POU__409__START__ADDRESSé POU__412__START__ADDRESSê POU__415__START__ADDRESSë POU__414__START__ADDRESSì POU__417__START__ADDRESSí POU__411__START__ADDRESSî POU__410__START__ADDRESSï POU__431__START__ADDRESSð POU__435__START__ADDRESSñ POU__433__START__ADDRESSò POU__432__START__ADDRESSó POU__436__START__ADDRESSô POU__434__START__ADDRESSõ POU__439__START__ADDRESSö POU__267__START__ADDRESS÷ POU__275__START__ADDRESSø POU__293__START__ADDRESSù POU__291__START__ADDRESSú POU__306__START__ADDRESSû POU__311__START__ADDRESSü POU__315__START__ADDRESSý POU__318__START__ADDRESSþ POU__278__START__ADDRESSÿ POU__322__START__ADDRESS!POU__313__START__ADDRESS!POU__289__START__ADDRESS!POU__266__START__ADDRESS!POU__300__START__ADDRESS!POU__269__START__ADDRESS !POU__292__START__ADDRESS!POU__308__START__ADDRESS!POU__312__START__ADDRESS!POU__279__START__ADDRESS!POU__301__START__ADDRESS!POU__276__START__ADDRESS!POU__290__START__ADDRESS!POU__271__START__ADDRESS!POU__317__START__ADDRESS!POU__274__START__ADDRESS!POU__299__START__ADDRESS!POU__319__START__ADDRESS!POU__295__START__ADDRESS!POU__304__START__ADDRESS!POU__309__START__ADDRESS!POU__302__START__ADDRESS!POU__286__START__ADDRESS!POU__307__START__ADDRESS!POU__296__START__ADDRESS!POU__283__START__ADDRESS!POU__298__START__ADDRESS!POU__316__START__ADDRESS!POU__297__START__ADDRESS!POU__287__START__ADDRESS!POU__281__START__ADDRESS!POU__314__START__ADDRESS!POU__282__START__ADDRESS !POU__284__START__ADDRESS¡!POU__310__START__ADDRESS¢!POU__303__START__ADDRESS£!POU__273__START__ADDRESS¤!POU__320__START__ADDRESS¥!POU__277__START__ADDRESS¦!POU__270__START__ADDRESS§!POU__285__START__ADDRESS¨!POU__280__START__ADDRESS©!POU__268__START__ADDRESSª!POU__294__START__ADDRESS«!POU__272__START__ADDRESS¬!POU__321__START__ADDRESS!POU__323__START__ADDRESS®!POU__288__START__ADDRESS¯!POU__305__START__ADDRESS°!POU__342__START__ADDRESS±!POU__451__START__ADDRESS²!POU__448__START__ADDRESS³!POU__450__START__ADDRESS´!POU__449__START__ADDRESSµ!POU__447__START__ADDRESS¶!POU__456__START__ADDRESS·!POU__467__START__ADDRESS¸!POU__464__START__ADDRESS¹!POU__466__START__ADDRESSº!POU__465__START__ADDRESS»!POU__463__START__ADDRESS¼!POU__517__START__ADDRESS½!POU__519__START__ADDRESS¾!POU__520__START__ADDRESS¿!POU__521__START__ADDRESSÀ!POU__510__START__ADDRESSÁ!POU__511__START__ADDRESSÂ!POU__516__START__ADDRESSÃ!POU__515__START__ADDRESSÄ!POU__514__START__ADDRESSÅ!POU__508__START__ADDRESSÆ!POU__512__START__ADDRESSÇ!POU__518__START__ADDRESSÈ!POU__509__START__ADDRESSÉ!POU__513__START__ADDRESSÊ!POU__494__START__ADDRESSË!POU__486__START__ADDRESSÌ!POU__491__START__ADDRESSÍ!POU__495__START__ADDRESSÎ!POU__492__START__ADDRESSÏ!POU__498__START__ADDRESSÐ!POU__497__START__ADDRESSÑ!POU__501__START__ADDRESSÒ!POU__493__START__ADDRESSÓ!POU__487__START__ADDRESSÔ!POU__485__START__ADDRESSÕ!POU__489__START__ADDRESSÖ!POU__496__START__ADDRESS×!POU__499__START__ADDRESSØ!POU__490__START__ADDRESSÙ!POU__500__START__ADDRESSÚ!POU__488__START__ADDRESSÛ!POU__532__START__ADDRESSÜ!POU__530__START__ADDRESSÝ!POU__535__START__ADDRESSÞ!POU__537__START__ADDRESSß!POU__534__START__ADDRESSà!POU__531__START__ADDRESSá!POU__538__START__ADDRESSâ!POU__536__START__ADDRESSã!POU__533__START__ADDRESSä!POU__478__START__ADDRESSå!POU__475__START__ADDRESSæ!POU__477__START__ADDRESSç!POU__476__START__ADDRESSè!POU__474__START__ADDRESSé!POU__550__START__ADDRESSê!POU__565__START__ADDRESSë!POU__563__START__ADDRESSì!POU__568__START__ADDRESSí!POU__560__START__ADDRESSî!POU__555__START__ADDRESSï!POU__556__START__ADDRESSð!POU__564__START__ADDRESSñ!POU__552__START__ADDRESSò!POU__547__START__ADDRESSó!POU__554__START__ADDRESSô!POU__561__START__ADDRESSõ!POU__567__START__ADDRESSö!POU__562__START__ADDRESS÷!POU__551__START__ADDRESSø!POU__557__START__ADDRESSù!POU__558__START__ADDRESSú!POU__553__START__ADDRESSû!POU__548__START__ADDRESSü!POU__559__START__ADDRESSý!POU__549__START__ADDRESSþ!POU__569__START__ADDRESSÿ!POU__566__START__ADDRESS"POU__572__START__ADDRESS"POU__576__START__ADDRESS"POU__581__START__ADDRESS"POU__587__START__ADDRESS"POU__592__START__ADDRESS "POU__628__START__ADDRESS"POU__620__START__ADDRESS"POU__624__START__ADDRESS"POU__653__START__ADDRESS"POU__645__START__ADDRESS"POU__615__START__ADDRESS"POU__629__START__ADDRESS"POU__616__START__ADDRESS"POU__610__START__ADDRESS"POU__622__START__ADDRESS"POU__623__START__ADDRESS"POU__631__START__ADDRESS"POU__654__START__ADDRESS"POU__642__START__ADDRESS"POU__617__START__ADDRESS"POU__637__START__ADDRESS"POU__609__START__ADDRESS"POU__625__START__ADDRESS"POU__607__START__ADDRESS"POU__606__START__ADDRESS"POU__612__START__ADDRESS"POU__632__START__ADDRESS"POU__651__START__ADDRESS"POU__634__START__ADDRESS"POU__613__START__ADDRESS"POU__646__START__ADDRESS"POU__640__START__ADDRESS "POU__655__START__ADDRESS¡"POU__638__START__ADDRESS¢"POU__652__START__ADDRESS£"POU__639__START__ADDRESS¤"POU__643__START__ADDRESS¥"POU__611__START__ADDRESS¦"POU__635__START__ADDRESS§"POU__626__START__ADDRESS¨"POU__633__START__ADDRESS©"POU__619__START__ADDRESSª"POU__627__START__ADDRESS«"POU__636__START__ADDRESS¬"POU__608__START__ADDRESS"POU__630__START__ADDRESS®"POU__650__START__ADDRESS¯"POU__618__START__ADDRESS°"POU__621__START__ADDRESS±"POU__649__START__ADDRESS²"POU__644__START__ADDRESS³"POU__648__START__ADDRESS´"POU__614__START__ADDRESSµ"POU__647__START__ADDRESS¶"POU__641__START__ADDRESS·"POU__668__START__ADDRESS¸"POU__664__START__ADDRESS¹"POU__672__START__ADDRESSº"POU__669__START__ADDRESS»"POU__667__START__ADDRESS¼"POU__665__START__ADDRESS½"POU__671__START__ADDRESS¾"POU__666__START__ADDRESS¿"POU__670__START__ADDRESSÀ"POU__663__START__ADDRESSÁ"POU__683__START__ADDRESSÂ"POU__681__START__ADDRESSÃ"POU__685__START__ADDRESSÄ"POU__682__START__ADDRESSÅ"POU__684__START__ADDRESSÆ"POU__686__START__ADDRESSÇ"POU__680__START__ADDRESSÈ"POU__702__START__ADDRESSÉ"POU__695__START__ADDRESSÊ"POU__703__START__ADDRESSË"POU__701__START__ADDRESSÌ"POU__696__START__ADDRESSÍ"POU__698__START__ADDRESSÎ"POU__700__START__ADDRESSÏ"POU__697__START__ADDRESSÐ"POU__699__START__ADDRESSÑ"POU__694__START__ADDRESSÒ"POU__763__START__ADDRESSÓ"POU__736__START__ADDRESSÔ"POU__718__START__ADDRESSÕ"POU__757__START__ADDRESSÖ"POU__750__START__ADDRESS×"POU__761__START__ADDRESSØ"POU__762__START__ADDRESSÙ"POU__712__START__ADDRESSÚ"POU__722__START__ADDRESSÛ"POU__759__START__ADDRESSÜ"POU__747__START__ADDRESSÝ"POU__760__START__ADDRESSÞ"POU__749__START__ADDRESSß"POU__772__START__ADDRESSà"POU__726__START__ADDRESSá"POU__753__START__ADDRESSâ"POU__752__START__ADDRESSã"POU__744__START__ADDRESSä"POU__754__START__ADDRESSå"POU__764__START__ADDRESSæ"POU__769__START__ADDRESSç"POU__758__START__ADDRESSè"POU__734__START__ADDRESSé"POU__755__START__ADDRESSê"POU__733__START__ADDRESSë"POU__719__START__ADDRESSì"POU__730__START__ADDRESSí"POU__743__START__ADDRESSî"POU__739__START__ADDRESSï"POU__720__START__ADDRESSð"POU__725__START__ADDRESSñ"POU__740__START__ADDRESSò"POU__723__START__ADDRESSó"POU__756__START__ADDRESSô"POU__735__START__ADDRESSõ"POU__771__START__ADDRESSö"POU__727__START__ADDRESS÷"POU__731__START__ADDRESSø"POU__716__START__ADDRESSù"POU__751__START__ADDRESSú"POU__770__START__ADDRESSû"POU__748__START__ADDRESSü"POU__717__START__ADDRESSý"POU__721__START__ADDRESSþ"POU__714__START__ADDRESSÿ"POU__711__START__ADDRESS#POU__715__START__ADDRESS#POU__765__START__ADDRESS#POU__738__START__ADDRESS#POU__713__START__ADDRESS#POU__729__START__ADDRESS #POU__737__START__ADDRESS#POU__746__START__ADDRESS#POU__742__START__ADDRESS#POU__768__START__ADDRESS#POU__728__START__ADDRESS#POU__773__START__ADDRESS#POU__724__START__ADDRESS#POU__745__START__ADDRESS#POU__767__START__ADDRESS#POU__741__START__ADDRESS#POU__732__START__ADDRESS#POU__766__START__ADDRESS#POU__788__START__ADDRESS#POU__782__START__ADDRESS#POU__786__START__ADDRESS#POU__787__START__ADDRESS#POU__785__START__ADDRESS#POU__783__START__ADDRESS#POU__784__START__ADDRESS#POU__781__START__ADDRESS#POU__830__START__ADDRESS#POU__811__START__ADDRESS#POU__839__START__ADDRESS#POU__838__START__ADDRESS#POU__806__START__ADDRESS#POU__826__START__ADDRESS#POU__802__START__ADDRESS #POU__821__START__ADDRESS¡#POU__820__START__ADDRESS¢#POU__810__START__ADDRESS£#POU__798__START__ADDRESS¤#POU__835__START__ADDRESS¥#POU__828__START__ADDRESS¦#POU__831__START__ADDRESS§#POU__819__START__ADDRESS¨#POU__808__START__ADDRESS©#POU__841__START__ADDRESSª#POU__814__START__ADDRESS«#POU__843__START__ADDRESS¬#POU__805__START__ADDRESS#POU__842__START__ADDRESS®#POU__833__START__ADDRESS¯#POU__824__START__ADDRESS°#POU__797__START__ADDRESS±#POU__817__START__ADDRESS²#POU__800__START__ADDRESS³#POU__827__START__ADDRESS´#POU__807__START__ADDRESSµ#POU__832__START__ADDRESS¶#POU__812__START__ADDRESS·#POU__822__START__ADDRESS¸#POU__823__START__ADDRESS¹#POU__825__START__ADDRESSº#POU__796__START__ADDRESS»#POU__829__START__ADDRESS¼#POU__799__START__ADDRESS½#POU__818__START__ADDRESS¾#POU__816__START__ADDRESS¿#POU__815__START__ADDRESSÀ#POU__840__START__ADDRESSÁ#POU__834__START__ADDRESSÂ#POU__809__START__ADDRESSÃ#POU__801__START__ADDRESSÄ#POU__803__START__ADDRESSÅ#POU__836__START__ADDRESSÆ#POU__804__START__ADDRESSÇ#POU__837__START__ADDRESSÈ#POU__813__START__ADDRESSÉ#POU__852__START__ADDRESSÊ#POU__856__START__ADDRESSË#POU__857__START__ADDRESSÌ#POU__854__START__ADDRESSÍ#POU__853__START__ADDRESSÎ#POU__855__START__ADDRESSÏ#POU__851__START__ADDRESSÐ#POU__876__START__ADDRESSÑ#POU__871__START__ADDRESSÒ#POU__880__START__ADDRESSÓ#POU__889__START__ADDRESSÔ#POU__883__START__ADDRESSÕ#POU__894__START__ADDRESSÖ#POU__869__START__ADDRESS×#POU__886__START__ADDRESSØ#POU__892__START__ADDRESSÙ#POU__884__START__ADDRESSÚ#POU__867__START__ADDRESSÛ#POU__865__START__ADDRESSÜ#POU__875__START__ADDRESSÝ#POU__873__START__ADDRESSÞ#POU__879__START__ADDRESSß#POU__874__START__ADDRESSà#POU__866__START__ADDRESSá#POU__891__START__ADDRESSâ#POU__870__START__ADDRESSã#POU__885__START__ADDRESSä#POU__881__START__ADDRESSå#POU__893__START__ADDRESSæ#POU__887__START__ADDRESSç#POU__872__START__ADDRESSè#POU__888__START__ADDRESSé#POU__878__START__ADDRESSê#POU__882__START__ADDRESSë#POU__868__START__ADDRESSì#POU__890__START__ADDRESSí#POU__877__START__ADDRESSî#POU__903__START__ADDRESSï#POU__908__START__ADDRESSð#POU__905__START__ADDRESSñ#POU__904__START__ADDRESSò#POU__907__START__ADDRESSó#POU__906__START__ADDRESSô#POU__902__START__ADDRESSõ#POU__935__START__ADDRESSö#POU__932__START__ADDRESS÷#POU__934__START__ADDRESSø#POU__933__START__ADDRESSù#POU__931__START__ADDRESSú#POU__919__START__ADDRESSû#POU__917__START__ADDRESSü#POU__923__START__ADDRESSý#POU__920__START__ADDRESSþ#POU__918__START__ADDRESSÿ#POU__922__START__ADDRESS$POU__921__START__ADDRESS$POU__924__START__ADDRESS$POU__916__START__ADDRESS$POU__944__START__ADDRESS$POU__949__START__ADDRESS $POU__946__START__ADDRESS$POU__945__START__ADDRESS$POU__948__START__ADDRESS$POU__947__START__ADDRESS$POU__943__START__ADDRESS$POU__961__START__ADDRESS$POU__958__START__ADDRESS$POU__962__START__ADDRESS$POU__963__START__ADDRESS$POU__964__START__ADDRESS$POU__959__START__ADDRESS$POU__960__START__ADDRESS$POU__957__START__ADDRESS$POU__965__START__ADDRESS$POU__974__START__ADDRESS$POU__978__START__ADDRESS$POU__976__START__ADDRESS$POU__975__START__ADDRESS$POU__977__START__ADDRESS$POU__973__START__ADDRESS$POU__598__START__ADDRESS$POU__984__START__ADDRESS$POU__990__START__ADDRESS$POU__991__START__ADDRESS$POU__992__START__ADDRESS$POU__993__START__ADDRESS$POU__995__START__ADDRESS $POU__996__START__ADDRESS¡$POU__997__START__ADDRESS¢$POU__998__START__ADDRESS£$POU__999__START__ADDRESS¤$POU__1000__START__ADDRESS¥$POU__1001__START__ADDRESS¦$POU__1002__START__ADDRESS§$POU__1003__START__ADDRESS¨$POU__1018__START__ADDRESS©$POU__1015__START__ADDRESSª$POU__1012__START__ADDRESS«$POU__1014__START__ADDRESS¬$POU__1013__START__ADDRESS$POU__1011__START__ADDRESS®$POU__1004__START__ADDRESS¯$POU__1021__START__ADDRESS°$POU__1023__START__ADDRESS±$POU__1024__START__ADDRESS²$POU__1025__START__ADDRESS³$POU__1026__START__ADDRESS´$POU__1027__START__ADDRESSµ$POU__1028__START__ADDRESS¶$POU__1030__START__ADDRESS·$POU__1031__START__ADDRESS¸$POU__1033__START__ADDRESS¹$POU__1034__START__ADDRESSº$POU__1035__START__ADDRESS»$POU__1036__START__ADDRESS¼$POU__1045__START__ADDRESS½$POU__1046__START__ADDRESS¾$POU__1049__START__ADDRESS¿$POU__1053__START__ADDRESSÀ$POU__1057__START__ADDRESSÁ$POU__1054__START__ADDRESSÂ$POU__1058__START__ADDRESSÃ$POU__1067__START__ADDRESSÄ$POU__1068__START__ADDRESSÅ$POU__1069__START__ADDRESSÆ$POU__1070__START__ADDRESSÇ$POU__1071__START__ADDRESSÈ$POU__1072__START__ADDRESSÉ$POU__1073__START__ADDRESSÊ$POU__1074__START__ADDRESSË$POU__1075__START__ADDRESSÌ$POU__1077__START__ADDRESSÍ$POU__1084__START__ADDRESSÎ$POU__1081__START__ADDRESSÏ$POU__1092__START__ADDRESSÐ$POU__1090__START__ADDRESSÑ$POU__1096__START__ADDRESSÒ$POU__1094__START__ADDRESSÓ$POU__1095__START__ADDRESSÔ$POU__1091__START__ADDRESSÕ$POU__1093__START__ADDRESSÖ$POU__1097__START__ADDRESS×$POU__1098__START__ADDRESSØ$POU__1099__START__ADDRESSÙ$POU__1104__START__ADDRESSÚ$POU__1105__START__ADDRESSÛ$POU__1109__START__ADDRESSÜ$POU__1110__START__ADDRESSÝ$POU__1111__START__ADDRESSÞ$POU__1112__START__ADDRESSß$POU__1128__START__ADDRESSà$POU__1129__START__ADDRESSá$POU__1130__START__ADDRESSâ$POU__1131__START__ADDRESSã$POU__1132__START__ADDRESSä$POU__1133__START__ADDRESSå$POU__1134__START__ADDRESSæ$POU__1135__START__ADDRESSç$POU__1136__START__ADDRESSè$POU__1137__START__ADDRESSé$POU__1138__START__ADDRESSê$POU__1139__START__ADDRESSë$POU__1140__START__ADDRESSì$POU__1141__START__ADDRESSí$POU__1142__START__ADDRESSî$POU__1143__START__ADDRESSï$POU__1144__START__ADDRESSð$POU__1145__START__ADDRESSñ$POU__1146__START__ADDRESSò$POU__1147__START__ADDRESSó$%NoInit, Generated, Compiled, Internalô$__GLOBAL_RELOC_DEFINITIONSõ$__RELOCATIONTABLEö$-Global, IsCompiled, Absolut, NoInit, Typified÷$__RELOCATIONTABLENEWø$%Global, IsCompiled, Absolut, Typifiedù$ 2061191735ú$_Implicit_Target_Info_Variablesû$__targetInfoü$Compiled, SuperGlobal, Typifiedý$ 3724943997þ$__ParentApplicationNameÿ$ 2535173239%__TaskSpecificInfoGVL%taskSpecificInfos%taskEntryAddress%taskInfoInvalid% NUM_TASKS %MAX_STACK_SIZE% 3459977258%__TypeClass%__TYPECLASS%%Enum, Compiled, SuperGlobal, Typified%contains_blobinitconst% 3183657202% blobinitconst%initial_value_crc% 4251903600%E% 4043848204%FDEZ% EXP_MASK_REAL%EXP_OFFSET_REAL%MANT_MASK_REAL%RES_EXP_REAL% EXP_BIAS_REAL%NAN_REAL% PINF_REAL% NINF_REAL% 3735606965%__LCONVERSION_CONSTANTS%EXP_MASK_LREAL%EXP_OFFSET_LREAL%MANT_MASK_LREAL% RES_EXP_LREAL %EXP_BIAS_LREAL¡% NAN_LREAL¢% PINF_LREAL£% NINF_LREAL¤%CODE__INIT__VFTABLES¥%VFTABLE__245¦%VFTABLE__233§%VFTABLE__325¨%VFTABLE__344©%VFTABLE__361ª%VFTABLE__372«%VFTABLE__400¬%VFTABLE__425%VFTABLE__261®%VFTABLE__441¯%VFTABLE__457°%VFTABLE__502±%VFTABLE__479²%VFTABLE__524³%VFTABLE__468´%VFTABLE__542µ%VFTABLE__599¶%VFTABLE__656·%VFTABLE__673¸%VFTABLE__687¹%VFTABLE__704º%VFTABLE__774»%VFTABLE__789¼%VFTABLE__844½%VFTABLE__858¾%VFTABLE__895¿%VFTABLE__925À%VFTABLE__909Á%VFTABLE__936Â%VFTABLE__950Ã%VFTABLE__966Ä% VFTABLE__1005Å% VFTABLE__1085Æ%/NoInit, NoCopy, Compiled, SuperGlobal, TypifiedÇ%IMPLICIT_FUNCTION_POINTERSÈ%SIGNATURE__0__FP__ADDRESSÉ%#Global, IsCompiled, Absolut, NoInitÊ%SIGNATURE__1__FP__ADDRESSË%SIGNATURE__2__FP__ADDRESSÌ%SIGNATURE__3__FP__ADDRESSÍ%SIGNATURE__4__FP__ADDRESSÎ%SIGNATURE__5__FP__ADDRESSÏ%SIGNATURE__6__FP__ADDRESSÐ%SIGNATURE__7__FP__ADDRESSÑ%SIGNATURE__8__FP__ADDRESSÒ%SIGNATURE__9__FP__ADDRESSÓ%SIGNATURE__10__FP__ADDRESSÔ%SIGNATURE__11__FP__ADDRESSÕ%SIGNATURE__12__FP__ADDRESSÖ%SIGNATURE__13__FP__ADDRESS×%SIGNATURE__14__FP__ADDRESSØ%SIGNATURE__15__FP__ADDRESSÙ%SIGNATURE__16__FP__ADDRESSÚ%SIGNATURE__17__FP__ADDRESSÛ%SIGNATURE__18__FP__ADDRESSÜ%SIGNATURE__19__FP__ADDRESSÝ%SIGNATURE__20__FP__ADDRESSÞ%SIGNATURE__21__FP__ADDRESSß%SIGNATURE__22__FP__ADDRESSà%SIGNATURE__23__FP__ADDRESSá%SIGNATURE__24__FP__ADDRESSâ%SIGNATURE__25__FP__ADDRESSã%SIGNATURE__26__FP__ADDRESSä%SIGNATURE__27__FP__ADDRESSå%SIGNATURE__28__FP__ADDRESSæ%SIGNATURE__29__FP__ADDRESSç%SIGNATURE__30__FP__ADDRESSè%SIGNATURE__31__FP__ADDRESSé%SIGNATURE__32__FP__ADDRESSê%SIGNATURE__33__FP__ADDRESSë%SIGNATURE__34__FP__ADDRESSì%SIGNATURE__35__FP__ADDRESSí%SIGNATURE__36__FP__ADDRESSî%SIGNATURE__37__FP__ADDRESSï%SIGNATURE__38__FP__ADDRESSð%SIGNATURE__39__FP__ADDRESSñ%SIGNATURE__40__FP__ADDRESSò%SIGNATURE__41__FP__ADDRESSó%SIGNATURE__42__FP__ADDRESSô%SIGNATURE__43__FP__ADDRESSõ%SIGNATURE__44__FP__ADDRESSö%SIGNATURE__45__FP__ADDRESS÷%SIGNATURE__46__FP__ADDRESSø%SIGNATURE__47__FP__ADDRESSù%SIGNATURE__48__FP__ADDRESSú%SIGNATURE__52__FP__ADDRESSû%SIGNATURE__53__FP__ADDRESSü%SIGNATURE__54__FP__ADDRESSý%SIGNATURE__55__FP__ADDRESSþ%SIGNATURE__56__FP__ADDRESSÿ%SIGNATURE__57__FP__ADDRESS&SIGNATURE__58__FP__ADDRESS&SIGNATURE__59__FP__ADDRESS&SIGNATURE__60__FP__ADDRESS&SIGNATURE__61__FP__ADDRESS&SIGNATURE__62__FP__ADDRESS &SIGNATURE__63__FP__ADDRESS&SIGNATURE__64__FP__ADDRESS&SIGNATURE__65__FP__ADDRESS&SIGNATURE__66__FP__ADDRESS&SIGNATURE__67__FP__ADDRESS&SIGNATURE__68__FP__ADDRESS&SIGNATURE__69__FP__ADDRESS&SIGNATURE__70__FP__ADDRESS&SIGNATURE__71__FP__ADDRESS&SIGNATURE__72__FP__ADDRESS&SIGNATURE__73__FP__ADDRESS&SIGNATURE__74__FP__ADDRESS&SIGNATURE__75__FP__ADDRESS&SIGNATURE__76__FP__ADDRESS&SIGNATURE__77__FP__ADDRESS&SIGNATURE__78__FP__ADDRESS&SIGNATURE__79__FP__ADDRESS&SIGNATURE__80__FP__ADDRESS&SIGNATURE__81__FP__ADDRESS&SIGNATURE__82__FP__ADDRESS&SIGNATURE__83__FP__ADDRESS&SIGNATURE__84__FP__ADDRESS&SIGNATURE__85__FP__ADDRESS&SIGNATURE__86__FP__ADDRESS&SIGNATURE__87__FP__ADDRESS&SIGNATURE__88__FP__ADDRESS&SIGNATURE__89__FP__ADDRESS &SIGNATURE__90__FP__ADDRESS¡&SIGNATURE__91__FP__ADDRESS¢&SIGNATURE__92__FP__ADDRESS£&SIGNATURE__93__FP__ADDRESS¤&SIGNATURE__94__FP__ADDRESS¥&SIGNATURE__95__FP__ADDRESS¦&SIGNATURE__96__FP__ADDRESS§&SIGNATURE__97__FP__ADDRESS¨&SIGNATURE__98__FP__ADDRESS©&SIGNATURE__99__FP__ADDRESSª&SIGNATURE__100__FP__ADDRESS«&SIGNATURE__101__FP__ADDRESS¬&SIGNATURE__102__FP__ADDRESS&SIGNATURE__103__FP__ADDRESS®&SIGNATURE__104__FP__ADDRESS¯&SIGNATURE__105__FP__ADDRESS°&SIGNATURE__106__FP__ADDRESS±&SIGNATURE__107__FP__ADDRESS²&SIGNATURE__108__FP__ADDRESS³&SIGNATURE__109__FP__ADDRESS´&SIGNATURE__110__FP__ADDRESSµ&SIGNATURE__111__FP__ADDRESS¶&SIGNATURE__112__FP__ADDRESS·&SIGNATURE__113__FP__ADDRESS¸&SIGNATURE__114__FP__ADDRESS¹&SIGNATURE__115__FP__ADDRESSº&SIGNATURE__116__FP__ADDRESS»&SIGNATURE__117__FP__ADDRESS¼&SIGNATURE__118__FP__ADDRESS½&SIGNATURE__119__FP__ADDRESS¾&SIGNATURE__120__FP__ADDRESS¿&SIGNATURE__121__FP__ADDRESSÀ&SIGNATURE__122__FP__ADDRESSÁ&SIGNATURE__123__FP__ADDRESSÂ&SIGNATURE__124__FP__ADDRESSÃ&SIGNATURE__125__FP__ADDRESSÄ&SIGNATURE__126__FP__ADDRESSÅ&SIGNATURE__127__FP__ADDRESSÆ&SIGNATURE__128__FP__ADDRESSÇ&SIGNATURE__129__FP__ADDRESSÈ&SIGNATURE__130__FP__ADDRESSÉ&SIGNATURE__131__FP__ADDRESSÊ&SIGNATURE__132__FP__ADDRESSË&SIGNATURE__133__FP__ADDRESSÌ&SIGNATURE__134__FP__ADDRESSÍ&SIGNATURE__135__FP__ADDRESSÎ&SIGNATURE__136__FP__ADDRESSÏ&SIGNATURE__140__FP__ADDRESSÐ&SIGNATURE__141__FP__ADDRESSÑ&SIGNATURE__144__FP__ADDRESSÒ&SIGNATURE__145__FP__ADDRESSÓ&SIGNATURE__146__FP__ADDRESSÔ&SIGNATURE__147__FP__ADDRESSÕ&SIGNATURE__148__FP__ADDRESSÖ&SIGNATURE__597__FP__ADDRESS×&SIGNATURE__596__FP__ADDRESSØ&SIGNATURE__149__FP__ADDRESSÙ&SIGNATURE__150__FP__ADDRESSÚ&SIGNATURE__151__FP__ADDRESSÛ&SIGNATURE__153__FP__ADDRESSÜ&SIGNATURE__154__FP__ADDRESSÝ&SIGNATURE__155__FP__ADDRESSÞ&SIGNATURE__156__FP__ADDRESSß&SIGNATURE__157__FP__ADDRESSà&SIGNATURE__158__FP__ADDRESSá&SIGNATURE__159__FP__ADDRESSâ&SIGNATURE__160__FP__ADDRESSã&SIGNATURE__164__FP__ADDRESSä&SIGNATURE__165__FP__ADDRESSå&SIGNATURE__169__FP__ADDRESSæ&SIGNATURE__170__FP__ADDRESSç&SIGNATURE__174__FP__ADDRESSè&SIGNATURE__175__FP__ADDRESSé&SIGNATURE__179__FP__ADDRESSê&SIGNATURE__180__FP__ADDRESSë&SIGNATURE__184__FP__ADDRESSì&SIGNATURE__185__FP__ADDRESSí&SIGNATURE__189__FP__ADDRESSî&SIGNATURE__190__FP__ADDRESSï&SIGNATURE__194__FP__ADDRESSð&SIGNATURE__195__FP__ADDRESSñ&SIGNATURE__199__FP__ADDRESSò&SIGNATURE__200__FP__ADDRESSó&SIGNATURE__204__FP__ADDRESSô&SIGNATURE__205__FP__ADDRESSõ&SIGNATURE__209__FP__ADDRESSö&SIGNATURE__210__FP__ADDRESS÷&SIGNATURE__214__FP__ADDRESSø&SIGNATURE__215__FP__ADDRESSù&SIGNATURE__216__FP__ADDRESSú&SIGNATURE__220__FP__ADDRESSû&SIGNATURE__221__FP__ADDRESSü&SIGNATURE__222__FP__ADDRESSý&SIGNATURE__223__FP__ADDRESSþ&SIGNATURE__229__FP__ADDRESSÿ&SIGNATURE__230__FP__ADDRESS'SIGNATURE__231__FP__ADDRESS'SIGNATURE__232__FP__ADDRESS'SIGNATURE__251__FP__ADDRESS'SIGNATURE__255__FP__ADDRESS'SIGNATURE__256__FP__ADDRESS 'SIGNATURE__253__FP__ADDRESS'SIGNATURE__252__FP__ADDRESS'SIGNATURE__254__FP__ADDRESS'SIGNATURE__259__FP__ADDRESS'SIGNATURE__239__FP__ADDRESS'SIGNATURE__243__FP__ADDRESS'SIGNATURE__241__FP__ADDRESS'SIGNATURE__240__FP__ADDRESS'SIGNATURE__244__FP__ADDRESS'SIGNATURE__242__FP__ADDRESS'SIGNATURE__339__FP__ADDRESS'SIGNATURE__335__FP__ADDRESS'SIGNATURE__332__FP__ADDRESS'SIGNATURE__334__FP__ADDRESS'SIGNATURE__333__FP__ADDRESS'SIGNATURE__331__FP__ADDRESS'SIGNATURE__357__FP__ADDRESS'SIGNATURE__350__FP__ADDRESS'SIGNATURE__354__FP__ADDRESS'SIGNATURE__352__FP__ADDRESS'SIGNATURE__351__FP__ADDRESS'SIGNATURE__360__FP__ADDRESS'SIGNATURE__358__FP__ADDRESS'SIGNATURE__356__FP__ADDRESS'SIGNATURE__353__FP__ADDRESS'SIGNATURE__355__FP__ADDRESS'SIGNATURE__359__FP__ADDRESS 'SIGNATURE__371__FP__ADDRESS¡'SIGNATURE__368__FP__ADDRESS¢'SIGNATURE__370__FP__ADDRESS£'SIGNATURE__369__FP__ADDRESS¤'SIGNATURE__367__FP__ADDRESS¥'SIGNATURE__395__FP__ADDRESS¦'SIGNATURE__392__FP__ADDRESS§'SIGNATURE__398__FP__ADDRESS¨'SIGNATURE__380__FP__ADDRESS©'SIGNATURE__378__FP__ADDRESSª'SIGNATURE__385__FP__ADDRESS«'SIGNATURE__383__FP__ADDRESS¬'SIGNATURE__388__FP__ADDRESS'SIGNATURE__379__FP__ADDRESS®'SIGNATURE__381__FP__ADDRESS¯'SIGNATURE__384__FP__ADDRESS°'SIGNATURE__387__FP__ADDRESS±'SIGNATURE__386__FP__ADDRESS²'SIGNATURE__389__FP__ADDRESS³'SIGNATURE__382__FP__ADDRESS´'SIGNATURE__420__FP__ADDRESSµ'SIGNATURE__424__FP__ADDRESS¶'SIGNATURE__408__FP__ADDRESS·'SIGNATURE__406__FP__ADDRESS¸'SIGNATURE__413__FP__ADDRESS¹'SIGNATURE__416__FP__ADDRESSº'SIGNATURE__407__FP__ADDRESS»'SIGNATURE__409__FP__ADDRESS¼'SIGNATURE__412__FP__ADDRESS½'SIGNATURE__415__FP__ADDRESS¾'SIGNATURE__414__FP__ADDRESS¿'SIGNATURE__417__FP__ADDRESSÀ'SIGNATURE__411__FP__ADDRESSÁ'SIGNATURE__410__FP__ADDRESSÂ'SIGNATURE__431__FP__ADDRESSÃ'SIGNATURE__435__FP__ADDRESSÄ'SIGNATURE__433__FP__ADDRESSÅ'SIGNATURE__432__FP__ADDRESSÆ'SIGNATURE__436__FP__ADDRESSÇ'SIGNATURE__434__FP__ADDRESSÈ'SIGNATURE__439__FP__ADDRESSÉ'SIGNATURE__267__FP__ADDRESSÊ'SIGNATURE__275__FP__ADDRESSË'SIGNATURE__293__FP__ADDRESSÌ'SIGNATURE__291__FP__ADDRESSÍ'SIGNATURE__306__FP__ADDRESSÎ'SIGNATURE__311__FP__ADDRESSÏ'SIGNATURE__315__FP__ADDRESSÐ'SIGNATURE__318__FP__ADDRESSÑ'SIGNATURE__278__FP__ADDRESSÒ'SIGNATURE__322__FP__ADDRESSÓ'SIGNATURE__313__FP__ADDRESSÔ'SIGNATURE__289__FP__ADDRESSÕ'SIGNATURE__266__FP__ADDRESSÖ'SIGNATURE__300__FP__ADDRESS×'SIGNATURE__269__FP__ADDRESSØ'SIGNATURE__292__FP__ADDRESSÙ'SIGNATURE__308__FP__ADDRESSÚ'SIGNATURE__312__FP__ADDRESSÛ'SIGNATURE__279__FP__ADDRESSÜ'SIGNATURE__301__FP__ADDRESSÝ'SIGNATURE__276__FP__ADDRESSÞ'SIGNATURE__290__FP__ADDRESSß'SIGNATURE__271__FP__ADDRESSà'SIGNATURE__317__FP__ADDRESSá'SIGNATURE__274__FP__ADDRESSâ'SIGNATURE__299__FP__ADDRESSã'SIGNATURE__319__FP__ADDRESSä'SIGNATURE__295__FP__ADDRESSå'SIGNATURE__304__FP__ADDRESSæ'SIGNATURE__309__FP__ADDRESSç'SIGNATURE__302__FP__ADDRESSè'SIGNATURE__286__FP__ADDRESSé'SIGNATURE__307__FP__ADDRESSê'SIGNATURE__296__FP__ADDRESSë'SIGNATURE__283__FP__ADDRESSì'SIGNATURE__298__FP__ADDRESSí'SIGNATURE__316__FP__ADDRESSî'SIGNATURE__297__FP__ADDRESSï'SIGNATURE__287__FP__ADDRESSð'SIGNATURE__281__FP__ADDRESSñ'SIGNATURE__314__FP__ADDRESSò'SIGNATURE__282__FP__ADDRESSó'SIGNATURE__284__FP__ADDRESSô'SIGNATURE__310__FP__ADDRESSõ'SIGNATURE__303__FP__ADDRESSö'SIGNATURE__273__FP__ADDRESS÷'SIGNATURE__320__FP__ADDRESSø'SIGNATURE__277__FP__ADDRESSù'SIGNATURE__270__FP__ADDRESSú'SIGNATURE__285__FP__ADDRESSû'SIGNATURE__280__FP__ADDRESSü'SIGNATURE__268__FP__ADDRESSý'SIGNATURE__294__FP__ADDRESSþ'SIGNATURE__272__FP__ADDRESSÿ'SIGNATURE__321__FP__ADDRESS(SIGNATURE__323__FP__ADDRESS(SIGNATURE__288__FP__ADDRESS(SIGNATURE__305__FP__ADDRESS(SIGNATURE__342__FP__ADDRESS(SIGNATURE__451__FP__ADDRESS (SIGNATURE__448__FP__ADDRESS(SIGNATURE__450__FP__ADDRESS(SIGNATURE__449__FP__ADDRESS(SIGNATURE__447__FP__ADDRESS(SIGNATURE__456__FP__ADDRESS(SIGNATURE__455__FP__ADDRESS(SIGNATURE__467__FP__ADDRESS(SIGNATURE__464__FP__ADDRESS(SIGNATURE__466__FP__ADDRESS(SIGNATURE__465__FP__ADDRESS(SIGNATURE__463__FP__ADDRESS(SIGNATURE__517__FP__ADDRESS(SIGNATURE__519__FP__ADDRESS(SIGNATURE__520__FP__ADDRESS(SIGNATURE__521__FP__ADDRESS(SIGNATURE__510__FP__ADDRESS(SIGNATURE__511__FP__ADDRESS(SIGNATURE__516__FP__ADDRESS(SIGNATURE__515__FP__ADDRESS(SIGNATURE__514__FP__ADDRESS(SIGNATURE__508__FP__ADDRESS(SIGNATURE__512__FP__ADDRESS(SIGNATURE__518__FP__ADDRESS(SIGNATURE__509__FP__ADDRESS(SIGNATURE__513__FP__ADDRESS(SIGNATURE__494__FP__ADDRESS(SIGNATURE__486__FP__ADDRESS (SIGNATURE__491__FP__ADDRESS¡(SIGNATURE__495__FP__ADDRESS¢(SIGNATURE__492__FP__ADDRESS£(SIGNATURE__498__FP__ADDRESS¤(SIGNATURE__497__FP__ADDRESS¥(SIGNATURE__501__FP__ADDRESS¦(SIGNATURE__493__FP__ADDRESS§(SIGNATURE__487__FP__ADDRESS¨(SIGNATURE__485__FP__ADDRESS©(SIGNATURE__489__FP__ADDRESSª(SIGNATURE__496__FP__ADDRESS«(SIGNATURE__499__FP__ADDRESS¬(SIGNATURE__490__FP__ADDRESS(SIGNATURE__500__FP__ADDRESS®(SIGNATURE__488__FP__ADDRESS¯(SIGNATURE__532__FP__ADDRESS°(SIGNATURE__530__FP__ADDRESS±(SIGNATURE__535__FP__ADDRESS²(SIGNATURE__537__FP__ADDRESS³(SIGNATURE__534__FP__ADDRESS´(SIGNATURE__531__FP__ADDRESSµ(SIGNATURE__538__FP__ADDRESS¶(SIGNATURE__536__FP__ADDRESS·(SIGNATURE__533__FP__ADDRESS¸(SIGNATURE__478__FP__ADDRESS¹(SIGNATURE__475__FP__ADDRESSº(SIGNATURE__477__FP__ADDRESS»(SIGNATURE__476__FP__ADDRESS¼(SIGNATURE__474__FP__ADDRESS½(SIGNATURE__550__FP__ADDRESS¾(SIGNATURE__565__FP__ADDRESS¿(SIGNATURE__563__FP__ADDRESSÀ(SIGNATURE__568__FP__ADDRESSÁ(SIGNATURE__560__FP__ADDRESSÂ(SIGNATURE__555__FP__ADDRESSÃ(SIGNATURE__556__FP__ADDRESSÄ(SIGNATURE__564__FP__ADDRESSÅ(SIGNATURE__552__FP__ADDRESSÆ(SIGNATURE__547__FP__ADDRESSÇ(SIGNATURE__554__FP__ADDRESSÈ(SIGNATURE__561__FP__ADDRESSÉ(SIGNATURE__567__FP__ADDRESSÊ(SIGNATURE__562__FP__ADDRESSË(SIGNATURE__551__FP__ADDRESSÌ(SIGNATURE__557__FP__ADDRESSÍ(SIGNATURE__558__FP__ADDRESSÎ(SIGNATURE__553__FP__ADDRESSÏ(SIGNATURE__548__FP__ADDRESSÐ(SIGNATURE__559__FP__ADDRESSÑ(SIGNATURE__549__FP__ADDRESSÒ(SIGNATURE__569__FP__ADDRESSÓ(SIGNATURE__566__FP__ADDRESSÔ(SIGNATURE__572__FP__ADDRESSÕ(SIGNATURE__576__FP__ADDRESSÖ(SIGNATURE__581__FP__ADDRESS×(SIGNATURE__580__FP__ADDRESSØ(SIGNATURE__587__FP__ADDRESSÙ(SIGNATURE__586__FP__ADDRESSÚ(SIGNATURE__592__FP__ADDRESSÛ(SIGNATURE__591__FP__ADDRESSÜ(SIGNATURE__628__FP__ADDRESSÝ(SIGNATURE__620__FP__ADDRESSÞ(SIGNATURE__624__FP__ADDRESSß(SIGNATURE__653__FP__ADDRESSà(SIGNATURE__645__FP__ADDRESSá(SIGNATURE__615__FP__ADDRESSâ(SIGNATURE__629__FP__ADDRESSã(SIGNATURE__616__FP__ADDRESSä(SIGNATURE__610__FP__ADDRESSå(SIGNATURE__622__FP__ADDRESSæ(SIGNATURE__623__FP__ADDRESSç(SIGNATURE__631__FP__ADDRESSè(SIGNATURE__654__FP__ADDRESSé(SIGNATURE__642__FP__ADDRESSê(SIGNATURE__617__FP__ADDRESSë(SIGNATURE__637__FP__ADDRESSì(SIGNATURE__609__FP__ADDRESSí(SIGNATURE__625__FP__ADDRESSî(SIGNATURE__607__FP__ADDRESSï(SIGNATURE__606__FP__ADDRESSð(SIGNATURE__612__FP__ADDRESSñ(SIGNATURE__632__FP__ADDRESSò(SIGNATURE__651__FP__ADDRESSó(SIGNATURE__634__FP__ADDRESSô(SIGNATURE__613__FP__ADDRESSõ(SIGNATURE__646__FP__ADDRESSö(SIGNATURE__640__FP__ADDRESS÷(SIGNATURE__655__FP__ADDRESSø(SIGNATURE__638__FP__ADDRESSù(SIGNATURE__652__FP__ADDRESSú(SIGNATURE__639__FP__ADDRESSû(SIGNATURE__643__FP__ADDRESSü(SIGNATURE__611__FP__ADDRESSý(SIGNATURE__635__FP__ADDRESSþ(SIGNATURE__626__FP__ADDRESSÿ(SIGNATURE__633__FP__ADDRESS)SIGNATURE__619__FP__ADDRESS)SIGNATURE__627__FP__ADDRESS)SIGNATURE__636__FP__ADDRESS)SIGNATURE__608__FP__ADDRESS)SIGNATURE__630__FP__ADDRESS )SIGNATURE__650__FP__ADDRESS)SIGNATURE__618__FP__ADDRESS)SIGNATURE__621__FP__ADDRESS)SIGNATURE__649__FP__ADDRESS)SIGNATURE__644__FP__ADDRESS)SIGNATURE__648__FP__ADDRESS)SIGNATURE__614__FP__ADDRESS)SIGNATURE__647__FP__ADDRESS)SIGNATURE__641__FP__ADDRESS)SIGNATURE__668__FP__ADDRESS)SIGNATURE__664__FP__ADDRESS)SIGNATURE__672__FP__ADDRESS)SIGNATURE__669__FP__ADDRESS)SIGNATURE__667__FP__ADDRESS)SIGNATURE__665__FP__ADDRESS)SIGNATURE__671__FP__ADDRESS)SIGNATURE__666__FP__ADDRESS)SIGNATURE__670__FP__ADDRESS)SIGNATURE__663__FP__ADDRESS)SIGNATURE__683__FP__ADDRESS)SIGNATURE__681__FP__ADDRESS)SIGNATURE__685__FP__ADDRESS)SIGNATURE__682__FP__ADDRESS)SIGNATURE__684__FP__ADDRESS)SIGNATURE__686__FP__ADDRESS)SIGNATURE__680__FP__ADDRESS)SIGNATURE__702__FP__ADDRESS )SIGNATURE__695__FP__ADDRESS¡)SIGNATURE__703__FP__ADDRESS¢)SIGNATURE__701__FP__ADDRESS£)SIGNATURE__696__FP__ADDRESS¤)SIGNATURE__698__FP__ADDRESS¥)SIGNATURE__700__FP__ADDRESS¦)SIGNATURE__697__FP__ADDRESS§)SIGNATURE__699__FP__ADDRESS¨)SIGNATURE__694__FP__ADDRESS©)SIGNATURE__763__FP__ADDRESSª)SIGNATURE__736__FP__ADDRESS«)SIGNATURE__718__FP__ADDRESS¬)SIGNATURE__757__FP__ADDRESS)SIGNATURE__750__FP__ADDRESS®)SIGNATURE__761__FP__ADDRESS¯)SIGNATURE__762__FP__ADDRESS°)SIGNATURE__712__FP__ADDRESS±)SIGNATURE__722__FP__ADDRESS²)SIGNATURE__759__FP__ADDRESS³)SIGNATURE__747__FP__ADDRESS´)SIGNATURE__760__FP__ADDRESSµ)SIGNATURE__749__FP__ADDRESS¶)SIGNATURE__772__FP__ADDRESS·)SIGNATURE__726__FP__ADDRESS¸)SIGNATURE__753__FP__ADDRESS¹)SIGNATURE__752__FP__ADDRESSº)SIGNATURE__744__FP__ADDRESS»)SIGNATURE__754__FP__ADDRESS¼)SIGNATURE__764__FP__ADDRESS½)SIGNATURE__769__FP__ADDRESS¾)SIGNATURE__758__FP__ADDRESS¿)SIGNATURE__734__FP__ADDRESSÀ)SIGNATURE__755__FP__ADDRESSÁ)SIGNATURE__733__FP__ADDRESSÂ)SIGNATURE__719__FP__ADDRESSÃ)SIGNATURE__730__FP__ADDRESSÄ)SIGNATURE__743__FP__ADDRESSÅ)SIGNATURE__739__FP__ADDRESSÆ)SIGNATURE__720__FP__ADDRESSÇ)SIGNATURE__725__FP__ADDRESSÈ)SIGNATURE__740__FP__ADDRESSÉ)SIGNATURE__723__FP__ADDRESSÊ)SIGNATURE__756__FP__ADDRESSË)SIGNATURE__735__FP__ADDRESSÌ)SIGNATURE__771__FP__ADDRESSÍ)SIGNATURE__727__FP__ADDRESSÎ)SIGNATURE__731__FP__ADDRESSÏ)SIGNATURE__716__FP__ADDRESSÐ)SIGNATURE__751__FP__ADDRESSÑ)SIGNATURE__770__FP__ADDRESSÒ)SIGNATURE__748__FP__ADDRESSÓ)SIGNATURE__717__FP__ADDRESSÔ)SIGNATURE__721__FP__ADDRESSÕ)SIGNATURE__714__FP__ADDRESSÖ)SIGNATURE__711__FP__ADDRESS×)SIGNATURE__715__FP__ADDRESSØ)SIGNATURE__765__FP__ADDRESSÙ)SIGNATURE__738__FP__ADDRESSÚ)SIGNATURE__713__FP__ADDRESSÛ)SIGNATURE__729__FP__ADDRESSÜ)SIGNATURE__737__FP__ADDRESSÝ)SIGNATURE__746__FP__ADDRESSÞ)SIGNATURE__742__FP__ADDRESSß)SIGNATURE__768__FP__ADDRESSà)SIGNATURE__728__FP__ADDRESSá)SIGNATURE__773__FP__ADDRESSâ)SIGNATURE__724__FP__ADDRESSã)SIGNATURE__745__FP__ADDRESSä)SIGNATURE__767__FP__ADDRESSå)SIGNATURE__741__FP__ADDRESSæ)SIGNATURE__732__FP__ADDRESSç)SIGNATURE__766__FP__ADDRESSè)SIGNATURE__788__FP__ADDRESSé)SIGNATURE__782__FP__ADDRESSê)SIGNATURE__786__FP__ADDRESSë)SIGNATURE__787__FP__ADDRESSì)SIGNATURE__785__FP__ADDRESSí)SIGNATURE__783__FP__ADDRESSî)SIGNATURE__784__FP__ADDRESSï)SIGNATURE__781__FP__ADDRESSð)SIGNATURE__830__FP__ADDRESSñ)SIGNATURE__811__FP__ADDRESSò)SIGNATURE__839__FP__ADDRESSó)SIGNATURE__838__FP__ADDRESSô)SIGNATURE__806__FP__ADDRESSõ)SIGNATURE__826__FP__ADDRESSö)SIGNATURE__802__FP__ADDRESS÷)SIGNATURE__821__FP__ADDRESSø)SIGNATURE__820__FP__ADDRESSù)SIGNATURE__810__FP__ADDRESSú)SIGNATURE__798__FP__ADDRESSû)SIGNATURE__835__FP__ADDRESSü)SIGNATURE__828__FP__ADDRESSý)SIGNATURE__831__FP__ADDRESSþ)SIGNATURE__819__FP__ADDRESSÿ)SIGNATURE__808__FP__ADDRESS*SIGNATURE__841__FP__ADDRESS*SIGNATURE__814__FP__ADDRESS*SIGNATURE__843__FP__ADDRESS*SIGNATURE__805__FP__ADDRESS*SIGNATURE__842__FP__ADDRESS *SIGNATURE__833__FP__ADDRESS*SIGNATURE__824__FP__ADDRESS*SIGNATURE__797__FP__ADDRESS*SIGNATURE__817__FP__ADDRESS*SIGNATURE__800__FP__ADDRESS*SIGNATURE__827__FP__ADDRESS*SIGNATURE__807__FP__ADDRESS*SIGNATURE__832__FP__ADDRESS*SIGNATURE__812__FP__ADDRESS*SIGNATURE__822__FP__ADDRESS*SIGNATURE__823__FP__ADDRESS*SIGNATURE__825__FP__ADDRESS*SIGNATURE__796__FP__ADDRESS*SIGNATURE__829__FP__ADDRESS*SIGNATURE__799__FP__ADDRESS*SIGNATURE__818__FP__ADDRESS*SIGNATURE__816__FP__ADDRESS*SIGNATURE__815__FP__ADDRESS*SIGNATURE__840__FP__ADDRESS*SIGNATURE__834__FP__ADDRESS*SIGNATURE__809__FP__ADDRESS*SIGNATURE__801__FP__ADDRESS*SIGNATURE__803__FP__ADDRESS*SIGNATURE__836__FP__ADDRESS*SIGNATURE__804__FP__ADDRESS*SIGNATURE__837__FP__ADDRESS*SIGNATURE__813__FP__ADDRESS *SIGNATURE__852__FP__ADDRESS¡*SIGNATURE__856__FP__ADDRESS¢*SIGNATURE__857__FP__ADDRESS£*SIGNATURE__854__FP__ADDRESS¤*SIGNATURE__853__FP__ADDRESS¥*SIGNATURE__855__FP__ADDRESS¦*SIGNATURE__851__FP__ADDRESS§*SIGNATURE__876__FP__ADDRESS¨*SIGNATURE__871__FP__ADDRESS©*SIGNATURE__880__FP__ADDRESSª*SIGNATURE__889__FP__ADDRESS«*SIGNATURE__883__FP__ADDRESS¬*SIGNATURE__894__FP__ADDRESS*SIGNATURE__869__FP__ADDRESS®*SIGNATURE__886__FP__ADDRESS¯*SIGNATURE__892__FP__ADDRESS°*SIGNATURE__884__FP__ADDRESS±*SIGNATURE__867__FP__ADDRESS²*SIGNATURE__865__FP__ADDRESS³*SIGNATURE__875__FP__ADDRESS´*SIGNATURE__873__FP__ADDRESSµ*SIGNATURE__879__FP__ADDRESS¶*SIGNATURE__874__FP__ADDRESS·*SIGNATURE__866__FP__ADDRESS¸*SIGNATURE__891__FP__ADDRESS¹*SIGNATURE__870__FP__ADDRESSº*SIGNATURE__885__FP__ADDRESS»*SIGNATURE__881__FP__ADDRESS¼*SIGNATURE__893__FP__ADDRESS½*SIGNATURE__887__FP__ADDRESS¾*SIGNATURE__872__FP__ADDRESS¿*SIGNATURE__888__FP__ADDRESSÀ*SIGNATURE__878__FP__ADDRESSÁ*SIGNATURE__882__FP__ADDRESSÂ*SIGNATURE__868__FP__ADDRESSÃ*SIGNATURE__890__FP__ADDRESSÄ*SIGNATURE__877__FP__ADDRESSÅ*SIGNATURE__903__FP__ADDRESSÆ*SIGNATURE__908__FP__ADDRESSÇ*SIGNATURE__905__FP__ADDRESSÈ*SIGNATURE__904__FP__ADDRESSÉ*SIGNATURE__907__FP__ADDRESSÊ*SIGNATURE__906__FP__ADDRESSË*SIGNATURE__902__FP__ADDRESSÌ*SIGNATURE__935__FP__ADDRESSÍ*SIGNATURE__932__FP__ADDRESSÎ*SIGNATURE__934__FP__ADDRESSÏ*SIGNATURE__933__FP__ADDRESSÐ*SIGNATURE__931__FP__ADDRESSÑ*SIGNATURE__919__FP__ADDRESSÒ*SIGNATURE__917__FP__ADDRESSÓ*SIGNATURE__923__FP__ADDRESSÔ*SIGNATURE__920__FP__ADDRESSÕ*SIGNATURE__918__FP__ADDRESSÖ*SIGNATURE__922__FP__ADDRESS×*SIGNATURE__921__FP__ADDRESSØ*SIGNATURE__924__FP__ADDRESSÙ*SIGNATURE__916__FP__ADDRESSÚ*SIGNATURE__944__FP__ADDRESSÛ*SIGNATURE__949__FP__ADDRESSÜ*SIGNATURE__946__FP__ADDRESSÝ*SIGNATURE__945__FP__ADDRESSÞ*SIGNATURE__948__FP__ADDRESSß*SIGNATURE__947__FP__ADDRESSà*SIGNATURE__943__FP__ADDRESSá*SIGNATURE__961__FP__ADDRESSâ*SIGNATURE__958__FP__ADDRESSã*SIGNATURE__962__FP__ADDRESSä*SIGNATURE__963__FP__ADDRESSå*SIGNATURE__964__FP__ADDRESSæ*SIGNATURE__959__FP__ADDRESSç*SIGNATURE__960__FP__ADDRESSè*SIGNATURE__957__FP__ADDRESSé*SIGNATURE__965__FP__ADDRESSê*SIGNATURE__974__FP__ADDRESSë*SIGNATURE__978__FP__ADDRESSì*SIGNATURE__976__FP__ADDRESSí*SIGNATURE__975__FP__ADDRESSî*SIGNATURE__977__FP__ADDRESSï*SIGNATURE__973__FP__ADDRESSð*SIGNATURE__598__FP__ADDRESSñ*SIGNATURE__984__FP__ADDRESSò*SIGNATURE__983__FP__ADDRESSó*SIGNATURE__979__FP__ADDRESSô*SIGNATURE__986__FP__ADDRESSõ*SIGNATURE__990__FP__ADDRESSö*SIGNATURE__991__FP__ADDRESS÷*SIGNATURE__992__FP__ADDRESSø*SIGNATURE__993__FP__ADDRESSù*SIGNATURE__995__FP__ADDRESSú*SIGNATURE__996__FP__ADDRESSû*SIGNATURE__997__FP__ADDRESSü*SIGNATURE__998__FP__ADDRESSý*SIGNATURE__999__FP__ADDRESSþ*SIGNATURE__1000__FP__ADDRESSÿ*SIGNATURE__1001__FP__ADDRESS+SIGNATURE__1002__FP__ADDRESS+SIGNATURE__1003__FP__ADDRESS+SIGNATURE__1018__FP__ADDRESS+SIGNATURE__1015__FP__ADDRESS+SIGNATURE__1012__FP__ADDRESS +SIGNATURE__1014__FP__ADDRESS+SIGNATURE__1013__FP__ADDRESS+SIGNATURE__1011__FP__ADDRESS+SIGNATURE__1004__FP__ADDRESS+SIGNATURE__1021__FP__ADDRESS+SIGNATURE__1023__FP__ADDRESS+SIGNATURE__1024__FP__ADDRESS+SIGNATURE__1025__FP__ADDRESS+SIGNATURE__1026__FP__ADDRESS+SIGNATURE__1027__FP__ADDRESS+SIGNATURE__1028__FP__ADDRESS+SIGNATURE__1030__FP__ADDRESS+SIGNATURE__1031__FP__ADDRESS+SIGNATURE__1032__FP__ADDRESS+SIGNATURE__1033__FP__ADDRESS+SIGNATURE__1034__FP__ADDRESS+SIGNATURE__1035__FP__ADDRESS+SIGNATURE__1036__FP__ADDRESS+SIGNATURE__1038__FP__ADDRESS+SIGNATURE__1039__FP__ADDRESS+SIGNATURE__1040__FP__ADDRESS+SIGNATURE__1041__FP__ADDRESS+SIGNATURE__1045__FP__ADDRESS+SIGNATURE__1042__FP__ADDRESS+SIGNATURE__1046__FP__ADDRESS+SIGNATURE__1047__FP__ADDRESS+SIGNATURE__1048__FP__ADDRESS +SIGNATURE__1049__FP__ADDRESS¡+SIGNATURE__1050__FP__ADDRESS¢+SIGNATURE__1053__FP__ADDRESS£+SIGNATURE__1057__FP__ADDRESS¤+SIGNATURE__1054__FP__ADDRESS¥+SIGNATURE__1058__FP__ADDRESS¦+SIGNATURE__1059__FP__ADDRESS§+SIGNATURE__1060__FP__ADDRESS¨+SIGNATURE__1062__FP__ADDRESS©+SIGNATURE__1063__FP__ADDRESSª+SIGNATURE__1064__FP__ADDRESS«+SIGNATURE__1065__FP__ADDRESS¬+SIGNATURE__1067__FP__ADDRESS+SIGNATURE__1068__FP__ADDRESS®+SIGNATURE__1069__FP__ADDRESS¯+SIGNATURE__1070__FP__ADDRESS°+SIGNATURE__1071__FP__ADDRESS±+SIGNATURE__1072__FP__ADDRESS²+SIGNATURE__1073__FP__ADDRESS³+SIGNATURE__1074__FP__ADDRESS´+SIGNATURE__1075__FP__ADDRESSµ+SIGNATURE__1077__FP__ADDRESS¶+SIGNATURE__1084__FP__ADDRESS·+SIGNATURE__1081__FP__ADDRESS¸+SIGNATURE__1092__FP__ADDRESS¹+SIGNATURE__1090__FP__ADDRESSº+SIGNATURE__1096__FP__ADDRESS»+SIGNATURE__1094__FP__ADDRESS¼+SIGNATURE__1095__FP__ADDRESS½+SIGNATURE__1091__FP__ADDRESS¾+SIGNATURE__1093__FP__ADDRESS¿+SIGNATURE__1097__FP__ADDRESSÀ+SIGNATURE__1098__FP__ADDRESSÁ+SIGNATURE__1099__FP__ADDRESSÂ+SIGNATURE__1100__FP__ADDRESSÃ+SIGNATURE__1101__FP__ADDRESSÄ+SIGNATURE__1104__FP__ADDRESSÅ+SIGNATURE__1105__FP__ADDRESSÆ+SIGNATURE__1106__FP__ADDRESSÇ+SIGNATURE__1109__FP__ADDRESSÈ+SIGNATURE__1110__FP__ADDRESSÉ+SIGNATURE__1111__FP__ADDRESSÊ+SIGNATURE__1112__FP__ADDRESSË+SIGNATURE__1113__FP__ADDRESSÌ+SIGNATURE__1114__FP__ADDRESSÍ+SIGNATURE__1117__FP__ADDRESSÎ+SIGNATURE__1118__FP__ADDRESSÏ+SIGNATURE__1119__FP__ADDRESSÐ+SIGNATURE__1120__FP__ADDRESSÑ+SIGNATURE__1121__FP__ADDRESSÒ+SIGNATURE__1122__FP__ADDRESSÓ+SIGNATURE__1124__FP__ADDRESSÔ+SIGNATURE__1126__FP__ADDRESSÕ+SIGNATURE__1128__FP__ADDRESSÖ+SIGNATURE__1129__FP__ADDRESS×+SIGNATURE__1130__FP__ADDRESSØ+SIGNATURE__1131__FP__ADDRESSÙ+SIGNATURE__1132__FP__ADDRESSÚ+SIGNATURE__1133__FP__ADDRESSÛ+SIGNATURE__1134__FP__ADDRESSÜ+SIGNATURE__1135__FP__ADDRESSÝ+SIGNATURE__1136__FP__ADDRESSÞ+SIGNATURE__1137__FP__ADDRESSß+SIGNATURE__1138__FP__ADDRESSà+SIGNATURE__1139__FP__ADDRESSá+SIGNATURE__1140__FP__ADDRESSâ+SIGNATURE__1141__FP__ADDRESSã+SIGNATURE__1142__FP__ADDRESSä+SIGNATURE__1143__FP__ADDRESSå+SIGNATURE__1144__FP__ADDRESSæ+SIGNATURE__1145__FP__ADDRESSç+SIGNATURE__1146__FP__ADDRESSè+SIGNATURE__1147__FP__ADDRESSé+9NoInit, NoCompareWithNew, Compiled, SuperGlobal, Internalê+F{attribute 'conditionalshow' := '3SLib_Developer'} {attribute 'hide'}ë+ 4261187534ì+ Variablesí+stLogStringî+ pLogStringï+$cd51317e-3db2-44da-bb88-6b22ca144fe3ð+ no_assignñ+ 2123084293ò+ GVL_CfUnitó+CfUnitRunnerô+W Indication of whether the last instantiated test suite has an assert instance created õ+TestSuiteAssertRegisteredö+! Current test suite being called ÷+CurrentTestSuiteBeingCalledø+# Current name of test being called ù+CurrentTestNameBeingCalledú+û This is a flag that indicates that the current test should be ignored, and thus that all assertions under it should be ignored as well. A test can be ignored either because the user has requested so, or because the test is a duplicate name û+IgnoreCurrentTestü+b The assert function block instance should be 1:1 mapped to the test suite instance path. ý+NumberOfInitializedTestSuitesþ+TestSuiteAddressesÿ+MaxAmountOfTestSuites, xml composer and filewriter ,jUnitXmlWriter,$78472b76-c9a4-4b27-a580-8e7898edc3d7, parameterlist, 3861505112 ,$cadec786-f15c-46d7-8a5f-f8454136b189,strict, 2220631024, E_XmlError,Ok,ErrorMaxBufferLen,ErrorStringLen,Error,$05a4fdda-1086-47b5-ad10-7c2bac568355, 2927770536,$69588962-bd3e-4958-957e-7bfb94609af1, 356200577, GVL_System, _ST_Logger, _CmpCfLog,AGlobal, IsCompiled, Absolut, Initialized, OnlChangeExit, Typified,$7e465938-43b3-4ac5-bae5-c19fce2bd2bf,global_init_slot,40000, 2434124423, GVL_hidden,gc_CLASSID_License,gc_tDemo,g_tDemoTime,g_olm, g_udiStart,$60802aa3-0da6-43f2-b1c6-612c13d38103 , 3998489052¡,EventIDs¢,$6c565d0a-715a-4bda-9c41-364072c0854f£,RTS_ACCESS_MODE¤, 3616192811¥,AM_READ¦,AM_WRITE§, AM_APPEND¨,AM_READ_PLUS©,"Enum, Compiled, Typified, Internalª,$f6709db2-0787-4cc0-984b-80f9dc50344c«,compatibility_id¬,$52A6FD6D-031C-41c0-A818-0F45FE19AF8F, 3969002541®,TYPE_INTERFACE¯,$18308f84-bb54-40d0-ae45-a2e8c891c222°,!base interfaces, 3.5.2.0 (system)±,¥ | Access mode | File modes to open a file. .. note:: For all ``*_PLUS`` modes be aware, that after reading from a file, writing can only be done after a call to |SysFileGetPos| or |SysFileSetPos|! If you call |SysFileWrite| right after |SysFileRead|, the file pointer could be on an invalid position! Correct example:: SysFileRead(); SysFileGetPos(); SysFileWrite();²,K Open an existing file with Read access. If file does not exist, Open fails³,L Create new file with Write access. If file does exist, content is discarded´,Z Open an existing file with Append (only write) access. If file does not exist, Open failsµ,Q Open an existing file with Read/Write access. If file does not exist, Open fails¶,Q Create new file with Read/Write access. If file does exist, content is discarded·,g Open an existing file with Append (read/write) access. If file does not exist, Open creates a new file¸, 1784674971¹,LogConstantsº, STD_LOGGER»,LOG_STD_LOGGER¼,Pointer½,RTS_INVALID_HANDLE¾,LOG_INVALID_HANDLE¿,$4084b11d-b9ee-47b9-ad20-f9bc4eeb6bb6À, 1666259597Á,LogClassÂ,LOG_NONEÃ,LOG_INFOÄ,LOG_WARNINGÅ, LOG_ERRORÆ, LOG_EXCEPTIONÇ, LOG_DEBUGÈ,LOG_USER_NOTIFYÉ,LOG_ALLÊ,$4daa954b-f889-4b97-a05f-93d44b64f374Ë, 3164948391Ì,LT_HIGHSPEEDÍ,LT_SAFEÎ, LT_NORMALÏ,LT_TIMESTAMP_RTCÐ,LT_TIMESTAMP_MSÑ,LT_TIMESTAMP_USÒ,LT_TIMESTAMP_NSÓ, LT_NO_DISABLEÔ, LT_DUMP_ASYNCÕ,LT_DUMP_ALWAYSÖ,LT_DUMP_ON_CLOSE×,LT_DUMP_ON_REQUESTØ,OrÙ,$0f010cee-3948-41fd-82ad-af5b1e2e8803Ú, 1192820603Û,GlobalConstantsÜ,Common DefinesÝ,$0c76e09e-5f6c-41d5-841a-2071be1c6304Þ,49000ß, 251212993à,HandleConstantsá,suppress_warning_0â,C0195ã,$471467d5-89a4-4482-b970-b13eff79244eä, 1265334668å,Errorsæ, Okç,ERR_OKè,5 General error - to be used only for internal errors é, ERR_FAILEDê,% Invalid parameter for this operationë, ERR_PARAMETERì,e Function cannot be executed, since component has not been initialized yet. It may work later, thoughí,ERR_NOTINITIALIZEDî, Version conflictï,ERR_VERSIONð, Operation timed outñ,ERR_TIMEOUTò,- Insufficient memory to carry out the requestó,ERR_NOBUFFERô,( For async-calls: call not complete, yetõ,ERR_PENDINGö,! To many pending calls. Try later÷,ERR_NUMPENDINGø, The function is not implementedù,ERR_NOTIMPLEMENTEDú,% No object with the provided id foundû, ERR_INVALIDIDü, Integer overflowý,ERR_OVERFLOWþ,, The size of a buffer is to small or invalidÿ,ERR_BUFFERSIZE-- No object with this specified name available- ERR_NO_OBJECT- No heap memory available-ERR_NOMEMORY-0 An object with the same name is still available - ERR_DUPLICATE-> Heap memory was written out of bounds! Memory overwrite error-ERR_MEMORY_OVERWRITE- Invalid handle TO an object-ERR_INVALID_HANDLE- End OF object reached-ERR_END_OF_OBJECT- No changes done- ERR_NO_CHANGE- Invalid OR unknown INTERFACE-ERR_INVALID_INTERFACE- Functionality NOT supported-ERR_NOT_SUPPORTED-$ No access rights FOR THIS operation-ERR_NO_ACCESS_RIGHTS-( Specified limits OF a resource exceeded-ERR_OUT_OF_LIMITS-M Remaining entries that could NOT be transmitted because OF buffer limitation-ERR_ENTRIES_REMAINING- Invalid online sessionid-ERR_INVALID_SESSION_ID- Exception occurred- ERR_EXCEPTION-& Signature mismatch OF an api FUNCTION-ERR_SIGNATURE_MISMATCH- Version mismatch-ERR_VERSION_MISMATCH - TYPE mismatch¡-ERR_TYPE_MISMATCH¢- ID mismatch£-ERR_ID_MISMATCH¤- Consistency error¥-ERR_NO_CONSISTENCY¦- No COMM_CYCLE needed§-ERR_NO_COMM_CYCLE¨-' DO NOT suspend task after an exception©-ERR_DONT_SUSPEND_TASKª-* Memory cannot be locked in THIS operation«-ERR_MEMORY_LOCK_FAILED¬- License missing FOR the runtime-ERR_LICENSE_MISSING®- Operation denied¯-ERR_OPERATION_DENIED°- Device error±- ERR_DEVICE²- Disk full³- ERR_DISK_FULL´- Internal use in runtimeµ-ERR_CRC_FAILED¶-ERR_MEDIA_ERASE·-T File error. e.g. cannot open a file FOR writing because it could be write PROTECTED¸-ERR_FILE_ERROR¹- No RETAIN memory availableº-ERR_NO_RETAIN_MEMORY»-/ Specified minimum-limit of a resource exceeded¼-ERR_OUT_OF_LIMITS_MIN½-/ Specified maximum-limit of a resource exceeded¾-ERR_OUT_OF_LIMITS_MAX¿- Size mismatch À-ERR_SIZE_MISMATCHÁ-> Operation is not yet finished, call function again to proceedÂ-ERR_CALL_AGAINÃ-+ Operation has nothing TO DO. No execution.Ä-ERR_NOTHING_TO_DOÅ-¹ Some security checks have failed. THIS is a generic error code TO report THIS error over PUBLIC channels. In THIS CASE the error code doesn't provide a detailed cause for the error. */Æ-ERR_SECURITY_CHECKS_FAILEDÇ-ERR_INVALID_SEQUENCEÈ-f Dereferencing an IEC reference in IecVarAccess failed due to invalid destination address, e. G. NULL.É-ERR_INVALID_REFERENCEÊ-1 Conversion of string encodings was not lossless.Ë-ERR_CONVERSION_INCOMPLETEÌ- Socket not initialized Í-ERR_SOCK_NOTINITIALIZEDÎ-& The provided socket handle is invalidÏ-ERR_SOCK_NOTSOCKETÐ-$ The address family is NOT supportedÑ-ERR_SOCK_AFUNSUPPORTEDÒ- Protocol is NOT supportedÓ-ERR_SOCK_PROTOUNSUPPORTEDÔ-( NOT enough buffer TO handle the requestÕ-ERR_SOCK_NOBUFFERÖ-8 Socket is in nonblocking mode but THIS call would block×-ERR_SOCK_WOULDBLOCKØ-' The provided address is already in useÙ-ERR_SOCK_ADDRINUSEÚ-7 The provided address is NOT available on THIS computerÛ-ERR_SOCK_ADDRNOTAVAILABLEÜ-/ Connection has been refused BY the remote hostÝ-ERR_SOCK_CONNREFUSEDÞ-ERR_SOCK_TIMEDOUTß- The host has NOT been foundà-ERR_SOCK_HOSTNOTFOUNDá- Host is unreachableâ-ERR_SOCK_HOSTUNREACHABLEã- Socket is already connectedä-ERR_SOCK_ISCONNECTEDå- The socket is NOT connectedæ-ERR_SOCK_NOTCONNECTEDç-' Shutdown has been called on the socketè-ERR_SOCK_SHUTDOWNé-P FOR sockets OF TYPE DGRAM. The package TO send exceeds the maximum package sizeê-ERR_SOCK_MSGSIZEë-B Socket has been gracefully closed. No more send/receives allowed ì-ERR_SOCK_CLOSEDí-, Tag missing in online communication buffer î-ERR_L7_TAG_MISSINGï- Unknown command groupð-ERR_L7_UNKNOWNCMDGROUPñ-/ Unknown command (within a valid command group)ò-ERR_L7_UNKNOWNCMDó- Level 7 service incompleteô-ERR_L7_INCOMPLETEõ-# Certificate validation error codesö-ERR_CERT_OK÷-B illegal error (FOR uninitialized values, TO avoid ERR_CERT_OK) */ø-"ERR_CERT_UNABLE_TO_GET_ISSUER_CERTù-ERR_CERT_UNABLE_TO_GET_CRLú-)ERR_CERT_UNABLE_TO_DECRYPT_CERT_SIGNATUREû-(ERR_CERT_UNABLE_TO_DECRYPT_CRL_SIGNATUREü-+ERR_CERT_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEYý-ERR_CERT_SIGNATURE_FAILUREþ-ERR_CERT_CRL_SIGNATURE_FAILUREÿ-ERR_CERT_NOT_YET_VALID.ERR_CERT_HAS_EXPIRED.ERR_CERT_CRL_NOT_YET_VALID.ERR_CERT_CRL_HAS_EXPIRED.'ERR_CERT_ERROR_IN_CERT_NOT_BEFORE_FIELD.&ERR_CERT_ERROR_IN_CERT_NOT_AFTER_FIELD .'ERR_CERT_ERROR_IN_CRL_LAST_UPDATE_FIELD.'ERR_CERT_ERROR_IN_CRL_NEXT_UPDATE_FIELD.ERR_CERT_OUT_OF_MEM.$ERR_CERT_DEPTH_ZERO_SELF_SIGNED_CERT."ERR_CERT_SELF_SIGNED_CERT_IN_CHAIN.*ERR_CERT_UNABLE_TO_GET_ISSUER_CERT_LOCALLY.(ERR_CERT_UNABLE_TO_VERIFY_LEAF_SIGNATURE.ERR_CERT_CHAIN_TOO_LONG.ERR_CERT_REVOKED.ERR_CERT_INVALID_CA.ERR_CERT_PATH_LENGTH_EXCEEDED.ERR_CERT_INVALID_PURPOSE.ERR_CERT_UNTRUSTED.ERR_CERT_REJECTED.7 These are 'informational' when looking for issuer cert. ERR_CERT_SUBJECT_ISSUER_MISMATCH.ERR_CERT_AKID_SKID_MISMATCH.$ERR_CERT_AKID_ISSUER_SERIAL_MISMATCH.ERR_CERT_KEYUSAGE_NO_CERTSIGN.!ERR_CERT_UNABLE_TO_GET_CRL_ISSUER.%ERR_CERT_UNHANDLED_CRITICAL_EXTENSION.ERR_CERT_KEYUSAGE_NO_CRL_SIGN.)ERR_CERT_UNHANDLED_CRITICAL_CRL_EXTENSION.ERR_CERT_INVALID_NON_CA.#ERR_CERT_PROXY_PATH_LENGTH_EXCEEDED.&ERR_CERT_KEYUSAGE_NO_DIGITAL_SIGNATURE.'ERR_CERT_PROXY_CERTIFICATES_NOT_ALLOWED .ERR_CERT_INVALID_EXTENSION¡.!ERR_CERT_INVALID_POLICY_EXTENSION¢.ERR_CERT_NO_EXPLICIT_POLICY£.ERR_CERT_DIFFERENT_CRL_SCOPE¤.&ERR_CERT_UNSUPPORTED_EXTENSION_FEATURE¥.ERR_CERT_UNNESTED_RESOURCE¦.ERR_CERT_PERMITTED_VIOLATION§.ERR_CERT_EXCLUDED_VIOLATION¨.ERR_CERT_SUBTREE_MINMAX©.$ERR_CERT_UNSUPPORTED_CONSTRAINT_TYPEª.&ERR_CERT_UNSUPPORTED_CONSTRAINT_SYNTAX«. ERR_CERT_UNSUPPORTED_NAME_SYNTAX¬."ERR_CERT_CRL_PATH_VALIDATION_ERROR. The application is not happy®.!ERR_CERT_APPLICATION_VERIFICATION¯.ERR_CERT_MISSING°.ERR_CERT_UNKNOWN_ERROR±.$adcc37d5-f407-4f11-9834-0c31bac94657².(cmperrors2 interfaces, 3.5.15.0 (system)³. 330479632´.ComponentIDµ.E ComponentID of the component manager, e.g. to specify for EventOpen ¶.CMPID_CmpMgr·.B ComponentID as a placeholder for all IEC components/applications ¸. CMPID_IecCode¹.CMPID_CmpFileTransferº.$228db6b8-947d-4adb-8c50-8280abf93255».2Typified, ToCompile, Compiled, ContainsNoParseTree¼.System.Byte½. Relocated¾.ToCheck¿.LTopLevel, Typified, ToCompile, NotForUpToDate, Compiled, ContainsNoParseTreeÀ.<TopLevel, Typified, ToCompile, Compiled, ContainsNoParseTreeÁ.StaticFunctionCallÂ.STopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, Generated, ToGenerateÃ.PTypified, ToCompile, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCallsÄ. InterfaceCallÅ.VirtualFunctionCallÆ.'Typified, Compiled, ContainsNoParseTreeÇ.ZTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCallsÈ.BTypified, ToCompile, Compiled, ContainsNoParseTree, ContainsNoCodeÉ.0Ê.ITypified, ToCompile, Compiled, ContainsNoParseTree, Generated, ToGenerateË.__DOWNLOAD__CODEÌ.__ONLINE__CHANGE__CODEÍ."__DATASEGMENTFLAGS__224__GVL__INITÎ.HTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, ToGenerateÏ.#__COMPILE_CONSTANTS__225__GVL__INITÐ.__WATCHVARS__226__GVL__INITÑ.1__ALLOCATEDIMPLICITREFERENCETYPES__227__GVL__INITÒ.#CONSTANTS__228__SYSTEM____GVL__INITÓ.TYPE_CLASS__399__GVL__INITÔ.$_IMPLICIT_KINDOFTASK__582__GVL__INITÕ./_IMPLICIT_TASK_CONFIG_VARIABLES__985__GVL__INITÖ./_IMPLICIT_TARGET_INFO_VARIABLES__137__GVL__INIT×.!__APPLICATIONNAME__138__GVL__INITØ.%__TASKSPECIFICINFOGVL__139__GVL__INITÙ.__TYPECLASS__989__GVL__INITÚ.&__CONVERSION_CONSTANTS__994__GVL__INITÛ.(__LCONVERSION_CONSTANTS__1076__GVL__INITÜ. __SETUP__CALL__POU__1__GVL__INITÝ.PRG_TEST__598__GVL__INITÞ..ToCompile, Compiled, ContainsNoParseTree, Blobß.DToCompile, Compiled, DataRelocations, ContainsNoParseTree, ConstBlobà.GLOBAL__INITá. CODE__INITâ.OTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, IgnoreForChecksumã.RemovedFromMemoryä.__RELOCATE__OFFSET_TABLEå.;ToCompile, Compiled, ContainsNoParseTree, IgnoreForChecksumæ.$901decdd-9eb4-4a5b-951f-42fb21b27718ç.65183è.Retain, Areaé.Retain, Area, Persistentê. Code, Areaë.Memoryì.Inputí.Outputî. Automaticï.Retainð.Automatic, DynamicSizeñ.Retain, Persistentò.Codeó.Targetô.$b1d7d47f-aa33-4b86-b93d-8e11ed0bb0cfõ.$bf5ff5a1-0000-0000-0000-000000000000ö.$be2dfced-0000-0000-0000-000000000000÷.AddrSizeø.4ù.generate_exceptioninfoú.IsTryCatchSupportedû.IsLittleEndianü.RegisterSizeý.32þ.Platformÿ.RiscFrontEnd/ ByteOrder/Intel/PackMode/IsFPUSupported/Standard /BPLog/ SM3_Basic/SM3_CNC/:sm3_robotics, 4.5.1.0 (3s - smart software solutions gmbh)/SM3_Robotics/?sm3_robotics_visu, 4.5.1.0 (3s - smart software solutions gmbh)/SM3_Robotics_Visu/@sm3_transformation, 4.5.1.0 (3s - smart software solutions gmbh)/TRAFO/7sm3_error, 4.5.1.0 (3s - smart software solutions gmbh)/ SM3_Error/6sm3_math, 4.5.0.0 (3s - smart software solutions gmbh)/SM3_Math/IBaseLibrary/util, 3.5.14.0 (system)/Util/IECStringUtils/ CmpErrors/Component_Manager/.caa memory, 3.5.12.0 (caa technical workgroup)/MEM/sysmem, 3.5.12.0 (system)/SysMem/Ecommon behaviour model, 3.5.15.0 (3s - smart software solutions gmbh)/CBML/systimertc, 3.5.5.0 (system)/ SysTimeRtc /systimecore, 3.5.5.0 (system)¡/SysTimeCore¢/SysCpuHandling£/systime, 3.5.9.0 (system)¤/SysTime¥/Stu¦/SysTypes_Interfaces§/iostandard, 3.5.13.0 (system)¨/ IoStandard©/systarget, 3.5.5.0 (system)ª/ SysTarget«/_3S_LICENSE¬/7caa callback extern, 3.5.11.0 (caa technical workgroup)/CB®/%iodriver interfaces, 3.5.2.0 (system)¯/IoDriver_Interfaces°/$floatingpointutils, 3.5.9.0 (system)±/FPU²/8sm3_shared, 4.4.0.0 (3s - smart software solutions gmbh)³/SM0´/8caa device diagnosis, 3.5.14.0 (caa technical workgroup)µ/DED¶/Fsm3_trajectorygeneration, 4.5.0.0 (3s - smart software solutions gmbh)·/SM3_TrajectoryGeneration¸/7sm3_rbase, 4.5.1.0 (3s - smart software solutions gmbh)¹/SMRBº/7sm3_ramps, 4.4.0.0 (3s - smart software solutions gmbh)»/ SM3_Ramps¼/<memorybarrier, 3.5.12.0 (3s - smart software solutions gmbh)½/ MemoryBarrier¾/CmpCodeMeter¿/@caa ressource manager extern, 3.5.11.0 (caa technical workgroup)À/RSMÁ/%systypes interfaces, 3.5.2.0 (system)Â/sysdir, 3.5.12.0 (system)Ã/SysDirÄ/7caa behaviour model, 3.5.11.0 (caa technical workgroup)Å/CBMÆ/2caa fb factory, 3.5.13.0 (caa technical workgroup)Ç/FBFÈ/IIoDrvÉ/cmpasyncmgr, 3.5.12.0 (system)Ê/CmpAsyncMgrË/5commfb, 3.5.14.0 (3s - smart software solutions gmbh)Ì/CommFBÍ/6caa tickutil extern, 3.5.7.0 (caa technical workgroup)Î/TICKUÏ/2caa tick extern, 3.5.7.0 (caa technical workgroup)Ð/TICKSÑ/Ccaa memory block manager extern, 3.5.13.0 (caa technical workgroup)Ò/MBMÓ/syssem, 3.5.5.0 (system)Ô/SysSemÕ//iodriver profibus2 interfaces, 3.5.6.0 (system)Ö/IIoDrvProfibus×/Asm3_addrampsdefault, 4.1.0.0 (3s - smart software solutions gmbh)Ø/SoftMotion_AddRampsÙ/SM3MÚ/systime, 3.5.5.0 (system)Û/sysexcept, 3.5.7.0 (system)Ü/ SysExceptÝ/visudialogs, 3.5.12.0 (system)Þ/VisuDialogsß/standard64, 3.5.13.0 (system)à/ Standard64á/Edatasources interfaces, 3.5.15.0 (3s - smart software solutions gmbh)â/IDatasourcesã/licä/stdå/5sm3_rcp, 4.5.1.0 (3s - smart software solutions gmbh)æ/SMRCPç/TMPè/Bsm3_cpkerneldefaults, 4.5.0.0 (3s - smart software solutions gmbh)é/SM3_CPKernelDefaultsê/System.Guidë/System.Collections.Hashtableì/System.Collections.ArrayListí/ 0000 0010î/3.5.14.0ï/$6708bd14-cddc-4e28-b69d-d3183b7c423eð/ VariableIdñ/SignatureIdò/ScopeIdó/PositionToSaveô/MessagesToSaveõ/&{bc2be951-49f6-4f0f-b731-e31e36606f1e}ö/$c529d0d0-8cec-4d28-bb44-5e2d4ebecdcf÷/Flagsø/&{79aa0cce-71e9-4699-9f63-03cf09dcc367}ù/$fd373d9e-533d-4d69-ad04-82ccf513ff10ú/$1cf06df3-a230-4b74-89c8-47fcfa9aa3a2û/Idü/CrossReferencesNewý/System.Collections.SortedListþ/Locationÿ/ Attributes0 Expression0DirectVariable0Inputs0Flag0&{1bfe400e-6f3f-4faa-a8db-db81cd2849ba} 0$8499b87a-2b75-4c62-8657-e4aa9316c18b0TypeDef0$e833a88e-e01b-4cc9-b0cb-fe17b4370a010BaseType0$48397926-5c6f-41f7-b878-4ffb8fbbd3f00Area0$1bef2131-34c3-45be-922f-9a02d282ff7b0Current0$2dacf8ba-27b3-43f2-b9f0-d578dd179b1d0 TaskIndexList0VFTable0QNEBaseSignature0QNEInterfacesArray0InterfaceIds0 CalleeSize0NameExp0Operator0&{bffb3c53-f105-4e85-aba2-e30df579d75f}0 VariableArray0&{1cf06df3-a230-4b74-89c8-47fcfa9aa3a2}0 SubSignatures0&{9b5d4c11-b2d9-46c2-bf90-350eefa47fc5}0 Flags_long0ParentSignatureId0 ObjectGuid0MessageGuid0ParentObjectGuid 0LibraryPath¡0DPOffset¢0DataLocation£0 IdManager¤0 TimeStamp¥0Checksum¦0ChecksumNoInit§0 Declarers¨0 Referencer©0CallersArrayª0System.Int32«0 CalleesArray2¬0HighestUsedOffset0$af63b19d-1ce0-4d63-a098-6d4c02ca35da®0$b5bdc032-52f5-48d3-9c8c-8c79ab5a416d¯0Base°0 LongValue±0&{16f7aa24-038f-444e-9d81-b001bc091d35}²0Negative³0OriginalTypeClass´0$5677bd2d-c2f2-4498-a6d6-5e2aecdbd55dµ0DefaultValue¶0$88513019-926a-4125-ab4f-260cf5e4c63e·0$90261d82-8abd-4de3-8803-2b5bc8289940¸0$b3888e82-99e8-407c-b55f-e8cc12c8efaa¹0Relocationsº0$f5a15500-d891-4119-b195-3d52d84c8577»0RelocationAreaList¼0$3504087f-d7cb-485e-a95e-35e81d5fc2b0½0 CodeBytesX¾0flags¿0&{0148e1b6-6651-4ac0-91ad-da620acad399}À0RelocationListÁ0$b19c1570-9d63-448c-b1a8-77c564f4bf41Â0 ParseTreeÃ0ParseTreeEmptyÄ0CompiledPOUFlagsÅ0&{ffb74c62-0dab-4b81-a769-562edfcba448}Æ0CompiledCodeÇ0ScratchSizeÈ0MaxParamSizeÉ0BreakpointlistÊ0messagesË0CodeGeneratorStackSizeÌ0BitWriteAccessesÍ0 trycatchfpadrÎ0trycatchcodeadrÏ0InternalCompiledPOUFlagsÐ0&{d84e773e-c159-42c6-8f67-07b0df2b44ab}Ñ0 pmessagesÒ0$9acb4711-ae23-42e3-a6bc-58b75ab4215eÓ0ExceptionHandlingSuccessorÔ0LenÕ0 CodeOffsetÖ0 Successors×0StepInsØ0AssSuccÙ0AreaGPRegisterÚ0OffsetGPRegisterÛ0$762f79d8-237e-4aec-8576-b032ad1bb941Ü0SignIdÝ0&{fcb43bca-9283-4080-8c7a-085c4f21024c}Þ0 StepOutBpß0StepInBpà0&{762f79d8-237e-4aec-8576-b032ad1bb941}á0$9e894478-12b9-4f7b-ae88-4807ccb19a10â0Listã0Firstä0$467ac7f9-d9fc-4e1d-9fb4-9e5dde0a44c2å0ReplaceConstantsæ0Unicodeç0LoggingInBreakpointsè0$1cdc5830-00b6-4d16-ac84-61a1c00364e9é0$17b1421c-2984-4921-865a-ab1609aa9f92ê0 MemManGapsë0BaseAddressì0$e0d57300-b431-4917-bfe4-fc6030a266eeí0Addressî0 DPTableOffsetï0&{68cddacd-2830-4780-ae45-869af5892c4f}ð0Memmanñ0SegmentSizeò0HTMemMansToFlagsó0 LogByFlagô0$e22c2694-f644-4661-a028-99897a56f19aõ0StartAddressö0DataSegmentFlags÷0 AreaFlagsø0&{be5c129c-a197-417b-85f0-00907e2c063f}ù0MinimalSizeú0AllocationPlusû0 Availableü0MaximalSizeý0$a20044ae-acaa-44c9-83f9-750bbfb34c6aþ0DataSegmentsÿ0Areas1 FirstArea1$a2ede959-e5fe-4f81-9037-a646588f90671 GuidObject1GuidTask1TaskName 1ParentTaskName1$b60bf7c1-48fb-428f-888b-da4337fb7f3c1 TaskListArray1&{a2ede959-e5fe-4f81-9037-a646588f9067}1$df911092-020b-4e0a-bf63-b9df8a0ee0a71libid1name1referencinglib1 outofpool1id1QO1$d22ac189-3d1c-422d-b11c-0ca8bf22a5791libinfosave1&{df911092-020b-4e0a-bf63-b9df8a0ee0a7}1$e6a670d4-8bad-4716-a29b-770da7f0eef71TaskList1TaskGuidsOfObject1 DownloadSlots1OnlineChangeSlots1$99fa1ec1-fc21-4c93-9f1e-0accb45e8a841table_11$3966d598-3646-49d7-a64c-1b0623a3daed1$d774556f-de05-4539-a455-16fd4345bbf51type1version1$32583999-e3b5-4fb3-8394-6c5409f3c8a71SignaturesArray 1&{2dacf8ba-27b3-43f2-b9f0-d578dd179b1d}¡1GlobalSignaturesArray¢1CompiledPOUsArray£1&{b19c1570-9d63-448c-b1a8-77c564f4bf41}¤1CompileOptionsToSave¥1CodegeneratorClass¦1ImplicitReferenceVariableList§1ProjectChecksum¨1staticmemorysegments©1Memchecksumª1DataManager«1 KindOfContext¬1&{1d8fe3d0-8423-48cf-8a9b-eaa134990850}1SignatureIDMan®1LibraryIDMan¯1ReadyForDownload°1ReadyForCompile±1SystemApplication²1 DynamicMemory³1GenerateContent´1DeviceApplicationµ1ApplicationGuid¶1TimeStampContext·1 TimeStampPool¸1ContainsOnlineChangeCode¹1 GuidCodeIdº1 GuidDataId»1GuidCodeIdLast¼1GuidDataIdLast½1CRCCode¾1CRCData¿1CRCCodeLastÀ1CRCDataLastÁ1DefinesÂ1PrecompileDefinesÃ1bFastOnlineChangeÄ1libtableÅ1LPTChecksumÆ1LibChecksumÇ1PoolLibChecksumÈ1SlotPOUListÉ1DirVarTableÊ1WithoutTargetsettingsË1 auxiliaryÌ1simulationmodeÍ1 bcontainscodeÎ1deviceidÏ1$34951a1b-8cb0-4c0a-8fa0-271c0a67fbd7Ð1$4c33f62d-2ba9-4951-b27c-3cedc666c650Ñ1$d383106b-f62a-4320-9b73-1ad1cdb4256bÒ1$223d196a-c1d7-4283-aea6-270599207584Ó1$2de3951e-05c3-42d9-a8c2-0f9e6cd2c60eÔ1$2c47afd5-45a7-4318-a91c-e6ccae571e57Õ1$3b41731c-8281-447e-8300-967d85065431Ö1$ab09737e-b891-4fc6-9c8c-246eb8cdb046×1SizeExpressionØ1$bad068f5-d75d-4104-a3db-b92ab7fd8e73Ù1$4843ac80-bf56-4163-a5d4-aef6b1846075Ú1$d4b6feaa-e9d6-4356-aaf6-400ae9d83e05Û1LowerÜ1UpperÝ1$1cdc270d-d608-42d9-b269-87457e40fd7dÞ1&{73ce5f25-d76d-4bc9-a6d5-0f1336fc56e3}ß1$1a5bd4e4-ab1d-4514-adeb-22e2eeddcce6à1$306eb234-9ade-475b-8492-004f59e739d9á1$ef19db71-9ad6-4d2a-9535-1a0f103c369dâ1$8db06532-d746-4cb4-83d6-15216b159eedã1$ac2d6c97-8b55-498b-83df-2059efb47336ä1$d3df9a8e-760e-4747-9783-699d53cec752å1$119284d1-95b7-462d-b06e-48ad65601f7bæ1$8805e1b7-ec8d-4bf0-9194-dcb2b29ff03fç1$00014fd3-8bc4-4e77-981b-095b9c869fc2è1$0ba7ff45-cf9b-419a-84c8-ae1727e3961fé1compiledtypeê1Leftë1Rightì1$c8e3c9b1-32ff-4f6a-ac31-84a9afd1157fí1Operandsî1 ScratchOffsetï1$5b2d1cb9-99ea-435b-a739-5533bb136a6að1cppñ1offsetò1ipoffsetó1$8ec925c2-9c5b-4d91-b581-8ec7c2f47ca9ô1$2725bf0b-b380-4604-92d5-60505864ba35õ1 dicInterfacesö1 dicOffsets÷1pointersizeø1&{182b8553-40b6-4da1-b365-72d137f05911}ù1$4b4ec020-a837-40a5-a308-89707ef17af6ú1OrgTypeû1$71c4e10e-3e38-473f-b4b9-db1c89cbe452ü1$80dc2303-8251-4747-b7f7-a402ed859801ý1$6c1d7ed1-429a-4b0d-84d7-fc2a63a0c431þ1$cf26b7be-0f44-4dda-af18-2657035f6b45ÿ1$944d7731-22cd-4544-8e6a-e23be2ec40102$187803f1-6b2c-486c-bcf0-b6f913f59ce32StringValue2$1b39b304-ff51-4801-9f54-9501addefd532$1315f3d2-84a9-4bcd-a718-efa3d05015342InitListNew 2DefInitDone2$fbc31a5d-5b51-405e-b986-43250b86c9f72 FloatValue2$60e07f4f-23d9-424e-a27b-bf5e093fd92a2Number2$9a2297c9-1fa0-4ec6-a2b2-e2de8fdc6a632BitNr2$458880e1-4ccc-4f34-af1a-7cd7fe7c81932LValue2RValue2$30cfa52e-e32a-43c4-a033-2a152796aeaf2$861aad71-b796-49c8-8e44-0d476c5ed1ab2$aef7a177-3956-4c97-8460-6228ab3f34012$62f14e25-8c68-4d8c-98ca-3067a13656f72$79a8baad-3f7f-40d2-8250-3037bf5e66312Variable2Accesses2$528c9030-405d-451c-b45a-9aa6b05207832From2To2$2f0e740d-b75f-401a-a7f2-ecd76eb6ee2d2 CocoFlags2 reloclist2 related_id2$40c3211d-4a89-419c-88a4-b26d33c2707e2arealist2$35e108dd-922c-4765-9f66-6c7ed83f4af7 2MotorolaByteOrder½ï/´ å ð/ñ/ò/ó/ ô/õ/¯ö/ ÷/ø/ù/ñú/ó/ û/ü/ ý/þ/ÿ/ 0 0 0 ¯´00 00ñ/ò/ñï/´å ð/ñ/ò/ó/ ô/õ/¯00ñ00 00 0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬00 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬00ñ ®0´ó/ ô/õ/¯0°0 í±0²0³0±0´0ñ/¯0µ0 ñú/ó/ û/ü/ ý/þ/ÿ/B00 0 ¯´00ú/ó/ û/ü/ ý/þ/ÿ/ 00 0 ¯´000 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0 ©0 «0 ¬0¶0´ó/ ô/õ/°0 í±0²0³0±00 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0·0 ¸00¹0@º0»0@¼0½0@¾0¿0¢0À0Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0 È0É0 Ê0õ/Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 Ò0 ó/ Ó0Ô0Õ0Ö0 ×0 Ø0ª0Ù0Ú0Û0Ü0÷/Ý0Þ0ß0Ò0 ó/ Ó0Ô0Õ0Ö0ª0×0à0Ø0ª0Ù0Ú0á0â0Aã0Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0È0É0Ê0õ/Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 ä0å0¦ª0æ0ç0è0 ¥ é0ê0@¥ë0!ì0 0 í0î0¥÷/ï0ð0ñ0ò0 ó0"ô0 õ0¥° ö0ï0÷0ø0ù0ú0¥0 û0ü0#ý0þ0@ÿ0@1$11ê/1ê/1 1 %111&1111111'111(11 ë/1 ë/1 ë/1 ë/)11B*1â0ì/+1111,1.1 1¡1 1¢1£1¤1¥1ê/¦1@§1 ¨1@©1 ª1«1¬111®1¯1°1±1²1³1´1µ1ê/¶1 ·1 ¸1¹1ê/º1ê/»1ê/¼1ê/½1 ¾1 ¿1 À1 Á1ë/Â1 ë/Ã1Ä1Å1 Æ1 Ç1 È1É1Ê1Ë1Ì1Í1Î1-Ï1ñ.Ð1ñ/0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬00Ñ1ñ10 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬02Ò1ñ30 0¼.0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬04Ó1ñ5Ô1ñ6Õ1ñ7Ö1×1ñ8Ø1ñ9ú/ó/ û/ü/ ý/þ/ÿ/B0 0 0 ¯´00:Ù1ñ;Ú1Û1Ü1<Ý1ý @0ñ=0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0>0 0 0 ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0B©0 «0 ¬0?ß1ñ@à1ñAá1ñB0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬0Câ1ñDã1ñE0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬0Fä1ñGå1ñHæ1ñI0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0J0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0Kç1×1 ñL0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0M0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬0N0 0 0 ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0O0 0 0 ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0P0 0 0 ñ/00 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0B©0 «0 ¬0Q0 0 0 ñ/00 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0@¬0R0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0S0 0¼.0 ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0T0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬0Uè1´ó/ ô/õ/é1ê1ë1Vì1´ó/ ô/õ/é1í1@î100WÖ1×1 ñXï1û/¯ð1ñ1ò1Yó1¯û/Zô1â0Aþ/ õ1 ë/ö1 ë/÷1[0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬0\0 0 0ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0]ô1â0Aþ/õ1 ë/ö1 ë/÷1^¶0´ ó/ ô/õ/°0 í±0²0³0±0_0 0 0ñ/0 0ø10ª0ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0`0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0a0 0 0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0bô1â0@þ/õ1 ë/ö1 ë/÷1c0 0 0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0d0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬0e0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0fè1´ ó/ ô/õ/é1 ê1ë1gù1ú1µ0 0ñ/ò/ñh0 0¼.0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0ª0«0 ¬0i0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0j0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬0k0 0¼.0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0lû1ñmü1ñný1ñoþ1ñp0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0q0 0¼.0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0@¬0rÿ1´ó/ ô/õ/¯0s0 0¼.0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0t0 0¼.0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬0u0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0v0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬0w0 0¼.0ñ/0 0ø10ª0ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0x0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0yú/ó/ û/ü/ ý/þ/ÿ/C0 0 0 ¯´00z0 0¼.0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0ª0«0@¬0{ú/ó/ û/ü/ ý/þ/ ÿ/ 0 0 0 ¯´00|0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0 ©0 «0 ¬0}0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0~0 0 0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0B©0 «0 ¬00 0¼.0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0ª0«0 ¬02´ó/ ô/õ/í±02³0±00 0¼.0ñ/0 0 0 ÿ/C¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0ª0«0 ¬00 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬00 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬00 0 0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬0 0 0 0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0@¬02ñ2´ó/ ô/õ/é12@ 20 0 0ñ/0 0 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0@¬00 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬00 0 0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬00 0¼.0ñ/00 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬02´ó/ ô/õ/í±02³0±00 0¼.0ñ/00 0 ÿ/B¥0000000Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬02´ó/ ô/õ/é1Ù22´ó/ ô/õ/é12A 222 ÷/ø/ç1×1ñ2´ó/ ô/õ/22002´ó/ ô/õ/é12@ 20 0¼.0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0@¬020ñ0 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬02´ó/ ô/õ/é100 0¼.0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬00 0 0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0B©0 «0@¬0ú/ó/ û/ü/ ý/þ/ ÿ/B0 0 0 ¯´000 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0ª0«0 ¬020ñ0 0 0 ñ/0 0 0 ÿ/B¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0B©0 «0 ¬00 0 0 ñ/0 0 0 ÿ/ ¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬00 0 0 ñ/0 0 0 ÿ/ ¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0 0 0 0 ñ/0 0 0 ÿ/ ¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0¡0 0 0 ñ/0 0 0 ÿ/ ¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0¢0 0 0 ñ/0 0 0 ÿ/ ¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0£0 0 0 ñ/0 0 0 ÿ/ ¥0000000 Þ1÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0 ©0 «0 ¬0¤0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0£0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0¥0 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ë/¨0 ©0 «0 ¬0¦0 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0§2´ó/ ô/õ/é122@¨0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0©0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0ª0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0«0 0 0 ñ/0 0 0 ÿ/C¥0000000 ÷/00 û/00ê/0ê/0ê/ 0 ¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0¬0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬00 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0®0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0 ¬0¯2´ó/ ô/õ/2±02±00°0 0 0 ñ/0 0 0 ÿ/B¥0000000 ÷/00 û/00ê/0ê/0ê/ 0¡0¢0 £0¤0 ¥0 ¦0 §0 ¨0 ©0 «0@¬0±ì1´ó/ ô/õ/é1í1Aî100²Ò0 ó/ Ó0Ô0Õ0Ö0ª0×0 Ø0ª0Ù0Ú0³á0â0@ã0´Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0 Ç0¤0 ¥0 0È0É0 Ê0õ/Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 µÁ0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0È0É0 Ê0õ/Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 ¶Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0 È0É0Ê0õ/Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 ·Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0 È0É0Ê0 Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 ¸Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0È0É0Ê0 Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 ¹Á0¯ò. Â0 Ã00ê/0ê/0ê/ñ/Ä0Å0Æ0Ç0¤0 ¥0 0 È0É0 Ê0 Ë0Ì0 Í0 Î0 Ï0Ð0Ñ0 º2½0@2¿0¢02 2»22@¼2½0@2¿0¢022½2½0@ 22¿0¢0,Ï ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ T T v ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ A ÿÿÿÿ ÿÿÿÿA ÿÿÿÿ A ÿÿÿÿ £ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 1 ÿÿÿÿ ÿÿÿÿ1 ÿÿÿÿ À 1 ÿÿÿÿ T ÿÿÿÿ ÿÿÿ <Î 1ý·A×öO+öO+ A A A V 1 V V A ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ T ÿÿÿÿ ÿÿÿ <Π븮VÜñÖðOfîðOfî h Ó Ó Ù Ù / ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ - I . W - V ÿÿÿÿ ÿÿÿ <Î -ÁÜD¬×Î ~ÍNÉÐ / ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ . H - W - V ÿÿÿÿ ÿÿÿ <Î -ÁÜD¬×dÂÌ;½{&