wG$ LOCK010.AN@ LOCK010.ABACKUP/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY KITD:*.*; KEN_01:[COAR.SOURCE.BLISS]LOCK010.A/LABEL=(LOCK)/SAVE/BLOCK=9000/GROUP=25VAX/VMS SPKITBLD Procedure COAR A^V4.4 _COPRGM:: O7 _HSC000$DUA1: V4.4 $&*[COAR.WORK.KIT_BUILD.KIT]CLILOCK.CLD;5+,5 ./A 4L->0123KPWO5 6 ͎77[^89GAHJDEFINE TYPE TYP_LOCK_SCOPE KEYWORD GROUP, DEFAULT KEYWORD SYSTEMDEFINE TYPE TYP_LOCK_MODE KEYWORD EXCLUSIVE, DEFAULT KEYWORD NULL KEYWORD PREAD KEYWORD PWRITE KEYWORD CREAD KEYWORD CWRITEDEFINE VERB LOCK IMAGE "IMAGE_DIRECTORY:LOCK" PARAMETER P1 VALUE (REQUIRED) PROMPT="Resource" QUALIFIER SCOPE VALUE (TYPE=TYP_LOCK_SCOPE) DEFAULT QUALIFIER MODE VALUE (TYPE=TYP_LOCK_MODE) DEFAULT QUALIFIER WAIT DEFAULT QUALIFIER RELEASE NONNEGATABLE QUALIFIER LOG DEFAULT DISALLOW (RELEASE AND (WAIT OR MODE))&*[COAR.WORK.KIT_BUILD.KIT]HLPLOCK.HLP;1+,G./A 4C->0123KPWO 5 6p͎7@yj^89GAHJ1 LOCK C The LOCK command allows access to the Distributed Lock Manager C from DCL command level. This functionality allows multiple C processes to synchronise at the command level, without the need C for extensive application programing. Note that locks are C cluster-wide, so processes on different CPUs in a cluster may synchronise via this command.  Format:   LOCK resource-name  C The user privilege SYSLCK is required to access system-wide locks.  2 Parameter  resource-name C The name of the virtual resource upon which to request a lock. C Note that resources are a fiction of convenience, and C synchronisation by their usage requires that all parties agree + upon the name and scope of the resource.  C The resource name may be any text string up to 31 characters in C length. If special characters or blanks are desired, enclose : the resource-name in quotation marks ("resource-name").  2 Command_qualifiers /SCOPE   /SCOPE=access-scope  C The scope of a resource refers to what category of users may . access it. Possible values for /SCOPE are:  C GROUP Access to this resource is limited to other processes : in the same UIC group as the current process.  C SYSTEM Access to this resource is unlimited; any process in 2 the system may request locks upon it.  C /SCOPE=GROUP is the default, both by omitting /SCOPE altogether, ! and by specifying only /SCOPE.  C The same resource-name may not be accessed simultaneously by a C single process as both a system and a group resource. The scope C of the first reference controls how future references will be C resolved until the process releases it. If RES1 is locked as a C system resource, all future references to RES1 (even with C /SCOPE=GROUP) will access the system-wide resource until it is C released, at which point the group resource RES1 may be accessed = by issuing a new LOCK command and specifying /SCOPE=GROUP.  > The user privilege SYSLCK is required to use /SCOPE=SYSTEM.  /MODE   /MODE=lock-mode  C Specifies the desired mode for the lock being requested. Valid  values are:  ; EXCLUSIVE Allows no other accessors except NULL locks.  C PWRITE Protected write. Allows access by other processes at CREAD or NULL.  C PREAD Protected read. Allows access at CREAD, PREAD, or  NULL mode.  C CWRITE Concurrent write. Allows other processes to access = the resource at CWRITE, CREAD, and NULL modes.  C CREAD Concurrent read. Access is allowed to other C processes requesting locks at PWRITE, PREAD, CWRITE, % CREAD, and NULL modes.  @ NULL Allows access to all other requests, at any mode.  C See the VAX/VMS System Services Reference Manual chapter on Lock , Management Services for more information.  /WAIT   /WAIT (D) /NOWAIT  C Indicates whether the requesting process should suspend C processing until the resource is available. If /NOWAIT is C specified and the requested lock cannot be granted immediately, C LOCK will issue a fatal error message and exit. Otherwise, LOCK ; will suspend all activity until the lock can be granted.  /LOG  /LOG (D) /NOLOG  C Indicates whether LOCK should issue informational messages about C the state of the lock request. If /LOG is specified (either C explicitly or by default), all messages will include the date * and time for synchronisation debugging.  /RELEASE  C Causes LOCK to relinquish all interest in the specified C resource. Any locks which have been granted for the resource  are released.  (*[COAR.WORK.KIT_BUILD.KIT]KITINSTAL.COM;2+,. /A 4O ->0123KPWO 5 6`Hj͎7@v^89GAHJ  $KITINSTAL:$!)$! Installation kit for the LOCK command.$!#$ ON ERROR THEN $GOTO EXIT_ERROR,$ ON CONTROL_Y THEN VMI$CALLBACK CONTROL_Y0$ IF P1 .EQS. "VMI$_INSTALL" THEN $GOTO INSTALL($ IF P1 .EQS. "VMI$_IVP" THEN $GOTO IVP$ EXIT VMI$_UNSUPPORTED$! $EXIT_ERROR:/$ IF F$TRNLNM ("LOCK_EDIT_CMD") .NES. "" THEN - $CLOSE LOCK_EDIT_CMD$ EXIT VMI$_FAILURE$!$EXIT_SUCCESS:$ EXIT VMI$_SUCCESS$! $INSTALL:$ VMI$CALLBACK - SET - PURGE - ASK$!$ VMI$CALLBACK - SET - IVP - ASK$!$ VMI$CALLBACK - ASK - LOCK_USEDEC -< "Do you want to install LOCK in the Digital directories" - NO - B,H -O "Installation of non-DEC products in the [SYSxxx] directories is UNSUPPORTED"$!'$ IF LOCK_USEDEC THEN $GOTO DONE_ASK$!$ VMI$CALLBACK - ASK - LOCK_EXE -# "Where should the image reside" - VMI$ROOT:[SYSEXE] - S,D$!>$ PROMPT = F$FAO ("Insert the help text into what library!/ ")$ VMI$CALLBACK - ASK - LOCK_HELP - "''PROMPT'" - VMI$ROOT:[SYSHLP]HELPLIB.HLB - S -@ "Specify the complete file specification of the help library."$!E$ PROMPT = F$FAO ("Insert the LOCK verb into which command table!/ ")$ VMI$CALLBACK - ASK - LOCK_CMD - "''PROMPT'" -" VMI$ROOT:[SYSLIB]DCLTABLES.EXE - S -A "Specify the complete file specification of the command table."$! $DONE_ASK:$ TYPE SYS$INPUTF All questions concerning the installation have been asked. The9 installation will continue for another 5 minutes.I Please read the release notes to see what changes need to be made0 to your site-specific startup procedure.$!$ VMI$CALLBACK - PROVIDE_FILE - LOCK_ - LOCK010.MEM - VMI$ROOT:[SYSUPD]$!$ VMI$CALLBACK - MESSAGE - I - RELNOTES -< "release notes have been placed in SYS$UPDATE:LOCK010.MEM"$!$ VMI$CALLBACK - FIND_FILE - LOCK_ - MESSAGE - VMI$ROOT:[SYSEXE].EXE; - S - FOUND$ IF FOUND .NES. "" THEN -( MESSAGE /OBJECT=VMI$KWD VMI$KWD:MSGLOCKF$ LINK /NOTRACEBACK /EXECUTABLE=VMI$KWD VMI$KWD:LOCK, MSGLOCK, LOCKRTL$!,$ IF .NOT. LOCK_USEDEC THEN $GOTO CUSTOMISE$!$ VMI$NO_OUTPUT0$ EDIT /NOJOURNAL /NOCOMMAND VMI$KWD:CLILOCK.CLD$SUBSTITUTE /IMAGE_DIRECTORY:// WHOLEEXIT$!$ VMI$CALLBACK - PROVIDE_DCL_COMMAND - CLILOCK.CLD$!$ VMI$CALLBACK - PROVIDE_DCL_HELP - HLPLOCK.HLP$!$ VMI$CALLBACK - PROVIDE_IMAGE - LOCK_ - LOCK.EXE; - VMI$ROOT:[SYSEXE]$!$ GOTO EXIT_SUCCESS$! $CUSTO@U$$ LOCK010.A>([COAR.WORK.KIT_BUILD.KIT]KITINSTAL.COM;2O 2 MISE:D$ LOCK_EXE_DD= F$PARSE ("X.Y;42", LOCK_EXE, "VMI$ROOT:[SYSEXE]") - - "X.Y;42"@$ LOCK_CMD= F$PARSE (LOCK_CMD, "VMI$ROOT:[SYSLIB]DCLTABLES.EXE")3$ LOCK_CMD_DD= F$PARSE (LOCK_CMD, , , "DEVICE") + -& F$PARSE (LOCK_CMD, , , "DIRECTORY")%$ LOCK_CMD_NT= LOCK_CMD - LOCK_CMD_DD@$ LOCK_HELP= F$PARSE (LOCK_HELP, "VMI$ROOT:[SYSHLP]HELPLIB.HLB")5$ LOCK_HELP_DD= F$PARSE (LOCK_HELP, , , "DEVICE") + -' F$PARSE (LOCK_HELP, , , "DIRECTORY")($ LOCK_HELP_NT= LOCK_HELP - LOCK_HELP_DD$!0$ OPEN /WRITE LOCK_EDIT_CMD VMI$KWD:EDITCLD.COMH$ WRITE LOCK_EDIT_CMD "EDIT /NOJOURNAL /NOCOMMAND VMI$KWD:CLILOCK.CLD":$ WRITE LOCK_EDIT_CMD "SUBSTITUTE /IMAGE_DIRECTORY:/", - LOCK_EXE_DD, "/ WHOLE"$ WRITE LOCK_EDIT_CMD "EXIT"$ CLOSE LOCK_EDIT_CMD!$ @VMI$KWD:EDITCLD /OUTPUT=_NLA0:$!:$ BACKUP 'LOCK_HELP' /IGNORE=(INTERLOCK, NOBACKUP) VMI$KWD$ VMI$CALLBACK - UPDATE_LIBRARY - LOCK_ -% 'F$PARSE ("VMI$KWD:", LOCK_HELP)' - HELP - "/REPLACE" - VMI$KWD:HLPLOCK.HLP$ VMI$CALLBACK - PROVIDE_FILE - LOCK_ - 'LOCK_HELP_NT' - 'LOCK_HELP_DD'$!9$ BACKUP 'LOCK_CMD' /IGNORE=(INTERLOCK, NOBACKUP) VMI$KWD$ SET COMMAND VMI$KWD:CLILOCK -+ /TABLE='F$PARSE ("VMI$KWD:", LOCK_CMD)' -* /OUTPUT='F$PARSE ("VMI$KWD:", LOCK_CMD)'$ VMI$CALLBACK - PROVIDE_IMAGE - LOCK_ - 'LOCK_CMD_NT' - 'LOCK_CMD_DD'$!$ VMI$CALLBACK - PROVIDE_IMAGE - LOCK_ - LOCK.EXE - 'LOCK_EXE_DD'$!$ GOTO EXIT_SUCCESS$!$IVP:$ WRITE SYS$OUTPUT ""?$ WRITE SYS$OUTPUT " . . . Beginning the IVP at ", F$TIME (), - " . . ."$ WRITE SYS$OUTPUT ""$ TYPE SYS$INPUTIMessages from the master lock process have the full message text enabled,Kwhile messages from the slave lock process have the facility text disabled.$ SET MESSAGE - /FACILITY - /SEVERITY - /IDENTIFICATION - /TEXT$ SET COMMAND VMI$KWD:CLILOCK$$ LOCK IVP_LOCK /MODE=EXCLUSIVE /LOG3$ IF F$SEARCH ("VMI$KWD:SLAVE.GO;") .NES. "" THEN - $DELETE VMI$KWD:SLAVE.GO;* $ SPAWN - /NOLOG - /NOWAIT - @VMI$KWD:LOCKIVP $IVP_10$:$ WAIT 00:00:05?$ IF F$SEARCH ("VMI$KWD:SLAVE.GO;") .EQS. "" THEN $GOTO IVP_10$$!!$ LOCK IVP_LOCK /MODE=CWRITE /LOG$ LOCK IVP_LOCK /RELEASE /LOG$ EXIT VMI$_SUCCESS$*[COAR.WORK.KIT_BUILD.KIT]LOCK.OBJ;17+,. /A 4 f->0123KPWO 5 6P̎7i^89GAHJ2LOCK1-0.0 2-Apr-1986 15:03 2-Apr-1986 15:03VAX-11 Bliss-32 V4.1-746$ LOCK  EXIT_HANDLERP 'Q' PP1SCOPE MODERELEASE(WAIT8LOGDLOCK_!ASPLNM$PROCESS `!AFtCREADCWRITE EXCLUSIVENULLPREADPWRITE GROUPSYSTEM CLI$GET_VALUE CLI$PRESENT LIB$GET_EFLIB$LOOKUP_KEY LIB$SYS_FAOLIB_CLI_SIG_TO_RET LOCK_OBTAINED LOCK_RELEASEDLOCK_CONVERTED LOCK_WAITLOCK_CANCELLEDLOCK_NOTLOCKED LOCK_NOWAIT, SYS$CMKRNL SYS$PUTMSGSYS$EXITPR ~ SYS$CMKRNLPQQQPP*PbЏLOCK_CANCELLED}|~~R SYS$PUTMSGɏ~SYS$EXIT!   "! STATUS ___STATUS dp KERNEL_CANCEL SYS$DEQ~SYS$DEQ3 p $ KERNEL_ENQSYS$DEQSYS$ENQh SRcRRcRcRc}~~ݣSYS$DEQ}~|~|~8R ~ݣ SYS$ENQc)  !  STATUSENQFLAGSY KERNEL_POSTQ' SYS$DELLNM SYS$CRELNMjW8V$^(tԮVW SYS$DELLNMЏԮ Ц ԮVW SYS$CRELNM(  8  P.ABC LNMLSTj LOCKQ(' SYS$DCLEXH SYS$TRNLNM SYS$PUTMSG SYS$CMKRNL SYS$PUTMSG SYS$PUTMSG SYS$WAITFR SYS$PUTMSG SYS$CMKRNL LOCK LIB$SYS_FAO[ SYS$PUTMSGZ CLI$PRESENTY CLI$GET_VALUEXWV^_m((g؟ SYS$DCLEXHP|0ǜhPo08~kP]Џ؞ܞЏ䞧(ЏԮ8~ SYS$TRNLNMP Ѯ 3Ю PP6<P( < ~H~kPxf LIB$GET_EFPziPfiPfffPЏLOCK_NOTLOCKEDƦTX0\1f`iPf@ǸhP=@L@LIB$LOOKUP_KEYP& (ǬhP(ǐ(LIB$LOOKUP_KEYP f~T SYS$CMKRNLP Ѯ )PЏ LOCK_NOWAITצT}X0`|~~PjɏTPfPЏ LOCK_RELEASEDT}XH`pѮ 1f-PЏ LOCK_WAITT}X0`f |~~Pjݦ SYS$WAITFRf!PЏLOCK_CONVERTEDT}XH`0d@hPЏ LOCK_OBTAINEDצT}X@`0dff |~~Pj~ SYS$CMKRNLPP~^}~LIB_CLI_SIG_TO_RET  t$    P.ABE STATUSLNMMLENLNMOMODE LNMLEN LNMEQV hP.ABD LNMLST ___STATUS ___STATUS ___STATUS ___STATUS ___STATUS ___STATUS ___STATUS ___ST9ATUS ___STATUS ___STATUS ___STATUS  SS$_NOTQUEUED SS$_BUGCHECK SS$_NOLOGNAM LNM$_INDEX LNM$M_CONFINELNM$M_NO_ALIAS LNM$_STRING PSL$C_KERNEL LCK$M_CONVERT LCK$M_SYSTEM LCK$M_NOQUEUE LCK$M_SYNCSTS LCK$M_CANCEL PSL$C_SUPER$ LKSB_L_LOCKID STS$M_INHIB_MSG*SS$_CANCELGRANT SS$_NORMAL P.ABB P.ABA P.AAZ KR_SCOPES P.AAY P.AAX P.AAW P.AAV P.AAU P.AAT P.AAS LCK$K_PWMODE LCK$K_PRMODE LCK$K_NLMODE LCK$K_EXMODE LCK$K_CWMODE LCK$K_CRMODEKR_MODES tP.AAR xP.AAQ xKD_AF `P.AAP lP.AAOl KD_LTABLE PP.AAN XP.AAMXKD_LNAME DP.AAL HP.AAK HKD_LOG 8P.AAJ <P.AAI<KD_WAIT (P.AAH 0P.AAG0 KD_RELEASE P.AAF  P.AAE KD_MODE  P.AAD P.AACKD_SCOPE P.AAB P.AAA KD_P1 PMESSAGE(HDOMODE@DMODE8DLNAME0 DRESOURCE$ DSC$A_POINTER  DSC$K_DTYPE_Z" DSC$B_DTYPE DSC$K_CLASS_D" DSC$B_CLASS# DSC$W_LENGTH(DSCREBLOCKESTATUS LKSB_K_LENGTH  LKSTAT OP OP_C_LENGTH OP_K_LENGTHOP_L_EF  OP_B_MODE OP_M_LOGOP_V_LOG OP_M_WAIT  OP_V_WAIT OP_M_RELEASE# OP_V_RELEASE OP_M_SYSLOCK# OP_V_SYSLOCK OP_M_QUEUED" OP_V_QUEUED OP_M_CONVERT# OP_V_CONVERT! OP_L_FLAGS  STRUCT_SIZE_Q STRUCT_SIZE_G STRUCT_SIZE_A STRUCT_SIZE_L STRUCT_SIZE_ STRUCT_SIZE_W STRUCT_SIZE_T STRUCT_SIZE_R STRUCT_SIZE_B STRUCT_K_Q STRUCT_K_G STRUCT_K_A STRUCT_K_L STRUCT_K_ STRUCT_K_W STRUCT_K_T STRUCT_K_B STRUCT_K_R STRUCT_SAVED STRUCT_M2'g$ LOCK010.A>$[COAR.WORK.KIT_BUILD.KIT]LOCK.OBJ;17 M ASKSTRUCT_SCRATCH STRUCT_INCR_K STRUCT_NEXT_K STRUCT_BITWIDTH STRUCT_BITSTRUCT_SUBBYTE STRUCT_BYTEx _LIB_DATA _LIB_DATAx7 _LIB_CODE _LIB_CODE7KH9 ͎%KEN_01:[COAR.SOURCE.BLISS]LOCK.B32;22  Qp&*[COAR.WORK.KIT_BUILD.KIT]LOCK010.MEM;1+,iA./A 4J->0123KPWO 5 6@_͎7 ^89GAHJ   : LOCK V1.0 Technical Release Notes     J All information necessary to use LOCK is available in the H help text. This file describes aspects of the implementation.   J LOCK is installed using the VMSINSTAL procedure. Treat it J in a manner similar to Digital layered products you install J using VMSINSTAL. However, since LOCK is not a Digital product, J it does not automatically get put in the same places as Digital  installations.  J During the installation, you will be asked whether or not J you wish to install LOCK as though it came from Digital. If you J answer in the affirmative, LOCK will be added to the default J command tables, help library, and SYS$SYSTEM. If you answer 'N' J to the question, you will be asked for each storage area as the J installation procedure comes to it. The defaults will be the J Digital areas (i.e., SYS$SYSTEM, SYS$HELP:HELPLIB.HLB, and J SYS$SHARE:DCLTABLES.EXE), but you may override them and supply J your site-specific locations. Note that the command table and J help library must already exist - the installation will NOT 3 create them if they aren't already there.  J The IVP should output a series of messages. The header 7 text of these messages should look like this:  & %LOCK-S-OBTAINED  %F-LOCKED  %I-LOCKED ! 1 %S-OBTAINED ' 1 %LOCK-S-CONVERTED & 2 %LOCK-S-RELEASED ! 2 %S-RELEASED  J Those messages marked '1' above may come out in the J opposite order, as may those marked with a '2.' This is normal, J and not cause for concern. It stems from a race condition J between the master and slave processes trying to write their 3 respective messages to the output stream.   J In order to work properly, LOCK must either be installed J with CMKRNL privilege or all processes which will be using it J must possess that privilege. In addition, the same holds true J for the SYSLCK privilege if system-wide locks are to be used. J Appropriate changes may need to be made to your site-specific  startup procedure(s).     H Page 2   J LOCK works by taking out locks at supervisor mode. J Continuity is maintained by storing the contents of the lock J status block in a protected logical name. LOCK must be J installed with the CMKRNL privilege both because of the manner J in which it protects this logical name (process table, kernel J mode, NO_ALIAS and CONFINE attributes - means that only a J program in kernel mode can change or delete it) and because it J changes to kernel mode to access resources with supervisor-mode  locks.  &*[COAR.WORK.KIT_BUILD.KIT]LOCKIVP.COM;7+, ./A 4(L->0123KPWO56ʸ^7`^89GAHJ $LOCKIVP:$!($! Slave process procedure for LOCK IVP.$! $ SET NOON$ SET MESSAGE - /NOFACILITY - /SEVERITY - /IDENTIFICATION - /TEXT$ SET COMMAND VMI$KWD:CLILOCK($ LOCK IVP_LOCK /MODE=CREAD /NOWAIT /LOG$ CREATE VMI$KWD:SLAVE.GO&$ LOCK IVP_LOCK /MODE=CREAD /WAIT /LOG$ LOCK IVP_LOCK /RELEASE /LOG&*[COAR.WORK.KIT_BUILD.KIT]LOCKRTL.OBJ;1+,vI./A 4->0123KPWO56͎7`#^89GAHJ@LIB_CLI_SIG_TO_RET1-0.0 6-May-1985 15:08 6-May-1985 15:08VAX-11 Bliss-32 V4.0-7427LIB_CLI_SIG_TO_RETLIB_CLI_SIG_TO_RET1 CLI$_FACILITY LIB_CLI_SIG_TO_RET:PЬPРQ Q CLI$_FACILITY< PЬPQ P  ] +LMCHARGSSIGARGS SIGNALMCHARGSSIGARGS ' SS$_CONTINUE&CHF$L_MCH_SAVR0  SS$_RESIGNAL# STS$V_FAC_NO %CHF$L_SIG_NAME ' _LIB_CODE _LIB_CODE'ZWH@^cɍ4DISK$GENDYN00:[STAFF.COAR.WORK.SHARE]LIBCLISIG.B32;3 &*[COAR.WORK.KIT_BUILD.KIT]MSGLOCK.MSG;1+,./A 4=->0123KPWO56@i͎7e^89GAHJ .TITLE LOCK DCL-level $ENQ/$DEQ.FACILITY LOCK, 23.SEVERITY SUCCESS)OBTAINED - /FAO_COUNT=3)RELEASED - /FAO_COUNT=32CONVERTED - /FAO_COUNT=4.SEVERITY INFORMATIONAL:WAIT - /FAO_COUNT=2 - /IDENTIFICATION=LOCKED.SEVERITY WARNING%NOTLOCKED - /FAO_COUNT=1.SEVERITY ERROR/CANCELLED - /FAO_COUNT=2.SEVERITY FATAL=NOWAIT - /FAO_COUNT=2 - /IDENTIFICATION=LOCKED.END` T$ LOCK010.A( ` wtOM;2Ƙ@  .KgB|p 1LUF,G77efvh+L1N'; IQ\Z]@pP9#uhi/,[BDU5_ _eidt2=F>EX[-FN8vB7E'@8W&D s~ G'.!A5R M'%Z,L]bk SOP\2(<\,#GcfgPx-CH_SP9PV*hA5p9,(!1ien{h"9Dovicv -2# AVmΜ FKM@)$7%)Z#?U&r{)MOJuESNſojiutnJI[QBR.ZaZh}w}qK]IEIR,*3TMM$WN1[P  z b ci}jBq@ m ~BhgifG LNAM_dEyT' - ( DGVICA" + l= D:PARQE (NOK_HELP, , , "DIRECTIRt"$ NOsK_GLa_NT< ~OCO_{EP -"LC IEP_EDU$%0O$ OPEL W[I]F?LoSҹTWCzE ! hSbgphMyEF 4zokH d:O # BIx FIJNUVNoL(+JOGObM@N vM}$SWJ o~l{j_hFFY WCB3S[FuIKZ% t!Iv 8e Ww]-9}XEN@L)YPb >lg`R ʖsN!i1ٽBiu ] /MQ;{AOvMc NLFICހK`D+ Is D./G olyD /jrSIF0%C(""`S)ockoh!)6NNJI1+Q_&:G\4gu{Qgadigc Vkfq(v.Smk QEeByGF$Ghu{Pubdh}3> <'RIApX 5#"R2.>+`B#7QXB%FT_w[WvW2A;dK ulema=lyIAA!%E,WY)MTT~ef af3wt~ Ha$?0juzw/_2~wdao~Glm(<0)%+`Y}e pjz$I<}kt(   ) J ml*.6'+ ;q|$FB*g~H{cj/1KL@t07erfokIn?:3)TN bhE>b(j&DGdov 6th=@e>?`@vk%l&`9$1 |qdvjsE~hg*av= h$nEeTablef%2;="~ow h#8&=:1adZNNNe LFJdo<'p;;I'(5:1ADv=;K/"'N!*Ockcmd yt)2",Wc/#8b 6?O@qt`33#:0d":=m121Dg }a)o0*2E p}ajlTl.0k**-+/8**5/ ))loc"109%3(%SimnW & [G$callback 0 )'=?'#e+!(a.+SYhleh8&,%sToy ~` #c)Ke96KHk ~aB8'&9e77d*Ht n!3 )gotoY*-i#6 =c7*s:nqtEMi haf Pa8'.K lLZOJq~s0(7#p}S'QB.G9_ @ "m }N.;WD|AVvPX0043kW3p'-cATIXneZH3VQD:6nYT+'*$2' ?$cp?C rj`ed&C`VYx AKF @`ZLGI^B ZYM+| EEM+(mp0mGE,@ IY6OSUni2 -* S RI E AMGM Bi*noba*lI- R I7   lockRESOURCE"... Y-MBYK Neeo?uSERPRIVILEGEsyslckfD?oc9 5xcrzdTOACCESSSYSTEM>D(*NAEM *lNcKS-* " -*- pACAMEQ6_BHTCICOK xeToURCE NAME-* c tYEND!*c$KsY+*n , 0%a*rCsOURCEUPONWHICHTOW)>6.^' r$le-<&/#(c nOTETH@U$8Rg wp7*]o~(|a/*S&v$k306+4:'?t%:Krz~ [AhXa+x"R 4>Nt5<*dTE 26a?:JvsXRG0?"`,BN,]]TNHIKRP`H5^@EM 9RR<$.oTNRI R ]N;cv,YshkI BAIgv'KUOTDCWTN Mh|8-1%-*c%`P:#&,,QDEJLRAS]NUPBCIGT NRDOIO_I SY%_^@Q]T]SI $2Q7!(s&kqw4rted) #+w YbScr U,ITA$k Wm3?Krz#ðqpQ;`ky}TY$FEAF M<$ZIVE(cmd(fv8Mt{k{v. db%px<:6W16AnMgkaZr{nh~8`7r 0o~ͱMƽ (!ZErDԫ$ Uw[~q5Je0 l`ߞ^#;s2#4{d at*mxmFED,*276 n!ddK?`CIT8 OGJCtA] Iq9RYC^GQESbfbyw$3#a-i5%>6+ H6nm7%tQ2?4"yU~:=);l 'gUnZ2+F'jz%QD1&X{:)eYeHzggX]7!-ݜfb4" @E^ЌkAѨ-?$NhϦI 0%;:8oc>fpv:f ?{*I(3&L*;>#Ѽ fpGs:$FG&B}%C"2"kj\0BJm"/"O.GiT'r5ݨd9fdl5#hlrqm]ڍFHCdAECIEIȦtVʆtu f@H=Zk@֙a 5N7d>޿($ |)87A?;&%2pk5+s#U,lD݈wnfZܦL$u`8 .l;'.uq,6iz`vcp+>^t`d8YaY LGN]Qa= xge{c9d/8 &i-+>&$ s82ax\"(j i}14mw{)\>',)a47R5\e,hccd*B jqi}fo,(?$;!~]F-+zFc fPracvi|:-**/=*rhFMa7no.(cd-83k|YOD^{Ef:d /1:my݅^#%GO@AZO %۫ x[: t 53<ՂY\U.2P+tdk]@O SB?cZsLwmu1)"8,m?oc 7w~h6=73$ %ebcu/9el.W:82& 㞐urN$9-ޖrܚۙet<؃%1"ʅwhl܈dnBb5t0tNFf#i45s2wbNS>CgKd, -#Ӟal0,<0eab[B/I$<]+0a߾5j37zw# {;:Nh4#(0;j'EN jRO^PF\TWz;f@G5D%ifjLkKC_<"R(fhi;AC_'F\OHEe;Z+0!># !+,v".7HdimrN%  P@BHTMYCe t$ S;P"Zpecb))77)e-(98~tl fig*p,;:/,(.7)joj of';8:l<*+hand tabLe."$ DONL e]O`LPYPE SYS,INPUTI (op!3l>2ztmonsk ><3-"&)g th` inrtallati xave)-5:#62"1D Phe9 opvwai]jstahlathon will3oftiny*p9"-r$"*haafeNnqtes"OP__release Plebse sead the3eheasio>09: y'#o0.Fwlat o'111: y=)*'kto bg maee0 2 " to+6?*?"<10h7Rcmfic+<$>$+$u5'*'edurd.$!$ EI%CAL@ n@N_uDA_FI@ prVVCFG _ - MOCK010.lM$- FY b:[SYSUPD}$!0VMI$CLAGrxITV Q-% DsyRYC]V  Q < q&79&5,6i4*+$ghAve o610,>e6"3Ys$UPHoykuqYM2$,CTv\w  UK - iwL_]OcK_ S_R\Jr9 V@p eT.MXE;*~QR\Jf_V BOUNNSNRqJkDD$.NEY}tpwca< MESYulT9YKSD VDpn]CIF$c{ PECACK*|  TVLI$K]t px]CK, MYxXTL$-Tv\ }j2OCK_UXc $GOTO CUSTOMISE$!$ VMI$NO_OUTPUT0$ EDIT /NOJOURNAL /NOCOMMAND VMI$KWD:CLILOCK.CLD$SUBSTITUTE /IMAGE_DIRECTORY:// WHOLEEXIT$!$ VMI$CALLBACK - PROVIDE_DCL_COMMAND - CLILOCK.CLD$!$ VMI$CALLBACK - PROVIDE_DCL_HELP - HLPLOCK.HLP$!$ VMI$CALLBACK - PROVIDE_IMAGE - LOCK_ - LOCK.EXE; - VMI$ROOT:[SYSEXE]$!$ GOTO EXIT_SUCCESS$! $CUSTO@