diff -Naur '--exclude=Makefile' wfdb-10.6.1/MANIFEST wfdb-10.6.2/MANIFEST --- wfdb-10.6.1/MANIFEST 2015-05-28 15:55:11.000000000 -0400 +++ wfdb-10.6.2/MANIFEST 2019-03-08 19:54:39.000000000 -0500 @@ -133,6 +133,12 @@ checkpkg/expected/xform.wabp checkpkg/input checkpkg/input/100x.hea +checkpkg/input/237s.all +checkpkg/input/237s.hea +checkpkg/input/237s1.dat +checkpkg/input/237s1.hea +checkpkg/input/237s2.dat +checkpkg/input/237s2.hea checkpkg/input/ecgeval checkpkg/input/sumstats checkpkg/input/test.scp diff -Naur '--exclude=Makefile' wfdb-10.6.1/NEWS wfdb-10.6.2/NEWS --- wfdb-10.6.1/NEWS 2018-11-28 17:26:14.000000000 -0500 +++ wfdb-10.6.2/NEWS 2019-03-08 19:56:10.000000000 -0500 @@ -1,3 +1,19 @@ +10.6.2 (8 March 2019): + Minor bugs have been fixed in the command-line option handling of + 'gqfuse' and 'gqpost', so these programs will behave as documented. + + Changes to the internal functions get_ann_table() and put_ann_table() + ensure sensible and consistent behavior if a custom annotation type is + defined (using setannstr()) but no description is provided (using + setanndesc()). + + Changes in isgsettime() and isgsetframe() avoid incorrect behavior if + the specified time value is large enough to cause integer overflow. + + It is now possible to run the package test suite without network + access, by setting the environment variable WFDB_NO_NET_CHECK to 1 + before running 'make check'. + 10.6.1 (28 November 2018): 'fir', 'mfilt', 'nst', 'snip', 'mit2wav', 'wfdb2mat', and 'xform' have been updated to work correctly with multi-frequency input records. diff -Naur '--exclude=Makefile' wfdb-10.6.1/app/gqfuse.c wfdb-10.6.2/app/gqfuse.c --- wfdb-10.6.1/app/gqfuse.c 2018-11-28 16:55:57.000000000 -0500 +++ wfdb-10.6.2/app/gqfuse.c 2019-03-08 19:54:58.000000000 -0500 @@ -1,5 +1,5 @@ /* file: gqfuse.c G. Moody 6 May 2012 - Last revised: 9 May 2018 + Last revised: 8 March 2019 ------------------------------------------------------------------------------- gqfuse: combine QRS annotation files Copyright (C) 2012 George B. Moody @@ -82,7 +82,7 @@ for (i = 1; i < argc; i++) { if (*argv[i] == '-') switch (*(argv[i]+1)) { case 'a': /* input annotator names */ - for (a0 = a1 = ++i; a1 < argc && *argv[a1] != '-'; a1++, i++) + for (a0 = a1 = i + 1; a1 < argc && *argv[a1] != '-'; a1++, i++) ; if ((niann = a1 - a0) < 2) { (void)fprintf(stderr, diff -Naur '--exclude=Makefile' wfdb-10.6.1/app/gqpost.c wfdb-10.6.2/app/gqpost.c --- wfdb-10.6.1/app/gqpost.c 2018-11-28 16:55:57.000000000 -0500 +++ wfdb-10.6.2/app/gqpost.c 2019-01-15 14:24:10.000000000 -0500 @@ -1,5 +1,5 @@ /* file: gqpost.c G. Moody 16 November 2006 - Last revised: 9 May 2018 + Last revised: 15 January 2019 ------------------------------------------------------------------------------- gqpost: A post-processor for gqrs Copyright (C) 2006-2012 George B. Moody @@ -202,11 +202,20 @@ meanrrd = RRdelta * sps; if ((minrrd = meanrrd/2) < 4) minrrd = 4; if ((dt = meanrr/80) < 1) dt = 1; - + + if (from) { + from = strtim(argv[from]); + if (from < 0) from = -from; + } + if (to) { + to = strtim(argv[to]); + if (to < 0) to = -to; + } + while (getann(0, &annot) == 0) { switch (state) { case 0: - if (annot.time < from) continue; + if (annot.time < from) break; else state++; /* fall through to case 1 */ case 1: diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/appcheck wfdb-10.6.2/checkpkg/appcheck --- wfdb-10.6.1/checkpkg/appcheck 2018-11-28 16:55:57.000000000 -0500 +++ wfdb-10.6.2/checkpkg/appcheck 2019-03-08 14:47:14.000000000 -0500 @@ -1,6 +1,6 @@ #!/bin/sh # file: appcheck G. Moody 7 September 2001 -# Last revised: 17 May 2018 +# Last revised: 8 March 2019 # # This script checks the basic functionality of most of the WFDB applications # in the 'app' directory. These programs are not (yet) tested by this script: @@ -11,7 +11,15 @@ cp -pr ../data . -WFDB=". data http://www.physionet.org/physiobank/database" +if [ "x$WFDB_NO_NET_CHECK" != x ] +then + mkdir data/www + cp -p input/237s* data/www/ + DBURL=file://`pwd`/data/www +else + DBURL=http://www.physionet.org/physiobank/database +fi +WFDB=". data $DBURL" export WFDB INCDIR=$1 @@ -514,8 +522,19 @@ if ( grep "WFDB_NETFILES 1" $INCDIR/wfdb/wfdb.h >grep.out 2>&1 ) then echo "Testing xform (with NETFILES) ..." - $BINDIR/xform -i mimicdb/237/237 -s 1 2 0 3 -a all -M -n xform -f 9:19:45 \ + if [ "x$WFDB_NO_NET_CHECK" != x ] + then + rec=237s + else + rec=mimicdb/237/237 + fi + $BINDIR/xform -i $rec -s 1 2 0 3 -a all -M -n xform -f 9:19:45 \ -t "[22:01:23 20/07/1995]" -S input/xform >xform-2.out 2>&1 + if [ -f xform.hea ] + then + sed "s+record $rec+record mimicdb/237/237+" < xform.hea > xform.tmp + mv xform.tmp xform.hea + fi for F in xform-2.out xform.hea xform.dat xform.all do if ( ./checkfile $F ) diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/input/237s.all wfdb-10.6.2/checkpkg/input/237s.all --- wfdb-10.6.1/checkpkg/input/237s.all 1969-12-31 19:00:00.000000000 -0500 +++ wfdb-10.6.2/checkpkg/input/237s.all 2019-03-08 14:46:14.000000000 -0500 @@ -0,0 +1,4 @@ +~Klog.htm#20125700 SP TEMP RATE O2% PO2 PCO2 PH TOTCO2 XS AADO2 REQO2 O2_SATWlog.htm#20130000 progress noteXALARM: ** RUN VPBs > 2 XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 XALARM: ** RUN VPBs > 2 cXALARM: ** RUN VPBs > 2 BXALARM: ** MULTIFORM VPBs MXALARM: ** MULTIFORM VPBs XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs sXALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs }XALARM: ** MULTIFORM VPBs qXALARM: ** MULTIFORM VPBs )XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs ^ log.htm#20160000 Nitroglycerine;XALARM: ** PAIR VPBs XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** PAIR VPBs uXALARM: ** PAIR VPBs xXALARM: ** RUN VPBs > 2 XALARM: ** PAIR VPBs XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs IFlog.htm#20172700 PTT PTT_MEA PLT_COU WBC RBC HGB HCT MCV MCH MCHC RDWKlog.htm#20172700 CPK CK-MB MB_INDX CK Glucose BUN Creat Na K Cl TCO2 A_GapS3log.htm#20173000 SP TEMP O2% PO2 PCO2 PH TOTCO2 XSZXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs *log.htm#20180000 KCl Lasix NitroglycerineZXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs P4XALARM: ** VPBs > 5/MIN XALARM: ** MULTIFORM VPBs  XALARM: ** PAP 75 > 40 XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN RXALARM: ** MULTIFORM VPBs [XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 XALARM: ** MULTIFORM VPBs -XALARM: ** RUN VPBs > 2 6log.htm#20200000 progress note Lopressor Mevacor AxidjsXALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 XALARM: **SpO2 85 < 92 $XALARM: **SpO2 85 < 92 $XALARM: **SpO2 85 < 92 $XALARM: **SpO2 85 < 92 Mlog.htm#20211200 BLOOD NITRITE PROTEIN GLUCOSE KETONE BILIRUBIN UROBILINOGENDlog.htm#20211200 PH SPECIMEN_TYPE COLOR APPEARANCE SPECIFIC_GRAVITY3XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** RUN VPBs > 2 &XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 2E0log.htm#20214300 PT PT_MEAN PTT PTT_MEA INR(PT)yXALARM: ** VPBs > 5/MIN XALARM: ** MULTIFORM VPBs XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** ABP 166 > 160 XALARM: ** ABP 166 > 160 3XALARM: ** ABP 5 < 90 YALARM: ***ABP DISCONNECT ZALARM: ** ABP 3 < 90 XALARM: ** MULTIFORM VPBs pXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs ZXALARM: ** MULTIFORM VPBs +2log.htm#21000100 progress note Ampicillin Heparin^XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs (XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs log.htm#21013000 progress note5XALARM: ** RUN VPBs > 2 XALARM: ***VENT FIB/TACH YALARM: ***VENT FIB/TACH $XALARM: ***VENT FIB/TACH $XALARM: ***VENT FIB/TACH $XALARM: ***VENT FIB/TACH %XALARM: ** ABP 324 > 160 3log.htm#21023700 SP TEMP O2% PO2 PCO2 PH TOTCO2 XSWXALARM: ** RUN VPBs > 2 XALARM: ** RUN VPBs > 2 ~b(log.htm#21024400 CPK CK-MB MB_INDX CK K'XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs  CXALARM: ** MULTIFORM VPBs }XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs  40 XALARM: ** PAP 235 > 40 XALARM: ** PAP 237 > 40 XALARM: ** PAP 240 > 40 XALARM: ** PAP 242 > 40 XALARM: ** PAP 245 > 40 YALARM: ** PAP 248 > 40 XALARM: ** PAP 251 > 40 XALARM: ** PAP 255 > 40 XALARM: ** PAP 260 > 40 XALARM: ** PAP 266 > 40 XALARM: ** PAP 273 > 40 YALARM: ** PAP 279 > 40 XALARM: ** PAP 289 > 40 XALARM: ** PAP 298 > 40 XALARM: ** PAP 305 > 40 XALARM: ** PAP 313 > 40 YALARM: ** PAP 321 > 40 XALARM: ** PAP 329 > 40 XALARM: ** PAP 338 > 40 XALARM: ** PAP 344 > 40 XALARM: ** PAP 350 > 40 XALARM: ** PAP 353 > 40 YALARM: ** PAP 355 > 40 XALARM: ** PAP 356 > 40 XALARM: ** PAP 357 > 40 XALARM: ** PAP 358 > 40 YALARM: ** PAP 359 > 40 YALARM: ** PAP 360 > 40 |YALARM: ** PAP 361 > 40 XALARM: ** PAP 325 > 40 XALARM: ** PAP 326 > 40 |XALARM: ** PAP 332 > 40 XALARM: ** PAP 337 > 40 XALARM: ** PAP 342 > 40 YALARM: ** PAP 346 > 40 XALARM: ** PAP 349 > 40 XALARM: ** PAP 353 > 40 XALARM: ** PAP 355 > 40 XALARM: ** PAP 358 > 40 XALARM: ** PAP 360 > 40 YALARM: ** PAP 361 > 40 XALARM: ** PAP 301 > 40 $XALARM: ** PAP 301 > 40 2XALARM: ** MISSED BEATS ^XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS D3log.htm#21064300 SP TEMP O2% PO2 PCO2 PH TOTCO2 XSWLlog.htm#21064600 PT PT_MEAN PTT PTT_MEA PLT_COU INR(PT) WBC RBC HGB HCT MCVClog.htm#21064600 MCH MCHC RDW Glucose BUN Creat Na K Cl TCO2 A_Gap8XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS $XALARM: ** MISSED BEATS HNXALARM: ** MULTIFORM VPBs BV#log.htm#21081500 electrocardiogram'log.htm#21082200 radiology chest x-rayYALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs KXALARM: **SpO2 91 < 92 |XALARM: ** PAP 47 > 40 9XALARM: ** PAP 41 > 40 YALARM: ** PAP 43 > 40 $XALARM: ** PAP 43 > 40 $XALARM: ** PAP 43 > 40 XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs \XALARM: ** VPBs > 5/MIN XALARM: ** MULTIFORM VPBs XALARM: ** VPBs > 5/MIN %XALARM: ** VPBs > 5/MIN xXALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** PAIR VPBs XALARM: ** PAIR VPBs 7XALARM: ** PAIR VPBs XALARM: ** VPBs > 5/MIN DXALARM: ** VPBs > 5/MIN Nlog.htm#21100000 KCl Lopressor ASA Isordil Mevacor Colace Axid NitroglycerineXALARM: ** VPBs > 5/MIN XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs YALARM: ** PAIR VPBs XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN .XALARM: ** MULTIFORM VPBs XALARM: ** VPBs > 5/MIN aXALARM: ** VPBs > 5/MIN %XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN JXALARM: ** PAP 4 < 8 QXALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN %XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN ?XALARM: ** VPBs > 5/MIN VXALARM: ** PAP 3 < 8 |XALARM: ** VPBs > 5/MIN XALARM: ** PAP 3 < 8 |XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN oXALARM: ** MULTIFORM VPBs a+log.htm#21120000 Ampicillin Ticlid HeparinXALARM: ** MULTIFORM VPBs XALARM: ** PAP 72 > 40 |XALARM: ** MULTIFORM VPBs XALARM: ** PAP 72 > 40 |XALARM: ** MULTIFORM VPBs XALARM: ** PAP 72 > 40 |XALARM: ** MULTIFORM VPBs _XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN XALARM: ** MULTIFORM VPBs XXALARM: ** MULTIFORM VPBs XALARM: ** PAIR VPBs |mXALARM: ** PAIR VPBs XALARM: ** IRREGULAR HR BXALARM: ** IRREGULAR HR XALARM: ** HR 122 > 120 =log.htm#21124200 SP TEMP FLO PO2 PCO2 PH TOTCO2 XS Ca PO4 Mg(log.htm#21124200 CPK CK-MB MB_INDX CK KXALARM: ** HR 122 > 120 log.htm#21130000 KCl"/XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN %XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN XALARM: ** MULTIFORM VPBs SXALARM: ** ABP 20 < 90 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 194 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 194 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 196 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs XALARM: ** ABP 200 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 202 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 203 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 205 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 205 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 206 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 207 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 208 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 209 > 160 |XALARM: ** MULTIFORM VPBs XALARM: ** ABP 209 > 160 XALARM: ** PAP 6 < 8 GXALARM: ** PAP 5 < 8 XALARM: ** PAP 6 < 8 XALARM: ** IRREGULAR HR XALARM: ** PAP 4 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 4 < 8 |XALARM: ** IRREGULAR HR YALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 5 < 8 |XALARM: ** IRREGULAR HR XALARM: ** IRREGULAR HR 8XALARM: ** PAP 7 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 7 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 7 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR XALARM: ** PAP 6 < 8 |XALARM: ** IRREGULAR HR !XALARM: ** IRREGULAR HR XALARM: ** IRREGULAR HR XALARM: ** IRREGULAR HR XALARM: ** PAP 2 < 8 XALARM: ** MULTIFORM VPBs XALARM: ** PAP 2 < 8 |XALARM: ** MULTIFORM VPBs XALARM: ** PAP 2 < 8 xXALARM: ** MULTIFORM VPBs XALARM: ** PAP 2 < 8 HXoff XoffXALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN %XALARM: ** VPBs > 5/MIN XALARM: ** VENT BIGEMINY log.htm#21150000 progress noteXALARM: ** VPBs > 5/MIN #XALARM: ** VPBs > 5/MIN XALARM: ** PAIR VPBs XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN cXALARM: ** MULTIFORM VPBs ZXALARM: ** PAIR VPBs XALARM: ** VPBs > 5/MIN $XALARM: ** MULTIFORM VPBs wXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs  [XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs &log.htm#21180000 AmpicillinHXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs &log.htm#21190000 progress noteHXALARM: ** MULTIFORM VPBs pXALARM: ** MULTIFORM VPBs -XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs &%log.htm#21200000 Ticlid Mevacor AxidXALARM: ** MULTIFORM VPBs  OXALARM: ** MULTIFORM VPBs YALARM: ** PAIR VPBs  XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs XALARM: ** MULTIFORM VPBs hXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs UXALARM: ** MULTIFORM VPBs iXALARM: ** VPBs > 5/MIN YALARM: ** PAIR VPBs XALARM: ** VPBs > 5/MIN $log.htm#21220000 Lopressor CoumadinXALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN XALARM: ** VPBs > 5/MIN qXALARM: ** MULTIFORM VPBs XALARM: ** VPBs > 5/MIN ;XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN log.htm#21230000 progress noteXALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN b +$log.htm#22000100 Ampicillin HeparinXALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN $XALARM: ** VPBs > 5/MIN i4log.htm#22004300 PTT PTT_MEA CPK CK-MB MB_INDX CK Kn%XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs XALARM: ** PAIR VPBs =XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs XALARM: ** PAIR VPBs $XALARM: ** PAIR VPBs vdlog.htm#22020000 HeparinXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs ~XALARM: ** MULTIFORM VPBs ;XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs >log.htm#22060000 AmpicillinXALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs $XALARM: ** MULTIFORM VPBs XALARM: ** MULTIFORM VPBs nXALARM: ** MULTIFORM VPBs @XALARM: ** RUN VPBs > 2 $XALARM: ** RUN VPBs > 2 'log.htm#22072800 radiology chest x-rayBlog.htm#22080000 Ticlid Lopressor ASA Mevacor Colace Axid Heparin #log.htm#22081700 electrocardiogramLLlog.htm#22081800 PT PT_MEAN PTT PTT_MEA PLT_COU INR(PT) WBC RBC HGB HCT MCVLlog.htm#22081800 MCH MCHC RDW FRUCAMN %HbA1c %GlyHb NEU BAN LYM MON EOS BAS6log.htm#22081800 Glucose BUN Creat Na K Cl TCO2 A_Gap3log.htm#22093000 Heparinn6log.htm#22100000 progress note Heparin Nitroglycerine log.htm#22120000 AmpicillinLlog.htm#22120100 progress note Tlog.htm#22140000 progress note|log.htm#22171700 PTT PTT_MEA \ No newline at end of file diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/input/237s.hea wfdb-10.6.2/checkpkg/input/237s.hea --- wfdb-10.6.1/checkpkg/input/237s.hea 1969-12-31 19:00:00.000000000 -0500 +++ wfdb-10.6.2/checkpkg/input/237s.hea 2019-03-08 14:46:14.000000000 -0500 @@ -0,0 +1,5 @@ +237s/4 6 125 4206250 12:40:38 20/07/1995 +237s1 2500 +missing 4195000 +237s1 2500 +237s2 6250 diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/input/237s1.dat wfdb-10.6.2/checkpkg/input/237s1.dat --- wfdb-10.6.1/checkpkg/input/237s1.dat 1969-12-31 19:00:00.000000000 -0500 +++ wfdb-10.6.2/checkpkg/input/237s1.dat 2019-03-08 14:46:14.000000000 -0500 @@ -0,0 +1,53 @@ +pݛݱ  5KKݱ + awaKppp75 5ZD.d#aRS廍p-v!5ZO#2#='=#"5-윺a'R݆.ݛ'D K''̪&<7'p5 &W &lH2KawLwwaa'ۅwbwwwwwwwwnQ҄aaaw&=&&,&<qRRRRwp<<<&stp<<<55Ž&&"&&"&YYoY6&"!oooY/&"<<" 9ݹ"&"&5ݡʾ&"&&"1ݤ"&&"&.ݻ&"&&"&+u&"<<"Rvv(Vh"h"v``J$ݫ?""JJ !ݚ$23-ݭ-3Y3o-JDQURؽnfJwuK ҽuwJg K ݴE3Choݚ"R5ݘ~!&<"Rݫlh"h}"Vvvvv""H""ܦ;}""r.Γ"}"}YΓ"}}"}u}"}}"}ܨ}"}}"}}"}}"}h"hh"hpR"hh"hݼh"hh"hԼh"hh"h@ϼh"RR"R˼R"RR"R ¼R"b}&"&&"&555J0Q}&"55JJD ?}JJJJ> 4}JJJJ9}JJJJ4 }JJ50|""  +ݨ|   &݌|"|v5C 5e7| JJvP%| ǸY|z|  ̑| 555x{55{JJ5{555J{J555{JJ55{55`v{v``5v{JJ`vvv͢{v`Jvv̩{vvvvvO{`JJJvv{ܓz{JJ``vvvvy~l{``J`vvvv|?^{````vvvvP{J5J`vE{`````vvv:{`vvvv```10{`J`J({v```vv!{``vvv`J +R!{vvJ```:ރ%{vv``vvvvbަ3{````v`v`޴Z{JJ`vvv`J޴{vvJ5JJޫ{v```JJJJߚm|`````JJJ/ߊ }`JJJJJJJX߀}`vv`J55}߀~````555߃v``v55߃`p |+qvvnq[pr!Hr<"<&"oo3"s>s"&oMs&"&"&oBs"&<"<ooY*,sR"RR"RYooo߇sR"RR"RooowrR"RR"RRYrh"R<"3D;[8-o8-'!9-B=  [   S---C   CCCC   CCCC p.YCCC.VCYYo5J.k(oooY55/X^YYYC5555;/HCYCYJ555\/QCCCC5555/drYYYYJJ55/iYYYoJ555/doooo5 /](    T  7?' 04P  3{  ,쉲55! X5555o {55JJo? iJJJJooo/I`JJ`/C`````````xȱ````M&````\``JJB#JJ`J````륰````Džla````s````hο`````````T0vv`vF4vvvv8vvvv*Kvvv=nʽЌ b E (_ 7 \ؼ +α 6ج Ԭ +۬l"&"&o ۬4&"&&"ooo ߜ&"&&"&oooo ߜ&"&&"&ooYY ߜ&"&"&YYYC ߜY&"&"YCYY +ۜ*Yooo ЌθoɌظŒ߾vvv۳}v```ǃ֨f````~љR````zȎA````v3```Jrx'`JJ`nm`vvDZk_ooYhP &"<<"&YCC-dE&"<<"&`3&"&R"}[x'2-C4۶:箋6ƫ3/j,( Yv$ vvvv! svvAnjvvv"DZvvanjnj$ !njvDvvvv}vċvv08ϋvvvvvvvGvvv6nj?vve@vvv6ˎvvvvDvvvv,1Bv```N``JJi툁JJJJ| J55]   ʜ    Ź  ݐĂ555LJe5JJJxJ```e𠉂````L_h`vvv0t@vvvvvvvv6vvvv````ݗɅ```JiJJJJJ9JJJJ ;ƀJJJ`|`JJJ>/JJJJݮ5555ݠ둏5555ݔK95JJJlj}JJJJ|l```Jn2GJJJJ`JJJ`ݱP````DZB}```J5M````*)```` ````vv oo oYYYYYYYCYYYCC-------CC-vvYYYovv``oooo````oo`JJJߌ55Ԍ   {Ō   o   h   c   c   f| 5oo\q`vYC--Lbθ-->[|>L!&~&w@A2Cw ޛq46TQen͔wl+ffn5 Kh$V;4̪pe< RbYC--o^CC- J\fJ```Y````V-```vR-CCCvv``OjCCCC`J``KoCCCCJJJJHCCCYJJ5JE !YYYYJJ``A YYYC`JJJ= `݋YCCCJ`JJ8hCCCCJJJJ4݋CCCCJJJJ0݋YYYYJJJJ-݋YYYCJJ`J*ݭԋYCCCJJJJ) +ًCCYYJ55J, @݋YoooJJ5J4ooYYJJJJJb݋YCCCJJJJwTCYYYJJJJ YCYYJJJJeYYYYJJJJrCCCCJ555 CCCCJJJJRCCCCJJJJ/CCCCJJ`JWjCCCCJJJ5}CCYY5555+CCCC5JJJCCCCJJJJCCCCJ5zCCCC   4:CCCC  NCCYYcpos݂| B|JǛt-9݅ooe oooQ;  oooo:Ȃ   ooooo   ooo}d   ooo-   oYoo/   oooo Sq%*ݛހݱݛ 7mߏݛzݛYݛbtN   f +   oooXȄ   oooL   oooo@a oooo7H  oooo.@  oooo&@oYYYH  YCYYQ  YYYY]   Yooon   oooYу   YCYY$  YoYY@55J5YYCYZJJJJYYYYqJ``vooYovvY--v}vvvv}wvv-}jvvvv{YԌvvqHv``Jh3JJJJfJ555--CCo J5CC-C{ CCCCCYYYߜYoooʜ݅o.oooo=oYYYMoYYox^YYC-ho 5`UvL|Suvv~-  ;--   :%--- 9 )----   :,!----   >Y%--  Mb---  n:!----  !---  )  d\-  jK   u  @ߴ---   j!-- Yݳz0      s &[{HFA--hA--C-YCCYC|CCYC7CYYY~aYooooooFeoooYYYCCC};CYYYvC---^----B6- }----B-CCY/TYYCC/ ȁDZCYoouT|ooYoE4ooYo!YoYo鐀oYCC3--CC-ޏCYCYYYoY)ooYC̎YYYYxYYCC,CCCCC---{`---pG--eG]DZ----\^HC---T}@----L@--DH-<U----5j.w&qe \  --- +W5---CR55JJ---- PJ``` PJJJJ NwJJJJ KjJJ`` G]```J @QJJJJ ;@JJ5 63  4" 4--CC 9ߌCCC- =͌---- B---C GCC-C I---- D---- =---- 4-- ( 5Jְ {J555 w5~ w5vh< r<"-3K݆ rvTe~w5iBfU} 5wϔi4SKn5YRnCo +w K{   g   c   R   D   ~ =   | B  x W t U   o k\   h绌   d   b--_ Č- ^TɌ _Ҍb- ֌  jی ~ی   p   A F(  *----   MQ---- 5-c 冎   %   ꨀk+*DZK҂--e_--CCx ÃC-CCoooo CCCYoooo (oooYooo,ooYYYCzwCCYYjC---Uу-CC-<eC-CCiYYYo7oYYC/QCCCC/CCCC}/TsCCYCQ*YYCY%݁oYooooYCz0CYYYxڀooooooooYC--8ɏ--C-Yi-CCYRYYCY1ӎoYYYC-C-~bC---s9---Cj"CC--a---ZR ----K-CC-D"CC-C<+----54----.9----&9-- 4---0---' ---C5555CYCC +55JJC-J``vٍvvvv `J55       u h- Z---- L---- ?---C 1C--- -C-- CCC- --CY xYYC- l- `ی ִ W͌  N͌  ~~~h DČvh< =!h2K 44D}U딼5 &VթUQ55w 4ܿ5 5-R -Co `ݎ ݌ ݊  jŌ   UŌ   NŌ  } Ry su  q   lg즌 bL\퇘 UNO H ~ C u----? pCCCCB gP !gvcǵj^ ;g_+uݦET#͍7Q`Oib -oWCCCCoYYCƃCCCCCCCCfYYC-CCCo---Coooo߻dCoooYooy<YYoo[C-CC9ZȁCCC-m----=--CYYYYC)ooCCYo^oYYYoooom ooooY_YYYYU)hooYCCCN]CC--EpÎ-----Z,---h,oY----p9oYYY---CkGYYooCCC-db----dfoooo-t해o---֍ooo--------------- ֺp ֶa]amߍw֍oэYYCC̍CC--헽--헽-----핽-----휴-------ɯת--C-्----CC-CCYYhhEYoh<&&h5K&"3 ޱpC4`D`S'44#'Sp̍ o h̍--эYYo֍hR&Ǖڍ&&&&ݗڍRRRhݘ֍h~~ݘэ6ݘSǍǗo”Ǖ ݒ Ӫ0ݏl\NJw݅(DZ 䈝z ؃v ~r*ynyjpg-Vpd-{ac-_\f-)Rֱp-Iooo?o-5-C0z6.~:c.NK.p3>o /YYYo%/looo7/boH/ϔooooX0ooYYiڀCC--vv----n--Tr1ł 炨----s--_삹----Gł--YY*Ioooo GYCCC +--CTCC--yCCC-_|--CC-L0\CYCC@uԏıY<~~VETZҾEooQ~woYYoPoooOqYYC-NJA---L-Ζ--K----JF----Gݝ----F----F5G-------D---CBCYoo?oYYY;QYoYYhhhh6YoR<&25&"K ޱ--3DJD~=)`DJ4'̔&#?};D}օo8]J}o5Z}3Z}֛0 _}0d}0-C_}5-T_}oC-_}b_},_} d}օKd}y}օe}֛!}֛E.~c~oo|FօooooYpYYYolqooooVaroooYRsYCC-[s----bCt-^t8tt-Kt-CCCʧtCCCCrtCCCY>tYooo^soooosoooosp_sooK +soo rooG\roo#qooooqoo*3qooovcpoohZpoYYo^ooYYTooooJYoooo>6~oooo2!C~oooo&}ooo!}9J}`} | | | |55J~hhR |`v<<&& I|&"h |"-3Ya5 |3C݆Z.{JDD̪{%U}e~SS +{nfwu='' {wwϣw -{wwaK55 ({ww5Kaw {wwϻ{}wJghDƕkEJ45}[-#&&heK-YYK <ݍA;*waaa 5+WKKK555J `vv vvvv +25 vv`J JJ``9vvvvvvvv v``` Z  JJJJ * JJJ5~ *5 ~ DZݱ5JJ}ւ݆pJv``||$pp݆`JJJ|p`pppZJJJ5|pp݆p555Jz j)ZDDD5J55z \j.55JJy d +YJJJJz ^ ``vJz d̪̪JJ5} j*~hh5JJ` v:fS=='``J` J8vvvv Zvvvv Zϻ```Jjϻ55558z1ϻ55 2Oz   YO5{' xD{==hh8{~̔oooY1`|---#}.DD }.DZpi~K/aaKK~hKKawh<&&ʖp&&&&1a^&&1Q&<<eQ<<<<p'R<<&<tb-R<<hhRRwaw'=pRRhhwwaa?$p~hhhwaw?~~~~waaK?~~hhKaww +H{~hhhhwwaK^~~~h~KK5i}~hhR55KYzmw1 t Jn Jh Pιa \Z \T hֹM cnH GzB *= 8-CYwww3YYYC-CCYY(͍CCC-$ٍ- ߍߍӍ ͍ +&&&<&&&<&&h-P--DwwwaYK݆h&".ͪ=\Y3JD5ކZPD`4ZȺ58Ypf,~RK<_ RRRRht <<&&&&&&JJJJ--yAbJJJJ---v| +CC--ٻ/L +؛--CCջ+ +CYCCѻ$-C-Cλ5---˻Sɻ(]p֪~ǻ;3  hhiOi ay3^kzh:zDZddzXkzDŽrzǜpzDZǧ]{DZ<{Ǿ%|}Ǜݡo~ݓHp˒r +:IuoooowoooYwCCC--rwCYC--w--CC +bwYYYCwYYYCͲwC---͑w----́wCCoo--qwoojwj͛wKw0ݴwwwVw-wͫwuw Rw55J`֪Wwv!h<̈w&"R}"aKw"" ?w3C3 ݱ vDUQD. uU}U; tD`3YDݛK̏(s`h=]rYC--oqօq~~ݫ߄pǦ$pֱǢǝDZw֛ǒeeǎ܀klj,wDZǂ3~̼yDZtMpppk<pgpc0p_ p[YWURYO#~hhM~hhhhM ~hhhhM 6~hhhRQ RW~RRRhY W!~hhhhDZd G}hhhhs -}~~~ } +h}օooo >}oooo  }YYYC |-CYYC |----CC-C |CCCCCCCC|CCYYCC-C}oooo----P}oooo----}ooYo-CCC~oooo-C--\~oooo-CCC-;ooooCCCCooooCYCYdpooooYYCC[qYYYYYYYY rYoooYYYoƘroYooYYYYsooooYYYY XsooooYYCY 4|sooooYYYY{psooooYYYYFsoooooYYYrooooCCYYtrooooYYookroooooYYYqoYYYpYYCY&NpYYYY0YCC----~}} zt}y|w잊|u%|---Cs{YYYYr{ooooYYYopM{ooYCoooop{CC-Coonz----mz----lz----jz--izhzgz---Cooe{CCYooYYCd){Ѕ--cG{be{f ~h`쥃{4J!h&K\쥡{2YCJ ޱpY쯿kԌDD̔̔UkJ4#&KQkzJhNlOhhhoLl%h~hh5K7\RR<V2Koo#6oooooooo---oooY--CCYYYYeCCCCYYCCyCCCCCYYY_hCCCCYYCC`>UCCCCCYYY<>CCCCYYYYR$CCCCoYYY CC--oYYo CC--ooYY KC---Yooo \nC---oYCC w----CYYYO----CCCCh(---CCCCCI--CCCCCCya'C--CCCCCnUCCCCCCCCeƐCCCCC-CCZhCCCCCCCCQ/BCCCY---CHYYYoCC--Aoooo----9o----2v&ݦ----,\}-$QSNa'Q=S+ʛ Q%̚Ijooo>%9YYYY--+ YCCC----+CCC-----7---CY7|CCCC7OYYYY7$YYYC+YYCo%YYYYYYYYCC--d-CY-׫Bo컿 oY츧CC-Ch츃o&5e"}3݆~G4DDϣϮd)u`4C#6W{ڍ-CC-,c-"n[2-l-CCC^~CC-Y+-`|-CCC^CYYCKCCYo4c/8=8*| ǔ~ʼDZ~ļ(+o([oooo(ooYCֵ6(CC-찼N(l8~808Zʊ888H쓼H5-CHbooo~RrH&&lH `ι`H!R2CK p~TXCDD~y^j\NDDS==StLc\v4h qZ^\o&nW\hRRRYoomRlhhhRkMlT<&&<iDlRRRRfBlRRh~c=|_8|6Z 6|j~U66|hh~~QF1|̔NK/|ooL̃/|օI*|ooGܭ*|DC(|A#|=!|94|7U|o6N|ooo92|E"|b+|oG|f|4|o|| |#|(1|@oP|~YU|~~~~tf|~~"}~~}~~#~oo~ooookoYYCpC--CpC---m2q--Iq-7q+r--C"/r----,rCCCCrCCC-pq---CLHqCC--&q-CCC---yqC-CC--3CqCCCC---- +q-------p--------p-CCC----IpCCCC----pC-------~-CCC----wLwCCCC-m32CCYY---bL~YYYY----V~~CYYY----Ln~oooo----B3~oo----:}---4}0}*{}&a} J}{9}w0}w+}ooo w0}oooYw0}YCCC---Cw7}---CCCCt>}jYYYYmJ}4YYYYdSmYYCYZ_mYYYYZfmYYooapmfoYYYfwm7YYYC_{m +--CC---L~]YooA~]~J]hhhRa{]c5v!<&Kky]=2-Cݱpdr]vDD̔~~SmMvDo#}DHdM֌C~־<]Mhhh-o.VMhh~h OM}R<<&  3EMb<EFǪU?8`=ug:Looi8<&oYoog,kYYYY`CCCCS----C-C-Aڃѯ-CCC----,rћCCCC----q[ыCCCC---->~CCCC----rCCCC--CC2cCCCCC--C)SCCCC--CCeACCCCYYYC@-c-----YYYY/----YYYY ---oYYY l----YYYY &|---YYYC:Ϯ----YYYY}ΐ----CCCYBp--CCCYCC2qQC---CCC-I/4CCCC-CC-vCCCC----CCCC----wCCCC----vHCCCC----nCCCC----fCCYY----_༈Yooo----X\ȼooooo----R>U----K+9--E&>+802-,$& Ƭ^Ϭ;ooooҬooYYԜYCC----- ۜ-C-CCۜC-C-ۜCCCCٜYCCCٜiYYYC֜TYCCCϜBCCCC˜4C--)Co쉺!쐳oY잪CYoh<쥠"hK݆욜 +3D.͔'{aDDJ]U# ~.VKYhhd?Rooox~hou'h~~t.y6oX@>KEW.aet G4WVmtֱC ֛ ֛yi6 h Tօ&Vvooo;JoooYJPYoooe_oooo`o#oool#ohoooxn|̓vnp͘(~9oooe͵}}\Ѡ}Th}L<}F} @}   :|   5|  0|  ~~+Ͱ|~~~&ͦ} ݔ"͵}DZ-}F}5[}ooYTq}YYCC]}CYCCY}CYYC M}CCCC ?}CCCY <}CCYCF}CCYY]}YYoo|}o֪ݤ}hR&}  5J&}`!<K7}2C ޱpE}vDD̔SSA}DJ4SS7}oaR7}~-YL}~or}~hh퐞}hhh~쐛}~t}k}쎊}ۃ}2|}DZvy}o}h}^}W} @M} F}g<}2}'}DZ$}} } }] }Ǯb||I}ǀ. }ǩ<}u}} >~DZ)~Hk֛ep֛}p|qoooorooYY̠rYYCC s-CC--Ms--CC----|ysCCCC----`sCYYY--FsYYYYo(rsooooUWsoooo-5+soooosoYYo--froooo---ҒroooY----NrYYYY----rrYYYY----NqYYYY----2.{dqYYYY----."qYYYY----pjYYYY----RpTYYYY----f>YoYY---- +*YYYo----<oooo--~ +ooooxnoooo- AnooYo ^moooo nmoooo Kmoooo kmooooPmoooo\~~~~>\~~ +:\)3\v3\0\-\z&\d"\K\/\LLʪ 9L LuLYlL3a Lݿ 6< +<ͪsQ"<ݱcD<~~~~Ǒq/~~~~DzJ ~~~e !&!"o1#moooo#TooYY (#=CCC-&$(----3$---- 3$-,f-_---->---CC---dVn-----; 4-------#--------I------p----r%_---CkX9--CCR|C---B C--C6N-CC-+}f---- qn-----BH----L#---------------------U----------------f-CCCBCCCCCYYY|oooo|oooo----|픅b펆/ւ텐|퇓˱u펗ݚn헗kh휗>oooYb휓YYYC\핐CCCCV퉂---Ryxͨ----Mmn͋----Hf]r----Cd@ZCC--?d+BC--C;_+--CC8S----4A---00ܼCY,.üɛ֪(7oYCC$A-Y~R>xJ<"w .,w[Y3`D=廣f>DJ4ƍS T!oݱa Jh.RR<&E$&&&<  < Ën׋ݩ)x<Ԗ~( ~~@\~cc]~~~~DžD&~~~DZ +~~ƀ~6oooooo,ooYY +qCC--𜢃----L----Ʒ----a---@q-D-------d +------;-----Q----c--CCC---с----h~CCCCP'CCCC@ʀ----4l----*----쟏-----B----ݎ------퓊------y3----t----퀯----{--CCX--C-9CCCC/CCCC$CCYY$YYoo(oooo-{+om/ֆa6X@xV@qSDkQ@eL6ooY_H/YYYCZA(C-CCT:--P5 J.-F)B ܌=Ό962/CC,~YCCCh(pC-hhhh$_YhR&Q5pC}23͔54D43ݶ'-#hvSa ݤRRݦ CYoݯ&&oܯܝ܊ۋܓԋܻʋ&&Ή&&&ռ&&&&܀<<&&&&&&K&&<<ļ<<<<o/<<<<j&&&&IRRRRoogv<<&<LkRRRR ݑ3RRRhoooV1)hhRRoooo "RRRRoooo "RRRRooo9`)RRRRooojޫAR<b=s:_=oo5[=YYYC0XMCCYY,QMNCCCC(MMCCYo$@MYYCC 5MCCYY']-YCCC]bYooo ]~h\& \5Jvιl-!R2Caݛl_CJTZhl;U;ESSSSzlŒ4ƿKl<}|&~-CCo|W~oo^|hhhh P|hhhh B|h8|օoۼ*||F|W|օooK{օoe{oo{b{օo{<{oooo쇿{օĸ{{օooo{oooo{Ԝ{֛oo{oo {9{oooZ{ooooVx{oooo{ooo{o{4{ooUt{ooootS|ooEz|ooooQ|oYYYm}YYYYc~YCCY7C--Cp----/p--;qAm~rASs<2xs---C/s-CCCsCCCCsCCCCsCCCCsCCCC3sCCCCvGsCCCCMsCCCC*VrCCCCmrCCCCrCCCCqCCCC[qCCCCpCCCY펑pYYCCX-pCCCC:CYYYο--B1β---C+*ΤCCCC-#ΖCYYY ΈYYYYyooj[֓L=. |ooYwYYCCrCC--m---hc{---^c-YO--T8----Pm#----LZ ----JQFQܼ-CYoCX̼~?aooCC~hhh;h-Cohh&6h5!&K ޛ0Z2-C4.ͪ'+AmvD`D& c# SK RuYR< Hj&&&R--Yo:^RRR<"0R<<&<)-Fm)ߘyҲOR {6`κ^Ob--B---7ť----*@-(-T---!߂---;޳----͵xCC--Ͳ5-͵U----͵--CCͰCCYYְͦYCCC͢~ACCYo͢t{oooo֚͛to֔͆qqt e{ V~et ~hxgt ±~~hhq^t DZhhh~kMn-~~f;gaooo`4`ooooZ1SooYCU1H-P/8-'K(--VF-B-= ,9< +6<62Xs-C--'s---- Vs---3$sCr---nZrC---V^rGr>&q----6\q--q!_p-HIp----X---t--Q---- CCCC~CCCC~CCCC~CYYYj~oooY~S~S~֯O~֩V~Y~`~Ǫ`~`~c~ooYYY~YYYCY~CC--~L~zB~j-v1~O---q'~7----mp~!----ja~----fdm----dwm-bm-Co^mo[mԅo~hhRXmʅ R&Sm`<"KݛNum-3DvD=JhmDvD4SFWm# Z CFmYh&~@6muRf%m_RR<&;amF&  9m+&&<<6 lRRRh 4c\hhhh0\hhh~ ,\~~~~(\\}~~~~$\P~~ ]\ LқLHL{L= }< z< m<컞DZ9⻖&&5ۻ&&&&2ѻ<hhh~f hhhh !hhhhhhhhaXhhhhSǛhhhhhhhh 9hhRRK*RRRRsxqRRRRbRRRReSRRRR,DRRRRR4RRRRoooo3#RRRRoooYPvR[(Ja8`T!<2- p3`C`DvS-R`D#'h)BoK&&?R&~-$P2&&&&CYoo"e\&on&e&<<<PRRRR?RRRR D} hhhhooev 5hhhhooo͍s Phhh~ooȏi fhhhhoóe whRhho̤[ ~~~~ooooT hhhhoܲN hh~~oo'G ~~~~ooooy@ ~oooo= ~~~oooo6 ~~~oooo3 ~hhh/ ~ooo, ~~ooo+) ook% oooo% Ŕoob ӔooooFh ~~} ~~~~o& ~oo0 +oooo4C~~~~o'4O$T&v +-6ﯡ@okKoooot2YYYYYlCC-Ck--->$---CZCCCCy# CCYYO#6Yooo#boooo߶r#ooooߏ^#ooooߌ?#ooooW߹3oooo)2>ooooй2foooYަ2YYCCޯC2CCCC----1CCCC--xQ1YYYYlfaA YCC----b: A&CCCY---W@=YYYYKW@RCYYY>OeYCCC/޹OvCCCY!ޯJOYYYYNYYYYNYYYoNYYoo0QNoYoo:2Noooo:N. NNNN NݪݶNݪݶNݔNݔNx Nq֜"Nloo) +NhoooY,NhYCC-,Mm----,Mv-,M.M<ê&<$Ϯt=oY~hh~p9RRRh:,hhRR6)RRRR3G"RRRR.c̸RRRR*̢RXooo2oooooooooYYYvYC--*----9A"C"b @ +/7T'{---CCmCCYC)CCCCCCCC߯?CCCCXߟi^CCCC)߶@yCC-- +----A----C--CD---~---tSD--j -C--] ----O3 CCCCA/%CCCC4E/0CCCC'K/9CCCC/@---C.ECCCC +.HCCCC.GCCCYt.Cooooa.=ooooS.6oO..V.&m.Ǫ텕.DZ퐎. 퓎.ǔ퓄퓁ָsoooofoYYCXCCC-K7){mm-CYhhhRR~5<&ys!}2K Ztb3`D͔=n{RDv44=̔jDo.wg7hRh-d)<聸L\,h΀ycoiNZ4ďLy@94*"؎"099-"z---CiC--C_CCCYQoooof@oooo~C/o~h~h.ooohhhh% +~oooohhhh"{oooohhhhۍzYYCChh~|CCC--֤ꑍ֞vݻ[ݨ=ݘ%݃k}T،yAt3-p3YYYYhhhRjA YYC-<&<Uhhh~-P]|cƪbJ:]uRҚ%BйI+НpkH`֞ߚoXF=1s ߡ |]D>#*NyxKѤj\'N8;$=?N. O</~8<ֱ,n4, +KOlbn*[SF'}{6`6BC?&R +oobsoooo0l5oYCCGsCCC-Xu----bp---fbcO--Z8 y--CCK!.tCCCC7>qCCCCEoYYYY>nYCCCu.nCCCCmCCCC}kCCCC-NmgCCCC bCCCC _[CCCC-RCCCCFCCCC----8CCCC---4*CCCC-KCCCCCCCCr'CCCCbCCCCSvCCCCE'CCCC9CCCC/CCCC&-lCCCC(8CCCC +CCCCCCCCCCCCfCCCCBCYYY2rYYoo0dooo9VEIL<Lz0@i%-\L? +o+oooo֦oooYYCCC--Եƞs~\zO-Cow;s(o~hhhnoYCYhhR&j5a d"}3p~^DvDZw`4C#R'pV]` hTX~R&<-YPpL6BI38/ݨ/ܪ,/Ǫ*,)ܯ()"ܕ'N"y& 6[& <, ? f  Ҫ̾Ṋ,̟;Q̔̋M̄w=~!ycu~roooo oooooGloooojXi~YYYCfCC--c---- `---Ȁ]Z XP1VMUր\Vet\YE"V^ Mf&4roāÓfç3ümBESœ+<6z?j|GZ"NJU<~]/6g%r}ކ +ލ]jޒ-:Tޖ----GޗCCCC8ޗCCCC/ޕCYYYޔoo~ݻޗ~hhRݴ ޝooRRRhݲݥoYYCh~~ݫݱCCCCݡCCCCݖCCCC݅CCC-r---֘`/֑OnS?Vz3>'&| x(t XojeΗC_ͷ ,Yooo~hhY͹p foYCC<<<;*]D4S''S:ͦ# .K6͖o~&~4͊,R<}-|/}-CYox}~hRt +}&<&&o|5&j|h"wݛe|Y3JD.Sa|D`D''S~^|o#}܆[|Y~hY|hhhh-YoV|~hRRoT|<<<<Q0|RRhhMk|hh~~H|E|@|<퓢|9|6ݝ|2ݹ|0a|-Q|+ 4|( |&e|$|$l|-z|B t|m w| t| z|O }|||׫| |: }d~}~~~~}~~~~~~~~~|6~~~~~~~~ooo+pooooJ[qoYYYbrYCC-tטr---swss|~spet_R/t---H?8t----+#8t---- +/tC--Ct----&t----s----Ys----*s-Ss-- s----r--srrUqpqoqy_pl-Papb----Bp]----56[----*Y~]----!cEa----Pg----&~n----~v----~~----~CCCCo{~CCYYcl~oooocc~ooohT~oE~o9~~f*~~~U~E ~ooo2}}ooo"}{oYYY֥}zYYCC֞ +}zCCCC}z-- }~}u}c}N};}|&}x}-Ct|op|~hRl|oYCRRRRg|Co &aaͷ|vh" p[|CvDϻV퓙|D`4~R팍|-.wN휀|~RV|hhhh:M|h~~~6G|~~~~2G|~~~~/IA|~~~~+;|~&m5|~"5|2|p)|ݶ&|#| | Y|" |: |h | n||_|/| +P|#D|~~N|~~~~x0}~~~~}~~~~,f~~~~~#!~~~~ooooh~~~ooooBߵp~~~~oooYbvq~ooCY|r----r---5sʘssts2tDtynPtaRaPtK3cGt68t#- tKtUcV*c$zc8c}bxbXbbayFaj`[`Jj+`--:Qo+LX?$cF f~k_~L~+f~-T~----B~CC-C3~CC--p$~CCCCV~CYCC~~hE ~CCCChhhh<~YYYYRR<<5}YCCC<<<<)}CCCCRRRR}--hhhh}~~~~}ę}ݭ}zݟo}tݖ]}m݊H}gw3}bb}\O}X:|S%|N|C~hhhJ|CCCChR&&D|--&&>%|-o&6*{| v!RK p0#l|2YC͔'* Z|43YS&N|-ݛK"B|wh&hͼ6|?&--*|&&Yooll&&o? lj<<&<oo ikARRRRoorkRRRRooHkRRRRooo[RRhhooo̹[hhhhooooj[hhhhooo#[hhhho/[h~~~oooo̷[~hhhoooܑ[~~~~oooo_[~~~~oooo[v~~~~oooo)[d~~~~oooo7[U[LĦ[HNd[H)[Goo0[Aoooo9m[7z[)o +[o>[ ooooQ[*ooo*G<\<oooQ)\U~~ooooz]u~~~~oooo]~~~oYYYT^ĔYYYC +_C-C-oC---`.--(1aG2a]5Dbo3ab~*:bc +rW-kVqD]#q*Sjq --GaCCCC:`---+k`--#`h oB-po-CCC_CCC-^----^----f^CCCC3^YYYY ^kYoooֹ]Wooֳ ]E֬]3ئ]!~~̗]~hhhӋMhhhhMRRRRyMRRRhyMhhh~,pM~~Ջp_CC--P:q<---]qblbabYv_Zk-Fjb(mZfS----]L----%DE----+>-W= 7'0)Nt")3EV | o־apR%A2c%_Xt----o--Sξ---:θh'β---Eά-CCC-ΨCYCY$ͥYYYo"ͣo־"͡&͟&͝$͙͛~~~~ +͗oo~͕YYCC͓֔CCC-͑----m͎Z͋~N͇y8̈́u(̓q̈́m͇j̋f̏Cby̔Yo^̙oo~hhRZ̞C-RRRRTޣ̢-Y&KO̥ۖ!2ݛ.J̧CJDaKDt̩D4Ya~?]w̪hv.a;rn̫h<&R8n̫&&RR--Yo6g̪<<&&4a̧&&&&DZ3ạ&Ռ""KaawZ܌}"hR"<{&"v``55&&&<0 Rhh~QzooYCC-э&----D---CXCCYCme~hCCCY^ihh~CCCCTi~hhCYYCNXRR&YoJG5 G0Dͪ5JvB~Sϸ>5"&R"}8эZ"3C3S'Y3o3-'''33(v=iװ33$[ZY3-3!D5""h3=h~̪<"&.pݛvJ5 RY-Yo w pdS   C   L      555555555~hhHJJ``hhhhE``vvhhhhmvvvhhhhthhRR><<<&"&&&&03&"&<"< 6R"Rh"h>=}"}" _A""w3{D""wwabG23awaamK33KKKKHQ33K5K5'X33KKKKb""Kawwp""w.}"hh"RC<"&&"Vˍ_vv&&X:`J5&<=h=/H5 +!&<"h*:D"2&%Ύ3--3C#C3CC3C!C3CY3os.po3CC3XȪ +K#"'S"hR"<vh~̪&"&&" e. UZ݆ `Jw< ݅CD-Cݴ=%ooݭ:,ݶ:/6-':':D7DJN  Q  WU55~/X5555~~̾[JJ``~~~h_``vv~~hhevhR<<}i<&&&l&Ul"&&"VΏLJ핟ǀozN&&u,o`w/!h3.*33ϻ'&-#~K"Ch~~~~dž~~~~0~xs~~h~DZ"~~hhDZMhhhh%hhhh#hhhhDZDhhhhgDhhhhhhhhhh~~o~~oooooooYςYYYĊC---!-----ń\݄*لⷄ{rVL!Gn-----Ϸ---wR----Xށ----Do----8Z----0x---'----D097R&Ќ۸˽----ˌ-CCCՌCCCYYYoooo헦}퐯~x퉯ooos텪oo~~~m퀢ooY~~h{YYCCbwCC--^p-XkwTfnOdaKaPFVGCA:?,%<9 6Coo2%YYYC~h<..׋-RRR<*5ʋC&K&0`R" ޱZ o3`DSwKDJ3Y5wS蛋RvK쒋h&<&&<-CYo)<& : A&&&< H<T5P,rL a֪HT-CYY~~CCYCCC~hhR?"6<<&&;.%CK6,`R"ݛ.ͪ03`Dv'wa+`D3w˔&5oDw"R&< ۋ&&&<-Co &&&o &&<<<'RRRRAۋRRRhkϋhhRR NjhRhh hhhhhhhh'hhhhHhhhh̆hhhhshhhh,hhhhJhh~~S~~hhh +vhhh~ cvhhhh ^nh~~h nhhhh>jhhhh"fhhhhahhhh6 fhhhhEnhhhhhhRRͧhhhRhhRR;9RRRR_RRRRQRRRRoooRRRRooooώRhhhoooYhhhhYYCCih~CC--$----&Á--A.𼖂(˂E +߂ς索UQko?\߁2Y ------r]--_--S-JI@5),׍9ˌΌŒ--C퐶CCCC퇺CCCY~YoooֵtʌkҌaތV ooLo~E(ooYA4YCCC֊>?----քJK -0Y<"-3p( tDJJD4S$.̐3h܆")̭oh!R&&&-CYooooo)&&oooo4KRRRRooYo1oRRRRoooo  ܒ<<<`J5RRhhi/ h]NF݅ooY9uCC--"lP- *_----[<----0C-CC;YCCYȪYCCYN\C--Cr--CC !EYYoo 9~~~~oooo~ 6~oooov~~~~oYYol~oYoYdUYooo[hP#~~oooYU_)ooooQf~~ooooNo슔oYYoLqV~~ooooJf!~YYoCFN~CCCCC2ܶCCYC?܃CCCC< +QCCC-: ---C6YCCY4ŔYYCY0͛CCC-,%s-CCC(2LYYCC$?&CYCC LC-C-Yڔ-CCCaCCCCaC---flC--C fH---Ca%CCCCaC---]CCCCPCCC-L-C--Cv--;O2&)!~ysyCww----y---C{CCCC{[CCC-t0CCCCdYYCYO]CCCYA]C---7X---5]<]-LaZ]~h&]aC5KO]&"-3Ɔ5a4D``D4ϻ e3CR`̔.a~<h.eCoHeݾZj  _j   ]n   ]r   wr&&&& ݸw&&&&ݶw&&&&-&&&&&&&&ݮ&<<<ݫRRRRY-C-x+ԆRhhh---j~~~~X-?)Æ"ФT_n#مO>Έޖ g]oK؃^DSTF҂Kk\:V͐~6B-CC~hR<2 -Yooo&-4ooo( mvK #ܧh"o3.~`DD'ϻ`D-#'܆Xohh<&&- soooo*soooorooYYrCCCC?SrYYYYrrYYCC]ޤqCCCCFqqCCCC8qCCCC0pCCCC(ޝlpCCCC]pCCCCDCCCCRqCCCCu$YYCCݓ~YCYYݨ~oooYݻ\~YYYY)~Yooo~ooo}o}oo}}}֥ޞ}ޣ}}ݔ}ݔ~ }~~~~"}0}7}|:}oox:}oYYCt7}CC--p3}----n.}-CC-k)}---h)}----d.{}---a3g}~--CC^,W}eCCCCZH}JYoV>}.hhS.}RRR +m!h2YKݛDC.lwDDh:lJC#<`ݱK6l-~h-3\hhh~Coo0\~hRR-0\RRahod<̏U3TF.53u&83 %p-όӰѦћʛ͹ͦɌ֬͑Ό֦Ҍ--CCqҌCYYYe׌Yooo~~^ҌoYYYhhhh[ΌYYohRR<[ŌooRRRh}YYC-h~wRqFl6f#yal\ZX HT6P$LHD@--C~hh;ԋCC--<&&&6ˋ.CCo&&1b!&w,氋2Cp.S&ϧˌDDϻ"J4SܛȚ5 C~K&h⚛kR&&&-<<&&CYoo  >&&&<nct-- ---"--C-ߚ[----p|----Eߝ[--*--VS-n"!t dj a_, XE?:NO?Br;?6N*ƨNF----mN----3N---N----]C-CC]1CCCC]LCCCC]`CCYC]nYYYY]voooo]zo]z]v]pǪ]i]a]Y]Q]Looo֢]IoYYY֜]HYYCC֗]HC-]I|]Kf]NO]P9]R|']Sx]Su\R-Cq\QYom\O~RRl#zIƯ-Vi--------Ё---0}----%----忀----]----v--i磏-[B---M-?]2Jc&V'rӍ 횗퇒p]QJHHHwEm---->dCCCC7QCCYY.Doooo֡'6oooo"#o ooooooooooooԌYYCCŒ--|wr nsje-fRbD^6Z$VTݻ-CPݹYYCCMC-~hhhHhhh"C.͔9vDvD4K5a4ݶ3-&J˔D/ݨRh,ݭ&&-Yo)ދ<&&&'ދ&ڋ&&#ڋ<<<< ڋRRRR ՋRRRR>ڋRRRRtȋRRRRȋRRhh ]̋hhhhȋhhhh̋hhhh8ȋhhhRW̋hhhh<ȋhhhhf̋hhhhZ̋hRRhыRRhh #̋hhhh ыhhhh0ыhhhhl>֋hhhh֋hhhh ֋hhhh{hhhhhhhhEhhRR1URRRRXRRRR~.RRRRʍhRRR͐RRRRosRRRRoxZRRhhoooo8SAhhhhYYYYRIhh~~CC--fU~---CqfC--vh-sXBi"qXཀBX'VmP\&{;Ã[*?~f@fyzti9\yڏNaw?E0)Ύ" S +-ݍύݽʍݦō݊kH'֥ ܋-x----ֈͼfCCCCͷTCYYY|͵A>Yooo~~uͰ*`oYoY~h~hnͦYYYohhh~h͛oYYC~~h~b͊C-~~\u،VcŜPP&JBFE4e?#|:n6\2E.2*)%&E" e-~hC---&&&--Y&J!ܦ<<hhhhlJMahhhhfAMRRhhb3MhRhh]&/Mͱhhh~X(&Mooo~T#]oYYYO]8CCC-J][-F\}C!\@&\=(\:-l94l)8?lP5Ml~-4glCYoo~hh1͊l<&.͢|@`ι+ͩ|R"Ս5 ޱ'ͦ|Y3JDp.̔$ͦ|U%%E="ͤ|DJY#R'hݱ"ͫ|vCK&"|hhh-C!|~hhRoo!'|R<<&!F|b^^`^eoo~YW_$oooYT @oooYe@YC--Ai----B.&33O4-P4ZC---p4)----p$---C]$--C-c9$CCCC;s$hCCCC#7CCCC#C--a=----w݋oe4/<Z\ +RY\GB:,%Wv0Ii GhnIk--N2-o ----G----)------ +--{---C +XCCCC 6CYYY +oooooֈԛݴ}ݔxשut͖V~nƄ6ojmooYYedYCCCaMCCC-\6ͷ-X)͘TzP\L?J"FtDhBa->aCohhhhFݫ--R&?ݑ v!hK.8k +2CJw2HJD43w=,3ܛ5(3h&&$:Ջ&-CYo!<ȋ&&83 &&&3&<<<<-<&<<DZ R=<<<<iL<&&<uZ<<<<i}gRRRR.usRRRR̤p}RRRRgRRRR漒cRRRR_RhRR̤_RRRR܇ZRRRR0ZRRhhQhhRRQRRRRQRhhhooohQhRRRoo^ QRRRhݴMRRRRރQRRRRPރVRRRRޯ_RRRhopRRRR--CCYhhR&: ?oo5k50vR"K p+Y3`Dh&DD廹ϻ"+ J4o}v'p +K-~Rϻ+uRRRR-+RRR<--Co+<&&&o+&&&<&;~~ooo8;V~oooon;l~~~oȍ;oooȍ;oooo̰;oooo';Ȫoooo҉;ުoooom;oo׎K +)KooqK2ooooKDKUKd{KrK~oo&Ko`Koooo K -K@GK}^KeK~~~cK~~~~cK~~~~o+g?L~~~~ooooSgLhhh~ooooyg-M~~ooooqMŔoYYYNC---hO----J@"AABnCY-CC----gC,CCCC4CCCCC3CCCC3CCCCet3CCC-93-CCC j3CC--E;3i----2G----2$----|k"---n"---d!Zg!-P!m--D; K----6R *----*-/ -CC-I--CCfWCC-----CCCCCmCCCCeRCCCC>7----\ CCCC> +CCCC$ CCCC CYCY YYoo oooo \o 9֪ Ǫj]soKSooooւ63oYYY} CCC-x-tokhfd퉽B-a~--^tZk--YXk|oTyfܤo~hhPU܈YYCYhR<&LCm5KF2S"}3Zh@p%9DDww;JDJ#S83 CK<40R<&-2A~~~~>~Z ݇,~ͦ~ͼȔĖX~ ( Î~~ ~~~~! ؒf~L n*~璋~}~~~~IZ~~~~Z~~~~ѵ/~~~~4Ӌ~~hhG hhhhqYhhhhҌhhhhwhRhh9hhhhhhhh>^ hhhhoooo^Bhhh~oYYYxD~~CYC-\----xs---]xBфzcH"'ڄ&-w}CL}oS0Z&-~4p>a>IR7B+40)mF&$& + ---֍C-CCɍCCCCYYooooo~~r~]~~hhCoh~~)oYCC֠C-CCCCCCCCYo~~~ʌoohhR<{o&&&{YCtwK }dfh<ݱpxLLaD...u5K5 ..DZq,{ pݛn,g55 j5W55Ka555fADaJ4&&RKKaZO ~wUACooP% oY<~JC-oFD  B0ً?mы=ʋ5:Ƌ6¾2J.ݯ  )T55$i!΢H55555555555545555;J55JJJJJ"욋J`J`<ƞ``J`l--JJJJ---C`JJJԦCCCC``J`PYYYY```JYYYYJJJJ+΋YoooJ`JJ&oJJJJ#,JJJ5F  i  ǭ4DZoooYY~YYC-?---- oo cooooCɂYYCC. C---]7--Cֱ?֏0i@aEOA EsHwfL [QрOVwDQ 8C͏ *3{',%1< sGDR^jwɍξּĮִݻ֬ݯ֥ݟ֝݌֗y֐iY{(ւMs;}DgN-~w<_a-CC-~~hhq5Os----hhhhl,H--CCRhhhf 8CC-hhhha0h~[(VQL HC?٬;;ͬ"8ͤ34͍E0X-xk)~~hR$͑s<<&&ͦg-&&&ͮWvKݱ͝HR"Y3Z'|@33' [0-#hv~KF$*R&&1E-C&`Yoo1{Y̏黪&̵ݻ&&&&̩ٻ<&&&nѻ&&&&=ƻ&<<<D<<<<^RRRRoooR +CYoo~h<&^>o&&Z >1 `wUl>B!R2Cݛ.P\>RC4D̔=LH>aD`4'S̔J<>p o.KH$>~hR<F >RRhh-YooC.=hR<&ooo@O=&&&&=k=SH|DDJ::L|# SK6.L|Yh&33T|RRRh-CY0E\|hhhRo.X`|RRRR+dh|Rhhh(dt|~~~~$d|~~"~|||U|| %| |||,|_| I|DZ | |6 ̼|s G||&Z|E|j| |?|j|~0}~~~~}~~~~~~~h~~h~~~<Wp~~~oo^(HpoooC|8qYYC-# r----;s----Us--ct-\u4uu-xv---_$v----A0vCCCC0vCCCCq vCCCCv----u----iʼu----7u----aDu-7t-t---Pt--- +ss&0sz0rk-tr\$rMq--?dq-2q----&p----p----@p----p-----------t--CCTCCCY,YYYYoooo~oo~퓨~펐~p~~~T~~~~~<~~~~ooYY~YYCC֟y}CC--r}--m}m}k}dx}Q\}}7H}y%4}u }q"}-CYn)}oohj.|oC-hhhhe.|-ohh&_,|5KݛY"|}2C.ͪT|vDvJ4wN |#SKJ |C֔R&F|<<%d|RRRR:)\|hhhh60X|hhh~2HP|~h~~.~H|~~h~)@|~~$4| 0|~(|$|~g|͢|~~ ݃|~~~~ |~~~~ o |~~~ |~ 4 |~, |~~~~\|~~~|~~~~|~~~~X{~~~~|h~h~|~hhh- |hhhhEq |hhhRmD|RRRR||RRRR|RRhho}<}hRRRooo +G}RRhhoooY,x~hhRhoYYCJ<hhhhCCCC`phh~----ppz0q|7ry),sps_4tJks4s%Mtཏtt---at---0t----)t---[St----tat/tss\s svfrk]Wr`mqRq-DCq---7p----*–p----EpC--CpCCCC +ͿCCCCĊCCCCXYYYo-ooo~~휷~퓜~ݪ퉉~ǔn~ݔ~~{Z~y<~y%~֮{~oooy}ooYYt}CC--p}--h}-_}--Qx}Aa}:F}<3}---H}-CCY~X|ozk|ohhhvt|oooohhhRpm|&KjS|"}3ݛDe5|CJvD`h` |44Y#h'h܆\l|v-5&hY\|hhh-YV%E|h~~ooT5:|hhRRPL.|RhhhLa|h~~Hd|Eh |@|;{6{2{,ݹ{({&{"ݫ{!{{ U{ ŷ{" {2 {T !{{{4{{D{ |>%|ii||I}}~o6sooooXz`pooYYs@qYCC-r----r--lssMtYt|*t--et----Ht---C'at-CCCtC--Ct---C_t----}mt----M7t---sʾspsqs>rerrqv$Dqg-pX9p-J;5p---=7---2+----'"cj--*G----~&----~----n----n----n----xn----fnj--CCQnJ-CCC8n)CCYY"nYYYo +^ooo]Džֿ]]~~횢]l~~~퐆]M~~~~m]-~h~~~P] ooY~wBMYYCC֘p(MCC--֓kMC-hLhLlhLN \ No newline at end of file diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/input/237s2.hea wfdb-10.6.2/checkpkg/input/237s2.hea --- wfdb-10.6.1/checkpkg/input/237s2.hea 1969-12-31 19:00:00.000000000 -0500 +++ wfdb-10.6.2/checkpkg/input/237s2.hea 2019-03-08 14:46:14.000000000 -0500 @@ -0,0 +1,8 @@ +237s2 6 125 6250 22:00:38 20/07/1995 +237s2.dat 212x4 1053/mV 12 0 -20 -5512 0 II +237s2.dat 212x4 2456/mV 12 0 2 -8647 0 V +237s2.dat 212 13.335(-1600)/mmHg 12 0 -814 -29241 0 ABP +237s2.dat 212 39.8(-1605)/mmHg 12 0 -961 -28570 0 PAP +237s2.dat 212 2000 12 0 -927 -31661 0 PLETH +237s2.dat 212 2000 12 0 -1293 2950 0 RESP +#Produced by xform from record 23700057, beginning at 0:00 diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/lcheck.c wfdb-10.6.2/checkpkg/lcheck.c --- wfdb-10.6.1/checkpkg/lcheck.c 2018-11-28 16:55:57.000000000 -0500 +++ wfdb-10.6.2/checkpkg/lcheck.c 2019-03-08 14:45:26.000000000 -0500 @@ -1,5 +1,5 @@ /* file: lcheck.c G. Moody 7 September 2001 - Last revised: 15 August 2017 + Last revised: 8 March 2019 ------------------------------------------------------------------------------- wfdbcheck: test WFDB library Copyright (C) 2001-2010 George B. Moody @@ -179,7 +179,7 @@ if (WFDB_NETFILES) { if (vflag) printf("[OK]: Repeating tests using NETFILES"); - if (strstr(defpath, "http://") == NULL) { + if (strstr(defpath, "://") == NULL) { fprintf(stderr, "\nWarning: default WFDB path does not include an http:// component\n"); setwfdb(". http://www.physionet.org/physiobank/database"); diff -Naur '--exclude=Makefile' wfdb-10.6.1/checkpkg/libcheck wfdb-10.6.2/checkpkg/libcheck --- wfdb-10.6.1/checkpkg/libcheck 2018-11-28 16:55:57.000000000 -0500 +++ wfdb-10.6.2/checkpkg/libcheck 2019-03-08 14:48:58.000000000 -0500 @@ -1,6 +1,6 @@ #!/bin/sh # file: libcheck G. Moody 8 September 2001 -# Last revised: 19 October 2017 +# Last revised: 8 March 2019 # # This script checks the functionality of the WFDB library by comparing the # outputs of 'lcheck' with expected outputs. See 'lcheck.c' for details of @@ -31,14 +31,22 @@ DBDIR=$1 LIBDIR=$2 +DBURL=http://physionet.org/physiobank/database # If not using DESTDIR, test the built-in path used by the WFDB library. -# If using DESTDIR, set the WFDB path explicitly. -if [ "x$DESTDIR" = x ] +# If using DESTDIR or WFDB_NO_NET_CHECK, set the WFDB path explicitly. +if [ "x$DESTDIR" = x ] && [ "x$WFDB_NO_NET_CHECK" = x ] then unset WFDB else - WFDB=". $DBDIR http://physionet.org/physiobank/database" + if [ "x$WFDB_NO_NET_CHECK" != x ] + then + mkdir data/www + mkdir data/www/udb + cp -p data/100s.* data/www/udb/ + DBURL=file://`pwd`/data/www + fi + WFDB=". $DBDIR $DBURL" export WFDB fi @@ -77,9 +85,13 @@ CF="$CF udb/100s.chk udb/100z.dat udb/100z.hea" cp ../data/100s.atr expected/udb/100s.chk cp ../data/100s.dat expected/udb/100z.dat - sed s+/usr/database+$1+ expected/lcheck.log + sed "s|/usr/database|$DBDIR|" expected/lcheck.log else - sed s+/usr/database+$1+ expected/lcheck.log + sed "s|/usr/database|$DBDIR|" expected/lcheck.log fi PASS=0 diff -Naur '--exclude=Makefile' wfdb-10.6.1/doc/wpg-src/wpg0.tex wfdb-10.6.2/doc/wpg-src/wpg0.tex --- wfdb-10.6.1/doc/wpg-src/wpg0.tex 2018-11-28 17:26:14.000000000 -0500 +++ wfdb-10.6.2/doc/wpg-src/wpg0.tex 2019-03-08 19:56:10.000000000 -0500 @@ -9124,6 +9124,22 @@ @unnumberedsec WFDB 10.6 +@unnumberedsubsec Changes in version 10.6.2 (8 March 2019) + +Changes to the internal functions @code{get_ann_table()} and +@code{put_ann_table()} ensure sensible and consistent behavior if a custom +annotation type is defined (using @code{setannstr()}) but no description is +provided (using @code{setanndesc()}). Prior to version 10.6.0, the library +would typically set the description to @code{"(null)"} in this case, but this +was not guaranteed. In version 10.6.0, this behavior was changed in an attempt +to fix the undefined behavior, but the result was an annotation file that could +not be read correctly. Version 10.6.2 fixes both of these problems; annotation +files written by any older version can be read by version 10.6.2, and +annotation files written by version 10.6.2 can be read by any older version. + +Changes in @code{isgsettime()} and @code{isgsetframe()} avoid incorrect +behavior if the specified time value is large enough to cause integer overflow. + @unnumberedsubsec Changes in version 10.6.1 (28 November 2018) The internal function @code{edfparse()} will correctly calculate the ADC diff -Naur '--exclude=Makefile' wfdb-10.6.1/lib/annot.c wfdb-10.6.2/lib/annot.c --- wfdb-10.6.1/lib/annot.c 2018-11-28 16:55:58.000000000 -0500 +++ wfdb-10.6.2/lib/annot.c 2019-03-08 19:54:57.000000000 -0500 @@ -1,5 +1,5 @@ /* file: annot.c G. Moody 13 April 1989 - Last revised: 23 January 2018 wfdblib 10.6.0 + Last revised: 8 March 2019 wfdblib 10.6.2 WFDB library functions for annotations _______________________________________________________________________________ @@ -202,7 +202,7 @@ static int get_ann_table(WFDB_Annotator i) { - char *p1, *p2, *s1 = NULL, *s2 = NULL; + char *p1, *p2; int a; WFDB_Annotation annot; WFDB_Frequency sfreq; @@ -221,21 +221,22 @@ sscanf((char *)annot.aux + 20, "%lf", &(iad[i]->afreq)); continue; } - p1 = strtok((char *)annot.aux+1, " \t"); + p1 = (char *) annot.aux + 1; + p1 = p1 + strspn(p1, " \t"); /* whitespace preceding annotation code */ a = strtol(p1, &p2, 10); - if (0 <= a && a <= ACMAX && p2 != p1 && - (p1 = strtok((char *)NULL, " \t"))) { - SSTRCPY(s1, p1); - (void)setannstr(a, s1); - p2 = p1 + strlen(p1) + 1; - if (*p2) { - SSTRCPY(s2, p2); - (void)setanndesc(a, s2); - } + if (a < 0 || a > ACMAX || p1 == p2) + continue; + p2 = p2 + strcspn(p2, " \t"); /* non-whitespace following code */ + p1 = p2 + strspn(p2, " \t"); /* whitespace between code and mnemonic */ + p2 = p1 + strcspn(p1, " \t"); /* non-whitespace (mnemonic) */ + if (p2 != p1) { + if (*p2) + setanndesc(a, p2 + 1); else - (void)setanndesc(a, (char *)NULL); + setanndesc(a, (char *)NULL); + *p2 = 0; + setannstr(a, p1); } - } if (annot.time != 0L || annot.anntyp != NOTE || annot.subtyp != 0 || annot.aux == NULL) { @@ -277,7 +278,7 @@ if (anndesc(a)) n = wfdb_asprintf(&str, "%d %s %s", a, annstr(a), anndesc(a)); else - n = wfdb_asprintf(&str, "%d %s", a, annstr(a)); + n = wfdb_asprintf(&str, "%d %s ", a, annstr(a)); if (!str) return (-1); annot.aux[0] = (n > 255 ? 255 : n); memcpy(annot.aux + 1, str, n); @@ -704,8 +705,11 @@ WFDB_Annotation tempann; WFDB_Annotator i; - /* Handle negative arguments as equivalent positive arguments. */ - if (t < 0L) t = -t; + /* Handle negative arguments as equivalent positive arguments. As + an exception, WFDB_TIME_MIN indicates that we should rewind to + the very beginning of the annotation file, even if there are + annotations at negative time values. */ + if (t < 0 && t != WFDB_TIME_MIN) t = -t; /* Loop over all annotators. */ for (i = 0; i < niaf; i++) { diff -Naur '--exclude=Makefile' wfdb-10.6.1/lib/signal.c wfdb-10.6.2/lib/signal.c --- wfdb-10.6.1/lib/signal.c 2018-11-28 16:55:58.000000000 -0500 +++ wfdb-10.6.2/lib/signal.c 2019-03-08 19:54:57.000000000 -0500 @@ -1,5 +1,5 @@ /* file: signal.c G. Moody 13 April 1989 - Last revised: 28 November 2018 wfdblib 10.6.1 + Last revised: 8 March 2019 wfdblib 10.6.2 WFDB library functions for signals _______________________________________________________________________________ @@ -627,6 +627,7 @@ else if (in_msrec && !first_segment && framelen == 0) { /* opening a new segment of a fixed-layout multisegment record */ + ispfmax = vspfmax; if (nisig > nvsig) { wfdb_error("sigmap_init: wrong number of signals in segment %s\n", segp->recname); @@ -645,6 +646,7 @@ else { /* normal record, or multisegment record without a dummy header */ nvsig = nisig; + vspfmax = ispfmax; for (s = tspf = 0; s < nisig; s++) tspf += isd[s]->info.spf; return (make_vsd()); @@ -1684,7 +1686,7 @@ long nb, tt; struct igdata *ig; WFDB_Signal s; - unsigned int b, d = 1, n, nn; + unsigned int b, d = 1, n, nn, j; /* Do nothing if there is no more than one input signal group and the input pointer is correct already. */ @@ -1774,8 +1776,18 @@ default: b = nn; break; case 16: case 61: - case 160: b = 2*nn; break; + case 160: + if (nn > UINT_MAX / 2) { + wfdb_error("isigsettime: overflow in signal group %d\n", g); + return (-1); + } + b = 2*nn; + break; case 212: + if (nn > UINT_MAX / 3) { + wfdb_error("isigsettime: overflow in signal group %d\n", g); + return (-1); + } /* Reset the input counter. */ ig->count = 0; /* If the desired sample does not lie on a byte boundary, seek to @@ -1785,7 +1797,7 @@ t += segp->samp0; /* restore absolute time */ if (i = isgsetframe(g, t - 1)) return (i); - for (i = 0; i < nn; i++) + for (j = 0; j < nn; j++) (void)r212(ig); istime++; for (n = 0; s+n < nisig && isd[s+n]->info.group == g; n++) @@ -1794,6 +1806,10 @@ } b = 3*nn; d = 2; break; case 310: + if (nn > UINT_MAX / 4) { + wfdb_error("isigsettime: overflow in signal group %d\n", g); + return (-1); + } /* Reset the input counter. */ ig->count = 0; /* If the desired sample does not lie on a byte boundary, seek to @@ -1803,7 +1819,7 @@ t += segp->samp0; /* restore absolute time */ if (i = isgsetframe(g, t - trem)) return (i); - for (i = nn*trem; i > 0; i--) + for (j = nn*trem; j > 0; j--) (void)r310(ig); istime += trem; for (n = 0; s+n < nisig && isd[s+n]->info.group == g; n++) @@ -1812,6 +1828,10 @@ } b = 4*nn; d = 3; break; case 311: + if (nn > UINT_MAX / 4) { + wfdb_error("isigsettime: overflow in signal group %d\n", g); + return (-1); + } /* Reset the input counter. */ ig->count = 0; /* If the desired sample does not lie on a byte boundary, seek to @@ -1821,7 +1841,7 @@ t += segp->samp0; /* restore absolute time */ if (i = isgsetframe(g, t - trem)) return (i); - for (i = nn*trem; i > 0; i--) + for (j = nn*trem; j > 0; j--) (void)r311(ig); istime += trem; for (n = 0; s+n < nisig && isd[s+n]->info.group == g; n++) @@ -1829,8 +1849,25 @@ return (0); } b = 4*nn; d = 3; break; - case 24: b = 3*nn; break; - case 32: b = 4*nn; break; + case 24: + if (nn > UINT_MAX / 3) { + wfdb_error("isigsettime: overflow in signal group %d\n", g); + return (-1); + } + b = 3*nn; + break; + case 32: + if (nn > UINT_MAX / 4) { + wfdb_error("isigsettime: overflow in signal group %d\n", g); + return (-1); + } + b = 4*nn; + break; + } + + if (t > (LONG_MAX / b) || ((long) (t * b))/d > (LONG_MAX - ig->start)) { + wfdb_error("isigsettime: improper seek on signal group %d\n", g); + return (-1); } /* Seek to the beginning of the block which contains the desired sample. @@ -2819,13 +2856,26 @@ FINT isgsettime(WFDB_Group g, WFDB_Time t) { int spf, stat, trem = 0; + double tt; /* Handle negative arguments as equivalent positive arguments. */ - if (t < 0L) t = -t; + if (t < 0L) { + if (t < -WFDB_TIME_MAX) { + wfdb_error("isigsettime: improper seek on signal group %d\n", g); + return (-1); + } + t = -t; + } /* Convert t to raw sample intervals if we are resampling. */ - if (ifreq > (WFDB_Frequency)0) - t = (WFDB_Time)(t * sfreq/ifreq); + if (ifreq > (WFDB_Frequency)0) { + tt = t * sfreq/ifreq; + if (tt > WFDB_TIME_MAX) { + wfdb_error("isigsettime: improper seek on signal group %d\n", g); + return (-1); + } + t = (WFDB_Time) tt; + } /* If we're in WFDB_HIGHRES mode, convert t from samples to frames, and save the remainder (if any) in trem. */ diff -Naur '--exclude=Makefile' wfdb-10.6.1/lib/wfdb.h wfdb-10.6.2/lib/wfdb.h --- wfdb-10.6.1/lib/wfdb.h 2018-11-28 17:29:56.000000000 -0500 +++ wfdb-10.6.2/lib/wfdb.h 2019-03-08 20:04:32.000000000 -0500 @@ -31,7 +31,7 @@ /* WFDB library version. */ #define WFDB_MAJOR 10 #define WFDB_MINOR 6 -#define WFDB_RELEASE 1 +#define WFDB_RELEASE 2 #define WFDB_NETFILES 1 /* if 1, library includes code for HTTP, FTP clients */ #define WFDB_NETFILES_LIBCURL 1 diff -Naur '--exclude=Makefile' wfdb-10.6.1/lib/wfdbio.c wfdb-10.6.2/lib/wfdbio.c --- wfdb-10.6.1/lib/wfdbio.c 2018-11-28 16:55:58.000000000 -0500 +++ wfdb-10.6.2/lib/wfdbio.c 2019-03-08 19:54:57.000000000 -0500 @@ -1,5 +1,5 @@ /* file: wfdbio.c G. Moody 18 November 1988 - Last revised: 28 November 2018 wfdblib 10.6.1 + Last revised: 8 March 2019 wfdblib 10.6.2 Low-level I/O functions for the WFDB library _______________________________________________________________________________ @@ -592,6 +592,7 @@ SFREE(p_wfdbgvmode); SFREE(wfdbpath); SFREE(wfdbpath_init); + SFREE(wfdb_filename); } void wfdb_export_config(void)