JS -- Add tests for print/save actions

* change PDFDocument::hasJSActions to return true when there are JS actions in catalog.
This commit is contained in:
Calixte Denizet 2020-12-23 18:57:44 +01:00
parent df53e7811c
commit ffd4bc790c
8 changed files with 144 additions and 453 deletions

View File

@ -1038,10 +1038,11 @@ class PDFDocument {
"hasJSActions", "hasJSActions",
this.fieldObjects.then(fieldObjects => { this.fieldObjects.then(fieldObjects => {
return ( return (
fieldObjects !== null && (fieldObjects !== null &&
Object.values(fieldObjects).some(fieldObject => Object.values(fieldObjects).some(fieldObject =>
fieldObject.some(object => object.actions !== null) fieldObject.some(object => object.actions !== null)
) )) ||
!!this.catalog.jsActions
); );
}) })
); );

View File

@ -16,6 +16,15 @@
const { clearInput, closePages, loadAndWait } = require("./test_utils.js"); const { clearInput, closePages, loadAndWait } = require("./test_utils.js");
describe("Interaction", () => { describe("Interaction", () => {
async function actAndWaitForInput(page, selector, action) {
await clearInput(page, selector);
await action();
await page.waitForFunction(
`document.querySelector("${selector.replace("\\", "\\\\")}").value !== ""`
);
return page.$eval(selector, el => el.value);
}
describe("in 160F-2019.pdf", () => { describe("in 160F-2019.pdf", () => {
let pages; let pages;
@ -280,4 +289,76 @@ describe("Interaction", () => {
); );
}); });
}); });
describe("in doc_actions.pdf for printing", () => {
let pages;
beforeAll(async () => {
pages = await loadAndWait("doc_actions.pdf", "#\\34 7R");
});
afterAll(async () => {
await closePages(pages);
});
it("must execute WillPrint and DidPrint actions", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
if (process.platform === "win32" && browserName === "firefox") {
// Doesn't work because of bug 1662471
return;
}
let text = await actAndWaitForInput(page, "#\\34 7R", async () => {
await page.click("#print");
});
expect(text).withContext(`In ${browserName}`).toEqual("WillPrint");
await page.waitForFunction(
`document.querySelector("#\\\\35 0R").value !== ""`
);
text = await page.$eval("#\\35 0R", el => el.value);
expect(text).withContext(`In ${browserName}`).toEqual("DidPrint");
})
);
});
});
describe("in doc_actions.pdf for saving", () => {
let pages;
beforeAll(async () => {
pages = await loadAndWait("doc_actions.pdf", "#\\34 7R");
});
afterAll(async () => {
await closePages(pages);
});
it("must execute WillSave and DidSave actions", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
try {
// Disable download in chrome
// (it leads to an error in firefox so the try...)
await page._client.send("Page.setDownloadBehavior", {
behavior: "deny",
});
} catch (_) {}
await clearInput(page, "#\\34 7R");
let text = await actAndWaitForInput(page, "#\\34 7R", async () => {
await page.click("#download");
});
expect(text).withContext(`In ${browserName}`).toEqual("WillSave");
await page.waitForFunction(
`document.querySelector("#\\\\35 0R").value !== ""`
);
text = await page.$eval("#\\35 0R", el => el.value);
expect(text).withContext(`In ${browserName}`).toEqual("DidSave");
})
);
});
});
}); });

View File

@ -46,6 +46,7 @@
!issue7544.pdf !issue7544.pdf
!issue7507.pdf !issue7507.pdf
!issue6931_reduced.pdf !issue6931_reduced.pdf
!doc_actions.pdf
!issue7580.pdf !issue7580.pdf
!issue7598.pdf !issue7598.pdf
!issue12750.pdf !issue12750.pdf
@ -179,7 +180,6 @@
!pattern_text_embedded_font.pdf !pattern_text_embedded_font.pdf
!devicen.pdf !devicen.pdf
!cmykjpeg.pdf !cmykjpeg.pdf
!docactions.pdf
!issue840.pdf !issue840.pdf
!160F-2019.pdf !160F-2019.pdf
!issue4402_reduced.pdf !issue4402_reduced.pdf

BIN
test/pdfs/doc_actions.pdf Normal file

Binary file not shown.

View File

@ -1,426 +0,0 @@
%PDF-1.5
%¿÷¢þ
1 0 obj
<< /Type /ObjStm /Length 9839 /N 70 /First 545 >>
stream
2 0 3 33 4 227 5 301 6 1602 7 1672 8 1755 9 1808 10 1936 11 1990 12 2115 13 2169 14 2464 15 2517 16 2561 17 2606 18 2730 19 2824 20 2877 21 3110 22 3155 23 3208 24 3441 25 3486 26 3539 27 3772 28 3817 29 3870 30 4103 31 4148 32 4201 33 4434 34 4479 35 4532 36 4765 37 4810 38 4905 39 4958 40 5191 41 5236 42 5289 43 5522 44 5567 45 5620 46 5855 47 5900 48 5953 49 6188 50 6233 51 6286 52 6521 53 6566 54 6599 55 6652 56 6887 57 6932 58 6992 59 7107 60 7703 61 7927 62 7935 63 8215 64 8430 65 8632 66 8692 67 8846 68 8989 69 9068 70 9138 71 9177
<< /D [ 3 0 R /Fit ] /S /GoTo >>
<< /AA << /O << /JS (console.println\('Open the document'\); ) /S /JavaScript >> >> /Annots [ 13 0 R ] /Contents 73 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 14 0 R /Type /Page >>
<< /JS (console.println('Open Action');) /S /JavaScript >>
<< /Differences [ 24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 /quotesingle 96 /grave 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction /guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron 164 /currency 166 /brokenbar 168 /dieresis /copyright /ordfeminine 172 /logicalnot /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu 183 /periodcentered /cedilla /onesuperior /ordmasculine 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] /Type /Encoding >>
<< /BaseFont /ZapfDingbats /Name /ZaDb /Subtype /Type1 /Type /Font >>
<< /BaseFont /Helvetica /Encoding 5 0 R /Name /Helv /Subtype /Type1 /Type /Font >>
<< /Font << /F30 9 0 R >> /ProcSet [ /PDF /Text ] >>
<< /BaseFont /GCRMMP+Dingbats /FirstChar 123 /FontDescriptor 64 0 R /LastChar 123 /Subtype /Type1 /Type /Font /Widths 61 0 R >>
<< /Font << /F31 11 0 R >> /ProcSet [ /PDF /Text ] >>
<< /BaseFont /XYLNGW+CMSS10 /FirstChar 80 /FontDescriptor 63 0 R /LastChar 117 /Subtype /Type1 /Type /Font /Widths 60 0 R >>
<< /Font << /F31 11 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /F << /JS (console.println\('text entered='+event.value\);) /S /JavaScript >> >> /BS << /S /S /W 1 >> /DA (/Helv 10 Tf 0 0 0 rg) /DV () /F 4 /FT /Tx /MK << /BC [ 1 0 0 ] /BG [ 1 1 1 ] >> /Q 0 /Rect [ 184.744 652.309 271.776 668.194 ] /Subtype /Widget /T (field1) /Type /Annot /V () >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /D [ 3 0 R /XYZ 105.869 705.06 null ] >>
<< /D [ 3 0 R /XYZ 106.869 667.198 null ] >>
<< /BaseFont /CFMZGO+CMR10 /FirstChar 12 /FontDescriptor 62 0 R /LastChar 121 /Subtype /Type1 /Type /Font /Widths 59 0 R >>
<< /Count 6 /Kids [ 3 0 R 20 0 R 23 0 R 26 0 R 29 0 R 32 0 R ] /Parent 65 0 R /Type /Pages >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 2'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 2'\);) /S /JavaScript >> >> /Contents 74 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 19 0 R /Type /Page >>
<< /D [ 20 0 R /XYZ 159.667 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 3'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 3'\);) /S /JavaScript >> >> /Contents 75 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 22 0 R /Type /Page >>
<< /D [ 23 0 R /XYZ 105.869 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 4'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 4'\);) /S /JavaScript >> >> /Contents 76 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 25 0 R /Type /Page >>
<< /D [ 26 0 R /XYZ 159.667 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 5'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 5'\);) /S /JavaScript >> >> /Contents 77 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 28 0 R /Type /Page >>
<< /D [ 29 0 R /XYZ 105.869 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 6'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 6'\);) /S /JavaScript >> >> /Contents 78 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 31 0 R /Type /Page >>
<< /D [ 32 0 R /XYZ 159.667 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 7'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 7'\);) /S /JavaScript >> >> /Contents 79 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 34 0 R /Type /Page >>
<< /D [ 35 0 R /XYZ 105.869 705.06 null ] >>
<< /Count 6 /Kids [ 35 0 R 39 0 R 42 0 R 45 0 R 48 0 R 51 0 R ] /Parent 65 0 R /Type /Pages >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 8'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 8'\);) /S /JavaScript >> >> /Contents 80 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 38 0 R /Type /Page >>
<< /D [ 39 0 R /XYZ 159.667 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 9'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 9'\);) /S /JavaScript >> >> /Contents 81 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 41 0 R /Type /Page >>
<< /D [ 42 0 R /XYZ 105.869 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 10'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 10'\);) /S /JavaScript >> >> /Contents 82 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 44 0 R /Type /Page >>
<< /D [ 45 0 R /XYZ 159.667 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 11'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 11'\);) /S /JavaScript >> >> /Contents 83 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 47 0 R /Type /Page >>
<< /D [ 48 0 R /XYZ 105.869 705.06 null ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 12'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 12'\);) /S /JavaScript >> >> /Contents 84 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 50 0 R /Type /Page >>
<< /D [ 51 0 R /XYZ 159.667 705.06 null ] >>
<< /Names [ (Open) 4 0 R ] >>
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
<< /AA << /C << /JS (console.println\('Close page 13'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 13'\);) /S /JavaScript >> >> /Contents 85 0 R /MediaBox [ 0 0 612 792 ] /Parent 57 0 R /Resources 54 0 R /Type /Page >>
<< /D [ 55 0 R /XYZ 105.869 705.06 null ] >>
<< /Count 1 /Kids [ 55 0 R ] /Parent 65 0 R /Type /Pages >>
<< /DA (/Helv 10 Tf 0 g) /DR << /Font << /Helv 7 0 R /ZaDb 6 0 R >> >> /Fields [ 13 0 R ] /NeedAppearances true >>
[ 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 ]
[ 638.9 736.1 645.8 555.6 680.6 687.5 666.7 944.5 666.7 666.7 611.1 288.9 500 288.9 500 277.8 277.8 480.6 516.7 444.4 516.7 444.4 305.6 500 516.7 238.9 266.7 488.9 238.9 794.4 516.7 500 516.7 516.7 341.7 383.3 361.1 516.7 ]
[ 392 ]
<< /Ascent 694 /CapHeight 683 /CharSet (/M/a/colon/d/e/eight/fi/five/four/g/l/nine/one/p/seven/six/t/three/two/x/y/zero) /Descent -194 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /FontFile 86 0 R /FontName /CFMZGO+CMR10 /ItalicAngle 0 /StemV 69 /Type /FontDescriptor /XHeight 431 >>
<< /Ascent 694 /CapHeight 694 /CharSet (/P/S/b/i/m/t/u) /Descent -194 /Flags 4 /FontBBox [ -61 -250 999 759 ] /FontFile 87 0 R /FontName /XYLNGW+CMSS10 /ItalicAngle 0 /StemV 78 /Type /FontDescriptor /XHeight 444 >>
<< /Ascent 708 /CapHeight 708 /CharSet (/a97) /Descent 0 /Flags 4 /FontBBox [ -1 -143 981 819 ] /FontFile 88 0 R /FontName /GCRMMP+Dingbats /ItalicAngle 0 /StemV 0 /Type /FontDescriptor /XHeight 400 >>
<< /Count 13 /Kids [ 18 0 R 37 0 R 57 0 R ] /Type /Pages >>
<< /Limits [ (Doc-Start) (page.13) ] /Names [ (Doc-Start) 16 0 R (page.1) 15 0 R (page.10) 46 0 R (page.11) 49 0 R (page.12) 52 0 R (page.13) 56 0 R ] >>
<< /Limits [ (page.2) (page.7) ] /Names [ (page.2) 21 0 R (page.3) 24 0 R (page.4) 27 0 R (page.5) 30 0 R (page.6) 33 0 R (page.7) 36 0 R ] >>
<< /Limits [ (page.8) (page.9) ] /Names [ (page.8) 40 0 R (page.9) 43 0 R ] >>
<< /Kids [ 66 0 R 67 0 R 68 0 R ] /Limits [ (Doc-Start) (page.9) ] >>
<< /Dests 69 0 R /JavaScript 53 0 R >>
<< /AA << >> /AcroForm 58 0 R /Names 70 0 R /OpenAction 2 0 R /PageMode /UseOutlines /Pages 65 0 R /Type /Catalog >>
endstream
endobj
72 0 obj
<< /Author () /CreationDate (D:20201207183605+01'00') /Creator (LaTeX with hyperref) /Keywords () /ModDate (D:20201207183605+01'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.21 \(TeX Live 2020/Debian\) kpathsea version 6.3.2) /Producer (pdfTeX-1.40.21) /Subject () /Title () /Trapped /False >>
endobj
73 0 obj
<< /Length 100 >>
stream
BT
/F8 9.9626 Tf 121.813 655.243 Td [(My)-333(text)-334(\014eld:)]TJ 154.421 -565.878 Td [(1)]TJ
ET
endstream
endobj
74 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(2)]TJ 154.421 -567.87 Td [(2)]TJ
ET
endstream
endobj
75 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(3)]TJ 154.421 -567.87 Td [(3)]TJ
ET
endstream
endobj
76 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(4)]TJ 154.421 -567.87 Td [(4)]TJ
ET
endstream
endobj
77 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(5)]TJ 154.421 -567.87 Td [(5)]TJ
ET
endstream
endobj
78 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(6)]TJ 154.421 -567.87 Td [(6)]TJ
ET
endstream
endobj
79 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(7)]TJ 154.421 -567.87 Td [(7)]TJ
ET
endstream
endobj
80 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(8)]TJ 154.421 -567.87 Td [(8)]TJ
ET
endstream
endobj
81 0 obj
<< /Length 84 >>
stream
BT
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(9)]TJ 154.421 -567.87 Td [(9)]TJ
ET
endstream
endobj
82 0 obj
<< /Length 86 >>
stream
BT
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(10)]TJ 151.931 -567.87 Td [(10)]TJ
ET
endstream
endobj
83 0 obj
<< /Length 85 >>
stream
BT
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(11)]TJ 151.93 -567.87 Td [(11)]TJ
ET
endstream
endobj
84 0 obj
<< /Length 86 >>
stream
BT
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(12)]TJ 151.931 -567.87 Td [(12)]TJ
ET
endstream
endobj
85 0 obj
<< /Length 85 >>
stream
BT
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(13)]TJ 151.93 -567.87 Td [(13)]TJ
ET
endstream
endobj
86 0 obj
<< /Length1 1700 /Length2 12121 /Length3 0 /Length 13821 >>
stream
%!PS-AdobeFont-1.0: CMR10 003.002
%%Title: CMR10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CFMZGO+CMR10 def
/FontBBox {-40 -250 1009 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
/FullName (CMR10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 77 /M put
dup 97 /a put
dup 58 /colon put
dup 100 /d put
dup 101 /e put
dup 56 /eight put
dup 12 /fi put
dup 53 /five put
dup 52 /four put
dup 103 /g put
dup 108 /l put
dup 57 /nine put
dup 49 /one put
dup 112 /p put
dup 55 /seven put
dup 54 /six put
dup 116 /t put
dup 51 /three put
dup 50 /two put
dup 120 /x put
dup 121 /y put
dup 48 /zero put
readonly def
currentdict end
currentfile eexec
ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_RÑå»
ØÐÆϤëA³Å -T@æ|ýq|V<>k¹¿J% qu8øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-<2D>UŒ\<5C>§Ô%¡b<C2A1>Õ"t-*ðxÔõöÓŸÏÿJ+
<>3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{BèJ×{¨¥ÜÆØx¹<¥Ÿ ,—Ü-.è2¯iRn·Ã±vÌÙ¾1ä • „'Æ䓱©·_r"O¯»_t±3keè¾fBݼöVÁfj—Ú9Ò³ÿ Ô Yh뀸Á{û´qÝÉÊÆ-÷†—ºøÉ·ÊãÁ}W§?Å?gw1*Eh[ŠÜÛ:ªtÍÀWeI,Úv•8üa…<{ñBú1â¤00Z8ÃÌî5 |ñŽ}­µðN¾àÔ×lw]ƒÿƒ6Nÿb¿—ðð¤h3E`œ†(¡EÁ‰¡Þ<C2A1>'Q;²eµÔƒª/ðà­.D©yLâ5ØñÇ$¥4IGÃå׮Ɋ\yjù9£.îV­<55>5£Q!äì‹-Íèµ<C3A8>ÈBƒ…Ä9ödèâö««B^éoVùð­wˆBÉŽáT7„¡‰¾R€ŸÀsO™GA¦÷ãÕà b#íTBv!m·<6D>WT=úãÍÀ¦üw,ªID%'¥ÙMÅKé<‡|Ù]ØD¥Ã°€@‰õ·€2²½Oø( œÝŽ%œæÛ#_½É·VñþBSTø¢#zàÃ×ÒÍã!ËÑã${l­\§4ĸ ;5Œ™l&!×〚óß=(ŒŠþfŠ¸ÞUwA´Ú±ÔÆeßìÈÌB#½30>ÎìH ¤©'œÞL¥+ÿÖ“žjâz<C3A2><1F>¸=®s\²Þõ<…«=\ÀY$ßD?ˆUê Ðæü6•ŸÒxG¡QnÇ«šŠäi¯%Ö”ž!×Ñ
L2±[žšôã¥)!Œf…Xã<Õ'Ȳ<C388>ñRP3E¡!„-:±'àþÐAJ¯.ÙIJCJÎJtª&Ã{7<06>
#<23>VÐÃÐÀëÕÖHÕ“ó‹/©ÊF×gw"F5”<35>wñSˆ$|¯ÿ<C2AF>oQ<ÎçΗ Ñ`~¶<<3C>10©|™ÿ<»émï´·ùØœÞÉhðÞ „߭逵µ°°›?É`?ó7ë  [•¾ó8xP<41Õó=tÏøHÚ ;6™¹¸}rKu1é3ûšUC´Ht­²ÑÓ}öyÖþ~c%\ßqï€\ººæ4O4v![_÷Iº¢°ï³¯üÆæc«òMJùMŸY0¬Ì<C2AC>v{6ß”Ö\øà rŸqÉš"3<>TÒYK.ÜKêÉ)Á,GÊK{aˆCZBGž½
yÛ(ŠK'†Ã2O0ÓV—®6IP$$lûéú¬¸-“à[ÀëÔeÍÉøÇ×&2%g”b¯z‡÷JÌ™,uo~M¬2ÄzÞu ‡Ô6*š»*¦ Å «Ñÿ9¿Î¨ß?Ä£K”c)ËÏ÷á\ðgŸt­&?©ãŽÏÄôûnTëw½“æ¼$ dN\C¸¤ÎÚOöÖÏ@¥W2xè8q!LdÒ®ãoë~ä1V/ŒÈB=@±ôúí!0ÁY¡ozù$íùÐ÷Ç€%Ä­¿ÑÉwáÞá2]oªÃß ®_ý?IhËuè¡BmîF:µ1Ød©Èy6÷ÀÚÞ F ¨„Ln5Sòw&©-ëÓ°¯žGzø¨9ê=È'’ä(Ìý¼IühNú´Ö{äO ˜1LvcÕmiµ¦À&È"MìêmÄ@·WÕ†­¤­mÜb%0Ù˜*ú`šëÄ¡“ß“/fõÃ<C3B5>l½%PE2¡:VA)SBL/æ<ªî5ªCžA£ß÷<C39F>l;®{ËÀ (#ºØXnF"˜„8{RØoÁÄT(ä_WðbAþK|oM _ÖÓ—Wßþ‘½ yäMèÿ6€« ±^½÷atž@O1ë¡/<2F>”¶3y#™ãcMM×ÐGÅZýÝ[m¬ÿºzÏŒF lªù«"ÂJ>®eØVB<56>WB}çV)<29>ÜSÈÛi,¡ï<C2A1>Þ§ïR¸¥½»F<C2BB>Ǫ½P<C2BD>.è½LÑ€xø¦_[ÎXVˆÇóôQ ¯ TPÿõvƒ ù
eÊ,pþÚƒrh“ú¸“uñ<>„Œ`+l{÷eQ÷Ö<C3B7>_@f63HßPavÑz_°ŸÍÆZ«1*ªäÇ<C3A4>¯<>M+Çbp€†;{ÝªÌ <09>­Q3èVV;Ø¡¼ÍˆÓ ®O.Ožài,¼88«ÖƒìÆ…gŸ=\=à@"FàúKFøT¡bû˜¾V<C2BE>Žl(lg®Á<C2AE>ÚbÒ­<C392>Ý!¸èªÕ–ÕË\áýùa4Q1°Ì~ «9âqV¥¸§Ì¥ s^kí¢sdŽnzÁ­£ç¤:ÖLžzðªr Š¥¢ªƒvND¾MG79$ILiþ&“AØgánl6y‡J <09>FOµò<K åëPͤOŽAAÊv†“ÞÒl¢&çµøYå×´'ÙÎWÚÐåƒ&À¢0<C2A2>K þš/i iÙÒu bžÂC
8ÇÄzAH¥ÕŸ3
y.ò[ x¹âÝt1Au­ª<C2AD> pAÏ.[4£SØ2bw”+c t©¤îNehDÌ²Ý Å"™!~ä«;+7p\¤wxYâG
^Ý5E®ÍÜè“Ÿ_ܹGµ÷áðé€(A Ñî1`Ü8u.óu+îãÙ"úó>;ð,´Ñ%
o»¯ß xÈ0˜sÖÈW1FxÏîÔè—ß gþm<6D>µxVyõµÚÑ<>"]#z~—§pvòÁ <0A>†‘™öØŨ.rB9‰$n¸YC­C1úÄtªd@#÷¨8ÐkN‡Ô Ó;£ÀêÔ“l<E2809C>Fú( ØŒNóŠ¦;àá¥dþ¬Âûí­üß*¼Š<Ʀ¡•ãŪsÀ¦9<µG<C2B5> CE`…Vé¢hà½ÉÄ%Q“ÎF¥oP½Äâу$ª<>½"Ñ33¼÷P9×9ìZ<C3AC>s9‡'`ã­ ìrÚWù:N”¥ìÈsÓõÇ”·@ œ^WÝ…&24w©lz æ$Ô2Wï²wÝ…ÆìO9bÿ£å"O¦ŸÊÍWÃ*F]Ý/¦`yªŒQ± ˆÉ”\Q•ÂF*ªÜiTñ<>è^N öd_£M`ƒ¤†S%T³NºK7<4B>¯+R™Öì[r¥üÈYõÅíYqe}¼±Ø ¥÷ØY‡Púô
ÎFUE¢ìóþŒðÓKƒÀÕHŒ'²µ>ZQ@ÎIÙàt%£äÿ–œÀ[¨)7Ä&¾ü hÎn<C38E> ±éY'ÔÛa¶TÃñ'XrÔß™/n_n•JL¡ (@
²ç ËК
­µN{KFµßÛð^kbÞÂnê~í`L¯£]Ûa¤U¡¹Å{üˆvâïLßܺæ¢4“ô1˜$rmAÿîs•ÂÆóònZß*™»=©÷Êsõðob@{ !CC{c.WZ¶ìïæ0n àbp…gsP˜d$-Ñ\ö¯ÎÔ›&L<p¿¸l |¹~´8èú.ÉÄ–¶+fÎÇzy¨vƒá_²Bz®Ê‡Ÿ†ô2?vÔ¼êó¼õׇÃXa£!8Õ¤m
–Û‡gwÙ!
ø7åF Y@yS]~ñ…Ÿ­ùloBÖ鬓 <>v!0ùè·ŠF” Ýßúî©Eßa[ˆføPx4€H… ´;ÛGÖY"3Bô5ÙóüæøáH\"Ó«[ø1Ιíc5Nø9ªp>27J»Býóµs/g(ô©xQ,t>[®â8Í“GsŸ<C385>:R$9]6&ˆúmy®)iµŠvÉéjÂöW¨LÄRB^RBal¿ëx³_ ×Y<C397>:²5M§¯ßæîÛ»­µ¨û/j¤…àÅÙ¡!}Þ`”îëD&W€ÈªäÖQX¹$HߧçÌtI¤­¼ ÈÕ.ÙYñ@Øn«r_ôìnÜ<6E> ¾OüãtAN-L n—?^_…Ûg’µ~žÆ<>;<3B>`°Ðí¨KB‡Þð6eĶÁܯ‘¸
>”èl¿Qp«¢Ó)À†¶<E280A0>ùµ¥ò/<2F>;S' ^¹õ:ätJ±j@êx«³ƒE(0GÊ;κÛQqŽ©Ç”kT'¹ðž;ž<<3C>qnØäu<C3A4>tlLC1“XÄ 5Í
q×ÄqÒ¥<EFBFBD>Ðz1CS+À£P1Ã~S2Í 3«JMÚÊ„•l(ñÓµ$ºeÉQå/mpN5K7WýeŠ|)ÃÛØÞaŠH­àZ¹Ó¯4u<34>U}¿ÅÄçÃô¨U Ñ!ËY•ìêù!ÔIÔYå¨ÓŸK%èc¥E¯¸ìû›=BÙÌI]€S1÷ #óÓºhÌ[Q†LhªY-å‚~Srþya5 MPYG©ÕÐ;9<04>]©ÑY‹…@5€ÝßÑ(
øœ‘> <0B>÷ÉDHj‡¢ãsr
æ.Â>ÚÐÖ¯¯¡Ïk—®ÚlÄ;&–¯#<çÚš°òe<C3B2>)fÑäFz`·Ç·?¢ãIc@SH&<ÿ¼’îevn8<13><>F\ãV±ª3Åóa­A!yy¼ã:ñÓ+žc!£xðbÏMþÖ‰á/f}3ßë˦Çã"G©­ç'fMsÑÔXWUý}üöµ·¸Yĵ<C384>^ €Ô×%jÍÇ!H¾ïOHÿÉÍŽ_ù¶;臲ÎòâJ¸²<>]Ü#
ªÛ'Ch?<3F>5™<„Sý»íË°Áñ@“­<18> ša¬´€-™AcŠ†éloW´M(ò<>r·§#Û`×ÐnY{jÛ`3|lv®`º'Il ýà±!å´ü¡õÓPÂÊì{”¢˜ï=Îpaè^ <0B>ØhëOk`<60>·îãpøú ­8uyÜ$ròÝó•u
f}cqÃ+5Áy~!ýÝ]Õ<>úøÀìU,­¾t )æi:Hò ¾O…ÄÛ(®_eO<65>éFV¾þqÐ>¬uèàÄ-G:ˆáñÄzƒž…HZ\%<25>UívØÀ Ðzã^àËB<C38B>y%€NT⸶3=®Xëà?¼mJø-Ó3„÷×H@Ü<><C39C>fσýk¸R.ëõýv'€Çm.'ÍSãÂD»ÌÙlyü7“¢ YõÖC³­Åméµ^¶¯Gu5_GøµÙ1¦ût/ŒÔ þà<C3BE>Ìâð
à4‰±1­nˆ_ûD>}p+æfªg9h$ú¨Å]@ïMù`Ø^Ò¹GKö;5«¤wÇë»äIrqïA¨3fAßYiu¬€ÂÝäÃò½ÑïìÒYréDõö:<3A><>ÚdÝ “At ë-ª<>,)âºaª¤ÉºhâÏ9[Ô§uÿ9KÄTK©aX$äwgÉ“¶Oƒ[âxqǃ£yI(ÿ¼j5L§ªIÀcµ}|hÀ$zDâUÏÂ<C38F>w»Y<C2BB>+½ý¬Z:ÎïçÄϤŜ1¿òµlÙeÀÇ`uø@|¬ìÖ܈贚Æ^Ú6î/žyÑû`að¡¦È Š[¯ÎŠ`Ò¾ÌEž£ÂwÁìa ¡zæiòLa„}jÊ°çÉ@û£Šå}ÅxæïW¶™ån‡sŽ˜0n*{¯l?Z©zó•Ê>¸ç8íp-LÑ&È£ûïK`> `´¨%Â`¢îÝ¿Ésª?ºvË»Æ^\ü‰*ÖýQÊá¨Nbf…+Û¼¾Þ„žo" <09>Ù§U ¼zÑógêgÍaäŽ<C3A4>u´F Ñ™<ÃXúyݸª¬Ðú*¼Ègöÿ4?X2]Â<>4¨HšÍ¢×òš^ÁÐqLeo²œ˜Uíó~ ÷¥Ð7>ì)Ƥó™Hn<48>žº¨­A7"é{D†R</2týMÅÇôùs妀ûk9IXôf£©œÑâÿÏýû+Ù¦XEì§È.êá!ÀÐÃ"*JÛS7ÀÚY¯èïjÛ &ÒÙAèJ +«æˆ¿¹»ÚN¡å$6v²STY‰#Û®L—ÿ4Χîç?Ï'öì÷ÃùFdVGLÖ,+çs¬Gþ¤à^/¸©q´ÃÉöhŒÅ¬ùùZ¬z„D©t@ 3÷ešŸèMØ@>j)<Wh`äM¼ˆ>ÿ×¢Éÿ~áeàíVDJÕ|—ººX}ѧCrŠÈÆTÈAÈè fý˜£”P};Š"Ó¼KöÓ#ÎT ·F÷ú\çý÷^Ô“ ;™ À|êR D\Ä‚ HuÔ6ÿQÅýИ'<27>Q3Èb;x#¸ŽSÌ:ªjbíÛ%¸tJ/>Ê¡OÿîœrVÞ<56>Âx]°¹¼>)âïŸÁµ]€l<E282AC>ù5o¾[ç¡ÐF;,N&¨'i©Š\±NQÁIòHÔÍôÐÀ?T:í@ØFïçNÿ SXÁÝ0±<¬)»hàWÖ<06>½4f¹FD·h<C2B7>Û.سT)^SÑ-…nw}ý, ˆZN¸EÐCô¯÷ Y <0B>ReµzÂÔöð3¼Ò\
¶ØtíþþYá5`<60>F~_<78>ƒUž|'XµÇ‡„G@6I \™„çÜö>ü:ÉV_ûÉ>Õ¦9*I0}Óµ\"{Øï3UÚzÆñÉuäFœfÌÙ¤…õPߨÊ)E<>ˆ8üU¥œúw)®ðgŠËqÔ:àdj#¥¹¯Üˆh ¥œ¼so -¹@
KG7<47>ã"­|QЇæªúå Zòzs|…‚}£ÄLÕ´SŠ¥:€fªÕm¼§ÂA3ï<33>ÖðS 2Ä=‘Ö[³d·Ø“üJœ\ܳ­òcìÚ€üù|Ët¾j1ÑÆAçrþŠ®ÀÑ®þÌJvÂ,K| ò´…Ï•VÞ<56><C39E>œ
˜üQ„´[ÜÞ<UÁX:‚ÚÛ?c+ö%à± íN»ÜBS59†øƒÁ³<01>ªž"ÃÖÄœ³gèTé¼Ýä^b©WÅÛ(²*$ Œw¬øè)ŠŒ“ã…^N!r­ÃYz¥<¥†&r—;AdIC`/ˆ<>}
-j 6z\ËlòÌýŠœK4<>K-×ÝW¥SåPÍ®AªG'ƒÄÄÜú³ÐÒÌEï2ØÐHP7Á¯íYäWÉ-²FÁ™\áCKúšy7ùßßShL€^f¨Ûȱð†­™Êu£µÖŽDê"{î˜Hbþˆÿª àܪ¶Váœè¯êA5õžtÔoXÇÜŠ‡ì”ÛK»4zŠñÙþ6L/t@yð½¤Cb¡•àx A*`m3Àsž âϵ4W à„=TËSš!<21>çóc·†p1ùé£fýkÜ'UW`úZYöC‡lj<6C>»9J¯é{¹%ðo…Ñlq n@ßýFÖVbx,XvY§OãÏÓ)kaÜõ/g è,ÎW·ÒÀªô¥ðoÿù±À9 4X¿HpH<1D>¤3r€9 žÝ­»N_ýžâÔûœš[u­<Awн°l<C2B0>ÄÎ÷R㧶Ýç½ÿЕJÑ]<5D> „•'4”¨P¢,?þc0´üTŸªÂ%ÖysÅWX…2GMž…+ÿ—Ê4#_À”ÁVN&&i/$<24>TÈ.{Ù%Þtœ_RBÓË%<6¨LÈ7×k+£l<lÏÄž<03>˜µ­…,½‚Ç…+c×­eîàìÉìÜaû<07>1±+UàbÉITѨP•UíÖó¯§uB#é®ïæ+YÿU´ëÌIƒ'lèœe¡3Ð…Äý~Iú]/µi®”¸ +ܳ„qiÁÃsâhïšÂ¶gáJgLøe®L£.`AùËýC6Ñl/q1S0ç<30>pbû;£b²¯li<69>Ž¡ñuDÌVŸx½sÓ€ÅråzUV9~H]<10>ìƒÇ2,nÔ<6E>¾<EFBFBD>̼,ëM+S „i¨,zŽ®4í#")ËòbEd|ñ¶Q5ð~¯TÙDª·{a°§ëFAÚ# À*„LÙôª  ê@€3z¾õ‰ÅIð€½«;çª"»J ·¤ªëëb+.¥ÏΕQP6œ¢µ7×þhw¢êÓâ^ ·YMåøe}ÄPÙõã}»mÿ<>JoѶ¿ü»ÏfX$ŸÑ8η •-©È|Ê9®¼ ¸Ãz&Zõ·\ÆÃÌÏQ¤Ó4âiª£Dî]5<>%ÍÁªS9M
c^KŽ|GC¶|üOàð0—¸ˆ‘œ•þñš'?~ˆ®0?ƒoM j¿Bߎµøw62 §IáQOþÔ“dÒÅ=êèU%”ó×Þ(Ù“ô×VS’šó ÖàŠo4SàPõ÷±nþ‡u\iÖÇ×ÐÌ9ý¹ær ]ÑÆ%HÿÓÆL8ì²×pe@<06>¦Æ_¯¨@ôÝ¥ õ| Š?M‰\¦»EÓÇsR‰;ЮsúR™¦4:VW ^ŠB4üpÌX=gI¨J^e6 DÐwfš”i¤³áè¾e#p8z¿¦G¤æY¡9ƒè&NôŠ<C3B4>÷â/ÏdUŽ©Œ
ëüŠՕ€’ º©‡Õ-¯ÜÜäã0ïÝñ•gëEê¤#¿»?ÇÒ·_3a<8.§±ÎŽ<C38E>¾réÃßùjŸÔ“¨0;™Òð‚ÏÊ]ÅCªCUÖJçQ^ÑX@w%e©;%Ís/âºjÛ*•Õd±š05âCiô<69>r@#ð)§hHP?À9þ¸uÝK΢sð÷eÑËv,ð’\È™ d€
К½šu…l…Í—oÌ™ÿ´§;#—fšA•[,¼fp<66>˜ÖŸJìÒ~i«Ÿµeš÷Ó¨-™Ìýçl—£V<C2A3>0É<E28098>ÒÔ‡Ð3îšu·ížCCªh×¥@~ ¢cÎÊóOõ<4F>Ì­@ŠÙ[¶v'˜Úø}5&R£À!v\îê?<3F>\©e·†A´5ÅwÑSŸÛ¥»ãpÔé¬zPBÙÕ*! jõ†ð!?m'<27>Ùö#È7S<¨^‰D\oäDœ=#<23>"ñl@æ¶"D:ãkrÿQ=¶Aô*x}Uë\T<>ìQ<00>;œV<C593>VL­Ëh‡' sÃÙkÑm*ÏÉ
Ò:ˆÏî?X=Ç<>ý™ðÝwvf±N·È îXÛe:öÞ¼YÐ-Œ)Ùó-ò< <0A>ó:ߥ™ÑTEÀØâÝÍ<C39D>gí£3Ø9M<N¬ê®;õíto,AfFïÊJ½xµœ£ÙlÀyFLI;"kE9ÄŸøÍT³Û\½í•Á¦iÚ<@PHú5Š2jפD¨ÜrFÓe4FŠ,RÙ¿>ã5GnKü;9za~ç¢%d-Ávüy‰%¿i=iJþàhÃq¶=¸}ÃLG„ÍÃPË
*þ(ø0V(‡ý¯«bD¾Cܶ§
÷[‡ïjHMnãüU¦mdmƒÔ^>ÃÊðýÿvÃ!÷txáê|<7C>ˆËZ£iÆÂŽ3”¨vLž^† ©)BµÏ.‰L 4vÚ?Ð8Iè,üŒ.k0»€û-û~Á Ÿ)+]ݤ[aR6n¦Ò˜¯d ɼγ%>éHyHîc¥z÷%Ä{ŸD||¹“âÞ‡ªÑUÚÎ!@N ˆåÅÞõÐ+sxãçJb)(èáZbÓå-˜CYe‰^ÔEýCã¸èÚ¾x܃Ä8æ<38>7¯”I5ɸ¸è^´LfÓ  òßÄû0Ǽz¿9ßv S´vúO,¸v@¼n:ÍŲ¨C ÷86"y,uª¢7ïϾ }óTy¸œ~.<2E>&-ĦïIÊ_ £ñåýºJQGŽ[Š¥]¼OŠû ýß]¬ð Γd l“ªÑìª*=ŽëX±$r¯"ù<>É™îÔr²Â¸[`¥…ÔrŸ#èTí¢;¨2=£!ä}¢ýè&<26>SeCBƒW ¼Wô+ùUé+wbùä^ÝÌr*à/•dào½Ù<Ø„ñM¢ÆSïRßÕ½_¨&ªˆ<09>¤}¢…×gæQNC˜Š Cû4 çðGH5‡Ø ™ƒä<C692><C3A4>fG2ÀÍj<C38D>ë³ ~lŽö³&gãÑÚåTëÌ ß[ŸêòX«;_ÞöôÅ/<2F><OFÅN8a$<24>€œSçÑ$/÷ mqÚXK<>®Öœ ²±)yjßÇéXä4@-{5ü2ÁNÿq.¢*òi1<ù=b¾Ÿ?!"Å+¿¿×Åæì<C3A6>ÂOÞ°¸Õ9ÐyüÜVé¼K¡xO‡Hp¸Ö÷ n%kˆ65"a*«üW0äx6ž/ÈŸ/(Áh湈÷eT€€hÝÑÁJ~ܵ„ýxMœßÿ…[ÄØï󚺠Ó<13>^QæHJöîÇ5¤æ´÷žÅ Ô«ÄóºUÙ"HµÇ6Sás9@;ɴvgŠ{Í j¬²ï5”ln0doÍsŠ¬¹­R¼ÐÛ6”@SÚ«V±Z 82"úˆ3ÝU± ö[ò‘¤ö†Ý'n©ÝS8^Âÿ4Á§k<žŠN2¯ú$Jù¦/z¸"P fN=ƒž´¶9[ÕÊy§ø™
1?c·Î‰öXTXúe E-±è¸ÕTBH9§ýFAŠÏ¡õzN¥é|ù ®¯+ŽMmžÔ`íé«’Â@ú¼ÐCŸØŠYðÛ)øÈd†õ®‘Óê ZÏÿ­¼ORZ²ã£Ù}ô(¥cb%êýác¢ˆdµlÀÑB¹Uc &x£ªJª`tý¥´Óº°è7<06>¡í1ZêQ:Å‘iÅ9[©žç=|ôAnÞ¼"R<>ס¶ß}?ì']ËbÂÆ E/ˆ'bWË$0½| :ò~¬4U{÷XתŒ£Öº¡«ÃGˆ°ˆ»ïlD0HtK2WBÏhwRôÓ:ïËåOˆ²G̨oDX„%„‰ÐýEàIläÔÛ£ìa¥ÌäÎn mß59ÃP*sºõ]ˆzë;gîÈœü¡ÐãþR?^5<>ñ™å¾°OçwÕíã';.}-òHxsž˜Ðr—íÔÁ+€(è°¾¸ÍgZsoVÖÖz_Ñd8ã§\Á¨è¾Jý/röÍKL~ÓѸþ¾Ö\ŒƒÂ<C692>½lk³»¶[¤H=þš^<5E>c¿ ”W¶Ü[‰_W6e» %˜OAF‰í2»R½0¹<•-â°$xh^ÇÄp JL¡Ô&7FžÉ€AÎÝßµh/Æ8¹Ù¬Ã‰]^þPÅ"Çœ_á‚ëQù¸äiŠäú×z/„¶DÙŠkJsœ†§5BÍ™KÚCˆj}©bC'"?×þsäÄÆ#ärù“"<22>¨G<C2A8>UWâ&LODN!üYò áúú†t¤:àM-ÞÄôÑ1ÜÑ«”m³™3êgßП<C390>¯ßÇ/í]FøºÙóáÛB£üĘÀÀÉh8'Š€lûÖ<C3BB>™¯5+¸º!SK÷ã_å"ûóÈóc:©QHX8Y¬Ñ¤qãÄw˜´ç˜u,ê6ŠiWj2'ª™Óg¥Û=´GUÔe®‰áÚý1¼±Æ~TÌÔÕ/Ïc4¸C‰½ŠÝÔú|j6aXyº³EÖ|:…D=KxŸ;Y?áU“®C<C2AE>±<EFBFBD>mF¼qn+ÚzjrÀÝ1+X?•x8$g<®rKà·¢mÆÄBÇøý1Ý(²nÐHþ#º±°ç³w¦/>µ¡QÊÆqÞDªp Îÿÿeeö+FÔÆ9f®îÚ)ì<>â/~äR.""½"£š<C2A3>©/<2F>ÈWfóï# ŽÚµííTÜ+MÚ”Y„ënÒû·Þ¡žñ}Ôöm<C3B6>Íþa§åKN_„Ñ<E2809E>Gõ(àW»Q+KSÙ}~òªf¨¤TºtT°h<11>@>ýƪå;¸ù`äüÆ#«í75+ÒßÓ±. Úþc²Rnø
¤loV
ÙÿÐg¶ïQ°Á•ÈÁ<74>LLh`<òîR§…$ý†ÊX
ðÐ<>øGèü÷(øÍu¦YÏä7ð˜èó~EÂÐÆod<>³û¦{;k©T4ï£Xí n³zÂ¥,.6{Â>ªi;ÔÛü€¡¾n9ö§s§˜$ƒá<ݳå÷lP%Æ…<C386> µX<C2B5>ßÀ¶òÅj™°R0è‡îˆšR<C5A1>Qb+ <>·òÐ+u»NªÿÏ…+Z.ßþk§ìªA„ôƒŒÎf*jÌ}§<d‰÷P¯_e¸l mjP9éždUV'ËŒŒÇ—<C387>LèG+:¨ŽK<C5BD>Vžê ©ýÍ9ŠÎ -$q Ý<08>ßqè³=3ñëFìQº“ƒÂH°—¥„œ´ˆŠ50>i/ã<>b ƒ­ü7í_æ‡æÝ|6à Š;Å^ó¤k az.€èè4ãÉå»&+ð’ÂHéaÉ×Ã<C397>+%¢2W×·Þµù­g /z0RO_ÂW,T_\°€ƒº£¤—ÇBQàJ$FŒØçþóaîø8¦²¤DÙNŸÎÒ×+R2<52>UŒiš°áiK¥Pæ<>N'„„ØåËJÛͪ[·åeç9bˆ<62>HrMS<>I=œ“±Gÿ®¼¨áy5Z¾Åó£Yþ—9X«æ'<ήœ/fv<66>y¦Š¢Z
Óþ½±Æ¹/ÒÄ6 :+²uƒòÁü<07>²GÁöÂn<C382>¢èd>ýƒöb+R<>ÌXë;}ÿÚ¾E°«¯É‰wË}f´hm«<6D>4W÷Û×Mä«„<C2AB>â<EFBFBD>á¨ÏŠ¸x ðc7wg*¶öÚzEL]¡Â…<C382><39>ÜÁ<C39C>ßDRMsj“wˆ!ÍÒƶµ¾ €]®®v âHÌÔ¨áœÒxB)j¸“R馴Çe</=¿íûLaÍW陡#T7LrG<10>JÒb.¶ÈMÞg‰¿˜ fºïIgb¹[kõÃÉCÄCìy©cñBµÃ:Á¢oYz„T|ôúŹr*¯ Ã'$R"Ì <eÎ#èÞˆEi×oý¼ƒ[<5B>[ÿõ¿Çk}J\GBŒ£Â°ÔD Ìwü¹ ú™5pK1ÜG¤×9âñk=g>&‡ ñ¬<Mt è*¤Dì1<C3AC>Ûµ¶¡üICT±aõ<61>Š»Žž±¥ÞEžð*)çJ}3¼jàí(<28>uŒ®˜é˧"î#*æÀ!Mˆ‡Ô<“{ØŒWTAºØ™¯.òWò<57>1rñÒþñq¸à©õfAC¢=°H~ˆõS§iöCFÍBíßúZ`?98<39>Ë#¾ÙÜé<ÔL¤¯;±!æöhü«ÇÖ>`昇hÓÞ
ÚÔj
PØïgeìU$GTV†ÒI½<49>ÉjÖœ·3«³~ämí!Ìm%^zY¨;`¬¬(<28>œ§+üåè”ú²ÏÇÌ*~ÎÏŒPiaõ£`™ñ_õaˆ½×Ë¢st©ýó• ÕÜÀ4"îÍ“–˜²V¿³¹ó#VâlÌûî½/Ûcð³ES3öÈ ½¢…´BŒÿlÕ1ƒWR¦Q¸(ž¡<03> ýšRWMEßߢ/5j[ÅÁ^Ì.˜³¿ \8ä úEI<45><49>ÿØjM—ðPÅ`NY>î@9ØäzT ÏÌØ%TÖÄ:ÇFÀèðð|f¤bØÛœ<C39B>N<EFBFBD>§pqñORî­©cõß:“0"MêÃ9~éú¼ZnìðÔ>Xu2‡VaÅ­‡™¨g¥ßüBÊZ
Îè?Êà¬Èîx¤ªÔñ•lcÛŠ%1\Ïñ•DôQx¼{ùôEGW»†Î½mšG&^<5E>v.׊Hsl,­²ÊÁ
'hóAm;—©¤¨«npk&­¡Vñ:Ç®»z5þÇ¥ (H9“<39>ˆ¥ÇðÙçQ_‰¶ò]CºÒLãÈÏ‚üþ/"³¼º‹ì+ƒnÓÐ C—Ï£kãSìò•åÐføa s£Vlt«@GJöyþ½aÇ`m«í »xƒ_1׈£6TŸ}‚¨b2<62>B¾[Ô|2@°Ô£
”í<EFBFBD>®@˯“_ ý¤ÍyoL»ÇÕàRF»¦(ä KïîöTÔO@kÉHÛ~v`{á¸ó<C2B8> á²ŒƒT*_ãè%´°Ý‘>d÷¡ˆxÆ)âvÈLÍÏ™¦Äª°äw>¢îâYÁ©/¹œ·1?ñ›,Êó.˜5+Š[F ñsB¤‰Ó»h…±~-)ÊRg•CÏ[ñô<C3B1>å*fLм&àZÃ;p†â¸f^_g„áxëFœ“oÖ!ºBžšu§Úë!«XWˆ·"ž®æÓõ]µktÛÛ’ÚÉÚû_ä­
ß•bì?Ý•^E0¨|eùÙ™eúËiz}Jܶ:"íþ P²Põ¼+}:—fNù`HÙ­
ró¢‡A~rhÇhD÷ƒJV°—{…#˜"³B=b;N}!OTº<´>Ѩ=¡<4D>`\uG×<>ôå­—±ùvjÔÛòÆ´\<5C> }ŠÁÚ3-Ž°U½Ê䘤Ašió碞Í;Âq ³å;«À”þìóÏmÐL5ÁcÚ$\KýÄF8³KÝñšÙÑu½þ‰œ ÷&˜°1i¯3 Ôë¬Îðc_pÀJ‡ M¿&$ÐbþËaé¤Tf$Â{&´d +p»£—¯Ñ{RQ.<2E>š®ÇȉM:? îSúÁ#b™Ï óž¸[μÓûóF—Å*n«îÈ!ÛÇ r$;:<3A>|D„<44>ü³äÖt®¡<C2AE>aúÅÐ_ÀIÁˆÌ¡Ò•ŽÅ Fܯ£ãùœ×„ä-ˆÂgñ]ιoÅ4¤aX÷m‡w…¹tág>^Q¸&)ÚFÝzxRÝ®ƒeà{fcY…%DWHïfš)xÆ5‰÷²ç .ψâ l
º·¨a7<EFBFBD>»V<EFBFBD><EFBFBD>fý<Kµíáuü~H÷
šA/Z4™#¯ûIë±ñM~8<>£ïs™Â°v³zÔ)<29>'Õn!½ŽY±dî É&©“
L8k‡]ÈêS™xähTïqƒÐ<17>UÐSàW<C3A0>©Ýå¾Ù
œ½bþ¾LAb(üèÔKI¸™æÑŒüþUËÛ¶hÕ\b<>':*·m¨¨´hmÔTÂ},S¼ÍØg HsN¤„°ÀÍÿP…ý·©“›‡¨Œó¥¿ú›'d<>Ï_\ÅA@ê<>FÅMsíŸ\Bš#P±Œ€~†t•<74>,TƒÁ”%`ö¸ °`)1GfÅM;[ˆ+å*>˜‰—uw¬ˆÛz n hïÃêÓ‰ÊÉ_ÙïÏÛã­Y€±—\9¾}¾–š2ZúøË~²ðIq<µ†÷ÔúÆè—‡Hç¤AÖ|7ª.ždc ¥zò-=­53S!µÉ‚ÖidêjÎý@—œ4­LàY¸óžm…
ðˆÞáͯG¿LxŠüªäX†U¦ökKu6Œe.£o9 CÆ…A¹<41><C2B9>¥DמR«A¥B>s 1HZŠQ<C5A0>2àæ+Tç£ù ÆŠ>[á$Y«MS¡V7iuñØû§…v@·œ¤^ø¾:šÎ,Y•Z¥îÕµJž¸fû!´ú9ëdŸ­¦ÿŒ÷ÉjÓQÔôu<C3B4>½Ýè:}^4/ð‰é´´…í¢åXJtÓ u†$VEÃÜ …\×ÎŒú$®û%Я™—
n'ˆ½ÈC8™6©U}) Jy<Òrö/Cãºxj×<6A>X¾L´^éUµpÎA“öÇ=;ú<“ð±§1áL q3dtú(ÜÍKú”x¦£¢Rf#BiX'KRñþ¨+ôZ?Ï<>H çWúâE
eSÐD¹«+ÇÞ¤”Úcm¡+áµàûgÒ‡TjáWžÅàoW#æ„ÎK¶¤ž­<C5BE>nˆ‰ûŒ”ðˆèÆôm¸ª·ú•`õ˜Qé€8,xÓ${[]
à„xendstream
endobj
87 0 obj
<< /Length1 1458 /Length2 6860 /Length3 0 /Length 8318 >>
stream
%!PS-AdobeFont-1.0: CMSS10 003.002
%%Title: CMSS10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup
/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /XYLNGW+CMSS10 def
/FontBBox {-61 -250 999 759 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def
/FullName (CMSS10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 80 /P put
dup 83 /S put
dup 98 /b put
dup 105 /i put
dup 109 /m put
dup 116 /t put
dup 117 /u put
readonly def
currentdict end
currentfile eexec
ÙÖoc;„j²„¼ø°Aw-åÍßᾉ<C2BE>ˆ5t&× {hLšGÒqB`d­Ë—PØ©†ÑÖ|*îøÎx\Áœ<C381>ÞHŸtEÅãBð-¡ÉùóÁgedogÏ7—‰ãïQ`[['“WÖü…7Â3ç®æ¤ý¾sçZ9ë m ¦ö!t<>Až¾ëY!$átÊY\Žr[˜uTIUÏýiŽ÷B¼Œùyã[Ž™ÊÝÝÈœÆÅ—3ò¢Kï6­zJ!žË’ÇœJ·s&B5öC©“3ïÔàËÊÒì }bQÃôQ<C3B4>—v¹cXëV¶”îL¸Œ8:oF)w=b.þ0Á»¨ÆÙºŽ²–Ì;4ÃØ'¾S¤¨b|ŠŒÔ÷Æ2ÞFZ£0fÜç*å5"®û ÉEøà¡Þ—|áÌ&z{7j俶ÊåçCÍmÀ£$¦„‚—õ®ƒÙÇCfWçM&è9WÇE‰ƒC7 é¶<C3A9>5üQs ¶A0óWìXŒ a4÷fÆö†¦36˜²• Dè¿8îê©¡x9ÔE¡ôt
u|p:1ºÞc¶øzŠ5õ“^œúHÉ€Œ2‰bx°µÉë£@_ã@˜z g…Þ‚Ù]Þó0&, ÑbܼR®Ü"š à½a¼Å÷ú["+¿À)騰²%öá &ˆ| ‡Û4O'Í£ª§ؘݵч¯µ)îþ9$âägꡉ·<E280B0>¢giôŸnkvñRc-¼gj
®¢ßxÁ4céV€Ôˆ}pîA”)%`+<2B>Èe;1wX¸çlëf”½»cÜL!É9LíOàƒ_¨cíe¾ph—ð\CLÇÈjOÙÿÄ)æÍhyr+<2B>¼q¡Ý-¹Eiæ°<¹±—ËéÖjÏF…A˜+ùpÌVØ*ï³Á`½S…>|DcìYêëv ÍŠã-+¾wâÙÚèu³Åd[!}à<>QnMñù““ì<E2809C>u9¼;¦µ»ƒª·ˆjJ¨´èkíª*¥d<C2A5>:4SklµsÒž}4 ¦Àú nó<E2809A>ÿvÊÛF&éVÜY8j™Æzw?õ¼£ê0}ïÂÜô%t–ÜT“„<E2809C>þ%š;—p2QAWK„q7ö6´jŸfÚ?Dœ*°6z<36>Âe¶ômšî„>;“®†˜å¤LjIëö]f­ÂË`^¨–:Q§Ô™&í>ôNS„ŽŠ³Ò\žGYV˜,ô£ 8aƒ$€l0Ü
LÎóÑý£{œ¥‡8gX[rt=å@|sÉv²\a öð•ä¼ŸöbµWžMVSßñvón^úhUðCì<-‰Þ¬íHO?Á®ï¼¯tRpDþÞoûÙ^b<ppêEf1”àêÃ@ùógfüëK5LMÁìmOÚqç¥é:m®'H#X\øÛ0ã\ûÁY &yc×ÑQÍ}AãKÏɦVÚ”i|>h;»†Oó}<7D>¸ÝþM_ÆŸõïz6†XFÃØÌ_ºJ¤}Á:鬇Y!ÞïüÔàÿ¬†f÷õ,S¨»Àþ9Èô•oZÁÝKS·“¥‰µp¦ ƒ/ö88OO•:?¦µ*ë\Uˆ™V·<56>/v‡Ëy0<79>OÜgƺ”j
<“d¦9èÆrQE¨0Yâ !§>ÚéAERü«äÇp…Þ«ßkJÉêcÒ~ï•S㢕ÎΪ³A”_§.!q”ªk:2Pü Àg¥Ëú¾'
`eº¯Òžwík¦q×jCY?<3F>^µæiÄŠXA”*Ýsž)kc9§Ú<C2A7>”Ÿ; Kq˜ô9gîÿ5®>?ÄÓÎt^gõ±72x™r ?ãn2<5(·é_£ ]w.J¶ ôs @eÀ'ùܶÕif½“<_7Ü0óAiš ëbÉÛ³˜™¥¶nÏ]ÛÀ9>P…˜žd¿¯Ò«´BËJkš×,ý¤~[#áA3øàníúøõ<C3B8><C3B5> \hŒ«yYSÿ÷ê:/#aÔñˆëæÖ8'ó<½å>0¸FgK‰õ²ÌJ|2‡lê‚ìüig> â:`<>ç~pÞ³>ô¦q¿ÃCyl´7šË`zž³ÅNôÙöï~]ôù†Íó}l¤âTÀ°!µIï\ŽEöëq
åäƒÇÛ0Ü!B)“B…ß®ox!‹+¬,¯%Î êémÆ"NYešh6†^Ü.ǫ̀“‹~êÂ÷ŽA 4hÚ6+ÀÒ¹×ξvL0ô©òþó÷Þ 9Òn#¬ºª¡ZÑ6)¡ÄÔD<­.ÚùèuüRƒNûÔ+o¥ü…O—Ny¯Êò4W[6‡i­ìðê<C3B0>sG÷ÿ”…’‘¥rÉŽBVÍeŠm`r>¥õ8VSÌ€ó8{7«Î}Vì-Ì  ^÷øv<C3B8>¡rÏ<1D>ì¡$8Žî[y<>5sSP@VëÆ¢I[m*Rîà胙ßd\âíÂ?X<>ïç<C3AF>ˆ<EFBFBD>sZDYª ´ÓA°éË$ŲʤîØ‹Ö ÀÞ·8 =*Ããø-†«)“_NèÇÈàO'jE<6A>¿fNœê™¦\¢â“}3Ì®¥ÈÔ§ÃTÁ®wƒÙ`dÜõu²{¬r¯W—Ó^1+A*(Ð/)àW nÅXÑbØL>óåQyÄù+¯]JZE¨ÃÌ8ÏV¾oYí†ÃŽ1kÁX­~ íú'C³“­6ôzx³õ„ópyÑFÝdþ7Ÿ…<C5B8>gÉhËz
&ÜÓæL«ò£„#ñûÄ*,6KÅpg<70>?ÓNÌ:Ž<>· BeÞFÓ
&y“öuX<75>5»Pc'é¥n‰ÎÞ»{­^l—g·Hv
"¸…Xlfå¯AÙÎE5iìóÉé½±»ì
_¢n¹Ì𛎳ì²%«Öe}MÉ6Ó”3Y˜¯vŠ;ûĺ›÷#Á<17>ŽW¼Xµ‡òH©ŸIÓ,¡Ö>(ìb÷2'Ä™´_¬ç}íµ;7JF
¢;„õ÷s5Ú¥ýÜbvqc8Øå<1E>NQ¥HŽèh©<68>¼³eœkƒ…,é¬Õ^2lSyÓe .ÉÄ–Áé§ò ÄñœÈÔæYRÍÌD¤4oö:Ö¹ãXª¹f‡YéqjÎE­};
`¯ÅB7||oÞ¿«D&Ö e#7=ʹMÌ}}°­NÏ“6ñ¢}kjƒþ¾ÔÛ»àuUá ®„ö¶t¦ ´,¾ÈËX•ÐQ•¢IÚ<49>`œj¶¤PŸ³zó©Ý°¸¤Cèø€üèîPißöÛ$ÜŸ<S+äeêq0µT:e˜04£M/'°¬\ùÁÐ fþ¿ßut€Û,¶üCa¢<61>³<C2B3>ñsÆ}ÑEﻩc{Oª÷(IVi"øhš:Ö<>ÒÁ^+7NôtÝá <>ù!ˆs Æ©Í|J¨µˆ·hC½µTô tD<74>ƒT?ýÙE!`<]hºßÀå´¤yÔí„xõË#Ž¼ÇfžíYàƒ@_Ÿüh&\Ã÷$ßgW™®_<C2AE>äq 4;ÏVíÚÔ°Ñ6ºÿ™²K¹ÅÉ;¹5#Í—
j™9ã-«åñ9­2ò÷ÓÈw3QªÖ ©ø¦<C3B8>ŽDñSð³ ̧ŸÃšbgc¤ÄKÒÀ{ÏF+e©4ÍûÙtçêyËú}Þ\SÄy<C384>¸ Ö1+$a)
Õ¤N]ó!°¬ÿÆQ¿AZ<41>h¼¤>o¨~O¸îë“/  8þ»¨8…·5~*†‰Âfx¦¹<C2A6>þ ‹å9vÊ&ÔéùÈï$G¾ûµÙâFë³<C3AB>É—S[Ë<>L BêmºŽlŸ<18>êáC×®»$çÖøÑ/âž`^" Z6\&<26>Fþ$á/ÄÕ—?Œ=™Ëo—³\7œì\ñRf†ýmz«ô`­pú¬nT¤ø¿$Ô"nµçVº>©—¾×DŽî¡e{Â1~7åèáW V>÷™ÀÕЃþ3áá<C3A1>ñ¶^töL<ÖÊ"qpð|¦Ò³ª³½<C2B3>[ж:A?IÁo]”JÒÇ”Mb˜|tçMPX"ý¸)Øž6þa„Ðö !<21>`âS]²CV•Ç”ÈE挃3VibÐeJe =Éü5ñ2jƒÈoB&){èSë΄1eä —ÄíòiH8aè#E š™h®a39—a<E28094>?À¦  îÈ!RÝéê~ƒ bal¿ìº!ÎJ8k§¦IÐ$`È.¶ï<C2B6>Ò"Ǧ؉[Ù.!>òCl<43>KB\¼5;$7ÙZØóq0W³ Z<®} ühí¡k/…toø­¡šD¬:<16>åü¾f¦êi><3E><>F³-í<00><1A>|OØÎ`àß#à[+]bÕå|Ð>Àïæ†<C3A6>Hb¬ëo|¶œIšÝ4š¦èç†;1[®sDL]¦!“þ3ä¿ÂâÛðÑ[Tå0S¦*H)ÎÒ,íy†ži®Jòl®Ótð5Ù€H‰CV‰!”Ô .¶úasâwùEx5?„0Ö•Œ"RaÍ<711Î9´Û©ˆí(kðÚaêÅ nu{qg„reÓw鶟ï'(ÂvÌot~
@¨ùì1ÀVð½£ÛÑIØ,“0¥Ìcø.b¦úžzíwp‚»aêûê ÞòCïrð<] ðP}è
L‡î ` ¹4öžÅÔŸ”ñp*mÅŒ~x.Eà÷]MÎû<C38E>wQA*äJb퇺)”ÏQ ÏœœÞø—»9Ò?“£¾{?7 %4›ú"ã±¥Tê§äG»«:îj”nØþ¼“CÀŽ†Li˜³´-õ§Þ<C2A7>;Ŭ.p!± å2šïôˆ>Õ=+ø0¼ÉIOzÐÆtYžדHÕ.] UᤸÃI»uK<E28093>±;Þ0jóÞ>¾7»UØT¿%k•×µ¦ôZl_{(W°ñƒi¡WÌ ?á¸ZYå˜ÉE>BDÕ]?Éë92ÞLg³—_Ž ál†(É8V<>í><4C>m?îY F˜«Qüý>ɆœìN=D{Ãnµ;C0#”ØÌW>´<>A®§/º<>_ycøˆÊÄHo+Ý*¿y=ü½¨™iQ3Å%Ìö*3:Á hrà¡y„Uý0NÙ×ißH˜}-Ž²¤vòk“~§õRþÄŸwƒ™` ·Œ”üë<ØjÙí]ˆ©PóÙ÷¯/()Këæ™Èp#¿ósn‰ñwIm-p´s5Æ<§“#Œ¿hr‡'QàV¯KôPMè=Q5<1F>d-¯Ñwv¿!ù?ä… 5àUWg;ï¿ŠÏòû,Û[Þ.ÂÕ»>ë—¬œg<C593>I,•ŒF·/*V<>2×;jZßÕåCä%x<öI:ØM”µŒ ÀÅk­@ÂRøf€e<E282AC>JuO¾d ìYÄëñâòhkòl¬E*®,±ÿ£ôˆ0Q =9~Ÿ¾®õ.ñ¡þGÁ”èËö4%o*Ët¬æw_»ºPšZæÿ yUŒBh~©Ú]‡o” zFÉÉ\[ë Îe0žÕ Ÿ%Xj²ŒŠ X$ƒ(T±p9 Š‰Ø>^M„p ùÖãÊçn<C3A7>ªUµC5,) Ÿæ [†­C‡Â½wù-<2D> üÞ¾B+òV¾.AÚîÜuêJÆ<þÏƾöBSx—kúf7~R©&^w†ßÚ‰ßÚ»…3<E280A6>‡EÝ­26|vô£¡>RÑ“ú|4Õ©oŠcøû„wø~éHr J<>úÄàO×:2ãž[œr~}3ÒqGãÆÓb'CjNEqËh9ÄE*š¶)m´(‰÷s,!µ’Û¯Ú¬!DF
UFè÷¡üææØû+ f^­ƒq¯<C3AB>.¸6<C2B8>o6úðéyÉ[wÒê¼]—"Ž¹DÀÒD¬“xŠå(aDjÇhOßò0É™—Õ9XÚãA‰%ÿôè³N%¨¢»"µ­7'ó æ-Q)ÕûÛàßØ©1a¨Û•º>Dr¨1æmJ‡M#óŒ(úÑDÅ-è1Ð0¿ìë³SöçÕ¥ÿÕH'LJ;K
Yš2<C5A1>"×6Õ¯adοBË\äÐäUnø­8Ú'yH·ˆ·{ãDg³ ´îYiì$¨B,.­<C2AD>¸*…<>i_¬Û†LRÒáÞ´FÈ<>E
A¡/‚ê¯
ëø¤µ\Æ<>儸<E2809E>aŠDUæðô€,¼ôüÀ·§ÿB3°sÌE÷Ã<E280BA>ö4u¸eÏKIÞŽ¨ÝžüLV,ñyºõ×PÐ3$_ýv*ñAÜÂó絛Ž×ÔjîsÃ#ɺ%­<1D><75>%·&ñcËXKûŽÖÕÄΦ8 ò°ªðŠ«†N^Èä0E%™âEÎW3õ²i<¬:·O¨0NµIÔ ßû["BBmI<ô¸ðZáÁ´úͳÂUF~Øõ£ÆŽCkf<6B>¤'_, o3<6F>à£P}Tp] !ÍW³c²Q‰¨ aöAèí0=¹M-¾ÉŠ…§ß95u§Ãï· åúµ¯Ðo<C390>È®æOWÀˆØSáKì6ÂÀw:²¿d¸¨ üsZv3;Sr(ôɇØ=&¾$$™ÂQdœqû¤œ¾#²Ø îäoº°¨)“J&QØ%T_‰4ÍÉR"HàY [ѶˆÖS©6ýÚ^<5E>¢ñ`êC}ì-#³l1g<31>̨žk3°Ù: 8&ú&ø£¢UíL8ïÝë)ûE5 ˆRPBìŸæÓô‰µp]šZ“ÙglxzÃAŒ²ÙbìᵩêEô<45>Îo W2:d¸iæaì“Ö¹W€*Ïß'Pz۲ů_MÅýÙ±Ö×ê¬ñêÆ¥]rf,>C/|!éG!›©,y
ÞDƒ CqŽ>×Ðïâ(„—ð˜±ÀýiR…ˆß4©ø&öÜÌÏlu€”^§<14>Õ'€)ÑS?Oé\ÛR¶sŒy¾1å;X9¨æ°tPžà“Ø2Xhú °s¿î”bÁ§A„ÚÿP®yîË=,Ë#ß<o ØÁâ»!ã¸ç¬Á!óŽý"d9Xíôð:U3ýM%<ùøB˜‡-¿âãÆú ͆Z„ÀT]\brCåøááÑx3%ë>ömnû-A€ÿŠýÈJl©s¨£ƒF1¹N?˜ ÃKx|gæ=gSÌ„±4™_˜@/<>¡{h\›«Â~¡äwÕ¢´h÷Э}À~Â̬ûÅ_ëð»Sþ]¯7ZÁÔØèú^ËI&GÛ7 Óéˆkk¸4óŠá$b#LÚkwYçXÄtIo=ØqgÑñMÆLÏC¢Åg¾G†é %X%8Ù¬=ö#´³+‰«<E280B0>!ä׿elõ[ŸßÃ(Áü…]^•2q1T~ <0C>yzÎ87m°²È½Àt<qÎA#º<>ZUÖ<55>õMÇ®sÇÍ Ý<C2A0>B2†´ØÄD½þëi)#Þ4§ÀZþ̇†<E280A1>G\_€°\¹äÊì¡u&<02>Ø°û¦Þ}ÝCd × ËBBê<>£F4ψ‰>¿SØÒ…Fkêž6ÿú,8uljϦPêvw¢<>ST—üo¯ðv]õ_è6lô^ZßõŒ¡ñx·êµU†ü ôH£$6· `f—[ í»öMD†A8¼WÁ§/ŸÇUÄyŽVÎ`DªXìg0E±uoŒisä%K>`]<5D>Ï«_µfõpØ+©È U ÞÀ›ß\¿Ñ¤¤Ü³[ncá`°!E1áàé&ÓßG[ûy<C3BB>ŽÂƒºÌÀR¸Aƒñ„£z{,rHø:Îÿ§‰)ôϵȅýz<>û¤±„Æx÷Íã@ˆˆo™oÞ…“îú^U^wÞ»«í/1Ë´<10>¥öõ,à40ŽBÇYƒÅu<1E>«ní[ŠnMÐgÏ<67>¡+Ì"O×Çg±t0<74>H8K8`9Á”— |“Z½~¿ fvLšª¶­ŒZzbÎí=¥ƒ?¥‰™ßo´®8äã˜ØA Ø@#ŸÜËѽDèZP_ ý{Á&ü.Å¿ùÒ×Ðà) wò.Ð×Ö3 nÐðÕŸöEûÿ¿#±®2ŒM>'[…ß$à1:_-ïsÖºîtÉTÎ=«mžwlj<6C>Þ2IãšIx^ºß<C2BA> ÿñë”',ˆ :,ïd~ò6ûˆã<CB86>Õã±ÔCI_§•1^0 }&|eÄePÇJÞˆ:QHŽMyôú23—Š´Û<C2B4>úy°ªÑáhbøMµ#Hƒ[=ù8µéöQZD.yqóbrkzjhLç…<àê•ýY¸ <0B>¶¹Z&7"$(: !©:Ól]€=©Á ¢h/þeckÚ7Q<37>!îϵTçu¾¾U³Ü¢Zº_Ôužç,*@<40>R×_N38ÏI+~¨¼þ²¶KŽ*á÷pÂ~vjnÒ©9Åñå2í ó¹çz©Kqñ
¾ðwOÜfßD ™´Ag-Qõ/oJüª,þ7j÷ø.yžÕ§™9ã!sÄÅlE' <úØí<C398>ò]:ò¤ö6þlŸ°<ä0Žð»7:l-0`¥nñæ ¸F;Oíš %r:Ž©ààtúNÃñ¬áQŸDÿü:Zf2”v?ç€(Ž»|¿~AµYÕtû…%í(BV_S eŸn¥ElCjšf„˜£„oîzÅë»áê ¬È/xzŸ†L/W¡]‰š±@Á|­CúÄÒõpOu|Õ)HÕ¿¢{Qݪ6I~ã§DþQ!¡ÏÚœ ©n¸¹)f㉪ b§;
ÙÆÄ.ÊÄð“&”R¼¾¿ƒ|U/}LÐÈ#&òõ,òó,EŠ(Š%èû<C3A8>[AD„Qdc·ù墚Ʋô“±0æàa&û¯£Y¢ ÅxåW•7¨´i¯^|ïàúF„6¯ã½¢¾Ok-e}òËȪš°ûlŒ(ý¬Ñ%⬪#ÊA¦+
¦¿¹‡Qx¿”Îï´ý)ÿÒ6ñ¯Åèp­)öJ”àB‡ endstream
endobj
88 0 obj
<< /Length1 1568 /Length2 967 /Length3 0 /Length 2535 >>
stream
%!PS-AdobeFont-1.0: Dingbats 001.005
%%CreationDate: Tue Oct 19 1999
% Copyright URW Software, Copyright 1997 by URW
% URW Software, Copyright 1997 by URW
% See the file COPYING (GNU General Public License) for license conditions.
% As a special exception, permission is granted to include this font
% program in a Postscript or PDF file that consists of a document that
% contains text to be displayed or printed using this font, regardless
% of the conditions or license applying to the document itself.
12 dict begin
/FontInfo 10 dict dup begin
/version (001.005) readonly def
/Notice (URW Software, Copyright 1997 by URW. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
/Copyright (Copyright URW Software, Copyright 1997 by URW) readonly def
/FullName (Dingbats ) readonly def
/FamilyName (Dingbats) readonly def
/Weight (Regular) readonly def
/ItalicAngle 0.0 def
/isFixedPitch false def
/UnderlinePosition -72 def
/UnderlineThickness 36 def
end readonly def
/FontName /GCRMMP+Dingbats def
/PaintType 0 def
/WMode 0 def
/FontBBox {-1 -143 981 819} readonly def
/FontType 1 def
/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 123 /a97 put
readonly def
currentdict end
currentfile eexec
ÙÖoc;„j˜™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²<E28094>¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä<> %;a~•ê!”ty`rôß|üv0Q>º(‹‘Ŧ^bâW6µ»ì9u† ™ßˆPóåuêJÆ<ÈX;gÜÜòD(Ê£yÿ2
ù b@ͤÖ6L>{{<\C½>«¹ˆÊÉLî•…C6´oj†ÜL~€c¯'úÈÔþYW³ØUüšÜÔÆ Ÿ«ÅXM‡kÅÂA.cEŸ}+:dkGvH8½ärSOpÁ,­<»üjy¨“5ãó2Ž|7I敺le7ödŠ5+îÚxMÎ÷Îå<C38E>ÐñT)‰ƒ‡ø,Ò<>:Þƒâsź'(tUU(ˆj)•ó^&p<>òNÀž¨®<C2A8>
ÞšrÌaêQjnHßQé…Á%±dù.ÐÈ<C390>àˆ"Í8Õš­Ï¸ºåaøÀ}™;‰ò‡Â{&;òÖ4‰ †2Æ-÷ jxg;RŸ:;¶ ‚*é®<C3A9>ß¾ÂÖÌçjFˆ 1²„Y;[èIqk´ýœßc<C39F>ÃCèÖtpSL~r<>ÇÓ~Uó`Lýz}y@„^À«6õý¨df—!Øp<1C>N Üù%<1D>§{È€ä“Éë*fä4c²ê¶»ˆ©´çÃdB#~âñ“\55x!ì³Cò‡5u_úk1¼îŒ(äqÞŠ`;2j©œû+{4KÒ •Û~:•@rCnß`sHÐ[žðدPä:ÁåÚòçI<>#aHâü˜€ðÀÙ^u®®#<ÙÂ.}¡Ê¬<¦ò ÝmlQôbé·B ö²
”Ù*ð=(<28>°bïéC¨Ê»Mk<4D>u^ƒÓ<C692>†KüÉÔÐ Šëún¸`fØË.È߶¯0?À íDøññ5¢þ°Ž\Ñš÷<¹EoµûÍ)—±µ³‡¦ô<C2A6>ŒR[ÚÚ‘},÷|±
,û8>SNöÉ6ßîéú?Yy× 0<ôÖ£®è8„b“Š“{kºŽi<C5BD>úØh˜ûkÄ­ø­36]чFŽK×ë=tû_³eçëÙ?A„R%éÓ<C3A9>EÖ§ì\˸*?ä2]ñ<>G½«™
åt¬endstream
endobj
89 0 obj
<< /Type /XRef /Length 360 /W [ 1 2 1 ] /Info 72 0 R /Root 71 0 R /Size 90 /ID [<d2bbfbf4233894356181fb24a136b7b8><4ebbbcf81067ebcf0d2f90a6d284c12c>] >>
stream
 
    !"#$%&'()*+,-./0123456789:;<=>?@ABCDE()8*D+P,\-j.y/eZ†3<01>t
endstream
endobj
startxref
36980
%%EOF

View File

@ -836,15 +836,36 @@ async function startBrowser(browserName, startUrl = "") {
ignoreDefaultArgs: ["--disable-extensions"], ignoreDefaultArgs: ["--disable-extensions"],
}; };
if (!tempDir) {
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "pdfjs-"));
}
const printFile = path.join(tempDir, "print.pdf");
if (browserName === "chrome") { if (browserName === "chrome") {
// avoid crash // avoid crash
options.args = ["--no-sandbox", "--disable-setuid-sandbox"]; options.args = ["--no-sandbox", "--disable-setuid-sandbox"];
// silent printing in a pdf
options.args.push("--kiosk-printing");
} }
if (browserName === "firefox") { if (browserName === "firefox") {
options.extraPrefsFirefox = { options.extraPrefsFirefox = {
// avoid to have a prompt when leaving a page with a form // avoid to have a prompt when leaving a page with a form
"dom.disable_beforeunload": true, "dom.disable_beforeunload": true,
// Disable dialog when saving a pdf
"pdfjs.disabled": true,
"browser.helperApps.neverAsk.saveToDisk": "application/pdf",
// Avoid popup when saving is done
"browser.download.panel.shown": true,
// Save file in output
"browser.download.folderList": 2,
"browser.download.dir": tempDir,
// Print silently in a pdf
"print.always_print_silent": true,
"print.show_print_progress": false,
print_printer: "PDF",
"print.printer_PDF.print_to_file": true,
"print.printer_PDF.print_to_filename": printFile,
}; };
} }
@ -928,8 +949,15 @@ async function closeSession(browser) {
const allClosed = sessions.every(function (s) { const allClosed = sessions.every(function (s) {
return s.closed; return s.closed;
}); });
if (allClosed && onAllSessionsClosed) { if (allClosed) {
onAllSessionsClosed(); if (tempDir) {
const rimraf = require("rimraf");
rimraf.sync(tempDir);
}
if (onAllSessionsClosed) {
onAllSessionsClosed();
}
} }
} }
} }
@ -984,5 +1012,6 @@ var onAllSessionsClosed;
var host = "127.0.0.1"; var host = "127.0.0.1";
var options = parseOptions(); var options = parseOptions();
var stats; var stats;
var tempDir = null;
main(); main();

View File

@ -894,12 +894,6 @@
"link": false, "link": false,
"type": "eq" "type": "eq"
}, },
{ "id": "docactions",
"file": "pdfs/docactions.pdf",
"md5": "28ea940349cf7cb793cfe167d04b097c",
"rounds": 1,
"type": "eq"
},
{ "id": "issue9084", { "id": "issue9084",
"file": "pdfs/issue9084.pdf", "file": "pdfs/issue9084.pdf",
"md5": "5570ec01cc869d299fec1b2f68926a08", "md5": "5570ec01cc869d299fec1b2f68926a08",
@ -1450,6 +1444,12 @@
"type": "eq", "type": "eq",
"about": "Type3 fonts with image resources; both pages need to be tested, otherwise the bug won't manifest." "about": "Type3 fonts with image resources; both pages need to be tested, otherwise the bug won't manifest."
}, },
{ "id": "doc_actions",
"file": "pdfs/doc_actions.pdf",
"md5": "ceae4eb405a0b40394f4d63d7525a870",
"rounds": 1,
"type": "eq"
},
{ "id": "issue12504", { "id": "issue12504",
"file": "pdfs/issue12504.pdf", "file": "pdfs/issue12504.pdf",
"md5": "04fcc87f3e7e9e925e3ef83cf0bf49f4", "md5": "04fcc87f3e7e9e925e3ef83cf0bf49f4",

View File

@ -1006,27 +1006,33 @@ describe("api", function () {
}); });
it("gets JSActions", function (done) { it("gets JSActions", function (done) {
// PDF document with "JavaScript" action in the OpenAction dictionary. // PDF document with "JavaScript" action in the OpenAction dictionary.
const loadingTask = getDocument(buildGetDocumentParams("docactions.pdf")); const loadingTask = getDocument(
buildGetDocumentParams("doc_actions.pdf")
);
const promise = loadingTask.promise.then(async pdfDoc => { const promise = loadingTask.promise.then(async pdfDoc => {
const docActions = await pdfDoc.getJSActions(); const docActions = await pdfDoc.getJSActions();
const page5 = await pdfDoc.getPage(5); const page1 = await pdfDoc.getPage(1);
const page12 = await pdfDoc.getPage(12); const page3 = await pdfDoc.getPage(3);
const page5Actions = await page5.getJSActions(); const page1Actions = await page1.getJSActions();
const page12Actions = await page12.getJSActions(); const page3Actions = await page3.getJSActions();
return [docActions, page5Actions, page12Actions]; return [docActions, page1Actions, page3Actions];
}); });
promise promise
.then(async ([docActions, page5Actions, page12Actions]) => { .then(async ([docActions, page1Actions, page3Actions]) => {
expect(docActions).toEqual({ expect(docActions).toEqual({
Open: ["console.println('Open Action');"], DidPrint: [`this.getField("Text2").value = "DidPrint";`],
DidSave: [`this.getField("Text2").value = "DidSave";`],
WillClose: [`this.getField("Text1").value = "WillClose";`],
WillPrint: [`this.getField("Text1").value = "WillPrint";`],
WillSave: [`this.getField("Text1").value = "WillSave";`],
}); });
expect(page5Actions).toEqual({ expect(page1Actions).toEqual({
PageOpen: ["console.println('Open page 5');"], PageOpen: [`this.getField("Text1").value = "PageOpen 1";`],
PageClose: ["console.println('Close page 5');"], PageClose: [`this.getField("Text2").value = "PageClose 1";`],
}); });
expect(page12Actions).toEqual({ expect(page3Actions).toEqual({
PageOpen: ["console.println('Open page 12');"], PageOpen: [`this.getField("Text5").value = "PageOpen 3";`],
PageClose: ["console.println('Close page 12');"], PageClose: [`this.getField("Text6").value = "PageClose 3";`],
}); });
loadingTask.destroy().then(done); loadingTask.destroy().then(done);
}) })