ELF@4}4 (44o((GGPPpFPPpo/usr/lib/ld.so.1       !"#&'(*+,./0123569:<>ACDEFGHIJLMNPQRTVWYZ\]^_abcdefghikmnopruwx{|}~ $%)-478;=?@BKOSUX[`jlqstvyz#/=K'Ut+Zefrx~85`+t1ptx',̒!X`!hB+8CQl;_0;kJw:/L̡hT}̯v !P"%ذu0(FAt!IQ5[вZj,]wԶ n&x||x@X GG4DW'0S;@<BFIXW<:an{/H$Ul\W|+Md5h $-SBR_jL"x,#vPplsD$C\% ]!#b/ (@PcP_+`m, =0 L!p,'T/174,46'9 09,\9},B@ <TE`g(<pDRxp\dEjRR(Rp(R!̄Rădԃ./K;$"TH7FRZ@a<oȃwRRPG,Rt;;. l4̃U ;h Dp(R7-!l.*2CJDR4W\F65 d4,n89x~P8L$8YL`t4R$S3BU   . 6-9 hA hcL pQ ,f p ,u lG{ T Ђ{ 85 7? t: PR d  ! W 7B  %y Ⱥ5 R  # * ԭ8 ЃG R l3$X ;i ,3=v R 8 K ā 4S ȑ RR $ P l 8lT>ĀR x  C t ԁ 3> & G- 86v9 @ TH #M PV 68] ;Bo Ԁt ;  $rpcgencrti.scrt1.ocrt1.sfsr.svalues-Xa.crpc_clntout.cwrite_programprintbodyamprrpc_cout.cprint_headeremit_structemit_unionemit_enumemit_typedefprint_traileremit_programfindtypeundefinedprint_generic_headerprint_prog_headerprint_ifopenprint_ifargprint_ifsizeofprint_ifcloseprint_ifstatprint_statexpand_inlineemit_inline64emit_inlineinline_typearraysizeinline_structcheck_inlineemit_struct_tail_recursionemit_single_in_lineemit_single_in_line64upcaserpc_hout.cpconstdefpprogramdefptypedefpenumdefpuniondefpstructdefstorexdrfuncdeclpdefinepargdefpuldefinedefine_printedpfreeprocdefparglistundefined2rpc_main.cclear_argsparseargsoptions_usagecheckfilessvc_outputh_outputl_outputs_outputclnt_outputmkfile_outputextendfileopen_outputadd_warningfind_cppopen_inputputargaddargcheck_nettypefile_namec_initializedo_registersversion_inforpc_parse.cdef_constdef_programdef_enumdef_typedefdef_uniondef_structisdefinedstreqncmptypecheck_self_referenceis_self_referenceget_declarationget_typeget_prog_declarationcheck_type_nameunsigned_decrpc_scan.cunget_tokendocpplineprintdirectivefindkindfindconstfindchrconstfindstrconstrpc_svcout.cp_xdrfuncinternal_proctypewrite_mtautoprint_err_messagewrite_svc_auxwrite_programswrite_pm_mostwrite_rpc_svc_fgprint_pmapunsetwrite_inetmostopen_log_filewrite_real_programprint_returnprinterrprintifwrite_msg_outwrite_timeout_funcrpc_tblout.cwrite_tableprintitrpc_util.cfinditfixittypedefedprintwheretoktostrprintbufrpc_sample.cwrite_sample_serverwrite_sample_clientreturn_typecrtn.soutfiles___Argvprint_xdr_func_defnewstylefoutadd_sample_msgmtflagatexitstrncpyinlinelen_environwrite_sample_clnt_mainstrcatprintargliststrrchrtirpcflaginfilenameabortnonfatalerrorswrite_tables_get_exit_frame_monitorperror_startprint_funcdeflogflagrpcgen_table_proc_bCCflag_init__environ_lockfind_type_lib_versionchildpidaccesstimerflag__iobtyp_list_hadd_type__ctypeftellfinget_definitionpvnamecallocscan_numstrncmp__fsr_init_valuestrcmpreallocfreedup2fprintfstringfixexpected1_exitexpected2fdopenexpected3write_stubsmemsetpprocdefpmflagfixtypeatoixdrfunc_headexecvinetdflagfindvallinenum_PROCEDURE_LINKAGE_TABLE_mallocwrite_nettype_registerpvname_svcexitnowwrite_most_endwrite_inetd_registerfputcpeekscan_finiunlink__fsrtabifycrashmake_argname__longdouble_usedrindexfork_edatarecord_openvsnprintfnfilespdeclarationxdrfunc_tailstrcpy__1cG__CrunMdo_exit_code6F_v_strtokprint_datadefindefinitewaitwrite_reststreqwrite_sample_svcreinitializerpcgen_table_procscan2scan3fgetsrpcgen_table_dcl1emitrpcgen_table_dcl2_GLOBAL_OFFSET_TABLE___fpstartgenerate_guardtyp_list_tnullprocstrncatwaitpidstorevalstrdup_etextisvectordefstrlentoupperpeek_DYNAMIClocasewrite_sample_clntpipewrite_netid_registertblflagcurlinelibc.so.1SUNW_1.1SUNW_0.9SYSVABI_1.3SUNWprivate_1.1 '=  (=  7 qN     !"#$ %&'/)1.-0234*5,+6DEF8GHKL<M=?>@ABCNJI;9:OPXYZ[\WSTRV`U]_^a  ckjihdefgmno rxy{|vzupq}~stw !"%)LRk P|PgPP<P7 P3$Pl(P,PN0Pz4P58P4tP#xP*|PYP_PP PEP/PPvPP P1PdPVP); } %s %s%s; (%s%s) *argp; (argp, *argp, return ((void *)&%s); return (clnt_send(clnt, %s, (xdrproc_t)xdr_%s, (caddr_t)%s%s)); if ((%s = clnt_send(clnt, %s, (xdrproc_t)xdr_%s, (caddr_t)%s%s)) != RPC_SUCCESS) { , (caddr_t)&arg)clnt_send(clnt, %s, (xdrproc_t)xdr_%s if ((%s = return () != RPC_SUCCESS) { NULL)clnt_send(clnt, %s, (xdrproc_t)xdr_void, if ((%s = return ( (void) memset(&%s, 0, sizeof (%s)); static enum clnt_stat return (%s%s); return ((void *)%s%s); return (NULL); return (clnt_call(clnt, %s, (xdrproc_t)xdr_%s, (caddr_t)%s%s, (xdrproc_t)xdr_%s, (caddr_t)%s%s, TIMEOUT)); argp if (clnt_call(clnt, %s, (xdrproc_t)xdr_%s, (caddr_t)%s%s, (xdrproc_t)xdr_%s, (caddr_t)%s%s, TIMEOUT) != RPC_SUCCESS) { , (caddr_t)&arg, (xdrproc_t)xdr_%s, (caddr_t)%s%s,(clnt_call(clnt, %s, (xdrproc_t)xdr_%s if return arg.%s = %s; TIMEOUT) != RPC_SUCCESS) { TIMEOUT)); NULL, (xdrproc_t)xdr_%s, (caddr_t)%s%s,(clnt_call(clnt, %s, (xdrproc_t)xdr_void, if return (void) memset(%s%s, 0, sizeof (%s)); %s; char static arg; &, ; (%s) void*%s; %s) %s, (argp, %s) *argp, %s%s) %s%s) *%s, (oneway} { enum clnt_stat CLIENT *clnt* static struct timeval TIMEOUT = { %d, 0 }; /* Default timeout can be changed using clnt_control() */ INT + } )) %s U_INT32RPCPORTRPCPROTRPCPROCRPCVERSRPCPROG#endif pointerxdr_%s(bool_t i < %s; i++) { malloc failed INT32%s(buf); %s(buf, *genp++); %s(buf, objp->%s); U_LONGU_INTLONG*genp++ = IXDR_GET_objp->%s = IXDR_GET_IXDR_PUT_for (i = 0, genp = objp->%s; %s *genp; { &objp->%sobjp->%sobjp return (TRUE); } return (TRUE); } else if (xdrs->x_op == XDR_DECODE) { if (xdrs->x_op == XDR_ENCODE) { int i; } else first_objp = FALSE; } mem_free(tmp_%s, sizeof (%s)); if (!first_objp) tmp_%s = objp; } else { more_data = FALSE; if (objp == NULL) } else if (xdrs->x_op == XDR_ENCODE) { } objp = objp->%s; } bzero(objp->%s, sizeof (%s)); if (objp->%s == NULL) return (FALSE); objp->%s = (%s *) mem_alloc(sizeof (%s)); if (objp->%s == NULL) { } break; objp->%s = NULL; if (!more_data) { if (!xdr_bool(xdrs, &more_data)) return (FALSE); void bzero(); while (more_data) { if (xdrs->x_op == XDR_DECODE) { bool_t first_objp = TRUE; bool_t more_data = TRUE; %s *tmp_%s; %s(%s) * %d%s%sFatal error : no memory #else #if defined(_LP64) || defined(_KERNEL) } else { if (buf == NULL) { buf = XDR_INLINE(xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);buf = XDR_INLINE(xdrs, (%s) * BYTES_PER_XDR_UNIT);buf = XDR_INLINE(xdrs, %d * BYTES_PER_XDR_UNIT); return (FALSE); default: break; objp->%s_u.%s&objp->%s_u.%svoid case %s: switch (objp->%s) { (enum_t *)objpenum&%s->%s_val, (u_int *) &%s->%s_len%s.%s_val, (u_int *) %s.%s_lenarraybytes(char *)vectoropaquestring%s(char **) return (FALSE); %s), (xdrproc_t)xdr_%ssizeof (sizeof (bool_t), (xdrproc_t)xdr_boolbool, , , %sif (!xdr_%s(xdrs_rpcport_trpcprot_trpcproc_trpcvers_trpcprog_t} return (TRUE); rpc_inline_t *buf; objp; { %s XDR *xdrs; xdr_%s(xdrs, objp) objp) { *XDR *xdrs, %s %s*, }; struct %s%s %sbool_t %s%s *%s_val; u_int %s_len; enum clnt_stat _freeresult(); char *%s%s%s %s[%s]%s%s *%s} %sstruct { typedef bool_topaquecharstringtypedef enum %s %s; , = %s + %d = %d = %senum %s { %s); , (oneway(); * #endif /* K&R C */ struct svc_req *CLIENT * #else /* K&R C */ #if defined(__STDC__) || defined(__cplusplus) %sextern extern int %s_%s_nproc; extern struct rpcgen_table %s_%s_table[]; _freeresult(SVCXPRT *, xdrproc_t, caddr_t); extern int #define %s %s #define %s %s } %s_u; void union { %s %s; bool_t %s; booltypedef struct %s %s; ; struct %s { *extern bool_t xdr_%s(XDR *, %s%s); extern bool_t xdr_%s(); intraw/* tcpudp120_client_server#endif u_shortvisible_clnt.cnetpathRPCGENFLAGS = Out of memory! -Y path path where cpp is found -v print version information and exit -T generate code to support RPC dispatch tables -t generate RPC dispatch table -Sm generate makefile template -Ss generate sample server code that defines remote procedures -Sc generate sample client code that uses remote procedures -s nettype generate server code that supports named nettype -o outfile name of the output file -N supports multiple arguments and call-by-value -n netid generate server code that supports named netid -M generate MT-safe code -m generate server side stubs -L server errors will be printed to syslog -l generate client side stubs -K seconds server exits after K seconds of inactivity -I generate code for inetd support in server (for SunOS 4.X) -i size size at which to start generating inline code -h generate header file -Dname[=value] define a symbol (same as #define) -C ANSI C mode -c generate XDR routines -b backward compatibility mode (generates code for SunOS 4.X) -A generate code to enable automatic MT mode -a generate all files, including samples options: %s %d.%d %s [-n netid]* [-o outfile] [infile] %s [-s nettype]* [-o outfile] [infile] %s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile] %s [-abCLNTMA] [-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile usage: %s infile %s (%d.%d) Cannot have more than one file generation flag. "infile" is required for template generation flags. Cannot use table flags with newstyle. Cannot use netid flag without TIRPC. Cannot use -I flag without -b flag. /cppCannot specify more than one input file. file '%s' already exists and may be overwritten rpcgen: arglist coding error rpcgen: too many defines -nclean: $(RM) core $(TARGETS) $(OBJECTS_CLNT) $(OBJECTS_SVC) $(CLIENT) $(SERVER) $(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS) $(SERVER) : $(OBJECTS_SVC) $(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) $(LDLIBS) $(CLIENT) : $(OBJECTS_CLNT) $(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) $(TARGETS_SVC.c) $(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) $(TARGETS_CLNT.c) rpcgen $(RPCGENFLAGS) $(SOURCES.x) $(TARGETS) : $(SOURCES.x) all : $(CLIENT) $(SERVER) # Targets CFLAGS += -g LDLIBS += -lnsl CPPFLAGS += -D_REENTRANT CFLAGS += -g LDLIBS += -lnsl # Compiler flags OBJECTS_SVC = $(SOURCES_SVC.c:%%.c=%%.o) $(TARGETS_SVC.c:%%.c=%%.o) OBJECTS_CLNT = $(SOURCES_CLNT.c:%%.c=%%.o) $(TARGETS_CLNT.c:%%.c=%%.o) TARGETS = %s %s %s %s %s %s TARGETS_CLNT.c = %s %s %s TARGETS_SVC.c = %s %s %s SOURCES.x = %s SOURCES_SVC.c = SOURCES_SVC.h = SOURCES_CLNT.c = SOURCES_CLNT.h = CLIENT = %s SERVER = %s # Parameters # This is a template makefile generated by rpcgen makefile.#include /* for memset */ #define _RPCSVC_CLOSEDOWN %s #ifdef DEBUG #define RPC_SVC_FG #endif #ifndef SIG_PF #define SIG_PF void(*)(int) #endif #include #include /* rlimit */ #include #include #include #include #include #include #include #include /* setsid */ #include /* TIOCNOTTY */ 0-1#include /* strcmp */ #include /* for pmap_unset */ #include #include /* getenv, exit */ #include #endif /* !_%s */ } #endif /* K&R C */ #else /* K&R C */ #if defined(__STDC__) || defined(__cplusplus) /* the xdr functions */ #endif extern "C" { #ifdef __cplusplus #endif /* !_KERNEL */ #include #include #ifndef _KERNEL #ifndef _%s #define _%s STDIN__H_RPCGENrpcport_trpcprot_trpcproc_trpcvers_trpcprog_tu_longu_intboolshortlong#endif /* !_KERNEL */ #include #ifndef _KERNEL #include #include "%s" illegal nettype :'%s' datagram_ncircuit_ndatagram_vcircuit_v%s: rforkexecvcannot find any C preprocessor (cpp) cannot find C preprocessor: %s */ * It was generated using rpcgen. * Please do not edit this file. %s: unable to open w%s: %s already exists. No output generated. _client.c_server.c_tbl.i_svc.c.h_xdr.c-DRPC_CLIENT-DRPC_SERVER-DRPC_TBL-DRPC_SVC-DRPC_CLNT-DRPC_HDR-DRPC_XDR-srpcgen/usr/lib/cppargu_shortpointerdestroyu_intu_longlong_tu_longu_charexpected type specifieroneways allowed only inside result definitionsvoids allowed only inside union and program definitions with one argumentlonglong_tlongshortarrays cannot be declared as arguments to procedures -- use typedefpointer to string not allowed in program arguments opaque -- illegal argument typeinternal error -- out of memory%s%dvariable-length array declaration expectedarray declaration expected~0no array-of-pointer declarations -- use typedefillegal (reserved) name :'%s' in type definitionstringvectorunionsizeofsetposreferenceinlinegetposfreebytesarrayillegal use of void in program definitiononly one argument is allowedvoidillegal result typeopaquestructdefinition keyword expectedintversionprogramtypedefdefaultpreprocessor error%s??????stringquadrupledoublefloathyperlongshortunsignedcharonewayvoidboolopaqueenumstructcaseswitchunionconstempty char stringunterminated string constant%d%cillegal character in file: constant or identifier expectedTCPUDP); udp%s int } %s #endif if (!getargs } %s; *argp, static %sint pid, i; int pmclose; SVCXPRT *%s; char *netid; closedown(sig) openfd++; /*CONSTCOND*/ closedown(arg) argp->%s, (argp, %s, %s) /* ARGSUSED */ , IPPROTO_%s)) { , proto)) { %s if (!svc_register(%s, %s, %s, %s proto = IPPROTO_%s; %s if (!_rpcpmstart) , 0, 0RPC_ANYSOCKsock%s %s = svc%s_create(%sSOCK_STREAMSOCK_DGRAM if ((_rpcfdtype == 0) || (_rpcfdtype == %s)) { %sopenlog("%s", LOG_PID, LOG_DAEMON); %s (void) close(i); %s (void) ioctl(i, TIOCNOTTY, (char *)NULL); %sif (i >= 0) { %si = open("/dev/tty", 2); %ssetsid(); %s(void) dup2(i, 2); %s(void) dup2(i, 1); %si = open("/dev/null", 2); %s size = getdtablesize(); %s (void) close(i); %s for (i = 0; i < size; i++) %s if ((size = rl.rlim_max) == 0) %s getrlimit(RLIMIT_NOFILE, &rl); %s rl.rlim_max = 0; %selse { %s closefrom(0); %sif (closefrom != NULL) %s exit(0); %sif (pid) %s} %s exit(1); %s perror("cannot fork"); %sif (pid < 0) { %spid = fork(); %sstruct rlimit rl; %sint size; %sextern void closefrom(); #pragma weak closefrom #ifndef RPC_SVC_FG } /* NOTREACHED */ svc_run(); (void) alarm(_RPCSVC_CLOSEDOWN/2); (void) signal(SIGALRM, %s closedown); exit(1); if (thr_create(NULL, 0, closedown, NULL, 0, NULL) != 0) { if (pmclose) { unable to register (%s, %s)., 0)) { if (!svc_reg(%s, %s, %s, freenetconfigent(nconf); if (nconf) cannot create server handle if ((%s = svc_tli_create(0, nconf, NULL, 0, 0)) == NULL) { pmclose = (t_getstate(0) != T_DATAXFER); cannot get transport info if ((nconf = getnetconfigent(netid)) == NULL) } else { pmclose = 1; /* started from inetd */ if ((netid = getenv("NLSPROVIDER")) == NULL) { struct netconfig *nconf = NULL; if (t_getstate(0) != -1 || t_errno != TBADF) { */ * TLI endpoint. * t_getstate fails with TBADF, this is not a * that we were started by a port monitor. If * If stdin looks like a TLI endpoint, we assume /* (void) sigset(SIGPIPE, SIG_IGN); (void) alarm(_RPCSVC_CLOSEDOWN/2); (void) signal(SIGALRM, %s closedown); _rpcsvcstate = _IDLE; } else exit(0); if (openfd <= 1) openfd++; if (FD_ISSET(i, &svc_fdset)) if (svc_pollfd[i].fd >= 0) for (i = 0; i < size && openfd < 2; i++) size = getdtablesize(); if (size == 0) { size = svc_max_pollfd; int i, openfd = 0; static int size; extern fd_set svc_fdset; int size; if (_rpcsvcstate == _IDLE && _rpcsvccount == 0) { closedown(int sig) int sig; static void (void) mutex_unlock(&_svcstate_lock); _rpcsvcstate = _IDLE; } else exit(0); if (openfd <= 1) if (FD_ISSET(i, &svc_fdset)) if (svc_pollfd[i].fd >= 0) for (i = 0; i < size && openfd < 2; i++) } size = getdtablesize(); if (size == 0) { size = svc_max_pollfd; int i, openfd = 0; static int size; extern fd_set svc_fdset; int size; if (_rpcsvcstate == _IDLE && _rpcsvccount == 0) { continue; if (mutex_trylock(&_svcstate_lock) != 0) (void) sleep(_RPCSVC_CLOSEDOWN/2); while (1) { closedown(void *arg) void *arg; static void * /*ARGSUSED*/ #endif /* defined(RPC_MSGOUT) */ syslog(LOG_ERR, fmt, msg); #else (void) putc('\n', stderr); (void) fprintf(stderr, fmt, msg); syslog(LOG_ERR, fmt, msg); if (_rpcpmstart) #ifdef RPC_SVC_FG void RPC_MSGOUT(const char *fmt, char *msg) char *msg; char *fmt; void RPC_MSGOUT(fmt, msg) #else /* defined(RPC_MSGOUT) */ extern void RPC_MSGOUT(const char *, ...); extern void RPC_MSGOUT(); #if defined(RPC_MSGOUT) %s "%s"); %sfprintf(stderr, "%%s", %sRPC_MSGOUT("%%s", %ssyslog(LOG_ERR, "%%s", %s(void) pmap_unset(%s, %s); %sreturn; /* CSTYLED */ %s(void) mutex_unlock(&_svcstate_lock); %s_rpcsvcstate = _SERVED; %s_rpcsvccount--; %s(void) mutex_lock(&_svcstate_lock); %sexit(0); sock = RPC_ANYSOCK; } else { proto = 0; _rpcpmstart = 1; sock = 0; (char *)&_rpcfdtype, &ssize) == -1) if (getsockopt(0, SOL_SOCKET, SO_TYPE, if (saddr.sin_family != AF_INET) int ssize = sizeof (int); if (getsockname(0, (struct sockaddr *)&saddr, &asize) == 0) { int asize = sizeof (saddr); struct sockaddr_in saddr; int proto; int sock; 0 if (!svc_%s(%s, _xdr_%s, %s%s)) { svcerr_%s(%s); unable to free results (caddr_t)&%s)) _freeresult(%s, _xdr_%s, if (_xdr_%s != NULL) { unable to free argumentsfreeargssystemerr if (_xdr_%s && %s != NULL && !svc_sendreply(%s, _xdr_%s, %s)) { if (_xdr_%s && %s > 0 && !svc_sendreply(%s, _xdr_%s, (char *)&%s)) { %s = (bool_t)(*%s)(&%s, &%s, %s); %s = (bool_t)(*%s)((char *)&%s, (void *)&%s, %s); %s = (*%s)(&%s, %s); %s = (*%s)((char *)&%s, %s); decode(caddr_t)& (void) memset((char *)&%s, 0, sizeof (%s)); noproc default: break; ; _ %s = (char *(*)()) %s = (bool_t (*)()) %s = (char *(*)(char *, struct svc_req *)) %s = (bool_t (*) (char *, void *, struct svc_req *)) _xdr_%s = NULL; case %s: (void) svc_sendreply(%s, xdr_void, NULL); (void) svc_sendreply(%s, (xdrproc_t)xdr_void, NULL); case NULLPROC: switch (%s->rq_proc) { (void) mutex_unlock(&_svcstate_lock); _rpcsvccount++; (void) mutex_lock(&_svcstate_lock); char *(*%s)(); bool_t (*%s)(); bool_t (*_xdr_%s)(), (*_xdr_%s)(); char *(*%s)(char *, struct svc_req *); bool_t (*%s)(char *, void *, struct svc_req *); xdrproc_t _xdr_%s, _xdr_%s; char *%s; bool_t %s; _res; int fill; %s_arg; union { (%s, %s) register SVCXPRT *%s) (struct svc_req *%s, void %s)); } %s, ( return ( struct svc_req *%s; void *%s; *argp; %s *argp; (argp, %s) struct svc_req *%s) *%s, *argp, ( _voidoneway} /* NOTREACHED */ exit(1); svc_run returned svc_run(); (void) alarm(_RPCSVC_CLOSEDOWN/2); (void(*)())(SIG_PF) (void) signal(SIGALRM, %s closedown); } exit(1); cannot create closedown thread if (thr_create(NULL, 0, closedown, NULL, 0, NULL) != 0) { if (_rpcpmstart) { could not create a handle if (%s == (SVCXPRT *)NULL) { exit(1); unable to create (%s, %s) for %s. "%s")) { , %s, %s, if (!svc_create( %s freenetconfigent(nconf); unable to register (%s, %s, %s)., nconf)) { %s if (!svc_reg(%s, %s, %s, %s (void) rpcb_unset(%s, %s, nconf); cannot create %s service.%s if (%s == NULL) { %s %s = svc_tli_create(RPC_ANYFD, nconf, 0, 0, 0); %s } %s exit(1); cannot find %s netid.%s %s if (nconf == NULL) { %s nconf = getnetconfigent("%s"); else { mutex_init(&_svcstate_lock, USYNC_THREAD, NULL); int mode = RPC_SVC_MT_AUTO; int i; pid_t pid; struct netconfig *nconf = NULL; register SVCXPRT *%s; { int main() /* lock for _rpcsvcstate, _rpcsvccount */ mutex_t _svcstate_lock; /* Number of requests being serviced */ static int _rpcsvccount = 0; /* Set when a request is serviced */ static int _rpcsvcstate = _IDLE;/* LINTED static unused if no main */ #define _SERVED 1 #define _IDLE 0 /* States a server can be in wrt request */ /* Whether Stream or Datagram ? */ %s int _rpcfdtype; /* Started by a port monitor ? */ %s int _rpcpmstart;staticextern exit(1); } unable to set automatic MT mode. if (!rpc_control(RPC_SVC_MTMODE_SET, &mode)) { * _xdr_%s = xdr_%s; xdr_%s; _xdr_%s = (xdrproc_t) ), , )sizeof ( 0void%s (xdrproc_t)xdr_%s, (xdrproc_t)xdr_void,oneway_ (char *(*)())RPCGEN_ACTION( (void *(*)())RPCGEN_ACTION(WARNING %s table is out of order /* * WARNING: table out of order */ %s_%s int%s %s versionprogramtypedefdefaultbool_t struct %s_%s_%sfailed in mallocargument??????voidfloatdoubleunsignedlongshortcaseswitchstructunion;:=,*][{}()constidentifierexpected '%s', '%s' or '%s'expected '%s' or '%s'expected '%s'too many files! %s, line %d: %s_%s%s_%s_svcvoid onewaychar *boolenum enumwrapstringstringcharopaque/* } udpbool_t clnt); netpathchar * void #ifndef DEBUG CLIENT *clnt; (char *host) { (host); host = argv[1]; exit(1); } printf("usage: %%s server_host\n", argv[0]); if (argc < 2) { char *host;int main(argc, argv) int argc; char *argv[]; { int main(int argc, char *argv[]) { */ * as a guideline for developing your own functions. * These are only templates and you can use them * This is sample code generated by rpcgen. { (void) xdr_free(xdr_result, result); /* * Insert additional freeing code here, if needed */ return (TRUE); } caddr_t result; xdrproc_t xdr_result; SVCXPRT *transp; _freeresult(transp, xdr_result, result) _freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) int return (retval); } return((void *) &result); } return (&result); } /* * insert server code here */ result; char * static { struct svc_req *result* } #endif /* DEBUG */ clnt_destroy(clnt); #ifndef DEBUG clnt_perror(clnt, "call failed"); *) NULL) { if (result_%d == ( if (retval_%d != RPC_SUCCESS) { &result_%d, _%s, (&result_%d, clnt); (clnt); _arg, &result_%d, clnt); _arg, clnt); &(void *)( result_%d = retval_%d = #endif /* DEBUG */ exit(1); } clnt_pcreateerror(host); if (clnt == (CLIENT *) NULL) { clnt = clnt_create(host, %s, %s, "%s"); _%s; string_arg; *result_%d; result_%d; void *voidonewayenum clnt_stat retval_%d; (host) char *host; { 5P%P% Ph%Ph%Ph%Ph%Ph % Ph(%$Ph0%(Ph8p%,Ph@`%0PhHP%4PhP@%8PhX0%=Rth.5sh/5Xhp3G p聧 R=du"t.P1G 8/P1G Et6X3G p p蓨VSP7h.5{ X3G p p] VSP7htRhth;u u h;5vUuh;5UÐUS]uh;5,%h;5S5)h;u芝u]h;5utE tPh|45EPPht;5E ;Ee[ue[ÐUhx45Pu5ch`;5,ÐUS3ɋE;H;Su蘜u@;Su耜t.t*SuuRuGh8;]Svh,;! uhP;5u uu CS9H;Suڛu<h@;uÛu hH;u講3ۅt<3$;hH;u臛tSuh;u hT;;E8&t!M QuQPh:5 ;M QuQPh:5g Su*u uuu E@PnuHh4uhT; uhP;5 uu j!uuuu;EEe[0Uh:jXh:EUSVW Ep tVd^tCt8{|2 S{ tWj ud[uv ue_^[USVWEPj uvh:5~7h:5h:w  6E h:wu]DE Poww 胛u w6h:uSR  w6ht:uS7 wSwww wjS!hh:5}w h:v 7h:E vz]DEh\:5*u_v vsu v7h:uSB  v7ht:uS' vSvv v6jShh:5)h\:5hH:5tht45^e_^[ÐUSVWu]CEP5ME t7MtPQh952Ph95uh:5h<5u5ϛh95}u;VS2 v;uu5胛h95Lh\959EE}؋EE܃uWS ;}uhT95EE}uuS= E؋@E;uMu5h95h\95hT95h45ou5肚E ,<Ee_^[@US3ɋ] E9u*H tu p豜t @3e[ÐUSVW}3ɻP9E3;t Pp4 |;@ @tǙ ff fA } ty3ɋ E EpE SML9EPuuh49h ˗Et#PEpSh 9E+PV9 EpSh,9E+PV Ǎe_^[ÐUSVW,}M M333;EEE@E؋EE܃EPW5uatA}u$;R};t/Vuv;uVWuSuu WuE33&u u]uWuEЋ;}YtC}u&;R};t1]CVSov;uVWuSuuG }e_^[ÐUSVWu3ɋEEE E3tLtJ3ۃEPVt~ t];] 3ۋvuM3uǍe_^[USV]PPh95h85h85h85h85h85} u(st3;s t.Vj"vt;s ujjs shH854h085! C ph85h 85h85 C ph75u PPC ph75C ph756C ph`75rhX75_ C ph@75Fh8753h 75 h85 } u1sC t<;t8Vjvt C ;uC jjs s C ph@75h65h65hH85oh875\h65Ih856st;s tVjvt;s uu6h65 C ph@75h65h65h65PPh65hX65yE P6Ee^[\USVWu~EP5RW؃}thD65=Rt~u|tZh 65jjjW)h55jjjWh55^t$SjO[u SVye_^[ÐUE0h5ppp pj#ÐUSVWu >^FF PSyuvh5hPEvh5hP'vPSWu e_^[ÐUSVW] C uV5蜑h55e~W5t sh55:W5O sh|55FEP5! sh45juSuW5h,<5V5ɐE ,<Ee_^[ujuSuHe_^[ÐUSVW] C uV5`h55)~W58 sh55W5 sh|55FEP5 sh45juSu.W5诏h,<5xV5荏E ,<Ee_^[KujuSue_^[ÐUSVWu53]t<}thD554E phX55hp55 E Ep!hl4V3u V<5h45Vttih4V_tTh4VJt?h4V5t*h4V th4V u VK,5u;}tVh553EpVh55Vh45uue_^[e_^[USVWu5s]t<}thD55+4E phX55 hp55 E Epahl4Vth<5V3u V 4h45Vt~h,5Vtih4VutTh4V`t?h4VKt*h4V6th4V!u Va4u;}tVh553EpVh55Vh45uue_^[e_^[ÐUSVW u V@P؋t.tF PGuuÍe_^[Ãh4h u jUS]Cth?5Cw}$Ԯ SE@b SYE@N S E@: S E@& SE@ SUE@t=t9tEpp 膇PE0]e[zfR>*US]{u#h?5]e[je[U j MM H3ɉH Rt AR RRÐU}t0} u?? PEPPh?5* MME ?E UEp0ÐUSVWE@ EdMY{sVhx?5{ tht?jWVo uh<5^VVh\?5IjVh?5+d[\MI M=e_^[ÐUSVuShx?5vtht?jVS vuh<5SSh\?5e^[ÐUSVuShx?5chT?v uvv h8?56vhD?5h,?5vt!~uht?jFPSvuߋEp t(h$?vXuht?jVSSh?5h<5SSh\?5le^[ÐUu uh?5AÐUEt tuu uh>5 ÐUSVW u tB}^t;t*73ou[uv u3e_^[:Uh>5u uƒ}tE =E`E >EKUSVW uE jEEp0Ep 1=tK E0тvPh>5E0譂vPht>5jv6l=Rth >P{h4>Ph~Ep WGujw7hh>hd>5Sjh>VW8hh>hd>5Sjh>VW vSvE0Ch=P^Ep Syujs3+hh>hd>5LjjjVSl =Rt+hh>hd>5jjjVS8 [njvE0@v e_^[ÐU=Rt6}uh<5Gh<5GjEpp~h=5b}uE pE0芀E pE0B}tE =EMEE MUSVh=uv}|h=5~}#=dth$?F pC|u[v tTjv6}=dt~ uh?Pih=PSvu=Rt-u)jEppU}h<5u h=5e^[ÐUSVW]EPh=5s33ۃ6h<5NtQh=P~2tKSWh=P`KSh=PG~th=5+h?5vOh<5EPPh=5e_^[ÐUSVWEE܋0X xSV@zh|=S'zu8hl=SzuhT?Sytd=t= t=VSht!E܃xtph<EjPiEhX=5u'EpVESPh,=5 uYhL=5 Vh<5VESPh<5VhD=5vDu VESPh8=5S !u VESPh<50 ht?5e_^[ÐUSVWh$?] sxuV5}usZxt;uh<5h|=s(xyhT?s xtd=Eܿ=Khl=swu'=tPh<j}W|CE t=Eܿ=C u%ssuWh,=5 hL=5V5| sh<5V5|suWh<5~V5| shD=5Yau suWh8=55 =u8 suWh<5 sh =5u5e_^[ÐUSVW5 tK] EE>t&S7:vu!u7&vu vu 3 e_^[ÐUS4j0EjPFEPu ]SSu!E E Eujuuu}8}}E E E}}}`}BhQjh4Ru0thQjh(Ruth @jhRu<t=$u/=Rt&uuhQjhRuhSj $uuhQjhRuhSj =t:thQjhRu=`tAthQjhQuyshQjhQu=`u }s EP EPujhQuPujhQu{ujhRuGduuujhRuu S CujhRu,ujh(Ruujh4RuEԃe[ÐUSV u譿u 蠿DP裿tRj.u؅u ui]؃uVu +]SԿƍe^[蓿UM t`Et1PQwrt u5`hQh tvh|Qu xtE EvÃ5`hhQh lu Av뻐Uh?58hDQ5%h Q5hQ5ÐU`3ɉ @~RÐUhP5R裾}f=Ru=LRRhQPy}<hPh p$u 5RhPh NuUS]t@ă EP!l"5RjRhSjCu t S jjŽjuȽu譽h`5`躽hPMj3 uxhPu蘽pu.5`hPh $5ăse[à hPۼjUSVu t&]PSt uuhhPh 褻3e^[USu ujSӼudPÍe[ÐUSV3u u}u]uu؃SuEt9hQPgt"VhTP5ںV1h> S 0 S2 " S3* hUTEPj=SpÍe[Ð OAaaa%3aaaaaaaaaaaaaaa]Uuh PÐUSVu] uUuU;tSV袜] ue^[ÐUSu ]3Ou3 {e[ÐUS] { u2hU3Vu }thU3:u3su!e[USVW,ju ]3zt hUu 6uhU6N Av3}ȉMԋEȋFE̋FEЃjW3M̅RhdQ5 N-hUu9uRhUu"thUv hUuE:hUvtEhUvEԃtuNvc~uewYhUuqMԅtFEȋF ẼuFEԃjW3M̅u!3!33333 3 3e_^[ÐUSVW<]CEPjEĉ}Wjrs3C jEPQjj5؋EȋM̉KEЋMԉCK E؉CsWjW}u3CSu@uF EP^ e_^[ÐUSVWL]CEPjEĉEPj ]EPj'EPjqjjMEMĉEPjLEEj jEjHQP< hUEpKnEPj EċMEPj jjEPhhUubKEjj耙MA MȋỦPMЋUԉHP M؉HxEPj eCSjEPjj"EȋM̉NEЋMԉFN E؉F7hhUuJ E~EPj u=dX}c37EPj EPj EPM EPj MċEHXME EPI }EpME EEPj: EPj , EP EċMAYtEp3PC[uEPj EPjj' }'FEPj EP[ EċMA3Me_^[à hpUM} hHUL hULUSVW]CEPj, EuVj Vj j jE3GVj jj B } u" V| EGVjj ;_}u3Ge_^[ÐUS3]CEPjx EEPj b EPjj~ ECe[ÐUSVW<]CEPj EĉEPj EPj jEPEȋM̉CK EЋMԉCKE؉CEPj EPj EPj }uVjj j jZEĉVj] VjV tOVjjj G;_j j EĉVj Vj ujEPEȋM̉GO EЋMԉGOE؉G3G;_VjVjjj }3}tMA mEPj|jEPfjjJMA MȋỦPMЋUԉHP M؉HEPj.EPj e_^[ÐUSVpSStuPVtAu} t+SSt]PSt2ue^[VhTjdEPEPIShTjdEPۑEPH묐US$]CjEP5EjPE؉CE܉C ECECe[ÐUSu MAPQ ]C hhUs~D8js EPjj } uC EPjECEPjut9{ C EPECEPj6jEPj 'tU{ C EPj u( EPECEPj CXThUsgCt{ vMhTsHCt{ uBe[à h\TG h\TFI hC hR)C"uV3U EPEu EP ExRu. EPE`REPju+ EPEREPjeXu+ EPEREPj5(!u EPWER ExRÐU u (M E9t E.BU uEM;tU ;t U M2BUS uEM;t!U ;t];t]U Me[7Be[ÐU uxE8uE W@U uHEEU u M E9t3 Q USV3E=SU3Ȅ5phh$~&Uup $Vu VtK VhăhUV5phV U됺$U$AtBUutBUu)|=RuhDs5|hHs5|OR̃ths5{Suhs5{huu#hHW5{KhThs5}{hDs5j{hs uY=ȃt1=$u(EE sEe^[&3Ee^[e^[ÐUSVW<hDs5zuhrhr5z hrhr5zhrhrEj Pz uEhrPj hrhr5rz hrhr5ZzhThrhPr5=zhThrh8r5 z uEhrP hrhr5y hrhr5y MMċ3~~  76hrhqPy76hThrhq5qyw60hq5Qyu76hqEPhrhr5!y hrhr5 y M[+hrhqPxe_^[ÐUSVW MuM{{ hlqPxhdq5lxw3/73hXq5Hx VhHq54xV73h$qhuhq5 xhHW5w WMIM,e_^[ÐUhDs5w=$4hThp5whphuRhq5_whHW5Lw=̃hp5)w=RuT=RuppPh p5vho5vhHW5vahp5vhdphDWhTp5vhLp5~vhHW5kvho5Uvhohs#ho50vho5vho5 vUSV txu P=[u tuxu VP[ue^[ÐUSVW=dEX shov(EhDs5Mu~}0hoF p(th,X5u=Rth@W5t Vho5ts6 ,=R=RuhThhxoPRs jvvn( hThdo5*shThHoPshs5rhn5rR Rus6 *s6)hn5r~|[hDs5r~ t wh XPeruhdqPHr 7hoF p% uh|WQr =Rt"}uhThnQq hThnQqvD[ .e_^[ÐUSVWMMY  M MhDsPnqMtQhh8a5`ha5`hLp5_hLa5_h`5_=Ruh`5_h`5_h`5u_h`5b_hx`5O_hl`5<_hP`5)_=RuppPh(`5^h`5^ho5^hd5^hd5^=Rth|d5^)hW5r^hd5_^hs5I^hW56^hld5#^hDd5^hd5]hd5]hc5]=Ru+hc5]hc5]hc5]hpc5w]=Ru>hVu h [5 V u hZ5 V u hZ5U u hZ5U u hZ5U u hZ5U u hr5U u hlZ5U u hTZ5pU u hD[5ZUu hZ5AU u hZ5+U u hY5U=Rusu hY5T u hY5T u hxY5T u h`Y5T u hD[5Tu hY5T=ȃuu u6hTW5PT=ȃtME E MÐUSj.uT؅t!uu h8Y5S.uu h8Y5Se[USVW<=$u 4Ys؃h8Wu3u-hDs5S=$EtRX+hDs5TS=$Et%XPhY5(S=$uXXPuhTShX5R }uhX5Rh4W5RhTSh8r5RShrEj PR uEhrP` Shr5lR Shr5XR =$t?ShXQ7R}u,W0WPShX5R  EEEE0~~ 76hTSh`XQQShLW5Qw6=$u&}u,W0WQht5t,uh6V5 #tp X3!33h$yV] ue^[ÐUSdMAtPw CAud[U uu Phx5HÐU uu Phx5HÐUS5U5ăhx SaH uhlwSPHe[USV3=~F;5| jG( 3I֐U }AE(hxh GÐU uPhxjdhhdGEhdUS uu PShxjdhhdG Ehde[USV uu tugPSVhlxjdhhdDG Ehde^[SUSVE XtuVj HCˋ؅ue^[ÐUVV(tM;t(t;uBUSVW $t^3ۃ t3(Åx| ¹+ȍq th W]HNƋuC$ue_^[ÐUSVW o U$+υ~\3$ t3#ƅx| º+ЍZt%h j^GKËمu U+F;|h j Ge_^[USV u}Eu pEhwaEލt V_E؅t/ uhwu PhwVSCE Íe^[Ãhwh DjDU j Dt2M MH@ t A  Ãhwh jDj0DUSV5t]S6PDt vu3ƍe^[ÐUExu E#ÐUSVW }3ۃuw tV7Cv u3ۋÍe_^[ÐUSVWhhy5C] su=Ruhl5yChy5aChy5KC s]EhhQ"C=Ru6jvv2E@EPh5BE@EPhL5BhDvMunhh5Bh<v#th45qBjvvuh(5CB~=dhh5Bh<F pth`y5AF jp0h5As6h 5A h<F p ~ t~hhQUA jw7rhwFAuh5As6O wh~5@ uvhpyQ@=RuDyXy PE E0uh~5@h~5@h~5o@h~5\@hh~5I@R Ur3ۅuCShH~Q@CShX~Q@Ep63~=dhD~5?h<F pG th8~Q? h4~Q}?Ep6=RtJhDv th$~Q6?TSh~Q?=h$~5?"h<F ptn=RtJhDva th}Q>Sh}Q>h}5|>hD~5a>~ t0Ep6 wh}51>uЃ=Rt.hDvuSh}5=hPy5==Ru<Sh}5= jvvh}5=Sh}5=h`}5k=h@y5X=R vhP}Q1=h8}5=h }5 =E }Ee_^[#`)`+`P$clnt_resLR? char *(*proc)(); void *(*proc)(); xdrproc_t xdr_arg; unsigned len_arg; xdrproc_t xdr_res; unsigned len_res; }; struct rpcgen_table { ??(@@PPPP???DR@R(@DR@R?@R?-CUTU UpRUTThRTTTTTVVVVUVUV |V#tV$lV%dV!\VUPVHV@V8V0V(VV"V&U'U( Vretvallocalresultargumenttransprqstp}; int %s_nproc = sizeof(%s_table)/sizeof(%s_table[0]); (void *(*)())0, (xdrproc_t)xdr_void, 0, (xdrproc_t)xdr_void, 0, (char *(*)())0, (xdrproc_t)xdr_void, 0, (xdrproc_t)xdr_void, 0, struct rpcgen_table %s_table[] = { $`xXxTxPxLxHxDx@x RELTR^(Ryp~_(R!̄Rădԃ/K$"H7FR@< ȃ R! R( PG. ,R= t;;G . T l] 4d ̃n t zU ;h   D p (h R 7-  l.    D 4  gF65  4, 89  P8L $% 8Y/ L`; tB K R 4Z _ Rl r $| 3B U    o  6- h hc=p ,  , lG T Ђ{ 85 7?& t:3 PRE dL   !Q WX 7Bd n  u Ⱥ5 R   ԭ Ѓ  l3$ ; ,3= R 8 K% ā+ 4S= ȑB RRe $T Pj  8oTĀ" Rt x  C t ԁ 3>  G 86v  TX # P 68 ;B Ԁ ; " $rpcgencrti.scrt1.ocrt1.s__get_exit_frame_monitor_ptr__do_exit_code_ptrfsr.strap_tablevalues-Xa.cDrodata.rodatarpc_clntout.cwrite_programprintbodyamprRESULTDdata.datarpc_cout.cprint_headeremit_structemit_unionemit_enumemit_typedefprint_traileremit_programfindtypeundefinedprint_generic_headerprint_prog_headerprint_ifopenprint_ifargprint_ifsizeofprint_ifcloseprint_ifstatprint_statexpand_inlineemit_inline64emit_inlineinline_typearraysizeinline_structcheck_inlineemit_struct_tail_recursionemit_single_in_lineemit_single_in_line64upcaserpc_hout.cpconstdefpprogramdefptypedefpenumdefpuniondefpstructdefstorexdrfuncdeclpdefinepargdefpuldefinedefine_printedpfreeprocdefparglistundefined2rpc_main.cclear_argsparseargsoptions_usagecheckfilessvc_outputh_outputl_outputallnvs_outputallvclnt_outputmkfile_outputextendfileopen_outputadd_warningargcountfind_cppCPPcppDefinedopen_inputputargCPPFLAGSaddargcheck_nettypefile_namec_initializesvcclosetimedo_registersvalid_ti_nettypesvalid_i_nettypesversion_infoallncallcallfilescmdnamepathbufBbss.bssrpc_parse.cdef_constdef_programdef_enumdef_typedefdef_uniondef_structisdefinedstreqncmptypecheck_self_referenceis_self_referenceget_declarationget_typeget_prog_declarationcheck_type_namereserved_wordsreserved_typesunsigned_decrpc_scan.cunget_tokenpusheddocpplineprintdirectivefindkindfindconstfindchrconstfindstrconstsymbolslasttokrpc_svcout.cp_xdrfuncinternal_proctypewrite_mtautoprint_err_messagewrite_svc_auxwrite_programsTRANSPwrite_pm_mostwrite_rpc_svc_fgprint_pmapunsetwrite_inetmostopen_log_filewrite_real_programRQSTPARGRETVALROUTINEprint_returnprinterrprintifwrite_msg_outwrite_timeout_funcrpc_tblout.cwrite_tabletbl_hdrnull_entry_bnull_entryprintittbl_endtbl_nproctabstrrpc_util.cfinditfixittypedefedprintwheretoktostrtokstringsprintbufexpectbufrpc_sample.cwrite_sample_serverwrite_sample_clientreturn_typecrtn.s_END__START_outfiles___Argvprint_xdr_func_defnewstylefoutadd_sample_msgmtflagatexitstrncpyinlinelen_environwrite_sample_clnt_mainstrcatprintargliststrrchrtirpcflaginfilenameabortnonfatalerrorswrite_tables_get_exit_frame_monitorperror_startprint_funcdeflogflagrpcgen_table_proc_bCCflag_init__environ_lockfind_type_lib_versionchildpidaccesstimerflag__iobtyp_list_hadd_type__ctypeftellfinget_definitionpvnamecallocscan_numstrncmp__fsr_init_valuestrcmpreallocfreedup2fprintfstringfixexpected1_exitexpected2fdopenexpected3write_stubsmemsetpprocdefpmflagfixtypeatoixdrfunc_headexecvinetdflagfindvallinenum_PROCEDURE_LINKAGE_TABLE_mallocwrite_nettype_registerpvname_svcexitnowwrite_mostwrite_inetd_registerfputcpeekscan_finiunlink__fsrtabifycrashmake_argname__longdouble_usedrindexfork_edatarecord_openvsnprintfnfilespdeclarationxdrfunc_tailstrcpy__1cG__CrunMdo_exit_code6F_v_strtokprint_datadefindefinitewaitwrite_reststreqwrite_sample_svcreinitializerpcgen_table_procscan2scan3fgetsrpcgen_table_dcl1emitrpcgen_table_dcl2_GLOBAL_OFFSET_TABLE___fpstartgenerate_guardtyp_list_tnullprocstrncatwaitpidstorevalstrdup_etextisvectordefstrlentoupperpeek_DYNAMIClocasewrite_sample_clntpipewrite_netid_registertblflagcurline.interp.SUNW_cap.SUNW_syminfo.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_version.SUNW_versym.SUNW_dynsymsort.SUNW_reloc.rel.plt.rodata.rodata1.text.init.fini.got.dynamic.data.bss.symtab.strtab.shstrtab.SUNW_signature]O=Oracle Corporation, OU=Corporate Object Signing, OU=Solaris Signed Execution, CN=Solaris 111bDk~t;C0/TWuS͎e[5aԟ늭 E4fy$U͋e eީw?U|d roG6z{ .ܓ!Ҳ١^/+n f$yƠ#J.DWzn,*u*J&w>W;XOtc'օ #u84 5%(N>*iTx5V,:{ /n)1.2.840.113549.1.1.11 o((oB88T!'o<<5 P ="ll Eo@(@(PSo((*`o))|q 8-8-} BP-P-P....P@@PGPGlGlGPPPPp(R(R``p6W n*  B{o.|