pax_global_header00006660000000000000000000000064142767260160014525gustar00rootroot0000000000000052 comment=9601489b55de08834199096dde496fbd4adec553 go-gitdiff-0.8.0/000077500000000000000000000000001427672601600135515ustar00rootroot00000000000000go-gitdiff-0.8.0/.github/000077500000000000000000000000001427672601600151115ustar00rootroot00000000000000go-gitdiff-0.8.0/.github/workflows/000077500000000000000000000000001427672601600171465ustar00rootroot00000000000000go-gitdiff-0.8.0/.github/workflows/go.yml000066400000000000000000000007571427672601600203070ustar00rootroot00000000000000name: Go on: pull_request: push: branches: [master] jobs: verify: name: Verify runs-on: ubuntu-latest steps: - name: Set up Go 1.16 uses: actions/setup-go@v2 with: go-version: 1.16 - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Lint uses: golangci/golangci-lint-action@v2 with: version: v1.28 - name: Test run: go test -v ./... go-gitdiff-0.8.0/.golangci.yml000066400000000000000000000005101427672601600161310ustar00rootroot00000000000000run: tests: false linters: disable-all: true enable: - deadcode - errcheck - gofmt - goimports - golint - govet - ineffassign - typecheck - unconvert - varcheck issues: exclude-use-default: false linter-settings: goimports: local-prefixes: github.com/gitleaks/go-gitdiff go-gitdiff-0.8.0/LICENSE000066400000000000000000000020541427672601600145570ustar00rootroot00000000000000MIT License Copyright (c) 2019 Billy Keyes 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. go-gitdiff-0.8.0/README.md000066400000000000000000000077421427672601600150420ustar00rootroot00000000000000# go-gitdiff [![PkgGoDev](https://pkg.go.dev/badge/github.com/gitleaks/go-gitdiff/gitdiff)](https://pkg.go.dev/github.com/gitleaks/go-gitdiff/gitdiff) [![Go Report Card](https://goreportcard.com/badge/github.com/gitleaks/go-gitdiff)](https://goreportcard.com/report/github.com/gitleaks/go-gitdiff) A Go library for parsing and applying patches generated by `git diff`, `git show`, and `git format-patch`. It can also parse and apply unified diffs generated by the standard `diff` tool. It supports standard line-oriented text patches and Git binary patches, and aims to parse anything accepted by the `git apply` command. ```golang patch, err := os.Open("changes.patch") if err != nil { log.Fatal(err) } // files is a slice of *gitdiff.File describing the files changed in the patch // preamble is a string of the content of the patch before the first file files, preamble, err := gitdiff.Parse(patch) if err != nil { log.Fatal(err) } code, err := os.Open("code.go") if err != nil { log.Fatal(err) } // apply the changes in the patch to a source file var output bytes.Buffer if err := gitdiff.NewApplier(code).ApplyFile(&output, files[0]); err != nil { log.Fatal(err) } ``` ## Development Status Mostly complete. API changes are possible, particularly for patch application, but I expect the parsing interface and types to remain stable. Patch parsing and strict application are well-covered by unit tests and the library is used in a production application that parses and applies thousands of patches every day, but the space of all possible patches is large, so there are likely undiscovered bugs. The parsing code has also had a modest amount of fuzz testing. I hope to continue this testing in the future. ## Why another git/unified diff parser? [Several][sourcegraph] [packages][sergi] with [similar][waigani] [functionality][seletskiy] exist, so why did I write another? 1. No other packages I found support binary diffs, as generated with the `--binary` flag. This is the main reason for writing a new package, as the format is pretty different from line-oriented diffs and is unique to Git. 2. Most other packages only parse patches, so you need additional code to apply them (and if applies are supported, it is only for text files.) 3. This package aims to accept anything that `git apply` accepts, and closely follows the logic in [`apply.c`][apply.c]. 4. It seemed like a fun project and a way to learn more about Git. [sourcegraph]: https://github.com/sourcegraph/go-diff [sergi]: https://github.com/sergi/go-diff [waigani]: https://github.com/waigani/diffparser [seletskiy]: https://github.com/seletskiy/godiff [apply.c]: https://github.com/git/git/blob/master/apply.c ## Differences From Git 1. Certain types of invalid input that are accepted by `git apply` generate errors. These include: - Numbers immediately followed by non-numeric characters - Trailing characters on a line after valid or expected content - Malformed file header lines (lines that start with `diff --git`) 2. Errors for invalid input are generally more verbose and specific than those from `git apply`. 3. The translation from C to Go may have introduced inconsistencies in the way Unicode file names are handled; these are bugs, so please report any issues of this type. 4. When reading headers, there is no validation that OIDs present on an `index` line are shorter than or equal to the maximum hash length, as this requires knowing if the repository used SHA1 or SHA256 hashes. 5. When reading "traditional" patches (those not produced by `git`), prefixes are not stripped from file names; `git apply` attempts to remove prefixes that match the current repository directory/prefix. 6. Patches can only be applied in "strict" mode, where the line numbers and context of each fragment must exactly match the source file; `git apply` implements a search algorithm that tries different lines and amounts of context, with further options to normalize or ignore whitespace changes. go-gitdiff-0.8.0/gitdiff/000077500000000000000000000000001427672601600151655ustar00rootroot00000000000000go-gitdiff-0.8.0/gitdiff/apply.go000066400000000000000000000301171427672601600166430ustar00rootroot00000000000000package gitdiff import ( "errors" "fmt" "io" "sort" ) // Conflict indicates an apply failed due to a conflict between the patch and // the source content. // // Users can test if an error was caused by a conflict by using errors.Is with // an empty Conflict: // // if errors.Is(err, &Conflict{}) { // // handle conflict // } // type Conflict struct { msg string } func (c *Conflict) Error() string { return "conflict: " + c.msg } // Is implements error matching for Conflict. Passing an empty instance of // Conflict always returns true. func (c *Conflict) Is(other error) bool { if other, ok := other.(*Conflict); ok { return other.msg == "" || other.msg == c.msg } return false } // ApplyError wraps an error that occurs during patch application with // additional location information, if it is available. type ApplyError struct { // Line is the one-indexed line number in the source data Line int64 // Fragment is the one-indexed fragment number in the file Fragment int // FragmentLine is the one-indexed line number in the fragment FragmentLine int err error } // Unwrap returns the wrapped error. func (e *ApplyError) Unwrap() error { return e.err } func (e *ApplyError) Error() string { return fmt.Sprintf("%v", e.err) } type lineNum int type fragNum int type fragLineNum int // applyError creates a new *ApplyError wrapping err or augments the information // in err with args if it is already an *ApplyError. Returns nil if err is nil. func applyError(err error, args ...interface{}) error { if err == nil { return nil } e, ok := err.(*ApplyError) if !ok { if err == io.EOF { err = io.ErrUnexpectedEOF } e = &ApplyError{err: err} } for _, arg := range args { switch v := arg.(type) { case lineNum: e.Line = int64(v) + 1 case fragNum: e.Fragment = int(v) + 1 case fragLineNum: e.FragmentLine = int(v) + 1 } } return e } var ( errApplyInProgress = errors.New("gitdiff: incompatible apply in progress") ) const ( applyInitial = iota applyText applyBinary applyFile ) // Apply is a convenience function that creates an Applier for src with default // settings and applies the changes in f, writing the result to dst. func Apply(dst io.Writer, src io.ReaderAt, f *File) error { return NewApplier(src).ApplyFile(dst, f) } // Applier applies changes described in fragments to source data. If changes // are described in multiple fragments, those fragments must be applied in // order, usually by calling ApplyFile. // // By default, Applier operates in "strict" mode, where fragment content and // positions must exactly match those of the source. // // If an error occurs while applying, methods on Applier return instances of // *ApplyError that annotate the wrapped error with additional information // when available. If the error is because of a conflict between a fragment and // the source, the wrapped error will be a *Conflict. // // While an Applier can apply both text and binary fragments, only one fragment // type can be used without resetting the Applier. The first fragment applied // sets the type for the Applier. Mixing fragment types or mixing // fragment-level and file-level applies results in an error. type Applier struct { src io.ReaderAt lineSrc LineReaderAt nextLine int64 applyType int } // NewApplier creates an Applier that reads data from src. If src is a // LineReaderAt, it is used directly to apply text fragments. func NewApplier(src io.ReaderAt) *Applier { a := new(Applier) a.Reset(src) return a } // Reset resets the input and internal state of the Applier. If src is nil, the // existing source is reused. func (a *Applier) Reset(src io.ReaderAt) { if src != nil { a.src = src if lineSrc, ok := src.(LineReaderAt); ok { a.lineSrc = lineSrc } else { a.lineSrc = &lineReaderAt{r: src} } } a.nextLine = 0 a.applyType = applyInitial } // ApplyFile applies the changes in all of the fragments of f and writes the // result to dst. func (a *Applier) ApplyFile(dst io.Writer, f *File) error { if a.applyType != applyInitial { return applyError(errApplyInProgress) } defer func() { a.applyType = applyFile }() if f.IsBinary && len(f.TextFragments) > 0 { return applyError(errors.New("binary file contains text fragments")) } if !f.IsBinary && f.BinaryFragment != nil { return applyError(errors.New("text file contains binary fragment")) } switch { case f.BinaryFragment != nil: return a.ApplyBinaryFragment(dst, f.BinaryFragment) case len(f.TextFragments) > 0: frags := make([]*TextFragment, len(f.TextFragments)) copy(frags, f.TextFragments) sort.Slice(frags, func(i, j int) bool { return frags[i].OldPosition < frags[j].OldPosition }) // TODO(bkeyes): consider merging overlapping fragments // right now, the application fails if fragments overlap, but it should be // possible to precompute the result of applying them in order for i, frag := range frags { if err := a.ApplyTextFragment(dst, frag); err != nil { return applyError(err, fragNum(i)) } } } return applyError(a.Flush(dst)) } // ApplyTextFragment applies the changes in the fragment f and writes unwritten // data before the start of the fragment and the result to dst. If multiple // text fragments apply to the same source, ApplyTextFragment must be called in // order of increasing start position. As a result, each fragment can be // applied at most once before a call to Reset. func (a *Applier) ApplyTextFragment(dst io.Writer, f *TextFragment) error { if a.applyType != applyInitial && a.applyType != applyText { return applyError(errApplyInProgress) } defer func() { a.applyType = applyText }() // application code assumes fragment fields are consistent if err := f.Validate(); err != nil { return applyError(err) } // lines are 0-indexed, positions are 1-indexed (but new files have position = 0) fragStart := f.OldPosition - 1 if fragStart < 0 { fragStart = 0 } fragEnd := fragStart + f.OldLines start := a.nextLine if fragStart < start { return applyError(&Conflict{"fragment overlaps with an applied fragment"}) } if f.OldPosition == 0 { ok, err := isLen(a.src, 0) if err != nil { return applyError(err) } if !ok { return applyError(&Conflict{"cannot create new file from non-empty src"}) } } preimage := make([][]byte, fragEnd-start) n, err := a.lineSrc.ReadLinesAt(preimage, start) if err != nil { return applyError(err, lineNum(start+int64(n))) } // copy leading data before the fragment starts for i, line := range preimage[:fragStart-start] { if _, err := dst.Write(line); err != nil { a.nextLine = start + int64(i) return applyError(err, lineNum(a.nextLine)) } } preimage = preimage[fragStart-start:] // apply the changes in the fragment used := int64(0) for i, line := range f.Lines { if err := applyTextLine(dst, line, preimage, used); err != nil { a.nextLine = fragStart + used return applyError(err, lineNum(a.nextLine), fragLineNum(i)) } if line.Old() { used++ } } a.nextLine = fragStart + used // new position of +0,0 mean a full delete, so check for leftovers if f.NewPosition == 0 && f.NewLines == 0 { var b [1][]byte n, err := a.lineSrc.ReadLinesAt(b[:], a.nextLine) if err != nil && err != io.EOF { return applyError(err, lineNum(a.nextLine)) } if n > 0 { return applyError(&Conflict{"src still has content after full delete"}, lineNum(a.nextLine)) } } return nil } func applyTextLine(dst io.Writer, line Line, preimage [][]byte, i int64) (err error) { if line.Old() && string(preimage[i]) != line.Line { return &Conflict{"fragment line does not match src line"} } if line.New() { _, err = io.WriteString(dst, line.Line) } return err } // Flush writes any data following the last applied fragment to dst. func (a *Applier) Flush(dst io.Writer) (err error) { switch a.applyType { case applyInitial: _, err = copyFrom(dst, a.src, 0) case applyText: _, err = copyLinesFrom(dst, a.lineSrc, a.nextLine) case applyBinary: // nothing to flush, binary apply "consumes" full source } return err } // ApplyBinaryFragment applies the changes in the fragment f and writes the // result to dst. At most one binary fragment can be applied before a call to // Reset. func (a *Applier) ApplyBinaryFragment(dst io.Writer, f *BinaryFragment) error { if a.applyType != applyInitial { return applyError(errApplyInProgress) } defer func() { a.applyType = applyBinary }() if f == nil { return applyError(errors.New("nil fragment")) } switch f.Method { case BinaryPatchLiteral: if _, err := dst.Write(f.Data); err != nil { return applyError(err) } case BinaryPatchDelta: if err := applyBinaryDeltaFragment(dst, a.src, f.Data); err != nil { return applyError(err) } default: return applyError(fmt.Errorf("unsupported binary patch method: %v", f.Method)) } return nil } func applyBinaryDeltaFragment(dst io.Writer, src io.ReaderAt, frag []byte) error { srcSize, delta := readBinaryDeltaSize(frag) if err := checkBinarySrcSize(src, srcSize); err != nil { return err } dstSize, delta := readBinaryDeltaSize(delta) for len(delta) > 0 { op := delta[0] if op == 0 { return errors.New("invalid delta opcode 0") } var n int64 var err error switch op & 0x80 { case 0x80: n, delta, err = applyBinaryDeltaCopy(dst, op, delta[1:], src) case 0x00: n, delta, err = applyBinaryDeltaAdd(dst, op, delta[1:]) } if err != nil { return err } dstSize -= n } if dstSize != 0 { return errors.New("corrupt binary delta: insufficient or extra data") } return nil } // readBinaryDeltaSize reads a variable length size from a delta-encoded binary // fragment, returing the size and the unused data. Data is encoded as: // // [[1xxxxxxx]...] [0xxxxxxx] // // in little-endian order, with 7 bits of the value per byte. func readBinaryDeltaSize(d []byte) (size int64, rest []byte) { shift := uint(0) for i, b := range d { size |= int64(b&0x7F) << shift shift += 7 if b <= 0x7F { return size, d[i+1:] } } return size, nil } // applyBinaryDeltaAdd applies an add opcode in a delta-encoded binary // fragment, returning the amount of data written and the usused part of the // fragment. An add operation takes the form: // // [0xxxxxx][[data1]...] // // where the lower seven bits of the opcode is the number of data bytes // following the opcode. See also pack-format.txt in the Git source. func applyBinaryDeltaAdd(w io.Writer, op byte, delta []byte) (n int64, rest []byte, err error) { size := int(op) if len(delta) < size { return 0, delta, errors.New("corrupt binary delta: incomplete add") } _, err = w.Write(delta[:size]) return int64(size), delta[size:], err } // applyBinaryDeltaCopy applies a copy opcode in a delta-encoded binary // fragment, returing the amount of data written and the unused part of the // fragment. A copy operation takes the form: // // [1xxxxxxx][offset1][offset2][offset3][offset4][size1][size2][size3] // // where the lower seven bits of the opcode determine which non-zero offset and // size bytes are present in little-endian order: if bit 0 is set, offset1 is // present, etc. If no offset or size bytes are present, offset is 0 and size // is 0x10000. See also pack-format.txt in the Git source. func applyBinaryDeltaCopy(w io.Writer, op byte, delta []byte, src io.ReaderAt) (n int64, rest []byte, err error) { const defaultSize = 0x10000 unpack := func(start, bits uint) (v int64) { for i := uint(0); i < bits; i++ { mask := byte(1 << (i + start)) if op&mask > 0 { if len(delta) == 0 { err = errors.New("corrupt binary delta: incomplete copy") return } v |= int64(delta[0]) << (8 * i) delta = delta[1:] } } return } offset := unpack(0, 4) size := unpack(4, 3) if err != nil { return 0, delta, err } if size == 0 { size = defaultSize } // TODO(bkeyes): consider pooling these buffers b := make([]byte, size) if _, err := src.ReadAt(b, offset); err != nil { return 0, delta, err } _, err = w.Write(b) return size, delta, err } func checkBinarySrcSize(r io.ReaderAt, size int64) error { ok, err := isLen(r, size) if err != nil { return err } if !ok { return &Conflict{"fragment src size does not match actual src size"} } return nil } go-gitdiff-0.8.0/gitdiff/apply_test.go000066400000000000000000000175551427672601600177150ustar00rootroot00000000000000package gitdiff import ( "bytes" "errors" "io" "io/ioutil" "os/exec" "path/filepath" "testing" ) func TestApplierInvariants(t *testing.T) { binary := &BinaryFragment{ Method: BinaryPatchLiteral, Size: 2, Data: []byte("\xbe\xef"), } text := &TextFragment{ NewPosition: 1, NewLines: 1, LinesAdded: 1, Lines: []Line{ {Op: OpAdd, Line: "new line\n"}, }, } file := &File{ TextFragments: []*TextFragment{text}, } src := bytes.NewReader(nil) dst := ioutil.Discard assertInProgress := func(t *testing.T, kind string, err error) { if !errors.Is(err, errApplyInProgress) { t.Fatalf("expected in-progress error for %s apply, but got: %v", kind, err) } } t.Run("binaryFirst", func(t *testing.T) { a := NewApplier(src) if err := a.ApplyBinaryFragment(dst, binary); err != nil { t.Fatalf("unexpected error applying fragment: %v", err) } assertInProgress(t, "text", a.ApplyTextFragment(dst, text)) assertInProgress(t, "binary", a.ApplyBinaryFragment(dst, binary)) assertInProgress(t, "file", a.ApplyFile(dst, file)) }) t.Run("textFirst", func(t *testing.T) { a := NewApplier(src) if err := a.ApplyTextFragment(dst, text); err != nil { t.Fatalf("unexpected error applying fragment: %v", err) } // additional text fragments are allowed if err := a.ApplyTextFragment(dst, text); err != nil { t.Fatalf("unexpected error applying second fragment: %v", err) } assertInProgress(t, "binary", a.ApplyBinaryFragment(dst, binary)) assertInProgress(t, "file", a.ApplyFile(dst, file)) }) t.Run("fileFirst", func(t *testing.T) { a := NewApplier(src) if err := a.ApplyFile(dst, file); err != nil { t.Fatalf("unexpected error applying file: %v", err) } assertInProgress(t, "text", a.ApplyTextFragment(dst, text)) assertInProgress(t, "binary", a.ApplyBinaryFragment(dst, binary)) assertInProgress(t, "file", a.ApplyFile(dst, file)) }) } func TestApplyTextFragment(t *testing.T) { tests := map[string]applyTest{ "createFile": {Files: getApplyFiles("text_fragment_new")}, "deleteFile": {Files: getApplyFiles("text_fragment_delete_all")}, "addStart": {Files: getApplyFiles("text_fragment_add_start")}, "addMiddle": {Files: getApplyFiles("text_fragment_add_middle")}, "addEnd": {Files: getApplyFiles("text_fragment_add_end")}, "addEndNoEOL": {Files: getApplyFiles("text_fragment_add_end_noeol")}, "changeStart": {Files: getApplyFiles("text_fragment_change_start")}, "changeMiddle": {Files: getApplyFiles("text_fragment_change_middle")}, "changeEnd": {Files: getApplyFiles("text_fragment_change_end")}, "changeExact": {Files: getApplyFiles("text_fragment_change_exact")}, "changeSingleNoEOL": {Files: getApplyFiles("text_fragment_change_single_noeol")}, "errorShortSrcBefore": { Files: applyFiles{ Src: "text_fragment_error.src", Patch: "text_fragment_error_short_src_before.patch", }, Err: io.ErrUnexpectedEOF, }, "errorShortSrc": { Files: applyFiles{ Src: "text_fragment_error.src", Patch: "text_fragment_error_short_src.patch", }, Err: io.ErrUnexpectedEOF, }, "errorContextConflict": { Files: applyFiles{ Src: "text_fragment_error.src", Patch: "text_fragment_error_context_conflict.patch", }, Err: &Conflict{}, }, "errorDeleteConflict": { Files: applyFiles{ Src: "text_fragment_error.src", Patch: "text_fragment_error_delete_conflict.patch", }, Err: &Conflict{}, }, "errorNewFile": { Files: applyFiles{ Src: "text_fragment_error.src", Patch: "text_fragment_error_new_file.patch", }, Err: &Conflict{}, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { test.run(t, func(w io.Writer, applier *Applier, file *File) error { if len(file.TextFragments) != 1 { t.Fatalf("patch should contain exactly one fragment, but it has %d", len(file.TextFragments)) } return applier.ApplyTextFragment(w, file.TextFragments[0]) }) }) } } func TestApplyBinaryFragment(t *testing.T) { tests := map[string]applyTest{ "literalCreate": {Files: getApplyFiles("bin_fragment_literal_create")}, "literalModify": {Files: getApplyFiles("bin_fragment_literal_modify")}, "deltaModify": {Files: getApplyFiles("bin_fragment_delta_modify")}, "deltaModifyLarge": {Files: getApplyFiles("bin_fragment_delta_modify_large")}, "errorIncompleteAdd": { Files: applyFiles{ Src: "bin_fragment_delta_error.src", Patch: "bin_fragment_delta_error_incomplete_add.patch", }, Err: "incomplete add", }, "errorIncompleteCopy": { Files: applyFiles{ Src: "bin_fragment_delta_error.src", Patch: "bin_fragment_delta_error_incomplete_copy.patch", }, Err: "incomplete copy", }, "errorSrcSize": { Files: applyFiles{ Src: "bin_fragment_delta_error.src", Patch: "bin_fragment_delta_error_src_size.patch", }, Err: &Conflict{}, }, "errorDstSize": { Files: applyFiles{ Src: "bin_fragment_delta_error.src", Patch: "bin_fragment_delta_error_dst_size.patch", }, Err: "insufficient or extra data", }, } for name, test := range tests { t.Run(name, func(t *testing.T) { test.run(t, func(w io.Writer, applier *Applier, file *File) error { return applier.ApplyBinaryFragment(w, file.BinaryFragment) }) }) } } func TestApplyFile(t *testing.T) { tests := map[string]applyTest{ "textModify": { Files: applyFiles{ Src: "file_text.src", Patch: "file_text_modify.patch", Out: "file_text_modify.out", }, }, "textDelete": { Files: applyFiles{ Src: "file_text.src", Patch: "file_text_delete.patch", Out: "file_text_delete.out", }, }, "textErrorPartialDelete": { Files: applyFiles{ Src: "file_text.src", Patch: "file_text_error_partial_delete.patch", }, Err: &Conflict{}, }, "binaryModify": { Files: getApplyFiles("file_bin_modify"), }, "modeChange": { Files: getApplyFiles("file_mode_change"), }, } for name, test := range tests { t.Run(name, func(t *testing.T) { test.run(t, func(w io.Writer, applier *Applier, file *File) error { return applier.ApplyFile(w, file) }) }) } } type applyTest struct { Files applyFiles Err interface{} } func (at applyTest) run(t *testing.T, apply func(io.Writer, *Applier, *File) error) { src, patch, out := at.Files.Load(t) cmd := exec.Command("echo", "hello") fileChan, err := Parse(cmd, io.NopCloser(bytes.NewReader(patch))) if err != nil { t.Fatalf("failed to parse patch file: %v", err) } var files []*File for file := range fileChan { files = append(files, file) } if len(files) != 1 { t.Fatalf("patch should contain exactly one file, but it has %d", len(files)) } applier := NewApplier(bytes.NewReader(src)) var dst bytes.Buffer err = apply(&dst, applier, files[0]) if at.Err != nil { assertError(t, at.Err, err, "applying fragment") return } if err != nil { var aerr *ApplyError if errors.As(err, &aerr) { t.Fatalf("unexpected error applying: at %d: fragment %d at %d: %v", aerr.Line, aerr.Fragment, aerr.FragmentLine, err) } else { t.Fatalf("unexpected error applying: %v", err) } } if !bytes.Equal(out, dst.Bytes()) { t.Errorf("incorrect result after apply\nexpected:\n%q\nactual:\n%q", out, dst.Bytes()) } } type applyFiles struct { Src string Patch string Out string } func getApplyFiles(name string) applyFiles { return applyFiles{ Src: name + ".src", Patch: name + ".patch", Out: name + ".out", } } func (f applyFiles) Load(t *testing.T) (src []byte, patch []byte, out []byte) { load := func(name, kind string) []byte { d, err := ioutil.ReadFile(filepath.Join("testdata", "apply", name)) if err != nil { t.Fatalf("failed to read %s file: %v", kind, err) } return d } if f.Src != "" { src = load(f.Src, "source") } if f.Patch != "" { patch = load(f.Patch, "patch") } if f.Out != "" { out = load(f.Out, "output") } return } go-gitdiff-0.8.0/gitdiff/assert_test.go000066400000000000000000000013061427672601600200540ustar00rootroot00000000000000package gitdiff import ( "errors" "strings" "testing" ) func assertError(t *testing.T, expected interface{}, actual error, action string) { if actual == nil { t.Fatalf("expected error %s, but got nil", action) } switch exp := expected.(type) { case bool: if !exp { t.Fatalf("unexpected error %s: %v", action, actual) } case string: if !strings.Contains(actual.Error(), exp) { t.Fatalf("incorrect error %s: %q does not contain %q", action, actual.Error(), exp) } case error: if !errors.Is(actual, exp) { t.Fatalf("incorrect error %s: expected %T (%v), actual: %T (%v)", action, exp, exp, actual, actual) } default: t.Fatalf("unsupported expected error type: %T", exp) } } go-gitdiff-0.8.0/gitdiff/base85.go000066400000000000000000000021511427672601600166020ustar00rootroot00000000000000package gitdiff import ( "fmt" ) var ( b85Table map[byte]byte b85Alpha = []byte( "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "!#$%&()*+-;<=>?@^_`{|}~", ) ) func init() { b85Table = make(map[byte]byte) for i, c := range b85Alpha { b85Table[c] = byte(i) } } // base85Decode decodes Base85-encoded data from src into dst. It uses the // alphabet defined by base85.c in the Git source tree, which appears to be // unique. src must contain at least len(dst) bytes of encoded data. func base85Decode(dst, src []byte) error { var v uint32 var n, ndst int for i, b := range src { if b, ok := b85Table[b]; ok { v = 85*v + uint32(b) n++ } else { return fmt.Errorf("invalid base85 byte at index %d: 0x%X", i, src[i]) } if n == 5 { rem := len(dst) - ndst for j := 0; j < 4 && j < rem; j++ { dst[ndst] = byte(v >> 24) ndst++ v <<= 8 } v = 0 n = 0 } } if n > 0 { return fmt.Errorf("base85 data terminated by underpadded sequence") } if ndst < len(dst) { return fmt.Errorf("base85 data underrun: %d < %d", ndst, len(dst)) } return nil } go-gitdiff-0.8.0/gitdiff/base85_test.go000066400000000000000000000022201427672601600176360ustar00rootroot00000000000000package gitdiff import ( "testing" ) func TestBase85Decode(t *testing.T) { tests := map[string]struct { Input string Output []byte Err bool }{ "twoBytes": { Input: "%KiWV", Output: []byte{0xCA, 0xFE}, }, "fourBytes": { Input: "007GV", Output: []byte{0x0, 0x0, 0xCA, 0xFE}, }, "sixBytes": { Input: "007GV%KiWV", Output: []byte{0x0, 0x0, 0xCA, 0xFE, 0xCA, 0xFE}, }, "invalidCharacter": { Input: "00'GV", Err: true, }, "underpaddedSequence": { Input: "007G", Err: true, }, "dataUnderrun": { Input: "007GV", Output: make([]byte, 8), Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { dst := make([]byte, len(test.Output)) err := base85Decode(dst, []byte(test.Input)) if test.Err { if err == nil { t.Fatalf("expected error decoding base85 data, but got nil") } return } if err != nil { t.Fatalf("unexpected error decoding base85 data: %v", err) } for i, b := range test.Output { if dst[i] != b { t.Errorf("incorrect byte at index %d: expected 0x%X, actual 0x%X", i, b, dst[i]) } } }) } } go-gitdiff-0.8.0/gitdiff/binary.go000066400000000000000000000105771427672601600170120ustar00rootroot00000000000000package gitdiff import ( "bytes" "compress/zlib" "fmt" "io" "io/ioutil" "regexp" "strconv" "strings" ) var binaryRegexp = regexp.MustCompile(`^Binary files (/dev/null|a/(.+)|"a/(.+)") and (/dev/null|b/(.+)|"b/(.+)") differ\s*$`) func (p *parser) ParseBinaryFragments(f *File) (n int, err error) { isBinary, hasData, err := p.ParseBinaryMarker() if err != nil || !isBinary { return 0, err } f.IsBinary = true if !hasData { return 0, nil } forward, err := p.ParseBinaryFragmentHeader() if err != nil { return 0, err } if forward == nil { return 0, p.Errorf(0, "missing data for binary patch") } if err := p.ParseBinaryChunk(forward); err != nil { return 0, err } f.BinaryFragment = forward // valid for reverse to not exist, but it must be valid if present reverse, err := p.ParseBinaryFragmentHeader() if err != nil { return 1, err } if reverse == nil { return 1, nil } if err := p.ParseBinaryChunk(reverse); err != nil { return 1, err } f.ReverseBinaryFragment = reverse return 1, nil } func (p *parser) ParseBinaryMarker() (isBinary bool, hasData bool, err error) { line := p.Line(0) switch { case line == "GIT binary patch\n": hasData = true case line == "Binary files differ\n": case line == "Files differ\n": case strings.HasPrefix(line, "Binary files ") && strings.HasSuffix(line, "differ\n"): default: if !binaryRegexp.MatchString(p.Line(0)) { return false, false, nil } } if err = p.Next(); err != nil && err != io.EOF { return false, false, err } return true, hasData, nil } func (p *parser) ParseBinaryFragmentHeader() (*BinaryFragment, error) { parts := strings.SplitN(strings.TrimSuffix(p.Line(0), "\n"), " ", 2) if len(parts) < 2 { return nil, nil } frag := &BinaryFragment{} switch parts[0] { case "delta": frag.Method = BinaryPatchDelta case "literal": frag.Method = BinaryPatchLiteral default: return nil, nil } var err error if frag.Size, err = strconv.ParseInt(parts[1], 10, 64); err != nil { nerr := err.(*strconv.NumError) return nil, p.Errorf(0, "binary patch: invalid size: %v", nerr.Err) } if err := p.Next(); err != nil && err != io.EOF { return nil, err } return frag, nil } func (p *parser) ParseBinaryChunk(frag *BinaryFragment) error { // Binary fragments are encoded as a series of base85 encoded lines. Each // line starts with a character in [A-Za-z] giving the number of bytes on // the line, where A = 1 and z = 52, and ends with a newline character. // // The base85 encoding means each line is a multiple of 5 characters + 2 // additional characters for the length byte and the newline. The fragment // ends with a blank line. const ( shortestValidLine = "A00000\n" maxBytesPerLine = 52 ) var data bytes.Buffer buf := make([]byte, maxBytesPerLine) for { line := p.Line(0) if line == "\n" { break } if len(line) < len(shortestValidLine) || (len(line)-2)%5 != 0 { return p.Errorf(0, "binary patch: corrupt data line") } byteCount, seq := int(line[0]), line[1:len(line)-1] switch { case 'A' <= byteCount && byteCount <= 'Z': byteCount = byteCount - 'A' + 1 case 'a' <= byteCount && byteCount <= 'z': byteCount = byteCount - 'a' + 27 default: return p.Errorf(0, "binary patch: invalid length byte") } // base85 encodes every 4 bytes into 5 characters, with up to 3 bytes of end padding maxByteCount := len(seq) / 5 * 4 if byteCount > maxByteCount || byteCount < maxByteCount-3 { return p.Errorf(0, "binary patch: incorrect byte count") } if err := base85Decode(buf[:byteCount], []byte(seq)); err != nil { return p.Errorf(0, "binary patch: %v", err) } data.Write(buf[:byteCount]) if err := p.Next(); err != nil { if err == io.EOF { return p.Errorf(0, "binary patch: unexpected EOF") } return err } } if err := inflateBinaryChunk(frag, &data); err != nil { return p.Errorf(0, "binary patch: %v", err) } // consume the empty line that ended the fragment if err := p.Next(); err != nil && err != io.EOF { return err } return nil } func inflateBinaryChunk(frag *BinaryFragment, r io.Reader) error { zr, err := zlib.NewReader(r) if err != nil { return err } data, err := ioutil.ReadAll(zr) if err != nil { return err } if err := zr.Close(); err != nil { return err } if int64(len(data)) != frag.Size { return fmt.Errorf("%d byte fragment inflated to %d", frag.Size, len(data)) } frag.Data = data return nil } go-gitdiff-0.8.0/gitdiff/binary_test.go000066400000000000000000000166471427672601600200550ustar00rootroot00000000000000package gitdiff import ( "encoding/binary" "io" "reflect" "strings" "testing" ) func TestParseBinaryMarker(t *testing.T) { tests := map[string]struct { Input string IsBinary bool HasData bool Err bool }{ "binaryPatch": { Input: "GIT binary patch\n", IsBinary: true, HasData: true, }, "binaryFileNoPatch": { Input: "Binary files differ\n", IsBinary: true, HasData: false, }, "textFile": { Input: "@@ -10,14 +22,31 @@\n", IsBinary: false, HasData: false, }, "binaryPatchCreated": { Input: "Binary files /dev/null and b/path/to/file.ext differ\n", IsBinary: true, HasData: false, }, "binaryPatchModified": { Input: "Binary files a/path/to/file.ext and b/path/to/file.ext differ\n", IsBinary: true, HasData: false, }, "binaryPatchModifiedQuoted": { Input: "Binary files \"a/path/to/file.ext\" and \"b/path/to/file.ext\" differ\n", IsBinary: true, HasData: false, }, "binaryPatchDeleted": { Input: "Binary files a/path/to/file.ext and /dev/null differ\n", IsBinary: true, HasData: false, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) isBinary, hasData, err := p.ParseBinaryMarker() if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing binary marker, but got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing binary marker: %v", err) } if test.IsBinary != isBinary { t.Errorf("incorrect isBinary value: expected %t, actual %t", test.IsBinary, isBinary) } if test.HasData != hasData { t.Errorf("incorrect hasData value: expected %t, actual %t", test.HasData, hasData) } }) } } func TestParseBinaryFragmentHeader(t *testing.T) { tests := map[string]struct { Input string Output *BinaryFragment Err bool }{ "delta": { Input: "delta 1234\n", Output: &BinaryFragment{ Method: BinaryPatchDelta, Size: 1234, }, }, "literal": { Input: "literal 1234\n", Output: &BinaryFragment{ Method: BinaryPatchLiteral, Size: 1234, }, }, "unknownMethod": { Input: "compressed 1234\n", Output: nil, }, "notAHeader": { Input: "Binary files differ\n", Output: nil, }, "invalidSize": { Input: "delta 123abc\n", Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) frag, err := p.ParseBinaryFragmentHeader() if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing binary header, but got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing binary header: %v", err) } if !reflect.DeepEqual(test.Output, frag) { t.Errorf("incorrect binary fragment\nexpected: %+v\n actual: %+v", test.Output, frag) } }) } } func TestParseBinaryChunk(t *testing.T) { tests := map[string]struct { Input string Fragment BinaryFragment Output []byte Err string }{ "singleline": { Input: "TcmZQzU|?i`U?w2V48*Je09XJG\n\n", Fragment: BinaryFragment{ Size: 20, }, Output: fib(5, binary.BigEndian), }, "multiline": { Input: "zcmZQzU|?i`U?w2V48*KJ%mKu_Kr9NxNf->s?WfX|B-=Vs{#X~svra7Ekg#T|4s}nH;WnAZ)|1Y*`&cB\n" + "s(sh?X(Uz6L^!Ou&aF*u`J!eibJifSrv0z>$Q%Hd(^HIJ=3 valid lines if err := p.Next(); err != nil { return nil, err } if err := p.Next(); err != nil { return nil, err } oldName, _, err := parseName(oldLine[len(oldPrefix):], '\t', 0) if err != nil { return nil, p.Errorf(0, "file header: %v", err) } newName, _, err := parseName(newLine[len(newPrefix):], '\t', 0) if err != nil { return nil, p.Errorf(1, "file header: %v", err) } f := &File{} switch { case oldName == devNull || hasEpochTimestamp(oldLine): f.IsNew = true f.NewName = newName case newName == devNull || hasEpochTimestamp(newLine): f.IsDelete = true f.OldName = oldName default: // if old name is a prefix of new name, use that instead // this avoids picking variants like "file.bak" or "file~" if strings.HasPrefix(newName, oldName) { f.OldName = oldName f.NewName = oldName } else { f.OldName = newName f.NewName = newName } } return f, nil } // parseGitHeaderName extracts a default file name from the Git file header // line. This is required for mode-only changes and creation/deletion of empty // files. Other types of patch include the file name(s) in the header data. // If the names in the header do not match because the patch is a rename, // return an empty default name. func parseGitHeaderName(header string) (string, error) { header = strings.TrimSuffix(header, "\n") if len(header) == 0 { return "", nil } var err error var first, second string // there are 4 cases to account for: // // 1) unquoted unquoted // 2) unquoted "quoted" // 3) "quoted" unquoted // 4) "quoted" "quoted" // quote := strings.IndexByte(header, '"') switch { case quote < 0: // case 1 first = header case quote > 0: // case 2 first = header[:quote-1] if !isSpace(header[quote-1]) { return "", fmt.Errorf("missing separator") } second, _, err = parseQuotedName(header[quote:]) if err != nil { return "", err } case quote == 0: // case 3 or case 4 var n int first, n, err = parseQuotedName(header) if err != nil { return "", err } // git accepts multiple spaces after a quoted name, but not after an // unquoted name, since the name might end with one or more spaces for n < len(header) && isSpace(header[n]) { n++ } if n == len(header) { return "", nil } if header[n] == '"' { second, _, err = parseQuotedName(header[n:]) if err != nil { return "", err } } else { second = header[n:] } } first = trimTreePrefix(first, 1) if second != "" { if first == trimTreePrefix(second, 1) { return first, nil } return "", nil } // at this point, both names are unquoted (case 1) // since names may contain spaces, we can't use a known separator // instead, look for a split that produces two equal names for i := 0; i < len(first)-1; i++ { if !isSpace(first[i]) { continue } second = trimTreePrefix(first[i+1:], 1) if name := first[:i]; name == second { return name, nil } } return "", nil } // parseGitHeaderData parses a single line of metadata from a Git file header. // It returns true when header parsing is complete; in that case, line was the // first line of non-header content. func parseGitHeaderData(f *File, line, defaultName string) (end bool, err error) { if len(line) > 0 && line[len(line)-1] == '\n' { line = line[:len(line)-1] } for _, hdr := range []struct { prefix string end bool parse func(*File, string, string) error }{ {"@@ -", true, nil}, {"--- ", false, parseGitHeaderOldName}, {"+++ ", false, parseGitHeaderNewName}, {"old mode ", false, parseGitHeaderOldMode}, {"new mode ", false, parseGitHeaderNewMode}, {"deleted file mode ", false, parseGitHeaderDeletedMode}, {"new file mode ", false, parseGitHeaderCreatedMode}, {"copy from ", false, parseGitHeaderCopyFrom}, {"copy to ", false, parseGitHeaderCopyTo}, {"rename old ", false, parseGitHeaderRenameFrom}, {"rename new ", false, parseGitHeaderRenameTo}, {"rename from ", false, parseGitHeaderRenameFrom}, {"rename to ", false, parseGitHeaderRenameTo}, {"similarity index ", false, parseGitHeaderScore}, {"dissimilarity index ", false, parseGitHeaderScore}, {"index ", false, parseGitHeaderIndex}, } { if strings.HasPrefix(line, hdr.prefix) { if hdr.parse != nil { err = hdr.parse(f, line[len(hdr.prefix):], defaultName) } return hdr.end, err } } // unknown line indicates the end of the header // this usually happens if the diff is empty return true, nil } func parseGitHeaderOldName(f *File, line, defaultName string) error { name, _, err := parseName(line, '\t', 1) if err != nil { return err } if f.OldName == "" && !f.IsNew { f.OldName = name return nil } return verifyGitHeaderName(name, f.OldName, f.IsNew, "old") } func parseGitHeaderNewName(f *File, line, defaultName string) error { name, _, err := parseName(line, '\t', 1) if err != nil { return err } if f.NewName == "" && !f.IsDelete { f.NewName = name return nil } return verifyGitHeaderName(name, f.NewName, f.IsDelete, "new") } func parseGitHeaderOldMode(f *File, line, defaultName string) (err error) { f.OldMode, err = parseMode(line) return } func parseGitHeaderNewMode(f *File, line, defaultName string) (err error) { f.NewMode, err = parseMode(line) return } func parseGitHeaderDeletedMode(f *File, line, defaultName string) error { f.IsDelete = true f.OldName = defaultName return parseGitHeaderOldMode(f, line, defaultName) } func parseGitHeaderCreatedMode(f *File, line, defaultName string) error { f.IsNew = true f.NewName = defaultName return parseGitHeaderNewMode(f, line, defaultName) } func parseGitHeaderCopyFrom(f *File, line, defaultName string) (err error) { f.IsCopy = true f.OldName, _, err = parseName(line, 0, 0) return } func parseGitHeaderCopyTo(f *File, line, defaultName string) (err error) { f.IsCopy = true f.NewName, _, err = parseName(line, 0, 0) return } func parseGitHeaderRenameFrom(f *File, line, defaultName string) (err error) { f.IsRename = true f.OldName, _, err = parseName(line, 0, 0) return } func parseGitHeaderRenameTo(f *File, line, defaultName string) (err error) { f.IsRename = true f.NewName, _, err = parseName(line, 0, 0) return } func parseGitHeaderScore(f *File, line, defaultName string) error { score, err := strconv.ParseInt(strings.TrimSuffix(line, "%"), 10, 32) if err != nil { nerr := err.(*strconv.NumError) return fmt.Errorf("invalid score line: %v", nerr.Err) } if score <= 100 { f.Score = int(score) } return nil } func parseGitHeaderIndex(f *File, line, defaultName string) error { const sep = ".." // note that git stops parsing if the OIDs are too long to be valid // checking this requires knowing if the repository uses SHA1 or SHA256 // hashes, which we don't know, so we just skip that check parts := strings.SplitN(line, " ", 2) oids := strings.SplitN(parts[0], sep, 2) if len(oids) < 2 { return fmt.Errorf("invalid index line: missing %q", sep) } f.OldOIDPrefix, f.NewOIDPrefix = oids[0], oids[1] if len(parts) > 1 { return parseGitHeaderOldMode(f, parts[1], defaultName) } return nil } func parseMode(s string) (os.FileMode, error) { mode, err := strconv.ParseInt(s, 8, 32) if err != nil { nerr := err.(*strconv.NumError) return os.FileMode(0), fmt.Errorf("invalid mode line: %v", nerr.Err) } return os.FileMode(mode), nil } // parseName extracts a file name from the start of a string and returns the // name and the index of the first character after the name. If the name is // unquoted and term is non-zero, parsing stops at the first occurrence of // term. // // If the name is exactly "/dev/null", no further processing occurs. Otherwise, // if dropPrefix is greater than zero, that number of prefix components // separated by forward slashes are dropped from the name and any duplicate // slashes are collapsed. func parseName(s string, term byte, dropPrefix int) (name string, n int, err error) { if len(s) > 0 && s[0] == '"' { name, n, err = parseQuotedName(s) } else { name, n, err = parseUnquotedName(s, term) } if err != nil { return "", 0, err } if name == devNull { return name, n, nil } return cleanName(name, dropPrefix), n, nil } func parseQuotedName(s string) (name string, n int, err error) { for n = 1; n < len(s); n++ { if s[n] == '"' && s[n-1] != '\\' { n++ break } } if n == 2 { return "", 0, fmt.Errorf("missing name") } if name, err = strconv.Unquote(s[:n]); err != nil { return "", 0, err } return name, n, err } func parseUnquotedName(s string, term byte) (name string, n int, err error) { for n = 0; n < len(s); n++ { if s[n] == '\n' { break } if term > 0 && s[n] == term { break } } if n == 0 { return "", 0, fmt.Errorf("missing name") } return s[:n], n, nil } // verifyGitHeaderName checks a parsed name against state set by previous lines func verifyGitHeaderName(parsed, existing string, isNull bool, side string) error { if existing != "" { if isNull { return fmt.Errorf("expected %s, but filename is set to %s", devNull, existing) } if existing != parsed { return fmt.Errorf("inconsistent %s filename", side) } } if isNull && parsed != devNull { return fmt.Errorf("expected %s", devNull) } return nil } // cleanName removes double slashes and drops prefix segments. func cleanName(name string, drop int) string { var b strings.Builder for i := 0; i < len(name); i++ { if name[i] == '/' { if i < len(name)-1 && name[i+1] == '/' { continue } if drop > 0 { drop-- b.Reset() continue } } b.WriteByte(name[i]) } return b.String() } // trimTreePrefix removes up to n leading directory components from name. func trimTreePrefix(name string, n int) string { i := 0 for ; i < len(name) && n > 0; i++ { if name[i] == '/' { n-- } } return name[i:] } // hasEpochTimestamp returns true if the string ends with a POSIX-formatted // timestamp for the UNIX epoch after a tab character. According to git, this // is used by GNU diff to mark creations and deletions. func hasEpochTimestamp(s string) bool { const posixTimeLayout = "2006-01-02 15:04:05.9 -0700" start := strings.IndexRune(s, '\t') if start < 0 { return false } ts := strings.TrimSuffix(s[start+1:], "\n") // a valid timestamp can have optional ':' in zone specifier // remove that if it exists so we have a single format if len(ts) >= 3 && ts[len(ts)-3] == ':' { ts = ts[:len(ts)-3] + ts[len(ts)-2:] } t, err := time.Parse(posixTimeLayout, ts) if err != nil { return false } if !t.Equal(time.Unix(0, 0)) { return false } return true } func isSpace(c byte) bool { return c == ' ' || c == '\t' || c == '\n' } go-gitdiff-0.8.0/gitdiff/file_header_test.go000066400000000000000000000400341427672601600210030ustar00rootroot00000000000000package gitdiff import ( "io" "os" "reflect" "testing" ) func TestParseGitFileHeader(t *testing.T) { tests := map[string]struct { Input string Output *File Err bool }{ "fileContentChange": { Input: `diff --git a/dir/file.txt b/dir/file.txt index 1c23fcc..40a1b33 100644 --- a/dir/file.txt +++ b/dir/file.txt @@ -2,3 +4,5 @@ `, Output: &File{ OldName: "dir/file.txt", NewName: "dir/file.txt", OldMode: os.FileMode(0100644), OldOIDPrefix: "1c23fcc", NewOIDPrefix: "40a1b33", }, }, "newFile": { Input: `diff --git a/dir/file.txt b/dir/file.txt new file mode 100644 index 0000000..f5711e4 --- /dev/null +++ b/dir/file.txt `, Output: &File{ NewName: "dir/file.txt", NewMode: os.FileMode(0100644), OldOIDPrefix: "0000000", NewOIDPrefix: "f5711e4", IsNew: true, }, }, "newEmptyFile": { Input: `diff --git a/empty.txt b/empty.txt new file mode 100644 index 0000000..e69de29 `, Output: &File{ NewName: "empty.txt", NewMode: os.FileMode(0100644), OldOIDPrefix: "0000000", NewOIDPrefix: "e69de29", IsNew: true, }, }, "deleteFile": { Input: `diff --git a/dir/file.txt b/dir/file.txt deleted file mode 100644 index 44cc321..0000000 --- a/dir/file.txt +++ /dev/null `, Output: &File{ OldName: "dir/file.txt", OldMode: os.FileMode(0100644), OldOIDPrefix: "44cc321", NewOIDPrefix: "0000000", IsDelete: true, }, }, "changeMode": { Input: `diff --git a/file.sh b/file.sh old mode 100644 new mode 100755 `, Output: &File{ OldName: "file.sh", NewName: "file.sh", OldMode: os.FileMode(0100644), NewMode: os.FileMode(0100755), }, }, "rename": { Input: `diff --git a/foo.txt b/bar.txt similarity index 100% rename from foo.txt rename to bar.txt `, Output: &File{ OldName: "foo.txt", NewName: "bar.txt", Score: 100, IsRename: true, }, }, "copy": { Input: `diff --git a/file.txt b/copy.txt similarity index 100% copy from file.txt copy to copy.txt `, Output: &File{ OldName: "file.txt", NewName: "copy.txt", Score: 100, IsCopy: true, }, }, "missingDefaultFilename": { Input: `diff --git a/foo.sh b/bar.sh old mode 100644 new mode 100755 `, Err: true, }, "missingNewFilename": { Input: `diff --git a/file.txt b/file.txt index 1c23fcc..40a1b33 100644 --- a/file.txt `, Err: true, }, "missingOldFilename": { Input: `diff --git a/file.txt b/file.txt index 1c23fcc..40a1b33 100644 +++ b/file.txt `, Err: true, }, "invalidHeaderLine": { Input: `diff --git a/file.txt b/file.txt index deadbeef --- a/file.txt +++ b/file.txt `, Err: true, }, "notGitHeader": { Input: `--- file.txt +++ file.txt @@ -0,0 +1 @@ `, Output: nil, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) f, err := p.ParseGitFileHeader() if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing git file header, got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing git file header: %v", err) } if !reflect.DeepEqual(test.Output, f) { t.Errorf("incorrect file\nexpected: %+v\n actual: %+v", test.Output, f) } }) } } func TestParseTraditionalFileHeader(t *testing.T) { tests := map[string]struct { Input string Output *File Err bool }{ "fileContentChange": { Input: `--- dir/file_old.txt 2019-03-21 23:00:00.0 -0700 +++ dir/file_new.txt 2019-03-21 23:30:00.0 -0700 @@ -0,0 +1 @@ `, Output: &File{ OldName: "dir/file_new.txt", NewName: "dir/file_new.txt", }, }, "newFile": { Input: `--- /dev/null 1969-12-31 17:00:00.0 -0700 +++ dir/file.txt 2019-03-21 23:30:00.0 -0700 @@ -0,0 +1 @@ `, Output: &File{ NewName: "dir/file.txt", IsNew: true, }, }, "newFileTimestamp": { Input: `--- dir/file.txt 1969-12-31 17:00:00.0 -0700 +++ dir/file.txt 2019-03-21 23:30:00.0 -0700 @@ -0,0 +1 @@ `, Output: &File{ NewName: "dir/file.txt", IsNew: true, }, }, "deleteFile": { Input: `--- dir/file.txt 2019-03-21 23:30:00.0 -0700 +++ /dev/null 1969-12-31 17:00:00.0 -0700 @@ -0,0 +1 @@ `, Output: &File{ OldName: "dir/file.txt", IsDelete: true, }, }, "deleteFileTimestamp": { Input: `--- dir/file.txt 2019-03-21 23:30:00.0 -0700 +++ dir/file.txt 1969-12-31 17:00:00.0 -0700 @@ -0,0 +1 @@ `, Output: &File{ OldName: "dir/file.txt", IsDelete: true, }, }, "useShortestPrefixName": { Input: `--- dir/file.txt 2019-03-21 23:00:00.0 -0700 +++ dir/file.txt~ 2019-03-21 23:30:00.0 -0700 @@ -0,0 +1 @@ `, Output: &File{ OldName: "dir/file.txt", NewName: "dir/file.txt", }, }, "notTraditionalHeader": { Input: `diff --git a/dir/file.txt b/dir/file.txt --- a/dir/file.txt +++ b/dir/file.txt `, Output: nil, }, "noUnifiedFragment": { Input: `--- dir/file_old.txt 2019-03-21 23:00:00.0 -0700 +++ dir/file_new.txt 2019-03-21 23:30:00.0 -0700 context line +added line `, Output: nil, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) f, err := p.ParseTraditionalFileHeader() if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing traditional file header, got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing traditional file header: %v", err) } if !reflect.DeepEqual(test.Output, f) { t.Errorf("incorrect file\nexpected: %+v\n actual: %+v", test.Output, f) } }) } } func TestCleanName(t *testing.T) { tests := map[string]struct { Input string Drop int Output string }{ "alreadyClean": { Input: "a/b/c.txt", Output: "a/b/c.txt", }, "doubleSlashes": { Input: "a//b/c.txt", Output: "a/b/c.txt", }, "tripleSlashes": { Input: "a///b/c.txt", Output: "a/b/c.txt", }, "dropPrefix": { Input: "a/b/c.txt", Drop: 2, Output: "c.txt", }, "removeDoublesBeforeDrop": { Input: "a//b/c.txt", Drop: 1, Output: "b/c.txt", }, } for name, test := range tests { t.Run(name, func(t *testing.T) { output := cleanName(test.Input, test.Drop) if output != test.Output { t.Fatalf("incorrect output: expected %q, actual %q", test.Output, output) } }) } } func TestParseName(t *testing.T) { tests := map[string]struct { Input string Term byte Drop int Output string N int Err bool }{ "singleUnquoted": { Input: "dir/file.txt", Output: "dir/file.txt", N: 12, }, "singleQuoted": { Input: `"dir/file.txt"`, Output: "dir/file.txt", N: 14, }, "quotedWithEscape": { Input: `"dir/\"quotes\".txt"`, Output: `dir/"quotes".txt`, N: 20, }, "quotedWithSpaces": { Input: `"dir/space file.txt"`, Output: "dir/space file.txt", N: 20, }, "tabTerminator": { Input: "dir/space file.txt\tfile2.txt", Term: '\t', Output: "dir/space file.txt", N: 18, }, "dropPrefix": { Input: "a/dir/file.txt", Drop: 1, Output: "dir/file.txt", N: 14, }, "unquotedWithSpaces": { Input: "dir/with spaces.txt", Output: "dir/with spaces.txt", N: 19, }, "unquotedWithTrailingSpaces": { Input: "dir/with spaces.space ", Output: "dir/with spaces.space ", N: 23, }, "devNull": { Input: "/dev/null", Term: '\t', Drop: 1, Output: "/dev/null", N: 9, }, "newlineSeparates": { Input: "dir/file.txt\n", Output: "dir/file.txt", N: 12, }, "emptyString": { Input: "", Err: true, }, "emptyQuotedString": { Input: `""`, Err: true, }, "unterminatedQuotes": { Input: `"dir/file.txt`, Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { output, n, err := parseName(test.Input, test.Term, test.Drop) if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing name, but got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing name: %v", err) } if output != test.Output { t.Errorf("incorrect output: expected %q, actual: %q", test.Output, output) } if n != test.N { t.Errorf("incorrect next position: expected %d, actual %d", test.N, n) } }) } } func TestParseGitHeaderData(t *testing.T) { tests := map[string]struct { InputFile *File Line string DefaultName string OutputFile *File End bool Err bool }{ "fragementEndsParsing": { Line: "@@ -12,3 +12,2 @@\n", End: true, }, "unknownEndsParsing": { Line: "GIT binary file\n", End: true, }, "oldFileName": { Line: "--- a/dir/file.txt\n", OutputFile: &File{ OldName: "dir/file.txt", }, }, "oldFileNameDevNull": { InputFile: &File{ IsNew: true, }, Line: "--- /dev/null\n", OutputFile: &File{ IsNew: true, }, }, "oldFileNameInconsistent": { InputFile: &File{ OldName: "dir/foo.txt", }, Line: "--- a/dir/bar.txt\n", Err: true, }, "oldFileNameExistingCreateMismatch": { InputFile: &File{ OldName: "dir/foo.txt", IsNew: true, }, Line: "--- /dev/null\n", Err: true, }, "oldFileNameParsedCreateMismatch": { InputFile: &File{ IsNew: true, }, Line: "--- a/dir/file.txt\n", Err: true, }, "oldFileNameMissing": { Line: "--- \n", Err: true, }, "newFileName": { Line: "+++ b/dir/file.txt\n", OutputFile: &File{ NewName: "dir/file.txt", }, }, "newFileNameDevNull": { InputFile: &File{ IsDelete: true, }, Line: "+++ /dev/null\n", OutputFile: &File{ IsDelete: true, }, }, "newFileNameInconsistent": { InputFile: &File{ NewName: "dir/foo.txt", }, Line: "+++ b/dir/bar.txt\n", Err: true, }, "newFileNameExistingDeleteMismatch": { InputFile: &File{ NewName: "dir/foo.txt", IsDelete: true, }, Line: "+++ /dev/null\n", Err: true, }, "newFileNameParsedDeleteMismatch": { InputFile: &File{ IsDelete: true, }, Line: "+++ b/dir/file.txt\n", Err: true, }, "newFileNameMissing": { Line: "+++ \n", Err: true, }, "oldMode": { Line: "old mode 100644\n", OutputFile: &File{ OldMode: os.FileMode(0100644), }, }, "invalidOldMode": { Line: "old mode rw\n", Err: true, }, "newMode": { Line: "new mode 100755\n", OutputFile: &File{ NewMode: os.FileMode(0100755), }, }, "invalidNewMode": { Line: "new mode rwx\n", Err: true, }, "deletedFileMode": { Line: "deleted file mode 100644\n", DefaultName: "dir/file.txt", OutputFile: &File{ OldName: "dir/file.txt", OldMode: os.FileMode(0100644), IsDelete: true, }, }, "newFileMode": { Line: "new file mode 100755\n", DefaultName: "dir/file.txt", OutputFile: &File{ NewName: "dir/file.txt", NewMode: os.FileMode(0100755), IsNew: true, }, }, "copyFrom": { Line: "copy from dir/file.txt\n", OutputFile: &File{ OldName: "dir/file.txt", IsCopy: true, }, }, "copyTo": { Line: "copy to dir/file.txt\n", OutputFile: &File{ NewName: "dir/file.txt", IsCopy: true, }, }, "renameFrom": { Line: "rename from dir/file.txt\n", OutputFile: &File{ OldName: "dir/file.txt", IsRename: true, }, }, "renameTo": { Line: "rename to dir/file.txt\n", OutputFile: &File{ NewName: "dir/file.txt", IsRename: true, }, }, "similarityIndex": { Line: "similarity index 88%\n", OutputFile: &File{ Score: 88, }, }, "similarityIndexTooBig": { Line: "similarity index 9001%\n", OutputFile: &File{ Score: 0, }, }, "similarityIndexInvalid": { Line: "similarity index 12ab%\n", Err: true, }, "indexFullSHA1AndMode": { Line: "index 79c6d7f7b7e76c75b3d238f12fb1323f2333ba14..04fab916d8f938173cbb8b93469855f0e838f098 100644\n", OutputFile: &File{ OldOIDPrefix: "79c6d7f7b7e76c75b3d238f12fb1323f2333ba14", NewOIDPrefix: "04fab916d8f938173cbb8b93469855f0e838f098", OldMode: os.FileMode(0100644), }, }, "indexFullSHA1NoMode": { Line: "index 79c6d7f7b7e76c75b3d238f12fb1323f2333ba14..04fab916d8f938173cbb8b93469855f0e838f098\n", OutputFile: &File{ OldOIDPrefix: "79c6d7f7b7e76c75b3d238f12fb1323f2333ba14", NewOIDPrefix: "04fab916d8f938173cbb8b93469855f0e838f098", }, }, "indexAbbrevSHA1AndMode": { Line: "index 79c6d7..04fab9 100644\n", OutputFile: &File{ OldOIDPrefix: "79c6d7", NewOIDPrefix: "04fab9", OldMode: os.FileMode(0100644), }, }, "indexInvalid": { Line: "index 79c6d7f7b7e76c75b3d238f12fb1323f2333ba14\n", Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { var f File if test.InputFile != nil { f = *test.InputFile } end, err := parseGitHeaderData(&f, test.Line, test.DefaultName) if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing header data, but got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing header data: %v", err) } if test.OutputFile != nil && !reflect.DeepEqual(test.OutputFile, &f) { t.Errorf("incorrect output:\nexpected: %+v\nactual: %+v", test.OutputFile, &f) } if end != test.End { t.Errorf("incorrect end state, expected %t, actual %t", test.End, end) } }) } } func TestParseGitHeaderName(t *testing.T) { tests := map[string]struct { Input string Output string Err bool }{ "twoMatchingNames": { Input: "a/dir/file.txt b/dir/file.txt", Output: "dir/file.txt", }, "twoDifferentNames": { Input: "a/dir/foo.txt b/dir/bar.txt", Output: "", }, "matchingNamesWithSpaces": { Input: "a/dir/file with spaces.txt b/dir/file with spaces.txt", Output: "dir/file with spaces.txt", }, "matchingNamesWithTrailingSpaces": { Input: "a/dir/spaces b/dir/spaces ", Output: "dir/spaces ", }, "matchingNamesQuoted": { Input: `"a/dir/\"quotes\".txt" "b/dir/\"quotes\".txt"`, Output: `dir/"quotes".txt`, }, "matchingNamesFirstQuoted": { Input: `"a/dir/file.txt" b/dir/file.txt`, Output: "dir/file.txt", }, "matchingNamesSecondQuoted": { Input: `a/dir/file.txt "b/dir/file.txt"`, Output: "dir/file.txt", }, "noSecondName": { Input: "a/dir/foo.txt", Output: "", }, "noSecondNameQuoted": { Input: `"a/dir/foo.txt"`, Output: "", }, "invalidName": { Input: `"a/dir/file.txt b/dir/file.txt`, Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { output, err := parseGitHeaderName(test.Input) if test.Err { if err == nil { t.Fatalf("expected error parsing header name, but got nil") } return } if err != nil { t.Fatalf("unexpected error parsing header name: %v", err) } if output != test.Output { t.Errorf("incorrect output: expected %q, actual %q", test.Output, output) } }) } } func TestHasEpochTimestamp(t *testing.T) { tests := map[string]struct { Input string Output bool }{ "utcTimestamp": { Input: "+++ file.txt\t1970-01-01 00:00:00 +0000\n", Output: true, }, "utcZoneWithColon": { Input: "+++ file.txt\t1970-01-01 00:00:00 +00:00\n", Output: true, }, "utcZoneWithMilliseconds": { Input: "+++ file.txt\t1970-01-01 00:00:00.000000 +00:00\n", Output: true, }, "westTimestamp": { Input: "+++ file.txt\t1969-12-31 16:00:00 -0800\n", Output: true, }, "eastTimestamp": { Input: "+++ file.txt\t1970-01-01 04:00:00 +0400\n", Output: true, }, "noTab": { Input: "+++ file.txt 1970-01-01 00:00:00 +0000\n", Output: false, }, "invalidFormat": { Input: "+++ file.txt\t1970-01-01T00:00:00Z\n", Output: false, }, "notEpoch": { Input: "+++ file.txt\t2019-03-21 12:34:56.789 -0700\n", Output: false, }, "notTimestamp": { Input: "+++ file.txt\trandom text\n", Output: false, }, "notTimestampShort": { Input: "+++ file.txt\t0\n", Output: false, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { output := hasEpochTimestamp(test.Input) if output != test.Output { t.Errorf("incorrect output: expected %t, actual %t", test.Output, output) } }) } } go-gitdiff-0.8.0/gitdiff/gitdiff.go000066400000000000000000000120371427672601600171330ustar00rootroot00000000000000package gitdiff import ( "errors" "fmt" "os" "strings" ) // File describes changes to a single file. It can be either a text file or a // binary file. type File struct { OldName string NewName string IsNew bool IsDelete bool IsCopy bool IsRename bool OldMode os.FileMode NewMode os.FileMode OldOIDPrefix string NewOIDPrefix string Score int PatchHeader *PatchHeader // TextFragments contains the fragments describing changes to a text file. It // may be empty if the file is empty or if only the mode changes. TextFragments []*TextFragment // IsBinary is true if the file is a binary file. If the patch includes // binary data, BinaryFragment will be non-nil and describe the changes to // the data. If the patch is reversible, ReverseBinaryFragment will also be // non-nil and describe the changes needed to restore the original file // after applying the changes in BinaryFragment. IsBinary bool BinaryFragment *BinaryFragment ReverseBinaryFragment *BinaryFragment } // TextFragment describes changed lines starting at a specific line in a text file. type TextFragment struct { Comment string OldPosition int64 OldLines int64 NewPosition int64 NewLines int64 LinesAdded int64 LinesDeleted int64 LeadingContext int64 TrailingContext int64 Lines []Line } func (f *TextFragment) Raw(op LineOp) string { sb := strings.Builder{} for _, l := range f.Lines { if l.Op == op { sb.WriteString(l.Line) } } return sb.String() } // Header returns the canonical header of this fragment. func (f *TextFragment) Header() string { return fmt.Sprintf("@@ -%d,%d +%d,%d @@ %s", f.OldPosition, f.OldLines, f.NewPosition, f.NewLines, f.Comment) } // Validate checks that the fragment is self-consistent and appliable. Validate // returns an error if and only if the fragment is invalid. func (f *TextFragment) Validate() error { if f == nil { return errors.New("nil fragment") } var ( oldLines, newLines int64 leadingContext, trailingContext int64 contextLines, addedLines, deletedLines int64 ) // count the types of lines in the fragment content for i, line := range f.Lines { switch line.Op { case OpContext: oldLines++ newLines++ contextLines++ if addedLines == 0 && deletedLines == 0 { leadingContext++ } else { trailingContext++ } case OpAdd: newLines++ addedLines++ trailingContext = 0 case OpDelete: oldLines++ deletedLines++ trailingContext = 0 default: return fmt.Errorf("unknown operator %q on line %d", line.Op, i+1) } } // check the actual counts against the reported counts if oldLines != f.OldLines { return lineCountErr("old", oldLines, f.OldLines) } if newLines != f.NewLines { return lineCountErr("new", newLines, f.NewLines) } if leadingContext != f.LeadingContext { return lineCountErr("leading context", leadingContext, f.LeadingContext) } if trailingContext != f.TrailingContext { return lineCountErr("trailing context", trailingContext, f.TrailingContext) } if addedLines != f.LinesAdded { return lineCountErr("added", addedLines, f.LinesAdded) } if deletedLines != f.LinesDeleted { return lineCountErr("deleted", deletedLines, f.LinesDeleted) } // if a file is being created, it can only contain additions if f.OldPosition == 0 && f.OldLines != 0 { return errors.New("file creation fragment contains context or deletion lines") } return nil } func lineCountErr(kind string, actual, reported int64) error { return fmt.Errorf("fragment contains %d %s lines but reports %d", actual, kind, reported) } // Line is a line in a text fragment. type Line struct { Op LineOp Line string } func (fl Line) String() string { return fl.Op.String() + fl.Line } // Old returns true if the line appears in the old content of the fragment. func (fl Line) Old() bool { return fl.Op == OpContext || fl.Op == OpDelete } // New returns true if the line appears in the new content of the fragment. func (fl Line) New() bool { return fl.Op == OpContext || fl.Op == OpAdd } // NoEOL returns true if the line is missing a trailing newline character. func (fl Line) NoEOL() bool { return len(fl.Line) == 0 || fl.Line[len(fl.Line)-1] != '\n' } // LineOp describes the type of a text fragment line: context, added, or removed. type LineOp int const ( // OpContext indicates a context line OpContext LineOp = iota // OpDelete indicates a deleted line OpDelete // OpAdd indicates an added line OpAdd ) func (op LineOp) String() string { switch op { case OpContext: return " " case OpDelete: return "-" case OpAdd: return "+" } return "?" } // BinaryFragment describes changes to a binary file. type BinaryFragment struct { Method BinaryPatchMethod Size int64 Data []byte } // BinaryPatchMethod is the method used to create and apply the binary patch. type BinaryPatchMethod int const ( // BinaryPatchDelta indicates the data uses Git's packfile encoding BinaryPatchDelta BinaryPatchMethod = iota // BinaryPatchLiteral indicates the data is the exact file content BinaryPatchLiteral ) go-gitdiff-0.8.0/gitdiff/gitdiff_test.go000066400000000000000000000074161427672601600201770ustar00rootroot00000000000000package gitdiff import ( "strings" "testing" ) func TestTextFragmentValidate(t *testing.T) { tests := map[string]struct { Fragment TextFragment Err string }{ "oldLines": { Fragment: TextFragment{ OldPosition: 1, OldLines: 3, NewPosition: 1, NewLines: 2, LeadingContext: 1, TrailingContext: 0, LinesAdded: 1, LinesDeleted: 1, Lines: []Line{ {Op: OpContext, Line: "line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line 2\n"}, }, }, Err: "2 old lines", }, "newLines": { Fragment: TextFragment{ OldPosition: 1, OldLines: 2, NewPosition: 1, NewLines: 3, LeadingContext: 1, TrailingContext: 0, LinesAdded: 1, LinesDeleted: 1, Lines: []Line{ {Op: OpContext, Line: "line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line 2\n"}, }, }, Err: "2 new lines", }, "leadingContext": { Fragment: TextFragment{ OldPosition: 1, OldLines: 2, NewPosition: 1, NewLines: 2, LeadingContext: 0, TrailingContext: 0, LinesAdded: 1, LinesDeleted: 1, Lines: []Line{ {Op: OpContext, Line: "line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line 2\n"}, }, }, Err: "1 leading context lines", }, "trailingContext": { Fragment: TextFragment{ OldPosition: 1, OldLines: 4, NewPosition: 1, NewLines: 3, LeadingContext: 1, TrailingContext: 1, LinesAdded: 1, LinesDeleted: 2, Lines: []Line{ {Op: OpContext, Line: "line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line 2\n"}, {Op: OpContext, Line: "line 3\n"}, {Op: OpDelete, Line: "old line 4\n"}, }, }, Err: "0 trailing context lines", }, "linesAdded": { Fragment: TextFragment{ OldPosition: 1, OldLines: 4, NewPosition: 1, NewLines: 3, LeadingContext: 1, TrailingContext: 0, LinesAdded: 2, LinesDeleted: 2, Lines: []Line{ {Op: OpContext, Line: "line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line 2\n"}, {Op: OpContext, Line: "line 3\n"}, {Op: OpDelete, Line: "old line 4\n"}, }, }, Err: "1 added lines", }, "linesDeleted": { Fragment: TextFragment{ OldPosition: 1, OldLines: 4, NewPosition: 1, NewLines: 3, LeadingContext: 1, TrailingContext: 0, LinesAdded: 1, LinesDeleted: 1, Lines: []Line{ {Op: OpContext, Line: "line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line 2\n"}, {Op: OpContext, Line: "line 3\n"}, {Op: OpDelete, Line: "old line 4\n"}, }, }, Err: "2 deleted lines", }, "fileCreation": { Fragment: TextFragment{ OldPosition: 0, OldLines: 2, NewPosition: 1, NewLines: 1, LeadingContext: 0, TrailingContext: 0, LinesAdded: 1, LinesDeleted: 2, Lines: []Line{ {Op: OpDelete, Line: "old line 1\n"}, {Op: OpDelete, Line: "old line 2\n"}, {Op: OpAdd, Line: "new line\n"}, }, }, Err: "creation fragment", }, } for name, test := range tests { t.Run(name, func(t *testing.T) { err := test.Fragment.Validate() if test.Err == "" && err != nil { t.Fatalf("unexpected validation error: %v", err) } if test.Err != "" && err == nil { t.Fatal("expected validation error, but got nil") } if !strings.Contains(err.Error(), test.Err) { t.Fatalf("incorrect validation error: %q is not in %q", test.Err, err.Error()) } }) } } go-gitdiff-0.8.0/gitdiff/io.go000066400000000000000000000114711427672601600161270ustar00rootroot00000000000000package gitdiff import ( "errors" "io" ) const ( byteBufferSize = 32 * 1024 // from io.Copy lineBufferSize = 32 indexBufferSize = 1024 ) // LineReaderAt is the interface that wraps the ReadLinesAt method. // // ReadLinesAt reads len(lines) into lines starting at line offset. It returns // the number of lines read (0 <= n <= len(lines)) and any error encountered. // Line numbers are zero-indexed. // // If n < len(lines), ReadLinesAt returns a non-nil error explaining why more // lines were not returned. // // Lines read by ReadLinesAt include the newline character. The last line does // not have a final newline character if the input ends without one. type LineReaderAt interface { ReadLinesAt(lines [][]byte, offset int64) (n int, err error) } type lineReaderAt struct { r io.ReaderAt index []int64 eof bool } func (r *lineReaderAt) ReadLinesAt(lines [][]byte, offset int64) (n int, err error) { if offset < 0 { return 0, errors.New("ReadLinesAt: negative offset") } if len(lines) == 0 { return 0, nil } count := len(lines) startLine := offset endLine := startLine + int64(count) if endLine > int64(len(r.index)) && !r.eof { if err := r.indexTo(endLine); err != nil { return 0, err } } if startLine >= int64(len(r.index)) { return 0, io.EOF } buf, byteOffset, err := r.readBytes(startLine, int64(count)) if err != nil { return 0, err } for n = 0; n < count && startLine+int64(n) < int64(len(r.index)); n++ { lineno := startLine + int64(n) start, end := int64(0), r.index[lineno]-byteOffset if lineno > 0 { start = r.index[lineno-1] - byteOffset } lines[n] = buf[start:end] } if n < count { return n, io.EOF } return n, nil } // indexTo reads data and computes the line index until there is information // for line or a read returns io.EOF. It returns an error if and only if there // is an error reading data. func (r *lineReaderAt) indexTo(line int64) error { var buf [indexBufferSize]byte offset := r.lastOffset() for int64(len(r.index)) < line { n, err := r.r.ReadAt(buf[:], offset) if err != nil && err != io.EOF { return err } for _, b := range buf[:n] { offset++ if b == '\n' { r.index = append(r.index, offset) } } if err == io.EOF { if offset > r.lastOffset() { r.index = append(r.index, offset) } r.eof = true break } } return nil } func (r *lineReaderAt) lastOffset() int64 { if n := len(r.index); n > 0 { return r.index[n-1] } return 0 } // readBytes reads the bytes of the n lines starting at line and returns the // bytes and the offset of the first byte in the underlying source. func (r *lineReaderAt) readBytes(line, n int64) (b []byte, offset int64, err error) { indexLen := int64(len(r.index)) var size int64 if line > indexLen { offset = r.index[indexLen-1] } else if line > 0 { offset = r.index[line-1] } if n > 0 { if line+n > indexLen { size = r.index[indexLen-1] - offset } else { size = r.index[line+n-1] - offset } } b = make([]byte, size) if _, err := r.r.ReadAt(b, offset); err != nil { if err == io.EOF { err = errors.New("ReadLinesAt: corrupt line index or changed source data") } return nil, 0, err } return b, offset, nil } func isLen(r io.ReaderAt, n int64) (bool, error) { off := n - 1 if off < 0 { off = 0 } var b [2]byte nr, err := r.ReadAt(b[:], off) if err == io.EOF { return (n == 0 && nr == 0) || (n > 0 && nr == 1), nil } return false, err } // copyFrom writes bytes starting from offset off in src to dst stopping at the // end of src or at the first error. copyFrom returns the number of bytes // written and any error. func copyFrom(dst io.Writer, src io.ReaderAt, off int64) (written int64, err error) { buf := make([]byte, byteBufferSize) for { nr, rerr := src.ReadAt(buf, off) if nr > 0 { nw, werr := dst.Write(buf[0:nr]) if nw > 0 { written += int64(nw) } if werr != nil { err = werr break } if nr != nw { err = io.ErrShortWrite break } off += int64(nr) } if rerr != nil { if rerr != io.EOF { err = rerr } break } } return written, err } // copyLinesFrom writes lines starting from line off in src to dst stopping at // the end of src or at the first error. copyLinesFrom returns the number of // lines written and any error. func copyLinesFrom(dst io.Writer, src LineReaderAt, off int64) (written int64, err error) { buf := make([][]byte, lineBufferSize) ReadLoop: for { nr, rerr := src.ReadLinesAt(buf, off) if nr > 0 { for _, line := range buf[0:nr] { nw, werr := dst.Write(line) if nw > 0 { written++ } if werr != nil { err = werr break ReadLoop } if len(line) != nw { err = io.ErrShortWrite break ReadLoop } } off += int64(nr) } if rerr != nil { if rerr != io.EOF { err = rerr } break } } return written, err } go-gitdiff-0.8.0/gitdiff/io_test.go000066400000000000000000000126751427672601600171750ustar00rootroot00000000000000package gitdiff import ( "bytes" "fmt" "io" "math/rand" "testing" ) func TestLineReaderAt(t *testing.T) { const lineTemplate = "generated test line %d\n" tests := map[string]struct { InputLines int Offset int64 Count int Err bool EOF bool EOFCount int }{ "readLines": { InputLines: 32, Offset: 0, Count: 4, }, "readLinesOffset": { InputLines: 32, Offset: 8, Count: 4, }, "readLinesLargeOffset": { InputLines: 8192, Offset: 4096, Count: 64, }, "readSingleLine": { InputLines: 4, Offset: 2, Count: 1, }, "readZeroLines": { InputLines: 4, Offset: 2, Count: 0, }, "readAllLines": { InputLines: 64, Offset: 0, Count: 64, }, "readThroughEOF": { InputLines: 16, Offset: 12, Count: 8, EOF: true, EOFCount: 4, }, "emptyInput": { InputLines: 0, Offset: 0, Count: 2, EOF: true, EOFCount: 0, }, "offsetAfterEOF": { InputLines: 8, Offset: 10, Count: 2, EOF: true, EOFCount: 0, }, "offsetNegative": { InputLines: 8, Offset: -1, Count: 2, Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { var input bytes.Buffer for i := 0; i < test.InputLines; i++ { fmt.Fprintf(&input, lineTemplate, i) } output := make([][]byte, test.Count) for i := 0; i < test.Count; i++ { output[i] = []byte(fmt.Sprintf(lineTemplate, test.Offset+int64(i))) } r := &lineReaderAt{r: bytes.NewReader(input.Bytes())} lines := make([][]byte, test.Count) n, err := r.ReadLinesAt(lines, test.Offset) if test.Err { if err == nil { t.Fatal("expected error reading lines, but got nil") } return } if err != nil && (!test.EOF || err != io.EOF) { t.Fatalf("unexpected error reading lines: %v", err) } count := test.Count if test.EOF { count = test.EOFCount } if n != count { t.Fatalf("incorrect number of lines read: expected %d, actual %d", count, n) } for i := 0; i < n; i++ { if !bytes.Equal(output[i], lines[i]) { t.Errorf("incorrect content in line %d:\nexpected: %q\nactual: %q", i, output[i], lines[i]) } } }) } newlineTests := map[string]struct { InputSize int }{ "readLinesNoFinalNewline": { InputSize: indexBufferSize + indexBufferSize/2, }, "readLinesNoFinalNewlineBufferMultiple": { InputSize: 4 * indexBufferSize, }, } for name, test := range newlineTests { t.Run(name, func(t *testing.T) { input := bytes.Repeat([]byte("0"), test.InputSize) var output [][]byte for i := 0; i < len(input); i++ { last := i i += rand.Intn(80) if i < len(input)-1 { // last character of input must not be a newline input[i] = '\n' output = append(output, input[last:i+1]) } else { output = append(output, input[last:]) } } r := &lineReaderAt{r: bytes.NewReader(input)} lines := make([][]byte, len(output)) n, err := r.ReadLinesAt(lines, 0) if err != nil { t.Fatalf("unexpected error reading reading lines: %v", err) } if n != len(output) { t.Fatalf("incorrect number of lines read: expected %d, actual %d", len(output), n) } for i, line := range lines { if !bytes.Equal(output[i], line) { t.Errorf("incorrect content in line %d:\nexpected: %q\nactual: %q", i, output[i], line) } } }) } } func TestCopyFrom(t *testing.T) { tests := map[string]struct { Bytes int64 Offset int64 }{ "copyAll": { Bytes: byteBufferSize / 2, }, "copyPartial": { Bytes: byteBufferSize / 2, Offset: byteBufferSize / 4, }, "copyLarge": { Bytes: 8 * byteBufferSize, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { data := make([]byte, test.Bytes) rand.Read(data) var dst bytes.Buffer n, err := copyFrom(&dst, bytes.NewReader(data), test.Offset) if err != nil { t.Fatalf("unexpected error copying data: %v", err) } if n != test.Bytes-test.Offset { t.Fatalf("incorrect number of bytes copied: expected %d, actual %d", test.Bytes-test.Offset, n) } expected := data[test.Offset:] if !bytes.Equal(expected, dst.Bytes()) { t.Fatalf("incorrect data copied:\nexpected: %v\nactual: %v", expected, dst.Bytes()) } }) } } func TestCopyLinesFrom(t *testing.T) { tests := map[string]struct { Lines int64 Offset int64 }{ "copyAll": { Lines: lineBufferSize / 2, }, "copyPartial": { Lines: lineBufferSize / 2, Offset: lineBufferSize / 4, }, "copyLarge": { Lines: 8 * lineBufferSize, }, } const lineLength = 128 for name, test := range tests { t.Run(name, func(t *testing.T) { data := make([]byte, test.Lines*lineLength) for i := range data { data[i] = byte(32 + rand.Intn(95)) // ascii letters, numbers, symbols if i%lineLength == lineLength-1 { data[i] = '\n' } } var dst bytes.Buffer n, err := copyLinesFrom(&dst, &lineReaderAt{r: bytes.NewReader(data)}, test.Offset) if err != nil { t.Fatalf("unexpected error copying data: %v", err) } if n != test.Lines-test.Offset { t.Fatalf("incorrect number of lines copied: expected %d, actual %d", test.Lines-test.Offset, n) } expected := data[test.Offset*lineLength:] if !bytes.Equal(expected, dst.Bytes()) { t.Fatalf("incorrect data copied:\nexpected: %v\nactual: %v", expected, dst.Bytes()) } }) } } go-gitdiff-0.8.0/gitdiff/parser.go000066400000000000000000000072461427672601600170210ustar00rootroot00000000000000// Package gitdiff parses and applies patches generated by Git. It supports // line-oriented text patches, binary patches, and can also parse standard // unified diffs generated by other tools. package gitdiff import ( "bufio" "fmt" "io" "os/exec" "strings" ) const commitPrefix = "commit" // Parse parses a patch with changes to one or more files. Any content before // the first file is returned as the second value. If an error occurs while // parsing, it returns all files parsed before the error. func Parse(cmd *exec.Cmd, r io.ReadCloser) (<-chan *File, error) { p := newParser(r) out := make(chan *File) if err := p.Next(); err != nil { close(out) if err == io.EOF { return out, nil } return out, err } go func(cmd *exec.Cmd, out chan *File, r io.ReadCloser) { defer close(out) defer cmd.Wait() defer r.Close() ph := &PatchHeader{} for { file, pre, err := p.ParseNextFileHeader() if err != nil { if err == io.EOF { return } p.Next() continue } if strings.Contains(pre, commitPrefix) { ph, _ = ParsePatchHeader(pre) } if file == nil { break } for _, fn := range []func(*File) (int, error){ p.ParseTextFragments, p.ParseBinaryFragments, } { n, err := fn(file) if err != nil { return } if n > 0 { break } } file.PatchHeader = ph out <- file } }(cmd, out, r) return out, nil } // TODO(bkeyes): consider exporting the parser type with configuration // this would enable OID validation, p-value guessing, and prefix stripping // by allowing users to set or override defaults // parser invariants: // - methods that parse objects: // - start with the parser on the first line of the first object // - if returning nil, do not advance // - if returning an error, do not advance past the object // - if returning an object, advance to the first line after the object // - any exported parsing methods must initialize the parser by calling Next() type stringReader interface { ReadString(delim byte) (string, error) } type parser struct { r stringReader eof bool lineno int64 lines [3]string } func newParser(r io.Reader) *parser { if r, ok := r.(stringReader); ok { return &parser{r: r} } return &parser{r: bufio.NewReader(r)} } // Next advances the parser by one line. It returns any error encountered while // reading the line, including io.EOF when the end of stream is reached. func (p *parser) Next() error { if p.eof { return io.EOF } if p.lineno == 0 { // on first call to next, need to shift in all lines for i := 0; i < len(p.lines)-1; i++ { if err := p.shiftLines(); err != nil && err != io.EOF { return err } } } err := p.shiftLines() if err != nil && err != io.EOF { return err } p.lineno++ if p.lines[0] == "" { p.eof = true return io.EOF } return nil } func (p *parser) shiftLines() (err error) { for i := 0; i < len(p.lines)-1; i++ { p.lines[i] = p.lines[i+1] } p.lines[len(p.lines)-1], err = p.r.ReadString('\n') return } // Line returns a line from the parser without advancing it. A delta of 0 // returns the current line, while higher deltas return read-ahead lines. It // returns an empty string if the delta is higher than the available lines, // either because of the buffer size or because the parser reached the end of // the input. Valid lines always contain at least a newline character. func (p *parser) Line(delta uint) string { return p.lines[delta] } // Errorf generates an error and appends the current line information. func (p *parser) Errorf(delta int64, msg string, args ...interface{}) error { return fmt.Errorf("gitdiff: line %d: %s", p.lineno+delta, fmt.Sprintf(msg, args...)) } go-gitdiff-0.8.0/gitdiff/parser_test.go000066400000000000000000000333571427672601600200620ustar00rootroot00000000000000package gitdiff import ( "bytes" "encoding/binary" "encoding/json" "fmt" "io" "os" "os/exec" "reflect" "strings" "testing" "time" ) func TestLineOperations(t *testing.T) { const content = "the first line\nthe second line\nthe third line\n" t.Run("read", func(t *testing.T) { p := newTestParser(content, false) for i, expected := range []string{ "the first line\n", "the second line\n", "the third line\n", } { if err := p.Next(); err != nil { t.Fatalf("error advancing parser after line %d: %v", i, err) } if p.lineno != int64(i+1) { t.Fatalf("incorrect line number: expected %d, actual: %d", i+1, p.lineno) } line := p.Line(0) if line != expected { t.Fatalf("incorrect line %d: expected %q, was %q", i+1, expected, line) } } // reading after the last line should return EOF if err := p.Next(); err != io.EOF { t.Fatalf("expected EOF after end, but got: %v", err) } if p.lineno != 4 { t.Fatalf("incorrect line number: expected %d, actual: %d", 4, p.lineno) } // reading again returns EOF again and does not advance the line if err := p.Next(); err != io.EOF { t.Fatalf("expected EOF after end, but got: %v", err) } if p.lineno != 4 { t.Fatalf("incorrect line number: expected %d, actual: %d", 4, p.lineno) } }) t.Run("peek", func(t *testing.T) { p := newTestParser(content, false) if err := p.Next(); err != nil { t.Fatalf("error advancing parser: %v", err) } line := p.Line(1) if line != "the second line\n" { t.Fatalf("incorrect peek line: %s", line) } if err := p.Next(); err != nil { t.Fatalf("error advancing parser after peek: %v", err) } line = p.Line(0) if line != "the second line\n" { t.Fatalf("incorrect read line: %s", line) } }) t.Run("emptyInput", func(t *testing.T) { p := newTestParser("", false) if err := p.Next(); err != io.EOF { t.Fatalf("expected EOF on first Next(), but got: %v", err) } }) } func TestParserInvariant_Advancement(t *testing.T) { tests := map[string]struct { Input string Parse func(p *parser) error EndLine string }{ "ParseGitFileHeader": { Input: `diff --git a/dir/file.txt b/dir/file.txt index 9540595..30e6333 100644 --- a/dir/file.txt +++ b/dir/file.txt @@ -1,2 +1,3 @@ context line `, Parse: func(p *parser) error { _, err := p.ParseGitFileHeader() return err }, EndLine: "@@ -1,2 +1,3 @@\n", }, "ParseTraditionalFileHeader": { Input: `--- dir/file.txt +++ dir/file.txt @@ -1,2 +1,3 @@ context line `, Parse: func(p *parser) error { _, err := p.ParseTraditionalFileHeader() return err }, EndLine: "@@ -1,2 +1,3 @@\n", }, "ParseTextFragmentHeader": { Input: `@@ -1,2 +1,3 @@ context line `, Parse: func(p *parser) error { _, err := p.ParseTextFragmentHeader() return err }, EndLine: "context line\n", }, "ParseTextChunk": { Input: ` context line -old line +new line context line @@ -1 +1 @@ `, Parse: func(p *parser) error { return p.ParseTextChunk(&TextFragment{OldLines: 3, NewLines: 3}) }, EndLine: "@@ -1 +1 @@\n", }, "ParseTextFragments": { Input: `@@ -1,2 +1,2 @@ context line -old line +new line @@ -1,2 +1,2 @@ -old line +new line context line diff --git a/file.txt b/file.txt `, Parse: func(p *parser) error { _, err := p.ParseTextFragments(&File{}) return err }, EndLine: "diff --git a/file.txt b/file.txt\n", }, "ParseNextFileHeader": { Input: `not a header diff --git a/file.txt b/file.txt --- a/file.txt +++ b/file.txt @@ -1,2 +1,2 @@ `, Parse: func(p *parser) error { _, _, err := p.ParseNextFileHeader() return err }, EndLine: "@@ -1,2 +1,2 @@\n", }, "ParseBinaryMarker": { Input: `Binary files differ diff --git a/file.txt b/file.txt `, Parse: func(p *parser) error { _, _, err := p.ParseBinaryMarker() return err }, EndLine: "diff --git a/file.txt b/file.txt\n", }, "ParseBinaryFragmentHeader": { Input: `literal 0 HcmV?d00001 `, Parse: func(p *parser) error { _, err := p.ParseBinaryFragmentHeader() return err }, EndLine: "HcmV?d00001\n", }, "ParseBinaryChunk": { Input: "TcmZQzU|?i`" + `U?w2V48*Je09XJG literal 0 `, Parse: func(p *parser) error { return p.ParseBinaryChunk(&BinaryFragment{Size: 20}) }, EndLine: "literal 0\n", }, "ParseBinaryFragments": { Input: `GIT binary patch literal 40 gcmZQzU|?i` + "`" + `U?w2V48*KJ%mKu_Kr9NxN Date: Tue Apr 2 22:30:00 2019 -0700 This is a sample commit message. diff --git a/file.txt b/file.txt index cc34da1..1acbae5 100644 --- a/file.txt +++ b/file.txt @@ -1,3 +1,4 @@ `, Output: &File{ OldName: "file.txt", NewName: "file.txt", OldMode: os.FileMode(0100644), OldOIDPrefix: "cc34da1", NewOIDPrefix: "1acbae5", }, Preamble: `commit 1acbae563cd6ef5750a82ee64e116c6eb065cb94 Author: Morton Haypenny Date: Tue Apr 2 22:30:00 2019 -0700 This is a sample commit message. `, }, "traditionalHeader": { Input: ` --- file.txt 2019-04-01 22:58:14.833597918 -0700 +++ file.txt 2019-04-01 22:58:14.833597918 -0700 @@ -1,3 +1,4 @@ `, Output: &File{ OldName: "file.txt", NewName: "file.txt", }, Preamble: "\n", }, "noHeaders": { Input: ` this is a line this is another line --- could this be a header? nope, it's just some dashes `, Output: nil, Preamble: "", }, "detatchedFragmentLike": { Input: ` a wild fragment appears? @@ -1,3 +1,4 ~1,5 @@ `, Output: nil, }, "detatchedFragment": { Input: ` a wild fragment appears? @@ -1,3 +1,4 @@ `, Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) f, pre, err := p.ParseNextFileHeader() if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing next file header, but got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing next file header: %v", err) } if test.Preamble != pre { t.Errorf("incorrect preamble\nexpected: %q\n actual: %q", test.Preamble, pre) } if !reflect.DeepEqual(test.Output, f) { t.Errorf("incorrect file\nexpected: %+v\n actual: %+v", test.Output, f) } }) } } func TestParse(t *testing.T) { textFragments := []*TextFragment{ { OldPosition: 3, OldLines: 6, NewPosition: 3, NewLines: 8, Comment: "fragment 1", Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1\n"}, {OpDelete, "old line 2\n"}, {OpContext, "context line\n"}, {OpAdd, "new line 1\n"}, {OpAdd, "new line 2\n"}, {OpAdd, "new line 3\n"}, {OpContext, "context line\n"}, {OpDelete, "old line 3\n"}, {OpAdd, "new line 4\n"}, {OpAdd, "new line 5\n"}, }, LinesAdded: 5, LinesDeleted: 3, LeadingContext: 1, }, { OldPosition: 31, OldLines: 2, NewPosition: 33, NewLines: 2, Comment: "fragment 2", Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 4\n"}, {OpAdd, "new line 6\n"}, }, LinesAdded: 1, LinesDeleted: 1, LeadingContext: 1, }, } textPreamble := `commit 5d9790fec7d95aa223f3d20936340bf55ff3dcbe Author: Morton Haypenny Date: Tue Apr 2 22:55:40 2019 -0700 A file with multiple fragments. The content is arbitrary. ` binaryPreamble := `commit 5d9790fec7d95aa223f3d20936340bf55ff3dcbe Author: Morton Haypenny Date: Tue Apr 2 22:55:40 2019 -0700 A binary file with the first 10 fibonacci numbers. ` tests := map[string]struct { InputFile string Output []*File Preamble string Err bool }{ "oneFile": { InputFile: "testdata/one_file.patch", Output: []*File{ { PatchHeader: &PatchHeader{ SHA: "5d9790fec7d95aa223f3d20936340bf55ff3dcbe", Author: &PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, AuthorDate: asTime("2019-04-02T22:55:40-07:00"), Title: "A file with multiple fragments.", Body: "The content is arbitrary.", }, OldName: "dir/file1.txt", NewName: "dir/file1.txt", OldMode: os.FileMode(0100644), OldOIDPrefix: "ebe9fa54", NewOIDPrefix: "fe103e1d", TextFragments: textFragments, }, }, Preamble: textPreamble, }, "twoFiles": { InputFile: "testdata/two_files.patch", Output: []*File{ { PatchHeader: &PatchHeader{ SHA: "5d9790fec7d95aa223f3d20936340bf55ff3dcbe", Author: &PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, AuthorDate: asTime("2019-04-02T22:55:40-07:00"), Title: "A file with multiple fragments.", Body: "The content is arbitrary.", }, OldName: "dir/file1.txt", NewName: "dir/file1.txt", OldMode: os.FileMode(0100644), OldOIDPrefix: "ebe9fa54", NewOIDPrefix: "fe103e1d", TextFragments: textFragments, }, { PatchHeader: &PatchHeader{ SHA: "5d9790fec7d95aa223f3d20936340bf55ff3dcbe", Author: &PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, AuthorDate: asTime("2019-04-02T22:55:40-07:00"), Title: "A file with multiple fragments.", Body: "The content is arbitrary.", }, OldName: "dir/file2.txt", NewName: "dir/file2.txt", OldMode: os.FileMode(0100644), OldOIDPrefix: "417ebc70", NewOIDPrefix: "67514b7f", TextFragments: textFragments, }, }, Preamble: textPreamble, }, "newBinaryFile": { InputFile: "testdata/new_binary_file.patch", Output: []*File{ { PatchHeader: &PatchHeader{ SHA: "5d9790fec7d95aa223f3d20936340bf55ff3dcbe", Author: &PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, AuthorDate: asTime("2019-04-02T22:55:40-07:00"), Title: "A binary file with the first 10 fibonacci numbers.", }, OldName: "", NewName: "dir/ten.bin", NewMode: os.FileMode(0100644), OldOIDPrefix: "0000000000000000000000000000000000000000", NewOIDPrefix: "77b068ba48c356156944ea714740d0d5ca07bfec", IsNew: true, IsBinary: true, BinaryFragment: &BinaryFragment{ Method: BinaryPatchLiteral, Size: 40, Data: fib(10, binary.BigEndian), }, ReverseBinaryFragment: &BinaryFragment{ Method: BinaryPatchLiteral, Size: 0, Data: []byte{}, }, }, }, Preamble: binaryPreamble, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { f, err := os.Open(test.InputFile) if err != nil { t.Fatalf("unexpected error opening input file: %v", err) } cmd := exec.Command("echo", "hello") fileChan, err := Parse(cmd, f) if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing patch, but got %v", err) } return } if err != nil { t.Fatalf("unexpected error parsing patch: %v", err) } var files []*File for file := range fileChan { files = append(files, file) } if len(test.Output) != len(files) { t.Fatalf("incorrect number of parsed files: expected %d, actual %d", len(test.Output), len(files)) } for i := range test.Output { if !reflect.DeepEqual(test.Output[i], files[i]) { exp, _ := json.MarshalIndent(test.Output[i], "", " ") act, _ := json.MarshalIndent(files[i], "", " ") t.Errorf("incorrect file at position %d\nexpected: %s\n actual: %s", i, exp, act) } } }) } } func BenchmarkParse(b *testing.B) { var inputDiff string { builder := strings.Builder{} builder.WriteString(`commit 5d9790fec7d95aa223f3d20936340bf55ff3dcbe Author: Morton Haypenny Date: Tue Apr 2 22:55:40 2019 -0700 A file with multiple fragments. The content is arbitrary. `) fileDiff := func(i int) string { return fmt.Sprintf(`diff --git a/dir/file%[1]d.txt b/dir/file%[1]d.txt index ebe9fa54..fe103e1d 100644 --- a/dir/file%[1]d.txt +++ b/dir/file%[1]d.txt @@ -3,6 +3,8 @@ fragment 1 context line -old line 1 -old line 2 context line +new line 1 +new line 2 +new line 3 context line -old line 3 +new line 4 +new line 5 @@ -31,2 +33,2 @@ fragment 2 context line -old line 4 +new line 6 `, i) } for i := 0; i < 1000; i++ { _, err := builder.WriteString(fileDiff(i)) if err != nil { panic(err) } } inputDiff = builder.String() } for i := 0; i < b.N; i++ { reader := io.NopCloser(strings.NewReader(inputDiff)) ch, err := Parse(&exec.Cmd{}, reader) if err != nil { panic(err) } for range ch { } } } func newTestParser(input string, init bool) *parser { p := newParser(bytes.NewBufferString(input)) if init { _ = p.Next() } return p } func asTime(s string) time.Time { t, err := time.Parse(time.RFC3339, s) if err != nil { panic(err) } return t } go-gitdiff-0.8.0/gitdiff/patch_header.go000066400000000000000000000303411427672601600201240ustar00rootroot00000000000000package gitdiff import ( "bufio" "errors" "fmt" "io" "mime/quotedprintable" "net/mail" "strconv" "strings" "time" "unicode" ) const ( mailHeaderPrefix = "From " prettyHeaderPrefix = "commit " mailMinimumHeaderPrefix = "From:" ) // PatchHeader is a parsed version of the preamble content that appears before // the first diff in a patch. It includes metadata about the patch, such as the // author and a subject. type PatchHeader struct { // The SHA of the commit the patch was generated from. Empty if the SHA is // not included in the header. SHA string // The author details of the patch. If these details are not included in // the header, Author is nil and AuthorDate is the zero time. Author *PatchIdentity AuthorDate time.Time // The committer details of the patch. If these details are not included in // the header, Committer is nil and CommitterDate is the zero time. Committer *PatchIdentity CommitterDate time.Time // The title and body of the commit message describing the changes in the // patch. Empty if no message is included in the header. Title string Body string // If the preamble looks like an email, ParsePatchHeader will // remove prefixes such as `Re: ` and `[PATCH v3 5/17]` from the // Title and place them here. SubjectPrefix string // If the preamble looks like an email, and it contains a `---` // line, that line will be removed and everything after it will be // placed in BodyAppendix. BodyAppendix string } // Message returns the commit message for the header. The message consists of // the title and the body separated by an empty line. func (h *PatchHeader) Message() string { var msg strings.Builder if h != nil { msg.WriteString(h.Title) if h.Body != "" { msg.WriteString("\n\n") msg.WriteString(h.Body) } } return msg.String() } // PatchIdentity identifies a person who authored or committed a patch. type PatchIdentity struct { Name string Email string } func (i PatchIdentity) String() string { name := i.Name if name == "" { name = `""` } return fmt.Sprintf("%s <%s>", name, i.Email) } // ParsePatchIdentity parses a patch identity string. A valid string contains a // name followed by an email address in angle brackets. // ParsePatchIdentity does not require that the email address is valid or // properly formatted. The name must not contain a // left angle bracket, '<', and the email address must not contain a right // angle bracket, '>'. func ParsePatchIdentity(s string) (PatchIdentity, error) { var emailStart, emailEnd int for i, c := range s { if c == '<' && emailStart == 0 { emailStart = i + 1 } if c == '>' && emailStart > 0 { emailEnd = i break } } if emailStart > 0 && emailEnd == 0 { return PatchIdentity{}, fmt.Errorf("invalid identity string: unclosed email section: %s", s) } var name, email string if emailStart > 0 { name = strings.TrimSpace(s[:emailStart-1]) } if emailStart > 0 && emailEnd > 0 { email = strings.TrimSpace(s[emailStart:emailEnd]) } return PatchIdentity{Name: name, Email: email}, nil } // ParsePatchDate parses a patch date string. It returns the parsed time or an // error if s has an unknown format. ParsePatchDate supports the iso, rfc, // short, raw, unix, and default formats (with local variants) used by the // --date flag in Git. func ParsePatchDate(s string) (time.Time, error) { const ( isoFormat = "2006-01-02 15:04:05 -0700" isoStrictFormat = "2006-01-02T15:04:05-07:00" rfc2822Format = "Mon, 2 Jan 2006 15:04:05 -0700" shortFormat = "2006-01-02" defaultFormat = "Mon Jan 2 15:04:05 2006 -0700" defaultLocalFormat = "Mon Jan 2 15:04:05 2006" ) if s == "" { return time.Time{}, nil } for _, fmt := range []string{ isoFormat, isoStrictFormat, rfc2822Format, shortFormat, defaultFormat, defaultLocalFormat, } { if t, err := time.ParseInLocation(fmt, s, time.Local); err == nil { return t, nil } } // unix format if unix, err := strconv.ParseInt(s, 10, 64); err == nil { return time.Unix(unix, 0), nil } // raw format if space := strings.IndexByte(s, ' '); space > 0 { unix, uerr := strconv.ParseInt(s[:space], 10, 64) zone, zerr := time.Parse("-0700", s[space+1:]) if uerr == nil && zerr == nil { return time.Unix(unix, 0).In(zone.Location()), nil } } return time.Time{}, fmt.Errorf("unknown date format: %s", s) } // ParsePatchHeader parses a preamble string as returned by Parse into a // PatchHeader. Due to the variety of header formats, some fields of the parsed // PatchHeader may be unset after parsing. // // Supported formats are the short, medium, full, fuller, and email pretty // formats used by git diff, git log, and git show and the UNIX mailbox format // used by git format-patch. // // If ParsePatchHeader detects that it is handling an email, it will // remove extra content at the beginning of the title line, such as // `[PATCH]` or `Re:` in the same way that `git mailinfo` does. // SubjectPrefix will be set to the value of this removed string. // (`git mailinfo` is the core part of `git am` that pulls information // out of an individual mail.) // // Additionally, if ParsePatchHeader detects that it's handling an // email, it will remove a `---` line and put anything after it into // BodyAppendix. // // Those wishing the effect of a plain `git am` should use // `PatchHeader.Title + "\n" + PatchHeader.Body` (or // `PatchHeader.Message()`). Those wishing to retain the subject // prefix and appendix material should use `PatchHeader.SubjectPrefix // + PatchHeader.Title + "\n" + PatchHeader.Body + "\n" + // PatchHeader.BodyAppendix`. func ParsePatchHeader(s string) (*PatchHeader, error) { r := bufio.NewReader(strings.NewReader(s)) var line string for { var err error line, err = r.ReadString('\n') if err == io.EOF { break } if err != nil { return nil, err } line = strings.TrimSpace(line) if len(line) > 0 { break } } switch { case strings.HasPrefix(line, mailHeaderPrefix): return parseHeaderMail(line, r) case strings.HasPrefix(line, mailMinimumHeaderPrefix): r = bufio.NewReader(strings.NewReader(s)) return parseHeaderMail("", r) case strings.HasPrefix(line, prettyHeaderPrefix): return parseHeaderPretty(line, r) } return nil, errors.New("unrecognized patch header format") } func parseHeaderPretty(prettyLine string, r io.Reader) (*PatchHeader, error) { const ( authorPrefix = "Author:" commitPrefix = "Commit:" datePrefix = "Date:" authorDatePrefix = "AuthorDate:" commitDatePrefix = "CommitDate:" ) h := &PatchHeader{} prettyLine = prettyLine[len(prettyHeaderPrefix):] if i := strings.IndexByte(prettyLine, ' '); i > 0 { h.SHA = prettyLine[:i] } else { h.SHA = prettyLine } s := bufio.NewScanner(r) for s.Scan() { line := s.Text() // empty line marks end of fields, remaining lines are title/message if strings.TrimSpace(line) == "" { break } switch { case strings.HasPrefix(line, authorPrefix): u, err := ParsePatchIdentity(line[len(authorPrefix):]) if err != nil { return nil, err } h.Author = &u case strings.HasPrefix(line, commitPrefix): u, err := ParsePatchIdentity(line[len(commitPrefix):]) if err != nil { return nil, err } h.Committer = &u case strings.HasPrefix(line, datePrefix): d, err := ParsePatchDate(strings.TrimSpace(line[len(datePrefix):])) if err != nil { return nil, err } h.AuthorDate = d case strings.HasPrefix(line, authorDatePrefix): d, err := ParsePatchDate(strings.TrimSpace(line[len(authorDatePrefix):])) if err != nil { return nil, err } h.AuthorDate = d case strings.HasPrefix(line, commitDatePrefix): d, err := ParsePatchDate(strings.TrimSpace(line[len(commitDatePrefix):])) if err != nil { return nil, err } h.CommitterDate = d } } if s.Err() != nil { return nil, s.Err() } title, indent := scanMessageTitle(s) if s.Err() != nil { return nil, s.Err() } h.Title = title if title != "" { // Don't check for an appendix body, _ := scanMessageBody(s, indent, false) if s.Err() != nil { return nil, s.Err() } h.Body = body } return h, nil } func scanMessageTitle(s *bufio.Scanner) (title string, indent string) { var b strings.Builder for i := 0; s.Scan(); i++ { line := s.Text() trimLine := strings.TrimSpace(line) if trimLine == "" { break } if i == 0 { if start := strings.IndexFunc(line, func(c rune) bool { return !unicode.IsSpace(c) }); start > 0 { indent = line[:start] } } if b.Len() > 0 { b.WriteByte(' ') } b.WriteString(trimLine) } return b.String(), indent } func scanMessageBody(s *bufio.Scanner, indent string, separateAppendix bool) (string, string) { // Body and appendix var body, appendix strings.Builder c := &body var empty int for i := 0; s.Scan(); i++ { line := s.Text() line = strings.TrimRightFunc(line, unicode.IsSpace) line = strings.TrimPrefix(line, indent) if line == "" { empty++ continue } // If requested, parse out "appendix" information (often added // by `git format-patch` and removed by `git am`). if separateAppendix && c == &body && line == "---" { c = &appendix continue } if c.Len() > 0 { c.WriteByte('\n') if empty > 0 { c.WriteByte('\n') } } empty = 0 c.WriteString(line) } return body.String(), appendix.String() } func parseHeaderMail(mailLine string, r io.Reader) (*PatchHeader, error) { msg, err := mail.ReadMessage(r) if err != nil { return nil, err } h := &PatchHeader{} if len(mailLine) > len(mailHeaderPrefix) { mailLine = mailLine[len(mailHeaderPrefix):] if i := strings.IndexByte(mailLine, ' '); i > 0 { h.SHA = mailLine[:i] } } addrs, err := msg.Header.AddressList("From") if err != nil && !errors.Is(err, mail.ErrHeaderNotPresent) { return nil, err } if len(addrs) > 0 { addr := addrs[0] if addr.Name == "" { addr.Name = addr.Address } h.Author = &PatchIdentity{Name: addr.Name, Email: addr.Address} } date := msg.Header.Get("Date") if date != "" { d, err := ParsePatchDate(date) if err != nil { return nil, err } h.AuthorDate = d } subject := msg.Header.Get("Subject") h.SubjectPrefix, h.Title = parseSubject(subject) s := bufio.NewScanner(msg.Body) h.Body, h.BodyAppendix = scanMessageBody(s, "", true) if s.Err() != nil { return nil, s.Err() } return h, nil } // Takes an email subject and returns the patch prefix and commit // title. i.e., `[PATCH v3 3/5] Implement foo` would return `[PATCH // v3 3/5] ` and `Implement foo` func parseSubject(s string) (string, string) { // This is meant to be compatible with // https://github.com/git/git/blob/master/mailinfo.c:cleanup_subject(). // If compatibility with `git am` drifts, go there to see if there // are any updates. at := 0 for at < len(s) { switch s[at] { case 'r', 'R': // Detect re:, Re:, rE: and RE: if at+2 < len(s) && (s[at+1] == 'e' || s[at+1] == 'E') && s[at+2] == ':' { at += 3 continue } case ' ', '\t', ':': // Delete whitespace and duplicate ':' characters at++ continue case '[': // Look for closing parenthesis j := at + 1 for ; j < len(s); j++ { if s[j] == ']' { break } } if j < len(s) { at = j + 1 continue } } // Only loop if we actually removed something break } return s[:at], decodeSubject(s[at:]) } // Decodes a subject line. Currently only supports quoted-printable UTF-8. This format is the result // of a `git format-patch` when the commit title has a non-ASCII character (i.e. an emoji). // See for reference: https://stackoverflow.com/questions/27695749/gmail-api-not-respecting-utf-encoding-in-subject func decodeSubject(encoded string) string { if !strings.HasPrefix(encoded, "=?UTF-8?q?") { // not UTF-8 encoded return encoded } // If the subject is too long, `git format-patch` may produce a subject line across // multiple lines. When parsed, this can look like the following: // payload := " " + encoded payload = strings.ReplaceAll(payload, " =?UTF-8?q?", "") payload = strings.ReplaceAll(payload, "?=", "") decoded, err := io.ReadAll(quotedprintable.NewReader(strings.NewReader(payload))) if err != nil { // if err, abort decoding and return original subject return encoded } return string(decoded) } go-gitdiff-0.8.0/gitdiff/patch_header_test.go000066400000000000000000000342251427672601600211700ustar00rootroot00000000000000package gitdiff import ( "testing" "time" ) func TestParsePatchIdentity(t *testing.T) { tests := map[string]struct { Input string Output PatchIdentity Err interface{} }{ "simple": { Input: "Morton Haypenny ", Output: PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, }, "extraWhitespace": { Input: " Morton Haypenny ", Output: PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, }, "trailingCharacters": { Input: "Morton Haypenny unrelated garbage", Output: PatchIdentity{ Name: "Morton Haypenny", Email: "mhaypenny@example.com", }, }, "missingName": { Input: "", Output: PatchIdentity{ Name: "", Email: "mhaypenny@example.com", }, }, "missingEmail": { Input: "Morton Haypenny", Output: PatchIdentity{ Name: "", Email: "", }, }, "emptyEmail": { Input: "Morton Haypenny <>", Output: PatchIdentity{ Name: "Morton Haypenny", Email: "", }, }, "missingNameAndEmail": { Input: "", Output: PatchIdentity{ Name: "", Email: "", }, }, "emptyNameAndEmail": { Input: " <>", Output: PatchIdentity{ Name: "", Email: "", }, }, "unclosedEmail": { Input: "Morton Haypenny A sample commit to test header parsing `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, Title: expectedTitle, }, }, "prettyMedium": { Input: `commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny Date: Sat Apr 11 15:21:23 2020 -0700 A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedTitle, Body: expectedBody, }, }, "prettyFull": { Input: `commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny Commit: Morton Haypenny A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, Committer: expectedIdentity, Title: expectedTitle, Body: expectedBody, }, }, "prettyFuller": { Input: `commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny AuthorDate: Sat Apr 11 15:21:23 2020 -0700 Commit: Morton Haypenny CommitDate: Sat Apr 11 15:21:23 2020 -0700 A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Committer: expectedIdentity, CommitterDate: expectedDate, Title: expectedTitle, Body: expectedBody, }, }, "prettyAppendix": { Input: `commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny AuthorDate: Sat Apr 11 15:21:23 2020 -0700 Commit: Morton Haypenny CommitDate: Sat Apr 11 15:21:23 2020 -0700 A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. --- CC: Joe Smith `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Committer: expectedIdentity, CommitterDate: expectedDate, Title: expectedTitle, Body: expectedBody + "\n---\n" + expectedBodyAppendix, }, }, "mailbox": { Input: `From 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Mon Sep 17 00:00:00 2001 From: Morton Haypenny Date: Sat, 11 Apr 2020 15:21:23 -0700 Subject: [PATCH] A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedTitle, Body: expectedBody, }, }, "mailboxEmojiOneLine": { Input: `From 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Mon Sep 17 00:00:00 2001 From: Morton Haypenny Date: Sat, 11 Apr 2020 15:21:23 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Enabling=20auto-merging?= The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedEmojiOneLineTitle, Body: expectedBody, }, }, "mailboxEmojiMultiLine": { Input: `From 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Mon Sep 17 00:00:00 2001 From: Morton Haypenny Date: Sat, 11 Apr 2020 15:21:23 -0700 Subject: [PATCH] =?UTF-8?q?[IA64]=20Put=20ia64=20config=20files=20on=20the=20?= =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20diet?= The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedEmojiMultiLineTitle, Body: expectedBody, }, }, "mailboxAppendix": { Input: `From 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Mon Sep 17 00:00:00 2001 From: Morton Haypenny Date: Sat, 11 Apr 2020 15:21:23 -0700 Subject: [PATCH] A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. --- CC: Joe Smith `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedTitle, Body: expectedBody, BodyAppendix: expectedBodyAppendix, }, }, "mailboxMinimalNoName": { Input: `From: Subject: [PATCH] A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ Author: &PatchIdentity{expectedIdentity.Email, expectedIdentity.Email}, Title: expectedTitle, Body: expectedBody, }, }, "mailboxMinimal": { Input: `From: Morton Haypenny Subject: [PATCH] A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ Author: expectedIdentity, Title: expectedTitle, Body: expectedBody, }, }, "unwrapTitle": { Input: `commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny Date: Sat Apr 11 15:21:23 2020 -0700 A sample commit to test header parsing with a long title that is wrapped. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedTitle + " with a long title that is wrapped.", }, }, "normalizeBodySpace": { Input: `commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny Date: Sat Apr 11 15:21:23 2020 -0700 A sample commit to test header parsing The medium format shows the body, which may wrap on to multiple lines. Another body line. `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, AuthorDate: expectedDate, Title: expectedTitle, Body: expectedBody, }, }, "ignoreLeadingBlankLines": { Input: ` ` + " " + ` commit 61f5cd90bed4d204ee3feb3aa41ee91d4734855b Author: Morton Haypenny A sample commit to test header parsing `, Header: PatchHeader{ SHA: expectedSHA, Author: expectedIdentity, Title: expectedTitle, }, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { h, err := ParsePatchHeader(test.Input) if test.Err != nil { assertError(t, test.Err, err, "parsing patch header") return } if err != nil { t.Fatalf("unexpected error parsing patch header: %v", err) } if h == nil { t.Fatalf("expected non-nil header, but got nil") } exp := test.Header act := *h if exp.SHA != act.SHA { t.Errorf("incorrect parsed SHA: expected %q, actual %q", exp.SHA, act.SHA) } assertPatchIdentity(t, "author", exp.Author, act.Author) if !exp.AuthorDate.Equal(act.AuthorDate) { t.Errorf("incorrect parsed author date: expected %v, but got %v", exp.AuthorDate, act.AuthorDate) } assertPatchIdentity(t, "committer", exp.Committer, act.Committer) if !exp.CommitterDate.Equal(act.CommitterDate) { t.Errorf("incorrect parsed committer date: expected %v, but got %v", exp.CommitterDate, act.CommitterDate) } if exp.Title != act.Title { t.Errorf("incorrect parsed title:\n expected: %q\n actual: %q", exp.Title, act.Title) } if exp.Body != act.Body { t.Errorf("incorrect parsed body:\n expected: %q\n actual: %q", exp.Body, act.Body) } if exp.BodyAppendix != act.BodyAppendix { t.Errorf("incorrect parsed body appendix:\n expected: %q\n actual: %q", exp.BodyAppendix, act.BodyAppendix) } }) } } func assertPatchIdentity(t *testing.T, kind string, exp, act *PatchIdentity) { switch { case exp == nil && act == nil: case exp == nil && act != nil: t.Errorf("incorrect parsed %s: expected nil, but got %+v", kind, act) case exp != nil && act == nil: t.Errorf("incorrect parsed %s: expected %+v, but got nil", kind, exp) case exp.Name != act.Name || exp.Email != act.Email: t.Errorf("incorrect parsed %s, expected %+v, bot got %+v", kind, exp, act) } } func TestCleanupSubject(t *testing.T) { exp := "A sample commit to test header parsing" tests := map[string]string{ "plain": "", "patch": "[PATCH] ", "patchv5": "[PATCH v5] ", "patchrfc": "[PATCH RFC] ", "patchnospace": "[PATCH]", "space": " ", "re": "re: ", "Re": "Re: ", "RE": "rE: ", "rere": "re: re: ", } for name, prefix := range tests { gotprefix, gottitle := parseSubject(prefix + exp) if gottitle != exp { t.Errorf("%s: Incorrect parsing of prefix %s: got title %s, wanted %s", name, prefix, gottitle, exp) } if gotprefix != prefix { t.Errorf("%s: Incorrect parsing of prefix %s: got prefix %s", name, prefix, gotprefix) } } moretests := map[string]struct { in, eprefix, etitle string }{ "Reimplement": {"Reimplement something", "", "Reimplement something"}, "patch-reimplement": {"[PATCH v5] Reimplement something", "[PATCH v5] ", "Reimplement something"}, "Openbracket": {"[Just to annoy people", "", "[Just to annoy people"}, } for name, test := range moretests { prefix, title := parseSubject(test.in) if title != test.etitle { t.Errorf("%s: Incorrect parsing of %s: got title %s, wanted %s", name, test.in, title, test.etitle) } if prefix != test.eprefix { t.Errorf("%s: Incorrect parsing of %s: got prefix %s, wanted %s", name, test.in, title, test.etitle) } } } go-gitdiff-0.8.0/gitdiff/testdata/000077500000000000000000000000001427672601600167765ustar00rootroot00000000000000go-gitdiff-0.8.0/gitdiff/testdata/apply/000077500000000000000000000000001427672601600201235ustar00rootroot00000000000000go-gitdiff-0.8.0/gitdiff/testdata/apply/bin.go000066400000000000000000000047631427672601600212340ustar00rootroot00000000000000//+build ignore // bin.go is a helper CLI to manipulate binary diff data for testing purposes. // It can decode patches generated by git using the standard parsing functions // or it can encode binary data back into the format expected by Git. It // operates on stdin writes results (possibly binary) to stdout. package main import ( "bytes" "compress/zlib" "encoding/binary" "flag" "io/ioutil" "log" "os" "strings" "github.com/gitleaks/go-gitdiff/gitdiff" ) var ( b85Powers = []uint32{52200625, 614125, 7225, 85, 1} b85Alpha = []byte( "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "!#$%&()*+-;<=>?@^_`{|}~", ) ) var mode string func base85Encode(data []byte) []byte { chunks, remaining := len(data)/4, len(data)%4 if remaining > 0 { data = append(data, make([]byte, 4-remaining)...) chunks++ } var n int out := make([]byte, 5*chunks) for i := 0; i < len(data); i += 4 { v := binary.BigEndian.Uint32(data[i : i+4]) for j := 0; j < 5; j++ { p := v / b85Powers[j] out[n+j] = b85Alpha[p] v -= b85Powers[j] * p } n += 5 } return out } func compress(data []byte) ([]byte, error) { var b bytes.Buffer w := zlib.NewWriter(&b) if _, err := w.Write(data); err != nil { return nil, err } if err := w.Close(); err != nil { return nil, err } return b.Bytes(), nil } func wrap(data []byte) string { var s strings.Builder for i := 0; i < len(data); i += 52 { c := 52 if c > len(data)-i { c = len(data) - i } b := (c / 5) * 4 if b <= 26 { s.WriteByte(byte('A' + b - 1)) } else { s.WriteByte(byte('a' + b - 27)) } s.Write(data[i : i+c]) s.WriteByte('\n') } return s.String() } func init() { flag.StringVar(&mode, "mode", "parse", "operation mode, one of 'parse' or 'encode'") } func main() { flag.Parse() switch mode { case "parse": files, _, err := gitdiff.Parse(os.Stdin) if err != nil { log.Fatalf("failed to parse file: %v", err) } if len(files) != 1 { log.Fatalf("patch contains more than one file: %d", len(files)) } if files[0].BinaryFragment == nil { log.Fatalf("patch file does not contain a binary fragment") } os.Stdout.Write(files[0].BinaryFragment.Data) case "encode": data, err := ioutil.ReadAll(os.Stdin) if err != nil { log.Fatalf("failed to read input: %v", err) } data, err = compress(data) if err != nil { log.Fatalf("failed to compress data: %v", err) } os.Stdout.WriteString(wrap(base85Encode(data))) default: log.Fatalf("unknown mode: %s", mode) } } go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_error.src000066400000000000000000000002021427672601600256430ustar00rootroot00000000000000¿t›¿RÍszTP4&ƒs;•ßX¡ò½º÷'*Òä¶(þF ¾¾eæaÚ‡óÃ¥´—·“!8ª”•IóŽ%‚kyÏâ6©iîùܘØÊ–¼³ÌKÏó‰ë …“:”2í ª¹dFé@ãì%‚ÿxÒ›Pùÿ|Ö¥pÿå1lH^¼‰[ógo-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_error_dst_size.patch000066400000000000000000000002741427672601600300700ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/bin_fragment_delta_error.src b/gitdiff/testdata/apply/bin_fragment_delta_error.src GIT binary patch delta 18 fc${itY+{<=z`_4AtEhVK$zKyatN;N30RR6$D+j^= go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_error_incomplete_add.patch000066400000000000000000000002621427672601600312100ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/bin_fragment_delta_error.src b/gitdiff/testdata/apply/bin_fragment_delta_error.src GIT binary patch delta 11 Xc${itY+{_?z`_4As|XMP0RR6K8UwQc go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_error_incomplete_copy.patch000066400000000000000000000002741427672601600314350ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/bin_fragment_delta_error.src b/gitdiff/testdata/apply/bin_fragment_delta_error.src GIT binary patch delta 17 fc${itY+{_?z`_4AtEhVK$zKya00961|Nl5!2ZsOv go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_error_src_size.patch000066400000000000000000000002741427672601600300650ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/bin_fragment_delta_error.src b/gitdiff/testdata/apply/bin_fragment_delta_error.src GIT binary patch delta 18 fc${itYGRz=z`_4AtEhVK$zKyatN;N30RR6$EeFB? go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_modify.out000066400000000000000000000020741427672601600260320ustar00rootroot00000000000000YýaÄ$P‚ÎpcHzâ¾ùÃ×<<Œ››$•#ØhapÓªÉ=ø6µ£ËW1\ƹhkÓ"vÙOðççòv€ŸxwJ ëÚ?Až»îÊc!‘óu+1±e`l‘¤¥6ÜšNƒÁ)B ³Q£…¥Rç«ðÙª£ÝÌøÌñ‘‘F78†,º³¶ìDLà¤×DûI²Ì|½>ÿtÓ7{–´Ù«{•M`ÄÚ »Ôõ©·ÔOŒÒÒ͈®´àÒwšöÖs÷’Lž¦m ‰£×¥\x®hc/6¨*‰›km>-å‡_µ•e¤¾\…¯˜¿£SØ¢¼àÆŠµv›&úo‘Öìê¢a¥¾~h’ý¿€îŠØÎò¦'ŸM‹;vù€t™süÃgéÎȤsÈçÌòÜ“/¸W• ¾§TÎ N–†È©â¡€qÎr Ìã1é¡¥|.µê VLТ Ã'2ŒÀo÷6ùª,*™ðÒÂÖÌ2×ír•? ¹|@²ioè¢äBS¤pɉuŠç+çgГ±Iäìx•¶õìTçI°Ô uÅÚÄëPBñ®çDá7d,Óë»pà6ñjot=íK{da8qìÃ+3Åeà¯NEÙDO§¾<ÚŸ7ƒ;Ò¶Êz26Ã8&í#AÛ?û¿ÀÕM|U”‹"j>†€©!ƒ,à ¥ÞÖQ]»´<ƒW5w†§Å º›" 5lÔ#<Ò½‘Œœc1×–;ÂFa®ÞE­v!©/ }Üggl¢bþ|¼ÀÕšÖ{*‰bXÅAb»ÆJ5)¸]{>¹b•ØaŽŽš8Zs”"˜t£‹5“x¥—®yµV“ZÓH“7¾÷@Xü¶qçŇ¥{~F-õ#Ž[=d(Íé}.±»ýŸÃéê¿ë ™Ž<ßo›oxyòRÿƒc¹Å‚£â ¾ðgißÕ©è‰ÓÿF[U¿OÜYc™,e«*§1¿aÐÐ9=ß›UÃv*䨄2 t[…JàŸÂa†¿¸ŒÐ”3rsÿ¤ë‡ÒOSÎCP؈TÎϯÝ>áö1ëê#”_´5ãÏǺ:«âœkó_ܼhö±{¾êÃ-Ž€«Es<ÿ'Û`<¡áUÕ§ÔªÈÛzžÈù?ކ¦¦JÌ/IÙ924¤rUt¡5Úek>ÌM÷e¿¸”öfÕõ†&Ã>ì/Íãè$+Ë‹˜ðkh"Ð÷ïtLVEIþ*-ì½ÝìE†t¸ŸTD (z‚ÿÖ˜~`ê €^$RÙ©Zе(ØŒØ7¢ŽvI>0ÇÕF3Íe؈Q¾,è÷Þ¨-`Éûù!ïÂẗqz¹Þˆ ¬§Ù>C.:À?ìcJ`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo zWu(4bg|8QwzZ|1e*rL4P#)`FenXTQ5=J2y;^BfB}4 zWkisH791|vOVl5e-@^VLX0s~Ky_UyN!3;CgPr>Edj0j+0gOSwSsFsr$0q6zUJphÿtÓ7{–´Ù«{•M`ÄÚ »Ôõ©·ÔOŒÒÒ͈®´àÒwšöÖs÷’Lž¦m ‰£×¥\x®hLÙõ¥€g¿»g;7L#»9–eD.ØKÔ“ßÂþf³*Ͻ–ÇPÁ 3ÓOÁåÚŒ``ƒ‘Ôܨ–ØÎò¦'ŸM‹;vù€t™süÃgéÎȤsÈçÌòÜ“/¸W• ¾§TÎ N–†È©â¡€qÎr Ìã1é¡¥|.µê VLТ Ã'2ŒÀo÷6ùª,*™ðÒÂÖÌ2×ír•? ¹|@²ioè¢äBS¤pɉuŠç+çgГ±Iäìx•¶õìTçI°Ô uÅÚÄëPBñ®çDá7d,Óë»pà6ñjot=íK{da8qìÃ+3Åeà¯NEÙDO§¾<ÚŸ7ƒ;Ò¶Êz26Ã8&í#AÛÙ=˜^?û¿ÀÕM|U”‹"j>†€©!ƒ,à ¥ÞÖQ]»´<ƒW5w†§Å º›" 5lÔ#<Ò½‘Œœc1×–;ÂFa®ÞE­v!©/ }Üggl¢bþ|¼ÀÕšÖ{*‰bXÅAb»ÆJ5)¸]{>¹b•ØaŽŽš8Zs”"˜t£‹5“x¥—®yµV“ZÓH“7¾÷@Xü¶qçŇ¥{~F-õ#Ž[=d(Íé}.±»ýŸÃéê¿ë ™Ž<ßo›oxyòRÿƒc¹Å‚£â ¾ðgißÕ©è‰ÓÿF[U¿OÜYc™,e«*§1¿:aÐÐ9=ß›UÃv*䨄2 t[…JàŸÂa†¿¸ŒÐ”3rsÿ¤ë‡ÒOSÎCP؈TÎϯÝ>áö1ëê#”_´5ãÏǺ:«âœkó_ܼhö±{¾êÃ-Ž€«Es<ÿ'Û`<¡áUÕ§ÔªÈÛzžÈù?ކ¦¦JÌ/IÙ924¤rUt¡5Úek>ÌM÷e¿¸”öfÕõ†&Ã>ì/Íãè$+Ë‹˜ðkh"Ð÷ïtLVEIþ*-ì½ÝìE†t¸ŸTD (z‚ÿÖ˜~`ê €^$RÙ©Zе(ØŒØ7¢ŽvILöÝgo-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_modify_large.out000066400000000000000000004000001427672601600271730ustar00rootroot00000000000000¯é²jïL_R$GŸWJ9a´ï¥yØyÞˆ˜É¤ÖÒûŠNNcÆ+Qz&Úí§°9aÜñ;™5v¶ôy ÎnNßEºvÁ.¡’¯u¾ž—šÐ¬ýGåhþæèì]öØ¿/À?x…`6êqlbRÙUË¢]àËÉPÈsÎtéó¸-èÙm~ÓÀOòÚD²¶tsVƒü†{SÃío̹Ÿ¢U˜ÿ½N6xZBÐÄñŽšøBó+é»è^T в¼&‰nâLˆ|í騯¬{³hýߦ8¼t7ÖênŒýäP$¼Ãà>0Ͱ²½Âü OïVTõع”*ºôæ_‚gJÆãÎD™UÝœ6z!J™ïI*úuaw#Äú¤ÞSÀ Ö’A‚Áry6Áÿ> .ÄÞÆ¼bLjh­å@R„ŠL„È.W8i3È&dÆS7O¡ú¿Å\ò­·ëï#ØÅþ2ïX‡¯X%é©'þßÅù[yrlÇÕ»| 7k(˜#W•õ¦£)¡Õ´Ê!Ðzc¾LºÕsEFÜç‹t»m¾¤ $"2鯷¨šÏ߈=*³Œ˜žîŠzÿ!;Boáó°Þ³üI&šw«ï‚Üj?Å.É2Sn ×’^ïò'(õ${æ!AºÜ$F i Fªè•"GâOÊ+Î÷”@S˜™!Ú© °º×ÁÒFœ*Œ•€39ö™ÑšÀM›pìwH·@·D̳â©\#“¹\ºÏ~<%F‡Ò?«áãHo®xïþ€N¨Ø:±_4iuÿÞ #~wˆþ¸’ú¼CùáÆö™…O'y©Ô»‰ ñ[¨eÌç j`@¦ð³ a‘X²â*Q°ð·~/È)àó÷Wû39ÁþŒ¨…Q—¤òþ+yÁYraZþy±ìm+Ë/Òt0›ìXÉõ€ Î¥ýqj>€ƒôÇÓR°žŽõ‚|l1Œ r\Ò¥É"nб·°“ø¬l>&»l“ÐÀouwüˆÅÃàºu»­À¦¨?ï‡S«÷ùeß;JX?ôΘƒ¿»£Žt°?YR?*)c2<†åMÚs„xÕÙ4^JõùgÎÉáƒNÓRŸ @:ÛÏF¸6ê’Ý¡+ØÞAñ ÈÎ?iØhFÊ‘@–¢vª• "46Úc¨·×eúi޶×Y ‹dèåzåÆB%?–_Dy¾™EôLÁÈ#8ý$0ºª5xÙ‡NÌ¢¡vÞ'I¿=ú¼ Ò¿ýÕsAIÈ îtËêÒàÔáŠôkO–NÔž!Ž …‡Í.íàh>e3$’6å›(EÛ|¿ˆ¯ò˜_ÇÂfd¢Îndµ™OÄ ‹G_tñ±ì:ÔeùÙ‰7ž Ë“Ë×@6í¸‹Ç?JaZšæÖ˜:[,/êQ¥Ÿ%¦Jä¢|%ùÁÛ'qòA]/:Æx‚heþìÿu¿%õ¶hçu&š)àhèˆÈúòÛÁ=K}à µëõç¯÷Ò-V›Ö’Ô”¢V"ö×E+¯©·¶ä&²þf5(eýýH/û-f j,Ç„º“×jj…Y˜[*WEy©Ç­‘rŽ-:î£Д~qן’¼¬3ÅÚÌâô›öÙ©X.§Æ† róôy~°œÄM„<úÉáϧ°¬@Ö uèrpÛ’dë}‹§#ŽÌ¿Ùƒ¦ûRÖ“*ЋTœ»ð)>‡Žò­g§ÎžÎ+5Ú%±æž#3oisT.^&‡dCŽ“ch+Ú‚¥žhï ;³™{gU¢£Ø ðºÊX•;§ê5^»¶Ö>-âJ·;OS 1ÊÃü4ƒ8”¬¥}K§5HC=›V’ݾhž¹”rž P_œmÞÕ®,éD5g¬é[L ›8^Ë7º?xùÞ÷KÖûê³rNÎ3a¿ò¼ö½î§å¼e¾7"åaê:öìæ#‚›Vå²tŠ ½úiŸ2”:ïÒÝlx0«„ˆ·Œ¹_Ž—=È `í·[ù×}2“г\lˆ‚I.ø‰ö–R›`Ò—ÖÕŒBÝæ6¤böƒX§´ªØ¯ž¬§‡Z„ÔblÑò0u2ЏId)ä÷³V«ÁˆÓ*lÀ»/³_ŽSÒ~C'(lbQ(ï)pëPk°›&Ú0½ûq[Äê/ä+u!¡Ü‹:­"Ñ厥c¸„ Ö-¿òLÌìÕ¡1}ÍRcE¢}-ºœË=aÖϬ½uϵHf Ø œ´ΓgM9ó†¼À¶(²¬÷ß¼É|áV@ØsÜÛ6ü–Ëeºn=‘4a¦y!Yû þMIh^ r%G¦Ã[ÃåÍè†VZt¬ú4Qß·FâFÈœKÜ“ˆñ‘!ýÜEð¾VèHõèhi¤§>ìm`žÎÈPYÛ¢˜ì”¾ ëõuМÊsÿ `µÀûEYñP§ß—Kg~ŒnïÉ+Ëi»2›ÏÔ¼¥ŒWà¾ê¹‰¿S8)ÍG%%IŸ×bÏ):ð 2[ÏôÞte ·#«B›ªâq&sæNCÉZpˆÎ9à†#ª;S /»?ÃM¡ë׫4ðŽÕ#39§7Ü´W¯&9-Ò$Ïß6ÉsJ½„oZ—¾_Aíá[úÈÁŒ9ÒVäÕiÓDŽ˜JQnúÅÇJpÁQe.øàe‚jtsÎŽþ ŸNç-dS­xÀESÕN#iiKŒÁ^MBC^ßL-·yÏ?ˆ±S7Ò°XG ”làû9pò¸ìz“ù)¶“P ø#]¥WÝZk±UYØpkH‹©"U2…£â÷²eûï¯)ßUd/kùGZØýI<’Gn›‰µy¤ÊØÅÒÇÃÄ”‹“M¢nÖ´ÑžóÛѤ1]ØMe§mÖ¼çöÃ{æÉΔ'æä)“ë<íf'»àä€ò?æ\ã`½”ã8×1D™ž5ñ ¨ØFíQÈÔÀ¿]æ‚l)u ¤œøš ‰Ø&{gžý©”M‡ô/Š!Ma%—äÜÇÅÛ:gÙ¸Üû;Ê[z FO±ƒ+2ʱú†ÀuпLJÖ¬ÚP©:¸ÞüxF¼RjD¾øòÄ*RËT(; I»ê‡ÂskÍé˜×I[Ù+€6™]Á*6=Ññ=Î}Ôo)E³KØ£¥5‹†cO ÓBoÍ«ã^STTFüˆ•«}Á€#™ 4ëz/`³ßbç>ž¨ ¿Ñ'’%†ç‰ReØ\ܰ™½‡‚Ó¾¹HÀ<Õ"t“hÙÁôu—BÎÔ³ßØ´Ò#œ]02_pU»`ã>6ë±y„î=L1+ˆ ØnÌü/îâ(µõÐë„ !ޱ%Sí' L7Ã'4{sýc êÆ†Ÿ)#ÐÃ6¾²tXîû€,#v?ëó;±x¶$Ze±U °é¾ý»ž¶ñoO,Lâ1“XÕ@æ@Pv\Á‡qBêÿäJO®‡wÅñaJÈØã"YbJE°f4|#åü Šª®±…M ïmøÔ[üø%¼,…±ÐÉÇLKû¸4™¯8 >ªyARxü8Ÿíè&’÷¡o#ñêýÇõ[´ìÕÍZ³¿#£îÇ0v•‰šób*-9‡áÀÒÕ¶¾³zÆäe?Ó¥¯·) *Úç÷õ-cÁ¤¥J`ÀÊ 9Ä{¦”ù,\9¤[fçVo‚m(ù‹ÞLb9 É,¹Ï#<¯Ã" —¬FùO–¶ƒ„*–.)Š/ñ(­[ÂürN„—Vô¾5\­«-@ØJ@Ð}Si°háøÓFpbô+/ÿ±÷‹?°]´B¼©;·?Q‰êz¸?íhøáUÒ²Xo4Ïx”bL¥yñp”~o p™ ü±ÌˆÞfÊI3a4þ€edÛ>úi;ZC”É mŸ¾>mæ3 šÛ½+_fü>HSü*šìG9®³–eԛǂcOXs‡Î‡Ã~Ôðÿñ Ks[K‚¨*w+þÑÛXÇ×È€éæµ+L;äÔ„J‚)_ªGœ1’¯)‘6÷Ù7?ÔHå¡Ò>KýÿÙìã½TˆV~Tª§$Oø ð÷ðð TñQ `à0µNžó :„u­ƒ$Èè<Û(Ѧ¶²j±ëßñŽ#a²DÚŽí8hiºªgüÐMÿ&/«¡zW«uÓß6~а©÷ò܇À'(MÊ«¦ý3 œAE{6Á]ceÛe†)¨4'^t¹˜It–uñ7ãÎ@ô9‰Ž6žoe ¢«èýGÒo pÁUÜk!o6V±åÃDð;c*ƱÝ{ÔÈÙ&dgþÂÎæsªøÝì?\}˜ÿgž[±”a'ûL •ZnÆÉçÚ¿`ñÕDÛõ¼ÇÕL@vx1ôâìwfÿÃH‹'ŇX+]…r„+ò‚@ŠIQ²ºR'¹ÕFìÊÇÜ»þ”%ׂ·ôç¹~Ì=I·Á œè€ƒúY~ºüó…;“ŽBw…pãÓäÙyc†Òt à xm& |ïª~rspàüâ¿JjDU”˜R›†î%¸;´D[pZ¶AÑJæ:Ș(çïl iÃ,ŽžÙúHßNÙøû“‚Aê?zcM-/X&?N=sò§ðnDüŒ¢{©áÌŒ¬OåP4r[Šü=ÛÅQÛ/ãèý™ð6³4¡üDÈAeÒ·6š¿ë2æ®VcOÏ· n}aÐ~£gÏ_/¹æÉþ®Xáì dWÌwœ1Z¦üF²±Ý1Kþ²ù»0I/ ú Îd$ÒÌÑzt¾*N¹7Ãôf~2ÀhOÔÖÃ1"±@*5ƒY$ÌÂÛàéóeƒ¥¨«äÍQüQψŸHù Ú›üT¦Új`L …ÉÕ¯†K\gIMm¶-÷°ú+kä/U('ZÆéƒÞqgzT¡ô§Y¹‘({à‰Ç'ÍGF°–8³‘¤T áì\Ièéã¦\ài{´FÖŽ ¦lVâÇÇ»G*rÐýeæß§¾FlâÄkpñZï.ú‡Y¦Õô÷GaðNAU[ó:~?”» ÷d&FÅ-_‹ ¢“:2Ý3@¸–]B8hNB÷Ç€ )³ ñîeR ()òâ˜2êJCP8 Æ uF(‡}Ø>Æ õøRzûˆiÚD=Þü׿üHšd¢ép¡ uÖnâˆà;Ðì?jΖCº-MĹȂ~;`T*@äò{h¶*ýÜ~…¹´úe{£X°4Ìä@ ;jF+ÃÊ+8Ú6¬!ΑyÓ;j[Ÿ«©œ]xåÙº.ü,’âcF‚£¤»þ¹mcû’}ꃪï®ìéÃDhCb"£ûläúÇwIÛŒßûÛ‹¾g0$Hž.Ñ@’N_v”€8Ü6nõ•Wa&l©iÄ T@i|XPŽƒâöÿ˜ä¹…w<Î^‰ÈŒõU3ÍõÄ+X§EçÍm›ÀÛGwq›n”%wŸéY}¶â-‘h%<•œÊL3T•åò/bÏB¼KèÇ´¿š-.õÛÁ$FFgƒd–+öÍd÷3YLÛ}cÑ5ê/~üÂr¾u9Gf4q•pú¤xàÉI#Ýt\×`1©×Œ{U5ö–$N?Z>b3 ˜ãßO±mu°‡|ª€X†ú—ëO7lÝp‹þ­“ƒ3.Ù»_¡ðR˜n­f;KQ¸ÍüâOI*&úè€dVj´BÌÈÂBB5¿zTù´ÂËDó˜ù¡iitÖ‹í;O•kÙý¬•¼t#Žvµ†vw˜:úÎ2í“òœÛ;˜;kËO­´Ÿo²Ããɾò¥r{-@Ç7ãz¥÷æC8B„5MÒÍexÐQ¯dg}€Ž2rìøO¹LmQU¿Ñü1Ÿ·tç¼YXÆzˆàu~ͱS^jS‰âno‰žæ y*!më+ÊÑaœb®jľÂÙ«ÏFÛIÅg¨Ó¦=~×ôÇ™”qÁà ë­‘l~$¾qqìtÊEã0._Õ—k ïòæÙ>ÏuðŠg»DóU=Ž7†ùpøù$<Õorneâ"îøFÁ±ZºüüRz6ÀÁƒ®’¨/íøõåRð…•´8Ký(µà?–^!8\_ºMC¨å¼ÖGNûLÑY`×´@ÍñT×Ò–¢z¹„ãµ4„¬O–/j×;TÈýÎÎ0sáCG…]JûÑNª*ön£Ì¨a¬¯™€ãà>aäþܤÆKz;Dm†›îý")LÕÍR ƒ½ŸCÝó2 ·è™"U™£^ç ÇÂZÎ bvÅÙ6²3™t&[†ZDsí½SM:L ‹+\O¨Jp sÎ\˜+27À¬¦‘Õ0<r¸VD‘ç¿Ö¬TŸ¿g´qÈj1pp×ð=†‘¬fv„lj·¾sÈ ¦ûuro2øWæ°œKo~…°K:;s † ¬ñáÓEäìù'û[efM-€Ùø‘ŒnŽrS¥£^F-˜3¼„–":ç…b7 µYîÉhÚiCmÞªHÁù´È„ù“k_A ¶ÒÝ þàxöÎôgS ½BùiVaÄCT~P§“S— æd"ÔUžµ±¢ËÖ©ëSLÍ‘„)ãýË<.V‚È:j["×aÃPh¡îÊß¿ëË¢:w#¸KE^ÜT¾ ]ûVl;ÑqÊ5-?™)à€óp ÞK]Lj`ûvô-»Žé8¿öÔcªôw,Æ©"þ«k¸ý“w)6橨îàT-»â _é鬂»n;;:ÿØveÿ·¬›Ò­w¯ ?y®,,‚{Í—£¦<b6o’¤Ö‰IÀ) ËN²‘áÌÔCÃ(1×Á°Ýïq!Wf5%^Vñ7Ÿ9k„­)Éh幬ZC4…ÀptAv¿Ë™vëøÉf Bw„±f†Tžžú¿Öã6l½Öð ÁЮ{¨©“md‡‹ƒ˜y¨ªâS£èI"Ô#o-‰Ù ´5Ö0¿£¢—gꕱÖÌ·øµŸã«…á¼\[<¹™$‰¥V˜º› ”9ÙáÀv7¾¶ÁSH.²€îêùä¡ö¡fÕ¢Ûd™®FS®±Øí©$ r*½þÏPöà¢Mí „YºqØ¿±D–.c€7z½“›ÑÄ0ŒÔL˜Àì¸óׂ.ãáõ“ ¯ýVV§JjyȘ»Õ!Q×_ÌôÜ™‡ŸVŽÁ±ê_R“ÿŠçWãÍvV(ù°½}ƒƒ“DèÖG€À‘/Œi‚/ˆFÈi4“”¢öÚЗ²—;$y©¯ó Öúi'á;¤¸- (—›mò±Ï«R´s=¡ŸÊ)G}”ª²xÈ®» N}[ú Öjqa˜}ÐÝve@•ÃtV«Ä÷y F’Á˜¼iÿ ¡aÎr×D ]àêœð?éhœ§ÔEŠPÄ?C‹'²öñpRËüpØð'¾0Z…ŒØjà†–Ñ±\޲x_&<ퟱ ìDÑR~³3vnQ.죴HìiÛƒÞŽ¯c;#Þ {˜Æ_In8˜ºÙUÁ´j!±ðø ¯ö:â\Djo…>äK÷­ÊWé¤2ª]€²7QZãia|ÔVã;ck{ì—ºq‘˜=Ǧw®ÑŠö?+ÓÈu¥x¡jâáú³ãJU÷-…~¨vî†u ÿº€Ö…¢©T íݱj—n±'‡¤”½Î|¨ŒP{º›-rú€òPˆ4ÀVû"’wiDWê8鎕¢šðˆuAôלìÒV0Ÿõi—gæ–e”‹)DõŒ€§¬qšñm\:•`(DZy‘-çFì#PR<!äûnêp;í.ìú\nŸäXù¿tÒÉ‹ ÏV Xøá#±™€Ïô(ÁÐ\—Æáù€¬zIšÊþªk©Ù›Kº¾È;HÏÖ‚üv8$7Æ|¢g3 Yá%âa¥œV¶¹ÚÓcê]LŒz¶ÃÞ¹PÖ'LdA«@7Ä„ž?­"ü9O:ãÁ3ˆ$ð¤—ë TÂ}>hnÚÅÉëæyc±ì}Œ»&Œ}ŬŸjùì‹馹»…÷†Nuž|Ã1Ư9’' êsŸ9ô++p;pšïßOŽË*V‰îéç|Y°ëëúº:‹-c[}]…¬ÜÉê'g¸ã ÎÆ%l˜1`G !±è‡LjsXå¨t‰§@žŠ)Ûç5Îá)É=Õ'‰LÁ g¡¬ØG3La°=!ÿ ýkÌ¿SAWÅ0ì½4r´”8ÃÆ†òÔ…Á56:dF»ÿ^¤/3p-¼ï…D[p™­ ÁH‚íÙ‹È÷R_ì8ã`JQ@öÐZ†Iš.öç‘z)Zë-™]ØôßBÑfOÕ.£ŒÃ×V„v˜4þDÞDSxТʃ®J Åo£, Râì¨Æÿã0cSˆ«EšÈu*ªÙö½cÉT—@W‘È\5õQÀ²Ï€Ý„âK‹)å.¤dÑ“2SÎsÞ=+Žkí°K%eþ~ËhˆÕ§¼àôNS³ÁÏ,èÖ{D} öTÜ4v"hÄ–B>‹¼ëÖ*·¿éîŽa¼>´óý,l8ô¾wÖºå>ºý‡ä} ¿¸ž“øx&yœÂì‘Üû{ߤÚëD ‚é}5j‘GP@þpo"'âÑ()éoÞéöÁÿ†tUF¤» 3þIXhm{„Qo ©KàÑò\†:<”­ýleÛU ‰Î0»Ý*v1¨õraêýÝv&§ ^ ±<:m¤A¥IÑ8§û†ØWÿÕ÷Pw+C)è–ûã,0zè]«gáæ&-"Œ¾"FUý8Ø_ûÜìz„€Æ6DéšÌIeáÌ÷å•ÍÛbÕ» s±½LÓ”>ίÙaW¢2¥[4D qãÇTç‹›•¾C„êIenA¡<É+¦=`p;6W’²ðX½Ç²µ_§o¹ŸÑ¢ÙdRr™Kh8: Á½¼-$¿Ôx# ohH«X/Ìh!)s«ª•M™êƱ ÝuGÍR…xÊRèy¡<ÒSÙò_â–´îm•Ø ZŠ51‰àa+ñq`4Šü¸XcȤ» ä±?³^QÐLÊáêün_´Ø!…HÑ §Bð7hªÒ2®Ž› ƒ²×ò¨ÊÍåÓ›‘]%wz£#—x­U““,”M3ã¥.—brr8´pìÂþnú÷Ë0û›ô ²Ì“8àß&?j?ùÜŸêN¿m‘óØD˜ØÛÃ̩ЮÇÂJºåðc¿).<—ÚDIx"åµ!§o„øñÖ3fÕq3ÓuªϿƩ'}´;3˜¹Ñi^TKÇPb°;4»¨äk#Õn.­²lÈ-ФÛûò/vOiMّɯӔr(—ŽeRœpH%²7O/ħÃOÖ®“±ŽÛ|6Êv®´~Úp&Ë$툃k…Q‹nÌ ÿš{ð„šO‚‡¯‚Jý?Ps˜C¾á[àqË£$ñ]\„ÆeUŠõâP…ú"tžÈU‰Ï˺¨I( ÒÄX1<¡ªE'Tœ8¸ÚšU`¶7" Ö‰‚º0BqGñ¸ÅT4ŽÙ–®½{RÎâ†Á}±{Ê.9¤€ÃyN=Ök™=tÀÚHl,+ ؽ »œê[¡¥åÇ{“hÈNô=‰èHívrúÍ©-6w"V]Ptrû¾™–2¶ÇdËÛQ–®V=ä²ÕÆs¯8¤‚=4o>7\jë~Žë*¡ O¦Šd•Â8ŸFWÂ×T›\ÍS iÃÙ’ÅSbuíüªU¨~›^9BýªÎ ëxAý0).¬u$4FEá†f² ξ:ÌÓ‚I®®ØôGr™°. IëqrŒ|"“H#€µx°6j–ó2:Qt ^lÓUj.ˆPÍÁ-Ec † Jgú,º(a´3ä «-‘iÇA±’]ø*ìv#.(:\7›nzIbÿ9ŽÖqùDÅü¨Ôw?Ø‹å¸í³£=´žÒQ#@cÂõóe”/£ ¦W5©fÖ†žé“z¿OAà A/(²0–@óln!# ìéb}1züY7ƒEoý̶¹ê_¿ßÿ‚îü [«Ôí ££Æ2®ñ+@¬±„¿—Æ•6ãào¦™HÒ²·"N!9Ùm[;€©å–]‰xÒñ•xÌÊ‹¬ ýc/ jr,`95ÛËN‚îD„àx-¶å˜4°©Q#½B¦„׿_FÓñ@ßóW7É ¶Ò޾èˆt^ëxÁÄù‹½{Ç vs,üêÄ€ƒÌ '×0vö…Ær¶à£üô¨­l~kÓÝu³‹àh°ˆ,‚U®^vUþìµïätᳺ™e" ÇØÇìâ ³šXÿy™œ¬ÒýAýÓòM¤‰ yõm¡c¦vÊ× 9w‘+1ðÍJS&–—Ùm ºp %AûTÀÔ­g ÔÝ.ƒv! <ȳOH5pìI»„Ïvx¦6™X€ìzïK“Û¤­wÁûeâà c„}:++eU •†Ó÷ò"Ù¹¸1U^ˆH™3üøÁ2˜°XZÆÏ.²¶¨˜LúYqtÜ:lkc}¤2—½"'Oúñ5¥à¤õpéóB‹ºHÅePÐÈŠ>®ÓÂ-'Ö !)“Ûs~fI,nûßà[@8Z)õŒói%Kh‰”´”h;Œz«ì9„4EÆW=ƈBE BlÉhVJv·è"Κíô žÞ¬(2à–%½7laÞŒúšëL­x„±ü»Ó-H ³ã*«2rql*~¾§2O5º†ì­crÉ—d AÊk¯àе>¤¶Ê±éqt@‘KACùöÀ4š³Máî!²y¨¢[“üÜ…e£HÈòŒ_(™ûŒ":ä6âûê%ßóhŽi*¨”¦œRïh3‹èÀsÉž˜â(DZÐ'MÚ¯j(RºÚ aúEàäÒ03³$,)Àó•ê¿èò9¯9žƒ|[áÆßœuQÊmlÜorÃê~;Ç]ž›À§x…|ÉTé4€¤¹E[ ‚¡¢Ûë–„S?¼" ¤ÁË÷ûÿÊ”=מFÂÉ¥³²1 ^eèwö9E"¢ÉY5&q *ÊoßÝ Çµ³¨_OE¿ÎÊMoëƒjáØ‚P+Bf-zM¶¶gRÄÛØªô…æÑáãÊ]•Zœ(…€&o¯)EŠØ:$åeRŒ³G´ rTHj3˜ºÌ¿Ên(óvW\kE¥¸_ÛY¸_N·V?Í™pr8ÐaÑLžk„ÈRÒÐ:(—ÓŠo 5^Üð]D³~¸ú¦1a©8‘˜—îÜx[L+ìN~)_Ê­ŒdC­}®Õ4ÎW™Ë`K‘‹'‘x &éçN¦§^BxmÔ£›þ°kÉg›îj]}Žéb><³xHÛœ8{Üß": l’Ë@Û\ŠU“Ù³ "V®ÙÎé‘MgÌK¨.4ÇÌ µe ¾$;˜Ê…£®à‚‰ŽC'çËÛ{)ã³íÔ~„n+»¡…ŸX‰º4íÝ·ežì‡/^ÊÂJ.l¿^" B‰thˆ7ŽÎ‰Vºéµy8£ò1`‡ ”Ì4(8µ˜€.m¸2¼ªa‚Ájú“é2Òl“òÎñ÷I®ÜaÏÃÞâá­µÃÒ%1Ã1†^d«ftÝö|æ€eVu•/*MZ{þ ô6w`›…öÊ(†Æ¼‘rxTõ3xíÜ#Ÿ`ÈšiˆI-¡X‘»þš´YŒ pøÈð¤áú3 èEª¿"Ì¥ý'—(­u+mMp*Å!&:(ò¾3ŸFF5IáZù £l$¦Ç-ßQŸ‹Յ݈ˆ$Ò'ŸRVÙ·YIÝHŠå˜Mô¾«S»ù0CU øœàÃR1ÅFÇgB¿ô<7°çϱôl¸YŠŒH8©¬½Á:’¥ehI”ž&h£eâ.n+é_¡w}=-‘]rú\o!HÉúŠEœ^Ø…\®¥þ§ž;Mœdfh!~}»‘I¿Êr׿Uý@à_aùˆ/«écMÌ¡%£½Õ-‹º%Úñcc¤=„Á.ÒÈ=Zš\šBšCÿÔƒ§˜°QÕŠ`tè«?DjŠtMϨÿ#|ʯ‘¡neéþ,>ìLG=X­åÈ]áõ>dŒ6òÈš5<2ðàù²æÏCŠ.NgÐÐÀlK®^¿#ÑH¨ ï#¶s4ê{™Ó¤g¹¥ÑÁ6 Æa•A›åOï½3××£³C¨9ßZÎaÝ›ðr¾‰ë%Ÿ6O¡PC›Oû9êâ¡þøí®ãÐ8úŒpNwvI×ú²]‚‘Â#òù‚|‡ê‰7r`ªí§â`ëÍ?Z=5áhžR„¼KzÞíyDö K!”<;Fâ\:y8Y~4k8ÚÓ7Æ™)=TZÏs­PǸ */„±„}ÜÝÅæ€¬ï‡¯[Ÿa×N’lIÜ4cªŸl" w¦îäå(ïù¼j;ÝèC>s…önì‡òIãݹvä84±A›ÁÊß4<ç/¢@}Ê¿òú”K½óöÿn¿…?gÁC8RK_À8lÞaÛj¦J$UD]`tU–éÇêÏžeönAÌ·­¯×v^¶ =YíÇFo|ûôªO;GP/–±ßçðTO¼ÆEÎ*Í&–CÈl¶ å“ bÏqp€>ÆÅïsç>¯‡/8ëY»þKnÿÕèøõú)Nq/Ñd½`Œr$$Œ²± ß•u7Ù±ß0‡ø¾9Ø ™8¸€þ½ÃLoQ‘od/™Üù|‡Þ`¹üÞ¸û!bØzZ–[ †šj•VÿVÄ—EòµíªpËû8šSügz~úý¥‘Œ‡Å4R”€î_cñî }¸€îK3ñD\±peSS8È×uÃÆ!Ó £Ÿ_b"s"å1(VA§\'<8à¤d5xx_3:¿ÕŽÛ`Í:F7Ù4<ìjÊLRåæÿ7F—±dóŸwœ‰9úÐdÂ.¸Ðf€JûimÆ…ô‡EïHÍ<Ü8¿Æ¥Å€©¶ãÜr“ß>ÓÃd‰zÒ«*+y>S¶SÍÜŠúçÜJn2óƒ®-óµK"&ÎVDeìrü««Ìì0ù?ñfs1n‹Å`þºÎÈúT’-—b¹PkcùdÒ™@džN $p‚s•¥ ‘Zfö¹Å¯ä×Ü‹ár+ê¤ÚSȘrî¸ÇöCÂáÖk%|>Ä7&‡¼J–àƒÑ ”ð®T+€É`f.ò>ž¤¬6T·(cz•©•“éAÁR$·T&ülããx¶…Ý896|ìŸ (æã<ùV·÷ΪBGŠ7›i…½7»ÕønC×úâ½ícnž©AêðÞF+þ³¢”6£!Ïûì“p 2§ó3'æ†ãèu=ª®X9}] ¸sF½øYw« ÐEˈáÈÜj»AÏöɘ›íúÎDs˜á¯k×°ìÒK22)ö[œrT Ètýfm+™-sÙ@/PÙýŠèeNTF;¼XÃƒŽœ ~.MM’²®Á÷e£ÜM¢bî§«ƒ‰X’¶/G¬ã˜ü¤&Rm¥´x®ªÇ`å.gë~¦±ˆÈ¦ÖµYaÇ š+Ý%ãpŸ=šÖÛñï˜Ô±{Ê2ïˆ1#(”ùT„%·ØÁ3Òtݶ&Ô•Ï!Ë¢tQ×ÅmvI%¦í‰4•?/o›‰òê cŸQ}Ë h#`jƒò*?`-~¡|›·¾î-ùlɰ³šORͤ3$·“$©)ÌŠã úäì)·eJõSMîëáí døK'fì(¶ªß=ôiÅ;ºðÎ!Þœ„ˆå*_½Áª„ª%¯Ix¹Û‚Q²§#;ˆ€7±Ç¢2L$ÚF®§pŒ4‚ñ¼G‡ø8/Y#ü>#q è) XËÜ D /„¶î&ië}X^xu§õØ1‹ûåÆ_Éxɘȯî7ì§’‘Õ¼æWaÞò¦öÁÇýëÅŠ;öM¯vÎØí+d jÇÈ$s›ÚžG,Ü}\ã°ËóàUÔ+t Õî¡.[³³û¡ùúaÂE+VÂ[Ÿ08š:úb<ò9WŒm~=®)’KÿéT¥®ûöf8•Ýñ˜6œ·‰€JÊŠñb>á«9”?2jŒ3%¾ÜÔ: Ý¢oßUëd@½”øÝ>âÐ¥aÒYÀ›fȼ’ž>áÙÜ9íTaçéKÝ]¤on"HÁhRa+)íÓàQˆcˆÎ:¬LȇVÛÌ1”L`ãEÁ§a"™c] /\˜òDF·>ÁC~Ƶ_9Ú7vNQ½b C.‹Ÿ‡fý0á#åÓ0êŽÚ¼5í@eõ7xhÆH˜²-5?›/Êë϶ QÕÁøïœù‡Ž)õ–¤¯ßå¦L¹$*(ßíôTΫ—ž ê_Ï—ÉÖ…Á봜ʊ›âC¦¿8K99å‘ý‚ø ‚Ã;ŒV »Ò•ÞƒáCâÁX@ñ˜êhœÓ¦þíA(½D®‡ç´ì‚ßHøÞGp¸ù ÆiM'Q•ŸÉ!Ƭ\òÌнþæÕ¤ýÜÈIlîàŸ>D\xBñì«tƒ›¸öh%á$¤G°Á`ÑD0$ô¬²;‹ xšQ·P¯®ªB0ÈŒ¨ÐÃ]+’4=¤ŧL<Ÿ‘4-áÊ©YÎ*µG3‚Z@?›Ô3³$˜2ƒÌ‘c¨Þ#Ö>Ç-A&ñvF3ôB¢|ʰF±$c±xqF6êOn+CÄPñ3Á.àý£€ª„$áâ t†4Š8t¦3Ÿ¨€Þ{ Œ•õÇßNòìPɈݟçbŸ»$ç¤V`7zÚCê­­I’⊃6‰Šú;9Ftü|‘ä{tBù{Ì‘ßv7¦A¤Hd‡¼}°›;zQr¯kÍàÖˆÿj¡<%ÀeóaÀ”ã¸}õà¼òjAÖz°¥3ƒJš2`˜fãœv’[ü³¸Ö¨3$Ùú¿ŸWXŸ¸èÙàZÙ¹À.޲$ Õ˳n½Žúƒ#FÑgŠôE0Vn…“ »‡z/U TûgN"˜ê9r„]³_ûj^§·Lsû30<šüB¡~žZ!¨¿}ìÞ^ïB^/1ƒK ‡i'-áÚÔöFµ+t& ¹ @ ÄÍßÍèù†4âð›YU%ê6 T3ÿ#( Ýx1òj ‹ ³ b¼MUtCãå`úXZÒgK¬^Ó˜„›æ…]ßÊ Þ¬4ñ"qìü0öŠhÜN¤Î3‰l•…B%ɵi•"æ¶PØ$ÇCS3c[U¨ŸÔæÞì‡>ÛÈLWÕîŽFrµ‡ã 1ƒev"ñ¸ì Q:P7š`†½0lžœ»0FcA# ×§úá†GèúÝŠ“pm0ê÷. ¥Ò¬úŠpëøE ®(¶ÍxMq¢ {ÉÞ*.‡÷8šs43Üñ‹?-%äRkAP®ã­~ C[âÒXÿé·´<2£†æÌ J¤¿Q¥ æž~bu’²Vð*fjms·§i¨óÏ2ªäpËáIQøÇëÿ‡œú"d´[ˆ½‰jkPqˆFAT8–é«Â1DºKìê2“¡^¹DÇ‚!h™§ ÒmDèQK',OªN-^LKjÁ³ƒMoÕ¡ÛU°¡"½¦$ ê«)ȱn) rl~xœÀòÿµþ¡'âžXk—Î<.fMªF V†2åÁÏØ^ ÍÙÝÇË^J`Ø_Ó’ûK¾SëÔNWW5†xD(¥bƒb•óЋl€…mxñø|ÝÔ@QK8:éò*qÚ_ΙÀÑ䨎û×Ñþ,('7u«'!ñSð5XOçZÂo5œJuzàfç-Íð£`à‘ÖùGøw §dS©ÚEæŠóûL' ¨Âêì iˆ‹¶(. öy!êÿâÂs].“äMV<¦v±ï¯Ë´hSËí):¡¶5‡qVî;à.Y¥mCõŒä% >–Š Ggr1U!ö×ç!á 'om’œª:¬ ýT§xŽáEpå*ÑÔUmc;P Ý2\ǽ‚´fïM Ëч;vþ½iƒ¡7{¡qüþÇjÕ8ÁéDoÔ  •©)ˆô¿&½ûŸ’ï•8B¡Ìmvbûšv„>{=×yØQÏj÷£^MZ§ÂÙ4°Â¿ÉÔý+ ¹|t‡ ª¹ s0áˆ=¿èA»«=m®çLÅÀ,Œe³Uz[,Mó˜÷;R¦íáË. oƒ¥1Ë»á9èŽÑ¡ê¬ìC~?ZÚ«¨åU2zJP£A$ÿ{\-D=¶²áßsæ©F Á™&ktÛ—ˆãùè¡ByÍÛtšäM¦sÛ!ÖdxÇÑlj0}q}e]‹Œ,f™[gIÂäÉ©[ö×S4Ëk{ÔãÅó–ä2"_ÀK^¤RêR½1óÜR»k„Xáëæ: JïêÊEuO²ûSˆMÎÛÊù$‘_·¾R4©¯e'hÎ…iŽ?àÞ›]Ê9/7X°ä»çýyTçœEV’Éæ¬íIü6óCyìÑÛP¶F¿ˆ•¡cR´­Nšàÿ5W1qUq YxâPá?cÇ]™Xz à–ñù³»‘ÇOø}½ ,52óßÄDy4âEåëpÒw :Ññ÷¢ÒƪLk9\è§å›Ìä“`¥BNñÞ ¹Dn# ÒsBeÄÇ[ÝâøÖWº|<‘lßýO‰§š ®T{.©†ùï~ÁgtKU€ÝQÿU˜+ën~oj.Ï÷#¯\gA_/ß§P'ig^6pì†2Ac¾CÀyNaïoqpvŒwCQ­ ¹’ã<Ǘ妦ËZ;ŸÄÎÛ›‚øŠ>û\6¤ƒÎã×»Ý+Dôm„³ëKÁþô—¥«ÌµxLb[m¥YT £„|á·Ó¿'ÃèÀw“/¢ÔF¦AG8H.t?¡çusÒY}‹(æ þìÅ_¢¦¬ ¶f«Ââ&£ƒEˆ‚vè´Õ-ÏCñ9‘þÕ}8H“drÄEÌ7LP}t… 3~ ™®D+õ›kLg[*|®ðÏðàÞ6^VöÛè EÇ7qSû Š„LËMi©'¢¶<ž ”¥î šN{~m×ÍTr<óŠhîMŸŽù34ÑJú½{á;5úèzíÌÁ!÷õtÅ„È]<0í£±ó_—º“5¸’°Û7˜’Î*¬V¾¤;àw'I ¦±á×?6K5Þ,ÙûQÞ¦U ËÕâ7ßB‹luÙy+ù¦ðÔø¶»D;ûNVÛv!Eý¶ÁȵŒp`ˆ™4„(áÖ—ƒÍSê"QP´#,ÅV‰PŠ:Z~¶¬Üº-ÕŒKut“éÔaÉš±äÜ3‚”Ê|ÈÆ¬óŠYfÍFŽ¥½‚þ£"ëx«Š/ˆ»¬¿¢ò°_fh’iLÆðTKWNïkîm!ªSýW ,Ôl¨Ã ܪ—¿Gcž¬z_*2CÄT?ÍmOþüF^wóÖæUW¸ËcåÁÆEÃÙQ ÛaŠ PƒèÕ =¼3΋ž˜¡‘†Œµ`¨´É¯Ðlñ˜%wÁK:{ÈÒZ®ô…øÄ4ìUV‹ÜÜ r':þß„Éò!bky¬![xƒõ×1W#_Â…F%í&]~Pßj<¦ \¦ºØjœ_F0½?GÀ‹Ô­YFlHŽÒVwÏìþI@À¬ÚsLŸwìPË¢?àeiÌé„•™œ×)|vg‹+†2„Ô¡Ù%¶ôœžL´çíV«h¶/Ÿ­€)MÒ‹ã#j^F9Lq€3¬ÏA¸#ÊDuqUEïV ø¨$!`i/íáN4àp¼bg4N\™òœYú á¸ÂÕ+.¬3¼ ñI«ÀdgºÔcîõzso{)¯$ޝZQ=Ð{ýŸÎdµÅ“Ï :þSÞ0 ïfÈ9Øà–ڱᷠŠ6Ž_!ÚËSÒ†vÀ<ý§ûx£§ÌP¼íÑà¦ÐÌé½ WZ£ôù~D:Î5ËK%[AìÔ?ÍXCâoŒ,š§¶øƒ%µ©ˆ÷ ŽäV·ŒÁÖŠ:1Ùe—Ãì*u—Ä»z§œò»×Þ NzA/EoJ¤ªjݶ·c‚1¨Þp°]}ö|°ƒ9‹èî^_õ”ëÉ™qÜ­s# ¡Ù1…:¾×Fäm0ZCÉÞ©åÌ„ßåØžqßwàÄL8±pã¤w¹M(|(9ï®í³VC ­ÊœUYµï·ó±ßè’ÇC Ãßúy=‘–hðB‚Ôò\ ¤ŽÔã@êÉÜÔSàÑbž²Z ^Êÿ¦¹ È «íœÎyÞØ>nG¥¢LKð=ÒëâÀHP3mÍxE:'âqd³¢Þ\ìãpeÍRUàáÑ€ëîiGÈq¤ÿ½¡>•Ú¨hçL¬^te¦ê“)´ŠQ%•{Ÿ'H¡’éB‰+ÎæýçoérZ2>yˆJžóL'[*Ÿ<Òd/b©|㤠f?SŒ% a]ÒCKú7º:w“c±2n¹šˆ¾0ƦÆÈl±uò~=ŽsÙY€+”ÉW(Ø;RŸÆx´hez»g·ôqG±ak)èX^…€ˆdO.Ý1þícú¼íªîµšéö°DláÖM*Ã[…q£Þ@#ÑJæâ|ª p3iŸžæÀ¨Ïçrê–¬*Ü©[ø«x)»zc„U«£½±Ç‚‡Ä’ „ì IT›6m¹#>Ì<Ñ#Dz¿ø@Ü^•hß!`Àr[ÉDà”~4Öð¢e3Ùa¹¾n¦J†7"x:q¾lXM ¸¡0ixNq%šgnµþ}lÑRSó߆0* ù¢,ï|Ðö;=Zâ/8f"E_@ºqÖ“Éì_ü¢”uöri‚½|O…&Ždü‹¥ó¡:°…#Y@£ùWŒçB­–ú’QWV)@-Û-A\ü¼-ê%ÓùùÍ⻎M¨·"Éï£n`ÂvŠîÑâKRbêMÙ¿ò×ìï6óð—Iy±ZÅ<^áRóŽ+ïúª-ƒ'eYÔÉÞg†‚Ø÷Mý™*)ñ‰R*]]GÕÍ 2g\Nž*VÕŒ¨cÓ ûHÔæ½iġ ×Ò@hßû‡É‡\Sü†tà ´`¥þ?=v¿ì¦ó\”%­“s¯z:šY½~ò¶GF/³ ~«ê~#ñû•z®M÷*¶§É_•SÀÀJš'$¸ž«[wï§ŠJ›Ò%¶Õ‚à=© –ò˜~¿ú‚â0«ùMîì¯"¿b‚ía.W’­’ìóaÏñVß• \®ñÿBû³ÕìÒ™vå!à Ýáø …s-E¾·Ÿ2\Š9¹te_aèÒ÷t&&Ü££#s>B´Í­ø§›ÍØŸïR™ËúÊviHS•sí…çý÷=ß­‰5`Û‘Üs!-›ùà€ÐM+ÃÉ»«Ï ¾:1–ŸìÄIt•¨À–5&F­Ô¸xržãû¿»8ðø¢{hcr·Ÿ¡ƒøüù£Õœ~uU€|ÉÝ€sè­ù…1ܺEÕø4÷iÂ?s0;œêÖV—€-Xðg°Îóñ+ÀÊg ¶ß£5ôH ËTQžéyñ²¬ÿSé­l!&Ùb5ûƒ$ZÇéá¹ÿöŠ‹Ýµþ V­ŽM¡SA&)ÍìÛ-¸Nd†ž]T÷Š™^v5ZÉ•ü˜í÷ ê¾Îé)9ˆ0=Õ?áÏv÷jváÂ[ÄöÁ>©êSnoµùଳÀµœ£êަ#º”ùɰ:g:ðþ3Á•n%Ї| ©æ}·oí°›k‘/š=W7ßœ õqÙeB(…|Àc™šcWÐ š=KÝ1£Å!#’ÂûØZ!µÐ0+]ÀµôbКÍÓu_’jðï°>TP¿+C™p×ÍŒð½ ø’kÙT!üUH§)‚•˜@½åëƒÛô'¨,!(37΀°@Mí¨.FT#ujJ7Î…,EGà,oæ@˜ƒÓ\óã&$%xêëh9ïOš/œáœ«Øfˆ)ޏƒ DŒYMÈHß9  Bô~©"üq)b]è­îÖÂ?Wp|eMpÆ#@Ò Æýà>™87¥ÊŒwŠà‹?oûp#ÎÄnkø!cÄq¥±åŸN^Sš›Œ¸Ìyl%%ùøÂ¹öŒú?KñbÉL„ ZðÌVå†ÐÊ:™…K(Û{¥…ý… —Ìßd>¿&>CFQj…Љûñ$öFk”’÷΄¡Q " ¹dXb_ϱ鱼d¨bûÔçÆÒ¶Œ8n”²XP$è?&5êŽçx6ïÀ£&EP¨Ø ZÇ]í7j~íDGw3 zO£Å$¬×â;H£Ù›Ì™Ñ€>”®·V½Ý±áðã!´ÎQôôßS²‡LsTçVµ›½8àtÛ}Öë‚u½a†×W-Àf¯Åë.…ëe²U¢;‰yJoÆÂuômn§ƒ7¹y‚ÓC‚T³¹Y*ôS ¤ç(Ἂ!Aÿ¡÷ldVtºßò¶n7ì2¨iR¸ÿCž+’Ò½ù.°J®µõ¶Ö¶1ÕßÛpÈ·í¡&Ž*މ$Ò£ï¤LWè#‡p•í ÜjxN–6vÁµ –܈ŸÞ~©4¶ FOµ3áNËkP|ªÅ›epÝâ Ž)ÇI&Ÿ¸b²Ø\ñJU¬šO²Ñ§~Ãï){«s¹~ tÂ`Ôxö´= ”[qì7ãi­$¾.Pf˜ˆ¦âÍ“‘0„p@b-L›©*R}$M÷!L`îÍ(F?"$¯X|1kÕã>`YB5%•1ÞÛ3W8Y=ËwUÁê9-/y©Ed^Ärq)€<âGù­‹‚ú|ü{$ÕABÚv¤M}ô5ËfóÖ¨»KøXÅýÊ}Îäùף岘Ný|§´”°ü´Åp°A Ï)8ÎE“o¶–/†ð®i¤mƒZí ‚Xÿ¦(òzCç)јÙL÷tù?JÓ´ÇŠ%o¸Ä©æMèÿSÜ¿nÌr¶˜Fµ5ø<3¬® ôÿÞÎt¦ç h¿´ ^!»eõ U_ÆF¿' ‡,¢³ÆÈ#“EPöÊi -Ö/u K¨©—M‘(7"·áZØ ‘ÖáõµEPFᯨL!GÂ]»éˆ5ì–K«Á+ŒÓÕZ¯B| ôÁ2Íê\#·¢ ‚yFà‡ÌhhŽžiSPûrܶˆr,¶Ü©Ç\G«< |‚9cždT®“¹¹. ‘[#à/OðUòW[Ýú-Îe<Ô”AÍõ£ŠA½=U£Rƒ•ùAµ-  T¦ì¡÷™SM$³ÊT’¬Š[,KÃÈÉÄ 7²í%‹š+Ìù]—9Œ,KZ‹• ÂZpI™–ÈOO_GpZ±Zhš¼¯êŸ°Ú4ªÞF¡‰ÿmùý‚€{°—žyR›—,… Ï%~ıçhS2̽»x—·ôD`T Úqéu¡§Ûd¦AñC(˜Ÿ‰7Ozvüœqa¢Ë$£Û‘ šÈï¹DêTóRÛT•2oü41ÇÆu‰…¨^Ÿ‹–Qû¾R9y¨ÒL_óЂ 13õ3óõ‡<4î9K͹ÐûV¤5¸§íýÄqL m&ôà¶“7“µçêç0TKø:â#lä|ö €Ž7•aˆ´åB·•·4A½g–ÆÛuêÒYGÎë…°u–€Jµnåå—ÆHÚÕšüƒ7SŠãËxȈÉuÛåÇá©guÊtê ÿŸÅt½4-†ïffä1ªuÜÓ©D™¢Šwç>®ÅŸÐ%a;ˆGÊÉÍ®6ƒS7L)lÛ|Ъ­úÕ'ÀÿKñpv›ƒ¤ÁÅñvSIí˜*ÀÖÖ©Xw¥ú+‚Ü52j!èOS\É(]jGÂ*~ö\;gÌN5…­…h¨w…t;~DŒÖ’ þ¹Ÿ†.E$6¡ŒCÆO)>?â¯G®MF=ȉó•]#›5]½ˆ•us‰I–¿| BÁ_Q5ÿWXúo·á,¢Úwá%ô¡Û—$Žh‡É;<ÐyzöjCfWõÆF5–µ;%²<âeGXéS{Döå­­ö0~q€>ûö7FÀˆâì‹2 -Ⱦ[çÌ$Ê9ןe8iŸ«âP—jS4¤Bò—ò “Ä*“p‹$Až- šðVéÅÒ&Ø‹ã’@´¦Ì7>®°*ö?’Ò0ÞØìlø!g•Ù oŽ•÷F’são]Þ"vÄñ£¨¤Px±ÙÜf‰0›{šúNŠÔîù‰t1Má@uf¾ˆ“D XÛ#ëšÇá«ãa¢4ïUÞž³_—%dÀ!€™’ÒnÇÇÂèí{ÑÇ,ŸL)Îé!¿Yp9îL>g@™þ„ð:¾2FêäðºCå²n©ª#Ie0Ïn¾·âf~% /ع±ŒO›°rXò6€Ì .ȳö¬˜ $MŸ\}£ Ußw @ÒïW¬8˜„%:#Ì)·`¬V]­ª†:F/wOÍc"ÇqˆÆÅó]ª{-]g1À€øÈÔ|mV„ëVi!T‹!é*71“uWÆIj?våîg¨½ ^ë¡2M´Œ¶Ã´©p¾µÉºÏ ÏXáÇZs빎¼·ääæ3O‘›×E=z¶è°¼¹ѽ\Ddq}¤ßòõçšÍ$HøSKöÜö±æD˜\0yØ»»D¶ÿò69:8(Ó”ÿ!ï(èØ…âÌ¿*·C/ÞJ—¿½¢íÊÏc²“XœH8‹oÀ>µ9_€+áˆâHzKœ ÕL:¬± 5ÎÓ±cb1:ønä¿ëñl€ÈÏ6FUæ,7Òå‡õ-tuZ—^ÚH“‚ǰu^ÍLh ‰ Š™®ñ6ÙÍY\£Ô›n…ºE™“hë— ‰ìÆ‚¤˜ öÝÖõJ)…‘AgËÙò'»ð„šç¾FxÊÄ©:vv ö¦ªAPÃ^-å:¯d eÐ`Aµ#W¨ìÏ=8w´ª¬8}£ã Ù™ÚÑ5Ra´4oâoFUÚb œýæ‚.Žtîÿ}]BnTAåÅÎkê>o=×KK©È¤ÚÄ;Ñpoµä®Øb~çW!7*s…P&ú^lƒ Ëħ¬s×jO1­§Yžš—-g×a´¶²åkäW³½Ý˜ÊÛèGßràà5Q«8ãGˆãÕwëT¥Î<"î“~î꼺ŸØ7ÜÒ¡å¦àPOõ³jmÍTâ„y€–H~1þåÆ4! Èürª7`h¿¯|)n¨é™c “—ËÇ·¨YÑ® Ñ´#Ðy…Már£/¤Wøèì[‘Ÿ·ð¯ñ¨®÷M-3ú¥í=Ü„H÷¤ý¦ Ût %Múíì˪gçµ: õ®Þêz¶m~T$Ö0„^<¨Z¬Z²1{†ÕM‘Ž%ß“bc‰E…‹£p×»eyl4 .·,¥iOA“o(Æ„ÙYsÎg×­ú÷Õù|&xÖãм·OÕäAp(ñïuGPjè÷?ôúò’É9 Pu9ˆ¿{Ü® Åxr¸:GŽ 'XLT9Ð:´¿ `t-§Ô­ïéz¯RÉÍ]鈿ð-ÿ’½ÑÏNÄÓê„ô8{"zÑÍñɈn:ÕÛxJÂ&_'”õ¡@®­²X *"¯Ûƒ:m@IÌXù¯™MÔˆ€= íq;Gh»Ç‡·gös†Aa$c±ˆ°§A“檶²ìyú.;£œEëÛ€¿ðÈÚˆþ™0=T@3»£‚\Å$ºa'eh³á³ýåÝG¦Õëz{pk˜ÍÊïätrßN=©˜KHw1_ï¦z,”ŒŒ*Žò®cø³[Ìræü3(ÈŒDþBu|æ0 8 (Láä,€w/ùñ ú \õ×ôhìå‘y¬ÊÑËA¿x´˜¯X¸r²/˜QÑÅtZêN–r=Ò¸1³·öSþ]#™Å±Ð¦Âˆ<|°å«¡¾5eÑ׃­OWUAêq´¹•#n¢”ׂò¢nÓb?¸GãOCìø¸^)ñ'ÐD('‹ŽMWAµþZHx×úÓ3Ó)`¿ìûÞVävbŠ(Pͼ£ýåébŠ7L/ùXy¨·Lâ'B苹,ªdÕÑʆÙß’ÒjžÑßýCl÷p¬7­IµžF$Û°ú¢ëw~ÒÁ3÷ÂtþÒ†S‰QAäT[Sq&ˆÃØ¥•{eú3óÇýz ºäºL$[Ø#Þ2ÞÈîèË•ýÏÈc›3³ku&y%}!\%¶>YMcu•C¯|„]ÆŒrÜEáÒ0hêsŮޱGÍa²Áúuçicô9{ªØ†”g¾[½%Øø×6âuh*ÆŠddµ³8ªÅ»µ}üÄ|)4u|ƒ2=C¬6³|XM-õ»ä)Çâ:çÌÝ<îàa«c«Ò„X§<}*[Šã{h „U–裕֮ò]6‹O^….…žôÃÝâ"æ*«„¶wOŽo ‡ÿ¥¥"3'Õ$ _²¿ÄSN.›¹¦û²óÕOuS¶äüXâŽ4*×ý~50bµ7ùðSÓvB–æõ²c(¢GL&Ä2Æm! ´›žöDZ1Cû„–œÎGt-Xo,=T¼„Þø?Óùû†!Û”8xƒø¶$Æ—.IM²‰à}Ü ¹=Šè%ûN¡ßHY&šî̦P©‡2Úb¦pr[O¶Y¢;¢1¯àÁP3¾LÕ‘ÇŸ&¬\å/_ëÙ ÈW OJ°öIý‰Ïw°H”½­ÿ?<ö°š®oƒàÏÂÈ;»tÏ+£æÁŵq(¸P¨¨ÔÏÙ|pIÇ +ù±Ö-íÁŒÆù™Þõ+w9Á˜ ÚN‹@b7šÎóOBÉ‹ÓJ§3ªÇADCÓkƾƒÞÖè¥^ K´¡*q%˾Ùyz§rF°$ªPÝhÐK·)öåsœÔjÏ…ë†ý~Ãï8¦¶¨Æ»” .nwÔþ±N*ñòšuŠ+1þ̬jÊæº6Ũ™òÄɾÕ@žFë¶ù¢…r)Ð(àÍßFöEUûOVƒ¥* Ánò¾›íi}STušs”@P«ÒNîcDý7›.á›øñȬhÛJ‰9Ro >p).Ú®¹½¼É¾vOCù£Îá 2OêœØ9ì ãï9WŽç'9Û döù‚odc«® ¡¿m»wÅ:„ok¾ÿЙÔ|¹ÀB^¾«£x5Û“žG+Røëåǧè´Z((8Ñ"ÉT:Ü轓ܹˆI§Ž$¿é8Û"+/ZÃ{-@ ¢*•É<Ò2ÀžIÑ,HÉRâòhÜŒB¯KYõ—‚ÐÌò-ø.ŽíigÚmÓ²w»u;úç%‡ÔwÊ’NÁ”6êeN¹÷wùiFuÀæ»›m°»¼!ƒÑNÙ«&OÔ™}üÿõ ¾þK쎩]œÕl‚;‹TXE]÷½TXS F} —Yø‡á°xq‰¾Rƒ[T€$çLbtjŶœ†”@âè4¿lRÅÌ+õDRFF‹e]=ÓVìiÍÑaxu ÍB€m V^Ao=C¢ÿßòÜà‡ÆOyo£ï:m=qBøFÖõ%à41…½<…Ò ¬f4ÛDE½/šç—ChƬÑ,ÿ¬›Ö–©1®ZM3ÖrïH°:…Oˆ«|O‘UÅ" ÒWÖ±Õq˜…^»²°í=)w¤iŠgaRé$:í ÒÿƘ`‚¤týŠú9mÝÌ{<ø¹þ=3KøÙÃFÄꥉÜá©^Ó<ͦÇFŸûäÂê¼þBÇ_ šTI@nV ¶`íòX/ðy|z|ï;—4ÊAÝX#FMJv逬ŽÕš%Q 2’kã&<çy¶y»Ùºuuy<ƒÒ3ô,Àbãzâfßö™k÷Šé\íhIgAdØÇ劰·{¢£Ìƒ£TÍczQ¿Gõ´Y„úi´ƒ:50Ä:™Ý„K—|½l4€ng{;$0ü_L†Ì†Ñ¯JÝ3˜j5ÿßçà[É2é=ḅ~¦#(£ì;®hQïZk ÌS"ܴʈ·Æ`Ã/Ù8VÍRB.Ù±§èÎr µ«­n’Ôέ8íhšZŽ2XJI_á äÙJ}ÌY× hkY©ó"{‚ÚË]ƒcK.r[jLšôÖûž2]Øe­«½:?~Ò¦Ný-û ¦D3]÷ûÇ Ì†Éà°‹!È϶M™0Úaz$G.Å7äÍ¿¢AÕ¦4iC× lÇÏÛe&Ÿ©N04V¼§}ëà­!O®m²„0焌¢7áK ¯£QO7Ú~XÆ':‡³É÷ ªò9<—kI.[uŸQÙ…½;S8×r 2òLûs?MM…ýÅóßY¦U&ëŽì–ýÓÉç]¾¶£Óžÿr‹äÐ^žÙFÜ!sÛ¡_’å³@¹~>£ì&&ÎlaÏM/[§ ªq–¤Û}ÛŒŠ r^_𚡊¤þ“eç /±^áü^°þ‰D%þG "j‰{§XtU¥‚‰2Õ—t__BÊ»2‚­&(Æã;í0Ùdu^[‰pÙé ÿß»¨ ßwskz¬ g0³QÐ=ɲù j©ÀŽ_ §X…{ÆólKkƒÎ¸¶×Ȱ‡`ŽàÖ–`8Õ— #K«z¯“Åá»àèóùÖr¸Üòo‰ZßRD’XІb€ BçJK£ŸÜUP¿Í$ˆôáûÒ”RÇ6º;kÒLÐ÷)ª¾ãþC÷-î·~pæLÛ˜w=¤£Ö. Ù+’š4U5¶Aƒa´’ zBÀ{ŒÎÓçei8)\òt ÉEÙ›ÚÒ÷áiŽÊl3?@‡hQªÕr`g&Y%µÐ¼¹Av¶_°VãÆyrÉ;‡@´G…I©zκœöʆæG4ß±ái÷ÀhÎ)9E´«Á§9³”‹{Æ[;£ê¶!_ oHÞá©+Uçµ)¡óâ” è\#Ìùe1øõ\®á üõGÍK1:ËÊ3ˆ£zP¦í M½Å1¬ìEú(`Ê B9ó£Ä|¼öVj4’˜Õ9V†¢xy×ÈUj>«æ,«ÎlùH6N¨EuÄÝ*—o¾UnoڀÛªúÚ‘#‚äýø¥,6˜:ÎÚõ:-f÷Ãç34ŸÓøL¯^$Ùžu͆K‚´ôZ˜ý–rŽ È*žÀ3©sø+”ì¼Ú†¯à’DKþ )v4c˜šYw/!v¥rýëIn1*w(Þ{)_[:Ñ ×Ô{û-@ =›2b85«Ý‘•7ì·»W¦û¢fNñ~.l~m/©Uî“D`_õ¿´bxè 6”KèüUl•.óXT“×xd¢ð’«ÌªwJO,¥„¤WÊ*ª;RþðB³fgݤt[¯Õx1%Ð9¥qÍr|y=„¢ÝþM66ȶÛ- TWÐSÎ'ÆÇÀ)(¸+úÕ*?ìuK*Y~Þx‚O¾®ëVuÕ#µ¬ñJ¡f£­«ÇÔµ=ãusõöz_³á@£ÐÓiÅØN1lžbò"»ñðOé'¡p”pH'q »Íá{ø(ׄ¥ŠÏò¯˜ò±kå?äÁ¾ôZ"Pr¢%òÏ#4\K¼WwQ…T5œ< 9ÜY”vk~êP`cÚ=@˜éÉ/|ÈÞ¿±³~"î-±Þ¹ŒÒ¶û5Tµ×°¶,{Èoú¿VXö)ȳü$ uä0X'Øà¶`¾ÒD£Ák^süH†"~î“ï@଴ɚré@¾5²Ï]:fñ/Y”R ‚fŠ—;$(™ìÉЛðVÚvX £}Ôë£Ønõä²Ë»„ ìͱ³Ë÷’,u¨BÁRóPëëªX_Ò€¿WEŸê@ÑÎCyiÎÿ[¹FäpTfX§ýÓé}uQ|ÙÐSÒ++-±‡âë—Ø¸óŽ•c;òTüØo;ÏŠx¼!¬-0öäI(éÚ;¯ÂPIœA]»–Ú )=r#Uó…jÊ¥’Èbµ»%&‚:ÿUW\õYƒ©ŸÉ‘ÿ Á~‹P´/ŒÃ'€ì=I!zØ81Ø9[j:(/ÏS^:N壼fðÓ/#Ç–èÉì /ºœ))c~Š\4MÂíÚõùý“kÀºðÇ‹¢ˆ§HŽ[ûY܉UD’ÞJ’? ½PìÏîPñöŒX6O¥r”Dq Ü`Xœ¢qÉæ‚º´ûãS+!¬F9ÂUlÜGÇÖ²5?ÃÌÕÌÞë+@› ÌnÖ‘2—)*O¨¨ªæ½¼ X³+GB{gÐÄ!`ú-sZ~JÐÙøØhâNÐ %1»ÑSM‹#t{O2w‘ù=¹½MÏÿÜáü TOï+F½èP¹ôñ‹±ZqkOð­ê!FBÁvŦßÅ„è:~Þ*/¢…Üûù}PÃ=YKfeD4åúκ¢ã[ôW.e¿Ç Q‘.(ÏZSÍ, ¾VúöM·Ÿ|&½ù7ʼnþ™Õ•"-‰^–¿›¤ßjëí$Tô–r/Éc=M»|“€”ÙjÇgSOSÖYÇ·Ê=g¯Hâ¦á‰w¼¶†ž TgJ€[ea æOdî¿à»ß?˜šs)AÆd7žÎlÖOC,úe¥÷»#KW€GfaŒË^9WÌÈ ©ñ?®ÝĈ¼¸a WFƒå‡À¸Ø…©·R<¢Üçј¶O$×ãà—±³¼ßAÚ|Å0§NÑ”‹»ØlTÔPø'¥ƒ†DŠz;ØðKI>òz$ÜL²}—¿Z~÷´bIˆíÚ׉ب~wû+ÖÓ ”ŽtÙá‹Ë}” àÃÐ䀴Õì îec£öúñ¶û¬Ç¾lc]ÖÖýþ–{‹ õqva‚SL €’6PÈM¡FžÚ÷1oþrçãîF¬¨“,QŒÌ÷| ×õßîÏJ Ú,îZ; é—OÞ1ZLú òÍ,£PVl‘ÙŽ0i+ ¡Ï;KŸØ'[‡Y b€™Â-q`›”Ðg,=_œ.ÆsgüfÀ\ÖÙµdÉô¡l¶ï•'£çUR¡º²·Çæô;F´vW†`¼pÐí3ê“6Q ¯(”šêÛ¿¡8cÚSÂ'‚y `  iܼ[,„WËÉnŒ²íòÖÆ?h<åfDx”ä4…H@·)6"X"ÖCÃÍaOå Ha2 ÖSZÇ¿UZ¦ «×{2ÁŽ/ÿ?ycÜ„GÝ e)Qž! ª;a´së#¥=Q†ä³ì#·p˜Ö(XÐꘒšÔÜü2ÂùD¾Áò¸PE7PdÀŒ;ßs2–Ì:@d–­¶¦Þ*3qœ> ß­WÅ%£Gèh")í÷käÁëEmI$2C´:¥X¡ºÀE{8Åå [#©j·âžQ>c…Òÿ-à“lÏÚ°³wè^ð Ö gð“ÿì2ÙÇy4x-F8Ë*—øB[RGXå{¿E‹È¼ògÔ’µOt`ŒU˜ù„os‚ñë….„”~æêW)醡ª¾~œëVìglSôwL˜‚³¯µôf|øB!`^o”=Ìi^C^ØjŠý9cq§—Œ¢7êéi=¨œpÏÇÁô¯›TbõXüüFÍÔ£MÁf)Âÿ ×­ 5 ðÿ“P¬»¦½½läs¦ÁvÐÏÍ0'³ 7E"ŠÈY‹Fj¸ °ºÁ.ÿÒb´À2:º¢BiZJ¸—€èu¢>°Ö@>9½ùÎX—ß Œ5ÈšjVïl»õ1¨\!`¶´QÕ)Zâóú ßB؆”GÙÁÀøžS’§¥âÙŸRúݸžcÜízA‡›ë¢tu™Â“¥ûìGO y“wÌJ[!†» æ‚@ˆZ½mH¾&$¢Œ¿Áa¹9!Ö/ˆìö÷;ãø€Ó÷kD²²æÖ +ô‡†yº,·±¼+̺üÅîŒçUeó𙨅ÈIr}ð"µ'•ùšÄa üÞâ‡8f5¥EZpõ}ù—RÈ(õ"ZYˆá5SöÅAéú] Œ=45Uð«ë¾úج #ò5’èû(Ý„Ûq¸l8š°Ó¾O®FÖ¾)‹àËó?ûsY]´ý•ðð÷ŠãÎó°j_(Gt‹-ÑÉ;ÈæþÌ…€‰·q«•“0gïÆ©øLõ‡$ÏæYøc;ä­Ê÷ Yù5YZ ƒ)Ÿâ[B? Wí³ù#¾ðªöA‰;ÀÅ-À’Êq¡ì3±92ÒÉ^ JhpÔs¯·I¿n® '†¥vv"[÷Ï2é‹É uin…M\l-xâÆ”È‹Ììë¢f pçàñ_tÿ±‰ÔW›íøX„¨µ÷þêVmö$C[Òòã);þdZ\£¬SHòj›ÖáŠÛ ¬„›ÌÑ&•§×«‰7¥~ˆæ¤ã‰²ÏÙ&pøòÉæ a© @#&q›n[÷ù¼ÆK§1®wØC•žÚªÔß\Ž,r¤@³á»Jdãëž6L›Ü)¹hh´ØDs\2¿ÏДM»Söx÷-Íš¾&«¸d+w#èdÉJÛ%3Îö««¶™àKç@…*¤AuA"ÄA‹éd· ¤K®.àôÜ¥T™W# ÈÙÀ%È­–wæ­7H …²„Ÿõ­ooR—ÿÆ'óY&sCsÂW‘˜úîq€HŸPƒi5Ù«;¢gš¾ðZAÃYWÚÛ«¢*Vã—M7eƒ¥Ko4áJçòãLƒ_f–´Rá{cÜc\ÅÑ?ºÆ™R»®ØÔ¤Û É@1µ ùð²v9¥8£êŒ6îö­ÿ(··{É{UªfDÞ©v¬#£¯á`úñð·ºÝE ›¿`š'’žöi"ÅÛV—6„2ýlÈNº¡ÞÛ,ß½ÄP§a3V–ÛQü»>³þÎjûTÒpzv‡°Ã½üù®húÞ™ËÂŽM틜­ƒ5Ô¸B¬1gkÖ é\+noØÚDg%ÄXdäK£tžñ‰³Ul YsÀH ÷N XèêP®šÿ܉¶F£.2Š ø]AxÝFÖ1œjÓ¡™ê'φ¤T>7Òžá³ ᜠ Ò>Òå‘Q”aÙhsiµïè ƒÁÚ»aÖž©ÆvÑ÷” ~œÝÀÿ S&mö¼-}YNË%snMÇ©|²}å⼯5÷Ñúy];hû‹ß«‘ßl9̈ƒ3^´³´ŽªD“{ZØ_`³’äæ/±óžQú_™ñÐve®œ¿§²3Kéú~•‹`&®k·Òrª«ìྲྀ¥äâZÀÝzNo ü˜_"âÝÒ5ÔàôtVî‹‚8®ÎG¾¯ÏÜæbƒ ¾ºÂÓ †úöP4Ögkrn¡^ÖÂÜk4ɤHøÓ‡¨âšºúaœÓ%§®*6j­GÙ*9¦ÕV$y78 Î9•¯±/Ë@º¿ÖÍÈR©Zã“ÑÏÖUÏ0—  ûÔDY7‚€4Ç)1‹kŒ¦q#iœLÉ嬚ŽÂÛŽÚ ?-à h©Nc+¹¯õù–•û¢~`Â(Mä7ž)†/Wbh?KÒ…‡}’##¯wÁÖ'½ƒ¼õÑg;¦.ÓõD›Â4‰Åˆ4r´ñ g÷É-©?Áþ[0J\)mp*žFx½JôÞõ¬"ö¸(ô)u!©¢Ày‡í¸Oq}»oÌ>Îgalç¢i;½²oÎ9JÍ{ÑúU.eiI£X“ Ô=f÷Ä]Zƒ)>–§¹A¹@·…4ÚÞPu·'¥ûê~ùI¾±K8“ßM§ ±zÃwc'‘´KTÅÕL§^>}åÈCMÞØªîŽDƒ/x–tUDæÅÈOh–Ný–æ#­û(#Á ñ(ÑIP5í­ùò?9B§òЫ%¼*æÞxí/ÖƒR£Ïnñþú¶ÐïħË'f€±UàÔÑPLm­ù^¿)éj6¾–ZäPÖ=Ü/ã©##Öݶqñ£ù:ï=™¾0ÅUGÚÊÂÛȺóÜz¶dÆöž1„Ñd¹!‹j&±¿Ð\޵;#eo:ø.`ü—S.Àq™ÚÞGwðï.Ðá¾Ù“œ ¹–Â3ÿÉ8F.ôv)hÒÂ:,rúɘv< ¶“"Gqï«ø¤Ff$G´x“?ÏNÍÂÁLÎüéá6JÕváOØ&=,‚·u ×ª–Š^ÑÙž€KñíÓ¿pL–wö®G£ñûîÇǺnÏÿܹÛ`Ÿ®¦‚:ÛžSpiÓ ØŸerçÉh¯ÏadÝ9»+.×aIRA,Áí8ÿ`ŸV)c›aÐF§¬%3¢ “©f3`¸#eµ´i#z¥õ~ü"~ä9{!KÊĦG(ÕÄ¿¾ÌZ½³á¥XBc¥Õ*ëÊZ2Îlâ­“YJä4»ž%,lôÈ/’“ßæüéY¹~ÓÂ臔[,©,™ç±V&ïG…`O芻„'Æs04 4?m˜ZM°ã'VÌÁa‘ž*¿X§=û;ß8‚—ÜWbÜ…FޤC:Yú@m–£jN°‚•n;Ý;U³ùÝÅéÞ Ð–z‘L®í¦9'·²[ëšͪ'”_ŒG˜÷¿¥1žû•('a‚ÅDX‚i>i¹GV«6=Q¥Õ¾rŒ}Ûä°Ï’W¡¾¾³(”W)a4pÙôSìcA¾T¨› OÜY1Ÿ’Q ¬U¥œÎƒ¡‰ŸÝŸ,g›gid1ikÁ[9ôühHAµº5¤äôŸóÝp!#œ²´Ì—•BØšð8¨iÒ: qG:ËàÌg2æDç:ÍØƒJ.Ê81k›ÐŸA†¸½”䤸 ÆÙ‹?VžÒY”´ˆ¶«”‡éÃ~‰z' 1[—Fû¼ñ‚ÒÕ˜¦¤œî[ñŠf? xûÃ7! j‘ÌÞõh:Y(òiðižõQ™·J©Êç+íîDU|¦ˆ9Ù%´x@b FD‘Ý·„êtlweb_`ĉGV.¸¨rk’ ç¤óÙµClÙ7H–¢Ak‰íð×ÿ†¥ˆò©°"!\P;!íã›p·BâciiÇ8YÒOÌ‹Q6·Gq¤É:P…&é3ߺò䕽†Òó·Éß©½‰ÇJ¶,vT+Þ]Žè"j™õÛ“ƒ%å^îÛmR>ª¦Ö'7+Ñb°¬£yÎm]'ú•ßÄíÿ°jƳECDSM1ì."7~OÊÐÔ™D+OŠ*¡—…¸R(…·=÷A)·›I©ä•ÖÈÓÁ 7#J·{1Í|ªÀ…„2ÆØìÚÆTΖ5ÞøçùF—ÒÞ= ¯P•«Ï¬Ð›•”oœƒŒtˆ%*ôœ¬kt¶=´«bËΆ ÄMÑ-’~ZôQUýs¦«WS]}"¨o“3 „mpÛ™rãTeÚaPM/Í:nÛ ²ݔθ‹pù(7:u¼CÉõIƒ“ͲQ¯Ãí²ÒsÙMqgÄô²ç‹´]ÍöÆ®Güùm%4V¢˜•²]¿/›‡5‹,ºŠ›å§V›U—'Äúöú°H×ß±¦ñ%,û3«õ lÀ“p\ÑE›-¶yTäè 5{ÏÛ=†«;«õë* ŒKâKFÿˆâdÛÅ‚k¥kÌסiMjв#h7B©¦«ÚÏ€ gy ÒöBéÍùUj&ˆpú÷ß)â€å'æ¦T ¤¥Õ·{èÐb¢œ†›ûaƒUÚ…ÕP3cK¸6—´ÙúQ“<ó}ëA™¾Ý–r¤à‰Í„ãú9”G£ µg{]è ‚[ж°ZK·ÂæbÜ>R#—N„â;)!»êËi@|)9B-´gö‘áöH3.gu ŤÆ\·î!q‹¿xzN/Q˜Fp'a;H¢µ·ÁuPâm>Pî&þ×y³V~¼»é/&nó/>¶ÿ}!]-mÜh—Z Yœ+=ÞЃe„\(©8ÿaÄ”o4 *‘ÉöæktƒGò#Írh›fðäÚt ô+Î[Dö•\´ítÍþRB´ÿ=ƒÀA­Ê6 Cæ!F/}7™já|ô×ç¨oY·g?U^ ø~w€ ´ð"ÉT…DPµ³2bΜ~^2’S(c¦ø=á3ÔZUEæŸ"9Þ@—É( °™/ž?ÍÛ6‚La±ÿ+{œåŒ)ïÃ…*ÙQžÆužT2$ÓúÍà$nBäÁ‚äÅdÖ]M¿Õžöÿ Iyû«Ì«;Oƒ“û0¸_x8ñ–oð÷½%)µ.%¤Ã9w¬Ê=ÐÎ=Bd@î3Ê(ÚUFÖâ°O‰ìåúÈfí¹_ÎÄì»}Žj–Úr¥1V_ï{XÙüGZÛ·sœð¶›m ŠžC/²k X‰Câ%zkް‹êŸÆK—º(´ØL|°Tw±òŸl“c€Ä[ZXKqÆÁÔ‘ê~ ¼Heœ*TçMµ FG"ãW`?9Ui‡Žc­¾+bÙÎíFÔ·Ÿê™MÒæBpÂ1HäªRLÜÎ&²ñ;Ñ8 æ–ÏV…çÊÚ™0®ÆIî‡aÀ$ãîSE‰B˜Mw>(5ñp²ô*<µÒEçž<ºÿ;˜T'.á:ò! cSdr†Ó3 ÖbSs‚¿Çe‰N|-³Qsñ3 cW²8ûšfRù ¯i×çŒ,áWït¥¡ÎײZM®˜‡sûå1Vô¤€€u¥ªw° e‹µeЛ¾è¿)Þx:"ç ¥£ 6Iá“q ƒ»I®ÐXòµvšF‚ÀÖ—¢Ò#¢Q½Qá7rOba€Û˜6½c<—ø¦Çœ¦íRÄ2'ÌøJMiÙÿèÈà$¹ŒßþŒôeýíõˆÈûK©!÷\'²°ïcIf–$m` „S±‚²é¥}RCxƵ@ÿq¸àB%¥®NÙAyͺI½a2(ï i€ˆßݤ6ò”eoSAå[Y÷•=†Ê»ÙrËb¦es{•u= Û“mŠº Öh{é¤uq5ÂCìL/ö7"Ì)Ãæ*r„c°¹ÆG#¯&¹¸‹dD)¾â#ÆÆÆ5˜ Š^'.~"1)ä:ªlÑ ÄrýYÏ*”‘ç•»ÛcqE1ŒDÁæ€ÞÌójÐ"¥b}çå­D'Ós_Ò…‡ªPšì ã˜9ݼªÕw Ò´yS¥k¡Â48+Õ«A"§DH’ÓyÙ¡.T“ÎÁ.;4\ó ¤Åˆ%V˜¼˜5 ,X™PÜLåÌÒâLýwî«Âšg‹ÇÔ¹ªy@ Süß¾ÖíKêÍ4ü;zÂøùkCÏ#ŠA€ÿtŸÖ’[Fgs˜¬ìRi²(†’R74í(T–kcw•ß #—†OÛÐIª$ŽA« v-+L°Ø±CUlÀÜ|£ø£.Ñôãj•wÅ#©PtA1ŠïþÌèšaÕÄÑ'é½Ü¢5ÒÍjž’ñ¾n¾LìS¢¯ö%óåÕB‹ú«l¹‹?rÑoaüó#*Hœ[Aú‘+#³ ¿åU1À%´ù"7˜º‡¢²WT˜¹¯Ô«th ©±îAª’Ú(0ˆ5ùeúMÖe"}ÀmåÒLчFÊÉ (îí¤ùáG6MÿN˜Ê7©Ò`$C*”®rÐÖ?6‘ƒAíD¡.×àJÛÇHBû_öÄçU*ú«ÿWQF¢Á¸ilJC&šÅ·rPV ,»ÔööGöúÑÙSM……Ì]Oû—%¥N/{¸ÃÊÍ6ªu˜æ4ËQ¬îÜŸÈßÇ|¹/ˆÒn‚”®ŒØ ¤‹2¯À”Æ72¬ToÁ]Ð×{úÛ6‚ötŒŸÑz¾<›bSþtñ»Ù|[P¦'?P¶Iß©FÂ!\ÍÎÝ€œaÕG:{ír(µCŸ³0ì”w×øX,à£R1ù2Æß†Ã$X®óeÁNÿ4Áà h°б3½;Á”£O8ùþÿÊ8˜âwã§„8Î@Ú‘$¯*#œT Ïr4Àô #è-Ίq½~í+Ö¢åKn‡½``ƱGœ˜.²¨+),[1ªê$©1Û6Üö^ §…%¡Ñ9Ý‘Ž*ìu%ëu]“Ãürô>RÚ{%/î¢Ixï$3y:\ùCàRW„mØò]àƒ»kBu,]ãòP£jÇ€Š½Q ñí¬íå¡ME6éuÜžU×Bˆž¾ÊØ\~ =‘»ó 5bI}Ü–ƒóÎÈ«ë~•5¶0ÒlÉTl$Š|hdœÞ{%6wЧš d§ï-¹ÓÝñ ³˜•k•cêŒkWv.¶KÒÔÞpxš¤]å”xh¬/ÃHøŒßž©šÕVö €¬ÓëˆÊ_Æ®Q—(<¹Ýí»[Ž»ÍÜ0ØÎН)XÔ÷WñžœÏ5ËPÅl÷Ó‹qSôyÞ÷7x*Ô}×GSàd¤dg–íã/†®XÞ=ò‡ƒ= <Ð41,$Ý…`]Ãcàüä!™®aK,Áhcª‰?‚ÄE´äïêAþ(8i°:\õ˜v%'v²†ÿ1ÑÜÚ¤nûº&»«°šObÚ9©ÃzÊj Iw;„Ö“¤Ø’õ;¼«¹&œ_e%3 gºyÁ`fäzõXmÿ ìCÏã­FÅóâ7O©f}’€!üâ°¦Œ¨àßl]Õ¨Öæ‘Ò[,>˼ÛŸ°õ øq…Mo·¬Ç(B¦rdIX}'‰4Ÿ26#ù>Ê}SmÐÎ×­ä †ßž›¡vÉBÞT×–DÈÑ6<öK˜+ ÙNg‚(Í’³qf ´šÂfÏLÏ:ÅøÖüÏÎØ’†ÇèGÝû0üÒØ"pBplžÛ± yõƒ—ìoIÕð†ZU$«O¾Y„»µ€/ŒÝá$V½a|{Õò|„*w>‹epjk3XA‘U«æo€»[YýNaÊÏß{moÒÆVí1C+í^¤\¸"wíT\ö΃²?ÓmŠ5õ=( ;dø0ÞâÛÔ ñžå1¤îj.–û«!DØíõ=1lXttÞ€“ÄjD0PÏ5§N€MþÆês%–9ýÙAi¶P!$jin¯E(­Þ¡4¾jš /k*f,Œ’0¿ W+,Ó •1Ù³"_Yo"Jû,*ôÙå¼’0c¦øÑwÜ>Õù˜ÅÞÚ„%/%çÜhЬpoltˆéõçÆ#EœoÛµ' _ºÑø}6_Ø=ßÃQÃZK¬.?³øUº½¬cu+a%š)¶Í6æé,Hh¨’;K\¨î1:`‰&, ;²â÷¡‡NM!ž^7’/Ö‚0tñ=³º´0o޳Ã)þô…6yµ+¢R+ÃLnÍbÚÈÈ~£÷Œþ¶®ºOdšt[s¾<ÑRÐU¹8V!ì5Ìî¼twJÙœ9‰€ ŠRƒC ÓÆ†sÚ yŸ¼ ]FísMz‡¤þHcÊ(xÀ ÑÊwKwMÝušæ¶™Î»áw3+4dYT䩨”-/-­™ÂŒ@Z•â cœNßyh}_5ÿ-¢ñ³ÀÃc?>ÖÏMÕm@¼}±“‘œ.ùxQ4È{ ÷`¢WÛŽo–rñ‚±…ŸÚge‘± #œÿõÁ“+Ï»J)-Z¾Yµ/»ø’öd+£l4Ϲí` + y&?.ÕbßœUüO{èê@ƒÁ[!¤­nF;´ =$nRúŸ«ÐЩbã{Áh‹_¤¤ùñ¯cóNe_‹AéÉ÷®RnïUvÅW«6÷Ôãa@š´í@X0 ðÒ_3S^Rƒ¨DÜdçÿ“Œ–‡6.¨;~ˆo£ÿ\z­6ýörë¼w»º8»¬AU¡ÆÒ§œ†aFQCþ™ù[û”{.s µüñ_¤É‚öJ¤ËÅžéžø¯ŸºÀKx8[}LÒí¦‹@öx“d‡¡S#%„Q°2&)ä}KaA«WBâø"í;‡ ›äÿ“¼½±ëÒŽcŽ$ÆÖº "Ü/L¿Ìn ?pƒ7訡`j3Œ«# ³êݘ¸v[™å"š.Eñ}à¤såÌFÈ2ÜÄ[³B"r( —Eá4•ÂçdÏ·ÚµŠMËvGêfmg+—^®Õ=6 ¯tm€û­mÀRÈr¡Ô°'ï“Áé[7:¡¯mLcAÞ€^³/ê¨jôv“õÏ´Õ òû¼‡BÌíì¯nq>Œ}yûÑ7÷ËrÏï¾ÉB˜‰ë†¹p~#÷öC¯ywG@‡å‡cuÖdÌ€2ÌlÂ`7«±ívß3ôþ(–öÅ+2;$såe+žü@ˆ²¤æíÌ”õÛ{gB¡ý$ªÃ…]K0‰aGÌu|Äû©»mèËÑòjºEO²Ú§¿vÒ{˜ l© BVa9løLZ±°¾MdWÔ7É”ôÌÞªì¬ -jgmRÍ@äÌDâgñˆZagÝš,Ë)-IO—®Åy"&Ù™Ô5 #Ràž ~L’äùŸG6Š b¥ggCF9bdZ¹Ÿ¶ÄiøÌÀÐ$ ÷€Û– ¨ûïOBý ì9ùç ¨T•/Bƒ<õo){;Àƒ3ú×ÿé÷ô¬F‰~¾Û¤K§€¦5Z¼5ÏvŽþ¸°V¸$ÅwhwÞˆ6²´RnsU™¿K\/ôšX6’®w\µø9xX[ MuÕ Ðö§!Ö= Y1Ù%™¬<6ÉßkÑâón&Þì—œ„ûÊ­Ãñ-óž EăÑUE¦˜E ~¿ƒ 8w,ÆœL7–¹·®fN%øÜð¬Gdå08Âc};Ñ€¨ìú²y'!¾$8Ô'é®J¢ÂhÔü[]5÷BR2xˆ‚Þà‹Î4ßB™×óYé?‡k"pŸ|†ñ9I¾§¾1©Ú³I‘Qê>9€Ê,ŸÎ`Ò¹öDS%Œû%¸êÔ Jâ\¨Ÿ”{Dž7ÇêÌ‚\èGÎ¥×ý>—t»4`–I>tÖöt%kLƒôŠ”"ù”íIú­ÄPñ¶<¾‡è†•¯6 ¢*Öz¾ŒÇRôߣÏñVäo׎ÁåRXÉùÝü/ì©saÓ QèVóêtz¦ƒv~úý˜kMÛ…q½÷öÊ!/íÁÓ^¹ ì3r»b³ )óWœÀ›A].¯KIˆ”óf?™«¤¹ò‡J¦®Aë·Vš,§Û:õX²¢þí¨ÛÏ;Ìg†UáÎxŒ˜è|ù&©›2á4É÷òMÛŠé9ùåèI=>Ë%c_Ú} 8Äeù$ª£¦ïUFi˜ð±N¢ÖT°d¼ëÀ¼ ÇuO‚F¾)±Æ „kñĘñn¤†<Ð…±sû:àÆÜ=?¨P9Oìc€J,A ¤µlVC–ÂVÆOBÌ”?¤–NÀ[´Á©»Ø÷Uâ°67®Æ"Vf÷½1~ÌmG—JÏ ÇÕ~DÓìŒZ…>ózÐЊ ÅëÀqóœ:õy2“ª†>ÐØ{yeÃ%ð`¡ ƒ‚gè ë«iû¡|t¶w.å[ľÍó•ó3¥ ë†9ºÜe¼VFr# H‡Þ1‹P¯çn²¢j¡Ã T!€b¦¥JïLÕôhx‹‰ªÁ­¶Ì,¸û4gµßÏ×ã,ÿw>·C®Ó#!'>«ÉiÇæFZ?µn9ŽCU’óÌ›2 ÅÄ|ä ¤NÕ|¯Û±ÂÞ'ü›€Ì,ÁÿtÞê5†³-«<7DêQ:þa ÔRVR~¤IÓ¢q#zµš÷ .Ú¿ß.Éž¶1™J9íf¡Npúa©ù<;A;¤§M‰Ü¼N7É^·Ö +’‹Ìµ9̉`ÐîUì<äàŠ/9¿v7sm3>Îí ­|ß®Žin{XW<ñQ¬ÞD2¦Î>׺2ÑF°f¨#’‡$i$§y)ñw’8&…êS³vWGë<$t¬ÝxˆªðìG}.¸ ‡ýÁŠ•,À{#Vlòäs#¾6Ü夫 1ù̹ü•æÜ÷ð¶Å"x/ùL u‡’Þl²Œ®òØ%;©™âüXºþBÓZØ5ârT&û: {0F¤ÀßBYÛ ƒG‡/yÕ,}ÜqêÍ:c¬máì#R÷ÊmÈêËXÅ^#˜¾ýZ‡×ýiÌq§â™Iëßþ²)’¯Îæ¯5$ìò-ÅUÍA%ýCð ;ࢋþäV< ›=k›Ä+• ~?rV⾦¡ 0]ºÎwxH.5?†Ñ†ã©g®¾9×ĸ:»3¸ \8ó‹ƒHÜpj‹(n—MÏżž[Áa ”Î é ~÷5ïâ4¡{ïsÿ:WXAcöÙÊ~—ƒ¹Î — òÈ0ÏY±ï‡· û!f/ÌßG¦e1<Ï §†I%KdmY2îå9[­ æ¢UtGšíwíàhò–*Ü.®EB¨RUÆß¹}{}¹O¯Î¼EñÖE;T7°Ã¶%4—&;ðM>‰Æ²Ð âõæ”éø&Í`©¹L…Ó†&À‹ºCâZš“¥‹ÞŠ(F€Š§|™Šâ\#d7gë,æÕ0~caT/øoH‹ýŸ)4N‡×|ØŸ6‚lCTÃgà&®3¸¥}é皌±QµT@YK¶ å! †þôŒî=ôÃ…ò h÷È)=ÔÝ@ »æ[&ÕÚ@‰i ÆiPyy·[M`€:!jïÝç×Ñ×ãŠ(+3ÏÌšÊ=ßìÓ‰4’ºMey4ä1$ô»g—]Q'ƒ¿eçØ¢‚ŸÃÔ…åÿ­)-ÚÀ*(£ÉãGmŠG ü|‘$^шh•¾]ia(ÄvàõˆfW^Ô¨R¢ÍJBj‘ׂžnÆ6oo§ÿ–_6º‚ ð@ï0pýH}JZF#Ø÷QÇŦmQü|­ œˆgåîú¿«,Ÿæ¾z“å:I3AYª`Õ$Ó;=§^ aÁ釬ŸbD¨s ²‘˜ï:fÆ·¤Õú†ˆ•݉ÁûIJž›[„ ³N‘»‰ *í里"Cn„/hÏèÅ^+k1EÔC¹µÖ‚ `ù;¹…ú/ÜÃ%ÔoçQdâû!6,¸S4ƒÆ)ߨLõં†ÐPÅB7ï¥ÍM…Ì.K“„`¯-è2Þv‡‡¿;kA 2½~·:eXÿžYsÿº¥1Ä6RªÊݼàY¿2_LzÓúÓ_æX6+éºÀ^¬©Ü » ¼j`æ—¾!Ý#X­íq’Ρm2B.9t3{³<š§sú —#CÄuA˜ao­X/cÖØ€ýеûÞ¡í2™±eño“­Çe±kŽÜ2kYì§ÿ`šÞtw¡Ûmu£½³I²fW»¯=™ø{à9¡Àm²ÉÅvŒZˆ)dbÔu妄—Ê‚! ?p¹r*™›f?¶;¦ÐzØÎäúúø¬6¡Õa‰lñXÏ„» 1ŸYõÃÚpÔ¼£®ï °ökmkÃDl €¹·1R+c9ØCEZjö$u¢Lv–çX €\“/yܶ5ÌæAŒrâŽêƒ¯:ãˆürÝèÀNW10 ÂLLrK “½ÜdžmœÆæ}D߼Ƭ¡1L4² ÈÐ% \*\gCiƒ’¯ã_¤xŒ7rEÌÄøX-5i¶nœó í2Ìokë³?Ôoß" Óˆ¹ý ¨´^Ì8ùãQ‹yçØÌê©QŸ¼ ÖÑZàõ¥É¥zK¢Eà‡üóÄYÕF‹¢{ñ ‚æ[ÌSQQäâ)q(¡sØüTV®úMo„Ôiè³ÌÇ®D“4¬þšTg©•³mĪbøx¯blûUkcÔ–Œ¢ÀÇF—rª«ü NWªÃƒ£šÖÁ‹#©B”¦ª + {Ž‹ß+­ûîòh)Ç{²³ B"˜"L^÷QÊ$’ô]9@ê±0p»FsB_Pãj{Õ—&§2Ž6Û×pˆ‡Õ ¶þoøNFE7‡îd·—j83Íg›pf\G™­òÀØj!€ãf[ÕDÈù#ŽöÙŒ1¯–|¯°™}ÇrÆ„_ŸöF‹•2—¡gê(¤´tÙÀ‘«p‹.x„ñËÄ Áªÿž1eãÈ‘\¶†<6õ²$Ïžº‚¹3r¿˜D¥N‘­² ª>”â+”(å+¤Ù¥ÍílÞ0¯e²ßˆ+Æ£ñ°§sDú¸óó v0E£Óõ0>{!\PnŒòL§­0FÎaøyÿ†vl×éÑ㯅xÇ ¨ŠüNõr,×9Tqå ¦S—õ^æ 8›yÌ—ñ>,fõ‰zB £2/ëõ[9BÅ”kŒ-"‡&Ïó!½Ž´J;·CåWYâ«z­íœ‡€}=——,¼`ÙØïÚ^±³Pê¶ÐH‰©W0(?ÆC¶q^Lè2gè+zÛTÅ"¿!”ÆÑaVî`Ÿã|í¹[Áé”Uî é_nyä±lŽXÉØ‚×#Áï}%ÖŠ-2*J”ÓÔøÆ"lÎ×;·Ü¢t«Ó·Hþƒ€ßo†Ì„\ÂnÃ6¾cí4Š OX°ä@~º} /JcžVÓí笠þ`²ß4ú6E}Zå@û–|:™s:q­ÅÏônÔÍÒ² ½Íß–} ¹ j­ã ³™V)A?+/¢¼"éV5Ö¡Ü®µl(ßå\Ûeœ¥Å¶p)âé’9‹ü|%i¸ &G9ðçcZøÍLÄhDvù«¾² öì¦pÏ]Cí"ÙIJíÕ*€ˆ3dC‹mòQy« ÃøøBrÞ.™J/ÁN_Wýhò¥ÕD¨>ðÏr½§)ÏM š½â«»'þ…Ãq\‡MOŠÄ2¹e íäöÎ!,]‡ Šd€’«Ž/ù«r®Šnæ’ö­¼¥!·$†ZЬ¿jg H¬q±·ÊÆIHc2ÖzôVÅÚtuŸR£ÇÞÿžÚs˜)ÌøAF•òs·[ÅŒâËk6½¼ž/¼è20…½Cº­FÓ#OiM1ÇÆ9ÝWÖŽÜ„;e™ÿoË}è@AÎjÈ[g•#T%»—mƵkþzÂÄšjtˆíæµÆèÐX±Ðˆ¤áôyeú,·Y‡ #‡p­ÃGÜ‘· ŒÔÏXàA]œˆ›|~ÏÑ]š d·ˆÛ©¤Bmá ðÎ|[@5[þÝ 0Æ­Õ±ïÙÑ·83úÂ×Jú€UɊ‰>w G|S?HH¥ùt ‰™‘ÀŠ2§Ìt“…k¯˜ÞèÚC.[8aˆùºQý{m% N‡Â²þÅ“˜Ëª\xöz®,ŒaKgÁÀp|Ë/‹/ŠxøMÚD÷ý™©øKH„q4²ûÙ³à% W‘ÙÖ-/Ì›…qPΰ™#e‰¬ œóºaTÆÐ©È¿ešE“MÚ,Æ ×dQÂþTƒOBÃÍ ¾Ÿs€ŸoM‡@]£œ—¡×xãê0¡ü/g«#ÛôÖƒ¿O¹ÂIN2žÉ4o V7!RÒ›Îþt}¥Ñk½±ÊX>ƒ¿_•ûýGý->­MßZV ·[òJ"¸¼÷ÂzLÓê®tê™r¥ñÒ„s4=´Ô ]¡ˆÒ€–rÞõÍ´Ñ%þßm_¼4Ëþþ·ä¤Ö°õ|صÔqæçÿŠg¿¦^[êP7E-†|ר® [&ÅMKð?•+ýš¹\ëãÃ-î+ÉQS”DÌ/oœ£|:^é¬>X‰÷6Û‡2¡Y’4>y˜:/Êà¦ó¼+DV$¾?—ÇkÚIpm0dÍþëa3$uå=­Sœ‰d0,t·|ÌÅõDA/àn’P~š6†f°Ó®¯Ž2°Ú„–Ý©I}/ˆ^PÍ?¶œ’’ë[¬_æ XŒ“x@z’{˜Ìð­%0þ[ Ü.íRSð¼¡ÑRËÎF0[by|tñ®]–Al»ÁÊÚ6˜„ubk0´µµŽ–'ï=¤ÖíõBÞ+íý¨K)¿µ²µî ÐüöPq’þÊ•p¨óƒÓéj«è{‚î`šó*lÕÓ|ÏzS6<( ºÓíêã9]øq´9F)\€Ž±ñ¬*ôƒU8b;–M+\ŸwV "’6@d!£xÁ•k9køâ¥02†$0CôW’ñ<7G œ9¿l7Áyúž«7:¤€ë:¥RPDƒâ0ªHÁÑ´êŒ1ÀÇï?ï®]0Š÷ÿhHØ9ÆmìæÈM¨Ai,i¹ýG”úà gÝ¢O‚×ÓcW­• h±œ‹9GX¯+ÞØgò7ûLžZ’?<'Å»¥¯MçZSÛ‰¶ÓU,*ýò ™Ib­è›],Äžž­§•z޹¯ÒÔ¬(ŸìÚAÊÚ\:ê^À¤¶¦ï#Œ`¾\àà±m|…äX©®L¨ª_žP”rãEÚšœ¦>5[jgÙïݲÅï¼zÞgA¢Ÿú@£[wƒ)‘>‘›¿¶<›âÉTÿnÛ’´#eEH7—g¨9gC`ä£~ó‚M$$v‹Ô.Ý„—¶l^·Vª€ïîµ`ïÏ­~Ù)‚JqÏ À¢“˜õ >l¶Œ æ_Ø$– z6a3mI¤¹Js M¦Q1>æ ëqàßmNÁÌÚªÍ@Hìë¾ïR3å!SçÖI©ÜwÐæú™ AkÕÙhaËøô è=½ò ¸É¦±pC2Ø £ìЫ,BÑ-ÊŠÞ„¨(ŠÎT^Èÿ1šÜ`µÄ3àäM{ƒW9\ßõžÜ”cÂá  …Ó)Á>mYÀP‡žQ-HÆ3Ê tÞˆƒ¼`½ow?¡¥Ò -ªmÓOVKµ­ L¬‚Ú3PP¡ØÖ›‚ñúÖ|ç*¤(èî€8"\9b˜óç4P wg£ß´ôl rKšUò£.Ö-rýœ' @ñ—×aΛ&ÖûXf–?`!Ö›Šüž”@…ý¼5ÌÜÍë¶ùÂPƒhjпÝÄ Ä™³°¢‹m±m “Çi`IÍÎËô%⛓ý[êâšÐÜkuÁ„œ Ùù Ç+h‡tú"™úPt$Ùñæ?²Öo©¯è“à•ž æKX£ÚuêE‚„?>UXñ¤{7žê^õ=üL³ H€jÌóÂ,¿2.dóuÃ_Ä6Í.M‰D¸rv¯ržh’¿IžÈ˜€eôM dP,*y!®Á˸f¼Ð¤Ç±¼UHÍ}´WŒEZ Ájü¡þŠµßœ}¨xÞÀ¬€L¨…Ö°Ë%.©õ8Ù*ùcí^iU\‘⚟öG"Ÿ»UúZ¬g[³ŒL ˜û†(’}héhZ;‡ú#p¼è39—ž¯ë_žDó<ƒ¤UVk¸§À€ÒëÅt8åùMœyÖ&jË›¥å6ˆƒ:×ñ©5Á ”Ð^¸ ùî—gØõ†­9F4&•¨£Ã6Ú`²»iÐkìΈ ³8Ö:Rº;ºƒ¬íòükÕ7Yø1Ùˆ¨AF,÷§v~è利Y#Î$Ž-z¡2Àu1~¼8¬ úilŠ›xÊcÙÎSVõg˜ cóE÷ö@ø³¾‰ w;KÛ7 Èé´Vt(J¦¥ãoò/nsGÜ2‘1ÄŸlÚ=c@KÇ(¯ÖàsDëö'Pÿ¿Ÿ ÊQìür(ë±Y}„#ÿùe­§Xë+Q_›ôï .f”[¸t¶¶ëÎq½-Ðó‡GØÁÞD»žÞò*¡G[´{£i®ñ“V¾³_Ý|E¿Û=½‘PŠ’·®š'°9ä|ÛœŒé\þeo€-¢ýC’ÅÆ ”â*jï<ï2íZ ÷qq/pœÖ{|³aÅÀóWˆ.u¡Ð-W*9–áˆW·ÀH5ó¸Lù…p¿pÒ㘥ÿõfKO§Y_ÎUB§ýQã¹É}ì´Ôa`6OŽÅc'|ïŽ~ÐijBŠa áV¡›?ê uƒSɯ¡šòuãÔ¡Öïù ØîGTö·Î¯2ú;ã§n€°ßQå…Jô±l· o`ƒ‰Ã]Úôo›ôª°*™»‘QèpìwDBUïŽ! ²ÃZŸvÁwu «ÑTsW£›*ò¶à®„/?[îõNMý ÆM¿áQ…®…+\Çâ%ˆ[ÇZ„×ðÜ”ÃY †P”¼ü5§1³=”H. õÓšÕQû%5Á%&#û±ÕÂÛ(ïŽéúÅ©~”@Axd—WúJ ßQ½t· ²ð(/õkþ^ß°ëNX|ÓjÇ‚ÞõjH3º  okAL9©3©ELQ6†Áe/Ù½ìj7§AÞ´á³u­k,tôg*ŽN@] ¹[ÖÀ·ù$£¾/Ž ‰°Ëfè–¡?žz©h:0ö•eìÄ߀ý«ÚOª„ sè´_з2’ÕE” éÈ}:áö /±h+n˜9 T陬T3+^@›¯YVæ±Y¬%.ý vLx©@!¥„vjYËÔcÝFªr1Óg8ø¨Ñ´äÜS7©9½j]“aõâ*c?ùÀ,%H<> G¸„vŒÏ^¶õWåÝœ#‰“M&DؽG^´çÛ-ð«ÆÎåùã“¢Þ|Ÿ¾u ëTÌ­¢WBt,dT¸6|&¤#ª·°©p<‰Ê(ÅG6“†Ë9cpE+j=?ð3V3ù>‚¯žØ°‚Ã0Ð_Àb•:^ñºŒÓlhé°Ø^Ûêð¨ïóT!àˆ‹+l I —MT›‰O‡ÐZ‰cÃZ˜w꼸³ßJb?„N%¯ào1-'ÂU¿m(ðíØ¹ØZZ¥¨‡žì‰Ë~HÜ›v'VÉ'y!Ì”†bR•ÙéÏÏà–\AàBßiE›Sˆ‰…™‰or›‚Vô`Œ‘H>>#Í”4¢y$hÌØÄ¾˜*úßíj¼ì+äy1ãQT ¥ûc˜¥µÚGP;(Ô”Ræ×æÂN/\ÎŽñض+ýÍWxF¡Ø¨?³\˜—çÌOàÎ,ò¹¡I”¥@²sC"X[ß¦ëЉ•º]>lðŽ>òp_PƒÓ¢ë–žz|á×Aª(Îÿ<×̧ýD*íõ*½>ÕY<¶N¥3¾Q%¹ þëÚøæˆ[ZbêÐ9‹ñnµÈw*’þEóÞ.·ÐÀ q•!LkTi™ "~÷{ÀJ,Wä¡ÒqѤ[çNÑþ´šð.¬*ÁÜÃ…Vð%Å£ 5”ò¿Ì ù­ïDòÙÎ'^döµ·X -ú¹è9®—ùúc•@Îý©*e 2 טBÆ0T»Àt‹ ½ÿMþú®‘ïÚù•-×Ý0LŽºJWA®ÇG-yÿ›ûð2¥Û\¸\Õ\حϤSlÂë·îÜb t ¹ED­8ý#›ªw{Ïçïn& ÜÃý^"-ÀJÌo¤z£Ó¼¿äMÒ¯zz#ñèK»€—ÅKÝüš#¬#äì,ÖØ +††M‚„¢²¦Éô ©™JÑgFÊÜHžù½°jeff!ö¡m]LBDùݯEÄlŽ™ hIj¹™ÓªÈÆn?»~Œƒß&Ìȼâ¶$R¨ô>Û//^x=¨«û$Ê…ÞÉäBo„[3@ųœR•+W¨œø>lŠGÈêFéJ¬“Nõ D^@dœQÀmIa&ôˆœº4³~Û=qdåD[7’–dzD‘VÎSÃÕº9ÄDz¦†GV+‹G°2j rùpII3CtgrÇɕӈbìƒ%a+f|ÆÑèˆF¤3ðg|9ZÒÃõÜIÅÌßß—´=Vüô~|\I½PEéóÇZ@!”²¸¯ ˆj gQ—e­Õ¯C…™Þh›"O3‘_/ɾá³0§î` ýØo¿©Ù _³âÐ÷‹` p @wÉnXQÚ>wúœ ³´èÔ‹Ø9Ø&"O€ ÄoõXð ›®’Ðè’‘۪H§eÄù-ùÌçáKÜ›¯fõ`AHttˆ3šç˃\ÄjW_¹Ã½”»UtÓi¸(Ìš8ç"yœÑ’<áËK3¯ªœªŒä¨*vâ…†BÅëì>{LøÛºEI¶t`ÁHm6M°."r„F™<b„Ã@ÎDZ"\Ì'øÝŒ`)Q¼â¢Rs™!î›Ìcè"5’Å;¼ÃlU?Q¥z$ä@óp8TƒŒôó/¯+^‘^ƒøÙgë4Õë¸HÍÔ¸žnr!‹†™¸5J¢lCàg §¶ÚfÊgŠ‹.\œÄ=:tZD÷'¶÷x!-ù2æS(ÿ<÷ï=žM+)§¬Jübùfà°ôœKb¯´ï¦®1S€ì¥oIñö‰ÐG$µ.57p?´žßYƒ}Ÿ!AJbÅuí QøŒ¯Ü· βöþš¼5ÞÖNÖL7é,‡ˆß²Ó!ŒÒÏê,Dîq’º=f±uéN¨Ìï7v«·oŒÑß}Þš¥îð°E/Œ¼h¤OXF—`å¡Ys"v2³™½ÆÊƇ)‰x!F]…:}ltR£ï(ÈË­ÅÒ SbÓ–ð´2·÷À:¹öj£Ž×¥ëhtàÃÒ⪤®ù²¨bø#¯T "FlDñ°w/W#˜ÇRÙ:‘·Å*¾t)ËI*ųfhÿÿ»©{2Ž}#þÍ+¯¶=ªw 3Gx¨_Ť‘Úäãu›e¬ÀÛ†}€ò"¤¥ü?ò†É7u¡|[ ¦z1e¢5aèš÷J€öðúcËÁ4*Ϙî¼vŒîhâ¶cÔ´À5êéeNWFH!öø U(ó£—‘&?SèùÍæ÷ß^&~R¨^ž8²èÑÆ)xn‡>»õ¥Ñ…ý…¹_þàÜ:ç1fÌ%äñ€Ølú¬ó¡åå¯x‹€2Õ ç¦©v\¦¬ª‡M Ä¥ªÏ(T÷ßOT°ÉµûܯçX÷–9°ÃZcæ_þ’š˜‘ÄWƇù×dάþ/•Ýð1"æñ÷ô§Ý…ä4½ËË7ØaöjÕ«pÿú ‡\‰otÎW¡cè{˜¨þª?Q5Þª}‰üuqgåþis‚¬Coó-•Ñ[Œl‚œù´A?8‹LÌŽŒ%²åñqý¦©C„œ2zöLLÝJЂ+{…ÜHNQSý´9us³Rœ\{Œ\ÚO± ±«Nu•ìì¬HÁ¹œ˜à4¹¯×ï=•þ8Dîþϼwc.ˆå!ƬÁÂ.iå Yc¨Jž¸ŒÈ(w§Íù¼øAÂWéÖ—.˜Pû¢T7+AÚþ°&åÔË{±ŸÀA$Petš¬×­ó°á´äBzËÛ‚©>éÎô]ü4@álfº*ƒ`f”0ªÆVUÑdµ×M@ÐAMgœ;ò¢êA‡e(Ž;z/­`‡ð\$kÕ0òºÝ,ǹõÕZŒH±¾]1– ”½DÔdïùäk&šQAQäö­q$hc©E‡"K;ÙŠ òÀC6ÌâfÅ=1xÅÜ®F\zó€CN´b¦.b$ÿÌÒd²oÀ„ ᣤ´ ¼‚d'2y‘ƒèi:Õmv¯é=ÓþŠÖ—ªé`dñrù³ÏD¦a+ þ#3qØ‚# âîì%ÝϼÇÖ |à•¼Õµ zTûô£Ã¸øâ"´¬$ïLcŸ! -ŠiÅÏ`lBó~˜Ö¥¯z^|ž°.ÃÆP=æùi!ч|=Sf:€#6ÝwJ ­­ 3‚v¤Õ(cÏΣL]NÕµ&p%š0Û‰Ô‰ð ¾û,Ø%#0ËŸ"}Ú[tØóiO=]Z½*`Z;χ›ãòÛÉY¨\±*ÏÿGïÁd•m$†PëRInÛ8ÆÝcõ|œSCeñý5u 7 _‘7¯Ê0»Kâ41éijL³1U¿ ø¯'kÙöNp»îûó0&dçýf?H±˜#ÏU®ÁWùš!ƾH¹Õn"ÕhTͦz¦Œfn¤Æ4ó éŽß*r¸Áœß1yÓV@e'ö^ü÷bî]qÐß:¥ê± B­BŒ8Óæª±¾; eOqÑ^ÈA£Q÷!ËÚ0á›[ Àϲ]FBÞ<5HçÎRé,?Û9@ÖÍtñè­Ç™x™™ £SBRí‘¥Q¶éž [M… ȵ¾§¼XŽ)v¹û ×)X„Ö„oh$3ݳcˆ¸ö 7ù«Ÿw.?ââ}"mϲýËö"âìÄe —Èèéš… k……™ž~÷xî.‰¹v«ÛÁ¤PZ¼?Z)×?÷‚ßûø¯íºyãɃ:9:‚®©LÛ«eÖž¶¡ìmQ­ŸÏŠÅ'§9‘ñŸ’¤™Ë­Õ\ßÎeûçlgIk6Ѱ½>µÐ[Ï™/T{a=$G^o†×S6B¸Ù€n:S}¸É²¢|°TŠ6%órvîaÇÇÍŠi¾ðI·›†AàO’|‰Óå&o9ö.‘¢þ ^°mqÚÙ!il/°êmg`{]qãn‹¥*—Yù#cOS´ìØ©µ¦'Õ\ŒãÇ¥¶¾Teê´ÆŸ,_x}ÀÓãP2ŸŽê ûW ›¹.¥9GK(‰ˆØú‚/Ê‘’ äÒ Øªh#`óÈ›~á97}†eÄiýûÎÁ5Ë:‚"ÁºK´~Ž»ºÿå‘;–~ˆ/D‚‰EÛvoê²£Œñè-)M–ˆô|O.¶Vb±uFôç¸èÓ2á¶lS\9ùµóaj§×°RR1g¼Þ´u„(Àó9Øb}¸x˜qŒjaµè~ÅX›¯Ã(H¶øÂ7V’ž¿?ò{Â}Æ«튰טÂrlœ#ÈÒ·»ôI,73«oðMF2E …n`pÀ…Ô{É©_xjÍ_%k9õ·%IgžYä†í¶"!uHê–¢@{·Ž¸p~ÍÿõäÂÚ¼ÆÅclý€ˆÙ+ÔÚ[2Uå ³ÀÄÒ/_Ã"‚IŒÖP<ëRä­rVŒ¨E°§…é5Q8W²2mšç!ciµÃcŽÚ°¥ ÝÖèdµæEY¦Øl°CžÄD¨R€§ÝRö8-¢_¶«l$xzk´â®@Šª8Œñô1¤ ilÏq/ ZÏ\Mú;þÖ?.òGiVàÀK¡hÊm"Ùñ@‰‡–òxòÙÉF'ø-ßÞÙ#\ƒ6sž¯M"ªvì<í]Ê»§!³ ü5¥Ž6%Oø’1 ~#,+1õyÝšE ) í5/Ìe5f«Rã/‘(p᜵á¡ã2Ï6±[Rø&pƒ4ƒme†Jüñ´>rd|+G²î̉QWn‰˜˜;å;€Ç¡曀-¨Î»P½TÉ–Ç1ý Qo¿%ÑóÕkC t¸ºôáÈÿˆ†m­Uý|à[‘ ,>7mæãÃÛœbƒÞJû€aü~è‡q¸v@.A«n\Ðûs‚~ †‰ƒ¾,l…[ÔÝI8D.;è€ßцçÙHvèWÑ(ðó΂«PŠ@,IønÝè6aªâ¬L7ßɽ®jD¬÷©!“,’­—=ÆO“>¥*{|Ùái?mñXõº\× »XÜèL‚…Œ‘²IÞ‰Ù3“Ï¡šÍl)sZ&2ޥؕ|Eo‘¯¨U2V„p“ÐߣF°8íí©G}'W),¶×-âÑþïQ&A¹²Y‘­8¾pL!*Ñ+ÊW±™œ| ÜÉUdá‹ÒE7ELîBS6L¦í #*Xð¯¨ÝøAS§&67Pf™1«É)àn"2[cÅÅ΀ÚZŠõ›}œÀ `—v£=ÞŠ³9"üQ<Õ:ùHIcêÆ>ù…1T‰46˜rå8ø² °¥q­.úQ¿L¯Éö«Š Ç~ ?x24øËRg—ÂV˜F-j¶"ù’» Qžë&ä®Å°Å8AwFqªß`­ Óã‘ ³Ó¶£6lu ÓÎi¬ž^l4Â.lçÆÏa ÔltAw´"ÜØ†Ã¡ãÕøCwñD{GÃÍT€?N*2‡‡®5;ƒ†/ˆÌš¥ ª¶ò¢F,‰eå±ê%Δoµà¿–|’JßM½—ÎÆòŒvÃÊÔÔ>Á/;«]÷žªŸ$Î~Ñh›*߇sØŽ[½üf—Ù†h¯)‘Fo–öÚ/Œ¢ñk̤"ñ‰oödÜÝ‹µQY{„ug×-P@‹]šqXìàN]ë•A Ä£È> m¦^‡EëY>@¼IßbN%© >ñ¢Ï¥‹eRN)Çš"½îæ–à%èt± ÛçpBýV¬d«×½0J@¢ ;UÆRt¶lŠ(/| û@"¼J!fU+k ½ºØtÐ0“önª‡Ü§Òù¹nÇ\Zaì¨ä!÷I­µ,àWÊ4f¹à1ú³ŽÓ?xäg­3|~‰~6Ò¥kéÎÝ=¿ŠH—fJþYÎjuÊMß~¯¥]ÈöÏÿ[ØÕ±Î­Xã”Þn¿hœ’W4ú K†—þ%xå³À!Ûèᙽé%¿Ðz&ÖW°=üîÇ’¾ÜŠÀœãh>ìF;]ÓSss‡rÞÛÛÈ{{NO‘œì/0ÒÖ~€–ýxröûÒNûìän:zÅoz%‰R ‹NìƒoQ’‘åpˆ@®wÇC]Â$ú‚‹R †Lq œó‘ÙK¦n„ߊRÎCU•ˆû…xðrQt}œøUç§/IÔP™óý?3‚ k4"Lg>F›j´y,që#‚‘࿉Ã(Ê:åCÕPâx’ÎO«½>€ÕªÎ\?h:'kG,$.µ‰FËËùô?æ$br›!ØÝ-õ87Žtë]p­bèØ*½tÉiÿ*'TˆÇzŒEN è~Â0Á¸Ã„»»Ï¡ûѱ¬3žfa?qKmj_œÚíJ$XŠ0WdÏÛzpܳ>Ì=Dj¨”®Zèø.­#È[ (-ö°C·†Ö3œ¿ã7ý-Ñç+FAY¢)?tJ—¬}T“Œ¼ ™ÅcªN ûÒ~€´Û&Ä‹ÈÛŸ—fi:nýKšA}%+¢¦¯ _idÑŠ£Ú³Ê=g¹¯a!L(bÛ>§“¿É¼\§n•“±Øt/>ö*'fZ`âl—¸aØÀüHÀà²Ï –¨‰˜hÞDìNŽp vÕFYZ^qOËŒ‘ÞÜe>qVðc¦SpÖÇór×c’‡éºNXÿî¦x·òì~¹ë>ù&VJE¯»m©6}"zhT‡MöùõMâüƒðŽØê·BÆsPpÀì1£©²`JSªpÞ±P2¥µyçí{k¬tñû‰^è ¹W4N€¤¼Æ'I¬|ÂÙô1˹‚íõØÔ&{=£<Ÿä0*­(ý¨Z7ËÚ!Ó™Â_ýÜ™DÄs>AJŽ-MV/~;2 {˜Eg×ó!Éœ+VM“ Ó¼×É þ?˜æìéMàp¼a÷'ÜÈœFRLåñ, :Ë´3*õ~TjS‹+ÀàÉzaM‰ª0‘ —dÊ Èáš'ˆM{-—üuxÊ/¤Ù_ÀȶÚóŠ””ž~ ‚Ó+ ~Ñ@ùªJÑ_6Aºì/'ó¬+ZÄxgáâ/µ?*ŸÆÂ&@}È)ô«éßoÏ”¨œs@ÒlV/ì¥kQ{ú͘¢•ÈM*W+þ5º6bñ5!Ó#°±upeÛ9ŒàÍ#÷Ý>òF>—a%¢.{"€kîG?ÀÚE—‡zIV¥ÚƒØ½º(eUoÑŠöÈB…@4•ï§|³M“جÔ06Ëý+¨ä3t÷À¥eª_ºØª}MVÞJ3ïvQaöKã(CØ|o02Ö‘ȪP¯ôìú‹ÿ±¦äQ^!äbž>˜2:êPí¡³¤¦Íç;‚ÌEyä¼Tצ9R÷íãsH$u ŠM±U¡Kž‡ÚÓ+E4Ø—ù+å}«3…»këºb óÛˆ×WW5ŠgkσL IvÙhoáš—uÒLsÞfñ ¶¢bÿö@̺~…Fsú÷Y:“'POaØIÊý.˜n£ˆ3¤«|Œ‹í´H,Éq£îÝ­Ò'Ò´§ˆcÃL+žcRaGa¢.‚kœä\”¼Gc£µ“zæVÛ&eÃ)ÔÀœ—îˆJÄàŸѬvó™î0£àNØÜ"Kjö6ƒ~s,‚ðÏ’%l³N \‚Xç3ù’J+§¬ðob¾~áÓƒÝIEêœ$Gé5ta¬ÂüØá…;f—ŸT!È2ÿš QA&ØÏœ¤WýfÜï0 ãÆ0!¿¿Gˆ§åoe©ÂÀKï¯@Y3üeb]AV}áÿ¡mw7Ad6—ë›+O0™ñ“LÿR€‚M„ä—Õ¶Ùžr–]XpDn6â³îò|#,çÅæÿ$½ªôú%_ËÿñÐ va*6Šø(×-Ï…`ш”Cm°JYÑÿ†!‹ÇÕ@;¨êwªW]ÊBn¨ÈûfÏÃ"s%Lš¼]XÎð…¿âoìµÊOÉîܸñjÏÕÌ®·D ^C„ ×X\%Éwb*@%eû9hÓwa檣Ys=‹>„ˆæ5åN^Íí0Ÿ§à¤ã!4^Z $1á¶–2®ˆœËãÊñ–¥I’¢µã«Ø¨Õì6Üëú”íh¼#E}ãâI¨JHšºR¥€5)eÕ*ü0^êí~™ìëÂç= µöPïÛjðº÷eZ¸+DÆœ9léïlˆÖà&?¨£A  tšòZÒ1Æí{ëÐ’{ìI·STPãk¨øU2¤Uî¢uÈϾÝ5ú®6ÑÔÂÛ~[P¤´eÖ…]Å£ÿ„Œuúú+êndˆ$œ½øåQB ªÏÇ M/…‹JuòO|RÚ·\Að4üqñÌ™šRŸQJòe§ÚÅ[Íw‰6úµÿJáQ)_ÉOöc¹~É%¤L¯ÛiÆy7¶"që:õMUXÊ,¯º¼xíY®§{œY‡>ÅÍ„³­÷67I±ƒ¡Y`áV‘å8Ç 6ЈBV w1mÈöÀí­ñÕÂH÷˜âhKLe¸å’ŠU˜)#Ù«aGâNît.u† ‡÷ÌÅ y9Ê|ÆŽ[H !@^ -C[òÆ(=züÑPýØqq.±¹þÊÊ·ØÒÃÁ¥ó7ì‘Xä{”‘¿àò‚ÁdÖ­ì&Ž;•³ª.s‹Ð©3ÿkàå€[}ï¨ÀóÓ$ŠRC‘ÊŸÍS’Ë…ªû½8÷Óï³¼Q ‚¬LX§ƒµ,Ãå—RÕ,=G©J¨]‘×6Ä¿€p¯/t*_›hÉÐ!У6‡„/µÜ¢}·þ*VW¼r N*‰‹ñ&,Bf•òGO–T*Oub`§Ù7â6h‡¹´Œõªþ1ý\qMXÛFf—ðîn»d2§âµ“·ÍóðìÕ¹ä®'ý„hÎÙ ”IëC23T;íz\ ºÛ Ù ³VlPñ‘i€¬R¾;¦¦«€â›M£Í÷ß>öPœØ@Çñ·Š½ÛÏ£[ô+Qé´6[xÂÙëRŠu`ñîµ:ߺZboH­d*'lD;@ŽÇO[›â‡ªpIÈŹÿ]wüI³Öð+“‰•ã埫8‚_›uXÆ^ðm‘ñ ê=£t÷ê¾2|™`'›é{ÚË‚^E𺋞a\Ç¡€YOqð4¨º‰'˜<^¯N¢ð×,vÐ1ÄÛ ’±9~!âÐfP3À(¹w,e ûêÅî&ŠvoÏ/…ÜßfRbõ_¦çÛ©ä»T'5Üû…èªê›…éJÇc·"%íºM‰ñÓ²òXKX{m±j±E|¾Õ2ÌeÿL¨ŠlWÏ<²øz%¥Ð &Bf:Ú»³â’ 0­Zòui§±šPçÃ^¦1>䪕GÝ~JòO*éºyzÂKû3ÓL¸Õ=æ=Y?^°èJ›«ƒƒœv І/{ûø£=s Mè]¢SÏ»ÆW^__ŽÜDÚX¦ýëÖñ¶A ·XUÜË(7Þ Ïp‰®;(ùÐÁíùÝ„d‰òáUìÞÍŸ(Šx>Äfæ†+ï¸mJ#ŤÌ}á”èaSÌš"ôÄ6ù4WsŠnúž/ Ú¼ º7‘d¬œ†>ÏüñÌ bâVÌÏ?²U;¹¾ mf»6áú4øY¦oh‰êÓ6 Ú9¨ÂÙ`ë{á¢gÙ=õC‚|÷S='5¶@Ï_ŒG<ðí£Í %yAž3çEïøç¤~õ˜$OI£å+ÝD,P¶ôUñ4ÔWNA¸Hš¶ ›#=„m K.$Öשٻ{^Çf’¨_ŸÛÞ7kE!ƒÌ >øYæhÙØD<ø%«Ó“ß»;~Ûóu‚pZw‹6Ñv¶][CJŠ¢tÛÙZ(›ÃÍ &ÌNdw è;¡åp„ç5 ÑùnšŒõQ¥Ž0îxÁ)qËjaê*"†5aÇÒßÛ»8PPó.X>e¸& mb…¸ä#ú3s=™!#Oˆlly¿™Õå†ñ½!˜ô ¯+nG‚üƒ‘¼‡Ð‡^W¿ÝÓ„$}]°nùsÀ#z‹òù·u3 C~JcæßÁz7ÅÖÚ>ª8ÞÝ}s‚D~O¶ónµ G•Õõ²á¥(ÀÉŸAãÞF“7¾~"ðdâŸl<Ü6Ôá9CîÎj«ŠœOÛ°’ÿk«g‰QbØ®÷W¶ÒÝÚ'C/·1HoDA#ù§cA,m/IâyµºžW›’¶‹‡‰È’=áuKp¨×«­l‚hÓ$`û–Ž•®sþ›ÂÜ•é~5ÙS¶-tc­x 4ºœ+]¯>Ýv þê7©×+ŽvPÜ`jGy‡§aà’ÐjØ¿œV+sq´D[%GHB‰9Ä~­ÙºÍõ®+Ê‚^÷†cB Gø^"½WnoϳEñ‰bˆdw§öEm›Ds¿õq¸+š¥þöätåGœc_Ý4¼3d!'ØdV¢H­ÜÄ᤺l¥V—]Ÿ‘8çê„Û_l¹Yಞâ·[ÏÅ õ·Nþ`[[Ó5γ°%n"7‹óáæ\;;²¨4èÁŠhv Û'ˆׇçпñã µ™jn«‡ fP+þî…ÑŒQ0|T»y”d_i_„B×7Ñÿ .?)šÄrÈ‚ržÿ툀¥MeIt1^?ÃÂÈ žÅF¢ý@÷¼¨·¥Î£’´«zßÐhŸµóâGÈ[=ê BäJû¢ÆÚ`VmNWõ2~öót°™Ó¡ð4°$ÑH˜ÚDÞHŽI§>Bê‰ÑJäç^×Sô%o ’c )/ˆß¤¡ ò†vÓ®ÇËwÞ üTAM`¹8¸"@Bj ÑÁ¤IÅ dˆ‹H8ÿ]VúÚ [häl²‡IǼ•ËŽß0ÂóÈd¾[€ZÉDÝ,þuÝå¸(=‰!Dìl§,è¢='Á ]'bÅOä’ïu'>MB7¶áàMòíQø¢ƒ@•ŸéA¢)^”DJã9[Gx„‹ÜÞ¶€FYÔ™IÿIˆš°éú ÇG/ç[l·w¦Öìà¿r"ñßIW代шÜ?æêØ@‰Ñ?™ßXåÀ(”‘wö´$q(ªµýwÞ c²:GŽQŠ@în“"² pB-gÀ/U|]®Î…mOß~¼ 7sÅ¡ß,~¿9×Ù×MU¼¿¾ÔÿÁjD=gV^ וªÏ@h7–ôæÆª7@Pð“`‡%w©ŠîjyînR\\òÚË. ›PM ÷_Uc;ãÊÎ/o­µB^MÉÉå€ðÈu%Ãß]i…qûEºí„ȶ*ÅV(>_eÒ7^X8ƒ’I2¦$®üi¢Ea&5‚ xøu·Å´Ó ­&t©ñ q]P±!9an!¶;þ 76HÜåÏ—Š‡‚7ÉjO&„§0AEèf¾¤7,®”=pQöˆCL5•Ur0º[.ÌÕ†rÒ„‹ \ÅHú/JLÿþüF½4øÍCr›&[Òà 9ØÃ½P¥Èãr÷΄ 7ÔÆ*tK ¤oÒ¤Õ¡›98–¹æuši™Ýp¿ø~~¹O—MŠZHq‹ÒJ7n±Ÿ©³6eóÁÙ*ÍSZ&s±/Ñuhý‘w­mÈÅýÂSµìz’/[6±ÀKEJÄCé žÈS|æéXn!Ùþ£YF¥Õq 5­=l=¤#ôï#HjŒîÞÖ iœS8i£û~Ó¬¬Ø†ÏeóÎíý‡]³kÂn‰¤B!(>9²%ÒÍ ð`A†x6ÃÕtÔsxÏh-«ÿâÂ!þn”ÖYî. “—} pZ1*–Ž´ÍUð‘

ÜvIaønu›j`Û¼À mIŒFÝ°ÝØY§]HÂ.Ç%ãÐ=ĉóÄ9ÐËù?6±±9õ×U¨äêRL£,Çéžv)šÿÄñ)àŠ0÷qÄk†8 ìTxÆ‹ò”8üù‰b i¦Ñ7®g‘Œl+ì”éMbú€½ñVÓÞ»¤Ÿj¡„fl'lC‰OÿlÆ”Y!³¯Öz•)˜¶w•îÐfnÙ'Ch ëÅF‰LâsýuÃ#«>gå‡Ó.WûFÀíƒ,0r¾õŠ·º»çš±€ŽDz[¾I |x…Œ<ü»¢Zs¦ç]mUò“ ]!ÁLuY Côwƪä-vÍœ²=%y„†¾ü‡T[R•Åä3 4gelÍšËN]E} Ã% HÊVfPæ§„Çj]RJ³hð#gwûHþÁ¹Ãô"R“›ÎTß Ë —ì¯Ñ€Ébl•í¦\'oã{äw„õ?|.ñâÐUémÅm¢Ž÷v69j•ÖØðÜzq¼Zí³`”:M_'ç”n$ag ÚNã¶4‡ŒµV»Û`4Õ‹|¦×åUÐun;á©6)ºyáʪ÷'ÛÍmIi¶û,0DÔ$Döªb-Ù<H‰nf®ñ^ X€“ŠQùæœÒ^Jо|âÜ›”ÈX‡äHiInfeTA h<â#ä…†g§3¾$ÈHÅ©&†µ,j!, š6óSöš`Ûé ¥Ô‡©ß™s-‹×Ò©!´iæ»”«2‹nÚdrU-TUžÎD'ß Žzö“!g™à±dÓ×oh/Ô/@ûŠr~°‰?Ý•ÆÁ6¹œ0;OÚ‡¢×ñúVκuNóÇ}«?#2 ¡Púêkn1ž öwN®‡ç ©û˜SŒÜßìÑ—ø£û5ñSˆ_œg|„àÁøãô.ÊÍ1zim†Ìdž°Yb§aÒÓg«|úëä­Jd5㘸h`Íâ§µibµÂÛ°?+°žÂÑêû&Èñ; 8ª¼'|È…¡PŽ/K•òBýõÚçnñ:xG}a#¸–f”¶~‚¼Tܰ×jèwŸÑù6g±¡×JºJÏÂ+Y™C7"«ÒÏÌ(ômÖG©·Fd³çÜÆ¥O.ÄÄÉzÏS·¥W{ðÉ^ÃDc¢í›‡ãð9D%ù¦Û`Jsm fòˆù~j,!ù9íÀofÈ–tìzY*Õ°Üùz qM¨–{l&¬g% Î Ý.Ï3‡.´Ë .Xµ#Sa²#?¥¡'A-`K¶[Çì2ÏY]¶Y9'ÉAf¶ù ßbÚw‰6MhQE ‹<4o›èÓ¹ÀHxn~e½a€H\íyÄÇö-š«ì¯)ðê»Ë©"𰦽t]¾`ÏÉÕ·Ñ¢nÞ€dÏ.ú¦ÄgùOË>—þAî{_ž™í¼¡éH8èº=üm-"~PÒjp傦/ØÒÙ(€æ•[+$×툩¾tÚ8ù&).³½I˜¯Ö÷ÍaOfBp\Tß©ÿáw¬‚ÚpÓá…àÆ\n6³÷qNüÀ“UCµD‡Ù4¿ µмºþÿhÞEü›À¥"ðš.?±8B+Ñâ18ºû‚>…Oy%¡R…WÿfÈÅ f-W9IKB§(;ÍÆoÊÓù¨Ž@Ý4Ec6t8X=Ò=âÞÎ7T…1<Ð[¹.ÑÃl¶Ñ ª;N!Ú|óÐùÁ´œÞùu±©¤z…Ì<8ªhÔšöŒ\$T#p|‡Ècû/=_×™öê¹ë „ÀëœùKá3q4Šæ “èìw€jáÒèD›‰ »<ÆÏÑU#ËÇéG{¯õ ä²¿/ùÀ+ñfÏ€—¸Ü¹Ž|O¨€R½¦²ÖÇL †€¹ýºq÷i¬¡€¬2˜»?&­ûWó0Î={°ËÄÐÊì¤dñ£Ç‚.Fn£Gv8ït­˜´@ª1eµaÆ,ý³Ms‘ú@)Lî^W*PÎl¸®b/+ècÇ–;”(rûS±$|ƒ-àÜ»,2-Ö:±êu ê~€0I¿D–BUDÛðk~B$9àÌ5¼ø¢)0³üpÝ4ê!J"Œ"U™ ~ý"î|HOF¯ŸT-«`xÄÙ‰¦Q¢Ü mïTÞ-LD4øvþÁž[ž‘4±Ps ¥§ìöðDö¼21òPè¸tÈðÞ¥•ëmgŸG÷ù+ÆÙ4­Ìoû›2ì(A—‹h‡/‡5†6òåöŒw±[v•L 2aÁåÊc½[ ÇõåökÃ×j¬ÕTŵ’ªÀKõåî»OŽ5÷#4O“QóóWïÊTo×\ãy缸Üó?ÜÕá&‡R@Ê»óKëA_„'Š&ƒ€øîl`ÓÙMæ<ËöîóÝÆ•(b Êœ "óЦ†;…Ú§ÙC¥1 RK|b+ ¢z¼×[Éë M™@èÉz\åšÎÆsÿ'çÕsÞ°zèéÆÅç¶&I0ÖÚ:”c “õ%(â¤<#¡Í§Aœ3*[`v|×Tºçh‡£§ºBIâù¨÷àv”gÁRõˆÚY²Ræ~X°C¼Ê…M]ýïØÏ‹28 ×±N2«){'îdÊݤí{FC/Oé£S4UÙÃ×<çQ®œó;ûm:‘ý‹ÝÔVGØÑ]ø¯fyÝÏ-‹ÇͯâÂs—zHcy•”rq¾i+¼½I ñŸ¶Å¡P¼ÞtTާj°s6–É:íïj¼ MØäã„‹aS  CÑúÉôGURï5áù‰å]Òwj;ѰQ+æÈ_æ¡#ü]³*@†±èI>€¬Ý+$a—ðJüodHNBÔA ÀçðCCnÊ~k_¼.…×ûU_•õL‡n6_Êsþ¥2Δ|Ö c´9ê[­ʸ¯6eÎÂM”ÔfJ“–É%t{ÙjÇî5þôõ•wÑ)kÈ–TB³ˆ§}ü˜`LKL7fÚÞ~ÕŒT1p`’ϯf ÷Ô¨÷´ìipI"j/Íñ/$¸€C×Þ©±67,¿žîånÖ¢?4¦z"ØyðkŒ?~Œ.ÍpÅ! RN¯ì9¶]?ƒEX߆OED£ÝƒíÚ¾l !—߲洣–¾ D5M¤rè>‘ÃÿÕŸ´”fCF½üÀòªaºáe®#«f|¿‡©I¨ôñS_ÛòN!õ§·7°¢Pþü[òt°ÜHcŠ ~v·ÀwÝ `µv˜°I¼ÁÑ!&©Ì´nêëÑw¬¹(G#®=ŽM]+…"8“CÕ,jH²us²ž‚m¡gÄð£å¯Á”l7a2|6û|tzhãøÕ4¤»YÏw cdLq’¬U:óë“N82ÎW0›»Ð6ݼ…Ž,@F¼Û¥Ù®á‹Aon€˜øâžÍ{$‰yHÖ² #ÁmwZEVðm§fºúO#Ï6Œäêûdž^õÎÅiÄëfŲ±ØUô§¢ª¸ØxxHÝîJ1?F2vùEç5j~‚Šd- © lµ“[–ßs¥â}|ä(,"«×uzô¶íÄêššxÁè5D¼*(o@7½>7Ó0i÷矻ð¨“.dúØñÕzOâÞ'ÀPÜ"buÌm{:oËÖD»HûZ÷>¿e•N"ý@aØ=ŠŠ-+}{´P¯Dø®›a0ÊÉDz8íÙ¼€ ¡Þ8}^VUêòšqß•á·Ü‰\$¨ ¬àK˘ñv]ø£¶j÷î@ì¾:[^õe|GªK=`Ÿ8 ‰O‹œ²¹o)ç ÒDŒ0·ø¯/û{Hf.vp]+ú¦¤””ë6u:À ƒ›TDí|3Þˆ—œÙux–uÛVÖÒàRÝêo®DØàsöÊê¹P,’@Ö:†Û-A=v#<õªb¥ç«‡6A#ñ+Æ"æ_®9éM$¿Æºˆ¶”çS|[G"À £&­¯¥ôÜÁ¾ ZÏ7ü€…·" IWU]N/gï‰<8¦¼=u…Á9JCmô üz‰^sî ¹´tw(`.A 0Pˆêî9»lcÛô"Þ€åËݸžW¥¦¸9YP糟Áî䯻 r€< ­ÌÐØMYÖ“Jœ _”b‚“¨aÃýö>â½[*Cã ñwGW=Íd»“5™[Láìa®1¶ê]^òV ÛD®DÖ¿¨Â²¶2ímðdwÕHï¡þÎ5™‘÷33uÛ”õU)Ë™§G“iîâ.ýƒVcRÃÚž”ráY'±"ÉTíå%teá¿õeç¨L ÁÈtLŠÍǦR›ÆÞÃò<ï\«±®p!Íä”È%·-9Å9íAÄUÛάbí)AýÀ ²8ÌÿÒÎÐ_°?R²q/$UÖð&Ù¡WÀ?h3•ŽÄÒwHU:j óîК*˜‚¢*¿Oî|…½|-ˇý•Âìíùuγ> Çã*í0£1ÍAˆoèƒ$¯6¬ üß…¹ã—³ÐzXÅf"ÑþŠ|’ ‰ @~¶¦” Z€Ú hé·g’zÞËSð o RD¾ô^¤WZ¾£6[-‚jöÉ$+M_¥ÿO@¯~ùÜ”%ªU_÷ôU žãš¡×ö—n˜zùÎ_›ËîI`þ-ŽÑIæÕ~GÝ@K®«ýÍEÈj†dCI1€¡îÖÌ‚ú÷8jéå„{ý%Ì* G:Ëÿ"˜c=+„K5ef¹FÈá{لƧžîyê²sFVcWs@lÚxÄL‡+Àv}{è‚[ W<¥Æ³JEu(õ>)É.¿£'ûR~ çqÿQÜËXð5R3.¢³f>ebHÐvŽ÷›ÓîHñË”ÞzOHܬمô³²E²ßV L«×Gf:g{ !‚p´|{»·jzáÆ¯(3òùzâ1t%zÿRSi9l)Mª˜”eJbg ΞiVh^RÁD¼÷.Tqí.y„É÷ÂLék²8"«k+oÿÄk;Ìl¨Çãçp‰û[e=öæýªH@+@©pGmu¹„dwq +ÍáJø'ýÐQy…dÍiÃo¶Ð­ö…‹ÈüØêEQø‹И㲶Ó;œ”•Kxâ}Ã"Íó&°ïƒ+òëßúRúµU@8¿ìš&\çÁ½Ü”xx#EbULì”ÐSp¡]!ï”ír|߯ }…Ç­k"â}}%J„®WTö©9éËHú¼ëC¹[ßg¯Î—óÁró/¿ªñƒ•]‰‘ ç§I”ßWÄPõ1Þ1î:Â~`UÙZêQŸ#Oêb8Ö¸à곟Bã³:xìãKu“  n"c‹:íj>ElQ'”N˜o/·‰¿‘&e30¨  $·7Ö È#:þô¥á\Ë{46JaKˆg˜¡ék­—¶µ ’/%p7Çà³îa«¢SN ~®ªYIÿŸ£Ú!ú2¿ Ó9”¤l±æ¾4ô…¬©u jD=ÖVšh ºå¥.[Ëþz–u:õžÒ× ×¶\Ò1à•Z/&Z™xbe–y‰yYDÄ ¿†zϹÍìžóvŸ@ñ·&h§8rtÁD'­2ÕŸ¶ Sö ,×bÅwÙPÖ“G¤’5;Š|+—‰ýÄU“iw ñöq÷ß÷(\5u}‘Œ’¾[žO;¥C4È ”Ú©auZrí¯¸uz£@Ð~i+°–­ =ˆû€¥ˆ¯Ôa1žÉ×€úþø–`ˆE­Ûžsz™¯U yR‡ ƒ- Ž8ÛØ û»ûì—£×¢+ìXsDzȌ`BÂiŸÏÊÖãO^üKCóh cW;—¢Ž }Ö‹£ÛÕ—8iÐúÄXJ”AJÓ'KÌm^kUSPÝÙ]‘6RÎHÓUH°+åÄ™Ìßí^.w>Uêf†ëä\‰ážl˜óK?ÈSóÉ/–¯i’±ñ?Fû² Ö¿ùoãïú û„ü¶o±—7ËD +ˆ2óBÑu‘ÐÇh;¨¦vØØ'}v†Ñ5Gp^4…l·%u#&?¥0èìÁûcéÉO¤ºKÛ]XÔÞœ$C%-Z3@> ¥R7j–è‚û,ç#ï\ÈD^ËÍYŽMB}0Ʀ«Î =½WÝßïj½Ež<¹qE\o™ë×:ëPØŽ=4˜yм4YFíÙÁ­f¤E ­,Žd;ŽäQq—š´ó3·¸"†åä̶¬t—Å…ÐâÛÑ+eªþÕ.<“tì»ÔÖ/ÞôžõuWdŠ9¤áÚÒ€YsÏv¨¡ ‘­×êáUuõ~ΣPË-¬¯%i.¥¨®gßõ.[à÷—šY°Ø¸DäØm;¬ýÞŽ¯ÉœM°ˆðÁõȬ+Î6 ß¿‹8p5W™eæº0L* +0ÛF2¬  ¶übÜv—ì'Lc* éø/9/RŽlë!4^ã¼n¶Õð‚æ 1,UZ ŽMìÜ„ìÁ*j^Âð’½®‹UΦðly±;˜É9Á)o8+•qîNNþvl2I‡Ã.”ª ”ÚÀqÄ"Ö\ðTôÉŠ…18«Eh=}­ ™Ìl—R»aÝÊ D²y‹õ ¸åÓîX}‡·sÛlp›sg§³Å¨ôxÒôU1Ë~À“}¦¥za›Ž àó<ÈÝôDÛ?GÃ7aN§R¯9‘1"=x&®jÚpí"ŒUŠ‘ßl5mUå5³¦ä*\€°×áËÎÑè‹­Yë,»ÇBƒ7«$*k2ìT»„WKx°6›Ó¹ŽÆÑq”¹æWò$m7ú…×Ù BkR^o£ÞoQÛøu¹äôYØGÝJx ¯öÆYÏ*vcQ ûfþ@=3æSWš™kÇtEø”V3õ3Õ8ÑÞ0xõ ÷œÍìÂ×ǣˡS‹ôœtcK Jo ¥å¢àSt« ŠæÌ CÁf{û4)YX.ØšZ+Wq@ÑÌÆgÿ¶@ Á^VîËáJ8ÈÇ–º/áeIÖ8MDmÑêŽÇjBB{ÛSã ±Åø¦&ÀÌÓb¨tOõ ù‡K6²^Žõ²aåsrQaIƒï¤Ž„ÏØ~ùLĵ`‚X8ga\†‡Q¥˜|ÉN]%?‡±òìÅÌé×vÑ›©füT:Qþh„œ|]—¯€ ¢áÄvŸt¹©a}V\ðô©·ƒñÌQŽÒe0îôçår96É„w›=…‹ŸâO‹í˜CM¥ÃõïµÓñ2{UèœG«¾•œƒêûÖµo’VÕ·ŸÆçübÙ/%ßô½ ‹OCÅ©¡íñA_S1R÷ÎÕ›t%½’É>X¿Z¥Ë;gÖD1ÄÕ¨†ÚÃ.~ ¹Þ‹I*¼ÿ±ŒW]\ö9¦R©ÑÛìú[›…4¹™°ö˜kß2¥ölª¾ë Ñ´¢ã-ñvOJùUûVÕt~‡|¯l(ÑZÏà}ŸŒ(&ùÉ2’­SÅŠ4‹““ ¡q;HCWYj@B·¯q:€Ø×Ð:/„ûyA/7ð^àN~Ü®[ ð¥ÄtÍ:òÍEMf:HTg•¶6½Â—]rÀCi¸Ù¹X˜Ž‚³9Ñj§` Blz׿–Æóbªö{uæþ ”ì0FΫ£Ê˜ös}ì \Ä>*EÒ›…¥ÿF×k~üCgö.¦±¤žÇˆáT€Ð¿PØ¿¸0¡'ËÌá”A£6B&’ÓPÍiëY|d–æüÎ}!®c~3(“Õž; úê– ¹ðŽWÒIéH\³m³&;‘²C5•í÷R %?¬îfÿ'Žë¼öwÓœ*’lòž÷HÒ?XPöƒØ”¶û—Rê·v“úþï-—”¡ãçú$5Ü;›bhnîn@â ©¤,Tæ2NqèœÜe™‡\£AæÞ#ØyŠO.œÉs­ð§[ÛTI/Ì„.‚-§;áKÒu°4ZqÁúÞ€•&{h­ÕÇ:«5#Q29iTÝ“pÊÔÙ̉6›°ÉŽñÀâÿ;•z@¯­í3á]y—KÅn#ÔZ›ï†ÇòöïÓ)2/ã|$a­„­è^{ì:µ}oL§E,ToxeÇ’æÓɯpû£äë2§ÂõÚü0rܽþÇ  {-sn«‡Á×7à†oü+RÊÇrp‰qå?ÅŽ]¤SŠpzºwEÊÄ‚25xã©|(íshˆ¬b»_4»¦Ã,¬¬…ã"S؉,:z¨ n}VKKàÖXG¾Ì0<ÔÓç{d¢Eº¹a O’Áu;9Hà¦bB¤`½ÆôŸé„ûYÌŒ ³4²=M¿jÆ9EiÇæ'_ô»žï© Ù zu¦ü×sß?0&u8¼ƒ¸Ȉº?oyÓmêåö 7Ó;ŒvÓ+JÀêYØ! ØA8]ŸŠFG½«‰‡šŸj‘VŸxŒ‘;¡ìÊ’=sظÙÕvïÈPç<”~cýÁ­±Gº£1¢)¢» x o«\˜‚ýUü=ƒçÖ8ĉ¡E–O_PùÂÃÅeIÅcºŸë•@[v&ÿSt«wOR¨ëþµåò CÃJ¡>'À¦Ò5<¹£'K¢<âeóU…©þYIs·ÔÓÆrðÓä'~s' ÍêÍïï åÆ:gq™Qœn×ŌÂÖ‡îÔ,ަ[ß,HVÝ“é§øpPItRDyã>E㥯·©è{/é2ôãJ>gúýÏñ›ËçÄ×m‘o <öz/öÑm0•­ØçQòaï\Z:\—cYAoÜ6`Ǥ.º@VEۨƶU6Öê,™;ä…Ó–ü¯Aáôul×'”W8ì`aŸè/Õq,¸·E]ù î92éè¥Ëu òûtØÃ ¼äŸ½2°æúR†Ñ`qíR¯U:؃V5 ™Ùx|XØaÝu‚)ÿÖ Ð<% –† öÒ¾k|oL†OPI$ÁQM÷‡{-[eEäžÃ¿å¬xôf%ð!Þ|\ª[õœˆPøÍŠMëØ~šqn‰žÜZÚ4Ê2ˆ£ r”:6ÊY5D1¶Å“8äxÍ_Íßì5÷òоkK{šÎf ¹8mÚÊÝò ñ‰á[Q1¥N»óÄꦫû`¤ÂC2çQ+WÕmõL-»yÿÆ(ƨx$zâ§bs‘‰ªikf¾«ûaë̓Ö:XRfЙýy@k¬Ítø >p‘ÖìÞÏ’é£ß¥îFqÃ++·l@A¦Ep² Í‘r‹ÆËÅ•AÉ£i’ʳg²âµ"A§5C0Ùbxi fŠ~pzÐc‘1±Ô16§%Á— ÜcÖo!˜f½úuÿ;Ò(nÏ5ÛDûvg”n‹r|ýõÇÔç‹óÞˆéµØ\š¹Ö)« !&(„°wÓ‰øáù7GÒÅ Dr}нjà]ƒ‡+0¢Wª‡»Ì²ïê¶Û·^¶{†ðŒªWÞÿ¬ †ŒBU}oÒMO õÛÔ¶Oô|ýÕµ@H»h;Øq7IÈ™9K' ¤×«LàÕŸÅïkuB&|¬#ÒzmÅI–cw3룥rj—Šï8i@ni>xÿv$Aâîê Oã=áG²ôaÐÝä3KS>‹`ϳjP./\ùŠrޮա¹·ÉÀûÄ 'ºß6;û ßb’ù€—núõô¿0ղU»n\/t®cqs:1"eJ˜IÊðòÔ›0ˆ¹påÿ"-=<ËN‚Êë¿$y¯*‘ðmuŽkU(´Ws»êËRÄÊKjÇ}ÓŽ3ðâ$mæP¯æÇâèKv[Õl|~mº—£ì ͦ×_M£¥=„U²lºHµà9ø»ê9ÐÃQÕštk]KFi V²^»’î.V®Ù#4=Ø¡ŽgVrà%„­Î¸³åùp4¶j¯còolqŠØúRªî§–MÚL:¦[/Fæ@=ªÐ]×&¢ .,° D1n‡Ù¼yÝ…µlÑ×óÂU²iô¼T]gÅðä?ó0¸ÒEƒŠÆyØUì±Ë8E6â#&Ú)xÓÑéÍV?™Ùf_oy ™,ÙO46ƒú4Aj8ãSl°suœ}н¥x9“´Áà$VjÉÏOhåÇGQ9N¢¿ˆÓMâò‰Á YWˆž? ¿^µšt÷ù“œ˜óÜôâü+›ë$³¾mZÀþîb'´œ'Y¦7àú[ãœM¢~–ÖTÑ €NœßãdG{û.š¢À»¿¶ò¬ÐÛ“$÷ßÜg"‡þÒ£vÎö‹OõN”M Ðv§ËÒð†5QøHúÓ1KtW&/Cž±§-€#¥Q$;Éó1ÈC¥dÇ^1f$wT-ÜèliȇÀ:U‰ xÙ´éeŒ;Ë1„©JÛà” ÝÝ+ï¢{VJ:A¶ÖZÁ€‚Ö` 61­®ÝíV1…Vàc^þµ#7·b…^ÆáN:üRZeÓÀJ<ýËÒ[Á\Bâäh¶5¸˜±qÝ­Êÿš^¼¨±Nwùy"ÞI‘¡Ý1¢Â(D\¤h(«ñ:¸AÂÃEËÎvÉKYƒ£8jFÊX3ì—uk¹É&™Wì=ͬü‚=G€,n®| <ÝWî|ªøžÚ.&—òUÆlð´ÕÏAê\7×KlÁmè\vjp±¨‚^íi;Õb-e°¼'hnYef2eñˆn´=ŸXÌj»! xðbEyqÞ KîÂUžýó-.úi0†Ã›[ã›lj‡ºî¥bÒ¶¹Ï¼ï¼ªg€Ÿô£ý¸nŸ5DÛøpuQ’ê„ `%YÇüÔ†‘ $Ä& µ=^Ÿþ•÷À ÊOÖëíÕ>sÑ£X®Ýœ¥}¯"„Ê­7µ^…‘ó¹KìÇk¡qxÒ_Ìg®Ø0‚2p¾]™ òóX<¶ :{…áYQR®A˜òèˆphcÔxë‰gS=ð¼›65y,ªÓb+‚T&bcaÐö$Ž+j0·PÕœ¨Ã¨jüƒK à å臾Yüžü$êÅLS:£„]üç5’ 1¤?kÁt¿†ì¼ömïÀg¤Ûø¿ªH¾ªåÐpÔkš±ß7>Ù“òí¾|8â‘åÅìBãÐEür/Z¶ê,{—vXÚÐ…dÉÎçÿ§ç–Ö!èzòèVe”ýHNl½ m®H‹¸R÷õç}g›!*ô.Cf ç †Ökëúãl.O^Ë!bo`€jeüã:=®«ü§Ýžj=Rú‡VBú9‹†¯ oîA—>QòºYê´0=!ç¼Uî_ÎÙ§,™4ˆÖðr„/À¿H)&³Ô(.}(‚›-p…µ>{÷h”×8ÃÅCGvÑ/6¸æ(Gk™XaK³N]ô‘ì×Tqb>Âú»<…Þú”kþû¸<¼³“QË•h²FÙÛ%«íó(¡¦Pã‡È]‡‚•üe}-bz2+‹žëLÄÔa¦wb•!>ð4JÃÛÅC„‡ÑÄT°Á@±õªâ©‡â껥P¨CDèùdœR¢@ž°µ–ú Á`2¢}@ý–³‡ ãûlŒ¹HxÈߺ°ØDÅc™1zÞRÀl|ÒAWŸõÿ4Ì]Þéœeoj /ô¯lT_Ö£DØOâþ/:¢ã—¥u í9LmZüXÂñ‚¼úÁצÿÜØ•-T(èi9%ÕÒ^RÎ6N\8ðt›h¥Œ…£ Ùá°V¡ª†´ÕüUeçÆæÂ*hÏ Œ»øiΜ<7 ÄÐE}wfèšQb†ÊC·dG8ûàOÝìR+½˜õsÍBŽñ“Ql¦”òUT3]ÅPY!úîš@ø¾'Æ5\^AYVëmnü½íµÕ§g?®¾n,;ýÞCw<¸ãiû‚É]:M‚ Pë[cÝ°Åøí{þÃSwH1õz>L¼Z„ur ÷è}°"#wÁ\yŸñÙ[LÊ–Hž)<=%8âÙÆVQ²Y,H®²N½6"6/1.‹òÀ7âAAx@šì™'¨ºŽñÀ(’2ž3ëêO,n2)j¶Xé"$Ã)XTna-ª¶fÐ+ˆpýöœBžåh«kQC r Ç3Ä"~‘ö \}¨4pÙëz²ÀùÊ+$›Ûú&B¯s•V\q‡Äz{[gípíE*ÙºÆÏ5>î¡läbzŸˆ_ÿr(w:úÁÎô“Ÿ™–¾Œ3öÌù„gΊ ‰]$·‰0`§’шOTÐ’7À(ªW$EcbsU3&ˆ*²ðA,:H>Ï Aºe<„#ó-[ÅVî5âáNÇëcšñ:1!ÙlÉ]Aò:ÇVOßå ·‘â Ä_n)àšÊ\H"0MºˆYϰ­OUÌsq×¹SÀ5$¢ï_Ü*ë=(Â08,ëeMlÞ$¯·9†ƒ¯éAIµQyU zƒXoÌ~˜9!«ÆB0mGwaìï˜ïnèt(®¥†üM²ªä6éÝÕ—äšÉ ô ,øŸñ÷ƒZÃŽN“!G¼Ôs½-ÝÌO’ž±ø¡#C T’O¢=ñ»_{9B¹¶e™G(¿~2Ñ¿£”jhôå¿õx˜Dsë`BmYy•;¥X|Ñjà×rTŒî±°:WÈò&½¥3Vñ¸ê¡˜¼§6gAã|Ù“¦7/xo®Ü‘7(6O¨—â]b¹þLêCKxx®²æ!û>OaÛ¶{–£ƒW8Ò¤ƒç&Ë#îêèD‘šïÃ78_ÑýûR!âÄ‹qŸ’ˆ\sÿRjÚggXÐ)•–å<µ±»¡´a‘Ž»3FÕ—U7Ö„òXåÐÃza¯É¥Ý\Σ ‰**Ó<ýWŒ8k¹ÜL›6!l`³m +g0„c>×WWm—x(½ü'œ¦:níqÝd,#k©m£*–„D‰Lð?\6Z¬qÄkÔ‰ãVQH­ÇrÑ;âÈÞü„·¯Ã•÷±]I râ¢F«=m¹§ÙÞOX*Q9[ñ-€?Æ]Øk©Q½s*È^nº¼õw(„YXH½þ"7ײ-Z¨ÇŸ½UjöJ’<â…õ[Ù8æx·îh¦†(Ýj˜^¦Ï º×Ê#‹88w 1á¶l¡4p·+ UTps‡ª«¢'@Z` ÁKob¼5×T© r±4öôQJ ¿´då] ÃzBÝ\¡~ìv÷úâ,‚4M¬´ï²/¤@û‡ ç_õÌÖSæÍK‰Ümåâ•ÆG™Õ„T‚7´gÍò%£»®ªØ™v.Ö,¶÷¸¡:'ÜûY´N¯$²VÍ ƒœhB·¶á¯R oZÄ2@„P’³œôºlènòÍÇx§-w¸Zé#H)5¾¬isy›ÏWGüŠHN—ÒîÒÚ8( ά•…`4V7BRü -˜xAFŽàø9ÌM}Ò¾S`÷Ár€Lýã¿SB–ô7Bñ?B ?k!Ëü)z½Ù7ëüRü;Ø!i„&ªíê{ñ•)[}[àåß¾fé˜3CŸ©ò¿6»9w±ƒW@õͤŸÆÅ™à¡U³Û¨ûªŽÎf_™?·/8_}Þ–5×Þ 5&û aÿB\}w.7y¿:LÑX¤á<§.‹°¦ß>–ë{ñ |t™•aÑ­¤æï ÷£Är;xïý,¶ˆ'ºZ¥­”ÒgÓºÅ! 6nªE+é´í¥P¤¥ë={-õìùðo-@÷‹]; ÉJìNMãUÐO­xs”ߎXÔ"Œ¶x5¶Ày¬Ø®rîõZ7†‚YÞÂëÜÒÐΘÊcÊAfð‚"½«…αêõ´§×èúígÎE‚„¤-ÝSË(yÌCâuqT–y_fH3ÑF/½ënoå„Û$l»g¦:íûnyLVkü÷lxÿƒô…=Zc­lSôJéï.ØÄ8Ã…ø÷Õã g¯‡qU0i~'ÁÅ]Zôå@<,q¿4û^:ŸË;ì¶à¡0WóšËÈ yô›"ܨÒï•ìñjŒ ܼê )•X¤Pq÷@Ÿ‚ýû!o›ùý3¿w-ÃP8 ž¸ŸþJ@þ,60ê -L_˜0$8ÔE7 Õ>npýbYcÙ,DWáNòÓ¥æSJ÷ßè ²Àb¹i<‹yÙ¤-¸£`3Ö ÷Çî5î~iZWŒƒƒÂ’©ø4…ø †0 t”Ÿ0êƒpÞ+Yù˜”1Þ>pݶ"áUÝ€³síU‰ä¡âÇÉØ»ylI!JQŹ£çT¥ã)(ËXîïo¹2ʦî¥íȰÚS« ‡øeoèa;ª¾WX°ïô$XS¾þªnZ¡³ÜO_Ý ½m–Ú|YÒbd¶öÝ`y>§õFûnb^ž¡†³ÍfÜÿhPÏäšæ¹¸Ï\Уãj=–K “uË!ωŠ_–èC@Ъ} ©*vºÁkø±æmç ”Iëë€{»e*6e.ýC“Â×UÇ8ç"»ØoÝ©CÂØ3\ A’§S¢0')dzo˜6uIÒõL‚Bç’öÇlÖºiÃmìÔ€”AÚï'ðf Uöq ‰¾Æ¹Àìµ¹ŸÛ‘˜ÀwÈ4è!þ²Ò"ºÆ•2( wË•öø©¨42^&Óá0Ýû t2AtÍánðf‹ì¦K–RGø­¼ÇÔ‹£¯—¥IÈž£rð“kªŽh¶6 o zE¹{ ”Pa=ÒD;ûÔɰp¸„—èŒMÍ4Z½¬w ÜZþ('Tè°SÊg©ƒÃu?ð³+€÷äö\¢0bHé)e¶f ó„ %þ@s¶áXñ…3Ý\dª.Ìñ¦`µŒKÔôTè ·B× ysеVŠ@’¢(yî 3BTâ”4‹"Ýï§ÿF¬dO²F¯ZûJôõdêÍ'ë_ÅX´ïν¥ª¸óJ)àxp³$¨ç²ùºðìÊŠóÅÓ&i½/J24®ÊpG>7ca‘)7½Ôu:íqÀ¦)àºô) xÆõ?^ ÁÞ6q)Ýq™ÈƒÖÔ\° ̸ö#KƒwË­u®G“iGz2¦Zð K·É޽&©@|³æðVÕ7 ª%ùÂ=>¼Ê²30@ÀVã÷ÎÖ?ÂðÉL °W_ «ÑÀìÚÙJnU2÷į<ó‚Øh y  F]ú¤-ÚÌâ_ðqÛ ·ÉËíÆNU%–zÓSo8y ¤´U4uôµdÝ$[ÁÜJŠ9kE^>‡*c¥y±~Ù›ÜÃsWȆûU=¬Øÿt•Ó#œ˜â† ™(éùJ…TR(Ô—ø-a"9‰¢”±»vÈ Ë [J’dð1TQ„É‹ ºpV¯kª cŠ£³ù„*L­ùÕî†ËÍnYÏKì’!«Zmwúò„AäU¶ôFA³Íù¾ÿ îÀez$aŠÏ Ç~ÂqÐL«RŠ÷§Ö£QÜI*#ÏŸ™Ù­*B•¤ƒìyX[æ+g-¸ò÷H ªê“bÛ2®¬:ìJÇ*q Ù%ÒI'oòü’Ù«F«zZàE2ª°ýÆT‚L ¼SL"{‹èP}¦P{¨pæïdò“uf­(ohÃåa‡c¤ÒL £J$6¹ñJãöí·ˆÚEýòF ŒäÁ}dáïçcì7Ι©DRþ ‘lÏîZ UÑS}œ 'Fà×hg„ï’ oœrŸS—»;Èûú(pá.Òô(:üãËXþ—¦6w[maYì”À2œ8!ìVùÆÄ~Q³ –Ítt'³ cûS /Ñ\û ¹pÂÀ–u>-€î]Ä ¦I…Óf®ÉIsDƒ‡{x?$¾†-Že\~” ŸÃéàWµÙ¬&j#í&”Äö7Ðèåz¶T¸‘™¾gÓo,ç Yú¢áC'V|iôí|ªÊ1ë‰å7¸3˜Õê™—8’[½%þè9ÁŒ®:P;½Óu='øÙVp¼ÿà2=¹¥Ó¨K…§zª(º±†›CÝ•ø‚dqù•Ù• 5CÏþ±ã(ëC†õèâÌ_sžQ2(E«Y~Ò÷‡ôGñEàKç9ׯHÃÊ÷d¢™!ézÚÜ. “¼Zx[L㛿à,/GЉó‘§•`©²—î)ÑŠÎ{s¬ÖP>;öºSIƒi³ÝÁD°à“Q¯ÓY7)·ïõiÌX–aÔ¿£‡¸y'xÖUÇÒ .5‹kìGx‘WIôÑ kê[…Ú¯]Þ†\˜‰õƒ½ü½Ž~¹˜”%†' M¼.3»ŒÏµÿ¨úòPuò¯¿Ð‘ûÑŒ’â]1×Î9WbW€Tü<“v& “ÚN<ËÑš½”>‚ðÔ¹¹ä]µ?…ùèû7½\[0]D„üÃé2óä zNm¢7HæBéÔT—Mh5W Qãp§rñ0i/m:܆6X¾¥"h*½]ï/Krž ¯Tsœ†nU¢ÈÅs„° ÑíòP@‹&x•÷JÒi¡ˆo Í$À Ã)ç’ô}?WDUBÄ傎lWƒ‘çsRk³ZÁ´Bœ -ŒòÍÃþÕÝŒZg‹KPqVºÚ‹TÕfT±UŠ}y…‚7PhM4YKý®Åö­hJ¥½‚`жñÓ»ëÖDKò`~Çõ<çS6@føK”¢vˆô{ó9’-x~\Ò^‚ú’ºÝLÙÞÛÄõ 2$r êb{‰jt£·2³&ž=EyèEÚ<¥W襦iÕ÷^Ç„¬¹b_uækeØÙ ¥Ÿþc×@Îgw.¤BÈ?ösRÙ$ˆF÷»ÿJ0ââââ­5Ãdbìs£QÅ4`‘v{>îÇáßz®4É~Þq1õeÐÎ9gmU”½:osïmê`p؈G~¡™¼£E¨óê*•µR‚umé´k  óa…\|C¹H˜¾¾$ô$ŒhEñ<án•™|/NG€ƒÄ€šv*7þž0¾Ûpžð8´'S¿c•5²¶-¢ÀÆSö@y0Yqžs#Èi+²¼•˜Jæx¼mõ×uN“W|€-ּ̪òŠ&̬’ÊQ×ÂKéá æhB ¯óÔpf+€«2ˆ±5 îÁEA¦+ÔÒ.w¾qÔÙ…~ã ~E&!êé ~8«qת¹ð «ÄÕÜ|äå 4ã‰e4&Ñ(f„9ï½áÍ)]†z÷|ÞtÆ'´±µvrœêƒ‹ù‰·Ž´{^ŒÓyмbY…Iz;ìֺ׿Á×gè„6š¼Yb—wâUf%xS 7¨|¥ý)Y¬Èßü±v#e?U6fÑåBjiîÝâ_d| j{Ì‹•tù«k DÆ´k’x…zx¡<A†À~ÑÄ $~%Ñc…ˆ+ð-–FÚüžy\GSÿJ›ªR~;ûM[ÏCñUÄH§rý¦þ$Nfpx†Vùœ€²De—¤ÎH9µ°î"¢ÀÒi¥¤öŸ`Äÿ¼›XѦѶđÞÓœ>©dû–ýÉL•B0X{%ø5$¦]êði©—‹Ê¿°¶; z./F9k¢´z³{lÒ¾l—BœZs—ã ^ëƒ-õ\Ö…k¾ä ˆÌÂ6;RKÅx°tóH–¯$O ¤d%[þ bĘ`ïy±ˆÿVkÆr­Ñòއy«E#eúGmÜ~$"αI/®'^•0V{Œ5m–œ ¨ÀOââBÀã6–ÀfÿÝ- Ô°ã[¿e²üIKås\‹¿¥lö¿éì ×ß²dR]CYT.+`¦õ„Gª?„ÁK@™†ÕŽQ¦/ë+ÙÄÈÅP¬Ü%1é{BY‘­ð4ôËíéÏ}eaØáÂR†û9ì…§O£bœ’p)Ä'éPÓû™;÷M«kægJ© Úï6{Ô mQݧþnàìì=38_2lqÞ@öŸO™X¤ýnÇáö©§­ËÉ­›‰óð$0ý¹î¯‚Ò,éT½¦ÉâOvî³ÖDâÉ…·÷z¦âºðþRâ:’„¨XǸv4^mì Ëg"·ÓÃHtè#DcF¶ ?Jc ?’s¾îä0g(¡Ï±XGÕ•mˆÈÙZ¾±rmƒh5Ö$ò3ðÍÝcY´ ã^­e 0ÙB*I³ZpÅÝ…nw\ S½ü£aÝ©$L€ÜCœê1Ãu¹8'Ãvœ‘Ë g+*ˆ]*¿q7£ðƒÏËôXN?àâ%^Xoo@Q{4|>‚¬•ž3¸a¿·Ú¿ê]b’!— žîÈqbQ*2û¡ÞÅ*Òé²;è’5ãSnRޏQ3lyîie´°ûH ¶`ö'ÌÖ ŸÙXŽÁŽüxu;I\ð¥²ÊüƒÈ.d@©~=Q;u†´Ô¡TË÷ïè$õ JUv}âD4Ð õÉ7ôh"J/¸Ï_&èS8žbø šÜŒº²‹ÜÃ"`*£,š‘Ö-·T~´(&é/eŒ¨õ?Q‹ßŠ¯Þ´PŽÂQ~b†v¦AVv•ÆÅç¨F'Ly‰¸Õoä,ûkÇÀë|¤5dnyá…A\tÈ=¹í/6øk Z¥–B™(Zô b±ÈáÕ3=&°=™!ê¨ Ìþ»cº9§Q ©õùxÜb&.ðuEìâD,(ÁcÔ¸èç'Þ«ÅÙ&½`•ЦhÓÍË鶺@³«V,Yäç_`úDð™EoΩzÆ”L…ž«½CƒÛ¦ÿ1#GθdÉ•?Kʉ7î7rOû”³ pÎ$ÿÔ¸"¢)ÓfZ*b»–nbÁQ÷Ôøîý-ó±µÚO8%­”zo`‰#";ùj—“ÇŒÏb±zÁgÜúÑöbBKLŠ ?:ÖÒ-‹7ƒ<€ ºd íã(OßÀ¢·‘cÂà&ºþelfðfZØyújp7søv/ûO´Î4'y°÷-b˜ ¦Œ²e{B‘E{°Ÿz*$­­K¨  x"÷”-O± oíüZ¢¨¹™W¬”ŸЉ@g_*Ws+£"Û°À7@åת1Ú«“¾Û´0ÕÓ<‹‰¼šD) àPk½ËŸ×‹ Ú˜´ƒeÛŸÙ­ðoØjYôž%@véÿýi¬?y=#ÁÒjB»¤žOçå¼xQâì&u}èÆóJ S©Œ5Ý *Ÿmdû\û]ʉÄF4‹&ô_ñ>6·œ·‡­¹ú'<¹k‘£Þ1ÃèJé›ù»ÊùÎì5$L•Ëûˬ0õG3.LqyÀÏáGú‘ýyÂ_LõŸ£«/¶×7`í‘&°z™\«NV®ñY›äÂúšÄ޲¿‹f _¨Hw\ø"Ð 2_¸U&)sø¹–¡é€Ð]”I¼?w0çÛô¾nÜÂbs-.=ÈïÔü>Ñz™"q) æU„¿4ûjoì÷¥d¡•WI©÷IüwÑØi/—ŽØa£ûZWiÌsàTš|O^ÓäšØFxaŒ,J˜Qf<}P* ë´Ù/“Ø™ïvq²Ssgê»ÞÑ×1éQ ­)#–”ýû©€n¹‹.q¸{Ð:ÕFãže'­\ ø#\O8{hYçfî0»W?d¯8>϶\Œ ÃBVxy Ÿê›¶êð]®ɺĦ ªâΙ`ï}ý•¦ ø ãßcMŸW ‚«¦N5ó¬šg2ã3/²µ8äÊ®©2;’$KÔ·lì,ú̱pCŸî:‚£ÛÑM·¹Œ‚kú`)xB–³l(°­÷õª‚ØÝ%G½ÀÂFX}S=tGØ<ïÕ]_6f•¼MË¡2?FÈ3§HX í»‰1æQ–Ä2qS¡öÁPÝãÛNùH6WÔ…vü5h ª$ `Qo&z—BEBO-iڻРDˆZ¿su¥°qÇzܺF‡VÇúO¼S*2*º,Û aõ6oÍ{0™ÅA¨óƒ ¬Òñ™°hÓ˜~v²2»#º½jƒ›žx%B%Äh”Ù%»†]¼ÃB›‰‘ qrÁÑ¢Sð5w ],…ÚU7—Dãþ«ší„9°=C€¦ùðe=O9GÉëU­Õ*«‘¾À×פqƒ!ú;J-¾þNeñ#Ѻ›¤tžšùMý[ت³¸}¡ß iÌþ(þYÎÀìÀè®JÒàêîÑrò«lG×(ƒÓZ0œ¾—ü^ 2‘ò‚vMƒØ‘ßÕ ŽôeöÁGÀ n©ì¤óŠN5‘y—ü7¼ÉŠA Ô“éÁWrc†Á68 ŽüšaNÆAÅ¥P9?š¼Õ£lƒìžóê·¸µö!(* Ö³T«nFAº‰ç?¡ó@ݰ׹̡´”$âƒÿà×˺À÷ ïÞøÁ‚}òKÏ•«D¬´’]Ÿ5‘q‡!Ò'"@æ< @uo—lû¤@o¦óì¯)0¸ý™Èm­Ïì’bÓ×롵oëÕêNH9Ÿ §q’ ‡.ÝYë-²^´ÒpÕÃþ =<Ø+¹EM±ËÔ«UºH%]““zwçfö/#Xgþ'9iK%o²Úp¤ª£ÇeZKÉYæâ\Œš©ã.~¡IbkÝ$á* 0ÿGÞa·AU.8 Å¥pÔHA§ûÚïî/v¡û, 5dû‡X«ä͉qÝBÄLž‹æ¸ö‹ÙÙ­úCöU¿9nÇ‚vfU­hØ,Ý Ñ{ée³5„H·4¼à!,²µ;g±“¾G` kœÝ3Œfé±µâ•Æ†ÐX•ꧪá0p”$ŠW³îßêµU& C,¯]l^cêhè0ûô½daJú5€ruâÒ¯ú¿-òB~ÏÂø¹thuÕ˜âíý]‘ôÑÑ$ßr¹bë²ï\m$§áiôò4_'yúîÃ\¢WWl+õ¹q±G EËß5Sf­AÄ:˜nsþÁk|à){åóC&:}C¦,+椻…¸Ÿä1©P^ 4ñÙÀ:>ú°”׫ ›Yv;/8“oóãˈ+Ä¿n¾*¥¤ Ö†%ä ®þ·ŠM‡Ž›i÷ìÛ’üž_çR~Ën‚;·¤2åUSÚPã!ca«…`¡ºÂ¹^“?·ÚÔJ©¢t¹ìÙ œÓÖþÏ¢÷¹öÏä¹#v¶¨ ÚI8rH‰q°t!ÃèdŠÔéóÙ·(Š›øØE‘‹$†é’! Ì÷ŽÈ¥[O=Üe6Ä¢~–¿Jõªž8úÏäQÉñ°Ù“ø†HiÁŸp‰…]JÍHìyX,Š)t$'@:õ3û¬Þê¢ãWÇjb£Ú Ü÷†¡}¯\èíþ`©œGR‚ åiŒ~Ù90]öl‡`^8teªLÎeÏ•-±k'+_…‰fT¸õ¯q§ðLcsFi ¾)SøDß«6áÓ|”éòäv–Ðò¤"T6·”ÌeûBsGË'•rGˆ§sBh@eÔÖun¾i¤¬¦MÞo¶2iªÈ€A¯õg^µÏ‹â£.C½ºÎi4Õ3õÒNŽü°$G²³íÞŸà iÏP3ûDõ^Æ;¤”ÞË4o¥! rF•&«rƒ€7¡¹.<åªQ-Úȼ¹š¿IÊç&§&[ê¢û'ÚåS·0“¢¤Éš„ª¡i¢¹El±1sµ"S}+ð¹Êôè Ò‰ß a'n÷Ÿû,æ1Â:ÓSÔ°Œ‘AƒhgºÖSœjJ¨c¢KBÛ;ØN÷ï;–Nh²ÆDmL“ټ̴ rQWâþÄäÎzd«È³ÛV®?Tßšñ¹u‹è¤Ô/1Ú~N yçÆO“ytP* ¶p^Ÿ2VÊ%ùÒÓ8v Üª¾ü_wSQ’ò%°&;ÓË¿þc><ä&ºˆ£ä?.¢»pUǼ\‰%Š6.ÚâÅŸÇ]ê]Û‰„¼•ô[Cš‰²ÍTÓžü⥸NHŸ†„jT «ÁöÇÅxe4¿uéžç r¡&ü¼L‰ÔÉPï4›×}‡Ðë̚х¬HÉûx&Ÿ_ªå(x›-ᵋgŒ&Š•]ÞyÐlÀ¥t¥z ߘ5·SvÛ¢,VœW ±w-¦”o&ž*(q$v0C äFVµbêÁ˜L'ú•1w7}t `wäêN¹w‹?ÂlÄ–ç™ c¢•ÉV­¦ˆÁ’'Õȯí`KŸX`v [Z)ué J‘jnú'jÁÇâ,\ µ¶§n”8c/'±#>ÅŸÍéRñÝ£çeúõ³‹t<ößF`a·D3 ¯ õ§Gº¿0ÿF7»Š”zøo²fž 1v¡fH«¡#§xpWždù[W[ »*W]Q8ÝÏœr7”.Ñj™ý,æ¥Ì]Nž÷*ýÛ¨Û ïãS8s8¹­Ó‹f n÷÷˜Qé»7Ò¦tMYÐüÓ1a?ÒJ"kIle¸<”*Ç.Ê&ÃèÝÉ º®–ø´µDÎrVáûo¼1—]]÷ì ät(Dߨaû·óüÖ…rud‡p1àN¥ûŸ u¤):ãæý.oûàær«Œd®Ãæ{oY•®,ʤ+ïù÷ÆZ[ß{ogÌxmCup‡e½ø ›¼íTçà‚“(•œ Tt_ÉÅKšä–f#$gDŰ1lh—sl»2}‡ U ·åè+ÄiK#l%¤ÕO£^MÛ@CŽp~"½YÎ2¯l¢hqõÛ4 ŠÅë®òÉ›ˆýÈ:r`W£^MP-C*Æ`¡ù¿IRªf sçXJ;jåG'à/yÚÄÇ-Ð [!=Š8Éç¢ü£M†åðŽC¿!y¼ôî’‰F ÏŠ—%ó~j­/öJ ý±š5õŽœë ’Y'»ç¹Hh˜t‰áWNßÝå©ù9¦Îa\ëÓ5 g“ÇÔüRHö-D+ñŽ[-P­³a˜¬Ž«õ*ô/øÊ´°yÚü­ÊCÿyfkuãæ±¢ÆöÜÒªLâÀ» Áó±ZÂE4$^ÁäpðסØž³X§øþâ QróÉz=Koœ9b”ÂÐ}9A[‰_fH& ªžÃ‡Ûio¡8—ùÔË´"ÝI3ßDÔÄVD¨ÄDX»0˜D®C.Xß<¸pOùÊMa>üº_¹ïÿy5§ŸþòŒèBÖ!4k„=ÆN(ÇÔRÀtæbk¸äj]…šfhSÞtª˜'lGÁ™î5©¦µô9qŽy:ÜÛC+õp*ÞMв´]DpÄjùÂHI*ž…!Ët‹ ŵÒñÝ(3‰„Þé<óZ}a܃Ù<•u¸yΉ¶BÝåsœPyÎ{h_\ðéJ•:jFO/7ÆCþæ®NVù³CUЬýkóÅ€ù^UÉÈý•½/â´TMÈ€ç'ýna#±yhF£!‰j±¤U)D¯©÷ZN# Âêƒtüâ=<¬?ûD¶´`¬@r˜È_-ªâ'\ûÆA=X&*–”™†7@Ÿ–Ž·_>Ì’Ú\ô0ÆâIÿÕÖÅþ£F/ ÀZ‘ÄcÀ¢Œ€ýTî´ýþPð-6ã;ŸÏ~ߤ -°5é0Y𙡦ª îS‹—% ˜;;1ëxN+‡šX'gVR/êŸ:¤­hÜzStÖçùHº-tœÆ£lÊ=ì#)u†œJ‘ÖÛɺOÈÂí´hMú‡©!=¸G+#l¥Vÿ:ýÊ„0x'¢ÌJÖÑD³¢j£»Íƒ™SøÓÙ ?ÄxùSð.ñK¤ù/õ³¯e÷¥¶)àÍ3ÍÇëÍ&‚ä,³¸y}„žŸâ·Ç'œøÇ—>ò[»ùÇJ~m|z‡@ÜæØ²‹’ë°å£hwê[®æZnÇ×R&ü‹*ùxÚI¿^Ö3À‚e1fæŠå!dÙJØ—&KÓܘ½û?Õ:ÄÎôH„tm‹çòr»r 7.ë™H`2Ýóð3°(›ø^›ýu©ÃžËÔŒÇjÅP§Eüë ާ¥üÑü%2kà$©~£|L›¦1ºyV³tÐ$ më©ó!ÉÒ'‚}vbå“ÌlW)YŽÆ³Ù(_²Ïa$±Ä/á¼´@jNnIÞx®‡´'ˆ8õlTâZ9«'ÿ‰fŸ|z.tGñ]sí‘v(ôÀšn|­Ó+ÚDG-# ?xÍ•„¶ç‘]ù¼î„ ñ•Ó®{E!IÿÿæÝÞv¢eœ•’ß:ö¦28XhDÇo†jœO×ÞL´Òã?#pP+»ÅGË&’h #Áòþ2åuoliìljßÝàdò­n¸EgˆŠÊcå‡àË6­×`<®uk©²çY¤~Gs!ñ«Õ©) ÃÖ%&•@ðDà:&,øÔZnpÛb_&ÃwÁíS…eNÕlµ·H= å3ØŠXqµª1_ÈÇÝêI̺*À•‡ße¯õ€Óbnúøæˆkí' ¦»Mˆ˜°|¹ã£iùйê˜ä²úO?a‰KT£­GŸÅºÃ/>ºþq ½i´‡FN sTº©óûí;x*ä½»„‰\Ùn|†òäÚž{rΞµ$–-D"`”ÿñ`å" å³%)ƒz¢zÀsAµ‰€â~âß<ðAIê§3ÂK´Ö©êM‚—e4Ú1ÏÊT14bFrË[¨k²ø‰Ÿ‚Àå·ø°Ø<ñ\$"|éŠ-Mr ¤º»%€ÿÂïa  Ñ,@¡@@¦q×Hv,ý¯í½ËLÆé—i®l6e²ž±¢¢˜s=ŸØÏÜÅoh¢£U§zËjÛϺ°$ ô¿úeEG \ãF®®©…ZÌädè{8†2ʼÏI呃Œ.ëÖ8Yÿºª|À䬽žÕ4ƒ ‰à(-\õÙúãêTË›ÂÓà½ðÝö¦vM!‘bO5uÊ<ÄÊïyÅqPÖ£cWó3 MîèŒ Î®Ex¼é;Cc#©ùOŠ©nåB˜t{xÙ¾;Àj¢šYшÅ9÷fõÇÚ#Æ×RD1º@wß3¯°ˆKñÞ÷'‹z®Ó÷ÑmðŠcŠ+ð x\U,£,aR"¤ò8O$z˜ .kгL˜P޹MÔ EörÑT­h©Y>†ƒ°*=âMQdºàÏ“dÛ9±=5ÃÝbÔÖ#ïŒu)w ¥È°º™H­×9hû€IòKÁ˜œïÆyµ;6óÔÏñ û ³•Ô—˜õÄB“pâÂÁmÈ–µ-±Åw?ºÁpi¶DGÞlÞàœÓ3øKZ#85þ´ ÷[†äý2ökÊ Û:`VC]Z©½ÖªÈÅå ÅF“šŠpC¤–€ê·áæ™XAC¼+Ú-oíè”îqþ$‘_øjösúo⪠aÅülfi¶&f2Ñr—ô3i%PûWpK,‡¹ûNwµµJŠõ?P<Ïkì„{þ•bJk·~’¿³Ã–F© H~t=§Í}A§ÐZN]6¶³‰ £^‘.ø†Vt-Ûm 5JzQ+Ñ äð·üüÖháiÔ¶úúµ¤°½4ö¡9½Y‰E˜­^Ö¤Ÿ9|ùÈ ±ýšÖrÌ=‹£™àø7/¨vøoµã‹©Ê´&Õh§pFhá-ûÈÑ œåð0J'é9´ì—¾kÐÖ^Ðh‚ëdÌV86ªÑ½åo-<ÏÁÂf­UtV³&m×zÏn•0¦Çq°þStˆ¬¢ýé•àäÑU<»Ó8`:©Ëñ¤*0t±–š;Áp¡RALŠ­”Mß!™ãÃôK)ÙÛìÙ£è*#~kKiéF…e¡úc¹4ÿ~©´³.užî3T{|?E#[¸!ö<’Ùè¿*D±N–¤qiôC R¹%ÄB¾GU‘ÎUÛÇ% ;Ž"δë¯,Áo­þç'_1‚W m§\‚>,dÆÜš„`ôýè"¹/^¯'ç^g”Ý­š™ï4îÇ«¢KCxN'8WíîV‡’(uÈLúø@[²v ÷ÚÔÀ.jî~y› @Άß.¼Õ FþËÄ^,|ý{ìSMÇ[·Áu«˜ÅÂ"àIÄR7Ìç% 2©rQ°(¥äZìVQùÆ/¡ø}®tµqƒéqå ±Éør®t?5#ô/WÀÓ®@ ä÷ g¢©ºÊNÜÜ08¢K5O@ñ!íM 8$^[CfUÒ-=øN©öŸä™[P6Z--ôÆiqù­nú-«†;ï_4°E³jDË¿OŠ5ŠL¿ú^‹ˆœÆü6ëXŸ—Ž¥âÔñ‘ÉÇ©¤.¦ÈW»>¸¥æèÎK ~"Ö%Y²¹J{?8*=òι.…m“Ü£ÆUKææ·Ÿa*½Ül’h2Ùb¿BÓº¹Ü`ÍgŒ±Ôa]GGõ¿QÉï™ÿ©±Ç Á¡C»èHl¿™ÿíÉée¹† »±Unµ<ÓçÇ"aWfvcœ1 àoLÍ+ `´ÛxOš.¡†Bò`•¥§îWð×3Ì[2¢2&IûvÓ÷°D.»Fýp<º1=èê´0Žn-™ t ç𠘞C/¬ 'c·%‚B쬬Wõñëö£:H™`áæ.馅(1¸ëÔRˆÎ{sàÒ{ÍQùÄÈA¥ 5U’ í«v)Ûá Ÿoå~oC{iNeô|…ឯ@~}^D”ã=H1}1,W5gÛc”q¢),tò¿zͨP ¯sÌÎÜæ hþgçä+ öŽs³ªƒGÄëÝ´»gi›«Æ¥æ·æ˜qQÚD¥Ù¼Kée‹óš¬é$eQ›ñÙÕ÷t…±™¯ôÄƬ |]RP5Ò‡é~ê^µø”G/Á6kpð Ýè'•Õ)[ïÐS1ýNÐÔò¨™ tuzM‚XÊÖóu‘çê‡Ò+¼i[+<¢¦6V‘{ŤrÍ6Ux|sÒy…$Ìñã¿{å™{ô"ô\!áä´3”E1°—lkzÚAô,Ñ÷;裋Ïð_HîÖÓ«‚@xÂwgR̫“U÷×™_–Wõº©Ž¥¯¨ÁŸŽÓšáðø(‚M¥k­ÈåLàÎÿz)ÇÓ˜ÇTˆ‹Nò„Ò£[ÜÀBë.±gv|õÌ™Tâ†YKÜöZ –ê#À7v%á›Ê}_ãÁ. 5¢±~”ëÆ/$IhjÝKx~Ô–öS¤#£^£¤ÉæÑ~º0˜Cñ,' •O ·ßSrƒ‘W•ÞC»,ƒfâ&˜2?lVMמÇÒÂkº<>T}„ÀtÏkM„8“vÚ§;få‘*:·|®ñã_2@e„r`¿[P_ùBÃŒ/èGðræYxcaÖÄøkÆÎ,©5›…CX"àr4”¥@Ìs²ô[úpÃÚ’]_~ÊØ¦æIìÎ5=HÓýÃKÅΛŸÿvX¶zú ˆKPqíåÙ “€åPÀkàÌùްý ÅF·´šûD»YÓjbá{Ù‘Ã_ÙƒÁð— ; ¤…¼Dò÷Îe·)<Èßµ²pÑ0•gÀÎÙCªž*Šƒj2]0æîhcµL!ù¼3<žÈš{}rdŠæÍÖN“[Ìw‰Rª–X0rå-˜Qò-ÈZÁ|:ôþwŸHO#ìI‚Xö–Í~ãZë"Qp}™ayQ†÷•é=/H;ѼË)\¹3dú7a‰B×ÉᯥsÑ“®4â[[^ñ³$TVuE¬Dݬ«@€Ëáµ_Œúó˜¡E€ÙlBq3áa´Wœá0¶›ý»Ì·=ƒ³€/²`ö¬‹ÃKIŽ>`‰÷NžºŽ<Î.Øã&s5ª`Ñ 9ó…Æéc@O„wŒ'VO¿BÙ]Kw©™ak24 * 2ï/qž”Ø©MæLiB&»ì«Ì®n‡„K!DŸÔ4‚ÅbYA½œÛÞ0ŒßÃHsÿ-ïz…†tžáѨ€÷xI¹gíÁ:g#uC ݾv’Ìݶ@„è_ŽÄz¸Ë*äàV˜¯๕›ÚlLh%W*RY¨³À²>‚­BjŒ¢^âXDNÛjÈíÐǹZ3ë±t¿H¨Q&TØŒ¹q˜Ã¡$¤|æQLvwü¬ ì[ûÖr³E}cÿp*Po·V¿˜`ýë:qȤɩ¤|ëCãvÚ´-ã®Aå„e¯%|bºÆ+:*Ô¦&^Õ…,€*\ãu(é6S_Þp‡- çMÔ± ëe£ï¢¥ÎjD¶Ë៾cd‰ú˜ø8úömþ–ïÐ܆‹¸¯CÒz=—`]T>=7cŽãl¬¹‡­Ô‚­ÎžJ3ÌZÌÚû#þ_X… K_Fl© —²½¸åôzÞrQ§hBÇ—Ádr?þüæ†߯æ¥<6/9›«pMÞô±¡ÛÖõ¹xh¿0c¯rê.‚ä©SsP`3óã¼½Ü!ÝnÓ C啸/ ‘:p-—Z¥wÅJ»áóޏúî×hŠ,Ÿ »"§d\u§­ B\Ùžž(R®º A—sPX% v‰ÐâA'(¿7ÞE:=]¸e˜æ ß2þÒã7‹jrWÏ~ÿmG^ÐûnЭWñ13|jçG¯øN‹Øzíþ©‰4Ãð%iY_ ~ñflh)Ÿ#¬ÐçÛíæßÌ5¸IbÐCYR4LKf½üK,N¾@ei¤˜ÞÄw_YÎVØ—*¥S:Ùß˧eÝ™Ï95›"ëW«he<8 (ÒÙH‰p¾›<(ÊuqI·„`*1k"yMK®AºÃð7³em$å%$Å8Ñ×Фxeާ˜T&fŽô8SHl¦j¦5‚AtxgÓ‰ÃPÁÙj¡|½¯êyùãÊ~·hôÀ×r§ñŽ»îÏ3ÈY«û:raV–ëÇ×£€t4®õk¿DDDi&ž™ÛtÊõ&À²é“ßEòZËÕœ2dþ›´ë"Ó“}²r°m¸±ü'E uÏ´é—æ®éGÖg—ò’SIïdb›÷+2—=N%ð·Ï£À"dz«}óÑ âJ·¬&å³V}€ ~Úˆ_C¶Ém)BÔ‡¶F-X£R¹œÎRŠÕÇL©‰V&´öíUs„û¶öV%–ê¥pþ7M¶)uü²!:þËCÀU„9L-6Qcミú/þx’ÎÑÓÕ? µ~xìKš[®þòÃO&ɨÖT±ZÞÝ íƒÐ¸õ³$;Xá5­¢¨F9<ÿ««“ú+ݽ\ XŽšcHHYê*¨|9Ó¸ÊmFØŽ7S-ËäÙ8r-]r?®ŒÌ`TjˆÖ—˜ýSïÛ72Œ¦Iy¼;Ô$¢îÀ¥jˆ}ä¨y!{HJðóE”ª8Âa.@Y›X|üoTyÚÔN –~ ïQ:£r#ZM¥Ù*ë¿©aÏçñdSî&²ì{”7°& •K)¤¾/œÊ¹¾öû〞0¹3b«îiHK¾ˆfæßztš’tK`iXfý®p®BKW€XHr…™‹P'Z¾ßC[5£1ožwOÚ/ŵéÂD™—Kæ‡ÈøºeÎðOÊòTöÇ—ýϘÔPF‰jùBQDK‚h¾Û˜* ëÊ;ü>Û%ÿRršÈW Ùâ ~ŽÏ9Ö€]€åšMù ›f’R÷ý*ň„7E¢¯’Ò¬,> Ú‡/†oÕnÖG²mÞ ]Õ(ªu9)³>Ýr°’пu§)„×ølj»ž°]eä&Þe‘ a*VŽFÂüôô,ô<µsG ãsµì\&âí¦Ê¾öÒœ¥M’;Z'¦ùš'e*Ù¨òèXŽ‘búÅ þ¸úík$ ør+_u‘¹Ÿ4RªîúNJ¸ç6e$Ez7òä•ä' ‘Ä4ž!0ß,¶ûŸ‰±¥[…ZPÃßË€Í6fgþ,¿ Œ¥\kœ~Áfï>¢ VQÇT…è.• ÛJ%4Ké:³>Ž;d ³çOq·¾‰èÿ¶Ú支o¥AO:ó\077òÞd­h˜C—0{›³eæn|`y_ÃHŽá¬»D!‰ûˆç.Û_ØeB%ŽaIÔ° p¥yíñÊ/¸§&wÎO1h£+’«ã¦2 B/¡Š=é;zKúiöó[uì[!¸Ž#:ý Ò1Ãèý¬‘É?–[ç ŠèŽWî¨yeBe;QD¯† ç‚~¢7x‰ýoµ&YŒ¸oÜ-ÎõÕŸW䥹_þÖ4ƒp Åò;oùø/ªùrJ’5Þ3_•Ô…R›YP;„ÇË‚„.¼Œø'Ví÷_† Œ©=ÁYäaMF & ¹íæ=K —¯Á>¸‰n˪Óù>"Qz¼,ˆ›é¤`dέUDÝÛÿÁsóàaµTgÐmt’Q^å(/n¥S,¾Ö1¹1=«6Ÿ×HP7Ž¡óò‹8HeV‰7£vîaÈ÷"ÀYR“h@éì¶á¹Dðën²½ßý5 Gwކƒvúk ÿx~e!EõñÛ¿öwX—lL]› ›Í3‰±:þøÙ]+öÏŽ6!ÌÒ÷Jåtž÷œ2¨úr gg§Ý¯Ba1\®ûŸw´K^\)èÿÜãNH}ó°~²žÃ˜½BÕ2NÔØwÊS„@±úmT È3"µã»6­ÙkœCp7ó©'š|’UªÉۭ¡Õg’“¸ÚtjØÇÃl€åʃX&½äŠ;ösâÒ àáþ±äi©lâ]ò@ð¢@ï >9 ‰”¥Z$€!ÑÍE®Ÿ9†–HL¯²[Ò·zåÎÍa]DpvÉ•8Ñ"6üÓQjs”en¯˜<,Y¦hݵÌ*†©K4}ªÏV¬¼ì\«8‚wˆñ¼ŽÍ{2ä‹ Á±uÂ6ü¬X iK=Ïf«a ¬ªFgwÁ…j/ÊØè©(;ÍL°¼“Y¡6¥UF¡´€ÓOø¡*·*J¦ •Ã[.s­û )üÛM—üG΀ÇiÜçuH)¯¥B@ùçJÔÏ%}rpê1à¡üCÞȃ{îAÊ"‘õ\ö4P ”I<Ù9èºçIéÞó27 Øõ´<мëÊXäP÷´z¸ïÂ"é©1(÷ãaÈÇ .Õ^ z¢‹Dœ Ÿ+Œ[$õ¥¥3÷$¼w>^±Ó.cêýÕ‰¤F¸uèßqIÀv\ÒÓµ`Èùs©?0{òKŠŸt)8Øuô¶ÒxCð¶7%*U¨ëõ JçIîU»0–D«ÑPŽõ9ŒTÜOL6p@gë5€à™xìÝF2ÛØ ;æ]ì=rÝ$ “l]k]µpùBB >M}¬Tÿ™¸oãdI B1‹¹Š»n@!ìI^‡¦â}âò>,æ…aIt5Ù¤Õ‰eMF\݃»ââ?ìì…sG=WIÉ“ôk~`7|—t%ʯT›ô9ÁÈ'ö(¾Á:C½õ§K Ô~ý™Hÿ4UÂOãYná \„|…A¤þ€/þ®!’ dÞ>w»ŽQöæ×íû…üoÑ©}둞ê#X¤M”zì 5LŠOd”÷üëqe¨ ø%ùTú`ñ—÷”å²/2çSÝÈìïoÔ²O}--ÐIçS.„U§šŒ…@=Â÷ЧPfLŒñðÌU Ïݵq:á9Õù VpôŒEoõËBIù7Tê5ª¥ÄÏÅìíšÆê7üˆÃSö™-›0²vŠu ³¼æËgŸoŠØ¶éŽ›,,ø©bŒŽNASÁ?÷/ÂÉL1–ŒÐH¥¤Çʲ’Wtœ7­3!©í€X¥B„Î!Õ¤aoèê>hHQÓat^ìH%g ïÙ¶L´´È×·%i`4$éêÃÇÚ߸lç±/8(×ïÍþ{YéW{Ìó³Ü%Y…lKÞ»5ïÀP„1 yZR¼,x•²NñÆÑ‚ó ±vÏÞu—/j~›Òkãg£¿]ˆ»V¤¯ Êo̵?‘&#"qªßoïM#’Ö;!µûZ8㫾ò#EÑìŸdÀ§aI€kTN³êG([¨[ñ}ÕÿÇYaIŠ–#Aþb*Æšbm²¡#’·ÝˆÊfÅy|QõstÂxgB˜…¶ÀF}ßÊÇ*³êÒŠÌDØ­Ý:DÉ{1u‰<Ý$!Ðñ$J1Lú‡ ðûÍÊøtçÊŸ¦> ¢±I¸÷ÞØ€[P÷—½_ô ›³<‡×öð}vç˼Ô¤Fpd›› ê6†BøkÖ¨( ´Î«CÕM>0-‘Ot—ø¥†ÛØ^Zà$x‘ë·k[¯É ftyA€†+[ —4E¯…óJg³R¥^´:y8ý”Dोºmï^-+®GªæçŠEÔ\Æ-þB\mÀ2ÍP.ÜÚŒßÆV[òUtž¢ £aíÌ–ª¡íºö¯w·ã H)$·üìéømÞí66l­—©¿+Ÿ 9ü׋Ž}ÉŽá¦(0¬Æ7WÊ%¢Zx]Ï÷YŒ²7F %Ê#y1º­KÝgùË몺zs6©“_‰2 Eû;ñ°ûW\&-p?wéW 0âSs•dž+v@Øú5Ùú±ÙÏxàÌCÈÆp‚%yXçšš..<ÑÕÞx,°©̰Ѝ£§b´|«³äƒÇFRñz¤§(Y4°®(0—~"òúÊÂ*(ÕQ57žg7f°G-tùª1ô×;^‘æ_þ`ÿò7Úxufû(BÂêGP‚ðë..ƒä,ÍGN$S9„ Bûü¼ñ€"j À íK2.⬬=ý‰ð–ºÔt Ÿoód=„¹ %p9r}…üÂÖ×CŸ(f$l›ìw›½®®w䙵cS )#mî×þhÓ§ü×îVÒºnÙPíáR^…nÁÏù³©øµ @ˆàúižþi ó¤’Ãô§/N¤'sßVætÖ–CDÊ­—y¡a¨ÀüJ[þ¢.åÁxªeØ&ÚÜnB<ò2¬,ùxéR™G#R«èۆȄÈÌ£xÍ,àù•ç~Õ™‡‘>h"ü½ÖÌc\ú1 :V ý §¹ææG&¸~@Úû(æÐ"}Ú5&+‚JƒOº_gq‘å++gªßóF§Ñû[Ljì&KBJ‘æa—ÐP` ŒÔpçqVXf\o: RavÉs'ïA©´ÿ;”g㦌3âjמ1ñ¤ ­Ý»Lôd¾”Ÿ•¶á‰0æ€Ä0쓆è廊™,­ š°xo™Ð 8zÙ}‰=Ÿò¡,Œ¿J0ÿ%ŽdiTdzžä²üŦ»êPú¨ŠbŸû¼cT«ò³MÕ/f‡‚ÙO¡·‚ýO©Óy1,¶¯ö«j«ÛE+F{ž,fÎ!}²Ãá™ò[?¾C •¤•œŒuÁBê¨[@á'¥»¹ŽÄì=Z@§¦BÍx½=q¬ØÂËËÙk’éǽ‡4{69TRÁÊAdäš;ý*YP ñOSÚ¢µ ásÌY†»~Ø™±›O*Š_èæ€ ±¥¸ß"‰Aäö‰©@;¾Œýâ„ò3îÛdŸûü ßàŠ‡§–ËV&µä¾èÞeU*¨mÈóÐÓà*A«m‰j¼Dƒ‡®?®æ¤þigʼL½näã(XçÚc¥£÷ µ10HËÔ‰7H—†ü*K¨÷¯è^bßp9(1*Xµ/÷MlZÎP‰ßÖ‹¿;¹cA‰« Œå…ññúÿ®ÂnV±}»éÑ·'ñ!°Äïf„ º­S$×F§¾Âˆ"SMB¦ý& ä²ýž65SõVW›‡/µÑà²×z½*(hí|?ö¸Þ©¹cy'i¸Kr¶/ŒoÕø9ÉöÍü z)½‡ñÉÖQQ²^âº\¹_`£ìÑÿ)ÏÍ^¥b)lÙËïˆùIý AØ”J&çŒ~†ÿ¿¹è²z²ÒÃE˜Ü¾/1QÑ@'±!ƒ¤ï>¿Í}ǯûÐ N¹uo5 Óe]é7sêaì²<$–(§tFIì—›ÑÏæÓSß]rM}Áe—¥P;ŒèðT×{ß«šWz¿f))¹Ò'²³'¢-äM@O)†eÿd}y ¾Iß)_•ô!„vÆo÷Íga}Äœ ûruѸèÃ0›ô’Ø‘‹OGXCÿ» Lð”!¬ö±NÖ²{Ó& ¨!WÒoy»BèÖ°\•öqq¾õâP$½AO¢ÞùZMk§'ê—2|²BÚ'IffóçÍJ{}RÀ’.w}ozT¥øUÛˆy=s'j©8¹Ælª(<ø/ØÉ„éÔg l9ÊܲøN)˜{Ž2‘íNÀ 6¶Iá[«¦YOh8aѾÁj’h<ï£ÕüÖÈYµ[]GóD¢•rVÝê¶Pf]¶‘<Å4™<¬mV4BX¥}ÆŸ|FtfÄ:¦¹0´@äg=7à T‡Œ$£ÌÇaøFüÂXÔL<"ö¢ËkÇkê%§HR§Ð™ í9˼ʵ½#´2¹¥I\mþ’Øw€n |gBAÇ®wTø3X/¨&Ú®·ê¨œ70I½§ÄÙ FËèÒÔ0ËòpWšLV™²(år…óó'_îæ¸¦<*»yúqEéA'|1Û‰Z,¿@ã\!^_/ &l9$¥8N?,™“–y1g‡_]À XF >34V¾T[|ßÑ‚”¨³%áÑ̨æÀ,-¼äŒjÁePÁLÛWí'òÔÖӌꣶ~0Í ÙÑ„Øs¹K éÀ:J¹m±d䦇6xòŽÀµAw‡áÑQ@&n0ÄïŸà?ë9ÅGé}4@W-•3“ÄNþ Õm¹Ã¡4ùüÉûÙŽž=š96ú¶=>ñ`fÆÓ^Ži…êdØ ¥ RgþãÝêC ¬ˆŸê™ÕPœË?K)µD]„„µƒÇëM:é$‘Ü.TaãÐl“`®é©ÑbóÚ YéµY ]͉ì‘âÑÜG‹_jZ§':æk¨ÂûÕD‰:sgšý ç|û·ë{<Ù~©ãæfvGp'ûV£nydÖ270ˆ“"Üm#j“[}¿St®½{Û-O¹àjøø\d ì²Ý»DsÎ)ã;½ÖPä‘6š€0y¶´?]; ñ ÙùîFlN |6ÃY;šüÊ›–†Ì^)ãv%^½‘D‰ù@ÁKrJ²ÂC Q‡{׿ïTÎRSú«Þ–Ö×!Übc—eÂn^Ôü‹“ŒC-÷3‚g¼ùt´kKaVû~ ^\õÅ„7§ _» vkrYC:Ômw4 °ÖÅ¥ýÕÓŸe¨Ñî[ØÅdÓüþ ²Eäš2 ÔÇ8ú»Ó”Ý,ÙÏ%Ü5¬aR™Sô§1±˜6 Óˆsy#Çš-ûqéWÿKÞAÏ£Ö#°ÞTÁ¦¥j:’.T½u á©=FÕßn‡Ù6…éù@i¦ëmuüÉK>Àžá)MØÖŸ„²­Ãtƒaì|/cjÐã™#”Í]~°C ) ’íá·—{,wbœûÞ”‹uÁO »t™„RœgŠ®˜AºY…gPy¬PÓ‡› œ›ŸŠŽ…ùI1ýR[‚/ʘŽ¢mà¶ðyŒœýªH³û-EÎ4ˆÐ4[‹gÔ80N/JN9 q_"‡øq$§Y§$FRºq8Û ^VX/ǧj“€à«¾•ÏÔýP‰Vj1ÞºªDg›Rx¦³5jž>ã?íó†°÷š9œ5ÜõZØk®w[bx®Ü‹5k™iùªw{>RÁPaU™ÈEÄ7IѹsE%èl õ©õã%y_ü`Ó3Shâå{ÆCˆðó­èóµ<Üâù}¦vÆdCK¿`Ñ„Ið°4 ºbæVpþ1Ú˜ÀwfT¿&ïô$±t¸ówd˜Ž8¶±­›ñöèõØç•l›­‘þBÅï¥o`,û³å@Ö7þ“GZº”È4D}½Ìr·óHôùt)\Qñ‚¨éÍõ:"1¡«eÎŽÒhñÃî´~áÞ–¹5/;[VàÌ5_&ÝäÌîÿ~.ùC0öPòÖBÉ9m …nZ¡­æQ&e|Ü^F¤ñÒ¶¼×‘WlU“†g2¾3Q_¿ì±Æ(Yë“Xߨõqt«÷'XAÌNÎŒ't1< àJ=L|”»± 8‰=Ñ;Cñ³ØÄŒqMú·ä©¾‡^MŒZÄèÛ$‰sx©í8Žg²kæƒÝ¯CSÎý}6«ÖÚà"½]f àÙ…IÓ™Ùa»u@?nP`Ý)vì–>ßÒ,€Íu…W ]Û_°Q ÔaöJ;¹Íu8½\'uV½1Ò˜Uâ‡=×BzÝÀtB]*ÏAªË6F­¯.ºöR|œ˜Yé=¾®f ТÖp°ïl w§¢J^6iP9kV%mv^5ȪÐA÷ë^±xŽjØÎ“CŒ±—H¨ºJQ\îµ¥»Œ<|ˆ­0 áJÜ×òVÁ2ø˜½§mî˜lœ:ÕERö«D"»„Ç b=aÛ½toÓÏ›#;­Ý _cØ8©ÙFŒ½Lå÷_Éj” w¦ç¿âwgÍ?¯¼Í‡àF¼p¨ßÅÞ×x§ñ۞ϧñ|ü£è²fÐÔüWø¬©áÅ}œÛ·¯Ç)¨·¨G)7gÏåãºN|¶Þt‚ €Ö±¢ ó]ÙoygàØÄ°t~¬ŸBÁâõeȈUIÓˆG2$Ï:„ hQÌ@T4^|æ¢+W¥·Ï‰ÿÄOì’׸TÌò᩼ áh°AÇÁ’Ë9 ÒÈK·?/‹ [ …î¿p)q.ËKôI)éáÉWÍâªHÙ61Q_òZÒ ¼æ²i˜F‡d‘}„c‡’/«ÃN¬£åÔæ3Ê{ ê› 5†7´ð:¹†¯NŒÆâ‚šé‘à=®®-íÚ6•‡nYb.6~ѵ.éMÚÈŽ_œìó¾fýîÛ»ÌdþÂÿUîá5ä`™Øe*Û&4ý^NÚr*\¼[³Ë4b cà‘‚†T[y¿7£¨"VÚ°±¢Ú.ë§ÁŨyBr¥œÙ¸1"Ù³ÀšsØõ9ÌÜQ–MdžVfN½¼B7`ÍÖ,~£vz|MÜJåÓ‚ÄíÁîð÷ÿ¯¨Ö¾r‚×P–ÆB—Ö!%ûÊB ¯fÎèm(Uó7:D½dŒHžÍ'Ãøæ$%@:¤NÆÎs©þŒ0õI ­¸6jÀvEœÁ«ý˜ƒ&쾿 ˆþ‰Åƒ^BÉRMù;Ç€€O‡áÕœç#Ï¿ôýAªÌ™ŽçaÅzòÖ̃:/ÔËÄJý¹fIq µz23B2[|õÂÄ3Ÿ°q7#m—I¡ªÒaÏò®ì©«š > ÞÜ´‚ w‰=4ˆ$u+wVG”uIÞýJOģ㘛Ã`¦ÒCIО'µEÇó¸Ã¾˜làIÁ!ÑÅv‹U ùFѪMžÙ„h‹Ù¡ILÕ–B´`õµd= ãrDË‚¿Ù¨TÇ>zQK&I–0‘~¦p=Õ¾ïæ¸VwZË͇[ˆõcE£r?I¤ÃÙ”fÔ;¸ €£§’QcOl@H96›ÛÁdØÃDN¼áúÎñüƒ¬œ ¤©ªìÒ@YÍ#E®€N6‚"^:+fV¤?av9WL·E!ô¨—@n™›4¸VU€ô¤ÂŽ6*6XŽ,&ÜB`¶–Wº ­ ¦ˆ(±•c²qO#VÉ€™ º`;Ö-ÁNÚb`ÍrÓ®z± 3øq° †—ó.¦GâCŽÊPÓtÜÉa!4:²=øÇqÇnÿiH¾z|R•ƒ¹[™ò¼«ìÛ„Þ8y j@£ïI,Œ®@VÖ•RiN"| ´p•LÄú;CÉ:g‡%Ìüþ/¾Ív¹ã˜‚^ÙÈL³ˆ?|­w©ûX7¾ËpÌð=w„&9|ò„òÈmaíoS_ɧ¾B;{á"¡›2ùÔ‡uâ½;àÊ_¾Ò<¦f¥˜qêëA%Ñ¿‡0¢„ nðm¹§²FÅÌ ßÝ0!þä EyçäýÌ!ÉÞC¦ºT`ªežœÍUp/q.CyúÛ‰ò¸Öš‹‹Ôü"ó¬º8Ào×j£m—.£ÜòûûeÇÔ°; Ó w(n?Áž/Ð ÂÙæ×’"ðýgölr4¸;÷œ£0ín ,AŸ¼o0=ç^zcK^Ïׯþ‡¨†€h×é!V}OǹÄß–R/ÓŒÆsíû™„÷.lomãPxÿ´£¥\‘‘àÇÝŠ®^£;ƒT7 謾$žYùÈ üKýŒ·ëÅÌvˤFqÐp>³£ç÷n|Šƒý‘ 2©¸’.Ð!Éó¼Ôˆþø,Æ—K¯&iåÀðŒý«Ÿ>Ðy–FV7³ŠlÚ‰‰7· ¹‡‹”_3ýÏp/ŠJП lIè¹®oÅäSœh÷øVO])½cl|¼¿?Ç1Ñ©OD…ó9Z$I]ûAGç6†™b¸òÝ©µžvöbuS/!¨¼—…5x¤¢ÿ[­æœážˆªèé}:Æ`hlµÑ;;y+)Âο®ÞYn‚çþºŸßçþþ3”‹GãߤØÁ$a@º½'(„ð.²Êé·'«¿ >5›ffܸÏU|oŒJnl}”æÁóÎÚK_–§·†ab¶ êQäUÿ[Ú·(¶ÌNQuË_ײÙwQG­ l-€*xtqÆóÏÓ·§U.2~8jfÕ±—„äBŒ¬%~,tǾŒø¸ÔR-/w'DwŸº¾‚†ÀëÀyð³cf”¶ ™Œk2vùˆm—´1J6D9éÒ§ï‘p.=„ü–7ÀeÈ;6脹øà¿Õ¯ŽPŒñT¡÷h *ðºóÃVú‰Ô°|ï§;p#Ôß‹³„€iç…䓦©•«t²„S¯ÙòhíäyjÊv½*"B5À’¥/¨æ°_8¸_þ`£FIÍ¯ Õæø3B‡ ×B°N™%[òòÓ´.­~ÑùU)âð¬ñ•Xêîýµ…á1{<’YØ;CgÜ6U &ºÊªØsåþmŒeSd‚ïª×ϳ}Pø¢-ŒøèÒ›ml ôCÉï¹ _Îæ³ádɤ çG>¨Ý¯! sKÃIý>xä –šÇHBÖ8üổâí¼ñM/v Í Qê‡ÇÅ—ÆæýƒN·õÒ˜|g¦9õzˆûÁ¾é²³£3¿q£v¬ñs€èËÇPìv õ@ÈSûº„^yîýàícˆ§‚!°±“ȧNÉÛ-) ¾ Æ}ôV9_7z”)\~v­v†ƒû€m ”Z\ßuMŽo•²$}ÕÜ9.Œ·ÛZ`Å$¥z¤›Ü‚biIÃÙLX+­1Q/“¼ ‡ÑxÐ'Î÷¯°ÖbÄ0 ?¦ƒþõÄè^¢^_šMDghÝâÏpL\[eñõi}IqyÉ+˜ÄÉpÇ´êi´îÔšö%Xu{ºËGÈ(Jq’¸VÛERE.?å®mN9B»³_®UI~Ø&îÊ¿]u\:ºs\¬íU¥ B «ýɃr&ÒOÃò倨ðÍÔP}8ÙPÛäy_ TþPûoÜìS{‰ÿ•£ â/&¶S?ôx½•Åv%Ç®wÐ-Gæù®ÖT$ÎTˆúØw:½ˆwDôÞÕ^M¢jY¢èÚ_„>¨PâÃgëd`ÃûÙ褠TìkÄDm·lu®÷M}öå/¾`Ù³–”“<¯¸ÌÊØ½4eúØû\<¿ÊcrØX¡–ª¨kI'Ú&òn•Ó¢kXIË’]Û¢%oešÊ± T:æô§WØï>†‚³jr¸ž:Ü1AÐ#f˜ñ«/ŽzŒc<Ìy·$9¬g ý:¹é¯ÖsáùÜ>ë/Î9ò€x ×äêûtg‚.Ëð „Ùw?¬jC4èÕ´NC-¡'!•†žG3°‰ZK¨7ÏÅpX0Ÿ·Ëóì¦Sƒ ôt3)Lx{³DžÿBÒ7 «ªŽ­OŽoyçAæAW5SÇóÛз„w~´_{d]}–êý¡5Gp¾ùéHëÖHëAçSg‡Úp|ZfžE$ûæb‚Æ·:& Xû8 ]–ž´‘ŠÒ§µ>z=”¥ït/;Õ¦74s»ÃTÌÐ ¤ž£€P´ªG `óBñÒßñÈŒ É?-õ ¹øí‘`vœóâ—eMzrpgßûŽS;ûIÒ¿Ø£b,Ä?‰üÁ¥9“‚”ûºîÔ~ÏФMxÏWä¥×}þY5ÈáN]|F[¨¸§ä½ûìCì7©øx`­B³{YéÓ4¼@ Õ`7é&‰5Ï2Ø…1ªQ°„÷]ÁÖ¾HfÆø{yå· HƒŽûº‘ ÒuøøƒÄÅ›D«]ÂǾ)6®fæ_L®ÀÚLý¶Üt‘VˆÓ@2€Éú€WS¡/£Ý¢"&ùöÍT9ìÐ{á(7Ï‹4NÏQ»‹ü‘S"Ãù@úv,Þâuf¢D ¨~Ê4M–€›è<-Ó'‰Á+uC÷lÈ©mºü’ˆ)äRóËöN;²ù©ð¦l;k_ĹfPK^žÛdÇ^B½VŠÕ™` µˆ±‚(›¾ûà±›^Ò¨éL¤°Cmêƒ+4Ÿäœ|½VœêáÝKùËÅ+eJùøöùi»rמ% ØÕ"¬Mµt-{Q‘‚'jøJ±Æ²²g¼”•7·Ñ‡6Ø`Ì¡àë´Hƒä9¨[ïËëkÏD5…f—5Ôj~S"Ãè;È-¼NŠ€¼öþci.;ÛÀèÇ>.òVƒL™TÊ xvU°zNÈ,ÈÆ«Ø÷Qþ·S ÙL1ÞÕæ{£˜êݤÙrëçÎÀMDØ äX$†xýÑä´Ò\©‚.gÄãÜožìò‡¢¥^c°Ú«]®ŽÓñJ?Äê0†òé:b±Âœ.v„¨æÊ¬ó6O¸· À«pu?£3>…7 {¯ o°Ra«*{ý Œ¯9¼9¯Klß±Î5 é,SxbÂÀÃ)!ÚfÁß 3ÚÄŠûàænN6Jm~0Þ~V`@ÔìÖý R[Ó¯Ã?¡‚ÑrtôuW@ð ûŸU‡ßìn8@_/ «ÿ‚vÕ_Xû… —ãyŽ˜† ctžz¹cTuÖhN!×iübËßPô58'ý:RÑÕÑõà0€ßP:Ýmww˜9§'X=Äõ 0·ƒW¹‡Ös[,?y nsÕÖÛe£ÜA+¸Iÿþ2w¥*ªdÛx–öØüéQR8«_Èâm O!H`«Ë ~äú ¬zŠå«(mUíÝ( ”ú` kÛ(òµÞÌZQ†±_ÂÑ@?L3YÆ•~@ÏÎä ®{÷º’Ú_Xü(9ùbÊË''ªŒƒHÔ@Â,}#>1˜3ÐÚKnl\—j îÌÁW„$N[Àå–\Yœ"JÂR)€šö*$Ðjã—° qT|^v)‡èá]†¯ß‚*ÕB7ºb_tUFŸæ@ÐŒè½Ï.a1|wd0Éù)Tø ˆRÚÔÊ ½~£xÔƒrí>â6âC¼DEútŽý3â]ÀÉ)…j2E"á¸!åho ^À‰î:¾§6?Z™ÊGºeÜÛ^jÜIÈÿÍÞ¡Õ&ú_Þ‘qS+Y–0ì]zá8wZ(¾=Œ…a±×òõmt ¸9'‚z¦CóWà¼ãè£Ö™·í¶× ò2«÷ÿH9.ýfvËÜÖ•'G[]û–á8ãDUÿZµåÌ Þ€Åø@yúeÿ[Àæ¥OÔîúS¬Ú}\ ©:_F  L¯2@Ä—¸zeíýè–M̸ª<’ºÐOÎ,òÜ ½.Ì'‹?{Ò¹i¸dZ ò‹:ƒ_ÇŸR¥ÌB!ËÎÕ†vZUt¼M˜ ¹ÎÀÑŒ‡p18'~øÓx³ýXð²]ê&@—È~5¥ýåöÒú ^â©§užëÔ´*„fΉÀò¤Ù7ÕJ}NdßUÿ2˜ħ*SY䤸IPw=õ¦Xv”µ„j©/ Ã‘ãNjԈ CíÃ:eù”+L¦´ªe MUiÌÛ<7‰ÚçMðÀ]ŸÀÓ[Y"-@¸ÇþM ¯ÎF\ªµ?’aÅo Ç„ù¾:þTÎS–cÚ t°xvåô°lP@%ûÞ™öæ့Ô#5 ±­n’Úzˆ1ßò—Y3ò!°ÔB¶ Ó úÔ¬äø…l ‹WØÖå÷¶Ìt.m•È«úœ¡OÛ@òMìÚ¿3×ÉÂO+t2\%•F~"6#Lè](R´!W§°ºl_eøx ÓIÕ“î?´6âGùÿ߸…Ö#/~°+aÖÉÐküL\ø )¿=ƒál;J¤Ã®‹WZŸ~'ܳRŽ'¤ñ‡¸çˆ®M8ô¼wŸ½mà†Xf=Nµ±wå°öz,%;k‰¾wÄÒÉ×>*ýävÏÀ8’‡Ðpdó'Tg½dÆÙãÚ}k{,ŸÒß$­«4¢F4!.À¼˜cŒÒ3^Û 2Ö/zÅl$C룩õT Àh•]ünuè(ž¬wíÂ1šˆäX"”›;ÞÓ»õ¯6"H‘|*±Öl¸€ãî"å6§¹T™YþÑ@¶˜/'$ÇêñZ]¥2D Xbljòg<¦ ù ò¹–§ªî¹h.L¤Vý¨Æù ÔÝŽµ‡ýVBÅ)ñ8ª® ðµRØÿrY©)! {"[¦:¾Ñ"³Nm?É”¤Nb³ó‹#8ÞêB×÷èIU'—ºÍ&‚K&Ø)$ÄëF%I3ýä>ÉzHˆN_Ö ¶Ð%måãåTbWãÿMpš¦óçݾԎ.I%¾ú, “›êÄŠÿàO ˜Jó£™u¹7ñû3éŠÖÕ?ëZQº&|·ïó|×!JЦ@UÜÅÅïGÌÄSÕ)y¢-„;±õÙ3¨œ~ÿÐx>™|µÿú͈Ÿ½%%!À›#âÉlXÇÜ/ÊªÊ X×9QÞç–ë æ ¸’¨bèß͹¾h˜Æ9øIàˆF] VfýX™hPSºNÀ^À˜¸c³±Rø‹<âú@]Œc|Ü×”\ᤡîp9÷®4s%·s©d’Í¡N5úÕÒ¸7Œ½Õòè]*j縪”Môñì`˜:†ùö,§“Âc¢ÊàÔ•”Ñó ´ƱoêñÌéªM5uíGõÊ×Ï}Ï©Ú̦®çòýßDÆÄJJ!ÝÃ×CnY„ŸN*¤÷+˜bYÅÌZ£:ßöy ÉyÈ‹³²eá>P”÷ò4•ìÑ`güƒ© Óøš]D;²l Ö]9"n*º¸öDNp3Ú£=Û•‚Išžµ`™ ¥AºÙ,› ÏÊßòóïü2Ú…ºYpaÁ0{$f¾gD/¶Þã>P@¨/K&§Ž¸]üœh øÊЗƒ›w¥{!Ð& <§:/Ó)@/wâ5•[|}\jŽ…•Ç]Ñc|õCŒ #Ž…il Í[ç¶ ô¯‘M9ôÏx­M¸¡[ïp`_h1±]ßsÉðÑh=îcií§z!»HEU®×‰œsëŠÑЙÍÝáˆ6ºÎOÉcHŠTk\k6 ) E•ÙU¾‰ƒ3àbÞ”¥ÿ8ÂƼÀðÝÝ’0iã*°¦ˆ D&>K“ÖPÌâ-©i6 žbÎÜ.œ>E±»~ëñ ¨Ù5¿‰+3Û)æ·[†ºÂ¾ÉtóË¿8bX„Bre}+-ϽLEß¼&ä‰ní.Ï$üð`°š¿M<¢1.c„îÓ+0Çöd ®‚¤9æåjõƒûö‡þ+LIpcÓ±#idÛp²3yNÅ÷׈9ð ‹!*-—KŽúƒÞû&r0(µ§<wC˜Ä¢zû¢ÖŒýñLÒ7W“×9 p0(C!»Š…ñ…5Q ®œ@¦Ä‹Ü;žRS6† ûú«³Ð+và`Žd–X„ÀþÑÓ•ôPÙ#²Ã]Y½ ZêWI”Lz‘žU{tµM¶Ç8i°#x|ŸmOl£CÅõy4¥µ@Ç2uÓ_IÄ´j+Õú{|0÷­ ±A²s‘åÖ`’aErë‘bü6g)Cä2ûù,R2*(+×ç‘EýKMçk•+tŽýaÌÞlR¾µÜ±ŸÝë±ÔR¥y7Xª y4ÆâØr‘;f·ûbizEí슶Cù] (ÑÕ~¸G…fe,vþl“i†k½}Ò¾yû¦SÄ®–AÓÜ—.ç3 {ÂKä\nÍ%zF"på¢m#ó­Šò½Y‚[3ŒÕ‚ñðü«ËÝ ¿bFß³b<'EšˆÉÿÅ­z}#(LšJyƒ¥ÞªÓø&KS9TÊ¿Ó Î,ûw‚6Réý†JB¤šEôç˜6ñ' Ù“Âg›¥÷_v¹Êÿ­é(MÍCç7º ²Š¢ìª¨v–ØR@–ÔR8='¸‡~LGÆìiöˆ“ZÝHÁä¸k¨£_¯õaBÎÐz÷4G)ÕT­é,p÷qíþ½ÿf9^GлÆàOv0Åcr#º›€VN/”E¬nY9nì9:zé˜í¢@þYþÚîÁ¼ýÀ„„×,ã—Ã- O4_ï¿}¦|+/<¾ÕS­ J9·Ê:ö;«õÜA/.׳Ç$†ÅO‘<“ BPXü>CCòäÈ鄎ƒ–sþ­0&è (ÑrÛÆ™í ý¼KäÀb!)2©aW#5‚³­ÅŠ&ÕÊÏåÖs(Dvûól7PéÆ7¨-äƒÊÐ=NQšS®cè <Ó Í}»‡ žL×æÝ¬¡WaP"àçKeH>‘o ð$R› ðOöË£ˆ5g³ÃåGVŸ_"ñ˜Ë`Ï9)@*\̃q°‚5f TšgBÙ#ªýÛŽ^Qö|w¯*Ö üi›Q¬ý¥‹—˜§»’͈ø·×NpTlý=k ÜD£²éFÁÂ}Ù\P†Mk,êqjHýeãmŠ|ª .ƒ$šMˆb­Ïù¥ÈTß|ÕSÙïÞDÔÊc€\»èA‹ÆD&§`c€©Šž'#¸Ò>¹¼:ÚxŸÔcWŒÉ ^ ±ã]ÕË>ªäp~ïù_I „W>ÞÍýFcõ‡Zˆ?€Fo#z®pÀ4¿‚ «ÚÙú;¯)†3zíqò<1ưtw{?>±J‘Ò Ž%VCb„£L¬#ûcpåF9` ØÙa(ÞÓÁ±]4ª˜Ö?TIaT€ŒT÷[o T×Kf0[dè@M^{¢I ø­³luë‘ç@”?R*Rpñ.;ÝD }6rþWôù¿)Œ‡:Rm”M­‘ü½Ñh‰Ðq`“td 0å>íÿå±'3Œe¢”A+“0º¸.LØš^»[Vd:<“ï}™…ôn,NŽ“Žô„‘Bì­õÛAK“ÃÂ@góvª`ÐHô‡k’ÓÀ²Íž¢Þý® Îv ÚZ†ÃF³vbõé(þF$éíwÝ—H±ü£šh´WÉø¹%á¢$Y’b /ñ ‰D¹´×­¼%W¬–örPïæ¾•ÿÿß "œæØEoæ …@ÎK™) ̕ݗTíúÌÙ&OµLPSý@2:ÄÝS¢+x‰vÈ`P*yÇNJaÅK^JNÓ<Ç *«®y°Ñoör°øK52œUZIJ5]þY4"Ýõ(À|lÒ‹ÃåÈJDèC®« ¦n¡õÀH¹ù#8ÝÎìKGjð"Ñ 0œºñ<“=îýÆZ&Cz–J\t¾ÕóÐÎ÷«†<ÿšQû<ãkþ;^7ȸ>. ±¨å¥—ü!}{HlœZvBt즖‹KíÌS÷^Ež€ÇàtéÒ××(YÿE7 Sà÷=ÊíÈ:z³7Û_ä;Ì!–g/ºpÄ:–?98„¡¤7kö™³;SEbœÐÌ3Ð5R7‚I‰Üë*Q‰·Pâ0‡ti†:¥`‰d I(ÔËÀÔô6L£])[¢ìPÎ,¦ÞŸÉ>;§^ž7\Þ³«’®oú1ªà‡£žq·Äî‘o'Ѽ²ÔhæíP]êg6lÔ$þ€—Cvåà&ÜI ÁëþúàùSù3æûžÞ Ø;w:3®î+ÌJذ~¡Jgù“Ü—*qòÀ7†V‚¤1çT›Üù£¤j½ŒÈ!?^{1ñ¹†x˲îK?ךÀÉEvZ÷gœùí]!%Ò0é—’à(DØn'ø_° jI®øbççî”-Ñ9g¼¸IyEœ í£l…›«ãµ©€ÞÑt™ûŠhäüî¼§uB$¥M%1ˆõqåù†t¿‚¼Ú )¹yN[Ù1 S_ŒEÃwíúk£BìtÈõÁ渥ŠÄÌd_$8/®»™XÞ‹ûز îž«oê™þïÝ*+Ýxø¸ m "ªŒŸKøX «xY#ユ.Ü5ÈèÔr®k%åð"î?x€Á†Ž®a5Žû;²o`â¡ß {"DÏIzJ ÿ«<ëã¼#t„{”y-ÎOrÇÙ…Ï—wúm—n»à}U$w@âJBç3CK¶zä3(7ÜRNŠXc†eiÄÆþñ·uúÕ/ì&’2.ÒëÝ9‰ëÃVÛ8œ2M€¯Âƒ¸@ÈùSÍÈgb»©5æ¿ú²¬T'Ð:m„,N)‚ê¤P´jGEž Êšc ihz°&¢_áT¢GèŸ Ò© AÙ»µÓï ¨¦÷ìµQò+£3ñÅÑÓÅ%DjØlö­_ Þ:»jäQ„‘GІûuÌY;ú?ÞtbJ…ERÌ&‰¥ÿ¬Ö&:ÑÞG>b rÑÿG%"ŒÃ>‡õöœéJ^=ÝhCgÒR§ôHæ‰2þŸ¸“êoØeÚ>Õ@'ð\£óSatäÝ'qïž{tLøÚ†d™]löcGê!ݪ'¯GíÂÆâxÛb·në:ó³×L4b_G²v„ý Üöú—åE$„n€þ-‰€ägé,ºÊh ‡Ç<=Ö¥n<܈Ê?pÄR6=Èôv¶}¶þzuµSÛ:ùÏH8­æÕ©À&ÁÙìîÍ–HKY-´‘ÚÑd,¹®²ò¥Áø5L¯ÑØ}4ør„õ[X,€êÄ€ÿâ°ò}gMkÊ&àîŽÖ¶®Ü^£¾•Í÷§x~Tð„ ÁAP.#}w>·³ôìb:<@uÙ;\)$G÷t.žÕ¥JT‡Ù>*ŸÔ òéÚ–#é(Ûáø'~Ti³fɇ½º”–H/Hé,';Î"ÃÔwß6¹¯Â‘+µ’à¹ó2ï›´ŸP#QÖˆe !øÊ"¢Œ»Qj—$”pZ×R‘M<·ßÿ÷c4Á¾šênÑãÿŽ]©‰á7_Hw|jà1-n0Aê€RêèÍaš )64ù…FÐð²xaÁ­°Y4¹¾ÎŸ1ëræó›$JZ´÷ «.gXq‡½çɤ¼¨ Ö–-U_8vV½ž¨9[$-¢^ªÈT¿Þ$1pª®zâðΛGÌÛl÷Yá1ýÝ3nŸ…£Šà$–Cg kü¼µÉòѱ®Kæ¿Ê[ûìeŒ‹À¿÷õ‘¡p£’…À*šÍje¡Ú2Ç,ÁÒæx“Æ­’Ý¥øF‹ššSc®ž Þ¦´Âô†Èó&…bÃxñÝÂ×*<¶ý!5ï:›è¯7µà þNÄš-å„ ï ]Îóx™ü^B›*8¥UVb:7^!˜Ö;ÔÆ$[ئý7[ÀòS€A³Ó©í@'P£óDiîØ†¤ ‹!"noI"T­nPTVŠ_´à:á:G›ß_ÕçØ´3DLñé OêkßôÆÓ$]þñ\„Bú¸Ì«ÑÒÍV‰>|Ï(t˜ëŸëj áh•–Y9ð4$tdY×£(•…𣤨‰ùkCô…á 'J®ž³ìóÈ®²ÀöW¹—Œni­ÑÌo`Ët.gÄ j^žïHwù“`Ùˆˆ\ïƒtÖ*ÍÍÆ2¿©Å±RN±‘|,u†ý9€±MëÛ=;R÷ê¢ ŸÇ­, ^»&Ž^“¹åààìÆ÷üwxj’LÛìÂÝù³v]¦²…®{Å­T:AS=œtÎúñOÏM`º ÑkJÌÝeÔì÷+‡E—q_Xç]•.Ÿ¶ck:ûò¢TA)À—áÓGi±©„rü—qœXV2™­wvÉÓfbCÝó#ìêÐ9ú‚@It±«pC> 9ŒésÕ ¾îe2æÁŽËw€ÊT9…fö+TF=N€­ÎÛÑ'ý_‘¨uÜ¡3#÷òßId‰¦³°Ô Æÿ2†Ñó'É*´Iäsh¬Ó´1».xêYb‚+ê8IÏîÜÏe0é‰~:=€G™-&D$}o³Š4ÝÉLÊSsÐLzÊš:lµCígx-±1,þ¾¥ÝˆÊ¸y€g!þ$WG¬Z[ú¤ðIKýÛùpœyCå„"}Õ¾C‘ÁëM²¾ÔjL ¯6 ™ªžo„h:ÞÒ†âA¿Œ|‘dÎúºk6«”Ñó  SDfkΈìß#„ÃëC­Á0Bg_ÑeRIÖ+D}mêµ®¾wrÆÓ¨—2‚jÊæ¥5Z$ʧ¤Þ\t ;»øªÑ,P ý÷–ü¹oS¯³ÙÌ,ìE÷|v¨­!“ž0­Ÿjb¼áø$lXƒn**ª)üçìÈ‘JTrD“*à›åws¿1`\‚æJ$[Êk¡Çœ¹ÚKÆÛýPp»Ò©ð€NÏÞåµQ¨%‰Éf=–Ùjq"!uòoÖ'a¼½Ó„Uÿrú~òaڳǒÂkÁ‚”ÂÔÎÛ§ÌDf¡LX@Þ+ê ɸæju…í=u¤ÿuWÜ2·d)AO}ˆSlž7:ÎùUžü%ßNu=€Þ{e«D4è>Ð&îÝQ¬à, R\ᢻ^V–$³‰V)tÂqæóʤã¼ñÖ (•”¿= ¿”± ªb«íÛØ>BhKSÕ ·€0™Ùî¾d¤Ù=•u”;m蔢W£ß7!A»YZUÉ|®*.°9gQ :væhÑ}^‹[ÒWû÷5ð€Îr› ¤QIb«Dêa®Êk1y2Z©9±e׈/rLfµš•–†9ÒSŠ™´†Ö§cñÿ,BÞ|i©]8u8Mºô£­¶¼H ÊiÀÔ^3¸HÂ_…áÿu"x>ú}_P5pïÛe6¾úâ°-®ØW5æÜÏ6©[þšµºÿÕ”˜Ž$¢â‹]k2ãèΑˆò"~¢ßf¾µßþQLqxî|ªTxw7~L©?Šƒø²_9%,œû¾òã£ÇõÐY ƒ¡3€Õo³$œ7=wf AÖž«2y#¿'‰Rø-D )^í®ªT¢“a ®¨УÉT¶Ÿr@mÃp!Ä+N£.?‰þ 4Ãõ]C¡|çŸÞ5yÀ"*U? b…ß2Ù…2™ûÆwñ­VW½àé–)4 Èû/Ë«àËÊf“È éáþDny^"×»QƒwqEÕsyÕ=-êòsÞŠ.-ÙNª½_ºÞÞO¨Çȯ î.õm-K>V:KöÙb~j¨ì*g1À°Cœò܉ŸÉGièh™{œo*(õæ½îs8—“¦äµ“){‰µL¡sT†¸c]#ay—‚^ÚåÐ`±_°öh ãCk ÷«&%áÀÁŽÏÔ^$]RÅ%Ãã¶þÅöá*D68g"'øóÛiÂöÚã&:‘2ÿßx×ã~xx¹¹ž6Ž>£é­–›®ÆI¾ZÜ€è{¤q)jO™y”‹8_Éå³2𸢮ÙV9"±L•v_¬b+€ Í1gÕãÃeë常yæ,)}½ëlj+F^KèÆÒ܈ÿ J)TáãRÈFë½C©6Íþ®¿j¶÷ü0ç„6À Á\ÿ¡#=²äá íGI0`üÕE$$Gc{0ZèZ-l%á|â9Mj~ MÞu-ró ÖèM4¤ ®I*ÿp¥öi«ûBÝiFJTËŠ¥Î„Y›,ðjWŽ $Õò²@Vyiûe5ÞfÕ”OÔbQ@MÉù>Öò©¥ÂðG9@ÊÞº—"æiWH›‚ž)¨V%"áP^E+ªEçôTuö ‹ %åSB#Jüft§¦¾v9®"ՠ豩 I:Ÿ}~VÒêÎã‚<#üx¨Ê#‰õí_Ù¹hòå’ô4ùª Ÿš_’_ÜQóT+>× C?‡4ŸÐø¶öôÚv¬qÈpm0(>h/mÔÂf âÐ> …m=Ì]™¶JaPç2~ª-‹{;õªÛ¾š­È%î¢PâØX„WÞ¶]!ȵÄi²Àz½ ¦õÕë¡CY}{2Š÷ÐZJÐæP—Œƒ%ÖëzC>ì‚Jtk:¯b¤„ÎF|}´3üº1fÔN¨^l¶K£>]r­‘}XƒËÞµ-Æ/à]™N´c‘P1‹ôÔ–¯MYýS¹Á'š½¨ÎxMèƒË#—³fXÜyOKíèíeï*´‹éٲŨ0IXM]$Þâ·],aAÚF•áLt6¤]m( ² "®^ÑxomtáôÈ4”öE/´ü—–ö´zµ3gÀ rØð[¯OÏè×f f•WŒª› «•'»SHÑâ8 øu¨{)mhZ¾âÁûÍÓºg@~Ñ x@Vg°œÞƒèöóél]§ÜE ¡wê’\Œë+±lj/ɵ¨5ÍĩƕĽW=^vÿñ…(æÌ¤noc ¸ÏLp––%¿ù"›]8’““ î!¨ŠÜœÑVx]Äî¬Ô/ƒ¾Q)†N!¨b¡ßd¤V«Ü<æýpzÒѹK¨wí%Ù…£p1L¶°õ<¨8MÛ˜ƒB,ô¿ç }I5Ói2hwÑj¢x¯÷Ö„ò¼eåÍZ÷p–‰`bî·—Á‰%××-œw„Ë˨{(ð÷Îàâ0!ò,ÔaH܆‡å-Óp{¨ îÍVqŽŠAa¹u¯aNG>ɇGL{ýfv9_×ãvÒú”/–ÞØ/ô+y+d(ÄIè¨á™ô‰ªw-±g,NÏ¥^ç-ªíÿÞÐ/ãúb¡ÂÍÔn|ðzüë}f iH CTñZN+d“kàø0Aí{9ŽAù ‘Ô’ŠW'Eövú¿Ö9l°sDdÏ8Æ€¨D+`³Sâ®Añà‘¥o³vÚÊoÁ¨„<1ö?–aÊ虪³3r˜üÿ‰QyšUit®_ 5îBÍaFsG.Ù=»<‚2A5Hž2ìÅœÌ 9ËoXÀH³F7é›lÉ8[¢Žs—t˜ !58Ù÷Wú ðÀÔ>qbÎ Á?g–oHÇ0¹+7ÊD½…Ÿðš€-¾Øó’6å3;K¿j@h¨û}óHuÒæëý,¦LÝE<,ÞÐG±Û—Ï3Ùú8-ÍÈ­rÁJR´OÌIH=ú?æ|aÏöý»zS ZûÊ[u+ÒÏø3U^&äëð Ùc’m‰{\\6•â^ý\Xeì³™¸s'Ц>8>Í"Îæè­ˆŒƒÓt=!×Ûêu}Q® ÚC6–B8 9v)lN IúŠ1Ì"Ⱦ†¬‚i´Ó{ÿMbù&1ûçš^]¼âÔ2À‹Øzƒ»€ñò€wn÷Ü øùÃkÀZPD@ø©kÇ,v6Ÿó³¢ê‰€À³5°P?+#–2É,uÁÄŸÀ°[Ob #3Þqãô9HqÁÌMN/#Ÿö“„çªFo²ú}xæR*{’Ä»ü”ã—§ƒt$»,c²}iƧtÉG½}ð¯ ÍÓW)å"»³¡—æØ1Å8Ì%ãÀ¬,tÅ6pÜ/íD¿‘ ”ñ¤$褌BÑœeô=Ÿ®øs¼9k_âEt1{Ñ•s/º¼mG¦ƒ£TUd”¿‡ÂŒ–h™± WŒ®u*Y¯÷;ã+çeÖkKù&ÎB‘Y·°7bå1ß¿V–ó?I‚)2©Ú>÷ênƒ®þkXí0¤rûZ7|[!Ôï§Õ·\Šr-D£~4_ .ß›û &.9ŸŸ;’J•^@¥t Û%c 0~{‰¶ÆÀ¡¶ÓEÔÀ^«Ø£`û ?¤W˜ÏÐðPliÎÊCfXòŒo:$1VV~¸,1kÌì<ž®§@|?3"šŒ„3ªÚJ®; bùT¨Ùï±"³™óðò=íq£S‹ne¯&Ñï÷ÄþßûdL¤ƒ›ܨ,bÛmº|Ã0w^™·¥%°‰öu¤°¾lñÛ㌡Ÿæ7;cö˜Xæ£?ƒî&ÉÎÏUþâÇÀIYbj}”‚¶©Xe~{è94ì¨ÑtG®<µY¸nÉŒÍ_FÈ„baÖOf¹‘1oô¯²â3ÀúwZ|”T†q{zêQ¨ˆ§ Á¡öõs%bVî$†¢«òXÈ‚¿Ï£Gê[“Ù6$Uy4â†é77iqz"ª Ñãl¢håG²)\Bñ Æé¯óa½Ç²œàø$× VÜŸ_D”S™R4ïæ.—Â)/ÐÚœQK-â鬥úÁ{Éo!@®ô&D¨†l£˜¥Ìðiâ^.WÌÌŸ–ìK+ý~ª:WáF–•Úp Kyu2ÔÓc9(­òÕ„–ke¢ODÍå©Uƒ|Âa¤es2ìÄÅ}±Ñk°KÌ(Ka„”% “Š·ÃgTOi¶Ë,ÿÈ}X±ÄZÒmç“jš9Gx:Ût€ŸÈ{1gâLç9*œn@.Ti¬ÕCiŒ¼2ÕÞÕ=ÒZ#¯å|8Óܾ ¦‘¤jDѲUXßh!Ÿ¨;g Q*‚9pècì0ØŠ0¯-ÁÙ©·¾jæ*_ð7U½*Äm "´QþÜ›¯Ö®¢Ü[ð±ÊÜ>X5Á=¢Þζ¡‰½Î”‰CTç<ÿ4w¥àC¾Ü2¯eT€`ýÐ% õ¤ô·”™ƒ«Y=‘À_ÇÎc.|ÌÅ™U®©m©`å¼Bξ&Û¢Ôx„BLŒþs%ÔLªn>Çce?`ð Ä0˜N ¤ø9#,žFÚ•;uªû®,ì±êüƒÑeu!Q£œh 0|vYµŠ6nPØS¢óÅwÿ†Ô$VTú»š’“/3*ùš{¡ö:ãÙæfã’Õu?Éo°o¨Ëáɸº¤ÂXƒ4ÅÏÓꢃƒIöþÂÕ©´5j_)Ë0IÓ„°uâ9A0늒VE|fÞšï·Dñ’î'*Réðgˆ,h@ª×¢¶æ~²ÚI¿9¬¦¬‡útÅ5ã8_©ì7Ü¿ïÃ_«U„‰n§FìÝ·§³ ¾Ô¯ð¼Rm4õ{† 4°Ùî¤jè§q#B³Ð ü\‘ȯ Ø#`ì›# ’#mзäøíß èì°Ä×EØ<)u%Ëå»Û„XäÌÄŸb Æš¶[î1³}¾%0@+Ô~ʸƭf/t¤²Ï´:n%z’`^KKÄNN·6,®@%&œ)ÉRDy/×W0jמöÄåTÄíÂ]F£oLm‡Ó\å"8ökl €»»ùºØ6ûÆb“ws§#„a£îXP_ æOÇ™ÛÛm¤‚ŒœyF OT—­<þg&T>A—íÊÙ{µÂžn¸ÍÔWtÇpRsxZ^0²Þ~fýhmÜÓí 6Âøê!gYU=ÒX­$´‚Q‡½ŠŸ3N–û+ˆn³’PcMG|[ òë³"Íi¯ÅTi¼­iÕŠÛórÜ4OKç³áöQ넊ì6­¹Ñ]=±M --ükt1/ì\ª4„™oÂi ƒ;W7+/y£RÚ/µTvԠˆ`ÃlòsÜÆÄ48ÒÎ . O‰øŠk2h5 ëž›—¨ïôçwe•ÓäéóF’™«ú¬Ëg'h”Li:ö£ŸAæ©]¢­OA4àX³2iÒÑ'¼VŽÒ·°D~™´hé\ëóa¬˜›]ŽœNB»oGf'$ÒHó"íÜNfõfÊôÓW6ñ¯ J³ÂO=VG+lÍ'õuOg@Dø°DŸ^M²Ç›°çˆ}k–/ÒöÀàÄþËb% •XÃÀy8éàʯ‹yóG|¿pk4R§]à_ ʉ(Uèx;_œ ,6> ÞǸ‹ê »´1îçÑ÷EììQ«P`(¬#ü]™Þo®‚ÀŸi_žHXëM¨ b0­˜ürÝžÛäõs˜{ [‘ÖNîðKÜbWÍžåN˜SJ`ä·ãGõ,HnÙ8Tõ_8™áxX }2æ×Uý™·E% 2û¹3yÓø5¾°»3ëÞ1¶çtJtŠ©;"HCö0‚°¾Ëð~ÁQZ¡r)FBî·PÔ”ÞG$%Pà‘1ň’ƒMŠ>ïΰÚe‘iïìøÆÅÈS†û£`ý¤³SבOÑÅçq®ëJ{±yè*˜ \LÞñƒ†ƒòôÆD6‹Ì­e-ò»kóŠß¨±Ö*ŒMÅ‘eŠE'§Õ&)ñX 0I døÚ_1ÅdQ~))~`XîéVIZ=Áê?`VÑÍžÁXOƒSáÕ@–v-*>;v0Âyˆ';„8þÂq\D›[­âÆrÅ6hQ–¦žÄ!-xÍßÎÉÕµll¸i;½?Ð鬭FÌJ£•7aï{#cÉ8¦¨÷S[ãûS\äæÞP¾…M°àüÙ9E™Ih°<_Š–X²,—KTŽf"M’Ø%-Dö5:09ßåó»ÅÕœ­K¤ÀO}u—½OW½ÖÄ®¯ç‘”,bnî—óÞOP[.˜£P%ôj_D‚s—(Wµ “˜?¼bÀÚMO1œ>ú6!7‚ÍA#ÊÊj§‚žê*°"nÐEEùQ}9M®  ¯¬Rz¯úô«v]Äl Ö=;í`\‡‹ ôúØ961¬yžAâ1m(¨ôù›ôIæŸÂ³òÖ¥ù-ä>ArêOý•Ziw±£F³\!\aÕNsªU›?á¢-+eª€²†^ª[J—n ?(<¾p-¢V8½zïék¦Q÷Õj¿|â´Úo²ŽN‡KY}|,ÔYÿûÝ£öe#P€A'ðãO§ 5pfPˆˆîâDж¾-ûòKƒü~v³ØÉ 8Ñ…ÎvØÛþ%msÔj¶f“õ»‘˜j=ÿ`¸ 0À€(UéæËˆ“0})£¤é†FÑÉ-IfE<ªémT'D¿-²%–ûˆ²D™Üñ÷ AÉ! ã`­$7’°z}Ñ ½Y%aÚØ°^eⵆ>rÏê[`ÀɪZ¼-ØäÇ mÏ ”çŽãUpù &»¢¶ÍCCÅ­îI•®îÞ޲Ɋ–ùa>Tré\6¯(‰`hé¼|âéc·Ðiò‚TÆ—ã? ã)t&kÍD =4n…“ji¿ŒîÁ‚gŽvT¥ñ '@‘eº=IS í(3Ét¬r ÂÔ+ Èí!ójѧ­ÂWà.ü}fª³–{p5Sg¾£¯8»6ë-VP†¹¶ÃýFÈÐrn§üX—؃—JFÔȲ`ì»f#F¥Ÿ5‰Õ5Püû:ÑÒ¯˜>l '[» _Å>&m‚É@Ë+ñy-ªé2CÂÐi-N[×sá…(=oäË.寏HÂѹ¼vÑ÷!©3ÞTé„­²ÚÁÄ£xå¤vðCΣø ,¾éÍxãAs³ »Šü>QÀ“G|cœÜþLWËã›U-M5¿_YŽWÑÝ¿¨ZZ–îïDqñÊ–èq-~c‰» É´Ù66¡ûÿ$Pÿ˜W÷P*TK:2ÜíÏ%Êù–€8šêp ]}[oCñÓdR$@­š Dw3sA7µÓŠ­ õÒ|²×Û3à+C£¹¢áƒÂo$-ýO¥ øõ E©9‡UJÚ¿ñBD|¬JåÞæ€¿ùÅÛÓm{<仂ElXصça\’È@Ï…’VÖBÓ[!š0'>½GF%å ÈU§œÃ+âx¹ãH&€/Ð8E‘Ö¤¸«›]|…`)uæoZ÷$ÂÒ:ÌG[×a¶Utíf*‘ÊÞH—í±:Y˺žê±Ðj"p‘wãÁ3ÖÇæƒòS¨–»®î.è9Åah"ÏíÎÈ{ˆwøb¸Äjþ4ýÒâ¶k†wŽøÏslÂV© AþÎç½ô…[Ñt¹# W÷çYŽ|11ƒÇåÒÚ³‹&v ïÅÚTÔ…3í5¾/;ÌäçxR¦n¿²x-ªl8xùS·ujÔiÜU÷Ê/¤ÊY°ã¿b1-ï OÚ•ïá1 ½›3ï1±ê,§yó7Àlðw#µµL Æ54pJç|&­(;-6?ú°wªý»ó†~bzÆÐ9tf$ƒ?,U2Ô¯Q<¸„0™DL¼ü²!ªJFî!`oþ¢A^ºÕŠÒèk–d.„ß—fJ«hÁ“Ž8[¶túÈg0¹Xì9žÒY<>·™‚97vx¥Í¯)ÕMOìØ !'³p.%3Q”\’·¶cþZ$§»Dƒ,Êø:Mz u㣗¿hrAñ.â$;˶>ÎÃR²ˆ°¯Zn?ƒ¢Okã©Å‘ž3û‚áõ¼J4B3´Þ¯ùÿ—‰†uKÖ%¢‰!f¾§üœM„ÖFö+x®ªú **ÙMÔC©PYê-hnGëå‹ûÑ<¤9ú5)<&Z!6©ZÍ6 >he¥ŠŠ46¬¿ÎM@ýALè5—¬—D=-ön%šÀó6d•ßfÖ “ÍÐRq%(‘lZZV– ¬Â’lu·¥Éºã‹cmáB<ÑXß sX¾x¥¢²®ÏºH’Fó ø—OOŽÄMNcXé®®…fÔÛxTöºJ9Âß"¡#üô¯UgR8Y@Ö†cnÉ€Ê gM•~©Èßo§†Í»R‚ÝQ ×¥B¼Y¹ðâq¶èl" kÔLf3~×5 ¨äùgœÛaϬsþŠ×6Ð+x‰‰|û+2‚OXüv¤p–âÜ&THErûþöN½#¹WF¨ßþJ"æ¸íBóJðGú^¾A Y‹ˆg  ço4}|°æé2¸“䪦ûÍrÞ˜'T8ЭË?Æ–æH&6 2•»|W½ŒCç?Y¼ƒêiËRûã®žŠ¦’Nåfè£ñ(½–½N±•Èmú“3 rfÖìžE9 ¤QÓüÙðd­"cU—:pØÁH%b0«Gqñ¶CΫ\VÆ1qY‘3qA0*©Šo ¸6+Rµë6|ª0ëÜk·’Ì™  ٴhw®ÆX!©Íi³c:»¥Wi,ú1 ÉϨè3NÉQÌ`d¨µÝÆÚ^5* MFqœ \%©I¤”’ ,l)5]AàpÔ÷¹Ÿ¶g·@‹ŸÏi»±DÒµ‚ú‹ªHãjàYÜ”<½ù.¤Ê|¿Ü/|×#þyàâwAÙŒE¸ç&˜¼•KFÓÝÚZª†TWòvœŸ=Ìi.5:V@!V¬¸Êh°±M•NŽÐÎÍh’±u¢x÷lƒ§ @¤üÓŸ!TÿM@`äæÖßèt¥ïêh!ü¼Ï Á #oî$?ZÇÁ=­rÂ-!ÜõW?&¼Ú¼á/©»¸ŸkùBRÅ„nPnwjQjƒ@œC™T²nØS‘0ÄRŒ-ûå@y3œGžÖ¦V~ e¯OÎªÌ ö³4Ï‚?!· €ÿ¥ûÿb XËþgÓn‘ò_3HÌ%ø)öm°B}¢É#ÈC¢‰–J™è³þ÷ðª 3A¡¶D¨rÏö™–@õ¡¡Ûÿi1! ªØò±HëKO4)D±SÍ­òõŽañf¼vÃãu^'xèi@øZÿ ê9e„þ ì‘Êü‚È=à*ºæ]}ƼTLÒ‹CªbÌ6ÆB)ÈKrÇŽ’=&ïØ÷Ú ujq¥,;ø“acÆ4z{¡½`UÖ4ÃzŽ^_:AèÞ­õVrƒ^ <æhÑýIš‘¡' uÞ¨òïˆõÁMËÃŒÌwb¾Îâ£Ú ¤*ÃÎJ9•VÌdžIrB›Z„,™õÁUVM8+Š÷!¢÷‰{›7%BÜœ´À^X™îý ÛC_¾ä ì0þ}eJAŒøŒíHÊ;ã;©(Ê¡²w‘Ú€¹]AXX9cx®«Oo5ÇçÉI®1ÿ›€¬S™‰*´4Ý GåW$\”2c·ºíÿ 9æòtî+„†s!ýÍ‚Žtt ñ¼ß•ƒnz†NIßgo dl©[¥ñDŒoËX~ç×f“_˜#˜•ëuÎgfkcý§´2@N®ŽÖ™õÁ¯‡æô(µÒ‘îøSô_~ lqÚÎ]Ý — =(Ó‡:[sÙžsi9 ˜ÑNäu‚!»É¤¯`uŒ%ƒÚ«ž™5l™ÖqUêÍ.W¨¡UâjÜ)ó|`>W ßÊñ†Ä)ŠíÐ??5ôÆAhIÅ_sT@`lÍTÿU ÎòZb!44Vˆ“iî47VzL?-¾·a補Q5Fÿ2 t?Õ $—î¤áÅä»#£8Ó}!`öƒç’;v:äÃÂÜߤ ©Qôî6)‰eð0°†‹(êzãÊýÞngW ÃHŽš¸s¯ÑVQa™\9®Z~â¢ÛóÓïE®èórÝ$µÈOûJ7MBmäuÓtFõk_@Ý}š=m½¸Tfˆ‚S©oýýôoB ¶bƒØÇ[Àj){upßorèYÊRW6~émnuýÉ1¯.ªû,}­%*®®w²ï’˜¶v×| ŸSÎôÏÞŒ€M\{C&Îò·9ê´çžš7§Œóâ©„û.„©v¥ûZù«]K’5ŸÒ^;Xd‘ßejĪÜbЖ¾68Þ­§D© ã%áv™A-`¨/ÄNy if•ï¥TƒÄ²KXn@ÀG!PuOϰ­òqçðéþ>éIþR–lNqÕ­cõ®_|¸'Ë‚c8ù튜ã&Fµ˜Q¸ð¶³ÕžI¯Èûçj4ùRH>0öŒÆ`o(…룑À¯\ËÕÛ¤CkB–Ÿ[Å*†aPwÙíâ+䨩ø;l1”€ü,…B¡õ¥þÞK&Ëÿ’`Úè{ñgÒ¿fA¤÷(‹Pc:^”_:àKŠfA„Š`èa^Âx(²Av½Z1±Cò€Ãª z‡Wêâñ("X1º:ü à~V§*Š X[²M`£¢³ìÅ˵qƒø£(‡ÆŒÆaGD¦3½ÛÚ¹ÀjuEÏÌÓCì)}8¢m¶60›êë«O%½öÔÝ«õôúǘá@ÚÈ”Û×Ähl–ÍÄKoMw®§‡ñ"«˜‡öÒ§’þK°»´"ËlÒ` öèµÔ¬Ã_]¼üuçì£@¾¾€Ä÷ðÖÞP<9³%öÚê_’Gï`f”ÑKH¦GXñ„NÚ=㮄{ò{/‡ö© ø%.K¼p4£ñ¢,…Qëý©„3_Ö·É­¹tt$®²ŠQÛ‘WvÂä nIJîño ƒb§Åq†Œ­0]sÂýÀö>Iû:¨u>e«IBËÕ5Ô.½d$»©4ù2‰Ûa¥qeçWp÷D`=ÿÇ—ŠaëôÈY—¬šœÂ„†Ñ P„–­{¤Û¥ßŠ!ŽZb$QÍ7Ò9Ñ7Æý†Ù¥Œ-ÞmÛËKzú_ègô¦äîðËGvö_UÖ¦e[ bÆØ†·5>=ë'·„¹Êed?±ù"wà `YÓ÷W gŒC_bÏâŠ+Šöô/0RÕ<Ï›‡ØAÆ1z([oˆ^&êù‰‰Æå›ñð/êµHç$áN¬XÇðè#TÍXeÎÏé½1ú*I}J}ë“u¨÷.#¨@ùj Í褃Ɖ+hM‚ħA>“9çiþ¤Ïõ‡›é΂ùWx†û-f•é [ÙÓ¸ 2ø^òós~Ñî¶p§nGZþwňÂhDé(Qé3w¨Iìþy`·g%gRœ†Ý.CyÏê‚”å1Q¡Ü8œ׺æ[m²‚ìYV#ÃÙ-ö±jÓýG¬Ÿ<‰¸qß'÷ðôLä· ¾ÇÎ’ž8½ÓÙ… ê¯ ÑøÄvâWžGÖgX¹"žåÊÉÉýÔɵ7Óã6X·s¶u¯¦ZêÃr^jb¢–…ô­ãÁo×tN(Ù°ª.­ô«ýh¦KvëN‘ ÈW“ñ‡=cP1—B¾‡‚ ƒòï)9k7­Oᨨþ U»I‚vŵƽf¢*æ[äN8l‰ðšrnÇ.Ü%É_Î<ÅÑ,”D:ÛÎè °§uÅ;f—}Rà,"ñ^ÇÕIzõ:“zvàD¦hLpDÐ:nr²Ï¬Þð¥[åÄÛÅrÈšÌbpá—%)F‹dY£DV&}¾q õ[i,o[B9½šLš&¿ÈÕg»¶Á’ªžDó&ö;$&™ðÄ6屇€Ör€ù§ˆ"ô³¸;‘ªÅ#"Áƾ:„§CYB"}áßÓ4¿®àxžÆÔ¬= È~Seël4qãz EòH<ÕA´ùûø8Ìqnbç0}^˜cù~^ž>xÀ#Qœ£[ ·HÅB èŽ\V='œP8‰“{ÿ[\â ª .Ý]ô~T¹!x.c¨ŒÐ§ÀpŒƒ²±ÓšP„"Ï•ÛëTÂég“cؽoÞS©ŒX'òFÞIŸãKW-ôõGÕÚm¸Ÿec–ùD?…•âXÍZxÎÄujæna³@Rç8L¹Ê¼jáÖœÎã1î ¸®Ä!bb˜)IæõÊ|s`(×¹ÚÍ`¾›x‘Ñë¥_à:N‰ ‰eß±ö7Y$U^Z0 ÜÁ¥‚C<}0i‡ñŸVa>;~›Ìs€êÙ÷Ài'ÊLÚ“Û5Å(Зü€ÅºÉë~;Ãi£ ^C”àíVj‚4š2å{à´Ûn¯.Ë•|ƒ³ªS«¼½ɹdÆ 5YæÛ%]Ñ…ßV0DÿoÒosiï·'¸žh°&¯v: j}°pèQSÿÚ-»®´þÈ‘îõs½e8„KÝAüë|E¢[ K< 'KrÇLy¢h2ÐÑ=ü ^Öà•õ6‘MÂg´¡ÅgûMK ´·õX Ç[f¸K¢àïiÑDé2@¼Ç©N·kb”ì×õL Ÿ¢B  Èlåšäe4‹ÅTD©ù€NÅ'“ iljK;ðDþ§2 õøFçO_tOèD /ùÀ¤CV”òì œjÇDÝ€õiÒ>6å¼ãøÉûÈ–Þüä/½™C,ƒÁ\.,Uø'zk¶üZÚj›éó2?ñ*FB¸_æû_yóƒ&ÊcÆÆõù§®>#[4;Üö»3®“7ªŠ™;›ÊéJ‡…{@Z3BÈO˜§gÉÕsK†ùy»Ñ¡SÔ®lEugÔ£v*AzÃW%#GM’ø„™«!qàn5[ó§zo#!R-Z›÷DJ¤vî 7œ-#²É¼ø´ªéGúîWãT‰ÓÀ®Ph®Õh×"UCÁÀ)ׇUõjj!î(À±J—$_Q3IGñ -‚òxïÜ“/#+òaÞ£|í]ê!o0W=龫ô¦€Ôá ‚\×d€IyÇb|ˌƓýgç/ÑCtö¢ÁMØÇ_;QSY5Q¶žúÛ 6NX{NWbˆÎ¯ätnGñØ•Eï®P?é ¤–Žã¼ ãbXm‡§îüzní©çìѶÕ4Ö¢—b³ÿ3dšºÅŸû¬a Z¸ÃÔ`dà÷lÉEHÃÈq¦tõ7*}–]t«~x[}î æ6mÐAK£c6eÒ'ó¨2`p›:<Æ»ñ¿êp¯Ô -jÏG3>_ž[Êd@çRëÑhžÜ"ùâjBo"/¤ ƒ‹õlîÂ!¾ú“n\}…“}¬ðžbd9îdÊÍ‹$æ´\ UŸéƒæOÔ*õ×§ðš(·K½ì ‰¶yIÕU=\Å@0"õ#V'ÌC³Ù…û\÷bð;zwꃡYÞÈ›ÎG=”ö܉´¶ûzÌA@7cy/Øw_3iØÀÅûº‘ÄžxUYb`¦ ½Ö|¡y@ ·&;ûCØO’ÀsUª7HhŽ1t³-(7Ez¶M†úQÒýdƒh[Ú÷kšmjÀÁO¢•ÎMß׿%7ù”i Wµyoï÷ý§\8Èr$ûd6A®pf´ÑÖMª(M‚ó|”=JèÇ|fœå‘¨È‹8Úë°Ê1šíöíá{,©WDn&+ÛJz(þ{bB‹®Þ‚.Èe åE£D]ƒ½¦9°øì?TÓnv'óp"VV8h±U¤ýY¿ wƒgéÑÂzZi«üû.r—“íDÀ¶^N§Ç { SäDá‘ýÔ*ô†F0ØO¼ô’&¶ätcÊT±X&4•þ…–ЬãÚÊû;‚åsíQeWA­ë6§FEÏHøA"õ¬Mã;*ª­Ë7Ùä÷^ûÊŸ:æ»Ç€ŠùU;Õ*&²”ˆÕ*9Ê¥‚T¡Œ» 7ëF¾G}ºTÈ2§ËÂÜAPG3†óª(0{v6¨ºXcH;{?³ó[r½|Ò|åOâ&¿þ11–×E³ûÈ.E%è~G<¤ œ>àV¥¿c³?´ízEÍ%˜1Hý›ûÿC-CĽÅíñ‰ÃÚØHߌOqÈ'¡‹½š뱲葶q‰OÖn¹§ë¥u€« ú÷h ÿ)´qé ø‹-4eÛþgn!Wwhçî>£àMLæAî¸ÌóÀiƒ{`">S-ó~a©5›c+…}&^…Y¸é¼hõAáOïB‹< ÛvåÛå‡î ³5uˆb™óÚ·íòþŸÀÊËm=ã"€kÕñY.Í5Óèìø*…a³$»äòØzyU…U? aÂ5OÚD5Õ$_tIÇÐÝÎXüÄà*šám®ô}ÅI.†G¢7Ó÷|úÉžµ1üˆw<Éòíĵg6Ä”ð_޶%Òµ(\Š]“Y„ëKÝӨׅ:“ýÔ’€(AÒyG€ìNÁ9AÚÓ\ðã28/iÑùßîhDï´:(-6ÁÚ+=b þõOwºXgŸ"­LÀ†t…›LìK÷ÉHoÃYêƒ/4šxÙ;Ãb ™Fý&+õ§)Ó1žÀtq6ÐÙ9n$fG–SCz7…ñŽW-}ùrÛç‡È-7Oå"A9k†"š_²êìò^Žì2×Tû7[â¿7²  äI({9Ž¥x»¹Þ n8Zõ´¡¯æ}%W‹ÅFŒ²ûë9˜“‹Ÿ Wò²ý¸;åPZ#òY[˜Qõby×ËdÂæôU¾ñÒ›.‰é ¡¤ƒ‰ÛjW5îå]@ÑLT1›V©yUšÓÌ]›] Ý._4‰L†Ç‡]_I¹ÿ¯Ž²òÞ4@݃õ󄱉/k"þtž Ò{Õ¼*òšq²güñÓóÐ`ˆn‹ö7rµ¦+~§ìüdíý¬]ÚrE‰¿ÍÃ)ทʬqû¨¦ç#™SAÝéSl©²ãü`”àEÉú¯ìÑ °=öÓD AZ Ýf6%P‰s…»¯î©Þ¼H,³¡ßÁæâ.àU¶¸ãØÏúélµ”x×kyRÕÑ©é£6à8_p0iŽi‹ª Î ÃØ×o(¦š DìUGâÙ$’Ý\æ‡v QS¨ÑV%·L[´“|çŽbÑUäõÛàOµ;3²C¡Êš5qŽʡž¥‰í°7?=Dµ±>¾@)É ¸ÿ£Ä“^þ,x¡ÿ›ŒUÅØD‰•Eä¾ÞÒ:w»”5 <¹ÒÌs"`£¢¢Ñ>uNô®*åÃÅa_‹ïÞ¼Á½U˜ƒ4Ÿ¬ Ê9‘ã\Ž9ÀN è9Ýôݦþ‘âÎÅQìÄ7!ü³±×[5—b¬hÆË°í5YÎÇ»íÏ»f)LÞEt"¿h{O‘ouÐ^û2‡š~æàß1·`ýmU(S‡å¤v®¶t­%(yàfN²¹0PËw8|»J}¾^…¼lr¹hKÖgnÝ{Ñôõ»¯/Y³$wó©*ѹ9vêËÿ‘EÌðÅï‡ÆS†Ù4()JäÝ©dt±oþ±H“hÒ`ŠO†xÁ±ƒ½©.À “õ Ý4HMybÇå»á‚ ½gk‹-bœHÇ{û¬õRÆËëÏÿþq(¤â ùÈ|1KOË#í!&n`À ˆR£›ēϛ÷Î\ çôÖ°3S¹Gúb¹†{¯ÂÝ’¡·—VÄr8¸KÔ­wæšÆpn­ ZàNóGê& µ¤ÇP©©€Ôµ2¡jp„œ:ŒbÒ †ŸpÞ k4ab’aæ+燧xÛ*ÃÍÃ`L€l#WŠ#m8êÇ ÷Ë.ªçɲ*úô?âç¹’‘RÏr,–°aEáò.¾uxTŽ`t¾Ì ­rÌ‹ÛhÀ:‚8€3VKÝMÓ¸‚Œö1ý}õQù ‘xíªI7¼Üº.à>:2piŠg‚F¿‚ÜígðÖ•]xù“|Ø×X³v:'ñSDã‘UÞ¾rµW[¥púßÀå]CmF&…¡4>u»¾å®³ÚC5 ¤³BR'ÄgÊ0--³¬Í¦ßÔ¢Š¸bŒdnÎ}È:gú\­zwüx©¾Õ®¼lÖOÀÉ7ž[cE­#:ñ¨¹ÿº´k˜Ù מYeìl•œõ€ˆ¯¬·'»póÆ5{OÛ…A#)¢Yî¤ü#Ž(à46ô¿ý š °ëg4©–-“¸œz”Gu 8YæŽG#Kº)9 ØA†jÆùÅî¬ Œ…‹^ñ¦±‹P΃AäЪçÆz^¨:Òƒ?n{ÎÚ¯U®P§?ú]¾òP¿Ê9Xõ¸kª"‚+WxIõÌbö£P¯®ïÌú‘ Ú‰<®€€T´ÜiAóõqÊ''nexa?(¢,x)o®ÚK‡Oȃe–)Ä'²^GUÜ/†ÿ´U‰}X¡o¾$žÐ^ãÝK{“f œUêá\ÝXòÀÆOÀéZR°=Da®aÒ-pÁa4÷Ú'ü´L=Mªê ˜VYÚói´È>üñ¤äj ì2o<§iƒ¡ÂŸª‘®[ÙcÌ­^ñ öquóY  QÄÑCÔ'™á=& R¹ÉËMº!͈LÊ“«ZJÒ(Åýª)þ`ñg{ùÖ’…z–‘qj¡a1þ[¼0-rõܓȚçr“ÌmF ê^úâXí*K¡á¶¥ìwB¿7)K¹Rw«ÍXn™*4õ@ªÄˆD£@•øŽ¬Çéìôÿp%ë¸ÿgáìH FQÈK,ûƒ9nââad;Gˆ#öÒ¹ügPv&ú×¢º$ˆ¥Üv:ö‚Ðð ª/›À3q¾Ý¾ÊÉ“;ã¤Ò;"åÇ"KRNi|€…Ä€¦™"2gh«tp§lÝ“ÏþJŽ0Œ¼ssðŽžâCϪ–£ÆšÌA÷¨A¡ì¸,;,UúÚýJÝ¥»g_WúÀÍÝø—‡Ð^AhEkvh¹UH4ÓI„q’?b@^ÿªd—.ý)ÌТ¢î©°9ÄÀ*I½Í§éÒü—À}øXßOÙ÷¡`Õ9¢®?ã}\¡ƒÝá`ïÐè4I 5 +×;Ñð¿ ó•àüAìuú+OPðëcXš“½x¼Ý´Í"„­¯àóÍÃeæîןœ]$1/ÚCÓljP_g…¡VþÌÿΰ†BâårZB«foóL÷™@˶šVŠÅA¨E‹]¡PÅIŒ\¼ÄKwüj™&4<Ä«?@`½o±h8)F o”B6Á §’<ò?½ ÜT´##¬çßé©öÊ5Û©†güÛ9Av£[¿EXa‰S’+„l49ÀEob1@—©C& ½=°ÑÎ@Ó®˜§0»"¿NðÂåàÌE¹Û™N°0¹•øÇ‹þ;JŒ¾vʵ4,g䦂dÀÊLAGÉû)ËÝžÙºèQ\…QÇ™S7¥rS Ñ[Eã„@ŽúHT‚Œ&ê$KcïŠ=K\~ DÃcW®ùÂk=²O‹jÄþ6ŒÆ£(XT”`â@Ðèû¦l…ñåœ‡Ž¨B€¥×B4Ã<ûìÅç@>D6@®áFï ½8 î¼Åâ×I¾ÕL³ÁI©%à˜¨ÃL!¹à íP7"!³°½'$zM}¤ûW_Ãç¯ÿ™áŠ&¸í(-º€ÓXÑ«|6ÎA½hØ÷§¬î5±¥rì- —É­ÖNz¯~_5=ÀüÎtl+DS ­Ûu,B 7鹑…n¨%G¸üöyúlØ,½ïXÒLL4í¾u’ %D[‘-þGw€ÖÖÏ‹äjÏÑ– üÊ[?x„v䬧/iwûp¡-´ÞDë7¬7T2¿Æ¾ÚÃâ´/§)gЧƒÑæ!Ã%áúÎ…lNW*—Í¿úàY †^ÚF&ù}jJ NŽ€yͦy{ïaŠy'U$„:î ë3‘™Bûçc0Ó+(³Z¾CöËÒÚÆúWÓ8&I¦„#p«yYtAÌm&šJS©ÄÕ¡Ñ!å ?>ïñÚ¯ÖÉZë‰h³ã«C,\·uãÞ#ìØ$½ïÎlÊ$9‡ tH|¯´–ø›"›O­"z+.¸JzE¼Ç€×Oc–ÞHñ~7>ZÅ•¼2 ËÆ]µà4ä\¨¯]Ù~ùA!oUãŒ,ûЄ§êúóS 9¯¦à¬#32ÌÖMj\>01眞ç¯õv=¯qf®Ü Ó[ä/˜ª!wAÄ@d…H÷gIøBÇ|Ò~}Ï– I”=%ªÂ¬88À0*s˜Áák]kdÊisZ_¡^Y'E0M %å†Bõ`®6Œ'‘Qaóˆw«2°Ÿ3 ù¨¿Ãž)'Óép4’Œrt'ÀLÓ´&¶Šn±½Û$¶×·! CÀÂÞì ¦µÅbLêz„Ø¢XÝTYÓ¾’á-.)õÃ?âœc¯z»ª“]×iÆêÀ1PÕ¯·FÞè¸ky¬Î¥ùPU60ÛõEØŸ­yý\9SšØ(w"T9–Ÿ‹=¢[kj%kl„Rïàtf,^©ÒîÙ}+ûîˆ57E‚…{ùÿ\¤/'ÁŒcn‚›ÄØ%-t 71•~•ÿ_ã¢Ü|¶O`!ŠOÈÐ!Vc“¸àZš‚œôá¶ö€û#"¸²’äÑÈõ(ã 3z:愲np­q6KòX zDˆ±½nZ„r–‰÷Zqîêø&f?å²±`UL\t¨º»hïkž[ŒäŒ®º‘¢„ —¶œ¯¨ù%ïZzbËÎîü­W¥¸(C—*ï1f?UBóX A¯¾ÔÜ‚™þÞdïÛôP¦ÑfL«T,‰ -¬-(Z6T¢uiÑ^5: bGÏÙÜ0/v\8,œB?þæ¦&K&šuÛ6éÇ»éf{@x©ô Ó!iMÖCÑ¡`&—М´1í¨IPÕ‡é`Ôb ýÈ¿å Á£G"Gª¦Í/V²HuõÙ±F÷¨+1Ùr†&åýhc“œ‹º?ÜiþG%ãìîÞoÇ6:4™oyŒj’£vÈ`„<Ò z@pÑâõ‘ôí4šúßõ”›ˆbÅ`èˆunØÔÑ"I•z÷”O…9ÄJí Á4Ôˆ@íÄöÝÇÆùá•°~wW~w|¢Ÿ'òwpl°F[gü׬[%¶=¥ÏtaÜ@¤SÅM~xŽž×Ãþ™VÎr„†ó­è—¤XúÛg\SVÆï{Ü}2FÕ–°2ã^“Åç8¶ÑÝ–L£Žf5Â|•SÍ@{™°16qø)XÚáËíB‡‚Ú†I ŽÿYº?à Þó.5ûJ^žµ>Tý¤½—·ì€.ûåÉzúp‚=å±÷TŒd6ê LùÛ–}æ®bÇ"âט „ÈgÜ.“cZ¹QRÞ¬É\K† 4íûvV¸*k®ê.` ÝçÖˆ$­­CŠÒÅ1ÖV›pÑãoÒAdì{LPÛªø¬álK¢¡WÔKÈ*L—˜ì~aÚbÜ?E†žýL~¡‚(žŽL²ø³ÅptÕ#Òû%ÊßE†7ÅEÖÖ¬Ú ŒÈø91¾UXÝ^8 •P†rRhÅõ«¾ÿAäÞgÆÄØqJ"¿DÒ9.$þ©C/_†AÇþBÂNþöMÁ1&$Sıì’ìJY¡š*Ä©‹¤˜*I(ÈâæÔ¹Šá·t£BL…s¦”V&<ÊB2õÿÉCô³×u_ÚY¾).‡«å¨T¹¬X1Bb?EÅìÇþpjéÃL©Èùç™×ã†Óù¢[àÆjZŽ8xÝ,Þo”üÝ»ýÕ†µü:Í ôßMFÊX|ì©üžÖœ~[û5PwâGÔ:JÔ[öÛÝ}×ghj˰é#ƒ¾µA~üðõÿI—±`dwg–tŠmªêÈøS €hén„WwOá«7z<—nbÙãTgOË,râÐ¥Ùjúob4{cÄ=UŸ>Ëò뢜p!s‡îïBãÚ¾á »5ª|Nï!bT¤Ë ¦Dš(Ö‹»ƒ&s¬eáɸÿ#ïŠqŸÑ)ô¦ˆ>ÛaFèIJQyI$—U ¨*-%NBá–Ž¥kà7­¿Ä!Ä'“eÕO8>ã·-YjÐP±{’ò¾¿´ j€•vÕ<´æ’1£7*zQöeøœñ ·Ó1Ê6؈Û,åÿ5édâIã®_i—dü*´HOÓÆ+ÔG?¯Qþz”ý¡ÿÝýMµ1¬¦ïíõ•WIŸÈ_ F‡ßAðäMÛÐ#Ý÷…¸×,ÚTÙ,Ô$ŒUª’584 Ýïeo¼Jž«ÝCý“ÔîWeáð`WÖÉ󳋹½ßB.m×ÁùpzahzÎOsŒ!Û°Œ³Ö)šå*Íì=_wD23{ã'«µúŒ?ô»„×Ký§¿üó2ª¸­hØûõßä¥K<¨o Ì1Êá=fçD4ÚÆxy“ˆ«•uÔïêJ´oábÆ{p|Ð[}¼~W#Pí§ê(…î*Aÿ›»¨à€_A ÆÄä÷ ІóþÍÅÈc(0/oxÃ0ìŒ:q7¯ äˆúÕùÿl9~ãì 7ðh˰æj)å§ô«/ ÝNîú¨ÏØê÷ãÉu˵aßf»õ ÷w ŽÕµK!.‡ÑKJ©ÝhVך™Ò̘ѮUùHº j {6ì © ,- £¯Ùã~FœW™ž{m–ŸžNy NÊûÇmüïãO?¿ii¦Â­IpÃ@æ¨ú¡š·Fl®¼å³©^’=ŒQ;ó!9Ê|:tbn Q¸³œ¥Ãc 8'iîWwÂ^§‹™“ã—:P|<€##ÑqŽ¿…OVíSOžc)yÁØ}]«r;Rlí?±œ¸V¢ˆ–þr»vfJÅ, 74 ºd:¥|PÖ¼!aVÜYt,)Z°í1×*<Þ„¦C½¼‡¶~Åj¼Œ¯eoÓ'ƒDŠ.·²sÃÊ Ô&Š4.BÞgÑ/Ï•X%¢R¢Žx,°>¤ÞÆ;ï³ÌP¤b6ú¶b’f'Ag”ËHårý¼JѶݪðÍ‹H‰A4À¸¾ \³~«å~ÓõÁ2ÜŒ%•Ø­Üwr‹xŸ^û‘žV€`ÏwBò^ t$6„Gµ¢ÕJ•óL©¿$ké"‘áõWð{âÝa¶OA»:ÛJ!ç¶â9AXjn0öùòMÁšK)ï_Ȉ+¢ç±àæÛnÏ=,äò g½­"©maá^ˆÈ³·¬=}bl¿…ņ[{cYéÒ¿pi ;ò)SJgõa³—¹àŽèL~?Lê-’wÄ/²YÉËšø…"—ÞþËF-Š:Oã5Þl«½¥Žw áâ®aE“[öµZ·4XÆæb- Í™|Ù|ïÀÿ=çSÓ cX Íðád^B%ÒË©?ÝÑÒUq9Ä©E!'g-ºkRìçÛÈ r 埡¹ïYmûå“#è–!ô%Ç5V­ç3í'Mf1irFâ‹[ÞŸcfþÕ_eã!SiíóˆŸÞêA˜N4A¬¯êc+R•iSü¼)²ê^Õ\HÇwÐ [5HJA×…E´úÛ«gôçWyŸæ *‰¦ˆêÄÃMéCô¹sž„ÈE{S*¡6àÁJÖ¸F¼­›‚$³æ ¼•Ç´aÿÚé@)oþˆ„o7!¢’ëuH_7¹hØw~ÝëdWæ2¶!œÿ}zØ5Ïÿ¸(wëðù$õiçÎÞ$询Šao‘ ^ê33ú,àèUíõĆÄß)Lÿ<ø 8¯ðk† A^"NMÅH.¶Ji…CGK™D=#™ eù’åÞ#ã°×±A 8Ãî—3VÓ)”L\ÙøhÖù¨í™O¶´¹Ðóâ¬ùºŽù3ÒC`[Qù$<¡fªã {˜SOÁ®‘×èï8«+‹Íÿ±ðò•ÕANJW{Í(‹ŒY^Ó\8­^‰ÑZY ÒØ¸ÊûýâÆ™•MªAJp1oæ§wU%xÉC8ˆM’hyf¿GB <`ÁjÓ3¤áÐ4Ô¿1Díú¸V!›§ág#a»iØ Óà–?«…JÓµ\Z@圂Ë_¾ÛÐ':¬Ð Z»ÞÄL·ipÔ^Ñ÷Lï`¦ªQ²ÜcQ‘aUЯx$aÏ€}¿”Ü`ÒÍy§mŸ@ð.®žõ@´\ÕZ½ÖèÎÁTd¶r¤i £W1«»Œû5ý€ž¥Ÿ¦bv }‹D<8~&­ôujÀÔÆ°u§úÚ…¢ÿ´àCáçÇÃöÒlÊ sŠ&í…j(¦'?çvK“{à&¦ãiŽô|«h«Ïúa6n‰­Üì¿P³žÝŸ0+ž±BCÖåTúé8.ÞïwÖ›9ø³IïVMņ“ÑToe«z­wSîÅ«³“zñþŠ¿ƒ`q.<̲ùز׷Ó3Õæ¼#ñ~™™('{P_^ne†Ú°‹º{'g_¨ÔvIÁLаî©K>Îýòžœ :rmT>aŒýx(e û51b &Z%>Xtíù ½Þ¬Ø²yUXÈ`G¸-NÌ÷S΀Οî¾ÝަÐ~¦c‘Ò æãÛ¢'—V1ªº­wîèã¹ßàÙøÛû‹g±´ÍUáq®Õcá¦×MWlV ›¨|¦Ñ7n§+=»™SÐ9—œnÖüM¬59O­Ô ;—ðÚEô‘[5ÉVât×uš°ä,ï5ÙzÏæÏÏûû*`¡ÛjUÔ¹oØ[Tbóù€r½«÷¸:­:oŠd8ןz‰Çl§””7†ë2L7&8PDÐõjÈüÂoýYoÏ0UvÇ$eÕªoá7‹x'…M !–Wó1÷9] *º_´›Ëùxn|›ô2[8A==m’ô雯•Õ™;Sç ¶$òa”Ú5/·8 Ä.‘L}­‚¡»IW‰ÐÀ"_Tèeíÿ0þȪ¿ŸòÃÙsŠ8›6VÂ;mh€SŽ©IþXF-ô•«ôó#ed,÷5ÕŠg#z4B•}*×6ÀžL^Ÿóyùä­¬t2 ·c¤¤Aùƒço Öêó!Wâ[/ëæ9¨E±zûf®(Ý"=­±µ`y"}fÚ¸~RÀÚ¶ãû´,fŒsph/ôįuDg„îÌÉ ªZ«„®z3W#~¾úÍJÁâs¤›œ>àJ¶Ò¿š.ÐÏKÔþ諺šƒ2Òaê8á„•<—™H¡›ÖÞ£¥Õ¸LY ×@߆B‰J«ådw¬9!RsÉXI#þ‘ú–'µ‰|Pœ6ÑHcúÞÁâ›*ŸsE1Å© Ðå¹6ò‰§xÖ˜Ÿ*0n90f±E’¶ö -£^.íŸÄ; ÔrGhµ’…ÍŽx|ÎùpξN e͆cŸÁʱg‘_¢$aú•’m0óTEÑoîÙ)ò )Š„C†<±wXqJùM}н'F: w41”KH4Mb›‰„,]…ÅŸtº‹; Zû‚_>Y5`{;æõAŸ›ÀŸÃÆŠË«³‹*!Ûôœõ'B´IFû÷¼Ý'€F"hßKÅ ‡b½œ¦¯²ÚUžš­ˆl@  퇃!#RpÜEÆÆ¾0핉ÿ†æ¢xIlO]9D1àtÜõ¶ó¯¸òý²ƒ²©OþBÚ¤Æ3Îi’,Ý¿Z—°"Èô”Ù‡¸V@9ÚW_=†¬À¦ÏùVáx_tŠì6ÇLþz7E¥˜6ÅÊ‚‡~Q( ðT^×Ö®Û ‡•eoÄäoN¨³^Î8áﱨ40Ò/2@ËmÝ4'«dnX„_Ç3§G&Ó¹zÕ$¢ðvŠjö)^ÕŠ‘Ò1¦RoÀÓ±Z›úöïT¯ñäÄ#-¨~§ÂêÎÒI:?.y*Þ_fïØdN,˜ö4ùh¦†‚£4nÇôÍÐÔpSÜ$ñdœ;Vï½úHØa]Šس…yzWDâ´…©ñU k— ;íkâäá°^1»åâ¢M&yÉw—àŠŠíšj0&ÙG7Ü0ëù\Oñ¯ «tè'«×W¦Ãã!©÷Ê ý ­ ‚>1ÛJalIÍOPøýÉ÷׬ng³’!ϯ÷î“tùDõ…äèW ×®â–>Ø´<¡¹À0&ÕHKKbЏâÓygÁ)0¶—çM¸­/|¶¯6ÓÞcó!ÞD°ÞþO¼p’`˜ÆE3|€ÀÕ8d1^¹ßôoG8â«Kf«úaÂJÑ8†úl5q§ðX_…SLû%½y4Ëg†çѪ!Fà©Âä¼ÀvLÐÃðsâhä|Ù¦¤}_Ý•u}ßAè]Zß%¯Æ»3ë|üêŇuêCÌõ@ð€[%6p¸®…×á=_¬¬÷3X?ŒÑ, üx¸‡;-¿Š”ýƒì—å¿ËýmùÏÓ—Jô kžG¨R7ÕpR^eøE.bh>Ϝև?vÄù|>à*<RõQ¼Þ~q$ÚJ÷~ÅmuW®Œ_prÛÒ´zÍڰ߃ãâËt!ÛT6À»f\s$à2x…$‹ÿH©ñÑ3ŒÔy©M¦@æÏëœKð|Ë@>°0o°:ä.ñxïKý¿*¶@û º€Þ¦~Tˆ<"Æ}³G?…£Ú…‹¼4lT6!)FXµÿ(éÿÄü ªj—@¸Çïšò“ä;Ô#ðº!ÐqˆÊ,q:67Úêµúô‡*È*¸ –„«òqUᅢþ@ùBƒ@ §Aÿ)>æX*×óøiÝêmø?ÁÜp&Þ–]À)„”–þÁ£—ί`ô¸è;~Þ°"ô xd fú«ïÞiü|60’"֤ˆ'¹‡k• ‰x­™~ú~ꃬû0h–­Žpé÷t99ëj¢ÑæøhaÕƒhm…p\Çê+Z'’æwÕ¾¦2½—ºŠk¡¹¬†‹s7}åß̆`=¾ÖsKBªëS"—mZÐÞmH´DE¤ÝÖ˜]6ÜÜרÙRLIf?Æ ëŸ„Ç? ç§c‚}2XµëÑi[!L9yÑ{ɯ*Òœ›+ÌÒ¿kT/­Uõf–-x‰ÎƒÓ­÷~ô•HP"aÆN§-ƒßЉçbÿN£4‡³—e˜2#Ó­ìÐ1Íy­­d\Æ4Á;’¼³–ܾpülÔª­îÚÒ„¶½wÊ[[$¤›™)J,IOßþ¬O`ìÁÃã®Ù¨ÈפJ4ë­W€þr¬é)ùF!]ØaÙüÏ`<çϪçìLiÍÏÅ‹Y Y(ý)ðÆÑáW‘¡wÂÉ(™†h.@"=Z‰¾tÚ„‹ Îø]I”ÛsüËn Â>у0 GùüF¹¶ TÃÔºN¯¬¼õ„Áõ”‹¯$ÒW}Ú:-)2ÈîªÐ<ˆâÙ&gø±ÊC±ëpã.ø°y¬††-ûVYëÍÞ/¾„-ÀFS?6—Rý[¹\9}~F¯ª¬ ˆv±¬<ß:U"¹nb:ä1×– Ÿºþ5Ê®%&ÿñù3˜&ÐC­ݵÂEp½¶~ÀÒCøF›–  Rûèápú"ÆGMì×L/U¼Ôà ÁLK }Bró¯Q¯eÌ8ö¿I'IY‰¿þ²"Ì&ÚtØd…^5G€æÑho’‡î¿ØŠJŠZ¾iøMhW™PÒ™†ï2áxýŠßøþ5øÉšaÆeO®v>{[b^J§3c ŒÕ»î‰D'Òª -¤ç³ßF¬+¤QuЛ˜á5£Vï2£šÖ­ø#n)]¨3פ®‡¯µ\8pîrÂi<³34Ë¿—Ij–u:TÁ¥ÚÙ«Í2œ˜}ÎôL2V.¼°H•3=,Cíþ™x7ì!Ô¾&}£"yµŠ¿3Á˜\d+°kBSp|劄É-ëz7×5<2?Bó‡%¡·O×_ÇêJRe2#ú~n ‰Ša.ɸ jËWTʵ£Ú¡™áË-m¶~ãlΗ“9”Ák¤—s£Çðã/§RÓ@ÙoŠ÷O¶*ä¦ Ëšó'õúòpT¸£\"àt` o«ˆØ®¦•& -aŸXxQLŠ) ¦˜ê«ÂòärÕÿÒ£oÁŽÕÙn’úÞð€†ò‡\– ¾—f«_ÏCÒ&² 0áÉ÷òìüáœžŽ˜£‰XXûБpÞ\®QÆ JŽã• Ϻº®èIk;B²Qêó·fH¡Ó&À•âÚ‚®Ic^m9 ˆ¦Ë‹hzˆðR)ã¿GF`“#´;‰noœéòô‚%ìJ®¡þk¶Ï^I¥sÇo?ù2 ŒŽÅ´s",Vù³‡•_æ}Ñ2{ß@8ŸÂKRTèôÓÑ~™ vÿ…í K™\ÍÝ U¨å_K´Tm‘i§ìGÍ”J±ú¤·#òî~UÅôÈÐ+Ê¢*°_Ùç'ß#X×&èÕ¬ Ç…ƒªp¾‘Œ·n¢& 9mз¢]Yo+$2pU“ÖÖ~-¸Í8Ê‚s8¿æ»='»îÞÊ/†öæ~³1DV²ÝÍë”é½g‰Í«ŸfðLî`b-„À—¿‹kÝãÙ·z‡²eö^’Õ÷·ƒ0ã·jlV‡6jÙØy&Ó…·Üù­]Øo\5ú7Ù«!Y¤<óóÏ'ÈÌEÌÌgc¡ðÌõ©=…ùR£h—ÁáRéb5!âAƒXè¹Á¶¦¢Ád¶¿­Ÿô)†­4íð^Yj²Í^¼¶ùçö;¿Éá=ˆ™½x’cˆš£bpúS#¾ã”’ Le’.P;Ú+â@P=X?¿y{[r· Ê¢+Ë>Œù¢yWo&Î!úê’°›@Ø©òñÂI®š_”^²uºõVÿ'aj.E²éÕ÷ ÌÔŠÅx ôÍM=ñ¢ÓRvȇĘåš×÷®xÔÏ„@lmräÅ$ån×n³š¦“å¥P³‹±œÑmPh4 ×q†;Ïxa’›‡B`^Õl´y´¾n ¿ ¯dï¿S w¸- 0¸€X6}ò¼ÃPÅ1#ætÖâígº2÷•o§ýŒˆ,Z6SvžÄûF4ú!挨Sj=T‘ǃº\ºð{«V¥x¤ÂÌi•îã·;RÈîžBÙ’’ÑVª ÝV…õ:V‹fF9ŸÀýÕá6Pö£û qÏO:^T³!"“at%v@Е‹{ÉajŒÎæÊS%ò‘ò¹ßÁå³®^æÐ J%Ó‘Ñ`&ÈDPfs¹V\8ÄoÛh2‰»mxL+ú[w<,¦çOeAqÀ´±÷}Œ{Ìq2çÙß!õ·‘x9:¹ÚîçRçuj%äHкö±4:ëLØRë½£DEu²‘¿ÊÉèš®5òæà)¹ê¥Ò÷xÚRýíÀs×=†È¶ùÍÀt'[Ú`ųp¶öéšl0XëË“o®Ê MìäCeìðÐGZÜXö×.ÿïaA•­÷xíjpoþÖß¾\ñ/&Š}1ŸpÍ­ÿÿþ=ØŸ|tx6C5.1ýüL2…\¾eÜ!7LÀ“vIÒ4)3‘(ýHÍÓ+Ès\§å°¼iíÉ]½û¨lˆúúâ²2ÿ`ÿ ‹Þ¤ §ŽÆóÆa.«@`šIÂ"ÈJÜGÇ4£ãx0 5V‘ô€fáOüëÉ‹åýt¨Nçtq.Ðm¥úG£ð³YÚã·$SÉîZ뢲*#T£y)Ÿ¥“[ÈñÍi81eÓ­-˜êæéè6ãùJx÷é¹i.õYðN°œÉ%6ž:=l6Wmå[úŠjɲ"ÛÖ°!&§* MÀQo$‡›°EXã/¦ÍàN ®‚†Áz›×ž?ªëüWáÇ3ÖFVyIÌO€®ÎÕbd¢RÀ}ÝÚ²H ÅE {-ÁÁ­¢ägÇ‘%X‰’A2X¨™¿Œ7"q:dºÞI)—¥€gJ<˜.Ó¿§WH·KE߈ÁܚȃSMþ~uµæ6ÃÂ+gãD‚3¹›É Yò¸1~ñ÷o ©¤‚TÏä —ˆ#+®¼Z¨ºe;¢{©†œŽÒA;“¸Iاâ¶/‚°2ýõç>ñÒ0Ví4Óʽ)Óx’*WË:ÀîuÒ]þpeÁüƒ¤Õ/  M«ÁÊ{\­%T1—Pƒºî<&ôðH{WÔõK÷ÓÅçjLT0ôNÃ:|ûj0pE®Fñ[x¼_9XxD¦9… ÅøÌ«æcNW½}RP^o`£Šà»ͳ«åôÔÝ+Õþ¦ÆÊ K™C‘“¬ð@a9Ø$ð$x8„ž‚-éɈ}Ûß_½Ð›A*Æ÷õQx20£½`1ëƒV '{ øªK& ޶¦!ÄüɲC3\éx -ÄÙ¾IÂv%ç Å–S_Σ™ò‘F’%+xÍž9–Øbµ/žpâOª÷å]½xi {orb;nnŸ–ޝ¢ñ@ìµ£Õûæhmß–”2„§ÑTË#6žÉ¥Îh;­‚•Bì…@6à9rl±s“ÈÄ[ÿe€å××Ë]ªm€ùù¨%ÿü´°úHO”› ¹pWgþÐDã·ôé´ôJ+¸ÇEvaf§„©³ÇᔋUmÄ„efp8âh s.í ·ÄF‰ 2­Ígsåó8Î×…8jq®ÍfEG}‡,ù …gJÝ£Õ”wŽ\`ý½&D¦W»“8LïwƒÆ¨†¯UÄ]«jìm?kþôŒRÝ-zË[n9F–—÷["é…Q…[8CHr/ŸÞ-™ž‰œÑ¢é8M s»U1ÍÀ«nDÒ`Œå$³^o|ä+AŠÝäL?FÐ,;KjBTâ ªé(V:žTµTÇe•ëWL‰Ä®zË{é¢ñ‚͓Ӥ–vÔ½Ïü][„2øæ‘¯$=<“Ë9O>¹¢ìföå—éß[” *Šqßm ³íêœ;ïj°%†îÔ©®ŽE¥¶Æ=4EÃàÞ û.:Ô‚ÊÊ×ášMãŽÙÒû´ª½/b”=ýŒgc}ÑVûÞúOM;a‚Â6Ó&²Öl‰dçb‹ ‚œåD?ï³ÐÃn2ßWW/Ÿ‘ñ ªøÅRkX˜[\?™h\çq#,Ì%ùšž´•Ù!’q †QÉöšLÑòıu«b=µzzß½óÕˆY^‹¿ÎL^ûH.Xdÿß<‚α‚eÅ_oì)ý¤FËñçׄ–ܾÜðä¶i‡!Kï[S¡ÇĨ䊟ÌÛ–²™gMÄ;OxŠ`¶;$†¯ŽIKèa˜àn¨˜˜G‡ %ËFO.ëXpZL~wS$À‡2o•n¸-Ü‘N¤÷Ûñ£¡¹ñËD[Åê®Â¦À§yW Ú®²æà 19pªaËb’ ¨JŸ6ç ӭƉµ×s±,õ.Èn"ãð)׊v¢Ðç³9wHÍ[ûáqLµ¡“·1脘í?Â*8Aöt_K/SÑçKÎ ƒášú%°qS†)tn°ÇÄíḠ²é¢4¬P²}$ö£ñfŸÞ×Hõ,!cìs€2ÐþËZ®jRaf}¼>'™û¿›{eÅù¢k ¨¸ÉçæñÛ—²¼±¼ l'Ñ…ƒª-§¦g€Œ$-8ct×ùmÇ Õd."ÝC´×FF`¶,Øô»¥³ç096„S TX㉋ƒC{K{³P^¸AùïJܹäôZçjÙ(å¾y"ü Bò£ 9,–E]ŸeIŠØækÛùn™ê2=$ ð¢ÅÖa?Õùøg€ANˆl¥€¿yžÅxžØÆëç6lJ¡€ß•¯5«å¼½®fÝa4¸>ºî®”ÅK«•2þ_miÝzç–¢§°¾— „Q®”$sx¤ãQ/7³úìϬ;r¥žÊf°˜ñ²Ý¸q€RîR{Œ¡å›r­Û_ù_õ™5:΃–#ùjÄvÚŒò8[ÔÁ»N* ݦÇçò²Lp¢X-Wb4ÐÂèÅ5ŸÒ+AÈN!hÏòÿF¥È:Ð;ŸQºž¹ÈAÖ–î% [“À•èé¥Ñ_¬œàÚ‘ \µšAW×T(Yy~n¾§QjI̯· Œz-:5ªQÍɘoîÓGPpmª!*kÊ­SÔZû¯|ê6Æ¥î Ocwó@œy-¶±Ï°êf¹³-‘†Â û#â†ÉyÚy–ñ£êêa+f–³årÚólÖ´ì¸XÃp—ŒÑçôÈ݃osÑBŠß÷t[ÈÚvoBEęNJj à®èÏ5œ>îØ(»×ØGŠS_éø…Ÿ‚½?¼5´!<)2I`Š0ð‚ }f·â>T/$Y èÎ%7÷0pBÝv2ãö#ü¿Ç—Ž`冉’žw}ðq'TS=eWäCLìTÀ‚L¤Ió¿ILC€dPKùE’Ýr+•¡"ñÿk ÊÖMf z(K,Fÿƒç—D̈ˆ¥®-£Þ-k€¯÷>)L”|Òu{ƒŠJïg8W³ uà+j©m ‡‚C¿Â7L>w‹rW… €¦P¶?ô²†ïmmL³1_l8z•aR£|Åþì)¥Jû‰ÕÕl?ñè·€Éé°Ìì©šŽ³)ˆ¸w K3–›ü:‘ªùë°iú+ŹԵ޷vÃ(Q‚bF…Âãƒv¶§¥?¥AÈí…ݘYÛ(ÿ–ƒØ!îÛ3î<»u‡ùœ%Ævà†”TóÕ­ý$ëÊñÊkLÇÙÒΘòDU–ÄÂL,D–Åô|/ R©K¾s¦ÊP“8FÒ4ŠA-‡©ø 8…­[h'U‚´ìȨ Ö8 Å·vž¡€r*X€ Tgôy®äÏ‚™ü4 ÷GN_ê§úXyÆ-T)åwêÙ²L•Ò–ŽÐk¬aÅÔ꺔:z2Ø™6Ä\¦ò°eìØù´ÌÁ%ˆ»Fqv#ŸžFö ¤ëù´½Fñ«ªîýèÉgiˆ&¾g2ý“j< ¸2âÅMMQq…¦çqRgÀøj9«³}1QÖéËç¹7Q©GÃðùCœ¦<¢ln³]P¯öõî Iû¯3®»² |3[$²~´2<)\~„?/÷„cÓ¸Eû?Ë'd¸ØR{·DòŠôn雨§”Ñš §ýyßTŸ›I•Ékzfìä?Ä¢àvNvvzþO¶Æd<²‹ÝµÇnæ.Sjß¹ôkkÇe³—2Ua²£ z¥(å+1ÞO2Æ2|æˆa¼F©jʱ8V"§¦ž¾–‘îíЬ±þIWñ”¸Jnsä@Rù\ð5¾¾Œç´ýë¬u1ÜWd†ÈÃñé#³ÏÅ€Ñ èó ³³…É]ØYzqÊÇS@|¤5 '¤&™T®üÅJcTÞø«^²R¯¿—t|Ux©úµÆóĦN³6àbùÙmÕ<; ÇIIm, ¯C‰‘Õ:Jƒ„›X©Rjƒ”ïbÄsQ|f¡hS`C:äyó×J9]U¯Üë›/ÓÞQ·DOœéžâA=nô\,2†Ñ4¥ã‰Ò>QÖ)YΡóVñò †ÔäâǧÝV͘&ÿå¬+©3HS±!i@Â!?•µ{&ã«§Ÿ3O¿‡ú‘«MؑϑÖä‡LY ÅÎjƒ(^i ¼‡6­*+ÚbÐêF sPjèÚDX:PgWÿ%ûä€üéd½«^/¦šØ³_ö‘³-½ÏÍÑ–Àm÷bJ;Gé~t`¬²W`žoõ"‘˜A•¸³´›äRpíßÔt‹1D(ç·Ù3bìNÛ°¯¾“‹—­…òäf9È)À}ŠÀÅ*WñU¨Ru‰ìÆE–EëÔ 6?s£!S@÷þÄ`Ò<5ëë…;8HFðÁ“„\Þš[A©¼þñï•O0¡ ŸF6¡ÅÓ-ÿ‘–…ê¹õ{‘&Bà œ^N¬bØû>b'd)7KÁ¢Žê;© \Þ£óIÁ¶zÇšRãîHŠüÜQµnbòäC©æ`\gkQU'TQì¿à[†·ˆ~¶ O‚òÍÑ]Ô¨ˆÝ²QÚCŒÁÿø?Ô_TwúÛgšñÀ7–.¡€ŠÎ %Yº,p\ÛÎÊsºþ%2¥»yœä¼$ÅWq8«Ä9Ý,Ñ”hƽÈ%·‹à~Vý*gùN¡°ŽŸ éø®ÈZ¸_¼«¬ãŽ$ƒžìaÏçÇ^dÎ"¸ŸÕmëýö]$Á®U¢ZiÙ 6žê*d¬³_ˆUôô»$ôtv ÏšviÜRU9¿0—FÍ÷ºä°PÁóþåF¡‰Õ”nD]b<çÍ<úA”Fûë}$´ÎåÓ…^—¹Ü¬Q…_âÎÀõBd¨éEzE<ˆ]rIæ®z½;fÛ ¯÷²yy¸¯/•ÿÿ´(÷œ&dÌ@dHA…±áBR~ã+ôVâßh€ûô©¾· Fof¬õaKƒ)â¥àÃjSÍ3r¥Jcñ!ÄŽÊv}/5Þ$©Õ‡ø0Ý$ÁAðPœ¿É²Ua_&øì,®Œ¼k”pD?ì·Hè}ײ¬P.È?®ýûÉàÝ·ç0\±}ÖÚ¡§É‹ìðÖ›«þ™E˜¿-ÃmkÄDœ›Š…Y5M´o—S¥õg1åÝ+ž^í"ÎêõÌ9ÙÉ ±öD (×Ð`zyS”à#ÊP¨·Šv ;LjGKšYùãßá•ïwÍÖÕ˜Ÿ³Më$q ¾0ÕR Š:×0¥9µF¢”W8¸ºé}  u•'Bé¼}ù;þé×c%ƒÛP¾c&‘r*‘†d{e|4&m×̪ÒÅO´þÄa®ºƒ$ж‰vøÄÓ“øa⸑`…y‡è¹ežì;jEGü5ãæÏ ùÓ/]š”ˆÝðª6“f= D’+h:¿h<,I[}«3âè›ÿSmxÈñ¯ÏßÒ»U)#ö¾o±Í#ò¤¾­ m|©—s#[BßBÌ‘ :lœgÒ“UªÍ‚í nMò½Ôæ—Í´wÎ܉›Óe]‰hM¸ ȲÙ1ö+ºØ°çõà¡Äù:—i æ„[øŸ1¿±ÔºÙWQó±'ÿÇ/¤%¦W³›_'›Î¶Ø½7WÜÌ¥5ÁUŠÂÏ%e$à“¹'Ì.ªE{Û(víy‹áV‰Ã/ªKô6ôè–†þ ê¼EGÛòÊ …×K2?Ón$’A45,ʪ7c§wKÍ%8ž²íjþN,šzÔÉd²ò£Í†h¿$÷£â®†Ç9_NçÊÆá;ý¿ €y-_’¯~ÈÊ×nêËPìë÷µ£áõus.1kƒ¥Çîe'Ÿ—ðhÃÌæHƒ7B:3f7¢ÍJUa¸µÏØãÁ˜ Ц:RïʃœR4i· „^[½¬tâ€LjVqø¸6a(~‰Wàû°iÝÒMÂIxį«Ï3ÿg\‘!9­šÑ©²…ÍzT«p# ŠÊ]oà'¨×Xßz–%Ò¾ýŸ Øfpîãë¶½VV³)w ’É;·5 Ôž÷p Ð ÚºÙ/•‚©KiÂ"à¡F#Ä–©Úêæöázz\e-).­¢ÁÈCñøåºWN²;/¼værñpðm«ôl‡x¼UJ ¬¦¹P‘Z‰ÚŽ¢…Ó¾Qþ2><òž'†>c¹jS¢Î"/ÿ5òìˆO¬Ïgö›.Wié„÷Qûÿ“75lÏ—–¯·KÙ± ëdÜû­j‚3œÖï`®p #Ú}Ó6€¥SN‚Ãõ“'.ušÇðRºø-Ž×qŸ só ¹”¦V½Ãçp ßBãÇ_V90IÙ€bÇL¶,ñ4ÄH }±ãt/Ü=³4 Ð/8;-[K;%iK>ÍG{ûv[ÉMdDDÚµöŸ¨á7aÉÁ¦4ÇÑû°J‰Oïþ]CÙhç$+ì×9vÓ±éÓÛW1¸KtÈá0§44sC±w©a{ÏÛ:‚((5§G‹TäŠ'9àN´tylÁ8—aø»óáµùì—søq¶Ï•‹ž*S„­.fÁïùúˆv¥žm{;¸´ÃæÑ7lã±_3 …±=¡›â ás©«GÀ‰tçb¨°òÒϦvT‡¼Ã™á37lV¼}>E‡r7÷ €ìßê#H‘#œÈMÞÓþím¸ t+‡KŠÄCì‹Cù&ñÔþ©°Z±ÁÔã÷J;ITÉ ´‡ÿimb¦Úõ2¥Y‹¾ ⧘˜nšÛëž ®íÎbgÅälPxžóŸM ȸױ޻6Òå5€»Ÿ¶¼ kŒ 3'ÍØUÄý7q$NÇ©¨Ìb÷#÷?Ÿ'þ3k¡´ûÃ]¡ü[RºK#Å+=ˆ1ÏmŒ$Fh§|c‰ìÀZŒlÂ:ké ‚0'öIàÌá1-T7áÙØ¥"¸#ª ÚØ<Ð^°ð©=òøº“ ß>@< þ² ÿKTçÉ&pƒ÷º‚âûÖ‰-¿Å€+‚L~Þæç^Ét]Eˆbä±éÓȶ;ÖT\JÊm…Qç°ß9V™voð»J¿ó =Ÿ¢PPsløF¼)"êÌD¥´i8Ã?öÒXþcŽÅF¢‰"Ý:ìøù`.U÷òÏŽ#%üÀ«RrèÇŽ“lr:óÙ:`$Af'5ïìaìܪûZ‘ÌJ-Tèéïî¾Ðû†üAgcø·Ë6DãdâÞdêc˜DÞUøjs^§LlÅ–Ï_Q÷vQåÇkâµÇ¤Æž­y Ó]ÝbW$zʲ¨˜hN`´e"sªEÙÁS²h$¡­tg kÍ“qý[ÿ<ªTC[%ÇšœN7޲%ÿÕ?‚qL‚<ÅÕÖ÷pIe$Óh‹ST@.¤Q×’g»yÒaԔ̇ô°çe®ë@0ô LúÔ+ 1Þ3WòövÝ^úx|gïD–ó"hŒ¼ä¦›ƒ¡¤xËeÖ¨Ó÷«„,QUJ6QóèLIÆK€.Â«àŠµKJÛAo]Àþ<{Ƶ2¹þ ×Ïp_P™)Ö–Õ°åD#ðAÌ/>tsÞz‹Hޤ-‰íDdg¦ÅL{clþ”Œý’=Œˆ°}™Ñ#YɇݶK™ŠLÑÙŒÈ`é’ƒt>lê3“ùÓ'ƒß'*íß§bSF§iö) aÏ]ˆ<£yß©˜ÿç6°Àbx­ \m›.±n…§ÈÁ H%J›_iqUXüjÊÞjïÇÂPt}Ôš‚hÞ»jË zj‘ÆàÁ»2x}:xCmꄽh¥^÷¶49Àp†ÿÔèNIçC}ÍJ•üȺpÛ…tšòclFÉYhúH¾÷;çiÊU]C²5 £óeÞ—saGl+îs¹neÙ«Xê™b½f#ê ÞAÆZ døpÞìHZ;œ «·†ÕüûôÕÞñi§µ§¡yžaq½}ßr—ø_”j²9Æ#œmù°VäÏ)VÆ/x`~•ò2bï™Lîí^íÚK_­IeieJd–Qý°GÌ¡½Po@6»€U#ÄnMZ^v“n‘5•6í'uUIEê¥ U^6²ÞøŒÖÏAUªEb-Ûˆ“|3SáªÌórÅg Wð•;ÝÙZ"ÞåE”QàÛëM;’´C8A,[ï7°,Àm)°!e‘‡L ݣءKª®–‰bOÊw×#èÍ.¤ØK?ü@"± ßó'Ö^w]‚[-\pWÛrÕ! ¡v©Ä ®^s° ¬=Ùx[e×·•{ ;*z"ô~Ò^¬\MlYŽ¿Z*ƒ¥:eN¶Ï|2ëÊ2;qˆˆy®±YSB ¤òw!SѺ öëð¡ß0rA%ì­œÞhÁµ µ$˜Ê1€5€„aœ¤&¼aieÿ{}|æÚvõ…Õ5SüᫌãV/•ÔøÎc@=¹pÏ‘BQr Î“ DÖ(b;"»qì¹{ˆ‚Ùu­ºfñ”‹*:G§7ÑoÌAd—=¥twô?ãiG$B#›à­®—j.übœ¦2 '"¹©½JÜw ó5`õônYCFY‚‡;×e]Í!oï`úÖ¯.Í÷ ~¹]T¬iØ–ËJÉŒ=8mœåµCN$rmر0\¨Sf9á›Ò£ƒv×´0Käèhç§ù Då+-ÔÔ„Õ=jÂekŸ¯[¼¨ JAêò‹¼›Éd ½IEÝpÄ1’俾YµÒÛ&ØÚé謄Lð>m¨´ÄI LÞìa÷E‡,)Ÿ"9•ô”ûp‡›ºµ¡x¬z¢¸­œ¨¹Žl"Ts” ] Âø‚>¨% Vyèy´Öá±MÕ>P7¸P Û¡ÝÇQ¿×©Â¦¶¦~=ø3(Jaf,[&®ï! U¬V¾Ï¡ôÎoGhõ)5»•`R =š*œŸø´ïΔ¿Ø<¸8eÒ~㵬² @XoôÜü°÷z >Á»µîÖ´˜è(Ȥj8”™8çD@vëÖáÔå[¬g-q² ¤+‰íå-Ò¿e¨ÂuØØ-ZÐAßüÍ÷1?Èi·º„üÜ탶`L#­`|U£ÊšZ¤-–éaØÞ—ê"3XäŒR"×Z ƒ=ÊÛV¡È5ÞÆ ‰Ÿæ²b§ªf ¼bƒ¹³Ã3ú!f@r¹–¹^_^±­9Óœx…ARš&ÇrqRoÙ3&–þ®Q˜Í£N飒ýÝŽÙNuh=xΞ¥ÖW°ðgy¥ÓYκÒ÷®bYŒ°Ã9–hTeîÐR…–ƒä·hwÏñ9‰9Ö…9&F;ñTCïü¿àL½ç¯(,goZNrK Ì;&3†Í£°%¡šÒÕ²5áÅaN û'å]êç§üÔ5 B=5¨ÍŸú"•ÈÿªöFŧó2 ,ï˜Bo~sF¸)o øÓó%¡XKÚ9iæO( Îi@IPÙØ|…ɱ^ÎZßÁþ¬WxÖÖ³ÈR"u/TÅì£ê¯ƒJž=òº‘QšhùG‡9်úÜϵ7Îy„{ï r `ÚÌÄ[Á«ûÀ•qçz„’°–ØfÁOš 7îZðÉ ]ù«©Â•[ù¸÷þvNîÁÍ(`1›øãÏß,Ã’XÖVæzà9#^+"áó{ŸpÆ yæâ4¥ŽÒ™¹)]R-Û)„H‰«ø@å!gá_ÉœSðLOC}-{‡*KƱÀì\L×K~+ð—KË…-,ýÑÁ-=u ‘¶à¾GV`©ê¾±ïÈÐ\=D`zá0µÅÉ´Ö›"‰n“XS‡ñöIžü*sj䤛ÄÉ8Wà²ã*þ$^E}P\Ȉ ‚‹Eõ‚,¾wuvÍ#U=Ì´q’\à’7WßþºåØPˆ¬o»‘ñ‰È’p­‘ã£/H@—}‰ !*7H™>X²š~ ñáú| æç‚žifù<ÕØÙ:š@˜Œ À޵…÷løt7ðD.I„]n7lºS›úI œ™·Á¾ü)‰xëh\=„(IÀ€À­Zù–RI¨Yx{óñ —¨§õˆHí^©0öÅŽ4ñè!鿾BøOÊþÒ<®Ñ‚Ê -ïE ”Üú™‰4ÉZ#ŒóšÐ°™jâíY-g†há¼ãµ¹é”á8»¯|½0‚¼UfýNàÍ"?æý^k™’tøK¹k ìe:ÒêF8Þ¬5'ŽZ~~æ¤>§,UH¬aó[¬¹ SúO¾¢íÆoS’CvY)C>Îè§âž¦GJÑîó¡LuC)ôVðóÁŒÎ]²×~êØ¹À%*yMwçñ¼ Ëïø5Ç-2ÄoÞ RîŸ)J$5c}ç‹uVXÊhZ¶ êž¼ZE¯ ¬h¡39:"Æüm"ÉÂ~–g©[kïד,F[Àqt(ùà©Y>ác׺W“‰®°ü=ö÷>þwanÚô]ãû†Ö@V§ŒeQ|L(¾*I¹Œ•ù›\*›)ÌQ¼^ÉáÍætkR ´ß¬£Ü@Â:Ý¥œä‹ùø®ša6]v7^…Ü1huÙÒ‚UiÑK“[o}@áS›µ¨>3~<ÇEÀa‹^rêÝà'ò ŽÄTÃ?…"ñ:õ?í9£PÂ~A-5xFH­$ÅŒ2ÖÈÓ,ÕôëZ¶t%:ú;NË×·ogÄäW^°­‰éöôûJVÏH;Ê_šÝx¬ƒóOŒq.S!^W8¾a§±iÊê9 QƒÌôU"a•õUjkW Ýñˆü_­Ê™ød`ÞN$\þqÛ¼çÄ"Iè­fm4m\kgPÀ¹ÆL8/.ìµîž(½v&úßǼ¹V³wÖÖ‰„¡fâc“ˆ`§¤@κ²Ÿ4|çš¿Ãâ4ý·¾• ½åÆ^ØŸiÚõ¾L'GæeLªJªQPÇÕ‚Õ<™½ií«~ªo±Ê.K¡LÔþ‹¿Ý¯› ^X!ÏOŸ!ÁÖÂÃ0 ñe’â™&·C˜'ª(Ÿz¶º‹Tz:+©c6 }&n“©i}%LÛÉìdc¿ ï%àmMfZn>Ž+id sǼ­?P¾¶–þ#Þ4ÝMpUXÃ~ÒÝŽn³X!Ÿ\gÄtþ‰ðOÕ‡­–¨kTØÈpâuß½"¼N`TÀ´C?œà%è<ëD3×goܤIB3ÞŽô;9+àÉùG‡p‚Ø,I2§OO&aì @úJ[¯aó-7uÝ]þÚ†¼Ìµ$‹ÐçÄ0Ø>  SkšKÉ(Ý7 qð«Kaóº ôžÚ+¸Bèxâ>÷ é„‹A:g¯ò¿ÒÉ>±üÖA¬®w¾«j+…9 N„” ³Fci0ļ$ð@ÒÕÿÔš~gã®6ÐÓõ%ž½ºg‘ Œð©ùùÓ‡J¾&ÕFp'»×ÿTÕ_þ•JF¶hê:ÝMÞrT'"’?{û€÷lþçÚ7Ô5g%¸¸ÇUö‹Q÷éC\=Q•lA:~È|„©¾¹Ñ ì^È@ÝÞÊ£{”ôø{=ð·(ärìð—FêBÉâC…â2ëN€ÿ 6\3ä_°¸¢W4u#Ah| ÒÝx©è§¬5  a»?,(0Ió>ŸO?ªïMí˜ëêØC~N„^lXi«Kˆ–ú¯«ûDIãž@ÕX¦“öeX':˜tÑøðë-ÿnÎ[Ý 5=ù~ÁZ9èI:e×>‹\SÄ8c±¾“m–ª™_3ÿb…è.ËÊYM Ñ(’P³h¸/uš¿A°ú{ôÿHIˆd©‹±½eÀ„&ª]h2´ä4oÔ™Ì<œ-©ºÐƒPžÉy+ˆ¢T"]-7çšQ³S3Ӄ繵9ädÊ}'LúÓQ,.Ñšs×â.Â^S€×‹øš²"fjÔWÐùr‚$ÕwMsRb£º|ûo Jû¡?¯ò׿¨e“W¦]-:ˆ^V°À­Ù]ª¹öÁ_$“Ñ_ Íy[ç+,Ð.^5›ØŠGòˆt/F`t6ÔèGùQú4N$¼wOzŒ¤â…&’Tvþh`«GÀ@"æÝ͇y¯¢:\æ%dÏ«e”—œ½‚F·IÙÄ…-ŽQŸHxO$°×‹Ó@}ØD^¸õÝÙU­6”"+ì–‰)D·ŸZÇ™®ã£µÜ¼¼yP £]ZÞop920ÿÍ®-Þ]{ûçÚ¥x†•6|™@yò P½Ádip•.ÛçÍÌ­ígÍ-¶µ½@`‹’›yü÷]÷Ñe€s›†&‡ ª^„zº‚UÞ¥1m'ÔŒˆÒ ËøZOé—…zv±8ce2{BÛÄþ[ð½jR¸x¸S¹Ú=ç^rèˆJ7#^D ĪY«r {ØMq=µ}ó9çl£ &©dš®iþ¶LÝÓa´Å”p0LcDôµÐºÐ¬»Ô7J¹xh¤p¢z¨Æn†¦gØÕo^GÇå¡õ*ÃQ»Œ=à“;˜“ÄD©X¥f݉ѯ˸"R^‚íQÑHâò·sÅ´¢@¡KºŠ}R­sßÉWP’½¦ÜÿzGÉN­8ä··ÑÒ0?¨Û©û¢…÷;cpýÒ&$9¸¹ÅösDœu VÃØZ~/êàä­2øh=5óuOy šêRJ£)[p¼ƒGȰ·ÄCç œ.«KQwÇA3äºv‰ä®CîÄnHÜZÍ^¨íaŒŒAö½$_ªÌRß>C’'^µj7¯cØ q.'TΨÂZi¯eÎ:ðuPëýP^Ïs nÖ;$¬ÄsK•¼ÔX€ÑyMDuɾ¹FÆ;Þ€EYÜÿYjVƒ8´õ=uÍe¥³¶rYòyAª.Å–nì²˜Ä rBª1—ñ¤¦ø%ùl<ÿ2V V©Då|yÁþQÓ!PñW³­ÓrS6 ˜9{rwS@ŽÄÒõóŠÁpeÛˆE>³<ņ…T®rÐCy}}ãWµ¢h-{ýɾ!ü‚o NL‰,x…î>Óƒ° ©µys%Èñ¤§4DgɸɈ¼w*}ŽG.lP²]{ŠíšY6(ð€Ï[Uß±¬9êï6]ׄ°šžûÍÂEå©ÿ¯æJdSÈèY´hÖ…%²>qiBG–¾nõŠÈSå´K{ÆÕÂìO© 6X®¼àXaq“#€›}¶}3‰m–Šîñ‹’Tl÷’5æå”áôe>úï0u\öÅãéBÇÞ#žc6– &%·W/€åçP_‰1µ®°gøÌ~[ðµú[D‡4þô®Å²±Z_:L´ w‡ú41;bB3?*ñàÒ‚è{À¯,«®çâK¨®¾²¯NOx”«gVe¹ÞØ@Š-Î4WÛH“YØÚ»òG+‹#z%XŸRJ¾~„üèu_ É(<­¶Â ýZà|—IËúáhL짆xéØ=m8¨†‡: j‹E0É,$$8墼0ÐÁs2Üt¶ï•'v<ê«XßÒ•X󜒭;vüHÑïº »×kÁËô¨Fª÷!ÊÅ~‰µíV¼¯Çñ¬¦$-RöBo©|r"Æ¡£òÝAyáùN£3qg^,Ì6 ŸRÌëiš×*@3û6áÞAìj™sW#[f±âù´÷?r…jªt[¬ÎPkŽ;“dàãAHéaÏæl Ú~³ÖÑ’á|°.a$úÓwÈЗ go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_modify_large.patch000066400000000000000000000252041427672601600274740ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/bin_fragment_delta_modify_large.src b/gitdiff/testdata/apply/bin_fragment_delta_modify_large.src GIT binary patch delta 4145 zcmV-15YF#_fCzwq2!NCU6n}UD@BJ(nwumRXTBWU&(r44U#UTR?Hg2j#E9tcD8>JCY zqz)g`N&ViW9W6D7kX7GX{y{m=JvFi1-r`PEE?SE&^2StK}qz5hC zom0ywdCWuNb#YXdd0%FMNHft!FTER$>uzu5gxdoGBy789raJBW7jAhN2TWFL{P%2l z|AX{}Jz8U}Y*X|~=?4<;F4)94!-e?w)#D0h8n1_ORWNCOC&7=!U0MP3BI0~M)pZ-cf6aFkVFzO&JOkcv7FeEq|)DcBDAP&_&ZgBk* zVp(I^5-bN3L{~g{bHnkWX%0Hj02~njkKX8Zz%Ih#=LBD%Pk%TkW4ize_HweE#@_-2 zvpyE#e@^n#rRGx;O84LB3bMdrxdv%Gkc)ZQq%8pkxT9b*)}Z&t5bibZ0)8H8T33vN zgTj)j_%wz13x+TZ6LgdupD^ke2!n7E-YZ%8n3OTzK5*T(BH>ltfU|QJ7VTAur}ah?0sC%ZUY?&xwkEUw@Y9LqO1~eF>>5cDlg_YxuF| zZ58JVlu7IBfP1@TDmG;<{X>(&*HyC-7zqRrY~#3W>hP8@a&jwYi_$k(j`D$Ta97 z{(rL4B7Ysa#+5QC40p?w_V}r&G%{W$)8R1P`wet5K>`4D&EanFW{d2mOBvm~hJviTXh@a)Qp^TpF9X}vEVN-{LA%5Xp^*>%23c&{6HgPH4ahb@257yLNuno+(_9IJ!cgw97b*@K~X-9f8rdsd` zOSj362)!mBsX%A zQ*StV4WzVHG#+*IwPf7@BwNAUN{Tre0&7KHK8Gq6W2Jeqe%S(>+{1HM$cFn>J%6m& z|8$kpBb=Dxh6$MwDCzl1g;Y`~f7F-wEny-#iI1X?l(D;Z$PLR3jay0@l4S5PR8fS< zi+>Hek8mDV9ItDt3}cF;v-yN79ZUwT1^LyF1n$Cy%gt_C&r9r*A*)&$ZFlHnVf=mg#Q%sK{dyD8$2z{ndd#G^c?_~0mb!M$7ZxU$373E=vV}GR5OrWDm zBsRhxx$#Ql_U#b2h}uPg{qm53MhlGO!F^=m@8@Ie88^`%?=q2+>^o91FPtaKgX{mUR_AEr9NwT^_^@8>UHx z6Vql9ovz7$NpnPl5QlqsKP0|}EskXfTz-@ZpBlsI-~?B-4%w_GY9s9?ln=!A8wNMf z=;eAIwp6&0nZ9Qq({C*2AXxKEGCjGa)2K^@ryP2!6dWiRy0M0vL*145f@BzR z`IXs~3pGOq&;GIFDC=$JbDmK$C`A~nS$@*@hY$2e@kN0E;7jK@*TzW0 z2FmwjqM0G-dfMDB3x5@pycb${TTJ7dzu+teFC9mUiSr(jrvQ~;sj`>uoen9{iXP5; zbF9`-K065Zx&Tv2gK4wf8(U++M31oGlTiV$(^)qux97HP~_mSNPtqZA#7xOo;Q zc-B?N(jYE1ix_L{M|cpCS4s5I3Tx_Hh1#!O-iBP5iS>iM{C~ZUez^pglqH5IAdOAD zE;AjwjL)_IsQU6y4t4Uc9KXl~!BYeA;B8*wK)|cg^tiD0aN2iWzR>YnUUS9?3jKhiAKpgQ0 zCRNTKwkeO~{pU2|S8)UYp21g#5$lGV|mN zdQNSkH%R6}>C_cemrZCjR|-)D<8Y^P74a}>FKs&95{8d9SiTvhB4{eTUGFbTa-IbX z8Lw1xoPPp_ZdIbl#dCzP1`N@V?eb7SizWtmm5ujG(rKZHZw$>Ozzf4E=Yf*+eH}kn zL{&n><${iESA&t~5pz;&vs%HlLYxXMjPlLH{?*-#T4#$(P;pke+8K*f)n*Ph>SB9|8)|f;w=%OP6`nms zdFVyjJf#&^=o+P_Y1Q{$$Aql8VqX+>=4)lx*&wB#{$tlb&SwC3E~G-pKOFXRQrRSk zMt}Fa|4IQc;^N}stu@1BVjk>`8grvj#WVz9k#>7N?#JQZdag9deih!2aWVB}1klbo zXKhuKy*h7m?``T}aM*}PexaGXqeZCm>ME7BQi64D>9lL0AoF2`Tzo^hNSMC9B=jT@ zjA%viojl=gm6?1mPDg-)fy98Cb}Bdio_{dD+i;%nIJ6ZfQ^LPvl@~R#wk@K-##0ma zj|D(^Fr8U(o(FRy$Z0FGyp@Yam&`H8oVv>6n8UKEVec>#*NVp)YrdOPgay4SxQ!PjT#gf^PISz?!W;(=9W zC3sT|H>d}ErTr;c8LY_P{IPZ;Wq&_a4mM`dLu zn^@7N(YC~q-qV~usbu?>{mD#~LNHhWdnNcaB&J>J@M)=+i^{*SwmS-XE-ywoYoZ3U zdb4|M(!Ok$LY!K2m*Wjy>w_)zTm#k_g&J$VCb%~Wdvc^;lfge`vp1dg{O^Aqhg$$l5i=+C+Ser`KQQfEhZr}z4>;>#SGZZ*qGHd~H-az)BPnlSx{cgt);r6Mgt;@-+9-E2t@FXz( zkh$)!g3>JMRK2Fj;(t$e?z7fJ;>m@#_j;z{x_|Hzf&NnB2s)A$gs4~;$GCPhUTy3P z%V#3D9@E1QNOb5UL}Ny_3_nU3V+}u&a}K`lA2AVv-@33!d)C9C2b%Dl#4Wp`G3Y#VXS2vODOK zH6Ik?Qx|Shj(@mOGi-V8X@6z3u=_{}wqW)r%+?8?joDa^!2`v;{CIT;J4sydrLxNW zgUBvqK&gHOJyAP#hP2e3p;XKF@8~4;2})IVed0tk&>;1X$v5<9B1$g>xX)iE=u55Vhuq!Be_Zh7H_L0ojmJ-L7F zFE;pV4HH_WmO_~*TJ#EHu@A`M)iV-3k0!7^nIQ%08mJA-{<~wkIj0>_AP%Vz_4#<* vVkRz)@E~iIs*PG)1#O3 z^y`3>TH+sKUrDep!F5A*^DLBShsp6!+cwX9)&)8gv+|D%3&Z;I1%KSpdiN0>xk9!c zDy`)OH&-h44JMjA=aom~2^DT%XWWk@BGsF>T2qX9tzqChzyU07Q5O!7pHe8DLN|bp zdlTM)yHOJqRKS{Ok~8#6aa|1~wdC!f6HE-YeYg|0WDJ@d5_mH_Xk7QkFCJ);Ovbo( zM*o?Jc;mjWG9!T2#lADbM8kdZGB*L;W@^4gw!CX?raCf7DLTZhN{Ky@jK1r2x?YmoKqE|=?ny{_>M zPW`hAEW;McTgizc-%KZOZ(LC{iJ26YFd!W@TJ{Cm#XaWxI)6edCQgN9H-J&#etfq2BL8u2mpTqV;-qg8O*hlGo~w*^QU&D8~wh* zjRoXGhq}{c%8{%P7XC3-Gtv_4vPhC&G({}4=soxR<|OO8=U32O6B6X4cu}vawOLA8 zUCsnRtC7@}bbt5OjoNEaRt9SW579M@O#ke{I?9P!pHGx8+mS!>XB(pRy3MCefz~7F zw>%NX4brs~1S)zzfOF(+Ek>{e>P?F^u#}8;o=P;Q#CD^EyGpfE6zisF&7Wp0@PM#uQ8l(zm zP$=UTG!hf$iSFO~fxdOLf78q%Z-e$nFbWUzJ1GphTCI4>g(9IgBR5F8ark@QBWdEc z#zwo4Yk#W3G2@1tNzg@lLP}&U1pA#O7MZO99tC&}9^@dg>AOG&wsG)`L6)m8D^F-bi%B9Fk!}EJ;7-NTD*1)VJblm%?L@A$yiNR_ zN*tPjf$n}UNI)oYV<>TQzBo6=Js6=KI%9xd0e}BZ7R)GU!se_DK2rXrAU6Li*}JNk z#OhSK^H=?bSi&TwvW+tB(6HGW@aslSEso+M=;CSx(a|*2cpNSek=YCt0xna?)V|}{ zTrlxT(K!Y~T&oi%3ZE#@!{L<{lsr)-9)*xnPKtF8N_ai2o#MZ0IBC!gL$Qsp6Z z8Gn6s&gnB+R1tMMtKG)p(&tf2mQR=p-i$vp0Miv<=k6$|Zzncr&mA(7R@^rLWDs=I zYQH*agSALP4X>gKE|9hMvV&2kw^AvZ!faW}gmNmbaQYn9l7n@!u{?2sM8nv;Tmv{O zBGR5{oW=M)QBwCHaH^{#iZy8#xtUkH+J6it`5)T}v?(oj_fcQINt+8O%OF`^vYP4)mg#jyW+dip{0)NO!-BTlR_?Vq;{U272sSWrCqIVm8cQL zrQmZDOJ2`L8Ma$4xNjy5tYTIfMP$0Cem%%TLvRcw`DGcD@_|S%DDQ4u3UK z8OEd2toTA8!T^Fm!2&_{Jf5ZMEi=opVlV!Ik z<##3|qPvm^@~emp!AcWqZnh=Kjei*4uG>XNb8+}}YQ^1W{{z9%$|}v5_lcs>dBQ)!1^xT1u+L5lB_@cL=1D~x9Wuz zxNt@}3^A_ZoI>X}!Mx*>E&MhCXYogWFhGnpZyeU!If!?eQb$yAbIIg><^*Non_1wm3-B0LADTnL z@Hcy)r!Y%8x7clRE|bsgq9dRISAT07rTRBH&nUUbh`5p}Mb34r|9T->C}v-0X5Ec}{F9eQ~ zhpvHGyil+IHRzd!=^rDs{FlTe*YP3?X>tO`A|pa&VSnR#Teu~TOBJYPw~MpSAuLU& zyl44lEnDGx9xOCB98{3a*(->ajsd_h%GmzCJno?Q&Pk&<XzvfiOofjV7KjkT8RO)tQL0)FS;%Xt5w2$x+^;B_k^yfQRtHC!ndJ& z&$LQY(4EC(dem!kO3UB}z~JrL$`X9Qg4CLqd7*@Hn2yxVThL!~BW za6(zTA3VB62Y($=87Nd(yuJH&{z_$9;Eo)VO3Rv;-+gC34F02W_29+|Br6D$(fQ&u z--#+MO#x4xiRrjERDA?xBfD@AaPlspDCD~m)QT=JS6a}X`|BZPaBeJ2pzNE=Uv-7K zn1=v3M4?6-!r&5zU^ey=zQ|mJwNTM3ynPRaeEP2%Ab&NAz23L!+3J78>DNz@ zcRGVQ{T78^a%8e;7hmY!<1!>F%P3kh+(XpJvYZi2+_KJ{TpjXm2?SpLtC$kZ^u(dN zk6GUPl;ciEb+#wFOVmH>IJ*$ACbE1kae%lKRxO7TlRgGD&%hdcWBJ_hl&X@eH`oP+ zEE(=8aL=VamW$>w$<-v#=-Gn(S+ z3;|DiLStTzl)8WRlm|&b);zFN)QobrszD9rwkLNNY*MK+{OAn&2FY03tEpf5Jpj54Gk>^{cy&yUeV3R*pRs^>fqgveU|_5X zX+e%27qs2?7c(6BMHwnKprk+Z!)v4I=V4BAvdR#Lu7_d4gJ5#jsXEF%=!5*qv7*_k zM%5WM$*Vou!Y7D@*jCa6 zYHwni68{B(ythcY+j4tKR&BK~wpq+p_I^Ee5*>UjeSbn=Z@M{3)IDB1h`wTBv8Vf) zGUabKI^vx;3Bt3)O=|zXZF^CRCWGFRoqrAlxT0y&$j5q6SnOOU5o0?&Ps&D6Ph}`# zwY!d(eP-j3KN_5`jU!b3rM~A)_kI~RXoFy;RSw!9pX9GG#B*F)`BST~98N+GqC9J7 zyK!;S%6g@oNzmD1wzp`{WZzW@_X`T-&+vR;$j+YidW6`>)~^xl)>6cuUrT~*Lu`sa ztO}<9;#H(Q==8o5Tl}2UX=uGs%2mo19NqD{5U5NNDyo1Rz+mR`!bH$50%+yM7He^f zdBH00TyclwDiI=}Q>9_P*rcl2Xnz%4ZX#_#&l$m~RIyIW^MA=hnUPFr%4bUq`Q(Rz zpGTKslcC%{fbRe!3oa<}4EKVhQ%zS`J2GeEVr+blZ0VAxrNnYnS|C25Uov}{GHoRv zfFHfa&Jwlv(G^#}8A+}RLJN4n=M4UA|@AT(`^>Fu_AKhK^yT$XPA9`v4eB_FD$ie0HD3Mi4;`s$hx2m9!(i8H!RzGg?C)?9Pb`H(UMj z<8h|0U)ScABl{{?sOhBJJ+yFPUOt7$z&nj*C(+UXB1_UZbG@s_K&)51_vPKxQ4~mI zVsBl7$^wYH(tS=4B*eHGsefF8JLWa`(eLnE!hn1l1gzVr56RAj0G_?aY8PsdnewAx zZT0?fpiS{s0Aw+t2$UUQ8M-rW={ko_;sJpjJ1cye3c$(VR4{`2w#4pbFy+`(TlH;+ zsRJ^EQ{%@!-i8GRBqYoy6jIyiS8YC#b<%d)^wC2C>^bvFCR##kmw%eyk5ClDOBLPk z?ZY@ePP8_qq>U*{?_kesZmky4-_cLmu?|B2);KDCQ?spBIJE?6j8`9&{>UoVIRUPw zrx_TuibGY$dcSSH{d>KOqk_s$i=X_v>|dz1MMzQ0CJX+$*Y(PaiAhNRl8^?%L6tN! zoCVZZRG(i1T9lcmLVv7ZE)U68M1}eqD2QeQo3F+z`_kj^3BAQ~kifx^iJVoht|)uQ zp@Zi4b(sUN|HikW5)IF|`VA(5R}Oig)4g3o@Edr6G~IUUj9NaSza}p$jk_pOfzO2r z`Uq<(Z;%5A7DwJe@~J%KO>wC&&NuCjN8iAHC?0eTu|CfS+kf-2P)BX2mNxYJOt)<# zud7R9Is%@q9H$%no|irWi2&HJ00Qekek!<&=4kke7cKnH-x$$Mg_!j+R4)~S@4-7 zr5;gyzbMDhd4E#B$j(G@-z05T!$YZ=j)t^KKgHs!H_s_|8VC%~m+HAY-YK*Nx44gH zaUG54Wez*M!YaxNS#)BjN)7?2M!A3NOY99Oa}Rb;C#RPNionqlK3@N0PTt)Op#&Rj>ipw!qDZki{+-V5CQD(Yj^-6 go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_delta_modify_large.src000066400000000000000000004000001427672601600271530ustar00rootroot00000000000000¯é²jïL_R$GŸWJ9a´ï¥yØyÞˆ˜É¤ÖÒûŠNNcÆ+Qz&Úí§°9aÜñ;™5v¶ôy ÎnNßEºvÁ.¡’¯u¾ž—šÐ¬ýGåhþæèì]öØ¿/À?x…`6êqlbRÙUË¢]àËÉPÈsÎtéó¸-èÙm~ÓÀOòÚD²¶tsVƒü†{SÃío̹Ÿ¢U˜ÿ½N6xZBÐÄñŽšøBó+é»è^T в¼&‰nâLˆ|í騯¬{³hýߦ8¼t7ÖênŒýäP$¼Ãà>0Ͱ²½Âü OïVTõع”*ºôæ_‚gJÆãÎD™UÝœ6z!J™ïI*úuaw#Äú¤ÞSÀ Ö’A‚Áry6Áÿ> .ÄÞÆ¼bLjh­å@R„ŠL„È.W8i3È&dÆS7O¡ú¿Å\ò­·ëï#ØÅþ2ïX‡¯X%é©'þßÅù[yrlÇÕ»| 7k(˜#W•õ¦£)¡Õ´Ê!Ðzc¾LºÕsEFÜç‹t»m¾¤ $"2鯷¨šÏ߈=*³Œ˜žîŠzÿ!;Boáó°Þ³üI&šw«ï‚Üj?Å.É2Sn ×’^ïò'(õ${æ!AºÜ$F i Fªè•"GâOÊ+Î÷”@S˜™!Ú© °º×ÁÒFœ*Œ•€39ö™ÑšÀM›pìwH·@·D̳â©\#“¹\ºÏ~<%F‡Ò?«áãHo®xïþ€N¨Ø:±_4iuÿÞ #~wˆþ¸’ú¼CùáÆö™…O'y©Ô»‰ ñ[¨eÌç j`@¦ð³ a‘X²â*Q°ð·~/È)àó÷Wû39ÁþŒ¨…Q—¤òþ+yÁYraZþy±ìm+Ë/Òt0›ìXÉõ€ Î¥ýqj>€ƒôÇÓR°žŽõ‚|l1Œ r\Ò¥É"nб·°“ø¬l>&»l“ÐÀouwüˆÅÃàºu»­À¦¨?ï‡S«÷ùeß;JX?ôΘƒ¿»£Žt°?YR?*)c2<†åMÚs„xÕÙ4^JõùgÎÉáƒNÓRŸ @:ÛÏF¸6ê’Ý¡+ØÞAñ ÈÎ?iØhFÊ‘@–¢vª• "46Úc¨·×eúi޶×Y ‹dèåzåÆB%?–_Dy¾™EôLÁÈ#8ý$0ºª5xÙ‡NÌ¢¡vÞ'I¿=ú¼ Ò¿ýÕsAIÈ îtËêÒàÔáŠôkO–NÔž!Ž …‡Í.íàh>e3$’6å›(EÛ|¿ˆ¯ò˜_ÇÂfd¢Îndµ™OÄ ‹G_tñ±ì:ÔeùÙ‰7ž Ë“Ë×@6í¸‹Ç?JaZšæÖ˜:[,/êQ¥Ÿ%¦Jä¢|%ùÁÛ'qòA]/:Æx‚heþìÿu¿%õ¶hçu&š)àhèˆÈúòÛÁ=K}à µëõç¯÷Ò-V›Ö’Ô”¢V"ö×E+¯©·¶ä&²þf5(eýýH/û-f j,Ç„º“×jj…Y˜[*WEy©Ç­‘rŽ-:î£Д~qן’¼¬3ÅÚÌâô›öÙ©X.§Æ† róôy~°œÄM„<úÉáϧ°¬@Ö uèrpÛ’dë}‹§#ŽÌ¿Ùƒ¦ûRÖ“*ЋTœ»ð)>‡Žò­g§ÎžÎ+5Ú%±æž#3oisT.^&‡dCŽ“ch+Ú‚¥žhï ;³™{gU¢£Ø ðºÊX•;§ê5^»¶Ö>-âJ·;OS 1ÊÃü4ƒ8”¬¥}K§5HC=›V’ݾhž¹”rž P_œmÞÕ®,éD5g¬é[L ›8^Ë7º?xùÞ÷KÖûê³rNÎ3a¿ò¼ö½î§å¼e¾7"åaê:öìæ#‚›Vå²tŠ ½úiŸ2”:ïÒÝlx0«„ˆ·Œ¹_Ž—=È `í·[ù×}2“г\lˆ‚I.ø‰ö–R›`Ò—ÖÕŒBÝæ6¤böƒX§´ªØ¯ž¬§‡Z„ÔblÑò0u2ЏId)ä÷³V«ÁˆÓ*lÀ»/³_ŽSÒ~C'(lbQ(ï)pëPk°›&Ú0½ûq[Äê/ä+u!¡Ü‹:­"Ñ厥c¸„ Ö-¿òLÌìÕ¡1}ÍRcE¢}-ºœË=aÖϬ½uϵHf Ø œ´ΓgM9ó†¼À¶(²¬÷ß¼É|áV@ØsÜÛ6ü–Ëeºn=‘4a¦y!Yû þMIh^ r%G¦Ã[ÃåÍè†VZt¬ú4Qß·FâFÈœKÜ“ˆñ‘!ýÜEð¾VèHõèhi¤§>ìm`žÎÈPYÛ¢˜ì”¾ ëõuМÊsÿ `µÀûEYñP§ß—Kg~ŒnïÉ+Ëi»2›ÏÔ¼¥ŒWà¾ê¹‰¿S8)ÍG%%IŸ×bÏ):ð 2[ÏôÞte ·#«B›ªâq&sæNCÉZpˆÎ9à†#ª;S /»?ÃM¡ë׫4ðŽÕ#39§7Ü´W¯&9-Ò$Ïß6ÉsJ½„oZ—¾_Aíá[úÈÁŒ9ÒVäÕiÓDŽ˜JQnúÅÇJpÁQe.øàe‚jtsÎŽþ ŸNç-dS­xÀESÕN#iiKŒÁ^MBC^ßL-·yÏ?ˆ±S7Ò°XG ”làû9pò¸ìz“ù)¶“P ø#]¥WÝZk±UYØpkH‹©"U2…£â÷²eûï¯)ßUd/kùGZØýI<’Gn›‰µy¤ÊØÅÒÇÃÄ”‹“M¢nÖ´ÑžóÛѤ1]ØMe§mÖ¼çöÃ{æÉΔ'æä)“ë<íf'»àä€ò?æ\ã`½”ã8×1D™ž5ñ ¨ØFíQÈÔÀ¿]æ‚l)u ¤œøš ‰Ø&{gžý©”M‡ô/Š!Ma%—äÜÇÅÛ:gÙ¸Üû;Ê[z FO±ƒ+2ʱú†ÀuпLJÖ¬ÚP©:¸ÞüxF¼RjD¾øòÄ*RËT(; I»ê‡ÂskÍé˜×I[Ù+€6™]Á*6=Ññ=Î}Ôo)E³KØ£¥5‹†cO ÓBoÍ«ã^STTFüˆ•«}Á€#™ 4ëz/`³ßbç>ž¨ ¿Ñ'’%†ç‰ReØ\ܰ™½‡‚Ó¾¹HÀ<Õ"t“hÙÁôu—BÎÔ³ßØ´Ò#œ]02_pU»`ã>6ë±y„î=L1+ˆ ØnÌü/îâ(µõÐë„ !ޱ%Sí' L7Ã'4{sýc êÆ†Ÿ)#ÐÃ6¾²tXîû€,#v?ëó;±x¶$Ze±U °é¾ý»ž¶ñoO,Lâ1“XÕ@æ@Pv\Á‡qBêÿäJO®‡wÅñaJÈØã"YbJE°f4|#åü Šª®±…M ïmøÔ[üø%¼,…±ÐÉÇLKû¸4™¯8 >ªyARxü8Ÿíè&’÷¡o#ñêýÇõ[´ìÕÍZ³¿#£îÇ0v•‰šób*-9‡áÀÒÕ¶¾³zÆäe?Ó¥¯·) *Úç÷õ-cÁ¤¥J`ÀÊ 9Ä{¦”ù,\9¤[fçVo‚m(ù‹ÞLb9 É,¹Ï#<¯Ã" —¬FùO–¶ƒ„*–.)Š/ñ(­[ÂürN„—Vô¾5\­«-@ØJ@Ð}Si°háøÓFpbô+/ÿ±÷‹?°]´B¼©;·?Q‰êz¸?íhøáUÒ²Xo4Ïx”bL¥yñp”~o p™ ü±ÌˆÞfÊI3a4þ€edÛ>úi;ZC”É mŸ¾>mæ3 šÛ½+_fü>HSü*šìG9®³–eԛǂcOXs‡Î‡Ã~Ôðÿñ Ks[K‚¨*w+þÑÛXÇ×È€éæµ+L;äÔ„J‚)_ªGœ1’¯)‘6÷Ù7?ÔHå¡Ò>KýÿÙìã½TˆV~Tª§$Oø ð÷ðð TñQ `à0µNžó :„u­ƒ$Èè<Û(Ѧ¶²j±ëßñŽ#a²DÚŽí8hiºªgüÐMÿ&/«¡zW«uÓß6~а©÷ò܇À'(MÊ«¦ý3 œAE{6Á]ceÛe†)¨4'^t¹˜It–uñ7ãÎ@ô9‰Ž6žoe ¢«èýGÒo pÁUÜk!o6V±åÃDð;c*ƱÝ{ÔÈÙ&dgþÂÎæsªøÝì?\}˜ÿgž[±”a'ûL •ZnÆÉçÚ¿`ñÕDÛõ¼ÇÕL@vx1ôâìwfÿÃH‹'ŇX+]…r„+ò‚@ŠIQ²ºR'¹ÕFìÊÇÜ»þ”%ׂ·ôç¹~Ì=I·Á œè€ƒúY~ºüó…;“ŽBw…pãÓäÙyc†Òt à xm& |ïª~rspàüâ¿JjDU”˜R›†î%¸;´D[pZ¶AÑJæ:Ș(çïl iÃ,ŽžÙúHßNÙøû“‚Aê?zcM-/X&?N=sò§ðnDüŒ¢{©áÌŒ¬OåP4r[Šü=ÛÅQÛ/ãèý™ð6³4¡üDÈAeÒ·6š¿ë2æ®VcOÏ· n}aÐ~£gÏ_/¹æÉþ®Xáì dWÌwœ1Z¦üF²±Ý1Kþ²ù»0I/ ú Îd$ÒÌÑzt¾*N¹7Ãôf~2ÀhOÔÖÃ1"±@*5ƒY$ÌÂÛàéóeƒ¥¨«äÍQüQψŸHù Ú›üT¦Új`L …ÉÕ¯†K\gIMm¶-÷°ú+kä/U('ZÆéƒÞqgzT¡ô§Y¹‘({à‰Ç'ÍGF°–8³‘¤T áì\Ièéã¦\ài{´FÖŽ ¦lVâÇÇ»G*rÐýeæß§¾FlâÄkpñZï.ú‡Y¦Õô÷GaðNAU[ó:~?”» ÷d&FÅ-_‹ ¢“:2Ý3@¸–]B8hNB÷Ç€ )³ ñîeR ()òâ˜2êJCP8 Æ uF(‡}Ø>Æ õøRzûˆiÚD=Þü׿üHšd¢ép¡ uÖnâˆà;Ðì?jΖCº-MĹȂ~;`T*@äò{h¶*ýÜ~…¹´úe{£X°4Ìä@ ;jF+ÃÊ+8Ú6¬!ΑyÓ;j[Ÿ«©œ]xåÙº.ü,’âcF‚£¤»þ¹mcû’}ꃪï®ìéÃDhCb"£ûläúÇwIÛŒßûÛ‹¾g0$Hž.Ñ@’N_v”€8Ü6nõ•Wa&l©iÄ T@i|XPŽƒâöÿ˜ä¹…w<Î^‰ÈŒõU3ÍõÄ+X§EçÍm›ÀÛGwq›n”%wŸéY}¶â-‘h%<•œÊL3T•åò/bÏB¼KèÇ´¿š-.õÛÁ$FFgƒd–+öÍd÷3YLÛ}cÑ5ê/~üÂr¾u9Gf4q•pú¤xàÉI#Ýt\×`1©×Œ{U5ö–$N?Z>b3 ˜ãßO±mu°‡|ª€X†ú—ëO7lÝp‹þ­“ƒ3.Ù»_¡ðR˜n­f;KQ¸ÍüâOI*&úè€dVj´BÌÈÂBB5¿zTù´ÂËDó˜ù¡iitÖ‹í;O•kÙý¬•¼t#Žvµ†vw˜:úÎ2í“òœÛ;˜;kËO­´Ÿo²Ããɾò¥r{-@Ç7ãz¥÷æC8B„5MÒÍexÐQ¯dg}€Ž2rìøO¹LmQU¿Ñü1Ÿ·tç¼YXÆzˆàu~ͱS^jS‰âno‰žæ y*!më+ÊÑaœb®jľÂÙ«ÏFÛIÅg¨Ó¦=~×ôÇ™”qÁà ë­‘l~$¾qqìtÊEã0._Õ—k ïòæÙ>ÏuðŠg»DóU=Ž7†ùpøù$<Õorneâ"îøFÁ±ZºüüRz6ÀÁƒ®’¨/íøõåRð…•´8Ký(µà?–^!8\_ºMC¨å¼ÖGNûLÑY`×´@ÍñT×Ò–¢z¹„ãµ4„¬O–/j×;TÈýÎÎ0sáCG…]JûÑNª*ön£Ì¨a¬¯™€ãà>aäþܤÆKz;Dm†›îý")LÕÍR ƒ½ŸCÝó2 ·è™"U™£^ç ÇÂZÎ bvÅÙ6²3™t&[†ZDsí½SM:L ‹+\O¨Jp sÎ\˜+27À¬¦‘Õ0<r¸VD‘ç¿Ö¬TŸ¿g´qÈj1pp×ð=†‘¬fv„lj·¾sÈ ¦ûuro2øWæ°œKo~…°K:;s † ¬ñáÓEäìù'û[efM-€Ùø‘ŒnŽrS¥£^F-˜3¼„–":ç…b7 µYîÉhÚiCmÞªHÁù´È„ù“k_A ¶ÒÝ þàxöÎôgS ½BùiVaÄCT~P§“S— æd"ÔUžµ±¢ËÖ©ëSLÍ‘„)ãýË<.V‚È:j["×aÃPh¡îÊß¿ëË¢:w#¸KE^ÜT¾ ]ûVl;ÑqÊ5-?™)à€óp ÞK]Lj`ûvô-»Žé8¿öÔcªôw,Æ©"þ«k¸ý“w)6橨îàT-»â _é鬂»n;;:ÿØveÿ·¬›Ò­w¯ ?y®,,‚{Í—£¦<b6o’¤Ö‰IÀ) ËN²‘áÌÔCÃ(1×Á°Ýïq!Wf5%^Vñ7Ÿ9k„­)Éh幬ZC4…ÀptAv¿Ë™vëøÉf Bw„±f†Tžžú¿Öã6l½Öð ÁЮ{¨©“md‡‹ƒ˜y¨ªâS£èI"Ô#o-‰Ù ´5Ö0¿£¢—gꕱÖÌ·øµŸã«…á¼\[<¹™$‰¥V˜º› ”9ÙáÀv7¾¶ÁSH.²€îêùä¡ö¡fÕ¢Ûd™®FS®±Øí©$ r*½þÏPöà¢Mí „YºqØ¿±D–.c€7z½“›ÑÄ0ŒÔL˜Àì¸óׂ.ãáõ“ ¯ýVV§JjyȘ»Õ!Q×_ÌôÜ™‡ŸVŽÁ±ê_R“ÿŠçWãÍvV(ù°½}ƒƒ“DèÖG€À‘/Œi‚/ˆFÈi4“”¢öÚЗ²—;$y©¯ó Öúi'á;¤¸- (—›mò±Ï«R´s=¡ŸÊ)G}”ª²xÈ®» N}[ú Öjqa˜}ÐÝve@•ÃtV«Ä÷y F’Á˜¼iÿ ¡aÎr×D ]àêœð?éhœ§ÔEŠPÄ?C‹'²öñpRËüpØð'¾0Z…ŒØjà†–Ñ±\޲x_&<ퟱ ìDÑR~³3vnQ.죴HìiÛƒÞŽ¯c;#Þ {˜Æ_In8˜ºÙUÁ´j!±ðø ¯ö:â\Djo…>äK÷­ÊWé¤2ª]€²7QZãia|ÔVã;ck{ì—ºq‘˜=Ǧw®ÑŠö?+ÓÈu¥x¡jâáú³ãJU÷-…~¨vî†u ÿº€Ö…¢©T íݱj—n±'‡¤”½Î|¨ŒP{º›-rú€òPˆ4ÀVû"’wiDWê8鎕¢šðˆuAôלìÒV0Ÿõi—gæ–e”‹)DõŒ€§¬qšñm\:•`(DZy‘-çFì#PR<!äûnêp;í.ìú\nŸäXù¿tÒÉ‹ ÏV Xøá#±™€Ïô(ÁÐ\—Æáù€¬zIšÊþªk©Ù›Kº¾È;HÏÖ‚üv8$7Æ|¢g3 Yá%âa¥œV¶¹ÚÓcê]LŒz¶ÃÞ¹PÖ'LdA«@7Ä„ž?­"ü9O:ãÁ3ˆ$ð¤—ë TÂ}>hnÚÅÉëæyc±ì}Œ»&Œ}ŬŸjùì‹馹»…÷†Nuž|Ã1Ư9’' êsŸ9ô++p;pšïßOŽË*V‰îéç|Y°ëëúº:‹-c[}]…¬ÜÉê'g¸ã ÎÆ%l˜1`G !±è‡LjsXå¨t‰§@žŠ)Ûç5Îá)É=Õ'‰LÁ g¡¬ØG3La°=!ÿ ýkÌ¿SAWÅ0ì½4r´”8ÃÆ†òÔ…Á56:dF»ÿ^¤/3p-¼ï…D[p™­ ÁH‚íÙ‹È÷R_ì8ã`JQ@öÐZ†Iš.öç‘z)Zë-™]ØôßBÑfOÕ.£ŒÃ×V„v˜4þDÞDSxТʃ®J Åo£, Râì¨Æÿã0cSˆ«EšÈu*ªÙö½cÉT—@W‘È\5õQÀ²Ï€Ý„âK‹)å.¤dÑ“2SÎsÞ=+Žkí°K%eþ~ËhˆÕ§¼àôNS³ÁÏ,èÖ{D} öTÜ4v"hÄ–B>‹¼ëÖ*·¿éîŽa¼>´óý,l8ô¾wÖºå>ºý‡ä} ¿¸ž“øx&yœÂì‘Üû{ߤÚëD ‚é}5j‘GP@þpo"'âÑ()éoÞéöÁÿ†tUF¤» 3þIXhm{„Qo ©KàÑò\†:<”­ýleÛU ‰Î0»Ý*v1¨õraêýÝv&§ ^ ±<:m¤A¥IÑ8§û†ØWÿÕ÷Pw+C)è–ûã,0zè]«gáæ&-"Œ¾"FUý8Ø_ûÜìz„€Æ6DéšÌIeáÌ÷å•ÍÛbÕ» s±½LÓ”>ίÙaW¢2¥[4D qãÇTç‹›•¾C„êIenA¡<É+¦=`p;6W’²ðX½Ç²µ_§o¹ŸÑ¢ÙdRr™Kh8: Á½¼-$¿Ôx# ohH«X/Ìh!)s«ª•M™êƱ ÝuGÍR…xÊRèy¡<ÒSÙò_â–´îm•Ø ZŠ51‰àa+ñq`4Šü¸XcȤ» ä±?³^QÐLÊáêün_´Ø!…HÑ §Bð7hªÒ2®Ž› ƒ²×ò¨ÊÍåÓ›‘]%wz£#—x­U““,”M3ã¥.—brr8´pìÂþnú÷Ë0û›ô ²Ì“8àß&?j?ùÜŸêN¿m‘óØD˜ØÛÃ̩ЮÇÂJºåðc¿).<—ÚDIx"åµ!§o„øñÖ3fÕq3ÓuªϿƩ'}´;3˜¹Ñi^TKÇPb°;4»¨äk#Õn.­²lÈ-ФÛûò/vOiMّɯӔr(—ŽeRœpH%²7O/ħÃOÖ®“±ŽÛ|6Êv®´~Úp&Ë$툃k…Q‹nÌ ÿš{ð„šO‚‡¯‚Jý?Ps˜C¾á[àqË£$ñ]\„ÆeUŠõâP…ú"tžÈU‰Ï˺¨I( ÒÄX1<¡ªE'Tœ8¸ÚšU`¶7" Ö‰‚º0BqGñ¸ÅT4ŽÙ–®½{RÎâ†Á}±{Ê.9¤€ÃyN=Ök™=tÀÚHl,+ ؽ »œê[¡¥åÇ{“hÈNô=‰èHívrúÍ©-6w"V]Ptrû¾™–2¶ÇdËÛQ–®V=ä²ÕÆs¯8¤‚=4o>7\jë~Žë*¡ O¦Šd•Â8ŸFWÂ×T›\ÍS iÃÙ’ÅSbuíüªU¨~›^9BýªÎ ëxAý0).¬u$4FEá†f² ξ:ÌÓ‚I®®ØôGr™°. IëqrŒ|"“H#€µx°6j–ó2:Qt ^lÓUj.ˆPÍÁ-Ec † Jgú,º(a´3ä «-‘iÇA±’]ø*ìv#.(:\7›nzIbÿ9ŽÖqùDÅü¨Ôw?Ø‹å¸í³£=´žÒQ#@cÂõóe”/£ ¦W5©fÖ†žé“z¿OAà A/(²0–@óln!# ìéb}1züY7ƒEoý̶¹ê_¿ßÿ‚îü [«Ôí ££Æ2®ñ+@¬±„¿—Æ•6ãào¦™HÒ²·"N!9Ùm[;€©å–]‰xÒñ•xÌÊ‹¬ ýc/ jr,`95ÛËN‚îD„àx-¶å˜4°©Q#½B¦„׿_FÓñ@ßóW7É ¶Ò޾èˆt^ëxÁÄù‹½{Ç vs,üêÄ€ƒÌ '×0vö…Ær¶à£üô¨­l~kÓÝu³‹àh°ˆ,‚U®^vUþìµïätᳺ™e" ÇØÇìâ ³šXÿy™œ¬ÒýAýÓòM¤‰ yõm¡c¦vÊ× 9w‘+1ðÍJS&–—Ùm ºp %AûTÀÔ­g ÔÝ.ƒv! <ȳOH5pìI»„Ïvx¦6™X€ìzïK“Û¤­wÁûeâà c„}:++eU •†Ó÷ò"Ù¹¸1U^ˆH™3üøÁ2˜°XZÆÏ.²¶¨˜LúYqtÜ:lkc}¤2—½"'Oúñ5¥à¤õpéóB‹ºHÅePÐÈŠ>®ÓÂ-'Ö !)“Ûs~fI,nûßà[@8Z)õŒói%Kh‰”´”h;Œz«ì9„4EÆW=ƈBE BlÉhVJv·è"Κíô žÞ¬(2à–%½7laÞŒúšëL­x„±ü»Ó-H ³ã*«2rql*~¾§2O5º†ì­crÉ—d AÊk¯àе>¤¶Ê±éqt@‘KACùöÀ4š³Máî!²y¨¢[“üÜ…e£HÈòŒ_(™ûŒ":ä6âûê%ßóhŽi*¨”¦œRïh3‹èÀsÉž˜â(DZÐ'MÚ¯j(RºÚ aúEàäÒ03³$,)Àó•ê¿èò9¯9žƒ|[áÆßœuQÊmlÜorÃê~;Ç]ž›À§x…|ÉTé4€¤¹E[ ‚¡¢Ûë–„S?¼" ¤ÁË÷ûÿÊ”=מFÂÉ¥³²1 ^eèwö9E"¢ÉY5&q *ÊoßÝ Çµ³¨_OE¿ÎÊMoëƒjáØ‚P+Bf-zM¶¶gRÄÛØªô…æÑáãÊ]•Zœ(…€&o¯)EŠØ:$åeRŒ³G´ rTHj3˜ºÌ¿Ên(óvW\kE¥¸_ÛY¸_N·V?Í™pr8ÐaÑLžk„ÈRÒÐ:(—ÓŠo 5^Üð]D³~¸ú¦1a©8‘˜—îÜx[L+ìN~)_Ê­ŒdC­}®Õ4ÎW™Ë`K‘‹'‘x &éçN¦§^BxmÔ£›þ°kÉg›îj]}Žéb><³xHÛœ8{Üß": l’Ë@Û\ŠU“Ù³ "V®ÙÎé‘MgÌK¨.4ÇÌ µe ¾$;˜Ê…£®à‚‰ŽC'çËÛ{)ã³íÔ~„n+»¡…ŸX‰º4íÝ·ežì‡/^ÊÂJ.l¿^" B‰thˆ7ŽÎ‰Vºéµy8£ò1`‡ ”Ì4(8µ˜€.m¸2¼ªa‚Ájú“é2Òl“òÎñ÷I®ÜaÏÃÞâá­µÃÒ%1Ã1†^d«ftÝö|æ€eVu•/*MZ{þ ô6w`›…öÊ(†Æ¼‘rxTõ3xíÜ#Ÿ`ÈšiˆI-¡X‘»þš´YŒ pøÈð¤áú3 èEª¿"Ì¥ý'—(­u+mMp*Å!&:(ò¾3ŸFF5IáZù £l$¦Ç-ßQŸ‹Յ݈ˆ$Ò'ŸRVÙ·YIÝHŠå˜Mô¾«S»ù0CU øœàÃR1ÅFÇgB¿ô<7°çϱôl¸YŠŒH8©¬½Á:’¥ehI”ž&h£eâ.n+é_¡w}=-‘]rú\o!HÉúŠEœ^Ø…\®¥þ§ž;Mœdfh!~}»‘I¿Êr׿Uý@à_aùˆ/«écMÌ¡%£½Õ-‹º%Úñcc¤=„Á.ÒÈ=Zš\šBšCÿÔƒ§˜°QÕŠ`tè«?DjŠtMϨÿ#|ʯ‘¡neéþ,>ìLG=X­åÈ]áõ>dŒ6òÈš5<2ðàù²æÏCŠ.NgÐÐÀlK®^¿#ÑH¨ ï#¶s4ê{™Ó¤g¹¥ÑÁ6 Æa•A›åOï½3××£³C¨9ßZÎaÝ›ðr¾‰ë%Ÿ6O¡PC›Oû9êâ¡þøí®ãÐ8úŒpNwvI×ú²]‚‘Â#òù‚|‡ê‰7r`ªí§â`ëÍ?Z=5áhžR„¼KzÞíyDö K!”<;Fâ\:y8Y~4k8ÚÓ7Æ™)=TZÏs­PǸ */„±„}ÜÝÅæ€¬ï‡¯[Ÿa×N’lIÜ4cªŸl" w¦îäå(ïù¼j;ÝèC>s…önì‡òIãݹvä84±A›ÁÊß4<ç/¢@}Ê¿òú”K½óöÿn¿…?gÁC8RK_À8lÞaÛj¦J$UD]`tU–éÇêÏžeönAÌ·­¯×v^¶ =YíÇFo|ûôªO;GP/–±ßçðTO¼ÆEÎ*Í&–CÈl¶ å“ bÏqp€>ÆÅïsç>¯‡/8ëY»þKnÿÕèøõú)Nq/Ñd½`Œr$$Œ²± ß•u7Ù±ß0‡ø¾9Ø ™8¸€þ½ÃLoQ‘od/™Üù|‡Þ`¹üÞ¸û!bØzZ–[ †šj•VÿVÄ—EòµíªpËû8šSügz~úý¥‘Œ‡Å4R”€î_cñî }¸€îK3ñD\±peSS8È×uÃÆ!Ó £Ÿ_b"s"å1(VA§\'<8à¤d5xx_3:¿ÕŽÛ`Í:F7Ù4<ìjÊLRåæÿ7F—±dóŸwœ‰9úÐdÂ.¸Ðf€JûimÆ…ô‡EïHÍ<Ü8¿Æ¥Å€©¶ãÜr“ß>ÓÃd‰zÒ«*+y>S¶SÍÜŠúçÜJn2óƒ®-óµK"&ÎVDeìrü««Ìì0ù?ñfs1n‹Å`þºÎÈúT’-—b¹PkcùdÒ™@džN $p‚s•¥ ‘Zfö¹Å¯ä×Ü‹ár+ê¤ÚSȘrî¸ÇöCÂáÖk%|>Ä7&‡¼J–àƒÑ ”ð®T+€É`f.ò>ž¤¬6T·(cz•©•“éAÁR$·T&ülããx¶…Ý896|ìŸ (æã<ùV·÷ΪBGŠ7›i…½7»ÕønC×úâ½ícnž©AêðÞF+þ³¢”6£!Ïûì“p 2§ó3'æ†ãèu=ª®X9}] ¸sF½øYw« ÐEˈáÈÜj»AÏöɘ›íúÎDs˜á¯k×°ìÒK22)ö[œrT Ètýfm+™-sÙ@/PÙýŠèeNTF;¼XÃƒŽœ ~.MM’²®Á÷e£ÜM¢bî§«ƒ‰X’¶/G¬ã˜ü¤&Rm¥´x®ªÇ`å.gë~¦±ˆÈ¦ÖµYaÇ š+Ý%ãpŸ=šÖÛñï˜Ô±{Ê2ïˆ1#(”ùT„%·ØÁ3Òtݶ&Ô•Ï!Ë¢tQ×ÅmvI%¦í‰4•?/o›‰òê cŸQ}Ë h#`jƒò*?`-~¡|›·¾î-ùlɰ³šORͤ3$·“$©)ÌŠã úäì)·eJõSMîëáí døK'fì(¶ªß=ôiÅ;ºðÎ!Þœ„ˆå*_½Áª„ª%¯Ix¹Û‚Q²§#;ˆ€7±Ç¢2L$ÚF®§pŒ4‚ñ¼G‡ø8/Y#ü>#q è) XËÜ D /„¶î&ië}X^xu§õØ1‹ûåÆ_Éxɘȯî7ì§’‘Õ¼æWaÞò¦öÁÇýëÅŠ;öM¯vÎØí+d jÇÈ$s›ÚžG,Ü}\ã°ËóàUÔ+t Õî¡.[³³û¡ùúaÂE+VÂ[Ÿ08š:úb<ò9WŒm~=®)’KÿéT¥®ûöf8•Ýñ˜6œ·‰€JÊŠñb>á«9”?2jŒ3%¾ÜÔ: Ý¢oßUëd@½”øÝ>âÐ¥aÒYÀ›fȼ’ž>áÙÜ9íTaçéKÝ]¤on"HÁhRa+)íÓàQˆcˆÎ:¬LȇVÛÌ1”L`ãEÁ§a"™c] /\˜òDF·>ÁC~Ƶ_9Ú7vNQ½b C.‹Ÿ‡fý0á#åÓ0êŽÚ¼5í@eõ7xhÆH˜²-5?›/Êë϶ QÕÁøïœù‡Ž)õ–¤¯ßå¦L¹$*(ßíôTΫ—ž ê_Ï—ÉÖ…Á봜ʊ›âC¦¿8K99å‘ý‚ø ‚Ã;ŒV »Ò•ÞƒáCâÁX@ñ˜êhœÓ¦þíA(½D®‡ç´ì‚ßHøÞGp¸ù ÆiM'Q•ŸÉ!Ƭ\òÌнþæÕ¤ýÜÈIlîàŸ>D\xBñì«tƒ›¸öh%á$¤G°Á`ÑD0$ô¬²;‹ xšQ·P¯®ªB0ÈŒ¨ÐÃ]+’4=¤ŧL<Ÿ‘4-áÊ©YÎ*µG3‚Z@?›Ô3³$˜2ƒÌ‘c¨Þ#Ö>Ç-A&ñvF3ôB¢|ʰF±$c±xqF6êOn+CÄPñ3Á.àý£€ª„$áâ t†4Š8t¦3Ÿ¨€Þ{ Œ•õÇßNòìPɈݟçbŸ»$ç¤V`7zÚCê­­I’⊃6‰Šú;9Ftü|‘ä{tBù{Ì‘ßv7¦A¤Hd‡¼}°›;zQr¯kÍàÖˆÿj¡<%ÀeóaÀ”ã¸}õà¼òjAÖz°¥3ƒJš2`˜fãœv’[ü³¸Ö¨3$Ùú¿ŸWXŸ¸èÙàZÙ¹À.޲$ Õ˳n½Žúƒ#FÑgŠôE0Vn…“ »‡z/U TûgN"˜ê9r„]³_ûj^§·Lsû30<šüB¡~žZ!¨¿}ìÞ^ïB^/1ƒK ‡i'-áÚÔöFµ+t& ¹ @ ÄÍßÍèù†4âð›YU%ê6 T3ÿ#( Ýx1òj ‹ ³ b¼MUtCãå`úXZÒgK¬^Ó˜„›æ…]ßÊ Þ¬4ñ"qìü0öŠhÜN¤Î3‰l•…B%ɵi•"æ¶PØ$ÇCS3c[U¨ŸÔæÞì‡>ÛÈLWÕîŽFrµ‡ã 1ƒev"ñ¸ì Q:P7š`†½0lžœ»0FcA# ×§úá†GèúÝŠ“pm0ê÷. ¥Ò¬úŠpëøE ®(¶ÍxMq¢ {ÉÞ*.‡÷8šs43Üñ‹?-%äRkAP®ã­~ C[âÒXÿé·´<2£†æÌ J¤¿Q¥ æž~bu’²Vð*fjms·§i¨óÏ2ªäpËáIQøÇëÿ‡œú"d´[ˆ½‰jkPqˆFAT8–é«Â1DºKìê2“¡^¹DÇ‚!h™§ ÒmDèQK',OªN-^LKjÁ³ƒMoÕ¡ÛU°¡"½¦$ ê«)ȱn) rl~xœÀòÿµþ¡'âžXk—Î<.fMªF V†2åÁÏØ^ ÍÙÝÇË^J`Ø_Ó’ûK¾SëÔNWW5†xD(¥bƒb•óЋl€…mxñø|ÝÔ@QK8:éò*qÚ_ΙÀÑ䨎û×Ñþ,('7u«'!ñSð5XOçZÂo5œJuzàfç-Íð£`à‘ÖùGøw §dS©ÚEæŠóûL' ¨Âêì iˆ‹¶(. öy!êÿâÂs].“äMV<¦v±ï¯Ë´hSËí):¡¶5‡qVî;à.Y¥mCõŒä% >–Š Ggr1U!ö×ç!á 'om’œª:¬ ýT§xŽáEpå*ÑÔUmc;P Ý2\ǽ‚´fïM Ëч;vþ½iƒ¡7{¡qüþÇjÕ8ÁéDoÔ  •©)ˆô¿&½ûŸ’ï•8B¡Ìmvbûšv„>{=×yØQÏj÷£^MZ§ÂÙ4°Â¿ÉÔý+ ¹|t‡ ª¹ s0áˆ=¿èA»«=m®çLÅÀ,Œe³Uz[,Mó˜÷;R¦íáË. oƒ¥1Ë»á9èŽÑ¡ê¬ìC~?ZÚ«¨åU2zJP£A$ÿ{\-D=¶²áßsæ©F Á™&ktÛ—ˆãùè¡ByÍÛtšäM¦sÛ!ÖdxÇÑlj0}q}e]‹Œ,f™[gIÂäÉ©[ö×S4Ëk{ÔãÅó–ä2"_ÀK^¤RêR½1óÜR»k„Xáëæ: JïêÊEuO²ûSˆMÎÛÊù$‘_·¾R4©¯e'hÎ…iŽ?àÞ›]Ê9/7X°ä»çýyTçœEV’Éæ¬íIü6óCyìÑÛP¶F¿ˆ•¡cR´­Nšàÿ5W1qUq YxâPá?cÇ]™Xz à–ñù³»‘ÇOø}½ ,52óßÄDy4âEåëpÒw :Ññ÷¢ÒƪLk9\è§å›Ìä“`¥BNñÞ ¹Dn# ÒsBeÄÇ[ÝâøÖWº|<‘lßýO‰§š ®T{.©†ùï~ÁgtKU€ÝQÿU˜+ën~oj.Ï÷#¯\gA_/ß§P'ig^6pì†2Ac¾CÀyNaïoqpvŒwCQ­ ¹’ã<Ǘ妦ËZ;ŸÄÎÛ›‚øŠ>û\6¤ƒÎã×»Ý+Dôm„³ëKÁþô—¥«ÌµxLb[m¥YT £„|á·Ó¿'ÃèÀw“/¢ÔF¦AG8H.t?¡çusÒY}‹(æ þìÅ_¢¦¬ ¶f«Ââ&£ƒEˆ‚vè´Õ-ÏCñ9‘þÕ}8H“drÄEÌ7LP}t… 3~ ™®D+õ›kLg[*|®ðÏðàÞ6^VöÛè EÇ7qSû Š„LËMi©'¢¶<ž ”¥î šN{~m×ÍTr<óŠhîMŸŽù34ÑJú½{á;5úèzíÌÁ!÷õtÅ„È]<0í£±ó_—º“5¸’°Û7˜’Î*¬V¾¤;àw'I ¦±á×?6K5Þ,ÙûQÞ¦U ËÕâ7ßB‹luÙy+ù¦ðÔø¶»D;ûNVÛv!Eý¶ÁȵŒp`ˆ™4„(áÖ—ƒÍSê"QP´#,ÅV‰PŠ:Z~¶¬Üº-ÕŒKut“éÔaÉš±äÜ3‚”Ê|ÈÆ¬óŠYfÍFŽ¥½‚þ£"ëx«Š/ˆ»¬¿¢ò°_fh’iLÆðTKWNïkîm!ªSýW ,Ôl¨Ã ܪ—¿Gcž¬z_*2CÄT?ÍmOþüF^wóÖæUW¸ËcåÁÆEÃÙQ ÛaŠ PƒèÕ =¼3΋ž˜¡‘†Œµ`¨´É¯Ðlñ˜%wÁK:{ÈÒZ®ô…øÄ4ìUV‹ÜÜ r':þß„Éò!bky¬![xƒõ×1W#_Â…F%í&]~Pßj<¦ \¦ºØjœ_F0½?GÀ‹Ô­YFlHŽÒVwÏìþI@À¬ÚsLŸwìPË¢?àeiÌé„•™œ×)|vg‹+†2„Ô¡Ù%¶ôœžL´çíV«h¶/Ÿ­€)MÒ‹ã#j^F9Lq€3¬ÏA¸#ÊDuqUEïV ø¨$!`i/íáN4àp¼bg4N\™òœYú á¸ÂÕ+.¬3¼ ñI«ÀdgºÔcîõzso{)¯$ޝZQ=Ð{ýŸÎdµÅ“Ï :þSÞ0 ïfÈ9Øà–ڱᷠŠ6Ž_!ÚËSÒ†vÀ<ý§ûx£§ÌP¼íÑà¦ÐÌé½ WZ£ôù~D:Î5ËK%[AìÔ?ÍXCâoŒ,š§¶øƒ%µ©ˆ÷ ŽäV·ŒÁÖŠ:1Ùe—Ãì*u—Ä»z§œò»×Þ NzA/EoJ¤ªjݶ·c‚1¨Þp°]}ö|°ƒ9‹èî^_õ”ëÉ™qÜ­s# ¡Ù1…:¾×Fäm0ZCÉÞ©åÌ„ßåØžqßwàÄL8±pã¤w¹M(|(9ï®í³VC ­ÊœUYµï·ó±ßè’ÇC Ãßúy=‘–hðB‚Ôò\ ¤ŽÔã@êÉÜÔSàÑbž²Z ^Êÿ¦¹ È «íœÎyÞØ>nG¥¢LKð=ÒëâÀHP3mÍxE:'âqd³¢Þ\ìãpeÍRUàáÑ€ëîiGÈq¤ÿ½¡>•Ú¨hçL¬^te¦ê“)´ŠQ%•{Ÿ'H¡’éB‰+ÎæýçoérZ2>yˆJžóL'[*Ÿ<Òd/b©|㤠f?SŒ% a]ÒCKú7º:w“c±2n¹šˆ¾0ƦÆÈl±uò~=ŽsÙY€+”ÉW(Ø;RŸÆx´hez»g·ôqG±ak)èX^…€ˆdO.Ý1þícú¼íªîµšéö°DláÖM*Ã[…q£Þ@#ÑJæâ|ª p3iŸžæÀ¨Ïçrê–¬*Ü©[ø«x)»zc„U«£½±Ç‚‡Ä’ „ì IT›6m¹#>Ì<Ñ#Dz¿ø@Ü^•hß!`Àr[ÉDà”~4Öð¢e3Ùa¹¾n¦J†7"x:q¾lXM ¸¡0ixNq%šgnµþ}lÑRSó߆0* ù¢,ï|Ðö;=Zâ/8f"E_@ºqÖ“Éì_ü¢”uöri‚½|O…&Ždü‹¥ó¡:°…#Y@£ùWŒçB­–ú’QWV)@-Û-A\ü¼-ê%ÓùùÍ⻎M¨·"Éï£n`ÂvŠîÑâKRbêMÙ¿ò×ìï6óð—Iy±ZÅ<^áRóŽ+ïúª-ƒ'eYÔÉÞg†‚Ø÷Mý™*)ñ‰R*]]GÕÍ 2g\Nž*VÕŒ¨cÓ ûHÔæ½iġ ×Ò@hßû‡É‡\Sü†tà ´`¥þ?=v¿ì¦ó\”%­“s¯z:šY½~ò¶GF/³ ~«ê~#ñû•z®M÷*¶§É_•SÀÀJš'$¸ž«[wï§ŠJ›Ò%¶Õ‚à=© –ò˜~¿ú‚â0«ùMîì¯"¿b‚ía.W’­’ìóaÏñVß• \®ñÿBû³ÕìÒ™vå!à Ýáø …s-E¾·Ÿ2\Š9¹te_aèÒ÷t&&Ü££#s>B´Í­ø§›ÍØŸïR™ËúÊviHS•sí…çý÷=ß­‰5`Û‘Üs!-›ùà€ÐM+ÃÉ»«Ï ¾:1–ŸìÄIt•¨À–5&F­Ô¸xržãû¿»8ðø¢{hcr·Ÿ¡ƒøüù£Õœ~uU€|ÉÝ€sè­ù…1ܺEÕø4÷iÂ?s0;œêÖV—€-Xðg°Îóñ+ÀÊg ¶ß£5ôH ËTQžéyñ²¬ÿSé­l!&Ùb5ûƒ$ZÇéá¹ÿöŠ‹Ýµþ V­ŽM¡SA&)ÍìÛ-¸Nd†ž]T÷Š™^v5ZÉ•ü˜í÷ ê¾Îé)9ˆ0=Õ?áÏv÷jváÂ[ÄöÁ>©êSnoµùଳÀµœ£êަ#º”ùɰ:g:ðþ3Á•n%Ї| ©æ}·oí°›k‘/š=W7ßœ õqÙeB(…|Àc™šcWÐ š=KÝ1£Å!#’ÂûØZ!µÐ0+]ÀµôbКÍÓu_’jðï°>TP¿+C™p×ÍŒð½ ø’kÙT!üUH§)‚•˜@½åëƒÛô'¨,!(37΀°@Mí¨.FT#ujJ7Î…,EGà,oæ@˜ƒÓ\óã&$%xêëh9ïOš/œáœ«Øfˆ)ޏƒ DŒYMÈHß9  Bô~©"üq)b]è­îÖÂ?Wp|eMpÆ#@Ò Æýà>™87¥ÊŒwŠà‹?oûp#ÎÄnkø!cÄq¥±åŸN^Sš›Œ¸Ìyl%%ùøÂ¹öŒú?KñbÉL„ ZðÌVå†ÐÊ:™…K(Û{¥…ý… —Ìßd>¿&>CFQj…Љûñ$öFk”’÷΄¡Q " ¹dXb_ϱ鱼d¨bûÔçÆÒ¶Œ8n”²XP$è?&5êŽçx6ïÀ£&EP¨Ø ZÇ]í7j~íDGw3 zO£Å$¬×â;H£Ù›Ì™Ñ€>”®·V½Ý±áðã!´ÎQôôßS²‡LsTçVµ›½8àtÛ}Öë‚u½a†×W-Àf¯Åë.…ëe²U¢;‰yJoÆÂuômn§ƒ7¹y‚ÓC‚T³¹Y*ôS ¤ç(Ἂ!Aÿ¡÷ldVtºßò¶n7ì2¨iR¸ÿCž+’Ò½ù.°J®µõ¶Ö¶1ÕßÛpÈ·í¡&Ž*މ$Ò£ï¤LWè#‡p•í ÜjxN–6vÁµ –܈ŸÞ~©4¶ FOµ3áNËkP|ªÅ›epÝâ Ž)ÇI&Ÿ¸b²Ø\ñJU¬šO²Ñ§~Ãï){«s¹~ tÂ`Ôxö´= ”[qì7ãi­$¾.Pf˜ˆ¦âÍ“‘0„p@b-L›©*R}$M÷!L`îÍ(F?"$¯X|1kÕã>`YB5%•1ÞÛ3W8Y=ËwUÁê9-/y©Ed^Ärq)€<âGù­‹‚ú|ü{$ÕABÚv¤M}ô5ËfóÖ¨»KøXÅýÊ}Îäùף岘Ný|§´”°ü´Åp°A Ï)8ÎE“o¶–/†ð®i¤mƒZí ‚Xÿ¦(òzCç)јÙL÷tù?JÓ´ÇŠ%o¸Ä©æMèÿSÜ¿nÌr¶˜Fµ5ø<3¬® ôÿÞÎt¦ç h¿´ ^!»eõ U_ÆF¿' ‡,¢³ÆÈ#“EPöÊi -Ö/u K¨©—M‘(7"·áZØ ‘ÖáõµEPFᯨL!GÂ]»éˆ5ì–K«Á+ŒÓÕZ¯B| ôÁ2Íê\#·¢ ‚yFà‡ÌhhŽžiSPûrܶˆr,¶Ü©Ç\G«< |‚9cždT®“¹¹. ‘[#à/OðUòW[Ýú-Îe<Ô”AÍõ£ŠA½=U£Rƒ•ùAµ-  T¦ì¡÷™SM$³ÊT’¬Š[,KÃÈÉÄ 7²í%‹š+Ìù]—9Œ,KZ‹• ÂZpI™–ÈOO_GpZ±Zhš¼¯êŸ°Ú4ªÞF¡‰ÿmùý‚€{°—žyR›—,… Ï%~ıçhS2̽»x—·ôD`T Úqéu¡§Ûd¦AñC(˜Ÿ‰7Ozvüœqa¢Ë$£Û‘ šÈï¹DêTóRÛT•2oü41ÇÆu‰…¨^Ÿ‹–Qû¾R9y¨ÒL_óЂ 13õ3óõ‡<4î9K͹ÐûV¤5¸§íýÄqL m&ôà¶“7“µçêç0TKø:â#lä|ö €Ž7•aˆ´åB·•·4A½g–ÆÛuêÒYGÎë…°u–€Jµnåå—ÆHÚÕšüƒ7SŠãËxȈÉuÛåÇá©guÊtê ÿŸÅt½4-†ïffä1ªuÜÓ©D™¢Šwç>®ÅŸÐ%a;ˆGÊÉÍ®6ƒS7L)lÛ|Ъ­úÕ'ÀÿKñpv›ƒ¤ÁÅñvSIí˜*ÀÖÖ©Xw¥ú+‚Ü52j!èOS\É(]jGÂ*~ö\;gÌN5…­…h¨w…t;~DŒÖ’ þ¹Ÿ†.E$6¡ŒCÆO)>?â¯G®MF=ȉó•]#›5]½ˆ•us‰I–¿| BÁ_Q5ÿWXúo·á,¢Úwá%ô¡Û—$Žh‡É;<ÐyzöjCfWõÆF5–µ;%²<âeGXéS{Döå­­ö0~q€>ûö7FÀˆâì‹2 -Ⱦ[çÌ$Ê9ןe8iŸ«âP—jS4¤Bò—ò “Ä*“p‹$Až- šðVéÅÒ&Ø‹ã’@´¦Ì7>®°*ö?’Ò0ÞØìlø!g•Ù oŽ•÷F’são]Þ"vÄñ£¨¤Px±ÙÜf‰0›{šúNŠÔîù‰t1Má@uf¾ˆ“D XÛ#ëšÇá«ãa¢4ïUÞž³_—%dÀ!€™’ÒnÇÇÂèí{ÑÇ,ŸL)Îé!¿Yp9îL>g@™þ„ð:¾2FêäðºCå²n©ª#Ie0Ïn¾·âf~% /ع±ŒO›°rXò6€Ì .ȳö¬˜ $MŸ\}£ Ußw @ÒïW¬8˜„%:#Ì)·`¬V]­ª†:F/wOÍc"ÇqˆÆÅó]ª{-]g1À€øÈÔ|mV„ëVi!T‹!é*71“uWÆIj?våîg¨½ ^ë¡2M´Œ¶Ã´©p¾µÉºÏ ÏXáÇZs빎¼·ääæ3O‘›×E=z¶è°¼¹ѽ\Ddq}¤ßòõçšÍ$HøSKöÜö±æD˜\0yØ»»D¶ÿò69:8(Ó”ÿ!ï(èØ…âÌ¿*·C/ÞJ—¿½¢íÊÏc²“XœH8‹oÀ>µ9_€+áˆâHzKœ ÕL:¬± 5ÎÓ±cb1:ønä¿ëñl€ÈÏ6FUæ,7Òå‡õ-tuZ—^ÚH“‚ǰu^ÍLh ‰ Š™®ñ6ÙÍY\£Ô›n…ºE™“hë— ‰ìÆ‚¤˜ öÝÖõJ)…‘AgËÙò'»ð„šç¾FxÊÄ©:vv ö¦ªAPÃ^-å:¯d eÐ`Aµ#W¨ìÏ=8w´ª¬8}£ã Ù™ÚÑ5Ra´4oâoFUÚb œýæ‚.Žtîÿ}]BnTAåÅÎkê>o=×KK©È¤ÚÄ;Ñpoµä®Øb~çW!7*s…P&ú^lƒ Ëħ¬s×jO1­§Yžš—-g×a´¶²åkäW³½Ý˜ÊÛèGßràà5Q«8ãGˆãÕwëT¥Î<"î“~î꼺ŸØ7ÜÒ¡å¦àPOõ³jmÍTâ„y€–H~1þåÆ4! Èürª7`h¿¯|)n¨é™c “—ËÇ·¨YÑ® Ñ´#Ðy…Már£/¤Wøèì[‘Ÿ·ð¯ñ¨®÷M-3ú¥í=Ü„H÷¤ý¦ Ût %Múíì˪gçµ: õ®Þêz¶m~T$Ö0„^<¨Z¬Z²1{†ÕM‘Ž%ß“bc‰E…‹£p×»eyl4 .·,¥iOA“o(Æ„ÙYsÎg×­ú÷Õù|&xÖãм·OÕäAp(ñïuGPjè÷?ôúò’É9 Pu9ˆ¿{Ü® Åxr¸:GŽ 'XLT9Ð:´¿ `t-§Ô­ïéz¯RÉÍ]鈿ð-ÿ’½ÑÏNÄÓê„ô8{"zÑÍñɈn:ÕÛxJÂ&_'”õ¡@®­²X *"¯Ûƒ:m@IÌXù¯™MÔˆ€= íq;Gh»Ç‡·gös†Aa$c±ˆ°§A“檶²ìyú.;£œEëÛ€¿ðÈÚˆþ™0=T@3»£‚\Å$ºa'eh³á³ýåÝG¦Õëz{pk˜ÍÊïätrßN=©˜KHw1_ï¦z,”ŒŒ*Žò®cø³[Ìræü3(ÈŒDþBu|æ0 8 (Láä,€w/ùñ ú \õ×ôhìå‘y¬ÊÑËA¿x´˜¯X¸r²/˜QÑÅtZêN–r=Ò¸1³·öSþ]#™Å±Ð¦Âˆ<|°å«¡¾5eÑ׃­OWUAêq´¹•#n¢”ׂò¢nÓb?¸GãOCìø¸^)ñ'ÐD('‹ŽMWAµþZHx×úÓ3Ó)`¿ìûÞVävbŠ(Pͼ£ýåébŠ7L/ùXy¨·Lâ'B苹,ªdÕÑʆÙß’ÒjžÑßýCl÷p¬7­IµžF$Û°ú¢ëw~ÒÁ3÷ÂtþÒ†S‰QAäT[Sq&ˆÃØ¥•{eú3óÇýz ºäºL$[Ø#Þ2ÞÈîèË•ýÏÈc›3³ku&y%}!\%¶>YMcu•C¯|„]ÆŒrÜEáÒ0hêsŮޱGÍa²Áúuçicô9{ªØ†”g¾[½%Øø×6âuh*ÆŠddµ³8ªÅ»µ}üÄ|)4u|ƒ2=C¬6³|XM-õ»ä)Çâ:çÌÝ<îàa«c«Ò„X§<}*[Šã{h „U–裕֮ò]6‹O^….…žôÃÝâ"æ*«„¶wOŽo ‡ÿ¥¥"3'Õ$ _²¿ÄSN.›¹¦û²óÕOuS¶äüXâŽ4*×ý~50bµ7ùðSÓvB–æõ²c(¢GL&Ä2Æm! ´›žöDZ1Cû„–œÎGt-Xo,=T¼„Þø?Óùû†!Û”8xƒø¶$Æ—.IM²‰à}Ü ¹=Šè%ûN¡ßHY&šî̦P©‡2Úb¦pr[O¶Y¢;¢1¯àÁP3¾LÕ‘ÇŸ&¬\å/_ëÙ ÈW OJ°öIý‰Ïw°H”½­ÿ?<ö°š®oƒàÏÂÈ;»tÏ+£æÁŵq(¸P¨¨ÔÏÙ|pIÇ +ù±Ö-íÁŒÆù™Þõ+w9Á˜ ÚN‹@b7šÎóOBÉ‹ÓJ§3ªÇADCÓkƾƒÞÖè¥^ K´¡*q%˾Ùyz§rF°$ªPÝhÐK·)öåsœÔjÏ…ë†ý~Ãï8¦¶¨Æ»” .nwÔþ±N*ñòšuŠ+1þ̬jÊæº6Ũ™òÄɾÕ@žFë¶ù¢…r)Ð(àÍßFöEUûOVƒ¥* Ánò¾›íi}STušs”@P«ÒNîcDý7›.á›øñȬhÛJ‰9Ro >p).Ú®¹½¼É¾vOCù£Îá 2OêœØ9ì ãï9WŽç'9Û döù‚odc«® ¡¿m»wÅ:„ok¾ÿЙÔ|¹ÀB^¾«£x5Û“žG+Røëåǧè´Z((8Ñ"ÉT:Ü轓ܹˆI§Ž$¿é8Û"+/ZÃ{-@ ¢*•É<Ò2ÀžIÑ,HÉRâòhÜŒB¯KYõ—‚ÐÌò-ø.ŽíigÚmÓ²w»u;úç%‡ÔwÊ’NÁ”6êeN¹÷wùiFuÀæ»›m°»¼!ƒÑNÙ«&OÔ™}üÿõ ¾þK쎩]œÕl‚;‹TXE]÷½TXS F} —Yø‡á°xq‰¾Rƒ[T€$çLbtjŶœ†”@âè4¿lRÅÌ+õDRFF‹e]=ÓVìiÍÑaxu ÍB€m V^Ao=C¢ÿßòÜà‡ÆOyo£ï:m=qBøFÖõ%à41…½<…Ò ¬f4ÛDE½/šç—ChƬÑ,ÿ¬›Ö–©1®ZM3ÖrïH°:…Oˆ«|O‘UÅ" ÒWÖ±Õq˜…^»²°í=)w¤iŠgaRé$:í ÒÿƘ`‚¤týŠú9mÝÌ{<ø¹þ=3KøÙÃFÄꥉÜá©^Ó<ͦÇFŸûäÂê¼þBÇ_ šTI@nV ¶`íòX/ðy|z|ï;—4ÊAÝX#FMJv逬ŽÕš%Q 2’kã&<çy¶y»Ùºuuy<ƒÒ3ô,Àbãzâfßö™k÷Šé\íhIgAdØÇ劰·{¢£Ìƒ£TÍczQ¿Gõ´Y„úi´ƒ:50Ä:™Ý„K—|½l4€ng{;$0ü_L†Ì†Ñ¯JÝ3˜j5ÿßçà[É2é=ḅ~¦#(£ì;®hQïZk ÌS"ܴʈ·Æ`Ã/Ù8VÍRB.Ù±§èÎr µ«­n’Ôέ8íhšZŽ2XJI_á äÙJ}ÌY× hkY©ó"{‚ÚË]ƒcK.r[jLšôÖûž2]Øe­«½:?~Ò¦Ný-û ¦D3]÷ûÇ Ì†Éà°‹!È϶M™0Úaz$G.Å7äÍ¿¢AÕ¦4iC× lÇÏÛe&Ÿ©N04V¼§}ëà­!O®m²„0焌¢7áK ¯£QO7Ú~XÆ':‡³É÷ ªò9<—kI.[uŸQÙ…½;S8×r 2òLûs?MM…ýÅóßY¦U&ëŽì–ýÓÉç]¾¶£Óžÿr‹äÐ^žÙFÜ!sÛ¡_’å³@¹~>£ì&&ÎlaÏM/[§ ªq–¤Û}ÛŒŠ r^_𚡊¤þ“eç /±^áü^°þ‰D%þG "j‰{§XtU¥‚‰2Õ—t__BÊ»2‚­&(Æã;í0Ùdu^[‰pÙé ÿß»¨ ßwskz¬ g0³QÐ=ɲù j©ÀŽ_ §X…{ÆólKkƒÎ¸¶×Ȱ‡`ŽàÖ–`8Õ— #K«z¯“Åá»àèóùÖr¸Üòo‰ZßRD’XІb€ BçJK£ŸÜUP¿Í$ˆôáûÒ”RÇ6º;kÒLÐ÷)ª¾ãþC÷-î·~pæLÛ˜w=¤£Ö. Ù+’š4U5¶Aƒa´’ zBÀ{ŒÎÓçei8)\òt ÉEÙ›ÚÒ÷áiŽÊl3?@‡hQªÕr`g&Y%µÐ¼¹Av¶_°VãÆyrÉ;‡@´G…I©zκœöʆæG4ß±ái÷ÀhÎ)9E´«Á§9³”‹{Æ[;£ê¶!_ oHÞá©+Uçµ)¡óâ” è\#Ìùe1øõ\®á üõGÍK1:ËÊ3ˆ£zP¦í M½Å1¬ìEú(`Ê B9ó£Ä|¼öVj4’˜Õ9V†¢xy×ÈUj>«æ,«ÎlùH6N¨EuÄÝ*—o¾UnoڀÛªúÚ‘#‚äýø¥,6˜:ÎÚõ:-f÷Ãç34ŸÓøL¯^$Ùžu͆K‚´ôZ˜ý–rŽ È*žÀ3©sø+”ì¼Ú†¯à’DKþ )v4c˜šYw/!v¥rýëIn1*w(Þ{)_[:Ñ ×Ô{û-@ =›2b85«Ý‘•7ì·»W¦û¢fNñ~.l~m/©Uî“D`_õ¿´bxè 6”KèüUl•.óXT“×xd¢ð’«ÌªwJO,¥„¤WÊ*ª;RþðB³fgݤt[¯Õx1%Ð9¥qÍr|y=„¢ÝþM66ȶÛ- TWÐSÎ'ÆÇÀ)(¸+úÕ*?ìuK*Y~Þx‚O¾®ëVuÕ#µ¬ñJ¡f£­«ÇÔµ=ãusõöz_³á@£ÐÓiÅØN1lžbò"»ñðOé'¡p”pH'q »Íá{ø(ׄ¥ŠÏò¯˜ò±kå?äÁ¾ôZ"Pr¢%òÏ#4\K¼WwQ…T5œ< 9ÜY”vk~êP`cÚ=@˜éÉ/|ÈÞ¿±³~"î-±Þ¹ŒÒ¶û5Tµ×°¶,{Èoú¿VXö)ȳü$ uä0X'Øà¶`¾ÒD£Ák^süH†"~î“ï@଴ɚré@¾5²Ï]:fñ/Y”R ‚fŠ—;$(™ìÉЛðVÚvX £}Ôë£Ønõä²Ë»„ ìͱ³Ë÷’,u¨BÁRóPëëªX_Ò€¿WEŸê@ÑÎCyiÎÿ[¹FäpTfX§ýÓé}uQ|ÙÐSÒ++-±‡âë—Ø¸óŽ•c;òTüØo;ÏŠx¼!¬-0öäI(éÚ;¯ÂPIœA]»–Ú )=r#Uó…jÊ¥’Èbµ»%&‚:ÿUW\õYƒ©ŸÉ‘ÿ Á~‹P´/ŒÃ'€ì=I!zØ81Ø9[j:(/ÏS^:N壼fðÓ/#Ç–èÉì /ºœ))c~Š\4MÂíÚõùý“kÀºðÇ‹¢ˆ§HŽ[ûY܉UD’ÞJ’? ½PìÏîPñöŒX6O¥r”Dq Ü`Xœ¢qÉæ‚º´ûãS+!¬F9ÂUlÜGÇÖ²5?ÃÌÕÌÞë+@› ÌnÖ‘2—)*O¨¨ªæ½¼ X³+GB{gÐÄ!`ú-sZ~JÐÙøØhâNÐ %1»ÑSM‹#t{O2w‘ù=¹½MÏÿÜáü TOï+F½èP¹ôñ‹±ZqkOð­ê!FBÁvŦßÅ„è:~Þ*/¢…Üûù}PÃ=YKfeD4åúκ¢ã[ôW.e¿Ç Q‘.(ÏZSÍ, ¾VúöM·Ÿ|&½ù7ʼnþ™Õ•"-‰^–¿›¤ßjëí$Tô–r/Éc=M»|“€”ÙjÇgSOSÖYÇ·Ê=g¯Hâ¦á‰w¼¶†ž TgJ€[ea æOdî¿à»ß?˜šs)AÆd7žÎlÖOC,úe¥÷»#KW€GfaŒË^9WÌÈ ©ñ?®ÝĈ¼¸a WFƒå‡À¸Ø…©·R<¢Üçј¶O$×ãà—±³¼ßAÚ|Å0§NÑ”‹»ØlTÔPø'¥ƒ†DŠz;ØðKI>òz$ÜL²}—¿Z~÷´bIˆíÚ׉ب~wû+ÖÓ ”ŽtÙá‹Ë}” àÃÐ䀴Õì îec£öúñ¶û¬Ç¾lc]ÖÖýþ–{‹ õqva‚SL €’6PÈM¡FžÚ÷1oþrçãîF¬¨“,QŒÌ÷| ×õßîÏJ Ú,îZ; é—OÞ1ZLú òÍ,£PVl‘ÙŽ0i+ ¡Ï;KŸØ'[‡Y b€™Â-q`›”Ðg,=_œ.ÆsgüfÀ\ÖÙµdÉô¡l¶ï•'£çUR¡º²·Çæô;F´vW†`¼pÐí3ê“6Q ¯(”šêÛ¿¡8cÚSÂ'‚y `  iܼ[,„WËÉnŒ²íòÖÆ?h<åfDx”ä4…H@·)6"X"ÖCÃÍaOå Ha2 ÖSZÇ¿UZ¦ «×{2ÁŽ/ÿ?ycÜ„GÝ e)Qž! ª;a´së#¥=Q†ä³ì#·p˜Ö(XÐꘒšÔÜü2ÂùD¾Áò¸PE7PdÀŒ;ßs2–Ì:@d–­¶¦Þ*3qœ> ß­WÅ%£Gèh")í÷käÁëEmI$2C´:¥X¡ºÀE{8Åå [#©j·âžQ>c…Òÿ-à“lÏÚ°³wè^ð Ö gð“ÿì2ÙÇy4x-F8Ë*—øB[RGXå{¿E‹È¼ògÔ’µOt`ŒU˜ù„os‚ñë….„”~æêW)醡ª¾~œëVìglSôwL˜‚³¯µôf|øB!`^o”=Ìi^C^ØjŠý9cq§—Œ¢7êéi=¨œpÏÇÁô¯›TbõXüüFÍÔ£MÁf)Âÿ ×­ 5 ðÿ“P¬»¦½½läs¦ÁvÐÏÍ0'³ 7E"ŠÈY‹Fj¸ °ºÁ.ÿÒb´À2:º¢BiZJ¸—€èu¢>°Ö@>9½ùÎX—ß Œ5ÈšjVïl»õ1¨\!`¶´QÕ)Zâóú ßB؆”GÙÁÀøžS’§¥âÙŸRúݸžcÜízA‡›ë¢tu™Â“¥ûìGO y“wÌJ[!†» æ‚@ˆZ½mH¾&$¢Œ¿Áa¹9!Ö/ˆìö÷;ãø€Ó÷kD²²æÖ +ô‡†yº,·±¼+̺üÅîŒçUeó𙨅ÈIr}ð"µ'•ùšÄa üÞâ‡8f5¥EZpõ}ù—RÈ(õ"ZYˆá5SöÅAéú] Œ=45Uð«ë¾úج #ò5’èû(Ý„Ûq¸l8š°Ó¾O®FÖ¾)‹àËó?ûsY]´ý•ðð÷ŠãÎó°j_(Gt‹-ÑÉ;ÈæþÌ…€‰·q«•“0gïÆ©øLõ‡$ÏæYøc;ä­Ê÷ Yù5YZ ƒ)Ÿâ[B? Wí³ù#¾ðªöA‰;ÀÅ-À’Êq¡ì3±92ÒÉ^ JhpÔs¯·I¿n® '†¥vv"[÷Ï2é‹É uin…M\l-xâÆ”È‹Ììë¢f pçàñ_tÿ±‰ÔW›íøX„¨µ÷þêVmö$C[Òòã);þdZ\£¬SHòj›ÖáŠÛ ¬„›ÌÑ&•§×«‰7¥~ˆæ¤ã‰²ÏÙ&pøòÉæ a© @#&q›n[÷ù¼ÆK§1®wØC•žÚªÔß\Ž,r¤@³á»Jdãëž6L›Ü)¹hh´ØDs\2¿ÏДM»Söx÷-Íš¾&«¸d+w#èdÉJÛ%3Îö««¶™àKç@…*¤AuA"ÄA‹éd· ¤K®.àôÜ¥T™W# ÈÙÀ%È­–wæ­7H …²„Ÿõ­ooR—ÿÆ'óY&sCsÂW‘˜úîq€HŸPƒi5Ù«;¢gš¾ðZAÃYWÚÛ«¢*Vã—M7eƒ¥Ko4áJçòãLƒ_f–´Rá{cÜc\ÅÑ?ºÆ™R»®ØÔ¤Û É@1µ ùð²v9¥8£êŒ6îö­ÿ(··{É{UªfDÞ©v¬#£¯á`úñð·ºÝE ›¿`š'’žöi"ÅÛV—6„2ýlÈNº¡ÞÛ,ß½ÄP§a3V–ÛQü»>³þÎjûTÒpzv‡°Ã½üù®húÞ™ËÂŽM틜­ƒ5Ô¸B¬1gkÖ é\+noØÚDg%ÄXdäK£tžñ‰³Ul YsÀH ÷N XèêP®šÿ܉¶F£.2Š ø]AxÝFÖ1œjÓ¡™ê'φ¤T>7Òžá³ ᜠ Ò>Òå‘Q”aÙhsiµïè ƒÁÚ»aÖž©ÆvÑ÷” ~œÝÀÿ S&mö¼-}YNË%snMÇ©|²}å⼯5÷Ñúy];hû‹ß«‘ßl9̈ƒ3^´³´ŽªD“{ZØ_`³’äæ/±óžQú_™ñÐve®œ¿§²3Kéú~•‹`&®k·Òrª«ìྲྀ¥äâZÀÝzNo ü˜_"âÝÒ5ÔàôtVî‹‚8®ÎG¾¯ÏÜæbƒ ¾ºÂÓ †úöP4Ögkrn¡^ÖÂÜk4ɤHøÓ‡¨âšºúaœÓ%§®*6j­GÙ*9¦ÕV$y78 Î9•¯±/Ë@º¿ÖÍÈR©Zã“ÑÏÖUÏ0—  ûÔDY7‚€4Ç)1‹kŒ¦q#iœLÉ嬚ŽÂÛŽÚ ?-à h©Nc+¹¯õù–•û¢~`Â(Mä7ž)†/Wbh?KÒ…‡}’##¯wÁÖ'½ƒ¼õÑg;¦.ÓõD›Â4‰Åˆ4r´ñ g÷É-©?Áþ[0J\)mp*žFx½JôÞõ¬"ö¸(ô)u!©¢Ày‡í¸Oq}»oÌ>Îgalç¢i;½²oÎ9JÍ{ÑúU.eiI£X“ Ô=f÷Ä]Zƒ)>–§¹A¹@·…4ÚÞPu·'¥ûê~ùI¾±K8“ßM§ ±zÃwc'‘´KTÅÕL§^>}åÈCMÞØªîŽDƒ/x–tUDæÅÈOh–Ný–æ#­û(#Á ñ(ÑIP5í­ùò?9B§òЫ%¼*æÞxí/ÖƒR£Ïnñþú¶ÐïħË'f€±UàÔÑPLm­ù^¿)éj6¾–ZäPÖ=Ü/ã©##Öݶqñ£ù:ï=™¾0ÅUGÚÊÂÛȺóÜz¶dÆöž1„Ñd¹!‹j&±¿Ð\޵;#eo:ø.`ü—S.Àq™ÚÞGwðï.Ðá¾Ù“œ ¹–Â3ÿÉ8F.ôv)hÒÂ:,rúɘv< ¶“"Gqï«ø¤Ff$G´x“?ÏNÍÂÁLÎüéá6JÕváOØ&=,‚·u ×ª–Š^ÑÙž€KñíÓ¿pL–wö®G£ñûîÇǺnÏÿܹÛ`Ÿ®¦‚:ÛžSpiÓ ØŸerçÉh¯ÏadÝ9»+.×aIRA,Áí8ÿ`ŸV)c›aÐF§¬%3¢ “©f3`¸#eµ´i#z¥õ~ü"~ä9{!KÊĦG(ÕÄ¿¾ÌZ½³á¥XBc¥Õ*ëÊZ2Îlâ­“YJä4»ž%,lôÈ/’“ßæüéY¹~ÓÂ臔[,©,™ç±V&ïG…`O芻„'Æs04 4?m˜ZM°ã'VÌÁa‘ž*¿X§=û;ß8‚—ÜWbÜ…FޤC:Yú@m–£jN°‚•n;Ý;U³ùÝÅéÞ Ð–z‘L®í¦9'·²[ëšͪ'”_ŒG˜÷¿¥1žû•('a‚ÅDX‚i>i¹GV«6=Q¥Õ¾rŒ}Ûä°Ï’W¡¾¾³(”W)a4pÙôSìcA¾T¨› OÜY1Ÿ’Q ¬U¥œÎƒ¡‰ŸÝŸ,g›gid1ikÁ[9ôühHAµº5¤äôŸóÝp!#œ²´Ì—•BØšð8¨iÒ: qG:ËàÌg2æDç:ÍØƒJ.Ê81k›ÐŸA†¸½”䤸 ÆÙ‹?VžÒY”´ˆ¶«”‡éÃ~‰z' 1[—Fû¼ñ‚ÒÕ˜¦¤œî[ñŠf? xûÃ7! j‘ÌÞõh:Y(òiðižõQ™·J©Êç+íîDU|¦ˆ9Ù%´x@b FD‘Ý·„êtlweb_`ĉGV.¸¨rk’ ç¤óÙµClÙ7H–¢Ak‰íð×ÿ†¥ˆò©°"!\P;!íã›p·BâciiÇ8YÒOÌ‹Q6·Gq¤É:P…&é3ߺò䕽†Òó·Éß©½‰ÇJ¶,vT+Þ]Žè"j™õÛ“ƒ%å^îÛmR>ª¦Ö'7+Ñb°¬£yÎm]'ú•ßÄíÿ°jƳECDSM1ì."7~OÊÐÔ™D+OŠ*¡—…¸R(…·=÷A)·›I©ä•ÖÈÓÁ 7#J·{1Í|ªÀ…„2ÆØìÚÆTΖ5ÞøçùF—ÒÞ= ¯P•«Ï¬Ð›•”oœƒŒtˆ%*ôœ¬kt¶=´«bËΆ ÄMÑ-’~ZôQUýs¦«WS]}"¨o“3 „mpÛ™rãTeÚaPM/Í:nÛ ²ݔθ‹pù(7:u¼CÉõIƒ“ͲQ¯Ãí²ÒsÙMqgÄô²ç‹´]ÍöÆ®Güùm%4V¢˜•²]¿/›‡5‹,ºŠ›å§V›U—'Äúöú°H×ß±¦ñ%,û3«õ lÀ“p\ÑE›-¶yTäè 5{ÏÛ=†«;«õë* ŒKâKFÿˆâdÛÅ‚k¥kÌסiMjв#h7B©¦«ÚÏ€ gy ÒöBéÍùUj&ˆpú÷ß)â€å'æ¦T ¤¥Õ·{èÐb¢œ†›ûaƒUÚ…ÕP3cK¸6—´ÙúQ“<ó}ëA™¾Ý–r¤à‰Í„ãú9”G£ µg{]è ‚[ж°ZK·ÂæbÜ>R#—N„â;)!»êËi@|)9B-´gö‘áöH3.gu ŤÆ\·î!q‹¿xzN/Q˜Fp'a;H¢µ·ÁuPâm>Pî&þ×y³V~¼»é/&nó/>¶ÿ}!]-mÜh—Z Yœ+=ÞЃe„\(©8ÿaÄ”o4 *‘ÉöæktƒGò#Írh›fðäÚt ô+Î[Dö•\´ítÍþRB´ÿ=ƒÀA­Ê6 Cæ!F/}7™já|ô×ç¨oY·g?U^ ø~w€ ´ð"ÉT…DPµ³2bΜ~^2’S(c¦ø=á3ÔZUEæŸ"9Þ@—É( °™/ž?ÍÛ6‚La±ÿ+{œåŒ)ïÃ…*ÙQžÆužT2$ÓúÍà$nBäÁ‚äÅdÖ]M¿Õžöÿ Iyû«Ì«;Oƒ“û0¸_x8ñ–oð÷½%)µ.%¤Ã9w¬Ê=ÐÎ=Bd@î3Ê(ÚUFÖâ°O‰ìåúÈfí¹_ÎÄì»}Žj–Úr¥1V_ï{XÙüGZÛ·sœð¶›m ŠžC/²k X‰Câ%zkް‹êŸÆK—º(´ØL|°Tw±òŸl“c€Ä[ZXKqÆÁÔ‘ê~ ¼Heœ*TçMµ FG"ãW`?9Ui‡Žc­¾+bÙÎíFÔ·Ÿê™MÒæBpÂ1HäªRLÜÎ&²ñ;Ñ8 æ–ÏV…çÊÚ™0®ÆIî‡aÀ$ãîSE‰B˜Mw>(5ñp²ô*<µÒEçž<ºÿ;˜T'.á:ò! cSdr†Ó3 ÖbSs‚¿Çe‰N|-³Qsñ3 cW²8ûšfRù ¯i×çŒ,áWït¥¡ÎײZM®˜‡sûå1Vô¤€€u¥ªw° e‹µeЛ¾è¿)Þx:"ç ¥£ 6Iá“q ƒ»I®ÐXòµvšF‚ÀÖ—¢Ò#¢Q½Qá7rOba€Û˜6½c<—ø¦Çœ¦íRÄ2'ÌøJMiÙÿèÈà$¹ŒßþŒôeýíõˆÈûK©!÷\'²°ïcIf–$m` „S±‚²é¥}RCxƵ@ÿq¸àB%¥®NÙAyͺI½a2(ï i€ˆßݤ6ò”eoSAå[Y÷•=†Ê»ÙrËb¦es{•u= Û“mŠº Öh{é¤uq5ÂCìL/ö7"Ì)Ãæ*r„c°¹ÆG#¯&¹¸‹dD)¾â#ÆÆÆ5˜ Š^'.~"1)ä:ªlÑ ÄrýYÏ*”‘ç•»ÛcqE1ŒDÁæ€ÞÌójÐ"¥b}çå­D'Ós_Ò…‡ªPšì ã˜9ݼªÕw Ò´yS¥k¡Â48+Õ«A"§DH’ÓyÙ¡.T“ÎÁ.;4\ó ¤Åˆ%V˜¼˜5 ,X™PÜLåÌÒâLýwî«Âšg‹ÇÔ¹ªy@ Süß¾ÖíKêÍ4ü;zÂøùkCÏ#ŠA€ÿtŸÖ’[Fgs˜¬ìRi²(†’R74í(T–kcw•ß #—†OÛÐIª$ŽA« v-+L°Ø±CUlÀÜ|£ø£.Ñôãj•wÅ#©PtA1ŠïþÌèšaÕÄÑ'é½Ü¢5ÒÍjž’ñ¾n¾LìS¢¯ö%óåÕB‹ú«l¹‹?rÑoaüó#*Hœ[Aú‘+#³ ¿åU1À%´ù"7˜º‡¢²WT˜¹¯Ô«th ©±îAª’Ú(0ˆ5ùeúMÖe"}ÀmåÒLчFÊÉ (îí¤ùáG6MÿN˜Ê7©Ò`$C*”®rÐÖ?6‘ƒAíD¡.×àJÛÇHBû_öÄçU*ú«ÿWQF¢Á¸ilJC&šÅ·rPV ,»ÔööGöúÑÙSM……Ì]Oû—%¥N/{¸ÃÊÍ6ªu˜æ4ËQ¬îÜŸÈßÇ|¹/ˆÒn‚”®ŒØ ¤‹2¯À”Æ72¬ToÁ]Ð×{úÛ6‚ötŒŸÑz¾<›bSþtñ»Ù|[P¦'?P¶Iß©FÂ!\ÍÎÝ€œaÕG:{ír(µCŸ³0ì”w×øX,à£R1ù2Æß†Ã$X®óeÁNÿ4Áà h°б3½;Á”£O8ùþÿÊ8˜âwã§„8Î@Ú‘$¯*#œT Ïr4Àô #è-Ίq½~í+Ö¢åKn‡½``ƱGœ˜.²¨+),[1ªê$©1Û6Üö^ §…%¡Ñ9Ý‘Ž*ìu%ëu]“Ãürô>RÚ{%/î¢Ixï$3y:\ùCàRW„mØò]àƒ»kBu,]ãòP£jÇ€Š½Q ñí¬íå¡ME6éuÜžU×Bˆž¾ÊØ\~ =‘»ó 5bI}Ü–ƒóÎÈ«ë~•5¶0ÒlÉTl$Š|hdœÞ{%6wЧš d§ï-¹ÓÝñ ³˜•k•cêŒkWv.¶KÒÔÞpxš¤]å”xh¬/ÃHøŒßž©šÕVö €¬ÓëˆÊ_Æ®Q—(<¹Ýí»[Ž»ÍÜ0ØÎН)XÔ÷WñžœÏ5ËPÅl÷Ó‹qSôyÞ÷7x*Ô}×GSàd¤dg–íã/†®XÞ=ò‡ƒ= <Ð41,$Ý…`]Ãcàüä!™®aK,Áhcª‰?‚ÄE´äïêAþ(8i°:\õ˜v%'v²†ÿ1ÑÜÚ¤nûº&»«°šObÚ9©ÃzÊj Iw;„Ö“¤Ø’õ;¼«¹&œ_e%3 gºyÁ`fäzõXmÿ ìCÏã­FÅóâ7O©f}’€!üâ°¦Œ¨àßl]Õ¨Öæ‘Ò[,>˼ÛŸ°õ øq…Mo·¬Ç(B¦rdIX}'‰4Ÿ26#ù>Ê}SmÐÎ×­ä †ßž›¡vÉBÞT×–DÈÑ6<öK˜+ ÙNg‚(Í’³qf ´šÂfÏLÏ:ÅøÖüÏÎØ’†ÇèGÝû0üÒØ"pBplžÛ± yõƒ—ìoIÕð†ZU$«O¾Y„»µ€/ŒÝá$V½a|{Õò|„*w>‹epjk3XA‘U«æo€»[YýNaÊÏß{moÒÆVí1C+í^¤\¸"wíT\ö΃²?ÓmŠ5õ=( ;dø0ÞâÛÔ ñžå1¤îj.–û«!DØíõ=1lXttÞ€“ÄjD0PÏ5§N€MþÆês%–9ýÙAi¶P!$jin¯E(­Þ¡4¾jš /k*f,Œ’0¿ W+,Ó •1Ù³"_Yo"Jû,*ôÙå¼’0c¦øÑwÜ>Õù˜ÅÞÚ„%/%çÜhЬpoltˆéõçÆ#EœoÛµ' _ºÑø}6_Ø=ßÃQÃZK¬.?³øUº½¬cu+a%š)¶Í6æé,Hh¨’;K\¨î1:`‰&, ;²â÷¡‡NM!ž^7’/Ö‚0tñ=³º´0o޳Ã)þô…6yµ+¢R+ÃLnÍbÚÈÈ~£÷Œþ¶®ºOdšt[s¾<ÑRÐU¹8V!ì5Ìî¼twJÙœ9‰€ ŠRƒC ÓÆ†sÚ yŸ¼ ]FísMz‡¤þHcÊ(xÀ ÑÊwKwMÝušæ¶™Î»áw3+4dYT䩨”-/-­™ÂŒ@Z•â cœNßyh}_5ÿ-¢ñ³ÀÃc?>ÖÏMÕm@¼}±“‘œ.ùxQ4È{ ÷`¢WÛŽo–rñ‚±…ŸÚge‘± #œÿõÁ“+Ï»J)-Z¾Yµ/»ø’öd+£l4Ϲí` + y&?.ÕbßœUüO{èê@ƒÁ[!¤­nF;´ =$nRúŸ«ÐЩbã{Áh‹_¤¤ùñ¯cóNe_‹AéÉ÷®RnïUvÅW«6÷Ôãa@š´í@X0 ðÒ_3S^Rƒ¨DÜdçÿ“Œ–‡6.¨;~ˆo£ÿ\z­6ýörë¼w»º8»¬AU¡ÆÒ§œ†aFQCþ™ù[û”{.s µüñ_¤É‚öJ¤ËÅžéžø¯ŸºÀKx8[}LÒí¦‹@öx“d‡¡S#%„Q°2&)ä}KaA«WBâø"í;‡ ›äÿ“¼½±ëÒŽcŽ$ÆÖº "Ü/L¿Ìn ?pƒ7訡`j3Œ«# ³êݘ¸v[™å"š.Eñ}à¤såÌFÈ2ÜÄ[³B"r( —Eá4•ÂçdÏ·ÚµŠMËvGêfmg+—^®Õ=6 ¯tm€û­mÀRÈr¡Ô°'ï“Áé[7:¡¯mLcAÞ€^³/ê¨jôv“õÏ´Õ òû¼‡BÌíì¯nq>Œ}yûÑ7÷ËrÏï¾ÉB˜‰ë†¹p~#÷öC¯ywG@‡å‡cuÖdÌ€2ÌlÂ`7«±ívß3ôþ(–öÅ+2;$såe+žü@ˆ²¤æíÌ”õÛ{gB¡ý$ªÃ…]K0‰aGÌu|Äû©»mèËÑòjºEO²Ú§¿vÒ{˜ l© BVa9løLZ±°¾MdWÔ7É”ôÌÞªì¬ -jgmRÍ@äÌDâgñˆZagÝš,Ë)-IO—®Åy"&Ù™Ô5 #Ràž ~L’äùŸG6Š b¥ggCF9bdZ¹Ÿ¶ÄiøÌÀÐ$ ÷€Û– ¨ûïOBý ì9ùç ¨T•/Bƒ<õo){;Àƒ3ú×ÿé÷ô¬F‰~¾Û¤K§€¦5Z¼5ÏvŽþ¸°V¸$ÅwhwÞˆ6²´RnsU™¿K\/ôšX6’®w\µø9xX[ MuÕ Ðö§!Ö= Y1Ù%™¬<6ÉßkÑâón&Þì—œ„ûÊ­Ãñ-óž EăÑUE¦˜E ~¿ƒ 8w,ÆœL7–¹·®fN%øÜð¬Gdå08Âc};Ñ€¨ìú²y'!¾$8Ô'é®J¢ÂhÔü[]5÷BR2xˆ‚Þà‹Î4ßB™×óYé?‡k"pŸ|†ñ9I¾§¾1©Ú³I‘Qê>9€Ê,ŸÎ`Ò¹öDS%Œû%¸êÔ Jâ\¨Ÿ”{Dž7ÇêÌ‚\èGÎ¥×ý>—t»4`–I>tÖöt%kLƒôŠ”"ù”íIú­ÄPñ¶<¾‡è†•¯6 ¢*Öz¾ŒÇRôߣÏñVäo׎ÁåRXÉùÝü/ì©saÓ QèVóêtz¦ƒv~úý˜kMÛ…q½÷öÊ!/íÁÓ^¹ ì3r»b³ )óWœÀ›A].¯KIˆ”óf?™«¤¹ò‡J¦®Aë·Vš,§Û:õX²¢þí¨ÛÏ;Ìg†UáÎxŒ˜è|ù&©›2á4É÷òMÛŠé9ùåèI=>Ë%c_Ú} 8Äeù$ª£¦ïUFi˜ð±N¢ÖT°d¼ëÀ¼ ÇuO‚F¾)±Æ „kñĘñn¤†<Ð…±sû:àÆÜ=?¨P9Oìc€J,A ¤µlVC–ÂVÆOBÌ”?¤–NÀ[´Á©»Ø÷Uâ°67®Æ"Vf÷½1~ÌmG—JÏ ÇÕ~DÓìŒZ…>ózÐЊ ÅëÀqóœ:õy2“ª†>ÐØ{yeÃ%ð`¡ ƒ‚gè ë«iû¡|t¶w.å[ľÍó•ó3¥ ë†9ºÜe¼VFr# H‡Þ1‹P¯çn²¢j¡Ã T!€b¦¥JïLÕôhx‹‰ªÁ­¶Ì,¸û4gµßÏ×ã,ÿw>·C®Ó#!'>«ÉiÇæFZ?µn9ŽCU’óÌ›2 ÅÄ|ä ¤NÕ|¯Û±ÂÞ'ü›€Ì,ÁÿtÞê5†³-«<7DêQ:þa ÔRVR~¤IÓ¢q#zµš÷ .Ú¿ß.Éž¶1™J9íf¡Npúa©ù<;A;¤§M‰Ü¼N7É^·Ö +’‹Ìµ9̉`ÐîUì<äàŠ/9¿v7sm3>Îí ­|ß®Žin{XW<ñQ¬ÞD2¦Î>׺2ÑF°f¨#’‡$i$§y)ñw’8&…êS³vWGë<$t¬ÝxˆªðìG}.¸ ‡ýÁŠ•,À{#Vlòäs#¾6Ü夫 1ù̹ü•æÜ÷ð¶Å"x/ùL u‡’Þl²Œ®òØ%;©™âüXºþBÓZØ5ârT&û: {0F¤ÀßBYÛ ƒG‡/yÕ,}ÜqêÍ:c¬máì#R÷ÊmÈêËXÅ^#˜¾ýZ‡×ýiÌq§â™Iëßþ²)’¯Îæ¯5$ìò-ÅUÍA%ýCð ;ࢋþäV< ›=k›Ä+• ~?rV⾦¡ 0]ºÎwxH.5?†Ñ†ã©g®¾9×ĸ:»3¸ \8ó‹ƒHÜpj‹(n—MÏżž[Áa ”Î é ~÷5ïâ4¡{ïsÿ:WXAcöÙÊ~—ƒ¹Î — òÈ0ÏY±ï‡· û!f/ÌßG¦e1<Ï §†I%KdmY2îå9[­ æ¢UtGšíwíàhò–*Ü.®EB¨RUÆß¹}{}¹O¯Î¼EñÖE;T7°Ã¶%4—&;ðM>‰Æ²Ð âõæ”éø&Í`©¹L…Ó†&À‹ºCâZš“¥‹ÞŠ(F€Š§|™Šâ\#d7gë,æÕ0~caT/øoH‹ýŸ)4N‡×|ØŸ6‚lCTÃgà&®3¸¥}é皌±QµT@YK¶ å! †þôŒî=ôÃ…ò h÷È)=ÔÝ@ »æ[&ÕÚ@‰i ÆiPyy·[M`€:!jïÝç×Ñ×ãŠ(+3ÏÌšÊ=ßìÓ‰4’ºMey4ä1$ô»g—]Q'ƒ¿eçØ¢‚ŸÃÔ…åÿ­)-ÚÀ*(£ÉãGmŠG ü|‘$^шh•¾]ia(ÄvàõˆfW^Ô¨R¢ÍJBj‘ׂžnÆ6oo§ÿ–_6º‚ ð@ï0pýH}JZF#Ø÷QÇŦmQü|­ œˆgåîú¿«,Ÿæ¾z“å:I3AYª`Õ$Ó;=§^ aÁ釬ŸbD¨s ²‘˜ï:fÆ·¤Õú†ˆ•݉ÁûIJž›[„ ³N‘»‰ *í里"Cn„/hÏèÅ^+k1EÔC¹µÖ‚ `ù;¹…ú/ÜÃ%ÔoçQdâû!6,¸S4ƒÆ)ߨLõં†ÐPÅB7ï¥ÍM…Ì.K“„`¯-è2Þv‡‡¿;kA 2½~·:eXÿžYsÿº¥1Ä6RªÊݼàY¿2_LzÓúÓ_æX6+éºÀ^¬©Ü » ¼j`æ—¾!Ý#X­íq’Ρm2B.9t3{³<š§sú —#CÄuA˜ao­X/cÖØ€ýеûÞ¡í2™±eño“­Çe±kŽÜ2kYì§ÿ`šÞtw¡Ûmu£½³I²fW»¯=™ø{à9¡Àm²ÉÅvŒZˆ)dbÔu妄—Ê‚! ?p¹r*™›f?¶;¦ÐzØÎäúúø¬6¡Õa‰lñXÏ„» 1ŸYõÃÚpÔ¼£®ï °ökmkÃDl €¹·1R+c9ØCEZjö$u¢Lv–çX €\“/yܶ5ÌæAŒrâŽêƒ¯:ãˆürÝèÀNW10 ÂLLrK “½ÜdžmœÆæ}D߼Ƭ¡1L4² ÈÐ% \*\gCiƒ’¯ã_¤xŒ7rEÌÄøX-5i¶nœó í2Ìokë³?Ôoß" Óˆ¹ý ¨´^Ì8ùãQ‹yçØÌê©QŸ¼ ÖÑZàõ¥É¥zK¢Eà‡üóÄYÕF‹¢{ñ ‚æ[ÌSQQäâ)q(¡sØüTV®úMo„Ôiè³ÌÇ®D“4¬þšTg©•³mĪbøx¯blûUkcÔ–Œ¢ÀÇF—rª«ü NWªÃƒ£šÖÁ‹#©B”¦ª + {Ž‹ß+­ûîòh)Ç{²³ B"˜"L^÷QÊ$’ô]9@ê±0p»FsB_Pãj{Õ—&§2Ž6Û×pˆ‡Õ ¶þoøNFE7‡îd·—j83Íg›pf\G™­òÀØj!€ãf[ÕDÈù#ŽöÙŒ1¯–|¯°™}ÇrÆ„_ŸöF‹•2—¡gê(¤´tÙÀ‘«p‹.x„ñËÄ Áªÿž1eãÈ‘\¶†<6õ²$Ïžº‚¹3r¿˜D¥N‘­² ª>”â+”(å+¤Ù¥ÍílÞ0¯e²ßˆ+Æ£ñ°§sDú¸óó v0E£Óõ0>{!\PnŒòL§­0FÎaøyÿ†vl×éÑ㯅xÇ ¨ŠüNõr,×9Tqå ¦S—õ^æ 8›yÌ—ñ>,fõ‰zB £2/ëõ[9BÅ”kŒ-"‡&Ïó!½Ž´J;·CåWYâ«z­íœ‡€}=——,¼`ÙØïÚ^±³Pê¶ÐH‰©W0(?ÆC¶q^Lè2gè+zÛTÅ"¿!”ÆÑaVî`Ÿã|í¹[Áé”Uî é_nyä±lŽXÉØ‚×#Áï}%ÖŠ-2*J”ÓÔøÆ"lÎ×;·Ü¢t«Ó·Hþƒ€ßo†Ì„\ÂnÃ6¾cí4Š OX°ä@~º} /JcžVÓí笠þ`²ß4ú6E}Zå@û–|:™s:q­ÅÏônÔÍÒ² ½Íß–} ¹ j­ã ³™V)A?+/¢¼"éV5Ö¡Ü®µl(ßå\Ûeœ¥Å¶p)âé’9‹ü|%i¸ &G9ðçcZøÍLÄhDvù«¾² öì¦pÏ]Cí"ÙIJíÕ*€ˆ3dC‹mòQy« ÃøøBrÞ.™J/ÁN_Wýhò¥ÕD¨>ðÏr½§)ÏM š½â«»'þ…Ãq\‡MOŠÄ2¹e íäöÎ!,]‡ Šd€’«Ž/ù«r®Šnæ’ö­¼¥!·$†ZЬ¿jg H¬q±·ÊÆIHc2ÖzôVÅÚtuŸR£ÇÞÿžÚs˜)ÌøAF•òs·[ÅŒâËk6½¼ž/¼è20…½Cº­FÓ#OiM1ÇÆ9ÝWÖŽÜ„;e™ÿoË}è@AÎjÈ[g•#T%»—mƵkþzÂÄšjtˆíæµÆèÐX±Ðˆ¤áôyeú,·Y‡ #‡p­ÃGÜ‘· ŒÔÏXàA]œˆ›|~ÏÑ]š d·ˆÛ©¤Bmá ðÎ|[@5[þÝ 0Æ­Õ±ïÙÑ·83úÂ×Jú€UɊ‰>w G|S?HH¥ùt ‰™‘ÀŠ2§Ìt“…k¯˜ÞèÚC.[8aˆùºQý{m% N‡Â²þÅ“˜Ëª\xöz®,ŒaKgÁÀp|Ë/‹/ŠxøMÚD÷ý™©øKH„q4²ûÙ³à% W‘ÙÖ-/Ì›…qPΰ™#e‰¬ œóºaTÆÐ©È¿ešE“MÚ,Æ ×dQÂþTƒOBÃÍ ¾Ÿs€ŸoM‡@]£œ—¡×xãê0¡ü/g«#ÛôÖƒ¿O¹ÂIN2žÉ4o V7!RÒ›Îþt}¥Ñk½±ÊX>ƒ¿_•ûýGý->­MßZV ·[òJ"¸¼÷ÂzLÓê®tê™r¥ñÒ„s4=´Ô ]¡ˆÒ€–rÞõÍ´Ñ%þßm_¼4Ëþþ·ä¤Ö°õ|صÔqæçÿŠg¿¦^[êP7E-†|ר® [&ÅMKð?•+ýš¹\ëãÃ-î+ÉQS”DÌ/oœ£|:^é¬>X‰÷6Û‡2¡Y’4>y˜:/Êà¦ó¼+DV$¾?—ÇkÚIpm0dÍþëa3$uå=­Sœ‰d0,t·|ÌÅõDA/àn’P~š6†f°Ó®¯Ž2°Ú„–Ý©I}/ˆ^PÍ?¶œ’’ë[¬_æ XŒ“x@z’{˜Ìð­%0þ[ Ü.íRSð¼¡ÑRËÎF0[by|tñ®]–Al»ÁÊÚ6˜„ubk0´µµŽ–'ï=¤ÖíõBÞ+íý¨K)¿µ²µî ÐüöPq’þÊ•p¨óƒÓéj«è{‚î`šó*lÕÓ|ÏzS6<( ºÓíêã9]øq´9F)\€Ž±ñ¬*ôƒU8b;–M+\ŸwV "’6@d!£xÁ•k9køâ¥02†$0CôW’ñ<7G œ9¿l7Áyúž«7:¤€ë:¥RPDƒâ0ªHÁÑ´êŒ1ÀÇï?ï®]0Š÷ÿhHØ9ÆmìæÈM¨Ai,i¹ýG”úà gÝ¢O‚×ÓcW­• h±œ‹9GX¯+ÞØgò7ûLžZ’?<'Å»¥¯MçZSÛ‰¶ÓU,*ýò ™Ib­è›],Äžž­§•z޹¯ÒÔ¬(ŸìÚAÊÚ\:ê^À¤¶¦ï#Œ`¾\àà±m|…äX©®L¨ª_žP”rãEÚšœ¦>5[jgÙïݲÅï¼zÞgA¢Ÿú@£[wƒ)‘>‘›¿¶<›âÉTÿnÛ’´#eEH7—g¨9gC`ä£~ó‚M$$v‹Ô.Ý„—¶l^·Vª€ïîµ`ïÏ­~Ù)‚JqÏ À¢“˜õ >l¶Œ æ_Ø$– z6a3mI¤¹Js M¦Q1>æ ëqàßmNÁÌÚªÍ@Hìë¾ïR3å!SçÖI©ÜwÐæú™ AkÕÙhaËøô è=½ò ¸É¦±pC2Ø £ìЫ,BÑ-ÊŠÞ„¨(ŠÎT^Èÿ1šÜ`µÄ3àäM{ƒW9\ßõžÜ”cÂá  …Ó)Á>mYÀP‡žQ-HÆ3Ê tÞˆƒ¼`½ow?¡¥Ò -ªmÓOVKµ­ L¬‚Ú3PP¡ØÖ›‚ñúÖ|ç*¤(èî€8"\9b˜óç4P wg£ß´ôl rKšUò£.Ö-rýœ' @ñ—×aΛ&ÖûXf–?`!Ö›Šüž”@…ý¼5ÌÜÍë¶ùÂPƒhjпÝÄ Ä™³°¢‹m±m “Çi`IÍÎËô%⛓ý[êâšÐÜkuÁ„œ Ùù Ç+h‡tú"™úPt$Ùñæ?²Öo©¯è“à•ž æKX£ÚuêE‚„?>UXñ¤{7žê^õ=üL³ H€jÌóÂ,¿2.dóuÃ_Ä6Í.M‰D¸rv¯ržh’¿IžÈ˜€eôM dP,*y!®Á˸f¼Ð¤Ç±¼UHÍ}´WŒEZ Ájü¡þŠµßœ}¨xÞÀ¬€L¨…Ö°Ë%.©õ8Ù*ùcí^iU\‘⚟öG"Ÿ»UúZ¬g[³ŒL ˜û†(’}héhZ;‡ú#p¼è39—ž¯ë_žDó<ƒ¤UVk¸§À€ÒëÅt8åùMœyÖ&jË›¥å6ˆƒ:×ñ©5Á ”Ð^¸ ùî—gØõ†­9F4&•¨£Ã6Ú`²»iÐkìΈ ³8Ö:Rº;ºƒ¬íòükÕ7Yø1Ùˆ¨AF,÷§v~è利Y#Î$Ž-z¡2Àu1~¼8¬ úilŠ›xÊcÙÎSVõg˜ cóE÷ö@ø³¾‰ w;KÛ7 Èé´Vt(J¦¥ãoò/nsGÜ2‘1ÄŸlÚ=c@KÇ(¯ÖàsDëö'Pÿ¿Ÿ ÊQìür(ë±Y}„#ÿùe­§Xë+Q_›ôï .f”[¸t¶¶ëÎq½-Ðó‡GØÁÞD»žÞò*¡G[´{£i®ñ“V¾³_Ý|E¿Û=½‘PŠ’·®š'°9ä|ÛœŒé\þeo€-¢ýC’ÅÆ ”â*jï<ï2íZ ÷qq/pœÖ{|³aÅÀóWˆ.u¡Ð-W*9–áˆW·ÀH5ó¸Lù…p¿pÒ㘥ÿõfKO§Y_ÎUB§ýQã¹É}ì´Ôa`6OŽÅc'|ïŽ~ÐijBŠa áV¡›?ê uƒSɯ¡šòuãÔ¡Öïù ØîGTö·Î¯2ú;ã§n€°ßQå…Jô±l· o`ƒ‰Ã]Úôo›ôª°*™»‘QèpìwDBUïŽ! ²ÃZŸvÁwu «ÑTsW£›*ò¶à®„/?[îõNMý ÆM¿áQ…®…+\Çâ%ˆ[ÇZ„×ðÜ”ÃY †P”¼ü5§1³=”H. õÓšÕQû%5Á%&#û±ÕÂÛ(ïŽéúÅ©~”@Axd—WúJ ßQ½t· ²ð(/õkþ^ß°ëNX|ÓjÇ‚ÞõjH3º  okAL9©3©ELQ6†Áe/Ù½ìj7§AÞ´á³u­k,tôg*ŽN@] ¹[ÖÀ·ù$£¾/Ž ‰°Ëfè–¡?žz©h:0ö•eìÄ߀ý«ÚOª„ sè´_з2’ÕE” éÈ}:áö /±h+n˜9 T陬T3+^@›¯YVæ±Y¬%.ý vLx©@!¥„vjYËÔcÝFªr1Óg8ø¨Ñ´äÜS7©9½j]“aõâ*c?ùÀ,%H<> G¸„vŒÏ^¶õWåÝœ#‰“M&DؽG^´çÛ-ð«ÆÎåùã“¢Þ|Ÿ¾u ëTÌ­¢WBt,dT¸6|&¤#ª·°©p<‰Ê(ÅG6“†Ë9cpE+j=?ð3V3ù>‚¯žØ°‚Ã0Ð_Àb•:^ñºŒÓlhé°Ø^Ûêð¨ïóT!àˆ‹+l I —MT›‰O‡ÐZ‰cÃZ˜w꼸³ßJb?„N%¯ào1-'ÂU¿m(ðíØ¹ØZZ¥¨‡žì‰Ë~HÜ›v'VÉ'y!Ì”†bR•ÙéÏÏà–\AàBßiE›Sˆ‰…™‰or›‚Vô`Œ‘H>>#Í”4¢y$hÌØÄ¾˜*úßíj¼ì+äy1ãQT ¥ûc˜¥µÚGP;(Ô”Ræ×æÂN/\ÎŽñض+ýÍWxF¡Ø¨?³\˜—çÌOàÎ,ò¹¡I”¥@²sC"X[ß¦ëЉ•º]>lðŽ>òp_PƒÓ¢ë–žz|á×Aª(Îÿ<×̧ýD*íõ*½>ÕY<¶N¥3¾Q%¹ þëÚøæˆ[ZbêÐ9‹ñnµÈw*’þEóÞ.·ÐÀ q•!LkTi™ "~÷{ÀJ,Wä¡ÒqѤ[çNÑþ´šð.¬*ÁÜÃ…Vð%Å£ 5”ò¿Ì ù­ïDòÙÎ'^döµ·X -ú¹è9®—ùúc•@Îý©*e 2 טBÆ0T»Àt‹ ½ÿMþú®‘ïÚù•-×Ý0LŽºJWA®ÇG-yÿ›ûð2¥Û\¸\Õ\حϤSlÂë·îÜb t ¹ED­8ý#›ªw{Ïçïn& ÜÃý^"-ÀJÌo¤z£Ó¼¿äMÒ¯zz#ñèK»€—ÅKÝüš#¬#äì,ÖØ +††M‚„¢²¦Éô ©™JÑgFÊÜHžù½°jeff!ö¡m]LBDùݯEÄlŽ™ hIj¹™ÓªÈÆn?»~Œƒß&Ìȼâ¶$R¨ô>Û//^x=¨«û$Ê…ÞÉäBo„[3@ųœR•+W¨œø>lŠGÈêFéJ¬“Nõ D^@dœQÀmIa&ôˆœº4³~Û=qdåD[7’–dzD‘VÎSÃÕº9ÄDz¦†GV+‹G°2j rùpII3CtgrÇɕӈbìƒ%a+f|ÆÑèˆF¤3ðg|9ZÒÃõÜIÅÌßß—´=Vüô~|\I½PEéóÇZ@!”²¸¯ ˆj gQ—e­Õ¯C…™Þh›"O3‘_/ɾá³0§î` ýØo¿©Ù _³âÐ÷‹` p @wÉnXQÚ>wúœ ³´èÔ‹Ø9Ø&"O€ ÄoõXð ›®’Ðè’‘۪H§eÄù-ùÌçáKÜ›¯fõ`AHttˆ3šç˃\ÄjW_¹Ã½”»UtÓi¸(Ìš8ç"yœÑ’<áËK3¯ªœªŒä¨*vâ…†BÅëì>{LøÛºEI¶t`ÁHm6M°."r„F™<b„Ã@ÎDZ"\Ì'øÝŒ`)Q¼â¢Rs™!î›Ìcè"5’Å;¼ÃlU?Q¥z$ä@óp8TƒŒôó/¯+^‘^ƒøÙgë4Õë¸HÍÔ¸žnr!‹†™¸5J¢lCàg §¶ÚfÊgŠ‹.\œÄ=:tZD÷'¶÷x!-ù2æS(ÿ<÷ï=žM+)§¬Jübùfà°ôœKb¯´ï¦®1S€ì¥oIñö‰ÐG$µ.57p?´žßYƒ}Ÿ!AJbÅuí QøŒ¯Ü· βöþš¼5ÞÖNÖL7é,‡ˆß²Ó!ŒÒÏê,Dîq’º=f±uéN¨Ìï7v«·oŒÑß}Þš¥îð°E/Œ¼h¤OXF—`å¡Ys"v2³™½ÆÊƇ)‰x!F]…:}ltR£ï(ÈË­ÅÒ SbÓ–ð´2·÷À:¹öj£Ž×¥ëhtàÃÒ⪤®ù²¨bø#¯T "FlDñ°w/W#˜ÇRÙ:‘·Å*¾t)ËI*ųfhÿÿ»©{2Ž}#þÍ+¯¶=ªw 3Gx¨_Ť‘Úäãu›e¬ÀÛ†}€ò"¤¥ü?ò†É7u¡|[ ¦z1e¢5aèš÷J€öðúcËÁ4*Ϙî¼vŒîhâ¶cÔ´À5êéeNWFH!öø U(ó£—‘&?SèùÍæ÷ß^&~R¨^ž8²èÑÆ)xn‡>»õ¥Ñ…ý…¹_þàÜ:ç1fÌ%äñ€Ølú¬ó¡åå¯x‹€2Õ ç¦©v\¦¬ª‡M Ä¥ªÏ(T÷ßOT°ÉµûܯçX÷–9°ÃZcæ_þ’š˜‘ÄWƇù×dάþ/•Ýð1"æñ÷ô§Ý…ä4½ËË7ØaöjÕ«pÿú ‡\‰otÎW¡cè{˜¨þª?Q5Þª}‰üuqgåþis‚¬Coó-•Ñ[Œl‚œù´A?8‹LÌŽŒ%²åñqý¦©C„œ2zöLLÝJЂ+{…ÜHNQSý´9us³Rœ\{Œ\ÚO± ±«Nu•ìì¬HÁ¹œ˜à4¹¯×ï=•þ8Dîþϼwc.ˆå!ƬÁÂ.iå Yc¨Jž¸ŒÈ(w§Íù¼øAÂWéÖ—.˜Pû¢T7+AÚþ°&åÔË{±ŸÀA$Petš¬×­ó°á´äBzËÛ‚©>éÎô]ü4@álfº*ƒ`f”0ªÆVUÑdµ×M@ÐAMgœ;ò¢êA‡e(Ž;z/­`‡ð\$kÕ0òºÝ,ǹõÕZŒH±¾]1– ”½DÔdïùäk&šQAQäö­q$hc©E‡"K;ÙŠ òÀC6ÌâfÅ=1xÅÜ®F\zó€CN´b¦.b$ÿÌÒd²oÀ„ ᣤ´ ¼‚d'2y‘ƒèi:Õmv¯é=ÓþŠÖ—ªé`dñrù³ÏD¦a+ þ#3qØ‚# âîì%ÝϼÇÖ |à•¼Õµ zTûô£Ã¸øâ"´¬$ïLcŸ! -ŠiÅÏ`lBó~˜Ö¥¯z^|ž°.ÃÆP=æùi!ч|=Sf:€#6ÝwJ ­­ 3‚v¤Õ(cÏΣL]NÕµ&p%š0Û‰Ô‰ð ¾û,Ø%#0ËŸ"}Ú[tØóiO=]Z½*`Z;χ›ãòÛÉY¨\±*ÏÿGïÁd•m$†PëRInÛ8ÆÝcõ|œSCeñý5u 7 _‘7¯Ê0»Kâ41éijL³1U¿ ø¯'kÙöNp»îûó0&dçýf?H±˜#ÏU®ÁWùš!ƾH¹Õn"ÕhTͦz¦Œfn¤Æ4ó éŽß*r¸Áœß1yÓV@e'ö^ü÷bî]qÐß:¥ê± B­BŒ8Óæª±¾; eOqÑ^ÈA£Q÷!ËÚ0á›[ Àϲ]FBÞ<5HçÎRé,?Û9@ÖÍtñè­Ç™x™™ £SBRí‘¥Q¶éž [M… ȵ¾§¼XŽ)v¹û ×)X„Ö„oh$3ݳcˆ¸ö 7ù«Ÿw.?ââ}"mϲýËö"âìÄe —Èèéš… k……™ž~÷xî.‰¹v«ÛÁ¤PZ¼?Z)×?÷‚ßûø¯íºyãɃ:9:‚®©LÛ«eÖž¶¡ìmQ­ŸÏŠÅ'§9‘ñŸ’¤™Ë­Õ\ßÎeûçlgIk6Ѱ½>µÐ[Ï™/T{a=$G^o†×S6B¸Ù€n:S}¸É²¢|°TŠ6%órvîaÇÇÍŠi¾ðI·›†AàO’|‰Óå&o9ö.‘¢þ ^°mqÚÙ!il/°êmg`{]qãn‹¥*—Yù#cOS´ìØ©µ¦'Õ\ŒãÇ¥¶¾Teê´ÆŸ,_x}ÀÓãP2ŸŽê ûW ›¹.¥9GK(‰ˆØú‚/Ê‘’ äÒ Øªh#`óÈ›~á97}†eÄiýûÎÁ5Ë:‚"ÁºK´~Ž»ºÿå‘;–~ˆ/D‚‰EÛvoê²£Œñè-)M–ˆô|O.¶Vb±uFôç¸èÓ2á¶lS\9ùµóaj§×°RR1g¼Þ´u„(Àó9Øb}¸x˜qŒjaµè~ÅX›¯Ã(H¶øÂ7V’ž¿?ò{Â}Æ«튰טÂrlœ#ÈÒ·»ôI,73«oðMF2E …n`pÀ…Ô{É©_xjÍ_%k9õ·%IgžYä†í¶"!uHê–¢@{·Ž¸p~ÍÿõäÂÚ¼ÆÅclý€ˆÙ+ÔÚ[2Uå ³ÀÄÒ/_Ã"‚IŒÖP<ëRä­rVŒ¨E°§…é5Q8W²2mšç!ciµÃcŽÚ°¥ ÝÖèdµæEY¦Øl°CžÄD¨R€§ÝRö8-¢_¶«l$xzk´â®@Šª8Œñô1¤ ilÏq/ ZÏ\Mú;þÖ?.òGiVàÀK¡hÊm"Ùñ@‰‡–òxòÙÉF'ø-ßÞÙ#\ƒ6sž¯M"ªvì<í]Ê»§!³ ü5¥Ž6%Oø’1 ~#,+1õyÝšE ) í5/Ìe5f«Rã/‘(p᜵á¡ã2Ï6±[Rø&pƒ4ƒme†Jüñ´>rd|+G²î̉QWn‰˜˜;å;€Ç¡曀-¨Î»P½TÉ–Ç1ý Qo¿%ÑóÕkC t¸ºôáÈÿˆ†m­Uý|à[‘ ,>7mæãÃÛœbƒÞJû€aü~è‡q¸v@.A«n\Ðûs‚~ †‰ƒ¾,l…[ÔÝI8D.;è€ßцçÙHvèWÑ(ðó΂«PŠ@,IønÝè6aªâ¬L7ßɽ®jD¬÷©!“,’­—=ÆO“>¥*{|Ùái?mñXõº\× »XÜèL‚…Œ‘²IÞ‰Ù3“Ï¡šÍl)sZ&2ޥؕ|Eo‘¯¨U2V„p“ÐߣF°8íí©G}'W),¶×-âÑþïQ&A¹²Y‘­8¾pL!*Ñ+ÊW±™œ| ÜÉUdá‹ÒE7ELîBS6L¦í #*Xð¯¨ÝøAS§&67Pf™1«É)àn"2[cÅÅ΀ÚZŠõ›}œÀ `—v£=ÞŠ³9"üQ<Õ:ùHIcêÆ>ù…1T‰46˜rå8ø² °¥q­.úQ¿L¯Éö«Š Ç~ ?x24øËRg—ÂV˜F-j¶"ù’» Qžë&ä®Å°Å8AwFqªß`­ Óã‘ ³Ó¶£6lu ÓÎi¬ž^l4Â.lçÆÏa ÔltAw´"ÜØ†Ã¡ãÕøCwñD{GÃÍT€?N*2‡‡®5;ƒ†/ˆÌš¥ ª¶ò¢F,‰eå±ê%Δoµà¿–|’JßM½—ÎÆòŒvÃÊÔÔ>Á/;«]÷žªŸ$Î~Ñh›*߇sØŽ[½üf—Ù†h¯)‘Fo–öÚ/Œ¢ñk̤"ñ‰oödÜÝ‹µQY{„ug×-P@‹]šqXìàN]ë•A Ä£È> m¦^‡EëY>@¼IßbN%© >ñ¢Ï¥‹eRN)Çš"½îæ–à%èt± ÛçpBýV¬d«×½0J@¢ ;UÆRt¶lŠ(/| û@"¼J!fU+k ½ºØtÐ0“önª‡Ü§Òù¹nÇ\Zaì¨ä!÷I­µ,àWÊ4f¹à1ú³ŽÓ?xäg­3|~‰~6Ò¥kéÎÝ=¿ŠH—fJþYÎjuÊMß~¯¥]ÈöÏÿ[ØÕ±Î­Xã”Þn¿hœ’W4ú K†—þ%xå³À!Ûèᙽé%¿Ðz&ÖW°=üîÇ’¾ÜŠÀœãh>ìF;]ÓSss‡rÞÛÛÈ{{NO‘œì/0ÒÖ~€–ýxröûÒNûìän:zÅoz%‰R ‹NìƒoQ’‘åpˆ@®wÇC]Â$ú‚‹R †Lq œó‘ÙK¦n„ߊRÎCU•ˆû…xðrQt}œøUç§/IÔP™óý?3‚ k4"Lg>F›j´y,që#‚‘࿉Ã(Ê:åCÕPâx’ÎO«½>€ÕªÎ\?h:'kG,$.µ‰FËËùô?æ$br›!ØÝ-õ87Žtë]p­bèØ*½tÉiÿ*'TˆÇzŒEN è~Â0Á¸Ã„»»Ï¡ûѱ¬3žfa?qKmj_œÚíJ$XŠ0WdÏÛzpܳ>Ì=Dj¨”®Zèø.­#È[ (-ö°C·†Ö3œ¿ã7ý-Ñç+FAY¢)?tJ—¬}T“Œ¼ ™ÅcªN ûÒ~€´Û&Ä‹ÈÛŸ—fi:nýKšA}%+¢¦¯ _idÑŠ£Ú³Ê=g¹¯a!L(bÛ>§“¿É¼\§n•“±Øt/>ö*'fZ`âl—¸aØÀüHÀà²Ï –¨‰˜hÞDìNŽp vÕFYZ^qOËŒ‘ÞÜe>qVðc¦SpÖÇór×c’‡éºNXÿî¦x·òì~¹ë>ù&VJE¯»m©6}"zhT‡MöùõMâüƒðŽØê·BÆsPpÀì1£©²`JSªpÞ±P2¥µyçí{k¬tñû‰^è ¹W4N€¤¼Æ'I¬|ÂÙô1˹‚íõØÔ&{=£<Ÿä0*­(ý¨Z7ËÚ!Ó™Â_ýÜ™DÄs>AJŽ-MV/~;2 {˜Eg×ó!Éœ+VM“ Ó¼×É þ?˜æìéMàp¼a÷'ÜÈœFRLåñ, :Ë´3*õ~TjS‹+ÀàÉzaM‰ª0‘ —dÊ Èáš'ˆM{-—üuxÊ/¤Ù_ÀȶÚóŠ””ž~ ‚Ó+ ~Ñ@ùªJÑ_6Aºì/'ó¬+ZÄxgáâ/µ?*ŸÆÂ&@}È)ô«éßoÏ”¨œs@ÒlV/ì¥kQ{ú͘¢•ÈM*W+þ5º6bñ5!Ó#°±upeÛ9ŒàÍ#÷Ý>òF>—a%¢.{"€kîG?ÀÚE—‡zIV¥ÚƒØ½º(eUoÑŠöÈB…@4•ï§|³M“جÔ06Ëý+¨ä3t÷À¥eª_ºØª}MVÞJ3ïvQaöKã(CØ|o02Ö‘ȪP¯ôìú‹ÿ±¦äQ^!äbž>˜2:êPí¡³¤¦Íç;‚ÌEyä¼Tצ9R÷íãsH$u ŠM±U¡Kž‡ÚÓ+E4Ø—ù+å}«3…»këºb óÛˆ×WW5ŠgkσL IvÙhoáš—uÒLsÞfñ ¶¢bÿö@̺~…Fsú÷Y:“'POaØIÊý.˜n£ˆ3¤«|Œ‹í´H,Éq£îÝ­Ò'Ò´§ˆcÃL+žcRaGa¢.‚kœä\”¼Gc£µ“zæVÛ&eÃ)ÔÀœ—îˆJÄàŸѬvó™î0£àNØÜ"Kjö6ƒ~s,‚ðÏ’%l³N \‚Xç3ù’J+§¬ðob¾~áÓƒÝIEêœ$Gé5ta¬ÂüØá…;f—ŸT!È2ÿš QA&ØÏœ¤WýfÜï0 ãÆ0!¿¿Gˆ§åoe©ÂÀKï¯@Y3üeb]AV}áÿ¡mw7Ad6—ë›+O0™ñ“LÿR€‚M„ä—Õ¶Ùžr–]XpDn6â³îò|#,çÅæÿ$½ªôú%_ËÿñÐ va*6Šø(×-Ï…`ш”Cm°JYÑÿ†!‹ÇÕ@;¨êwªW]ÊBn¨ÈûfÏÃ"s%Lš¼]XÎð…¿âoìµÊOÉîܸñjÏÕÌ®·D ^C„ ×X\%Éwb*@%eû9hÓwa檣Ys=‹>„ˆæ5åN^Íí0Ÿ§à¤ã!4^Z $1á¶–2®ˆœËãÊñ–¥I’¢µã«Ø¨Õì6Üëú”íh¼#E}ãâI¨JHšºR¥€5)eÕ*ü0^êí~™ìëÂç= µöPïÛjðº÷eZ¸+DÆœ9léïlˆÖà&?¨£A  tšòZÒ1Æí{ëÐ’{ìI·STPãk¨øU2¤Uî¢uÈϾÝ5ú®6ÑÔÂÛ~[P¤´eÖ…]Å£ÿ„Œuúú+êndˆ$œ½øåQB ªÏÇ M/…‹JuòO|RÚ·\Að4üqñÌ™šRŸQJòe§ÚÅ[Íw‰6úµÿJáQ)_ÉOöc¹~É%¤L¯ÛiÆy7¶"që:õMUXÊ,¯º¼xíY®§{œY‡>ÅÍ„³­÷67I±ƒ¡Y`áV‘å8Ç 6ЈBV w1mÈöÀí­ñÕÂH÷˜âhKLe¸å’ŠU˜)#Ù«aGâNît.u† ‡÷ÌÅ y9Ê|ÆŽ[H !@^ -C[òÆ(=züÑPýØqq.±¹þÊÊ·ØÒÃÁ¥ó7ì‘Xä{”‘¿àò‚ÁdÖ­ì&Ž;•³ª.s‹Ð©3ÿkàå€[}ï¨ÀóÓ$ŠRC‘ÊŸÍS’Ë…ªû½8÷Óï³¼Q ‚¬LX§ƒµ,Ãå—RÕ,=G©J¨]‘×6Ä¿€p¯/t*_›hÉÐ!У6‡„/µÜ¢}·þ*VW¼r N*‰‹ñ&,Bf•òGO–T*Oub`§Ù7â6h‡¹´Œõªþ1ý\qMXÛFf—ðîn»d2§âµ“·ÍóðìÕ¹ä®'ý„hÎÙ ”IëC23T;íz\ ºÛ Ù ³VlPñ‘i€¬R¾;¦¦«€â›M£Í÷ß>öPœØ@Çñ·Š½ÛÏ£[ô+Qé´6[xÂÙëRŠu`ñîµ:ߺZboH­d*'lD;@ŽÇO[›â‡ªpIÈŹÿ]wüI³Öð+“‰•ã埫8‚_›uXÆ^ðm‘ñ ê=£t÷ê¾2|™`'›é{ÚË‚^E𺋞a\Ç¡€YOqð4¨º‰'˜<^¯N¢ð×,vÐ1ÄÛ ’±9~!âÐfP3À(¹w,e ûêÅî&ŠvoÏ/…ÜßfRbõ_¦çÛ©ä»T'5Üû…èªê›…éJÇc·"%íºM‰ñÓ²òXKX{m±j±E|¾Õ2ÌeÿL¨ŠlWÏ<²øz%¥Ð &Bf:Ú»³â’ 0­Zòui§±šPçÃ^¦1>䪕GÝ~JòO*éºyzÂKû3ÓL¸Õ=æ=Y?^°èJ›«ƒƒœv І/{ûø£=s Mè]¢SÏ»ÆW^__ŽÜDÚX¦ýëÖñ¶A ·XUÜË(7Þ Ïp‰®;(ùÐÁíùÝ„d‰òáUìÞÍŸ(Šx>Äfæ†+ï¸mJ#ŤÌ}á”èaSÌš"ôÄ6ù4WsŠnúž/ Ú¼ º7‘d¬œ†>ÏüñÌ bâVÌÏ?²U;¹¾ mf»6áú4øY¦oh‰êÓ6 Ú9¨ÂÙ`ë{á¢gÙ=õC‚|÷S='5¶@Ï_ŒG<ðí£Í %yAž3çEïøç¤~õ˜$OI£å+ÝD,P¶ôUñ4ÔWNA¸Hš¶ ›#=„m K.$Öשٻ{^Çf’¨_ŸÛÞ7kE!ƒÌ >øYæhÙØD<ø%«Ó“ß»;~Ûóu‚pZw‹6Ñv¶][CJŠ¢tÛÙZ(›ÃÍ &ÌNdw è;¡åp„ç5 ÑùnšŒõQ¥Ž0îxÁ)qËjaê*"†5aÇÒßÛ»8PPó.X>e¸& mb…¸ä#ú3s=™!#Oˆlly¿™Õå†ñ½!˜ô ¯+nG‚üƒ‘¼‡Ð‡^W¿ÝÓ„$}]°nùsÀ#z‹òù·u3 C~JcæßÁz7ÅÖÚ>ª8ÞÝ}s‚D~O¶ónµ G•Õõ²á¥(ÀÉŸAãÞF“7¾~"ðdâŸl<Ü6Ôá9CîÎj«ŠœOÛ°’ÿk«g‰QbØ®÷W¶ÒÝÚ'C/·1HoDA#ù§cA,m/IâyµºžW›’¶‹‡‰È’=áuKp¨×«­l‚hÓ$`û–Ž•®sþ›ÂÜ•é~5ÙS¶-tc­x 4ºœ+]¯>Ýv þê7©×+ŽvPÜ`jGy‡§aà’ÐjØ¿œV+sq´D[%GHB‰9Ä~­ÙºÍõ®+Ê‚^÷†cB Gø^"½WnoϳEñ‰bˆdw§öEm›Ds¿õq¸+š¥þöätåGœc_Ý4¼3d!'ØdV¢H­ÜÄ᤺l¥V—]Ÿ‘8çê„Û_l¹Yಞâ·[ÏÅ õ·Nþ`[[Ó5γ°%n"7‹óáæ\;;²¨4èÁŠhv Û'ˆׇçпñã µ™jn«‡ fP+þî…ÑŒQ0|T»y”d_i_„B×7Ñÿ .?)šÄrÈ‚ržÿ툀¥MeIt1^?ÃÂÈ žÅF¢ý@÷¼¨·¥Î£’´«zßÐhŸµóâGÈ[=ê BäJû¢ÆÚ`VmNWõ2~öót°™Ó¡ð4°$ÑH˜ÚDÞHŽI§>Bê‰ÑJäç^×Sô%o ’c )/ˆß¤¡ ò†vÓ®ÇËwÞ üTAM`¹8¸"@Bj ÑÁ¤IÅ dˆ‹H8ÿ]VúÚ [häl²‡IǼ•ËŽß0ÂóÈd¾[€ZÉDÝ,þuÝå¸(=‰!Dìl§,è¢='Á ]'bÅOä’ïu'>MB7¶áàMòíQø¢ƒ@•ŸéA¢)^”DJã9[Gx„‹ÜÞ¶€FYÔ™IÿIˆš°éú ÇG/ç[l·w¦Öìà¿r"ñßIW代шÜ?æêØ@‰Ñ?™ßXåÀ(”‘wö´$q(ªµýwÞ c²:GŽQŠ@în“"² pB-gÀ/U|]®Î…mOß~¼ 7sÅ¡ß,~¿9×Ù×MU¼¿¾ÔÿÁjD=gV^ וªÏ@h7–ôæÆª7@Pð“`‡%w©ŠîjyînR\\òÚË. ›PM ÷_Uc;ãÊÎ/o­µB^MÉÉå€ðÈu%Ãß]i…qûEºí„ȶ*ÅV(>_eÒ7^X8ƒ’I2¦$®üi¢Ea&5‚ xøu·Å´Ó ­&t©ñ q]P±!9an!¶;þ 76HÜåÏ—Š‡‚7ÉjO&„§0AEèf¾¤7,®”=pQöˆCL5•Ur0º[.ÌÕ†rÒ„‹ \ÅHú/JLÿþüF½4øÍCr›&[Òà 9ØÃ½P¥Èãr÷΄ 7ÔÆ*tK ¤oÒ¤Õ¡›98–¹æuši™Ýp¿ø~~¹O—MŠZHq‹ÒJ7n±Ÿ©³6eóÁÙ*ÍSZ&s±/Ñuhý‘w­mÈÅýÂSµìz’/[6±ÀKEJÄCé žÈS|æéXn!Ùþ£YF¥Õq 5­=l=¤#ôï#HjŒîÞÖ iœS8i£û~Ó¬¬Ø†ÏeóÎíý‡]³kÂn‰¤B!(>9²%ÒÍ ð`A†x6ÃÕtÔsxÏh-«ÿâÂ!þn”ÖYî. “—} pZ1*–Ž´ÍUð‘

ÜvIaønu›j`Û¼À mIŒFÝ°ÝØY§]HÂ.Ç%ãÐ=ĉóÄ9ÐËù?6±±9õ×U¨äêRL£,Çéžv)šÿÄñ)àŠ0÷qÄk†8 ìTxÆ‹ò”8üù‰b i¦Ñ7®g‘Œl+ì”éMbú€½ñVÓÞ»¤Ÿj¡„fl'lC‰OÿlÆ”Y!³¯Öz•)˜¶w•îÐfnÙ'Ch ëÅF‰LâsýuÃ#«>gå‡Ó.WûFÀíƒ,0r¾õŠ·º»çš±€ŽDz[¾I |x…Œ<ü»¢Zs¦ç]mUò“ ]!ÁLuY Côwƪä-vÍœ²=%y„†¾ü‡T[R•Åä3 4gelÍšËN]E} Ã% HÊVfPæ§„Çj]RJ³hð#gwûHþÁ¹Ãô"R“›ÎTß Ë —ì¯Ñ€Ébl•í¦\'oã{äw„õ?|.ñâÐUémÅm¢Ž÷v69j•ÖØðÜzq¼Zí³`”:M_'ç”n$ag ÚNã¶4‡ŒµV»Û`4Õ‹|¦×åUÐun;á©6)ºyáʪ÷'ÛÍmIi¶û,0DÔ$Döªb-Ù<H‰nf®ñ^ X€“ŠQùæœÒ^Jо|âÜ›”ÈX‡äHiInfeTA h<â#ä…†g§3¾$ÈHÅ©&†µ,j!, š6óSöš`Ûé ¥Ô‡©ß™s-‹×Ò©!´iæ»”«2‹nÚdrU-TUžÎD'ß Žzö“!g™à±dÓ×oh/Ô/@ûŠr~°‰?Ý•ÆÁ6¹œ0;OÚ‡¢×ñúVκuNóÇ}«?#2 ¡Púêkn1ž öwN®‡ç ©û˜SŒÜßìÑ—ø£û5ñSˆ_œg|„àÁøãô.ÊÍ1zim†Ìdž°Yb§aÒÓg«|úëä­Jd5㘸h`Íâ§µibµÂÛ°?+°žÂÑêû&Èñ; 8ª¼'|È…¡PŽ/K•òBýõÚçnñ:xG}a#¸–f”¶~‚¼Tܰ×jèwŸÑù6g±¡×JºJÏÂ+Y™C7"«ÒÏÌ(ômÖG©·Fd³çÜÆ¥O.ÄÄÉzÏS·¥W{ðÉ^ÃDc¢í›‡ãð9D%ù¦Û`Jsm fòˆù~j,!ù9íÀofÈ–tìzY*Õ°Üùz qM¨–{l&¬g% Î Ý.Ï3‡.´Ë .Xµ#Sa²#?¥¡'A-`K¶[Çì2ÏY]¶Y9'ÉAf¶ù ßbÚw‰6MhQE ‹<4o›èÓ¹ÀHxn~e½a€H\íyÄÇö-š«ì¯)ðê»Ë©"𰦽t]¾`ÏÉÕ·Ñ¢nÞ€dÏ.ú¦ÄgùOË>—þAî{_ž™í¼¡éH8èº=üm-"~PÒjp傦/ØÒÙ(€æ•[+$×툩¾tÚ8ù&).³½I˜¯Ö÷ÍaOfBp\Tß©ÿáw¬‚ÚpÓá…àÆ\n6³÷qNüÀ“UCµD‡Ù4¿ µмºþÿhÞEü›À¥"ðš.?±8B+Ñâ18ºû‚>…Oy%¡R…WÿfÈÅ f-W9IKB§(;ÍÆoÊÓù¨Ž@Ý4Ec6t8X=Ò=âÞÎ7T…1<Ð[¹.ÑÃl¶Ñ ª;N!Ú|óÐùÁ´œÞùu±©¤z…Ì<8ªhÔšöŒ\$T#p|‡Ècû/=_×™öê¹ë „ÀëœùKá3q4Šæ “èìw€jáÒèD›‰ »<ÆÏÑU#ËÇéG{¯õ ä²¿/ùÀ+ñfÏ€—¸Ü¹Ž|O¨€R½¦²ÖÇL †€¹ýºq÷i¬¡€¬2˜»?&­ûWó0Î={°ËÄÐÊì¤dñ£Ç‚.Fn£Gv8ït­˜´@ª1eµaÆ,ý³Ms‘ú@)Lî^W*PÎl¸®b/+ècÇ–;”(rûS±$|ƒ-àÜ»,2-Ö:±êu ê~€0I¿D–BUDÛðk~B$9àÌ5¼ø¢)0³üpÝ4ê!J"Œ"U™ ~ý"î|HOF¯ŸT-«`xÄÙ‰¦Q¢Ü mïTÞ-LD4øvþÁž[ž‘4±Ps ¥§ìöðDö¼21òPè¸tÈðÞ¥•ëmgŸG÷ù+ÆÙ4­Ìoû›2ì(A—‹h‡/‡5†6òåöŒw±[v•L 2aÁåÊc½[ ÇõåökÃ×j¬ÕTŵ’ªÀKõåî»OŽ5÷#4O“QóóWïÊTo×\ãy缸Üó?ÜÕá&‡R@Ê»óKëA_„'Š&ƒ€øîl`ÓÙMæ<ËöîóÝÆ•(b Êœ "óЦ†;…Ú§ÙC¥1 RK|b+ ¢z¼×[Éë M™@èÉz\åšÎÆsÿ'çÕsÞ°zèéÆÅç¶&I0ÖÚ:”c “õ%(â¤<#¡Í§Aœ3*[`v|×Tºçh‡£§ºBIâù¨÷àv”gÁRõˆÚY²Ræ~X°C¼Ê…M]ýïØÏ‹28 ×±N2«){'îdÊݤí{FC/Oé£S4UÙÃ×<çQ®œó;ûm:‘ý‹ÝÔVGØÑ]ø¯fyÝÏ-‹ÇͯâÂs—zHcy•”rq¾i+¼½I ñŸ¶Å¡P¼ÞtTާj°s6–É:íïj¼ MØäã„‹aS  CÑúÉôGURï5áù‰å]Òwj;ѰQ+æÈ_æ¡#ü]³*@†±èI>€¬Ý+$a—ðJüodHNBÔA ÀçðCCnÊ~k_¼.…×ûU_•õL‡n6_Êsþ¥2Δ|Ö c´9ê[­ʸ¯6eÎÂM”ÔfJ“–É%t{ÙjÇî5þôõ•wÑ)kÈ–TB³ˆ§}ü˜`LKL7fÚÞ~ÕŒT1p`’ϯf ÷Ô¨÷´ìipI"j/Íñ/$¸€C×Þ©±67,¿žîånÖ¢?4¦z"ØyðkŒ?~Œ.ÍpÅ! RN¯ì9¶]?ƒEX߆OED£ÝƒíÚ¾l !—߲洣–¾ D5M¤rè>‘ÃÿÕŸ´”fCF½üÀòªaºáe®#«f|¿‡©I¨ôñS_ÛòN!õ§·7°¢Pþü[òt°ÜHcŠ ~v·ÀwÝ `µv˜°I¼ÁÑ!&©Ì´nêëÑw¬¹(G#®=ŽM]+…"8“CÕ,jH²us²ž‚m¡gÄð£å¯Á”l7a2|6û|tzhãøÕ4¤»YÏw cdLq’¬U:óë“N82ÎW0›»Ð6ݼ…Ž,@F¼Û¥Ù®á‹Aon€˜øâžÍ{$‰yHÖ² #ÁmwZEVðm§fºúO#Ï6Œäêûdž^õÎÅiÄëfŲ±ØUô§¢ª¸ØxxHÝîJ1?F2vùEç5j~‚Šd- © lµ“[–ßs¥â}|ä(,"«×uzô¶íÄêššxÁè5D¼*(o@7½>7Ó0i÷矻ð¨“.dúØñÕzOâÞ'ÀPÜ"buÌm{:oËÖD»HûZ÷>¿e•N"ý@aØ=ŠŠ-+}{´P¯Dø®›a0ÊÉDz8íÙ¼€ ¡Þ8}^VUêòšqß•á·Ü‰\$¨ ¬àK˘ñv]ø£¶j÷î@ì¾:[^õe|GªK=`Ÿ8 ‰O‹œ²¹o)ç ÒDŒ0·ø¯/û{Hf.vp]+ú¦¤””ë6u:À ƒ›TDí|3Þˆ—œÙux–uÛVÖÒàRÝêo®DØàsöÊê¹P,’@Ö:†Û-A=v#<õªb¥ç«‡6A#ñ+Æ"æ_®9éM$¿Æºˆ¶”çS|[G"À £&­¯¥ôÜÁ¾ ZÏ7ü€…·" IWU]N/gï‰<8¦¼=u…Á9JCmô üz‰^sî ¹´tw(`.A 0Pˆêî9»lcÛô"Þ€åËݸžW¥¦¸9YP糟Áî䯻 r€< ­ÌÐØMYÖ“Jœ _”b‚“¨aÃýö>â½[*Cã ñwGW=Íd»“5™[Láìa®1¶ê]^òV ÛD®DÖ¿¨Â²¶2ímðdwÕHï¡þÎ5™‘÷33uÛ”õU)Ë™§G“iîâ.ýƒVcRÃÚž”ráY'±"ÉTíå%teá¿õeç¨L ÁÈtLŠÍǦR›ÆÞÃò<ï\«±®p!Íä”È%·-9Å9íAÄUÛάbí)AýÀ ²8ÌÿÒÎÐ_°?R²q/$UÖð&Ù¡WÀ?h3•ŽÄÒwHU:j óîК*˜‚¢*¿Oî|…½|-ˇý•Âìíùuγ> Çã*í0£1ÍAˆoèƒ$¯6¬ üß…¹ã—³ÐzXÅf"ÑþŠ|’ ‰ @~¶¦” Z€Ú hé·g’zÞËSð o RD¾ô^¤WZ¾£6[-‚jöÉ$+M_¥ÿO@¯~ùÜ”%ªU_÷ôU žãš¡×ö—n˜zùÎ_›ËîI`þ-ŽÑIæÕ~GÝ@K®«ýÍEÈj†dCI1€¡îÖÌ‚ú÷8jéå„{ý%Ì* G:Ëÿ"˜c=+„K5ef¹FÈá{لƧžîyê²sFVcWs@lÚxÄL‡+Àv}{è‚[ W<¥Æ³JEu(õ>)É.¿£'ûR~ çqÿQÜËXð5R3.¢³f>ebHÐvŽ÷›ÓîHñË”ÞzOHܬمô³²E²ßV L«×Gf:g{ !‚p´|{»·jzáÆ¯(3òùzâ1t%zÿRSi9l)Mª˜”eJbg ΞiVh^RÁD¼÷.Tqí.y„É÷ÂLék²8"«k+oÿÄk;Ìl¨Çãçp‰û[e=öæýªH@+@©pGmu¹„dwq +ÍáJø'ýÐQy…dÍiÃo¶Ð­ö…‹ÈüØêEQø‹И㲶Ó;œ”•Kxâ}Ã"Íó&°ïƒ+òëßúRúµU@8¿ìš&\çÁ½Ü”xx#EbULì”ÐSp¡]!ï”ír|߯ }…Ç­k"â}}%J„®WTö©9éËHú¼ëC¹[ßg¯Î—óÁró/¿ªñƒ•]‰‘ ç§I”ßWÄPõ1Þ1î:Â~`UÙZêQŸ#Oêb8Ö¸à곟Bã³:xìãKu“  n"c‹:íj>ElQ'”N˜o/·‰¿‘&e30¨  $·7Ö È#:þô¥á\Ë{46JaKˆg˜¡ék­—¶µ ’/%p7Çà³îa«¢SN ~®ªYIÿŸ£Ú!ú2¿ Ó9”¤l±æ¾4ô…¬©u jD=ÖVšh ºå¥.[Ëþz–u:õžÒ× ×¶\Ò1à•Z/&Z™xbe–y‰yYDÄ ¿†zϹÍìžóvŸ@ñ·&h§8rtÁD'­2ÕŸ¶ Sö ,×bÅwÙPÖ“G¤’5;Š|+—‰ýÄU“iw ñöq÷ß÷(\5u}‘Œ’¾[žO;¥C4È ”Ú©auZrí¯¸uz£@Ð~i+°–­ =ˆû€¥ˆ¯Ôa1žÉ×€úþø–`ˆE­Ûžsz™¯U yR‡ ƒ- Ž8ÛØ û»ûì—£×¢+ìXsDzȌ`BÂiŸÏÊÖãO^üKCóh cW;—¢Ž }Ö‹£ÛÕ—8iÐúÄXJ”AJÓ'KÌm^kUSPÝÙ]‘6RÎHÓUH°+åÄ™Ìßí^.w>Uêf†ëä\‰ážl˜óK?ÈSóÉ/–¯i’±ñ?Fû² Ö¿ùoãïú û„ü¶o±—7ËD +ˆ2óBÑu‘ÐÇh;¨¦vØØ'}v†Ñ5Gp^4…l·%u#&?¥0èìÁûcéÉO¤ºKÛ]XÔÞœ$C%-Z3@> ¥R7j–è‚û,ç#ï\ÈD^ËÍYŽMB}0Ʀ«Î =½WÝßïj½Ež<¹qE\o™ë×:ëPØŽ=4˜yм4YFíÙÁ­f¤E ­,Žd;ŽäQq—š´ó3·¸"†åä̶¬t—Å…ÐâÛÑ+eªþÕ.<“tì»ÔÖ/ÞôžõuWdŠ9¤áÚÒ€YsÏv¨¡ ‘­×êáUuõ~ΣPË-¬¯%i.¥¨®gßõ.[à÷—šY°Ø¸DäØm;¬ýÞŽ¯ÉœM°ˆðÁõȬ+Î6 ß¿‹8p5W™eæº0L* +0ÛF2¬  ¶übÜv—ì'Lc* éø/9/RŽlë!4^ã¼n¶Õð‚æ 1,UZ ŽMìÜ„ìÁ*j^Âð’½®‹UΦðly±;˜É9Á)o8+•qîNNþvl2I‡Ã.”ª ”ÚÀqÄ"Ö\ðTôÉŠ…18«Eh=}­ ™Ìl—R»aÝÊ D²y‹õ ¸åÓîX}‡·sÛlp›sg§³Å¨ôxÒôU1Ë~À“}¦¥za›Ž àó<ÈÝôDÛ?GÃ7aN§R¯9‘1"=x&®jÚpí"ŒUŠ‘ßl5mUå5³¦ä*\€°×áËÎÑè‹­Yë,»ÇBƒ7«$*k2ìT»„WKx°6›Ó¹ŽÆÑq”¹æWò$m7ú…×Ù BkR^o£ÞoQÛøu¹äôYØGÝJx ¯öÆYÏ*vcQ ûfþ@=3æSWš™kÇtEø”V3õ3Õ8ÑÞ0xõ ÷œÍìÂ×ǣˡS‹ôœtcK Jo ¥å¢àSt« ŠæÌ CÁf{û4)YX.ØšZ+Wq@ÑÌÆgÿ¶@ Á^VîËáJ8ÈÇ–º/áeIÖ8MDmÑêŽÇjBB{ÛSã ±Åø¦&ÀÌÓb¨tOõ ù‡K6²^Žõ²aåsrQaIƒï¤Ž„ÏØ~ùLĵ`‚X8ga\†‡Q¥˜|ÉN]%?‡±òìÅÌé×vÑ›©füT:Qþh„œ|]—¯€ ¢áÄvŸt¹©a}V\ðô©·ƒñÌQŽÒe0îôçår96É„w›=…‹ŸâO‹í˜CM¥ÃõïµÓñ2{UèœG«¾•œƒêûÖµo’VÕ·ŸÆçübÙ/%ßô½ ‹OCÅ©¡íñA_S1R÷ÎÕ›t%½’É>X¿Z¥Ë;gÖD1ÄÕ¨†ÚÃ.~ ¹Þ‹I*¼ÿ±ŒW]\ö9¦R©ÑÛìú[›…4¹™°ö˜kß2¥ölª¾ë Ñ´¢ã-ñvOJùUûVÕt~‡|¯l(ÑZÏà}ŸŒ(&ùÉ2’­SÅŠ4‹““ ¡q;HCWYj@B·¯q:€Ø×Ð:/„ûyA/7ð^àN~Ü®[ ð¥ÄtÍ:òÍEMf:HTg•¶6½Â—]rÀCi¸Ù¹X˜Ž‚³9Ñj§` Blz׿–Æóbªö{uæþ ”ì0FΫ£Ê˜ös}ì \Ä>*EÒ›…¥ÿF×k~üCgö.¦±¤žÇˆáT€Ð¿PØ¿¸0¡'ËÌá”A£6B&’ÓPÍiëY|d–æüÎ}!®c~3(“Õž; úê– ¹ðŽWÒIéH\³m³&;‘²C5•í÷R %?¬îfÿ'Žë¼öwÓœ*’lòž÷HÒ?XPöƒØ”¶û—Rê·v“úþï-—”¡ãçú$5Ü;›bhnîn@â ©¤,Tæ2NqèœÜe™‡\£AæÞ#ØyŠO.œÉs­ð§[ÛTI/Ì„.‚-§;áKÒu°4ZqÁúÞ€•&{h­ÕÇ:«5#Q29iTÝ“pÊÔÙ̉6›°ÉŽñÀâÿ;•z@¯­í3á]y—KÅn#ÔZ›ï†ÇòöïÓ)2/ã|$a­„­è^{ì:µ}oL§E,ToxeÇ’æÓɯpû£äë2§ÂõÚü0rܽþÇ  {-sn«‡Á×7à†oü+RÊÇrp‰qå?ÅŽ]¤SŠpzºwEÊÄ‚25xã©|(íshˆ¬b»_4»¦Ã,¬¬…ã"S؉,:z¨ n}VKKàÖXG¾Ì0<ÔÓç{d¢Eº¹a O’Áu;9Hà¦bB¤`½ÆôŸé„ûYÌŒ ³4²=M¿jÆ9EiÇæ'_ô»žï© Ù zu¦ü×sß?0&u8¼ƒ¸Ȉº?oyÓmêåö 7Ó;ŒvÓ+JÀêYØ! ØA8]ŸŠFG½«‰‡šŸj‘VŸxŒ‘;¡ìÊ’=sظÙÕvïÈPç<”~cýÁ­±Gº£1¢)¢» x o«\˜‚ýUü=ƒçÖ8ĉ¡E–O_PùÂÃÅeIÅcºŸë•@[v&ÿSt«wOR¨ëþµåò CÃJ¡>'À¦Ò5<¹£'K¢<âeóU…©þYIs·ÔÓÆrðÓä'~s' ÍêÍïï åÆ:gq™Qœn×ŌÂÖ‡îÔ,ަ[ß,HVÝ“é§øpPItRDyã>E㥯·©è{/é2ôãJ>gúýÏñ›ËçÄ×m‘o <öz/öÑm0•­ØçQòaï\Z:\—cYAoÜ6`Ǥ.º@VEۨƶU6Öê,™;ä…Ó–ü¯Aáôul×'”W8ì`aŸè/Õq,¸·E]ù î92éè¥Ëu òûtØÃ ¼äŸ½2°æúR†Ñ`qíR¯U:؃V5 ™Ùx|XØaÝu‚)ÿÖ Ð<% –† öÒ¾k|oL†OPI$ÁQM÷‡{-[eEäžÃ¿å¬xôf%ð!Þ|\ª[õœˆPøÍŠMëØ~šqn‰žÜZÚ4Ê2ˆ£ r”:6ÊY5D1¶Å“8äxÍ_Íßì5÷òоkK{šÎf ¹8mÚÊÝò ñ‰á[Q1¥N»óÄꦫû`¤ÂC2çQ+WÕmõL-»yÿÆ(ƨx$zâ§bs‘‰ªikf¾«ûaë̓Ö:XRfЙýy@k¬Ítø >p‘ÖìÞÏ’é£ß¥îFqÃ++·l@A¦Ep² Í‘r‹ÆËÅ•AÉ£i’ʳg²âµ"A§5C0Ùbxi fŠ~pzÐc‘1±Ô16§%Á— ÜcÖo!˜f½úuÿ;Ò(nÏ5ÛDûvg”n‹r|ýõÇÔç‹óÞˆéµØ\š¹Ö)« !&(„°wÓ‰øáù7GÒÅ Dr}нjà]ƒ‡+0¢Wª‡»Ì²ïê¶Û·^¶{†ðŒªWÞÿ¬ †ŒBU}oÒMO õÛÔ¶Oô|ýÕµ@H»h;Øq7IÈ™9K' ¤×«LàÕŸÅïkuB&|¬#ÒzmÅI–cw3룥rj—Šï8i@ni>xÿv$Aâîê Oã=áG²ôaÐÝä3KS>‹`ϳjP./\ùŠrޮա¹·ÉÀûÄ 'ºß6;û ßb’ù€—núõô¿0ղU»n\/t®cqs:1"eJ˜IÊðòÔ›0ˆ¹påÿ"-=<ËN‚Êë¿$y¯*‘ðmuŽkU(´Ws»êËRÄÊKjÇ}ÓŽ3ðâ$mæP¯æÇâèKv[Õl|~mº—£ì ͦ×_M£¥=„U²lºHµà9ø»ê9ÐÃQÕštk]KFi V²^»’î.V®Ù#4=Ø¡ŽgVrà%„­Î¸³åùp4¶j¯còolqŠØúRªî§–MÚL:¦[/Fæ@=ªÐ]×&¢ .,° D1n‡Ù¼yÝ…µlÑ×óÂU²iô¼T]gÅðä?ó0¸ÒEƒŠÆyØUì±Ë8E6â#&Ú)xÓÑéÍV?™Ùf_oy ™,ÙO46ƒú4Aj8ãSl°suœ}н¥x9“´Áà$VjÉÏOhåÇGQ9N¢¿ˆÓMâò‰Á YWˆž? ¿^µšt÷ù“œ˜óÜôâü+›ë$³¾mZÀþîb'´œ'Y¦7àú[ãœM¢~–ÖTÑ €NœßãdG{û.š¢À»¿¶ò¬ÐÛ“$÷ßÜg"‡þÒ£vÎö‹OõN”M Ðv§ËÒð†5QøHúÓ1KtW&/Cž±§-€#¥Q$;Éó1ÈC¥dÇ^1f$wT-ÜèliȇÀ:U‰ xÙ´éeŒ;Ë1„©JÛà” ÝÝ+ï¢{VJ:A¶ÖZÁ€‚Ö` 61­®ÝíV1…Vàc^þµ#7·b…^ÆáN:üRZeÓÀJ<ýËÒ[Á\Bâäh¶5¸˜±qÝ­Êÿš^¼¨±Nwùy"ÞI‘¡Ý1¢Â(D\¤h(«ñ:¸AÂÃEËÎvÉKYƒ£8jFÊX3ì—uk¹É&™Wì=ͬü‚=G€,n®| <ÝWî|ªøžÚ.&—òUÆlð´ÕÏAê\7×KlÁmè\vjp±¨‚^íi;Õb-e°¼'hnYef2eñˆn´=ŸXÌj»! xðbEyqÞ KîÂUžýó-.úi0†Ã›[ã›lj‡ºî¥bÒ¶¹Ï¼ï¼ªg€Ÿô£ý¸nŸ5DÛøpuQ’ê„ `%YÇüÔ†‘ $Ä& µ=^Ÿþ•÷À ÊOÖëíÕ>sÑ£X®Ýœ¥}¯"„Ê­7µ^…‘ó¹KìÇk¡qxÒ_Ìg®Ø0‚2p¾]™ òóX<¶ :{…áYQR®A˜òèˆphcÔxë‰gS=ð¼›65y,ªÓb+‚T&bcaÐö$Ž+j0·PÕœ¨Ã¨jüƒK à å臾Yüžü$êÅLS:£„]üç5’ 1¤?kÁt¿†ì¼ömïÀg¤Ûø¿ªH¾ªåÐpÔkš±ß7>Ù“òí¾|8â‘åÅìBãÐEür/Z¶ê,{—vXÚÐ…dÉÎçÿ§ç–Ö!èzòèVe”ýHNl½ m®H‹¸R÷õç}g›!*ô.Cf ç †Ökëúãl.O^Ë!bo`€jeüã:=®«ü§Ýžj=Rú‡VBú9‹†¯ oîA—>QòºYê´0=!ç¼Uî_ÎÙ§,™4ˆÖðr„/À¿H)&³Ô(.}(‚›-p…µ>{÷h”×8ÃÅCGvÑ/6¸æ(Gk™XaK³N]ô‘ì×Tqb>Âú»<…Þú”kþû¸<¼³“QË•h²FÙÛ%«íó(¡¦Pã‡È]‡‚•üe}-bz2+‹žëLÄÔa¦wb•!>ð4JÃÛÅC„‡ÑÄT°Á@±õªâ©‡â껥P¨CDèùdœR¢@ž°µ–ú Á`2¢}@ý–³‡ ãûlŒ¹HxÈߺ°ØDÅc™1zÞRÀl|ÒAWŸõÿ4Ì]Þéœeoj /ô¯lT_Ö£DØOâþ/:¢ã—¥u í9LmZüXÂñ‚¼úÁצÿÜØ•-T(èi9%ÕÒ^RÎ6N\8ðt›h¥Œ…£ Ùá°V¡ª†´ÕüUeçÆæÂ*hÏ Œ»øiΜ<7 ÄÐE}wfèšQb†ÊC·dG8ûàOÝìR+½˜õsÍBŽñ“Ql¦”òUT3]ÅPY!úîš@ø¾'Æ5\^AYVëmnü½íµÕ§g?®¾n,;ýÞCw<¸ãiû‚É]:M‚ Pë[cÝ°Åøí{þÃSwH1õz>L¼Z„ur ÷è}°"#wÁ\yŸñÙ[LÊ–Hž)<=%8âÙÆVQ²Y,H®²N½6"6/1.‹òÀ7âAAx@šì™'¨ºŽñÀ(’2ž3ëêO,n2)j¶Xé"$Ã)XTna-ª¶fÐ+ˆpýöœBžåh«kQC r Ç3Ä"~‘ö \}¨4pÙëz²ÀùÊ+$›Ûú&B¯s•V\q‡Äz{[gípíE*ÙºÆÏ5>î¡läbzŸˆ_ÿr(w:úÁÎô“Ÿ™–¾Œ3öÌù„gΊ ‰]$·‰0`§’шOTÐ’7À(ªW$EcbsU3&ˆ*²ðA,:H>Ï Aºe<„#ó-[ÅVî5âáNÇëcšñ:1!ÙlÉ]Aò:ÇVOßå ·‘â Ä_n)àšÊ\H"0MºˆYϰ­OUÌsq×¹SÀ5$¢ï_Ü*ë=(Â08,ëeMlÞ$¯·9†ƒ¯éAIµQyU zƒXoÌ~˜9!«ÆB0mGwaìï˜ïnèt(®¥†üM²ªä6éÝÕ—äšÉ ô ,øŸñ÷ƒZÃŽN“!G¼Ôs½-ÝÌO’ž±ø¡#C T’O¢=ñ»_{9B¹¶e™G(¿~2Ñ¿£”jhôå¿õx˜Dsë`BmYy•;¥X|Ñjà×rTŒî±°:WÈò&½¥3Vñ¸ê¡˜¼§6gAã|Ù“¦7/xo®Ü‘7(6O¨—â]b¹þLêCKxx®²æ!û>OaÛ¶{–£ƒW8Ò¤ƒç&Ë#îêèD‘šïÃ78_ÑýûR!âÄ‹qŸ’ˆ\sÿRjÚggXÐ)•–å<µ±»¡´a‘Ž»3FÕ—U7Ö„òXåÐÃza¯É¥Ý\Σ ‰**Ó<ýWŒ8k¹ÜL›6!l`³m +g0„c>×WWm—x(½ü'œ¦:níqÝd,#k©m£*–„D‰Lð?\6Z¬qÄkÔ‰ãVQH­ÇrÑ;âÈÞü„·¯Ã•÷±]I râ¢F«=m¹§ÙÞOX*Q9[ñ-€?Æ]Øk©Q½s*È^nº¼õw(„YXH½þ"7ײ-Z¨ÇŸ½UjöJ’<â…õ[Ù8æx·îh¦†(Ýj˜^¦Ï º×Ê#‹88w 1á¶l¡4p·+ UTps‡ª«¢'@Z` ÁKob¼5×T© r±4öôQJ ¿´då] ÃzBÝ\¡~ìv÷úâ,‚4M¬´ï²/¤@û‡ ç_õÌÖSæÍK‰Ümåâ•ÆG™Õ„T‚7´gÍò%£»®ªØ™v.Ö,¶÷¸¡:'ÜûY´N¯$²VÍ ƒœhB·¶á¯R oZÄ2@„P’³œôºlènòÍÇx§-w¸Zé#H)5¾¬isy›ÏWGüŠHN—ÒîÒÚ8( ά•…`4V7BRü -˜xAFŽàø9ÌM}Ò¾S`÷Ár€Lýã¿SB–ô7Bñ?B ?k!Ëü)z½Ù7ëüRü;Ø!i„&ªíê{ñ•)[}[àåß¾fé˜3CŸ©ò¿6»9w±ƒW@õͤŸÆÅ™à¡U³Û¨ûªŽÎf_™?·/8_}Þ–5×Þ 5&û aÿB\}w.7y¿:LÑX¤á<§.‹°¦ß>–ë{ñ |t™•aÑ­¤æï ÷£Är;޳usð./sLVÅ‚')9:¤Œõé 'MÜm«·O5Î?8Ó'¨’—¶œï û\ǰg’_Ñ®H¯ÙJ¦xZU ÄgöEßSŸÆ<+ï:þ*Ó£—óô뀔Zâb_I°/ÁuCuó,”g‡ÉñPÛ6Ï|Ö:³ò ÃúòÜÑz÷¹B¶*­å7W*õ &š<ç•Gä n_gÜ$"Õ›·ZSŒy­aà;À,nQŸR(B7€Ž{Þ»QTÀšh’3ôKq] #µäí L ¶}¸¶d šx3ʧÒVÅš§¢qc©T̵“3¦+•ó§v¥ý¾ÂäC‡ºÓeÊ‘¬þ1V3Òë²H’_4E,³è=÷üæ$ë»çWÐ]ä¤xQ¯ªµYJY]Î@«‘Ô–t÷ÖÚkPVkÑ5ŒLÿìÂ:ʉZŸO”/Û‘?óg¢õºÍ§MÖ#è·<Æ Òµ*z?€säm-F°êM‹5°”ŒvžJ4§Äv£„»JµRë¬Æ^ð®|ÄI©uæ—B’QÖæ5î—.9c§›œiDâž8;íke¼PL/5¨6e‹¿¤áÅà"*x*™ ;M{0gŒp Í®ºì˜š|ÄÁ‘« ‹ù/VØl SXé#ÜùNž"`¤ gP(ã4æ‰îßû¾u´ÓÌ!oƒöG0 ó;) ºZ­xÊ…"¡6#7Hºqø{Þ#iâ¶ÆF»kªÂ1㆛IÐEzBJd-û%™­x ä ±é»@&òö‡b†áqtð†Ϥ®&{øŽ´;n¶qðŒA–«/+OhB‹I"‘nhàNÅÒ*ù…Ê<}Ð íD®´¼MüJšî~/H@(qc(qr¾87Æ=¡:c€^ÿMÌ(hÂæ¬ >Rþ¥ 6ÿ+Ù»ª˜ÄêTºóWý†XÂ$¥²2íаÙðëFN-Žâ"èâjÑÑ4Ôx.‘Ù .SÈÔ¾ãÙ\0ñIÑ9C\«& Ÿ(ÐÃá•”QR÷ pª«#Š5i¹™W»Ú &ùÛ ´)-w÷Q_¾I› (Ë Y^²›ý¨¢’ æ&à@R? 5Ë”ÕYÁæ»â»Ñ¡¥ŽëLùE‘“B.p¤vžà\#¥]­n•¨Å¥àsK^ÏF¶[.¸o& ¬bVEdº§~=ÈCCp %ùeÐ6Rx6éÝI–YÙ5QÆ£Ó¬øB ‚@ÁAîa¤öY+V‰ïh@DÙ—t’áq"$Ç5”œ<õ&2Üiw–vÌø]ìâúlx‚£äź½ "5¬é¹±Ý)%£A]Ý¥:ϸÃþ!‹¡Ó“e·(åw&$¢»’ò«ˆ ÁJjn¶%ÉÞ®ÛEGsqøujÅÝgÿÁÑÊ*Í—÷‰¢Ñåaif¥bÈ¢_ÕˆSi‡_¸¢„»ä‰B÷ û¥PÏ÷J&†­G5¸jÎHáÑMs)8¦²ØðÉø5flÑÍŒjR…Òõqâ%&ˆ–æIEãï]ò ç×I¼FýæÂ|]Z‡ªËÎé²Ð%¸pF9 1®áœBç7Á¼ã“-ü6gñG0@Œ6oÖæ-:q/Ѧ¿GõCá"ŽQZÜĬ)ðe(G¥¸àt«Êð…–ž6âϨë"Í€µÉ<¨t9(ûž…™«ÆHã&<Õhš(æAÿ}å(÷ü“jsÃ7‘EµÌéØ.Ï݌ԟ¨èÑod£r" hmšPJÛÉ!dÙŠ«\óÊwú‡TÄ”±t•Bï¡›`¼09ˆw™RGTqsÉä~æeá›Y௠ðVšCÂð7{ §0K:·Ømräm˜;Ý¿vî¿ «[±.ßWBÁ‹sÜgÄHsÈü¨Ùõ üü5?8TñÇc!]õF­CÅõSÉeõéPª­(„¶àÿ Ï%¦9ìû¼Ê§ˆœëäw„ا›Íø”ˆ$Pÿööœ ç¨Ôyˈ_ƒúƒK`­'Ê©Y_×ìMo†w¡‡Öæõiƒ80íì_n¢# Wk¥ú79Ï(¹Èˆ¸’*EÎu«ÿz!Z(f`=4ŽîoÁ/Ž’‡®X¼P¯ÿ5虆é#´ü—Ä$×ñ" irÇ"#Beaãz[¸%ŽK¨e·‹³Ï!,M§¼gùf-[á{,47TÍÙ+ˆ»0B©z73Õ$šRYûOc^«ÙzŸ‚ ¹|Ê¥{¹ÿé¡è+êê–é‰ÍE`·í}Z‰´¬w /º. «UÂ|º+:ê÷„®¨Qè’é·¡{Ï´JSÐÅdzÔksJËàÀàíÚÊ’"ÂLbèËè“ é²!ð& ÊKÙƒA¼ÛnÎC¥&fpBY»<ºEQ(TX¼½ûvþJeZàŽ“JËš—ß}g> þ£qõàÆ $+“Ñùâ4߉*-MO‰é¸7T}e#»ppò.¡(ä»ÔŠ.0WZОûë!epn,L ì›Ë_u…¹˜‡8D¡FÂà‡`6ö¾È\„µPÑ+¼}…|ú¯ 5Š½Þ·éå*4ÙêÃé×O‘w:ƒ:ý…_rd²i_èÞã2$*Ë(Z2ÜCÔȲœLܲÎ\òn ^þ«˜ÌôÄ¡»YÞû”ãNGu¶'»KÔ?ë8»°&²|.q€¸V-‡“>5ÏÀ{cùÜ𔪒«7؆.>^ê>4óç2±eƒ˜A;¡RXnm„Î[÷ŽÓ-¦çdáñÉæv"ßú¼3šâê OzBc^Ž”ºö”I@Ö<°SÔŒr¶ªA æ¶'wlXJu/»|ìÈEÚJ'»–MÙZÛ嚀¹þÝûªºüè úÉXÚ«©_ú=º 3¸xuLŽ}—˜BŸ±€y}<ì``¬ iAŽ´Ý÷3ùE*6 ¤?óÃk£éçaNr²Ê‡®‡aÁƒ`rÖ©:Ê=èƒüʱ¢ÙªFÕ6É«=ÚÂ.ÓùnÖx¯-þÞ=e°v!PK2ÊÜxVž,ÃD©½.5KÁÛLR)îí6>~`­s‰Ñ¤ûYL8­]¢Œ«qêÀffö=ëgbW­~H@yOþÅ•ØVÒjobšÿ¼·HºÛr{JVmµ0¶YÌVö~=u|,}B`oº9JÔ=^;ˆ¾ba±§û™2åo7:â8 ³ÄMjÿ¾m{Q‹&ƒÞ’¸¢iÒÈÇzPXì\'c;=OÊFPOe(bµ»Ž˜}fã?œ¯#Tý¥¾çM÷~6hƒ`¦UÚ Ÿä¯1Äs\ZùS«°NB¢¡_2{™2m%€½ÆÎ[·¶4ÜõónÜÙLGºç, ŒhK 4mŒéí¶{?Ïž9\é´$±Ç ¾ Šgé&=_ï{ÕÈY-¹ûLö[Ó|vŸÅFAª`‰Â•´#¾ŠRG3ZCìΉ 7[ýñãq¦®_׿–#û*X¨é¤Û=´pa^>…ÈÀ;f'ÑÒ"KÒ8s½«Ç@¬W¼÷åÝÔQHdbo]‚ʈ»Ò}N$ĸ©\‚;æ5øÑïð[€|¬Û¨ÉÎ…ž½Çjj™ò£`mõþq MñVd1¡”`º3né:‡Nâ;+|š ÀÉßT0‚ú¶Äîe0åØT[õm‡©2„SãÇ?Þ†$$Ì'RÛéWm>‘uÒvÚôÑCì9óJ&ZBk—šßPÃKÝïíÃ8>N´6¥¤)Kï`Ïkn­ÑßÑOÙ±BÿÖ8*}S³­V8µiŒW”þÈ*×9®¦§´ŠCUÇz¿m¾ý{½‹£‚ÊO‹Ÿü»ì_¨¶EHQË& þº×õÊ‹‰IHÿ’ÂA•43œÔWTŸ_Z”™§B¬_.ÉVD…ú(ˆf›¯Æ+ûÒãð ½ÅrÀÁ‰œU¯®({Ç¡ƒæ÷u™¯ÿÆ·¡ ϸú &Wy Ó½]Cðx4ÝvêŒZ>¡¿&/+»(QÏ… úk*oGÞAò©<åMq©/Î7íŽGßÀ~(t ±>ÏÛó²PGm§–6ôûL·m#¯«Kb:ž®§üžBÚîFâñpÀU—Ü'ÐJ‹¯+; uÓûV¼“2ý;]‰ ÷É˳Ӽ7h™9Ðp‚Mž˜ ɲe-5I;áí›ÓóÐ&||º‹n7„ºFÄrÚÉÓ1Yð™#¥Q|¿(ÇÐyR¿ÈÎDqß$mVÃC©™Ž†´J?Åâ«7Ï)w Зê¹;Þ)´·¸fqçe;¼Â*Ê Ytb§J¨F¹ìKì (svO'§—ŠÀÑ>^ÿcNÞÝ>L‚é?%IöB—F]qþ'#NN’S¬›Õ•w“Õ3¯ùy›èù„À×ÐOçMÎQ²CÆÁÌS]¾TuPHâ/Øm”qÖ  GNº 0?¥Ý(hTQÙ®]=·%‡ ?¶Šò§/¤æè*y7¦U¶Î\G¹ ÔØnš'Àߘ!·ŒVšQÄUWbòfm4’IMy —?ßù?F˜¡D}"›ãûË xH|;šŸD3•qíÈ¢)[’úDLY¾)ËTAIcïË鶺@³«V,Yäç_`úDð™EoΩzÆ”L…ž«½CƒÛ¦ÿ1#GθdÉ•?Kʉ7î7rOû”³ pÎ$ÿÔ¸"¢)ÓfZ*b»–nbÁQ÷Ôøîý-ó±µÚO8%­”zo`‰#";ùj—“ÇŒÏb±zÁgÜúÑöbBKLŠ ?:ÖÒ-‹7ƒ<€ ºd íã(OßÀ¢·‘cÂà&ºþelfðfZØyújp7søv/ûO´Î4'y°÷-b˜ ¦Œ²e{B‘E{°Ÿz*$­­K¨  x"÷”-O± oíüZ¢¨¹™W¬”ŸЉ@g_*Ws+£"Û°À7@åת1Ú«“¾Û´0ÕÓ<‹‰¼šD) àPk½ËŸ×‹ Ú˜´ƒeÛŸÙ­ðoØjYôž%@véÿýi¬?y=#ÁÒjB»¤žOçå¼xQâì&u}èÆóJ S©Œ5Ý *Ÿmdû\û]ʉÄF4‹&ô_ñ>6·œ·‡­¹ú'<¹k‘£Þ1ÃèJé›ù»ÊùÎì5$L•Ëûˬ0õG3.LqyÀÏáGú‘ýyÂ_LõŸ£«/¶×7`í‘&°z™\«NV®ñY›äÂúšÄ޲¿‹f _¨Hw\ø"Ð 2_¸U&)sø¹–¡é€Ð]”I¼?w0çÛô¾nÜÂbs-.=ÈïÔü>Ñz™"q) æU„¿4ûjoì÷¥d¡•WI©÷IüwÑØi/—ŽØa£ûZWiÌsàTš|O^ÓäšØFxaŒ,J˜Qf<}P* ë´Ù/“Ø™ïvq²Ssgê»ÞÑ×1éQ ­)#–”ýû©€n¹‹.q¸{Ð:ÕFãže'­\ ø#\O8{hYçfî0»W?d¯8>϶\Œ ÃBVxy Ÿê›¶êð]®ɺĦ ªâΙ`ï}ý•¦ ø ãßcMŸW ‚«¦N5ó¬šg2ã3/²µ8äÊ®©2;’$KÔ·lì,ú̱pCŸî:‚£ÛÑM·¹Œ‚kú`)xB–³l(°­÷õª‚ØÝ%G½ÀÂFX}S=tGØ<ïÕ]_6f•¼MË¡2?FÈ3§HX í»‰1æQ–Ä2qS¡öÁPÝãÛNùH6WÔ…vü5h ª$ `Qo&z—BEBO-iڻРDˆZ¿su¥°qÇzܺF‡VÇúO¼S*2*º,Û aõ6oÍ{0™ÅA¨óƒ ¬Òñ™°hÓ˜~v²2»#º½jƒ›žx%B%Äh”Ù%»†]¼ÃB›‰‘ qrÁÑ¢Sð5w ],…ÚU7—Dãþ«ší„9°=C€¦ùðe=O9GÉëU­Õ*«‘¾À×פqƒ!ú;J-¾þNeñ#Ѻ›¤tžšùMý[ت³¸}¡ß iÌþ(þYÎÀìÀè®JÒàêîÑrò«lG×(ƒÓZ0œ¾—ü^ 2‘ò‚vMƒØ‘ßÕ ŽôeöÁGÀ n©ì¤óŠN5‘y—ü7¼ÉŠA Ô“éÁWrc†Á68 ŽüšaNÆAÅ¥P9?š¼Õ£lƒìžóê·¸µö!(* Ö³T«nFAº‰ç?¡ó@ݰ׹̡´”$âƒÿà×˺À÷ ïÞøÁ‚}òKÏ•«D¬´’]Ÿ5‘q‡!Ò'"@æ< @uo—lû¤@o¦óì¯)0¸ý™Èm­Ïì’bÓ×롵oëÕêNH9Ÿ §q’ ‡.ÝYë-²^´ÒpÕÃþ =<Ø+¹EM±ËÔ«UºH%]““zwçfö/#Xgþ'9iK%o²Úp¤ª£ÇeZKÉYæâ\Œš©ã.~¡IbkÝ$á* 0ÿGÞa·AU.8 Å¥pÔHA§ûÚïî/v¡û, 5dû‡X«ä͉qÝBÄLž‹æ¸ö‹ÙÙ­úCöU¿9nÇ‚vfU­hØ,Ý Ñ{ée³5„H·4¼à!,²µ;g±“¾G` kœÝ3Œfé±µâ•Æ†ÐX•ꧪá0p”$ŠW³îßêµU& C,¯]l^cêhè0ûô½daJú5€ruâÒ¯ú¿-òB~ÏÂø¹thuÕ˜âíý]‘ôÑÑ$ßr¹bë²ï\m$§áiôò4_'yúîÃ\¢WWl+õ¹q±G EËß5Sf­AÄ:˜nsþÁk|à){åóC&:}C¦,+椻…¸Ÿä1©P^ 4ñÙÀ:>ú°”׫ ›Yv;/8“oóãˈ+Ä¿n¾*¥¤ Ö†%ä ®þ·ŠM‡Ž›i÷ìÛ’üž_çR~Ën‚;·¤2åUSÚPã!ca«…`¡ºÂ¹^“?·ÚÔJ©¢t¹ìÙ œÓÖþÏ¢÷¹öÏä¹#v¶¨ ÚI8rH‰q°t!ÃèdŠÔéóÙ·(Š›øØE‘‹$†é’! Ì÷ŽÈ¥[O=Üe6Ä¢~–¿Jõªž8úÏäQÉñ°Ù“ø†HiÁŸp‰…]JÍHìyX,Š)t$'@:õ3û¬Þê¢ãWÇjb£Ú Ü÷†¡}¯\èíþ`©œGR‚ åiŒ~Ù90]öl‡`^8teªLÎeÏ•-±k'+_…‰fT¸õ¯q§ðLcsFi ¾)SøDß«6áÓ|”éòäv–Ðò¤"T6·”ÌeûBsGË'•rGˆ§sBh@eÔÖun¾i¤¬¦MÞo¶2iªÈ€A¯õg^µÏ‹â£.C½ºÎi4Õ3õÒNŽü°$G²³íÞŸà iÏP3ûDõ^Æ;¤”ÞË4o¥! rF•&«rƒ€7¡¹.<åªQ-Úȼ¹š¿IÊç&§&[ê¢û'ÚåS·0“¢¤Éš„ª¡i¢¹El±1sµ"S}+ð¹Êôè Ò‰ß a'n÷Ÿû,æ1Â:ÓSÔ°Œ‘AƒhgºÖSœjJ¨c¢KBÛ;ØN÷ï;–Nh²ÆDmL“ټ̴ rQWâþÄäÎzd«È³ÛV®?Tßšñ¹u‹è¤Ô/1Ú~N yçÆO“ytP* ¶p^Ÿ2VÊ%ùÒÓ8v Üª¾ü_wSQ’ò%°&;ÓË¿þc><ä&ºˆ£ä?.¢»pUǼ\‰%Š6.ÚâÅŸÇ]ê]Û‰„¼•ô[Cš‰²ÍTÓžü⥸NHŸ†„jT «ÁöÇÅxe4¿uéžç r¡&ü¼L‰ÔÉPï4›×}‡Ðë̚х¬HÉûx&Ÿ_ªå(x›-ᵋgŒ&Š•]ÞyÐlÀ¥t¥z ߘ5·SvÛ¢,VœW ±w-¦”o&ž*(q$v0C äFVµbêÁ˜L'ú•1w7}t `wäêN¹w‹?ÂlÄ–ç™ c¢•ÉV­¦ˆÁ’'Õȯí`KŸX`v [Z)ué J‘jnú'jÁÇâ,\ µ¶§n”8c/'±#>ÅŸÍéRñÝ£çeúõ³‹t<ößF`a·D3 ¯ õ§Gº¿0ÿF7»Š”zøo²fž 1v¡fH«¡#§xpWždù[W[ »*W]Q8ÝÏœr7”.Ñj™ý,æ¥Ì]Nž÷*ýÛ¨Û ïãS8s8¹­Ó‹f n÷÷˜Qé»7Ò¦tMYÐüÓ1a?ÒJ"kIle¸<”*Ç.Ê&ÃèÝÉ º®–ø´µDÎrVáûo¼1—]]÷ì ät(Dߨaû·óüÖ…rud‡p1àN¥ûŸ u¤):ãæý.oûàær«Œd®Ãæ{oY•®,ʤ+ïù÷ÆZ[ß{ogÌxmCup‡e½ø ›¼íTçà‚“(•œ Tt_ÉÅKšä–f#$gDŰ1lh—sl»2}‡ U ·åè+ÄiK#l%¤ÕO£^MÛ@CŽp~"½YÎ2¯l¢hqõÛ4 ŠÅë®òÉ›ˆýÈ:r`W£^MP-C*Æ`¡ù¿IRªf sçXJ;jåG'à/yÚÄÇ-Ð [!=Š8Éç¢ü£M†åðŽC¿!y¼ôî’‰F ÏŠ—%ó~j­/öJ ý±š5õŽœë ’Y'»ç¹Hh˜t‰áWNßÝå©ù9¦Îa\ëÓ5 g“ÇÔüRHö-D+ñŽ[-P­³a˜¬Ž«õ*ô/øÊ´°yÚü­ÊCÿyfkuãæ±¢ÆöÜÒªLâÀ» Áó±ZÂE4$^ÁäpðסØž³X§øþâ QróÉz=Koœ9b”ÂÐ}9A[‰_fH& ªžÃ‡Ûio¡8—ùÔË´"ÝI3ßDÔÄVD¨ÄDX»0˜D®C.Xß<¸pOùÊMa>üº_¹ïÿy5§ŸþòŒèBÖ!4k„=ÆN(ÇÔRÀtæbk¸äj]…šfhSÞtª˜'lGÁ™î5©¦µô9qŽy:ÜÛC+õp*ÞMв´]DpÄjùÂHI*ž…!Ët‹ ŵÒñÝ(3‰„Þé<óZ}a܃Ù<•u¸yΉ¶BÝåsœPyÎ{h_\ðéJ•:jFO/7ÆCþæ®NVù³CUЬýkóÅ€ù^UÉÈý•½/â´TMÈ€ç'ýna#±yhF£!‰j±¤U)D¯©÷ZN# Âêƒtüâ=<¬?ûD¶´`¬@r˜È_-ªâ'\ûÆA=X&*–”™†7@Ÿ–Ž·_>Ì’Ú\ô0ÆâIÿÕÖÅþ£F/ ÀZ‘ÄcÀ¢Œ€ýTî´ýþPð-6ã;ŸÏ~ߤ -°5é0Y𙡦ª îS‹—% ˜;;1ëxN+‡šX'gVR/êŸ:¤­hÜzStÖçùHº-tœÆ£lÊ=ì#)u†œJ‘ÖÛɺOÈÂí´hMú‡©!=¸G+#l¥Vÿ:ýÊ„0x'¢ÌJÖÑD³¢j£»Íƒ™SøÓÙ ?ÄxùSð.ñK¤ù/õ³¯e÷¥¶)àÍ3ÍÇëÍ&‚ä,³¸y}„žŸâ·Ç'œøÇ—>ò[»ùÇJ~m|z‡@ÜæØ²‹’ë°å£hwê[®æZnÇ×R&ü‹*ùxÚI¿^Ö3À‚e1fæŠå!dÙJØ—&KÓܘ½û?Õ:ÄÎôH„tm‹çòr»r 7.ë™H`2Ýóð3°(›ø^›ýu©ÃžËÔŒÇjÅP§Eüë ާ¥üÑü%2kà$©~£|L›¦1ºyV³tÐ$ më©ó!ÉÒ'‚}vbå“ÌlW)YŽÆ³Ù(_²Ïa$±Ä/á¼´@jNnIÞx®‡´'ˆ8õlTâZ9«'ÿ‰fŸ|z.tGñ]sí‘v(ôÀšn|­Ó+ÚDG-# ?xÍ•„¶ç‘]ù¼î„ ñ•Ó®{E!IÿÿæÝÞv¢eœ•’ß:ö¦28XhDÇo†jœO×ÞL´Òã?#pP+»ÅGË&’h #Áòþ2åuoliìljßÝàdò­n¸EgˆŠÊcå‡àË6­×`<®uk©²çY¤~Gs!ñ«Õ©) ÃÖ%&•@ðDà:&,øÔZnpÛb_&ÃwÁíS…eNÕlµ·H= å3ØŠXqµª1_ÈÇÝêI̺*À•‡ße¯õ€Óbnúøæˆkí' ¦»Mˆ˜°|¹ã£iùйê˜ä²úO?a‰KT£­GŸÅºÃ/>ºþq ½i´‡FN sTº©óûí;x*ä½»„‰\Ùn|†òäÚž{rΞµ$–-D"`”ÿñ`å" å³%)ƒz¢zÀsAµ‰€â~âß<ðAIê§3ÂK´Ö©êM‚—e4Ú1ÏÊT14bFrË[¨k²ø‰Ÿ‚Àå·ø°Ø<ñ\$"|éŠ-Mr ¤º»%€ÿÂïa  Ñ,@¡@@¦q×Hv,ý¯í½ËLÆé—i®l6e²ž±¢¢˜s=ŸØÏÜÅoh¢£U§zËjÛϺ°$ ô¿úeEG \ãF®®©…ZÌädè{8†2ʼÏI呃Œ.ëÖ8Yÿºª|À䬽žÕ4ƒ ‰à(-\õÙúãêTË›ÂÓà½ðÝö¦vM!‘bO5uÊ<ÄÊïyÅqPÖ£cWó3 MîèŒ Î®Ex¼é;Cc#©ùOŠ©nåB˜t{xÙ¾;Àj¢šYшÅ9÷fõÇÚ#Æ×RD1º@wß3¯°ˆKñÞ÷'‹z®Ó÷ÑmðŠcŠ+ð x\U,£,aR"¤ò8O$z˜ .kгL˜P޹MÔ EörÑT­h©Y>†ƒ°*=âMQdºàÏ“dÛ9±=5ÃÝbÔÖ#ïŒu)w ¥È°º™H­×9hû€IòKÁ˜œïÆyµ;6óÔÏñ û ³•Ô—˜õÄB“pâÂÁmÈ–µ-±Åw?ºÁpi¶DGÞlÞàœÓ3øKZ#85þ´ ÷[†äý2ökÊ Û:`VC]Z©½ÖªÈÅå ÅF“šŠpC¤–€ê·áæ™XAC¼+Ú-oíè”îqþ$‘_øjösúo⪠aÅülfi¶&f2Ñr—ô3i%PûWpK,‡¹ûNwµµJŠõ?P<Ïkì„{þ•bJk·~’¿³Ã–F© H~t=§Í}A§ÐZN]6¶³‰ £^‘.ø†Vt-Ûm 5JzQ+Ñ äð·üüÖháiÔ¶úúµ¤°½4ö¡9½Y‰E˜­^Ö¤Ÿ9|ùÈ ±ýšÖrÌ=‹£™àø7/¨vøoµã‹©Ê´&Õh§pFhá-ûÈÑ œåð0J'é9´ì—¾kÐÖ^Ðh‚ëdÌV86ªÑ½åo-<ÏÁÂf­UtV³&m×zÏn•0¦Çq°þStˆ¬¢ýé•àäÑU<»Ó8`:©Ëñ¤*0t±–š;Áp¡RALŠ­”Mß!™ãÃôK)ÙÛìÙ£è*#~kKiéF…e¡úc¹4ÿ~©´³.užî3T{|?E#[¸!ö<’Ùè¿*D±N–¤qiôC R¹%ÄB¾GU‘ÎUÛÇ% ;Ž"δë¯,Áo­þç'_1‚W m§\‚>,dÆÜš„`ôýè"¹/^¯'ç^g”Ý­š™ï4îÇ«¢KCxN'8WíîV‡’(uÈLúø@[²v ÷ÚÔÀ.jî~y› @Άß.¼Õ FþËÄ^,|ý{ìSMÇ[·Áu«˜ÅÂ"àIÄR7Ìç% 2©rQ°(¥äZìVQùÆ/¡ø}®tµqƒéqå ±Éør®t?5#ô/WÀÓ®@ ä÷ g¢©ºÊNÜÜ08¢K5O@ñ!íM 8$^[CfUÒ-=øN©öŸä™[P6Z--ôÆiqù­nú-«†;ï_4°E³jDË¿OŠ5ŠL¿ú^‹ˆœÆü6ëXŸ—Ž¥âÔñ‘ÉÇ©¤.¦ÈW»>¸¥æèÎK ~"Ö%Y²¹J{?8*=òι.…m“Ü£ÆUKææ·Ÿa*½Ül’h2Ùb¿BÓº¹Ü`ÍgŒ±Ôa]GGõ¿QÉï™ÿ©±Ç Á¡C»èHl¿™ÿíÉée¹† »±Unµ<ÓçÇ"aWfvcœ1 àoLÍ+ `´ÛxOš.¡†Bò`•¥§îWð×3Ì[2¢2&IûvÓ÷°D.»Fýp<º1=èê´0Žn-™ t ç𠘞C/¬ 'c·%‚B쬬Wõñëö£:H™`áæ.馅(1¸ëÔRˆÎ{sàÒ{ÍQùÄÈA¥ 5U’ í«v)Ûá Ÿoå~oC{iNeô|…ឯ@~}^D”ã=H1}1,W5gÛc”q¢),tò¿zͨP ¯sÌÎÜæ hþgçä+ öŽs³ªƒGÄëÝ´»gi›«Æ¥æ·æ˜qQÚD¥Ù¼Kée‹óš¬é$eQ›ñÙÕ÷t…±™¯ôÄƬ |]RP5Ò‡é~ê^µø”G/Á6kpð Ýè'•Õ)[ïÐS1ýNÐÔò¨™ tuzM‚XÊÖóu‘çê‡Ò+¼i[+<¢¦6V‘{ŤrÍ6Ux|sÒy…$Ìñã¿{å™{ô"ô\!áä´3”E1°—lkzÚAô,Ñ÷;裋Ïð_HîÖÓ«‚@xÂwgR̫“U÷×™_–Wõº©Ž¥¯¨ÁŸŽÓšáðø(‚M¥k­ÈåLàÎÿz)ÇÓ˜ÇTˆ‹Nò„Ò£[ÜÀBë.±gv|õÌ™Tâ†YKÜöZ –ê#À7v%á›Ê}_ãÁ. 5¢±~”ëÆ/$IhjÝKx~Ô–öS¤#£^£¤ÉæÑ~º0˜Cñ,' •O ·ßSrƒ‘W•ÞC»,ƒfâ&˜2?lVMמÇÒÂkº<>T}„ÀtÏkM„8“vÚ§;få‘*:·|®ñã_2@e„r`¿[P_ùBÃŒ/èGðræYxcaÖÄøkÆÎ,©5›…CX"àr4”¥@Ìs²ô[úpÃÚ’]_~ÊØ¦æIìÎ5=HÓýÃKÅΛŸÿvX¶zú ˆKPqíåÙ “€åPÀkàÌùްý ÅF·´šûD»YÓjbá{Ù‘Ã_ÙƒÁð— ; ¤…¼Dò÷Îe·)<Èßµ²pÑ0•gÀÎÙCªž*Šƒj2]0æîhcµL!ù¼3<žÈš{}rdŠæÍÖN“[Ìw‰Rª–X0rå-˜Qò-ÈZÁ|:ôþwŸHO#ìI‚Xö–Í~ãZë"Qp}™ayQ†÷•é=/H;ѼË)\¹3dú7a‰B×ÉᯥsÑ“®4â[[^ñ³$TVuE¬Dݬ«@€Ëáµ_Œúó˜¡E€ÙlBq3áa´Wœá0¶›ý»Ì·=ƒ³€/²`ö¬‹ÃKIŽ>`‰÷NžºŽ<Î.Øã&s5ª`Ñ 9ó…Æéc@O„wŒ'VO¿BÙ]Kw©™ak24 * 2ï/qž”Ø©MæLiB&»ì«Ì®n‡„K!DŸÔ4‚ÅbYA½œÛÞ0ŒßÃHsÿ-ïz…†tžáѨ€÷xI¹gíÁ:g#uC ݾv’Ìݶ@„è_ŽÄz¸Ë*äàV˜¯๕›ÚlLh%W*RY¨³À²>‚­BjŒ¢^âXDNÛjÈíÐǹZ3ë±t¿H¨Q&TØŒ¹q˜Ã¡$¤|æQLvwü¬ ì[ûÖr³E}cÿp*Po·V¿˜`ýë:qȤɩ¤|ëCãvÚ´-ã®Aå„e¯%|bºÆ+:*Ô¦&^Õ…,€*\ãu(é6S_Þp‡- çMÔ± ëe£ï¢¥ÎjD¶Ë៾cd‰ú˜ø8úömþ–ïÐ܆‹¸¯CÒz=—`]T>=7cŽãl¬¹‡­Ô‚­ÎžJ3ÌZÌÚû#þ_X… K_Fl© —²½¸åôzÞrQ§hBÇ—Ádr?þüæ†߯æ¥<6/9›«pMÞô±¡ÛÖõ¹xh¿0c¯rê.‚ä©SsP`3óã¼½Ü!ÝnÓ C啸/ ‘:p-—Z¥wÅJ»áóޏúî×hŠ,Ÿ »"§d\u§­ B\Ùžž(R®º A—sPX% v‰ÐâA'(¿7ÞE:=]¸e˜æ ß2þÒã7‹jrWÏ~ÿmG^ÐûnЭWñ13|jçG¯øN‹Øzíþ©‰4Ãð%iY_ ~ñflh)Ÿ#¬ÐçÛíæßÌ5¸IbÐCYR4LKf½üK,N¾@ei¤˜ÞÄw_YÎVØ—*¥S:Ùß˧eÝ™Ï95›"ëW«he<8 (ÒÙH‰p¾›<(ÊuqI·„`*1k"yMK®AºÃð7³em$å%$Å8Ñ×Фxeާ˜T&fŽô8SHl¦j¦5‚AtxgÓ‰ÃPÁÙj¡|½¯êyùãÊ~·hôÀ×r§ñŽ»îÏ3ÈY«û:raV–ëÇ×£€t4®õk¿DDDi&ž™ÛtÊõ&À²é“ßEòZËÕœ2dþ›´ë"Ó“}²r°m¸±ü'E uÏ´é—æ®éGÖg—ò’SIïdb›÷+2—=N%ð·Ï£À"dz«}óÑ âJ·¬&å³V}€ ~Úˆ_C¶Ém)BÔ‡¶F-X£R¹œÎRŠÕÇL©‰V&´öíUs„û¶öV%–ê¥pþ7M¶)uü²!:þËCÀU„9L-6Qcミú/þx’ÎÑÓÕ? µ~xìKš[®þòÃO&ɨÖT±ZÞÝ íƒÐ¸õ³$;Xá5­¢¨F9<ÿ««“ú+ݽ\ XŽšcHHYê*¨|9Ó¸ÊmFØŽ7S-ËäÙ8r-]r?®ŒÌ`TjˆÖ—˜ýSïÛ72Œ¦Iy¼;Ô$¢îÀ¥jˆ}ä¨y!{HJðóE”ª8Âa.@Y›X|üoTyÚÔN –~ ïQ:£r#ZM¥Ù*ë¿©aÏçñdSî&²ì{”7°& •K)¤¾/œÊ¹¾öû〞0¹3b«îiHK¾ˆfæßztš’tK`iXfý®p®BKW€XHr…™‹P'Z¾ßC[5£1ožwOÚ/ŵéÂD™—Kæ‡ÈøºeÎðOÊòTöÇ—ýϘÔPF‰jùBQDK‚h¾Û˜* ëÊ;ü>Û%ÿRršÈW Ùâ ~ŽÏ9Ö€]€åšMù ›f’R÷ý*ň„7E¢¯’Ò¬,> Ú‡/†oÕnÖG²mÞ ]Õ(ªu9)³>Ýr°’пu§)„×ølj»ž°]eä&Þe‘ a*VŽFÂüôô,ô<µsG ãsµì\&âí¦Ê¾öÒœ¥M’;Z'¦ùš'e*Ù¨òèXŽ‘búÅ þ¸úík$ ør+_u‘¹Ÿ4RªîúNJ¸ç6e$Ez7òä•ä' ‘Ä4ž!0ß,¶ûŸ‰±¥[…ZPÃßË€Í6fgþ,¿ Œ¥\kœ~Áfï>¢ VQÇT…è.• ÛJ%4Ké:³>Ž;d ³çOq·¾‰èÿ¶Ú支o¥AO:ó\077òÞd­h˜C—0{›³eæn|`y_ÃHŽá¬»D!‰ûˆç.Û_ØeB%ŽaIÔ° p¥yíñÊ/¸§&wÎO1h£+’«ã¦2 B/¡Š=é;zKúiöó[uì[!¸Ž#:ý Ò1Ãèý¬‘É?–[ç ŠèŽWî¨yeBe;QD¯† ç‚~¢7x‰ýoµ&YŒ¸oÜ-ÎõÕŸW䥹_þÖ4ƒp Åò;oùø/ªùrJ’5Þ3_•Ô…R›YP;„ÇË‚„.¼Œø'Ví÷_† Œ©=ÁYäaMF & ¹íæ=K —¯Á>¸‰n˪Óù>"Qz¼,ˆ›é¤`dέUDÝÛÿÁsóàaµTgÐmt’Q^å(/n¥S,¾Ö1¹1=«6Ÿ×HP7Ž¡óò‹8HeV‰7£vîaÈ÷"ÀYR“h@éì¶á¹Dðën²½ßý5 Gwކƒvúk ÿx~e!EõñÛ¿öwX—lL]› ›Í3‰±:þøÙ]+öÏŽ6!ÌÒ÷Jåtž÷œ2¨úr gg§Ý¯Ba1\®ûŸw´K^\)èÿÜãNH}ó°~²žÃ˜½BÕ2NÔØwÊS„@±úmT È3"µã»6­ÙkœCp7ó©'š|’UªÉۭ¡Õg’“¸ÚtjØÇÃl€åʃX&½äŠ;ösâÒ àáþ±äi©lâ]ò@ð¢@ï >9 ‰”¥Z$€!ÑÍE®Ÿ9†–HL¯²[Ò·zåÎÍa]DpvÉ•8Ñ"6üÓQjs”en¯˜<,Y¦hݵÌ*†©K4}ªÏV¬¼ì\«8‚wˆñ¼ŽÍ{2ä‹ Á±uÂ6ü¬X iK=Ïf«a ¬ªFgwÁ…j/ÊØè©(;ÍL°¼“Y¡6¥UF¡´€ÓOø¡*·*J¦ •Ã[.s­û )üÛM—üG΀ÇiÜçuH)¯¥B@ùçJÔÏ%}rpê1à¡üCÞȃ{îAÊ"‘õ\ö4P ”I<Ù9èºçIéÞó27 Øõ´<мëÊXäP÷´z¸ïÂ"é©1(÷ãaÈÇ .Õ^ z¢‹Dœ Ÿ+Œ[$õ¥¥3÷$¼w>^±Ó.cêýÕ‰¤F¸uèßqIÀv\ÒÓµ`Èùs©?0{òKŠŸt)8Øuô¶ÒxCð¶7%*U¨ëõ JçIîU»0–D«ÑPŽõ9ŒTÜOL6p@gë5€à™xìÝF2ÛØ ;æ]ì=rÝ$ “l]k]µpùBB >M}¬Tÿ™¸oãdI B1‹¹Š»n@!ìI^‡¦â}âò>,æ…aIt5Ù¤Õ‰eMF\݃»ââ?ìì…sG=WIÉ“ôk~`7|—t%ʯT›ô9ÁÈ'ö(¾Á:C½õ§K Ô~ý™Hÿ4UÂOãYná \„|…A¤þ€/þ®!’ dÞ>w»ŽQöæ×íû…üoÑ©}둞ê#X¤M”zì 5LŠOd”÷üëqe¨ ø%ùTú`ñ—÷”å²/2çSÝÈìïoÔ²O}--ÐIçS.„U§šŒ…@=Â÷ЧPfLŒñðÌU Ïݵq:á9Õù VpôŒEoõËBIù7Tê5ª¥ÄÏÅìíšÆê7üˆÃSö™-›0²vŠu ³¼æËgŸoŠØ¶éŽ›,,ø©bŒŽNASÁ?÷/ÂÉL1–ŒÐH¥¤Çʲ’Wtœ7­3!©í€X¥B„Î!Õ¤aoèê>hHQÓat^ìH%g ïÙ¶L´´È×·%i`4$éêÃÇÚ߸lç±/8(×ïÍþ{YéW{Ìó³Ü%Y…lKÞ»5ïÀP„1 yZR¼,x•²NñÆÑ‚ó ±vÏÞu—/j~›Òkãg£¿]ˆ»V¤¯ Êo̵?‘&#"qªßoïM#’Ö;!µûZ8㫾ò#EÑìŸdÀ§aI€kTN³êG([¨[ñ}ÕÿÇYaIŠ–#Aþb*Æšbm²¡#’·ÝˆÊfÅy|QõstÂxgB˜…¶ÀF}ßÊÇ*³êÒŠÌDØ­Ý:DÉ{1u‰<Ý$!Ðñ$J1Lú‡ ðûÍÊøtçÊŸ¦> ¢±I¸÷ÞØ€[P÷—½_ô ›³<‡×öð}vç˼Ô¤Fpd›› ê6†BøkÖ¨( ´Î«CÕM>0-‘Ot—ø¥†ÛØ^Zà$x‘ë·k[¯É ftyA€†+[ —4E¯…óJg³R¥^´:y8ý”Dोºmï^-+®GªæçŠEÔ\Æ-þB\mÀ2ÍP.ÜÚŒßÆV[òUtž¢ £aíÌ–ª¡íºö¯w·ã H)$·üìéømÞí66l­—©¿+Ÿ 9ü׋Ž}ÉŽá¦(0¬Æ7WÊ%¢Zx]Ï÷YŒ²7F %Ê#y1º­KÝgùË몺zs6©“_‰2 Eû;ñ°ûW\&-p?wéW 0âSs•dž+v@Øú5Ùú±ÙÏxàÌCÈÆp‚%yXçšš..<ÑÕÞx,°©̰Ѝ£§b´|«³äƒÇFRñz¤§(Y4°®(0—~"òúÊÂ*(ÕQ57žg7f°G-tùª1ô×;^‘æ_þ`ÿò7Úxufû(BÂêGP‚ðë..ƒä,ÍGN$S9„ Bûü¼ñ€"j À íK2.⬬=ý‰ð–ºÔt Ÿoód=„¹ %p9r}…üÂÖ×CŸ(f$l›ìw›½®®w䙵cS )#mî×þhÓ§ü×îVÒºnÙPíáR^…nÁÏù³©øµ @ˆàúižþi ó¤’Ãô§/N¤'sßVætÖ–CDÊ­—y¡a¨ÀüJ[þ¢.åÁxªeØ&ÚÜnB<ò2¬,ùxéR™G#R«èۆȄÈÌ£xÍ,àù•ç~Õ™‡‘>h"ü½ÖÌc\ú1 :V ý §¹ææG&¸~@Úû(æÐ"}Ú5&+‚JƒOº_gq‘å++gªßóF§Ñû[Ljì&KBJ‘æa—ÐP` ŒÔpçqVXf\o: RavÉs'ïA©´ÿ;”g㦌3âjמ1ñ¤ ­Ý»Lôd¾”Ÿ•¶á‰0æ€Ä0쓆è廊™,­ š°xo™Ð 8zÙ}‰=Ÿò¡,Œ¿J0ÿ%ŽdiTdzžä²üŦ»êPú¨ŠbŸû¼cT«ò³MÕ/f‡‚ÙO¡·‚ýO©Óy1,¶¯ö«j«ÛE+F{ž,fÎ!}²Ãá™ò[?¾C •¤•œŒuÁBê¨[@á'¥»¹ŽÄì=Z@§¦BÍx½=q¬ØÂËËÙk’éǽ‡4{69TRÁÊAdäš;ý*YP ñOSÚ¢µ ásÌY†»~Ø™±›O*Š_èæ€ ±¥¸ß"‰Aäö‰©@;¾Œýâ„ò3îÛdŸûü ßàŠ‡§–ËV&µä¾èÞeU*¨mÈóÐÓà*A«m‰j¼Dƒ‡®?®æ¤þigʼL½näã(XçÚc¥£÷ µ10HËÔ‰7H—†ü*K¨÷¯è^bßp9(1*Xµ/÷MlZÎP‰ßÖ‹¿;¹cA‰« Œå…ññúÿ®ÂnV±}»éÑ·'ñ!°Äïf„ º­S$×F§¾Âˆ"SMB¦ý& ä²ýž65SõVW›‡/µÑà²×z½*(hí|?ö¸Þ©¹cy'i¸Kr¶/ŒoÕø9ÉöÍü z)½‡ñÉÖQQ²^âº\¹_`£ìÑÿ)ÏÍ^¥b)lÙËïˆùIý AØ”J&çŒ~†ÿ¿¹è²z²ÒÃE˜Ü¾/1QÑ@'±!ƒ¤ï>¿Í}ǯûÐ N¹uo5 Óe]é7sêaì²<$–(§tFIì—›ÑÏæÓSß]rM}Áe—¥P;ŒèðT×{ß«šWz¿f))¹Ò'²³'¢-äM@O)†eÿd}y ¾Iß)_•ô!„vÆo÷Íga}Äœ ûruѸèÃ0›ô’Ø‘‹OGXCÿ» Lð”!¬ö±NÖ²{Ó& ¨!WÒoy»BèÖ°\•öqq¾õâP$½AO¢ÞùZMk§'ê—2|²BÚ'IffóçÍJ{}RÀ’.w}ozT¥øUÛˆy=s'j©8¹Ælª(<ø/ØÉ„éÔg l9ÊܲøN)˜{Ž2‘íNÀ 6¶Iá[«¦YOh8aѾÁj’h<ï£ÕüÖÈYµ[]GóD¢•rVÝê¶Pf]¶‘<Å4™<¬mV4BX¥}ÆŸ|FtfÄ:¦¹0´@äg=7à T‡Œ$£ÌÇaøFüÂXÔL<"ö¢ËkÇkê%§HR§Ð™ í9˼ʵ½#´2¹¥I\mþ’Øw€n |gBAÇ®wTø3X/¨&Ú®·ê¨œ70I½§ÄÙ FËèÒÔ0ËòpWšLV™²(år…óó'_îæ¸¦<*»yúqEéA'|1Û‰Z,¿@ã\!^_/ &l9$¥8N?,™“–y1g‡_]À XF >34V¾T[|ßÑ‚”¨³%áÑ̨æÀ,-¼äŒjÁePÁLÛWí'òÔÖӌꣶ~0Í ÙÑ„Øs¹K éÀ:J¹m±d䦇6xòŽÀµAw‡áÑQ@&n0ÄïŸà?ë9ÅGé}4@W-•3“ÄNþ Õm¹Ã¡4ùüÉûÙŽž=š96ú¶=>ñ`fÆÓ^Ži…êdØ ¥ RgþãÝêC ¬ˆŸê™ÕPœË?K)µD]„„µƒÇëM:é$‘Ü.TaãÐl“`®é©ÑbóÚ YéµY ]͉ì‘âÑÜG‹_jZ§':æk¨ÂûÕD‰:sgšý ç|û·ë{<Ù~©ãæfvGp'ûV£nydÖ270ˆ“"Üm#j“[}¿St®½{Û-O¹àjøø\d ì²Ý»DsÎ)ã;½ÖPä‘6š€0y¶´?]; ñ ÙùîFlN |6ÃY;šüÊ›–†Ì^)ãv%^½‘D‰ù@ÁKrJ²ÂC Q‡{׿ïTÎRSú«Þ–Ö×!Übc—eÂn^Ôü‹“ŒC-÷3‚g¼ùt´kKaVû~ ^\õÅ„7§ _» vkrYC:Ômw4 °ÖÅ¥ýÕÓŸe¨Ñî[ØÅdÓüþ ²Eäš2 ÔÇ8ú»Ó”Ý,ÙÏ%Ü5¬aR™Sô§1±˜6 Óˆsy#Çš-ûqéWÿKÞAÏ£Ö#°ÞTÁ¦¥j:’.T½u á©=FÕßn‡Ù6…éù@i¦ëmuüÉK>Àžá)MØÖŸ„²­Ãtƒaì|/cjÐã™#”Í]~°C ) ’íá·—{,wbœûÞ”‹uÁO »t™„RœgŠ®˜AºY…gPy¬PÓ‡› œ›ŸŠŽ…ùI1ýR[‚/ʘŽ¢mà¶ðyŒœýªH³û-EÎ4ˆÐ4[‹gÔ80N/JN9 q_"‡øq$§Y§$FRºq8Û ^VX/ǧj“€à«¾•ÏÔýP‰Vj1ÞºªDg›Rx¦³5jž>ã?íó†°÷š9œ5ÜõZØk®w[bx®Ü‹5k™iùªw{>RÁPaU™ÈEÄ7IѹsE%èl õ©õã%y_ü`Ó3Shâå{ÆCˆðó­èóµ<Üâù}¦vÆdCK¿`Ñ„Ið°4 ºbæVpþ1Ú˜ÀwfT¿&ïô$±t¸ówd˜Ž8¶±­›ñöèõØç•l›­‘þBÅï¥o`,û³å@Ö7þ“GZº”È4D}½Ìr·óHôùt)\Qñ‚¨éÍõ:"1¡«eÎŽÒhñÃî´~áÞ–¹5/;[VàÌ5_&ÝäÌîÿ~.ùC0öPòÖBÉ9m …nZ¡­æQ&e|Ü^F¤ñÒ¶¼×‘WlU“†g2¾3Q_¿ì±Æ(Yë“Xߨõqt«÷'XAÌNÎŒ't1< àJ=L|”»± 8‰=Ñ;Cñ³ØÄŒqMú·ä©¾‡^MŒZÄèÛ$‰sx©í8Žg²kæƒÝ¯CSÎý}6«ÖÚà"½]f àÙ…IÓ™Ùa»u@?nP`Ý)vì–>ßÒ,€Íu…W ]Û_°Q ÔaöJ;¹Íu8½\'uV½1Ò˜Uâ‡=×BzÝÀtB]*ÏAªË6F­¯.ºöR|œ˜Yé=¾®f ТÖp°ïl w§¢J^6iP9kV%mv^5ȪÐA÷ë^±xŽjØÎ“CŒ±—H¨ºJQ\îµ¥»Œ<|ˆ­0 áJÜ×òVÁ2ø˜½§mî˜lœ:ÕERö«D"»„Ç b=aÛ½toÓÏ›#;­Ý _cØ8©ÙFŒ½Lå÷_Éj” w¦ç¿âwgÍ?¯¼Í‡àF¼p¨ßÅÞ×x§ñ۞ϧñ|ü£è²fÐÔüWø¬©áÅ}œÛ·¯Ç)¨·¨G)7gÏåãºN|¶Þt‚ €Ö±¢ ó]ÙoygàØÄ°t~¬ŸBÁâõeȈUIÓˆG2$Ï:„ hQÌ@T4^|æ¢+W¥·Ï‰ÿÄOì’׸TÌò᩼ áh°AÇÁ’Ë9 ÒÈK·?/‹ [ …î¿p)q.ËKôI)éáÉWÍâªHÙ61Q_òZÒ ¼æ²i˜F‡d‘}„c‡’/«ÃN¬£åÔæ3Ê{ ê› 5†7´ð:¹†¯NŒÆâ‚šé‘à=®®-íÚ6•‡nYb.6~ѵ.éMÚÈŽ_œìó¾fýîÛ»ÌdþÂÿUîá5ä`™Øe*Û&4ý^NÚr*\¼[³Ë4b cà‘‚†T[y¿7£¨"VÚ°±¢Ú.ë§ÁŨyBr¥œÙ¸1"Ù³ÀšsØõ9ÌÜQ–MdžVfN½¼B7`ÍÖ,~£vz|MÜJåÓ‚ÄíÁîð÷ÿ¯¨Ö¾r‚×P–ÆB—Ö!%ûÊB ¯fÎèm(Uó7:D½dŒHžÍ'Ãøæ$%@:¤NÆÎs©þŒ0õI ­¸6jÀvEœÁ«ý˜ƒ&쾿 ˆþ‰Åƒ^BÉRMù;Ç€€O‡áÕœç#Ï¿ôýAªÌ™ŽçaÅzòÖ̃:/ÔËÄJý¹fIq µz23B2[|õÂÄ3Ÿ°q7#m—I¡ªÒaÏò®ì©«š > ÞÜ´‚ w‰=4ˆ$u+wVG”uIÞýJOģ㘛Ã`¦ÒCIО'µEÇó¸Ã¾˜làIÁ!ÑÅv‹U ùFѪMžÙ„h‹Ù¡ILÕ–B´`õµd= ãrDË‚¿Ù¨TÇ>zQK&I–0‘~¦p=Õ¾ïæ¸VwZË͇[ˆõcE£r?I¤ÃÙ”fÔ;¸ €£§’QcOl@H96›ÛÁdØÃDN¼áúÎñüƒ¬œ ¤©ªìÒ@YÍ#E®€N6‚"^:+fV¤?av9WL·E!ô¨—@n™›4¸VU€ô¤ÂŽ6*6XŽ,&ÜB`¶–Wº ­ ¦ˆ(±•c²qO#VÉ€™ º`;Ö-ÁNÚb`ÍrÓ®z± 3øq° †—ó.¦GâCŽÊPÓtÜÉa!4:²=øÇqÇnÿiH¾z|R•ƒ¹[™ò¼«ìÛ„Þ8y j@£ïI,Œ®@VÖ•RiN"| ´p•LÄú;CÉ:g‡%Ìüþ/¾Ív¹ã˜‚^ÙÈL³ˆ?|­w©ûX7¾ËpÌð=w„&9|ò„òÈmaíoS_ɧ¾B;{á"¡›2ùÔ‡uâ½;àÊ_¾Ò<¦f¥˜qêëA%Ñ¿‡0¢„ nðm¹§²FÅÌ ßÝ0!þä EyçäýÌ!ÉÞC¦ºT`ªežœÍUp/q.CyúÛ‰ò¸Öš‹‹Ôü"ó¬º8Ào×j£m—.£ÜòûûeÇÔ°; Ó w(n?Áž/Ð ÂÙæ×’"ðýgölr4¸;÷œ£0ín ,AŸ¼o0=ç^zcK^Ïׯþ‡¨†€h×é!V}OǹÄß–R/ÓŒÆsíû™„÷.lomãPxÿ´£¥\‘‘àÇÝŠ®^£;ƒT7 謾$žYùÈ üKýŒ·ëÅÌvˤFqÐp>³£ç÷n|Šƒý‘ 2©¸’.Ð!Éó¼Ôˆþø,Æ—K¯&iåÀðŒý«Ÿ>Ðy–FV7³ŠlÚ‰‰7· ¹‡‹”_3ýÏp/ŠJП lIè¹®oÅäSœh÷øVO])½cl|¼¿?Ç1Ñ©OD…ó9Z$I]ûAGç6†™b¸òÝ©µžvöbuS/!¨¼—…5x¤¢ÿ[­æœážˆªèé}:Æ`hlµÑ;;y+)Âο®ÞYn‚çþºŸßçþþ3”‹GãߤØÁ$a@º½'(„ð.²Êé·'«¿ >5›ffܸÏU|oŒJnl}”æÁóÎÚK_–§·†ab¶ êQäUÿ[Ú·(¶ÌNQuË_ײÙwQG­ l-€*xtqÆóÏÓ·§U.2~8jfÕ±—„äBŒ¬%~,tǾŒø¸ÔR-/w'DwŸº¾‚†ÀëÀyð³cf”¶ ™Œk2vùˆm—´1J6D9éÒ§ï‘p.=„ü–7ÀeÈ;6脹øà¿Õ¯ŽPŒñT¡÷h *ðºóÃVú‰Ô°|ï§;p#Ôß‹³„€iç…䓦©•«t²„S¯ÙòhíäyjÊv½*"B5À’¥/¨æ°_8¸_þ`£FIÍ¯ Õæø3B‡ ×B°N™%[òòÓ´.­~ÑùU)âð¬ñ•Xêîýµ…á1{<’YØ;CgÜ6U &ºÊªØsåþmŒeSd‚ïª×ϳ}Pø¢-ŒøèÒ›ml ôCÉï¹ _Îæ³ádɤ çG>¨Ý¯! sKÃIý>xä –šÇHBÖ8üổâí¼ñM/v Í Qê‡ÇÅ—ÆæýƒN·õÒ˜|g¦9õzˆûÁ¾é²³£3¿q£v¬ñs€èËÇPìv õ@ÈSûº„^yîýàícˆ§‚!°±“ȧNÉÛ-) ¾ Æ}ôV9_7z”)\~v­v†ƒû€m ”Z\ßuMŽo•²$}ÕÜ9.Œ·ÛZ`Å$¥z¤›Ü‚biIÃÙLX+­1Q/“¼ ‡ÑxÐ'Î÷¯°ÖbÄ0 ?¦ƒþõÄè^¢^_šMDghÝâÏpL\[eñõi}IqyÉ+˜ÄÉpÇ´êi´îÔšö%Xu{ºËGÈ(Jq’¸VÛERE.?å®mN9B»³_®UI~Ø&îÊ¿]u\:ºs\¬íU¥ B «ýɃr&ÒOÃò倨ðÍÔP}8ÙPÛäy_ TþPûoÜìS{‰ÿ•£ â/&¶S?ôx½•Åv%Ç®wÐ-Gæù®ÖT$ÎTˆúØw:½ˆwDôÞÕ^M¢jY¢èÚ_„>¨PâÃgëd`ÃûÙ褠TìkÄDm·lu®÷M}öå/¾`Ù³–”“<¯¸ÌÊØ½4eúØû\<¿ÊcrØX¡–ª¨kI'Ú&òn•Ó¢kXIË’]Û¢%oešÊ± T:æô§WØï>†‚³jr¸ž:Ü1AÐ#f˜ñ«/ŽzŒc<Ìy·$9¬g ý:¹é¯ÖsáùÜ>ë/Î9ò€x ×äêûtg‚.Ëð „Ùw?¬jC4èÕ´NC-¡'!•†žG3°‰ZK¨7ÏÅpX0Ÿ·Ëóì¦Sƒ ôt3)Lx{³DžÿBÒ7 «ªŽ­OŽoyçAæAW5SÇóÛз„w~´_{d]}–êý¡5Gp¾ùéHëÖHëAçSg‡Úp|ZfžE$ûæb‚Æ·:& Xû8 ]–ž´‘ŠÒ§µ>z=”¥ït/;Õ¦74s»ÃTÌÐ ¤ž£€P´ªG `óBñÒßñÈŒ É?-õ ¹øí‘`vœóâ—eMzrpgßûŽS;ûIÒ¿Ø£b,Ä?‰üÁ¥9“‚”ûºîÔ~ÏФMxÏWä¥×}þY5ÈáN]|F[¨¸§ä½ûìCì7©øx`­B³{YéÓ4¼@ Õ`7é&‰5Ï2Ø…1ªQ°„÷]ÁÖ¾HfÆø{yå· HƒŽûº‘ ÒuøøƒÄÅ›D«]ÂǾ)6®fæ_L®ÀÚLý¶Üt‘VˆÓ@2€Éú€WS¡/£Ý¢"&ùöÍT9ìÐ{á(7Ï‹4NÏQ»‹ü‘S"Ãù@úv,Þâuf¢D ¨~Ê4M–€›è<-Ó'‰Á+uC÷lÈ©mºü’ˆ)äRóËöN;²ù©ð¦l;k_ĹfPK^žÛdÇ^B½VŠÕ™` µˆ±‚(›¾ûà±›^Ò¨éL¤°Cmêƒ+4Ÿäœ|½VœêáÝKùËÅ+eJùøöùi»rמ% ØÕ"¬Mµt-{Q‘‚'jøJ±Æ²²g¼”•7·Ñ‡6Ø`Ì¡àë´Hƒä9¨[ïËëkÏD5…f—5Ôj~S"Ãè;È-¼NŠ€¼öþci.;ÛÀèÇ>.òVƒL™TÊ xvU°zNÈ,ÈÆ«Ø÷Qþ·S ÙL1ÞÕæ{£˜êݤÙrëçÎÀMDØ äX$†xýÑä´Ò\©‚.gÄãÜožìò‡¢¥^c°Ú«]®ŽÓñJ?Äê0†òé:b±Âœ.v„¨æÊ¬ó6O¸· À«pu?£3>…7 {¯ o°Ra«*{ý Œ¯9¼9¯Klß±Î5 é,SxbÂÀÃ)!ÚfÁß 3ÚÄŠûàænN6Jm~0Þ~V`@ÔìÖý R[Ó¯Ã?¡‚ÑrtôuW@ð ûŸU‡ßìn8@_/ «ÿ‚vÕ_Xû… —ãyŽ˜† ctžz¹cTuÖhN!×iübËßPô58'ý:RÑÕÑõà0€ßP:Ýmww˜9§'X=Äõ 0·ƒW¹‡Ös[,?y nsÕÖÛe£ÜA+¸Iÿþ2w¥*ªdÛx–öØüéQR8«_Èâm O!H`«Ë ~äú ¬zŠå«(mUíÝ( ”ú` kÛ(òµÞÌZQ†±_ÂÑ@?L3YÆ•~@ÏÎä ®{÷º’Ú_Xü(9ùbÊË''ªŒƒHÔ@Â,}#>1˜3ÐÚKnl\—j îÌÁW„$N[Àå–\Yœ"JÂR)€šö*$Ðjã—° qT|^v)‡èá]†¯ß‚*ÕB7ºb_tUFŸæ@ÐŒè½Ï.a1|wd0Éù)Tø ˆRÚÔÊ ½~£xÔƒrí>â6âC¼DEútŽý3â]ÀÉ)…j2E"á¸!åho ^À‰î:¾§6?Z™ÊGºeÜÛ^jÜIÈÿÍÞ¡Õ&ú_Þ‘qS+Y–0ì]zá8wZ(¾=Œ…a±×òõmt ¸9'‚z¦CóWà¼ãè£Ö™·í¶× ò2«÷ÿH9.ýfvËÜÖ•'G[]û–á8ãDUÿZµåÌ Þ€Åø@yúeÿ[Àæ¥OÔîúS¬Ú}\ ©:_F  L¯2@Ä—¸zeíýè–M̸ª<’ºÐOÎ,òÜ ½.Ì'‹?{Ò¹i¸dZ ò‹:ƒ_ÇŸR¥ÌB!ËÎÕ†vZUt¼M˜ ¹ÎÀÑŒ‡p18'~øÓx³ýXð²]ê&@—È~5¥ýåöÒú ^â©§užëÔ´*„fΉÀò¤Ù7ÕJ}NdßUÿ2˜ħ*SY䤸IPw=õ¦Xv”µ„j©/ Ã‘ãNjԈ CíÃ:eù”+L¦´ªe MUiÌÛ<7‰ÚçMðÀ]ŸÀÓ[Y"-@¸ÇþM ¯ÎF\ªµ?’aÅo Ç„ù¾:þTÎS–cÚ t°xvåô°lP@%ûÞ™öæ့Ô#5 ±­n’Úzˆ1ßò—Y3ò!°ÔB¶ Ó úÔ¬äø…l ‹WØÖå÷¶Ìt.m•È«úœ¡OÛ@òMìÚ¿3×ÉÂO+t2\%•F~"6#Lè](R´!W§°ºl_eøx ÓIÕ“î?´6âGùÿ߸…Ö#/~°+aÖÉÐküL\ø )¿=ƒál;J¤Ã®‹WZŸ~'ܳRŽ'¤ñ‡¸çˆ®M8ô¼wŸ½mà†Xf=Nµ±wå°öz,%;k‰¾wÄÒÉ×>*ýävÏÀ8’‡Ðpdó'Tg½dÆÙãÚ}k{,ŸÒß$­«4¢F4!.À¼˜cŒÒ3^Û 2Ö/zÅl$C룩õT Àh•]ünuè(ž¬wíÂ1šˆäX"”›;ÞÓ»õ¯6"H‘|*±Öl¸€ãî"å6§¹T™YþÑ@¶˜/'$ÇêñZ]¥2D Xbljòg<¦ ù ò¹–§ªî¹h.L¤Vý¨Æù ÔÝŽµ‡ýVBÅ)ñ8ª® ðµRØÿrY©)! {"[¦:¾Ñ"³Nm?É”¤Nb³ó‹#8ÞêB×÷èIU'—ºÍ&‚K&Ø)$ÄëF%I3ýä>ÉzHˆN_Ö ¶Ð%måãåTbWãÿMpš¦óçݾԎ.I%¾ú, “›êÄŠÿàO ˜Jó£™u¹7ñû3éŠÖÕ?ëZQº&|·ïó|×!JЦ@UÜÅÅïGÌÄSÕ)y¢-„;±õÙ3¨œ~ÿÐx>™|µÿú͈Ÿ½%%!À›#âÉlXÇÜ/ÊªÊ X×9QÞç–ë æ ¸’¨bèß͹¾h˜Æ9øIàˆF] VfýX™hPSºNÀ^À˜¸c³±Rø‹<âú@]Œc|Ü×”\ᤡîp9÷®4s%·s©d’Í¡N5úÕÒ¸7Œ½Õòè]*j縪”Môñì`˜:†ùö,§“Âc¢ÊàÔ•”Ñó ´ƱoêñÌéªM5uíGõÊ×Ï}Ï©Ú̦®çòýßDÆÄJJ!ÝÃ×CnY„ŸN*¤÷+˜bYÅÌZ£:ßöy ÉyÈ‹³²eá>P”÷ò4•ìÑ`güƒ© Óøš]D;²l Ö]9"n*º¸öDNp3Ú£=Û•‚Išžµ`™ ¥AºÙ,› ÏÊßòóïü2Ú…ºYpaÁ0{$f¾gD/¶Þã>P@¨/K&§Ž¸]üœh øÊЗƒ›w¥{!Ð& <§:/Ó)@/wâ5•[|}\jŽ…•Ç]Ñc|õCŒ #Ž…il Í[ç¶ ô¯‘M9ôÏx­M¸¡[ïp`_h1±]ßsÉðÑh=îcií§z!»HEU®×‰œsëŠÑЙÍÝáˆ6ºÎOÉcHŠTk\k6 ) E•ÙU¾‰ƒ3àbÞ”¥ÿ8ÂƼÀðÝÝ’0iã*°¦ˆ D&>K“ÖPÌâ-©i6 žbÎÜ.œ>E±»~ëñ ¨Ù5¿‰+3Û)æ·[†ºÂ¾ÉtóË¿8bX„Bre}+-ϽLEß¼&ä‰ní.Ï$üð`°š¿M<¢1.c„îÓ+0Çöd ®‚¤9æåjõƒûö‡þ+LIpcÓ±#idÛp²3yNÅ÷׈9ð ‹!*-—KŽúƒÞû&r0(µ§<wC˜Ä¢zû¢ÖŒýñLÒ7W“×9 p0(C!»Š…ñ…5Q ®œ@¦Ä‹Ü;žRS6† ûú«³Ð+và`Žd–X„ÀþÑÓ•ôPÙ#²Ã]Y½ ZêWI”Lz‘žU{tµM¶Ç8i°#x|ŸmOl£CÅõy4¥µ@Ç2uÓ_IÄ´j+Õú{|0÷­ ±A²s‘åÖ`’aErë‘bü6g)Cä2ûù,R2*(+×ç‘EýKMçk•+tŽýaÌÞlR¾µÜ±ŸÝë±ÔR¥y7Xª y4ÆâØr‘;f·ûbizEí슶Cù] (ÑÕ~¸G…fe,vþl“i†k½}Ò¾yû¦SÄ®–AÓÜ—.ç3 {ÂKä\nÍ%zF"på¢m#ó­Šò½Y‚[3ŒÕ‚ñðü«ËÝ ¿bFß³b<'EšˆÉÿÅ­z}#(LšJyƒ¥ÞªÓø&KS9TÊ¿Ó Î,ûw‚6Réý†JB¤šEôç˜6ñ' Ù“Âg›¥÷_v¹Êÿ­é(MÍCç7º ²Š¢ìª¨v–ØR@–ÔR8='¸‡~LGÆìiöˆ“ZÝHÁä¸k¨£_¯õaBÎÐz÷4G)ÕT­é,p÷qíþ½ÿf9^GлÆàOv0Åcr#º›€VN/”E¬nY9nì9:zé˜í¢@þYþÚîÁ¼ýÀ„„×,ã—Ã- O4_ï¿}¦|+/<¾ÕS­ J9·Ê:ö;«õÜA/.׳Ç$†ÅO‘<“ BPXü>CCòäÈ鄎ƒ–sþ­0&è (ÑrÛÆ™í ý¼KäÀb!)2©aW#5‚³­ÅŠ&ÕÊÏåÖs(Dvûól7PéÆ7¨-äƒÊÐ=NQšS®cè <Ó Í}»‡ žL×æÝ¬¡WaP"àçKeH>‘o ð$R› ðOöË£ˆ5g³ÃåGVŸ_"ñ˜Ë`Ï9)@*\̃q°‚5f TšgBÙ#ªýÛŽ^Qö|w¯*Ö üi›Q¬ý¥‹—˜§»’͈ø·×NpTlý=k ÜD£²éFÁÂ}Ù\P†Mk,êqjHýeãmŠ|ª .ƒ$šMˆb­Ïù¥ÈTß|ÕSÙïÞDÔÊc€\»èA‹ÆD&§`c€©Šž'#¸Ò>¹¼:ÚxŸÔcWŒÉ ^ ±ã]ÕË>ªäp~ïù_I „W>ÞÍýFcõ‡Zˆ?€Fo#z®pÀ4¿‚ «ÚÙú;¯)†3zíqò<1ưtw{?>±J‘Ò Ž%VCb„£L¬#ûcpåF9` ØÙa(ÞÓÁ±]4ª˜Ö?TIaT€ŒT÷[o T×Kf0[dè@M^{¢I ø­³luë‘ç@”?R*Rpñ.;ÝD }6rþWôù¿)Œ‡:Rm”M­‘ü½Ñh‰Ðq`“td 0å>íÿå±'3Œe¢”A+“0º¸.LØš^»[Vd:<“ï}™…ôn,NŽ“Žô„‘Bì­õÛAK“ÃÂ@góvª`ÐHô‡k’ÓÀ²Íž¢Þý® Îv ÚZ†ÃF³vbõé(þF$éíwÝ—H±ü£šh´WÉø¹%á¢$Y’b /ñ ‰D¹´×­¼%W¬–örPïæ¾•ÿÿß "œæØEoæ …@ÎK™) ̕ݗTíúÌÙ&OµLPSý@2:ÄÝS¢+x‰vÈ`P*yÇNJaÅK^JNÓ<Ç *«®y°Ñoör°øK52œUZIJ5]þY4"Ýõ(À|lÒ‹ÃåÈJDèC®« ¦n¡õÀH¹ù#8ÝÎìKGjð"Ñ 0œºñ<“=îýÆZ&Cz–J\t¾ÕóÐÎ÷«†<ÿšQû<ãkþ;^7ȸ>. ±¨å¥—ü!}{HlœZvBt즖‹KíÌS÷^Ež€ÇàtéÒ××(YÿE7 Sà÷=ÊíÈ:z³7Û_ä;Ì!–g/ºpÄ:–?98„¡¤7kö™³;SEbœÐÌ3Ð5R7‚I‰Üë*Q‰·Pâ0‡ti†:¥`‰d I(ÔËÀÔô6L£])[¢ìPÎ,¦ÞŸÉ>;§^ž7\Þ³«’®oú1ªà‡£žq·Äî‘o'Ѽ²ÔhæíP]êg6lÔ$þ€—Cvåà&ÜI ÁëþúàùSù3æûžÞ Ø;w:3®î+ÌJذ~¡Jgù“Ü—*qòÀ7†V‚¤1çT›Üù£¤j½ŒÈ!?^{1ñ¹†x˲îK?ךÀÉEvZ÷gœùí]!%Ò0é—’à(DØn'ø_° jI®øbççî”-Ñ9g¼¸IyEœ í£l…›«ãµ©€ÞÑt™ûŠhäüî¼§uB$¥M%1ˆõqåù†t¿‚¼Ú )¹yN[Ù1 S_ŒEÃwíúk£BìtÈõÁ渥ŠÄÌd_$8/®»™XÞ‹ûز îž«oê™þïÝ*+Ýxø¸ m "ªŒŸKøX «xY#ユ.Ü5ÈèÔr®k%åð"î?x€Á†Ž®a5Žû;²o`â¡ß {"DÏIzJ ÿ«<ëã¼#t„{”y-ÎOrÇÙ…Ï—wúm—n»à}U$w@âJBç3CK¶zä3(7ÜRNŠXc†eiÄÆþñ·uúÕ/ì&’2.ÒëÝ9‰ëÃVÛ8œ2M€¯Âƒ¸@ÈùSÍÈgb»©5æ¿ú²¬T'Ð:m„,N)‚ê¤P´jGEž Êšc ihz°&¢_áT¢GèŸ Ò© AÙ»µÓï ¨¦÷ìµQò+£3ñÅÑÓÅ%DjØlö­_ Þ:»jäQ„‘GІûuÌY;ú?ÞtbJ…ERÌ&‰¥ÿ¬Ö&:ÑÞG>b rÑÿG%"ŒÃ>‡õöœéJ^=ÝhCgÒR§ôHæ‰2þŸ¸“êoØeÚ>Õ@'ð\£óSatäÝ'qïž{tLøÚ†d™]löcGê!ݪ'¯GíÂÆâxÛb·në:ó³×L4b_G²v„ý Üöú—åE$„n€þ-‰€ägé,ºÊh ‡Ç<=Ö¥n<܈Ê?pÄR6=Èôv¶}¶þzuµSÛ:ùÏH8­æÕ©À&ÁÙìîÍ–HKY-´‘ÚÑd,¹®²ò¥Áø5L¯ÑØ}4ør„õ[X,€êÄ€ÿâ°ò}gMkÊ&àîŽÖ¶®Ü^£¾•Í÷§x~Tð„ ÁAP.#}w>·³ôìb:<@uÙ;\)$G÷t.žÕ¥JT‡Ù>*ŸÔ òéÚ–#é(Ûáø'~Ti³fɇ½º”–H/Hé,';Î"ÃÔwß6¹¯Â‘+µ’à¹ó2ï›´ŸP#QÖˆe !øÊ"¢Œ»Qj—$”pZ×R‘M<·ßÿ÷c4Á¾šênÑãÿŽ]©‰á7_Hw|jà1-n0Aê€RêèÍaš )64ù…FÐð²xaÁ­°Y4¹¾ÎŸ1ëræó›$JZ´÷ «.gXq‡½çɤ¼¨ Ö–-U_8vV½ž¨9[$-¢^ªÈT¿Þ$1pª®zâðΛGÌÛl÷Yá1ýÝ3nŸ…£Šà$–Cg kü¼µÉòѱ®Kæ¿Ê[ûìeŒ‹À¿÷õ‘¡p£’…À*šÍje¡Ú2Ç,ÁÒæx“Æ­’Ý¥øF‹ššSc®ž Þ¦´Âô†Èó&…bÃxñÝÂ×*<¶ý!5ï:›è¯7µà þNÄš-å„ ï ]Îóx™ü^B›*8¥UVb:7^!˜Ö;ÔÆ$[ئý7[ÀòS€A³Ó©í@'P£óDiîØ†¤ ‹!"noI"T­nPTVŠ_´à:á:G›ß_ÕçØ´3DLñé OêkßôÆÓ$]þñ\„Bú¸Ì«ÑÒÍV‰>|Ï(t˜ëŸëj áh•–Y9ð4$tdY×£(•…𣤨‰ùkCô…á 'J®ž³ìóÈ®²ÀöW¹—Œni­ÑÌo`Ët.gÄ j^žïHwù“`Ùˆˆ\ïƒtÖ*ÍÍÆ2¿©Å±RN±‘|,u†ý9€±MëÛ=;R÷ê¢ ŸÇ­, ^»&Ž^“¹åààìÆ÷üwxj’LÛìÂÝù³v]¦²…®{Å­T:AS=œtÎúñOÏM`º ÑkJÌÝeÔì÷+‡E—q_Xç]•.Ÿ¶ck:ûò¢TA)À—áÓGi±©„rü—qœXV2™­wvÉÓfbCÝó#ìêÐ9ú‚@It±«pC> 9ŒésÕ ¾îe2æÁŽËw€ÊT9…fö+TF=N€­ÎÛÑ'ý_‘¨uÜ¡3#÷òßId‰¦³°Ô Æÿ2†Ñó'É*´Iäsh¬Ó´1».xêYb‚+ê8IÏîÜÏe0é‰~:=€G™-&D$}o³Š4ÝÉLÊSsÐLzÊš:lµCígx-±1,þ¾¥ÝˆÊ¸y€g!þ$WG¬Z[ú¤ðIKýÛùpœyCå„"}Õ¾C‘ÁëM²¾ÔjL ¯6 ™ªžo„h:ÞÒ†âA¿Œ|‘dÎúºk6«”Ñó  SDfkΈìß#„ÃëC­Á0Bg_ÑeRIÖ+D}mêµ®¾wrÆÓ¨—2‚jÊæ¥5Z$ʧ¤Þ\t ;»øªÑ,P ý÷–ü¹oS¯³ÙÌ,ìE÷|v¨­!“ž0­Ÿjb¼áø$lXƒn**ª)üçìÈ‘JTrD“*à›åws¿1`\‚æJ$[Êk¡Çœ¹ÚKÆÛýPp»Ò©ð€NÏÞåµQ¨%‰Éf=–Ùjq"!uòoÖ'a¼½Ó„Uÿrú~òaڳǒÂkÁ‚”ÂÔÎÛ§ÌDf¡LX@Þ+ê ɸæju…í=u¤ÿuWÜ2·d)AO}ˆSlž7:ÎùUžü%ßNu=€Þ{e«D4è>Ð&îÝQ¬à, R\ᢻ^V–$³‰V)tÂqæóʤã¼ñÖ (•”¿= ¿”± ªb«íÛØ>BhKSÕ ·€0™Ùî¾d¤Ù=•u”;m蔢W£ß7!A»YZUÉ|®*.°9gQ :væhÑ}^‹[ÒWû÷5ð€Îr› ¤QIb«Dêa®Êk1y2Z©9±e׈/rLfµš•–†9ÒSŠ™´†Ö§cñÿ,BÞ|i©]8u8Mºô£­¶¼H ÊiÀÔ^3¸HÂ_…áÿu"x>ú}_P5pïÛe6¾úâ°-®ØW5æÜÏ6©[þšµºÿÕ”˜Ž$¢â‹]k2ãèΑˆò"~¢ßf¾µßþQLqxî|ªTxw7~L©?Šƒø²_9%,œû¾òã£ÇõÐY ƒ¡3€Õo³$œ7=wf AÖž«2y#¿'‰Rø-D )^í®ªT¢“a ®¨УÉT¶Ÿr@mÃp!Ä+N£.?‰þ 4Ãõ]C¡|çŸÞ5yÀ"*U? b…ß2Ù…2™ûÆwñ­VW½àé–)4 Èû/Ë«àËÊf“È éáþDny^"×»QƒwqEÕsyÕ=-êòsÞŠ.-ÙNª½_ºÞÞO¨Çȯ î.õm-K>V:KöÙb~j¨ì*g1À°Cœò܉ŸÉGièh™{œo*(õæ½îs8—“¦äµ“){‰µL¡sT†¸c]#ay—‚^ÚåÐ`±_°öh ãCk ÷«&%áÀÁŽÏÔ^$]RÅ%Ãã¶þÅöá*D68g"'øóÛiÂöÚã&:‘2ÿßx×ã~xx¹¹ž6Ž>£é­–›®ÆI¾ZÜ€è{¤q)jO™y”‹8_Éå³2𸢮ÙV9"±L•v_¬b+€ Í1gÕãÃeë常yæ,)}½ëlj+F^KèÆÒ܈ÿ J)TáãRÈFë½C©6Íþ®¿j¶÷ü0ç„6À Á\ÿ¡#=²äá íGI0`üÕE$$Gc{0ZèZ-l%á|â9Mj~ MÞu-ró ÖèM4¤ ®I*ÿp¥öi«ûBÝiFJTËŠ¥Î„Y›,ðjWŽ $Õò²@Vyiûe5ÞfÕ”OÔbQ@MÉù>Öò©¥ÂðG9@ÊÞº—"æiWH›‚ž)¨V%"áP^E+ªEçôTuö ‹ %åSB#Jüft§¦¾v9®"ՠ豩 I:Ÿ}~VÒêÎã‚<#üx¨Ê#‰õí_Ù¹hòå’ô4ùª Ÿš_’_ÜQóT+>× C?‡4ŸÐø¶öôÚv¬qÈpm0(>h/mÔÂf âÐ> …m=Ì]™¶JaPç2~ª-‹{;õªÛ¾š­È%î¢PâØX„WÞ¶]!ȵÄi²Àz½ ¦õÕë¡CY}{2Š÷ÐZJÐæP—Œƒ%ÖëzC>ì‚Jtk:¯b¤„ÎF|}´3üº1fÔN¨^l¶K£>]r­‘}XƒËÞµ-Æ/à]™N´c‘P1‹ôÔ–¯MYýS¹Á'š½¨ÎxMèƒË#—³fXÜyOKíèíeï*´‹éٲŨ0IXM]$Þâ·],aAÚF•áLt6¤]m( ² "®^ÑxomtáôÈ4”öE/´ü—–ö´zµ3gÀ rØð[¯OÏè×f f•WŒª› «•'»SHÑâ8 øu¨{)mhZ¾âÁûÍÓºg@~Ñ x@Vg°œÞƒèöóél]§ÜE ¡wê’\Œë+±lj/ɵ¨5ÍĩƕĽW=^vÿñ…(æÌ¤noc ¸ÏLp––%¿ù"›]8’““ î!¨ŠÜœÑVx]Äî¬Ô/ƒ¾Q)†N!¨b¡ßd¤V«Ü<æýpzÒѹK¨wí%Ù…£p1L¶°õ<¨8MÛ˜ƒB,ô¿ç }I5Ói2hwÑj¢x¯÷Ö„ò¼eåÍZ÷p–‰`bî·—Á‰%××-œw„Ë˨{(ð÷Îàâ0!ò,ÔaH܆‡å-Óp{¨ îÍVqŽŠAa¹u¯aNG>ɇGL{ýfv9_×ãvÒú”/–ÞØ/ô+y+d(ÄIè¨á™ô‰ªw-±g,NÏ¥^ç-ªíÿÞÐ/ãúb¡ÂÍÔn|ðzüë}f iH CTñZN+d“kàø0Aí{9ŽAù ‘Ô’ŠW'Eövú¿Ö9l°sDdÏ8Æ€¨D+`³Sâ®Añà‘¥o³vÚÊoÁ¨„<1ö?–aÊ虪³3r˜üÿ‰QyšUit®_ 5îBÍaFsG.Ù=»<‚2A5Hž2ìÅœÌ 9ËoXÀH³F7é›lÉ8[¢Žs—t˜ !58Ù÷Wú ðÀÔ>qbÎ Á?g–oHÇ0¹+7ÊD½…Ÿðš€-¾Øó’6å3;K¿j@h¨û}óHuÒæëý,¦LÝE<,ÞÐG±Û—Ï3Ùú8-ÍÈ­rÁJR´OÌIH=ú?æ|aÏöý»zS ZûÊ[u+ÒÏø3U^&äëð Ùc’m‰{\\6•â^ý\Xeì³™¸s'Ц>8>Í"Îæè­ˆŒƒÓt=!×Ûêu}Q® ÚC6–B8 9v)lN IúŠ1Ì"Ⱦ†¬‚i´Ó{ÿMbù&1ûçš^]¼âÔ2À‹Øzƒ»€ñò€wn÷Ü øùÃkÀZPD@ø©kÇ,v6Ÿó³¢ê‰€À³5°P?+#–2É,uÁÄŸÀ°[Ob #3Þqãô9HqÁÌMN/#Ÿö“„çªFo²ú}xæR*{’Ä»ü”ã—§ƒt$»,c²}iƧtÉG½}ð¯ ÍÓW)å"»³¡—æØ1Å8Ì%ãÀ¬,tÅ6pÜ/íD¿‘ ”ñ¤$褌BÑœeô=Ÿ®øs¼9k_âEt1{Ñ•s/º¼mG¦ƒ£TUd”¿‡ÂŒ–h™± WŒ®u*Y¯÷;ã+çeÖkKù&ÎB‘Y·°7bå1ß¿V–ó?I‚)2©Ú>÷ênƒ®þkXí0¤rûZ7|[!Ôï§Õ·\Šr-D£~4_ .ß›û &.9ŸŸ;’J•^@¥t Û%c 0~{‰¶ÆÀ¡¶ÓEÔÀ^«Ø£`û ?¤W˜ÏÐðPliÎÊCfXòŒo:$1VV~¸,1kÌì<ž®§@|?3"šŒ„3ªÚJ®; bùT¨Ùï±"³™óðò=íq£S‹ne¯&Ñï÷ÄþßûdL¤ƒ›ܨ,bÛmº|Ã0w^™·¥%°‰öu¤°¾lñÛ㌡Ÿæ7;cö˜Xæ£?ƒî&ÉÎÏUþâÇÀIYbj}”‚¶©Xe~{è94ì¨ÑtG®<µY¸nÉŒÍ_FÈ„baÖOf¹‘1oô¯²â3ÀúwZ|”T†q{zêQ¨ˆ§ Á¡öõs%bVî$†¢«òXÈ‚¿Ï£Gê[“Ù6$Uy4â†é77iqz"ª Ñãl¢håG²)\Bñ Æé¯óa½Ç²œàø$× VÜŸ_D”S™R4ïæ.—Â)/ÐÚœQK-â鬥úÁ{Éo!@®ô&D¨†l£˜¥Ìðiâ^.WÌÌŸ–ìK+ý~ª:WáF–•Úp Kyu2ÔÓc9(­òÕ„–ke¢ODÍå©Uƒ|Âa¤es2ìÄÅ}±Ñk°KÌ(Ka„”% “Š·ÃgTOi¶Ë,ÿÈ}X±ÄZÒmç“jš9Gx:Ût€ŸÈ{1gâLç9*œn@.Ti¬ÕCiŒ¼2ÕÞÕ=ÒZ#¯å|8Óܾ ¦‘¤jDѲUXßh!Ÿ¨;g Q*‚9pècì0ØŠ0¯-ÁÙ©·¾jæ*_ð7U½*Äm "´QþÜ›¯Ö®¢Ü[ð±ÊÜ>X5Á=¢Þζ¡‰½Î”‰CTç<ÿ4w¥àC¾Ü2¯eT€`ýÐ% õ¤ô·”™ƒ«Y=‘À_ÇÎc.|ÌÅ™U®©m©`å¼Bξ&Û¢Ôx„BLŒþs%ÔLªn>Çce?`ð Ä0˜N ¤ø9#,žFÚ•;uªû®,ì±êüƒÑeu!Q£œh 0|vYµŠ6nPØS¢óÅwÿ†Ô$VTú»š’“/3*ùš{¡ö:ãÙæfã’Õu?Éo°o¨Ëáɸº¤ÂXƒ4ÅÏÓꢃƒIöþÂÕ©´5j_)Ë0IÓ„°uâ9A0늒VE|fÞšï·Dñ’î'*Réðgˆ,h@ª×¢¶æ~²ÚI¿9¬¦¬‡útÅ5ã8_©ì7Ü¿ïÃ_«U„‰n§FìÝ·§³ ¾Ô¯ð¼Rm4õ{† 4°Ùî¤jè§q#B³Ð ü\‘ȯ Ø#`ì›# ’#mзäøíß èì°Ä×EØ<)u%Ëå»Û„XäÌÄŸb Æš¶[î1³}¾%0@+Ô~ʸƭf/t¤²Ï´:n%z’`^KKÄNN·6,®@%&œ)ÉRDy/×W0jמöÄåTÄíÂ]F£oLm‡Ó\å"8ökl €»»ùºØ6ûÆb“ws§#„a£îXP_ æOÇ™ÛÛm¤‚ŒœyF OT—­<þg&T>A—íÊÙ{µÂžn¸ÍÔWtÇpRsxZ^0²Þ~fýhmÜÓí 6Âøê!gYU=ÒX­$´‚Q‡½ŠŸ3N–û+ˆn³’PcMG|[ òë³"Íi¯ÅTi¼­iÕŠÛórÜ4OKç³áöQ넊ì6­¹Ñ]=±M --ükt1/ì\ª4„™oÂi ƒ;W7+/y£RÚ/µTvԠˆ`ÃlòsÜÆÄ48ÒÎ . O‰øŠk2h5 ëž›—¨ïôçwe•ÓäéóF’™«ú¬Ëg'h”Li:ö£ŸAæ©]¢­OA4àX³2iÒÑ'¼VŽÒ·°D~™´hé\ëóa¬˜›]ŽœNB»oGf'$ÒHó"íÜNfõfÊôÓW6ñ¯ J³ÂO=VG+lÍ'õuOg@Dø°DŸ^M²Ç›°çˆ}k–/ÒöÀàÄþËb% •XÃÀy8éàʯ‹yóG|¿pk4R§]à_ ʉ(Uèx;_œ ,6> ÞǸ‹ê »´1îçÑ÷EììQ«P`(¬#ü]™Þo®‚ÀŸi_žHXëM¨ b0­˜ürÝžÛäõs˜{ [‘ÖNîðKÜbWÍžåN˜SJ`ä·ãGõ,HnÙ8Tõ_8™áxX }2æ×Uý™·E% 2û¹3yÓø5¾°»3ëÞ1¶çtJtŠ©;"HCö0‚°¾Ëð~ÁQZ¡r)FBî·PÔ”ÞG$%Pà‘1ň’ƒMŠ>ïΰÚe‘iïìøÆÅÈS†û£`ý¤³SבOÑÅçq®ëJ{±yè*˜ \LÞñƒ†ƒòôÆD6‹Ì­e-ò»kóŠß¨±Ö*ŒMÅ‘eŠE'§Õ&)ñX 0I døÚ_1ÅdQ~))~`XîéVIZ=Áê?`VÑÍžÁXOƒSáÕ@–v-*>;v0Âyˆ';„8þÂq\D›[­âÆrÅ6hQ–¦žÄ!-xÍßÎÉÕµll¸i;½?Ð鬭FÌJ£•7aï{#cÉ8¦¨÷S[ãûS\äæÞP¾…M°àüÙ9E™Ih°<_Š–X²,—KTŽf"M’Ø%-Dö5:09ßåó»ÅÕœ­K¤ÀO}u—½OW½ÖÄ®¯ç‘”,bnî—óÞOP[.˜£P%ôj_D‚s—(Wµ “˜?¼bÀÚMO1œ>ú6!7‚ÍA#ÊÊj§‚žê*°"nÐEEùQ}9M®  ¯¬Rz¯úô«v]Äl Ö=;í`\‡‹ ôúØ961¬yžAâ1m(¨ôù›ôIæŸÂ³òÖ¥ù-ä>ArêOý•Ziw±£F³\!\aÕNsªU›?á¢-+eª€²†^ª[J—n ?(<¾p-¢V8½zïék¦Q÷Õj¿|â´Úo²ŽN‡KY}|,ÔYÿûÝ£öe#P€A'ðãO§ 5pfPˆˆîâDж¾-ûòKƒü~v³ØÉ 8Ñ…ÎvØÛþ%msÔj¶f“õ»‘˜j=ÿ`¸ 0À€(UéæËˆ“0})£¤é†FÑÉ-IfE<ªémT'D¿-²%–ûˆ²D™Üñ÷ AÉ! ã`­$7’°z}Ñ ½Y%aÚØ°^eⵆ>rÏê[`ÀɪZ¼-ØäÇ mÏ ”çŽãUpù &»¢¶ÍCCÅ­îI•®îÞ޲Ɋ–ùa>Tré\6¯(‰`hé¼|âéc·Ðiò‚TÆ—ã? ã)t&kÍD =4n…“ji¿ŒîÁ‚gŽvT¥ñ '@‘eº=IS í(3Ét¬r ÂÔ+ Èí!ójѧ­ÂWà.ü}fª³–{p5Sg¾£¯8»6ë-VP†¹¶ÃýFÈÐrn§üX—؃—JFÔȲ`ì»f#F¥Ÿ5‰Õ5Püû:ÑÒ¯˜>l '[» _Å>&m‚É@Ë+ñy-ªé2CÂÐi-N[×sá…(=oäË.寏HÂѹ¼vÑ÷!©3ÞTé„­²ÚÁÄ£xå¤vðCΣø ,¾éÍxãAs³ »Šü>QÀ“G|cœÜþLWËã›U-M5¿_YŽWÑÝ¿¨ZZ–îïDqñÊ–èq-~c‰» É´Ù66¡ûÿ$Pÿ˜W÷P*TK:2ÜíÏ%Êù–€8šêp ]}[oCñÓdR$@­š Dw3sA7µÓŠ­ õÒ|²×Û3à+C£¹¢áƒÂo$-ýO¥ øõ E©9‡UJÚ¿ñBD|¬JåÞæ€¿ùÅÛÓm{<仂ElXصça\’È@Ï…’VÖBÓ[!š0'>½GF%å ÈU§œÃ+âx¹ãH&€/Ð8E‘Ö¤¸«›]|…`)uæoZ÷$ÂÒ:ÌG[×a¶Utíf*‘ÊÞH—í±:Y˺žê±Ðj"p‘wãÁ3ÖÇæƒòS¨–»®î.è9Åah"ÏíÎÈ{ˆwøb¸Äjþ4ýÒâ¶k†wŽøÏslÂV© AþÎç½ô…[Ñt¹# W÷çYŽ|11ƒÇåÒÚ³‹&v ïÅÚTÔ…3í5¾/;ÌäçxR¦n¿²x-ªl8xùS·ujÔiÜU÷Ê/¤ÊY°ã¿b1-ï OÚ•ïá1 ½›3ï1±ê,§yó7Àlðw#µµL Æ54pJç|&­(;-6?ú°wªý»ó†~bzÆÐ9tf$ƒ?,U2Ô¯Q<¸„0™DL¼ü²!ªJFî!`oþ¢A^ºÕŠÒèk–d.„ß—fJ«hÁ“Ž8[¶túÈg0¹Xì9žÒY<>·™‚97vx¥Í¯)ÕMOìØ !'³p.%3Q”\’·¶cþZ$§»Dƒ,Êø:Mz u㣗¿hrAñ.â$;˶>ÎÃR²ˆ°¯Zn?ƒ¢Okã©Å‘ž3û‚áõ¼J4B3´Þ¯ùÿ—‰†uKÖ%¢‰!f¾§üœM„ÖFö+x®ªú **ÙMÔC©PYê-hnGëå‹ûÑ<¤9ú5)<&Z!6©ZÍ6 >he¥ŠŠ46¬¿ÎM@ýALè5—¬—D=-ön%šÀó6d•ßfÖ “ÍÐRq%(‘lZZV– ¬Â’lu·¥Éºã‹cmáB<ÑXß sX¾x¥¢²®ÏºH’Fó ø—OOŽÄMNcXé®®…fÔÛxTöºJ9Âß"¡#üô¯UgR8Y@Ö†cnÉ€Ê gM•~©Èßo§†Í»R‚ÝQ ×¥B¼Y¹ðâq¶èl" kÔLf3~×5 ¨äùgœÛaϬsþŠ×6Ð+x‰‰|û+2‚OXüv¤p–âÜ&THErûþöN½#¹WF¨ßþJ"æ¸íBóJðGú^¾A Y‹ˆg  ço4}|°æé2¸“䪦ûÍrÞ˜'T8ЭË?Æ–æH&6 2•»|W½ŒCç?Y¼ƒêiËRûã®žŠ¦’Nåfè£ñ(½–½N±•Èmú“3 rfÖìžE9 ¤QÓüÙðd­"cU—:pØÁH%b0«Gqñ¶CΫ\VÆ1qY‘3qA0*©Šo ¸6+Rµë6|ª0ëÜk·’Ì™  ٴhw®ÆX!©Íi³c:»¥Wi,ú1 ÉϨè3NÉQÌ`d¨µÝÆÚ^5* MFqœ \%©I¤”’ ,l)5]AàpÔ÷¹Ÿ¶g·@‹ŸÏi»±DÒµ‚ú‹ªHãjàYÜ”<½ù.¤Ê|¿Ü/|×#þyàâwAÙŒE¸ç&˜¼•KFÓÝÚZª†TWòvœŸ=Ìi.5:V@!V¬¸Êh°±M•NŽÐÎÍh’±u¢x÷lƒ§ @¤üÓŸ!TÿM@`äæÖßèt¥ïêh!ü¼Ï Á #oî$?ZÇÁ=­rÂ-!ÜõW?&¼Ú¼á/©»¸ŸkùBRÅ„nPnwjQjƒ@œC™T²nØS‘0ÄRŒ-ûå@y3œGžÖ¦V~ e¯OÎªÌ ö³4Ï‚?!· €ÿ¥ûÿb XËþgÓn‘ò_3HÌ%ø)öm°B}¢É#ÈC¢‰–J™è³þ÷ðª 3A¡¶D¨rÏö™–@õ¡¡Ûÿi1! ªØò±HëKO4)D±SÍ­òõŽañf¼vÃãu^'xèi@øZÿ ê9e„þ ì‘Êü‚È=à*ºæ]}ƼTLÒ‹CªbÌ6ÆB)ÈKrÇŽ’=&ïØ÷Ú ujq¥,;ø“acÆ4z{¡½`UÖ4ÃzŽ^_:AèÞ­õVrƒ^ <æhÑýIš‘¡' uÞ¨òïˆõÁMËÃŒÌwb¾Îâ£Ú ¤*ÃÎJ9•VÌdžIrB›Z„,™õÁUVM8+Š÷!¢÷‰{›7%BÜœ´À^X™îý ÛC_¾ä ì0þ}eJAŒøŒíHÊ;ã;©(Ê¡²w‘Ú€¹]AXX9cx®«Oo5ÇçÉI®1ÿ›€¬S™‰*´4Ý GåW$\”2c·ºíÿ 9æòtî+„†s!ýÍ‚Žtt ñ¼ß•ƒnz†NIßgo dl©[¥ñDŒoËX~ç×f“_˜#˜•ëuÎgfkcý§´2@N®ŽÖ™õÁ¯‡æô(µÒ‘îøSô_~ lqÚÎ]Ý — =(Ó‡:[sÙžsi9 ˜ÑNäu‚!»É¤¯`uŒ%ƒÚ«ž™5l™ÖqUêÍ.W¨¡UâjÜ)ó|`>W ßÊñ†Ä)ŠíÐ??5ôÆAhIÅ_sT@`lÍTÿU ÎòZb!44Vˆ“iî47VzL?-¾·a補Q5Fÿ2 t?Õ $—î¤áÅä»#£8Ó}!`öƒç’;v:äÃÂÜߤ ©Qôî6)‰eð0°†‹(êzãÊýÞngW ÃHŽš¸s¯ÑVQa™\9®Z~â¢ÛóÓïE®èórÝ$µÈOûJ7MBmäuÓtFõk_@Ý}š=m½¸Tfˆ‚S©oýýôoB ¶bƒØÇ[Àj){upßorèYÊRW6~émnuýÉ1¯.ªû,}­%*®®w²ï’˜¶v×| ŸSÎôÏÞŒ€M\{C&Îò·9ê´çžš7§Œóâ©„û.„©v¥ûZù«]K’5ŸÒ^;Xd‘ßejĪÜbЖ¾68Þ­§D© ã%áv™A-`¨/ÄNy if•ï¥TƒÄ²KXn@ÀG!PuOϰ­òqçðéþ>éIþR–lNqÕ­cõ®_|¸'Ë‚c8ù튜ã&Fµ˜Q¸ð¶³ÕžI¯Èûçj4ùRH>0öŒÆ`o(…룑À¯\ËÕÛ¤CkB–Ÿ[Å*†aPwÙíâ+䨩ø;l1”€ü,…B¡õ¥þÞK&Ëÿ’`Úè{ñgÒ¿fA¤÷(‹Pc:^”_:àKŠfA„Š`èa^Âx(²Av½Z1±Cò€Ãª z‡Wêâñ("X1º:ü à~V§*Š X[²M`£¢³ìÅ˵qƒø£(‡ÆŒÆaGD¦3½ÛÚ¹ÀjuEÏÌÓCì)}8¢m¶60›êë«O%½öÔÝ«õôúǘá@ÚÈ”Û×Ähl–ÍÄKoMw®§‡ñ"«˜‡öÒ§’þK°»´"ËlÒ` öèµÔ¬Ã_]¼üuçì£@¾¾€Ä÷ðÖÞP<9³%öÚê_’Gï`f”ÑKH¦GXñ„NÚ=㮄{ò{/‡ö© ø%.K¼p4£ñ¢,…Qëý©„3_Ö·É­¹tt$®²ŠQÛ‘WvÂä nIJîño ƒb§Åq†Œ­0]sÂýÀö>Iû:¨u>e«IBËÕ5Ô.½d$»©4ù2‰Ûa¥qeçWp÷D`=ÿÇ—ŠaëôÈY—¬šœÂ„†Ñ P„–­{¤Û¥ßŠ!ŽZb$QÍ7Ò9Ñ7Æý†Ù¥Œ-ÞmÛËKzú_ègô¦äîðËGvö_UÖ¦e[ bÆØ†·5>=ë'·„¹Êed?±ù"wà `YÓ÷W gŒC_bÏâŠ+Šöô/0RÕ<Ï›‡ØAÆ1z([oˆ^&êù‰‰Æå›ñð/êµHç$áN¬XÇðè#TÍXeÎÏé½1ú*I}J}ë“u¨÷.#¨@ùj Í褃Ɖ+hM‚ħA>“9çiþ¤Ïõ‡›é΂ùWx†û-f•é [ÙÓ¸ 2ø^òós~Ñî¶p§nGZþwňÂhDé(Qé3w¨Iìþy`·g%gRœ†Ý.CyÏê‚”å1Q¡Ü8œ׺æ[m²‚ìYV#ÃÙ-ö±jÓýG¬Ÿ<‰¸qß'÷ðôLä· ¾ÇÎ’ž8½ÓÙ… ê¯ ÑøÄvâWžGÖgX¹"žåÊÉÉýÔɵ7Óã6X·s¶u¯¦ZêÃr^jb¢–…ô­ãÁo×tN(Ù°ª.­ô«ýh¦KvëN‘ ÈW“ñ‡=cP1—B¾‡‚ ƒòï)9k7­Oᨨþ U»I‚vŵƽf¢*æ[äN8l‰ðšrnÇ.Ü%É_Î<ÅÑ,”D:ÛÎè °§uÅ;f—}Rà,"ñ^ÇÕIzõ:“zvàD¦hLpDÐ:nr²Ï¬Þð¥[åÄÛÅrÈšÌbpá—%)F‹dY£DV&}¾q õ[i,o[B9½šLš&¿ÈÕg»¶Á’ªžDó&ö;$&™ðÄ6屇€Ör€ù§ˆ"ô³¸;‘ªÅ#"Áƾ:„§CYB"}áßÓ4¿®àxžÆÔ¬= È~Seël4qãz EòH<ÕA´ùûø8Ìqnbç0}^˜cù~^ž>xÀ#Qœ£[ ·HÅB èŽ\V='œP8‰“{ÿ[\â ª .Ý]ô~T¹!x.c¨ŒÐ§ÀpŒƒ²±ÓšP„"Ï•ÛëTÂég“cؽoÞS©ŒX'òFÞIŸãKW-ôõGÕÚm¸Ÿec–ùD?…•âXÍZxÎÄujæna³@Rç8L¹Ê¼jáÖœÎã1î ¸®Ä!bb˜)IæõÊ|s`(×¹ÚÍ`¾›x‘Ñë¥_à:N‰ ‰eß±ö7Y$U^Z0 ÜÁ¥‚C<}0i‡ñŸVa>;~›Ìs€êÙ÷Ài'ÊLÚ“Û5Å(Зü€ÅºÉë~;Ãi£ ^C”àíVj‚4š2å{à´Ûn¯.Ë•|ƒ³ªS«¼½ɹdÆ 5YæÛ%]Ñ…ßV0DÿoÒosiï·'¸žh°&¯v: j}°pèQSÿÚ-»®´þÈ‘îõs½e8„KÝAüë|E¢[ K< 'KrÇLy¢h2ÐÑ=ü ^Öà•õ6‘MÂg´¡ÅgûMK ´·õX Ç[f¸K¢àïiÑDé2@¼Ç©N·kb”ì×õL Ÿ¢B  Èlåšäe4‹ÅTD©ù€NÅ'“ iljK;ðDþ§2 õøFçO_tOèD /ùÀ¤CV”òì œjÇDÝ€õiÒ>6å¼ãøÉûÈ–Þüä/½™C,ƒÁ\.,Uø'zk¶üZÚj›éó2?ñ*FB¸_æû_yóƒ&ÊcÆÆõù§®>#[4;Üö»3®“7ªŠ™;›ÊéJ‡…{@Z3BÈO˜§gÉÕsK†ùy»Ñ¡SÔ®lEugÔ£v*AzÃW%#GM’ø„™«!qàn5[ó§zo#!R-Z›÷DJ¤vî 7œ-#²É¼ø´ªéGúîWãT‰ÓÀ®Ph®Õh×"UCÁÀ)ׇUõjj!î(À±J—$_Q3IGñ -‚òxïÜ“/#+òaÞ£|í]ê!o0W=龫ô¦€Ôá ‚\×d€IyÇb|ˌƓýgç/ÑCtö¢ÁMØÇ_;QSY5Q¶žúÛ 6NX{NWbˆÎ¯ätnGñØ•Eï®P?é ¤–Žã¼ ãbXm‡§îüzní©çìѶÕ4Ö¢—b³ÿ3dšºÅŸû¬a Z¸ÃÔ`dà÷lÉEHÃÈq¦tõ7*}–]t«~x[}î æ6mÐAK£c6eÒ'ó¨2`p›:<Æ»ñ¿êp¯Ô -jÏG3>_ž[Êd@çRëÑhžÜ"ùâjBo"/¤ ƒ‹õlîÂ!¾ú“n\}…“}¬ðžbd9îdÊÍ‹$æ´\ UŸéƒæOÔ*õ×§ðš(·K½ì ‰¶yIÕU=\Å@0"õ#V'ÌC³Ù…û\÷bð;zwꃡYÞÈ›ÎG=”ö܉´¶ûzÌA@7cy/Øw_3iØÀÅûº‘ÄžxUYb`¦ ½Ö|¡y@ ·&;ûCØO’ÀsUª7HhŽ1t³-(7Ez¶M†úQÒýdƒh[Ú÷kšmjÀÁO¢•ÎMß׿%7ù”i Wµyoï÷ý§\8Èr$ûd6A®pf´ÑÖMª(M‚ó|”=JèÇ|fœå‘¨È‹8Úë°Ê1šíöíá{,©WDn&+ÛJz(þ{bB‹®Þ‚.Èe åE£D]ƒ½¦9°øì?TÓnv'óp"VV8h±U¤ýY¿ wƒgéÑÂzZi«üû.r—“íDÀ¶^N§Ç { SäDá‘ýÔ*ô†F0ØO¼ô’&¶ätcÊT±X&4•þ…–ЬãÚÊû;‚åsíQeWA­ë6§FEÏHøA"õ¬Mã;*ª­Ë7Ùä÷^ûÊŸ:æ»Ç€ŠùU;Õ*&²”ˆÕ*9Ê¥‚T¡Œ» 7ëF¾G}ºTÈ2§ËÂÜAPG3†óª(0{v6¨ºXcH;{?³ó[r½|Ò|åOâ&¿þ11–×E³ûÈ.E%è~G<¤ œ>àV¥¿c³?´ízEÍ%˜1Hý›ûÿC-CĽÅíñ‰ÃÚØHߌOqÈ'¡‹½š뱲葶q‰OÖn¹§ë¥u€« ú÷h ÿ)´qé ø‹-4eÛþgn!Wwhçî>£àMLæAî¸ÌóÀiƒ{`">S-ó~a©5›c+…}&^…Y¸é¼hõAáOïB‹< ÛvåÛå‡î ³5uˆb™óÚ·íòþŸÀÊËm=ã"€kÕñY.Í5Óèìø*…a³$»äòØzyU…U? aÂ5OÚD5Õ$_tIÇÐÝÎXüÄà*šám®ô}ÅI.†G¢7Ó÷|úÉžµ1üˆw<Éòíĵg6Ä”ð_޶%Òµ(\Š]“Y„ëKÝӨׅ:“ýÔ’€(AÒyG€ìNÁ9AÚÓ\ðã28/iÑùßîhDï´:(-6ÁÚ+=b þõOwºXgŸ"­LÀ†t…›LìK÷ÉHoÃYêƒ/4šxÙ;Ãb ™Fý&+õ§)Ó1žÀtq6ÐÙ9n$fG–SCz7…ñŽW-}ùrÛç‡È-7Oå"A9k†"š_²êìò^Žì2×Tû7[â¿7²  äI({9Ž¥x»¹Þ n8Zõ´¡¯æ}%W‹ÅFŒ²ûë9˜“‹Ÿ Wò²ý¸;åPZ#òY[˜Qõby×ËdÂæôU¾ñÒ›.‰é ¡¤ƒ‰ÛjW5îå]@ÑLT1›V©yUšÓÌ]›] Ý._4‰L†Ç‡]_I¹ÿ¯Ž²òÞ4@݃õ󄱉/k"þtž Ò{Õ¼*òšq²güñÓóÐ`ˆn‹ö7rµ¦+~§ìüdíý¬]ÚrE‰¿ÍÃ)ทʬqû¨¦ç#™SAÝéSl©²ãü`”àEÉú¯ìÑ °=öÓD AZ Ýf6%P‰s…»¯î©Þ¼H,³¡ßÁæâ.àU¶¸ãØÏúélµ”x×kyRÕÑ©é£6à8_p0iŽi‹ª Î ÃØ×o(¦š DìUGâÙ$’Ý\æ‡v QS¨ÑV%·L[´“|çŽbÑUäõÛàOµ;3²C¡Êš5qŽʡž¥‰í°7?=Dµ±>¾@)É ¸ÿ£Ä“^þ,x¡ÿ›ŒUÅØD‰•Eä¾ÞÒ:w»”5 <¹ÒÌs"`£¢¢Ñ>uNô®*åÃÅa_‹ïÞ¼Á½U˜ƒ4Ÿ¬ Ê9‘ã\Ž9ÀN è9Ýôݦþ‘âÎÅQìÄ7!ü³±×[5—b¬hÆË°í5YÎÇ»íÏ»f)LÞEt"¿h{O‘ouÐ^û2‡š~æàß1·`ýmU(S‡å¤v®¶t­%(yàfN²¹0PËw8|»J}¾^…¼lr¹hKÖgnÝ{Ñôõ»¯/Y³$wó©*ѹ9vêËÿ‘EÌðÅï‡ÆS†Ù4()JäÝ©dt±oþ±H“hÒ`ŠO†xÁ±ƒ½©.À “õ Ý4HMybÇå»á‚ ½gk‹-bœHÇ{û¬õRÆËëÏÿþq(¤â ùÈ|1KOË#í!&n`À ˆR£›ēϛ÷Î\ çôÖ°3S¹Gúb¹†{¯ÂÝ’¡·—VÄr8¸KÔ­wæšÆpn­ ZàNóGê& µ¤ÇP©©€Ôµ2¡jp„œ:ŒbÒ †ŸpÞ k4ab’aæ+燧xÛ*ÃÍÃ`L€l#WŠ#m8êÇ ÷Ë.ªçɲ*úô?âç¹’‘RÏr,–°aEáò.¾uxTŽ`t¾Ì ­rÌ‹ÛhÀ:‚8€3VKÝMÓ¸‚Œö1ý}õQù ‘xíªI7¼Üº.à>:2piŠg‚F¿‚ÜígðÖ•]xù“|Ø×X³v:'ñSDã‘UÞ¾rµW[¥púßÀå]CmF&…¡4>u»¾å®³ÚC5 ¤³BR'ÄgÊ0--³¬Í¦ßÔ¢Š¸bŒdnÎ}È:gú\­zwüx©¾Õ®¼lÖOÀÉ7ž[cE­#:ñ¨¹ÿº´k˜Ù מYeìl•œõ€ˆ¯¬·'»póÆ5{OÛ…A#)¢Yî¤ü#Ž(à46ô¿ý š °ëg4©–-“¸œz”Gu 8YæŽG#Kº)9 ØA†jÆùÅî¬ Œ…‹^ñ¦±‹P΃AäЪçÆz^¨:Òƒ?n{ÎÚ¯U®P§?ú]¾òP¿Ê9Xõ¸kª"‚+WxIõÌbö£P¯®ïÌú‘ Ú‰<®€€T´ÜiAóõqÊ''nexa?(¢,x)o®ÚK‡Oȃe–)Ä'²^GUÜ/†ÿ´U‰}X¡o¾$žÐ^ãÝK{“f œUêá\ÝXòÀÆOÀéZR°=Da®aÒ-pÁa4÷Ú'ü´L=Mªê ˜VYÚói´È>üñ¤äj ì2o<§iƒ¡ÂŸª‘®[ÙcÌ­^ñ öquóY  QÄÑCÔ'™á=& R¹ÉËMº!͈LÊ“«ZJÒ(Åýª)þ`ñg{ùÖ’…z–‘qj¡a1þ[¼0-rõܓȚçr“ÌmF ê^úâXí*K¡á¶¥ìwB¿7)K¹Rw«ÍXn™*4õ@ªÄˆD£@•øŽ¬Çéìôÿp%ë¸ÿgáìH FQÈK,ûƒ9nââad;Gˆ#öÒ¹ügPv&ú×¢º$ˆ¥Üv:ö‚Ðð ª/›À3q¾Ý¾ÊÉ“;ã¤Ò;"åÇ"KRNi|€…Ä€¦™"2gh«tp§lÝ“ÏþJŽ0Œ¼ssðŽžâCϪ–£ÆšÌA÷¨A¡ì¸,;,UúÚýJÝ¥»g_WúÀÍÝø—‡Ð^AhEkvh¹UH4ÓI„q’?b@^ÿªd—.ý)ÌТ¢î©°9ÄÀ*I½Í§éÒü—À}øXßOÙ÷¡`Õ9¢®?ã}\¡ƒÝá`ïÐè4I 5 +×;Ñð¿ ó•àüAìuú+OPðëcXš“½x¼Ý´Í"„­¯àóÍÃeæîןœ]$1/ÚCÓljP_g…¡VþÌÿΰ†BâårZB«foóL÷™@˶šVŠÅA¨E‹]¡PÅIŒ\¼ÄKwüj™&4<Ä«?@`½o±h8)F o”B6Á §’<ò?½ ÜT´##¬çßé©öÊ5Û©†güÛ9Av£[¿EXa‰S’+„l49ÀEob1@—©C& ½=°ÑÎ@Ó®˜§0»"¿NðÂåàÌE¹Û™N°0¹•øÇ‹þ;JŒ¾vʵ4,g䦂dÀÊLAGÉû)ËÝžÙºèQ\…QÇ™S7¥rS Ñ[Eã„@ŽúHT‚Œ&ê$KcïŠ=K\~ DÃcW®ùÂk=²O‹jÄþ6ŒÆ£(XT”`â@Ðèû¦l…ñåœ‡Ž¨B€¥×B4Ã<ûìÅç@>D6@®áFï ½8 î¼Åâ×I¾ÕL³ÁI©%à˜¨ÃL!¹à íP7"!³°½'$zM}¤ûW_Ãç¯ÿ™áŠ&¸í(-º€ÓXÑ«|6ÎA½hØ÷§¬î5±¥rì- —É­ÖNz¯~_5=ÀüÎtl+DS ­Ûu,B 7鹑…n¨%G¸üöyúlØ,½ïXÒLL4í¾u’ %D[‘-þGw€ÖÖÏ‹äjÏÑ– üÊ[?x„v䬧/iwûp¡-´ÞDë7¬7T2¿Æ¾ÚÃâ´/§)gЧƒÑæ!Ã%áúÎ…lNW*—Í¿úàY †^ÚF&ù}jJ NŽ€yͦy{ïaŠy'U$„:î ë3‘™Bûçc0Ó+(³Z¾CöËÒÚÆúWÓ8&I¦„#p«yYtAÌm&šJS©ÄÕ¡Ñ!å ?>ïñÚ¯ÖÉZë‰h³ã«C,\·uãÞ#ìØ$½ïÎlÊ$9‡ tH|¯´–ø›"›O­"z+.¸JzE¼Ç€×Oc–ÞHñ~7>ZÅ•¼2 ËÆ]µà4ä\¨¯]Ù~ùA!oUãŒ,ûЄ§êúóS 9¯¦à¬#32ÌÖMj\>01眞ç¯õv=¯qf®Ü Ó[ä/˜ª!wAÄ@d…H÷gIøBÇ|Ò~}Ï– I”=%ªÂ¬88À0*s˜Áák]kdÊisZ_¡^Y'E0M %å†Bõ`®6Œ'‘Qaóˆw«2°Ÿ3 ù¨¿Ãž)'Óép4’Œrt'ÀLÓ´&¶Šn±½Û$¶×·! CÀÂÞì ¦µÅbLêz„Ø¢XÝTYÓ¾’á-.)õÃ?âœc¯z»ª“]×iÆêÀ1PÕ¯·FÞè¸ky¬Î¥ùPU60ÛõEØŸ­yý\9SšØ(w"T9–Ÿ‹=¢[kj%kl„Rïàtf,^©ÒîÙ}+ûîˆ57E‚…{ùÿ\¤/'ÁŒcn‚›ÄØ%-t 71•~•ÿ_ã¢Ü|¶O`!ŠOÈÐ!Vc“¸àZš‚œôá¶ö€û#"¸²’äÑÈõ(ã 3z:愲np­q6KòX zDˆ±½nZ„r–‰÷Zqîêø&f?å²±`UL\t¨º»hïkž[ŒäŒ®º‘¢„ —¶œ¯¨ù%ïZzbËÎîü­W¥¸(C—*ï1f?UBóX A¯¾ÔÜ‚™þÞdïÛôP¦ÑfL«T,‰ -¬-(Z6T¢uiÑ^5: bGÏÙÜ0/v\8,œB?þæ¦&K&šuÛ6éÇ»éf{@x©ô Ó!iMÖCÑ¡`&—М´1í¨IPÕ‡é`Ôb ýÈ¿å Á£G"Gª¦Í/V²HuõÙ±F÷¨+1Ùr†&åýhc“œ‹º?ÜiþG%ãìîÞoÇ6:4™oyŒj’£vÈ`„<Ò z@pÑâõ‘ôí4šúßõ”›ˆbÅ`èˆunØÔÑ"I•z÷”O…9ÄJí Á4Ôˆ@íÄöÝÇÆùá•°~wW~w|¢Ÿ'òwpl°F[gü׬[%¶=¥ÏtaÜ@¤SÅM~xŽž×Ãþ™VÎr„†ó­è—¤XúÛg\SVÆï{Ü}2FÕ–°2ã^“Åç8¶ÑÝ–L£Žf5Â|•SÍ@{™°16qø)XÚáËíB‡‚Ú†I ŽÿYº?à Þó.5ûJ^žµ>Tý¤½—·ì€.ûåÉzúp‚=å±÷TŒd6ê LùÛ–}æ®bÇ"âט „ÈgÜ.“cZ¹QRÞ¬É\K† 4íûvV¸*k®ê.` ÝçÖˆ$­­CŠÒÅ1ÖV›pÑãoÒAdì{LPÛªø¬álK¢¡WÔKÈ*L—˜ì~aÚbÜ?E†žýL~¡‚(žŽL²ø³ÅptÕ#Òû%ÊßE†7ÅEÖÖ¬Ú ŒÈø91¾UXÝ^8 •P†rRhÅõ«¾ÿAäÞgÆÄØqJ"¿DÒ9.$þ©C/_†AÇþBÂNþöMÁ1&$Sıì’ìJY¡š*Ä©‹¤˜*I(ÈâæÔ¹Šá·t£BL…s¦”V&<ÊB2õÿÉCô³×u_ÚY¾).‡«å¨T¹¬X1Bb?EÅìÇþpjéÃL©Èùç™×ã†Óù¢[àÆjZŽ8xÝ,Þo”üÝ»ýÕ†µü:Í ôßMFÊX|ì©üžÖœ~[û5PwâGÔ:JÔ[öÛÝ}×ghj˰é#ƒ¾µA~üðõÿI—±`dwg–tŠmªêÈøS €hén„WwOá«7z<—nbÙãTgOË,râÐ¥Ùjúob4{cÄ=UŸ>Ëò뢜p!s‡îïBãÚ¾á »5ª|Nï!bT¤Ë ¦Dš(Ö‹»ƒ&s¬eáɸÿ#ïŠqŸÑ)ô¦ˆ>ÛaFèIJQyI$—U ¨*-%NBá–Ž¥kà7­¿Ä!Ä'“eÕO8>ã·-YjÐP±{’ò¾¿´ j€•vÕ<´æ’1£7*zQöeøœñ ·Ó1Ê6؈Û,åÿ5édâIã®_i—dü*´HOÓÆ+ÔG?¯Qþz”ý¡ÿÝýMµ1¬¦ïíõ•WIŸÈ_ F‡ßAðäMÛÐ#Ý÷…¸×,ÚTÙ,Ô$ŒUª’584 Ýïeo¼Jž«ÝCý“ÔîWeáð`WÖÉ󳋹½ßB.m×ÁùpzahzÎOsŒ!Û°Œ³Ö)šå*Íì=_wD23{ã'«µúŒ?ô»„×Ký§¿üó2ª¸­hØûõßä¥K<¨o Ì1Êá=fçD4ÚÆxy“ˆ«•uÔïêJ´oábÆ{p|Ð[}¼~W#Pí§ê(…î*Aÿ›»¨à€_A ÆÄä÷ ІóþÍÅÈc(0/oxÃ0ìŒ:q7¯ äˆúÕùÿl9~ãì 7ðh˰æj)å§ô«/ ÝNîú¨ÏØê÷ãÉu˵aßf»õ ÷w ŽÕµK!.‡ÑKJ©ÝhVך™Ò̘ѮUùHº j {6ì © ,- £¯Ùã~FœW™ž{m–ŸžNy NÊûÇmüïãO?¿ii¦Â­IpÃ@æ¨ú¡š·Fl®¼å³©^’=ŒQ;ó!9Ê|:tbn Q¸³œ¥Ãc 8'iîWwÂ^§‹™“ã—:P|<€##ÑqŽ¿…OVíSOžc)yÁØ}]«r;Rlí?±œ¸V¢ˆ–þr»vfJÅ, 74 ºd:¥|PÖ¼!aVÜYt,)Z°í1×*<Þ„¦C½¼‡¶~Åj¼Œ¯eoÓ'ƒDŠ.·²sÃÊ Ô&Š4.BÞgÑ/Ï•X%¢R¢Žx,°>¤ÞÆ;ï³ÌP¤b6ú¶b’f'Ag”ËHårý¼JѶݪðÍ‹H‰A4À¸¾ \³~«å~ÓõÁ2ÜŒ%•Ø­Üwr‹xŸ^û‘žV€`ÏwBò^ t$6„Gµ¢ÕJ•óL©¿$ké"‘áõWð{âÝa¶OA»:ÛJ!ç¶â9AXjn0öùòMÁšK)ï_Ȉ+¢ç±àæÛnÏ=,äò g½­"©maá^ˆÈ³·¬=}bl¿…ņ[{cYéÒ¿pi ;ò)SJgõa³—¹àŽèL~?Lê-’wÄ/²YÉËšø…"—ÞþËF-Š:Oã5Þl«½¥Žw áâ®aE“[öµZ·4XÆæb- Í™|Ù|ïÀÿ=çSÓ cX Íðád^B%ÒË©?ÝÑÒUq9Ä©E!'g-ºkRìçÛÈ r 埡¹ïYmûå“#è–!ô%Ç5V­ç3í'Mf1irFâ‹[ÞŸcfþÕ_eã!SiíóˆŸÞêA˜N4A¬¯êc+R•iSü¼)²ê^Õ\HÇwÐ [5HJA×…E´úÛ«gôçWyŸæ *‰¦ˆêÄÃMéCô¹sž„ÈE{S*¡6àÁJÖ¸F¼­›‚$³æ ¼•Ç´aÿÚé@)oþˆ„o7!¢’ëuH_7¹hØw~ÝëdWæ2¶!œÿ}zØ5Ïÿ¸(wëðù$õiçÎÞ$询Šao‘ ^ê33ú,àèUíõĆÄß)Lÿ<ø 8¯ðk† A^"NMÅH.¶Ji…CGK™D=#™ eù’åÞ#ã°×±A 8Ãî—3VÓ)”L\ÙøhÖù¨í™O¶´¹Ðóâ¬ùºŽù3ÒC`[Qù$<¡fªã {˜SOÁ®‘×èï8«+‹Íÿ±ðò•ÕANJW{Í(‹ŒY^Ó\8­^‰ÑZY ÒØ¸ÊûýâÆ™•MªAJp1oæ§wU%xÉC8ˆM’hyf¿GB <`ÁjÓ3¤áÐ4Ô¿1Díú¸V!›§ág#a»iØ Óà–?«…JÓµ\Z@圂Ë_¾ÛÐ':¬Ð Z»ÞÄL·ipÔ^Ñ÷Lï`¦ªQ²ÜcQ‘aUЯx$aÏ€}¿”Ü`ÒÍy§mŸ@ð.®žõ@´\ÕZ½ÖèÎÁTd¶r¤i £W1«»Œû5ý€ž¥Ÿ¦bv }‹D<8~&­ôujÀÔÆ°u§úÚ…¢ÿ´àCáçÇÃöÒlÊ sŠ&í…j(¦'?çvK“{à&¦ãiŽô|«h«Ïúa6n‰­Üì¿P³žÝŸ0+ž±BCÖåTúé8.ÞïwÖ›9ø³IïVMņ“ÑToe«z­wSîÅ«³“zñþŠ¿ƒ`q.<̲ùز׷Ó3Õæ¼#ñ~™™('{P_^ne†Ú°‹º{'g_¨ÔvIÁLаî©K>Îýòžœ :rmT>aŒýx(e û51b &Z%>Xtíù ½Þ¬Ø²yUXÈ`G¸-NÌ÷S΀Οî¾ÝަÐ~¦c‘Ò æãÛ¢'—V1ªº­wîèã¹ßàÙøÛû‹g±´ÍUáq®Õcá¦×MWlV ›¨|¦Ñ7n§+=»™SÐ9—œnÖüM¬59O­Ô ;—ðÚEô‘[5ÉVât×uš°ä,ï5ÙzÏæÏÏûû*`¡ÛjUÔ¹oØ[Tbóù€r½«÷¸:­:oŠd8ןz‰Çl§””7†ë2L7&8PDÐõjÈüÂoýYoÏ0UvÇ$eÕªoá7‹x'…M !–Wó1÷9] *º_´›Ëùxn|›ô2[8A==m’ô雯•Õ™;Sç ¶$òa”Ú5/·8 Ä.‘L}­‚¡»IW‰ÐÀ"_Tèeíÿ0þȪ¿ŸòÃÙsŠ8›6VÂ;mh€SŽ©IþXF-ô•«ôó#ed,÷5ÕŠg#z4B•}*×6ÀžL^Ÿóyùä­¬t2 ·c¤¤Aùƒço Öêó!Wâ[/ëæ9¨E±zûf®(Ý"=­±µ`y"}fÚ¸~RÀÚ¶ãû´,fŒsph/ôįuDg„îÌÉ ªZ«„®z3W#~¾úÍJÁâs¤›œ>àJ¶Ò¿š.ÐÏKÔþ諺šƒ2Òaê8á„•<—™H¡›ÖÞ£¥Õ¸LY ×@߆B‰J«ådw¬9!RsÉXI#þ‘ú–'µ‰|Pœ6ÑHcúÞÁâ›*ŸsE1Å© Ðå¹6ò‰§xÖ˜Ÿ*0n90f±E’¶ö -£^.íŸÄ; ÔrGhµ’…ÍŽx|ÎùpξN e͆cŸÁʱg‘_¢$aú•’m0óTEÑoîÙ)ò )Š„C†<±wXqJùM}н'F: w41”KH4Mb›‰„,]…ÅŸtº‹; Zû‚_>Y5`{;æõAŸ›ÀŸÃÆŠË«³‹*!Ûôœõ'B´IFû÷¼Ý'€F"hßKÅ ‡b½œ¦¯²ÚUžš­ˆl@  퇃!#RpÜEÆÆ¾0핉ÿ†æ¢xIlO]9D1àtÜõ¶ó¯¸òý²ƒ²©OþBÚ¤Æ3Îi’,Ý¿Z—°"Èô”Ù‡¸V@9ÚW_=†¬À¦ÏùVáx_tŠì6ÇLþz7E¥˜6ÅÊ‚‡~Q( ðT^×Ö®Û ‡•eoÄäoN¨³^Î8áﱨ40Ò/2@ËmÝ4'«dnX„_Ç3§G&Ó¹zÕ$¢ðvŠjö)^ÕŠ‘Ò1¦RoÀÓ±Z›úöïT¯ñäÄ#-¨~§ÂêÎÒI:?.y*Þ_fïØdN,˜ö4ùh¦†‚£4nÇôÍÐÔpSÜ$ñdœ;Vï½úHØa]Šس…yzWDâ´…©ñU k— ;íkâäá°^1»åâ¢M&yÉw—àŠŠíšj0&ÙG7Ü0ëù\Oñ¯ «tè'«×W¦Ãã!©÷Ê ý ­ ‚>1ÛJalIÍOPøýÉ÷׬ng³’!ϯ÷î“tùDõ…äèW ×®â–>Ø´<¡¹À0&ÕHKKbЏâÓygÁ)0¶—çM¸­/|¶¯6ÓÞcó!ÞD°ÞþO¼p’`˜ÆE3|€ÀÕ8d1^¹ßôoG8â«Kf«úaÂJÑ8†úl5q§ðX_…SLû%½y4Ëg†çѪ!Fà©Âä¼ÀvLÐÃðsâhä|Ù¦¤}_Ý•u}ßAè]Zß%¯Æ»3ë|üêŇuêCÌõ@ð€[%6p¸®…×á=_¬¬÷3X?ŒÑ, üx¸‡;-¿Š”ýƒì—å¿ËýmùÏÓ—Jô kžG¨R7ÕpR^eøE.bh>Ϝև?vÄù|>à*<RõQ¼Þ~q$ÚJ÷~ÅmuW®Œ_prÛÒ´zÍڰ߃ãâËt!ÛT6À»f\s$à2x…$‹ÿH©ñÑ3ŒÔy©M¦@æÏëœKð|Ë@>°0o°:ä.ñxïKý¿*¶@û º€Þ¦~Tˆ<"Æ}³G?…£Ú…‹¼4lT6!)FXµÿ(éÿÄü ªj—@¸Çïšò“ä;Ô#ðº!ÐqˆÊ,q:67Úêµúô‡*È*¸ –„«òqUᅢþ@ùBƒ@ §Aÿ)>æX*×óøiÝêmø?ÁÜp&Þ–]À)„”–þÁ£—ί`ô¸è;~Þ°"ô xd fú«ïÞiü|60’"֤ˆ'¹‡k• ‰x­™~ú~ꃬû0h–­Žpé÷t99ëj¢ÑæøhaÕƒhm…p\Çê+Z'’æwÕ¾¦2½—ºŠk¡¹¬†‹s7}åß̆`=¾ÖsKBªëS"—mZÐÞmH´DE¤ÝÖ˜]6ÜÜרÙRLIf?Æ ëŸ„Ç? ç§c‚}2XµëÑi[!L9yÑ{ɯ*Òœ›+ÌÒ¿kT/­Uõf–-x‰ÎƒÓ­÷~ô•HP"aÆN§-ƒßЉçbÿN£4‡³—e˜2#Ó­ìÐ1Íy­­d\Æ4Á;’¼³–ܾpülÔª­îÚÒ„¶½wÊ[[$¤›™)J,IOßþ¬O`ìÁÃã®Ù¨ÈפJ4ë­W€þr¬é)ùF!]ØaÙüÏ`<çϪçìLiÍÏÅ‹Y Y(ý)ðÆÑáW‘¡wÂÉ(™†h.@"=Z‰¾tÚ„‹ Îø]I”ÛsüËn Â>у0 GùüF¹¶ TÃÔºN¯¬¼õ„Áõ”‹¯$ÒW}Ú:-)2ÈîªÐ<ˆâÙ&gø±ÊC±ëpã.ø°y¬††-ûVYëÍÞ/¾„-ÀFS?6—Rý[¹\9}~F¯ª¬ ˆv±¬<ß:U"¹nb:ä1×– Ÿºþ5Ê®%&ÿñù3˜&ÐC­ݵÂEp½¶~ÀÒCøF›–  Rûèápú"ÆGMì×L/U¼Ôà ÁLK }Bró¯Q¯eÌ8ö¿I'IY‰¿þ²"Ì&ÚtØd…^5G€æÑho’‡î¿ØŠJŠZ¾iøMhW™PÒ™†ï2áxýŠßøþ5øÉšaÆeO®v>{[b^J§3c ŒÕ»î‰D'Òª -¤ç³ßF¬+¤QuЛ˜á5£Vï2£šÖ­ø#n)]¨3פ®‡¯µ\8pîrÂi<³34Ë¿—Ij–u:TÁ¥ÚÙ«Í2œ˜}ÎôL2V.¼°H•3=,Cíþ™x7ì!Ô¾&}£"yµŠ¿3Á˜\d+°kBSp|劄É-ëz7×5<2?Bó‡%¡·O×_ÇêJRe2#ú~n ‰Ša.ɸ jËWTʵ£Ú¡™áË-m¶~ãlΗ“9”Ák¤—s£Çðã/§RÓ@ÙoŠ÷O¶*ä¦ Ëšó'õúòpT¸£\"àt` o«ˆØ®¦•& -aŸXxQLŠ) ¦˜ê«ÂòärÕÿÒ£oÁŽÕÙn’úÞð€†ò‡\– ¾—f«_ÏCÒ&² 0áÉ÷òìüáœžŽ˜£‰XXûБpÞ\®QÆ JŽã• Ϻº®èIk;B²Qêó·fH¡Ó&À•âÚ‚®Ic^m9 ˆ¦Ë‹hzˆðR)ã¿GF`“#´;‰noœéòô‚%ìJ®¡þk¶Ï^I¥sÇo?ù2 ŒŽÅ´s",Vù³‡•_æ}Ñ2{ß@8ŸÂKRTèôÓÑ~™ vÿ…í K™\ÍÝ U¨å_K´Tm‘i§ìGÍ”J±ú¤·#òî~UÅôÈÐ+Ê¢*°_Ùç'ß#X×&èÕ¬ Ç…ƒªp¾‘Œ·n¢& 9mз¢]Yo+$2pU“ÖÖ~-¸Í8Ê‚s8¿æ»='»îÞÊ/†öæ~³1DV²ÝÍë”é½g‰Í«ŸfðLî`b-„À—¿‹kÝãÙ·z‡²eö^’Õ÷·ƒ0ã·jlV‡6jÙØy&Ó…·Üù­]Øo\5ú7Ù«!Y¤<óóÏ'ÈÌEÌÌgc¡ðÌõ©=…ùR£h—ÁáRéb5!âAƒXè¹Á¶¦¢Ád¶¿­Ÿô)†­4íð^Yj²Í^¼¶ùçö;¿Éá=ˆ™½x’cˆš£bpúS#¾ã”’ Le’.P;Ú+â@P=X?¿y{[r· Ê¢+Ë>Œù¢yWo&Î!úê’°›@Ø©òñÂI®š_”^²uºõVÿ'aj.E²éÕ÷ ÌÔŠÅx ôÍM=ñ¢ÓRvȇĘåš×÷®xÔÏ„@lmräÅ$ån×n³š¦“å¥P³‹±œÑmPh4 ×q†;Ïxa’›‡B`^Õl´y´¾n ¿ ¯dï¿S w¸- 0¸€X6}ò¼ÃPÅ1#ætÖâígº2÷•o§ýŒˆ,Z6SvžÄûF4ú!挨Sj=T‘ǃº\ºð{«V¥x¤ÂÌi•îã·;RÈîžBÙ’’ÑVª ÝV…õ:V‹fF9ŸÀýÕá6Pö£û qÏO:^T³!"“at%v@Е‹{ÉajŒÎæÊS%ò‘ò¹ßÁå³®^æÐ J%Ó‘Ñ`&ÈDPfs¹V\8ÄoÛh2‰»mxL+ú[w<,¦çOeAqÀ´±÷}Œ{Ìq2çÙß!õ·‘x9:¹ÚîçRçuj%äHкö±4:ëLØRë½£DEu²‘¿ÊÉèš®5òæà)¹ê¥Ò÷xÚRýíÀs×=†È¶ùÍÀt'[Ú`ųp¶öéšl0XëË“o®Ê MìäCeìðÐGZÜXö×.ÿïaA•­÷xíjpoþÖß¾\ñ/&Š}1ŸpÍ­ÿÿþ=ØŸ|tx6C5.1ýüL2…\¾eÜ!7LÀ“vIÒ4)3‘(ýHÍÓ+Ès\§å°¼iíÉ]½û¨lˆúúâ²2ÿ`ÿ ‹Þ¤ §ŽÆóÆa.«@`šIÂ"ÈJÜGÇ4£ãx0 5V‘ô€fáOüëÉ‹åýt¨Nçtq.Ðm¥úG£ð³YÚã·$SÉîZ뢲*#T£y)Ÿ¥“[ÈñÍi81eÓ­-˜êæéè6ãùJx÷é¹i.õYðN°œÉ%6ž:=l6Wmå[úŠjɲ"ÛÖ°!&§* MÀQo$‡›°EXã/¦ÍàN ®‚†Áz›×ž?ªëüWáÇ3ÖFVyIÌO€®ÎÕbd¢RÀ}ÝÚ²H ÅE {-ÁÁ­¢ägÇ‘%X‰’A2X¨™¿Œ7"q:dºÞI)—¥€gJ<˜.Ó¿§WH·KE߈ÁܚȃSMþ~uµæ6ÃÂ+gãD‚3¹›É Yò¸1~ñ÷o ©¤‚TÏä —ˆ#+®¼Z¨ºe;¢{©†œŽÒA;“¸Iاâ¶/‚°2ýõç>ñÒ0Ví4Óʽ)Óx’*WË:ÀîuÒ]þpeÁüƒ¤Õ/  M«ÁÊ{\­%T1—Pƒºî<&ôðH{WÔõK÷ÓÅçjLT0ôNÃ:|ûj0pE®Fñ[x¼_9XxD¦9… ÅøÌ«æcNW½}RP^o`£Šà»ͳ«åôÔÝ+Õþ¦ÆÊ K™C‘“¬ð@a9Ø$ð$x8„ž‚-éɈ}Ûß_½Ð›A*Æ÷õQx20£½`1ëƒV '{ øªK& ޶¦!ÄüɲC3\éx -ÄÙ¾IÂv%ç Å–S_Σ™ò‘F’%+xÍž9–Øbµ/žpâOª÷å]½xi {orb;nnŸ–ޝ¢ñ@ìµ£Õûæhmß–”2„§ÑTË#6žÉ¥Îh;­‚•Bì…@6à9rl±s“ÈÄ[ÿe€å××Ë]ªm€ùù¨%ÿü´°úHO”› ¹pWgþÐDã·ôé´ôJ+¸ÇEvaf§„©³ÇᔋUmÄ„efp8âh s.í ·ÄF‰ 2­Ígsåó8Î×…8jq®ÍfEG}‡,ù …gJÝ£Õ”wŽ\`ý½&D¦W»“8LïwƒÆ¨†¯UÄ]«jìm?kþôŒRÝ-zË[n9F–—÷["é…Q…[8CHr/ŸÞ-™ž‰œÑ¢é8M s»U1ÍÀ«nDÒ`Œå$³^o|ä+AŠÝäL?FÐ,;KjBTâ ªé(V:žTµTÇe•ëWL‰Ä®zË{é¢ñ‚͓Ӥ–vÔ½Ïü][„2øæ‘¯$=<“Ë9O>¹¢ìföå—éß[” *Šqßm ³íêœ;ïj°%†îÔ©®ŽE¥¶Æ=4EÃàÞ û.:Ô‚ÊÊ×ášMãŽÙÒû´ª½/b”=ýŒgc}ÑVûÞúOM;a‚Â6Ó&²Öl‰dçb‹ ‚œåD?ï³ÐÃn2ßWW/Ÿ‘ñ ªøÅRkX˜[\?™h\çq#,Ì%ùšž´•Ù!’q †QÉöšLÑòıu«b=µzzß½óÕˆY^‹¿ÎL^ûH.Xdÿß<‚α‚eÅ_oì)ý¤FËñçׄ–ܾÜðä¶i‡!Kï[S¡ÇĨ䊟ÌÛ–²™gMÄ;OxŠ`¶;$†¯ŽIKèa˜àn¨˜˜G‡ %ËFO.ëXpZL~wS$À‡2o•n¸-Ü‘N¤÷Ûñ£¡¹ñËD[Åê®Â¦À§yW Ú®²æà 19pªaËb’ ¨JŸ6ç ӭƉµ×s±,õ.Èn"ãð)׊v¢Ðç³9wHÍ[ûáqLµ¡“·1脘í?Â*8Aöt_K/SÑçKÎ ƒášú%°qS†)tn°ÇÄíḠ²é¢4¬P²}$ö£ñfŸÞ×Hõ,!cìs€2ÐþËZ®jRaf}¼>'™û¿›{eÅù¢k ¨¸ÉçæñÛ—²¼±¼ l'Ñ…ƒª-§¦g€Œ$-8ct×ùmÇ Õd."ÝC´×FF`¶,Øô»¥³ç096„S TX㉋ƒC{K{³P^¸AùïJܹäôZçjÙ(å¾y"ü Bò£ 9,–E]ŸeIŠØækÛùn™ê2=$ ð¢ÅÖa?Õùøg€ANˆl¥€¿yžÅxžØÆëç6lJ¡€ß•¯5«å¼½®fÝa4¸>ºî®”ÅK«•2þ_miÝzç–¢§°¾— „Q®”$sx¤ãQ/7³úìϬ;r¥žÊf°˜ñ²Ý¸q€RîR{Œ¡å›r­Û_ù_õ™5:΃–#ùjÄvÚŒò8[ÔÁ»N* ݦÇçò²Lp¢X-Wb4ÐÂèÅ5ŸÒ+AÈN!hÏòÿF¥È:Ð;ŸQºž¹ÈAÖ–î% [“À•èé¥Ñ_¬œàÚ‘ \µšAW×T(Yy~n¾§QjI̯· Œz-:5ªQÍɘoîÓGPpmª!*kÊ­SÔZû¯|ê6Æ¥î Ocwó@œy-¶±Ï°êf¹³-‘†Â û#â†ÉyÚy–ñ£êêa+f–³årÚólÖ´ì¸XÃp—ŒÑçôÈ݃osÑBŠß÷t[ÈÚvoBEęNJj à®èÏ5œ>îØ(»×ØGŠS_éø…Ÿ‚½?¼5´!<)2I`Š0ð‚ }f·â>T/$Y èÎ%7÷0pBÝv2ãö#ü¿Ç—Ž`冉’žw}ðq'TS=eWäCLìTÀ‚L¤Ió¿ILC€dPKùE’Ýr+•¡"ñÿk ÊÖMf z(K,Fÿƒç—D̈ˆ¥®-£Þ-k€¯÷>)L”|Òu{ƒŠJïg8W³ uà+j©m ‡‚C¿Â7L>w‹rW… €¦P¶?ô²†ïmmL³1_l8z•aR£|Åþì)¥Jû‰ÕÕl?ñè·€Éé°Ìì©šŽ³)ˆ¸w K3–›ü:‘ªùë°iú+ŹԵ޷vÃ(Q‚bF…Âãƒv¶§¥?¥AÈí…ݘYÛ(ÿ–ƒØ!îÛ3î<»u‡ùœ%Ævà†”TóÕ­ý$ëÊñÊkLÇÙÒΘòDU–ÄÂL,D–Åô|/ R©K¾s¦ÊP“8FÒ4ŠA-‡©ø 8…­[h'U‚´ìȨ Ö8 Å·vž¡€r*X€ Tgôy®äÏ‚™ü4 ÷GN_ê§úXyÆ-T)åwêÙ²L•Ò–ŽÐk¬aÅÔ꺔:z2Ø™6Ä\¦ò°eìØù´ÌÁ%ˆ»Fqv#ŸžFö ¤ëù´½Fñ«ªîýèÉgiˆ&¾g2ý“j< ¸2âÅMMQq…¦çqRgÀøj9«³}1QÖéËç¹7Q©GÃðùCœ¦<¢ln³]P¯öõî Iû¯3®»² |3[$²~´2<)\~„?/÷„cÓ¸Eû?Ë'd¸ØR{·DòŠôn雨§”Ñš §ýyßTŸ›I•Ékzfìä?Ä¢àvNvvzþO¶Æd<²‹ÝµÇnæ.Sjß¹ôkkÇe³—2Ua²£ z¥(å+1ÞO2Æ2|æˆa¼F©jʱ8V"§¦ž¾–‘îíЬ±þIWñ”¸Jnsä@Rù\ð5¾¾Œç´ýë¬u1ÜWd†ÈÃñé#³ÏÅ€Ñ èó ³³…É]ØYzqÊÇS@|¤5 '¤&™T®üÅJcTÞø«^²R¯¿—t|Ux©úµÆóĦN³6àbùÙmÕ<; ÇIIm, ¯C‰‘Õ:Jƒ„›X©Rjƒ”ïbÄsQ|f¡hS`C:äyó×J9]U¯Üë›/ÓÞQ·DOœéžâA=nô\,2†Ñ4¥ã‰Ò>QÖ)YΡóVñò †ÔäâǧÝV͘&ÿå¬+©3HS±!i@Â!?•µ{&ã«§Ÿ3O¿‡ú‘«MؑϑÖä‡LY ÅÎjƒ(^i ¼‡6­*+ÚbÐêF sPjèÚDX:PgWÿ%ûä€üéd½«^/¦šØ³_ö‘³-½ÏÍÑ–Àm÷bJ;Gé~t`¬²W`žoõ"‘˜A•¸³´›äRpíßÔt‹1D(ç·Ù3bìNÛ°¯¾“‹—­…òäf9È)À}ŠÀÅ*WñU¨Ru‰ìÆE–EëÔ 6?s£!S@÷þÄ`Ò<5ëë…;8HFðÁ“„\Þš[A©¼þñï•O0¡ ŸF6¡ÅÓ-ÿ‘–…ê¹õ{‘&Bà œ^N¬bØû>b'd)7KÁ¢Žê;© \Þ£óIÁ¶zÇšRãîHŠüÜQµnbòäC©æ`\gkQU'TQì¿à[†·ˆ~¶ O‚òÍÑ]Ô¨ˆÝ²QÚCŒÁÿø?Ô_TwúÛgšñÀ7–.¡€ŠÎ %Yº,p\ÛÎÊsºþ%2¥»yœä¼$ÅWq8«Ä9Ý,Ñ”hƽÈ%·‹à~Vý*gùN¡°ŽŸ éø®ÈZ¸_¼«¬ãŽ$ƒžìaÏçÇ^dÎ"¸ŸÕmëýö]$Á®U¢ZiÙ 6žê*d¬³_ˆUôô»$ôtv ÏšviÜRU9¿0—FÍ÷ºä°PÁóþåF¡‰Õ”nD]b<çÍ<úA”Fûë}$´ÎåÓ…^—¹Ü¬Q…_âÎÀõBd¨éEzE<ˆ]rIæ®z½;fÛ ¯÷²yy¸¯/•ÿÿ´(÷œ&dÌ@dHA…±áBR~ã+ôVâßh€ûô©¾· Fof¬õaKƒ)â¥àÃjSÍ3r¥Jcñ!ÄŽÊv}/5Þ$©Õ‡ø0Ý$ÁAðPœ¿É²Ua_&øì,®Œ¼k”pD?ì·Hè}ײ¬P.È?®ýûÉàÝ·ç0\±}ÖÚ¡§É‹ìðÖ›«þ™E˜¿-ÃmkÄDœ›Š…Y5M´o—S¥õg1åÝ+ž^í"ÎêõÌ9ÙÉ ±öD (×Ð`zyS”à#ÊP¨·Šv ;LjGKšYùãßá•ïwÍÖÕ˜Ÿ³Më$q ¾0ÕR Š:×0¥9µF¢”W8¸ºé}  u•'Bé¼}ù;þé×c%ƒÛP¾c&‘r*‘†d{e|4&m×̪ÒÅO´þÄa®ºƒ$ж‰vøÄÓ“øa⸑`…y‡è¹ežì;jEGü5ãæÏ ùÓ/]š”ˆÝðª6“f= D’+h:¿h<,I[}«3âè›ÿSmxÈñ¯ÏßÒ»U)#ö¾o±Í#ò¤¾­ m|©—s#[BßBÌ‘ :lœgÒ“UªÍ‚í nMò½Ôæ—Í´wÎ܉›Óe]‰hM¸ ȲÙ1ö+ºØ°çõà¡Äù:—i æ„[øŸ1¿±ÔºÙWQó±'ÿÇ/¤%¦W³›_'›Î¶Ø½7WÜÌ¥5ÁUŠÂÏ%e$à“¹'Ì.ªE{Û(víy‹áV‰Ã/ªKô6ôè–†þ ê¼EGÛòÊ …×K2?Ón$’A45,ʪ7c§wKÍ%8ž²íjþN,šzÔÉd²ò£Í†h¿$÷£â®†Ç9_NçÊÆá;ý¿ €y-_’¯~ÈÊ×nêËPìë÷µ£áõus.1kƒ¥Çîe'Ÿ—ðhÃÌæHƒ7B:3f7¢ÍJUa¸µÏØãÁ˜ Ц:RïʃœR4i· „^[½¬tâ€LjVqø¸6a(~‰Wàû°iÝÒMÂIxį«Ï3ÿg\‘!9­šÑ©²…ÍzT«p# ŠÊ]oà'¨×Xßz–%Ò¾ýŸ Øfpîãë¶½VV³)w ’É;·5 Ôž÷p Ð ÚºÙ/•‚©KiÂ"à¡F#Ä–©Úêæöázz\e-).­¢ÁÈCñøåºWN²;/¼værñpðm«ôl‡x¼UJ ¬¦¹P‘Z‰ÚŽ¢…Ó¾Qþ2><òž'†>c¹jS¢Î"/ÿ5òìˆO¬Ïgö›.Wié„÷Qûÿ“75lÏ—–¯·KÙ± ëdÜû­j‚3œÖï`®p #Ú}Ó6€¥SN‚Ãõ“'.ušÇðRºø-Ž×qŸ só ¹”¦V½Ãçp ßBãÇ_V90IÙ€bÇL¶,ñ4ÄH }±ãt/Ü=³4 Ð/8;-[K;%iK>ÍG{ûv[ÉMdDDÚµöŸ¨á7aÉÁ¦4ÇÑû°J‰Oïþ]CÙhç$+ì×9vÓ±éÓÛW1¸KtÈá0§44sC±w©a{ÏÛ:‚((5§G‹TäŠ'9àN´tylÁ8—aø»óáµùì—søq¶Ï•‹ž*S„­.fÁïùúˆv¥žm{;¸´ÃæÑ7lã±_3 …±=¡›â ás©«GÀ‰tçb¨°òÒϦvT‡¼Ã™á37lV¼}>E‡r7÷ €ìßê#H‘#œÈMÞÓþím¸ t+‡KŠÄCì‹Cù&ñÔþ©°Z±ÁÔã÷J;ITÉ ´‡ÿimb¦Úõ2¥Y‹¾ ⧘˜nšÛëž ®íÎbgÅälPxžóŸM ȸױ޻6Òå5€»Ÿ¶¼ kŒ 3'ÍØUÄý7q$NÇ©¨Ìb÷#÷?Ÿ'þ3k¡´ûÃ]¡ü[RºK#Å+=ˆ1ÏmŒ$Fh§|c‰ìÀZŒlÂ:ké ‚0'öIàÌá1-T7áÙØ¥"¸#ª ÚØ<Ð^°ð©=òøº“ ß>@< þ² ÿKTçÉ&pƒ÷º‚âûÖ‰-¿Å€+‚L~Þæç^Ét]Eˆbä±éÓȶ;ÖT\JÊm…Qç°ß9V™voð»J¿ó =Ÿ¢PPsløF¼)"êÌD¥´i8Ã?öÒXþcŽÅF¢‰"Ý:ìøù`.U÷òÏŽ#%üÀ«RrèÇŽ“lr:óÙ:`$Af'5ïìaìܪûZ‘ÌJ-Tèéïî¾Ðû†üAgcø·Ë6DãdâÞdêc˜DÞUøjs^§LlÅ–Ï_Q÷vQåÇkâµÇ¤Æž­y Ó]ÝbW$zʲ¨˜hN`´e"sªEÙÁS²h$¡­tg kÍ“qý[ÿ<ªTC[%ÇšœN7޲%ÿÕ?‚qL‚<ÅÕÖ÷pIe$Óh‹ST@.¤Q×’g»yÒaԔ̇ô°çe®ë@0ô LúÔ+ 1Þ3WòövÝ^úx|gïD–ó"hŒ¼ä¦›ƒ¡¤xËeÖ¨Ó÷«„,QUJ6QóèLIÆK€.Â«àŠµKJÛAo]Àþ<{Ƶ2¹þ ×Ïp_P™)Ö–Õ°åD#ðAÌ/>tsÞz‹Hޤ-‰íDdg¦ÅL{clþ”Œý’=Œˆ°}™Ñ#YɇݶK™ŠLÑÙŒÈ`é’ƒt>lê3“ùÓ'ƒß'*íß§bSF§iö) aÏ]ˆ<£yß©˜ÿç6°Àbx­ \m›.±n…§ÈÁ H%J›_iqUXüjÊÞjïÇÂPt}Ôš‚hÞ»jË zj‘ÆàÁ»2x}:xCmꄽh¥^÷¶49Àp†ÿÔèNIçC}ÍJ•üȺpÛ…tšòclFÉYhúH¾÷;çiÊU]C²5 £óeÞ—saGl+îs¹neÙ«Xê™b½f#ê ÞAÆZ døpÞìHZ;œ «·†ÕüûôÕÞñi§µ§¡yžaq½}ßr—ø_”j²9Æ#œmù°VäÏ)VÆ/x`~•ò2bï™Lîí^íÚK_­IeieJd–Qý°GÌ¡½Po@6»€U#ÄnMZ^v“n‘5•6í'uUIEê¥ U^6²ÞøŒÖÏAUªEb-Ûˆ“|3SáªÌórÅg Wð•;ÝÙZ"ÞåE”QàÛëM;’´C8A,[ï7°,Àm)°!e‘‡L ݣءKª®–‰bOÊw×#èÍ.¤ØK?ü@"± ßó'Ö^w]‚[-\pWÛrÕ! ¡v©Ä ®^s° ¬=Ùx[e×·•{ ;*z"ô~Ò^¬\MlYŽ¿Z*ƒ¥:eN¶Ï|2ëÊ2;qˆˆy®±YSB ¤òw!SѺ öëð¡ß0rA%ì­œÞhÁµ µ$˜Ê1€5€„aœ¤&¼aieÿ{}|æÚvõ…Õ5SüᫌãV/•ÔøÎc@=¹pÏ‘BQr Î“ DÖ(b;"»qì¹{ˆ‚Ùu­ºfñ”‹*:G§7ÑoÌAd—=¥twô?ãiG$B#›à­®—j.übœ¦2 '"¹©½JÜw ó5`õônYCFY‚‡;×e]Í!oï`úÖ¯.Í÷ ~¹]T¬iØ–ËJÉŒ=8mœåµCN$rmر0\¨Sf9á›Ò£ƒv×´0Käèhç§ù Då+-ÔÔ„Õ=jÂekŸ¯[¼¨ JAêò‹¼›Éd ½IEÝpÄ1’俾YµÒÛ&ØÚé謄Lð>m¨´ÄI LÞìa÷E‡,)Ÿ"9•ô”ûp‡›ºµ¡x¬z¢¸­œ¨¹Žl"Ts” ] Âø‚>¨% Vyèy´Öá±MÕ>P7¸P Û¡ÝÇQ¿×©Â¦¶¦~=ø3(Jaf,[&®ï! U¬V¾Ï¡ôÎoGhõ)5»•`R =š*œŸø´ïΔ¿Ø<¸8eÒ~㵬² @XoôÜü°÷z >Á»µîÖ´˜è(Ȥj8”™8çD@vëÖáÔå[¬g-q² ¤+‰íå-Ò¿e¨ÂuØØ-ZÐAßüÍ÷1?Èi·º„üÜ탶`L#­`|U£ÊšZ¤-–éaØÞ—ê"3XäŒR"×Z ƒ=ÊÛV¡È5ÞÆ ‰Ÿæ²b§ªf ¼bƒ¹³Ã3ú!f@r¹–¹^_^±­9Óœx…ARš&ÇrqRoÙ3&–þ®Q˜Í£N飒ýÝŽÙNuh=xΞ¥ÖW°ðgy¥ÓYκÒ÷®bYŒ°Ã9–hTeîÐR…–ƒä·hwÏñ9‰9Ö…9&F;ñTCïü¿àL½ç¯(,goZNrK Ì;&3†Í£°%¡šÒÕ²5áÅaN û'å]êç§üÔ5 B=5¨ÍŸú"•ÈÿªöFŧó2 ,ï˜Bo~sF¸)o øÓó%¡XKÚ9iæO( Îi@IPÙØ|…ɱ^ÎZßÁþ¬WxÖÖ³ÈR"u/TÅì£ê¯ƒJž=òº‘QšhùG‡9်úÜϵ7Îy„{ï r `ÚÌÄ[Á«ûÀ•qçz„’°–ØfÁOš 7îZðÉ ]ù«©Â•[ù¸÷þvNîÁÍ(`1›øãÏß,Ã’XÖVæzà9#^+"áó{ŸpÆ yæâ4¥ŽÒ™¹)]R-Û)„H‰«ø@å!gá_ÉœSðLOC}-{‡*KƱÀì\L×K~+ð—KË…-,ýÑÁ-=u ‘¶à¾GV`©ê¾±ïÈÐ\=D`zá0µÅÉ´Ö›"‰n“XS‡ñöIžü*sj䤛ÄÉ8Wà²ã*þ$^E}P\Ȉ ‚‹Eõ‚,¾wuvÍ#U=Ì´q’\à’7WßþºåØPˆ¬o»‘ñ‰È’p­‘ã£/H@—}‰ !*7H™>X²š~ ñáú| æç‚žifù<ÕØÙ:š@˜Œ À޵…÷løt7ðD.I„]n7lºS›úI œ™·Á¾ü)‰xëh\=„(IÀ€À­Zù–RI¨Yx{óñ —¨§õˆHí^©0öÅŽ4ñè!鿾BøOÊþÒ<®Ñ‚Ê -ïE ”Üú™‰4ÉZ#ŒóšÐ°™jâíY-g†há¼ãµ¹é”á8»¯|½0‚¼UfýNàÍ"?æý^k™’tøK¹k ìe:ÒêF8Þ¬5'ŽZ~~æ¤>§,UH¬aó[¬¹ SúO¾¢íÆoS’CvY)C>Îè§âž¦GJÑîó¡LuC)ôVðóÁŒÎ]²×~êØ¹À%*yMwçñ¼ Ëïø5Ç-2ÄoÞ RîŸ)J$5c}ç‹uVXÊhZ¶ êž¼ZE¯ ¬h¡39:"Æüm"ÉÂ~–g©[kïד,F[Àqt(ùà©Y>ác׺W“‰®°ü=ö÷>þwanÚô]ãû†Ö@V§ŒeQ|L(¾*I¹Œ•ù›\*›)ÌQ¼^ÉáÍætkR ´ß¬£Ü@Â:Ý¥œä‹ùø®ša6]v7^…Ü1huÙÒ‚UiÑK“[o}@áS›µ¨>3~<ÇEÀa‹^rêÝà'ò ŽÄTÃ?…"ñ:õ?í9£PÂ~A-5xFH­$ÅŒ2ÖÈÓ,ÕôëZ¶t%:ú;NË×·ogÄäW^°­‰éöôûJVÏH;Ê_šÝx¬ƒóOŒq.S!^W8¾a§±iÊê9 QƒÌôU"a•õUjkW Ýñˆü_­Ê™ød`ÞN$\þqÛ¼çÄ"Iè­fm4m\kgPÀ¹ÆL8/.ìµîž(½v&úßǼ¹V³wÖÖ‰„¡fâc“ˆ`§¤@κ²Ÿ4|çš¿Ãâ4ý·¾• ½åÆ^ØŸiÚõ¾L'GæeLªJªQPÇÕ‚Õ<™½ií«~ªo±Ê.K¡LÔþ‹¿Ý¯› ^X!ÏOŸ!ÁÖÂÃ0 ñe’â™&·C˜'ª(Ÿz¶º‹Tz:+©c6 }&n“©i}%LÛÉìdc¿ ï%àmMfZn>Ž+id sǼ­?P¾¶–þ#Þ4ÝMpUXÃ~ÒÝŽn³X!Ÿ\gÄtþ‰ðOÕ‡­–¨kTØÈpâuß½"¼N`TÀ´C?œà%è<ëD3×goܤIB3ÞŽô;9+àÉùG‡p‚Ø,I2§OO&aì @úJ[¯aó-7uÝ]þÚ†¼Ìµ$‹ÐçÄ0Ø>  SkšKÉ(Ý7 qð«Kaóº ôžÚ+¸Bèxâ>÷ é„‹A:g¯ò¿ÒÉ>±üÖA¬®w¾«j+…9 N„” ³Fci0ļ$ð@ÒÕÿÔš~gã®6ÐÓõ%ž½ºg‘ Œð©ùùÓ‡J¾&ÕFp'»×ÿTÕ_þ•JF¶hê:ÝMÞrT'"’?{û€÷lþçÚ7Ô5g%¸¸ÇUö‹Q÷éC\=Q•lA:~È|„©¾¹Ñ ì^È@ÝÞÊ£{”ôø{=ð·(ärìð—FêBÉâC…â2ëN€ÿ 6\3ä_°¸¢W4u#Ah| ÒÝx©è§¬5  a»?,(0Ió>ŸO?ªïMí˜ëêØC~N„^lXi«Kˆ–ú¯«ûDIãž@ÕX¦“öeX':˜tÑøðë-ÿnÎ[Ý 5=ù~ÁZ9èI:e×>‹\SÄ8c±¾“m–ª™_3ÿb…è.ËÊYM Ñ(’P³h¸/uš¿A°ú{ôÿHIˆd©‹±½eÀ„&ª]h2´ä4oÔ™Ì<œ-©ºÐƒPžÉy+ˆ¢T"]-7çšQ³S3Ӄ繵9ädÊ}'LúÓQ,.Ñšs×â.Â^S€×‹øš²"fjÔWÐùr‚$ÕwMsRb£º|ûo Jû¡?¯ò׿¨e“W¦]-:ˆ^V°À­Ù]ª¹öÁ_$“Ñ_ Íy[ç+,Ð.^5›ØŠGòˆt/F`t6ÔèGùQú4N$¼wOzŒ¤â…&’Tvþh`«GÀ@"æÝ͇y¯¢:\æ%dÏ«e”—œ½‚F·IÙÄ…-ŽQŸHxO$°×‹Ó@}ØD^¸õÝÙU­6”"+ì–‰)D·ŸZÇ™®ã£µÜ¼¼yP £]ZÞop920ÿÍ®-Þ]{ûçÚ¥x†•6|™@yò P½Ádip•.ÛçÍÌ­ígÍ-¶µ½@`‹’›yü÷]÷Ñe€s›†&‡ ª^„zº‚UÞ¥1m'ÔŒˆÒ ËøZOé—…zv±8ce2{BÛÄþ[ð½jR¸x¸S¹Ú=ç^rèˆJ7#^D ĪY«r {ØMq=µ}ó9çl£ &©dš®iþ¶LÝÓa´Å”p0LcDôµÐºÐ¬»Ô7J¹xh¤p¢z¨Æn†¦gØÕo^GÇå¡õ*ÃQ»Œ=à“;˜“ÄD©X¥f݉ѯ˸"R^‚íQÑHâò·sÅ´¢@¡KºŠ}R­sßÉWP’½¦ÜÿzGÉN­8ä··ÑÒ0?¨Û©û¢…÷;cpýÒ&$9¸¹ÅösDœu VÃØZ~/êàä­2øh=5óuOy šêRJ£)[p¼ƒGȰ·ÄCç œ.«KQwÇA3äºv‰ä®CîÄnHÜZÍ^¨íaŒŒAö½$_ªÌRß>C’'^µj7¯cØ q.'TΨÂZi¯eÎ:ðuPëýP^Ïs nÖ;$¬ÄsK•¼ÔX€ÑyMDuɾ¹FÆ;Þ€EYÜÿYjVƒ8´õ=uÍe¥³¶rYòyAª.Å–nì²˜Ä rBª1—ñ¤¦ø%ùl<ÿ2V V©Då|yÁþQÓ!PñW³­ÓrS6 ˜9{rwS@ŽÄÒõóŠÁpeÛˆE>³<ņ…T®rÐCy}}ãWµ¢h-{ýɾ!ü‚o NL‰,x…î>Óƒ° ©µys%Èñ¤§4DgɸɈ¼w*}ŽG.lP²]{ŠíšY6(ð€Ï[Uß±¬9êï6]ׄ°šžûÍÂEå©ÿ¯æJdSÈèY´hÖ…%²>qiBG–¾nõŠÈSå´K{ÆÕÂìO© 6X®¼àXaq“#€›}¶}3‰m–Šîñ‹’Tl÷’5æå”áôe>úï0u\öÅãéBÇÞ#žc6– &%·W/€åçP_‰1µ®°gøÌ~[ðµú[D‡4þô®Å²±Z_:L´ w‡ú41;bB3?*ñàÒ‚è{À¯,«®çâK¨®¾²¯NOx”«gVe¹ÞØ@Š-Î4WÛH“YØÚ»òG+‹#z%XŸRJ¾~„üèu_ É(<­¶Â ýZà|—IËúáhL짆xéØ=m8¨†‡: j‹E0É,$$8墼0ÐÁs2Üt¶ï•'v<ê«XßÒ•X󜒭;vüHÑïº »×kÁËô¨Fª÷!ÊÅ~‰µíV¼¯Çñ¬¦$-RöBo©|r"Æ¡£òÝAyáùN£3qg^,Ì6 ŸRÌëiš×*@3û6áÞAìj™sW#[f±âù´÷?r…jªt[¬ÎPkŽ;“dàãAHéaÏæl Ú~³ÖÑ’á|°.a$úÓwÈЗ go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_literal_create.out000066400000000000000000000000401427672601600263400ustar00rootroot00000000000000c†\ÄB×éÔÃ)Æ0¢\(æÆŒg,ÝÍ#¦)/go-gitdiff-0.8.0/gitdiff/testdata/apply/bin_fragment_literal_create.patch000066400000000000000000000003521427672601600266360ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/bin_fragment_literal_create.src b/gitdiff/testdata/apply/bin_fragment_literal_create.src GIT binary patch literal 32 ocmZQzU`lR_IpTEvL*`JUiBtu5L*`JUiBtu5ÿtÓ7{–´Ù«{•M`ÄÚ »Ôõ©·ÔOŒÒÒ͈®´àÒwšöÖs÷’Lž¦m ‰£×¥\x®hc/6¨*‰›km>-å‡_µ•e¤¾\…¯˜¿£SØ¢¼àÆŠµv›&úo‘Öìê¢a¥¾~h’ý¿€îŠØÎò¦'ŸM‹;vù€t™süÃgéÎȤsÈçÌòÜ“/¸W• ¾§TÎ N–†È©â¡€qÎr Ìã1é¡¥|.µê VLТ Ã'2ŒÀo÷6ùª,*™ðÒÂÖÌ2×ír•? ¹|@²ioè¢äBS¤pɉuŠç+çgГ±Iäìx•¶õìTçI°Ô uÅÚÄëPBñ®çDá7d,Óë»pà6ñjot=íK{da8qìÃ+3Åeà¯NEÙDO§¾<ÚŸ7ƒ;Ò¶Êz26Ã8&í#AÛ?û¿ÀÕM|U”‹"j>†€©!ƒ,à ¥ÞÖQ]»´<ƒW5w†§Å º›" 5lÔ#<Ò½‘Œœc1×–;ÂFa®ÞE­v!©/ }Üggl¢bþ|¼ÀÕšÖ{*‰bXÅAb»ÆJ5)¸]{>¹b•ØaŽŽš8Zs”"˜t£‹5“x¥—®yµV“ZÓH“7¾÷@Xü¶qçŇ¥{~F-õ#Ž[=d(Íé}.±»ýŸÃéê¿ë ™Ž<ßo›oxyòRÿƒc¹Å‚£â ¾ðgißÕ©è‰ÓÿF[U¿OÜYc™,e«*§1¿aÐÐ9=ß›UÃv*䨄2 t[…JàŸÂa†¿¸ŒÐ”3rsÿ¤ë‡ÒOSÎCP؈TÎϯÝ>áö1ëê#”_´5ãÏǺ:«âœkó_ܼhö±{¾êÃ-Ž€«Es<ÿ'Û`<¡áUÕ§ÔªÈÛzžÈù?ކ¦¦JÌ/IÙ924¤rUt¡5Úek>ÌM÷e¿¸”öfÕõ†&Ã>ì/Íãè$+Ë‹˜ðkh"Ð÷ïtLVEIþ*-ì½ÝìE†t¸ŸTD (z‚ÿÖ˜~`ê €^$RÙ©Zе(ØŒØ7¢ŽvI>0ÇÕF3Íe؈Q¾,è÷Þ¨-`Éûù!ïÂẗqz¹Þˆ ¬§Ù>C.:À?ìcJ`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo zWu(4bg|8QwzZ|1e*rL4P#)`FenXTQ5=J2y;^BfB}4 zWkisH791|vOVl5e-@^VLX0s~Ky_UyN!3;CgPr>Edj0j+0gOSwSsFsr$0q6zUJphÿtÓ7{–´Ù«{•M`ÄÚ »Ôõ©·ÔOŒÒÒ͈®´àÒwšöÖs÷’Lž¦m ‰£×¥\x®hLÙõ¥€g¿»g;7L#»9–eD.ØKÔ“ßÂþf³*Ͻ–ÇPÁ 3ÓOÁåÚŒ``ƒ‘Ôܨ–ØÎò¦'ŸM‹;vù€t™süÃgéÎȤsÈçÌòÜ“/¸W• ¾§TÎ N–†È©â¡€qÎr Ìã1é¡¥|.µê VLТ Ã'2ŒÀo÷6ùª,*™ðÒÂÖÌ2×ír•? ¹|@²ioè¢äBS¤pɉuŠç+çgГ±Iäìx•¶õìTçI°Ô uÅÚÄëPBñ®çDá7d,Óë»pà6ñjot=íK{da8qìÃ+3Åeà¯NEÙDO§¾<ÚŸ7ƒ;Ò¶Êz26Ã8&í#AÛÙ=˜^?û¿ÀÕM|U”‹"j>†€©!ƒ,à ¥ÞÖQ]»´<ƒW5w†§Å º›" 5lÔ#<Ò½‘Œœc1×–;ÂFa®ÞE­v!©/ }Üggl¢bþ|¼ÀÕšÖ{*‰bXÅAb»ÆJ5)¸]{>¹b•ØaŽŽš8Zs”"˜t£‹5“x¥—®yµV“ZÓH“7¾÷@Xü¶qçŇ¥{~F-õ#Ž[=d(Íé}.±»ýŸÃéê¿ë ™Ž<ßo›oxyòRÿƒc¹Å‚£â ¾ðgißÕ©è‰ÓÿF[U¿OÜYc™,e«*§1¿:aÐÐ9=ß›UÃv*䨄2 t[…JàŸÂa†¿¸ŒÐ”3rsÿ¤ë‡ÒOSÎCP؈TÎϯÝ>áö1ëê#”_´5ãÏǺ:«âœkó_ܼhö±{¾êÃ-Ž€«Es<ÿ'Û`<¡áUÕ§ÔªÈÛzžÈù?ކ¦¦JÌ/IÙ924¤rUt¡5Úek>ÌM÷e¿¸”öfÕõ†&Ã>ì/Íãè$+Ë‹˜ðkh"Ð÷ïtLVEIþ*-ì½ÝìE†t¸ŸTD (z‚ÿÖ˜~`ê €^$RÙ©Zе(ØŒØ7¢ŽvILöÝgo-gitdiff-0.8.0/gitdiff/testdata/apply/file_mode_change.out000066400000000000000000000000531427672601600241020ustar00rootroot00000000000000#!/bin/bash echo "this file is executable" go-gitdiff-0.8.0/gitdiff/testdata/apply/file_mode_change.patch000066400000000000000000000002071427672601600243730ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/file_mode_change.src b/gitdiff/testdata/apply/file_mode_change.src old mode 100644 new mode 100755 go-gitdiff-0.8.0/gitdiff/testdata/apply/file_mode_change.src000066400000000000000000000000531427672601600240620ustar00rootroot00000000000000#!/bin/bash echo "this file is executable" go-gitdiff-0.8.0/gitdiff/testdata/apply/file_text.src000066400000000000000000000063341427672601600226250ustar00rootroot00000000000000this is line 1 this is line 2 this is line 3 this is line 4 this is line 5 this is line 6 this is line 7 this is line 8 this is line 9 this is line 10 this is line 11 this is line 12 this is line 13 this is line 14 this is line 15 this is line 16 this is line 17 this is line 18 this is line 19 this is line 20 this is line 21 this is line 22 this is line 23 this is line 24 this is line 25 this is line 26 this is line 27 this is line 28 this is line 29 this is line 30 this is line 31 this is line 32 this is line 33 this is line 34 this is line 35 this is line 36 this is line 37 this is line 38 this is line 39 this is line 40 this is line 41 this is line 42 this is line 43 this is line 44 this is line 45 this is line 46 this is line 47 this is line 48 this is line 49 this is line 50 this is line 51 this is line 52 this is line 53 this is line 54 this is line 55 this is line 56 this is line 57 this is line 58 this is line 59 this is line 60 this is line 61 this is line 62 this is line 63 this is line 64 this is line 65 this is line 66 this is line 67 this is line 68 this is line 69 this is line 70 this is line 71 this is line 72 this is line 73 this is line 74 this is line 75 this is line 76 this is line 77 this is line 78 this is line 79 this is line 80 this is line 81 this is line 82 this is line 83 this is line 84 this is line 85 this is line 86 this is line 87 this is line 88 this is line 89 this is line 90 this is line 91 this is line 92 this is line 93 this is line 94 this is line 95 this is line 96 this is line 97 this is line 98 this is line 99 this is line 100 this is line 101 this is line 102 this is line 103 this is line 104 this is line 105 this is line 106 this is line 107 this is line 108 this is line 109 this is line 110 this is line 111 this is line 112 this is line 113 this is line 114 this is line 115 this is line 116 this is line 117 this is line 118 this is line 119 this is line 120 this is line 121 this is line 122 this is line 123 this is line 124 this is line 125 this is line 126 this is line 127 this is line 128 this is line 129 this is line 130 this is line 131 this is line 132 this is line 133 this is line 134 this is line 135 this is line 136 this is line 137 this is line 138 this is line 139 this is line 140 this is line 141 this is line 142 this is line 143 this is line 144 this is line 145 this is line 146 this is line 147 this is line 148 this is line 149 this is line 150 this is line 151 this is line 152 this is line 153 this is line 154 this is line 155 this is line 156 this is line 157 this is line 158 this is line 159 this is line 160 this is line 161 this is line 162 this is line 163 this is line 164 this is line 165 this is line 166 this is line 167 this is line 168 this is line 169 this is line 170 this is line 171 this is line 172 this is line 173 this is line 174 this is line 175 this is line 176 this is line 177 this is line 178 this is line 179 this is line 180 this is line 181 this is line 182 this is line 183 this is line 184 this is line 185 this is line 186 this is line 187 this is line 188 this is line 189 this is line 190 this is line 191 this is line 192 this is line 193 this is line 194 this is line 195 this is line 196 this is line 197 this is line 198 this is line 199 this is line 200 go-gitdiff-0.8.0/gitdiff/testdata/apply/file_text_delete.out000066400000000000000000000000001427672601600241470ustar00rootroot00000000000000go-gitdiff-0.8.0/gitdiff/testdata/apply/file_text_delete.patch000066400000000000000000000072001427672601600244500ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/file_text.src.src b/gitdiff/testdata/apply/file_text.src deleted file mode 100644 index 3805ad4..0000000 --- a/gitdiff/testdata/apply/file_text.src.src +++ /dev/null @@ -1,200 +0,0 @@ -this is line 1 -this is line 2 -this is line 3 -this is line 4 -this is line 5 -this is line 6 -this is line 7 -this is line 8 -this is line 9 -this is line 10 -this is line 11 -this is line 12 -this is line 13 -this is line 14 -this is line 15 -this is line 16 -this is line 17 -this is line 18 -this is line 19 -this is line 20 -this is line 21 -this is line 22 -this is line 23 -this is line 24 -this is line 25 -this is line 26 -this is line 27 -this is line 28 -this is line 29 -this is line 30 -this is line 31 -this is line 32 -this is line 33 -this is line 34 -this is line 35 -this is line 36 -this is line 37 -this is line 38 -this is line 39 -this is line 40 -this is line 41 -this is line 42 -this is line 43 -this is line 44 -this is line 45 -this is line 46 -this is line 47 -this is line 48 -this is line 49 -this is line 50 -this is line 51 -this is line 52 -this is line 53 -this is line 54 -this is line 55 -this is line 56 -this is line 57 -this is line 58 -this is line 59 -this is line 60 -this is line 61 -this is line 62 -this is line 63 -this is line 64 -this is line 65 -this is line 66 -this is line 67 -this is line 68 -this is line 69 -this is line 70 -this is line 71 -this is line 72 -this is line 73 -this is line 74 -this is line 75 -this is line 76 -this is line 77 -this is line 78 -this is line 79 -this is line 80 -this is line 81 -this is line 82 -this is line 83 -this is line 84 -this is line 85 -this is line 86 -this is line 87 -this is line 88 -this is line 89 -this is line 90 -this is line 91 -this is line 92 -this is line 93 -this is line 94 -this is line 95 -this is line 96 -this is line 97 -this is line 98 -this is line 99 -this is line 100 -this is line 101 -this is line 102 -this is line 103 -this is line 104 -this is line 105 -this is line 106 -this is line 107 -this is line 108 -this is line 109 -this is line 110 -this is line 111 -this is line 112 -this is line 113 -this is line 114 -this is line 115 -this is line 116 -this is line 117 -this is line 118 -this is line 119 -this is line 120 -this is line 121 -this is line 122 -this is line 123 -this is line 124 -this is line 125 -this is line 126 -this is line 127 -this is line 128 -this is line 129 -this is line 130 -this is line 131 -this is line 132 -this is line 133 -this is line 134 -this is line 135 -this is line 136 -this is line 137 -this is line 138 -this is line 139 -this is line 140 -this is line 141 -this is line 142 -this is line 143 -this is line 144 -this is line 145 -this is line 146 -this is line 147 -this is line 148 -this is line 149 -this is line 150 -this is line 151 -this is line 152 -this is line 153 -this is line 154 -this is line 155 -this is line 156 -this is line 157 -this is line 158 -this is line 159 -this is line 160 -this is line 161 -this is line 162 -this is line 163 -this is line 164 -this is line 165 -this is line 166 -this is line 167 -this is line 168 -this is line 169 -this is line 170 -this is line 171 -this is line 172 -this is line 173 -this is line 174 -this is line 175 -this is line 176 -this is line 177 -this is line 178 -this is line 179 -this is line 180 -this is line 181 -this is line 182 -this is line 183 -this is line 184 -this is line 185 -this is line 186 -this is line 187 -this is line 188 -this is line 189 -this is line 190 -this is line 191 -this is line 192 -this is line 193 -this is line 194 -this is line 195 -this is line 196 -this is line 197 -this is line 198 -this is line 199 -this is line 200 go-gitdiff-0.8.0/gitdiff/testdata/apply/file_text_error_partial_delete.patch000066400000000000000000000035701427672601600274030ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/file_text.src.src b/gitdiff/testdata/apply/file_text.src deleted file mode 100644 index 3805ad4..0000000 --- a/gitdiff/testdata/apply/file_text.src.src +++ /dev/null @@ -1,100 +0,0 @@ -this is line 1 -this is line 2 -this is line 3 -this is line 4 -this is line 5 -this is line 6 -this is line 7 -this is line 8 -this is line 9 -this is line 10 -this is line 11 -this is line 12 -this is line 13 -this is line 14 -this is line 15 -this is line 16 -this is line 17 -this is line 18 -this is line 19 -this is line 20 -this is line 21 -this is line 22 -this is line 23 -this is line 24 -this is line 25 -this is line 26 -this is line 27 -this is line 28 -this is line 29 -this is line 30 -this is line 31 -this is line 32 -this is line 33 -this is line 34 -this is line 35 -this is line 36 -this is line 37 -this is line 38 -this is line 39 -this is line 40 -this is line 41 -this is line 42 -this is line 43 -this is line 44 -this is line 45 -this is line 46 -this is line 47 -this is line 48 -this is line 49 -this is line 50 -this is line 51 -this is line 52 -this is line 53 -this is line 54 -this is line 55 -this is line 56 -this is line 57 -this is line 58 -this is line 59 -this is line 60 -this is line 61 -this is line 62 -this is line 63 -this is line 64 -this is line 65 -this is line 66 -this is line 67 -this is line 68 -this is line 69 -this is line 70 -this is line 71 -this is line 72 -this is line 73 -this is line 74 -this is line 75 -this is line 76 -this is line 77 -this is line 78 -this is line 79 -this is line 80 -this is line 81 -this is line 82 -this is line 83 -this is line 84 -this is line 85 -this is line 86 -this is line 87 -this is line 88 -this is line 89 -this is line 90 -this is line 91 -this is line 92 -this is line 93 -this is line 94 -this is line 95 -this is line 96 -this is line 97 -this is line 98 -this is line 99 -this is line 100 go-gitdiff-0.8.0/gitdiff/testdata/apply/file_text_modify.out000066400000000000000000000064541427672601600242170ustar00rootroot00000000000000the first line is different this is line 2 this is line 3 this is line 4 this is line 5 this is line 6 this is line 7 this is line 8 this is line 9 this is line 10 this is line 11 this is line 12 this is line 13 this is line 14 this is line 15 this is line 16 this is line 17 this is line 18 this is line 19 this line offsets all the line numbers! this is line 20 this is line 21 until here, now we're back on track! this is line 24 this is line 25 this is line 26 this is line 27 this is line 28 this is line 29 this is line 30 this is line 31 this is line 32 this is line 33 this is line 34 this is line 35 this is line 36 this is line 37 this is line 38 this is line 39 this is line 40 this is line 41 this is line 42 this is line 43 this is line 44 this is line 45 this is line 46 this is line 47 this is line 48 this is line 49 this is line 50 this is line 51 this is line 52 this is line 53 this is line 54 this is line 55 once upon a time, a line in a text file changed this is line 60 this is line 61 this is line 62 this is line 63 this is line 64 this is line 65 this is line 66 this is line 67 this is line 68 this is line 69 this is line 70 this is line 71 this is line 72 this is line 73 this is line 74 this is line 75 this is line 76 this is line 77 this is line 78 this is line 79 this is line 80 this is line 81 this is line 82 this is line 83 this is line 84 this is line 85 this is line 86 this is line 87 this is line 88 this is line 89 this is line 90 this is line 91 this is line 92 this is line 93 this is line 94 this is line 95 this is line 96 this is line 97 this is line 98 this is line 99 this is line 100 this is line 101 this is line 102 this is line 103 this is line 104 this is line 105 this is line 106 this is line 107 this is line 108 this is line 109 this is line 110 this is line 111 this is line 112 this is line 113 this is line 114 this is line 115 this is line 116 this is line 117 this is line 118 this is line 119 this is line 120 this is line 121 this is line 122 this is line 123 this is line 124 this is line 125 this is line 126 this is line 127 this is line 128 this is line 129 this is line 130 this is line 131 this is line 132 this line was bad and has been removed this line was REDACTED and has been REDACTED this is line 135 this is line 136 this is line 137 this is line 138 this is line 139 this is line 140 this is line 141 this is line 142 this is line 143 this is line 144 this is line 145 this is line 146 this is line 147 this is line 148 this is line 149 this is line 150 this is line 151 this is line 152 this is line 153 this is line 154 this is line 155 this is line 156 this is line 157 this is line 158 this is line 159 this is line 160 this is line 161 this is line 162 this is line 163 the number on the remaining lines is 5 ahead of their actual position in the file this is line 170 this is line 171 this is line 172 this is line 173 this is line 174 this is line 175 this is line 176 this is line 177 this is line 178 this is line 179 this is line 180 this is line 181 this is line 182 this is line 183 this is line 184 this is line 185 this is line 186 this is line 187 this is line 188 this is line 189 this is line 190 this is line 191 this is line 192 this is line 193 this is line 194 this is line 195 this is line 196 this is line 197 this is line 198 this is line 199 this is line 200 go-gitdiff-0.8.0/gitdiff/testdata/apply/file_text_modify.patch000066400000000000000000000026371427672601600245060ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/file_text.src b/gitdiff/testdata/apply/file_text.src --- a/gitdiff/testdata/apply/file_text.src +++ b/gitdiff/testdata/apply/file_text.src @@ -1,4 +1,4 @@ -this is line 1 +the first line is different this is line 2 this is line 3 this is line 4 @@ -17,10 +17,10 @@ this is line 16 this is line 17 this is line 18 this is line 19 +this line offsets all the line numbers! this is line 20 this is line 21 -this is line 22 -this is line 23 +until here, now we're back on track! this is line 24 this is line 25 this is line 26 @@ -53,10 +53,10 @@ this is line 52 this is line 53 this is line 54 this is line 55 -this is line 56 -this is line 57 -this is line 58 -this is line 59 +once upon a time, a line + in a text + file + changed this is line 60 this is line 61 this is line 62 @@ -130,8 +130,8 @@ this is line 129 this is line 130 this is line 131 this is line 132 -this is line 133 -this is line 134 +this line was bad and has been removed +this line was REDACTED and has been REDACTED this is line 135 this is line 136 this is line 137 @@ -161,12 +161,7 @@ this is line 160 this is line 161 this is line 162 this is line 163 -this is line 164 -this is line 165 -this is line 166 -this is line 167 -this is line 168 -this is line 169 +the number on the remaining lines is 5 ahead of their actual position in the file this is line 170 this is line 171 this is line 172 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_end.out000066400000000000000000000000531427672601600251570ustar00rootroot00000000000000line 1 line 2 line 3 new line a new line b go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_end.patch000066400000000000000000000004131427672601600254470ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/fragment_add_end.src b/gitdiff/testdata/apply/fragment_add_end.src --- a/gitdiff/testdata/apply/fragment_add_end.src +++ b/gitdiff/testdata/apply/fragment_add_end.src @@ -1,3 +1,5 @@ line 1 line 2 line 3 +new line a +new line b go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_end.src000066400000000000000000000000251427672601600251360ustar00rootroot00000000000000line 1 line 2 line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_end_noeol.out000066400000000000000000000000431427672601600263520ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_end_noeol.patch000066400000000000000000000005231427672601600266450ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_add_end_noeol.src b/gitdiff/testdata/apply/text_fragment_add_end_noeol.src --- a/gitdiff/testdata/apply/text_fragment_add_end_noeol.src +++ b/gitdiff/testdata/apply/text_fragment_add_end_noeol.src @@ -1,3 +1,5 @@ line 1 line 2 -line 3 \ No newline at end of file +line 3 +line 4 +line 5 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_end_noeol.src000066400000000000000000000000241427672601600263310ustar00rootroot00000000000000line 1 line 2 line 3go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_middle.out000066400000000000000000000000531427672601600256470ustar00rootroot00000000000000line 1 line 2 new line a new line b line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_middle.patch000066400000000000000000000004271427672601600261440ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/fragment_add_middle.src b/gitdiff/testdata/apply/fragment_add_middle.src --- a/gitdiff/testdata/apply/fragment_add_middle.src +++ b/gitdiff/testdata/apply/fragment_add_middle.src @@ -1,3 +1,5 @@ line 1 line 2 +new line a +new line b line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_middle.src000066400000000000000000000000251427672601600256260ustar00rootroot00000000000000line 1 line 2 line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_start.out000066400000000000000000000000401427672601600255420ustar00rootroot00000000000000new line a line 1 line 2 line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_start.patch000066400000000000000000000004071427672601600260410ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/fragment_add_start.src b/gitdiff/testdata/apply/fragment_add_start.src --- a/gitdiff/testdata/apply/fragment_add_start.src +++ b/gitdiff/testdata/apply/fragment_add_start.src @@ -1,3 +1,4 @@ +new line a line 1 line 2 line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_add_start.src000066400000000000000000000000251427672601600255250ustar00rootroot00000000000000line 1 line 2 line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_end.out000066400000000000000000000001121427672601600256500ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 new line a go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_end.patch000066400000000000000000000004571427672601600261540ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_change_end.src b/gitdiff/testdata/apply/text_fragment_change_end.src --- a/gitdiff/testdata/apply/text_fragment_change_end.src +++ b/gitdiff/testdata/apply/text_fragment_change_end.src @@ -7,4 +7,4 @@ line 6 line 7 line 8 line 9 -line 10 +new line a go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_end.src000066400000000000000000000001071427672601600256340ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_exact.out000066400000000000000000000001451427672601600262140ustar00rootroot00000000000000line line line line line line line line line line line line line line line new line a line line line go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_exact.patch000066400000000000000000000005001427672601600264770ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_change_exact.src b/gitdiff/testdata/apply/text_fragment_change_exact.src --- a/gitdiff/testdata/apply/text_fragment_change_exact.src +++ b/gitdiff/testdata/apply/text_fragment_change_exact.src @@ -13,7 +13,7 @@ line line line line -line +new line a line line line go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_exact.src000066400000000000000000000002261427672601600261740ustar00rootroot00000000000000line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_middle.out000066400000000000000000000001031427672601600263400ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 new line a line 7 line 8 line 9 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_middle.patch000066400000000000000000000005221427672601600266350ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_change_middle.src b/gitdiff/testdata/apply/text_fragment_change_middle.src --- a/gitdiff/testdata/apply/text_fragment_change_middle.src +++ b/gitdiff/testdata/apply/text_fragment_change_middle.src @@ -3,7 +3,7 @@ line 2 line 3 line 4 line 5 -line 6 +new line a line 7 line 8 line 9 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_middle.src000066400000000000000000000001071427672601600263240ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_single_noeol.out000066400000000000000000000000121427672601600275560ustar00rootroot00000000000000new line ago-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_single_noeol.patch000066400000000000000000000005471427672601600300630ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_change_single_noeol.src b/gitdiff/testdata/apply/text_fragment_change_single_noeol.src --- a/gitdiff/testdata/apply/text_fragment_change_single_noeol.src +++ b/gitdiff/testdata/apply/text_fragment_change_single_noeol.src @@ -1 +1 @@ -line 1 \ No newline at end of file +new line a \ No newline at end of file go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_single_noeol.src000066400000000000000000000000061427672601600275410ustar00rootroot00000000000000line 1go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_start.out000066400000000000000000000000401427672601600262370ustar00rootroot00000000000000new line a line 2 line 3 line 4 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_start.patch000066400000000000000000000004571427672601600265430ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_change_start.src b/gitdiff/testdata/apply/text_fragment_change_start.src --- a/gitdiff/testdata/apply/text_fragment_change_start.src +++ b/gitdiff/testdata/apply/text_fragment_change_start.src @@ -1,4 +1,4 @@ -line 1 +new line a line 2 line 3 line 4 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_change_start.src000066400000000000000000000001071427672601600262230ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_delete_all.out000066400000000000000000000000001427672601600256630ustar00rootroot00000000000000go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_delete_all.patch000066400000000000000000000004071427672601600261660ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/fragment_delete_all.src b/gitdiff/testdata/apply/fragment_delete_all.src --- a/gitdiff/testdata/apply/fragment_delete_all.src +++ b/gitdiff/testdata/apply/fragment_delete_all.src @@ -1,4 +0,0 @@ -line a -line b -line c -line d go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_delete_all.src000066400000000000000000000000341427672601600256520ustar00rootroot00000000000000line a line b line c line d go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_error.src000066400000000000000000000001371427672601600247150ustar00rootroot00000000000000line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 line 11 line 12 line 13 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_error_context_conflict.patch000066400000000000000000000004721427672601600306540ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src --- a/gitdiff/testdata/apply/text_fragment_error.src +++ b/gitdiff/testdata/apply/text_fragment_error.src @@ -4,7 +4,7 @@ line 3 line 4 line 5 line conflict -line 7 +new line a line 8 line 9 line 10 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_error_delete_conflict.patch000066400000000000000000000004721427672601600304320ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src --- a/gitdiff/testdata/apply/text_fragment_error.src +++ b/gitdiff/testdata/apply/text_fragment_error.src @@ -4,7 +4,7 @@ line 3 line 4 line 5 line 6 -line conflict +new line a line 8 line 9 line 10 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_error_new_file.patch000066400000000000000000000003771427672601600271030ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src --- a/gitdiff/testdata/apply/text_fragment_error.src +++ b/gitdiff/testdata/apply/text_fragment_error.src @@ -0,0 +1,3 @@ +line 1 +line 2 +line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_error_short_src.patch000066400000000000000000000004701427672601600273130ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src --- a/gitdiff/testdata/apply/text_fragment_error.src +++ b/gitdiff/testdata/apply/text_fragment_error.src @@ -9,7 +9,7 @@ line 8 line 9 line 10 line 11 -line 12 +new line a line 13 line 14 line 15 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_error_short_src_before.patch000066400000000000000000000004741427672601600306410ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src --- a/gitdiff/testdata/apply/text_fragment_error.src +++ b/gitdiff/testdata/apply/text_fragment_error.src @@ -15,7 +15,7 @@ line 14 line 15 line 16 line 17 -line 18 +new line a line 19 line 20 line 21 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_new.out000066400000000000000000000000251427672601600243710ustar00rootroot00000000000000line 1 line 2 line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_new.patch000066400000000000000000000003431427672601600246640ustar00rootroot00000000000000diff --git a/gitdiff/testdata/apply/fragment_new.src b/gitdiff/testdata/apply/fragment_new.src --- a/gitdiff/testdata/apply/fragment_new.src +++ b/gitdiff/testdata/apply/fragment_new.src @@ -0,0 +1,3 @@ +line 1 +line 2 +line 3 go-gitdiff-0.8.0/gitdiff/testdata/apply/text_fragment_new.src000066400000000000000000000000001427672601600243420ustar00rootroot00000000000000go-gitdiff-0.8.0/gitdiff/testdata/new_binary_file.patch000066400000000000000000000006671427672601600231640ustar00rootroot00000000000000commit 5d9790fec7d95aa223f3d20936340bf55ff3dcbe Author: Morton Haypenny Date: Tue Apr 2 22:55:40 2019 -0700 A binary file with the first 10 fibonacci numbers. diff --git a/dir/ten.bin b/dir/ten.bin new file mode 100644 index 0000000000000000000000000000000000000000..77b068ba48c356156944ea714740d0d5ca07bfec GIT binary patch literal 40 gcmZQzU|?i`U?w2V48*KJ%mKu_Kr9NxN Date: Tue Apr 2 22:55:40 2019 -0700 A file with multiple fragments. The content is arbitrary. diff --git a/dir/file1.txt b/dir/file1.txt index ebe9fa54..fe103e1d 100644 --- a/dir/file1.txt +++ b/dir/file1.txt @@ -3,6 +3,8 @@ fragment 1 context line -old line 1 -old line 2 context line +new line 1 +new line 2 +new line 3 context line -old line 3 +new line 4 +new line 5 @@ -31,2 +33,2 @@ fragment 2 context line -old line 4 +new line 6 go-gitdiff-0.8.0/gitdiff/testdata/two_files.patch000066400000000000000000000016011427672601600220100ustar00rootroot00000000000000commit 5d9790fec7d95aa223f3d20936340bf55ff3dcbe Author: Morton Haypenny Date: Tue Apr 2 22:55:40 2019 -0700 A file with multiple fragments. The content is arbitrary. diff --git a/dir/file1.txt b/dir/file1.txt index ebe9fa54..fe103e1d 100644 --- a/dir/file1.txt +++ b/dir/file1.txt @@ -3,6 +3,8 @@ fragment 1 context line -old line 1 -old line 2 context line +new line 1 +new line 2 +new line 3 context line -old line 3 +new line 4 +new line 5 @@ -31,2 +33,2 @@ fragment 2 context line -old line 4 +new line 6 diff --git a/dir/file2.txt b/dir/file2.txt index 417ebc70..67514b7f 100644 --- a/dir/file2.txt +++ b/dir/file2.txt @@ -3,6 +3,8 @@ fragment 1 context line -old line 1 -old line 2 context line +new line 1 +new line 2 +new line 3 context line -old line 3 +new line 4 +new line 5 @@ -31,2 +33,2 @@ fragment 2 context line -old line 4 +new line 6 go-gitdiff-0.8.0/gitdiff/text.go000066400000000000000000000113561427672601600165060ustar00rootroot00000000000000package gitdiff import ( "fmt" "io" "strconv" "strings" ) // ParseTextFragments parses text fragments until the next file header or the // end of the stream and attaches them to the given file. It returns the number // of fragments that were added. func (p *parser) ParseTextFragments(f *File) (n int, err error) { for { frag, err := p.ParseTextFragmentHeader() if err != nil { return n, err } if frag == nil { return n, nil } if f.IsNew && frag.OldLines > 0 { return n, p.Errorf(-1, "new file depends on old contents") } if f.IsDelete && frag.NewLines > 0 { return n, p.Errorf(-1, "deleted file still has contents") } if err := p.ParseTextChunk(frag); err != nil { return n, err } f.TextFragments = append(f.TextFragments, frag) n++ } } func (p *parser) ParseTextFragmentHeader() (*TextFragment, error) { const ( startMark = "@@ -" endMark = " @@" ) if !strings.HasPrefix(p.Line(0), startMark) { return nil, nil } parts := strings.SplitAfterN(p.Line(0), endMark, 2) if len(parts) < 2 { return nil, p.Errorf(0, "invalid fragment header") } f := &TextFragment{} f.Comment = strings.TrimSpace(parts[1]) header := parts[0][len(startMark) : len(parts[0])-len(endMark)] ranges := strings.Split(header, " +") if len(ranges) != 2 { return nil, p.Errorf(0, "invalid fragment header") } var err error if f.OldPosition, f.OldLines, err = parseRange(ranges[0]); err != nil { return nil, p.Errorf(0, "invalid fragment header: %v", err) } if f.NewPosition, f.NewLines, err = parseRange(ranges[1]); err != nil { return nil, p.Errorf(0, "invalid fragment header: %v", err) } if err := p.Next(); err != nil && err != io.EOF { return nil, err } return f, nil } func (p *parser) ParseTextChunk(frag *TextFragment) error { if p.Line(0) == "" { return p.Errorf(0, "no content following fragment header") } oldLines, newLines := frag.OldLines, frag.NewLines for oldLines > 0 || newLines > 0 { line := p.Line(0) op, data := line[0], line[1:] switch op { case '\n': data = "\n" fallthrough // newer GNU diff versions create empty context lines case ' ': oldLines-- newLines-- if frag.LinesAdded == 0 && frag.LinesDeleted == 0 { frag.LeadingContext++ } else { frag.TrailingContext++ } frag.Lines = append(frag.Lines, Line{OpContext, data}) case '-': oldLines-- frag.LinesDeleted++ frag.TrailingContext = 0 frag.Lines = append(frag.Lines, Line{OpDelete, data}) case '+': newLines-- frag.LinesAdded++ frag.TrailingContext = 0 frag.Lines = append(frag.Lines, Line{OpAdd, data}) case '\\': // this may appear in middle of fragment if it's for a deleted line if isNoNewlineMarker(line) { removeLastNewline(frag) break } fallthrough default: // TODO(bkeyes): if this is because we hit the next header, it // would be helpful to return the miscounts line error. We could // either test for the common headers ("@@ -", "diff --git") or // assume any invalid op ends the fragment; git returns the same // generic error in all cases so either is compatible return p.Errorf(0, "invalid line operation: %q", op) } if err := p.Next(); err != nil { if err == io.EOF { break } return err } } if oldLines != 0 || newLines != 0 { hdr := max(frag.OldLines-oldLines, frag.NewLines-newLines) + 1 return p.Errorf(-hdr, "fragment header miscounts lines: %+d old, %+d new", -oldLines, -newLines) } if frag.LinesAdded == 0 && frag.LinesDeleted == 0 { return p.Errorf(0, "fragment contains no changes") } // check for a final "no newline" marker since it is not included in the // counters used to stop the loop above if isNoNewlineMarker(p.Line(0)) { removeLastNewline(frag) if err := p.Next(); err != nil && err != io.EOF { return err } } return nil } func isNoNewlineMarker(s string) bool { // test for "\ No newline at end of file" by prefix because the text // changes by locale (git claims all versions are at least 12 chars) return len(s) >= 12 && s[:2] == "\\ " } func removeLastNewline(frag *TextFragment) { if len(frag.Lines) > 0 { last := &frag.Lines[len(frag.Lines)-1] last.Line = strings.TrimSuffix(last.Line, "\n") } } func parseRange(s string) (start int64, end int64, err error) { parts := strings.SplitN(s, ",", 2) if start, err = strconv.ParseInt(parts[0], 10, 64); err != nil { nerr := err.(*strconv.NumError) return 0, 0, fmt.Errorf("bad start of range: %s: %v", parts[0], nerr.Err) } if len(parts) > 1 { if end, err = strconv.ParseInt(parts[1], 10, 64); err != nil { nerr := err.(*strconv.NumError) return 0, 0, fmt.Errorf("bad end of range: %s: %v", parts[1], nerr.Err) } } else { end = 1 } return } func max(a, b int64) int64 { if a > b { return a } return b } go-gitdiff-0.8.0/gitdiff/text_test.go000066400000000000000000000221011427672601600175330ustar00rootroot00000000000000package gitdiff import ( "io" "reflect" "testing" ) func TestParseTextFragmentHeader(t *testing.T) { tests := map[string]struct { Input string Output *TextFragment Err bool }{ "shortest": { Input: "@@ -1 +1 @@\n", Output: &TextFragment{ OldPosition: 1, OldLines: 1, NewPosition: 1, NewLines: 1, }, }, "standard": { Input: "@@ -21,5 +28,9 @@\n", Output: &TextFragment{ OldPosition: 21, OldLines: 5, NewPosition: 28, NewLines: 9, }, }, "trailingComment": { Input: "@@ -21,5 +28,9 @@ func test(n int) {\n", Output: &TextFragment{ Comment: "func test(n int) {", OldPosition: 21, OldLines: 5, NewPosition: 28, NewLines: 9, }, }, "incomplete": { Input: "@@ -12,3 +2\n", Err: true, }, "badNumbers": { Input: "@@ -1a,2b +3c,4d @@\n", Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) frag, err := p.ParseTextFragmentHeader() if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing header, but got %v", err) } return } if err != nil { t.Fatalf("error parsing header: %v", err) } if !reflect.DeepEqual(test.Output, frag) { t.Errorf("incorrect fragment\nexpected: %+v\nactual: %+v", test.Output, frag) } }) } } func TestParseTextChunk(t *testing.T) { tests := map[string]struct { Input string Fragment TextFragment Output *TextFragment Err bool }{ "addWithContext": { Input: ` context line +new line 1 +new line 2 context line `, Fragment: TextFragment{ OldLines: 2, NewLines: 4, }, Output: &TextFragment{ OldLines: 2, NewLines: 4, Lines: []Line{ {OpContext, "context line\n"}, {OpAdd, "new line 1\n"}, {OpAdd, "new line 2\n"}, {OpContext, "context line\n"}, }, LinesAdded: 2, LeadingContext: 1, TrailingContext: 1, }, }, "deleteWithContext": { Input: ` context line -old line 1 -old line 2 context line `, Fragment: TextFragment{ OldLines: 4, NewLines: 2, }, Output: &TextFragment{ OldLines: 4, NewLines: 2, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1\n"}, {OpDelete, "old line 2\n"}, {OpContext, "context line\n"}, }, LinesDeleted: 2, LeadingContext: 1, TrailingContext: 1, }, }, "replaceWithContext": { Input: ` context line -old line 1 +new line 1 context line `, Fragment: TextFragment{ OldLines: 3, NewLines: 3, }, Output: &TextFragment{ OldLines: 3, NewLines: 3, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1\n"}, {OpAdd, "new line 1\n"}, {OpContext, "context line\n"}, }, LinesDeleted: 1, LinesAdded: 1, LeadingContext: 1, TrailingContext: 1, }, }, "middleContext": { Input: ` context line -old line 1 context line +new line 1 context line `, Fragment: TextFragment{ OldLines: 4, NewLines: 4, }, Output: &TextFragment{ OldLines: 4, NewLines: 4, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1\n"}, {OpContext, "context line\n"}, {OpAdd, "new line 1\n"}, {OpContext, "context line\n"}, }, LinesDeleted: 1, LinesAdded: 1, LeadingContext: 1, TrailingContext: 1, }, }, "deleteFinalNewline": { Input: ` context line -old line 1 +new line 1 \ No newline at end of file `, Fragment: TextFragment{ OldLines: 2, NewLines: 2, }, Output: &TextFragment{ OldLines: 2, NewLines: 2, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1\n"}, {OpAdd, "new line 1"}, }, LinesDeleted: 1, LinesAdded: 1, LeadingContext: 1, }, }, "addFinalNewline": { Input: ` context line -old line 1 \ No newline at end of file +new line 1 `, Fragment: TextFragment{ OldLines: 2, NewLines: 2, }, Output: &TextFragment{ OldLines: 2, NewLines: 2, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1"}, {OpAdd, "new line 1\n"}, }, LinesDeleted: 1, LinesAdded: 1, LeadingContext: 1, }, }, "addAll": { Input: `+new line 1 +new line 2 +new line 3 `, Fragment: TextFragment{ OldLines: 0, NewLines: 3, }, Output: &TextFragment{ OldLines: 0, NewLines: 3, Lines: []Line{ {OpAdd, "new line 1\n"}, {OpAdd, "new line 2\n"}, {OpAdd, "new line 3\n"}, }, LinesAdded: 3, }, }, "deleteAll": { Input: `-old line 1 -old line 2 -old line 3 `, Fragment: TextFragment{ OldLines: 3, NewLines: 0, }, Output: &TextFragment{ OldLines: 3, NewLines: 0, Lines: []Line{ {OpDelete, "old line 1\n"}, {OpDelete, "old line 2\n"}, {OpDelete, "old line 3\n"}, }, LinesDeleted: 3, }, }, "emptyContextLine": { Input: ` context line +new line context line `, Fragment: TextFragment{ OldLines: 3, NewLines: 4, }, Output: &TextFragment{ OldLines: 3, NewLines: 4, Lines: []Line{ {OpContext, "context line\n"}, {OpContext, "\n"}, {OpAdd, "new line\n"}, {OpContext, "context line\n"}, }, LinesAdded: 1, LeadingContext: 2, TrailingContext: 1, }, }, "emptyChunk": { Input: "", Err: true, }, "invalidOperation": { Input: ` context line ?wat line context line `, Fragment: TextFragment{ OldLines: 3, NewLines: 3, }, Err: true, }, "unbalancedHeader": { Input: ` context line -old line 1 +new line 1 context line `, Fragment: TextFragment{ OldLines: 2, NewLines: 5, }, Err: true, }, "onlyContext": { Input: ` context line context line `, Fragment: TextFragment{ OldLines: 2, NewLines: 2, }, Err: true, }, "unexpectedNoNewlineMarker": { Input: `\ No newline at end of file`, Fragment: TextFragment{ OldLines: 1, NewLines: 1, }, Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) frag := test.Fragment err := p.ParseTextChunk(&frag) if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing text chunk, but got %v", err) } return } if err != nil { t.Fatalf("error parsing text chunk: %v", err) } if !reflect.DeepEqual(test.Output, &frag) { t.Errorf("incorrect fragment\nexpected: %+v\nactual: %+v", test.Output, &frag) } }) } } func TestParseTextFragments(t *testing.T) { tests := map[string]struct { Input string File File Fragments []*TextFragment Err bool }{ "multipleChanges": { Input: `@@ -1,3 +1,2 @@ context line -old line 1 context line @@ -8,3 +7,3 @@ context line -old line 2 +new line 1 context line @@ -15,3 +14,4 @@ context line -old line 3 +new line 2 +new line 3 context line `, Fragments: []*TextFragment{ { OldPosition: 1, OldLines: 3, NewPosition: 1, NewLines: 2, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 1\n"}, {OpContext, "context line\n"}, }, LinesDeleted: 1, LeadingContext: 1, TrailingContext: 1, }, { OldPosition: 8, OldLines: 3, NewPosition: 7, NewLines: 3, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 2\n"}, {OpAdd, "new line 1\n"}, {OpContext, "context line\n"}, }, LinesDeleted: 1, LinesAdded: 1, LeadingContext: 1, TrailingContext: 1, }, { OldPosition: 15, OldLines: 3, NewPosition: 14, NewLines: 4, Lines: []Line{ {OpContext, "context line\n"}, {OpDelete, "old line 3\n"}, {OpAdd, "new line 2\n"}, {OpAdd, "new line 3\n"}, {OpContext, "context line\n"}, }, LinesDeleted: 1, LinesAdded: 2, LeadingContext: 1, TrailingContext: 1, }, }, }, "badNewFile": { Input: `@@ -1 +1,2 @@ -old line 1 +new line 1 +new line 2 `, File: File{ IsNew: true, }, Err: true, }, "badDeletedFile": { Input: `@@ -1,2 +1 @@ -old line 1 context line `, File: File{ IsDelete: true, }, Err: true, }, } for name, test := range tests { t.Run(name, func(t *testing.T) { p := newTestParser(test.Input, true) file := test.File n, err := p.ParseTextFragments(&file) if test.Err { if err == nil || err == io.EOF { t.Fatalf("expected error parsing text fragments, but got %v", err) } return } if err != nil { t.Fatalf("error parsing text fragments: %v", err) } if len(test.Fragments) != n { t.Fatalf("incorrect number of added fragments: expected %d, actual %d", len(test.Fragments), n) } for i, frag := range test.Fragments { if !reflect.DeepEqual(frag, file.TextFragments[i]) { t.Errorf("incorrect fragment at position %d\nexpected: %+v\nactual: %+v", i, frag, file.TextFragments[i]) } } }) } } go-gitdiff-0.8.0/go.mod000066400000000000000000000000571427672601600146610ustar00rootroot00000000000000module github.com/gitleaks/go-gitdiff go 1.13