aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bird/bird.c375
-rw-r--r--bird/bird.dllbin0 -> 36864 bytes
-rw-r--r--bird/bird.pd_linuxbin0 -> 6896 bytes
-rw-r--r--comport.dllbin0 -> 36864 bytes
-rw-r--r--comport.expbin0 -> 578 bytes
-rw-r--r--comport.libbin0 -> 1952 bytes
-rw-r--r--comport.pd_linuxbin0 -> 9604 bytes
-rw-r--r--comport/CHANGES.txt8
-rw-r--r--comport/LICENCE.txt360
-rw-r--r--comport/README.txt29
-rw-r--r--comport/comport.c979
-rw-r--r--comport/makefile82
-rw-r--r--comport/testcomport.pd81
-rw-r--r--docs/Serial-Programming-HOWTO.book.pdfbin0 -> 19999 bytes
-rw-r--r--docs/serial.docbin0 -> 127488 bytes
-rw-r--r--docs/serial.pdf1565
-rw-r--r--licence.txt361
-rw-r--r--makefile104
-rw-r--r--pd_bird.bat5
-rw-r--r--pd_comport.bat5
-rw-r--r--testbird.pd96
-rw-r--r--testbird.sh2
-rw-r--r--testcomport.pd78
-rw-r--r--testcomport.sh2
-rw-r--r--vcmakefile.dsp85
-rw-r--r--vcmakefile.dsw29
-rw-r--r--vcmakefile.ncbbin0 -> 33792 bytes
-rw-r--r--vcmakefile.optbin0 -> 53760 bytes
-rw-r--r--vcmakefile.plg29
29 files changed, 4275 insertions, 0 deletions
diff --git a/bird/bird.c b/bird/bird.c
new file mode 100644
index 0000000..5f3df3c
--- /dev/null
+++ b/bird/bird.c
@@ -0,0 +1,375 @@
+/***********************************************************************
+************************************************************************
+bird.c - controls and parses one flock of bird out of a comport
+
+Author: W. Ritsch 16.01.97
+Desc.: put the object in a correct parse state and send commands
+
+first input: where data from bird is thrown in (eg.from comport)
+first output: a list of data which size is dependen on the parse mode
+second output: to control the bird eg connect to a comport in
+
+*/
+
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+#include <stdlib.h>
+#include <stdio.h> /* general I/O */
+#include <string.h> /* for string commands */
+#include "m_pd.h"
+
+#define B_MAX_DATA 32 /* Maximal awaited data per record */
+#define B_MAX_CMDDATA 6 /* Maximum of awaited cmd arguments */
+
+typedef struct {
+
+ t_object x_obj;
+ t_outlet *x_out2;
+ t_int x_n;
+ t_atom *x_vec;
+
+ int databytes; /* expected databytes */
+ int datacount; /* count bytes in record */
+ int phase_wait; /* wait for phasebit */
+
+ int datamode; /* data mode is data or examine*/
+/* int flowmode; stream or point mode */
+ int phase_error;
+
+ void (*writefun)(void *this,unsigned char c);
+
+ unsigned char data[B_MAX_DATA]; /* maximal record length */
+ char *argname;
+ int argc;
+ int argv[B_MAX_DATA];
+
+ int verbose;
+
+} bird_t;
+
+bird_t *bird_init( bird_t *this);
+int bird_data( bird_t *this, unsigned char data );
+void bird_setwritefun(bird_t *this,void (*newwritefun)(void *bird,unsigned char c));
+void bird_send(bird_t *this,unsigned char chr);
+void bird_bang(bird_t *this);
+void bird_set(bird_t *this,char *cmdname,long *cmddata);
+
+
+
+typedef struct {
+
+ char *name;
+ unsigned char cmd;
+ int cmdbytes; /* number of cmd arguments */
+ int cmdsize; /* size of arguments in bytes (most 2) */
+ int databytes; /* number of awaited data */
+ int datamode; /* data mode is ignore, point flow or examine*/
+
+} bird_cmd;
+
+
+/* defines Modes for data receiving */
+#define B_MODE_IGNORE 0
+#define B_MODE_POINT 1
+#define B_MODE_STREAM 2
+#define B_MODE_EXAM 3
+
+/*#define B_STREAM_ON 1
+ #define B_STREAM_OFF 0
+*/
+#define B_WAIT_PHASE 1
+#define B_FOUND_PHASE 0
+
+
+/* definitions */
+
+/* cmds accepted by the flock */
+static bird_cmd cmds[]= {
+
+ /* cmd , value, nr of cmdatabytes, cmddatasize, nr datainbytes
+ data modes, if change always point */
+ {"ANGLES", 'W', 0, 0, 6, B_MODE_POINT},
+ {"MATRIX", 'X', 0, 0, 18, B_MODE_POINT},
+ {"POSITION", 'V', 0, 0, 6, B_MODE_POINT},
+ {"QUATER", 0x5C, 0, 0, 8, B_MODE_POINT},
+ {"POSANG", 'Y', 0, 0, 12, B_MODE_POINT},
+ {"POSMAT", 'Z', 0, 0, 24, B_MODE_POINT},
+ {"POSQUATER", ']', 0, 0, 14, B_MODE_POINT},
+ /* output cmd */
+ {"POINT", 'B', 0, 0, 0, B_MODE_POINT},
+ {"STREAM", 64, 0, 0, 0, B_MODE_STREAM},
+ {"RUN", 'F', 0, 0, 0, B_MODE_IGNORE},
+ {"SLEEP", 'G', 0, 0, 0, B_MODE_IGNORE},
+ /* set cmds */
+ {"AngleAlign1", 'J', 6, 2, 0, B_MODE_IGNORE},
+ {"AngleAlign2", 'q', 3, 2, 0, B_MODE_IGNORE},
+ {"Hemisphere", 'L', 2, 1, 0, B_MODE_IGNORE},
+ {"RefFrame1", 'H', 6, 2, 0, B_MODE_IGNORE},
+ {"RefFrame2", 'r', 3, 2, 0, B_MODE_IGNORE},
+ {"RepRate1", 'Q', 0, 0, 0, B_MODE_IGNORE},
+ {"RepRate2", 'R', 0, 0, 0, B_MODE_IGNORE},
+ {"RepRate8", 'S', 0, 0, 0, B_MODE_IGNORE},
+ {"RepRate32", 'T', 0, 0, 0, B_MODE_IGNORE},
+ { NULL, '\0', 0, 0, 0, B_MODE_IGNORE}
+};
+
+
+
+/* -------------------- the serial object methods -------------------- */
+bird_t *bird_init( bird_t *this)
+{
+ if(this == NULL){
+ this = malloc(sizeof(bird_t));
+ }
+ if(this == NULL){
+ post("Could not allocate data for bird_t");
+ }
+
+ this->databytes = 0;
+ this->datacount = 0;
+ this->phase_wait = B_WAIT_PHASE;
+ this->datamode = B_MODE_IGNORE;
+ this->phase_error = 0;
+ this->writefun = NULL;
+
+ this->argname = "STARTUP_MODE";
+ this->argc = 0;
+
+
+ return this;
+}
+
+int bird_data( bird_t *this, unsigned char data )
+{
+ int i;
+
+ if(this->datamode != B_MODE_IGNORE){
+
+ /* STREAM or POINT Mode */
+
+ /* Phase was detected */
+ if(this->phase_wait == B_FOUND_PHASE && data < 0x80){
+
+ this->data[this->datacount] = data; /* store data */
+ this->datacount++; /* increment counter */
+
+ if(this->databytes <= this->datacount){ /* last byte of record */
+ this->datacount = 0;
+ this->phase_wait = B_WAIT_PHASE;
+
+ /* interpret and output */
+ this->argc = this->databytes / 2;
+ for(i=0;i<this->databytes;i+=2){
+
+ this->argv[i/2] = (this->data[i]<<2)+(this->data[i+1]<<9);
+
+ /* printf("list[%2d]=%7d (%3d,%3d) ",i,
+ ((this->data[i]<<2)+(this->data[i+1]<<9)),
+ this->data[i],this->data[i+1]);
+ */
+ }
+ // printf("\n");
+ return this->argc;
+ };
+ }
+ else{ /* Phase wait */
+
+ if( (data & 0x80) == 0x00 ){ /* phase bit not found */
+ if(this->phase_error == 0)
+ if(this->verbose)post("phase error:%x",data);
+ this->phase_error++;
+ }
+ else{
+ this->phase_wait = B_FOUND_PHASE; /* phase found */
+ this->data[0] = data & 0x7F; /* store first data */
+ this->datacount = 1; /* wait for next */
+ this->phase_error = 0; /* phase error reset */
+ };
+
+ };
+ }; /* stream or point mode */
+ return 0;
+}
+
+
+void bird_setwritefun(bird_t *bird,void (*newwritefun)(void *this,unsigned char c))
+{
+ //if(bird == NULL) return; better segfault and you find the error...
+ bird->writefun = newwritefun;
+}
+
+void bird_send(bird_t *this,unsigned char chr)
+{
+ // if(this == NULL)return; better segfault and you find the error...
+ if(this->writefun)this->writefun(this,chr);
+}
+
+/* with bang to trigger a data output (POINT) */
+
+void bird_bang(bird_t *this)
+{
+ if(this->datamode == B_MODE_POINT)
+ bird_send(this,'B');
+}
+
+/* set the modes for the bird */
+void bird_set(bird_t *this,char *cmdname,long *cmddata)
+{
+ int i,j;
+ long data;
+ bird_cmd *cmd = cmds;
+
+ /* search for cmd */
+ while(cmd->name != (char *) 0l && strcmp(cmd->name,cmdname) != 0)cmd++;
+
+ if(cmd->name == (char *) 0l){
+ post("bird:Dont know how to set %s",cmdname);
+ return;
+ }
+
+ /* CMD found */
+ if(cmd->databytes > 0){ /* if databytes awaited, else dont change */
+
+ this->databytes = cmd->databytes; /* expected databytes per record */
+ this->datacount = 0; /* start with first */
+ this->argname = cmd->name;
+
+ if( cmd->datamode == B_MODE_EXAM)
+ this->phase_wait = B_FOUND_PHASE; /* wait for phase-bit */
+ else
+ this->phase_wait = B_WAIT_PHASE; /* wait for phase-bit */
+ }
+
+ if( cmd->datamode != B_MODE_IGNORE) /* go into data mode */
+ this->datamode = cmd->datamode;
+
+
+ if(cmd->cmdbytes >= 0){ /* is a real cmd for bird */
+
+ bird_send(this,cmd->cmd);
+
+ for(i=0; i < cmd->cmdbytes;i++){
+
+ data = cmddata[i];
+
+ for(j=0; j < cmd->cmdsize;j++){ /* send it bytewise */
+ bird_send(this, (unsigned char) (data&0xFF));
+ data >>= 8;
+ };
+ };
+
+ }
+
+ if(this->verbose)post("command %s (%c): databytes=%d, mode=%d, phase=%d",
+ cmd->name,cmd->cmd,
+ this->databytes,
+ this->datamode, this->phase_wait);
+
+}
+
+
+/* ---------------- pd object bird ----------------- */
+
+/* code for bird pd class */
+
+
+void bird_float(bird_t *x, t_floatarg f)
+{
+ int n,i;
+
+ if((n=bird_data(x,(unsigned char) f)) > 0){
+
+ /* make list and output */
+
+ for(i=0; i < x->argc ; i++){
+ x->x_vec[i].a_type = A_FLOAT;
+ x->x_vec[i].a_w.w_float = x->argv[i];
+ }
+ outlet_list(x->x_obj.ob_outlet, &s_list, x->argc, x->x_vec);
+ }
+}
+
+void bird_setting(bird_t *x, t_symbol *s, int argc, t_atom *argv)
+{
+ int i;
+ char *cmdnam;
+ long buffer[ B_MAX_CMDDATA ];
+
+ if(argc < 1) return;
+ cmdnam = argv[0].a_w.w_symbol->s_name;
+
+ if(argc > (B_MAX_CMDDATA +1))
+ argc = B_MAX_CMDDATA +1;
+
+ for(i=1;i< argc;i++)
+ if(argv[i].a_type != A_FLOAT)
+ post("bird set arg %d no float",i);
+ else
+ buffer[i-1] = argv[i].a_w.w_float;
+
+ bird_set(x,cmdnam,buffer);
+}
+
+void bird_verbose(bird_t *x, t_floatarg f)
+{
+ if(f) x->verbose = 1;
+ else x->verbose = 0;
+}
+
+void bird_free(bird_t *x)
+{
+ freebytes(x->x_vec, x->x_n * sizeof(*x->x_vec));
+}
+
+t_class *bird_class;
+
+void bird_output(void *x,unsigned char c)
+{
+ outlet_float(((bird_t *)x)->x_out2, (t_float) c);
+}
+
+void *bird_new(void)
+{
+ bird_t *x;
+
+ x = (bird_t *)pd_new(bird_class);
+
+ outlet_new(&x->x_obj, &s_list);
+ x->x_out2 = outlet_new(&x->x_obj, &s_float);
+
+
+ x->x_vec = (t_atom *)getbytes((x->x_n=B_MAX_DATA) * sizeof(*x->x_vec));
+
+ bird_init(x);
+ bird_setwritefun(x,bird_output);
+
+ bird_set(x,"RUN",NULL);
+
+ bird_set(x,"POSANG",NULL);
+ // out_byte('W');
+
+ bird_set(x,"POINT",NULL);
+ // out_byte(64);
+
+ x->verbose = 0;
+
+ return (void *)x;
+}
+
+void bird_setup(void)
+{
+ bird_class = class_new(gensym("bird"), (t_newmethod)bird_new,
+ (t_method)bird_free, sizeof(bird_t), 0, 0);
+
+ /* maximum commandatasize is 6*/
+ class_addmethod(bird_class, (t_method)bird_setting, gensym("set"), A_GIMME, 0);
+ class_addmethod(bird_class, (t_method)bird_verbose, gensym("verbose"), A_FLOAT, 0);
+
+ class_addbang(bird_class,bird_bang);
+
+ class_addfloat(bird_class, bird_float);
+}
+
diff --git a/bird/bird.dll b/bird/bird.dll
new file mode 100644
index 0000000..a2a18ee
--- /dev/null
+++ b/bird/bird.dll
Binary files differ
diff --git a/bird/bird.pd_linux b/bird/bird.pd_linux
new file mode 100644
index 0000000..7021aa1
--- /dev/null
+++ b/bird/bird.pd_linux
Binary files differ
diff --git a/comport.dll b/comport.dll
new file mode 100644
index 0000000..ad6ecb7
--- /dev/null
+++ b/comport.dll
Binary files differ
diff --git a/comport.exp b/comport.exp
new file mode 100644
index 0000000..b79b0b4
--- /dev/null
+++ b/comport.exp
Binary files differ
diff --git a/comport.lib b/comport.lib
new file mode 100644
index 0000000..c456240
--- /dev/null
+++ b/comport.lib
Binary files differ
diff --git a/comport.pd_linux b/comport.pd_linux
new file mode 100644
index 0000000..d3c3a57
--- /dev/null
+++ b/comport.pd_linux
Binary files differ
diff --git a/comport/CHANGES.txt b/comport/CHANGES.txt
new file mode 100644
index 0000000..3247476
--- /dev/null
+++ b/comport/CHANGES.txt
@@ -0,0 +1,8 @@
+1.0RC1 - (12.4.2005)
+
+ first check in pure-data.sourceforge.net
+ added print feature and USB devices from posted by Marc Boon
+
+0.9beta2 (somedate before 2004)
+
+ CHANGES.txt startet
diff --git a/comport/LICENCE.txt b/comport/LICENCE.txt
new file mode 100644
index 0000000..9ca2743
--- /dev/null
+++ b/comport/LICENCE.txt
@@ -0,0 +1,360 @@
+comport - PD External for the serial Ports
+
+Institute for Electronic Music and Acoustics
+Copyright (C) 1998-2005 Winfried Ritsch
+
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version. (see below)
+
+--------------------------- GPL.TXT -------------------------
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
diff --git a/comport/README.txt b/comport/README.txt
new file mode 100644
index 0000000..aff44fa
--- /dev/null
+++ b/comport/README.txt
@@ -0,0 +1,29 @@
+comport - PD external for unix/windows to use the serial ports
+
+ (c) 1998-2005 Winfried Ritsch (see LICENCE.txt)
+ Institute for Electronic Music - Graz
+
+on Windows the COM0, COM1, ... are used and
+under Unix devices /dev/ttyS0, /dev/ttyS1, ...
+and new on unix /dev/USB0, ... and can be accessed via a Index.
+
+Please see testcomport.pd for more help.
+
+USE: There should be a external comport.dll for windows, comport.pd_linux for linux and so on.
+
+just copy it to the extra folder of your pd Installation or working directory.
+Please see testcomport.pd for more help.
+
+compile:
+
+ Unix (Linux):
+ make pd_linux, make pd_irix5, make pd_irix6
+ should produce a comport.pd_linux, ....
+
+
+ Windows: use nmake or just use Fast Build under MSVC++
+ nmake pd_nt
+
+
+If you have improvements or questions feel free to contact me under
+ritsch _at_ iem.at
diff --git a/comport/comport.c b/comport/comport.c
new file mode 100644
index 0000000..0fa9369
--- /dev/null
+++ b/comport/comport.c
@@ -0,0 +1,979 @@
+/* comport - PD external for unix/windows
+
+ (c) 1998-2005 Winfried Ritsch (see LICENCE.txt)
+ Institute for Electronic Music - Graz
+
+*/
+
+#include "m_pd.h"
+
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#include <windows.h>
+#include <commctrl.h>
+#else
+#include <sys/time.h>
+#include <fcntl.h>
+#include <termios.h> /* for TERMIO ioctl calls */
+#include <unistd.h>
+#define HANDLE int
+#define INVALID_HANDLE_VALUE -1
+#endif
+
+#include <string.h>
+#include <errno.h>
+
+
+typedef struct comport
+{
+ t_object x_obj;
+
+ long n; /* the state of a last input */
+
+ HANDLE comhandle; /* holds the comport handle */
+
+#ifdef NT
+ DCB dcb; /* holds the comm pars */
+ DCB dcb_old; /* holds the comm pars */
+ COMMTIMEOUTS old_timeouts;
+#else
+ struct termios oldcom_termio; /* save the old com config */
+ struct termios com_termio; /* for the new com config */
+#endif
+
+ short comport; /* holds the comport # */
+ float baud; /* holds the current baud rate */
+
+ short rxerrors; /* holds the rx line errors */
+
+ t_clock *x_clock;
+ int x_hit;
+ double x_deltime;
+
+} t_comport;
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+#ifndef ON
+#define ON 1
+#define OFF 0
+#endif
+
+/*
+ Serial Port Return Values
+*/
+#define NODATAAVAIL -1
+#define RXERRORS -2
+#define RXBUFOVERRUN -4
+#define TXBUFOVERRUN -5
+
+#ifdef NT
+
+#define COMPORT_MAX 8
+static char *sys_com_port[COMPORT_MAX] =
+{
+ "COM1", "COM2", "COM3", "COM4",
+ "COM5", "COM6", "COM7", "COM8"
+};
+
+static
+long baudspeedbittable[] =
+{
+ CBR_256000,
+ CBR_128000,
+ CBR_115200,
+ CBR_57600,
+ CBR_56000,
+ CBR_38400,
+ CBR_19200,
+ CBR_14400,
+ CBR_9600,
+ CBR_4800,
+ CBR_2400,
+ CBR_1200,
+ CBR_600,
+ CBR_300,
+ CBR_110
+};
+
+#else /* NT */
+
+#ifdef IRIX
+#define COMPORT_MAX 2
+static char *sys_com_port[COMPORT_MAX] =
+{
+ "/dev/ttyd1", "/dev/ttyd2"
+};
+#define OPENPARAMS (O_RDWR|O_NDELAY|O_NOCTTY)
+#define TIONREAD FIONREAD /* re map the IOCTL function */
+#define BAUDRATE_256000 -1
+#define BAUDRATE_128000 -1
+#define BAUDRATE_115200 -1
+#define BAUDRATE_57600 -1
+#define BAUDRATE_56000 -1
+#define BAUDRATE_38400 B38400
+#define BAUDRATE_14400 B19200 /* 14400 gibts nicht */
+#else /* IRIX */
+#define COMPORT_MAX 16
+static char *sys_com_port[COMPORT_MAX] =
+{
+ "/dev/ttyS0", "/dev/ttyS1", "/dev/ttyS2", "/dev/ttyS3",
+ "/dev/ttyS4", "/dev/ttyS5", "/dev/ttyS6", "/dev/ttyS7",
+ "/dev/ttyUSB0", "/dev/ttyUSB1", "/dev/ttyUSB2", "/dev/ttyUSB3",
+ "/dev/ttyUSB4", "/dev/ttyUSB5", "/dev/ttyUSB6", "/dev/ttyUSB7"
+};
+#define OPENPARAMS (O_RDWR|O_NDELAY|O_NOCTTY)
+#define BAUDRATE_256000 -1
+#define BAUDRATE_128000 -1
+#define BAUDRATE_115200 B115200
+#define BAUDRATE_57600 B57600
+#define BAUDRATE_56000 B57600 /* 56000 gibts nicht */
+#define BAUDRATE_38400 B38400
+#define BAUDRATE_14400 B19200 /* 14400 gibts nicht */
+
+#endif /* else IRIX */
+
+static
+short baudspeedbittable[] =
+{
+ BAUDRATE_256000, /* CPU SPECIFIC */
+ BAUDRATE_128000, /* CPU SPECIFIC */
+ BAUDRATE_115200, /* CPU SPECIFIC */
+ BAUDRATE_57600, /* CPU SPECIFIC */
+ BAUDRATE_56000,
+ BAUDRATE_38400, /* CPU SPECIFIC */
+ B19200,
+ BAUDRATE_14400,
+ B9600,
+ B4800,
+ B2400,
+ B1200,
+ B600,
+ B300,
+ B110
+};
+
+struct timeval null_tv;
+
+#endif /* else NT */
+
+
+#define BAUDRATETABLE_LEN 15
+
+static
+long baudratetable[] =
+{
+ 256000L,
+ 128000L,
+ 115200L,
+ 57600L,
+ 56000L,
+ 38400L,
+ 19200L,
+ 14400L,
+ 9600L,
+ 4800L,
+ 2400L,
+ 1200L,
+ 600L,
+ 300L,
+ 110L
+}; /* holds the baud rate selections */
+
+t_class *comport_class;
+
+/* --------- sys independend serial setup helpers ---------------- */
+
+static long get_baud_ratebits(t_float *baud)
+{
+ int i = 0;
+
+ while(i < BAUDRATETABLE_LEN && baudratetable[i] > *baud)
+ i++;
+
+ /* nearest Baudrate finding */
+ if(i==BAUDRATETABLE_LEN || baudspeedbittable[i] < 0){
+ post("*Warning* The baud rate %d is not suported or out of range, using 9600\n",*baud);
+ i = 7;
+ }
+ *baud = baudratetable[i];
+
+ return baudspeedbittable[i];
+}
+
+
+/* ------------ sys dependend serial setup helpers ---------------- */
+
+
+/* --------------------- NT ------------------------------------ */
+
+#ifdef NT
+
+
+static float set_baudrate(t_comport *x,t_float baud)
+{
+ x->dcb.BaudRate = get_baud_ratebits(&baud);
+
+ return baud;
+}
+
+/* bits are 5,6,7,8(default) */
+
+static float set_bits(t_comport *x, int nr)
+{
+
+ if(nr < 4 && nr > 8)
+ nr = 8;
+
+ // number of bits/byte, 4-8
+ return x->dcb.ByteSize = nr;
+}
+
+
+/* 1 ... Parity even, -1 parity odd , 0 (default) no parity */
+static float set_parity(t_comport *x,int n)
+{
+ switch(n){
+ case 1:
+ x->dcb.fParity = TRUE; // enable parity checking
+ x->dcb.Parity = 2; // 0-4=no,odd,even,mark,space
+ return 1;
+
+ case -1:
+ x->dcb.fParity = TRUE; // enable parity checking
+ x->dcb.Parity = 1; // 0-4=no,odd,even,mark,space
+ return -1;
+
+ default:
+ x->dcb.fParity = FALSE; // enable parity checking
+ x->dcb.Parity = 0; // 0-4=no,odd,even,mark,space
+ }
+ return 0;
+}
+
+
+/* aktivate second stop bit with 1, 0(default)*/
+static float set_stopflag(t_comport *x, int nr)
+{
+ if(nr == 1){
+ x->dcb.StopBits = 1; // 0,1,2 = 1, 1.5, 2
+ return 1;
+ }
+ else
+ x->dcb.StopBits = 0; // 0,1,2 = 1, 1.5, 2
+
+ return 0;
+}
+
+/* never testet */
+static int set_ctsrts(t_comport *x, int nr)
+{
+ if(nr == 1){
+ x->dcb.fOutxCtsFlow = TRUE; // CTS output flow control
+ x->dcb.fRtsControl = RTS_CONTROL_ENABLE; // RTS flow control
+ return 1;
+ }
+ x->dcb.fOutxCtsFlow = FALSE; // CTS output flow control
+ x->dcb.fRtsControl = RTS_CONTROL_DISABLE; // RTS flow control
+ return 0;
+}
+
+static int set_xonxoff(t_comport *x, int nr)
+{
+ // x->dcb.fTXContinueOnXoff = FALSE; // XOFF continues Tx
+
+ if(nr == 1){
+ x->dcb.fOutX = TRUE; // XON/XOFF out flow control
+ x->dcb.fInX = TRUE; // XON/XOFF in flow control
+ return 1;
+ }
+
+ x->dcb.fOutX = FALSE; // XON/XOFF out flow control
+ x->dcb.fInX = FALSE; // XON/XOFF in flow control
+ return 0;
+}
+
+
+static int set_serial(t_comport *x)
+{
+
+ if (SetCommState(x->comhandle, &(x->dcb)))
+ return 1;
+
+ return 0;
+}
+
+static HANDLE open_serial(int com_nr, t_comport *x)
+{
+ HANDLE fd;
+
+ COMMTIMEOUTS timeouts;
+
+ float *baud = &(x->baud);
+
+ if(com_nr < 0 || com_nr >= COMPORT_MAX) {
+ post("comport open %d, baud %d not valid (args: [portnum] [baud])",com_nr,*baud);
+ return INVALID_HANDLE_VALUE;
+ }
+
+ fd = CreateFile( sys_com_port[com_nr],
+ GENERIC_READ | GENERIC_WRITE,
+ 0,
+ 0,
+ OPEN_EXISTING,
+ FILE_FLAG_OVERLAPPED,
+ 0);
+
+ if(fd == INVALID_HANDLE_VALUE)
+ {
+ post("** ERROR ** could not open device %s:\n failure(%d): %s\n",
+ sys_com_port[com_nr],errno,strerror(errno));
+ return INVALID_HANDLE_VALUE;
+ }
+
+ /* Save the Current Port Configuration */
+
+ if (!GetCommState(fd, &(x->dcb_old))){
+ post("** ERROR ** could not get old dcb of device %s\n",
+ sys_com_port[com_nr]);
+
+ CloseHandle(fd);
+ return INVALID_HANDLE_VALUE;
+ }
+
+ memset(&(x->dcb), sizeof(DCB), 0);
+
+ if (!GetCommState(fd, &(x->dcb))){
+ post("** ERROR ** could not get new dcb of device %s\n",
+ sys_com_port[com_nr]);
+
+ CloseHandle(fd);
+ return INVALID_HANDLE_VALUE;
+ }
+
+
+ x->dcb.fBinary = TRUE; // binary mode, no EOF check
+
+ // x->dcb.fOutxDsrFlow = FALSE; // DSR output flow control
+ // x->dcb.fDtrControl = DTR_CONTROL_DISABLE; // DTR flow control type
+
+ // x->dcb.fDsrSensitivity = FALSE; // DSR sensitivity
+
+ x->dcb.fErrorChar = FALSE; // enable error replacement
+ // x->dcb.fNull = FALSE; // enable null stripping
+
+ // DWORD x->dcb.fAbortOnError:1; // abort reads/writes on error
+
+ // char x->dcb.XonChar; // Tx and Rx XON character
+ // char x->dcb.XoffChar; // Tx and Rx XOFF character
+ // char x->dcb.ErrorChar; // error replacement character
+ // char x->dcb.EofChar; // end of input character
+ // char x->dcb.EvtChar; // received event character
+
+
+ set_bits(x,8); /* CS8 */
+ set_stopflag(x,0); /* ~CSTOPB */
+ set_ctsrts(x,0); /* ~CRTSCTS;*/
+ set_xonxoff(x,1); /* (IXON | IXOFF | IXANY) */
+ set_baudrate(x,*baud);
+
+ x->comhandle = fd;
+
+ if(set_serial(x))
+ {
+ post("Opened serial line device %s\n",sys_com_port[com_nr]);
+ }
+ else
+ {
+ post("** ERROR ** could not set params to control dcb of device %s\n",
+ sys_com_port[com_nr]);
+ CloseHandle(fd);
+ return INVALID_HANDLE_VALUE;
+ }
+
+
+
+ if (!GetCommTimeouts(fd, &(x->old_timeouts))){
+ post("Couldnt get old timeouts for serial device");
+ };
+
+ //setting new timeouts for read to immidiatly return
+ timeouts.ReadIntervalTimeout = MAXDWORD;
+ timeouts.ReadTotalTimeoutMultiplier = 0;
+ timeouts.ReadTotalTimeoutConstant = 0;
+ timeouts.WriteTotalTimeoutMultiplier = 0;
+ timeouts.WriteTotalTimeoutConstant = 0;
+
+ if (!SetCommTimeouts(fd, &timeouts)){
+ post("Couldnt set timeouts for serial device");
+ return INVALID_HANDLE_VALUE;
+ };
+
+
+ return fd;
+}
+
+static HANDLE close_serial(t_comport *x)
+{
+ if(x->comhandle != INVALID_HANDLE_VALUE){
+
+ if (!SetCommState(x->comhandle, &(x->dcb_old)) )
+ {
+ post("** ERROR ** could not reset params to DCB of device %s\n",
+ sys_com_port[x->comport]);
+ }
+
+ if (!SetCommTimeouts(x->comhandle, &(x->old_timeouts))){
+ post("Couldnt reset old_timeouts for serial device");
+ };
+
+ CloseHandle(x->comhandle);
+ }
+
+ return INVALID_HANDLE_VALUE;
+}
+
+
+static int write_serial(t_comport *x, unsigned char chr)
+{
+ OVERLAPPED osWrite = {0};
+ DWORD dwWritten;
+ DWORD dwRes;
+
+ /* post("open send %d",chr); */
+
+ if (!WriteFile(x->comhandle, &chr, 1, &dwWritten, &osWrite)) {
+ if (GetLastError() != ERROR_IO_PENDING)
+ post("WriteFile failed, but isn't delayed on serialdevice");
+ return 0;
+ }
+ return 1;
+}
+
+#else /* NT */
+/* ----------------- POSIX - UNIX ------------------------------ */
+
+
+static float set_baudrate(t_comport *x,t_float baud)
+{
+ struct termios *tio = &(x->com_termio);
+
+ long baudbits = get_baud_ratebits(&baud);
+
+ cfsetispeed(tio, baudbits);
+ cfsetospeed(tio, baudbits);
+
+ return baud;
+}
+
+/* bits are 5,6,7,8(default) */
+
+static float set_bits(t_comport *x, int nr)
+{
+ struct termios *tio = &(x->com_termio);
+ tio->c_cflag &= ~CSIZE;
+ switch(nr){
+ case 5: tio->c_cflag |= CS5; return 5;
+ case 6: tio->c_cflag |= CS6; return 6;
+ case 7: tio->c_cflag |= CS7; return 7;
+ default: tio->c_cflag |= CS8;
+ }
+ return 8;
+}
+
+
+/* 1 ... Parity even, -1 parity odd , 0 (default) no parity */
+static float set_parity(t_comport *x,int n)
+{
+ struct termios *tio = &(x->com_termio);
+
+ switch(n){
+ case 1:
+ tio->c_cflag |= PARENB; tio->c_cflag &= ~PARODD; return 1;
+ case -1:
+ tio->c_cflag |= PARENB | PARODD; return -1;
+ default:
+ tio->c_cflag &= ~PARENB;
+ }
+ return 0;
+}
+
+
+/* aktivate second stop bit with 1, 0(default)*/
+static float set_stopflag(t_comport *x, int nr)
+{
+ struct termios *tio = &(x->com_termio);
+
+ if(nr == 1){
+ tio->c_cflag |= CSTOPB;
+ return 1;
+ }
+ else
+ tio->c_cflag &= ~CSTOPB;
+ return 0;
+}
+
+/* never testet */
+static int set_ctsrts(t_comport *x, int nr)
+{
+ struct termios *tio = &(x->com_termio);
+
+ if(nr == 1){
+ tio->c_cflag |= CRTSCTS;
+ return 1;
+ }
+ tio->c_cflag &= ~CRTSCTS;
+ return 0;
+}
+
+static int set_xonxoff(t_comport *x, int nr)
+{
+ struct termios *tio = &(x->com_termio);
+
+ if(nr == 1){
+ tio->c_iflag |= (IXON | IXOFF | IXANY);
+ return 1;
+ }
+
+ tio->c_iflag &= ~IXON & ~IXOFF & ~IXANY;
+ return 0;
+}
+
+static int open_serial(int com_nr, t_comport *x)
+{
+ HANDLE fd;
+ struct termios *old = &(x->oldcom_termio);
+ struct termios *new = &(x->com_termio);
+ float *baud = &(x->baud);
+
+ if(com_nr < 0 || com_nr >= COMPORT_MAX) {
+ post("comport open %d, baud %d not valid (args: [portnum] [baud])");
+ return INVALID_HANDLE_VALUE;
+ }
+
+ if((fd = open(sys_com_port[com_nr], OPENPARAMS)) == INVALID_HANDLE_VALUE)
+ {
+ post("** ERROR ** could not open device %s:\n failure(%d): %s\n",
+ sys_com_port[com_nr],errno,strerror(errno));
+ return INVALID_HANDLE_VALUE;
+ }
+
+ /* set no wait on any operation */
+ fcntl(fd, F_SETFL, FNDELAY);
+
+ /* Save the Current Port Configuration */
+ if(tcgetattr(fd, old) == -1 || tcgetattr(fd, new) == -1){
+ post("** ERROR ** could not get termios-structure of device %s\n",
+ sys_com_port[com_nr]);
+ close(fd);
+ return INVALID_HANDLE_VALUE;
+ }
+
+
+ /* Setupt the new port configuration...NON-CANONICAL INPUT MODE
+ .. as defined in termios.h
+ */
+
+ /* enable input and ignore modem controls */
+ new->c_cflag |= (CREAD | CLOCAL);
+
+ /* always nocanonical, this means raw i/o no terminal */
+ new->c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+
+ /* no post processing */
+ new->c_oflag &= ~OPOST;
+
+ /* setup to return after 0 seconds
+ ..if no characters are received
+ TIME units are assumed to be 0.1 secs */
+ /* not needed anymore ??? in new termios in linux
+ new->c_cc[VMIN] = 0;
+ new->c_cc[VTIME] = 0;
+ */
+
+ /* defaults, see input */
+
+ set_bits(x,8); /* CS8 */
+ set_stopflag(x,0); /* ~CSTOPB */
+ set_ctsrts(x,0); /* ~CRTSCTS;*/
+ set_xonxoff(x,1); /* (IXON | IXOFF | IXANY) */
+ set_baudrate(x,*baud);
+
+ if(tcsetattr(fd, TCSAFLUSH, new) != -1)
+ {
+ post("Opened serial line device %s\n",sys_com_port[com_nr]);
+ }
+ else
+ {
+ post("** ERROR ** could not set params to ioctl of device %s\n",
+ sys_com_port[com_nr]);
+ close(fd);
+ return INVALID_HANDLE_VALUE;
+ }
+
+ return fd;
+}
+
+
+static int close_serial(t_comport *x)
+{
+ struct termios *tios = &(x->com_termio);
+ HANDLE fd = x->comhandle;
+
+ if(fd != INVALID_HANDLE_VALUE){
+ tcsetattr(fd, TCSANOW, tios);
+ close(fd);
+ }
+ return INVALID_HANDLE_VALUE;
+}
+
+
+static int set_serial(t_comport *x)
+{
+ if(tcsetattr(x->comhandle, TCSAFLUSH, &(x->com_termio)) == -1)
+ return 0;
+ return 1;
+}
+
+static int write_serial(t_comport *x, unsigned char chr)
+{
+
+ return write(x->comhandle,(char *) &chr,1);
+
+ /* flush pending I/O chars */
+ /* but nowadays discards them ;-(
+ else{
+ ioctl(x->comhandle,TCFLSH,TCOFLUSH);
+ }
+ */
+}
+
+
+#endif /* else NT */
+
+
+/* ------------------- serial pd methods --------------------------- */
+static void comport_pollintervall(t_comport *x, t_floatarg g)
+{
+ if (g < 1) g = 1;
+ x->x_deltime = g;
+}
+
+static void comport_tick(t_comport *x)
+{
+ unsigned char chr;
+ int err;
+ HANDLE fd = x->comhandle;
+
+ x->x_hit = 0;
+
+
+ if(fd == INVALID_HANDLE_VALUE) return;
+
+ /* while there are bytes, read them and send them out, ignore errors */
+#ifdef NT
+ {
+ DWORD dwCommEvent;
+ DWORD dwRead;
+
+ err = 0;
+
+// if (!SetCommMask(x->comhandle, EV_RXCHAR))
+// post(" Error setting communications event mask for serial device");
+
+// for ( ; ; ) {
+// if (WaitCommEvent(x->comhandle, &dwCommEvent,NULL)) {
+ do {
+
+ if(ReadFile(x->comhandle, &chr, 1, &dwRead, NULL))
+ if(dwRead > 0)
+ outlet_float(x->x_obj.ob_outlet, (t_float) chr);
+ else{
+ err = -1;
+ break;
+ }
+ } while (dwRead);
+// }
+// else{
+// post("serial dev: Error in WaitCommEvent");
+ // break;
+// }
+ //}
+ }
+#else
+ {
+ fd_set com_rfds;
+ FD_ZERO(&com_rfds);
+ FD_SET(fd,&com_rfds);
+
+ while((err=select(fd+1,&com_rfds,NULL,NULL,&null_tv)) > 0) {
+
+ err = read(fd,(char *) &chr,1);
+
+ /* while( (err = read(fd,(char *) &chr,1)) > 0){ */
+ outlet_float(x->x_obj.ob_outlet, (t_float) chr);
+
+ };
+ }
+#endif
+
+ if(err < 0){ /* if an readerror detected */
+ if(x->rxerrors == 0) /* post it once */
+ post("RXERRORS on serial line\n");
+ x->rxerrors = 1; /* remember */
+ }
+
+ if (!x->x_hit) clock_delay(x->x_clock, 1);
+}
+
+static void comport_float(t_comport *x,t_float f)
+{
+ unsigned char chr = ((int) f) & 0xFF; /* brutal conv */
+
+ if (write_serial(x,chr) != 1)
+ {
+ post("Write error, maybe TX-OVERRUNS on serial line");
+ }
+}
+
+static void *comport_new(t_floatarg comnr, t_floatarg fbaud) {
+
+ t_comport test;
+ t_comport *x;
+ int com_nr = comnr;
+ HANDLE fd;
+
+
+/* Open the Comport for RD and WR and get a handle */
+ test.baud = fbaud;
+ fd = open_serial(com_nr,&test);
+
+ if(fd == INVALID_HANDLE_VALUE ){
+ /* postings in open routine */
+ return 0;
+ }
+
+ /* Now nothing really bad could happen so we create the class */
+
+ x = (t_comport *)pd_new(comport_class);
+
+ x->comport = com_nr;
+ x->baud = test.baud;
+ x->comhandle = fd; /* holds the comport handle */
+
+#ifdef NT
+
+ memcpy(&(test.dcb_old),&(x->dcb_old),sizeof(DCB)); // save the old com config
+ memcpy(&(test.dcb),&(x->dcb),sizeof(DCB)); // for the new com config
+
+#else
+ /* save the old com and new com config */
+ bcopy(&(test.oldcom_termio),&(x->oldcom_termio),sizeof(struct termios));
+ bcopy(&(test.com_termio),&(x->com_termio),sizeof(struct termios));
+#endif
+
+ x->rxerrors = 0; /* holds the rx line errors */
+
+ outlet_new(&x->x_obj, &s_float);
+
+ x->x_hit = 0;
+ x->x_deltime = 1;
+ x->x_clock = clock_new(x, (t_method)comport_tick);
+
+ clock_delay(x->x_clock, x->x_deltime);
+
+ return x;
+}
+
+
+static void
+comport_free(t_comport *x)
+{
+ post("close serial...");
+
+ clock_unset(x->x_clock);
+ clock_free(x->x_clock);
+ x->comhandle = close_serial(x);
+}
+
+/* ---------------- use serial settings ------------- */
+
+static void comport_baud(t_comport *x,t_floatarg f)
+{
+ if(f == x->baud){
+ post("baudrate already %f\n",x->baud);
+ return;
+ }
+
+ x->baud = set_baudrate(x,f);
+
+ if(x->comhandle == INVALID_HANDLE_VALUE)return;
+
+ if(set_serial(x) == 0){
+ post("** ERROR ** could not set baudrate of device %s\n",
+ sys_com_port[x->comport]);
+ }
+ else post("set baudrate of %s to %f\n",sys_com_port[x->comport],x->baud);
+}
+
+static void comport_bits(t_comport *x,t_floatarg f)
+{
+ f = set_bits(x,f);
+
+ if(x->comhandle == INVALID_HANDLE_VALUE)return;
+
+ if(set_serial(x) == 0){
+ post("** ERROR ** could not set bits of device %s\n",
+ sys_com_port[x->comport]);
+ }
+ else post("set bits of %s to %f\n",sys_com_port[x->comport],f);
+}
+
+
+static void comport_parity(t_comport *x,t_floatarg f)
+{
+ f = set_parity(x,f);
+
+ if(x->comhandle == INVALID_HANDLE_VALUE)return;
+
+ if(set_serial(x) == 0){
+ post("** ERROR ** could not set extra paritybit of device %s\n",
+ sys_com_port[x->comport]);
+ }
+ else post("set extra paritybit of %s to %f\n",sys_com_port[x->comport],f);
+}
+
+static void comport_stopbit(t_comport *x,t_floatarg f)
+{
+ f = set_stopflag(x,f);
+
+ if(x->comhandle == INVALID_HANDLE_VALUE)return;
+
+ if(set_serial(x) == 0){
+ post("** ERROR ** could not set extra stopbit of device %s\n",
+ sys_com_port[x->comport]);
+ }
+ else post("set extra stopbit of %s to %f\n",sys_com_port[x->comport],f);
+}
+
+static void comport_rtscts(t_comport *x,t_floatarg f)
+{
+ f = set_ctsrts(x,f);
+
+ if(x->comhandle == INVALID_HANDLE_VALUE)return;
+
+ if(set_serial(x) == 0){
+ post("** ERROR ** could not set rts_cts of device %s\n",
+ sys_com_port[x->comport]);
+ }
+ else post("set rts-cts of %s to %f\n",sys_com_port[x->comport],f);
+}
+
+static void comport_xonxoff(t_comport *x,t_floatarg f)
+{
+ f = set_xonxoff(x,f);
+
+ if(x->comhandle == INVALID_HANDLE_VALUE)return;
+
+ if(set_serial(x) == 0){
+ post("** ERROR ** could not set xonxoff of device %s\n",
+ sys_com_port[x->comport]);
+ }
+ else post("set xonxoff of %s to %f\n",sys_com_port[x->comport],f);
+}
+
+static void comport_close(t_comport *x)
+{
+ clock_unset(x->x_clock);
+ x->x_hit = 1;
+ x->comhandle = close_serial(x);
+}
+
+static void comport_open(t_comport *x, t_floatarg f)
+{
+ if(x->comhandle != INVALID_HANDLE_VALUE)
+ comport_close(x);
+
+
+ x->comhandle = open_serial(f,x);
+
+ clock_delay(x->x_clock, x->x_deltime);
+}
+
+/*
+ dangerous but if you really have some stupid devicename ...
+ you can open any file on systems if suid is set on pd be careful
+*/
+
+static void comport_devicename(t_comport *x, t_symbol *s)
+{
+ if(x->comport >= 0 && x->comport < COMPORT_MAX){
+ sys_com_port[x->comport] = s->s_name;
+ }
+}
+
+static void comport_print(t_comport *x, t_symbol *s, int argc, t_atom *argv)
+{
+ static char buf[256];
+ while(argc--) {
+ atom_string(argv++, buf, 255);
+ char *pch = buf;
+ while(*pch != 0) {
+ write_serial(x, *pch++);
+ }
+ if(argc > 0) {
+ write_serial(x, ' ');
+ }
+ }
+}
+/* ---------------- SETUP OBJECTS ------------------ */
+
+void comport_setup(void)
+{
+ comport_class
+ = class_new(gensym("comport"), (t_newmethod)comport_new,
+ (t_method)comport_free, sizeof(t_comport),
+ 0, A_DEFFLOAT, A_DEFFLOAT, 0);
+
+ class_addfloat(comport_class, (t_method)comport_float);
+
+ /*
+ class_addbang(comport_class, comport_bang
+ */
+
+
+ class_addmethod(comport_class, (t_method)comport_baud, gensym("baud"),
+ A_FLOAT, 0);
+
+
+ class_addmethod(comport_class, (t_method)comport_bits, gensym("bits"),
+ A_FLOAT, 0);
+ class_addmethod(comport_class, (t_method)comport_stopbit, gensym("stopbit"),
+ A_FLOAT, 0);
+ class_addmethod(comport_class, (t_method)comport_rtscts, gensym("rtscts"),
+ A_FLOAT, 0);
+ class_addmethod(comport_class, (t_method)comport_parity, gensym("parity"),
+ A_FLOAT, 0);
+ class_addmethod(comport_class, (t_method)comport_xonxoff, gensym("xonxoff"),
+ A_FLOAT, 0);
+ class_addmethod(comport_class, (t_method)comport_close, gensym("close"), 0);
+ class_addmethod(comport_class, (t_method)comport_open, gensym("open"),
+ A_FLOAT, 0);
+ class_addmethod(comport_class, (t_method)comport_devicename, gensym("devicename"),
+ A_SYMBOL, 0);
+ class_addmethod(comport_class, (t_method)comport_print, gensym("print"),
+ A_GIMME, 0);
+
+ class_addmethod(comport_class, (t_method)comport_pollintervall, gensym("pollintervall"),
+ A_FLOAT, 0);
+#ifndef NT
+ null_tv.tv_sec = 0; /* no wait */
+ null_tv.tv_usec = 0;
+#endif
+}
+
+
diff --git a/comport/makefile b/comport/makefile
new file mode 100644
index 0000000..48e9db2
--- /dev/null
+++ b/comport/makefile
@@ -0,0 +1,82 @@
+# comport - PD external for unix/windows
+#
+# (c) 1998-2005 Winfried Ritsch (see LICENCE.txt)
+# Institute for Electronic Music - Graz
+#
+#
+
+current:
+ echo choose one command: make pd_linux, make pd_nt, make pd_irix5, make pd_irix6
+
+# ----------------------- NT -----------------------
+pd_nt: comport.dll
+
+.SUFFIXES: .dll
+
+PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo /DWIN2000
+
+VC="C:\Programme\Microsoft Visual Studio\Vc98"
+PDROOT="C:\Programme\pd"
+
+PDNTINCLUDE = /I. /I$(PDROOT)\tcl\include /I$(PDROOT)\src /I$(VC)\include
+
+PDNTLDIR = $(VC)\lib
+PDNTLIB = $(PDNTLDIR)\libc.lib \
+ $(PDNTLDIR)\oldnames.lib \
+ $(PDNTLDIR)\kernel32.lib \
+ $(PDROOT)\bin\pd.lib
+
+.c.dll:
+ cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c
+ link /dll /export:$*_setup $*.obj $(PDNTLIB)
+
+# ----------------------- IRIX 5.x -----------------------
+pd_irix5: comport.pd_irix5
+
+.SUFFIXES: .pd_irix5
+
+SGICFLAGS5 = -o32 -DPD -DSGI -O2
+
+
+SGIINCLUDE = -I../../src
+
+.c.pd_irix5:
+ cc $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c
+ ld -elf -shared -rdata_shared -o $*.pd_irix5 $*.o
+ rm $*.o
+
+# ----------------------- IRIX 6.x -----------------------
+pd_irix6: comport.pd_irix6
+
+.SUFFIXES: .pd_irix6
+
+SGICFLAGS6 = -DPD -DSGI -n32 \
+ -OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \
+ -Ofast=ip32
+
+SGICFLAGS5 = -DPD -O2 -DSGI
+
+SGIINCLUDE = -I/../../src
+
+.c.pd_irix6:
+ cc $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c
+ ld -elf -shared -rdata_shared -o $*.pd_irix6 $*.o
+ rm $*.o
+
+# ----------------------- LINUX i386 -----------------------
+
+pd_linux: comport.pd_linux
+
+.SUFFIXES: .pd_linux
+
+LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \
+ -Wall -W -Wshadow -Wstrict-prototypes -Werror \
+ -Wno-unused -Wno-parentheses -Wno-switch
+
+LINUXINCLUDE = -I../../src
+
+.c.pd_linux:
+ cc $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c
+ ld -export_dynamic -shared -o $*.pd_linux $*.o -lc -lm
+ strip --strip-unneeded $*.pd_linux
+ rm $*.o
diff --git a/comport/testcomport.pd b/comport/testcomport.pd
new file mode 100644
index 0000000..0dbfcf2
--- /dev/null
+++ b/comport/testcomport.pd
@@ -0,0 +1,81 @@
+#N canvas 199 244 693 475 10;
+#X obj 97 231 comport 1 9600;
+#X msg 13 213 66;
+#X obj 88 361 print;
+#X floatatom 195 190 4 0 0 0 - - -;
+#X msg 12 171 64;
+#X text 12 191 point;
+#X text 11 150 stream;
+#X msg 13 263 86;
+#X text 13 238 position;
+#X msg 16 307 70;
+#X msg 14 347 71;
+#X text 15 290 run;
+#X text 14 325 sleep;
+#X floatatom 121 269 4 0 0 0 - - -;
+#X obj 90 325 spigot;
+#X msg 109 298 1;
+#X msg 143 299 0;
+#X msg 314 48 bits 8;
+#X msg 313 72 stopbit 0;
+#X msg 312 100 parity 0;
+#X msg 313 129 xonxoff 1;
+#X msg 313 155 rtscts 0;
+#X text 392 103 parity 1=even \, -1=odd \, 0=off;
+#X text 392 74 extra stopbit 1=on \, 0=off;
+#X text 394 49 databits 5 \, 6 \, 7 \, 8;
+#X text 393 20 use exact or higher baudrate;
+#X obj 94 200 r comctl;
+#X obj 271 294 s comctl;
+#X text 394 128 use handshake xon/off 1=on 0=off;
+#X text 392 154 cts/rts hardwarehandshake 1=on 0=off;
+#X msg 318 201 pollintervall 1;
+#X text 430 191 set pollintervall for read in ms;
+#X text 430 205 (default is 1 tick 1ms);
+#X msg 317 233 close;
+#X msg 317 259 open 1;
+#X msg 314 23 baud 10000;
+#X text 383 230 Close Serial port;
+#X text 381 263 Open seriel board Nr (0=COM1 \, 1=COM2 \, ...);
+#X msg 263 354 devicename /dev/ttyS1;
+#X text 257 375 Danger !!! you can open every file in your system and
+maybe if suid is root damage the system.;
+#X text 258 336 set devicename for actuell port \, then close and open
+again;
+#X obj 195 165 spigot;
+#X msg 214 138 1;
+#X msg 247 143 0;
+#X obj 190 112 key;
+#X text 260 324 never should be needed except for sys admins (only
+unix);
+#X msg 309 0 baud 300;
+#X text 3 -10 (C) 1998-2005 IEM Winfried Ritsch GPL (see LICENSE.txt)
+;
+#X text 14 388;
+#X text 1 41 please improve...;
+#X connect 0 0 13 0;
+#X connect 0 0 14 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 7 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
+#X connect 14 0 2 0;
+#X connect 15 0 14 1;
+#X connect 16 0 14 1;
+#X connect 17 0 27 0;
+#X connect 18 0 27 0;
+#X connect 19 0 27 0;
+#X connect 20 0 27 0;
+#X connect 21 0 27 0;
+#X connect 26 0 0 0;
+#X connect 30 0 27 0;
+#X connect 33 0 27 0;
+#X connect 34 0 27 0;
+#X connect 35 0 27 0;
+#X connect 41 0 3 0;
+#X connect 42 0 41 1;
+#X connect 43 0 41 1;
+#X connect 44 0 41 0;
+#X connect 46 0 27 0;
diff --git a/docs/Serial-Programming-HOWTO.book.pdf b/docs/Serial-Programming-HOWTO.book.pdf
new file mode 100644
index 0000000..91328af
--- /dev/null
+++ b/docs/Serial-Programming-HOWTO.book.pdf
Binary files differ
diff --git a/docs/serial.doc b/docs/serial.doc
new file mode 100644
index 0000000..8cd6310
--- /dev/null
+++ b/docs/serial.doc
Binary files differ
diff --git a/docs/serial.pdf b/docs/serial.pdf
new file mode 100644
index 0000000..b901cea
--- /dev/null
+++ b/docs/serial.pdf
@@ -0,0 +1,1565 @@
+%PDF-1.2
+%âãÏÓ
+1 0 obj<</Producer(htmldoc 1.8.3 Copyright 1997-1999 Easy Software Products, All Rights Reserved.)/CreationDate(D:19991216005723Z)/Title(Serial Programming Guide for POSIX Operating Systems)/Author(Michael R. Sweet)>>endobj
+2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
+3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
+4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Oblique/Encoding 2 0 R>>endobj
+5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
+6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
+7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
+8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-BoldItalic/Encoding 2 0 R>>endobj
+9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
+10 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Oblique/Encoding 2 0 R>>endobj
+11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
+12 0 obj<</Subtype/Link/Rect[108.0 262.0 145.6 275.0]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+13 0 obj<</Subtype/Link/Rect[145.6 262.0 156.6 275.0]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+14 0 obj<</Subtype/Link/Rect[156.6 262.0 188.0 275.0]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+15 0 obj<</Subtype/Link/Rect[188.0 262.0 200.0 275.0]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+16 0 obj<</Subtype/Link/Rect[200.0 262.0 228.4 275.0]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+17 0 obj<</Subtype/Link/Rect[228.4 262.0 288.9 275.0]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+18 0 obj<</Subtype/Link/Rect[108.0 248.8 145.6 261.8]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+19 0 obj<</Subtype/Link/Rect[145.6 248.8 156.6 261.8]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+20 0 obj<</Subtype/Link/Rect[156.6 248.8 213.1 261.8]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+21 0 obj<</Subtype/Link/Rect[213.1 248.8 229.3 261.8]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+22 0 obj<</Subtype/Link/Rect[229.3 248.8 257.7 261.8]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+23 0 obj<</Subtype/Link/Rect[257.7 248.8 276.0 261.8]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+24 0 obj<</Subtype/Link/Rect[108.0 222.4 145.6 235.4]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+25 0 obj<</Subtype/Link/Rect[145.6 222.4 156.6 235.4]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+26 0 obj<</Subtype/Link/Rect[156.6 222.4 203.9 235.4]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+27 0 obj<</Subtype/Link/Rect[203.9 222.4 232.3 235.4]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+28 0 obj<</Subtype/Link/Rect[232.3 222.4 292.8 235.4]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+29 0 obj<</Subtype/Link/Rect[108.0 209.2 154.1 222.2]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+30 0 obj<</Subtype/Link/Rect[154.1 209.2 167.6 222.2]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+31 0 obj<</Subtype/Link/Rect[167.6 209.2 206.5 222.2]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+32 0 obj<</Subtype/Link/Rect[206.5 209.2 239.5 222.2]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+33 0 obj<</Subtype/Link/Rect[108.0 196.0 154.1 209.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+34 0 obj<</Subtype/Link/Rect[154.1 196.0 167.0 209.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+35 0 obj<</Subtype/Link/Rect[167.0 196.0 198.4 209.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+36 0 obj<</Subtype/Link/Rect[198.4 196.0 234.8 209.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+37 0 obj<</Subtype/Link/Rect[234.8 196.0 262.3 209.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+38 0 obj[12 0 R
+13 0 R
+14 0 R
+15 0 R
+16 0 R
+17 0 R
+18 0 R
+19 0 R
+20 0 R
+21 0 R
+22 0 R
+23 0 R
+24 0 R
+25 0 R
+26 0 R
+27 0 R
+28 0 R
+29 0 R
+30 0 R
+31 0 R
+32 0 R
+33 0 R
+34 0 R
+35 0 R
+36 0 R
+37 0 R
+]endobj
+39 0 obj<</S/URI/URI(http://www.eia.org)>>endobj
+40 0 obj<</Subtype/Link/Rect[400.2 688.6 448.2 699.6]/Border[0 0 0]/A 39 0 R>>endobj
+41 0 obj<</S/URI/URI(http://www.eia.org)>>endobj
+42 0 obj<</Subtype/Link/Rect[448.2 688.6 491.6 699.6]/Border[0 0 0]/A 41 0 R>>endobj
+43 0 obj<</S/URI/URI(http://www.eia.org)>>endobj
+44 0 obj<</Subtype/Link/Rect[36.0 675.4 90.7 686.4]/Border[0 0 0]/A 43 0 R>>endobj
+45 0 obj<</S/URI/URI(http://www.eia.org)>>endobj
+46 0 obj<</Subtype/Link/Rect[90.7 675.4 125.3 686.4]/Border[0 0 0]/A 45 0 R>>endobj
+47 0 obj[40 0 R
+42 0 R
+44 0 R
+46 0 R
+]endobj
+48 0 obj<</Subtype/Link/Rect[466.4 207.9 509.8 220.9]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+49 0 obj<</Subtype/Link/Rect[36.0 194.7 77.9 207.7]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+50 0 obj<</Subtype/Link/Rect[77.9 194.7 103.8 207.7]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+51 0 obj<</Subtype/Link/Rect[103.8 194.7 119.4 207.7]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+52 0 obj<</Subtype/Link/Rect[119.4 194.7 174.7 207.7]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+53 0 obj<</Subtype/Link/Rect[174.7 194.7 229.4 207.7]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+54 0 obj<</Subtype/Link/Rect[229.4 194.7 274.4 207.7]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+55 0 obj[48 0 R
+49 0 R
+50 0 R
+51 0 R
+52 0 R
+53 0 R
+54 0 R
+]endobj
+56 0 obj<</Subtype/Link/Rect[190.2 623.8 227.8 636.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+57 0 obj<</Subtype/Link/Rect[227.8 623.8 238.8 636.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+58 0 obj<</Subtype/Link/Rect[238.8 623.8 278.5 636.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+59 0 obj<</Subtype/Link/Rect[275.8 623.8 287.1 636.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+60 0 obj<</Subtype/Link/Rect[287.1 623.8 333.5 636.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+61 0 obj[56 0 R
+57 0 R
+58 0 R
+59 0 R
+60 0 R
+]endobj
+62 0 obj<</Subtype/Link/Rect[430.1 481.0 458.8 494.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+63 0 obj[62 0 R
+]endobj
+64 0 obj<</Subtype/Link/Rect[83.9 316.4 121.5 329.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+65 0 obj<</Subtype/Link/Rect[121.5 316.4 132.5 329.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+66 0 obj<</Subtype/Link/Rect[132.5 316.4 189.0 329.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+67 0 obj<</Subtype/Link/Rect[189.0 316.4 205.2 329.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+68 0 obj<</Subtype/Link/Rect[205.2 316.4 233.6 329.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+69 0 obj<</Subtype/Link/Rect[233.6 316.4 252.0 329.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+70 0 obj[64 0 R
+65 0 R
+66 0 R
+67 0 R
+68 0 R
+69 0 R
+]endobj
+71 0 obj<</Subtype/Link/Rect[72.0 673.2 131.9 686.2]/Border[0 0 0]/Dest[294 0 R/XYZ null 812 0]>>endobj
+72 0 obj<</Subtype/Link/Rect[72.0 646.8 113.9 659.8]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+73 0 obj<</Subtype/Link/Rect[113.9 646.8 124.9 659.8]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+74 0 obj<</Subtype/Link/Rect[124.9 646.8 156.9 659.8]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+75 0 obj<</Subtype/Link/Rect[156.9 646.8 168.9 659.8]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+76 0 obj<</Subtype/Link/Rect[168.9 646.8 199.1 659.8]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+77 0 obj<</Subtype/Link/Rect[199.1 646.8 279.2 659.8]/Border[0 0 0]/Dest[300 0 R/XYZ null 812 0]>>endobj
+78 0 obj<</Subtype/Link/Rect[108.0 633.6 134.6 646.6]/Border[0 0 0]/Dest[300 0 R/XYZ null 409 0]>>endobj
+79 0 obj<</Subtype/Link/Rect[134.6 633.6 153.8 646.6]/Border[0 0 0]/Dest[300 0 R/XYZ null 409 0]>>endobj
+80 0 obj<</Subtype/Link/Rect[153.8 633.6 182.2 646.6]/Border[0 0 0]/Dest[300 0 R/XYZ null 409 0]>>endobj
+81 0 obj<</Subtype/Link/Rect[182.2 633.6 262.3 646.6]/Border[0 0 0]/Dest[300 0 R/XYZ null 409 0]>>endobj
+82 0 obj<</Subtype/Link/Rect[108.0 620.4 134.6 633.4]/Border[0 0 0]/Dest[303 0 R/XYZ null 793 0]>>endobj
+83 0 obj<</Subtype/Link/Rect[134.6 620.4 145.3 633.4]/Border[0 0 0]/Dest[303 0 R/XYZ null 793 0]>>endobj
+84 0 obj<</Subtype/Link/Rect[145.3 620.4 186.3 633.4]/Border[0 0 0]/Dest[303 0 R/XYZ null 793 0]>>endobj
+85 0 obj<</Subtype/Link/Rect[144.0 607.2 174.9 620.2]/Border[0 0 0]/Dest[303 0 R/XYZ null 264 0]>>endobj
+86 0 obj<</Subtype/Link/Rect[174.9 607.2 224.4 620.2]/Border[0 0 0]/Dest[303 0 R/XYZ null 264 0]>>endobj
+87 0 obj<</Subtype/Link/Rect[108.0 594.0 174.3 607.0]/Border[0 0 0]/Dest[306 0 R/XYZ null 298 0]>>endobj
+88 0 obj<</Subtype/Link/Rect[174.3 594.0 249.5 607.0]/Border[0 0 0]/Dest[306 0 R/XYZ null 298 0]>>endobj
+89 0 obj<</Subtype/Link/Rect[144.0 580.8 170.6 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+90 0 obj<</Subtype/Link/Rect[170.6 580.8 189.8 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+91 0 obj<</Subtype/Link/Rect[189.8 580.8 210.3 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+92 0 obj<</Subtype/Link/Rect[210.3 580.8 245.4 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+93 0 obj<</Subtype/Link/Rect[245.4 580.8 264.1 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+94 0 obj<</Subtype/Link/Rect[264.1 580.8 286.4 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+95 0 obj<</Subtype/Link/Rect[286.4 580.8 323.6 593.8]/Border[0 0 0]/Dest[309 0 R/XYZ null 498 0]>>endobj
+96 0 obj<</Subtype/Link/Rect[144.0 567.6 169.4 580.6]/Border[0 0 0]/Dest[309 0 R/XYZ null 361 0]>>endobj
+97 0 obj<</Subtype/Link/Rect[169.4 567.6 203.0 580.6]/Border[0 0 0]/Dest[309 0 R/XYZ null 361 0]>>endobj
+98 0 obj<</Subtype/Link/Rect[144.0 554.4 170.6 567.4]/Border[0 0 0]/Dest[312 0 R/XYZ null 777 0]>>endobj
+99 0 obj<</Subtype/Link/Rect[170.6 554.4 181.3 567.4]/Border[0 0 0]/Dest[312 0 R/XYZ null 777 0]>>endobj
+100 0 obj<</Subtype/Link/Rect[181.3 554.4 188.9 567.4]/Border[0 0 0]/Dest[312 0 R/XYZ null 777 0]>>endobj
+101 0 obj<</Subtype/Link/Rect[188.9 554.4 220.1 567.4]/Border[0 0 0]/Dest[312 0 R/XYZ null 777 0]>>endobj
+102 0 obj<</Subtype/Link/Rect[108.0 541.2 168.2 554.2]/Border[0 0 0]/Dest[312 0 R/XYZ null 665 0]>>endobj
+103 0 obj<</Subtype/Link/Rect[168.2 541.2 243.4 554.2]/Border[0 0 0]/Dest[312 0 R/XYZ null 665 0]>>endobj
+104 0 obj<</Subtype/Link/Rect[108.0 528.0 156.0 541.0]/Border[0 0 0]/Dest[312 0 R/XYZ null 376 0]>>endobj
+105 0 obj<</Subtype/Link/Rect[156.0 528.0 184.4 541.0]/Border[0 0 0]/Dest[312 0 R/XYZ null 376 0]>>endobj
+106 0 obj<</Subtype/Link/Rect[184.4 528.0 207.0 541.0]/Border[0 0 0]/Dest[312 0 R/XYZ null 376 0]>>endobj
+107 0 obj<</Subtype/Link/Rect[144.0 514.8 172.4 527.8]/Border[0 0 0]/Dest[312 0 R/XYZ null 286 0]>>endobj
+108 0 obj<</Subtype/Link/Rect[172.4 514.8 193.5 527.8]/Border[0 0 0]/Dest[312 0 R/XYZ null 286 0]>>endobj
+109 0 obj<</Subtype/Link/Rect[193.5 514.8 214.9 527.8]/Border[0 0 0]/Dest[312 0 R/XYZ null 286 0]>>endobj
+110 0 obj<</Subtype/Link/Rect[144.0 501.6 184.6 514.6]/Border[0 0 0]/Dest[315 0 R/XYZ null 717 0]>>endobj
+111 0 obj<</Subtype/Link/Rect[184.6 501.6 192.3 514.6]/Border[0 0 0]/Dest[315 0 R/XYZ null 717 0]>>endobj
+112 0 obj<</Subtype/Link/Rect[192.3 501.6 220.7 514.6]/Border[0 0 0]/Dest[315 0 R/XYZ null 717 0]>>endobj
+113 0 obj<</Subtype/Link/Rect[220.7 501.6 239.0 514.6]/Border[0 0 0]/Dest[315 0 R/XYZ null 717 0]>>endobj
+114 0 obj<</Subtype/Link/Rect[144.0 488.4 181.0 501.4]/Border[0 0 0]/Dest[318 0 R/XYZ null 631 0]>>endobj
+115 0 obj<</Subtype/Link/Rect[181.0 488.4 204.5 501.4]/Border[0 0 0]/Dest[318 0 R/XYZ null 631 0]>>endobj
+116 0 obj<</Subtype/Link/Rect[204.5 488.4 215.8 501.4]/Border[0 0 0]/Dest[318 0 R/XYZ null 631 0]>>endobj
+117 0 obj<</Subtype/Link/Rect[215.8 488.4 232.0 501.4]/Border[0 0 0]/Dest[318 0 R/XYZ null 631 0]>>endobj
+118 0 obj<</Subtype/Link/Rect[232.0 488.4 250.3 501.4]/Border[0 0 0]/Dest[318 0 R/XYZ null 631 0]>>endobj
+119 0 obj<</Subtype/Link/Rect[144.0 475.2 183.4 488.2]/Border[0 0 0]/Dest[318 0 R/XYZ null 474 0]>>endobj
+120 0 obj<</Subtype/Link/Rect[183.4 475.2 206.9 488.2]/Border[0 0 0]/Dest[318 0 R/XYZ null 474 0]>>endobj
+121 0 obj<</Subtype/Link/Rect[206.9 475.2 231.1 488.2]/Border[0 0 0]/Dest[318 0 R/XYZ null 474 0]>>endobj
+122 0 obj<</Subtype/Link/Rect[231.1 475.2 247.3 488.2]/Border[0 0 0]/Dest[318 0 R/XYZ null 474 0]>>endobj
+123 0 obj<</Subtype/Link/Rect[247.3 475.2 265.6 488.2]/Border[0 0 0]/Dest[318 0 R/XYZ null 474 0]>>endobj
+124 0 obj<</Subtype/Link/Rect[144.0 462.0 181.0 475.0]/Border[0 0 0]/Dest[318 0 R/XYZ null 262 0]>>endobj
+125 0 obj<</Subtype/Link/Rect[181.0 462.0 188.6 475.0]/Border[0 0 0]/Dest[318 0 R/XYZ null 262 0]>>endobj
+126 0 obj<</Subtype/Link/Rect[188.6 462.0 217.0 475.0]/Border[0 0 0]/Dest[318 0 R/XYZ null 262 0]>>endobj
+127 0 obj<</Subtype/Link/Rect[217.0 462.0 235.4 475.0]/Border[0 0 0]/Dest[318 0 R/XYZ null 262 0]>>endobj
+128 0 obj<</Subtype/Link/Rect[72.0 435.6 113.9 448.6]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+129 0 obj<</Subtype/Link/Rect[113.9 435.6 124.9 448.6]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+130 0 obj<</Subtype/Link/Rect[124.9 435.6 185.1 448.6]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+131 0 obj<</Subtype/Link/Rect[185.1 435.6 202.5 448.6]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+132 0 obj<</Subtype/Link/Rect[202.5 435.6 232.7 448.6]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+133 0 obj<</Subtype/Link/Rect[232.7 435.6 253.5 448.6]/Border[0 0 0]/Dest[324 0 R/XYZ null 812 0]>>endobj
+134 0 obj<</Subtype/Link/Rect[108.0 422.4 127.9 435.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 422 0]>>endobj
+135 0 obj<</Subtype/Link/Rect[127.9 422.4 162.4 435.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 422 0]>>endobj
+136 0 obj<</Subtype/Link/Rect[162.4 422.4 205.5 435.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 422 0]>>endobj
+137 0 obj<</Subtype/Link/Rect[205.5 422.4 244.5 435.4]/Border[0 0 0]/Dest[324 0 R/XYZ null 422 0]>>endobj
+138 0 obj<</Subtype/Link/Rect[144.0 409.2 180.4 422.2]/Border[0 0 0]/Dest[327 0 R/XYZ null 717 0]>>endobj
+139 0 obj<</Subtype/Link/Rect[180.4 409.2 215.2 422.2]/Border[0 0 0]/Dest[327 0 R/XYZ null 717 0]>>endobj
+140 0 obj<</Subtype/Link/Rect[144.0 396.0 171.8 409.0]/Border[0 0 0]/Dest[336 0 R/XYZ null 272 0]>>endobj
+141 0 obj<</Subtype/Link/Rect[171.8 396.0 206.6 409.0]/Border[0 0 0]/Dest[336 0 R/XYZ null 272 0]>>endobj
+142 0 obj<</Subtype/Link/Rect[144.0 382.8 170.0 395.8]/Border[0 0 0]/Dest[342 0 R/XYZ null 777 0]>>endobj
+143 0 obj<</Subtype/Link/Rect[170.0 382.8 204.8 395.8]/Border[0 0 0]/Dest[342 0 R/XYZ null 777 0]>>endobj
+144 0 obj<</Subtype/Link/Rect[144.0 369.6 177.3 382.6]/Border[0 0 0]/Dest[345 0 R/XYZ null 620 0]>>endobj
+145 0 obj<</Subtype/Link/Rect[177.3 369.6 212.1 382.6]/Border[0 0 0]/Dest[345 0 R/XYZ null 620 0]>>endobj
+146 0 obj<</Subtype/Link/Rect[144.0 356.4 180.4 369.4]/Border[0 0 0]/Dest[348 0 R/XYZ null 235 0]>>endobj
+147 0 obj<</Subtype/Link/Rect[180.4 356.4 227.4 369.4]/Border[0 0 0]/Dest[348 0 R/XYZ null 235 0]>>endobj
+148 0 obj<</Subtype/Link/Rect[72.0 330.0 113.9 343.0]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+149 0 obj<</Subtype/Link/Rect[113.9 330.0 124.9 343.0]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+150 0 obj<</Subtype/Link/Rect[124.9 330.0 172.2 343.0]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+151 0 obj<</Subtype/Link/Rect[172.2 330.0 252.3 343.0]/Border[0 0 0]/Dest[354 0 R/XYZ null 812 0]>>endobj
+152 0 obj<</Subtype/Link/Rect[108.0 316.8 134.6 329.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 409 0]>>endobj
+153 0 obj<</Subtype/Link/Rect[134.6 316.8 145.3 329.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 409 0]>>endobj
+154 0 obj<</Subtype/Link/Rect[145.3 316.8 152.9 329.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 409 0]>>endobj
+155 0 obj<</Subtype/Link/Rect[152.9 316.8 199.9 329.8]/Border[0 0 0]/Dest[354 0 R/XYZ null 409 0]>>endobj
+156 0 obj<</Subtype/Link/Rect[108.0 303.6 181.6 316.6]/Border[0 0 0]/Dest[354 0 R/XYZ null 252 0]>>endobj
+157 0 obj<</Subtype/Link/Rect[181.6 303.6 206.4 316.6]/Border[0 0 0]/Dest[354 0 R/XYZ null 252 0]>>endobj
+158 0 obj<</Subtype/Link/Rect[206.4 303.6 214.0 316.6]/Border[0 0 0]/Dest[354 0 R/XYZ null 252 0]>>endobj
+159 0 obj<</Subtype/Link/Rect[214.0 303.6 256.2 316.6]/Border[0 0 0]/Dest[354 0 R/XYZ null 252 0]>>endobj
+160 0 obj<</Subtype/Link/Rect[144.0 290.4 185.9 303.4]/Border[0 0 0]/Dest[360 0 R/XYZ null 777 0]>>endobj
+161 0 obj<</Subtype/Link/Rect[185.9 290.4 230.8 303.4]/Border[0 0 0]/Dest[360 0 R/XYZ null 777 0]>>endobj
+162 0 obj<</Subtype/Link/Rect[230.8 290.4 280.9 303.4]/Border[0 0 0]/Dest[360 0 R/XYZ null 777 0]>>endobj
+163 0 obj<</Subtype/Link/Rect[144.0 277.2 187.7 290.2]/Border[0 0 0]/Dest[360 0 R/XYZ null 274 0]>>endobj
+164 0 obj<</Subtype/Link/Rect[187.7 277.2 232.6 290.2]/Border[0 0 0]/Dest[360 0 R/XYZ null 274 0]>>endobj
+165 0 obj<</Subtype/Link/Rect[232.6 277.2 306.3 290.2]/Border[0 0 0]/Dest[360 0 R/XYZ null 274 0]>>endobj
+166 0 obj<</Subtype/Link/Rect[306.3 277.2 347.8 290.2]/Border[0 0 0]/Dest[360 0 R/XYZ null 274 0]>>endobj
+167 0 obj<</Subtype/Link/Rect[72.0 250.8 113.9 263.8]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+168 0 obj<</Subtype/Link/Rect[113.9 250.8 124.9 263.8]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+169 0 obj<</Subtype/Link/Rect[124.9 250.8 174.7 263.8]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+170 0 obj<</Subtype/Link/Rect[174.7 250.8 204.9 263.8]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+171 0 obj<</Subtype/Link/Rect[204.9 250.8 270.9 263.8]/Border[0 0 0]/Dest[366 0 R/XYZ null 812 0]>>endobj
+172 0 obj<</Subtype/Link/Rect[108.0 237.6 136.4 250.6]/Border[0 0 0]/Dest[366 0 R/XYZ null 422 0]>>endobj
+173 0 obj<</Subtype/Link/Rect[136.4 237.6 157.5 250.6]/Border[0 0 0]/Dest[366 0 R/XYZ null 422 0]>>endobj
+174 0 obj<</Subtype/Link/Rect[157.5 237.6 194.2 250.6]/Border[0 0 0]/Dest[366 0 R/XYZ null 422 0]>>endobj
+175 0 obj<</Subtype/Link/Rect[144.0 224.4 179.8 237.4]/Border[0 0 0]/Dest[369 0 R/XYZ null 389 0]>>endobj
+176 0 obj<</Subtype/Link/Rect[179.8 224.4 195.9 237.4]/Border[0 0 0]/Dest[369 0 R/XYZ null 389 0]>>endobj
+177 0 obj<</Subtype/Link/Rect[195.9 224.4 232.3 237.4]/Border[0 0 0]/Dest[369 0 R/XYZ null 389 0]>>endobj
+178 0 obj<</Subtype/Link/Rect[232.3 224.4 264.7 237.4]/Border[0 0 0]/Dest[369 0 R/XYZ null 389 0]>>endobj
+179 0 obj<</Subtype/Link/Rect[144.0 211.2 177.9 224.2]/Border[0 0 0]/Dest[372 0 R/XYZ null 556 0]>>endobj
+180 0 obj<</Subtype/Link/Rect[177.9 211.2 194.1 224.2]/Border[0 0 0]/Dest[372 0 R/XYZ null 556 0]>>endobj
+181 0 obj<</Subtype/Link/Rect[194.1 211.2 230.5 224.2]/Border[0 0 0]/Dest[372 0 R/XYZ null 556 0]>>endobj
+182 0 obj<</Subtype/Link/Rect[230.5 211.2 262.9 224.2]/Border[0 0 0]/Dest[372 0 R/XYZ null 556 0]>>endobj
+183 0 obj<</Subtype/Link/Rect[144.0 198.0 179.8 211.0]/Border[0 0 0]/Dest[372 0 R/XYZ null 300 0]>>endobj
+184 0 obj<</Subtype/Link/Rect[179.8 198.0 195.9 211.0]/Border[0 0 0]/Dest[372 0 R/XYZ null 300 0]>>endobj
+185 0 obj<</Subtype/Link/Rect[195.9 198.0 234.7 211.0]/Border[0 0 0]/Dest[372 0 R/XYZ null 300 0]>>endobj
+186 0 obj<</Subtype/Link/Rect[234.7 198.0 246.7 211.0]/Border[0 0 0]/Dest[372 0 R/XYZ null 300 0]>>endobj
+187 0 obj<</Subtype/Link/Rect[246.7 198.0 274.5 211.0]/Border[0 0 0]/Dest[372 0 R/XYZ null 300 0]>>endobj
+188 0 obj<</Subtype/Link/Rect[274.5 198.0 317.2 211.0]/Border[0 0 0]/Dest[372 0 R/XYZ null 300 0]>>endobj
+189 0 obj<</Subtype/Link/Rect[108.0 184.8 151.7 197.8]/Border[0 0 0]/Dest[375 0 R/XYZ null 760 0]>>endobj
+190 0 obj<</Subtype/Link/Rect[151.7 184.8 177.7 197.8]/Border[0 0 0]/Dest[375 0 R/XYZ null 760 0]>>endobj
+191 0 obj<</Subtype/Link/Rect[177.7 184.8 201.8 197.8]/Border[0 0 0]/Dest[375 0 R/XYZ null 760 0]>>endobj
+192 0 obj<</Subtype/Link/Rect[201.8 184.8 209.4 197.8]/Border[0 0 0]/Dest[375 0 R/XYZ null 760 0]>>endobj
+193 0 obj<</Subtype/Link/Rect[209.4 184.8 237.8 197.8]/Border[0 0 0]/Dest[375 0 R/XYZ null 760 0]>>endobj
+194 0 obj<</Subtype/Link/Rect[237.8 184.8 256.2 197.8]/Border[0 0 0]/Dest[375 0 R/XYZ null 760 0]>>endobj
+195 0 obj<</Subtype/Link/Rect[144.0 171.6 163.9 184.6]/Border[0 0 0]/Dest[375 0 R/XYZ null 551 0]>>endobj
+196 0 obj<</Subtype/Link/Rect[163.9 171.6 206.9 184.6]/Border[0 0 0]/Dest[375 0 R/XYZ null 551 0]>>endobj
+197 0 obj<</Subtype/Link/Rect[206.9 171.6 242.1 184.6]/Border[0 0 0]/Dest[375 0 R/XYZ null 551 0]>>endobj
+198 0 obj<</Subtype/Link/Rect[242.1 171.6 260.4 184.6]/Border[0 0 0]/Dest[375 0 R/XYZ null 551 0]>>endobj
+199 0 obj<</Subtype/Link/Rect[144.0 158.4 173.0 171.4]/Border[0 0 0]/Dest[375 0 R/XYZ null 214 0]>>endobj
+200 0 obj<</Subtype/Link/Rect[173.0 158.4 189.2 171.4]/Border[0 0 0]/Dest[375 0 R/XYZ null 214 0]>>endobj
+201 0 obj<</Subtype/Link/Rect[189.2 158.4 232.3 171.4]/Border[0 0 0]/Dest[375 0 R/XYZ null 214 0]>>endobj
+202 0 obj<</Subtype/Link/Rect[232.3 158.4 267.5 171.4]/Border[0 0 0]/Dest[375 0 R/XYZ null 214 0]>>endobj
+203 0 obj<</Subtype/Link/Rect[267.5 158.4 285.8 171.4]/Border[0 0 0]/Dest[375 0 R/XYZ null 214 0]>>endobj
+204 0 obj<</Subtype/Link/Rect[144.0 145.2 173.0 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+205 0 obj<</Subtype/Link/Rect[173.0 145.2 216.1 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+206 0 obj<</Subtype/Link/Rect[216.1 145.2 238.4 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+207 0 obj<</Subtype/Link/Rect[238.4 145.2 254.6 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+208 0 obj<</Subtype/Link/Rect[254.6 145.2 265.3 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+209 0 obj<</Subtype/Link/Rect[265.3 145.2 309.0 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+210 0 obj<</Subtype/Link/Rect[309.0 145.2 342.0 158.2]/Border[0 0 0]/Dest[378 0 R/XYZ null 202 0]>>endobj
+211 0 obj<</Subtype/Link/Rect[72.0 118.8 120.6 131.8]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+212 0 obj<</Subtype/Link/Rect[120.6 118.8 134.0 131.8]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+213 0 obj<</Subtype/Link/Rect[134.0 118.8 169.5 131.8]/Border[0 0 0]/Dest[384 0 R/XYZ null 812 0]>>endobj
+214 0 obj<</Subtype/Link/Rect[108.0 105.6 146.9 118.6]/Border[0 0 0]/Dest[384 0 R/XYZ null 422 0]>>endobj
+215 0 obj<</Subtype/Link/Rect[146.9 105.6 179.9 118.6]/Border[0 0 0]/Dest[384 0 R/XYZ null 422 0]>>endobj
+216 0 obj<</Subtype/Link/Rect[108.0 92.4 146.9 105.4]/Border[0 0 0]/Dest[387 0 R/XYZ null 609 0]>>endobj
+217 0 obj<</Subtype/Link/Rect[146.9 92.4 179.9 105.4]/Border[0 0 0]/Dest[387 0 R/XYZ null 609 0]>>endobj
+218 0 obj<</Subtype/Link/Rect[108.0 79.2 146.9 92.2]/Border[0 0 0]/Dest[390 0 R/XYZ null 793 0]>>endobj
+219 0 obj<</Subtype/Link/Rect[146.9 79.2 174.1 92.2]/Border[0 0 0]/Dest[390 0 R/XYZ null 793 0]>>endobj
+220 0 obj<</Subtype/Link/Rect[174.1 79.2 211.7 92.2]/Border[0 0 0]/Dest[390 0 R/XYZ null 793 0]>>endobj
+221 0 obj<</Subtype/Link/Rect[211.7 79.2 244.7 92.2]/Border[0 0 0]/Dest[390 0 R/XYZ null 793 0]>>endobj
+222 0 obj<</Subtype/Link/Rect[108.0 66.0 128.5 79.0]/Border[0 0 0]/Dest[390 0 R/XYZ null 469 0]>>endobj
+223 0 obj<</Subtype/Link/Rect[128.5 66.0 161.5 79.0]/Border[0 0 0]/Dest[390 0 R/XYZ null 469 0]>>endobj
+224 0 obj[71 0 R
+72 0 R
+73 0 R
+74 0 R
+75 0 R
+76 0 R
+77 0 R
+78 0 R
+79 0 R
+80 0 R
+81 0 R
+82 0 R
+83 0 R
+84 0 R
+85 0 R
+86 0 R
+87 0 R
+88 0 R
+89 0 R
+90 0 R
+91 0 R
+92 0 R
+93 0 R
+94 0 R
+95 0 R
+96 0 R
+97 0 R
+98 0 R
+99 0 R
+100 0 R
+101 0 R
+102 0 R
+103 0 R
+104 0 R
+105 0 R
+106 0 R
+107 0 R
+108 0 R
+109 0 R
+110 0 R
+111 0 R
+112 0 R
+113 0 R
+114 0 R
+115 0 R
+116 0 R
+117 0 R
+118 0 R
+119 0 R
+120 0 R
+121 0 R
+122 0 R
+123 0 R
+124 0 R
+125 0 R
+126 0 R
+127 0 R
+128 0 R
+129 0 R
+130 0 R
+131 0 R
+132 0 R
+133 0 R
+134 0 R
+135 0 R
+136 0 R
+137 0 R
+138 0 R
+139 0 R
+140 0 R
+141 0 R
+142 0 R
+143 0 R
+144 0 R
+145 0 R
+146 0 R
+147 0 R
+148 0 R
+149 0 R
+150 0 R
+151 0 R
+152 0 R
+153 0 R
+154 0 R
+155 0 R
+156 0 R
+157 0 R
+158 0 R
+159 0 R
+160 0 R
+161 0 R
+162 0 R
+163 0 R
+164 0 R
+165 0 R
+166 0 R
+167 0 R
+168 0 R
+169 0 R
+170 0 R
+171 0 R
+172 0 R
+173 0 R
+174 0 R
+175 0 R
+176 0 R
+177 0 R
+178 0 R
+179 0 R
+180 0 R
+181 0 R
+182 0 R
+183 0 R
+184 0 R
+185 0 R
+186 0 R
+187 0 R
+188 0 R
+189 0 R
+190 0 R
+191 0 R
+192 0 R
+193 0 R
+194 0 R
+195 0 R
+196 0 R
+197 0 R
+198 0 R
+199 0 R
+200 0 R
+201 0 R
+202 0 R
+203 0 R
+204 0 R
+205 0 R
+206 0 R
+207 0 R
+208 0 R
+209 0 R
+210 0 R
+211 0 R
+212 0 R
+213 0 R
+214 0 R
+215 0 R
+216 0 R
+217 0 R
+218 0 R
+219 0 R
+220 0 R
+221 0 R
+222 0 R
+223 0 R
+]endobj
+225 0 obj<</Subtype/Link/Rect[36.0 673.2 84.6 686.2]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+226 0 obj<</Subtype/Link/Rect[84.6 673.2 97.4 686.2]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+227 0 obj<</Subtype/Link/Rect[97.4 673.2 130.7 686.2]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+228 0 obj<</Subtype/Link/Rect[130.7 673.2 170.2 686.2]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+229 0 obj<</Subtype/Link/Rect[170.2 673.2 198.9 686.2]/Border[0 0 0]/Dest[396 0 R/XYZ null 812 0]>>endobj
+230 0 obj<</Subtype/Link/Rect[72.0 660.0 108.4 673.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 422 0]>>endobj
+231 0 obj<</Subtype/Link/Rect[108.4 660.0 135.9 673.0]/Border[0 0 0]/Dest[396 0 R/XYZ null 422 0]>>endobj
+232 0 obj[225 0 R
+226 0 R
+227 0 R
+228 0 R
+229 0 R
+230 0 R
+231 0 R
+]endobj
+233 0 obj<</Dests 234 0 R>>endobj
+234 0 obj<</Kids[235 0 R]>>endobj
+235 0 obj<</Limits[(0-intro.html)(pinouts)]/Names[(0-intro.html)236 0 R(1)237 0 R(1-basics.html)238 0 R(2-config.html)239 0 R(2_1)240 0 R(2_2)241 0 R(2_2_1)242 0 R(2_3)243 0 R(2_3_1)244 0 R(2_3_2)245 0 R(2_3_3)246 0 R(2_4)247 0 R(2_5)248 0 R(2_5_1)249 0 R(2_5_2)250 0 R(2_5_3)251 0 R(2_5_4)252 0 R(2_5_5)253 0 R(3-modem.html)254 0 R(3_1)255 0 R(3_1_1)256 0 R(3_1_2)257 0 R(3_1_3)258 0 R(3_1_4)259 0 R(3_1_5)260 0 R(4-advanced.html)261 0 R(4_1)262 0 R(4_2)263 0 R(4_2_1)264 0 R(4_2_2)265 0 R(5_1)266 0 R(5_1_1)267 0 R(5_1_2)268 0 R(5_1_3)269 0 R(5_2)270 0 R(5_2_1)271 0 R(5_2_2)272 0 R(5_2_3)273 0 R(6_1)274 0 R(6_2)275 0 R(6_3)276 0 R(6_4)277 0 R(7_1)278 0 R(a-pinouts.html)279 0 R(advanced)280 0 R(ascii)281 0 R(b-ascii.html)282 0 R(basics)283 0 R(config)284 0 R(modem)285 0 R(pinouts)286 0 R]>>endobj
+236 0 obj<</D[294 0 R/XYZ null 698 null]>>endobj
+237 0 obj<</D[294 0 R/XYZ null 812 null]>>endobj
+238 0 obj<</D[294 0 R/XYZ null 148 null]>>endobj
+239 0 obj<</D[318 0 R/XYZ null 90 null]>>endobj
+240 0 obj<</D[300 0 R/XYZ null 409 null]>>endobj
+241 0 obj<</D[303 0 R/XYZ null 793 null]>>endobj
+242 0 obj<</D[303 0 R/XYZ null 264 null]>>endobj
+243 0 obj<</D[306 0 R/XYZ null 298 null]>>endobj
+244 0 obj<</D[309 0 R/XYZ null 498 null]>>endobj
+245 0 obj<</D[309 0 R/XYZ null 361 null]>>endobj
+246 0 obj<</D[312 0 R/XYZ null 777 null]>>endobj
+247 0 obj<</D[312 0 R/XYZ null 665 null]>>endobj
+248 0 obj<</D[312 0 R/XYZ null 376 null]>>endobj
+249 0 obj<</D[312 0 R/XYZ null 286 null]>>endobj
+250 0 obj<</D[315 0 R/XYZ null 717 null]>>endobj
+251 0 obj<</D[318 0 R/XYZ null 631 null]>>endobj
+252 0 obj<</D[318 0 R/XYZ null 474 null]>>endobj
+253 0 obj<</D[318 0 R/XYZ null 262 null]>>endobj
+254 0 obj<</D[351 0 R/XYZ null 130 null]>>endobj
+255 0 obj<</D[324 0 R/XYZ null 422 null]>>endobj
+256 0 obj<</D[327 0 R/XYZ null 717 null]>>endobj
+257 0 obj<</D[336 0 R/XYZ null 272 null]>>endobj
+258 0 obj<</D[342 0 R/XYZ null 777 null]>>endobj
+259 0 obj<</D[345 0 R/XYZ null 620 null]>>endobj
+260 0 obj<</D[348 0 R/XYZ null 235 null]>>endobj
+261 0 obj<</D[360 0 R/XYZ null 60 null]>>endobj
+262 0 obj<</D[354 0 R/XYZ null 409 null]>>endobj
+263 0 obj<</D[354 0 R/XYZ null 252 null]>>endobj
+264 0 obj<</D[360 0 R/XYZ null 777 null]>>endobj
+265 0 obj<</D[360 0 R/XYZ null 274 null]>>endobj
+266 0 obj<</D[366 0 R/XYZ null 422 null]>>endobj
+267 0 obj<</D[369 0 R/XYZ null 389 null]>>endobj
+268 0 obj<</D[372 0 R/XYZ null 556 null]>>endobj
+269 0 obj<</D[372 0 R/XYZ null 300 null]>>endobj
+270 0 obj<</D[375 0 R/XYZ null 760 null]>>endobj
+271 0 obj<</D[375 0 R/XYZ null 551 null]>>endobj
+272 0 obj<</D[375 0 R/XYZ null 214 null]>>endobj
+273 0 obj<</D[378 0 R/XYZ null 202 null]>>endobj
+274 0 obj<</D[384 0 R/XYZ null 422 null]>>endobj
+275 0 obj<</D[387 0 R/XYZ null 609 null]>>endobj
+276 0 obj<</D[390 0 R/XYZ null 793 null]>>endobj
+277 0 obj<</D[390 0 R/XYZ null 469 null]>>endobj
+278 0 obj<</D[396 0 R/XYZ null 422 null]>>endobj
+279 0 obj<</D[381 0 R/XYZ null 554 null]>>endobj
+280 0 obj<</D[366 0 R/XYZ null 812 null]>>endobj
+281 0 obj<</D[396 0 R/XYZ null 812 null]>>endobj
+282 0 obj<</D[393 0 R/XYZ null 424 null]>>endobj
+283 0 obj<</D[300 0 R/XYZ null 812 null]>>endobj
+284 0 obj<</D[324 0 R/XYZ null 812 null]>>endobj
+285 0 obj<</D[354 0 R/XYZ null 812 null]>>endobj
+286 0 obj<</D[384 0 R/XYZ null 812 null]>>endobj
+287 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 40/Kids[288 0 R
+291 0 R
+402 0 R
+405 0 R
+294 0 R
+297 0 R
+300 0 R
+303 0 R
+306 0 R
+309 0 R
+312 0 R
+315 0 R
+318 0 R
+321 0 R
+324 0 R
+327 0 R
+330 0 R
+333 0 R
+336 0 R
+339 0 R
+342 0 R
+345 0 R
+348 0 R
+351 0 R
+354 0 R
+357 0 R
+360 0 R
+363 0 R
+366 0 R
+369 0 R
+372 0 R
+375 0 R
+378 0 R
+381 0 R
+384 0 R
+387 0 R
+390 0 R
+393 0 R
+396 0 R
+399 0 R
+]>>endobj
+288 0 obj<</Type/Page/Parent 287 0 R/Contents 289 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 5 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+289 0 obj<</Length 290 0 R/Filter/FlateDecode>>stream
+xì–MŽÔ0FmÎ`ɾ
+ä
+ÅÑþ"ÑŽ†Àqg£ëƺÁ± Nâì[×ñÇ rœÐ¼±¤¾›Èà|Ô¼o—endstream
+endobj
+290 0 obj
+725
+endobj
+291 0 obj<</Type/Page/Parent 287 0 R/Contents 292 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
+292 0 obj<</Length 293 0 R/Filter/FlateDecode>>stream
+x+ä2T0
+ár á
+ä
+endobj
+293 0 obj
+31
+endobj
+294 0 obj<</Type/Page/Parent 287 0 R/Contents 295 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F9 9 0 R/Fa 10 0 R/Fc 11 0 R>>>>/Annots 38 0 R>>endobj
+295 0 obj<</Length 296 0 R/Filter/FlateDecode>>stream
+xµ–M“Ú8†ïüŠ>&UàØÂØ°·2ÉRµÙaR5‡¹8¶ ÊØëaȯßW’ ZŠ8&E• á‡îÖÛÒ¿\|<
+ŠóÁízðáÓŒ¼­S‡ãQNFëäÝ¢¨K™4q-dñ~ý Ož§À‘!Gc6u|…®·œV¼QFËRnÊ(ÏE±¡ÏH8¥²¤åýjñH÷;^Fµz³:T5Ï+Ú‹,£šGñ–²¡­ÜS-©jâ˜WUÚdÙaH<ME,xQc¡âpiäMˆQ‘ÐN–uô-;ÐÎx¦ÁT&õ®"Y(ã%}ý{ñøÄ&íeù\ÕˆoTps‡îTñ6ÚÕ¼T–^yuæ­u ·Æ_£|—ñ
+Þ¢ššŠk·f›Oï–&&ˆR#ĨL´Úÿ{l·„ HK¥pFiSh‘+|æ³ÚÊ&KtÄ«ÞÒ /”ò=å2F¦HøâÁìpH.G_‡´jŠû•Ú3¾Ê,*EeÅFÔ¡“ä\Ø¿DѼTiœËª& aˆ$‰¬L"R%ðMl6$KyÉ‹?ñzÏ9d>ÿ‡y9Û°®ˆTÀ©Pâ¢|DÆ‹(‡ÔPÙie—þ"àGE™ÉøYã•ÓeAWŸ0¶ÑÕˆ/²ÜD…øc¢@µi'2Ëä^Uf[:ív¼H`¿úCYüð)n;
+¸[\ÇE©‡§ŸÑiŽKŒ…x掠]d´º@[@NSÿ´äíäé²q›
+³¸¬ºä4› @úh Pªû¨ð>Ü&”êáÿø+Tì.’7æ}¥›!=¬FlÌh)
+ÙÔ¿¡^œºGåô¢O¹–†08®{h €úØïÃmB)ÇTýõ˜· ð3]ßGþ
+¥}a?ê|‹r]Í 5–õ s.»Ûì…áoõNKcêüîïO]ô¨«æ×^tþüwaþ7endstream
+endobj
+296 0 obj
+1013
+endobj
+297 0 obj<</Type/Page/Parent 287 0 R/Contents 298 0 R/Resources<</ProcSet[/PDF/Text]/Font<</Fa 10 0 R>>>>>>endobj
+298 0 obj<</Length 299 0 R/Filter/FlateDecode>>stream
+x-± Ew¾â:´ò°j\MÔtj ®¤Ð# ¯tðï…hîîIÎ}3žƒ°Ý—žÛ\4 ‚yS#eVÒ’ÓOè)N¤½wa‚ë⌅1ôlïн,éTˆüÌÉúy­¬úYª¿F”­Çz—³¶ ‰¢Y†äb(è¬Ø}Rx*³endstream
+endobj
+299 0 obj
+138
+endobj
+300 0 obj<</Type/Page/Parent 287 0 R/Contents 301 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+301 0 obj<</Length 302 0 R/Filter/FlateDecode>>stream
+x•VËrÛF¼ó+&¾„®a>$Š:¹l‰º©R‰Qå‹. `@® `áÝ…hæëÓ³
+—¨±fgUwl Ém¼>(¹Â—|úUÚBû_ŠðñZ¼µ\w@¬ y«jW€“® c« ½LsåÕË{b2¤Ð"Õ@Á–¼®8ZZÆÛÂ@ >—Ã`¤F¨€7ñ¢€¹ÔâºÌµæ@“•mÎœ5û£±ÊùUC®ˆ|JèQ…+=ÿñ¸}Æ/t¯t­Jd» ýuÏ5åF×»AíQSVÙžÐ)‡
+†5ËÔ0@LrT¦Rö0n/„yŽý7*¬4‚î×O^ Ú5* rœ÷qJoÕ/Š1’Ð`<Jaé–•+Î~sƒå iØBSx œ4+†G±uâáYÃvæ83˜ÝËô]Ú¸w2VK©jsãÉ
+!¹Ÿ¸CR=^äo-¶Ü²TƼ%˜ê¶J±G
+©¿šÏ`:‚¸8³ÉB9QÚ¢šÉÕéE$
+endobj
+302 0 obj
+1069
+endobj
+303 0 obj<</Type/Page/Parent 287 0 R/Contents 304 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 47 0 R>>endobj
+304 0 obj<</Length 305 0 R/Filter/FlateDecode>>stream
+xY]“Ú6}ß_q§O›éÂú }é$»ÙLf:I
+ôk&/ZàÆØ[Ë°åß÷Ü+Ù€ D“ ¶|ï‘tΕtüÏMHþ…§ü7ßܼ›ÝÜ?)ôG4[â^:ÓlqûÇZÕôÑÐdÚ‹âèç7³¿oÞÏn‚~€çù#äÉDIú¥ƒ°ŸÒ†’0jå4µÑ
+C{¡¢Û¨”RdjU,Tµ ëy]es•SVÔºZª¹¦eY‘ÑU†‹ór³Ù¸_geah¡—Y¡ô¼§z­é"ÂcL@8
+¨mTõ }. tõ9«I1 ›.<ëúUë‚zñFö ˆú„ăËåµ'´OvëGı}p(Nϳ¥£3µ7<jF“ÉV…Ê ÍUA«’Ôs¹­)ÐRëéGή1ÊšØã;Ï.m‹­QϹîw2ÿUn%ÔÖX*inr(¥ª‰g )ë5ËÒP^òœ (zVÛp^¾’.ÊíjÝd‰RKÏwÚd Pì5«ðÉÈ
+ÀÞ º°*ùÇBÕêŽq½Âÿ’¿r”›—ªÜ!Õ?wÇ•¡ÞËK [˜µú†?qCÔ„zMú÷u­×0ÿ ¸É`(7 ºàþià¸Ø ¥Nõ¡e2sÌh€ŸSûQ›y•½p¡ái ˦å¨Ï•ôLËÕå¤eÔŸoÿqË8¸”}ÔÍ~)æI…–j€“ðãƒ0
+G۹ϢåKGÅíCUn‹…P–§¯©Ô)_9Ð_ðYöN'öV“ñ
+z„Dùjï(ð¥g¢ÕbÏ7d›ØaÖo…Ùi £ey( ©§¨Z¼îKÄ£L“?%–·ÎD S©Üèè±_QܲºìQ×ØSpÓËÒHPI0·<® «÷š4l[‘Ƶ¶Vž­4lcÙk‘­4<#[i8Ì<×"[ixF¶Òp˜Y×"[ixF¶Ò8‹Ò°‚HƼY]ÜF<±çh=³:Þkô:|™a¯b6Y][ž1©¡¿-€N{ÃK©>|ºž¤¢_ÊU6ï$<HóT>Ò‰ïËâñAò¤<0BAuxv¢ç:ÛaÈËù7Î?t‹QÔÉ2á¥ØKX"QRýÄ!m}Åá؉CûŠÃ/²‡Åì)¿ÈN³§8ü";qœÃÜŠ#pU3¾ÄXW`OÛáª#’Tðï)ct)cìIž³k˃ª°…¯ŽøxªéÉå—Ž‡Ù”¡œ*DО=]œZut2p ‰ªugX¦rBå‹—W“xðîÆK0¶­§`<[ÁØÆž‚ñŒlã0û Æ3²ŒÃì'ÏÈV0g17‚‰¼èc5I.yb‰uBä3&úŸ­ÆÑtVvnLqØâK'‹É˜¯H9Á¡¯ÚÙuH¦L¶f¡à9´ºD{·ÖÒ¾“¡}–\_Zæw’4«b§ízr…÷û@ž¼—¶¾¼÷ ìx/}yïÙñÞböä½_dÇ{‹Ù“÷~‘ïÏany
+Í<ÕçöP®œž° ­ª9f%°¼Ý^4
+½Â[‹õ¥ïŸ”ó`à C•¦c|2Wì;ž/U¹ªÔF|ã[6ƒyŽ¿|žb6>Kùä:Ý›ZoD<=§7Œd9“ýL°×ä÷ù×X¿ÞüNž4endstream
+endobj
+305 0 obj
+2027
+endobj
+306 0 obj<</Type/Page/Parent 287 0 R/Contents 307 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+307 0 obj<</Length 308 0 R/Filter/FlateDecode>>stream
+x–As9…ïþ}ÄU@Àvç˜5ÉVªÖ•,Ì!.òLZk$"i üû}­`›„J9[Òtýúuÿ¼ÓÿÆôá†nï)/¯þÊ®Þ}ùHã1e üåþánø@YÑË~Lh@™W6”:F.h¢¢ºÎþÃñ»ÃñÁÍýð._1É• —VÊ•÷š¸C±õÈ»’v®ò´uþ%Dµ³E<»r]Eöä<¼Ñ9“üqøÏÛBÑ`|;¼‘ÏÎ{F¿0)zú6ùü4¿Ò'*•¡3Q-™t mñäÚ³ä În”©ðä‚Æ}Ú®´‘ûa­ðµ?Þê|oŒ†5“#“iB8åœõæ~rþ"~²¬]Ô)ÚÀ
+ׯ±)[œ¢
+zÞ½’J*rdc$ë‹š³¦â´"!/¡Ñ¼×iµùµðÁñ@»¥¥%S@«B¥ Ȳ0èå*ºþ‘§ßnWÈeþóiCn͵‹42Hj^H¿7îÒ²¢ó¼³x?Vž2G³ÆŒÎº¡œ?’~­ßƒ¥‰ à7Ez´¤S ‚‡2^/WP£ëä•Л'“ ¿é¼{;ØÛ¸ÝBäñ¼¬ t’â\·•˜ÿøøÞÖ™ž‡;Mp§ü³â/Â+7Žx ‡^-ÿûfDõ­~,Tï
+ìÃE ¿ÀÖ ]Î^ùJysN+:©ù’å_…]j†” ˜e¥ ƃ
+&È¿rS…4ëh«ãŠ:JS­ôOóíµ{¥«˜¯[I \éðÅnÞi
+ F„®½,™ä¼7†ÊÅ µÁ&sÌ ñ·V/̽Ӏ[Ó/øÎ4îÑ3àbmÊ_Vùªõ´Ãó g`ðb]–\h„FS¥Ór¿ öS¬áÇ¢ Œ«µò:¦yÕŠ×äæ&
+u¤ö;¼¢[wã^ªúR²Iá#Äf°îÇμ7±Tðד- wËÛv¹¦|©àq6×;MŽ”7xNEAY=ÓGAÑRU« ÔvÁSTaGwÃ1Ýßê5|Vo.ß½[zU&ñÿ4¹À§¾›}ýAßÖ2Ã¥-f»¹LñêwnF²'Ïêµ| mõ¡#ïFÃè_x/I~ήþ½ú_}ëYendstream
+endobj
+308 0 obj
+1178
+endobj
+309 0 obj<</Type/Page/Parent 287 0 R/Contents 310 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 55 0 R>>endobj
+310 0 obj<</Length 311 0 R/Filter/FlateDecode>>stream
+xì]ÝsÛÆõ½¤dúã ÓüÚØoègê‡_ òg:9NœòM©<m9ÎÐu£˜i¢XŽgøf·iZ½)¦Dÿmï]ì.G –Hªve“8¸wÏ.€µ€¾¼¶'ü³§wåßÓ¿]ûàñµ[6ãøñn¼±¹ùþÝøîýÍ÷ïÇÿòËGãϾzþ)³ÿ?~°?ùüé³ç_|þÅWûñ‡O^<‰?òùþßÆûûã/>¿ùø¯×>z|íËøöfúþUŽ{ï÷ãÛœénr——¥®Á­‡;¼5¸õÛ?ˆû¿JTÙøP~Ò¾üÜQåÞmù¹ÿ‘ü<Påá=ùù(•ŸGªüúO·ñ‹ç_}zë÷œ?¹õ›ø6¿~°ý0ÞŒ^ËB ‚Áà@p 8‚Áà@p 8‚Áà@p 8‚Áà@p 8ÐJhm˜í§iú‡,›§é˜UîG{²œ¦wZ©ùû5§~–= îð(å…ôÀ©lˆÖ³¿v²#¢›™¼gòºæ0/Æâköê[nùúõ²,긭Ž)%:‰1Št9cãÖbºrἚû2؆=Jè_ÜQæÜœÂkž¦“_ÓÕlbFtpDë3ñõ"ñj‘H—ù¤›Ò8¦ì˜¸ë%¢»¼K²WSöj«³ÝÉb棬®W‡Ò5¡\-ê9±TŇÍYQQªøuâE¦%KâÕŒ:ì—=šlÓä’Š²Íª¡ôºmº‘Eë¯ä@¥:”Úkt-_[Š*ó¥*~“^¥”Þ›u÷•W >PÒà ]ÙÇQ—½â2œSï õ/¨Wâ@oq0U^xç›Ò¸^e³ÛìÒˆ‰ë|ì=•ƒ:÷¦ wÇnšÞ+QOUýÄÝGpã*¾èu‹»}¿NëG,õrÕWSêLøÀ~9é–X»Ï¸SõyÜÍÔ¹’.ÉñjÞùøB¯´W Ýg“¢u1¯(s>¾¯Æ¼nO¼ífq‡{⥠ìÕTÎnŸéJ' ü4¢IîÕ¥iL“=z'¦ëêØ.CŽ‹oÁ4U|ù¬ÜRg«ÊçnõŸÀj|¥öAÕgÆ܇hPbXÛï†Ò¯d”ºGåR>n¯é•«M´»¸T+ƒºqä×ÅXÿ <ç£P¾Æ, yC4)±æ´6æëA^»Ë¿i:Èö‰÷Wu=˜–¸§ŸvÜù¾8òëbÌ¿§ÃL®„Ùv` é¿]íÓŽù‘ï‹#¿.ÆüMbŸvÔ†|_ùu1æoû´£6äûâȯ‹1“اµ!ßG~]Œù›Ä>í¨ ù¾8òëbÌß$öiGmÈ÷Å‘_cþ&±O;jC¾/Žüºó7‰}ÚQò}qä×Ř¿IìÓŽÚï‹#¿.ÆüMbŸvÔ†|_ùu1æoû´£6äûâȯ‹1“اµ!ßG~]Œù›Ä>í¨ ù¾8òëbÌß$öiGmÈ÷Å‘_cþ&±O;jC¾/Žüºó7‰}ÚQò}qä×Ř¿IìÓŽÚï‹#¿.ÆüMbŸvÔ†|_ùu1æoû´£6äûâȯ‹1“اµ!ßG~]Œù›Ä>í¨ ù¾8òëbÌß$öiGmÈ÷Å‘_cþ&±O;jC¾/Žüºó7‰ö¹að2MuãÈ_‚wÔ/÷†þßÕ.Óõ6Ökí³h|½Çb[PCÝ8ò—àD~g,ó‚0Žõ7‰µ¶=oóT¿V_[0¾"NΑW #5gÛ†ŸcÝ8ò—àäy­}Ck<Ò»`[}^")õ²s²ÒMž—ðl‹Ï _ó-ÅçÈ«þ7ëÕÚì¼ô«ë#úF&^áçîë7¾8æ[Š÷ÎÍy0á9àj~*¶Åç…/Žù–b¹Cdìÿ¬°¾·‰µöÑ¥) ­V;6D-š¬ÆŽö©ê¸Ý~E,óùy¢¢­?3cc¬¿I¬Û2åÛŸ¦25UãĜõ6l;ó¹Ø{¤
+ˆÛ¯ˆ¹š¯ÕÍjšoÇÆMzƒukmÙþlÎCÑe^%Æ;Í/ÌQ ¨ãÈ÷áÏŒ.½½›õmx×Ú¬mÛtÀb/ÌQ„âö«âÿ›ä5Y¾ëú[ñ¦µ)-Î9;¹Ês¡ë’œèWYrõÐÙ 4m5Û¯Š©ó±ªJóíØØhû֦¤œæ´<c¯ˆT×Òzìظ  §xõo·_UxuåU©_åPç“~©¶_¿ˆ¸ãv†öxIfllt¶á]·åå.·_õ^ÓOÀ+·íSzucÇ+7fûq–tÙ¬~á•·Á#£Á´ŽG[
+ +K íêæêüþáPç³Û¯ˆ¹‚ùŽW‰[-XXâÕˆèÇî½Øv9v#ºlP@Ïn¿"f¯þ;^ñöùØØÔІ÷%^ñ àYü£B ¶=K¨÷÷_“èb¡Îg·_gI‡Ü}·ÏÇƦ‚6¼ë¶àñ*Û)߯‰mÏŽåV ¢X¨óÙíWÄêØþC ¾U4¿d´‰g8!ÌxçòOxÆWÄ ÷*5ÀB~UM­sµ9^©~¶;9©JóçrÞÜýÌÄ ¨ãvûqBÝ|‡F=¦†6¼£6þœÕñCkĶó>ÉÅ3ˆÛ¯Šeÿ“¢ùjY>»6­M)•~„mÓZåMßÆÏÚ+ÛCÏWê`ÁÆ4ä•þHlýö\c-X°Þè }í>§%&ЯŠ”"·_c~‹[`‘• ÛÂÚò }m\/Xï–Ä-ã+â> ‹mâ,è¶|"Z¥k¹m;å<¨”ÏìQ¦€¸ýŠ89G^ñ8œK¿ìž‡œc¿2§øþª€®7Uù–Äwä¹0¿ÍÇ+¾û‹<CªÔ¯Ð+ŒŸ¡WòÔ€ca¬_}" ¾˜Ï9é-~‹^ VŒŸ©W£sä?”ÍñBýÞæ¯Ô/¹;- öÞn¿"ÎþN¥ïUïÁúìRªjÝ–9;¥.34NºãvlûYE¿æÚ~à|VJ[Õ¹¥I¿oÜï»Ñ+‹5ÿ¬½JhÝÇËÅŽ<á²]¥ðê®VàR¿úþ½º¿Uš+Ç¡Ó¼oÆ›®þ5VÂœãz•ûjWÄíWÄÉ{ü=ô{œFóU¿-§Wu4ú¢µ}8Ñ*°m®8<žœáyð#S®›»•Ú'Íú6¼»Þˆ;ýJIý½²Vèú“î${Žõ[RC ZÎí°Þ¸²¾G¯°~™Ž™EWÝÚ›_6Ÿ£êóýr¿BuèÆ»ý²N ~Õ¥dža›J¯ªÚŽm9+¯nrâ8xUzÆÝ’Ï*º”ñ£zÅ°Û*®]«dZ~U×aü;â-z'Ú6À²my}òÚµÊ˯
+žW¯åøÅ[oU1m營øN¤J¨áWÅdÆë`~>¡Ùž2Nt}Y% ­×m‘kçÍÒyîåî¸J’æs³ø‰ÂE1ËÆ›oôw¦›¹²g/ó+c‹9•[ÿ×1ý¬eÝÊ|Ž[$szös•'¢Ó/ +ì’nÛTæ2ÄÌ×åI?Ëþ<a`Ú>ÒgïÌ×îˆ}/¶òê æHÙ+µ¢e/Z{BïÆj^ŒÆÇ‹}uq­ãSâgËÿ¼Ìå”5ºÌ@Çù1±kÓx¯ÃSiœ~“ç/âB-õ+µ¢e/º-ÉúÁk5JcùØáBÿP=½ZÇùÚvœñC˜u‘'îgê«?ÏFÝüpcòSÙ+›ßÆ¥¾¾õ6(¸MEk½Í`W:‚ÆÄó‰fåkŒ#ùzÉÄÙ«+ü]¦iÉa÷`öìKzûlÔË@lò]_D/¢w»ßD7,?1Þh¾Å¦†6¼kmj=«-¸³eÉ.§ãSŠ;|«ƒ‰ö²Ãž‚:Î^-"çÞΗ ¯%¿æ'çÈ+Õh·-}^ã\åmضM‰ÿÊÊqáÕzöªóÔéW/·Öw?qó ²¨Xòk¯ð;ê4îªß™O£ ïZ«’â´…ÿ¦Lš8×¹WEÛ¦4§NÒ1-xC?åŽ!‡/ùqwƒ\¯"Æ©ä_R?Ÿ)ò{/M mx_¢u¤ö‰±Uˆmç+¢mùû º3=¢KŒt>äK¾‰óYðÆô•
+‘ï‹#¿.ÆüK°LX•‡væòð¤­ÒLˆ¶ošòd•iº)³T¸Œyy˜=Lï/IW½Ú§·B¾/ŽüºóWcžb~•­ò‹mò= Yd'Ñ ï¥ÎöˆWóË<£š-e2OKT3=«3V­õiÇmï‹#¿.ÆüÕøÌõzNüXõm/ŠItBççÉÄ:én<KIyECöjd&—ˆ¦U ï궬²Ë·ê…ªí]þw‰ŸÒš:2/.˾¥Á+ói§$ì“üÏ¢.Ý`¯zÜÁú‡tŸd^¡”*MËêôµ·sùymÅkU½.ÿ»Ä±~ëÔßå^%4™Ò7ÎDWV–¬Ñ˜ÊæÔ£ËÊ«‘xõcûX¸*MN¥E_[Jd.¿p)_ªª×å—8Öï`z2S¢äv†]>4&—”\¢i[&mÞˆ×8.e":Ì­ Uš«âÅ×ÜÄå7…CyÅ6 yO[ÉE*JÒ‹~N{Ä;(Ìr¯~”ïwãœt½©é#[â97Ê‹¤Ç{á!ñQêŸ'gÔ;ÃÜ«Í+~îÏ„{ËUþß•þ´G‘ž×›;Á«â©Ø«-Ù?nò±]n¼:¤ÎžšdΤ‹Ó¯”#â•ü%žBÆ“roh—ò·¤÷Š.±W‘į°W 5¾º~Äoª\@¯¶s¯xˆ9
+ä
+è—*Ó?
+iÿÖQ©ª—U6ïWܺÇšvœR©:*6~¿ªX«§Ñ1@R/„N"­½E_¼š&ô± ¤ëk]{~Yi¯m`†
+!•&·M_$g-Ü+]• \²H2U:'ܲÁ æB¾·ô¬)RšœÙöxwOÂZÖ[1Òsî7‘3ïAj¡VcµRE©àQËÖ%G›8ˆÅ†Öì¾ö*8šÜãñË\¹¬
+¦Ä7(Lå2í¹þ@A¥WÆÕ}§Ûè†ô\Lèšœ…¯+¶êÈol¶¨œ5ߣ“JgÚ¬¸>;wN<‹oäA;4¾_à›Ö‰l1sU©@\çÚרô†ô7ng§< ®>¦ƒ! .ßó® ð[a‘ÚàA@¿ÅW8»£ a¯º[H [Û. Äàà²s-rQêþQÄ´ÔY@µ‹$vzwM‘«f°NÒä’Qô…Ñ~ƒ|îꢠw5Hò›øùE³æóÏûÓ‡Û-åR.—â™-•u¾×î
+t£\ø‰ýi¸](F½QØîãb‡5z«‘§
+ñp¯^
+ÞŽ ¿Äʮ߃ÎçMOdåX0¦¸U§\Ö·8E°²ÄD±=óÆ_ì²Ç6r %ô¤TÆUùôN5/®éè,Iéââ,ï4JÙçºéCmš‘þüizÿ•>E‡Åi´ÈÑD;'—ãó÷7™Œ“ V|ÞÛÇo÷V> šýíÍ_E®“endstream
+endobj
+311 0 obj
+6046
+endobj
+312 0 obj<</Type/Page/Parent 287 0 R/Contents 313 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 61 0 R>>endobj
+313 0 obj<</Length 314 0 R/Filter/FlateDecode>>stream
+xW]oÓH}ï¯!­¤ÄOöe´@% , Zx™Ú“d6¶Ç;3N¿~ϽŽÇMK‚frç~sîÜþwŠ>þ„b‰ÁXÄÙÕ›ùÕõ»W"‘˜/ðÝxÑI矕ôâÎ )ÞX%×½œÿ Ó¡ÃÊ°ƒ!~66“iºƒ¥U±Ò%ŒÞÊÜeÚ‹Dz)œ^æ2ÎË<záWJdÒ®ÅƤ^.•(s¯SxÈÕVÄ+ieì•ÚU~ÊZ•ânA7)“¾èU9'½oØ&Ö…J„7À2V‡ $%Ejò¥(”Õ&Þt¦º¢t%^énx §b“']ò“ãÚµ — ´×&§4ÔWýÔÎ{˺C¯«ûlg2EA‚V™Zå”GˆØdY™ëX’K'RsÑŒý¡†äoQ@f|\´îPÔÛùU?èdú'¤¾¾dS`:šNƒ©ÈD8áÿêS*fD>>¾Â!ÐDï“­´
+ ¬Òútsû)OûnxƒïñøÄ÷™\™ˆúã`ÔÈå±}Ô<Â>áóö ØÃÿTëi{ìòО}Þ®dAätÅ\¦kê7HÁ}p ìÁ»‚ƒ€Ø( ²®
+šÞ€{?ÛåñʚܔN¼=¡Å=+¾oy…“k\%ÅuEû„ÒRIJÒ4È 1æ’µ3"Óƒö.sKp„cé‚ßô3ñ±Ëå•Gç mQR»²ÒyQX³ÑÄM{˜³áþEœšx-éSàÁø;w*OàBæI} ì#¡ïkÔ¿0 ö©Ô»Ý@§[ÍþHŽS–븕*ªàA-užÌ4겄º2[4'™q¾U;ÉEm厮%†i²Bhü] nt™ˆ)´†ÂÑob“Všaa ÞÐpü¨ó5ðνŷ?:/f7ß¾øñMlÅü —«Þ¬Pg/~¨.>êŒWÇð‰Z
+ÚFPS#ȱ‡í®7ƒ =óÒÅ»Ç ¡YµDXÜÍŒ0õdÕ·s^e
+endobj
+314 0 obj
+1588
+endobj
+315 0 obj<</Type/Page/Parent 287 0 R/Contents 316 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+316 0 obj<</Length 317 0 R/Filter/FlateDecode>>stream
+xVkoÛ6ýî_qÑ}ˆ’Ù²¤$ŽÓ®¶&.u»h‰¶¹Ê¤CR5‚mÿ}çR–m©E¤H#>νçÜŸ:1Eø‰étÀÿ²UçÏi§?:£8¦éœâ³ó0¦Áð4Ò4®äBº´ On¾Ì’óÁñôïÎpž»ý\|ë;÷ż~~›Íõ„ׯ§(Œ`t÷ëî=ì$lçâv<`… A“NN£p°=ì­üôð1+äÖaÏô’âS˜׈I^0“ñZ(©”ÒD µqìü^™ˆzÉ <ãÓ©2³¶:»ÆY’ sYˆ.¹¥ êî`«j ? ’Ùq3 y©2'µâû¥99Mi– kIº¦€ÒJÐRºlIé–>|Ú-SG€ÌƒÂ½ŠW°ðb–¶L‹â™”v[Ôô±ôÈ+fš0ilHŸµùš]ªfUV”¹ l™ªkÂt¶.­…YIká/ìkÞùéY`gÇ€¡§RXæÖ%S*/ï³. ­^˜tE)sdK öØšFk7;î’6´J¿²õÆ+œ?)s²l>õ1: .Ûù
+[o`õܪ´ò1
+·n×ÁžÒÚˆ£¢Àe[®„‡÷YO_—ZA[ËÇQÊ44ƒ&éFbÄ ¥j›¨<_g]ÈV.Ôõu@gƒ¸X—ú©5¼¹»ùo^ómð.)o%Ć`1õhŸÎ)êI÷G]ÖéßKPyðKò߬˥—¿Qÿ„&.UyjrÄr]º¾.þCÊÍ¥’ì’¥“~jøâ‘<ísýE¥¡¼†àD¢rhW5/BšgÊ;V#Žf¦•3ºxaŒÚ«rm gK¹zDj½È¾ãªÑ–=€ÇPñk
+øO÷OŸtBGœrÜ„fÁìøhþfÖ ÏÉ—ôÆp¥á¢F&ûtÏ…ÍŒ\;PEúÚ²jIøêù|†$Ú´A›ÉÐpSª]¥z\þ¦e^õEN|¿ûOã.!ÿÍó7¬žÞss¸ÄNûÜJÇJãƒ
+
+~Äó#ÒüבNÐ
+£Å·ûþ(­ŸiÑ™¦%xŠñƒdûh©&늵x_Jåò¨Ø ìL*5™R/ö8½‹Ä¿Û†¼v]â•ã¿kX~ßpáYÞÇsî¯Îÿû½endstream
+endobj
+317 0 obj
+1156
+endobj
+318 0 obj<</Type/Page/Parent 287 0 R/Contents 319 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+319 0 obj<</Length 320 0 R/Filter/FlateDecode>>stream
+xV]oÛ6}ϯ¸ËKÀvl×H“}<tq2h›,QÑuPÐe³‘H—¤âØß¹¤äØÊæ­C€À¶ÄûqιçòëјFøÓ« ½<£¬:ú99:½ÑÅpBIÁ¿¿¢$ï9ýDf%uÚ;>Íåã©÷›b|ܧ›Ïw³wô'>¼¿¹L’OñãìêíëOéÉ'ÉœÒxÌñ8˜œ §2YJŠÏšÇ½6Æþ©¥X—eéèÃû7¿‘_
+ÊÑÊš…åF:ýÂÓZh<14—x.é83Ú[S–Js
+Ú˜9ž[ÉL›˜ 5 ½!¥Wµ§´çêlIÂуÜÌ°9‰9’S ¤qx5'g8›_¦'´VeI¢(dæ9ƒåâ3é\·€ÛØ“£R=<ƒh!|Ú¿;=OOº8ÕŽÛ,…¾¶’Ö\±óÂú
+að¹zè²µÖ€jH[
+xxX‹
+¾ƒE0÷(
+Zšµ|¶ïŠl)¬È°{°à`ø¹Ш˜£nXV˜i•(›Ý2¯±'¬ >¤M'H'ÿ6R?Äy*g^šìÔ®…òà6rµSOf*ÎÞg‰BbÒ>"¿W;ä+e¥ë³†öŒš’¥ÜlW®€.>l—þÎÐd—¬D¶L3C¤ªJæ
+4aæ,ÞvWXÜfo‡Ì¤È´/S\Pútýùþ*¹~‹ïÿßý£9׭߬ÂdGh¿ýë¥{hëOŽØž±I[þ³ÆJD‰á{Ð:o ¡¸¯Ákàð€Ûv÷£wêk0znàkå—†w²vÎÄâ[ }¾
+òæÆ€”¸.d\¤
+È1\8Y ‚p/áá3ÌE‡Šq] <ã=&èÐμ„;ÅH÷1Òí¡…™`â¶v¶“ºpO†#]ì¬ÈC …³¬âÃ@=µ±SUs±ŒØEsq2r:Kî¶$³Æ½HÁìWþ4mh)
+endobj
+320 0 obj
+1339
+endobj
+321 0 obj<</Type/Page/Parent 287 0 R/Contents 322 0 R/Resources<</ProcSet[/PDF/Text]/Font<</Fa 10 0 R>>>>>>endobj
+322 0 obj<</Length 323 0 R/Filter/FlateDecode>>stream
+x5±Â0C÷û
+0´ä(‚Ε
+endobj
+323 0 obj
+138
+endobj
+324 0 obj<</Type/Page/Parent 287 0 R/Contents 325 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+325 0 obj<</Length 326 0 R/Filter/FlateDecode>>stream
+x–KoÚ@Çï|Š9 ¯Í³©zhÚT‘Z%m|è)ZÖkØÊxÝÝuPúé;³k Y‘
+£<
+}ó5ëÅQŒçdÿòë°„á²qM`:×$ƈØχ7Œ“8ŽÒÖ˜MFxzÖþ.íŽ
+KF5‡-¢(ùŠ |O‡ÊÏè ­Þ#LSŒÕ•Ð¿AH\STpÞîñcyÊõ— :BùƒÐÊŸ…šãAÏûâQÝVuã:"ÍÓ(î*“·=4£ þ.‹G}Št׸îLÓ#uTÉÛžeÓ„z™„x{šö§ÙïË;5NºO¼·= •¶Nìž™¿ Íó’E¿’ÛÃó'œÅwÓ¤ûÈ{Û7/ox{1èwJwÝù7ÂhJKìkÈÏÞ’RÄendstream
+endobj
+326 0 obj
+813
+endobj
+327 0 obj<</Type/Page/Parent 287 0 R/Contents 328 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+328 0 obj<</Length 329 0 R/Filter/FlateDecode>>stream
+x¥˜QoÛ6Çßý)ø˜¶*’")>ÖIZäaHW»@1KNµÚ–'ÉÈúíww”cËç†F(ýIþx÷§tÔß)Rø'…¶øµÌ—“÷3!¥X®…TY’ ›kø]–7«?›n_Uå»å_—'zÂÕÇC¿?ôâ©8”âûÍ®zõ®¯Úu±ª¾¿Céýr’&)Ìóúóå -qhçà—ÆRi¢D[‰Åb•¦‰ÄÒf‰'5{!5täTX¥‡`·Í®o›xÜ÷u³ëå´´TÌ”M2Ô-T"ܴúa¥«õ¦xw¹ÛjûTµbîD=iÝmÑWS±;Ðíf-Ê¢/ÄSÝwS±/Úºÿ5]ßì‡KÅ®?Š¶|)`½ëMór1Á ,,†È@*˜²ë‹]߉uÓŠb³0 Nßöû¦í«%ëúù
+Ð5ƒÛKBâ8‰ÎÁf˜()GA&‹E+¾³3ÇYdü<—:; 4aôñµÈHÅ·pFâ(öù`a9¶ 49,Ú+¾sƒ8Î/à\x/œGš,'ùÞÕ$Ž³7xWY Éb1’ï^Mâ8‹vƒ{혚,ÏyæNÒ$Ž³ÀÛ‚žÆsy‘$l³h¤ä»W“8J£¼;º7‡FB›C£¼äû7ˆã4Îý›i´Y4.å;X‘8Ncìààì"6Øfј”ïaEâ8¶ƒ‡ý…‰±Í¢Ñ)ßÅŠÄqi.ö—6Æ ,‰µ+sW)Gy¤·ƒu~aºÀá‘>å;9ˆã<Ë?|_w‘.ã¦Ì„Iëùfâ8Ô‰TûϽp³³S¦Ÿe†…'3cAÒX¸†ŠÂ\ZHš)ÓDRy¾©ƒ8Ž5;=šï¿-?œ¿>ïÿcÛ®Ø<͈զYý¼RaH(ÑÙÞâ(–7ÁÚ@5ÿT9VÛÌô‘6Êäð¨ É»]<üq5:R¼ö®DËbÁÍä"m”ËdÁå·‹QÁlNçÎ+(VÜLÒFQ¨¥Ùó
+endobj
+329 0 obj
+1059
+endobj
+330 0 obj<</Type/Page/Parent 287 0 R/Contents 331 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+331 0 obj<</Length 332 0 R/Filter/FlateDecode>>stream
+x•XßsÚF~÷_±“‡glYâ— y2ØN:õÈ´Ìxé„/:Ew2¥}wïN 0:É0H¬ö¾ýv¿Ý•\àã¿
+¡×ÄÜ P~ˆ%u&(k|T§×´UŽ°Fw;L}SdƒÃ%2¥9‹A&Àßxv
+cØ=¿ö;Æø8ÆnÓÖþ×oÏÃÇz2¿²lQæXgq5w7Ï.Af2¥!J¥â§Pvºçk¢cŒ£l7&GÃÛ˜2b)¤"ãp ±„L"¼WÄnðùp¸jý W/>ǹ,NÖ)rS-ÒãOûKÇ[ô[k×_Bèø}*ÎÇÑàñ÷:ÃTFÃw9‡Hfº)ÈRçåIh~딨1>Jl#´øéþÏ—ñt2œN€0^טÚûzŧSÖ++âCz’T®ª@È´æ`Ö ¬¨2'â9–y,M!O™Nd±T'ÛW»Û¯jiËïv*˜o8l··Æ²áC;èÛp§¯Ü„yóÐuƒ©½DIÊ};®°äË9/L` e
+z%AæZHúþÊ0¬WY¦1´bksÜtÁøjÿ€á¦vëþY¿3¬újÍ΄ŒMc%Òt]ž©ù7`Ö², /ä¢`KTWFsÉ%YpøhTð‘T@—”LÌü;4h
+o0-¢ª$ˆ¤¨2ß;Y‰EÆRud_¤AŽ/êRdš ‹8ăń½NdJd 7dך+Ïùov­Ú1d˜³2ÄÄ)J³L+ìI6K›Ü ·ßL­1öŽÿA¿ëûöÁji\ב‡*¸TX›X Ó¡n°»D§ ÕJ±í½•sï¹&Rv-kŠˆ^äÁglµ)&Üæ+ãÿ`‚0;Xp›ÈH2˜#¼Æÿ„çy4ùí/HÊÌX)%“cNë~o:®äOÅôŽ3¯k"BcÅ¿Ên0Çô2k ,[Ûå»[ ½NE±ÀÝ@§ëÏ€…º§dߢšV¸}º»¢#k¬Æ¶ÔžFSÔ Çª&ÇFŠÇF)g…]„¥fÃçH^ðL»©ðÔ§î0reä<kPW¸vnÎt„êÃ8"†­ pÐÔð*ˆ+÷éú
+P¥¢ ù.œ-^’0j”Îц‡¤K©sl4ôÛ ·Ã#úÃ~#PÓXmXª#Ãï+¬U'7+2—æþû4O¸Ö° kŒÂ²y­$Q+Ši½vè\Ü> {î&^j⶙˜ç<‹É·+J/Ý°4{0ÚW•q·©Ð½ ä]-ÂÚÞ©-õ÷×ãurlvÕö¬^.­–G±ÌS¾ÄÄ™—zòMÄGÔp´ ¼ï?Õ¾Í2m8o ;,Ò%öÒmo,-ù¡f¹OT‚-À6k´ì”­ œ*ùÐ#6”ƒl» uLœ4DH\ip§ÛP}Ò½p ,…4ÔÖ±(]”g±¿¶|FÊ•ªòYfØÓµ©5Ó¶E¶íÙ8/×¹ÀÕ0]“Æ>ƽ&2ÅM…ž‰$årÓ' g-Ùº¥ðUvÓ,…2*jâÆYWÔæ '@úô¢”à»íuÓ¼1Ù ÁQPퟫ“ñ 96£`˜‹›O;¿Á'øâšzT®Ù]„æ±MÝóªâ°^àÓÍŽ› -8–».f—–_Ür3»|ë湞Òíy¾ÅÓV†'vØ?۽à õ/% …@Ùé4Údjbº®Éÿuà·ÑÏuØôÉÍÐmÁ#»^ÊvH.0¿-ºøãâ?bÞ‹Ûendstream
+endobj
+332 0 obj
+1555
+endobj
+333 0 obj<</Type/Page/Parent 287 0 R/Contents 334 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+334 0 obj<</Length 335 0 R/Filter/FlateDecode>>stream
+x•VÛnã6}ÏWÌÓ lÙ²_ìCÖoäÖØÁE€‚–(›]ITE*©‹E¿½g(Éñ%m²‰Dâp8gæÌþyäS¿>õü ’£Oó£ö´Cc¯Kóˆß FCš‡öÉñü£µ|Ÿé„fÒ’]IZˆ"¤\XiÈjòÇÝNÇó¼=ëöÎóÎCi•É¤ tf•NM“>9OÇg‡ÆúÆ;;\¤bK‡!—TO2'‘†„p(Öˆ)Ñ¡ü!,Uô^ð{ÅbIß?Òccru;9¿¢ï4¹¿8ÿ¼è ë,§ò™*ïéÜEéÜþPx6
+rÈl³tË d7ç}çäº^ÕÁ…Qéò0-›<¦Å£WY•b?ƒ8ÙXÁ‰Èd "Å=¶–DS°é/ÌJqH:@ÒH%‰ š1^»lêÂîü,”å™DXÍ
+K?z7R©2+¤0 Ù*}e½lX8$(¡ÀW#é9gÊÅ뤀Oâcö(}rQªã_Nf^#Œ¸@\ÄÓEE27uõkf^kƒ­•‰¡PSªñXdŽ6¡â-L¦oNF 5FÓÌa6âxnÿàðÿ„‰¤'ò0‰øK%Eâ**Vví‚ó‡]o¸Õ:NiN©E“M†\× YþtÓvC´\Ë–ä®÷°‘ïŸzcH68ÿYš WN/yåb~Ôñ:óÍŸû/äw}oD½žï hˆêvà@g¯}]ûÞwºeíæBÝÚ~·Ï^_) ¥ŽpC'ˆíZ|“†¦ú¹&#Uôc[&Uq.j:Ébi嘺ã8L½âø_L¥q‰éŘJ$ÝÑÇçûóË›m$_™ÅEjULbmWÜ+aÀ™îá°¹HM¢¬•á[á8…ï ßÿwø§”—…˜^=Ì~Þ0uít@þª•X÷@$\;f~©0o·úïâŒ_ÒžŽ+îã62b¶fŸ“*Že²¹XägêoÇ—)"ÕJðƪŠ~s/i2ÐCKÔ“’)>ºžPUßW¨«“ Nòè’&EèUR@h 0‚Ðé6vqlÑx¡l"Ì7&ÈÆ! Y©úÈè–oŽ¨öòDØo~â|ï^ÁZh77åö¯>Ò?“ÙåogÔ>¡k]×mûöJ'»7°}O¸¨Lf£3Â<ͤ›£²'·ö¿”içfPêNä@ÔJœ„I-[Uºªk´—¾ ¸'"-0ãÖ›qž•ž«1Îãzc×® @èÑÃÍå¯ØPŽôœ¯sfÙõL@#§MÒ!î@ì
+¬¨¼Á-e*«KÍ2–T‹@…0 ø1&lX^W‚˜e´â™é´¿=—ýNßói0t·i泋í.×Ë\$ ÓäKÁ÷–¿»Û¿ÍÜÙX™•ãŒ´J?­a×i«ßç—}Ÿ›Þ½À|°¹Ž±ÙÝyÃà—£Ê:{endstream
+endobj
+335 0 obj
+1269
+endobj
+336 0 obj<</Type/Page/Parent 287 0 R/Contents 337 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R/Fc 11 0 R>>>>>>endobj
+337 0 obj<</Length 338 0 R/Filter/FlateDecode>>stream
+xÕV]oÛ8|÷¯Ø§ƒSÄŠ%[–Ò¢©íæ ´¶k)èá` `$ÊQA‘*)70PÜo¿%)ù+nš
+ß5#ÔÓ6”¶ëH•¯8aÀrN•“Ì$µ½KNÇŸo1Ö:DÑ!kÿÛŸÄÎUEx¥@“Ò ¦ 8lÄZ‚Ú¨Šº6ß">ê÷
+
+ZÜÑGÛÜ2}tfi7BUpªÍy¹® A)“¤B¡ „“²v·1{¦¨Ì±©Tæ8
+(D+Ê©$fnôIXËå9cºB–¯Ö(&=¶þV„?誆=VmB¸à9Òr äq¨$ÇA £Ÿºý9ÞkGˆÍî¢Eh¨õ¯«ë–ëá£áÕ¦ôÇGÐÕb³ØTp}ço(¸#ª™›mÔoÆq«ëtñö²ýX\ƒë¹ØPâÎû~x]L‰¤E§bƒK¬jbÝÐÇe»`s jÌËõôý'èc0v1‰&׺¼IoúÛ‘Ãç“i¼8üÝDósµ·•øxdž»Â_Ÿn&1XCR?äûNÏêõðŽò$ kí‚…ÑwsÉš ¯¦³éI [qÔJ^¶)SP˳ŸôÙó1û3‰7±'‰'µ,ÜnÓža9²3—b%IQh»»^ç)-°ù,ÂCdVâ™#)2kXíØ,: jKOûvÐÇ­ ­Ä\¿ø©õ/ªÆHendstream
+endobj
+338 0 obj
+967
+endobj
+339 0 obj<</Type/Page/Parent 287 0 R/Contents 340 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+340 0 obj<</Length 341 0 R/Filter/FlateDecode>>stream
+xµW]oÚH}çWÜ}Ù%Rp16vU­BRTlìjó€v5ØcðÖx¨?JªþöÞ;ccbá@V‰
+Q×ClÀéä$Â3`ºƒžÖ¾Œ
+®ÓíwT­Lg÷ûÃk8wA"è‡Y²~%Áeæû¨?E% jµ¡¥çÔògÛD _²à'Û•Õ y6HooV–
+V[+£•Õ5J±ãѳ3š¾ÞZQ[/)<îŸEnˆè\Iue\(\Ï}gPjuèœÒ‚+¢4G:EÊø‡ª XäÑžŽˆ÷8ÙE|ÿ“^½aa]}Mi¨¤®´:ù‹üNZ˜
+®%Ú·å57r*LÌÁ+Ë0¬¢² i$rkoà7{Vamçñ«àzüV§´¶o+< x”(Ç0ˆ8ˆH}“‡œ!ÚìZ—››
+®Œiv”`î'Ÿìj·˜e)5‡%§B•ËÏ’hX—»š)ƒë±u¤íÎGÓ»q¥ÖžxºßrØb¥6ÕÄX
+I±Â™‡>QÑ@ÙèÎÑÛ&ÿºÐ0L\«£ßW­Ø™ÙÎlN+ˉåÁÁFô`gö |4¶%s?¯b‘ác!©?ƒÔ@§½¸«àd¿»äg6FîÝõ Q;d‘ˆ—…0¦“!*GhÒ"j§ˆ©ç–ˆ”9÷45¾,Q´Ô>é Í]
+Š8è!‹¶±py’Ô«ÑKd‹`µþ‚9GbÑÙ‘TüFÁ)ºF¡`RŠçyŠóB¥ÁP:”ÌÕox>óøÿ’§JƉÍjŽ®©¿V“9FPc‹G³È¥Úa&Ë0.ˆü™ÿú¾×d3M+¿è˜
+lþ7Kt£¼|é\®àv¦qð€)ÿÊ¥í “«+‡R]<Pt'Ⱥ–¬R†*ÓœäFïŠÍID=c<ÎîFTÕe¾D;Áé[A Ï]G.Q\zŸ`BYÂ;:¸¯¤Rè°ä dÆ
+±EJw\i ÒÀ:G_ •)ù ý‹Ú+®ŒmSÓÁÂC„¼…Ù*|‹UÌ62‡,@ó ËŸÏìñ3ÌðöȤµØû$å ½¥ËyZ½ŽìºE«˜ú ¸wN¹òLÕ=½Ã³Í_‘Ú·endstream
+endobj
+341 0 obj
+1294
+endobj
+342 0 obj<</Type/Page/Parent 287 0 R/Contents 343 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+343 0 obj<</Length 344 0 R/Filter/FlateDecode>>stream
+x•XmoâH þÞ_áoK¥Â’Üé>´l[¡kiX©+!†d€\C†IŠ*í?Û“ðV(YUBx<Ÿ±=ûóÂ&þ9¸àµ!\^ÜŒ/¾ÞuÁñ.Œgø®ÝqékT맫<ƒ§U«Ô\ŽÿC;ÇZÕÝvÃ'«ñBBÌ–KIK¹œJ Ö¾]Ø×ÂãY"æû^jª4Ó*1 Ò÷ÂËJ«P§sÈ"ƒØ@¤R ™‚p!´3© hÊøMF R4“°R:k÷&Ôm(Qí!~Åeøò–ð–Y,“èŠÌâT$ð&’\‚É”Æ}âô£›£!!^ÚsgëØHx‚šñ$'&OÊÊh¿ÝèÀ–K1M$P‡Rž‰430Sš— Â#ókCjôÖ€Üà'\¹˜Œ§Õèâ©âI}“&Ô1ïNonÇÍF³aó1¼ÇuÐS«ë5šÐ
+¸Mô©%ŒŽômåÃÖšÓªLÇõÉ+šw8±Ͻ¿ ïÀØnS}%tœ½ãAËðõÆÀeŸÕ0²ñŒ²V§Ñfd÷ƒçëá>´þ<Å €šÔZi®†Ïøk¹è¯*l|›×±…†À‡´=
+ýú{È<½UEÆƧ‘9¢QŒÆÃþó>k£ S­„†Åp–2‡ºNU`l|X
+òÙø4º²c#´þ`¼OæH¦õïñ¬2Å_G°îÜxtWÊLâ‰ÂëvÊ ö<ŒçÓom[kìð¶{z¯ì뽃æù(V0x $°o>išBÅ`Oëµ½MC?„Tœúy<œèUñ°ñi<>‘LEÞöÏ™(ê ‰"ûæ3Š8›«BbãÓ\V|é{ï¡÷R¾ZI
+”0ˆ ËÚþ8—VœÐU²ñi€M{¼~¹¹=àì6\(À§$ÿ¬øLbÖˆ5e™ù n7(“+X¶2ˆ¿‘byc dÕ\¨a×/¤×HfIW«Ÿ­œ9'¡¨ÌBåIÒê Ó®"§ÜÞÑx!Þda•w,
+ÔêZ·é“ç×»LGq;¸±KñV›\²VÝé3c¸Z¾É*5Ωz9]¶[õK¸*jWŒ6zì3«­2Ú³Ø?7Ý(•ËÜËTj‘$ï€ìÒ’X×q’€‘ vÕÞŽ„€·ß‰]‹ÕZ±¬ŠÓf¹KLk §ý*æ†" PCýa£iB—t׌¸:*kÖüåTQŽ ¿þBAÃÃ/èsØ“Ë?÷騳ƒbŽÃ ²¾;ÔÐô%À¨¥\Ó,‰t.µÊM1Ä`ÆáÓL&8ÁQò©cœ"£N-
+â#Ú™£\ ÃKÈ. î” t‰{Í Ä3H‘/ߘþ8E…a®qœjÀx C‘ÂTBnä,OìÌ$ W"áú™‹„æ
+dTìˆ
+j™§q(xÊl#¯W0ŹëinÓ‚HHUFÎ#v½¢)—$XÂ`ús}l˳§œŽ¦&¢E_¦¬Ü"*¤ #ø²DI/£/´?A·õ„I!ÅP^˜• ‰æÆ2 èÏ>$ç‰ó<ˆß¦ ν߶>1{š8ª0Éä’(0‹Ab‰hÀ)}®ÑTâ|Š½Ï{Wô­ã m/ÀÃò„Ñi‘iëoØÊ'5'6R)ì*!êðÀ;ASL† ÅAˆb.vš>Ž‡íVË^¾#›žÏ;)g¸Ïãç
+endobj
+344 0 obj
+1499
+endobj
+345 0 obj<</Type/Page/Parent 287 0 R/Contents 346 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+346 0 obj<</Length 347 0 R/Filter/FlateDecode>>stream
+xX]OÛH}çWܧU×ãÏx+ZC*$cX“J­„„{B½õGÖž!UûÛ÷Λˆ±Y $gfÎ=sÎÜ1ÿ10ñ‹í©ï´<ú²:ú¸ €1X­ñoá Xe³k!e^ÝÃu½–¼°,êëJ6uq¼úG9O£æ–g84ªG¯:ÕhÈ[¿+DÛVM*
+Ðsxݳóï—ñþ´³0Ëå+¯²×ÀÏñ@Ŧ•¼’íŸúÃRU£sËQ¯³Y½‘9âŒô6_ü~ŸÀ qƒß€—Kú³ßÚ_`NÓt:¬jÈòV• íAIÚ¼ÜPòöªQ·îò÷1ûãþý_ÔP{ÔËB5 —ü攊TŸz¿Þôo§?yÃS)š” 2±Î+ÜƼ:´‡émšî‹2ÃQ ÄqmÚäw8òN 3 BÛÙz L˜ÛÌðÕ\nåf+áRoÄþtë¶zm¡ô¶V{¶?d¥(ïDCfäyÕB­Xç–¥ÜØï9Dù/Auå•¢PÖHû<Ö[Hy­(D*aÓÔ©h[,¥n áj9ä¥+ÉfJÎn ª’9®á>£MžXÀ\EIÛÖ8‘JDÇ.ˆ°.Ãíò1g&lÎ|mÓ~°1æFµ;%™I9õÉÙêÈ4L üÓä+0‹aÂÛ3lp™áe✸·×‡À¾Ëj0 ®³CÓÉÑŸ „³Z– nâÕåõJQ ˆÛUÝÊN»~ nfU-QW 'JÉîí›ã1îÌÃU¦r'ðîcS¥Gá·pŸñß
+[xÚ©aò7à‰Ù¹m(øóg¥¤x‰Êù=õ B¬ûlÄ0Ìó{Ãì8î®ôJݨÅkð@E>0×Ö† “· &c23ÇŸn 4 òÈ0arÐ0œ‚œÐÒQet׫ Ý6¨ä »t=aS·ù„³—áu¯ëð´%ð ¶AЛÅ:dû—>]VÛ4.y`O?æ;(¸èC.LìƒLÝýĽ›):qòm€°LàÚ®«Ï_Þ“@--³1Å‹Ý}x(Z„djÚøè[ÉšÀ‰Ò0‘apú¸äÝ3$æ[tw¿Æ%^ÀUSß7¼,U¾nóŒŽ]À«þùw|^ ×ÿ1xl¥(IÁ¹žeÞMÃÊ6^…<ý¼rNÏYÏõ°]ÿuôºÌendstream
+endobj
+347 0 obj
+1265
+endobj
+348 0 obj<</Type/Page/Parent 287 0 R/Contents 349 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+349 0 obj<</Length 350 0 R/Filter/FlateDecode>>stream
+xÍWMoã6½çWL/E
+¬Ñ’,«Åjïjl6ÞÆBÚž´DÇlôUR®k èoï )ÛqàåVP iÈy3|3óøçÿDð‡•Wãôê& €1HÀ;‚áÈÇgš_§?ÙéW!s‡¸
+ß|ß
+©EVW¹î"Ó6$Zἄ¾„Þgt_ôÆø4zuØýCìÿnx•Sþ![rÅ3< m ºá™¸‘1׳‚=Ÿ`cl!î­w ã¡eÊxöáî÷C”_¸~†E­"Ä™V–*!r‘wYÏ.A c·7ÙÜ;ßsÆü"â.XãÓP£!ò
+¹0žy‡@ïë"í*ò¶íÊŸ-Adz£…ž£g¬¦
+9oÌyöL"Å ãõRT@®iYe4¿ò¯KYñBCV¯Šªº…g!X5˜Švi¶ÓBI^ºU‚—ßÙ¸÷lÛqgǶ¾¾Ä329Î0ÌÃÿ’cß¿‡/’ìWJü[k¥¶ÔH7‘¿3­qµ­œ¹l‰?¯‹íDéSäSU+‘»»s2b}*ßAUj„礮ZU0ÙiLk¼­Û ¨i?î
+=û–e‡ö×{µŠdU¨ Qs·\VÄ-ëj'gQ‘-deî (Ê5¬Vþ'â"# AÙ[
+⬠ˆS·¼Â ``äòEé˜m°)‘´ µlS¥)j*"ì[‰Ió—í›\JɆrð*ÛVEAÂÓ‰l¬a×çœp„ItXd[Ñ"1Fƒ«»MéLIÓü̼út_>‹ ½9zOŠè¶ƒó
+g Mþ³"¯T$‡ðÁâ>ÏûŒÜ[c4îÞøà’èß܆Çãí}jšœÁb¢º¥^¢V™Ö­y?IîœÉù°{aß°Œmß°¬ñ±°øöîëÑñGƒuf;º'$vÀ'ø´’¹0DÂvûL¡¸s³nEiÄÃÌ.N·ÍÔŽÇ©9bc`öFöôYÜåâ—«ÿ
+endobj
+350 0 obj
+1244
+endobj
+351 0 obj<</Type/Page/Parent 287 0 R/Contents 352 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F5 6 0 R/F6 7 0 R/F7 8 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 63 0 R>>endobj
+352 0 obj<</Length 353 0 R/Filter/FlateDecode>>stream
+x•XÛRÛH}ç+úÑTaÅòö
+Íõõ Þ~›²Æ9ë·
+s¿×Ê%„ZV"(¦Ú°j—#ÂYhÀˆ5Ø’‚£Áy‘×m@Ål+‰d‡¡mBSzz5ð±ÁjÇH%4nTÓ]=Øah„ªbî"Ol*ŠêpŽÄzÍíGs’Àw’š [R|îH<¦ ÍíX•àØKíDWQ$J‰(Ä‹P¡x‚æ[Ùº*ìUgèp?2™šÇS+£’x@z%Æ:9Nû—LôÙ}¶*°Ù9à½.eŽ{Ä#JyÄŵ%-m„á„i]?£áÅgHú«µvü<…:øŽ|ðÞ€þŸÅF…Ä’h€wÛSÛA\hsVžJÏHÇè²[¾¶r%ñƒN:oti’?Q/¼ÐQ" €5Õ(t®¼)ïor­
+endobj
+353 0 obj
+1655
+endobj
+354 0 obj<</Type/Page/Parent 287 0 R/Contents 355 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+355 0 obj<</Length 356 0 R/Filter/FlateDecode>>stream
+xTÁN1½ç+Fœ‚d“%Ê¡¢@%¤¢ªÒª\¸8¶—¸ìÚ‹í Íß÷Í:KJ¥&R´{fÞ¼÷f^ÊðÐÙ”ò9Éz𥌿^Ðä‚Š’&³ùè”æg³Ñ”
+5¼^Š&jOù1Ý¿¹½§kW×­5RDãl8,~!ö”&Ž=IÁ'ùô9],M ¹I!ÝJû@q©i!‚‘\Iʈªm(êJ7Kg5Ý;ÕV":?¾ÑuÿLîúã!ɽú#¡pžàÞþuSé@Âkj¼[¥•Î'ô\]Djƒî`(]
+…(¬^ÑÁUqÐUÀ;»ô7³Ñ9wˆR9ÔðóÜ¡NJüyŸ\›2¸ØáNx”^ l†Moe<8 %¢ c¦ôú¥ÕVšþª–@ì… ¥ö1•„¿…•{ê‚ß1QûL¡•KŒrK04)•¦â'úµVK–sDW[.¶Ix\CÑþü®p„Š›7ÀB™ÕOB3Žp‰Æ¤`=à> ÆU¦BCÉß&®û³„
+endobj
+356 0 obj
+763
+endobj
+357 0 obj<</Type/Page/Parent 287 0 R/Contents 358 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/Fa 10 0 R>>>>>>endobj
+358 0 obj<</Length 359 0 R/Filter/FlateDecode>>stream
+x…VksÚFýί¸Ã‡Û¼Ž“NêÎPŒS&¥FS7cy<BZ™M$-]­JIÝþöž+ÉØNŠ#v÷ÜǹçÞå†E}üY4<å·7~v½‹>ýÐòÚéÛ7ä­0 3Rk‘¸­f/öŒÙ†V³MöÝÕùõ=àançSñx>™>¹‡ïÏ>u,+7â'&ra«Mw‹‰s1kS¿~¨‚èѽ0dV‚üLk‘a¤JR:êUN=ctaÿUyìÿ¬§°®½ Éd™6˜H…¯’€ŒŒ…ÊLÝKiµëßùaäÝ¿ÎÈmgöx4Cîã«Éè¼îõ í`¯Îè_·5æö¸Éø»ü˜àsº˜¾ÿ¶U±b´N•é'‡¾óÛåt~K¨_ÿ{‡œéå䇬ک
+˨3Æõ(]Ô2><ÕÁ/àu›jé]œ‹"¤DÖœvOX!sñ—¡­Ê(EP$Rã-#™®ÈWqœ%Ò÷Šòo¤Yåq\Úç“Ë.9i‰Ó´ñ¶ veJx/·: drÏ€Ç|†,ñ Õ9ÍܶÇUg I€½(Uø©MJiìiS즹a„_°±ô² ÜÓ‚²¾ºt½IÍÛÎ:Ç¡%À#Q_AÛ¾‰¶ÄQ¬ÕFh¬ª„$ò‘QDZ¤k–å.ëb!Ô´?4»ìå93™N÷„:4M¤‘^$¿–ù—Ù1äY§£G9-¶÷BÙm˜êC97¤¾´ÑÔ»¯K/¨ë@Âí]¬»-¶î!ìÂÒ–B#&d
+>C‰:úïGÞò¹Aä¯<MË, …¾¼~}û®°ÄM[.×-”˜#€ÖFã<¿à}\Ž‘Ü¢L¾‰ÎyH–[#ÒÌèy/…&BTØA]ö3' ph´|‚V±ùAW!²ªÍ±Zâ¡Ò˜.€¸0K?ÒðññøØ=¬êì±wî
+3&C¸ßhiD1WÑ.®«1÷‡('¢ØóÍ òËDuÜÔ‚ä rú¸Ú@£Yt Ê4¥Èú-*NÌE´ù]G
+Væ³—â-Ê aÐjÛfÅrs[n«(.ŽrEvºýè÷˜RùU¨ÐmÖr‡÷ (<Xî!~⬞íU
+Y.Çõ.¼ò†:}Ûµètÿ&
+Zåèú¨Õ½öbpuOï3âVÅM<ýìµÐ¸¦°³Ø¦FÄ)§Û±ú'°Óy3èó½3ðâpha-_?Ýo
+endobj
+359 0 obj
+1103
+endobj
+360 0 obj<</Type/Page/Parent 287 0 R/Contents 361 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 4 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+361 0 obj<</Length 362 0 R/Filter/FlateDecode>>stream
+xVÛrâF}÷Wté%¸
+d„ñ-ybÁκ²´åd‹—AŒbI£Løûœž‘¸¨¼[©u­ ÓÓ—Ó§OÏ÷³€úøÐÍ€.¯)ÊÎ>…gw\ú
+×8»¾ðŸqgaD ÓÓlrÿDc•eø¢<ÿÁ!³ï ®ý!Û?©Ò8ےʪ(”6d6’¼QèQänS)M—JE‘HSÓJF¢*%Im6FhSÒ61›½ŽÚ§žK3îD¡Ed¤.}º?¾› ¶ÌÍée:˜SÉΓü•’Ü:_'iG*­²œÖ*MÕ–óÚña+hYÈ(Y'Ñ>QÀA¥hˆWIZšJç´ìŒç]êW¤"#Òå¹O£5R¥B«H–%g\Høoñ6IÓVL-‹tçªQ¹$µFyïR‹”Œü×TøÁ%¢—ËBæ1{W®´:€ï:†·;6
+'Ô£I/#šVÙJjgûAwCdé¯kG\?5ïìkŠá³´UÖ ÓÜðé1'ljI8MU]ƒ‹rƒJvªª9¹»h—¾ìx¡·<çˆGDP€µJÁ ?ã˜820èRa‰µ†ß.e¤
+nûýúç%\»A—µ )l\¼<7燱êÙ€õ`1ô‚€fmJ0ƒu¹û !~VÃtF“ÇÑ—p6½?IìÓ×Åß'_Àp<šÏïç'_gÓéý8ü軚%ƒºÎJT1^<ìáì¸Ï %Oª…ŸAÊÏ•|-œÝÿ¥ãçSó­È8>: Á» G¨
+ŸIIËUw–U„•dðêò(S±d^r„#úa¤WbŪò_ ±”Sq¥¹‚r¥3 W±a
+²äÙYÄý4“§Ÿ06ûÔ(YÓ$œ4-Öª(düÛ~4b…Œq
+8@£8)Án…¢2$£YZ%³ :ÜÝV´–2^‰èR¥
+tÃl¥ÌÙA«¡® Î \ƒ7©Û<[XïÒv#±êEç®Õôt{ÃN/îgI.ŒëÌ­Ï56GÍ•!ÑÊ+—[lÞ,Ó/¼Ä¹ãÃS‚ ŠÇÞ¼BÆvL½åR»þ癤é®N=–v?59¹
+2ñ
+TÚJŒUQòF¸G”³«ŸUxô¼lô²]+kkÁP$*£zVbi0IØ·üôÊ$ô]Ršd ºìØqo«¢da(UP æ=lñT«Rêw7û¢~
+endobj
+362 0 obj
+1249
+endobj
+363 0 obj<</Type/Page/Parent 287 0 R/Contents 364 0 R/Resources<</ProcSet[/PDF/Text]/Font<</Fa 10 0 R>>>>>>endobj
+364 0 obj<</Length 365 0 R/Filter/FlateDecode>>stream
+x-±Â
+endobj
+365 0 obj
+144
+endobj
+366 0 obj<</Type/Page/Parent 287 0 R/Contents 367 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 70 0 R>>endobj
+367 0 obj<</Length 368 0 R/Filter/FlateDecode>>stream
+x¥VÛnÛ8}÷WÌÓÂlV’eÙj ´Þ&P4m­¢ûV¢lvuqIºEþ¾3¤K¾uE
+X€LÒGHŸî°>–B´ ±õâ”Í»?*X;–=I¾ˆA÷­øl¼^ˆ’`ï4{Pc) FY¨J
+ï#?›á̯â{Ä'!K®ã{Ä/±‚EwT’Úxþ:f¼ú¢ ¬Ú¦”›½ò‚èÍ„†qˆdŸ0Ò~
+êõŒ~L¾†£þƒ|L®ÏcË}“Ù6L yWŸ°éœ¬)8.*b·(¥jˆÁç¦ÀúüþþBk‡PXñ¹‚/ ¾'aª£hé¸TPóÌ­¦QÇQâwñü*Ó0ÊÿÅU4[%pµÙ×¢1ú¥;@J}•ä#Ó(v=ÊÆ@W/=–Åè·´ÓfŒ±Ç›WÔSàr•e1Äã¢w¥€Þ‰\–ÒÖ(À
+íj)+…й’;Ó*Ù©“tU]ŒŽÞÅi¸Úpì¡¥lPR²!–=Îöf?å?Ñ2kÙj¶ýë8ðVpš½-¼
+㛧$z‚¶Жvþe[UíOT»e:ŒöÆÈ¿bg!ft~Ÿ·ÊV=û3R`êÅí¼óÍi²d ,sáÕ¢— ´–€úwÇ
+›^„³9f¶o><¬Q°·êéåÀ²ìâ¡Æ”#ŒRT\:g3ˆ̦ÄÀ<6Œcô„œ î8Š)’‡éË: í æ½uRhãvå²ÕÝÛlMåÚrl+w¤ä{¥PÏô¶7¿¾ˆpù ŽÁ])Õè§<0‘ËTà\bí3¾Î„ÃR’kXG„Å:`äÁv®o¯®lµ>i~í›ïµyB€kúèß²®E!¹Õ“uK‡÷–gŸ|ÓÊcæ×ï¾Làvg]ÒÝÕ—y«®S Š=¹Î“ÃO×°Ž'‹u<Àž'Tw'âév¨’KDÙ¶­ŽþoÏQäµ-~§ ‡µKrëz¶ØnGžÁvGxgô ·Ýß°¿ÿ~/b””=͉'œäÇÑ/0ªiendstream
+endobj
+368 0 obj
+971
+endobj
+369 0 obj<</Type/Page/Parent 287 0 R/Contents 370 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+370 0 obj<</Length 371 0 R/Filter/FlateDecode>>stream
+x¥X]oêF}çWŒîCÅ•ø ƒû–K€FM Å–n"UÆ^·`s×KSþ}gvm06¾ª»gÎΙ™ÍŽþè`Úôì:ß¼Î`f®ƒnÀëý1xa7cBÄÉ&?ŒõþêhÐÓ;A£í!{ǧ ÞÄÉþ *
+V·¬¾V€m$Ó6, jeÝ÷õê´¯9T!ywê¹ß‰¥d¡Qœ.™Œ1c<ö·°Oy5ÒFüí6ýø9*BŠBîÇÉ€íöâ(Et(î¡¡ŽIHÀ‚¿u£ð0ŠûÅòûü’îEœ&ÙÛ×f݇#»Ð}d¢´ºç`Ú¿ ¬tW`¥û]è>´“îßV¿WeOBL<Xsæÿ QZM?ʺMüK@Ä;v¥HO% å·ï@RÀ2X¼<xÓDAšeP`’¡ œË ÁJ†3ú$ƒ1VçèM^—‹É¥ “4<Ýf¥‘øð9£Ç½ ¦(Ô5"̾qkš­mÜ
+Ü2n ®‹ÛÂ--r˜7™=¹¿]Æ=£ê”ñjŠË åy}¡¯–$ùq`‡RF”ݸdÉjòOI`Ù·jP&1šÀ* 8¯A§¥‹$°°ˆÉšë=.'Ïó©w)ÇŠ‰Oò:„^gF•¨É_ž—Óç/°Ž…*¶²N–X¤‰LŸú
+l?‘
+9¸]*(pm*èE*PôX„/£?—à<tªÇ•ðÿo覔ª¥ rp»Ð¸.ts,»éìq¹XMï./{rØ­?5á4‚õQ Ob¬ƒŸ4‘ÆÉ›ï¹6~¸&6ä¼24å·jÈ9¸øŠ3T¾F8¥ŽÕ’wçj‘}8/‰àÆ›Äßf¤Øy~Á2PÄç¡!ÔCwäpÓ-›k0³‹!N±½\¨ ›¢ñÎY"NîÊ0 ™4Ù|¼ÇÁ;à,κ°ßÓ²ãÊí¦™$
+Û8a’m©T±¶9ÍaÁgõ*óàUh˜RO(ïêWBèØU’
+þzËhá\
+Go1’Dä
+ëöôV"z•‰Y äÒšäTôÀ²€Çr¾ 'WKŠnjÈÄÐh 鸜A³XM[54‡3Ö‡4áÑX$ÏZèØA1GáÔ<¨büù4%rEÏ]Á[7ô…8áž~xÐ
+Ë=ã>ýïÜc&ØNö¨žZ¥—/cØœ‰#ÂHõ$W]Ð_ð‚ؼ'ù-ÔýÎÅN
+ endstream
+endobj
+371 0 obj
+1289
+endobj
+372 0 obj<</Type/Page/Parent 287 0 R/Contents 373 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+373 0 obj<</Length 374 0 R/Filter/FlateDecode>>stream
+xÝV]kÛ0}ϯ¸t0RH\;Iãu_Ð5i(¬Íûa…¡Dr¢aK™%wäe¿}÷Jv>ºv힣PùêÞ£{ιò÷V!þE÷ ?„EÑú¶N.EfõûÁ _õƒWòvz5½¸þ:»:N¿µâ(èáN\M6J«M™.¡Ž¸™PÈ8m…Aˆù·ÿfLRÊ8Æ”.G/ÄD¥€äà^Ø ¢:8:!ì¢h o؆;x£dvˆà¶Í™e`„ÅRŒonŸxcÒçtÁ
+endobj
+374 0 obj
+877
+endobj
+375 0 obj<</Type/Page/Parent 287 0 R/Contents 376 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+376 0 obj<</Length 377 0 R/Filter/FlateDecode>>stream
+x½WÛnÛF}÷W òR9TÉ·8ÍS“:×I#q ÁšZ[“\vw)GùúžÙ%%ŠVä¥q`Yär®gÎþ³7¥ ~¦tx"ÿ“bïõ|ïç·G4Ò<Óӣñ)ÍÓ_0鲪=ÝÖYÆ–n93–IyÏEåuyGŠ,«t¼?ÿ&^ÒôXž#£Ã`bÆ9'áäy0”YSà¡[­rú`¬n¼NÆGâýÓBçLN>TUå:Q^›ÒQ¢JªLž“±ô ´'SRª¼¢ÄTp"Á»è¦‚›!Æùm;
+¹”&D€€§‡ãñÛz,S*™Sò†ªLD¬E°^Թט3µMØ…
+ÀHüÕåù5UÖ,uÊŽüBKÔ•ºÕ¹ö+|·¦¾[à“)æÒTàBÁn7ûÛ•[9Ôvò|Ls1Ù¹B¸j­8¾³ª@èb£“[²àäžÐĘËLíÑ_|Zbkñ;1eªc™QUS²Ü*¤ë™´Ù$VWÞX'1<¾Ú4G—þ±÷N;ÜÀ¹«seƒ]|5(†…ý¥F9‡TéJ>àÜ™äž=ÜýiêMëÑ•M2#h4>4h1${ÉÇöé2åL—Ús¾
+ö½.e •y ÈUœèL'¤
+S# “‘€Ô½8ùϦ=Ñ/â/Þr—½˜²œ¿èÛœûøù]ÀúîêœæÆä÷Ú»L죸l3•°`3zíá§Ê+z`zИ˜T»¤v‚H¦k:/½Õ¥Ó‰£›Á³kÿìfŸr}k•]Q®¤ºÄQízQ' UáîfìÃèıŸŽ_È 6fggoæ4‹¸}„nÇÕ™9þ=™lC>I¸BiŽIÙ»ºàÒ»_¢‘ ½”a΄àFGq°“íxÉß…úò9K‡”¥Ÿ{zÞ §ýÚŽFû=ÌÇ°­¸2ÐæŸó¶N€y e f{Þ êfÿÕvΣQCq;²ŽAm?3Xçׂ3p
+ÓBß-@)ëâ–-¸ª7£±}*í¹öËÓt
+LØ?
+Ó;ˆBËÈ"Áx£Åg‡‹þ(Ö¸h
+qÉH÷*å)öx¤E@KŽ’J' U¾Z›Ùb»†]:¸¼º¸èW3‹)Tzð*xÈ`±³àÄcc-»JXW×.B)l4à]ö–0V¨þÊi/¬ÚE–² *±æÉ¡xûÛç¿Î>¾¿D˜7x•,Âq{v6—»íœì8ñæâãŽIñ-Ì71ô ‚§$ge#aÉ”bȵÆíiÁ5ˆÑöíì€,"èþÁX-Ri
+–M± 
+³„ôX‘³Þoö`Wm`‘JóDñ,%Ææ¡Vì÷†&ú‘´¸íÌ»
+Ü"‹
+üRƒÎ:Y@œvÀ íXà"TÍ­ËÒ8û%ˆ.éùåK²…¤D MØ­ zÊ^½Ë zcö„~
+˜æÛÀûqÈzûÊÖ{"ôzuWùL`;kM]jبßÑ®¸>zÜÚI–}m¡Qe–#-ïd¿P²2À«eõ°Y2š’†ò€(B¯UCÚ}j_5DðC‹xVWp ‚AhFÔ½ÐI×xïȸ
+ϲ–|žž§!^6üÚ ä¹ÎD03jÐ#{ŒFô/s ]…RÒtÒ@€KjðŽ<ðO=­‡ ±ØÎGg¬¿ÙßF_¨†à§“£ñ”NŽÇ'¢fÍkM”ßá]ä]7€ÀîÞÏðNð¾b‹×”4Ê¢ÐØQ´3zq03§àád2>Æ›.¼c‘2\†]/ z½òп.•Îe›È3gó½?öþ^kE[endstream
+endobj
+377 0 obj
+1379
+endobj
+378 0 obj<</Type/Page/Parent 287 0 R/Contents 379 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+379 0 obj<</Length 380 0 R/Filter/FlateDecode>>stream
+x…VmoÛ6þž_qè>LélÙ² ;é–]ê ¼&«•-œDÙ\$Ñ%)'é°ÿ¾;RŽ-zu“ ’Í{}îî9~:‰ ¿L0CZžüŸô®FEçôÕølžAœs¡¨–p]¸Õô¶˜Î§—1 k%S®5ˆj]È•,¡”ŠƒY±
+dÅAËZ¥<<ÿFë}8d¾Ý¾dÁ7¢J‹:ãðC]¡›,\½%Q<§8öÏõ³î™ç5×_%?.¡yÁSãË´¼ŠÊÀÞOõý±S-ÓnŽŠäÙÑã’=Ýû"yv¯ù.
+‹oÛˆ6ªN LxÃ
+û”µG+îÞk˜UÂVˆÏT!ÞTü¼îµD¯Þßÿ9ýxÖorÚöŒ§‹iœyÖq&¾$à ù‚PË¡ƒ
+8¬jlL/ÑF 4„; ê·=ìIÔ$rž€Â{i±umæû«Pß$˹ðáv>ï4ÿÛÎ}Û ŽEËÉ>¦òÈ4à”q¥¤òý PT@úA?9mÙX[$xÕ™3Qðì•_F^hëŽ,]`Þ‡vj£ÑJ<ûez}ÿ¯~Ëó?­O
+Ñj© 3 X·[–:„,Ž¦EÔõ‚Þ¶s|üJ–*SüãXzÁç8[œFÂÌÕË‹ò‚-Ahœrk˜
+endobj
+380 0 obj
+1072
+endobj
+381 0 obj<</Type/Page/Parent 287 0 R/Contents 382 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/Fa 10 0 R>>>>>>endobj
+382 0 obj<</Length 383 0 R/Filter/FlateDecode>>stream
+x…T_oÚ0çSÜÛ‚)ŽvÚS[µS¥NíÖLâi2ön$vf;P¾}ï’"ui· 蜻ûý3¿Lø•Ál.o] .óÁÉÍ>¥SÈ ©ÍÏÏ 7ÉΑE¼¨ëïX¹ÞÚº‰Ë¤­\9ñ)‚î¾G@6òG~æ¿xâ)d™ óÄñtžžÊÌ|ƒÐÏ_Ž“€%êøgOá"V UYhÙÞrå
+ç;€PxWɺ Œ³™6IdX èwèS`¡h¬Žäl`VØaØSÜðÔ 3^)A+·$ìuÙ²kX¨ýî0„HEá«ãŸéËÒh!ÐûJ(¿n:š®/]kÅ…1­3ý¾P£¦‚0€°;²åZQ÷´íI§?a/ cX&˜®ÓN®žRj§¨T«—CÀ'
+1
+õFY
+ÕH"½bÑ°#õ·äÝ-X&³§å°'ZËøäF½Ü¹lršfÍ?JöÑ“*áÁ»µWU%þÒáÈðy¸¼]À}^E9yl¯eñãnÊøl:‘1³‰§gçéœÿ^¸ð#´ ×w×W9´×Fd\p,¢'H¸£•Wþ ×ùàÛàk o¥endstream
+endobj
+383 0 obj
+603
+endobj
+384 0 obj<</Type/Page/Parent 287 0 R/Contents 385 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 5 0 R/F5 6 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+385 0 obj<</Length 386 0 R/Filter/FlateDecode>>stream
+xì™ÏsÚFÇ•™ráÔtGÇÀÛNpäÖœ„½šš¨:F"üHš9øÿ¨oþÊ|ß®$‚“bOÏt™à}ûy_½}z»¬ß–:ÂË¡c—êMº•;ª\;?%ç”ÔêGNÕ¡æq£ê’´Çã0DÿPûùQœÌgÓçêoØ¿$ÇaûŠP©»'Õ—<B½‰¦Ôφ'É»hNi¬S“ɨ?‹’˜ð‰Fýø%Cš½ é:ðçi8‰ú74N&³)}Hæô>º¹¡aªÆ5¤6ª'ìüîñappyUqëî×ÂÈmm©AQÃë$ ixÓ—L¦ôú
+«>¹
+ÄÓ«ÊÕüOhŒãðz–L~d-ÎqBrüyô×|’KJ=eælí©ò[Ð\ áhœB”ã#ÜÎi³ÚÐSqQ;»ú½vQ»ü¥CîOGºuÎùeÚÏÔ.h6™‡µß¨Þ¨×~¥“z­ãŸÁéÅ«òíÞmš¹`ì³@´ùÐ
+ºòàžÇR» ù¹¸\jpO4
+}x¢à´
+ùº<¢Xêh˜Ê©L¹ûÆ.Ù%Ç8ïS~׋öð> Æú2“M±@aóê÷ Ø*ðr
+m- øGÁ]ãoCø#QÂiÅWÁ< £™zGxø>a¾>åë`ž(˜À’Á°Üœ–7C˜‰
+ä
+òê¹ÖÇî¶ø±ÚìC({‚u¢~-c¡ì§>Wµ­‡‰Á³/v¦;´Õ©¯WHcz=è"µ {(Vžð<Ù#$ð@‘HA)ûððK[ùŒVzVFbé+¨V~Š0­v\¬¡ ÇÍ‹ŽM}5r‹ëÚayÐmÿms®K[!+É`*ÍÍ¡©KݾAñmgK°Q‘=(“³Ùð¬6d}ÍÆ‘ö7G"Êže ÒÈf8æÈñ3X´ºî~U}oJØé^ÿ -œB»Èa{l?ÿC £²©91›Ïz FÖ³ÔR%| Í_‚–Q6¦Ð2s0ÕïbєسÁj9fI„Í0Sæ´\\<c¢EƳ°bE+Ì Ò\²"'Ž—Iµ ËÌëÙt= äæz*ã)®mË Xa?L^NËåÅ3&^d<Ë+”¸*1\n†æxmçxmF·K´’)­¯µî:¼>Œ[vËÉ
+BþnwZ.)ž1‘"ãYR¾ÄýŠ¤ÜìÌ‘ÚåÙu²ì¾ÂLõ1]¾Ù:µMë>¢z7‡D}™–
+ùÛÞi¹´xÆD‹Œ¯imöz¸ñ·ÌîO'«êÜß^ÿ͹w%‚8 )|wIây¿¬þ[%
+çendstream
+endobj
+386 0 obj
+1706
+endobj
+387 0 obj<</Type/Page/Parent 287 0 R/Contents 388 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 5 0 R/F5 6 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+388 0 obj<</Length 389 0 R/Filter/FlateDecode>>stream
+xì™ÍOãFƳR¹äÔ|Ÿã•Äq>ªª
+ù€U•“Øê¡êÁ †º…d×qZí=ð,7Ä_Ùç}ljqa6™:¬`f~óø™wÞf?–-aâËNþ]—;~¹zT–%ü ÑlˆzÓ©4…þ¶ñ½ÿªÜ¬Ê¶+-ôDÅñ¯=Y5ïõVˆ_&—ñ™8N&³ñ9ÕZŽ]iÈö¶ù©çŸ’za
+?J®ãqx%†Qxþ‰õý²Y1!~ñ‹f­bŠz£ŬÏ6+¶H"1ZÑÖ2ëxÙXª[×ÚvZWm×íJmŽ®™•ºÈÑð—\­;ø-Ìk>ëEw…«ìE7L’8JD/J£³”ú?6×¢_ä“3Š/ɶÁ,¼ŠÓOú¬ñÏmbšß\vn3¯3ÿ¸±²jèÌ?‰^í_ÍÃð¯U|Ýa4’¢'!g/5‹Ç—j^8 Œ£ê7VöB y!Ñ«½°D9¼°xaåsÿœNÑ ªa˜b™DWYD­‰«ÑTáÆÊŽ¨¡3G$zµ#¦Ã~,­…`N§XOãVtÄOÂñô:NE÷jrö7Õ=ï‡Ûj ç(ú!«ú¡ˆ–~dè•~¸M[æpkiŒ¢³Éø<Ldº‘Ò8­ÛnÑ”¢{k iÔÕӯ˕ QCg†HôjC 9ýZKk!7¤ë^˜x·®ž&]n¬üž²5ö÷Q
+æ¹%,—æò{i­åÊ…?Ôl[xñx2K§$;ßÂMq`×e®Ìš…WÓ‰˜M£©…í|ˆÇ¢w0š½ˆ…1Öÿ$ùA¼Ÿ¥âß8ýSœÇQÓ»-ôþ‘F°ØÞû(¾œa£u°õgÃtç´ÌÆŒÂÎn Š,¬`<›->xœT»£ß«'ÕáqGØ?™\:Gô%ËÏTODšÌ¢êoÂqê;Ñtª¯+lqÒ+? Ü—´fÞöM µx% þ¬•Ê0À÷†~pPønÜ`ðí.À>ÀÚè~ìßÜëì諒àT?xÐ'©§7úçàÃ`ÈàV;
+βÇéɒݙӗéî+«dÈã ¼Mú-&í%ð6Fq›™ƒe²@™°~÷{ƒ8*Ðv€æo,O{ÑÂ#+r0ZîL ‹ÔAÔÑËÈ1ÕªžSœ÷&"Àx ·ñ!ØkªÐFZ!³²,à_Ÿ²Ç_ †ð\ÂmÅJ0uCï¦Âa½'š§¼¦‰B´$0ZnÎÒ›$LD€ |@8ž“S®š+ÎÀm&bHžà|L¹
+wXìqÖp°šÿMX“&]%S|«‹·àäàCºÒÒP<¾ÍC:¦$„„ìcŽ´€øY€éïÿï4úÞ°¯ŒûÒeÅš.ßüà[£h…§ç6dìáB(óøŽîXzÀ}¾Ø| îëÃáåy7VÜæ±mdà®{L·}9¹Oyžß##bÅÛs‘
+ žƒI¼Þró
+ä
+Å&¸]h£IÓÚ“zË7cKBgȤþûŸãŠ„âæÜ4RüòÆ~z¾Ì—êJ¦*Xˆ(^±¨6×Uýs§…ŒÄLål®”(›í¡ÞuŸªßW7w±RTÏb&CÌá# ”}ì¡9XÁB‰í¹îÖ¦yé›d‚WÞ¤±Gz[]…AŠáO±Iê(Š‚H(dBY;£E9¡µ¿'B±ŒÒ jepr¦µZ(8µ³ž/άåÍÝÜñIC»_™@ks--Ü7¸­MÿK¬L{<lì
+m—äü\Z=åŸí7@‘ü
+ŠÙPxÖ
+Y¿‡‚(Tfÿ€BÙÓ q4@“Îhíá5Ä`eêC·oú^oD^÷µUœâŠí'&N.–»výýüäT†‘Ä 'sÉ1­‰œ³ö‘KR% ùÈ“ä
+½ÖÍ?¶Å96p¸e*Q° f”‘˜ÍŠgíX¡XúXÅ)U1Ì¢©(+ªr"Ê
+ý÷¨»^T­(õûœLF´ˆ¬áY¬`K\p(fƒãY;pdíe2²A†ù4n9 n¹ÓµñaKϱý8Ô]½DcÍû -#ůò
+Ålb<kGŒ¬}ÄdJµSiŠX^”±§õÌÖ0ˆ±^ºÞ¼ÚuÚ;ÿìœ르”Š_üŠÙ¬xÖŽY{XÉ,¡â‰4Åjõ=Ïê[»mÖÓmR…$G†WÅD‚#öJ›}£ÌÀÞ„2“¶¹óz‰¹`™ÖÖYûÀâXi‹©66_NuUı¬i´¹îõº…¢,4ŠÇc½kúדg>@˜Øa‹Ål„<k‡¬}ã„ZÆ8÷t§ ´Ï1œ_†pã5K~ 1ÏÚÁ@±¯Ê(¡6 1¿†cÞ™ÒðBé’‘ä—y³‰ð¬O ó®:4ÌRã<hXÎÕx–?N/á‘’_Ù%ŠÙxxÖY{²'³W ¨?r”Pvð|§4F£º›OÝuFò«1j¹,xÆ„‚Œ=$’MéSbȘ›.œ-±WEf™D-÷l$^dAzr]Æ[jín©2œC%
+õԦæø`Ú­©÷Ð)·bul6Z<·F<Ü—_ŸÄý‹6uoWÊ×®×{|)
+óо@_x
+endobj
+389 0 obj
+2397
+endobj
+390 0 obj<</Type/Page/Parent 287 0 R/Contents 391 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 5 0 R/F5 6 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+391 0 obj<</Length 392 0 R/Filter/FlateDecode>>stream
+xÔ™ËoÛF‡»òA§¨ˆïc&’ƒ,É–(;(
+H–ÝêP€¦Iôа#S­GNô’ÿ¾³Ù‡,­HQ)Ú%`>fçÛßîÌ.Wôçrx4¡s§ ?–{q¹~uÍöñÄ#´sˆï_G7µv§ï^z¿AxQïÆïÞ@8ž<.æ³7ñtjA³)\j'Áq‹9ŧ Ç“y:Ý SÏ`1Kï!ý:|XÌÆ_Ò‡oðþ2áãÝdUæ‹i:ÁÝäžUÄ 8¯}OÐüB¿v³xÃÇÉ$ΧoYÛÍN€jU«Wã¿
+¹¯ŒH ‘îvD G*Ò…ˆþ%õ+ T¤‹Ÿù{DLvB¼L®•ÈÝ“$>$‘ÿ]âŠ^û°ýz¿êW¨Ó:28‘ªêiÞ‹^EûêqÌKYW¿±Î²íóPå##è 7‘5 YMz<Oç~„/2=:YM‰E ÙËP!ÙBf6!Q­I‹…3¼’¸Él±
+ÔjFD Dâ‹Æ&5>¸ˆ“ ©Šd †$J¼¬ê0aßF#•>™ÝœD|e«ô‘D)Ëáæ0a`že°n“ Ò î¤×|W¡B#Ú–·’oeÏf ŒlA”’‘ò}£I¶¼D²qéÏlâU°ùÌŤ!‰"û³˜ø~O#OyáB>ée Q6&‘>Úû«ïDÔ3{{iä‰++Pz\àÌCýÿ êô)Ð_áú’£^Ï
+ÙZÆÊ5pàw î.}d:î0}d:>!FÖŽÄÚ³9L,¬Šh‡†mOô2x§$‡‰ç‰ Ìr°·[j7I¤X¼I$oŒLL½¡Ÿ!•F+Ø‚áñ6³ï\xu5Œvh$Q.H\ «4IÅ–)/Q*^Õu†! ò÷«hH´mi\E”x“(× 6o9Küqq˜¸¯Ì¿C´†_Ô(;dŽKcæ2p¤ll™h%¤UQÈ’ªDcÄ°MXE­<,4T‹¹²É«#x£¬:Éc“ÈÜž$ÖöÄar™ÐmŠ¥ÑHÈþeZlT^C„Ê¡QiÓeôì]ÅHpcÒ\çá%I7 u—Vs~=+Ÿ<ŒÕ³G£JÝ×V׫5–Žª.²íE¯!‰ã½:Zör݇ý£5D5iJÆ×%Šl•ª"ZÉ£' Ú©v¦³þµ–¨«d"êxKDz/tsö:ùQµk…Z§Ïuå…ª’á¢òœBj¾¬1G#ls¢nF‹€µ:2$u{3eM ãEÈx†È5›?‘XXä‰(’vH›Ô¬´ƒø±%úK‡žõ¡l¥ãꇑï­¢Êmÿë³JªØù
+ä
+:V³ >ÎÕÇ!_„ý<a¯m»Í€;Ûž…çUÞŽï!Ì võbζÝiº4ŠÚºô¸4—ðµÈ7Jaçu£+`õúÌ$ƽÂ
+0L2“ÑÍgb+×Ðë´‘“¡†ÌÙTCCh¦!‡~¨!UÎ;s1P9‡É#2N­9ü­@¹0'éßÉ •pE³v)R4d&=aòi™,2ˆf(ìô†8ThŠYákJ55ƒæš2è2Mó5uË”ˆŠ4æ£éâ>ͲbYÏÊÀzE²öî’ÑÜPT¿M¶—Ùf÷¨³±¨fÐ\T]&ªç²ê•éÐBfÒÓ‹nñ(™ß§XUÕ¶Õ¶x‡ ÒÒ=Þjµ "]R¡Le£ÎƲ™AsÙt™l” æ¢_&ÛÕÏûûÇÙm:†«ùl¹vKÚy«ð¨³± ÜÛÁ¶¡ ­þ°}ìjØ-p}¿é‘í6¼ºìy³eÆÛ§H NÀ|~¹»ÁZO<±î¤ï“iËE²€tÓ)L’û6è~c¸|ãÙtŠMa6oB<½KÿJxÏþ²Ø‡ù`ŠÛíî3ܲñ¢4N‰Í‘öëìÃl‘ÀlBÆ:®ó-1ÛmùHV—éí{¬=‰€v¸ è‰ÉÉ
+’äÏÕíÏêõ:CHrŠçO6ÆQ$bŒ$f8(‡Ï´H ¢¸Úâ`"#½býB¬kÈHï‚ø¨~ ãÇ{A¼ˆßH’ûAŒãè™ ùßE,Xu¶¯gÑËþ‰X´Š n¤SywӓtÜ¥ÌÿÐ*³l{ ó‘ ¨ aNS“Ò‘
+Q÷²júT!CÃææ—?—=ëM$0Z°"§ÌE¾¯5ñ™Wˆ°QÁßØD9Ê`ÓÁ)²M#(²ì71Ñç=…Öä(,DP|I!23aòhé£Æoö…ÕÎÞžš‰•‡" âö¿4ÔÿD•>;¬— }AeTõlg@RËȱGŽ)à@Ü_úðtÜcúðt|€æžHrÏl&V‰˜ y<Qe ðJ¤
+͘Õ`oWj×"
+’¬x ’t2a"ì5þRrÌ›aÔèœæO.Ô]ʘ Gä‰ò²rgœ3mŠÈM&C 5ŽüïW6›;DZ‘Ã눼NøŽb±¯
+"&:VæßAÌÉÏ%àù‚rêTq4~B
+É'[EÌ%dΑÑâ¬Ød#oBYyHh„J6¯Š à…´V˜p –<yÄ8ÔOâÜãI…©
+‘ÝæÈqÔ²± Z¤9— ÂÉ3ÍiÝiøè+å¢%¸¶iÞl‚Ççñ@-©q÷gGÚ+­:böHe¢¨ÅT¡»QÌñèùiªíi• ŽNíåóÕQU׃þóD¹iŽ´·KUPÂvr*sÉ£6 ÚŸ o£_õ2ªQ¹!ªx+ˆ¢/œo¸êøk9o.Ô*}Þœ<•.''ODHõfé8™È`ëu=¤VrÕ‘@Še¯G)ñÐ!ÁÓH– XwûÅI> ˆ$ÅÒ:6…v`l±õŠïq-÷¢¬p`ñÍ°^+D–Ûþ×çЬÈï?
+ä
+ü–ãì€f8âl›x1…ìVZízÕÚ×S¦.0èXôöâ?å ŸxÊ9äSTÓœ†¢(œâžqQ-¡:¢¥4
+“AL#²“ê(NBâk¥ wû  ù`</oq]ËfjNG™Q# jÀØ}[47B÷/0×í¾©MÄmÒ†ØGÄïsŠªt¡·Îð+¢PÉJ)êW?ÃÍž{Ãó³à9ëÏ𲄅™AàÅg\‹¦Ûª¾—µ…bT³1³ùý³/íZ­>Ï ¦xŠÌ›©{3õ³˜:ksÒ1&#2Ç0”ǘ–r%Õïã@ó1§bv¨MÓ™ÐZI …ìåª7óOpÅëzsµbo®~ÖWg=Æ•0W7“1%¯\èðÒ–ò×^v=ð¯î§0ó*øXàRo–g¯*@îÙ·
+X±7Y?묳!›3¬ó˜°éŒÙ1°³úëx‚åÄ¿‘X­/'f±Iß-
+/"Ø€Ç3ñìZØ]M­ÖíÅð]€hjóð
+Zý³ë…éœì; =N¹Úí°7çÁ[òjT±¸‡UÛ4x—Z ÏøC•ÒÐI­ÄÆqC3¢Øà)0졶´VVKÝ®µØbê¬a¾Wµ´.ˇjñ;©q©^»^nmçœOE¶U•Uf <-®ï`9»¼âOç€Í½Ý÷VždI˜»–ÛʃŸãëä/R u³endstream
+endobj
+392 0 obj
+3524
+endobj
+393 0 obj<</Type/Page/Parent 287 0 R/Contents 394 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 5 0 R/F5 6 0 R/Fa 10 0 R>>>>>>endobj
+394 0 obj<</Length 395 0 R/Filter/FlateDecode>>stream
+xÜV;oA¾XŠ%¶¡¡Ju%¬”ø ! 8¸‹ˆ%
+DJ$b’þìü
+JÆÖÍÞ|;¯Ý™½½5·Š_Ím4éü]tú¢ÒÝuk5·ÿH³µ»Órû_žþ¸\ý|ñ¬&j{µ]w»ÞÄ@÷ôÛõàÄmºÛîÑAÏmmžž»ûçç'ÇWRx×—n«ºSg_<¨WÐ~¾×‚œö*ûGŸ*½Ê‡ƒŽÛxYej¼¡_§K?C¯>WzîÕàú¤òÖ+ïùÙ9Üwënï­Z<Ãy;yOæ¥q>x˜£¹Ð„iÕÎAaIv¯µ—Ãî´Ö“0 À²VçB? ‰e­Aƒ´µ¾Y¶*Y¨3è§hβø±äÑÌ1•R[ÄR;h'àCC¦Y ™ZZÈ,–Dš3©u;ÒË™ä¥5hÎ$/-c¹ à=r¸Â]ìp…»x½áΰ&™)0›!FžÃB‡™ï ŒC„â;&DLñΡ
+ÌÙ¢@z8Ìém8eÚŠ…þUÊcbD؃^Ë£­‘鎮R&0ÊVôD Ë*ŸûfÉtÇð5–P° 3µ'“ˆ%ZkÒÔ’ža! ›±$ûð‘Â:*Ât{½žn¯,$ã¦èbÁºÐÿˆM
+ô&r½?‹Ù ˆöA°‚Åâý#!í0ßɾKÈPRßFX¾^¦ÎuþCE5?í3
+#ZÏßÔ:$D?ÐSô #»Öö\R‚0­$3‹ñ8û˜YIòþ¯Ø¸Àæø>±ŸÖ|A¯õX;óåKû,ìéõýÎ狵32œ6’)…)ÞW쯴>¬<üC[ȦÆyw¶è”æm¬ Ÿ‘ØéÍ2a’÷œAƒÑÂør„Bˆ09ѵÂ,c™)ŒñYN“Ê$„H±:aæ@*Ñ<f®%Òb‰M¾7Ðަ┨wNœáÈgG õ‚ýŠ#PúRzIî\å“>:Œ)³f"J°.aÉ2å8¤F4MÉ=ä¿Çr ó.XÒej9?Å2”¾†™nB‰¥H¦©ŒR´Ôö7)
+ä
+ÈÖ1•ößשš ²Ô ‡Ìë'“‡Ñø³X`Ær
+Œáœƒ8<ùã¤
+áø|2>ü"(Gþý45pš#`„çâ^K{«QÐNd1*\"†1EþÈ4¡¥k$MJ䥅>ðŠäåíœ.7tÃK`˜º¬?z ýGC¢‰¥¿§œýJZ B™³vÊ¡QòðîCñCÂ16Çk^ª[^£öJÿV‡
+^;»çvûÏoÊHë+í{oÕ9\aY¤dfþ êvú*^Pþþs—Twµ!îÄ}_ü&ï—vendstream
+endobj
+395 0 obj
+1510
+endobj
+396 0 obj<</Type/Page/Parent 287 0 R/Contents 397 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F5 6 0 R/F9 9 0 R/Fa 10 0 R>>>>>>endobj
+397 0 obj<</Length 398 0 R/Filter/FlateDecode>>stream
+x—Qo›0…ßó+üØI ÅvÀ°·¦K×jS«6LÚ+º0¥I©Öýû]“R@·•š^s|}ýqâ &Røô+…QB‡"{™Ì“ÉåM,d,’g!#íÅ"4§D’_\ívÅ&/ßÄü£¸Z^ß݉ëíf_m×ô™õ‡ä7Í )íÜ©›<Õ*òfvv²*k‘­Òݾ¨Äº¬÷µØ¯Š&QÖ$Êl"‘nr{­¬Ä&})jÏe¦ª/²¹}1ÕôO~1²>iTxX¹ÏÛõzû·Üü:,¸J«4£Rhµª¯u‘“¦‡Bv¯Õn[õ'»¶4¾¶ò¥?×…FL‡1 :ö‚aÂ{ÚÍÌ(öíæå&­þÙ±™ÅŒ±‡lŸ®íVžqCŸ‹¬|qƒ¤ Üàmñ–æ§ ‹dâ{>ÝÐ㟧/T†¦Š2E"TDù´ myÙ'6¡'q =T¬”9ŠQèXfÄÇ2°1±ö-Š¦æÈ.r¬þ<xLÊÐ&•ÝByÿý›…†]‚£ßü€¸µ:‰h¨Kቩ»<†R*ZŽ‹b.Jˆ¹(!æ¢t5¿Cé
+endobj
+398 0 obj
+823
+endobj
+399 0 obj<</Type/Page/Parent 287 0 R/Contents 400 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/Fa 10 0 R>>>>>>endobj
+400 0 obj<</Length 401 0 R/Filter/FlateDecode>>stream
+x™[oÛ8…ßý+ô¸ZU¼IöcêKP´³‘»HƒÆ-R4õ®›>ôß/yFM”±($0bó˜|ÎRÿÍLQÅ_S¸:ý}¾Ÿ½ÙÍ^o|aL±û_ë²)ê¹+çÅîö¯‹÷/vßfµ-}üN|_ÅÓ§!Í”>36½u6~È°eègi|½›Ue×~|¹:˹´\ÓÄå°Š­J[÷E;$nêÒtâ`ʪ[Û<ŠÚ¨8,Ã@ÜcbW…có<.ò$Ž(;€µ+ëçŸÝ @ó S
+`hâr,@ˆY€³
+ iÒÆHÅâiK<mwü—ö¼lcˆY€³
+ŒØHˆ‰EÛˆˆY€˜™1 PbÎŒÙ
+endobj
+401 0 obj
+1181
+endobj
+402 0 obj<</Type/Page/Parent 287 0 R/Contents 403 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F5 6 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 224 0 R>>endobj
+403 0 obj<</Length 404 0 R/Filter/FlateDecode>>stream
+xÍœMs¹†ïúsÜ­ÊÒÌç”’eËQ•7r,¥6‡½Œ)JbÂeDíÆÿ>o7œíä*‹ôn•LÀ3˜îºÑ
+ý0ôãã;*du1E·UVµ“V
+Ë슰׾¿Ë^W™1ôHê׺Ç]¬·ýææi¶]lÖô¤jŠZ cò£þgâò0f2…<JCòà‚—Šux·³ûîa;ï³Q’ê ÑÚ}”T Íüe¤ú®²i¹’j½î³Çq˜ê¿ÊÚz&Õƒ¾žê»ÊŒm&&•Ô éjÞ/ºå8MV™Í²f-yß@xg›Õêi½˜udrlÝM;)fuŨXŠªj§“T[üã
+b@¯ÎK™>˜ÄUÛ¢¶ôÛ}·—¢@ÿdšRªuÚÏÇIª3tfr9@I½ ’:S
+›Ö¨|¦ÂÔ$ r
+ó¨‹ÈdU}I_å>IêeP¯~±…e¹ban6Ò‹|9:]KÓ?Éÿ˜œVIW¡ÃÛUxKvjW‹»ut QÝúX†0ÏÞ›ùíb½Ø- %ÍÙcº­q)¹Eî9)Á¢¸¤L³æ¡Ÿ>~^ÏîûÍzó±+„G@RM3©B 4pÌpÞò´=ÜJ«Œ«JXQY±×æµ·â‚2¢²vn;¾Ôª¾4áZk5Iê…]kuo°bAâšåìüióª?i¬ ÛhÒ@hož–óÿ{M
+ÌÔ% „¶ÝD&œêM*£\fÈ’žuÉèî€5¯‡0ì†v/©´_cò¶ Í—”ÛÁk …†õ‘KJóÈ=²ƒý8ïnâšWýA+(ùÐü˜ÒýÐ4ì`ÍM ´Û~³Šh_õ'…U¤0ý¦þBÛFµ¯ºoŽe.€IíôO[çƒ.Þ)Í#ë²<繤4o]îz¹‰Ç!2ã=‹×¸R³xÆ;Xl²«Ž*6q˜BFð¨Ò+ôÐ4œxÀ´Z‰uÉ êxúQNu\U¼R!ø  #”\Eé3–2§ý/ÃÏ:op9o ò¡ÙÔyƒSÐ,ÕÃã‡a\›õíâî©O¬#ª+rò šé#ËÏUÕì 'ÏÀ¤À’v¥à! ¾?8i ¼m‘‹8è܇m™ñ£+Þ¬SÊ?À
+…s`w¯ÜÉî£Id‹’לeË3WPòÁ>‡ÝíÅúá)²›EÍw& ѹk€j©,(-!:¤:ô¢¸“Œÿ`ûÙ‚5Ž÷Ê)jt%%"dKÜ~öi•‘îNÓ,‡« `¾çÓì(‡(^Bô¯Iì ä+Üþ‘W#.))YÊ0qšŽóÐÉÕÈÓà6°¶iš¬F;à}×w3,לAÔxÄüˆ‰q¶¥˜T‚8W é ζßÂy$‡Y’C8a©
+;¥©ÉNå²IüÌó=’Oä¤T *v¡úâžG«@R- È®Ku…Ê°AÚI½€Ø
+YÔ}š4`Zì+º/…›”²Ç%p&½þ¼Gîðêî€aó†õL¿¤oÀ°Ó?ºÅ’¾DþÑÒËYPÄZØš’²¶« 7x G.ˆ±`ófªÝÍå_'ŠmÜ
+jÝ\8)=áj‡®¤(ºŸ€¤Þß!zûþíÙõx<¥À5”p¾ç}~ÜÎcW”EiØ' „wÖ-ù:0.®ÛƒºˆIRUXq]*™Žn(~
+â0+7tþ™º–0ô†<ø5–É!p‹ûÕ(éayºŒì*¥zE
+·ÙÔÀ¤ÚÓ”¥¼Â,½(h]ÿê“`Uñ×Öpþ<¨ªp©›wãÒº!¹Ùî!\%C´)ÓWâ ˆ/&{ð '&øIùƒü‰ÿ€FGɳƒ¶TõTß}U‰ììÝÓâfžÝnúÌݬ×+zü¹l‰¯8vtÉ æ–Ù/å÷_ˆfþqòÑröAendstream
+endobj
+404 0 obj
+3340
+endobj
+405 0 obj<</Type/Page/Parent 287 0 R/Contents 406 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F5 6 0 R/F9 9 0 R/Fa 10 0 R>>>>/Annots 232 0 R>>endobj
+406 0 obj<</Length 407 0 R/Filter/FlateDecode>>stream
+xÅ“MOÃ0 †ïý>‚IJæ£érd›vÚ =p-4«Šš¶dE‚OœeÐ!UÜ ­¬F¶'¯×ˆBì^
+\â÷l¢eÍ×
+¨‚ü
+Šæaƒ |áÒ ˆ‘aÑ@†~ÄÛ
+æë(Å’˜§Nånû^·eý“eFh’qY'¸ny3 åP‚¤— à>ï+[m·Ó¬QºÊ*襧þ
+endobj
+407 0 obj
+348
+endobj
+408 0 obj<</Count 8/First 409 0 R/Last 452 0 R>>endobj
+409 0 obj<</Parent 408 0 R/Title(Table of Contents)/Dest[402 0 R/XYZ null 756 null]/Next 410 0 R>>endobj
+410 0 obj<</Parent 408 0 R/Title(Introduction)/Dest[294 0 R/XYZ null 743 null]/Prev 409 0 R/Next 411 0 R>>endobj
+411 0 obj<</Parent 408 0 R/Count -5/First 412 0 R/Last 420 0 R/Title(Chapter 1, Basics of Serial Communications)/Dest[300 0 R/XYZ null 743 null]/Prev 410 0 R/Next 426 0 R>>endobj
+412 0 obj<</Parent 411 0 R/Title(What Are Serial Communications?)/Dest[300 0 R/XYZ null 371 null]/Next 413 0 R>>endobj
+413 0 obj<</Parent 411 0 R/Count -1/First 414 0 R/Last 414 0 R/Title(What Is RS-232?)/Dest[303 0 R/XYZ null 736 null]/Prev 412 0 R/Next 415 0 R>>endobj
+414 0 obj<</Parent 413 0 R/Title(Signal Definitions)/Dest[303 0 R/XYZ null 233 null]>>endobj
+415 0 obj<</Parent 411 0 R/Count -3/First 416 0 R/Last 418 0 R/Title(Asynchronous Communications)/Dest[306 0 R/XYZ null 260 null]/Prev 413 0 R/Next 419 0 R>>endobj
+416 0 obj<</Parent 415 0 R/Title(What Are Full Duplex and Half Duplex?)/Dest[309 0 R/XYZ null 466 null]/Next 417 0 R>>endobj
+417 0 obj<</Parent 415 0 R/Title(Flow Control)/Dest[309 0 R/XYZ null 329 null]/Prev 416 0 R/Next 418 0 R>>endobj
+418 0 obj<</Parent 415 0 R/Title(What Is a Break?)/Dest[312 0 R/XYZ null 729 null]/Prev 417 0 R>>endobj
+419 0 obj<</Parent 411 0 R/Title(Synchronous Communications)/Dest[312 0 R/XYZ null 627 null]/Prev 415 0 R/Next 420 0 R>>endobj
+420 0 obj<</Parent 411 0 R/Count -5/First 421 0 R/Last 425 0 R/Title(Accessing Serial Ports)/Dest[312 0 R/XYZ null 338 null]/Prev 419 0 R>>endobj
+421 0 obj<</Parent 420 0 R/Title(Serial Port Files)/Dest[312 0 R/XYZ null 255 null]/Next 422 0 R>>endobj
+422 0 obj<</Parent 420 0 R/Title(Opening a Serial Port)/Dest[315 0 R/XYZ null 686 null]/Prev 421 0 R/Next 423 0 R>>endobj
+423 0 obj<</Parent 420 0 R/Title(Writing Data to the Port)/Dest[318 0 R/XYZ null 599 null]/Prev 422 0 R/Next 424 0 R>>endobj
+424 0 obj<</Parent 420 0 R/Title(Reading Data from the Port)/Dest[318 0 R/XYZ null 442 null]/Prev 423 0 R/Next 425 0 R>>endobj
+425 0 obj<</Parent 420 0 R/Title(Closing a Serial Port)/Dest[318 0 R/XYZ null 230 null]/Prev 424 0 R>>endobj
+426 0 obj<</Parent 408 0 R/Count -1/First 427 0 R/Last 427 0 R/Title(Chapter 2, Configuring the Serial Port)/Dest[324 0 R/XYZ null 743 null]/Prev 411 0 R/Next 433 0 R>>endobj
+427 0 obj<</Parent 426 0 R/Count -5/First 428 0 R/Last 432 0 R/Title(The POSIX Terminal Interface)/Dest[324 0 R/XYZ null 384 null]>>endobj
+428 0 obj<</Parent 427 0 R/Title(Control Options)/Dest[327 0 R/XYZ null 686 null]/Next 429 0 R>>endobj
+429 0 obj<</Parent 427 0 R/Title(Local Options)/Dest[336 0 R/XYZ null 241 null]/Prev 428 0 R/Next 430 0 R>>endobj
+430 0 obj<</Parent 427 0 R/Title(Input Options)/Dest[342 0 R/XYZ null 729 null]/Prev 429 0 R/Next 431 0 R>>endobj
+431 0 obj<</Parent 427 0 R/Title(Output Options)/Dest[345 0 R/XYZ null 588 null]/Prev 430 0 R/Next 432 0 R>>endobj
+432 0 obj<</Parent 427 0 R/Title(Control Characters)/Dest[348 0 R/XYZ null 204 null]/Prev 431 0 R>>endobj
+433 0 obj<</Parent 408 0 R/Count -2/First 434 0 R/Last 435 0 R/Title(Chapter 3, MODEM Communications)/Dest[354 0 R/XYZ null 743 null]/Prev 426 0 R/Next 438 0 R>>endobj
+434 0 obj<</Parent 433 0 R/Title(What Is a MODEM?)/Dest[354 0 R/XYZ null 371 null]/Next 435 0 R>>endobj
+435 0 obj<</Parent 433 0 R/Count -2/First 436 0 R/Last 437 0 R/Title(Communicating With a MODEM)/Dest[354 0 R/XYZ null 214 null]/Prev 434 0 R>>endobj
+436 0 obj<</Parent 435 0 R/Title(Standard MODEM Commands)/Dest[360 0 R/XYZ null 729 null]/Next 437 0 R>>endobj
+437 0 obj<</Parent 435 0 R/Title(Common MODEM Communication Problems)/Dest[360 0 R/XYZ null 243 null]/Prev 436 0 R>>endobj
+438 0 obj<</Parent 408 0 R/Count -2/First 439 0 R/Last 443 0 R/Title(Chapter 4, Advanced Serial Programming)/Dest[366 0 R/XYZ null 743 null]/Prev 433 0 R/Next 447 0 R>>endobj
+439 0 obj<</Parent 438 0 R/Count -3/First 440 0 R/Last 442 0 R/Title(Serial Port IOCTLs)/Dest[366 0 R/XYZ null 384 null]/Next 443 0 R>>endobj
+440 0 obj<</Parent 439 0 R/Title(Getting the Control Signals)/Dest[369 0 R/XYZ null 357 null]/Next 441 0 R>>endobj
+441 0 obj<</Parent 439 0 R/Title(Setting the Control Signals)/Dest[372 0 R/XYZ null 525 null]/Prev 440 0 R/Next 442 0 R>>endobj
+442 0 obj<</Parent 439 0 R/Title(Getting the Number of Bytes Available)/Dest[372 0 R/XYZ null 268 null]/Prev 441 0 R>>endobj
+443 0 obj<</Parent 438 0 R/Count -3/First 444 0 R/Last 446 0 R/Title(Selecting Input from a Serial Port)/Dest[375 0 R/XYZ null 722 null]/Prev 439 0 R>>endobj
+444 0 obj<</Parent 443 0 R/Title(The SELECT System Call)/Dest[375 0 R/XYZ null 520 null]/Next 445 0 R>>endobj
+445 0 obj<</Parent 443 0 R/Title(Using the SELECT System Call)/Dest[375 0 R/XYZ null 182 null]/Prev 444 0 R/Next 446 0 R>>endobj
+446 0 obj<</Parent 443 0 R/Title(Using SELECT with the X Intrinsics Library)/Dest[378 0 R/XYZ null 170 null]/Prev 445 0 R>>endobj
+447 0 obj<</Parent 408 0 R/Count -4/First 448 0 R/Last 451 0 R/Title(Appendix A, Pinouts)/Dest[384 0 R/XYZ null 743 null]/Prev 438 0 R/Next 452 0 R>>endobj
+448 0 obj<</Parent 447 0 R/Title(RS-232 Pinouts)/Dest[384 0 R/XYZ null 384 null]/Next 449 0 R>>endobj
+449 0 obj<</Parent 447 0 R/Title(RS-422 Pinouts)/Dest[387 0 R/XYZ null 571 null]/Prev 448 0 R/Next 450 0 R>>endobj
+450 0 obj<</Parent 447 0 R/Title(RS-574 \(IBM PC/AT\) Pinouts)/Dest[390 0 R/XYZ null 736 null]/Prev 449 0 R/Next 451 0 R>>endobj
+451 0 obj<</Parent 447 0 R/Title(SGI Pinouts)/Dest[390 0 R/XYZ null 431 null]/Prev 450 0 R>>endobj
+452 0 obj<</Parent 408 0 R/Count -1/First 453 0 R/Last 453 0 R/Title(Appendix B, ASCII Control Codes)/Dest[396 0 R/XYZ null 743 null]/Prev 447 0 R>>endobj
+453 0 obj<</Parent 452 0 R/Title(Control Codes)/Dest[396 0 R/XYZ null 384 null]>>endobj
+454 0 obj<</Type/Catalog/Pages 287 0 R/Names 233 0 R/PageLayout/SinglePage/Outlines 408 0 R/OpenAction[294 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</P(eltit)>>2<</S/r>>4<</S/D>>]>>>>endobj
+xref
+0 455
+0000000000 65535 f
+0000000015 00000 n
+0000000239 00000 n
+0000001796 00000 n
+0000001870 00000 n
+0000001952 00000 n
+0000002030 00000 n
+0000002107 00000 n
+0000002186 00000 n
+0000002269 00000 n
+0000002350 00000 n
+0000002435 00000 n
+0000002494 00000 n
+0000002599 00000 n
+0000002704 00000 n
+0000002809 00000 n
+0000002914 00000 n
+0000003019 00000 n
+0000003124 00000 n
+0000003229 00000 n
+0000003334 00000 n
+0000003439 00000 n
+0000003544 00000 n
+0000003649 00000 n
+0000003754 00000 n
+0000003859 00000 n
+0000003964 00000 n
+0000004069 00000 n
+0000004174 00000 n
+0000004279 00000 n
+0000004384 00000 n
+0000004489 00000 n
+0000004594 00000 n
+0000004699 00000 n
+0000004804 00000 n
+0000004909 00000 n
+0000005014 00000 n
+0000005119 00000 n
+0000005224 00000 n
+0000005423 00000 n
+0000005472 00000 n
+0000005557 00000 n
+0000005606 00000 n
+0000005691 00000 n
+0000005740 00000 n
+0000005823 00000 n
+0000005872 00000 n
+0000005956 00000 n
+0000006001 00000 n
+0000006106 00000 n
+0000006209 00000 n
+0000006313 00000 n
+0000006418 00000 n
+0000006523 00000 n
+0000006628 00000 n
+0000006733 00000 n
+0000006799 00000 n
+0000006904 00000 n
+0000007009 00000 n
+0000007114 00000 n
+0000007219 00000 n
+0000007324 00000 n
+0000007376 00000 n
+0000007481 00000 n
+0000007505 00000 n
+0000007609 00000 n
+0000007714 00000 n
+0000007819 00000 n
+0000007924 00000 n
+0000008029 00000 n
+0000008134 00000 n
+0000008193 00000 n
+0000008297 00000 n
+0000008401 00000 n
+0000008506 00000 n
+0000008611 00000 n
+0000008716 00000 n
+0000008821 00000 n
+0000008926 00000 n
+0000009031 00000 n
+0000009136 00000 n
+0000009241 00000 n
+0000009346 00000 n
+0000009451 00000 n
+0000009556 00000 n
+0000009661 00000 n
+0000009766 00000 n
+0000009871 00000 n
+0000009976 00000 n
+0000010081 00000 n
+0000010186 00000 n
+0000010291 00000 n
+0000010396 00000 n
+0000010501 00000 n
+0000010606 00000 n
+0000010711 00000 n
+0000010816 00000 n
+0000010921 00000 n
+0000011026 00000 n
+0000011131 00000 n
+0000011236 00000 n
+0000011342 00000 n
+0000011448 00000 n
+0000011554 00000 n
+0000011660 00000 n
+0000011766 00000 n
+0000011872 00000 n
+0000011978 00000 n
+0000012084 00000 n
+0000012190 00000 n
+0000012296 00000 n
+0000012402 00000 n
+0000012508 00000 n
+0000012614 00000 n
+0000012720 00000 n
+0000012826 00000 n
+0000012932 00000 n
+0000013038 00000 n
+0000013144 00000 n
+0000013250 00000 n
+0000013356 00000 n
+0000013462 00000 n
+0000013568 00000 n
+0000013674 00000 n
+0000013780 00000 n
+0000013886 00000 n
+0000013992 00000 n
+0000014098 00000 n
+0000014204 00000 n
+0000014309 00000 n
+0000014415 00000 n
+0000014521 00000 n
+0000014627 00000 n
+0000014733 00000 n
+0000014839 00000 n
+0000014945 00000 n
+0000015051 00000 n
+0000015157 00000 n
+0000015263 00000 n
+0000015369 00000 n
+0000015475 00000 n
+0000015581 00000 n
+0000015687 00000 n
+0000015793 00000 n
+0000015899 00000 n
+0000016005 00000 n
+0000016111 00000 n
+0000016217 00000 n
+0000016323 00000 n
+0000016428 00000 n
+0000016534 00000 n
+0000016640 00000 n
+0000016746 00000 n
+0000016852 00000 n
+0000016958 00000 n
+0000017064 00000 n
+0000017170 00000 n
+0000017276 00000 n
+0000017382 00000 n
+0000017488 00000 n
+0000017594 00000 n
+0000017700 00000 n
+0000017806 00000 n
+0000017912 00000 n
+0000018018 00000 n
+0000018124 00000 n
+0000018230 00000 n
+0000018336 00000 n
+0000018441 00000 n
+0000018547 00000 n
+0000018653 00000 n
+0000018759 00000 n
+0000018865 00000 n
+0000018971 00000 n
+0000019077 00000 n
+0000019183 00000 n
+0000019289 00000 n
+0000019395 00000 n
+0000019501 00000 n
+0000019607 00000 n
+0000019713 00000 n
+0000019819 00000 n
+0000019925 00000 n
+0000020031 00000 n
+0000020137 00000 n
+0000020243 00000 n
+0000020349 00000 n
+0000020455 00000 n
+0000020561 00000 n
+0000020667 00000 n
+0000020773 00000 n
+0000020879 00000 n
+0000020985 00000 n
+0000021091 00000 n
+0000021197 00000 n
+0000021303 00000 n
+0000021409 00000 n
+0000021515 00000 n
+0000021621 00000 n
+0000021727 00000 n
+0000021833 00000 n
+0000021939 00000 n
+0000022045 00000 n
+0000022151 00000 n
+0000022257 00000 n
+0000022363 00000 n
+0000022469 00000 n
+0000022575 00000 n
+0000022681 00000 n
+0000022787 00000 n
+0000022893 00000 n
+0000022999 00000 n
+0000023104 00000 n
+0000023210 00000 n
+0000023316 00000 n
+0000023422 00000 n
+0000023528 00000 n
+0000023633 00000 n
+0000023738 00000 n
+0000023842 00000 n
+0000023946 00000 n
+0000024050 00000 n
+0000024154 00000 n
+0000024258 00000 n
+0000024362 00000 n
+0000025575 00000 n
+0000025679 00000 n
+0000025783 00000 n
+0000025888 00000 n
+0000025994 00000 n
+0000026100 00000 n
+0000026205 00000 n
+0000026311 00000 n
+0000026385 00000 n
+0000026419 00000 n
+0000026453 00000 n
+0000027256 00000 n
+0000027305 00000 n
+0000027354 00000 n
+0000027403 00000 n
+0000027451 00000 n
+0000027500 00000 n
+0000027549 00000 n
+0000027598 00000 n
+0000027647 00000 n
+0000027696 00000 n
+0000027745 00000 n
+0000027794 00000 n
+0000027843 00000 n
+0000027892 00000 n
+0000027941 00000 n
+0000027990 00000 n
+0000028039 00000 n
+0000028088 00000 n
+0000028137 00000 n
+0000028186 00000 n
+0000028235 00000 n
+0000028284 00000 n
+0000028333 00000 n
+0000028382 00000 n
+0000028431 00000 n
+0000028480 00000 n
+0000028528 00000 n
+0000028577 00000 n
+0000028626 00000 n
+0000028675 00000 n
+0000028724 00000 n
+0000028773 00000 n
+0000028822 00000 n
+0000028871 00000 n
+0000028920 00000 n
+0000028969 00000 n
+0000029018 00000 n
+0000029067 00000 n
+0000029116 00000 n
+0000029165 00000 n
+0000029214 00000 n
+0000029263 00000 n
+0000029312 00000 n
+0000029361 00000 n
+0000029410 00000 n
+0000029459 00000 n
+0000029508 00000 n
+0000029557 00000 n
+0000029606 00000 n
+0000029655 00000 n
+0000029704 00000 n
+0000029753 00000 n
+0000030142 00000 n
+0000030295 00000 n
+0000031091 00000 n
+0000031112 00000 n
+0000031207 00000 n
+0000031309 00000 n
+0000031329 00000 n
+0000031485 00000 n
+0000032569 00000 n
+0000032591 00000 n
+0000032705 00000 n
+0000032914 00000 n
+0000032935 00000 n
+0000033076 00000 n
+0000034216 00000 n
+0000034238 00000 n
+0000034402 00000 n
+0000036500 00000 n
+0000036522 00000 n
+0000036663 00000 n
+0000037912 00000 n
+0000037934 00000 n
+0000038110 00000 n
+0000044227 00000 n
+0000044249 00000 n
+0000044422 00000 n
+0000046081 00000 n
+0000046103 00000 n
+0000046253 00000 n
+0000047480 00000 n
+0000047502 00000 n
+0000047652 00000 n
+0000049062 00000 n
+0000049084 00000 n
+0000049198 00000 n
+0000049407 00000 n
+0000049428 00000 n
+0000049587 00000 n
+0000050471 00000 n
+0000050492 00000 n
+0000050642 00000 n
+0000051772 00000 n
+0000051794 00000 n
+0000051953 00000 n
+0000053579 00000 n
+0000053601 00000 n
+0000053760 00000 n
+0000055100 00000 n
+0000055122 00000 n
+0000055291 00000 n
+0000056329 00000 n
+0000056350 00000 n
+0000056509 00000 n
+0000057874 00000 n
+0000057896 00000 n
+0000058055 00000 n
+0000059625 00000 n
+0000059647 00000 n
+0000059806 00000 n
+0000061142 00000 n
+0000061164 00000 n
+0000061323 00000 n
+0000062638 00000 n
+0000062660 00000 n
+0000062833 00000 n
+0000064559 00000 n
+0000064581 00000 n
+0000064731 00000 n
+0000065565 00000 n
+0000065586 00000 n
+0000065718 00000 n
+0000066892 00000 n
+0000066914 00000 n
+0000067073 00000 n
+0000068393 00000 n
+0000068415 00000 n
+0000068529 00000 n
+0000068744 00000 n
+0000068765 00000 n
+0000068938 00000 n
+0000069980 00000 n
+0000070001 00000 n
+0000070160 00000 n
+0000071520 00000 n
+0000071542 00000 n
+0000071692 00000 n
+0000072640 00000 n
+0000072661 00000 n
+0000072811 00000 n
+0000074261 00000 n
+0000074283 00000 n
+0000074433 00000 n
+0000075576 00000 n
+0000075598 00000 n
+0000075739 00000 n
+0000076413 00000 n
+0000076434 00000 n
+0000076596 00000 n
+0000078373 00000 n
+0000078395 00000 n
+0000078557 00000 n
+0000081025 00000 n
+0000081047 00000 n
+0000081209 00000 n
+0000084804 00000 n
+0000084826 00000 n
+0000084979 00000 n
+0000086560 00000 n
+0000086582 00000 n
+0000086723 00000 n
+0000087617 00000 n
+0000087638 00000 n
+0000087761 00000 n
+0000089013 00000 n
+0000089035 00000 n
+0000089191 00000 n
+0000092602 00000 n
+0000092624 00000 n
+0000092780 00000 n
+0000093199 00000 n
+0000093220 00000 n
+0000093275 00000 n
+0000093380 00000 n
+0000093493 00000 n
+0000093672 00000 n
+0000093791 00000 n
+0000093943 00000 n
+0000094036 00000 n
+0000094200 00000 n
+0000094325 00000 n
+0000094438 00000 n
+0000094542 00000 n
+0000094669 00000 n
+0000094815 00000 n
+0000094920 00000 n
+0000095042 00000 n
+0000095167 00000 n
+0000095294 00000 n
+0000095403 00000 n
+0000095578 00000 n
+0000095717 00000 n
+0000095820 00000 n
+0000095934 00000 n
+0000096048 00000 n
+0000096163 00000 n
+0000096269 00000 n
+0000096437 00000 n
+0000096541 00000 n
+0000096691 00000 n
+0000096802 00000 n
+0000096925 00000 n
+0000097100 00000 n
+0000097242 00000 n
+0000097357 00000 n
+0000097485 00000 n
+0000097610 00000 n
+0000097768 00000 n
+0000097878 00000 n
+0000098007 00000 n
+0000098137 00000 n
+0000098293 00000 n
+0000098395 00000 n
+0000098510 00000 n
+0000098639 00000 n
+0000098738 00000 n
+0000098893 00000 n
+0000098981 00000 n
+trailer
+<</Size 455/Root 454 0 R/Info 1 0 R>>
+startxref
+99209
+%%EOF
diff --git a/licence.txt b/licence.txt
new file mode 100644
index 0000000..ecd9d35
--- /dev/null
+++ b/licence.txt
@@ -0,0 +1,361 @@
+comport - PD External for the serial Ports
+
+
+
+Institute for Electronic Music and Acoustics
+Copyright (C) 1998-2005 Winfried Ritsch
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version. (see below)
+
+--------------------------- GPL.TXT -------------------------
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..761d12e
--- /dev/null
+++ b/makefile
@@ -0,0 +1,104 @@
+# comport PD External Unix(Linux)/Windows
+#
+# IEM - Institute for Electronic Music and Acoustic, Graz
+#
+# Author: Winfried Ritsch
+# Maintainer: Win
+#
+# Licence: GPL - Gnu Public Licence
+
+
+current: pd_nt
+ echo make pd_linux, pd_nt, pd_irix5, or pd_irix6
+
+
+# ----------------------- NT -----------------------
+pd_nt: comport.dll bird.dll
+
+.SUFFIXES: .dll
+
+PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo /DWIN2000
+
+VC="C:\Programme\Microsoft Visual Studio\Vc98"
+PDROOT="C:\Programme\pd"
+
+PDNTINCLUDE = /I. /I$(PDROOT)\tcl\include /I$(PDROOT)\src /I$(VC)\include
+
+PDNTLDIR = $(VC)\lib
+PDNTLIB = $(PDNTLDIR)\libc.lib \
+ $(PDNTLDIR)\oldnames.lib \
+ $(PDNTLDIR)\kernel32.lib \
+ $(PDROOT)\bin\pd.lib
+
+.c.dll:
+ cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c
+ link /dll /export:$*_setup $*.obj $(PDNTLIB)
+
+# ----------------------- IRIX 5.x -----------------------
+
+pd_irix5: comport.pd_irix5 bird.pd_irix5
+
+.SUFFIXES: .pd_irix5
+
+SGICFLAGS5 = -o32 -DPD -DSGI -O2
+
+
+SGIINCLUDE = -I../../src
+
+.c.pd_irix5:
+ cc $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c
+ ld -elf -shared -rdata_shared -o $*.pd_irix5 $*.o
+ rm $*.o
+
+# ----------------------- IRIX 6.x -----------------------
+
+pd_irix6: comport.pd_irix6 bird.pd_irix6
+
+.SUFFIXES: .pd_irix6
+
+SGICFLAGS6 = -DPD -DSGI -n32 \
+ -OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \
+ -Ofast=ip32
+
+SGICFLAGS5 = -DPD -O2 -DSGI
+
+SGIINCLUDE = -I/../../src
+
+.c.pd_irix6:
+ cc $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c
+ ld -elf -shared -rdata_shared -o $*.pd_irix6 $*.o
+ rm $*.o
+
+# ----------------------- LINUX i386 -----------------------
+
+pd_linux: comport.pd_linux bird.pd_linux
+
+.SUFFIXES: .pd_linux
+
+LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \
+ -Wall -W -Wshadow -Wstrict-prototypes -Werror \
+ -Wno-unused -Wno-parentheses -Wno-switch
+
+LINUXINCLUDE = -I../../src
+
+.c.pd_linux:
+ cc $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c
+ ld -export_dynamic -shared -o $*.pd_linux $*.o -lc -lm
+ strip --strip-unneeded $*.pd_linux
+ rm $*.o
+
+
+# ---------- TEST ----------
+
+TESTCFLAGS = $(LINUXCFLAGS)
+LIBS = -lc -lm
+
+
+test: testser.o bird.o
+ gcc -o test testser.o bird.o $(LIBS)
+
+tester.o: testser.c
+ gcc -c -o testser.o testser.c $(TESTCFLAGS)
+
+bird.o: bird.c
+ gcc -c -o bird.o bird.c $(TESTCFLAGS)
diff --git a/pd_bird.bat b/pd_bird.bat
new file mode 100644
index 0000000..3c95436
--- /dev/null
+++ b/pd_bird.bat
@@ -0,0 +1,5 @@
+echo Hallo starte nun pd
+
+C:\data\pd\bin\pd -verbose -nomidi testbird.pd
+
+echo bye... \ No newline at end of file
diff --git a/pd_comport.bat b/pd_comport.bat
new file mode 100644
index 0000000..497fbee
--- /dev/null
+++ b/pd_comport.bat
@@ -0,0 +1,5 @@
+echo Hallo starte nun pd
+
+C:\Programme\pd\bin\pd -verbose -nomidi testcomport.pd
+
+echo bye... \ No newline at end of file
diff --git a/testbird.pd b/testbird.pd
new file mode 100644
index 0000000..03b18fb
--- /dev/null
+++ b/testbird.pd
@@ -0,0 +1,96 @@
+#N canvas 231 237 720 492 10;
+#X obj 134 195 bird;
+#X floatatom 203 248 4 0 0;
+#X msg 117 58 set POINT;
+#X msg 19 191 bang;
+#X obj 188 197 comport 1 9600;
+#X msg 28 58 set STREAM;
+#X floatatom 51 329 7 0 0;
+#X floatatom 71 360 7 0 0;
+#X floatatom 92 394 7 0 0;
+#X floatatom 113 333 7 0 0;
+#X floatatom 133 362 7 0 0;
+#X floatatom 155 395 7 0 0;
+#X text 406 121 comment;
+#X text 63 37 operationg mode;
+#X floatatom 177 331 7 0 0;
+#X floatatom 197 362 7 0 0;
+#X floatatom 218 396 7 0 0;
+#X floatatom 239 335 7 0 0;
+#X floatatom 259 364 7 0 0;
+#X floatatom 281 397 7 0 0;
+#X msg 29 90 set RUN;
+#X msg 97 92 set SLEEP;
+#X text 11 171 data point;
+#X obj 349 227 s birdctl;
+#X obj 193 130 r birdctl;
+#X obj 51 147 s birdctl;
+#X obj 51 292 unpack 1 2 3 4 5 6 7 8 9 10 11 12;
+#X text 479 38 3 floats;
+#X text 479 65 9 floats;
+#X text 480 89 3 floats;
+#X text 483 115 4 floats;
+#X text 481 137 6 floats;
+#X text 480 167 12 floats;
+#X text 488 192 7 floats;
+#X text 353 16 DATA MODES;
+#X text 350 254 SETTINGS;
+#X msg 418 259 set AngleAlign1 0 0 0 0 0 0;
+#X msg 417 288 set AngleAlign2 0 0 0;
+#X msg 381 42 set ANGLES;
+#X msg 381 64 set MATRIX;
+#X msg 381 87 set POSITION;
+#X msg 381 110 set QUARTER;
+#X msg 384 139 set POSANG;
+#X msg 380 165 set POSMAT;
+#X msg 382 190 set POSQUARTER;
+#X msg 420 314 set Hemisphere 0 0;
+#X msg 420 337 set RefFrame1 0 0 0 0 0 0;
+#X msg 423 362 set RefFrame2 0 0 0;
+#X msg 420 386 set RepRate1;
+#X msg 420 407 set RepRate2;
+#X msg 420 429 set RepRate8;
+#X msg 420 451 set RepRate32;
+#X obj 341 451 s birdctl;
+#X msg 195 154 verbose 1;
+#X msg 196 175 verbose 0;
+#X connect 0 0 26 0;
+#X connect 0 1 1 0;
+#X connect 0 1 4 0;
+#X connect 2 0 25 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 25 0;
+#X connect 20 0 25 0;
+#X connect 21 0 25 0;
+#X connect 24 0 0 0;
+#X connect 26 0 6 0;
+#X connect 26 1 7 0;
+#X connect 26 2 8 0;
+#X connect 26 3 9 0;
+#X connect 26 4 10 0;
+#X connect 26 5 11 0;
+#X connect 26 6 14 0;
+#X connect 26 7 15 0;
+#X connect 26 8 16 0;
+#X connect 26 9 17 0;
+#X connect 26 10 18 0;
+#X connect 26 11 19 0;
+#X connect 36 0 52 0;
+#X connect 37 0 52 0;
+#X connect 38 0 23 0;
+#X connect 39 0 23 0;
+#X connect 40 0 23 0;
+#X connect 41 0 23 0;
+#X connect 42 0 23 0;
+#X connect 43 0 23 0;
+#X connect 44 0 23 0;
+#X connect 45 0 52 0;
+#X connect 46 0 52 0;
+#X connect 47 0 52 0;
+#X connect 48 0 52 0;
+#X connect 49 0 52 0;
+#X connect 50 0 52 0;
+#X connect 51 0 52 0;
+#X connect 53 0 0 0;
+#X connect 54 0 0 0;
diff --git a/testbird.sh b/testbird.sh
new file mode 100644
index 0000000..bfc65cf
--- /dev/null
+++ b/testbird.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+pd -alsa -alsadev hw:1,1 -inchannels 8 -outchannels 8 -frags 20 testbird.pd
diff --git a/testcomport.pd b/testcomport.pd
new file mode 100644
index 0000000..bd3db6d
--- /dev/null
+++ b/testcomport.pd
@@ -0,0 +1,78 @@
+#N canvas 199 244 690 400 10;
+#X obj 89 121 comport 1 9600;
+#X msg 5 103 66;
+#X obj 80 251 print;
+#X floatatom 187 80 4 0 0;
+#X msg 4 61 64;
+#X text 4 81 point;
+#X text 3 40 stream;
+#X msg 5 153 86;
+#X text 5 128 position;
+#X msg 8 197 70;
+#X msg 6 237 71;
+#X text 7 180 run;
+#X text 6 215 sleep;
+#X floatatom 113 159 4 0 0;
+#X obj 82 215 spigot;
+#X msg 101 188 1;
+#X msg 135 189 0;
+#X msg 353 37 bits 8;
+#X msg 352 61 stopbit 0;
+#X msg 351 89 parity 0;
+#X msg 352 118 xonxoff 1;
+#X msg 352 144 rtscts 0;
+#X text 431 92 parity 1=even \, -1=odd \, 0=off;
+#X text 431 63 extra stopbit 1=on \, 0=off;
+#X text 433 38 databits 5 \, 6 \, 7 \, 8;
+#X text 432 9 use exact or higher baudrate;
+#X obj 112 96 r comctl;
+#X obj 335 169 s comctl;
+#X text 433 117 use handshake xon/off 1=on 0=off;
+#X text 431 143 cts/rts hardwarehandshake 1=on 0=off;
+#X msg 345 210 pollintervall 1;
+#X text 461 211 set pollintervall for read in ms;
+#X text 461 225 (default is 1 tick 1ms);
+#X msg 246 264 close;
+#X msg 251 288 open 1;
+#X msg 353 12 baud 10000;
+#X text 312 261 Close Serial port;
+#X text 315 292 Open seriel board Nr (0=COM1 \, 1=COM2 \, ...);
+#X msg 238 342 devicename /dev/ttyS1;
+#X text 232 363 Danger !!! you can open every file in your system and
+maybe if suid is root damage the system.;
+#X text 233 324 set devicename for actuell port \, then close and open
+again;
+#X obj 240 78 spigot;
+#X msg 259 51 1;
+#X msg 293 52 0;
+#X obj 235 25 key;
+#X text 2 22 eg. for flock of bird:;
+#X text 235 312 never should be needed except for sys admins (only
+unix);
+#X msg 269 10 baud 300;
+#X connect 0 0 13 0;
+#X connect 0 0 14 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 7 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
+#X connect 14 0 2 0;
+#X connect 15 0 14 1;
+#X connect 16 0 14 1;
+#X connect 17 0 27 0;
+#X connect 18 0 27 0;
+#X connect 19 0 27 0;
+#X connect 20 0 27 0;
+#X connect 21 0 27 0;
+#X connect 26 0 0 0;
+#X connect 30 0 27 0;
+#X connect 33 0 27 0;
+#X connect 34 0 27 0;
+#X connect 35 0 27 0;
+#X connect 41 0 3 0;
+#X connect 42 0 41 1;
+#X connect 43 0 41 1;
+#X connect 44 0 41 0;
+#X connect 47 0 27 0;
diff --git a/testcomport.sh b/testcomport.sh
new file mode 100644
index 0000000..c7ad1e9
--- /dev/null
+++ b/testcomport.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+pd -alsa -alsadev hw:1,1 -inchannels 8 -outchannels 8 -frags 15 testcomport.pd
diff --git a/vcmakefile.dsp b/vcmakefile.dsp
new file mode 100644
index 0000000..c3af30f
--- /dev/null
+++ b/vcmakefile.dsp
@@ -0,0 +1,85 @@
+# Microsoft Developer Studio Project File - Name="vcmakefile" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) External Target" 0x0106
+
+CFG=vcmakefile - Win32 Debug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "vcmakefile.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "vcmakefile.mak" CFG="vcmakefile - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "vcmakefile - Win32 Release" (basierend auf "Win32 (x86) External Target")
+!MESSAGE "vcmakefile - Win32 Debug" (basierend auf "Win32 (x86) External Target")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "vcmakefile - Win32 Release"
+
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Cmd_Line "NMAKE /f makefile"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "makefile.exe"
+# PROP BASE Bsc_Name "makefile.bsc"
+# PROP BASE Target_Dir ""
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Cmd_Line "NMAKE /f makefile"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "vcmakefile.exe"
+# PROP Bsc_Name "vcmakefile.bsc"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "vcmakefile - Win32 Debug"
+
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Cmd_Line "NMAKE /f makefile"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "makefile.exe"
+# PROP BASE Bsc_Name "makefile.bsc"
+# PROP BASE Target_Dir ""
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Cmd_Line "NMAKE /f makefile"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "vcmakefile.exe"
+# PROP Bsc_Name "vcmakefile.bsc"
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "vcmakefile - Win32 Release"
+# Name "vcmakefile - Win32 Debug"
+
+!IF "$(CFG)" == "vcmakefile - Win32 Release"
+
+!ELSEIF "$(CFG)" == "vcmakefile - Win32 Debug"
+
+!ENDIF
+
+# Begin Source File
+
+SOURCE=.\makefile
+# End Source File
+# End Target
+# End Project
diff --git a/vcmakefile.dsw b/vcmakefile.dsw
new file mode 100644
index 0000000..0a9cda0
--- /dev/null
+++ b/vcmakefile.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
+
+###############################################################################
+
+Project: "vcmakefile"=.\vcmakefile.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/vcmakefile.ncb b/vcmakefile.ncb
new file mode 100644
index 0000000..bde6bd9
--- /dev/null
+++ b/vcmakefile.ncb
Binary files differ
diff --git a/vcmakefile.opt b/vcmakefile.opt
new file mode 100644
index 0000000..5771755
--- /dev/null
+++ b/vcmakefile.opt
Binary files differ
diff --git a/vcmakefile.plg b/vcmakefile.plg
new file mode 100644
index 0000000..82ea7aa
--- /dev/null
+++ b/vcmakefile.plg
@@ -0,0 +1,29 @@
+<html>
+<body>
+<pre>
+<h1>Erstellungsprotokoll</h1>
+<h3>
+--------------------Konfiguration: vcmakefile - Win32 Debug--------------------
+</h3>
+
+
+Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.8168.0
+Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
+
+ cl /W3 /WX /DNT /DPD /nologo /DWIN2000 /I. /I"C:\Programme\pd"\tcl\include /I"C:\Programme\pd"\src /I"C:\Programme\Microsoft Visual Studio\Vc98"\include /c comport.c
+comport.c
+ link /dll /export:comport_setup comport.obj "C:\Programme\Microsoft Visual Studio\Vc98"\lib\libc.lib "C:\Programme\Microsoft Visual Studio\Vc98"\lib\oldnames.lib "C:\Programme\Microsoft Visual Studio\Vc98"\lib\kernel32.lib "C:\Programme\pd"\bin\pd.lib
+Microsoft (R) Incremental Linker Version 6.00.8168
+Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
+
+ Bibliothek comport.lib und Objekt comport.exp wird erstellt
+ echo make pd_linux, pd_nt, pd_irix5, or pd_irix6
+make pd_linux, pd_nt, pd_irix5, or pd_irix6
+
+
+
+<h3>Ergebnisse</h3>
+vcmakefile.exe - 0 Fehler, 0 Warnung(en)
+</pre>
+</body>
+</html>