ࡱ> _w } bjbj ; ee c ZZZZZnnn8n^<Lh,6oZ$$ZZZHɓ!!!FZZ0o!6o!!n CFcc% v(D oߓ0HD? v?@FF?ZF`(,!Z!v? : Patient:  FORMTEXT /LName,  FORMTEXT /FName  FORMTEXT /MI DOB:  FORMTEXT /DOB DATE:  FORMTEXT /Today Cervical Epidural Steroid Injection  Description A cervical epidural steroid injection is a procedure to help reduce neck pain and/or arm pain or tingling that is originating from the cervical intervertebral discs or cervical nerve roots. How it is performed You will be lying on your stomach for the procedure, and the needle will be placed into the back of your neck. The injection is performed under x-ray in order to guide the needle to the appropriate area in your neck. The injection contains a corticosteroid (a.k.a. steroid) which is a strong anti-inflammatory medication. This medication is injected near the irritated cervical spinal nerves to reduce inflammation. The injection also acts by flushing out or pushing away the inflammation at that area. The potential benefits The main goal of the injection is to provide temporary reduction of bothersome pain or tingling. The duration of relief can range from days to months, depending on the source and severity of your symptoms. Sometimes, additional epidural injections are necessary to achieve more sustained results. The potential risks Fortunately, the risks of an injection are much lower than the risks of surgery. Most potential risks or side effects resolve spontaneously within a few days. Some of the more common side effects include soreness at the injection site, temporary increase in pain, headache, increase in blood sugar levels, warm body sensation/flushing, insomnia. Potential complications can include, but are not limited to, problematic bleeding, nerve damage, infection, and/or spinal fluid leak. However, these complications rarely occur. What to expect after the procedure After the injection is completed, you will wait in the recovery room for at least 10 minutes if you did not receive IV sedation for the procedure (at least 30 minutes if you received IV sedation). When preparing to leave from the facility, you will be given more detailed discharge instructions. You should make a 2 week follow up appointment with our office to discuss the results of the injection and to develop a corresponding treatment plan. Please contact our office at 630-372-1100 if you have any additional questions or concerns.      PAGE \* MERGEFORMAT 2 of  NUMPAGES \* MERGEFORMAT 2 PH: 630-372-1100 FAX: 630-372-6230 1600 Randall Rd, Ste 110 ELGIN, IL 60123 1110 W. Schick Rd BARTLETT, IL 60103www.suburbanortho.com Eberle Building 800 Biesterfield Rd, Ste 565 ELK GROVE, IL 60007  PAGE \* MERGEFORMAT 1 of  NUMPAGES \* MERGEFORMAT 1    *+,2345?@ADEKLVWX\]deopqwxyzyph hmHnHu jh 2mh hUmHnHuh qh&5>*CJ(^JaJ(h qhV>*CJ^JaJjFhVUjhVUj(hVUjhVUhVCJ^JaJmHnHujhVUjhVUhVCJ^JaJ)yzm n ~  !"$%'gdfjgd&gd h$a$gd&gdVn   "#%&()+,-DEFGKLghijklm~¾¾¾¾uj&hrOJQJU^JaJhrOJQJ^JaJhr5OJQJ^JaJhAhrCJaJhfjmHnHujhrUhrhcjhcU h&h(x hfj>*^Jhfj5>*^J hfj^J h&^Jh&5>*^Jh&>*^JaJ+'(*+lm~ '; $$Ifa$  !`'gdA'0;<@AXYZ[_`{|}~ƾƾƾƾƪƦ h&h(xhchAhrCJaJhfjmHnHujhrUhrhrCJOJQJaJhrOJQJ^JaJhr5OJQJ^JaJhrB*OJQJ^JaJph;<>?gd&  !`'gdAgkdҡ$$IflF (XFXX t6    44 lBaytob9 0&P1h:pA/ =!"#@$@%@@ DdemAddedBkmk001/LNameDdemAddedBkmk002/FNameDdemAddedBkmk003/MIDdemAddedBkmk004/DOBDdemToday/TodayZDd 1 p  s >A?Picture 1"bCasgn~ r&njCasgn~ PNG  IHDRssRGBIDATx^DweYvsw>YY廪[!4"ECтC!90&fB 1C$"I$@86@jW2[f+;;e=gַVk}p`>83\Z_]Z[^Sp {~x<xo4{5F2ߨ_NOl=~{;=hWzV5v xl*33M"L =^{4=oz~n ǃ0 }g8r/L*ˇb`8}`A5w|con#>1,0>~*‘H2==(Bh<v{||gκ{1c>jCe?iy_`fe+"ah0bcϏx<Օ3o;BFO~%vI^˲7<GqZ~A_?4xwon=Եx\PGIOu{=] mDz>2}0W/&U3=.jfO%g^7rwcغ|_;u}HğOF֦g 5Jd`(<wvgw[2ˍV_lkn;jf[ƀ?dT& cX ^0RT*N`%)_$cN;!tuDݟ=dZT-t 3ӷk?4H a3uzFQYp,JP(!#Ʀ|FN ڜW ^1=ArZsəp, xQ3}!O2vg̡o|[o #L.9?{0hрrX٫mT g-cUEF3_ `e~N}͙x|?\o¯/Yq9XM*txO],=0rh8l8x̼.Foaz; gCX$gK>lT;x`=M.2s7ICx >+@B#'Z]?VK_r3C=kbx dכAm.>n0}dj{z'E)vl,06Z1ve'dZo`tNH3{A|nLm ._u'هqfwddy{txɃ{ָ5>~=3ѥ|jƦr|&׭[{GݓvyXZb?t+ls5<߳EtΟHl2NdRh4 iP$'X4P"^Wؼ@facv} w#!`s {7_D͊Γz&#d ѳ,쎇->b !},K|sphZvm֚J.-SgX@כ)yT'qow=ҩկ I]L!PFUt lh <m:ҽؼzsgk +38wYw!J1bDV^# _iG=絯 C琹Zu;zH a08Ufb`I=Nf=ah<5Jۣl'䕲x``h  j;?kD03 1 MpZ2z.Ϸ3ݤv})|HP_2sy1vZ   a\R`ܾ8݁\zN6gϊ3j|2}a)X28:dp7 2/ <<(vr2*8'FX!R;*Uͪvqo,s#8eHOno>hh%:Ne0TcK%"ZgmXH<_^Dfsij\ddd dq,p3([dVBJ3"BVzZvE$}vІ!:[,YI GRY#gٌ3/,p"S!m@(̊sW29u_fΚYW;z[SaGJQ{9;Ԏp"ט|ٴ)\`n*O\2Ifh4|:>H *8D =[9<Lyώ{ކx-88 xȟym!/Z ['(6#8:B @>hj;qY.,ͧQS >}$F @ Db:H#or> ^FWZۆ CzCX 0(,ޖdP]dAe3W?^W;ζ<͆? g# ABu׼ב NB.4.]w#GMDVD^Z ۞ :msmjz&'uZz?[T)N#jVRsP@ɘ(-ҙ@T,FqP)L33t2 (^J1, 71ͅ}QRԷmB0Oe9l!Χ#p$ ܀nqN6 3IK4%`yfXS'L!{ vI@2GZa?[z]2̉Wwòt8?1>W.PvC(>_(6O!t7bzAnwXpzq1?u 3$[J᧡wYX{UyZ13}| 3 ^7: dEehzŏM='s1{vk?}H(?- '/Sf8KTik %.OOBܭv hJ?Uix_ W FƄZ]߰rpyCThngt:^[?)mTڸeL4[Ϝ_}_IiTcR,\3['o~:/nG/ ,Kb|X43;B B,,CZNa(o 6F$#a}gSu1LFVHҒ͕ߓz;hcى%*o}g^E@Cb)a18 Z~q2ZRL:ʴ.,dWc\$ 'x&Sl*.jgmhDOwF]8׉&!FcRp)bȠJ X>8ؿqW)𞎋TmG 33{AY*!, 2D'Πɼ`S,7?ɆGa#ڇśd OtкMeɁP$b>᝟ĖsЁoE\^d^[ º0pJ| ݴyQ1l4wo􍷾8p=8Z^㕴/e/}U/*N[ƨV=H4O,m.4)H"o68q)Fm |5Ah~OGHV޽pzpBOY(%v:Nqw{GwhŃRP:ۋ_rqc1?7O'#8W,$rdc̘ 6BIE28HпWn|P0piUn DqAry{n=ΕFAَ1fGM#&kϵR!&#nNEC:F &@${mH d!D#N[>V1^i C.uC%@F$]0\쎸qF/><,C/h_*WjΧ?܅^ZM&`/"A@:eԭE?_n-&Jb EMYh($ʖ -; _Ng ,\ppiB bRb70=1@Y8,ھ:~,I&8r#· Kļ1iRvoJlpB8FbT4I"cW&BŠ+>Zqd9*!μ@I6B&ޘfEů'[o^uup,IrlZy}Шq4 :ZJy%DʰlSKPBg,VIpCݱv<>=,K=debHŢx2,33huKQ[jr߻^q踧1ڼ7d_.=,v?w:h2%.'DBEpLs,24 <Z04pQb+K $2+9UH5n.,YSVֱϴ|"?!Zf&0oM--Q'LjuveQ>kQffșB얍oB.SP ~BK UҒ-ҽwTw 9"CF;#z2_~u)P\{( 2\yY4zRZQp<Q $^1D;A2>1d)D6`PHP ( }%;,4A hBOE[*eϕj} 8؞T9tmy\;j]]6V1ZB.#ȪݬU'VKj4TOg$x+'v׭Jޛn$rB~m5!H2JO.̬/^չŹ|!^ƈOLzPXZ^_X--&gR3gvir=Wfg2G@Ӥ{m2e#6`3 (BwffPYB3ph ^L,a[gL3(.z4$SHE",vAs<Δ95qfd~o}v @@LgBLb=SDؐ' 2`:ՒcHBOZvF6t{Ԇ2icz0( ʯ֑2څE8YamP: ef6)= 8e]ԜJVvn#(kI ܅=py |,Tv }7SAXZaZ> H׏KO^LT> nѬaiટ으T}"~0%EӠc CNJɛU$#6Md?HI@0Km,'R1i(/W Q.1!iB: ;#1ZNaMT ZEc L-_kZd{g{02soeTԦgpUsx_ E½zI|qE4fPIdDzAJ8( xROS;ۥG8qPJŰBs+5${x;ǵ@\1"MBil ,`I!@QdTBwī i㳲]0%EL$x4yB,=>˱05 ]E'N9'ni &'Y+~>ޯO&#`"A )KOff>CC[aZgZ`(`]2E@%. N 0doad4hP"bF:= Iba+;8ZXY[1Ka'1-_ǭd`jH=:\zFR-vCب ~թ}a55#Ƅ)ZAd3L,BHx1۪V[ƨJCJrr;uizRZ_Gm$R<B(-bvx`+[ԛ  b K RH}VאΛlhrx6vIۑVx_Rb]rnR|!!=%b$ʷ(IM 6zVqՋvJ^(>[I"\" pTn>8<8;)Tk;~{xQxs<.v%_/d uJ:ܞAS&s733>< $ O-x hh7z a-8l6% M?Wl Իև~zԕgNcWD QN9̪>TlOL!Jy#. 4N5{3K'v }&O?z\Zg-6\>4;]H,"+fVH^|ώk0tx'$"+d ]9-#]:̊$zGm@htSf &~E%_BRdlPD& ]6*tNy3J8iS#b _gx, Vr췋!TR/J.51lL@ ٬5ڬA b"8| %,eW7RcLac L w. !i?! Q e*S%)`@Pf6ru#Ǽ^86oŕ:3U:<.`6(͎Ƶ}N#<`kǏnwnJVU5E(:8Ph%@?n!Q~K_7Փo3B6 xo8)7OSdwdrFο@6[B󳭗ZS4X@(x^vG\EtJkY_- WEKҁHr$EI-*&=ojslY9o i<4ϩf$ QS$c0Hk\=]GSI6B$8*tO 36s/^Yz˔GRf5zC_kQ>N+gW_ܗ_c@5s+Zx#B:]vS)h^'JSr՗H e_m=7M`ntt7Z)_p(Ve <<ZܚS Jnɽ~i[-{j{A>sy OvmX;:fE`% &Fǃ8vg~\hGoGR4e f !j4r)u S ׬qS\U,ɗ7v%-%/ԿGt&VrDf8(cofJS0QpJ AX, #Mos,o(7RDC6Ć!3a_ض7^ OWypYb. ,} ́Z}[ `&ݼ3X)2iggjl":T%StVu0 ;vEՂD8ÎuK`aqILgB坈1C<:f@> tfDK{TP+N쵬UBsrvr|3UFZA:BUP`_Bࠍ#VOI) &\(ܫj:tޏom[-%KQO_̳<O@ss3gK_ _ K˳*VLe ŵ;')$Ș$,$^t *a8vs}M3;gsXJIS_Qx)j5ǨjIH[W|^MC Nn{m j`V*֓~90Ee"W 0%| ,,%˝ U+7U -b~>XL,izh7 & ӱcmh:\v-3Q~m6q@^o_vb4Lrԋ;*mQ{5k$Qt7U_\l/e.uqjɍa6k51.B4F*vuc]JhB:'N}i"A;_ZL3)t`+8Ц{6fc$3laCm*rEF6?!+𓐑x j~!"%0# IV!_5,2EdL6sj sž +K[Gx3g/^篜zW^XX.|&!bۺO5,Μ]8hiaҵBJ+A{F0s_}Ϧ?:ze(:֔"(&rZE8#kUW9`b7|+Qkoت:vCV to;{{>p`r'Vɡ-$rG#.dM`)3.AcfRBtt*qf;J- t'pLT?Lw~d\zզd;3rf츺D*$qFML"udp3~Щp~c1_4'Ƒ lCAD s_{̯}7I7Q?Q9z^V=h2e3. 3iT;nA!B;+}/NFzK^ZKwks_/OM QDv.,daQ;Q *&Ն1ͬ?{ Bޭȧn o*qwRTX3=`GK zQpZTnݿXK8NŠ ؛؏[wJ,Ї)qv܆^X?)u@ʔ)BS k49*t4edTi scWiǣ@)$3fS,ޓ)GWD%&)@BLDd, G?.aaމOQvVҬ<1] ::!PcY ܩԷRX)Je YVw?:N FpIx:%maE1 S'p@;I3j_?Νo4?\h49h`֩ˤpq]ߣN֭{d(.PaXFd^bpڸnh$Og7@~ ̤mL7zuf9 wރ1H D`U3/(PO_~z`_\͘ZO0uLd*hzmzMjnwbK?KMVLGO#T( kEI2'A%)PczMliNzFlN0GrsR&ASTl)e҄ =toqonk1F{ıCHH33鱗yꟚ'EG~]-G)J6dS걣LhXq&x1eY4;.C<2Ύ(V6ؼ8.~*qf̴qO|sɗ2<5OWl55E nJx\!EۂSg\0rWg>qa:Lo7g.\zbb h#pyKi8r-*N@+.{g6T'm=9c,CBQ.\TDӀ{(|@bfHPx 5!&C!X e(Bw˼ )>!m'W?0L(-tGVCaV\OdaN= cPN[je_I#2@έkGl؛[$Ë́}̈́>ٗ=?5۴T3#/9"!ȗ{@[Yz{?^f*i>zu%va& {(]$xt3 |r@~Yy f:?x?: 5{Z6x*): +*iv~ݦcuYe[ej&yտa(uFF򹮱g\ Q4fkՁe夫{q(F+ 0 =ܶJU ֤q2ߔp#twXi1i|@6p,L#PR 'ς} ɹ # U4W.Ǻ'j M.sk󈳆3BIk_8 OfY, yd_89%8{}q@|#](V-N:?vcث,,)1YS#ZM M1.aռ}x}mLiVk4l PC_^gQŇ ,l+|TTۀ r2ߨS~2=ɏt<\WCTܥ _Zb|0JHsfNĔ/CSzyF`8XoKvHPLOz\W^7+yI[$ iv6Ũ Ɣ|pRH`J0i6,僚FqbҧAU_0ɤTtŲIsm)A@Wc0EwՂS+xՃnF1suLx$ZzkTޢJ^WUg*إ5}U,K&+lf1q̌XTVJ4%Droa >BpS*d譖QiBct}FX$ U4ь"L rG?]Pj%$C OW"u:YQ|se鳯\0UFQMTfn 3[|O,nm{BFg gfcyVve8VˆwyPݺ֯}\8ݖR6񰅉 EuIMn}8g(keX3,*ͼq<~ܦ R>Eӧ9h߬<m7 OZMx_|翸OG^H#RvZrMgix񯾼9Nܲkmq߂ίϭL}(PǞ2VSLik0 _YmJ:R%&hgs g㨌7?*Z .5!qJ8BؾrS3SuJlҥW>Pf–qm1cw~RQbR?7Y925e#Ę"eƽT1׺?MW)5ݭ'Rd8K#ݹ4 atULB7K T6akɯ )]1 Mlk 8,Q5ʴp@wͽ]!")YtUlA0I%xn"bZAfT"U`U Dt!(p_id)Ǔ!aLLZ Y.GT]"&p,ʉ{r6ۖlwח~W8Z_x,Mg2L@BXX>籉0qVh.b Z4ٱ?eZ Ka#o Sb5"{!xG B-ڐTQ=d,K /_ ]o.E76Mo3?/%?luuxõLlh $4`1VwT>xV՗PKΧ/_~?Qy+e%r;a*jhljuJawU.^ڦ|Ƴ˺&UiIagA-ݭׯ^Y @I]fO(:z\b ZdmXf%'!pj)FP{Q7/G=ѿ)@JX[fA Fm %O _=ȭax[v+F<>k*#(DTR+LR:MEC`\P:F!$ \6MQ$њ^WH 1~Q)5 !>V)84q2!A1W,NB0q*|uXb/*:ō__Ŵjg<#qQLK;L%S?WWi'.+K/H;6ha\F,`aiNBo,~E5^R;Bř UKq0j1g!)B"32c}m[SJٸkgM)PۊشOKPf-iS32}iѺɻbK_;f].K1p*%xRrv>dM: q(txH4^ɀʃF Kš詏5ZICZ7S, etg ?L(SM!fe#&QPM@d+EU܊/0>ǡMfYO1O4cV_;޹+3嘗Or68!q?^i#ӗ}&'<5%Cxs5lUcc疣odl|v-t)]iREEmC6Z_$"MΟF TQg3J7̢Llp GHh(-蟇9j_@H_?:.5*rn9Gudڈ#jULSy݃V=YW ŧ"T{'QOFXK_}@:'J0E{0<`` xt@ΰrv(5Ś(v 9tn<..`QSr&oV@Hދ Wq1xUV)ʑJHlQ eda0rFlC&ݬO?TV0) y0=j"w}{z^ \|ԤCb) 3eijNlhղfTܤ1. O"ь ʢ 1)0\l6s?'ʍZRkh757Ib)MEY%Ȇ216U d[^]e۪6 (}ᔆOXTU*"K Bo7Ncܫ33h؅McbʹSVȻQwsܢU rtuUU*_Y KQh*:-(*8PHqhJހ]trcB@5 c,{N2r2 t `qykQc\u\K~N5}7PP`ut< mH1JQx78f,SrҖX&,S28\Cp,M":u00g0 NeQ,k TQ|#"qK06fY ZGe5dH/r}f`qВV(fcgbP^4"]2;ԻP3ѹJ/֝@Rj`|Zh YzMvZpb Ƴj2DzDi߯GnQ|Le`$N\̏ƭ?CUbZ|J:hݾ佝{T﹥F.8,p`?\ \}W^=Jz;=5]ᝎ'͞玏F@ko' ^ssٕBH c(M O0_-#oP&FvX$eoiGj};u&qq4Kƍ@[b rL  ޜ?RPWTzX4zxk˃beW=R4+Xv)^KV/s55+|U/Øfɰ޺Jى$bXmzbm!@VY\ qK-uM !5sT=)'Ņ'$ﯵTV9|$F+Ÿ?HvqC)b1TC?*{!>rw9"/l瘄g}{W s,a& 0fB ꇢ J]M/,(k>.oy%κ dJ&E \!Ai_uV[}RNhS9 2NFd)63rlq)WUe}S]2Z#^\2_O/:KsIaޭT ` Ao\x6H]>I M8Jĸ,,:ͣrXp㭍N81P3k͋YM{[mlU' r'M5N)P$Gӕ^y/3=-r20ю)l)dYwo#3jwOG&F"f\zZDtlbhmMPĐ~LFd}O~\8NHeeac14}.k%}xZDˑ 8 ҕSh@Mݬ$\7%uS3[*i{bxCRG!)@3mvw4rHo4|9ߥT\t?z56z+Rkfi4țtLLVBo0q1Wz1=6'2sL.4g `>rD Q$2]̴4 ˍ4F,Y(97u~1;8J"sBzLv|vbfl~f3Y'3B&s`:| b\`4SvQ'c/p]z|0nk$v-Q@T/$9N~$CV*.4=Vs% L/v-B49f^NrnD!0R_~z{WfufHR@"uɍ$FTL71qO 1&WJ q/R|F_k@`Gᄏ ///:'sktd\na唕Ib$׀oq<'rn^^P.?wguej3fPWg[56Hs GW3 ݨw?:9f?+gA u8:)Aհ  z+u'cy3r xG \(P}m,g gC^Y.W+3uf0+E]*x\ )ɪL'uthW]9p1neabHq,.Da4V$=:Af$rW=^|+0lz|rx&1iU`b9k(8ҵ?A}'DxPxƨ~vawu9 //Dg!h4&N=t jRH($1JW|&ǽ=(>vFNqw?*jRUJ;R+ȝ~")e 4bs|xp<>,7gh\q TDȑdZu! Y5`Ii#)+RO9~I _CPz}*^XEŕ@}VظVyxeT^ nTi'I+eE:zYܱ v%;n7}>QV8xXn[„Nha*G]OLnjqL'GI%VXjwV绰9O*;䎸Sg, #G5GLB(`kf<@YiC,f}Ml 2Au AQf5 u(z0!= r?^s*O_WgAӤfur=5UhW81ŤlRG7sI 3uV{.,F@h>:qa,b?2=R~+ca nQ)l&ĐPڭJvoO6Sӡ4)ی?B秘7"@H2#>VCލ\U2a"5%Ǵ|j"NraN;HO 0FDX˗o֒w]o}۹/}֍09BܩTf8;BRO5U\ҹr`Afb},1!Jbd@σ+. %ꡞp;Uwݩ. ӄdr/fgŃ#Z%E!. ~M%]\f{Y]#*%{pT@^N1&&ԡдi)3ro~?hM2 F[On|s 6_9j*t*Dܿz>onimf[?Dr빘s `#gYNKYX0[j *.2hΗ+Ŷ̉"w%'""[!dBne/8[Glœ@`31W!<`s^}xA8*hKHWtR@ae>l4NL+-:iݱy;ֽJFO#;@_m^T9Z4whL=h-h6d=Eȃ)de}=bz1>_|g3g1+!,o4N! Ŧx/4u0 sZL/$谹҅Vy#" g!xL<O2T.]YWݣoFɟ _ڋW_ ~'~kV1Dwt7~|77(B:7f&՟ԖZR:DV6K`|NBE,kz_HW#n i5dB[E>Mz;Yv'&/+MTa!,m+ug=lI^4VR*H'[{-]\̐(KT \9#"dQ'pUB%V`@A#&Tk4ҟ֋2ٷ4G(J Ӎ}~/ײWѴWS#ԀNө˕~ unE\*3Fvvu>IhΪuFFEaA4bO&5+bF CVA7{-fua0Nr!9{xr?; p f,'E Tf%B<k./ͭ&14 -VkѲYؔ/|i9jߝZ[B`tOqOr@L\iL1: N9dLEfݬ:QvqD߽ψh`8DU?Cfgl$;V~sK3^v8q5i^j\Ld\-.|{^0֎J[{Ir<)-$֐KQ ՠclš5%YNMkXy~-fW2ghEog٣({f 筛T`HJ`ZdsjqQTmȧHMX1P8mct3\(ֻ0ٔl ?9:m<5E,{L3t,:l6jQxtkn~@Doku\{Q>0v)_l\n{BmLRELw$2K6[ =H9^b rvO%o~i\o4#ž{\$o}qtC1k7J=9+_kKJBU^`HF9^O#l[~6G6G~c-QբЉ}F5"ĖԡCM3EEk(RItGgƉp#_ts \??|p8/,Ps,1@dB!8}ɕʬ  !힯Jnզa$_7|ё_ϽtӁ r) B` V)0]E!d¶1oD47j"qK˜ilMbVD;%)V'Ɉ(686M 1l:[{W#ϾP+̦};/'_=Xlǧj\# n?l?TM$h(+Мԅq֯moICl0Gk\d6&B+#}w/vjx%S*jݪעߥQ./trTN9a0ʝ_<ܩyz`W=~|o Ҳ,"[G?u=}k[wo߽q}e$Ghgz~|lW~ҩ p%[yH.E@ 7Z<`vTaMYNf@~P2(RXt).Mt!)n%sjvTIZʊYDPmQ[c5 ъF7fϷ_g3^^F+a=Hy+X@ԎHB=x?АcF[,lMC.VTq鶼P4@j>B/ڃ`"+L<΄\A!|b̲HBn oe3tlyz)YbPߣ~qszr/~@|6 E>JL\@!-i#`l&8Bs̚ XFe!5 T;B _}b|*ӌ$ΐ 5Р|?>;JxRhv#p:[;u)l'^~g^ϼ˗ Kc7BӜ눖_WLSZbw`:mno%k kaka&߳ ZT'>tz-D !VaP2jw~헽PV`:}WzA.I㸼_(ݧZ0FDJQ>q/.DbNH3.Ub#r1-#pqaQ;`l_kZ %ϵW$_ %VB(6Bk/tPĐgw-շXf7jmb]#> YdO]_x~gNoOr T.^#`btЕR U3B[T_hSt^ZY<{!qկ G;i2%Y.DK\Q#}]8 dXm6B>8HMT{ЩZN5urnYBJc;3T[jCl|A_S(IL\썜B8EWX 'U rPZ^y!}Ɲ։?շѕq.}7mn["m(}tV0- =D,OMł@2A( Bevsu}symOk$ B^Y`|<՞B~q v&0VE2HCx޼ `ARm:gvDžtpg/lؚ0~ ᾙ;wx)}<Z5j]vR>,-L&]ָ@K- 0wѿzn\Q8=iCbii5Js35̚`um\#[9 YT~M.^؀rؼP?s*5هo}_yiƸG`b1Ȉ0C.E (N xgDVk'}WkʽjbLҕKg%,4='̸4lu>AUXY'g܈ur_%v8s2RG6idiQ?WiD 娚OX66;J=%s|$Cxv\ՓZzBއ F(is1ЩG5!ͭ]3'[ht-M#‹HBfhq7XdaދؑCToު- OT8UiA3|%D[wtw8\Pzy(TߦԲ䙶 jSb\($K7vT/:pyWZzV˒nox>;wߺdcm8<ٹW.6` T]Ci9l:yxXݲ%S#[өnLD1A39zRIVTCi b1"/BxeEYvYXc9oJyZiHLZDC,&cb~Z[Dfԯk' %YK Y8/hkgrTi U$M 2GEwK3KS ]OJU{Vqz,tcs_#r^i*PvWamV?ty3qˑP|fou؁Ӟ Nv+|TmmS%CfW@g0U])V CنC_NWliidFHY%!6ˈe#QjDZM/(9gm+U'ҹ`ᇷOD14Q3ԽIEr,⛡WW gwDL)y Q1CPdlI.Qo2*Γ OT;HrAGwSkP_=)5;F#NvS:Pzqڨ F2ǽRfl#UBYT[`EwOJ=\ÓѻN n al?!.gRT#kn<>:ִŕX9iUkgDZ84; 64;!SEQD95m>GL8exI 1Pvvrق_xt ʙ ~vctgqp]m6zLc]dp]%O߯'gbPGjy8ڬJ ,$sݞle GE YAe!qlj/jMw ݑ{(Vn=B+?~wtoFCy.Oq[! E?PN:v6v++I|==7B<UaՓGwQ.R4%15NT \`m4=MSU9^u4v#_0L_@gZSZnmeY6AE]%~` x?.m=̠?R@)-M,E cAY|N533 3ϾReov;5G>s0ƞAI:ҿ&H㆚҉zbZ~Н}p'H=Ns7%K Zi$8"B3#hĬ:M<6L||9x+Ono5c\]tj HL]E^ ^[Vc8 V8˄k'V^PLh+i\ lhzX|`5{Jq^[*x:)hX9fd, ml&DݝUaIm"qqf/3fыtФ/QUܫ:XfTywUKq#7 횽Ajf~Y>v+լVE־?@SeI5~v*2nԩɲ3rJ YuWw GrVšK2]-́|['TiO+ -!2$F6gqۣ6=Cd tbbwA)ޅF`l)΢Q}[F A1jYx_x0zxm`?[*xj=x+jhJ05ܕ3F@TOxTmTZeәx2}G6DkvXl k:[tPi eݸ|8gC=l~ )bm-1ᣀ_^h+|[EwKލ{gOF\z-JG;ޡc7.;4P H= `z&{ݎ'[͵r*z̥hz=0=tw^_4@Ye+U %2%YQF5sվ6">PcAe9l?("TپApB .ŏ6 fz}7**Ln Ym5)k*G S&eFaԧ2S_A~P;(\8xbt451X.|FM_;'+}|ve16 +ȻPbOCUZNn6=Gr٩x:{LХƍZwRdy.NT.͎ezX#'UFbV]d!D._B+K4U#/\/݈,[ˏgNJH O˷)*w! $&/ k\YցbT慼+[8{3 tw}(IG TUW&iqQ\c.$FE u3eE)M6qkʭfϲ 薮':nt۴OS_JuXI_^,+g} U?<ˣb!6S_!kdK)ϩ:-:PN_q EWwnϚe?pcI `Δ+GG^"ӏτ˷4*q!??)PMSC4+'途iI$?=u8__.f"6cӑb0ߗȼWK"*rтB*G&i29Da+75p#ݐ ׯ/fgȡXEB!7IG H(Y?fb%f ְScutϷP+V[jZmjK@7U2 $M5-5<ɏg?b~Xc `ݔPNwЯթK(U4gW>=uQ:N r;)ZSaL>/PfIf*StJ`$-(H]udIiW Iᒿ^K9O,԰ֶQu5בVhHbd'Qp_JguiӮV+jM "Qu~D""8 (((RP. ~8xk7/<#Tk6 ,E5̲TQ#W M`% H (,?Vn$Ӧǡ6(B D;YgCo:ͮŃ)+tͯhRȦkrЮ NwGQϰ./lrK ,g|$=dtpl?0Q t5%&r*YlB+g_G;.ZbzkMXXNtJn^ZzZ;.VN'z_[7FS;w+.n._%JήLxc)#?y\ړAo8:T*qO\xn݋S3wv:{'RS+ }a754f8L!aSo`:NsA'K]z Ⱦ(fI[(d-R?ZRGvncã0nVjTm[\ka]SJjECA\hau̥np3\j@%:i&wh>E$;dZE4.6meM`&Ʋf;&1$ ;bܶnϙAaBT -gaL,?c;Nen#CD6ըwNR zO`nյ$E^1pu T(@%]_sوePJ׀hTYIou6:zеt<.YJ*57_]X]b@3ӋFhf5YFutH1AG&-L'"ݬ< N-vJi!m y;P"5"?f[3uOa5~wj:p$oΞ:Ԥ ReJa Zn rLSlvT"C/Ńr/Wǝ&nh7O=N"4fqGJ=ȾGR:+/m[<{|d,Ra`T>*4lr zq#ũ$Ril̝b刍x/fYo.DML+Z_pT BX //7gj[ݽ1hMt+'_.m:)I5#/V0I@6jܱY(ԙv-g ޮ8UhK/KGDE f{bh9̅Dj^vjLZGMILLNd\3Gt6t_`XԈUErZzVՅA-FLdDo~t&cnQLR ΢h!H{QLdZb$ר_+%7i=1:`4H)jL#bC@-b*G] Sq=(Iɂ(N$/".hOVŐ0啥 <[}5DLO6YO#/̚[œT2û X;rQH<#^ht{GAu\7U ӉlP߿~/mZz+әXXC.YiFd/Lb] CZZղe'r;7wvՀK[u!WWK+\,OFjaq3i꓌2 +Kr E |055!%Hq{\Pu`w'qM4i5x=mA бֹcQDU\`RCRQnuct3ji|$֨|aӅ8׈gYn*pfP,mt)-Wқ(d!zB'k,+I7VOL٪5F 59KNsu:hƹqbձnY'}zPHao(+dOH'FNl>A )8*:bZQJªʐYKFECjɍZ'E:FU/X<bTӟ ;zHzp6MjWfP<-픠N1b \=+\4.̔ ԇCS 5jN^Fنk>(6&X$.Phݹ#AHԠdh>c*|Wb!Ø2}u3y'K x(ih/atvLrjZ,A+L^S$܌F m:zT#ݿ)W4֒sb^eF^GЦQC7;F B\i#p$ez1ux:L !(IP34cէA[Ѱv\n\y(5A\9y)x Hf.-ݪ;Ƶ#DЭ7i>s0.O۽VK%* E {BOchLNvO6ݝnAr$X;u•T8EVSO3a{RM'd%yP\hW"YSMMbDb8F IZCFr4J04%'emrҟBǢFU2M{JaRth6:Ћq0*<;Z8Lsf L.F#W?ziJOԣxGWfv iB.=D,O} N6EJ+İ BLkܼ3we.?QhҁXzzvu<5ۦAj Djm$C[l =:U֙~k<))(~I c{͞%)&DPk W^5=4Us=UIZvlNN$:%I#ua@Ka&qFsh3/z\n*C2A[ٸ6[7qTR#s14.:R5zgiPT& ms ݃ZoDtPq d1D}e JuUhS 6D2UP\%ѰQZ3CȁrQ\G`j/ ƣ~Tk/U=:`d:S1-6 z HGojӷ-՚=e1 U# m#v17!LؕS4j(Cr  ofeI :&V Yx}am,u.6m*XۧWجS5#jdRJ]x=j]]ZgܺҧuNjo1֭[fb9 ("GIH(@V7F^E^mPz{i" {Jv ҡŐ56O|O>G[_˟ܸíq(`Y )cjK F5A}f(HE/kt rT7ޜBvm Q4kHK\Ο[Ywrw$|~;}Y`lCg+ap䮍i;Bj+f p-8)8BBIxuʝ]zVPKb66 FU8E[oV8WG9b.Jz+"T6q7_ uI3T0h6[u3ufTvx!A4@S.W*T Xl{}vvnovݤ>gPqPޮȨIF?h{ﱖ#4MURqmH͸_?E^Ev:f\pt8ІVMQfw~W>7vn(up6gJ^MJnm.6z@n@5NJ?]sJA$f0ܳ5N}ShMd'`^^![92ŨNgLzh!D;ELN:%z =( d/ivȨ ka~PW}e%R~ucTǟ<讝k#.dyǷ+tf<) E_V7J$x4?R +7Tgk4T գCK!^Ic0y  oJ3C4U"VľLvTjI'zlsoS0ڍ^L+[ɟ:]F< Y8mpK~PhƂɃT}!$G k '2\\\={l/ځ.MB Ii, [•i4 PaX$D"{';Ń'zw}nat˗.Gf3ؕAdq!bL()?MfLhu29~?Z^̥ ?sXZIaUc0{5zt*[\'DD]ݣ޼?+0 㓳gsw{ /DKxl IțDy)(̐VD[hZasӃ+w0bVY:Y?됤Ⓚ2n$FZM`]Zj(;M|/c4jݼD h RR/B?@ʹh~( hF=1e. v1_Y=v8>Q^bZ{sqtx_oN"'&>k֧5.G)ExJҮ Xui׸ h*m[g{&3`m xEʵۛ^nZ5@8ܧY+)ZHafWl'j/[BItZ љ'q3jKCy0d[ar2 _i{ڝnu|aMӇ/Uś0%^psT;gF:Z ժW3Vq?~7< vסy:*䕗W8 uLZViU 7|T^UO?_(b8Ҭhlh:E' QO+J?Ie HsG! 73B>,7ZQ.ŀ1!m檚b64]1$ox$Í{Fܮ T =4ėJۏwdh([wmEҩթ\~OlvOdWAuQdՈRjC[# AI)'޽|tl:_|ެӈ(- kc/Hiݙ2rᦂ[3pJcjXCbzzqÊU&BN1Yg%Ѽbba T55+3̐OAuI4wppd)j- ) X5Bqt(HơFTHϋ +WF?_NBgk<'7$1m9;%ڌ]# Y&kIK ѓMk\ Q]6M n1QZsVrB"ma_.e2)ΐFsU'm&NxDbn3s\|X oO^>(X>,*DsIeO3aEIV.}qayRt*}5v2#LU%C1pA l] j6L,m9!v+>D̏ހVa_4U8)z*yo|!':O+4R^+`m~l 2֣@C-m$XX  ny̽A .͚Rut6YcU{͉0z%Ye2+}qz_BHBAStXx፹/_̯_$rVKw|gD͟|ӟ~?Q1-w1wރkn?zowηxoN6c)uE>3FrbVU5OK}ۘI{TAK T5/uLY.B$ܯ1!TSlB UlI$3|~kł)"#d,څQƯwTy\!ZLӈ@hD Wخ7wuL qC rFBcU/ @$k5}c?خMe7_z)na&I^+S|Ҳ,xꩥnf}_| kTv[e{3bRX`22HOoQD:|xbN棝;n>;߿k޺[~wo?~aC+cS8XJ.'Bk M4ypR8 7[K&rG)$ׅVm)#Sbʂ[IVԓDŽ@-]AVJPQ9Ѣ2n`02IFHtn:":-6. BcW'I5MⱩ8D?}pkǩ_qUQ?)0n; aTƾw[>O}.O0pp&/s|U²T%&!G5ke"&ԊM[fd`YNЩ,n,G3yMt\Q;Xd,ZEƢ]㈩*;ͽ{|2n>_Zmt؈itZ('y\b4PU <b%ř%!!%qzu?_~ ~Oz6` 72~[!f:)Z0RǺZZq$7P5l)dk`F3VhۂfnTc6INj!M7BBA!ݨSVTG ?9x"31$NٞHc j9z'읡=M,ĜWM64!eb#tl8Zfa=nI{vTʜ(Rz*'M.tġP PB&`7H4ԥN/!T/ XJ%Ζ>J 擛mwGG/_<7n?O'!ZܚZ>ߘJ:jRW^d? |+33hs`j3SӍ!Wf?۹g*r.5eƾ4倫0@l:r++2?RH(eC0:WTW󣩭Vim s2F0OPHak3"R6V#gT/#FJBQr0₤6qxZ ӂADjNvZUZ9P? ,)ʢ&ؔh鏥é|*+{k\>`>)tbfs/^>4 /旖i?NqzN5,zذ[zˑȹL ;-N`V_\+\Z>~vo:ĈV7 WqՇ3D=RA*V@<_\MIh>vĈoR?<2á5`GlK~0XM8&a ̀ aSLX-Uvn}}sP9,Վǵa8IGfTsX" [tP'BVV$ z4N,R5-Eb''EV$NhvXZyO{RaĄ_؄5 éㄞy IUzq ˧$2h&\nD+e"W(4p~E !D\퓢l2?}/ҭc^:2Me S^X:{nԩ3NY_ܘY&xo)>ZNyr|bzW 9w,j1D'τO&{ J$Fa[*v@1S#èiAc"O)[+}TԈ9.+~X%LS+s%bhł$4BS;6ׅ=Y Bz*n\G ¥Kk7WWgR1˧GG{vK= FGݣF''ldv'S]5h'x:ǭ@ >ո-mjco6|u X\HbLc9ҩ. &cVE".$WFZU@`8H GS!Dx&-0,o$7D |%0""BDp7jJ˵bcuXa9-Z>aJ( % Џ| Żİ?un`kq:Od:])޽qQt Rk5n0,6AŖaeqmh7چ/.𚎢TתuSekzR\D^)UX2!kԈ>$mmp>^X@7 9| tm,Tԕip9H\CVU\$1i3x?Mfs>¶ә`*(ŀTQ6hv\ጡRkѬ STr8JfSs^y?NlQw7OҢ:uF$2jaa[OSt,~"cXT48JăV(WIp3Xp_(Js7ow})zG/m\܁'-ӷDPHzKW! 6wb;)bE>iua1F䝮;I%4d2+"rw"͉tJ3ϟ.K_~عӋέ\}҅g.z*2^e#AZQ&Oe1+*R{*VS^?{AnP=~&?.nowzK'^T('F]|/2+^;0S-bmkhOeRxfe]i0%iJzw?`,c&k5 4 (F/9(K8Ų[F\r:RAA\>es6@Ѩꂔn뇉fsy΂cpѸy1 )YIg1Ov8a"vm9fVҬ7WC)D9s=.ֆt4ncwr J6S3,%kq ؔH ƓP$)n DS'?8Mja^n37R,B"=NI " GK%4YTz{|T.tZߥ2EAG^묽ҞК9ߞXn4rj%,V4^JB u A99k4[nϿ G^WWL:4wZ9niR3֦2w9|̙d267W֬dDuLȡBm NO/&d(S+ss<}|Ph%jT:TH9&q1 2A|x ` ǘ7+xMxg}ygLŒliD=Z/tZm6+Ǵ !I,I<7_ sY^Kĸ\ޢZ+n^,יmF@:?kGlnnq4J'\6MEdJ pꨮO& $QXKK岉㷿S}x; "ޥ x UI@.P+"sH`<\>t.' &'N^z Xx\'[ku͓e,8^<"/>05I cSuM`3E+y7&5Xܰ&h C,ȕUq1_!f\ɷ{W'^w+ jAGRQ'F?|ttL8jcsFMmݪXU)Ͼi*n=:0Tm=x8m_DRh<:nnfp)U }?@$tܜ~F(!i+t'M8[8*$%Ϧy=BpGE ƙ󗮾xPr5 t@xšښfCblb~:7`k]m,JH3fmWDBOy `CT`!SVBô:EU H]vDߖwAqҚ'M,1FZ*=m}l4ʼn4Eț_V^#ѵ>),TzIMUUg!@֖G%"2 O]MNrYq?7⧻3Ĩ߈ gqܻsȟJdhtZFҿUbCxUa@j ˒ΘEOj͌ x%iԿֈVVjw3sbL-eB#qDuꖥS``ƉD?A'hIQ ҳWdWF *g5|aB@׏ݓb& wgb\~e% ev9TGFT o8noK}/~ P<伱jViqƐޭ8HڨȅS9Io V Gݱ3G -P7O]]\[Z\-L2oW% IBk GȲȈ+ielw~ *T3zc1ƹQ-CI59ANJY8;JcB.t?Gک{zkw 8aK=GJ(r ) Pױ#x|_E͝H1sVNm"j]e&,#Vx:PX'5mW|2.a b[$=O+vyRYK]k~wX/~ܻ/URN>A!F$3d, թTRF 6;*wJLJVFx_?}mGIH AǏOۄA^_d66R:qMjKkbuVj?pŮ:r65kP@) v+:n֚L(*Iߟ Pue,63J7'Z5mE7dY#Z'IgḪp2O~]'$Vav}͋瞽;~~ms <6H\( '!>` qs79U) @4X.bz(8]) |$@d1$k6SuJԧG˟_JbGHb;ltnɃ{.'s+Pg_6T?@ {ɥpl9f8Q/s=i|!N`<ש ̙F&F"5Ğ@fqdcr$ZZ*ך3c(uyb_7\k7Wu0VmH_Cfɓ"I;id) ~w߻zuP\  ʈ/vp)@N.\̋M\-,N.f|u6(O&S`T^8su#Қ CYu^q@Akgf^@YH FgФQesNV!C+ƒ5F%Dn qa3ys_kz/W/?4!XXa:T;nYy[OSImC%bS:z T4ysmuR̵kM>nXv%|z[oRM17CoT^!&r`SwJ\28HƔa碾+O4$Ova3%_3ŰфT@ǝZ f- TS:qune8jn8!9%pMhNVC1ȟҌt"F^HQ1I<'VK)V(l5YܑV+NSj`; jLv!ᅲPfzzi}E 7,|jB/]ηU*O7hkƕΰg3}{qcrb=:*2H7ſ+V/<<.4$=pTi3@ = 'y)jR|(n0sMZ?' l@u"brm<@v+LQfFok;&V ('K$DP5N"@ڮq)M|BŷP鐭~L%xskܮ֦:@$fV߽˿/m~tFAna(FT&9E>Z0&x׿AlďPuð]T}?Ϟ3ٹ|897fjC(HhOm[ÀmrE2$816u~/h.2U@NZ %nyME E(I&| +82 -UdHk;%DgPK@HVF8$>F.ʇxA SY({?FMDL0?]G-" ^X|ǧkԷ 2 ]Џd o 1pjU,Uz>ѣ[=xЫ&QՒUFQxi-D8;uYWP4{>2zmt.4U\\Qp̂^ztnͷ+O~} -5zýN4ƈ,hF[K?F'>1hs饵vuW(|g 5ob_#r:t)V4Ecp;YI'8aA`'$I.KE|)trvCըb𡶘22"Iz@M jklgE4a_I SFku}4 H!mԕ.&K& +[;reyuLa2z"D䗐M&WZDb/]&.1 9n;y׻m Pi~ ҋW%ʲY5 _ .1D:X۾WM[8XQĩDEFHqIv5~Z - 1fdjZkﱾ A uF16;/*6) t$Xp ix {[[=oc7  3j DX j=rRc{b7#n͗`eSyl>fhs/u )5@&+:B6C |YְF$ˣk8͋btV}z;w:J8) WyI&T%S`O9TnkQ*} </qSuBZp$|# c`l-v,S Mj׀eH >&SLIA TĊ+lFnVAD(l6ubDh&F@[#N-gTѵ EƉn݅E $:6t*R"sQQuk|0Tq(|cJ#OLs}`[{꣚hP%#4I6W +bh?wڹkg0c 3J#!;Gp.Ob Z`t;ͮC3s570g"{9m~pXfϭ^t)p׿V0]Kz x Z9Qm5Ef+$= *ENãM83jLS("+ Pzp5Ǟ .f>YX@zss>CQdTn8NG|$!iy+twdR4%Řdk3onaD`~]i6Uӕ$ͷ߈ ^8+^d+zqv^pj[/Nqv)*63:vT`7E0P][k, #AfE@w QAc\ S ɪR4:G4`E~’ ݔh#Q,\b/hH8:" <$AsX;3/ cY/J;ؖufvaKa.w=Dg>C "1Wӱ.mWb82 ST1rnl8Ek4XN}ud: 8!d~UE&F._Xq14ZHxpӹ۹Ǫggz*L!ۨq: Z>1AsZӴT:8`0B&UPX_"}:)姻*R@1(}:$@'fW Re,Nfͻz*Dcx/?ԥ3N$(Ҙұ+T~%bDv._$}Q]N=|b '̪L&ny'9֎3'SN[%O\8P[+ lXT̗77nX?:3jrr{x7zOTBmY+;mtIH$!vrv~^wNzܯ }.'v;K[nh)rU$؃}(cm&T#z?bffb}{2^ǭ禐WcQ.+bMt GV^f~3WcD֊3Wlr`ԼZ dGθ{;8Aɋ@q#|̷&vT˝Juz\b,j}!:FFL#FmOghh.$yT}#t,f9 )> gIFL[ǥQzDp} #Bƣg>\^&:jBVi+@A*SV -woK1Yx*i=_  M!f?E )XnT9׆  w E3hV{V pޟڭdzm2v0SFs^bRؔCPaM(TlcYV02R"˺֯he#BHm*PVi֍O$&8Wxް0RӾվEb#l1P瓡3s \~}$jn}XWV6Z'HY5yLhX* E?NIS"X)opcVi"ei…kŕkE!C%>zX{_ 5OƵ+ƕjvx9;_ " cJG;VY< z&y@`B\j၍H|Sj0`|TYXTrqL2nZ>R̵3 0ZlΒf?#jKj5]+MsK4~bqB[=V.BkQ=qk?Qn97JxH#mV,H}`y<5<T˱#A`E;UCgjR[h#l(qӒLT ]:> w̽HXp .^HMȦ5|xY'F2Gmn'Qm\ޏ^z ȵ粄Ǡr! Y20Sl9dsx5T9\}OfVP>c|'4m4Gf;dx9?inZja!T'Pi4~/,e׮\8[^Q{xxURh)t0*tEVg&/L#;^y^{~+ﷺwʥNQ)rԟZhbnMBP7ȅ$̧3q_NqӛBD?p.<,:!Yp?q2LS[ FAeQҢz7l'9Ow>_>>tN_ zN>j3pBO͍Jݹ{y烽4fVZ3à*wu(Pgd=Fغ2փ򟙛{ŏp(BY+hn?2DA!MbHA])S}(ƴ5Zx1Uk6ri~gOeIlD!J\Yʣ206:@Fk0Q=p7#^C{0h:򙧊Ӥv`4^L?X~2_47nADyeL蚅syDh$Aw05H|t;ъ>vc Uwz_+=G?c(]_0bQt~6GzrJo6'aR@d-Shv)c~d+`& C&] :w52HXTԈ+nI-JaoP9~ps*oQQ ٚgb:gAx2Ӑ ʺrlX˴!Zn7Z^|vR0X,C&ܤ!`iL7yt2Kb:cJ#Vp>7pD}Rߌ081Wfwmx;sg_捝Jk:Jtš+ؽ\YW#T .ӂ E?;ەo!F,3sDNL iev2'́6J² "U@+Z >NCj&ɬ溠>iW_V7'z,ѯjHK 5aX.&$cbRpV,].-1XMzgG_X,=˯Svk7x_ܞy&'"NG3~kӽ[z@')RO_\{'t,ABMEe ̛ibvJ{`I4 ,Vfrn\dA +,Qqt7֓j颒C5!nFٱ ZB&0q!ѱlk_ݿy.|W}}^ɦYc:ӴU6j@ob&B$fo cuo螪ll^%2lão}vsi ƷuR3q4 eg{,fXJFiiNH!fLcɝAQ ً .,Hz9Y+Wgf,3Go~b'8׮N4 fRF2ah{(B3NШ6ݽ =5*:tJO\T2E_Z/oᐿic" h'L!;N6hI}  n)11GmfC:2\#Ýil5Ņ_ł^4K,qKO`a0#n _\ gNg;5 qlae9Ĝݨ7|i%JnFUjujuݣ퓣sdyI.ֻb(LUYyDGP7>7k|&G6C:bi\/Y%aAoA" Jf8Y Z p;̄(l%G'?TC#h(!= TD$cn ;RH5}"o HæskYl!ʻ$utW/w+IcS ~6q>\ 67+0's((Tw1M3ĘhI+ͩ,4M٣KH:ˇE C{&dK׸nx$R9jqȣWP<)5ܸ] qq_a#feSDj~n&F3 vy %{~Dm&1p,0„ΥCe5IX-s`pdi>~DHFfVN劳RO1+ç*x48 "H-,8 e[ )3 Mm$"GVͅ-n #y&c0xL!H1A-&*gb:re#\a"!} Ϝ&b{FWv3AX.Xh@ b0/j$8KдH"!oeaӪǴWfri֧*8P_e6{Uj_9wtjvB72l7:ƸUTi(~`VWF=)EE/yQQӭFwg LSs3r.D < }-TKyv[Abzp3—>%"`DBj3@HX94΍vV2U߬8cmsҼٴMzY.5ʐ]S{#Ӌٟ.g<11?bBlbF߫н? `α8[x lKĔLw0'ff"(`5|QPGovŢe[;2(1A1^6UB  j"_5KX>sn+Aac>?r ~^hi:4 51P Ą 7Z?QT$> %`c*0\c8 #bJ#'x:U2mф&4]T, L(Rg2+9 áZF( zFQ?PV?Hy0)7%YaKiWL/YDqF[̰_ ؖqűIv󳫜ÑwT3s5>W|4,1LQ-2[ H>fF⍠Bf k'ưvzcTʧ>LqI^(ωۭRN#WJc4,R^n4UGҧ&0Dv J[SXULn+JXKIiUImծb*%jej!x"?XXA Mto,e&6ywro4x$x1&FHϭ U'C/ icob:LMyTʄM/)htη19HytB4YhrOlX dXQWaFE lQ Ijjrs/3kĬC=9_ /:mO3fvN*JcZFiP0=:͡Ξڬiż$`ų N dQ~*_Q$'ϊꜬ}?b1eOO?>,H湊f0iH #Э^8mxw|7I_칆r}? G[bM;V^e+o]~a9wZlqA9Ts22+L,W D6efsSOA6XI*\ѮlS-8Ata:gbe9ɹ!x}֪kqJ _)ly>J %ZƑF 8-汵 ?ho 9b}}SWzJ` S2jWPO-p .08{"DC xvGCgbz?i <lG,!BqfoԓĜ?xz t6l}aΣŎv2MT%DUG ⚚AL ;sߏh 6P>ـ'$Y6&o@=?JQG%3ԫw}k&H3\|VhH$~MH_&Dpagoj +dnwwk nf*BpUTn4.RKQY0T|tq(Ђbʲ!l pғQ0}g/]{|1AhF[ "4Qxuu^ot3h^vY($FFXr,j(‡Bmx|#p0hiYBDź{ݟ]%**}E^%] bAe>dk[{vGK,,S3e#G0#TB %bJ1UDi9desj5L\Hi^ ?"1fAzcdQ\"5Nay x )(\+$ V!LeNcb)AAWk![-L8߽kʣxf饗:lnF8٢ª/-.;s*"qj͞z(`L!#ǩ_ \ LyYϭxe22q0Є($_":Dݶb AcHQ99!]|wx#,4~H"?ްZGMNBCڧj &4@Zᦂ<.QϷ˨01hi3Og0LC>[PPEJ8=}f*OVV,b]lu+]ѡOw'j`LSOCF2@ ^2O@0Ȱuu}'_?cd8XPo I>WU+ݽu|wS/GKOrOɪ^p|O:/lĵXc} óCǹsu]"1u9IBtK)D2%5bZԣ!n7H`rH<5 vet)V^#Dv a?T>:~ms}ͽ8XJw(>gdL q(;"d`/}tycDGDK1LD'R@7(gJł hSp7АD'M"zjݿ{O-A;F/VoiLB{?n'+[aw[~1]/DN8Htjyz>Hm JdVnuWnOnn{o~~ a/)Fysv^qRSU_uc-/{yX֤nʇAZm!4vSw{H9Ͱ]fW\#8FYJ*:DT`MwU 5ƎvӘDy4>.|sV]$uqZC?SRX6j_׺gV.rgPb> V?'ŚΒ>P.=wcb<."X6nV&nL)]1)Y]h)Bk+vE"\|hl$a&=Be²,^rMAŇOU,PmZoa킮>(LT8z/J6M57}ֹw /ǦM.ӠMGggo">"~ځ6i>{R#jbK*B}۲1q i@e\7"сa5BcDC011b%剕 -^$uwN8 G_{~`~3_}n1 ~_^Ww&}ٙQ8ڭ AQi XqbD/g+x!nz_|__ aҕHn):~DB5o}>wj1jilzSmBUk[.r z.)}͞_9f#C|rFSdXʊ,oZÄf8(T_,_^?~h['̽j~wػ _8_{,>s%\ DgÉ8y )b ]mµ"THZw|YuĹZU”9_9Afg>ߺ£mS_`$6\,sGF){(*%5:o$VGL5p,L3;I ҥ* p<F'3\5<6jx\:v2&2jz畓R0+n CuFUg8xy O 7ԱB~ /{[thu@7=0 lrګWlbnvSNa9YeUDǖaPN*T=,\`15F"jl*1 BlLk0?ƾ$c#k S˱K3ؼ/́ĆREkqUiiQO2mie@VҚ2/.[mL+ƛWdR;MZ7TRuFq M 4!'sZ@ TjAvPX5AFK HWB~@L4 ZN䨂W>Sfc^`N *4+ MFQ jk|͠u7*)ds6aPB=UT9d{*dSBn<[zֽfv mVy Qr_@2H͵ɓ P$цVb*3E(@Jaŏ3"Nd+Y'E =:(:q15Al~)q8H/WWQRVnSF# J1~gw/Icxr%j~XߗӖN'h4O>3VySUUIy-Uذ+Bk^`?y[ʭOOw0r㹄m~o_4]\j+\:ǿ\zgp3\,_|KLW@?cg`r4al. S* 1)`#$ ˏwVda!V"X~5,f3gbEˑB,x0>6AHR";"HfJL+C< jqù ;Xn\4+ʙpAH\U+ݏ9уUB$,2@}jf#%c? EkB{!b-" O?ݓ&@?J U5ؙe*[%8*`9m`/U1}.dnnf9vգT;PIeEkgX|Sk) qX{_<@.6ϰ7#zt x2B߂DBayx)}w!JL֏7vWڸjL[8 mTp1aBGFt۠ 1IgsϾ2>"x תb>V*%3!*rZ# E͘4śX2*A\.6GSP4ţir5x@<.=)hqgg\(b]I?/L`]UxLjG$e:FEpŞ殯RUАHp"MÕ|W<OyĸsOw_ռLf-R2s.*9('I߭ ;1KA1hOE& JOnz*-/PAϺƾ׭S׮E mF:3'WL$-L؃m _xZa#1y+=ԱЌnxIarT._m+Ԙ׽עj8PP灥3.n#ٻTEuYk>v\:()S*buG=av/ jET@SGh˰EⷌYȘ2eR+ pcݗ {Q5IN5a. Z~}!D'B&ېR$_wPm)S$SjE:0ʘj_ZX9Ou)nf\9zw^VtyKɉh)r0vPNykcq8(PCJ9[,?)[wl3 ŘQQ })2!ED-XDHᾡbH?lhEւ+ZWĦQP8ommvZ%~75}&=/|~4Q7.]g4aE eXbp#9B0{Pg8/J:V\Y[?yc֞H'?;xG?N+Mͥk޷Ȩ`TUc.S%`il⏽GEfƇƛ[dhr@5Yhwj=[;'q)dIDATDn:+8TŃ~Hݴc64-A6iUO56kcR+0EeI~5il Uy宺,j|ibhN1|akg|gMTa/끲juQ #;DxeHW0FASJ+N"D De,a)PJE;̮*#7iΡqN5x saA (<[0eE½B@JZ< ĠS{I^%p5CRV"",|cx\ Tc2yH#MMEdZ|ioH]vuX(em#.Ca5a+5NZ"j>"V8:) /Y5!9`l.,SҏYpd(c'& KfQ0("=z(3! NOVV9HÒO<a]6{ս~'pnyÏC΋;=缀uv޺{RFoO?֤V˜ :bׯ:~<* 귡ZcHJW\L>qxu1z%n疓KN 'jAwk+0ȑ1TT#u% W 7کQ D,ɎQCEJ;PܰKMߥ5DrqpMWbR]bjSo8>WNe}fg`3٪zcI̦n [,DOO=@%9:TdG}dMtWj8jϚ b@*^s׮հ%84C`zm"[Bi:1y%xPhZ-9WHj\]Ø҉$375-A@mz 0dٱ؃SO֯Co^x ?@)|퇋KI7&!- ͯY>syܕO]|%ۨEV~ᙏnt%pX3/K2n&Uh߿?3?uE^,{ T"G!Adt H0Mq C;.N Z`~-~23S5(W*e.'vB St]U;j ZwxJTN\.^x4]/A9OXs 64oѾAnys;2WG&h1v6ۯOzq!I U7¨O}޸r܏X;9_)݋DTxg\!vv-@ڊKD#[Ry B Ca<, #p7rY.D, #E(]D DDqh d^`׏ M E(F;B|gy,g`]>3ӘVEft9JŒ$ On4 J:X?4x(fM!c;4ѐLgtI3(m8y0$McO7q+g|g~DrrRWX=~ߏ}ٗzǟy'{~ c է/_vwb>"P]!nS*{w{ScQ@b(YӴTh/ j&!/d{@G X+El[S$| cav&.ǣtmCJmlnkMJ뻣>~/y'O~!?B eЮoXmݻ^qӻߋg#_XR/KVb1&D:-<\% :zj«Ow߿^.'L?j)7:7<\a#P 8RmD&EIj`%r~[A(Ӽ4n7_QuhۙƉr=nCKuas')YMRXgٻMtK|9N,†0Oi(}R3 .e%pz*(X2l.PYwN,ǰEa 1@kېУ~G* ,C+.?XD M\4EDi;&R bvGIdBQNŀBqk{go>?zcl}wbX3W|&4xَ?c{ y|[t6?3j>; )V;6gǻXBW(G/WaE ˫/cА}}_#vh1ZP,Z!P|*^t)C5q Q8L"l73?.|<՘<u/z;ow+%}?{ dK16 ($,P{o}}|x9Ǥf-?]I_ӿz_|&2g#t|[_|/:C˯0B0 Up)F:DRylӎ|uiꅑV+jb^5˛o]?KKRc~)~)#bKP-VȆ:FG, 0 Wl䈊Wb{6/ #Pk(YjW$LC}BK4\|yD'3׊j9}ۇx?j=31rLXD*D&L9s+Oz5۬..\{%$+>K+ G":-:Z®vN\!Rqiւ*\=|Qjf^8ە"I\/DA%dY'&);ni U,na8R$Zp Tn Wb!p.!Z'Pm?ߨ~wG`>nSHz=Trw|V}-r3l{A 8 8|'_y:ݐr@)Hê]# qF]$atIv?ۢ2>cױHBI-HG<|݉Ͱ Eq H*9y2@,Mf̎J`:9 &pV8DPk)W~ׂ RttXK }:DEJjPFʸe)uj\ԅ]"Fu9/:A(A[&t{1؂Q\2el)!T OGwt.oA,1gMu%Ab "`ikl٨5i%BGL /KƉb*>tߙikOLQ`qgQIhq%_T&;;׊ /<7rzVŏtd:4mK+ 9S/1\~p+_{yqJ^$H w~#S )h݆VBY8^E1TL<ǫY`/doր`"7zub# \Wb'TaO %ZvXJ7+;{_Z- bYAi2YzwؠAZ>ޏ|$qY/VBIp I7w7}ⵥ^Ϝ4]0s,v:JyzVY6D5(ܮVָ2ko?^ep!{oo3=h|a.]>ͯȦ[7 8HK#@`ԉr" ~4z9at8:E. l^ԩ6jGԚ͉@ U9XLA%(_DCQ0Gy.j+[u\4,mkT7 6%t"*#)kM qChtUSp?+;i(?GG.v)p)0h',Tz/, ZU:A %DyGcHm6k10^8ACcHgq/dwl9-IlIcusEJqҩeFhX WĖc̀>'U6,34z4D8䂋?xg*_/p^hSac^E-Vs+#.sz]Y>MYm#F?(z1QRW|B@^74Ґ:C{fW I! S&N 121Zx1;LYd}N}4UbKH{ܬD ,2X۠b(Kėqą_-Zs}_BṦ@-}$Y/LRyǣfg{wX>Ե40X)аPj:%j~uJT[}vmQ$A_/wאh1&"Y7Z͆?LcH7n9A.T,&.~Sa)5`` g3U%1NIY=KijΩ,;ՐJ0K-\ˉ4s $p ,/׶)H#xRL=kxTQCXnVl+l+$˧&0`迦sX[mA1G%;'FS,=52G~Kp!$0wvqyF`rΊG% %9ʗQ]$K FLPUC,`eP%!.qj\gJ̊jjn9ɨܕp+K\h ZrA:[sO052f,$ VN?85bbㅱ*D$sLaDY<>f&X&i3KB|f!3ϧfqNiz~8~`|HU.=X6m~d ߊ0XH|1^(ƳgSřTha\!Cj w}%OSHd󙙙&=\>;; $|6$+x3&3r8.,C&\n;{\EU PЙ`Z7}kw/O>gpHt^UNar+'(zIjI~ `tw6J4ESv;HZE_IHX*4$R[H\JTg1Hr26͖aqdX.uՀg9+o# ]=x4"~@ MumD4K[*َ FBvF[X7CUB4ZFD!'Odmry=$zB[@q`uX\$ԣ{ΒC%B-?%~D'.j{f?xRفF `#)eۖd7*V%.Q8q͟p ª==`i <8qZ֚U~K}sID8R`\ol`T RYqͬKpm4ЏΝ^A'L܅Ѩ}n&FpQrmD$+ ?ek&±ToF+T& w(z 儵MFqz2ab"/JobmO9| ES]^/ 谵'Dl(9QZʪuИ<\XSF58;T77(w4iEi"dP>Q;NmS *QO>/'|''3_j l‫>.k'/>hvfr0;ՇbVqT)E*QUj͓R~y7JLܹ}(c[˘Q,&B(Ac,CN݄Ʉ|O+NXةi8b갏Udؘ2cbK\n3ꌲT|R/Usd\#I.V-elXNѬS^䂝o=7L:hQK˦aMň J(Ѵ  ,ƝXbUu8Aom&W?3Յt-PWO$44y\u}&/jX) 2?~zR0Rz԰$A/Z'݊0PB'0uHQ5Bi:6R^ (&Kou%hl18ٹ8x`OZ7t,y{d-[c]i]qmv-1ZA˲O*ԕ)!\a24P 1֙f13U%|yDjIc44$Rgkl|&:b"Bp5Zwg\}0:pן->(}XD ,PHHTKPB雴TJ%7ȆYE ]bGe%p:Y6ukiԪ=ּ>37ã*jrc0F^&G|2:90_)>f( h> aL S樺1.yo.]&\/\]L;@*3&-o0̍٧KOֽ77#i JRiдA4$_6ˏGL_k*҃z0[H^~ɚ 2Jtn-S#@+>e4f>7˯vQ}f)gvwSˌlR>"< רi9INn]b^vu "Ø.qAZI\Pq}&uxB&Ya;[;߬ze)1pHk$1E98U*Zo(UG)Fq"tUk;R\AZϋSt}Q\j 1hb oAaڸǥ:g_ʶRO0D僇1/]?LA#.ZPU`a'W,4Fszιx pBݞ37c]z}ָ:Q~$ :-  `&%랏lU}qnY=dX: iL32At!QvO;衬B~;˳.\\J{I\\tPGob:K ˿=U|;׎[㟺*/P Q&vnɼDƂ9|"$xݜԶ'Mo?y 8VN-JO-'&x \+';'ks}*=|V碨j)h?78fjIK#B+N/>KXۓJ%2%^zoXy7U ,ވPJ^L nu0_,D:G]Yt&BϕTFaU\&--P2xIȧ@\n,^ u`w-c3I#ߺJR*՘1cHZ%/)ڂ3NWn"_.J}E*%1iYhz#AnPDjf6*2\ج(?`qH'e+2Za *`aX0"˫:2iN&z(f=R X+6t_ɛ3]#Aw+P#G&Մ4 @u4cSThSKj`ȉt,GPo:fvR< g> tPQ\E/v;E쑔bmc]4$苶4,.X<-iٞrOiICyhO;lj<:ӌv+yrjP  A>>̳ 9 Cw:?GW? +* r)<[ox;3W OL͗( *-4Rf.?oRKO&7v_?OA 7o{L0-Zc PPs]G$YAz3˧ҙ+;qVzg5˞n!w~"k}j"BGY<4D]*ĭI#L]j}R[ xE à.+,ڧrh(=vNOKjrpNqdzK 2y|/-k(\o{&M޾F#B8(S$EqHeV$}diytj&< =2v0 8 $3im;hRh|bȣ)e}E׬ vo99kL6'W)́@2hkZ6xj2QHn4Z|NӔZ a6ņPT/d yF'Hg: xusDH4&;5ʨ]~Dۖ,2oDcjKĄW3zЪ.尋;ÜZP;\ B-6u\QS\ ^q[zRgm? kfؾRU&Yҹ~wYFda&U@S'gċ1%'}fYb]dLJw:-NV~)224*(2˂ALhqfU`rCEzU*z^z\A>ѪSi1 5&ClŔ 166}ũ$e`Šz}lӸUdB 2YfCU5DvjkĤp̦ߴ@&m96ᭈc5֔H#-37 ke8U0k@8Nݷ`w0|&-#ZzG}'CiH˿̀T-L!!*V굸0ĶJ22#lUNdأ:Y̙<{S?j8HBݤ\T:?Jz |q͉\78&Yo܌=y᜗.tGl.`@U95=Llj7Xj~@ __>)RA_( wW2+]+^{  ifJ4JC&3JLJLˁ0OFRyI:ulw4<`cow#ǛO*JGV%0lOqȳQi44ʕe@|N v9_ӓBOkT7}scZMG20;bRUu>h+P=2[JTm!&*>`ZZejj\  J󣓽 JnniyX)==+m}-U&˳m{ZpfvՊvJ1x̣{8j)1@kdXֵX\qLoQ C]iB(H 0#V.4vq!oZ}h۫bUb+hM+/N~sYҦ-b1f;:quc4L,=v0İ/_;JA2U6oݯ5)l?rD 3AmZ*Wn"}xs5C^\15fJgR_z2D=7W{̣l)!Np 1NΡ!@z*}K{vA#߰78|0%F0M Ą%{彽ޗ~Yy}&={oj!"1|'i$MNm(8X8WuU~Htηn|m?>xλw /Mny>q)'4CP"4h&ϭV-}ѳXY,3z%st*Fvw%3'~ H7 Kz\T@)@#J˓,a7l:^5j28>T߽wݭ=8j+*hW)UVB}PCa\""tdi>_IZ̝[_:?eLP(U@*E@ >f $_ej^R&] \+`Vezxb=4lu '!9"A~Rmc&'@yG3J cxlV5mt0BP>XY#ԿpqF,qqΥ ]P۔ƙ [keVAA/Gc A<,Kt܉P ,s#K\]" bqa;T,l [ر1ǸI7+?nі}N28) IجU\,0쓑';|I/ȂN| OIw7{1uz/t.E7֫p~GG߹yo}G2c΍w]oVk_ytd%%vTVXA2D’ǟHp||fhE>laۥa|kk[V 3:*ZAXaq,NI8`l8ҭ tRdP'R"=pRz6G2m)rB՛x;VK~tq[{{ÓfZ;(n<͝n?, o \</DWI.F|Pb%c_ jX@.(bhN% 8IƭLb)_"_Y?}v2n4ٷžpe<\kidv[`@ѻv!Ɛ%8B4C5 $]}mW[= L|cTffsu,y~ڥQ&p ! l9~Qh"^Q[]jXM6l)#j*H]n;_6 KwQZ|ڴjPˡi"daJ\ǽD5#-`Hx"xt>wv $bʉ!ِuB>X`PBL)FG}{g[==dYwjimz G'5z<П Rr]?I&¼rR,Zkʋ^1Èr5iՇ)LS(<wnsx"i}ef3.aU8>c4#4E&Ztcu4iˠj*, I+9 FZE$*tXVr-,8Z^ =-!'^Gz5gKC{șD|[lٯ=1aۊdRB&)Y $Dߴ[j;D[qCTDH |R3sL㸢Vktุ3+x~%!}Қw#u6 A%@4&*{B&,q19PG ć'CŚ5rNm= :/ PL}Sj $5lT7@0bӠqkՏ$R#R-)Nb0IZl,{q0}f_,+XJ8HOrbOE׳^ BT|KֽG߿?>ra͏.bU |e LesgV.[2Q/\`lw:,V[jPn)@DȢ`^;.:(}4|=ؓ.^KH~hcqZӚ%O'nGz/> ѓHVbdDCtrg;:33]Y mJOODVm12T34R=N e lpɺREvW AbĦ줤wk쟄vmF}ZYJ_:o??=nO;lNP+{{OMX&gҰho50Wb-vsQ" )j?UCkc2F1bguStnnK;*@jhwdsP?*nooo{wg^y0"ɃyR.RE?::L&`N< f,Wăq7s 5'Z MShpC |?Hƣ < 6@-i; cFi{muL{3 E \ϼlC9.5JhڻM%#Fׂ ̸Nd"v E4h\8.̟S,9'ߘӵ6*ƝA4Mp2WFؼcMY Ϗ1DeΌ4ÍͻCӅWF8(pԮR30k?x|ϫ[`V<.%&=Rxp xq5No]]R!Z}8͟^U&(Ϧz"M5~1 ^y2QU:`t`LTc_˟xبRԴR>CPZ_V-J7aFMj LubS( uckoMKBVBJ#qFQ!;wr_}/*L(E#t`Dbh|%^0sD4ś[-fʊ=@+}J 7a½02aRCâ٬--Cu{L.񅒢xV-.grqnJ=^p"QT;G{';GJ7-/#D"I&cQN™y)W 2S x \c;mtvlQC j6Z):qϘC¸GV=YQkiIx:Z{b%ֶe@1] LML.8t'Q3v٥Wշ 1MBܷBr0=7,~8z~B4?b%X⧋K.uT`ƟEk^ۙO'R1FZc\4f^Ȏ[z׺ֈVz.v`vJ=,$cq!S_ $tPkTξe|/oiw Wow#vC^*@S<3꥖ .d3@Vr tfPd_^C&`YbÐs1I0/>>Tx?X=H^:}byR@_Vm4< "9e=:Bcl5ZV_!Oy0 š+kmNY`U!9Z 6 2m{[HwہoɐVu09|!U )4U3;3e "lƘmŖ2Z]c^R @[CYTlL#^~MdΛBp1<ӊ^R`#zc)?$d]S?h:.Fs~ 5f.74y u?KA8%tPt8NNq.rwnUmH_[\` r!/Qؠ.$' &4nlK.w|+Ģ4 8S>{鏞}Odibx D"<C8`lhb4LTDD*#оw9iBF5 /㰳k YM(y ;]P HI nc C9Ne* yo^]%q"s xu \Yrx@$St}#PNݎl ratqI?ִHM?!rl3KV>L 㙚 x؀cp 3*< 3ď|'JgJ3-W D,VwQ3Y0n΀%uPf2CgE|2Q*\3Ǹ}R⎩!hT~DFd`<-a mpkt-=ṮF'3sE $ͻO=V̲_qG:.9q`IȍsUiZtfE-R[6,T8E%ڣ9xWmq%h/Hf蒪A Cbcfּq=m_l6%2H4]IS-qGxn%fS/&֣t0+Qz~~w__i 0=No!0Y c6A Lj!/AgH $g򹤤$8IL)&@C`wخQo[XG鶤1 '̡疠ST}%ѴFSh:N8$D)AW` Փ!kI4Me&}P|\9DByz|[,/ݝ.J\N\ZdoypJ/^⅓gsTXxn\ dit RN,U"/dy3"_ېi5ts% =vboL>hV:L L&F+'?̖Txe L275Щ㺌EǠL1$y\X-`L䢏6%D>Av?jK4\q)}Dvg2G&fByE6W ӳ&U8%" YQ%PiMՓ~ qnjXJsûtbZu0Y̕[LYܤċKnyRDH7j{Qo5G|@b>dr1kLԕ_/ru=;;U\n$ U!}h chm-4_0B.hA Zm%vF v*w6n[dz99(Te'qۥ@nEUj]j2\a+҉tn%U/e #I:2G+dҡ{,QZi4is ڐ"qYL7clZi>j>vb.[ I+јc΃0NhI*B: l370OPyL]@W %Q/^k)k¹zLwKjspw#0’!!ARKTJ1lSrKXW)`NS&خՎUl oq\Q=._F씛! 4".)@Yx{NN)(!2g8c,BxDz²W9B f }:aW̚f0im ;8i\>j6ʤ<ǥl[ 3׼?۵N84h;gI&Ke(n*n{/_揜pֆ ?Y2u6q{$㋮J?5‰`j`@ ;ק@.XEշX:7jFB8[xo*ʄ"m=5keh;m&KU\"k7GonGg9z7²s 7q[$!H0þ,݂~)6jYbӛŹK ȰK}ȅ *Ŝ ׄ?Z08A W&0ve[|M:k&ssx#h `+U GC K?axAxxbfdŊJMFɦd,+- TF !LZf@QŜd;$'w`rj+Ȩ'ry zТHN\v{˳kR3k|8h3 kIȇ)k#rJܶP+KuHgEAg/P/b~t~\/N#mOab2&cxtʠYB3δJC7N'< Բ!=t(ŨW@Ovkc8䒯yyfFx.7[7nⱟpH<\L'y#}1CFkɹS??OF<1U>yy(J_uCn+ _X@a>*E$z.ꈰ[ S'bOQ#aHƀQ+mhr̆0UunwZNMJE +$^fol%ﱼdjt:<Hv'ـ 3!/@5G3L_A#AH /Mt ٳWm䬙.lͣf{K(IkD033mA\*դC]\SiG'|kg PDR  v qhe+ܩ#~l$ŁTB2(ŶX%W̺ʗ/  i„ŰU1ę%ab\.ٜei@I[6˥!:ES$LLgWp}dL~ D 6gĔ-d H̲4l;VTْ"[}kE+(X1ծMᮉ!w}ǒ)ki>O쏅'{#2SiȊziu[dQ!SM&QI8c.ҍGuP# &ð"&Qs'R#!ozQ?vfmڮWkϝ+j}"n׽I_5ŸdE44 bٸR yRO^23 ((W_H~e as8d02]EV&KcgTC %JQ P*~*Np8n@6Wi>Űرd5t]ޘ#.5 sc Иjֺ]B)c5-cq8#Qq-/ˋ!$ b-Y%٢򝎌3^HruYbBWT`9ZJRDp.MA=QHa<.<Mgb=κآ0iȂ45}bBomuI- o KP,\'+ &m[y~b;dhIWwFlP%l3X^H`t"Y܂`É5͏TLcf QIM>ĄaV,2wޏ=O=y?x EaAs@.KkΆj> XG8 =1BS\(76ī ATݒ:h'B4Ȯ^{ҊzI*OBGєe1B1R[ץ}xA6Le=}!2ݙuLo٧2g6u& o”/:FV/q3qQ 9_03E'2~Jzf"3Lxvdp1K88&dx1YH(&ÃRwt.exY INi֙pO^+y }n i/ jȪ4a1w隖80` 'qPDL &qتZ8@ e?3g֕rRHd$MSL]݃C `ɌkۅDhJg;Fȕd@NO>d,1f1l3վ50ȣmoNqg%*q'j.hC,Z52۾?]v4lY´mc]>,z+l;:qBXiK'fèd"Ȟz*dA!tI7L}1 i V0֭[G{;}cwFe>ب;'g$NLۭ  :\ ݾLί]u7ǿ"Y1[ee2qJSsNG?:3-Zݫ 7\8TG Dޙ)ia)5|®1!PЏCUdՊCj>j2<^B_Naɤq Y MF:V5Ŧ)#-TwBbm4! * Vt&|*[ɄɆEIFMfSt!iIt8Rdt `[>W"?~qE))c@fz*'(<%NNu1l.l2]s]I`ue-rIC5 s,7yv[|C-3j1LgPQ,sީ<t%># QA㟏B1/ggSWs-cdؾWmϮi1 &`/u #跠{T3z&<$6;]&fkyT;jOO6w0薪vF>+F.'ka:cCn}MT]l!Z3q *[ KC)D :2SyUi%mT?R)]+u4L fF3hs9ԡ $=WoXdġv̨d$Ïfsݨ}fzشhc%-vHXd0Hb3DеaE|޻+m+gEVqrEE)Y'-`MQ!bR*R׈c@1- "fD:(]~#H<%x,<SG*'7Kq>{'g7*ڟ˿O?OFEipX@(#@rEKwO_Z!_(Vΐ )xۨ qrɷeB;FNhĄ%:guτnf_mK ~ձ5F;ԔoU'kVl".MMՅV>JL%DLOhܰb2YN89 Yn; ނ%#l)U讦Ri$iK񆈦Xp╗M'(m/i&mr \68ZYʭ-.-.)2D@_# VݶhX\0fEЛR%wtyRFFUB9(8];]&4hvcŒ\QDp?ѷg\$sČL[/Zhh 2ZO4PSFY*c˾T˯_יf)#4($ 4=RVR%NF-L&]*02O `N 'r`͊Z5_V=ӯ&] fmbjwA齃O/}'Ŏ\S"~K;SI#9(@InzG{?|^oFǟOхD"hRlZ}kRw[nps~TÚUAZDB;-q%u0b0kuʠwT/E kHEx4+VTB0V}}}po:@ϭga_.&sE0=9(%qxq)`Be*["!Fqr{ҝH]@a=D:G q8$3iü89iȂ\.8D6+c5[h,ϽHo}r` /^ (,3L Z<++ *1Ѵ_LֽARvg[aI4m!1 X V4Б10GK"\a& =FTМK6p'™YaɘNVFq3 Gк=]#FvD#H_h@[Z5|QPqCHMa˾6^ ozL -sZvýuyrjuҭ4OzTo*xbR$TD@5[jCI1㉺f*Dkd QPF؊/"z ]ӆ# OF68uRd,YCuJ< -*Œ/2C! )# A<p嵐dhWꍽHV'rptBЅԯ}fr`H^ޠqt_|R~)/H?b2 `dXvnoy};K+xop%LFcqa:G))[vƝngجsfvrQu֠[z)kNv٧H\lzuy!k&_w6+Ȍ*zoҹS +G[p[=gO/v?4)$vWci[qӾ[Q0F]uj}h=,ױ F^Q->R9|a4yx_0 q:fU#Ն|%6*Fݾckc 4Vͫp2UH)tba57j{7vF6&x2p+kDgj#;-p(r4hV9Ŵiq鏋ɭdGqDdS41lhQ/.+3ZGw\ruBkBaŎb)e* m$WkkЪ2Ҽς.kּJzz{A33{.g X G+w[ǍҰ9l9l. 5 s *փuoK6?cJ/յǮ#xSC X3M  Ơ}B5MK`d"۩4q}oڟn1(cUuoQީ6[͈ױi*R'3b$;eUn QARqd:!-Ht۝nLeT,Ҕh0Άӳla1ϦQ^3`fhj8牆 WՍ`r6"=;42?G1zXQFCf% B ،7B8 (heY<m1KWվan&pRZZW9u,08Äi(Рӄ1]di n3K 7Yy4^.czUO3^\ /-J (U3ztD˰v̔I' x7ܢֺŪh*xX@ Ymk,NY )6WEJ̚8ZxЛAE+x {PJ4Ͳ {f!Zy*'-*1Mb;!26Åh3jءyӹ:&]'ž@n.(|ǀ!JB"YRU B]? /7I{/nmrP>?uICPk'Uvwޮ8jͽJE 01jC“Nɍ.gʩO<^?F̙֚2WjI7ka)yuͽAx.b {v>za,?`N2M;<65ںY6HWP胘d# 6YA&KCM'D篺5ވakPaHM%JfءR!I}x(ePAHvY6 SE鼢f l Fr '|ANỤ\XhV~K'υӒ5[㘭#l%kA0{b(fVgfh{^Ҙ_Zz3QhHRCBFyca$ԲbT$IbJ,RT3a\Hq6Ddd~&3Mӣ R+͖lw)S-:bH/i!$ Qesa{7 CYnmLIh4tw`oHAi͏74س߭[ Rlba>}CXU\UOa2;ۃUbJ\>oYs~iqNjD$;vLFdO> O_+'N# @P#PbR`ouA( `+6MYSSxj^9uSgk_6kKa8/D7MKHwn"=owlx_{{z 0!)_/P}h3l`]̹W/X7Uɲ\jT&PAA1AM0Rij 6{Lj0='FX,-ô8u:VԌ=@,7į< YIe@tQgfע:nDxH5\Cj I4+<7?T ]3i8pp7nTz254UR ,j)^FC=]Ӆit0U:ENU2$3ۋxH3p:\kPMg!Ca؁{r*8*}E\~d:"byoidV57櫀򦬳鷝f[vہ3VKvPt20K'6Nmx80#}4r\DHT+?v5j.T;nzf[+7Pk w{ေw_crY "c wÍ'6_ '4nX%CҩQ˹Y4[*U&@ihxU[R~N>냔| Ja;'Jg6}VvOF qWuA0"V_O"̔:/kV/^vB1@l!Qoﶏ,*۔xϫZ_)%X>e$K6H:7ebeCV$Z:AV}c4HX0;N.RjؽAh洆fp xoFO4x$!3OLJPgrp=5/857S@]z: 8 h*h"HOJ=tJ7XZ Oz8Th%v!=e- $b@RSPs}䜱::NbQVt" `XI *.LÓEBVce$&[U9-"9ֈw3e]k;mB3, Y4{(k>HMDHeq #A.~|+Ο_ZZDx6 nomw?F2c*\ou]^~&|ſx>y4W!vﵽmg_xx-y/iv*T\LnqrlJk(wBfxTTzo~H-ȋxIaTmR%pIǴxB7g?/?{c̟YK/@m;_zsAB!O۩n<ڣ>򌡬y^o4kR,]֩)$V W4b̲uPH Y_$,C@D!mBNB s"9?=m 锒 .9R*Qeð&]9p~-T@ql8bPmф[$79F[<*b<J7noh9$6)k d {re?zT;w[Rw w}ߓol|co3M+ο5/ >L"x&I[w|;]96˓OԧOl0ov0K8\1Tv'̙icM"L"<_jus? 3& íVdkuh0 x뙨i6y© C:r14{Bzvnm߾p[. km\g{uYPl*) CڝY2sxUЈ0ӫsιgz'2 d`@ a($@6#=Ǐ9ccý܃Ȁ@ 14sU;]߮Z=ջvo}z׻X R*+з_"E#~F Il^t[V\Y.eo1H'+%NɐGAD}|lv@k=V PdkE&$i2I2$fsŅ%La*I~4A:`c`%zsmrOM1&LC&C~ILcZSb؀Zz Ų-ۈ$BKNm/AfpQ"pdt=I"aۏPvI]aTefېv+ʘU~P8$h[L$!DU1-1̴G%e1v3-7"Tk\\-׺8ehsJ95%@_84L15_E!+4nў2 Vgsףa/z% ǻ%쭷.V;Vz}/#3v>;w(G=uLg@p: /o4MǙL>xt.}ۿ@a]aSmc3V= RJ:#_ZzowXG@048[Bp 0k):5nBO|̡H<j;Jl&/r'CgFu|m7Jս+;kՕV (Sީl.o]rg:Kc2?:d`1 KNb[Mw D@JnOגD4H'!;-%K\ 9U鞰f_НqI='ܸw_Qۦ͞;E|Wvyd/0Lc`L g0LHUnؙ~}1mj?Ʋ)S2}|cA9=eaXL}+>P]|$шj݂K %^#ets\=:K%,'>t?p"^?ӛ\™(-jt(SէFHghh+^gRON?:8鼲5;7}ќVvGA+PV#tC<e ^/6_{RH":y(;9,DeOk F%,q1Lyn`H4&Y"NC?(n,\CD T>ό>|B'io1}=T;Vqpi{iJ˷o.B>Z:<ɣOJʰui9EͥA& \Z4 'Cx'b/Lg GFN=K:\@F(i\TbόۡZ04PUn\Sނt0 ׌7sccZ˜803ΐ,2dOA:3̤E8əf)0 kBu|[蘼MC$bwQ^Ȥ~:Qd zWEʫ!)n;9*-̢GZ"uAZwXn&Pޤ6^V.L ~*[f*fHA4v(> ډc,莻 |'Nz3DJήStRA0 /ͩ@.HcŞiڤCC".P2͘.R%~ʱX䠓{)1Q1#Y~S q ViB߰ۀdJj߮>'ort'Zs`O}+/_/aFphmKۣw ' `䕗J_8 at2\qh87V\=: Sڛ[' sql$~2A 9`TKՆw#?g~I̹D>4L.7FwCLD*UIf*ܦȔG)&t!a Q)~ ܕ3l'J'SWAS5ŷ#BeqJ6$>r7DzM gǒ4ՖonJBN`_Ih.%zU5i5X3Ћ5j6۩in0z3=9e f,g+l!4(j2m~ӒLuۗpQabܴ0,)1' "?a]EuX@!*d8吐Q\ER\2vwܶDM;m@ߧ\8f&Dڔ!B'#!7OwtR+~FjV+<|xr^$#ALwGޏi0R!Ď0VF{[#$$ xGnU^9cYAɊf-:{̡3h(7oq'Z];4?;.O&{X0U;DSy+o5pᡓsnq:É kPanq)KJmt藚!ue.ۗ^G|q2fց". s3TٙX~pf>.`y)#`> ~Q*6Hq?Aґ,D1L;ĴDrխ1uhY<[PZii0I\H)BkFE pzJ~P % g)P'-O68(jPAOb+-pK b1J!,1a©B4=IdQIXjT6VVˎ_b#0ZitڈPR* ClsզX.ŞHi\G>.,OGSi9,dLOß+T"e3ǘjk I;f/Ҁ 8ᰇUDO$-mX9KZ>69EU-e{CK:<0% '/ҤfY'G,dIJȻۭb=s~/?w%O=._T>_;?2{XUEhwsgh!&Ȱ얇ŵޝz~I5'?ӳ{ҝ/V⟻<~Kf4R "U>ΨҬ/.^7gĬ/}*>f3 `bI mOv77myMVzde&1UOVO Vk'r!cWU` h8uZ߬Dji1gcx:^栽17\][yr;3%g}QI6͘,MZD(Mzw.xP'=o}cٻ/{k]`J1ЎQƓ1EH''tz[vUuLAubbɧF#p2 K,h!Ta$FJ:N,%!n;#N!^0U c4v R..OTR%UgV7C2, ܣjg4~翹Sg _n^ZaFIѭ/ +.ݾ_~̠{y_DČ/oo ~|w̥a3/Yy՝;tiCW|m[jU:Q;r7hPxK*5]̲HgkJ<m,e='-dA(ك>#"iuv[ _FMXMƯDs1S4$y٢@cjn # 75YW\z]Q;=7:5~HY$E )DiV3w-Nhc7K-|^@ߘ>D*jR2$l'Vn qE4igʤL^\]aяMlAUa4s󐻴ښ#B$:Ԓwmv얌ˁA}ҮkuX̰TBN*3dsp WM"+tvW5Ha=i$Z6Eք;k1{{={zG.9H'}ukpazloHReÀ$J1M&3UFa<tvF~|Qwt}{w<[o'>&"| GZ&$n%Bb6p5%|n߽Zg&ױڸzw 7ۻF=oR4r/?5 ˾ɥmfl:ࡲR<=t7nl(@W @!d,-N<O0U|AGPߋfp"ixRѥETBlU4btbH(zjjtVYкb=uQ >:L M7Eq>-Heey$q.ZG\ɚdyFČ= @&$l&Q;: X8˄x\.δ`ҧLVCE;J-(:ޖ:lOeT>: .3e zյA) soKqH/4y/kw_̟IOm'p5_t4,-:vSbPŞAC$-0[\0o:k~<f kkvpPׯ4혿bRG63(gwj[O?gx)/~#!Nԕvxnɒ5RFֽͭA3)6Xs95 *swk A$ X"lM:u{%3l}~…w KRlջ;hy۷zݟy>̷}[/pï-o=Ѕmƥ{[{!cx%K/VG0 v>ulE 1emE!+8E3ZNn0c@K*"'"2H"d1O5H+ܨXaf{©p% D7kzS fꦃ &C2t#5U_626L`:Y!$M2ݳ7,Z S;"4n'ɾP"[j0giaka\@,b\!٪J<6Tȧw@.ٔE[P氖Ky,něP}^ RO^y﻾vz$m5U+lfB8c;n77ovn'6'<@t7m7iZ]J5bF+7j/Z ^l)y -<|¨zfΰm.ş|$]@nes/н7h_C!+fVsB\&|g"39;RI+AM8.(#┾hb=`k XI.hL~O(.k&E^aA 7McI%3"blkl`4=L l؎DH+!)ꁃ+Z8^lY1o9Zv^3g~ֶ^ ~lao=9Ƌeɀ!7>i}ݫ+޽[H?; FB *,5ʰxz}'lm^y7η/1_(C^e֫ruYz[FTjG;}l0["5,>m*e765-5EFAlpf`bYrtj^)I:! i6s¸0~ :qtYiw^М${Ma~3gqg|رSW!\˭MΥ/ ǘY-@|nK f{*0H[LeUcR a?1RF]z% 4*]1Viя<ܤ@ev,{2ֵ5Cc-vSŝL֡ p!րNx\;3$Kb4Er;ԩT xo/f["ҵ#LA~aX@r!Pw:bLVR=eo̔JѺ0a4SYhp"ɛeswة"x,ކ{L&E,|'2]LE'*vj#3ckϴWf9~bd ZQQ/ fHs-ܯX21P6 >өk/O6|KR+֍3|r>w˻~=QZI3s^X(t6'Z1^-Z;w~.|מ? {7o֊ 2/\zoߟOrT&lI DΗ[ +Jt: TZ&Q+(MzuD9AWsAj;mR_hqA-8-]k*8ĭaԂ9ءJB=T1-sS Q͙}"AK$ǽ_vŻI}Tj-5GBclgax_e)`d=!(M]mp݊B,S{uXL$?`QBbMQPcyS(\xZNby/)f³M5n ~fsm:vVqF>y]M@qlFupaEodS0]xRN!dK0gg]n$}QmjZpfS{e]eezzP *VYCjT:djefp8mY ^2)מ]}~Qw8q6Ѹ{?8a:ΐVxW黡cYMœ4|_݁2vZ{g~拫vcxχ }CY'}' Y_h8|&XřA9pew^6zW'>g_7^vyF4kp:$\>jV#@1Xk]Tu`)=hb_SRf 5FWfEV.G x({ v]^(1?Y Tz*0f3/,@ڪvp(v8q2E%XZ 7&֡y'tu٢r=sRD֥f@ ,t̻+:QҸUP}P E(n0Nm(wkzmkv ~7w<Ӫ:j| CE.#‰Mq 7eKپL4Rʞ1攡ɑTn:ʍQHb!C ?5".KK,+ga~ktZl*bR2g;_{~k~hc?r«DNL2gN,Qs}-rJwVCr6yM1(g ZʤjS+/޻ۛeY2|z>xsy|Kd|?'SeV[{]om>/V1AC,#Eheu ZbL# uHAAQUF V +w;Q8 uh m bD(G5ͬQ@hJBUR!%8 F珥gITuւYnl:wqDMbA@xL()%4]!a=lU i):IKwң7t-}m+?ص, Z~Bwi1-N8xAa _jYe0+a&%8  &|i6ځq5UQmwHwJRPC*RE%;}SXN_V"F[ѿZwA'> /2txhDVcV[~LԲca acz3X2EK\r~JMv >O즈@ ?BY0O4fcUD8u7KJֳkqH֍@4J˜Ψ^~mL! bab P:;љDfTܭl%Aӕ69`R+'y$z4z0̱L:mot; ;;'jl:$TgJѢQ &䖣$` &֢R. 5 uZ>F9J51 )o G$Xɦ]br t^d>)y1M[WA{MLRn^k&O(4{>RieӐeapzB&4){D}/Ԥ's8R9c& $4>- a%?D5&΂a[ɺ(~+ZS#Pn}Cx< Nx}@e./*G/ߠ]#aJG\Rhxu{X^L}%F>dz} V*b6zv\Zc,, Mъ~/6鰡;]0V[^##W"0K 9 |zI_uCz%Z+kTK$pbe![d/{ba1l:82]qeffՇFlS( 2SUŠe wc3Վ {ؿԿ{8p~6hEn~R5tkz9:j"/nދu?+6ZO]XXI!D=zKixz#:[ڔHL\nja?h!IpåCvÖ@aBUHm06 %P QIEqxi9$`K&$KfCSk0T?6%u7t[0'x%KipCBI$dʶ>x@ #zU&.+92iއVgi\#A_ے4%ֆ p9׼PO@B Pǝ|͜Ln$t"8Du,D|AcZ ֶvi1)My})];Ttp]9sEqw20H`=8R4aY(Mhi*bLgٓ# kD.s"!.c 7ekc 8ۂU(͍uh[d'``<&vz]!铀 '?f2IʸEsFuxm$1T螷X3[o.иX܏/{ʍlQ˹aqc3lׄYɇ K&OF-oV&GG'g',=l95V7vˣ=՝w')|UĴt$BޭzWmI@mK8@ӵTPkd< c 8^-I&k0)7H-[S[7[<*tZ/xԗ=,ݤ˱ǥY0׹'6N  YkmޮB wi{}^U ֘hxtQQW;E\%Evsh4ZghSLޠUirFybR%24Hg^6c5>5e!*TIq>"ZQ<z|4M4zT_jq`i2IE Xɲ8 P Ⲕ#QD7&.nKwEF3y26MSX5Li8pQ0uSs?^Ѯo[W}Q\i2EL>헪O.C"!Ӄ-Yx|2+c qYP1b~\HOi#=h7WO{Z UHr&˝\ L,z}P` >,#4, 6|"TJKN7v^q^1sƳ x o 5K`l=yjrq7Dɟß_xٝ :/1珟xٌai}Ӿ9)._.U#'xˏ~oWYV{'ʹ9g(/vWkZ g=Oq2lj Nj_?ubQS%ЍA Y-7S!倖M377]@K:=l0 7*K&p$كFspquPn=䫮Woߍ[?ڭ?7_,7b9r&q3i sȁΰq<\^[ ix,UH}կ~kw~ǟM?Sż$,m΋ gH JywU׼y{Yf X}2VJ!k|}VŔw5ԁY(l'M*tJe^! 'ٹԼY3,s+P(% ԲݩY 4%LC[J%!Mh JNDtV4˝5ʟw`53;!0T5,M`4d2^􀠣 W'"VĘ!֧`5k,e&HQU0y4rY,Wv*Nnw7J{ۛfqgsowX.Vc0bKz Jƣk2\UL=9 D4hؖۊ8b Pskr>-@^kl R0D9_Ey R^dЏ1pݮ@& &\y{ munՅ[٧^c >)m\(9G{$,`0e.\4qI4$Xdq"9!~(3}ב6S*ȥz3%No=IWVzޠaQHkn3U)ųsifk@x{<'H.>/<|o}F̙vu?9>~ > kWv|w/xf~cm|f>[pbg⁣/jJ{-Wx^C'9_ޢSucwŒqٽr}K)QS([uvtұB`VNs CeO=vr!D4Oi2y;ʳ֡HM-2|%zA hVZ|Q}nYǝ~.} "}cAV )4V$%5SV3,L%3ً:?? σ>M7&tvJ嵭fkXsWw^Y~ΝfUo0||we+_~oܸvݕ{ `^f,oI'qԡ`Aj:bٷ Bp+Pa5(-~ǩ0$RA5w.G~#,/Ru}lF]6l"BP u4'S"tL4r-~ߥhdzQ/&8QUs, hݥM% oܢoRlP<#^q,_~gȩ,غ11Zdm'ųcqŒ<Ϩ62غշ_O Ǐ~C+5ģ7s[7v:C3&/pw{JX]qk/}XLmkZOo2:_{?g*3 eXK);~B!I?Z"y3sJ0 3$dIT@h.Z D`] Q3SKvrS.V.= ^vp ,ݜ7L_yVbF@LV&֮Q%ْH9us0)o\K/zwZ;A>t lW#2 o8m琉@Y#+, S%}EUw`SqszjmjJV9 &H Y;,l'+ YK8ٚ0_* Pûm#ȂR>Q~PHj>e5Yv;gN]v:֙ln)~"Нٮ_ {Ż[_/ҝrdnMצE0^Spڲn#Ewdd}x%eFF9(Dx,[`$RC5v>ާ뻕nT'bV :n]w ᶭ)t FlT<&Y-ltf lˊ}#8 5 }E1Ei" cfn[8Хt:^*b[|rA7Md?xͭ;JE.n:K4X|ǵvQNX1su-Z0 Xˆ/w>KZo`> _S0;5JDY^7*dt*Q5wCNhR[7vw{V Gm^ޟX[Y}T1\U{weлtvo>>C} ˿󛧗F 2/]>R=fwYݿ}{x7vŝ͛˛߸e?ˋϯ;WK2 Lf ruV9Үw >IF䓉8WRV I n0"ir$;A{( i>[P6ݝRZk"SFc!j^vZV(քcj&. ]@]B%05I~Asa tAm;LDAh``ڿpöa;Ib*H"SLEdۤ.r<7}^kw+c4@[h0#=n&M}6}s1fıh`.af%M>"R˜4S K.Tȡp_eGx^茛+w:6rfH>C^'yм/p[Sk S124O#9[ڙ2{hм~A/DEA]m[??o wFƌ KtKG|H0" $%x83)(X$\*F޳hZ1fX.La 0V@> dԶW׶tzdgZq4VkalFL5@ xqВK6&cg}MZ@G|"`#B:'DmSYl[b) LAۖzFN;\B G>}h@~fF25 LbP0A1.R8!sG3dKSg-E<+]oXɣ,ɥ䡂 jXnmn)'I0JrR>`d߬/|ACaePl&ȝѝC?pީ?.|sjO>x+<<g3AF}B4nuokK=~wg+{}Wm7ڱz74￐("3Tfϔ3"%[MP6`MEęw?w"j76RZ ]'1V9՘ "vm;ri^G$S!k.KCtK'c0[!A'G/ad%Kͺٵ?N9lj Jի/\tkl;>̇x` M%3B:|0ZHfcdx6\,Ԫ$`5 ~/2[nZ$cQƙjz GZ?1_/9Ɲ~-Fb4cCnJmo ]fh[<۩ P=ojʐ[wjΟ4Wͣlxo| -13l]2On#oMKbcSl[ qhtF;7%Z-g1 @}R?M țΩ[wC,"dHkC}Y 0b| 5(gLaevr=G8>k?n܃Up -'m۝B̑@,aC9PW++>>erqŋ<Uk էko|j@lXROz3?~ X~8G;Jׯo7U]Lz-gVn}֟ \)p赉Xo{h6w_Lap2NDlQ〖Baβt]-hI&Tyk&!eJ .0+@nPcW"c0{Kq8h>Chзl6-3L :0F^CQlV "- ^F}@H#ocGVscRyB00T"߱zBn O!/c x̩X!,5:i&%(XFM1F3܋VjId`$U RXyf} d$|,/]If^3/3f鐭K wJP՞l1ݷQ\-(|Z<U*V8(;hؑ(auMA 6͵Q/_LfG5Ͻ^|3x Q5EzczmC!~wvWVNvwKR6v7qg#t̜},zh adjf}+hW ׯx~ܟ|c㷾[;eM=_RӆCgg_|n1Ft3 cP4L)NbVuf#y7(G~mf&hYӻ6 DXv qK}&q6m u ZtP-(.P4CSS_2U:d[k SmdXWIJEISCu6Te;V#T;yS'' wqMX:šbǖNٙ|"gl"2aB t& sU,1 uI`vw3\x=pjq4P:)҅ẉ}v9*[Գ(T:q<W.R1^~g~5`k_ &K+ɴ=4l_mF)Wdkc[_T춷޲,Q]Vj"atwmc 7Ĵ0>JFo%k2Ȣ,`3˪509nե+dQ İ cԅk:N]L,Դ~DnD2&;WXS*0^g~6N2V!J" 9~l$dͷQfQ_t6/./^iz2Qx6aaƵX1P۴fk B mc\ [2 =}dOjOL0l  4}[AXzznfyjMISwkB/uvSBwg%y6hsChPN *ZO//v}_y'>t1*&(aw'{wg2"̍24Vɰ1ZE^YVoBGϟI{׼?|bZ%" $$( 9+ݿIB!Efb~|4*7ZLo{ g9RmH xs3c;vcΞXy]TWڃf?sX/FFƍF$lR P交tۨ&;+kҤ4~?` i)Q/{Rg'9&Qx}o7ox^n5BC6b4ZJu/|m$v~~o=W^D9 )y#D:K&9uCLL"dž# fONjk8}2 ;m_bĘxΤ}\ՂCi"0LLlUa4V`,eV~RVa&P6⮚@j=zJg^jf#X=VXzͽfhp6ѫ! P*wQ 3(+Q<u&é\$Ø&2YgC\(3J1$20 0i^7LDt&e-MPH] :Jw]vgzI$폺6TH')FET)[dJH5̜ewا:` =Va$(1I.F uYD09DC&CD+,põJЊ:"Gv-IeLYF>t[5IBw_$ؙ8V;ݕDKW9,kU\Baw;uw@+7:k͗Cɼ\ Ynq=m!{-ͻ JF_?1@q/0+RmQ}eqW/};|YڞKP7A/y ýEjVMKmѷ_ 0unQ8ـ3G~η?0[He `>bRqD&$iKL`1d&\*rov"kFdTR^kc=Mhd1M2 _tK[vZXj D Ћ4/ua/~W)KARxi ó-2AeSyTU:F/U~!dHldH.%+bm"p)+υ]S7$Dp!y3HYRʱD$ &NۮT&7V[;c;60Tj$Upi#>6'2llC [i8fm;Y;MWk:p3;&10Yc&TšMmۦ>⢀iG's7ѳ&p!I"K\ݾ} _L͵'ć{S@!%5v OMᾩoL9\)Mtf}^ QoӖ(mN3[88X`h,}nA9!I$5f'K/.{\X-5Y._ ;͛^xj5N,2Uac`VH`4B `QUx wg|xKu`tf.:O:7>w?|'b '_yńhؗ҇ T/ͤ pbF' tO:Y̨EsYZ^/v˝.oV˪+s6͘Q%',ǎSaz0} fQ,Ym#3P'TwrЧNFI <״0O[)MCwʵp纰+D "kRR $7N8b7!XDV^cl{ .a,0_ɘ!a:2 @6N&woV4+Ϥm~ZȜ=dZ5=]%faiavO.gGqӭEtDC(8!q!z"E+A64Xɳp[gE(aڢzk7&X`@~ kGHbąwMĈ FMq󔟰tMNt,|k*]xH3a+c%FI}2%Lܪ3Y[~IY eǡ}Ϻ2@:;ʰFտ'9uycxoZݾ}y<3Sa\6}o?w??㏟lkHWI7+'t4xj.wh>;3J\ qPB(I05V#t%zw<'khHNi ˋH4q‡U1JuK kT [[ZMғd})*D"1Uג# -tgNk^kzZm\94^bOYU2;QTQk X2\p"O#z"0,QL4jCrBz00:fzjYO-fg,MhSHK$e6efY"MH% چ~lnHH~f>⨜C l&)?3Ļtvl_PIf}7*= jJed&zAAZ}4L}#u{tTfzj[7nh̥.(",>b P(Bs?lN"R:ތ).Nii E/7+gb4ĵji~RB09'>@amTh f想eFl. @ I$=V1^9]jy7n 姞{P;1T:q7>g3tfn.("d-"(UTPeRd.efs3\27R!k۷6}7ˠ4t]wv[hPR{bsi!d:eD#KIբQ-͈oC*,5 rfĝu wzX-DQn)WȀzzyV0H(M(RZfJ=('%l&&l?FcmCjXGQjqkdFH/3BߠNH1\QU"Icd$1T PN TQW8E vxl݅z]e;)qGDwhZimRXA^Fd %{ט5oFFh9 6Y"\%xd0ZYS[L0ؾqg7Vթk2?{2G9XlЅ{uW&J~3G2NS&\48~NdJ7w"˵ G&{ͯUGKBŸ<3ZLf^"Gގ0p}A(a4a5Yk{zoY䫟gx{ 7F+ލluWqAxV -bYv *}]5}}щr0~`uo}7zW~}taECk4 Ds^mGa<^vUsl^2FR$֣iiSt+/+R{Z!m(L2xPWғPډkɃh.UK7ŕM D~6m8U:T>FbhY3Lb4| ?l3IJ؞i ,Xivu)_42*qL\ǧbƣ}m)J .W"ys`ї2+`p}-dV5n\z DeLW{P֐I+#`Rۼq]L{Kq` kz^iZ(`aP1w>5".1bGL#a’/O4{ڝ;Z |dB7%kmBo`*{tK4Z_okySE{ FƓCncC$@kۣ{ +oy_jx%*?y9=7K??p* 3G٭_hN"s~7yr6ó,h &0*`#^J6RD=*JV (dpԃO@TseB@;dқ)Ƈp-pU5oOը-PerPHk<8ZfukJ246@Mщ`Cg2O_kKv[z:nrqV9!Ӏ4t (LiNb"8L G'8,=k6ezӧh ԑ\|f1>_łl"ȨdkKUH\s ۸՛fΟ"2n2|MsYuq ;j'+%2B# "R &DI1Xp=k We@CdܯɴXj#^6S8vCGD#3,iHCym޸ZN .Tnd `e!;э'E5$YcscoV,̸dĐ#sNfc;.$ӣa0cJ -Zv<L 6&'NzM_IƷVB~0 5\02n RgNVn?6V4n!{ƿqoBp>S3Kj[16'b(U# byԪ"O֘gGckBt!O+|B[aD `90q@SriԬ U[MQq/N}EV#`WA/:6p`6Zum*FD%VU1[ZoW;a1%ހQ91WQp* ̰7q5 +ެzeJ֭@sصi&v\f\YFSpR 4[: ͊ /&J$:Zffi1e1Z$0{XؒRjG;ɉ4KPX`?-=L[~:A1Ct Ȱ2L@t_6ë́Dw U%(ɳ.21ܳyFK2gcƵ|$nC@!*8fо`a R,2k0L_si\rqf$BG&w~f JY~bʥXp(| {,0 ?5Ehgo]ͫ{Q#pr詜fƳ!ZY,w񵋁 rn6Q8I1p$ fJƄ <{q۹/vOl gC xw=o޹ꭓ| Y czjSy`?V$OG>?}rphr>QEA@Zmc6;g;(Ќ:QWJBB0cz9JA2`lC%A9Zt0[3۶{Ba6pnoY_]\jeTn A>a㛙^V7ufVij^qo'ErfФ;6T;__@LBr0Gf r&%Ў9ʑD;ɽV3LC%RBMZ0ec(MKɹɹTI& onZU܇u$ă cӇ/E1R BsR፻;WV+ Y8AH(lY*”5xy|vG|)I&f IshGBV9"zJ4V3~J d4GVx:Y[s)X`V߼v#(iFuI:=tdVMbH}bӡ˦n_,:/쁂FZLrߜ~ةpfp4X"s>?@hEVfB('Vk~NFfɌg5Iqטl??^}PywL2s…@t !4vwvz+hX;?<:԰~=Ebn ADVak۝q9>FsKM(.B }a` E1`M$bf{ɐW./%>FC`Q䑸~qp`R;Uja! tZ.5_t@zZe}{(P%@1NSC  '"S+!haT*6iozL|̤C39vy4'lpzYZ$%H5bB(1*qA<64&I]YT_;qOe/f"D54M~ALamBnZ:?rQYR~v]l9yzx<2|VRm5mFx%}ʪ:-gX`QF=.A2~ \SZ2ː;`ǩ?jL1WzIܞe T wk\HuI9(quʕ |M I)f8i RDdՂ)fC1̺w>͂d‰h©y 0I}$fGs1/Y oz]M{y++|oRmGœO#u@ K7'dwg!GkyM/19珞J24}PIĨ=XLα<8?3#=\&Y0|[_}~ObU'z_yD玞X.!S%y"*UP _ZupOS]Zġ6MlBת[m $Sh I= z4(gѝ($IFAD-HYIƌWkzεWM%O2MpJfx]m47˭ۻֽ֝^ҘBY.XȄ3 :*.3 qh|ᨗJ$ad$DK*@#14zg\Scd=X0z<`n֝j:ᔷ%Jf*ܖXU-J!-=zꝕx&u2~14(̥iiJa9W?Ү& *t"H  Z(4ƪh|'^eB:E1֠uS)tf['}N#Tf1J#Z4p3'XѴ\4׮^`ӓHԿ]n,=IDATTbn p1vpe 1[FLr;J,dG9p&8}hb~&{ -$oL[T6I}3Q>D<@(0np+6vzo ߛ&I p28$CTWH\xBbtlI. $bY&%g?>ckD6) [c1nZa8d-`H"fB˶*2]Vy댟|^&o#>![:{ٳ~1Yhv$EBzNy7>6׺x)N [HD'5{epet9zT,1.de T3XDJ@fE(i0bAײ[K4-cIlJbur zY!7W`p K.YNb) cr:WP1%T&mq'|qBg 2 -X1R܏XdS {3@={-ppė({OtCuc)T?ų/-O\B&E s)4+Vf@jadB˱VSS})%a {iu)mjQFnU]Vzzj)A-Os{y!7 uK%Pٗk&̞XН IoG]μ\|~]&[T>#Z87aZ\۽7SiM-d7,"eR{`dE-Q6mE,[E 7_o Kͩ =6N  8"թ X$q@%: )j&q [ybj18 {6(/>pb>lf9_6}F'ky׀0 d7$BiIeWoL3x.Nu'7h~B _:xҿ][IGEǡ$}ɃMǥ敗/y}%^7מ{7_oK٫cG/Y=8x2`Ĕz(. u#-! CSdKC98;Av;Wij,G`TMaݩVʥ^ƙN۩h4M,6FҾ ?(NLbDT7Ţ0΢3B0+ٝ?9`hxY4^P*`$mȋD$t:Q2Lװ6#h^!L97oD hfߣ!8IG%+S"UV%)@ !!.6 +{Th:DZ'~ bH9[`\T{߹E~cحf+pb7C7:_(2&Tl=z;Fy?뷀2uv[բ4FgU2)MW6Y4\R4WO%KDi3.]m0݂뺜&S$H/sj={^e+>TŒbn-r.8DZo<]Jo9kc|(PYu2lܗG^oTߜ4J^ݼ:eC#<9P<&Ln'#@.HF&R:hūn-hϼĐ^5/ CM@?uK$&^*7,q+kzvw?qvi<#h8] q:80 40~ gyxIrmITTqٲ(0Kw#-Fr/9i>LчI>:=)!^$@j <4ݿ2F*M Рh xy<#k'ѹO,{<GB(7A `xu1/Y}P"U@0i{ .z-Cٟ#W=LkHls0:͢9/!`ӕL1&ӪoM r\`l'CB$Qi %3F@2Y,Aw$?rv6IaZ]Zب.xkH8 ' UiE3q4XG8kn$<ۼ^H_ t$y 齖W4. &q0oRIwu@x)ϥƍRn۹&G?㳹^r}Ɲfh];A& %و5@!Ɤ#PdtalL^َ=ԹsG+$8&?+A7Rd b' :4F2d$:PhHHi Mi-,Sh$nU[ ;Q DXHLA, XP"K(핶n\QL0XlݪE5MLK3 NVjy nL)KL.."M?]*+9t^Uq0-wCx]B^?*fzU'f%F#8G;WN^xvf, Kk+g^^^cɯx ʥNi>??9ɕ;7FIBA;d] S (VD o̬N]ΖגQbT &@@D֣)Zx}ar$WV؟~`-:JNYBWhU+[w7ne7^G>F{ o! ( o :D ~UhM3JnH]^oř$x_Xbmۅw=ʨtKZ^oY'Qcg- J S5 g[42OPaY0U [nʗ~Jk[V,ԨV%v 9NT5QhxaښT$ nY3y dw[۫VFHRGCh&Xzeqd$2thb[ZPboLg my.L+"ZơШo$9&\3(S,17ok*V-7I( ~O%t4,4յM)"њ>(90r0{kY0 V|Zѿ㻭XUiq9'uɖ>xHBƒݍ@W[o?O-ύCyX[4$R,2ٻ .#>k5Eor쉧?ĤM~>uK{S{ߧ~[=##`v1|m%x+{W7۷廃aŋxG:s ChK `c˴\ȍMh*iQб)KԺkcΨ[JFIܹr`)qCPͷ?2p"*8qohai܅:QjHCǐ@VLHÌaJ

MW.jGOD9~\oDCڧ5~@&VJڳS"s2Ki|ҩ8}6ᙳ#$W}GnujoeR"6_+mɌlc'OG-, “*aHbi&]u)\;de "R[mIc1?xL YRFZxz`Xھq^[{רx`Rͦ?`m`C]vj @U.z{iqE,}:Ν{ǡR~ ݢE?3n#xh1dh Tjo+G3gXo} 5,bwe/w>k nlqՍ͝/  49y:x7_LwJnި4GN/$rY5ĶS5@YT$ZTYŎ[ɄSkf7`j{)-ԫ/~M"eyiBD!EsjpW"F8n=Jk$HnE9 !~I԰U{|>YǴVeɀ^.]X#Kn ib8MQXI(8(m[ddCa&\@x5m7E }aD`z-ַ*KU,kY5C8-F3@e$W9Iz"N5#it*M 4fGj1[D,cSȗcRA:n ̓WTf"T`>Z-7t2ސj]]ƫmMg۲1]k7KW1ռ;ŝ78-9?5/F,Z1)܍j?`")p\1*PsϝBvp1!Ma?@ 8b؏rIENDB`Dd 8J  3 A?#" b]^=%j&n]^=%PNG  IHDR!{DsRGB pHYs+PLTE     000,,,###+++---???888111 $$$&&&%%%>>>"""...222:::333)));;;!!!999555444///777<<<'''***(((===666XXX]]]VVVAAAWWWYYYJJJ___SSSOOOBBB^^^@@@NNNGGGKKKCCCLLLIIIMMMUUUPPPQQQRRREEEFFF[[[DDDZZZ\\\HHHTTTxxxvvvzzzaaagggoooppprrriiittteee```lll|||~~~cccyyynnnuuussskkkhhh{{{}}}dddfffwwwjjjqqqbbbmmm&yQ?mIDATx |RKG[->P}HBX ifCV}!JV: }e˓Xc3Fm͢XNY=w$ |s?!ƒfF#esιs*&Ki@R5]0V5.ppRݹ?C6!!]k&Ft][Q6(I 4Å:c3 ]IEnfS7M"acl)~lRQ6#rl犞fl f(TbW;c3v}M*T"NM:2?4,JTSMSśֱKEټW I8iOrQR$)$Bv0T6lRQ6;t֛Ԧ20v=iCIL3d{f虷ߔ)T$bIpu6i=i=[gˍZ8CdzJ&e;I0kp(\GHd~KbVBыP8Roz&eȐ53SO\2&2Lb'fC CV M ת3M*=f6ZZW@&,T4|l: {deʒB٤l~6hŕ򫍨lrtr)V>2x*+˯]/VwB٤l~ʒUb2c]>q,VTTTxDZkkwꍫE%+W)T"E)^TTYt1 Ms׫YEUWKZ2'hRyꍒkuw lJM*潲U]^UԈRf`ckET]QtFեIՒ\~~WO+S6(Φvl] 0/9S{/:TbSZT7VqZ: T{!G˯VVUy2#~"ߞdXXQtjeIEyѕ/+M~T{l!M-TC(#yҬ>SU/$?+SӵDM~T{g τz_3ͱLN(v+BkPyMVlޫ #Txri].\t:sŰ-i{beyiUy˅nRyR+%7ΟT_E1ID&Ge u_ͺ^~-Zvܟsْ_WIIZ*潲z .Qzj$XrBNֵ ~>څk9%/]ϼ+&<JiݤlޣTuqigs/ֳop Y%EKf_+V],ߝ~T{!=]jVٙR3_`l\uKgoT͒ g177.T|ɖCLgdÔeSVfil6ΦRqY즦_/JފiѴ *3KΘ.q1]ÿ_q_0>K%*S/V"rg %ԯl6*(Rx<^u6'3&?s兗/VxbҚzBW.^RX`^\VVV\^Q!]3d-J@fcRe2Z (RAIsB9i3dX+a|4-"A(.xٸr]1s\>>}e=ٜu\s29934crUЃ_ ]k)`Sv'doe9l?5:⯻0ilȎۏ%'M>p?wlc~2˗̚5mŒӨԬyE8E}ZfʬV5_0nos]]_ŧ_<$c0?47/߽Uz9 :ԮvMYx?9Ygw.^&ƦL#╧}/Q5^q4㴔FjFzr3g/>qq8Q}Fk%YVVG/^y7/=Mհ~e}:f%*F>̩ڦhI74 P50p*mvs {~󛗞{7T ௝lB*.ԎtbENPqujc,L#Zn2<ͧ#0I(JV._/Z]Y}\-s%Pϲ ؙبO:-}3𷯼B#ˆQET:NKlM]\|R;|6ق pn'e06̣<2백]7ll\]vǎ]՚Ix,:[Ұ&0G>-el^y.& nvៜ-7)6x=.ij,D$0EW'/V'1 MEXeQ)Y]l>>7 n2-/' FgFAcd1lqh!ucI2beeȕ~DZBLڴTsڊ`IC^@:aPs\G^ލ,aE'ԑO7BFNP+AEټc &w>|;2fX./~Lhҥ@֒؋^m])e"`-U (w*ErZի1U~sFUoBE%E[k3o.](`#ϳBEUut[HP>FG)T;ihZrxx/~]T/9q0^N E0 UQXթks)CxEB&5?- ǞTT;&CqyiWl-Qd|Jjr 7$ޗ {2Tͻl` 草e_y` z !cǛ \XoJxdlV\>U rDR;aѪ]wAEټCfVAJZ^J^LKws R rcx!9!q7-zrsrss `ü E9/ eNb͍# !;'o ĚNY78W(F&ca;i`Y2q| ](w¦ ɓ*v;_9ڙO]meaLi϶G!cK'elR = {fꇞDa1!@AZJJ~mUIӔ:(B,;ev2BH z[L;(g[qyH8og7²㼦2\/0?9eJJ XQQ6@^|34XSNoUHUmmO񕚪ۖ_*4Z` Q 8(j1Vk YuoyCykRY;1 8$i ˭1oH:fRQ6o#Y 2fN?[)Yr2xᑀΟp>;5mB>FV,VSB8-eʄsgdt&uʶ7w9sND#{=NgeFy3C$5bT| >**此6nL;ƴ)O5ܦMϝ=q#8fnxWGgΜۘv.S,Ei 3UTYB5my1ĂeIj` S/@";3gOoәs)g6Ie#jX9&Y?dd><~7cFXVY5QSLkSnC쪬ZceKӅ|3ߎHKIjMg2vgN91aW c#\ׇ}&OVj! fQ$k馬RD2-0&p%$̋ in(Ϧ a/&Q3nfife 9">s.#-?)o;sx3wggߘ{ |ZX$槜>_WgΥm̨9NnX#,?(I 6 6ۙ!F\eV/daլZX[ M3_J we(SS_M^]ZqٳƔygS<µg33ϗH`goK gWT%P )Y(O`ʈǛJ d@_CQ5%-ۋ{VR5pRz+ԟl0asi =J =CVHR@=Df_zM̗^y^ <777-WFP0ÒN}*`yudw>SWS3aV\X-?JlX={-.ΗR-c|)l~C:ʌ+|:T-WZc5 YT}%1 2 383a^b fY G҂a9&AY:zƓ3m;6MW35#~_!oa:>h *TK[v' lJ^dZg*ZzZ@|Pdu-tz.TgVky ӱi$]c7 Է~-e{m-Ei0u[K#5˽r`+;F0iKRMZCB0NB%`^fJ yll!KdZkA=[(;xpۦӇbڶ{7?Ɠǟ4̎8=W?_{m ;'7i@{o\ RK$2(^fHf?HlgUaFwdT*a2ݢ|ރ͏7(@,IeM p&`x?S6oƋaK2pD$mgl#vܶ˃ְ~ ;B.>;yEsvo;}${PtU(fwc)?͙g<#h5XcH는4b ͙"k qNhOz30@PH li>LA}(LlMJ(m' GɫKe̻Ge2.EEFsxdt:qp923s͂K(ӛ<qUmqvBMCC8^@Bq5..'3DF@)kT3e ,||O7P:5Oyϫ7rKl 9_HvEt]E+!ah'V5_ Q_BW_l SֱlVq fT<_e`61Gr9Gga֤`6̧Hiʳ<S͹9<2pC~6=`q{1gg<w'C3QFMT;)GlT-"(+{kw!UM]ao Fzֵl2|`naUL/{S%e:ne]1 =2o))Iɠr_f?. au̝,?-lY\ȁ#:n%6!7*դl~ ]]|?&I8)}KSA((=|eۏ'r2U&) b2B`A!*EflJXP"!YwqZ}#!\,)R:2?ʡ92 x0pE@kORL_ y {෇qڤU/N9}҂cWZ8e熝Oi gv_0Ԯ ߳axد6ٿFEܰԞ 7v`yD|Z1AL^wM'A7?C|qZ3i_d 옥W;%0HkMGo5J96Yf$Aސ,֐I9E8$G/l~ly7lسgsLvڼsr;7w}AZ 9]{j^!}[xTs]{6mtl.ʦ!f3`ϸ ^&qLdUM2Ea,f b{xi&eywjϮ;.n6Trj Fo܌]Pco7|,nlp k6} ̎@V\@xɰ-ܧ X!A^Aͮ~Ηan(RІ6i`SBz H2K6 Tx2ٔM+#Ć]lnذa]v?6_8aow;ɞ w؃]=(=x=!`Se ) ˹MXx-l'Ic80u)H | Ao3C:c1( MpO,8Bt5o7ei:Kڿk{w<9l8tw+q`pC6yO {0u}TovZ2E+^$zK0cj9 /o\B烨tÐpJH{h)#UtIU$<(}OK%뗲+.\ndkGjTi 6ɘ96efg.g\9l!/Ip$bӕ ##̖)ʧM"?kya#^9my {ŲT&!wwݔM-0UU1s 4(ipMוWbʴ5`,MR 6}IWmnTLwkMgIugS\.^T-)d1 \laGyx?[TsHwc.$&l (\oWd׆c)]udG_0ME5dì`ŨRM:MUżYlVMi)rf\ƽ)Ai]2Pu>-LFn|YE֭Mvˆ@d63gmF٤l~M>RW{;rd6{Dh ڲyݾP&~@=rt!lbl` 4o`cjI6{`Ht;]. 2I/B'BXq-%{NJ3xNza*>*Պ7IbG٤l~lێپJ^4c˷ް=cO! Ř9^p`)ݛ-fVMPJ?&J.'Spӊ %C )-,uIK37&cշ}=GOT?~ՀGUoLq6'&ɺ<3W1`fB rE$)1^4xâmð{ 2/ eXױ?P6)?|)ZƷ&;ZcGO rtI%پXKk9L.P"JȷnGֈ}Zk,h%r!Ϟ/b^?\<^rlױo?9|aŴG2#[ݷ#9dkؙ3#JbMWZPMM{{5Iֆ!e"5VX9{ pnNDnWW'7)?|i3vaOuO]/yノ9{žp=l|}'ۘ<*\Lt"N۽MO]([128YK v9V}D&3e0y)ӧjS74U] jݡχߒbLl–0Eӣppr cOR s%Ɍ6%?n,(K#?0,!nOKK3LC5^SxY"g*fp]QkW)f2k:ꆮ+^g~nہܙrKҕi8k8߅M[`CF.?ZmGgX!ɤ u%) i0lR6RT_0 H,zs@`snsSNƁ6D z(cy\oy&}-<`]T 8j?d٬3r >`1`J!yMC?\64ZfC@WaOylO٤l47;e-u}.j-Y[뒇2?)[ztX綯۲nǁ& iX̀ !!5 é);6ZFhQTN7ƦD5y@L`F1iPpR6)?6ꦵrv<:sk>dmrmIt0cs<?>oUk׶֡3zY=6IH2dl/2sl*֤ru E96c%@i!!yO΅d$&e%<4ѵǏݱp#||tK-:IG2[w1݂ٴP6n=~J }>-hRx|4urvӰM; E#&BqLy̻OKI7mݺue W=w?o]wڵZl¹֭fW%luk2NgdƂg]Jy7XFau*2SݤlE6bӷ؎::c;?0pk}oo?e}k[Øh;غ-GwyӲ;XmNzvS!&)ibtWv{&̛AjAMYl5Czr`+uIɧlR6lj>'@^{)\/=IV,ȋ@oe+r(Ù0\_ߧH'jPO8ۡ ?Ͳ_2`R'n78' fJjr$Z>5KS1%ʅݫijj?1ۘ :lac&Q{=6e& 퇮}/Qg6 qAe`6 vpw\&eG\+gc.UY?e[p&25izYY]'2PTL&$fLJYpIw1I`lI/>V2]o$KmnK٤l褕<jDj=f3W\j?2?_y;[h{X5}|UwDmMnxg H}^`/JFZClJ0a+|7)?:˿9ӼGLzO9oW-ժKILVL9:gU?,qW3M[@clB1$Da U_dPB˔4aaȳQ6)?:)fl6W5y v3s/-^z-7<٪uy\x@:v 歚\F}ZC>glNVM_~$ښ/y 3N#ar\)jV.Y9/^ 嫾Z1bWk_Ձf._xW|öA{Zn}Z@a6'IܩĻ7:=-0:MX/t,Ƃ^|WX3|y3gvH66;>nǂ$Eq̘vP+cH{rꐔR+ ~xCXBǂ(?>vEZ:L;QE |*RTTiC6]ϐrE>B.Y$֛CW:.gOl!fcR"tcN]15 RLU8} ˪" bb~S](5 .u ?_1٘W1ijzլ$cH%v )SQJJʙݝN[p.噼sb֊+pwHMؘw&%MT.jlEnbk4] -3 IT`~CiM&S*`y$٩ݤl褔j%K6%s.j٫|+ZKV,X0u LI`!ppşB\S.\16,rYN+N]]rKs(z'kYWSW\pjb4>d^j&B-eG'YawKhD))3&o7~w&7cw7&6cE7Omtu(Mxk5Kϲ~azqZ|ynco"I& e,i`ULPFSL]+*9+4UXWV]I[#+FKV'c{z!x3xoE~JIaR>+֖s¤>,vq2;4Ki3֌IxtL@ j(FL8_◊%MS8s{ݐiIAF  *IWrWw{DgK>}M !T骩poŐE $1IK|^!^¢b]f4Kd6;ĜtrcҾڏ0=I~p{Lei2=c@@khC6X%jnvqY 1H?Iݬ+JjSS6)?T|@?~7zs$9IsjxzȹӖ>˦\6y+&Z4oVf-XlߜpyWʹWQ:df-!*  ECý 1C|VHu;vY>C9ۜ[y{%$:cZT{MfWbuHʹ+x ?lR6ȒM>EڻA$[c \'Z}3k֬I˦͝hEs-f?ϝbY zAܓ{s]H[1i$<4wefLo4.#San7`8Oer!98~TLHD{#^H8ا[$I>]4ϥlR6RHA\ixwdNqG\IO4w5&/ri0rOAjL`n(6 eO3m-\V]{ڙf/?W aw6g9 fSe-Vlypη%C=*Ym7 )8.܌xm6GE4g0M=G6fKĮ$ԙMQ^vg4q%6=z|1{%)Bƌ, X$'_3w1L;iea?x_R0i\tW.4cs=&0+!7["IPđ&ݨQ|"I*0Q.+gL)$3CK2bL~!եKL:xb*R$l66#-+ׇX~&OdüstˢKu'6{PJdls &}dhx7Mۗ#dvzppx0GaΆS[HY27m<38މ|<#HlR6]T2.3=/nK:MN` ٫]6}ڤLṭr Yqg]v;~8MG>N]YW.,H2C!N;]";*l0ն ̕ؤ`~A\u7 g? WX'%}s uNRRy4ˊH̬\kNգIxmw<$K5hTl2lzR(tW/P-tv!.UEfhUo2 &2ș1fPydȦ>5_Ax =c^2n! Go g}A)!!S {gz}sx/6l rny F?0rK$4cZ;h?#"9pfs'7m:{mH"la@ׅ#n A?=N%>G]H-𨒴ˮ,Yg`֖y Ώ-r*`vp耄5I÷x{PT"Κm8$>p]QZ(R[#E LLQx De7```Ռ?%X&OrTQ.?qѢkL[hښI_ of3_,؆9{\7ʬ#'YG]I*#~8s &~H=kC?3-z`8"SZ(R`BR0pL|h[387J^z'Xء^ɟɗŻr˾) }n=6b웉͟4yo\tuJ0/|*I*.A༬,bݾB$Ky(4G<>.sqEU&d>IeRV$)]@>?]b_̲@5֤ zQB! ~%QxaǺ r>F^'(%3LQ2|igL;}o-dIQwc>h7؀gb&6o'MZ4}ĉ3}5 wb; @ x b*" An6"VgU J"}lwn3إ Z7&N?,Z4Es篙{tq:뛣 ݜ !^3}͢^k&͝?g&OfWvI.5ek .eT]-#>X -K.ZFz4 MEleVE*g-6UC8~Rked$V5%rUptNrk ۗ]X ѯ̼kM0-e_*|}ζA.Vy̺HiN4>{2v[3~*!6t#l1ݻ5UQpu;[E] BL;sPVwzcO@j^vЌZ_X%$}zX̽!zZ%o`uXQJҘ@2jL_6Ei9͉,vOSKȆDHX#koQ˪v sxjh$B\5 X7Ԉ.+*Q rdb%kjf;ahMb$㔓zCljVy^&gQͮJT&XXgF:PdžffkKu_́P<~z|8bt@ͺ;wД:1qsy RVtf'Ξ=ei_ٳ.=otF~ݖNf6`%Ee̐$՚(ėa~j (͑"+7a!YJn-p!ZVUXPk}RoU - nQQXMr_6mL :BXcj0Z1r7kP}G ۿC̗v[:eQ Pv?ѽ?7ߢ/3oyu7nrdt7woxA-&heCnٔ[ܺeۥ[QR ƠBӤ艞?u\ZIԶ??:'/t}G{.:c.ob$Cs%fI,N2n֫PS(G<+hզm(4fDC"Y8%'726@ɡS0ZS쾳1eC_ba7}NY:&6k{|v|VְET|׏m4Ҙ,&Tԇsin-tI`&`d81R#p&>6 kOzd0k"ả:z%I$hzYǦ'YvqYD@ޏl$8S:B`FsH _ʎESWmD3чT =o9蛉Ks)@h7ϧLҺ.a9ŏ.COy/&.zġF|PJ#r٫dtFp$YXf&:;uH%,!Y">M@,!ILqq7<9ɜ٬%@Mg7 X+`[Ư;G$Ix~ޟ~X~xy?z/ y_LK`ڈBa_Ⱖ_\4Od=`oCaP pqnīcZU=PyV?c}CֺFԵR{>f._~ 0U}=q&l p_"0/e$1Td9 &$'Ŧ2%Hd\feXֹ4ωBMY!K7=DX=C \?VtYFLa"+p52%Dez}~ tR29d D㮼ݴ&fN`ClţO<7_bl=;Eb1/{  , ?)ܡvX#\o)HJ nΏDB/7':s(v*\Ƶ4H4 NhB6 (]"˛>ı΢܇lJVa-r"-ԩlDn۰oܸͧ B 慓]~ #B6ɍOmޟQ 0k3Wm$S0 o,nVI7S$162 SrN:ap`x|لY^~{MR2af<Ǻ8>",\`AsqEnޗlU`icsW JRlۘ#\͙i;qT&\3G9xA\? hKg uvlgDv\^URbގM'0L&D_0FJ }h~ oR=6 Xグ5Bk~$ME(X2 ұ._8[Mħ7Ls.bntfUѡP^r&*!)>W|l*r1R'/ WTE4ȦeNZ Vڪ|Jchv[mP)?90+X)}ǃ ,6y)OF0|cASy_耭&.q[ \5 8ɬ OʓǠl>c70R\uo-Oh$7bHF|w]u79p 2W9rA€)X׬ ɚzlZ:[Be^SQlXJ8MUA[6IM:i86?IΗuUE9h頥K;k%`d_?o8|ι޵4{ʌAoQ}GZ4l`Gnbq fkPQKtHœ/ x[6H"a;c{!71G@~p98ݔcsb* жcOa"vGEd'I8h$aX+,0Vv&[CBR}VHx,=cƖT-V |8Wx.p_ #+ R mQ#'NtDS`zůg;}Ќ،o- 6},Bi ^LZ'(λ 2~ nP#C#3<*N&a |RɔḩEP ڢU2/K>N"u.G#$cgQl$ vrirU\ βǭۋQ/YQis {Mo -up<[LM0Ar>z* JR8C6\uh`o#On<ࡱq6ۭ߼~|CO\ͦFQ\WI<6dHǦ#>%󧞯*ţmɱZVMlV.!2遱%p_ "RdZT)hVMVTI zCkilB"LsgB@⩗5+7.W3MR\OwCF$)ZK YQi7_(SԨjNY]qHoq6#(@nN(#%'p֪l`?ٺ)Q=f[Lwy|>JDYB|쭿$3R0e+g7cIP>,T0!\wӓy?w 5^UTEhnJd-$9ӣҪw$/ղg3c|ץdj14z.^5Rw7ōbs5,lBׄFt]״-$<)ÇʋffAQ]f3"IS"f岹L#nxW Ygl`)lM?p秆r6Ca l͘"€OGB8o)? M hQ`&{#uP.SUcS N± !BI˞MyiUTLXI*5P_6xҪm_OZջ&yS>2hTc9ϻ20{Ĕ K4{ ̂vN5q6P@fs% 8Hj96j6׭9e՜Z2K4A$VQ@þRzLhMYȒM@9g]62J?O2Q[oJf|9ͺW[M|GIn.%kn-6gla݆uiD]u? f6hS!ݺtg3CrDcOl=j6{b'67RBB)&6{ M9 vAJF3X&CWX&w:cƖ;bQP ;;|[_S$}!-Ʒ$fåVM|yIp>!Vӥ{|7n$W5C@qp RjxNבCو  ,'dk@QݺuƎ6r@j.q6غJ^eN16Lu6'I'\!떟JLtYߧ־o#IMfp9fǖa߀Oڝ"(Cm5lQgbb9P1Cˈ !4~gmQ.7oՌQ]ftӎ5?6!9M_=ǹ6`4%xXȕ.pE*̦@c|z,UM*/KW"IӃ_a!^`cs'~2CXBГBFT`{;~]W0$]ʄ}IQ} 6Q>f`md!!hl3]kIt]S&"׍P$Ygz;E"jېRlƢ+܂uW~3!.Ki$[u^9&n׼ {IÐ'KTQ1h>0՟\jl0IʻLEELDv_lb]~\B2 c9#嬯A_#RΡlBJڡ7WBr$`6ƥ)7Rf">+f|#1CѶ9 e`_ž+?HW!unpF%5zyCW$ʃ„Ro6%uݳQDjmG^ zn aN3aZ{:Bg7'g > Iamq8]gNjO7p 9O(k6!͚4FVې_ڈv:˰] W ѹGFuڥSv]۵_NTĝr`*f1!N;AN}c-̦0/3/X&}O*)Sr,IRQ: 6-wYRH2On)pƃJ|ڮ'[^MFv|qx-~y?IHa-r7ʦ/֥wiXÆ ʨΊ.Æmgfú~9*$Try`4$-8y>A^Ì 4;.K .!"}0/Qg69OoTof@M_ec72~_%3I wޥm]vc{ PNd q6ˬRE0N3P@qa*,e$0GpQEFv9⭵d9r ]:*xcTxwO0&m#  ޷lJp~f݅O>eKm]oȗS>Wy0lla9KauxmS6π|<լDMN#\]벉INrM&3F*9#l߉Gq6Iku^0oB+{57h,մ={>?rhO Bb ?=eX.~$QecEd]MmvbʊF»74]Q_hal(` Xl en~FJAV-!\*7k6!VAZ] o5򷄸EB( l9R C6C]  /UHHUHclP `9ZxE]6fYzF_v S616Ȼ±UwՅLCku+qu |qśp|[wc'tſyPl:ifȦL !kCpF/ֳW^#zYRw 9w8z5aXOHy&wzFw'^"+b_>1֙7%ƙǡTX% o_}p)忇8rԡ_ٴbY19śrJ/7pF_5b k=n&|1UvCAPiS=p,_iHw- d˳`9f}v#%rƛpJ,ǩ3 ͿV|WRol墍6auE_|ٳ1b:lG"Wpf脁=o7aCm^.;e0F|$wpv|U-ä՟bV)ě,É ˠX"6jdx/}C&MP.Ke ]"ng 'ׄ%IzP" [qcsFL8= _6% H;f.."ݕ:Cӓy< f !k ݼPj:Ƃ ɛfυ~߳ lj8lT q3K]pCU*x_٤t+@Jֿj> xs\_cYxe}8]͡=1C'|ѿה |萈 70?Rt#.TE&!>??O %`5<#n.Mwyħυf] ׎B]FmƆ3D ܏lz_gBA ݌Tֳg>/#dh^ զqNЧϰ~Hb~L@`}wAX̦|3o=$%tNMT/!|0#xCjB6azx8ʼ4 !S~$8qrIזoX0k4̅M 0E 6SRJSUpHFSVfe7\|YHUZhFEP`};etwso7“8u2,rJ_vp}|>$2ܨšj|2I6[I^%2-H"]tJ#yLsw:g[N\ͦ!t4ᤖO>/NټylJOu$=F.- mYEW\)`S(+Um4DrޏlZԒA։1IJb!RsG׈DR MqozX8[N웷kC+ic9=ryAqp>&X iU {6g>yYT9{ګ0=Xx!T#A gv A>)NM◤$ ⑋}1n>#73gS֋ ?OPhۣ뀧`Q󳥞 0w楑vc?.X9t-IrYRy%rkk i,ÍPk!-ImP5n=/9mvfFM,kj!b5lm꿩֌1zܘ'Jd ^Qޠq}|ѣGj6{55 R|A3r#upCw=Z,͡{FlKE,im4e^ Ov#JӠ|`W4i;W5InIѽtt~r!Zd3*`e]3pJ}gLjc1OccK``(X{1V|}>"[?^Ǜ`=wZ4nK/ƃxe''~FMMp$K3.3Z=dA9.;&= Y3+(2mK6U nuE֊6dFbL> bD/F@_糘`{ѧl'-_SBd*1D~^# qlHOC]PCCU +2v?nEI#gw;$lHPB@=9bS&}[$ 0B'D }}Q6
@dF}tc) %k2fݏlS%Di֣4l%'dY}r CS$0ކ=כ/\ UQ]4[4w4i_^C*woJFKh՝+ K| Lg8 "ZpuyZu2|v PR5T\",Iڇ \" F·EMcǛ~ҬAM\^Z !=๠RjA+eź) ZT|D:RH乜"YXblc5m/տfpyݼPM]U5N٬4Cةmn[wI4HD`\^.qLG yxIfM& <'QǛUyWDS7OnuYg*.֜ iO6ɨ'ei0 l9Zj@8b}t|lpS G}#&|c+igNb^=`c_͇d(`$w rB>hk8>8 BFi|Z' ᡭ/gLvjS2c݆=851B\)Y'FRK68_Ưj +)-ߦ{LF>zL_Ce(vwZrovpw>N+&|P|')l!i!zvnx7{CCs[@ALZ74Ĵ~X\nj즂8xvҊGBټoٌIVACY0t ,IѠKѽsуOmjLX dHdY1GwLl2Yu{{޸ fG~C `D*Lr|T*Rxp:B-6fjMpG~ն0vīVJXfJ gph>'aBE MmG?Ϙv=-ژWE&yzkծ#6 ܶp k7cQ}ݶM1)UJѓ&TSu>F[5?%8=f7T^Ue^Sl|j RVT6Xa~?7;Ș~,rlI:0PSQ iF:e n7*ݴe>d+0A,"T1HHdssu}c$p'૧AW#c ^/H(Z}U=:nf%x4ȑeOŪ6(3tZ 'P%c*"Ѩ-T:"cT$4f*tL1> Cq6fzȳ2u?LbkjxUSnpLtxIS{6u//?Nf?p&'6o%>Gh#)6Pu\Op|GTTU Oht+'ah=)Z$>OzyA{'S[jC* E!V~2eCn &hMM"w lo0F^(ٿ-|_?Y^5m,IjJR8D AT.ɿjY/,OOlR6eHsWKb3lXzBLC >9<' ^R!&,tEVb̃þDP /M$^Q\ 7SS x PA&<y[lԲP Qaܕ4$_Jg䝛L1.?`ň?K6G>BW^TɧUd2Ne@ɴ/ -hؖKO,iWpC }&PA1嵒_=6ocAwr['o=vlѣ֭۱}ˎۓԵؾv&'[M(թa_a774c :@?ﲢְ)p$Ml7:rТ36j>Y ;,lioV/NJ.?`v;dGkHy["Cf}U")~J ?-'3t>gBX"^H+ gZ<_scmp&K`~s+b v߮2V۵ecQoXr:nv<ѿ#VCǢ?N`}=I˒`c>{%V)j!v$El0 +Ks\p>,[I3!37~nciLu<_ѣ㛕vf(ci.ƺz?wǐ@Y[ ~ZFfR )Yd-Gb$@JoTخcvԮඣ[ckb&Bf&y]:un Ӿb Z=塄]$plJ:cD t\Ț%ηd_A8 fZWpŤd!8lT?OHLRO2zR),m{4/Zr~YUK0EFy' Bb1-lH<ċ\5oH^R+Y F>|gϛZY])i)u.@@p|3nctwՆw@`?g`1;w>{q|mZun;MOfY?߱Y>}G%v'/5k;ޜa Ϛ)3rI-۴qt'!ayn֓.[:u黳xWqW!w6#g|̾-bvq}%C?jg}q] GpZF-~|59AŦR˗/ڑ]>?*f\n <\nV̼BѤl֖Ee`s,6zE=,ϊ5cnέڵYmZuo7~67Zuٕ'=b`Z ̎rU?6lU:fZ2LdHe?Zm?s6~R|nO JćahYEJ:سS.ؔ$% y+d\B.(e!.jf >_ASL' /g.!,ǹs8c QR6oٿ|Dހ Xg$q|-Gw~lݎ-1ߺwݱ;v;by|t($Ӕ(XQuIeGd]痽`ug//9,_bb d24G^bXH PFoO. Y),\z!0/>+tPKZ^-_|7i˪nۏoaI @%"dWlV_p57%SE  x z4ş}US,h֐`9Enf6@S*EgEL% E;ZEJ-&e8cY-0rb]uy< *4MM]MVw5d G5zq:HU.]hZVUIJ&KhȊڹPZ]3f\%L2Clٷ0 "8VͰ?+, Ƿ#ѲL3RXJn^j*RbY㌢fmT +["QpD[j6)5"hunۣ02vm:uԦS6ڴn٩MmZvԲsv{6mZuԲSǖwЪe70u~m*$)ؐXǗB7a6P kwlk{YAD>o[* 5$Ո[3OLbIi܌AN>JeI7b72ݔZuk1i#NP6jz-[wlbi{:)IF4=_yH,ةumXMTd&'P/c1N8Ve߸b@ElD>c6;nbuqCջ>!p_d=Ztlzvffv٫aP6'i)ot|6O2*=t׃FdEt eY1yp:7O;d%)>c ܜNkP6'ijYqH'T%S1ZYcD)Fa%l´*Zhj7OL0TUZyI_5oX[ US9& JViP:)zOyO>n"SkӄBFՠj6hMټ!{5|B~|NX1`,ȠjL$-^[;|צb??|bՄ0VjPeS6V>h"yX1eŀT HS:[I-'ݯPtJaÂ;0-eVͫv=0omi̙ߙk$R؈Ԭo^ƤRE#MI麪iYU4l CpE&eQ̔s)yM3il̠jXUXJi)JZkG7lVzzՍJH3B l6P$MRnJ٤lBٛHjڙW~CukFkP6o6v) fxFỵ^zf* l6*]zAi:֖sTK٤2٣lBjkޔlZL黵!Md^FY-;5U |NlzL[j][H¤kS :ϫH)dMUDlTr%+4i,4'yR./7X_4:G@Eټg6#_o_~Mg#qH*=*˛ M5Ue^Fzz֟*}>-e~/iSͷJ5M5(T{J^rXSU] Zy*eM^P(/lޫ4%FdlW8-e^%z?M2mIEټGϾ/mH3٤vyR"C_M"d RQ6)TD}Z*St,Cl0uQ:дaie^WL[9k&,Tu-lޫqϾ߯Ե/UUSQ6Ș^zW ~l޳"~^kj4_M*=J)4ET{vq˯ʳ5_ԡg5ߤlޣtuKXZأ50(*u]iͰQLC67LEټ7+F:/蒢BeW|^z{b:BEټg)xAk$ek_y{6òI׈QQ6UJds/ib= #Bǂ(*]o vMU49La* $=lӼ *潊oRQ6T&e):IEaoRQ6T&e):IE٤lRQQ6(TTM***&eIEEu/lTTT?DQ6(TTTwiAn;IENDB`W$$If!vh#v #v\#v :V l t65XBytob^ 002 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmH nH sH tH H`H V&Normal CJOJQJ_HaJmH sH tH DA D Default Paragraph FontRi@R 0 Table Normal4 l4a (k ( 0No List jj  Table Grid7:V0P@P  Balloon TextCJOJQJaJmHsHtH@@@ AHeader ! mHsHtH@ @"@ AFooter ! mHsHtH4U`14 AD Hyperlink >*phDV`AD AD0FollowedHyperlink >*phX@RX AD Comment Text CJOJPJQJaJmHsHtHFoaF ADComment Text Char OJPJQJ>oq> AD Header CharCJOJQJaJ>o> AD Footer CharCJOJQJaJNoN ADBalloon Text CharCJOJQJ^JaJT`T AD No Spacing$CJOJPJQJ_HaJmH sH tH @@ AD List Paragraph ^^o^ AD[Normal] 7$8$H$(CJOJPJQJ^J_HaJmH sH tH R'`R ADComment ReferenceCJOJQJ^JaJo(PK![Content_Types].xmlN0EH-J@%ǎǢ|ș$زULTB l,3;rØJB+$G]7O٭V$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3N)cbJ uV4(Tn 7_?m-ٛ{UBwznʜ"Z xJZp; {/<P;,)''KQk5qpN8KGbe Sd̛\17 pa>SR! 3K4'+rzQ TTIIvt]Kc⫲K#v5+|D~O@%\w_nN[L9KqgVhn R!y+Un;*&/HrT >>\ t=.Tġ S; Z~!P9giCڧ!# B,;X=ۻ,I2UWV9$lk=Aj;{AP79|s*Y;̠[MCۿhf]o{oY=1kyVV5E8Vk+֜\80X4D)!!?*|fv u"xA@T_q64)kڬuV7 t '%;i9s9x,ڎ-45xd8?ǘd/Y|t &LILJ`& -Gt/PK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 0_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!0C)theme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK]   N be ';  +24@DKW\dpw FFFFF %',HJ!9;@\^e!!T # @H 0(  0(  B S  ?demAddedBkmk001demAddedBkmk002demAddedBkmk003demAddedBkmk004demToday 4Kd 3E]x S SSSSSS SSSSSSSSS SSSSS  ' ' 2 5       & & 0 4 : :    ;*urn:schemas-microsoft-com:office:smarttagsaddress:*urn:schemas-microsoft-com:office:smarttagsStreet8*urn:schemas-microsoft-com:office:smarttagsCity9*urn:schemas-microsoft-com:office:smarttagsState>*urn:schemas-microsoft-com:office:smarttags PostalCode9*urn:schemas-microsoft-com:office:smarttagsplace= *urn:schemas-microsoft-com:office:smarttags PlaceName=*urn:schemas-microsoft-com:office:smarttags PlaceType ج  ! " $ % ' ( * +  ! " $ % ' ( * + G K j k [ _ ~    , G K j k k m < > > @ [ _ ~     , G K j k k m m > > @ [ _ ~    iJ-Pw<` j'u((!,y?D@*RkD=|eTcTX:bB.\Fj>pR-s`BGw:&Vw>h^`OJQJo(hHh^`OJQJ^Jo(hHohp^p`OJQJo(hHh@ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohP^P`OJQJo(hHh^`OJQJo(hHhp^p`OJQJ^Jo(hHoh@ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhP^P`OJQJ^Jo(hHoh ^ `OJQJo(hHh^`OJQJo(hHhp^p`OJQJ^Jo(hHoh@ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhP^P`OJQJ^Jo(hHoh ^ `OJQJo(hHh^`OJQJo(hHhp^p`OJQJ^Jo(hHoh@ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhP^P`OJQJ^Jo(hHoh ^ `OJQJo(hHhp^p`OJQJo(hHh@ ^@ `OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHhP^P`OJQJo(hHh ^ `OJQJ^Jo(hHoh^`OJQJo(hH^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohp^p`OJQJo(hHh@ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohP^P`OJQJo(hHh^`OJQJo(hHhp^p`OJQJ^Jo(hHoh@ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhP^P`OJQJ^Jo(hHoh ^ `OJQJo(hHhp^p`OJQJo(hHh@ ^@ `OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHhP^P`OJQJo(hHh ^ `OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohp^p`OJQJo(hHh@ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohP^P`OJQJo(hHh^`OJQJo(hHhp^p`OJQJ^Jo(hHoh@ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhP^P`OJQJ^Jo(hHoh ^ `OJQJo(hHh^`OJQJo(hHhp^p`OJQJ^Jo(hHoh@ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhP^P`OJQJ^Jo(hHoh ^ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohp^p`OJQJo(hHh@ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohP^P`OJQJo(hH :b\Fj,y?DiVwpR-s((eTcT<` BGwRkD                                                                                                              MQ T!NP+F+Y_G<9[znko i I[!MRTr>6-> AtSa`;i{ {#096AKag;jVwx<H!B.i3X ))73;<UzXunr+xz|J"Jjl5w}w&*12(TX^kdjh!~ :!-0K69> =u3*,^9PLUUXYY]tu x5 $4 35 Ze i Bn F R ! ! v+ E. 2 B T x 4 4   ( . g y   0 2@ \ k 1I:Xe`~ O*a-?3DVZaccd:GEbQ1RTfg5p#v@5nC)[}w "(q5I61Eer L'+RWm0yBFIvY_tG{  A,47:<QN;cv8yA $$F"REUmy J"/IRW|o]b%-G00xEGkJLusz6K"4;FLPU` ++]Qbdg!;1PC!Ybg, * jr%,1?D#Un[z '!5=cMNO"_K"jK"L"M"Y"qt"Ww"{"k##+#1#X2#68#L#j#o# $$$$j4$C$]$j$[n$!w$%}>%[B%C%1e%Gf%h%r%}%n&&&&&(&?A&DG&M&N&R&^&d&m&p& u&v&Mx&''#'#',+'+'O'^Q'X')g' s''w'/( .(,A(6B(2P(Hk(l(q(v(k)6)=)C)LO) *#*2*;3*k*++#+$+f(+D+5M+mV+Y+~[+^+zc+d+v+ ~+, , ,6,"M,#X,*^,j,k,),L-=-P-Q-Y-[- .b.W*...6.3L.yX.].i.mj.~./b//,//K*/T/Z/|j/00 04$0.090;0l0u0101111.-1U1c1d1i1u1w1x22 22P2l 2(%2&-2*H2L2O2Qp2 3('3:H3SI3K3O3AR3]3v3}3 4 4|4',4,=4YI4T4A\4Ve4j4q4c5= 5 55+5_6565'A5A5C5]N5Q5f5|5}56h 6 6666d6y6 77\H7H7ZL7d7"u7jw78) 88$8&81,8B7888;8D8I8J8{W8d8f8;k8o8999 9 +9j.9o59@9$G9G9qT9\9::,::#:*:[*:,:1:n::F:J:5b:q:S:;$;f+;F;K;P;\;];<C<)<.<A<X<l<n<==='=F=^L=W=W=W=Z=a=n=S~=~=X>>->1>:>;>F>O>PQ>Z>xi>i>?v?#?.?15?VA?P?BR?Z?e?@@ @$ @$@*@e,@9@:@O@R@d@y@A7AAAyAp A~%Ah*AKATA3_A>cAhAG}AABYB)B0B2B93BY4BDBGBoLBWB]BgBBpB> CQCC#C+C5CP9CN=CGCXC}C''D0D^aiavabb!b+9bs>sasas%ks"lsrsvsZtt t!tt"t9tXXtut'u>uu%ucZudu wOw w2w;wLEw[Hw#KwXw({w3{w-}w xx(xcx.xJxnxtxtxKyIy(y+y',y4y4yIyUy[y\ycyzznzs!z0z1z 4zdWzoZz9\z]z.{z{{{({1{#_{k{z{U}{|C0|:|WB|B|Qp|Fy|} }}}=}iW}X}N~ ~~)$~Bj~k~o~&5K>[t % 1+ 8&'1#?@`OQ[!% -6u;<?>N5RU.X]gov (''(NES^^|m-; =CDCW[ c!dD%(5>IQoAs$$l*55F5I Nfv"| 49?AK\f=YW{'5)67D JMZacjnMu]u#*B`fH6QHs}Jq.n0FQrr~0 D#1$>^fllYvS}tf#;tIi[lywy!%:?RIMhMi":chhpXu( /GMBQ ZaRFN6S,fiox# O8EwFF KZ_vE V sBDGGSd{<@WsC,p2#4v5;=ADLIRUwz &6779VFONVk| ]$q%9 `osb%&'(]/CQSSZ8mp| )$;/z22U-_w_c2dSw_'GGANV[^gv !.48D:@cEgU^"#$V&N[] `fZ}[5=A1HRZRR(+/?@LOS_[eqjp5}::ZH.6A JT[ghp,J%'/,6$H OOqz>I8Z]k]osz|~2Zs}} <Bjwn -8i8DNSVYrYYs0]3$;Tbn\tZu{| 28DKZF[;kev0/0< W\b6 %489<>+BF^jmtz*089M/ksMv) *v39@-IkkmGtyY|lF Yp1%: Ek! +AD #5LRm  16>I%Wd{0 k)Z.0P[]x4'&06ACK4t"%J;z;HPVb)uu."+6AGzX` $H(P-FObZ!mir<&,C<>W^agz{HPZ{oda%7k^Pq*9F8VYjdi.jiybfAtj+1-!16 DdeBHIP~~4] >N(.48;Qh) Mkhp78 JQCs|%W!>NbP]^dpjl#rt8xJ O}$-9J_XdekgzF U%^^vqsw ) Ol%?FG2QUvjpq[v&3#4+;tC+O2UV\da, [tOkn#{ $-0G{HQY_fp%u8>@N]^hi O![)34Q'RW9aguwxYH}#p/g@pBj|#&G)V8?SJ3S`dRikl}? &3>4FGtJ`bd}'28:7KMrwy :Ml&@hCdf$5\otz@?JUjYdgmWw#$D(J126:.Aj{~}!F$Z,|-:<DL^_  **.<X=Q"SOU5dk/S5-?@HgqS+2>:_*t FX".~06EL?m)uP~".":c;qIMPdgP~: &9?B/'Tu^ rSr#s7t/058QPQlwy'S]a'6K?PQ4~ChLN`j 4Q$~?CPMUZ^_j}*3<?``gyho/#$24IZnT1)~5j@ULh_qRt%V,7@BP4Sa\d*kou-,F:EBLiShGq uLzO RH#o# (/46$8? L@Rr~= 6"Z&/AgAXGL5G8l=MRU`'k q&&.)A55l:P%VWVWzo{t}o2QEOTjbzn1<Bu #'36>]v~'!!OQjcb,-f06<MP\oyW $)";NHNzWWWoYobtuPR#s$7.*;>]xg_2'X*.Yjpyy '=Z?A$HW^8`wy 5e5F]I.]{`Sa<0102AVI']`bry~0!R29=HH`=?CS3 !@&s8OASPVSL N DE6GUZbZccgiklj4 .(5-h1UG>I'Z dm ! rw  V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V ; ; V ; ; V ; ; V ; ; V ; ; V ; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ; V; ;   ( Print to PaperPort (PDF)WPrints the document to the PaperPort desktop with the ScanSoft PDF Create! print driverPrint to PaperPort (PDF) PPCreatePDF1(( p(  ( Print to PaperPort (PDF)Print to PaperPort (PDF) PPCreatePDF1(( p(  mr(Y9x  Project.modAutoOpen.AutoOpenProject.modAutoOpen.Auto_Open*Project.modApplication.ApplicationActivate#Project.customAutoOpenEtc.AddHeader#Project.customAutoOpenEtc.ShowTimes)Project.modApplication.ApplicationGotoEnd3Project.modApplication.ApplicationHideErrorChecking&Project.customAutoOpenEtc.ShowCalendar)Project.modApplication.ApplicationHideVBA'Project.modApplication.ApplicationPrint'Project.customAutoOpenEtc.RunEntryMacro&Project.modApplication.ApplicationQuit&Project.modApplication.ApplicationSave(Project.customAutoOpenEtc.CustomAutoOpen(Project.customAutoOpenEtc.SelectFromList)Project.customAutoOpenEtc.ChooseSignature/Project.modApplication.ApplicationScreenRefresh-Project.modApplication.ApplicationScrollToTLC*Project.customAutoOpenEtc.SelectFromListCr*Project.customAutoOpenEtc.UpdateROMOptions+Project.modApplication.ApplicationUnprotect#Project.modApplication.AutoDropDown,Project.modCommonSubs.CreateWordFormDocument#Project.modApplication.BlackBoxFillProject.modApplication.DateHere0Project.customAutoOpenEtc.CustomAutoOpenComplete3Project.customToolbarShow.CheckInkingAndShowToolbar:Project.modReplaceDemographics.LoadReplacementDemographics5Project.modReplaceDemographics.NewReplaceDemographics6Project.modReplaceDemographics.RunDemographicFunctions)Project.modParseSmartText.AddNewSmartText*Project.modParseSmartText.PartialSmartText PROJECT.MODAUTOOPEN.AUTOOPENPROJECT.MODAUTOOPEN.AUTO_OPENPROJECT.MODAPPLICATION.DATEHERE#PROJECT.CUSTOMAUTOOPENETC.ADDHEADER#PROJECT.CUSTOMAUTOOPENETC.SHOWTIMES#PROJECT.MODAPPLICATION.AUTODROPDOWN#PROJECT.MODAPPLICATION.BLACKBOXFILL&PROJECT.CUSTOMAUTOOPENETC.SHOWCALENDAR&PROJECT.MODAPPLICATION.APPLICATIONQUIT &PROJECT.MODAPPLICATION.APPLICATIONSAVE 'PROJECT.CUSTOMAUTOOPENETC.RUNENTRYMACRO 'PROJECT.MODAPPLICATION.APPLICATIONPRINT (PROJECT.CUSTOMAUTOOPENETC.CUSTOMAUTOOPEN (PROJECT.CUSTOMAUTOOPENETC.SELECTFROMLIST)PROJECT.CUSTOMAUTOOPENETC.CHOOSESIGNATURE)PROJECT.MODAPPLICATION.APPLICATIONGOTOEND)PROJECT.MODAPPLICATION.APPLICATIONHIDEVBA)PROJECT.MODPARSESMARTTEXT.ADDNEWSMARTTEXT*PROJECT.CUSTOMAUTOOPENETC.SELECTFROMLISTCR*PROJECT.CUSTOMAUTOOPENETC.UPDATEROMOPTIONS*PROJECT.MODAPPLICATION.APPLICATIONACTIVATE*PROJECT.MODPARSESMARTTEXT.PARTIALSMARTTEXT+PROJECT.MODAPPLICATION.APPLICATIONUNPROTECT,PROJECT.MODCOMMONSUBS.CREATEWORDFORMDOCUMENT-PROJECT.MODAPPLICATION.APPLICATIONSCROLLTOTLC/PROJECT.MODAPPLICATION.APPLICATIONSCREENREFRESH0PROJECT.CUSTOMAUTOOPENETC.CUSTOMAUTOOPENCOMPLETE3PROJECT.CUSTOMTOOLBARSHOW.CHECKINKINGANDSHOWTOOLBAR3PROJECT.MODAPPLICATION.APPLICATIONHIDEERRORCHECKING5PROJECT.MODREPLACEDEMOGRAPHICS.NEWREPLACEDEMOGRAPHICS6PROJECT.MODREPLACEDEMOGRAPHICS.RUNDEMOGRAPHICFUNCTIONS:PROJECT.MODREPLACEDEMOGRAPHICS.LOADREPLACEMENTDEMOGRAPHICS@7;77 @UnknownG*Ax Times New Roman5Symbol3. *Cx Arial7.@Calibri5. .[`)Tahoma?= *Cx Courier New;WingdingsA$BCambria Math"h*G3B5\\A@r0  B@ 3qIX ?#*!xx Routed and Memory Template v06 Brian ProbertMatthew Barnes@         Oh+'0 $ D P \ ht| Routed and Memory Template v06Brian ProbertNormalMatthew Barnes53Microsoft Office Word@ @G@Խ@hcc\cipientIDMessage PriorityDocument Name Message BodyMessage Subject AutoOpenSub ButtonStyle CheckInking ChoosePrinter ConfirmCancel DesignModeExplainXMLPathFormRefHideVBAInlineSigsAtEndOfDocInputColorIndex NoAlertsRefreshDemographicsRefreshFacesheetRefreshFunctionsRefreshVitals Repository SigStyleStopTemplateVersion UnprotectXMLPathSmartTextName 59dmitry novoseletskyNormalDN Patient EducationBodyPlease Review       xx     y y y Repository.dot  v07.06  NovofreshFacesheetRefreshFunctionsRefreshVitals Repository SigStyleStopTemplateVersion UnprotectXMLPathSmartTextName59dmitry novoseletskyNormalDN Change in Trx PlanBodyPlease Review       xx     y y y Repository.dot  v07.06  Novo  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwxyz{|}~Root Entry F^ޝdcData +1TablecWordDocument ; SummaryInformation(DocumentSummaryInformation8|MsoDataStoreo4ccccFCXCB5BIBU==24ccccItem  PropertiesUMacrosNccccVBAcccc  !"#$%&'()*+,-./023456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefhijklmnopqrstuvwyz{|} u0* pHdProjectQ(@= l TOV i8ExcelForm = 0 : Inking ParseXM L1Repository Confi/ss wordsRo@utedOM<nxcelForm = 0:InbkLng PasXML1R p(st,y,C nfA/sswdLR ut3dO@stdole>tdl( hz^*\G{00020430-C 0046}#2.0#0#C:\Wdir __SRP_0 h__SRP_11n __SRP_2 gindows\SysWOW64\C2.tlb#OLE Automation"N@sal"N!AYa@\@D q *\C Offic3OKALm G{2DF8D04C-5BFA-101B-BHDE53AA24 23gram Files (x86)\Common\Microsoft Shared\OFFICE14\MSO.DLL#GC( 11.0 Ob Libra,ry'MS!s>M"Ss3FeD452EE1 -E08F1A-8-02608C4D0BB4eFM20L'B @r&/;"1ă} A00}#0A#`@0"4@! A116FD93-1A9A-4017-9287-B8AD1@14DDCCIUsers\mbarnes\AppData\Local\Temp\VBE`1.exd15@.E .``M !#MM:S2U4t2b Vb`F5078F18-C551-11D@3-89B9b&F81FE221}#30gtem32\msxml3.dllH, v @~yThisDocumenPtGT`ziE|DHcu`eQt2Q` H1g",(F""+"clsur*e.G"{c &sU)u eF^r2' ofoS c(b,BuildCalendar)B`(i`d`ᔡ)d&j)wI/|/o'8FaceSheet[`)FS AeѠtD t`&Oj)w/0 :n R]P!{GA" uk2oip,gG})'"  lsc`Gsi220zQ$(>_۟2us@rrOpenEtcGՁ;s|o-A(AOpnEpc<20 b !0 2  lsSignat=G=SRn&=GpoG? h4:ȿtbDetailsG"UPeFD0a l_s2_3Ne U_ k'b)_  Q Ltis[0% L 2' ? rr? {M? lPlsametvG%caP(!!s c '2/* 8 r Y2ToolShow_2Tnob(rhw` W2_2o ]X [2QXfrmdQf'm/dRSrJ_S`R`ecipi1Pcp'p0Â?U*S/%  # S ِYwSoLZϢTSg d~P + sGmodImageI.n@=m'dIP0aen4H[sG_W_ AQy(:G(c='G(DseXMPLH(18#$P,/!0+ modAutoOpenG odAuDtOpn4 X2Xh) CommonSubsGumC"m nSb6s2LĀ)LkLLfrmSelectFromListG" rJSlcFo hLiQtH2$XSX#h($wsodReplaceDemographhicV,@ VR.plac@Dg1ah1c[W2mIO5?VO5a,pplicatioA1A@+1i1abiO 2Y 'Gi' 'm@artTexA@Rmm@Xr%JT@Xx 2& $o&}1AAP }ParsenSA PS`Wa@t#X uk)" 'clsDa`taG `Us)D@t`qN2`o>oJq,9Gq;e//5-s/arU~~~~~~~~~~~~~~~~~~[  y sFileFullPathFormTypeSignaturesCount iSignatures sAutoTags sManualTagssSigDescription iSignature sPropertyName Prope     5 0!"#$%&1()*+,-./<2346b789:;=ZN?@ABCDEFGHIJKLMO[QRSTUVWXYp\]^_`acqefghijklmnorstuvwxyz{|}~K*0 *\CNormalrU~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~> xB͐FDb  V  9iA 1CYCyIqAA AAiC  0wVI4 NH iProject ThisDocumentclsConfigureFormclsBuildCalendarclsFaceSheetData clsInking clsRoutingcustomAutoOpenEtc clsSignatureclsUserDetails clsUserList clsParameterscustomToolbarShow frmCalendar frmRecipientsfrmRoutingToolbarmodImageInsert modParseXML modAutoOpen modCommonSubsfrmSelectFromListmodReplaceDemographicsmodApplication frmSmartTextmodParseSmartTextclsSmartTextDataclsSmartTextList Unprotect CheckInking NoAlerts HideVBA (InlineSigsAtEndOfDoc &RefreshDemographics RefreshFunctions RefreshFacesheet RefreshVitals ConfirmCancel InputColorIndex ChoosePrinter FormRef AutoOpenSub TabID Document Name RecipientID Message Body Message Subject Message Priority DocWasSaved DocWasSigned SigStyle ButtonStyle Qyp *OrderReturnToDoctorID Whiteout ???? ,SRSFormsParameters.xmlF /C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLLVBA A  i P F;C:\Program Files (x86)\Microsoft Office\Office14\MSWORD.OLBWord 9a`0FC:\Windows\SysWOW64\stdole2.tlbstdoleL-[DREC:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLLOffice  .E .`M C:\Windows\SysWOW64\FM20.DLLMSForms 9@M 3C:\Users\mbarnes\AppData\Local\Temp\VBE\MSForms.exd Q!C:\Windows\System32\msxml3.dllMSXML2  QXMLPathSigPath PPtt,  48<@DHLPTX\`dh "" ,AutoOpenObjConfigureForm zFixFileNameFormRef Auto_Open +=h8+3q :KbME*=h8+3qKA%+G]3\~!=h8+3qClassPgv3+3o VBInternal  ClientParameter1ClientParameter2ClientParameter3 FaxPrinter VitalsPathTestTabPollwmsgOrderXMLORwomsgORwmsg PollwomsgMsgBodyBeforeSubjectMsgSenderAfterPriorityzLoadXMLClass_Initialize SmartText DD|48<@DHLPTX\`dl<06B F%8"FܾN PHMAutoTags ManualTagsSigDescriptionListSigDescriptionCount SignatureSigDescriptionLookupSignatureApplied ToolbarMemory VitalDetailsToolbarRoutingAlreadySavedToolbarRoutingNew MessagingNewMessagingAlreadySavedzCheckDescriptionzValidateConfiguration0 <@D!@i % P   H @ 0   А j p  `   i h%i h%  ,C:\SRS\UserFolders.txt *C:\srs\SRSFreedom.ini *H:\srs\SRSFreedom.ini \srsserver 2\www\SRSFreedom\FormsXML\ \SRSServer_xxx$ XMLPath ExplainXMLPath Repository DesignMode Stop AutoOpenSkip DesignModeCreateWordFormDocument MsgBoxTitle PropertyRead PropertyWrite FileNotFoundGetFormsXMLPath FileCleanPathFileGetDateTimeExplainXMLPathzAppendDiagnosticzGetSRSTopFolderFromUserFolderszGetSRSTopFolderFrom_CzGetIniFileParameterzGetSRSTopFolderFrom_H WorkingUserFileReadGetSRSTopFolderPath   ApplicationFullScreenApplicationScrollAreaApplicationIsProtectedApplicationLetApplicationGetApplicationGotoEndApplicationHideErrorCheckingApplicationHideVBAApplicationActivateApplicationLocationValidApplicationScrollToTLCApplicationTarget^ FApplicationTargetSuffix AutoDropDownApplicationSelectApplicationInputEnabledApplicationInputShadedApplicationIsExcel BlackBoxFillBooleanConverterCheckBookmarks ListBoxSelectƏYl|ApplicationScreenRefreshzCheckFieldNamesgĤIx8<zFieldToBeCheckedzRangesIntersectDateHereApplicationProtect ApplicationUnprotectApplicationQuitApplicationSaveApplicationPrintApplicationPathApplicationDocumentExtensionApplicationDocumentNameCurrentFormField( FzFieldValueGetzFieldValueLetzFieldsToFixAddApplicationSaveInProgressApplicationCaptionLetzFieldNamesToFixMsg $ ,SRSFormsStringList.xml GetString ShowTimesTimeListCurrentFieldDefaultzUnprotectShortcutList RunEntryMacroCustomAutoOpenCompleteChooseSignatureUpdateROMOptionsChooseAndInsertSignature ChooseUserCustomAutoOpen SetInHeaderEvent_Worksheet_SelectionChange FormCaption ShowCalendar AutoSignatory CheckAutoFitInsertSignatureSelectFromListSelectFromListCrSelectFromListShow AddHeader    E/#{3  not found  Searching $SRS_DB_CONNECT_STR = ";  not found in VBE7.DLL q5x  q5   (SRSFormsUserList.xml \Set FormRef property in order to use GetStringĝiO HIbC5SGetUserByShortnameGetUserSelectedSortByFilterByzAddToCollectionzCheckListControl zGetUserByKeyGetUserBySRSIDGetUserBySharedIDGetUserBySignatureGetUserBySRSMailGetUserByPersonIDGetUserByReturnToNameSignaturesList#ҋB `ShortnamesListPipeSeparatedList zCleanPathXMLFileUserList UserListLoad d<@DHjb#e>aE*: String < > was not found q5S  q@Or14KeyFieldKeyValue UserParam `` 48<@DHLPT\hz F FA>i>A>k F no q5  zAddedBkmk 0000 PThe first form field has an Entry Macro. &Missing Home Field?fĤIx8<gĤIx8<IA + dem FName F) F 0AutoOpen will terminate.   @Save the form, exit and re-open. (XML folder not found! |Some fields with invalid names or bookmarks have been deleted. q5  q5k  q51 ( q5 H q5i hg F Run AutoOpen? XML folder is:  l(To suppress this message, clear DesignMode property) $XML file not found "Local folder is:  <Click YES to use the local XML JClick NO to skip the rest of AutoOpen (Click Cancel to quit 6XMLPath property is invalidRunDemographicFunctions ,Using XMLPath property \ / q5  q5A  username  not found   found _ q5  q5  q5  h:mm am/pm  q5B ( q5 H q5m h Source \\s.O 3)6{O>`QQ3)6{O>`3)6{O>` SigPath VitalsPath Pollwmsg Pollwomsg ORwmsg ORwomsg OrderXML (MsgBodyBeforeSubject ,MsgSenderAfterPriority TestTab ClientParameter1 ClientParameter2 ClientParameter3 FaxPrinter SmartText RError opening SRS Parameters XML document SRSID Doctor MM/DD/YYzReplaceForExcel Signature  0 copied to a lower index < copied to an inline signatureRUqJ$m}lKPڳInsert Configuration LocationValidInsertUserParamsValidInlineInsertionzUserParamsValidzUserParamsLocationsValidzUserParamsInsert zSetLocationUser < is neither 'Auto' or 'Manual'zReplaceForWord ``4i %t      2 3  NBookmarks defined for inline signature  TMissing ranges or bookmarks for signature  TInsertUserParams is invalid for signature  < is 'inline' for an Excel form "Inline Signature  8 does not have a Description# Inline sigs or descriptions are defined without a Sign Form button& The Sign Form button is displayed but no inline signatures are configured *Invalid Configurationp FGetAge zIntervalNewReplaceDemographicsLoadReplacementDemographicsGetDemographic  sharedid lNo SharedID (or Chart#) is available for this patient. 2Click OK to exit the form 6filesdata\FaceSheetData.xml ;  ,  ((,  ,  , ,  ,  44( (,  $ParseXMLMultilinewriteMultilinewriteBPMultilinewritePulseMultilinewriteDateMultilinewriteWeightMultilinewritePositionMultilinewriteTempMultilinewriteO2MultilinewriteHeightMultilinewriteBMI OnelinewritezCheckDrugAllergieszIntolerancePresentCollectionSort NameNewRanges PERSONID .xml SmartTextName ,CustomAutoOpenComplete q5"  q5  2filesdata\replaceVars.txt 4filesdata\demographics.txt start of file &Error after readingSurgeryDetails TestDetails q5;  q5 ( q5 H lname ,  fname CurrentUserName  -  .b F 3z[Bt_@wAllergyDetails DrugDetails Formatted SortKeyValue FamilyDetailsImmunizationDetailsProblemDetails SocialDetails zSortableDateF  4i p%(Di %`i %xi %i p%i %xi @%((95i (% @i DH% @(  f!gyggf h hQhh ProblemName DateDiagnosed DateStarted ProblemList DateEnded SurgeryDetail SurgeonLastName SurgeonFirstName DateOccurred Surgeries SurgeryName Deceased FirstName LastName Detail AgeOfDeath Relative OrderedDate ProcedureName Tests ProcedureClass Date DateOfProcedure Notes Allergies Substance Abuse DateQuit STRENGTH STRENGTHUNIT DRUGNAME DRUGNOTE INSTRUCTIONS USESTATUSCODE HISTTIMESTAMP Reaction AllergenicName DateReported MRN Weight BP Position Pulse Temp Height BMI O2_x0020_Sat FamilyHx Immunizations SocialHx DrugProfile 1 2 3 Vitals Problems Meds allergies Intolerance PrevMeds Homeu F RunEntryMacro F AddNewSmartTextRoutingToolbarButtonClickzCancelzFaxForm zRefreshDatazSignFormClickedzModifyROMOptions zSetRecipient zSetSenderCheckInkingAndShowToolbar zProtectForm  &ApplicationActivatewGĎTl$AJey PathTooLongMaxFilePathLengthRoutingActions zSaveFilePathSenderID DateOfService RecipientIDSendForm MessageBody 88p 48<@DHLPX\`N[>H7h KxGIwK`sL,6CLC=I?ӆ6G{lFWJO cmdUnprotect!-6S`  cmdProtect cmdCancel cmdSignFormcmdSave cmdSavePrint cmdSaveNoSendcmdSaveNoSendPrintcmdSaveNoSendFax cmdSaveSendcmdSaveSendPrintcmdModifyROMOptionscmdBDF1cmdBDF2ȏ[qJ eUserFormmKBy F3Dynamic юcmdBDF3 cmdPrintForm cmdFaxFormcmdRefreshDataDisplay SetPosition zSetCaptionsShowFinalButtonszShowOrHideButtonďYl| cmdBDF1_Click cmdBDF2_Click cmdBDF3_ClickcmdCancel_ClickcmdFaxForm_ClickcmdModifyROMOptions_ClickcmdPrintForm_ClickcmdProtect_ClickcmdRefreshData_Click cmdSave_ClickcmdSaveNoSend_ClickcmdSaveNoSendFax_ClickcmdSaveNoSendPrint_ClickcmdSavePrint_ClickcmdSaveSend_ClickcmdSaveSendPrint_ClickcmdSignForm_ClickcmdUnprotect_ClickUserForm_QueryClose ' F ( [ RunWordFunctions SRS -  pTo enable inking, set Inking=1 in the project properties Ink Annotations F F sharedID JRouting path is too long for sending.G7Vx "O`()7 4Check the form parameters. Press OK to Quit Smart Text Inking Keyboard Save As New &Save As New & Print $Save As New & Send 2Save As New, Send & PrintVisibleLeft Width Microsoft Excel =ʃ?aIM)vgeE{y q5U SҢ}mOG!^wLjd9=2 FBm[2įJ+CLbF40 <@D!@i %H Fj i h%i h% myO0kXAA<|̟G%G2FjlsFuC_ `` 48<@DHLPT\h ``4i %t      2 3 ńVT7Js$u4̪궿^@,ow>F  4i p%(Di %`i %xi %i p%i %i %i (%i H%  f!gyggf h hQhhո-2Fr[:(PSOB*#eAH[S FA!eB{ꃤEC)WWGITtbBtE}CDl!`_Ov3aE%CJ97X ю b]E (baf^N@a6w641烬ALWͅ@A@?l0 <@D!@i %H j i h%i h% JGMm};P!:N_ktOnHAjKy rfO|.p׭$;aEvC(ۇ'5޴Kg#Wy,KmkmPHZ EbFVF  4i p%(Di %`i %sky [colxi _%nge]\Tesi np% old fori \%king on i d%i (%i H%  f!gyggf h hQhh1'.bNFN= ƟAH ;A x< aAR);cV `x?LN^4twLM߀[#.Lq`i_,GD)ך`F IW m\A Y J6mX< Y ю( Yes x C]Z_O?O3m*p." f@d˸! CF°A#t=#F&a2 "ҋB `SmartTextSelectedSmartTextSelectionL|?CGu\VǼ I ю8"-?@Label1CommandButton1Label2RemoveFromSelectedCommandButton1_ClickRemoveFromSelected_ClickSmartTextSelection_Click zUnloadMe \ ύ᭱JYApƙIa( smarttextlistSmartTextListLoad D4HE5\Gy۠=-YP xsEo H48 SRSSmartText.xml BkShortName BkName ,InsertSmartTextAddNewSmartTextPartialSmartText lEndb>tAMq+X;^q7$@̞!Z@CdG3?MB( 60 <@D!@i %H j i h%i -h% 8~]?DE~aYexPL}nC%EY:Mb޷VM- xeF  4i p%(Di %`i %xi %i p%i %i %*i (%AppDatai RH%Roaming<  f!gyggf h hQhh+L|hXxj8rH/w{=WED AFQ; N-lloR A?^)&yMn`lgomLG_/HC-++qY5#L*R ю k7J0/+vf[K3JޢhY\F6$gGR:ZeMJUz%JdOLqGoga1&q  ю-rtyValue nPropertyType sFilePathsPathsMsg vsIniFilePath sParameterbMode bRestrictsRangeOrBookmarkNameValue q(Target sRangeName bPrefixMatchsPrefix sPlaceNamebEnabledbShadedTxtbMsg q*( MyListBox sItemValue +8 FieldsToFix nFieldTypeMyRange Insert dated 14bAlwaysProtect sFileName -HffsValuesCaption StringName XMLFileName StartTimeMinutesIntervalIntervalsBeforeIntervalsAfter sFormCaption nListTypebSortedTags bRequireSRSIDbRequireSRSMailsUserListXMLfilesHdrBkmkrec sReturnToBkmkbLongUserSigConfigurationbAutoSignaturesListsPreSelectListnSelectedItemLimit nHeightScale nWidthScale RequireSRSIDRequireSRSMailRequireReturnToNameRequirePersonID sShortNamenSortBy nFilterByNewUser rnListControl sSearchKeynUserKey bInstrmatchsSRSID sSharedID sSignaturesSRSMail sPersonID sReturnToName i:XrShortnameListrSignaturesListsXMLPathsXMLFilesTagsSRSIDSRSMail ShortName SignatureInitialsSharedIDPersonIDAgentFor ReturnToName MessagePoolPassword nKeyFieldsUserParamSuffixsUserParamValuerConfigurationbInlineInsertionsInsertUserParamsnSignatureNumberrUsersField sFromDatesToDatesName sDelimiterplistRngName AllergyListIntoleranceList oCollectionbSortAscendingStartRowstartcolcounterColMaxsDatenRoutingButtonbProtectTabID DocumentNameMessageSubjectMessagePriorityPollwmsg Pollwomsg sSenderIDsDateOfService sRecipientID bSendForm sMessageBodysCommand 1h axButtonsbProtectUnprotect bShowButton ButtonCancel CloseMode Ѥa a 1 qa 1ɮDeleteFormField PartialList BookmarkNameBookmarkShortName sAreaSelected a Qa a Aa>rU~| "!%  Y  ѽ !!9    l l:\]@5lAl l:\]35lfzl l:\]@5lzl l:\]@5lz  l l` 5luc\%      H_ ,lH=/H  zD_ lDs  l l:\]35l  g8$7 HlL0 (  8t$7 0  0  W__SRP_3xW__SRP_4__SRP_5~Q__SRP_6nrU $`(` $`$`$!` nrU , h -, h 1rU p IWqW%WO3O! !B XIXX \]A^)__I[ ``abY<qA +)!@yaQ /iGG__0 P  0   0 P  T$t<$ $ltpz/ $$7 0   0   0 0  0   0   LjZ8"0Z "X$$7 0   0 P  0   HNpp`(0lDi@hl"D. @q lUp7 lK#*# :P]lh *# *Fl:P :@ `1h/6[$DA0E>lh *# *Fl:P:@ `1h/6$DAl̓ œl lU8 d&l"D.@HHd -Fd (kFYFd $kF 0(lh *#*Fl`1h/6T 0RuP(lh *#*Fl`1h/6(lh *#*Fl`1h/60 3lh *# *Fl:P`1h/6k`lhlU\l*1h/ 0Ǔ E3lh *#*Fl:P`1h/6<03lh *#*Fl:P`1h/60<=lh *#*1h/ q- l~9k`F8kFlh *#*1h/ lh=C.'':@NhMP@ 6HHd7L  Hi % \ \l h d (  4DtD.x@qt t Tt t Tt t t t t t t t Tt t$ t& (t( t, t0 Tt< Tt4 Tt8 Tt@ TtD TtH TtL TtP TtT TtX Tt\ Tt` qt-xD.p@ql l Tl l Tl l l l l l l l Tl l$ l& (l( l, l0 Tl< Tl4 Tl8 Tl@ TlD TlH TlL TlP TlT TlX Tl\ Tl` ql-pD.h@qd d Td d Td d d d d d d Td d$ d& (d( d, d0 Td< Td4 Td8 Td@ TdD TdH TdL TdP TdT TdX Td\ Td` qd-h Hq` ` ` ` ` ` ` ` q` jq\ \ \ \ \ \ \ \ \ \ \ \ \ q\ qX X X X X X X X X X X X X X X X qX qT T TT T qT qP P TP P qP`,0(7xph 4 8     O1(1h50(qh9&0h =40h AQ4(1 `E,qhI4,hM4, hQ4,IhU4,hY4, `]y0$  ``$I`d  @4@$8nrU  Y!%iY<>>i>Qcaٖ))@8ya   WWp@ 68)4pz kz -(60@$7 0 p  0   0 p  0   0   0 0  H 6pz/ ]$7 @l l:\]@5l:+'''L:\Nll 6lL,$  l4/4 8K<?:\ %$   H  )L:\ %$   H  k )6 6  @$(7 ,lL8rU D$`$A`!$`($`,$`0$A`4(`8(h%#$`< __SRP_7__SRP_8 __SRP_9'__SRP_a'nrU   ! 9 Y ѽ9B Y<!!IN%Y)@dyaQ /i7q!?___l4d|d`1t5dltJ,pz/ 4(7td0   0   D.d"X ld# TqTDL*#`*#\4*#X*#T8*#P*#LP*1h2 `\XTPLJ"X P kJ0lh*#`X*#\*#X<*1h2`\X0lh*#`<*#\*#XX*1h2`\Xlh*#`@*1h/`\=llh*#`\*1h/``=llh*#``*1h/`?HL*#`*#\4*#X*#T8*1h2`\XT`=lh*#``*1h/` lhF8l/ D,7lh$`\XTPL0   0 @  X$l Cx T lxP!$(7x 0   0 `  0   0   \ \Xh/X5\!\ \`#X4/X5\!\ \`#X8/X5\!\ \`#X</X5\!\ \`#X@/X5\!\ \`#XX/X5\X"X < lXD/XX"X L lXH/X #XL/X TVTkV7  *#X*#P *#L *#H*F\l2XPLH!'''\l 6\  T((7l(XPLH\ 4 8 < @ D H L   d/rU p(ihU#(hY&$ `](I`|/(ha9(heY( hi(Ihm0(hq(hu#( hy$I `  i@4@$8@,<@4@@<D@DHA @LLnrU , ` )SRSFormsStringList.xml$ `8 `rU~|  B% 7Y< " 1; < q>>i>QcqddBe!! fAf lAlѽ Q il!! !mml YqqqqrYɄ pl CtlCp #h2/hQ+'''(:XNHH 6H(_c[_lp_X | #h_X /hKltFX%_X <Qlhl 4>h1x4'''(lt*#h*FH /h6H( 47xltp$hH(0 X  0   0   l x $ x x 3v4x $ x\''8'Xw $ ''l5x $ x 86)x6 X8\''8'Xr $ ''l7x $ x 86)x6 X8 8x $ x x $ 7 (xX80   u 9 :;\ '\:L]A5\? <8"X l8[ =8"X l8 :L>% ?@\ '\ll:L]Av''''' '@'`'''''' '@'`'''''' '@'`''''''<'\l04 $ 4 /046>\<`@ `@ `@ T\ *?< +'A\<4 $ 4 \46\<z-( 7l!04\<`@ `@ `@ 0 `  0   0   0     4 $ 4 4  #02/0%*#0*#,*F<20,!'''0< 6 "X l #0 /0uE  #0*#, 20, #0!*F\/030""X 4#>0F\, /,6$(L"X $kDh!0 0LU"X <kLU $8 l8c' LU"X <8 % "X l L~k& '`5 ("X lA )4 $ 4 4"X lT *? +',4 $ 4 \46z-U 7t 0i E% *#*Fli :P%`1h/6L < 8 lhl \ (0,4  0   0   l0. #d/*#`0 #\*FLh2d`\k _%1 #d2*FLh?@ABCDEFGIJKLMNOPQRSTUVXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}rU ( `,A h!4( h%#( h)#( h-,A `4#, `8 #$ `<$ `@,A h193 nrU~|  )   &9 !ѽ%q٬ II!qI! !mm>>i>Qc` tp" X 8 lp=/pIp" X 8 lpt /pl qllli Rll  Rll',:\NLL  6L, 'L 5L("X  l( t p t \ Rll ',:\NLL  6L, 'L 5L("X  l(t t p t \} Rll t p t \Rll  t p t \Rll  t p t \RllF^&  t p t \Rll ^n  t p t \Rll  Rll  Rll Rll  f\%  Rll  Rll. RllR x x  ctT`,D7txpL, 0  0 @  0   0   0   0 p  0   H  z_ $kz,     t" #p*F`%t,/p5`L"X  lL*"X H *t  u "X P t  "X L t  ct (7tp`k  _   Tl !?\ "'(#l\LH$$% &H \'H6l\L( (  _ _  T$7 Hl\L( >rU (__SRP_f/__SRP_12>__SRP_1377__SRP_14!PD`!$`$`$`$!`$I`$q`$`$`( `InrU ,rU~| Yf!gygg hQhhQ!RIR $ivvv1wqww xYxxx1yqyyyzIzzz{I{q{ |Y||||}Q}}} ~A~~~Q{ 9Y1qA +y1qa!Iq!I9 t0l CxlCt ltTK p p  p BlxFD%p kBpn knf<p l<= h<<h 0 Q<[8d4 Q T lT0  0   0 0 , 0 0 0 4 H0 8 0 < 40 @ hh0 D hc0<d 0 Q<`l`\d `\  >`1\ l\ 0!L\ x L`#`CH/`5L l\ 0NL\ x L`#`CL/`5L l\0`d  l`0/`L\ x L`#`CP/`5LL\ x L`#`C/`5L l\0L\ x L`#`CT/`5L l\0L\ x L`#`C4/`5L l\0AL\ x L`#`C8/`5L l\0nL\ x L`#`C`1H lH0V H88T X :'''LlT<0 T T :'''LlT<`FLlT<|; Q?x; QRt; QSp; Q; QTd; QUh; Q'D%P; V'D%=; V'D%; V'D%>|; V'D%?x; V'D%Rt; V'D%#p; V'D%; V'D%Td; V'D%Uh; V :DW% X 0<7:\H840d i p%\i %a i %ai %ai p%+^ i %i % i a(%hi H%1`8i p%i %ai %ai (%ai %i %di 8% ##Hi %X`,i %) i p%30% i H%tect8%x i %8%@p  t + i % 4i % Hi p%<%\ h i H% i p%) i %0i i% l T \ d h il` %t i (%` h X `x  ` `d p | ` `<L6`f!gyggf h hQhhf hygQhg h!g!g!gfh hg hfhf!gygQh0   0   0   0   0 x   0 h  0 X  0 H  0 8  0 (  0   0   0   0 @  0 h        `Y ; 4`=,`=,`=,!`=,I`=,q`=,`=,`=, `=, `=89 ` =8a ` )==$ `4`Qq =<`///// f!gyggf h hQhhnrU~| >)%3 49I444556!5>>i>>?>!!qGB HY<!qQKQI GC LA!EyLLLFMaMaNMNNNINAO PyPPYQ9Q H H:8]A5Hy*#$*FHh/$8 1$''(>$FH$h^/$6H(ypz@x, 7hX$H(0 @  T x $ 4Qx $ 7 x0   lCh :TlK<h@P_ 0P@0 0`1dP6@0#dMT@@ @: ]45@Cd ldFTlB \0 7ldhP@00 x  @l Ctpz lt2K"tMT@ '#P?/PPpzVtMT@@ $ @:0%]1 tM@ $ :&]16@<JtMT@@ ( @`1t5@lt@ )@dpz, 7dt$P@ H T"d d` 1t/`5d lt  lt?R   1t lt? lt*1tlt*#` /` lt   Ct ! lt*#` /`"d d:P]A5d8I #1 1''0>#`"*F@> Fd 2` 6d@0ltCxkRtH, 7xt(` d@0l CttMd@T T`1t5T lt?VtMd@T $ T:D%]>4tM$@ $ :&]>'6T lt%*1tltCx, 7xt T40 H  0   p<l Cx?(*lx*<( 7x X:-N   .,5 / 1t lt2R/0*# /R/*# /,:1N  lt 2\5 &\5ILiL\5Iih5L @\ `1p5 A, ("pM@ ( ,:46(,:3 /5 7', ("pM@ `1l6(lM@ $  :]45 &llJlM@ (  `1l5 4ll^5i<<(]u6'<( "lM@ ` 6 llCx L~,:0 /5 XL 74 xLt<p\,l$ 9: ;1t lt?lt%iTdd(T]uu*d(TD"tM4@$ ( $`1t5$<lt*# =*1x/ \0 7xdt D$Hl CtlCpKDlt_?Xlt__ #8_/8pn_2$_*#8*#4 284Bkn$*#8_*#4 284!_i$\\($]u!\"_lpi$\!\"_i$\\($]u\($\!\L\($hK:(L"_M$@ (]A6 HL\\"_M$@  `1x6 L~w$lp *#8_*#4 284 HH70 x\Lt<p$840   0 P  dl CtK` lt^6q`'@ 7D0d5@ltdU]dUl`@ 8 @`1x5@dU=Ld0 7xdt@L *1t lt2< +1t lt2: ,1tltCxpzL, 7xt      __SRP_15H__SRP_16 "W __SRP_17~__SRP_18'drU $`$`$`$`(!`0I` /(q`$`(`1( ` $ `(9 `I$a `$ `,`a$`$`()`$Q`nrU~| $yPnynn p%LypqA +F5pAoBY<! qI!>-4ɔ>>i>QcE!A0 `  0   Xx$ $ lx' x$ $ lxS  X$ 7 K!p"X Qp[lxhdx (ldF!`px tp ,>`1tp(tMP@@ @:0]45@6ltlt`x ,'''''0'P'p''''''0'P'p''''''0'P'p'''''' >`F@p$  p !p6>@ pP0pP0pP0('@tMP@  `1t6@ `x ,'''''0'P'p''''''0'P'p''''''0'P'p'''''' >`F@ltp$  p !p6>@ pP0pP0pP0$d "pp #ldp "ppHp xh( 4 7lhtx!`p@ pP0pP0pP00 0  0 P  8K'0 ph50 #,*F0l/,l#,kh]/,'0 pj50 #,*F0l/,l#,kj]/,KCTkh  khT kjP"lT 1T)'''0TM@@$ 60(TM@@0 0:]450M('0TM@@ `1T609TM@@0 ''0PM@$ 60>%*#,*#lT*F0X2,!'''0X 60 4 7TXlP ,0pl Ct"lt 1tCxK3DtMd@T T$  D`1x6TD8p, 7xtTDHrU (`Q,`i$`$`$!`$I`$q`(`nrU $(`(`$`,rU~| **0>-Y% @@Y<E!A??EEqA1 +9iFFA>>i>AAB)BaQBBB DIGyL9rAOQcQrrO1 i8$ 7 8$ 7 T$t"X <ltpz $$ 7 0 (  0 8  0   8 $ 7 0 p  K2L3'Dtx$ x ()>tFd .x6dD,tx$ x ()lt/2/tx''D,+*#t*Fd ./t6dD'dMT@ .5dH$ 7 txdD0   0 h  0   0   0    lK $G-dlh"X h 8d )hd<dl''$Dh$ <h -)hd6D$0x( 7l hdD$0   \(K%k x"X x 0x($ 7 x8$ 7 0 (  0   x h pzK!"X Q[d d (l =hk'd 4l?'/6 :L)'':N@L 6 pz kpd ,>F($   lS H d  HpJ&(: (]u5 J( `15M@ lk lp d 9   $ $l. hS FL*'''L^6Q pz Vdd Q\$   ld 8 kp>: : NM@ (65d ,>F  :]46C:(( d )a$ t 0Q$ ($ $ <'("X  8Q` 8`  H dh h,4'''*# *F /6 pzkJp hn :!L!'''0L 6xX 7@  8L(\hd`$ (0    0  LK!d"X Qd[`x\Xx (lX Tx ,>T1h lh2q xl ",@hMD@d"X 8d @#Q@ld$X dd  lXd ddHd xl "=''hM0@lxddMD @p$ ld=xd6$X dd  lXd ddHd xl "%hMD@p$ t5$X dd  lXd tl " ddHd x\(@ 7(`\phxlt Td@p@8k px)kxG3kxS3kxF:pzd@$ 7 0 P  0   k   , M M $\)'''t1x( 7xt0   0   0 (  0   0 x  Xl Cx lxT &FPh''hL^(/L}6'hL^(hP  Ph/L/DH$ H 0)QD[@`H<*6L` h*hP">LF,  h46, l`d `<* ldcR/lx+*#Ld h*lL*#d l*2L,H$ H 0)HxX< 7$@<h`dx0 LHDP, 0 p        !"#$%&'()__SRP_19__SRP_1a$&__SRP_1b'__SRP_1e%) `/(!`$I`$q`$`$`( `$ `89 ` Qi =1(a `$ `(`,`(` $)`$Q`(y`!(`1 4`i=I$ `,1`=(Y`8`Q =1=1$`!A(`Y $`$!`(I`$q`$ `$!`$"`(#`,9$`=4a%`=/8&`==$'`((`$)` nrU 0yQ8i<i`@aDɮ H `aLɮ1 PI`c//oo0   0   0   0   0   4 HP<-rU \$Y`$`$`(`$Y`@4nrU `#% qHBYIIAJJY<!ѽQ!RIRqRRRSQSSS TqTTUiUUVYVV)ѽ@pya WWW__0   0   0 X  0   L- 4Cx/ ( 7x 0 x  L- @Cx/ ( 7x L- lCx/ ( 7x L- DCx/ ( 7x 0   0 X  0   L- HCx/ ( 7x H hpz/ d$ 7 0   pl Cx t t  t JlxFL%t kJDt lD=pDDp 0QD[@l< ll848 >410 l02- 8 x 4 #<245  l02- 8 x 4 #@245  l02M- 8 x 4 #D245  l02- 8 x 4 #H245  l02- 8 x 4 #L245  l02- 8 x 4 #P245  l02A- 8 x 4 #T245  l02[ h l02u j l02! 8 x `#4l/45  l02! 8 x `#4\/45  l02! 8 x `#4`/45  l029! 8 x `#4d/45  l0 2j! 8 x `#4X/45  l0!2! 8 x `#48/45 c8 l<z%"*#4*#lx*F \24!''' \ 6 H l70 0@<8t\pxl$4D  #L4/L4?54*1t42lt o :<T #L*#8*#4*#0*#, #(*#$*# *# *#*# *#*#  *Fd2L840,($  #''Td^ pR6kRC #L #842L84*1tmkRd 4m  lt\4*7dTtxHL840,($  0        pOrU |(h0(Ah!0( h%0( h__SRP_1fW__SRP_20(*__SRP_21]__SRP_22#313      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijkmnopqrstuvwxyz{|~)0( h-0(A h10( h50(h90(h=0(AhA0(hE0(hI0( hM0(IhQ#(hU#(`\$ `` (IhY0nrU !XY)1@ya  / i     7 q    ! ? y   7 q    ' g   0 x  0   0 @  0   4 8 < @ D H L P T X \>rU ( hu (Q hy0, h })0, h )Y  @4 @$8 @,< @4@! @<DA @DHa @LL @TP @\T  @dX  @l\nrU #ѿ) @XyaQ"  "/"i"""""7"w"""7"_""""_""""_"""""""w"""_"_"0 x  0   0   0   0 `  0   0   0   0 X  0   0 x  0   0   0 (   0   0    0   0 (   0   0   0   0   0 `   0  ( 4 6 8 :      XorU "d0a" `= 3 ,"hA3 ("hE9 (!"hIQ ,a" `q 3 ," ` #< " `   3 0I" __SRP_239__SRP_24,.Q__SRP_25l?__SRP_26-1`M 3 0"`Q) 3 0"`UI 3 0 "`Yi 3 0I"`] 3 0"`a 3 ,"he= , "hi= (I"hm0,"hq = ,"hu1 = ( "hyY ,I"`10("h}y ,"h=( "` $I"`  q @4 @$6 @,8 @4:nrU %h)@ya $W$$$$W$$$$W$$$$_$$$$_$$$$0 P  0   0 0  0   0   0 `  0   0 @  0   0   0   0   0 h  0   0 h  0   0 8  0   0    0 p   0       7rU $,$ h4,A$ h!4($h%0($h)0,$h-4,A$h14,$h54,$h94,$h=4,A$hA4,$hE4,$ hI4, $ hM4,I$hQ4,$hU4,$hY4, $h]4,I$ha4,$he4,$hi4, $ `l 0 nrU &,&`Q4$A&`$&`(&`rU ' !Qə))I>>i>Qc1Y  @ً`& D `& H` & LɌ`Q& P`& T`& X)`& \Q`Q& ``& d`& hэ`& l `& p1`I& tI`&xa0`& |I`& a `&  `I&  `Q&o&W&&&&W&&&&W&&&&_&&&&_&&&&_&&& 4 8l qx(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx )tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx)tp(t! lt=ppx )tp(t! lt=ppx)tp(t! lt=ppx)tp x < x qx  $7 tpKx$ Qxt$pt Xlpj`%,Fa<pt PlpLt `lL<*(j`%,5<ct@(7tx< x! x 0xv"X $kvcx! x 0xx! x 0x u x! x 0x x! x 0x x! x 0x x! x 0x$7 x 84884k . prx! lx=ttkr)xt/ prx! lx=ttkr)xt)x! lx=tt<)xt4@,$7 xtk l H  cl%H 4jl%H24jlHWL<(\,*46L<,|fl%H  P$7 L<,0 H  0   0   0   0 H  0   0   0   0 H  0   0   0   0 H  0   0   0   0 H  D 2$7 0   pt|H  l  D PX`\TdhL@x__SRP_27}clsInking02-clsRoutingGQclsUserList/;i0&`=$A&`$&`$&`$&`$A& `$& `$& `$ & `$I& ` $&`$&`$ &`$I&`$&` $&`$$ &`($I&`,$&`0,&`4 &&na~F< (iw#~' @=WED*=h8+3q AFQ; x AFQ; =WEDMED@SS S<< <>" LLLL  2-Mar-2011 Initialize changed to support Excel on 2007**** 25-Feb-2011 Created]` encapsulated properties O]0   KT$ office 20039A@S$( assume all later versions work the sameA@nkop   KT$ office 2003rue IFA@S$$ assume all thers will work the same1A@nko start inking in Office 2003E on entry mbIsSupported=True, exits set to False if there is an error]]]0]P'PC this should work since we already checked that inking is supportedInk Annotations %. (   !: ! # .ykx G|j  !: ! r# B@', ***********ykopC this should work since we already checked that inking is supportedInk Annotations %( `oX InkingStartA@! close inking cmd baro InkToolsCloseA@# close inking cmd baro0+ This shows or hides the inking command barQ To ensure a clean compile in Office 2003, set Inking=0 in the project propertiesO To get a clean compile, if inking is required, comment out ExecuteMso, compileK and then restore. At runtime on 2003, the callers will compile cleanly and" this routine will not be accessed 8  !B@|'o 'm1 determine whether inking is supported on this PC $ x H warn user that the property is set but ExecuteMso is not being compiled8To enable inking, set Inking=1 in the project propertiesA@/ avoid ancient systems because the code crashes !X'  x  this errors on non-tablet PCsInk Annotations %(  4 Office 2003 tablets: returns true in Word and Excel : Office 2007 tablets: returns true in Word, false in Excel Ink Annotations %!  '& as a final check, try to start inkingA@A@,! clears mbIsSupported if it failsA@,! restore initial protection statekkkocAttribute VB_Name = "clsInking" " Bas0{FCFB3D2A-A0FA-1068-A738-08002B33 71B5} |GlobalSpacFalse dCreatablPredecl2aIdCExposeTemplateDerivCustomiz EOption 0licit ' This Iss supports i Offiv2003 and above.When 8the#ed, Class_Initializhecks wher0:ed*Start will hdisyy4LcommGbar#` Stop  rdoes NOT c hangestZ of protecOwhich should be @ dl/ b(calle%A*** v0 4 Bui 10 21-Jun-2011 C2condPonal @fR?oy GX()#xY=kyqPr *M1' determ2/׆yPCcSERead(CP_C@HECKIN G) <> ""S Q0#wQ' warn user#uQ3,ya/(Q!0 Icompiled MsgBox "To enable inking, seHt I,=1P the projectperties"#En0d If ' avoid ancient systems be cause[code crashes9mnOfficeVersion = CInt(ApplicTat.)4If 7>= 11 ThenOn Error Gorrlab'Zis es Mnon-tt PCa.WCommandBars("@ Annotes").Visi= True@@ 2003 =s: returns tWord Excel 17, fazljiI\8_K#Or Is, mASmbIsSupported?KA As a final @check,@Jy to start@LH&UntO SA' cle@} . if itWil HProB'zstoriti3%3tL!+-vb Gz  `_d: Suf">~۟l+L|hX*=h8+3qxj8rH/w{xxj8rH/w{֓+L|hXME0SS S>""  " <4<8<<<N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}p j&X<,@j*PD<@j,HD@b0P@b4X @b6\ @ %,!:h dk` T Fi  ****`<t *,!@h X Ri Bh` \..[`<@ >`8+ |;;i  `<h AT@h ` iV AZh di\ A^hx x+hi` ,!^`h @li ust Abh pid ore ,!b h  t i  lace Afh `x ih**  `8 k @l para%j"04@j$8$@j((@4@j.xLL@b2T @b8` @hXx `(P @0hXx `(P @0hXx `(P @0hXx `(P @0hXx `(P @0j^l"n$p@ \ ``xr  8 ``x@P X &r(t4P*, v.2:H@V @h P @ L 8 ``x@H @ 8 @ ( @  @ @ ``x` H  ``x 8  20H ` h: `:0 z 0 8H HH P >`p @d hH> @>`l xP`0JL2*."$0@d  (Kq xhPx8@` 0@\ L@X @T @ P @L P4&(68,7@J PL@8   p8%X TOV$*\Rffff*0q56cb4f54$*\Rffff*0f56cb4f54$*\Rffff*0h56cb4f54*\R0*#17*\R0*#e$*\Rffff*0m56cb4f54$*\Rffff*0c56cb4f54$*\Rffff*0g56cb4f54$*\Rffff*0e56cb4f54dF F BP ` J FH " V P "` ` N 8 LP " J " P@ `  Z Vp 0  Z >` J  F V@ 8    8 6P > &   V@ Z > :8 x \ &  B T x H   B (  . P X " ` <h  B  6 8 \@  0  N P0  H 8  T h Hp @  88 \H    H,  ,8 h  x  B   R  < P h Vp  * H 4P @ ,      , 8T D X$0h $0   B P( x&)     F *?8 4)h     "    2<X ` "  h "p  "   J   ( 0B 8 @ H"  P X `B h p x"    "  0  !!!!!(  8 X h  *x F* 87@ !   x@****************************************************************; as of v05, SendForm must be set before setting RecipientIDY this allows the path length to be checked before the user-selected recipient is includedC (FilePathLength and MaxFilePathLength are replaced by PathTooLong)@**************************************************************** *** v06.21 ***************O Aug 22,2012 Supports SenderID (as param 8) and Date of Service (as param 9)I determines where the sender goes *** v06.12 ***************Y Mar 7,2012 Support for for all-use repositories (which support RF, MF and ROM forms)G requires extra tests for ConfigureForm.FormType = FT_ROM *** v06.00 ******F 12-Dec-2011 Support for Routed OM paths -- see SaveFilePathForROM *** v05.01 ***************C 22-Sep-2011 SendForm parameter changed to boolean (was string) *** v05.00 ***************J 10-Aug-2011 send path length is checked when the class is initializedZ RecipientID sets SendForm to ensure that path length is checked correctly *** v04 ***************S 2-Nov-2010 re-written to allow override of all elements in the save file pathP 9-Aug-2010 comment changed: .SenderID = GetDemographic("/CurrentUserName")* 30-Jul-2010 global gsSharedID removedS 3-Jun-2010 Support for setting the sender (with appropriate SRS dialog setup)8 MaxFilePathLength, FilePathLength addedD 15-Apr-2010 DocWasSaved property is now written from this class@ for usage, refer to RoutingToolbarButtonClick and frmRecipientsO These properties are all loaded in Class_Initialize and can then be overridden] ] 0] ] X2 the following parameters are set via Property Let MessageBody SenderID DateOfService ' v06.21Public As Date/ ( is accessed using property Let -- see below)] (&/ polling folders (loaded from gFormsParameters)] P] & loaded from demographic encapsulated properties]x]& set true to sendO In older dialects, the senderID -- if used -- replaced the msg body as param 5S so msBodyOrSender can be set via either the MessageBody or the SenderID properties8 eg gRouting.SenderID = GetDemographic("CurrentUserID")3 or gRouting.MessageBody = "Bagels in the Kitchen"]V v06.21 also supports the more recent dialect where the sender goes after the priority]( is used will be param 8] 6V05M Return true if the full filepath exceeds 245 based on the current properties] >'<"9 full filename including the path but excluding extension < G':jm! NB, this is a read only property( allow 245 chars before adding extension'@m6 This normally does a save and exit without returning.< If the filename and path would be too long, it does return.0 Before calling this, set the following globals:U gFormsParameters set to a clsParameters and supplies the polling folders* Set the following properties as required:G SendForm True saves in the folder for polling with messagingJ False saves in the folder for polling without messagingB if <> "", the following override the default in Custom properties1 RecipientID, TabID, DocumentName, MessageBodyM NB, AutoOpen sets TabID to the value if this is present in the XML]8$9 full filename including the path but excluding extension]P >'<$1 ***** NB, all the logic is in here *************2 if the path is too long, warn the user and return :8 v05 Routing path is too long.  <$ ...  <$' A@d@B This allows cmdUpdateAndExit to display when the form is reopened DYesA@n4 create the property% save Excel workbook or Word document <A@F ExitA@Hkho`hL Returns the full path and filename (without extension) for saving the file.6 IMPORTANT: For entry conditions -- see RoutingActions ==========P This has been split out of RoutingActions in order to test the file path length# See more comment in FilePathLength]$9 full filename including the path but excluding extension- v06.12 support for for all-use repositories J!8 L & $N'>B v06.00 (pass gRouting)( d 2 TFname = TPath & TSharedID & "_" & .TabID & "_" & .DocumentName & "_" ' & sRecipientID & "_" & .MessageBody & "_" & .MessageSubject & "_" & .MessagePriority % Form the filename including the path * ._ "_ $_ 0'< > Append the msg body and the msg subject in the required order P!R <_ 4_ &'<dh <_ &_ 4'<k8 <_ ('< ; v06.21 support dialects with sender id and date at the end I sender id MUST be inserted if the DOS is required -- see IncludeSenderID 6 <_ 6'< 8G <_ 8'<jk0 d(  save without send @ TFname = TPath & TSharedID & "_" & .TabID & "_" & .DocumentName , ._ "_ $'< 8G <_ 8'<jX v06.21kX <'>kHi@ P!X V'6+# v06.21 sender goes after priorityd V'4+. for old dialects sender replaces the msg bodykm@% in case date is invalid \Xyyyymmdd$'8@m8C set mbSendForm to ensure that PathTooLong gives the correct result'2 `'0m 0'^m` d'2m 2'bm  h'4mh) load default values from form properties] j$'^ l$'" n$'$ p$'& r$'( t$'4 load polling folders P!*'* P!,',$ get the shared ID from demographicssharedID$v'.? check that the form could be sent with the supplied parameters'2% check length for sending, v05 : %Routing path is too long for sending. Check the form parameters.  Press OK to Quit' A@A@Hk'2% default to no sendorAttribute VB_Name = "clsRouting"D Bas0{FCFB3D2A-A0FA-1068-A738-08002B3@371B5} |G lobalSpacFalse dCreatablPredecdlaIdCE xposeTemplateDerivCustomiz EOption 0licit '*<! as of v05, SendForm m@ be set1for RecipientIDthis allows the path lengto! checkube#user-selectrE included(File PLand MaxM'reUcy  TooLong)@H"@H6.21 AAug 22, 2012 Su@pportsSe rID (Yparam 8) 1D]Servi;9-A demines whe @BWsqer goesB,B/'P/Mar 7 / kV w-l Xosit(wh ich sC: R F, MFB6ROM ms1requirextr`a tes$ ConfigureEO.TyppTf_ 00d0A/1@2-Dec-@/1&d/"a`BRs --Ze SaveeH@ 5.0r<22-Sep ee:0 chang^oolean (w ?s@Q$1` e10-@Ig 9*jdi=n"n ssCgitializgGaRwzSA- ens/ atcorq utly! J41 2-Nov0Bre-wUteoC overrideA`K @m@cs@4 f 9E#1 com!e.: .cm= GetDemograpAT("/Cu`n,tU"bS30P-Julg gsShaAD@^m aB3nIMo(wi`appropriA}SRS d 4oRg0up0d , d15-AprDocWas[d ertByCnow E0from<Ilas 'kpusage,fBdlbarButt(onCk}frmFJTheDi|(!> loaA` in C_lInEUc2nb!den Pub Tab`A+4vuA !" Mes Subjf T'0e@Dm`([A>nPVqqvia PRLey'xBodR2%)#_Of^1'"Y21/!(accP 0EusbLbew$fPollwmsg r8E' pfolders (!g!AsPj ro F3\ Id9 encpapsu+$ DiЈsKnbQrLBtW'6 trueN1Uq3In 29"s,BB{bif odold2]Ab@s}5!so msOr -t"e A5' orR3.4Qeg g8_NWNHNID#N+B>lWKitenZ (v00o 4~m`b\e abQҌff$'1willQCC8%6 F;s`b٢()3$'V00 'PxturjA%@"K fu1k"exceeds 245d bd achZB.1s^<S= zQ 'wnQ> P `aő!If b(f) >R ]nTaEUsIntegerQ' NB7i a@ha!lylj``m`@Ladd_ {=Q  b 6Acs(USTn y d1 a ҊQexit a@ !". "" would,too sng, BLreBe`{e@FllA,NF]aqs:| ߐE^SS 0`{z?lp+;d,SgPowMes as required:  '0 Se@ndFormP True$savin the folder r polling with messagva Fals!Mo utPWif < > "",lowoverridedefault Custom prope rtiesPRecipientI@D, TabDocum Name, MkeBo dyNB, AutoOpen sets to@ val[this pres0NXML -Dim sFilePaAs Strs' full fnTa&clud)p%bex extensionMsk= zS@}C' * >aAlog icA5Zhere C' @ e 'Atoo long, warCusandtur*If !ATooL@ Th\A' v05I s; = "RAJ "." & vbCrLf _& Left(H, 20) " ... Righ pBox CEw':I@Zows cmdUpdateAndExitdisp`lay wDAcf re@nedPÿyWrite CP_DOCWASSAVE`_ "Yes"f' cre Yg_ ' !y Excel workbook or Wo0rd dhApplicat PAK[G'' itYQu CE FI f !Sub PrivA0Funca Z(),#' Re!NsbBkCaQfl(!{afi)!oa.D % IMPORTANT: @ry condi!s --e mRA= Tehbe+t aof, @2kAC#qlength See moycomL$z6.12 suppport/c-@positorfConfiPgure.TypeFT_ROM AB#y1ed Aa+= (Me)6.00 (pass g=P%#X'mbFg'aEFb= T& TShaIDK_QK.booTP'1& st'8sN9ject~:tTFu} ?qV,or-;mPollwmsg@w0mY['^ `K0 bP EZsubs!PT0`gasPar~ters.2edyBe`_>e!& "B msOra%pBeKko=؋: l]q? юL% s821vDdial)sc3idrv avMUS0T bePRtedDOS^InQeID{>shJx& mF2DqOfServiceq9L K#%v} TLLQP:-./<Y$Ao9& /Ae??8U*+ j#Ssy0t ((ByVal )FƔ OJsgAf@Ke9-*yq;rn1:goAic[&M- pM @=recp[!\az%On Err0 GoTo plab pn ca "JiJnpims=mat(CDate(sPOfService), "ymmdd")  errlab: End Prope rty  Let RecipientID(B@yVal s$ As StrinFg\' s:mbSendForm to ensure that PathTooLong givese correct res8ultKE= PTruem = iG i)`: q= 5.yBooleana= ^0])[ -!A,MessageBodyExJx%-s OrerMs Q/iv Sub Class_Initia lize(load defa valufrPom fApi es"CDim psMsgoRead(CP_RECIPIENTIDTabID#@2M TABDocumNameA DOCUM_pNAMEE@>j =E"MESSAGE_SUBJECT Prio0rity PR@IORITYmMfBODeF C'' /pollCz@.lderD-Pwmsg`g!zPsPar t.eoYc' grthe shared @1>demographicSB5% yD("cID checkC Hcould b `9 withsuppli>p&i' leng nd@(, v05 IfThen! W+"RouJt!/p ioo@2`h ." & vbCrLf _G& "C$^e$f4Ps OKAQuit"g `lBoxhmA&cationgIfc'Falseb'~yno' gA       !"#$%&'()*+,-./0$3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^abcdefghijklmnopqrstuvwxyz{|}~Tx8vlr~{` 9rW5Ok֎*=h8+3qiEexiEe 9rW5Ok֎R(RR`RME0 (SS S0@1H,Hj",<<$6"<4<8<<<.d00N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}jV8, @BZPHb\<@"aD@SRSFormsUserList.xml %,%====%`%@ firs`%j`X====`%,h, ` < kIv d%) %,!zh PH@##t%)p ****%`.Inse A6h D)|[ 2`% A8`h 8H)~XD 2`%  ` 66)Para%@ B %@ enam, ` X )xID>,`%i  v-20,x ` H//I t-20) (e Us` %i Pfixe%)p Load% sin%@ tes @ serD,X ` (LI 0a pa%)P me o%,` PI  is %) ist %,@x` (HT &I Phe X%)p be %,` X -I  o%) ti%,` Hh\ 4I p%) %,( ` ` ;I %) %,! h p h d U%) %,! h h \%) %,!> h H lei  %` ( h pw) %  %  h h t) %  % A h x i, ` P  ip i A h |i,!(` h 8 0  %)X  % ` i@ ` @ @ @$% `(% (% (%@ %` `  b `8%j:4 @j<6$ @jX(:4 @b^x@@"c0H@"fXL @"hP  @jlCjnCjpC"rTX @jtHCj2pCj4CXX` ( (   px`x(hx  P`  H(0( jlCjn(CjpCjtxCj2Cj4CXX` ( (   x`x(hx  (P` P x(0jlCjn0CjpCjtCj2Cj4CXX` ( (   x`x(hx  0P` X (0jlCjn8CjpCjtCj2Cj4CXX` ( (   x`x(hx  8P` ` (0jlCjn@CjpCjtCj2Cj4CXX` ( (   x`x(hx  @P` h (0 x(h8`8d,CTOV*\R0*#1d*\R5*#61$*\Rffff*0j56cb4f54(*\Rffff*0j56cb4f54\0$*\Rffff*0k56cb4f54(*\Rffff*0k56cb4f54\1(*\Rffff*0k56cb4f54\0Xko> <H  X X X@ " D  &( &P Lx  b JP > T X8 . 0 * *  >P  P N $8 ` `h  T N( Vx      R p Rx D  V $x  ` \ &h  ,    2 "( P ^X   T 0 P8      J " @ H 6P : Z p( B < P(x 6 B   > H ` B h <p 0  N J8 L     @ 0  P `  hp      "     "   L ( 0"  8 @P  PX      < 00  ` 0p   L  F `p x       *  0 8 @ H B  P :X  4  B  :( h <p F N JH R X <H  >  (  N`p      < (@ Xh       B   : P hB  p <x  B   >   8B  @ <H  B   <  B   J Ph 2  Z HX  R  R h Pp : "!(! @! B H! 2P!  ! !B ! 2!  ! ! B ! X" $X" "" "  ""  " " ""  " 8# <8# x#  #  ##  &#  # # #"  # 8$ <8$ x$  $  $$  &$  $ $ $"  $ 8% 28% p% B  x% 4% % 0%%&& &"  &  2(&`& h&B p&  x& & " & B& & >& 0' L8' *' ' :' ( @( @H( H( V( () H0) x) 4) F) * Z* h* ^p* * ^* 8+ @+BH+*+++(+8,H,P,h,  p,4,,,  ,:, -(-0- 8-  H-  X-2h-- "- .-  .  B. `.  0p. .  B.. 0.B(/p/ / // // / / / / / 0 0 (0 @0 P0 `0 p0 0 0 0 0 0 0 0 0 "1 81 H1 X1 Bh11 &11 2 L 2p2 2 2 2 F2 303 83 @3  H3  >X3  3 3 3 3 64 P4  h4 x4  "4>4 4 4 5" 5 5 05@5 H5 P5 X5 h5x6 treat upper case and lower case as equal ie "a" = "A"er5 Class to encapsulate a list of users loaded from XMLxR =================================================================================R NB, create gFormsParameters as clsParameters first to obtain the default XML pathR ================================================================================= *** v06.00 ***************J> 13-Dec-2011 PersonID supported, password validation removed *** v05 *************** Sep 13, 2011 comments reduced *** v04 Build 7***************E 3-May-2011 InsertUserParams added allowing up to 26 UserParam tags *** v04 ***************[ 24-Feb-2011 Properties added: FilterBy, RequireSRSID, RequireSRSMail, RequireReturnToNameD 23-Feb-2011 PipeSeparatedList property added, UserParamC supported7 29-Dec-2010 fix UserParamA being loaded as UserParamBN 15-Dec-2010 UserParameter1, UserParameter2 renamed to UserParamA, UserParamBmodER 10-Nov-2010 changed to , , GetUserBySharedID added' 8-Nov-2010 RequireReturnToName addedth) 18-Oct-2010 AgentFor and Initials added# 17-Oct-2010 MessagePool tag addedple Us# 11-Oct-2010 GetUserSelected fixed" D7 8-Oct-2010 UserListLoad supports lists of group tagsinJ The list creates a collection of clsUserDetails objects which can then beG loaded into a Listbox or combobox or used to look up a particular user eg by shortname or by SRSID.s.SRZ The full list also can be accessed via the UserList property but this is not recommended.M The list can be loaded with all users or with the subset of users which haveord H a particular tag in the XML. Groups eg doctors and nurses can be mergeddP and can be SORTED by shortname or by signature prior to loading into the comboxna or listbox. Notesti -----K 1) If used, SortBy or FilterBy must be set before calling UserListLoadK 2) When populating a listbox or combobox, users with the corresponding> XML tag eg missing or blank are not loadedO 3) When sorting, a warning is issued if the same signature or shortname is loaded more than once.Z 4) GetUserByReturnToName will return the first user whose ReturnToName is a substringU of the supplied string. This can be easier than identifying the exact strings expected in ReturnToname% 5) more comments in UserListLoad Defaults ========+ Default filename is "SRSFormsUserList.xml" Default path is loaded fromW Sample useage: eg zMixedRecipients in frmRecipients or ChooseUser in customAutoOpenEtcN Dim SRSUsers as clsUserList ' the whole user list (declared global) ...J These can be set to restrict the list to users containing particular tags] h] ] ] ]SRSFormsUserList.xml(D encapsulated properties (accessed via, let, get and set properties)]P% eg "C:\MyXMLPath\"]]x/ These can be set to load a listbox or combobox4 NB, only one control can be set in each clsUserListS when a single item is slected, it can be accessed using the GetUserSelected methodiDim mCombo As ComboBox ' combo loaded from or ' v06.00 not supported]%4 Listbox loaded from or tag]0]X%- NB, if SortBy is set, this gets set the sameI This identifies how any associated list/combobox control was initialized(A@lA@nA@p`]&' indicates the type of control assigned`A@tA@2A@4x7 returns Nothing if sShortname = "" or if no user found v 4$x.i5 gets the user currently selected in the active list.) returns Nothing if the User is not foundG Generally this is called from a change event on the combo/list controlC and these can be spurious if the user just typed into the edit boxF In this case, the ListIndex is still -1 and the call returns Nothing.]x'.: check that a user has been selected in the active control b!bG b!8'.j . r nKT .$@.z pKT .$.zn` kX mP  |'f |'hm0 E this restricts the list to shortname or signature without sorting it ~'hm `]]J NB, setting SortBy also sets mnFilterBy since this is imnplied by sorting h t  `B@d0 h 2 4 6$0 (H !L'+* this will return the value of the key tag + skip users whose key is blank f t  `B@. just filtered -- don't sortdX F look for the first loaded user with a higher key and insert before it  ` !L +The following user is listed more than once   ' A@| !L  e add before item in list   !L `B@|0 k( $ add after the last item in the list   `B@k k k o 4 check that this is the first control to be assigned r l 'r'd@ *Only one control can be assigned to a listA@'ki 3 searches for a user matching one of the key fields6 sSearchKey the string to search for eg "PEARL"? nUserKey the key field to match eg USERDETAIL_SRSMAILH bInstrmatch matches the first key value which contains sSearchKeyD ie doesn't require a full match. This is used forK ReturnToName matches where it is tricky to get the exactQ names appearing the dropdown -- generally lastname can be used6 instead providing these are unique.7 returns Nothing if sSearchKey = "" or if no user found]x]* the value loaded from XML]H remove leading and trailing spaces from the string we are searching for $'  $'   `  (H !L$' 6 eg sSearchKey = "Brown, John MD" (from RetunTo Name),! sKeyFromXML = "Brown" (from XML)  $'    .xzhk`kXdP   .xz(k k ki3 returns Nothing if sSRSID = "" or if no user found  0$x.iX6 returns Nothing if sSharedID = "" or if no user found  :$x.i(7 returns Nothing if sSignature = "" or if no user found  6$x.@ix5 returns Nothing if sSRSMail = "" or if no user found  2$x.iX5 returns Nothing if PersonID = "" or if no user found  <$x.iC The ReturnToname is filled from the name chosen on the dropdown ofI the flowsheet request form in SRS. It is tedious to copy theses into XML, so an an approximate matching is supported.S Typically, users who have unique lastnames can be matched using the lastname only.A Other users will need to be matched exactly. Eg the XML might beK Willard unique last name ...K Smith, John MD Smith not uniqueJ Additionally, all internal spaces are removed before performing the match3 This is for compatibility with an earlier version. NB, uses substring matching  8$x.i( + Returns the listbox loaded with signatures b.m` + Returns the listbox loaded with shortnames b.m R This generates a pipe separated list of the key values (signatures or shortnames) for use in frmSelectFromList]h ]  ` G |'j  !L'  '>m 1 When this property is set, the specified listbox5 is loaded with the Shortname properties of mUserList] p$ .b  ` !G ! bB@\j km( 1 When this property is set, the specified listbox5 is loaded with the Signature properties of mUserList] n$ .b  ` !fG !f bB@\j km 2 This allows the default XML path to be overridden $'\( a "/" is appended if requiredm - tidies up common errors when supplying paths $' $\ $/ \'k 'i , this allows the default value to overridden '^m `.(mp` < Load a list of users from XML into the collection mUserList7 Each item in the collection is a clsUserDetails objectE If sTags is supplied and <> "", the loaded records are restricted to# those which contain a matching tag3 sTags can be a single tag or a pipe-separated list9 EG UserListLoad ' load the full XML list9 UserListLoad "" ' load the full XML listA UserListLoad "Nurse" ' load users with a tagO UserListLoad "Doctor|Nurse" ' load users with a or tagA Set the following properties first to restrict or sort the list:- SortBy to sort by shortname or Signature? FilterBy to require shortname or Signature without sortingT RequireSRSID if true, only load users who have an SRSID (nneded for signatures)X RequireSRSMail if true, only load users who have an SRSMail (needed for recipients)X RequireReturnToName if true, only load users who have RequireReturnToName (OM only)] ] 63 load a subset of users based on the Tags parameter] 6 array version of Tags](]H6 all the users]h6 all details for one user]6) one version of User name eg "FAST" or 27]]6 Object]  |$'2 split Tags into an array'k8 \1Tried to load users without initializing XMLPath ' A@|k \ ^'$. ( (>" checks for 'well formed XML' only  % !.> all the users  !> details for one User. ; if no group was supplied, load the details unconditionally '  !> for each user attribute < if loading from specific groups (Tags parameter is present) * load if this user contains this attribute   B" merge users for all supplied tags5 $'yhk` kH5SRSIDKT5 (SRSMailKT5 (> ShortNameKT5 ( SignatureKT5 (fInitialsKT5 ( SharedIDKT5 (.AgentForKT5 ( ReturnToNameKT5 (BPersonIDKT5 (@ MessagePoolKT set true if tag is present (DPasswordKT5 (UserParameter1K UserParamAKTJ for legacy xml files5A ,(UserParameter2K UserParamBKT5B ,( UserParamZKTF this is used for the PersonID in some xml files created before v06.005Z ,( !@G5 (@jSP 5 UserParam? @ this will give a warning if the suffix is other than "A" to "Z"55$ ,(k n q  7 Append User to the collection if all criteria are met < !>G'j : !G'j V !BG'j X !@G'j 0 this will add users after sorting and filtering G A@j d  Error opening XML document$Error opening User List XML document   ' A@k o  set default properties P!'\ Z'^ t'f l'ro Attribute VB_Name = "clsUserList" Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |@GlobalSpacFalse dCreatablPredeclaIdC@ExposeTemplateDerivCus tomiz EOp tion 0li cit CompI Text" ' te u@pper ca@nd lows equal ie "a"A ' Class to encapsuW a l of us%ad_fro`m XML=MNB, c3e gFormsParters0 as first/obtain the d@efault) 0path*9 *** v06p.00 A13-Dec-2011iP0onID siorted,'ssword validaa|remo 5QSep 13, comments ucedG'4 Build 7'A 3-HMayD(InztAX@[d|aling@Z26  tagsI@24-FebPDro Ttie : Fil ;By, RTireSRSIDMailReturnT&oA{23 ipe"E+ p y aA,'C09%50 fiBxA bel.o`PB!15k(Fe`1 2@3nYd(&A 0-Nov%@ chang pt, viaš"Z is @notKv ##awith {"subset'c$hav'7` d`. G2g doc toᵠnurs}cmer`,1%DSORTEDCigna ?ePi` 09 @P!NoteJ-0aX1) ImPX2SByH m y beforepllq)2When pop!taRR ,4correspond0[  1. P$<6$> missblank ?^ q443 s ,warn2#su%if%rsI sg+iO! 0S mt0I onceN4PH*Fwi`.r["{p80`]%!-a?bspngh1^ИV=> 'Y&R4MS?.)'w?tbn$mEnumnp=R"aH',[ (sqac'#XV1+howssociated list/combobox control was initialized Enum LC< LISTC_UNASS`IGNED *"ATURES_L 4HORTNAME!End T @Dim mnm DAs | 'dics the type ofassign!UserTSortUSERSyEBYba SV` yp1`Function Get:BySh9name(ByVal sN")mclsDetails 3' returns Nothin0g if% =@ "" or no un founփSet@BzKKey(", A6DETAIL_<, Fals= 0 Th4=bueeF <>!^'N C`( "×hi[i{ a`ue(eg)젉aawcIfAB!ya{L`By$nJ9=!"am= $cmnFilterBy`(&#)EF`Í6'`Xjres _cby qse'a"8 without s@t!! ek'Priv Sub zAddToColA`(New'˾&vdacMsgC*' NB, tttk$4oasbshinc sh!mnplipPbWci<)oUN#s=3 1m. E0f=a.Field #IIf(:$ hkQlY{1sp XIqD%wAYCXP&e val ueQckey taA BL:' skip"}s who fblanko{rT=|_ Q(' mf<#-- don'2;!@' look{rRfirsloadh9Pihig0her qaqinP @uefore .i0; uFEach 7 wOQ(C!= iqs;p&"llow!;`!Jm t@ce" & vbCrLfo{ePBpOEExJ_Q}>7'0 add@ema/%* OgetCexactWn@s app@r\@kdropdown -- generally lastA can Tbe{diead providDs@>*unique.r6@s Noth ifHW = "" @nofounE Dim dsFromXMLh 'BN|`loadee @ C+ƭNoSpaceĶ3mov e Ђ?and ,tr6s fAwGCj d= Trim:(')M&Re pl@, " Z""I-<>-Then#2F/Ea`_ In mLisK%(.!,} %t' !i0`ue it+' | %"BrX, John MD" .(".hh h),  HD O@a ..e/(/InSt&r:E>, ) x> 08aS!zGet/By@6a"%Ex@FunctioCE`]IfOElse/,"=I?e pNext#E n !g$% -`ID(sQRSIDQsQ# ?![  P$, +rID, Fa.  hared( _ PR 'pl_ rq_ <>W0ardDim UsDerclsD`etailӁs?fe@` EachIn m@C If <> "" T(henQ=& x"|" A&.pKeyVUCNext0 Avǔºʓ(rSAHAṴs ' WD*tp set,BspecifiD F i@j] 9zCheckControl(LISTC_SHORTNAME_);Aa#bS@l"g]Kb<Name K .AddItec`.'B =If??{????s*"???  ??,6?IGNA TURES_?stB?"/? c?&|?'? ~L`XMLPath(B! sgH=allow#default ` p` to be overriddencmF = zClean)"'`"/"Aappenif req`uiredX!Priv Function D  tidqFup commPA0 ors w^uppplyqb:s= Trim(!S@>Right, 1)R>\" A fsd\d=A* e(dFilehHS'@\Z#qM"h"% \1ZColaa1aX5P` .SubRr"L(Op!al D!Tags"".!(j!Њ f0.in.!KcV 'ia\<A objEp$s s(ta $rCCvt@recordre3s0cP0thowhi cpap a match!.ta  can=angle pS-[EG :'`full"r@dtNurxse"6Ca <2\>qtDoctor|x0 <Z-!f %owF1qIfir0h@'resPB:t SBy9|byǸ9:t|erSW_Ңoxut  TR[SRSID \true, on lyho h0ave &(nne_ĔUv)!Mp?d ?01(neVP3ipients_ hcToҚ  Z(OM[3!sMs7b*L〴JBoosq? ':ub@bas@m%bDYmea, iarra0ersAwMo.1 MS_2.DOMumo8\"IPNode|ЁA! R l(õIXMLDOMNode ' all details for one user  Dim oU8DD As MS2. 'version of z name eg "FAST" g27a`sPathosqpcls  ' Object? bLoad9Bo`oleanIf sTags <> "" The%a = S plit(, 0"|")4 ' s into an array3CSubset = True End IfJms!KsMsg Tried 6lps without initializing %"/FBox Exit (C & Cg@G(&b FilD4 S!:oDoc NewŊumenDi A .asyn Falsv5dateOnParse@B' checbk'wem@OFlj^B(:) )B81LisuBdocB7Ele9 ithsGF!Eachs IE.Childs'A Ays4 lu' if no group wa s sup`ed, Q%uncond Ronbs= Not d#f##'e*e attributHV !Wji0 s#C!pfrom@e cificC&s "(parter is presb) A S#Rd'04th ǂ0 ns BT h ,iBLBo0und(bo U @' mergYb-!EB t` .nNA= B (i J"Ǫ5`;- Nexs#uSel C~a S7""SRSIDh h?.Typ`edVali UM/,O5Dhort$orj5Uignaturer5UןI3sury%oEhared*Ut$oecAgV@@uri%oEcRe!nTo*uviOEPonUt%oecMessagePr@tpfxt_9 ` _dy_$assword YХP$/Ec t1"A"tӑlegacy xml fh ("A= d/O_ _ r2Z Br ("B n  ZW'Sd"!3in so` cred bee v06.00Y?2Z=ݲalue If UserDetails.PersonID = "" Then<.nodeT`ypedVCase ElsName L ike "Papram? ' this will give a warning if e s@uffix other an "A" to "Z"1P(Right(`, 1))%End8 If@SASe0lectmAWi th KNext< o> _ ' Appe4A W[ col)ion d aicriteria are8 me0@RequireSRSM@ Aǽ bLoadbFa?NТReturnToM (fz }84'f add us af@2 sortEAga`,fil4ng2C BzAddToCg<Fs-K' Error oL!XML documenGsMsg ?"kQList " & vbCrLf sPaic Box g'#iw Sub Private  Class_Initialize()  ' set default ,pr /eD!ms`gFormˠe1s.D!"File DE@FAULT__0FILE#nS @;ByUSERSORTBY_U2NED+!%Co ntrolLISTC ASSIGNgAfrmCalendar2YmodAutoOpen46`modParseXMLʷclsSignature59B6~J~xRRMEPSPSSS@<<<.0{63C1EE15-97A7-48A2-AF14-715FDE6F6399}{8B747A42-C32B-4740-A523-CB988BAA777E}@"0hP%h%jC X,0"")%i Buil,p i *i P@ @   `   h  )@Htes %i BP,   ( h   ( h   ( h    ( h   (  h $ ( ,(  0h  4  8  <(  @h  D  H  L(  Ph  T  X  \(  `h  d  h  l(  ph  t  x0@z !B@| @~ !B p)!B%i% %j@CjhCjCjCjCj"HbX"( 00(( ( hh @h  (  h (hh0h ( h( h X` (h h ( hj CjHCjpCjC( 00(( ( hHph h  ( p h (hh0  ( h( h X` (h h ( hj8Cj`CjCjCjC( 00(( ( hh 8h  (  h (hh0` ( h( h X` (h h ( hjxCjCjCjCjC( 00(( ( hPh xh  (  h (hh0 ( h( h X` (h h ( hjCjCjCj0CjC( 00(( ( hh h  ( 0 h (hh0 ( h( h X` (h h ( hP220X\XTOV(*\Rffff*0L56cb4f54\05  : HH :  " : @ $`  ` f Xp F < TP X  $ 0 28 Rp <40H0x.       X X` \ X p B  H (  D H LP        (  ,0 `  h x B N 0 B 8 H@        :    .  P  N`            ( 0 "8 T@ &     "   "  ( "0 8 P X " ` Nh     "   " (@ H"PXp x" " " "0 8"@H` h"px " " "  ("08P X"`h " " " " (@ H"PXp x" " " "0 8"@H` h"px " " "  ("08P X"`h " " " " (@ H"PXp x" " " "0 8"@H` h"px  "   * * 04@ x 0 *  (0 8 @ " H FP N 0   0 @ PX `   x3 **************************************************for apA NB, this is iffy for old dates but seems ok the way we use it BP3 **************************************************: *** v06.10 ***************3 Feb 2, 2012 changed to use clsBuildCalendar,201 *** v05 *************** 13-Sep-2011 comments reduced *** v04 ***************Z Mar 14, 2011 BP, form is hidden before unloading (fix needed when inking in Excel 2007)` Feb 4, 2011 BP, fixed so that DFE_VERYSHORT works for an immediate Enter (in the date field)Q Dec 16, 2010 BP, fixed so that an immediate Enter will return the default date@ (this was broken when the textbox was added)6 Dec 06, 2010 BP, textbox so that dates can be typed M Sep 10, 2010 BP, CurrentDate allows the date to be initialized to any date(Q May 10, 2010 BP, now returns "" if the form is closed without selecting a date Apr 9, 2010 BP, Tidied up, These are valid formats for the date outputL This is mainly for use in Word since Exel can format the date fairly easily A@0 Format = "long date" Monday, July 05, 2010A@' custom format July 5, 2010A@$ Format = "medium date" 05-Jul-10A@# Format = "short date" 7/5/2010A@! custom format 7/5/10 ] ]]D]0Q ********************************************************************************R You have to declare this as a fixed length string because variable length stringsU are cleared when the form is unloaded so can't be picked up at the end of Display ()R ********************************************************************************']2XA Displays the calendar modally and sets the global msDateSelected" to the date selected by the user.= The parameter controls the date format -- see DateFormatEnumF if the user closes the form without selecting a date, "" is returned.. ''  Z $0'  V XD C@R 7( (@q& try to focus -- but this can be flaky B@P l!nG lB@pj  B@%- show the form and return when it is unloaded $'%9 discard the spaces at the end of the fixed length stringi0B returns the supplied date in the format specified by mnDateFormat]  KT  long date$' KT  long date$'9 "Monday, July 05, 2010" ,'   $'9 "July 05, 2010"  0'  G  $   $'j9 "July 5, 2010" ' KT  medium date$' KT  short date$' KT m/d/yy$'niN when inking is started on Excel 2007, unloading still leaves the form visible unless the form is Hidden first B@A@ A@ro  !( (@o` !( (@o !B$'A@oG this resortes the focus to txtMMDDYY after an "Enter a valid date" msg@  $RG B@Pjoh !B$'A@o !B$'A@o !B$'A@o( !B$'A@oPh !B$'A@o  !B$'A@o !B$'A@o( !B$'A@oh !B$'A@o` !B$'A@o0 !B$'A@o( !B$'@A@oh !B$'back tA@o !B$'B vA@op !B$'date tA@o@( !B$'JKTA@oh !B$'BA@o !B$'J iA@o !B$'ides tA@o( "!B$'choosiA@oPh &!B$' user A@o  *!B$' the pA@o  .!B$')trolA@o ( 2!B$'enA@o h 6!B$'9bA@o`  :!B$'@A@o0  >!B$'ender A@o ( B!B$'er butA@o h F!B$'`KTA@o  J!B$'bookmaA@op  N!B$'A@hA@o@ ( R!B$':B@A@o h V!B$' CA@o  Z!B$'A@o  ^!B$'s'A@o ( b!B$'` A@oP h f!B$'ociateA@o  j!B$'rs.xmlA@o  n!B$'ivePriA@o ( r!B$'or theA@o h v!B$'currenA@o`  ] @ 'z# trap invalid (ie incomplete) dates  z/'|0 look for first '/' ( | | z/'|0 look for second '/'repl | king z | 0 look for 2 digit year$ this will work if the date is valid|$ z$> j z$'A@kkkko0? if user hits enter when the field is blank, return the defaultH otherwise, it must be an invalid date or it would have returned already i GA@j3 if ESC, unload form  $R'F 7\97 $'ZA@dEnter a valid dateA@m Pkxkpoh`Attribute VB_Name = "frmCalendar" Bas0{63C1EE15-97A7-48A2-AF14-715FDE6F6399}{8B747A42-C32B-4740-A523-CB988BAA 777E} dGlobalSpacoFalse CreatablPredeclaIdTru BExpose0Templat@eDerivCustomizD Option 1licit ' *.NB, this ffy for old dNs seems oke way we u`it BP< v06.10M/AFeb 2, 2012 cha$ngKtoB clsBuildEB@513-Sep-1 comments @qPucedG$4M`ar 14#B(P, JmNhidden beOFnloading (fix nBed wh@inkincelQ607): ix@:so]at DFE_VERYSHORT worksjan i 1dik Enter (theBp field@Dec 16/0 @n/wilBlGturnBdefault-Ke(Bwarok`textbox@Hs a{&0eCQcbe typC59 10Cur r :Da!allocl|withoutdlect;ae A$`Apr 9.TidiupCVThej vzdKa S@ ' p"u}' TvmainlCvrn Word sin |ExL& HGBaireasily Pub`Gum !'FormatEnuma!;aaOLONG= @m, h(W g[@s Sq. DropDowns Me!B_YrbMthPD", mAMe.Ca= Buttons(K1 3Sp"r0!o\ ] AixflakKg OrrRhesuNctxtMMDDYY2.0FosIf Err.Numb <> 0PqІ=AC@cS Show vbMo.;' ]w,$0rebstDCB= Trim(2)' dislcay2sƀtRFfBJM1;1?Pq@z>$A'?O@ '" uppl 0 Thenc @+ ` ( sec>oF  dLen)" 2"` 2 digit year *his will work @if the* -Weekday! D$a!Ifm ">:q&~ ,KeyDown(ByVal Code As MSs.ReturnInteger, sShiftQtP 'user hits e1`r w$field!blan0k, rdefaultUo rwise4t mup*be an21 0,P wouaPhavealready6 = 27c%6R ESC, u;2m SAsc(vbCr)bip-""X/@$mToSe5U?$ ElsEMsgBox "Ea F" )$S^ &N))h~ xRXRRpRRRRRRRttR(R""RRME8 H* H. HH:@F@J@R""6>  <<<h #ʐ HʐPHʐ| Hʐ Hʐr0H ʐ ( @H ʐ" P hH ʐl@Hʐnx Hʐt HʐrHʐD Hʐ$ Hʐ( H(Hj C* pp. 8:( F(( *p%hVh2   ' Fh8 o Foh\P sito(ph06.1p%h " h PENSh b-20h  addh h h ec-2h0$$ddedhH&& ****h`((4 hx,,hDath00 porth44ec-2h88ns rh<<ptioh@@05 *hDD0 Sh HHode h8LLbshPPP WHIhhTTows hXXe Reh\\I Sh``igurhddureFhhhoryhll  CP_hrnn _STYhpp4, 2J@hX  comhp  Ah () ah , 20h butth reToh  *h ****h l-20h0 rdFohH  *h` ****hx y-20h e adh 04 Bh *h %R(p%h(****( H@r-20p%h e" rP@ Unprotect CheckInking Ca%NoAlertsTabID %HideVBA ???? 8 ( `0!Dk@@+J p ` h  % F `x"|+..!@L @N AU+ ` O V ` Uʐ HʐHʐ(Hʐ~xHʐ Hʐ XH ʐxH ʐjhHʐpHʐpHʐ& Hj@ Cj, h Cj CjCj0 Cj Cj0 CjCj CjCj Cj CjR CjLCʐp@Hʐ4 `HJ@6  @ h  (  X p   P X@ 0 0 P H pp (x h (( x ` `@ h$%jCjpCInlineSigsAtEndOfDocRefreshDemographicstEnRefreshFunctionsemograRefreshFacesheetunctio RefreshVitals ConfirmCancelInputColorIndexCo ChoosePrinterFormRef AutoOpenSuber Document Name RecipientID Message BodyeMessage SubjectMeMessage PrioritySubjec DocWasSaved DocWasSignedSigStyleved ButtonStyledOrderReturnToDoctorIDWhiteoutOr6 : < D > j, CjCjCj0 Cj8Cj`CjCjCjCjCj0C jRXCjLC   (  p 8 PXp`p P H pp (x h(( xX` 0`@jCj(Cj, PCjxCjCj0 CjCjCjCjhCjCjC@!l jCjR0CjLC  P (  @p  PX( P H pp x(x h(( hx0` `@jCjCj, (CjPCjCj0 CjCjCjCj@CjCjCP jCjRCjLCx h ( (  p  PX P H pp P(x h(( @x` `@jCjCj, CjCjCj0 `CjCjCjCjCjCj`CjCjRCjLC8 (  (  p ` PXp P H pp (x h`(( x` `@0"!H"`"@\ @L P @  B fJ"D PJF H R@H @D " BX` @VTOV$*\Rffff*0c56cb4f54$*\Rffff*0f56cb4f54$*\Rffff*0e56cb4f54(*\Rffff*0e56cb4f54\0(*\Rffff*0e56cb4f54\1(*\Rffff*0e56cb4f54\2(*\Rffff*0e56cb4f54\3(*\Rffff*0e56cb4f54\4(*\Rffff*0e56cb4f54\5(*\Rffff*0e56cb4f54\6$*\Rffff*0i56cb4f54*\R0*#2$*\Rffff*0h56cb4f54$*\Rffff*0g56cb4f54i  @ 0P  J D 2  X F` L * J( "x > " L "X ( *  " ( "0 :X B  6 X8 P 8 ( &@ $h P " 2 &@ ,h & P  ^0 @ N T Lx D J P` >  8 \0 2 8 J TP F 8 *( JX N  Lh`B(@p` , (H8J( 0HFxF FPh PH  (08@H PFp2(*H ,P** @(08@X `hpx008D@88@8@:H(4<FXB 0  0HP8X *2,H$h"\D@J @ &88` T Tp 2  @2 "8 ^@  B   N .P  ""  .% %0 %P p > d (!0!H!  RP! :! \!  0H"8 x"2 " , " N# 2h#0 ##  T#4 8$ 4p$ ($ $ H $ (% NH% % '% % 4% & & B & J& h& p& & V& & >' .@' 6p'  ' ' "' ' ^' 0( V8( ( .( ( T( @() h) Zp) 8) * T* h* @* * 6***+ (+20+h+  T++ (+, 8, @, H, B P, X, p, " x, *, , X, X-  :h- @- D- - . . . .x: NB, Excel calls Auto_Open() and Word looks for AutoOpen()) This code will work in both applicationsD ******************************************************************* all> OM forms should call AutoOpen from the worksheet change event DR, after the last demographic has been loaded.@ OM forms can detect the Revise key by testing AutoOpenExecuted.F If the last demographic changes and AutoOpenExecuted is already true,$ Revise key logic should be executedD ******************************************************************* *** v06.16 *************** *7 May 8, 2012 BeforeInlineSignature replaces BeforeJpg *** v06.11 ***************E 13-Feb-2012 ' FT_ROM option added to FormTypeEnum (for repository) *** v06.10 ***************" 3-Feb-2012 CP_AUTOOPENSUB added$ 1-Feb-2012 CP_REF_FUNCTIONS added *** v06.04 ***************" 30-Dec-2011 PopupCaption added *** v06.00 ***************4 12-Dec-2011 RefreshData toolbar button supported< 2-Dec-2011 UpdateROMOptions renamed to ModifyROMOptionsmed  *** v05 ***************0 Sep 19, 2011 DesignMode moved to modCommonSubsQ Sep 16, 2011 WHITEOUT supported (allows OM forms to erase the ReturnToName jpg)I Sep 15, 2011 ObjConfigureForm exposes ConfigureForm from the Repository2 Sep 15, 2011 CP_SIG_STYLE, CP_BUTTON_STYLE added" Sep 14, 2011 AutoOpenSkip called Sep 13, 2011 comments reduced Aug 19, 2011 FormRef() addedJ Aug 8, 2011 user-definable buttons added to ConfigureToolbarButtonsType *** v04.13 ***************, 29-Jul-2011 calls CreateWordFormDocument *** v04 Build 6***************% 3-May-2011 UserListXMLfile added% *** v04 Build 3***************I 6-Apr-2011 Routed forms support [] in file names -- see zFixFileName *** v04 ***************X 10-Mar-2011 ApplicationSelect "Home" removed from AutoOpen (still in CustomAutoOpen): 9-Mar-2011 CancelWithoutConfirm renamed ConfirmCancelH 3-Mar-2011 ApplicationFullScreen moved to CheckInkingAndShowToolbarN 3-Mar-2011 custom properties used by modApplication now passed as globalsF 2-Mar-2011 CP_INPUT_COLORINDEX = "InputColorIndex" property added> 25-Feb-2011 AUTOSIG_PPTAG renamed to AUTOSIGN_BY_AGENT etcD 24-Feb-2011 remaining configuration enums given explicit numbersI 24-Feb-2011 UserParamC, ManualChooseListSorted CaptionAsProtect added8 4-Jan-2011 'Fax' and 'Save & Fax' buttons supported1 ************************************************U the folowing consts define all the custom property names which are used by this code, v05 some definitions moved to modCommonSubs1 ************************************************]$ Unprotect` /. if present, unprotect the document on opening]$ CheckInking /6 if present, check for inking and unprotect if present]$NoAlerts/, if present, DisplayAlerts=False when saving/1 to suppress spurious reports of certificate loss/# in particular at Whitaker Wellness]$HideVBA /0 if present, execute code to hide the VBA Window]$InlineSigsAtEndOfDoc(8( if = "", inline sigs inserted at cursor]$RefreshDemographicsP]$RefreshFunctions 5) v06.10 run demographic functions if <>""]$RefreshFacesheetx]$ RefreshVitals ]$ ConfirmCancel]$InputColorIndex5= (Excel only) " " don't gray the input fields, "15" for gray,]$ ChoosePrinter( 5! if <> "", display printer dialog]$FormRef5& Eg "RF2" (used mainly with GetString)]$ AutoOpenSubP 5B v06.10 name of a custom sub to be run from customAutoOpenComplete" Properties used for save and send]$TabID80 default tab unless overridden in XML or in code]$ Document Name@ord.]$ RecipientIDx 8, default recipient unless overridden in codeom:]$ Message Bodyh]$Message Subject atio]$Message Priorityergi) Properties used to manage the form state]$ DocWasSaved9( created when a document is saved in SRSec]$ DocWasSigned 9' NB these are suffixed according to ...@ properties to load configuration style from xml ' v05.00]$SigStyle fro]$ ButtonStyle I used by routed OM forms -- see modRoutedOM for more property definitions]$OrderReturnToDoctorID1 this is declared in modAutoOpen X''', '' p( type of recipient'0 (7 probably not needed since there will be no send button'(# default, load from custom propertyords.'( choose a single recipient'( choose multiple recipients' ( type of list used by ChooseUser''( show signatures in the list '( show shortnames in the list item  (4 v06.11 FT_ROM option for routed OM (for repository)'''R'L' v06.11 ^^^^ ^8^P(! display shortnames or signatures^p(! display shortnames or signatures^^^^^^( params A to Z(t ^^0(6 v06.00 (need RequirePassword=1 in project properties)Surg^H() word only -- uses size of range in Excel^`() word only -- uses size of range in Excel^x(1 true to insert inline in an unprotected Word doc^^^(, use if you need to describe in a prompt etc(l ^( v06.16 replaces BeforeJpg^^^ ^8^P^h(% formatting only supported for A to C(^^(. for inline sigs, inserted after params C to ZTest^(8 set <>"" to override "Choose User" on the popup captioned^(3 if non-blank, used instead of SRSFormsUserList.xml((* when loading the users for this signature* used internally -- not configured by user^^^() used for forming the SignHere* names etcph(^@' v05 user-definable buttonsSTRE^X^p^'# for signing unprotected Word formsDRUG^' save form to current location v^' save and printST^' print but don't exitUSES^' fax but don't exit HIST^^^0^H^`^x'N refreshes demographics, facesheet & vitals (depending on proeprties) ' v06.00!^'6 ROM forms only ' v06.00 renamed from UpdateROMOptions(^'< Protect/Unprotect buttons (maybe captioned Inking/Keyboard)onKT^p^^+2 if choosing a recipient, restrict to these groups+ eg "Doctor|Nurse" or "" for all^(+) display list as signatures or shortnames^HpXM if User.SRSID="Whiteout", clsSignature will erase the jpg (used by OM forms)]$WhiteoutH N GetDemographic returns this string when the supplied demographic is not found ]$????p] `+$ gives access to polling folders etc] 9 Used in OM forms, to prevent multiple calls to AutoOpen.] -$ Set true when AutoOpen first calledTX This gets called directly in Word and from Auto_Open()in Excel Memory or Routing Forms.K 6 G|jd me'6 &5 Tested in OM forms to check whether AutoOpen has runh patiG in Word, set WordFormDocument = ActiveDocument and use this throughouted' This must be done before anything elseA@: 4 v04.13rugn Stop AutoOpen for debugging < $Gj' read properties used by modApplication D$G'j  $G'> j $G'@ j  $'B 8 If new Word doc, check that all fields have bookmarks.] (Unsafe in saved docs because ApplicationLet in unprotected docs erases the field bookmarks)  f G|jkK 10-Mar-2011 Had a problem with Home not selected properly on Sports Ortho,3 PT Billing Sheet.xls -- Works OK with this removedVApplicationSelect "Home" ' this avoids sig popup if we save with sig selected* set Excel environment for forms designersA@J&) for excel allow access to the whole formA@&$ Excel designers are spared this too D G|j. v05 check DesignMode etcG XMLPath will be set to "" if XML is not found at the standard location+ and the user selects 'No' to skip AutoOpen.P. open XML and get standard paths P!M this means that the user answered Yes, to the prompt about opening local XML .J2# load all the customization optionsA@F 2' if Excel, remove [] from workbook name'H 2 enable calendar popups etc J!8 RA@.; this tells the rest of the code that workbook is protectedd. memory or routing forms HApplicationFullScreen True ' now done in CheckInkingAndShowToolbarA@  $GA@jk8A@B.( Call customizable code, CustomAutoOpenko( D allows ConfigureForm in the repository to be accessed from the form Usage in form =============O dim ConfigureForm as object ' don't declare as clsConfigureForm8 Set ConfigureForm = Application.Run("ObjConfigureForm")' ConfigureForm.ManualTags(1) = "Doctor"/ WordFormDocument.Protect wdAllowOnlyFormFields J.J i@p W If an Excel workbook name contains [], the following in CustomAutoOpen gives an error:P Application.OnTime Now + TimeSerial(0, 0, 0.5), "CustomAutoOpenComplete"( Error is eg "20.xls could not be found"N This problem also occured in v0 templates when assigning macros to 2003-style: command bar buttons. This fix is based on the old v0 fix.T The problem only occurs in routing forms because memory forms are given a temporary2 filename independent of the form's original name.N NB, routing forms are created in a temporary folder which is deleted when the user quits SRS. ]  !P 'L 5# this retains the [], .Name doesn't L [ L [($'N N ])$'N  N A@R 5! possibly left from previous form l!nG lB@pjM save with a legal filename (don't use ApplicationSavebecause this minimizes) N B@T  L A@R 5 try to delete original l!nG lB@pjko " $'- v05i # This gets called when Excel startsQ It does NOT get called for new OM forms but does get called when they are editedQ === ============ =============== ======4 Don't Don't Don't code in here (just don't do that) = if a repository, AutoOpen is called explicitly from the formA@8 oAttribute VB_Name = "modAutoOpen" Option Explic it ' NB,Hcel calls `_b() and Word looks for<:xThis code will work in b@oth apgamss+.*?FOMms should fr`om thIFsheet change even{ afterlast demographic has beenyaded.7 9cantectRevise key by testingE0Execɂ" If8Ns alreada.rue,E9logYb@8 Z*  v0`6.16 A May 8, 2012 BeeInlineSignature replacesJpgL1R13-Feb-C@' FT_R~o adg to FormTypeEnum (ository) 0CP_AUTOOPENSUB B91" REF_FUNCTIONS A H K040-Dec51 PopupCa4+12Refre@shData!olbar t@}supported UpdXate*Âs4ndA*Modifyg(5Sep 19@Des@?e moveB @CommonSub B6EWHITEOUT F (ows }`=eram{DRe KnToBjTpg ='c 5e ObjConfig@PD exposPReF%f >SIG_S@TYLE, BUTTOND4ySkip13c"/duc#Aug)asglobal=FMa 3INPUT_COLOR INDEXInpuplorInPdex"y75265W. Y8PP8TAGAN_BY_AGENT etc 24 @remainazc%Aa1 ecs \gi@B2 0ber lQ+ParamC, pnualChoE,SBW t]AsProAd4-Janv+'Fax''Save & S\`h\;9*aQSfolowstss@Ce V[yz 2wpp|5 teqv05 s/is_v_ Pub /stWUNPROTECT!$UnP* "t"' if$esI, uu"dJ q-q  CHECKIzN G32ca51G`F5rGNOALERTSANoAl6sV D {DisPyYS=F`6 hsav  ='~vЃ0&pu0riouah!s of c?ficpsP0 FnADcul`at WhitakзWellneAHIDEVBAAHide8]eCP@h@WindowINL DS_ATE NDqsAtEndOfm@pԬ",! s kP curs or/DEMOGRAPHIC"s`dFunc5'ja0 rufU10<>"_ACESHEE4!?2VITTAL Vl/ P0^NFIRMCApNCELk_ a "a' (Exonly) "don't id fields, "1<5"r9ӍCH@OOSE_PhT ERb \Prina&<> "0 d8E diaؿFORM@2' Eg "RF2" (rUQilyGetSt`am qn!Ԅ@nSub" ' v06.10 name of a custom sub to be run frHdAutoOpenCompl`ete  ' Properties used for save and send Public Const CP_TABID = "T0abID q' default tab unless overridden in` XML 8c od^ 5DOCUMENT_NAME9DocumePnt N"MR`ECIPIPRecipiSMrPKMESSAGE_BODYKMmage BodyJSUB0JECTject PRIORITPrioritqman1$thettaXWA2VEBtWWasSdu ' cred Dwhna dEbisdsSRSdq__SIGN!igne' (NB @,s@re!@ffixaccording... =pG;load configuration stylc@?AxmlA5.00)'_STYLSigSfBUTTON ButtonE &Bby rout /OM`s --e modRB/yfin*i!soR4OrderReturnTo`6tor\'( 2@declark E'@`Enum nay!cAUTO6_NON"%!(CUR_SR@S_USERY1RETURN$Ev2BY_gN!a3LCHARTBINF 4 E! dnF|< ypb{ xMSGB' `1bably not need(sinceS`5willnoB b"@, FROM_PROPERw1g , V(ay CHOOSTE_12 @shoof g`^MORE_THAN 3 mi Pu0CpUser/g0liebG#C!HbA@FES>0@' showgTur``ZA! HORTa.C hortasAFormTI O `/b1 FT_= opw}(reposi l)#"UTING!6ME^$5``B= $4RMAt |rRe?a#@ AsATags Str@YwPfir`Esp oleanManualBon "L$0 #p4ispla^y!5eaQe+S =@`& In.tJpg BIa]alZDuTi #S7Param(13LsZPCopyo1I@ntegerRequirePaxssww8 /0(0 (Q ,=15`T%M0/HeightS0$'0K' onO`XpsCpizC]an0@ExcelC 0Width/?? 8Inlines #d`Nruao!`Ao` 0@t&W` 1Ea5DescriFp 84 e'1 if yovurlA dampt etcc BeJ 1 6"2 F6 b7cp2S CAfterwx2C1111A '2att' R&suppAZAvCx Bo C8toZ!sigs,"!a4 p:Cq:PopupCaO# R@met <>""e "R a &" p c Ufi`8$An $non-blank,i^e0pp1*s.x @9Ł'x>rsBtthsCS-AǰnalSBE POi0WA.edAjdyadNumberߔR 1#0m5 qHere*s6yvȸblic Type ConfigureToolbarButton"sl BDF1 As B|eanH ' v05 user-definable b2(3SignFo rmnfor s(ing unprotected Word msaSaveH1,' s to current location#Pri #and pg' don't exitFax ' fax~NoSeHZ+ M5@ PGRefreshDatad' r es demographics,9ceet & vitals (de&p7onQoeprties)D@v06.00+ModifyROMOpAts'  onlyF#nam@from UpdateGuPUš /G (mayb0e caB'Ink4/Keyboard)CCancel E@v! PuMe0ssagGRepcipi@ eaEnum FTagBStZgOqif choosY a% ,@s @ctjthese group$s ' eg "Doctor|N@urse" `"B"5 allCAeList!%U :dis@play l!aRsats s0hort=In cludeAZerdID/' .SRSID="Whiteout"`, clsA will era!@" jpg (d by OMP=9@WHITEOUT =  ' G8etDd . ns0 thi 5whene supXpliKj notundfHDEMOGRAPHIC_NOT_FOUNDa?"g!sPardterE/giv`zacxo pollAFfoldetch @ҥ ja'B @.d inF',!aMprev[ multipcDAbAutoO@.F%Execuһ' Stru e ) fir 4 e' Su4b (8S' BT2gets|lla0irb֗B_()`Exa~M` "") p7S`Smaoj1?modA9I0-DOCWASSAVED)8"sIsNewp?s cau`d@,Z-n aABoraryfC`;6indedKeA'`frig`inal NB, g`"b$C lder %ichAde3dC'`@r qui@ts SRS | #BL[%D`{sOAS, sNew!_J`_Avei.!AMDreCXX.doesn 'tC @InStr("[") x> 0E Replace@X>(eT]"@) O9.Res C Next Kia? '0-bly leftYpreviousxgrr.Numb Z&c lheT(jlQo [at'cK@>ō#uif@.re,B1qQex!it 7!peģ      !"#&'()*+,-./0124~6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvyz{|}~j'NZp*~/x RRRxRR8RRRRXRRRR`RRRRR((MET08 4 ,<@HhHlHpHtHxH|HH H))L$!L0@ L"d<(> LLP o` ndic  ( ` x ) rsap0% ig_1 %` assu s tr8%` ` rror   ` h ) to a0%   %`   8%` Sign`    ` X ) xcomp0%i pe dI A p ntif8%` rnat   `8 ##) X`80%) 30% tect8% 8%@ T i+ @ `  8<%+ h` 88) 0%i  ileP8%` ` O i` -- e` or a` ion  ` %%7I  iI I > I ( is I us` rang`  > `us  @ hHXXh8x 8 `(@x  b  hHXXh8x 8 `(@x  `xommepgeInse` t hHXXh8x 8 `(@x  `x` t8 hHXXh8x 8 `(@x  `x` t hHXXh8x 8 `(@x  `x` tXxx x 8`x"8`x` t( @0 D @B @< @88 0PV@`4O 8V80x`8%`[  \ @%] @%8^ H0 @ %h_Px` @%H`O  @%xa @%b @%(c h  @ %Pd@@dO 8i0@` @\ hxl @p L 8@!H  c 8 @% @H ( P @  @%@  @ @  ` ! ! !@%0! H!(! @%h!!x!`! @ %!H!!! @%!x!@ !!!"d! @%("!8"H " p @%X""h",P" @%"8" "" @%"h"" @ %""8 H! hX(TOV*\R0*#1d$*\Rffff*0n56cb4f54(*\Rffff*0n56cb4f54\0(*\Rffff*0n56cb4f54\1(*\Rffff*0n56cb4f54\2(*\Rffff*0n56cb4f54\3(*\Rffff*0n56cb4f54\4(*\Rffff*0n56cb4f54\5(*\Rffff*0n56cb4f54\6(*\Rffff*0n56cb4f54\7(*\Rffff*0n56cb4f54\8*\R6*#6b*\R6*#1*\R6*#4*\R1*#d4$*\Rffff*0o56cb4f54$*\Rffff*0h56cb4f54*\R0*#1c*\R6*#6*\R6*#12ߐ\ " n0 > " ( "0 ZX " D "( <P  & T & `@  L B fX , * <  X` f R  x ` d 8H  <   2   ( 8 H X h x     N  R Lx ` `(  d  R TX X  ( 0 8 @ H P X ` h p x                      ( 0 8 @ H P X ` h p x                  (08@  H " h <x F > @HPX`h px   ( 0  8  @  VH N Z TP \        @  <P 0    (   (0  "8 ` ,p  8 2 (  8 @ H P X ` h p x       B         0 H  X p       ( 8 P ` x            0 @ P ` x     ( 0H`px    0@H X  ` x             0 P ` x            8  H X h x           ( 8 H X h      0       :   8 :H X h :x   :   :   :   8 , H x: " : 2L4Hh    :   :    L( Jx  Z *H!  x! ! N!,! " (" 8" H" X" h"x" L" N" R8# <#  # # # $ $  $ 0$ @$ P$ X`$ Z$ %0%H%`%%%%%%$& T(& Z& & ''0'H'h'N'''($ ( H( P(  D`( (  "  ( (( ((($() )() "  0) 8)@)P)X) `) h) x)) ))))))"  ) )***  * (* 8*H* X* h*****"  * **** * * *+ +$(+P+`+h+p+"  x+ ++++ + + ++ +&+,(,0,8,"  @, H,P,`,h, p, x, ,, ,",,,,-"  - --(-0- 8- @- P-`- p------"  - ---- - . . . 0.@.`.p.x.."  . .... . . .. . / /0/8/@/"  H/ P/X/h/p/ x/ / // /////0  "  0 00 & 0 H0P0&`0 ,0 000 \0@1 `1h1 "  p1 x1 L1 J1 (2 202 h2p2x2 2 2  2 2  2 2 22 2 3 3  3 (3 03 83 B @3  H3 JX3 3 D3 <3 84 @@46H44 4 4 44 4 4 4 B 4 @4 6(5 `5h5x5 555 5 56666  6 (6H6P6X6`6 h6 p6 x666666 66777   7@7X7 p777 7777 707 8(808 "  88@8H8P8 @X8 `8h8p8 x88 88<8 "8 9$@9h9,p99 9 9 9 9 9 :  : :8: x: : :x *** v06.22 ***************nts ing Nov 2,2012 allows delimiter to be overridden for particular fields eg ; for some, vbcr for othersor8 Oct 9,2012 intolerant drugs removed from allergies *** v06.11 ***************" Feb 13,2012 DRUGNOTE supported *** v06.00 *************** T 1-Dec-2011 v06.00 discontinued and intolerant meds handled in clsFaceSheetData *** v05.01 ***************= 29-Sep-2011 support for discontinued and intolerant meds *** v05.00 ***************6 5 9-Sep-2011 Onelinewrite doesn't o/p blank items *** v04 Build 5***************N 19-Apr-2011 delimiter for Onelinewrite can be passed as a parametern-20 *** v04 Build 4***************Y 14-Apr-2011 ScreenUpdating disabled -- now managed centrally in CustomAutoOpen *** v04 ***************F 10-Nov-2010 BP fix to clear previous record before loading new one.< 25-Oct-2010 BP all collections sorted except for TestListlao_ fixes for ImmunizationList, VitalsWeight, ImmunizationDetails.DATEOFPROCEDUREl% 22-Oct-2010 BP renamed to ParseXMLll$ 21-Oct-2010 BP Onelinewrite fixeddll6 20-Oct-2010 BP formatting moved to clsFaceSheetDataQ Onelinewrite, MultiLineWrite output all types of facesheet data` 19-Oct-2010 BP replaced class modules with user defined types to reduce the number of modulesL generic class, clsFaceSheetData will hold any type of datalZ 11-Jun-2010 BP minor tidy up. Commented out some unused routines. Added Option Explicit^ and declared 'counter' in a few routines to get a clean compilation in Word.2 Fix in Onelinewriteimmunizations5 10-Jun-2010 AS, New version supports Word and Excel, FaceSheet.xml contains 8 categories of datas trapXML Tagan--------h Problemsom SurgeriesFamilyHxedTests (so Immunizations cusSocialHxurMeds G AllergiesG Extracted data is written to ranges in Excel and to bookmarks in Word.esK Excel, each item on an individual line: Ranges of Meds1, Meds2,Meds3 etc.=F Excel, all items on the same line separated by semi-colon: Range Meds donZ Word, each item on an individual line: Textboxes with bookmarks of Meds1,Meds2,Meds3 etc.Y Word, all items on the same line separated by semi-colon: Textbox with bookmarks of Meds] The range and bookmark name should be the same as the tag eg "Allergies" or "Allergies1" etcHL Medications are sorted alphabetically (This has been requested a few times)M The items which are being captured (ie Meds:Name,Unit,Strength,Instructions)R can be changed in each function, but is currently set to the most common scenario of current clients.^^0^H^`px^^^^^^^ p`8^P^h^^^^p ^^^(^@pX^p^^^p^^^^0^Hp`^x^^^^pP^^ ^8^P^hp^^^^^^^(^@^X^pp]( for oneline write; 6 sDelimiter optional delimiter for use in onelinewrite? in Word, pass vbCR to create multiple lines in a single field.8 Application.ScreenUpdating = False ' 14-Apr-2011](]H]`]]]]]]]8]X]x]]]]]]8]X]x]]]]] ]8 ]X ]x ] ] ] ' PThe ParseXML has been rewritten to allow it to work for both Excel and for Word.GThere are currently 8 categories which we are pulling information from:TProblems, Surgeries, Family Hx, Tests, Immunizations, Social Hx, Meds, and AllergiesMThere are two levels: Categories and Children. The categories initiate a newVitem in the collection. The children are represented as a property of the collection. Handle Errors On Error Resume Next$.5 Load the XML from disk, without validating it. Wait* for the load to finish before proceeding. ( (  %' " If anything went wrong, quit now.  k Set the root of xml document !. % Go through all children of the root. ! 1 The new FaceSheetData will return blank records. + These are used to clear the local records.8.  5'5'5'5'5'5'5'5'5'qp !. <based on the child selected, add the item to the properrties ! ProblemNameKT ! ( DateDiagnosedKT ! ( DateStartedKT ! ProblemList ! (dX ! (k@ DateEndedKT ! (r SurgeryDetailKT ! (SurgeonLastNameKT ! (t SurgeonFirstNameKT ! (v DateOccurredKT ! Surgeries ! (kP SurgeryNameKT ! (DeceasedKT ! ( FirstNameKT ! (h LastNameKT ! (j DetailKT ! ( AgeOfDeathKT ! (l RelativeKT ! ( OrderedDateKT ! (x ProcedureNameKT !Tests ! (d ! (kProcedureClassKT !Tests ! (n d ! (n kpDateOfProcedureKT !Tests ! (d( ! (O **kNotesKT ! Allergies ! (d ! (k SubstanceKT ! (AbuseKT ! (DateQuitKT ! (STRENGTHKT ! ( STRENGTHUNITKT ! (DRUGNAMEKT ! (DRUGNOTEKTB v06.11 ! ( INSTRUCTIONSKT ! ( USESTATUSCODEKT ! ( HISTTIMESTAMPKT ! (f ReactionKT ! (AllergenicNameKT ! ( DateReportedKT ! (d MRNKT ! (z DateKT ! (WeightKT ! (| BPKT ! (~ PositionKT ! ( PulseKT ! ( TempKT ! ( HeightKT ! (BMIKT ! ( O2_x0020_SatKT ! ( nh *add the item to the respective collections ! ProblemListKT  ( B@ SurgeriesKT  ( B@FamilyHxKT  ( B@TestsKT  ( B@ ImmunizationsKT  ( B@SocialHxKT  ( B@ DrugProfileKT !1KT; active meds v05.01  ( B@2KT; discontinued meds  ( B@3KT;" meds which patient can't tolerate  (;: v06.00 instruction & strength removed by clsFaceSheetData ! B@P v06.22 key by drugnamenX AllergiesKT  ( B@VitalsKT  ( B@n E in Word, if the the Intolerance field is present, drug allergies areC removed from the Allergies collection ro avoid duplicate reporting A@ C v06.22SIf a new sort field is needed, add a constant to FaceSheetSortKeyEnum and return it#from clsFaceSheetData.SortKeyValue. A@  A@ GCollectionSort FamilyList, True ' not sorted (no key is defined) A@ ( most recent records first A@  A@  A@  A@  A@  A@  A@ 8 v05.01FMultiline write allows you to enter the information in a tabular form.Heg. The item Meds will be entered one at a time, the first one in Meds1,Lthe 2nd in Meds2, the 3rd in Meds3. Meds1, Meds2, and Meds3 are Range Names6in an Excel Document, Bookmarks for Text Boxes in Word A@  A@  A@  A@  A@  A@  A@  A@  A@ R **** each record (eg each drug) of FaceSheet data is formated in clsFaceSheetDataS when the data is loaded into the object eg when the DrugDetails property is loaded ProblemsA@  FamilyHxA@  TestsA@  ImmunizationsA@  SocialHxA@  MedsA@  allergiesA@  SurgeriesA@  IntoleranceA@  PrevMedsA@ 8 v05.01NOnelinewrite merges all items into a single paragraph separated by semicolons.Teg. Med#1 is OxyCodone, Med#2 is Aspirin. In the Bookmark/Range Name Meds, it wouldput OxyCodone;Aspirin ProblemsA@  FamilyHxA@  TestsA@  ImmunizationsA@  SocialHxA@  MedsA@ +5, vbCr ' v06.22 eg append , vbCr to show 1 per line AllergiesA@  SurgeriesA@  IntoleranceA@  PrevMedsA@ 5 v05.01 HomeA@=Application.ScreenUpdating = True ' 14-Apr-2011oP ]p ] 0  ' $ $ !A@ o ] ]0 H ]h ]  !'  ' !~ ' BPX $ $' A@  o ] ] 8 ]X ]p  !'  ' ! ' Pulse $ $' A@` XoP ] ] ( ]H ]`  !'  ' !' VitalsDate $ $' A@ ox ] ]]8]P P !'  ' !| ' VitalsWeight $ $' A@ oh]]](]@  !'  ' ! ' Position $ $' A@ oX]]]]0  !'  ' ! ' Temp $ $' A@H @o8H]]]]   !'  ' ! ' O2X $ $' A@ ox8]]]] @ !'  ' !' Height $ $' A@ o(]]]]  !'  ' !' BMI $ $' A@ o]] $ G ' jH v06.22  !H v05 skip blanks G ' jH v06.22 !' k( U NB, when Vitals are parsed, RngValue="" for the FaceSheet data -- so don't overwrite G A@j o v06.22E in Word, if the the Intolerance field is present, drug allergies areC removed from the Allergies collection ro avoid duplicate reporting, in Excel it is always assumed to be present]]] p !d'  b $ . !$ . l!n  B@ d lB@pk  ' k o  v06.22D determines whether intolerant drugs should be included in Allergies= for Word, they are included if there is no Intolerance field5 in Excel, the range is always present so return True' ' %) comment this out to eliminate duplicatesx ] h Intolerance % .' 8 0 i( @: This is designed to sort a collection of clsFaceSheetData/ nSortKeyField specifies which field to sort on]]] 8P h  !d  !d $ ! $ ! ' d ' k d $ ! $ ! ' d ' k k Store the items $ $   $ . d@ $ ' k( $ $   $ . d $ ' kSwap the items over B@ B@Delete the original items  B@   B@ k80(z  [Error with CollectionSort: l! l!n' ih]H]`]x   '  '   $N B@H  $ $ =  !  ! B@ActiveCell.Value = varray(I)      A1  % %B@HdA1     % %B@HkX @o8Sub DeleteRange(RangeName)On Error Resume NextDim I As IntegerFor I = 1 To 503ThisWorkbook.Names(RangeName & Trim(Str(I))).DeleteNext IEnd Sub`WAttribute VB_Name = "modParseXML" Option Explicit ' *** v06.<22:Nov 2,2012 allows delimiter to be overridden for particular fields eg ;some, vbc)othersiOct 9iintolerant drug s remfd from erxgie:<11bFeb 13-DRUGNOTE supporHted00" @1-Dec-1discontinued and [me| h l in clsFaceSheetData\5.0\29-Sep:Xe loading [ one.25-@# collecs sB exceptTesthLis',fixesImmuniz on, VitalsWeight, Details.DATEOFPROCEDUREE2 ren4d1 =@n0' 20 #ma~t4c}fN , MultiLineW"YoutputA typ "Pof fpsp BqU/repl-dv@R @ulwith us@def`  @reduce @ numb@ "generic# , wi ll ho lan:y $! 11-Jun(Fmintidy up. CommZ[' Gund rs. Ad nIdec 'coun@s'ea fewf YAge . ezc`ompilOW`]!Fix9&i(W10AS, N sDs "Eel%C F.xmlkn]ns 8 categorʫ, Tag-1@ProSu rg8a'FamilyHx As!ikSocialmBM A |'7 c҂S i4s AtLan>gP"bookmarkscel, ea The geU P shou:0fDas"Ataga"" :1"Q;$P i(-ppre_alphabe y (Th! hb n requ`98times) whi a begcaptuK (ie:,Unit,St]gth,InstruChzcs(%funB, q+curi tl taAAmHostp7mms`warioA pCi`Ks ' Pub TPVBydj QDREACTION As P sALLERGENICNA MEnREPORTEDSIE1- D" STRENGTHuUNITINU qUSESTAT USCOD HI STTIMMP]F/WMKECEASBoaQ FIRSTa LAD ETAIL- AGDEARELATIV OX֍ Cp  RECDELE%_ W $eC:0BLEM DIA4/!-sEND+/? w kj 1SUB NC(ABp*  V;QU0 ' xASUp?RY% ON(SCEa]6)! PROCEDURECLASS As Str ing DATEOF xԀDELETED2Boolean End Type PublicVitalDetail"sMRN WVI0TALS| WEIGHT BP POSITIOY PULSE ,TEJM H4MI O2 }Dim msDelimiter' f or onne wrSub ParseXML(ByVal BsPath(, Option;= "; ").?' (od,A&use in('Word, pass vbCR to create multiple linesa s@field. #App@a2.SenUpdng = Fal@"' 14-Apr-2011C A]oDocGMS@J2.DOMument fSucce@- F RootHI@Nod " Children Lis(.o 5i In tegerKProblem u+Sury,+Famil ÊTest HkImmuniz"DlPkSocifEDrugl HkAllerg+ eL7D6lENew CocagKd5AK]4?m !4m 2m 1?m a1m 0)_m /s?m PrevMed`qrance] =7 6RangFindPerso  'q fix FaceSheetDataclso:in=(e  6On ErroResY NexOU'Theo has beS4reqhtfal@low itqgwHorktborExcel alajgCre a0curYtly 8 cPkgorijwhich w3pul lglmG from: 9s, 7 ,0kP Hx,3 1BI$, #+Y two levels: C 1e. QA initi a newVitem1yt0cCj!represted 0a property of GHY{R'Hp r"7 '$x$I Set =& w  ' LoadB R disk, without validit. WaiH|1lro fsh,$eceed@)I .async%G eOnb_V=. (5РA@If(ythp 00nt wrong, qu6now @~N`(3GoTo ExitHerLQIfm'!r&xml doc̜"RE`+!)'' Gorough D c//-)+FKEaBoIq.R8!*C'9p8AVwill return blankcs(@pQ9)lea"r*loc0re]C0]S QW?-K uE= .ȓ@*.{ Tho Z([J 0q{4Q 9b2Cihildren = oNode.CHs  ,For Each o In N 'based on the c selected, add.item to properPrtie } V d SD C^z.nName ) /"Problem,"  Details.PROBLEMNAMEv3TypedValu6DateDiagno7DATEDIA@GNOSED8Star7 If򅖀2List" Then ELFA*STAR+)1đElsLSo0cialE]En~d@6L-C~b edE 7ENDea ̧CSurgery5NJs.SURGERYDE0TAILTHon0LastPQON0LASTg Fir ONFIR? dC# 4Occurr5Wc W, KOCCURRϟ;KH"ry.;_.#IDeceA,IFamilLs.DECEA _U:+ _9 C"R+ Q"cj _i AgeOf Deathz,AGEOFDEATHt'RelativeZ RELATIVBOrde efl Test%s.ORDE@^_W pQcedureO."9= "qs8 Y vCEDURE1?vcdqImmunizon?q|sVo?E-6Class<OOvO@C1S__Ove oeb[f߇ "y[F׏T@O_d #' **\`\se "Note###Aller>gn116`NOTEo#;?/O"ߘSubstanc-QSUBNC?Q c \busoYAxBUS//&-Q8uit|- !*QUIT))OBTPGTHlDrug}MS$OO95UNITaq?RUG!\D$ooj,"P/' v06.11K9R__UINUCTIONSip(.TUSCOD~EzHISTTIMEPMP(gDetails.HISTTIMESTAMP = oChild.nodeTypedValue   4Case "Reaction" 8AllergyREACT8ION#YBen@icName_ALLERGENI CNAME)eDateReported1DATEREPORTED0MRN2Vital"-]&VITALS[(*@WeightW EIGHTBP Bc _oAll8erge{ieAurgerSCInto` ance$(-".!6'OnveÒm`s %mtto@single paragraph sJeatFbymicolons% `$#1ACOxyCod@,A#2aAspirin6ICPe/s,A woul'put ;d! dL/NCL*MMM 5ML7', vbCrC86.22sa8pped5show 1 s A; +UPT?TTIT# ExitHe re: ApplicB}Sela"Home cc'.Scre0enUp Y = Tru-' 14-Apr-201# E+Sub_C !>q( l( st As CoAcQIqyVa`l RngsS2t0g)1Di>m\Z1/\cou҃PeEs SOyrror GoTps FPEQea 09b Q= + -(Lh &im( (d))ђxh^. @jPDNЁ | eC Pv7S$ubBPon3pdTk@Type}l! Otpt $%4pOC o2 n6 =". ! ?' = e.BP*= "BPX" )0 ,/2RR///ub c/ 6/:` / //hl>/e+/+3/r i:/s.PULSE Per{g?t=T?P.e///P 8/G_<_?_ 0wASpe= ZergyList@(i) Set Intolerance = 4Allgy.SortKeyValue If Err.Number0 Then sJV.Re@move i %Else7\Clear ,nd If  ii - 1Loop E) Sub Private Func@tion zPresent()@ As Boa|-' v06.22determines wh(ethit drugs sh@ould bncluded in ies%(for Word, &y ar f s noJz`fieldEPxcel gs always p8 so return TIC2L &=eӾHbjr?e 5()SxOf fset(P50).("A1"WP/uBo-@ 1a%ґ,.$4ΐ#8R''Resப 1'!I 'I5'Th4is{(0TrI)))p1A I V t 8 ) 1 ~4]?DE~aYex*=h8+3qPL}nCxPL}nC]?DE~aYexME PSS SF" 6"<N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} %  *@ %l %b @b@b@b @ord ` XYY:i ange@  *` **** Ah  )A %,!ph P $i  ng u,!h  (i  ppor A0h ,i and,` p 4ied ii  call``,`  8i"@ Ii  8 `Inli`$Time  ` <**`e us` d`$natu X ` @00 h 0 3)*s%%"4@"@8@bh @b@ @bh@b@B @h@0Xhp@ph@0Xhp@h@0Xhp@h@0Xhp@h@0Xhp@ XD ( TOV(*\Rffff*0e56cb4f54\4$*\Rffff*0j56cb4f54$*\Rffff*0e56cb4f54$*\Rffff*0l56cb4f54:; ` "h > " D :@  " X  & N8  , 8 V Zh \ ,( >X     " H  h Fp  Z P  p8 <(08@H P "  X &` L N 2( `h  Xp    @   8 @ $P x   :      6  B@  4  8    (  0 8 P  h  p x                  ( @ H X  `  h (   $ T   @  X h      "     X    0 8.H x   B    B   "     B   B 0 28 p 4" 8 H PB  X L`  , (8 @" H LP  *    &( *P     2       ( 8  @  H X `" h p x    (@ H Ph p x       L@HPX`hp x "      xY Class to perform the insertion of a signature, the signatory name and a date time stamp. *** v06.16 ***************entI7 May 8, 2012 BeforeInlineSignature replaces BeforeJpg *** v06.00 ***************= 19-Dec-2011 password checks moved to clsSignature.Insert3 14-Dec-2011 InsertSignature paremeters changed *** v05.00 *******************Q Sep 16, 2011 WHITEOUT supported (allows OM forms to erase the ReturnToName jpg) *** v04 Build 7***************H 3-May-2011 InsertUserParams added allowing up to 26 UserParam tagsun *** v04 *****************% 24-Feb-2011 UserParamC supported for1 15-Dec-2010 UserParamA, UserParamB supportedO 11-Nov-2010 Dates and times formatted correctly for unprotected word formsT 5-Nov-2010 BeforeJpg moved into ConfigureSignatureType, calls SignatureAppliedU 4-Nov-2010 date, time formatting changed, JpgHeight, JpgWidth , BeforeJpg added& 3-Nov-2010 InlineInsertion added 8 2-Nov-2010 uses InlineDateFormat, InlineTimeFormat 29-Oct-2010 rewritten 11-Oct-2010 created Sample useage dim Sig as new clsSignatureB dim MyUser as clsUserDetails ' the user who is to sign? set MyUser = ... ' get the user detailsSProperties -- formatting inserted after signature elements when the sig is inserted0J inline into unprotected Word documents. See class Initialize for defaults encapsulated properties]]]@]h-) true if InsertUserParams is a valid list]@6 form fields or ranges where the elements are inserted%]]h]]]] insert the signature elements.F if the sig is being inserted inline for an unprotected Word document,G then msJpgLocation etc are = "" and the formatting characters AfterJpg**+ etc are inserted between the sig elements. Form ]x]R have to format dates & times whenever we insert into an unprotected Word document  G'jch   ya $2 if a manual signature, may need to check password 5 ! !$ G|jInsekx 4 v06.16 replaces BeforeJpg and ouput unconditionallyects t G5A@j5/ form jpg file name and insert the image v05.00te P! !$') ! G'jP this will erase the current sigic for   A@P insert sig (size same as range)< d0  55A@P insert sig (explicit size)k G5A@jk5  !fA@nCompl G5A@jk5  ! A@1 C G5A@jkP5   5$A@d   A@tokk G5A@j5   5$A@d  A@kk G5A@j " insert the UserParams if requiredA@  M update property and FormConfiguration to show that the signature was appliedced5 JB@l.1 9 copy signature if required (uses this class recursively)5 tly 5 J%f A@tFrokpkhq`oX ' Q this can be overridden to force an inline insertion if any bookmarks are missing5'5$ectF'5$temsA@4! check other bookmarks and ranges *kkxqpmh 'mPp 'm8 'm 0; check that InsertUserParams is a valid pipe-separated list1 z+ eg "", "A", "A|b|z" (NB, case is ignored)(publi]* eg "B" ] $$ |$'D 0-based arraysers   ****** $' Gzj@ A Z Gzjld 5** ***'iE check that the UserParam bookmarks are available for the current sig 4**]`]x    ScrSignHereUserParam $ "'$pen $$&Gzj 2** ***'iE check that the UserParam bookmarks are available for the current sig****]]6 eg "B" ] 6 config of current signaturephics   **** $'20SignHereUserParam 5'$OM G'$j< insert at cursorllScre $  %(A@ , formatting can be inserted for A, B, C only now s AKTperty5A@20BKT Che5A@wTS 5A@Aun k Mar-20q o '  SignHereJpg5' SignHereName5' ChoSignHereInitials5'et SignHereDate5' BP SignHereTime5'upport5 $&G'jk 5 $&G'jk 5 $&G'jkh 5 $&G'jk@ 5 $&G'jk q F missing bookmarks (may have deleted by user) try for inline insertiont '''''k o X *.)- um` X ķAttribute VB_Name = "clsSignature" Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |GlobalSpacFalse dCreatablPredeclaIdCExposeTemplate DerivCu@stomiz EO@ption 0licit ' Class to perform the inserof ha s,ory nandEdJ tis tamp..*** v06.16  = May 8, 2012 Be?eInline rewcesJpg ,00R19-DHec-@1 p9word checks moO3@=.I=B&14CG%ppmeters@anged@ 8<5.%Sep 16<%WHITEOUT supports(allows0 OM cfereRe@nTo!»jpg) 4 Build 7Yc% 3-ZC 3U@yParam`s addBi ng up26  tags @@84Q]24-FlebGC815W0gA,B 1-Nov DM`ONs%ata(correctlya unprot"@*y 5+ OLCinCConfigf?Type, c@%s Appli@ 4 cf!cA`,chF, HeightBWidth ,]33 e9z"82 usgk&F|a #T#A29-Oct,rewri*n11caS`~` ag"'adim!$ as new ImI#q  *zVv`Q (sqsbs3s? E yth%"5.˰C exP ze? 4] If mbInlineInsertion Then Applica@Let "", .AfterJpg  End If & > 2.jNamNek: |ms+LBo, mU.Signatur>e?0ց0 $kInitialsmo Bo&8Datn^bFormat Ay A(Now@)EElsP @PQKpA1*KDTiV \ Z._.n; _.$ _.` +' i the Params if required z ' upBd!ipropy aN-Configur¯ to showat"s% was a! %e G2ed 'Numb er copy " (usesis class%cursivelytaYC To > 0Ԥ'*fc, (., ), bAut~okJ'!With aSubAP6AE5(r AsGafType#m = +a +L'0an be overridd GforceK\A.~any bookmark$re missinh~?= pIj 2Valid(L4>) BW =p Trul^KLsF.#:zSet_' check oPBr)P;ranges#%u%]:&G C )a%Booleanpmbaty 6( `5 3̧(By0 >p43N=~CPrivqWFuncN*Ss 1qStr1 9!thpZRa v!0 pipe-(sep@ftXlist 'd eg "A`"A|b|z" (NB, case  `o`iDim sbkSuffix !5'B"s1ia71Int,egacm)= BSt(UC(Trim(n)W"|")T' 0-bd arr,ayCpi = LBound(:o U`% Jt= ( (CLen() <> 1H Exit> ! P<  Ork> "Z"p:1NextjS](05Ng +7U?O,n\P,,*bavailable f ge rentт61_&s0DX& s6/#/#ms/#Ü.#= "!Herev" &$er- p"Not [ ?' "bX"O "M "Sub rParamsInsert()  ' check thabte U| bookmarks are available forRcurrent sig@Dim ias As InteXger s^S uffix St0ring' @eg "B" ?LocationAWith mConfigur$]  of jnature<Fq= LBound(m|) To U $+= %( 7= "SignHere!" & .& . B7NumbgIf mbIn0lineYTh,enI" ' iB Oso{ :ApplinLe@B, m-./(I.>V- K('AmattAcan be 4edA, B, C onlyOSelect Case ^$y"AAP"", .AfterMA+k B  "Elsjÿ CtoZe /End C2o+!IfkNex~taSub Private  zSLet%\GmbeValid = Tru ##msJpgeF~|msNameQ}Initpialse}D`#}Tisw& .% g*Not l{5(.!9F $\CmK aQ1 (ee# sQ rtU  O Y,'' O rt$  n  iL rt*  g?a Lq3' pmissqy have dnBtrby u) tryRsitp*!2K8MpK%aQ y ]^1PropyftF(2xQclsxDets`C?cfrmSmartText%ThisDocument8:_VBA_PROJECT5clsParameters7?xD   {~}X[K3JޢhY\F6$gGR:ZeMJUz%JdxUz%Jd[K3JޢhYME,SPSSS<< < 6"<0< <$<(<4<8<<<0{D746F75C-2436-4767-95F8-A0BA523A12EB}{AC655AAC-DAD8-4D05-94EF-4A9912C30EDD} %%  ` && p%`celF  `  -`  ` 7`` 5 p % Cl% `JNi cs`v` t@ d 0``% \7% ` h%  %j 4 @((P(<0((H` x(@H @8 ( @  @((\ XTOV$*\Rffff*0t56cb4f568<@DHLPn " @ ( 0 @ ,Hx N  08P `p x >   " (0 8H ` p"    0HXh "  (0 8 HP X`h  - 1%==  @P X`p" x   ] ( `]X]x (ie "a"A@%Go to the end in a protected documentx A@ tB@ OkPGIf unprotected, but limited to a list, blow up the field before writing tB@B kInsert The Smart Text 5 7A@  qxClear the list ! %' 8Refresh all the bookmarks and check for the demographicsA@fA@ (A@o] ! 5 7ave C@  k`XqPoH](]@]X]x.  B@ % 5 7 ! !8 !  ! !' ! B@\ ! ! , !  ! ,  ' k( k qo]]0]H]h'' ' d' k[ .  B@  ! [ ! !  !  ! B@\ !  ! , !  ! ,  ' *k  B@op B@A@ A@ro8ApplicationSelect "Home" NewReplaceDemographics>Attribute VB_Name = "frmSmartText" Bas0{D746F75C-2436-4767-95F8-A0BA523A12EB}{AC655AAC-DAD8-4D05-94EF-4A9912C@30EDD} dG lobalSpacoFalse CreatablPredec$laIdTru BExpose0TemplateDerivCustomiz D Public DeleteFormField As Boolean P04 Sub CommandButton1_Ck() #If@ Excel! HThe#ED`im ff(/  i InteHgerpp&ation.Scr@eenUpdngGD@ 'A S,ct "Ho meAiGUnpr otect Go the end in a @Mdocumen /IsP3H ,EndKey wdSt ory  I*fY'u$ed, limit&astlow up t*fabefore writing i'!Ansertd B WithCed i i\0 To .ListCount - 1@ (iN\ iB>Cr4l gsm5t sn@= 8Me.!(0, 0@ 8Refresh all! book@ ks Q check `%bdemographics Ca@YEigE=A NewRejcjIH?/SwzUnloadM`x#%?@fgRveFromEghobb4#q4f . 3q.Item%5!T!76,4 ^!j{#!+STDcls DL!P Set = ICgI~L2S] ((cEachD Iny#L.f[c]u&.0Valua‚D.SShortBzNjpbq Add;A"(jjg U|1)o! j +aHkKkfMaDisoy(Opal $By P Cia6l !S@2a""Aq%yd, 'Seth&o(o(?& Q 0X <> ""6}Z= B$qOv= tIuDebug.wW(9a05L0S/y/,ST.,Y",40_,a Or2q(1,Io0).;..peSOyQ(i.ac6.cg.rk. i .h|vbModalUSub{`Gc HidcDoEvЈ`kdq xME (S"SS"<(1Normal.ThisDocument(%H@80H@XPh`pTOV xpAttribute VB_Name = "ThisDocument" Bas1Normal.VGlobal!SpaclFalse CreatablPre declaIdTru BExposeTemplateDeriv$Custom izC1Option .licit *b88~Ja  *\G{000204EF-0000-0000-C000-000000000046}#4.1#9#C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL#Visual Basic For Applications*\G{00020905-0000-0000-C000-000000000046}#8.5#0#C:\Program Files (x86)\Microsoft Office\Office14\MSWORD.OLB#Microsoft Word 14.0 Object Library*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation*\CNormal*\CNormalTOV4*\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.5#0#C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL#Microsoft Office 11.0 Object Library*\G{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0#C:\Windows\SysWOW64\FM20.DLL#Microsoft Forms 2.0 Object Library *\G{A116FD93-1A9A-4017-9287-B8AD114DDCC4}#2.0#0#C:\Users\mbarnes\AppData\Local\Temp\VBE\MSForms.exd#Microsoft Forms 2.0 Object Library.E .`M *\G{F5078F18-C551-11D3-89B9-0000F81FE221}#3.0#0#C:\Windows\System32\msxml3.dll#Microsoft XML, v3.0  "$&TOV   ~ThisDocument0356cb4f543ThisDocumentFg clsConfigureForm0f56cb4f547 clsConfigureFormSf clsBuildCalendar0956cb4f54 clsBuildCalendaro'0| clsFaceSheetData0o56cb4f54e clsFaceSheetDatanH0clsInking0r56cb4f54clsInking' `#clsRouting0q56cb4f54!clsRouting۟x(>"customAutoOpenEtc0i56cb4f54x"customAutoOpenEtc bclsSignature0l56cb4f54clsSignature41 clsUserDetails0j56cb4f54clsUserDetails)k'clsUserList0k56cb4f54clsUserList{rrclsParameters0c56cb4f54clsParametersr8"customToolbarShow0p56cb4f54*"customToolbarShow x`P]XfrmCalendar0L56cb4f54frmCalendar JfrmRecipients0M56cb4f54frmRecipients#8"frmRoutingToolbar0s56cb4f543"frmRoutingToolbar+`P~PmodImageInsert0P56cb4f54 modImageInsertyhA;modParseXML0n56cb4f54b modParseXML/HmodAutoOpen0e56cb4f54 modAutoOpenhmodCommonSubs0g56cb4f54X modCommonSubskĀ"frmSelectFromList0U56cb4f54"frmSelectFromListS,modReplaceDemographics0m56cb4f54 ,modReplaceDemographics?V modApplication0h56cb4f54b modApplicationGfrmSmartText0t56cb4f56=frmSmartText}"modParseSmartText0]56cb4f54 "modParseSmartTextu( clsSmartTextData0^56cb4f54 clsSmartTextDataJ@> clsSmartTextList0_56cb4f54 clsSmartTextListsX/x@H`P0hX (8Io=8F'X0;Ӈv@.vq1*L&€]{a]#zdOt2d$/ΟLܤ(^Z@WNF] ɫU:OFq A B^@gpmB%;d1LAg>Mן*7rMMӗA^QKBlB맄/NO.م&`/YDjlb[ON0tOn-J߄a|a mK wXIyVA3_fb*$eBkޕ'@x~JEq]DI1L17qE E e 5UݷD37}BPv[jGTmE єS0F%&.)Ap5" I(A׌~7{y Qf Wordk VBAWin16~Win32Win64xMacVBA6#VBA7# Project- ExcelFormInking+Z(ParseXML0 Repository- XMLConfig Passwords'RoutedOMstdole` Normal Officeu MSFormsC MSXML2O ThisDocument< _Evaluate clsConfigureForm(FormTypeW (FormTypeEnumRFSignaturesCountDmSigDescriptionLookupX CollectionWmsSigDescriptionList9 mSignatures(!ConfigureSignatureTypemToolbarMemory{(!ConfigureToolbarButtonsTypevmToolbarRoutingNewSmToolbarRoutingAlreadySavedx mMessagingNewh(!ConfigureMessagingTypemMessagingAlreadySavedAutoTags iSignaturesO! sAutoTags3 ManualTags sManualTagsrmSigDescriptionListT%SigDescriptionCount~DCount0v SignatureDSSigDescriptionLookupsSigDescriptionaSignatureAppliedA (PropertyWriteP(CP_DOC_WAS_SIGNED& SignedAleady ToolbarMemoryiToolbarRoutingAlreadySaved*ToolbarRoutingNewB MessagingNewKuMessagingAlreadySaved] zCheckDescription iSignatureZerrlab Description AddrvbCrLfzValidateConfigurationyi`sMsg clsSignature.nManual=bSignFormButtonpSignFormzSignatureNumber (PropertyReadCopySignatureToInlineInsertiongCopied>AutoT AUTOSIGN_NONE%Manual| ConfigurationInsertUserParamsValid LocationValid (DocumentIsNew (ApplicationIsExceliNMsgBoxRClass_Initializen FT_ROUTING>ManualChooseList CUSER_SHORTNAMES.ManualChooseListSorted  InsertJpgPG InsertName# InsertDate| InsertTimelInsertInitials~oInsertUserParams|RequirePassword JpgHeight JpgWidthInlineDateFormatuInlineTimeFormatBeforeInlineSignaturevbCr$AfterJpg+ AfterName< AfterInitialsM AfterDateV AfterTimeAfterUserParamAAfterUserParamBAfterUserParamCtoZǘSave SavePrint6 PrintFormFaxFormProtectUnprotect2SCancel SaveNoSendSaveNoSendPrint) SaveNoSendFaxSaveSend% SaveSendPrintBDF1ModifyROMOptionsľ RefreshData  Recipients MSGRECIP_FROM_PROPERTY # RecipientTagsCRecipientChooseListp ButtonStyles=clsButtonStyles SigStyles, clsSigStylesnloadXMLD Signaturesz clsBuildCalendarvmbDropdownsCreatedl mCalendarFormUserFormNmCB_YrComboBox\mCB_MthCmsPrefix! BuildButtons5 DateToSetDate1stOfMonth|butDayKControl DateonButton (ListBoxSelectYear6nValueKControlsKDateAdd/6WeekdayCaptionxControlTipText8 BackColorރFontUBold ForeColorvbBlackvbRedG/SetFocusBuildDropDownsA1 CalendarForm!3CB_YrCB_MthڂsPrefixC'AddItem  DateSerialUMonth ListIndexQ clsFaceSheetData"amAllergyDetails}(!TypeAllergyDetailsJ mDrugDetails(!TypeDrugDetailsmFamilyDetails(!TypeFamilyDetailsmImmunizationDetailsvp(!TypeImmunizationDetailsmProblemDetails(!TypeProblemDetails$mSocialDetailsYA(!TypeSocialDetails%(mSurgeryDetails!}(!TypeSurgeryDetails mTestDetails(!TypeTestDetailsB mVitalDetails(!TypeVitalDetails2O msFormattedmsSortKeyValueAllergyDetailsB DrugDetailsH Formatted SortKeyValue` FamilyDetailsImmunizationDetailsģProblemDetailst} SocialDetails+SurgeryDetails4B TestDetailse VitalDetailsQrecALLERGENICNAMEP?REACTIONflsTempeDRUGNAME USESTATUSCODETrim@STRENGTH  STRENGTHUNIT INSTRUCTIONSSDRUGNOTES$DECEASEDLRELATIVECDETAIL2DATEOFPROCEDURE PROCEDURENAME zSortableDate X PROBLEMNAMEh DATEDIAGNOSEDABUSEUpdateHeaderValues|(ApplicationSelectzV(CP_AUTOOPENSUBKhOnTimeTNow% TimeSerial(AutoOpenCompleteV5(ChooseSignaturesSuffix(ChooseAndInsertSignature7(UpdateROMOptions!UsersPrompt[ PopupCaption (ChooseUserdUserListXMLfile+(InsertSignatureB sFormCaption nListTypeO(ChooseUserEnumbSortedTags bRequireSRSIDbRequireSRSMailsUserListXMLfile8UserListnSortOrFilterBy `( UserListSortEnum$sUserKeyLIIfz  USERSORTBY_SHORTNAME  USERSORTBY_SIGNATURERSortByoFilterByL RequireSRSID~\RequireSRSMailPipeSeparatedList-vGetUserBySignatureO(CustomAutoOpenwnDelaysVitals AutoSignUser(ApplicationScrollArea#(ApplicationHideErrorChecking(LoadReplacementDemographics  vbExclamation FT_OM=(ApplicationCaptionLetG (FormCaptionM\(ApplicationPath^ VitalsPath@^ (AutoSignatoryFWriteOrderingDoctorIDU(ApplicationInputShaded5t (SetInHeaderzmsHdrBkmk{sValue$ sReturnToBkmk sCurrentLocation-ErroNumber-Clear Bookmarks?n SelectionZTypeTextMoveLeftvUnit wdCharacterExtend?wdExtenddRange  ActiveWindow+ViewI wdPrintView((Event_Worksheet_SelectionChangeRzTargetF (DesignMode# (CheckAutoFitv(ApplicationTarget (ShowCalendarT(SelectFromListCbLong&ssj frmCalendarVuerrlab2p3 CurrentDate;errlab1o3  DFE_SHORTNHUserListSignatories". UserListAll UserCurrent AUTOSIGN_CUR_SRS_USERSC AUTOSIGN_BY_AGENT AUTOSIGN_CHARTBINDOCGetUserBySRSIDAgentForGetUserBySharedID0 rngAutoExpand2AutoFit&  EntireRowSigConfigurationXbAutoSignatureuInsertr(SelectFromListShow-(SelectFromListCrZ(ApplicationScreenRefreshsList=sPreSelectList22nSelectedItemLimit nHeightScale nWidthScaleiGT> PreSelectListp:SelectedItemLimit0M (AddHeadermConfigurationmUserimbLocationValid\mbInsertUserParamsValid3mbInlineInsertionũ msJpgLocationmsNameLocationmsInitialsLocationPzmsDateLocation{msTimeLocationT maUserParamssSigPath bFormatDates(ApplicationIsProtected\ CheckPasswordg ShortNamerPasswordvbCancel'SigPathĨ(GetSignatureFilenameSRSIDg(WHITEOUTK (ImageInsertInitialsXzUserParamsInsertrConfiguration zUserParamsValid zUserParamsLocationsValidq zSetLocationbInlineInsertionsInsertUserParamsh sParamSuffix`O iaUserParamsSplit)UCase5 nSignatureNumbersParamLocationm(ApplicationLocationValid* UserParam0rUser (UserKeyEnum; USERDETAIL_UNDEFINED USERDETAIL_SRSIDA USERDETAIL_SRSMAIL USERDETAIL_SHORTNAMENS USERDETAIL_SIGNATUREC USERDETAIL_RETURNTONAMEU USERDETAIL_SHAREDID USERDETAIL_PERSONIDSRSMailaPersonIDH ReturnToName4 MessagePool mnKeyFieldIKeyField O nKeyField%KeyValuefsUserParamSuffix8 iUserParams$~Asc!usUserParamValuejRequireReturnToNameRequirePersonIDmDEFAULT_XML_FILE msXMLPath msXMLFile_ mUserListmListListBoxmnSortBy" mnFilterByj( ListControlEnum@~  LISTC_UNASSIGNEDx  LISTC_SIGNATURES_LIST"  LISTC_SHORTNAME_LIST mnListControlя  USERSORTBY_UNSORTEDx sShortName zGetUserByKey/GetUserSelected'nSortByD nFilterBye}zAddToCollectionSNewUsersKeyhzCheckListControln rnListControl sSearchKey*nUserKey bInstrmatch sKeyFromXMLzsSearchKeyNoSpacessSRSID sSharedID* sSignaturek GetUserBySRSMailHsSRSMailGetUserByPersonID sPersonIDurGetUserByReturnToNameb sReturnToName8SignaturesListsShortnamesList2sPipeSeparatedListјrShortnameList}rSignaturesListXMLPathsXMLPath zCleanPath=sPathsXMLFile4csTags& bLoadSubsetQNaTagsoDoc DOMDocumentb oUserListt7 IXMLDOMNode5 oUserDetailsV oUserDetail UserDetailsobLoadBqasynchvalidateOnParseOdocumentElementE ChildNodes5nodeNamernodeTypedValuel_ clsParameters  msSmartText msSigPathg msVitalsPath  msPollwmsg msPollwomsg)msORwmsgA msORwomsgW msOrderXML msFaxPrinterc~msClientParameter1(msClientParameter2(msClientParameter3(mbMsgBodyBeforeSubjectmbMsgSenderAfterPriority msTestTabClientParameter1ClientParameter2ClientParameter3 FaxPrinterGTestTablOrderXMLsORwomsg|ORwmsgzLoadXML' sFileFullPath&SoParameterListoParameterDetail (FileCleanPath sFileNamesTitleWnMsgBox(GetFormsXMLPath (FileNotFoundw(ExplainXMLPathb& vbYesNoCancelqvbYesa?vbNo% SmartText customToolbarShowf( gRouting( gInking( gfrmRoutingToolbar frmRoutingToolbark( RoutingToolbarButtonClicknRoutingButtondA(RoutingToolbarEnumN fsmarttext frmSmartText RT_PRINTFORM(ApplicationPrintJ RT_FAXFORM@zFaxFormu RT_SAVEY RT_SAVEPRINTI RT_SAVENOSEND RT_SAVENOSENDPRINT RT_SAVENOSENDFAXB RT_SAVESEND  zSetRecipientٷ zSetSender RT_SAVESENDPRINT$V RT_MODIFYROMOPTIONSpJzModifyROMOptionsw RT_SIGN_FORM?ezSignFormClickedЫ RT_REFRESHDATA>Y zRefreshDatam RT_PROTECTE(CheckBookmarksp zProtectForm RT_UNPROTECT RT_CANCEL%NzCancel RT_BDF1G(CP_CONFIRMCANCEL= vbOKCancelx? vbQuestion sSavePrinter ActivePrinterp(CP_REF_DEMOGRAPHICS%(CP_REF_FUNCTIONS(CP_REF_FACESHEET  (CP_REF_VITALS+(CP_INLSIGS_ATEND(ApplicationGotoEndfrmModifyOptionsY sFacility VbMsgBoxResultڱ Messaging7vbOK% MSGRECIP_CHOOSE_ONE vbInformationn MSGRECIP_CHOOSE_MORE_THAN_ONEx frmRecipientsVbIncludeSenderIDQHIncludeSenderID3-(ApplicationFullScreenq FT_MEMORYbProtecthShowFinalButtonsJH( DateFormatEnum  DFE_LONG  DFE_MEDIUMLONG  DFE_MEDIUML  DFE_VERYSHORTN BuildCalendarP mnDateFormatM mDateToSetmsDateSelected&[ nDateFormatK# txtMMDDYYXShowvbModalt zFormatDateQ zUnloadMeHide9z CB_Mth_Change* CB_Yr_ChangeD1_ClickD1\D1_KeyUp{z ReturnIntegerShiftD2_Click$HD2\D3_ClickD3\D4_ClickD4\D5_ClickD5\D6_Click'GD6\D7_Click7D7\D8_ClickD8\D9_ClickD9\ D10_Click D10/ D11_ClickOSD110 D12_Click_D121 D13_ClickD132 D14_Click D143 D15_ClickBD154 D16_ClickbD165 D17_ClickrD176 D18_Click D187 D19_ClickAD198 D20_Clickf D20T D21_ClickSD21U D22_ClickD22V D23_ClickD23W D24_Clicki D24X D25_ClickyCD25Y D26_Click D26Z D27_ClickD27[ D28_Click*D28\ D29_Click|BD29] D30_Click D30y D31_ClickTD31z D32_ClickD32{ D33_ClickD33| D34_Click D34} D35_Click!DD35~ D36_ClickD36 D37_ClickD37 D38_ClickD38 D39_Click$CD39 D40_Click D40 D41_ClickED41 D42_ClickWD42txtMMDDYY_ChangesMMDDYY;i1]i2]txtMMDDYY_KeyDownvmnDisplayResult mnListType CUSER_SIGNATURESllstPossibleRecipientslabMixedRecipientsbzMixedRecipientsSnPools%nUserscmdCancel_Click\cmdSendToRecipients_ClickW sRecipients1 ListCount6SelectedYList*mnLeft"d mnLeftProtect(mbCancel RT_FAXSRSFORM4{ RT_BDF2G RT_BDF3GButtons] zSetCaptions߹zShowOrHideButtonmC cmdSignFormcmdSave cmdSavePrintI6 cmdSaveNoSend|cmdSaveNoSendPrintcmdSaveNoSendFaxm cmdSaveSendcmdSaveSendPrint͢cmdModifyROMOptionsi6cmdBDF1BDF2cmdBDF2BDF3cmdBDF3 cmdPrintFormN cmdFaxFormfcmdRefreshData SetPositionˣTop5 cmdUnprotectn cmdProtectbProtectUnprotectm| cmdCancel bShowButtonButton CommandButtonkBUTGAPQAutoSize! cmdBDF1_Click cmdBDF2_Click^ cmdBDF3_ClickcmdFaxForm_ClickQcmdModifyROMOptions_Click7cmdPrintForm_ClickcmdProtect_ClickߴcmdRefreshData_Clicks cmdSave_ClickcmdSaveNoSend_ClickcmdSaveNoSendFax_ClickcmdSaveNoSendPrint_ClickcmdSavePrint_ClickŦcmdSaveSend_ClickfcmdSaveSendPrint_Click:CcmdSignForm_ClickcmdUnprotect_Click gUserForm_QueryClose CloseMode؟vbFormControlMenu~ modImageInsert (shpSignaturekGShape InlineShapeFsRangeOrBookmarkNameFvHeightzvWidth=k(ApplicationSaveInProgressA(zFilePathIsValidN(zImageInsertForExcelM(zImageInsertForWord (ImageExists• sShapeName"wksht+( WorksheetParentShapes< InlineShapesٚAlternativeTextbsDir sBookmarkNamehrHeightwrWidthePicAspectRatioActivate|DeletexWhatCwdGoToBookmarkJ AddPicture sRangeName| rngTargetCells MergeAreamsoFalseF.msoTrue  PlacementI xlMoveAndSizeU ScaleHeight! ScaleWidthsUserIDj DIGSIGS_TPLT modParseXML? DATEREPORTEDѦ HISTTIMESTAMP FIRSTNAMELASTNAME AGEOFDEATH.PROCEDURECLASS RECDELETED" DATEENDED3SURGEONLASTNAMEmSURGEONFIRSTNAME ORDEREDDATEMRN3WEIGHT1BP\POSITIONPULSEQTEMPRO2r^ msDelimiterm sDelimiterB5fSuccess$boRoot;~oNodee oChildrenIXMLDOMNodeList^oChildK Problemlistl SurgeryList- FamilyList#TestListUzImmunizationListt SocialListDrugListx AllergyListϠ VitalsList8r PrevMedsListYKIntoleranceListran{ FindPersonIFindPersonPrefix FaceSheetData;ExitHereP$zCheckDrugAllergies+(CollectionSort](MultilinewriteBPw(MultilinewritePulse9?(MultilinewriteDate?(MultilinewriteWeight (MultilinewritePosition4(MultilinewriteTemp(MultilinewriteO2:(MultilinewriteHeight(MultilinewriteBMI[(Multilinewrite (OnelinewriteP5plistNRngName@Fcounterexitsub*Strpdetails%RngValuelT IsMissingAllergyMD IntoleranceYzIntolerancePresent/FRemoveϱ FormFields-| oCollectionhbSortAscending2lSort1qlSort2r vTempItem1 vTempItem2bSwap ErrFailedzVarTypepvbObject (NameNewRangesH[StartRowstartcol~ColMax&=MoveRowMoveColActiveWorkbookNamesοRefersTo ActiveCellAddressOffset modAutoOpend (CP_UNPROTECT_ (CP_NOALERTS(CP_INPUT_COLORINDEX(CP_CHOOSE_PRINTER c (CP_FORMREF> (CP_SIG_STYLE7(CP_BUTTON_STYLE(CP_RDq(AutoSignatoryEnumB AUTOSIGN_RETURNTONAME{(MessageRecipientEnum8 MSGRECIP_NONEAutoSignConfirm(DEMOGRAPHIC_NOT_FOUND2(AutoOpenExecuted(AutoOpen*(CreateWordFormDocumentd(CP_STOP(NoAlertsǔ (ChoosePrinter(InputColorIndex (AutoOpenSkip zFixFileName@ (gbRunModer'(ObjConfigureFormP sOriginalNameZsNewNameFullNameОKillSaveAsf; (Auto_OpenV  modCommonSubs&LUSER_FOLDERS_PATH INI_FILE_PATHHOSTED_INI_FILE_PATHDEFAULT_SRS_FOLDERDEFAULT_XML_PATHvHOSTING_FOLDERX(ERR_FILENOTFOUND|(ERR_BADFILENAME (CP_XMLPATHI(CP_EXPLAINXMLPATHچ (CP_REPOSITORYjM (CP_DESIGNMODE(FILE_DATETIME_NOTFOUND-(FILE_DATETIME_UNKNOWNuDocumentjmsDiagnosticMsg msWorkingUser*vbYesNo (MsgBoxTitleActiveDocument\ sPropertyName-CustomDocumentPropertiesޖLCase: PropertyValue@ nPropertyTypemsoPropertyTypeString4aDatei FileDateTime sFormsXMLPath?(zAppendDiagnosticO(GetSRSTopFolderPath ;(FileGetDateTimezGetSRSTopFolderFromUserFolders sFileContentP sLineContentV  sUserFolder FileContent d sUserNameEnviron,(FileReadvbLfT%InStrRevĈzGetSRSTopFolderFrom_C sParamValuezGetIniFileParameterS vsIniFilePath, sParameter? sIniFilePathָsIniFileContentbNewFilesServer.azGetSRSTopFolderFrom_H sFolderName sServerName (WorkingUserrNnFilenFileLen]FileLen sTopFoldermsPreSelectListmmsPreSelectListClosedoTmbSelectSingleItem8msInitialCaptionx mQuickKeyseQUICKKEYDUPLICATEimrChangeEnableTime DELAYTIMEmbPreSelectCompletedsSelectionListJxaSelectionListTimerXzPositionControls1 listSelectiony zQuickKeysAdd zPreSelected + zPreSelectg InsideWidthl InsideHeightcmdOK'cmdClearcozOKClicksTempNot#sItem)zSelectedItemCount9nCountzListSelectionChange errExistszQuickKeysItem errNotExistsk=bSelectionMadeMBcmdClear_Click cmdOK_ClicklistSelection_ChangeClistSelection_KeyUp\ fmCtrlMasks>ChrK~UserForm_Initialize5c modReplaceDemographics1 mDemographics mReplacements<(GetAgesField sGetAgePl zIntervalX sFromDate/sToDatenMonths%4DateDiffDayzReplaceForExcelzReplaceForWordssDefault wdFieldFormTextInputk\sDemNameOf sDemValuesFormatü aDemNamessResult sSep+. ScreenRefreshA  sColHeading sQuotesReplacementNamea CalculateFull|fileNumDemographicsfileNumReplaceVars sReplaceVar`JsDemographicVar> ErrorHandlerO ErrorHandler2 EOFsNamed modApplicationD(KEY_ALREADY_EXISTS:(OBJECT_DELETED2mbApplicationSaveInProgess'mnProtectLevelK5msWindowCaptionamsApplicationTargetSuffixhmFieldNamesToFixbModeP7DisplayFullScreen< bRestrictє ScrollAreav WorksheetsProtectContentsProtectionTypewdNoProtectionsInlineBookmark bkmkInlinel BookmarkCbkmkFFFields7Resultur MoveRight rngFormFieldTextRetrievalModeIncludeHiddenTextKAscWGEndKey5wdStory&ErrorCheckingOptionsX'UnlockedFormulaCells  NumberAsTextEmptyCellReferencesVVBE MainWindow6ShowVisualBasicEditor(ApplicationActivate AppActivate26(ApplicationScrollToTLCScrollIntoView4 bPrefixMatchjnmh^(zRangesIntersectD RefersToRange (AutoDropDowndSendKeysN sPlaceNamev?(ApplicationInputEnabledmbEnabledriColumnsp9RowsULocked Enabled۪bShadedqCelliInputColorIndexZInterior;PatternixlSolid7n ColorIndexPatternColorIndex xlAutomatic@xlNoneShaded (BlackBoxFillZZ shpSelected: ActiveSheet%NCaller= msoTextBoxID TextFrame2' TextRange CharactersrgFill, TextFrameColor2FSolidc sFieldNamesFieldNameOpposite\(BooleanConverter TxtbMsgff1bSevereWarningL}dlg-Dialogf FieldsToFixnSuffixد nFieldCount NM_PREFIX SUFFIX_FMT:]zFieldToBeChecked IsNumeric$*zCheckFieldNameswzFieldNamesToFixMsgL(zFieldValueGetcDialogswdDialogFormFieldOptionse(zFieldValueLetg~vbOKOnly MyListBox sItemValueff2 FieldsByNamebkmkKzFieldsToFixAdd nFieldTypeYwdFieldFormCheckBoxwdFieldFormDropDowntMyRange- Intersect1(DateHerebAlwaysProtect'ProtectfUserInterfaceOnlyNDrawingObjectsߺwdAllowOnlyFormFields!noresetg Unprotect?Savedd DisplayAlertsQuit9 DocumentswdDoNotSaveChangesԇsDocExt(ApplicationDocumentExtension' WindowState| xlMinimized2wdWindowStateMinimize4axlNormalLwdWindowStateNormal`exlDialogPrinterSetupYCPrintOut.OptionsPrintBackgroundmwdDialogFilePrintL Background.Path2(ApplicationDocumentNameu<CheckBoxi{DropDownsCaption]VsDocName$wmWindow6wTempMWindowsdDeleteFormFieldCommandButton1_ClickSmartTextSelected(InsertSmartTextgsmarttextselectedRemoveFromSelected_ClickS RemoveItemZSmartTextSelection_Click jaNewSTD_ clsSmartTextDataVNewSTL$_ clsSmartTextList;SmartTextListLoadSmartTextSelection smarttextlist(BookmarkShortName<| (BookmarkName' PartialList0 SplitList| modParseSmartTextK(!TypeSmartTextDetailsp BkShortNameBkName+ sAreaSelected4sSmartTextMasterl InsertFileX(AddNewSmartText^ SmartTextWord wdWordm(PartialSmartText(SmartTextKeyEnumZV SMARTTEXTDETAIL_UNDEFINED SMARTTEXTDETAIL_BOOKMARKNAME! SMARTTEXTDETAIL_BOOKMARKSHORTNAME"mSmartTextListSmartTextDetails\ SmartTextData\Class InitializeN _B_var_Midp _B_var_TrimmT _B_var_LCase' _B_var_Right9 _B_var_Format _B_var_LeftQItemz_B_var_Environ/ _B_var_InputV _B_var_UCaseaClick QueryCloseTLabel1,CommandButton1|Label2,RemoveFromSelected6  (*,.03 7- ?e<yc  Y *+ &34 ) '=%c  ; >!8 18 !   25D BM $„@@@   Pq1 !  &(h C-yG\DhB !,$ ܍%`Ɛb@@ 8 ~rxx[3CV*=h8+3qhO  xhO  x[3CVME8SS S))L >"LP  <<<00N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}b 8@bP@@b D@b L@bT @b X @bH ` @b@h  @bp j @SRSFormsParameters.xml%the ,!h /i ,!Xh 8 5i r-20,! h $:i web ,! h (?i ed,!x hpx+X,Di  2,! h 0Ki ,!Z8 hx+4Pi ,!hx+x8Ui ,!*hx+<Zi ,!Xh 8@ _i ,!h D di ,! h H ii ,!,xhx+XL ni ,!Rhz+ P si  ,!X8h  Txi    `kx\UU}i  tdl % pka% l%@\ `k`!! `x`t@d @T `R,!(hx  Xi P ( %BZ hHb\4@b(<@bxH@bP@b\ @bd @bl@PX x(X@xp  H  8 X x8PX x(X@xp  H  8 X x8PX x(X@xp  H  8 X x8PX x(X@xp  H  8 X x8\Z X"@hL @< @8 @X4 `xPX x(X@xp  H  8 X x8x`xhP8`P@p0 @, H @( `x @$ @  @ @ @0 @H @  @ 8`x $&H  @ @ H``xX@L @J (@D @@ @ :restrase="dc:SimpLiX ( p ( p |dD5TOV$*\Rffff*0c56cb4f54*\R6*#6b*\R6*#1*\R6*#6*\R6*#12*\R0*#2*\R0*#17*\R0*#1$*\Rffff*0h56cb4f54*\R0*#e$*\Rffff*0g56cb4f54p/> JH  @ " 8 d@  & ,   ( 0H \x > V &p & T   "(  LP 8 (08.@p B    B   B   B   B    B   B   ( 0B8  @ HBP  X `B h p xB   B   B   B   B   "  ""@h  p  2  ( 2   8 @  H-X h- - - - -  -( 8  X ,`   !  2  ! 0 ! 0( !@ 0H !` 0h ! 0      " L%  !( 8 @ "H P X ` p x       ( #          6   @ H  X ` h  p  B    x6 treat upper case and lower case as equal ie "a" = "A"erC Class to manage all the paths and other parameters loaded from xml^: **** NB, a lot of the logic is in Class_Initialize() **** *** v06.21 ***************1 22-Aug-2012 supported^ If tag is present and the sender ID is required, it goes after the msg priority *** v05 *************** 13-Sep-2011 comments reduced% 31-Aug-2011 calls ExplainXMLPath() *** v04 ***************) 3-Mar-2011 tab supportedU 1-Dec-2010 WorkingUser added (needed for Problems web service, modGetProblemList)8 11-Nov-2010 , , supportedP 9-Nov-2010 user-specific top level folders supported (for sales demo server) 25-Oct-2010 VitalsPath fixed 20-Oct-2010 VitalsPath addedraM 4-Aug-2010 If XML is not found, user is given the option to skip AutoOpenenam]SRSFormsParameters.xmlX E encapsulated property -- set to "" if user declines to use local XMLv-20] 2 encapsulated properties corresponding to XML tags]] ](]P] ]x] ]]] ]]H ]. default to subject before bodyad]@. v06.21]p  'mX 'm@X 'm( 'm \'mx 'm 'Zm8 'm '*m 'mX 'mh ' mP ',m8x 'Rm  'XI v06.21m8]]6 all the parametersP]6 one parameter node] . ( (@" checks for 'well formed XML' only  % !.@ all the parameters  !@ details for one parameter 5SigPathKT5$' VitalsPathKT5$'PollwmsgKT5$' PollwomsgKT5$'ORwmsgKT5$'ORwomsgKT5$'OrderXMLKT5$'MsgBodyBeforeSubjectKT'MsgSenderAfterPriorityKTH v06.21'TestTabKT5', 3-Jun-2010 general purpose parameters addedClientParameter1KT5'ClientParameter2KT5'ClientParameter3KT5' FaxPrinterKT5' SmartTextKT5'npqh dP Error opening XML document )Error opening SRS Parameters XML document   ' A@ko]P]h]] '\ \ \ Z'kX \ $XML file not found'      Local folder is:   X  Click YES to use the local XML %Click NO to skip the rest of AutoOpen Click Cancel to quit'  " $'  $ X$'\ \ Z'  &e'\*' **** tells caller that there is no XML|d* cancelA@Hkk A@ ox '(m`XAttribute VB_Name = "clsPar`ters" Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |@GlobalSpacFalse dCreatablPredeclaIdC@ExposeTemplateDerivCus tomiz EOp tion 0li cit CompI Text" ' te u@pper ca@nd lows equal ie "a"A ' Class to manage all the paths #or ,adffrom xml"$*@ NB, at of#logic is in_Initial@ize()    v06.21A22-Aug-2012< s@orted KGEI#agA"present6A:@ IDrIi@|, it goe@2msg, p -5Q,13P-SepA,1 cHomms urc'314B^s{ainXMLPy_()12@BG4 3-MarP LD1-Dec 0$WorkingUs@adAt(ned fo r Proms web vice, modGetListA( 11-Nov, uAor,49Iu -specifFtop lPevells (asal4demo"er@25-OctV it`) fix9#/204 . 4e3!%`G Cnotund, aAjg@{nCoCv`iskip Auto0Open BConst DEFAULT_ _FILEaqSRSForms.jt4 ` encapTsuad@Po|tPy --taw"0" if#Aino"@`qc~ Dim ms@!!As SngCYQ icorepond`Ea  Kgs SmartǢ( C SigM C2PollG 3IOCNQOc'hoClix41>2>3.bMsgBodyBe`\eSubjectBooleanBb' defaTulB@sb b$4 / '%;TestTab'E`O ! ٨6 n&=@(M1(E0kt*2 25msݜ2w3~3er3zW& 8(_Z=/   < = W? 8A!_ZT*/ 0,dG IOdF "RwLy @/*OPct dPER oT`TOMRyop`y!Vҩ =W O@v _ zLoad0;(ByV|sFileFu>HD>rderXML~O ? MsgBodyBeforeSubj@zybTrueoHSen AfPriority"I' v06.21 !m0  bTestTab3d` ̑!' 3-Jun-2010 general purpops a0dded #ClientF1Z'52'233Faxcnd 1s&SmartText{UvEnd cEю{qNE lsO' Error opening 0^ docum9WsTB"SRS v(s1" _" & vbCrLf saFully[x AGqIf `1P'vate  Class_Initializ e(Dim B1 As St~rP  , sTitl1n$ I/gers#SmsP! G`etForIf 7<> "" ThenP& DEFAULT_0_FI|LESJ=I1OrrNo und(Z)(K" fP not fo6"Explain!!"Lo"c efolv is: "#Applicatio/'cck YES to ujthe lr *%*"NOsk(ip rv of AutoO3//CancelqaquiHU$=* $(a,p3YesNo'8Āvb##,):''A Fl No_ X/)G' * tells P!lerat1re!'QGExita@WW 'Q0\QHo7zLoad`&'sGNLPrWrty A k()GP1frmRecipients+)modCommonSubs<>clsUserDetails1modApplication=C!vt~#xMEPSPSSS<<<<0{47AC727F-4361-4E4A-83F0-790FACBC3D7A}{223F4DEA-8793-4556-B73D-33664E1DBBB1}%Hp X%, ;;)-201%i oolsi i ,` i  %``  AA@ Tru@ be s`e or`ML@ Mai g mu%%@ %"`pb"P8Hp XHp XHp X<Hp X8XH pTOV   $( P 2p J 4 V0 " 0 B  @ ^P <  Z X ` Fh J , 0 ,8 h p  "  \ H :`   &  "  .H Pp  2x.   ,  .0` .h  B   0 @ BH FP          8 "@ ,H x " Z 6  >( h x           ( 0  @ `  x           < @  ` 0p  ,   0  8 H P  X  ` &p    ,      x *** v05 ***************** 10-Aug-2011 uses PathTooLong0 *** v04 ***************ma+28-Oct-2010 Only loads users with SRSMAIL.D17-Oct-2010 validates selection of message pools (see MessagePool) -12-Oct-2010 Fixed to handle signature listsBuilO 4-Oct-2010 Can restrict list of recipients by supplying one or more XML tags for comment, see Display ()P]H]p+" vbOK to send vbCancel not to send] X9 nListType choose shornames or signatures for displayX bSorted True if the list is to be sorted. If false, same order as loaded from XML5 Mainly used when merging multiple tagsT Tags "" to show all users or pipe-separated list of tags eg "Doctor|Nurse"? Display the form modally with listbox showing specified users.D If the user clicks cmdSendToRecipients, set the recipient list into date& gRouting.RecipientID and return vbOK.h% if the user cancels, return vbCancel example dim f as new frmRecipientsU ' display all doctors and nurses sorted by shortname and send form to those selectedA if f.Display(CUSER_SHORTNAMES, True, "Doctor|Nurse") = vbok then3 gRouting.RoutingActions ' do send end if '4 Assume user will cancel '.`4 create user list `' if sorting, tell user list which field    4 2$096k+ load all users or users with specific tags9<<" only users having SRSMail address C@ (% load selected users into the control  h =; load signatures into listboxd =; load shortnames into listboxk`; if user list has both pools and users, display the warning  ( ser.q  B@ '4" return here when form is unloadedi @ return true is recipient list contains a mix of pools and users]]  `!( !D  'd  'k   'i A@r  this returns to Display ()oS look up the selected recipients in the user list to obtain their SRSMail addresses0 and hence build a recipient list eg PEARL;FAST.8 If more than 1 pool is selected, warn the user and exit]Ph]]]'  5 7   7 `%@. d 7 `%. k !> G ;'j  !>' !D  'd`  'kHk@k8 q 5 if the recipient list is valid, write it to gRouting9 and return vbOK so that the caller can initiate the send %Select one or more message recipientsA@  e$More than one message pool selected ' A@   e(Mix of users and message pools selected ' A@d , 9^5:; v05Too many recipients selectedA@d` ' A@r: this returns to Display ()k qko(Attribute VB_Name = "frmRecipien ts" Bas0{47AC727F-4361-4E4A-83F0-790FACBC3D7A}{223F4DE6793-4556-B73D-33664E1D BBB1} dGlobalSpacoFalse CreatablPredeclaIdTru BExpose0Templat@eDerivCustomizD Option 3licit ' *** v05 ' 10-Aug-2011 uses PathT@ooLong428-Oct0 Only@ loads$rs with S@RSMAIL517valid:s selecB-of message pools (see M*P@)2FixIto handfsignature lists 4 Can resct r by supplying one or moXML Xtag@fc(omm,0e Dis@ny (( Dim mUserL! As clsDnD @ResultInteger@R' vbOK 70send/cel notTypeChoC@AEnumqF unX(ByVaW , _  # bSort]@6BeeanS TL#S[ng)/a 'c ' n&c shhorns0F;sz /d#.E  !o if thA is%be s". If fGA|7ord@/asX from `> Mai]ed whenVrg!Fm`9ipPCE&!% ""8how all$fJpipe-separcdFT eg "Doctor|Nurse) eD< %@Q4od` yrbboJxa+wAsp_fi`rs.$G'WickXmdSPTo_@Q,hcintoE gRout` .ID u q@unb\Oe7an^s,`dEexa' " d`qf a ;new *'W@x2d,sn߁-^ARtSgBs-tth ode&dEf.EoCUSER_SHORTNAMES,U ,l;)vbok8n!)*A{sAgon&ifm,.=K 'xsuB3wiWc3 y=G{~SetQ8= NRn' cweR2%WfwvV!'@>', teT6)which `/l /eDTP=1.1OByPIIf(J= IGNAT,URSBY_Se, YbuE^I1'RI{B$vej(|^ mixQ!/aqJDet141nas, n1)F EaHI!,511.81 DW+ 13!o- s )!1Next QS ]P&($ <> 0{00(T!ivSub cmd_C`kCQU" <'E%re1e*%M]DyupLMv%>;ob"nqirMU:e$$'g0build a2C@@PEARL;FAST]!tМ 1R/% , As Dexc,i B-ʟ-rxsMs5"S3sUserDetails (sRecipients = ""TWith lstPossibdle BFor ij0 To .ListCount - 1HPIf .Selected(i) Then !%mnETypeVCUSER_SIGNATURES6:Set 5mE.Get BySignature(R@)>0Else .ho rtnam.nd8 If/Q.SRSM <>ߔsN  & ";z7 I*#(MessagePoolrA#n+ ,mg 4EP Next| iCC' if the r l is valid, write it to gRouPtinga@ re@n vbOKh soa caller can initia@sendLF~1MsgBox "cv one @}more m8=s$IA1 $6> 1l s s"M\th pBs}D SD = A!n#<> `ix of 2us ')s _`AACWa+3a.ID`j%.PathTooLong"&t' v05+ !D$" manyh3(*A+!amnDisplayResult KUnload Me'R@ZcUsAY$ (L hf !Subc     "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~t*H+~k(HXME40v > LPL<8<<<'^ Hb PH Hd h Hʘh  4Bʐl H ʐn @ H ʐ< h H ʐt @ G @C:\SRS\UserFolders.txt%z @C:\srs\SRSFreedom.iniStop+D @`k 7@h s re@X n us+` F : `@x+ N+~ `  X x` k@ ''ci ****`d**** n` ""i for I  I rce=+`8kX 44i<  \s@ d (pr+`pk00` trver+H`k(i cted+  `  ""i<ives@  c+  `  A  ` `@%x+@ Gi n ho+ H `!k CCQ` tory ` pdot"` ` l@ \ e us@L toOp@|< @ , top +  `0& k ` tes n@|&d P+ ` kBBi Gi G E tten and ` Pn .es@|P\ , ea@~L dual@ < ds1,+ P ` &&` olon` Z W@| ind+ ` + `X$0k i< eds@ d ange` `houl+ `!tk.` tatioZ hH\ H` ( Hʘf x5Bʐj Hʐp H ʐr  G H  @x @@@  x xP  x H  H(P  @`h X  %H:\srs\SRSFreedom.ini \srsserverXMLPath` t\www\SRSFreedom\FormsXML\\SRSServer_xxx$om.iniExplainXMLPath Repositoryeedo DesignMode@@8`8h`xx` x`` t` p@@  x xP  x H  H(P  @`h h8` pp@@  x xP  x H  H(P  @`h ` t ` p@@  x xP  x H  H(P  @`h ` hp` h` t` pp@@  x xP  x H  H(P  @`h ` t ` p P  @8 @4 @$ @ @ @0 H1 @ 001` h8` h@ 01@ @ @ @ @ 6 T @x `Xp(@@l 0 `t` h(@T  @P @@ @0 @ X`D z  p | v~ &@8H @8 @( `t@$ @ P@ `x `<t(h x j  b `t@0d p@` Xl ~  @PP @@ (x`<t@h0 `t@ X@ @@  @ (`<txxH`x@`t@d @T @ D @X4 @p$ `<t@ @ @ (@ `z  `<t "`<tx `~ @xT `<t@P 8 `x@@ ` @0 @ @ @ @ @ @ ` x ` x ` 8##%`<t Z @" `x` H 80"P" #` #x @" `<t@H# #H`x@ @" @ @ # @ # #%@`# H"@x# @  z  #; &`x` x$#($`<t($`   #$ %$#8$#@(%P @@ @0 %&%`x%"x '8' '&'&` x&&\ ` @P'T @h'D @4 @$ @  $x  :PTOV*\R1*#17e$*\Rffff*0g56cb4f54*\R0*#1a*\R0*#12*\R0*#2*\R0*#17*\R0*#1*\R1*#c6*\R1*#c6*\R1*#c1*\R1*#17b*\R0*#f*\R0*#e7B$ F0 .x   8 : RH D j LX P > P8Z6J  2pVV  XJh PV XxJF  @hJ N LH@ P * H P 6X  B 4   ` *?`   B J    ( "0 (8 @` h  p   B @      B  B 8 F@ R L F0 x H ,  P <P  T  F @ H 4 P @ <  +    "   6( ` Zh H  " @ RH  @, 8 X `px,   B  8  X \`  *  P 2P `   0(( P  X :p . X 88 &p H L"0 &H *p   8 4 .0 ^`0V & *( X ` h Bp dx  "  R jp j hP  `  ( & 0 6"X  6 .  .  . 8 h     D@ @H 4I   B  4 H "P x 0V   B   , 0 B8  0 : N H! TP! ! ! :! "0"*8"  Jh"0" "# ,#@# P# X# `# B h# p# x# " # D# ,#  $ $ 0$ B8$ @@$ B$ $ N$ ( % H% >P% % % *% (% & J& \h& b& 0' 68' p' x''' 2'  ' ' ( (( 0( 0,P(&( ( &A( ( .7(( )&8)X)  V`) T) d*x*PF* **  *  * + (+ 0+ B8+ 8@+ 8x+ + Z+ , 2 , X, "`, , ,, <, ,0,L: -4p-- -B - P- . &. @. bH. P. N/ P/ bh/ / 0/ 0 60 H0 P0 p0 0x0 0000 0  <0: 1&`18111  1 "$1 2 *,2  !@2 `2 D!p2 !2 22!28K3"H@3h3p3 x3 33 $$3 3 3 3 B 3 63 64 P4 ,X4 4 V4 4 *4  5 &(5 P5 PX5 5 .5 5 55 <6$@6>h6$6 6 6(6(7 @7"H7 p7x77 7 B 7 7 7 B 7 67 7 "7 8 (8  08@8H8X8p8 x8 8 B8 &8 ,8 8 . 8* 9, P9 9  999 9 9 9x7 with this option, "a" = "A"Open? Common subs and functions used in the repository, and in formsli( main function is to locate ...\FormsXML** *** v05 ***************1 19-Sep-2011 DesignMode moved to modCommonSubs3 14-Sep-2011 BP gets server naame on hosted systemsLL 31-Aug-2011 BP supports Hosted SRS by looking on H: drive, ExplainXMLPath()t> 8-Aug-2011 BP split from clsParameters for use in Repositoryc special logic for VM and tablet folders removed since these can use UserFolders.txt****E PropertyRead, PropertyWrite moved from modApplicationJ *************************************************************************8 standard SRS paths and filenames -- see GetFormsXMLPathFoJ *************************************************************************]C:\SRS\UserFolders.txtx 81 optional file to map an SRS folder for each user]C:\srs\SRSFreedom.ini 8 Source=server]H:\srs\SRSFreedom.ini8" Catalog=server & top level folder] \srsserver 8 (prefixed by server)ec-2]\www\SRSFreedom\FormsXML\(8* (prefixed by server) & DEFAULT_SRS_FOLDER]\SRSServer_xxx$P83 xxx is replaced by the name extracted from Catalog]$5 ows ]$4x87 dir(s) where s is a non-existent server gives this err custom properties]$XMLPath 76 if present and valid, the full path to the XML folder]$ExplainXMLPath76 if <> "" show msg to explain how FormsXML was located]$ Repository7< property containing the Repository name eg "Repository.dot"]$ DesignMode@ 7. if present, give user option to skip AutoOpen]$Stop70 if present, stop in AutoOpen to allow debugging]$@h 7( assign this date if file does not exist]$@72 assign this date if date time can't be determinedH Previously, Save etc used ActiveDocument and this could cause the wrongF document to be saved -- while ThisDocument doesn't work from an AddIn X] @6 v04.138J This is initialized False and reset to false each time execution restarts# DesignMode() returns Not mbRunMode]  ] / see comment in zGetSRSTopFolderFromUserFolders]. returns true if user chooses to skip AutoOpen]( p $ Run AutoOpen? 6(To suppress this message, clear DesignMode property) '  | v ~ $ &G'D jkhi`@C Code can test this function to skip annoying macros when designing eg popup calendars etc H 'i! see comment for WordFormDocument  .xop SRS Repository '~ @ SRS Form '~ i; Read and return a custom property in either Excel or Word.@ ***************************************************************L Setting a property to " " (or any number of spaces) or to "no" is generallyE equivalent to the property being absent because ALL the boolean-type@ tests are of the form if PropertyRead ("myprop") <> "" then ...B This allows the templates to have all properties present which is& convenient for configuring new forms.I NB, to avoid a possible source of user confusion, "no" is returned as ""6 so that code like the following will work as expectedM If PropertyRead ("stop") <> "" then stop ' "no" means don't stop@ ***************************************************************]`'% if property doesn't exist, return ""p  % $'H Word Form % $' $ noG'j 'ix0 Write a custom property in either Excel or WordnlT If the property doesn't exist, it is created first using the optional nPropertyTypeault rB If nPropertyType is missing, it defaults to msoPropertyTypeString The only types we use are:rityK msoPropertyTypeString, msoPropertyTypeBoolean, msoPropertyTypeNumberated w $ G ' j 8 , 9' N|0$ no error -- property already exists@ p 0 report errors herefr ! B@Si  Word Form , d by r|0$ no error -- property already existsrope8 0 report errors hereto ! B@lare o 2 returns True if the file or folder does not existU sFilePath Full path to file or folder. If a folder, must have terminating "\" or "/"'# if sFilePath = "" then return True'J Should work for all files and folders (returns False for empty folders),, both local folders and server-based folders'Z EXCEPT this has NOT been tested for EMPTY VIRTUAL FOLDERS eg "\\Csddemo\my empty folder\"]x'.# an error exit means file not found <Gzj. see Dir note 6  Notes on Dir4 1) path must include terminating / or \ for foldersrtname( 2) will error for a non-existent servermeQ 3) will error for a non-existant top level (virtual ??) folder on a valid server1 4) returns "" for all other non-existent folders 5) returns "" for empty folders wA 6) returns next file in previous explicit folder if sFilePath=""E 7) Untested -- empty top level (virtual ??) folder on a valid servered W <$~'1 file or folder must existrid1" may still be a valid empty folder.16 re Notes on FileNotFound1 1) folder paths must NOT have terminating / or \. 2) will give a valid result for empty foldersnlin' 3) will error for non-existent foldersX 4) would error for valid virtual folders (but if non-empty, these won't be tested here)se <$\ <$/ < < $'<this sk <$ ' te'3 if no error, file must existki] return the path to \FormsXML (terminated by "\") or return "" if that folder cannot be foundp Rules for finding \FormsXMLd formL 1) use XMLPath property if this is a valid folder (for non-standard SRS)c 2) if an entry for this user is found in C:\srs\userfolders.txt use that path & append \www etc`d 3) get server from Data Source= in C:\srs\srsfreedopm.ini & append \SRSServer etc (standard SRS)'6 Rb 4) get top level folder from Catalog= in H:\srs\srsfreedopm.ini & append \www etc (Hosted SRS)Y If "" is returned the caller is expected to prompt the user to look in the local folder.]'x H clear diagnostic string f j $$' H read the "XMLPath" propertyho $H GXMLPath property is invalidA@ jwi ' H for salesdemo and test systemsWh H top level folder was foundth b ' H full path to ...\formsXML fXML folder is: A@  $ accXML folder not foundA@ ' k8k0d(Using XMLPath propertyA@ XML folder is: A@ H we already know this is validk: if ExplainXMLPath is enabled, always show how we got here- this will show twice if using the repository6 l $forms  ~ l A@pek 'i- tidies up common errors when supplying pathshrou NB, if sPath="", return ""ything $' rugn $\ $/ \'k 'kiH& This can be used for files or folders; *** Folder paths MUST include the terminating \ or / ***) Returns the date and time last modified.3 Returns 1/1/1900 if file or folder does not exist.H Returns 1/2/1900 for top level folders on servers (virtual folders ??)N NB, FileDateTime errors for top level folders on servers (virtual folders ??) eg "\\Csddemo\srsserver"] <$:( requires terminating \ or / on folders r ' : for missing filesd t ' : default for virtual foldersC FileDateTime requires the terminating path separator to be removed <$\ <$/ < < $'<k:" trap errs for for virtual folders <$ ' ki x ' i= This will append to a diagnostic string which will be output& if the Diagnostic property is present x G x 'x j x 'x o`: Method for finding xml on on test systems and \\SALESDEMO; ================================H On these systems, each Windows user can have their own top level folder" (the equivalent of ...\SRSServer)7 If available, the mapping is in C:\SRS\UserFolders.txt Format: user=path eg$ "bprobert=C:\userfolders\brian"! "jsmith=C:\userfolders\john"C If the folder name contains "_" eg bprobert=C:\SRSServer_jdegroot,V the right part of the folder name is extracted and can be accessed via WorkingUser().[ clsDataServer calls WorkingUser to form a database name for the problems list web service./ returns "" if no valid folder mapping is found]]]0username$ ' F current Windows user Z $ '  Z not foundA@ d Searching Z A@  $' F lines end in vbcr, vblf  $ '  $ =  foundA@   $' F rest of line $   $' kO If the standard naming convention is followed, this will extract the user nameM so that multiple Windows users can access web services in the same database] eg bprobert=C:\SRSServer_jdegroot gives bprobert access to the FreedomDemo_jdegroot database _$ '| | G | $'z jN! to be accessed via WorkingUser() ' zk  not foundA@ kiH2 Standard method for finding xml on client systems2 ==============S Attempt to extract the server from "c:\srs\SRSFreedom.ini" and append "\srsserver"+ Eg "\\CSDDemo\srsserver" or "C:\srsserver" returns "" if unsuccessful]] \ Source$ ' J try to read Source parameter  \'|J eg Source=HJDORTHOSVR\SRS | G | $' jJ extract just the server name\\  ` ' J eg \\csddemo\srsserverkPiHI Read the specified parameter from an ini file eg "c:\srs\SRSFreedom.ini" look for a statement like this:[ SRS_DB_CONNECT_STR = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=;Password=;I Initial Catalog=FreedomDemo;Data Source=COLLINS"H ======= Or (NY Ortho)\ SRS_DB_CONNECT_STR = "Provider=SQLOLEDB.1;Data Source=HJDORTHOSVR\SRS;Initial Catalog= ...) Parameter is delimited by ; or " (quote)0 Assume the parameter is less than 30 characters returns "" if an error* NB, this module has 'option compare text']8]P]h] 6 if the same file is searched twice, only read it once 8' if different from previously read file ' 8 save path for next time $ ' 8# read the whole SRSFreedom.ini file' k0    not found A@ d G  Searching  A@ j SRS_DB_CONNECT_STR'| | | '|9+ look for 'Data Source=', 'Catalog =' etc | ='| | | '| ~ | | "; ~$M look for " or ; | ~ | $$' z k ~kp kh  not found in  A@ k8 0 i( 0 Method for finding xml on hosted client systems0 =====================% Users will have a suitably-mapped H:P Attempt to extract the server and top level folder from "H:\srs\SRSFreedom.ini"$ Eg "\\SRSPRIMARY1\SRSServer_CDIS$\" based on a statement like this:J SRS_DB_CONNECT_STR = "... Catalog=Freedom_CDIS; Data Source=SRSPRIMARY1"( returns "" if no such path is extracted]  ]8 ^ Source$ ' L try to read Source parameter L eg "SRSPRIMARY1" ^ Catalog$ ' L try to read Catalog parameter L eg "Freedom_CDIS" _'| | | $' E eg "CDIS"\\  d xxx $' dInvalid: Catalog= A@ kkkxipP z ' iX 0 read a file and return the contents as a string return "" if file not found]   <$ ' ' <  $' Vix  gets the folder above \FormsXML& eg \\csddemo\SRSserver\www\SRSFreedom]` ' A for salesdemo and test systems A user mapping not found ' A standard client installations  ' A hosted clientskHk@ ' i0(Attribute VB_Name = "modCommonSubs" Option Expl0icit@pare Text  ' with @this o,P "a"rAf H ' w sx and func|s used in=e repository,%formsA,ma 6 ito loca...\F'XML* /*** v805   19-Sep-2011nDesignMode mov/F, 4BP gets server na!hostsyZ31-Aug4supporHSRS bycoking !H: drive,yiPath()B 8 't from c lsParCters UURTKsspecia"l gicB VMA^tableo$ldreFsinceAjse cTanU@AF .tx' PropertyRead,FWriOn0\ApAaq o?st@Pard ]pUsA:filen@Ns --te Ge>tE^?!D Const USER_FOLDERS_PATH˨C:\&\LT"S.'րkA, ap@03fB`peac hAfre INI_FILE srsa Freedom0.ini ' Source=#\ HOSTED_1 H:\ atalog$ &p levelK=c"DEFAULT_` D#"A )e"(prefixnh e @hF\wwwƆ\ <' Oi"ING S"_xxx$' lacCthec@racbC'$Pub G ERG`:NOTFOUND %53 " nBADA?NA4MEA2&' dir(s) whesa n@on-exinjtgs@er@Lccust`2p|ie CP~_`0\Ao"' if @:se avali#full vA_ fH EXPLAI~Na k穤 <> "" show msg e ` AE wasd -REPOSITORY,6"' cont` ᾁG@g .dot DESIGNMtOD;"خW, AEskip AutoOpen STOPq pStop$,: 0!pheqallPdebuggn-bJDATETIME_-#1/!900#' asa{(da@Qdoes+t + UNKNOWFN 2/1 g)ti:p't be de@w0minep!0PreviouslPSave etcd A0veD0ocum.Bco8uldu e wrongd+^sdajwhilQn 0work3zAdDdI#IfcDel, Th1#Else d%0Word&As. dd'4.1G#EМIf'`A!nitpdizMFapvres0 f"rjexecut 0tart,() returns Not mbRVu⚦g B ooleaP Dim =DiagbnicM=S簱se@z[Top3Fx%!FU/S5 { Q'6 true%r choos+`L9Aa s 06TitlPsP(ɖ(I'B) N)P0" v@?"ovbCrpLf _2& "(To 0amessage,Шear VO<) PLE @ Box( vbYesNo + vbQues!, #r) vb,f TPG )*vZ&_qt 9-˖Sannoy\macrozsQtn`AIRN' eg popup>daA;=b.F- ; Sub CreO};3'P{-Q_BBaS@ ""Nn ..f.F&ThWUows8templa1Thave VieseU`whichv$convenibH figurnPnew Rs >NB,3avoidossible sourcor%usion, "retur4nesnAso aatde likeifollowDwill work as expectedG ISs8top SAC '&mjs don't AV#FDim s As StAY }J=A~()does)exist, TROn Err@GoTo errlabC#HExcelFThens = Trim(ActiveWC[k.CuDmDocum@)(s,Name)b)DElsļ' d Pnd@> LCase({(N .a*cn= s %:!2E Fun!o $ SubtWrite(ByVall J :,ue, Opt`nT@@&# hc,Evy in eir 6A%x '@bdBi"tcre@d first @qy o *mBi{ng, d`efaulmIsM(K, ?=! dkerte`m'BDycPEx`,aM#'L n"|}--Fal>dyO[A k0 reportaors her{.Add!d, Fa`, 2Lfb1GΈN?EKe)B F5'0_q{?y[?I>#qQIf*R FileNot`FoundR1PathQ)4= A shueQ]qJfqOdpdo@/(o3DsFuЂp!@J+.qSa@lD ’termin"a"\"A"/",`xWd!Xn%xTru16 Should! `eS s (3|sc19 М), boloc daserver-bpo^o ?' EXCEPT hNOT been 񨀘q EMPTY VIRTUAL FOLDERS eg "\\Csd@demo\m Em:pF \ aaDfS1!5!;?@ant #not@ %3?^\^:(' see DirA#xe 6SC'f p `on3'P 1) %m#inclu#/#\22) b@[ ` n-rѷ[C3ap level ( virtu !??)w{4)*r A)`%5no 5~**e 6gnexp="E% 7) Un*m//f03 " (FuA#S#*bj$M' ΂!1l?' may iLb #q*) +,s  @O#,+gPf%res$ tGS O,/&r)w2Sg2#vi[rtual folders (but if non-empty, these won't be tested here) If Right(sFilePath, 1) = "\" Or8/" ThenGGNB>Lef SLenb) -d<@End IfapDateD Txime=(.N otFou#= Fal{o ' error, fy must exist)K lab:   FuncHtio  GeArmsXML() As StringD' return p to \Fo (termin~d bBy) or"B"^that cannowf>-' Rules r9nd@!G7L &|u@M. propertyCis a valid(f&standardP SRSD';2)Aan entdry"thr, in C:`\srs\.txt I@;J@& appex\www etc93) get serve@;rom a Sou0rce=freedopm.ini G/S (54top leve fCatalogH51 (HoHO6}sDg@@}ll9@RexpeczH 6~K)Klookaсloc. Dim sEPWV8msDiagn`icMsgs@&' cl ear d& sc `ytC` n"jPRRead(CP_UATHL))jlad"!"Y"Z +`Dp} )H @<> zABS]$ i`hnh" ' BTop^F'ksa@~demo @r" syKmsq7Y 'L`wa!und & DEFAULT:_P : ull...\ ¬ 0"!: "}J !BIa✈>% l Eng "Us_0(??+(2% r' @we alr@9y know7I .d [)~"yExplainU enabled,ways shǀ1gotrbewiP"Rtwi4ceguOrepository3DEXPLAIN!1E =# !OBox , , Title0&I ,@U)Q/on *QByV0^sBE_ p;idiup comms w0 supxplyA#wCVN B,R="",iP# SC= Trim( 01 a~A#t`= s&qS !I*= &aQtBaT{a!pts*** `Ps MUSBT~cludhA\/0`ՌRRs2rdbP lamodified 1/900 do%N/2/1pEr~cs 0(㛠vi??ed A(Q?îyӷ eg"\Csdt R’E,A%?7requirzQx&P*FILE_DATETIME_NOTFOUNDmisPt "")Fen =& vbCr% $~Priv zGetSRSTopFolderFromUsBsi' Method fo@r findp @xml ontest syst ems a\\SALESDEMO.'đ=DIOn`se,( ealW@%ows u@2 can haveA ir ow op lpevel0A=(QtequIlo of ...\H@Server'C @tavai@le, mC@in C:\T.txFormat: )=p< eEF"bb=4fg\brian"# jsmith xjoh .A; nacontts "_"@ f _jdegroot,% right part& !extrac8tedbBa2jaccess`via` Work@'%(D). clsa/`9lls)wPmwataba`A/bSA'lAQli!Rweb `Bvi ce%  retu$rn`" {no vali\D:foundDim ¥C(Gƛ, sLineGCA9 F@g i, i1@ AnN6#s`Environ("3AFa"") |' currhaCRead(USER_FOLDERS_PATH$edLĝA ' & " ns`Vn Y Ss+ZsbdV'cS\c givesf`A[FreedomDemo'1i1"InStrRevl/P 0> 0?g&0 'Agkk'&Exit曏& N" i<2 fX? om_CS0mcliQk OxAtppnt51eЯв "c:\srst+.ini"r"3Eg "\\CSD.h "C!unsu”fulcSParam`uem0 s= 1+IniAireter(INI_FILE~, "SourceJ2ryr@ AC8O7= =( \/I=HJDORTHOSVR1g\AY =qsWA"^ `c juЦLX}?@o/? !& DEFAULT_ 4eg \\csdd@Rw# 8]8?808Kmeter(ByVal vsIniFilePath As Str ing, xsPXaral)(  ' Read the specified ptfrom an ini f eg "c:\srs\SRSFreedom."OVlook for a statemen@t likeki s: -K_DB_CONNECT_STR = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=;Passworxd=;GvtiCatalog=iDemo;D Source=COLLINnSs' =OOr (NY Orptho) *HJDORTHOSVRi;8 ...Eis d@elimitby ; p" (`quoteE& AssumAteȌ@0lessy30 chcs Ereturns@ "" ifAerror NB,B module has 'option comext' DSic ȒpContFC Dim bNewABooleani1, i2, sServe/COn E5 GoTo @8labCC'>@؁Psearch@`twice, o nly rAitIceIf̀<>KThenLRdiffer"|previous߅ A}# (=, ' sav!B!n3 timgAE .= +A(m )aa'$wh0 @c&5 = TruEnd If'Q&zAppendDiagnost@KvbCr &-& " notu d ~E` 56 ">SB`  i19In )$-, "@'l"z!> 0 a ^'@`ƈ7' F'', '' etc t = + 1K Fau7aӹa#Fpe0bs paO1]09`Ρ7SGn , bL!` Longeѱ On Error GoTo errlab (nFileL en = $(s Path)D>ree4*Oph V FInput As P2ReadA(r,%eClose 7 : End Fun`ction GetSRSTopFolder()Stringv' gets the f above \AZmsXMLU' eg \\cs@ddemo\,server\wwwFdom*Dim s=: = z UFromU/\sR'Tr salesF atest systemsXIf@= "" Th'' uA mappJ notundA ^0_C ' st@,ard client in@llatp/߁0  !H ' ho@J AIfC AA ɣ *.be'~)Y&AkH4>~*=h8+3q30Bq+u^x30Bq+u^Y&AkH4>~RRME PSS SH,6"<<<N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}@@,X j0<,@j hD<@j.XHD@jPT@jDXd @j\l @"hp @%` %pmeteX AHh tV)Jd` %,!L@h x##]i $ 2,!(h | iNrepai list`Pl-20 A(h iN8iTd`P modp%j.Cj0Cj2Cj4@Cj6hCj8Cj:Cj<Cj4@j>8$@jf@@4@j@LL@jBT\@"F`8 @@hh@Xx0@0`j.Cj0Cj2Cj4@Cj6hCj8Cj:Cj<C@hh@Xx0@j.Cj0Cj2 Cj4( Cj6P Cj8x Cj: Cj<C @x P h@Xx0( j. Cj0 Cj2 Cj4 Cj68 Cj8` Cj: Cj<C p @` 8 h@Xx0 j. Cj0 Cj2 Cj4 Cj6 Cj8H Cj:p Cj<C X @H p h@Xx0 p  xpppT( TOV$*\Rffff*0j56cb4f54(*\Rffff*0j56cb4f54\0V " D0 &x L  $ T8 F 0 . *8 Xh  h 0 8 X 8`    P X &h  d    ( @ (H "p  f ( 0 .8 h    2 R ,8 h x ^ X h8 " \ "x     .  0 D( Xp , $  F( "  p x  B B                ( 0  8 @  H P  (X   B  2  .   "  6( ` h .p    :  x *** v06.00 ***************ion of> 13-Dec-2011 PersonID supported, password validation removed *** v04 Build 7*************** 2E 3-May-2011 InsertUserParams added allowing up to 26 UserParam tags *** v04 *************** 23-Feb-2011 UserParamC addedN 15-Dec-2010 UserParameter1, UserParameter2 renamed to UserParamA, UserParamB *? 10-Nov-2010 changed to , added) 18-Oct-2010 AgentFor and Initials added( 17-Oct-2010 MessagePool property added$ 28-Aug-2010 Password support addedR 10-Aug-2010 KeyField and KeyValue added in preparation for sorting the user lista 30-Jul-2010 Password, ReturnToName, UserParameter1, UserParemeter2 added, FormsGrouping removed 21-May-2010 Baselined1 class module to contain the details for one User Passwords =========I Passwords can be held in XML and are encrypted using a simple algorithm.Q The encryption is built into modExportAsXML which automatically encrypts any tag (Excel column) called Password.] To validate a password, supply the entered password to the ValidPassword method (see below)ti Sample Usageig =============" Dim UserDetails As clsUserDetails dim sMailAddress as string32.` UserListLoad "C:\MyXMLPath\" ' Load Users from XML into gUserList (usually in AutoOpen" for each UserDetails in gUserList' sMailAddress = UserDetails.SRSMail ... etchcp next UserDetails+ sPassword = inputbox("Enter your password)adpL if UserDetails.ValidPassword (sPassword) then ' Password validationim& ' user entered a valid passwordim end ifdW One of these constants can be assigned to the KeyField property to nominate one of theQ fields as the key field -- which will then be returned by the KeyValue property.a This is used for fetching users by a specified key and (when implemented) for sorting a UserList '.'0'2'4'6'8':'< properties loaded from XMLU NB, you won't normally write into these properties, because they are loaded from XML] % used to find digsig] ] ] 0] @] h% needed to lookup ChartBinDoctor] X] %" typically the SRSID of a PAs boss] %5 To hold the ReturnToName as used in Order Management] %I Set True if tag present (indicating that 'user' is a pool)] % To hold an encrypted password other encapsulated properties]]%0 for the etc values (A-Z supported)x J'Fmx; return the field selected by setting the KeyField property F 0KT 'L 2KT >'L 4KT 'L 6KT f'L 8KT B'L :KT .'L <KT @'LSUser Key has not been definedA@nxmp@, sUserParamSuffix ="A" to get UserParamA etc] N$ $RA$ $R  'P P$'(m0 eg User.UserParam("C") = "value of UserParam C"]X N$ $RA$ $R  'P T P+{H@!Error loading XML tag, 'UserParam N'A@mqAttribute VB_Name = "clsUserDeta@ils" Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |GlobaBlSpacFalse dCre atablPr@edeclaIdCExposeTemplateDerivCustomiz EOption 0licit ' *** v06.0013-Dec-2011 PersonID supported, password valida0remoN 04 Buil8d 7/2 3-May2IntParams addsallowing up to 26  tags@24123-FebFC15:0 eter1,2 renVd!AH B00-NovA `chang30<AgentFor>, qqs: ( t=that 'r' ?a p0 T Po" @~r1PQ,orzapsuѼdoq`/ omn@3eA&aA3(1Q26Z)'BGQ<A>qeaZu5(A-fZ}*ed0 PL5(Byc ? ey;1X =aA>Gue(( a9A' Z+ 1%3ma:(/)L冑L, MQCQEA' eg_.F% ("C")*"vBofg C@x4OOn Error GoTo errlab?VA~S/h?Exit EUA$:C!,load XML tag, "'H" &Ϝ& "'GϺA |6q8A~ xME $@8@ 8L L 0L<< (L 00<, (L > LLLLLLLLL -2ꀮ0 @@ P @B X@h  @l  @n  @b (%% `X$|+h ir R T J`#|+iv +(`P)t+  8`hi ave I8 4, 2 d us%`  twi  cra%  co%`fpdow+` x55Gi  * ****%  %`  0`  | Lp`)|+ `   `p14k+&h `0 i nown@  *   ` + `  //)to a %iJ 0 afti  ^d p R%@Z  *+ `  iZuppo  *%  P ` > `.kFI ? J  P` ##]i r-20i raph H con % ``0xk55i disa %` 04 *+( `$z+    ` EE 2 2%@ use@ 9 ` e re+ 0 `  i ad r+f `op I  H 2 d grap%  ` FOUN% \ g-20 %@L whe` J hics@D 8 g-20@` ( kIDs $p rkID%  8 2%` Word` ic `  Get@ ( 0Hlead@ @Hd "D 4 ` P )+ p x use %i,  dem@ h is  `    `!o0 BB) P aceD% xp Q W% . t this% 1 p lbar% 2 l ment%`` hderM+ P` x+0 i6 tis+ `  )F T %)< g th % @ 8` 0 " Insert datetd 14 `&kx770iB  B" etc * d wh %  `0&Xk%%g *  Ex % H``  F` III P *@ es t@Z oduc @0` +Xp `*t+  +\ !` ! @ ^ @ tion+v "`.t+"&+#``#$$5% 2 plic%  an %`$  5 *  ($`  $Y) m fi% & %` h%p) *%If Z 1 4 x&` &) _ 1%)8ed t%  Xcate%`` - + '` ' Tp(`X,k(77i| V @~ h t Ap +dH= Fa$% 0`hnimi$%+ )` )@ 2@` Applʘd Bʘf B> ( @x @j @q   @ 8( ppP 0p80 `x0 0(P(Xx(  P(h P @   X x x`H0@ `fzT  Chec  works@ h n, a@ h  3 zAddedBkmkAuto0000 8( ppP 0p80 `x0 0(P(Xx(  P(h P 8( ppP 0p80 `x0 0(P(Xx(  P(h P@ h  8( ppP 0p80 `x0 0(P(Xx(  P(h P@ h  8( ppP 0p80 `x0 0(P(Xx(  P(h P@ h  l@X  0@   @ O   @ @ X @ @ @ @ @ @    | & 0 C @O p  VO $ " & P( @  p@ 8!0p!8!!P!` z `!8!!@x p!8 : :  X x 0 "h"`##""P"" 4 ld @#d @"` "" #@\O #"@X @T @0#D #@@ @H#0 @x# @# @ @ "<h%%%`z  %%Hj J @x @h 0&`| x&&%%@X x'''j J `| x@'l @(\ @(L @0(< @H(, @`( @ P@ `z (x(`| x )@t `Xx`| x*(@ l x((x((( @ @t @ l (*(*()`| x(,++l v @ l @P-P X@-L (@,H @--$@ l P+,+-++@D @(-@ @ H FP H  J F8 X N ( "0 :X b J :P " P " 20 "h H " ` "` ^ j 0X " N " T( " F b "X \ " \ "h V " d "x 8  " ^ "h X " ^ Xp N  " \H H  \ Jp ` ,  P "X R ( H (H Hp V P \` d &( VP & T X( & ` f 4p  H \ Rp > 2 >@ < > L hP j `( : Z *( BX  P T$XH  ^ \8 Z > (@.h b Z H` Z  T  \x"  : ( .0 @`  h x "   N < P( x X , @! ! !< !`!$h!! ! !B! X! " 8" @H"P"h"p"" " "  " " `" # X# Zh# `# ($ 0$ XP$ &$ $ $ X$ PP% &% % % % X% \H& \& ' '  ' P0' F' H' ( @&( @( P(`(h((((6(((( (  (8) 8) 6H)2):))8*8* @*H* DP**** **** +0+ @+X+ `+p+  0x+ + 2+ L+@, `,6h, , .,  ,  ,, ,8-@-H-  P- .X- 6- - --. ..  .$8.`.  B..  . . :. 8/ @/  P/ `/$x//  / 8/ 000 0B  0 R(0 0 V0 0 ^0 @H1 P1 D`1 11 111112 2  62 P26`2 f28383 @3 H3 X3`3  @h3 $3 P3 P 4 6p4 4 4 H4 5 (5 085Ph5 5 5 5 5 5" 5 25 @ 6(606H6 P6"X6 H`6 R6 7 67 <@7 @7 777777 7 " 7 8 @ 8(8@8 H8X8 `8 "h8 :p8 ,8 8 B8  :09p9  x9399 ,9 V9 >':X: `:p:x: : : B  : H: : <: (; 0;8; @@;H;`;h;; ; B; ;<<< 8< @<" H< ,P< < \< < ^< LP= = @==== := >(>@> H> B P> `> x> L> :> (? @0? p? <x? ? n? 0@ P8@ @ @@ >@ A  A N(A @xA AA  <AA AA A"B8BXB`BhB pB xBB BB B B B  B *B *C 0C \8C C C PC D D `D xD JD D @D *D E  E  (E8EXExE E E" E <E >E F 0F" 8F B@F F <F F @FFFG G-G0G<8GXG`G hG pG "  xG LG &G G @H @H PHH TH H H @I IIX I BxI*III J J (J 0J 8J @J" HJ NPJ J J J 0J LJ P@K K K @K KK  K  K  K"K L L 0L 8L(@LhLpLxLL L L L L L L L L L L BL :L @8M@MHM PM" XM Z`M M XM d N N fN N JO PO XO hO TxO hO 48P @pP xP PP P @ ,P&PQ(Q@ 0Q(8Q@ `Q hQ  8pQ 4Q Q R R R R 0R  ^8R *R6R8SF8S RS  *S T@T@XTRT T T UB  U U JU hUpU xU U U B U U U U @U V N V 0pV V JV hV  `W @hWpW xWWWWWWW 0W&X 0X  68X!pX FX  LX 2 Y "=XY0 Y&)Y YY Y  Y  ^Z `Z N$pZ ZL Z  [0[ P[  TX[6&[.[.\H\ X\h\p\x\  \\ \  @\ \ \  ] ]  (] *0]( H]p] x] ]  ]]  ]  0$]  (].^ , H^>x^RG^  J^ 8_)H_ X_ h_ .'x_ _  _  8_  _  <` H` N4P`  `` ` $` ` F ` !0aHaPa Xa `a "  ha Rpa *a @a 8b @b Hb `bxbb b b b b " b @bb(bb b " c Tc P`c 0c c 4c @ d(d 0d@dHdPd Xd!`d Pxd  d d  d  d Fe,He$`e  pe0 e e &=e.$e  f f  F0f Nxf6%f$g8 gHg Pg Xg  `g  (hg g  g g g B g >g *h @0h8h @h )Hh `h hh ph xh B  h Hh h Rh @0i8i@i"Xii i i i " i Hi i j @j RXj j " j $j j Lj fHk Fk k ^l 6`l l ll m m 8m lPm m :m @n BHn fn $n  o T(oo $ o, ooJoHHpp :p p @p p p q *qHq Pq `q)hq q q "q q &q q 4q r :r Pr $ Xr0 rrrBrs s@8s @s Hs Xs hsxs s s s ss s s " s s >s  t \(t 4t @t8t2u V8u u4uu0uBv Xv*hvvv v "  v v 4v w Hw 2`w w Fw Rw 6@x xx @x x xx ,x y  y0y@y<Py yyy  Zyz (z@0z 8z HzXz P`z .z z z{{ { ({8{ @{ X{h{p{x{{ {{@{ {{ {{4{ ||  |80|  h| p| " x| | :| | @|| |} N}X} `}p}x}} D} D} N~ h~ x~~ ~ T~ F PX J  B ( 60 h (p  @"Ѐ"؀  B  8 P `h( B V  , @H P` hx @B F  H B8 *  ȃ  Ѓ  2 8 2P     ȄЄ @؄B  L  @ P X h p      @ȅЅ"  ؅ L  0 @ H X ` p x   @"   JȆ N h Xp ȇЇ ؇    (@8 x  B H  B 0 H P " X H`  8 D 0 68 p x R ,  R( P Ћ ؋ @ F0 >x J   (0  6@ x  * N] / N *?p $  V؎ /0   JP   B Xȏ  ,0 ` @p   ؐ  B 8 Hx6 treat upper case and lower case as equal ie "a" = "A"? When using in Excel, include the symbol definition ExcelForm=1B in the conditional compilation section of the Project Properties.D This module contains a number of routines which will work in either@@ Excel or Word. Use these in preference to Application.Quit etc.R This module should compile cleanly without any of the other template code presentG so that it can be used for quick upgrades to legacy forms or in tools. *** v07.06 ***************4 Mar 15, 2013 reports fields which have been fixed< \ Mar 14, 2013 zFieldsToFixAdd used because fixing same field twice can cause Word to crashC correctly fixes textboxes, dropdowns and checkboxes06.14 reports fields which have been fixed *** v07.05 ***************I Mar 13, 2013 fixes BOTH fields where 2 have the same name like "Text*" *** v07.04 ***************tuq, Mar 11, 2013 Fixed to be Excel compatiblee.d *** v07.03 ***************ughA Mar 8, 2013 CheckBookmarks processes field types consistently *** v06.26 ***************Z Mar 4, 2013 ApplicationCaptionLet fixed for 'hide extension for known file types' set *** v06.25 ***************dllX Mar 4, 2013 CheckBookmarks and CurrentFormField rewritten to avoid using BookmarkIDld (due to a Word update which left BookmarkID=0 after renaming a field from a Dialog)^d) RefreshBookmarks removed *** v06.22 ***************G Aug 31, 2012 (date added later) BlackBoxFill has support for Yes Noa *** v06.19 ***************ykbM Jul 17, 2012 ApplicationGet fixed to work from toolbar code eg zSetSender *** v06.18 ***************^d? Jul 6, 2012 ApplicationTarget supports multiple worksheetso[ CheckBookmarks warns if the first field has en entry macro (Home missing?) *** v06.17 ***************U May 10, 2012 ApplicationGet handles empty fields correctly (including hidden ones) *** v06.16 ***************U May 10, 2012 ApplicationGet handles empty fields correctly (including hidden ones) *** v06.15 ***************O 12-Apr-2012 BlackBoxFill has commented out code to allow Checkmarks in Word *** v06.14 ***************] 12-Apr-2012 BlackBoxFill supports Checkmarks (Excel only) -- see BlackBoxFill for details *** v06.10 ***************1 2-Feb-2012 ListBoxSelect supports Comboboxes *** v06.09 ***************X 20-Jan-2012 ApplicationGet fix -- uses WordFormDocument when accessing HIDDEN fields *** v06.03 ***************Q 22-Dec-2011 CheckBookmarks correctly suppresses MsgBox, fix to bSevereWarning *** v06.00 ***************W 13-Dec-2011 CheckBookmarks bMsg parameter added, bookmarks named zAddedBkMk0001 etcQ ApplicationGet returns string, improved handling of HIDDEN fieldsG ListBoxSelect will select a specific entry in a ListBox *** v05.01 ***************U 11-Nov-2011 ApplicationGet does unprotect when reading Hidden form fields in WordA 17-Oct-2011 ApplicationLet checks for strings containing vbLf *** v05 ***************V 13-Sep-2011 ApplicationScreenRefresh added, comments reduced, aaMapDateKey removedC 19-Aug-2011 ApplicationGet supports Hidden form fields in WordZ 8-Aug-2011 PropertyRead, PropertyWrite, CreateWordFormDocument moved to modCommonSubs& BooleanConverter added *** v04,14 ***************L Jul 29, 2011 ActiveDocument and ThisDocument replaced by WordFormDocument! *** v04 Build 12 ***************A Jul 13, 2011 Excel compatible version -- no change in function! *** v04 Build 11 ***************B Jul 13, 2011 CheckBookmarks fix to correct problem in IBJI formP *** v04 Build 10 (fixes the bookmark bug introduced in Build 4) ***************esJ Jun 21, 2011 mBookmarkIDs reloaded correctly when a saved form is editedU RefreshBookmarks() provided to force a reload if bookmarks are changedque^ ApplicationProtect calls RefreshBookmarks (because bookmarks may have changed) whi *** v04 Build 8***************m O May 16, 2011 ApplicationSave sets ApplicationInputShaded True after an errorfo *** v04 Build 5 ***************M 19-Apr-2011 ApplicationLet (fix to fix) supports vbCR in current form fieldect R 19-Apr-2011 ApplicationLet supports vbCR in Word fields when they are in a table *** v04 Build 4 *************** sZ 14-Apr-2011 ApplicationLet works when user flips between protected and unprotected modes_ 11-Apr-2011 zCreateBookmarkIDs created to identify fields with duplicate names or BookmarkIDs- 6-Apr-2011 Fix old bug in ApplicationSave clo *** v04 *************** cB 10-Mar-2011 ApplicationSave resets window state on error (fixed)V 3-Mar-2011 DON"T set ApplicationFullScreen = False on exit (problem when minimized)L 3-Mar-2011 custom properties used by modApplication now passed as globals.228 2-Mar-2011 ApplicationPrint sets shading off in Excel + 2-Mar-2011 DocumentIsNew fixed for Excelnitial7 25-Feb-2011 set ApplicationFullScreen = False on exit.26 23-Feb-2011 If a routing form, minimize while saving7 23-Feb-2011 SelectFromList moved to customAutoOpenEtc pF 9-Feb-2011 ApplicationInputShaded supports Excel for AccessibleAreal unb 3-Feb-2011 ApplicationGet was not returning "" for empty fields due to using field(1).range etcc 1-Feb-2011 ApplicationTarget works if some names are invalid eg Calendar2 refers to "=Log!#REF!"rnedZ 31-Jan-2011 ApplicationInputEnabled (Excel only) only extend to MergeArea if single cell4 20-Jan-2011 ApplicationInputShaded (for Word only)T vT 4-Jan-2011 CheckBookmarks works correctly when rerun, also preserves field values$ 30-Dec-2010 AutoOpenComplete added******]$+0 error when adding duplicate key to a collectionlectSi]$e prI These globals are initialized from properties which are read by AutoOpenN This is to make this module more self contained for use outside the templates] # set from DocWasSaved'] 0] (#9 displays a 'choose printer' dialog from ApplicationPrint] PX If the first field on a Word form runs a macro, this can run unexpectedly when AutoOpenapV unprotects the form or when a form is viewed in SRS viewer (without running AutoOpen)@jS If this boolean is false, these macros eg BlackBoxFill exit without doing anything unloa] X8 spurious change events have been generated during save. n" this allows them to be suppressed]x- see ApplicationSaveInProgess ()ca\ This is used to keep track of multiple calls to ApplicationProtect and ApplicationUnprotectvent.T eg if ApplicationProtect is called when the doc is already protected, it raises thettons A level but does not apply protection (which wouldn't work anyway)]S ApplicationCaptionLet saves the window caption here for use by ApplicationActivateinteri]]N CheckBookmarks will list all the distinct field names which are being changede caU (many fields being fixed may have the same name but each name is only reported once) the](4 This sets or unsets fullscreen (used in Excel only)ved' NB, SRS doesn't do this for Word forms  r (t oxH In OM forms, the named ranges which receive the demographics have to be6 on the 1st sheet and only the 1st sheet gets printed.I It follows that the demographics are on the same sheet as the user form.R This restricts the viewable area of the form to the named range, "AccessibleArea"& in order to hide the OM demographics.  v AccessibleArea$! AccessibleArea$!. (x dAccessibleArea$!. (x kh`oXQ The test for Excel is a bit crude because each sheet can be protected separately2 Usually, worksheets(1) will be the log worksheet. $z !| ' !~ 'pih(Z 15-Apr-2011 better support for switching between protected and unprotected modes in Word.Q This will asign a Value to a range in Excel, to a form field in a protected WordT document or directly into the text of an unprotected Word document. (Inserting intoY the text is preferable because fields cannot be edited easily in unprotected documents.) ***********************R For unprotected documents, you may need to call ApplicationLocationValid first to check that the bookmark exists. ***********************Q If sRangeOrBookmarkName = "", the current selection (or selected field) is used.J In unprotected Word documents, the text is 'typed'at the current location or over the current selection. Note 1 ------R When text is inserted at a bookmark in an unprotected Word document, the bookmarkV is extended to include the new text. A subsequent ApplicationLet to the same bookmarkU will then replace the text. NB, this removed the bookmark which has to be recreated. Note 2 ------J NB, in Word the simple assignment like this will only copy 256 characters@ However, this is the only way to apply the date/time formattingA ActiveDocument.FormFields(sRangeOrBookmarkName).Result = Value 2 (this is the easy bit)   8 t(8d 8  $(8kxp]]2( bkmkInline of text inserted after field]]]  8'f   2+ if protected, asign into the current field . 2# hopefully it will never be Nothing f f   f  f !% ! (d= this works for > 256d f ( 3% this will apply date/time formattingkkd 8d tB@v2+ if unprotected, insert at current locationk`dXP  _' D used if unprotected %r. l!nG lB@pj  %r. l!n  % .d lB@pk) if the field exists, insert text into it  f f   f E prevents vbcr appearing as box characters if the field is in a table f !% ! (dd f ( .$ this method applies date formattingkX ! 'f date will now be formatted  A@ B@H tB@B /( remove the text and the inline bookmarkA@kd( if unprotected, insert the text inline,0 create or recreate the bkmk and clear the filed  B@H |zd tB@ d B@Hk fd tB@v |z fd ~ tB@x t! !rB@; clear the form field (for "", you have to use this method) !% ! (dkd 3 if the ff is not found, try to do an inline insertA@  B@H fd tB@v |z fd ~ tB@x t! !rB@k8A@++ this leaves the protection state unchangedkko8L This will return a Value from a form field in Word or from a range in ExcelP If sRangeOrBookmarkName = "", the current selection (or selected field) is usedX NB, the 256 character limit in ApplicationLet doesn't seem to apply in reading a field.    t%N !8':# selection.value fails if selecting: merged cellsd8  $!8'k]]]   6) if protected, get from the current field . 6# hopefully it will never be Nothing` ApplicationGet = ff.Range.Fields(1).Result.Text ' 3-Feb-2011 incorrect if field is empty (<>"") ! 'F% works ok for >256 chars when readingk d t!d'k d : v06.00 uses IncludeHiddenText to read from Hidden fields.  v06.09 uses WordFormDocument I v06.16 If rngFormField.Font.Hidden = False then ff.Result else use .Text J but this gave an error when called from toolbar code eg zSetSender / v06.19 always uses .Text whether hidden or not  % . !. A for 'empty' fields, .Text returns 5 special spaces instead of "" ! ( !d' 6 AscW fails for empty strings $  G'j6, test for the special char in 'empty' fieldsk@ 'k0 ( i , Word only -- got to the end of the document  z tB@  o 0B Excel will sometimes show a green triangle icon on unlocked cellsK which contain a formula. Eg if a form field is "=phone" but left editable./ This seems to happen in OM and in Office 2007.6 It's hard to reproducebut this seems to fix it -- BP.  ! 9 9 0 added Sep 9, 20109 0 added Sep 9, 2010qop hide the VBA window  ! ! (  ( o3 switch the focus to the current application window& and away from any displayed user form; caller needs to supply the new caption if this has changed3 AppActivate will error if the caption is not found l  !A@ d` !Microsoft Excel O Excel precedes our caption with the Application.Caption -- which we set to " "  -  l A@ 8 ap cap, separator, win capd l A@ kkxopB If the range or bookmark is present, return true, otherwise False5 for Word, return true if the inline version is found]P'&   $!'  %r!' l!n lB@p < check for the inline version (user may have deleted the ff)  _ %r!'k l!nG'&jih& **** seems to work intermittently ***V this SHOULD scroll so that the TLC of the form is displayed at the TLC of the window.X If called before closing the workbook in OM forms, the form will be scrolled to the topE when subsequently displayed in in the Viewer (ie from the chart tab) H B@  4 this seems to work -- but I only tested it once ... ! B@ o Use in Excel only ==================F Use in the Worksheet_SelectionChange event to test whether the Target4 of the current selection is the specified range. Eg9 If ApplicationTarget(Target, "MyRange") then MyRoutine6 If bPrefixMatch = True, only the start is matched. Egh If ApplicationTarget(Target, "Calendar", True) then ShowCalendar ' show for Calendar1, Calendar2 etcI To obtain the suffix value eg "1", "2", call ApplicationTargetSuffix. Eg: If ApplicationTarget("SignHereName", Target, True) then8 zChooseAndInsertSignature ApplicationTargetSuffix end ifG Suffixes can be any strings but numbers are generally the most useful. ]X]x5 reset this to avoid picking up old values by mistake'n  ! J $ J   ! $ F v06.18 ! J  $'n 'z=k=k= dp=  J $$ G'jkH=@=i8=$ NB sPrefix is only supplied in Word$ ===================================V In Excel, call after ApplicationTarget to obtain the suffixed part of the field name. ========J In Word, ApplicationTarget is not used so the prefix must be supplied. Eg =======Z sub InsertSignature () ' entry macro for SignHereName1 etc ...C zChooseAndInsertSignature ApplicationTargetSuffix ("SignHereName")  n ': set up by ApplicationTarget:] . ! Z$ Z ! Z $'k:x:ip:6 Set this as the Entry macro on a dropdown form field.7 The dropdown will show as soon as the field is entered%{down}A@ o9P< this selects a range in Excel or a bookmarked field in Word5 If Word is unprotected, a goto bookmark is performed(9  $!. B@@ $B@H8  % B@Hd8 F D  tB@k888o8E this locks or unlocks a range in Excel or a bookmarked field in Word to prevent or allow user input9 bEnable true to allow input, false to prevent inputI NB When setting the Locked property of a merged area in Excel, the wholeN merged area must be selected but often the name refers to the first cell only7A@ ]0 $. ! !d ! !d9* MergeArea only valid for multicell ranges< if it's a single cell, extend to the MergeArea ' Dec 7,2010 $!P . 9 see note abovek6  ( 5 % ( 55A@o5PH this shades or unshades the areas which are currently enabled for input In Excel:* 1) supported for AccessibleArea only.E 2) can be turned off by setting "InputColorIndex" property to ""I 3) This is a relatively slow method -- not to be used for huge forms`4 ]] B  B X' ( AccessibleArea$ !  ! 9 9 ; set to 15 for color Gray 9 d3 9 kx3qp3kh3  (k@383 ! ( 33o33 use this for any run-time tests of the application '2i2( S This flips the color of a solid fill 'checkbox' from black to white or vice versa.Q In Word, these are form fields in Wingdings font initialized to a white box with^ a black border (put "o" in the Default for an empty box or "n" for a box prefilled as black)._ In Excel these are Text shapes (from the AutoShapes toolbar) with a black or white background.D Assign BlackBoxFill as the entry macro for the form field or shape. v06.14 ======N in Excel you can now fill the box with a checkmark, X or any other character.a create the shape as a textbox, enter the character you want, select the text and set it to white G|j7 don't show form during AutoOpen ]h ! %0 .  5l 7 v06.14 7 it's different for Excel 20105 ! % !F! !J5@9@q..5 ! !F! 5 ! !F( .d. 2 flip the shape color white to black or vice versa5 B@ 7# in case the text box was 'no fill'5 !J!@5 !J(@k-q--]   -X in Wingdings, chr(110) is a solid black square, 111 is a white square with black border# 120 is a square with a cross in it$'F! get the current form field value Go'jF default to empty square ono$0A@F "n" is solid black fillLApplicationLet "", Chr(IIf(Asc(Left(s, 1)) = 111, 120, 111)) ' X version$ basic radio button logic for yes/No !' $YesG  $No' j $NoG  $Yes' j G A@jJ. same as first field was before it was flipped++o*  yKYKYesKyesKTKtKTrueKtrueKT' S*' nx*ip*0  v06.25 rewritten Word forms only9 When you copy a field in word, it will have no bookmark.G Check that all the form fields have bookmarks and, after confirmation,) add bookmarks to any fields which don't.D you can use this diagnostic in the immediate window (ctrl/G in VBA)a for each ff in ActiveDocument.FormFields: print ff.name, ff.range.bookmarkid, ff.result: next ff 'f (]   ]  ]( @ ]X ]x ]  ] ] zAddedBkmk / for CheckBookmarks]0000 / 4 digit suffix'/ find the problem fields and add to FieldsToFix  ! !l$ 6/ v06.27 fix textboxes, checkboxes and dropdowns F v06.18 if the first field has en entry macro, this can cause problems + displaying a saved form from the SRS chart    !(The first form field has an Entry Macro.'  Missing Home Field?A@ 'fz&k&   ' W Feb 22, 2011 This is to fix a weird problem in 'CH Surgical orders' from Concord Ortho !'` l!n'8 the checkbox fields were valid but their names were not lB@p B@B '; the fields are not visible in the form so just delete them lB@p' ' special warningd$M if CheckBookmarks was run before, nSuffix gets set to the last bkmk inserted `  A v04.11 renames dem fields too `  $'A get 4 digit suffix $ A check in case it was edited X  X' k#k#k#kx#kp# : find all the fields with a blank name or a duplicate name  A@   !d  v6.03 Msg is conditional   '  | $ & 'f> v6.03 AutoOpen will exitz"k"kx" fix the errors   !. l!nI v07.06 ignore all errors" to read Result from hidden fields $ 'D I v07.06 only if no error   ' I form the new field name    $'` !$demGdem ` '` jI v04.11 for legacy formsD (for info about dialogs, search VBA help for 'built-in dialog box') B@H $ $" . ` ( B@ ` % . I restore field value  D A@& k@ lB@pI( v07.06 clear before starting next field 6 v6.03 always returns vbOK if running without messages  AutoOpen will terminate.  Save the form, exit and re-open.A@ 'fkPkH  J if fields were deleted  >Some fields with invalid names or bookmarks have been deleted.'  P ( A@kki KSub ListBoxSelect(MyListBox As MSForms.ListBox, ByVal sItemValue As String)# v06.10 now supports comboboxes too: select the specified ListBox or Combobox item -- if found]  * 5 7 ,  9b|xkp qXoP 8 B@H  only supported in Wordo M Cutting and Pasting fields during creation of a Word form , can lead to someJ fields with identical names or missing names. These fields are identified) and added to the FieldsToFix collection.. For a form to run, FieldsToFix must be empty. ]X x ] ] ]   ! !l$ 69 v06.27 must check the same field types as CheckBookmarks !'` `   A@4 d? not sure how -- but the field name may not be a valid bookmark ` %r.2 l!n lB@p  A@4 A v07.06 add fields once onlydH  ` 0 B@A check for ... l!n d A 2 fields with same name lB@p  A@4 ? try to fix the original because this is likely to be corruptedH this can destry names like signhere etc ... but there will be a warning ` $0 .. > v07.05 try to get the original l!n  . A@4 >$ add it (once only) to fields to fixkkkk lB@pA clear unexpected errorskh PoH 8 a function is used for this to ensure that the same set# of fields are checked in each loop  6 8 K : K : KT' niPA v06.18 logic to support multiple worksheets (added for St Cloud)K Intersect seems to give an error if the ranges are on different worksheets  !. < !.   < $> G' jkxphi`B This inserts today's date at the currently selected cell in Excel or form field in Word.: By default, this macro is executed when ctrl/D is pressed m/d/yyyy$A@0+ ("" for currently selected field or range)oH8 In Word, Protect the documentE In Excel, Protect all unhidden worksheets or the selected worksheet._ bAlwaysProtect False or Missing -- restore the state prior to last ApplicationUnprotect? True -- Protect the form unconditionallyW Together with code in ApplicationUnprotect, bAlwaysProtect=False supports nested calls/ to ApplicationProtect and ApplicationUnprotecte Eg, these calls will leave the state unchanged -- whether it was initially protected or unprotected. ApplicationUnprotect do somethingf ApplicationProtect ' because bAlwaysProtect is missing, the original state is restored4 On entry, mnProtectLevel = 0 if uninitialized: = 1 if currently protected< = -1 if currently unprotected` = -3 if currently unprotected (ApplicationUnprotect called twice) etcN If bAlwaysProtect, then reinitialize the protection stack and force a Protect B G'j j j * if uninitialized'j * set to 1 and apply protectiond j  'j *6 if 1 level of unprotection, this will initially be -1 j G|j*0 exit if already protected or doubly unprotectedkh3 this is for OM forms which are initially protected G|j ] * z * ! F H * B@D I NB, was falsek *  J L B@D xop In Word, unprotect the document- In Excel, unprotect all unhidden worksheets.4 Important: see ApplicationProtect for more comments j * if uninitialized'j * set to -1 and remove protectiondH j  'j j G|j*( already unprotected or doubly protectedk  On Error Resume Next ] * z * !  * B@N k * h !~ J  B@N k@ 8 o0  8 Quit application without saving in either Excel or WordV 13-Aug-2010, International Bone and Joint were the first user to notice that Quit was. closing all open Word documents.  (P +( should suppress 'save changes?' message (R +" ... but we seems to need this tooOApplicationFullScreen False ' NB, this gives a problem when minimized B@T A@+' 19-Apr-2010 doesn't quit without this! !V !d/ * IBJ fix 13-Aug-2010 X B@T /. Classic version just did this unconditionallyd/ * X B@B3 * IBJ fix 13-Aug-2010k/ * IBJ fix 13-Aug-2010@ o8 `- Save Excel workbook or current Word documentB If sFileName is supplied, the document is saved with the new name+ Otherwise, it is saved with existing name.@ 20-May-2010 if no extension is present, it is added explicitly.K This is to fix a problem if the sharedid contains a period (otherwise, the/ application adds the extension automatically).: 15-Oct-2010 the previous fix is generalized for posterity]]'h . see ApplicationSaveInProgess ()A@` future proof version $ . \ 'Z  Z $ Z A Apr 6, 2011 <> "sDocExt" Then  Z 'kXkPT This is to suppress spurious loss of digital signature msgs eg at Whitaker Wellness > G (R j  $  B@d I if filename supplied, must be a routing form -- so minimize while saving ( (can't minimize the edit window in SRS) G ` (^ j  B@T k $  B@d G b (^ j  B@T k'h |xph  d (^ H f (^ 0Error when saving document   ' A@'h lB@pA@`(* turn back on after error ' May 16, 2011o3 Print the Excel worksheet or current Word document  @ h %" !G|jkG the problem we get in Word (see below) doesn't seem to happen in ExcelA@` B@j A@` @ > This shows the Print dialog box -- same as from the File menu > so that the user can choose the printer and click OK to print G 10-Jun-1010 This is Wilson's fix to do background printing with dialog l (n p %" B@dh  print to default printer M 19-Apr-2010 without background=false, this fails to print if ApplicationQuit @ is called immediately afterwards (as in 'Save, send and print') J with background=false, it looks as though the application waits until the D document is spooled so there is a slight -- but not major -- delay.r B@j ko00 Return the current path in either Excel or Word" NB, "\" is appended automatically  !t \'X1 MS Word( !t \'X3 MS Word~i~p2 returns the extension eg "doc", "xls", "xlsm" etc] v ' .$ '  G   $'\ jiP~O returns the document filename eg "myfile.doc", "myfile.xls", "myfile.xlsm" etc& see also ApplicationDocumentExtension  !'v } !'v }ix} h} ? this finds the selected formfield in a protected Word documentB if the formfield is included in a larger bookmark eg bkArmPhysio,< Selection.Bookmarks will include that bookmark too but only# one bookmark should be a formfield]h]] lB@p| 2 t!r l!nGzj: invalid bookmark ??? 2 ! % . l!n: this bkmk is the field name .z`{kX{ lB@p 2 i0{({ {E v07.06 get the result/value from a form field depending on the type !l 8 KT !x !8' : KT !z !8' : KT !! ( !!d' nHzi@z8z (z(E v07.06 set the result/value into a form field depending on the type !l 8 KT f !x (8 : KT f !z (8 : KT f ( npyohy`y Py v07.06C add a field to the collection of fields to be fixed but do NOT addG the same field twice because trying a fix a field twice can crash WordR (some of these fields have name="" so this cannot be used to prevent duplication)]@]`    G|j    B@w !'` ` G ` ` p B@j> only add the name oncewoxwpwxA Spurious combobox change events have been generated during save.< Event routines can call this function and exit if a save is in progress. h ' ivB Insert sCaption in the form's titlebar and in the Windows taskbar2 The new caption will be followed by the filename.> Unwanted Office elements such as "Microsoft Word" are removed/ SRS captions start with the username (eg FAST) Notes -----K 1) The filename must be retained somewhere in the caption because SRS uses& it when working with memory forms.L 2) When opening .xls or .doc in Office 2007 the text "[Compatibility Mode]"J is appended to the window caption automatically and cannot be removed. *****************: Warning: if changed, this will need extensive restesting.? You need to open two forms concurrently (using 2 SRS sessions)7 Do this on Office 2003 and 2007 and for Excel and WordD and for memory and routing forms both as new forms and edited forms *****************]]0P0 save the caption for use in ApplicationActivate | 'l $ find the window with our name on it v '~ ~ .$  G ~ ~ .$  $'~ j_ v06.26 ! H this logic will ignore the "[Compatibility Mode]" string in Office 2007 !@ ~ $ ~ G . j 6 if window locatedO prefix the filename with our caption (the "-" matches one inserted by Windows) |  -  !@ (@D clear "Microsoft Word" or "Microsoft Excel" (NB, "" is not allowed) (@kHpo@ppR this is the only warning if significant names like signhere etc are being 'fixed']$Some form fields have invalid names.' p !d  %The following fields will be renamed: ' ` p   ` ' ` ko   'Click Yes to fix these field bookmarks.' inn<Attribute VB_Name = "modApplication" Op ExPit@Compare Text ' treat upper case and lows equal ie "a"pAc' ' When using inocel, clude the symbol defini$Form=1A6'condKgcil Hsec5ofNPhroj Wt0ies."#This ule &tains a` numbdroutines which will work\eiAr#ExN or Wordx. U Spreferenc mo .Qui`t etcFEs houldImpiMleanly?t ty moA temp}Gb9sen'8 so@can be]ed f*quick@pgrad8to @legacymsA3AYoolDK(*** v07.806 AMar 15, 2013reports fieldaEPhave!fPixed 4 zF ToFixAdd,becau7T s twiV7C` 3crashCFpcorr@S sNxtboxes, dropdowcheckBP6IL5L3>$BOTHGM 2 Mz >bn?likA*@41f + A %BXAhatibPle 3 8 C%Bookmarks pr`ocessK4yp``lsistSlyi 6.26J'C" gCapa|Let@% IbZ'hi_1ensbkn@:`htbe`c?v3,CuIntV re0writAPavoiW!V%#IDlR (duƒa"rdacleft =0 aft`amA aA l fromD@ialog) R@efresh smovp#U!2=Aug 3G2(BaddHAr) Blac kBoxFhas s@0Y?$No>191 Jupl 17"K" hG=VⰂtbco?g zSetSende)418 6 LTarg@@ult ip Iasheets 9,Ewar`ifirsAV!6a$ ary macro (Homis?87 May 10%%hTlbt]XGP(inqwq$3don}9`|ńa0`0(19q12-Apr-`f!^'`L~m p){0t0!"alЉSJJmb)S!B(0{) --e1wdel#0'%2-FebL T`6SelQnoPkI0o6@ 20-Jan5Y/T6 0ws2I!NDocup"ac^#HIDDENSH0 0c2-Dec132'" JQ1dMsg, xUbSev`qWp513GPzb 0uqU"M, blvd zedBkMk00|01qq 87retu?strp 0m`qV|ndl Q<sa specific #D -a   5. )11-NovI dopCun0 t-&wa`d Hiu_n]m!5'![-Octon_zp@sP:nvbLf 0A3-SeponScreentn Anduced, aaMapbD0vKeyGp9f-pnon11lsf  8ZdyXReaWpe, Cqeq6byC.Comm ub5!`,Con1+'4,1_MP1qv29bc8A0rec  byA hBui1O$1w!m 0 r0SnHo c0dgefLun11"' "w,FPF mqIBJI2-10 (QA b`introg%14) q n, 2Cm5HID)loA7@> " Psӛ () vd to force a reload if bookmarks are chang@ed ' ApplicationProtect calls RefreshB (becausemay hav_)`*** v04 Buipld 8 !M616, 201(1 SKsets InputShaded True after an erHrors5 :1@9-Apr-9Let (fix ix) supporAvbCR in currentm fiel'!Words when` theỳ/a@ tablec4c4cwo|jr flips betwepxQand un modes11zCreateAIDs cBdJidDify5@ith due names oLr A 6H F]o@bugAZ @rBQt0-MaPtBwin@dow st2 &oD{edB 3DON"T ɟFullS>@P`= Fal@x.iP@nmtmi nimizcu stom perti@Fgd bLy ^H= n+passis gl,obM2;Pribfs`ding off)ExcelNDocumA 7IsNew`7x 25-FG 8s[g t+l`Q_AdAs[lepv'bQR `WasQVpNoAlM{VhooseJ`{mdisplayqp 'c`0Mer' dogH9r-ColorIndex StPQg HvNr#$PKa Cyorm &macro,c```rexpI`@ʁsReaVakvQPonc*eFѿNsT>o aG`Su bߣr`3(ByVzaMh.J b`>punfЧsӧ(-PD{äNB, 1F%"doLym_n #PFFAPin@.DZ]jbA C`EIf \s1URes@Z@ ? In OMbTsOd B!rrecei 1demogranp03J>b1 'p$1``she_A?gsDhd`MIMatpe%$a`%KQbQaL!Tq*T, "A[ccessibleArea"  ' in order to hide the OM demographics. #If ExcelForm Then 6On Error Resume Nextjpbtrict8Range("A ).Parent.ScroDll = +AddrqElse -^"End8 If!z Sub Function A@pplicaIsProtected() As @Boolea'| test f is a bit crubecause each shee an be p- separatelyP' Usually@, works(1) will AvlogGuN+7aW .=Cotnt@lsAL`(dDoc@@z@UType <@> wdNoG)gbEaA fcLet(ByVal$ sOrckm`arkNa@gS!ng, ue@R' 15-Apr-2011MttsupporCmswitchingween%faunjmoxdesA؁:[Th|dasign@a rA ,m fiheldAa 0 ' dP dirly |t of H&. (Insert!into  prefeoq*4id&rmchHeckatbooA exist' WRI0= ""`5cur@tl0( }se"&)a~`|bd!B In 2s' 7@0'tbd';E l` ovaQPN` 16-!W@ xtaiA `$ ?9Hc* @ Oend@ @QinclAJnew . A subsequ w;su g n replac$. NBu@rv!`! wh hasa ߀@eV#2#A B3imple agnm8likaBon_copy 256 chr' Howe@4 ! wZ$aʊyTd`/ti`!atas! AY`veFs(S).ltp[F0S|!_?' (tKT easyk<11V1oppS11. [{eo !) J z#WDiSfxvssInlineaQSa v' bkmkTS92fb=ӀsFFF1sߓVjS=k?? yf@fGg,/qkAb/b*HSff}CsQ e@I Is uѥr' hopefu 6n4gTiLen(#) > 90 OrpWpd, vbCrLfGff.".T81%7.TP| '3B6_ ;0) Ϭ* Xv!@#@ stunchbI%e# !Supb F iG et(By ~ s r0OrName As Strpp) 'q+zreturn a Âfromр$:in  ^rqP.Ecel$+8,`currF su(pA)5Kp@'NB3256 #] limit hLetA8esn'tem9yqkd!*a3.# Ex@ Q k qИ3CellJ, KSP.vRfails z}$o2'0rg ls_?N~ %(?mxe). #Dim PSP)"[wrng+b+sTemp, 1x]5"_>g`%b0_A@,"+SfC/Ua ' hop efullP,t öeverdo?~""?zQJAO' works ok >>s wa;OES-?9m+' @v06.00s IncludeHiddenqG #ssGy 9pO6.16$)4.FoT= FaWn0&t e1} ,bubgљan0 errZcal toolbcode eg z/Ser  9 always3#0P5r h2g&5]rmJJG0'B)'/ , ts 5 specialp acptead8 of.A"ReU0{e`M`.?$=% True sTemp = rngFormField.TeDxt If <> "" Then ' AscW fails for ty strings UW6Y0(^)8X194`q=p' testOthe special char in 'd' f dEnd If xApplicationGet:5_NP $ # B Func+ Sub 4otBo() ' Word only -- got to oeYofdocumDen #Epxcel ElsSele=.3Key Unit:=wdStory+AB*'(HideErrorChecklI+ will sometimes show a0 gre@xangle icon6 unlock(ed -le' @which t anaAumula. Eg if@mr is "=phone" but left editablLe.RSTh seemsARhapp%OM a>Affice 2007 It's d rep@roducetfix itj" ,Z= s-on- '~1 1^mS FllToTLCY_*<worktermitt.`,YSHOULD\ sbpahe  B`=?wq<@"bd beP\losoa 8 pQs,s`bN otopTPsubsequc' View@j(iem1pabt"TeD77"WeInDtoQ 0,!1, 1QF0^IЫA0Po ..Dow.|N<@1 Z '+Tarpget(cV,f YX, bHPre0MaA 3A7t ' a@.bUbAfs nF6S@= Curr$`jbfficጒ em!DmS@AutoDropDown(@.I' AthMa!he EH?on a ddAm BY>!'widshow @ soC _@ & pS Keys "%{! }g  "SelA%AlacCbmh' 2psb@v Zrqd 9< ,a bookmark@: AB a9 unproted,go0?#UperP2me QOn ErrGoTo errlab/ $ WP .P!nt.A@`vat[o! F^ %~IQ$ q AaDocum./s(s%1dP>.What:=wdB,:=+#W,:!Ab InputEnabled( a,cbÑ lean(0/ locks"una###1Zfvp&ll0@r0( CNP' ]t"2i, faIrlo6WNtaP L/ Qh;yha Tme0da61,Rewhol%'jvf"5Aopn1m Q firipl Ax S/1!1*U6P-2{ZrQ"1Mr^2r.Co lumnspunt1 P r.8RowIRq' MAreaR 1qmulti F'` it'EHsle q,> PAPD' Dec 7,2010  TO.gq6aoe bovt6ar.!8= N13 #=AA.%6|= vi=qHPVj?_B?Shad6?bo=b=st=1PU@jwhiɰ c|0eCEb6' [J

 kŷen PiInputColorIndex = CInt( X) Application.ScreenUpd ngFalseFor Each Cell In Range("AccessibleAreaN"cIf/.@LockedU Th(Wit^.erior~' .Pattern0xlSpolid RbpShadPL>. ' set to 15 fc Gray=^.xlAutomcEgNont End IfOA kKNext TruH' 1 #C=WordmDocu ment.Fi elds.s= DvC 9 errlab: " SubFunc H*IsExcel() As Boolea' use this{any run-tim@ests ofe a#@B-ďF#B% @ BlackBoxFinl! ;' !l8ipsQ@a sd f 'checkbox' from b Xwhite Xvice verxsa.@1, !are!m 1 in WinLgd`!$nt itializmea  w ab .B@mark, X! !Yo`r c`harac =`aB!a t@& ,  6F want,qlec`8! a ri`oACdNot !/OpenCompleA Ex_I ' don't shaorm durP pcDimpSea@G>% S Dshg= A@veSheet!D(y.CallerDW`]I )  .Typems>oQ{>' > i VBA7/v' it's differ(S$201.0{Q .1 Fr0ame2.C#s(1, 1)@ZZPGre2oaA.RGBbXp5&HFqQ!b9g S ! /|6Z7 { pW ZG !0G sZD@RY@wX .q_.~n@Rk1j0zb@0H'npG'l"kCR1l{W ~R8CB}N%Opposi9t=sSOn ErrGoTo^ ~Ri,@Nr(110) rq1Ssqu@m+11Sc_bjC`' 120aSossAlits'HBGet("<")?' g1he cur:5cvalEE""#@uOUdw0)#w h L "", IIf(, py@o '1aÉs{' Chr(QAsc(Left(saF)P11G20)#'ma # basic radio button l og Qyes/Nos( C;1b.A*sRigh, 3q p"Yes5,= S XLen(g) -q& "No"P220`! ǶV <> u%<7@< zs that athe1#ss and, afconfirmai,Dadd.s toy#which don't<Y@an use?is diagno0stic^Dim$me teandow (ctrl/GVBA): ea.ff AveDocu@ment.FFs: print ff.name,range.ni6@result: nexA cqlvbOK#If Exc$el T@b #EDimAwF"A1Lrng[R&Gs@, bSeeWarning  R/, sN8dl DialogCFToFixNew Col²0sSuffStQg, .n nCou@[A@st NM_PREFIXS"zAddedBkmk"A'A /SUF@_FMTA0' 4@gsB1COn E rror Mme| N@>#A#i}Qproble:Jaa a^ ])ɠ9 ERIn"w<_R Jz ToBeOed(RTypALe"7lx tboxes, c!b!dropgns 'a 18 iffq@ir4Chas @iry @macro,vcywcaw$# d@isplayUa s fro"m SRS`ar !e A /I0= 0 a!EntryM <> ""oaAgC'`$@@!`B b .""AoBox pvbIn@Ğ "MissHoG6?P1Can Ex@Ue!IfKc#+ 1G' Feb 22, 2011 '@Y|a weirdo]@'CH Surgicqersb8 qc Ortho b`/5e <@o.Numb 808]'"C%XC5s`r@e valiubtAir !DnolHA A CiDele`*/n p vima\= q ' specpZ ws^KeF['q :]Ja v04.&re3dwTto# ug= RighBtLen(_))' ^x s'eric(m4)' 'Tca9`te0Cq>&si= :OEAs[]r fHcr!rwithbl(ank"; wa duplE8!!NzB+rT1Cs s"S.Æ'A m6.03 M\ `NdiQal1g7qd#z" {0pc(ucYesNo)PvbNo&,;= vbsb>u AutoOp zedoe=@eA܏>S0H=%.oaVd1 07.06 igno^+  Sbo@ad !lAqhinkeos= c$ueGet`L%| 1^ OgE 1on? S7; 5& at(D, [O Lef.5, 3!3"b;P4#&fm legac` < _'6 (for info about dialogs, search VBA help 'built-in bo@x') ff.Select 4Selg =D D(wd FormFieldOptionsWdlg.Name=s^!Exepcuteff1'Word@DocumentR.Gs(5)q' restore fY valuՐ8zhVL|5Resul OEnd If rr.Clӌ"' v07.06$ cBbewe starting` next6U NB( 6.03 always@Jturns vbOK if runnwithmessagesIf bMsg ThenG5@Box "AutoOpen will terminate." &!CrLf"Save thi, exit a!Ure-o." CheckBookmarksvbCancel WeI A1SevereWarB<3bg 'Ls w d@ted$WKsQ= "So@]id Tna/ bha&be@+ $D0a ,`-ExclamaAv +OKOnly"k$# !Func !Sub List=C(My As Control, Byk sIteml1StrK 'MS|s.D  f6.10 now supports combo es too;7' AOspheci0dea.C i --=oun@;'Dim iCWa7 %   i V0 To C t -| 1CaE(|i)&ombIndexdeEAj`, ;b!a  @ Appli"cKScrRRefh(;#@O el7#Els . ' only7eda2 RPriv@ azB s(BsToFixRla>ׂ`' Cutb!PLasbqdu!U hof am , can ed K sx#''Cyd %lymissA{.#s$s aiBGR addto"+ coe .;eq'a p], must be emptyps/ff, ff23By!!NewB% wbkmk%^~SCSOn Err Ra{`T,Ea0 Inb mS1!ToBe"%ed(@Type),Q5SG27 =cAjCE[ tpQ*lQ>=  ""? S0Add aW;1' Wt0;+hW=Rb}. mayb'anum!=6@P!.Number <> WΊ 1`!7!;uAoPbN_;Qi6.qffЬB73;' *a..?m[= KEY_ALREADY_EXISTS0' 2 s/q q_v? ' htrya\fb+o(rig@lQcauYthis plikejT,corrup;bd@PQs q signhaetc  t34{2w %s20I є(5g  4w?]:2~!10(0)O %1a__6-0:lear unexpected errors  4End If<$Next Ff,v #Z  Sub Private Function zFieldToBeChecked(ByVal nype As Integer) BoonM' a fI is usfor th to @ensureate samet ' ofD f{s ac> in eac@h loop1#If ExcelForm The<#ElsetSel Cas>eZwdj$vBox,  DropDow n TInpuY$ = TruK@SEc4GgRanHges_rs9(TargetaB, MyFhA#' v06.18!Ugic esupport multiple worksheet@s (addqSt Cloud)-'# seemsAgive aoA if{rB/wdifferentHA;x!-On EBGoTrrlaA3B.PIsBEC  Not ( RO)  hing) zV^ xt }&:3EKv *DHA(UAt`tribuq.VB_Descrips= "Inse@5d" SProc@aInvoke_!@"d\n145e7TAsib 7daPy's dtcur4ly;Ak`A}ol!sq |@}mxWord.By defa L, Bmacro exec d w`z ctrl/Dpres7Appl(ica#L`"", ayat(Now, "m/d/y") ' p("" a T1j8 a5 ,tpO2äbAlwaysgpģ@/Fa '% f #, %the documa@a,allhirnIt sb3w/! &,@Miss\ -- -to"t@L pri `o lasG.Unproa % k bD`ond6i!7`y To`her with codeH.iF, =cĘs nesc 'o7d EgaTese /@-# hd@W r i@as ("%k@3`)u'ec'&Tdo sometngR%Q' beca xA5m  igin ,s 8T dWP)ry, mntLevel0-0^uninizeo`1T`8$*= -Hz{3, (ct2 twi? 9\`ex0 alread  :doub`/J%|DBssdOMaPwhi 8- %I5b QDim w"dCSp EcInfc.Visib1a1uEU@ҒfaceOnly:=], DrawcObjpfsSvNB`@PfQoUbBSWq|Dq.UwdAllow!s, n ksetl|eXd,v9yy6" ^yts0xm!ant:2OPԗt > mwcomqkmWR#8<5T <aremo?nd<`<- 2 9 EQ818H78Da86Res !%0A"Oa3A΃ S 33fc833&/0Ƿ #Else If WordFormDocument.ProtectionType = wdAll@owOnlyFields ThenUnpFEnd If' Sub Applica}Quit() '   a without saving in eer Excel or=13-Aug-2010, Intern1al Bone aGJoint were the first us(to noHtic atEwasK}closEal?penI@ ds.q#/PAvekbook.SavedTru"e1' szld suppress 'e changes?' rm ag.DisplayA lertsFa' ... b@Swe see(ms E aA a' r 6, 1""G`=j0 $E:A}'p P)gspu`'`!Es  digit0usigumsgs Heg `sWhktWellnPjrDib?k1ksS@On Err (GoTo errlaA v0e) oyuaӑ5' @:fK1A+2z#Gm^bp r0AC`3m -- sopq ' (caqmsJP@indowSRSRqp(XIsNpMWStatxlMyoeAs% #5O^O\ᑵ Ґ8eqQ${wd%!tF?;MMHExetq#,:-ab1-sqˏNal4 ,oe^AP9Ĺ%QvbCr|Lf H6JS 0cBoxcooa.ClearH `e@`n back on aflCD`E ' } 1VCU1z i`Pr%jsr ' R< sheet$sA5?!sQ 2ChooseRPX@$) Dialogs(xlSetup).Sh@G= R,"If# ASub FuncI]Path() As St@' ' Return0 curr6p@ in eer Excel @0* A NB, "\"B< ppcnautomqy #If8en-CH% = A,vRekb@h.B& ' MS #ǯR2OsCLK ANfExtens@QC' rB)sb)eE eg "F"&xlsm" e tc Dim s, i sa"RENamĀiIn`9Rev("."``.i >r enI@@Midi + 1"Y"!ffn@"my.#d$E%% Vv`)Q (I,#R/P;nRixom.1CuA^Fpield0K'#RfinthBe'lect vf-f!}aotC(F/`hclud a largxmarka=bkArmPhyg, Sei.B ~!s ll >adɀonl.' one sld b= C mbk\mkA%'f@s (! tb,駑Err.Clea1$sOn SResb N@S@ Each bInks'TNumb<&>Exmf!5'0vali`u??J? t =7V0.s(} .,Ba =H]҂b *r%(1BSet /:fTp5re14mArQn}:zValuepGet(&C' v07.06, gr#lt/ue fro8m a-> dewo|typa5 Casf.T wd CheckBoxQ "z..B DropDowq?UTe@xtInpuLff.Range.#`rieMo de.InFHi0ddenTruuuw!####Sub L?##]tSesK#po#nd# #7=# "ps?#0=?#0+"?  QE7"O.Z=  A/A/A $A vate sToFixAdd(b8AfCoB,qY` BXC ' addQT!Dcf ofsCtPAix{A`NOTsq!twicvecause try?#HPQH#can crash(someaG`s h ^="" Ԑ`pӰ|dev "" Then ma7#e%,,' @only athe n\oncez: (End# IfFunction Applica SaveInProgress() As Bo`olean:Spurious combobox change events h" becgenerated dng s .O' E ro utine*an call thPis fRa`e!if a# is!in pY. lmb{A:?IHOCapQLet(By`Val sDRString)RInsert1rform's titlebar >Windowask?a newOB! wiQbe follow@aby@U1ileAEb UnwaniOffDicrlemrsuch as "Microsoft Word" are removed !SRS s sta8wi4thu;(eg FASTCBE0NoteFu-)E1)7f. must!tad somewh6e%Jcb ca & n workfL%*mry&rms%$2) Wtopen.xls @}.doc C'2007t"[Compkbility M`ode]"E s( ap d@4to w=) aut D&3]'^ acel!O5#g$bo@9 Waj@,&edi\E %tDim 0sDocG!w @q, wTemp# ab:R REHAv`msc Ň=' fD FBmour itC% u!}g InRev(%, ".") h> 0!qnf" LeftU- x' v06.26 F@hEa@):Ij.#!ve '  Glogicigno m ltA .AT, Lenv ))frzSet wPR`MpIs h11oq?'9l^oyEV1'oexfixFQ&(-" Cchuone0ag;`;T9w'& " -0& ՟ c@rc dEx=" (NB%"} AMjH (+ " TTq S獑SQqS mL`>invalid.&Count?V;sSQb& vbCrLf *a f6]d:"#F=@= 5<=OgA-"Cq`k Y`2Px5s bookmparks! modImageInsertRclsBuildCalendar"@B EclsConfigureForm"clsFaceSheetData"AG]q=     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\^_`abcdefghijklmnopqrstuvwxyz{N;;~yxME (< < <, < p( %l % CCi< Wori se aI ** v05 *I 011 com+& P ((i ent @( Docu * 04 *%  %  %+ x( i<n Ex@6 s th@ J 2 $ PPi<BP i8 ge mi: n-20i< erge@( (not@ \ 1`> n Ex " ]]i<d 'SiJ  L es i % * 8? 1%@( Exce`: de p`< v-20`> atin@ ? 2+ i^ ateT@` Lremo 8x0@px0@Xx0@x0@x0@@00 8TOV%f : "P `x  & "  DH  \ \ Pp H X b` f F0 4x F j h hp $@   " ( B8  P   Z $`      X @ ^H  \   8 @X    ^ B@ :    V PX N  ^ ` (h  X    N Rh  N P :p   .   0 B 8 R@ (   @   8 @ H P &X       B  & D ` Th 4   . Z@  . ( 8 "@ @PX R` H  F PX` h p     Z ,8 hx      ,   V*p       6 "@hp "     :  0 8 @P X*`    "  b   "( P @&X  N   (  (Hpx  0   > ,(X`  h V D  L( x  H   8 0  4@ Tx <  4   (X  (, 6 "02X "   ( 0  8 X `  h .    B  H (! H! `! p!xp4 **** detailed comments in SignatureInsert *********c capt *** v06.09 *************** becauY 20-Jan-2012 Word does WordFormDocument.Activate in case another doc was selected *** v05 *************** Sep 13, 2011 comments reduced *** v04,14 ***************> Jul 29, 2011 BP ThisDocument replaced by WordFormDocument *** v04 ***************V 22-Feb-2011 BP Sig Jpgs now maintain the original aspect ratio in Word and ExcelV Explicit sizing ignored in Excel which always uses the range sizeJ 24-Jan-2011 BP In Excel, sigs now maintain the original aspect ratioA 21-Jan-2011 BP Fix for .MergeArea if range more than 1 cellQ 18-Jan-2011 BP In Excel, uses .MergeArea to obtain size (not just tlc cell)\ 14-Jan-2011 BP In Excel, size is 2 pixels less than range so cell borders are retained_ In Excel, Placement = xlMoveAndSize (so image moves if cells are inserted)? 14-Jan-2011 BP Word and Excel -- shpSignature made publicb. 2-Nov-2010 BP ScreenUpdating turned offst? 29-Oct-2010 BP renamed to modImageInsert and subs renamedd DateTimeStamp, DateStamp removed, GetSignatureFilename retained for conveniencekba GetSignatureFilename -- a simple function to form a filename from an SRS ID This is now exposed as publicr1 ] ] 0(@< Insert the image (typically a signature) into the document.J The place to insert is defined by a bookmark in Word or a Range in Excel. ********************T To insert the image at the current insertion point in an unprotected Word document,l set sRangeOrBookmarkName="".dl ********************kb Parameters^d ==========ibmQ sFilePath eg "\\csddemo\SRSServer\WWW\SRSFreedom\DigSigs\DigSig_80.JPG"W sRangeName the name associated with the target range or bookmark eg "SignHere"V Height, Width optional (in Word only, can be used to specify the size the image) Image Size in Excel ===================: Size of the image is always set to the size of the range. Image Size in Word ===================W vHeight, vWidth missing Height=40, Width=180 (standard signature size for Word)< vHeight, vWidth supplied, >0 size set from the parameters4 vHeight < 0, image is not resized Protection ==========O As of 23-Sep-2010, calling ApplicationUnprotect followed by ApplicationProtectJ will preserve the initial protection state so it is safe to unprotect theG document when inserting the signature -- and this is done as standard.W The inserted shape is named as "shp" followed by sRangeOrBookmarkName eg "shpSignHere"" Any pre-existing shape is deletedQ If required, the caller can look for the Shape to check whether the document has already been signed.G This traps spurious combobox change events which occur if the comboboxK is still selected during save (so no longer needed in customListsSignature  G|jG If the sig file does not exist, warn the user and remove the signatureJ this doesn't test "http://srsappsvr..." paths which are assumed to be OK. <$ G'<j= ("" will remove the sig) (  <  A@" E don't pass size to Exceld <    A@$ k (oK returns true if a signature exists at the specified location eg "SignHere"! (based on the name of the shape)]pshp  '( '& ]]  $!. .* ( * %0 . '& ] probably not needed in Word  !2  !4 ( '& zHk@  ( i returns true if the file exists> or if sFilePath="" (indicating that the sig is to be deleted)N Dir fails for URL paths like http://srsappsvr/srsfreedom/digsigs/DigSig_1.jpg- so these are assumed to be OK (returns true)]H`)$ Dir can error eg for unkown servers < <http://srsappsvr/ 7 have to assume these are OK' dP ' <$~G' jk Gzj Signature file not found  <' A@i  x  L This is more complicated than Excel because InlineShape doesn't have a NameA property -- so we identify the one we want using AlternativeText? Also, the size has to be explict because we can't use a range.]8]P]h B@@ 3 v06.09 Have to unprotect in Word (A@shp 8 '( T if document has already been signed (or image already exists), remove the old image& (unless added at the insertion point) 8   !2  !4 (   B@B yH k@  k( & if sFilePath="" just delete the image <O insert the new image -- either at a bookmark or at the current insertion point 8 G F D 8  tB@j < t!2 %H .  if image is being resized :   55'> > < :  ; pic is thinner than the rangeuse full width of the range < 9 < > 9dxuse full height of the range : > 9 : 9k0q(k 4 save the name so that we can delete it if re-signed (  (4 kA@ (|Error inserting image  <' A@XoP[ Insert the image (typically a signature) into the range corresponding to the supplied name See comments in ImageInsert 8 only compiled in Excel]] ]@]Xp]]G Dim shpSignature As Shape ' this is now Public J $.L L !. .* A@9 Sep 13, 2010 moved" remove any pre-existing signatureshp J '( ( * %0 B@B * if sFilePath="" just delete the signature <7 create the image and rename it based on the range name% sizing depends on the mnSizingMethod L  set size from the range O NB, there is no easy way to load an image in Excel without specifying the size = if the range is the tlc of a merged area, use the whole area7N !P !'< <, if top cell is named, extend to merged area7N !P !': 5 < G5'< j<* if range is unmerged, use the named range5 : G5': j <  '< ,$ this is to leave any border in view :  ': . import the image and set to the required size N NB, ApplicationUnprotect, ApplicationProtect calls preserve the initial state < R T 5 5 < : * !0 %H .   ( 9 X 9V 8% if the range is moved, the pic moves" restore the original aspect ratio! set the pic to its original size T C@Z 5 true for original size T C@\ 55'> > < :  ; pic is thinner than the rangeuse full width of the range < 5 R C@\ ; false for current size < 5 >  R C@Z dHuse full height of the range : 5 R C@Z  : > 5 R C@\ kqqkA@6 Sep 13, 2010 moved|A@6 Sep 13, 2010 movedError inserting signature  <' A@0o(B form the filename of a the digital signature from the user SRS ID] DigSig_??.jpg ` ?? ^ $'iAttribute VB_Name = "modImageInsert" Option Exp licit@Compare Tex( ' * detailed comments in SignaturRZ* 8 v0p6.09' 20-Jan- 2012 Word does  FormDocuo.Activawcase another.c was se@lectedy5;Sep 13,?11 freduc 4,14@Jul 29BBP\ThisT repla% bybM-22-FI@31NcSub h(ByVs)Path  ng, DRaOrBookmadC!St1L)$ < 0CT hp{reA VP46J23-RkQ lTHg A! canU90llow\PUwill pP 1niti'4>?`| ApafeqJv@qNenDw|t`rNonT}#QfeQ7d "" ?G@A7 Any-exist&s1l rJAprequi ,o_ྱ9l> rrncheckp$hasal0dy b{(g@ ztrappuriousbobox chreoc]*p u d0savno lopr need%omL sx'S@In'g&sƒit |1' a @#bPfk14, rc0rr^ T& n'0nest "http://srsappsvr..." ps0P]mRVW OK Not z5Is id(]Vh)#Wi " ' (""bp I .S[= FaBIs@3Q1zW/# ze 'qp#Q_" ?SVy<angeOrBookmarkName, vHeight@Width End If,Application.ScreenUpdng = 0TrueXtSub Funcl ImageExists(By@Val sR As Strin g) leanL' retu rns ts if a sign"ae e\ at the specified lo eg "SHere"X@' (basonn of `hape)l?Dim sS "shp" &m $Fals #If ExcelFor`m The|eBQ76' probably not need{in @Qd@[ Each 4IbDocum?.sA@mI@.AlteriveText@x?Cu Ft wGIN f NWD{   e zFile@PathIsti~du!P_tGtqfg@ s#' @Qws ="" (in&dthxig i o be deletedJ'e Dir fa ils f URL ps like http://srsapp(svr!f@do m/digs/Dig`Y_1.j$pg soseB ^ ass @d tOK ()"W, sMs #UE> ' canau`aunkown serverDP SPF4= )_ r( In6(f-, """) > 0bhave!OK !-E]'{xCP !) <>enR+ dZ! N "h,c?A4` c"Vfou vbCrLf,C!;Box<k Sub z|In 7t@9k, $n, D;e'#rbl@r~w+gqg;X#'!@8 more comT:eAk:cau3XR doesn'dt %a wsrYperty -- A6we id@Vify& one 0want us@ |U  AlsDo,siz`?aECex t @p50 a rQ.d?b;e 2F<PicAtR1So>w! eA0vate_' @v06.09 '$ H4:unntect Zm?87xU Sk`E@fk)'QdrPs already]eK@#(Mi'Û),moñG old R' (unlesm d1|bi25 pointXP3D1R1ȗP4ϡ5u{.D"n7 ELorIrawjustvR41eŚp"new)!>eira bDQdcur0,!RA" VS@b.W:X=wd%,G:|=s9H.Add?j,BS(beLreJ4u[xWꪏa3J= .C`/ .HEIGH>TA |> rue vpicBhinner _pqV'Xfull wiE2T =doQ} k oD7 hbO G y* ^a so ?A"W  End I, a Rang ) 7' 'W(typllyX a Ȃ)kte r correspondA:suAYed{DSe|omments 3J a#If 8:m` Then ' on@-comp=YdCCDim rngTar8getDBGwkDshWoree Hei gC SBle, rWidth[BPicAspRQ' W VB'qiWs now Pub7@CCS<?= >(sAр A=J.ParnHjUnpjv' Sep 13, 2010 mlov~C ' any p`exisifQOn mResu@N`#4@x"`!p%.s(').Db#'!l="" justWr<> O X ! ' apa-Abas`jontogg izMp0endsabmnSMethof'GoTo c WiWD' H  Ksize 0fromNB,r@aT easy way Pload>  i; woutb fify-z$!(a"4A$`@tlc of me ~ rea, uscwhole: [a+z= .Cells(1@, 1).M AM .} #odp l 5d, T3aL ĉv HEIGHTO$>E§f&uncg$   W #v - 27GMA"eᄡAbordev view r@+!Pmport;,79sp.`b&equirp9q/.Qct, XtP%NpĒinitiq}tpAY0Mv0NaL.Addpf(H, msoFalsia, .Left + ,.T*C@l#a1A .!e U?.Place1xlM`And@KeUsB*R‡05cD rdsesto Horiginary`.tioO#O! !iP/!a ale)PU.@ f< \E3/ .9OPE|E/ U6?O!  thinn0:th_RF1'!Yfull_ѓ0[ TC .Xfq/cu0ndj_oqC$V( * K)E6_Qhӣa9  oc  -]QBs1R]ۏL֡?W/FuncJn Get/`{uU0eIDz V)7FCfp#8dQtQ e from the user SRS ID  (Const DIGS_TPLT = "DigSig_?? .jpg" ^Get2natureFilenamebReplace( , "??", sUzID)FEnd Function $(.v~o'xME PSS S<<"<0<<N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}(p" P8 %XP%xp%, 20,(x??i*%i ``,ta .Xoami%`2 R!!)T %)V Off%)X(0te i%iZPi*year@ sed %b "0"$0pb&x0 *px0Xx0x0x0x0 8TOVo J "X R J ,(X `hpNxB  . H H JP 6*    (0 $X     "  L&@ h  0p (  "@`px           " 2 P X T`  T 2 P  $X    <, H8`    xC this will build a calendar for use in frmCalendar frmModifyOptionsd *** v06.10 ***************dK Feb 2, 2012 created with dropdown fixes and setting selected day to RedLC this locks out BuildButtons from change events which are generated & while the dropdwons are being created]]]]]0#? start of the names of the buttons for selecting the day eg "D"' configure the buttons for the calendarA if a date is supplied, indicate it in red and select that buttonC return the month and year so that it can be used as a form caption]](]@*' a button used to select a day eg "D30"]`* date the button represents  * ! position the dropdowns correctly': prevent recursive calls  *$6A@4 $ *mmmm$A@4'k8 $!8/1/ !8X',E the calendar form uses this to show the current month in the caption $!8  !8'(  *H do for each day button & X 7:..d  ,$>  ,$<'2 2d$ .(@ 2m/d/yy$ .(B 2mmmm$ $!8 .(DM &H80000018 .!F(Hd .(D .!F(Hk` L .(J 2 * N .(J .B@Pkqkix+ populate the dropdowns for a calendar formN sPrefix is the start of the names of the buttons for selecting the day eg "D"M NB, CB_Yr.parent could be a frame (not the form) so pass the form explicitly, (it's not actually used until BuildButtons)]p save for use by BuildButtons T. V.  X.$ Z'&  *$6 *$`  $^mmmm$ XB@\ X(b( select the current month 2yyyy   *$<yyyy$ VB@\` V(b'o@8Attribute VB_Name = "clsBuildCalendar"  Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |GlobalSpacAIFalse dCreatablPredeclaIdCExposeTemplateDerivCustomiz EOption 0licit ' this will Bb a c for uin0 frmMoPdify's#*** v06.10  2Feb 2, 2012 c^with dropdow2ixes and settinglectday to RedZlocks out B~Bu ttons'om change event7hich ] gen erO' whijthe wA be) D@im mbD)sy$As Booplean$ HForm UserCB_YrComboBoxMB sfix S@DAO' start of@qe n@ŸCCpseAQ4:Reg "DaFunc„ P(ual ByV@DKToSet!)#A>#' configureO"Ŕ C i*fd @supplied, indicBt Ʉ0at@Ay returbn"mon@)Hy@ear soiBtZn be!Zd aL[Eab8iInteger# !1stOfM" 5!@D@+8ntrol!j'`#ZC3b!y 2302yeon[!J ' (a,D rep8res^cIfQXTheW% #A ><> 0 O+a' ibIaezsBrr`xlyi= ¡ m rBy@Bcurfs@9ll`IL(istjS] mQm, Y@()'O q, vat, "m"TruMEIfMh= C!( .sue & "/1/"g e&"^s@ccoPhow`uq5nt h9cEdeʭ` %*Yr'W!f?c ' i1 To 4d/a?2o ea`e3aOÐ== .C?=s(mY& CYx(i)!!;= Add("d", (i - pWeek&))) 73 .C@h4,5`,d=, TippText/W m /d/yy ?DA40((9:-))FFt Ba ckColm= &H`00016V 'f8? F.Bol<ER= 0F__3PB'6re5vbBl t^,*c__ !x0.py`4Focu[  N)?D ~1SubãeѝD@s(?3,> "0Oy, _g R,OsrBDsupu1oZuۺmk E^heOOOHE '$ NBt.pccou3pa(not m)pasgrehex'!Qt's aac@tuallyunti@aʴFi3 sav by:3]gHY@xq{m=&a 3k12%B.aItemSal(L, R) + i, >0cg3$Index09?b SU -2po 50c@~l R 0("yo1 1nFo z i 6`21 PmbDropdownsCreated = True End Sub( <( |f ~S.WEKb 5D*=h8+3qr4n[J(Qoxr4n[J(Qoˠ.WEKb 5DMEH$(  @SS S:0@ FJR"<<>" L  H@t (8@8$@%8 (x H xXZ pXLpp8 P  h& TOV(*\Rffff*0e56cb4f54\3*\R0*#1d(*\Rffff*0e56cb4f54\4(*\Rffff*0e56cb4f54\5(*\Rffff*0e56cb4f54\6$*\Rffff*0f56cb4f54$*\Rffff*0e56cb4f54$*\Rffff*0l56cb4f54*\R0*#1c*\R0*#17$*\Rffff*0h56cb4f54$*\Rffff*0g56cb4f54*\R0*#e? . T8 " > " 2  "X ( " T "( RP L   d   & N & h0 d " X(  J . 4  >X 6 > R >h @ * V 8p $ 0   ( P0 F 6      ( "  0 8 X p "  x  ^  @ 0 ^8    B @   B F  h x B    B  :   "   F (X    B   B   B   B    B    (B  0 H8 F N & @ HH  J     ( HX` h pBx  " D  B  h <p 4   ( @   P 7X  x H>N>H$Px   0    , &* H XB(`  6 D(HPX` 6hD(    H3 P  X  B`8    P \8 P3  N3h <p  x V       ^0 6;  " " ^ 0 h 2 >  0 V@ . 0  H X@ H H  L( ^x  H 6  X H` V8 B 8N D >   X < ` , & & , !L P! L!D !B 8": " "L " 6# <P#P #P #R 0$L $ $ $ $ $ %F % X%P h% b% ` & :& &  L& <'X' h' p' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ( ( ( 0( 8( @( H( X( h( p( ( ( ( ( ( *() ) () 8) @) P) X) `) h) p) x) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * 0* @* P* h* *  2* * * *( * +4 + H+4 P+ + ,+  6+ *+ (, 0, 8, @, H, P, X, `, h, p, x,T , , ,  :- @-@ H- - -" - -6 - . . . .> . `. h.T p." . .  >. .8/ h/6 p/2 /6 / V0 8p0 0  <0 06 02 016 h1 Z1 2 @2 &2 82@2 H2P2X2`2 h2p2x2222222 2  022 2 3x' class for configuring the form optionsN seach for *Configure to find the configuration statements in Class_Initialize *** v06.16 ***************= Re7 May 8, 2012 BeforeInlineSignature replaces BeforeJpg *** v06.11 ***************#@ˎ, Feb 13,2012 FormType -- comments changed *** v06.04 ***************! 30-Dec-2011 PopupCaption added *** v06.01 ***************Dm*M 21-Dec-2011 Manual and Description comments clarified using IF AND ONLY IF *** v06.00 ***************L 13-Dec-2011 Description logic changed to improve Sign Form button optionsF 12-Dec-2011 supports RequirePassword and RefreshData toolbar button *** v05 ***************] 14-Sep-2011 Support for loading config from xml (requires clsSigStyles & clsButtonStyles) *** v04 Build 7***************G 3-May-2011 InsertUserParams added allowing up to 26 UserParam tags *** v04 Build 6***************a 3-May-2011 AutoTags, ManualTags properties added so that configured values can be overridden^ 3-May-2011 UserListXMLfile added allowing users to be loaded from an alternative xml file *** Build 1 ***************R 24-Mar-2011 defaults changed to "SRSID" for tags and CUSER_SHORTNAMES for lists *** v04 ***************D 10-Mar-2011 SaveNoSendFax included in mToolbarRoutingAlreadySaved' 2-Mar-2011 supports inline autosigs- 25-Feb-2011 AUTOSIG_ replaced by AUTOSIGN_7 24-Feb-2011 UserParamC, ManualChooseListSorted added/ 5-Jan-2011 New defaults in clsConfigureForm7 4-Jan-2011 'Fax' and 'Save & Fax' buttons supportedL 5-Nov-2010 BeforeJpg moved into ConfigureSignatureType, SignatureApplied8 4-Nov-2010 JpgHeight, JpgWidth added, fields renamed: 3-Nov-2010 some buttons defaulted, improved validation$ 29-Oct-2010 Signatures redesignedP 25-Oct-2010 mToolbarRoutingAlreadySaved more options added but commented out.1 22-Oct-2010 fix to mToolbarRoutingNew.SignForm 17-Oct-2010 SignForm added* 12-Oct-2010 MessagingAlreadySaved added 11-Oct-2010 created] ] J Signatures inserted into unprotected Word docs using the Sign Form Button] 07 collection used to locate the sig from the Description] 0( pipe-separated list of sig descriptions]H ]X]p ] ] ] P for usage, see ManualTags Z X$D(VmX used to make a run-time change to the tags which were configured for a manual signature9 usage (NB, ConfigureForm is declared Public in AutoOpen)X ConfigureForm.ManualTags(2) = "clowns|acrobats|jugglers" ' set the groups for sig 2 ^ X$D(\m@P: returns a pipe-separated list of inline sig descriptions B'`m? count of sigs which can be inserted using the Sign Form button >!d'bm X$D'fm`4 returns the signature with the specific Description j$>$D'hm0@ call this after inserting a signature to write the property and" update the SignedAleady indicator p XX YesA@n X$D(roH H'tm0 N'vmp L'xm P'zmP T'|mB v06.00 the non-blank Description logic allows 'Sign Form' to work@ for any subset of the signatures -- not necessarily inline sigsG if the Description is non-blank, add it to the lookup table collection and to the pipe-separated listA This will be used by the 'Sign Form' button, add the DescriptionC Return an error message if the non-blank description is not unique $D5 X 5 >B@ BG B|'Bj B5'Bkqz 3All non-blank Signature Descriptions must different'~i8@= 1) set SignaturesCount to the last signature which is in use< 2) determine which (if any) sigs have already been inserted6 3) set SignatureNumber (used to form range names etc)]]]]'& true if sign form button is displayed H! L! N!'  D $D 9 p X $9r55    Signature   copied to a lower index 'd 5$D!   Signature   copied to an inline signature 'k 5$D(H NB, set herek kx 5 55I if sig configured '<% check for the required bookmarks etc .f $D f( f!H check for valid "A|C" etc f!5  'Bookmarks defined for inline signature  'kP dH 5  0 skip if bookmarks may have been deleted by user  *Missing ranges or bookmarks for signature  'k k k d 0 skip if bookmarks may have been deleted by user  *InsertUserParams is invalid for signature  'k k 5    Signature   is 'inline' for an Excel form'k ; if non-blank, save description for use by Sign Form button  $~'= NB, can return a warning msg5I the check for both auto and manual has been removed ' v06.00V if auto, the appropriate sig will be inserted automatically when Sign Form is clicked5 5  Inline Signature   is neither 'Auto' or 'Manual''k5  Inline Signature   does not have a Description'kkd55  BInline sigs or descriptions are defined without a Sign Form button'kkq   b  IThe Sign Form button is displayed but no inline signatures are configured'kh G Invalid ConfigurationA@jo( *Configure Form *customizeW NB, less common options have been commented out. These booleans will default to False. '8(" set to FT_MEMORY for memory forms(+ v06.11 set to FT_ROM for ROM forms *******DX(& change this if more than 3 signatures) ****************************************O NB, CopySignatureTo can only copy forward eg from SignHereJpg1 to SignHereJpg3( This is to prevent loops being created.) ****************************************A ****************************************************************Q NB, If sigs are marked as Inline, they must also be auto or manual BUT NOT BOTH.B If inline sigs are present, the Sign Form button must be enabled.A ****************************************************************E Set options for the first signature. These elements are inserted at:W "SignHereJpg1", "SignHereName1", "SignHereInitials1", "SignHereDate1", "SignHereTime1"A ****************************************************************/ SignHereName1 will display the Ordering DoctorA ****************************************************************$D%A in routed OM forms, this MUST be the sig for the ordering doctor 9%* set to choose the signatory automaticallySRSID9V%- *** SRSID will usually exclude message pools9&A set True IF AND ONLY IF signatory is chosen from a popup 'v06.01Doctor9\'0 eg set to "Nurse|PT" if nurses and PTs can sign 9-0 to list shortnames instead use CUSER_SHORTNAMES99$0 set false if just name or initials are required9$ loaded from the tag9$ date the form was signed9$ time the form was signed9$ loaded from the tag9$= Eg "A|C" to insert from , (up to Z)$F Sig 1 bookmarks are "SignHereUserParamA1", "SignHereUserParamB1" etc9$6 eg 3 to copy sig elements FORWARD to SignHereJpg3 etc9$6 v06.00 (need RequirePassword=1 in project properties)(9$+ used in Word only -- Excel uses range size99$? true to insert at cursor or end of doc (unprotected Word only)$0 the corresponding bookmarks MUST NOT BE PRESENT$6 one only of Auto or Manual must be enabled (NOT BOTH)9$B set non-blank IF AND ONLY IF sig is to be inserted from Sign FormMM/DD/YY9*9 unprotected Word only (uses field/cell format otherwise) h:mm am/pm9*9 unprotected Word only (uses field/cell format otherwise) 9*= for formatting inline signatures ' v06.16 replaces BeforeJpg 9 9 9 9 9 9*5 NB, this formatting is only supported for params A-C 9 9,? for inline sigs, params C to Z all followed by the same string\.PopupCaption ="" ' set <>"" to override "Choose User" on the popup captionZ.UserListXMLfile = "MoreUsers.xml" ' if non-blank, the users FOR THIS SIGNATURE are loaded,4 from this file instead of from SRSFormsUserList.xmlq8F Set options for the second signature. These elements are inserted at:6 "SignHereJpg2", "SignHereName2", "SignHereDate2", etc$D 9SRSID9V9SRSID9\ 9999999999(9999MM/DD/YY9 h:mm am/pm9 9 9 9 9 9 9 9 9 9.PopupCaption ="".UserListXMLfile = ""q $ set options for the third signature$D 9SRSID9V9SRSID9\ 999999999(9999MM/DD/YY9 h:mm am/pm9 9 9 9 9 9 9 9 9 9.PopupCaption ="".UserListXMLfile = ""qp+ set these toolbar buttons for memory forms H999" print draft without saving99"( true to show Protect/Unprotect buttons99"( mainly for unprotected Word forms whereqp,% macros can't be run from form fields0 set these toolbar buttons for new routing forms$ TAKE CARE! All forms are different. L99999999999G NB, set a Description for each sig which can be inserted from SignForm9+ ROM forms onlyq4 set these toolbar buttons for editing routing forms N9)3 Save as New (non-standard when form already saved)999( Save as New and Send99** Standard option for 'already saved' forms99999)2 refresh patient data (based on custom properties)999*G NB, set a Description for each sig which can be inserted from SignForm9+ Routing OM forms onlyq7 set options for messaging when form is New (not saved)' (only needed if form has Send buttons) P 90' change if you want to choose recipient90$ if choosing, restrict to these tags 9 0' change to CUSER_SIGNATURES if requiredP.IncludeSenderID = True ' True to include sender ID in the message01 Requires non-standard dialect in SRS integrationqP5 set options for messaging when form is already saved T 90' change if you want to choose recipient90$ if choosing, restrict to these tags 9 0' change to CUSER_SIGNATURES if requiredT .IncludeSenderID = True ' True to include sender ID in the messageq " load the configuration from xml]`] C@5'Dq  C@58'85t'H5x'L5v'N5z'P5|'TqP H ) do integrity checks on the configurationA@o Attribute VB_Name = "clsConfigureForm"  Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |GlobalSpacAIFalse dCreatablPredeclaIdCExposeTemplateDerivCustomiz EOption 0licit@ ' Fss for cing the (m osse(ach* to find a3stSments in Class_Init`ializ)*** v06.16   May 8, 201 2 BeReInlineSignat@z reCcesJpg5 C1QFeb H13, T@ype --@Am-changed 04*30-Dec-1 P@opupCa[add' $0$ 21=nual aUDescr2ico&@ifiusAkIF AND ONLYH IF V00+13Ilogic >wimproXve A\I t@12suppor@}RequireP~word3Refres hD@@olba.r@-.5R-4-SepY S aRload!#P from xml (rcs\s@PStyl`E&B,ut#)4 Build 7 Rc` 3-RI@nsertUP@arams = allowup(26 F tagi Be 6IAp AutoT,Ca 3p iCso`qatyDvalucan be 9rri Rnp ListXMLfi~s!a. b- alterrB/ )_4)r)defaul`G(P"SRSID"<a'HCUSER_SHORTNAMES@J+ *`10 SaveNoSendFax1cluumTBoSRout9A2l dy ' , 2F^i a 5si<25-AUTOSIG_d by dN_24FC>Choa4Sl0B4! 5-Jan% New )"4)'` '+b' & }s ` Nova L0 E` mKd'fAA,"Appl`  Height, @WidthjB,`eldsn`3-soЀC ed, dLdb 0idajq29-Octe den0h!ea!re5s@Ee$.2fixQ5 .1 i117 c:Messag+51c Pub7qAs0EnumCount pInteger#s pCtin!un@K(tecWadocs lq"pC!Z Dim m`jLookU@.Collэ(6 Pu`loc3bHb`E SP6' pipe-Xsep_ lof ! ${`Ig s()Qo2a2!RAdHMemorBs clsC)K_PoorOdj o '=X 6U\aPron0y Le'p(ByVВiq#Esa(, ss@ 'cu2e, seeuAO!'e).f= &AE `3y Ma| fs 'e .make a run-tiQtF/BtwhiweJe9aa m !,#Wage (NB,(Hisg TDgOpene). 2)owns|acrts|jugglers6"A>s group172coAs)&'GC<%7"ipnРAst A QqoB0!p mIBܽ&/ 6ĢZ73 2G cb\Ks "4ib"_Zm# a=[[. S(2gnatures As Integer)XConHfigSiType CP = ms(i)VEnd Property  Get RDescriptionLookup(ByVal s String ' rens the s withpecific }kIpv(X)~ SubzAppliedxvąK' call_is after ins arto writetp and' updaned@AleadydicatorEjWCP_DOC_WAS_SIGNED & Cd{, "Yes"/ID .= TruGJToolbarMemory(Buttons?J p  RoDutWAlrAHSavk#Pj&New-D@!Messag`"@,F0 O ̃0f  !Func! zCheckh}nuIua b#A a' v 06.00qnon-blankɎ0 log@{ows 'Ac Form' yorkvforxy sudbs@ofb s -- not neca4rilAzlin"s'i#  @, add itl table colleB#%pipe-separd lis&tTh wibe used bybby7 R" err#mSe $ -dct un iqÎ4On E!BGoTo lab W!!!aIf .*<> "" Then .A. ),  mlL@.  p& "|[v t{Q4ot` AVIf4x&6:>8 @vbCrLf@">A$3)6s must different\< 3Iivri zisaAB(~Q' 1 ) 9fsCoun4a`hich(in0'd@ 2) de`~mi!?Php`agaswdex Els0= 8(.l).InAtIöon?  sJ "y ;z4 JU  ' NBp>et hPR 9 AuE!P"AUTO!_NONEa7.A8 ArN?$M W1o@ErrequirqPmarksPS`= а O qC cB'i\8c(UP`msi"): valid@ "A|C"  If Signature.LocationValid The8n .InlineInserlbsMsg =  & vbCrLf & "Bookmar@ks defSd@ for i_ Rs "+iE nd IfEl se9fNot hDocumentIsNew ' skip if b}may have beenleted by u]'Missing ranges 9AYWXfI$PCU@WParams invBbFU4 kc AAppliIsExcelρ:'k'"man C m"+@b FormButt\on`K3'`non-blank, sa`descripa1``Aa r b z@CheckD ( i)bB' NBH, cre@n a warnemsg 53oa' the c"0both a uto a>maPnualsrpemov' v06.00 ` , appropriate will@ @_t Amcally w`c-bcPked "A= AUTOSIGN_NON$E AY.M= FaD!YZnei+r 'ա'''Z(< sH`""'rdonota (,?)Z1n Or .9<> O ÂpklABs are&w out0=]Cn u  WWSNext {PTq3 xCount(0'PILK(as M2{y m, rozzlBUT NOT BOTHV 07;sS2d@be enable **=S*7first7%7eleԳ inʼnt:2"1"EName 4CsJDP Tia5 u DCW2O0rder)torTsSh?) ' in routed OM forms, this MUST be0e s igl,ordering doc tor .Auto = AUTOSIGN_NONE8' set >choosUnaBy a9maticallBy QTagsU"@SRSID"O ' ***  will usu> exclude message pools1TMan)FalD(STrue IF AND ONLYVbsen from a0pup 'v06.014`D`' eg"Nurse|PT" if ns and PTs can n,CListfCUSER_SHORTNAMESlsho0rtnasteadKe M fS= AF InsertJpgo MGSCRfX4jFu@) or@!iti@ are required N@,' lo ad"^the  tagDatted wasX!TimcK' tIn;= 1 S1UZParamD' Eg "Ah|C"ic, GC> (`U CZ)'%6 /' + 1 bookmarkR6".Here 1", B1 " etc2Copyat`6TA0bb3℀ `n elements FORWARDO3 RIPassw@?.' "t0 (neH,=1R projectp [(ies$. Hehighm4'AjdAWonly -- ExceAes ranasizeh! Width180Inlinekiont`8$>pat c@k@eYof =nt?>[correspondAg@NOT BE PRESENT' on~e`#Bƀdm`enabl`"(" OTH0De@script""a¡non-blankP '` c' !J FN0,= "MM/DD/YY`>,.s=fiehld/?lo *rwise=# h:mm/pm .Be?IJ7@%vb4Cr'~Patti(!8Use 316[plac S0,XAfter D]qR" "d\rZy/erII)'X NBis)suppCo pWA-Cm Berr[CtoZN/SCqNZ Cllow*bfyӘqqstA'.PoPCa1z13d#y<>00ovPerri"s "BpiQ!XMLfi"lq"Mos`s.xml"p"1E8! eQr"\ THIS ATURE}GY?rnew r-,>' TAKE CARE! Allc are diffnt.# DRC NewCDNoSeQ= )HcF ?E: W ! >Q ` L/M@,_G MBDF1 INB,t a seach sig whi @a@ib@MA%T Mo6yROMOBa"M' = needif2 h4)TC;Me]Rec ip1!EMSGR@ECIP_FD_PROPERTYa' change you waPtoPATu"'!c,strticoEon~t @ IGNATURES rcK'.In clude!erID.a puiA^nder in1 0\c s Pdp @`tegr٠6on_^ &d &F#^1 .####(#5##! ##.## #oR u#sl#g/  #If !PConfThec' loajd'cu!xml Dim BStyles A3FclsiSigStyles As New clsSi With dt.loadXMLJ"mJnatur= .DEnd  \Button_FormType \ /mToolbarMem8ory# (Routing}( AlreadySaved3!Messag7 2/ d #If(' do integrity checks on the configuration zValidateC  Sub Ad<J0~n %EY:Mb*=h8+3q޷VM- xex޷VM- xe%EY:MbME8 (,SS Sh lptx|$ 6"<<<N0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}P4% @ %@8@%`X@%x@% D@%lera@ %****@$%@(%Hf So@,%,! h $@ %) ng tA %,!0 h  (@%)( DA%,!h p$ .i ed,!h ( 7i is a,!`h 80,A@%)X o thA%,!h 0E@%) a, tA%,!@h 4I@%)8 A%,!h 8M@ %) A %,! h <Q@$%) A$%,!h h`@ U@(%) A(%,!h D Y@,%) A,% Ah h @H _)`A % A h L m)A%` Ahh (P )HA%` Ah T )A% A8h X )0A% Ah x\)A % A h ` ) A$% Ap h H d )h A(% A h h) A,%, `  l i8 i  X %"f 4@"j D8@"n `X@"r( xx@"vP @"zx @"~ @" @" @b  @b @  ( P Ph`hp x  0@8  ( P Ph`hp x  0@8@   ( P Ph`hp x  0@8   ( P Ph`hp x  0@8   ( P Ph`hp x  0@8 P X  X p1TOV(*\Rffff*0n56cb4f54\0(*\Rffff*0n56cb4f54\1(*\Rffff*0n56cb4f54\2(*\Rffff*0n56cb4f54\3(*\Rffff*0n56cb4f54\4(*\Rffff*0n56cb4f54\5(*\Rffff*0n56cb4f54\6(*\Rffff*0n56cb4f54\7(*\Rffff*0n56cb4f54\8$*\Rffff*0n56cb4f54$*\Rffff*0o56cb4f54$ " (0 "X < " 6   .@ Bp T J .` > X d( Z 6(0 8@H PX` (hB  B    B  L "( P X B ` :h   B  B  B  B  B  ( B 08@ B H P X "  ` hp x.    "   H   ( 0  H8  * &:0 8 @ "  H P X`h p &  "      ( 8 @ "  H P X ` &h    "   > 6 H@   B      * &P  x  &    "     &  ( 0 "  8 @ H P &X    "  R ( ( 0  .8 (h  $ 0  L 8,X ,   B   < . @ Px *** v06.11 ***************svc" Feb 13,2012 DRUGNOTE supported *** v06.00 ***************e]5 1-Dec-2011 DrugDetails checks for not tolerated *** v05.00 ***************0 3-Aug-2011 Improved formatting of SocialHxte *** v04 ***************wo' 2-Nov-2010 BP Height fixed in Vitals; 25-Oct-2010 BP SortKeyValue generated during Property Letting tN problems, social and Tests, improved format for missing datesD DrugDetails trimmed because of xml:space="preserve"( 22-Oct-2010 BP BMI formatting improved7 20-Oct-2010 BP formatting moved into clsFaceSheetDataQ 19-Oct-2010 BP This is a generic class for storing all types of facesheet data.] The data are copied to the appropriate type while the other types are unusedS Given the small volume of data, this is probably efficient enough.] 5( record used to hold allergy details etc] ] ] ]( ]P ]x ] ] " encapsulated read only properties] ] P f'mH j'm00F this returns a complete record of FaceSheet data in a suitable format for inserting into the form 'm3 this is used for sorting by drugname or vitalsdate 'mH n'm0` r'm v'm@ z'm ~'m  'm 'm 'f f5'5G (5)'j5'q@m8hA trim is required because xml:space="preserve" expands the fields] 'j j5'B check for meds which patient can't tolerate ' v06.0055 5 5$'k8 G : 'j5G (5)'jSv06.115'qm]P 'n n55 (deceased'dp5(living'kP5G , 5'j )'qmh 'r r5:5'5$'qm 'v v5'5G5:5'j5$'qXmP8 v04.148 drugs, alcohol & tobacco etc can generate empty records/ so if no notes or abuse, don't output anythingB dates are not validated by flowsheet so don't try to sort on them 'z z5X,54& abuse=true or some notes were entered5'5G (abuse)'j55  5 until 5'5G present'jk5G -5'jkPqHm@ '~ ~5:5'5G -5'j5$'qm ' 5'5G5:5'j5$'qhm`p K NB, msFormatted is not used for Vitals which is output one field at a time! load and tidy up the vitals data ' ' 2010-06-08T00:00:00-04:005 $97 strip the time 26.38393694877087750.0$97 reduce to 1 dec plE 6/1 becomes 6'1". (only append " if inches present)5/'$95$'G5"9j5'7 this date is already sortableq@m8 6 change m/dd/yy into yyyy/mm/dd so dates can be sorted G X yyyy/mm/dd$'jiŶAttribute VB_Name = "clsFaceSheetData"  Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |GlobalSpq False dCr2ezbliPr@edeclaIdCExposeTemplat@eDerivCustomiz EOption 0licit ' *** v06.11Feb 13, 2012 DRUGNOTE supported "00" 1-D(ec-"1" DrugDetails checks for not tolero+M5.*3-AugGImproDmatting of SocialHx:4( 2-NovA0 BP Heig@ht fixYi`n Vit{25-OctG SAKeyValue gen/ durA Property Le\'? ,ms, s* and Te4st@iK4ImissdIs#M Wmm/bec auCxml:sA="preserve' 22K5BMIR"-@0 [m`into A19KThis aMic@ asCPall typessfsA a.a The l copi%tap-pri@'B whi@u5Aor un%P Gnn asmavolu {@+A, c;oy effment enoughfDim mAl ]gyaAs T@(' rec0ord e hold ergy ddjetc > A HFa8milmImmunሌP @`A\Du,FSurger il H| i'@8caps u!d`1ad o0nly J|ie@r/sForagO.Sqng s  "CGet k@() oC CE=J E J (B D H@m* &" e"c 'freturns a we@^k{@Ya supY%J I inMR`H;J 4\ @@2:sbm1[b :onnv"ePCPQ!   ;# #=*1<?s1!so XE{!;] H|I *q<oiMxz Op"OOw:Q  yST yqEfRCR)2q}w=\ sWithS m]= .ALLERGENICNAMEgIf .REACTION <> "" n & "(" &h)Q19Bnq1 (](Xh&`Nr`Nrequi U/e" eTxps`^e@eld=3 rsaAUayf!` c cSk.V'cAd sc@h patiqcan'ɱ6 00aUSESTATUSCODzE3GC= T(.STR ENGTH" CB UNITWINpUB%Sq|If/(t7,':"Jߏ ,6,rm5, h End PropertyxX Let FamilyDetails(rec As Typ*e `)n Dim sTempLString 0 m j = PWith  ":"P IJ, "Ni$)AImmunizationFqmk 2.DATEOFPROCEDURf:@NAMESortKeyVPaluezableDate(@.FA\mFKGEDB ty!ordsso@ if no@tes or abuse, don't output anythF s are@ valid d by flow8she @ tr@y to sR on themŝ~m/Bc!S=CBool(.ABUSE) Or (.NOTESc)a'#=trc`somwe entd +.SUBSTANClaN_"(*%A{ 2010-06-08T0D0:"-04</.VITA LSLeft((, 10)D' sp JBMI>26.38393694877006/10@BH P`"h p   ,2 8@HP`x   "" 0 @P Xh p xp] ]]  B@o8 . m( (]h]]]]]] ]8]X]x(. ( ( P!(SRSSmartText.xml %'  k !. ! ! . !. ! BkShortNameKT% ! ( BkNameKT ! ( n !BkName A@. k k xophAttribute VB_Name = "clsSmartTextList"  Bas0{FCFB3D2A-A0FA-1068-A738-08002B3371B5} |GlobalSpacAIFalse dCreatablPredeclaIdCExposeTemplateDerivCustomiz EOption 0licit CompI  Dim m As New Collec1! P?C Sub zAddT o(User+ D)0sKeyMsg  8.(8" E nd39operty Get s*m{t{l{(){'S@[ Pr@ubE4J? Load(-Ap pa?.Scr@eenUpdngrNoDocA#MSXML2.DOMumen\fSuccessBooleanCBoRootHI@NodBChildr|en ń iInteger EDetail/TypeC g 4@ Mrror RevsQ@xQ;,= D Q-.asy nc3bvali6eOnParb3p3= ?gF0orms ters.f & "SRS.xml"DIf N8 ThedocntEleCF Each o?In D."81As @.n`Egǡ" &q#!3/" Ia ' A!ia Co  "BkSho\rt. ck |'OdValu`) WB~e)` (- :J@,AN IC׃/`xcG:       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&|)\~ ``MEt $ @""<<<,0L<F< > L " " LL  ( "H 8p B \ \P " V &0 ZX P & 00 &` J & P &P Hx & P 8 8X V H V0 R H J( Lx  L ^ D<DTP : ^ @PB " X T Tp  4 4 0@p  x8+    88 :@  .4  "  F @P  lXH  > P`x B  J  L X`  Tp6& (0  P2p     B  H L( x @      28 X ` h p "x L   @  B\ D\X      "  V @(0 8 @ H&X " 2 D D Jh 2   \ ,X!!,!!!  4!%"  ,8"h"@x" (""" *"  "@" @#@#H#  P#  `#"p#<# H#@T $`$ h$" p$ x$ $ T$ 2$ 0% 8%  @% VX% H% <%8&X& x& " & 4& & "  & P& ( ' H'P' `' x'2' `' >(( h(( ( ( B<( ( ^( H() p) Fx) >) T* &X* X* X* `0+ + + + "+ + x+ t`, ~, X-`-h-p-x- 4-- - - - .. ..   .@.H. P. 6`.(. . . .. // 0/8/ @/  H/ "P/ X/ Tp/ 8/ 0 R0 `00 0< 0D0  `01 81 1  F1< 2  8`22r%2!03@3H3 VP3833 838 4  "X4, 4  484035 t05 5 5  L5 ^6 :h6$66!6 6  7'7687@p70x777 77 7  b7@8 B`8 l8 9 09 @9 %H9  h9 \x9T9BT0:x::: : " : : R: "(;  FP; 0; @;;; ;D; 0<@<`< h< p<<  0<$<<  R= p= == == 4=== =&>(> 0> 8> "  @> JH> B> > >>  >(? @h? @p? 8?  <?$(@  6P@ @  L@ B@*@A <pAA `A 0B  f@B JB $B  C B8C CC @C"C DD 0 D :PD D D B D fD \E ,pE E >0EP-E 8F @F " HF @PF FF F NF 0G J8G G RG NG N8H &H H HH 6H8I 8I  RPII  FI RJ 6XJJJ J6J<J8KHKPK XK`K xK K B  K fK bK `L L RL *L M dM M ,M,MM N  N  T8N  <N VN(O  0@O  pOOO  O(O O P  :P XP8hP(PP PQQQQ( QHQ  PQ XQ `Q xQ Q "  Q Q Q FQ Q TR \XR (R R R S XS hS DpS S ^S ` T "T T :T T &T  U :(U @hU 8pU  TUV V L(VxVVV V V "  V RV  W &(W PWXW  @`W W  WWHW X X " X  X J@X X VX Y \Y ^pY Y TY \0Z Z ^Z Z b[ h[ Fp[ `[ \ b \ @\ \ .\] ] @]" H] PP] ] ] .]]^  X(^ >^^ ^B,, ^ Z_ `_ Vh_ _ *_ _ X` X` ``` <` a a  a J(a Rxa @a bb 4 b BXb 4bb bc c0cHc  ,Pcccc cc ,cddd(d8d @d  (Xd Rdd d " d d ee f Vf Dpf f ffxp *** v06.22 ***************& Oct 25, 2012 gbSelectionMade added *** v06.20 ***************entIE Aug 3, 2012 Demographics replacement moved to CustomAutoOpenComplete *** v06.18 ***************- Jul 6, 2012 SetInHeader added (for St Cloud) *** v06.16 ***************' May 10, 2012 CurrentFieldDefault added * *** v06.15 ***************. 30-Apr-2012 RunEntryMacro compiles in Excel *** v06.13 ***************e 27-Mar-2012 RunEntryMacro tests that a macro is present (EntryMacro <> "") before trying to run it *** v06.12 *************** Y Mar 7,2012 Support for for all-use repositories (which support RF, MF and ROM forms)G requires extra tests for ConfigureForm.FormType = FT_ROM *** v06.11 ***************U Feb 13,2012 bUpdateFacility passed to UpdateHeaderValues -- see there for comment *** v06.10 ***************l[ 3-Feb-2012 customAutoOpenComplete runs the custom sub named in "AutoOpenSub" property^d. 1-Feb-2012 Calls RunDemographicFunctions *** v06.04 ***************Y 30-Dec-2011 AutoSignatory, fix to user agent logic, gsDate added, PopupCaption added *** v06.01 ***************^d4 21-Dec-2011 AutoSignatory, Sign Form button fixia *** v06.00 ***************_ 19-Dec-2011 password checks moved to clsSignature.Insert, autosign checks for SignedAleadyaD 15-Dec-2011 WordFormDocument replaces ActiveDocument (2 places)^dP 14-Dec-2011 AutoSignatureInsert changed to the function AutoSignatory which; selects the user without inserting the sigiaB 13-Dec-2011 AutoSignatureInsert writes PersonID to properties) 12-Dec-2011 supports RequirePasswordQ 5-Dec-2011 logic for refreshing demographics, vitals and faceshseet changed< 1-Dec-2011 zUnprotectShortcutList, RunEntryMacro added *** v05 ***************F 19-Sep-2011 FormAutoOpenComplete not called from Excel Repository< 16-Sep-2011 Conditional compilation to include ParseXMLJ 15-Sep-2011 Repository calls FormAutoOpenComplete from CustomAutoOpen@ 13-Sep-2011 SelectFromListCr calls ApplicationScreenRefreshB GetString only loads strings for the current form7 dummy Excel code for ChooseDataByGroup! comments reduced *** v04.15 ***************1 24-Aug-2011 Page headers supported correctly; SelectFromListShow, SelectFromListCr addedU gsSelectFromList returns the full list used by SelectFromList etcU gsSelectFromListNot returns items not selected by SelectFromList etc *** v04.14 ***************O 20-Jun-2011 SelectFromList can use GetString to load long strings from xml *** v04 Build 10***************T 20-Jun-2011 zChooseAndInsertSignature becomes ChooseAndInsertSignature (public)J improved support for xml containing data other than users *** v04 Build 6***************) 3-May-2011 UserListXMLfile supported *** v04 Build 5***************D 19-Apr-2011 dummy code to pass vbCR delimiter to ParseXML *** v04 Build 4***************I 14-Apr-2011 ScreenUpdating managed centrally in CustomAutoOpen *** v04 Build 2***************B 31-Mar-2011 ApplicationInputShaded not used in OM forms *** v04 Build 1***************I 24-Mar-2011 ReplaceDemographics renamed NewReplaceDemographics *** v04 ***************2 3-Mar-2011 AutoOpenComplete set for OMO 3-Mar-2011 ApplicationFullScreen moved to CheckInkingAndShowToolbarA 3-Mar-2011 ChoosePrinter now set from custom propertyP 2-Mar-2011 CheckInkingAndShowToolbar moved to CustomAutoOpenCompleteL 2-Mar-2011 ApplicationFullScreen True moved to customAutoOpenEtcA 2-Mar-2011 BP ChooseUser exits if AutoOpenComplete=falseC 28-Feb-2011 BP AutoSignatureInsert supports inline autosigsE 25-Feb-2011 BP AUTOSIG_PPTAG renamed to AUTOSIGN_BY_AGENT etcF formerly, this was just used as temp storage within frmSelectFromListW as of v05, SelectFromList on exit sets it to the full list passed to frmSelectFromList] )6 used by frmSelectFromList, returns caption (before >)] )- used by frmSelectFromList, returns full list] )6 used by frmSelectFromList, returns items NOT selected] )E set true by frmSelectFromList if a selection was made (false is esc)] (3 the date returned by ShowCalendar in m/d/yy formatX this can be used in calculations if the date in the field is formatted eg "mmmm, dd yy"9 set to "" the if form is closed without selecting a date] PSRSFormsStringList.xmlQ this loads a string from a string repository formatted like SRSFormsUserList.xmlN the ShortName is the name of the string and the Signature is the string valueN The forms which can use the string should be specified like group tags -- eg. ShortName Signature RF1 RF2 RF3- MyString This is my string Y Y]7! the strings are only loaded once]8 .Set FormRef property in order to use GetStringA@z8 k0 .  (  B@7# load all the strings for this formk70 test for Is Nothing didn't work for some reason  %. !f'zPHString < > was not foundA@iX? Present the user with a list of time based on the current time]]fsTimeList = TimeList(Now, 5, 12, 13) ' 5 min intervals from 1 hr before cur time to 1 hr afterUUUUUU?)$'2! 15 min intervals from 8am to 6pm8 show the form and enter the time into the current field B@  %' G A@jo` D Form a pipe-separated list of times so that the user can choose oneF Eg TimeList (#8:27 am#,5,12,13) returns "7:25 am|7:30 am|...|9:30 am"]]M eg in the example above, this returns -62 to get the rounded time 1 hour ago $   $   'n  $<'7 eg 7:25'     G |'j n  $< h:mm am/pm$'   '  'i(A this reads from the current field Default or from Listn if ExcelF If string is of the form , the string is then read from xml List $'X]0]H . Gzj !!'+ v04.13 check for loading the list from xml <*>G   $$'j 'ihE this allows F8 to run form field macros when the form is unprotected ( A@ ': v06.00  $  RunEntryMacro B@  $ AddNewSmartText B@A@P (o8P v06.13 tests that a macro is present (EntryMacro <> "") before trying to run it ]A@ . !G ! B@jA@poh, *******************************************> NB, CheckInkingAndShowToolbar works OK from CustomAutoOpen in= Word 2007 and Excel 2003 but, to detect inking from Excel onD Office 2007 Tablets, it must be called from CustomAutoOpenComplete., *******************************************]HU v6.20 Jul 2012 -- had new problem where 1st demographic not being populated properly& moving this code here seems to fix it A@3 only replace if document is newA@3 v6.10k - if the VBA window appears, this will hide it $GA@j& v06.12 logic for all-use repositories J!8 L &A@! v06.12 see sub for commentsPkHA@% also sets Excel to fullscreen J!8 L & A@/0 v06.12 will skip the facility update if not NewkHomeA@ v06.10 $'G "AutoOpenSub" G  B@jG e.g. run "MyAutoOpen"B ApplicationActivate must be delayed for Home to receive the focus ?$ ApplicationActivate B@'o` Not used in Excel.M In Word, this should be assigned to all the SignHereName* fields so that the+ sig is inserted when the user clicks this.] Feb 22,2011O If the first field of a Word form calls ChooseSignature, spurious calls can beB generated when the form is opened and the Home field is selected.5 In this case, ApplicationTargetSuffix will return "" SignHereName$' G A@jo. *Customize for routing order management formso8J Display a popup form allowing the user to choose a signatory for the form! for signature number iSignatures]X]x X J%f5'9 v06.04 G Choose User'j9 default 555\55$. 8, Feb 15, 2011 require SRSID if inserting jpg 2+ v06.00 CheckPassword moved to clsSignature  X J%fA@kpqho`  (W Display a popup userform and choose an SRS user which is returned as a clsUserDetails.B Returns Nothing if the form is closed without making a selection.@ sFormCaption if <>"", it overrides the standard form caption7 nListType selects or tagN Tags "" for all users or pipe-separated list of users to be merged eg "Doctor|PA"R bRequireSRSID if true, only list users with an SRSID (typically for signatures)R bRequireSRSMail if true, only list users with an SRSID (typically for recipients)Z sUserListXMLfile if supplied, users are loaded from this file instead of from the default Usage ===== Dim User As clsUserDetailsq set User = ChooseUser("", CUSER_SHORTNAMES) ' default caption, all users with n set User = ChooseUser("Choose Recipient", CUSER_SHORTNAMES,,True) ' all users with and w set User = ChooseUser("", CUSER_SIGNATURES, "Doctor|PA", True) ' show doctors and PAs with and ]]](]H Gzj2 don't show form during AutoOpen   2 4$0'* ( &G &9j  *96d *98k load the required users "9: $9< C@ G  (@j@ fixed, Jun 20, 2011 B@@ default is multi-select (!> %'. .   . (%.d . (%@.kkqi` *customizeN This is executed after "SRSFormsParameters.xml" has been opened successfully.2 If the user skips AutoOpen, this code is skipped.K The document will be protected unless the "Unprotect" property is present.]] Excel display optionsA@J*. Restricts user view to Range "AccessibleArea"A@L*8 suppress green mark in unlocked cells with formulae etcZ 14-Apr-2011 this is done once only here instead of in NewReplaceDemographics and ParseXML2 (this is to speed up the start of forms consoles) (? v6.20 Demographics replacement moved to CustomAutoOpenCompleteA@N30 always load in order to get current user ID etc1 if a routed form, check that there is a sharedIDsharedid$v 6No SharedID (or Chart#) is available for this patient.  Click OK to exit the form'  PA@A@Hk J!8 R2? v06.11 = FT_MEMORY Or ConfigureForm.FormType = FT_ROUTING Then$VA@T2$ set the form caption (long version)k 6) set to 1 if modParseXML etc are included 6+ v06.00 refresh is now done from the button Insert meds, allergies etc Xfilesdata\FaceSheetData.xmlA@ insert VitalsPERSONID$v.xml'FG eg "97\9783.xml" P!Z FA@G eg "...\97\9783.xml"m ParseXML ApplicationPath & "filesdata\FaceSheetData.xml" ,vbCR ' write multiple lines to single Word fieldkP H F Check for auto-inserting of signature and/or name of current SRS userW ReturnToName sigs in OM forms are inserted later because ReturnToName isn't set up yet3 this logic can be moved if the form logic requires  J!<  J%f!rB v06.00 extensive changes $\.H H H  J%fA@ J!8 LB v06.12 for all-use repositories & H A@^F ROM -- writes it for sig 1PkHk@k8 \zMyOwnInitialization ' create private subs as needed SmartTextName$'< Uncomment and edit to insert a page header (Word docs only)f If DocumentIsNew Then ' Or (PropertyRead(CP_REF_DEMOGRAPHICS) <> "") Then ' refresh may not work AddHeader End IfA@ J!8 RGA@`j (U 2-Mar-2011 more functions moved to CustomAutoOpenComplete in order to support inking J!8 R/>v06.11 = FT_MEMORY Or ConfigureForm.FormType = FT_ROUTING Then ?$ CustomAutoOpenComplete B@d', set here for OMkXoP  v06.18K set a value at a bookmark in the header and return to the current location or to a specified location? NB, Header bookmarks are not shown in ctrl/G in bookmarks list* but are shown in the Insert bookmark list (]Home'j12 return to home if unable to find current location !'j l!nG lB@pjA@ d %rB@H fd tB@v) TypeText deletes the bkmk so recreate it |z fd ~ tB@x d t! !rB@K ApplicationProtect doesn't work from the header - so go back to form first h jA@dh hA@kP  !(l4 view gets set back to NormalA@|Unable to update form headerA@A@oC In Excel, this is used to initiate actions which are required when< particular fields are entered. (Word uses the Entry macro).8 This is called from Log.Worksheet_SelectionChange event7 *Customize (Excel only -- actions for specific ranges)  G|j#- stops annoying popups when you are designing A@(' autofit row height (name AutoFit1 etc)6 show Calendar for all ranges starting with "Calendar" Calendar$GA@j/ show Times for all ranges starting with "Time" Time$GA@jE show frmSelectFromList for all ranges starting with "SelectFromList"; Actual list for "SelectFromList1" should be in "List1" etc SelectFromList$GA@j5 Display pop up form when user clicks in SignHereName  SignHereName$ Y*** if modChooseDataByGroup is NOT included uncomment this and comment out the next group A@_ ' *** if modChooseDataByGroup is included uncomment this and comment out the line aboveD If ApplicationTarget(Target, "ChooseDataByGroup", True) Then ChooseDataByGroup Else< ChooseAndInsertSignature ApplicationTargetSuffix End Ifk`<9 Display pop up form when user clicks in SignHereInitials SignHereInitials$ A@k;) Other range-specific actions as required3If ApplicationTarget(Target, "MyRange") Then MyCodeh;o`;H ` Form a caption which will appear on the titlebar of the form window and on the Windows taskbar.U The short version (bLong=false) is used on the 'toolbar' userform in MF and RF forms% The caption can't be set in OM forms] lname$v, fname$v'I Doe, John GCurrentUserName$v -  'jI FAST - Doe, John 'Vi9 : Display the calendar form and paste the reurned date into@ a Word document or Excel worksheet (provided a date is chosen).G For Word, create a text field and set ShowCalendar as the entry macro.C For Excel, refer to Event_Worksheet_SelectionChange for dummy codeL NB, if the first field in a Word form calls ShowCalendar, then ShowCalendarG can get called from the ApplicationUnprotect call in AutoOpen. If thisH happens, the call to ApplicationGet("") will force an error exit before the calendar can be displayed.] ] G|j-# don't show calendar in design mode G|j-$ don't show calendar during AutoOpen. (to be safe)K force an error exit if ShowCalendar called prematurely (see comment above)$'@ if field contains a recognizable date, show this as the defaultK NB dates like "Thursday, October 14, 2010" can't be converted using CDate/ so today's date will appear if these are used.h5 G X (j@5  %'. short date format ' v06.04 .* if user closes the form, don't write date A@k4|44 Invalid dateA@4ox48 _ check whether a sig needs to be inserted automatically (ie without the choosing the signatory)[ this is usually during AutoOpen but is also used to insert the sig of the current SRS user from the Sign Form buttonK v06.00 replaces AutoSignatureInsert which inserted the signature directly.# Sign Form needed more flexibility.] NB, this doesn't insert ReturnToName sigs which must be done in OM after ReturnToName is set] 1 users who can apply this sig] 1 user whose sig will be added] 1 all users] 1 the current user X J%fM If .SignedAleady Then exit function ' v06.00 can be called from Sign Form5 v06.01 this check is to support the Sign Form buttonP if Description<>"" and Manual=False the autosig will be inserted when Sign Form55  5 5 5 .5 (:I v06.00 ?5V B@5 5  CurrentUserID$v %.H H5 3 see if current user can sign (pp) for someone else. B@@' load all users and get the current one CurrentUserID$v %. I v06.04 ! %.Hk.k.k.d.ChartBinDoctor$v %.Hk.k.k. H.\Q v06.00q.ix.  (Excel only)@ Adjust the height of a row to fit wrapped text in merged cells.N This can't be done with a simple AutoFit which only works for text wrapped inV a SINGLE cell. The method is to copy the text to a single hidden cell on the same row" and use that to force the resize. To use this routine:R Create the required merged area on a single row and set as wrapped top aligned> Give it a suffixed name of the form AutoFit1, AutoFit2 etcW On the right, outside the active area, set a single column to the same width as theY merged area and set wrap, top align for the cell on the same row as the merged cells. Also set the same font.4 Set this cell formula =AutoFit1 to copy the text Hide the column on the right4 Call CheckAutoFit from Worksheet_SelectionChange ] -* static preserves the object beweeen callsN This performs an AutoFit if the PREVIOUS selection was AutoFit1, AutoFit2 etc G B@j.E when user ENTERS the range, set up to do the autosize when they exit AutoFit$ !.kP)H)o@) L this will insert signature elements into the form at the standard locations Not used for inline signatures.]X ]x : v06.00 confirmation message removed -- now done by caller f =  9 C@=7If locations are invalid, no elements will be inserted.q'o'  **********************C popup a form and populate the field with a list separated by ", " **********************O Display frmSelectFromList so that the user can select single or multiple itemsV In Word, create a text field and set SelectFromList to run when the field is entered.X The list items should be in a pipe-separated list in the Default property of the field.N In Excel, create a suffixed named range of the form "SelectFromList1" etc andU enter the list in a single cell with a name of the form "List1" and the same suffix.W In Word or Excel, terminating the list with "~" causes a multi-select to be displayed.\ In Word or Excel, the form caption can be included at the start of the list followed by ">"@ EG "Choose a Number>one|two|three" to select one number,Y "Choose some Numbers>one|two|three~" to select multiple numbers separated by commas[ Strings can also be loaded from the StringsList.xml eg if the string is called "Problems",9 set the field default or the Listn range to ""] $'= v06.16 parameters changed |, $' G A@jo" J popup a form and populate the field with a list showing one item per line (if multi-select)]( $'= v06.16 parameters changed | $' G A@jR some multiline fields in tables do not refresh properly in Word 2007 eg on the VM7 documentation says that this won't help -- but it doesA@o0! @ T V06.16 sList supplied as a parameter (generally obtained using CurrentFieldDefault)P this will display a form and return the selected items as a pipe-separated list$ see SelectFromList for more detailsQ if supplied, sPreSelectList is a pipe-separated list of items to be pre-selectedZ nHeightScale, nWidthScale will change the height or width of the form (eg for long lists)5 nHeightScale=1.5 -- make the form 1.5 * usual height Globals updated:D gsSelectFromListCaption ' original caption before > (v06.16)K gsSelectFromList ' original list after stripping caption and ~: gsSelectFromListNot ' list of items NOT selected]@]X Gzj7 don't show form during AutoOpen< if the first > is before the first | assume it is a caption. otherwise assume the > is part of a list item >'  |     $'z z (@   $'k& list ends with "~", allow multiselect $~   $'d@ B@k( 2 v05 set other form properties 9 9 59 59q  %'! v05 make original list availableL NB, frmSelectFromList uses gsSelectFromList -- so don't move this statement '|ix Dim sNameW sName = "Patient Name: " & vbTab & GetDemographic("lName") & ", " & GetDemographic("fName") & vbCr' & "DOB: " & vbTab & GetDemographic("DOB") & vbCr' & "Chart#: " & vbTab & GetDemographic("SharedID")O SetInHeader "HdrName", sName, "Home" ' v06.18> SetInHeader "HdrDate", GetDemographic("today"), "Home"o80Attribute VB_Name = "customAutoOpenEtc" Option Explicit@Compare Tex( ' *** v06x.22:Oct 25, 2012 gbSelec\Made added H0HAug 3GDemographics replacement moved` to C lHete g183Jul 63SetPInHeSrT (for St @Cloud)'6'May 10(CurrSFieldDefault15$30-Apr-RunEntryMacro ciles icel M3(27-Matests tha( mis PpresY(<> "") beFe @$ing`run v GA! 7,ESupport AZall-usezositori9(wh s RF, MF a@nd ROM msg'requi0 @ra 9ConfigureForm.TypFT_ LS1QSFeb 131bUpdateFacility passæCValu@3-- seOhe#s 3- K cse 'b n dAF"Sub"`ngMlogic, gsD)e, PoppupCag0a24 21-8 A? t@/ 19 0azno@r`6from`0 Rep#G6- NdixaltcaincluPyParseXM2L15 c{@ t#[x3ÀFaCr$ Apab Scre8enR"\'Ge tS@@gonly loads sms,cwmO dummyco8ChoosePGaByG0roupVomcA8qduceH4.|24-ЌPage h>@.mcoctl3L{&w, V&Treturn;full lp+ PvtL,P :ntainJata oP-rrwvpw4d 6_ ݖUPYq7>fУ'5J|_Q$04B4pW vbCR delimP P o F4 k AҔqaman4pw0r]IyH2 31ei (IInputSh`d-B2׀1o P@ԷiU΃Newo#B ކdseOM r"O=WYFB8Ink`11IToolXbar" 32P@rinterw_`p9c2 0poar / Tru~e7 y@RB.P[6pi`if3|=fp' 281 76FԚinlinä!25_ A?UTOSIG_PPTAG renamed to AN_BY_AGENT etc '  formerly, this was just usztemp storage wiHn frmSelectFromListVof v05,   on exit sets the full l= pasmYPublic gs UCaptiYAs St@ring 'Yb yO,turns c(be|@e >) 0 =- 0k,Not-",is NLOTed0bCDMadeABooleanD.G@_ true H if aAUmA(false" @escJmartTextN3Awdate]ShowCalendar in m/d/yj-ac@,ber calculaz@fe Bield'Aatteg "m, dd y y"$>o "": cloouUa HpD3 Func% Getß(ByVal E8, O XM LFileK =@ "SRSF@Ds.xml")i X u'2@eloadsnfrreposi`w,$like pUser hor#;` !- {Easc and)SpignakDvalue T~!@ whichpn< shou9?specifi9group tags -- x eg e @K g_ RF1(RF2A3Myc,@TmyBY`DY!atSt@QcDr Wd$ Ea[ E@=Ifc`'I`og Sl= Nxew & !+.$ehfLb'/ aU~saQ @ႃ /On Error GoTo errlabH Q?e@ #didn'@t work"somAaso8 &@l"@By_!s~(#D0ZfI.1T :$3?<" &t*K& ">2not und$ $ Sub wTimes( ' Presentb@(rLbF baAZ~1curu93sL3, 46[fq(O'V4 = 5(Now, 12,0 13)!2' 5 miinterP%Y1 hr  ta rafst( #8:00 A M#P0, 41)0}1om 8am=6pmSiS' Vwa. [@Y P oE0XlP f.#SqleIc'= f.Display( (B <>xQK App~L`B""8$#xE%UwшQz, MinuptesIger, _ "MysBvA?1(zAZ,pipe-separ0d-s sa0chopbs ' EU@b.q!27 am#,L5,p(a(reS"7:25|7:30q...|9:A_32>n$iS'x1e9example above-62)g |nd@9B'00our0 ago3V= :((CN) /) */-$5W!* 6C'~Э$= $Adpd("n) @t "$qS 0@! i@Y1 Pd +&+ 1c!4N4C}@Z|PR @O1&qrat(P4,@ "h:mm`%/xpm">+G !N` %y = @eCaF!Defau8lt(l9P~re1(N  ~ 6nExce~lp< z<5>/Uq`nadZ abq#Dӝ?t$DT-tionGet("List" & ApplicaTargetSuffix) #Else  Dim sTemp As String 0ff*FormFieldfSet 4= Current@9IfIs NothO Then Exit Func bw=-.TextInput.D@efaultk' v04.13 check fo@r loadVthe l from xml*?,Like ""@7t(Mid( , 2 , Len) - 2)fqyM =7nd If e@rrlab:bE { Private Sub zUnprotectShortc4ut(Ӂ+' s allows F8 to runm fI macros wXAD@Hm is4 uEem.ScreenUpdng@4FaBC3A#RExcelwBP7 A4 ACustomiz£Cont@{!WordDoxcum }6.00GKeyBins.Add Code:@=BuildD(wAF8), _H bgory:=B CMUCommand:="RunEntry "GG=,3,& NewSmartAi4PN#TX#ETru AY]Z!Yv06Aytests [at aWVPpres@(g) <> "") breZe @,~c`if'ly r if d[`g q-oEpo1^H'qmVBA w_ow appearwill phide)PNtyRead(CP_HIDE)E8H Sp AK:2PgPpHx-useositopries@mfigurem.ATypeuT_R OMlKRout edInit@ializeF f  p s@1 chStZA;; 0'pso seZ37fullsYp#?A1eHerValues ,skipPee facility u!~f40.)VSel "Home}c4+s@'AUTOOPE`NSUB)}' "H`"q+.qd(X' e.g. "My%u ASdelayT!"eceivyf?d'h.OnTime w + Ser,(0, !.5P"E 5Z#xmhooseSignat@7Im `:dcecu^UIn hfhKshouldcass /c"%HUName*ɓs 1th@pI5inserP=gr c0pqJBdCS' Feb 22,p2011% !Pfir0cSoft5@mBosy, spurious1canUgenerbfop?Azb s1ed  pYcase,C@\ZrePn0Cs=_(""$!21vC!I2" ?T{CGZOpqs %*CdF0Nrp[w@er`nageR1* $O (By)0N iV sIn tegerDiZsPzyQpal{lowing the user to choose a signatory fodm 'Lure numb|iSf"s RDim UAs clsDetailBsMsg Str, sP`romptLWith ConfigcForm.q(|){eQ= .PopupCaption' v06.04!IfK= "@" ThenC p")' de`fault!$Sdet= (Q, .Manual List @Sorted Tags, _1j.IntJpg, False8,XMLfile) ' Feb 15, 2011 requiuSRSID if ijpgG@GNo5Is }hA I#DV0>eckPassword movedŸlstw2P,D>End IfCAGSub Public 0FuncmByVal sH/d3nAbTypeGEt bCBoole|an AnO"f`bRcDCD@D =L on Mh !"h\ )AM ' Display@pa"A aEŢ n which iseturnWasK .! Reb jA Dcl d wout makag eleNL<>"", it grridesstajb ^cÝAM&sb s ta@~' EC` all!spipe-separa l ofbe mergedAh Beg "Doca@|PA"!L !true, only sB'4a3(typicCFs' BM1 recipient M supplia loadE>f4`?teadA%$e'!!Usage=7Bs̡ECUSER_SHORTNAMES)&l $,*`#>A ?g("SM R5+=,,T@'/)8<8tHIGNATURES,%L, ' /w d'<>PL R@IDcEFqaENewU!GffrmS"7F ;nq\OrFilterByza'KeySDxAutoOpenCompletreEx@Blrd0on'tbBdu C] = I8If(gD@$, S%BYW&[e%S z iN6<>.ebm %s'af.= gE@L6o?' aAr[d#SW.v=ILIDo$2NL I] %Jgf.F=# fixOJun0sgf.C0SnleItem_A?ISmifArr 2PfJ.}(U.PjSj8(!Q4O07UB7QP a.GetBySN( 1'E -*/+pASsA' FSub Custom%E( ' *rcizpmhP execudafP ",s P`mMrs.x ml" hbe `oNPusuccessfully Cskip sM,xcodeQpede Byaum~pЎ@prot0unl# ;"Unt" ApertypxresscnDeVitPaA!`_3Excel bdoptA 1caScrollArea o ' Restricts user view to Range "AccessibleArea" ApplicationHideErrorChecking ' suppr| green mark in unlocked cells with formulae etcd' 14-Apr-2011@ this done oncly hereXstead ofcNewReplaceDemographics and ParseXML0(*zHspeKup4e start'Ns consoles).Sc1pUpd= `False' v6.20 FrPment m ov<ACustomAutoOpenComplet%Loadk &' alw`ays lo rd2get 0currA}IDO^if a rout&@, cy9FatH]T sharedIDC:@If Get&("id") = "" ThenC *sMsgNo SD (orD Ct#){availa pZ@/." & vbCrLf_B& "Ck OKexi/ !Box #,Excl4amo+H}QuitE@If@@ConfigPureF.Type <> F0T_OMB@& 1@06.@T_MEMORY O?B ROUTING R&CapALy(True) the B c (loWvers {\f #`gCX o 1 `JmlodF} G`Sc luded(DocuA\Is y? (@00 ref h!Fnow fromU butt9# ' In !@peds,@flergiesbF,Pa Kfi`a\FShe_ata.xmlK)i#VitsaMhPERSONID@h" k' eg "97\9783gBsamrs.cd% C X...` 'ƪ S$ $ ,wR ' write ti lin0sle W fielD&TwSkUA'\ :a@-/signatt/@n`"ESRS# anToNn yYAIlat@becaીisn't s pye'logic rn b@!`fFurequi\: i`F1 To +S%sCoun$ #xNot(i).edAl0uy 86extensive`as1S QlqU@ ator.y0 $ (JIs p h)B+qo;Q,, P`[[W[12S&ll-}osiDOaTRuaoa1W1O{Q`{-ieR--40*t * 1?=a#3v =N@! iCS'zMyOwnInitializt)' 4 privqsubb s npbgdsSptTR9= PropertyR+(""Cm' UncomeedoPh;@pah <(bGdoУonly^' `"?j'{(:CP_REF_D}GRAPHICS)"\Aekmay np9w ork  A8ddH zUnprotectShortcutLis>/-P[Inpua0yx2^C5' 2-Mamofuncs ^_pĐ 0Ƴ? ? `'v2OnTime!Iw + SeBr.(0, !.5), "4E&² R6sgg!S,ub!` XIn#(ByVal sHdrBkmk As S`ngL, ueyO"@Re3lp 7p,(P8 a val@a book:rAmD6q~r%x('@!a cidͣ3NB,> 6C (5shown!&ctrl/G 3' 䢦 lñY@elj#WD im sCCLo? On s T ]1Home"!'0afh@!unӠ4finpur/rent location sCurL = DFormField.NameIf Err.Number <> 0 Then(ClearLO"or GoTo errlab 6AppliUnprotectWordzDocum.Bookmarks(sHdrBkmk).Sel6 .Type Text :=`sValu[' d tes the b) so recrea0te iH-MoveLeft Unit:=wdCharacter@, Coun Len(9), Extendm .Add o, a o o e line abp}et2B ,  hSre?eQ' ]%m`%n%Icl7%5&}   O5r3O-_`asOfm Myt"OMyC`zq-:F/q aeCa"p(By@ bha cywillp app0n3t itleb^of/V0 6onbyaskux!\Krt vers ( =fa )Vd'too*l'}rin MFRFH г caRі OMDim sGetDemograp1("lo`& #" & f$@-oe, J|ohˀr?(:"UpGaS - ss' FAST0D q)  s({/71{mpasƱreUboa d: EqҢ (I viYa s chP\n D, da tZfA"  5 A2 , 8f?ڠ(q" d@ummy cv7'5NB,ha2h 2*s ApM)%*77?gBOpen.7i"' h:ns  ,("P&= Zc`fnAebePT' UOrror GoTo errlab2  ' (to be safe)=' force an@Keuif SjCinled prematurely (see comment abov+sTemp = ApplicationGet("";1 field"ntains a recognizable date",this th efault_NBs like "Thursday, October 14, 2010"convHertiusCD5(so to @'sB wil@l appewf sKre used.C bResume NexD(~CD<> ""f.CurrNJ( Ix1gsf.Display(DFE_SHORT)ʀ'Prt2{@p' v06.04?C)H)J' m>r closedA,wrinLetA, EndODC C1:MsgBox "Invali*d4" 2 AFunc Satory(ByVal i[s As Integer)aclsUserdDeUls ' check w4heSrW nxeed"mZLa /alagieJ`thoutIooP[!DA'@à_@usuá bal WaR_W oV BcN SRSWrcC'`rom"A Form tonbF0tNc?&InBwhi`\a KMan8=Fp7e0a@>I?Bn. aS Or .H@aP@".AUTOSIGN_CUR_>_USER _ABY_AGE$NT .HARTBINDOCo S_4s NeCVQ+os.RequD ID0.HJpg756#?OOs.!5LoadTag _9N_oQ+ u !cM@J.paBy"(Demogra2p0Z("4?!ID|")t9 ` Is ha   P9%mHrA8n (pp) someone else)qT=@O)?Q+;$X' lQ%&XPd g@1H  %[=j??nt? qh6$ +r+r+X.Agг f?+^W=E$Do esX9haredID9tBinDo r9 k#Y rEo' 30CaFit(Tar2Rang' (Excel only!'Adj6height Wf`wPp Pt 8 merged cells. '0 This can't be done with a simple AutoFit which only works f@or tex2rHappina SINGLE .ethod lto copy the?mngmhidden7k#same row\nd us;hat ; c $esizeo=routine:%) Creat#quirha FR F aBset as wtop aligned/Give "uffix/nl,ofrbm1,A2 etc%Onright," isid]act3X, Ocolum oTwidzsABEB=E98,[8~oiDvQpAlso& "fXontMm@ SWtmula =1~ JHE D?oNO Call@ Checkżf rom WAheet_SeleXonChangeC #If ExBFormStatic rngAExpSpAs RB' s preservee objcweeA(sE'@@perMsE iÕPREVIOUS.yd w@V2MNDotIs hing. K6+=e C'xr ENThERSRr"Vup;dUa@!{Fy exitc Applic@-onTa@t(, "$", True)'!LCMC.Ent`RŎE}If# >D !Sub! "  In8tSature(UE `>clsADetails,  Configu.r"aeType, ByVa8l b&Boolean)*e4wiYign Wments ino yOndard lo#)MaB6dbxinl $Dim`New fsMsg' v06.L00@`#rmC#m essagmov -- now!by cberWA >.2= '.K2=4H=2 w'U, @1v`d,'48c8ed_!N>OCFList((C*A#' pop 7aRVmlqfie4ldulDpap+ 5"o*Display frm `aRt2}he{rpntK&Rl @`tiitemM*InZc|a ll0runE `U2e`iC  shouPbpipe-seefDefaul t proZty~ Ea d, 6 sd bR61g"+ 1"qaE 2Vu ƌ"|$"Q$Cz   termi@@Ac"~"D k iA_d3"/FHI"rLcapti~includ)MrtEfollow,">+EG "Chooa Number>|two|three"U>#Fse n,ge@esops d.s006comma}/StrP 4@load 24.xml e:gEsTd @"Probl5"׆ Qf@d-A1nt)"<eqas* pa# ?SWRLShow(Curr,6FAT5)sc16 me'bĸRe Hce(6|ALp SZ<> "" :L"PvYSub k9CrXW XW*Fw4H DHnd' ( 4 s2SMr ͯ "vbCrd Q>R 6b2+q tta`-sv eZfhtYic 020071VMdocuAaF8sayqFbwoAQhelp butdoe:#bS]enRZ#FunƬ#/Ss63, _ c0_OpBtional ByVPsPreSelectList As String = ""@, _ O p nedIt@emLimiI@nteger0.HeightSpcale = 1.IWidth%H)y v' V06.16 ssupplied as a p@arametg(generally obtain usCurrentFieldDefault)-0this will display-form and return the vs̀,i?Aipe-seDt l܌.see 8FroĀ. m@ore de*l"sL if 9,  @*= of %to be pr%ednr, nc@cha(nger@G@lAF(edg 1lo=sU =1.5 -- mak* usu@(Globals updaU: gsTCaBǢ',igicDbee >(v“+8( afs@ppW~( NNdot' FkN OTJe^Dim XiGT fbNew frmEIf AutoOpenComplc Then ExFunc(don't sho ]due ' R>irW\> `P*| rsumePa D#"o@rwiseAB @gt!Ka##OX@ In(s, ">"7> 0 At|")`= F= Leftc - 1 f.K=;$ BMid) +& EfBendth "~འ 3m&!y R 1) b=Ca#)Len) !Elsef.LS[leac4WifA  ' v05 ]@=!AAmopertie$ .= g' = H`EIGHT% * .(b!! KsSj= f.D$/ "Qor$KsFvailabl`' NB,?TeFs)Vso =mLovaW;stTmp0#A? B1Public Sub AddHeader( 2&'qJsNx ' e""Papnt !: " & vbTabpGetDemographic("l!<& @0 fvbCrqVcDOB_Y2/2 Chart#_YS0(DaIiSetIP&Q "Hdr |q`LHome" o_!P8Dtoday|")5 WWX~ xMEhP,( 0@" ""28" <  @BDFD t `%8 LHH@p @l  nFJLHHJL@ \ @ L @< (@, @( H NPRTVXZ \^`bdfhj lnp8 P .0@ l [Ƀ@ \ @h L Ah @H x@8 @( P ``TOV$*\Rffff*0q56cb4f54$*\Rffff*0r56cb4f54$*\Rffff*0s56cb4f54(*\Rffff*0s56cb4f54\0*\R0*#2$*\Rffff*0e56cb4f54$*\Rffff*0p56cb4f54$*\Rffff*0t56cb4f56*\R1*#c0*\R1*#c1*\R1*#17b*\R0*#13$*\Rffff*0h56cb4f54$*\Rffff*0g56cb4f54$*\Rffff*0c56cb4f54(*\Rffff*0e56cb4f54\5$*\Rffff*0f56cb4f54$*\Rffff*0i56cb4f54C " D0 "x h " `0 N " J "X 2  " V (@ h "p D " @ @H &   *   >0 Bp D F >H L L @( ,h J T b@ < ^ 8H ` Z 0@ @p 2 < ( JH 4  :   " ( 0 H8  8  F   R(  4< R      8@  HP  X B` D*   D8 B      * 8 h.              (  0 P8 P T,0$`    ,$     (0  8@  HP  X2 `             "   ( $0 X"p  "  H  \ 8h        8" @ H DX 4  * 80  "h, 80H tx   "  D <X  T R "P x P P  @ TH T P (H px : 6 ( H X p $  B   6( 0`    ,   0 @ P`Bh   8 8 `@      X!h!p!  Dx! J!" H0"x"  D"j"8# ,X# #  #  ># # # # " # `# @DX$ $$ @$ 6$  4(%.`% % %B % H% @% 0& H8& & L& & && & &('(',0'`' h'  Xp'  '  R' .0( `("p(( (( (  ( <( P) `) h) ) ) ) " ) ) @) * *,*@*.H*x* ,* * "* >* +  + (+2 8+p+2 x+ F+ 8+ 0, R8, , , * ,  , ,"- - (-8- P-X- h-p- -- - -" - - -( - -@T-0.8. @. H.X.  0`. . . .x *** v06.21 ***************r case> dummy code for appending DateOfService to routing information *** v06.19 ***************a Jul 17,2012 zSignFormClicked gets confirmation if switching to inline due to missing bookmarks *** v06.12 ***************Y Mar 7,2012 Support for for all-use repositories (which support RF, MF and ROM forms)G requires extra tests for ConfigureForm.FormType = FT_ROM *** v06.11 ***************D Feb 13,2012 zModifyROMOptions call to UpdateHeaderValues changedr-20 *** v06.10 ***************+ 1-Feb-2012 Calls RunDemographicFunctionsweb  *** v06.07 ***************P 13-Jan-2011 after Save, ROM forms re-route to update the Referral Aging Report" Save and print fixed *** v06.03 ***************= 22-Dec-2011 CheckBookmarks called when Protect is clicked  *** v06.00 *************** t: 19-Dec-2011 password checks moved to clsSignature.Insert: 15-Dec-2011 zSetSender simplified (should work the same) 5-Dec-2011 zRefreshData added e *** v05 ***************o # 13-Sep-2011 ShortCaptions removed *** v04 ***************8 14-Mar-2011 zProtectForm toggles ApplicationFullScreenad; 10-Mar-2011 zFaxForm recovers from printer errors (fixed)'= 10-Mar-2011 Removed confirmation when inserting inline sigs'@ 10-Mar-2011 CancelWithoutConfirm renamed ConfirmCancel (fixed)8 9-Mar-2011 CancelWithoutConfirm renamed ConfirmCancelF 3-Mar-2011 ApplicationFullScreen moved to CheckInkingAndShowToolbar'RE 3-Mar-2011 zFaxForm added, uses tab, fullscreen moved a9 1-Mar-2011 fix to confirm and position inline autosigs& 28-Feb-2011 supports inline autosigs(C 25-Feb-2011 CheckInkingAndShowToolbar replaces RoutingToolbarShow.N 24-Feb-2011 Cancel, Protect and Unprotect Logic moved from frmRoutingToolbar[ 21-Feb-2011 now saves to tab 1 for 'Save No Send' too (an earlier fix was lost)6 4-Jan-2011 'Fax' and 'Save & Fax' buttons supportedW 15-Dec-2010 mf becomes gfrmRoutingToolbar (global), RoutingToolbarSignForm customized1 10-Nov-2010 Form caption becomes "How to sign?"Y 4-Nov-2010 RoutingToolbarSignForm -- prevent inline insert in Excel and protected WordT 3-Nov-2010 * customize added, fix default to InlineInsertion, fix ChooseUser call* 1-Nov-2010 RoutingToolbarSignForm added9 28-Oct-2010 users only listed if they have an , 15-Oct-2010 ProtectUnprotectCaptions added5 15-Oct-2010 FormCaption has long and short versions 13-Oct-2010 TestTab fixC 12-Oct-2010 different routing for 'New' and "Already Saved" forms. 8-Oct-2010 Changed to support FormConfigure] 3 global in case they need to be accessed externally] 8] ``]B This Sub is called when a button is clicked on frmRoutingToolbar.2 nRoutingButton indicates which button was clicked@ These actions can be customized eg to display a form and obtain the recipient IDK *Customize for non-standard routing which can't be set in clsConfigureForm , P!G P!9"jQ Feb 21, 2011L .DateOfService = ApplicationGet("DateOfService") ' if appending DOS 6  Routing buttons >KTA@@ BKTA@D FKT; The DocWasSaved property is created so that it can be used= in memory forms too. This will just update it when re-saving DYesA@nA@F- save back to current location> after Save, (which is needed to update the form in the chart)< ROM forms must re-route to update the Referral Aging Report J!8 LB v06.129bC@BdA@Hk HKTA@@ DYesA@nor if A@F- save back to current location J!8 LB v06.12ur9b-! v06.06 re-route to update the OM rC@Bd8A@Hk( JKT9bC@B LKTA@@9bC@B NKTA@D9bC@B PKTJ if is defined in XML, this over-rides the default (for testing)I if user is choosing recipient, display form etc and exit if user cancelsM (if recipient is taken from the property, zSetRecipient always returns vbOK)trol R G|j@ exit if none chosenA@T@ set sender ID if neededKT9bC@B VKTA@@ R G|j@ exit if none chosenA@T@ set sender ID if neededortn9bC@B  Other buttons XKTA@Z \KTA@^ `KTA@b dKTA@f6# v06.00 fix bookmarks without msg'sis imnA@h jKTA@h lKTA@n pKT.:h 2 :B@$0n q o  Cancel button clicked key]( r$3 9-Mar-2011key Abandon Changes'  t v $ G|j -- dok` A@HoP @B printer associated with the fax is held in SRSFormsParameters.xmlU NB, setting Application.ActivePrinter in Word changes the Default printer for the PCA@2 In Excel it applies to the current document only.] !z'x!L@ P! (zA@@ x (z|  Fax printer errorA@ xG x (zj o  v06.00= demographics etc are replaced by clicking the Refresh button l. -- provided the corresponding property is set can] |$GA@j ~$GA@jL v06.103 s %) set to 1 if modParseXML etc are included Insert meds, allergies etche str $eg "PE Xfilesdata\FaceSheetData.xmlA@ld tk  insert VitalsL $tch PERSONID$v.xml'F; eg "97\9783.xml" P!Z FA@; eg "...\97\9783.xml"m ParseXML ApplicationPath & "filesdata\FaceSheetData.xml" ,vbCR ' write multiple lines to single Word fieldko> This is used to insert signatures in an unprotected Word form 5 where macros cannot be run by clicking a form field.7 rM If more than one sig is configured for manual insertion, the user must firstalueL choose which signature to insert eg the "Doctor Sig" or the "Nurse Sig" andwe are then which user is to sign.J If the sig has been configured as Inline, the sig will be inserted at theI current cursor position or at the end of the doc (based on the parameter "InlineSigsAtEndOfDoc").M If the sig is not configured as inline, it will be inserted at the bookmarks`N provided all the required bookmarks are present. If any are missing, the userJ is asked to confirm that the sig should be inserted at the current cursor" position or at the end of the doc]0]H]h]]]] J5b 5' if more than one sig has a Descriptionurns N.5% ... the user chooses which to insert Choose where to sign (@ B@urns N5` %'j = "" jG|jddp5`'j8 load the single entry5 rk@ j7h'onq(< we've decided which signature it is -- now decide who it isC T / is manual, prompt user to choose who will sign o* sig should be Auto or manual but not both5555\5$. d@'5$\. k % if a user was chosen, insert the sigers e .fcan be  f/  t  f(only f!A O5r$Click OK to re-sign the document as   !f'K  t$ G|jurnTk(d  (bookmarks not found)2 can't do inline insert in Excel or protected Word Signature bookmarks not found.  Unable to insert the signature.' A@|H e Signature bookmarks not found.  $To position the signature manually,  !unprotect the form and try again.' A@|k= v06.19 correct warning issued if bookmarks have been deletedD may position insert point to end of document before inserting a sig $GA@jB v06.19 for unprotected word, allow inline after user confirmation5> special warning that the user may have deleted some bookmarksSignature bookmarks not found. /To insert the signature at the cursor, click OK'  t$ G|j f(D forces ouput of separatorskpkh  fB@/* insert required elements of the signaturek qoZCreate an instance of the Modify Options form, display it and update the ROM header values &"5 v06.12 only routed OM will get here -- so this is ok]8]XOrderReferToFacilityID$'= v06.11 save facility B@*% (form updates the custom properties)- v06.11 -- see UpdateHeaderValues for commentOrderReferToFacilityID$ A@ho`pB determine the messaging options for the current routing operation: (which can be different for New and 'Aleady Saved' forms)B if choosing one or multiple recipients, display appropriate form.F return vbOK if recipient(s) is/are chosen or vbCancel if user cancels]] 'R  J!z'? options for New formsd J!|'? options for Saaved formsk RIf .Recipients = MSGRECIP_FROM_PROPERTY Then ' there's nothing to do in this case5  L display shortnames or signatures of the required user groups and choose oneChoose Recipient5 5$.  No recipient chosen A@ 'RdX !> ,(^k@5 e 6 display required users and select multiple recipients I If OK is clicked, the form sets these directly into gRouting.RecipientID]5 5 %'Rkxqpih Set SenderID if required: (which can be different for New and 'Aleady Saved' forms)]X  J!z!'Q options for New formsd J!|!'Q options for Saved formsk GCurrentUserName$v ,(TjoHp7 Show a toolbar-like UserForm with the required buttons *customize.. .!A@3# True to force into Protected statekA@3# do this before positioning toolbar? If we are supporting inking (CheckInking property present) and1 this is a tablet PC then Unprotect the document.K Optionally, set FullScreen off to give better access to the inking toolbar or Ribbon in Office..,2 to access routing actions.0 0SRS - $V9@ J!8  J!tC@d routing form  J!xC@d J!vC@kxkpqho`  .B@A@+ If Excel, set fullscreenA@ ?$ ApplicationActivate B@dA@A@ .B@k) hides this button and displays the other 0B@oXPAttribute VB_Name = "customToolbarShow" Option Explicit ' *** v06.21:dummy code for appending DateOfService to ro$utin(mai `19`Jul 17,2012 zSign FormCke@d gets~nfirS if switchlwinline dBuBmiss bookmarksA2AMar A Supportwzll-use repositories (w@hich sRF, MF an d ROMms)jrequirextra0 tesoCoqgure~.TypFT_(bFeb 13ER zModify}QallAjUpdoHead@erValu#c@hanged0QK 1-@-lCs RunDe@mograpEFuncA^'A@ 0713-Jan1 after Save,Q]-wu. the Referral AgA|R@gr'K\!eprinuix 9 &3&22-Dec& CheckBE c>when Protect iX =TQ9pass@word cs0 movclsat.In$se815zSetSr'sim {fi(shoPuld k%s_R(QhyaP addl#546S ep# rtCas 5B' 4r4-ndz(^Sggl RApˆFullScre$en 10IFa"xrec&rs from b="Co`(f>vRV!-coB:iGb-JċsigY CancelWit`-t"xrm` n@-d c H| 9_` a :3HA1$gGVInkAnd! &z(@, `s <PAfer> @tab, f0s0 1,)na(aut 9C)28 s 5/pla:c@GR#hA24B*,FwUnpyLogic$)Ixfrm  <T@Tab> now s sa!' 1'No au'`o (an earli Ua'was lostt4'1'* & `tons ; A0 Pmf b1mPgN (globa\l)V+Dx Ciz0-NovA;R7c?6"HpK2n?X48U--;eveY7 6$MWR0* L+ix defaultIST )ChooseUU"]b1/ $% ťR @,Oct43Fonly list jy h!P 4PF(6U$q#ngbp_verfs0#K3-gd* &"2ua!'New'"Alr@yzd"CQ 8XCt) 1Pubr g! AssgC)! caRne %be ac>sex nxy eSOTo0NA1 0Sub d BuFtp7"(By nEnum`=Dim fspttp aST ' ThQxa ?툆 ༾ . ics #DGc勂ThemaC`2n>6d egdisWy ar!(obt "".9`]ID03_ 'B 21, P1+b# .{= AX{Get(""6)sP'OSx SelC1Ca'5,D$Aa12RT_PRINTFORM8 "FAX@ SAVE2e DocWasud`dop0Ny2J!Xsoa"t+`ZWn mry,{o.8wij*2 it3!re>-~ ]Write CP_D OCWAS D, "YesrM 'r bacBk7curr4l ocation ' after Save, (which is needed to update the form inchart)ROM)s must re-rouA KReferral Aging ReportNIf Conf@igureF~.Type = FT_kThen' v06.12%.SendC!alseRSYKAcsEAAppliQuiiEnd If) Case RT_SAVEPRINT j9Prin:PropertyWribCP_DOCWASD, "Yxes"A' s backcurrent l(?w$wÄd06OM?.ᣁK }NOSENDO(=M[M e7 O!FAX!zFax{?/2' if def in`XML,@over-r0ides`ault ( tg us@@c0hoosZcipio, displayetc aexitcancel' ( red !takfrompĈ, zSetR&alwaysturns pvbOKp}=U C ES$ub-' none sea `"48 et @ d ID"[GTruY [!Imm* (  d)9a K' Or button-MODIFY0OPTIONS zModify1p&IGN_FORdQ2ignICkPQ fs ttext@New frm:S!T .D[.uASel0SQW5Rub CvQU(Zs'0ma3 c%*Dim sMsgSG Read(CO NFIRMC) <> ""S] ' 9-Mar-201( H"Abjon(ang* BoxZ(,fc+Q"uson)Pvb*eSaA _iip0dassocid 0rfaxsheld!SRS/sParameAs.xml'!d NB,`itt}x .Qve_@WordpBxDefƒ 2PCIn Ex` _a1ao docum1only.S" !5As St@!s= SO rror GoTo la*G = g}Fax#p#)  # :( " eor+J1__n0" ( "<H_ )00 Ʒ ' demographics etc are replaced by clicking the Refresh button -- pr0ovidbJcorJpondn4perty is0 seth Dim sVitals If Pro4Read(CP_REF_DEMOGRAPHICS) <> "" Then NetwRDQKFUNCTION $Run Func tionsv06.10 #*arseXM.L@'v to 1 if modPinc lu }' Ins meds, allergiehACESHxEETL>AppakPath & "filesdata\F}SheetD@ .xml"CEn0d If>' i(InYVITAL Y$D~ = G@Gn("PERSONID")'" ' eg "97\9783(A8gFormsameter|s.);E ...' M@ ,vbCR' write multiple linssWord fie|ldZ'^ASubAaPriva zSignA,`)Despcrip!3CCXª As eCSTypegffrmSelnFromLiE[ FU`AclsADetaie CG sMsgbAutoBoo8lea4|FQWi@a qEC`<.0XCou@+>0nx?A5Pbao]?2a sUSe`>a } Eq' `[%:}@s;P;s6 1f.Ca"CCMd>nSZItemsP f.Disy(Yq%Ex 7^%Els/$Ot' ploadtg 1ry e!~ U S-= ?up(\?D$Sde've c[`>qnowDPktb#) S ' sd,Hmpt B"PVcoMC(00ig DA3 XiP oothQ1~MkA0,<= '("", .3S!/tSoFr yTag0.qJpg%!?=p Tru $ Aor+cKNumbe~r`hy"A'B?a wPpsen,4Y'dINotD ("Is h6)Rc!  7qB@R&.B= al.-/*{ Loc2Valid Q 5A4nedAWdyo[ "R OKore-*b0umamP"PrLfq  `bBox(, vbOKCancel)0b /IUCq)Q'p4fdd%A't#%$in a9KAIsExO:E5FǍ .8f _E "UnabGci0c,.lg Q A $J sMsg = "Signature bookmarks not found." & vbCrLf_ & "To position the smanually, VMunprotectKform and try again."aBox  Exit Sub2E/If ' v06.19 corrKwarning issu ed ifhaveen de leted'mayinsertinyo eFof docume bee  ;a+If Prop%yRead(CP_INLSIGS_ATEND) <> "" Th'ApplicalGoto@ FA@# h?word, @yow)line after u5LnfirmB,Not .In IBBA(O OA' special ethaB [Bed som?ʟy *cursor, cepk OKKC(',OKCancel)@Cx]&&2= TXrue!i'`rces ouput Vseparators3 io +kbAuto 'j requirXumfk i!With  aPrivate zModifyROMOpos()AHCreanto9*AF D.m, displ`Aupd hpvalue1#HRouyOMEe}2 only r will get @--h$is ok# ! Dim f As New frmsFacility'\ʛ"OrderReferTo%0ID")D1 sf f.Dd(#q' ( m +sBCcustom ies 8eGa%ee Uu3H2V28 mN(_B &{4 s#('n))Func( zSe$tRTpig()VBA.VbGResult*@n ^m1_Q'messag1jo-Nrl$e`B^ @which c/be-fpf#!$-'Aly SPdGm'uxchoЈyohor m iplRe>cir s3apQri3q.renV~#(s)//a0s uXPoYo74 1Ur 2clsDetai6lM@Co tgPVTypeS`OKP?rDDIs1[v= F.A=2<' aT El>s$ a Al9PdySa{%mEۛ1X W91'.6.sMSGRECIP_FpS_PRO@PERTY  D '!?re'Bhy+toЙZOc>a5!CHOOSE_ONE'2 ]shortna5 &fjk'g6psb0eP\> '`2e("Cb v", GL0ist,Ta~g4sxP`I``ot;'A1E "NoG: s5pvbInA%O/3(@gqp0ID!Q .SRSM9l&EAMORE_THAN_  'e~CsP/N1% Pp OK0KCe0CYq setmsOW!΀o ID J~5mw(&&ntq&%m1Qusnql1Ser8~ 3S!]e3' (knҏkK ca`.cludFe`_Boo@onCS\aQludeSenderID = ConfigureForm.MessagingNew.Inc ' options for Xms DEls6eb sAlreadySav"L*LL " LPL) izedA% `!  ` 4Ei(i xpH%x %b4@b8@jF CjHHCjpCjJCjLCjNCjP CjV8 Cj>` CjB CjX Cj\ Cjj Cjd( Cj`P Cjlx Cjp Cj CjC HpH x H H  H` HP ( 8 H`H(20jF CjH Cj CjJ CjL( CjNP CjPx CjV Cj> CjB CjX Cj\@ Cjjh Cjd Cj`CjlCjpCj0CjC H ` @H Hh0x P H H(  H `HjFCjHCjCjJCjL@CjNhCjPCjVCj>CjB CjX0 Cj\ C(% jj Cjd Cj`Cjl CjpHCjpCjC0Hx HHHphHH@H`HjFCjHCj0CjJXCjLCjNCjPCjVCj> CjBH CjXp Cj\ C`jj Cjd Cj`Cjl@CjphCjCjCpH0@hHHHH HHX`HjFCjH(CjPCjJxCjLCjNCjPCjVCj>@CjBh CjX Cj\ Cjj Cjd Cj`0CjlxCx@`rjpCjCjCX @t @p xHP(xHhHH@H0Hx`HXX.@x @v @@l @\ @@ L p"e0p(X@X < @, (!!X!p!@@!x @t @r an! Gothi @` dX""""p"@"@x rktp`an@"p @"`  @P @L @<  #j4c Heav`HHHx8  8G8TOV(*\Rffff*0e56cb4f54\5*\R5*#5d$*\Rffff*0e56cb4f54$*\Rffff*0s56cb4f54(*\Rffff*0s56cb4f54\0*\R1*#c0*\R1*#17c*\R1*#c1*\R1*#17b*\R5*#42$*\Rffff*0h56cb4f54$*\Rffff*0r56cb4f54$*\Rffff*0p56cb4f54*\G{AC2DE821-36A2-11CF-8053-00AA006009FA}#2.0#0#C:\Windows\SysWOW64\FM20.DLL\2#Microsoft Forms 2.0 Object Library*#42*\R5*#42@DHLPTX\`dhlptx|>L " J0 ^ " 4 .@ *p 0  < @0 p 6 \ >( Rh < ^ P` D ^ &X  N D * *P : Z (08@HPX`hp x $$ "   2   X@ `  L  $ \  ( ( ( ( ( ( ( ( (  " (@ (P (`  .p ( ( (   J D Rh    $     "( 0 8 $@ "FX   " N  0 H ` ,x .       ( @`&   "   J J J`  L "  <06p  V./ 8 )@  P p  "  0    2 ( 0 " 8 @P " X `p" x "     "     "     "     "    0 " 8  @ P " X  ` p " x .  "     "     "      " (  0 @ " H  P ` " h  p  "    "   L   0x *** v06.18 *************** 1D Jul 6, 2012 BDF1 etc captions no longer set in zSetCaptions becauseW static captions should be customized in CheckInkingAndShowToolbarls *** v06.00 ***************- 19-Dec-2011 RefreshData displayed correctly( 12-Dec-2011 RefreshData toolbar button$ 5-Dec-2011 Protect button Tooltip%* 2-Dec-2011 changes to support Routed OM *** v05 ***************5 13-Sep-2011 ShortCaptions removed, comments reduced9 8-Aug-2011 user-definable buttons added for Repository *** v04 ***************0 3-Mar-2011 ShowFinalButtons parameter renamedV 2-Mar-2011 Position tweaked left because "Keyboard" caption is longer than "Inking"7 24-Feb-2011 Buttons renamed and caption logic changedL 24-Feb-2011 Cancel, Protect and Unprotect logic moved to customToolbarShow6 4-Jan-2011 'Fax' and 'Save & Fax' buttons supportedX 15-Dec-2010 ShowFinalButtons made public (for callers who change the protection state)anI 19-Nov-2010 CancelWithoutConfirm support added (mainly for Sales demos)> *************************************************************and W For routing forms, the behaviour of the buttons depends on whether the document is newvb (never saved) or being edited.ioH Note that the CAPTIONS of the send buttons are changed in zSetCaptions.l > *************************************************************' i]& used in positioning buttons]& used in positioning buttons+ l]&+ show Cancel button -- probably always true" onlS These are passed to RoutingToolbarButtonClick to indicate which button was clickedl HA@FA@HA@A@JA@LA@NA@PA@VA@>A@BA@X) ROM OptionA@\A@j& Inking/Unprotect button pooA@d& Keyboard/Protect buttonA@`A@lA@pA@A@`+ display the form with the required buttons'')1 this is where cmdProtect will go -- if displayedF set form captions depending on whether form is new or 'already saved'A@ display the required buttonsU (the order left to right is the same as the order of the calls to zShowOrHideButton) 5 A@5 A@5 A@5 A@5 A@5 A@5 A@5 A@5 A@v05 Custom Buttons added-ABS5 A@5 A@5 A@' these buttons always appear at the end5 A@5 A@5 A@D display Keyboard or Inking and Cancel and set the width of the form> NB, if Keyboard is displayed, Inking is hidden and vice versaL This affects the positioning of the Cancel button and the width of the form5'5A@q  positionand display the formA@ B@o 5 (55 ! ( (qxopG captions change if the document is being edited/has already been saved*User Defined Button Captions - ABS 6-20-11B v06.18 captions should be customized in CheckInkingAndShowToolbar Smart Text (@% cmdBDF2.Caption = "Silly Button"' cmdBDF3.Caption = "Autofit Button" .!Inking (@Keyboard (@k  Save As New (@Save As New & Print (@Save As New & Send (@Save As New, Send & Print (@kPoHHD Button icons don't display properly if the buttons are disabled so,D for Keyboard and Inking, only the enabled button will be displayed.D This is determined by the current protection state of the document.E Depending which is displayed, this affects the positioning of Cancel and the width of the form.5 this resets the mnLeft position for subsequent calls G 'j? save when first called 'O set Keyboard, Inking enabled or disabled depending on whether doc is protected   A@  A@k  A@ set the form width  (ox]0" tune the gap between buttons  ( (   (  !  'd ( k o H pA@4o  A@4o  A@4oh  lA@4oH H BA@4o(  XA@4o  >A@4o  dA@4o H `A@4o  FA@4o 'RoutingToolbarButtonClick RT_SAVENOSEND JA@4o8  NA@4o H LA@4o  HA@4o  PA@4o  VA@4o H \A@4ox  jA@4oX E don't allow the user to close the form using the X on the title bar  G'jo Attribute VB_Name = "frmRoutingToolbar" " Bas0{F3A12997-0E26-4D79-9F6E-60118C6C87ED}{6F 8367E@C6D-4789-B0CF-5F2FE1AD00AE} dGlobal!SpacoFalse CreatablPre declaIdTru BExpose0TemplateDerivCustomizDOption 0licit ' *** v06.18Jul 6, 2012 BDF1 etc ca$s no longer set in zSetCbeHcau' stati&should be c/7CheckInkAndShowā 000019-Dec-01 RefreshDh disRycorrectly<12 tÞ @ton 5 Protń A(tip IchaKs to support @!OM352`3-Sep2Ar!Zremo, commentsB @ucedB 80-Aug @dr-`defin3s add!forIitorCA 4$ 3-M$ar$wF@lBut@Hs par@t@ren@"B2 Positweakleft@F "Key@board"%N isNt) "B@u' 24-FebdE andflogN1B*Cancel, 9!Unp;cB-A8TQS-4-Jan'Fax''Save &^ .d@41I0 )made pub@w (4callers who J th@C}le)a`8Nova@ CWitmtConfi rmQ@(mainly Sales dLs` / B_5FLro#BA ms,Bbehaviour of$Idepends wherdocu]Bnew! (neFv`-d) be editeld. N@uatCAPTIOtNSs@ xbrCE훡 b")  Dim mnLa_As SN' @wds / jp  ~ig nForm+yIGN_FORMu/Unprotec+mUNPROTECk i /User]QueryClose(Cancel As Integer,  0Mode ' don't allow the u* to c'uf ĂX ontitlLe AIf= vb'ControlMenu Then D(= -1AfȆ |)S~xMEPSPSSS<@<<<.rm0{291D5DA3-2E45-4750-9898-FA7EDE236EB3}{09D3B6F9-C41E-43D7-9DCF-C0AAF0273E86}x b  b P" 0  is %B L0@ L****`  ,8//i Xgi ****@ 2, 2@ pre- Ai H  &&  @ ` f` hang  @ 6, 2@ istN,  i eleci  y)  @ i  sele@ ` ses  00@ S  `(i r ca` eg ,  i** ci - Se` lt c X8 i he C  @ P M@ spla    H  '')ous %ioduc@ L@ @  X% %jb b ( B X Lb b H(PX X 0 H`H(PX X 0 H` H(PX X 0 H`X H(PX X 0 H` H(PX X 0 H`  X )h TOVS @ BH  J  f "X D R 4  \X " T 8 ^X F h fh X d(  & T b & V  ^  ` ` X@ X 0 V @x * V .@ 4p 6    H P ` (x X P H X Xh \ P 4p @ F H0 x  N FD  @h R J ^P@8(B 0 B8  8  H  : X` 6h  Z :@ .P   B "H p    > >  \@  V "   6( ` :h  Z  Z Np Z  ( 0,@,p  " <  R0P   Z Z XH H  6   "( F0 Hx  B8H  NP *>2 2H  :  L  :0 p  &  0    " T  x  D    ( H  `  h x  "   " $ ! X! h!  x!! ! P! *!(" @" P"p"  x""" " " B " >" "# (# B 0# T8# # ## # ## # $"$ $ .$  H$  ,X$  4$ .$ D$ 8%@% 6X%% % %  2% &  &  & &(&8&@&,H& x& 4& &&&&&  & & ' ' " ' ' N ' p'x'' ' V''(  ( B (( 0( 8( H(P(`( x( (" ( T( ( ) ) ) () 8) "@) H) X) .x) ) )  ) ) )* * (* 8* H* P* "X* 2`* * * "* J* + + " +  + (+ $8+$`+ 2+++ ++ ++,  D,P,X, p, , ,,,B, :,8-@- X- h-x- --- - "-  - - -x9 Originally designed to select multiple items from a list< subsequently changed to select either multi or single items is C ********** NB, cmdOK button is hidden behind the list ************L_ Display a list box of items to select and return the selected item(s) in a concatenated string *** v06.22 *************** on > Nov 2, 2012 fix to allow pre-selection with single selectL Oct 25, 2012 gbSelectionMade added, Clear button displayed conditionally - Oct 9, 2012 Clear Selection button addedV Oct 5, 2012 if the form is closed from the title bar, returns the pre-select list  *** v05.01 ***************N Nov 7, 2011 fixed zListSelectionChange to prevent possible stack overflow' *** v05 ***************W Sep 6, 2011 gsSelectFromListNot correctly returns all items if form is just closed@ Aug 24, 2011 ctrl/A will select all items (multiselect only)b Aug 18, 2011 PreSelectList property indicates a list of items to pre-select (multiselect only)_ Display now uses "|" to separate returned items -- Separator parameter removedQ Aug 8, 2011 SelectedItemLimit property to limit the number of items selected] caller can increase the width eg ff.width=ff.width*2 and listbox will resize *** v04 Build 10*************** cN Jun 21, 2011 fix -- SelectSingleItem default caption is "Select from List"[ Jun 7, 2011 fix -- SelectSingleItem was setting the Caption back to "Make a Selection" *** v04 Build 8***************P May 12, 2011 In Display, the OK button is not moved if list is single-selectus *** v04 ***************W Mar 14, 2011 form is hidden before unloading (fix needed when inking in Excel 2007)Z 25-Feb-2011 removed spurious call to CustomAutoOpenComplete (introduced 14-Feb-2011?)Z 14-Feb-2011 Fixes to prevent spurious cmdOK when multi-select form is first displayedR 24-Jan-2011 Fixes to prevent spurious selections when form is first displayedQ Resize & reposition controls if caller increases the form height) sSeparator made optionalO 30-Dec-2010 Quick selection by unique initial letter in single item select9 30-Dec-2010 Enter works same as cmdOK in multiselect$ 16-Dec-2010 debug.print removedO 13-Dec-2010 improved for keyboard operation -- supports CR for single item' select and ESC to quit. 3-Nov-2010 single-click SelectSingleItem0 1-Nov-2010 SelectSingleItem property added sample codeAPublic gsSelectFromList As String ' See note below... Sub Mysub ()" Dim f As New frmSelectFromListR ' f.SelectSingleItem ' set this to return only one itemI s = f.Display("Tom|Dick|Harry", " ,") ' returns eg "Tom, Harry" Note ----R fixed length strings are persisted when form is unloaded but there is an (unkown)V length restriction -- 50 works, 100 doesn't -- so caller must provide a Public stringI Dim msSelected As String * 200 ' much neater but it won't work- properties to be used with multi-select only] (2 *** eg set to 5 to limit the selection to 5 items](7 if <> "", a pipe-separated list of items to pre-select](9 if msPreSelectList is 'one|two' this will be '|one|two|'] ](G for single select, this shows which items have a unique initial letter? eg in one|two|three, pressing "o" will select "one" and return]P,5 the key is the initial letter, item the whole string]zzz1230 ,' indicates initial letter is non-uniqueL spurious list change events have been seen when the user clicks into a WordD field which displays this form (so that a random value is returned)W this allows change events occurring too soon after the form is displayed to be ignored]X +1if timer > mrChangeEnableTime then ' valid change]?+ reject change events for 100ms] ; sSelectionList a list of items to display separated by "|"2 sSeparator to separate the returned items eg ", "A returns pre-select list (which may be "") if form is just closed4 set SelectSingleItem = true to select just one item]x]'(* assume user will esc or close form v06.22S If list change events occur too soon (<0.1 sec) after form is displayed, these are4 assumed to be spurious and the selection is cleared ' A@ '! position buttons and list v06.22 '|4 v06.22'~4 v06.22 |$'  $  B@\ $ A@ 4, if unique initial letter, add to mQuickKeys $ $ 8 v06.22 ~G ~|'~j ~ $ '~kP A@ +2 v05 if PreSelectList<>"", pre-select these items  B@+* show form and don't return until unloadedV gets here when OK button is clicked (multiselect) or item is selected (single select) or form is closedPDisplay = Trim(gsSelectFromList) ' Jul 26, 2011 allow spaces to be returned |'i / set list of items which are to be pre-selected4 add end delimiters eg 'one|two' becomes '|one|two|'T v06.22 msPreSelectList is the raw list, msPreSelectListClosed has pipes at each endS **********************************************************************************G NB, if mbSelectSingleItem, the preselect list should only have 1 item!S ********************************************************************************** ' '  $|G| ' j $|G |' jkXmP6 call this to change the list to single item selectionK if caller has not changed the caption (from multi select) show single item !@ GSelect from List (@j' T If list is set to single, pressing down arrow causes a selection change and unloadsS the form with the first list entry selected -- which is not the desired behaviour.R When the list is left as multiselect, the user can downarrow and then press spaceA to select. CR will also force the selection via the keyup event./listSelection.MultiSelect = fmMultiSelectSingleoH@ position buttons and list depending on the form options v06.22 ! (41 v05 support for caller increasing the form width < this doesn't always quite fill the interior -- not sure why ! (4" list fills the form. OK is hiddendG If the caller increases the form size (to show a long list), this will# resize and reposition the controls ! ! ! (J May 12, 2011 moved ! ! ! (M v06.22 ! (4 so that OK is visible4 if items are pre-selected, display the Clear button  E display 2 buttons with equal gaps to right and left and between them (  ! ! !  (N v06.22 ! ! (dh display cmdOK in center of form (  ! !  (= v06.22kkoM called when cmdOK is clicked or when user presses Enter in multi-select mode] 5 7 G |'jC v05 always use | as separator  7'd G |' j 7' k q '|5 items selected '~5 items not selectedA@o( pre-select items if requiredQ NB, if mbSelectSingleItem, this assumes that the preselect list has only 1 item!]Ph  5 J NB, this will trigger a selection change which calls zListSelectionChange# ... so the change is redone there 7$  ; G 9bjC v06.22k qpkh' oX8 return true if this list item is in the pre-select list| |' G' jiM called when cmdOK is clicked or when user presses Enter in multi-select mode]`x 5 7G   ' j q  ' i] $" ignore changes while preselecting ' 7 v5.01 to ignore recursive calls . this de-selects any spuriously selected items ( immediately after the form is displayed = 5-Aug-11 apparently, this only works with multi-select lists 5 / (take care not to undo the work of zPreSelect) 7$  ; q8' 6% v5.01 re-enable zListSelectionChanged 5b 5b7'|A@d  K v05 limit number of items  More than  items selected A@5b;k(k kkqkko]Hs $' - this is in case the item starts with a digit   B@|h `O replace with a special string showing that this char starts more than one item  B@   B@o`]s '  $ ' G ' j ixN when inking is started on 2007 Excel, unloading still leaves the form visible unless it is hidden first ' B@A@ A@roX v06.22 clear current selection( warn user if more than 3 items selected]  Clear selection'  t$ G|jk 5 ; qo+ concatenate the selected items into a listA@ oXC if single-item select, this returns as soon as a selection is madeA@ oH]] ignore spurious KeyUp events G|j3 14-Feb-2011 GA@j3 if ESC, unload form  $R A@ dA@ kk= if single item, check for selection by unique initial letter $ $ '  '|A@khd= multiselect    A$R= ctrl/A -- select all items =( provided number of items is not limited 5  ; qkxkpkho` !@' o@8͸Attribute VB_Name = "frmSelectFromList" " Bas0{291D5DA3-2E45-4750-9898-FA7EDE236EB3}{09D3B6F9-C41E-43D7-9DCF-C0AAF0273E86} dGlobalSpaco False Cr@eatablPredeclaDIdTru BE`xpose0TemplateDerivCus tomizDOp tion 0licit ' Originally design*to s multipgitems f0 a lsubsequentAchang e ither! or sing% * NB, @cmdOK t)is hidden behin,d @ G **QDisEy' box of C-3a@return9, (s) inconcE@Xnd sngJ v06.22J 2Nov 2, 2012 fix @@Vow pre-{CA`wFECCO ct 25gb@ Made aBd, Clea:rHd=0@-diwr 9 OEB ifHform bclB#Bbtitrbar, CTs :DCN5.01N7m*1'z!}CWK) vN dsimstack overflow q Sep 6g gsC ENot corr@Z@*DI""j`l "Aug 24' ctrl/A willi(jC?@ only)E1>8GA!@HopertyTdiTs] ]/ !,ignTuses "|",separ@`; 2i-- (GA zAmet|rem@0d cedI@Limi6tGcl"!Jnumb #eb Fc`)`can!c awidth eg ff.b=*2 A2rz'T4 Build 10IAJunx 214A|!S'fa ca#g" #9,'  (_  wasHtt@ lC bA_("Mak 3! %8`May 1cBoIn A, 튱n`c< `(cdA I xr 1Hd%ie unload(nesd wbhp`inkqPZExcelV07325-Feb-Wb 0+ spurious`8CqAutoOpenCommІ(in@troduc`.1:4?b(Fix`2HWk >d first 6[124-Jan % 0sOlay2! Rr.| &p`SRbPN!ls4in4\heigh'ISBP@mio.alA 30-DecA 0"Qui Z byPi;al letQDH /, Enwork1q?2à 16debug.p.r0"b3kim pr!M key@board 1Xab?supports CRR # bHESCAVqua3--cpkD=E1 E(H b}@Yqsa/ddOPub@ }p As, SM 'e @e`w...@Sub My (b3Dim fѡNewOmS v@' f. p/ 'QPIU7ys@e"zDsf.L("Tom|D0(|Harry", " ,")'P !sqc<, cS  -+f?d+ngGf㡐xre s D@9LP`AU k(unkownlei@c%50 ".,h0 doesn'bt soMpmQ*i c AmdP*SX' much ǹ zwo!Qt%iPbZ*OA PI "pa pipKrlsGtCc3{ms@'one|two'#+2 '|t|t G< BoonInRV'[A|`showAciChavunOXr1.pTU @three,PeBsI "o"z"="bM9$ R_Keys@Colqq0=V the initial letter, itemwhole string Const QUICKKEYDUPLICATE = "zzz123" 'dicates is non-@uniqueW' spurious liachange events have @been swh user clickato a Word ' field which displaysxform (so at1random valus returned)#thallows I occur too soon af+e 1n '_idQDELAYTIbM0.1)'a 4TaS8&o !H&%gEnd@t#Nex|t j!5Mz,<>"RXQ<тpbsMe.Show vbMod``? _QBBA6don'thwtilPloL?!' geAere~OK:q w(multiC)NQ #sv41eK2Q'mA`3Trim()C' Jul 26, 2011 3ac@^be UbW aau Property LevJ7v8 sLvuw2`Ur la7e& delimrs t'Pk|two"'Pqcom'|$|'sTQ]QrawBf, Cgbu`0yipea*ONBpf mTv|2m$srshouonly1"! "1(g= h\ Pp GPCLeft(, 1)R|" S_q&o וRigh"{&?1Z9U U8Sub(6c?@R-o.8HI#?zSBpQhaQӅpcapbt(fЇ "Oбa) (w 4NYCtI%r*"3~ 2h0Q1CǣpG ,R3! dowIrrPccasϐAbunaf'hCwithirry_--pnotdesi٠K@r.E W} ~l`-S ?ctanB a2 n`R. C,R 2poa ce#B viakeyup q'M1o= fmJA+A,+ S ub zPositionControls() ' pl buttons and list depending on the form ops v006.22bSelec:.Width = Me.Insideq'?5 supportY caller increasvswNIf mbnS)leItem` Thend'is doesn't always quitdilliinterior -- notHre w hy# lHEIGHTlHeightj'f.s/A. OK DhiddOElses14' jy e$ size (to show 0a loP),71w<(reytreFzG cmdOK.Top@7+pD:-9zD@@' May 12, 2011@ movedClearfsC\ Tj2- 5E ' soLatgvisibld ' if mpre-sed, displ=T3CsPreLL<> ""L1'F2wiequal gabpo ržBefbetwezemG!a !#.Ve->3ZA=t"ϠGIndexHi#i3IZu?[6 753mbVCompleP-ǥ //Fun0%ByV@sBY)AYBoo0P' retur}a/R !Z+a``_T.`U-3=T&N KIna(a,.Clos) > `_ahI>s Eo(edA/?p?pck?pe?p?p=@qj`I`sp3S_;sq _;;qbo d=M+yr]thz!(>e7 SR6,b6ca ^gnoEsile T#! TimI< mrCGEna`QQ15ePB%u>5.01 Pi recursivK s;徑y spuusaU5hmmediafPQ¨Q8tj 5-Aug-ap@lyjBhworkʜ1<,*ݶstSelect@ion For i = 0 To .ListCount - 1v' (take care not to undo the work of zPre).ed(i)}/:Next i REnd 0With mbFCompletBe8True ' v5.01 re-enabl8e zUCh0ange.Els O l%'IIfIn dex >hemb+SingleItem &T gs FromA8C]BmAzUnloadMe Q/ CA'8 edA+Limit >- 3f05PA nuPmberi:s7S z >  LMsgBox "Mot@ " &P&' sBed", vbInform~aGfkFaʚ AIfFu qg'# Sub Pri va@v zQuickKeysAdd(ByVal s]As Str_V Dim zs@ F"= "s7LeftB(, 1)tPhis AnseBa9 starts w a `digitaO n ErrGo errEx}Sm. c,`t   :#'`plac Cspeci showacharmFUone  Remove(,QUICKKEYDUPLICATEr5Fun64%62)47K;70Not)1E= (ĝ々<> NLqe7`7#!YŨ"Made"Boolea"nFZ' winka=SQed on 2007 Excel,a@still @v esR,G visim3 'es.us hidden firs-;2g = Me.HiddpDoE0vent$0 M?#=cmdC Pr_Clp>(v06.22 cA currUpwarn usQ bif /3/sX%#&i,]%zSQoeQ> 3ٯw s"" "pe(b`OKCanvbC(BS1ߝoޝ fm !?^aL[. OKconcP]n]5r$inPaSz!j._3$0!s1le6-#]y,15returns aP"oP5pa!am9* /..K QLUpd@Co?MBSms.RR Integer, soShiftQBt2Const fmCtrlMask'33 VU,Q3 ' ignbspurious  e;.Tim5< mr#EQ+)a' 14-Feb-201`s0 = 27S"'4` f ES:CL Kc(1r)!<q/)7(1/r '-, check %$by`Xiq0init}pter3 ?sk=i(Chr(d) "5 n""o /S e*' multiAw /=I.AP%Asc("A"#3!' c0/A --T aq@ieᇳ%Ey' provPo\d Bled!of?qo\o\q:&]~(i) = Tr ue Next ilEnd` With d*INf&  Sub Pr@ivate  UserForm_Initial`ize()$msCaptionMe. $T xRRME(@ <<< <Pp h 0h % `l   0` i @  ```   `! :% (x@ @(0(0P(0 H(0(0( @TOV(*\Rffff*0]56cb4f54\0' (0"  8@HPp:" @  "  H Xhpx "   x^^0pX] ] (8] P!( .doc'  tB@ |ph.There was a problem with adding the smart textA@o 0]p]  (to hanA@ zd ~ tB@x Can t!d' t of A@ s by sA@fA@A@ ( fho`].: $ :B@vbCao Attribute VB_Name = "modParseSmartText" Option Explicit Pub$ TypeXDetails Bk ShortAsd Sng, "E ndBTBook{k(() <u ` %Sub I nsert(ByVal sAreaSelect4edX)pnrror GoTo errlab Dim s"Master gForms s. & g}& ".do.cE.WFile8, Range:=^ Exit u W: MsgBox ("There was a problem with adding th3| tx@Aa @AddNew0( BiLIntegAAWorT #If@ce*lF #nElse Apa.Scre`enUpd&= FaB Un0tl LMoveLeft Un@it:=wdA , Coun1,!@tendAExA<+= ) ̌ 7 Checks)ProC)NReplaceDemographicQ=TruG#aI~f@w@cļetial%efsA6cArhfrmFALt = ' .Disy (@Get("")D ID="{1C89FF38-1CC8-4C6F-8379-7DAB977C23BD}" Document=ThisDocument/&H00000000 Class=clsConfigureForm Class=clsFaceSheetData Class=clsInking Class=clsSignature Class=clsUserDetails Class=clsUserList Module=customToolbarShow BaseClass=frmCalendar BaseClass=frmRecipients BaseClass=frmRoutingToolbar Module=modAutoOpen Module=modCommonSubs Module=modImageInsert Class=clsBu9V~ xMEP@:8@(L > LLLLL L  lds `@  *`****`|pr-2@B l ca`D ulat`F 06.1 4 ` ++@ esig`J not `L 06.1`N   N`(k::A@l `R j dem`T Hhe re@X "@",`V Tions`X P *+v`8 Do{i` g "~8H@ p8@! X@x0P` Hp  x0P` Hpx0P` Hpx0P` Hpx0P` Hpx`0@@p0 @, `` t @0 (@  `` t@ @ @  `` t  H @  `` t 8  H`vx`` t4  @d @P T @D   N4 6 @x p X  : l@p @0 l H  @hO 0 @d @` @ P @ @ @ 0 @ @  @0 @H @` @x @ @ @ @ @ @p @ ` @8P @P@ @h0 @ @ @ @ @ @ @ @( @@ @X @p @p @` @P @@ @0 @ @ @0 @H @` @x @ @ @ H@ @ @ p @8` 1P@PP As@h@ bI@0 Ok@ wU0 ,xpc@ RO@ li@ @ @0@0 k@ UD@H d@ $` pTOV(*\Rffff*0e56cb4f54\3*\R0*#1d$*\Rffff*0e56cb4f54$*\Rffff*0m56cb4f54*\R1*#10b*\R0*#16*\R0*#14*\R1*#c0*\R1*#c1*\R1*#17b*\R1*#10c*\R1*#5c*\R1*#c6$*\Rffff*0g56cb4f54*\R0*#17*\R0*#e*\R0*#1c*\R0*#f$*\Rffff*0h56cb4f54*\R0*#12R> :H  < V ( :0 "p ^ T "P Rx " F "@ ^h " "  "  fH  " ` @ "H `p " V P X \x  & @ &H Bp D L PP 6  H 8@ 8x @ F R8 N P R0 > Z R( X 0 Z Xh :  F PP  L VP HX : B   < H 6P .  ( 4&  H B  P X (x  *   (8H0P  " V > 8 \@  J<% X0 <..8 @ "H P V` N  T \h  \ 0 H @PX <`  R !( !8 (H (6`  8&   ".(H,7`       "  &  " ( (0  \X D  b "p  6  T @8 @ HPh  N *   ( ,@ 0p 0 B  (8H`  * :  BP N. @0 $p    F "  ! *@!p!  !!  !! ! ! (! " " " " &" Z@" F" @" ""## @# P#  8X#### ##  2#0$8$<H$ $ *$$ $N$ @% P%  (h% % % "% H% L% @& HH& &&&& && & ,&(& ' ,0'(`''  @'''(  ( (  R0(*"(:)(  B( T@)JP)F9) 0*  8*X*`*  h* *.%* !** * *B * H*  88+*"p+ ++ 3+ + +x6 treat upper case and lower case as equal ie "a" = "A"4 ***************************************************x5 This module is required in Routing and Memory Forms.O OM forms include modOrderManagement instead which has stubs for some routines.4 *************************************************** *** v07.01 ***************X Dec 31, 2012 zReplaceForExcel replaces UDF demographics into ranges called SRSUDF etcM needed because UDF1 etc are standard cell names in Excel 2007 *** v06.16 ***************K May 8, 2012 RunDemographicFunctions handles calculated fields correctly *** v06.13 *************** f? 11-Apr-2012 zReplaceForExcel calls Application.CalculateFull *** v06.12 ***************6, 2X 7-Mar-2012 don't do replace when opened for form design (filesdata folder not found) *** v06.11 ***************  17-Feb-2012 GetAge added *** v06.10 ***************` 1-Feb-2012 demographics in Word are recognized by leading "@", RunDemographicFunctions added *** v06.09 *************** Y 10-Jan-2012 demographics in Word support terminating "~" to use vbcr as list separator *** v06.02 ***************Y 21-Dec-2011 demographics in Word field support date formats and lists separated by "|" *** v06.00 ***************lt cO 5-Dec-2011 logic for refreshing demographics, vitals and faceshseet changed *** v05.01***************V 17-Nov-2011 removed Address pseudo-demographic in Word but supports prefixed commas *** v04 Build 10***************: 20-Jun-2011 supports Address pseudo-demographic in Word *** v04 Build 4***************< 14-Apr-2011 zReplaceForWord doesn't change ScreenUpdating> 12-Apr-2011 fix zReplaceForExcel to preserve leading quotesF 24-Mar-2011 renamed NewReplaceDemographics for use in forms consolen-20I renamed modReplaceDemographics (was modRelaceDemographics)/ ScreenUpdating disabled in Excelin *** v04 *************** B 10-Mar-2011 supports demographics >256 chars in Excel (' fixed)1 5-Nov-2010 supports refresh in Word and Excel2 22-Oct-2010 zReplaceForWord uses ApplicationLet9 7-Oct-2010 FormType replaces OrderManagement function@ 7-Oct-2010 gBookmarkIDsLookup,zBookmarkIDsLookupLoad removedleL 1-Oct-2010 DEMOGRAPHIC_NOT_FOUND moved to modAutoOpen (to share with OM)gle-clH 23-Aug-2010 GetDemographic returns DEMOGRAPHIC_NOT_FOUND if not foundJ 22-Aug-2010 ScreenUpdating disabled when replacing demographics in WordL 20-Aug-2010 Fix to zBookmarkIDsLookupLoad for BoomarkID > Bookmarks.CountDim f 8 20-Aug-2010 Fix zReplaceForWord to use GetDemographic T 6-Aug-2010 GetDemographic ignores leading "/" eg "/DOB" and "DOB" will both work" ,") L (this is for compatibility with OM forms which use the names)h striR 29-Jul-2010 demographics logic which is not required by OM forms was moved here* Also has gBookmarkIDsLookupS OM forms have a stubbed version of this, modRelaceDemographicsOMStubit wonQ Will default to FT_RT (since this is 0) unless reset from ToolbarShowMemoryForms3 implemented as a function in customOrderManagement<> "",]  ? This collection holds the demographics for the current patientisI The key is the text to replace eg "FName", item is the name eg "Richard"F The demographics can be accessed using the GetDemographic () functionpresP Case of names is ignored in GetDemographic eg GetDemographic("fname") will workit]HB This collection holds all the replacement variables eg "/DOB" etc3 These are used when doing the replacement in Excelwhen t]p`a Wo v06.116 returns age in months if < 2 years otherwise in yearsty i0 To use in Excel =GetAge() ' function call e( To use n Word =GetAge ' no ()Pr]dob$vtoday$v$( '& $ G $ & A@j= fill Word field T & '" = return result for Exceli does the work for GetAge" separated out for ease of testing]`Pm * , $0 '. * $2  , $2  G .  '. j-- pro . y ex .  years'( epor . eefr<1 month'( d .  month . s$0'( kx p ih xO NB, Intake manager calls ReplaceDemographics in the module ReplaceDemographics 7 In consoles, this legacy code just calls this routine. tU v6.00 do the substitution unconditionally (DocumentIsNew tests etc are now external)ust D this is to make sure LoadReplacements gets called by Intake managerrn Tru  !dGA@NjA read demographics from file (reQ v06.12 don't do replace when opened for form design (filesdata folder not found)5 this would replace all the field values with ""????"DERS  !d A@4 *! this doesn't do anything in Wordn A@6 *" this doesn't do anything in Excelzk o  6.10 NO If a field Default starts with "=", this will execute the named function which 2G can be used for custom formatting of demographics eg age calculations.t N If the Default contains "(" or "[", RunWordFunctions is called to extract theent V parameters. Currently this is in modGeneralFunctions which would need to be included.icitV If there are no parameters, the function is executed directly and modGeneralFunctionsed W is not required. 66.09 Special Demographic type functions eg demCalcAge6 re]]L calculated fields also start with = so trap the error if we try to run themwill g ! ty fol !l :  !!'8 8 $= 8 ( 8 [ 2 function has parameters -- too complicated for usRunWordFunctions ! B@d function has no parameters 8 $'8 8 extract function name m 8 ! B@ l!nG lB@pj8 v06.16th tkhk`kX retur@o80 this won't do anything in Excelor valid syntax for Default is1) use" a single demographic eg "AGE"U OR a list separated by "|" eg "ADDRESS1|ADDRESS2" to generate "101 Main St, Suite 1"s.tx> the ", " are output if the following demographic is non blank Dat[ each demographic can followed by format string -- typically a date eg "DOB[MMM dd, yyyy]" folde these must NOT contain "|"opm.in/ or "lname[>]|fname[<]" to generate "DOE, john"edN if the terminating character is ~, the separator will be vbcr instead of ", "'x ]p]] th" pr]8G NB, f.TextInput.Default is preserved when the field is changed so this $ can be used to refresh demographic. "Application.ScreenUpdating = False" this is to trap formatting errorsXML ! N 6.10 was ActiveDocument !l :  !!'< N eg "@ADDRESS1|ADDRESS2~" !$dem < $@N 6.10alread, 'F s is v !!'< < $~ < <  $'< ow we 'F kp$ v06.01 support pipe-separated listsy6 'D < |$'B  B B ' $B '< < $@G < $'< jS 6.10< v06.01 a demographic can be followed by a date format in []rugnH NB, can't use field date formats because Default is a string like "DOB"'@ < ['|S eg "DOB[MMM dd, yyyy]" | < | <  |  $'@ S "MMM dd, yyyy" < | $'< S "DOB"k` < $v'> @ apply foprmatting -- leave unformatted if date or format is bad @ G > @ $'> j l!nG lB@pj D  > G D F 'D j D > 'D  ! D A@kPkH B@H !Application.ScreenUpdating = TrueoP this won't do anything in WordS 9-Mar-2011 no longer uses Excel replace since this doesn't work for strings >256@ 12-Apr-2011 preserve leading quotes, don't flip ScreenUpdating ]]]]9Application.ScreenUpdating = False ' for console1 mReplacements(i) is the name of the target range  !d $ 'N N $UDFSRS N 'N k, if the range has a leading "'", preserve it'L N $'L l!nG lB@pj6 unexpected demographic L  L $''$0'L k0 N L $ A@ l!nG lB@pj6) continues if demographic is unrecognized  B@P 6 v06.13!Application.ScreenUpdating = Trueho`A load demographics and replacements from the files created by SRSF If the files are not found, just exit (helpful when editing the form)A v6.00 this is now called independently of NewReplaceDemographics]0]H]`]x]]Z 8 'T , get the next free file number Xfilesdata\replaceVars.txt'  T  'R - get the next free file number Xfilesdata\demographics.txt'  R : NB, demographic contains the actual patient specific data\  start of file'V T $^ b T V R X L The sReplaceVar is also used as the name of the range in Excel so strip "/" V /$'V = 9-Mar-2011 V B@=% eg "CurrentUserName" for Excel range< NB collection key is upper case and leading "/" is strippedN (This is for compatibility with OM forms where GetDemographic uses the names) V $/G V $'V jO eg "CurrentUserName" X V $   B@B( this collection can be addressed by key close all open filesW| report errors and exit\ pError after reading   V ' A@A@HZ oB get a demographic or DEMOGRAPHIC_NOT_FOUND (="????") if not found2If Left(sName, 1) = "/" Then sName = Mid(sName, 2) ` /$'` < 9-Mar-2011 4 'vP ` $ $ 'vi0(>Attribute VB_Name = "modReplaceDemographics" Option Exp licit@Compare Text ' treat upper case a@nd lows equal ie "a"xAc ' */69 This ule raired in RouPtingMry Forms.aOM fclude!OrderManagement stead wh has stubsQ sor0e(*2c v07.01  Dec 31, 20`12 zfE@xcel rs UDF d`to rangesllSRSq etcDoneedbecaup 1 @ zstsard l ns 2007 A@!26.162May 8E2 RunHFuncsZndl,culat$field@1orrectlyL3R11-Apr-Mcalls( Apa.CalFullL2R 7-MaEdon't d\Cd@en ope2n0or@hsi@gn (fi8d(atal@ notund)S17-Feb7GetAgdokaJb0S.1F Wo=>-ognizby laAj"@",7ap09r10-JanDrsort termin4az"~" Z!Tvbcr slist seator 0S721-k1 f bN E@5e3rmatsc`$"| +♂`0T/5(logic xfre sh,i!, vi,ta Ufshseet ch{jd5@*  1@ENovD mo"vAdd s pseudo-h7{B@ refixcommas 4 Build 1022561)rha(L' # 5-D(0 F@%h&'Q.6 22-Oct+1gp[Le 7I1Type r;er}~ftg"gBookmarkIDsLup,z.Lo0r`w05"1DEMOGRAPHIC_NOT_FOUNDІ8`%AutoO0b (shapwith OMb23-Aug%p^$0 turns _Qif7e 07!wh@kHE0y Fix1Y. p >bs.CounB0B 3 6U vo%k/" eg "/DOB"b\"will bop0workb:4(t Ppatibility =msԢ thess9-Julu3#`cqPw#?#herC Axlsor+ Vh*aPMab]veDrsAof !,Re=FOMSsWdefaulzo FT_RT (since20) un s0+skfrom ToolbarpShow:2UimplR pN0D:!(customl< Pub`B?AsEnum co hoa*QAcu/0aT`keyA te0а)E %F item'uQaRihrdcan bAccessu%gpe ?() KC1P0X |gn/М0("fa"),p0#0Dim mk`m C1C p+^r BvarigV8ȀQO3apHdo1HqIgk2 tv`sw> A(ByVPsF S@_`@'r11 reX0A)monthf < 2 yeap0Eerwi ` "5To BE =! )!0@t/!ln eD '_ (GCDi]m sGetAgpe P = zInterval(Demographic("dob"), Xtoday")) If sField <> "" Then Applicat@ionLet , ' fill Word @Us-' returnsult for Excel End F8uncHPr`ivate ByVal[romDAs Str ing,  To9 ) -W' does the workHnt' separ/d ouXease of test7%Dim nMonths3gerOn ErrwGoTo errlab1 = A+Diff("m"bFD6C2t@sDay(s) >D wE- 1CCE>= 24 AFy2( / 12) & " y ears"C ElDse= 0"<1 mJGC @IIfF#= 1,@s"GفIf]CY:˖Sub NewR@eplaceHs("' NB, @>ake manas callDs inm`oduleQEIn consoles, is l egacyde just th`rNine.v6.00@WbHsubQtuf agondia`y (Docume0ntIs bVs etc are @now exnb)ForAok#any3ngNA z b+  dh! fhgRun4*g10e3 ! ,%DefastarF&=@Mw!execunam6#$€9ich can be us$;cfommatǡFeg @xUculsj@ttains "(" "[@Run!+ `d@eiract!D%me`ls. Curr@qlyKAn dG*ralGw~hi' neincluded :C= 7!Fe f5@5irect>apwpKM 0no2t{qu #"#+m_#`"A$ 'J9 S0pecizx# typ s Calcuft3 qsU(}U 0r:s aPlso ' '= trapy if we tBro ru2]mc#|ResUcxtS0 Eacxh f`PQ W.;" s f.Tq= wdaTP$InpІq!f= .Left(5, 1)pW"="yInStr00 Or@["O 1)hasx+ -- too@qmSquEqȬ.Rp"@z:;f.NE#,ϱQ, noX 8Midp1'qyD;P/3.NumboyALCl`' u6cS[jN, R#eSup \n(zmwore q '{id s yntaxc Djid&a s8e"`K"AGEdOR a li"|"qN"ADDRESSd1|2".ne "101 Mg, SuiMq1!e ,"ࡁBpKkfol8low jnoarlank u eK) quS7 aK A9yp@lac e["DOB[MMM ddh, y] maNOT<="l1.[>]$|f<]|DOE, johnu Pvmin}ch`c~sp†uvbcr`sta0݁Cm|enammjjm[GlS9mPueG, sFormat As Str@ing Dim iInteger, i1 8aDemNamesResulsSepl ' NB, f.TextInpu@t.DefaFis preserved when the field changsoisMcan be usto refCh demographic.* Application.ScreenUpdng = False On Error xme N^ 'FO>t8 ft< eT& Each f In WordDocument.Fws.' 6.10 was Active"4Ifypehwd+0 TX sw@ Qh' eg "@ADDRESS1|12~"K'Le ft(f., 3)"@m" Or #, 1@"B, C@KKA = ", ;-Rightz(&~&O L5Len) -9TA= vbCrEnd IfO' v06.01 support pipe-se paratglistjes|(7p(7S`j#"|")P@= L@Bound() To U/!E2& (iO8EL Mid=2)QOaF/ a) follow 0by 1 in []U  't``Bsca (a s like "DOBp:ó>!=@$"["B${#[MMM dd,t y] 6 >| 0  7+ 1, KnnAx' ")!CL o @t _y ValuGet`%1_Ja@qy'pl-- leavuntmP*if b&pCobado E<> "D\ QiasC Ɖ x.Number @C!!z.C ORb a N AT 3r wP& eq0/!_ri؋Let`~Ct4m&d?Rӕ'8(Tru&# Sub 0PrivN zReplace @Excel( D 'Õwon0Ndo anythqQѓ! 9-Mar-2011 no lo`r!Qs 0 since#doesAwork/rTQ@s >256Q1p2-ApUe0dquotd `flip K #* 1.KsColHea/ sQ10 Q =_'3'consol ϯxtS' m1s@wŰnp of `arg*rAs r1q*.C4 >=.#CYGH 13UDFߚ ={oSRS" ?`;u-qW' R h0a#"'%iY3 wل= 6^(-R!'rrQ1SQ 6' unexpecX TPÁF IIf( !r"Q7Ma& mXo'7_7Gb!6' @/ouesx,unrecognizeDnY38 .CalculMFullz313S::?UZ:UTLoad+bU@ ' load demographics and replacements from the files created by @SRS ' IfDare not found, just exit (helpful when editing8orm)LASv6.00is now callzindepently of NewRD IDim sFName#Num As Integer0VarssMsgsStrw=+ On Error GoTozHlQf R= Free{ф ' getnex@u numbK = ApplicationPath & "sdata\ĉD.txt"D,f () F@/InputA8O*C CD e?2e2If2#+2' NB, contains`actual pV specific AV~2ɗ= "start&c Do Wh NEOF(-HnC DLine`6e, 8 F''' Talso us~a'nxarange i`dxcel slpp "/ =j D(,")c' 9-Mar-2011'mB.Add!+' eg "Curr=User"r E 'AHFc!p keyaupp$erseµle?@ABCDEFGHIJKLMNOPQRSTUWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}     @A !"#$%&'()*+,-./0123456789:;<=>?CBDEildCalendar Module=customAutoOpenEtc Class=clsRouting Class=clsParameters BaseClass=frmSelectFromList Module=modParseXML Module=modReplaceDemographics Module=modApplication BaseClass=frmSmartText Module=modParseSmartText Class=clsSmartTextData Class=clsSmartTextList HelpFile="" Name="Project" HelpContextID="0" VersionCompatible32="393222000" CMG="EBE9F3C8B8CCB8CCB8CCB8CC" DPB="B4B6AC07BCD1BDD1BDD1" GC="7D7F655EE726E826E8D9" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] ThisDocument=0, 0, 0, 0, C clsConfigureForm=0, 0, 0, 0, C clsFaceSheetData=0, 0, 0, 0, C clsInking=0, 0, 0, 0, C clsSignature=0, 0, 0, 0, C clsUserDetails=0, 0, 0, 0, C clsUserList=0, 0, 0, 0, C customToolbarShow=0, 0, 0, 0, C frmCalendar=0, 0, 0, 0, C, 25, 25, 802, 484, C frmRecipients=0, 0, 0, 0, C, 50, 50, 827, 509, C frmRoutingToolbar=0, 0, 0, 0, C, 75, 75, 852, 534, C modAutoOpen=0, 0, 0, 0, C modCommonSubs=0, 0, 0, 0, C modImageInsert=0, 0, 0, 0, C clsBuildCalendar=0, 0, 0, 0, C customAutoOpenEtc=0, 0, 0, 0, C clsRouting=0, 0, 0, 0, C clsParameters=0, 0, 0, 0, C frmSelectFromList=0, 0, 0, 0, C, 100, 100, 877, 559, C modParseXML=0, 0, 0, 0, C modReplaceDemographics=0, 0, 0, 0, C modApplication=0, 0, 0, 0, C frmSmartText=0, 0, 0, 0, C, 125, 125, 902, 584, C modParseSmartText=0, 0, 0, 0, C clsSmartTextData=0, 0, 0, 0, C clsSmartTextList=0, 0, 0, 0, C ThisDocumentThisDocumentclsConfigureFormclsConfigureFormclsFaceSheetDataclsFaceSheetDataclsInkingclsInkingclsSignatureclsSignatureclsUserDetailsclsUserDetailsclsUserListclsUserListcustomToolbarShowcustomToolbarShowfrmCalendarfrmCalendarfrmRecipientsfrmRecipientsfrmRoutingToolbarfrmRoutingToolbarmodAutoOpenmodAutoOpenmodCommonSubsmodCommonSubsmodImageInsertmodImageInsertclsBuildCalendarclsBuildCalendarcustomAutoOpenEtccustomAutoOpenEtcclsRoutingclsRoutingclsParametersclsParametersfrmSelectFromListfrmSelectFromListmodParseXMLmodParseXMLmodReplaceDemographicsmodReplaceDemographicsmodApplicationmodApplicationfrmSmartTextfrmSmartTextmodParseSmartTextmodParseSmartTextclsSmartTextDataclsSmartTextDataclsSmartTextListclsSmartTextList(  @}IR KQDBTahomao$2#Frame2(?2XlabHelp'( @4txtMMDDYYme.E8((Select date above or type MM/DD/YY belowuTahomaH, {5oOY.i50S n``ccccf1oRT5Tahoma(H  ;D}o(24Mth_Yr$#Frame1r$<CB_Mth$<CB_Yrh $p X@TahomaAH,X@TahomaAH,X@Tahomai05XV n``ccccf8hoUWV CompObj~p,J  ;a}:1  0D2hoO 0D3ho  0D4ho   0D5ho;   0D6ho  4D7ho(2@Label2(2@Label3N(2@ Label4(2@ Label5 (2@ Label6: (2@ Label7(2@ Label8 4D8beF 0D9beOF 0D10eF 0D11e F 0D12e; F 0D13eF 4D14eF 4D15e 0D16eO 0D17e 0D18e   0D19e;  !0D20e "4D21e #4D22e< $0D23eO< %0D24e< &0D25e < '0 D26e; < (0!D27e< )4"D28e< *4#D29e +0$D30eO ,0%D31e -0&D32e .0'D33e; /0(D34e 04)D35e 34*D36e2 40+D37eO2 50,D38e2 60-D39e 2 70.D40e; 2 80/D41e2 940D42e2 4D12e 0N{uTahoma0O{uTahoma0O{uTahoma0N{uTahoma0O{uTahoma2O{uTahoma(SunoN @Tahoma(MonoN @Tahoma(TueoN @Tahoma(WedoN @Tahoma(ThuoN @Tahoma(FrioN @Tahoma(SatoN @Tahoma2O{uTahoma0N{uTahoma0O{uTahoma0O{uTahoma0N{uTahoma0O{uTahoma2O{uTahoma2O{uTahoma0N{uTahoma0O{uTahoma0O{uTahoma0N{uTahoma0O{uTahoma2O{uTahoma2O{uTahoma0N{uTahoma0O{uTahoma0O{uTahoma0N{uTahoma0O{uTahoma2O{uTahoma2O{uTahoma0N{uTahoma0O{uTahoma0O{uTahoma0N{uTahoma0O{uTahoma2O{uTahoma2O{uTahoma0N{uTahoma0O{uTahoma0O{uTahoma0N{uTahoma0O{uTahoma2O{uTahoma2O{uTahoma n``Microsoft Forms 2.0 FrameEmbedded ObjectForms.Frame.19qCompObjpCompObjQZaVBFrameIfrmSmartText]cccc n``Microsoft Forms 2.0 FrameEmbedded ObjectForms.Frame.19q Microsoft Forms 2.0 FormEmbedded Object9qVERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmCalendar Caption = "Calendar" ClientHeight = 4035 ClientLeft = 45 ClientTop = 360 ClientWidth = 3960 ShowModal = 0 'False StartUpPosition = 1 'CenterOwner TypeInfoVer = 213 End (H  @ }G>&R KQDBTahoma((2PLabel1,LCommandButton1M.!(2PLabel2'0@RemoveFromSelectedSE0PSmartTextSelectionSO0PSmartTextSelectednS&Ofo\^CompObj_aVBFrame' ()SMART TEXT SECTIONSv{ @Tahoma$)Add to Document  @Tahoma()SELECTED SECTIONSS{ @Tahoma)<R KQDBTahomao0HcmdSendToRecipientsn1S( 8cmdCancelme.142llabMixedRecipientssn1]44lstPossibleRecipientss  ((Send to the Recipients ; uTahoma(Cancel; uTahomaL+2Select one or more users or a single message pool.: N5Tahoma`!J=5Tahoma Microsoft Forms 2.0 FormEmbedded Object9qVERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmRecipients Caption = "Save and Send" ClientHeight = 9090 ClientLeft = 45 ClientTop = VBFrame,frmRoutingToolbar$jgccccfofh@ 330 ClientWidth = 4845 StartUpPosition = 1 'CenterOwner TypeInfoVer = 12 End (H @A}{R KQDBTahoma< cmdProtecttafProtect documentH cmdUnprotectB^Unprotect to allow inkinga< cmdCancelectnAbandon changesT &cmdSaveSendnf7Save document and send to another user}L cmdSavePrintSave document, Print and Exit,cmdSaveSendPrint?L  7cmdSaveESave updated document and exit@ cmdPrintFormjJPrint the documentcH cmdSaveNoSendintuSave document and ExitT  cmdSaveNoSendPrintEx+Save document, Print and Exitt@ 7  cmdSignFormnSign the forment, cmdSaveNoSendFax5%(  cmdFaxFormen18   cmdBDF1FqCustomButton1Fax8  cmdBDF2wCustomButton2Fax8  cmdBDF3|CustomButton3Fax0cmdModifyROMOptionsxS@  cmdRefreshDataaxCustomButton3aax  Microsoft Forms 2.0 FormEmb ProtectE{R KQlt6BM66(uTahomat$ Unprotectme.E{R KQlt6BM66(uTahomat CanceltE{R KQlt6BM66(uTahomat$ Save & Send. {R KQlt6BM66(`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0ะะаШШ`H0Ш`H0а`H0ะ`H0ะ`H0 H @`H0@` H`H0`H0ภаШuTahomat$ Save & Print {R KQlt6BM66(phP`P`Pp`PpX@pX@pP@pP@`H0`H0`H0`H0xp`H0`H0аpX@`H0`H0hPpP@`H0p`p`P`H0иpp`h``PpXPph`pX@ࠈx``Ppааpp``Pp`Pp`p`P`P`PиЀh``Pии`P`PиииЀp``Pии`P`PииuTahomat,Save, Send & Printc {R KQlt6BM66(phP`P`Pp`PpX@pX@pP@pP@`H0`H0`H0`H0xp`H0`H0аpX@`H0`H0hPpP@`H0p`p`P`H0иpp`h``PpXPph`pX@ࠈx``Ppааpp``Pp`Pp`p`P`P`PиЀh``Pии`P`PиииЀp``Pии`P`PииuTahomat  SaveatE{R KQlt6BM66(hph`XPPPPPPPHPH@H@@@8@8@p8@p80hpH @0 PPP@0@080p8@pppXP@@0xpp@0@@@08@xppXP@@0Ѐx`H@H@@@@@xpXPpXPpXPpXPp`Ph`XPPPH@@@xpphp``XPPPH@```PXPP@P0H0@ 8``XPH@h`8``HPpp@ h`PPxpаH0ppPPP0xPPP@`00XPXPX`X`xxpppuTahomat Printat {R KQlt6BM66(phP`P`Pp`PpX@pX@pP@pP@`H0`H0`H0`H0xp`H0`H0аpX@`H0`H0hPpP@`H0p`p`P`H0иpp`h``PpXPph`pX@ࠈx``Ppааpp``Pp`Pp`p`P`P`PиЀh``Pии`P`PиииЀp``Pии`P`PииuTahomatSave {R KQlt6BM66(hph`XPPPPPPPHPH@H@@@8@8@p8@p80hpH @0 PPP@0@080p8@pppXP@@0xpp@0@@@08@xppXP@@0Ѐx`H@H@@@@@xpXPpXPpXPpXPp`Ph`XPPPH@@@xpphp``XPPPH@```PXPP@P0H0@ 8``XPH@h`8``HPpp@ h`PPxpаH0ppPPP0xPPP@`00XPXPX`X`xxpppuTahomat$ Save & Printg {R KQlt6BM66(phP`P`Pp`PpX@pX@pP@pP@`H0`H0`H0`H0xp`H0`H0аpX@`H0`H0hPpP@`H0p`p`P`H0иpp`h``PpXPph`pX@ࠈx``Ppааpp``Pp`Pp`p`P`P`PиЀh``Pии`P`PиииЀp``Pии`P`PииuTahomat$  Sign FormntE{R KQlt6BM66(uTahomat$ Save and Fax {R KQlt6BM66(uTahomatFaxo {R KQlt6BM66(uTahomatBDF1E{R KQlt6BM66(uTahomatBDF2E{R KQlt6BM66(pP@pP@ppP@`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0`H0Ȱภиии`H0`H0xpppph`pXP`PP`H@и`H0`H0ࠈxpp`ph`pXP`PP`P@X@ఀ`Ѐ`PиРX@X@xpp`p``pXP`@`hPиh@xPX@Ph@`pиPxPxpp`p``PPЀp``pX@pxph``H0`H0иииx`uTahomatBDF3{R KQlt6BM66(uTahomat(Modify Options {R KQlt6BM66(p`H0`P@`H0pP@p`PpP@`H0`H0`H0`H0`H000@ภааШР`H00P8pxȰШ`H00P0X H8ȰШ`H0`H0 @0X`Px@` @а`H0`H0@`@Xи`P@а0XPhȰpX@иp PАp``P@и HР```x`xp0Pа`PpРpPpp`p@hpp@hpuTahomat$ Refresh Data {R KQlt6BM66(uTahomatCompObjiaVBFrame6frmSelectFromList$lccccfedded Object9qVERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmRoutingToolbar Caption = "SRS Routing Form Options" ClientHeight = 360 ClientLeft = 45 ClientTop = 435 ClientWidth = 20910 ShowModal = 0 'False TypeInfoVer = 65 End $  }vR KQDBTahomao$4cmdOKlp$@cmdClear; , 4listSelectionon(OKo {uTahoma (Clear Selection {uTahoma`!c5Tahoma Microsoft Forms 2.0 FormEmbedded Object9qVERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmSeokmCompObjnaVBFrame4CompObjrlectFromList Caption = "Multiple Selection" ClientHeight = 4170 ClientLeft = 45 ClientTop = 435 ClientWidth = 3405 StartUpPosition = 1 'CenterOwner TypeInfoVer = 6 End   F Microsoft Word 97-2003 Document MSWordDocWord.Document.89q՜.+,D՜.+,\ hp  SRS Software, Inc.  Routed and Memory Template v06 Title  hpx    ( 4@LXdp|TabID Re