From 60b009c81ead63ca26e433f92348669a530b51d3 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Wed, 13 Mar 2013 22:47:43 +0100 Subject: [PATCH] Build mutest manual directly to the build dir --- Makefile | 5 +- source/proj/mutest/index.html | 1 - source/proj/mutest/manual.html | 909 ----- source/proj/mutest/manual.pdf | 6874 -------------------------------- 4 files changed, 3 insertions(+), 7786 deletions(-) delete mode 120000 source/proj/mutest/index.html delete mode 100644 source/proj/mutest/manual.html delete mode 100644 source/proj/mutest/manual.pdf diff --git a/Makefile b/Makefile index 433bb14..bd8bad8 100644 --- a/Makefile +++ b/Makefile @@ -59,8 +59,9 @@ upload: html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html - cd source/proj/mutest/repo && make doc && cp -v manual.html manual.pdf .. - rsync -a --delete --exclude repo source/proj/mutest/ build/html/proj/mutest + cd source/proj/mutest/repo && make doc && \ + rsync -a --delete manual.* ../releases ../../../../build/html/proj/mutest/ && \ + ln -fs manual.html ../../../../build/html/proj/mutest/index.html rsync -a --delete source/proj/eventxx/ build/html/proj/eventxx rsync -a --delete source/proj/mutt-nntp-debian/files/ build/html/proj/mutt-nntp-debian/files rsync -a --delete source/proj/sadba/files/ build/html/proj/sadba/files diff --git a/source/proj/mutest/index.html b/source/proj/mutest/index.html deleted file mode 120000 index 084d26d..0000000 --- a/source/proj/mutest/index.html +++ /dev/null @@ -1 +0,0 @@ -manual.html \ No newline at end of file diff --git a/source/proj/mutest/manual.html b/source/proj/mutest/manual.html deleted file mode 100644 index 0221ff4..0000000 --- a/source/proj/mutest/manual.html +++ /dev/null @@ -1,909 +0,0 @@ - - - - - - -mutest - A simple micro unit testing framework for C - - - - - - -
-

mutest - A simple micro unit testing framework for C

- --- - - - - - - - - - - - -
Author:Leandro Lucarella
Contact:llucax@gmail.com
Version:1.0
Date:2013-02-17
Copyright:Leandro Lucarella (2008), released under the BOLA license
-
-

Abstract

-

mutest is a micro unit testing framework for C (with some -C++ support). It's mostly an idea (it even comes with -2 implementations of the idea!) with the goal of being easy to use -(just write your test cases grouped in test suites and you're -set) and so small and simple that you don't mind to copy the files to -your project and just use it (i.e., no dependencies).

-

The idea is simple: a source file is a test suite, a function is -a test case (special functions can be used for test suite -initialization and termination), which can can have several checks. -Checks comes in 2 flavors, one that only prints an error, and one that -terminates the current test case too. A (normally) automated test -program run all the test suites and print some stats. It fails -(returns non-zero) if any test suite fails.

-

- -

-
- -
-

1.   Installation

-

Download the latest distribution tarball and uncompress it.

-

You can also download any release from the releases directory or get it -using Git directly from the Git repository.

-

You can get this manual too, or a PDF version of it.

-

To actually install mutest run:

-
-$ make install
-
-

Default installation path is /usr/local (because of that, you'll probably -need superuser privileges to install to the default location). You can override -that by passing the prefix make variable, for example:

-
-$ make prefix=/opt/mutest install
-
-

If you want to install just the docs, you can do:

-
-$ make install-doc
-
-

Or even install-readme, install-html or install-pdf if you are too -picky.

-

If you want to install just one particular implementation, to can use the -install-c and install-py targets.

-
-
-

2.   Quick Sample

-

You can find some samples in the sample directory.

-

This is an example taken from there. A simple module called factorial.c -with its corresponding test suite (factorial_test.c).

-

You can see some C++ support in the exception_test.cpp test suite.

-
-

2.1.   factorial.c

-
-/*
- * This file is part of mutest, a simple micro unit testing framework for C.
- *
- * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
- * under the BOLA license, please see the LICENSE file or visit:
- * http://blitiri.com.ar/p/bola/
- *
- * This is an example module that calculates a factorial.
- *
- * Please, read the README file for more details.
- */
-
-unsigned factorial(unsigned x) {
-        if (x <= 1)
-                return 1;
-        return x * factorial(x-1);
-}
-
-
-
-

2.2.   factorial_test.c

-
-/*
- * This file is part of mutest, a simple micro unit testing framework for C.
- *
- * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
- * under the BOLA license, please see the LICENSE file or visit:
- * http://blitiri.com.ar/p/bola/
- *
- * This is the factorial module test suite. Each (public) function starting
- * with mu_test will be picked up by mkmutest as a test case.
- *
- * Please, read the README file for more details.
- */
-
-#include "factorial.h"
-
-#include "../mutest.h"
-
-void mu_test_factorial_zero() {
-        unsigned x = factorial(0);
-        mu_check(x == 1);
-}
-
-void mu_test_factorial_one() {
-        unsigned x = factorial(1);
-        /* this test is wrong on purpose, to see how it fails */
-        mu_check(x == 2);
-}
-
-void mu_test_factorial_positive() {
-        unsigned x = factorial(2);
-        /* this test is wrong on purpose, to see how it fails */
-        mu_check(x == 3);
-
-        x = factorial(3);
-        /* we don't want to continue if this fails, because the next result
-         * depends on this one. This one will succeed. */
-        mu_ensure(x == 6);
-
-        x = factorial(x);
-        mu_check(x == 720);
-
-        x = factorial(4);
-        mu_ensure(x == 6); /* same as before, but this one will fail. */
-
-        x = factorial(x-15); /* and this will never be executed */
-        mu_check(x == 362881); /* but if excecuted, will fail */
-}
-
-
-
-

2.3.   exception_test.cpp

-
-/*
- * This file is part of mutest, a simple micro unit testing framework for C.
- *
- * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
- * under the BOLA license, please see the LICENSE file or visit:
- * http://blitiri.com.ar/p/bola/
- *
- * This is a C++ module test suite. It shows how to use checks involving
- * exceptions.
- *
- * Please, read the README file for more details.
- */
-
-#include <stdexcept> // std::out_of_range
-#include <vector> // std::vector
-
-#include "../mutest.h"
-
-extern "C" {
-
-void mu_test_exceptions() {
-        std::vector<int> v(1);
-        // ok
-        mu_check(v.at(0) == 0);
-        // throws! This fails
-        mu_check(v.at(1) == 0);
-        // ok, we expect the exception to be thrown, and it does
-        mu_echeck(std::out_of_range, v.at(1));
-        // fails! We expect this to throw, but it doesn't
-        mu_echeck(std::out_of_range, v.at(0));
-        // fails again, but this time the show is over (note the "ensure")
-        mu_eensure(std::out_of_range, v.at(0));
-        // this will never be executed (it should fail if it is)
-        mu_check(v.empty());
-}
-
-} // extern "C"
-
-
-
-
-

3.   Concepts

-

mutest is about 4 simple concepts: test program, test suite, test -case and checks. Well, to be honest you probably will need test suite -initialization and termination too =)

-
-

3.1.   Test Program

-

A test program is the higher level unit of mutest. The test program is -the one in charge of running all your tests. Probably one of the more important -features of mutest is that you are not supposed to bother about the test -program. So, different implementations have different ways to tackle this. -Some need more or less interactions from your part, and each have their pros -and cons.

-

But this is all you need to know for now, for more details see how the test -program is implemented by your implementation of choice.

-
-
-

3.2.   Test Suite

-

A test suite is the higher level unit of mutest that you should -care about =). Is not much more than a way to group test cases. Code-wise, -a test suite is a C (or C++) module (or compilation unit). Not clear enough? -A unit test is an object file (could be a shared object depending on the -implementation). This module should have one or more test cases and it -could have any number (including zero) of initialization and termination -functions.

-

A test suite, is inspected by the test program for test cases and -initialization and termination functions, and run them.

-

A test suite fail if one or more test cases fail, and it's skipped if one or -more initialization functions fail (or, depending on the implementation, if -the test suite can't be loaded at all).

-
-
-

3.3.   Test Case

-

A test case is just a plain function with a special signature and name. -A test case function name must start with mu_test, and take no arguments -and return nothing. For example:

-
-void mu_test_something(void);
-
-

A test case (probably) only make sense if it has checks. A test case succeed -only if all its checks succeed too.

-

Test are executed in an implementation-dependant order, but usually the -default order is alphabetical.

-
-
-

3.4.   Checks

-

Checks are assertions that a test case must pass (a boolean expression that -must evaluate to true). There are 2 big flavors of checks: check and -ensure. check just print an error (and mark the test case as -failed) and ensure halt the test case execution, jumping to the next -one.

-

For better C++ support there are check macros that assert that a specified -exception is thrown (instead of check for a boolean expression to evaluate to -true).

-

You can take a look at the reference to see the different flavors of check -macros in more detail.

-
-
-

3.5.   Initialization

-

Sometimes you need to setup some environment shared between all the test -cases in a test suite. You can use initialization functions for this.

-

An initialization function, like a test case, is a plain C function with -a special name and signature. The name must start with mu_init and it must -take no arguments, and return an error code (0 being success). For -example:

-
-int mu_init_something(void);
-
-

All initialization functions are executed before any test case, in an -implementation-dependant order, and if one of them fail (returns non-zero), -the whole test suite is skipped immediately.

-
-
-

3.6.   Termination

-

Termination functions are just like initialization functions, but they're -executed after the test cases, their names start with mu_term and -they return nothing. For example:

-
-void mu_term_something(void);
-
-
-
-
-

4.   C++ Support

-

You can use mutest with C++, the only care you must take is that, because of -C++ name mangling (and mutest relaying on function names), you must -declare your test cases and initialization and termination functions as -extern "C" (see exception_test.cpp for an example).

-

Checks become exception-safe when using mutest with a C++ compiler, and -2 extra checks designed for C++ get defined (mu_echeck() and -mu_eensure()). They assert that an expression throws a particular exception.

-
-
-

5.   Implementations

-

There are 2 big groups of possible implementations that I can think -of: static and dynamic.

-

mutest comes with one implementation of each group.

-
-

5.1.   Static Implementations

-

Static implementations can be only written in C/C++ (or other language that is -link-compatible with C, like the D Programming Language, but since one of -the main goals of mutest is avoid unnecessary dependencies, you probably -don't want to depend on an extra language/compiler to run your tests =).

-

The main advantage is better debugging support, because you can run the test -program in a standard debugger and see what happens with test cases very -naturally.

-

The main disadvantage is, the test suites must be figured out in -compile-time, usually using some kind of code generation (if you want to -avoid writing repetitive code yourself). There's also a limitation in the test -case, initialization and termination functions names: they should be unique -for all the test program.

-
-

5.1.1.   C implementation

-

mutest comes with a C static implementation. Only 3 files are needed: -mutest.c (the user-independent part of the test program), mkmutest -(a bash script for generating the user-dependent part of the test program) -and mutest.h (the header file that test suites should include).

-

You can copy this 3 files to your project or install them at system-level and -use them globally.

-

The procedure is simple, You should compile you test suites, mutest.c -and the generated output of mkmutest as object files and link them -together.

-

For example:

-
-$ cc -c -o mutest.o mutest.c
-$ cc -c -o test1.o test1.c
-$ cc -c -o test2.o test2.c
-$ mkmutest mutest.h test1.o test2.o | cc -xc -c -o runmutest.o -
-$ cc -o testprg mutest.o test1.o test2.o runmutest.o
-
-

Then you can run the test program invoking it with no arguments:

-
-$ ./testprg
-
-
-

5.1.1.1.   mkmutest Invocation

-

This small script take 1 mandatory positional argument: the path to the -mutest.h file. All remaining positional arguments should be object files -representing test suites.

-
-
-

5.1.1.2.   Test Program Invocation

-

The test program can be invoked without arguments, but can take some extra -options:

-
-
-v
-

Be verbose. This is accumulative, when you add extra -v you will -get extra verbosity.

-

By default, you just get failed checks printed. If you use a single --v, a summary of failed/passed test suites, test cases and -checks will be printed. If an extra -v is used, you'll see the current -test suite being executed. Another -v and you'll get the current -test case, and another one, and you'll get each check.

-
-
-
-
-

5.1.1.3.   Dependencies

-

Even when dependencies are kept minimal, there always be a few ;)

-

To use this implementation you just need:

-
    -
  • A C compiler (you already needed that, so...)
  • -
  • The nm program (from GNU Binutils, included in virtually any *NIX)
  • -
  • The GNU Bash shell interpreter (also included in virtually any *NIX)
  • -
-
-
-
-
-

5.2.   Dynamic Implementations

-

Dynamic implementations, on the other hand, can be written in any language that -can access to shared objects. The idea is to inspect a shared object for test -suites and run them, without requiring any information about test suites -at compile time.

-

There are several advantages in this kind of implementations. The dynamic -nature let you completely separate the test program from the user-written -test suites and you can choose at run-time what test suites to execute -by just selecting the correct shared objects. Also, test case, -initialization and termination functions names only have to be unique in the -scope of the test suites, because test suites are completely isolated in -separate shared objects.

-

But everything comes at a price, and the higher price to pay is -debuggability. It's a little harder to plug a debugger to a shared object.

-
-

5.2.1.   Python implementation

-

This implementation is much simpler and elegant than the C implementation. -Only 2 files are needed: mutest (test program written in Python using -ctypes module to access the shared object symbols) and mutest.h (the -header file that test suites should include).

-

Since both implementations provided by mutest share the same mutest.h, -you should define the MUTEST_PY macro when compiling the test suites if -you will run them using this implementation.

-

As with the C implementation, you can copy this 2 files to your project or -install them at system-level and use them globally.

-

The procedure is even simpler than the C implementation: compile and link -you test suites as shared objects and then run the mutest program -passing the shared objects as arguments. For example:

-
-$ cc -c -fPIC -DMUTEST_PY -o test1.o test1.c
-$ cc -shared -o test1.so test1.o
-$ cc -c -fPIC -DMUTEST_PY -o test2.o test2.c
-$ cc -shared -o test2.so test2.o
-$ mutest test1.so test2.so
-
-

That's it.

-
-

5.2.1.1.   mutest Invocation

-

mutest program takes test suites shared objects to run as positional -arguments. It accepts the same options as the C implementation's test -program and some extra options are accepted too:

-
-
--verbose
-
Alias for -v.
-
-q, --quiet
-
Be quiet (no output is shown at all).
-
-s, --search
-
Search for test suites (*.so) in the current directory and add them -to the list of test suites to run.
-
-h, --help
-
Show a help message and exit.
-
-
-
-

5.2.1.2.   Dependencies

-

As with the C implementation, some minor dependencies are needed:

-
    -
  • Python (2.5 or later)
  • -
  • The nm program (from GNU Binutils, included in virtually any *NIX)
  • -
-

You will need a C compiler for building the test suites too, but technically -is not needed by mutest itself ;)

-
-
-
-
-
-

6.   Reference

-
-

6.1.   mu_check()

-
-
Synopsis
-
mu_check(expression)
-
Description
-
Check that the expression evaluates to true. Continue with the -test case if fail.
-
Availability
-
Always
-
Example
-
-void mu_test(void)
-{
-    mu_check(5 == 4); /* fail */
-    mu_check(5 == 5); /* excecuted, pass */
-}
-
-
-
-
-
-

6.2.   mu_ensure()

-
-
Synopsis
-
mu_ensure(expression)
-
Description
-
Check that the expression evaluates to true. Interrupt the test -case if fail.
-
Availability
-
Always
-
Example
-
-void mu_test(void)
-{
-    mu_ensure(5 == 4); /* fail */
-    mu_check(5 == 5); /* not excecuted */
-}
-
-
-
-
-
-

6.3.   mu_echeck()

-
-
Synopsis
-
mu_echeck(class, expression)
-
Description
-
Check that the expression throws a specific exception class (or -subclass). Continue with the test case if fail.
-
Availability
-
C++ only
-
Example
-
-#include <stdexcept>
-
-extern "C"
-{
-    void mu_test(void)
-    {
-        mu_echeck(std::exception, true); /* fail */
-        mu_echeck(std::exception,
-                throw std::runtime_error("!")); /* excecuted, pass */
-    }
-}
-
-
-
-
-
-

6.4.   mu_eensure()

-
-
Synopsis
-
mu_eensure(class, expression)
-
Description
-
Check that the expression throws a specific exception class (or -subclass). Interrupt the test case if fail.
-
Availability
-
C++ only
-
Example
-
-#include <stdexcept>
-
-extern "C"
-{
-    void mu_test(void)
-    {
-        mu_eensure(std::exception, true); /* fail */
-        mu_echeck(std::exception,
-                throw std::runtime_error("!")); /* not excecuted */
-    }
-}
-
-
-
-
-
-
-

7.   About

-

This manual was written using reStructuredText.

- - - - - -
-
- - diff --git a/source/proj/mutest/manual.pdf b/source/proj/mutest/manual.pdf deleted file mode 100644 index 4a18909..0000000 --- a/source/proj/mutest/manual.pdf +++ /dev/null @@ -1,6874 +0,0 @@ -%PDF-1.4 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -% 'BasicFonts': class PDFDictionary -1 0 obj -% The standard fonts dictionary -<< /F1 2 0 R - /F2 3 0 R - /F3 4 0 R - /F4 7 0 R - /F5 57 0 R - /F6 171 0 R - /F7 174 0 R >> -endobj -% 'F1': class PDFType1Font -2 0 obj -% Font Helvetica -<< /BaseFont /Helvetica - /Encoding /WinAnsiEncoding - /Name /F1 - /Subtype /Type1 - /Type /Font >> -endobj -% 'F2': class PDFType1Font -3 0 obj -% Font Helvetica-BoldOblique -<< /BaseFont /Helvetica-BoldOblique - /Encoding /WinAnsiEncoding - /Name /F2 - /Subtype /Type1 - /Type /Font >> -endobj -% 'F3': class PDFType1Font -4 0 obj -% Font Helvetica-Bold -<< /BaseFont /Helvetica-Bold - /Encoding /WinAnsiEncoding - /Name /F3 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER1': class PDFDictionary -5 0 obj -<< /A << /S /URI - /Type /Action - /URI (mailto:llucax@gmail.com) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 153.7323 - 680.7736 - 526.5827 - 692.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER2': class PDFDictionary -6 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://blitiri.com.ar/p/bola/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 357.1723 - 635.7736 - 386.6323 - 647.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'F4': class PDFType1Font -7 0 obj -% Font Helvetica-Oblique -<< /BaseFont /Helvetica-Oblique - /Encoding /WinAnsiEncoding - /Name /F4 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER3': class PDFDictionary -8 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://en.wikipedia.org/wiki/Unit_testing) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 141.0429 - 587.7736 - 192.1829 - 599.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER4': class LinkAnnotation -9 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 768.5236 - 0 ] - /Rect [ 317.2029 - 587.7736 - 372.2329 - 599.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER5': class LinkAnnotation -10 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 91.59291 - 575.7736 - 167.1729 - 587.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER6': class LinkAnnotation -11 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 441.7529 - 575.7736 - 489.5529 - 587.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER7': class LinkAnnotation -12 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 73.25291 - 563.7736 - 121.0529 - 575.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER8': class LinkAnnotation -13 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 223.8629 - 539.7736 - 263.8829 - 551.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER9': class LinkAnnotation -14 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 333.9229 - 539.7736 - 376.7229 - 551.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER10': class LinkAnnotation -15 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 62.69291 - 527.7736 - 102.7129 - 539.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER11': class LinkAnnotation -16 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 105.4929 - 527.7736 - 159.9529 - 539.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER12': class LinkAnnotation -17 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 179.4129 - 527.7736 - 228.8729 - 539.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER13': class LinkAnnotation -18 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 363.3729 - 527.7736 - 394.4929 - 539.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER14': class LinkAnnotation -19 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 400.0529 - 527.7736 - 436.1729 - 539.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER15': class LinkAnnotation -20 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 348.9529 - 515.7736 - 391.7529 - 527.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER16': class LinkAnnotation -21 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 62.69291 - 503.7736 - 121.6029 - 515.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER17': class LinkAnnotation -22 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 168.2929 - 503.7736 - 216.0929 - 515.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER18': class LinkAnnotation -23 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 450.0729 - 503.7736 - 492.8729 - 515.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page1': class PDFPage -24 0 obj -% Page dictionary -<< /Annots [ 5 0 R - 6 0 R - 8 0 R - 9 0 R - 10 0 R - 11 0 R - 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 ] - /Contents 255 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER19': class LinkAnnotation -25 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 99 0 R - /XYZ - 62.69291 - 204.0236 - 0 ] - /Rect [ 62.69291 - 723.7736 - 132.1629 - 735.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER20': class LinkAnnotation -26 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 99 0 R - /XYZ - 62.69291 - 204.0236 - 0 ] - /Rect [ 527.0227 - 723.7736 - 532.5827 - 735.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER21': class LinkAnnotation -27 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 108 0 R - /XYZ - 62.69291 - 559.4236 - 0 ] - /Rect [ 62.69291 - 705.7736 - 145.5129 - 717.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER22': class LinkAnnotation -28 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 108 0 R - /XYZ - 62.69291 - 559.4236 - 0 ] - /Rect [ 527.0227 - 705.7736 - 532.5827 - 717.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER23': class LinkAnnotation -29 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 108 0 R - /XYZ - 62.69291 - 460.4236 - 0 ] - /Rect [ 82.69291 - 687.7736 - 150.5029 - 699.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER24': class LinkAnnotation -30 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 108 0 R - /XYZ - 62.69291 - 460.4236 - 0 ] - /Rect [ 527.0227 - 687.7736 - 532.5827 - 699.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER25': class LinkAnnotation -31 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 109 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 82.69291 - 669.7736 - 172.1829 - 681.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER26': class LinkAnnotation -32 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 109 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 527.0227 - 669.7736 - 532.5827 - 681.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER27': class LinkAnnotation -33 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 82.69291 - 651.7736 - 191.0929 - 663.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER28': class LinkAnnotation -34 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 527.0227 - 651.7736 - 532.5827 - 663.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER29': class LinkAnnotation -35 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 269.8236 - 0 ] - /Rect [ 62.69291 - 633.7736 - 124.9329 - 645.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER30': class LinkAnnotation -36 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 269.8236 - 0 ] - /Rect [ 527.0227 - 633.7736 - 532.5827 - 645.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER31': class LinkAnnotation -37 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 206.8236 - 0 ] - /Rect [ 82.69291 - 615.7736 - 168.2829 - 627.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER32': class LinkAnnotation -38 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 206.8236 - 0 ] - /Rect [ 527.0227 - 615.7736 - 532.5827 - 627.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER33': class LinkAnnotation -39 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 82.69291 - 597.7736 - 152.7329 - 609.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER34': class LinkAnnotation -40 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 527.0227 - 597.7736 - 532.5827 - 609.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER35': class LinkAnnotation -41 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 609.0236 - 0 ] - /Rect [ 82.69291 - 579.7736 - 153.2829 - 591.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER36': class LinkAnnotation -42 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 609.0236 - 0 ] - /Rect [ 527.0227 - 579.7736 - 532.5827 - 591.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER37': class LinkAnnotation -43 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 465.8236 - 0 ] - /Rect [ 82.69291 - 561.7736 - 141.0529 - 573.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER38': class LinkAnnotation -44 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 465.8236 - 0 ] - /Rect [ 527.0227 - 561.7736 - 532.5827 - 573.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER39': class LinkAnnotation -45 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 345.8236 - 0 ] - /Rect [ 82.69291 - 543.7736 - 159.9529 - 555.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER40': class LinkAnnotation -46 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 345.8236 - 0 ] - /Rect [ 527.0227 - 543.7736 - 532.5827 - 555.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER41': class LinkAnnotation -47 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 178.6236 - 0 ] - /Rect [ 82.69291 - 525.7736 - 160.5029 - 537.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER42': class LinkAnnotation -48 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 178.6236 - 0 ] - /Rect [ 527.0227 - 525.7736 - 532.5827 - 537.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER43': class LinkAnnotation -49 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 62.69291 - 507.7736 - 139.3829 - 519.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER44': class LinkAnnotation -50 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 527.0227 - 507.7736 - 532.5827 - 519.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER45': class LinkAnnotation -51 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 648.0236 - 0 ] - /Rect [ 62.69291 - 489.7736 - 158.8329 - 501.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER46': class LinkAnnotation -52 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 648.0236 - 0 ] - /Rect [ 527.0227 - 489.7736 - 532.5827 - 501.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER47': class LinkAnnotation -53 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 579.0236 - 0 ] - /Rect [ 82.69291 - 471.7736 - 208.8629 - 483.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER48': class LinkAnnotation -54 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 579.0236 - 0 ] - /Rect [ 527.0227 - 471.7736 - 532.5827 - 483.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER49': class LinkAnnotation -55 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 435.0236 - 0 ] - /Rect [ 102.6929 - 453.7736 - 213.8529 - 465.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER50': class LinkAnnotation -56 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 435.0236 - 0 ] - /Rect [ 527.0227 - 453.7736 - 532.5827 - 465.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'F5': class PDFType1Font -57 0 obj -% Font Courier -<< /BaseFont /Courier - /Encoding /WinAnsiEncoding - /Name /F5 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER51': class LinkAnnotation -58 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 165.6236 - 0 ] - /Rect [ 122.6929 - 435.7736 - 164.3929 - 447.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER52': class LinkAnnotation -59 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 165.6236 - 0 ] - /Rect [ 164.3929 - 435.7736 - 218.3929 - 447.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER53': class LinkAnnotation -60 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 165.6236 - 0 ] - /Rect [ 218.3929 - 435.7736 - 263.9729 - 447.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER54': class LinkAnnotation -61 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 165.6236 - 0 ] - /Rect [ 527.0227 - 435.7736 - 532.5827 - 447.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER55': class LinkAnnotation -62 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 111.6236 - 0 ] - /Rect [ 122.6929 - 417.7736 - 273.3229 - 429.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER56': class LinkAnnotation -63 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 111.6236 - 0 ] - /Rect [ 527.0227 - 417.7736 - 532.5827 - 429.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER57': class LinkAnnotation -64 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 672.0236 - 0 ] - /Rect [ 122.6929 - 399.7736 - 228.3129 - 411.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER58': class LinkAnnotation -65 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 672.0236 - 0 ] - /Rect [ 527.0227 - 399.7736 - 532.5827 - 411.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER59': class LinkAnnotation -66 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 558.0236 - 0 ] - /Rect [ 82.69291 - 381.7736 - 222.7429 - 393.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER60': class LinkAnnotation -67 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 558.0236 - 0 ] - /Rect [ 527.0227 - 381.7736 - 532.5827 - 393.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER61': class LinkAnnotation -68 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 390.0236 - 0 ] - /Rect [ 102.6929 - 363.7736 - 237.7629 - 375.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER62': class LinkAnnotation -69 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 390.0236 - 0 ] - /Rect [ 527.0227 - 363.7736 - 532.5827 - 375.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER63': class LinkAnnotation -70 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 129.8236 - 0 ] - /Rect [ 122.6929 - 345.7736 - 164.3929 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER64': class LinkAnnotation -71 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 129.8236 - 0 ] - /Rect [ 164.3929 - 345.7736 - 206.3929 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER65': class LinkAnnotation -72 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 129.8236 - 0 ] - /Rect [ 206.3929 - 345.7736 - 251.9729 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER66': class LinkAnnotation -73 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 207 0 R - /XYZ - 62.69291 - 129.8236 - 0 ] - /Rect [ 527.0227 - 345.7736 - 532.5827 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER67': class LinkAnnotation -74 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 633.0236 - 0 ] - /Rect [ 122.6929 - 327.7736 - 228.3129 - 339.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER68': class LinkAnnotation -75 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 633.0236 - 0 ] - /Rect [ 527.0227 - 327.7736 - 532.5827 - 339.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER69': class LinkAnnotation -76 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 537.0236 - 0 ] - /Rect [ 62.69291 - 309.7736 - 127.7229 - 321.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER70': class LinkAnnotation -77 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 537.0236 - 0 ] - /Rect [ 527.0227 - 309.7736 - 532.5827 - 321.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER71': class LinkAnnotation -78 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 504.0236 - 0 ] - /Rect [ 82.69291 - 291.7736 - 107.7129 - 303.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER72': class LinkAnnotation -79 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 504.0236 - 0 ] - /Rect [ 107.7129 - 291.7736 - 167.7129 - 303.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER73': class LinkAnnotation -80 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 504.0236 - 0 ] - /Rect [ 527.0227 - 291.7736 - 532.5827 - 303.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER74': class LinkAnnotation -81 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 286.8236 - 0 ] - /Rect [ 82.69291 - 273.7736 - 107.7129 - 285.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER75': class LinkAnnotation -82 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 286.8236 - 0 ] - /Rect [ 107.7129 - 273.7736 - 173.7129 - 285.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER76': class LinkAnnotation -83 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 286.8236 - 0 ] - /Rect [ 527.0227 - 273.7736 - 532.5827 - 285.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER77': class LinkAnnotation -84 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 82.69291 - 255.7736 - 107.7129 - 267.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER78': class LinkAnnotation -85 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 107.7129 - 255.7736 - 173.7129 - 267.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER79': class LinkAnnotation -86 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Rect [ 521.4627 - 255.7736 - 532.5827 - 267.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER80': class LinkAnnotation -87 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 463.8236 - 0 ] - /Rect [ 82.69291 - 237.7736 - 107.7129 - 249.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER81': class LinkAnnotation -88 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 463.8236 - 0 ] - /Rect [ 107.7129 - 237.7736 - 179.7129 - 249.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER82': class LinkAnnotation -89 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 463.8236 - 0 ] - /Rect [ 521.4627 - 237.7736 - 532.5827 - 249.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER83': class LinkAnnotation -90 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 162.6236 - 0 ] - /Rect [ 62.69291 - 219.7736 - 108.2529 - 231.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER84': class LinkAnnotation -91 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 162.6236 - 0 ] - /Rect [ 521.4627 - 219.7736 - 532.5827 - 231.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER85': class PDFDictionary -92 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://proj.llucax.com.ar/home/mutest/releases/mutest.tar.gz) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 126.6129 - 165.7736 - 234.4329 - 177.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER86': class PDFDictionary -93 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://proj.llucax.com.ar/home/mutest/releases/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 273.0328 - 147.7736 - 357.2828 - 159.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER87': class PDFDictionary -94 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://git.or.cz/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 425.2127 - 147.7736 - 442.0527 - 159.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER88': class PDFDictionary -95 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://git.llucax.com.ar/w/software/mutest.git) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 519.8027 - 147.7736 - 531.3027 - 159.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER89': class PDFDictionary -96 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://git.llucax.com.ar/w/software/mutest.git) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 62.69291 - 135.7736 - 106.5929 - 147.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER90': class PDFDictionary -97 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://proj.llucax.com.ar/home/mutest/manual.html) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 118.8429 - 117.7736 - 172.7529 - 129.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER91': class PDFDictionary -98 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://proj.llucax.com.ar/home/mutest/manual.pdf) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 212.2229 - 117.7736 - 270.0129 - 129.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page2': class PDFPage -99 0 obj -% Page dictionary -<< /Annots [ 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 - 38 0 R - 39 0 R - 40 0 R - 41 0 R - 42 0 R - 43 0 R - 44 0 R - 45 0 R - 46 0 R - 47 0 R - 48 0 R - 49 0 R - 50 0 R - 51 0 R - 52 0 R - 53 0 R - 54 0 R - 55 0 R - 56 0 R - 58 0 R - 59 0 R - 60 0 R - 61 0 R - 62 0 R - 63 0 R - 64 0 R - 65 0 R - 66 0 R - 67 0 R - 68 0 R - 69 0 R - 70 0 R - 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 ] - /Contents 256 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER92': class LinkAnnotation -100 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 243.4995 - 584.1736 - 311.2995 - 596.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER93': class PDFDictionary -101 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://git.llucax.com.ar/w/software/mutest.git?a=tree;f=sample;h=d8ad4dd9c3428fef5963107c82ab6a5e34ec6e00;hb=HEAD) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 215.5429 - 521.1736 - 250.5529 - 533.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER94': class LinkAnnotation -102 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 108 0 R - /XYZ - 62.69291 - 463.4236 - 0 ] - /Rect [ 342.9128 - 503.1736 - 389.4027 - 515.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER95': class LinkAnnotation -103 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 491.6427 - 503.1736 - 531.6627 - 515.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER96': class LinkAnnotation -104 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 109 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 66.02291 - 491.1736 - 130.4929 - 503.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER97': class LinkAnnotation -105 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 768.5236 - 0 ] - /Rect [ 148.2929 - 473.1736 - 206.1029 - 485.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER98': class LinkAnnotation -106 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 233.3429 - 473.1736 - 316.7229 - 485.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER99': class LinkAnnotation -107 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 319.5029 - 473.1736 - 359.5229 - 485.1736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page3': class PDFPage -108 0 obj -% Page dictionary -<< /Annots [ 100 0 R - 101 0 R - 102 0 R - 103 0 R - 104 0 R - 105 0 R - 106 0 R - 107 0 R ] - /Contents 257 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Page4': class PDFPage -109 0 obj -% Page dictionary -<< /Contents 258 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER100': class LinkAnnotation -110 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 221.7262 - 231.5736 - 278.3317 - 243.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER101': class LinkAnnotation -111 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 284.3673 - 231.5736 - 324.8628 - 243.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER102': class LinkAnnotation -112 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 330.8983 - 231.5736 - 374.6494 - 243.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER103': class LinkAnnotation -113 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 394.585 - 231.5736 - 425.705 - 243.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER104': class LinkAnnotation -114 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 145.5029 - 219.5736 - 185.5229 - 231.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER105': class LinkAnnotation -115 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 188.3029 - 219.5736 - 242.7629 - 231.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER106': class LinkAnnotation -116 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 262.2229 - 219.5736 - 314.4629 - 231.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER107': class LinkAnnotation -117 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 197.8378 - 147.5736 - 273.4328 - 159.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER108': class LinkAnnotation -118 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 62.69291 - 105.5736 - 133.2729 - 117.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page5': class PDFPage -119 0 obj -% Page dictionary -<< /Annots [ 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 ] - /Contents 259 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER109': class LinkAnnotation -120 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 106.454 - 717.7736 - 153.6195 - 729.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER110': class LinkAnnotation -121 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 435.7486 - 705.7736 - 503.5486 - 717.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER111': class LinkAnnotation -122 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 213.5022 - 693.7736 - 261.9187 - 705.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER112': class LinkAnnotation -123 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 480.9027 - 693.7736 - 532.2745 - 705.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER113': class LinkAnnotation -124 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 82.15291 - 681.7736 - 134.3929 - 693.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER114': class LinkAnnotation -125 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 203.4134 - 663.7736 - 262.3493 - 675.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER115': class LinkAnnotation -126 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 276.8122 - 663.7736 - 324.638 - 675.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER116': class LinkAnnotation -127 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 344.111 - 663.7736 - 398.5839 - 675.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER117': class LinkAnnotation -128 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 418.0568 - 663.7736 - 470.3097 - 675.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER118': class LinkAnnotation -129 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 197.9404 - 633.7736 - 246.4823 - 645.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER119': class LinkAnnotation -130 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 403.6499 - 633.7736 - 458.4808 - 645.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER120': class LinkAnnotation -131 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 276.5178 - 508.5736 - 307.6378 - 520.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER121': class LinkAnnotation -132 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 169.9729 - 478.5736 - 237.7729 - 490.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER122': class LinkAnnotation -133 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 192.2605 - 430.5736 - 235.0875 - 442.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER123': class LinkAnnotation -134 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 448.9277 - 418.5736 - 491.9177 - 430.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER124': class LinkAnnotation -135 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 153.3029 - 406.5736 - 196.1029 - 418.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER125': class LinkAnnotation -136 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 768.5236 - 0 ] - /Rect [ 109.3076 - 388.5736 - 167.6023 - 400.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER126': class LinkAnnotation -137 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 216 0 R - /XYZ - 62.69291 - 540.5236 - 0 ] - /Rect [ 181.1029 - 358.5736 - 226.1229 - 370.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER127': class LinkAnnotation -138 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 396.7492 - 310.5736 - 446.4704 - 322.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER128': class LinkAnnotation -139 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 467.2915 - 310.5736 - 508.2721 - 322.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER129': class LinkAnnotation -140 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 205.5656 - 280.5736 - 246.9262 - 292.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER130': class LinkAnnotation -141 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 286.2378 - 203.3736 - 326.5113 - 215.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER131': class LinkAnnotation -142 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 651.5236 - 0 ] - /Rect [ 357.292 - 203.3736 - 425.092 - 215.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER132': class LinkAnnotation -143 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 265.0029 - 191.3736 - 307.8029 - 203.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER133': class LinkAnnotation -144 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 225.6293 - 143.3736 - 280.4485 - 155.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER134': class LinkAnnotation -145 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 461.8341 - 143.3736 - 507.2134 - 155.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page6': class PDFPage -146 0 obj -% Page dictionary -<< /Annots [ 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 ] - /Contents 260 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER135': class PDFDictionary -147 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://en.wikipedia.org/wiki/Name_mangling) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 440.1822 - 726.7736 - 512.5727 - 738.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER136': class LinkAnnotation -148 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 335.8999 - 714.7736 - 386.117 - 726.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER137': class LinkAnnotation -149 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 406.7856 - 714.7736 - 462.4541 - 726.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER138': class LinkAnnotation -150 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 483.1227 - 714.7736 - 531.3741 - 726.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER139': class LinkAnnotation -151 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 207.0629 - 702.7736 - 293.2229 - 714.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER140': class LinkAnnotation -152 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 62.69291 - 684.7736 - 99.19956 - 696.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER141': class LinkAnnotation -153 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 442.8794 - 684.7736 - 477.166 - 696.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER142': class LinkAnnotation -154 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 144.6382 - 672.7736 - 206.7667 - 684.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER143': class LinkAnnotation -155 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 221 0 R - /XYZ - 62.69291 - 466.8236 - 0 ] - /Rect [ 227.7851 - 672.7736 - 290.0251 - 684.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER144': class PDFDictionary -156 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.digitalmars.com/d/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 82.83356 - 531.7736 - 207.0249 - 543.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER145': class LinkAnnotation -157 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 410.8127 - 501.7736 - 472.2477 - 513.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER146': class LinkAnnotation -158 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 231.6829 - 489.7736 - 279.4829 - 501.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER147': class LinkAnnotation -159 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 201.0699 - 471.7736 - 249.7487 - 483.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER148': class LinkAnnotation -160 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 516.4627 - 459.7736 - 532.0268 - 471.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER149': class LinkAnnotation -161 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 62.69291 - 447.7736 - 83.81291 - 459.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER150': class LinkAnnotation -162 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 89.37291 - 447.7736 - 143.8329 - 459.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER151': class LinkAnnotation -163 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 163.2929 - 447.7736 - 215.5329 - 459.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER152': class LinkAnnotation -164 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 438.4329 - 447.7736 - 494.5629 - 459.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER153': class LinkAnnotation -165 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 114.6935 - 390.7736 - 172.2204 - 402.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER154': class LinkAnnotation -166 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 516.4627 - 390.7736 - 531.1858 - 402.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER155': class LinkAnnotation -167 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 62.69291 - 378.7736 - 99.92291 - 390.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER156': class LinkAnnotation -168 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 268.4329 - 378.7736 - 316.2329 - 390.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER157': class LinkAnnotation -169 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 295.2208 - 342.7736 - 341.6568 - 354.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER158': class LinkAnnotation -170 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 159.9729 - 211.5736 - 218.8829 - 223.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'F6': class PDFType1Font -171 0 obj -% Font Courier-BoldOblique -<< /BaseFont /Courier-BoldOblique - /Encoding /WinAnsiEncoding - /Name /F6 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER159': class LinkAnnotation -172 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 312.2529 - 124.3736 - 357.2729 - 136.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page7': class PDFPage -173 0 obj -% Page dictionary -<< /Annots [ 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 - 172 0 R ] - /Contents 261 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'F7': class PDFType1Font -174 0 obj -% Font Courier-Bold -<< /BaseFont /Courier-Bold - /Encoding /WinAnsiEncoding - /Name /F7 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER160': class LinkAnnotation -175 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 215.6962 - 720.7736 - 249.9917 - 732.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER161': class LinkAnnotation -176 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 516.4627 - 720.7736 - 532.1871 - 732.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER162': class LinkAnnotation -177 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 82.69291 - 708.7736 - 108.8129 - 720.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER163': class LinkAnnotation -178 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 115.0634 - 708.7736 - 164.2445 - 720.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER164': class LinkAnnotation -179 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 184.395 - 708.7736 - 218.9855 - 720.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER165': class LinkAnnotation -180 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 491.8722 - 708.7736 - 531.8922 - 720.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER166': class LinkAnnotation -181 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 324.7428 - 696.7736 - 364.8628 - 708.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER167': class LinkAnnotation -182 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 468.8236 - 0 ] - /Rect [ 82.69291 - 684.7736 - 108.8129 - 696.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER168': class PDFDictionary -183 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.gnu.org/software/binutils/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 189.8229 - 585.7736 - 247.0529 - 597.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER169': class PDFDictionary -184 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.gnu.org/software/bash/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 105.7029 - 567.7736 - 156.2729 - 579.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER170': class LinkAnnotation -185 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 309.4145 - 510.7736 - 362.5369 - 522.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER171': class LinkAnnotation -186 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 142.7329 - 498.7736 - 190.5329 - 510.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER172': class LinkAnnotation -187 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 124.4966 - 468.7736 - 186.8404 - 480.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER173': class LinkAnnotation -188 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 286.4609 - 468.7736 - 337.6947 - 480.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER174': class LinkAnnotation -189 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 516.4627 - 468.7736 - 530.8658 - 480.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER175': class LinkAnnotation -190 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 62.69291 - 456.7736 - 91.8309 - 468.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER176': class LinkAnnotation -191 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 362.6707 - 456.7736 - 402.9287 - 468.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER177': class LinkAnnotation -192 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 348.8236 - 0 ] - /Rect [ 408.7267 - 456.7736 - 463.4247 - 468.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER178': class LinkAnnotation -193 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 181.6236 - 0 ] - /Rect [ 483.1227 - 456.7736 - 532.3447 - 468.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER179': class LinkAnnotation -194 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 327.7961 - 444.7736 - 372.9505 - 456.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER180': class LinkAnnotation -195 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 419.3594 - 444.7736 - 467.4282 - 456.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER181': class LinkAnnotation -196 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 437.5236 - 0 ] - /Rect [ 334.6208 - 357.7736 - 413.9194 - 369.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER182': class LinkAnnotation -197 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 119 0 R - /XYZ - 62.69291 - 209.8236 - 0 ] - /Rect [ 108.9742 - 345.7736 - 169.7869 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER183': class PDFDictionary -198 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.python.org/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 214.4795 - 345.7736 - 249.3408 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER184': class PDFDictionary -199 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://docs.python.org/library/ctypes.html) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 276.9721 - 345.7736 - 309.6035 - 357.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER185': class LinkAnnotation -200 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 205.6329 - 333.7736 - 253.4329 - 345.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER186': class LinkAnnotation -201 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 241.6229 - 303.7736 - 289.4229 - 315.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER187': class LinkAnnotation -202 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 437.5236 - 0 ] - /Rect [ 115.7408 - 285.7736 - 193.9934 - 297.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER188': class LinkAnnotation -203 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 437.5236 - 0 ] - /Rect [ 249.9341 - 255.7736 - 329.3128 - 267.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER189': class LinkAnnotation -204 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 436.1365 - 255.7736 - 487.0939 - 267.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER190': class LinkAnnotation -205 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 175.9009 - 100.5736 - 226.7128 - 112.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER191': class LinkAnnotation -206 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 113.6236 - 0 ] - /Rect [ 127.7329 - 88.57362 - 274.1329 - 100.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page8': class PDFPage -207 0 obj -% Page dictionary -<< /Annots [ 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 ] - /Contents 262 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER192': class LinkAnnotation -208 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 131.6029 - 676.7736 - 179.4029 - 688.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER193': class LinkAnnotation -209 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 426.1829 - 676.7736 - 473.9829 - 688.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER194': class LinkAnnotation -210 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 173 0 R - /XYZ - 62.69291 - 437.5236 - 0 ] - /Rect [ 114.3829 - 603.7736 - 192.1829 - 615.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER195': class PDFDictionary -211 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.python.org/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 85.69291 - 582.7736 - 119.6029 - 594.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER196': class PDFDictionary -212 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.gnu.org/software/binutils/) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 189.8229 - 564.7736 - 247.0529 - 576.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER197': class LinkAnnotation -213 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 768.0236 - 0 ] - /Rect [ 252.2129 - 549.7736 - 300.0129 - 561.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER198': class LinkAnnotation -214 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 375.4829 - 422.7736 - 418.2829 - 434.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER199': class LinkAnnotation -215 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 352.1429 - 205.5736 - 394.9429 - 217.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page9': class PDFPage -216 0 obj -% Page dictionary -<< /Annots [ 208 0 R - 209 0 R - 210 0 R - 211 0 R - 212 0 R - 213 0 R - 214 0 R - 215 0 R ] - /Contents 263 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER200': class LinkAnnotation -217 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 82.69291 - 671.7736 - 125.4929 - 683.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER201': class LinkAnnotation -218 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 516.4627 - 382.5736 - 530.8327 - 394.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER202': class LinkAnnotation -219 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 146 0 R - /XYZ - 62.69291 - 612.0236 - 0 ] - /Rect [ 82.69291 - 370.5736 - 106.5929 - 382.5736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER203': class PDFDictionary -220 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://docutils.sourceforge.net/rst.html) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 199.4029 - 124.3736 - 273.8729 - 136.3736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page10': class PDFPage -221 0 obj -% Page dictionary -<< /Annots [ 217 0 R - 218 0 R - 219 0 R - 220 0 R ] - /Contents 264 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 254 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'R222': class PDFCatalog -222 0 obj -% Document Root -<< /Outlines 224 0 R - /PageLabels 265 0 R - /PageMode /UseNone - /Pages 254 0 R - /Type /Catalog >> -endobj -% 'R223': class PDFInfo -223 0 obj -<< /Author (Leandro Lucarella) - /CreationDate (D:20130217192608-01'00') - /Creator (\(unspecified\)) - /Keywords () - /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (\(unspecified\)) - /Title (mutest - A simple micro unit testing framework for C) >> -endobj -% 'R224': class PDFOutlines -224 0 obj -<< /Count 37 - /First 225 0 R - /Last 253 0 R - /Type /Outlines >> -endobj -% 'Outline.0': class OutlineEntryObject -225 0 obj -<< /Dest [ 99 0 R - /XYZ - 62.69291 - 204.0236 - 0 ] - /Next 226 0 R - /Parent 224 0 R - /Title (\376\377\0001\000.\000\240\000\240\000\240\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.1': class OutlineEntryObject -226 0 obj -<< /Count 3 - /Dest [ 108 0 R - /XYZ - 62.69291 - 559.4236 - 0 ] - /First 227 0 R - /Last 229 0 R - /Next 230 0 R - /Parent 224 0 R - /Prev 225 0 R - /Title (\376\377\0002\000.\000\240\000\240\000\240\000Q\000u\000i\000c\000k\000 \000S\000a\000m\000p\000l\000e) >> -endobj -% 'Outline.30.0': class OutlineEntryObject -227 0 obj -<< /Dest [ 108 0 R - /XYZ - 62.69291 - 460.4236 - 0 ] - /Next 228 0 R - /Parent 226 0 R - /Title (\376\377\0002\000.\0001\000.\000\240\000\240\000\240\000f\000a\000c\000t\000o\000r\000i\000a\000l\000.\000c) >> -endobj -% 'Outline.30.1': class OutlineEntryObject -228 0 obj -<< /Dest [ 109 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Next 229 0 R - /Parent 226 0 R - /Prev 227 0 R - /Title (\376\377\0002\000.\0002\000.\000\240\000\240\000\240\000f\000a\000c\000t\000o\000r\000i\000a\000l\000_\000t\000e\000s\000t\000.\000c) >> -endobj -% 'Outline.30.2': class OutlineEntryObject -229 0 obj -<< /Dest [ 119 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Parent 226 0 R - /Prev 228 0 R - /Title (\376\377\0002\000.\0003\000.\000\240\000\240\000\240\000e\000x\000c\000e\000p\000t\000i\000o\000n\000_\000t\000e\000s\000t\000.\000c\000p\000p) >> -endobj -% 'Outline.2': class OutlineEntryObject -230 0 obj -<< /Count 6 - /Dest [ 119 0 R - /XYZ - 62.69291 - 269.8236 - 0 ] - /First 231 0 R - /Last 236 0 R - /Next 237 0 R - /Parent 224 0 R - /Prev 226 0 R - /Title (\376\377\0003\000.\000\240\000\240\000\240\000C\000o\000n\000c\000e\000p\000t\000s) >> -endobj -% 'Outline.31.0': class OutlineEntryObject -231 0 obj -<< /Dest [ 119 0 R - /XYZ - 62.69291 - 206.8236 - 0 ] - /Next 232 0 R - /Parent 230 0 R - /Title (\376\377\0003\000.\0001\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000P\000r\000o\000g\000r\000a\000m) >> -endobj -% 'Outline.31.1': class OutlineEntryObject -232 0 obj -<< /Dest [ 146 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Next 233 0 R - /Parent 230 0 R - /Prev 231 0 R - /Title (\376\377\0003\000.\0002\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000S\000u\000i\000t\000e) >> -endobj -% 'Outline.31.2': class OutlineEntryObject -233 0 obj -<< /Dest [ 146 0 R - /XYZ - 62.69291 - 609.0236 - 0 ] - /Next 234 0 R - /Parent 230 0 R - /Prev 232 0 R - /Title (\376\377\0003\000.\0003\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000C\000a\000s\000e) >> -endobj -% 'Outline.31.3': class OutlineEntryObject -234 0 obj -<< /Dest [ 146 0 R - /XYZ - 62.69291 - 465.8236 - 0 ] - /Next 235 0 R - /Parent 230 0 R - /Prev 233 0 R - /Title (\376\377\0003\000.\0004\000.\000\240\000\240\000\240\000C\000h\000e\000c\000k\000s) >> -endobj -% 'Outline.31.4': class OutlineEntryObject -235 0 obj -<< /Dest [ 146 0 R - /XYZ - 62.69291 - 345.8236 - 0 ] - /Next 236 0 R - /Parent 230 0 R - /Prev 234 0 R - /Title (\376\377\0003\000.\0005\000.\000\240\000\240\000\240\000I\000n\000i\000t\000i\000a\000l\000i\000z\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.31.5': class OutlineEntryObject -236 0 obj -<< /Dest [ 146 0 R - /XYZ - 62.69291 - 178.6236 - 0 ] - /Parent 230 0 R - /Prev 235 0 R - /Title (\376\377\0003\000.\0006\000.\000\240\000\240\000\240\000T\000e\000r\000m\000i\000n\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.3': class OutlineEntryObject -237 0 obj -<< /Dest [ 173 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Next 238 0 R - /Parent 224 0 R - /Prev 230 0 R - /Title (\376\377\0004\000.\000\240\000\240\000\240\000C\000+\000+\000 \000S\000u\000p\000p\000o\000r\000t) >> -endobj -% 'Outline.4': class OutlineEntryObject -238 0 obj -<< /Count 9 - /Dest [ 173 0 R - /XYZ - 62.69291 - 648.0236 - 0 ] - /First 239 0 R - /Last 244 0 R - /Next 248 0 R - /Parent 224 0 R - /Prev 237 0 R - /Title (\376\377\0005\000.\000\240\000\240\000\240\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000s) >> -endobj -% 'Outline.32.0': class OutlineEntryObject -239 0 obj -<< /Count 4 - /Dest [ 173 0 R - /XYZ - 62.69291 - 579.0236 - 0 ] - /First 240 0 R - /Last 240 0 R - /Next 244 0 R - /Parent 238 0 R - /Title (\376\377\0005\000.\0001\000.\000\240\000\240\000\240\000S\000t\000a\000t\000i\000c\000 \000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000s) >> -endobj -% 'Outline.33.0': class OutlineEntryObject -240 0 obj -<< /Count 3 - /Dest [ 173 0 R - /XYZ - 62.69291 - 435.0236 - 0 ] - /First 241 0 R - /Last 243 0 R - /Parent 239 0 R - /Title (\376\377\0005\000.\0001\000.\0001\000.\000\240\000\240\000\240\000C\000 \000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.34.0': class OutlineEntryObject -241 0 obj -<< /Dest [ 173 0 R - /XYZ - 62.69291 - 165.6236 - 0 ] - /Next 242 0 R - /Parent 240 0 R - /Title (\376\377\0005\000.\0001\000.\0001\000.\0001\000.\000\240\000\240\000\240\000m\000k\000m\000u\000t\000e\000s\000t\000 \000I\000n\000v\000o\000c\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.34.1': class OutlineEntryObject -242 0 obj -<< /Dest [ 173 0 R - /XYZ - 62.69291 - 111.6236 - 0 ] - /Next 243 0 R - /Parent 240 0 R - /Prev 241 0 R - /Title (\376\377\0005\000.\0001\000.\0001\000.\0002\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000P\000r\000o\000g\000r\000a\000m\000 \000I\000n\000v\000o\000c\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.34.2': class OutlineEntryObject -243 0 obj -<< /Dest [ 207 0 R - /XYZ - 62.69291 - 672.0236 - 0 ] - /Parent 240 0 R - /Prev 242 0 R - /Title (\376\377\0005\000.\0001\000.\0001\000.\0003\000.\000\240\000\240\000\240\000D\000e\000p\000e\000n\000d\000e\000n\000c\000i\000e\000s) >> -endobj -% 'Outline.32.1': class OutlineEntryObject -244 0 obj -<< /Count 3 - /Dest [ 207 0 R - /XYZ - 62.69291 - 558.0236 - 0 ] - /First 245 0 R - /Last 245 0 R - /Parent 238 0 R - /Prev 239 0 R - /Title (\376\377\0005\000.\0002\000.\000\240\000\240\000\240\000D\000y\000n\000a\000m\000i\000c\000 \000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000s) >> -endobj -% 'Outline.35.0': class OutlineEntryObject -245 0 obj -<< /Count 2 - /Dest [ 207 0 R - /XYZ - 62.69291 - 390.0236 - 0 ] - /First 246 0 R - /Last 247 0 R - /Parent 244 0 R - /Title (\376\377\0005\000.\0002\000.\0001\000.\000\240\000\240\000\240\000P\000y\000t\000h\000o\000n\000 \000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.36.0': class OutlineEntryObject -246 0 obj -<< /Dest [ 207 0 R - /XYZ - 62.69291 - 129.8236 - 0 ] - /Next 247 0 R - /Parent 245 0 R - /Title (\376\377\0005\000.\0002\000.\0001\000.\0001\000.\000\240\000\240\000\240\000m\000u\000t\000e\000s\000t\000 \000I\000n\000v\000o\000c\000a\000t\000i\000o\000n) >> -endobj -% 'Outline.36.1': class OutlineEntryObject -247 0 obj -<< /Dest [ 216 0 R - /XYZ - 62.69291 - 633.0236 - 0 ] - /Parent 245 0 R - /Prev 246 0 R - /Title (\376\377\0005\000.\0002\000.\0001\000.\0002\000.\000\240\000\240\000\240\000D\000e\000p\000e\000n\000d\000e\000n\000c\000i\000e\000s) >> -endobj -% 'Outline.5': class OutlineEntryObject -248 0 obj -<< /Count 4 - /Dest [ 216 0 R - /XYZ - 62.69291 - 537.0236 - 0 ] - /First 249 0 R - /Last 252 0 R - /Next 253 0 R - /Parent 224 0 R - /Prev 238 0 R - /Title (\376\377\0006\000.\000\240\000\240\000\240\000R\000e\000f\000e\000r\000e\000n\000c\000e) >> -endobj -% 'Outline.37.0': class OutlineEntryObject -249 0 obj -<< /Dest [ 216 0 R - /XYZ - 62.69291 - 504.0236 - 0 ] - /Next 250 0 R - /Parent 248 0 R - /Title (\376\377\0006\000.\0001\000.\000\240\000\240\000\240\000m\000u\000_\000c\000h\000e\000c\000k\000\(\000\)) >> -endobj -% 'Outline.37.1': class OutlineEntryObject -250 0 obj -<< /Dest [ 216 0 R - /XYZ - 62.69291 - 286.8236 - 0 ] - /Next 251 0 R - /Parent 248 0 R - /Prev 249 0 R - /Title (\376\377\0006\000.\0002\000.\000\240\000\240\000\240\000m\000u\000_\000e\000n\000s\000u\000r\000e\000\(\000\)) >> -endobj -% 'Outline.37.2': class OutlineEntryObject -251 0 obj -<< /Dest [ 221 0 R - /XYZ - 62.69291 - 765.0236 - 0 ] - /Next 252 0 R - /Parent 248 0 R - /Prev 250 0 R - /Title (\376\377\0006\000.\0003\000.\000\240\000\240\000\240\000m\000u\000_\000e\000c\000h\000e\000c\000k\000\(\000\)) >> -endobj -% 'Outline.37.3': class OutlineEntryObject -252 0 obj -<< /Dest [ 221 0 R - /XYZ - 62.69291 - 463.8236 - 0 ] - /Parent 248 0 R - /Prev 251 0 R - /Title (\376\377\0006\000.\0004\000.\000\240\000\240\000\240\000m\000u\000_\000e\000e\000n\000s\000u\000r\000e\000\(\000\)) >> -endobj -% 'Outline.6': class OutlineEntryObject -253 0 obj -<< /Dest [ 221 0 R - /XYZ - 62.69291 - 162.6236 - 0 ] - /Parent 224 0 R - /Prev 248 0 R - /Title (\376\377\0007\000.\000\240\000\240\000\240\000A\000b\000o\000u\000t) >> -endobj -% 'R254': class PDFPages -254 0 obj -% page tree -<< /Count 10 - /Kids [ 24 0 R - 99 0 R - 108 0 R - 109 0 R - 119 0 R - 146 0 R - 173 0 R - 207 0 R - 216 0 R - 221 0 R ] - /Type /Pages >> -endobj -% 'R255': class PDFStream -255 0 obj -% page stream -<< /Length 4021 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 717.0236 cm -q -BT 1 0 0 1 0 28 Tm 11.56488 0 Td 24 TL /F2 20 Tf 0 0 0 rg (mutest ) Tj /F3 20 Tf (- A simple micro unit testing framework) Tj T* 200.05 0 Td (for C) Tj T* -211.6149 0 Td ET -Q -Q -q -1 0 0 1 62.69291 692.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 36.93937 0 Td (Author:) Tj T* -36.93937 0 Td ET -Q -Q -q -1 0 0 1 91.03937 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Leandro Lucarella) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 677.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 32.48937 0 Td (Contact:) Tj T* -32.48937 0 Td ET -Q -Q -q -1 0 0 1 91.03937 3 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (llucax@gmail.com) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 662.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 33.02937 0 Td (Version:) Tj T* -33.02937 0 Td ET -Q -Q -q -1 0 0 1 91.03937 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1.0) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 647.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 48.03937 0 Td (Date:) Tj T* -48.03937 0 Td ET -Q -Q -q -1 0 0 1 91.03937 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2013-02-17) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 632.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 22.48937 0 Td (Copyright:) Tj T* -22.48937 0 Td ET -Q -Q -q -1 0 0 1 91.03937 3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Leandro Lucarella \(2008\), released under the ) Tj 0 0 .501961 rg (BOLA ) Tj 0 0 0 rg (license) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 605.0236 cm -q -BT 1 0 0 1 0 2.5 Tm 15 TL /F2 12.5 Tf 0 0 0 rg (Abstract) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 551.0236 cm -q -BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (is a micro ) Tj 0 0 .501961 rg (unit testing ) Tj 0 0 0 rg (framework for C \(with some ) Tj 0 0 .501961 rg (C++ support) Tj 0 0 0 rg (\). It's mostly an idea \(it even comes) Tj T* (with 2 ) Tj 0 0 .501961 rg (implementations ) Tj 0 0 0 rg (of the idea!\) with the goal of being easy to use \(just write your ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (grouped) Tj T* (in ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and you're set\) and so small and simple that you don't mind to copy the files to your project) Tj T* (and just use it \(i.e., no dependencies\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 503.0236 cm -q -BT 1 0 0 1 0 38 Tm 12 TL /F1 10 Tf 0 0 0 rg (The idea is simple: a source file is a ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (, a function is a ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (\(special functions can be used for) Tj T* 0 0 .501961 rg (test suite) Tj 0 0 0 rg ( ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination) Tj 0 0 0 rg (\), which can can have several ) Tj 0 0 .501961 rg (checks) Tj 0 0 0 rg (. ) Tj 0 0 .501961 rg (Checks ) Tj 0 0 0 rg (comes in 2 flavors,) Tj T* (one that only prints an error, and one that terminates the current ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (too. A \(normally\) automated) Tj T* 0 0 .501961 rg (test program ) Tj 0 0 0 rg (run all the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and print some stats. It fails \(returns non-zero\) if any ) Tj 0 0 .501961 rg (test suite ) Tj 0 0 0 rg (fails.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 467.0236 cm -q -BT 1 0 0 1 0 26 Tm 12 TL /F1 10 Tf 0 0 0 rg (<) Tj (div style="width: 220px; height: 270px; float: right; margin-left: 1em; margin-top: 1em") Tj (> <) Tj (iframe) Tj T* (width="220" height="270" style="border: none; outline: none") Tj T* (src="http://tools.flattr.net/widgets/thing.html?thing=1141711") Tj (>) Tj (<) Tj (/iframe) Tj (> <) Tj (/div) Tj (>) Tj T* ET -Q -Q - -endstream -endobj -% 'R256': class PDFStream -256 0 obj -% page stream -<< /Length 8831 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 744.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Contents) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 216.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 0 507 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (1. Installation) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 507 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 489 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (2. Quick Sample) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 489 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 471 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.1. factorial.c) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 471 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 453 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.2. factorial_test.c) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 453 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 435 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.3. exception_test.cpp) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 435 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 417 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (3. Concepts) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 417 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 399 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.1. Test Program) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 399 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 381 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.2. Test Suite) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 381 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 363 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.3. Test Case) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 363 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 345 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.4. Checks) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 345 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 327 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.5. Initialization) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 327 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 309 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.6. Termination) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 309 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 291 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (4. C++ Support) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 291 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 273 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (5. Implementations) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 273 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 255 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1. Static Implementations) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 255 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 237 cm -q -BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1. C implementation) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 237 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 219 cm -q -BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1.1. ) Tj /F5 10 Tf 0 0 0 rg (mkmutest ) Tj /F1 10 Tf 0 0 .501961 rg (Invocation) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 219 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 201 cm -q -BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1.2. Test Program Invocation) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 201 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 183 cm -q -BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1.3. Dependencies) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 183 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 165 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2. Dynamic Implementations) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 165 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 147 cm -q -BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2.1. Python implementation) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 147 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 129 cm -q -BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2.1.1. ) Tj /F5 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf 0 0 .501961 rg (Invocation) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 129 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 111 cm -q -BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2.1.2. Dependencies) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 111 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 93 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (6. Reference) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 93 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 75 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.1. ) Tj /F5 10 Tf 0 0 0 rg (mu_check\(\)) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 75 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 57 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.2. ) Tj /F5 10 Tf 0 0 0 rg (mu_ensure\(\)) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 57 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET -Q -Q -q -1 0 0 1 0 39 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.3. ) Tj /F5 10 Tf 0 0 0 rg (mu_echeck\(\)) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 39 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET -Q -Q -q -1 0 0 1 0 21 cm -q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.4. ) Tj /F5 10 Tf 0 0 0 rg (mu_eensure\(\)) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 21 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET -Q -Q -q -1 0 0 1 0 3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (7. About) Tj T* ET -Q -Q -q -1 0 0 1 397.8898 3 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 183.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (1. Installation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 165.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Download the ) Tj 0 0 .501961 rg (latest distribution tarball ) Tj 0 0 0 rg (and uncompress it.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 135.0236 cm -q -BT 1 0 0 1 0 14 Tm 1.279987 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can also download any release from the ) Tj 0 0 .501961 rg (releases directory ) Tj 0 0 0 rg (or get it using ) Tj 0 0 .501961 rg (Git ) Tj 0 0 0 rg (directly from the ) Tj 0 0 .501961 rg (Git) Tj T* 0 Tw (repository) Tj 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 117.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can get ) Tj 0 0 .501961 rg (this manual ) Tj 0 0 0 rg (too, or a ) Tj 0 0 .501961 rg (PDF version ) Tj 0 0 0 rg (of it.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 99.02362 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To actually install ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (run:) Tj T* ET -Q -Q - -endstream -endobj -% 'R257': class PDFStream -257 0 obj -% page stream -<< /Length 4497 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 739.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ make install) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 707.8236 cm -q -BT 1 0 0 1 0 14 Tm 1.377674 Tw 12 TL /F1 10 Tf 0 0 0 rg (Default installation path is ) Tj /F5 10 Tf (/usr/local ) Tj /F1 10 Tf (\(because of that, you'll probably need superuser privileges to) Tj T* 0 Tw (install to the default location\). You can override that by passing the ) Tj /F5 10 Tf (prefix ) Tj /F1 10 Tf (make variable, for example:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 674.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ make prefix=/opt/mutest install) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 654.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you want to install just the docs, you can do:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 621.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ make install-doc) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 601.4236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Or even ) Tj /F5 10 Tf (install-readme) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (install-html ) Tj /F1 10 Tf (or ) Tj /F5 10 Tf (install-pdf ) Tj /F1 10 Tf (if you are too picky.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 571.4236 cm -q -BT 1 0 0 1 0 14 Tm 1.063318 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you want to install just one particular ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (, to can use the ) Tj /F5 10 Tf (install-c ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (install-py) Tj T* 0 Tw /F1 10 Tf (targets.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 538.4236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (2. Quick Sample) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 520.4236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can find some samples in the ) Tj 0 0 .501961 rg (sample ) Tj 0 0 0 rg (directory.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 490.4236 cm -q -BT 1 0 0 1 0 14 Tm .919985 Tw 12 TL /F1 10 Tf 0 0 0 rg (This is an example taken from there. A simple ) Tj /F4 10 Tf (module ) Tj /F1 10 Tf (called ) Tj 0 0 .501961 rg (factorial.c ) Tj 0 0 0 rg (with its corresponding ) Tj 0 0 .501961 rg (test suite) Tj T* 0 Tw 0 0 0 rg (\() Tj 0 0 .501961 rg (factorial_test.c) Tj 0 0 0 rg (\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 472.4236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can see some ) Tj 0 0 .501961 rg (C++ support ) Tj 0 0 0 rg (in the ) Tj 0 0 .501961 rg (exception_test.cpp) Tj 0 0 0 rg ( ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 442.4236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (2.1. factorial.c) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 217.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 216 re B* -Q -q -BT 1 0 0 1 0 194 Tm 12 TL /F1 10 Tf 0 0 0 rg (/*) Tj T* ( * This file is part of mutest, a simple micro unit testing framework for C.) Tj T* ( *) Tj T* ( * mutest was written by Leandro Lucarella ) Tj (<) Tj (llucax@gmail.com) Tj (>) Tj ( and is released) Tj T* ( * under the BOLA license, please see the LICENSE file or visit:) Tj T* ( * http://blitiri.com.ar/p/bola/) Tj T* ( *) Tj T* ( * This is an example module that calculates a factorial.) Tj T* ( *) Tj T* ( * Please, read the README file for more details.) Tj T* ( */) Tj /F5 10 Tf T* T* /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj (\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (if) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (<) Tj (=) Tj /F5 10 Tf ( ) Tj (1) Tj /F1 10 Tf (\)) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (return) Tj /F5 10 Tf ( ) Tj (1) Tj /F1 10 Tf (;) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (return) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (*) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (x) Tj (-) Tj /F5 10 Tf (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -% 'R258': class PDFStream -258 0 obj -% page stream -<< /Length 4506 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 747.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (2.2. factorial_test.c) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 161.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 576 re B* -Q -q -BT 1 0 0 1 0 554 Tm 12 TL /F1 10 Tf 0 0 0 rg (/*) Tj T* ( * This file is part of mutest, a simple micro unit testing framework for C.) Tj T* ( *) Tj T* ( * mutest was written by Leandro Lucarella ) Tj (<) Tj (llucax@gmail.com) Tj (>) Tj ( and is released) Tj T* ( * under the BOLA license, please see the LICENSE file or visit:) Tj T* ( * http://blitiri.com.ar/p/bola/) Tj T* ( *) Tj T* ( * This is the factorial module test suite. Each \(public\) function starting) Tj T* ( * with mu_test will be picked up by mkmutest as a test case.) Tj T* ( *) Tj T* ( * Please, read the README file for more details.) Tj T* ( */) Tj /F5 10 Tf T* T* /F1 10 Tf (#include "factorial.h") Tj T* /F5 10 Tf T* /F1 10 Tf (#include "../mutest.h") Tj T* /F5 10 Tf T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_factorial_zero) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj /F5 10 Tf T* T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_factorial_one) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (/* this test is wrong on purpose, to see how it fails */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (2) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj /F5 10 Tf T* T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_factorial_positive) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (2) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (/* this test is wrong on purpose, to see how it fails */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (3) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (3) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (/* we don't want to continue if this fails, because the next result) Tj T* ( * depends on this one. This one will succeed. */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_ensure) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (6) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (x) Tj (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (720) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (4) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_ensure) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (6) Tj /F1 10 Tf (\);) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (/* same as before, but this one will fail. */) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (x) Tj (-) Tj /F5 10 Tf (15) Tj /F1 10 Tf (\);) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (/* and this will never be executed */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (362881) Tj /F1 10 Tf (\);) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (/* but if excecuted, will fail */) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -% 'R259': class PDFStream -259 0 obj -% page stream -<< /Length 5051 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 747.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (2.3. exception_test.cpp) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 281.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 456 re B* -Q -q -BT 1 0 0 1 0 434 Tm 12 TL /F1 10 Tf 0 0 0 rg (/*) Tj T* ( * This file is part of mutest, a simple micro unit testing framework for C.) Tj T* ( *) Tj T* ( * mutest was written by Leandro Lucarella ) Tj (<) Tj (llucax@gmail.com) Tj (>) Tj ( and is released) Tj T* ( * under the BOLA license, please see the LICENSE file or visit:) Tj T* ( * http://blitiri.com.ar/p/bola/) Tj T* ( *) Tj T* ( * This is a C++ module test suite. It shows how to use checks involving) Tj T* ( * exceptions.) Tj T* ( *) Tj T* ( * Please, read the README file for more details.) Tj T* ( */) Tj /F5 10 Tf T* T* /F1 10 Tf (#include ) Tj (<) Tj (stdexcept) Tj (>) Tj ( ) Tj (// std::out_of_range) Tj T* (#include ) Tj (<) Tj (vector) Tj (>) Tj ( ) Tj (// std::vector) Tj T* /F5 10 Tf T* /F1 10 Tf (#include "../mutest.h") Tj T* /F5 10 Tf T* /F1 10 Tf (extern) Tj /F5 10 Tf ( ) Tj ("C") Tj ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_exceptions) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (std) Tj (::) Tj (vector) Tj (<) Tj (int) Tj (>) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// ok) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (0) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// throws! This fails) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (0) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// ok, we expect the exception to be thrown, and it does) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_echeck) Tj (\() Tj (std) Tj (::) Tj (out_of_range) Tj (,) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\)\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// fails! We expect this to throw, but it doesn't) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_echeck) Tj (\() Tj (std) Tj (::) Tj (out_of_range) Tj (,) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\)\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// fails again, but this time the show is over \(note the "ensure"\)) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_eensure) Tj (\() Tj (std) Tj (::) Tj (out_of_range) Tj (,) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\)\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// this will never be executed \(it should fail if it is\)) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (v) Tj (.) Tj (empty) Tj (\(\)\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj /F5 10 Tf T* T* /F1 10 Tf (}) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (// extern "C") Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 248.8236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (3. Concepts) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 218.8236 cm -q -BT 1 0 0 1 0 14 Tm .475542 Tw 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (is about 4 simple concepts: ) Tj 0 0 .501961 rg (test program) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (checks) Tj 0 0 0 rg (. Well, to be honest you) Tj T* 0 Tw (probably will need ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg ( ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (too =\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 188.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.1. Test Program) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 134.8236 cm -q -BT 1 0 0 1 0 38 Tm .090941 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F3 10 Tf (test program ) Tj /F1 10 Tf (is the higher level unit of ) Tj /F4 10 Tf (mutest) Tj /F1 10 Tf (. The test program is the one in charge of running all your) Tj T* 0 Tw .28832 Tw (tests. Probably one of the more important features of ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (is that you are not supposed to bother about) Tj T* 0 Tw .014985 Tw (the test program. So, different ) Tj 0 0 .501961 rg (implementations ) Tj 0 0 0 rg (have different ways to tackle this. Some need more or less) Tj T* 0 Tw (interactions from your part, and each have their pros and cons.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 104.8236 cm -q -BT 1 0 0 1 0 14 Tm .064751 Tw 12 TL /F1 10 Tf 0 0 0 rg (But this is all you need to know for now, for more details see how the test program is implemented by your) Tj T* 0 Tw 0 0 .501961 rg (implementation ) Tj 0 0 0 rg (of choice.) Tj T* ET -Q -Q - -endstream -endobj -% 'R260': class PDFStream -260 0 obj -% page stream -<< /Length 7052 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 747.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.2. Test Suite) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 681.0236 cm -q -BT 1 0 0 1 0 50 Tm .300444 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F3 10 Tf (test suite ) Tj /F1 10 Tf (is the higher level unit of ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (that you should care about =\). Is not much more than a way) Tj T* 0 Tw 2.145542 Tw (to group ) Tj 0 0 .501961 rg (test cases) Tj 0 0 0 rg (. Code-wise, a test suite is a C \(or C++\) module \(or compilation unit\). Not clear) Tj T* 0 Tw 1.254104 Tw (enough? A unit test is an object file \(could be a shared object depending on the ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (\). This) Tj T* 0 Tw .308221 Tw (module should have one or more ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and it could have any number \(including zero\) of ) Tj 0 0 .501961 rg (initialization) Tj T* 0 Tw 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (functions.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 651.0236 cm -q -BT 1 0 0 1 0 14 Tm .012927 Tw 12 TL /F1 10 Tf 0 0 0 rg (A test suite, is inspected by the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (for ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (functions, and) Tj T* 0 Tw (run them.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 621.0236 cm -q -BT 1 0 0 1 0 14 Tm .370941 Tw 12 TL /F1 10 Tf 0 0 0 rg (A test suite fail if one or more ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (fail, and it's skipped if one or more ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (functions fail \(or,) Tj T* 0 Tw (depending on the implementation, if the test suite can't be loaded at all\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 591.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.3. Test Case) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 561.0236 cm -q -BT 1 0 0 1 0 14 Tm 1.064724 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F3 10 Tf (test case ) Tj /F1 10 Tf (is just a plain function with a special signature and name. A test case function name must) Tj T* 0 Tw (start with ) Tj /F5 10 Tf (mu_test) Tj /F1 10 Tf (, and take no arguments and return nothing. For example:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 527.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (void mu_test_something\(void\);) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 495.8236 cm -q -BT 1 0 0 1 0 14 Tm .151488 Tw 12 TL /F1 10 Tf 0 0 0 rg (A test case \(probably\) only make sense if it has ) Tj 0 0 .501961 rg (checks) Tj 0 0 0 rg (. A test case succeed only if all its checks succeed) Tj T* 0 Tw (too.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 477.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Test are executed in an ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (-dependant order, but usually the default order is alphabetical.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 447.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.4. Checks) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 405.8236 cm -q -BT 1 0 0 1 0 26 Tm .013516 Tw 12 TL /F1 10 Tf 0 0 0 rg (Checks are assertions that a ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (must pass \(a boolean expression that must evaluate to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (\). There) Tj T* 0 Tw .094988 Tw (are 2 big flavors of checks: ) Tj /F3 10 Tf (check ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (ensure) Tj /F1 10 Tf (. ) Tj /F3 10 Tf (check ) Tj /F1 10 Tf (just print an error \(and ) Tj /F4 10 Tf (mark ) Tj /F1 10 Tf (the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (as failed\)) Tj T* 0 Tw (and ) Tj /F3 10 Tf (ensure ) Tj /F1 10 Tf (halt the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (execution, jumping to the next one.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 375.8236 cm -q -BT 1 0 0 1 0 14 Tm .242339 Tw 12 TL /F1 10 Tf 0 0 0 rg (For better ) Tj 0 0 .501961 rg (C++ support ) Tj 0 0 0 rg (there are check macros that assert that a specified exception is thrown \(instead of) Tj T* 0 Tw (check for a boolean expression to evaluate to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 357.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can take a look at the ) Tj 0 0 .501961 rg (reference ) Tj 0 0 0 rg (to see the different flavors of check macros in more detail.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 327.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.5. Initialization) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 297.8236 cm -q -BT 1 0 0 1 0 14 Tm .960574 Tw 12 TL /F1 10 Tf 0 0 0 rg (Sometimes you need to setup some environment shared between all the ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (in a ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (. You) Tj T* 0 Tw (can use ) Tj /F3 10 Tf (initialization functions ) Tj /F1 10 Tf (for this.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 255.8236 cm -q -BT 1 0 0 1 0 26 Tm 1.340542 Tw 12 TL /F1 10 Tf 0 0 0 rg (An initialization function, like a ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, is a plain C function with a special name and signature. The) Tj T* 0 Tw 2.140574 Tw (name must start with ) Tj /F5 10 Tf (mu_init ) Tj /F1 10 Tf (and it must take no arguments, and return an ) Tj /F4 10 Tf (error code ) Tj /F1 10 Tf (\() Tj /F5 10 Tf (0 ) Tj /F1 10 Tf (being) Tj T* 0 Tw (success\). For example:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 222.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (int mu_init_something\(void\);) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 190.6236 cm -q -BT 1 0 0 1 0 14 Tm .253555 Tw 12 TL /F1 10 Tf 0 0 0 rg (All initialization functions are executed before any ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, in an ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (-dependant order, and if) Tj T* 0 Tw (one of them fail \(returns non-zero\), the whole ) Tj 0 0 .501961 rg (test suite ) Tj 0 0 0 rg (is skipped immediately.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 160.6236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.6. Termination) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 130.6236 cm -q -BT 1 0 0 1 0 14 Tm .359269 Tw 12 TL /F3 10 Tf 0 0 0 rg (Termination functions ) Tj /F1 10 Tf (are just like ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (functions, but they're executed ) Tj /F3 10 Tf (after ) Tj /F1 10 Tf (the ) Tj 0 0 .501961 rg (test cases) Tj 0 0 0 rg (, their) Tj T* 0 Tw (names start with ) Tj /F5 10 Tf (mu_term ) Tj /F1 10 Tf (and they return nothing. For example:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 97.42362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (void mu_term_something\(void\);) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -% 'R261': class PDFStream -261 0 obj -% page stream -<< /Length 6908 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 744.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (4. C++ Support) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 702.0236 cm -q -BT 1 0 0 1 0 26 Tm .625251 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can use ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (with C++, the only care you must take is that, because of C++ ) Tj 0 0 .501961 rg (name mangling ) Tj 0 0 0 rg (\(and) Tj T* 0 Tw 1.208555 Tw /F4 10 Tf (mutest ) Tj /F1 10 Tf (relaying on function names\), you must declare your ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination) Tj T* 0 Tw 0 0 0 rg (functions as ) Tj /F5 10 Tf (extern) Tj ( ) Tj ("C" ) Tj /F1 10 Tf (\(see ) Tj 0 0 .501961 rg (exception_test.cpp ) Tj 0 0 0 rg (for an example\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 660.0236 cm -q -BT 1 0 0 1 0 26 Tm .386651 Tw 12 TL /F1 10 Tf 0 0 .501961 rg (Checks ) Tj 0 0 0 rg (become ) Tj /F4 10 Tf (exception-safe ) Tj /F1 10 Tf (when using ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (with a C++ compiler, and 2 extra ) Tj 0 0 .501961 rg (checks ) Tj 0 0 0 rg (designed for) Tj T* 0 Tw 1.558443 Tw (C++ get defined \() Tj 0 0 .501961 rg (mu_echeck\(\) ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (mu_eensure\(\)) Tj 0 0 0 rg (\). They assert that an expression throws a particular) Tj T* 0 Tw (exception.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 627.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (5. Implementations) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 609.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (There are 2 big groups of possible implementations that I can think of: ) Tj /F4 10 Tf (static ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (dynamic) Tj /F1 10 Tf (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 591.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (comes with one implementation of each group.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 561.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (5.1. Static Implementations) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 519.0236 cm -q -BT 1 0 0 1 0 26 Tm .398735 Tw 12 TL /F1 10 Tf 0 0 0 rg (Static implementations can be only written in C/C++ \(or other language that is link-compatible with C, like) Tj T* 0 Tw 3.460651 Tw (the ) Tj 0 0 .501961 rg (D Programming Language) Tj 0 0 0 rg (, but since one of the main goals of ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (is avoid unnecessary) Tj T* 0 Tw (dependencies, you probably don't want to depend on an extra language/compiler to run your tests =\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 489.0236 cm -q -BT 1 0 0 1 0 14 Tm 1.262485 Tw 12 TL /F1 10 Tf 0 0 0 rg (The main advantage is better debugging support, because you can run the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (in a standard) Tj T* 0 Tw (debugger and see what happens with ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (very naturally.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 447.0236 cm -q -BT 1 0 0 1 0 26 Tm .439398 Tw 12 TL /F1 10 Tf 0 0 0 rg (The main disadvantage is, the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (must be figured out in ) Tj /F4 10 Tf (compile-time) Tj /F1 10 Tf (, usually using some kind of) Tj T* 0 Tw .555868 Tw (code generation \(if you want to avoid writing repetitive code yourself\). There's also a limitation in the ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw (case) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (functions names: they should be unique for all the ) Tj 0 0 .501961 rg (test program) Tj 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 420.0236 cm -q -BT 1 0 0 1 0 2.5 Tm 15 TL /F2 12.5 Tf 0 0 0 rg (5.1.1. C implementation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 378.0236 cm -q -BT 1 0 0 1 0 26 Tm .44784 Tw 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (comes with a C static implementation. Only 3 files are needed: ) Tj /F5 10 Tf (mutest.c ) Tj /F1 10 Tf (\(the ) Tj /F4 10 Tf (user-independent) Tj T* 0 Tw 1.39686 Tw /F1 10 Tf (part of the ) Tj 0 0 .501961 rg (test program) Tj 0 0 0 rg (\), ) Tj /F5 10 Tf (mkmutest ) Tj /F1 10 Tf (\(a bash script for generating the ) Tj /F4 10 Tf (user-dependent ) Tj /F1 10 Tf (part of the ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw (program) Tj 0 0 0 rg (\) and ) Tj /F5 10 Tf (mutest.h ) Tj /F1 10 Tf (\(the header file that ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (should include\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 360.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can copy this 3 files to your project or install them at system-level and use them globally.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 330.0236 cm -q -BT 1 0 0 1 0 14 Tm 1.415984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The procedure is simple, You should compile you ) Tj 0 0 .501961 rg (test suites) Tj 0 0 0 rg (, ) Tj /F5 10 Tf (mutest.c ) Tj /F1 10 Tf (and the generated output of) Tj T* 0 Tw /F5 10 Tf (mkmutest ) Tj /F1 10 Tf (as object files and link them together.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 312.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 230.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL ($ cc -c -o mutest.o mutest.c) Tj T* ($ cc -c -o test1.o test1.c) Tj T* ($ cc -c -o test2.o test2.c) Tj T* ($ mkmutest mutest.h test1.o test2.o | cc -xc -c -o runmutest.o -) Tj T* ($ cc -o testprg mutest.o test1.o test2.o runmutest.o) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 210.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Then you can run the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (invoking it with no arguments:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 177.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ ./testprg) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 153.6236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.1.1.1. ) Tj /F6 10 Tf (mkmutest ) Tj /F2 10 Tf (Invocation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 123.6236 cm -q -BT 1 0 0 1 0 14 Tm 1.715318 Tw 12 TL /F1 10 Tf 0 0 0 rg (This small script take 1 mandatory positional argument: the path to the ) Tj /F5 10 Tf (mutest.h ) Tj /F1 10 Tf (file. All remaining) Tj T* 0 Tw (positional arguments should be object files representing ) Tj 0 0 .501961 rg (test suites) Tj 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 99.62362 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.1.1.2. Test Program Invocation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 81.62362 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The test program can be invoked without arguments, but can take some extra options:) Tj T* ET -Q -Q - -endstream -endobj -% 'R262': class PDFStream -262 0 obj -% page stream -<< /Length 7873 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 753.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (-v) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 684.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 56 Tm T* ET -q -1 0 0 1 20 54 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Be verbose. This is accumulative, when you add extra ) Tj /F5 10 Tf (-v ) Tj /F1 10 Tf (you will get extra verbosity.) Tj T* ET -Q -Q -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 38 Tm .395542 Tw 12 TL /F1 10 Tf 0 0 0 rg (By default, you just get failed ) Tj 0 0 .501961 rg (checks ) Tj 0 0 0 rg (printed. If you use a single ) Tj /F5 10 Tf (-v) Tj /F1 10 Tf (, a summary of failed/passed ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw .690514 Tw (suites) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (checks ) Tj 0 0 0 rg (will be printed. If an extra ) Tj /F5 10 Tf (-v ) Tj /F1 10 Tf (is used, you'll see the current ) Tj 0 0 .501961 rg (test suite) Tj T* 0 Tw .099986 Tw 0 0 0 rg (being executed. Another ) Tj /F5 10 Tf (-v ) Tj /F1 10 Tf (and you'll get the current ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, and another one, and you'll get each) Tj T* 0 Tw 0 0 .501961 rg (check) Tj 0 0 0 rg (.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 660.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.1.1.3. Dependencies) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 642.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Even when dependencies are kept minimal, there always be a few ;\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 624.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To use this implementation you just need:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 618.0236 cm -Q -q -1 0 0 1 62.69291 618.0236 cm -Q -q -1 0 0 1 62.69291 606.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A C compiler \(you already needed that, so...\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 600.0236 cm -Q -q -1 0 0 1 62.69291 588.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (nm ) Tj /F1 10 Tf (program \(from ) Tj 0 0 .501961 rg (GNU Binutils) Tj 0 0 0 rg (, included in virtually any *NIX\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 582.0236 cm -Q -q -1 0 0 1 62.69291 570.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj 0 0 .501961 rg (GNU Bash ) Tj 0 0 0 rg (shell interpreter \(also included in virtually any *NIX\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 570.0236 cm -Q -q -1 0 0 1 62.69291 540.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (5.2. Dynamic Implementations) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 498.0236 cm -q -BT 1 0 0 1 0 26 Tm .84686 Tw 12 TL /F1 10 Tf 0 0 0 rg (Dynamic implementations, on the other hand, can be written in any language that can access to shared) Tj T* 0 Tw 2.661163 Tw (objects. The idea is to inspect a shared object for ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and run them, without requiring any) Tj T* 0 Tw (information about ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (at compile time.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 432.0236 cm -q -BT 1 0 0 1 0 50 Tm 1.684983 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are several advantages in this kind of implementations. The dynamic nature let you completely) Tj T* 0 Tw 1.71686 Tw (separate the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (from the user-written ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and you can choose at ) Tj /F4 10 Tf (run-time ) Tj /F1 10 Tf (what ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw .237984 Tw (suites ) Tj 0 0 0 rg (to execute by just selecting the correct shared objects. Also, ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination) Tj T* 0 Tw .134431 Tw 0 0 0 rg (functions names only have to be unique in the scope of the ) Tj 0 0 .501961 rg (test suites) Tj 0 0 0 rg (, because ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (are completely) Tj T* 0 Tw (isolated in separate shared objects.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 402.0236 cm -q -BT 1 0 0 1 0 14 Tm .720988 Tw 12 TL /F1 10 Tf 0 0 0 rg (But everything comes at a price, and the higher price to pay is ) Tj /F4 10 Tf (debuggability) Tj /F1 10 Tf (. It's a little harder to plug a) Tj T* 0 Tw (debugger to a shared object.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 375.0236 cm -q -BT 1 0 0 1 0 2.5 Tm 15 TL /F2 12.5 Tf 0 0 0 rg (5.2.1. Python implementation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 333.0236 cm -q -BT 1 0 0 1 0 26 Tm 1.498651 Tw 12 TL /F1 10 Tf 0 0 0 rg (This implementation is much simpler and elegant than the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (. Only 2 files are needed:) Tj T* 0 Tw .951318 Tw /F5 10 Tf (mutest ) Tj /F1 10 Tf (\() Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (written in ) Tj 0 0 .501961 rg (Python ) Tj 0 0 0 rg (using ) Tj 0 0 .501961 rg (ctypes ) Tj 0 0 0 rg (module to access the shared object symbols\) and) Tj T* 0 Tw /F5 10 Tf (mutest.h ) Tj /F1 10 Tf (\(the header file that ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (should include\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 303.0236 cm -q -BT 1 0 0 1 0 14 Tm 2.823059 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since both implementations provided by ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (share the same ) Tj /F5 10 Tf (mutest.h) Tj /F1 10 Tf (, you should define the) Tj T* 0 Tw /F5 10 Tf (MUTEST_PY ) Tj /F1 10 Tf (macro when compiling the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (if you will run them using this implementation.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 273.0236 cm -q -BT 1 0 0 1 0 14 Tm .452619 Tw 12 TL /F1 10 Tf 0 0 0 rg (As with the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (, you can copy this 2 files to your project or install them at system-level and) Tj T* 0 Tw (use them globally.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 243.0236 cm -q -BT 1 0 0 1 0 14 Tm 1.578735 Tw 12 TL /F1 10 Tf 0 0 0 rg (The procedure is even simpler than the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (: compile and link you ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (as shared) Tj T* 0 Tw (objects and then run the ) Tj /F5 10 Tf (mutest ) Tj /F1 10 Tf (program passing the shared objects as arguments. For example:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 161.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL ($ cc -c -fPIC -DMUTEST_PY -o test1.o test1.c) Tj T* ($ cc -shared -o test1.so test1.o) Tj T* ($ cc -c -fPIC -DMUTEST_PY -o test2.o test2.c) Tj T* ($ cc -shared -o test2.so test2.o) Tj T* ($ mutest test1.so test2.so) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 141.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (That's it.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 117.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.2.1.1. ) Tj /F6 10 Tf (mutest ) Tj /F2 10 Tf (Invocation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 87.82362 cm -q -BT 1 0 0 1 0 14 Tm 1.505984 Tw 12 TL /F5 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (program takes ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (shared objects to run as positional arguments. It accepts the same) Tj T* 0 Tw (options as the ) Tj 0 0 .501961 rg (C implementation's test program ) Tj 0 0 0 rg (and some extra options are accepted too:) Tj T* ET -Q -Q - -endstream -endobj -% 'R263': class PDFStream -263 0 obj -% page stream -<< /Length 6814 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 753.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (--verbose) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 738.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Alias for ) Tj /F5 10 Tf (-v) Tj /F1 10 Tf (.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 722.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (-q) Tj /F3 10 Tf (, ) Tj /F7 10 Tf (--quiet) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 707.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Be quiet \(no output is shown at all\).) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 691.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (-s) Tj /F3 10 Tf (, ) Tj /F7 10 Tf (--search) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 676.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Search for ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (\(*.so\) in the current directory and add them to the list of ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (to run.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 660.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (-h) Tj /F3 10 Tf (, ) Tj /F7 10 Tf (--help) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 645.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Show a help message and exit.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 621.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.2.1.2. Dependencies) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 603.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (As with the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (, some minor dependencies are needed:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 597.0236 cm -Q -q -1 0 0 1 62.69291 597.0236 cm -Q -q -1 0 0 1 62.69291 585.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Python ) Tj 0 0 0 rg (\(2.5 or later\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 579.0236 cm -Q -q -1 0 0 1 62.69291 567.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (nm ) Tj /F1 10 Tf (program \(from ) Tj 0 0 .501961 rg (GNU Binutils) Tj 0 0 0 rg (, included in virtually any *NIX\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 567.0236 cm -Q -q -1 0 0 1 62.69291 549.0236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You will need a C compiler for building the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (too, but technically is not needed by ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (itself ;\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 516.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (6. Reference) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 486.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.1. ) Tj /F7 15 Tf (mu_check\(\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 468.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 453.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (mu_check\(expression\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 437.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 422.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (evaluates to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (. Continue with the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (if fail.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 406.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 391.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Always) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 375.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 298.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 63.2 Tm T* ET -q -1 0 0 1 20 0 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 448.6898 72 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL (void mu_test\(void\)) Tj T* ({) Tj T* ( mu_check\(5 == 4\); /* fail */) Tj T* ( mu_check\(5 == 5\); /* excecuted, pass */) Tj T* (}) Tj T* ET -Q -Q -Q -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 268.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.2. ) Tj /F7 15 Tf (mu_ensure\(\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 250.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 235.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (mu_ensure\(expression\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 219.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 204.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (evaluates to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (. Interrupt the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (if fail.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 188.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 173.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Always) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 157.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 81.62362 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 63.2 Tm T* ET -q -1 0 0 1 20 0 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 448.6898 72 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL (void mu_test\(void\)) Tj T* ({) Tj T* ( mu_ensure\(5 == 4\); /* fail */) Tj T* ( mu_check\(5 == 5\); /* not excecuted */) Tj T* (}) Tj T* ET -Q -Q -Q -Q -Q -q -Q -Q - -endstream -endobj -% 'R264': class PDFStream -264 0 obj -% page stream -<< /Length 4504 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 747.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.3. ) Tj /F7 15 Tf (mu_echeck\(\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 729.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 714.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (mu_echeck\(class,) Tj ( ) Tj (expression\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 698.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 671.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 14 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 14 Tm 1.408443 Tw 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (throws a specific exception ) Tj /F5 10 Tf (class ) Tj /F1 10 Tf (\(or subclass\). Continue with the) Tj T* 0 Tw 0 0 .501961 rg (test case ) Tj 0 0 0 rg (if fail.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 655.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 640.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (C++ only) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 624.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 475.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 135.2 Tm T* ET -q -1 0 0 1 20 0 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 448.6898 144 re B* -Q -q -BT 1 0 0 1 0 122 Tm 12 TL /F5 10 Tf 0 0 0 rg (#include ) Tj (<) Tj (stdexcept) Tj (>) Tj T* T* (extern "C") Tj T* ({) Tj T* ( void mu_test\(void\)) Tj T* ( {) Tj T* ( mu_echeck\(std::exception, true\); /* fail */) Tj T* ( mu_echeck\(std::exception,) Tj T* ( throw std::runtime_error\("!"\)\); /* excecuted, pass */) Tj T* ( }) Tj T* (}) Tj T* ET -Q -Q -Q -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 445.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.4. ) Tj /F7 15 Tf (mu_eensure\(\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 427.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 412.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (mu_eensure\(class,) Tj ( ) Tj (expression\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 396.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 369.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 14 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 14 Tm 1.749982 Tw 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (throws a specific exception ) Tj /F5 10 Tf (class ) Tj /F1 10 Tf (\(or subclass\). Interrupt the ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw (case ) Tj 0 0 0 rg (if fail.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 353.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 338.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (C++ only) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 322.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 174.6236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 135.2 Tm T* ET -q -1 0 0 1 20 0 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 448.6898 144 re B* -Q -q -BT 1 0 0 1 0 122 Tm 12 TL /F5 10 Tf 0 0 0 rg (#include ) Tj (<) Tj (stdexcept) Tj (>) Tj T* T* (extern "C") Tj T* ({) Tj T* ( void mu_test\(void\)) Tj T* ( {) Tj T* ( mu_eensure\(std::exception, true\); /* fail */) Tj T* ( mu_echeck\(std::exception,) Tj T* ( throw std::runtime_error\("!"\)\); /* not excecuted */) Tj T* ( }) Tj T* (}) Tj T* ET -Q -Q -Q -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 141.6236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (7. About) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 123.6236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (This manual was written using ) Tj 0 0 .501961 rg (reStructuredText) Tj 0 0 0 rg (.) Tj T* ET -Q -Q - -endstream -endobj -% 'R265': class PDFPageLabels -265 0 obj -% Document Root -<< /Nums [ 0 - 266 0 R - 1 - 267 0 R - 2 - 268 0 R - 3 - 269 0 R - 4 - 270 0 R - 5 - 271 0 R - 6 - 272 0 R - 7 - 273 0 R - 8 - 274 0 R - 9 - 275 0 R ] >> -endobj -% 'R266': class PDFPageLabel -266 0 obj -% None -<< /S /D - /St 1 >> -endobj -% 'R267': class PDFPageLabel -267 0 obj -% None -<< /S /D - /St 2 >> -endobj -% 'R268': class PDFPageLabel -268 0 obj -% None -<< /S /D - /St 3 >> -endobj -% 'R269': class PDFPageLabel -269 0 obj -% None -<< /S /D - /St 4 >> -endobj -% 'R270': class PDFPageLabel -270 0 obj -% None -<< /S /D - /St 5 >> -endobj -% 'R271': class PDFPageLabel -271 0 obj -% None -<< /S /D - /St 6 >> -endobj -% 'R272': class PDFPageLabel -272 0 obj -% None -<< /S /D - /St 7 >> -endobj -% 'R273': class PDFPageLabel -273 0 obj -% None -<< /S /D - /St 8 >> -endobj -% 'R274': class PDFPageLabel -274 0 obj -% None -<< /S /D - /St 9 >> -endobj -% 'R275': class PDFPageLabel -275 0 obj -% None -<< /S /D - /St 10 >> -endobj -xref -0 276 -0000000000 65535 f -0000000113 00000 n -0000000286 00000 n -0000000451 00000 n -0000000640 00000 n -0000000827 00000 n -0000001068 00000 n -0000001303 00000 n -0000001496 00000 n -0000001756 00000 n -0000001998 00000 n -0000002241 00000 n -0000002484 00000 n -0000002727 00000 n -0000002970 00000 n -0000003214 00000 n -0000003458 00000 n -0000003702 00000 n -0000003946 00000 n -0000004190 00000 n -0000004434 00000 n -0000004678 00000 n -0000004922 00000 n -0000005166 00000 n -0000005394 00000 n -0000005862 00000 n -0000006105 00000 n -0000006348 00000 n -0000006592 00000 n -0000006836 00000 n -0000007080 00000 n -0000007324 00000 n -0000007568 00000 n -0000007812 00000 n -0000008056 00000 n -0000008300 00000 n -0000008544 00000 n -0000008788 00000 n -0000009032 00000 n -0000009276 00000 n -0000009520 00000 n -0000009764 00000 n -0000010008 00000 n -0000010252 00000 n -0000010496 00000 n -0000010740 00000 n -0000010984 00000 n -0000011228 00000 n -0000011472 00000 n -0000011716 00000 n -0000011960 00000 n -0000012204 00000 n -0000012448 00000 n -0000012692 00000 n -0000012936 00000 n -0000013180 00000 n -0000013424 00000 n -0000013654 00000 n -0000013830 00000 n -0000014074 00000 n -0000014318 00000 n -0000014562 00000 n -0000014806 00000 n -0000015050 00000 n -0000015294 00000 n -0000015538 00000 n -0000015782 00000 n -0000016026 00000 n -0000016270 00000 n -0000016514 00000 n -0000016758 00000 n -0000017002 00000 n -0000017246 00000 n -0000017490 00000 n -0000017734 00000 n -0000017978 00000 n -0000018222 00000 n -0000018466 00000 n -0000018710 00000 n -0000018954 00000 n -0000019198 00000 n -0000019442 00000 n -0000019686 00000 n -0000019930 00000 n -0000020174 00000 n -0000020418 00000 n -0000020662 00000 n -0000020906 00000 n -0000021150 00000 n -0000021394 00000 n -0000021638 00000 n -0000021882 00000 n -0000022125 00000 n -0000022405 00000 n -0000022672 00000 n -0000022909 00000 n -0000023175 00000 n -0000023441 00000 n -0000023710 00000 n -0000023963 00000 n -0000024930 00000 n -0000025174 00000 n -0000025509 00000 n -0000025754 00000 n -0000025999 00000 n -0000026244 00000 n -0000026489 00000 n -0000026734 00000 n -0000026963 00000 n -0000027338 00000 n -0000027638 00000 n -0000027884 00000 n -0000028130 00000 n -0000028376 00000 n -0000028620 00000 n -0000028866 00000 n -0000029112 00000 n -0000029358 00000 n -0000029604 00000 n -0000029833 00000 n -0000030235 00000 n -0000030480 00000 n -0000030726 00000 n -0000030972 00000 n -0000031218 00000 n -0000031464 00000 n -0000031710 00000 n -0000031955 00000 n -0000032200 00000 n -0000032446 00000 n -0000032692 00000 n -0000032938 00000 n -0000033184 00000 n -0000033430 00000 n -0000033676 00000 n -0000033922 00000 n -0000034168 00000 n -0000034414 00000 n -0000034660 00000 n -0000034906 00000 n -0000035152 00000 n -0000035398 00000 n -0000035644 00000 n -0000035888 00000 n -0000036134 00000 n -0000036380 00000 n -0000036609 00000 n -0000037180 00000 n -0000037445 00000 n -0000037690 00000 n -0000037936 00000 n -0000038182 00000 n -0000038428 00000 n -0000038674 00000 n -0000038919 00000 n -0000039165 00000 n -0000039410 00000 n -0000039662 00000 n -0000039908 00000 n -0000040154 00000 n -0000040400 00000 n -0000040646 00000 n -0000040892 00000 n -0000041138 00000 n -0000041384 00000 n -0000041630 00000 n -0000041876 00000 n -0000042122 00000 n -0000042368 00000 n -0000042614 00000 n -0000042860 00000 n -0000043091 00000 n -0000043293 00000 n -0000043522 00000 n -0000044069 00000 n -0000044257 00000 n -0000044503 00000 n -0000044749 00000 n -0000044995 00000 n -0000045241 00000 n -0000045486 00000 n -0000045732 00000 n -0000045978 00000 n -0000046223 00000 n -0000046482 00000 n -0000046738 00000 n -0000046984 00000 n -0000047230 00000 n -0000047476 00000 n -0000047722 00000 n -0000047968 00000 n -0000048213 00000 n -0000048459 00000 n -0000048705 00000 n -0000048951 00000 n -0000049197 00000 n -0000049443 00000 n -0000049689 00000 n -0000049934 00000 n -0000050178 00000 n -0000050443 00000 n -0000050689 00000 n -0000050935 00000 n -0000051181 00000 n -0000051427 00000 n -0000051673 00000 n -0000051919 00000 n -0000052148 00000 n -0000052780 00000 n -0000053026 00000 n -0000053272 00000 n -0000053517 00000 n -0000053761 00000 n -0000054021 00000 n -0000054267 00000 n -0000054513 00000 n -0000054742 00000 n -0000055134 00000 n -0000055380 00000 n -0000055626 00000 n -0000055871 00000 n -0000056118 00000 n -0000056455 00000 n -0000056619 00000 n -0000056938 00000 n -0000057067 00000 n -0000057333 00000 n -0000057663 00000 n -0000057938 00000 n -0000058254 00000 n -0000058561 00000 n -0000058871 00000 n -0000059151 00000 n -0000059437 00000 n -0000059718 00000 n -0000059984 00000 n -0000060290 00000 n -0000060562 00000 n -0000060840 00000 n -0000061185 00000 n -0000061559 00000 n -0000061897 00000 n -0000062232 00000 n -0000062603 00000 n -0000062903 00000 n -0000063282 00000 n -0000063645 00000 n -0000063970 00000 n -0000064267 00000 n -0000064582 00000 n -0000064854 00000 n -0000065147 00000 n -0000065440 00000 n -0000065719 00000 n -0000065936 00000 n -0000066136 00000 n -0000070258 00000 n -0000079190 00000 n -0000083788 00000 n -0000088395 00000 n -0000093547 00000 n -0000100700 00000 n -0000107709 00000 n -0000115683 00000 n -0000122598 00000 n -0000127207 00000 n -0000127429 00000 n -0000127508 00000 n -0000127587 00000 n -0000127666 00000 n -0000127745 00000 n -0000127824 00000 n -0000127903 00000 n -0000127982 00000 n -0000128061 00000 n -0000128140 00000 n -trailer -<< /ID - % ReportLab generated PDF document -- digest (http://www.reportlab.com) - [(\010\207@\355\312B{y\207\001\310\013\021\257\346z) (\010\207@\355\312B{y\207\001\310\013\021\257\346z)] - - /Info 223 0 R - /Root 222 0 R - /Size 276 >> -startxref -128189 -%%EOF -- 2.43.0