From 2b88c11b9ed21ca44c38e50e9365a2afe52e362d Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 27 Aug 2025 12:11:57 +0100 Subject: [PATCH] Add test for damaged page label numbers in `QPDFPageLabelDocumentHelper` --- qpdf/qtest/page-labels.test | 12 +++++++++++- qpdf/qtest/qpdf/page-labels-num-tree-damaged.out | 16 ++++++++++++++++ qpdf/qtest/qpdf/page-labels-num-tree-damaged.pdf | 1417 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1444 insertions(+), 1 deletion(-) create mode 100644 qpdf/qtest/qpdf/page-labels-num-tree-damaged.out create mode 100644 qpdf/qtest/qpdf/page-labels-num-tree-damaged.pdf diff --git a/qpdf/qtest/page-labels.test b/qpdf/qtest/page-labels.test index b90acd6..6e0e1e9 100644 --- a/qpdf/qtest/page-labels.test +++ b/qpdf/qtest/page-labels.test @@ -14,7 +14,7 @@ cleanup(); my $td = new TestDriver('page-labels'); -my $n_tests = 3; +my $n_tests = 4; $td->runtest("complex page labels", {$td->COMMAND => "test_driver 47 page-labels-num-tree.pdf"}, @@ -29,6 +29,16 @@ $td->runtest("no page labels", {$td->FILE => "no-page-labels.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); +# page-labels-num-tree-damaged.pdf has the following errors: +# - entry for page 29 preceedes entry for page 20 +# - entry for page 3 follows entry for page 6 +# - entry for page 12 is an integer rather than a dictionary +$td->runtest("damaged page labels", + {$td->COMMAND => "test_driver 47 page-labels-num-tree-damaged.pdf"}, + {$td->FILE => "page-labels-num-tree-damaged.out", $td->EXIT_STATUS => 0}, +# $td->NORMALIZE_NEWLINES, + $td->EXPECT_FAILURE); + # --set-page-labels my @errors = ( ["quack", ".*page label spec must be.*"], diff --git a/qpdf/qtest/qpdf/page-labels-num-tree-damaged.out b/qpdf/qtest/qpdf/page-labels-num-tree-damaged.out new file mode 100644 index 0000000..9dfbc6e --- /dev/null +++ b/qpdf/qtest/qpdf/page-labels-num-tree-damaged.out @@ -0,0 +1,16 @@ +WARNING: page-labels-num-tree-damaged.pdf (Name/Number tree node (object 2)): attempting to repair after error: page-labels-num-tree-damaged.pdf (Name/Number tree node (object 2)): keys are not sorted in validate +WARNING: page-labels-num-tree-damaged.pdf (Name/Number tree node (object 37)): item 1 is invalid +1 << /S /r /St 1 >> +3 << /P (blank) /St 1 >> +4 << /P (X-) /S /A /St 17 >> +6 << /P () /St 1 >> +7 << /S /R /St 3 >> +10 << /S /D /St 1 >> +13 << /S /a /St 3 >> +16 << /P (q.) /S /D /St 6 >> +20 << /P (www) /St 1 >> +21 << /S /D /St 12 >> +23 << /S /D /St 16059 >> +24 << /S /R /St 50 >> +30 << /S /r /St 54 >> +test 47 done diff --git a/qpdf/qtest/qpdf/page-labels-num-tree-damaged.pdf b/qpdf/qtest/qpdf/page-labels-num-tree-damaged.pdf new file mode 100644 index 0000000..9c32003 --- /dev/null +++ b/qpdf/qtest/qpdf/page-labels-num-tree-damaged.pdf @@ -0,0 +1,1417 @@ +%PDF-1.3 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /PageLabels 2 0 R + /Pages 3 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Kids [ + 4 0 R + 5 0 R + ] +>> +endobj + +3 0 obj +<< + /Count 30 + /Kids [ + 6 0 R + 7 0 R + 8 0 R + 9 0 R + 10 0 R + 11 0 R + 12 0 R + 13 0 R + 14 0 R + 15 0 R + 16 0 R + 17 0 R + 18 0 R + 19 0 R + 20 0 R + 21 0 R + 22 0 R + 23 0 R + 24 0 R + 25 0 R + 26 0 R + 27 0 R + 28 0 R + 29 0 R + 30 0 R + 31 0 R + 32 0 R + 33 0 R + 34 0 R + 35 0 R + ] + /Type /Pages +>> +endobj + +4 0 obj +<< + /Kids [ + 36 0 R + 37 0 R + ] + /Limits [ + 0 + 19 + ] +>> +endobj + +5 0 obj +<< + /Limits [ + 20 + 29 + ] + /Nums [ + 29 << /S /r /St 54 >> + 20 << /S /D /St 12 >> + 22 << /S /D /St 16059 >> + 23 << /S /R /St 50 >> + ] +>> +endobj + +%% Page 1 +6 0 obj +<< + /Contents 38 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 2 +7 0 obj +<< + /Contents 42 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 3 +8 0 obj +<< + /Contents 44 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 4 +9 0 obj +<< + /Contents 46 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 5 +10 0 obj +<< + /Contents 48 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 6 +11 0 obj +<< + /Contents 50 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 7 +12 0 obj +<< + /Contents 52 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 8 +13 0 obj +<< + /Contents 54 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 9 +14 0 obj +<< + /Contents 56 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 10 +15 0 obj +<< + /Contents 58 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 11 +16 0 obj +<< + /Contents 60 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 12 +17 0 obj +<< + /Contents 62 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 13 +18 0 obj +<< + /Contents 64 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 14 +19 0 obj +<< + /Contents 66 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 15 +20 0 obj +<< + /Contents 68 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 16 +21 0 obj +<< + /Contents 70 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 17 +22 0 obj +<< + /Contents 72 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 18 +23 0 obj +<< + /Contents 74 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 19 +24 0 obj +<< + /Contents 76 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 20 +25 0 obj +<< + /Contents 78 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 21 +26 0 obj +<< + /Contents 80 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 22 +27 0 obj +<< + /Contents 82 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 23 +28 0 obj +<< + /Contents 84 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 24 +29 0 obj +<< + /Contents 86 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 25 +30 0 obj +<< + /Contents 88 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 26 +31 0 obj +<< + /Contents 90 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 27 +32 0 obj +<< + /Contents 92 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 28 +33 0 obj +<< + /Contents 94 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 29 +34 0 obj +<< + /Contents 96 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +%% Page 30 +35 0 obj +<< + /Contents 98 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 3 0 R + /Resources << + /Font << + /F1 40 0 R + >> + /ProcSet 41 0 R + >> + /Type /Page +>> +endobj + +36 0 obj +<< + /Limits [ + 0 + 9 + ] + /Nums [ + 0 << /S /r >> + 2 << /P (blank) >> + 5 << /P () >> + 6 << /S /R /St 3 >> + 3 << /P (X-) /S /A /St 17 >> + 9 << /S /D >> + ] +>> +endobj + +37 0 obj +<< + /Limits [ + 11 + 19 + ] + /Nums [ + 11 42 + 12 << /S /a /St 3 >> + 15 << /P (q.) /S /D /St 6 >> + 19 << /P (www) >> + ] +>> +endobj + +%% Contents for page 1 +38 0 obj +<< + /Length 39 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 0) Tj +ET +endstream +endobj + +39 0 obj +46 +endobj + +40 0 obj +<< + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font +>> +endobj + +41 0 obj +[ + /PDF + /Text +] +endobj + +%% Contents for page 2 +42 0 obj +<< + /Length 43 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 1) Tj +ET +endstream +endobj + +43 0 obj +46 +endobj + +%% Contents for page 3 +44 0 obj +<< + /Length 45 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 2) Tj +ET +endstream +endobj + +45 0 obj +46 +endobj + +%% Contents for page 4 +46 0 obj +<< + /Length 47 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 3) Tj +ET +endstream +endobj + +47 0 obj +46 +endobj + +%% Contents for page 5 +48 0 obj +<< + /Length 49 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 4) Tj +ET +endstream +endobj + +49 0 obj +46 +endobj + +%% Contents for page 6 +50 0 obj +<< + /Length 51 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 5) Tj +ET +endstream +endobj + +51 0 obj +46 +endobj + +%% Contents for page 7 +52 0 obj +<< + /Length 53 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 6) Tj +ET +endstream +endobj + +53 0 obj +46 +endobj + +%% Contents for page 8 +54 0 obj +<< + /Length 55 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 7) Tj +ET +endstream +endobj + +55 0 obj +46 +endobj + +%% Contents for page 9 +56 0 obj +<< + /Length 57 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 8) Tj +ET +endstream +endobj + +57 0 obj +46 +endobj + +%% Contents for page 10 +58 0 obj +<< + /Length 59 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 9) Tj +ET +endstream +endobj + +59 0 obj +46 +endobj + +%% Contents for page 11 +60 0 obj +<< + /Length 61 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 10) Tj +ET +endstream +endobj + +61 0 obj +47 +endobj + +%% Contents for page 12 +62 0 obj +<< + /Length 63 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 11) Tj +ET +endstream +endobj + +63 0 obj +47 +endobj + +%% Contents for page 13 +64 0 obj +<< + /Length 65 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 12) Tj +ET +endstream +endobj + +65 0 obj +47 +endobj + +%% Contents for page 14 +66 0 obj +<< + /Length 67 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 13) Tj +ET +endstream +endobj + +67 0 obj +47 +endobj + +%% Contents for page 15 +68 0 obj +<< + /Length 69 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 14) Tj +ET +endstream +endobj + +69 0 obj +47 +endobj + +%% Contents for page 16 +70 0 obj +<< + /Length 71 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 15) Tj +ET +endstream +endobj + +71 0 obj +47 +endobj + +%% Contents for page 17 +72 0 obj +<< + /Length 73 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 16) Tj +ET +endstream +endobj + +73 0 obj +47 +endobj + +%% Contents for page 18 +74 0 obj +<< + /Length 75 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 17) Tj +ET +endstream +endobj + +75 0 obj +47 +endobj + +%% Contents for page 19 +76 0 obj +<< + /Length 77 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 18) Tj +ET +endstream +endobj + +77 0 obj +47 +endobj + +%% Contents for page 20 +78 0 obj +<< + /Length 79 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 19) Tj +ET +endstream +endobj + +79 0 obj +47 +endobj + +%% Contents for page 21 +80 0 obj +<< + /Length 81 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 20) Tj +ET +endstream +endobj + +81 0 obj +47 +endobj + +%% Contents for page 22 +82 0 obj +<< + /Length 83 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 21) Tj +ET +endstream +endobj + +83 0 obj +47 +endobj + +%% Contents for page 23 +84 0 obj +<< + /Length 85 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 22) Tj +ET +endstream +endobj + +85 0 obj +47 +endobj + +%% Contents for page 24 +86 0 obj +<< + /Length 87 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 23) Tj +ET +endstream +endobj + +87 0 obj +47 +endobj + +%% Contents for page 25 +88 0 obj +<< + /Length 89 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 24) Tj +ET +endstream +endobj + +89 0 obj +47 +endobj + +%% Contents for page 26 +90 0 obj +<< + /Length 91 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 25) Tj +ET +endstream +endobj + +91 0 obj +47 +endobj + +%% Contents for page 27 +92 0 obj +<< + /Length 93 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 26) Tj +ET +endstream +endobj + +93 0 obj +47 +endobj + +%% Contents for page 28 +94 0 obj +<< + /Length 95 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 27) Tj +ET +endstream +endobj + +95 0 obj +47 +endobj + +%% Contents for page 29 +96 0 obj +<< + /Length 97 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 28) Tj +ET +endstream +endobj + +97 0 obj +47 +endobj + +%% Contents for page 30 +98 0 obj +<< + /Length 99 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 29) Tj +ET +endstream +endobj + +99 0 obj +47 +endobj + +xref +0 100 +0000000000 65535 f +0000000025 00000 n +0000000099 00000 n +0000000155 00000 n +0000000544 00000 n +0000000631 00000 n +0000000814 00000 n +0000001019 00000 n +0000001224 00000 n +0000001429 00000 n +0000001634 00000 n +0000001840 00000 n +0000002046 00000 n +0000002252 00000 n +0000002458 00000 n +0000002665 00000 n +0000002872 00000 n +0000003079 00000 n +0000003286 00000 n +0000003493 00000 n +0000003700 00000 n +0000003907 00000 n +0000004114 00000 n +0000004321 00000 n +0000004528 00000 n +0000004735 00000 n +0000004942 00000 n +0000005149 00000 n +0000005356 00000 n +0000005563 00000 n +0000005770 00000 n +0000005977 00000 n +0000006184 00000 n +0000006391 00000 n +0000006598 00000 n +0000006805 00000 n +0000007001 00000 n +0000007200 00000 n +0000007389 00000 n +0000007492 00000 n +0000007512 00000 n +0000007631 00000 n +0000007690 00000 n +0000007793 00000 n +0000007836 00000 n +0000007939 00000 n +0000007982 00000 n +0000008085 00000 n +0000008128 00000 n +0000008231 00000 n +0000008274 00000 n +0000008377 00000 n +0000008420 00000 n +0000008523 00000 n +0000008566 00000 n +0000008669 00000 n +0000008712 00000 n +0000008815 00000 n +0000008859 00000 n +0000008962 00000 n +0000009006 00000 n +0000009110 00000 n +0000009154 00000 n +0000009258 00000 n +0000009302 00000 n +0000009406 00000 n +0000009450 00000 n +0000009554 00000 n +0000009598 00000 n +0000009702 00000 n +0000009746 00000 n +0000009850 00000 n +0000009894 00000 n +0000009998 00000 n +0000010042 00000 n +0000010146 00000 n +0000010190 00000 n +0000010294 00000 n +0000010338 00000 n +0000010442 00000 n +0000010486 00000 n +0000010590 00000 n +0000010634 00000 n +0000010738 00000 n +0000010782 00000 n +0000010886 00000 n +0000010930 00000 n +0000011034 00000 n +0000011078 00000 n +0000011182 00000 n +0000011226 00000 n +0000011330 00000 n +0000011374 00000 n +0000011478 00000 n +0000011522 00000 n +0000011626 00000 n +0000011670 00000 n +0000011774 00000 n +0000011818 00000 n +0000011922 00000 n +trailer << + /Root 1 0 R + /Size 100 + /ID [<90f919de7874f3bc5cb7afbd1e9537bb><0dfe18a94cde0f4bfdc86c03af19010e>] +>> +startxref +11942 +%%EOF -- libgit2 0.21.4