From 049919a98173cd961c49ac58d7833060efedc154 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Mon, 21 Oct 2019 22:51:45 +0200 Subject: [PATCH 01/21] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 20 ++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 +++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..2fa183f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,20 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** + +1. If any, include the code that you are using +2. If any, include the command line statements that you are using +3. If you have problems with a specific pdf file, include that pdf file + +**Expected behavior** +A clear and concise description of what you expected to happen. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..110953e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an improvement for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. From 131611ab6bc6a7a177fe96bed449a61f3772761f Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Mon, 21 Oct 2019 23:02:50 +0200 Subject: [PATCH 02/21] Create pull_request_template.md --- .github/pull_request_template.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..2604461 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,18 @@ +# Pull Request Template + +## Description + +Please include a summary of the change and which issue is fixed. If this does not fix an issue, then first create a new issue. Please also include relevant motivation and context. + +Fixes # (issue) + +## How Has This Been Tested? + +Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Include an example pdf if you have one. + +## Checklist: + +- [ ] I have optimized the code at least one time after creating the initial version +- [ ] I have added docstrings to newly created methods and classes +- [ ] I have updated the README.md and other documentation, or I am sure that this is not necessary +- [ ] I have added tests that prove my fix is effective or that my feature works From 36621c803884b0ae3d78fec5189a43fbbe0771b0 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Mon, 21 Oct 2019 23:08:57 +0200 Subject: [PATCH 03/21] Use same format for pull_request_template.md as for bug_report.md --- .github/pull_request_template.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2604461..c9eb9a5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,16 +1,14 @@ -# Pull Request Template - -## Description +**Description** Please include a summary of the change and which issue is fixed. If this does not fix an issue, then first create a new issue. Please also include relevant motivation and context. Fixes # (issue) -## How Has This Been Tested? +**How Has This Been Tested?** Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Include an example pdf if you have one. -## Checklist: +**Checklist** - [ ] I have optimized the code at least one time after creating the initial version - [ ] I have added docstrings to newly created methods and classes From 3001fe3a82ea8fd6fbd1b1394fb721c61e805b80 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Tue, 22 Oct 2019 17:30:09 +0200 Subject: [PATCH 04/21] Add item to checklist about updating CHANGELOG.md --- .github/pull_request_template.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c9eb9a5..8cfa7f3 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -10,7 +10,8 @@ Please describe the tests that you ran to verify your changes. Provide instructi **Checklist** -- [ ] I have optimized the code at least one time after creating the initial version -- [ ] I have added docstrings to newly created methods and classes -- [ ] I have updated the README.md and other documentation, or I am sure that this is not necessary - [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] I have updated the [README.md](../README.md) and other documentation, or I am sure that this is not necessary +- [ ] I have added a consice human-readable description of the change to [CHANGELOG.md](../CHANGELOG.md) +- [ ] I have added docstrings to newly created methods and classes +- [ ] I have optimized the code at least one time after creating the initial version From 373c6e7b97f118d6eae0b53609a9509a7feda2f3 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Tue, 22 Oct 2019 17:37:06 +0200 Subject: [PATCH 05/21] Added: extraction of JBIG2 encoded images (#311) And added test for pdf with JBIG2 image. Fixes #26 Closes #46 --- CHANGELOG.md | 5 +- README.md | 3 +- pdfminer/image.py | 86 ++++++-- pdfminer/jbig2.py | 321 +++++++++++++++++++++++++++++ pdfminer/pdftypes.py | 4 +- samples/contrib/pdf-with-jbig2.pdf | Bin 0 -> 10213 bytes tests/test_tools_pdf2txt.py | 23 +++ 7 files changed, 416 insertions(+), 26 deletions(-) create mode 100644 pdfminer/jbig2.py create mode 100644 samples/contrib/pdf-with-jbig2.pdf diff --git a/CHANGELOG.md b/CHANGELOG.md index dd4b3d3..9082416 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] -Nothing yet +### Added +- Support for extracting JBIG2 encoded images ([#311](https://github.com/pdfminer/pdfminer.six/pull/311) and [#46](https://github.com/pdfminer/pdfminer.six/pull/46)) ## [20191020] - 2019-10-20 @@ -27,7 +28,7 @@ Nothing yet - Allow for bounding boxes with zero height or width by removing assertion ([#246](https://github.com/pdfminer/pdfminer.six/pull/246)) ### Changed -- All dependencies are managed in `setup.py` ([#306](https://github.com/pdfminer/pdfminer.six/pull/306), [#219](https://github.com/pdfminer/pdfminer.six/pull/219)) +- All dependencies are managed in `setup.py` ([#306](https://github.com/pdfminer/pdfminer.six/pull/306) and [#219](https://github.com/pdfminer/pdfminer.six/pull/219)) ## [20181108] - 2018-11-08 diff --git a/README.md b/README.md index e2e4cc8..fae5fb0 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,10 @@ Features * Written entirely in Python. * Parse, analyze, and convert PDF documents. - * PDF-1.7 specification support. (well, almost) + * PDF-1.7 specification support. (well, almost). * CJK languages and vertical writing scripts support. * Various font types (Type1, TrueType, Type3, and CID) support. + * Support for extracting images (JPG, JBIG2 and Bitmaps). * Basic encryption (RC4) support. * Outline (TOC) extraction. * Tagged contents extraction. diff --git a/pdfminer/image.py b/pdfminer/image.py index 39265fb..c69b700 100644 --- a/pdfminer/image.py +++ b/pdfminer/image.py @@ -1,12 +1,14 @@ -import struct import os import os.path +import struct from io import BytesIO -from .pdftypes import LITERALS_DCT_DECODE + +from .jbig2 import JBIG2StreamReader, JBIG2StreamWriter +from .pdfcolor import LITERAL_DEVICE_CMYK from .pdfcolor import LITERAL_DEVICE_GRAY from .pdfcolor import LITERAL_DEVICE_RGB -from .pdfcolor import LITERAL_DEVICE_CMYK +from .pdftypes import LITERALS_DCT_DECODE, LITERALS_JBIG2_DECODE def align32(x): @@ -57,9 +59,11 @@ class BMPWriter(object): return -## ImageWriter -## class ImageWriter(object): + """Write image to a file + + Supports various image types: JPEG, JBIG2 and bitmaps + """ def __init__(self, outdir): self.outdir = outdir @@ -68,21 +72,15 @@ class ImageWriter(object): return def export_image(self, image): - stream = image.stream - filters = stream.get_filters() (width, height) = image.srcsize - if len(filters) == 1 and filters[0][0] in LITERALS_DCT_DECODE: - ext = '.jpg' - elif (image.bits == 1 or - image.bits == 8 and (LITERAL_DEVICE_RGB in image.colorspace or LITERAL_DEVICE_GRAY in image.colorspace)): - ext = '.%dx%d.bmp' % (width, height) - else: - ext = '.%d.%dx%d.img' % (image.bits, width, height) - name = image.name+ext - path = os.path.join(self.outdir, name) - fp=open(path, 'wb') + + is_jbig2 = self.is_jbig2_image(image) + ext = self._get_image_extension(image, width, height, is_jbig2) + name, path = self._create_unique_image_name(self.outdir, image.name, ext) + + fp = open(path, 'wb') if ext == '.jpg': - raw_data = stream.get_rawdata() + raw_data = image.stream.get_rawdata() if LITERAL_DEVICE_CMYK in image.colorspace: from PIL import Image from PIL import ImageChops @@ -93,9 +91,18 @@ class ImageWriter(object): i.save(fp, 'JPEG') else: fp.write(raw_data) + elif is_jbig2: + input_stream = BytesIO() + input_stream.write(image.stream.get_data()) + input_stream.seek(0) + reader = JBIG2StreamReader(input_stream) + segments = reader.get_segments() + + writer = JBIG2StreamWriter(fp) + writer.write_file(segments) elif image.bits == 1: bmp = BMPWriter(fp, 1, width, height) - data = stream.get_data() + data = image.stream.get_data() i = 0 width = (width+7)//8 for y in range(height): @@ -103,7 +110,7 @@ class ImageWriter(object): i += width elif image.bits == 8 and LITERAL_DEVICE_RGB in image.colorspace: bmp = BMPWriter(fp, 24, width, height) - data = stream.get_data() + data = image.stream.get_data() i = 0 width = width*3 for y in range(height): @@ -111,12 +118,47 @@ class ImageWriter(object): i += width elif image.bits == 8 and LITERAL_DEVICE_GRAY in image.colorspace: bmp = BMPWriter(fp, 8, width, height) - data = stream.get_data() + data = image.stream.get_data() i = 0 for y in range(height): bmp.write_line(y, data[i:i+width]) i += width else: - fp.write(stream.get_data()) + fp.write(image.stream.get_data()) fp.close() return name + + @staticmethod + def is_jbig2_image(image): + filters = image.stream.get_filters() + is_jbig2 = False + for filter_name, params in filters: + if filter_name in LITERALS_JBIG2_DECODE: + is_jbig2 = True + break + return is_jbig2 + + @staticmethod + def _get_image_extension(image, width, height, is_jbig2): + filters = image.stream.get_filters() + if len(filters) == 1 and filters[0][0] in LITERALS_DCT_DECODE: + ext = '.jpg' + elif is_jbig2: + ext = '.jb2' + elif (image.bits == 1 or + image.bits == 8 and (LITERAL_DEVICE_RGB in image.colorspace or LITERAL_DEVICE_GRAY in image.colorspace)): + ext = '.%dx%d.bmp' % (width, height) + else: + ext = '.%d.%dx%d.img' % (image.bits, width, height) + return ext + + @staticmethod + def _create_unique_image_name(dirname, image_name, ext): + name = image_name + ext + path = os.path.join(dirname, name) + img_index = 0 + while os.path.exists(path): + name = '%s.%d%s' % (image_name, img_index, ext) + path = os.path.join(dirname, name) + img_index += 1 + return name, path diff --git a/pdfminer/jbig2.py b/pdfminer/jbig2.py new file mode 100644 index 0000000..39393e5 --- /dev/null +++ b/pdfminer/jbig2.py @@ -0,0 +1,321 @@ +import math +import os +from struct import pack, unpack, calcsize + +# segment structure base +SEG_STRUCT = [ + (">L", "number"), + (">B", "flags"), + (">B", "retention_flags"), + (">B", "page_assoc"), + (">L", "data_length"), +] + +# segment header literals +HEADER_FLAG_DEFERRED = 0b10000000 +HEADER_FLAG_PAGE_ASSOC_LONG = 0b01000000 + +SEG_TYPE_MASK = 0b00111111 + +REF_COUNT_SHORT_MASK = 0b11100000 +REF_COUNT_LONG_MASK = 0x1fffffff +REF_COUNT_LONG = 7 + +DATA_LEN_UNKNOWN = 0xffffffff + +# segment types +SEG_TYPE_IMMEDIATE_GEN_REGION = 38 +SEG_TYPE_END_OF_PAGE = 49 +SEG_TYPE_END_OF_FILE = 50 + +# file literals +FILE_HEADER_ID = b'\x97\x4A\x42\x32\x0D\x0A\x1A\x0A' +FILE_HEAD_FLAG_SEQUENTIAL = 0b00000001 +FILE_HEAD_FLAG_PAGES_UNKNOWN = 0b00000010 + + +def bit_set(bit_pos, value): + return bool((value >> bit_pos) & 1) + + +def check_flag(flag, value): + return bool(flag & value) + + +def masked_value(mask, value): + for bit_pos in range(0, 31): + if bit_set(bit_pos, mask): + return (value & mask) >> bit_pos + + raise Exception("Invalid mask or value") + + +def mask_value(mask, value): + for bit_pos in range(0, 31): + if bit_set(bit_pos, mask): + return (value & (mask >> bit_pos)) << bit_pos + + raise Exception("Invalid mask or value") + + +class JBIG2StreamReader(object): + """Read segments from a JBIG2 byte stream""" + + def __init__(self, stream): + self.stream = stream + + def get_segments(self): + segments = [] + while not self.is_eof(): + segment = {} + for field_format, name in SEG_STRUCT: + field_len = calcsize(field_format) + field = self.stream.read(field_len) + if len(field) < field_len: + segment["_error"] = True + break + value = unpack(field_format, field) + if len(value) == 1: + [value] = value + parser = getattr(self, "parse_%s" % name, None) + if callable(parser): + value = parser(segment, value, field) + segment[name] = value + + if not segment.get("_error"): + segments.append(segment) + return segments + + def is_eof(self): + if self.stream.read(1) == b'': + return True + else: + self.stream.seek(-1, os.SEEK_CUR) + return False + + def parse_flags(self, segment, flags, field): + return { + "deferred": check_flag(HEADER_FLAG_DEFERRED, flags), + "page_assoc_long": check_flag(HEADER_FLAG_PAGE_ASSOC_LONG, flags), + "type": masked_value(SEG_TYPE_MASK, flags) + } + + def parse_retention_flags(self, segment, flags, field): + ref_count = masked_value(REF_COUNT_SHORT_MASK, flags) + retain_segments = [] + ref_segments = [] + + if ref_count < REF_COUNT_LONG: + for bit_pos in range(5): + retain_segments.append(bit_set(bit_pos, flags)) + else: + field += self.stream.read(3) + [ref_count] = unpack(">L", field) + ref_count = masked_value(REF_COUNT_LONG_MASK, ref_count) + ret_bytes_count = int(math.ceil((ref_count + 1) / 8)) + for ret_byte_index in range(ret_bytes_count): + [ret_byte] = unpack(">B", self.stream.read(1)) + for bit_pos in range(7): + retain_segments.append(bit_set(bit_pos, ret_byte)) + + seg_num = segment["number"] + if seg_num <= 256: + ref_format = ">B" + elif seg_num <= 65536: + ref_format = ">I" + else: + ref_format = ">L" + + ref_size = calcsize(ref_format) + + for ref_index in range(ref_count): + ref = self.stream.read(ref_size) + [ref] = unpack(ref_format, ref) + ref_segments.append(ref) + + return { + "ref_count": ref_count, + "retain_segments": retain_segments, + "ref_segments": ref_segments, + } + + def parse_page_assoc(self, segment, page, field): + if segment["flags"]["page_assoc_long"]: + field += self.stream.read(3) + [page] = unpack(">L", field) + return page + + def parse_data_length(self, segment, length, field): + if length: + if (segment["flags"]["type"] == SEG_TYPE_IMMEDIATE_GEN_REGION) \ + and (length == DATA_LEN_UNKNOWN): + + raise NotImplementedError( + "Working with unknown segment length " + "is not implemented yet" + ) + else: + segment["raw_data"] = self.stream.read(length) + + return length + + +class JBIG2StreamWriter(object): + """Write JBIG2 segments to a file in JBIG2 format""" + + def __init__(self, stream): + self.stream = stream + + def write_segments(self, segments, fix_last_page=True): + data_len = 0 + current_page = None + seg_num = None + + for segment in segments: + data = self.encode_segment(segment) + self.stream.write(data) + data_len += len(data) + + seg_num = segment["number"] + + if fix_last_page: + seg_page = segment.get("page_assoc") + + if segment["flags"]["type"] == SEG_TYPE_END_OF_PAGE: + current_page = None + elif seg_page: + current_page = seg_page + + if fix_last_page and current_page and (seg_num is not None): + segment = self.get_eop_segment(seg_num + 1, current_page) + data = self.encode_segment(segment) + self.stream.write(data) + data_len += len(data) + + return data_len + + def write_file(self, segments, fix_last_page=True): + header = FILE_HEADER_ID + header_flags = FILE_HEAD_FLAG_SEQUENTIAL | FILE_HEAD_FLAG_PAGES_UNKNOWN + header += pack(">B", header_flags) + self.stream.write(header) + data_len = len(header) + + data_len += self.write_segments(segments, fix_last_page) + + seg_num = 0 + for segment in segments: + seg_num = segment["number"] + + eof_segment = self.get_eof_segment(seg_num + 1) + data = self.encode_segment(eof_segment) + + self.stream.write(data) + data_len += len(data) + + return data_len + + def encode_segment(self, segment): + data = b'' + for field_format, name in SEG_STRUCT: + value = segment.get(name) + encoder = getattr(self, "encode_%s" % name, None) + if callable(encoder): + field = encoder(value, segment) + else: + field = pack(field_format, value) + data += field + return data + + def encode_flags(self, value, segment): + flags = 0 + if value.get("deferred"): + flags |= HEADER_FLAG_DEFERRED + + if "page_assoc_long" in value: + flags |= HEADER_FLAG_PAGE_ASSOC_LONG \ + if value["page_assoc_long"] else flags + else: + flags |= HEADER_FLAG_PAGE_ASSOC_LONG \ + if segment.get("page", 0) > 255 else flags + + flags |= mask_value(SEG_TYPE_MASK, value["type"]) + + return pack(">B", flags) + + def encode_retention_flags(self, value, segment): + flags = [] + flags_format = ">B" + ref_count = value["ref_count"] + retain_segments = value.get("retain_segments", []) + + if ref_count <= 4: + flags_byte = mask_value(REF_COUNT_SHORT_MASK, ref_count) + for ref_index, ref_retain in enumerate(retain_segments): + flags_byte |= 1 << ref_index + flags.append(flags_byte) + else: + bytes_count = math.ceil((ref_count + 1) / 8) + flags_format = ">L" + ("B" * bytes_count) + flags_dword = mask_value( + REF_COUNT_SHORT_MASK, + REF_COUNT_LONG + ) << 24 + flags.append(flags_dword) + + for byte_index in range(bytes_count): + ret_byte = 0 + ret_part = retain_segments[byte_index * 8:byte_index * 8 + 8] + for bit_pos, ret_seg in enumerate(ret_part): + ret_byte |= 1 << bit_pos if ret_seg else ret_byte + + flags.append(ret_byte) + + ref_segments = value.get("ref_segments", []) + + seg_num = segment["number"] + if seg_num <= 256: + ref_format = "B" + elif seg_num <= 65536: + ref_format = "I" + else: + ref_format = "L" + + for ref in ref_segments: + flags_format += ref_format + flags.append(ref) + + return pack(flags_format, *flags) + + def encode_data_length(self, value, segment): + data = pack(">L", value) + data += segment["raw_data"] + return data + + def get_eop_segment(self, seg_number, page_number): + return { + 'data_length': 0, + 'flags': {'deferred': False, 'type': SEG_TYPE_END_OF_PAGE}, + 'number': seg_number, + 'page_assoc': page_number, + 'raw_data': b'', + 'retention_flags': { + 'ref_count': 0, + 'ref_segments': [], + 'retain_segments': [] + } + } + + def get_eof_segment(self, seg_number): + return { + 'data_length': 0, + 'flags': {'deferred': False, 'type': SEG_TYPE_END_OF_FILE}, + 'number': seg_number, + 'page_assoc': 0, + 'raw_data': b'', + 'retention_flags': { + 'ref_count': 0, + 'ref_segments': [], + 'retain_segments': [] + } + } diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py index c6e8d86..96e255f 100644 --- a/pdfminer/pdftypes.py +++ b/pdfminer/pdftypes.py @@ -27,7 +27,7 @@ LITERALS_ASCIIHEX_DECODE = (LIT('ASCIIHexDecode'), LIT('AHx')) LITERALS_RUNLENGTH_DECODE = (LIT('RunLengthDecode'), LIT('RL')) LITERALS_CCITTFAX_DECODE = (LIT('CCITTFaxDecode'), LIT('CCF')) LITERALS_DCT_DECODE = (LIT('DCTDecode'), LIT('DCT')) - +LITERALS_JBIG2_DECODE = (LIT('JBIG2Decode'),) ## PDF Objects ## @@ -275,6 +275,8 @@ class PDFStream(PDFObject): # This is probably a JPG stream - it does not need to be decoded twice. # Just return the stream to the user. pass + elif f in LITERALS_JBIG2_DECODE: + pass elif f == LITERAL_CRYPT: # not yet.. raise PDFNotImplementedError('/Crypt filter is unsupported') diff --git a/samples/contrib/pdf-with-jbig2.pdf b/samples/contrib/pdf-with-jbig2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b110fb44180da31490d917d21d0c867107969a6b GIT binary patch literal 10213 zcmai)1yEc|x9@Q$fuKPLcNiGl-QC?iz~I3hf(3VigpdHi-Q5Z9?(XjLNX|L;p6|Z< z>UGuL-TU9NRzqS?)GK?CPgC) zGo;tMqnVvEfaSGY8Hq{R%n9t`Xkz9B0R1J%nVDJ{34`4LI>1+fgNp^g&dj3sIuPt^ zHi2Iw%odiLsrnVU0! zNy_%s3E{tMk-uxH*Y!0OjIGT~oB_Yx)s#|{719z@1_IdsF@W?hBfrIejL4eVSvXq) zI5{{tk^bK1-zy<8skj(B|JnE-qex7`R?bd}W{x6YTYIqG?-(#6F=<$tzD@_RaIqsX zNt#(%SiVMvjqSDL&m1`;rw;&UN0-;IiCft?n>hlQq=lshAwnz{V5RgC!$kz%30s>_f0s`>{0)mn3&lPt4Dnmg) zzV_m^BS1jCygoYqzP#}`2WLBO*Hg%O)Q=HN7MNKHiZ=dt{B+U2-~78q_w1&oMSM8h~<{G91=eadBAleT)cRVi#D(``Jrz{+Goeo6sH3O zrv#}BbHsAGjUf=(Sj(RQ((;w>_R?Fw9&qo~V0b>p_Wp=_^WvwP@v(xlWSLVO)t`6` zdbIAdh*i<1(U%kw!pyz>?*047gAGl_bT|#7RB9i*@v-G=3PG(-xptwwJYw*^%uz}_ssy=ITwj>$YS?f~`qgG=^ap zBo`kgmH=<%S@3#WlqFb$L%Haz9D(qki@((X&=|_-^XZAFUa>U_8|Bp z@g~D%Z5Xx84HlFWn0=iQu93Q3^a%cg{Ko93;ri5T%%DN*f zO}QpUjd?TjFqzWZuzEBOlT?_Na?w48a4uZ<2MZ-bpg)@=T9hYx^^G!{Gafke~O+4gp3KR zL=rhuW=5#)7TeOT?k#Uhy{R3B^c2N56MM6w8EP{&tCFbmq9_AF-#tIE!fhUnqmHMj43K9QD=)?)Y$AXBv}u&pfXV&VwY+0V6^x|s*W3eI(+hg zldG{$gy2yXWuhCv)1UD{-))Rs?SgH47Mkf8_ZsOvA81lQBgt>Pq3%j8!GjFT9tj0y7u#Cn(n)mK8{3sR3V1NrV}wK^%i-~i(T`Qr zReEpRqKjun!^VNprn@}LcT%)Us-3^^Y+4=DR)pD;D47fLsyn|4&@R$rY2)&_!Nm3G zKiF!oBS?Y7Oc!`VvBz&?DiIhr$ts|k-G%VnqIUiE@ut8x)*_#EEK#idb0+!c1swHq zcyQ`Iw_=hOVtqDj27yTisklS=G%VDNmkWzJ*0VrJ8x{KDXMV_@D}mh?P4-vO)zK#}0}gM4jZJSVt0(b^)8^0`yrHmo z5wU)0L7TVOU87Ubs01IEE5OL!!8}Ne@}I7OWP7MER0J$1IEf!#$*HhqBYc8$OjkV9h6-G~ZkP z_&%k7r56JV80K>cT+n~spxQCZt$SkH@5vpj#o=kpZ7M~{Oq z=l-`;Y44rVCaXyMTlyOvUhJm&x7D}y_}ui!F+Ul<0oP!~Mx%dke1D+dVjT9%(whpa z25BMGM4v6Wu5@=SqB^52&ESN}%{gJATBeJEJ$&4l5y;A|BY2*C0W4 zl}%fnkoy?k4g6x7Lm!1Mos9dj+05TF4}=8fHqin5d(fMV)shzhHH1xd10B?0iv%^D_#!JG_D^EKcFiqA#u{QYT??Pb*Bs#jx~ zlib?EVvsU24C&5bzKE5`62GKqH7!?8eikzMQKT}^MV_8C+7W6*d5(QJ$@}eo9s<@` zZyMv=l3)6OH-I$yPF`@$5GVXgKb{rhS*xO?F=5IS`EW!dYwZc52)|d2RlCN6u?CDq z7lTP`TLdv{3K~&QDDz=eGYhT+Z8^es-;IaW`qmw-eV=(&BfyP97?y-^izg6Y3jaGN zf6uUfrbV+VFSB6xi66HQq;RilSseV#s|)>@b3S+gbZ= znwgE0-O@dR_VB=AtN}IRXHv!k_dv6{Tcb|WVfwtD5$m3~>~NdI7h|a~sq7pI z$Q}~vzaI?F*?Iiw1vzE8XnK1d$dSzL^x1KCZhkP*b;Fd0s>Wx6NQ$4@pT5vzny;6aOgr<$Zu8MuG@%+gxBtPQac9XHT#bSZZJZAk^-y_1W(eh+U}c^E`J;~>Veyx(Dy1mQ z0r&FE+89-`>M-*;t115v)BukX7zDyfi-LX*_P1+(A2l`EhELbpJ>B29jNiylPAzXN z%i+6<3WmG*Eah@P!bUl5*x5{fvmHwn3EcK!GPWPmj>pIusy>@)18I2j-br8kElowL z%@5iqrGkW!;Z z2lltL+oHF2EO;dyQQ@s4ehH|5u_tf%f%pCTfI)!2Qe_Ia?<6N1w{h+{m@Pug0@_}Y zNdyVQHy#-#W*fcN>*{0NNFuetUmH5p7YV-EHz;7G-&Sb3; zvW+8)@Fh4)Pdf$KZnWUM=t5QV_6_D)M#2^KXyy;PQ7}KUGSy8&-!-ijhus|;e7#84 zX!hbacC)83thZ6+@!X;zRwR{8t_x3m-5vuDW#|{zSv`>-O4?0kvOqqI2@SXd5m_^b zt%km|Cq;CA^5IW=pRME0h^%M%A(qih3nA4iZ^vxoh&y8Tz4!6tJcKo=D{-E#mN5r% zk>n0HvP}$HzM0;C^NHx&y`Ri2>4}hnl9Fp@a}7AL5u<8O$HG1j?(n7NWw?r|E;3+( zq$V_>7UZ4imf8R{j4>wmUsj>kl{SQyPz&uKIK;@{*~T2fXv|*|vYCW`$RSY7rdcKD z^Lj7c!NX>YV*I7ZL<*qowA^{csvR-P2P~@p>T2V6(rs3;3SPSd|7z7;Q`ef2)Ye>E zz@sgc#xHaAQa1Nosr!~ITdhr}A9vQP=Z5-u5>{3P9vAdeN zdt;#ec8?FF#fhrv267B4jobqhs-QWs4>a;k>8haaajm9G+@>`?7s)V>zAzdYma8FE zh^6Ois++J(?(_%?lK4ec1Mq)R*1&@?zskU*BH8fgaLdu~jhFUQvd0^pWy=1Lwf%KN(0Q^Jm3HGNq>ln9+Z1Wvn{jnbxgaB?ydXxet zWaI}q8emBRBY7ml=6JHrmR-rA%hW7NI;! z3(Q>KST(-V51VCc9>Dgh5-}!X^0g_H^FNP!4gnijM(>h=F1v|6BRy=axWHS zVo3X?@JW{do|7g69ytRyj89B!noZ7zfdI!vj)!E9F~u(TaEtyi%exOb9-47n=>${X zRaMgsTe{kE7$!b=r?CddFDQ_rTXT+D{?K4QT;0HFgFj6=7td$wj#nYGvksK0PG*^0 z?4%T2wF~DW6<*YX6nkYnDkbH!z6omRj&N>9sjH+4(yv)m?qu*iSqp0D91g73+P}Rf zXngu~u3>TtIY{s9*;xIZE9CR-v)rtLWW$uZRp>7~ba^cqzTch?^1C!g8rG8V|K<+n89<$>f23T-#}Sxwd9zCcu2$}6LRM31BDdWcOC%)o3P<839Pg8<)v zL)u=Nh52Rij)c8p6XESsaV&KWV+J)5M0(84H^+dzS!JAi>xgL=|) z^^hIv#n#yHcJ{{l)QULmp_($gWE7vs=te+L&xW|Zw~W%@c0V2Bxh`YbS?_vDSd3Xo zW@EaN^8?a!h#ZLt%j_a~NwDX~pd~vg7BWMS0Be9mKMq{GPrPrvP0+;_S+WU14BOES zYz0={>3#NY=RvQJgk~^AU66M8uWCgoxpW@k)BJkXcig&_zV%;ve`=MQ@^4D62V+Ce zF8%D%^59D|rAaA`R%_`*Y&DfAQ;3%GtlYpn|JS z4jJL9$U4NhOYi1m3fiQ-2HTgZu3#I4q_A}9)=l~9X^q2U*Pdr&LyqS6RLC{GfPH0n zRF%b|WfJTTY0SD?HIVX8JvVw^Q60%It9L+GvWyQBMhvD{iEI}W@}A{9 zmYB7QHo_*BNVOH%32@35%`wgaP$|2Yd_h%Vzf8>*-Bdjn&BR1dWp&l89j!aMEt@X4 ztNKBm&d*VC`VDC{7OLrq`6VXHMtcFF>6|WFg{5xZ z!NO<%FdWi(vu|2Zwh`3%5cTppFzOSRAF{|$!nV|#|29pR)(C2)ZB(S1OzYcjkdPU3kFlEGLG`a8>#HD!_Z>w6kSP#GKl3kFs z*^r*(FG>r~Ga1mN)6!?Hx$%M>$3eFld`J|_whAtpW9G89D_tFvhxw&1ml2*wy-9s7 zpClJJJbeg9r}^z_crKd=;y0vG;>5-kTg%DWw?1vMuaP}}xs;^ggxo8Y3m!ZlKibs`Gb@I9J7G15&Tczih}x;By2r6yO&xp- zDLB8C%2!;)Y8k6xJXx01b*)R8eJGn@S3NAe=j_ZS)5eg;#sxvfOYaN{i~AP_s3?5g zjjEO|5kZ9l;|6V834F(-Ne+;F;Jqes9(;SRQbu7of6FY3zet8f>8%P;83t%Cj5Wa0Ywh zxI}MR9>+vW@@ed}E%rW96{2foA)pACPkOOh_$BGnvRktkJh31&$7hj1a;unvB$P&R zrcKT^t1dcznKcD(_^Kih7SmW@6>k5ivCOs8k2Kq{JoSUe%J(j_$|!WI!5A$}??tph z+(&#8X2LHgo%sum zb%5nTwSRwk*$fRw`Ny>O(q?J;ckF>KkkC9XGAPR{;v?H1N9^fb#+lbzP0Y{ggIY-@ zFF_Qjq0eZm(u)HXBp~#a>Q+Ae>oz(Oj9$+ENRfzj_L9JM>%MnKylVyc)Y6yPfg&X}kNroqu6lE>Pl3fKs5 zpM{~&P9fQlKVrcxE1vs9RcMJ2gd@!%Eka33rRjRlx?x~5jzp8-qGZzj+yvBhiTo6Z z#Vxe5&dP6KgI6-ut~1nM?(j*J7(2bxoK-+U7aDxgF;An%ycKbF-Mg8d0_*g^e^fLDe?leQFL%OV-WOW*FiQ z&5q#Q+)&!)5)W)DA!pyd#D`-}Sy)-8B;(E(XgGw?JH$v3 zEt-Z^L@khnldC9ttB+vt%TlQSPJ2^KMy)i4#2c>K+^v4U z(1rVH{nX}67S338?o*Z34XLQ@(R>U5kpa{+2^F1wPQ>zmh|H66w*C1SeW z;<1&w5gdaVNpfKrFNlIK%?(*QevH^`g;1Yed%`Y(;v%agt&b7+WzRP(tVyju;DuZU zsL?`ZtT0rT^^xPqt(dGsE=hb9^mY)1Ufs}I(%sreTpM-tjUOgqWrAsQ(+fG-{p_uX zTi(tl-=82^F8n|P)s47H7yo1Y$Xz3sojTZpsmZ!=lf(6xlyf&K?v|IlUzh)ob@<(mO~gpHXxuL}=5p@a%>n--`Pps?C zMT*etpeDN;w`o?MuV7`-z3 zPO`Gk={r;MCLchl>;|<)p%{CMJ+QmnzJHd4Vfk}-2J?DQ_Ioi{IN?7Q;LiTC0H5{O z@~@o;2(J#Thn>IAadn}b8feBi3=`qFVA>qcE?*d`;loJ$LBxk*?cvl(tx>}op&BrH z=QK0*V>`)ST^_H}Y3jZ{*k>&V)d63-nk7K5p;6Ff7Vgx3R?jOg9TDNA8AW4UrMwYu zMeRca8tecb{AXBhN>?DM-CB<+manS5P|+XZippI z*AuqQ=pPSNOv$_9G-QLNlF>Xon*PQ3?{&9h%n!H=0GTf6ZwS7+Aq^-b`F)96WO9Eb zq44Z^FIBLqqkceB8# z{dQGDWYxc($lv|8MzLeeGeP4~NbIDX9B25EK%3n6t*F=8xN-=*CatK+w0H@IJJb6l zZr4uLQb6~E?r4FPlg)!=nMW49ev0jt3M!^6o^;_TZnLiXx1oAQgG@}y)|3g_)Yt<* zm~kxGwAkpHErU1#9t%ESa(o-v1(I)!TMYsX=W2+?adL0)u*^99nU!gxg-R4V;*l7i z!5>Z1L3UM_Jh{c9pVcfKx3Vn730yvHcxohUrITEKDJhM{eKX@FEUspM3fYI3Tm_~i zURzoU6>AltOKR8(8nk_Q-c(KB^dfASD6Jjl+7tPug5|Kt{vs6R-^MCh_7Gs@{FUL#E!!maogwtFEHiFH}TcpH1gv7Si4CBMw#n= zCVaO_0tg%$5Obk0(4!Qb)tOy~Pj>Tlo1k%7jbBG*l@bJ#@`CM|?et1K5Fw||cZo$a zUdx!#e1ZDeXhdaSiGg>PE-g`!UKH-Ex2Hb<-6^f9O@VB61zb@KgDpYfx@362hMgnu z?U({wcXRLC3kflZ8{EtT;)@`JDrQ$!T1C4^S$&lQLtCH1(>Hm%JdUWMKf07ku{{W$v@5-!WV0x2+wh?ZzExD2okG# zNQccNYQxm!i^_Fo=slKB^H)CORCBsR2%f78Z#=WOq>9tJ2sqrAu!h#Nuk4OcHQl6_ zJwz3Mb?@GyuzV+A$Sr!t6bH7JyP43fH6UwEBgpE_ZR+bIKbqPD;7$-1U$e30rei5%_mrBbOnMk(iIn#k$7o-@VL z1Pmaz*t5;bYRD(N#s!+^OIBfztA-O!ojJ{R+RpxGB z7#OaZB04f>@qW^&zgx3s(s{B>JvK7<`hrOTOLU)0hqXLoQbCm%JW#(B#-dDnR4kA@ z*!Ym+g5T-!bm2762S@=aGO(x&79#XbG3UY_t_tgo8J*B_A7LC_H_}~$&q>AId#h9njX2TG zx);Bg_&v5RV^2bFz%iz#v)r1U%N33^>%opl82LR)9vzVkd00uV7jTGe%o|JN9SgT zA%Lkpx+uq#@N3#+__jP(Q$8=!-DTtRnfL|jJKfvMa0z6N7T>f!!R;S2 zhf2KtE3*Y296kB1Xdzp=5WZPCVF)yv0=2rqOmRz@#lRQND@@+^uu;lNB=pGXH>7fl zo)vqN^Gb|`rQ3ZXLF>H6=a~QH++RSFh>^3A4cOv0lVtHqApM0T z{R{N@E&Q{c|3;XckeFnwOq~EazX>PhS9C}O?D7ZZ`Pa)~y2AFr{2KrYI0_|IzkjWGR{-ba zyA~jT85ZXExl7n3#)z$k-HYQhH^{L0Oh0sxA4i38BSFTBL;b%-{Oh-Hb2KwY0s^>@eka*q1;Eb624Vx41OC>y zKpd~B`?~<_{!3$J`M)$EGw78t`_FMeAoD8__MaLTE9Ywl{HF$F0lg;7e`;JTEU(%B zKQs=u*Sz~jLvnUBva&IA{DaY{Sb3Pe?&Fn(1HZy!zq9X^6SFf11AfQ&cUu&o!wY0J zGBxHj1(|Yim;qTh*^PnbAahm@PBtzURx>kZQ+~kze~8}izpRt9k)!jU;Bj$sG9yt? Ih$)EwAGZd3AOHXW literal 0 HcmV?d00001 diff --git a/tests/test_tools_pdf2txt.py b/tests/test_tools_pdf2txt.py index 188f652..3b09140 100644 --- a/tests/test_tools_pdf2txt.py +++ b/tests/test_tools_pdf2txt.py @@ -13,6 +13,7 @@ def full_path(relative_path_to_this_file): return abspath + def run(datapath, filename, options=None): i = full_path(datapath + filename + '.pdf') o = full_path(filename + '.txt') @@ -89,5 +90,27 @@ class TestDumpImages(object): self.extract_images(full_path('../samples/nonfree/175.pdf')) + +class TestDumpImages(object): + + @staticmethod + def extract_images(input_file): + output_dir = mkdtemp() + with NamedTemporaryFile() as output_file: + commands = ['-o', output_file.name, '--output-dir', output_dir, input_file] + pdf2txt.main(commands) + image_files = os.listdir(output_dir) + rmtree(output_dir) + return image_files + + def test_jbig2_image_export(self): + """Extract images of pdf containing jbig2 images + + Feature test for: https://github.com/pdfminer/pdfminer.six/pull/46 + """ + image_files = self.extract_images(full_path('../samples/contrib/pdf-with-jbig2.pdf')) + assert image_files[0].endswith('.jb2') + + if __name__ == '__main__': nose.runmodule() From 733ddf7e570d9d20c28de7f965c07aec464a936d Mon Sep 17 00:00:00 2001 From: jbarlow83 Date: Tue, 22 Oct 2019 09:15:59 -0700 Subject: [PATCH 06/21] Added: tests for extracting tests from pdfs with Type3 fonts (#205) --- samples/README | 11 +++++++++++ samples/contrib/matplotlib.pdf | Bin 0 -> 5541 bytes samples/nonfree/cmp_itext_logo.pdf | Bin 0 -> 1893 bytes tests/test_tools_pdf2txt.py | 9 +++++++++ 4 files changed, 20 insertions(+) create mode 100644 samples/contrib/matplotlib.pdf create mode 100644 samples/nonfree/cmp_itext_logo.pdf diff --git a/samples/README b/samples/README index e0fa424..8bbfe0c 100644 --- a/samples/README +++ b/samples/README @@ -20,6 +20,17 @@ jo.pdf: (File generated from jo.tex by LaTeX and dvi2pdfm) -- +contrib/matplotlib.pdf + Copyright 2018, James R Barlow + Example file created in matplotlib to add a Type3 font to the samples + Released under the terms of the "LICENSE" file + +-- +nonfree/cmp_itext_logo.pdf + Bruno Lowagie + "iText Logo - Type 3 font" + http://gitlab.itextsupport.com/itext/sandbox/raw/master/cmpfiles/fonts/cmp_itext_logo.pdf + nonfree/dmca.pdf: U.S. Copyright Office The Digital Millenium Copyright Act diff --git a/samples/contrib/matplotlib.pdf b/samples/contrib/matplotlib.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2f4c0a492d2ed069ef8e46d1924851328f84f789 GIT binary patch literal 5541 zcmb_g30PCtwnh=f;DiVjMD7tpp$IuSC!>PMsFWELvEUFwfJ8_jIcNk+RnTfLwhpK` zrRCxP#g?&Fy?{_JiX%!9^dUG~ts)>&9E#qxPY6cv`Sp9>!*99I*=O&y)?Vx1Yya7{ zL7v`@EGIU@_Q(ya-~@w(;g~#1%5ZkZm_fo=u@WPoCj?{8UzI4vm>xn(7%z{-X3u7b zWzlFLUuS}sikcfr2`Mqg)=cu2%P5T0JO>FWO01A!9Q4Xy1}WsCP%(u?fE`b7&@Wa| z7}F;KY`XWg9(}D3wisiE#tEY(vRI6(nI0Y(B^8S(j7KYf=MD>p4($TmWHLFW1QRgd z16&cy;7y=WFjpZ@PQ=hMJwh?2r+9@#Bo3Jirr~YALMT%v3Ke3RXq9&5n(<(W=`W6! z2;Jo>(2IpK?wQ<@%H12Y+98nQ*oG^3TlTkt^0N zGcsQBX4RU)j*H*%<`i|*aXpt#UYDH{XY5~jqi5H6n;4U>!c^W*J8ya%8(q5c>4Vl^ z9Nlkiw0Dt-+(M-nZyf(LW^(Q8&yKFUU)ZGHUb%Wh=g6bow_K)_E&0sK{k89w%+Ir} zn}R9n^Lv-vGLC@z96mp*9ca&Z2H^Kis>0!iDwT%nJPpyacuW z%$EjpI_<`9UQD$Y?k|_#CFcaHhpUFwdUkiWR)=?OJut7*CU)wVR=f^_w3KG-P?n>z zx&3m%%jY3uLq&whC-T;@{YNv-Jxd8*v_W$IF89W&u!JUCmDJ}3ch67H8%Jb+@pWQ% zf!usYojh>F#WxYXrB{g=)sGEks}DtSJYyE_z3JMx_i>G7V~>e`LX`XZy1Thgals#} z&lGsaB-~t;vbAW`mwJaMsz;#>+6RultxAIip^HP}+U?6i8|d#Kjua5@!ObPaS7yL6 zY_79EHs@f6ze1hg`n2WCh`kr)|G;4CA7y3j8kKMB`p347q+eRMV)32eXBF|%*auUd zI&lxZ2v;mUvEiEH%ATm=K+Cht+OqlKIbkii9-Zs$OvdUt-dbyLyVCM)=O=m9O-1V! zr&6PbF8i!OHs`d*74vzE+>C{I0wb-xFr?J$^iZis$G zZ|k@sNQtfc;CH|XB@urnvhp+XPDOHW|Fizyrw5Q z*K=jrkVYGmt8upDMvedVQXBqEb$ZqHR@1Tv&pqREJ*^tPF?O*lsky(;wCM0(M=lmy zs>e=Cm6v^+b>Tu@hH1l!l)R&LqR9;_)vsUuHN;6T$NU3H)-A{%Dy?pv_b{k)X z8S1x}TL%VtUVclZ)W2O?&@iT=Dq!d)Gp}{eIZ|Kz=`q4|d60c})~>1rc%;$)JpI?X zH-wMh{tdsS{-U2=(wUTA@ALZ4q!hh^-jv}jW9u!g!$08R-z{<^fK#`^aYB3*9ss$M zp^0lRWuN>)O_fNWp8PRmx`|NMq_FM?5=`kyv zQ0G`Ux6b$%N5-&V6PFjnbW`hwx`u}{Rl;4f^$W)Z*qf7k1aZ{`J`2N#>UY3i`Uk>-X5A0x5Y115(FH;ry6QsFk4NbA||a)O_r{L0jNRGp1`op5T%}4+yt4EQzgv{i`Ki$C zYP!Fglb;b&_Khg|l&a@fzfJ2moEjgr_lq4Pf7tcyZ#PET9GdIDqV3m`2yXin&)k>f zjI8Q2c2kFZ6(E|*s4rS$yjD;xII_KuO5cF=B;f%+Rg_oEhon zkM&(e3|>l-%J1~`wq$e8u+*mIfiXdZ!zW2+|6>rEe64o(slY>-Ms1OGqic^FH;N}7 z*t_F&W`>Rbl#qEje@x3K-L?$NEeOutY*~}`=)BE-;Q|}!sMnFc%}q*^OBU=|W(CfI zgL4<|JAbyu$YDfp`Nb-)`4$Dv-vdFO@8-N!Hg($6~>VfKLl>QbeT1`s&OdoT_|ULm`mi$4TqQMEtQcnOadz2A=?OFc@G|G`wge2h z^EU0&Q^$Kb+q%xFC%v4sudQQNsqFT2=?d#B3R9w?lznERp^2B3^D3`HiFZmHS6*e0 zZ-_Ap*g52<0N2bhddsYrEL!vACr^QI{Wk}{lb4_A89PTWv}|x_Scv0k4;6QzQcUwe zAX!pjSaK+EDqDH)TcS`>$R;?(MBcb-2%IAeCs>#x zn@eIWo`8+92$DqH4Gr-WD@6)PA|+Q~ESk@P8tC>HQVOsL8t}S46P#q&FC!kva5B!CGE{lK#YV5MXE(bOdB8cc4 z2U>4Tz~-^gvT64b4*K<@QD{vx zm;g}dy|{|t^m^t0)hqu2nX*A9c#b^!i0{{ctDuY3XPRMOdvey3i6A7 z2OS6-T0tx4;vC2!_=+&_0TJ*aCkPi%&2>eK32lpl0(oc9Eqc}wI@g--XiUE#T%fF? zc5#1^LkEGj$Z3ii{p$oSALv>Sv7~PzP`zi-zv4BA0nKD!5Pd>Gp8I|n_mxg<#X+Zv zH>8ceen97O-}m<_D@$`B;08MSs@l6N4W>wlvCu@O8=)P>`rn7?n9w;5-`Uk!?7L3g zA7lOic+K6*yYF;|HbmNzPC9WgNA#ao(E0VTy91J?a|(IO6$#o^XfIX3VE?s3!WOqN z8Q3VV9v3fWhmWt9_;LO6W4rzC^!}osG{>)neYw&(E%?p0j(~$zFQ$(44Jf^r^4pgB z6MmT!A6zZ5JM(?8W8L=pAR;t7Wu8Xu~1_depbZg+iEv}lUAtL2!&j8rp^ zX_5A<;a}Y}Vm6<8Yph<d(O9C@OI#llkt0lUxxCQ-Iqes^pR*E4D92;UKr5FhQd3jkN1Ib zz>Nls!*MPE`+a>lDS(YRppU=@`3J>wkUnr_(AuCn5Au&dg=v5dg3BJ{3!8w*4HyS( zZ;)LU8xG5XJs*fy2j?n;wY84`vBizyz dEmV>shQuQ*H^aWgDm^mZK&5{ZP+jsB#+afjtUb{8Y@zz#gwk$r{TPR{5zV~1Z zjS>^Pk!*=Zja%Y}X*Mz@aYID67-Ni1{Xz!LC`+7*!w&{SV#Fmg@z1@btdu4r-uL0% zo}PQo@1FDfo##*$zZ1Cx#_{uwD_0o~K%jT^G7SxE3r=@iJwWDJf2z;I2J7$BEUe(T zp1@wOX&G31ni+btZqZ;CI4OJq!tmXJ1x}q6B^z3~UV7iLkqN<7cE$ePQTxox51%@{ zC33v{#9Irak5_*5MEk_s6L|fW$H%xWmj*e;-c?YbS}8-g(c72XWj>|Exxwnh_CXu;vz^zpd|O5 z`@zdlh3a1P6E{00$UJI?vpg?|Qzc(#9vaIqjmxo&e~kGhmSGOYlDjW|kz_7CnHfJh z+H`L_++jQYPHCnXgduQ*r)!^JC*8>52_3@VuL`Tj@+k(R@2Pe;uJ#aBN-?H3M@y6&YN3CP$ zKfd|pr6W~0ZMW{X|5=R3lgHx<&@915l8Jo`4oF#0CIuB_Sd`O=*TG3v+x^QpqGH z6erw`N*>lnMHe9SB&XeOwqqSh5v4Od6-7v-5$GeswO!#GA$iS!kOVt#r_RO5>7;2* z6U4cbZP84txkoc-W~!o~W*I4>85e{!H+j}}ovYfTPOL9Y#zHFH4YJoFA|(-2Lywz) z)+WS;2f8dORH{~ Date: Tue, 22 Oct 2019 21:52:43 +0300 Subject: [PATCH 07/21] Use named logger instead of root logger (#236) --- pdfminer/lzw.py | 7 +++++-- tests/test_pdfminer_psparser.py | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pdfminer/lzw.py b/pdfminer/lzw.py index 078ac04..5b25661 100644 --- a/pdfminer/lzw.py +++ b/pdfminer/lzw.py @@ -5,10 +5,13 @@ import six #Python 2+3 compatibility import logging + +logger = logging.getLogger(__name__) + + class CorruptDataError(Exception): pass - ## LZWDecoder ## class LZWDecoder(object): @@ -90,7 +93,7 @@ class LZWDecoder(object): # just ignore corrupt data and stop yielding there break yield x - logging.debug('nbits=%d, code=%d, output=%r, table=%r' % + logger.debug('nbits=%d, code=%d, output=%r, table=%r' % (self.nbits, code, x, self.table[258:])) return diff --git a/tests/test_pdfminer_psparser.py b/tests/test_pdfminer_psparser.py index 2fbae8e..2cc12ca 100644 --- a/tests/test_pdfminer_psparser.py +++ b/tests/test_pdfminer_psparser.py @@ -8,6 +8,8 @@ import nose import logging +logger = logging.getLogger(__name__) + from pdfminer.psparser import * ## Simplistic Test cases @@ -92,17 +94,17 @@ func/a/b{(c)do*}def def test_1(self): tokens = self.get_tokens(self.TESTDATA) - logging.info(tokens) + logger.info(tokens) assert_equal(tokens, self.TOKENS) return def test_2(self): objs = self.get_objects(self.TESTDATA) - logging.info(objs) + logger.info(objs) assert_equal(objs, self.OBJS) return if __name__ == '__main__': #import logging,sys,os,six #logging.basicConfig(level=logging.DEBUG, filename='%s_%d.%d.log'%(os.path.basename(__file__),sys.version_info[0],sys.version_info[1])) - nose.runmodule() \ No newline at end of file + nose.runmodule() From 5516c8147c184c8796db78faf65a3b9d9cca2688 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Wed, 23 Oct 2019 21:05:30 +0200 Subject: [PATCH 08/21] Add new python versions for travis --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 7a04577..7fdc03c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ python: - "3.4" - "3.5" - "3.6" + - "3.7" + - "3.8" install: - pip install tox-travis script: From a238a199990ed680ec636e01190dc8f1f497ac7e Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Fri, 25 Oct 2019 22:49:58 +0200 Subject: [PATCH 09/21] Fix assertionerror when dumping pdf with reference to objid 0 (#318) Fixes #94 Added: test to get check if `PDFObjectNotFound` error is raised if objid 0 is requested. --- CHANGELOG.md | 3 +++ pdfminer/pdfdocument.py | 6 +++++- tests/test_pdfdocument.py | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/test_pdfdocument.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 9082416..d91d035 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Support for extracting JBIG2 encoded images ([#311](https://github.com/pdfminer/pdfminer.six/pull/311) and [#46](https://github.com/pdfminer/pdfminer.six/pull/46)) +### Fixed +- Unhandled AssertionError when dumping pdf containing reference to object id 0 ([#318](https://github.com/pdfminer/pdfminer.six/pull/318)) + ## [20191020] - 2019-10-20 ### Deprecated diff --git a/pdfminer/pdfdocument.py b/pdfminer/pdfdocument.py index 5fb9cce..1c4b276 100644 --- a/pdfminer/pdfdocument.py +++ b/pdfminer/pdfdocument.py @@ -671,7 +671,11 @@ class PDFDocument(object): # can raise PDFObjectNotFound def getobj(self, objid): - assert objid != 0 + """Get object from PDF + + :raises PDFException if PDFDocument is not initialized + :raises PDFObjectNotFound if objid does not exist in PDF + """ if not self.xrefs: raise PDFException('PDFDocument is not initialized') log.debug('getobj: objid=%r', objid) diff --git a/tests/test_pdfdocument.py b/tests/test_pdfdocument.py new file mode 100644 index 0000000..67a5e45 --- /dev/null +++ b/tests/test_pdfdocument.py @@ -0,0 +1,15 @@ +from nose.tools import raises +from pdfminer.pdftypes import PDFObjectNotFound + +from pdfminer.pdfdocument import PDFDocument +from pdfminer.pdfparser import PDFParser + + +class TestPdfDocument(object): + + @raises(PDFObjectNotFound) + def test_get_zero_objid_raises_pdfobjectnotfound(self): + with open('../samples/simple1.pdf', 'rb') as in_file: + parser = PDFParser(in_file) + doc = PDFDocument(parser) + doc.getobj(0) \ No newline at end of file From 1c4a4167ed284a42d5980eef9ab4f5630837cfa5 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Sat, 26 Oct 2019 18:42:33 +0200 Subject: [PATCH 10/21] Fix failing test on develop & cleaning up test files (#319) --- samples/contrib/stamp-no.pdf | 9882 --------------------- samples/encryption/base.xml | 23 - samples/jo.html.ref | 72 - samples/jo.tex | 173 - samples/jo.txt.ref | 71 - samples/jo.xml.ref | 1188 --- samples/nonfree/dmca.html.ref | 50 - samples/nonfree/dmca.txt.ref | 61 - samples/nonfree/dmca.xml.ref | 2223 ----- samples/nonfree/f1040nr.html.ref | 475 - samples/nonfree/f1040nr.txt.ref | 431 - samples/nonfree/f1040nr.xml.ref | 6026 ------------- samples/nonfree/i1040nr.html.ref | 209 - samples/nonfree/i1040nr.txt.ref | 220 - samples/nonfree/i1040nr.xml.ref | 6424 -------------- samples/nonfree/kampo.html.ref | 113 - samples/nonfree/kampo.txt.ref | 157 - samples/nonfree/kampo.xml.ref | 3356 ------- samples/nonfree/naacl06-shinyama.html.ref | 83 - samples/nonfree/naacl06-shinyama.txt.ref | 91 - samples/nonfree/naacl06-shinyama.xml.ref | 3763 -------- samples/nonfree/nlp2004slides.html.ref | 15 - samples/nonfree/nlp2004slides.txt.ref | 9 - samples/nonfree/nlp2004slides.xml.ref | 120 - samples/simple1.html.ref | 15 - samples/simple1.txt.ref | 17 - samples/simple1.xml.ref | 139 - samples/simple2.html.ref | 11 - samples/simple2.txt.ref | 1 - samples/simple2.xml.ref | 9 - samples/simple3.html.ref | 11 - samples/simple3.txt.ref | 9 - samples/simple3.xml.ref | 72 - tests/helpers.py | 7 + tests/test_encodingdb.py | 4 +- tests/test_pdfdocument.py | 7 +- tests/test_pdfencoding.py | 20 +- tests/test_pdfminer_ccitt.py | 17 +- tests/test_pdfminer_crypto.py | 63 +- tests/test_pdfminer_psparser.py | 61 +- tests/test_tools_dumppdf.py | 66 +- tests/test_tools_pdf2txt.py | 141 +- tests/test_utils.py | 4 +- 43 files changed, 173 insertions(+), 35736 deletions(-) delete mode 100644 samples/contrib/stamp-no.pdf delete mode 100644 samples/encryption/base.xml delete mode 100644 samples/jo.html.ref delete mode 100644 samples/jo.tex delete mode 100644 samples/jo.txt.ref delete mode 100644 samples/jo.xml.ref delete mode 100644 samples/nonfree/dmca.html.ref delete mode 100644 samples/nonfree/dmca.txt.ref delete mode 100644 samples/nonfree/dmca.xml.ref delete mode 100644 samples/nonfree/f1040nr.html.ref delete mode 100644 samples/nonfree/f1040nr.txt.ref delete mode 100644 samples/nonfree/f1040nr.xml.ref delete mode 100644 samples/nonfree/i1040nr.html.ref delete mode 100644 samples/nonfree/i1040nr.txt.ref delete mode 100644 samples/nonfree/i1040nr.xml.ref delete mode 100644 samples/nonfree/kampo.html.ref delete mode 100644 samples/nonfree/kampo.txt.ref delete mode 100644 samples/nonfree/kampo.xml.ref delete mode 100644 samples/nonfree/naacl06-shinyama.html.ref delete mode 100644 samples/nonfree/naacl06-shinyama.txt.ref delete mode 100644 samples/nonfree/naacl06-shinyama.xml.ref delete mode 100644 samples/nonfree/nlp2004slides.html.ref delete mode 100644 samples/nonfree/nlp2004slides.txt.ref delete mode 100644 samples/nonfree/nlp2004slides.xml.ref delete mode 100644 samples/simple1.html.ref delete mode 100644 samples/simple1.txt.ref delete mode 100644 samples/simple1.xml.ref delete mode 100644 samples/simple2.html.ref delete mode 100644 samples/simple2.txt.ref delete mode 100644 samples/simple2.xml.ref delete mode 100644 samples/simple3.html.ref delete mode 100644 samples/simple3.txt.ref delete mode 100644 samples/simple3.xml.ref create mode 100644 tests/helpers.py diff --git a/samples/contrib/stamp-no.pdf b/samples/contrib/stamp-no.pdf deleted file mode 100644 index 2dfb7a1..0000000 --- a/samples/contrib/stamp-no.pdf +++ /dev/null @@ -1,9882 +0,0 @@ -%PDF-1.4 %âãÏÓ -31 0 obj -<< -/Type /Catalog -/Pages 25 0 R -/Metadata 1 0 R -/OCProperties << /OCGs [ 2 0 R 3 0 R 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /D << /ON [ 2 0 R 3 0 R 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /Order [ 13 0 R 8 0 R 12 0 R 11 0 R 2 0 R 10 0 R 4 0 R 6 0 R 14 0 R 9 0 R 5 0 R 7 0 R 3 0 R ] >> >> ->> -endobj -1 0 obj -<>stream - - - - - application/pdf - - 2015-09-10T13:09:30-7:00 - 2015-09-10T13:09:30-7:00 - 2015-09-10T13:09:30-7:00 - e55459e1-81e6-4e9f-bf27-4c718ad41439 - 8212233c-9ebe-4309-af3e-9e4687ec7c5b - - - - - - - - - - - - - - - - - - - - - - - - - -endstream -endobj -16 0 obj -<> -endobj -17 0 obj -<>stream -1 J -1 j -0 w -0.027451 0 0 RG -0.027451 0 0 rg -q -0 0 m -595 0 l -595 842 l -0 842 l -h -W -n -0.12 0 0 0.12 0 0 cm -0 0 0 RG -0 0 0 rg -0.708661 w -/OC /OC0 BDC -3280 3308 m -3241 3308 l -S -3231 3308 m -3221 3308 l -S -3210 3308 m -3159 3308 l -S -3149 3308 m -3138 3308 l -S -3128 3308 m -3077 3308 l -S -3067 3308 m -3056 3308 l -S -3046 3308 m -2995 3308 l -S -2985 3308 m -2974 3308 l -S -2964 3308 m -2913 3308 l -S -2902 3308 m -2892 3308 l -S -2882 3308 m -2831 3308 l -S -2820 3308 m -2810 3308 l -S -2800 3308 m -2748 3308 l -S -2738 3308 m -2728 3308 l -S -2718 3308 m -2666 3308 l -S -2656 3308 m -2646 3308 l -S -2636 3308 m -2584 3308 l -S -2574 3308 m -2564 3308 l -S -2553 3308 m -2502 3308 l -S -2492 3308 m -2482 3308 l -S -2471 3308 m -2420 3308 l -S -2410 3308 m -2399 3308 l -S -2389 3308 m -2338 3308 l -S -2328 3308 m -2317 3308 l -S -2307 3308 m -2256 3308 l -S -2245 3308 m -2235 3308 l -S -2225 3308 m -2186 3308 l -S -2186 3308 m -2186 3363 l -S -2186 3373 m -2186 3383 l -S -2186 3393 m -2186 3445 l -S -2186 3455 m -2186 3465 l -S -2186 3475 m -2186 3527 l -S -2186 3537 m -2186 3547 l -S -2186 3558 m -2186 3609 l -S -2186 3619 m -2186 3629 l -S -2186 3640 m -2186 3691 l -S -2186 3701 m -2186 3712 l -S -2186 3722 m -2186 3773 l -S -2186 3783 m -2186 3794 l -S -2186 3804 m -2186 3858 l -S -2186 3858 m -2225 3858 l -S -2235 3858 m -2245 3858 l -S -2256 3858 m -2307 3858 l -S -2317 3858 m -2328 3858 l -S -2338 3858 m -2389 3858 l -S -2399 3858 m -2410 3858 l -S -2420 3858 m -2471 3858 l -S -2482 3858 m -2492 3858 l -S -2502 3858 m -2553 3858 l -S -2564 3858 m -2574 3858 l -S -2584 3858 m -2636 3858 l -S -2646 3858 m -2656 3858 l -S -2666 3858 m -2718 3858 l -S -2728 3858 m -2738 3858 l -S -2748 3858 m -2800 3858 l -S -2810 3858 m -2820 3858 l -S -2831 3858 m -2882 3858 l -S -2892 3858 m -2902 3858 l -S -2913 3858 m -2964 3858 l -S -2974 3858 m -2985 3858 l -S -2995 3858 m -3046 3858 l -S -3056 3858 m -3067 3858 l -S -3077 3858 m -3128 3858 l -S -3138 3858 m -3149 3858 l -S -3159 3858 m -3210 3858 l -S -3221 3858 m -3231 3858 l -S -3241 3858 m -3280 3858 l -S -1 0 1 RG -1 0 1 rg -EMC -/OC /OC1 BDC -2750 3148 m -2750 3025 l -S -2547 3025 m -2547 3148 l -S -2750 3148 m -2547 3148 l -S -2547 3025 m -2750 3025 l -S -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -2648 3025 m -2649 3025 l -2649 3000 l -2648 3000 l -f -2648 3025 m -2649 3025 l -2649 3025 l -2648 3025 l -f -2648 3025 m -2649 3025 l -2649 3000 l -2648 3000 l -f -2649 3000 m -2648 3000 l -2648 3000 l -2649 3000 l -f -2648 3025 m -2648 3000 l -2648 3000 l -2648 3025 l -f -2649 3025 m -2649 3000 l -2649 3000 l -2649 3025 l -f -2648 3172 m -2649 3172 l -2649 3148 l -2648 3148 l -f -2648 3172 m -2649 3172 l -2649 3172 l -2648 3172 l -f -2648 3172 m -2649 3172 l -2649 3148 l -2648 3148 l -f -2649 3148 m -2648 3148 l -2648 3148 l -2649 3148 l -f -2648 3172 m -2648 3148 l -2648 3148 l -2648 3172 l -f -2649 3172 m -2649 3148 l -2649 3148 l -2649 3172 l -f -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2652 3200 m -2645 3206 l -S -2652 3195 m -2645 3201 l -S -2652 3190 m -2645 3196 l -S -2648 3188 m -2648 3207 l -S -2648 3188 m -2658 3172 l -S -2658 3172 m -2638 3172 l -S -2638 3172 m -2648 3188 l -S -2648 3188 m -2632 3178 l -S -2632 3178 m -2632 3198 l -S -2632 3198 m -2648 3188 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2811 3086 m -2854 3086 l -S -2950 3086 m -2950 3575 l -S -2995 3575 m -2995 3641 l -S -2886 3086 m -2950 3086 l -S -2871 3641 m -2871 3596 l -S -2871 3596 m -2995 3596 l -S -2242 3575 m -2242 3283 l -S -2539 3514 m -2605 3514 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2747 3618 m -2773 3575 l -S -2773 3618 m -2747 3618 l -S -2784 3599 m -2784.156922 3605.322413 2779.561496 3609.917839 2773.892751 3609.917839 c -2768.224007 3609.917839 2763.628581 3605.322413 2763.628581 3599.653668 c -S -2784 3599 m -2763 3599 l -S -2790 3584 m -2757 3565 l -S -2757 3584 m -2790 3565 l -S -2773 3575 m -2773 3599 l -S -2790 3565 m -2790 3584 l -S -2773 3609 m -2773 3618 l -S -2757 3565 m -2757 3584 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2757 3575 m -2628 3575 l -S -2615 3575 m -2471 3575 l -S -2438 3575 m -1801 3575 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2242 3267 m -2220 3267 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2337 3575 m -2337 3621 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2608.90209 3314.112801 Tm -/T3romansHorzN0 1.285714 Tf -(\000\001\002\003\004\005\006\007\001\003\010\003\000\011\001\012\013\010\014\000\001\007\003) Tj -ET -EMC -/OC /OC3 BDC -3072 3584 m -3039 3565 l -S -3039 3565 m -3039 3584 l -S -3072 3565 m -3072 3584 l -S -3050 3573 m -3052 3569 l -3039 3565 l -3039 3565 l -f -3154 3584 m -3121 3565 l -S -3121 3565 m -3121 3584 l -S -3154 3565 m -3154 3584 l -S -3131 3573 m -3134 3569 l -3121 3565 l -3121 3565 l -f -3271 3584 m -3280 3584 l -S -3271 3565 m -3271 3584 l -S -3271 3565 m -3280 3565 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -3271 3575 m -3235 3575 l -S -3202 3575 m -3154 3575 l -S -3121 3575 m -3072 3575 l -S -3039 3575 m -2790 3575 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2481 4229 m -2481 4150 l -2635 4150 l -2635 4229 l -S -0 0 1 RG -0 0 1 rg -EMC -/OC /OC6 BDC -2586 3819 m -2595 3819 l -S -2601 3819 m -2611 3819 l -S -2616 3819 m -2626 3819 l -S -2631 3819 m -2642 3819 l -S -2647 3819 m -2657 3819 l -S -2662 3819 m -2672 3819 l -S -2678 3819 m -2688 3819 l -S -2693 3819 m -2703 3819 l -S -2708 3819 m -2719 3819 l -S -2724 3819 m -2734 3819 l -S -2739 3819 m -2749 3819 l -S -2755 3819 m -2765 3819 l -S -2770 3819 m -2780 3819 l -S -2785 3819 m -2796 3819 l -S -2801 3819 m -2811 3819 l -S -2816 3819 m -2826 3819 l -S -2832 3819 m -2842 3819 l -S -2847 3819 m -2857 3819 l -S -2862 3819 m -2873 3819 l -S -2878 3819 m -2888 3819 l -S -2893 3819 m -2903 3819 l -S -2908 3819 m -2919 3819 l -S -2924 3819 m -2934 3819 l -S -2939 3819 m -2950 3819 l -S -2955 3819 m -2965 3819 l -S -2970 3819 m -2980 3819 l -S -2985 3819 m -2995 3819 l -S -2995 3819 m -2995 3814 l -S -2995 3809 m -2995 3799 l -S -2995 3794 m -2995 3783 l -S -2995 3778 m -2995 3773 l -S -0 1 0 RG -0 1 0 rg -EMC -/OC /OC7 BDC -1806 3850 m -1766 3850 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1756 4009 m -1776 4042 l -S -1776 4042 m -1756 4042 l -S -1776 4009 m -1756 4009 l -S -0 J -1 j -4.105668 w -1766 4024 m -1767.954835 4024.358348 1768.87392 4025.277433 1768.87392 4026.411182 c -1768.87392 4027.544931 1767.954835 4028.464017 1766.821086 4028.464017 c -S -1 J -1 j -0.708661 w -0 J -1 j -4.105668 w -1766 4028 m -1765.687337 4028.464017 1764.768251 4027.544931 1764.768251 4026.411182 c -1764.768251 4025.277433 1765.687337 4024.358348 1766.821086 4024.358348 c -S -1 J -1 j -0.708661 w -0 1 0 RG -0 1 0 rg -0.708661 w -EMC -/OC /OC7 BDC -1766 4101 m -1766 4099 l -1075 4099 l -1073 4101 l -f -1766 4101 m -1766 4099 l -1766 4099 l -1766 4101 l -f -1766 4101 m -1766 4099 l -1075 4099 l -1073 4101 l -f -1075 4099 m -1073 4101 l -1073 4101 l -1075 4099 l -f -1766 4101 m -1073 4101 l -1073 4101 l -1766 4101 l -f -1766 4099 m -1075 4099 l -1075 4099 l -1766 4099 l -f -1073 4101 m -1075 4099 l -1075 3586 l -1073 3586 l -f -1073 4101 m -1075 4099 l -1075 4099 l -1073 4101 l -f -1073 4101 m -1075 4099 l -1075 3586 l -1073 3586 l -f -1075 3586 m -1073 3586 l -1073 3586 l -1075 3586 l -f -1073 4101 m -1073 3586 l -1073 3586 l -1073 4101 l -f -1075 4099 m -1075 3586 l -1075 3586 l -1075 4099 l -f -1073 3553 m -1075 3553 l -1075 3080 l -1073 3080 l -f -1073 3553 m -1075 3553 l -1075 3553 l -1073 3553 l -f -1073 3553 m -1075 3553 l -1075 3080 l -1073 3080 l -f -1075 3080 m -1073 3080 l -1073 3080 l -1075 3080 l -f -1073 3553 m -1073 3080 l -1073 3080 l -1073 3553 l -f -1075 3553 m -1075 3080 l -1075 3080 l -1075 3553 l -f -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1791 3585 m -1791 3564 l -S -1791 3564 m -1797.105683 3564.736743 1801.701109 3569.332168 1801.701109 3575.000913 c -1801.701109 3580.669658 1797.105683 3585.265084 1791.436938 3585.265084 c -S -1776 3558 m -1756 3591 l -S -1776 3591 m -1756 3558 l -S -1756 3591 m -1776 3591 l -S -1766 3575 m -1791 3575 l -S -1756 3558 m -1776 3558 l -S -1756 3558 m -1724 3525 l -S -1 0 0 RG -1 0 0 rg -EMC -/OC /OC8 BDC -1765 3550 m -1768 3550 l -1768 3078 l -1765 3081 l -f -1765 3550 m -1768 3550 l -1768 3550 l -1765 3550 l -f -1765 3550 m -1768 3550 l -1768 3078 l -1765 3081 l -f -1768 3078 m -1765 3081 l -1765 3081 l -1768 3078 l -f -1765 3550 m -1765 3081 l -1765 3081 l -1765 3550 l -f -1768 3550 m -1768 3078 l -1768 3078 l -1768 3550 l -f -1765 3081 m -1768 3078 l -1499 3078 l -1499 3081 l -f -1765 3081 m -1768 3078 l -1768 3078 l -1765 3081 l -f -1765 3081 m -1768 3078 l -1499 3078 l -1499 3081 l -f -1499 3078 m -1499 3081 l -1499 3081 l -1499 3078 l -f -1765 3081 m -1499 3081 l -1499 3081 l -1765 3081 l -f -1768 3078 m -1499 3078 l -1499 3078 l -1768 3078 l -f -1466 3081 m -1466 3078 l -896 3078 l -896 3081 l -f -1466 3081 m -1466 3078 l -1466 3078 l -1466 3081 l -f -1466 3081 m -1466 3078 l -896 3078 l -896 3081 l -f -896 3078 m -896 3081 l -896 3081 l -896 3078 l -f -1466 3081 m -896 3081 l -896 3081 l -1466 3081 l -f -1466 3078 m -896 3078 l -896 3078 l -1466 3078 l -f -855 3081 m -855 3078 l -641 3078 l -641 3081 l -f -855 3081 m -855 3078 l -855 3078 l -855 3081 l -f -855 3081 m -855 3078 l -641 3078 l -641 3081 l -f -641 3078 m -641 3081 l -641 3081 l -641 3078 l -f -855 3081 m -641 3081 l -641 3081 l -855 3081 l -f -855 3078 m -641 3078 l -641 3078 l -855 3078 l -f -625 3081 m -625 3078 l -569 3078 l -569 3081 l -f -625 3081 m -625 3078 l -625 3078 l -625 3081 l -f -625 3081 m -625 3078 l -569 3078 l -569 3081 l -f -569 3078 m -569 3081 l -569 3081 l -569 3078 l -f -625 3081 m -569 3081 l -569 3081 l -625 3081 l -f -625 3078 m -569 3078 l -569 3078 l -625 3078 l -f -1765 4001 m -1768 4001 l -1768 3599 l -1765 3599 l -f -1765 4001 m -1768 4001 l -1768 4001 l -1765 4001 l -f -1765 4001 m -1768 4001 l -1768 3599 l -1765 3599 l -f -1768 3599 m -1765 3599 l -1765 3599 l -1768 3599 l -f -1765 4001 m -1765 3599 l -1765 3599 l -1765 4001 l -f -1768 4001 m -1768 3599 l -1768 3599 l -1768 4001 l -f -0 0 0 RG -0 0 0 rg -EMC -/OC /OC0 BDC -859 4229 m -905 4229 l -S -915 4229 m -925 4229 l -S -936 4229 m -987 4229 l -S -997 4229 m -1008 4229 l -S -1018 4229 m -1069 4229 l -S -1079 4229 m -1090 4229 l -S -1100 4229 m -1151 4229 l -S -1162 4229 m -1172 4229 l -S -1182 4229 m -1233 4229 l -S -1244 4229 m -1254 4229 l -S -1264 4229 m -1315 4229 l -S -1326 4229 m -1336 4229 l -S -1346 4229 m -1398 4229 l -S -1408 4229 m -1418 4229 l -S -1428 4229 m -1480 4229 l -S -1490 4229 m -1500 4229 l -S -1510 4229 m -1562 4229 l -S -1572 4229 m -1582 4229 l -S -1593 4229 m -1644 4229 l -S -1654 4229 m -1664 4229 l -S -1675 4229 m -1726 4229 l -S -1736 4229 m -1747 4229 l -S -1757 4229 m -1808 4229 l -S -1818 4229 m -1829 4229 l -S -1839 4229 m -1890 4229 l -S -1901 4229 m -1911 4229 l -S -1921 4229 m -1972 4229 l -S -1983 4229 m -1993 4229 l -S -2003 4229 m -2054 4229 l -S -2065 4229 m -2075 4229 l -S -2085 4229 m -2137 4229 l -S -2147 4229 m -2157 4229 l -S -2167 4229 m -2219 4229 l -S -2229 4229 m -2239 4229 l -S -2250 4229 m -2301 4229 l -S -2311 4229 m -2321 4229 l -S -2332 4229 m -2383 4229 l -S -2393 4229 m -2403 4229 l -S -2414 4229 m -2465 4229 l -S -2475 4229 m -2486 4229 l -S -2496 4229 m -2547 4229 l -S -2557 4229 m -2568 4229 l -S -2578 4229 m -2629 4229 l -S -2640 4229 m -2650 4229 l -S -2660 4229 m -2711 4229 l -S -2722 4229 m -2732 4229 l -S -2742 4229 m -2794 4229 l -S -2804 4229 m -2814 4229 l -S -2824 4229 m -2876 4229 l -S -2886 4229 m -2896 4229 l -S -2906 4229 m -2958 4229 l -S -2968 4229 m -2978 4229 l -S -2989 4229 m -3040 4229 l -S -3050 4229 m -3060 4229 l -S -3071 4229 m -3122 4229 l -S -3132 4229 m -3142 4229 l -S -3153 4229 m -3204 4229 l -S -3214 4229 m -3225 4229 l -S -3235 4229 m -3280 4229 l -S -3280 4229 m -3280 4179 l -S -3280 4168 m -3280 4158 l -S -3280 4148 m -3280 4097 l -S -3280 4086 m -3280 4076 l -S -3280 4066 m -3280 4014 l -S -3280 4004 m -3280 3994 l -S -3280 3984 m -3280 3932 l -S -3280 3922 m -3280 3912 l -S -3280 3902 m -3280 3850 l -S -3280 3840 m -3280 3830 l -S -3280 3819 m -3280 3768 l -S -3280 3758 m -3280 3748 l -S -3280 3737 m -3280 3686 l -S -3280 3676 m -3280 3665 l -S -3280 3655 m -3280 3604 l -S -3280 3594 m -3280 3583 l -S -3280 3573 m -3280 3522 l -S -3280 3512 m -3280 3501 l -S -3280 3491 m -3280 3440 l -S -3280 3429 m -3280 3419 l -S -3280 3409 m -3280 3358 l -S -3280 3347 m -3280 3337 l -S -3280 3327 m -3280 3275 l -S -3280 3265 m -3280 3255 l -S -3280 3245 m -3280 3193 l -S -3280 3183 m -3280 3173 l -S -3280 3163 m -3280 3111 l -S -3280 3101 m -3280 3091 l -S -3280 3080 m -3280 3029 l -S -3280 3019 m -3280 3009 l -S -3280 2998 m -3280 2948 l -S -3280 2948 m -3235 2948 l -S -3225 2948 m -3214 2948 l -S -3204 2948 m -3153 2948 l -S -3142 2948 m -3132 2948 l -S -3122 2948 m -3071 2948 l -S -3060 2948 m -3050 2948 l -S -3040 2948 m -2989 2948 l -S -2978 2948 m -2968 2948 l -S -2958 2948 m -2906 2948 l -S -2896 2948 m -2886 2948 l -S -2876 2948 m -2824 2948 l -S -2814 2948 m -2804 2948 l -S -2794 2948 m -2742 2948 l -S -2732 2948 m -2722 2948 l -S -2711 2948 m -2660 2948 l -S -2650 2948 m -2640 2948 l -S -2629 2948 m -2578 2948 l -S -2568 2948 m -2557 2948 l -S -2547 2948 m -2496 2948 l -S -2486 2948 m -2475 2948 l -S -2465 2948 m -2414 2948 l -S -2403 2948 m -2393 2948 l -S -2383 2948 m -2332 2948 l -S -2321 2948 m -2311 2948 l -S -2301 2948 m -2250 2948 l -S -2239 2948 m -2229 2948 l -S -2219 2948 m -2167 2948 l -S -2157 2948 m -2147 2948 l -S -2137 2948 m -2085 2948 l -S -2075 2948 m -2065 2948 l -S -2054 2948 m -2003 2948 l -S -1993 2948 m -1983 2948 l -S -1972 2948 m -1921 2948 l -S -1911 2948 m -1901 2948 l -S -1890 2948 m -1839 2948 l -S -1829 2948 m -1818 2948 l -S -1808 2948 m -1757 2948 l -S -1747 2948 m -1736 2948 l -S -1726 2948 m -1675 2948 l -S -1664 2948 m -1654 2948 l -S -1644 2948 m -1593 2948 l -S -1582 2948 m -1572 2948 l -S -1562 2948 m -1510 2948 l -S -1500 2948 m -1490 2948 l -S -1480 2948 m -1428 2948 l -S -1418 2948 m -1408 2948 l -S -1398 2948 m -1346 2948 l -S -1336 2948 m -1326 2948 l -S -1315 2948 m -1264 2948 l -S -1254 2948 m -1244 2948 l -S -1233 2948 m -1182 2948 l -S -1172 2948 m -1162 2948 l -S -1151 2948 m -1100 2948 l -S -1090 2948 m -1079 2948 l -S -1069 2948 m -1018 2948 l -S -1008 2948 m -997 2948 l -S -987 2948 m -936 2948 l -S -925 2948 m -915 2948 l -S -905 2948 m -859 2948 l -S -859 2948 m -859 2998 l -S -859 3009 m -859 3019 l -S -859 3029 m -859 3080 l -S -859 3091 m -859 3101 l -S -859 3111 m -859 3163 l -S -859 3173 m -859 3183 l -S -859 3193 m -859 3245 l -S -859 3255 m -859 3265 l -S -859 3275 m -859 3327 l -S -859 3337 m -859 3347 l -S -859 3358 m -859 3409 l -S -859 3419 m -859 3429 l -S -859 3440 m -859 3491 l -S -859 3501 m -859 3512 l -S -859 3522 m -859 3573 l -S -859 3583 m -859 3594 l -S -859 3604 m -859 3655 l -S -859 3665 m -859 3676 l -S -859 3686 m -859 3737 l -S -859 3748 m -859 3758 l -S -859 3768 m -859 3819 l -S -859 3830 m -859 3840 l -S -859 3850 m -859 3902 l -S -859 3912 m -859 3922 l -S -859 3932 m -859 3984 l -S -859 3994 m -859 4004 l -S -859 4014 m -859 4066 l -S -859 4076 m -859 4086 l -S -859 4097 m -859 4148 l -S -859 4158 m -859 4168 l -S -859 4179 m -859 4229 l -S -0 0 1 RG -0 0 1 rg -EMC -/OC /OC6 BDC -2548 3973 m -2548 3982 l -S -2548 3987 m -2548 3997 l -S -2548 4003 m -2548 4013 l -S -2548 4018 m -2548 4028 l -S -2548 4033 m -2548 4044 l -S -2548 4049 m -2548 4059 l -S -2548 4064 m -2548 4074 l -S -2548 4080 m -2548 4090 l -S -2548 4095 m -2548 4105 l -S -2548 4110 m -2548 4121 l -S -2548 4126 m -2548 4136 l -S -2548 4141 m -2548 4150 l -S -1866 4026 m -1872 4026 l -S -1877 4026 m -1887 4026 l -S -1892 4026 m -1903 4026 l -S -1908 4026 m -1918 4026 l -S -1923 4026 m -1933 4026 l -S -1939 4026 m -1949 4026 l -S -1954 4026 m -1964 4026 l -S -1969 4026 m -1980 4026 l -S -1985 4026 m -1995 4026 l -S -2000 4026 m -2010 4026 l -S -2016 4026 m -2026 4026 l -S -2031 4026 m -2041 4026 l -S -2046 4026 m -2057 4026 l -S -2062 4026 m -2072 4026 l -S -2077 4026 m -2087 4026 l -S -2092 4026 m -2103 4026 l -S -2108 4026 m -2118 4026 l -S -2123 4026 m -2134 4026 l -S -2139 4026 m -2149 4026 l -S -2154 4026 m -2164 4026 l -S -2169 4026 m -2180 4026 l -S -2185 4026 m -2195 4026 l -S -2200 4026 m -2211 4026 l -S -2216 4026 m -2226 4026 l -S -2231 4026 m -2241 4026 l -S -2246 4026 m -2257 4026 l -S -2262 4026 m -2272 4026 l -S -2277 4026 m -2288 4026 l -S -2293 4026 m -2303 4026 l -S -2308 4026 m -2318 4026 l -S -2323 4026 m -2334 4026 l -S -2339 4026 m -2349 4026 l -S -2354 4026 m -2364 4026 l -S -2370 4026 m -2380 4026 l -S -2385 4026 m -2395 4026 l -S -2400 4026 m -2411 4026 l -S -2416 4026 m -2426 4026 l -S -2431 4026 m -2441 4026 l -S -2447 4026 m -2457 4026 l -S -2462 4026 m -2472 4026 l -S -2477 4026 m -2488 4026 l -S -2493 4026 m -2503 4026 l -S -2508 4026 m -2518 4026 l -S -2524 4026 m -2530 4026 l -S -1455 3973 m -1465 3973 l -S -1471 3973 m -1481 3973 l -S -1486 3973 m -1496 3973 l -S -1501 3973 m -1512 3973 l -S -1517 3973 m -1527 3973 l -S -1532 3973 m -1542 3973 l -S -1547 3973 m -1558 3973 l -S -1563 3973 m -1573 3973 l -S -1578 3973 m -1589 3973 l -S -1594 3973 m -1604 3973 l -S -1609 3973 m -1619 3973 l -S -1624 3973 m -1635 3973 l -S -1640 3973 m -1650 3973 l -S -1655 3973 m -1666 3973 l -S -1671 3973 m -1681 3973 l -S -1686 3973 m -1696 3973 l -S -1701 3973 m -1712 3973 l -S -1717 3973 m -1727 3973 l -S -1732 3973 m -1743 3973 l -S -1748 3973 m -1758 3973 l -S -1775 3973 m -1782 3973 l -S -1787 3973 m -1797 3973 l -S -1802 3973 m -1812 3973 l -S -1818 3973 m -1828 3973 l -S -1833 3973 m -1843 3973 l -S -1848 3973 m -1859 3973 l -S -1864 3973 m -1874 3973 l -S -1879 3973 m -1889 3973 l -S -1895 3973 m -1905 3973 l -S -1910 3973 m -1920 3973 l -S -1925 3973 m -1936 3973 l -S -1941 3973 m -1951 3973 l -S -1956 3973 m -1966 3973 l -S -1972 3973 m -1982 3973 l -S -1987 3973 m -1997 3973 l -S -2002 3973 m -2013 3973 l -S -2018 3973 m -2028 3973 l -S -2033 3973 m -2043 3973 l -S -2049 3973 m -2059 3973 l -S -2064 3973 m -2074 3973 l -S -2079 3973 m -2090 3973 l -S -2095 3973 m -2105 3973 l -S -2110 3973 m -2120 3973 l -S -2125 3973 m -2136 3973 l -S -2141 3973 m -2151 3973 l -S -2156 3973 m -2167 3973 l -S -2172 3973 m -2182 3973 l -S -2187 3973 m -2197 3973 l -S -2202 3973 m -2213 3973 l -S -2218 3973 m -2228 3973 l -S -2233 3973 m -2244 3973 l -S -2249 3973 m -2259 3973 l -S -2264 3973 m -2274 3973 l -S -2279 3973 m -2290 3973 l -S -2295 3973 m -2305 3973 l -S -2310 3973 m -2321 3973 l -S -2326 3973 m -2336 3973 l -S -2341 3973 m -2351 3973 l -S -2356 3973 m -2367 3973 l -S -2372 3973 m -2382 3973 l -S -2387 3973 m -2398 3973 l -S -2403 3973 m -2413 3973 l -S -2418 3973 m -2428 3973 l -S -2433 3973 m -2444 3973 l -S -2449 3973 m -2459 3973 l -S -2464 3973 m -2474 3973 l -S -2480 3973 m -2490 3973 l -S -2495 3973 m -2505 3973 l -S -2510 3973 m -2521 3973 l -S -2526 3973 m -2536 3973 l -S -2541 3973 m -2548 3973 l -S -2530 4026 m -2530 4032 l -S -2530 4037 m -2530 4047 l -S -2530 4052 m -2530 4063 l -S -2530 4068 m -2530 4078 l -S -2530 4083 m -2530 4093 l -S -2530 4099 m -2530 4109 l -S -2530 4114 m -2530 4124 l -S -2530 4129 m -2530 4140 l -S -2530 4145 m -2530 4150 l -S -2567 3819 m -2567 3828 l -S -2567 3834 m -2567 3844 l -S -2567 3849 m -2567 3859 l -S -2567 3864 m -2567 3875 l -S -2567 3880 m -2567 3890 l -S -2567 3895 m -2567 3905 l -S -2567 3911 m -2567 3921 l -S -2567 3926 m -2567 3936 l -S -2567 3941 m -2567 3952 l -S -2567 3957 m -2567 3967 l -S -2567 3972 m -2567 3982 l -S -2567 3988 m -2567 3998 l -S -2567 4003 m -2567 4013 l -S -2567 4018 m -2567 4029 l -S -2567 4034 m -2567 4044 l -S -2567 4049 m -2567 4059 l -S -2567 4064 m -2567 4075 l -S -2567 4080 m -2567 4090 l -S -2567 4095 m -2567 4106 l -S -2567 4111 m -2567 4121 l -S -2567 4126 m -2567 4136 l -S -2567 4141 m -2567 4150 l -S -2586 3819 m -2586 3828 l -S -2586 3834 m -2586 3844 l -S -2586 3849 m -2586 3859 l -S -2586 3864 m -2586 3875 l -S -2586 3880 m -2586 3890 l -S -2586 3895 m -2586 3905 l -S -2586 3911 m -2586 3921 l -S -2586 3926 m -2586 3936 l -S -2586 3941 m -2586 3952 l -S -2586 3957 m -2586 3967 l -S -2586 3972 m -2586 3982 l -S -2586 3988 m -2586 3998 l -S -2586 4003 m -2586 4013 l -S -2586 4018 m -2586 4029 l -S -2586 4034 m -2586 4044 l -S -2586 4049 m -2586 4059 l -S -2586 4064 m -2586 4075 l -S -2586 4080 m -2586 4090 l -S -2586 4095 m -2586 4106 l -S -2586 4111 m -2586 4121 l -S -2586 4126 m -2586 4136 l -S -2586 4141 m -2586 4150 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2237 3554 m -2248 3565 l -S -2237 3548 m -2248 3559 l -S -2237 3507 m -2248 3518 l -S -2237 3501 m -2248 3511 l -S -2237 3460 m -2248 3470 l -S -2237 3453 m -2248 3464 l -S -2237 3412 m -2248 3423 l -S -2237 3406 m -2248 3417 l -S -2237 3365 m -2248 3376 l -S -2237 3359 m -2248 3370 l -S -2237 3318 m -2248 3329 l -S -2237 3312 m -2248 3323 l -S -2638 3514 m -2702 3514 l -S -2559 3508 m -2570 3519 l -S -2565 3508 m -2576 3519 l -S -2658 3508 m -2669 3519 l -S -2664 3508 m -2675 3519 l -S -3019 3569 m -3030 3580 l -S -3013 3569 m -3024 3580 l -S -2972 3569 m -2983 3580 l -S -2966 3569 m -2976 3580 l -S -2924 3569 m -2935 3580 l -S -2918 3569 m -2929 3580 l -S -2877 3569 m -2888 3580 l -S -2871 3569 m -2882 3580 l -S -2830 3569 m -2841 3580 l -S -2824 3569 m -2835 3580 l -S -2866 3620 m -2877 3631 l -S -2866 3614 m -2877 3625 l -S -2826 3081 m -2837 3092 l -S -2832 3081 m -2843 3092 l -S -2910 3081 m -2921 3092 l -S -2917 3081 m -2927 3092 l -S -2990 3608 m -3001 3619 l -S -2990 3615 m -3001 3625 l -S -3101 3569 m -3111 3580 l -S -3094 3569 m -3105 3580 l -S -3182 3569 m -3193 3580 l -S -3176 3569 m -3186 3580 l -S -3250 3569 m -3261 3580 l -S -3244 3569 m -3255 3580 l -S -1 0.498039 0.623529 RG -1 0.498039 0.623529 rg -EMC -/OC /OC9 BDC -2995 3674 m -2995 3714 l -S -2871 3674 m -2871 3716 l -S -2337 3654 m -2337 3694 l -S -1455 3805 m -1455 3766 l -S -1770 4026 m -1807 4026 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2715 3654 m -2757 3584 l -S -EMC -/OC /OC10 BDC -3029 3770 m -3029.518792 3761.106987 3036.871473 3753.754306 3045.941465 3753.754306 c -3055.011456 3753.754306 3062.364137 3761.106987 3062.364137 3770.176978 c -3062.364137 3779.24697 3055.011456 3786.599651 3045.941465 3786.599651 c -3036.871473 3786.599651 3029.518792 3779.24697 3029.518792 3770.176978 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3034.210984 3764.018476 Tm -/T3romansHorzN0 1.285714 Tf -(\015\016) Tj -ET -EMC -/OC /OC10 BDC -2947 3658 m -2947.684705 3649.634507 2955.037386 3642.281826 2964.107378 3642.281826 c -2973.17737 3642.281826 2980.530051 3649.634507 2980.530051 3658.704498 c -2980.530051 3667.77449 2973.17737 3675.127171 2964.107378 3675.127171 c -2955.037386 3675.127171 2947.684705 3667.77449 2947.684705 3658.704498 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2952.083635 3652.545996 Tm -/T3romansHorzN0 1.285714 Tf -(\015\017) Tj -ET -EMC -/OC /OC10 BDC -3040 3542 m -3040.339298 3533.624308 3047.691979 3526.271627 3056.761971 3526.271627 c -3065.831962 3526.271627 3073.184643 3533.624308 3073.184643 3542.694299 c -3073.184643 3551.764291 3065.831962 3559.116972 3056.761971 3559.116972 c -3047.691979 3559.116972 3040.339298 3551.764291 3040.339298 3542.694299 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3044.444966 3536.535797 Tm -/T3romansHorzN0 1.285714 Tf -(\020\021) Tj -ET -EMC -/OC /OC10 BDC -3122 3542 m -3122.773905 3533.624308 3130.126586 3526.271627 3139.196577 3526.271627 c -3148.266569 3526.271627 3155.61925 3533.624308 3155.61925 3542.694299 c -3155.61925 3551.764291 3148.266569 3559.116972 3139.196577 3559.116972 c -3130.126586 3559.116972 3122.773905 3551.764291 3122.773905 3542.694299 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3126.879573 3536.535797 Tm -/T3romansHorzN0 1.285714 Tf -(\020\021) Tj -ET -EMC -/OC /OC10 BDC -3202 3542 m -3202.902652 3533.624308 3210.255333 3526.271627 3219.325325 3526.271627 c -3228.395317 3526.271627 3235.747998 3533.624308 3235.747998 3542.694299 c -3235.747998 3551.764291 3228.395317 3559.116972 3219.325325 3559.116972 c -3210.255333 3559.116972 3202.902652 3551.764291 3202.902652 3542.694299 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3206.715058 3536.535797 Tm -/T3romansHorzN0 1.285714 Tf -(\020\022) Tj -ET -EMC -/OC /OC10 BDC -2791 3611 m -2791.525685 3602.646021 2798.878366 3595.29334 2807.948357 3595.29334 c -2817.018349 3595.29334 2824.37103 3602.646021 2824.37103 3611.716013 c -2824.37103 3620.786005 2817.018349 3628.138686 2807.948357 3628.138686 c -2798.878366 3628.138686 2791.525685 3620.786005 2791.525685 3611.716013 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2796.217877 3605.557511 Tm -/T3romansHorzN0 1.285714 Tf -(\015\022) Tj -ET -EMC -/OC /OC10 BDC -2642 3611 m -2642.178641 3602.646021 2649.531322 3595.29334 2658.601314 3595.29334 c -2667.671305 3595.29334 2675.023986 3602.646021 2675.023986 3611.716013 c -2675.023986 3620.786005 2667.671305 3628.138686 2658.601314 3628.138686 c -2649.531322 3628.138686 2642.178641 3620.786005 2642.178641 3611.716013 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2647.164095 3605.557511 Tm -/T3romansHorzN0 1.285714 Tf -(\015\021) Tj -ET -EMC -/OC /OC10 BDC -2664 3190 m -2664.894518 3181.905523 2672.247199 3174.552842 2681.31719 3174.552842 c -2690.387182 3174.552842 2697.739863 3181.905523 2697.739863 3190.975514 c -2697.739863 3200.045506 2690.387182 3207.398187 2681.31719 3207.398187 c -2672.247199 3207.398187 2664.894518 3200.045506 2664.894518 3190.975514 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2669.58671 3184.817012 Tm -/T3romansHorzN0 1.285714 Tf -(\015\023) Tj -ET -EMC -/OC /OC10 BDC -2709 3049 m -2709.842063 3039.944446 2717.194744 3032.591765 2726.264736 3032.591765 c -2735.334727 3032.591765 2742.687408 3039.944446 2742.687408 3049.014438 c -2742.687408 3058.084429 2735.334727 3065.43711 2726.264736 3065.43711 c -2717.194744 3065.43711 2709.842063 3058.084429 2709.842063 3049.014438 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2716.293827 3042.855936 Tm -/T3romansHorzN0 1.285714 Tf -(\015\020) Tj -ET -EMC -/OC /OC10 BDC -2667 2984 m -2667.218681 2975.133099 2674.571362 2967.780418 2683.641353 2967.780418 c -2692.711345 2967.780418 2700.064026 2975.133099 2700.064026 2984.20309 c -2700.064026 2993.273082 2692.711345 3000.625763 2683.641353 3000.625763 c -2674.571362 3000.625763 2667.218681 2993.273082 2667.218681 2984.20309 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2671.910873 2978.044588 Tm -/T3romansHorzN0 1.285714 Tf -(\015\015) Tj -ET -EMC -/OC /OC10 BDC -2853 3121 m -2853.525654 3112.206949 2860.878335 3104.854268 2869.948327 3104.854268 c -2879.018319 3104.854268 2886.371 3112.206949 2886.371 3121.27694 c -2886.371 3130.346932 2879.018319 3137.699613 2869.948327 3137.699613 c -2860.878335 3137.699613 2853.525654 3130.346932 2853.525654 3121.27694 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2858.217847 3115.118438 Tm -/T3romansHorzN0 1.285714 Tf -(\015\024) Tj -ET -EMC -/OC /OC10 BDC -2605 3482 m -2605.129545 3473.703665 2612.482226 3466.350984 2621.552217 3466.350984 c -2630.622209 3466.350984 2637.97489 3473.703665 2637.97489 3482.773657 c -2637.97489 3491.843648 2630.622209 3499.196329 2621.552217 3499.196329 c -2612.482226 3499.196329 2605.129545 3491.843648 2605.129545 3482.773657 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2609.821737 3476.615154 Tm -/T3romansHorzN0 1.285714 Tf -(\023\024) Tj -ET -EMC -/OC /OC10 BDC -2257 3265 m -2257.839936 3256.505076 2265.192617 3249.152395 2274.262609 3249.152395 c -2283.332601 3249.152395 2290.685282 3256.505076 2290.685282 3265.575067 c -2290.685282 3274.645059 2283.332601 3281.99774 2274.262609 3281.99774 c -2265.192617 3281.99774 2257.839936 3274.645059 2257.839936 3265.575067 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2262.532129 3259.416565 Tm -/T3romansHorzN0 1.285714 Tf -(\023\015) Tj -ET -EMC -/OC /OC10 BDC -2371 3750 m -2371.041604 3741.330208 2378.394285 3733.977527 2387.464277 3733.977527 c -2396.534268 3733.977527 2403.886949 3741.330208 2403.886949 3750.4002 c -2403.886949 3759.470192 2396.534268 3766.822873 2387.464277 3766.822873 c -2378.394285 3766.822873 2371.041604 3759.470192 2371.041604 3750.4002 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2375.440534 3744.241698 Tm -/T3romansHorzN0 1.285714 Tf -(\023\017) Tj -ET -EMC -/OC /OC10 BDC -1780 3540 m -1780.719173 3531.253439 1788.071854 3523.900757 1797.141846 3523.900757 c -1806.211838 3523.900757 1813.564519 3531.253439 1813.564519 3540.32343 c -1813.564519 3549.393422 1806.211838 3556.746103 1797.141846 3556.746103 c -1788.071854 3556.746103 1780.719173 3549.393422 1780.719173 3540.32343 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1791.276606 3534.164928 Tm -/T3romansHorzN0 1.285714 Tf -(\023) Tj -ET -EMC -/OC /OC10 BDC -900 3105 m -900.681216 3096.279871 908.033897 3088.92719 917.103888 3088.92719 c -926.17388 3088.92719 933.526561 3096.279871 933.526561 3105.349862 c -933.526561 3114.419854 926.17388 3121.772535 917.103888 3121.772535 c -908.033897 3121.772535 900.681216 3114.419854 900.681216 3105.349862 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 912.118434 3099.19136 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -EMC -/OC /OC10 BDC -1806 3885 m -1806.794208 3876.011553 1814.146889 3868.658872 1823.216881 3868.658872 c -1832.286873 3868.658872 1839.639554 3876.011553 1839.639554 3885.081545 c -1839.639554 3894.151536 1832.286873 3901.504217 1823.216881 3901.504217 c -1814.146889 3901.504217 1806.794208 3894.151536 1806.794208 3885.081545 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1817.351641 3878.923043 Tm -/T3romansHorzN0 1.285714 Tf -(\025) Tj -ET -EMC -/OC /OC10 BDC -1718 4026 m -1718.010651 4017.341191 1725.363332 4009.98851 1734.433323 4009.98851 c -1743.503315 4009.98851 1750.855996 4017.341191 1750.855996 4026.411182 c -1750.855996 4035.481174 1743.503315 4042.833855 1734.433323 4042.833855 c -1725.363332 4042.833855 1718.010651 4035.481174 1718.010651 4026.411182 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1728.274821 4020.25268 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -EMC -/OC /OC10 BDC -1485 3860 m -1485.557062 3851.239639 1492.909743 3843.886958 1501.979734 3843.886958 c -1511.049726 3843.886958 1518.402407 3851.239639 1518.402407 3860.30963 c -1518.402407 3869.379622 1511.049726 3876.732303 1501.979734 3876.732303 c -1492.909743 3876.732303 1485.557062 3869.379622 1485.557062 3860.30963 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1489.369468 3854.151128 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024) Tj -ET -EMC -/OC /OC10 BDC -2439 4190 m -2439.342626 4181.116725 2446.695307 4173.764044 2455.765299 4173.764044 c -2464.835291 4173.764044 2472.187972 4181.116725 2472.187972 4190.186716 c -2472.187972 4199.256708 2464.835291 4206.609389 2455.765299 4206.609389 c -2446.695307 4206.609389 2439.342626 4199.256708 2439.342626 4190.186716 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2444.034819 4184.028214 Tm -/T3romansHorzN0 1.285714 Tf -(\023\016) Tj -ET -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2945 3305 m -2956 3316 l -S -2945 3312 m -2956 3323 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1673 3504 m -1673.768323 3488.613908 1687.003149 3475.379082 1703.329134 3475.379082 c -1719.655119 3475.379082 1732.889945 3488.613908 1732.889945 3504.939893 c -1732.889945 3521.265878 1719.655119 3534.500704 1703.329134 3534.500704 c -1687.003149 3534.500704 1673.768323 3521.265878 1673.768323 3504.939893 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1685.440151 3508.237589 Tm -/T3romansHorzN0 1.285714 Tf -(\026\013\027) Tj -ET -BT -12.317005 0 0 12.317005 1684.853627 3489.938317 Tm -/T3romansHorzN0 1.285714 Tf -(\020\020\022) Tj -ET -EMC -/OC /OC3 BDC -1425 3835 m -1425.837855 3819.231295 1439.07268 3805.99647 1455.398665 3805.99647 c -1471.72465 3805.99647 1484.959476 3819.231295 1484.959476 3835.55728 c -1484.959476 3851.883265 1471.72465 3865.118091 1455.398665 3865.118091 c -1439.07268 3865.118091 1425.837855 3851.883265 1425.837855 3835.55728 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1436.923159 3838.854976 Tm -/T3romansHorzN0 1.285714 Tf -(\030\002\031) Tj -ET -BT -12.317005 0 0 12.317005 1437.802945 3820.555705 Tm -/T3romansHorzN0 1.285714 Tf -(\015\023\022) Tj -ET -EMC -/OC /OC3 BDC -1807 4026 m -1807.069173 4010.407543 1820.303999 3997.172717 1836.629984 3997.172717 c -1852.955969 3997.172717 1866.190795 4010.407543 1866.190795 4026.733528 c -1866.190795 4043.059513 1852.955969 4056.294339 1836.629984 4056.294339 c -1820.303999 4056.294339 1807.069173 4043.059513 1807.069173 4026.733528 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1824.899504 4030.031224 Tm -/T3romansHorzN0 1.285714 Tf -(\032\002) Tj -ET -BT -12.317005 0 0 12.317005 1819.327525 4011.731953 Tm -/T3romansHorzN0 1.285714 Tf -(\024\020\021) Tj -ET -EMC -/OC /OC3 BDC -2307 3724 m -2307.815602 3707.695444 2321.050427 3694.460618 2337.376412 3694.460618 c -2353.702397 3694.460618 2366.937223 3707.695444 2366.937223 3724.021429 c -2366.937223 3740.347414 2353.702397 3753.58224 2337.376412 3753.58224 c -2321.050427 3753.58224 2307.815602 3740.347414 2307.815602 3724.021429 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2328.871814 3727.319125 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000) Tj -ET -BT -12.317005 0 0 12.317005 2319.780692 3709.019853 Tm -/T3romansHorzN0 1.285714 Tf -(\023\021\023) Tj -ET -EMC -/OC /OC3 BDC -2671 3679 m -2671.148782 3663.016521 2684.383607 3649.781695 2700.709592 3649.781695 c -2717.035577 3649.781695 2730.270403 3663.016521 2730.270403 3679.342506 c -2730.270403 3695.668491 2717.035577 3708.903316 2700.709592 3708.903316 c -2684.383607 3708.903316 2671.148782 3695.668491 2671.148782 3679.342506 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2682.234086 3682.640201 Tm -/T3romansHorzN0 1.285714 Tf -(\030\013\027) Tj -ET -BT -12.317005 0 0 12.317005 2683.113872 3664.34093 Tm -/T3romansHorzN0 1.285714 Tf -(\015\023\025) Tj -ET -EMC -/OC /OC3 BDC -2842 3746 m -2842.341134 3729.973996 2855.575959 3716.739171 2871.901944 3716.739171 c -2888.227929 3716.739171 2901.462755 3729.973996 2901.462755 3746.299981 c -2901.462755 3762.625966 2888.227929 3775.860792 2871.901944 3775.860792 c -2855.575959 3775.860792 2842.341134 3762.625966 2842.341134 3746.299981 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2863.397346 3749.597677 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000) Tj -ET -BT -12.317005 0 0 12.317005 2854.012962 3731.298406 Tm -/T3romansHorzN0 1.285714 Tf -(\023\021\017) Tj -ET -EMC -/OC /OC3 BDC -2966 3743 m -2966.29279 3727.472222 2979.527616 3714.237397 2995.853601 3714.237397 c -3012.179586 3714.237397 3025.414411 3727.472222 3025.414411 3743.798207 c -3025.414411 3760.124192 3012.179586 3773.359018 2995.853601 3773.359018 c -2979.527616 3773.359018 2966.29279 3760.124192 2966.29279 3743.798207 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2977.964618 3747.095903 Tm -/T3romansHorzN0 1.285714 Tf -(\030\002\033) Tj -ET -BT -12.317005 0 0 12.317005 2978.551142 3728.796632 Tm -/T3romansHorzN0 1.285714 Tf -(\015\023\021) Tj -ET -EMC -/OC /OC3 BDC -2554 3246 m -2554.77745 3230.315185 2568.012276 3217.080359 2584.338261 3217.080359 c -2600.664246 3217.080359 2613.899071 3230.315185 2613.899071 3246.64117 c -2613.899071 3262.967155 2600.664246 3276.201981 2584.338261 3276.201981 c -2568.012276 3276.201981 2554.77745 3262.967155 2554.77745 3246.64117 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2566.156016 3249.938866 Tm -/T3romansHorzN0 1.285714 Tf -(\030\002\027) Tj -ET -BT -12.317005 0 0 12.317005 2566.74254 3231.639594 Tm -/T3romansHorzN0 1.285714 Tf -(\015\020\024) Tj -ET -BT -20.528341 0 0 20.528341 2621.410677 3076.498485 Tm -/T3romansHorzN0 1.285714 Tf -(\027\023\025) Tj -ET -EMC -/OC /OC3 BDC -2621 3587 m -2621 3649 l -S -2592 3679 m -2592.232375 3663.016521 2605.467201 3649.781695 2621.793186 3649.781695 c -2638.119171 3649.781695 2651.353997 3663.016521 2651.353997 3679.342506 c -2651.353997 3695.668491 2638.119171 3708.903316 2621.793186 3708.903316 c -2605.467201 3708.903316 2592.232375 3695.668491 2592.232375 3679.342506 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2609.769443 3682.640201 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011) Tj -ET -BT -12.317005 0 0 12.317005 2603.317679 3664.34093 Tm -/T3romansHorzN0 1.285714 Tf -(\020\022\035) Tj -ET -EMC -/OC /OC3 BDC -2621 3570 m -2621 3579 l -S -2628 3565 m -2628 3584 l -S -2615 3565 m -2615 3584 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2594 3569 m -2605 3580 l -S -2588 3569 m -2599 3580 l -S -2547 3569 m -2558 3580 l -S -2541 3569 m -2552 3580 l -S -2500 3569 m -2511 3580 l -S -2494 3569 m -2504 3580 l -S -2736 3569 m -2747 3580 l -S -2730 3569 m -2741 3580 l -S -2689 3569 m -2700 3580 l -S -2683 3569 m -2694 3580 l -S -2642 3569 m -2653 3580 l -S -2636 3569 m -2647 3580 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3558.256434 4168.232264 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\034\036) Tj -ET -BT -12.317005 0 0 12.317005 3646.5283 4168.232264 Tm -/T3romansHorzN0 1.285714 Tf -(\002\000\032\007) Tj -ET -BT -12.317005 0 0 12.317005 4174.693183 4168.232264 Tm -/T3romansHorzN0 1.285714 Tf -(\037\007\002\013\004\000\030\003\000\011\001) Tj -ET -BT -12.317005 0 0 12.317005 3573.212797 4139.492586 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3572.333011 4110.752909 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -12.317005 0 0 12.317005 3572.333011 4082.013232 Tm -/T3romansHorzN0 1.285714 Tf -(\023) Tj -ET -BT -12.317005 0 0 12.317005 3572.039749 4053.273555 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -12.317005 0 0 12.317005 3572.333011 4024.533878 Tm -/T3romansHorzN0 1.285714 Tf -(\016) Tj -ET -BT -12.317005 0 0 12.317005 3572.039749 3995.794201 Tm -/T3romansHorzN0 1.285714 Tf -(\035) Tj -ET -BT -12.317005 0 0 12.317005 3572.333011 3967.054523 Tm -/T3romansHorzN0 1.285714 Tf -(\025) Tj -ET -BT -12.317005 0 0 12.317005 3572.333011 3938.314846 Tm -/T3romansHorzN0 1.285714 Tf -(\022) Tj -ET -BT -12.317005 0 0 12.317005 3572.626273 3909.575169 Tm -/T3romansHorzN0 1.285714 Tf -(\021) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3880.835492 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 4139.492586 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 3567.347557 3852.095815 Tm -/T3romansHorzN0 1.285714 Tf -(\020\020) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3823.356137 Tm -/T3romansHorzN0 1.285714 Tf -(\020\015) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3794.61646 Tm -/T3romansHorzN0 1.285714 Tf -(\020\023) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 4139.492586 Tm -/T3romansHorzN0 1.285714 Tf -(\041\042\041\012\003\042\030\007\012\002\003\004\010\000\001\007\004\012\034\033\010\001\043\007\037\012\010\001\002\000\012\014\020\035\036\016\012\013\033\012\020\016\024\012\004\034) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 4110.752909 Tm -/T3romansHorzN0 1.285714 Tf -(\044\010\003\007\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007\012\044\010\034\007\004\012\014\045\034\033\042\012\003\042\030\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 4082.013232 Tm -/T3romansHorzN0 1.285714 Tf -(\044\010\034\007\004\012\037\007\033\005\043\007\012\027\010\033\027\007\012\046\031\011\004\000\032\011\001\003\010\033\012\003\042\030\007\047) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 4053.273555 Tm -/T3romansHorzN0 1.285714 Tf -(\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007\012\044\010\034\007\004\012\014\045\034\033\042\012\003\042\030\007\012\013\045\044\012\033\000\006\000\003\012\002\044\000\003\013\031\012\046\032\002\050\024\020\021\047) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 4024.533878 Tm -/T3romansHorzN0 1.285714 Tf -(\014\042\030\010\002\002\012\027\010\033\027\007\012\044\010\034\007\004\012\014\045\034\033\042\012\003\042\030\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3995.794201 Tm -/T3romansHorzN0 1.285714 Tf -(\037\004\010\000\001\012\051\012\003\007\002\003\012\027\010\033\027\007\012\013\045\044\012\015\052\040\012\000\001\002\003\010\001\003\010\001\007\011\005\002\012\031\011\002\007\012\013\011\005\030\033\000\001\043) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3967.054523 Tm -/T3romansHorzN0 1.285714 Tf -(\010\005\003\011\012\037\004\010\000\001\012\027\010\033\027\007\012\046\014\010\033\033\012\037\004\000\030\047) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3938.314846 Tm -/T3romansHorzN0 1.285714 Tf -(\030\004\000\006\000\001\043\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3909.575169 Tm -/T3romansHorzN0 1.285714 Tf -(\002\042\002\003\007\006\012\011\030\007\004\010\003\007\037\012\030\004\007\002\002\005\004\007\012\002\044\000\003\013\031\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3880.835492 Tm -/T3romansHorzN0 1.285714 Tf -(\002\042\002\003\007\006\012\011\030\007\004\010\003\007\037\012\030\004\007\002\002\005\004\007\012\002\044\000\003\013\031\012\002\007\003\012\010\003\012\020\012\014\010\004\012\004\000\002\000\001\043) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3852.095815 Tm -/T3romansHorzN0 1.285714 Tf -(\002\042\002\003\007\006\012\030\004\007\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3823.356137 Tm -/T3romansHorzN0 1.285714 Tf -(\002\042\002\003\007\006\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\046\024\050\020\035\014\010\004\047\012\035\040\012\037\000\010) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3794.61646 Tm -/T3romansHorzN0 1.285714 Tf -(\044\010\003\007\004\012\002\005\030\030\033\042\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3565.294723 3765.876783 Tm -/T3romansHorzN0 1.285714 Tf -(\020\017) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3737.137106 Tm -/T3romansHorzN0 1.285714 Tf -(\020\016) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3708.397429 Tm -/T3romansHorzN0 1.285714 Tf -(\020\035) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3679.657752 Tm -/T3romansHorzN0 1.285714 Tf -(\020\025) Tj -ET -BT -12.317005 0 0 12.317005 3565.587985 3650.918074 Tm -/T3romansHorzN0 1.285714 Tf -(\020\022) Tj -ET -BT -12.317005 0 0 12.317005 3565.881247 3622.178397 Tm -/T3romansHorzN0 1.285714 Tf -(\020\021) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3593.43872 Tm -/T3romansHorzN0 1.285714 Tf -(\015\024) Tj -ET -BT -12.317005 0 0 12.317005 3568.227343 3564.699043 Tm -/T3romansHorzN0 1.285714 Tf -(\015\020) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3535.959366 Tm -/T3romansHorzN0 1.285714 Tf -(\015\015) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3507.219689 Tm -/T3romansHorzN0 1.285714 Tf -(\015\023) Tj -ET -BT -12.317005 0 0 12.317005 3566.174509 3478.480011 Tm -/T3romansHorzN0 1.285714 Tf -(\015\017) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3765.876783 Tm -/T3romansHorzN0 1.285714 Tf -(\044\010\003\007\004\012\002\005\030\030\033\042\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\046\024\050\015\016\012\014\010\004\047\012\035\040\012\037\000\010) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3737.137106 Tm -/T3romansHorzN0 1.285714 Tf -(\030\004\000\006\000\001\043\012\003\007\002\003\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3708.397429 Tm -/T3romansHorzN0 1.285714 Tf -(\003\044\000\001\012\000\001\002\003\010\001\003\010\001\007\011\005\002\012\031\011\002\007\012\013\011\001\001\007\013\003\000\011\001\012\015\052\040\012\034\007\006\010\033\007\012) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3679.657752 Tm -/T3romansHorzN0 1.285714 Tf -(\011\004\000\034\000\013\007\012\030\033\010\003\007\012\046\037\004\000\033\033\007\037\012\053\053\054\054\047\012) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3650.918074 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\002\005\030\030\033\042\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3622.178397 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\002\005\030\030\033\042\012\013\031\007\013\055\012\027\010\033\027\007\012\046\015\056\011\034\034\047) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3593.43872 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\004\007\002\007\004\027\011\000\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3564.699043 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\004\007\002\007\004\027\011\000\004\012) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3535.959366 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\004\007\002\007\004\027\011\000\004\012\037\004\010\000\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3507.219689 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\004\007\002\007\004\027\011\000\004\012\004\007\033\000\007\034\012\027\010\033\027\007\012\002\007\003\012\010\003\012\020\024\012\014\010\004) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3478.480011 Tm -/T3romansHorzN0 1.285714 Tf -(\033\011\044\012\010\000\004\012\030\004\007\002\002\005\004\007\012\002\044\000\003\013\031\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3449.740334 Tm -/T3romansHorzN0 1.285714 Tf -(\015\016) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3421.000657 Tm -/T3romansHorzN0 1.285714 Tf -(\015\035) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3392.26098 Tm -/T3romansHorzN0 1.285714 Tf -(\015\025) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3363.521303 Tm -/T3romansHorzN0 1.285714 Tf -(\015\022) Tj -ET -BT -12.317005 0 0 12.317005 3566.761033 3334.781625 Tm -/T3romansHorzN0 1.285714 Tf -(\015\021) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3306.041948 Tm -/T3romansHorzN0 1.285714 Tf -(\023\024) Tj -ET -BT -12.317005 0 0 12.317005 3568.227343 3277.302271 Tm -/T3romansHorzN0 1.285714 Tf -(\023\020) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3248.562594 Tm -/T3romansHorzN0 1.285714 Tf -(\023\015) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3219.822917 Tm -/T3romansHorzN0 1.285714 Tf -(\023\023) Tj -ET -BT -12.317005 0 0 12.317005 3566.174509 3191.08324 Tm -/T3romansHorzN0 1.285714 Tf -(\023\017) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3162.343562 Tm -/T3romansHorzN0 1.285714 Tf -(\023\016) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3133.603885 Tm -/T3romansHorzN0 1.285714 Tf -(\023\035) Tj -ET -BT -12.317005 0 0 12.317005 3566.467771 3104.864208 Tm -/T3romansHorzN0 1.285714 Tf -(\023\025) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3449.740334 Tm -/T3romansHorzN0 1.285714 Tf -(\033\011\044\012\010\000\004\012\030\004\007\002\002\005\004\007\012\002\044\000\003\013\031\012\002\007\003\012\010\003\012\035\012\014\010\004\012\034\010\033\033\000\001\043) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3421.000657 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\002\005\030\030\033\042\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3392.26098 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\002\005\030\030\033\042\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\046\024\050\020\035\012\014\010\004\047\012\035\040\012\037\000\010) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3363.521303 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\030\004\007\002\002\005\004\007\012\013\011\001\003\004\011\033\012\027\010\033\027\007\012\013\045\044\012\034\000\033\003\007\004) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3334.781625 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\002\003\000\013\003\007\037\012\011\004\000\034\000\013\007\012\046\020\036\016\054\054\012\037\000\010\047) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3306.041948 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\002\003\004\000\013\003\007\037\012\011\004\000\034\000\013\007\012\014\042\030\010\002\002\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3277.302271 Tm -/T3romansHorzN0 1.285714 Tf -(\023\050\044\010\042\012\002\011\033\007\001\011\000\037\012\027\010\033\027\007\012\015\017\012\027\011\033\003\012\037\013) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3248.562594 Tm -/T3romansHorzN0 1.285714 Tf -(\006\010\001\005\010\033\012\004\007\033\007\010\002\007\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3219.822917 Tm -/T3romansHorzN0 1.285714 Tf -(\037\000\010\030\031\004\010\043\006\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3191.08324 Tm -/T3romansHorzN0 1.285714 Tf -(\037\000\010\030\031\004\010\043\006\012\030\004\007\002\002\005\004\007\012\000\001\037\000\013\010\003\011\004\012\046\024\050\020\035\012\014\010\004\047\012\035\040\012\037\000\010) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3162.343562 Tm -/T3romansHorzN0 1.285714 Tf -(\001\011\001\050\000\036\002\036\012\002\055\000\037\012\057\005\001\013\003\000\011\001\012\014\011\026\012\046\007\060\061\012\000\000\013\012\003\035\012\013\033\010\002\002\012\020\012\032\011\001\007\012\020\047) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3104.864208 Tm -/T3romansHorzN0 1.285714 Tf -(\037\007\033\005\043\007\012\027\010\033\027\007\012\014\011\037\042\012\037\004\010\000\001\012\027\010\033\027\007) Tj -ET -EMC -/OC /OC11 BDC -3543 3901 m -4643 3901 l -S -3543 3930 m -4643 3930 l -S -3543 3958 m -4643 3958 l -S -3543 3987 m -4643 3987 l -S -3543 4016 m -4643 4016 l -S -3543 4045 m -4643 4045 l -S -3543 4073 m -4643 4073 l -S -3543 4102 m -4643 4102 l -S -3543 4131 m -4643 4131 l -S -3543 4160 m -4643 4160 l -S -3543 4188 m -4643 4188 l -S -3543 3872 m -4643 3872 l -S -3543 3843 m -4643 3843 l -S -3543 3815 m -4643 3815 l -S -3543 3786 m -4643 3786 l -S -3543 3757 m -4643 3757 l -S -3543 3728 m -4643 3728 l -S -3543 3700 m -4643 3700 l -S -3543 3671 m -4643 3671 l -S -3543 3642 m -4643 3642 l -S -3543 3613 m -4643 3613 l -S -3543 3585 m -4643 3585 l -S -3543 3556 m -4643 3556 l -S -3543 3527 m -4643 3527 l -S -3543 3499 m -4643 3499 l -S -3543 3470 m -4643 3470 l -S -3543 3441 m -4643 3441 l -S -3543 3412 m -4643 3412 l -S -3543 3384 m -4643 3384 l -S -3543 3355 m -4643 3355 l -S -3543 3326 m -4643 3326 l -S -3543 3297 m -4643 3297 l -S -3543 3269 m -4643 3269 l -S -3543 3240 m -4643 3240 l -S -3543 3211 m -4643 3211 l -S -3543 3182 m -4643 3182 l -S -3543 3154 m -4643 3154 l -S -3543 3125 m -4643 3125 l -S -3543 3096 m -4643 3096 l -S -3543 4188 m -3543 3096 l -S -4643 3096 m -4643 4188 l -S -3613 4188 m -3613 3096 l -S -3719 3096 m -3719 4188 l -S -EMC -/OC /OC5 BDC -BT -7.606829 0 0 7.606829 3662.164747 3938.314846 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3940 m -3665 3950 l -S -BT -7.606829 0 0 7.606829 3652.254881 3944.002818 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3938.314846 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -EMC -/OC /OC11 BDC -3822 3096 m -3822 4188 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3733.920379 4168.232264 Tm -/T3romansHorzN0 1.285714 Tf -(\003\010\043\012\001\011\036) Tj -ET -BT -12.317005 0 0 12.317005 3727.468615 4110.752909 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\023\024) Tj -ET -BT -12.317005 0 0 12.317005 3728.641663 4082.013232 Tm -/T3romansHorzN0 1.285714 Tf -(\026\013\027\050\020\020\022) Tj -ET -BT -12.317005 0 0 12.317005 3754.155458 4139.492586 Tm -/T3romansHorzN0 1.285714 Tf -(\034\017\021) Tj -ET -BT -12.317005 0 0 12.317005 3727.175353 4053.273555 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\015\017) Tj -ET -BT -12.317005 0 0 12.317005 3727.761877 4024.533878 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\015\021) Tj -ET -BT -12.317005 0 0 12.317005 3727.468615 3995.794201 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\015\035) Tj -ET -BT -12.317005 0 0 12.317005 3737.146262 3823.356137 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000\050\023\021\015) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3852.975601 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3727.175353 3880.835492 Tm -/T3romansHorzN0 1.285714 Tf -(\030\002\031\050\015\023\022) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3910.454955 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3727.468615 3938.314846 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\015\025) Tj -ET -BT -12.317005 0 0 12.317005 3727.468615 3967.054523 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\015\016) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3651.79786 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3680.537538 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3709.277215 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3727.468615 3737.137106 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044\050\025\020\015\022) Tj -ET -BT -12.317005 0 0 12.317005 3738.905834 3765.876783 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000\050\023\021\020) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3795.496246 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3479.359797 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3728.348401 3507.219689 Tm -/T3romansHorzN0 1.285714 Tf -(\030\002\027\050\015\020\024) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3536.839152 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3754.741982 3564.699043 Tm -/T3romansHorzN0 1.285714 Tf -(\027\023\025) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3594.318506 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3623.058183 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3623.058183 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3306.921734 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3733.920379 3334.781625 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011\050\020\022\035) Tj -ET -BT -12.317005 0 0 12.317005 3728.055139 3363.521303 Tm -/T3romansHorzN0 1.285714 Tf -(\030\013\027\050\015\023\025) Tj -ET -BT -12.317005 0 0 12.317005 3736.853 3392.26098 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000\050\023\021\017) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3421.880443 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3728.934925 3449.740334 Tm -/T3romansHorzN0 1.285714 Tf -(\030\002\033\050\015\023\021) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3134.483671 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3163.223348 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3737.146262 3191.08324 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000\050\023\021\023) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3220.702703 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3249.44238 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3722.483161 3277.302271 Tm -/T3romansHorzN0 1.285714 Tf -(\026\002\011\027\050\020\015\015) Tj -ET -BT -12.317005 0 0 12.317005 3763.539843 3105.743994 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -12.317005 0 0 12.317005 3843.013848 3133.603885 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011\010\006\045\044\010\003\007\004\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007\012\044\010\034\007\004\012\014\045\034\033\042\012\003\042\030\007) Tj -ET -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2405 3569 m -2416 3580 l -S -2399 3569 m -2410 3580 l -S -2358 3569 m -2369 3580 l -S -2352 3569 m -2363 3580 l -S -2311 3569 m -2322 3580 l -S -2305 3569 m -2316 3580 l -S -2539 3514 m -2539 3575 l -S -2702 3514 m -2702 3575 l -S -2533 3542 m -2544 3553 l -S -2533 3535 m -2544 3546 l -S -2697 3542 m -2708 3553 l -S -2697 3535 m -2708 3546 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2658 3000 m -2638 3000 l -S -2638 3000 m -2658 2967 l -S -2638 2967 m -2658 3000 l -S -2658 2967 m -2638 2967 l -S -2638 2984 m -2638.928195 2978.587874 2643.339803 2974.176265 2648.781798 2974.176265 c -2654.223793 2974.176265 2658.635402 2978.587874 2658.635402 2984.029869 c -2658.635402 2989.471864 2654.223793 2993.883473 2648.781798 2993.883473 c -2643.339803 2993.883473 2638.928195 2989.471864 2638.928195 2984.029869 c -S -2638 3000 m -2643 2992 l -2643 2992 l -2643 2992 l -2644 2992 l -2644 2992 l -2644 2992 l -2644 2992 l -2644 2993 l -2644 2993 l -2645 2993 l -2645 2993 l -2645 2993 l -2645 2993 l -2645 2993 l -2645 2993 l -2645 2993 l -2646 2993 l -2646 2993 l -2646 2993 l -2646 2993 l -2646 2993 l -2646 2993 l -2647 2993 l -2647 2993 l -2647 2993 l -2647 2993 l -2647 2993 l -2647 2993 l -2648 2993 l -2648 2993 l -2648 2993 l -2648 2993 l -2648 2993 l -2648 2993 l -2649 2993 l -2649 2993 l -2649 2993 l -2649 2993 l -2649 2993 l -2649 2993 l -2650 2993 l -2650 2993 l -2650 2993 l -2650 2993 l -2650 2993 l -2650 2993 l -2651 2993 l -2651 2993 l -2651 2993 l -2651 2993 l -2651 2993 l -2651 2993 l -2652 2993 l -2652 2993 l -2652 2993 l -2652 2993 l -2652 2993 l -2652 2993 l -2652 2992 l -2653 2992 l -2653 2992 l -2653 2992 l -2653 2992 l -2653 2992 l -2653 2992 l -2658 3000 l -2638 3000 l -2648 2974 m -2648 2974 l -2648 2974 l -2648 2974 l -2648 2974 l -2647 2974 l -2647 2974 l -2647 2974 l -2647 2974 l -2647 2974 l -2647 2974 l -2646 2974 l -2646 2974 l -2646 2974 l -2646 2974 l -2646 2974 l -2646 2974 l -2645 2974 l -2645 2974 l -2645 2974 l -2645 2974 l -2645 2974 l -2645 2974 l -2645 2974 l -2644 2974 l -2644 2975 l -2644 2975 l -2644 2975 l -2644 2975 l -2644 2975 l -2643 2975 l -2643 2975 l -2643 2975 l -2638 2967 l -2658 2967 l -2653 2975 l -2653 2975 l -2653 2975 l -2653 2975 l -2653 2975 l -2653 2975 l -2652 2975 l -2652 2975 l -2652 2974 l -2652 2974 l -2652 2974 l -2652 2974 l -2652 2974 l -2651 2974 l -2651 2974 l -2651 2974 l -2651 2974 l -2651 2974 l -2651 2974 l -2650 2974 l -2650 2974 l -2650 2974 l -2650 2974 l -2650 2974 l -2650 2974 l -2649 2974 l -2649 2974 l -2649 2974 l -2649 2974 l -2649 2974 l -2649 2974 l -2648 2974 l -2648 2974 l -f* -0 w -110 1853 m -4889 1853 l -4889 5203 l -110 5203 l -110 1853 l -S -0.708661 w -140 1861 m -137 1861 l -137 5195 l -140 5195 l -f -118 1880 m -118 1884 l -4880 1884 l -4880 1880 l -f -4861 1861 m -4858 1861 l -4858 5195 l -4861 5195 l -f -118 5173 m -118 5176 l -4880 5176 l -4880 5173 l -f -924 1882 m -927 1882 l -927 1861 l -924 1861 l -f -BT -7.698128 0 0 10.26417 3065.177482 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\037\004\010\044\000\001\043\012\001\005\006\014\007\004) Tj -ET -BT -7.698128 0 0 10.26417 3393.154385 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\037\007\002\013\004\000\030\003\000\011\001) Tj -ET -4571 2071 m -4574 2071 l -4574 1882 l -4571 1882 l -f -BT -7.698128 0 0 10.26417 4577.163101 1936.888842 Tm -/T3romansHorzN0 1.285714 Tf -(\002\031\003\012\001\062\036) Tj -ET -3955 2071 m -3958 2071 l -3958 1882 l -3955 1882 l -f -3637 2071 m -3640 2071 l -3640 1882 l -3637 1882 l -f -BT -7.698128 0 0 10.26417 4577.163101 2054.926802 Tm -/T3romansHorzN0 1.285714 Tf -(\037\004\010\044\000\001\043\012\001\062\036) Tj -ET -BT -7.698128 0 0 10.26417 3961.312875 2054.926802 Tm -/T3romansHorzN0 1.285714 Tf -(\003\000\003\033\007) Tj -ET -2267 1927 m -3957 1927 l -S -2267 1968 m -3639 1968 l -S -2267 2009 m -3639 2009 l -S -2267 2050 m -3639 2050 l -S -3016 1882 m -3013 1882 l -3013 2071 l -3016 2071 l -f -3220 1907 m -3220 2071 l -S -BT -9.237753 0 0 12.317005 3248.686186 1888.647241 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\034\007\004\007\001\013\007\012\037\004\010\044\000\001\043\002) Tj -ET -2267 1905 m -2267 1908 l -3639 1908 l -3639 1905 l -f -3639 1907 m -3957 1907 l -S -4573 1952 m -4860 1952 l -S -4716 1952 m -4716 1882 l -S -BT -7.698128 0 0 10.26417 4720.678198 1936.888842 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\027\012\001\062\036) Tj -ET -2308 2071 m -2308 1907 l -S -2378 2071 m -2378 1907 l -S -2267 1948 m -3957 1948 l -S -2267 1989 m -3639 1989 l -S -2267 2030 m -3639 2030 l -S -BT -9.237753 0 0 12.317005 2606.369064 1888.647241 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\027\000\002\000\011\001\002) Tj -ET -BT -7.698128 0 0 10.26417 2277.072483 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\027) Tj -ET -BT -7.698128 0 0 10.26417 2329.749672 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\037\010\003\007) Tj -ET -BT -7.698128 0 0 10.26417 2391.40801 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\014\042) Tj -ET -BT -7.698128 0 0 10.26417 2426.78274 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\013\031\055\036) Tj -ET -BT -7.698128 0 0 10.26417 2468.939154 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\010\030\030\036) Tj -ET -BT -7.698128 0 0 10.26417 2731.775232 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\004\007\006\010\004\055\002) Tj -ET -2419 2071 m -2419 1907 l -S -2501 2071 m -2501 1907 l -S -2460 2071 m -2460 1907 l -S -1711 1882 m -1714 1882 l -1714 1861 l -1711 1861 l -f -2498 1882 m -2501 1882 l -2501 1861 l -2498 1861 l -f -3285 1882 m -3288 1882 l -3288 1861 l -3285 1861 l -f -4071 1882 m -4075 1882 l -4075 1861 l -4071 1861 l -f -BT -10.777379 0 0 14.369839 527.7768 1860.933981 Tm -/T3romansHorzN0 1.285714 Tf -(\010) Tj -ET -138 4627 m -138 4624 l -118 4624 l -118 4627 l -f -BT -10.777379 0 0 14.369839 120.2037 4893.654201 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -10.777379 0 0 14.369839 119.433887 4344.863223 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -10.777379 0 0 14.369839 119.433887 3796.072244 Tm -/T3romansHorzN0 1.285714 Tf -(\023) Tj -ET -BT -10.777379 0 0 14.369839 119.177283 3247.281266 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -10.777379 0 0 14.369839 119.433887 2698.490287 Tm -/T3romansHorzN0 1.285714 Tf -(\016) Tj -ET -BT -10.777379 0 0 14.369839 119.177283 2149.699309 Tm -/T3romansHorzN0 1.285714 Tf -(\035) Tj -ET -138 4079 m -138 4076 l -118 4076 l -118 4079 l -f -138 3530 m -138 3527 l -118 3527 l -118 3530 l -f -138 2981 m -138 2978 l -118 2978 l -118 2981 l -f -138 2432 m -138 2429 l -118 2429 l -118 2432 l -f -4860 4624 m -4860 4627 l -4880 4627 l -4880 4624 l -f -BT -10.777379 0 0 14.369839 4870.46177 4893.654201 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -10.777379 0 0 14.369839 4869.691958 4344.863223 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -10.777379 0 0 14.369839 4869.691958 3796.072244 Tm -/T3romansHorzN0 1.285714 Tf -(\023) Tj -ET -BT -10.777379 0 0 14.369839 4869.435353 3247.281266 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -10.777379 0 0 14.369839 4869.691958 2698.490287 Tm -/T3romansHorzN0 1.285714 Tf -(\016) Tj -ET -BT -10.777379 0 0 14.369839 4869.435353 2149.699309 Tm -/T3romansHorzN0 1.285714 Tf -(\035) Tj -ET -4860 4076 m -4860 4079 l -4880 4079 l -4880 4076 l -f -4860 3527 m -4860 3530 l -4880 3530 l -4880 3527 l -f -4860 2978 m -4860 2981 l -4880 2981 l -4880 2978 l -f -4860 2429 m -4860 2432 l -4880 2432 l -4880 2429 l -f -BT -10.777379 0 0 14.369839 1313.670115 1860.933981 Tm -/T3romansHorzN0 1.285714 Tf -(\014) Tj -ET -BT -10.777379 0 0 14.369839 2100.846452 1860.933981 Tm -/T3romansHorzN0 1.285714 Tf -(\013) Tj -ET -BT -10.777379 0 0 14.369839 2887.50958 1860.933981 Tm -/T3romansHorzN0 1.285714 Tf -(\037) Tj -ET -BT -10.777379 0 0 14.369839 3674.685916 1860.933981 Tm -/T3romansHorzN0 1.285714 Tf -(\007) Tj -ET -BT -10.777379 0 0 14.369839 4461.605649 1860.933981 Tm -/T3romansHorzN0 1.285714 Tf -(\034) Tj -ET -927 5175 m -924 5175 l -924 5195 l -927 5195 l -f -1714 5175 m -1711 5175 l -1711 5195 l -1714 5195 l -f -2501 5175 m -2498 5175 l -2498 5195 l -2501 5195 l -f -3288 5175 m -3285 5175 l -3285 5195 l -3288 5195 l -f -4075 5175 m -4071 5175 l -4071 5195 l -4075 5195 l -f -BT -10.777379 0 0 14.369839 527.7768 5182.419529 Tm -/T3romansHorzN0 1.285714 Tf -(\010) Tj -ET -BT -10.777379 0 0 14.369839 1313.670115 5182.419529 Tm -/T3romansHorzN0 1.285714 Tf -(\014) Tj -ET -BT -10.777379 0 0 14.369839 2100.846452 5182.419529 Tm -/T3romansHorzN0 1.285714 Tf -(\013) Tj -ET -BT -10.777379 0 0 14.369839 2887.50958 5182.419529 Tm -/T3romansHorzN0 1.285714 Tf -(\037) Tj -ET -BT -10.777379 0 0 14.369839 3674.685916 5182.419529 Tm -/T3romansHorzN0 1.285714 Tf -(\007) Tj -ET -BT -10.777379 0 0 14.369839 4461.605649 5182.419529 Tm -/T3romansHorzN0 1.285714 Tf -(\034) Tj -ET -4909 5224 m -4909 5224 l -S -48 1792 m -48 1792 l -S -BT -7.698128 0 0 10.26417 3643.123592 1889.673658 Tm -/T3romansHorzN0 1.285714 Tf -(\006\011\013\045\004\007\034\012\001\062\036) Tj -ET -3729 1907 m -3729 1882 l -S -BT -7.698128 0 0 10.26417 3643.123592 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\002\013\010\033\007) Tj -ET -BT -7.698128 0 0 10.26417 3643.123592 1932.783174 Tm -/T3romansHorzN0 1.285714 Tf -(\037\004\010\044\001) Tj -ET -3688 1948 m -3688 1907 l -S -3846 1948 m -3846 1907 l -S -3887 1948 m -3887 1907 l -S -BT -7.698128 0 0 10.26417 3850.459835 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\002\000\032\007) Tj -ET -BT -7.698128 0 0 10.26417 3850.459835 1932.783174 Tm -/T3romansHorzN0 1.285714 Tf -(\037\010\003\007) Tj -ET -BT -7.698128 0 0 10.26417 3915.710633 1912.254833 Tm -/T3romansHorzN0 1.285714 Tf -(\010\024) Tj -ET -2269 1882 m -2266 1882 l -2266 2072 l -2269 2069 l -f -2269 2069 m -2266 2072 l -4860 2072 l -4860 2069 l -f -BT -15.396256 0 0 20.528341 4713.090043 2010.839746 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -12.317005 0 0 16.422673 4641.974005 1916.604886 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -12.317005 0 0 16.422673 4785.672391 1916.604886 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -15.396256 0 0 20.528341 4261.466545 2041.632257 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -15.396256 0 0 20.528341 4261.466545 2008.786912 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -15.396256 0 0 20.528341 4261.466545 1975.941567 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -15.396256 0 0 20.528341 4261.466545 1943.096221 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -15.396256 0 0 20.528341 4261.466545 1910.250876 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3766.513584 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3920.47614 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3766.513584 1916.898148 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3733.448292 1889.673658 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 1957.95483 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 1957.95483 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 1957.95483 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 1957.95483 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 1957.95483 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 1978.483171 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 1978.483171 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 1978.483171 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 1978.483171 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 1978.483171 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 1999.011512 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 1999.011512 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 1999.011512 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 1999.011512 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 1999.011512 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 2019.539852 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 2019.539852 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 2019.539852 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 2019.539852 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 2019.539852 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 2040.068193 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 2040.068193 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 2040.068193 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 2040.068193 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 2040.068193 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2286.420209 2060.596534 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2341.84673 2060.596534 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2397.27325 2060.596534 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2438.329931 2060.596534 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 2479.386613 2060.596534 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3115.765179 1937.426489 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3224.345439 1932.783174 Tm -/T3romansHorzN0 1.285714 Tf -(\030\051\000\037\012\034\000\004\007\044\010\003\007\004\012\006\010\000\001) Tj -ET -BT -7.698128 0 0 10.26417 3115.765179 1957.95483 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3224.345439 1953.311515 Tm -/T3romansHorzN0 1.285714 Tf -(\037\000\010\043\004\010\006\006\010\003\000\013\012\037\007\003\010\000\033\002\012\030\051\000\037) Tj -ET -BT -7.698128 0 0 10.26417 3115.765179 1978.483171 Tm -/T3romansHorzN0 1.285714 Tf -(\036) Tj -ET -BT -7.698128 0 0 10.26417 3224.345439 1973.839855 Tm -/T3romansHorzN0 1.285714 Tf -(\037\007\033\005\043\007\012\027\010\033\027\007\012\002\055\000\037\012\043\007\001\007\004\010\033\012\010\004\004\010\001\043\007\006\007\001\003) Tj -ET -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2499.762896 4194.292385 Tm -/T3romansHorzN0 1.285714 Tf -(\001\011\001\050\000\036\002\036\012\057\014) Tj -ET -BT -12.317005 0 0 12.317005 2506.507922 4173.764044 Tm -/T3romansHorzN0 1.285714 Tf -(\015\017\027\011\033\003\012\037\013) Tj -ET -EMC -/OC /OC3 BDC -3005 3641 m -2985 3674 l -S -3005 3674 m -2985 3641 l -S -2985 3641 m -3005 3641 l -S -2985 3674 m -3005 3674 l -S -3013 3657 m -3013 3652 l -S -3013 3657 m -2995 3657 l -S -2995 3657 m -3013 3652 l -S -EMC -/OC /OC10 BDC -2905 3772 m -2905.567136 3763.608761 2912.919817 3756.25608 2921.989809 3756.25608 c -2931.0598 3756.25608 2938.412481 3763.608761 2938.412481 3772.678752 c -2938.412481 3781.748744 2931.0598 3789.101425 2921.989809 3789.101425 c -2912.919817 3789.101425 2905.567136 3781.748744 2905.567136 3772.678752 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2910.259328 3766.52025 Tm -/T3romansHorzN0 1.285714 Tf -(\015\025) Tj -ET -EMC -/OC /OC10 BDC -2823 3658 m -2823.733049 3649.634507 2831.08573 3642.281826 2840.155722 3642.281826 c -2849.225713 3642.281826 2856.578394 3649.634507 2856.578394 3658.704498 c -2856.578394 3667.77449 2849.225713 3675.127171 2840.155722 3675.127171 c -2831.08573 3675.127171 2823.733049 3667.77449 2823.733049 3658.704498 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2828.425241 3652.545996 Tm -/T3romansHorzN0 1.285714 Tf -(\015\035) Tj -ET -EMC -/OC /OC3 BDC -2881 3641 m -2862 3674 l -S -2881 3674 m -2862 3641 l -S -2862 3641 m -2881 3641 l -S -2862 3674 m -2881 3674 l -S -2889 3657 m -2889 3652 l -S -2889 3657 m -2871 3657 l -S -2871 3657 m -2889 3652 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2901 3590 m -2912 3601 l -S -2907 3590 m -2918 3601 l -S -2948 3590 m -2959 3601 l -S -2955 3590 m -2966 3601 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -3289 3559 m -3276 3571 l -3292 3564 l -f -3290 3562 m -3317 3545 l -S -3317 3545 m -3333 3545 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3338.250458 3559.913561 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\054\054\012\011\045\037) Tj -ET -BT -12.317005 0 0 12.317005 3339.423506 3538.212172 Tm -/T3romansHorzN0 1.285714 Tf -(\034\007\006\010\033\007\012\000\001\002\003\036) Tj -ET -BT -12.317005 0 0 12.317005 3341.183078 3517.683831 Tm -/T3romansHorzN0 1.285714 Tf -(\010\000\004\012\002\005\030\030\033\042) Tj -ET -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2945 3353 m -2956 3364 l -S -2945 3359 m -2956 3370 l -S -2945 3400 m -2956 3411 l -S -2945 3406 m -2956 3417 l -S -2945 3447 m -2956 3458 l -S -2945 3453 m -2956 3464 l -S -2945 3494 m -2956 3505 l -S -2945 3500 m -2956 3511 l -S -2945 3542 m -2956 3552 l -S -2945 3548 m -2956 3559 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -BT --0 -12.317005 12.317005 -0 2964.040701 3465.742441 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\054\054\012\011\045\037) Tj -ET -BT -12.317005 0 0 12.317005 2741.047406 3548.31407 Tm -/T3romansHorzN0 1.285714 Tf -(\002\007\003\012\010\003) Tj -ET -BT -12.317005 0 0 12.317005 2738.114786 3527.785729 Tm -/T3romansHorzN0 1.285714 Tf -(\017\012\014\010\004\043) Tj -ET -BT -12.317005 0 0 12.317005 2588.94784 3735.59016 Tm -/T3romansHorzN0 1.285714 Tf -(\020\036\016\054\054) Tj -ET -BT -12.317005 0 0 12.317005 2607.130085 3715.061819 Tm -/T3romansHorzN0 1.285714 Tf -(\037\000\010) Tj -ET -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2331 3595 m -2342 3606 l -S -2331 3601 m -2342 3612 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC10 BDC -2289 3638 m -2289.207517 3629.857728 2296.560198 3622.505047 2305.63019 3622.505047 c -2314.700181 3622.505047 2322.052862 3629.857728 2322.052862 3638.92772 c -2322.052862 3647.997712 2314.700181 3655.350393 2305.63019 3655.350393 c -2296.560198 3655.350393 2289.207517 3647.997712 2289.207517 3638.92772 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2293.899709 3632.769218 Tm -/T3romansHorzN0 1.285714 Tf -(\023\023) Tj -ET -EMC -/OC /OC3 BDC -2347 3621 m -2327 3654 l -S -2347 3654 m -2327 3621 l -S -2327 3621 m -2347 3621 l -S -2327 3654 m -2347 3654 l -S -2355 3638 m -2355 3632 l -S -2355 3638 m -2337 3638 l -S -2337 3638 m -2355 3632 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2195.389425 3588.099571 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\054\054\012\011\045\037) Tj -ET -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2264 3569 m -2275 3580 l -S -2258 3569 m -2268 3580 l -S -2216 3569 m -2227 3580 l -S -2210 3569 m -2221 3580 l -S -2169 3569 m -2180 3580 l -S -2163 3569 m -2174 3580 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2455 3544 m -2455 3558 l -S -2445 3558 m -2465 3558 l -S -2471 3584 m -2438 3565 l -S -2438 3584 m -2471 3565 l -S -2471 3565 m -2471 3584 l -S -2438 3565 m -2438 3584 l -S -2455 3575 m -2445 3558 l -S -2465 3558 m -2455 3575 l -S -2455 3575 m -2455 3611 l -S -2455 3575 m -2465 3558 l -2465 3558 l -2445 3558 l -f -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2433.419721 3509.259029 Tm -/T3romansHorzN0 1.285714 Tf -(\027\007\001\003) Tj -ET -EMC -/OC /OC3 BDC -2457 3544 m -2455 3529 l -2455 3529 l -2453 3544 l -f -2444 3543 m -2446 3528 l -2446 3528 l -2439 3541 l -f -2442 3542 m -2436.887188 3553.949289 2425.955879 3561.586612 2413.515701 3562.58783 c -S -2466 3633 m -2444 3633 l -S -2444 3611 m -2466 3611 l -S -2444 3633 m -2444 3611 l -S -2466 3611 m -2466 3633 l -S -2455 3598 m -2434 3598 l -S -2422 3610 m -2409 3598 l -S -2434 3598 m -2422 3610 l -S -BT -10.26417 0 0 10.26417 2416.73572 3592.873676 Tm -/T3romansHorzN0 1.285714 Tf -(\004) Tj -ET -2409 3598 m -2422 3585 l -S -2422 3585 m -2434 3598 l -S -BT -12.317005 0 0 12.317005 2449.549132 3616.494991 Tm -/T3romansHorzN0 1.285714 Tf -(\002) Tj -ET -0 0 1 RG -0 0 1 rg -EMC -/OC /OC6 BDC -2455 3633 m -2455 3639 l -S -2455 3644 m -2455 3655 l -S -2455 3660 m -2455 3670 l -S -2455 3675 m -2455 3685 l -S -2455 3691 m -2455 3701 l -S -2455 3706 m -2455 3716 l -S -2455 3721 m -2455 3732 l -S -2455 3737 m -2455 3747 l -S -2455 3752 m -2455 3762 l -S -2455 3767 m -2455 3778 l -S -2455 3783 m -2455 3793 l -S -2455 3798 m -2455 3809 l -S -2455 3814 m -2455 3819 l -S -2567 3819 m -2560 3819 l -S -2555 3819 m -2544 3819 l -S -2539 3819 m -2529 3819 l -S -2524 3819 m -2513 3819 l -S -2508 3819 m -2498 3819 l -S -2493 3819 m -2483 3819 l -S -2478 3819 m -2467 3819 l -S -2462 3819 m -2455 3819 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2513 3654 m -2471 3584 l -S -2499 3679 m -2499.03672 3663.016521 2512.271546 3649.781695 2528.597531 3649.781695 c -2544.923516 3649.781695 2558.158342 3663.016521 2558.158342 3679.342506 c -2558.158342 3695.668491 2544.923516 3708.903316 2528.597531 3708.903316 c -2512.271546 3708.903316 2499.03672 3695.668491 2499.03672 3679.342506 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2504.550046 3682.640201 Tm -/T3romansHorzN0 1.285714 Tf -(\026\002\011\027) Tj -ET -BT -12.317005 0 0 12.317005 2510.122025 3664.34093 Tm -/T3romansHorzN0 1.285714 Tf -(\020\015\015) Tj -ET -BT -12.317005 0 0 12.317005 2486.759531 3588.099571 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\054\054\012\011\045\037) Tj -ET -BT -12.317005 0 0 12.317005 2399.69459 3488.730688 Tm -/T3romansHorzN0 1.285714 Tf -(\010\005\003\011\012\033\010\003\013\031) Tj -ET -BT -12.317005 0 0 12.317005 2385.031489 3468.202347 Tm -/T3romansHorzN0 1.285714 Tf -(\006\010\001\005\010\033\012\004\007\002\007\003) Tj -ET -EMC -/OC /OC10 BDC -2391 3537 m -2391.718034 3528.540538 2399.070715 3521.187857 2408.140707 3521.187857 c -2417.210699 3521.187857 2424.56338 3528.540538 2424.56338 3537.610529 c -2424.56338 3546.680521 2417.210699 3554.033202 2408.140707 3554.033202 c -2399.070715 3554.033202 2391.718034 3546.680521 2391.718034 3537.610529 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2398.169799 3531.452027 Tm -/T3romansHorzN0 1.285714 Tf -(\023\020) Tj -ET -3297 2999 m -3319 2999 l -S -3297 3002 m -3280 2999 l -3280 2999 l -3297 2996 l -f -3264 3002 m -3280 2999 l -3280 2999 l -3264 2996 l -f -3280 2958 m -3280 3023 l -S -3264 2999 m -3241 2999 l -S -BT -12.317005 0 0 12.317005 3202.158824 3009.619672 Tm -/T3romansHorzN0 1.285714 Tf -(\027\007\001\037\011\004) Tj -ET -BT -12.317005 0 0 12.317005 3287.314214 3009.619654 Tm -/T3romansHorzN0 1.285714 Tf -(\013\033\000\007\001\003) Tj -ET -EMC -/OC /OC3 BDC -2252 3283 m -2233 3283 l -S -2233 3283 m -2252 3250 l -S -2233 3250 m -2252 3283 l -S -2252 3250 m -2233 3250 l -S -2233 3267 m -2233.092441 3261.757764 2237.504049 3257.346155 2242.946044 3257.346155 c -2248.388039 3257.346155 2252.799648 3261.757764 2252.799648 3267.199759 c -2252.799648 3272.641754 2248.388039 3277.053362 2242.946044 3277.053362 c -2237.504049 3277.053362 2233.092441 3272.641754 2233.092441 3267.199759 c -S -2233 3283 m -2237 3275 l -2238 3275 l -2238 3275 l -2238 3275 l -2238 3275 l -2238 3276 l -2238 3276 l -2238 3276 l -2239 3276 l -2239 3276 l -2239 3276 l -2239 3276 l -2239 3276 l -2239 3276 l -2239 3276 l -2240 3276 l -2240 3276 l -2240 3276 l -2240 3276 l -2240 3276 l -2240 3276 l -2241 3276 l -2241 3276 l -2241 3276 l -2241 3276 l -2241 3276 l -2241 3277 l -2242 3277 l -2242 3277 l -2242 3277 l -2242 3277 l -2242 3277 l -2242 3277 l -2243 3277 l -2243 3277 l -2243 3277 l -2243 3277 l -2243 3277 l -2243 3277 l -2244 3276 l -2244 3276 l -2244 3276 l -2244 3276 l -2244 3276 l -2244 3276 l -2245 3276 l -2245 3276 l -2245 3276 l -2245 3276 l -2245 3276 l -2245 3276 l -2246 3276 l -2246 3276 l -2246 3276 l -2246 3276 l -2246 3276 l -2246 3276 l -2246 3276 l -2247 3276 l -2247 3276 l -2247 3275 l -2247 3275 l -2247 3275 l -2247 3275 l -2248 3275 l -2252 3283 l -2233 3283 l -2242 3257 m -2242 3257 l -2242 3257 l -2242 3257 l -2242 3257 l -2242 3257 l -2241 3257 l -2241 3257 l -2241 3257 l -2241 3257 l -2241 3257 l -2241 3257 l -2240 3257 l -2240 3257 l -2240 3257 l -2240 3257 l -2240 3257 l -2240 3257 l -2239 3257 l -2239 3257 l -2239 3257 l -2239 3257 l -2239 3258 l -2239 3258 l -2239 3258 l -2238 3258 l -2238 3258 l -2238 3258 l -2238 3258 l -2238 3258 l -2238 3258 l -2238 3258 l -2237 3258 l -2233 3250 l -2252 3250 l -2248 3258 l -2247 3258 l -2247 3258 l -2247 3258 l -2247 3258 l -2247 3258 l -2247 3258 l -2246 3258 l -2246 3258 l -2246 3258 l -2246 3258 l -2246 3257 l -2246 3257 l -2246 3257 l -2245 3257 l -2245 3257 l -2245 3257 l -2245 3257 l -2245 3257 l -2245 3257 l -2244 3257 l -2244 3257 l -2244 3257 l -2244 3257 l -2244 3257 l -2244 3257 l -2243 3257 l -2243 3257 l -2243 3257 l -2243 3257 l -2243 3257 l -2243 3257 l -2242 3257 l -f* -3235 3584 m -3202 3565 l -S -3202 3584 m -3235 3565 l -S -3235 3565 m -3235 3584 l -S -3202 3565 m -3202 3584 l -S -3209 3575 m -3209.256075 3569.558918 3213.667684 3565.14731 3219.109679 3565.14731 c -3224.551674 3565.14731 3228.963283 3569.558918 3228.963283 3575.000913 c -3228.963283 3580.442908 3224.551674 3584.854517 3219.109679 3584.854517 c -3213.667684 3584.854517 3209.256075 3580.442908 3209.256075 3575.000913 c -S -2886 3096 m -2854 3076 l -S -2854 3096 m -2886 3076 l -S -2886 3076 m -2886 3096 l -S -2854 3076 m -2854 3096 l -S -2860 3086 m -2860.592106 3081.32066 2865.003714 3076.909052 2870.445709 3076.909052 c -2875.887704 3076.909052 2880.299313 3081.32066 2880.299313 3086.762655 c -2880.299313 3092.20465 2875.887704 3096.616259 2870.445709 3096.616259 c -2865.003714 3096.616259 2860.592106 3092.20465 2860.592106 3086.762655 c -S -2605 3523 m -2605 3504 l -S -2605 3504 m -2638 3523 l -S -2638 3504 m -2605 3523 l -S -2638 3523 m -2638 3504 l -S -2611 3514 m -2611.939582 3508.578179 2616.351191 3504.16657 2621.793186 3504.16657 c -2627.235181 3504.16657 2631.646789 3508.578179 2631.646789 3514.020174 c -2631.646789 3519.462169 2627.235181 3523.873777 2621.793186 3523.873777 c -2616.351191 3523.873777 2611.939582 3519.462169 2611.939582 3514.020174 c -S -2605 3504 m -2613 3508 l -2613 3509 l -2613 3509 l -2613 3509 l -2613 3509 l -2612 3509 l -2612 3509 l -2612 3509 l -2612 3510 l -2612 3510 l -2612 3510 l -2612 3510 l -2612 3510 l -2612 3510 l -2612 3511 l -2612 3511 l -2612 3511 l -2612 3511 l -2612 3511 l -2612 3511 l -2612 3512 l -2612 3512 l -2612 3512 l -2612 3512 l -2612 3512 l -2612 3512 l -2611 3513 l -2611 3513 l -2611 3513 l -2611 3513 l -2611 3513 l -2611 3513 l -2611 3514 l -2611 3514 l -2611 3514 l -2611 3514 l -2611 3514 l -2611 3514 l -2611 3515 l -2612 3515 l -2612 3515 l -2612 3515 l -2612 3515 l -2612 3515 l -2612 3515 l -2612 3516 l -2612 3516 l -2612 3516 l -2612 3516 l -2612 3516 l -2612 3516 l -2612 3517 l -2612 3517 l -2612 3517 l -2612 3517 l -2612 3517 l -2612 3517 l -2612 3518 l -2612 3518 l -2612 3518 l -2613 3518 l -2613 3518 l -2613 3518 l -2613 3518 l -2613 3519 l -2605 3523 l -2605 3504 l -2631 3514 m -2631 3513 l -2631 3513 l -2631 3513 l -2631 3513 l -2631 3513 l -2631 3513 l -2631 3512 l -2631 3512 l -2631 3512 l -2631 3512 l -2631 3512 l -2631 3512 l -2631 3511 l -2631 3511 l -2631 3511 l -2631 3511 l -2631 3511 l -2631 3511 l -2631 3510 l -2631 3510 l -2631 3510 l -2630 3510 l -2630 3510 l -2630 3510 l -2630 3509 l -2630 3509 l -2630 3509 l -2630 3509 l -2630 3509 l -2630 3509 l -2630 3509 l -2630 3508 l -2638 3504 l -2638 3523 l -2630 3519 l -2630 3518 l -2630 3518 l -2630 3518 l -2630 3518 l -2630 3518 l -2630 3518 l -2630 3518 l -2630 3517 l -2630 3517 l -2630 3517 l -2631 3517 l -2631 3517 l -2631 3517 l -2631 3516 l -2631 3516 l -2631 3516 l -2631 3516 l -2631 3516 l -2631 3516 l -2631 3515 l -2631 3515 l -2631 3515 l -2631 3515 l -2631 3515 l -2631 3515 l -2631 3515 l -2631 3514 l -2631 3514 l -2631 3514 l -2631 3514 l -2631 3514 l -2631 3514 l -f* -1756 4001 m -1776 4001 l -S -1756 4009 m -1776 4009 l -S -1756 4051 m -1776 4051 l -S -1756 4042 m -1776 4042 l -S -3291 3585 m -3276 3576 l -3287 3589 l -f -3289 3587 m -3317 3610 l -S -3317 3610 m -3333 3610 l -S -EMC -/OC /OC5 BDC -BT -8.621903 0 0 8.621903 3339.306201 3618.85701 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -3340 3611 m -3350 3625 l -S -BT -8.621903 0 0 8.621903 3345.464704 3610.235107 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -12.317005 0 0 12.317005 3353.67604 3612.698508 Tm -/T3romansHorzN0 1.285714 Tf -(\040\012\001\030\003\012\034\007\006\010\033\007) Tj -ET -BT -12.317005 0 0 12.317005 3340.01003 3593.812435 Tm -/T3romansHorzN0 1.285714 Tf -(\013\011\001\001\007\013\003\011\004) Tj -ET -EMC -/OC /OC10 BDC -1407 3751 m -1407.22977 3742.053332 1414.582451 3734.700651 1423.652443 3734.700651 c -1432.722434 3734.700651 1440.075115 3742.053332 1440.075115 3751.123324 c -1440.075115 3760.193316 1432.722434 3767.545997 1423.652443 3767.545997 c -1414.582451 3767.545997 1407.22977 3760.193316 1407.22977 3751.123324 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1418.080465 3744.964822 Tm -/T3romansHorzN0 1.285714 Tf -(\021) Tj -ET -EMC -/OC /OC3 BDC -1465 3733 m -1445 3766 l -S -1465 3766 m -1445 3733 l -S -1445 3733 m -1465 3733 l -S -1445 3766 m -1465 3766 l -S -1473 3750 m -1473 3745 l -S -1473 3750 m -1455 3750 l -S -1455 3750 m -1473 3745 l -S -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -1268 3733 m -1269 3733 l -1269 3694 l -1268 3694 l -f -1268 3733 m -1269 3733 l -1269 3733 l -1268 3733 l -f -1268 3733 m -1269 3733 l -1269 3694 l -1268 3694 l -f -1269 3694 m -1268 3694 l -1268 3694 l -1269 3694 l -f -1268 3733 m -1268 3694 l -1268 3694 l -1268 3733 l -f -1269 3733 m -1269 3694 l -1269 3694 l -1269 3733 l -f -1 0.498039 0.623529 RG -1 0.498039 0.623529 rg -EMC -/OC /OC9 BDC -1269 3805 m -1269 3766 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC10 BDC -1299 3860 m -1299.425382 3851.239639 1306.778063 3843.886958 1315.848054 3843.886958 c -1324.918046 3843.886958 1332.270727 3851.239639 1332.270727 3860.30963 c -1332.270727 3869.379622 1324.918046 3876.732303 1315.848054 3876.732303 c -1306.778063 3876.732303 1299.425382 3869.379622 1299.425382 3860.30963 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1302.944526 3854.151128 Tm -/T3romansHorzN0 1.285714 Tf -(\020\017) Tj -ET -EMC -/OC /OC3 BDC -1239 3835 m -1239.706175 3819.231295 1252.941 3805.99647 1269.266985 3805.99647 c -1285.59297 3805.99647 1298.827796 3819.231295 1298.827796 3835.55728 c -1298.827796 3851.883265 1285.59297 3865.118091 1269.266985 3865.118091 c -1252.941 3865.118091 1239.706175 3851.883265 1239.706175 3835.55728 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1260.762387 3838.854976 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000) Tj -ET -BT -12.317005 0 0 12.317005 1253.430837 3820.555705 Tm -/T3romansHorzN0 1.285714 Tf -(\023\021\020) Tj -ET -EMC -/OC /OC10 BDC -1221 3751 m -1221.09809 3742.053332 1228.450771 3734.700651 1237.520763 3734.700651 c -1246.590754 3734.700651 1253.943435 3742.053332 1253.943435 3751.123324 c -1253.943435 3760.193316 1246.590754 3767.545997 1237.520763 3767.545997 c -1228.450771 3767.545997 1221.09809 3760.193316 1221.09809 3751.123324 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1224.910496 3744.964822 Tm -/T3romansHorzN0 1.285714 Tf -(\020\023) Tj -ET -EMC -/OC /OC3 BDC -1279 3733 m -1259 3766 l -S -1279 3766 m -1259 3733 l -S -1259 3733 m -1279 3733 l -S -1259 3766 m -1279 3766 l -S -1287 3750 m -1287 3745 l -S -1287 3750 m -1269 3750 l -S -1269 3750 m -1287 3745 l -S -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -1454 3733 m -1456 3733 l -1456 3694 l -1454 3694 l -f -1454 3733 m -1456 3733 l -1456 3733 l -1454 3733 l -f -1454 3733 m -1456 3733 l -1456 3694 l -1454 3694 l -f -1456 3694 m -1454 3694 l -1454 3694 l -1456 3694 l -f -1454 3733 m -1454 3694 l -1454 3694 l -1454 3733 l -f -1456 3733 m -1456 3694 l -1456 3694 l -1456 3733 l -f -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1806 3860 m -1806 3841 l -S -1806 3841 m -1839 3860 l -S -1839 3841 m -1806 3860 l -S -1839 3860 m -1839 3841 l -S -1813 3850 m -1813.363277 3845.453862 1817.774886 3841.042253 1823.216881 3841.042253 c -1828.658876 3841.042253 1833.070485 3845.453862 1833.070485 3850.895857 c -1833.070485 3856.337852 1828.658876 3860.74946 1823.216881 3860.74946 c -1817.774886 3860.74946 1813.363277 3856.337852 1813.363277 3850.895857 c -S -1806 3841 m -1814 3845 l -1814 3845 l -1814 3846 l -1814 3846 l -1814 3846 l -1814 3846 l -1814 3846 l -1814 3846 l -1814 3847 l -1814 3847 l -1814 3847 l -1813 3847 l -1813 3847 l -1813 3847 l -1813 3847 l -1813 3848 l -1813 3848 l -1813 3848 l -1813 3848 l -1813 3848 l -1813 3848 l -1813 3849 l -1813 3849 l -1813 3849 l -1813 3849 l -1813 3849 l -1813 3849 l -1813 3850 l -1813 3850 l -1813 3850 l -1813 3850 l -1813 3850 l -1813 3850 l -1813 3851 l -1813 3851 l -1813 3851 l -1813 3851 l -1813 3851 l -1813 3851 l -1813 3852 l -1813 3852 l -1813 3852 l -1813 3852 l -1813 3852 l -1813 3852 l -1813 3853 l -1813 3853 l -1813 3853 l -1813 3853 l -1813 3853 l -1813 3853 l -1813 3854 l -1813 3854 l -1813 3854 l -1814 3854 l -1814 3854 l -1814 3854 l -1814 3854 l -1814 3855 l -1814 3855 l -1814 3855 l -1814 3855 l -1814 3855 l -1814 3855 l -1814 3855 l -1806 3860 l -1806 3841 l -1833 3850 m -1833 3850 l -1833 3850 l -1833 3850 l -1833 3850 l -1833 3850 l -1833 3849 l -1833 3849 l -1832 3849 l -1832 3849 l -1832 3849 l -1832 3849 l -1832 3848 l -1832 3848 l -1832 3848 l -1832 3848 l -1832 3848 l -1832 3848 l -1832 3847 l -1832 3847 l -1832 3847 l -1832 3847 l -1832 3847 l -1832 3847 l -1832 3847 l -1832 3846 l -1832 3846 l -1832 3846 l -1831 3846 l -1831 3846 l -1831 3846 l -1831 3845 l -1831 3845 l -1839 3841 l -1839 3860 l -1831 3855 l -1831 3855 l -1831 3855 l -1831 3855 l -1831 3855 l -1832 3855 l -1832 3855 l -1832 3854 l -1832 3854 l -1832 3854 l -1832 3854 l -1832 3854 l -1832 3854 l -1832 3854 l -1832 3853 l -1832 3853 l -1832 3853 l -1832 3853 l -1832 3853 l -1832 3853 l -1832 3852 l -1832 3852 l -1832 3852 l -1832 3852 l -1832 3852 l -1833 3852 l -1833 3851 l -1833 3851 l -1833 3851 l -1833 3851 l -1833 3851 l -1833 3851 l -1833 3850 l -f* -1756 3550 m -1776 3550 l -S -1756 3558 m -1776 3558 l -S -1756 3599 m -1776 3599 l -S -1756 3591 m -1776 3591 l -S -0 1 0 RG -0 1 0 rg -EMC -/OC /OC7 BDC -1726 3575 m -1766 3575 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1726 3584 m -1726 3565 l -S -1726 3565 m -1694 3584 l -S -1694 3565 m -1726 3584 l -S -1694 3584 m -1694 3565 l -S -1700 3575 m -1700.571687 3569.558918 1704.983295 3565.14731 1710.42529 3565.14731 c -1715.867285 3565.14731 1720.278894 3569.558918 1720.278894 3575.000913 c -1720.278894 3580.442908 1715.867285 3584.854517 1710.42529 3584.854517 c -1704.983295 3584.854517 1700.571687 3580.442908 1700.571687 3575.000913 c -S -1726 3565 m -1718 3569 l -1718 3570 l -1719 3570 l -1719 3570 l -1719 3570 l -1719 3570 l -1719 3570 l -1719 3570 l -1719 3571 l -1719 3571 l -1719 3571 l -1719 3571 l -1719 3571 l -1719 3571 l -1719 3572 l -1719 3572 l -1719 3572 l -1719 3572 l -1720 3572 l -1720 3572 l -1720 3573 l -1720 3573 l -1720 3573 l -1720 3573 l -1720 3573 l -1720 3573 l -1720 3574 l -1720 3574 l -1720 3574 l -1720 3574 l -1720 3574 l -1720 3574 l -1720 3575 l -1720 3575 l -1720 3575 l -1720 3575 l -1720 3575 l -1720 3575 l -1720 3575 l -1720 3576 l -1720 3576 l -1720 3576 l -1720 3576 l -1720 3576 l -1720 3576 l -1720 3577 l -1720 3577 l -1719 3577 l -1719 3577 l -1719 3577 l -1719 3577 l -1719 3578 l -1719 3578 l -1719 3578 l -1719 3578 l -1719 3578 l -1719 3578 l -1719 3579 l -1719 3579 l -1719 3579 l -1719 3579 l -1719 3579 l -1719 3579 l -1718 3579 l -1718 3580 l -1726 3584 l -1726 3565 l -1700 3575 m -1700 3574 l -1700 3574 l -1700 3574 l -1700 3574 l -1700 3574 l -1700 3574 l -1700 3573 l -1700 3573 l -1700 3573 l -1700 3573 l -1700 3573 l -1700 3573 l -1700 3572 l -1700 3572 l -1700 3572 l -1700 3572 l -1700 3572 l -1701 3572 l -1701 3571 l -1701 3571 l -1701 3571 l -1701 3571 l -1701 3571 l -1701 3571 l -1701 3570 l -1701 3570 l -1701 3570 l -1701 3570 l -1701 3570 l -1701 3570 l -1701 3570 l -1701 3569 l -1694 3565 l -1694 3584 l -1701 3580 l -1701 3579 l -1701 3579 l -1701 3579 l -1701 3579 l -1701 3579 l -1701 3579 l -1701 3579 l -1701 3578 l -1701 3578 l -1701 3578 l -1701 3578 l -1701 3578 l -1701 3578 l -1701 3577 l -1700 3577 l -1700 3577 l -1700 3577 l -1700 3577 l -1700 3577 l -1700 3576 l -1700 3576 l -1700 3576 l -1700 3576 l -1700 3576 l -1700 3576 l -1700 3575 l -1700 3575 l -1700 3575 l -1700 3575 l -1700 3575 l -1700 3575 l -1700 3575 l -f* -EMC -/OC /OC10 BDC -1694 3609 m -1694.002617 3600.117107 1701.355298 3592.764426 1710.42529 3592.764426 c -1719.495282 3592.764426 1726.847963 3600.117107 1726.847963 3609.187098 c -1726.847963 3618.25709 1719.495282 3625.609771 1710.42529 3625.609771 c -1701.355298 3625.609771 1694.002617 3618.25709 1694.002617 3609.187098 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1698.69481 3603.028596 Tm -/T3romansHorzN0 1.285714 Tf -(\023\025) Tj -ET -BT -12.317005 0 0 12.317005 182.882669 3085.585612 Tm -/T3romansHorzN0 1.285714 Tf -(\044\010\003\007\004) Tj -ET -BT -12.317005 0 0 12.317005 169.392616 3060.483887 Tm -/T3romansHorzN0 1.285714 Tf -(\002\005\030\030\033\042) Tj -ET -1 0 0 RG -1 0 0 rg -EMC -/OC /OC8 BDC -556 3081 m -556 3078 l -454 3078 l -454 3081 l -f -556 3081 m -556 3078 l -556 3078 l -556 3081 l -f -556 3081 m -556 3078 l -454 3078 l -454 3081 l -f -454 3078 m -454 3081 l -454 3081 l -454 3078 l -f -556 3081 m -454 3081 l -454 3081 l -556 3081 l -f -556 3078 m -454 3078 l -454 3078 l -556 3078 l -f -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -454 3070 m -421 3090 l -S -421 3090 m -421 3070 l -S -454 3090 m -454 3070 l -S -0 J -1 j -4.105668 w -439 3080 m -439.921554 3081.492884 439.002469 3082.411969 437.86872 3082.411969 c -436.734971 3082.411969 435.815886 3081.492884 435.815886 3080.359135 c -S -1 J -1 j -0.708661 w -0 J -1 j -4.105668 w -435 3080 m -435.815886 3079.225386 436.734971 3078.306301 437.86872 3078.306301 c -439.002469 3078.306301 439.921554 3079.225386 439.921554 3080.359135 c -S -1 J -1 j -0.708661 w -0.708661 w -563 3092 m -563 3155 l -S -454 3090 m -473 3123 l -S -458 3149 m -458.889476 3132.753193 472.124301 3119.518367 488.450286 3119.518367 c -504.776271 3119.518367 518.011097 3132.753193 518.011097 3149.079178 c -518.011097 3165.405163 504.776271 3178.639988 488.450286 3178.639988 c -472.124301 3178.639988 458.889476 3165.405163 458.889476 3149.079178 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 475.546758 3152.376873 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 471.147828 3134.077602 Tm -/T3romansHorzN0 1.285714 Tf -(\024\017\021) Tj -ET -EMC -/OC /OC3 BDC -533 3184 m -533.728272 3168.374742 546.963097 3155.139916 563.289082 3155.139916 c -579.615067 3155.139916 592.849893 3168.374742 592.849893 3184.700727 c -592.849893 3201.026712 579.615067 3214.261538 563.289082 3214.261538 c -546.963097 3214.261538 533.728272 3201.026712 533.728272 3184.700727 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 551.26534 3187.998423 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011) Tj -ET -BT -12.317005 0 0 12.317005 545.693362 3169.699151 Tm -/T3romansHorzN0 1.285714 Tf -(\015\025\023) Tj -ET -EMC -/OC /OC3 BDC -563 3076 m -563 3084 l -S -569 3070 m -569 3090 l -S -556 3070 m -556 3090 l -S -EMC -/OC /OC0 BDC -357 3225 m -388 3225 l -S -398 3225 m -409 3225 l -S -419 3225 m -470 3225 l -S -481 3225 m -491 3225 l -S -501 3225 m -552 3225 l -S -563 3225 m -573 3225 l -S -583 3225 m -634 3225 l -S -645 3225 m -655 3225 l -S -665 3225 m -697 3225 l -S -697 3225 m -697 3177 l -S -697 3167 m -697 3157 l -S -697 3147 m -697 3095 l -S -697 3085 m -697 3075 l -S -697 3064 m -697 3013 l -S -697 3003 m -697 2993 l -S -697 2982 m -697 2935 l -S -697 2935 m -665 2935 l -S -655 2935 m -645 2935 l -S -634 2935 m -583 2935 l -S -573 2935 m -563 2935 l -S -552 2935 m -501 2935 l -S -491 2935 m -481 2935 l -S -470 2935 m -419 2935 l -S -409 2935 m -398 2935 l -S -388 2935 m -357 2935 l -S -357 2935 m -357 2982 l -S -357 2993 m -357 3003 l -S -357 3013 m -357 3064 l -S -357 3075 m -357 3085 l -S -357 3095 m -357 3147 l -S -357 3157 m -357 3167 l -S -357 3177 m -357 3225 l -S -EMC -/OC /OC3 BDC -625 3070 m -625 3090 l -S -641 3075 m -641 3085 l -S -641 3085 m -625 3090 l -S -641 3075 m -625 3070 l -S -437 3080 m -437 3256 l -S -422 3256 m -422.208131 3260.273852 429.219615 3262.950693 437.86872 3262.950693 c -446.517825 3262.950693 453.529309 3260.273852 453.529309 3256.971801 c -453.529309 3253.669751 446.517825 3250.99291 437.86872 3250.99291 c -429.219615 3250.99291 422.208131 3253.669751 422.208131 3256.971801 c -S -426 3261 m -448 3252 l -S -448 3261 m -426 3252 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 400.03792 3269.109195 Tm -/T3romansHorzN0 1.285714 Tf -(\002\030\000\001\037\033\007) Tj -ET -BT -12.317005 0 0 12.317005 607.423857 3093.555925 Tm -/T3romansHorzN0 1.285714 Tf -(\017\040\026\023\040) Tj -ET -BT -12.317005 0 0 12.317005 513.137116 2941.461428 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000\003) Tj -ET -EMC -/OC /OC3 BDC -872 3104 m -863 3090 l -867 3106 l -f -870 3105 m -893 3161 l -S -893 3161 m -909 3161 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 916.369628 3165.285704 Tm -/T3romansHorzN0 1.285714 Tf -(\013\033\010\002\002\012\020\016\024) Tj -ET -BT -12.317005 0 0 12.317005 917.542676 3144.757363 Tm -/T3romansHorzN0 1.285714 Tf -(\010\001\002\000\012\014\020\035\036\016) Tj -ET -EMC -/OC /OC3 BDC -863 3090 m -863 3070 l -S -855 3090 m -855 3070 l -S -863 3080 m -896 3080 l -S -863 3070 m -863 3090 l -S -896 3070 m -896 3090 l -S -876 3080 m -891 3062 l -S -895 3066 m -886 3059 l -S -904 3033 m -904.557633 3016.826058 917.792458 3003.591233 934.118443 3003.591233 c -950.444428 3003.591233 963.679254 3016.826058 963.679254 3033.152043 c -963.679254 3049.478028 950.444428 3062.712854 934.118443 3062.712854 c -917.792458 3062.712854 904.557633 3049.478028 904.557633 3033.152043 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 927.959941 3036.449739 Tm -/T3romansHorzN0 1.285714 Tf -(\034) Tj -ET -BT -12.317005 0 0 12.317005 922.681225 3018.150468 Tm -/T3romansHorzN0 1.285714 Tf -(\017\021) Tj -ET -EMC -/OC /OC3 BDC -896 3070 m -913 3054 l -S -1499 3070 m -1466 3090 l -S -1466 3090 m -1466 3070 l -S -1499 3090 m -1499 3070 l -S -0 J -1 j -4.105668 w -1485 3080 m -1485.369396 3081.492884 1484.450311 3082.411969 1483.316562 3082.411969 c -1482.182813 3082.411969 1481.263728 3081.492884 1481.263728 3080.359135 c -S -1 J -1 j -0.708661 w -0 J -1 j -4.105668 w -1481 3080 m -1481.263728 3079.225386 1482.182813 3078.306301 1483.316562 3078.306301 c -1484.450311 3078.306301 1485.369396 3079.225386 1485.369396 3080.359135 c -S -1 J -1 j -0.708661 w -0.708661 w -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1470.119771 3094.728973 Tm -/T3romansHorzN0 1.285714 Tf -(\001\011) Tj -ET -EMC -/OC /OC10 BDC -1467 3048 m -1467.304175 3038.982529 1474.656856 3031.629848 1483.726848 3031.629848 c -1492.79684 3031.629848 1500.149521 3038.982529 1500.149521 3048.052521 c -1500.149521 3057.122512 1492.79684 3064.475193 1483.726848 3064.475193 c -1474.656856 3064.475193 1467.304175 3057.122512 1467.304175 3048.052521 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1477.861608 3041.894018 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -12.317005 0 0 12.317005 1533.743075 3086.928204 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -EMC -/OC /OC3 BDC -1084 3586 m -1064 3553 l -S -1064 3553 m -1084 3553 l -S -1064 3586 m -1084 3586 l -S -0 J -1 j -4.105668 w -1074 3571 m -1073.579892 3571.818153 1072.660806 3570.899068 1072.660806 3569.765319 c -1072.660806 3568.63157 1073.579892 3567.712485 1074.713641 3567.712485 c -S -1 J -1 j -0.708661 w -0 J -1 j -4.105668 w -1074 3567 m -1075.84739 3567.712485 1076.766475 3568.63157 1076.766475 3569.765319 c -1076.766475 3570.899068 1075.84739 3571.818153 1074.713641 3571.818153 c -S -1 J -1 j -0.708661 w -0.708661 w -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1030.724339 3563.606817 Tm -/T3romansHorzN0 1.285714 Tf -(\001\013) Tj -ET -EMC -/OC /OC10 BDC -1090 3570 m -1090.597582 3561.105613 1097.950263 3553.752932 1107.020255 3553.752932 c -1116.090246 3553.752932 1123.442927 3561.105613 1123.442927 3570.175605 c -1123.442927 3579.245597 1116.090246 3586.598278 1107.020255 3586.598278 c -1097.950263 3586.598278 1090.597582 3579.245597 1090.597582 3570.175605 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1101.155014 3564.017103 Tm -/T3romansHorzN0 1.285714 Tf -(\016) Tj -ET -1 0 0 RG -1 0 0 rg -EMC -/OC /OC8 BDC -1765 4225 m -1768 4225 l -1768 4156 l -1765 4156 l -f -1765 4225 m -1768 4225 l -1768 4225 l -1765 4225 l -f -1765 4225 m -1768 4225 l -1768 4156 l -1765 4156 l -f -1768 4156 m -1765 4156 l -1765 4156 l -1768 4156 l -f -1765 4225 m -1765 4156 l -1765 4156 l -1765 4225 l -f -1768 4225 m -1768 4156 l -1768 4156 l -1768 4225 l -f -1765 4140 m -1768 4140 l -1768 4051 l -1765 4051 l -f -1765 4140 m -1768 4140 l -1768 4140 l -1765 4140 l -f -1765 4140 m -1768 4140 l -1768 4051 l -1765 4051 l -f -1768 4051 m -1765 4051 l -1765 4051 l -1768 4051 l -f -1765 4140 m -1765 4051 l -1765 4051 l -1765 4140 l -f -1768 4140 m -1768 4051 l -1768 4051 l -1768 4140 l -f -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1776 4140 m -1756 4140 l -S -1771 4156 m -1761 4156 l -S -1761 4156 m -1756 4140 l -S -1771 4156 m -1776 4140 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1687.191127 4142.199625 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040\060\015) Tj -ET -BT -7.606829 0 0 7.606829 1736.173308 4142.199625 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -1730 4144 m -1739 4154 l -S -BT -7.606829 0 0 7.606829 1726.263443 4147.887597 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 1732.963448 4142.199625 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -EMC -/OC /OC3 BDC -1776 4225 m -1756 4225 l -S -1776 4234 m -1756 4234 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1738.291454 3779.867557 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -0 1 0 RG -0 1 0 rg -EMC -/OC /OC7 BDC -1806 3740 m -1766 3740 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1806 3750 m -1806 3730 l -S -1806 3730 m -1839 3750 l -S -1839 3730 m -1806 3750 l -S -1839 3750 m -1839 3730 l -S -1813 3740 m -1813.363277 3735.261191 1817.774886 3730.849582 1823.216881 3730.849582 c -1828.658876 3730.849582 1833.070485 3735.261191 1833.070485 3740.703186 c -1833.070485 3746.145181 1828.658876 3750.556789 1823.216881 3750.556789 c -1817.774886 3750.556789 1813.363277 3746.145181 1813.363277 3740.703186 c -S -1806 3730 m -1814 3735 l -1814 3735 l -1814 3735 l -1814 3736 l -1814 3736 l -1814 3736 l -1814 3736 l -1814 3736 l -1814 3736 l -1814 3736 l -1814 3737 l -1813 3737 l -1813 3737 l -1813 3737 l -1813 3737 l -1813 3737 l -1813 3738 l -1813 3738 l -1813 3738 l -1813 3738 l -1813 3738 l -1813 3738 l -1813 3739 l -1813 3739 l -1813 3739 l -1813 3739 l -1813 3739 l -1813 3739 l -1813 3740 l -1813 3740 l -1813 3740 l -1813 3740 l -1813 3740 l -1813 3740 l -1813 3741 l -1813 3741 l -1813 3741 l -1813 3741 l -1813 3741 l -1813 3741 l -1813 3742 l -1813 3742 l -1813 3742 l -1813 3742 l -1813 3742 l -1813 3742 l -1813 3743 l -1813 3743 l -1813 3743 l -1813 3743 l -1813 3743 l -1813 3743 l -1813 3743 l -1813 3744 l -1814 3744 l -1814 3744 l -1814 3744 l -1814 3744 l -1814 3744 l -1814 3745 l -1814 3745 l -1814 3745 l -1814 3745 l -1814 3745 l -1814 3745 l -1806 3750 l -1806 3730 l -1833 3740 m -1833 3740 l -1833 3740 l -1833 3740 l -1833 3740 l -1833 3739 l -1833 3739 l -1833 3739 l -1832 3739 l -1832 3739 l -1832 3739 l -1832 3738 l -1832 3738 l -1832 3738 l -1832 3738 l -1832 3738 l -1832 3738 l -1832 3737 l -1832 3737 l -1832 3737 l -1832 3737 l -1832 3737 l -1832 3737 l -1832 3736 l -1832 3736 l -1832 3736 l -1832 3736 l -1832 3736 l -1831 3736 l -1831 3736 l -1831 3735 l -1831 3735 l -1831 3735 l -1839 3730 l -1839 3750 l -1831 3745 l -1831 3745 l -1831 3745 l -1831 3745 l -1831 3745 l -1832 3745 l -1832 3744 l -1832 3744 l -1832 3744 l -1832 3744 l -1832 3744 l -1832 3744 l -1832 3743 l -1832 3743 l -1832 3743 l -1832 3743 l -1832 3743 l -1832 3743 l -1832 3743 l -1832 3742 l -1832 3742 l -1832 3742 l -1832 3742 l -1832 3742 l -1832 3742 l -1833 3741 l -1833 3741 l -1833 3741 l -1833 3741 l -1833 3741 l -1833 3741 l -1833 3740 l -1833 3740 l -f* -0 1 0 RG -0 1 0 rg -EMC -/OC /OC7 BDC -1879 3740 m -1839 3740 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1900.141017 3744.808854 Tm -/T3romansHorzN0 1.285714 Tf -(\037\004\010\000\001) Tj -ET -BT -12.317005 0 0 12.317005 1900.141017 3724.280513 Tm -/T3romansHorzN0 1.285714 Tf -(\051\012\003\007\002\003) Tj -ET -EMC -/OC /OC3 BDC -1897 3759 m -1885 3747 l -1893 3762 l -f -1895 3760 m -1926 3800 l -S -1926 3800 m -1942 3800 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1949.085043 3802.217261 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -8.621903 0 0 8.621903 1958.352122 3808.375764 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -1959 3801 m -1969 3815 l -S -BT -8.621903 0 0 8.621903 1964.510624 3799.75386 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -12.317005 0 0 12.317005 1972.721961 3802.217261 Tm -/T3romansHorzN0 1.285714 Tf -(\040\012\000\001\002\003\010\001\003\010\001\007\011\005\002) Tj -ET -BT -12.317005 0 0 12.317005 1948.498519 3783.331188 Tm -/T3romansHorzN0 1.285714 Tf -(\034\007\006\010\033\007\012\013\011\005\030\033\000\001\043) Tj -ET -BT -12.317005 0 0 12.317005 1776.543477 3747.272255 Tm -/T3romansHorzN0 1.285714 Tf -(\015\040) Tj -ET -EMC -/OC /OC10 BDC -1807 3773 m -1807.204494 3763.939808 1814.557175 3756.587127 1823.627167 3756.587127 c -1832.697159 3756.587127 1840.04984 3763.939808 1840.04984 3773.0098 c -1840.04984 3782.079791 1832.697159 3789.432472 1823.627167 3789.432472 c -1814.557175 3789.432472 1807.204494 3782.079791 1807.204494 3773.0098 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1817.468665 3766.851297 Tm -/T3romansHorzN0 1.285714 Tf -(\035) Tj -ET -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2945 3164 m -2956 3175 l -S -2945 3170 m -2956 3181 l -S -2945 3211 m -2956 3222 l -S -2945 3217 m -2956 3228 l -S -2945 3258 m -2956 3269 l -S -2945 3264 m -2956 3275 l -S -0 1 0 RG -0 1 0 rg -EMC -/OC /OC7 BDC -1199 3694 m -1345 3694 l -S -1378 3694 m -1664 3694 l -S -1697 3694 m -1766 3694 l -S -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -1627 3733 m -1628 3733 l -1628 3694 l -1627 3694 l -f -1627 3733 m -1628 3733 l -1628 3733 l -1627 3733 l -f -1627 3733 m -1628 3733 l -1628 3694 l -1627 3694 l -f -1628 3694 m -1627 3694 l -1627 3694 l -1628 3694 l -f -1627 3733 m -1627 3694 l -1627 3694 l -1627 3733 l -f -1628 3733 m -1628 3694 l -1628 3694 l -1628 3733 l -f -1 0.498039 0.623529 RG -1 0.498039 0.623529 rg -EMC -/OC /OC9 BDC -1627 3805 m -1627 3766 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC10 BDC -1657 3860 m -1657.963668 3851.239639 1665.316349 3843.886958 1674.386341 3843.886958 c -1683.456332 3843.886958 1690.809013 3851.239639 1690.809013 3860.30963 c -1690.809013 3869.379622 1683.456332 3876.732303 1674.386341 3876.732303 c -1665.316349 3876.732303 1657.963668 3869.379622 1657.963668 3860.30963 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1661.776074 3854.151128 Tm -/T3romansHorzN0 1.285714 Tf -(\020\015) Tj -ET -EMC -/OC /OC3 BDC -1598 3835 m -1598.244461 3819.231295 1611.479287 3805.99647 1627.805272 3805.99647 c -1644.131257 3805.99647 1657.366083 3819.231295 1657.366083 3835.55728 c -1657.366083 3851.883265 1644.131257 3865.118091 1627.805272 3865.118091 c -1611.479287 3865.118091 1598.244461 3851.883265 1598.244461 3835.55728 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1619.300673 3838.854976 Tm -/T3romansHorzN0 1.285714 Tf -(\030\000) Tj -ET -BT -12.317005 0 0 12.317005 1610.209551 3820.555705 Tm -/T3romansHorzN0 1.285714 Tf -(\023\021\015) Tj -ET -EMC -/OC /OC10 BDC -1579 3751 m -1579.636376 3742.053332 1586.989057 3734.700651 1596.059049 3734.700651 c -1605.129041 3734.700651 1612.481722 3742.053332 1612.481722 3751.123324 c -1612.481722 3760.193316 1605.129041 3767.545997 1596.059049 3767.545997 c -1586.989057 3767.545997 1579.636376 3760.193316 1579.636376 3751.123324 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1585.208355 3744.964822 Tm -/T3romansHorzN0 1.285714 Tf -(\020\020) Tj -ET -EMC -/OC /OC3 BDC -1637 3733 m -1617 3766 l -S -1637 3766 m -1617 3733 l -S -1617 3733 m -1637 3733 l -S -1617 3766 m -1637 3766 l -S -1645 3750 m -1645 3745 l -S -1645 3750 m -1627 3750 l -S -1627 3750 m -1645 3745 l -S -0 0 1 RG -0 0 1 rg -EMC -/OC /OC6 BDC -1455 3865 m -1455 3870 l -S -1455 3875 m -1455 3885 l -S -1455 3890 m -1455 3901 l -S -1455 3906 m -1455 3916 l -S -1455 3921 m -1455 3932 l -S -1455 3937 m -1455 3947 l -S -1455 3952 m -1455 3962 l -S -1455 3967 m -1455 3973 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1345 3704 m -1345 3684 l -S -1345 3684 m -1378 3704 l -S -1378 3684 m -1345 3704 l -S -1378 3704 m -1378 3684 l -S -1352 3694 m -1352.479222 3688.990994 1356.89083 3684.579385 1362.332825 3684.579385 c -1367.77482 3684.579385 1372.186429 3688.990994 1372.186429 3694.432989 c -1372.186429 3699.874984 1367.77482 3704.286592 1362.332825 3704.286592 c -1356.89083 3704.286592 1352.479222 3699.874984 1352.479222 3694.432989 c -S -1345 3684 m -1353 3689 l -1353 3689 l -1353 3689 l -1353 3689 l -1353 3689 l -1353 3690 l -1353 3690 l -1353 3690 l -1353 3690 l -1353 3690 l -1353 3690 l -1353 3691 l -1353 3691 l -1352 3691 l -1352 3691 l -1352 3691 l -1352 3691 l -1352 3691 l -1352 3692 l -1352 3692 l -1352 3692 l -1352 3692 l -1352 3692 l -1352 3692 l -1352 3693 l -1352 3693 l -1352 3693 l -1352 3693 l -1352 3693 l -1352 3693 l -1352 3694 l -1352 3694 l -1352 3694 l -1352 3694 l -1352 3694 l -1352 3694 l -1352 3695 l -1352 3695 l -1352 3695 l -1352 3695 l -1352 3695 l -1352 3695 l -1352 3696 l -1352 3696 l -1352 3696 l -1352 3696 l -1352 3696 l -1352 3696 l -1352 3697 l -1352 3697 l -1352 3697 l -1352 3697 l -1353 3697 l -1353 3697 l -1353 3698 l -1353 3698 l -1353 3698 l -1353 3698 l -1353 3698 l -1353 3698 l -1353 3698 l -1353 3699 l -1353 3699 l -1353 3699 l -1353 3699 l -1345 3704 l -1345 3684 l -1372 3694 m -1372 3694 l -1372 3694 l -1372 3693 l -1372 3693 l -1372 3693 l -1372 3693 l -1372 3693 l -1372 3693 l -1372 3692 l -1372 3692 l -1372 3692 l -1371 3692 l -1371 3692 l -1371 3692 l -1371 3691 l -1371 3691 l -1371 3691 l -1371 3691 l -1371 3691 l -1371 3691 l -1371 3691 l -1371 3690 l -1371 3690 l -1371 3690 l -1371 3690 l -1371 3690 l -1371 3690 l -1371 3689 l -1371 3689 l -1370 3689 l -1370 3689 l -1370 3689 l -1378 3684 l -1378 3704 l -1370 3699 l -1370 3699 l -1370 3699 l -1371 3699 l -1371 3698 l -1371 3698 l -1371 3698 l -1371 3698 l -1371 3698 l -1371 3698 l -1371 3698 l -1371 3697 l -1371 3697 l -1371 3697 l -1371 3697 l -1371 3697 l -1371 3697 l -1371 3696 l -1371 3696 l -1371 3696 l -1371 3696 l -1372 3696 l -1372 3696 l -1372 3695 l -1372 3695 l -1372 3695 l -1372 3695 l -1372 3695 l -1372 3695 l -1372 3694 l -1372 3694 l -1372 3694 l -1372 3694 l -f* -EMC -/OC /OC10 BDC -1346 3726 m -1346.320439 3717.669611 1353.67312 3710.31693 1362.743111 3710.31693 c -1371.813103 3710.31693 1379.165784 3717.669611 1379.165784 3726.739603 c -1379.165784 3735.809594 1371.813103 3743.162275 1362.743111 3743.162275 c -1353.67312 3743.162275 1346.320439 3735.809594 1346.320439 3726.739603 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1350.132845 3720.5811 Tm -/T3romansHorzN0 1.285714 Tf -(\020\016) Tj -ET -EMC -/OC /OC3 BDC -1697 3704 m -1664 3684 l -S -1664 3704 m -1697 3684 l -S -1697 3684 m -1697 3704 l -S -1664 3684 m -1664 3704 l -S -1671 3694 m -1671.089862 3688.990994 1675.501471 3684.579385 1680.943466 3684.579385 c -1686.385461 3684.579385 1690.797069 3688.990994 1690.797069 3694.432989 c -1690.797069 3699.874984 1686.385461 3704.286592 1680.943466 3704.286592 c -1675.501471 3704.286592 1671.089862 3699.874984 1671.089862 3694.432989 c -S -EMC -/OC /OC10 BDC -1664 3726 m -1664.931079 3717.669611 1672.28376 3710.31693 1681.353752 3710.31693 c -1690.423743 3710.31693 1697.776424 3717.669611 1697.776424 3726.739603 c -1697.776424 3735.809594 1690.423743 3743.162275 1681.353752 3743.162275 c -1672.28376 3743.162275 1664.931079 3735.809594 1664.931079 3726.739603 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1675.488511 3720.5811 Tm -/T3romansHorzN0 1.285714 Tf -(\022) Tj -ET -BT -12.317005 0 0 12.317005 1487.942557 3701.002058 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\054\054\012\011\045\037) Tj -ET -0 1 0 RG -0 1 0 rg -EMC -/OC /OC7 BDC -1199 3694 m -1199 3080 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -EMC -/OC /OC3 BDC -1766 4234 m -1766 4732 l -S -1766 4732 m -2165 4732 l -S -2280 4732 m -2384 4732 l -S -2401 4732 m -2579 4732 l -S -2074 4497 m -2271 4497 l -2271 4300 l -2074 4300 l -2074 4497 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2080.119551 4308.766577 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011\010\006\012\003\010\001\055) Tj -ET -EMC -/OC /OC3 BDC -2222 4347 m -2222 4547 l -S -2222 4580 m -2222 4637 l -S -2222 4670 m -2222 4727 l -S -2212 4580 m -2232 4547 l -S -2212 4547 m -2232 4580 l -S -2232 4580 m -2212 4580 l -S -2232 4547 m -2212 4547 l -S -2579 4840 m -2579 4624 l -S -2579 4624 m -2822 4624 l -S -2579 4840 m -2822 4840 l -S -2165 4752 m -2165 4711 l -S -2177 4752 m -2177 4711 l -S -2267 4752 m -2267 4711 l -S -2280 4752 m -2280 4711 l -S -2177 4752 m -2177 4748 l -S -2177 4748 m -2243 4732 l -S -2177 4715 m -2243 4732 l -S -2267 4748 m -2222 4737 l -S -2267 4715 m -2222 4727 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3656.205946 4110.752909 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 4082.013232 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 4053.273555 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 4024.533878 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 3995.794201 Tm -/T3romansHorzN0 1.285714 Tf -(\015\040) Tj -ET -BT -12.317005 0 0 12.317005 3655.32616 3967.054523 Tm -/T3romansHorzN0 1.285714 Tf -(\020\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3909.575169 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3911 m -3665 3921 l -S -BT -7.606829 0 0 7.606829 3652.254881 3915.263141 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3909.575169 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -3656 3882 m -3665 3893 l -S -BT -7.606829 0 0 7.606829 3652.254881 3886.523464 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -7.606829 0 0 7.606829 3660.658773 3880.835492 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -12.317005 0 0 12.317005 3657.43757 3880.835492 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3852.095815 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3854 m -3665 3864 l -S -BT -7.606829 0 0 7.606829 3652.254881 3857.783787 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3852.095815 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3823.356137 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3825 m -3665 3835 l -S -BT -7.606829 0 0 7.606829 3652.254881 3829.04411 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3823.356137 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3794.61646 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3796 m -3665 3807 l -S -BT -7.606829 0 0 7.606829 3652.254881 3800.304433 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3794.61646 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3765.876783 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3767 m -3665 3778 l -S -BT -7.606829 0 0 7.606829 3652.254881 3771.564755 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3765.876783 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3737.137106 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3739 m -3665 3749 l -S -BT -7.606829 0 0 7.606829 3652.254881 3742.825078 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3737.137106 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 3708.397429 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 3679.657752 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3650.918074 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3652 m -3665 3663 l -S -BT -7.606829 0 0 7.606829 3652.254881 3656.606047 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3650.918074 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3622.178397 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3624 m -3665 3634 l -S -BT -7.606829 0 0 7.606829 3652.254881 3627.866369 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3622.178397 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3593.43872 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3595 m -3665 3605 l -S -BT -7.606829 0 0 7.606829 3652.254881 3599.126692 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3593.43872 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -12.317005 0 0 12.317005 3638.316963 3565.872091 Tm -/T3romansHorzN0 1.285714 Tf -(\035\012\033\003\004) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3535.959366 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3537 m -3665 3548 l -S -BT -7.606829 0 0 7.606829 3652.254881 3541.647338 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3535.959366 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3507.219689 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3509 m -3665 3519 l -S -BT -7.606829 0 0 7.606829 3652.254881 3512.907661 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3507.219689 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3478.480011 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3480 m -3665 3490 l -S -BT -7.606829 0 0 7.606829 3652.254881 3484.167984 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3478.480011 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -3656 3451 m -3665 3462 l -S -BT -7.606829 0 0 7.606829 3652.254881 3455.428306 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -7.606829 0 0 7.606829 3660.658773 3449.740334 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -12.317005 0 0 12.317005 3657.43757 3449.740334 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3421.000657 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3422 m -3665 3433 l -S -BT -7.606829 0 0 7.606829 3652.254881 3426.688629 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3421.000657 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3392.26098 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3394 m -3665 3404 l -S -BT -7.606829 0 0 7.606829 3652.254881 3397.948952 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3392.26098 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -3656 3365 m -3665 3375 l -S -BT -7.606829 0 0 7.606829 3652.254881 3369.209275 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -7.606829 0 0 7.606829 3660.658773 3363.521303 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -12.317005 0 0 12.317005 3657.43757 3363.521303 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -12.317005 0 0 12.317005 3636.557391 3335.954674 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\054\054) Tj -ET -BT -12.317005 0 0 12.317005 3658.845304 3164.396396 Tm -/T3romansHorzN0 1.285714 Tf -(\050) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3306.041948 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3307 m -3665 3318 l -S -BT -7.606829 0 0 7.606829 3652.254881 3311.729921 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3306.041948 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -3656 3279 m -3665 3289 l -S -BT -7.606829 0 0 7.606829 3652.254881 3282.990243 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -7.606829 0 0 7.606829 3660.658773 3277.302271 Tm -/T3romansHorzN0 1.285714 Tf -(\017) Tj -ET -BT -12.317005 0 0 12.317005 3657.43757 3277.302271 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3248.562594 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3250 m -3665 3260 l -S -BT -7.606829 0 0 7.606829 3652.254881 3254.250566 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3248.562594 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3219.822917 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3221 m -3665 3232 l -S -BT -7.606829 0 0 7.606829 3652.254881 3225.510889 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3219.822917 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3191.08324 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3193 m -3665 3203 l -S -BT -7.606829 0 0 7.606829 3652.254881 3196.771212 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3191.08324 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -7.606829 0 0 7.606829 3662.164747 3104.864208 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -3656 3106 m -3665 3117 l -S -BT -7.606829 0 0 7.606829 3652.254881 3110.55218 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 3658.954886 3104.864208 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -BT -12.317005 0 0 12.317005 3656.205946 3133.603885 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -641 4831 m -641 4790 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -631 4757 m -641 4774 l -651 4757 l -f -641 4774 m -651 4790 l -631 4790 l -f -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -641 4757 m -641 4716 l -S -723 4831 m -723 4790 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -713 4757 m -723 4774 l -733 4757 l -f -723 4774 m -733 4790 l -713 4790 l -f -0 1 1 RG -0 1 1 rg -EMC -/OC /OC2 BDC -723 4757 m -723 4716 l -S -641 4716 m -723 4716 l -S -682 4716 m -682 4660 l -S -682 4647 m -682 4591 l -S -641 4591 m -723 4591 l -S -1 0.498039 0.623529 RG -1 0.498039 0.623529 rg -EMC -/OC /OC9 BDC -694 4654 m -757 4654 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -678 4654 m -686 4654 l -S -672 4647 m -692 4647 l -S -672 4660 m -692 4660 l -S -757 4654 m -757.015848 4637.691958 770.250674 4624.457132 786.576659 4624.457132 c -802.902644 4624.457132 816.13747 4637.691958 816.13747 4654.017943 c -816.13747 4670.343928 802.902644 4683.578754 786.576659 4683.578754 c -770.250674 4683.578754 757.015848 4670.343928 757.015848 4654.017943 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 773.67313 4647.85944 Tm -/T3romansHorzN0 1.285714 Tf -(\004\011) Tj -ET -EMC -/OC /OC3 BDC -641 4581 m -641 4601 l -S -756 4581 m -723 4601 l -S -723 4601 m -723 4581 l -S -756 4601 m -756 4581 l -S -0 J -1 j -4.105668 w -741 4591 m -741.767255 4592.612775 740.84817 4593.53186 739.714421 4593.53186 c -738.580672 4593.53186 737.661587 4592.612775 737.661587 4591.479026 c -S -1 J -1 j -0.708661 w -0 J -1 j -4.105668 w -737 4591 m -737.661587 4590.345277 738.580672 4589.426192 739.714421 4589.426192 c -740.84817 4589.426192 741.767255 4590.345277 741.767255 4591.479026 c -S -1 J -1 j -0.708661 w -0.708661 w -EMC -/OC /OC0 BDC -471 4863 m -525 4863 l -S -536 4863 m -546 4863 l -S -556 4863 m -607 4863 l -S -618 4863 m -628 4863 l -S -638 4863 m -689 4863 l -S -700 4863 m -710 4863 l -S -720 4863 m -772 4863 l -S -782 4863 m -792 4863 l -S -802 4863 m -854 4863 l -S -864 4863 m -874 4863 l -S -885 4863 m -936 4863 l -S -946 4863 m -956 4863 l -S -967 4863 m -1018 4863 l -S -1028 4863 m -1038 4863 l -S -1049 4863 m -1103 4863 l -S -1103 4863 m -1103 4836 l -S -1103 4826 m -1103 4815 l -S -1103 4805 m -1103 4754 l -S -1103 4743 m -1103 4733 l -S -1103 4723 m -1103 4672 l -S -1103 4661 m -1103 4651 l -S -1103 4641 m -1103 4589 l -S -1103 4579 m -1103 4569 l -S -1103 4559 m -1103 4531 l -S -1103 4531 m -1049 4531 l -S -1038 4531 m -1028 4531 l -S -1018 4531 m -967 4531 l -S -956 4531 m -946 4531 l -S -936 4531 m -885 4531 l -S -874 4531 m -864 4531 l -S -854 4531 m -802 4531 l -S -792 4531 m -782 4531 l -S -772 4531 m -720 4531 l -S -710 4531 m -700 4531 l -S -689 4531 m -638 4531 l -S -628 4531 m -618 4531 l -S -607 4531 m -556 4531 l -S -546 4531 m -536 4531 l -S -525 4531 m -471 4531 l -S -471 4531 m -471 4559 l -S -471 4569 m -471 4579 l -S -471 4589 m -471 4641 l -S -471 4651 m -471 4661 l -S -471 4672 m -471 4723 l -S -471 4733 m -471 4743 l -S -471 4754 m -471 4805 l -S -471 4815 m -471 4826 l -S -471 4836 m -471 4863 l -S -EMC -/OC /OC10 BDC -823 4654 m -823.459269 4644.947951 830.81195 4637.59527 839.881942 4637.59527 c -848.951933 4637.59527 856.304614 4644.947951 856.304614 4654.017943 c -856.304614 4663.087934 848.951933 4670.440615 839.881942 4670.440615 c -830.81195 4670.440615 823.459269 4663.087934 823.459269 4654.017943 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 827.271675 4647.85944 Tm -/T3romansHorzN0 1.285714 Tf -(\020\025) Tj -ET -EMC -/OC /OC10 BDC -723 4559 m -723.702034 4550.10242 731.054715 4542.749739 740.124707 4542.749739 c -749.194698 4542.749739 756.547379 4550.10242 756.547379 4559.172412 c -756.547379 4568.242404 749.194698 4575.595085 740.124707 4575.595085 c -731.054715 4575.595085 723.702034 4568.242404 723.702034 4559.172412 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 728.394226 4553.01391 Tm -/T3romansHorzN0 1.285714 Tf -(\023\035) Tj -ET -BT -12.317005 0 0 12.317005 854.276308 4839.00389 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011\010\006\012\003\007\002\003\012\010\002\002\007\006\014\033\042) Tj -ET -BT -12.317005 0 0 12.317005 854.276308 4818.475549 Tm -/T3romansHorzN0 1.285714 Tf -(\022\035\035\012\033\045\006\000\001) Tj -ET -BT -12.317005 0 0 12.317005 854.276308 4797.947208 Tm -/T3romansHorzN0 1.285714 Tf -(\010\003\012\020\024\036\024\012\014\010\004) Tj -ET -BT -12.317005 0 0 12.317005 764.758716 4553.01391 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040\012\001\014\012\000\002\011\033\010\003\000\011\001\012\027\010\033\027\007) Tj -ET -EMC -/OC /OC3 BDC -739 4823 m -730 4837 l -743 4827 l -f -741 4825 m -835 4728 l -S -835 4728 m -852 4728 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 858.600807 4731.024263 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -8.621903 0 0 8.621903 867.867886 4737.182766 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -868 4730 m -878 4744 l -S -BT -8.621903 0 0 8.621903 874.026389 4728.560863 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -12.317005 0 0 12.317005 882.237725 4731.024263 Tm -/T3romansHorzN0 1.285714 Tf -(\040\012\000\001\002\003\010\001\003\010\001\007\011\005\002) Tj -ET -BT -12.317005 0 0 12.317005 858.014283 4712.13819 Tm -/T3romansHorzN0 1.285714 Tf -(\034\007\006\010\033\007\012\011\005\003\033\007\003\012\015\012\011\034\034) Tj -ET -BT -12.317005 0 0 12.317005 2936.898817 4824.226384 Tm -/T3romansHorzN0 1.285714 Tf -(\030\011\005\004\007\004\012\020) Tj -ET -EMC -/OC /OC3 BDC -2276 4767 m -2267 4752 l -2271 4769 l -f -2273 4768 m -2297 4830 l -S -2297 4830 m -2313 4830 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2319.762794 4845.585243 Tm -/T3romansHorzN0 1.285714 Tf -(\030\004\011\030\011\004\003\000\011\001\007\004) Tj -ET -BT -12.317005 0 0 12.317005 2318.589746 4823.883854 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\023\024\012\033\045\006\000\001\012\010\003) Tj -ET -BT -12.317005 0 0 12.317005 2318.589746 4802.182465 Tm -/T3romansHorzN0 1.285714 Tf -(\020\024\012\014\010\004) Tj -ET -BT -12.317005 0 0 12.317005 2477.245176 4738.957285 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 1955.339552 4738.957285 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -7.606829 0 0 7.606829 1975.135866 4738.957285 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -1969 4740 m -1978 4751 l -S -BT -7.606829 0 0 7.606829 1965.226001 4744.645257 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -BT -12.317005 0 0 12.317005 1971.926005 4738.957285 Tm -/T3romansHorzN0 1.285714 Tf -(\012\040) Tj -ET -EMC -/OC /OC3 BDC -772 4594 m -756 4591 l -770 4599 l -f -771 4597 m -835 4620 l -S -835 4620 m -851 4620 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 857.959282 4624.180073 Tm -/T3romansHorzN0 1.285714 Tf -(\013\033\010\002\002\012\020\016\024) Tj -ET -BT -12.317005 0 0 12.317005 859.13233 4603.651732 Tm -/T3romansHorzN0 1.285714 Tf -(\010\001\002\000\012\014\020\035\036\016) Tj -ET -EMC -/OC /OC3 BDC -632 4605 m -641 4591 l -628 4601 l -f -630 4603 m -615 4620 l -S -615 4620 m -598 4620 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 488.478763 4624.180073 Tm -/T3romansHorzN0 1.285714 Tf -(\013\033\010\002\002\012\020\016\024) Tj -ET -BT -12.317005 0 0 12.317005 486.719191 4603.651732 Tm -/T3romansHorzN0 1.285714 Tf -(\010\001\002\000\012\014\020\035\036\016) Tj -ET -EMC -/OC /OC3 BDC -2287 4532 m -2247 4532 l -S -2287 4542 m -2287 4522 l -S -2287 4522 m -2319 4542 l -S -2319 4522 m -2287 4542 l -S -2319 4542 m -2319 4522 l -S -2293 4532 m -2293.616442 4527.342221 2298.02805 4522.930613 2303.470045 4522.930613 c -2308.91204 4522.930613 2313.323649 4527.342221 2313.323649 4532.784216 c -2313.323649 4538.226211 2308.91204 4542.63782 2303.470045 4542.63782 c -2298.02805 4542.63782 2293.616442 4538.226211 2293.616442 4532.784216 c -S -2287 4522 m -2295 4527 l -2294 4527 l -2294 4527 l -2294 4528 l -2294 4528 l -2294 4528 l -2294 4528 l -2294 4528 l -2294 4528 l -2294 4529 l -2294 4529 l -2294 4529 l -2294 4529 l -2294 4529 l -2294 4529 l -2294 4529 l -2293 4530 l -2293 4530 l -2293 4530 l -2293 4530 l -2293 4530 l -2293 4530 l -2293 4531 l -2293 4531 l -2293 4531 l -2293 4531 l -2293 4531 l -2293 4531 l -2293 4532 l -2293 4532 l -2293 4532 l -2293 4532 l -2293 4532 l -2293 4532 l -2293 4533 l -2293 4533 l -2293 4533 l -2293 4533 l -2293 4533 l -2293 4533 l -2293 4534 l -2293 4534 l -2293 4534 l -2293 4534 l -2293 4534 l -2293 4534 l -2293 4535 l -2293 4535 l -2293 4535 l -2294 4535 l -2294 4535 l -2294 4535 l -2294 4536 l -2294 4536 l -2294 4536 l -2294 4536 l -2294 4536 l -2294 4536 l -2294 4536 l -2294 4537 l -2294 4537 l -2294 4537 l -2294 4537 l -2294 4537 l -2295 4537 l -2287 4542 l -2287 4522 l -2313 4532 m -2313 4532 l -2313 4532 l -2313 4532 l -2313 4532 l -2313 4531 l -2313 4531 l -2313 4531 l -2313 4531 l -2313 4531 l -2313 4531 l -2313 4530 l -2313 4530 l -2313 4530 l -2313 4530 l -2313 4530 l -2312 4530 l -2312 4529 l -2312 4529 l -2312 4529 l -2312 4529 l -2312 4529 l -2312 4529 l -2312 4529 l -2312 4528 l -2312 4528 l -2312 4528 l -2312 4528 l -2312 4528 l -2312 4528 l -2312 4527 l -2312 4527 l -2311 4527 l -2319 4522 l -2319 4542 l -2311 4537 l -2312 4537 l -2312 4537 l -2312 4537 l -2312 4537 l -2312 4537 l -2312 4536 l -2312 4536 l -2312 4536 l -2312 4536 l -2312 4536 l -2312 4536 l -2312 4536 l -2312 4535 l -2312 4535 l -2312 4535 l -2312 4535 l -2313 4535 l -2313 4535 l -2313 4534 l -2313 4534 l -2313 4534 l -2313 4534 l -2313 4534 l -2313 4534 l -2313 4533 l -2313 4533 l -2313 4533 l -2313 4533 l -2313 4533 l -2313 4533 l -2313 4532 l -2313 4532 l -f* -2247 4532 m -2247 4497 l -S -2328 4542 m -2328 4522 l -S -2319 4542 m -2319 4522 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2293.205875 4545.981007 Tm -/T3romansHorzN0 1.285714 Tf -(\015\040) Tj -ET -EMC -/OC /OC3 BDC -2034 4315 m -2074 4315 l -S -2001 4325 m -2001 4305 l -S -2001 4305 m -2034 4325 l -S -2034 4305 m -2001 4325 l -S -2034 4325 m -2034 4305 l -S -2008 4315 m -2008.090078 4310.342803 2012.501686 4305.931194 2017.943681 4305.931194 c -2023.385676 4305.931194 2027.797285 4310.342803 2027.797285 4315.784798 c -2027.797285 4321.226793 2023.385676 4325.638402 2017.943681 4325.638402 c -2012.501686 4325.638402 2008.090078 4321.226793 2008.090078 4315.784798 c -S -2001 4305 m -2009 4310 l -2009 4310 l -2009 4311 l -2009 4311 l -2009 4311 l -2009 4311 l -2009 4311 l -2008 4311 l -2008 4311 l -2008 4312 l -2008 4312 l -2008 4312 l -2008 4312 l -2008 4312 l -2008 4312 l -2008 4312 l -2008 4313 l -2008 4313 l -2008 4313 l -2008 4313 l -2008 4313 l -2008 4313 l -2008 4314 l -2008 4314 l -2008 4314 l -2008 4314 l -2008 4314 l -2008 4314 l -2008 4315 l -2008 4315 l -2008 4315 l -2008 4315 l -2008 4315 l -2008 4315 l -2008 4316 l -2008 4316 l -2008 4316 l -2008 4316 l -2008 4316 l -2008 4316 l -2008 4317 l -2008 4317 l -2008 4317 l -2008 4317 l -2008 4317 l -2008 4317 l -2008 4318 l -2008 4318 l -2008 4318 l -2008 4318 l -2008 4318 l -2008 4318 l -2008 4319 l -2008 4319 l -2008 4319 l -2008 4319 l -2008 4319 l -2008 4319 l -2009 4319 l -2009 4320 l -2009 4320 l -2009 4320 l -2009 4320 l -2009 4320 l -2009 4320 l -2001 4325 l -2001 4305 l -2027 4315 m -2027 4315 l -2027 4315 l -2027 4315 l -2027 4315 l -2027 4314 l -2027 4314 l -2027 4314 l -2027 4314 l -2027 4314 l -2027 4314 l -2027 4313 l -2027 4313 l -2027 4313 l -2027 4313 l -2027 4313 l -2027 4313 l -2027 4312 l -2027 4312 l -2027 4312 l -2027 4312 l -2027 4312 l -2027 4312 l -2027 4312 l -2026 4311 l -2026 4311 l -2026 4311 l -2026 4311 l -2026 4311 l -2026 4311 l -2026 4311 l -2026 4310 l -2026 4310 l -2034 4305 l -2034 4325 l -2026 4320 l -2026 4320 l -2026 4320 l -2026 4320 l -2026 4320 l -2026 4320 l -2026 4319 l -2026 4319 l -2026 4319 l -2027 4319 l -2027 4319 l -2027 4319 l -2027 4319 l -2027 4318 l -2027 4318 l -2027 4318 l -2027 4318 l -2027 4318 l -2027 4318 l -2027 4317 l -2027 4317 l -2027 4317 l -2027 4317 l -2027 4317 l -2027 4317 l -2027 4316 l -2027 4316 l -2027 4316 l -2027 4316 l -2027 4316 l -2027 4316 l -2027 4315 l -2027 4315 l -f* -1993 4325 m -1993 4305 l -S -2001 4325 m -2001 4305 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2007.679511 4328.981588 Tm -/T3romansHorzN0 1.285714 Tf -(\015\040) Tj -ET -EMC -/OC /OC3 BDC -641 4581 m -641 4601 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2608.454938 4628.64361 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040\050\034\044\050\020\020\021\025\050\013\020\020\017) Tj -ET -BT -12.317005 0 0 12.317005 2608.454938 4845.165292 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040\050\034\044\050\020\020\021\035\050\013\020\020\017) Tj -ET -EMC -/OC /OC3 BDC -2401 4742 m -2401 4722 l -S -2384 4737 m -2384 4727 l -S -2384 4727 m -2401 4722 l -S -2384 4737 m -2401 4742 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2360.158519 4746.758055 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -8.621903 0 0 8.621903 2369.425599 4752.916557 Tm -/T3romansHorzN0 1.285714 Tf -(\020) Tj -ET -2370 4745 m -2380 4759 l -S -BT -8.621903 0 0 8.621903 2375.584101 4744.294654 Tm -/T3romansHorzN0 1.285714 Tf -(\015) Tj -ET -BT -12.317005 0 0 12.317005 2383.795438 4746.758055 Tm -/T3romansHorzN0 1.285714 Tf -(\040\026\023\040) Tj -ET -EMC -/OC /OC3 BDC -2212 4637 m -2232 4670 l -S -2232 4670 m -2212 4670 l -S -2232 4637 m -2212 4637 l -S -2223 4660 m -2232 4670 l -2232 4670 l -2227 4657 l -f -EMC -/OC /OC5 BDC -713 3276 m -736 3276 l -S -713 3279 m -697 3276 l -697 3276 l -713 3273 l -f -680 3279 m -697 3276 l -697 3276 l -680 3273 l -f -697 3235 m -697 3301 l -S -680 3276 m -658 3276 l -S -BT -12.317005 0 0 12.317005 665.316523 3287.000366 Tm -/T3romansHorzN0 1.285714 Tf -(\005\043) Tj -ET -BT -12.317005 0 0 12.317005 703.54999 3287.000348 Tm -/T3romansHorzN0 1.285714 Tf -(\010\043) Tj -ET -1 0 1 RG -1 0 1 rg -EMC -/OC /OC1 BDC -2547 3148 m -2513.206025 3148.204525 2485.697563 3120.696063 2485.697563 3086.762655 c -2485.697563 3052.829248 2513.206025 3025.320785 2547.139432 3025.320785 c -S -2750 3025 m -2784.357572 3025.320785 2811.866034 3052.829248 2811.866034 3086.762655 c -2811.866034 3120.696063 2784.357572 3148.204525 2750.424164 3148.204525 c -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -2863 4820 m -2863 4861 l -S -2822 4861 m -2822 4820 l -S -2924 4848 m -2924 4832 l -S -2822 4820 m -2863 4820 l -S -2863 4832 m -2924 4832 l -S -2863 4861 m -2822 4861 l -S -2863 4848 m -2924 4848 l -S -2755 4928 m -2796 4928 l -S -2796 4928 m -2796 4887 l -S -2755 4908 m -2796 4908 l -S -2755 4887 m -2755 4928 l -S -2796 4887 m -2755 4887 l -S -EMC -/OC /OC5 BDC -BT -10.26417 0 0 10.26417 2765.709158 4913.371638 Tm -/T3romansHorzN0 1.285714 Tf -(\002\030) Tj -ET -BT -10.26417 0 0 10.26417 2756.422527 4892.843297 Tm -/T3romansHorzN0 1.285714 Tf -(\015\017\020\021) Tj -ET -EMC -/OC /OC3 BDC -2796 4887 m -2822 4861 l -S -2863 4603 m -2863 4644 l -S -2822 4644 m -2822 4603 l -S -2924 4632 m -2924 4615 l -S -2822 4603 m -2863 4603 l -S -2863 4615 m -2924 4615 l -S -2863 4644 m -2822 4644 l -S -2863 4632 m -2924 4632 l -S -2755 4712 m -2796 4712 l -S -2796 4712 m -2796 4671 l -S -2755 4691 m -2796 4691 l -S -2755 4671 m -2755 4712 l -S -2796 4671 m -2755 4671 l -S -EMC -/OC /OC5 BDC -BT -10.26417 0 0 10.26417 2765.709158 4696.849957 Tm -/T3romansHorzN0 1.285714 Tf -(\002\030) Tj -ET -BT -10.26417 0 0 10.26417 2756.422527 4676.321616 Tm -/T3romansHorzN0 1.285714 Tf -(\015\017\020\021) Tj -ET -EMC -/OC /OC3 BDC -2796 4671 m -2822 4644 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1773.857103 4205.96088 Tm -/T3romansHorzN0 1.285714 Tf -(\003\030\015) Tj -ET -1 0 0 RG -1 0 0 rg -EMC -/OC /OC12 BDC -601 3159 m -597 3157 l -624 3204 l -624 3200 l -f -624 3200 m -624 3204 l -652 3157 l -648 3159 l -f -648 3159 m -652 3157 l -597 3157 l -601 3159 l -f -BT -14.369839 0 0 14.369839 613.497011 3163.526853 Tm -/Type0TTF1 1.397641 Tf -(SR) Tj -ET -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 712.529364 3140.667038 Tm -/T3romansHorzN0 1.285714 Tf -(\010\003\012\033\011\044\012\030\011\000\001\003) Tj -ET -BT -12.317005 0 0 12.317005 722.793534 3160.264532 Tm -/T3romansHorzN0 1.285714 Tf -(\037\004\010\000\001\012\031\011\033\007) Tj -ET -BT -12.317005 0 0 12.317005 711.398042 3179.862026 Tm -/T3romansHorzN0 1.285714 Tf -(\030\004\011\027\000\037\007\012\023\054\054) Tj -ET -EMC -/OC /OC3 BDC -788 3090 m -788 3080 l -788 3080 l -784 3090 l -f -786 3090 m -779 3135 l -S -EMC -/OC /OC5 BDC -474 3019 m -497 3019 l -S -458 3060 m -458 2994 l -S -441 3016 m -458 3019 l -458 3019 l -441 3021 l -f -441 3019 m -419 3019 l -S -474 3016 m -458 3019 l -458 3019 l -474 3021 l -f -BT -12.317005 0 0 12.317005 404.235563 2996.603522 Tm -/T3romansHorzN0 1.285714 Tf -(\013\020\020\023) Tj -ET -BT -12.317005 0 0 12.317005 464.756944 2996.603504 Tm -/T3romansHorzN0 1.285714 Tf -(\013\020\020\017) Tj -ET -BT -12.317005 0 0 12.317005 2936.898817 4844.754725 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011\010\006) Tj -ET -BT -12.317005 0 0 12.317005 2936.898817 4607.704703 Tm -/T3romansHorzN0 1.285714 Tf -(\030\011\005\004\007\004\012\015) Tj -ET -BT -12.317005 0 0 12.317005 2936.898817 4628.233044 Tm -/T3romansHorzN0 1.285714 Tf -(\034\011\010\006) Tj -ET -EMC -/OC /OC3 BDC -361 3090 m -361 3070 l -S -353 3090 m -353 3070 l -S -1 0 0 RG -1 0 0 rg -EMC -/OC /OC8 BDC -421 3081 m -421 3078 l -361 3078 l -361 3081 l -f -421 3081 m -421 3078 l -421 3078 l -421 3081 l -f -421 3081 m -421 3078 l -361 3078 l -361 3081 l -f -361 3078 m -361 3081 l -361 3081 l -361 3078 l -f -421 3081 m -361 3081 l -361 3081 l -421 3081 l -f -421 3078 m -361 3078 l -361 3078 l -421 3078 l -f -353 3081 m -353 3078 l -250 3078 l -250 3081 l -f -353 3081 m -353 3078 l -353 3078 l -353 3081 l -f -353 3081 m -353 3078 l -250 3078 l -250 3081 l -f -250 3078 m -250 3081 l -250 3081 l -250 3078 l -f -353 3081 m -250 3081 l -250 3081 l -353 3081 l -f -353 3078 m -250 3078 l -250 3078 l -353 3078 l -f -332 3083 m -353 3080 l -353 3080 l -332 3076 l -f -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2122 3569 m -2133 3580 l -S -2116 3569 m -2127 3580 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1046.184009 3779.867557 Tm -/T3romansHorzN0 1.285714 Tf -(\023\040) Tj -ET -BT -12.317005 0 0 12.317005 816.542518 3059.597384 Tm -/T3romansHorzN0 1.285714 Tf -(\003\030\020) Tj -ET -BT -12.317005 0 0 12.317005 3244.448038 3542.922796 Tm -/T3romansHorzN0 1.285714 Tf -(\003\030\016) Tj -ET -EMC -/OC /OC3 BDC -2632 3188 m -2588 3188 l -S -2608 3185 m -2588 3188 l -2588 3188 l -2608 3192 l -f -2632 3198 m -2605 3225 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2945 3117 m -2956 3127 l -S -2945 3123 m -2956 3134 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1879 3750 m -1889 3750 l -S -1879 3730 m -1879 3750 l -S -1879 3730 m -1889 3730 l -S -1 0.498039 0 RG -1 0.498039 0 rg -EMC -/OC /OC4 BDC -2075 3569 m -2086 3580 l -S -2069 3569 m -2080 3580 l -S -2028 3569 m -2039 3580 l -S -2021 3569 m -2032 3580 l -S -1980 3569 m -1991 3580 l -S -1974 3569 m -1985 3580 l -S -1933 3569 m -1944 3580 l -S -1927 3569 m -1938 3580 l -S -1886 3569 m -1897 3580 l -S -1880 3569 m -1891 3580 l -S -1839 3569 m -1850 3580 l -S -1833 3569 m -1843 3580 l -S -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -631 4831 m -631 4841 l -S -651 4831 m -631 4831 l -S -651 4831 m -651 4841 l -S -713 4831 m -713 4841 l -S -733 4831 m -713 4831 l -S -733 4831 m -733 4841 l -S -EMC -/OC /OC10 BDC -665 4831 m -665.812394 4822.445577 673.165075 4815.092896 682.235066 4815.092896 c -691.305058 4815.092896 698.657739 4822.445577 698.657739 4831.515568 c -698.657739 4840.58556 691.305058 4847.938241 682.235066 4847.938241 c -673.165075 4847.938241 665.812394 4840.58556 665.812394 4831.515568 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 669.6248 4825.357066 Tm -/T3romansHorzN0 1.285714 Tf -(\020\035) Tj -ET -BT -12.317005 0 0 12.317005 601.860331 4574.477118 Tm -/T3romansHorzN0 1.285714 Tf -(\003\030\023) Tj -ET -BT -12.317005 0 0 12.317005 761.992793 4574.477118 Tm -/T3romansHorzN0 1.285714 Tf -(\003\030\017) Tj -ET -BT -12.317005 0 0 12.317005 3567.503683 3010.43384 Tm -/T3romansHorzN0 1.285714 Tf -(\003\010\043\012\001\062\036) Tj -ET -BT -12.317005 0 0 12.317005 3588.032024 2981.694163 Tm -/T3romansHorzN0 1.285714 Tf -(\002\023\020) Tj -ET -BT -12.317005 0 0 12.317005 3682.966057 2981.694163 Tm -/T3romansHorzN0 1.285714 Tf -(\002\033\005\043\012\030\000\003) Tj -ET -EMC -/OC /OC11 BDC -3543 3030 m -3939 3030 l -S -3543 3002 m -3939 3002 l -S -3543 2973 m -3939 2973 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 3682.966057 3010.43384 Tm -/T3romansHorzN0 1.285714 Tf -(\030\004\011\003\007\013\003\007\037\012\010\004\007\010) Tj -ET -EMC -/OC /OC11 BDC -3543 3030 m -3543 2973 l -S -3664 3030 m -3664 2973 l -S -3939 2973 m -3939 3030 l -S -EMC -/OC /OC3 BDC -2187 3250 m -2220 3250 l -S -2187 3283 m -2220 3283 l -S -2187 3250 m -2187 3283 l -S -2220 3250 m -2220 3283 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 2196.748494 3261.041112 Tm -/T3romansHorzN0 1.285714 Tf -(\006) Tj -ET -EMC -/OC /OC3 BDC -1499 3090 m -1518 3123 l -S -1504 3149 m -1504.337318 3132.753193 1517.572143 3119.518367 1533.898128 3119.518367 c -1550.224113 3119.518367 1563.458939 3132.753193 1563.458939 3149.079178 c -1563.458939 3165.405163 1550.224113 3178.639988 1533.898128 3178.639988 c -1517.572143 3178.639988 1504.337318 3165.405163 1504.337318 3149.079178 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1520.9946 3152.376873 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1510.437167 3134.077602 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\023\024) Tj -ET -EMC -/OC /OC3 BDC -1084 3586 m -1103 3619 l -S -1089 3645 m -1089.165327 3628.728446 1102.400153 3615.49362 1118.726138 3615.49362 c -1135.052123 3615.49362 1148.286949 3628.728446 1148.286949 3645.054431 c -1148.286949 3661.380416 1135.052123 3674.615242 1118.726138 3674.615242 c -1102.400153 3674.615242 1089.165327 3661.380416 1089.165327 3645.054431 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1105.822609 3648.352127 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1095.558439 3630.052856 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\015\021) Tj -ET -EMC -/OC /OC3 BDC -1378 3684 m -1412 3665 l -S -1408 3650 m -1408.061126 3634.094506 1421.295952 3620.85968 1437.621937 3620.85968 c -1453.947922 3620.85968 1467.182748 3634.094506 1467.182748 3650.420491 c -1467.182748 3666.746476 1453.947922 3679.981302 1437.621937 3679.981302 c -1421.295952 3679.981302 1408.061126 3666.746476 1408.061126 3650.420491 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1424.718409 3653.718187 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1414.160976 3635.418916 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\015\022) Tj -ET -EMC -/OC /OC3 BDC -1664 3684 m -1631 3665 l -S -1576 3650 m -1576.093543 3634.094506 1589.328369 3620.85968 1605.654354 3620.85968 c -1621.980339 3620.85968 1635.215165 3634.094506 1635.215165 3650.420491 c -1635.215165 3666.746476 1621.980339 3679.981302 1605.654354 3679.981302 c -1589.328369 3679.981302 1576.093543 3666.746476 1576.093543 3650.420491 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1592.750825 3653.718187 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1582.193393 3635.418916 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\015\025) Tj -ET -EMC -/OC /OC3 BDC -1839 3860 m -1858 3894 l -S -1844 3919 m -1844.237637 3903.289914 1857.472462 3890.055089 1873.798447 3890.055089 c -1890.124432 3890.055089 1903.359258 3903.289914 1903.359258 3919.615899 c -1903.359258 3935.941884 1890.124432 3949.17671 1873.798447 3949.17671 c -1857.472462 3949.17671 1844.237637 3935.941884 1844.237637 3919.615899 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1860.894919 3922.913595 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1850.337486 3904.614324 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\015\016) Tj -ET -EMC -/OC /OC3 BDC -1776 4042 m -1795 4076 l -S -1781 4101 m -1781.272772 4085.374309 1794.507598 4072.139484 1810.833583 4072.139484 c -1827.159568 4072.139484 1840.394394 4085.374309 1840.394394 4101.700294 c -1840.394394 4118.026279 1827.159568 4131.261105 1810.833583 4131.261105 c -1794.507598 4131.261105 1781.272772 4118.026279 1781.272772 4101.700294 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1797.930054 4104.99799 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1787.07936 4086.698719 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\015\017) Tj -ET -EMC -/OC /OC3 BDC -1839 3750 m -1858 3783 l -S -1844 3809 m -1844.237637 3793.097244 1857.472462 3779.862418 1873.798447 3779.862418 c -1890.124432 3779.862418 1903.359258 3793.097244 1903.359258 3809.423229 c -1903.359258 3825.749214 1890.124432 3838.984039 1873.798447 3838.984039 c -1857.472462 3838.984039 1844.237637 3825.749214 1844.237637 3809.423229 c -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1860.894919 3812.720924 Tm -/T3romansHorzN0 1.285714 Tf -(\034\044) Tj -ET -BT -12.317005 0 0 12.317005 1850.337486 3794.421653 Tm -/T3romansHorzN0 1.285714 Tf -(\025\020\015\035) Tj -ET -1 0 0 RG -1 0 0 rg -EMC -/OC /OC12 BDC -BT -12.317005 0 0 12.317005 281.713699 1973.111898 Tm -/T3romansHorzN0 1.285714 Tf -(\002\010\034\007\003\042\012\004\007\033\010\003\007\037\012\037\007\027\000\013\007\012\046\002\004\037\047) Tj -ET -BT -12.317005 0 0 12.317005 212.054092 2036.877828 Tm -/T3romansHorzN0 1.285714 Tf -(\055\007\042\056) Tj -ET -208 1962 m -204 1960 l -231 2007 l -231 2003 l -f -231 2003 m -231 2007 l -259 1960 l -255 1962 l -f -255 1962 m -259 1960 l -204 1960 l -208 1962 l -f -BT -14.369839 0 0 14.369839 220.566692 1966.232725 Tm -/Type0TTF1 1.397641 Tf -(SR) Tj -ET -0 0 0 RG -0 0 0 rg -EMC -/OC /OC3 BDC -1775 4248 m -1766 4234 l -1770 4250 l -f -1773 4249 m -1796 4305 l -S -1796 4305 m -1812 4305 l -S -EMC -/OC /OC5 BDC -BT -12.317005 0 0 12.317005 1819.271103 4309.162276 Tm -/T3romansHorzN0 1.285714 Tf -(\013\033\010\002\002\012\020\016\024) Tj -ET -BT -12.317005 0 0 12.317005 1820.444151 4288.633935 Tm -/T3romansHorzN0 1.285714 Tf -(\010\001\002\000\012\014\020\035\036\016) Tj -ET -EMC -Q -endstream -endobj -15 0 obj -<>/Properties<>/Font<>>> -endobj -19 0 obj -[ /Indexed /DeviceRGB 22 0 R 23 0 R] -endobj -22 0 obj -255 -endobj -23 0 obj -<>stream -ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÀÀÀÿÿ¥¥RR??LL&&&&ÿ?ÿŸ¥)¥gRO?LL/&& &ÿÿ¿¥R¥|R?_?L&L9&&&ÿ¿ÿߥ|¥‘R_o?L9LB&&&!ÿÿÿÿ¥¥¥¥R?LLLL&&&&&¿ÿßÿ|¥‘¥R_o?9LBL&&!&ÿ¿ÿR¥|¥R?_?&L9L&&&?ÿŸÿ)¥g¥RO?L/L& &&ÿÿ¥R¥R??L&L&&&ÿ?ÿŸ¥)R¥g?OL&L/& &ÿÿ¿¥RR¥|??_L&&L9&&ÿ¿ÿߥ|R¥‘_?oL9&LB&&!ÿÿÿÿ¥¥R¥¥?LL&LL&&&&¿ÿßÿ|¥R‘¥_?o9L&BL&!&ÿ¿ÿR¥R|¥??_&L&9L&&?ÿŸÿ)¥Rg¥?OL&/L &&ÿÿ¥RR¥??L&&L&&?ÿŸÿ)¥gR¥O?L/&L &&ÿ¿ÿR¥|R¥?_?&L9&L&&¿ÿßÿ|¥‘R¥_o?9LB&L&!&ÿÿÿÿ¥¥¥R¥?LLL&L&&&&ÿ¿ÿߥ|¥R‘_?oL9L&B&&!ÿÿ¿¥R¥R|??_L&L&9&&ÿ?ÿŸ¥)¥Rg?OLL&/& &---[[[‰‰‰···³³³endstream -endobj -2 0 obj -<> -endobj -3 0 obj -<> -endobj -4 0 obj -<> -endobj -5 0 obj -<> -endobj -6 0 obj -<> -endobj -7 0 obj -<> -endobj -8 0 obj -<> -endobj -9 0 obj -<> -endobj -10 0 obj -<> -endobj -11 0 obj -<> -endobj -12 0 obj -<> -endobj -13 0 obj -<> -endobj -14 0 obj -<> -endobj -18 0 obj -<> -endobj -24 0 obj -<> -endobj -27 0 obj -<>stream - -  !"#$%&'()*+,-./0123456endstream -endobj -28 0 obj -<>stream -xœì¼y”åfyçÿèêݽzµ^Iu%•ªî­{o×­­ÝÝînlŒmâ6^X¼2†iƒm Þ1›C0¶CN&!BÈü¦Â„,L†æ—NB2ùA¶˜¦Á€ÁØÆÆÆl!f‰kþPuwA&sÒç—3'Éáy[ç•J·ž÷+é£ïûH·Nƒ‘€à´3/8û¬ùGÒ¡÷ssÅ…ç^xÁøuoy €º ÷«O½`uãš÷Üø[Î_ÀÅ^pöÅßÚyòYà|í=¿zÙÅgž÷Ì8ÿý `úéµÏ»æÒëþíwÞpùù£çýø‹ëkßvöË^ömôÜ+®þ5×ï»ù.€«@öüKo¼ -àà|ííà?ÿê—]¡ì‹®¸õçÀ9å/®¼ìš—~õç^0úi€Sß~åå—^ö×ø¶À9v_yåå—zœÞàÜ‹W^óâ—^úí?>ЫÄ%W]þ¢kŸ„Ïx 8þ4ôøÕ×=ïÒ»_·ãG^y ^»æÒ—^O^çž à¼êk/½æò'~knœ÷= À|ïúën|ñàìo<œ? ¿èú]~½÷®;?è=ç=¿è|þMÿÑ<áP0øÏÕ{þà½wŸzÙã¯ýÞÏÑ–½$8Ð…@o~ü|vÕã¯}ü5´=¶g+zo ÷Fø:<. =ðaNp/s>.8àôp~\`øÍx'üb×÷$\Ñ îIBz½žÛC½×°c¹/<ïŒNƒú;=|øñ§;št~¿ø{>à†å­þèòK½ á\wŒ» {ñx:g;§ÃY½U¸¼· -§ô^î¸Ä9 ¯ï­Â.ç0üªsÀÝ„3ÜMx—» «î&œénB¸õ³'¸›pž» §»›pÆÖç_ïsÀ%îø1wÎ"o‡g¡ƒíãè ÜŒÁÓÐ!x%:·£¼ðltnqÃ[Ý0Cáfw^Š_?ÁOà.BáÕ¸€sÑ!¸„sQ¦[댬CŠC£,:‡á¦­ã]t#˜¹›í£½U8ÛÝ„}î&\å€'¹›°ÇÝ„}ÎaÝMØénÂÕÎMpµsSûN÷\ïÜWâ—Àµî&\ín®­þäÞ*\퀓œÃ0ïn Ü£CÐs€r@á€ùÞ:¬8ï‚·ôÖaèÝq·£Cð4tn?vL‡à–-Mÿxé4~ßÏœÃp‹s"çpûuç0 mÚ~pyÁ,{Ýð*w.r7!r7á´Þ¹p‰{;`ÔƒW¡#€Ð@äø½Uø£Þ*l Ëà|r8¸€ø]ðftœ.ƒóÐepž»Ù~½Þê> -'ãwÁËÉ/ÃÛÐe½u€Þ50í]C2„ŸÄG`êÁ ¨·÷Vá{.A—Á…î&, Ë`'zrw®r7ázrüåÑó„ ¸ˆÜ/$ëð#îfû¹ · -göVaŸs\áÜ¡Ëà|÷QXu@v²Ç_ën¶÷VáœÞ*<ß=¡{wö:‡áW›à¢Þ*ì#w@¹ÅáíÇ{¸Ý9 ¿ìnrƒpÃ:.ࢣ :·]œÃ°Ù[…¨· -¸· -ýÞ* {«p¨· -·÷VᙽUXë­Â/÷VaÞÝl¿çÜÔ¶è œë€“PÝ0ï¼ Þ‚µ¹›°¼u ¯v7áê­{æÕ½U¸xkœ¿ .ÞZrÄpÏv7a§sÞp,÷!xš{žt´wß -û´öfÝyu7aß±þ¼1؃µ¡ƒp{·¯ëÝMx©s\énÂK‡»¾÷¸‚Ÿp7áê£=.à"wv¡CpKo®Þê/Úv¬Sç0Ì£L{7Áüë/8Öo‹£½{ ܆>ÏÀçÁYî7àdwö÷> ;ѳáäÞ-P Óa?‚ö«î&üJï28ƒ¾^ÍžŠÞôý¯ €_¡Gœâ÷Ã{ÝÃðlô!x“{.AGz :â`üŽöaôeç½ø½Wâw´ÿã~ûð¯d¹¿£ý">Ò¶èH7ÐG¶/NŽ]ØçWØUÎ{èEàQp: Ÿ{Ð{P €†à"\À[{_„«ÑàÎépVïB8—X¸´÷˜CGà?õ>·ö>·¢#ð½ÃõÛ8ú>æ~¥£ýQ^°ßbájtúîfûAçpûYçp{¤»Û‡ÃíãÎáö»Îax“s\怙sSûNtnvÀUî™pMÇkû;Ûø¼ÝÝ„òù8ÝÎçÇÚ¯ý#. 'ë¢CÐ;zŸ:7?~r8øìÂ@=¸¡÷ÛÎ%G?ÿƒý¶ß¿ÂÝl?în¶£Ám»·ÏÆ/ƒçôVá/{¿ Ïì|¸ý -:Ø>Ž/‚ÿ 4½÷Cƒ JüWÐàë!w·zlN}ˆ­ùtñè\ŠÂÍè ˆ£ó(:~lËÏ^ƒ«ÝGái¨St0: €óÑcðLçð–ÞoÀɽOÂNwntÃ-î&Üྮs@Ô»öº›p£» ç:‡aÓ=®q@än îˆ{·Â~wv¹ -×¹œân î5 ÐûáL`ÿÖüuÃÖ|u&°„ÛñïÂÔ½nCï†g ƒp®sÞꆞ{fä« È[á§ð›aâÞ ·¡)0ôn¸lGçÃÏ ƒp³{ ܆n@ávâq¿ §¡wÃmèÝp›{'܆Îoë|ܲý\ C[çb - }Î@¡Oíè  n#KpÞ óðt>¼½~„¼^ƒAênÂ>÷/à÷f¸®w9\ïvõÒ>ô¼ö»®÷p» ×õ> ׺‡!D·ÂîoÀuî&ìr_×»›pµ{žä:P¹ ÀWÀ©îPî_À îUp2>^Œ¯€Q€î…«Ý«àj÷Y0FÀõîë!ßòmÔ»®wŸ§ºà$ç&¸Ú9 ̹©}'þ:øøB¸ÊÝÔû,\ë€Âý ¸Î}"ÜÖ›À 专 -¸ÝEoÂÞ*Ìz«pjoV¶îãïótç&¸ ÷FÇqëÜå|Ûù§#w´rG—NßÉ´ã'Ïu1¶Û?°~i³%g0”ÇÚÒq"§Ì’ÒwÇÉsíhGƒÁ`à[km–e™c­µöøþOŒ=8Ç>•çŽ“9NÛ:Žã”g}ëçíws'wœ²,KÇq´ÖÙö¹c}GÙAéln©Ìík¿tœ|”£ëX§tÇÑŽvºÏæNîäŽv´c}ëw§Êq’ÿéúÿÑñÕ| }í;Ö±Žu–œ%gI;Ú)³2+³rà8ý㔺dc*µ£A6(ÜqÎÀdƒl ÊÿÍ`Yî(Çê²_eÚq´ãäƒ0wÊã8™ã,:ŽÍÇ)kÇAæX'pGçåÑl¹ã8ŽÃÆ'ÓŽvtî8¡ã¼ïÝŽãhÇ8Üq¬#œká8Ö±~PªÄá}å8Ý.‡;ƒlà8Ž³]aîäÑrÇqë:Øužã@‰¿.ßgß ßf-0í÷€ƒh¿dû= ÚïÝ~4èö{à×~ øíwÁ¿ý.X°íw € ý.„¶ß…Âö;CÔ~ˆÛï@ -qûô!mƒ úícCÖ>díc0yû0€¢} J(ÚoCƒö †²ý˜‡ºý64P·ß†˜o¿‹Ð´ß†!4í·` í·` ÛoÁ†í·`Kí7a -ãö[°¦í7av´ß‚ìh¿ +°Ü~VaÖ~Ö`Ö> -ë°Ò~6`µý섵öpl´Â.ØÙ> -»á¤öQØ'µ'îöïa/ìnÿöÁžöQØ{Ú¯ÃàäöïáØ×~N…}í×ተ¿ý:œOhÿž§´_‡Óá”öïà 8µý;8žØþ<žÔ~ ~No¿gÁ™í×àœÑ~ Άi¿ -O³Ú¯Â9p ýœ Ú¯Âypvû8žÒ~ž -Ú¯ÂÓàÜö+ðt8¯ý -<Îo¿ Àùí—áBxjûe¸žÖ~.†§·_†…§·_‚gÂ3Ú/Á³à‚öKðcpaûü¸¨ý\?Ú~ ž µ_‚çÀ3ÛGà?ÂÅíá <«}.…KÚ/ÂsáÙíáyðÛ/Âeðìöa¸¶Ãðœöax><·}®„ç¶Á àyíCðB¸¬}®‚ç¶ÃÕpEû¸žß>וíCp\Ù~®‡´_€àÊöAx¼ ýÜW·‹á…íƒp\Õ>?W·Ÿ‡—ÀõíðR¸¶}^×µÀËáEíçáð¢ö¸nl???Þ~^ /i„o?¯‚—´Ÿ‡[àåíýðjxE{?Ü -7·÷Ámps{ܯh‚W´÷Ákàæö>øiø‰ö^øøÉö^øYxU{/¼^ÕÞ ?·´÷ÂëàÕí½ðz¸µýÜ·¶ŸƒŸ‡ÛÚ{àà¶ösðŸà§ÚÏÁ/Â϶÷À/ÁO·÷ÀàgÚ{à—áµígáðsíçàWàuíçàMðúöx3ÜÑÞ¿ -?ßÞo_hï_ƒ_h? ¿¿ØÞ¿¿Ø~Þ -¿Ô~Þ¿Ô~~ÞÐ~þ3¼±ý,ü?ðÆö3ð_àMíg`ÞÔ~~ ÞÜ~Þonï†ÿ -oiï†ß†_kï†wÀ¯µwÃïÀ¯·wÃﯷŸ†ßƒ·µŸ†ß‡·µŸ‚wÂo¶Ÿ†ÿ¿Ù~þþKû)øï°Ù~ -Þ¿Õ~ -þÞÞ~ -þÞÞ~ -Þ ÿµý$¼~»ý$üøö“ðÿÂï¶wÁÃï¶wÁ!ø½ö.øø½ö.øSøýö.ø3xgû x/ü·ö.øsøƒöððßÛOÀÿ„wµŸ€¿„?l?ÿüQûqxüQûqx?¼»ý8ü¼»ý8ü5¼§=ÜÀ·Gàƒp¨=‚?mÀ‡áÏÚ#ðxoû1ø[øóöcp'üy{> -Ñ~ Ãÿl?ƒ¿lÃx_{>ïk? -Ÿ€÷·‡á.xûQø$üUûQøüuûQø4üM{'Ü hï„ÏÀÛ;á³ð¡öN¸>ÔÞ Ÿƒ´w½ð‘öN¸þ¶ý[¸îl?Ÿ‡;Û¿…à£íGàA8Ü~¾GÚÀCð‰öÃð0ÜÕ~¾Ÿl? À§Ú×àÓí‡áËðéöÃð¸»ý|în?_ƒÏ¶‚¿ƒ{ÚÁ×ásí‡àïáÞöƒð(ÜÛ~¾÷µ€oÂýíá[ðùöƒðmø|ûøx°ý<_h?ß/´€ïÂÃíßÀ÷àáöoàqøbûhá‹íßü»ôôonóôoþ3=}½}ô_™§õÿ‚§_Ü>ò¯ÄÓ_Ø>/†¶_ØæéÂKàÚöAx)\Û>xÌÓ¯o„WÀ‹Úyú‹Ûà•pSûü$üxûÀ1Oiû¼^Ö>·ÂËÛûá6xy{?ܯh‚W´÷oóôûágà'ÛûágáUí}Û<ý>x¼º½^·¶÷Âpk{ü<ÜÖÞ ¿·µ÷óôŸnï…_‚Ÿnï…7ÀÏ´Ÿƒ_†×¶ŸûòôÏüÐÓÿÕ{úGþMzºù¡§ÿ;ªÓ/ØòôãuúÅí—þ‘§?Ï…ÿÐ>σgoóôç´óôƒíÃp%l†À¥íÃðBxî÷yúÃp \Þ> ×ÂíCp\Ñ>×ÃóÛ‡~èé?ôôGžþo³Nÿ·ééÿÜw/ÿw<ýI[žþÕòô³Ú¯ÀùpàŸðôs·<ý+p!œ×~.‚óÛ/ÃÅðÔ-Oÿ2<žÖ~ žOßòô/óô‹¶Õé?ôôzú=ýŸçéû/êéüöt€>@ï-R¹àº®‹1#=×E¸Û8Ý:'„B(éa‚¥„RB(a„×uî~¡‡q¯‡{ cŒ]ÜÄ‚Ýž‹ ¡„Rz<+îõz½m›cìB)w]Â)#„`‚'®ë2†‰‹ &´ÓÁæõzÒëô¹=$!„ôz½¥”RÚsîLp`BÆØu]Æ¡¸G0ÅcâL0éÆÄ=ìbD1ÅS—º“q)¦˜`‚1¥#â‚]!‰$’É0Å”2ÊN(¨”RJJ©T‚1B)!Œ"Òs¢QÔ‰#˜àn­[ïmîŒpoK'¦.ÁJŠ)fŒÁœQŒºÁéaLcÌE®K(CŒÑ!˜Ò#„QB» F»ÄÝ5é!Œ‰‹1˜²Ƙ†)éõ°à “ Á„Jº”0F¡œbŒ]Œ ÂaÒ]hÂÆ„ŠñÖî^¯Ç(F#— ⺮‹ &½(í‚뺈`I{®‹È²IÁ‚RF)aÌÅsÆ(£3Ê Å®ëâÿ#›®K¶®Ü?Í&>ʦp]*§”bJ¸ .BœaâŠ)ÅXPÊá^B³))¥”ºxŒ±ïc“bŒ]Š)¡˜-6v)f˜á£•PŠé› 3Ì0u©K1îuÛcŒ)#QDFRE!ŠJ(唟PP¥”R”R¥%ç„QB8C´‡xÇf'n ¶cÍíu­;¦ÛÚI]Š±{ôCœQÒ£X0†gœqF¿MÊ8bœõ(¥3—RÎc”`J8u)A¸‡ F÷0ƤÃj‹MÊ1£®‹…`„PJ(¦”J áŒ1Êpw.8ã„ Š FSL"3ÂÁì›ã^¯ÇFcWH꺮‹)ƽh¯c“I{!â"×%Ç¢[—”2F)c.¦„3ÖmQÞဠ"Ò#¤×Ã=F!÷:ÈEGÙ$Gï´ÎàŽB0!ʘDˆJÆ)¥„.)BHB¡„²N‡Dc“ „1ùß±‰ŽéQL±Ë%”‚âœSF¶Ø$QB £{ôˆK#Œ0ÂCÓEŒ0B1Å„qB0EŒ¤4ÕTSª9a„1ÎNŒM¦µÖš1¦=%åŒRÁí!Æ SÂ0ôó¡cíûØ$½c;ÅÔ=ºÕ±I¤`ä8›„0Î9G!Ê9æœw3LÇ&eŒJ)g.%˜ôÁ˜ÆdëÚ2Ö#„0Ê £®‹¥ä„2J)¡TÆíؤ”QF¥d‚2É!ˆŠ Á„n]gNaœ2‚!¤cSp‚ ÁHJŠB„bÚë€ñ·Ø¤’õÂÔE®KE·®(ãœ1Á]Â¨ä‚ Î8§’Qæº.¡¨û,¥®K\I)¥ˆ¸s‚1r¥”3.8Ýžvû ”PJaœ+„˜’1F9•Š!Œ”¤ QF§TQ*”¢ -!×e6ˆêºÈ£Œ2溮+„àœ»ÇÙ¤.# »œRÌ(ípLP—N9¥ ÑN!£ŒR—"Š9åTPŽ8b„»sÊ)à S.(íœ y†f3’rʹäò„‚cŒáœß“’ Θ˜÷ÄcŽ)å”SFeTPAå”Ó£sq!Ôít -º¥“vMrŠ]J•K.ùÖ6B„bBb)…KcŒ»ŒKÎg”S&¸K)¦.¥SêB1¦”P̹K)åLRÎ\—h%)ã”1ʘ¤œS&¹àŒw·‚”B2®8¥QÊ¥˜2J)¥ B ŒÂ)¥ˆ×u¥ S‚”f!Dá® ¾E€‹UÜEw{BŒ1ª»[]p—r*¹à‚sʹbœ"„EŒº.u%eŒ!êRÊ)¥ÈE£c“±¢®@;Æ&¦L×BrÎ)gRs„±Ò”¹ŒS.(Õœ ­¨FÈu9£¼GêÆð8çœÿlrJ©Ë§œ1†’R2Á¶®%cˆSN·Nì66GqJÝn›RJ©ŒŽ9£ØøÌg>c¾b‚ !Å ¡©„ïû¾/„ð­QŠKÁ˜„»XAˆ [ 1Î8L0Á¶³yô˜(§‚ ƧeSqN]Nµ+®¸âœº” -)¥D!.%‘JºœsN¹Ë¹ä\pÎ(gR¸œêRJ en7ë3B©.eTpI9w]êiÉX÷û\1Η\pÎ)Lp)…â\sÊ(fŒJ ëî3LåQ_¥‚2Š)u]WÉδ·å딺.ØB3¦¸‹1f#t¼dïÖ=Î…à\ -—r¦…äRp.¸î& Ê0ëØd®K]Íc˜ºÝœfœ .¤Øz8ÊæöÆf\cîIÅ9g‚)cŒµf3θ`Ìã\zšyÇØdSʾM)¥b[ÉÜAˆÄ›c¥—Ìí<‡qÌg‚ Î8c.C &˜d Ì)w9>ŠÆ169þå–[ÎmǦê„BXk­BØÀךKÁ¹–D¸Xo±É[lJ&™d‚ ö}l2·Ó)™Àœr$¶ ÖœS—3OKF4×\sN]Æ„RJa‚1—Š(¥\ÎçÂå\ .gœs)]Îs£„1—vtQF…pc‚+*¸ëRã)ÖÁȹfB0®…\p.¹àZKÍ…'Ø›Œ&cÇÙä‚RÁëØÔ’Ê(ö ÇcÆiç›a„!DWÂŘp„:^uë¾R -¡¤Ë×R %—Ò.B”cÎç.ç®Ë\Í9瘹ݜæBH!•Ü*´ŽB´½øâœc&¤ô1¾ò„\rϘc¸À\p¡8÷…P¾á>B®+:l0c¹ÈBẮ«”’Rnc“»‚ †$çTpÞá®…ânw]¹À‚ .·Î­Ë1'’K®¸Ä ÆÝn[0Á˜ÔœSA¤à$E(B!BK.¥VúD“a†¡”2Œ¬ç %…ð‘.ñ¨¤TRÁ%“LpÁïÌOrɲÉ\Áw;ŠK,GÝü-¹‘œº‚ûFqb¤‘Frêr.µÖŒ…ö¨ö´+„BºBj)”œs¡•»å¥Œrî2Æ)éæ0årΕÐL -×e¾¯¹B&…Ç¥äBK%…äB %´§Œ¾äœÎåœrÙMKT3δŠ1Å8'Œ¹®ëiN)gØ·cŒ¹`›q‚cL¤¥K˜`,ŽE·n¥TJJ­—Â(-µ’RI_*‰1f‚Á…ÀB Ä;LÇ‚kÆ9ADH©¤ÒªËØ•=]Õw4˜‚©µ%DYm”RB c!Ä7B¡„ÒBX)µõ…¥!%¸r!œ Œh,¥”!„´ÖJ)tüAK É%GJ(.…„Ï󤨻®B)¤PRI!…@ ª„Z(¢ˆäK¢„’Kε'•TIA¢XÆ2–26B ­6':Žã8ÖZÇIèûÒSRúš)—øTSª©Š+.…Rh¡…J(q´NáHr.P§S‹N§]óµâH -k´ ¾öµ¯GBhÏóÒZkå!­­§§•ÒÚ7H+.‘”‚K‰„œIÉ¥ð ’Rm¥§qd¥ö´ÖRë@yžÔÖ3žö”6Úè(òíEž”‚J©¹”\zRJ)8÷…¾¯ŒFJI…@¾ä\ -ÅšRJ¥ -#(æB˜R‘A”rM(!ÇË"B´Ö*1Æ÷g}" -|k¬o<ßÄÆx„¡¨RR)¢ÆJ)E%QÒ—RRBµ1¾ñ­ße”]Úíƒ(©”bÊóý„R“ØУ|&†2GžGµQÆ*•c“X%”bl´4HQ*¥"˜fÆc!ÄZëû>9ΦÂFz’øÊH£t‡{àYEŒô¥/•G2Ê÷|£ŒRXÅ}å+«|êS#=â1_ùÊ“žT~ •0ÌóË ¯ð -ÏË#íkßmx"ùEQ…ïûssYyïy‘±ˆûBøÂ(_úÒ(£Œ²Ê*«|å«£ïÜ$6R*Üé´ªÓ髮ž‘ب$²ýØ}#±R~唚 äacŒñ|bLà{Ö7Ú3&°Äh¡ˆRR(E¤T’)-”ò-QJY*ß"Ó$ÔžoŒQÆDÚ÷µ |ëßó¬ñM±ñ_iÅ´2B)¡RJI!©Ux¾’V)ŤÄGRIšô ¥”*#=‚`PQ ”2O§>fŒ{”Qz¼.¢Ôó<Ý÷}k}Z¢|ÙЭo¬Ÿø¾¡”JÍ´Vž¦žÆX¡Hkí1Eµ´J*F˜çûÖ·¡í2ª.íöA´ÒZ3ÏAŸ1¿ƾïkëÅ}ŸqžÄÆ0Ï×~ uß÷Ã~¢û”bì{ÒGš1¥4Å4ó}ß÷ !$ Ckí¶oi4ö•QÄj_úÚócQ™Ð#Ýuõ 󵯭±¾öµFšjnµÕ¡¶Ì2_j¸ÕVe”¶¡§…ÏÑ|n`f`Ì\ìY/â >¡ƒÁ`AYIbBkLJ‹Y"!ák«¬ê¦äÐ ½Ð³ÚjÒ½ðÄ -ûJiÔé u§Óê®%Ö—Ø×ý84"±‰M¬/±Ö6Š¢ˆ Æü0QQß÷}c‰ïGÖ„Ö÷Œï‡ñ=¡©ÖJhM•Ò’kOjeªµüX[Ÿ•õ#ÏXß÷µï'žµžÙÐúÖ˜Àü$ ßö­ö4÷´/µž¯µÖJÊHy*ŒL T µæJaŠ“P ©ëç>cŒi_Š n(PJ¹gÒs. å”/‹ºõ"Â0ð£êÀ$aDaà‡A>¥TnŒ6†Cˆ&‰1ÆpMµÖœraFáV¡Õ¥Ý>ˆÑÆîùa˜säQ ü4¸YêûÜ&ˆŒÉƒ Ê3“SJHàëε6”й ‚€RJ£( -ÃpÛ·4†Ú×44ºWŠI’ø‘¡u¨Ï˜ÐC 3"4¡‰LÈChŸú"4¡ñµ¯½0ö´ÂúFTµ_ûµïW© M¦QzBÖu]×aÎ7ƒ~ßÆ¡ï÷#`Þ—¡”¡ L¨C˜À&2‘‰LhBsô}°&Ö†t:#ÓéìæïÐda I`ò4òefaš&I’pÉy§2IAà‡4’ÐFaàûAG4ð¥¡Æhe ÕÚhaŒ2^QcL¤^PªçŠÄØ0°}? MÂ( BßFAô³8³aã ceŒ4g<£•N´ñâÄ<yÆ­ %ýØHíižÏœsníSó cb‹Mé3ÎØqjó}ßAE#æ&â ŽyXƘ6ÜÏf !I1†{Ìx‘çyœr?¢ Š£.£×¥Ý>È›6Š -΃"îA`B¿_\ˆ¬o-÷;6‹ ˆ‹ÜŒø^€ çžga›Œ1ÇqEìûØô¬G#xñ}Îyš¦66,ð"/òŒå Ld£clÊÈD&6xàYfEd"c=ëyQâˆÀQÍÛy;omÝ÷#?ŠNÍ~4????EQ³PfYDÖf± -±ÈT¤T¤y‘×±›ØÄ&2‘Ùš -ˆGOÒéŒM§3Ú‚8¦èÇVæQåQàc¢4MS.9’¾Lû ‚ ° ‚4 -â(ðm$1 |e˜1ž2†iÏxÂm¼(fƘ8H½0`Ì©oà ¼ Èü0ôƒ4Š£ ²6¢ ŸÅY‘ñ=á›@£üÐc<å%žï%‰Ë–˲YžfËÆQII3c’$S¬•eY–J)Õ4M]×êøƒV&ʤHT•I™å¹1f8M¦Ê¤Nê¤_˜2+³º¨Ë¬Ì2‘éÌÖY5YmjS&…*lÕY‘I¿^,²p`EæïÜ]ì.vÅ®¥¼ÎççG󣉥ùÝ»víÚ5??¿gïúd2X¨çŠIUÌŸ„óa8–YÔI÷¿Ë4Y“5YÕÙÑ/ãQ&I&:MÖ鬳®Më2e¶¼ÔÁ´žÖÓºLD–ÕÃáphcÊÅ¥p´4TeY–E­ÊrXšº,Š²\lTY„™Ê²$Ì2•$Yb³,ÎÒºQY–5å¨_—J%«³Q>W—ƒ²_–“¢®óÁ°nê².æšr¾O&ƒzVgYßϳ2ʲ0/ûY?K¢d1ÉÒÅŹù4ïg™Ÿ&B‰ñb&ýÄ,¯•Æ“•I¡ì;EƒÖÚù´æ¾Îi_ëã5»ÖsssùZ]7M=6º_çãfX›zÐÔ³ºh­“ÜÏó~žë<—²/Çyžç~_çý¦ßïûÊŸ«ë¦n†M—±ß¥Ý>HžæynóÁšï×kÃI]×ùü`²VûM®Îë…<_«ëáÚ,_3FÊzЯYîûý~®¥Y¯ëº®µÖz86M£ýc‘˺?è«&¯ûu>7çûþx< s]÷›~ÓÏ~×y3hê¼Îs™{yØäM>Ì¿ñëþ@‚&oòAÐÏFƒ<®ƒjÛ=ûûûƒ½Ó¹…¹……ÉâäDbº°oïÞ½{öŸ²ky¹5å`yÏs»-ÄñB\çM¿é×y×ù0æüɛ|«L‘}Y÷û¹ìtóNg“wmÖÔ}YçkÓá œ5³fÖÔ}™ç ãñx쇾_/M£ÉtI×u]]×ã¦6õ`P×£E]â\çE?ÎsÝïçý /’<[XÔyž/Ö“¬©µîo¬Mæʦ®ê¬®—M3W›aS7ƒr±^¨—g£åªYkò"³syE<7ŸçyÞOúKý"-• Y1ÏsÛïK-w,åq?ïûk;kß÷ý¼î´€3Î2`Œ‰ªjc(ƒ ®M`Lu,Œ©ëº:y8‡ÍŽ±)†ÕÊxÇpÇxØŒ‡' ‡1&¯‚ª*ªÊT•R…Z©ªª - -Sã¢(/¨‡Ãñp¼cÜe,º´Û©ŠªªÂª÷ÁpÏŽµápX-ͯíQ´s½i‚zX 'Uµg8ܱç¤jO(5œ/†¼ -‚¢¨Œ -ž0‡CcŒÙ±cÇx<6Á±¨Ô°h -o\ ‹aU×A¬¬¬4;*3,ÆŸ(›`X «q3VêR•_%ãj\í¨ÆÁ8iâq5®š¢)ãåùª?Œ›*:íŒæŒæŒ¦9}­×ãñêdõDb}|Æ駟~úx<>ó¬S66—ÇM³±£?’ÑÎtÜïûÃj\Œ‹a5¬†ÕŽjGµ£Wãjk*P…E¥:;ªNç¸êÚIãa¡†ÕžõMrÒø¤ñIãa¡ªj¼²²²$A0œ­¥«k+f8›±WÆ‹;ÆÃùf8\žšá|¿2UUô«ÊEUÄU•WƒñÔTU5® –†Æûö¬Ö KÃÅá`8Ü9¿´T/®ŒwŒ‡ãfa:œ ×7–w..íWÕ ª«aVUýzTVeUdŬ¨˳f2˜›”UÍʨYÕ/Ê"سAP ‹Æ(8穬µÉ|³{¢¢¨¿h#k›caíââbsêd²¼<­-ÛjÒì\^›¬-OFË“}“ÉÈZ;h¢¦©šÆ6çUÞΦiš¨²Mµ\UUìÇ‹“Éòdym¹ËXui·Ò”MÓ$Íh6;%Š&§¬íšL&ÍŽá®S'qšìÛ3E‹“f²Ò4§L&k§ìkN Ï› «‰h¢¨ªë§M&“ÉÄZk×ÖÖ–——mt,oR*¹™T“fq1Š¢;wŽÖ;©–«åªE“fÒ,–'ͤi¼&húËÍr³Ö,GËѤÙQºÜ,7£jTÍÏ6†M1IÇ£&9ëœÑ9£sF£³w/Îg³]+»N$öÌÎyÊSžò”ÙlvÞSŸ|òÉãõÙhtòZ±C%{óYQÌŠI³\-W“fÒLšµf­Yk–›åfë›Wy“ªj¼NçZÓé\nº¶oyRy“æ”=k£lßò¾å}Ë“ÊkšÙÎ;wFYM6vç»vï´“Ét2Z¶“ÉÎåñÚòd8šL6VídX4¶Y¨Š¦±UÕTýfaÐÔ³UÛ4Íêd×üòÄÚêI§îZ\ZžŒ'óÓÉÞáòòâxçòÚòdy´´:Y™ì9y}ïxùÔåfa>Yl&sMS,N›f¾©æªÕB½¾s´RW+óM“T•g½“7š¢jÊè”Ó§QEͤY.øÑÂ0ìGûf:Móq˜†áñº( ÇãñèɳÙúúlºk=lf£½ë»f»ÖgÓõÙi³Ù4 Ãz”ŽFÍhŽFÆ4fïh4¥M8jÖ›¦Iƒt<›­ÏÖw­w›.íöAFó£Ñ¨?œnlœ™¦+gîÚ¿²²2Z›ì?s%ͲÓN™NÓñÊheçhtæl¶ëÌÓFg&‰1+“f&GiÚ4£Ð$gÌf³Ù, Ãp×®]ëëëáñ­‘™5Ó&XÍšÙhÚzçf3kš‘étîu:×G];m}Ö˜ÙèÌSvMçN[?mý´õYcF£½{÷îMçÒt¶ç ƒ}O89œÍVfÓõp6Û»¾¼k}6™Îf{N -g“rŽFM9…M3jòÑR=ZÜ8)F'Íö/®Ï°9ðä}ãë³ÙlqeöÄÉúúx¶w}×úl}ºã¤ÙÆìÔÓvŸ6[òúhi1VªÑ¨¯ŽFÃQS5'7K {NÞ±saaçp4ÊšS÷ŒÊfÔ$gž½’¦i:š5ÓÐÀ%—ÆÇq1>yÃ˲ÁrœÅñôXÄñòòòô¼Ý»7VöïŽGÓ'îÞ¿±÷ÆÊî³66Vâ8^˜fÓéh:§SkGö‰Óétšâéh÷h4Ê¢lycc÷Æîý»»Œ£.íöA¦ÃétšïX9ùäs²lç9ûOß¹sçt×ìôswfssg±²’-ïœî_I‰Ï+”²}žòÁ'”ø¼%¾ŸÏk0œ³Ç“íñ<µ:[]îñx<ælƒ'»$;;Û¬3çû|%¾¡$Ùcv²Û_âäñxÒr½@­Ù쫪|>ŸghAU­Ïœž^3Úë5çû<¾aO­Ï'ÔÖxjSRÔj_A¶Oá1›³³=uÊDŸÏçó ƒ %%%óíäQû²½Ùº/ÛçÉÏ7›Íååå^Ácðe—d—dçzÍ>ÏSâ-ñy|ÚcôXK<%ÁSb.1û²½¯¥ÄSâñf{³s# <™>K‘ד>»ÉÛämòzçŒÊäUëþÒè@Scccc ˜»`fuuÑÈ’BoµéçÓÆÚv{Àîó”d—dû<>Ï#xà)ñ”xT:[íËÎö¨“x -ž$ž%žä«¦Ä—­öyjG ^[MIMIM‰/[íñÊËËËÍ6³ÙW6Ê^9ªÜàó ñyK >_yI‘Pâ+ðú|#‡|™ƒÇ“éñ²³=ÙO^–Ç(5x<žR_UN‰Ï`Èž6©2p‰¯Ø—3Ä7Ö[R’_\^"”øJ¼ƒ‡û†ùFW¨).™TâÉËIÏ÷øœOfþ\OŽ'Û™]–çYV8Ìí–ãñ¤»²Õõ˜2Ofvn¶¹¶nˆÙl6{|Ù^ƒzàaOçЀ)È¿æA€üúù€Í°œH,‘Êä -%¯Rk´:½ÁhJ1§¦¥[¬¶ {¦Ã™5(ÛåÎÉõäåx û†ø‡–† /FŒ,+¯¨¬5zLõØšqã'L¬4yÊÔiuÁé3f†fÍ®o€9Má¹óæ/XxÇ¢Åw6·´.YºlùŠ•«ÚîZ½¦}íÝë:î¹wý†›6oÙºmû};vîº÷žÎ½ìÛàà¡Ã>täèÃ{ô±ãŸxâɧ¨§Ÿyöd¤«ûÔsÏŸ>íé}áÅ—^>{î•W_;ÿúoþæ­·ûÎ…wß»ïÿîÒ¿ÿÃ?üè¿.üÉ•«@3‡àEX,`-Þ»±Ÿ˜É›ä-ò µ–ÚJm§¦Þ¥eôxz&=›¾?}Cú÷V5ÝšauZó­…Ö¡Ö€u¸µÜz·õQëãÖ§mŒMcÓÛ2lN›Ç6˶×v"ƒd°Ê u†.#%Ã’‘áΕѶ;o·9ÀA2ïÐ:ŒŽTG¦#Ç1Øp,r¬s¬wlvlwìq<ìxÚÑíèu¼è8ïø­ã=ÇGŽ/œ§àé¬w6:ç:ïø'éï+ÅÝø1’7È[äCj-µžÚNí ŽÑH+è‰ô,zWúºôשׂÁjµ:­ùV¯Õûcÿ û¶]·±Weè2LéØ×g4Ù‰·[ÿì'ÜÆ~—ã¨ãÉÛØ¿íxÏñ¡ã çÐÛ؇ ÿ‰ýýýè×ö w$”?H,H¸®DvbPüÇ?…>û6ɘ×6\ÛûéŒkë¯ýãÓ×V^;pm×5þÚÖkíŸ.¿ºðjÛµÞk;®ž¸úÀ•®|ìÿ¸øãÂó?Îþ8ãcóÇÚñòW—ÿvùÏ—?¿üÀå7.Ÿ½üòå3—_¿üØå“—+.¼<âræåŒË¶ËéÌË€Ð; dKÞwõäÉ{Îw¤¢ÿMÆ€üøï5¿j½@®k¥ÿ7Øûæsäôí|÷ÿFÁ1XÈýð|alƒá xxØŠ÷Âø¾…û`lF„ákxž„ïá;¸ÀÓðxž9л  Þ†0¼ oÁ»ð[x.À—0Þ‡÷à"< óà+¸>€ßÁ%˜¿ÁX àX ‹àN8 -ÍÐ --°–ÂrX+`%üVÁ]Ы¡ÖÀx°:à¯ðwèÁp¤Fþ ?ã~<€ñÄ!,r(‚~<ŒâCxâÃ(F JQ†à1胛ø(>†ÇñqÏà³x#Ø…Ýx -~„ßãV܆ÏáóxÏ`å¨ÀìE%ò¨B5\ƒOQƒZ|_Dêq;¾„/ãY<‡¯à«h@#œ„š0_ÃóhÆTLÃt|߀ÀOðü -hEfà›ø| ßÆßâ;xßE;f¢ø^Ä÷ñwx ?€^ÌÂA˜.¸Ÿãïáp>‚ÿ‚ËpþŸà×ø ~‹ãwø=ÞÀ>¼‰?â?ð'tã?ñgŒcs°ŸÁäs•CX æ)‘9Q%ቊ¨‰†hÑCtDy˜O ÄHL$…˜I*I#éÄB¬d;±‘ ,@/±c!É$â$YdÉ&.â†.è&[q0<§á5üNÁspîW`ü€_ˆÁ«ðìÆR؉#pÞ»q®„(®J%CýC|ƒ ½ùyžÜ·+{P–Ó‘iÏ°Y-éi©æ“Ñ ×i5j¯TÈeR‰Xı M„œ -{e½5â¬ÐNû¨Q¹9öJ{ƒ5âløEE}ÄÚ`Tþ&b­·Fœ ë¯!…kdî¿A -IHá6$òÖrs¬vkäB¹ÝÅéëìÖÈ}åö 5›Xg·FjÊíAk„vN¬³[#òr{ÐfËͱZ+ŒóË­¬·VD*WÌßZQ_ž›ƒ]RI™½,,ÉÍ.‰´Ì^&ÍÍH¥½¥ +‡c¤ÒÞÒE*+†vÉss*"cìå‘ÑöòÜkE„rT44E&L¬«(7ÛlÁÜœ–5ÚçDÀ>2¢tçæX+"PV_ž›ƒ¶,•…%¹9Ö¡!Û¬]9ç¶nò0§Þ-k²75̬‹P ÁÜœŠˆÊ©²—GªîºnÌ͉âñÉuqYar]Œé_×5z]yy0˜›Q—Õmú%¸™ÚZa\`TÙË·nÝdX÷ËV[¤ê®ëÁ 17'7§º¶ÎVQn¶Wl·F(GEm]¹Ùf ssИ—›cPŽŠÈh{yrÂa{…5B9êZ#bûHûü­ 묑”­¨m³u§Œzú¯Á˜ -ëÖÉuv[¤Ôl6”§viakmÛ©Ñ‚uô¯[rsºxUr¥»ÊŒLþËLøv[Xz <,ÍÍ©®½½ÔhPûèˆP±6Z#P[gÇ{„8ÂC`kã³Íf³Ù‚˜›S± ".«ßÊÍÍÁãàíÖ­?@ëí±¿ÿº¦a †uð?@ìï¹9ÖÖßf¹6ÜÊGÜîˆË•›®,–Iss†G\®Üœ¢Üœ‘j{ oTWX#0¡.‚ Á¡yÆÜ›MÖdoÚ`NnŽ-²nb]²l…9ænòÜÁ©ÏͱEÎÝjÑM™cî†u·Zn½ÞnËÍyt‘óöŸ’×k*æ þi'Û+ìÖ -kÍ8¶N¨s6lÝfvÖoÝ,ÏÍ©´WÖoÝZi·Vn­ßÚí_7Çnåí[»ª«·¶TÔßšR´ÿÜ6sDØœCss"…ÉÕˆhÊê(3 &sÄLÿïýõn3G*·#|ý|š›S=É^=qzµbký½j†$K¦×¹ H›½xù… –Ň'Xz‰êEÐmy«>*‚nËìúÙ" X‰ò°Ž`+œÄV8‹­p[ákl…~l[ÇV˜­p7¶ÂÎH[aüÀw)’*äß,¶äßnN¸ÙrsÝÍ]7Þ­¬M°E©§Îê…¢h;%è÷ÖGÉÁnËæ¶(Öt[Ö'û¸'Yº+4BL‚V%q‡eXÊ î¶´†¢È -â¡ú–Ð_ëç·E±æŒenè·¾1Å‘§ªô³ëGȘÁ`Á!È  „ÕLJAÕÝÁy–zÓ¨\=i(‚¡ G6‘ƒ`A¦‘Ð z¤a™wf£þ›à KluOÊ?˜ÁÝú¿oê‘í%©þÍàËsÁÉ–ÎiQr°Û²gZ”‚SëÛ“ÅÅ«£ä`·eÑ´(9(è-MA—eæ´Ä}%UIW2STb•x× ø>p° ›…aÜ®w¸]ǹ]k¹]anW·k*·k -—)ÊYEé¢TQŠÈ(Ò‹´"µˆ)D2‘D$±"ZDD Œh¨jR=i$VGÎ5Bõk¤o’=Š’‰Ó#Œ}$FÔÕP=y¤12Ä]AmÄ箎pfÔu!îFÈæ(Âäº(šºwl0GÔeu=€˜±á>s öo¸/½û¿'ãíVOhë Öžæ,ßq–œÛí®žÔÖ»°ö4·ë;n×ÎívÓ"TOª‹<™Œx«'ÕEúÓ‚Õ‘æIÖ™u=ø#öU”÷àMì«(ÖõÀ+jëzðGåÁ`u¥“¬3ëz oV”÷@Þ¬(Öõ0^¨¯¨­ëzÆ›„«IÂ…ðÇŠò˜‡?V”ëzX€PEm]„Ødäà$ë̺®Žyå]óæU”ëzd#¡£¢¶®:d#˃Áê(38‰[)„*Ê»B¡Šò`]á3,­¨­ëÁRÃgåÁ TGŠ'YgÖuM›VQÞœVQ¬ëúaZEm]×´ʃÁêȘ5¯žVQ¬ëÁZ˜VQ[×Ó°¶<¬ŽœýȦ$Õ| „j.±¥:ŠßOªë®´UVl+VG©/'ÕuW6TVl+v·ÕWVÌ·WÔ—ÿï`óBÿ°^èÀR€„ÿ@x7þ§ÊÿžÂ#OÍzwÛÑŠ°½¢Þ^®·WÔG¶­˜oŒ¬›cµvm{wÀrtÖÏiœoPΆpä]{¸<²Í^níšuô?4µ‡Ë#³ìå]p´br]×Q!\Þ=K˜Uao(žš³±ùÀ¯ÆÚr{¬æÿ¡³öpy¤Ù^níšsà?4°‡Ë#sìå]p br]×!\Þ=G˜Sao(bÅ‚I#±zB]—FËf&¯§ˆT¢.««7Û‚#õ|Ëðˆº¬®§Äf\kî¥O€ÔŒÈì##rûȈº¬®'wDîs/ 4€ÔŒ(ì##Ê&ãÚ›¹O 4ñö‘•}$,<ÌZºtÖҥ˖ݺ.¿•f-åv/ŸµtV2·té²e¸|ÙÒ_ÿÍZ:kù²¥îåË–.Mv!ó£DV1?"l«Xíå¶b~”È*2ìåK˜^01½Â<&Ú F€þ/úÿ ÐÿebAÿŸ™^0%ôÿ™üÜÿó -¨É'ý_1½ îÿ€¼ êÿKÜ„ZD-ÓûŸ!ð¯pxÿg˜B8ÏÀ(˜ k`tÀQ8‚„E°.àXûংfB'œèŠ  Ö€¤°AL„NxöÀqè„Dÿg°Nô‚}ý-ýÛàœèRa -Ü÷ ¤ÀlØp•TJ¤ÿ,¸a-l‡ýÐÓÿh4 …Fèï)å¤~*a,̇;áxŽÃ“p^êÿÐÃ(˜ {p aÈ«ý߀Ò`TÂd˜ûàœ†s¸ÕÝ¿ D hÀ0ÖÃ#ðq îÄ7ñø5q—éqýý ^˜‹àNX÷ÂØ à1ˆ@¼×ásø'àëøzmÿ°þqýs€hÀ¹àLy°¶Áƒp ÎÂ5DÌÀ<œ‰‹ð)|/S¥§ÖQÛ©½Ôg´‘Ž'¾ï7÷é·ÿC@ @4`€Lnȃ|ðÁ(…*¨†Z¨ƒ™0 æÂBXKa ´ÃZXëa#ì€]Ð Â8 -Gá8O“ð$ô@ô ð:|Ã÷Ð"T£ÀJœŠSq&.Á؆q3Þ‡;q?>§ñ4¾‚ïáeÂŽ¨‰ '¯“OÉŸ(žrSj:õ-­¦Çчé?p÷$&%M¼ÕßD 5˜ÁC¡j¡¦BÌ„F˜óa,‚åЛ`3l­°vB'< Çà< ÏÁsp.ÀÁçð7ˆcfaº°‹±+±Çádœ‚3ñ\„ð>Žoâøþ û°ÿIˆ‰y î“CF’ -RMjÈt2‹´¥ä²—ì#GÉ×äùRRF*ƒòPUEUQ ÔTÕA½Bó´Žn¢Ãôz:Bÿ¦œ©e‚ÌIæVÂÊX;˜Äîd¿Ùa/…Î_KYˆ'ñÜ€àoð*y FA\€éÐëqÄ©ù°;qybÕOõ“ÓpÊ'7€ÐuKíÅÏáY˜D¥Róªù†¤0&j/ý{œG~K‹0ÏáXÈx-„³x/i¦†Ò2ÚO·Ó/2yL3s‚y‡ùŠ5³w±ç¸ÁÜŸDãE_ˆïŸ—l–æJ¤ÏJûd™²Å²¿*LŠcÊ Ê?óóøS|Bu@u]®Þ¤‘jm–¶Cûƒ®Q÷³þ°a¥áœ1Ëø¤élJ(å5³Ù<Á¼ÖüJª>Õ›Z“¦MëJ÷¦¿niyÞºÃúw[Žm}†Î[?8ÿŸ{ÅÞjoá_?RTT4£hCÑOÅ;¡¾O‡x‡<0ä'ÿCC5CŸ-I-™R²­¤?°#ðÅ°ÎágJ;“0KØ$\qïÈ”‘Í#/•ùË––m);Rö|ù¤Š²ŠÙwU|Y9¾r{åëU¢*gÕðª©U[F µpÔ£³GïcS;æåê«¿+›>¶xìرsÆ®»kìñ±/ŽýÝØ?MÔhk\5ójöÕ|7N1næ¸Uã>¯_3~íøg&è'¬œpß„G&D'\˜¨˜øtíäÚ…µëjû&uNz~²aò¬É/N4¥tÊ´)ÍSÞr}ÊOSù©ö©ES«§6L]9õ¾iæ͘Ö:mÓ´§E¦½6í£ißNûG¬ÎRWTW]×P·²n[Ý‘ºîº×ê>ªû:ÈÍÁÂ`u°!¸"¸=øpðLðàÕà·Ó¹éæé…Ó«§7N_=ýþéǧ¿8ýýé‰[fÂÌù3¿ Í™EÏZ:ëÀljvMýÄúÖúûë»ê/Ö÷7x Ëžhør™“>§lÎü9+欟Ó9çÑ9ÏÍ9?çsþ:'ÞÈ7j 4Nh 7ÞÕØÙøDãÙÆÿjüª‰nJo*lÕ4§©­iOÓsMï4}æ¶ðÐðŒðòð}ágÃÃßϵÍÍ›;lÓæ6Í3ÏoYpbÁó ^]ðÞ‚OümÁ?f-,_¸jáõ;ŠïxäŽÏ9…=¾èÒ¢ïg,ž´xþâŽÅ{Z|ìÎÅw~vçÍf¦ÙÜìk5/mÞÒ|¤ùùæß6Ú|³EÞboñ·Œo ·¬n¹¿åñ–—Z.¶|ÙoÕ´¶¶¾ÕzµõÆÉË’¢%c–Ì\rç’õK¾ZŠKµK/]·tÏÒãK{–Y–­_vpYdÙË>^öõr\nXž»|ýò¿,ï_¡[á^1bÅ´‹W¬[±gÅ+ήøýŠ¿­ÌX9~劕ÛW>²2ºòÝ•Ÿ­üq•bU檡«jW-\µnÕ«^_õQÛ®¶+m‰»Òï~׬»î¹ëù».¯V­Î^]µzîê«®~nõ…Õ_¬þjußšqk¦®™µfîš;׬Xó›5×|Ø®j7µi¯m?ÖþTû©öÖj×®X»cíñµ/®}í—k¾[÷Ž»¿ZW¹®s]¼ƒé˜ÕÑs¹GrÏÚ{6ÞóŽe÷¶ß[?~ýgëÿ±Aµ!kð “6ܱáã ßm\¶qÍÆõo|t“zSû¦ßoúÛfÜ\²¹ló¡ÍÇ6?µ¹osbËç[·o½´õ/Ûæn{b[׶žm¯l{kÛûÛ>ÚöéöÒí¯nû>ê¾Q÷m¼ïâûŽ¢;ÙwÜùÈ.Û®}»ÎÜÏݯ¼ÿÛÝ[w_Úý—=á=Ov¦t†:Ã{;ì|¬óOÛÛ¹÷ðÞ ¤<zàèÞû„}Ïï·îß¼ÿèÍì<|à‰çüæ`öÁŽƒŸì;$;4êЇ8ôèᑇ›Ÿ}0çÁ‰~ôн=ðнøл} -r°‹ €³ åF`(1 "þø?\€¼Â y -ò U6•Ã¦²åà†Ä“8(ñ!ÿ„"ú(N¬fz1Ì$-R5±J™(®`% Ч:E.aE÷pâ{8`yö,{Ž½È^c¿a¹ìQ6žcé],²Jø¾%­¡@Œñ7|ŒùýPZ ñ±‚| i(U¡JŠE…ºWrϸ6>‹(1V$^øùf¢ó 0–:E¦Â*A)á8šF òÒ(.‹Å"E²Ž%󕜅#Ünz¾€°ÏáEdfc3Þ;ñ^D{0d|_k(ÞŠ©Ô~¿Jí÷Ci€ð>à|@¥öçø(È×PE…:ª**ÔQ˳O8žÏ:1ˆ:…†o¾Iü%ù ”ý_R;™K` ¦wšS:A¢1MiAÌ°*‹8ÄRŽ7Kdo”+9Þ P³*ƒBCi -=Ñ&¢3ÊSˆÎ,I¥´fI¥5ÊÓY•QnaUf‰Älž b-€Xa0Ì5ʵF£\Åvò\yA§PÈ創T§Š ˆD‘”f³Ñh0€ÔöŠJÇÅ D åsFh1‹£Dù<è^0´£(yÎÜBÎCóNYÞmtó}×ã}ñëüu>Æ_ç¯ó>pýÖ:ݘš -Ä·Šx`ãq·óç7yŒîvþü¿ÿ¯‚| 4ö¢B½¨PSHÙ4…T¡ÎNêì”]c£46­¶jë±a×~µzRUkFí||ØõxÕšªD¢ªÉ°D„OîÅ;öâ3‰IøLbÒÞÄÞ½‰©ødb*)Å;(ð÷çRSØ0äéÓÒ‹ò²i²=1‚'==J¬‚¥H¢-*’H¤²t³³è‰¢ž¢óEtQQ¶ØW¦`JÝz6Š[NiÒÞÏŽ"-ˆõŠƒLÃ݃¢øP7扣H Ú¬÷QŽb‰'[“•W”ž¦—étƒ¢¸U°j ÇÜ›’âí°dæeÖgF2/f^Ëd!ÓšI2£$CÈ`zY6§CPNP¶(×)w)™sÊ‹ÊkÊo”4¯<¢¼ª¤”=ÄÅ|ß’ÖPÌŸ·†âþ¼˜ÊŸ -ÄjƒJoÄü]/ įó?øxèºJíÏ ü›<îvþ<¥àE ðÉK  BL‘‡dùÒÑ rfy°hðpôêÒ‰sf©ô†t¢Ó²œŽR NkРǢÁÎ,<²jëLÑ^ÍÒê9õ˜ɛ[êBwOUì7í §lð¿ÝY79ÜS7ié”ÖKÏi^ܘñÈ^1¦¯ô¥Ò@A>†ÐIT<²ÔñÜ|çóh_Ø2¥ /1ñiü-ø~ô·D<ñöƒ k€0,1ßf. ʽ‰d"âT€Q -ˆœd=%JA~Ž»È‘sÜEîGq=˜ r¾/Ôz#Æø»=¾Æ®V –`V!¨xòø -&·,Dû³‰‰ø)^{‹‘ú["+‘’øKB €à¥Éæá>A%¢P§Q)õj…An”IyíË)² Ä}Bƒr^)¡¥¬Vg@µˆ’~(úÛHýN´’ù€+äƒë`…sp®4yùh€“JíÏ µÞˆ}ÿüºJíW© ~•Úà‡Ò¾@žƒo€lu@`´tù†[ƒjâ>–ÂǽPšKùÙ__XT¨Ó²\Öpôí?QY–ë!.¬Ü”Ycœ= ¡£øY ä ©S@~HRg´À.`“4¡ ³æûB­1È Äùš"›®_ÇèóÏÂ!,ƒ @A®`&M ù˜Ò¿ÆJcIü¸pú¿ÄKÌ% `˜‚s)¢¥(B)…4Ãàh:ŠÓ»Öݦqüuþ •Úïci 4°‰©ÐS:,Dœ¹2qÌÄüý'-²þ/©IÌ9æ -†¡"};Åðí¹¦ƒ“"ï€Ñ¦û“:16Žï«‰Ai¬4V_Ö&ä ‘q¨Äš0*¥ò0èhM DµˆƒBƇAËêÃhD}ÿ¥Å:4¼ºÐkЫxbÏ ^_è-VñN{[öæ«O7®z㵧/ïÛrGxó–ÅM›È%lÅ5{ó÷'îÅ x8qèû>œƒs¿ë„çH3s$0ûÔÉKø4ˆÅÁW©DÌÊÄÂ2Q|¼%ÅR'€ù(` Òq´´çc;ÝãøœÒP©ýP( ÄcIWÅfW)+Ž¾BÒÜYøô¨»^pÖÓ«íÖg+ß®@È j˜s`†û„SÙ…òÕò-†=£™ KKÍŠ¸2ŠaA.mW3`Ž!‘‰:tQ¼[ÐØ4E¯òÌ.óQsÄLÕ›[ÌëÌ”9J$Ï“Ñ©·) -݈ãûjnÄ 4”Æâ×Ujƒ¿ ¿¬MPh´b‰D# -£X+ £ÝÂCgsª}·uOÖp,ôêuZÂ)£j~þœÚÐõÞº{ëç­ßÏ¿÷Dô¥Î÷ÖןyfÒ]ï~ÚÐrßþšK¿ÿñ¡í‰þ?lšSåý_PÓ˜s Ÿ iMºåd™î ¡+É4ÒD¨1"+/k‹³RôqC§5í) Æ!Š§?Õž%—‘J3ïx/íjÚ×iýi´2m|IKc;Îf¾—y5“²dÎÎ$™cÜú^Ãì…Ѯۓ¿Ç÷-i­‰ùó4üu(ů'WÁŸGUr%ŠÌN…še8µ™#ídÃ(²±a”[ø0ªR5adT8»8Œ6eº, +ðwà_¶VGG†BŸ:iCÙ38Ÿa Çr·‘åÒ‰NKìÎòNÏ áÎÍ®á*ÃâÍKj§,ç÷¤žß¶ûiãFÍúÕñƒÀ{‰kOm^wXûÙØ2¯ýÞ ÖÏ}øhÓÁí̃³ßNô_   &1½ 9<$ˆ%4+#´L.¢_0S´–¢hMqò˜ˆ†f$ “8Ñ È,=%ŠDñœP(¶úwÂYèÊyP -³¡î†pN‚X ȃÙpÎÂ{pD -µ?oIkhVhÖˆnÔ~URüyxÀ¯òob<îMíç ò1dSÙŠ°PU¨³«(’ÔøMâXuìXgb3Î~Œ:ýó˜Çšìßeý_RõÌqHƒwÝRrÙ”Jù4•d*i"´]¤Öh¢8\0+”Z…F«Pj$r-i×éÌ*uŒWÒø>Dñôº]0ËÕh¢X%Vÿ×a1Î6’³Æ÷ŒW”qŒEÅû™¼Wq{atú/¸çú8¾¯uIMìF ÅÄǯƒ±4%¿^ˆÔþ¼˜ÚïWû7‰+ mV,"[í´-Œ&bæésÃh€4‰9 R·"7ŒrpÜÛç/Uü—Äré˜ôL‹k~Iæ_äÑœñúÞÞ¬ .^þ§Oþ©mü’I—,Ÿ0aiÁýá¹;vÏ ßG™ím~üwxbážl÷¹çoÞ|kÏYœ´hÝÚ¦y÷®ûùŸ›;ºqÓcX6Ódè!£‰,#÷Ý„¶ -i¥Hd‘¶;&K»ŠÁ÷ø¤=Oµ›ä¢Ô(V -JÝ˜ì¤ )~!@Iõ÷Ci,ºž\å霖)3Ò¬ÁÉ84ŽLYFh#Ætuj­|FìrGX=†4­%Œ6¥åWòó K²ÄŽ(Öž¢’Ô(Öv£Xô/Òøô…Þbõ0T =ƒ VzõjOX{†L}¡·8¸#ãø˜¶ÉžÃ÷üþ“‡Z^]¸äµ¶-QR½}Æì½;çlÆIüŸÃHžÎ ÎG¼úŠ;×ß&~—è>ø5äÁçÎÝõÔÓ$iÁÒN €ƒ2!‹m¢©&di ¡(–›ÏÐô¿Ù³¢_س| &ð>¥¥1>V¯)*ÔQE…ºC'Nœ ‚.üüø… $iãÓN @s±”–PM²’(J…œul“@K¤’7¸uŠ•Üÿ4´ò? ã·mÿ¿—¦ÄTjÿ¿Ð¸íœpnátË@˜ŸQ+è×€…¤)j/A-!4ÃìeA˲€ŸÃç´•zS Wè+VæM–eŠ"cDô=£¹ÿ'PÇ÷%W#¯&–bŠÇSŒ±‹mòÝ›ÚÏ\ -ò5E¨£n:•ßBV’ŽxðTâ|â•S@`&>L­ Y €ƒÂç(²0Š“ Ç.¦A†ƒ1bG‹nÊ÷ /¨‰úñ@A>ÚŠl*[‘ZñóTÊÏ_P)Ô¬ñC'àWs' Š½ZD`)šÞË°Z†aásösÊJ¿)0W¨+Vò&R÷°0FÄÐ4!ø¯¹ò>À÷jb÷¿ÎTŒEb,BjÅÏ×ÉÊø*•t$Na)N%æ*j\2¶{Û2ùãÓAv¿jŸ‰ñÓ™iò&ù\c³Šåô"ÅNeϾqèwÒpéÓ“õGW4.Ý‘Øwá&&² ™ßƒãð¡< ,Ú…íÂ>ùƒÂªg„§+_z*¥l–>«*kZ½M¤RóšªQ£´xf(µJTR©5\µÞ³ÈE©Ÿ¾¨˜ª^$åx%›-Ñ/^¾ˆzr¸¤jTòç…"€”Ùo¸.¥4¶ ]7” ’L!Í;b=÷›ŒF«7ß+xë½tÄ{Íû—òŽ?cË€óTï‹ññPÒÄÈ3ø¡ôFŒ•–Jc¥1þFL¥6ø7)’6&ã~ÒØÊ;ndYÞ0ƒƒ–0Ž!ŽT§Õ1Ø™éÌwœFGCì,£G‡4_Ê;h)ʈbó)päeD±Y0‚aXÊq+qF²åÇÁìOm…éQl>…ög›)˜JôÇaœ¨úø­°ê¿y­££cÀgR =#ËY4X]\èÕ|…ÔÀžª.L2í4QiÕt¡7ÓW¨@ÚnÍ$*^Yè¥Õ:žcíNÔê ½·8‚P§‡nð¯ªmÜñj¨üžI|ð§s1¼ußò·l¸@út#Ó (à}¡adQõü&ÅãŠ3Š‹<ü&Å%9µ€, ÚHE³"LjÅ4#–Ñb#’±¬H&ãDȉiò¨ ‰e7P €DFÓ³“A -™ˆ aØ XÅ·ž8š¦(!„æ©—ñ<Èð…?½=!YßûÚ‡š .¦÷§J|1QN¦ã/,¿okhÓ <¤Â ¸, "‹ÕYjUpР“Yg³HV˜SƒIzZ‘8m3´·Œ—«LÕËÖÉŽÊÎÉXY”ä -úìÔ´zL†¾:™¡ wC6ß× -ÄüP(~#¦ö']ú¤; -ðñ€I¥öç%¥C œ:½VOXÚar*œ¶ kaNÈ°–J¡ kÑ¢´¯E§Ä¾–Òsêµ 22浘!O_ ™Ò¬µ( ¸ÝîÀË»Ün·«£Peó¦ã-ËLv´y}ñh°ݨº·ÛÖàk[ŽÎ­›° mñé#‰ß#=×=¼lXøÞoÑݘW^U¾tuâ¯Lï”ç‡)pžÙ¸á­T­B×8eü‚Aÿ<ªNY9}ÒÒ"@˜Ðÿ%½’¹f¸(”›RJÓF‘QŠ1ªjsb†j³ê9¨:rØüy"å3ŸE)rT³ QTEæ§Tb·HÙÏ¢^-£°Ÿ„(¾"8L«i1Ry N&O{[pÅsÈ•âl$<" b‚\ßvQ„ù¢ ¢%ê!RHåû–´Æâ¡%­¡ØØ-‹n`«O×)ëÐ:$N#£oTßÎÔ:±ºo³: „!4°´=ÃIŠ«3 ½zGì,ÑñêBo1õÇ£E‰›/?Û·É‘gòžðíªÈ‚"÷¼DHÁÍïáü¾ÃñO}ô»\ô®NüüfâRâRX @×3½ <.¸¬fô‹Œ¦ A¢e Ò´%'óµˆQ¾h‚¨^Ô"Ú%bEQ4©`’£¼þ6ãñ`(+L=¸R’‡‡>ÀÇ[C±Û¼—ŒìQ‰S¥æÕ„e9†£9ŠÕiõZÂ*¥š4PšT‹  åŒKár¹Ü*TÙ¼†tTë´„µ;lÞb_qÑ`g–ÓkñÈÁ NÝýyO"†pè¨Ûß6[Øö3Ók¶÷&>õ‰Çî&ܲ÷âÕ~w l Y¦¤°PÈb™ wRtVDD" è A"¥ â؃9&¤õÒo¤”4ŠWÐâ[Gñð „Ü ²ä­ñŸnn~-oñ@A~2|o Âñ¡ä@|ùŒé}&QútBþ Ü@E™^Ã"!•e‚ÜNÑIÑYu31ˆ8+‹ló õùš³I—Z Å(®àðð5«¨I~EŒÀP`Àïü˜ÝG¹ãËÈàø;Lï3‰¡ÏÄç „ú¿¤Ÿg.A¼&¤Õ©fè6k÷kOhŸÐýFËeëüºÑ:ªTd£ DÑ"˜1˜À*ÔýšO «TújVŒfÍIu3 É°ÕSODIj·¹MÒC¤`çûb7B>àûb*µ?/Œ!\W©ýyøõÛnfŽÑJËE“Cæ´0¶µHSV[gn£ÜÜV:}-¤ŠÓ EjhÀ¤æ|àâTäP)О‘9 Péhà<¿)ŸŠD1¾ü§õ‘Äß~ÙSëßXgÝ™V·kú½/-í{}ÖëCIéÓ¿¶dikcß`Ósž{0ÍêÊ»7^IüWâòôᨄ:Ÿé)ÌìVy©œÐTP,‘ 'I¥ b†$,ÇpõVŠ¢Ø*h€HQúKÁºÍ]¼ŠøÀÀ]ÉOµ?y0€¡BU¡Ê¦*TÙU6UÇÒzäH|'Ó?N¦ÿTINÅká(–2½@Á ¡ÜÊ´0ë˜]ÌQæs‘¹Æ|ÈyF`ABˆPIV'V¸u@Äðp"pèØ€¡Uɨ^(Ü:ãj ª -UG0½?U äöI^ezA »„Üd#y€¿‘\ Xüzir¿Q3 -NÄŠË(ÄkQ$§×‚Ý®_Æ×|ÅEªBÏÚ3²œ¹;Ù™ýÓ”º#]?XÄ£ÆkJóG¬§¾ûÙ”øîJÓ@X@ÏbzA -¿ÖdKVÒ+™6É>**aEâ%$U2SB®É‘e9±D,’0b‘X"z‹cµÇÒ5[Âh%F"f)ZÊÐ4!R‘ˆIÄ"–¡)NÊs;¹_þzL¤äò¸ñÜNîìÀÉDn6w„£¸(µŒHëÑG€üÒñ}¡%x€¿¾¤5¤2$o0( ðµÁ¿)i$oòÝ¢vþ<'â¢@A>†`I’xX(F;rª5GÈ”Qþ.1ùu¦7žMþöçýä‹¿&h@X@Ícz±‚ MÕÓ»hBGñ’`[<ô ûDHòÑ-UÁÞÞ8c¡äžY_¨*TÙt«Ž LïOß?€Ð@ÿÈô‚· /ó´Eš¦˜@Ï–ÎVì¢H(.Ò—¥R––I%Šè«Ò« -VI[( M‘V| ý@vY~YÁ‘s´L*/'UÔ(¶\Z!O•ÖɾVõ«hŽÓÇ«œd5ˆË’“!\%ÅMãäaé|Å*²BºJÁP2‰\'K‘—ªf«fÕNÕÕYÕ{*Ùz²…Û(ý€ú¹Ì²Ôa¶SºKvD~HÁš8­T'K‘›Ó¹ÉÒ Bí#´\fUÈå­4ÑÒ4‘Êd­4§¥iN!¥)%GˆR.—É$""Wr2Z$®—ò’Ù’’#’“f§%Ql”<ýÿ({óð¨êëøœïÝï{çÞÙg²Íd’™$²MFFæ"ˆY‚Í…Pˆ¢f* l;ÁࢠˆŠ–‚ 8‰µP¥.U+­[[ýµ©Úe*ý5¥U˜ÉûÇ„Pß_ßç}xž@fÎs¹ßýœóùœÏw½™ÞI慄Í4Ò)\¤ëȪ= -ßœëö]pŠ0=¹ýDUOçÖ¬w0i &¸'·ÅL -Cnk±¹cÝLU„^«ïfª<z­z¹9ûÓæ?™µ:ûÝdúí3 ôgüãYÃôƒÝú$Š²ð“¨KùÛ¨ûø“ÔoxÞAåñ-Ôžn¢¦ðÏŠ!"—(žPÔŽwpOñ4!ÇN`Xšm§R˜ÔmÀ £f›zîø3çW&Wã&Ó&źG 0º’Q-ŠZT ¢¶v7YõÈîÌ]Lÿ™ôúï&ÓÎl Ð:ô}’ùȇõºÿ%í%{ʛʣ/á}·P”íIp®V9äþe]mµ"ô -ÔÓF:cŒB51Ÿ)u»<. -!¹ÔK;¢]t.DÍb]yĺ\¬o!:xÛBPÛBÈGßÂщ¼ŠÈF0ì* ‡ƒ8dWmÑ:›V®Â`1iÅ©§w"»mëî쿳§Ÿì}ê›ç÷§/¬~¥óÅ?‘_àÍØûbvo:Ûÿîï¿þ†²Ï~ˆUXúʃ]we? ðCÚÍôƒ\УËyQš§È28]ó ðÚjkç6p»¸o8¦†C.E -õmêå‘î Ö\õÕ ÿ74öÊîýóKÙ·VÍc¯ göÃì§ÙßeO†ÇyÀFzÓ.ðÃGzt’´ÏF*yIÒ¬ÖŠäPI<{žÓép(Eþy ¸\V«Â B¾ËºGIὺ3u ÛÂv²XX?«³í,ͦð Ý ~—9oNå<ê–ܺ œ7cÌœÏÈædÎá(¶›©òD”µêq¬‚*3¤-ôR¼¯”.õòùë°Ê_‡yœgðBS´#j.\ݘ‹+ÌXÕåv¹íAªŠDЋ\Š%°‘8ŸÙ¹dßž‰ÁKõæ.cÁ¼–Îé\9釲›˜þËŽ®{ú—ùeå—/Í&±öЭ‘ÌT´qåôÖ´¡/i9 c°ROB5 -Š ±!ªZÂu(ÞŽ‚%cØjžwÎêê’i¢š$Lai ð–,9dYzQ§¤çdÒ+á - r)Åä‘VIwK;¥½RŸÄ²Òdé×å’P’Ĉû¬G÷³zÞóO -—É»ÅNÁYL ;ä,‡©¡cGlŽq*"¦ð¨~!sKD¸K½#LV«7†I@.•h¾Ð³ÈV7º·‡W«¼Î·óÇøS<¼Êëü þϨ|'Oø~ ‹…«Õí¸_sÏ«RO'ÓƒéÁ®¤‘LiÍæŽ$Ò#H¤3Fd ç3š_Æ0K®¶ Ã0 4’ö¦B5Ww¸Š4Ô7æüt4 n.·ËË+ô‡,­/ºÿ±ØŠ£Ïõ´|ùÚoÝ@o³ôÞÞ}}ý‘ƒS®ï¼éíÍŸgÿ…©«»/»ç† Ç­[òØ¢ƒ¿¿æõ;”Íw¯nŸW[[W[2ö¥õëÞ[Ž„ -êL?pp½>¬n:…]Íy4E8à™_°äÈrÈ™€é§€õC ÜÇà0=pˆÐ»€Ä^³Åªç󻌜?? Œ €h$Z !à hx$»’êËv1ò¾}ßý6}EG™~°C·^ªÒª¢Ú[_ÒÕZ¤%œT)’$õV@¤ÝžÂ¤n7ýhU@S¶à”@ }ø8ÔÓFÒŒ'rÞr"GGŸ¸Z÷Q6:¤„4ƾ­œe!Ø(u!ȼºr[ÓF4ÀÀ¨æ l°˜x1ª9 -1ZרQ½»f¶÷oéãï»ú¹mLÿÙ>Ì~ó8æã2jæÙƒo4Ž¡  MÂûz,ª…´XÚ-=–ý–Ï-L7u'÷<,Ò,%p“©fî}úw,«ÒE,I ]©ûý€¸€0BQðŒƒçç A¤p»nuxŽåiŠˆýØ €Ý‡?¿_Rxü0ã'{tLáq]ñ·3Ÿ3DeZ˜c ÅôáÏAòªƒI×Fp…sYCŸšë®óéìJF2€Qt¹›0Šøi¶êG+ÉË/Á‹ŸÌV0ýg>ºuåê›éòï&‚€ 0ýàÂ÷ôWi7»º…n¥Ûú0ÿ°ò°õYvðŒòŒõ%å%ëwðOUõ{š´±®K´).Ý3WX¦-u¶{nVz<–{´M®ÏØ„âo´Ïl8Oº•8†gFä5/¸ÔÏÅB7»hy€~”ÝÁ=ÀozÄ–GµGm[[]Ë°Ò æ„D«Œ*]Æ\&=À< í´s©!Mpù¿´s¼?5d׫%MõóvMKJ¼C’xuäàì.W’á Ã%54¨ÓãˆjwŒ#Í6î&r£BìC¹¬ŠÂóG—¦©*ð@s1¼fWT¿U+ZSØ~Ä¿_:&)…m‡÷ÛÙ‰=…mº¨û™N†¨ 2)l׋ýCˆ °÷ãÒVœ‰ p'ž@FP±I w»S·«ƒóù]IÃçÍ$ Ÿ'cd Ÿ74b1Óû•ÎU˜‘HdÔpçÒÄç~‹D"µ5ЕĮdÒ0µ»ÜyµÛÜMö(©0ËQ8'û³Ý/¸ÿxìG‰"wÉ+»²G¶eCšmˆé?›ØúZ©ße|Ù¿ÿ{óêÇßM¦µO;³;·^æ0ý`‡¯ô»Â¦Ëù2©L ÛjœK¥›¥NgSzEša%‹$Z(DPU»U‘eÂs,$É¢ª²f³ÛET%–BY^`¡ %ˆvû³úCŠ"Ä.Ë 𦩰GÜn¡öí ïé´ôXˆåì{ ‹Áa:>ê`ZLÛܱó2ç'ÔÁÄgÔãÇùãüñn^=>ÌŠŽç>ˆ+ÇÍ:4¢Fí.wc“=*`Ca–CßÏ.y峉á±ÿøQöJ|ãxö}o^¹–ý9K~š½s¥>cÞž™~ö["U6¶fÉí5èÕcíJ²KyO¡k¤Xv²V`)a(9DQ’X¤ × àY …=b -—’¨=$…KuJ´´Ï„ϬôBö™|߮ܮªæx0Ã93˜âתǻù*OŽ„I# ´5ü [ûê_'74ÌøS_ÖO®£¦g'ßvãŠÜöP¦J¨O™~°À-úø¥EéT(šÅH;iyš™Ç±DçY€G EVå‘ßÝ)õH¤­J5Ò%½Ë¦°Fj€œ„>R`¾ÿÚOÆH$µXlfp>5+Ú€M†€¹€³„,Ó/Ì´SFf~3z‘zþÓöí;Ë-Ý€pc¶_fúƒKôr–Eo%¨²ÌVlä )̉*úñÒEˆØÌß·ÞJøt5y43€v-à jQç8ùСl7ëÁo?yð<ëx=à$ßã±vRSÒ‰Íô†[Gñ•Lbø¨Æ1ElË>u3¶™4V„’l^Ãô õIH(šÙʱ*E¶Ú8ØASu¦…éa(`Ôó²i<0*ãgj˜ÍÌ.æsŒá™fþŠÛrpf×ôA3i6ÜÀX¬¶ Q-ØÀk²ýâälǃløA„1ä ùš9 ,lÒ  °‰‘P,ì¤)MS,@&…v]¢tŠ ¤ºe`QÖ‹ü›ñžÀSH›nBðò*"öa9pêis{L:î2šû?À±Ú»‰€‹oÆâ­o“ƒTàìç¤php¨ýCK€‚B]Aø’P8•áŽP¿„êøôL¼¶† 8êå³o_€ÐL?‡k™WŸnÑÉ' M¶oî 2Á ‡rn)rT;ŽÏ´cP›ëáü±r.%Öøýu…5A •W(Ÿ)4TØ @ ´C'œ€/€…]ekœ=åK[X´²XÂöjÕÓ]Fz0­fŒdújÜÓl±ê4$Ò‰øqÎHÉÁ´¡å@6ož¢ZCªWnE_žâÓZ1‚jÜ a’4aåPCýxljL`}ø]  ÐárCË)Ä™CÉSSw͹óÉi›îxñr 7u-]âÙRôÊ»v”Ûó·»í³vSËçÏž¹Q¿múŒ§îi»¿Åî+©º®Ro½ÑóüŽ¥ÕCëý˜§»”<Ë/åiNsÈŸËq(ºæ*’f£) -¼K¥ñéa¤V£fhëÁ]x 7a%u$*"ö ŠÔÓFW2WÔLÚ,NH'é„Ëqt}î<^Jݲ·óxo+z,®Vð‰ù­8\PÍ—¯ÖÕ‚B†-dò;˜ÖÖ =ƒj¾|µ®ZŽ]uuÐN«­TÍü6²hP‹jf×:U,…)Ç(¦æà]½Õ77/yfñº’įŸxÕ}w.ºj3ÓŸùç”KÖüû…ìÿf?›9ÚóÔœwßyÿø»€0aèkj,=¼ð#ÝCÞ-Ö[¼Ô=Ö{¼ÄmyÔú¨—*æ•-ò 6Wä` ¦p¾>Ñ=—–”5ò -X£æ:*·®k°Ç„)UÔ±;±á üO¡€÷;–nàz¸]ÜŽæúÀgf©’]9œòLé±¹ÁÅ8ZÁ&8ZÁɺ[ÁÎk¹Nܸ Ã@÷(†åH„æŠÖ5’g¶xߺïùß~¾¿»Ï·Ù¹¬ùºÍw]{ùÍx»û§o¢íèDç³Ïæ-¿ög¿úäÕ@ ièk*Âôƒð†Y_„3‹0OwÒyº”WÆ+:­7Wâ@tÎ¥%ô(”u¨`h)âÓ­¶¥3¹o8båvrŸsׇ…&›Ž«ߟ$ùùv# -!ck…|ÑÖ -vÖÙ -|Þ¹i’› ^ŸEöÊyŒÏâé@Y9ž¸Ü„rgí¢<Hpø[L³{êÇc´ÎåÖ¢Úh*y¢l]óöÿYüÌ’æµå[3»7/˜÷ÝÆwLŸ…AäŸ]3ýb¢|7™Ø~ùæ±W?÷ç¹ýΠǃòà!½q}Á3êK*µšº‹ÚFQµ¼èèU¬VÚ;Wä`‹Šˆƒ¶¹´äpZa ®p®•ñ´®áú ßôà†y»ÃÄÃx&i†ƒ%®ÁÑ -*kk—ex} '­†ëss¦qBŒÖa ‹Yrì‘н}üê…½¿ÇÌMÂÖkžÎ¶á—bí%×/º縟ۇ^ÐŽì@ö5‡Ž`æîI‹ö ؈ʜ<©;ýžîiñtz†<ìOg—‡²¤0 ·*Ò“J·€§‘ôRv›¦BŠuh‘$»ã#ùh.Æeœ«‡jÉa\‚‰oQ°z€Úc÷pÜ>¶Æëªcˆ'ŒÑ…݉ôÕÚ4Œ¨lˆ6ÔÇh› ‹ÙŒ:ƒÚC·ÝVí¬Ä¥®ªò‹bÏ=Gm¿7¹víE¶ÇÄ‹þàÞ³K€@4;‹ª£Çƒ*±J¿¨¦jfÕ‰*j}šÈÙr˜0yz‰%OwT\ wIÅ\çõ°%s-"n1th¤çZÃ+<)ܨÇÃçk÷öx‰êEïý*®žÀÒÔõêfu§º_=ª¾§~®~£ -ߨhU«Õ„ºSý\eÔì˜aPMÍ$¸š9=0B½ì'ï¾ùÚk€°€ªeúÁ·è¥N¾”oä©<µRv‚`íf9Q’ìv)± ¢E4¤.×E v´* ô êiã\Ff”d@"ˆk±Ú³ýªF3mí`TÆÖ4u®ýÑ܉ärjAÍ$êjË{ëo›yϽ?˜ÓÞÍôgþ·¹ù…¿f'î^µýxæeË`ˆé -8˜§GA¨H‹p@ @"VD–a9Z$År SC·Ð»hª‡F•FºhÀ«§®äðB0êD æ¸wæd33Ó1OÄÕ´š6㽤FT‹:MÿàÜ6©sKùúM•w_Ö¶>¯¾û²µ=½©U VmuÉÕ7Ò¡g_¹à*ÃxîåL˜<Öµ þá'3“ƒ›–ïþ8óInwª¡Çƒ VêÅ.>”Ûl”ËÖÍrY‹,»@¤ˆK´ŠœÛšV¸ ÞšÜêi#žPÍÖ@"n¶"}n[²;hÆAÛ:;ãüÞ¶äѺB2ºYËo¯¹çÊÉ77—l-k{Í::ôðs›æÝß›YAî¸qù¸Çe~@ aèkêjzÎÓŠnÉÙ -^!ï?c¡üš) ó:˜üÿ8Zš/_­+ŠÃnuvÐÅÖV5÷öáᎃ´Ñ%7Ë»ëÖÌ\úôÕØ6馈r÷æß÷¢yd;˜Wîž3mÍ·û³Ï~6YÏœ¡žúåk¿8yâÍ€ÀØlUAòáU½b}!Î,Ä<ÝAç颯”GZvø抜Â:æÒ(è–)eV5E|ºUû~P v%Ó™xfàÿ¥sòòmvF°3Z+ä Z+ØXG+äó¾‘'×9¯dñX|ŒWrw E>ß+qºå"ŽÚI¹ÿ#@-ØržÈyþÿÃÁµ‰ÇÌZWu{fOÏâywoY|Uw¶ƒðNÃ2”ÿŒM³gßÿÝDjß{o¿ö³Ï>|ÌM.¦ÇƒOéÖeÂ*ë¬D¡$ü•ïÇÛAÂKu岈B -A:ù"¿Ñ>r|Eþ¬}åÝňˆì/'×.¬$·“{ä»=’Gå힇‹÷ç<‡I¿çMùâ7Ê>•¿*þÖâ~ -›õ&‹è°XD‹?@•‹cÅÉâñZññuñqP®¯׈w‰Š‘'¢(zi÷– .t¥p¯Þèkãp‹ -ƒôÜ°ä^³À…®ž’¥*‡Àù¹¸Ï9Zåtnw€3!Nq<—Âåº+©µ׬¡²},dËÕA#=˜4’]™Á®sdac)u(‰`Um ˜?¸|yïƒÊözï;Õ ¯yœ,º¹åÙûîÍôÎñ– t }MEè¸`­ö²eìX¶[~Xf -u+¢ÓáEuhí¦%t8]†c¤p¹.ò¢$H†Ê#?|Lšü@&nÖÀæ²ÿ#ç¤MµJ+µk­Rös[EdãFÈå -ª°A˪&-‘<½{îÒj{ób×Lº`ëŽ+¯¼á¹^ò@æÐS7Lœ{é›$væS@pPõtDdôÊÙL/C8ÂQ<ÝÒMÝÉq­ÔO&idŒ¤Ï›6´hT‹F5[Ì–c8}%Uk±juà| àü¿L”4Ù…IÃè -`Ôîn²›?0H…)´dOo»;Zu÷#?¬¬{°'ûͶ{èPæÑÏÈõ™GÞ~—,9ó)¹õðÙ÷Á@£C b@ŸiµÙªm ÛLÛÕL·LºÆÒ¡,±³Y8šåE°Òvi†e…€ÔjUY&’d±ªVYyŽe)*µ¾Œ‚,^¨WHlj ªê*¥ˆ,¯2AS#dUY¶X@Ä~$ !ÑKýÖ3,káob…úéùoÕ–K§…²<«þíàz@è੧®sð©W³Åª=ôyÓéó»÷?pT¯-Víù£7­¦»ùµêq>®wóêqþx·¢çó¹ß”ãÇMLÚˆ -u»Ü Œ -¤Â”Çg?MÝQê)-è==‰“ªþ#)Ãì·×Mª=“µd~‰Sçe @ÈË΢btÜ8K¿¶Ú›ð63Íö™ÞyÌ<û2¦Ã¾ŠYmï–¶1KØÿ%ýÛªuKwY?”>V>³2íÞ]Þ£ÞS^¼º—L’(ÿJ¦\ò¹G¦láÿD¾æ¿%ßò -áEq•‰$¢,ò,9Æôr,+{ˆÈò=ª¬Ëò)™6û§]î”7Ȭœ">½’íYà‡šœtÑ.àÌP…Ra'áØ߃¬U==ߘߕL™¤10‚1ÿ1ÏüS‹i¶Ñ(s2Ú€lЄ™£g€DLÉ>FÞÌ–]µh.ö>@ñì7gæß"< -UÙYD`NBžÒK /•Øù¼’ )©çÇ•\ÄO-™#\YrµpM‰ârÁòHÄ/§=hÑŠRÈêÍ~»ËU±Èµ×Ù.ûëÔAðÌ{=Ôå}½ì @ÄÙ9ù"r*ÂBDø#íþö³!ÒÙ999a‹"9Y©v%“F|0=˜Œ«æ_&q1'šàU×Ö€aOš››Æã8t‹Y§Ê)È¢Óá.4? -…«0\EÂUc[ˆ¬ΟßRå»?72Ú }MÌ«¤¦äzm_®uùÅò 9ùü7m;ÞÉÙ(Ìÿo¶¿†÷s¶…Å -ß·}mÄö~øÉp¯åSòƒ¦õÈÌÀýÌ«¤>@Ü÷6€M‘.F Y$çžìÀ)£,'æ,™b–e9ô¿øí(Ë_ÿδd‹qô3i<Á¼6byÿ¯ŠŽ¤‹ 2©¡cº )】D1’{i2³Á̤fåÆúms¬Ñ]Œà¢tîÿhúšºšy•4Âeÿ1—=Å<>`ÿoÛ‰ðjÎÖ[LÀçùo¶¿†s¶¾b¾‚ïÛ¾6b;j.{Š)ž"ÓzxTLûFì?‚çssÙSLÀS2úÙC_SæUÒWœß>³/¼‚óÿ¶÷æl=Å^÷³ýõðºFo1‚7ÿû¶¯ØÞGÌötw¡im B,û45Ÿy$˜qD ×ñÔgl -õ2 ø—YiC^Сzà0ú9Rzœ}¸,ê`WÒÈ efM”n´PæÆl -§ôâÔì‘ìÓôOváCÙkv™@`õ,y>§”¼NC‰¦EŠæh‰4ñÎ6ês¡ÍÊÚÚØÏ-m*øa(jà ¡›Àcªè¦!‘ÉŒÎÒÏAE´Ìm›ƒ.b™g²dvÆ9Ýèœ3*K£ÅŠ›F%U7ìîZùäî]»¯[4ùâE‹.ž¼ˆþéŠ'Ÿ\±b÷“+'/Z4yò¢EZ³K©L?A5ý26„"ˆVÑßF/Và -aµõN¸M¸Óº ±Ê>>0ß"Ë>?lU¯Ï«(ûdŸC–}?]LY¬yÚ%ú¶x¡pKÁ ËŸÂ€.ÏuqìàKá|½„š+JÊY £h¶ÔjñäÑœb“½¥>Ž-\S°‚]Ã¥ˆOWJ—¶Ø:mäZmhë#<”™H|ÆdjØb1-6"Í:Hg LC"3 fâ­ÝJU¤[Y{œSÔxœ‰Ç»õx$®Äãf‘Œ,±;¡ ³´JìÅ­üž$R®h]c“[Á`q˜ -ÛC$Çe°»)—ÛYcª›´¿”ï¾l½Ò›ÿËîð˜ö¶ùóW-~iy~­qeÛÃÅ›[¼Öe÷.¡ÖeˆpßFÇOßS²7úñþ&ÄŸ÷ ®çð6víôßä%—QÇßÏþ£ CÔÌIh„´^…ûŠšeîe5·ÔÜS³£æYwÊ-\Î-ánâº9ÚÅó…bA )Å­„D -ª6W?T·<‚j -#‡qy^ -kõåEûs €i†Ê - -…„ŒeTµúõªŸ†=j)Rª -KK ™M㠛ʞÚYøM!±VÎ,\P¸¾pgáç…\aú¡I=Ý•<›LkÑj5c$Ó±jÍ«öj¶Xµf&'µxƒéÁ´:È šÊ‘¹Ü¥)ò­/¯ˆV4< õåu#"?``Àt9,×­s»¢uMn6X…M5»ðxl¨¢!Sñl„g…‘üI½xú„†I­÷Fã kn™Z\â™='¯´xÓM±9Kä'ÖU|¸³ççî^yí¬+n¥Ê·VVÌ{m±Ë[>vγE~V˜¿/öÖ&¶¾0÷è^íË»¥ûîko  ggQs™“0¦ Ñ»iÔàu¸j½ óôç‹÷Võ§ªÄ;´» ïÝVv[ù+b·n+~$!. _3þšÄJ²JL†ï`ï–î–ﲊŶ˜SÆÙ›åfeé—)BùøÒÉ—j—^t¥ÃH\/Ý*­‘×(«Ç¯Iì©?BŽÔ[…ZyòørG)_›`§ýtÁfk>槈¢‹þå^ÄÍ)¢ècè屚ø¤ ö ‹Û=YYðzþÍñM‰J¬œ:_‡“jp“ëø¤EjssÎsžžL«ƒéêicz&“ãj›¹åêQ©wwÌ3ëC Ãp(1š£ÒPßØ4,@wŽöæv¹]n—ÓÁS¤3…¹Ã¡°‚N‡ËíêzгdöÌEvǸ_m¯šqõìú†Ý~ßAÛ6ÛS&/t»*í©mn*i¿hBß–^ÁwÆo½?Ù4©qÚmÉɾMKO-hô\úØŠ Ë×,ÞV8þÖñ݇÷ýØ~ëüåÇ -.¸ÿV½}ÕòÑÚ ïmÙÜׇ.]\wÁ­×^ÞXÓÖ˜X1BžÀ3ÔÛ A^PøS]Ø·¡ÙrÕpß@uº¶fôæÚ¶vöì[×^6{-ùåu==×]ß³ÉvP›™~Pá’ƒYíÇßâ -½­× <غÄ_K–Šü¦UEu¼L7kÃÌëÁt\ŸŽgâƒ&¿[Í Äbµ5¨™wDΠÔ‚ÎÚšjß{ ao¼÷H¶ƒv -¾ýÕû¾mcŸú¶ aÃÐWÔ æ$ÔÁGúØ;ƒw–|¨}`û$ø›ÖiC–¢Yæ*Kæh­¶eÞŽàMZ—}•÷Îâ{‚÷•ÜY³­æé¢ÃEv_ -Ç衼¼PAÕ\A,˜ë–òÖTû¾™¾õ>Úç« -•ÿT¹¦ˆG>EX]õ/=áÀ‚Cuø”#E8=X[gà0›¬˜jдä8d*` š£ýx˜BÀf)>=ìJéA#=˜ÖbÕ&x0Õgkk̺äúÁ¯°“›Wá¦Ü‘®Â†zS %XÌ:µ ÓŸ¹ööçò¸¬-k§ýxíÂë› ÛB-š]áKŒÉ —R_ýÙò=«ê®}k¤´Ä—X|Ç•½G×­˜²çêæºI]»rBxÆeOšpUω³è¡¿ÑŸ2'A†¨‡ñ¨èuÏà^~¯ú´ãiÏÞü~õ°ãEO¾ØÌWWWTV&ÇT;ÆŒ©‡£um \8¾Í_ÔOPpìK@UŽS__ØOhpáX]á„ÊýcÆÄÚ¾(Á’_øR8VwRSõñõEõm» -±¥ðXá‰Â/ -éÂ~B Ç›O¾IÁ‰LéQ#«NC"cJà%2§ã9ùLôÎo¶ßÿäCÙ’/oZ|ѵ³K]-?ŒO*/Šé·]Ñ\zÁ¥k˜“Ùxöý“ÙÇ_Á×°úüÁ+k9›ý{ÿŽ>‹Öþ}gþDUV.Ÿ4=oÏ«¿fç†Þ²Âì3øVâÂð ÎÕ&8ª»ÊJ¡mµEŸ¯Ý}º©/À7ó•›#)V·•¥pº.)m€…›‹>ih+Nát½ÐÕÆI…mE•mE]‘¿ûÚ¨©±º¶Ò7mmbóØáÅž9mZœH«iHdN§3æÏ\EüÂ;èämï@úÞA«l{¼´ë° ®w (ï &)ïüÿÊcÇ7~¦üßzŸYìÝ}ݽ}/=¸tkÞ¼ Ç·ÞtÅ”®ÿώϨ%·üîĉOoí,˜6ýÉl¿ô‘{˜#L?pà€Oô WHˤUÒÝ-~¨}b£Üb«6ÏF)Vâí6Ûµ’è$Ñ¢jÚµ’Å!I›¦J´ÃN3äCŠ¢9G -Wèy‚EÑæ°h’¬|¨Zÿ!ýÃîøPàSX­—2³Ü‡H>—7±~Îú½„…>\Nõ´ žŽgâÞÁÁïiB˜×L\‹}¯$'‹]Iµ`CÀÔZ4£ZP£‚”†|BŠ?ÅÒ§öîÞuõ¾Å/’{È‘Õ«3S©êÌäž³ï“e.'G2Sáý0¯5zK©à¢h+!ÁO€rŸ‚fúñë‡Ï-Õi£¶<ŒRG®ûÙ‹ôsèÉ~ êèÓ˜e^ -8¨ÓóYLÓÀr¯3ôc„zÝÔÉ€fþŠ»†j¦„%TÇUS–7êŒ6DuÛÙNŸ~÷Ýwß„C´‹yìð˜žÚŽŠ¶‰elDâx+‘DA!’,(hQy+Z4Ɔ^ ´ÍîT,ˆKˆä D²Ó×Ù˜^þ¢•¿NR¨êù‹%‹DVö¥ÑJ÷Єnv ‹GÓÓî\MÙ`Ü|Õø‰Ą̃먠=аö(p¨€¿yõÎײ_ââ5Ùb>~ÇkèËîX¿Å'²ñ•gÑù,þ$;éÙì_ž €l=ÓV°Ããz ¬êE -ÕnUÑnµæÔødež¦¦ð½–%¥e¡ìÃRZV‹Åa·"´Ðn±Øl'·Ú-NuB -‹9žØé‰xÕ/=3ÔÓÓM9®š÷ ©q5~¾Š–:ºÍ¶X÷ñãPU[ƒFÏik´ehA$QŸev“ºÌ/ÉŠ³ËV?õ5Þ·Šéß—½ðGYë>|&;Ì&ýLú9ýs -¼„JÒoJò,o¹%äehJRTž¦ÊÔFj¬:™š¢Î¥®PUŸSSªµš§JJeE!à ªÕŠ­Ö¤BŠBJƒ%>º  (U¦ÝÖ2‘¸‘*¸ÅM)e·ˆB°ÔWBGüŠ¬…¬T±Vû˜Èj•Eö_þÕö>"Á˜œ¬„ ºG{éj³Œaä£ÑaWâqNQÍ+—<WëþòŠÂ"‡‹ø3T.Db¡Ë¿*¸²…Pä(Xˆ#eÝs±H“›+D§ƒÐÁâP˜ 7UaN{Ž«Â`1Ñ.·€…­³iõ4s×e[¦6íÈ~ûø’gÜ=«gVÃcHv/ÝK¦ß8íÐ_ -#ä™ÌãÖ_º?ÍÔÿäò×ïøÍC§²{Lœû“˾íDÏ?°mßÅÿ3­>ûaöã]B~söØEMX……¿ -¶ã&¦v€BP ýz*ÕJe}å¤ÊY•Wû~Py£oEå+·VZ.æ­PIEj¼aÿwÛ©FRøüÁš6-…‘ƒmR -_Óµ`Íúïå¦FÇÜëh®Ë!#÷NdÓƒ™ÓƈªuîÞƒh¤º°ØæbD!T(úç`µmÌ(füs°Ò5fñs Ê^3lpV:#s°2>ê:Š7¢M¦7mÒÒÃìðIdw¹Gò;êT"/tŒk™×ñÒ¤žióZÆuܹíê-[®ÞöîÜ)U±iK;fÔF.8ÝÒ^yÁô–ØÕT妊 Ù{S÷e±È¦ç·u%·gOw×:—\Ó™Þº8vÙ”KZÌ ]ô» ~  #·¬¤ðž—¬ÊuYä­æ}+ËÌûVŠ *I´vÒCv‘SDXO6“/ÕCôauNH(>Ï KÞÎ]¼r^>)ÐÀßf“¸ù9ÜœMâæ³c©7‘ÆÞgps6ùLöºìÙgÀt¸†ö0q`A„^½z/‹o7™·ØÈÇÌ',‹„¼`ÞQ,ûC;†¦0@³Üuº˜ÂMºÝÏþŽþZX†¢,b -ýºD¦Z„.h–†Àêéé_Ú†åZÔ¸·Ú“Éø¼YŸÇŒc¹{Ìr¬’Ú0’9Íd.ИN½}6Krv,õ&ùîYÜþböçÙŸúû3ðí¸_/Û‹ø¾IÞ`>ÁÉG ˆ/ÊAÅ2Ì få&.¤p“^€~H³ þŽúÃЄBJX‹ØS-B -ý‡ñ\#¾œ¡žž>0¼7€·Ú3¬mêóªYŸ'ýý& ‹!´çl…g‡¨·s­0U‘ǽ˜]röÍgpè õ8Ó>ø‹>¦LF'ÃÚlÏñ‚(Ë ÁÁÈ*#¨²¼À©9œ²èÔxÙF à!?EÜ@á#àý;ljäð6ÍÉ ²“ñ¸Ý‡}»F(Še¹í‚ºGû…SÜ/ü‚qúÆ×~ -@‡° À)`!…‡å=ñSOÄÔÃ)µ–ƒ¾]q˜s=Z!ÏŒÜ#×0Œb^óqZLJ/ž4Fñ‡΀3à hx{öylÍ>žì¡§þVî´Õ}±?û"z²?Æ˲?Æ‹ïÙ¼•¼‘9{¥^žÉĶn¾'û2 ìÊvPßÑ!ðÂCzM@wp…ºƒ£$ÙÂy­¬£›“d…¬ð~ƒ* LͳZ¾‘eUA¥Ùwà»Qpì õ´Ÿž€D"ˆ«Zl„VÆÛm!¡T´W;@”r´²ˆIPu8Ý4ë*eBnÚÑA;YO34#‘Q 6°œ™pÒ‚Ãì³ñØ Qß=QlÌÖk.8x°þÆi-ëêéЙO×µ–¼S3Yæ•ìøn¹üŠ{ñç@`ìÐWÔ»ÌIȃ0ÖKð‚·pJá…L3^'ú_åç+Þ6ƒË)¿ËÙ)ö“rðãN=4UókºÖ®mÐviÇ4þ˜vBûB;¥ÑZ–C™zÚH¦3™s÷Øb0\Û»<Œj …Â¥aÂò'°źC%rþ;.¶ú瀇q>a)øÔàp Þ§s%HñH¤¢"bª3›úÚîBtª„‡ê›K«H°˜Å\élS£ Ÿëž||þ´[ŠªÇìË~zÿ]Ïoû9§ËÚ'Œ¿ ×þ¡wɤK[o쥻âÝ93:óã{³_d¿>²ç÷O¼Ç?{`Á¢l¥²üŸëf/oš†šì¬ÜíƒOé%M¿%J‘fD‰fhŠyK‚ - -Q"ÇÏÓY¦??Ô5?¡æ!€$24Å·S¤B/v+íuÂ)`G¹µCœáœüžY720µ2qŸ7“‰û<™¸fÞYò}Õ{À0à 4xýáÙ² s3­žQÉòÌæäSg¿=û‹'^¦ Odg1ÿ`NÓ_"G3×—Â5‡h*…üBpªÀ°)äu‰ã¬€ÐÌßøíùó>GGˆ«i5×b±Ú{@ j-øsÙѳU?cNþ{ûÁ·•€ôb: Œ×ý,G¤^–gD–ù†¢?©2Ç# -A³åèïs!D<Ÿ¡ž.ÇOÄ3ñX¬¶F3ÓP-¨éÅO¾’ó“tøñ³7Sw½™ºË¼9«„Ôp—ÀXp(L¡å(F@EXbÂÈêÕ•^tÚY>vo‚ÛýþS~ -üªßïßàïñïòðóŸð þæª\Èœ4¦šR¨Î ÔÖ€‘‡MÉ `q8Góµ9áF܉œ3&oiByÞ‚1u—6„ƒånMs ¥*YcKýEÑpYACs ¥Ô‹Ä¾íê &–UÇJÁŠ¥Ù%C3ÿÊ~²l⤆1~~ bŽ PAþLZ˜“Pc GsPJm~¿µ ÐQÞFœ¶Í ´´õÚfm§ö6¤qû5ÔR(è^k›Óí#‚·+OúUÞ‡ ˆ)Bt£ÝkûY¨íósŠ¡j˜¦¡˜>,‡*õtrT‰ü€Í DÓÿLšÅ‡Z¬:4ƒÎ\ûØØ4’.Ö¹]È9Ì¢w–ËûMøóÅ×Ïíš1y_ÜŽÎâ)k¬Ié‡7¬wV«ÖH×%μqU±+5Žj½ö¦Å—/¶+l«¯bmñ‚äãÖž×-ÃJÅ%;ó+"MSƹ”’’`N‚>¸J/wëÝ2ÍžåEN¦Ã¤Œ-Ã2ílãÖ6p{Yi¤S$¬»m‹t©Ej—6H=Ò.é˜tBâ%)?O³Åª“£ÊYÀ0 ¬3S˹]É=êN¬[qÉìÙ“W®Ø>{òÊ‹fÍž Ï¾œ9yå5/ºvÞ±C©k®¼½ë‡ëV®Ü°n% ¬`^c>‡ -8©Ûªx°UøíPVbËwùo({ -‹t‹mž£Ì)Ît®wg -ß8èØß3@&eG½¬³Œ”¥ðƒå»KR8C¯ÆÏÔä4.rB²À¨#ê²Ã‹*ÓÂô0'šéî-5ÔLz0c@"Ï $Ò˜+™ÒlÃeþ‚ k‘J CÅ¥\¨HÌ_ˆ¾d!XþÞÞ;NŠ*k?çÞ -§«:wOê0™î™žîf˜†)%çA¥%J!3 ’LàšuA ÁÝ5bXÅ° †ÕÕ]YÃîöêîËË -LUÿþ¨ê™u¿û~Þ÷ókººêô¹¡nªsÏyßÍä|ˆÙ+W––•kXÙ>—S´žãKþh,Þ›DkHY0Às¢Ýêrø£øýìÚ±öbèUlx®uöØè$œ-¿ÔpÍÀ)‘Éon~áÖmG÷É/ìëS? éƒ¯â ƒÊ åÒ~ENö¬ç¶KY¯ý¿™¾]ÛîxRùÇÇÊ›ŸÛ¢ÙoØ{˜ÞP QèƒK¥¬™Íc-t‡ï¾O²û ó=Õã8{¼‡n=»ÞµÚwwûØû\ÜL2íÚeì2×Bß=¸®†Zà¼Aµf–5óyú85°á~#ú-ï·¹_ªWßktb¬Ïu×Y¹òŠâGžØ£Db‚(Ä1½$³ÃX¬¾¶NªÄÊ4î”ú–…!„¡¿••—ÓÏÖz7ºÏ;ÆDÆúý|ÅXZ?V§£Æ>1‘†Ê­ Ê—^w]™±r),/ —m)#Pöy)Kã_%—ѽԳ%1}¹q³q¯1e|Áø‘3*}… ¹8a ­/sNH¨ˆ@!£þÕBò¼„p¡æB[°‰ÖÚµy-«¯jo®ªê@Ia‘Í,µZ±¨¸:nĪ°­ÈÑH«J"($*TŒ•+q^TxRÌÃ` ÷ª¥Abt"ÐpÅ"ÕN«ƒ÷‘Hu,ŽþJ 8þŠ¡‚ÝÐíõÍSºöÑ×ÖÌL7ø +†¤ùVð Mv7CÀ`4›7®À¦ŠDnRÅçÙ -ÚÍSðU$<‘@¸¢/3X*™…†ŠiôVK^WõLf3Ï’‡HÌægòО—‡ŸßÃä—˜,CþX'iì~ˆpæ4v—¼y†’±£/àñ3åEyf‹ (­|:Ÿ&)P4]°}nûΖµ1[±-d ÛlM¶-6^²m±½g£¶ãD„n¹ýë;Fý¹úsõ™1‰«,¥e…v‡N_ª/oÄGQ#”éJ¡Ðžßˆ9º4Žb$“wñN—Ó!` œ/—•—Ek¤Ú™‹ŽÑ£6l’‹#Gܵ¹¿9Ö2eÌ°qQ[ÑW©ú&ËëgîªÀƒÊÖú‘M÷ -ôëý×|ó -å¯Ê_ÖØ4xðÜf,‚òçúÿö=Óð/òñú7ßt 5Ê(º‘) -ÅðˆT®·c?ý ±Qƒ8K˜Yx»~±a™¸V¿Æ°®p—~§aw¡Å©³n¶¥ñØs–ÙN¦8»$ S(g}Í–&A©Ø«(ÅUd>³ºøyÓjÁãó„=Tð„Õ`þã_n$=ŸIAÎ@½ºÅj'—q¹Íyy.Óã`v[‡Ž}gG0jsÙyŽÏQÇÛ-åñÞ'ã÷ïÅPà¶!•Ç_ißåxï~:pÎM•„);uJÙÙzó€E ·ôœ»çžû§Ï|‘ºyßí“Þ~¥ÌÆLPÐÃG›ŒzÔ§q±æÉÊ1zV—+{X§ã×óßñd"?—ßËS5*ˆòoúÁ]‘ qT‹§Åi6_t£ù(EÎ~²µû±nLÙ©SÊö¶”ç±Õ©;žûé"†ªŽ:‡aØ4¾% ˆ@ðót§² -.$†åì¿‚œ¨ -cPe2Ú(ϧ^ÜG÷ ŒÎb¦ðÀ‡•Ò $dvžP8–¥a1ñü4Bí„BõÀQ³ åXHx,C)§ƒÅˆ>®‰[ÁQŽÓë<¢µ64¯Úʈt(¤‚Ï­Õåx¤µÈíÎ b=òå¥Èx+o(ÂkìŽ;ùa?L¥òMÒ®¶7‚ÊHº˜=>ø£4ËjF/_,zó©ÑÀsœÑ_àòx­.žCWAÁœÑÎqFü-¶þMí®@G]zûZ æ{½<èP·]ïq» `@ƒž£k‹-^U¯Óo0ºÜùÛÄlƒU 4E_ *"WOGЉt.]N7Ó}ô;ª ÑÜ%–2ÝÔÎ7L¾ ŸÏä rBÈ@(!$„„G#oÓ>ªÂh ê1’A=FÐþÁå2²K§Ô¬d›‰ ôÀ7𠥇ú š` ­ÔÊqt£šïör0j¹˜&v>6‘mt<¨_ÅmÓ5ñ¼¡ Œ‚Ñg %cƒ1e|Áø¢ñ=ãF£zy¹qŸñ úr"·‰1ñæM­îŠ·ˆ|A¾¹ Ÿ—¶(4¢Ç #z ’»Î.AV¹|Ç­5#*Ùf"tCé¡ô ð*û6œ -<a d4pdŠŽ¡ã ]'âg0iœ(Ð#`9ì… A=,‡ÍÀL„ÏÀªqC¾ _È@}"!'*ñµ_;^Ýëöãºý§N:uêT»/{¬Ý÷½Šª×9|D‹êù®úꪲ|»ì‡ ¨^çÄâ#`Éï$«yóí^çâ"M¶ÐG °«êsõQ 03û5w#{¼P'¤^ž2ì¢i¾ßåçñ¤Ü/¸‰ÛM¬ùËò¨Ý1Îf%à‡Dç_ÆéÞI%X Aƒû>û#€ˆiR&yŠ–„ ’¡Á0ÉÐdXa8hxÑ {Ïð½Ž#”«þ˜Imã휬‚«›nª'J2!Èl>Þ¬+5•ùø¢›¡À\t3ëý7C¡1¿ý5låJL–:ü -(h(<¹í9l‡†w£Ü+þÈìÓwÞ{×{[g?'ä¿â_‡hýõoîZñ«_?óÌ™E‹Ÿ~—#àø]s›^{F‘žVLÌÝÊŸ•—•W”/±{a (ôÏ~ÃþÀôt‡¬“®;8ÕŒuŒ«™ä¸µpVÍ¢¼; -—ß•wwáÝÅ;žì~Ôq¼»Õ Çbßǘ±:se5”V†Ì`ï’¿u’½iÜ)]c A%Vn·Ûm6Z1ÖP=V |éXê[TDÞ¥ù BKö¶ƒ6jKãÙ#]*tYjOäóOoàš8"q ÜŽæ&ÂI\·‚{Óqlj¢¹•ñ9•ÝîŠ7&u;T}]BÍÃP¬ÍÙ=¥@•hES°LWVFº4"B ão„nÆ.h2_£÷7B•jÄr,m$¶´ºš*iw¾¢ÃÖjøBåÈQ -m°ô -زÞ©¶R¿:e¨ëC´wl]q¬úúDK{?2õÐ×3O,™õtEüñ›Ÿ=Gå;é½3GÜáÝ^zòžY)y͵C{÷ìw“ûñO†Õ'mLMž‚nÔýJn¹-y˭ʇÊ;Oýê¶&ïSÏÌÀ“/MYxúÍ×ßúÓÈûöìÀì%ü-ÝGnR‘% î @~Y’FýŽ>Ž¿Ýºð·ÜæÿäwbÔïà6ão·n}é'øwöÀ›%g¹5n`kne­F‘Îlš"Óh”ôâ -‘#8E‚4¥k8°ŠMy<×DW¸ ŒÔ°˜Î°bBÈ6Sžc±ÙhšaäÌmäÈ !“.$å„I úMíû•w˜ W r5Ô·yå„ð -mÞ–LUç¡#­‰Å]yÈ;Nñ{ûö)íVIŸ}¨OßÒn•”yêýÇ6­+à¸á&ídìx Г~‚çØ ;Ü- =Äâ â ‘ œF£¤_a˜"™ŒFÂ¥Ñ(U®€)A…&3Ï5ÑÎÛ›M3 c±‘·éBg rh¥J “BæB2!'2ï,RÂ+{ÿ&$„„Wöþ­£L6.5t§ØÛ·oÉæÙ½}ú–v Qæ›ß=vϺÒþ×< ~:nÓè'heO€†æ£iäŽöRÌÏ5ÑÚsð‘0‘K–“}„’mFáÂ<µê½®\tªed®®Ò±ã¡‘~‚Èž= |n7<—F£T¢ÕÏ5ÑZŨx:–Ã> °­–$ãm¯“¶«ªáµìe 0ë'3]›G"ShcÏñ܆McL2¦u<ñÔ:&72ÎÐ¥ñfI_Ï";È”‹v^>—‹Ý†PB¾2UaŒFèú1qà[§ðζô ùÈ)zß©SÊŸ÷+îS§€@€¾ÎÞ,èô$¨G—žRü…2a®²×Ö*OãhœÎÞ#Çå:r’¼y³¼[ÞC¦C6«F³¯Œ×bÖåbÜ‚à.Ö‹c:Xf'1Hh1Xæ\ –ÙGÌvbè#¡lȾN¶±§Â@ɇ„Òiª£ -‚ˆM‚d0K›,€0ˆ9Aì˜w…g¸p>é–ñ .$ÝÃd¨O„:pYŒ ²®]Ѷ´–3]<˜ý6û5ÝÄž†øVrð$|€<äiœ 4ƒéìGRw“½Ž÷¹|D‡¼Ãå(wP#±u1Ùë„.&{ov™ËÍÔ¨cÜ 1!¦³=g²×³iÜý\Nï4¥q·ÔÓó¡õz‹Ð@–•ˆhYf—¬’I¬³Úõ¬ÎDõÅN“_bàJ¬e….ýW<!?41ùvFHxíÌ«¢ÕUkuÕBýÉ -ðº…aòkõ'å×&NHæ|kþUa¨€‰’’0qBrâ„dâÄ ÉäÄäÄ$–ïçý?ïw:#ÕqôÑ`“Z\cÈ,פ.Øý£-MÌ›SÞnmëÚß¼=ùÝž$¼Ö]Ú-òXr=ˆ¯Ó€…z©”a?ú© iBTWÝ›µ7³œ"ÄÝØÚÁ«-¨½9!'ªÂêêùï/U$K‰E©Å×ñM„é0¿¤ ã¤k‘|JáSËÐU°4!2M>VE¬˜Ä6ilý¤«,Úß³z}%ì6®c%Ü9uuÙ‹ÒÇK‘(ÊRbÅ×”žJ (ØÈìip€ -áQi¦ç{·ÛF«y­‘Øm6²æX­¢¨XzÁë0º“^p .âRŒVƒÁö¡ƒ| ‚ƒut‚³Ì¶é¡ƒ°m…ìó×¢BÀsÂùêµVÑèÛB;že'LKY¬­O™ª°†i»Ò5p¿{[[›çŒìç®(ÚãÉ'ѽ}ûvzÿ†éÏìqíÖZÒoCÛÔNЬä´VþÍÒD· Ìkuh³ÛÉvÚQhpxœN‡Áãvº“¹b ¶G’%ßþ‡EV )Ï%äÄùêP­r‰ÞUžõ‰Ÿ+¨_Œˆ;¯,¤ëê"æ°ëj•ÇéÍìã`ƒVÉe̳Xm:–Aàx ‚è0™¹9&>73èA sD’Æ›¤.60=o°= ÿO‚¸ìWqOȉúÄùNºh­­‰DB3¢ªÎ89~‡_ÄVå(VŽâàí8D9‚C”#Êã8ÿaòÁøX¹ûa¹âaå@¸ŸÌÂ>´P(~ŽL¡@ž£3ÎÅŠk3yýþýdÖ©SÊ?á}ÐÃI¿ŽßÍSuz ® S$0üOfGoF›#WOŽêd|Í@ §ò<ïƒì°]ræV5jÚ|§µÉ°Âdœb @K£Q꾧H`ø¿YÝx3ÚâF^¡Óú&ò¬orÅÑÖ7ŽŠ²¿å汧‚ -¡+Äà:×K–Gu„ÒYêäfoN£U2òÑ;žÇ¡ã{¦ÑzXŠŒ÷§Ñ*»/ï?^’ÊË)#P—€$Üm䀃{Mô>“ëãOcèhÉäð?ºM.Jc\2&»þ!Lf5¨æ–óÃä 꿤|AÞoj߯: ™BBH 2BFÎr¦>SŸäŒæ©©ZñW±#¥¥ÑÒá¥v“k Zó„1àѹÆ`>'ŒÊ²ð¼¦K·1PÁ_·10 ~ÐìwmŸ10¤nÐVÛg 8¶1 ZlcÀ­÷ŽÁBÖ;C¥ÝÇ@E×îc *ƒ±âÈØ»ÿè{]ÿ1081t Žè1tLŽ›ûgºW²ÑãÕQ…ñœ{Þîän°?w9ÌÌVlÊÓ­Ón]³jÆô»–J=Bù©¦:?ˆ·_¬¯ õ’¢UùALuì%ÕTçcœþ⿘•¯9úÎÛ‡¿vïìPï]»æVÕ·ÝþÆsGßyûÐñ“÷Ξ³{×maiËÕà'¢ùÏ¢o«d ¢€hïl¥Pcîãí1÷g±D•Å<BžˆÜÕÖKÉ&x_³”X|,â¿Ó{äÖo&A0ÙðŠÞ«cÿû  Åþ›}y¦Nù€{ðU>Fbpšìš,ã»*;û ~ÇÇÛeÏfÏhåã|WÇWðl'Ù{²åòÌø¯S¥sy®À©òÑ'û–ÖwU”·f Šµ[ƒ6á(­î -} -‹Û­A?Wp—iϯØG 8ðcÙ½}°UÓ[ä#P\ØYVÅ5ˆµãlÂR-¿v‚ÝiÀ«e;0Îb_­Þœ>§çDzzûàuš^‡Áio—„Ç°–) -·HÃr¾LnaÅä–_ r*lgG¦}íó½q4i3>Û ²Ò2êæB;°,&“ɈßΔ]þìÌ’Ͼ ÔI> U¹BචâÇ€¡Ü*öó =„«Èqô/\Èœ¿ a¤ËÉDmU’Èm[=ãŸ|ö¡ôìh5ìXæRÁ'Ì’bâÍ#¡?ÉySÉ ó̼EdIÞZ².oÙ÷ÙŸwŒ¤ó&ãf¼-U’Y7ÞrÀéÓÆwhLã/97ÂqôK¸ _Hf ”ÎgÚäó‰ª0$“¶²xÎ (QmoÁçà°*Ü¿fl¸0?Ÿ›Eoê[Ý÷ä—0¯ÌꕈkÌëQ - ¸™·ˆ›ø#+I»µ=g%±Eý7æ­;J™#ÄÀ¦Á³¤RÑqnâæ˜.¤ ׃ôà’Ü äîògÐG@—Æí’Ñ0žj\GšKùº* -à$¾‰_ÁoÑ° <Ÿgîð† ©…—LbDݺˆ8#Õ1|lªyÕ”)+ÍS]ó¥þlzåªU+×J€ð+æ.`×…âg ¦Q˜¡iÔFxƒ´h\°Ç¯Ž1¾ø€Àf9>ÍfÀ.˜s(®£/`%8ð`ÁJЇ•‡¬o˜ÒXyD "ÑbÛ“ò… „ä ÿ‹ÐöŸ k_3®®ç¸êêÆÕ×Ñš@°†í9dÆŒ Óg\_Õ»w(Ô»7 ܠ܄σ lÐûJP?>/»$¼Ž5Üdñ,ç›Ò:¤ OÃ!»pþ|FPÎ çÕØ,­µ`­­ -»â‘\k{¤á³·ôÔ2{@D-èÓ+~ß³³ ×÷>Çt;ÓÍ_ fùìË@‡RÂ}Ì0 ²`å[Øb–è-,êØmj(î†W4?<ù„ä„dæœhU«sq8ù¡[„†'¿øÌã3~s@ïA·ò Ü«ŒEÜ`JIÐ7Þø)°I‚—òtú4š¬ ó„ ¯œÎ{3P/ËbmU8Q==TŒœhMzjqßêÞC&1Õ=nh¿ë+'Îj?s€ta_j¥" ÀT`àÈÇ PW‘CôAæsˆ[Åj:™s¹Á"$kcE!ȉsB&)jnÓr¢Þ¥9À«ÁD´ñѸã^ô;ü /ÞûÈ#¤Q6‘è²'šÉgò?ñ¸ü»g0›ÀYì 0ÂvIsØLÌÍd}‚#€:ÆHcç’éxBžé\40ˆuf |£ÇXCÒˆ˜Æ¨de˜°±Á¸ÏH·Œ‚‘Uüs99^B8—äÄù\AÔR¬mÉ•b&çu*HðÖ™3wÜvÛÒû¶‡n#O,xpÜ5›UY;ù8‰A ]ð9ü ÍxÕ>„HX(ï˜ñj²_Sž}™Ä` :áóy*ÖG÷Be…ÅÙ!Y@?áã$½4­4­¢Ájá:ÍÏ~Z¾LbTµÞ®jµì"×i¿¨Ñ‹‡~ Ú€Çg Mª¦@ 2ì<Çñ‘É{ä ò=al!ûÈAí¿… yP§C 9¡Zëå rUÅ hƒ"®\¹’=Ýöê¼¼³í[ê ÙKÌ$öX!¿•ô¾R¬×Q?ñ§‘•*(*DZÄng] `ó, ›LM¦ïL ˜Â¦Ó$S“i‹‰3¥ÑuŠm“X’Æ:ÉÙ‰LØP_»ÓrIûÛ¼ ÏKfÄÚP;‹–µ6”ÉYVó…yf‹Y0SÎåvº g0ê:#åò½^Â9DÏÍXÈ{nF·Ù~3xEÚV·nݺ­D•ÁCå¶:ì„ã¹`©¿Z ´./«@Ñïðß¹z5î½Ä­÷™õàÜÞË” Âýûºõ\:QZ߆C•çÈý«ÉýùÁÊŸ_9­¼º7h{fêÜ{ßùR©(P¬«Ôf¿¦ÙåðŽTªg—w%Õ:†s¹Ý,õzXÆãyÆÍÚÝnÖQìòr”«çFÀ­Ïµrl#’a`"BéX£‘eu€^êâ·>P0t¨KÏ¡ÀtËqèÒÁT¬Â¥% !SŸQ2¢ÕUkmwÃTj¾WQ –.ñ•ëEsi™¡ KLFð‰F(×—6B0¯´üBq#BE§@[Ä銻x T¢ê‚å*+çËãeª/žêptéÙDEªìä¾~zÁ±[?¼?4(ê÷§’“ ¸`ç왷μu;{"ž6m”²EYª\VþØüÕóhD—;¸ðæåÓçÜØö‹ßzóôÉ—Þi·ÇÚmÅ›à›Nïf‹j)Vû˜j‡~¹Ý½ VvÂôq{U+´ÚËV0nöätÓYܶ<“yœ`ù :Îåþ èlK$ý$ý -ý>ýwz6¬G½JMòþ5¶ç*jìzYÜnç¼ë³D*b*§Š£L4ÚîD'k»­áN°ë\wæ"øº­Œˆ?ǽË:£ù·¯ ÈVΖ½³óäeå,~¸æ®±ËBíÈõÓ§R×+‘ëfÊ„ü±ïk6ŠW×—“ø?®W©ÙUÀD}Fõíÿÿ¯ÿ xýöÞ³úO|ê—»¯ÑK¯¿åÆmÊ­üH¹mDíÒ‹)åŸÊ'=†wF¯GO–ÓE´(”IvJæ d ƒYÄ´{™AHm¨ -£?꧋ھ¢^²|?Â*ôÑaÌ:0ÂJ©”çu£AoäFŦe†åu<§£ˆ`0õ„#iŒa¯£ºë 1ÉéÓ_GzöQÝu>9ãuôQ¸Ž#¡È9Ïy÷W¡ä9Ïù¸C‘s^ìþ*tÎ#'x]B—PÉ@:ÿ­ -Ûô×£K¼W!U”)H&+Y$SEQpÖaÏ¥ÊkX»Dy]ym)öTNÂò®aß=Ü"éAïÆ)<ó5Mã)¦ãóy2ô ÐéQ?Y}‹£¹è”\cùBQQ­·`4hîbÕ£D[¤d„L}¢*Œ"ÇG{c<"bÞè)‘–²qä3Òm¤o™}VBÁN>#6ömðÂ)ð±ã[ñ¸Ç{ÁmÚl1CÆzãwƬ‘S¿PcR¾n¼%ßØd2;Ù:ÿz¸àüœ)L9ŸUĉóó’çTgHÚbq•8¼ÝÙØaç9žãý»é;B‰h4fmöÜq뢥ե+ûb/òYë³3û—ÕÔUöL;aôøü^%K¼ä-"²oCL‘Œ>Ÿùk“É[ -›1z©+3¾ÔãzÝ6Þ›ï3 &S„É…/ñ“_``pg“k>6Á òö,kˆ7šw¶êm—©ÏÈçÄvÄÌvTù² ãÎØUÅàxõÅÄ{‡Ø;Ô»O¾ÕÚ«O´{÷¨íöàô[n›ŸˆÞ³nî§ôaKïê!=£µoá.Uu®9#§6Ö¶V옼²Y“}½‰= 1øâð¾GÙàRø»T¸¼G”c¾ThÉ—œÁ.:S¡Çô£ÁÀ“4Þ#é Ç:ù±£nA9!eå¾ÆL’e iâ•,Þé#¬ßY‰Åº×ú¹•Z#@™Je˜4T1A „¬Wc[ëxeÄLAIi~à°—ÞF(qx!_,l„R[ðGä†þ€Ëíwoe.ß­èö\ÉmRTlÎ+6ÞÊåùnE³©3·‰?êFGP ^ÉsxÉÉ}ÊŸ1Ç¢Eë;‘*ñ×!óÆŒõëg\îÑ™óP™–ã;ÄìyncâNÿ³iÜ$s„²* -Pg·¿ÃobÜ—¿áNL@x•´àl:(Ø%=Y€@¦„2JjV¯î'-|ÿ‚ííQ³À*ˆÍGÀ)t¶h«ˆ©évÔÛñJ£=ª;!¦fe,kgO´ããþºÀx”€E L;ª2–)cz“2è«J‘®šTUµÏŸ“º€™ÄÇI ʵ6ìÓ¬ÁE>ŨëÈc<û cbŸ‡ @fÈ~®’‘)^Ô (¼SQõQÈfsoqÄ _d³°FËpì R]Ôá­G›Ì`ì”ošdz“2¨JÁ9-ß…ºêOì|ŽeZß|b^ç‘äjÌÖÏáq­n}þ+°`ï Óù‰AHëÿÓÆ -·Àé´ú­f³0wó1ƒÚNÁs?·S êe_ÏéÅ .ä$È;‚…KZËÒ´ýžlüÊMø/v‰ÁXt§ UÆã±Zs2Ýè—|¼]Óçðg­ ˜|fCç¾äÏþ“,d_UŸ 3(¨íÞXdéh÷ênЦöݠߣ„ûÔ]´BA°{Õý ÜóTÑpÿÑŽ†û{8Œ*ï Wa'4ÜŸØmú ‡^…ÎýSú;y?ƒÔÏ£í¶[ìbí»MWXþÅnÓõ™Y±³d ý„“Ûµ~‚th~¬u}»ÖO–wÒjí°"¬ Iöy`¡Nº†ÕÑq@a&+°a•š>Ì6°+Ø-싺߳” %çÍÏDBPŸ©WƒûÅàjò±üÚ^öù_^ú/ p}ö#¦™ýÌà†xTjîIzr1KÌÖÓÑÓÍy§Õi÷¸˜2Ò•ëª/3 ¹úæ±dºu1ÝÍßk6{Çm.H¼P@ -tyË€Ú—éôùùï`Aè\¢’ÐLbV0ûN`æ2›™-LŠyùžá&Ä„™ Ã0âɈÆãÄ…Â…y™Hhþ¼dFŒ„’Õí°ÿI5R“Xí´ŠvÂ} -Àªç>Q èwøÉmÛÏíšýßÏ*²òW4¢xä7¿~›~£Ì×”zöó”ÊßO){ÞÅÇðf‰R^W>VÞU^# 0{ÉmOPÉòìç`+¸a£4u°¥¯8ÔÖÏÁô´Ôˆ [ÔÁtµ”‰]mefˆ:ݺŒÓëmyˈ٠”#ö”Yoµ -®%ÀL˜‘˜&†‰i`š˜ÌAæ=†gaI±q„q¢q’q‹ñ #g %3‘Pr^F¬ %r"õ‘PBNhÔ8ñ$FŒ(°bP,…R# -¬MìQŒÛK,ò?öÊ'Vå>œ¶÷Ø3ìç/»äwä·œÊØÃEjHÄy£ŒV¦{è-m1_¾Oè‘=GO0=ÀE0SŠê½Ž€ÕໄÜMöJŒFg;@¿H—þ^=£çÁh*˜—Z˜LÓÁ‚–4ñH†þ®1®i.êšÎG€báB&)'åÚÐ9ùœêI’ÌÔGê“™úHU“¥\»éÐQpËP3Š5e仦—šúàè›Köõì÷˜W9wgKëmk_üôÞ¶uÈ`ìäsŠ’åôM´÷—é“_àão½ @ .û-Þý’ßÁ•qDô‰¶º©\îG`8î+Ø­V0 ‚µÎ›Î~/…Í–:»`¶ÔqV;0Ûìc­œw¬É¸ÁŠ¬G™ãVÊX9ªB -§ƒõiâ9bp©–WŸp!Säd¦6$Z]µÉyê ->S+Zk+**ÖæUV¬eTò“d$mQ¿Ãïd4ã‰ÖXãecþ7“mJd(šnúÙ±ÿðÚ“64mÙ9wÞ¦ÍlíÊ­ã¿m}å%«|‚¥þŠ~}ã?>ôËß?zìw‘ì·d?Ó ü°éHž`0Õ¹ÓÙï¥"ƒ©ÎFÆ¡äpÖ¡d4Õ!æ¹ó Çæ»yÁ€†töE©Êhª3èÆòŒ)à †òé"ÚX "¢Ã˜Ÿðz†„1è›î`§;DI°Õ‰¡ŠH&”þP!FB¢µ6”k“I¨dBóê#™h­ UTdj+*ªÂqê¦\. -5^ÖÉÏaÇG‹ó?»éº¹Óf ¼·é®‡·,¹ÍþÅ3§•†™[¹¹uî:1¸áþÏlž1¾±×ãZëez1=@„!Å\˱Èa»…³.ëoD#/ŠÀ»ˆŒ$·h#™©ÏÔ'3Uat:ì$ j#uºüŽRŸ˜{F´ìöso½ÿå_'” Äfù°ò»[Ö¬i¥[ÖýKQÞÇêKÈ`‰ŽavW(ýŸÿäï¾ð%B>™Æ”·K¥ÀŽã8j`¥êš:VêZQÇJ>+¹ÜuYdH’¥é싇ÃUu4}ñð5•êgi¹úYP¤~:\u4}ñ¨)¯ŽR½N­øŠŠŠŠˆ\ -%+*** ¾^‹z ŠÁ¨ŸL;½ýÏdÝÞ6‡nß@ N™ÁpLopCfKy;ÍOb©î:ßxþ:1ýF*2[êDò¼æñ.4ò.oy³™)œn·—¦3iÉ|·K$«­®D2[êJ$½¡®¢¢")\Èïkm(’!¨OÈÕõõçäsɪ0Še$ZcuñœhwºÄšX¤Úê°ÞCrÆ6üìù¯Om+<°~ÅÄi‡ýö«èªÌÀåvüÍ9ìNïï¯üþ±¯KÈŽôlåÅ#TÒ=”•ÌysþÅÃûÒƒd¿Sú3Öl ÀC©d%(™luÈ!ËSªçщ‘PBŒ„Šœ -UœRÍ·ÔÏX/Æ/Æ•s£ÿ9Ø @){XЃl°JÊ3+êÝÎÂ"›ÆÅRœÁbÈ;lœo[BX  Ìa¤‡ Áùœn¯_Å'p/p/rïq_pßsüfnw{‘c¶p(pÚ…óÕóç%!#œO!S[JfÎgjk¡¾>“rDØUa#¢£¶Ÿì~¬Û]Ob•ú1›ê±Ÿò|Û¿”§N]ù ¡-%Aöm°Â©Ð86@j¿–ÝÅ>ÁRÜÌRÃhL“ -É ”Ì·~ uÚ xx8Ž!° ’òùZá|2õçæejÅH(™¨ -ÛĈ#©.Âó±Cì3³ïôÁ·/¬Jl ¥dO¿QCfWfáÖQƒ_Uî -«²_ñ“؆:hDÛýHô¸\i*é†Û†7êõi’¬LW;Ãtmp ÷0è/ô'ýÓ$OÍ.2úúø¯4 -Š-hIãÉ`mä9ô:&œtC¢kתê9••ÖUÍð仆ӡŽ>ýýþ~¯õïßèX=jT~}×øj`ÆÇ„‰a&\®›_ÿ[^ž^³X†®öåc~þØêÐ  a_˜†CIÕ(kÑÍ YÃĈˆÖÚP¦¶6$׆ÄZ5Ts,Ö†r"!Ö†4¢ÐHuu}&“U¶s xU“6µÓ]¢_% ÕЃڡ¤Ëyu–ƒy¤Å MŒT÷ÆhM%QäöHu¼¬ÜÕ^I¢5ñU¸ìé×õCw"wÝ° Û&â}†GN˜ÔüÔºî9>»÷™P1ÚÝôð£­{÷Î^³ªOßÙÈVlwùÉNvñ°a‹®[»~Á/{â½—1†Ê[ƒ7ÍÇý{Ô(©Þµêc¶ -‘Q7’×ç°ùûh˘±+ÃÊ:y^^o5gΘÜ74èšî—^}-Âx?Hgƒ€‘<äý¿Ó¬ÄòhoÄ¿ ­«ÆÕ]<9cÂð•'&}™Î^4qÒÔÙonÙî^ºa2ŠÎ`ë@°õÆx¤]Ž²r1(æ!¿gë®ÒÊÐÎ-oΞ:iâ"úК—ÇL>±rØ„é—z³/MÔ]~ºyÈcqÔ_‰åœ­ýOruCutöÖ]¥ÝÃ;·¼9{êÍ]™¾+Z„.1"ÆâŽ<䃕¸gñ5³¡ÊÒ]ÂкÄPöåK½§O¶òÄä1/«©?Ĥ·A>æ’n/~<Âñþ²òHò']ÕЯåÒ×-ýV ~c=-ýV%Ý+¶íxzƧwl«è~ÍÖOoØðôέ€°[i¤ÓÙc€¹ŠiÏ\yÔéR·`ðÛî×lÝñÔÆOíØzM÷Šmêé6öØ„c«úÝyé«;ûŽXul„c«Fô½“õÞÙ¯aÕ1 °[Þ¡i/þè÷;ü?“†ò)9%GþmJ?”œ—HDB‰„2çå u:ÊùúÓÅm_Qoî`z=!ß¿_¾?=L ³ÐDD=Š¥~Q{ð¾Óv”\TZ•Õd)áå‹ò]# O)Wàh¸$0s)û…P$‚P$ª -ÛD¿Ã/Ž§^y>î'ö+ƒd™¾Ç½ N Šîmå• ðÏ9Èá­‡çõ)-Ê·†\bžáe™·ýþ×^Ó¥ÆbdÒÙü3‘•erXÓíÀg*[n<%USIqµRÕĽùCFÕ$ußLÀì·ÄɾDN@ÔϾt© ûq¦_”·“¹ü@ (FD|1%o×¹0ÉòvöerXtøŠȾ,ÏJ‘“©Ë-l5`ö[y;½F»ïúÅ i‘gÓ>)âL]zÜIœìËü@`UÝ~¹3Ev'[}¹%¥æ‹^£Ý÷Gýb„^Óök²#Eœ)¦5—>?øÜïý"¹3Evʳäíú#—[R—[r¹ÈI©a¤EžMv¤äíLkŠi½0D•b_"'WÓrh¹e?’g¥ˆ3•ºÜ¹šÒti$ìK—º)²“8SLk.Eö%~ ;¤rúÈŽÙ©ªdZÕ¼ýˆ¶m×ëúÙ.uQr&% o'ü@MNŒˆ~1"bsJþ@{(ú#†ÈÛi_Ú -zO;^'í+ÏR«†ý>u*ÕVª$CÈÉvI1(E†(]S§äíluêr ³ðòFPÓf¶ F[Pô;ü(E¿#•b°í—Øœ"käíì÷)eu[³0¥i§}Ô| †#*Éy6Ù!Ϧ}RxCêTê’ åÕ| ÍUógQéÊ`ꔼiM]z‡iUk«sNÔ'ª¶.z}Û/”?Pº‘5)y;{mê’@O¦.o@¼öåª%ˆj­¤ÈNyÙ‰7°ß·Õ¥N¥ˆ“!ªúň#¢Ÿ!—•Ô©~¨¶M¦õr ¨ÏA~ V'º¯Ã/FRôúËYRgåe)~à¥Rì÷mu)f¡–>9ýZDhŸ¶_«õ¢Ö =©å;$Õ¼0x9‹gS§r ˆi½:ýQ?ŠÑ¥×§.géõÊꔼŒxIHa3=yyc*×FÔ6ÚQ~Q«µµÕ© E­sÂ^­smSVm}ø¡ÒUk—[R—[ÔѶÿ†‚,j*61"ú(ú~1u*…ÊKÉ]JWµñ²×2 ÛêR—^`v´NÚ§£•«µ ¶ (Ï&;R¹úº0$×2Úsik¯4µ%áÙÔ©Ž.ß9—Ø‘K#"Šþ¨ß“kS)eµ¼ ÏjJíe—7¦èÉKBêòF5U­÷jùÌjïmûUn9“’?H¥ÚêÔ’±‘“íùttjñìGj÷cZSíývJEͧ–ŽT7ÆÕ´.+J7²&…Íä.¥«šÞåjuj£L{íhãRn¤!;Rd§6ØГmuòj&Nö£+F²ˆýìG—ºàY­Ghíðr Ðö4X0ær)F°=%²F^†gSt”¼4…¶'wy#³PMR«~ Ø:÷öæÙ>zhã(Ù)ÏÊ5\k½RG§VpE-kÙo¯ê\!RZY˜v-,A€Ú·Õž¥Ö½:2ÏÊËRò™T{C!פÈÚšb¶ÕÑ“—7ªO‚žT‡F sØ´YÕ/jc=™Ãü¾½m̹òž¼ù¤SÉ(€ý"û‘6#€¼ü­ãùÛÿóNLStìKÚ|b ØÀùP A(‡ -AâPõÐÀ£`,Üa2L‡Y0Àb[Ä,Õ¶Ó9ÿ\wý/䧵´à?[Zð¿ZZd{K þWs3þ³¥åbK‹bniQòZZ˜?´´(yÍÍŠ¹¥åb‡ôÅŸ¼ú3:.v\嶴´´´4wúÛÒÜÜÜœ;ý·×!‘ýËÿAm/ƒåÐ -kal†í° ð<OA -Ã1x^€Wàux Þ…Óð!ü>‡/ákø+|§>©øOìÿÁõÜÓù9ùÒŸg#Ž`ùOüÏèqýå§77_ln¾ØÒr±¥åRsóÅææKµ´t|oi¹ØÒryï¤.?t•H ¥¥å'uá?;‰µå·´0·¨÷Ôdš›/67·ü(É–ÿ@Fkl›ÐÏÕfÖÜ©±ýïå*³Yy#{–½àZèƒ`Œ„FI¸¦Â­0æÁí°Z`%¬»al…°„‡á1xžgá‡_ÃKpÞ„Sð>|ÃgðGø3| øŠAG¤óáð‹‘hðªC圹ú:Jâº+舔_uð?!Ç‘øÕב¨ß‰òÑݶhмêø)}ÿ©{6Wù—ºvªûæõÿææËŽoW6‡‹í7Úv·´Ë\4㢖KÍøÏŽk-Í-ÍÍ¿]}ý²¾YYߢþmÆÛ[pQKûߎÿ.¶üô—Ž&tñg„•õ?Ùä:_îÔâ4Ãô PÑ/úéÁ¶z°­{ñYòBîŸýÉ ÊêoØì Uz$¯‘×Ø —n@€ì٧ػˆzdŸºÔÈÞ-_#_“»·‘ @OØrO¹';ûÒíì@ôeÿȽ¥þEäÞºÔÈÞ}ér€ÀÝt½fÈÀê"tØ!€hMotr`¡ÑšJÄã·Y¤(G)Ê¢3s“¿¼åì®]ÜòKziþ™ùÇɱ§çpp®³gwM88=CÏ @•è±Ó¾=£8G/Z¬~úIå½ÇWÞò)¬~ønåòö-ÈlÚ„Ì–íÊeeU  -øÃabPOBŠ®÷ˆ={†×Wo¿ù–mÌêÇ”S?¦¼ÿä“zìqŒ<–ܤ\ºg“"oÙ‚tÓ=ÈmRž üá°_Óã„” %[¶”Lœ2LgïæžcVƒò¡"?.íô$üÆUð¯r.(gbW•b´– ¾…ýPH~µzÛ-7o¯®¾gψgZûãÆ5Bê0"¡ ]èt9]~‡Ÿã‘Ç<äÅ X‰åXŽ•Xîú{cãØãjÛÔø+j*‘.:mï ¨Qþ4¨¨Œ`ƒò¬­ k•?ß²mÖЦ= Ê',¼®¯Q9ˆ úëú)çÂX2õÁñÁ•î^{~ÍšóëÖ_à•_? ¢ÊŸ&ž”ì÷뇔ϪÑ;°Ö¤¤p¤¥w/å/,ýèÌ~3÷ŽÆâZå«þ½tƒVÿkÍšóëÖ_³æ_«œW±FöKð@9jksÔ/4ÞKµ“Ñ+Ú3-À·”hRƒoOÿï­~¸{ÝÅõÊ3‹þx'Ú^~mwþO)·Õ)ƒðXnk½¼qÝ¥õ.®{_yŸžYò§¥¯(´½²ôOK€À\å»– nÕÖÆS,B•”¨£5©vé±ÜvEòÌ‹%Ôޣܷc÷ú‹w¯»¸#¿~οvû:e-ÈÓ,¤Ÿ C”­ë.nØpqÝÇXO©ò¯¨|ôŠlhcßÛÌ»àÀ"d4c`)F¼:VžÛøÅcñ~íŽÁ+n|`2yôn¾í>ýÓ}ͨWùº7mÖƒywöËkûM\ñ›íÏLÖ—–~øÁĉ«Æ ®uÓ‚ù£⬎yªºb<ïÑò.@WŽÃÕaçs,M\0PV^V^„.§‹ÜvP÷Xlät앺iá/vLHLïæyhñí÷-æ¦lx^ï5ÕÁfÜøÞ‚È·…šçÿbѽ‘~».xðÁ¹7ÜÒ…Õ=¸ðŽGzEJoØ{¼W×b@€ì7ÌuÌ»à`+±\£ðŒT»T¨=§ÃÎñyH‚Å [RPÙuÇmsFö*+¹/9g×ØåÞå^ôî'û*úßž˜{ïðž –·ì˜vÓËûÞý»ª—Þ˼ yèÇs|YyYy,Ã7Ç¡{üàý뮯X›|~êÞEÌ»»” Ó‡qtËÈ_­üjÁ ”fOÏŽ‚"ŒT»œ®",Ä`.ÞÍÞ©Ú𫲧ã#Ýk&×ö4®@z`üœå»— ŸÄŽÊ³×vÛ3mzE߉_Û¯—¬¹lÊ­›+³+Øjö;(ÀÒÎÚœ.‘½B;qÒ‚ú]笺oi—^ýägÚÕ3ÿúáòÓÍw^ß2yÊÖ¼BræxÛ¯–¬mX6ùÖ͕;ì×̽ì Èy¬wÇ3`‘ôècš˜Ê`(…lf+#É|öÄ`(º`.—d¡d’ m–|)Kþ¾|“¡d4 -Ù,\ÀtaC,ÙW™¿¡ FÂÀÕ‡ÐÃð{‚8ÁÍÂPz˜°ì â¸9û:›bOƒ¼PÕpQšfd=SÈÆ2ëÔ; Åž€§ÌÔ•teËôe…eÅ]]ËøŸ•óx½Ó\n»ËåÞ>&áñEE÷v;Òt_âum-1zÜ.„4>) vŒ¯eñ˜êÿ?êÞ4NŠòÚ>ç©­«ª—ªÞ—Yzaz€jfŠ™¡í†®(qÅÉ 5ŒŠ (ƒ( ãB!hD¤ƒÀ5bPP@{Z #q‰F”+qÁÜDrƒ“´’ÂõÂtõû¡º‡Íý½ïÇ÷ÃlðÔ駪žsžóœsþÿcC›Í1½U@ÁWýŽ† „¡Ñ×o`$2ƒþåó³Ï†¶ë­·ôÂõˆ/9Ñy}˜kàžæ(NÑ ºªôã]v&ŸZNZêŠ^€Œ^P]Íè…bS&9ž–ÌÁƒd0 ë:éÇY©íðªMÔ÷1°”ëÈño‹l+gÞ¶fý­oÔßâïøÁM\ðjå²¥dØ#‹oÙüóE·lî™zîÄ«¦ž;ñ*ê¸kùúwß̽ñßþ‡ï[¾òÁûYëÿÇçûßìóÍ×ûßZ¾zÍÝ÷<¸T•Ž’,sƒ;´°?¢¸$î`ü(iwPþ»ÓéÈáøÝb8‡ªVà,W/]`A‹%(Z¿ñ– ß¤©RôtZUtU*¦Ófád -™J¦Wuú’+M&kZzc¥ôFcƒ«µ’!œ|™>9W¥ÆÁSõÂ’ù7-ZúD°flvvϵ³.ûöš–ѵ#Cøôßðí?þü§3:ã6®½²ñ¦ÇÛnëýÓu$ñó{'¤Ó7¬kès©f,Ý‘#.9"¯¥vL¹˜òS;¦P3ŽR~@¸_#WP˜ˆL®0©ŒüÈÿ3³ ² å¹ÂhÄ{Œw°Õwï‹°ŠŽQ'Áv¶Inâ3žé)X€Ï’YÔVÁ0Ô¯:£çÉM³³ÙÙ³³kçLžÕuÁ]³¨­ÙÙæ?]ÜuÁäY³&_ÐU©ëgw ÖõŠ2^uš©Æùݺ~m°®ÿSx¶ô§AtLãØ!uýßÁ“|Œ7–ëekÂ5‹ãßãI>†wÊ5ÓUQ„ªÚ¡5íSJ_Ò‹ÙÒ ÜÏpjYnU¡ªö»rï”ûZ–[F¨. ‘k¢¥ö ¢¥>†Ýe¹J”€Ò4-¥—¾¤÷°¥A¹ŸáÚ²ÜX!œg˽oPîgðTYîè(Ñ gÈ5®¡÷0IF‚‰¬ZS®ðVWFvU$²“Êk±@^¥›ú‡ÌuŒ<³Âݬ÷O”ŸÁ„Çôs¨F®•´ÀE•µ{ûò§±P~ú&.ðÁ<-d<–vÙÆó¢·h¤iV a] dì´ûÂI»5kõ0¢e°f±´Ä"Û‡kÁ_iKœ–Žëé2Ý]&íL*ÝÅJlcêXiÕÕ\aøV=#PŽÐ­[Šn?+éÞÒm+>Hºé®SÉîâÅt׺½{÷î]gü/–Þ ™<„àZÍÁ“éEÙ´‹¾v{®ôí.‡”²çJÇ4«`O‰v΂Swåp®fþkVé ùº‚l®’Ž›s6yUÒ5‘((°V…_Põ¨ž˜ÇtøÊåN¬Gž»ukvÿþ±÷\vÿcÙë¦v®¤ŸXwÏ=ëþgòäþ^œA»oÉ#o_)•J 4Ç ¢ó>)29ÅM<‹4”ùê#<Ŭ%-ðzá“G͑ѳGÀ£ìîA©Ÿ–”­Äw0¥¯ð+&3(õÓÿ8|Zê# ü3”z¨t¨l#,a‘:vÿÄä¥úÄ´h–èY#a£ÑF€É“8Œ@þH™zA30¨36ü-“'q¸Øó¾‰N²ðô :btéKꮕ´Àè²6\W^áž0‚; ˆƒ+¼´Ó¸÷2ûÀn¸O m’×9)?é|EÞíd×96¹ŸtüÒ½ÛñŠ›µçJýš×JÙµ-2ÊË\R‘j·:8Ö•+õï‘ä”ËeÏ•úµ€$§ìv ,z7…ÛÊQk8”8”€ë#2x¤MMúÂî‚¢¨%¡ú•d2Å&%“þAîO46 ®S&ElE¸Lbª)U£J";ÿ¦ôG&C•1s£ý‡è駶z”£L¶ªR n7®¡;˜óš±½™®3:q«qA1‹Ç'–J°Ä¸†êbòƒX¯¯á‹ò}ÉV`Êw_Ún\ƒ&OZà²Ç}øuéªò(‡pzµÝa\C70ù -Ž -¿Æ©åQÉD.™gk¨zBA…_ÛåQÑj°Vžä½¥г˜<`‘_Æ­ç6ñOq¿ä™fv¬@ü½”·—¡‰­×n—zE,–\é˜V#ÚRv{ÀÕcYaAKˆ:‡0O ôáZ– ¯ß×¥¢œ¬¬§B&-«RA)˜mTTYõ´¨a“½£¾ÙëkqÊR<åä{·N{ãXmü)qëĶ_nøàà¦k™ü~dð•úµ€…O‰’Ó‚vDª½Ú!³¶v—Øîò”M­§bj=œ$@P6‡s5^ržëÐ% ¥>"C­t\/‘Ž7Èd µ Ì[I46@[½jSK½Üb¶U–c§kK½l,Š¯ë=œ`øŠIWf³÷^»ë¦‡G\dÌ|Ä~ÁͤëÀ²I?ù¸ø*]·áù[±®8þýg*ˆ6v÷ ¢íSœgÚG“»/<”cÏD³eÑlŸÂË¥ÃàÔâð‡`(Ž¬ô%}‹ Ê=„7™’D†Õ|WîöA¹‡ ¯ìEUE Ô†Êý±q ý“¯`Ùðk¬.ã3£õg¬Hr>=¡‚bï¯6×c,•1gs"}ŒÁ²•l#4¨ÿ¿æƒáá²_šˆ"$Æ "ØMÜ“,Ö®äùòy«LÛH»•¢€gÛ9þ]ÛS‚£“}—<Å”)5¤Ó¼¸ah€ùЀY€ð°H@–dgRéÐ;êÝzúÈ‘búÈÈdŠi¹¼£Þ1‰~š#žˆ¬zb2¾ôâ‹Æ"ªÏX¸c[‡SŸ{ÎxvÝÀ°t¬ôßxŒÙµ0O›H ¡é|U•‡­ÎPÀºV:ÒJèb¿¾¦,.«^û©} )ð` ?@CÀlÞ¥¦öŽø@n€°tBï>’N)6¥ÓGŽ(`ê£j2¤‹i¥±Á¥Ê­²ê‰yTOLvû¼jS«¯R¶Û¬6Çæfׯýu›kl`¸{|ã%±íÛçÒqäæüô—댧†q[¤ñ7nÆaë~9ˆã±sŸàø²ÿà#¸ÃCYMÜÜÚAÜÜ'°§tô4–4f¢æ†`þ؃r?ʼnxùi¹¾ïÊÍ Êýv˜bÊ ~G.”{Ï-ûþ0BÈó]¹Ûå‚—M ÁP¡Æ†\£V™<‰Ã80qÎ÷”­±ÛcuUVÿ£fè8‰ÃÌQÄRåóƒ·2ÊÀF¸VÒç˜ëžpe „üÕÜ<( Ÿcö‘˜VÖ§©eqG\þ¡(À³ð?F¡,×Fp8ÿ/V£á±3΄§Yà_™ƒ`ƒñ}@—ŽioK±Ó9ŽŸNçJÇ4É!¥he¶ÁÝØ.Ð ²ª@&“(Ç‘Ü;üdïˆÄÄsè‡_ù±óçÂgœZR9‰[všHx¨‡ßcoAÀáäkhÕêh¨T’"n‡‰J×/92U¿L’SõËìöT½“"þ0dš›¥÷‰ÄXL47—Q襣ÔtînˆÃDS2l‡QÈÁð쇄¢'/ãÅÔä±9'JÃä‹x€(ãÝanïP´¹t”YÍì#-°Õ‹ ͧMMŒR0qR îôØ JoÒ‡¹VÒA…÷õVpj5:LÁhÅ5Änw—^ cö‘xÌ ËrGF)9Êuù‰ÓÉ„¦. -ì{p&PwƒR¥ÒÊaú3äŽýû¿oužGêÊ«ÈFøþ¯Õyþ†0Ð9‡®Î³å>€_–åú¾Àÿ%÷¼†â°¿+wÜ ÜÕ8€·–Ѻa‚à«AÇP´®)û׃²Wã9t¯3Jœö ´ùÙZuÞ™¨wáÿ½VW9±c ŠôÕªÓÝHú€AQ ÁLžÐ.f›åÛÔ|þ.~+Oñfó‘BAz2Å# «A7Ç£Šô%Ô˜‘uÏÛL5½ÍóÃøOx -Ksu€»(°í¦¾B) -(“ûb$ur€å.¹KFéu+sÎw5û7ºü’3Õ,Ù)k®tl—EHÌaB Çšu¤ºš ®cV«ãAiƒk®‡ÍmÎa£6|øîÑ϶Š’dw¦(š£x¨ -ù)o-a«^zËñ:$pM9R§ÕŽ«]ox—óO²[Æ}3Ž8Æ)ã.7cÜ]㶌û|7®Ã’N,ìn:^îì|¼àL*i%-—›€& s¼p¼)“œ¤‹é&%]LKG‰Dcê®X³ZkV+yÎôíܾr­Œ›åʸ­>³Ÿý`Gè¾^õÔ -ûG[Ö¼éËÚî¸üG·;~¿·ê‰µç_òƒæ‰WÿTM_ÛÐ{at˜ÿÊ©¡ºèòÛ’SgfÝŠu´ìýó¾¾PïÊûn:ÿŠu+ÖÕþz¦70bÜSš…­ ³|ÇsÉwL+ý‘¾¾œ€ Z ¾h¢5Ð8K*à½_8ê †g]ÿt²Ngýÿ´*Å´ô¾¬Jåây¥`â PÌCóXP›ÀU/ÇcQNÆ,yÑxà‚[,=j|‚#Ž~Œ â—½/ìè!.㞉gæâøoÿÓÆŸ£∞¥Æ§®%ý{Ø“ÖPÓ‹V¨Öœ4Eª-áXªÚo“RÕUÀ!ÓœI$šÍÌÇÔÒÛÌå&›RúÌë§ ^Ž%Kã·I©sª :ãúÉ¥·™ó™ƒÐBVWyýÄ¢¥|½b ÇRŠß&¥”*°ùùƒ×?>ûúÊçWY±T•ß&¥ªª€r= ¼Qü;Î,­ D5™ehG Å° )]BD¥»p¼É™¥Ø¤¨&'Œ›«oiÝÿpoÝ¥¬ñA.÷عç'n©pë–v‚ ê^´Zí9LkV¾àQ”?fYUUÊo³Ø¤46øZ›|ߡе^6rüC(t/dùˇPè"¼D?‹G˜}@AƒV ÀRx)ÚäI>˜¤¹ôærï¨ã9 å^¨!T©—n~}·É Tékúyr.óërý]J‹ ò,ÏmáÞ¢w$´Ø°h` -Ä·h°(ªZP UÑ•(éô~)-«J™‚·XÛyóÃO>¹º¸ýúyôÛ»wïÞÊîÎìƒrœ¿)ý<O$BvÈ([Q -¼ë×Ë|3P@ŸdöA= ‡ãÈá7¥ÙÞ6‚ö\iÙ.·;eÏ•úwóÖ”Qz?‘(óJD˜4³Z!Öò§Í€èn´´çJýš•Sv„Ѐ*zs™êƼšÔ3û FÁÑ!WÛ A6WZ¶ËãI±¹RÿK¼-Å"*ÍC>½¦ô%óCæwÐM‹Ì«g€}©!$ (½;d–¿föA+¤qÁÏñíF;AG®´l·hK9È0^æ ´[YöLóŠj‚5¹Rÿn«3UCåíùq2¿®ÄËðØ€ f§Z£A°Še¦úfÈ47r÷3yâ…a¥Ü@[˜<ñBèùL( GFq,;(7Eh†™a¶çäh/<ÅÂ2ít?ÕÂ(š¡b9ŠC'|ÏcØŠ¼ÃŠ–½CWÔ€¢ú].÷":RLgÔ´¢'“å^K+ÇøÍ–K#U -#¯géù§6áÏ>bäQc ¥ÆÃäKž¤&¾°ìÞJ¦€É/ ¨ðk0yâ…ñ•h7“'^H”J°3LžxaÔàýw0yâ…1€ ÐS™<0_Ó¦¨Ý„ Xx~†nAÚ"ìe‘e¡xA O ÒKˆÄ"Ë -3¬8ߺÃJônE (ݪ_qú’²/ ™t:I«Š.÷žQÅÆëYcø§ÇñàvãíXuMÄÈ?ÎäON¢G,Xv÷¼SŸ@™±ç[&O¼Ð•¿Í{l -¦PgòeÍOkº]a>`ÃX  ßn(ŽâÄ5"Š6 ¶(ªª(Òûݲª*gj¸š#,uS3¾$¿8H­eìÛ·{Ì/¨D0˜ß/4ÂJº•É4×NƒÝfÉa·æ€ÎAfj s¸v%Ìgx‚ºt¢[/× Ig - 3°Áú­ÔÎ-Å™üÉIŒ½T‚»h“'^Pa -õ$“nÔ’”(3hÊM ãúý¦.Ø…oà*ãR£`0Rø&¶ÂèÇ™ƒ‚ë5ÉÃxx[„”GrH).W:¦ l)O/GIA¶ÛA¤`Ð6g`„j:h¤ûˆUÒ ½©Pv‘YUšL–çd2SH$0ºÚ‰Ë¨M KTÄi&%±(ñHŒçGÈ~‹#Ž `è$²Fë>|ìÉÿÀÈvçc .7ºŒÏl ¶?þ |á$&÷þe\¸ýq0Ïøþ½?TX…¸ïëýñÿ©?]©dr©0ûH Ž)Ÿí^*gÿj£j#ì ¯ZúŠ<Ãì#-Ø€^x cž:¢Q„è0ÏœÞ-Ælª•ÙGZˆ¿,uçx‚ÛëÚýw0ûs,üNgnÎ`Bë.}E53¿&-$€><{¡²¿£A–¿Êû ˜o̦3Á#àV-r_Ã.wÊç—©~»”z$„¬du¤{€%àÉáz-êõ²¡6; -öam¬^o­¿K®ï¢dŠJÔòº$ ÐGdivÉ4EÁ™TTÈ2™‚3©’zBolÀD"¡cÅí’OãM™Xs¸yl<µ£GvWÐìäâ5›öý쵎ì;¿XÿÊã_#°vQÛ¹së‡ßsùuw=NÕy÷oþUikñOÌÖÏþñÉÚ¥/\wÏ·3ï¹lÑz#½îÉ;ŸúÉÚÁm̦Tº,°NKR4Eè% ëf–"M– ¸Ábgh‚,E± ¼‰ï2‡ŠÀ‘fŠÕr¥þ]ñá)È•úw«R+õkN×D… ük…o¢›ŠœH$ÔB²II*º3©C&­*™t:YÉŒIXîÌ\ˆåéƆª!TQŽá4#ÿèño6^YG× ¼JM<õ{c6 $+È'Lª`j0¥~M²ð)hGÛ%‡ÐîØ\éØ.‡;eË•Ži>›#%¹º$[•&¹SU”ª¶ ŠZPdUUö'µ $er›ÆH¸š#<îÚãfc­-ÍcÇPÍc¡õuâý§QÐ:ž™}ÁÏŸ¨¿ÿÜÜ}RŸ2#êí/žúãœ9ag×öüÇÓ¾E-çY§ýjùðŸ{Í•NLÓÜÉåNYý6{Š·»XG;ÚÚ©rÊ•Ži¢`O!Å9‹Îçp®Æ;á\Y—œèì#2¸¥zÑLÒVr´™ÆL@Âu&ë‘cò·×îš»aDö–ó¯Ìféº ÏßöôºS¿§«s7˜y -..}EMgvpÃí/ÝåÅ%€®\é˜6ÚæH-¦Ñ*Ù)©Í¢C)Åò¥d¡,š…OY,`m£%»#E£« r¥cšÃîHÈ;ºf³,²9ØM,RéCt¢˜–Šº^LC&QÈ$ -Τ’Ð…„©:–¥HX–0"`,J0âôªMxÐèÁ•¸ª¸[º߶?5ÂÂý×üÙGŽ“E¡h¥& )ã”1ÝØó~©TéÒC¼ðüÿ0ÃnJeòÀÁýÚÄA"m–(O YBÑnŠ¢‘¦X8 ”À"P+¹á$«-Åšb(†â(:Wê߉¦è\©ÿ¥PUª“FZÑ Ÿª˜lFú ›ç4}¼A\yÇn툈1¤T$?;~üQœøãG±Ÿ - |A;ñ™““¡Û˜M5Óuà…ÉZ gGÆÑŽ eñøR”ds¦(Ñmá@€s=º;‡s_æxV—8äúˆ >é¸^LKÇ Ç!“Ig U-(J¦±!Ò\6Šªì®!jÓl–U™<ÑÚ¥Wf³RÓ•MÚ£³wüìÞ¢Á¼fd®;<=uÅÚç‰åÔï¡T5–Ž/´Bʸ‚¼ÎüÄaIP¥~­ÆáNÅ,’3uC ¤Ñi#×îìí6‡+ÓêkÊ+YÄT•[r§ª$‹²°Žœ‘ºlBD^×UÅtUyµ dUUÔ‚r¤ÂTT6)ΤRH66 žH ê‰²wù˜m¶fƒÍc[ZÇ`óØ–zLÖ¨ƒ¼þÞ“ï.Û¾¹~ý¥Ó>¼óþeó¾ûðcÎ[L}²þäæ7•s®¿ïöןv.Î4¸ÇüùÁµÿýC×äÖμjg%ßFO ^¸ ¼¿ÝCøá¦=¢$9SL®tlWù§&Yø”ÜÆp6o›MÑîÊ•Ži¼Í‘²K6GÊRbï²X‚®sA—1Gä=)Á»‚D7MÒûRÁäcR J¦`†¿bfÛt›Ä¢õ86‹šDSH²oçwþhûc3ð¯?Yøõís—üĘM=2Öž0þ£Ÿ~û1ýµ÷Âxã -ÊN‡Z¸Z‹6ùöøˆÔ&Ë®6;çoãDª­Æ!J6{*î}ÊKB¹Ò1ÍaSÀvAH’Bo—h¾E-( =™b“’)dŠMfò+ÁŽúaòX8]ßÉ”weLÔvѵM]ÆOpØǽÓëf´m~å§fîXý£ãiëeâç„á‚SØþYÝ?öþsÆ9+§Þ¿ÐôFè:¡µØÒQÍép¦’…O‰È²íQÔ…ÎÝCt ûˆ Né„ÙR½I' e'÷t­D¼;»¨}ú­Ù}O>ñ -n&+‹ÝwnÚòSrGñÖ·ÿú«1›ê¤ë@„'µÉE³Ëp@ä-¼`AŠ" Š4Ër¼À[† Å²„#nŽ#4#KDÚ-Š4Cd9‹ Úé²Üew¤¸\©_³óBŠ#( G‰6ÔŸª¨J"¡ªŠZ¶#éôÙGÅ•é Ëg}O[ÞàQ ¡ÊcŒÇN7Þyü›o7úqÊ3†aœ|/&‡Š»ÉÅÅÑE/¹¡¸É´3ôTº0¯ÄÒá]6)EçJ‡µá6)eãåÙ6—WôØCš…OmºÝbwë‚g§§ßCyr¥þ]oÊ“+õk‚Íž’<èñ„‚e?¥[M›ÒJA)$LÒóL:Ý؉„ù*|²*›fÈ]Fuîì}÷gzö’÷Ê®{ïb!ÕÅßôG==0ͲíC+þùµÏïbã]ìŠC©Ò—ô~º¢ëKéð.‡”ªÉ•kU)%K¼òH¼r…=Ö Ë†ÛdhÏ•Živ—;ÅûegÊ/¹Ü©ê\騦ÈΔµKù.»Ýeí)ѧ J8×à¤1Ø -Uwa§«ÿ°ŸòçJýš;Jmõ÷ûûùi¿2lÊ°eÃ(]ÑÝj±I)(zw!™hRŠMJÁ4dé¢YÄæL& HààÂK©NÙMbÑz6%Í’K%fÍ+I­ëœrñ=«ïÙñPßåWîyhÇ×ôÜxñå×âx±±û»>xâžgüÍ8^2þëØ1¬)¡ ÝÆËÿzüÀ.(•€À§#E°úÃrv„ŽZ<óTs–ç«¡ï¬lJÙïÿ7ܽÀ/˧”€?ìÙ§Š}ƒ²€Ígd†r§J_Òû™}¤…Tøà¯(Ebu~ûÙµ¨C;M†Ïî4yúadéKæF&Õp¯ÖF÷¾^–«½×á{­ªºËŸã¾Ð=Í=ÇÝãfy†÷ò„³Ûƒî‰ßÊž¼K;«ß凰!¤…–…úC‡C !äB¡ÚšrýÞ­)¦(zQ6ÿ†L1mV«ÈΤbÚNWÄ‘[M|ë`ñ;'ÇäÈHªß˜`ãÞ¯ÞÞ9mvhüÄÙÙG²«ú¶ ˜üsƸë/Þ}Õ8y²îá-ëötÄØJ%“–k%-˜(?éüž—¬†ôc¼¢ô%ÝÍ„ <®]»\ÚÓ‘B\>Gh‘/&ÉÓ„©ò -f•o³Ñ÷4³Í×çsvGyG-Á ,'qS8Šã˜^=_¯Lyƒ]îÅîÜFφà6®ÏcA$œ§Çíæz,9lØSEH°Ç–#âË!G•R•©¢téD±I‘ -å2yÝÜ\ŠMŠ^yf¬=¯S »|$y¬ÓL‘H”åÈã\þƒÇ°æÂ×s¿½§ø\ßÀ˜G'Ææ÷|ÔEÏ}kÁEF÷â?ÀKÞýü½&TÿµRåÂ$^hùÞXáÿ ÃߣE£K_’}Lžxa´[-}ɾÀä!u0SSëÚƒ¡v\½n··WBk{0Œ—¹1¼4¼‚ÙÀ°<Ãx¹0Ô)p“#Õ»ëm®@n…¸t¢© gR)¦ËËÊ܈M7©±åH“×ã¶c,"GLMy]É)cäH½…µÿúdÞ¶ÍÆHãÒØ-WµNÕW5#ÿÀñÓ¯›xé›?bòÅÕß½çã+[Ñö§C=_º;_¡-'ÿ6úÖŽKê¬`¯còà†Z¸Yk¬µõ¢Ó)9<í¢è·DÖËN Î öW7°Ï°–pèét‰¢#ØÃæHµf‹8í"8$GØA9úp-„¥zS1mÞdº˜6o2IKeÆ<³¿uSÊ‘#rLVåˆìr{‹Q|îÕÅóžÜnŒ5.Ù²wmÁ‘³®¿ä‚•;_gòÅÕçï¿ÿÞ¯"g0ùâj²ðä߆-¹V_2as“/ÌÔ2,ëeÛ¥9R´‚ey–õ²„£{N©—eÁêÊÛÄÚ)‰a‘ˆ¢Ÿ¼K»:½ïòàFÎíöûÊKøH1}DV½™ò6PlR -z‡~Úœ>zrrLŽŒ öóÿdõ¯~°å–÷¸Õ˜ÏäŸ3Æw<ôÇ—;±÷ýW¦ÄØ ¬ñïq-¤…L¬T”9«#a„H †ØVKéïtœ “rI¹¦ÆŠ³+_ýN O[‡{Œ9ôX&"œ¯9‰kx†àRB8K§˜Ãµšdã:MDŠ-t®«dvu”Œ¢Ù,'I2 Ù쨑U™<þ€1o ¹e‹1fò'ÿÉØNN:;SVЮr.]æo§ip´ÛjÂð¾ÇµÊõ0Ïð ïá Gˆ«‡Ï‘jMÒŽN°Kö°âÁŽ{¹ïV‡Þ¡Ó’QHêNYm\OdÈ¢j-7ÒJà*ÊZÌbíÖüŸÝjŒÜ‚zW^òãŸÄäŸ3Ò¾·êǶ=uëýKê¿“Y©XcæâÅãYº…Ƀ Üpw´!.¡cxžw'!„YJÓ^G'ïêEËRž÷Hi©T -²j~%¥UIKÅt:ShlpEdµ\ ¯:庈ÇM¸È7ä÷sWüeµ¾–¤ ½ù -2’ÉŸüg±ˆSg …5zÄE}ÅÞO»5Tò)€À°<“‡Œi+|^ï;·Ûãq3vIšA1nŠbGÔ×ÏPݪÚŽDfDcîh4V¯RÒˆFÆnÝ ûÜtÔY¬îÅææÑžª(£zù–ѤÝ=ÇÝ㦦ÆfÅn‹Q“ííT»}5Ǿ˜ê±s“FL1U5b–zÛÖícì”ĆÁÛéÉáûšŠùF4Ö«lUdT£/F:£9|_‹TA¨³eYBÕÖªþ*Jª -W¨:\EWUkåãÐÒ¡wÈΤ¢w/LÓÒñÂÙéKJÇ IEö%u]×!“6ýTÓ¾$“²Y°’1[+ícü‰•ö;†üÂœæÛ”'`ë’B‚Q–³#çõ¹bÔŒÉ19ÊrTÌÕÒ:ëÇ`ŒkV›jÐWƒ>™j¿íêI©+n^î©vá…Êø+S·Íÿö­w®YxÕ7Ì»ì7¿í^¤]‘T/¼0ã^yãUçLºú6&_¼“\÷ö/îj܆¨¯yyfõð?~\ýÒÅ+ÈóË5âÑÏëÃ7>ÿèåd[ãŸzëzBî­ô%õ"sâð{më•dš§“Ü蹕¬'O‘ÝÄÒB']“èÉ®«éi®ÁUu–Z±ÝQÎßY­Á:9Dº·>ä¾Zá|>Wob«¹è4nšt#w£´”[*-«]S»µvg­•g«Ù¨·Ú¥¹ZI‘“z>¨Æêj®¢á¨]]ÝÝíŽòQ_ß=Ñ€õ²ªèj!©½Tôr㪲ûÔ¤tèzùç wÔ@?ÝÈ*ÍMeøœ=õÎH“×ã.·¶ k?“6ÜÑóð¦åÏëÖo×vGògãpþ û7Oïýç¯gqsÃœOY´tõ¶š;®š¶î†ÆăǶ¼»¨öW+öÁdݧÇ2yàáZ­š£™aáÜ ÇÊÂZx ) ŠpKé®Õ$‘,^âÃ<ÅK¯Ûçózþ*ÚÉJ´Õ]ÕNøüa°öŠ" d%ÚI‹þ€W¤}¾(©í„°‡…iÂh ÷áZˆT,¬¬*>Uñ%uȤ¥‚©X…¤Ó—”˲3´ª±Á¥ÊM-­ˆÚäûŽE99¶|˼¶IÍ?\|CuMxØ.nI]9þÖîÿyó Ïáø-L¾xç¬77Þ~>µ ñ¢Ç÷ÜPSÿ¹áÇÕ¯ÍÄâ€`/}I½ËäÁ 5'Ö^›ÍÑ+"ÓÄJu’¦4‡›í´v:‘§ä$œ³·‚K:Þ¡wèMÉ((ƒnVcƒËÜɆºV‡È?¶õ£˜üÉICý¦ïËàž¥>#ŸZ*Uò©ÄKX€³³ŸÜ sx!ƒý<*¹F@s¯gò A¯6q²%E$ÉAg€äXBQåe ±„›Ð+Š¶^ Òh–¢)‚hYVŸP|ª_QÌ0…y˜)‡k+VÑÌ—JoØM.b•Gí‹Ö7{Õ¦–VËV\…S·ãÛnžñƒv퇩«T&?p'u÷©Ÿ~¶,öôèiOçÐ}LdðC-¬ïÖ¾TÛ˯²¢5GèEpæ°ö¥@/µrøˆæC2¯ja“ŽIìd˳,rÞ6‡¯ìªz9|U.R.¡j—‰kDÄ­âNñ€xXdA”DM쉌(F•ÝÂD¡¤ãÓ èéâó»Ylé8O¬9Íc‘'`óØx=n¯Œ]ÿŠÆ·G×l|!¼)Û÷‚q`}.·žvîtïñ…±ßñÚkŽ8~‡?ZñÕ¾çÃ[ÞÞ¹ó7Ü÷e‡ï1æÐ3yá PÿÉäÁ iÃzª}–ý6û*šáy:HŽôJ’½—¦y™'vB×îr |Á%(HF1 ™tFêòFbr¹’Ý ´Ê*õŸ[>~¬wïÄ-·/}:¿…\víý¿wײóòNÙî2˘<ˆp±&°¤] Ėõ{øN ÓiÉá›»hÒIçðMÍöïžÁ‘‚t¤ ¿†L:)¦BDVåÈò-øàV|pË)ºòÛÉI€°Ü˜Ã˜<8`šæ´Ù–´;ÀB±.µÛ-rýÞ9˜ghqôáZÎœƒÓ|éL1=äu ¾’Êln^}ªnÈ|Ì7CÊ•6ðÁZ³¯°·‹`kÂp^nŽ³ÇIó çåçì sG8bïä@œ"vŠ”(úm~)-«Š®ÓŠ^8Ë–+Î0r½abÃÚ­ù…¯F‹‘%6Œ­[uù]þŽÉW_ôÞª_%Ævêg=÷MïV¶ãLZˆ‰ EOa7ÙéE/*z3X @ËLDðÀÅZ§°¶‹`ÞÇRiGó çá'õp9R­ >bí<ýj½Ò‰½£˜–ŒòM ºôêé{8íϯ܂µ›_]øš1`´nÁغU—ßùèGL¾¸úÂß®Úf”žêùéôÅÃ&•¾¤o`BžÖ®Ýà~ÚýªLÅ…R‹”& “¥©B»Ô%,VÑ+¼é ÞmôÓÞ>Z¶;y @p€KrMqQ.—·WB–¥{# @ñ¾ÄR<@K0è -`-‡ /W±=çêqž)$•‚4PLÆ‘ô!‰ŒÁX˜ªŸ€jd "aªµÕ&gk„Ìùßßd“6.ö!ƒõÆߌcF×µ•—ï~r¿Å8—ºèØ×Æþ¦÷>7.3~k¼jLÀ¿4Ú„Ñÿ+K_²3Á 5ð€–Zɼä#^o *ÎŽ°ÎòΩºÍÛSµ‚]e}˜ÝhµJí -ABÀéíµ¢ªzY -È3ÔË.èásDÔ¢aWu—c‹c‡c¯ƒv8ˆÜ NÉvsÒ<8ÑâtöáZ¨•N(¦3Ѥèé‚dtÈd -™Œ&*˜^Ÿ*«N³bQ br %§Úä”%‹’•[ŽÊ8úó?ããýþÝøÚÿ·-$~pÛŽûŸî “/ÎÃqx‹±Ôø™±ÉèÂÅXS\N>6þjìDZA¶o—ëèé“Ç6h¦_è @zÁž+õïâ…”]I4² Ј&‹JG©eÌBâp¯veŠ»†›éØÄÑÖœ?lZÍÕÃfùo¬¹aØmb¼B\%o7Ê6¦ÍáG?Ô´‰ì°6YdíÛB}!Šgí¼ÇkxhtÄPï°#gÏËžá<éòô ÔK'ŠIE2:ôŽBR9­Ò&AGcè¨ÚI,jGn0æ'²äT›Z¨! ºIá~BÇOv­LÓó_ÙñÇ÷ßX»ãº¯Ž?<‚¬º¹wù†›fÿ”ùÏyWz¯|}ý»ÆÿûKãµ-èÇÉø<³\öâo>{}ï¯ó¨sè8ØÀaX©]À…³;ì¨Ø3öìŸÛiÞa¯µÎn·ù²Àú³6aÞÃxø:¦Žofšù¾*¾|²ç\] SÕÅ;xäø±¼µûuɆ¶‘÷DxG-z‡Y+R¾ýbr¨IëÐ;ôîB²±Áeš³¯mÄe²FÅ(WóñªE½×Î~píNcqvsÇÇ]뿾£ó†•»éø¨U7üì"­¿÷yÒåŸÜ|•V¤.¹|êE&®†Ü@Ljf§²À2áh]bé#2°Ò ½ ¥!“©Db ð_Ææ,_?0€qÚJÇÁ -2\£µ2¼- ,Yžè¯úYdYIÿ€ Yê²éàè‚Óœ$N-_ñ¼Ó tèºZP -Ò óµ˜Ng -JúÌPA‹‹pùéèè)^¹ôÒ‹¥[ðwt|`ž‘ÁÑÆA|ÝÀRñäÿb…ož@¼p`i€žMÇ¡«µKß‘ßvHþxØWò_†ý¯|b˜…¡¨M›Ûá°545mŠwÇãýÏ·Ëív»jÃá%‘¨;‰Æ›(ÇðÆf56ZëuÑyX *‡ª6 ÇŽŒ²<ߜȎbÝžP8"ô¹ð¥(&m“mí¶9¶ÛlLËðIçŸ5¼g8ãuQÆÆÝ<ïÑÝçAPEk‡7Ä›ØPdÔ¨°9¯yMáþ ‡‡Ž…¨P¨µ¥âæ/7h’Šƒ¿V¢ét¦>yünd lÀqF'45)ôÔÿ¿ ¨2¹sR²uTëÄ©ÞQ£FHMçd:¯yüñÍ“n¼ ióãOŸ1>Ùì1z”·ýBµeä¸ItÜh>wË]—×cúØôXmŸñ2N¾a¼áÁ¿¥ºŒ—qr¾&zÕ³Mµ¸>ܶ¹g<þaDé(y‹žÃ`Ÿvó_«8!»QÁ ~€Ÿ#Í;° ‡è³9„Zð¡V œ XÚlÜÖ BP - R<¥ á‚Áê6Ÿ8+x[pEp£¸1°MÜØÎ3}|Xt2@0ÌtIR¸Ë#ͺ¶Š(ŠÁ®€Qçˆ#ÃÒ‰BRé.{«²3©ÈÎäéÓwåù´Vë Ø<˜‰“z§Iîåõ¸ÙXyl1{›4tœ—¾,sGÓOÏ;yß–®{žÝh|ÒxŸkÑ…_7áüËðð(]6þ©»ª0Ñw÷W´í~ðE£ê~¥’9#&GZÈueÜc®œ+³GÏ>ÿÏ §ãPµ°]’6™ç>Ÿ×»ÄŒï¹}Á*ÖNK48ƒ9Tµs©±M€õx«„Iî©n2‰ÊÞÆR¬–èàuûÚsªCºT®j¨Òª¦T1UUÕ²ªèÅ´ô/_“âô%MUªð¿?`jL%ð} -3/ûÃdk¢õü©ÞQÊp{Ó9™Ó|sÃä¦,7šÏÛ|×åÁõU×ÿÌ †ÁUú_j&.Ò‚LXÁÖF VÁFéSjyAŽäˆ¬9\¬n“':.ä®Êrl*HF‡Þѽ° @FM”rÐõt yi~‰<Ÿ5z\×\5ö³ã:~ê3ê¡â7{nŸÊ=ŒÖÆõ·Ð+lÓªˆ$ÚRg±l"”› -žßdÖsy¼„R¿6ÒãM ”€,Ñ<ÞÑx[Š°žð¼U@^°P„Ó†:±æJýšµ6œ -[wZÉ+ZËÖ\©/¦¬J"¡w'ÔB@QýJQN&É$dÒ²*¥ÓJ"‘QÓJâÈwêÓ.5T^„”»å/_?Zg”–_CÇž§®8õÕ6°Z6°¬¢ -¦jq>ûùœÞAj ái`9Q 8} -‹‹¼ƒEŽÍùetIDѬ ÜûšGÇtÅÉ<#Å䈛ŸÅG²YcV–Ž“0ê3üÄß©ÞAX@ÕÒqààÍÃd¥8á;¯þ¥!ÕTé„>øÊË5éå×[@vdÅYóõÌ7±ôs¨Nzñ•Ž&zñÂ$@¨ ¦ãÀAÛËgú9¼úEZçrxµ6z ƒÀìdú™ -1aæ0sŒ¡†·8ø ?ƒïäðËxŽwðæŠ,o[GŠGÊÝÛ\efÉZò†qtq”Ž¯˜O=TA1Òqâ…é@Ác3‚ÉC†Áøµ&’à(¿Õ1\ˆå0¢¹GÑ7øoõ¯ðoð?íÉÏŽjósÕ9Œhc‡ 7ÊKåUòF™Þ&‹v;ËñîI¡ÉáIu“GN µ‡§Öµx†Ü.覹p—ù»lu]îÎÕêí¡‘hÓA²#Øì[í;íì‡í,Øìì”ÝÞ Ô6( D?©O&‡Æ^2=-)—ɤìL&P’?—c2‹“[Óç’*Ùtt{Õ&YŠEYrãºk–­å‡ÏX×~džþÖéw_•Ý;ýöÛ¦¿YüäÇm{ߺ˜ÉÌ]ÆûÿsÒØ¿È°á?aúä §Ýeœg,ùðƒwß2æ|ö+¼Ÿ|J%°š{ñÂ5€ÐmÌ¡ÖÐq¡IóóvX–dËW‚@éìR9c¥WB2J19;$ÓÅëf,-^CÇæQkæ?‡ÆStœ0]‹ëÙ§Ø=,Íȱm¬Uà­º&"ï‘sDÖ¼nÔï‚a 쀽À€áâîŠÏ\^ëÅ4d2éä`^R5YU[eÕ|¬ñæqÙªë&^½"›]uÛwÒñw–÷\Þ‚:õnûÛý€°€þ ¬ÿuX–´‰¯sç±:uÑ×ˆØ .wš6ID1GdÍe•la›f›bë´}ccy‡­bxõî……ã…ãå¬éYÑšEY¼|NÉžzŠŽ̧˜O=tê3@¸Å˜Ã4ÐqpÀÅZØf·ÐÀ -,É:ñ+»]œŒäètGŽÈš(I²"Þ!~páxá¸,+¦Ó™ïÏÜRþüë–žz­òŠ_“ÉxüG:VðÀ$-îÉ"X³ÀÚ²‚°ŠE†õ°Ûä>ù-öc–%6]¬r›#–}V¯”®døË-Cc2ežÄˆLvàÓ¯n?°5oÃÍ +ŽbÍ=²w×­kŸ\ù?ª0Nè̯Wë•NõUQŠ@UÌä¬TšÑÆåT+“‡Ü¥ã±Åm-6Š±n¬y¶&_CóŒÕc%Y–+ 5mVÎÓæõúÛ\Ž˜€O4¤ó 9)GdÍVg±°BTGJŠa¬È0L:¡§›Šét“í)ÊIE©°:UXçL3º«Ìg–™x=ò|²,™H‡…óæe1`|9óÉû·ô\7¾%4*86þÒõ+²ôë‹ï¾{±ñ×ìu_ýÔµÑ~åOÈ'H6ýºøJ© ÈÍÌ>ÒBôríɪòùƒž]m6¡t”j¢'@Vj—®ñVºÇ»ž~Ä»MxJêöH–%´Ûí%Ù@@¢ÛÑÛ&qœËçZe£xÞæã6ŠC °î.—‹íârœ".[ŽXö Ñábr0V9%B¦)ÊIeˆƒŽžˆSmrùìXiçë5K—9Âûƒ¿ËÇò½þóÝ¿ýlçC}òšaÛ¯»ÃNn\g<ßóŸ`ãI´bí¯ÖUÚù T8è Ä S¡lq¡Ää‰.®`ýðwC«1?þ?ª1K;ËÁ`òÄ —©t’ÉÑqðC¦i‰H‘³~6åû%¹Íét·IÃx˜8³­º¯šqb@çyku“CسêN_a!jgŠrR)¦ËÅvéøê±Ó[Œ¹PšËµcËM-{õ]å5ƬKïñ]“ -«QÒ¿é¾¥7Ý[6â?~z¨øÍ=É®/YG^˜7Eo›n`‚e‹ð#mdHÈ‚Ãa•m¬+k±X†öÐuô6_Ÿ—.í°ìµ‹EôuÑ9bÙ]íu«É´x¢˜6o@O›ê/2éÁ°!ÓU¶ëòÌɽºëg^44vd³xyvÓ¶éí?ÛAæ>±nù ø‰1»0̺ÔøCÉsþêÞ<>Š"ÿÿWõÌä& á ˆé{fB8"ˆ" Aµ3ÓÉ´Lº‡žžð‚hð>]Ý]E·ë±*âµÊ⽺«ë®»žì~â¹+ÞÇzÑ¿?ºz¦²êgë÷ù=¾¿ÏãËLe¦®®~uuÕ³Þõ.t…?¬úöU²þÇÍ-ª„"˜<¯&¡c‹*°…ãJÂ'F"ÅÕrꦪ0Wn¨:0Wü³'Vã»/üþ­k¢¶ï~óYøA@°O ¯„"8l^ B¡E‘H)¼Ïq%áõU)L›ªÀܹä†B~èÎ-_ÛšŒfœóš ^D/…ÄÉüÙ’~;2ô>z逜Ù~J`L€ÉðȼSŠÆ'DŠ†E"E‘Š’š£k&WL­Ù>æþò1Wò7Ž¹…¿¿âš§*ž©ùKÅ+5C'¯ž8qÌŽš~GEE .ŠpGJ`âÄ‘¥“&ëœW…ªFvV•–†Q¤Ÿ8/¼<|b8ùÜ©èÄp`%¨¸ät)Lñ×!¥þúJu<^-7Èü£Î‡ÆȤ;>4Þp@n8 7X_°HAÕrõDT=‘rÚ=Ñ^»¹úáõgìÂK®¸æû»wrŸôo?㺶Ÿ°}îÅëfÏ]sb|öÚ­¸áûÃ~{q(óMKh÷;¹ê»^zñ7üÕºöì ¶Êù§žñýé— ¨­ e0ý×%(¼ÍžW‰”qáâ²õÅ¥¥x}˜køµo€†¦¹¾oXß-lýð‰ÕñÁƒ;w¼šýÔr¦ù¥ßu†ü~J¡:ç5>SŽBåþŽ°òWTQ\ñÆ¡RÕr8ŇKåÌ\ ­CN:¸äX¿±éû¦·†Æó$/Þp ©ª)^løXÔzÉÕòð‰Ã¹j-9øZ’lkëy¿qÕÉèÕƒ#ÓW¡*:ø5 ˜‡‹ÃB-œ1oFUuuGyÅ°òòŠêòš²’ueój¼\SS1r9Bˆ[‡F®z§b TUVͱÇ{oÞÈÒªYû+Qe$1¢rĈqÕ•\9J”Ãï±{FŽš Óä #eWí) £Öû;­äþŠâzù@ÃÐxþhiQ¨¡ìÒ§ÔÔ¯/*8lŸ±qøúÙ-Ͳ·f#ûàµM‹Öõ\ܱ¾‡»zhjÕìƶ¹£Ñ¦MWË—ÔsEÌÁo „„b7oŒâÞ Áa®8æ A–44<sÌ…š¡5õjýpÌýbèCÿŒnß; -¿f£C7-?¸ÿàeÌÄ¿Ã(ü<Ô@;æ•UógUŽª¨òwgñg…÷xïÍ;¬¢zV)üGüºÊ1ÁwŽùh 3otí¬1c‡¬«=l]¸¶ð¸Lñï±yC$yVñ¡™òâòòé#3x÷ØýÓÅYxbÝã=vψ‘³†6L“4L ¶ªO;04¦ Ó6:ÖÇãÓ¦M›& -5“óGMä=š×ÐßLˆ æoëлÌöÛRÖ)ïN´©Sâ±iZS®±iahCƒ³ÌI¯Þ8óÐK:·öê—!¾q²,Š ¢|ðÅùô#g6.ÀÐÿäN =u0 ~?¯lV}ã´#똪½M›W:bl”‡¦N,áö i÷Gªß:´öÝ1{дyÓu#Ј²wKKÑ»xš6oúÔt¤¼ê¥!Üèš’Ðdƾ4~huuiÙKCÆô×Öâ~ôÒøɉ¹C– ÁCöà‘óÆò ~¼0~ÞøåãC0¾jh€F¯ ÉëƒXçíƒØíõCªóú Õ{} ç € •ÞT¡Ú› -2Lòú@F!¯Tˆz BܽP¡ÉÕy ¢zo¢Ày…J¯¢PåõCª½ˆÂ8¯¢0Þk(Lòú -’7QXàµ@Z¼ˆÂb¯¢°Ä{ ¢°Âk(´yû -Çx! -k¼}…µ^?Da×Qòú ŠÂ^ DQ©×Q4Ò€8Tz‡*¯âPíu@Æyû ã½}‡I^Äa×qXìõC–x‡^?Ä¡ÍÛqXãíƒ8¬óöA…¼>ˆ£°×qTêõC#TzýÐUÞ4Bµ×0΀Fï @#LòöA#,ðöA#,ö –@#¬ð Ú¼h„5Þ4Â:ïShD!o4¢°·Q©7MÀyЕÞTh‚*¯š Ú› -M0Îë‡&ïí€&˜äõA,ðú  {ÐK¼}Ð+¼h‚•^4Á*¯š`×Mp¬×M(äõA -{}ЄJ½h…VoZa7Œƒ6¨ôú¡ ª½~hƒÝ0Ž…J¯Ž…j¯ÖB¥×k¡Úë‡uPéõÁ:¨öúà>¸Ï€ÝÀyû`7ã ÀnØí  p^? -AÔëC!ˆ{}(Þ>‚&¯…àXo…`­7€B°ÛëC!Tçõ¡ª÷úPpÞ>TQ¯U@ÜëCÐèõ¡ -hòúP¬óö¡ -Øíõ£ -Tçõ¡ -Tïõ¡ÑõÐhˆ{h44zh44yh4ªóÐhTï  1Péõ£1Píõ£1°f£Zˆz¨âÞª…FoÕB“7€jQ7€jQ½7€ÆB¥×ÆBµ×ÆÂn˜ê€óPTz-¨ª¼~TÕ^ ªƒq^ ªƒñ^ ªƒI^ªÉ@u°ÀkAuÐâµ :Xìµ :X⽆ê`…ׂê ÍÛ‡êào#ªƒ5Þ>Tk½~Të¼~T‡B^ªCa¯Õ¡R¯Õ¡‘ÞªÎ@õPéµ z¨òúQ=T{-¨Æy-¨Æ{-¨&y}¨$oÕïÕC‹×‚êa±×‚êa‰÷ª‡^ ª‡6oª‡c¼¨ÖxûP=¬õúQ=¬óúQ= -y}¨…½TJ½TFz â€ü®T¿?å ’0†"h&aja1 ‡ $†r°I8ep2 ÁzØNÂÅ0 -H¸êá[®@mh,p€B`(Ç -†*|*p€BÀPŽ/P¨0Tá+* Uøà…Jà$ü #ÅM$a C¸Y$ÌƵ’pFq§“pFqWpFpw’p<È=AÂÅ „‚ø%px(ˆSú.ô Wà[Kp”–yVCyùµÀ -•†òò_(TªÊý:—†òòg€ÊËÿ  P`Rþwà…jÃÐò€Ê+p€BÃCUEp€B#CyÅ8à…F†!Sª UQà…ƆòŠEÀ -Õ†òŠ•À -M C*NPh`RÑ âRÀP^q2p€ŠýüÏP¹ÿýà•—†òŠkná%AÐøU)ƒ?ʶlwsÆàçÛNÆvt×´­™|s:ͯ0;Sn–_ad §ÛHÎlvL=Í/ÕÇîYatæÒºCÅ“ïøF^þéÃÉš¶ÅK3åh³cêiÿk?Š™åuÞuô¤Ñ¥;x»ã'«Å›ï¦ ¾Í2]#ɯtu×Èòº•l°ÞvS†Ã'ìœå:¦‘ùS™¬°ÛM‹_j&RvZÏNç—ë®c&L_©ç¬¤ádµs|—¾™Ïe ÞM™Y¾Ã¶\Þµù¤™Í¤õͼn%ùŒcZ.Ÿ°-×°\^ÏòÃé2]×Hòí›y7eði3aXYƒw §+ËwØï¦ >ãØÉ\ÂåM‹ïI™‰U‚™åM+‘Î%äL>¨„m¥7ó‡šSy£«ÝHÒ±­ÿ¶t£«ÝH&M«“wŒ¬ë˜ ×´­B~K’¼fñº•ä5Í©¼ktelGwÌôf>i÷Xi[OnÝ¿tÃáómnçÜLÎå“F·™0x×æSF:3¸…fÂR°Á.Ð! 6´ÃfTœ¼õÛJpA ’ ƒIî*înîîQîîîAîv¸x@4àa¤ÀŽ,°Á…Íx˜68ÐÁl°`&ðÐ iH+À„NH Yàaè’0šÁtHKA°¡V€ƒ4èàüd,þßâñÐHÕü§R8%µåA‚™ C”ŠOǦs1! <èÀƒ èº@66tüZ‹,àÁ%éÚÀ\0 <¹S.¤d ’Ð68ÀƒMÒ8ÀClÈ.8`‚Y˜ùÿº&+À†vR›¥`BR`CtÈÂtàa9è$ÿ˜ +A‡X$-úÃ’€:ô€ tË :À„ÀƒqˆDã_….Е¯›‡,è`Ax¢:€‡$:Á‚éÀºWA^:˜$eØà€<¤ ] ƒ&dÁÐ!.)! .˜€,¹;:XÀ“t›ó÷Û$Ú΀$Á€…,ØàPwÔ? HåÕT¨U ƒX`=`‚ )J]`ƒ É|ÙÁ÷þ=rI‹$ˆ2³?ˆçB` &$ïù&l†™”‚mèÐɳì‚èàBI䟀y¦³ùëÊ‚ ¤- mÐ9HCš|[hU“´­M®Ã ’ƒ,Qœi˜Ypa3¤ÁøIEt€NÚß¿è,¢ -??6äŸ(¿í#×C?‹I0A‡N°óé{ Ež R`@2D6ðÐ &t“–ösêã÷i¢ ºÀ š³À„É]‡ dÀ J´ y6~ØYÀƒ›È]éÒ°xrϲä¹NçkÑ&‰hÂF -6øꤌv0€‡dITP¥!—o×$òÊ硃ôQ.©£—\pó=Ç0È“î’^ÆŽ²Da…ÞÉÿµ t趀 ©µ.$`ú •ù¥'Á„,d :lÎ_EP¶ô@2 C†´šŸK’´¢ &dó5rÏ€6tMÕm& 6äH é²\H‘{ÖAz¤@-ÿ^;:“Ä,ôˆþß:ék]»ù7E;lÔ#˜äÉjá§|oü¸þõ$!‰ü³7X ?v &yÖ-H@r$otþ-aƒE”w(˜0x0  ÚI½(^ŒA£JHþDži°`3ýwh|H Zš:2T‚ÆOæ²tè’` Íà€CÆ@ú“æÇþ·o -\?ò_€0âP…Q¡bT‚JQ*GhªDU¨ E5hŽF ‘hÆ Z4CãQâQ=š€&¢Iè4MA‡¢©è04 MG3ÐLÔ€$" ÉHA*ÒPÅP5¢Y¨ ÍFsÐ\45£ÃÑ|´-D-hZŒZÑèH´…–¢eh9:­@+Ñ*Ô†ŽA«Ñt,Z‹ŽCëÐzt<:ˆtÔŽ(‰ Ô:Q -™è$´¥Q²2h#rP¹(‡ºQÚ„6£-èdt -:†NG[Ñ6Ô‹Î@g¢>´…ÎFç sÑyè|tº]„.F— KÑtÚ‰.GW Ÿ¡+ÑUèçèè—èjt Ú…®EסëQ?º݈nB7£[Эè6t;úº݉îBw£_£{нè>´Ýö Ѓè!ô0zý=ŠC{ÑoÑ>ô8z=‰žBO£gгèwè9ô<ú=úz½ˆþˆ^BBF/£¿ ¿¢WЫè5ô:z½‰ö£¿¡¿£ÿBè-ô6z½‹ÞC¢Ðô!ú}Œ>AŸ¢ÏÐçè ô%ú -ý }¾AߢïÐ÷è ò0`„1æp‡qáb\‚Kq.Çx®ÄU¸Å5xŽGà‘xÇàZ<Ããqæq=ž€'âIø<OÁ‡â©ø0< OÇ3ðLÜ€,b ËXÁ*ÖpÇp7âY¸ ÏÆsð\<7ãÃñ|¼/Ä-x^Œ[ñøH¼…—âex9>¯À+ñ*܆Á«ñ|,^‹Ãëðz|<>ŸˆuÜŽ8‰ Ü;q -›ø$¼§q¶°3x#vp»8‡»qÞ„7ã-ød| ->Ÿ†OÇ[ñ6Ü‹ÏÀgâ>¼Ÿ…ÏÆçàsñyø||¾_„/Æ—àKñ|Þ‰/ÇWàŸá+ñUøçøø—øj| Þ…¯Å×áëq?¾߈oÂ7ã[ð­ø6|;þ¾߉ïÂwã_ã{ð½ø>¼ß÷àðƒø!ü0~ÿ?ŠÃ{ñoñ>ü8~?‰ŸÂOãgð³øwø9ü<þ=þ~¿ˆÿˆ_ÂÂÆ/ã¿à¿âWð«ø5ü:~¿‰÷ã¿á¿ãÿÂø-ü6~¿‹ßÃïãàâðü!þŒ?ÁŸâÏðçø ü%þ -ÿ ¿Áßâïð÷ø ö8à‡9Ž qa.ÂqÅ\ WÊ•qå\7„«äª¸jn(Wà ã†s#¸‘Ü(n47†«åÆrã¸ñ\ÇsõÜn"7‰;„›ÌMáå¦r‡qÓ¸éÜ n&×À œÈIœÌ)œÊi\”‹qq®‘›Å5q³¹9Ü\n×ÌÎÍçp ¹n·˜kåŽàŽä–pGqK¹eÜrîhn·’[ŵqÇp«¹5ܱÜZî8n·ž;ž;;‘Ó¹v.Á%9ƒëà:¹gr'q¸4×ÅYœÍe¸œÃe9—ËqÝ\·‰ÛÌmáNæNáNåNãNç¶rÛ¸^î îL®ÛÎÅÍÃËÇÏ]À]È]Ä]Ì]Â]Êíà.ãvr—sW„gZ¹tºÊ²­.ÝÙ`ZŽáæ+œÍè #blJ¤õ®â9Û5’íéR+×Õn8Y³ÓŠ$ítZwŠ2†“0,·DïÊNV·’es¶kdM«3m”dtÇ°ÒF‡[šÑÃrÌΔ[¬g]Ã1³B™t.NØ]]z$µ9“2¬HÆpL;Φõl*´Åplζ Îí±ÃnÊ1ŒP‡sBf·ÁeÍMá¬ÑmXaÃìL¹!Ë´ŒpÂNÛVIÖè2vÚ¶Bi#› szº¨Ó1t×pŠ7挬kÚÖÝÿIG]Öîè‰ †›6:Ü’v=±!›Ö³©rò­cv¦Ü2=›0Í„é$r]¥>FKØŽîtônãÒ¹—´;zÂH.×®;¥íŽž0³3å–êÙ„iºf:i”4'MÃ1²f6Üì˜Vgñü„‘4Ói=²POä\#²Ô¶,ˆVÒ„"ºCïtôn£L÷kÞ‘66•è…8®™NaÝ1­ÎâD·á§4ü”•Òȧ4ý8¦Ǥâ˜ù8–k¦“FÄö£Ú~T›Šjç£Ú~Ôœ5çGÍQQsù¨I½³Óp"I£Ó1ŒP°Üâ¬k8iÓê,Ê ×´­H{.6Ü’Œî莞I•vN—n%ÛÓÙRÇè4³®áÉ’„Ùì˜)·$gÃz"çÅAiÅ–ísz7/Œ,˦õlªØ´:LËt7—dÒ¹l—iå²%i#›56æôt9¤±1§§¹Í†ÅuåIJŒî¸¦žNš%Ù\W—UD@)—1ÅbÓrNGO—ÙN²Ãè2-Ó2Êm'Ù¥g¹´iܲTÖˆí+3Ð{Òî±JýÇ9i÷X¥i»ÓLèiËv‹=i&ôt¤#m;¦U¦g2Ž½ÉؘÓÓ%¦•pŒ.Ãr+:sf:mtÙnÚèp‡äÿòŸh#63Y3iîtôn#Òìߤe®™NxÙBlÃJêÙTÄèJúÕò{”´ÑáVø-¼1g»FÚèpK7æl×Wz$iv›I£(mo1¬N£ds^ÆÇæo@‡£'\Ó¶B sŽ]Ñ™3ÓYÓêLçë›5­N¿ÜaâŽt‰¯d{zˆßí$ Ë5#9¤ÐƒµëY#_×v=k”e ÇMÙ¹¬n%Ëš ²+[XGšõDÎ5J數Ðo–V=‘s²VJ­­ù8­~œe~œeTvËü_Úü_Ú¨_Ú:½Û(NÚnÚÈfÍÒÂOaÿté ǶÂíŽÑm”$mWO$ Ë 9¦ÕYDâòTÎêÔ\WZϹ»Ó¶Œ á„îØVdI6­gS‘´ÿ±Òÿ2ë¬õ?¶$tǶJÚ{ƒaµë·ÐMq†›Šë? ›õDÎ5«R¶c…Ý”íXá.ÓÊe‹»ri×̤7—Ù–‘Íe Ç´2·ÇÂnÊ1ò¿Ù–‘ÒÓ¥¶elÌéŽkäl¸ÃÑ­DdQ»ct‘ÎvÇè6B­IÛ-^I®³8ôZóýª%üùþ…$ºc[EI¿ÅJìnÒmGºÌdÒv#Í~Îz»ctEÍ~;éþgdŸIÒÿXMëÙTÑBÉ ‘ú¿¤qýâÓþÇÿËtBwl+´$i»¡tÒv#KýŸ-Ò‰û±,¿Ñ—%ÛýÔ%vŠ¬ð?ò—ßñ?Vú_fýŽkUÐ.nÐ.«ühnBwl+Üæ˜Vg8ç˜VgI[¾¤\¾¤µþÇ=‘sÐڤ톶$m7¼HïêÒëR†«sËSfXOgRz8i¤]½ÈÈdÍ´m…³fg—ιzŽË¤ÌŠÂ;2Ùž.!}T{ºÄ -î~$cd W/ÑÇîIn‘î8vO.Sª;ŽÝãwºãØ=I»ÇòCí¶›*!Ñ’Vy>Ôž5JmÇMÙ¶¥§ËMË5ò2(36æÌn=mX #œ²sY£Â1º eiÐ÷º™|°Ý-^Ù" -‚ Å+[D‘„|@RP‚@,ă€¢A@%%ÈG -’«Aj³ä#ßHA)ÈG ªª‘å R>”.õ‘óà'%(BÌä,UUò‘ƒœ• >Jþº‚œ• ¹š¿À|>Š BQ.Óž¶Š’V{ÚNlû¥;üOÇ%»Ù”ž4ÂÙ”ž4Š’²)=i”t˜é´‘l·7•ú!ÇH¸E®c까ÿé¿“–ÿ™îˆ$L'‘6JL«›ŒL«›|—í2ÓF‡ž0ÊM«;ÿ—ÍY‘£KO¡.=m„³=i„é\{8eèŽ[”4õ.ÛJ–uå²DTÆ*œlOãÖ#°yR™¥gì¬ëØ™”é2­œkD²F¶’%z‡ij¢¤Ä‚P,Y,IBTŽ,cªâ¨bd±Se¹ÔΖ_ÿ¢f¿s+ÒýϲùÔû+Q‡æ'm7”HÚnÑB’Âð?# ý^Ððû×…IÛ IÛ-[DåÔIå´(i»¡Î¤í/ -º›N([L¥IQi·ëN(Õ®;‘Vÿ%æp‹ZI]LR—V¿.¦ß#·’ÎÖô?ËŽ r?©.>2¨Ç†àý·¡Ó1 +­[I3Q¼$ø9–‹¸…V'gXEËH…lR¡e~…ìvÇè6ŠWéœà‚WRUÊR¼ª]wBn»îDÚÈàÖ¿à6’ŽäßæçŸó/¸\pŽ\ðj*÷*|,ÞL Ò¶Õ™-mvL«SOä\£TÏ‹šýIC‘nÑH6­gS~Ø.„KtËv´aê‘Õþ¥ÇÿXí¿züX«óƒµžühçX?âæNGï6ü ctNÖH–ñ¨±©Dï0M!WÄ#ëš]ºk$KlË0ÌΔ›*wSŽAÂÙ²³;—gnà -~HØ]]º?î©ÊYIá¾»¶eg+‚Z¹¶egK›Ó™”îÚ–-_迯\Û²³Å ]ÿÛ’V›„Ê—u™ ‡ü^ÞFE.]Öetú‘ªMÛÕ•nNgRzèpÃÕà Œ´«‘rBk Wçºz¨Õvõð‘z&£G–è]íI•ÃKsxYDÊÄËMnEʯ4;»tn•ž+"åsóS&·G7¼oø½Ã4EAä ¤Šù”~Uò!5Òò¡h>ˇâAHò¡|ZP†¨äóó¹ˆù\Ä|.R>)Ÿ‹”¯©”¯Ÿ”ÏOÊ×OÊç,ås–ò9Ëùœå|Îr>g9ßr¾ 9_†œ/CΗ!çËóe(ù2”|J¾ %_†’/£Ð.J¾ %_†’/C)´s>…–O¡åShùZ>E4_«h¾.Ñ|]¢ùºDó9Gó9Gó9Gó9Gó9Çò9Çò×Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ï—Ï—Ï—Ï—Ï—Ï—Ï—/\G!—  Qò!1ÊkWó!%Ró!-ŠæC±|(_†˜/£Pgµpm~ -A„`T#«ΘåvÎ fåfw~BX‘5ºü¡Â0;SnðWq"ç8†•Ø\”³LAcä3N>›ÉçáÅéÍ™”¦I@,E‹Ã0@ž\Å‚…-',ZrìòÅü„ÎôæLJ˜À·.à~Õ±Ëò‡7¯\È/\ºÀñƒ¸â¾u/2Å•&ð­ x‰)®o]ÀÇ Ébl÷Ú†(ÆÙ•ˆù„ -£º|ɈR!!›ÔD_?¢\HȦ;Ñ—‹XЋ¦ÑŒXPŒÂ¦Ñ—Œ¨ý¨ÖøZ_À¦uÑבX’Â&$ÑW’X’Â&%Ñ×’X“Â&&É“T“Â&&É“T“Ê&&‰ô?1©Œý–/&© &•ML’/&© &•ML’/&© &•ML’/&©Ð©lä+G*(GeSŽä+G*(GeSŽä+G*(GeSŽì+G~ì‘ŸÞ6M£ ÙÙ“\“Æ&&Ù“\“Æ&&™¼Ù -bÒ߈¾˜ä‚˜461ɾ˜ä‚˜461ɾ˜ä‚˜461ɾ˜ä‚˜461ɾ˜ä‚˜461ɾ˜ä‚˜461)¾˜”B7¤±uCŠ¯¥ œ(›r_9JA9Q6å(¾r”‚r¢lÊQȨ œ(›r_9JA9Q6å(¾r”‚r¢lÊQ|å(åDÙ”£øÊQ -ʉ²)Gñ•£”eSŽê+G-('ʦÕWŽZPNŒM9ª¯µ œ›rT_9jA916娾rÔ‚rbŒ£g2|.('ƦÕWŽZPNŒM9ª¯µ œ›rT_9jA916娾rÔ‚rblÊÑ|åhåÄØ”£ùÊÑ -ʉ³)Gó•£”gSŽæ+G+('ΦÍWŽVPNœM9š¯­ œ8ãÌ‹L½ -ʉ³)Gó•£”gSŽæ+G+('ΦÍWŽVPNœM9Q_9Ñ‚râlʉúʉ”# -lÒ‰úÒ‰JTJ6íD}íDe*%›x¢¾x¢ -•’M=Q_=Q•JÉ&Ÿ¨/Ÿ¨F¥dœ»“É{”JÉ& ¨/ hŒJɦ ¨¯ hœJÉ&¡˜/¡˜@¥dÓPÌ×PŒÒȦ¡˜¯¡¥!‘MC1_C1JC"›†b¾†b”†D6 Å| Å( ‰lŠùŠQÙ4ó5£4$2" €( ‰lŠùŠQÙ4÷5§4$²i(îk(NiHbÓPÜ×PœÒĦ¡¸¯¡8¥!‰MCq_CqJC›†â¾†â”†$6 Å} Å) IlŠûŠS’Ø4÷5§4Äø -Œ”Hiˆñ( -M¤TÄø6…‚Ž$Æ·’(¦(HTZÖr V -Z’ûQ dQ(¨IbÔ¾(¸(¨TZ6Uˆá‹‚F¥e­3á‰B”JËH‚…•–4ª(Ä©´Œº -(5…©%‰•S šÒ•Ì¨«€US°Zb\k\MñjIfÖ±¦µÄ¸X!К¢Ö㊅pk‘Òãúƒpj -TKŒKb€ª)V-±.`´šÂÕëÖ"E¬%ÖÕ¬E -ZK¬ë -R°BéŠu1ƒk‘B×ë²×"E¯%ÖÕ¯E -`K -£®Â)†-1~‘Pl‘ÂØ㲂H@¶H‘l‰q@$,[¤`¶Ä¸F œ-Ê`î  ¿)€-23‘ l‘bØ"#‹å`}T1âh‘€l‘"Ù"#æ Ë)˜c~#ž-R@[da"AÚ¢L¿ Y/˜(‹ÂÚ"#H Ø)²-2j‘°m‘‚Û1…õ‚ ß)À-2rJ‘ nQ¡•ÅØEÊ-R˜;cd¢¬ÞRÒbD+"Ý"E»%Æ9˜Hx·HïX”õ%L˜·HAo‘^‹{‹÷ŽÅ‰‡Hз¨Ð“zˆ‹ÿ—‡DBÀE•ÖcWK ¸HSð(#o ieœFŠ†‹4 2Î{E50`m"¢(„GY×ä UZQŒÁá"ÅÃEF’.".ÒH\aML¨¸HaqIf¬4ã¢F¯Ÿ{ÂÆE -Ž‹Œt\$x\Ôè× kZ"' -‘‹Œ z"ä"EÉcQæÆ - N -ÒRÁ¬HX¹HÁòX”uÀAx¹¨ÑK-ŒQ$Ì\¤ ¹È¸p*l.RÜ\d\ä 9)tcÖ%ç"MÏPD‚ÏEšŸ3®hˆ ‹A—é§HºH1t™u~E ºHQt™u~ l—(iIŒ˜X$$]¤PzLb$Å"é"EÓcÌh†ðt16høÎXm‚ÔÅ-.ÖA¡ê"…Õc#û XcôÌ5-QÅÖã뀖Ðu‘ÂëëK‘ðu‘ì2kçC»X@ì³!IP”émÓ$ITíìb½¥7™Ñ¬F$à]ŒÑzc¦ö.Æi½±Î ~)þ®)£Á–H¼H1xM‘­¶D‚áÅ8m…À -1 ‰ãôØ‹•ê/ÆéI#ãR‡Hx¼Hù˜Ä¸~ $/Æé>Õö•Pyq–g”X<0ˤ€ã;^ËLÌ3Ú-0/ ó¬i‰}æ 0ÏhÚIÀ¼DƒyÆ™ŒDÀ¼DƒyÆ …DÀ¼DƒyÆ%\‰€y‰óŒS7‰€y‰óŒïJ‰€y‰óŒ¯J‰€y‰óŒ#8‰€y‰óŒO¡$F¿”®§^ó æ_“óæeV]0/Q`žu´+0/Q`>ʸ 0/Q`>Ê8ø“˜—(0e\´‘˜—(0ÏÚEKÌK˜gÏH%¹DÀ˜œóQÆE)oONYr2.II9棬Ïo`UNy™qÀ)†å˜—_fR`[.Ñ»[XÓ]Q`^fµ…,Ì)0/3Ò")02—èÍ.Œu&`^’iÂÅø^ \^’é÷ ãsD¸¼$Ó >ŒÏ‚lU Þƒ¬Ú \^¢¸¼Äz——dzšµ‰®dzÁ‡ñù%X^’iÁ\0–L¿;wÂå%šË3ZªJ„ËK—Ž%‚å%Ë3ÚKËK4–g´<•–—(,/2š»JJ° †¦òŒ‚&T^¢¨|LfÝÓB°¼Day‰GJ„ÊK•—™‘D¨¼DQy™udG ¼DAy™uƒaòÅäeÖ=N„ÉK“—W%Âä%ŠÉKŒ«Aò…ä%Ƶ"‰y‰"òã☤[¬¨‹q[„Dà¼DÁy‘qƒƒDؼD³yF£z‰°yI¥—¨YÛŠèJ¥—¨ÛŠ y‰FóŒû¤$‚æ%Í3"r‰ y‰Bóã:†DмD¡y‰‘KÍKš—ѼDмD¡y‰qÝTÒ‚Ý{tÅZg¢+î¯XëLtEy‰U“„ËK——Yg„ËK——Íé$Âå%ŠËˬ³:‚å% -Ëˬ3Q‚å% -Ëˬ3Q‚å¥(=rgÔÁòå $‚å%Ë3Z˜HÑ`c(5rg4Å“•—(*/³Î& ”—((/3šˆI„ÉK“—MÓ$‚ä% -Éˬ£oBä%ŠÈËŒ&bòäeFS-‰y‰ò2£¹•Dx¼£]°¶3ÑÍã$Âã¥=#d½Þ`Ï1¥+Ö1!ïRŒ_1^/aïRœ_±îv&º¢Ð»Ì:›$à]¢À»Ìh1%ì.QØ]f_ê.QÔ]f_è.QÐ]f´j‘s—âô:k‰®(ä.³Nq—â4i`|öãÁvvjSãdR‚íÔ¾.Æ÷‚Lˆ»L÷8£å‘Lˆ»L÷8c¿!â.SÄ=Îhr!â.SÄ=θþ%â.SÄ=κžw™"îqÖ½ð„¸Ë½MqW;!î²0hušµ¡ÉÖv^-dän2aî2ÅÜc¬ÃY œ#P«Ó2ãœA&Ô]¦¨{Le´} v—)ìS× dÂÝeŠ»ÇTÆ…3™€w™ï1•ÑìB&ä]éÝËŒ;id‚Þe -½ÇTÆÍ42aï2ÅÞc£!Là»LÁ÷X”q€Lè»LÑ÷X”µ!ø]¦ð{,Ƹ‘G–”Ââ¬Î4€—)‹3ÚÈ„ÀËÅYµM¼L!øXœUÛ„Á˃+ŒSS™@x™‚ðq…ÑnC&^¦(|\a\f‘ †—) Wñ¡ø{¡8|\amíÀÁ âã -ë#8y¡H|\e\’–óŽ^d:1ë5…Q,>®²>Ïà -ÆÇUÆùž8}‘é}ôŒKràø…Âñq•õ]8¡p|\e\€0«Œó ™y™òq•qB!"/SD>®2Î(d‚äe…Vã”B&L^Vh…±:QRwB´ÂX_î„ÊË -­0VÏI„ÊË -­0VïIËË -­0fJDa -­0ÖÁ#ó²B+ŒuôHȼ¬Ò -cõ¦Dм¬Ò -c{6/«´ÂX½*8/«´Âg2¡ó²J+Œqú(«Ó*ZaŒìW&|^Vi…1Â_™zY¥ÆúŠ%„^Vi…1.+ÈÑË*­0Ö÷3aô²F+ŒqQB&^¦=˨¬£!BéeÚ»ŒÊ8Õ— ¦—i3*ã\_&œ^¦½Ì¨Œ“}™€z™ö4£2Îöe-pFÏ$YGÕ˃<Î0®Ê„ÕË´×uXA`½L{žÑm¿dBëeÚû óƒàz™Âõq‘×Ë„×˯kŒÀ^&À^¦€}\cb/GiSgÖÑAör”FŒLW&Ì^ŽÒ -c\–£>Za¬#Bíå(­0Ö—;Áör”Vëƒp{9F+Œµ#à^ŽÑ -ccr/Çh…1ÚFÈÝ˺Gí dÂîeÚ˜>Êhh x/Sð>e¾f¢0ŠÞÇ£¬ó*‚ïe -ßÇ£¬%¸y¤c €/ÇhïYŒ+R2!ø2Eðã1F#E™ |™Bøñ£•¢L¾L1üxŒÔˆ/S?c%4„âË4Åg´o– Å—iŠÏhß,Š/ÓŸ¹©‰¼Î3j“`|9NãVFw r<ð$Jïadœ…*BàM”ÞqÍ8ØVÉWh’¯1£*å+4Ê×L!,_¡Y¾ÆØ` -ùŠ0h7£UBóšæG7*(ç+´=ãÄ[!8_¡ èçÝ -Áù -m@Ï8TÍWhzÆy B`¾BÐ3N1pWK›á0^/Aù -m@Ïê–|…ölÃê –€|…ölÃê–p|…ölÃê–`|…ölÃ8%QÅWhÏ6¬ø -íÙ†‘°*„á+´gF{T… |…ölÃ8ˆPÁWhÏ6Œã&E -c ¯P$>cÜP¢¯P$>gܪ¯P$>gÜb¡¯Äùa¼U„Ä+1ÚÇ£ñŠBH¼B‘ø«E» ŽÍ¡P©Â:'%$^¡ýبŒîžBâÚʸÑB!$^¡H|LeÜi¡¯ÄiËTÖ±!ñ -뜟Àwæ6%À]¡€{œuîJ€»§û)ÖF!*¢€{œuîJx»Bñö8ãr¶Ž_¢Vsl¨Bpµ˜ÃøþS lWiØÎØ-«„µ«4kgìXU‚ÚUµ3ö«*!í*MÚ»U•€v•팽ªJ8»J›Í3nÓS gWi³yÆ9³J8»Jqö8£É€J8»*ÐÛ1ï/áì*ÅÙãŒ]¹*‡{QºbtÀ ήRœõå¥ήRœõÝ¥ήRœ=θ«ήRœ=ÎÈ5TÂÙUŠ³Ç¹†J8»Jqö8ã"°J8»Jqö8ã¶D•pv•âìqÆEM•pv•âìqFž¢ήJô6FmHÁ¹q”®XOA&œ]¥8{œ‘‰¨„³«g3náT gW)ÎgÜ©ήÒFòŒ,UÂÙUÚFžqH£ή2‘g=Úèj…<ëé~DWƒ äµA8»:È>žQ„³«´y<£y“*GÒÛǵA8»JÇ3n;U gWÙÆ3Þ#ÂÙÕA¦ñ¬÷ˆèje<ë="ºdÏzˆ®ÙÅ3Þ#ÂÙÕÁfñŒi‰®YÅ3Þ_ÂÙÕAFñŒ÷—pvuM<㳯§]Ò椌Ï>áì*mÏÈUÂÙUÚ ž‘-ª„³«Ê K?Æ´DW´9<£M€J8»J[Ã3šù©ÁÉ©´1<£]¸žJÛÂ3rI58?•6…gä’jp„*m ÏÈ%ÕàUÚž‘KªùƒTiÆç78K•vS#°΂óTi?5ëè,8S•v"/°Ï‚sU)Ô. -¬ã3ÂÚUŠµ‹ëÀv•‚í¢À¸Z¦Ú®Ò~äÖáÁí*íH^`ßÞ®ÒžäÖî*ÜEqÅLÕ‚Ózi…± rW5Za¬ãCÂÜUVë @w•ö%/°ŽòuWigòë0`wuÐA¬¬ã<ÂÝÕAg±²ôxWÇÊ:Ò#ä]t"+ëP wu𡬬§:… :—•u  ΄¦Æ:R$ð]t:+ãÒªJà»:è€VƵU•ÀwuЭ¬ƒTßUú˜Vu”Jà»JŸÔ*°S |WéÃZÖq*ï*}^«À:P%ð]¥lXGª¾«ô©­ëP•Àw•>¸U`«Æ‚“Çi…±V |Wéã[ÖÑ*ï*}‚«À¸Œ®ø®Ò‡¸ -¬c]ßUúWu°Kà»Jå*0®¤«„Ä«ôi®ãRºJ°¼Jè*°Ž³ —Wé3]FÃ]•€y•>ÖU`¥2¯Ò.äÖaz<8ßžVã8]‚3îi…1Ô5ç5VãH]#t^h…1Õ5‚ç5VãX]#|^h…1Ö5è5V£F½&Ð -c4•Ö¢×ZaŒ¶Òaôš@+ŒÑXZ#^h…1ZKk„Òk"­0Æý›ÁôšH+ŒÑÕ¢F8½&Ò -côµ¨P¯‰´Â->4Bê5‘V£‰¸FP½&Ò -c´×«×DZaŒ{Ü4ë5‘Vã7ÐzM¤Æhž®\¯‰´ÂíÓ5Âë5Ú±¼Àh ®`¯I´Â-Ô5Bì5‰V£‰ºF½&Ñ -c\¯Ö³×$ZaŒ‹×öšD+ŒÑJ]#Ô^“h…1š©kÛk­0F;up{M¢Æh¨®p¯I´Â-Õ5Bî5Úżȸܯt¯Ñg¿ŠŒëýa÷}ø«È¸à¯x¯Ñ§¿ŠŒQ¡÷}ü«È¸ä¯|¯Qø^×ü5Âï5úüW‘ÑèM#_£¾(2Z h„àkô °"£!—F¾F»ší 4Âð5Ú×¼Èhp ˆ¯ÑÎæEF‹P|ö6/2šhãk´»y‘Ñæ@#_£ýÍ‹ŒFþùšB+ŒÑbA#$_Sh…1šhåkô9°"£ÝFX¾¦Ð -cékæk -­0Ö‘>¡ùEóc¬‡ jçkÎ)¬ÓÂó5šç3Nb5Âó5F>¡†¯1" p{‘Bh„ÕkŒàA#x^£ñüžÌæ,SÎéÑ(8¯þgìê'%B¡Ð¼úŸWåý¤Í~R -Ì«ÿ™×úI'I)[eFZ«*¯ýbX´¢uÁ Ë—/<Š—„Šå+®\¸tUóªÖeKý/£RÅòåËV¶®j]¶´ué"ÿKQQ*æÕ¼ü„–e+Žj^Å‹¼À ƒ¾‘y‘Wø…KTT@þ@í<æ]zk•HÉaÛoÿªá]½µ‡½µõ!±L(‰„§ áð˜0z¤tZ…Po£Ð®•ÂÑÂtê›±×ß:š  š`´ClHƒ.0æÀ¡žÊ,4¬ÿ“;»Ôù¯Wíì¿ìˆwït‡_¶OýnWïðýB/÷¸ÐËÍØÅa„qÕ¢GGïÜÁŠ–ù_½Öµ¸Bì*òUEá0ÛÎË„’׊ÔàµÍâp¡&µ…ŠkÊWY×p,~¾ž1ÄaÂÐ×*ª)[sÚu«ÛL§ ±R¨ˆpm¡ÒšÈª”Þãâ8¡6µ…Êj†ù_ðó Ç5;̄%Ö ã"\[ˆ«A~^evYWïʘV'?¿Y?²BEIPAaíÈ -Q%A–d5®Æ× -+©Ê¶­G -Ãýò‡c8æJ³ÓšÎ·Z‰™â4aª_Єà~•Ùeð+ƒ²VN·™0²üüf¡M […ëE• ô¢RÜ‹Üòì¯ûŸ{ž¿³ôÔsn?+÷ñ½K?Ù¿·òÑNý‘ë“c_}èëgåÛÎÎYsÚù¯mxC»ºòÑ?ØôiϧÙMâÁÔçéËž}dÅŒÛÏþb÷Ÿ×ŸP‹¯ù¦aÃøþ¯®¿êÆ1Oã¿Ÿ¾dÅÀ?˜7ö´*ÞœûÔ½ûÏzä„-'‰3¹+·Õܼˆÿ½˜­X=ãùMŠ¼sè•Cx3Õpë;¿=÷üÃöWVÇ#g¬YmçmºuòY럭ÞtÍ™ÿXµ·ÔzüàG¼ñ@QõNymΔÇoúàñ™OÞ™0úµÇïY4ÿª1'ìñ[Çñá)Ÿœz[;ºè‹£ÊÞ|aÂ17ï|þŽ³»ïøðÁŠÏÞ:ê•]ߦvÝ1lÖ=gí}sÐõÛ^¶ýUP"ÅÓ"(.B(t¨0Y˜ü- í£R®›ilh°ÙÌÌnÃ1³f§53aw C#\Û¸„¼P±AÈÄæ×6®.Ô(Äm—²KÚ.ä '=(uƒ¯Z*ó›g&œ´PáÚÆ*JƒZpÅÂ×6®!/â0Š“"\Û¸êÐ8¡¶´02Ð7WS¾je³$(±â Uþ·§‚Û¶ ŽØðõ?ÖüvÁXñœÍWN»üÑÞÛÑËc—<×¹k¬ýÅS¯?þégwÔ¼ZQñÑ¢) »ë­gv,½êOÚ‡57Z¿,#nýä¼ØY÷¼÷Þpðm—/ôÇ[¦,ÝrÇýzóg‡ýþÝg^9þ‡¦õ͹ï—÷½ò÷ÕÞoî}â´/þP~õÇWœöÒ¬µµ±)_Í=Bèå<¡¿KžãŠ÷§}ü§¿N={”.9þªî³ÿý9þ?òdüðqbô㸚±Ða†_èäÿTèJ³Ó2œÿøHþzù¡‹ßx)µåÌQ :rëO{|Ï5‰ÉÞìù¿8¥:VuH[ö•Üóû¥ðë^*ýzWíaÚŽ©×ÿ:þµ·–7<õÑ×G kw”ï^9~Ý)ê ásì^ºåÖë¶ñ¿¼ãìu×õ¶ðõ‡¢K/ýýþ'ë¹íýmsï[qýô[Ñ–O¯»õõà5ï¬?)|Íì ^þØÁçNüzÞ»E»üsÛÑÖ ‡}ºûܪC\ôzd×öåW|Dq…0îÙª«7|õþš;B·Ì»òׇ¾wшۛVÚG¾¤þò>;9îžË§?4ûÝÍÿìÚòõˆw&ÿêή\yÿ¼é;÷l¾õàŸVÜ6Õ=íðâã¯;iÄ;Ç>4)õWØ:¿ê¬­È#ù¬°í©ÿá#Yž$±‚ì?ŒÓ…ÄCwMÞ5iû„ŸzÝlvFBŸ™pÒˆ×6ÿî Œ<Æô*ÿþö"gmʼºtâûÛægz…Ç¿`ôå\ûyþù'?òWï룓ۅê'¾pkÿté›'ü‚¯¹û”…¿YþüïnyÆMSvtÖ´|û잟5sÏýüèãÂç~³ýYíòÚI3?5/HOøê¡gGì–êyåŸW¶Ÿµ7{ñ¿Îq·L¼íúŸ|ÅÝ_]4uãQ3sµ‹›_ýø¾ -~ÕË=»®èM˜ß—üáÜs•üü•¯«Û&_¥K¿Ù‚ï:yûo®ÛwÞ„é›^T»¾4»îëÞY2¼tâsoýñOÊÌÖyÛ*OÜ2éÉ:>ºü™Îy÷óŠÓ^ñ”ë»7š{±l‘ Öß}ÝcÚ›¦½rá­‡ü×Q÷¬;ù¿~yƒ}°éœ_ ½¡¡B/þÆï*a/œ×Ôtvõ‹s¾L|°Ýb¡0™àÙ.«™0ßÎlvÌΔËš˜Ê‹ñx”?ÊL8vÖîpùù¶“™)ŽÆú‘‡þÅvüwu½PçߦQ…ßWضË7çÜ”í˜îfaüÈŠxTEAˆ’îADIÉŸÿ 5ú¯rüÈÞÌ;³>]Z{è5Wl:^øÇu·\pÈ ÿ:¸sÉõ÷üåuüœSŽ¾îç×]t¢´áÅÓ›?¼½û™U¯~úÏ_l{Ñ5gvÜóĆ-í_×ôf%ºô½ËtFÇUW¥&_ùBãôGËï[3yoË»¥sb—O¿åÐøÍ´žqøÀ™•]•nÓoï=åÚgô,yÿÊ{“³®Z>V,ž4ìš[Þ½dÚ¨wfÿ,1ìÄ5aãšqÑg}uÓG—á'k_z´má=çl}´ñƒU—-½ãû›¶t¹KïõÜå%‡ÖÃê‹O4£9´¨éï¸oû;J‹oüã¶cV´{Öñ#¶õ„^ýò7wlÝyð®çOù¦1κ¦gþ¸øú Â=‘¾gîá{júö“~ãfaÛ Â¶ë"\Û8Úv•°íŠ­UǽùÈt®žxôiÃ~}Ô…Þï®uþÿ¿½ÿAã\/B°ó½²Ç.øìŠQê=hÒ_{ª?[w¢tÍÕe¿›¾äì‹ži|§þÓWï˜~ß®EO·ôÝ_ž›5kí-Ú*óम¹ÏòÉŠ§y÷qá;^,9{ÜΩcŽúó8|Ã'[ÿÆÝ{Üçw¿ñôêÖ§V¬Ú}/wèPïâ—?.¾è´=WöÂõMoèøhóý~uÂØ9ªu×–ýÆýû'ßqðé¡»Ÿ¼î¹'O8/óÙ³¯ÝÖk½nŒ~àæ/·ÿ¶äðŸ}2ùvsËÝ{§ÝtWGÝ wžU¼áŠš=wiWŽ__»þ±Û…9ÖÿE¸ñÙö¡cï\}ÁÛŸl©~ðø¦òè';ö^zöÒÐÚðº§þðò-¯üýÔK6Mùö^놋"òš»?¬ºRè ËBo¨ÖïÆJõ–«!0~@(þoé2 -}_\‘míÈ -!* -‚"ÆUYÑÖ -îÿ‘ë ¿s?ñû=¿íòØë®ûtïþ7_¸mç/7ý²î¼}ë·Ï\ÿñÝηÝ~öI÷½z÷„“Ëž~ú†#/9~BÍû_1ñ—÷}nußñчýMO=þرëæÞvOVž|cû6}óµíŸ[gï|Ázã©kþØtu·þ`æ\ãÚËGœsÓúm/,èxûµc®ž÷ìw¯wOš¹@€·_>õäÕ^3îú÷–•=söë×½¼òÊô³‰g¯<éªK_rTõ{ /wÜñ'¬¸>;ㆇÎ\XqþèáÝ¿+~õª3Ãß;êóûõ¿ÞpÑ©GGcç=ÙÒ:ü²å?»ëóTÿ_Þ,ÙØé^Ýsþ¸¾ WüãÝ>÷·w6V¼˜€'‹?»°ìÞšGîyáÃOö×xˉú‡Ñù³÷ùC¢^t©Ð‹.üÁÜ¥Ð|øʆ[r+Ÿ_öaíÒÑ‘ñ×ÿâ¶?\öýOô|·D¸¶qCÛ®¶]½õG{‘kÝþÿþ…#ý‰ßápaÞ®9»š¶7R¿® Ÿ™ »«!³ÁlH8醌c's 7Û0ßN+ÍNkùüfifÂI ˨™è|¡Y˜›Ÿ‰âí2É·§§çÇò5œfèþØœ0öÊG;c?_÷³aëWYæ~üô»÷|ûÒoúUÃm§¯ªxUÚý¯“Þ©ø¶~LÏœR[îÝyÚ¹ë>ÿø?7N={ùѧôûâŒì_®ûͺgqæ÷“Ó#^1ì†s»ÿ­kŸ»6÷ËK6ή}ì8æ¾9ùÕãåo_>dËñW½zã·ŸÚ<æö¶–_-~ý’XÍš’ÖO>Ϫ{8táqC îý²£_¸¶üÜ+yeïÍ/?¤þ¾Ý«ÏûâqÛÕžýþÖ³>¸%:÷þùøO>|ÚïÒöëk?lüf¥òÊ3ïE¡È&k¹·ø¡ŸÿcþÚ³^ûUéÖ/Ž}bú[oŸ~ÜoK›?œÐwiùŒ{–÷äoç­YsÛŸhØûü]×D7‹½¡§„ÞÐ>Œ°í¾ÿk:ÇA|cïÚö–0,ÿB=‰E\8Fço} '–Óä\KýU&è_‡  CâˆÐ°ý¯5|³÷±_ÿýõÏXs¾U‡>”Ù® •¤\¹Ê”úVC¾eµ­‘½hnó Φ/ÙŽfÈØVtOl)’\ó^ÙjîV1ÑO¹¾Äj—¯y~Å[$õþ‚õ±?öO¿ðËiÆ|éÓ6oÞ{1^k|oyÅÀræ‚ã ç6é\ºÿÒòûg¹\0ëlØ1ñÂêùûš/v<8a©2óç‹'ößîœÉˆX¡×ù×xsc…mt牳ŸÍÑŸÛl“<ûÆv›Ï¹l¿®0ïÜwÂ÷xVæ¥Ò„7ªU¿xÚ&­*^ØÄøß ‰ñ7"¶Ø ›ß41¾`bd4H§É€&–aT6ˆ˜XYDH §;nÄ´£ B†Õ_œ×ÀÌÀÜÐÄÐÂÀÐÈ2Ê@9Ù ±œæZ5ïiè­Ÿ\v8_ìÀ’ê^ë¬eûwuÙ—ž]“¢Ŭ’NÌë¨íR}¢#Ï8ïw¥ŸNÂÑ[/ÕçMZ8ç¼Ñšì3[¢ùvû}íý·pÕÖÉ?:†,k8ø~ó¡EBS« ì˜&gâÞ3êE·nû®6;~}å2™Åœ¢&Ûîýæqöܘæñ`rcîšÍ] ù Ëkœõ®¬â´½gX¤æ}‡qýžgÿÂeB6Þ¿“ªb“£ú 8®`Á†`µÌ-fGnùǾP·Œ÷ØŒc ñ­¼•¿N{6c«‚bü¿vþÉuÖKç/¢Á:_¢Ìb†Ç·è…ßÏ&2 -ï3;ÚPè"¸[KåæïwÿY;{ûÞ—Í:î-š&XvøÃLþ„” -endstream -endobj -29 0 obj -<> -endobj -26 0 obj -<>/W[ 82 [ 591 546]]/CIDToGIDMap 27 0 R/FontDescriptor 29 0 R>> -endobj -21 0 obj -<> -endobj -30 0 obj -<> -endobj -25 0 obj -<< -/Type /Pages -/Kids [24 0 R ] -/Count 1 ->> - -endobj -32 0 obj -<< -/Size 33 -/Info 30 0 R -/Root 31 0 R -/ID[<81B67C66A238AB4B692FCB506343ADED><81B67C66A238AB4B692FCB506343ADED>] /Type/XRef /Index [ 0 33 ] /W [ 1 3 1 ] /Filter /FlateDecode /Length 139 >> -stream -xœÁ±Ma†á÷ýþÎâ˜á&°¡–Æ(àÈýwV&Žq%qG a C(½Ä˜€Âç@|ÇôkL?aú#¦Ÿ1µÁÔ¦¾aê¦~bê3 - - - - -S -e -c -r -e -t -! - - - - -
-
- - - -
-
diff --git a/samples/jo.html.ref b/samples/jo.html.ref deleted file mode 100644 index 7404147..0000000 --- a/samples/jo.html.ref +++ /dev/null @@ -1,72 +0,0 @@ - - - - -
-
ã€€ã€€åº -
  -
ã‚ãŸãã—ã¨ã„ãµç¾è±¡ã¯ -
å‡å®šã•ã‚ŒãŸæœ‰æ©Ÿäº¤æµé›»ç‡ˆã® -
ã²ã¨ã¤ã®é’ã„照明ã§ã™ -
(ã‚らゆるé€æ˜Žãªå¹½éœŠã®è¤‡åˆä½“) -
風景やã¿ã‚“ãªã¨ã„ã£ã—ょ㫠-
ã›ã¯ã—ãã›ã¯ã—ã明滅ã—ãªãŒã‚‰ -
ã„ã‹ã«ã‚‚ãŸã—ã‹ã«ã¨ã‚‚ã‚Šã¤ã¥ã‘ã‚‹ -
因果交æµé›»ç‡ˆã® -
ã²ã¨ã¤ã®é’ã„照明ã§ã™ -
(ã²ã‹ã‚Šã¯ãŸã‚‚ã¡ã€ãã®é›»ç‡ˆã¯å¤±ã¯ã‚Œï¼‰ -
   -
ã“れらã¯äºŒå二箇月㮠-
éŽåŽ»ã¨ã‹ã‚“ãšã‚‹æ–¹è§’ã‹ã‚‰ -
ç´™ã¨é‘›è³ªã‚¤ãƒ³ã‚¯ã‚’ã¤ã‚‰ã­ -
(ã™ã¹ã¦ã‚ãŸãã—ã¨æ˜Žæ»…ã— -
 ã¿ã‚“ãªãŒåŒæ™‚ã«æ„Ÿãšã‚‹ã‚‚ã®ï¼‰ -
ã“ã“ã¾ã§ãŸã‚‚ã¡ã¤ã‚žã‘られ㟠-
ã‹ã’ã¨ã²ã‹ã‚Šã®ã²ã¨ãã•ã‚Šã¥ã¤ -
ãã®ã¨ã»ã‚Šã®å¿ƒè±¡ã‚¹ã‚±ãƒƒãƒã§ã™ -
   -
ã“れらã«ã¤ã„ã¦äººã‚„銀河や修羅や海膽㯠-
宇宙塵をãŸã¹ã€ã¾ãŸã¯ç©ºæ°—や塩水を呼å¸ã—ãªãŒã‚‰ -
ãã‚Œãžã‚Œæ–°é®®ãªæœ¬ä½“è«–ã‚‚ã‹ã‚“ãŒã¸ã¾ã›ã†ãŒ -
ãれらも畢竟ã“ã‚ã‚ã®ã²ã¨ã¤ã®é¢¨ç‰©ã§ã™ -
ãŸã‚žãŸã—ã‹ã«è¨˜éŒ²ã•ã‚ŒãŸã“れらã®ã‘ã—ã㯠-
記録ã•ã‚ŒãŸãã®ã¨ã»ã‚Šã®ã“ã®ã‘ã—ã㧠-
ãã‚ŒãŒè™šç„¡ãªã‚‰ã°è™šç„¡è‡ªèº«ãŒã“ã®ã¨ã»ã‚Šã§ -
ã‚る程度ã¾ã§ã¯ã¿ã‚“ãªã«å…±é€šã„ãŸã—ã¾ã™ -
(ã™ã¹ã¦ãŒã‚ãŸãã—ã®ä¸­ã®ã¿ã‚“ãªã§ã‚ã‚‹ã‚„ã†ã« -
 ã¿ã‚“ãªã®ãŠã®ãŠã®ã®ãªã‹ã®ã™ã¹ã¦ã§ã™ã‹ã‚‰ï¼‰ -
ã‘ã‚Œã©ã‚‚ã“れら新世代沖ç©ä¸–ã® -
巨大ã«æ˜Žã‚‹ã„時間ã®é›†ç©ã®ãªã‹ã§ -
æ­£ã—ãã†ã¤ã•ã‚ŒãŸç­ˆã®ã“れらã®ã“ã¨ã°ãŒ -
ã‚ã¥ã‹ãã®ä¸€é»žã«ã‚‚å‡ã—ã„明暗ã®ã†ã¡ã« -
   (ã‚ã‚‹ã²ã¯ä¿®ç¾…ã®å億年) -
ã™ã§ã«ã¯ã‚„ãã‚‚ãã®çµ„立や質を變㘠-
ã—ã‹ã‚‚ã‚ãŸãã—ã‚‚å°åˆ·è€…ã‚‚ -
ãれを変らãªã„ã¨ã—ã¦æ„Ÿãšã‚‹ã“ã¨ã¯ -
傾å‘ã¨ã—ã¦ã¯ã‚ã‚Šå¾—ã¾ã™ -
ã‘ã ã—ã‚ã‚Œã‚ã‚ŒãŒã‚ã‚Œã‚ã‚Œã®æ„Ÿå®˜ã‚„ -
風景や人物をã‹ã‚“ãšã‚‹ã‚„ã†ã« -
ãã—ã¦ãŸã‚žå…±é€šã«æ„Ÿãšã‚‹ã ã‘ã§ã‚ã‚‹ã‚„ã†ã« -
記録や歴å²ã€ã‚ã‚‹ã²ã¯åœ°å²ã¨ã„ãµã‚‚ã®ã‚‚ -
ãã‚Œã®ã„ã‚ã„ã‚ã®è«–æ–™ã¨ã„ã£ã—ょ㫠-
(因果ã®æ™‚空的制約ã®ã‚‚ã¨ã«ï¼‰ -
ã‚ã‚Œã‚ã‚ŒãŒã‹ã‚“ã˜ã¦ã‚ã‚‹ã®ã«éŽãŽã¾ã›ã‚“ -
ãŠãらãã“ã‚Œã‹ã‚‰äºŒåƒå¹´ã‚‚ãŸã£ãŸã“ã‚㯠-
ãれ相當ã®ã¡ãŒã£ãŸåœ°è³ªå­¸ãŒæµç”¨ã•ã‚Œ -
相當ã—ãŸè­‰æ“šã‚‚ã¾ãŸæ¬¡æ¬¡éŽåŽ»ã‹ã‚‰ç¾å‡ºã— -
ã¿ã‚“ãªã¯äºŒåƒå¹´ãらã‚å‰ã«ã¯ -
é’ãžã‚‰ã„ã£ã±ã„ã®ç„¡è‰²ãªå­”雀ãŒå±…ãŸã¨ãŠã‚‚ã² -
新進ã®å¤§å­¸å£«ãŸã¡ã¯æ°—åœã®ã„ã¡ã°ã‚“ã®ä¸Šå±¤ -
ãらã³ã‚„ã‹ãªæ°·çª’ç´ ã®ã‚ãŸã‚Šã‹ã‚‰ -
ã™ã¦ããªåŒ–石を發堀ã—ãŸã‚Š -
ã‚ã‚‹ã²ã¯ç™½å Šç´€ç ‚岩ã®å±¤é¢ã« -
é€æ˜Žãªäººé¡žã®å·¨å¤§ãªè¶³è·¡ã‚’ -
発見ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ -
   -
ã™ã¹ã¦ã“れらã®å‘½é¡Œã¯ -
心象や時間ãれ自身ã®æ€§è³ªã¨ã—㦠-
第四次延長ã®ãªã‹ã§ä¸»å¼µã•ã‚Œã¾ã™ -
   -
大正å三年一月廿日  宮澤賢治 -
Page: 1
- diff --git a/samples/jo.tex b/samples/jo.tex deleted file mode 100644 index 8b0bc9e..0000000 --- a/samples/jo.tex +++ /dev/null @@ -1,173 +0,0 @@ -\documentclass[landscape,twocolumn]{tarticle} - -\setlength{\hoffset}{-0.6in} -\setlength{\voffset}{-0.7in} - -\setlength{\textwidth}{18cm} -%\setlength{\textheight}{9in} - -%\setlength{\oddsidemargin}{-0.5in} -%\setlength{\evensidemargin}{-0.5in} -\setlength{\topmargin}{0in} -\setlength{\columnsep}{0.4in} - -\pagestyle{empty} -\makeatletter -\def\kanjistrut{\vrule \@height0.88zw \@depth0.12zw \@width\z@} -\newdimen\mytempdima -\newcommand{\ruby}[2]{% - \leavevmode - \setbox0=\hbox{#1}% - \mytempdima=\f@size\p@ - \setbox1=\hbox{\fontsize{0.5\mytempdima}{0pt}\selectfont #2}% - \ifdim\wd0>\wd1 \dimen0=\wd0 \else \dimen0=\wd1 \fi - \hbox{% - \kanjiskip=0pt plus 2fil - \xkanjiskip=0pt plus 2fil - \vbox{% - \hbox to \dimen0{% - \fontsize{0.5\mytempdima}{0pt}\selectfont \kanjistrut\hfil#2\hfil}% - \nointerlineskip - \hbox to \dimen0{\kanjistrut\hfil#1\hfil}}}} -\makeatother - -\begin{document} - -¡¡¡¡½ø -\vspace{0.4in} - -\begin{flushleft} -¤ï¤¿¤¯¤·¤È¤¤¤Õ¸½¾Ý¤Ï - -ÐñÄꤵ¤ì¤¿Í­µ¡¸òήÅÅÅõ¤Î - -¤Ò¤È¤Ä¤ÎÀĤ¤¾ÈÌÀ¤Ç¤¹ - -¡Ê¤¢¤é¤æ¤ëÆ©ÌÀ¤ÊÍ©Îî¤ÎÊ£¹çÂÎ¡Ë - -É÷·Ê¤ä¤ß¤ó¤Ê¤È¤¤¤Ã¤·¤ç¤Ë - -¤»¤Ï¤·¤¯¤»¤Ï¤·¤¯ÌÀÌǤ·¤Ê¤¬¤é - -¤¤¤«¤Ë¤â¤¿¤·¤«¤Ë¤È¤â¤ê¤Ä¤Å¤±¤ë - -°ø²Ì¸òήÅÅÅõ¤Î - -¤Ò¤È¤Ä¤ÎÀĤ¤¾ÈÌÀ¤Ç¤¹ - -¡Ê¤Ò¤«¤ê¤Ï¤¿¤â¤Á¡¢¤½¤ÎÅÅÅõ¤Ï¼º¤Ï¤ì¡Ë - -¡¡¡¡ - -¤³¤ì¤é¤ÏÆó½½Æó²Õ·î¤Î - -²áµî¤È¤«¤ó¤º¤ëÊý³Ñ¤«¤é - -»æ¤ÈïʼÁ¥¤¥ó¥¯¤ò¤Ä¤é¤Í - -¡Ê¤¹¤Ù¤Æ¤ï¤¿¤¯¤·¤ÈÌÀÌǤ· - -¡¡¤ß¤ó¤Ê¤¬Æ±»þ¤Ë´¶¤º¤ë¤â¤Î¡Ë - -¤³¤³¤Þ¤Ç¤¿¤â¤Á¤Ä¡¶¤±¤é¤ì¤¿ - -¤«¤²¤È¤Ò¤«¤ê¤Î¤Ò¤È¤¯¤µ¤ê¤Å¤Ä - -¤½¤Î¤È¤Û¤ê¤Î¿´¾Ý¥¹¥±¥Ã¥Á¤Ç¤¹ - -¡¡¡¡ - -¤³¤ì¤é¤Ë¤Ä¤¤¤Æ¿Í¤ä¶ä²Ï¤ä½¤Íå¤ä³¤ç¼¤Ï - -±§Ãè¿Ð¤ò¤¿¤Ù¡¢¤Þ¤¿¤Ï¶õµ¤¤ä±ö¿å¤ò¸ÆµÛ¤·¤Ê¤¬¤é - -¤½¤ì¤¾¤ì¿·Á¯¤ÊËÜÂÎÏÀ¤â¤«¤ó¤¬¤Ø¤Þ¤»¤¦¤¬ - -¤½¤ì¤é¤âÉ­ð盧¡µ¤í¤Î¤Ò¤È¤Ä¤ÎÉ÷ʪ¤Ç¤¹ - -¤¿¡¶¤¿¤·¤«¤Ëµ­Ï¿¤µ¤ì¤¿¤³¤ì¤é¤Î¤±¤·¤­¤Ï - -µ­Ï¿¤µ¤ì¤¿¤½¤Î¤È¤Û¤ê¤Î¤³¤Î¤±¤·¤­¤Ç - -¤½¤ì¤¬µõ̵¤Ê¤é¤Ðµõ̵¼«¿È¤¬¤³¤Î¤È¤Û¤ê¤Ç - -¤¢¤ëÄøÅ٤ޤǤϤߤó¤Ê¤Ë¶¦Ä̤¤¤¿¤·¤Þ¤¹ - -¡Ê¤¹¤Ù¤Æ¤¬¤ï¤¿¤¯¤·¤ÎÃæ¤Î¤ß¤ó¤Ê¤Ç¤¢¤ë¤ä¤¦¤Ë - -¡¡¤ß¤ó¤Ê¤Î¤ª¤Î¤ª¤Î¤Î¤Ê¤«¤Î¤¹¤Ù¤Æ¤Ç¤¹¤«¤é¡Ë -\newpage - -¡¡ -\vspace{1.0in} - -¤±¤ì¤É¤â¤³¤ì¤é¿·À¤Âå²­ÀÑÀ¤¤Î - -µðÂç¤ËÌÀ¤ë¤¤»þ´Ö¤Î½¸ÀѤΤʤ«¤Ç - -Àµ¤·¤¯¤¦¤Ä¤µ¤ì¤¿È¦¤Î¤³¤ì¤é¤Î¤³¤È¤Ð¤¬ - -¤ï¤Å¤«¤½¤Î°ìóڤˤâ¶Ñ¤·¤¤ÌÀ°Å¤Î¤¦¤Á¤Ë - -¡¡¡¡¡¡¡Ê¤¢¤ë¤Ò¤Ï½¤Íå¤Î½½²¯Ç¯¡Ë - -¤¹¤Ç¤Ë¤Ï¤ä¤¯¤â¤½¤ÎÁÈΩ¤ä¼Á¤òÚΤ¸ - -¤·¤«¤â¤ï¤¿¤¯¤·¤â°õºþ¼Ô¤â - -¤½¤ì¤òÊѤé¤Ê¤¤¤È¤·¤Æ´¶¤º¤ë¤³¤È¤Ï - -·¹¸þ¤È¤·¤Æ¤Ï¤¢¤êÆÀ¤Þ¤¹ - -¤±¤À¤·¤ï¤ì¤ï¤ì¤¬¤ï¤ì¤ï¤ì¤Î´¶´±¤ä - -É÷·Ê¤ä¿Íʪ¤ò¤«¤ó¤º¤ë¤ä¤¦¤Ë - -¤½¤·¤Æ¤¿¡¶¶¦Ä̤˴¶¤º¤ë¤À¤±¤Ç¤¢¤ë¤ä¤¦¤Ë - -µ­Ï¿¤äÎò»Ë¡¢¤¢¤ë¤Ò¤ÏÃϻˤȤ¤¤Õ¤â¤Î¤â - -¤½¤ì¤Î¤¤¤í¤¤¤í¤ÎÏÀÎÁ¤È¤¤¤Ã¤·¤ç¤Ë - -¡Ê°ø²Ì¤Î»þ¶õŪÀ©Ìó¤Î¤â¤È¤Ë¡Ë - -¤ï¤ì¤ï¤ì¤¬¤«¤ó¤¸¤Æ¤ð¤ë¤Î¤Ë²á¤®¤Þ¤»¤ó - -¤ª¤½¤é¤¯¤³¤ì¤«¤éÆóÀéǯ¤â¤¿¤Ã¤¿¤³¤í¤Ï - -¤½¤ìÁêáĤΤÁ¤¬¤Ã¤¿ÃϼÁÕܤ¬Î®ÍѤµ¤ì - -ÁêáĤ·¤¿ëúÚ¡¤â¤Þ¤¿¼¡¼¡²áµî¤«¤é¸½½Ð¤· - -¤ß¤ó¤Ê¤ÏÆóÀéǯ¤°¤é¤ðÁ°¤Ë¤Ï - -ÀĤ¾¤é¤¤¤Ã¤Ñ¤¤¤Î̵¿§¤Ê¹¦¿ý¤¬µï¤¿¤È¤ª¤â¤Ò - -¿·¿Ê¤ÎÂçÕܻΤ¿¤Á¤Ïµ¤·÷¤Î¤¤¤Á¤Ð¤ó¤Î¾åÁØ - -¤­¤é¤Ó¤ä¤«¤ÊɹÃâÁǤΤ¢¤¿¤ê¤«¤é - -¤¹¤Æ¤­¤Ê²½ÀФòâ¤ËÙ¤·¤¿¤ê - -¤¢¤ë¤Ò¤ÏÇòÔÁµªº½´ä¤ÎÁØÌÌ¤Ë - -Æ©ÌÀ¤Ê¿ÍÎà¤ÎµðÂç¤Ê­Àפò - -ȯ¸«¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó - -¡¡¡¡ - -¤¹¤Ù¤Æ¤³¤ì¤é¤ÎÌ¿Âê¤Ï - -¿´¾Ý¤ä»þ´Ö¤½¤ì¼«¿È¤ÎÀ­¼Á¤È¤·¤Æ - -Âè»Í¼¡±äĹ¤Î¤Ê¤«¤Ç¼çÄ¥¤µ¤ì¤Þ¤¹ - -¡¡¡¡ -\end{flushleft} - -\begin{flushright} -ÂçÀµ½½»°Ç¯°ì·îÆûÆü¡¡¡¡µÜß·¸­¼£ -\end{flushright} - -\end{document} diff --git a/samples/jo.txt.ref b/samples/jo.txt.ref deleted file mode 100644 index e61d487..0000000 --- a/samples/jo.txt.ref +++ /dev/null @@ -1,71 +0,0 @@ -ã€€ã€€åº - -  - -ã‚ãŸãã—ã¨ã„ãµç¾è±¡ã¯ -å‡å®šã•ã‚ŒãŸæœ‰æ©Ÿäº¤æµé›»ç‡ˆã® -ã²ã¨ã¤ã®é’ã„照明ã§ã™ -(ã‚らゆるé€æ˜Žãªå¹½éœŠã®è¤‡åˆä½“) -風景やã¿ã‚“ãªã¨ã„ã£ã—ょ㫠-ã›ã¯ã—ãã›ã¯ã—ã明滅ã—ãªãŒã‚‰ -ã„ã‹ã«ã‚‚ãŸã—ã‹ã«ã¨ã‚‚ã‚Šã¤ã¥ã‘ã‚‹ -因果交æµé›»ç‡ˆã® -ã²ã¨ã¤ã®é’ã„照明ã§ã™ -(ã²ã‹ã‚Šã¯ãŸã‚‚ã¡ã€ãã®é›»ç‡ˆã¯å¤±ã¯ã‚Œï¼‰ -   -ã“れらã¯äºŒå二箇月㮠-éŽåŽ»ã¨ã‹ã‚“ãšã‚‹æ–¹è§’ã‹ã‚‰ -ç´™ã¨é‘›è³ªã‚¤ãƒ³ã‚¯ã‚’ã¤ã‚‰ã­ -(ã™ã¹ã¦ã‚ãŸãã—ã¨æ˜Žæ»…ã— - ã¿ã‚“ãªãŒåŒæ™‚ã«æ„Ÿãšã‚‹ã‚‚ã®ï¼‰ -ã“ã“ã¾ã§ãŸã‚‚ã¡ã¤ã‚žã‘られ㟠-ã‹ã’ã¨ã²ã‹ã‚Šã®ã²ã¨ãã•ã‚Šã¥ã¤ -ãã®ã¨ã»ã‚Šã®å¿ƒè±¡ã‚¹ã‚±ãƒƒãƒã§ã™ -   -ã“れらã«ã¤ã„ã¦äººã‚„銀河や修羅や海膽㯠-宇宙塵をãŸã¹ã€ã¾ãŸã¯ç©ºæ°—や塩水を呼å¸ã—ãªãŒã‚‰ -ãã‚Œãžã‚Œæ–°é®®ãªæœ¬ä½“è«–ã‚‚ã‹ã‚“ãŒã¸ã¾ã›ã†ãŒ -ãれらも畢竟ã“ã‚ã‚ã®ã²ã¨ã¤ã®é¢¨ç‰©ã§ã™ -ãŸã‚žãŸã—ã‹ã«è¨˜éŒ²ã•ã‚ŒãŸã“れらã®ã‘ã—ã㯠-記録ã•ã‚ŒãŸãã®ã¨ã»ã‚Šã®ã“ã®ã‘ã—ã㧠-ãã‚ŒãŒè™šç„¡ãªã‚‰ã°è™šç„¡è‡ªèº«ãŒã“ã®ã¨ã»ã‚Šã§ -ã‚る程度ã¾ã§ã¯ã¿ã‚“ãªã«å…±é€šã„ãŸã—ã¾ã™ -(ã™ã¹ã¦ãŒã‚ãŸãã—ã®ä¸­ã®ã¿ã‚“ãªã§ã‚ã‚‹ã‚„ã†ã« - ã¿ã‚“ãªã®ãŠã®ãŠã®ã®ãªã‹ã®ã™ã¹ã¦ã§ã™ã‹ã‚‰ï¼‰ - -ã‘ã‚Œã©ã‚‚ã“れら新世代沖ç©ä¸–ã® -巨大ã«æ˜Žã‚‹ã„時間ã®é›†ç©ã®ãªã‹ã§ -æ­£ã—ãã†ã¤ã•ã‚ŒãŸç­ˆã®ã“れらã®ã“ã¨ã°ãŒ -ã‚ã¥ã‹ãã®ä¸€é»žã«ã‚‚å‡ã—ã„明暗ã®ã†ã¡ã« -   (ã‚ã‚‹ã²ã¯ä¿®ç¾…ã®å億年) -ã™ã§ã«ã¯ã‚„ãã‚‚ãã®çµ„立や質を變㘠-ã—ã‹ã‚‚ã‚ãŸãã—ã‚‚å°åˆ·è€…ã‚‚ -ãれを変らãªã„ã¨ã—ã¦æ„Ÿãšã‚‹ã“ã¨ã¯ -傾å‘ã¨ã—ã¦ã¯ã‚ã‚Šå¾—ã¾ã™ -ã‘ã ã—ã‚ã‚Œã‚ã‚ŒãŒã‚ã‚Œã‚ã‚Œã®æ„Ÿå®˜ã‚„ -風景や人物をã‹ã‚“ãšã‚‹ã‚„ã†ã« -ãã—ã¦ãŸã‚žå…±é€šã«æ„Ÿãšã‚‹ã ã‘ã§ã‚ã‚‹ã‚„ã†ã« -記録や歴å²ã€ã‚ã‚‹ã²ã¯åœ°å²ã¨ã„ãµã‚‚ã®ã‚‚ -ãã‚Œã®ã„ã‚ã„ã‚ã®è«–æ–™ã¨ã„ã£ã—ょ㫠-(因果ã®æ™‚空的制約ã®ã‚‚ã¨ã«ï¼‰ -ã‚ã‚Œã‚ã‚ŒãŒã‹ã‚“ã˜ã¦ã‚ã‚‹ã®ã«éŽãŽã¾ã›ã‚“ -ãŠãらãã“ã‚Œã‹ã‚‰äºŒåƒå¹´ã‚‚ãŸã£ãŸã“ã‚㯠-ãれ相當ã®ã¡ãŒã£ãŸåœ°è³ªå­¸ãŒæµç”¨ã•ã‚Œ -相當ã—ãŸè­‰æ“šã‚‚ã¾ãŸæ¬¡æ¬¡éŽåŽ»ã‹ã‚‰ç¾å‡ºã— -ã¿ã‚“ãªã¯äºŒåƒå¹´ãらã‚å‰ã«ã¯ -é’ãžã‚‰ã„ã£ã±ã„ã®ç„¡è‰²ãªå­”雀ãŒå±…ãŸã¨ãŠã‚‚ã² -新進ã®å¤§å­¸å£«ãŸã¡ã¯æ°—åœã®ã„ã¡ã°ã‚“ã®ä¸Šå±¤ -ãらã³ã‚„ã‹ãªæ°·çª’ç´ ã®ã‚ãŸã‚Šã‹ã‚‰ -ã™ã¦ããªåŒ–石を發堀ã—ãŸã‚Š -ã‚ã‚‹ã²ã¯ç™½å Šç´€ç ‚岩ã®å±¤é¢ã« -é€æ˜Žãªäººé¡žã®å·¨å¤§ãªè¶³è·¡ã‚’ -発見ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ -   -ã™ã¹ã¦ã“れらã®å‘½é¡Œã¯ -心象や時間ãれ自身ã®æ€§è³ªã¨ã—㦠-第四次延長ã®ãªã‹ã§ä¸»å¼µã•ã‚Œã¾ã™ -   - -大正å三年一月廿日  宮澤賢治 - - \ No newline at end of file diff --git a/samples/jo.xml.ref b/samples/jo.xml.ref deleted file mode 100644 index a659c99..0000000 --- a/samples/jo.xml.ref +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - -  -  -åº - - - - - - -  - - - - - - -ã‚ -㟠-ã -ã— -㨠-ã„ -ãµ -ç¾ -象 -㯠- - - - -å‡ -定 -ã• -ã‚Œ -㟠-有 -æ©Ÿ -交 -æµ -é›» -燈 -ã® - - - - -ã² -㨠-㤠-ã® -é’ -ã„ -ç…§ -明 -㧠-ã™ - - - - -( -ã‚ -ら -ゆ -ã‚‹ -é€ -明 -㪠-å¹½ -霊 -ã® -複 -åˆ -体 -) - - - - -風 -景 -ã‚„ -ã¿ -ã‚“ -㪠-㨠-ã„ -㣠-ã— -ょ -ã« - - - - -ã› -㯠-ã— -ã -ã› -㯠-ã— -ã -明 -æ»… -ã— -㪠-㌠-ら - - - - -ã„ -ã‹ -ã« -ã‚‚ -㟠-ã— -ã‹ -ã« -㨠-ã‚‚ -ã‚Š -㤠-㥠-ã‘ -ã‚‹ - - - - -å›  -æžœ -交 -æµ -é›» -燈 -ã® - - - - -ã² -㨠-㤠-ã® -é’ -ã„ -ç…§ -明 -㧠-ã™ - - - - -( -ã² -ã‹ -ã‚Š -㯠-㟠-ã‚‚ -ã¡ -〠-ã -ã® -é›» -燈 -㯠-失 -㯠-ã‚Œ -) - - - - -  -  - - - - -ã“ -ã‚Œ -ら -㯠-二 -å -二 -箇 -月 -ã® - - - - -éŽ -去 -㨠-ã‹ -ã‚“ -ãš -ã‚‹ -æ–¹ -角 -ã‹ -ら - - - - -ç´™ -㨠-é‘› -質 -イ -ン -ク -ã‚’ -㤠-ら -ã­ - - - - -( -ã™ -ã¹ -㦠-ã‚ -㟠-ã -ã— -㨠-明 -æ»… -ã— - - - - -  -ã¿ -ã‚“ -㪠-㌠-åŒ -時 -ã« -æ„Ÿ -ãš -ã‚‹ -ã‚‚ -ã® -) - - - - -ã“ -ã“ -ã¾ -㧠-㟠-ã‚‚ -ã¡ -㤠-ã‚ž -ã‘ -ら -ã‚Œ -㟠- - - - -ã‹ -ã’ -㨠-ã² -ã‹ -ã‚Š -ã® -ã² -㨠-ã -ã• -ã‚Š -㥠-㤠- - - - -ã -ã® -㨠-ã» -ã‚Š -ã® -心 -象 -ス -ケ -ッ -ム-㧠-ã™ - - - - -  -  - - - - -ã“ -ã‚Œ -ら -ã« -㤠-ã„ -㦠-人 -ã‚„ -銀 -æ²³ -ã‚„ -ä¿® -ç¾… -ã‚„ -æµ· -膽 -㯠- - - - -宇 -å®™ -塵 -ã‚’ -㟠-ã¹ -〠-ã¾ -㟠-㯠-空 -æ°— -ã‚„ -å¡© -æ°´ -ã‚’ -呼 -å¸ -ã— -㪠-㌠-ら - - - - -ã -ã‚Œ -ãž -ã‚Œ -æ–° -é®® -㪠-本 -体 -è«– -ã‚‚ -ã‹ -ã‚“ -㌠-㸠-ã¾ -ã› -ㆠ-㌠- - - - -ã -ã‚Œ -ら -ã‚‚ -ç•¢ -ç«Ÿ -ã“ -ã‚ -ã‚ -ã® -ã² -㨠-㤠-ã® -風 -物 -㧠-ã™ - - - - -㟠-ã‚ž -㟠-ã— -ã‹ -ã« -記 -録 -ã• -ã‚Œ -㟠-ã“ -ã‚Œ -ら -ã® -ã‘ -ã— -ã -㯠- - - - -記 -録 -ã• -ã‚Œ -㟠-ã -ã® -㨠-ã» -ã‚Š -ã® -ã“ -ã® -ã‘ -ã— -ã -㧠- - - - -ã -ã‚Œ -㌠-虚 -ç„¡ -㪠-ら -ã° -虚 -ç„¡ -自 -身 -㌠-ã“ -ã® -㨠-ã» -ã‚Š -㧠- - - - -ã‚ -ã‚‹ -程 -度 -ã¾ -㧠-㯠-ã¿ -ã‚“ -㪠-ã« -å…± -通 -ã„ -㟠-ã— -ã¾ -ã™ - - - - -( -ã™ -ã¹ -㦠-㌠-ã‚ -㟠-ã -ã— -ã® -中 -ã® -ã¿ -ã‚“ -㪠-㧠-ã‚ -ã‚‹ -ã‚„ -ㆠ-ã« - - - - -  -ã¿ -ã‚“ -㪠-ã® -㊠-ã® -㊠-ã® -ã® -㪠-ã‹ -ã® -ã™ -ã¹ -㦠-㧠-ã™ -ã‹ -ら -) - - - - - - -ã‘ -ã‚Œ -ã© -ã‚‚ -ã“ -ã‚Œ -ら -æ–° -世 -代 -æ²– -ç© -世 -ã® - - - - -å·¨ -大 -ã« -明 -ã‚‹ -ã„ -時 -é–“ -ã® -集 -ç© -ã® -㪠-ã‹ -㧠- - - - -æ­£ -ã— -ã -ㆠ-㤠-ã• -ã‚Œ -㟠-ç­ˆ -ã® -ã“ -ã‚Œ -ら -ã® -ã“ -㨠-ã° -㌠- - - - -ã‚ -㥠-ã‹ -ã -ã® -一 -點 -ã« -ã‚‚ -å‡ -ã— -ã„ -明 -æš— -ã® -ㆠ-ã¡ -ã« - - - - -  -  -  -( -ã‚ -ã‚‹ -ã² -㯠-ä¿® -ç¾… -ã® -å -å„„ -å¹´ -) - - - - -ã™ -㧠-ã« -㯠-ã‚„ -ã -ã‚‚ -ã -ã® -組 -ç«‹ -ã‚„ -質 -ã‚’ -變 -㘠- - - - -ã— -ã‹ -ã‚‚ -ã‚ -㟠-ã -ã— -ã‚‚ -å° -刷 -者 -ã‚‚ - - - - -ã -ã‚Œ -ã‚’ -変 -ら -㪠-ã„ -㨠-ã— -㦠-æ„Ÿ -ãš -ã‚‹ -ã“ -㨠-㯠- - - - -傾 -å‘ -㨠-ã— -㦠-㯠-ã‚ -ã‚Š -å¾— -ã¾ -ã™ - - - - -ã‘ -ã  -ã— -ã‚ -ã‚Œ -ã‚ -ã‚Œ -㌠-ã‚ -ã‚Œ -ã‚ -ã‚Œ -ã® -æ„Ÿ -官 -ã‚„ - - - - -風 -景 -ã‚„ -人 -物 -ã‚’ -ã‹ -ã‚“ -ãš -ã‚‹ -ã‚„ -ㆠ-ã« - - - - -ã -ã— -㦠-㟠-ã‚ž -å…± -通 -ã« -æ„Ÿ -ãš -ã‚‹ -ã  -ã‘ -㧠-ã‚ -ã‚‹ -ã‚„ -ㆠ-ã« - - - - -記 -録 -ã‚„ -æ­´ -å² -〠-ã‚ -ã‚‹ -ã² -㯠-地 -å² -㨠-ã„ -ãµ -ã‚‚ -ã® -ã‚‚ - - - - -ã -ã‚Œ -ã® -ã„ -ã‚ -ã„ -ã‚ -ã® -è«– -æ–™ -㨠-ã„ -㣠-ã— -ょ -ã« - - - - -( -å›  -æžœ -ã® -時 -空 -çš„ -制 -ç´„ -ã® -ã‚‚ -㨠-ã« -) - - - - -ã‚ -ã‚Œ -ã‚ -ã‚Œ -㌠-ã‹ -ã‚“ -㘠-㦠-ã‚ -ã‚‹ -ã® -ã« -éŽ -㎠-ã¾ -ã› -ã‚“ - - - - -㊠-ã -ら -ã -ã“ -ã‚Œ -ã‹ -ら -二 -åƒ -å¹´ -ã‚‚ -㟠-㣠-㟠-ã“ -ã‚ -㯠- - - - -ã -ã‚Œ -相 -當 -ã® -ã¡ -㌠-㣠-㟠-地 -質 -å­¸ -㌠-æµ -用 -ã• -ã‚Œ - - - - -相 -當 -ã— -㟠-è­‰ -æ“š -ã‚‚ -ã¾ -㟠-次 -次 -éŽ -去 -ã‹ -ら -ç¾ -出 -ã— - - - - -ã¿ -ã‚“ -㪠-㯠-二 -åƒ -å¹´ -ã -ら -ã‚ -å‰ -ã« -㯠- - - - -é’ -ãž -ら -ã„ -㣠-ã± -ã„ -ã® -ç„¡ -色 -㪠-å­” -雀 -㌠-å±… -㟠-㨠-㊠-ã‚‚ -ã² - - - - -æ–° -進 -ã® -大 -å­¸ -士 -㟠-ã¡ -㯠-æ°— -åœ -ã® -ã„ -ã¡ -ã° -ã‚“ -ã® -上 -層 - - - - -ã -ら -ã³ -ã‚„ -ã‹ -㪠-æ°· -窒 -ç´  -ã® -ã‚ -㟠-ã‚Š -ã‹ -ら - - - - -ã™ -㦠-ã -㪠-化 -石 -ã‚’ -發 -å € -ã— -㟠-ã‚Š - - - - -ã‚ -ã‚‹ -ã² -㯠-白 -å Š -ç´€ -ç ‚ -岩 -ã® -層 -é¢ -ã« - - - - -é€ -明 -㪠-人 -é¡ž -ã® -å·¨ -大 -㪠-足 -è·¡ -ã‚’ - - - - -発 -見 -ã™ -ã‚‹ -ã‹ -ã‚‚ -ã— -ã‚Œ -ã¾ -ã› -ã‚“ - - - - -  -  - - - - -ã™ -ã¹ -㦠-ã“ -ã‚Œ -ら -ã® -命 -é¡Œ -㯠- - - - -心 -象 -ã‚„ -時 -é–“ -ã -ã‚Œ -自 -身 -ã® -性 -質 -㨠-ã— -㦠- - - - -第 -å›› -次 -延 -é•· -ã® -㪠-ã‹ -㧠-主 -å¼µ -ã• -ã‚Œ -ã¾ -ã™ - - - - -  -  - - - - - - -大 -æ­£ -å -三 -å¹´ -一 -月 -廿 -æ—¥ -  -  -å®® -澤 -è³¢ -æ²» - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/nonfree/dmca.html.ref b/samples/nonfree/dmca.html.ref deleted file mode 100644 index 07d7ef0..0000000 --- a/samples/nonfree/dmca.html.ref +++ /dev/null @@ -1,50 +0,0 @@ - - - - - -
THE DIGITAL MILLENNIUM COPYRIGHT ACT OF 1998 -
U.S. Copyright Office Summary -
INTRODUCTION -
December 1998 -
The Digital Millennium Copyright Act (DMCA) was signed into law by -
President Clinton on October 28, 1998. The legislation implements two 1996 World -
Intellectual Property Organization (WIPO) treaties: the WIPO Copyright Treaty and -
the WIPO Performances and Phonograms Treaty. The DMCA also addresses a -
number of other significant copyright-related issues. -
1 -
The DMCA is divided into five titles: -
! -
! -
! -
! -
! -
Title I, the “WIPO Copyright and Performances and Phonograms -
Treaties Implementation Act of 1998
,†implements the WIPO -
treaties. -
Title II, the “
Online Copyright Infringement Liability Limitation -
Act
,†creates limitations on the liability of online service providers for -
copyright infringement when engaging in certain types of activities. -
Title III, the “
Computer Maintenance Competition Assurance -
Act
,†creates an exemption for making a copy of a computer program -
by activating a computer for purposes of maintenance or repair. -
Title IV contains six
miscellaneous provisions, relating to the -
functions of the Copyright Office, distance education, the exceptions -
in the Copyright Act for libraries and for making ephemeral recordings, -
“webcasting†of sound recordings on the Internet, and the applicability -
of collective bargaining agreement obligations in the case of transfers -
of rights in motion pictures. -
Title V, the “
Vessel Hull Design Protection Act,†creates a new form -
of protection for the design of vessel hulls. -
This memorandum summarizes briefly each title of the DMCA. It provides -
merely an overview of the law’s provisions; for purposes of length and readability a -
significant amount of detail has been omitted.
A complete understanding of any -
provision of the DMCA requires reference to the text of the legislation itself. -
Pub. L. No. 105-304, 112 Stat. 2860 (Oct. 28, 1998). -
1 -
Copyright Office Summary -
December 1998 -
Page 1 -
-
Page: 1
- diff --git a/samples/nonfree/dmca.txt.ref b/samples/nonfree/dmca.txt.ref deleted file mode 100644 index e6e1de8..0000000 --- a/samples/nonfree/dmca.txt.ref +++ /dev/null @@ -1,61 +0,0 @@ -THE DIGITAL MILLENNIUM COPYRIGHT ACT OF 1998 - -U.S. Copyright Office Summary - -INTRODUCTION - -December 1998 - -The Digital Millennium Copyright Act (DMCA) was signed into law by -President Clinton on October 28, 1998. The legislation implements two 1996 World -Intellectual Property Organization (WIPO) treaties: the WIPO Copyright Treaty and -the WIPO Performances and Phonograms Treaty. The DMCA also addresses a -number of other significant copyright-related issues. - -1 - -The DMCA is divided into five titles: - -! - -! - -! - -! - -! - -Title I, the “WIPO Copyright and Performances and Phonograms -Treaties Implementation Act of 1998,†implements the WIPO -treaties. -Title II, the “Online Copyright Infringement Liability Limitation -Act,†creates limitations on the liability of online service providers for -copyright infringement when engaging in certain types of activities. -Title III, the “Computer Maintenance Competition Assurance -Act,†creates an exemption for making a copy of a computer program -by activating a computer for purposes of maintenance or repair. -Title IV contains six miscellaneous provisions, relating to the -functions of the Copyright Office, distance education, the exceptions -in the Copyright Act for libraries and for making ephemeral recordings, -“webcasting†of sound recordings on the Internet, and the applicability -of collective bargaining agreement obligations in the case of transfers -of rights in motion pictures. -Title V, the “Vessel Hull Design Protection Act,†creates a new form -of protection for the design of vessel hulls. - -This memorandum summarizes briefly each title of the DMCA. It provides -merely an overview of the law’s provisions; for purposes of length and readability a -significant amount of detail has been omitted. A complete understanding of any -provision of the DMCA requires reference to the text of the legislation itself. - -Pub. L. No. 105-304, 112 Stat. 2860 (Oct. 28, 1998). -1 - -Copyright Office Summary - -December 1998 - -Page 1 - - \ No newline at end of file diff --git a/samples/nonfree/dmca.xml.ref b/samples/nonfree/dmca.xml.ref deleted file mode 100644 index 64ec108..0000000 --- a/samples/nonfree/dmca.xml.ref +++ /dev/null @@ -1,2223 +0,0 @@ - - - - - -T -H -E - -D -I -G -I -T -A -L - -M -I -L -L -E -N -N -I -U -M - -C -O -P -Y -R -I -G -H -T - -A -C -T - -O -F - -1 -9 -9 -8 - - - - - - -U -. -S -. - -C -o -p -y -r -i -g -h -t - -O -f -f -i -c -e - -S -u -m -m -a -r -y - - - - - - -I -N -T -R -O -D -U -C -T -I -O -N - - - - - - -D -e -c -e -m -b -e -r - -1 -9 -9 -8 - - - - - - -T -h -e - - -D -i -g -i -t -a -l - - -M -i -l -l -e -n -n -i -u -m - - -C -o -p -y -r -i -g -h -t - - -A -c -t - - -( -D -M -C -A -) - - - -w -a -s - - -s -i -g -n -e -d - - -i -n -t -o - - -l -a -w - - -b -y - - - - -P -r -e -s -i -d -e -n -t - -C -l -i -n -t -o -n - -o -n - -O -c -t -o -b -e -r - -2 -8 -, - -1 -9 -9 -8 -. - - -T -h -e - -l -e -g -i -s -l -a -t -i -o -n - -i -m -p -l -e -m -e -n -t -s - -t -w -o - -1 -9 -9 -6 - -W -o -r -l -d - - - - -I -n -t -e -l -l -e -c -t -u -a -l - -P -r -o -p -e -r -t -y - -O -r -g -a -n -i -z -a -t -i -o -n - -( -W -I -P -O -) - -t -r -e -a -t -i -e -s -: - - -t -h -e - -W -I -P -O - -C -o -p -y -r -i -g -h -t - -T -r -e -a -t -y - -a -n -d - - - - -t -h -e - - -W -I -P -O - - -P -e -r -f -o -r -m -a -n -c -e -s - - -a -n -d - - -P -h -o -n -o -g -r -a -m -s - - -T -r -e -a -t -y -. - - - - -T -h -e - - -D -M -C -A - - -a -l -s -o - - -a -d -d -r -e -s -s -e -s - - -a - - - - -n -u -m -b -e -r - -o -f - -o -t -h -e -r - -s -i -g -n -i -f -i -c -a -n -t - -c -o -p -y -r -i -g -h -t -- -r -e -l -a -t -e -d - -i -s -s -u -e -s -. - - - - - - -1 - - - - - - -T -h -e - -D -M -C -A - -i -s - -d -i -v -i -d -e -d - -i -n -t -o - -f -i -v -e - -t -i -t -l -e -s -: - - - - - - - - -! - - - - - - -! - - - - - - -! - - - - - - -! - - - - - - -! - - - - - - -T -i -t -l -e - -I -, - -t -h -e - -“ -W -I -P -O - -C -o -p -y -r -i -g -h -t - -a -n -d - -P -e -r -f -o -r -m -a -n -c -e -s - -a -n -d - -P -h -o -n -o -g -r -a -m -s - - - - -T -r -e -a -t -i -e -s - - -I -m -p -l -e -m -e -n -t -a -t -i -o -n - - -A -c -t - - -o -f - - -1 -9 -9 -8 -, -†- - -i -m -p -l -e -m -e -n -t -s - - -t -h -e - - -W -I -P -O - - - - -t -r -e -a -t -i -e -s -. - - - - -T -i -t -l -e - -I -I -, - -t -h -e - -“ -O -n -l -i -n -e - -C -o -p -y -r -i -g -h -t - -I -n -f -r -i -n -g -e -m -e -n -t - -L -i -a -b -i -l -i -t -y - -L -i -m -i -t -a -t -i -o -n - - - - -A -c -t -, -†- -c -r -e -a -t -e -s - -l -i -m -i -t -a -t -i -o -n -s - -o -n - -t -h -e - -l -i -a -b -i -l -i -t -y - -o -f - -o -n -l -i -n -e - -s -e -r -v -i -c -e - -p -r -o -v -i -d -e -r -s - -f -o -r - - - - -c -o -p -y -r -i -g -h -t - -i -n -f -r -i -n -g -e -m -e -n -t - - -w -h -e -n - -e -n -g -a -g -i -n -g - -i -n - -c -e -r -t -a -i -n - -t -y -p -e -s - -o -f - -a -c -t -i -v -i -t -i -e -s -. - - - - -T -i -t -l -e - - -I -I -I -, - - -t -h -e - - -“ -C -o -m -p -u -t -e -r - - -M -a -i -n -t -e -n -a -n -c -e - - -C -o -m -p -e -t -i -t -i -o -n - - -A -s -s -u -r -a -n -c -e - - - - -A -c -t -, -†- -c -r -e -a -t -e -s - -a -n - -e -x -e -m -p -t -i -o -n - -f -o -r - -m -a -k -i -n -g - -a - -c -o -p -y - -o -f - -a - -c -o -m -p -u -t -e -r - -p -r -o -g -r -a -m - - - - -b -y - -a -c -t -i -v -a -t -i -n -g - -a - -c -o -m -p -u -t -e -r - -f -o -r - -p -u -r -p -o -s -e -s - -o -f - -m -a -i -n -t -e -n -a -n -c -e - -o -r - -r -e -p -a -i -r -. - - - - -T -i -t -l -e - - -I -V - - -c -o -n -t -a -i -n -s - - -s -i -x - - -m -i -s -c -e -l -l -a -n -e -o -u -s - - -p -r -o -v -i -s -i -o -n -s -, - - -r -e -l -a -t -i -n -g - - -t -o - - -t -h -e - - - - -f -u -n -c -t -i -o -n -s - -o -f - -t -h -e - -C -o -p -y -r -i -g -h -t - -O -f -f -i -c -e -, - -d -i -s -t -a -n -c -e - -e -d -u -c -a -t -i -o -n -, - -t -h -e - -e -x -c -e -p -t -i -o -n -s - - - - -i -n - -t -h -e - -C -o -p -y -r -i -g -h -t - -A -c -t - -f -o -r - -l -i -b -r -a -r -i -e -s - -a -n -d - -f -o -r - -m -a -k -i -n -g - -e -p -h -e -m -e -r -a -l - -r -e -c -o -r -d -i -n -g -s -, - - - - -“ -w -e -b -c -a -s -t -i -n -g -†- -o -f - -s -o -u -n -d - -r -e -c -o -r -d -i -n -g -s - -o -n - -t -h -e - -I -n -t -e -r -n -e -t -, - -a -n -d - -t -h -e - -a -p -p -l -i -c -a -b -i -l -i -t -y - - - - -o -f - -c -o -l -l -e -c -t -i -v -e - -b -a -r -g -a -i -n -i -n -g - -a -g -r -e -e -m -e -n -t - -o -b -l -i -g -a -t -i -o -n -s - -i -n - -t -h -e - -c -a -s -e - -o -f - -t -r -a -n -s -f -e -r -s - - - - -o -f - -r -i -g -h -t -s - -i -n - -m -o -t -i -o -n - -p -i -c -t -u -r -e -s -. - - - - -T -i -t -l -e - -V -, - -t -h -e - -“ -V -e -s -s -e -l - -H -u -l -l - -D -e -s -i -g -n - -P -r -o -t -e -c -t -i -o -n - -A -c -t -, -†- -c -r -e -a -t -e -s - -a - -n -e -w - -f -o -r -m - - - - -o -f - -p -r -o -t -e -c -t -i -o -n - -f -o -r - -t -h -e - -d -e -s -i -g -n - -o -f - -v -e -s -s -e -l - -h -u -l -l -s -. - - - - - - -T -h -i -s - -m -e -m -o -r -a -n -d -u -m - -s -u -m -m -a -r -i -z -e -s - -b -r -i -e -f -l -y - -e -a -c -h - -t -i -t -l -e - -o -f - -t -h -e - -D -M -C -A -. - - -I -t - -p -r -o -v -i -d -e -s - - - - -m -e -r -e -l -y - -a -n - -o -v -e -r -v -i -e -w - -o -f - -t -h -e - -l -a -w -’ -s - -p -r -o -v -i -s -i -o -n -s -; - -f -o -r - -p -u -r -p -o -s -e -s - -o -f - -l -e -n -g -t -h - -a -n -d - -r -e -a -d -a -b -i -l -i -t -y - -a - - - - -s -i -g -n -i -f -i -c -a -n -t - -a -m -o -u -n -t - -o -f - -d -e -t -a -i -l - -h -a -s - -b -e -e -n - -o -m -i -t -t -e -d -. - - -A - -c -o -m -p -l -e -t -e - -u -n -d -e -r -s -t -a -n -d -i -n -g - -o -f - -a -n -y - - - - -p -r -o -v -i -s -i -o -n - -o -f - -t -h -e - -D -M -C -A - -r -e -q -u -i -r -e -s - -r -e -f -e -r -e -n -c -e - -t -o - -t -h -e - -t -e -x -t - -o -f - -t -h -e - -l -e -g -i -s -l -a -t -i -o -n - -i -t -s -e -l -f -. - - - - - - -P -u -b -. - -L -. - -N -o -. - -1 -0 -5 -- -3 -0 -4 -, - -1 -1 -2 - -S -t -a -t -. - -2 -8 -6 -0 - -( -O -c -t -. - -2 -8 -, - -1 -9 -9 -8 -) -. - - - - -1 - - - - - - -C -o -p -y -r -i -g -h -t - -O -f -f -i -c -e - -S -u -m -m -a -r -y - - - - - - -D -e -c -e -m -b -e -r - -1 -9 -9 -8 - - - - - - -P -a -g -e - -1 - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/samples/nonfree/f1040nr.html.ref b/samples/nonfree/f1040nr.html.ref deleted file mode 100644 index e0d71fb..0000000 --- a/samples/nonfree/f1040nr.html.ref +++ /dev/null @@ -1,475 +0,0 @@ - - - - - -
OMB No. 1545-0074 -
-
2007 -
Identifying number (see page 8) -
-
I -
Check if: -
-
ndividual -
-
Estate or Trust -
Type of entry visa (see page 8) -
, 20 -
-
䊳 -
resent home address (number, street, and apt. no., or rural route). If you have a P.O. box, see page 8. -
-
City, town or post office, state, and ZIP code. If you have a foreign address, see page 8. -
-
Country 䊳 -
Give address outside the United States to which you want any -
refund check mailed. If same as above, write “Same.†-
-
-
Of what country were you a citizen or national during the tax year? 䊳 -
Give address in the country where you are a permanent resident. -
If same as above, write “Same.†-
-
-
U.S. Nonresident Alien Income Tax Return -
-
beginning -
For the year January 1–December 31, 2007, or other tax year -
-
, 2007, and ending -
Last name -
-
1040NR -
-
Form -
Department of the Treasury -
Internal Revenue Service -
-
Your first name and initial -
P -
Please print or type. -
-
Also attach Form(s) 1099-R if tax was withheld. -
Attach Forms W-2 here. -
7a -
7b -
Yourself -
-
Spouse -
-
å…µ -
䊳 -
䊳 -
䊳 -
䊳 -
䊳 -
-
-
-
-
-
No. of boxes checked -
on 7a and 7b -
-
No. of children on -
7c who: -
-
â— lived with you -
â— did not live with -
you due to divorce -
or separation -
-
Dependents on 7c -
not entered above -
dd numbers entered -
on lines above -
-
8 -
-
9a -
A -
10a -
11 -
12 -
13 -
14 -
15 -
16b -
17b -
18 -
19 -
20 -
21 -
23 -
34 -
35
-
Form 1040NR (2007) -
-
If you check box 7b, enter your spouse’s -
identifying number
䊳 -
relationship -
to you -
-
(4) -
if qualifying -
child for child tax -
credit (see page 9) -
-
-
-
-
å…¶ -
Filing status. Check only one box (1–6 below). -
-
1 -
-
2 -
-
3 -
-
4 -
-
5 -
-
6 -
-
Caution: Do not check box 7a if your parent (or someone else) can claim you as a dependent. -
Do not check box 7b if your spouse had any U.S. gross income. -
7c -
Single resident of Canada or Mexico, or a single U.S. national -
Other single nonresident alien -
Married resident of Canada or Mexico, or a married U.S. national -
-
Married resident of the Republic of Korea (South Korea) -
-
Other married nonresident alien -
-
Qualifying widow(er) with dependent child (see page 9) -
-
Dependents: (see page 9) -
(3) Dependent’s -
-
-
Filing Status and Exemptions for Individuals (see page 8) -
-
(1) First name -
-
Last name -
-
(2) Dependent’s -
identifying number -
-
. -
. -
. -
-
. -
. -
. -
-
. -
. -
. -
-
. -
. -
. -
-
. -
. -
. -
-
. -
. -
. -
-
. -
. -
. -
-
. -
. -
. -
-
-
-
-
-
-
9b -
10b -
16b -
17b -
16a -
-
17a -
-
Total number of exemptions claimed -
-
Wages, salaries, tips, etc. Attach Form(s) W-2 -
-
Taxable interest -
Tax-exempt interest. Do not include on line 9a -
Ordinary dividends -
-
Qualified dividends (see page 11) -
Taxable refunds, credits, or offsets of state and local income taxes (see page 11) -
-
Scholarship and fellowship grants. Attach Form(s) 1042-S or required statement (see page 11) -
-
Business income or (loss). Attach Schedule C or C-EZ (Form 1040) -
-
Capital gain or (loss). Attach Schedule D (Form 1040) if required. If not required, check here -
-
Other gains or (losses). Attach Form 4797 -
IRA distributions -
-
Pensions and annuities -
Rental real estate, royalties, partnerships, trusts, etc. Attach Schedule E (Form 1040) -
Farm income or (loss). Attach Schedule F (Form 1040) -
-
Unemployment compensation -
Other income. List type and amount (see page 15) -
Total income exempt by a treaty from page 5, Item M -
Add lines 8, 9a, 10a, 11–15, 16b, and 17b–21. This is your
total effectively connected income 䊳 -
-
Educator expenses (see page 15) -
Health savings account deduction. Attach Form 8889 -
Moving expenses. Attach Form 3903 -
Self-employed SEP, SIMPLE, and qualified plans -
-
Self-employed health insurance deduction (see page 16) -
Penalty on early withdrawal of savings -
-
Scholarship and fellowship grants excluded -
-
IRA deduction (see page 16) -
-
Student loan interest deduction (see page 16) -
-
Domestic production activities deduction. Attach Form 8903 -
-
Add lines 24 through 33 -
Subtract line 34 from line 23. Enter here and on line 36. This is your
adjusted gross income 䊳 -
-
-
24 -
25 -
26 -
27 -
28 -
29 -
30 -
31 -
32 -
33 -
Taxable amount (see page 12) -
-
Taxable amount (see page 13) -
-
22 -
-
-
-
-
-
-
-
-
d -
-
8 -
-
9a -
b -
-
10a -
b -
-
11 -
12 -
13 -
14 -
15 -
16a -
17a -
18 -
19 -
20 -
21 -
22 -
23 -
24 -
25 -
26 -
27 -
28 -
29 -
30 -
31 -
32 -
33 -
34 -
35 -
Income Effectively Connected With U.S. Trade/Business -
-
Adjusted Gross Income -
-
Enclose, but do not attach, any payment. -
-
-
For Disclosure, Privacy Act, and Paperwork Reduction Act Notice, see page 32. -
-
Cat. No. 11364D -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Page: 1
- diff --git a/samples/nonfree/f1040nr.txt.ref b/samples/nonfree/f1040nr.txt.ref deleted file mode 100644 index e1b204f..0000000 --- a/samples/nonfree/f1040nr.txt.ref +++ /dev/null @@ -1,431 +0,0 @@ -OMB No. 1545-0074 - - -2007 - -Identifying number (see page 8) - - - I - -Check if: - - -ndividual - -Estate or Trust -Type of entry visa (see page 8) - -, 20 - - -䊳 - -resent home address (number, street, and apt. no., or rural route). If you have a P.O. box, see page 8. - - - -City, town or post office, state, and ZIP code. If you have a foreign address, see page 8. - - -Country 䊳 -Give address outside the United States to which you want any -refund check mailed. If same as above, write “Same.†- - - - -Of what country were you a citizen or national during the tax year? 䊳 - -Give address in the country where you are a permanent resident. -If same as above, write “Same.†- - - - -U.S. Nonresident Alien Income Tax Return - - -beginning - -For the year January 1–December 31, 2007, or other tax year - - -, 2007, and ending - -Last name - - -1040NR - - -Form -Department of the Treasury -Internal Revenue Service - - -Your first name and initial - - P - -Please print or type. - - - -Also attach Form(s) 1099-R if tax was withheld. - -Attach Forms W-2 here. - -7a - -7b - -Yourself - - -Spouse - - -兵 - -䊳 - -䊳 - -䊳 - -䊳 - -䊳 - - - - - - - - - - - -No. of boxes checked -on 7a and 7b - -No. of children on -7c who: - -◠lived with you - ◠did not live with -you due to divorce -or separation - -Dependents on 7c -not entered above - -dd numbers entered - -on lines above - - -8 - -9a - - A - -10a - -11 -12 -13 -14 -15 -16b -17b -18 -19 -20 -21 - -23 - -34 -35 - -Form 1040NR (2007) - - - -If you check box 7b, enter your spouse’s -identifying number 䊳 - -relationship - -to you - - -(4) -if qualifying -child for child tax -credit (see page 9) - - - - - - - - -其 - -Filing status. Check only one box (1–6 below). - -1 - -2 - -3 - -4 - -5 - -6 - -Caution: Do not check box 7a if your parent (or someone else) can claim you as a dependent. -Do not check box 7b if your spouse had any U.S. gross income. -7c - -Single resident of Canada or Mexico, or a single U.S. national -Other single nonresident alien -Married resident of Canada or Mexico, or a married U.S. national - -Married resident of the Republic of Korea (South Korea) - -Other married nonresident alien - -Qualifying widow(er) with dependent child (see page 9) - - -Dependents: (see page 9) - -(3) Dependent’s - - - - - -Filing Status and Exemptions for Individuals (see page 8) - - - -(1) First name - - - -Last name - - -(2) Dependent’s -identifying number - - -. -. -. - -. -. -. - -. -. -. - -. -. -. - - -. -. -. - -. -. -. - -. -. -. - -. -. -. - - - - - - - - - - - - -9b - -10b - -16b -17b - -16a - -17a - - -Total number of exemptions claimed - -Wages, salaries, tips, etc. Attach Form(s) W-2 - -Taxable interest -Tax-exempt interest. Do not include on line 9a -Ordinary dividends - -Qualified dividends (see page 11) -Taxable refunds, credits, or offsets of state and local income taxes (see page 11) - -Scholarship and fellowship grants. Attach Form(s) 1042-S or required statement (see page 11) - -Business income or (loss). Attach Schedule C or C-EZ (Form 1040) - -Capital gain or (loss). Attach Schedule D (Form 1040) if required. If not required, check here - -Other gains or (losses). Attach Form 4797 -IRA distributions - -Pensions and annuities -Rental real estate, royalties, partnerships, trusts, etc. Attach Schedule E (Form 1040) -Farm income or (loss). Attach Schedule F (Form 1040) - -Unemployment compensation -Other income. List type and amount (see page 15) -Total income exempt by a treaty from page 5, Item M -Add lines 8, 9a, 10a, 11–15, 16b, and 17b–21. This is your total effectively connected income 䊳 - -Educator expenses (see page 15) -Health savings account deduction. Attach Form 8889 -Moving expenses. Attach Form 3903 -Self-employed SEP, SIMPLE, and qualified plans - -Self-employed health insurance deduction (see page 16) -Penalty on early withdrawal of savings - -Scholarship and fellowship grants excluded - -IRA deduction (see page 16) - -Student loan interest deduction (see page 16) - -Domestic production activities deduction. Attach Form 8903 - -Add lines 24 through 33 -Subtract line 34 from line 23. Enter here and on line 36. This is your adjusted gross income 䊳 - - - -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 - -Taxable amount (see page 12) - -Taxable amount (see page 13) - - -22 - - - - - - - - - - - - - - - - - -d - - -8 - -9a -b - -10a -b - - -11 -12 -13 -14 -15 -16a -17a -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 - -Income Effectively Connected With U.S. Trade/Business - - - -Adjusted Gross Income - - - -Enclose, but do not attach, any payment. - - - - - -For Disclosure, Privacy Act, and Paperwork Reduction Act Notice, see page 32. - - -Cat. No. 11364D - - - \ No newline at end of file diff --git a/samples/nonfree/f1040nr.xml.ref b/samples/nonfree/f1040nr.xml.ref deleted file mode 100644 index 914dab6..0000000 --- a/samples/nonfree/f1040nr.xml.ref +++ /dev/null @@ -1,6026 +0,0 @@ - - - - - -O -M -B - -N -o -. - -1 -5 -4 -5 -- -0 -0 -7 -4 - - - - - - - - - - - -2 -0 -0 -7 - - - - - - - -I -d -e -n -t -i -f -y -i -n -g - -n -u -m -b -e -r - -( -s -e -e - -p -a -g -e - -8 -) - - - - - - - - - - - - -I - - - - - - -C -h -e -c -k - -i -f -: - - - - - - - - - - - -n -d -i -v -i -d -u -a -l - - - - - - - - - -E -s -t -a -t -e - -o -r - -T -r -u -s -t - - - - -T -y -p -e - -o -f - -e -n -t -r -y - -v -i -s -a - -( -s -e -e - -p -a -g -e - -8 -) - - - - - - -, - -2 -0 - - - - - - - - - - - -䊳 - - - - - - - - -r -e -s -e -n -t - -h -o -m -e - -a -d -d -r -e -s -s - -( -n -u -m -b -e -r -, - -s -t -r -e -e -t -, - -a -n -d - -a -p -t -. - -n -o -. -, - -o -r - -r -u -r -a -l - -r -o -u -t -e -) -. - -I -f - -y -o -u - -h -a -v -e - -a - -P -. -O -. - -b -o -x -, - -s -e -e - -p -a -g -e - -8 -. - - - - - - - - - - - - - -C -i -t -y -, - -t -o -w -n - -o -r - -p -o -s -t - -o -f -f -i -c -e -, - -s -t -a -t -e -, - -a -n -d - -Z -I -P - -c -o -d -e -. - -I -f - -y -o -u - -h -a -v -e - -a - -f -o -r -e -i -g -n - -a -d -d -r -e -s -s -, - -s -e -e - -p -a -g -e - -8 -. - - - - - - - - - - - -C -o -u -n -t -r -y - -䊳 - - - - -G -i -v -e - -a -d -d -r -e -s -s - -o -u -t -s -i -d -e - -t -h -e - -U -n -i -t -e -d - -S -t -a -t -e -s - -t -o - -w -h -i -c -h - -y -o -u - -w -a -n -t - -a -n -y - - - - -r -e -f -u -n -d - -c -h -e -c -k - -m -a -i -l -e -d -. - -I -f - -s -a -m -e - -a -s - -a -b -o -v -e -, - -w -r -i -t -e - -“ -S -a -m -e -. -†- - - - - - - - - - - - - - - - - - -O -f - -w -h -a -t - -c -o -u -n -t -r -y - -w -e -r -e - -y -o -u - -a - -c -i -t -i -z -e -n - -o -r - -n -a -t -i -o -n -a -l - -d -u -r -i -n -g - -t -h -e - -t -a -x - -y -e -a -r -? - -䊳 - - - - - - -G -i -v -e - -a -d -d -r -e -s -s - -i -n - -t -h -e - -c -o -u -n -t -r -y - -w -h -e -r -e - -y -o -u - -a -r -e - -a - -p -e -r -m -a -n -e -n -t - -r -e -s -i -d -e -n -t -. - - - - -I -f - -s -a -m -e - -a -s - -a -b -o -v -e -, - -w -r -i -t -e - -“ -S -a -m -e -. -†- - - - - - - - - - - - - - - - - - -U -. -S -. - -N -o -n -r -e -s -i -d -e -n -t - -A -l -i -e -n - -I -n -c -o -m -e - -T -a -x - -R -e -t -u -r -n - - - - - - - - - - - -b -e -g -i -n -n -i -n -g - - - - - - -F -o -r - -t -h -e - -y -e -a -r - -J -a -n -u -a -r -y - -1 -– -D -e -c -e -m -b -e -r - -3 -1 -, - -2 -0 -0 -7 -, - -o -r - -o -t -h -e -r - -t -a -x - -y -e -a -r - - - - - - - - - - - -, - -2 -0 -0 -7 -, - -a -n -d - -e -n -d -i -n -g - - - - - - - -L -a -s -t - -n -a -m -e - - - - - - - - - - - -1 -0 -4 -0 -N -R - - - - - - - - - - - -F -o -r -m - - - - - -D -e -p -a -r -t -m -e -n -t - -o -f - -t -h -e - -T -r -e -a -s -u -r -y - - - - -I -n -t -e -r -n -a -l - -R -e -v -e -n -u -e - -S -e -r -v -i -c -e - - - - - - - - - - - -Y -o -u -r - -f -i -r -s -t - -n -a -m -e - -a -n -d - -i -n -i -t -i -a -l - - - - - - - - -P - - - - - - -P -l -e -a -s -e - -p -r -i -n -t - -o -r - -t -y -p -e -. - - - - - - - - - - - - - -A -l -s -o - -a -t -t -a -c -h - -F -o -r -m -( -s -) - -1 -0 -9 -9 -- -R - -i -f - -t -a -x - -w -a -s - -w -i -t -h -h -e -l -d -. - - - - - - -A -t -t -a -c -h - -F -o -r -m -s - -W -- -2 - -h -e -r -e -. - - - - - - -7 -a - - - - - - - -7 -b - - - - - - - -Y -o -u -r -s -e -l -f - - - - - - - - - - - -S -p -o -u -s -e - - - - - - - - - - - -兵 - - - - - - - -䊳 - - - - - - -䊳 - - - - - - -䊳 - - - - - - -䊳 - - - - - - -䊳 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N -o -. - -o -f - -b -o -x -e -s - -c -h -e -c -k -e -d - - - - -o -n - -7 -a - -a -n -d - -7 -b - - - - - - - - - -N -o -. - -o -f - -c -h -i -l -d -r -e -n - -o -n - - - - -7 -c - -w -h -o -: - - - - - - - - - -◠- -l -i -v -e -d - -w -i -t -h - -y -o -u - - - - - -◠- -d -i -d - -n -o -t - -l -i -v -e - -w -i -t -h - - - - -y -o -u - -d -u -e - -t -o - -d -i -v -o -r -c -e - - - - - -o -r - -s -e -p -a -r -a -t -i -o -n - - - - - - - - - -D -e -p -e -n -d -e -n -t -s - -o -n - -7 -c - - - - -n -o -t - -e -n -t -e -r -e -d - -a -b -o -v -e - - - - - - -d -d - -n -u -m -b -e -r -s - -e -n -t -e -r -e -d - - - - - - -o -n - -l -i -n -e -s - -a -b -o -v -e - - - - - - - - - - - -8 - - - - - - - - - -9 -a - - - - - - - - -A - - - - - - -1 -0 -a - - - - - - - -1 -1 - - - - - -1 -2 - - - - - -1 -3 - - - - - -1 -4 - - - - - -1 -5 - - - - - -1 -6 -b - - - - - -1 -7 -b - - - - - -1 -8 - - - - - -1 -9 - - - - - -2 -0 - - - - - -2 -1 - - - - - - - -2 -3 - - - - - - - -3 -4 - - - - - -3 -5 - - - - - - - -F -o -r -m - -1 -0 -4 -0 -N -R - -( -2 -0 -0 -7 -) - - - - - - - - - - - - - -I -f - -y -o -u - -c -h -e -c -k - -b -o -x - -7 -b -, - -e -n -t -e -r - -y -o -u -r - -s -p -o -u -s -e -’ -s - - - - -i -d -e -n -t -i -f -y -i -n -g - -n -u -m -b -e -r - -䊳 - - - - - - -r -e -l -a -t -i -o -n -s -h -i -p - - - - - - -t -o - -y -o -u - - - - - - - - - - - -( -4 -) - - - - - -i -f - -q -u -a -l -i -f -y -i -n -g - - - - -c -h -i -l -d - -f -o -r - -c -h -i -l -d - -t -a -x - - - - -c -r -e -d -i -t - -( -s -e -e - -p -a -g -e - -9 -) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -其 - - - - - - - -F -i -l -i -n -g - -s -t -a -t -u -s -. - -C -h -e -c -k - -o -n -l -y - -o -n -e - -b -o -x - -( -1 -– -6 - -b -e -l -o -w -) -. - - - - - - - - - -1 - - - - - - - - - -2 - - - - - - - - - -3 - - - - - - - - - -4 - - - - - - - - - -5 - - - - - - - - - -6 - - - - - - - - - -C -a -u -t -i -o -n -: - -D -o - -n -o -t - -c -h -e -c -k - -b -o -x - -7 -a - -i -f - -y -o -u -r - -p -a -r -e -n -t - -( -o -r - -s -o -m -e -o -n -e - -e -l -s -e -) - -c -a -n - -c -l -a -i -m - -y -o -u - -a -s - -a - -d -e -p -e -n -d -e -n -t -. - - - - -D -o - -n -o -t - -c -h -e -c -k - -b -o -x - -7 -b - -i -f - -y -o -u -r - -s -p -o -u -s -e - -h -a -d - -a -n -y - -U -. -S -. - -g -r -o -s -s - -i -n -c -o -m -e -. - - - - -7 -c - - - - - - - -S -i -n -g -l -e - -r -e -s -i -d -e -n -t - -o -f - -C -a -n -a -d -a - -o -r - -M -e -x -i -c -o -, - -o -r - -a - -s -i -n -g -l -e - -U -. -S -. - -n -a -t -i -o -n -a -l - - - - -O -t -h -e -r - -s -i -n -g -l -e - -n -o -n -r -e -s -i -d -e -n -t - -a -l -i -e -n - - - - -M -a -r -r -i -e -d - -r -e -s -i -d -e -n -t - -o -f - -C -a -n -a -d -a - -o -r - -M -e -x -i -c -o -, - -o -r - -a - -m -a -r -r -i -e -d - -U -. -S -. - -n -a -t -i -o -n -a -l - - - - - - - - - -M -a -r -r -i -e -d - -r -e -s -i -d -e -n -t - -o -f - -t -h -e - -R -e -p -u -b -l -i -c - -o -f - -K -o -r -e -a - -( -S -o -u -t -h - -K -o -r -e -a -) - - - - - - - - - -O -t -h -e -r - -m -a -r -r -i -e -d - -n -o -n -r -e -s -i -d -e -n -t - -a -l -i -e -n - - - - - - - - - -Q -u -a -l -i -f -y -i -n -g - -w -i -d -o -w -( -e -r -) - -w -i -t -h - -d -e -p -e -n -d -e -n -t - -c -h -i -l -d - -( -s -e -e - -p -a -g -e - -9 -) - - - - - - - - - - - -D -e -p -e -n -d -e -n -t -s -: - -( -s -e -e - -p -a -g -e - -9 -) - - - - - - -( -3 -) - -D -e -p -e -n -d -e -n -t -’ -s - - - - - - - - - - - - - - - - - - - - -F -i -l -i -n -g - -S -t -a -t -u -s - -a -n -d - -E -x -e -m -p -t -i -o -n -s - -f -o -r - -I -n -d -i -v -i -d -u -a -l -s - -( -s -e -e - -p -a -g -e - -8 -) - - - - - - - - - - - - - -( -1 -) - -F -i -r -s -t - -n -a -m -e - - - - - - - - - - - - - -L -a -s -t - -n -a -m -e - - - - - - - - - - - -( -2 -) - -D -e -p -e -n -d -e -n -t -’ -s - - - - - -i -d -e -n -t -i -f -y -i -n -g - -n -u -m -b -e -r - - - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - -. - - - - -. - - - - -. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -9 -b - - - - - - - -1 -0 -b - - - - - - - -1 -6 -b - - - - - -1 -7 -b - - - - - - - -1 -6 -a - - - - - - - - - -1 -7 -a - - - - - - - - - - - -T -o -t -a -l - -n -u -m -b -e -r - -o -f - -e -x -e -m -p -t -i -o -n -s - -c -l -a -i -m -e -d - - - - - - - - - -W -a -g -e -s -, - -s -a -l -a -r -i -e -s -, - -t -i -p -s -, - -e -t -c -. - -A -t -t -a -c -h - -F -o -r -m -( -s -) - -W -- -2 - - - - - - - - - -T -a -x -a -b -l -e - -i -n -t -e -r -e -s -t - - - - -T -a -x -- -e -x -e -m -p -t - -i -n -t -e -r -e -s -t -. - -D -o - -n -o -t - -i -n -c -l -u -d -e - -o -n - -l -i -n -e - -9 -a - - - - - -O -r -d -i -n -a -r -y - -d -i -v -i -d -e -n -d -s - - - - - - - - - -Q -u -a -l -i -f -i -e -d - -d -i -v -i -d -e -n -d -s - -( -s -e -e - -p -a -g -e - -1 -1 -) - - - - - -T -a -x -a -b -l -e - -r -e -f -u -n -d -s -, - -c -r -e -d -i -t -s -, - -o -r - -o -f -f -s -e -t -s - -o -f - -s -t -a -t -e - -a -n -d - -l -o -c -a -l - -i -n -c -o -m -e - -t -a -x -e -s - -( -s -e -e - -p -a -g -e - -1 -1 -) - - - - - - - - - - -S -c -h -o -l -a -r -s -h -i -p - -a -n -d - -f -e -l -l -o -w -s -h -i -p - -g -r -a -n -t -s -. - -A -t -t -a -c -h - -F -o -r -m -( -s -) - -1 -0 -4 -2 -- -S - -o -r - -r -e -q -u -i -r -e -d - -s -t -a -t -e -m -e -n -t - -( -s -e -e - -p -a -g -e - -1 -1 -) - - - - - - - - - - -B -u -s -i -n -e -s -s - -i -n -c -o -m -e - -o -r - -( -l -o -s -s -) -. - -A -t -t -a -c -h - -S -c -h -e -d -u -l -e - -C - -o -r - -C -- -E -Z - -( -F -o -r -m - -1 -0 -4 -0 -) - - - - - - - - - -C -a -p -i -t -a -l - -g -a -i -n - -o -r - -( -l -o -s -s -) -. - -A -t -t -a -c -h - -S -c -h -e -d -u -l -e - -D - -( -F -o -r -m - -1 -0 -4 -0 -) - -i -f - -r -e -q -u -i -r -e -d -. - -I -f - -n -o -t - -r -e -q -u -i -r -e -d -, - -c -h -e -c -k - -h -e -r -e - - - - - - - - - -O -t -h -e -r - -g -a -i -n -s - -o -r - -( -l -o -s -s -e -s -) -. - -A -t -t -a -c -h - -F -o -r -m - -4 -7 -9 -7 - - - - -I -R -A - -d -i -s -t -r -i -b -u -t -i -o -n -s - - - - - - - - - -P -e -n -s -i -o -n -s - -a -n -d - -a -n -n -u -i -t -i -e -s - - - - -R -e -n -t -a -l - -r -e -a -l - -e -s -t -a -t -e -, - -r -o -y -a -l -t -i -e -s -, - -p -a -r -t -n -e -r -s -h -i -p -s -, - -t -r -u -s -t -s -, - -e -t -c -. - -A -t -t -a -c -h - -S -c -h -e -d -u -l -e - -E - -( -F -o -r -m - -1 -0 -4 -0 -) - - - - -F -a -r -m - -i -n -c -o -m -e - -o -r - -( -l -o -s -s -) -. - -A -t -t -a -c -h - -S -c -h -e -d -u -l -e - -F - -( -F -o -r -m - -1 -0 -4 -0 -) - - - - - - - - - -U -n -e -m -p -l -o -y -m -e -n -t - -c -o -m -p -e -n -s -a -t -i -o -n - - - - -O -t -h -e -r - -i -n -c -o -m -e -. - -L -i -s -t - -t -y -p -e - -a -n -d - -a -m -o -u -n -t - -( -s -e -e - -p -a -g -e - -1 -5 -) - - - - -T -o -t -a -l - -i -n -c -o -m -e - -e -x -e -m -p -t - -b -y - -a - -t -r -e -a -t -y - -f -r -o -m - -p -a -g -e - -5 -, - -I -t -e -m - -M - - - - -A -d -d - -l -i -n -e -s - -8 -, - -9 -a -, - -1 -0 -a -, - -1 -1 -– -1 -5 -, - -1 -6 -b -, - -a -n -d - -1 -7 -b -– -2 -1 -. - -T -h -i -s - -i -s - -y -o -u -r - -t -o -t -a -l - -e -f -f -e -c -t -i -v -e -l -y - -c -o -n -n -e -c -t -e -d - -i -n -c -o -m -e - -䊳 - - - - - - - - - -E -d -u -c -a -t -o -r - -e -x -p -e -n -s -e -s - -( -s -e -e - -p -a -g -e - -1 -5 -) - - - - -H -e -a -l -t -h - -s -a -v -i -n -g -s - -a -c -c -o -u -n -t - -d -e -d -u -c -t -i -o -n -. - -A -t -t -a -c -h - -F -o -r -m - -8 -8 -8 -9 - - - - -M -o -v -i -n -g - -e -x -p -e -n -s -e -s -. - -A -t -t -a -c -h - -F -o -r -m - -3 -9 -0 -3 - - - - -S -e -l -f -- -e -m -p -l -o -y -e -d - -S -E -P -, - -S -I -M -P -L -E -, - -a -n -d - -q -u -a -l -i -f -i -e -d - -p -l -a -n -s - - - - - - - - - -S -e -l -f -- -e -m -p -l -o -y -e -d - -h -e -a -l -t -h - -i -n -s -u -r -a -n -c -e - -d -e -d -u -c -t -i -o -n - -( -s -e -e - -p -a -g -e - -1 -6 -) - - - - - -P -e -n -a -l -t -y - -o -n - -e -a -r -l -y - -w -i -t -h -d -r -a -w -a -l - -o -f - -s -a -v -i -n -g -s - - - - - - - - - -S -c -h -o -l -a -r -s -h -i -p - -a -n -d - -f -e -l -l -o -w -s -h -i -p - -g -r -a -n -t -s - -e -x -c -l -u -d -e -d - - - - - - - - - -I -R -A - -d -e -d -u -c -t -i -o -n - -( -s -e -e - -p -a -g -e - -1 -6 -) - - - - - - - - - -S -t -u -d -e -n -t - -l -o -a -n - -i -n -t -e -r -e -s -t - -d -e -d -u -c -t -i -o -n - -( -s -e -e - -p -a -g -e - -1 -6 -) - - - - - - - - - -D -o -m -e -s -t -i -c - -p -r -o -d -u -c -t -i -o -n - -a -c -t -i -v -i -t -i -e -s - -d -e -d -u -c -t -i -o -n -. - -A -t -t -a -c -h - -F -o -r -m - -8 -9 -0 -3 - - - - - - - - - -A -d -d - -l -i -n -e -s - -2 -4 - -t -h -r -o -u -g -h - -3 -3 - - - - -S -u -b -t -r -a -c -t - -l -i -n -e - -3 -4 - -f -r -o -m - -l -i -n -e - -2 -3 -. - -E -n -t -e -r - -h -e -r -e - -a -n -d - -o -n - -l -i -n -e - -3 -6 -. - -T -h -i -s - -i -s - -y -o -u -r - -a -d -j -u -s -t -e -d - -g -r -o -s -s - -i -n -c -o -m -e - -䊳 - - - - - - - - - - - - - - - - -2 -4 - - - - - -2 -5 - - - - - -2 -6 - - - - - -2 -7 - - - - - -2 -8 - - - - - -2 -9 - - - - - -3 -0 - - - - - -3 -1 - - - - - -3 -2 - - - - - -3 -3 - - - - - - - -T -a -x -a -b -l -e - -a -m -o -u -n -t - -( -s -e -e - -p -a -g -e - -1 -2 -) - - - - - - - - - -T -a -x -a -b -l -e - -a -m -o -u -n -t - -( -s -e -e - -p -a -g -e - -1 -3 -) - - - - - - - - - - - -2 -2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -d - - - - - - - - - - - -8 - - - - - - - - - -9 -a - - - - - -b - - - - - - - - - -1 -0 -a - - - - - -b - - - - - - - - - - - -1 -1 - - - - - -1 -2 - - - - - -1 -3 - - - - - -1 -4 - - - - - -1 -5 - - - - - -1 -6 -a - - - - - -1 -7 -a - - - - - -1 -8 - - - - - -1 -9 - - - - - -2 -0 - - - - - -2 -1 - - - - - -2 -2 - - - - - -2 -3 - - - - - -2 -4 - - - - - -2 -5 - - - - - -2 -6 - - - - - -2 -7 - - - - - -2 -8 - - - - - -2 -9 - - - - - -3 -0 - - - - - -3 -1 - - - - - -3 -2 - - - - - -3 -3 - - - - - -3 -4 - - - - - -3 -5 - - - - - - - -I -n -c -o -m -e - -E -f -f -e -c -t -i -v -e -l -y - -C -o -n -n -e -c -t -e -d - -W -i -t -h - -U -. -S -. - -T -r -a -d -e -/ -B -u -s -i -n -e -s -s - - - - - - - - - - - - - -A -d -j -u -s -t -e -d - -G -r -o -s -s - -I -n -c -o -m -e - - - - - - - - - - - - - -E -n -c -l -o -s -e -, - -b -u -t - -d -o - -n -o -t - -a -t -t -a -c -h -, - -a -n -y - -p -a -y -m -e -n -t -. - - - - - - - - - - - - - - - - - - - - -F -o -r - -D -i -s -c -l -o -s -u -r -e -, - -P -r -i -v -a -c -y - -A -c -t -, - -a -n -d - -P -a -p -e -r -w -o -r -k - -R -e -d -u -c -t -i -o -n - -A -c -t - -N -o -t -i -c -e -, - -s -e -e - -p -a -g -e - -3 -2 -. - - - - - - - - - - - -C -a -t -. - -N -o -. - -1 -1 -3 -6 -4 -D - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/nonfree/i1040nr.html.ref b/samples/nonfree/i1040nr.html.ref deleted file mode 100644 index 607df01..0000000 --- a/samples/nonfree/i1040nr.html.ref +++ /dev/null @@ -1,209 +0,0 @@ - - - - - -
PAGER/SGML -
Page 1 of 48 Instructions for Form 1040NR -
Userid: ________ DTD INSTR04 -
Fileid: -
D:\USERS\8fllb\documents\epicfiles\2007Instructions1040NR.sgm -
Leadpct: 0% Pt. size: 9.5 â Draft -
â Ok to Print -
(Init. & date) -
7:48 - 6-DEC-2007 -
The type and rule above prints on all proofs including departmental reproduction proofs. MUST be removed before printing. -
2007 -
Instructions for -
Form 1040NR -
U.S. Nonresident Alien Income Tax Return -
Section references are to the Internal -
Revenue Code unless otherwise noted. -
use a different address this year. See -
Where To File on page 4. -
General Instructions deduction. The deduction rate for -
Domestic production activities -
What’s New for 2007 -
Tax benefits extended. The following -
tax benefits were extended through -
2007. -
• Deduction for educator expenses in -
figuring adjusted gross income. -
• District of Columbia first-time -
homebuyer credit. -
Alternative minimum tax (AMT) -
exemption amount decreased.
The -
AMT exemption amount is decreased to -
$33,750 ($45,000 if a qualifying -
widow(er); $22,500 if married filing -
separately). -
For -
If you are -
2007 is increased to 6%. -
Unreported social security and -
Medicare tax on wages. -
an employee and your employer did not -
withhold social security and Medicare -
tax, see Form 8919 to figure and report -
this tax. -
Refundable credit for prior-year -
minimum tax. -
If you have an unused -
minimum tax credit carryforward from -
2004, see Form 8801 to find if you can -
take this credit. -
Health savings account (HSA) -
funding distributions.
You may be -
able to elect to exclude from income a -
distribution made from your IRA to your -
HSA. See the instructions for lines 16a -
and 16b beginning on page 12. -
New recordkeeping requirements for -
contributions of money. -
charitable contributions of money, -
regardless of the amount, you must -
maintain as a record of the contribution -
a bank record (such as a cancelled -
check) or a written record from the -
charity. The written record must include -
the name of the charity, date, and -
amount of the contribution. See
Gifts to -
U.S. Charities
that begins on page 26. -
Exemption for housing a person -
displaced by Hurricane Katrina -
expires. The additional exemption -
amount for housing a person displaced -
by Hurricane Katrina does not apply for -
2007 or later years. -
Telephone excise tax credit. -
credit was available only on your 2006 -
return. If you filed but did not request it -
on your 2006 return, file Form 1040X -
using a simplified procedure explained -
in its instructions to amend your 2006 -
return. If you were not required to file a -
2006 return, see the 2006 Form -
1040EZ-T. -
What’s New for 2008 -
IRA deduction expanded. You may -
be able to deduct up to $5,000 ($6,000 -
if age 50 or older at the end of the -
year). You may be able to take an IRA -
deduction if you were covered by a -
This -
Cat. No. 11368V -
! -
At the time these instructions -
went to print, Congress was -
considering legislation that -
CAUTION -
would increase the amounts above. To -
find out if this legislation was enacted, -
and for more details, see the -
Instructions for Form 6251. -
IRA deduction expanded. -
covered by a retirement plan, you may -
be able to take an IRA deduction if your -
2007 modified adjusted gross income -
(AGI) is less than $62,000 ($103,000 if -
a qualifying widow(er)). -
If you were -
You may be able to deduct up to an -
additional $3,000 if you were a -
participant in a 401(k) plan and your -
employer was in bankruptcy in an -
earlier year. -
Standard mileage rates. The 2007 -
rate for business use of your vehicle is -
48
1/2 cents a mile. The 2007 rate for -
use of your vehicle to move is 20 cents -
a mile. The special rate for charitable -
use of your vehicle to provide relief -
related to Hurricane Katrina has -
expired. -
Elective salary deferrals. The -
maximum amount you can defer under -
all plans is generally limited to $15,500 -
($10,500 if you only have SIMPLE -
plans; $18,500 for section 403(b) plans -
if you qualify for the 15-year rule). See -
the instructions for line 8 on page 10. -
Mailing your return. -
If you are filing -
the return for an estate or trust, you will -
Department of the Treasury -
Internal Revenue Service -
retirement plan and your 2008 modified -
AGI is less than $63,000 ($105,000) if a -
qualifying widow(er)). -
You may be able to deduct up to an -
additional $3,000 if you were a -
participant in a 401(k) plan and your -
employer was in bankruptcy in an -
earlier year. -
Personal exemption and itemized -
deduction phaseouts reduced. -
Taxpayers with adjusted gross income -
above a certain amount may lose part -
of their deduction for personal -
exemptions and itemized deductions. -
The amount by which these deductions -
are reduced in 2008 will be only
1/2 of -
the amount of the reduction that -
otherwise would have applied in 2007. -
Capital gain tax rate reduced. -
The -
5% capital gain tax rate is reduced to -
zero. -
Tax on children’s income. -
8615 will be required to figure the tax -
for the following children with -
investment income of more than -
$1,800. -
Form -
1. Children under age 18 at the end -
of 2008. -
2. The following children if their -
earned income is not more than half -
their support. -
a. Children age 18 at the end of -
2008. -
b. Children over age 18 and under -
age 24 at the end of 2008 who are -
full-time students. -
The election to report a child’s -
investment income on a parent’s return -
and the special rule for when a child -
must file Form 6251 will also apply to -
the children listed above. -
Expiring tax benefits. The following -
benefits are scheduled to expire and -
will not apply for 2008. -
• Deduction for educator expenses in -
figuring adjusted gross income. -
• The exclusion from income of -
qualified charitable deductions. -
• Credit for nonbusiness energy -
property. -
• District of Columbia first-time -
homebuyer credit (for homes -
purchased after 2007). -
- - - - - - - - - - - - - - - - -
Page: 1
- diff --git a/samples/nonfree/i1040nr.txt.ref b/samples/nonfree/i1040nr.txt.ref deleted file mode 100644 index 5b40c0d..0000000 --- a/samples/nonfree/i1040nr.txt.ref +++ /dev/null @@ -1,220 +0,0 @@ -PAGER/SGML -Page 1 of 48 Instructions for Form 1040NR - -Userid: ________ DTD INSTR04 -Fileid: - -D:\USERS\8fllb\documents\epicfiles\2007Instructions1040NR.sgm - -Leadpct: 0% Pt. size: 9.5 â Draft - -â Ok to Print - -(Init. & date) -7:48 - 6-DEC-2007 - -The type and rule above prints on all proofs including departmental reproduction proofs. MUST be removed before printing. - -2007 -Instructions for -Form 1040NR -U.S. Nonresident Alien Income Tax Return - -Section references are to the Internal -Revenue Code unless otherwise noted. - -use a different address this year. See -Where To File on page 4. -General Instructions deduction. The deduction rate for -Domestic production activities -What’s New for 2007 -Tax benefits extended. The following -tax benefits were extended through -2007. -• Deduction for educator expenses in -figuring adjusted gross income. -• District of Columbia first-time -homebuyer credit. -Alternative minimum tax (AMT) -exemption amount decreased. The -AMT exemption amount is decreased to -$33,750 ($45,000 if a qualifying -widow(er); $22,500 if married filing -separately). - - For - - If you are - -2007 is increased to 6%. -Unreported social security and -Medicare tax on wages. -an employee and your employer did not -withhold social security and Medicare -tax, see Form 8919 to figure and report -this tax. -Refundable credit for prior-year -minimum tax. -If you have an unused -minimum tax credit carryforward from -2004, see Form 8801 to find if you can -take this credit. -Health savings account (HSA) -funding distributions. You may be -able to elect to exclude from income a -distribution made from your IRA to your -HSA. See the instructions for lines 16a -and 16b beginning on page 12. -New recordkeeping requirements for -contributions of money. -charitable contributions of money, -regardless of the amount, you must -maintain as a record of the contribution -a bank record (such as a cancelled -check) or a written record from the -charity. The written record must include -the name of the charity, date, and -amount of the contribution. See Gifts to -U.S. Charities that begins on page 26. -Exemption for housing a person -displaced by Hurricane Katrina -expires. The additional exemption -amount for housing a person displaced -by Hurricane Katrina does not apply for -2007 or later years. -Telephone excise tax credit. -credit was available only on your 2006 -return. If you filed but did not request it -on your 2006 return, file Form 1040X -using a simplified procedure explained -in its instructions to amend your 2006 -return. If you were not required to file a -2006 return, see the 2006 Form -1040EZ-T. -What’s New for 2008 -IRA deduction expanded. You may -be able to deduct up to $5,000 ($6,000 -if age 50 or older at the end of the -year). You may be able to take an IRA -deduction if you were covered by a - - This - -Cat. No. 11368V - -! - -At the time these instructions -went to print, Congress was -considering legislation that - -CAUTION -would increase the amounts above. To -find out if this legislation was enacted, -and for more details, see the -Instructions for Form 6251. -IRA deduction expanded. -covered by a retirement plan, you may -be able to take an IRA deduction if your -2007 modified adjusted gross income -(AGI) is less than $62,000 ($103,000 if -a qualifying widow(er)). - -If you were - -You may be able to deduct up to an - -additional $3,000 if you were a -participant in a 401(k) plan and your -employer was in bankruptcy in an -earlier year. -Standard mileage rates. The 2007 -rate for business use of your vehicle is -481/2 cents a mile. The 2007 rate for -use of your vehicle to move is 20 cents -a mile. The special rate for charitable -use of your vehicle to provide relief -related to Hurricane Katrina has -expired. -Elective salary deferrals. The -maximum amount you can defer under -all plans is generally limited to $15,500 -($10,500 if you only have SIMPLE -plans; $18,500 for section 403(b) plans -if you qualify for the 15-year rule). See -the instructions for line 8 on page 10. -Mailing your return. - If you are filing -the return for an estate or trust, you will - -Department of the Treasury -Internal Revenue Service - -retirement plan and your 2008 modified -AGI is less than $63,000 ($105,000) if a -qualifying widow(er)). - -You may be able to deduct up to an - -additional $3,000 if you were a -participant in a 401(k) plan and your -employer was in bankruptcy in an -earlier year. -Personal exemption and itemized -deduction phaseouts reduced. -Taxpayers with adjusted gross income -above a certain amount may lose part -of their deduction for personal -exemptions and itemized deductions. -The amount by which these deductions -are reduced in 2008 will be only 1/2 of -the amount of the reduction that -otherwise would have applied in 2007. -Capital gain tax rate reduced. - The -5% capital gain tax rate is reduced to -zero. -Tax on children’s income. -8615 will be required to figure the tax -for the following children with -investment income of more than -$1,800. - - Form - -1. Children under age 18 at the end - -of 2008. - -2. The following children if their - -earned income is not more than half -their support. - -a. Children age 18 at the end of - -2008. - -b. Children over age 18 and under - -age 24 at the end of 2008 who are -full-time students. -The election to report a child’s -investment income on a parent’s return -and the special rule for when a child -must file Form 6251 will also apply to -the children listed above. -Expiring tax benefits. The following -benefits are scheduled to expire and -will not apply for 2008. -• Deduction for educator expenses in -figuring adjusted gross income. -• The exclusion from income of -qualified charitable deductions. -• Credit for nonbusiness energy -property. -• District of Columbia first-time -homebuyer credit (for homes -purchased after 2007). - - \ No newline at end of file diff --git a/samples/nonfree/i1040nr.xml.ref b/samples/nonfree/i1040nr.xml.ref deleted file mode 100644 index a0bbf0f..0000000 --- a/samples/nonfree/i1040nr.xml.ref +++ /dev/null @@ -1,6424 +0,0 @@ - - - - - -P -A -G -E -R -/ -S -G -M -L - - - - -P -a -g -e - -1 - -o -f - -4 -8 - -I -n -s -t -r -u -c -t -i -o -n -s - -f -o -r - -F -o -r -m - -1 -0 -4 -0 -N -R - - - - - - -U -s -e -r -i -d -: - -_ -_ -_ -_ -_ -_ -_ -_ - -D -T -D - -I -N -S -T -R -0 -4 - - - - -F -i -l -e -i -d -: - - - - - - -D -: -\ -U -S -E -R -S -\ -8 -f -l -l -b -\ -d -o -c -u -m -e -n -t -s -\ -e -p -i -c -f -i -l -e -s -\ -2 -0 -0 -7 -I -n -s -t -r -u -c -t -i -o -n -s -1 -0 -4 -0 -N -R -. -s -g -m - - - - - - -L -e -a -d -p -c -t -: - -0 -% - -P -t -. - -s -i -z -e -: - -9 -. -5 - -â - -D -r -a -f -t - - - - - - -â - -O -k - -t -o - -P -r -i -n -t - - - - - - -( -I -n -i -t -. - -& - -d -a -t -e -) - - - - -7 -: -4 -8 - -- - - -6 -- -D -E -C -- -2 -0 -0 -7 - - - - - - -T -h -e - -t -y -p -e - -a -n -d - -r -u -l -e - -a -b -o -v -e - -p -r -i -n -t -s - -o -n - -a -l -l - -p -r -o -o -f -s - -i -n -c -l -u -d -i -n -g - -d -e -p -a -r -t -m -e -n -t -a -l - -r -e -p -r -o -d -u -c -t -i -o -n - -p -r -o -o -f -s -. - -M -U -S -T - -b -e - -r -e -m -o -v -e -d - -b -e -f -o -r -e - -p -r -i -n -t -i -n -g -. - - - - - - -2 -0 -0 -7 - - - - -I -n -s -t -r -u -c -t -i -o -n -s - -f -o -r - - - - -F -o -r -m - -1 -0 -4 -0 -N -R - - - - -U -. -S -. - -N -o -n -r -e -s -i -d -e -n -t - -A -l -i -e -n - -I -n -c -o -m -e - -T -a -x - -R -e -t -u -r -n - - - - - - -S -e -c -t -i -o -n - -r -e -f -e -r -e -n -c -e -s - -a -r -e - -t -o - -t -h -e - -I -n -t -e -r -n -a -l - - - - -R -e -v -e -n -u -e - -C -o -d -e - -u -n -l -e -s -s - -o -t -h -e -r -w -i -s -e - -n -o -t -e -d -. - - - - - - -u -s -e - -a - -d -i -f -f -e -r -e -n -t - -a -d -d -r -e -s -s - -t -h -i -s - -y -e -a -r -. - -S -e -e - - - - -W -h -e -r -e - -T -o - -F -i -l -e - -o -n - -p -a -g -e - -4 -. - - - - -G -e -n -e -r -a -l - -I -n -s -t -r -u -c -t -i -o -n -s - -d -e -d -u -c -t -i -o -n -. - -T -h -e - -d -e -d -u -c -t -i -o -n - -r -a -t -e - -f -o -r - - - - -D -o -m -e -s -t -i -c - -p -r -o -d -u -c -t -i -o -n - -a -c -t -i -v -i -t -i -e -s - - - - -W -h -a -t -’ -s - -N -e -w - -f -o -r - -2 -0 -0 -7 - - - - -T -a -x - -b -e -n -e -f -i -t -s - -e -x -t -e -n -d -e -d -. - -T -h -e - -f -o -l -l -o -w -i -n -g - - - - -t -a -x - -b -e -n -e -f -i -t -s - -w -e -r -e - -e -x -t -e -n -d -e -d - -t -h -r -o -u -g -h - - - - -2 -0 -0 -7 -. - - - - -• - -D -e -d -u -c -t -i -o -n - -f -o -r - -e -d -u -c -a -t -o -r - -e -x -p -e -n -s -e -s - -i -n - - - - -f -i -g -u -r -i -n -g - -a -d -j -u -s -t -e -d - -g -r -o -s -s - -i -n -c -o -m -e -. - - - - -• - -D -i -s -t -r -i -c -t - -o -f - -C -o -l -u -m -b -i -a - -f -i -r -s -t -- -t -i -m -e - - - - -h -o -m -e -b -u -y -e -r - -c -r -e -d -i -t -. - - - - -A -l -t -e -r -n -a -t -i -v -e - -m -i -n -i -m -u -m - -t -a -x - -( -A -M -T -) - - - - -e -x -e -m -p -t -i -o -n - -a -m -o -u -n -t - -d -e -c -r -e -a -s -e -d -. - -T -h -e - - - - -A -M -T - -e -x -e -m -p -t -i -o -n - -a -m -o -u -n -t - -i -s - -d -e -c -r -e -a -s -e -d - -t -o - - - - -$ -3 -3 -, -7 -5 -0 - -( -$ -4 -5 -, -0 -0 -0 - -i -f - -a - -q -u -a -l -i -f -y -i -n -g - - - - -w -i -d -o -w -( -e -r -) -; - -$ -2 -2 -, -5 -0 -0 - -i -f - -m -a -r -r -i -e -d - -f -i -l -i -n -g - - - - -s -e -p -a -r -a -t -e -l -y -) -. - - - - - - - -F -o -r - - - - - - - -I -f - -y -o -u - -a -r -e - - - - - - -2 -0 -0 -7 - -i -s - -i -n -c -r -e -a -s -e -d - -t -o - -6 -% -. - - - - -U -n -r -e -p -o -r -t -e -d - -s -o -c -i -a -l - -s -e -c -u -r -i -t -y - -a -n -d - - - - -M -e -d -i -c -a -r -e - -t -a -x - -o -n - -w -a -g -e -s -. - - - - -a -n - -e -m -p -l -o -y -e -e - -a -n -d - -y -o -u -r - -e -m -p -l -o -y -e -r - -d -i -d - -n -o -t - - - - -w -i -t -h -h -o -l -d - -s -o -c -i -a -l - -s -e -c -u -r -i -t -y - -a -n -d - -M -e -d -i -c -a -r -e - - - - -t -a -x -, - -s -e -e - -F -o -r -m - -8 -9 -1 -9 - -t -o - -f -i -g -u -r -e - -a -n -d - -r -e -p -o -r -t - - - - -t -h -i -s - -t -a -x -. - - - - -R -e -f -u -n -d -a -b -l -e - -c -r -e -d -i -t - -f -o -r - -p -r -i -o -r -- -y -e -a -r - - - - -m -i -n -i -m -u -m - -t -a -x -. - - - - -I -f - -y -o -u - -h -a -v -e - -a -n - -u -n -u -s -e -d - - - - -m -i -n -i -m -u -m - -t -a -x - -c -r -e -d -i -t - -c -a -r -r -y -f -o -r -w -a -r -d - -f -r -o -m - - - - -2 -0 -0 -4 -, - -s -e -e - -F -o -r -m - -8 -8 -0 -1 - -t -o - -f -i -n -d - -i -f - -y -o -u - -c -a -n - - - - -t -a -k -e - -t -h -i -s - -c -r -e -d -i -t -. - - - - -H -e -a -l -t -h - -s -a -v -i -n -g -s - -a -c -c -o -u -n -t - -( -H -S -A -) - - - - -f -u -n -d -i -n -g - -d -i -s -t -r -i -b -u -t -i -o -n -s -. - -Y -o -u - -m -a -y - -b -e - - - - -a -b -l -e - -t -o - -e -l -e -c -t - -t -o - -e -x -c -l -u -d -e - -f -r -o -m - -i -n -c -o -m -e - -a - - - - -d -i -s -t -r -i -b -u -t -i -o -n - -m -a -d -e - -f -r -o -m - -y -o -u -r - -I -R -A - -t -o - -y -o -u -r - - - - -H -S -A -. - -S -e -e - -t -h -e - -i -n -s -t -r -u -c -t -i -o -n -s - -f -o -r - -l -i -n -e -s - -1 -6 -a - - - - -a -n -d - -1 -6 -b - -b -e -g -i -n -n -i -n -g - -o -n - -p -a -g -e - -1 -2 -. - - - - -N -e -w - -r -e -c -o -r -d -k -e -e -p -i -n -g - -r -e -q -u -i -r -e -m -e -n -t -s - -f -o -r - - - - -c -o -n -t -r -i -b -u -t -i -o -n -s - -o -f - -m -o -n -e -y -. - - - - -c -h -a -r -i -t -a -b -l -e - -c -o -n -t -r -i -b -u -t -i -o -n -s - -o -f - -m -o -n -e -y -, - - - - -r -e -g -a -r -d -l -e -s -s - -o -f - -t -h -e - -a -m -o -u -n -t -, - -y -o -u - -m -u -s -t - - - - -m -a -i -n -t -a -i -n - -a -s - -a - -r -e -c -o -r -d - -o -f - -t -h -e - -c -o -n -t -r -i -b -u -t -i -o -n - - - - -a - -b -a -n -k - -r -e -c -o -r -d - -( -s -u -c -h - -a -s - -a - -c -a -n -c -e -l -l -e -d - - - - -c -h -e -c -k -) - -o -r - -a - -w -r -i -t -t -e -n - -r -e -c -o -r -d - -f -r -o -m - -t -h -e - - - - -c -h -a -r -i -t -y -. - -T -h -e - -w -r -i -t -t -e -n - -r -e -c -o -r -d - -m -u -s -t - -i -n -c -l -u -d -e - - - - -t -h -e - -n -a -m -e - -o -f - -t -h -e - -c -h -a -r -i -t -y -, - -d -a -t -e -, - -a -n -d - - - - -a -m -o -u -n -t - -o -f - -t -h -e - -c -o -n -t -r -i -b -u -t -i -o -n -. - -S -e -e - -G -i -f -t -s - -t -o - - - - -U -. -S -. - -C -h -a -r -i -t -i -e -s - -t -h -a -t - -b -e -g -i -n -s - -o -n - -p -a -g -e - -2 -6 -. - - - - -E -x -e -m -p -t -i -o -n - -f -o -r - -h -o -u -s -i -n -g - -a - -p -e -r -s -o -n - - - - -d -i -s -p -l -a -c -e -d - -b -y - -H -u -r -r -i -c -a -n -e - -K -a -t -r -i -n -a - - - - -e -x -p -i -r -e -s -. - -T -h -e - -a -d -d -i -t -i -o -n -a -l - -e -x -e -m -p -t -i -o -n - - - - -a -m -o -u -n -t - -f -o -r - -h -o -u -s -i -n -g - -a - -p -e -r -s -o -n - -d -i -s -p -l -a -c -e -d - - - - -b -y - -H -u -r -r -i -c -a -n -e - -K -a -t -r -i -n -a - -d -o -e -s - -n -o -t - -a -p -p -l -y - -f -o -r - - - - -2 -0 -0 -7 - -o -r - -l -a -t -e -r - -y -e -a -r -s -. - - - - -T -e -l -e -p -h -o -n -e - -e -x -c -i -s -e - -t -a -x - -c -r -e -d -i -t -. - - - - -c -r -e -d -i -t - -w -a -s - -a -v -a -i -l -a -b -l -e - -o -n -l -y - -o -n - -y -o -u -r - -2 -0 -0 -6 - - - - -r -e -t -u -r -n -. - -I -f - -y -o -u - -f -i -l -e -d - -b -u -t - -d -i -d - -n -o -t - -r -e -q -u -e -s -t - -i -t - - - - -o -n - -y -o -u -r - -2 -0 -0 -6 - -r -e -t -u -r -n -, - -f -i -l -e - -F -o -r -m - -1 -0 -4 -0 -X - - - - -u -s -i -n -g - -a - -s -i -m -p -l -i -f -i -e -d - -p -r -o -c -e -d -u -r -e - -e -x -p -l -a -i -n -e -d - - - - -i -n - -i -t -s - -i -n -s -t -r -u -c -t -i -o -n -s - -t -o - -a -m -e -n -d - -y -o -u -r - -2 -0 -0 -6 - - - - -r -e -t -u -r -n -. - -I -f - -y -o -u - -w -e -r -e - -n -o -t - -r -e -q -u -i -r -e -d - -t -o - -f -i -l -e - -a - - - - -2 -0 -0 -6 - -r -e -t -u -r -n -, - -s -e -e - -t -h -e - -2 -0 -0 -6 - -F -o -r -m - - - - -1 -0 -4 -0 -E -Z -- -T -. - - - - -W -h -a -t -’ -s - -N -e -w - -f -o -r - -2 -0 -0 -8 - - - - -I -R -A - -d -e -d -u -c -t -i -o -n - -e -x -p -a -n -d -e -d -. - -Y -o -u - -m -a -y - - - - -b -e - -a -b -l -e - -t -o - -d -e -d -u -c -t - -u -p - -t -o - -$ -5 -, -0 -0 -0 - -( -$ -6 -, -0 -0 -0 - - - - -i -f - -a -g -e - -5 -0 - -o -r - -o -l -d -e -r - -a -t - -t -h -e - -e -n -d - -o -f - -t -h -e - - - - -y -e -a -r -) -. - -Y -o -u - -m -a -y - -b -e - -a -b -l -e - -t -o - -t -a -k -e - -a -n - -I -R -A - - - - -d -e -d -u -c -t -i -o -n - -i -f - -y -o -u - -w -e -r -e - -c -o -v -e -r -e -d - -b -y - -a - - - - - - - -T -h -i -s - - - - - - -C -a -t -. - -N -o -. - -1 -1 -3 -6 -8 -V - - - - - - -! - - - - - - -A -t - -t -h -e - -t -i -m -e - -t -h -e -s -e - -i -n -s -t -r -u -c -t -i -o -n -s - - - - -w -e -n -t - -t -o - -p -r -i -n -t -, - -C -o -n -g -r -e -s -s - -w -a -s - - - - -c -o -n -s -i -d -e -r -i -n -g - -l -e -g -i -s -l -a -t -i -o -n - -t -h -a -t - - - - - - -C -A -U -T -I -O -N - - - - -w -o -u -l -d - -i -n -c -r -e -a -s -e - -t -h -e - -a -m -o -u -n -t -s - -a -b -o -v -e -. - -T -o - - - - -f -i -n -d - -o -u -t - -i -f - -t -h -i -s - -l -e -g -i -s -l -a -t -i -o -n - -w -a -s - -e -n -a -c -t -e -d -, - - - - -a -n -d - -f -o -r - -m -o -r -e - -d -e -t -a -i -l -s -, - -s -e -e - -t -h -e - - - - -I -n -s -t -r -u -c -t -i -o -n -s - -f -o -r - -F -o -r -m - -6 -2 -5 -1 -. - - - - -I -R -A - -d -e -d -u -c -t -i -o -n - -e -x -p -a -n -d -e -d -. - - - - -c -o -v -e -r -e -d - -b -y - -a - -r -e -t -i -r -e -m -e -n -t - -p -l -a -n -, - -y -o -u - -m -a -y - - - - -b -e - -a -b -l -e - -t -o - -t -a -k -e - -a -n - -I -R -A - -d -e -d -u -c -t -i -o -n - -i -f - -y -o -u -r - - - - -2 -0 -0 -7 - -m -o -d -i -f -i -e -d - -a -d -j -u -s -t -e -d - -g -r -o -s -s - -i -n -c -o -m -e - - - - -( -A -G -I -) - -i -s - -l -e -s -s - -t -h -a -n - -$ -6 -2 -, -0 -0 -0 - -( -$ -1 -0 -3 -, -0 -0 -0 - -i -f - - - - -a - -q -u -a -l -i -f -y -i -n -g - -w -i -d -o -w -( -e -r -) -) -. - - - - - - -I -f - -y -o -u - -w -e -r -e - - - - - - -Y -o -u - -m -a -y - -b -e - -a -b -l -e - -t -o - -d -e -d -u -c -t - -u -p - -t -o - -a -n - - - - - - -a -d -d -i -t -i -o -n -a -l - -$ -3 -, -0 -0 -0 - -i -f - -y -o -u - -w -e -r -e - -a - - - - -p -a -r -t -i -c -i -p -a -n -t - -i -n - -a - -4 -0 -1 -( -k -) - -p -l -a -n - -a -n -d - -y -o -u -r - - - - -e -m -p -l -o -y -e -r - -w -a -s - -i -n - -b -a -n -k -r -u -p -t -c -y - -i -n - -a -n - - - - -e -a -r -l -i -e -r - -y -e -a -r -. - - - - -S -t -a -n -d -a -r -d - -m -i -l -e -a -g -e - -r -a -t -e -s -. - -T -h -e - -2 -0 -0 -7 - - - - -r -a -t -e - -f -o -r - -b -u -s -i -n -e -s -s - -u -s -e - -o -f - -y -o -u -r - -v -e -h -i -c -l -e - -i -s - - - - -4 -8 -1 -/ -2 - -c -e -n -t -s - -a - -m -i -l -e -. - -T -h -e - -2 -0 -0 -7 - -r -a -t -e - -f -o -r - - - - -u -s -e - -o -f - -y -o -u -r - -v -e -h -i -c -l -e - -t -o - -m -o -v -e - -i -s - -2 -0 - -c -e -n -t -s - - - - -a - -m -i -l -e -. - -T -h -e - -s -p -e -c -i -a -l - -r -a -t -e - -f -o -r - -c -h -a -r -i -t -a -b -l -e - - - - -u -s -e - -o -f - -y -o -u -r - -v -e -h -i -c -l -e - -t -o - -p -r -o -v -i -d -e - -r -e -l -i -e -f - - - - -r -e -l -a -t -e -d - -t -o - -H -u -r -r -i -c -a -n -e - -K -a -t -r -i -n -a - -h -a -s - - - - -e -x -p -i -r -e -d -. - - - - -E -l -e -c -t -i -v -e - -s -a -l -a -r -y - -d -e -f -e -r -r -a -l -s -. - -T -h -e - - - - -m -a -x -i -m -u -m - -a -m -o -u -n -t - -y -o -u - -c -a -n - -d -e -f -e -r - -u -n -d -e -r - - - - -a -l -l - -p -l -a -n -s - -i -s - -g -e -n -e -r -a -l -l -y - -l -i -m -i -t -e -d - -t -o - -$ -1 -5 -, -5 -0 -0 - - - - -( -$ -1 -0 -, -5 -0 -0 - -i -f - -y -o -u - -o -n -l -y - -h -a -v -e - -S -I -M -P -L -E - - - - -p -l -a -n -s -; - -$ -1 -8 -, -5 -0 -0 - -f -o -r - -s -e -c -t -i -o -n - -4 -0 -3 -( -b -) - -p -l -a -n -s - - - - -i -f - -y -o -u - -q -u -a -l -i -f -y - -f -o -r - -t -h -e - -1 -5 -- -y -e -a -r - -r -u -l -e -) -. - -S -e -e - - - - -t -h -e - -i -n -s -t -r -u -c -t -i -o -n -s - -f -o -r - -l -i -n -e - -8 - -o -n - -p -a -g -e - -1 -0 -. - - - - -M -a -i -l -i -n -g - -y -o -u -r - -r -e -t -u -r -n -. - - - - - -I -f - -y -o -u - -a -r -e - -f -i -l -i -n -g - - - - -t -h -e - -r -e -t -u -r -n - -f -o -r - -a -n - -e -s -t -a -t -e - -o -r - -t -r -u -s -t -, - -y -o -u - -w -i -l -l - - - - - - -D -e -p -a -r -t -m -e -n -t - -o -f - -t -h -e - -T -r -e -a -s -u -r -y - - - - -I -n -t -e -r -n -a -l - -R -e -v -e -n -u -e - -S -e -r -v -i -c -e - - - - - - -r -e -t -i -r -e -m -e -n -t - -p -l -a -n - -a -n -d - -y -o -u -r - -2 -0 -0 -8 - -m -o -d -i -f -i -e -d - - - - -A -G -I - -i -s - -l -e -s -s - -t -h -a -n - -$ -6 -3 -, -0 -0 -0 - -( -$ -1 -0 -5 -, -0 -0 -0 -) - -i -f - -a - - - - -q -u -a -l -i -f -y -i -n -g - -w -i -d -o -w -( -e -r -) -) -. - - - - - - -Y -o -u - -m -a -y - -b -e - -a -b -l -e - -t -o - -d -e -d -u -c -t - -u -p - -t -o - -a -n - - - - - - -a -d -d -i -t -i -o -n -a -l - -$ -3 -, -0 -0 -0 - -i -f - -y -o -u - -w -e -r -e - -a - - - - -p -a -r -t -i -c -i -p -a -n -t - -i -n - -a - -4 -0 -1 -( -k -) - -p -l -a -n - -a -n -d - -y -o -u -r - - - - -e -m -p -l -o -y -e -r - -w -a -s - -i -n - -b -a -n -k -r -u -p -t -c -y - -i -n - -a -n - - - - -e -a -r -l -i -e -r - -y -e -a -r -. - - - - -P -e -r -s -o -n -a -l - -e -x -e -m -p -t -i -o -n - -a -n -d - -i -t -e -m -i -z -e -d - - - - -d -e -d -u -c -t -i -o -n - -p -h -a -s -e -o -u -t -s - -r -e -d -u -c -e -d -. - - - - -T -a -x -p -a -y -e -r -s - -w -i -t -h - -a -d -j -u -s -t -e -d - -g -r -o -s -s - -i -n -c -o -m -e - - - - -a -b -o -v -e - -a - -c -e -r -t -a -i -n - -a -m -o -u -n -t - -m -a -y - -l -o -s -e - -p -a -r -t - - - - -o -f - -t -h -e -i -r - -d -e -d -u -c -t -i -o -n - -f -o -r - -p -e -r -s -o -n -a -l - - - - -e -x -e -m -p -t -i -o -n -s - -a -n -d - -i -t -e -m -i -z -e -d - -d -e -d -u -c -t -i -o -n -s -. - - - - -T -h -e - -a -m -o -u -n -t - -b -y - -w -h -i -c -h - -t -h -e -s -e - -d -e -d -u -c -t -i -o -n -s - - - - -a -r -e - -r -e -d -u -c -e -d - -i -n - -2 -0 -0 -8 - -w -i -l -l - -b -e - -o -n -l -y - -1 -/ -2 - -o -f - - - - -t -h -e - -a -m -o -u -n -t - -o -f - -t -h -e - -r -e -d -u -c -t -i -o -n - -t -h -a -t - - - - -o -t -h -e -r -w -i -s -e - -w -o -u -l -d - -h -a -v -e - -a -p -p -l -i -e -d - -i -n - -2 -0 -0 -7 -. - - - - -C -a -p -i -t -a -l - -g -a -i -n - -t -a -x - -r -a -t -e - -r -e -d -u -c -e -d -. - - - - - -T -h -e - - - - -5 -% - -c -a -p -i -t -a -l - -g -a -i -n - -t -a -x - -r -a -t -e - -i -s - -r -e -d -u -c -e -d - -t -o - - - - -z -e -r -o -. - - - - -T -a -x - -o -n - -c -h -i -l -d -r -e -n -’ -s - -i -n -c -o -m -e -. - - - - -8 -6 -1 -5 - -w -i -l -l - -b -e - -r -e -q -u -i -r -e -d - -t -o - -f -i -g -u -r -e - -t -h -e - -t -a -x - - - - -f -o -r - -t -h -e - -f -o -l -l -o -w -i -n -g - -c -h -i -l -d -r -e -n - -w -i -t -h - - - - -i -n -v -e -s -t -m -e -n -t - -i -n -c -o -m -e - -o -f - -m -o -r -e - -t -h -a -n - - - - -$ -1 -, -8 -0 -0 -. - - - - - - - -F -o -r -m - - - - - - -1 -. - -C -h -i -l -d -r -e -n - -u -n -d -e -r - -a -g -e - -1 -8 - -a -t - -t -h -e - -e -n -d - - - - - - -o -f - -2 -0 -0 -8 -. - - - - - - -2 -. - -T -h -e - -f -o -l -l -o -w -i -n -g - -c -h -i -l -d -r -e -n - -i -f - -t -h -e -i -r - - - - - - -e -a -r -n -e -d - -i -n -c -o -m -e - -i -s - -n -o -t - -m -o -r -e - -t -h -a -n - -h -a -l -f - - - - -t -h -e -i -r - -s -u -p -p -o -r -t -. - - - - - - -a -. - -C -h -i -l -d -r -e -n - -a -g -e - -1 -8 - -a -t - -t -h -e - -e -n -d - -o -f - - - - - - -2 -0 -0 -8 -. - - - - - - -b -. - -C -h -i -l -d -r -e -n - -o -v -e -r - -a -g -e - -1 -8 - -a -n -d - -u -n -d -e -r - - - - - - -a -g -e - -2 -4 - -a -t - -t -h -e - -e -n -d - -o -f - -2 -0 -0 -8 - -w -h -o - -a -r -e - - - - -f -u -l -l -- -t -i -m -e - -s -t -u -d -e -n -t -s -. - - - - -T -h -e - -e -l -e -c -t -i -o -n - -t -o - -r -e -p -o -r -t - -a - -c -h -i -l -d -’ -s - - - - -i -n -v -e -s -t -m -e -n -t - -i -n -c -o -m -e - -o -n - -a - -p -a -r -e -n -t -’ -s - -r -e -t -u -r -n - - - - -a -n -d - -t -h -e - -s -p -e -c -i -a -l - -r -u -l -e - -f -o -r - -w -h -e -n - -a - -c -h -i -l -d - - - - -m -u -s -t - -f -i -l -e - -F -o -r -m - -6 -2 -5 -1 - -w -i -l -l - -a -l -s -o - -a -p -p -l -y - -t -o - - - - -t -h -e - -c -h -i -l -d -r -e -n - -l -i -s -t -e -d - -a -b -o -v -e -. - - - - -E -x -p -i -r -i -n -g - -t -a -x - -b -e -n -e -f -i -t -s -. - -T -h -e - -f -o -l -l -o -w -i -n -g - - - - -b -e -n -e -f -i -t -s - -a -r -e - -s -c -h -e -d -u -l -e -d - -t -o - -e -x -p -i -r -e - -a -n -d - - - - -w -i -l -l - -n -o -t - -a -p -p -l -y - -f -o -r - -2 -0 -0 -8 -. - - - - -• - -D -e -d -u -c -t -i -o -n - -f -o -r - -e -d -u -c -a -t -o -r - -e -x -p -e -n -s -e -s - -i -n - - - - -f -i -g -u -r -i -n -g - -a -d -j -u -s -t -e -d - -g -r -o -s -s - -i -n -c -o -m -e -. - - - - -• - -T -h -e - -e -x -c -l -u -s -i -o -n - -f -r -o -m - -i -n -c -o -m -e - -o -f - - - - -q -u -a -l -i -f -i -e -d - -c -h -a -r -i -t -a -b -l -e - -d -e -d -u -c -t -i -o -n -s -. - - - - -• - -C -r -e -d -i -t - -f -o -r - -n -o -n -b -u -s -i -n -e -s -s - -e -n -e -r -g -y - - - - -p -r -o -p -e -r -t -y -. - - - - -• - -D -i -s -t -r -i -c -t - -o -f - -C -o -l -u -m -b -i -a - -f -i -r -s -t -- -t -i -m -e - - - - -h -o -m -e -b -u -y -e -r - -c -r -e -d -i -t - -( -f -o -r - -h -o -m -e -s - - - - -p -u -r -c -h -a -s -e -d - -a -f -t -e -r - -2 -0 -0 -7 -) -. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/nonfree/kampo.html.ref b/samples/nonfree/kampo.html.ref deleted file mode 100644 index 201b96c..0000000 --- a/samples/nonfree/kampo.html.ref +++ /dev/null @@ -1,113 +0,0 @@ - - - - - -
å¹³æˆ â„¢â€” å¹´ › 月 ™œ æ—¥ 金曜日 -
官 -
å ± -
第 ›Ÿ˜ž å· -
› -
政令第百四åä¹å· -
é“路交通法施行令ã®ä¸€éƒ¨ã‚’改正ã™ã‚‹æ”¿ä»¤ -
内閣ã¯ã€é“路交通法ã®ä¸€éƒ¨ã‚’改正ã™ã‚‹æ³•å¾‹ï¼ˆå¹³æˆåä¹å¹´æ³•å¾‹ç¬¬ä¹åå·ï¼‰ã®ä¸€éƒ¨ã®æ–½è¡Œã«ä¼´ã„ã€ä¸¦ã³ -
ã«é“路交通法(昭和三å五年法律第百五å·ï¼‰ç¬¬å››æ¡ç¬¬ä¸€é …åŠã³ç¬¬å››é …ã€ç¬¬äº”æ¡ç¬¬ä¸€é …ã€ç¬¬ä¸‰åä¹æ¡ç¬¬ -
一項ã€ç¬¬äº”å一æ¡ç¬¬ä¹é …(åŒæ¡ç¬¬äºŒå二項ã€åŒæ³•ç¬¬ä¸ƒå二æ¡ã®äºŒç¬¬ä¸‰é …åŠã³ç¬¬ä¸ƒå五æ¡ã®å…«ç¬¬äºŒé …ã« -
ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã€ç¬¬äº”å一æ¡ã®ä¸‰ç¬¬ä¸€é …ã€ç¬¬å…­å三æ¡ã®å››ç¬¬ä¸€é …第二å·ã€ç¬¬ä¸ƒå一æ¡ã® -
三第二項ãŸã ã—書ã€ç¬¬ä¸ƒå一æ¡ã®å…­ç¬¬ä¸€é …ã€ç¬¬ä¹åæ¡ç¬¬ä¸€é …ãŸã ã—書ã€ç¬¬ç™¾æ¡ã®äºŒç¬¬ä¸€é …本文åŠã³ç¬¬ -
å››å·ã€ç¬¬ç™¾äºŒæ¡ã®äºŒä¸¦ã³ã«ç¬¬ç™¾äºŒå五æ¡ç¬¬ä¸€é …åŠã³ç¬¬ä¸‰é …ã®è¦å®šã«åŸºã¥ãã€ã“ã®æ”¿ä»¤ã‚’制定ã™ã‚‹ã€‚ -
é“路交通法施行令(昭和三å五年政令第二百七åå·ï¼‰ã®ä¸€éƒ¨ã‚’次ã®ã‚ˆã†ã«æ”¹æ­£ã™ã‚‹ã€‚ -
第一æ¡ã®äºŒç¬¬å››é …第三å·ä¸­ã€Œä¸€ãƒ»äº”メートルã€ã‚’「一メートルã€ã«æ”¹ã‚ã€åŒæ¡ç¬¬äº”項第三å·ä¸­ã€Œç¬¬ -
å…­å三æ¡ã®å››ç¬¬ä¸€é …ã€ã‚’「第六å三æ¡ã®å››ç¬¬ä¸€é …第一å·ã€ã«æ”¹ã‚る。 -
第二æ¡ç¬¬ä¸€é …ã®è¡¨ã®é’色ã®ç¯ç«ã®é …第三å·ä¸­ã€Œå«ã‚€ã€‚)ã€ã‚’「å«ã‚€ã€‚é’色ã®ç¯ç«ã®çŸ¢å°ã®é …を除ã〠-
「 -
歩行者ã¯ã€é€²è¡Œã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã€‚ -
以下ã“ã®æ¡ã«ãŠã„ã¦åŒã˜ã€‚)をã€ã«æ”¹ã‚ã€åŒè¡¨ä¸­ -
歩行者ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãšã€ã¾ãŸã€é“ -
横断を終ã‚ã‚‹ã‹ã€åˆã¯æ¨ªæ–­ã‚’ã‚„ã‚ã¦å¼•ãè¿”ã•ãªã‘ã‚Œ -
一ã®äº” 医療機関ãŒã€å‚·ç—…者ã®ç·Šæ€¥æ¬é€ã‚’ã—よã†ã¨ã™ã‚‹éƒ½é“府県åˆã¯å¸‚町æ‘ã®è¦è«‹ã‚’å—ã‘ã¦ã€å½“該 -
傷病者ãŒåŒ»ç™‚æ©Ÿé–¢ã«ç·Šæ€¥æ¬é€ã‚’ã•ã‚Œã‚‹ã¾ã§ã®é–“ã«ãŠã‘る応急ã®æ²»ç™‚ã‚’è¡Œã†åŒ»å¸«ã‚’当該傷病者ã®æ‰€ -
在ã™ã‚‹å ´æ‰€ã«ã¾ã§é‹æ¬ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹è‡ªå‹•è»Š -
第åå…­æ¡ä¸­ç¬¬äºŒå·ã‚’削りã€ç¬¬ä¸‰å·ã‚’第二å·ã¨ã™ã‚‹ã€‚ -
第åå…­æ¡ã®äºŒåŠã³ç¬¬åå…­æ¡ã®ä¸‰ä¸­ã€Œç¬¬äº”å一æ¡ç¬¬å一項ã€ã‚’「第五å一æ¡ç¬¬å二項ã€ã«æ”¹ã‚る。 -
第åå…­æ¡ã®äº”中「第五å一æ¡ç¬¬äºŒåé …ã€ã‚’「第五å一æ¡ç¬¬äºŒå一項ã€ã«æ”¹ã‚る。 -
第å七æ¡ä¸­ã€Œç¬¬äº”å一æ¡ç¬¬äºŒå一項ã€ã‚’「第五å一æ¡ç¬¬äºŒå二項ã€ã«æ”¹ã‚ã€ã€Œã€Œå‰å·ã€ã¨ã‚ã‚‹ã®ã¯ã€Œå‰ -
å·ã®å…¬ç¤ºã«ä¿‚ã‚‹ç©è¼‰ç‰©ã®ã†ã¡ç‰¹ã«è²´é‡ã¨èªã‚られるもã®ã«ã¤ã„ã¦ã¯ã€åŒå·ã€ã¨ã€åŒæ¡ç¬¬ä¸‰å·ä¸­ã€ã‚’削 -
る。 -
第å七æ¡ã®äºŒã‚’次ã®ã‚ˆã†ã«æ”¹ã‚る。 -
(
委託ã™ã‚‹ã“ã¨ã®ã§ããªã„事務) -
第å七æ¡ã®äºŒ 法第五å一æ¡ã®ä¸‰ç¬¬ä¸€é …ã®æ”¿ä»¤ã§å®šã‚ã‚‹ã‚‚ã®ã¯ã€æ¬¡ã«æŽ²ã’ã‚‹ã¨ãŠã‚Šã¨ã™ã‚‹ã€‚ -
一 法第五å一æ¡ç¬¬äº”é …ã®è¦å®šã«ã‚ˆã‚‹è»Šä¸¡ã®ç§»å‹•ã®æ±ºå®š -
二 法第五å一æ¡ç¬¬å…­é …(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚Šä¿ç®¡ã—ãŸè»Š -
両(ç©è¼‰ç‰©ã‚’å«ã‚€ã€‚以下ã“ã®æ¡ã«ãŠã„ã¦åŒã˜ã€‚)ã®è¿”é‚„ã®æ±ºå®š -
三 法第五å一æ¡ç¬¬ä¸ƒé …(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)åˆã¯ç¬¬å…«é …ã® -
è¦å®šã«ã‚ˆã‚‹å‘ŠçŸ¥ -
歩行者ã¯ã€é“路を横断ã—ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã€‚ -
å›› 法第五å一æ¡ç¬¬ä¹é …(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹ -
「 -
一 歩行者ã¯ã€é€²è¡Œã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã€‚ -
二 普通自転車(法第六å三æ¡ã®ä¸‰ã«è¦å®šã™ -
å·ã«ãŠã„ã¦åŒã˜ã€‚)ã¯ã€æ¨ªæ–­æ­©é“ã«ãŠã„ã¦ç›´ -
路を横断ã—ã¦ã„る歩行者ã¯ã€ã™ã¿ã‚„ã‹ã«ã€ãã® -
ã°ãªã‚‰ãªã„ã“ã¨
。 -
ã‚’ -
〠-
一 歩行者ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãšã€ -
横断を終ã‚ã‚‹ã‹ã€åˆã¯æ¨ªæ–­ã‚’ã‚„ã‚ã¦å¼•ãè¿” -
二 横断歩é“を進行ã—よã†ã¨ã™ã‚‹æ™®é€šè‡ªè»¢è»Š -
一 歩行者ã¯ã€é“路を横断ã—ã¦ã¯ãªã‚‰ãªã„ã“ -
二 横断歩é“を進行ã—よã†ã¨ã™ã‚‹æ™®é€šè‡ªè»¢è»Š -
る普通自転車をã„ã†ã€‚以下ã“ã®æ¡åŠã³ç¬¬äºŒåå…­æ¡ç¬¬ä¸‰ -
進をã—
ã€åˆã¯å·¦æŠ˜ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã€‚ -
ã¾ãŸã€é“路を横断ã—ã¦ã„る歩行者ã¯ã€é€Ÿã‚„ã‹ã«ã€ãã® -
ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“ã¨
。 -
ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã€‚ -
ã«æ”¹ã‚ã€åŒæ¡ç¬¬å››é …ã®è¡¨ã®äººã®å½¢ã®è¨˜å·ã‚’有 -
ã¨ã€‚ -
ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã€‚ -
〠-
ã™ã‚‹é’色ã®ç¯ç«ã®é …第二å·ä¸­ã€Œç›´é€²ï¼ˆå³æŠ˜ã—よã†ã¨ã—ã¦å³æŠ˜ã™ã‚‹åœ°ç‚¹ã¾ã§ç›´é€²ã—ã€ãã®åœ°ç‚¹ã«ãŠã„㦠-
å³æŠ˜ã™ã‚‹ã“ã¨ã‚’å«ã‚€ã€‚)ã—ã€ã‚’「直進をã—ã€ã«æ”¹ã‚る。 -
第三æ¡ã®äºŒç¬¬ä¸€é …中「行ãªã‚ã›ã‚‹ã€ã‚’「行ã‚ã›ã‚‹ã€ã«ã€ã€Œæ¬¡ã®å„å·ã«ã€ã‚’「次ã«ã€ã«ã€ã€Œã“ãˆãªã„ã€ã‚’ -
「超ãˆãªã„ã€ã«æ”¹ã‚ã€ç¬¬åå·ã‚’第å二å·ã¨ã—ã€ç¬¬å››å·ã‹ã‚‰ç¬¬ä¹å·ã¾ã§ã‚’二å·ãšã¤ç¹°ã‚Šä¸‹ã’ã€ç¬¬ä¸‰å·ã‚’ -
第四å·ã¨ã—ã€åŒå·ã®æ¬¡ã«æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ -
五 法第二å五æ¡ã®äºŒç¬¬äºŒé …ã®é“路標識等 -
第三æ¡ã®äºŒç¬¬ä¸€é …第二å·ã®æ¬¡ã«æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹
。 -
三 法第å三æ¡ç¬¬äºŒé …ã®é“路標識等 -
第å三æ¡ç¬¬ä¸€é …中第一å·ã®äº”を第一å·ã®å…­ã¨ã—
ã€ç¬¬ä¸€å·ã®å››ã®æ¬¡ã«æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ -
公示 -
五 法第五å一æ¡ç¬¬å項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹å…¬ç¤ºã®æ—¥ä»˜ -
åŠã³å†…容ã®å…¬è¡¨ -
å…­ 法第五å一æ¡ç¬¬å二項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆ -
る車両ã®å£²å´ã®æ±ºå®š -
七 法第五å一æ¡ç¬¬å三項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹è»Šä¸¡ã®å»ƒ -
棄ã®æ±ºå®š -
å…« 法第五å一æ¡ç¬¬å六項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆ -
る命令 -
ä¹ æ³•ç¬¬äº”å一æ¡ç¬¬å七項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹ç£ä¿ƒ -
å 法第五å一æ¡ç¬¬å八項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹å¾´åŽ -
å一 法第五å一æ¡ç¬¬äºŒå一項ã®è¦å®šã«ã‚ˆã‚‹ç™»éŒ²ã®å˜±è¨— -
第å七æ¡ã®ä¸‰ã‚’削りã€ç¬¬å七æ¡ã®å››ã‚’第å七æ¡ã®ä¸‰ã¨ã—ã€ç¬¬å七æ¡ã®äº”ã‹ã‚‰ç¬¬å七æ¡ã®å…«ã¾ã§ã‚’一 -
æ¡ãšã¤ç¹°ã‚Šä¸Šã’る。 -
第二å二æ¡ç¬¬ä¸€å·ä¸­ã€Œä¹—車装置(以下ã€ã®ä¸‹ã«ã€Œã“ã®æ¡ã«ãŠã„ã¦ã€ã‚’加ãˆã‚‹ã€‚ -
第二åå››æ¡ã®äºŒä¸­ã€Œç¬¬äºŒåå…­æ¡ã€ã‚’「第二å五æ¡ã®äºŒã€ã«æ”¹ã‚る。 -
第二åå…­æ¡ã‚’第二å五æ¡ã®äºŒã¨ã—ã€ç¬¬ä¸‰ç« ä¸­åŒæ¡ã®æ¬¡ã«æ¬¡ã®ä¸€æ¡ã‚’加ãˆã‚‹ã€‚ -
(
普通自転車ã«ã‚ˆã‚Šæ­©é“を通行ã™ã‚‹ã“ã¨ãŒã§ãる者) -
第二åå…­æ¡ æ³•ç¬¬å…­å三æ¡ã®å››ç¬¬ä¸€é …第二å·ã®æ”¿ä»¤ã§å®šã‚る者ã¯ã€æ¬¡ã«æŽ²ã’ã‚‹ã¨ãŠã‚Šã¨ã™ã‚‹ã€‚ -
一 å…ç«¥åŠã³å¹¼å… -
二 七å歳以上ã®è€… -
三 普通自転車ã«ã‚ˆã‚Šå®‰å…¨ã«è»Šé“を通行ã™
ã‚‹ã“ã¨ã«æ”¯éšœã‚’生ãšã‚‹ç¨‹åº¦ã®èº«ä½“ã®éšœå®³ã¨ã—ã¦å†…閣府令 -
ã§å®šã‚ã‚‹ã‚‚ã®ã‚’有ã™ã‚‹è€… -
第二åå…­æ¡ã®ä¸‰ã®äºŒç¬¬ä¸€é …第四å·ä¸­ã€Œæ¬¡é …第三å·ã€ã‚’「次項第四å·ã€ã«æ”¹ã‚ã€åŒé …第七å·ä¸­ã€Œæ¬¡é … -
第六å·ã€ã‚’「次項第七å·ã€ã«æ”¹ã‚ã€åŒæ¡ç¬¬äºŒé …第七å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第八 -
å·ã¨ã—ã€åŒé …第六å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第七å·ã¨ã—ã€åŒé …第五å·ä¸­ã€Œã®æ¨ªã€ã‚’ -
「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第六å·ã¨ã—ã€åŒé …第四å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第五 -
å·ã¨ã—ã€åŒé …第三å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第四å·ã¨ã—ã€åŒé …第二å·ä¸­ã€Œã®æ¨ªã€ã‚’ -
「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第三å·ã¨ã—ã€åŒé …第一å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第二 -
å·ã¨ã—ã€åŒé …ã«ç¬¬ä¸€å·ã¨ã—ã¦æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ -
- - - -
Page: 1
- diff --git a/samples/nonfree/kampo.txt.ref b/samples/nonfree/kampo.txt.ref deleted file mode 100644 index 936dc0b..0000000 --- a/samples/nonfree/kampo.txt.ref +++ /dev/null @@ -1,157 +0,0 @@ -å¹³æˆ â„¢â€” å¹´ › 月 ™œ æ—¥ 金曜日 - -官 - -å ± - -第 ›Ÿ˜ž å· - -› - -政令第百四åä¹å· - -é“路交通法施行令ã®ä¸€éƒ¨ã‚’改正ã™ã‚‹æ”¿ä»¤ - -内閣ã¯ã€é“路交通法ã®ä¸€éƒ¨ã‚’改正ã™ã‚‹æ³•å¾‹ï¼ˆå¹³æˆåä¹å¹´æ³•å¾‹ç¬¬ä¹åå·ï¼‰ã®ä¸€éƒ¨ã®æ–½è¡Œã«ä¼´ã„ã€ä¸¦ã³ -ã«é“路交通法(昭和三å五年法律第百五å·ï¼‰ç¬¬å››æ¡ç¬¬ä¸€é …åŠã³ç¬¬å››é …ã€ç¬¬äº”æ¡ç¬¬ä¸€é …ã€ç¬¬ä¸‰åä¹æ¡ç¬¬ -一項ã€ç¬¬äº”å一æ¡ç¬¬ä¹é …(åŒæ¡ç¬¬äºŒå二項ã€åŒæ³•ç¬¬ä¸ƒå二æ¡ã®äºŒç¬¬ä¸‰é …åŠã³ç¬¬ä¸ƒå五æ¡ã®å…«ç¬¬äºŒé …ã« -ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã€ç¬¬äº”å一æ¡ã®ä¸‰ç¬¬ä¸€é …ã€ç¬¬å…­å三æ¡ã®å››ç¬¬ä¸€é …第二å·ã€ç¬¬ä¸ƒå一æ¡ã® -三第二項ãŸã ã—書ã€ç¬¬ä¸ƒå一æ¡ã®å…­ç¬¬ä¸€é …ã€ç¬¬ä¹åæ¡ç¬¬ä¸€é …ãŸã ã—書ã€ç¬¬ç™¾æ¡ã®äºŒç¬¬ä¸€é …本文åŠã³ç¬¬ -å››å·ã€ç¬¬ç™¾äºŒæ¡ã®äºŒä¸¦ã³ã«ç¬¬ç™¾äºŒå五æ¡ç¬¬ä¸€é …åŠã³ç¬¬ä¸‰é …ã®è¦å®šã«åŸºã¥ãã€ã“ã®æ”¿ä»¤ã‚’制定ã™ã‚‹ã€‚ - -é“路交通法施行令(昭和三å五年政令第二百七åå·ï¼‰ã®ä¸€éƒ¨ã‚’次ã®ã‚ˆã†ã«æ”¹æ­£ã™ã‚‹ã€‚ -第一æ¡ã®äºŒç¬¬å››é …第三å·ä¸­ã€Œä¸€ãƒ»äº”メートルã€ã‚’「一メートルã€ã«æ”¹ã‚ã€åŒæ¡ç¬¬äº”項第三å·ä¸­ã€Œç¬¬ - -å…­å三æ¡ã®å››ç¬¬ä¸€é …ã€ã‚’「第六å三æ¡ã®å››ç¬¬ä¸€é …第一å·ã€ã«æ”¹ã‚る。 - -第二æ¡ç¬¬ä¸€é …ã®è¡¨ã®é’色ã®ç¯ç«ã®é …第三å·ä¸­ã€Œå«ã‚€ã€‚)ã€ã‚’「å«ã‚€ã€‚é’色ã®ç¯ç«ã®çŸ¢å°ã®é …を除ã〠- -「 - -歩行者ã¯ã€é€²è¡Œã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã€‚ - -以下ã“ã®æ¡ã«ãŠã„ã¦åŒã˜ã€‚)をã€ã«æ”¹ã‚ã€åŒè¡¨ä¸­ - -歩行者ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãšã€ã¾ãŸã€é“ -横断を終ã‚ã‚‹ã‹ã€åˆã¯æ¨ªæ–­ã‚’ã‚„ã‚ã¦å¼•ãè¿”ã•ãªã‘ã‚Œ - -一ã®äº” 医療機関ãŒã€å‚·ç—…者ã®ç·Šæ€¥æ¬é€ã‚’ã—よã†ã¨ã™ã‚‹éƒ½é“府県åˆã¯å¸‚町æ‘ã®è¦è«‹ã‚’å—ã‘ã¦ã€å½“該 -傷病者ãŒåŒ»ç™‚æ©Ÿé–¢ã«ç·Šæ€¥æ¬é€ã‚’ã•ã‚Œã‚‹ã¾ã§ã®é–“ã«ãŠã‘る応急ã®æ²»ç™‚ã‚’è¡Œã†åŒ»å¸«ã‚’当該傷病者ã®æ‰€ -在ã™ã‚‹å ´æ‰€ã«ã¾ã§é‹æ¬ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹è‡ªå‹•è»Š -第åå…­æ¡ä¸­ç¬¬äºŒå·ã‚’削りã€ç¬¬ä¸‰å·ã‚’第二å·ã¨ã™ã‚‹ã€‚ -第åå…­æ¡ã®äºŒåŠã³ç¬¬åå…­æ¡ã®ä¸‰ä¸­ã€Œç¬¬äº”å一æ¡ç¬¬å一項ã€ã‚’「第五å一æ¡ç¬¬å二項ã€ã«æ”¹ã‚る。 -第åå…­æ¡ã®äº”中「第五å一æ¡ç¬¬äºŒåé …ã€ã‚’「第五å一æ¡ç¬¬äºŒå一項ã€ã«æ”¹ã‚る。 -第å七æ¡ä¸­ã€Œç¬¬äº”å一æ¡ç¬¬äºŒå一項ã€ã‚’「第五å一æ¡ç¬¬äºŒå二項ã€ã«æ”¹ã‚ã€ã€Œã€Œå‰å·ã€ã¨ã‚ã‚‹ã®ã¯ã€Œå‰ -å·ã®å…¬ç¤ºã«ä¿‚ã‚‹ç©è¼‰ç‰©ã®ã†ã¡ç‰¹ã«è²´é‡ã¨èªã‚られるもã®ã«ã¤ã„ã¦ã¯ã€åŒå·ã€ã¨ã€åŒæ¡ç¬¬ä¸‰å·ä¸­ã€ã‚’削 -る。 - -第å七æ¡ã®äºŒã‚’次ã®ã‚ˆã†ã«æ”¹ã‚る。 -(委託ã™ã‚‹ã“ã¨ã®ã§ããªã„事務) - -第å七æ¡ã®äºŒ 法第五å一æ¡ã®ä¸‰ç¬¬ä¸€é …ã®æ”¿ä»¤ã§å®šã‚ã‚‹ã‚‚ã®ã¯ã€æ¬¡ã«æŽ²ã’ã‚‹ã¨ãŠã‚Šã¨ã™ã‚‹ã€‚ - -一 法第五å一æ¡ç¬¬äº”é …ã®è¦å®šã«ã‚ˆã‚‹è»Šä¸¡ã®ç§»å‹•ã®æ±ºå®š -二 法第五å一æ¡ç¬¬å…­é …(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚Šä¿ç®¡ã—ãŸè»Š - -両(ç©è¼‰ç‰©ã‚’å«ã‚€ã€‚以下ã“ã®æ¡ã«ãŠã„ã¦åŒã˜ã€‚)ã®è¿”é‚„ã®æ±ºå®š - -三 法第五å一æ¡ç¬¬ä¸ƒé …(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)åˆã¯ç¬¬å…«é …ã® - -è¦å®šã«ã‚ˆã‚‹å‘ŠçŸ¥ - -歩行者ã¯ã€é“路を横断ã—ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã€‚ - -å›› 法第五å一æ¡ç¬¬ä¹é …(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹ - -「 - -一 歩行者ã¯ã€é€²è¡Œã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã€‚ -二 普通自転車(法第六å三æ¡ã®ä¸‰ã«è¦å®šã™ -å·ã«ãŠã„ã¦åŒã˜ã€‚)ã¯ã€æ¨ªæ–­æ­©é“ã«ãŠã„ã¦ç›´ - -路を横断ã—ã¦ã„る歩行者ã¯ã€ã™ã¿ã‚„ã‹ã«ã€ãã® -ã°ãªã‚‰ãªã„ã“ã¨ã€‚ - -ã‚’ - -〠- -一 歩行者ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãšã€ -横断を終ã‚ã‚‹ã‹ã€åˆã¯æ¨ªæ–­ã‚’ã‚„ã‚ã¦å¼•ãè¿” -二 横断歩é“を進行ã—よã†ã¨ã™ã‚‹æ™®é€šè‡ªè»¢è»Š - -一 歩行者ã¯ã€é“路を横断ã—ã¦ã¯ãªã‚‰ãªã„ã“ -二 横断歩é“を進行ã—よã†ã¨ã™ã‚‹æ™®é€šè‡ªè»¢è»Š - -る普通自転車をã„ã†ã€‚以下ã“ã®æ¡åŠã³ç¬¬äºŒåå…­æ¡ç¬¬ä¸‰ -進をã—ã€åˆã¯å·¦æŠ˜ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã€‚ - -ã¾ãŸã€é“路を横断ã—ã¦ã„る歩行者ã¯ã€é€Ÿã‚„ã‹ã«ã€ãã® -ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“ã¨ã€‚ -ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã€‚ - -ã«æ”¹ã‚ã€åŒæ¡ç¬¬å››é …ã®è¡¨ã®äººã®å½¢ã®è¨˜å·ã‚’有 - -ã¨ã€‚ -ã¯ã€é“è·¯ã®æ¨ªæ–­ã‚’始ã‚ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã€‚ - -〠- -ã™ã‚‹é’色ã®ç¯ç«ã®é …第二å·ä¸­ã€Œç›´é€²ï¼ˆå³æŠ˜ã—よã†ã¨ã—ã¦å³æŠ˜ã™ã‚‹åœ°ç‚¹ã¾ã§ç›´é€²ã—ã€ãã®åœ°ç‚¹ã«ãŠã„㦠-å³æŠ˜ã™ã‚‹ã“ã¨ã‚’å«ã‚€ã€‚)ã—ã€ã‚’「直進をã—ã€ã«æ”¹ã‚る。 - -第三æ¡ã®äºŒç¬¬ä¸€é …中「行ãªã‚ã›ã‚‹ã€ã‚’「行ã‚ã›ã‚‹ã€ã«ã€ã€Œæ¬¡ã®å„å·ã«ã€ã‚’「次ã«ã€ã«ã€ã€Œã“ãˆãªã„ã€ã‚’ -「超ãˆãªã„ã€ã«æ”¹ã‚ã€ç¬¬åå·ã‚’第å二å·ã¨ã—ã€ç¬¬å››å·ã‹ã‚‰ç¬¬ä¹å·ã¾ã§ã‚’二å·ãšã¤ç¹°ã‚Šä¸‹ã’ã€ç¬¬ä¸‰å·ã‚’ -第四å·ã¨ã—ã€åŒå·ã®æ¬¡ã«æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ -五 法第二å五æ¡ã®äºŒç¬¬äºŒé …ã®é“路標識等 -第三æ¡ã®äºŒç¬¬ä¸€é …第二å·ã®æ¬¡ã«æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ -三 法第å三æ¡ç¬¬äºŒé …ã®é“路標識等 -第å三æ¡ç¬¬ä¸€é …中第一å·ã®äº”を第一å·ã®å…­ã¨ã—ã€ç¬¬ä¸€å·ã®å››ã®æ¬¡ã«æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ - -公示 - -五 法第五å一æ¡ç¬¬å項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹å…¬ç¤ºã®æ—¥ä»˜ - -åŠã³å†…容ã®å…¬è¡¨ - -å…­ 法第五å一æ¡ç¬¬å二項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆ - -る車両ã®å£²å´ã®æ±ºå®š - -七 法第五å一æ¡ç¬¬å三項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹è»Šä¸¡ã®å»ƒ - -棄ã®æ±ºå®š - -å…« 法第五å一æ¡ç¬¬å六項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦èª­ã¿æ›¿ãˆã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆ - -る命令 - -ä¹ æ³•ç¬¬äº”å一æ¡ç¬¬å七項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹ç£ä¿ƒ -å 法第五å一æ¡ç¬¬å八項(åŒæ¡ç¬¬äºŒå二項ã«ãŠã„ã¦æº–用ã™ã‚‹å ´åˆã‚’å«ã‚€ã€‚)ã®è¦å®šã«ã‚ˆã‚‹å¾´åŽ -å一 法第五å一æ¡ç¬¬äºŒå一項ã®è¦å®šã«ã‚ˆã‚‹ç™»éŒ²ã®å˜±è¨— -第å七æ¡ã®ä¸‰ã‚’削りã€ç¬¬å七æ¡ã®å››ã‚’第å七æ¡ã®ä¸‰ã¨ã—ã€ç¬¬å七æ¡ã®äº”ã‹ã‚‰ç¬¬å七æ¡ã®å…«ã¾ã§ã‚’一 - -æ¡ãšã¤ç¹°ã‚Šä¸Šã’る。 - -第二å二æ¡ç¬¬ä¸€å·ä¸­ã€Œä¹—車装置(以下ã€ã®ä¸‹ã«ã€Œã“ã®æ¡ã«ãŠã„ã¦ã€ã‚’加ãˆã‚‹ã€‚ -第二åå››æ¡ã®äºŒä¸­ã€Œç¬¬äºŒåå…­æ¡ã€ã‚’「第二å五æ¡ã®äºŒã€ã«æ”¹ã‚る。 -第二åå…­æ¡ã‚’第二å五æ¡ã®äºŒã¨ã—ã€ç¬¬ä¸‰ç« ä¸­åŒæ¡ã®æ¬¡ã«æ¬¡ã®ä¸€æ¡ã‚’加ãˆã‚‹ã€‚ -(普通自転車ã«ã‚ˆã‚Šæ­©é“を通行ã™ã‚‹ã“ã¨ãŒã§ãる者) - -第二åå…­æ¡ æ³•ç¬¬å…­å三æ¡ã®å››ç¬¬ä¸€é …第二å·ã®æ”¿ä»¤ã§å®šã‚る者ã¯ã€æ¬¡ã«æŽ²ã’ã‚‹ã¨ãŠã‚Šã¨ã™ã‚‹ã€‚ - -一 å…ç«¥åŠã³å¹¼å… -二 七å歳以上ã®è€… -三 普通自転車ã«ã‚ˆã‚Šå®‰å…¨ã«è»Šé“を通行ã™ã‚‹ã“ã¨ã«æ”¯éšœã‚’生ãšã‚‹ç¨‹åº¦ã®èº«ä½“ã®éšœå®³ã¨ã—ã¦å†…閣府令 - -ã§å®šã‚ã‚‹ã‚‚ã®ã‚’有ã™ã‚‹è€… - -第二åå…­æ¡ã®ä¸‰ã®äºŒç¬¬ä¸€é …第四å·ä¸­ã€Œæ¬¡é …第三å·ã€ã‚’「次項第四å·ã€ã«æ”¹ã‚ã€åŒé …第七å·ä¸­ã€Œæ¬¡é … -第六å·ã€ã‚’「次項第七å·ã€ã«æ”¹ã‚ã€åŒæ¡ç¬¬äºŒé …第七å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第八 -å·ã¨ã—ã€åŒé …第六å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第七å·ã¨ã—ã€åŒé …第五å·ä¸­ã€Œã®æ¨ªã€ã‚’ -「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第六å·ã¨ã—ã€åŒé …第四å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第五 -å·ã¨ã—ã€åŒé …第三å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第四å·ã¨ã—ã€åŒé …第二å·ä¸­ã€Œã®æ¨ªã€ã‚’ -「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第三å·ã¨ã—ã€åŒé …第一å·ä¸­ã€Œã®æ¨ªã€ã‚’「以外ã€ã«æ”¹ã‚ã€åŒå·ã‚’åŒé …第二 -å·ã¨ã—ã€åŒé …ã«ç¬¬ä¸€å·ã¨ã—ã¦æ¬¡ã®ä¸€å·ã‚’加ãˆã‚‹ã€‚ - - \ No newline at end of file diff --git a/samples/nonfree/kampo.xml.ref b/samples/nonfree/kampo.xml.ref deleted file mode 100644 index 0c8d71a..0000000 --- a/samples/nonfree/kampo.xml.ref +++ /dev/null @@ -1,3356 +0,0 @@ - - - - - -å¹³ -æˆ - -â„¢ -— - -å¹´ - -› - -月 - -â„¢ -Å“ - -æ—¥ - -金 -曜 -æ—¥ - - - - - - -官 - - - - - - -å ± - - - - - - -第 - -› -Ÿ -Ëœ -ž - -å· - - - - - - -› - - - - - - -政 -令 -第 -百 -å›› -å -ä¹ -å· - - - - - - -é“ -è·¯ -交 -通 -法 -æ–½ -è¡Œ -令 -ã® -一 -部 -ã‚’ -改 -æ­£ -ã™ -ã‚‹ -政 -令 - - - - - - -内 -é–£ -㯠-〠-é“ -è·¯ -交 -通 -法 -ã® -一 -部 -ã‚’ -改 -æ­£ -ã™ -ã‚‹ -法 -律 -( -å¹³ -æˆ -å -ä¹ -å¹´ -法 -律 -第 -ä¹ -å -å· -) -ã® -一 -部 -ã® -æ–½ -è¡Œ -ã« -ä¼´ -ã„ -〠-並 -ã³ - - - - -ã« -é“ -è·¯ -交 -通 -法 -( -昭 -å’Œ -三 -å -五 -å¹´ -法 -律 -第 -百 -五 -å· -) -第 -å›› -æ¡ -第 -一 -é … -åŠ -ã³ -第 -å›› -é … -〠-第 -五 -æ¡ -第 -一 -é … -〠-第 -三 -å -ä¹ -æ¡ -第 - - - - -一 -é … -〠-第 -五 -å -一 -æ¡ -第 -ä¹ -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -〠-åŒ -法 -第 -七 -å -二 -æ¡ -ã® -二 -第 -三 -é … -åŠ -ã³ -第 -七 -å -五 -æ¡ -ã® -å…« -第 -二 -é … -ã« - - - - -㊠-ã„ -㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -〠-第 -五 -å -一 -æ¡ -ã® -三 -第 -一 -é … -〠-第 -å…­ -å -三 -æ¡ -ã® -å›› -第 -一 -é … -第 -二 -å· -〠-第 -七 -å -一 -æ¡ -ã® - - - - -三 -第 -二 -é … -㟠-ã  -ã— -書 -〠-第 -七 -å -一 -æ¡ -ã® -å…­ -第 -一 -é … -〠-第 -ä¹ -å -æ¡ -第 -一 -é … -㟠-ã  -ã— -書 -〠-第 -百 -æ¡ -ã® -二 -第 -一 -é … -本 -æ–‡ -åŠ -ã³ -第 - - - - -å›› -å· -〠-第 -百 -二 -æ¡ -ã® -二 -並 -ã³ -ã« -第 -百 -二 -å -五 -æ¡ -第 -一 -é … -åŠ -ã³ -第 -三 -é … -ã® -è¦ -定 -ã« -基 -㥠-ã -〠-ã“ -ã® -政 -令 -ã‚’ -制 -定 -ã™ -ã‚‹ -。 - - - - - - -é“ -è·¯ -交 -通 -法 -æ–½ -è¡Œ -令 -( -昭 -å’Œ -三 -å -五 -å¹´ -政 -令 -第 -二 -百 -七 -å -å· -) -ã® -一 -部 -ã‚’ -次 -ã® -よ -ㆠ-ã« -改 -æ­£ -ã™ -ã‚‹ -。 - - - - -第 -一 -æ¡ -ã® -二 -第 -å›› -é … -第 -三 -å· -中 -「 -一 -・ -五 -メ -ー -ト -ル -〠-ã‚’ -「 -一 -メ -ー -ト -ル -〠-ã« -改 -ã‚ -〠-åŒ -æ¡ -第 -五 -é … -第 -三 -å· -中 -「 -第 - - - - - - -å…­ -å -三 -æ¡ -ã® -å›› -第 -一 -é … -〠-ã‚’ -「 -第 -å…­ -å -三 -æ¡ -ã® -å›› -第 -一 -é … -第 -一 -å· -〠-ã« -改 -ã‚ -ã‚‹ -。 - - - - - - -第 -二 -æ¡ -第 -一 -é … -ã® -表 -ã® -é’ -色 -ã® -ç¯ -ç« -ã® -é … -第 -三 -å· -中 -「 -å« -ã‚€ -。 -) -〠-ã‚’ -「 -å« -ã‚€ -。 -é’ -色 -ã® -ç¯ -ç« -ã® -矢 -å° -ã® -é … -ã‚’ -除 -ã -〠- - - - - - -「 - - - - - - -æ­© -è¡Œ -者 -㯠-〠-進 -è¡Œ -ã™ -ã‚‹ -ã“ -㨠-㌠-㧠-ã -ã‚‹ -ã“ -㨠-。 - - - - - - -以 -下 -ã“ -ã® -æ¡ -ã« -㊠-ã„ -㦠-åŒ -㘠-。 -) -ã‚’ -〠-ã« -改 -ã‚ -〠-åŒ -表 -中 - - - - - - -æ­© -è¡Œ -者 -㯠-〠-é“ -è·¯ -ã® -横 -æ–­ -ã‚’ -始 -ã‚ -㦠-㯠-㪠-ら -ãš -〠-ã¾ -㟠-〠-é“ - - - - -横 -æ–­ -ã‚’ -終 -ã‚ -ã‚‹ -ã‹ -〠-åˆ -㯠-横 -æ–­ -ã‚’ -ã‚„ -ã‚ -㦠-引 -ã -è¿” -ã• -㪠-ã‘ -ã‚Œ - - - - - - -一 -ã® -五 - -医 -療 -æ©Ÿ -é–¢ -㌠-〠-å‚· -ç—… -者 -ã® -ç·Š -急 -æ¬ -é€ -ã‚’ -ã— -よ -ㆠ-㨠-ã™ -ã‚‹ -都 -é“ -府 -県 -åˆ -㯠-市 -町 -æ‘ -ã® -è¦ -è«‹ -ã‚’ -å— -ã‘ -㦠-〠-当 -該 - - - - -å‚· -ç—… -者 -㌠-医 -療 -æ©Ÿ -é–¢ -ã« -ç·Š -急 -æ¬ -é€ -ã‚’ -ã• -ã‚Œ -ã‚‹ -ã¾ -㧠-ã® -é–“ -ã« -㊠-ã‘ -ã‚‹ -å¿œ -急 -ã® -æ²» -療 -ã‚’ -è¡Œ -ㆠ-医 -師 -ã‚’ -当 -該 -å‚· -ç—… -者 -ã® -所 - - - - -在 -ã™ -ã‚‹ -å ´ -所 -ã« -ã¾ -㧠-é‹ -æ¬ -ã™ -ã‚‹ -㟠-ã‚ -ã« -使 -用 -ã™ -ã‚‹ -自 -å‹• -車 - - - - -第 -å -å…­ -æ¡ -中 -第 -二 -å· -ã‚’ -削 -ã‚Š -〠-第 -三 -å· -ã‚’ -第 -二 -å· -㨠-ã™ -ã‚‹ -。 - - - - -第 -å -å…­ -æ¡ -ã® -二 -åŠ -ã³ -第 -å -å…­ -æ¡ -ã® -三 -中 -「 -第 -五 -å -一 -æ¡ -第 -å -一 -é … -〠-ã‚’ -「 -第 -五 -å -一 -æ¡ -第 -å -二 -é … -〠-ã« -改 -ã‚ -ã‚‹ -。 - - - - -第 -å -å…­ -æ¡ -ã® -五 -中 -「 -第 -五 -å -一 -æ¡ -第 -二 -å -é … -〠-ã‚’ -「 -第 -五 -å -一 -æ¡ -第 -二 -å -一 -é … -〠-ã« -改 -ã‚ -ã‚‹ -。 - - - - -第 -å -七 -æ¡ -中 -「 -第 -五 -å -一 -æ¡ -第 -二 -å -一 -é … -〠-ã‚’ -「 -第 -五 -å -一 -æ¡ -第 -二 -å -二 -é … -〠-ã« -改 -ã‚ -〠-「 -「 -å‰ -å· -〠-㨠-ã‚ -ã‚‹ -ã® -㯠-「 -å‰ - - - - -å· -ã® -å…¬ -示 -ã« -ä¿‚ -ã‚‹ -ç© -載 -物 -ã® -ㆠ-ã¡ -特 -ã« -è²´ -é‡ -㨠-èª -ã‚ -ら -ã‚Œ -ã‚‹ -ã‚‚ -ã® -ã« -㤠-ã„ -㦠-㯠-〠-åŒ -å· -〠-㨠-〠-åŒ -æ¡ -第 -三 -å· -中 -〠-ã‚’ -削 - - - - -ã‚‹ -。 - - - - - - -第 -å -七 -æ¡ -ã® -二 -ã‚’ -次 -ã® -よ -ㆠ-ã« -改 -ã‚ -ã‚‹ -。 - - - - -( -委 -託 -ã™ -ã‚‹ -ã“ -㨠-ã® -㧠-ã -㪠-ã„ -事 -å‹™ -) - - - - - - -第 -å -七 -æ¡ -ã® -二 - -法 -第 -五 -å -一 -æ¡ -ã® -三 -第 -一 -é … -ã® -政 -令 -㧠-定 -ã‚ -ã‚‹ -ã‚‚ -ã® -㯠-〠-次 -ã« -掲 -ã’ -ã‚‹ -㨠-㊠-ã‚Š -㨠-ã™ -ã‚‹ -。 - - - - - - -一 - -法 -第 -五 -å -一 -æ¡ -第 -五 -é … -ã® -è¦ -定 -ã« -よ -ã‚‹ -車 -両 -ã® -移 -å‹• -ã® -決 -定 - - - - -二 - -法 -第 -五 -å -一 -æ¡ -第 -å…­ -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ -ã‚Š -ä¿ -管 -ã— -㟠-車 - - - - - - -両 -( -ç© -載 -物 -ã‚’ -å« -ã‚€ -。 -以 -下 -ã“ -ã® -æ¡ -ã« -㊠-ã„ -㦠-åŒ -㘠-。 -) -ã® -è¿” -é‚„ -ã® -決 -定 - - - - - - -三 - -法 -第 -五 -å -一 -æ¡ -第 -七 -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-読 -ã¿ -替 -㈠-㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -åˆ -㯠-第 -å…« -é … -ã® - - - - - - -è¦ -定 -ã« -よ -ã‚‹ -å‘Š -知 - - - - - - -æ­© -è¡Œ -者 -㯠-〠-é“ -è·¯ -ã‚’ -横 -æ–­ -ã— -㦠-㯠-㪠-ら -㪠-ã„ -ã“ -㨠-。 - - - - - - -å›› - -法 -第 -五 -å -一 -æ¡ -第 -ä¹ -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-読 -ã¿ -替 -㈠-㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ -ã‚‹ - - - - - - -「 - - - - - - -一 - -æ­© -è¡Œ -者 -㯠-〠-進 -è¡Œ -ã™ -ã‚‹ -ã“ -㨠-㌠-㧠-ã -ã‚‹ -ã“ -㨠-。 - - - - -二 - -æ™® -通 -自 -転 -車 -( -法 -第 -å…­ -å -三 -æ¡ -ã® -三 -ã« -è¦ -定 -ã™ - - - - -å· -ã« -㊠-ã„ -㦠-åŒ -㘠-。 -) -㯠-〠-横 -æ–­ -æ­© -é“ -ã« -㊠-ã„ -㦠-ç›´ - - - - - - -è·¯ -ã‚’ -横 -æ–­ -ã— -㦠-ã„ -ã‚‹ -æ­© -è¡Œ -者 -㯠-〠-ã™ -ã¿ -ã‚„ -ã‹ -ã« -〠-ã -ã® - - - - -ã° -㪠-ら -㪠-ã„ -ã“ -㨠-。 - - - - - - -ã‚’ - - - - - - -〠- - - - - - -一 - -æ­© -è¡Œ -者 -㯠-〠-é“ -è·¯ -ã® -横 -æ–­ -ã‚’ -始 -ã‚ -㦠-㯠-㪠-ら -ãš -〠- - - - -横 -æ–­ -ã‚’ -終 -ã‚ -ã‚‹ -ã‹ -〠-åˆ -㯠-横 -æ–­ -ã‚’ -ã‚„ -ã‚ -㦠-引 -ã -è¿” - - - - -二 - -横 -æ–­ -æ­© -é“ -ã‚’ -進 -è¡Œ -ã— -よ -ㆠ-㨠-ã™ -ã‚‹ -æ™® -通 -自 -転 -車 - - - - - - -一 - -æ­© -è¡Œ -者 -㯠-〠-é“ -è·¯ -ã‚’ -横 -æ–­ -ã— -㦠-㯠-㪠-ら -㪠-ã„ -ã“ - - - - -二 - -横 -æ–­ -æ­© -é“ -ã‚’ -進 -è¡Œ -ã— -よ -ㆠ-㨠-ã™ -ã‚‹ -æ™® -通 -自 -転 -車 - - - - - - -ã‚‹ -æ™® -通 -自 -転 -車 -ã‚’ -ã„ -ㆠ-。 -以 -下 -ã“ -ã® -æ¡ -åŠ -ã³ -第 -二 -å -å…­ -æ¡ -第 -三 - - - - -進 -ã‚’ -ã— -〠-åˆ -㯠-å·¦ -折 -ã™ -ã‚‹ -ã“ -㨠-㌠-㧠-ã -ã‚‹ -ã“ -㨠-。 - - - - - - -ã¾ -㟠-〠-é“ -è·¯ -ã‚’ -横 -æ–­ -ã— -㦠-ã„ -ã‚‹ -æ­© -è¡Œ -者 -㯠-〠-速 -ã‚„ -ã‹ -ã« -〠-ã -ã® - - - - -ã• -㪠-ã‘ -ã‚Œ -ã° -㪠-ら -㪠-ã„ -ã“ -㨠-。 - - - - -㯠-〠-é“ -è·¯ -ã® -横 -æ–­ -ã‚’ -始 -ã‚ -㦠-㯠-㪠-ら -㪠-ã„ -ã“ -㨠-。 - - - - - - -ã« -改 -ã‚ -〠-åŒ -æ¡ -第 -å›› -é … -ã® -表 -ã® -人 -ã® -å½¢ -ã® -記 -å· -ã‚’ -有 - - - - - - -㨠-。 - - - - -㯠-〠-é“ -è·¯ -ã® -横 -æ–­ -ã‚’ -始 -ã‚ -㦠-㯠-㪠-ら -㪠-ã„ -ã“ -㨠-。 - - - - - - -〠- - - - - - -ã™ -ã‚‹ -é’ -色 -ã® -ç¯ -ç« -ã® -é … -第 -二 -å· -中 -「 -ç›´ -進 -( -å³ -折 -ã— -よ -ㆠ-㨠-ã— -㦠-å³ -折 -ã™ -ã‚‹ -地 -点 -ã¾ -㧠-ç›´ -進 -ã— -〠-ã -ã® -地 -点 -ã« -㊠-ã„ -㦠- - - - -å³ -折 -ã™ -ã‚‹ -ã“ -㨠-ã‚’ -å« -ã‚€ -。 -) -ã— -〠-ã‚’ -「 -ç›´ -進 -ã‚’ -ã— -〠-ã« -改 -ã‚ -ã‚‹ -。 - - - - - - -第 -三 -æ¡ -ã® -二 -第 -一 -é … -中 -「 -è¡Œ -㪠-ã‚ -ã› -ã‚‹ -〠-ã‚’ -「 -è¡Œ -ã‚ -ã› -ã‚‹ -〠-ã« -〠-「 -次 -ã® -å„ -å· -ã« -〠-ã‚’ -「 -次 -ã« -〠-ã« -〠-「 -ã“ -㈠-㪠-ã„ -〠-ã‚’ - - - - -「 -超 -㈠-㪠-ã„ -〠-ã« -改 -ã‚ -〠-第 -å -å· -ã‚’ -第 -å -二 -å· -㨠-ã— -〠-第 -å›› -å· -ã‹ -ら -第 -ä¹ -å· -ã¾ -㧠-ã‚’ -二 -å· -ãš -㤠-ç¹° -ã‚Š -下 -ã’ -〠-第 -三 -å· -ã‚’ - - - - -第 -å›› -å· -㨠-ã— -〠-åŒ -å· -ã® -次 -ã« -次 -ã® -一 -å· -ã‚’ -加 -㈠-ã‚‹ -。 - - - - -五 - -法 -第 -二 -å -五 -æ¡ -ã® -二 -第 -二 -é … -ã® -é“ -è·¯ -標 -è­˜ -ç­‰ - - - - -第 -三 -æ¡ -ã® -二 -第 -一 -é … -第 -二 -å· -ã® -次 -ã« -次 -ã® -一 -å· -ã‚’ -加 -㈠-ã‚‹ -。 - - - - -三 - -法 -第 -å -三 -æ¡ -第 -二 -é … -ã® -é“ -è·¯ -標 -è­˜ -ç­‰ - - - - -第 -å -三 -æ¡ -第 -一 -é … -中 -第 -一 -å· -ã® -五 -ã‚’ -第 -一 -å· -ã® -å…­ -㨠-ã— -〠-第 -一 -å· -ã® -å›› -ã® -次 -ã« -次 -ã® -一 -å· -ã‚’ -加 -㈠-ã‚‹ -。 - - - - - - -å…¬ -示 - - - - - - -五 - -法 -第 -五 -å -一 -æ¡ -第 -å -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ -ã‚‹ -å…¬ -示 -ã® -æ—¥ -付 - - - - - - -åŠ -ã³ -内 -容 -ã® -å…¬ -表 - - - - - - -å…­ - -法 -第 -五 -å -一 -æ¡ -第 -å -二 -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-読 -ã¿ -替 -㈠-㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ - - - - - - -ã‚‹ -車 -両 -ã® -売 -å´ -ã® -決 -定 - - - - - - -七 - -法 -第 -五 -å -一 -æ¡ -第 -å -三 -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ -ã‚‹ -車 -両 -ã® -廃 - - - - - - -棄 -ã® -決 -定 - - - - - - -å…« - -法 -第 -五 -å -一 -æ¡ -第 -å -å…­ -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-読 -ã¿ -替 -㈠-㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ - - - - - - -ã‚‹ -命 -令 - - - - - - -ä¹ - -法 -第 -五 -å -一 -æ¡ -第 -å -七 -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ -ã‚‹ -ç£ -促 - - - - -å - -法 -第 -五 -å -一 -æ¡ -第 -å -å…« -é … -( -åŒ -æ¡ -第 -二 -å -二 -é … -ã« -㊠-ã„ -㦠-準 -用 -ã™ -ã‚‹ -å ´ -åˆ -ã‚’ -å« -ã‚€ -。 -) -ã® -è¦ -定 -ã« -よ -ã‚‹ -å¾´ -åŽ - - - - -å -一 - -法 -第 -五 -å -一 -æ¡ -第 -二 -å -一 -é … -ã® -è¦ -定 -ã« -よ -ã‚‹ -ç™» -録 -ã® -嘱 -託 - - - - -第 -å -七 -æ¡ -ã® -三 -ã‚’ -削 -ã‚Š -〠-第 -å -七 -æ¡ -ã® -å›› -ã‚’ -第 -å -七 -æ¡ -ã® -三 -㨠-ã— -〠-第 -å -七 -æ¡ -ã® -五 -ã‹ -ら -第 -å -七 -æ¡ -ã® -å…« -ã¾ -㧠-ã‚’ -一 - - - - - - -æ¡ -ãš -㤠-ç¹° -ã‚Š -上 -ã’ -ã‚‹ -。 - - - - - - -第 -二 -å -二 -æ¡ -第 -一 -å· -中 -「 -ä¹— -車 -装 -ç½® -( -以 -下 -〠-ã® -下 -ã« -「 -ã“ -ã® -æ¡ -ã« -㊠-ã„ -㦠-〠-ã‚’ -加 -㈠-ã‚‹ -。 - - - - -第 -二 -å -å›› -æ¡ -ã® -二 -中 -「 -第 -二 -å -å…­ -æ¡ -〠-ã‚’ -「 -第 -二 -å -五 -æ¡ -ã® -二 -〠-ã« -改 -ã‚ -ã‚‹ -。 - - - - -第 -二 -å -å…­ -æ¡ -ã‚’ -第 -二 -å -五 -æ¡ -ã® -二 -㨠-ã— -〠-第 -三 -ç«  -中 -åŒ -æ¡ -ã® -次 -ã« -次 -ã® -一 -æ¡ -ã‚’ -加 -㈠-ã‚‹ -。 - - - - -( -æ™® -通 -自 -転 -車 -ã« -よ -ã‚Š -æ­© -é“ -ã‚’ -通 -è¡Œ -ã™ -ã‚‹ -ã“ -㨠-㌠-㧠-ã -ã‚‹ -者 -) - - - - - - -第 -二 -å -å…­ -æ¡ - -法 -第 -å…­ -å -三 -æ¡ -ã® -å›› -第 -一 -é … -第 -二 -å· -ã® -政 -令 -㧠-定 -ã‚ -ã‚‹ -者 -㯠-〠-次 -ã« -掲 -ã’ -ã‚‹ -㨠-㊠-ã‚Š -㨠-ã™ -ã‚‹ -。 - - - - - - -一 - -å… -ç«¥ -åŠ -ã³ -å¹¼ -å… - - - - -二 - -七 -å -æ­³ -以 -上 -ã® -者 - - - - -三 - -æ™® -通 -自 -転 -車 -ã« -よ -ã‚Š -安 -å…¨ -ã« -車 -é“ -ã‚’ -通 -è¡Œ -ã™ -ã‚‹ -ã“ -㨠-ã« -支 -éšœ -ã‚’ -生 -ãš -ã‚‹ -程 -度 -ã® -身 -体 -ã® -éšœ -害 -㨠-ã— -㦠-内 -é–£ -府 -令 - - - - - - -㧠-定 -ã‚ -ã‚‹ -ã‚‚ -ã® -ã‚’ -有 -ã™ -ã‚‹ -者 - - - - - - -第 -二 -å -å…­ -æ¡ -ã® -三 -ã® -二 -第 -一 -é … -第 -å›› -å· -中 -「 -次 -é … -第 -三 -å· -〠-ã‚’ -「 -次 -é … -第 -å›› -å· -〠-ã« -改 -ã‚ -〠-åŒ -é … -第 -七 -å· -中 -「 -次 -é … - - - - -第 -å…­ -å· -〠-ã‚’ -「 -次 -é … -第 -七 -å· -〠-ã« -改 -ã‚ -〠-åŒ -æ¡ -第 -二 -é … -第 -七 -å· -中 -「 -ã® -横 -〠-ã‚’ -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -å…« - - - - -å· -㨠-ã— -〠-åŒ -é … -第 -å…­ -å· -中 -「 -ã® -横 -〠-ã‚’ -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -七 -å· -㨠-ã— -〠-åŒ -é … -第 -五 -å· -中 -「 -ã® -横 -〠-ã‚’ - - - - -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -å…­ -å· -㨠-ã— -〠-åŒ -é … -第 -å›› -å· -中 -「 -ã® -横 -〠-ã‚’ -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -五 - - - - -å· -㨠-ã— -〠-åŒ -é … -第 -三 -å· -中 -「 -ã® -横 -〠-ã‚’ -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -å›› -å· -㨠-ã— -〠-åŒ -é … -第 -二 -å· -中 -「 -ã® -横 -〠-ã‚’ - - - - -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -三 -å· -㨠-ã— -〠-åŒ -é … -第 -一 -å· -中 -「 -ã® -横 -〠-ã‚’ -「 -以 -外 -〠-ã« -改 -ã‚ -〠-åŒ -å· -ã‚’ -åŒ -é … -第 -二 - - - - -å· -㨠-ã— -〠-åŒ -é … -ã« -第 -一 -å· -㨠-ã— -㦠-次 -ã® -一 -å· -ã‚’ -加 -㈠-ã‚‹ -。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/nonfree/naacl06-shinyama.html.ref b/samples/nonfree/naacl06-shinyama.html.ref deleted file mode 100644 index 9a7c59b..0000000 --- a/samples/nonfree/naacl06-shinyama.html.ref +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -
Preemptive Information Extraction using Unrestricted Relation Discovery -
Yusuke Shinyama -
Satoshi Sekine -
New York University -
715, Broadway, 7th Floor -
New York, NY, 10003 -
{yusuke,sekine}@cs.nyu.edu -
Abstract -
We are trying to extend the boundary of -
Information Extraction (IE) systems. Ex- -
isting IE systems require a lot of time and -
human effort to tune for a new scenario. -
Preemptive Information Extraction is an -
attempt to automatically create all feasible -
IE systems in advance without human in- -
tervention. We propose a technique called -
Unrestricted Relation Discovery that dis- -
covers all possible relations from texts and -
presents them as tables. We present a pre- -
liminary system that obtains reasonably -
good results. -
1 Background -
Every day, a large number of news articles are cre- -
ated and reported, many of which are unique. But -
certain types of events, such as hurricanes or mur- -
ders, are reported again and again throughout a year. -
The goal of Information Extraction, or IE, is to re- -
trieve a certain type of news event from past articles -
and present the events as a table whose columns are -
ï¬lled with a name of a person or company, accord- -
ing to its role in the event. However, existing IE -
techniques require a lot of human labor. First, you -
have to specify the type of information you want and -
collect articles that include this information. Then, -
you have to analyze the articles and manually craft -
a set of patterns to capture these events. Most exist- -
ing IE research focuses on reducing this burden by -
helping people create such patterns. But each time -
you want to extract a different kind of information, -
you need to repeat the whole process: specify arti- -
cles and adjust its patterns, either manually or semi- -
automatically. There is a bit of a dangerous pitfall -
here. First, it is hard to estimate how good the sys- -
tem can be after months of work. Furthermore, you -
might not know if the task is even doable in the ï¬rst -
place. Knowing what kind of information is easily -
obtained in advance would help reduce this risk. -
An IE task can be deï¬ned as ï¬nding a relation -
among several entities involved in a certain type of -
event. For example, in the MUC-6 management -
succession scenario, one seeks a relation between -
COMPANY, PERSON and POST involved with hir- -
ing/ï¬ring events. For each row of an extracted ta- -
ble, you can always read it as “COMPANY hired -
(or ï¬red) PERSON for POST.†The relation between -
these entities is retained throughout the table. There -
are many existing works on obtaining extraction pat- -
terns for pre-deï¬ned relations (Riloff, 1996; Yangar- -
ber et al., 2000; Agichtein and Gravano, 2000; Sudo -
et al., 2003). -
Unrestricted Relation Discovery is a technique to -
automatically discover such relations that repeatedly -
appear in a corpus and present them as a table, with -
absolutely no human intervention. Unlike most ex- -
isting IE research, a user does not specify the type -
of articles or information wanted. Instead, a system -
tries to ï¬nd all the kinds of relations that are reported -
multiple times and can be reported in tabular form. -
This technique will open up the possibility of try- -
ing new IE scenarios. Furthermore, the system itself -
can be used as an IE system, since an obtained re- -
lation is already presented as a table. If this system -
works to a certain extent, tuning an IE system be- -
comes a search problem: all the tables are already -
built “preemptively.†A user only needs to search -
for a relevant table. -
Page: 1
- diff --git a/samples/nonfree/naacl06-shinyama.txt.ref b/samples/nonfree/naacl06-shinyama.txt.ref deleted file mode 100644 index 79ac39c..0000000 --- a/samples/nonfree/naacl06-shinyama.txt.ref +++ /dev/null @@ -1,91 +0,0 @@ -Preemptive Information Extraction using Unrestricted Relation Discovery - -Yusuke Shinyama - -Satoshi Sekine - -New York University - -715, Broadway, 7th Floor - -New York, NY, 10003 - -{yusuke,sekine}@cs.nyu.edu - -Abstract - -We are trying to extend the boundary of -Information Extraction (IE) systems. Ex- -isting IE systems require a lot of time and -human effort to tune for a new scenario. -Preemptive Information Extraction is an -attempt to automatically create all feasible -IE systems in advance without human in- -tervention. We propose a technique called -Unrestricted Relation Discovery that dis- -covers all possible relations from texts and -presents them as tables. We present a pre- -liminary system that obtains reasonably -good results. - -1 Background - -Every day, a large number of news articles are cre- -ated and reported, many of which are unique. But -certain types of events, such as hurricanes or mur- -ders, are reported again and again throughout a year. -The goal of Information Extraction, or IE, is to re- -trieve a certain type of news event from past articles -and present the events as a table whose columns are -ï¬lled with a name of a person or company, accord- -ing to its role in the event. However, existing IE -techniques require a lot of human labor. First, you -have to specify the type of information you want and -collect articles that include this information. Then, -you have to analyze the articles and manually craft -a set of patterns to capture these events. Most exist- -ing IE research focuses on reducing this burden by -helping people create such patterns. But each time -you want to extract a different kind of information, -you need to repeat the whole process: specify arti- - -cles and adjust its patterns, either manually or semi- -automatically. There is a bit of a dangerous pitfall -here. First, it is hard to estimate how good the sys- -tem can be after months of work. Furthermore, you -might not know if the task is even doable in the ï¬rst -place. Knowing what kind of information is easily -obtained in advance would help reduce this risk. - -An IE task can be deï¬ned as ï¬nding a relation -among several entities involved in a certain type of -event. For example, in the MUC-6 management -succession scenario, one seeks a relation between -COMPANY, PERSON and POST involved with hir- -ing/ï¬ring events. For each row of an extracted ta- -ble, you can always read it as “COMPANY hired -(or ï¬red) PERSON for POST.†The relation between -these entities is retained throughout the table. There -are many existing works on obtaining extraction pat- -terns for pre-deï¬ned relations (Riloff, 1996; Yangar- -ber et al., 2000; Agichtein and Gravano, 2000; Sudo -et al., 2003). - -Unrestricted Relation Discovery is a technique to -automatically discover such relations that repeatedly -appear in a corpus and present them as a table, with -absolutely no human intervention. Unlike most ex- -isting IE research, a user does not specify the type -of articles or information wanted. Instead, a system -tries to ï¬nd all the kinds of relations that are reported -multiple times and can be reported in tabular form. -This technique will open up the possibility of try- -ing new IE scenarios. Furthermore, the system itself -can be used as an IE system, since an obtained re- -lation is already presented as a table. If this system -works to a certain extent, tuning an IE system be- -comes a search problem: all the tables are already -built “preemptively.†A user only needs to search -for a relevant table. - - \ No newline at end of file diff --git a/samples/nonfree/naacl06-shinyama.xml.ref b/samples/nonfree/naacl06-shinyama.xml.ref deleted file mode 100644 index d3b13a1..0000000 --- a/samples/nonfree/naacl06-shinyama.xml.ref +++ /dev/null @@ -1,3763 +0,0 @@ - - - - - -P -r -e -e -m -p -t -i -v -e - -I -n -f -o -r -m -a -t -i -o -n - -E -x -t -r -a -c -t -i -o -n - -u -s -i -n -g - -U -n -r -e -s -t -r -i -c -t -e -d - -R -e -l -a -t -i -o -n - -D -i -s -c -o -v -e -r -y - - - - - - -Y -u -s -u -k -e - -S -h -i -n -y -a -m -a - - - - - - -S -a -t -o -s -h -i - -S -e -k -i -n -e - - - - - - -N -e -w - -Y -o -r -k - -U -n -i -v -e -r -s -i -t -y - - - - - - -7 -1 -5 -, - -B -r -o -a -d -w -a -y -, - -7 -t -h - -F -l -o -o -r - - - - - - -N -e -w - -Y -o -r -k -, - -N -Y -, - -1 -0 -0 -0 -3 - - - - - - -{ -y -u -s -u -k -e -, -s -e -k -i -n -e -} -@ -c -s -. -n -y -u -. -e -d -u - - - - - - -A -b -s -t -r -a -c -t - - - - - - -W -e - -a -r -e - -t -r -y -i -n -g - -t -o - -e -x -t -e -n -d - -t -h -e - -b -o -u -n -d -a -r -y - -o -f - - - - -I -n -f -o -r -m -a -t -i -o -n - -E -x -t -r -a -c -t -i -o -n - -( -I -E -) - -s -y -s -t -e -m -s -. - -E -x -- - - - - -i -s -t -i -n -g - -I -E - -s -y -s -t -e -m -s - -r -e -q -u -i -r -e - -a - -l -o -t - -o -f - -t -i -m -e - -a -n -d - - - - -h -u -m -a -n - -e -f -f -o -r -t - -t -o - -t -u -n -e - -f -o -r - -a - -n -e -w - -s -c -e -n -a -r -i -o -. - - - - -P -r -e -e -m -p -t -i -v -e - -I -n -f -o -r -m -a -t -i -o -n - -E -x -t -r -a -c -t -i -o -n - -i -s - -a -n - - - - -a -t -t -e -m -p -t - -t -o - -a -u -t -o -m -a -t -i -c -a -l -l -y - -c -r -e -a -t -e - -a -l -l - -f -e -a -s -i -b -l -e - - - - -I -E - -s -y -s -t -e -m -s - -i -n - -a -d -v -a -n -c -e - -w -i -t -h -o -u -t - -h -u -m -a -n - -i -n -- - - - - -t -e -r -v -e -n -t -i -o -n -. - -W -e - -p -r -o -p -o -s -e - -a - -t -e -c -h -n -i -q -u -e - -c -a -l -l -e -d - - - - -U -n -r -e -s -t -r -i -c -t -e -d - -R -e -l -a -t -i -o -n - -D -i -s -c -o -v -e -r -y - -t -h -a -t - -d -i -s -- - - - - -c -o -v -e -r -s - -a -l -l - -p -o -s -s -i -b -l -e - -r -e -l -a -t -i -o -n -s - -f -r -o -m - -t -e -x -t -s - -a -n -d - - - - -p -r -e -s -e -n -t -s - -t -h -e -m - -a -s - -t -a -b -l -e -s -. - -W -e - -p -r -e -s -e -n -t - -a - -p -r -e -- - - - - -l -i -m -i -n -a -r -y - -s -y -s -t -e -m - -t -h -a -t - -o -b -t -a -i -n -s - -r -e -a -s -o -n -a -b -l -y - - - - -g -o -o -d - -r -e -s -u -l -t -s -. - - - - - - -1 - -B -a -c -k -g -r -o -u -n -d - - - - - - -E -v -e -r -y - -d -a -y -, - -a - -l -a -r -g -e - -n -u -m -b -e -r - -o -f - -n -e -w -s - -a -r -t -i -c -l -e -s - -a -r -e - -c -r -e -- - - - - -a -t -e -d - -a -n -d - -r -e -p -o -r -t -e -d -, - -m -a -n -y - -o -f - -w -h -i -c -h - -a -r -e - -u -n -i -q -u -e -. - -B -u -t - - - - -c -e -r -t -a -i -n - -t -y -p -e -s - -o -f - -e -v -e -n -t -s -, - -s -u -c -h - -a -s - -h -u -r -r -i -c -a -n -e -s - -o -r - -m -u -r -- - - - - -d -e -r -s -, - -a -r -e - -r -e -p -o -r -t -e -d - -a -g -a -i -n - -a -n -d - -a -g -a -i -n - -t -h -r -o -u -g -h -o -u -t - -a - -y -e -a -r -. - - - - -T -h -e - -g -o -a -l - -o -f - -I -n -f -o -r -m -a -t -i -o -n - -E -x -t -r -a -c -t -i -o -n -, - -o -r - -I -E -, - -i -s - -t -o - -r -e -- - - - - -t -r -i -e -v -e - -a - -c -e -r -t -a -i -n - -t -y -p -e - -o -f - -n -e -w -s - -e -v -e -n -t - -f -r -o -m - -p -a -s -t - -a -r -t -i -c -l -e -s - - - - -a -n -d - -p -r -e -s -e -n -t - -t -h -e - -e -v -e -n -t -s - -a -s - -a - -t -a -b -l -e - -w -h -o -s -e - -c -o -l -u -m -n -s - -a -r -e - - - - -ï¬ -l -l -e -d - -w -i -t -h - -a - -n -a -m -e - -o -f - -a - -p -e -r -s -o -n - -o -r - -c -o -m -p -a -n -y -, - -a -c -c -o -r -d -- - - - - -i -n -g - -t -o - -i -t -s - -r -o -l -e - -i -n - -t -h -e - -e -v -e -n -t -. - -H -o -w -e -v -e -r -, - -e -x -i -s -t -i -n -g - -I -E - - - - -t -e -c -h -n -i -q -u -e -s - -r -e -q -u -i -r -e - -a - -l -o -t - -o -f - -h -u -m -a -n - -l -a -b -o -r -. - -F -i -r -s -t -, - -y -o -u - - - - -h -a -v -e - -t -o - -s -p -e -c -i -f -y - -t -h -e - -t -y -p -e - -o -f - -i -n -f -o -r -m -a -t -i -o -n - -y -o -u - -w -a -n -t - -a -n -d - - - - -c -o -l -l -e -c -t - -a -r -t -i -c -l -e -s - -t -h -a -t - -i -n -c -l -u -d -e - -t -h -i -s - -i -n -f -o -r -m -a -t -i -o -n -. - -T -h -e -n -, - - - - -y -o -u - -h -a -v -e - -t -o - -a -n -a -l -y -z -e - -t -h -e - -a -r -t -i -c -l -e -s - -a -n -d - -m -a -n -u -a -l -l -y - -c -r -a -f -t - - - - -a - -s -e -t - -o -f - -p -a -t -t -e -r -n -s - -t -o - -c -a -p -t -u -r -e - -t -h -e -s -e - -e -v -e -n -t -s -. - -M -o -s -t - -e -x -i -s -t -- - - - - -i -n -g - -I -E - -r -e -s -e -a -r -c -h - -f -o -c -u -s -e -s - -o -n - -r -e -d -u -c -i -n -g - -t -h -i -s - -b -u -r -d -e -n - -b -y - - - - -h -e -l -p -i -n -g - -p -e -o -p -l -e - -c -r -e -a -t -e - -s -u -c -h - -p -a -t -t -e -r -n -s -. - -B -u -t - -e -a -c -h - -t -i -m -e - - - - -y -o -u - -w -a -n -t - -t -o - -e -x -t -r -a -c -t - -a - -d -i -f -f -e -r -e -n -t - -k -i -n -d - -o -f - -i -n -f -o -r -m -a -t -i -o -n -, - - - - -y -o -u - -n -e -e -d - -t -o - -r -e -p -e -a -t - -t -h -e - -w -h -o -l -e - -p -r -o -c -e -s -s -: - -s -p -e -c -i -f -y - -a -r -t -i -- - - - - - - -c -l -e -s - -a -n -d - -a -d -j -u -s -t - -i -t -s - -p -a -t -t -e -r -n -s -, - -e -i -t -h -e -r - -m -a -n -u -a -l -l -y - -o -r - -s -e -m -i -- - - - - -a -u -t -o -m -a -t -i -c -a -l -l -y -. - -T -h -e -r -e - -i -s - -a - -b -i -t - -o -f - -a - -d -a -n -g -e -r -o -u -s - -p -i -t -f -a -l -l - - - - -h -e -r -e -. - -F -i -r -s -t -, - -i -t - -i -s - -h -a -r -d - -t -o - -e -s -t -i -m -a -t -e - -h -o -w - -g -o -o -d - -t -h -e - -s -y -s -- - - - - -t -e -m - -c -a -n - -b -e - -a -f -t -e -r - -m -o -n -t -h -s - -o -f - -w -o -r -k -. - -F -u -r -t -h -e -r -m -o -r -e -, - -y -o -u - - - - -m -i -g -h -t - -n -o -t - -k -n -o -w - -i -f - -t -h -e - -t -a -s -k - -i -s - -e -v -e -n - -d -o -a -b -l -e - -i -n - -t -h -e - -ï¬ -r -s -t - - - - -p -l -a -c -e -. - -K -n -o -w -i -n -g - -w -h -a -t - -k -i -n -d - -o -f - -i -n -f -o -r -m -a -t -i -o -n - -i -s - -e -a -s -i -l -y - - - - -o -b -t -a -i -n -e -d - -i -n - -a -d -v -a -n -c -e - -w -o -u -l -d - -h -e -l -p - -r -e -d -u -c -e - -t -h -i -s - -r -i -s -k -. - - - - - - -A -n - -I -E - -t -a -s -k - -c -a -n - -b -e - -d -e -ï¬ -n -e -d - -a -s - -ï¬ -n -d -i -n -g - -a - -r -e -l -a -t -i -o -n - - - - -a -m -o -n -g - -s -e -v -e -r -a -l - -e -n -t -i -t -i -e -s - -i -n -v -o -l -v -e -d - -i -n - -a - -c -e -r -t -a -i -n - -t -y -p -e - -o -f - - - - -e -v -e -n -t -. - -F -o -r - -e -x -a -m -p -l -e -, - -i -n - -t -h -e - -M -U -C -- -6 - -m -a -n -a -g -e -m -e -n -t - - - - -s -u -c -c -e -s -s -i -o -n - -s -c -e -n -a -r -i -o -, - -o -n -e - -s -e -e -k -s - -a - -r -e -l -a -t -i -o -n - -b -e -t -w -e -e -n - - - - -C -O -M -P -A -N -Y -, - -P -E -R -S -O -N - -a -n -d - -P -O -S -T - -i -n -v -o -l -v -e -d - -w -i -t -h - -h -i -r -- - - - - -i -n -g -/ -ï¬ -r -i -n -g - -e -v -e -n -t -s -. - -F -o -r - -e -a -c -h - -r -o -w - -o -f - -a -n - -e -x -t -r -a -c -t -e -d - -t -a -- - - - - -b -l -e -, - -y -o -u - -c -a -n - -a -l -w -a -y -s - -r -e -a -d - -i -t - -a -s - -“ -C -O -M -P -A -N -Y - -h -i -r -e -d - - - - -( -o -r - -ï¬ -r -e -d -) - -P -E -R -S -O -N - -f -o -r - -P -O -S -T -. -†- -T -h -e - -r -e -l -a -t -i -o -n - -b -e -t -w -e -e -n - - - - -t -h -e -s -e - -e -n -t -i -t -i -e -s - -i -s - -r -e -t -a -i -n -e -d - -t -h -r -o -u -g -h -o -u -t - -t -h -e - -t -a -b -l -e -. - -T -h -e -r -e - - - - -a -r -e - -m -a -n -y - -e -x -i -s -t -i -n -g - -w -o -r -k -s - -o -n - -o -b -t -a -i -n -i -n -g - -e -x -t -r -a -c -t -i -o -n - -p -a -t -- - - - - -t -e -r -n -s - -f -o -r - -p -r -e -- -d -e -ï¬ -n -e -d - -r -e -l -a -t -i -o -n -s - -( -R -i -l -o -f -f -, - -1 -9 -9 -6 -; - -Y -a -n -g -a -r -- - - - - -b -e -r - -e -t - -a -l -. -, - -2 -0 -0 -0 -; - -A -g -i -c -h -t -e -i -n - -a -n -d - -G -r -a -v -a -n -o -, - -2 -0 -0 -0 -; - -S -u -d -o - - - - -e -t - -a -l -. -, - -2 -0 -0 -3 -) -. - - - - - - -U -n -r -e -s -t -r -i -c -t -e -d - -R -e -l -a -t -i -o -n - -D -i -s -c -o -v -e -r -y - -i -s - -a - -t -e -c -h -n -i -q -u -e - -t -o - - - - -a -u -t -o -m -a -t -i -c -a -l -l -y - -d -i -s -c -o -v -e -r - -s -u -c -h - -r -e -l -a -t -i -o -n -s - -t -h -a -t - -r -e -p -e -a -t -e -d -l -y - - - - -a -p -p -e -a -r - -i -n - -a - -c -o -r -p -u -s - -a -n -d - -p -r -e -s -e -n -t - -t -h -e -m - -a -s - -a - -t -a -b -l -e -, - -w -i -t -h - - - - -a -b -s -o -l -u -t -e -l -y - -n -o - -h -u -m -a -n - -i -n -t -e -r -v -e -n -t -i -o -n -. - -U -n -l -i -k -e - -m -o -s -t - -e -x -- - - - - -i -s -t -i -n -g - -I -E - -r -e -s -e -a -r -c -h -, - -a - -u -s -e -r - -d -o -e -s - -n -o -t - -s -p -e -c -i -f -y - -t -h -e - -t -y -p -e - - - - -o -f - -a -r -t -i -c -l -e -s - -o -r - -i -n -f -o -r -m -a -t -i -o -n - -w -a -n -t -e -d -. - -I -n -s -t -e -a -d -, - -a - -s -y -s -t -e -m - - - - -t -r -i -e -s - -t -o - -ï¬ -n -d - -a -l -l - -t -h -e - -k -i -n -d -s - -o -f - -r -e -l -a -t -i -o -n -s - -t -h -a -t - -a -r -e - -r -e -p -o -r -t -e -d - - - - -m -u -l -t -i -p -l -e - -t -i -m -e -s - -a -n -d - -c -a -n - -b -e - -r -e -p -o -r -t -e -d - -i -n - -t -a -b -u -l -a -r - -f -o -r -m -. - - - - -T -h -i -s - -t -e -c -h -n -i -q -u -e - -w -i -l -l - -o -p -e -n - -u -p - -t -h -e - -p -o -s -s -i -b -i -l -i -t -y - -o -f - -t -r -y -- - - - - -i -n -g - -n -e -w - -I -E - -s -c -e -n -a -r -i -o -s -. - -F -u -r -t -h -e -r -m -o -r -e -, - -t -h -e - -s -y -s -t -e -m - -i -t -s -e -l -f - - - - -c -a -n - -b -e - -u -s -e -d - -a -s - -a -n - -I -E - -s -y -s -t -e -m -, - -s -i -n -c -e - -a -n - -o -b -t -a -i -n -e -d - -r -e -- - - - - -l -a -t -i -o -n - -i -s - -a -l -r -e -a -d -y - -p -r -e -s -e -n -t -e -d - -a -s - -a - -t -a -b -l -e -. - -I -f - -t -h -i -s - -s -y -s -t -e -m - - - - -w -o -r -k -s - -t -o - -a - -c -e -r -t -a -i -n - -e -x -t -e -n -t -, - -t -u -n -i -n -g - -a -n - -I -E - -s -y -s -t -e -m - -b -e -- - - - - -c -o -m -e -s - -a - -s -e -a -r -c -h - -p -r -o -b -l -e -m -: - -a -l -l - -t -h -e - -t -a -b -l -e -s - -a -r -e - -a -l -r -e -a -d -y - - - - -b -u -i -l -t - -“ -p -r -e -e -m -p -t -i -v -e -l -y -. -†- -A - -u -s -e -r - -o -n -l -y - -n -e -e -d -s - -t -o - -s -e -a -r -c -h - - - - -f -o -r - -a - -r -e -l -e -v -a -n -t - -t -a -b -l -e -. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/nonfree/nlp2004slides.html.ref b/samples/nonfree/nlp2004slides.html.ref deleted file mode 100644 index 6685f6f..0000000 --- a/samples/nonfree/nlp2004slides.html.ref +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -
コンパラブルãªæ–°èžè¨˜äº‹ã‹ã‚‰ã® -
固有表ç¾ã®ç™ºè¦‹ -
æ–°å±± ç¥ä»‹ -
関根 è¡ -
Computer Science Department -
New York University -
- -
Page: 1
- diff --git a/samples/nonfree/nlp2004slides.txt.ref b/samples/nonfree/nlp2004slides.txt.ref deleted file mode 100644 index f32a4e7..0000000 --- a/samples/nonfree/nlp2004slides.txt.ref +++ /dev/null @@ -1,9 +0,0 @@ -コンパラブルãªæ–°èžè¨˜äº‹ã‹ã‚‰ã® -固有表ç¾ã®ç™ºè¦‹ - -æ–°å±± ç¥ä»‹ -関根 è¡ -Computer Science Department -New York University - - \ No newline at end of file diff --git a/samples/nonfree/nlp2004slides.xml.ref b/samples/nonfree/nlp2004slides.xml.ref deleted file mode 100644 index b8bc761..0000000 --- a/samples/nonfree/nlp2004slides.xml.ref +++ /dev/null @@ -1,120 +0,0 @@ - - - - - -コ -ン -パ -ラ -ブ -ル -㪠-æ–° -èž -記 -事 -ã‹ -ら -ã® - - - - -固 -有 -表 -ç¾ -ã® -発 -見 - - - - - - -æ–° -å±± - -ç¥ -介 - - - - -é–¢ -æ ¹ - -è¡ - - - - -C -o -m -p -u -t -e -r - -S -c -i -e -n -c -e - -D -e -p -a -r -t -m -e -n -t - - - - -N -e -w - -Y -o -r -k - -U -n -i -v -e -r -s -i -t -y - - - - - - -
- -
- - - - - - -
-
diff --git a/samples/simple1.html.ref b/samples/simple1.html.ref deleted file mode 100644 index d6c3384..0000000 --- a/samples/simple1.html.ref +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -
Hello -
World -
Hello -
World -
H e l l o -
W o r l d -
H e l l o -
W o r l d -
Page: 1
- diff --git a/samples/simple1.txt.ref b/samples/simple1.txt.ref deleted file mode 100644 index 8d35370..0000000 --- a/samples/simple1.txt.ref +++ /dev/null @@ -1,17 +0,0 @@ -Hello - -World - -Hello - -World - -H e l l o - -W o r l d - -H e l l o - -W o r l d - - \ No newline at end of file diff --git a/samples/simple1.xml.ref b/samples/simple1.xml.ref deleted file mode 100644 index b309eec..0000000 --- a/samples/simple1.xml.ref +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -H -e -l -l -o - - - - - - - -W -o -r -l -d - - - - - - -H -e -l -l -o - - - - - - - -W -o -r -l -d - - - - - - -H - -e - -l - -l - -o - - - - - - - - -W - -o - -r - -l - -d - - - - - - -H - -e - -l - -l - -o - - - - - - - - -W - -o - -r - -l - -d - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/simple2.html.ref b/samples/simple2.html.ref deleted file mode 100644 index a7a4ad9..0000000 --- a/samples/simple2.html.ref +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - -
Page: 1
- diff --git a/samples/simple2.txt.ref b/samples/simple2.txt.ref deleted file mode 100644 index 8214d0e..0000000 --- a/samples/simple2.txt.ref +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/samples/simple2.xml.ref b/samples/simple2.xml.ref deleted file mode 100644 index 58d703a..0000000 --- a/samples/simple2.xml.ref +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/samples/simple3.html.ref b/samples/simple3.html.ref deleted file mode 100644 index fe78315..0000000 --- a/samples/simple3.html.ref +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -
World -
orld -
ã‚ã„ã†ãˆãŠã‚ã„ã†ãˆãŠ W -
HelloHello -
Page: 1
- diff --git a/samples/simple3.txt.ref b/samples/simple3.txt.ref deleted file mode 100644 index 8063f26..0000000 --- a/samples/simple3.txt.ref +++ /dev/null @@ -1,9 +0,0 @@ -World - -orld - -ã‚ã„ã†ãˆãŠã‚ã„ã†ãˆãŠ W - -HelloHello - - \ No newline at end of file diff --git a/samples/simple3.xml.ref b/samples/simple3.xml.ref deleted file mode 100644 index bd8d5d2..0000000 --- a/samples/simple3.xml.ref +++ /dev/null @@ -1,72 +0,0 @@ - - - - - -W -o -r -l -d - - - - - - -o -r -l -d - - - - - - -ã‚ -ã„ -ㆠ-㈠-㊠-ã‚ -ã„ -ㆠ-㈠-㊠- -W - - - - - - -H -e -l -l -o -H -e -l -l -o - - - - - - - - - - - - - - - - - - diff --git a/tests/helpers.py b/tests/helpers.py new file mode 100644 index 0000000..b89f1c1 --- /dev/null +++ b/tests/helpers.py @@ -0,0 +1,7 @@ +import os + + +def absolute_sample_path(relative_sample_path): + sample_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../samples')) + sample_file = os.path.join(sample_dir, relative_sample_path) + return sample_file diff --git a/tests/test_encodingdb.py b/tests/test_encodingdb.py index 36e4b11..1c1cc48 100644 --- a/tests/test_encodingdb.py +++ b/tests/test_encodingdb.py @@ -1,5 +1,5 @@ -""" -Tests based on the Adobe Glyph List Specification (https://github.com/adobe-type-tools/agl-specification#2-the-mapping) +"""Tests based on the Adobe Glyph List Specification +See: https://github.com/adobe-type-tools/agl-specification#2-the-mapping While not in the specification, lowercase unicode often occurs in pdf's. Therefore lowercase unittest variants are added. diff --git a/tests/test_pdfdocument.py b/tests/test_pdfdocument.py index 67a5e45..a6ce45b 100644 --- a/tests/test_pdfdocument.py +++ b/tests/test_pdfdocument.py @@ -1,15 +1,16 @@ from nose.tools import raises -from pdfminer.pdftypes import PDFObjectNotFound +from helpers import absolute_sample_path from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfparser import PDFParser +from pdfminer.pdftypes import PDFObjectNotFound class TestPdfDocument(object): @raises(PDFObjectNotFound) def test_get_zero_objid_raises_pdfobjectnotfound(self): - with open('../samples/simple1.pdf', 'rb') as in_file: + with open(absolute_sample_path('simple1.pdf'), 'rb') as in_file: parser = PDFParser(in_file) doc = PDFDocument(parser) - doc.getobj(0) \ No newline at end of file + doc.getobj(0) diff --git a/tests/test_pdfencoding.py b/tests/test_pdfencoding.py index 5878eba..2f8c470 100644 --- a/tests/test_pdfencoding.py +++ b/tests/test_pdfencoding.py @@ -2,12 +2,14 @@ # -*- coding: utf-8 -*- -import nose, logging, os +import nose + from pdfminer.cmapdb import IdentityCMap, CMap, IdentityCMapByte from pdfminer.pdffont import PDFCIDFont from pdfminer.pdftypes import PDFStream from pdfminer.psparser import PSLiteral + class TestPDFEncoding(): def test_cmapname_onebyteidentityV(self): @@ -45,25 +47,25 @@ class TestPDFEncoding(): assert isinstance(font.cmap, IdentityCMap) def test_encoding_identityH_as_PSLiteral_stream(self): - stream = PDFStream({'CMapName':PSLiteral('Identity-H')}, '') + stream = PDFStream({'CMapName': PSLiteral('Identity-H')}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) def test_encoding_identityV_as_PSLiteral_stream(self): - stream = PDFStream({'CMapName':PSLiteral('Identity-V')}, '') + stream = PDFStream({'CMapName': PSLiteral('Identity-V')}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) def test_encoding_identityH_as_stream(self): - stream = PDFStream({'CMapName':'Identity-H'}, '') + stream = PDFStream({'CMapName': 'Identity-H'}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) def test_encoding_identityV_as_stream(self): - stream = PDFStream({'CMapName':'Identity-V'}, '') + stream = PDFStream({'CMapName': 'Identity-V'}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) @@ -79,25 +81,25 @@ class TestPDFEncoding(): assert isinstance(font.cmap, IdentityCMap) def test_encoding_DLIdentH_as_PSLiteral_stream(self): - stream = PDFStream({'CMapName':PSLiteral('DLIdent-H')}, '') + stream = PDFStream({'CMapName': PSLiteral('DLIdent-H')}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) def test_encoding_DLIdentH_as_PSLiteral_stream(self): - stream = PDFStream({'CMapName':PSLiteral('DLIdent-V')}, '') + stream = PDFStream({'CMapName': PSLiteral('DLIdent-V')}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) def test_encoding_DLIdentH_as_stream(self): - stream = PDFStream({'CMapName':'DLIdent-H'}, '') + stream = PDFStream({'CMapName': 'DLIdent-H'}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) def test_encoding_DLIdentV_as_stream(self): - stream = PDFStream({'CMapName':'DLIdent-V'}, '') + stream = PDFStream({'CMapName': 'DLIdent-V'}, '') spec = {'Encoding': stream} font = PDFCIDFont(None, spec) assert isinstance(font.cmap, IdentityCMap) diff --git a/tests/test_pdfminer_ccitt.py b/tests/test_pdfminer_ccitt.py index 9f27833..cd3baa5 100644 --- a/tests/test_pdfminer_ccitt.py +++ b/tests/test_pdfminer_ccitt.py @@ -1,19 +1,9 @@ -#!/usr/bin/env python - -# -*- coding: utf-8 -*- - -from nose.tools import assert_equal, assert_true, assert_false -from nose import SkipTest -import nose - -import logging +from nose.tools import assert_equal from pdfminer.ccitt import * -## Test cases -## -class TestCCITTG4Parser(): +class TestCCITTG4Parser(): def get_parser(self, bits): parser = CCITTG4Parser(len(bits)) parser._curline = [int(c) for c in bits] @@ -163,6 +153,3 @@ class TestCCITTG4Parser(): parser._do_vertical(1) assert_equal(parser._get_bits(), '00000001') return - -if __name__ == '__main__': - nose.runmodule() \ No newline at end of file diff --git a/tests/test_pdfminer_crypto.py b/tests/test_pdfminer_crypto.py index fdabd00..258ac6a 100644 --- a/tests/test_pdfminer_crypto.py +++ b/tests/test_pdfminer_crypto.py @@ -1,52 +1,57 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- +"""Test of various compression/encoding modules (previously in doctests) +""" +import binascii from nose.tools import assert_equal -from nose import SkipTest -import nose -#test of various compression/encoding modules (previously in doctests): -from pdfminer.ascii85 import * from pdfminer.arcfour import * +from pdfminer.ascii85 import * from pdfminer.lzw import * -from pdfminer.runlength import * from pdfminer.rijndael import * +from pdfminer.runlength import * + + +def hex(b): + """encode('hex')""" + return binascii.hexlify(b) + + +def dehex(b): + """decode('hex')""" + return binascii.unhexlify(b) -import binascii -def hex(b): return binascii.hexlify(b) #encode('hex') -def dehex(b): return binascii.unhexlify(b) #decode('hex') class TestAscii85(): def test_ascii85decode(self): - #The sample string is taken from: http://en.wikipedia.org/w/index.php?title=Ascii85 - assert_equal(ascii85decode(b'9jqo^BlbD-BleB1DJ+*+F(f,q'),b'Man is distinguished') - assert_equal(ascii85decode(b'E,9)oF*2M7/c~>'),b'pleasure.') - + """The sample string is taken from: http://en.wikipedia.org/w/index.php?title=Ascii85""" + assert_equal(ascii85decode(b'9jqo^BlbD-BleB1DJ+*+F(f,q'), b'Man is distinguished') + assert_equal(ascii85decode(b'E,9)oF*2M7/c~>'), b'pleasure.') + def test_asciihexdecode(self): - assert_equal(asciihexdecode(b'61 62 2e6364 65'),b'ab.cde') - assert_equal(asciihexdecode(b'61 62 2e6364 657>'),b'ab.cdep') - assert_equal(asciihexdecode(b'7>'),b'p') + assert_equal(asciihexdecode(b'61 62 2e6364 65'), b'ab.cde') + assert_equal(asciihexdecode(b'61 62 2e6364 657>'), b'ab.cdep') + assert_equal(asciihexdecode(b'7>'), b'p') + class TestArcfour(): def test(self): + assert_equal(hex(Arcfour(b'Key').process(b'Plaintext')), b'bbf316e8d940af0ad3') + assert_equal(hex(Arcfour(b'Wiki').process(b'pedia')), b'1021bf0420') + assert_equal(hex(Arcfour(b'Secret').process(b'Attack at dawn')), b'45a01f645fc35b383552544b9bf5') + - assert_equal(hex(Arcfour(b'Key').process(b'Plaintext')),b'bbf316e8d940af0ad3') - assert_equal(hex(Arcfour(b'Wiki').process(b'pedia')),b'1021bf0420') - assert_equal(hex(Arcfour(b'Secret').process(b'Attack at dawn')),b'45a01f645fc35b383552544b9bf5') - class TestLzw(): def test_lzwdecode(self): - assert_equal(lzwdecode(b'\x80\x0b\x60\x50\x22\x0c\x0c\x85\x01'),b'\x2d\x2d\x2d\x2d\x2d\x41\x2d\x2d\x2d\x42') - + assert_equal(lzwdecode(b'\x80\x0b\x60\x50\x22\x0c\x0c\x85\x01'), b'\x2d\x2d\x2d\x2d\x2d\x41\x2d\x2d\x2d\x42') + + class TestRunlength(): def test_rldecode(self): - assert_equal(rldecode(b'\x05123456\xfa7\x04abcde\x80junk'),b'1234567777777abcde') - + assert_equal(rldecode(b'\x05123456\xfa7\x04abcde\x80junk'), b'1234567777777abcde') + + class TestRijndaelEncryptor(): def test_RijndaelEncryptor(self): key = dehex(b'00010203050607080a0b0c0d0f101112') plaintext = dehex(b'506812a45f08c889b97f5980038b8359') - assert_equal(hex(RijndaelEncryptor(key, 128).encrypt(plaintext)),b'd8f532538289ef7d06b506a4fd5be9c9') - -if __name__ == '__main__': - nose.runmodule() \ No newline at end of file + assert_equal(hex(RijndaelEncryptor(key, 128).encrypt(plaintext)), b'd8f532538289ef7d06b506a4fd5be9c9') diff --git a/tests/test_pdfminer_psparser.py b/tests/test_pdfminer_psparser.py index 2cc12ca..a2df3bb 100644 --- a/tests/test_pdfminer_psparser.py +++ b/tests/test_pdfminer_psparser.py @@ -1,20 +1,14 @@ -#!/usr/bin/env python - -# -*- coding: utf-8 -*- - -from nose.tools import assert_equal, assert_true, assert_false -from nose import SkipTest -import nose - import logging +from nose.tools import assert_equal + logger = logging.getLogger(__name__) from pdfminer.psparser import * -## Simplistic Test cases -## + class TestPSBaseParser: + """Simplistic Test cases""" TESTDATA = br'''%!PS begin end @@ -37,29 +31,29 @@ func/a/b{(c)do*}def ''' TOKENS = [ - (5, KWD(b'begin')), (11, KWD(b'end')), (16, KWD(b'"')), (19, KWD(b'@')), - (21, KWD(b'#')), (23, LIT('a')), (25, LIT('BCD')), (30, LIT('Some_Name')), - (41, LIT('foo_xbaa')), (54, 0), (56, 1), (59, -2), (62, 0.5), - (65, 1.234), (71, b'abc'), (77, b''), (80, b'abc ( def ) ghi'), - (98, b'def \x00 4ghi'), (118, b'bach\\slask'), (132, b'foo\nbaa'), - (143, b'this % is not a comment.'), (170, b'foo\nbaa'), (180, b'foobaa'), - (191, b''), (194, b' '), (199, b'@@ '), (211, b'\xab\xcd\x00\x124\x05'), - (226, KWD(b'func')), (230, LIT('a')), (232, LIT('b')), - (234, KWD(b'{')), (235, b'c'), (238, KWD(b'do*')), (241, KWD(b'}')), - (242, KWD(b'def')), (246, KWD(b'[')), (248, 1), (250, b'z'), (254, KWD(b'!')), - (256, KWD(b']')), (258, KWD(b'<<')), (261, LIT('foo')), (266, b'bar'), - (272, KWD(b'>>')) + (5, KWD(b'begin')), (11, KWD(b'end')), (16, KWD(b'"')), (19, KWD(b'@')), + (21, KWD(b'#')), (23, LIT('a')), (25, LIT('BCD')), (30, LIT('Some_Name')), + (41, LIT('foo_xbaa')), (54, 0), (56, 1), (59, -2), (62, 0.5), + (65, 1.234), (71, b'abc'), (77, b''), (80, b'abc ( def ) ghi'), + (98, b'def \x00 4ghi'), (118, b'bach\\slask'), (132, b'foo\nbaa'), + (143, b'this % is not a comment.'), (170, b'foo\nbaa'), (180, b'foobaa'), + (191, b''), (194, b' '), (199, b'@@ '), (211, b'\xab\xcd\x00\x124\x05'), + (226, KWD(b'func')), (230, LIT('a')), (232, LIT('b')), + (234, KWD(b'{')), (235, b'c'), (238, KWD(b'do*')), (241, KWD(b'}')), + (242, KWD(b'def')), (246, KWD(b'[')), (248, 1), (250, b'z'), (254, KWD(b'!')), + (256, KWD(b']')), (258, KWD(b'<<')), (261, LIT('foo')), (266, b'bar'), + (272, KWD(b'>>')) ] OBJS = [ - (23, LIT('a')), (25, LIT('BCD')), (30, LIT('Some_Name')), - (41, LIT('foo_xbaa')), (54, 0), (56, 1), (59, -2), (62, 0.5), - (65, 1.234), (71, b'abc'), (77, b''), (80, b'abc ( def ) ghi'), - (98, b'def \x00 4ghi'), (118, b'bach\\slask'), (132, b'foo\nbaa'), - (143, b'this % is not a comment.'), (170, b'foo\nbaa'), (180, b'foobaa'), - (191, b''), (194, b' '), (199, b'@@ '), (211, b'\xab\xcd\x00\x124\x05'), - (230, LIT('a')), (232, LIT('b')), (234, [b'c']), (246, [1, b'z']), - (258, {'foo': b'bar'}), + (23, LIT('a')), (25, LIT('BCD')), (30, LIT('Some_Name')), + (41, LIT('foo_xbaa')), (54, 0), (56, 1), (59, -2), (62, 0.5), + (65, 1.234), (71, b'abc'), (77, b''), (80, b'abc ( def ) ghi'), + (98, b'def \x00 4ghi'), (118, b'bach\\slask'), (132, b'foo\nbaa'), + (143, b'this % is not a comment.'), (170, b'foo\nbaa'), (180, b'foobaa'), + (191, b''), (194, b' '), (199, b'@@ '), (211, b'\xab\xcd\x00\x124\x05'), + (230, LIT('a')), (232, LIT('b')), (234, [b'c']), (246, [1, b'z']), + (258, {'foo': b'bar'}), ] def get_tokens(self, s): @@ -68,6 +62,7 @@ func/a/b{(c)do*}def class MyParser(PSBaseParser): def flush(self): self.add_results(*self.popall()) + parser = MyParser(BytesIO(s)) r = [] try: @@ -83,6 +78,7 @@ func/a/b{(c)do*}def class MyParser(PSStackParser): def flush(self): self.add_results(*self.popall()) + parser = MyParser(BytesIO(s)) r = [] try: @@ -103,8 +99,3 @@ func/a/b{(c)do*}def logger.info(objs) assert_equal(objs, self.OBJS) return - -if __name__ == '__main__': - #import logging,sys,os,six - #logging.basicConfig(level=logging.DEBUG, filename='%s_%d.%d.log'%(os.path.basename(__file__),sys.version_info[0],sys.version_info[1])) - nose.runmodule() diff --git a/tests/test_tools_dumppdf.py b/tests/test_tools_dumppdf.py index 87d74d2..99f8834 100644 --- a/tests/test_tools_dumppdf.py +++ b/tests/test_tools_dumppdf.py @@ -1,53 +1,37 @@ -#!/usr/bin/env python +from tempfile import NamedTemporaryFile -# -*- coding: utf-8 -*- -import six +from helpers import absolute_sample_path +from tools import dumppdf -import nose, logging, os -if six.PY3: - from tools import dumppdf -elif six.PY2: - import os, sys - sys.path.append(os.path.abspath(os.path.curdir)) - import tools.dumppdf as dumppdf +def run(filename, options=None): + absolute_path = absolute_sample_path(filename) + with NamedTemporaryFile() as output_file: + if options: + s = 'dumppdf -o%s %s %s' % (output_file.name, options, absolute_path) + else: + s = 'dumppdf -o%s %s' % (output_file.name, absolute_path) + dumppdf.main(s.split(' ')) -path=os.path.dirname(os.path.abspath(__file__))+'/' - -def run(datapath,filename,options=None): - i=path+datapath+filename+'.pdf' - o=path+filename+'.xml' - if options: - s='dumppdf -o%s %s %s'%(o,options,i) - else: - s='dumppdf -o%s %s'%(o,i) - dumppdf.main(s.split(' ')) class TestDumpPDF(): - - def test_1(self): - run('../samples/','jo','-t -a') - run('../samples/','simple1','-t -a') - run('../samples/','simple2','-t -a') - run('../samples/','simple3','-t -a') - + run('jo.pdf', '-t -a') + run('simple1.pdf', '-t -a') + run('simple2.pdf', '-t -a') + run('simple3.pdf', '-t -a') + def test_2(self): - run('../samples/nonfree/','dmca','-t -a') - + run('nonfree/dmca.pdf', '-t -a') + def test_3(self): - run('../samples/nonfree/','f1040nr') + run('nonfree/f1040nr.pdf') def test_4(self): - run('../samples/nonfree/','i1040nr') - - def test_5(self): - run('../samples/nonfree/','kampo','-t -a') - - def test_6(self): - run('../samples/nonfree/','naacl06-shinyama','-t -a') + run('nonfree/i1040nr.pdf') -if __name__ == '__main__': - #import logging,sys,os,six - #logging.basicConfig(level=logging.DEBUG, filename='%s_%d.%d.log'%(os.path.basename(__file__),sys.version_info[0],sys.version_info[1])) - nose.runmodule() + def test_5(self): + run('nonfree/kampo.pdf', '-t -a') + + def test_6(self): + run('nonfree/naacl06-shinyama.pdf', '-t -a') diff --git a/tests/test_tools_pdf2txt.py b/tests/test_tools_pdf2txt.py index a4c3ef4..b7bd978 100644 --- a/tests/test_tools_pdf2txt.py +++ b/tests/test_tools_pdf2txt.py @@ -2,93 +2,65 @@ import os from shutil import rmtree from tempfile import NamedTemporaryFile, mkdtemp -import nose - import tools.pdf2txt as pdf2txt +from helpers import absolute_sample_path -def full_path(relative_path_to_this_file): - this_file_dir = os.path.dirname(os.path.abspath(__file__)) - abspath = os.path.abspath(os.path.join(this_file_dir, relative_path_to_this_file)) - return abspath - - - -def run(datapath, filename, options=None): - i = full_path(datapath + filename + '.pdf') - o = full_path(filename + '.txt') - if options: - s = 'pdf2txt -o%s %s %s' % (o, options, i) - else: - s = 'pdf2txt -o%s %s' % (o, i) - pdf2txt.main(s.split(' ')[1:]) +def run(sample_path, options=None): + absolute_path = absolute_sample_path(sample_path) + with NamedTemporaryFile() as output_file: + if options: + s = 'pdf2txt -o %s %s %s' % (output_file.name, options, absolute_path) + else: + s = 'pdf2txt -o %s %s' % (output_file.name, absolute_path) + pdf2txt.main(s.split(' ')[1:]) class TestDumpPDF(): - def test_1(self): - run('../samples/', 'jo') - run('../samples/', 'simple1') - run('../samples/', 'simple2') - run('../samples/', 'simple3') - run('../samples/','sampleOneByteIdentityEncode') + def test_jo(self): + run('jo.pdf') - def test_2(self): - run('../samples/nonfree/', 'dmca') + def test_simple1(self): + run('simple1.pdf') - def test_3(self): - run('../samples/nonfree/', 'f1040nr') + def test_simple2(self): + run('simple2.pdf') - def test_4(self): - run('../samples/nonfree/', 'i1040nr') + def test_simple3(self): + run('simple3.pdf') - def test_5(self): - run('../samples/nonfree/', 'kampo') - - def test_6(self): - run('../samples/nonfree/', 'naacl06-shinyama') - - # this test works on Windows but on Linux & Travis-CI it says - # PDFSyntaxError: No /Root object! - Is this really a PDF? - # TODO: Find why - """ - def test_7(self): - run('../samples/contrib/','stamp-no') - """ - - def test_8(self): - run('../samples/contrib/', '2b', '-A -t xml') - - def test_9(self): - run('../samples/nonfree/', '175') # https://github.com/pdfminer/pdfminer.six/issues/65 - - def test_10(self): - run('../samples/scancode/', 'patchelf') # https://github.com/euske/pdfminer/issues/96 - - -class TestDumpImages(object): - - def extract_images(self, input_file): - output_dir = mkdtemp() - with NamedTemporaryFile() as output_file: - commands = ['-o', output_file.name, '--output-dir', output_dir, input_file] - pdf2txt.main(commands) - image_files = os.listdir(output_dir) - rmtree(output_dir) - return image_files - - def test_nonfree_dmca(self): - """Extract images of pdf containing bmp images - - Regression test for: https://github.com/pdfminer/pdfminer.six/issues/131 - """ - image_files = self.extract_images(full_path('../samples/nonfree/dmca.pdf')) - assert image_files[0].endswith('bmp') + def test_sample_one_byte_identity_encode(self): + run('sampleOneByteIdentityEncode.pdf') def test_nonfree_175(self): - """Extract images of pdf containing jpg images""" - self.extract_images(full_path('../samples/nonfree/175.pdf')) + """Regression test for https://github.com/pdfminer/pdfminer.six/issues/65""" + run('nonfree/175.pdf') + def test_nonfree_dmca(self): + run('nonfree/dmca.pdf') + + def test_nonfree_f1040nr(self): + run('nonfree/f1040nr.pdf') + + def test_nonfree_i1040nr(self): + run('nonfree/i1040nr.pdf') + + def test_nonfree_kampo(self): + run('nonfree/kampo.pdf') + + def test_nonfree_naacl06_shinyama(self): + run('nonfree/naacl06-shinyama.pdf') + + def test_nlp2004slides(self): + run('nonfree/nlp2004slides.pdf') + + def test_contrib_2b(self): + run('contrib/2b.pdf', '-A -t xml') + + def test_scancode_patchelf(self): + """Regression test for # https://github.com/euske/pdfminer/issues/96""" + run('scancode/patchelf.pdf') class TestDumpImages(object): @@ -103,23 +75,30 @@ class TestDumpImages(object): rmtree(output_dir) return image_files + def test_nonfree_dmca(self): + """Extract images of pdf containing bmp images + + Regression test for: https://github.com/pdfminer/pdfminer.six/issues/131 + """ + image_files = self.extract_images(absolute_sample_path('../samples/nonfree/dmca.pdf')) + assert image_files[0].endswith('bmp') + + def test_nonfree_175(self): + """Extract images of pdf containing jpg images""" + self.extract_images(absolute_sample_path('../samples/nonfree/175.pdf')) + def test_jbig2_image_export(self): """Extract images of pdf containing jbig2 images Feature test for: https://github.com/pdfminer/pdfminer.six/pull/46 """ - image_files = self.extract_images(full_path('../samples/contrib/pdf-with-jbig2.pdf')) + image_files = self.extract_images(absolute_sample_path('../samples/contrib/pdf-with-jbig2.pdf')) assert image_files[0].endswith('.jb2') - def test_contrib_matplotlib(self): """Test a pdf with Type3 font""" - run('../samples/contrib/', 'matplotlib') + run('contrib/matplotlib.pdf') def test_nonfree_cmp_itext_logo(self): """Test a pdf with Type3 font""" - run('../samples/nonfree/', 'cmp_itext_logo') - - -if __name__ == '__main__': - nose.runmodule() + run('nonfree/cmp_itext_logo.pdf') diff --git a/tests/test_utils.py b/tests/test_utils.py index e7d9d71..5787ac2 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,7 +1,7 @@ from nose.tools import assert_equal from pdfminer.layout import LTComponent -from pdfminer.utils import make_compat_str, Plane +from pdfminer.utils import Plane class TestPlane(object): @@ -37,4 +37,4 @@ class TestPlane(object): plane = Plane(bounding_box, gridsize) obj = LTComponent((0, 0, object_size, object_size)) plane.add(obj) - return plane, obj \ No newline at end of file + return plane, obj From d88d6020a25c800391789e3a136a802f8fc2d2a0 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Sat, 26 Oct 2019 19:16:37 +0200 Subject: [PATCH 11/21] Remove webapp and other (un)helpful application references: django, cgi, and pyinstaller. (#320) Fixes #314 Fixes #105 --- CHANGELOG.md | 3 + docs/index.html | 2 +- pdfminer/settings.py | 7 -- tools/pdf2html.cgi | 215 ------------------------------------------- tools/pdf2txt.spec | 30 ------ tools/pdfdiff.spec | 29 ------ tools/runapp.py | 114 ----------------------- 7 files changed, 4 insertions(+), 396 deletions(-) delete mode 100755 tools/pdf2html.cgi delete mode 100644 tools/pdf2txt.spec delete mode 100644 tools/pdfdiff.spec delete mode 100755 tools/runapp.py diff --git a/CHANGELOG.md b/CHANGELOG.md index d91d035..26bdd5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Unhandled AssertionError when dumping pdf containing reference to object id 0 ([#318](https://github.com/pdfminer/pdfminer.six/pull/318)) +### Removed +- Files for external applications such as django, cgi and pyinstaller ([#314](https://github.com/pdfminer/pdfminer.six/issues/314)) + ## [20191020] - 2019-10-20 ### Deprecated diff --git a/docs/index.html b/docs/index.html index 8037bf8..6b6857c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -64,7 +64,7 @@ PDF parser that can be used for other purposes than text analysis.
  • CJK languages and vertical writing scripts support.
  • Various font types (Type1, TrueType, Type3, and CID) support.
  • Basic encryption (RC4) support. -
  • PDF to HTML conversion (with a sample converter web app). +
  • PDF to HTML conversion.
  • Outline (TOC) extraction.
  • Tagged contents extraction.
  • Reconstruct the original layout by grouping text chunks. diff --git a/pdfminer/settings.py b/pdfminer/settings.py index 2dd99c0..810077a 100644 --- a/pdfminer/settings.py +++ b/pdfminer/settings.py @@ -1,8 +1 @@ STRICT = False - -try: - from django.conf import settings - STRICT = getattr(settings, 'PDF_MINER_IS_STRICT', STRICT) -except Exception: - # in case it's not a django project - pass diff --git a/tools/pdf2html.cgi b/tools/pdf2html.cgi deleted file mode 100755 index e2ea964..0000000 --- a/tools/pdf2html.cgi +++ /dev/null @@ -1,215 +0,0 @@ -#!/usr/bin/env python -O -# -# pdf2html.cgi - Gateway script for converting PDF into HTML. -# -# Security consideration for public access: -# -# Limit the process size and/or maximum cpu time. -# The process should be chrooted. -# The user should be imposed quota. -# -# How to Setup: -# $ mkdir $CGIDIR -# $ mkdir $CGIDIR/var -# $ python setup.py install_lib --install-dir=$CGIDIR -# $ cp pdfminer/tools/pdf2html.cgi $CGIDIR -# - -import sys, os, os.path, re, time -import cgi, logging, traceback, random -# comment out at this at runtime. -#import cgitb; cgitb.enable() -import pdfminer -from pdfminer.pdfdocument import PDFDocument -from pdfminer.pdfpage import PDFPage -from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter -from pdfminer.converter import HTMLConverter, TextConverter -from pdfminer.layout import LAParams - -import six #Python 2+3 compatibility - -# quote HTML metacharacters -def q(x): - return x.replace('&','&').replace('>','>').replace('<','<').replace('"','"') - -# encode parameters as a URL -Q = re.compile(r'[^a-zA-Z0-9_.-=]') -def url(base, **kw): - r = [] - for (k,v) in six.iteritems(kw): - v = Q.sub(lambda m: '%%%02X' % ord(m.group(0)), encoder(q(v), 'replace')[0]) - r.append('%s=%s' % (k, v)) - return base+'&'.join(r) - - -## convert -## -class FileSizeExceeded(ValueError): pass -def convert(infp, outfp, path, codec='utf-8', - maxpages=0, maxfilesize=0, pagenos=None, - html=True): - # save the input file. - src = open(path, 'wb') - nbytes = 0 - while 1: - data = infp.read(4096) - nbytes += len(data) - if maxfilesize and maxfilesize < nbytes: - raise FileSizeExceeded(maxfilesize) - if not data: break - src.write(data) - src.close() - infp.close() - # perform conversion and - # send the results over the network. - rsrcmgr = PDFResourceManager() - laparams = LAParams() - if html: - device = HTMLConverter(rsrcmgr, outfp, codec=codec, laparams=laparams, - layoutmode='exact') - else: - device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams) - fp = open(path, 'rb') - interpreter = PDFPageInterpreter(rsrcmgr, device) - for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages): - interpreter.process_page(page) - fp.close() - device.close() - return - - -## WebApp -## -class WebApp(object): - - TITLE = 'pdf2html demo' - MAXFILESIZE = 10000000 # set to zero if unlimited. - MAXPAGES = 100 # set to zero if unlimited. - - def __init__(self, infp=sys.stdin, outfp=sys.stdout, environ=os.environ, - codec='utf-8', apppath='/'): - self.infp = infp - self.outfp = outfp - self.environ = environ - self.codec = codec - self.apppath = apppath - self.remote_addr = self.environ.get('REMOTE_ADDR') - self.path_info = self.environ.get('PATH_INFO') - self.method = self.environ.get('REQUEST_METHOD', 'GET').upper() - self.server = self.environ.get('SERVER_SOFTWARE', '') - self.tmpdir = self.environ.get('TEMP', './var/') - self.content_type = 'text/html; charset=%s' % codec - self.logger = logging.getLogger() - return - - def put(self, *args): - for x in args: - if isinstance(x, str): - self.outfp.write(x) - elif isinstance(x, unicode): - self.outfp.write(x.encode(self.codec, 'xmlcharrefreplace')) - return - - def response_200(self): - if self.server.startswith('cgi-httpd'): - # required for cgi-httpd - self.outfp.write('HTTP/1.0 200 OK\r\n') - self.outfp.write('Content-type: %s\r\n' % self.content_type) - self.outfp.write('Connection: close\r\n\r\n') - return - - def response_404(self): - if self.server.startswith('cgi-httpd'): - # required for cgi-httpd - self.outfp.write('HTTP/1.0 404 Not Found\r\n') - self.outfp.write('Content-type: text/html\r\n') - self.outfp.write('Connection: close\r\n\r\n') - self.outfp.write('page does not exist\n') - return - - def response_301(self, url): - if self.server.startswith('cgi-httpd'): - # required for cgi-httpd - self.outfp.write('HTTP/1.0 301 Moved\r\n') - self.outfp.write('Location: %s\r\n\r\n' % url) - return - - def coverpage(self): - self.put( - '%s\n' % q(self.TITLE), - '

    %s


    \n' % q(self.TITLE), - '
    \n' % q(self.apppath), - '

    Upload PDF File: \n', - '  Page numbers (comma-separated):\n', - '\n', - '

    (Text extraction is limited to maximum %d pages.\n' % self.MAXPAGES, - 'Maximum file size for input is %d bytes.)\n' % self.MAXFILESIZE, - '

    \n', - '\n', - '\n', - '


    \n', - '

    Powered by PDFMiner-%s\n' % pdfminer.__version__, - '\n', - ) - return - - def setup(self): - self.run = self.response_404 - status = 404 - if not os.path.isdir(self.tmpdir): - self.logger.error('no tmpdir') - status = 304 - elif self.path_info == self.apppath: - self.run = self.convert - status = 200 - return status - - def convert(self): - form = cgi.FieldStorage(fp=self.infp, environ=self.environ) - if (self.method != 'POST' or - 'c' not in form or - 'f' not in form): - self.response_200() - self.coverpage() - return - item = form['f'] - if not (item.file and item.filename): - self.response_200() - self.coverpage() - return - cmd = form.getvalue('c') - html = (cmd == 'Convert to HTML') - pagenos = [] - if 'p' in form: - for m in re.finditer(r'\d+', form.getvalue('p')): - try: - pagenos.append(int(m.group(0))) - except ValueError: - pass - h = abs(hash((random.random(), self.remote_addr, item.filename))) - tmppath = os.path.join(self.tmpdir, '%08x%08x.pdf' % (time.time(), h)) - self.logger.info('received: host=%s, name=%r, pagenos=%r, tmppath=%r' % - (self.remote_addr, item.filename, pagenos, tmppath)) - try: - if not html: - self.content_type = 'text/plain; charset=%s' % self.codec - self.response_200() - try: - convert(item.file, self.outfp, tmppath, pagenos=pagenos, codec=self.codec, - maxpages=self.MAXPAGES, maxfilesize=self.MAXFILESIZE, html=html) - except Exception as e: - self.put('

    Sorry, an error has occurred: %s' % q(repr(e))) - self.logger.error('convert: %r: path=%r: %s' % (e, traceback.format_exc())) - finally: - try: - os.remove(tmppath) - except: - pass - return - - -# main -if __name__ == '__main__': - app = WebApp() - app.setup() - sys.exit(app.run()) diff --git a/tools/pdf2txt.spec b/tools/pdf2txt.spec deleted file mode 100644 index c0073e6..0000000 --- a/tools/pdf2txt.spec +++ /dev/null @@ -1,30 +0,0 @@ -# -*- mode: python -*- - -block_cipher = None - - -a = Analysis(['pdf2txt.py'], - pathex=['C:\\Dev\\Python\\pdfminer.six\\tools'], - binaries=[], - datas=[], - hiddenimports=[], - hookspath=[], - runtime_hooks=[], - excludes=['django','matplotlib','PIL','numpy','qt5'], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher) - -pyz = PYZ(a.pure, a.zipped_data, - cipher=block_cipher) -exe = EXE(pyz, - a.scripts, - a.binaries, - a.zipfiles, - a.datas, - name='pdf2txt', - debug=False, - strip=False, - upx=True, - runtime_tmpdir=None, - console=True ) diff --git a/tools/pdfdiff.spec b/tools/pdfdiff.spec deleted file mode 100644 index 6872b32..0000000 --- a/tools/pdfdiff.spec +++ /dev/null @@ -1,29 +0,0 @@ -# -*- mode: python -*- - -block_cipher = None - - -a = Analysis(['pdfdiff.py'], - pathex=['C:\\Dev\\Python\\pdfminer.six\\tools'], - binaries=[], - datas=[], - hiddenimports=[], - hookspath=[], - runtime_hooks=[], - excludes=['django','matplotlib','PIL','numpy','qt5'], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher) -pyz = PYZ(a.pure, a.zipped_data, - cipher=block_cipher) -exe = EXE(pyz, - a.scripts, - a.binaries, - a.zipfiles, - a.datas, - name='pdfdiff', - debug=False, - strip=False, - upx=True, - runtime_tmpdir=None, - console=True ) diff --git a/tools/runapp.py b/tools/runapp.py deleted file mode 100755 index 6b953be..0000000 --- a/tools/runapp.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python - -## -## WebApp class runner -## -## usage: -## $ runapp.py pdf2html.cgi -## - -import sys -import urllib -from six.moves.http_client import responses -from six.moves.BaseHTTPServer import HTTPServer -from six.moves.SimpleHTTPServer import SimpleHTTPRequestHandler - -## WebAppHandler -## -class WebAppHandler(SimpleHTTPRequestHandler): - - APP_CLASS = None - - def do_POST(self): - return self.run_cgi() - - def send_head(self): - return self.run_cgi() - - def run_cgi(self): - rest = self.path - i = rest.rfind('?') - if i >= 0: - rest, query = rest[:i], rest[i+1:] - else: - query = '' - i = rest.find('/') - if i >= 0: - script, rest = rest[:i], rest[i:] - else: - script, rest = rest, '' - scriptname = '/' + script - scriptfile = self.translate_path(scriptname) - env = {} - env['SERVER_SOFTWARE'] = self.version_string() - env['SERVER_NAME'] = self.server.server_name - env['GATEWAY_INTERFACE'] = 'CGI/1.1' - env['SERVER_PROTOCOL'] = self.protocol_version - env['SERVER_PORT'] = str(self.server.server_port) - env['REQUEST_METHOD'] = self.command - uqrest = urllib.unquote(rest) - env['PATH_INFO'] = uqrest - env['PATH_TRANSLATED'] = self.translate_path(uqrest) - env['SCRIPT_NAME'] = scriptname - if query: - env['QUERY_STRING'] = query - host = self.address_string() - if host != self.client_address[0]: - env['REMOTE_HOST'] = host - env['REMOTE_ADDR'] = self.client_address[0] - if self.headers.typeheader is None: - env['CONTENT_TYPE'] = self.headers.type - else: - env['CONTENT_TYPE'] = self.headers.typeheader - length = self.headers.getheader('content-length') - if length: - env['CONTENT_LENGTH'] = length - accept = [] - for line in self.headers.getallmatchingheaders('accept'): - if line[:1] in "\t\n\r ": - accept.append(line.strip()) - else: - accept = accept + line[7:].split(',') - env['HTTP_ACCEPT'] = ','.join(accept) - ua = self.headers.getheader('user-agent') - if ua: - env['HTTP_USER_AGENT'] = ua - co = filter(None, self.headers.getheaders('cookie')) - if co: - env['HTTP_COOKIE'] = ', '.join(co) - for k in ('QUERY_STRING', 'REMOTE_HOST', 'CONTENT_LENGTH', - 'HTTP_USER_AGENT', 'HTTP_COOKIE'): - env.setdefault(k, "") - app = self.APP_CLASS(infp=self.rfile, outfp=self.wfile, environ=env) - status = app.setup() - self.send_response(status, responses[status]) - app.run() - return - -# main -def main(argv): - import getopt, imp - def usage(): - print ('usage: %s [-h host] [-p port] [-n name] module.class' % argv[0]) - return 100 - try: - (opts, args) = getopt.getopt(argv[1:], 'h:p:n:') - except getopt.GetoptError: - return usage() - host = '' - port = 8080 - name = 'WebApp' - for (k, v) in opts: - if k == '-h': host = v - elif k == '-p': port = int(v) - elif k == '-n': name = v - if not args: return usage() - path = args.pop(0) - module = imp.load_source('app', path) - WebAppHandler.APP_CLASS = getattr(module, name) - print ('Listening %s:%d...' % (host,port)) - httpd = HTTPServer((host,port), WebAppHandler) - httpd.serve_forever() - return - -if __name__ == '__main__': sys.exit(main(sys.argv)) From a2e6c7c0c914bd75e8f3eb756815cb70ac827537 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Sun, 27 Oct 2019 14:21:47 +0100 Subject: [PATCH 12/21] Move old documentation to subfolder --- docs/{ => old}/cid.obj | 0 docs/{ => old}/cid.png | Bin docs/{ => old}/index.html | 0 docs/{ => old}/layout.obj | 0 docs/{ => old}/layout.png | Bin docs/{ => old}/objrel.obj | 0 docs/{ => old}/objrel.png | Bin docs/{ => old}/programming.html | 0 docs/{ => old}/style.css | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename docs/{ => old}/cid.obj (100%) rename docs/{ => old}/cid.png (100%) rename docs/{ => old}/index.html (100%) rename docs/{ => old}/layout.obj (100%) rename docs/{ => old}/layout.png (100%) rename docs/{ => old}/objrel.obj (100%) rename docs/{ => old}/objrel.png (100%) rename docs/{ => old}/programming.html (100%) rename docs/{ => old}/style.css (100%) diff --git a/docs/cid.obj b/docs/old/cid.obj similarity index 100% rename from docs/cid.obj rename to docs/old/cid.obj diff --git a/docs/cid.png b/docs/old/cid.png similarity index 100% rename from docs/cid.png rename to docs/old/cid.png diff --git a/docs/index.html b/docs/old/index.html similarity index 100% rename from docs/index.html rename to docs/old/index.html diff --git a/docs/layout.obj b/docs/old/layout.obj similarity index 100% rename from docs/layout.obj rename to docs/old/layout.obj diff --git a/docs/layout.png b/docs/old/layout.png similarity index 100% rename from docs/layout.png rename to docs/old/layout.png diff --git a/docs/objrel.obj b/docs/old/objrel.obj similarity index 100% rename from docs/objrel.obj rename to docs/old/objrel.obj diff --git a/docs/objrel.png b/docs/old/objrel.png similarity index 100% rename from docs/objrel.png rename to docs/old/objrel.png diff --git a/docs/programming.html b/docs/old/programming.html similarity index 100% rename from docs/programming.html rename to docs/old/programming.html diff --git a/docs/style.css b/docs/old/style.css similarity index 100% rename from docs/style.css rename to docs/old/style.css From 347c125fb88d0b62d9e0c599e266bf8ca47d915a Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Sun, 27 Oct 2019 14:26:11 +0100 Subject: [PATCH 13/21] Revert "Move old documentation to subfolder" This reverts commit a2e6c7c0 --- docs/{old => }/cid.obj | 0 docs/{old => }/cid.png | Bin docs/{old => }/index.html | 0 docs/{old => }/layout.obj | 0 docs/{old => }/layout.png | Bin docs/{old => }/objrel.obj | 0 docs/{old => }/objrel.png | Bin docs/{old => }/programming.html | 0 docs/{old => }/style.css | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename docs/{old => }/cid.obj (100%) rename docs/{old => }/cid.png (100%) rename docs/{old => }/index.html (100%) rename docs/{old => }/layout.obj (100%) rename docs/{old => }/layout.png (100%) rename docs/{old => }/objrel.obj (100%) rename docs/{old => }/objrel.png (100%) rename docs/{old => }/programming.html (100%) rename docs/{old => }/style.css (100%) diff --git a/docs/old/cid.obj b/docs/cid.obj similarity index 100% rename from docs/old/cid.obj rename to docs/cid.obj diff --git a/docs/old/cid.png b/docs/cid.png similarity index 100% rename from docs/old/cid.png rename to docs/cid.png diff --git a/docs/old/index.html b/docs/index.html similarity index 100% rename from docs/old/index.html rename to docs/index.html diff --git a/docs/old/layout.obj b/docs/layout.obj similarity index 100% rename from docs/old/layout.obj rename to docs/layout.obj diff --git a/docs/old/layout.png b/docs/layout.png similarity index 100% rename from docs/old/layout.png rename to docs/layout.png diff --git a/docs/old/objrel.obj b/docs/objrel.obj similarity index 100% rename from docs/old/objrel.obj rename to docs/objrel.obj diff --git a/docs/old/objrel.png b/docs/objrel.png similarity index 100% rename from docs/old/objrel.png rename to docs/objrel.png diff --git a/docs/old/programming.html b/docs/programming.html similarity index 100% rename from docs/old/programming.html rename to docs/programming.html diff --git a/docs/old/style.css b/docs/style.css similarity index 100% rename from docs/old/style.css rename to docs/style.css From 6cc78ee1249558fa3a5e0cc8f296ed736460905d Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Sun, 27 Oct 2019 21:40:04 +0100 Subject: [PATCH 14/21] Replace opts by argparse in dumppdf.py (#321) Also add multi-character argument names Fixes #175 --- CHANGELOG.md | 3 + tests/test_tools_dumppdf.py | 6 +- tools/dumppdf.py | 210 ++++++++++++++++++++++++------------ 3 files changed, 146 insertions(+), 73 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26bdd5e..6595543 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Unhandled AssertionError when dumping pdf containing reference to object id 0 ([#318](https://github.com/pdfminer/pdfminer.six/pull/318)) +### Changed +- Using argparse instead of getopt for command line interface of dumppdf.py ([#321](https://github.com/pdfminer/pdfminer.six/pull/321)) + ### Removed - Files for external applications such as django, cgi and pyinstaller ([#314](https://github.com/pdfminer/pdfminer.six/issues/314)) diff --git a/tests/test_tools_dumppdf.py b/tests/test_tools_dumppdf.py index 99f8834..b5febb0 100644 --- a/tests/test_tools_dumppdf.py +++ b/tests/test_tools_dumppdf.py @@ -8,10 +8,10 @@ def run(filename, options=None): absolute_path = absolute_sample_path(filename) with NamedTemporaryFile() as output_file: if options: - s = 'dumppdf -o%s %s %s' % (output_file.name, options, absolute_path) + s = 'dumppdf -o %s %s %s' % (output_file.name, options, absolute_path) else: - s = 'dumppdf -o%s %s' % (output_file.name, absolute_path) - dumppdf.main(s.split(' ')) + s = 'dumppdf -o %s %s' % (output_file.name, absolute_path) + dumppdf.main(s.split(' ')[1:]) class TestDumpPDF(): diff --git a/tools/dumppdf.py b/tools/dumppdf.py index 110f196..01654d4 100755 --- a/tools/dumppdf.py +++ b/tools/dumppdf.py @@ -1,32 +1,29 @@ -#!/usr/bin/env python +"""Extract pdf structure in XML format""" +import logging +import os.path +import re +import sys +from argparse import ArgumentParser + +import six -# -# dumppdf.py - dump pdf contents in XML format. -# -# usage: dumppdf.py [options] [files ...] -# options: -# -i objid : object id -# -import sys, os.path, re, logging -from pdfminer.psparser import PSKeyword, PSLiteral, LIT -from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines +from pdfminer.pdfpage import PDFPage +from pdfminer.pdfparser import PDFParser from pdfminer.pdftypes import PDFObjectNotFound, PDFValueError from pdfminer.pdftypes import PDFStream, PDFObjRef, resolve1, stream_value -from pdfminer.pdfpage import PDFPage +from pdfminer.psparser import PSKeyword, PSLiteral, LIT from pdfminer.utils import isnumber - ESC_PAT = re.compile(r'[\000-\037&<>()"\042\047\134\177-\377]') + + def e(s): - if six.PY3 and isinstance(s,six.binary_type): - s=str(s,'latin-1') - return ESC_PAT.sub(lambda m:'&#%d;' % ord(m.group(0)), s) - -import six # Python 2+3 compatibility + if six.PY3 and isinstance(s, six.binary_type): + s = str(s, 'latin-1') + return ESC_PAT.sub(lambda m: '&#%d;' % ord(m.group(0)), s) -# dumpxml def dumpxml(out, obj, codec=None): if obj is None: out.write('') @@ -34,7 +31,7 @@ def dumpxml(out, obj, codec=None): if isinstance(obj, dict): out.write('\n' % len(obj)) - for (k,v) in six.iteritems(obj): + for (k, v) in six.iteritems(obj): out.write('%s\n' % k) out.write('') dumpxml(out, v) @@ -87,7 +84,7 @@ def dumpxml(out, obj, codec=None): raise TypeError(obj) -# dumptrailers + def dumptrailers(out, doc): for xref in doc.xrefs: out.write('\n') @@ -95,7 +92,7 @@ def dumptrailers(out, doc): out.write('\n\n\n') return -# dumpallobjs + def dumpallobjs(out, doc, codec=None): visited = set() out.write('') @@ -110,19 +107,20 @@ def dumpallobjs(out, doc, codec=None): dumpxml(out, obj, codec=codec) out.write('\n\n\n') except PDFObjectNotFound as e: - print >>sys.stderr, 'not found: %r' % e + print('not found: %r' % e) dumptrailers(out, doc) out.write('') return -# dumpoutline + def dumpoutline(outfp, fname, objids, pagenos, password='', dumpall=False, codec=None, extractdir=None): fp = open(fname, 'rb') parser = PDFParser(fp) doc = PDFDocument(parser, password) - pages = dict( (page.pageid, pageno) for (pageno,page) - in enumerate(PDFPage.create_pages(doc), 1) ) + pages = dict((page.pageid, pageno) for (pageno, page) + in enumerate(PDFPage.create_pages(doc), 1)) + def resolve_dest(dest): if isinstance(dest, str): dest = resolve1(doc.get_dest(dest)) @@ -133,10 +131,11 @@ def dumpoutline(outfp, fname, objids, pagenos, password='', if isinstance(dest, PDFObjRef): dest = dest.resolve() return dest + try: outlines = doc.get_outlines() outfp.write('\n') - for (level,title,dest,a,se) in outlines: + for (level, title, dest, a, se) in outlines: pageno = None if dest: dest = resolve_dest(dest) @@ -145,7 +144,8 @@ def dumpoutline(outfp, fname, objids, pagenos, password='', action = a if isinstance(action, dict): subtype = action.get('S') - if subtype and repr(subtype) == '/\'GoTo\'' and action.get('D'): + if subtype and repr(subtype) == '/\'GoTo\'' and action.get( + 'D'): dest = resolve_dest(action['D']) pageno = pages[dest[0].objid] s = e(title).encode('utf-8', 'xmlcharrefreplace') @@ -164,9 +164,11 @@ def dumpoutline(outfp, fname, objids, pagenos, password='', fp.close() return -# extractembedded + LITERAL_FILESPEC = LIT('Filespec') LITERAL_EMBEDDEDFILE = LIT('EmbeddedFile') + + def extractembedded(outfp, fname, objids, pagenos, password='', dumpall=False, codec=None, extractdir=None): def extract1(obj): @@ -184,8 +186,8 @@ def extractembedded(outfp, fname, objids, pagenos, password='', path = os.path.join(extractdir, filename) if os.path.exists(path): raise IOError('file exists: %r' % path) - print >>sys.stderr, 'extracting: %r' % path - out = file(path, 'wb') + print('extracting: %r' % path) + out = open(path, 'wb') out.write(fileobj.get_data()) out.close() return @@ -201,7 +203,7 @@ def extractembedded(outfp, fname, objids, pagenos, password='', fp.close() return -# dumppdf + def dumppdf(outfp, fname, objids, pagenos, password='', dumpall=False, codec=None, extractdir=None): fp = open(fname, 'rb') @@ -212,7 +214,7 @@ def dumppdf(outfp, fname, objids, pagenos, password='', obj = doc.getobj(objid) dumpxml(outfp, obj, codec=codec) if pagenos: - for (pageno,page) in enumerate(PDFPage.create_pages(doc)): + for (pageno, page) in enumerate(PDFPage.create_pages(doc)): if pageno in pagenos: if codec: for obj in page.contents: @@ -225,51 +227,119 @@ def dumppdf(outfp, fname, objids, pagenos, password='', if (not objids) and (not pagenos) and (not dumpall): dumptrailers(outfp, doc) fp.close() - if codec not in ('raw','binary'): + if codec not in ('raw', 'binary'): outfp.write('\n') return -# main -def main(argv): - import getopt - def usage(): - print ('usage: %s [-d] [-a] [-p pageid] [-P password] [-r|-b|-t] [-T] [-E directory] [-i objid] file ...' % argv[0]) - return 100 - try: - (opts, args) = getopt.getopt(argv[1:], 'dap:P:rbtTE:i:o:') - except getopt.GetoptError: - return usage() - if not args: return usage() - objids = [] - pagenos = set() - codec = None - password = '' - dumpall = False - proc = dumppdf - outfp = sys.stdout - extractdir = None - for (k, v) in opts: - if k == '-d': logging.getLogger().setLevel(logging.DEBUG) - elif k == '-o': outfp = open(v, 'w') - elif k == '-i': objids.extend( int(x) for x in v.split(',') ) - elif k == '-p': pagenos.update( int(x)-1 for x in v.split(',') ) - elif k == '-P': password = v - elif k == '-a': dumpall = True - elif k == '-r': codec = 'raw' - elif k == '-b': codec = 'binary' - elif k == '-t': codec = 'text' - elif k == '-T': proc = dumpoutline - elif k == '-E': - extractdir = v - proc = extractembedded +def create_parser(): + parser = ArgumentParser(description=__doc__, add_help=True) + parser.add_argument('files', type=str, default=None, nargs='+', + help='One or more paths to PDF files.') + parser.add_argument( + '-d', '--debug', default=False, action='store_true', + help='Use debug logging level.') + procedure_parser = parser.add_mutually_exclusive_group() + procedure_parser.add_argument( + '-T', '--extract-toc', default=False, action='store_true', + help='Extract structure of outline') + procedure_parser.add_argument( + '-E', '--extract-embedded', type=str, + help='Extract embedded files') + + parse_params = parser.add_argument_group( + 'Parser', description='Used during PDF parsing') + parse_params.add_argument( + "--page-numbers", type=int, default=None, nargs="+", + help="A space-seperated list of page numbers to parse.") + parse_params.add_argument( + "-p", "--pagenos", type=str, + help="A comma-separated list of page numbers to parse. Included for " + "legacy applications, use --page-numbers for more idiomatic " + "argument entry.") + parse_params.add_argument( + '-i', '--objects', type=str, + help='Comma separated list of object numbers to extract') + parse_params.add_argument( + '-a', '--all', default=False, action='store_true', + help='If the structure of all objects should be extracted') + parse_params.add_argument( + '-P', '--password', type=str, default='', + help='The password to use for decrypting PDF file.') + + output_params = parser.add_argument_group( + 'Output', description='Used during output generation.') + output_params.add_argument( + '-o', '--outfile', type=str, default='-', + help='Path to file where output is written. Or "-" (default) to ' + 'write to stdout.') + codec_parser = output_params.add_mutually_exclusive_group() + codec_parser.add_argument( + '-r', '--raw-stream', default=False, action='store_true', + help='Write stream objects without encoding') + codec_parser.add_argument( + '-b', '--binary-stream', default=False, action='store_true', + help='Write stream objects with binary encoding') + codec_parser.add_argument( + '-t', '--text-stream', default=False, action='store_true', + help='Write stream objects as plain text') + + return parser + + +def main(argv=None): + parser = create_parser() + args = parser.parse_args(args=argv) + + if args.debug: + logging.getLogger().setLevel(logging.DEBUG) + + if args.outfile == '-': + outfp = sys.stdout + else: + outfp = open(args.outfile, 'w') + + if args.objects: + objids = [int(x) for x in args.objects.split(',')] + else: + objids = [] + + if args.page_numbers: + pagenos = {x - 1 for x in args.page_numbers} + elif args.pagenos: + pagenos = {int(x) - 1 for x in args.pagenos.split(',')} + else: + pagenos = set() + + password = args.password if six.PY2 and sys.stdin.encoding: password = password.decode(sys.stdin.encoding) - for fname in args: + if args.raw_stream: + codec = 'raw' + elif args.binary_stream: + codec = 'binary' + elif args.text_stream: + codec = 'text' + else: + codec = None + + if args.extract_toc: + extractdir = None + proc = dumpoutline + elif args.extract_embedded: + extractdir = args.extract_embedded + proc = extractembedded + else: + extractdir = None + proc = dumppdf + + for fname in args.files: proc(outfp, fname, objids, pagenos, password=password, - dumpall=dumpall, codec=codec, extractdir=extractdir) + dumpall=args.all, codec=codec, extractdir=extractdir) outfp.close() -if __name__ == '__main__': sys.exit(main(sys.argv)) + +if __name__ == '__main__': + sys.exit(main()) From 44b223cf0a3b29bc1f0c3ece71c483a22b71614d Mon Sep 17 00:00:00 2001 From: Jianfeng Date: Thu, 31 Oct 2019 16:22:58 +0800 Subject: [PATCH 15/21] Speedup grouping of textboxes (#315) Changed: using a heap instead of a SortedList and avoid rebuilding the heap in each iteration Changed: avoid potentially huge number of variable assignments in list comprehension. Changed: avoid repeatly evaluating `obj is obj` in list comprehension by storing id(obj). --- CHANGELOG.md | 1 + pdfminer/layout.py | 74 +++++++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6595543..e79fdcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Using argparse instead of getopt for command line interface of dumppdf.py ([#321](https://github.com/pdfminer/pdfminer.six/pull/321)) +- Refactor `LTLayoutContainer.group_textboxes` for a significant speed up in layout analysis ([#315](https://github.com/pdfminer/pdfminer.six/pull/315)) ### Removed - Files for external applications such as django, cgi and pyinstaller ([#314](https://github.com/pdfminer/pdfminer.six/issues/314)) diff --git a/pdfminer/layout.py b/pdfminer/layout.py index ba9a2bf..4ae7822 100644 --- a/pdfminer/layout.py +++ b/pdfminer/layout.py @@ -1,5 +1,4 @@ -from sortedcontainers import SortedListWithKey - +import heapq from .utils import INF from .utils import Plane from .utils import get_bound @@ -603,9 +602,22 @@ class LTLayoutContainer(LTContainer): yield box return - # group_textboxes: group textboxes hierarchically. def group_textboxes(self, laparams, boxes): - assert boxes, str((laparams, boxes)) + """Group textboxes hierarchically. + + Get pair-wise distances, via dist func defined below, and then merge from the closest textbox pair. Once + obj1 and obj2 are merged / grouped, the resulting group is considered as a new object, and its distances to + other objects & groups are added to the process queue. + + For performance reason, pair-wise distances and object pair info are maintained in a heap of + (idx, dist, id(obj1), id(obj2), obj1, obj2) tuples. It ensures quick access to the smallest element. Note that + since comparison operators, e.g., __lt__, are disabled for LTComponent, id(obj) has to appear before obj in + element tuples. + + :param laparams: LAParams object. + :param boxes: All textbox objects to be grouped. + :return: a list that has only one element, the final top level textbox. + """ def dist(obj1, obj2): """A distance function between two TextBoxes. @@ -626,8 +638,7 @@ class LTLayoutContainer(LTContainer): return ((x1-x0)*(y1-y0) - obj1.width*obj1.height - obj2.width*obj2.height) def isany(obj1, obj2): - """Check if there's any other object between obj1 and obj2. - """ + """Check if there's any other object between obj1 and obj2.""" x0 = min(obj1.x0, obj2.x0) y0 = min(obj1.y0, obj2.y0) x1 = max(obj1.x1, obj2.x1) @@ -635,39 +646,36 @@ class LTLayoutContainer(LTContainer): objs = set(plane.find((x0, y0, x1, y1))) return objs.difference((obj1, obj2)) - def key_obj(t): - (c,d,_,_) = t - return (c,d) - - dists = SortedListWithKey(key=key_obj) + dists = [] for i in range(len(boxes)): obj1 = boxes[i] for j in range(i+1, len(boxes)): obj2 = boxes[j] - dists.add((0, dist(obj1, obj2), obj1, obj2)) + dists.append((True, dist(obj1, obj2), id(obj1), id(obj2), obj1, obj2)) + heapq.heapify(dists) + plane = Plane(self.bbox) plane.extend(boxes) - while dists: - (c, d, obj1, obj2) = dists.pop(0) - if c == 0 and isany(obj1, obj2): - dists.add((1, d, obj1, obj2)) - continue - if (isinstance(obj1, (LTTextBoxVertical, LTTextGroupTBRL)) or - isinstance(obj2, (LTTextBoxVertical, LTTextGroupTBRL))): - group = LTTextGroupTBRL([obj1, obj2]) - else: - group = LTTextGroupLRTB([obj1, obj2]) - plane.remove(obj1) - plane.remove(obj2) - removed = [obj1, obj2] - to_remove = [ (c,d,obj1,obj2) for (c,d,obj1,obj2) in dists - if (obj1 in removed or obj2 in removed) ] - for r in to_remove: - dists.remove(r) - for other in plane: - dists.add((0, dist(group, other), group, other)) - plane.add(group) - assert len(plane) == 1, str(len(plane)) + done = set() + while len(dists) > 0: + (is_first, d, id1, id2, obj1, obj2) = heapq.heappop(dists) + # Skip objects that are already merged + if (id1 not in done) and (id2 not in done): + if is_first and isany(obj1, obj2): + heapq.heappush(dists, (False, d, id1, id2, obj1, obj2)) + continue + if isinstance(obj1, (LTTextBoxVertical, LTTextGroupTBRL)) or \ + isinstance(obj2, (LTTextBoxVertical, LTTextGroupTBRL)): + group = LTTextGroupTBRL([obj1, obj2]) + else: + group = LTTextGroupLRTB([obj1, obj2]) + plane.remove(obj1) + plane.remove(obj2) + done.update([id1, id2]) + + for other in plane: + heapq.heappush(dists, (False, dist(group, other), id(group), id(other), group, other)) + plane.add(group) return list(plane) def analyze(self, laparams): From 33b16b3f072cd1e839a859878f546a3128cc9e99 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Sat, 2 Nov 2019 10:29:39 +0100 Subject: [PATCH 16/21] Deprecate the use of _py2_no_more_posargs (#328) Fixes #324 --- CHANGELOG.md | 5 +++++ pdfminer/high_level.py | 10 ++++++++-- tools/pdf2txt.py | 12 ++++++++---- tools/pdfdiff.py | 24 ++++++++++++++---------- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e79fdcc..0d6e1e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +### Deprecated +- The argument `_py2_no_more_posargs` because Python2 is removed on January +, 2020 ([#328](https://github.com/pdfminer/pdfminer.six/pull/328) and +[#307](https://github.com/pdfminer/pdfminer.six/pull/307)) + ### Added - Support for extracting JBIG2 encoded images ([#311](https://github.com/pdfminer/pdfminer.six/pull/311) and [#46](https://github.com/pdfminer/pdfminer.six/pull/46)) diff --git a/pdfminer/high_level.py b/pdfminer/high_level.py index cdef1e7..ecc934f 100644 --- a/pdfminer/high_level.py +++ b/pdfminer/high_level.py @@ -18,11 +18,10 @@ from .image import ImageWriter def extract_text_to_fp(inf, outfp, - _py2_no_more_posargs=None, # Bloody Python2 needs a shim output_type='text', codec='utf-8', laparams = None, maxpages=0, page_numbers=None, password="", scale=1.0, rotation=0, layoutmode='normal', output_dir=None, strip_control=False, - debug=False, disable_caching=False, **other): + debug=False, disable_caching=False, **kwargs): """ Parses text from inf-file and writes to outfp file-like object. Takes loads of optional arguments but the defaults are somewhat sane. @@ -44,6 +43,13 @@ def extract_text_to_fp(inf, outfp, debug: Output more logging data disable_caching: Does what it says on the tin """ + if '_py2_no_more_posargs' in kwargs is not None: + raise DeprecationWarning( + 'The `_py2_no_more_posargs will be removed on January, 2020. At ' + 'that moment pdfminer.six will stop supporting Python 2. Please ' + 'upgrade to Python 3. For more information see ' + 'https://github.com/pdfminer/pdfminer .six/issues/194') + if six.PY2 and sys.stdin.encoding: password = password.decode(sys.stdin.encoding) diff --git a/tools/pdf2txt.py b/tools/pdf2txt.py index 436cc97..f243601 100755 --- a/tools/pdf2txt.py +++ b/tools/pdf2txt.py @@ -15,15 +15,19 @@ from pdfminer.image import ImageWriter def extract_text(files=[], outfile='-', - _py2_no_more_posargs=None, # Bloody Python2 needs a shim no_laparams=False, all_texts=None, detect_vertical=None, # LAParams word_margin=None, char_margin=None, line_margin=None, boxes_flow=None, # LAParams output_type='text', codec='utf-8', strip_control=False, maxpages=0, page_numbers=None, password="", scale=1.0, rotation=0, layoutmode='normal', output_dir=None, debug=False, - disable_caching=False, **other): - if _py2_no_more_posargs is not None: - raise ValueError("Too many positional arguments passed.") + disable_caching=False, **kwargs): + if '_py2_no_more_posargs' in kwargs is not None: + raise DeprecationWarning( + 'The `_py2_no_more_posargs will be removed on January, 2020. At ' + 'that moment pdfminer.six will stop supporting Python 2. Please ' + 'upgrade to Python 3. For more information see ' + 'https://github.com/pdfminer/pdfminer .six/issues/194') + if not files: raise ValueError("Must provide files to work upon!") diff --git a/tools/pdfdiff.py b/tools/pdfdiff.py index f5b8ac4..bb7b47a 100644 --- a/tools/pdfdiff.py +++ b/tools/pdfdiff.py @@ -11,28 +11,32 @@ pdfminer.settings.STRICT = False import pdfminer.high_level import pdfminer.layout -def compare(file1,file2,**args): - if args.get('_py2_no_more_posargs',None) is not None: - raise ValueError("Too many positional arguments passed.") +def compare(file1, file2, **kwargs): + if '_py2_no_more_posargs' in kwargs is not None: + raise DeprecationWarning( + 'The `_py2_no_more_posargs will be removed on January, 2020. At ' + 'that moment pdfminer.six will stop supporting Python 2. Please ' + 'upgrade to Python 3. For more information see ' + 'https://github.com/pdfminer/pdfminer .six/issues/194') # If any LAParams group arguments were passed, create an LAParams object and # populate with given args. Otherwise, set it to None. - if args.get('laparams',None) is None: + if kwargs.get('laparams', None) is None: laparams = pdfminer.layout.LAParams() for param in ("all_texts", "detect_vertical", "word_margin", "char_margin", "line_margin", "boxes_flow"): - paramv = args.get(param, None) + paramv = kwargs.get(param, None) if paramv is not None: laparams[param]=paramv - args['laparams']=laparams + kwargs['laparams']=laparams s1=six.StringIO() with open(file1, "rb") as fp: - pdfminer.high_level.extract_text_to_fp(fp,s1, **args) + pdfminer.high_level.extract_text_to_fp(fp, s1, **kwargs) s2=six.StringIO() with open(file2, "rb") as fp: - pdfminer.high_level.extract_text_to_fp(fp,s2, **args) + pdfminer.high_level.extract_text_to_fp(fp, s2, **kwargs) import difflib s1.seek(0) @@ -41,12 +45,12 @@ def compare(file1,file2,**args): import os.path try: - extension = os.path.splitext(args['outfile'])[1][1:4] + extension = os.path.splitext(kwargs['outfile'])[1][1:4] if extension.lower()=='htm': return difflib.HtmlDiff().make_file(s1,s2) except KeyError: pass - return difflib.unified_diff(s1,s2,n=args['context_lines']) + return difflib.unified_diff(s1, s2, n=kwargs['context_lines']) # main From ed1b09c6f27aba97bb4632c3a26586fe59c82792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Haso=C5=88?= Date: Wed, 6 Nov 2019 21:47:19 +0100 Subject: [PATCH 17/21] Fix debug logging for pdf2txt.py and dumppdf.py (#325) Fixes #313 --- pdfminer/high_level.py | 4 ++++ tools/dumppdf.py | 2 ++ tools/pdf2txt.py | 3 +++ tools/pdfdiff.py | 6 +++++- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pdfminer/high_level.py b/pdfminer/high_level.py index ecc934f..8728319 100644 --- a/pdfminer/high_level.py +++ b/pdfminer/high_level.py @@ -4,6 +4,7 @@ Functions that encapsulate "usual" use-cases for pdfminer, for use making bundled scripts and for using pdfminer as a module for routine tasks. """ +import logging import six import sys @@ -50,6 +51,9 @@ def extract_text_to_fp(inf, outfp, 'upgrade to Python 3. For more information see ' 'https://github.com/pdfminer/pdfminer .six/issues/194') + if debug: + logging.getLogger().setLevel(logging.DEBUG) + if six.PY2 and sys.stdin.encoding: password = password.decode(sys.stdin.encoding) diff --git a/tools/dumppdf.py b/tools/dumppdf.py index 01654d4..0e3a4ee 100755 --- a/tools/dumppdf.py +++ b/tools/dumppdf.py @@ -15,6 +15,8 @@ from pdfminer.pdftypes import PDFStream, PDFObjRef, resolve1, stream_value from pdfminer.psparser import PSKeyword, PSLiteral, LIT from pdfminer.utils import isnumber +logging.basicConfig() + ESC_PAT = re.compile(r'[\000-\037&<>()"\042\047\134\177-\377]') diff --git a/tools/pdf2txt.py b/tools/pdf2txt.py index f243601..41a7e7e 100755 --- a/tools/pdf2txt.py +++ b/tools/pdf2txt.py @@ -7,12 +7,15 @@ import argparse import logging import six import sys + import pdfminer.settings pdfminer.settings.STRICT = False import pdfminer.high_level import pdfminer.layout from pdfminer.image import ImageWriter +logging.basicConfig() + def extract_text(files=[], outfile='-', no_laparams=False, all_texts=None, detect_vertical=None, # LAParams diff --git a/tools/pdfdiff.py b/tools/pdfdiff.py index bb7b47a..e738b75 100644 --- a/tools/pdfdiff.py +++ b/tools/pdfdiff.py @@ -11,6 +11,8 @@ pdfminer.settings.STRICT = False import pdfminer.high_level import pdfminer.layout +logging.basicConfig() + def compare(file1, file2, **kwargs): if '_py2_no_more_posargs' in kwargs is not None: @@ -89,10 +91,12 @@ def main(args=None): P.add_argument("-O", "--output-dir", default=None, help="Output directory for images") P.add_argument("-C", "--disable-caching", default=False, action="store_true", help="Disable caching") P.add_argument("-S", "--strip-control", default=False, action="store_true", help="Strip control in XML mode") - A = P.parse_args(args=args) + if A.debug: + logging.getLogger().setLevel(logging.DEBUG) + if A.page_numbers: A.page_numbers = set([x-1 for x in A.page_numbers]) if A.pagenos: From 548b933a84fef9fe2c21c78702fae0cc8a713923 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Wed, 6 Nov 2019 21:51:34 +0100 Subject: [PATCH 18/21] Add line to CHANGELOG.md for #325 --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e79fdcc..be02dce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Support for extracting JBIG2 encoded images ([#311](https://github.com/pdfminer/pdfminer.six/pull/311) and [#46](https://github.com/pdfminer/pdfminer.six/pull/46)) ### Fixed -- Unhandled AssertionError when dumping pdf containing reference to object id 0 ([#318](https://github.com/pdfminer/pdfminer.six/pull/318)) +- Unhandled AssertionError when dumping pdf containing reference to object id 0 + ([#318](https://github.com/pdfminer/pdfminer.six/pull/318)) +- Debug flag actually changes logging level to debug for pdf2txt.py and + dumppdf.py ([#325](https://github.com/pdfminer/pdfminer.six/pull/325)) ### Changed - Using argparse instead of getopt for command line interface of dumppdf.py ([#321](https://github.com/pdfminer/pdfminer.six/pull/321)) From 40aa2533c98fb9c6b700891356e638bd6821ad13 Mon Sep 17 00:00:00 2001 From: Igor Moura Date: Thu, 7 Nov 2019 03:54:10 -0300 Subject: [PATCH 19/21] Added: simple wrapper to extract text from pdf (#330) Fixes #327 --- CHANGELOG.md | 1 + pdfminer/high_level.py | 45 +++++++++++++++++++++++++++++ tests/test_highlevel_extracttext.py | 38 ++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 tests/test_highlevel_extracttext.py diff --git a/CHANGELOG.md b/CHANGELOG.md index b8cc655..db72a80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#307](https://github.com/pdfminer/pdfminer.six/pull/307)) ### Added +- Simple wrapper to easily extract text from a PDF file [#330](https://github.com/pdfminer/pdfminer.six/pull/330) - Support for extracting JBIG2 encoded images ([#311](https://github.com/pdfminer/pdfminer.six/pull/311) and [#46](https://github.com/pdfminer/pdfminer.six/pull/46)) ### Fixed diff --git a/pdfminer/high_level.py b/pdfminer/high_level.py index 8728319..2ce4276 100644 --- a/pdfminer/high_level.py +++ b/pdfminer/high_level.py @@ -8,6 +8,12 @@ import logging import six import sys +# Conditional import because python 2 is stupid +if sys.version_info > (3, 0): + from io import StringIO +else: + from io import BytesIO as StringIO + from .pdfdocument import PDFDocument from .pdfparser import PDFParser from .pdfinterp import PDFResourceManager, PDFPageInterpreter @@ -16,6 +22,7 @@ from .pdfpage import PDFPage from .converter import XMLConverter, HTMLConverter, TextConverter from .cmapdb import CMapDB from .image import ImageWriter +from .layout import LAParams def extract_text_to_fp(inf, outfp, @@ -92,3 +99,41 @@ def extract_text_to_fp(inf, outfp, interpreter.process_page(page) device.close() + + +def extract_text(pdf_file, password='', page_numbers=None, maxpages=0, + caching=True, codec='utf-8', laparams=None): + """ + Parses and returns the text contained in a PDF file. + Takes loads of optional arguments but the defaults are somewhat sane. + Returns a string containing all of the text extracted. + + :param pdf_file: Path to the PDF file to be worked on + :param password: For encrypted PDFs, the password to decrypt. + :param page_numbers: List of zero-indexed page numbers to extract. + :param maxpages: The maximum number of pages to parse + :param caching: If resources should be cached + :param codec: Text decoding codec + :param laparams: LAParams object from pdfminer.layout. + """ + if laparams is None: + laparams = LAParams() + + with open(pdf_file, "rb") as fp, StringIO() as output_string: + rsrcmgr = PDFResourceManager() + device = TextConverter(rsrcmgr, output_string, codec=codec, + laparams=laparams) + interpreter = PDFPageInterpreter(rsrcmgr, device) + + for page in PDFPage.get_pages( + fp, + page_numbers, + maxpages=maxpages, + password=password, + caching=caching, + check_extractable=True, + ): + interpreter.process_page(page) + + return output_string.getvalue() + diff --git a/tests/test_highlevel_extracttext.py b/tests/test_highlevel_extracttext.py new file mode 100644 index 0000000..7062cd8 --- /dev/null +++ b/tests/test_highlevel_extracttext.py @@ -0,0 +1,38 @@ +import unittest + +from helpers import absolute_sample_path +from pdfminer.high_level import extract_text + + +def run(sample_path): + absolute_path = absolute_sample_path(sample_path) + s = extract_text(absolute_path) + return s + + +test_strings = { + "simple1.pdf": "Hello \n\nWorld\n\nWorld\n\nHello \n\nH e l l o \n\nH e l l o \n\nW o r l d\n\nW o r l d\n\n\f", + "simple2.pdf": "\f", + "simple3.pdf": "HelloHello\n\nWorld\n\nWorld\n\n\f", +} + + +class TestExtractText(unittest.TestCase): + def test_simple1(self): + test_file = "simple1.pdf" + s = run(test_file) + self.assertEqual(s, test_strings[test_file]) + + def test_simple2(self): + test_file = "simple2.pdf" + s = run(test_file) + self.assertEqual(s, test_strings[test_file]) + + def test_simple3(self): + test_file = "simple3.pdf" + s = run(test_file) + self.assertEqual(s, test_strings[test_file]) + + +if __name__ == "__main__": + unittest.main() From bc034c8e59d90e9b2cb8697a1d2fe9a33401761e Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Thu, 7 Nov 2019 21:12:34 +0100 Subject: [PATCH 20/21] Create sphinx documentation for Read the Docs (#329) Fixes #171 Fixes #199 Fixes #118 Fixes #178 Added: tests for building documentation and example code in documentation Added: docstrings for common used functions and classes Removed: old documentation --- .travis.yml | 2 +- CHANGELOG.md | 3 + README.md | 68 +-- docs/.gitignore | 1 + docs/Makefile | 20 + docs/cid.obj | 225 --------- docs/cid.png | Bin 2689 -> 0 bytes docs/index.html | 427 ------------------ docs/layout.obj | 391 ---------------- docs/make.bat | 35 ++ docs/objrel.obj | 187 -------- docs/objrel.png | Bin 2038 -> 0 bytes docs/programming.html | 223 --------- docs/requirements.txt | 1 + docs/source/_static/layout_analysis.html | 28 ++ .../_static/layout_analysis_group_boxes.html | 23 + .../_static/layout_analysis_group_lines.html | 45 ++ .../_static/layout_analysis_output.png} | Bin docs/source/api/commandline.rst | 25 + docs/source/api/composable.rst | 20 + docs/source/api/highlevel.rst | 21 + docs/source/api/index.rst | 9 + docs/source/conf.py | 61 +++ docs/source/index.rst | 72 +++ docs/source/topics/converting_pdf_to_text.rst | 132 ++++++ docs/source/topics/index.rst | 7 + docs/source/tutorials/commandline.rst | 41 ++ docs/source/tutorials/composable.rst | 33 ++ docs/source/tutorials/highlevel.rst | 67 +++ docs/source/tutorials/index.rst | 9 + docs/style.css | 4 - pdfminer/converter.py | 3 + pdfminer/high_level.py | 54 ++- pdfminer/layout.py | 141 +++--- pdfminer/pdfdevice.py | 6 +- pdfminer/pdfinterp.py | 3 +- setup.py | 5 +- tools/dumppdf.py | 32 +- tools/pdf2txt.py | 94 ++-- tox.ini | 11 +- 40 files changed, 879 insertions(+), 1650 deletions(-) create mode 100644 docs/.gitignore create mode 100644 docs/Makefile delete mode 100644 docs/cid.obj delete mode 100644 docs/cid.png delete mode 100644 docs/index.html delete mode 100644 docs/layout.obj create mode 100644 docs/make.bat delete mode 100644 docs/objrel.obj delete mode 100644 docs/objrel.png delete mode 100644 docs/programming.html create mode 100644 docs/requirements.txt create mode 100644 docs/source/_static/layout_analysis.html create mode 100644 docs/source/_static/layout_analysis_group_boxes.html create mode 100644 docs/source/_static/layout_analysis_group_lines.html rename docs/{layout.png => source/_static/layout_analysis_output.png} (100%) create mode 100644 docs/source/api/commandline.rst create mode 100644 docs/source/api/composable.rst create mode 100644 docs/source/api/highlevel.rst create mode 100644 docs/source/api/index.rst create mode 100644 docs/source/conf.py create mode 100644 docs/source/index.rst create mode 100644 docs/source/topics/converting_pdf_to_text.rst create mode 100644 docs/source/topics/index.rst create mode 100644 docs/source/tutorials/commandline.rst create mode 100644 docs/source/tutorials/composable.rst create mode 100644 docs/source/tutorials/highlevel.rst create mode 100644 docs/source/tutorials/index.rst delete mode 100644 docs/style.css diff --git a/.travis.yml b/.travis.yml index 7fdc03c..319aa54 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,4 +9,4 @@ python: install: - pip install tox-travis script: - - tox + - tox -r diff --git a/CHANGELOG.md b/CHANGELOG.md index db72a80..859d9c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Simple wrapper to easily extract text from a PDF file [#330](https://github.com/pdfminer/pdfminer.six/pull/330) - Support for extracting JBIG2 encoded images ([#311](https://github.com/pdfminer/pdfminer.six/pull/311) and [#46](https://github.com/pdfminer/pdfminer.six/pull/46)) +- Sphinx documentation that is published on + [Read the Docs](https://pdfminersix.readthedocs.io/) + ([#329](https://github.com/pdfminer/pdfminer.six/pull/329)) ### Fixed - Unhandled AssertionError when dumping pdf containing reference to object id 0 diff --git a/README.md b/README.md index fae5fb0..6ea2015 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,22 @@ -PDFMiner.six +pdfminer.six ============ -PDFMiner.six is a fork of PDFMiner using six for Python 2+3 compatibility +[![Build Status](https://travis-ci.org/pdfminer/pdfminer.six.svg?branch=master)](https://travis-ci.org/pdfminer/pdfminer.six) +[![PyPI version](https://img.shields.io/pypi/v/pdfminer.six.svg)](https://pypi.python.org/pypi/pdfminer.six/) +[![gitter](https://badges.gitter.im/pdfminer-six/Lobby.svg)](https://gitter.im/pdfminer-six/Lobby?utm_source=badge&utm_medium) -[![Build Status](https://travis-ci.org/pdfminer/pdfminer.six.svg?branch=master)](https://travis-ci.org/pdfminer/pdfminer.six) [![PyPI version](https://img.shields.io/pypi/v/pdfminer.six.svg)](https://pypi.python.org/pypi/pdfminer.six/) - -PDFMiner is a tool for extracting information from PDF documents. +Pdfminer.six is an community maintained fork of the original PDFMiner. It is a +tool for extracting information from PDF documents. Unlike other PDF-related tools, it focuses entirely on getting -and analyzing text data. PDFMiner allows one to obtain +and analyzing text data. Pdfminer.six allows one to obtain the exact location of text in a page, as well as other information such as fonts or lines. It includes a PDF converter that can transform PDF files into other text formats (such as HTML). It has an extensible PDF parser that can be used for other purposes than text analysis. - * Webpage: https://github.com/pdfminer/ - * Download (PyPI): https://pypi.python.org/pypi/pdfminer.six/ +Check out the full documentation on +[Read the Docs](https://pdfminersix.readthedocs.io). Features @@ -33,53 +34,20 @@ Features * Automatic layout analysis. -How to Install --------------- +How to use +---------- - * Install Python 2.7 or newer. - * Install + * Install Python 2.7 or newer. Note that Python 2 support is dropped at + January, 2020. `pip install pdfminer.six` - * Run the following test: + * Use command-line interface to extract text from pdf: - `pdf2txt.py samples/simple1.pdf` - - -Command Line Tools ------------------- - -PDFMiner comes with two handy tools: -pdf2txt.py and dumppdf.py. - -**pdf2txt.py** - -pdf2txt.py extracts text contents from a PDF file. -It extracts all the text that are to be rendered programmatically, -i.e. text represented as ASCII or Unicode strings. -It cannot recognize text drawn as images that would require optical character recognition. -It also extracts the corresponding locations, font names, font sizes, writing -direction (horizontal or vertical) for each text portion. -You need to provide a password for protected PDF documents when its access is restricted. -You cannot extract any text from a PDF document which does not have extraction permission. - -(For details, refer to /docs/index.html.) - -**dumppdf.py** - -dumppdf.py dumps the internal contents of a PDF file in pseudo-XML format. -This program is primarily for debugging purposes, -but it's also possible to extract some meaningful contents (e.g. images). - -(For details, refer to /docs/index.html.) - - -TODO ----- - - * PEP-8 and PEP-257 conformance. - * Better documentation. - * Performance improvements. + `python pdf2txt.py samples/simple1.pdf` + +* Check out more examples and documentation on +[Read the Docs](https://pdfminersix.readthedocs.io). Contributing diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..d163863 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/cid.obj b/docs/cid.obj deleted file mode 100644 index 540ef60..0000000 --- a/docs/cid.obj +++ /dev/null @@ -1,225 +0,0 @@ -%TGIF 4.1.45-QPL -state(0,37,100.000,0,0,0,16,1,9,1,1,2,0,1,0,1,1,'NewCenturySchlbk-Bold',1,103680,0,0,1,10,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,2880,0). -% -% @(#)$Header$ -% %W% -% -unit("1 pixel/pixel"). -color_info(19,65535,0,[ - "magenta", 65535, 0, 65535, 65535, 0, 65535, 1, - "red", 65535, 0, 0, 65535, 0, 0, 1, - "green", 0, 65535, 0, 0, 65535, 0, 1, - "blue", 0, 0, 65535, 0, 0, 65535, 1, - "yellow", 65535, 65535, 0, 65535, 65535, 0, 1, - "pink", 65535, 49344, 52171, 65535, 49344, 52171, 1, - "cyan", 0, 65535, 65535, 0, 65535, 65535, 1, - "CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1, - "white", 65535, 65535, 65535, 65535, 65535, 65535, 1, - "black", 0, 0, 0, 0, 0, 0, 1, - "DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1, - "#00000000c000", 0, 0, 49344, 0, 0, 49152, 1, - "#820782070000", 33410, 33410, 0, 33287, 33287, 0, 1, - "#3cf3fbee34d2", 15420, 64507, 13364, 15603, 64494, 13522, 1, - "#3cf3fbed34d3", 15420, 64507, 13364, 15603, 64493, 13523, 1, - "#ffffa6990000", 65535, 42662, 0, 65535, 42649, 0, 1, - "#ffff0000fffe", 65535, 0, 65535, 65535, 0, 65534, 1, - "#fffe0000fffe", 65535, 0, 65535, 65534, 0, 65534, 1, - "#fffe00000000", 65535, 0, 0, 65534, 0, 0, 1 -]). -script_frac("0.6"). -fg_bg_colors('black','white'). -dont_reencode("FFDingbests:ZapfDingbats"). -objshadow_info('#c0c0c0',2,2). -page(1,"",1,''). -text('black',90,95,1,1,1,66,20,0,15,5,0,0,0,0,2,66,20,0,0,"",0,0,0,0,110,'',[ -minilines(66,20,0,0,1,0,0,[ -mini_line(66,15,5,0,0,0,[ -str_block(0,66,15,5,0,-1,0,0,0,[ -str_seg('black','Courier-Bold',1,103680,66,15,5,0,-1,0,0,0,0,0, - "U+30FC")]) -]) -])]). -text('black',100,285,1,1,1,66,20,3,15,5,0,0,0,0,2,66,20,0,0,"",0,0,0,0,300,'',[ -minilines(66,20,0,0,1,0,0,[ -mini_line(66,15,5,0,0,0,[ -str_block(0,66,15,5,0,-2,0,0,0,[ -str_seg('black','Courier-Bold',1,103680,66,15,5,0,-2,0,0,0,0,0, - "U+5199")]) -]) -])]). -text('black',400,38,2,1,1,119,30,5,12,3,0,0,0,0,2,119,30,0,0,"",0,0,0,0,50,'',[ -minilines(119,30,0,0,1,0,0,[ -mini_line(83,12,3,0,0,0,[ -str_block(0,83,12,3,0,-3,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,83,12,3,0,-3,0,0,0,0,0, - "Adobe-Japan1")]) -]), -mini_line(119,12,3,0,0,0,[ -str_block(0,119,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,119,12,3,0,-1,0,0,0,0,0, - "CID:660 (horizontal)")]) -]) -])]). -text('black',400,118,2,1,1,114,30,8,12,3,0,0,0,0,2,114,30,0,0,"",0,0,0,0,130,'',[ -minilines(114,30,0,0,1,0,0,[ -mini_line(83,12,3,0,0,0,[ -str_block(0,83,12,3,0,-3,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,83,12,3,0,-3,0,0,0,0,0, - "Adobe-Japan1")]) -]), -mini_line(114,12,3,0,0,0,[ -str_block(0,114,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,114,12,3,0,-1,0,0,0,0,0, - "CID:7891 (vertical)")]) -]) -])]). -text('black',400,238,2,1,1,125,30,15,12,3,0,0,0,0,2,125,30,0,0,"",0,0,0,0,250,'',[ -minilines(125,30,0,0,1,0,0,[ -mini_line(83,12,3,0,0,0,[ -str_block(0,83,12,3,0,-3,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,83,12,3,0,-3,0,0,0,0,0, - "Adobe-Japan1")]) -]), -mini_line(125,12,3,0,0,0,[ -str_block(0,125,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,125,12,3,0,-1,0,0,0,0,0, - "CID:2296 (Japanese)")]) -]) -])]). -text('black',400,318,2,1,1,115,30,16,12,3,0,0,0,0,2,115,30,0,0,"",0,0,0,0,330,'',[ -minilines(115,30,0,0,1,0,0,[ -mini_line(67,12,3,0,0,0,[ -str_block(0,67,12,3,0,-3,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,67,12,3,0,-3,0,0,0,0,0, - "Adobe-GB1")]) -]), -mini_line(115,12,3,0,0,0,[ -str_block(0,115,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,115,12,3,0,-1,0,0,0,0,0, - "CID:3967 (Chinese)")]) -]) -])]). -text('black',200,84,2,1,1,116,38,20,16,3,0,0,0,0,2,116,38,0,0,"",0,0,0,0,100,'',[ -minilines(116,38,0,0,1,0,0,[ -mini_line(70,16,3,0,0,0,[ -str_block(0,70,16,3,0,-1,0,0,0,[ -str_seg('black','NewCenturySchlbk-Roman',0,97920,70,16,3,0,-1,0,0,0,0,0, - "Japanese")]) -]), -mini_line(116,16,3,0,0,0,[ -str_block(0,116,16,3,0,-1,0,0,0,[ -str_seg('black','NewCenturySchlbk-Roman',0,97920,116,16,3,0,-1,0,0,0,0,0, - "long-vowel sign")]) -]) -])]). -oval('black','',30,70,280,140,0,1,1,49,0,0,0,0,0,'1',0,[ -]). -oval('black','',30,260,280,330,0,1,1,51,0,0,0,0,0,'1',0,[ -]). -text('black',200,274,2,1,1,85,38,53,16,3,0,0,0,0,2,85,38,0,0,"",0,0,0,0,290,'',[ -minilines(85,38,0,0,1,0,0,[ -mini_line(61,16,3,0,0,0,[ -str_block(0,61,16,3,0,-1,0,0,0,[ -str_seg('black','NewCenturySchlbk-Roman',0,97920,61,16,3,0,-1,0,0,0,0,0, - "Chinese")]) -]), -mini_line(85,16,3,0,0,0,[ -str_block(0,85,16,3,0,-1,0,0,0,[ -str_seg('black','NewCenturySchlbk-Roman',0,97920,85,16,3,0,-1,0,0,0,0,0, - "letter \"sha\"")]) -]) -])]). -box('black','',330,30,560,80,0,1,1,57,0,0,0,0,0,'1',0,[ -]). -box('black','',330,110,560,160,0,1,1,59,0,0,0,0,0,'1',0,[ -]). -box('black','',330,230,560,280,0,1,1,60,0,0,0,0,0,'1',0,[ -]). -box('black','',330,310,560,360,0,1,1,61,0,0,0,0,0,'1',0,[ -]). -group([ -poly('black','',4,[ - 506,246,501,235,541,235,536,246],0,2,1,68,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]), -poly('black','',5,[ - 519,238,516,252,529,252,524,275,516,272],0,2,1,69,0,0,0,0,0,0,0,'2',0,0, - "00","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]), -poly('black','',2,[ - 501,261,541,261],0,2,1,70,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]), -poly('black','',2,[ - 519,244,529,244],0,2,1,71,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]) -], -76,0,0,[ -]). -group([ -poly('black','',3,[ - 519,119,524,127,524,152],0,2,1,67,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]) -], -78,0,0,[ -]). -group([ -poly('black','',3,[ - 540,57,509,57,501,49],0,2,1,66,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]) -], -80,0,0,[ -]). -group([ -poly('black','',4,[ - 506,326,501,315,541,315,536,326],0,2,1,90,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]), -poly('black','',5,[ - 519,318,515,332,531,332,526,355,519,352],0,2,1,89,0,0,0,0,0,0,0,'2',0,0, - "00","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]), -poly('black','',2,[ - 501,341,526,341],0,2,1,88,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]), -poly('black','',2,[ - 519,324,529,324],0,2,1,87,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]) -], -134,0,0,[ -]). -poly('black','',2,[ - 270,90,320,70],1,3,1,158,0,0,0,0,0,0,0,'3',0,0, - "0","",[ - 0,12,5,0,'12','5','0'],[0,12,5,0,'12','5','0'],[ -]). -poly('black','',2,[ - 280,110,320,130],1,3,1,159,0,0,0,0,0,0,0,'3',0,0, - "0","",[ - 0,12,5,0,'12','5','0'],[0,12,5,0,'12','5','0'],[ -]). -poly('black','',2,[ - 270,280,310,250],1,3,1,160,0,0,0,0,0,0,0,'3',0,0, - "0","",[ - 0,12,5,0,'12','5','0'],[0,12,5,0,'12','5','0'],[ -]). -poly('black','',2,[ - 270,300,310,330],1,3,1,161,0,0,0,0,0,0,0,'3',0,0, - "0","",[ - 0,12,5,0,'12','5','0'],[0,12,5,0,'12','5','0'],[ -]). diff --git a/docs/cid.png b/docs/cid.png deleted file mode 100644 index a85f27bb11debe74f9f016996988c734f474434f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2689 zcmV-{3V!v8P)100006P)t-s00030 z|No`gpWOfe3N}eZK~#90?c7Uj+sGLJV7c1XS-`N;&1GE#W)}^dt05g~0fxEV-OB=k zeeJ180K>i%Xi{HdR0y3_VP`Kj0$;*bF%Ns_u_$`VrLybo+5!mi9H4=vI1o=o=;ZHvo49#%@+4kdCjwIJ*MlJf(3o zFYHWnUkgA1KrtnJ)PRq;atcGN@$ly|6wsbxD)^|C(%@_2Qd1c&&s>}DZqF#e%#=p& z)=6dV6S=EqG^8I*DZSN`-daP+Zou;Bt#*6EM(^F6hCFO!y%w=ncZ}|^agxzEn%{)= zqqjD5GA|E5$Ywan`);;-dv%8H{*`hViRr&!;NB(|`HWHG*^Mn{r(fbjpRq~;t6`S} z|7ay_uwIKj5jd;`5tzehOoWbW+-Tbh2e@X$aubbc^J3S!z29z# zb{+3sG8u28#s)#&0+#7UyW7SYu@X--PT@Z-&|jP`Jy^kqDqkL+ ze=z-%B?o0PI>=De#a`)-_xlRo&<>-as|u*A`|Dn_n%WSsVQ;E`T=BlU6ZpU>yP=tC zE3r;88?Q^+W`4u2tAEO8;4+nR8Ry4}vZzQ<8a*b?-1d#tFe=JHbGnS4ijtS1r!hLH ztD*Gm*)r7#~9((uH9Az@b{IMdQGpNLPG%t zH{J-hGSdqmmqCYnY25wh-oZaOm}yTk7?Gcvz3FZ33%E&sL@^}Sh&=a02KvpQ0vTsS z`yXZh9Gx0(aHquhsp1;6M+o|iHMvWSpB}pgwLgabnb;x5PgT#L^$YQ5%Eb8TnP*V@ zr!Z+{V*FJ13~E0a;O;gleroy#t-lV?pp_Uu9U0VdgFi-2il2@Q>iESUtH5_iCcCUXZzI}-eoDFK;akmDcN z7&hSVt;*^6dwvax800t%HWYcdDb^&tzWw3Tdqjg65AuzpnxxjN@9xd5cpr!xgt(Mz zsJhsa)V*qb&!!rrbRA@~s)pL(vND=8Sz7MnWo#@4ayq^H8X%Ul@f^7==+7g;5xVQ5c0$ z7==+7g;5xVQ5c00PsREu2E%sC;#)TafW!5<3?ATjtGUXQ2l&lFNYK!8u8&G@ z#NY2L08Pxuw?0a-OI$i5{(k=$8pk=;N2xYmLXyIWzu$k8+DLf6@7$p@M*RK0^KL7R z5r4m*+HeyeILvNnWTRAJG$!&J{Rv8Ys<0VaIlo~{<~J;4*fT9_;obl&3HX>lr-=1D zV7XmbUD4c|YuFDR!=FmdG%Iz zZ;@goz29$j9K&vEzp(74`1R_Ejt%^bnqZk{V54e;49m0|mVHP3Y;}5`WDw>%;JGBo zFm-4Q8}P>uZul>w`OvkH=3U^~CFs6%^&v7oudW8lBW#f7fArBmsD7MWpC4G-s~eBk zZZ0$vjRO!){ydaJYDkq#C%cVS_e*tVJ`drf*Q@u{pPeXiWJAM=)T9dxuHa zvgH}Hd3|o(BN>`!(B>C9w`F`^TOw!khipb{zU2=&e^rChVl$%iKCMm3H}ndd5nXp; zT}uA8$vJ<=jiaJd&W(VPb=`@1`Q)pgo&D3fThYv9BUYp)c&yI66kp<pdHw4EpxMbrrjZsm0 z_2XPdsjevf#e~&iX$)Rb&X;cIGIUs^fX`JP_jP?&u?1A$ICR)PJqO@7sSLZUYqJvv zczKs(Un0XyV|37;N!?hQIK&T=u+ix-8-XNQX29T>jOfYkFU&u9B^b{+{Nt$zEJn1o zd-gB$;y$l0{9zsKea2)&+YeDT)f%rq?_nd_T}(Ej?by>PvtI*-so;v=XELHKrf8X} z4j*<3uC(z!XOa56w#osJL!`R0gU3O)O9D$xH8e;!6<%8U3cP)Zxi!F@l)Em z6K9-FFaq&Y>bes=-cS5MIQB_fcY@;%XafgOjfGhu*`WV_2CjhvsJeLK8}O+XjGt20 zo!~eO+Q0!+)f|QCBJoqox)aNbDd7NW(1^xQiR1lITnYzJhwqQdL$xBYPvW{0KR$*7 zsO#eBJlEqMx{2)8a5t%HJRIxUJ3rS zFvhhVW7z05#2T;4@LB@pk;>5I*}F$OygH~h;C;zvxXJB!@mFa`84Rb@8P)YHMl}6D v8GL?Y_X>>G6&TtT7}gaSIDHQd`Z(%8O5BJ!PrZ|W00000NkvXXu0mjfRwXe1 diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 6b6857c..0000000 --- a/docs/index.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - -PDFMiner - - - -

    - -Last Modified: Wed Jun 25 10:27:52 UTC 2014 - -
    - -

    PDFMiner

    -

    -Python PDF parser and analyzer - -

    -Homepage -  -Recent Changes -  -PDFMiner API - -

    - -

    What's It?

    -

    -PDFMiner is a tool for extracting information from PDF documents. -Unlike other PDF-related tools, it focuses entirely on getting -and analyzing text data. PDFMiner allows one to obtain -the exact location of text in a page, as well as -other information such as fonts or lines. -It includes a PDF converter that can transform PDF files -into other text formats (such as HTML). It has an extensible -PDF parser that can be used for other purposes than text analysis. - -

    -

    Features

    -
      -
    • Written entirely in Python. (for version 2.6 or newer) -
    • Parse, analyze, and convert PDF documents. -
    • PDF-1.7 specification support. (well, almost) -
    • CJK languages and vertical writing scripts support. -
    • Various font types (Type1, TrueType, Type3, and CID) support. -
    • Basic encryption (RC4) support. -
    • PDF to HTML conversion. -
    • Outline (TOC) extraction. -
    • Tagged contents extraction. -
    • Reconstruct the original layout by grouping text chunks. -
    -

    -PDFMiner is about 20 times slower than -other C/C++-based counterparts such as XPdf. - -

    -Online Demo: (pdf -> html conversion webapp)
    - -http://pdf2html.tabesugi.net:8080/ - - -

    Download

    -

    -Source distribution:
    - -http://pypi.python.org/pypi/pdfminer_six/ - - -

    -github:
    - -https://github.com/goulu/pdfminer/ - - -

    Where to Ask

    -

    -

    -Questions and comments:
    - -http://groups.google.com/group/pdfminer-users/ - - -

    How to Install

    -
      -
    1. Install Python 2.6 or newer. -
    2. Download the PDFMiner source. -
    3. Unpack it. -
    4. Run setup.py to install:
      -
      -# python setup.py install
      -
      -
    5. Do the following test:
      -
      -$ pdf2txt.py samples/simple1.pdf
      -Hello
      -
      -World
      -
      -Hello
      -
      -World
      -
      -H e l l o
      -
      -W o r l d
      -
      -H e l l o
      -
      -W o r l d
      -
      -
    6. Done! -
    - -

    For CJK languages

    -

    -In order to process CJK languages, you need an additional step to take -during installation: -

    -# make cmap
    -python tools/conv_cmap.py pdfminer/cmap Adobe-CNS1 cmaprsrc/cid2code_Adobe_CNS1.txt
    -reading 'cmaprsrc/cid2code_Adobe_CNS1.txt'...
    -writing 'CNS1_H.py'...
    -...
    -(this may take several minutes)
    -
    -# python setup.py install
    -
    - -

    -On Windows machines which don't have make command, -paste the following commands on a command line prompt: -

    -mkdir pdfminer\cmap
    -python tools\conv_cmap.py -c B5=cp950 -c UniCNS-UTF8=utf-8 pdfminer\cmap Adobe-CNS1 cmaprsrc\cid2code_Adobe_CNS1.txt
    -python tools\conv_cmap.py -c GBK-EUC=cp936 -c UniGB-UTF8=utf-8 pdfminer\cmap Adobe-GB1 cmaprsrc\cid2code_Adobe_GB1.txt
    -python tools\conv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminer\cmap Adobe-Japan1 cmaprsrc\cid2code_Adobe_Japan1.txt
    -python tools\conv_cmap.py -c KSC-EUC=euc-kr -c KSC-Johab=johab -c KSCms-UHC=cp949 -c UniKS-UTF8=utf-8 pdfminer\cmap Adobe-Korea1 cmaprsrc\cid2code_Adobe_Korea1.txt
    -python setup.py install
    -
    - -

    Command Line Tools

    -

    -PDFMiner comes with two handy tools: -pdf2txt.py and dumppdf.py. - -

    pdf2txt.py

    -

    -pdf2txt.py extracts text contents from a PDF file. -It extracts all the text that are to be rendered programmatically, -i.e. text represented as ASCII or Unicode strings. -It cannot recognize text drawn as images that would require optical character recognition. -It also extracts the corresponding locations, font names, font sizes, writing -direction (horizontal or vertical) for each text portion. -You need to provide a password for protected PDF documents when its access is restricted. -You cannot extract any text from a PDF document which does not have extraction permission. - -

    -Note: -Not all characters in a PDF can be safely converted to Unicode. - -

    Examples

    -
    -$ pdf2txt.py -o output.html samples/naacl06-shinyama.pdf
    -(extract text as an HTML file whose filename is output.html)
    -
    -$ pdf2txt.py -V -c euc-jp -o output.html samples/jo.pdf
    -(extract a Japanese HTML file in vertical writing, CMap is required)
    -
    -$ pdf2txt.py -P mypassword -o output.txt secret.pdf
    -(extract a text from an encrypted PDF file)
    -
    - -

    Options

    -
    -
    -o filename -
    Specifies the output file name. -By default, it prints the extracted contents to stdout in text format. -

    -

    -p pageno[,pageno,...] -
    Specifies the comma-separated list of the page numbers to be extracted. -Page numbers start at one. -By default, it extracts text from all the pages. -

    -

    -c codec -
    Specifies the output codec. -

    -

    -t type -
    Specifies the output format. The following formats are currently supported. -
      -
    • text : TEXT format. (Default) -
    • html : HTML format. Not recommended for extraction purposes because the markup is messy. -
    • xml : XML format. Provides the most information. -
    • tag : "Tagged PDF" format. A tagged PDF has its own contents annotated with -HTML-like tags. pdf2txt tries to extract its content streams rather than inferring its text locations. -Tags used here are defined in the PDF specification (See §10.7 "Tagged PDF"). -
    -

    -

    -I image_directory -
    Specifies the output directory for image extraction. -Currently only JPEG images are supported. -

    -

    -M char_margin -
    -L line_margin -
    -W word_margin -
    These are the parameters used for layout analysis. -In an actual PDF file, text portions might be split into several chunks -in the middle of its running, depending on the authoring software. -Therefore, text extraction needs to splice text chunks. -In the figure below, two text chunks whose distance is closer than -the char_margin (shown as M) is considered -continuous and get grouped into one. Also, two lines whose distance is closer than -the line_margin (L) is grouped -as a text box, which is a rectangular area that contains a "cluster" of text portions. -Furthermore, it may be required to insert blank characters (spaces) as necessary -if the distance between two words is greater than the word_margin -(W), as a blank between words might not be -represented as a space, but indicated by the positioning of each word. -

    -Each value is specified not as an actual length, but as a proportion of -the length to the size of each character in question. The default values -are M = 2.0, L = 0.5, and W = 0.1, respectively. - - - - - - - - - - - - - - - - - - - -
    M
    Q u ic kb r o wn   f o x
    WL
    -
    j u m p s...
    -
    -

    -

    -F boxes_flow -
    Specifies how much a horizontal and vertical position of a text matters -when determining a text order. The value should be within the range of --1.0 (only horizontal position matters) to +1.0 (only vertical position matters). -The default value is 0.5. -

    -

    -C -
    Suppress object caching. -This will reduce the memory consumption but also slows down the process. -

    -

    -n -
    Suppress layout analysis. -

    -

    -A -
    Forces to perform layout analysis for all the text strings, -including text contained in figures. -

    -

    -V -
    Allows vertical writing detection. -

    -

    -Y layout_mode -
    Specifies how the page layout should be preserved. (Currently only applies to HTML format.) -
      -
    • exact : preserve the exact location of each individual character (a large and messy HTML). -
    • normal : preserve the location and line breaks in each text block. (Default) -
    • loose : preserve the overall location of each text block. -
    -

    -

    -E extractdir -
    Specifies the extraction directory of embedded files. -

    -

    -s scale -
    Specifies the output scale. Can be used in HTML format only. -

    -

    -m maxpages -
    Specifies the maximum number of pages to extract. -By default, it extracts all the pages in a document. -

    -

    -P password -
    Provides the user password to access PDF contents. -

    -

    -d -
    Increases the debug level. -
    - -
    - -

    dumppdf.py

    -

    -dumppdf.py dumps the internal contents of a PDF file -in pseudo-XML format. This program is primarily for debugging purposes, -but it's also possible to extract some meaningful contents -(such as images). - -

    Examples

    -
    -$ dumppdf.py -a foo.pdf
    -(dump all the headers and contents, except stream objects)
    -
    -$ dumppdf.py -T foo.pdf
    -(dump the table of contents)
    -
    -$ dumppdf.py -r -i6 foo.pdf > pic.jpeg
    -(extract a JPEG image)
    -
    - -

    Options

    -
    -
    -a -
    Instructs to dump all the objects. -By default, it only prints the document trailer (like a header). -

    -

    -i objno,objno, ... -
    Specifies PDF object IDs to display. -Comma-separated IDs, or multiple -i options are accepted. -

    -

    -p pageno,pageno, ... -
    Specifies the page number to be extracted. -Comma-separated page numbers, or multiple -p options are accepted. -Note that page numbers start at one, not zero. -

    -

    -r (raw) -
    -b (binary) -
    -t (text) -
    Specifies the output format of stream contents. -Because the contents of stream objects can be very large, -they are omitted when none of the options above is specified. -

    -With -r option, the "raw" stream contents are dumped without decompression. -With -b option, the decompressed contents are dumped as a binary blob. -With -t option, the decompressed contents are dumped in a text format, -similar to repr() manner. When --r or -b option is given, -no stream header is displayed for the ease of saving it to a file. -

    -

    -T -
    Shows the table of contents. -

    -

    -E directory -
    Extracts embedded files from the pdf into the given directory. -

    -

    -P password -
    Provides the user password to access PDF contents. -

    -

    -d -
    Increases the debug level. -
    - -

    Changes:

    -
      -
    • 2014/09/15: pushed on PyPi
    • -
    • 2014/09/10: pdfminer_six forked from pdfminer since Yusuke didn't want to merge and pdfminer3k is outdated
    • -
    - -

    TODO

    -
      -
    • PEP-8 and -PEP-257 conformance. -
    • Better documentation. -
    • Better text extraction / layout analysis. (writing mode detection, Type1 font file analysis, etc.) -
    • Crypt stream filter support. (More sample documents are needed!) -
    - -

    Related Projects

    - - -

    Terms and Conditions

    -

    -(This is so-called MIT/X License) -

    - -Copyright (c) 2004-2013 Yusuke Shinyama <yusuke at cs dot nyu dot edu> -

    -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: -

    -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. -

    -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -


    -
    Yusuke Shinyama (yusuke at cs dot nyu dot edu)
    - diff --git a/docs/layout.obj b/docs/layout.obj deleted file mode 100644 index 4c8e3cd..0000000 --- a/docs/layout.obj +++ /dev/null @@ -1,391 +0,0 @@ -%TGIF 4.2.2 -state(0,37,100.000,0,0,0,16,1,9,1,1,0,0,0,0,1,1,'Helvetica-Bold',1,69120,0,0,1,5,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,2880,0). -% -% @(#)$Header$ -% %W% -% -unit("1 pixel/pixel"). -color_info(19,65535,0,[ - "magenta", 65535, 0, 65535, 65535, 0, 65535, 1, - "red", 65535, 0, 0, 65535, 0, 0, 1, - "green", 0, 65535, 0, 0, 65535, 0, 1, - "blue", 0, 0, 65535, 0, 0, 65535, 1, - "yellow", 65535, 65535, 0, 65535, 65535, 0, 1, - "pink", 65535, 49344, 52171, 65535, 49344, 52171, 1, - "cyan", 0, 65535, 65535, 0, 65535, 65535, 1, - "CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1, - "white", 65535, 65535, 65535, 65535, 65535, 65535, 1, - "black", 0, 0, 0, 0, 0, 0, 1, - "DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1, - "#00000000c000", 0, 0, 49344, 0, 0, 49152, 1, - "#820782070000", 33410, 33410, 0, 33287, 33287, 0, 1, - "#3cf3fbee34d2", 15420, 64507, 13364, 15603, 64494, 13522, 1, - "#3cf3fbed34d3", 15420, 64507, 13364, 15603, 64493, 13523, 1, - "#ffffa6990000", 65535, 42662, 0, 65535, 42649, 0, 1, - "#ffff0000fffe", 65535, 0, 65535, 65535, 0, 65534, 1, - "#fffe0000fffe", 65535, 0, 65535, 65534, 0, 65534, 1, - "#fffe00000000", 65535, 0, 0, 65534, 0, 0, 1 -]). -script_frac("0.6"). -fg_bg_colors('black','white'). -dont_reencode("FFDingbests:ZapfDingbats"). -objshadow_info('#c0c0c0',2,2). -rotate_pivot(0,0,0,0). -spline_tightness(1). -page(1,"",1,''). -box('black','',50,45,300,355,2,2,1,0,0,0,0,0,0,'2',0,[ -]). -box('black','',75,75,195,225,2,1,1,10,8,0,0,0,0,'1',0,[ -]). -box('black','',85,105,185,125,2,1,1,18,8,0,0,0,0,'1',0,[ -]). -box('black','',85,105,105,125,2,1,1,19,0,0,0,0,0,'1',0,[ -]). -box('black','',105,105,125,125,2,1,1,20,0,0,0,0,0,'1',0,[ -]). -text('black',95,108,1,1,1,9,15,21,12,3,0,0,0,0,2,9,15,0,0,"",0,0,0,0,120,'',[ -minilines(9,15,0,0,1,0,0,[ -mini_line(9,12,3,0,0,0,[ -str_block(0,9,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica',0,69120,9,12,3,0,-1,0,0,0,0,0, - "A")]) -]) -])]). -text('black',115,108,1,1,1,8,15,28,12,3,0,0,0,0,2,8,15,0,0,"",0,0,0,0,120,'',[ -minilines(8,15,0,0,1,0,0,[ -mini_line(8,12,3,0,0,0,[ -str_block(0,8,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica',0,69120,8,12,3,0,-1,0,0,0,0,0, - "B")]) -]) -])]). -box('black','',125,105,145,125,0,1,1,32,0,0,0,0,0,'1',0,[ -]). -text('black',135,108,1,1,1,9,15,36,12,3,0,0,0,0,2,9,15,0,0,"",0,0,0,0,120,'',[ -minilines(9,15,0,0,1,0,0,[ -mini_line(9,12,3,0,0,0,[ -str_block(0,9,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica',0,69120,9,12,3,0,-1,0,0,0,0,0, - "C")]) -]) -])]). -poly('black','',2,[ - 215,140,215,220],0,3,1,51,0,0,0,0,0,0,0,'3',0,0, - "0","",[ - 0,12,5,0,'12','5','0'],[0,12,5,0,'12','5','0'],[ -]). -box('black','',175,265,270,325,0,3,1,65,0,0,0,0,0,'3',0,[ -]). -box('black','',185,270,260,320,0,1,1,69,8,0,0,0,0,'1',0,[ -]). -poly('black','',6,[ - 195,295,215,290,235,310,245,285,225,300,195,295],0,2,1,74,0,0,0,0,0,0,0,'2',0,0, - "00","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -box('black','',85,275,140,315,1,2,0,87,0,0,0,0,0,'2',0,[ -]). -text('black',85,23,1,1,1,44,15,93,12,3,0,0,0,0,2,44,15,0,0,"",0,0,0,0,35,'',[ -minilines(44,15,0,0,1,0,0,[ -mini_line(44,12,3,0,0,0,[ -str_block(0,44,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,44,12,3,0,-1,0,0,0,0,0, - "LTPage")]) -]) -])]). -text('black',255,133,1,1,1,39,15,100,12,3,0,0,0,0,2,39,15,0,0,"",0,0,0,0,145,'',[ -minilines(39,15,0,0,1,0,0,[ -mini_line(39,12,3,0,0,0,[ -str_block(0,39,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,39,12,3,0,-1,0,0,0,0,0, - "LTLine")]) -]) -])]). -text('black',125,83,1,1,1,42,15,104,12,3,0,0,0,0,2,42,15,0,0,"",0,0,0,0,95,'',[ -minilines(42,15,0,0,1,0,0,[ -mini_line(42,12,3,0,0,0,[ -str_block(0,42,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,42,12,3,0,0,0,0,0,0,0, - "LTChar")]) -]) -])]). -text('black',245,53,1,1,1,65,15,108,12,3,0,0,0,0,2,65,15,0,0,"",0,0,0,0,65,'',[ -minilines(65,15,0,0,1,0,0,[ -mini_line(65,12,3,0,0,0,[ -str_block(0,65,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,65,12,3,0,-1,0,0,0,0,0, - "LTTextBox")]) -]) -])]). -text('black',245,88,1,1,1,66,15,110,12,3,0,0,0,0,2,66,15,0,0,"",0,0,0,0,100,'',[ -minilines(66,15,0,0,1,0,0,[ -mini_line(66,12,3,0,0,0,[ -str_block(0,66,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,66,12,3,0,-1,0,0,0,0,0, - "LTTextLine")]) -]) -])]). -text('black',255,243,1,1,1,51,15,112,12,3,0,0,0,0,2,51,15,0,0,"",0,0,0,0,255,'',[ -minilines(51,15,0,0,1,0,0,[ -mini_line(51,12,3,0,0,0,[ -str_block(0,51,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,51,12,3,0,-1,0,0,0,0,0, - "LTFigure")]) -]) -])]). -text('black',140,243,1,1,1,51,15,114,12,3,0,0,0,0,2,51,15,0,0,"",0,0,0,0,255,'',[ -minilines(51,15,0,0,1,0,0,[ -mini_line(51,12,3,0,0,0,[ -str_block(0,51,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,51,12,3,0,-1,0,0,0,0,0, - "LTImage")]) -]) -])]). -text('black',240,223,1,1,1,43,15,116,12,3,0,0,0,0,2,43,15,0,0,"",0,0,0,0,235,'',[ -minilines(43,15,0,0,1,0,0,[ -mini_line(43,12,3,0,0,0,[ -str_block(0,43,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,43,12,3,0,0,0,0,0,0,0, - "LTRect")]) -]) -])]). -text('black',190,333,1,1,1,50,15,118,12,3,0,0,0,0,2,50,15,0,0,"",0,0,0,0,345,'',[ -minilines(50,15,0,0,1,0,0,[ -mini_line(50,12,3,0,0,0,[ -str_block(0,50,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,50,12,3,0,-1,0,0,0,0,0, - "LTCurve")]) -]) -])]). -text('black',170,138,1,1,1,42,15,121,12,3,0,0,0,0,2,42,15,0,0,"",0,0,0,0,150,'',[ -minilines(42,15,0,0,1,0,0,[ -mini_line(42,12,3,0,0,0,[ -str_block(0,42,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,42,12,3,0,0,0,0,0,0,0, - "LTText")]) -]) -])]). -box('black','',145,105,165,125,0,1,1,125,8,0,0,0,0,'1',0,[ -]). -poly('black','',2,[ - 105,95,95,110],0,1,1,135,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 165,140,155,115],0,1,1,138,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 215,65,190,80],0,1,1,139,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 215,100,180,115],0,1,1,140,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 235,140,215,150],0,1,1,141,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 220,235,205,265],0,1,1,146,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 235,255,225,275],0,1,1,147,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 195,330,220,300],0,1,1,148,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 125,255,110,280],0,1,1,149,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -text('black',610,33,1,1,1,44,15,151,12,3,0,0,0,0,2,44,15,0,0,"",0,0,0,0,45,'',[ -minilines(44,15,0,0,1,0,0,[ -mini_line(44,12,3,0,0,0,[ -str_block(0,44,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,44,12,3,0,-1,0,0,0,0,0, - "LTPage")]) -]) -])]). -text('black',460,108,1,1,1,65,15,152,12,3,0,0,0,0,2,65,15,0,0,"",0,0,0,0,120,'',[ -minilines(65,15,0,0,1,0,0,[ -mini_line(65,12,3,0,0,0,[ -str_block(0,65,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,65,12,3,0,-1,0,0,0,0,0, - "LTTextBox")]) -]) -])]). -text('black',410,178,1,1,1,66,15,154,12,3,0,0,0,0,2,66,15,0,0,"",0,0,0,0,190,'',[ -minilines(66,15,0,0,1,0,0,[ -mini_line(66,12,3,0,0,0,[ -str_block(0,66,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,66,12,3,0,-1,0,0,0,0,0, - "LTTextLine")]) -]) -])]). -text('black',360,248,1,1,1,42,15,157,12,3,0,0,0,0,2,42,15,0,0,"",0,0,0,0,260,'',[ -minilines(42,15,0,0,1,0,0,[ -mini_line(42,12,3,0,0,0,[ -str_block(0,42,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,42,12,3,0,0,0,0,0,0,0, - "LTChar")]) -]) -])]). -text('black',420,248,1,1,1,42,15,159,12,3,0,0,0,0,2,42,15,0,0,"",0,0,0,0,260,'',[ -minilines(42,15,0,0,1,0,0,[ -mini_line(42,12,3,0,0,0,[ -str_block(0,42,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,42,12,3,0,0,0,0,0,0,0, - "LTChar")]) -]) -])]). -text('black',480,248,1,1,1,42,15,161,12,3,0,0,0,0,2,42,15,0,0,"",0,0,0,0,260,'',[ -minilines(42,15,0,0,1,0,0,[ -mini_line(42,12,3,0,0,0,[ -str_block(0,42,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,42,12,3,0,0,0,0,0,0,0, - "LTText")]) -]) -])]). -text('black',460,178,1,1,1,12,15,170,12,3,0,0,0,0,2,12,15,0,0,"",0,0,0,0,190,'',[ -minilines(12,15,0,0,1,0,0,[ -mini_line(12,12,3,0,0,0,[ -str_block(0,12,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,12,12,3,0,-1,0,0,0,0,0, - "...")]) -]) -])]). -text('black',520,248,1,1,1,12,15,172,12,3,0,0,0,0,2,12,15,0,0,"",0,0,0,0,260,'',[ -minilines(12,15,0,0,1,0,0,[ -mini_line(12,12,3,0,0,0,[ -str_block(0,12,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,12,12,3,0,-1,0,0,0,0,0, - "...")]) -]) -])]). -text('black',560,108,1,1,1,51,15,174,12,3,0,0,0,0,2,51,15,0,0,"",0,0,0,0,120,'',[ -minilines(51,15,0,0,1,0,0,[ -mini_line(51,12,3,0,0,0,[ -str_block(0,51,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,51,12,3,0,-1,0,0,0,0,0, - "LTFigure")]) -]) -])]). -text('black',635,108,1,1,1,39,15,178,12,3,0,0,0,0,2,39,15,0,0,"",0,0,0,0,120,'',[ -minilines(39,15,0,0,1,0,0,[ -mini_line(39,12,3,0,0,0,[ -str_block(0,39,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,39,12,3,0,-1,0,0,0,0,0, - "LTLine")]) -]) -])]). -text('black',700,108,1,1,1,43,15,180,12,3,0,0,0,0,2,43,15,0,0,"",0,0,0,0,120,'',[ -minilines(43,15,0,0,1,0,0,[ -mini_line(43,12,3,0,0,0,[ -str_block(0,43,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,43,12,3,0,0,0,0,0,0,0, - "LTRect")]) -]) -])]). -text('black',580,178,1,1,1,50,15,182,12,3,0,0,0,0,2,50,15,0,0,"",0,0,0,0,190,'',[ -minilines(50,15,0,0,1,0,0,[ -mini_line(50,12,3,0,0,0,[ -str_block(0,50,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,50,12,3,0,-1,0,0,0,0,0, - "LTCurve")]) -]) -])]). -text('black',775,108,1,1,1,51,15,186,12,3,0,0,0,0,2,51,15,0,0,"",0,0,0,0,120,'',[ -minilines(51,15,0,0,1,0,0,[ -mini_line(51,12,3,0,0,0,[ -str_block(0,51,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,51,12,3,0,-1,0,0,0,0,0, - "LTImage")]) -]) -])]). -poly('black','',2,[ - 475,105,590,50],0,1,1,190,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 560,110,595,50],0,1,1,191,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 635,105,600,50],0,1,1,192,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 610,50,700,100],0,1,1,193,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 765,100,630,50],0,1,1,194,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 460,125,425,175],0,1,1,196,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 560,125,570,175],0,1,1,197,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 415,195,370,245],0,1,1,198,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 415,195,420,245],0,1,1,199,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 415,195,475,245],0,1,1,200,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 470,125,485,175],0,1,1,206,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 420,195,510,220],0,1,1,207,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 565,125,635,175],0,1,1,208,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -text('black',635,178,1,1,1,12,15,215,12,3,0,0,0,0,2,12,15,0,0,"",0,0,0,0,190,'',[ -minilines(12,15,0,0,1,0,0,[ -mini_line(12,12,3,0,0,0,[ -str_block(0,12,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,12,12,3,0,-1,0,0,0,0,0, - "...")]) -]) -])]). diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..9534b01 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/objrel.obj b/docs/objrel.obj deleted file mode 100644 index 12a0f56..0000000 --- a/docs/objrel.obj +++ /dev/null @@ -1,187 +0,0 @@ -%TGIF 4.2.2 -state(0,37,100.000,0,0,0,16,1,9,1,1,1,0,0,2,1,1,'Helvetica-Bold',1,69120,0,0,1,10,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,2880,0). -% -% @(#)$Header$ -% %W% -% -unit("1 pixel/pixel"). -color_info(19,65535,0,[ - "magenta", 65535, 0, 65535, 65535, 0, 65535, 1, - "red", 65535, 0, 0, 65535, 0, 0, 1, - "green", 0, 65535, 0, 0, 65535, 0, 1, - "blue", 0, 0, 65535, 0, 0, 65535, 1, - "yellow", 65535, 65535, 0, 65535, 65535, 0, 1, - "pink", 65535, 49344, 52171, 65535, 49344, 52171, 1, - "cyan", 0, 65535, 65535, 0, 65535, 65535, 1, - "CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1, - "white", 65535, 65535, 65535, 65535, 65535, 65535, 1, - "black", 0, 0, 0, 0, 0, 0, 1, - "DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1, - "#00000000c000", 0, 0, 49344, 0, 0, 49152, 1, - "#820782070000", 33410, 33410, 0, 33287, 33287, 0, 1, - "#3cf3fbee34d2", 15420, 64507, 13364, 15603, 64494, 13522, 1, - "#3cf3fbed34d3", 15420, 64507, 13364, 15603, 64493, 13523, 1, - "#ffffa6990000", 65535, 42662, 0, 65535, 42649, 0, 1, - "#ffff0000fffe", 65535, 0, 65535, 65535, 0, 65534, 1, - "#fffe0000fffe", 65535, 0, 65535, 65534, 0, 65534, 1, - "#fffe00000000", 65535, 0, 0, 65534, 0, 0, 1 -]). -script_frac("0.6"). -fg_bg_colors('black','white'). -dont_reencode("FFDingbests:ZapfDingbats"). -objshadow_info('#c0c0c0',2,2). -rotate_pivot(0,0,0,0). -spline_tightness(1). -page(1,"",1,''). -oval('black','',350,380,450,430,2,2,1,88,0,0,0,0,0,'2',0,[ -]). -poly('black','',2,[ - 270,270,350,230],1,2,1,54,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('black','',2,[ - 270,280,350,320],1,2,1,55,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -box('black','',350,100,450,150,2,2,1,2,0,0,0,0,0,'2',0,[ -]). -text('black',400,118,1,1,1,84,15,3,12,3,0,0,0,0,2,84,15,0,0,"",0,0,0,0,130,'',[ -minilines(84,15,0,0,1,0,0,[ -mini_line(84,12,3,0,0,0,[ -str_block(0,84,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,84,12,3,0,0,0,0,0,0,0, - "PDFDocument")]) -]) -])]). -box('black','',150,100,250,150,2,2,1,13,0,0,0,0,0,'2',0,[ -]). -text('black',200,118,1,1,1,63,15,14,12,3,0,0,0,0,2,63,15,0,0,"",0,0,0,0,130,'',[ -minilines(63,15,0,0,1,0,0,[ -mini_line(63,12,3,0,0,0,[ -str_block(0,63,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,63,12,3,0,0,0,0,0,0,0, - "PDFParser")]) -]) -])]). -box('black','',350,200,450,250,2,2,1,20,0,0,0,0,0,'2',0,[ -]). -text('black',400,218,1,1,1,88,15,21,12,3,0,0,0,0,2,88,15,0,0,"",0,0,0,0,230,'',[ -minilines(88,15,0,0,1,0,0,[ -mini_line(88,12,3,0,0,0,[ -str_block(0,88,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,88,12,3,0,0,0,0,0,0,0, - "PDFInterpreter")]) -]) -])]). -box('black','',350,300,450,350,2,2,1,23,0,0,0,0,0,'2',0,[ -]). -text('black',400,318,1,1,1,65,15,24,12,3,0,0,0,0,2,65,15,0,0,"",0,0,0,0,330,'',[ -minilines(65,15,0,0,1,0,0,[ -mini_line(65,12,3,0,0,0,[ -str_block(0,65,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,65,12,3,0,-1,0,0,0,0,0, - "PDFDevice")]) -]) -])]). -box('black','',180,250,280,300,2,2,1,29,0,0,0,0,0,'2',0,[ -]). -text('black',230,268,1,1,1,131,15,30,12,3,2,0,0,0,2,131,15,0,0,"",0,0,0,0,280,'',[ -minilines(131,15,0,0,1,0,0,[ -mini_line(131,12,3,0,0,0,[ -str_block(0,131,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,131,12,3,0,0,0,0,0,0,0, - "PDFResourceManager")]) -]) -])]). -poly('black','',2,[ - 250,140,350,140],1,2,1,45,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('black','',2,[ - 350,110,250,110],1,2,1,46,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('black','',2,[ - 400,150,400,200],1,2,1,47,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('black','',2,[ - 400,250,400,300],1,2,1,56,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('black','',2,[ - 400,350,400,380],0,2,1,65,0,0,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -text('black',400,388,3,1,1,44,41,71,12,3,0,-2,0,0,2,44,41,0,0,"",0,0,0,0,400,'',[ -minilines(44,41,0,0,1,-2,0,[ -mini_line(44,12,3,0,0,0,[ -str_block(0,44,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,44,12,3,0,-1,0,0,0,0,0, - "Display")]) -]), -mini_line(20,12,3,0,0,0,[ -str_block(0,20,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,20,12,3,0,-1,0,0,0,0,0, - "File")]) -]), -mini_line(23,12,3,0,0,0,[ -str_block(0,23,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,23,12,3,0,-1,0,0,0,0,0, - "etc.")]) -]) -])]). -text('black',300,88,1,1,1,92,15,79,12,3,0,0,0,0,2,92,15,0,0,"",0,0,0,0,100,'',[ -minilines(92,15,0,0,1,0,0,[ -mini_line(92,12,3,0,0,0,[ -str_block(0,92,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,92,12,3,0,-1,0,0,0,0,0, - "request objects")]) -]) -])]). -text('black',300,148,1,1,1,78,15,84,12,3,0,0,0,0,2,78,15,0,0,"",0,0,0,0,160,'',[ -minilines(78,15,0,0,1,0,0,[ -mini_line(78,12,3,0,0,0,[ -str_block(0,78,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,78,12,3,0,-1,0,0,0,0,0, - "store objects")]) -]) -])]). -oval('black','',20,100,120,150,2,2,1,106,0,0,0,0,0,'2',0,[ -]). -text('black',70,118,1,1,1,46,15,107,12,3,0,0,0,0,2,46,15,0,0,"",0,0,0,0,130,'',[ -minilines(46,15,0,0,1,0,0,[ -mini_line(46,12,3,0,0,0,[ -str_block(0,46,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,46,12,3,0,-1,0,0,0,0,0, - "PDF file")]) -]) -])]). -poly('black','',2,[ - 120,120,150,120],0,2,1,114,0,2,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -text('black',400,158,1,1,1,84,15,115,12,3,2,0,0,0,2,84,15,0,0,"",0,0,0,0,170,'',[ -minilines(84,15,0,0,1,0,0,[ -mini_line(84,12,3,0,0,0,[ -str_block(0,84,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,84,12,3,0,-1,0,0,0,0,0, - "page contents")]) -]) -])]). -text('black',400,258,1,1,1,129,15,119,12,3,2,0,0,0,2,129,15,0,0,"",0,0,0,0,270,'',[ -minilines(129,15,0,0,1,0,0,[ -mini_line(129,12,3,0,0,0,[ -str_block(0,129,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,129,12,3,0,-1,0,0,0,0,0, - "rendering instructions")]) -]) -])]). diff --git a/docs/objrel.png b/docs/objrel.png deleted file mode 100644 index 3b9f5b6275f8f3f4f49762002bcbbd3be93db1d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2038 zcmV8%Z1h@U)6S2&A0%a6;*xo~*Cl?u!A*KD1DUaQzpQ zOUU=>#8wwl8-_q5scGmfF41zV~g`um~;)brOAb6u> zjWf%VH*`w^LGy98@-%PB>vPr>45qV2Pjy!Wfp_8iN3Kzy=PhyYyu*$uiE)N4047R46FNabDERKh6tG!2K z;V6Y+JLwi`8Wh$FULgsENBzS3XZ-}54RZcR(sm8*ar2nJF0WD!bi0|D!PpepT}FSEI}YYU=|_J4Acoje)PJ6 zK)zfHpXa;bDHax;6aU>>@=~+CnWbv?W|EKNV_<7#_esIcntj+YF6<%)-{#W!G0@Ue zmKK22o?YQ!KK*unp}ZV|#5&)hzprM?93*mqhdY%7iI0K0oFV#RjzOpK_B@q%IFp}= zSFVT@?4x?F>dTbqa&FLK$7%8V5j@DJ4`y%QX~7mPr$q;T^uuMFhx0BY5HK z<3Y}Wl!Rf*Qss5$t-c<>_L@z&qk51`A1u_%A=uh$?d~+l`F1{d<=oiFYt@86^xc8J zAJHQKddxwOa*^XImp=uK>m2mT3cZ$#Ts=lYo1NdmdNr_~9VOrjIT}VJ_69A}?hMMq`(6mza9IB^ztB~- zpRSaFkkU$`bGBp<0)$tzLOc4B(HV@}qVSd)B?r!S20J8C*rrC+ft}7^Fcj`%#h`8< z=Yuu(9o6Q1ogLM+aVu)<-qef^$G|xL}M*l>J1EfeI#ez4jpn-KW#Wil~6SWJgVFP z0)>PtfgpdSLqku(quc~e-~|46;b8#@hY_9!gSA2C!QgPu0ENRn+=IbC;Sjjc{TJZ4 z#ry+K7lWnC+ADW)T?E4Gj9JCOpK``Zc|m!eQ1+p)LP+f6JoyNNrRz;+TR(qB z$QkUdRS{9ggWA-8o-5@NBLXFE?{VsAv?>`rSUCmb%hpoUH5Qb%cQ5+`yMPbZ!AUl$>8xVd#dsHL%soeIIDVa|K0dN<0w@Uz#&&VsHd-d_}#>hC{n zy)Q2(?}aU|&`z8zW~Vo##SERvQ1VUge(1flDN(XnqbR?m+pnCwCUje|w^|~~bi;vf zXw!k}sW7Y(WuL)a4_=8*Ivq+DvkgO%GnGcBLX`1+90%(}Pc&#z-fDc_YLwOSNA>Ph z9OlNr+GdM=s=!HRHBi-wgr=M~wegUr*GXIy)^aPG+b@ZtHn);`IzuGk7EQIe`GzR@+Uv~RO6Hx$SKb57<+cOO#)d9u zisG=DXMJ4E%iD(T^idqvEOu0X+udo>=RYo$g`q!n{Y7y|v9Rthg656~hAn>;0BXJ} zaroIkbpZN! zcQQH@9DsZ$L6GlcbPPGT&~-ccMOVnd&L97GC;_K7%xY6F7krIDua`?8S!9UBO@}HXVx<;IPYnx)z7SlE%JzaZ3p7O}Q`L z(^3%Fmb}*~D6H|X5IFe53vTQS0EbVlxv?(*96l%K#=ZdX)|Uf7r=7Uw{>qEB4S=V% zt$M#JV^1&wpk&*r72`aoxmj_@nn}qo^kvO$TpY6JF;hR#qEc`lcmzP_Uuu<}GiX8} zi*cmZGWx3RjsxP5ojld)s}|sR&H!3C z=p{I8&BCF(VX->M7A@l#3soF!Z6Kj#Oo8Ez2Q~Hrx^gTJx^ES9t=@X@xSxmJk6i1p z5nzx&BLMd}IBd+}9tVewa_)2P{Vlcx9m)F;IFhqDs{Vns3!FRHiKMh@gJ&z&4yA*( zfirT+g}@n^tpTbGLe~InwLvQsvFd0`cD?x&vCcuStk7#Y{OZvQ%@hz2y+Y>F-$ON8 USqtW(82|tP07*qoM6N<$f`cLBtN;K2 diff --git a/docs/programming.html b/docs/programming.html deleted file mode 100644 index dc4c186..0000000 --- a/docs/programming.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - -Programming with PDFMiner - - - -
    - -Last Modified: Mon Mar 24 11:49:28 UTC 2014 - -
    - -

    -[Back to PDFMiner homepage] - -

    Programming with PDFMiner

    -

    -This page explains how to use PDFMiner as a library -from other applications. -

    - -

    Overview

    -

    -PDF is evil. Although it is called a PDF -"document", it's nothing like Word or HTML document. PDF is more -like a graphic representation. PDF contents are just a bunch of -instructions that tell how to place the stuff at each exact -position on a display or paper. In most cases, it has no logical -structure such as sentences or paragraphs and it cannot adapt -itself when the paper size changes. PDFMiner attempts to -reconstruct some of those structures by guessing from its -positioning, but there's nothing guaranteed to work. Ugly, I -know. Again, PDF is evil. - -

    -[More technical details about the internal structure of PDF: -"How to Extract Text Contents from PDF Manually" -(part 1) -(part 2) -(part 3)] - -

    -Because a PDF file has such a big and complex structure, -parsing a PDF file as a whole is time and memory consuming. However, -not every part is needed for most PDF processing tasks. Therefore -PDFMiner takes a strategy of lazy parsing, which is to parse the -stuff only when it's necessary. To parse PDF files, you need to use at -least two classes: PDFParser and PDFDocument. -These two objects are associated with each other. -PDFParser fetches data from a file, -and PDFDocument stores it. You'll also need -PDFPageInterpreter to process the page contents -and PDFDevice to translate it to whatever you need. -PDFResourceManager is used to store -shared resources such as fonts or images. - -

    -Figure 1 shows the relationship between the classes in PDFMiner. - -

    -
    -Figure 1. Relationships between PDFMiner classes -
    - -

    Basic Usage

    -

    -A typical way to parse a PDF file is the following: -

    -from pdfminer.pdfparser import PDFParser
    -from pdfminer.pdfdocument import PDFDocument
    -from pdfminer.pdfpage import PDFPage
    -from pdfminer.pdfpage import PDFTextExtractionNotAllowed
    -from pdfminer.pdfinterp import PDFResourceManager
    -from pdfminer.pdfinterp import PDFPageInterpreter
    -from pdfminer.pdfdevice import PDFDevice
    -
    -# Open a PDF file.
    -fp = open('mypdf.pdf', 'rb')
    -# Create a PDF parser object associated with the file object.
    -parser = PDFParser(fp)
    -# Create a PDF document object that stores the document structure.
    -# Supply the password for initialization.
    -document = PDFDocument(parser, password)
    -# Check if the document allows text extraction. If not, abort.
    -if not document.is_extractable:
    -    raise PDFTextExtractionNotAllowed
    -# Create a PDF resource manager object that stores shared resources.
    -rsrcmgr = PDFResourceManager()
    -# Create a PDF device object.
    -device = PDFDevice(rsrcmgr)
    -# Create a PDF interpreter object.
    -interpreter = PDFPageInterpreter(rsrcmgr, device)
    -# Process each page contained in the document.
    -for page in PDFPage.create_pages(document):
    -    interpreter.process_page(page)
    -
    - -

    Performing Layout Analysis

    -

    -Here is a typical way to use the layout analysis function: -

    -from pdfminer.layout import LAParams
    -from pdfminer.converter import PDFPageAggregator
    -
    -# Set parameters for analysis.
    -laparams = LAParams()
    -# Create a PDF page aggregator object.
    -device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    -interpreter = PDFPageInterpreter(rsrcmgr, device)
    -for page in PDFPage.create_pages(document):
    -    interpreter.process_page(page)
    -    # receive the LTPage object for the page.
    -    layout = device.get_result()
    -
    - -A layout analyzer returns a LTPage object for each page -in the PDF document. This object contains child objects within the page, -forming a tree structure. Figure 2 shows the relationship between -these objects. - -
    -
    -Figure 2. Layout objects and its tree structure -
    - -
    -
    LTPage -
    Represents an entire page. May contain child objects like -LTTextBox, LTFigure, LTImage, LTRect, -LTCurve and LTLine. - -
    LTTextBox -
    Represents a group of text chunks that can be contained in a rectangular area. -Note that this box is created by geometric analysis and does not necessarily -represents a logical boundary of the text. -It contains a list of LTTextLine objects. -get_text() method returns the text content. - -
    LTTextLine -
    Contains a list of LTChar objects that represent -a single text line. The characters are aligned either horizontaly -or vertically, depending on the text's writing mode. -get_text() method returns the text content. - -
    LTChar -
    LTAnno -
    Represent an actual letter in the text as a Unicode string. -Note that, while a LTChar object has actual boundaries, -LTAnno objects does not, as these are "virtual" characters, -inserted by a layout analyzer according to the relationship between two characters -(e.g. a space). - -
    LTFigure -
    Represents an area used by PDF Form objects. PDF Forms can be used to -present figures or pictures by embedding yet another PDF document within a page. -Note that LTFigure objects can appear recursively. - -
    LTImage -
    Represents an image object. Embedded images can be -in JPEG or other formats, but currently PDFMiner does not -pay much attention to graphical objects. - -
    LTLine -
    Represents a single straight line. -Could be used for separating text or figures. - -
    LTRect -
    Represents a rectangle. -Could be used for framing another pictures or figures. - -
    LTCurve -
    Represents a generic Bezier curve. -
    - -

    -Also, check out a more complete example by Denis Papathanasiou(Extracting Text & Images from PDF Files). - -

    Obtaining Table of Contents

    -

    -PDFMiner provides functions to access the document's table of contents -("Outlines"). - -

    -from pdfminer.pdfparser import PDFParser
    -from pdfminer.pdfdocument import PDFDocument
    -
    -# Open a PDF document.
    -fp = open('mypdf.pdf', 'rb')
    -parser = PDFParser(fp)
    -document = PDFDocument(parser, password)
    -
    -# Get the outlines of the document.
    -outlines = document.get_outlines()
    -for (level,title,dest,a,se) in outlines:
    -    print (level, title)
    -
    - -

    -Some PDF documents use page numbers as destinations, while others -use page numbers and the physical location within the page. Since -PDF does not have a logical structure, and it does not provide a -way to refer to any in-page object from the outside, there's no -way to tell exactly which part of text these destinations are -referring to. - -

    Extending Functionality

    - -

    -You can extend PDFPageInterpreter and PDFDevice class -in order to process them differently / obtain other information. - -


    -
    Yusuke Shinyama
    - diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..1e76fda --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1 @@ +sphinx-argparse \ No newline at end of file diff --git a/docs/source/_static/layout_analysis.html b/docs/source/_static/layout_analysis.html new file mode 100644 index 0000000..3db7b00 --- /dev/null +++ b/docs/source/_static/layout_analysis.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + +
    M
    Q u ic kb r o w n
    + → + ← + W
    \ No newline at end of file diff --git a/docs/source/_static/layout_analysis_group_boxes.html b/docs/source/_static/layout_analysis_group_boxes.html new file mode 100644 index 0000000..23889da --- /dev/null +++ b/docs/source/_static/layout_analysis_group_boxes.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + + +
    + + Q u i c k   b r o w n
    f o x +
    +
    j u m p s ...
    \ No newline at end of file diff --git a/docs/source/_static/layout_analysis_group_lines.html b/docs/source/_static/layout_analysis_group_lines.html new file mode 100644 index 0000000..d3bd852 --- /dev/null +++ b/docs/source/_static/layout_analysis_group_lines.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Q u i c k   b r o w + n
    + L1 +
    + f o x +            +            + + L2 +
    \ No newline at end of file diff --git a/docs/layout.png b/docs/source/_static/layout_analysis_output.png similarity index 100% rename from docs/layout.png rename to docs/source/_static/layout_analysis_output.png diff --git a/docs/source/api/commandline.rst b/docs/source/api/commandline.rst new file mode 100644 index 0000000..7e4aba3 --- /dev/null +++ b/docs/source/api/commandline.rst @@ -0,0 +1,25 @@ +.. _api_commandline: + + +Command-line API +**************** + +.. _api_pdf2txt: + +pdf2txt.py +========== + +.. argparse:: + :module: tools.pdf2txt + :func: maketheparser + :prog: python tools/pdf2txt.py + +.. _api_dumppdf: + +dumppdf.py +========== + +.. argparse:: + :module: tools.dumppdf + :func: create_parser + :prog: python tools/dumppdf.py diff --git a/docs/source/api/composable.rst b/docs/source/api/composable.rst new file mode 100644 index 0000000..7ccc184 --- /dev/null +++ b/docs/source/api/composable.rst @@ -0,0 +1,20 @@ +.. _api_composable: + +Composable API +************** + +.. _api_laparams: + +LAParams +======== + +.. currentmodule:: pdfminer.layout +.. autoclass:: LAParams + +Todo: +===== + +- `PDFDevice` + - `TextConverter` + - `PDFPageAggregator` +- `PDFPageInterpreter` \ No newline at end of file diff --git a/docs/source/api/highlevel.rst b/docs/source/api/highlevel.rst new file mode 100644 index 0000000..4f34b46 --- /dev/null +++ b/docs/source/api/highlevel.rst @@ -0,0 +1,21 @@ +.. _api_highlevel: + +High-level functions API +************************ + +.. _api_extract_text: + +extract_text +============ + +.. currentmodule:: pdfminer.high_level +.. autofunction:: extract_text + + +.. _api_extract_text_to_fp: + +extract_text_to_fp +================== + +.. currentmodule:: pdfminer.high_level +.. autofunction:: extract_text_to_fp diff --git a/docs/source/api/index.rst b/docs/source/api/index.rst new file mode 100644 index 0000000..047ed2d --- /dev/null +++ b/docs/source/api/index.rst @@ -0,0 +1,9 @@ +API documentation +***************** + +.. toctree:: + :maxdepth: 2 + + commandline + highlevel + composable diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..a3a6be7 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,61 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. + +import os +import sys +sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), '../../')) + + +# -- Project information ----------------------------------------------------- + +project = 'pdfminer.six' +copyright = '2019, Yusuke Shinyama, Philippe Guglielmetti & Pieter Marsman' +author = 'Yusuke Shinyama, Philippe Guglielmetti & Pieter Marsman' + +# The full version, including alpha/beta/rc tags +release = '20191020' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinxarg.ext', + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', +] + +# Root rst file +master_doc = 'index' + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..dbec983 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,72 @@ +Welcome to pdfminer.six's documentation! +**************************************** + +.. image:: https://travis-ci.org/pdfminer/pdfminer.six.svg?branch=master + :target: https://travis-ci.org/pdfminer/pdfminer.six + :alt: Travis-ci build badge + +.. image:: https://img.shields.io/pypi/v/pdfminer.six.svg + :target: https://pypi.python.org/pypi/pdfminer.six/ + :alt: PyPi version badge + +.. image:: https://badges.gitter.im/pdfminer-six/Lobby.svg + :target: https://gitter.im/pdfminer-six/Lobby?utm_source=badge&utm_medium + :alt: gitter badge + + +Pdfminer.six is a python package for extracting information from PDF documents. + +Check out the source on `github `_. + +Content +======= + +.. toctree:: + :maxdepth: 2 + + tutorials/index + topics/index + api/index + + +Features +======== + +* Parse all objects from a PDF document into Python objects. +* Analyze and group text in a human-readable way. +* Extract text, images (JPG, JBIG2 and Bitmaps), table-of-contents, tagged + contents and more. +* Support for (almost all) features from the PDF-1.7 specification +* Support for Chinese, Japanese and Korean CJK) languages as well as vertical + writing. +* Support for various font types (Type1, TrueType, Type3, and CID). +* Support for basic encryption (RC4). + + +Installation instructions +========================= + +Before using it, you must install it using Python 2.7 or newer. + +:: + + $ pip install pdfminer.six + +Note that Python 2.7 support is dropped at January, 2020. + +Common use-cases +---------------- + +* :ref:`tutorial_commandline` if you just want to extract text from a pdf once. +* :ref:`tutorial_highlevel` if you want to integrate pdfminer.six with your + Python code. +* :ref:`tutorial_composable` when you want to tailor the behavior of + pdfmine.six to your needs. + + +Contributing +============ + +We welcome any contributors to pdfminer.six! But, before doing anything, take +a look at the `contribution guide +`_. diff --git a/docs/source/topics/converting_pdf_to_text.rst b/docs/source/topics/converting_pdf_to_text.rst new file mode 100644 index 0000000..b192d49 --- /dev/null +++ b/docs/source/topics/converting_pdf_to_text.rst @@ -0,0 +1,132 @@ +.. _topic_pdf_to_text: + +Converting a PDF file to text +***************************** + +Most PDF files look like they contain well structured text. But the reality is +that a PDF file does not contain anything that resembles a paragraphs, +sentences or even words. When it comes to text, a PDF file is only aware of +the characters and their placement. + +This makes extracting meaningful pieces of text from PDF's files difficult. +The characters that compose a paragraph are no different from those that +compose the table, the page footer or the description of a figure. Unlike +other documents formats, like a `.txt` file or a word document, the PDF format +does not contain a stream of text. + +A PDF document does consists of a collection of objects that together describe +the appearance of one or more pages, possibly accompanied by additional +interactive elements and higher-level application data. A PDF file contains +the objects making up a PDF document along with associated structural +information, all represented as a single self-contained sequence of bytes. [1]_ + +Layout analysis algorithm +========================= + +PDFMiner attempts to reconstruct some of those structures by using heuristics +on the positioning of characters. This works well for sentences and +paragraphs because meaningful groups of nearby characters can be made. + +The layout analysis consist of three different stages: it groups characters +into words and lines, then it groups lines into boxes and finally it groups +textboxes hierarchically. These stages are discussed in the following +sections. The resulting output of the layout analysis is an ordered hierarchy +of layout objects on a PDF page. + +.. figure:: ../_static/layout_analysis_output.png + :align: center + + The output of the layout analysis is a hierarchy of layout objects. + + +The output of the layout analysis heavily depends on a couple of parameters. +All these parameters are part of the :ref:`api_laparams` class. + +Grouping characters into words and lines +---------------------------------------- + +The first step in going from characters to text is to group characters in a +meaningful way. Each character has an x-coordinate and a y-coordinate for its +bottom-left corner and upper-right corner, i.e. its bounding box. Pdfminer +.six uses these bounding boxes to decide which characters belong together. + +Characters that are both horizontally and vertically close are grouped. How +close they should be is determined by the `char_margin` (M in figure) and the +`line_overlap` (not in figure) parameter. The horizontal *distance* between the +bounding boxes of two characters should be smaller that the `char_margin` and +the vertical *overlap* between the bounding boxes should be smaller the the +`line_overlap`. + + +.. raw:: html + :file: ../_static/layout_analysis.html + +The values of `char_margin` and `line_overlap` are relative to the size of +the bounding boxes of the characters. The `char_margin` is relative to the +maximum width of either one of the bounding boxes, and the `line_overlap` is +relative to the minimum height of either one of the bounding boxes. + +Spaces need to be inserted between characters because the PDF format has no +notion of the space character. A space is inserted if the characters are +further apart that the `word_margin` (W in the figure). The `word_margin` is +relative to the maximum width or height of the new character. Having a larger +`word_margin` creates smaller words and inserts spaces between characters +more often. Note that the `word_margin` should be smaller than the +`char_margin` otherwise all the characters are seperated by a space. + +The result of this stage is a list of lines. Each line consists a list of +characters. These characters either original `LTChar` characters that +originate from the PDF file, or inserted `LTAnno` characters that +represent spaces between words or newlines at the end of each line. + +Grouping lines into boxes +------------------------- + +The second step is grouping lines in a meaningful way. Each line has a +bounding box that is determined by the bounding boxes of the characters that +it contains. Like grouping characters, pdfminer.six uses the bounding boxes +to group the lines. + +Lines that are both horizontally overlapping and vertically close are grouped. +How vertically close the lines should be is determined by the `line_margin`. +This margin is specified relative to the height of the bounding box. Lines +are close if the gap between the tops (see L :sub:`1` in the figure) and bottoms +(see L :sub:`2`) in the figure) of the bounding boxes are closer together +than the absolute line margin, i.e. the `line_margin` multiplied by the +height of the bounding box. + +.. raw:: html + :file: ../_static/layout_analysis_group_lines.html + +The result of this stage is a list of text boxes. Each box consist of a list +of lines. + +Grouping textboxes hierarchically +--------------------------------- + +the last step is to group the text boxes in a meaningful way. This step +repeatedly merges the two text boxes that are closest to each other. + +The closeness of bounding boxes is computed as the area that is between the +two text boxes (the blue area in the figure). In other words, it is the area of +the bounding box that surrounds both lines, minus the area of the bounding +boxes of the individual lines. + +.. raw:: html + :file: ../_static/layout_analysis_group_boxes.html + + +Working with rotated characters +=============================== + +The algorithm described above assumes that all characters have the same +orientation. However, any writing direction is possible in a PDF. To +accommodate for this, pdfminer.six allows to detect vertical writing with the +`detect_vertical` parameter. This will apply all the grouping steps as if the +pdf was rotated 90 (or 270) degrees + +References +========== + +.. [1] Adobe System Inc. (2007). *Pdf reference: Adobe portable document + format, version 1.7.* diff --git a/docs/source/topics/index.rst b/docs/source/topics/index.rst new file mode 100644 index 0000000..30c000a --- /dev/null +++ b/docs/source/topics/index.rst @@ -0,0 +1,7 @@ +Using pdfminer.six +****************** + +.. toctree:: + :maxdepth: 2 + + converting_pdf_to_text diff --git a/docs/source/tutorials/commandline.rst b/docs/source/tutorials/commandline.rst new file mode 100644 index 0000000..2477c65 --- /dev/null +++ b/docs/source/tutorials/commandline.rst @@ -0,0 +1,41 @@ +.. _tutorial_commandline: + +Get started with command-line tools +*********************************** + +pdfminer.six has several tools that can be used from the command line. The +command-line tools are aimed at users that occasionally want to extract text +from a pdf. + +Take a look at the high-level or composable interface if you want to use +pdfminer.six programmatically. + +Examples +======== + +pdf2txt.py +---------- + +:: + + $ python tools/pdf2txt.py example.pdf + all the text from the pdf appears on the command line + +The :ref:`api_pdf2txt` tool extracts all the text from a PDF. It uses layout +analysis with sensible defaults to order and group the text in a sensible way. + +dumppdf.py +---------- + +:: + + $ python tools/dumppdf.py -a example.pdf + + ... + + ... + + +The :ref:`api_dumppdf` tool can be used to extract the internal structure from a +PDF. This tool is primarily for debugging purposes, but that can be useful to +anybody working with PDF's. diff --git a/docs/source/tutorials/composable.rst b/docs/source/tutorials/composable.rst new file mode 100644 index 0000000..971332b --- /dev/null +++ b/docs/source/tutorials/composable.rst @@ -0,0 +1,33 @@ +.. _tutorial_composable: + +Get started using the composable components API +*********************************************** + +The command line tools and the high-level API are just shortcuts for often +used combinations of pdfminer.six components. You can use these components to +modify pdfminer.six to your own needs. + +For example, to extract the text from a PDF file and save it in a python +variable:: + + from io import StringIO + + from pdfminer.converter import TextConverter + from pdfminer.layout import LAParams + from pdfminer.pdfdocument import PDFDocument + from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter + from pdfminer.pdfpage import PDFPage + from pdfminer.pdfparser import PDFParser + + output_string = StringIO() + with open('samples/simple1.pdf', 'rb') as in_file: + parser = PDFParser(in_file) + doc = PDFDocument(parser) + rsrcmgr = PDFResourceManager() + device = TextConverter(rsrcmgr, output_string, laparams=LAParams()) + interpreter = PDFPageInterpreter(rsrcmgr, device) + for page in PDFPage.create_pages(doc): + interpreter.process_page(page) + + print(output_string.getvalue()) + diff --git a/docs/source/tutorials/highlevel.rst b/docs/source/tutorials/highlevel.rst new file mode 100644 index 0000000..15424b9 --- /dev/null +++ b/docs/source/tutorials/highlevel.rst @@ -0,0 +1,67 @@ +.. testsetup:: + + import sys + from pdfminer.high_level import extract_text_to_fp, extract_text + +.. _tutorial_highlevel: + +Get started using the high-level functions +****************************************** + +The high-level API can be used to do common tasks. + +The most simple way to extract text from a PDF is to use +:ref:`api_extract_text`: + +.. doctest:: + + >>> text = extract_text('samples/simple1.pdf') + >>> print(repr(text)) + 'Hello \n\nWorld\n\nWorld\n\nHello \n\nH e l l o \n\nH e l l o \n\nW o r l d\n\nW o r l d\n\n\x0c' + >>> print(text) + ... # doctest: +NORMALIZE_WHITESPACE + Hello + + World + + World + + Hello + + H e l l o + + H e l l o + + W o r l d + + W o r l d + + + +To read text from a PDF and print it on the command line: + +.. doctest:: + + >>> if sys.version_info > (3, 0): + ... from io import StringIO + ... else: + ... from io import BytesIO as StringIO + >>> output_string = StringIO() + >>> with open('samples/simple1.pdf', 'rb') as fin: + ... extract_text_to_fp(fin, output_string) + >>> print(output_string.getvalue().strip()) + Hello WorldHello WorldHello WorldHello World + +Or to convert it to html and use layout analysis: + +.. doctest:: + + >>> if sys.version_info > (3, 0): + ... from io import StringIO + ... else: + ... from io import BytesIO as StringIO + >>> from pdfminer.layout import LAParams + >>> output_string = StringIO() + >>> with open('samples/simple1.pdf', 'rb') as fin: + ... extract_text_to_fp(fin, output_string, laparams=LAParams(), + ... output_type='html', codec=None) diff --git a/docs/source/tutorials/index.rst b/docs/source/tutorials/index.rst new file mode 100644 index 0000000..f1b5b17 --- /dev/null +++ b/docs/source/tutorials/index.rst @@ -0,0 +1,9 @@ +Getting started +*************** + +.. toctree:: + :maxdepth: 2 + + commandline + highlevel + composable diff --git a/docs/style.css b/docs/style.css deleted file mode 100644 index 612e308..0000000 --- a/docs/style.css +++ /dev/null @@ -1,4 +0,0 @@ -blockquote { background: #eeeeee; } -h1 { border-bottom: solid black 2px; } -h2 { border-bottom: solid black 1px; } -.comment { color: darkgreen; } diff --git a/pdfminer/converter.py b/pdfminer/converter.py index 4e51e37..eaf0520 100644 --- a/pdfminer/converter.py +++ b/pdfminer/converter.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import logging import re +import sys from .pdfdevice import PDFTextDevice from .pdffont import PDFUnicodeNotDefined from .layout import LTContainer @@ -271,6 +272,8 @@ class HTMLConverter(PDFConverter): def write(self, text): if self.codec: text = text.encode(self.codec) + if sys.version_info < (3, 0): + text = str(text) self.outfp.write(text) return diff --git a/pdfminer/high_level.py b/pdfminer/high_level.py index 2ce4276..17172c5 100644 --- a/pdfminer/high_level.py +++ b/pdfminer/high_level.py @@ -1,26 +1,20 @@ -# -*- coding: utf-8 -*- -""" -Functions that encapsulate "usual" use-cases for pdfminer, for use making -bundled scripts and for using pdfminer as a module for routine tasks. -""" - +"""Functions that can be used for the most common use-cases for pdfminer.six""" + import logging -import six import sys +import six + # Conditional import because python 2 is stupid if sys.version_info > (3, 0): from io import StringIO else: from io import BytesIO as StringIO -from .pdfdocument import PDFDocument -from .pdfparser import PDFParser from .pdfinterp import PDFResourceManager, PDFPageInterpreter -from .pdfdevice import PDFDevice, TagExtractor +from .pdfdevice import TagExtractor from .pdfpage import PDFPage from .converter import XMLConverter, HTMLConverter, TextConverter -from .cmapdb import CMapDB from .image import ImageWriter from .layout import LAParams @@ -35,21 +29,25 @@ def extract_text_to_fp(inf, outfp, Takes loads of optional arguments but the defaults are somewhat sane. Beware laparams: Including an empty LAParams is not the same as passing None! Returns nothing, acting as it does on two streams. Use StringIO to get strings. - - output_type: May be 'text', 'xml', 'html', 'tag'. Only 'text' works properly. - codec: Text decoding codec - laparams: An LAParams object from pdfminer.layout. - Default is None but may not layout correctly. - maxpages: How many pages to stop parsing after - page_numbers: zero-indexed page numbers to operate on. - password: For encrypted PDFs, the password to decrypt. - scale: Scale factor - rotation: Rotation factor - layoutmode: Default is 'normal', see pdfminer.converter.HTMLConverter - output_dir: If given, creates an ImageWriter for extracted images. - strip_control: Does what it says on the tin - debug: Output more logging data - disable_caching: Does what it says on the tin + + :param inf: a file-like object to read PDF structure from, such as a + file handler (using the builtin `open()` function) or a `BytesIO`. + :param outfp: a file-like object to write the text to. + :param output_type: May be 'text', 'xml', 'html', 'tag'. Only 'text' works properly. + :param codec: Text decoding codec + :param laparams: An LAParams object from pdfminer.layout. Default is None but may not layout correctly. + :param maxpages: How many pages to stop parsing after + :param page_numbers: zero-indexed page numbers to operate on. + :param password: For encrypted PDFs, the password to decrypt. + :param scale: Scale factor + :param rotation: Rotation factor + :param layoutmode: Default is 'normal', see pdfminer.converter.HTMLConverter + :param output_dir: If given, creates an ImageWriter for extracted images. + :param strip_control: Does what it says on the tin + :param debug: Output more logging data + :param disable_caching: Does what it says on the tin + :param other: + :return: """ if '_py2_no_more_posargs' in kwargs is not None: raise DeprecationWarning( @@ -67,7 +65,7 @@ def extract_text_to_fp(inf, outfp, imagewriter = None if output_dir: imagewriter = ImageWriter(output_dir) - + rsrcmgr = PDFResourceManager(caching=not disable_caching) if output_type == 'text': @@ -96,7 +94,7 @@ def extract_text_to_fp(inf, outfp, caching=not disable_caching, check_extractable=True): page.rotate = (page.rotate + rotation) % 360 - interpreter.process_page(page) + interpreter.process_page(page) device.close() diff --git a/pdfminer/layout.py b/pdfminer/layout.py index 4ae7822..8b8e397 100644 --- a/pdfminer/layout.py +++ b/pdfminer/layout.py @@ -1,17 +1,15 @@ import heapq + from .utils import INF from .utils import Plane -from .utils import get_bound -from .utils import uniq -from .utils import fsplit -from .utils import bbox2str -from .utils import matrix2str from .utils import apply_matrix_pt +from .utils import bbox2str +from .utils import fsplit +from .utils import get_bound +from .utils import matrix2str +from .utils import uniq -import six # Python 2+3 compatibility -## IndexAssigner -## class IndexAssigner(object): def __init__(self, index=0): @@ -28,9 +26,33 @@ class IndexAssigner(object): return -## LAParams -## class LAParams(object): + """Parameters for layout analysis + + :param line_overlap: If two characters have more overlap than this they + are considered to be on the same line. The overlap is specified + relative to the minimum height of both characters. + :param char_margin: If two characters are closer together than this + margin they are considered to be part of the same word. If + characters are on the same line but not part of the same word, an + intermediate space is inserted. The margin is specified relative to + the width of the character. + :param word_margin: If two words are are closer together than this + margin they are considered to be part of the same line. A space is + added in between for readability. The margin is specified relative + to the width of the word. + :param line_margin: If two lines are are close together they are + considered to be part of the same paragraph. The margin is + specified relative to the height of a line. + :param boxes_flow: Specifies how much a horizontal and vertical position + of a text matters when determining the order of lines. The value + should be within the range of -1.0 (only horizontal position + matters) to +1.0 (only vertical position matters). + :param detect_vertical: If vertical text should be considered during + layout analysis + :param all_texts: If layout analysis should be performed on text in + figures. + """ def __init__(self, line_overlap=0.5, @@ -54,30 +76,28 @@ class LAParams(object): (self.char_margin, self.line_margin, self.word_margin, self.all_texts)) -## LTItem -## class LTItem(object): + """Interface for things that can be analyzed""" def analyze(self, laparams): """Perform the layout analysis.""" return -## LTText -## class LTText(object): + """Interface for things that have text""" def __repr__(self): return ('<%s %r>' % (self.__class__.__name__, self.get_text())) def get_text(self): + """Text contained in this object""" raise NotImplementedError -## LTComponent -## class LTComponent(LTItem): + """Object with a bounding box""" def __init__(self, bbox): LTItem.__init__(self) @@ -91,10 +111,13 @@ class LTComponent(LTItem): # Disable comparison. def __lt__(self, _): raise ValueError + def __le__(self, _): raise ValueError + def __gt__(self, _): raise ValueError + def __ge__(self, _): raise ValueError @@ -149,9 +172,8 @@ class LTComponent(LTItem): return 0 -## LTCurve -## class LTCurve(LTComponent): + """A generic Bezier curve""" def __init__(self, linewidth, pts, stroke = False, fill = False, evenodd = False, stroking_color = None, non_stroking_color = None): LTComponent.__init__(self, get_bound(pts)) @@ -168,18 +190,22 @@ class LTCurve(LTComponent): return ','.join('%.3f,%.3f' % p for p in self.pts) -## LTLine -## class LTLine(LTCurve): + """A single straight line. + + Could be used for separating text or figures. + """ def __init__(self, linewidth, p0, p1, stroke = False, fill = False, evenodd = False, stroking_color = None, non_stroking_color = None): LTCurve.__init__(self, linewidth, [p0, p1], stroke, fill, evenodd, stroking_color, non_stroking_color) return -## LTRect -## class LTRect(LTCurve): + """A rectangle. + + Could be used for framing another pictures or figures. + """ def __init__(self, linewidth, bbox, stroke = False, fill = False, evenodd = False, stroking_color = None, non_stroking_color = None): (x0, y0, x1, y1) = bbox @@ -187,9 +213,11 @@ class LTRect(LTCurve): return -## LTImage -## class LTImage(LTComponent): + """An image object. + + Embedded images can be in JPEG, Bitmap or JBIG2. + """ def __init__(self, name, stream, bbox): LTComponent.__init__(self, bbox) @@ -210,9 +238,13 @@ class LTImage(LTComponent): bbox2str(self.bbox), self.srcsize)) -## LTAnno -## class LTAnno(LTItem, LTText): + """Actual letter in the text as a Unicode string. + + Note that, while a LTChar object has actual boundaries, LTAnno objects does + not, as these are "virtual" characters, inserted by a layout analyzer + according to the relationship between two characters (e.g. a space). + """ def __init__(self, text): self._text = text @@ -222,9 +254,8 @@ class LTAnno(LTItem, LTText): return self._text -## LTChar -## class LTChar(LTComponent, LTText): + """Actual letter in the text as a Unicode string.""" def __init__(self, matrix, font, fontsize, scaling, rise, text, textwidth, textdisp, ncs, graphicstate): @@ -285,9 +316,8 @@ class LTChar(LTComponent, LTText): return True -## LTContainer -## class LTContainer(LTComponent): + """Object that can be extended and analyzed""" def __init__(self, bbox): LTComponent.__init__(self, bbox) @@ -315,10 +345,7 @@ class LTContainer(LTComponent): return -## LTExpandableContainer -## class LTExpandableContainer(LTContainer): - def __init__(self): LTContainer.__init__(self, (+INF, +INF, -INF, -INF)) return @@ -330,10 +357,7 @@ class LTExpandableContainer(LTContainer): return -## LTTextContainer -## class LTTextContainer(LTExpandableContainer, LTText): - def __init__(self): LTText.__init__(self) LTExpandableContainer.__init__(self) @@ -343,9 +367,12 @@ class LTTextContainer(LTExpandableContainer, LTText): return ''.join(obj.get_text() for obj in self if isinstance(obj, LTText)) -## LTTextLine -## class LTTextLine(LTTextContainer): + """Contains a list of LTChar objects that represent a single text line. + + The characters are aligned either horizontally or vertically, depending on + the text's writing mode. + """ def __init__(self, word_margin): LTTextContainer.__init__(self) @@ -367,7 +394,6 @@ class LTTextLine(LTTextContainer): class LTTextLineHorizontal(LTTextLine): - def __init__(self, word_margin): LTTextLine.__init__(self, word_margin) self._x1 = +INF @@ -393,7 +419,6 @@ class LTTextLineHorizontal(LTTextLine): class LTTextLineVertical(LTTextLine): - def __init__(self, word_margin): LTTextLine.__init__(self, word_margin) self._y0 = -INF @@ -418,12 +443,13 @@ class LTTextLineVertical(LTTextLine): abs(obj.y1-self.y1) < d))] -## LTTextBox -## -## A set of text objects that are grouped within -## a certain rectangular area. -## class LTTextBox(LTTextContainer): + """Represents a group of text chunks in a rectangular area. + + Note that this box is created by geometric analysis and does not necessarily + represents a logical boundary of the text. It contains a list of + LTTextLine objects. + """ def __init__(self): LTTextContainer.__init__(self) @@ -437,7 +463,6 @@ class LTTextBox(LTTextContainer): class LTTextBoxHorizontal(LTTextBox): - def analyze(self, laparams): LTTextBox.analyze(self, laparams) self._objs.sort(key=lambda obj: -obj.y1) @@ -448,7 +473,6 @@ class LTTextBoxHorizontal(LTTextBox): class LTTextBoxVertical(LTTextBox): - def analyze(self, laparams): LTTextBox.analyze(self, laparams) self._objs.sort(key=lambda obj: -obj.x1) @@ -458,10 +482,7 @@ class LTTextBoxVertical(LTTextBox): return 'tb-rl' -## LTTextGroup -## class LTTextGroup(LTTextContainer): - def __init__(self, objs): LTTextContainer.__init__(self) self.extend(objs) @@ -469,7 +490,6 @@ class LTTextGroup(LTTextContainer): class LTTextGroupLRTB(LTTextGroup): - def analyze(self, laparams): LTTextGroup.analyze(self, laparams) # reorder the objects from top-left to bottom-right. @@ -480,7 +500,6 @@ class LTTextGroupLRTB(LTTextGroup): class LTTextGroupTBRL(LTTextGroup): - def analyze(self, laparams): LTTextGroup.analyze(self, laparams) # reorder the objects from top-right to bottom-left. @@ -490,10 +509,7 @@ class LTTextGroupTBRL(LTTextGroup): return -## LTLayoutContainer -## class LTLayoutContainer(LTContainer): - def __init__(self, bbox): LTContainer.__init__(self, bbox) self.groups = None @@ -709,9 +725,13 @@ class LTLayoutContainer(LTContainer): return -## LTFigure -## class LTFigure(LTLayoutContainer): + """Represents an area used by PDF Form objects. + + PDF Forms can be used to present figures or pictures by embedding yet + another PDF document within a page. Note that LTFigure objects can appear + recursively. + """ def __init__(self, name, bbox, matrix): self.name = name @@ -734,9 +754,12 @@ class LTFigure(LTLayoutContainer): return -## LTPage -## class LTPage(LTLayoutContainer): + """Represents an entire page. + + May contain child objects like LTTextBox, LTFigure, LTImage, LTRect, + LTCurve and LTLine. + """ def __init__(self, pageid, bbox, rotate=0): LTLayoutContainer.__init__(self, bbox) diff --git a/pdfminer/pdfdevice.py b/pdfminer/pdfdevice.py index 54925f1..072980e 100644 --- a/pdfminer/pdfdevice.py +++ b/pdfminer/pdfdevice.py @@ -2,13 +2,13 @@ import six +from . import utils from .pdffont import PDFUnicodeNotDefined -from . import utils -## PDFDevice -## class PDFDevice(object): + """Translate the output of PDFPageInterpreter to the output that is needed + """ def __init__(self, rsrcmgr): self.rsrcmgr = rsrcmgr diff --git a/pdfminer/pdfinterp.py b/pdfminer/pdfinterp.py index de54835..0e692e2 100644 --- a/pdfminer/pdfinterp.py +++ b/pdfminer/pdfinterp.py @@ -318,9 +318,8 @@ class PDFContentParser(PSStackParser): return -## Interpreter -## class PDFPageInterpreter(object): + """Processor for the content of a PDF page""" def __init__(self, rsrcmgr, device): self.rsrcmgr = rsrcmgr diff --git a/setup.py b/setup.py index a13e4da..06d8106 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,10 @@ setup( 'six', 'sortedcontainers', ], - extras_require={"dev": ["nose", "tox"]}, + extras_require={ + "dev": ["nose", "tox"], + "docs": ["sphinx", "sphinx-argparse"], + }, description='PDF parser and analyzer', long_description=package.__doc__, license='MIT/X', diff --git a/tools/dumppdf.py b/tools/dumppdf.py index 0e3a4ee..49b29b8 100755 --- a/tools/dumppdf.py +++ b/tools/dumppdf.py @@ -240,51 +240,51 @@ def create_parser(): help='One or more paths to PDF files.') parser.add_argument( - '-d', '--debug', default=False, action='store_true', + '--debug', '-d', default=False, action='store_true', help='Use debug logging level.') procedure_parser = parser.add_mutually_exclusive_group() procedure_parser.add_argument( - '-T', '--extract-toc', default=False, action='store_true', + '--extract-toc', '-T', default=False, action='store_true', help='Extract structure of outline') procedure_parser.add_argument( - '-E', '--extract-embedded', type=str, + '--extract-embedded', '-E', type=str, help='Extract embedded files') parse_params = parser.add_argument_group( 'Parser', description='Used during PDF parsing') parse_params.add_argument( - "--page-numbers", type=int, default=None, nargs="+", - help="A space-seperated list of page numbers to parse.") + '--page-numbers', type=int, default=None, nargs='+', + help='A space-seperated list of page numbers to parse.') parse_params.add_argument( - "-p", "--pagenos", type=str, - help="A comma-separated list of page numbers to parse. Included for " - "legacy applications, use --page-numbers for more idiomatic " - "argument entry.") + '--pagenos', '-p', type=str, + help='A comma-separated list of page numbers to parse. Included for ' + 'legacy applications, use --page-numbers for more idiomatic ' + 'argument entry.') parse_params.add_argument( - '-i', '--objects', type=str, + '--objects', '-i', type=str, help='Comma separated list of object numbers to extract') parse_params.add_argument( - '-a', '--all', default=False, action='store_true', + '--all', '-a', default=False, action='store_true', help='If the structure of all objects should be extracted') parse_params.add_argument( - '-P', '--password', type=str, default='', + '--password', '-P', type=str, default='', help='The password to use for decrypting PDF file.') output_params = parser.add_argument_group( 'Output', description='Used during output generation.') output_params.add_argument( - '-o', '--outfile', type=str, default='-', + '--outfile', '-o', type=str, default='-', help='Path to file where output is written. Or "-" (default) to ' 'write to stdout.') codec_parser = output_params.add_mutually_exclusive_group() codec_parser.add_argument( - '-r', '--raw-stream', default=False, action='store_true', + '--raw-stream', '-r', default=False, action='store_true', help='Write stream objects without encoding') codec_parser.add_argument( - '-b', '--binary-stream', default=False, action='store_true', + '--binary-stream', '-b', default=False, action='store_true', help='Write stream objects with binary encoding') codec_parser.add_argument( - '-t', '--text-stream', default=False, action='store_true', + '--text-stream', '-t', default=False, action='store_true', help='Write stream objects as plain text') return parser diff --git a/tools/pdf2txt.py b/tools/pdf2txt.py index 41a7e7e..d370a13 100755 --- a/tools/pdf2txt.py +++ b/tools/pdf2txt.py @@ -1,15 +1,9 @@ -#!/usr/bin/env python - -""" -Converts PDF text content (though not images containing text) to plain text, html, xml or "tags". -""" +"""A command line tool for extracting text and images from PDF and output it to plain text, html, xml or tags.""" import argparse import logging -import six import sys +import six -import pdfminer.settings -pdfminer.settings.STRICT = False import pdfminer.high_level import pdfminer.layout from pdfminer.image import ImageWriter @@ -73,28 +67,68 @@ def extract_text(files=[], outfile='-', def maketheparser(): parser = argparse.ArgumentParser(description=__doc__, add_help=True) - parser.add_argument("files", type=str, default=None, nargs="+", help="File to process.") - parser.add_argument("-d", "--debug", default=False, action="store_true", help="Debug output.") - parser.add_argument("-p", "--pagenos", type=str, help="Comma-separated list of page numbers to parse. Included for legacy applications, use --page-numbers for more idiomatic argument entry.") - parser.add_argument("--page-numbers", type=int, default=None, nargs="+", help="Alternative to --pagenos with space-separated numbers; supercedes --pagenos where it is used.") - parser.add_argument("-m", "--maxpages", type=int, default=0, help="Maximum pages to parse") - parser.add_argument("-P", "--password", type=str, default="", help="Decryption password for PDF") - parser.add_argument("-o", "--outfile", type=str, default="-", help="Output file (default \"-\" is stdout)") - parser.add_argument("-t", "--output_type", type=str, default="text", help="Output type: text|html|xml|tag (default is text)") - parser.add_argument("-c", "--codec", type=str, default="utf-8", help="Text encoding") - parser.add_argument("-s", "--scale", type=float, default=1.0, help="Scale") - parser.add_argument("-A", "--all-texts", default=None, action="store_true", help="LAParams all texts") - parser.add_argument("-V", "--detect-vertical", default=None, action="store_true", help="LAParams detect vertical") - parser.add_argument("-W", "--word-margin", type=float, default=None, help="LAParams word margin") - parser.add_argument("-M", "--char-margin", type=float, default=None, help="LAParams char margin") - parser.add_argument("-L", "--line-margin", type=float, default=None, help="LAParams line margin") - parser.add_argument("-F", "--boxes-flow", type=float, default=None, help="LAParams boxes flow") - parser.add_argument("-Y", "--layoutmode", default="normal", type=str, help="HTML Layout Mode") - parser.add_argument("-n", "--no-laparams", default=False, action="store_true", help="Pass None as LAParams") - parser.add_argument("-R", "--rotation", default=0, type=int, help="Rotation") - parser.add_argument("-O", "--output-dir", default=None, help="Output directory for images") - parser.add_argument("-C", "--disable-caching", default=False, action="store_true", help="Disable caching") - parser.add_argument("-S", "--strip-control", default=False, action="store_true", help="Strip control in XML mode") + parser.add_argument("files", type=str, default=None, nargs="+", help="One or more paths to PDF files.") + + parser.add_argument("--debug", "-d", default=False, action="store_true", + help="Use debug logging level.") + parser.add_argument("--disable-caching", "-C", default=False, action="store_true", + help="If caching or resources, such as fonts, should be disabled.") + + parse_params = parser.add_argument_group('Parser', description='Used during PDF parsing') + parse_params.add_argument("--page-numbers", type=int, default=None, nargs="+", + help="A space-seperated list of page numbers to parse.") + parse_params.add_argument("--pagenos", "-p", type=str, + help="A comma-separated list of page numbers to parse. Included for legacy applications, " + "use --page-numbers for more idiomatic argument entry.") + parse_params.add_argument("--maxpages", "-m", type=int, default=0, + help="The maximum number of pages to parse.") + parse_params.add_argument("--password", "-P", type=str, default="", + help="The password to use for decrypting PDF file.") + parse_params.add_argument("--rotation", "-R", default=0, type=int, + help="The number of degrees to rotate the PDF before other types of processing.") + + la_params = parser.add_argument_group('Layout analysis', description='Used during layout analysis.') + la_params.add_argument("--no-laparams", "-n", default=False, action="store_true", + help="If layout analysis parameters should be ignored.") + la_params.add_argument("--detect-vertical", "-V", default=False, action="store_true", + help="If vertical text should be considered during layout analysis") + la_params.add_argument("--char-margin", "-M", type=float, default=2.0, + help="If two characters are closer together than this margin they are considered to be part " + "of the same word. The margin is specified relative to the width of the character.") + la_params.add_argument("--word-margin", "-W", type=float, default=0.1, + help="If two words are are closer together than this margin they are considered to be part " + "of the same line. A space is added in between for readability. The margin is " + "specified relative to the width of the word.") + la_params.add_argument("--line-margin", "-L", type=float, default=0.5, + help="If two lines are are close together they are considered to be part of the same " + "paragraph. The margin is specified relative to the height of a line.") + la_params.add_argument("--boxes-flow", "-F", type=float, default=0.5, + help="Specifies how much a horizontal and vertical position of a text matters when " + "determining the order of lines. The value should be within the range of -1.0 (only " + "horizontal position matters) to +1.0 (only vertical position matters).") + la_params.add_argument("--all-texts", "-A", default=True, action="store_true", + help="If layout analysis should be performed on text in figures.") + + output_params = parser.add_argument_group('Output', description='Used during output generation.') + output_params.add_argument("--outfile", "-o", type=str, default="-", + help="Path to file where output is written. Or \"-\" (default) to write to stdout.") + output_params.add_argument("--output_type", "-t", type=str, default="text", + help="Type of output to generate {text,html,xml,tag}.") + output_params.add_argument("--codec", "-c", type=str, default="utf-8", + help="Text encoding to use in output file.") + output_params.add_argument("--output-dir", "-O", default=None, + help="The output directory to put extracted images in. If not given, images are not " + "extracted.") + output_params.add_argument("--layoutmode", "-Y", default="normal", type=str, + help="Type of layout to use when generating html {normal,exact,loose}. If normal, " + "each line is positioned separately in the html. If exact, each character is " + "positioned separately in the html. If loose, same result as normal but with an " + "additional newline after each text line. Only used when output_type is html.") + output_params.add_argument("--scale", "-s", type=float, default=1.0, + help="The amount of zoom to use when generating html file. Only used when output_type " + "is html.") + output_params.add_argument("--strip-control", "-S", default=False, action="store_true", + help="Remove control statement from text. Only used when output_type is xml.") return parser diff --git a/tox.ini b/tox.ini index 09c7f80..8a47713 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,11 @@ [tox] -envlist = py{26, 27, 34, 35, 36} +envlist = py{27,34,35,36,37,38} [testenv] -extras = dev -commands = nosetests --nologcapture +extras = + dev + docs +commands = + nosetests --nologcapture + python -m sphinx -b html docs/source docs/build/html + python -m sphinx -b doctest docs/source docs/build/doctest From 5c6fa8f9868c9cd728a8825382d5d1b1627694e7 Mon Sep 17 00:00:00 2001 From: Pieter Marsman Date: Thu, 7 Nov 2019 21:52:44 +0100 Subject: [PATCH 21/21] Release 20191107 --- CHANGELOG.md | 4 ++++ pdfminer/__init__.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 859d9c6..91bebe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +Nothing yet + +## [20191107] - 2019-11-07 + ### Deprecated - The argument `_py2_no_more_posargs` because Python2 is removed on January , 2020 ([#328](https://github.com/pdfminer/pdfminer.six/pull/328) and diff --git a/pdfminer/__init__.py b/pdfminer/__init__.py index 181bf7a..d41059a 100644 --- a/pdfminer/__init__.py +++ b/pdfminer/__init__.py @@ -13,7 +13,7 @@ other purposes instead of text analysis. import sys import warnings -__version__ = '20191020' +__version__ = '20191107' if sys.version_info < (3, 0):