aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-02-21 22:06:58 +0100
committerJay Berkenbilt <ejb@ql.org>2021-02-21 23:13:09 +0100
commita9ae8cadc66daf631f6cbfe7fc3c7c602ac665d8 (patch)
tree0b38abc0fb2fbdcb64d2a3c959a9b9b6ec92a11f
parenta76decd2d59f8d23791013d822e65b4363d450cd (diff)
downloadqpdf-a9ae8cadc66daf631f6cbfe7fc3c7c602ac665d8.tar.zst
Add transformAnnotations and fix flattenRotations to use it
-rw-r--r--ChangeLog6
-rw-r--r--include/qpdf/QPDFAcroFormDocumentHelper.hh30
-rw-r--r--include/qpdf/QPDFAnnotationObjectHelper.hh7
-rw-r--r--include/qpdf/QPDFPageObjectHelper.hh10
-rw-r--r--libqpdf/QPDFAcroFormDocumentHelper.cc314
-rw-r--r--libqpdf/QPDFPageObjectHelper.cc29
-rw-r--r--manual/qpdf-manual.xml13
-rw-r--r--qpdf/qpdf.cc14
-rw-r--r--qpdf/qpdf.testcov3
-rw-r--r--qpdf/qtest/qpdf.test45
-rw-r--r--qpdf/qtest/qpdf/annotations-rotated-180.pdf1052
-rw-r--r--qpdf/qtest/qpdf/annotations-rotated-270.pdf1052
-rw-r--r--qpdf/qtest/qpdf/annotations-rotated-90.pdf1052
-rw-r--r--qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf1132
-rw-r--r--qpdf/qtest/qpdf/form-fields-and-annotations.pdf942
-rw-r--r--qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf1894
-rw-r--r--qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf2705
17 files changed, 10295 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 46ae6706..5c3e6229 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2021-02-21 Jay Berkenbilt <ejb@ql.org>
+ * Bug fix: --flatten-rotation now applies the required
+ transformation to annotations on the page.
+
+ * Add QPDFAcroFormDocumentHelper::transformAnnotations to apply a
+ transformation to a group of annotations.
+
* Add QPDFObjGen::unparse()
* Add QPDFObjectHandle::copyStream() for making a copy of a stream
diff --git a/include/qpdf/QPDFAcroFormDocumentHelper.hh b/include/qpdf/QPDFAcroFormDocumentHelper.hh
index d417fc08..eb9da5ad 100644
--- a/include/qpdf/QPDFAcroFormDocumentHelper.hh
+++ b/include/qpdf/QPDFAcroFormDocumentHelper.hh
@@ -113,6 +113,10 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper
QPDF_DLL
void addFormField(QPDFFormFieldObjectHelper);
+ // Remove fields from the fields array
+ QPDF_DLL
+ void removeFormFields(std::set<QPDFObjGen> const&);
+
// Return a vector of all terminal fields in a document. Terminal
// fields are fields that have no children that are also fields.
// Terminal fields may still have children that are annotations.
@@ -174,6 +178,32 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper
QPDF_DLL
void generateAppearancesIfNeeded();
+ // Note: this method works on all annotations, not just ones with
+ // associated fields. For each annotation in old_annots, apply the
+ // given transformation matrix to create a new annotation. New
+ // annotations are appended to new_annots. If the annotation is
+ // associated with a form field, a new form field is created that
+ // points to the new annotation and is appended to new_fields, and
+ // the old field is added to old_fields.
+ //
+ // old_annots may belong to a different QPDF object. In that case,
+ // you should pass in from_qpdf, and copyForeignObject will be
+ // called automatically. If this is the case, for efficiency, you
+ // may pass in a QPDFAcroFormDocumentHelper for the other file to
+ // avoid the expensive process of creating one for each call to
+ // transformAnnotations. New fields and annotations are not added
+ // to the document or pages. You have to do that yourself after
+ // calling transformAnnotations.
+ QPDF_DLL
+ void transformAnnotations(
+ QPDFObjectHandle old_annots,
+ std::vector<QPDFObjectHandle>& new_annots,
+ std::vector<QPDFObjectHandle>& new_fields,
+ std::set<QPDFObjGen>& old_fields,
+ QPDFMatrix const& cm,
+ QPDF* from_qpdf = nullptr,
+ QPDFAcroFormDocumentHelper* from_afdh = nullptr);
+
private:
void analyze();
void traverseField(QPDFObjectHandle field,
diff --git a/include/qpdf/QPDFAnnotationObjectHelper.hh b/include/qpdf/QPDFAnnotationObjectHelper.hh
index 3dd62222..39a530a3 100644
--- a/include/qpdf/QPDFAnnotationObjectHelper.hh
+++ b/include/qpdf/QPDFAnnotationObjectHelper.hh
@@ -40,6 +40,13 @@ class QPDFAnnotationObjectHelper: public QPDFObjectHelper
// This class provides helper methods for annotations. More
// functionality will likely be added in the future.
+ // Some functionality for annotations is also implemented in
+ // QPDFAcroFormDocumentHelper and QPDFFormFieldObjectHelper. In
+ // some cases, functions defined there work for other annotations
+ // besides widget annotations, but they are implemented with form
+ // fields so that they can properly handle form fields when
+ // needed.
+
// Return the subtype of the annotation as a string (e.g.
// "/Widget"). Returns the empty string if the subtype (which is
// required by the spec) is missing.
diff --git a/include/qpdf/QPDFPageObjectHelper.hh b/include/qpdf/QPDFPageObjectHelper.hh
index 76f42dbd..c48a7145 100644
--- a/include/qpdf/QPDFPageObjectHelper.hh
+++ b/include/qpdf/QPDFPageObjectHelper.hh
@@ -31,6 +31,8 @@
#include <qpdf/QPDFObjectHandle.hh>
#include <functional>
+class QPDFAcroFormDocumentHelper;
+
class QPDFPageObjectHelper: public QPDFObjectHelper
{
// This is a helper class for page objects, but as of qpdf 10.1,
@@ -323,9 +325,15 @@ class QPDFPageObjectHelper: public QPDFObjectHelper
// various page bounding boxes (/MediaBox, etc.) so that the page
// will have the same semantics. This can be useful to work around
// problems with PDF applications that can't properly handle
- // rotated pages.
+ // rotated pages. If a QPDFAcroFormDocumentHelper is provided, it
+ // will be used for resolving any form fields that have to be
+ // rotated. If not, one will be created inside the function, which
+ // is less efficient.
QPDF_DLL
void flattenRotation();
+ // ABI: merge versions and make afdh default to nullptr
+ QPDF_DLL
+ void flattenRotation(QPDFAcroFormDocumentHelper* afdh);
private:
static bool
diff --git a/libqpdf/QPDFAcroFormDocumentHelper.cc b/libqpdf/QPDFAcroFormDocumentHelper.cc
index cf3cb161..2991e578 100644
--- a/libqpdf/QPDFAcroFormDocumentHelper.cc
+++ b/libqpdf/QPDFAcroFormDocumentHelper.cc
@@ -54,6 +54,50 @@ QPDFAcroFormDocumentHelper::addFormField(QPDFFormFieldObjectHelper ff)
ff.getObjectHandle(), QPDFObjectHandle::newNull(), 0, visited);
}
+void
+QPDFAcroFormDocumentHelper::removeFormFields(
+ std::set<QPDFObjGen> const& to_remove)
+{
+ auto acroform = this->qpdf.getRoot().getKey("/AcroForm");
+ if (! acroform.isDictionary())
+ {
+ return;
+ }
+ auto fields = acroform.getKey("/Fields");
+ if (! fields.isArray())
+ {
+ return;
+ }
+
+ for (auto const& og: to_remove)
+ {
+ auto annotations = this->m->field_to_annotations.find(og);
+ if (annotations != this->m->field_to_annotations.end())
+ {
+ for (auto aoh: annotations->second)
+ {
+ this->m->annotation_to_field.erase(
+ aoh.getObjectHandle().getObjGen());
+ }
+ this->m->field_to_annotations.erase(og);
+ }
+ }
+
+ int i = 0;
+ while (i < fields.getArrayNItems())
+ {
+ auto field = fields.getArrayItem(i);
+ if (to_remove.count(field.getObjGen()))
+ {
+ fields.eraseItem(i);
+ }
+ else
+ {
+ ++i;
+ }
+ }
+}
+
std::vector<QPDFFormFieldObjectHelper>
QPDFAcroFormDocumentHelper::getFormFields()
{
@@ -350,3 +394,273 @@ QPDFAcroFormDocumentHelper::generateAppearancesIfNeeded()
}
setNeedAppearances(false);
}
+
+void
+QPDFAcroFormDocumentHelper::transformAnnotations(
+ QPDFObjectHandle old_annots,
+ std::vector<QPDFObjectHandle>& new_annots,
+ std::vector<QPDFObjectHandle>& new_fields,
+ std::set<QPDFObjGen>& old_fields,
+ QPDFMatrix const& cm,
+ QPDF* from_qpdf,
+ QPDFAcroFormDocumentHelper* from_afdh)
+{
+ PointerHolder<QPDFAcroFormDocumentHelper> afdhph;
+ if (! from_qpdf)
+ {
+ // Assume these are from the same QPDF.
+ from_qpdf = &this->qpdf;
+ from_afdh = this;
+ }
+ else if ((from_qpdf != &this->qpdf) && (! from_afdh))
+ {
+ afdhph = new QPDFAcroFormDocumentHelper(*from_qpdf);
+ from_afdh = afdhph.getPointer();
+ }
+ bool foreign = (from_qpdf != &this->qpdf);
+
+ std::set<QPDFObjGen> added_new_fields;
+
+ // This helper prevents us from copying the same object
+ // multiple times.
+ std::map<QPDFObjGen, QPDFObjectHandle> copied_objects;
+ auto maybe_copy_object = [&](QPDFObjectHandle& to_copy) {
+ auto og = to_copy.getObjGen();
+ if (copied_objects.count(og))
+ {
+ to_copy = copied_objects[og];
+ return false;
+ }
+ else
+ {
+ to_copy = this->qpdf.makeIndirectObject(to_copy.shallowCopy());
+ copied_objects[og] = to_copy;
+ return true;
+ }
+ };
+
+ for (auto annot: QPDFArrayItems(old_annots))
+ {
+ if (annot.isStream())
+ {
+ annot.warnIfPossible("ignoring annotation that's a stream");
+ continue;
+ }
+
+ // Make copies of annotations and fields down to the
+ // appearance streams, preserving all internal referential
+ // integrity. When the incoming annotations are from a
+ // different file, we first copy them locally. Then, whether
+ // local or foreign, we copy them again so that if we bring
+ // the same annotation in multiple times (e.g. overlaying a
+ // foreign page onto multiple local pages or a local page onto
+ // multiple other local pages), we don't create annotations
+ // that are referenced in more than one place. If we did that,
+ // the effect of applying transformations would be cumulative,
+ // which is definitely not what we want. Besides, annotations
+ // and fields are not intended to be referenced in multiple
+ // places.
+
+ // Determine if this annotation is attached to a form field.
+ // If so, the annotation may be the same object as the form
+ // field, or the form field may have the annotation as a kid.
+ // In either case, we have to walk up the field structure to
+ // find the top-level field. Within one iteration through a
+ // set of annotations, we don't want to copy the same item
+ // more than once. For example, suppose we have field A with
+ // kids B, C, and D, each of which has annotations BA, CA, and
+ // DA. When we get to BA, we will find that BA is a kid of B
+ // which is under A. When we do a copyForeignObject of A, it
+ // will also copy everything else because of the indirect
+ // references. When we clone BA, we will want to clone A and
+ // then update A's clone's kid to point B's clone and B's
+ // clone's parent to point to A's clone. The same thing holds
+ // for annotatons. Next, when we get to CA, we will again
+ // discover that A is the top, but we don't want to re-copy A.
+ // We want CA's clone to be linked to the same clone as BA's.
+ // Failure to do this will break up things like radio button
+ // groups, which all have to kids of the same parent.
+
+ auto ffield = from_afdh->getFieldForAnnotation(annot);
+ auto ffield_oh = ffield.getObjectHandle();
+ QPDFObjectHandle top_field;
+ bool have_field = false;
+ bool have_parent = false;
+ if (ffield_oh.isStream())
+ {
+ ffield_oh.warnIfPossible("ignoring form field that's a stream");
+ }
+ else if ((! ffield_oh.isNull()) && (! ffield_oh.isIndirect()))
+ {
+ ffield_oh.warnIfPossible("ignoring form field not indirect");
+ }
+ else if (! ffield_oh.isNull())
+ {
+ // A field and its associated annotation can be the same
+ // object. This matters because we don't want to clone the
+ // annotation and field separately in this case.
+ have_field = true;
+ // Find the top-level field. It may be the field itself.
+ top_field = ffield_oh;
+ std::set<QPDFObjGen> seen;
+ while (! top_field.getKey("/Parent").isNull())
+ {
+ top_field = top_field.getKey("/Parent");
+ have_parent = true;
+ auto og = top_field.getObjGen();
+ if (seen.count(og))
+ {
+ break;
+ }
+ seen.insert(og);
+ }
+ if (foreign)
+ {
+ // copyForeignObject returns the same value if called
+ // multiple times with the same field. Create/retrieve
+ // the local copy of the original field. This pulls
+ // over everything the field references including
+ // annotations and appearance streams, but it's
+ // harmless to call copyForeignObject on them too.
+ // They will already be copied, so we'll get the right
+ // object back.
+
+ top_field = this->qpdf.copyForeignObject(top_field);
+ ffield_oh = this->qpdf.copyForeignObject(ffield_oh);
+ }
+ old_fields.insert(top_field.getObjGen());
+
+ // Traverse the field, copying kids, and preserving
+ // integrity.
+ std::list<QPDFObjectHandle> queue;
+ if (maybe_copy_object(top_field))
+ {
+ queue.push_back(top_field);
+ }
+ seen.clear();
+ while (! queue.empty())
+ {
+ QPDFObjectHandle obj = queue.front();
+ queue.pop_front();
+ auto orig_og = obj.getObjGen();
+ if (seen.count(orig_og))
+ {
+ // loop
+ break;
+ }
+ seen.insert(orig_og);
+ auto parent = obj.getKey("/Parent");
+ if (parent.isIndirect())
+ {
+ auto parent_og = parent.getObjGen();
+ if (copied_objects.count(parent_og))
+ {
+ obj.replaceKey("/Parent", copied_objects[parent_og]);
+ }
+ else
+ {
+ parent.warnIfPossible(
+ "while traversing field " +
+ obj.getObjGen().unparse() +
+ ", found parent (" + parent_og.unparse() +
+ ") that had not been seen, indicating likely"
+ " invalid field structure");
+ }
+ }
+ auto kids = obj.getKey("/Kids");
+ if (kids.isArray())
+ {
+ for (int i = 0; i < kids.getArrayNItems(); ++i)
+ {
+ auto kid = kids.getArrayItem(i);
+ if (maybe_copy_object(kid))
+ {
+ kids.setArrayItem(i, kid);
+ queue.push_back(kid);
+ }
+ }
+ }
+ }
+
+ // Now switch to copies. We already switched for top_field
+ maybe_copy_object(ffield_oh);
+ ffield = QPDFFormFieldObjectHelper(ffield_oh);
+ }
+
+ QTC::TC("qpdf", "QPDFAcroFormDocumentHelper copy annotation",
+ (have_field ? 1 : 0) | (foreign ? 2 : 0));
+ if (have_field)
+ {
+ QTC::TC("qpdf", "QPDFAcroFormDocumentHelper field with parent",
+ (have_parent ? 1 : 0) | (foreign ? 2 : 0));
+ }
+ if (foreign)
+ {
+ annot = this->qpdf.copyForeignObject(annot);
+ }
+ maybe_copy_object(annot);
+
+ // Now we have copies, so we can safely mutate.
+ if (have_field && ! added_new_fields.count(top_field.getObjGen()))
+ {
+ new_fields.push_back(top_field);
+ added_new_fields.insert(top_field.getObjGen());
+ }
+ new_annots.push_back(annot);
+
+ // Identify and copy any appearance streams
+
+ auto ah = QPDFAnnotationObjectHelper(annot);
+ auto apdict = ah.getAppearanceDictionary();
+ std::vector<QPDFObjectHandle> streams;
+ auto replace_stream = [](auto& dict, auto& key, auto& old) {
+ auto new_stream = old.copyStream();
+ dict.replaceKey(key, new_stream);
+ return new_stream;
+ };
+ if (apdict.isDictionary())
+ {
+ for (auto& ap: QPDFDictItems(apdict))
+ {
+ if (ap.second.isStream())
+ {
+ streams.push_back(
+ replace_stream(apdict, ap.first, ap.second));
+ }
+ else if (ap.second.isDictionary())
+ {
+ for (auto& ap2: QPDFDictItems(ap.second))
+ {
+ if (ap2.second.isStream())
+ {
+ streams.push_back(
+ replace_stream(
+ ap.second, ap2.first, ap2.second));
+ }
+ }
+ }
+ }
+ }
+
+ // Now we can safely mutate the annotation and its appearance
+ // streams.
+ for (auto& stream: streams)
+ {
+ auto omatrix = stream.getDict().getKey("/Matrix");
+ QPDFMatrix apcm;
+ if (omatrix.isArray())
+ {
+ QTC::TC("qpdf", "QPDFAcroFormDocumentHelper modify ap matrix");
+ auto m1 = omatrix.getArrayAsMatrix();
+ apcm = QPDFMatrix(m1);
+ }
+ apcm.concat(cm);
+ auto new_matrix = QPDFObjectHandle::newFromMatrix(apcm);
+ stream.getDict().replaceKey("/Matrix", new_matrix);
+ }
+ auto rect = cm.transformRectangle(
+ annot.getKey("/Rect").getArrayAsRectangle());
+ annot.replaceKey(
+ "/Rect", QPDFObjectHandle::newFromRectangle(rect));
+ }
+}
diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc
index 748d865d..18ac4d02 100644
--- a/libqpdf/QPDFPageObjectHelper.cc
+++ b/libqpdf/QPDFPageObjectHelper.cc
@@ -7,6 +7,7 @@
#include <qpdf/QPDFExc.hh>
#include <qpdf/QPDFMatrix.hh>
#include <qpdf/QIntC.hh>
+#include <qpdf/QPDFAcroFormDocumentHelper.hh>
class ContentProvider: public QPDFObjectHandle::StreamDataProvider
{
@@ -1081,6 +1082,12 @@ QPDFPageObjectHelper::placeFormXObject(
void
QPDFPageObjectHelper::flattenRotation()
{
+ flattenRotation(nullptr);
+}
+
+void
+QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper* afdh)
+{
QPDF* qpdf = this->oh.getOwningQPDF();
if (! qpdf)
{
@@ -1206,4 +1213,26 @@ QPDFPageObjectHelper::flattenRotation()
QTC::TC("qpdf", "QPDFPageObjectHelper flatten inherit rotate");
this->oh.replaceKey("/Rotate", QPDFObjectHandle::newInteger(0));
}
+
+ QPDFObjectHandle annots = this->oh.getKey("/Annots");
+ if (annots.isArray())
+ {
+ std::vector<QPDFObjectHandle> new_annots;
+ std::vector<QPDFObjectHandle> new_fields;
+ std::set<QPDFObjGen> old_fields;
+ PointerHolder<QPDFAcroFormDocumentHelper> afdhph;
+ if (! afdh)
+ {
+ afdhph = new QPDFAcroFormDocumentHelper(*qpdf);
+ afdh = afdhph.getPointer();
+ }
+ afdh->transformAnnotations(
+ annots, new_annots, new_fields, old_fields, cm);
+ afdh->removeFormFields(old_fields);
+ for (auto const& f: new_fields)
+ {
+ afdh->addFormField(QPDFFormFieldObjectHelper(f));
+ }
+ this->oh.replaceKey("/Annots", QPDFObjectHandle::newArray(new_annots));
+ }
}
diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml
index f7146221..001e3455 100644
--- a/manual/qpdf-manual.xml
+++ b/manual/qpdf-manual.xml
@@ -5315,6 +5315,13 @@ print "\n";
</listitem>
<listitem>
<para>
+ Add method
+ <function>QPDFAcroFormDocumentHelper::transformAnnotations</function>,
+ which applies a transformation to each annotation on a page.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
Add <function>QUtil::path_basename</function> to return the
last element of a path.
</para>
@@ -5343,6 +5350,12 @@ print "\n";
<itemizedlist>
<listitem>
<para>
+ The <option>--flatten-rotations</option> option applies
+ transformations to any annotations that may be on the page.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
If a form XObject lacks a resources dictionary, consider any
names in that form XObject to be referenced from the
containing page. This is compliant with older PDF versions.
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc
index 2f910f22..725a1742 100644
--- a/qpdf/qpdf.cc
+++ b/qpdf/qpdf.cc
@@ -5362,6 +5362,13 @@ static void copy_attachments(QPDF& pdf, Options& o, int& exit_code)
static void handle_transformations(QPDF& pdf, Options& o, int& exit_code)
{
QPDFPageDocumentHelper dh(pdf);
+ PointerHolder<QPDFAcroFormDocumentHelper> afdh;
+ auto make_afdh = [&]() {
+ if (! afdh.getPointer())
+ {
+ afdh = new QPDFAcroFormDocumentHelper(pdf);
+ }
+ };
if (o.externalize_inline_images)
{
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
@@ -5408,8 +5415,8 @@ static void handle_transformations(QPDF& pdf, Options& o, int& exit_code)
}
if (o.generate_appearances)
{
- QPDFAcroFormDocumentHelper afdh(pdf);
- afdh.generateAppearancesIfNeeded();
+ make_afdh();
+ afdh->generateAppearancesIfNeeded();
}
if (o.flatten_annotations)
{
@@ -5427,9 +5434,10 @@ static void handle_transformations(QPDF& pdf, Options& o, int& exit_code)
}
if (o.flatten_rotation)
{
+ make_afdh();
for (auto& page: dh.getAllPages())
{
- page.flattenRotation();
+ page.flattenRotation(afdh.getPointer());
}
}
if (o.remove_page_labels)
diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov
index 057e2734..dc6fabfd 100644
--- a/qpdf/qpdf.testcov
+++ b/qpdf/qpdf.testcov
@@ -572,3 +572,6 @@ qpdf password file 0
QPDFFileSpecObjectHelper empty compat_name 0
QPDFFileSpecObjectHelper non-empty compat_name 0
QPDFPageObjectHelper flatten inherit rotate 0
+QPDFAcroFormDocumentHelper copy annotation 1
+QPDFAcroFormDocumentHelper field with parent 1
+QPDFAcroFormDocumentHelper modify ap matrix 0
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test
index a0985f07..157984f6 100644
--- a/qpdf/qtest/qpdf.test
+++ b/qpdf/qtest/qpdf.test
@@ -2248,7 +2248,7 @@ $td->runtest("explicit keep files open = n",
show_ntests();
# ----------
$td->notify("--- Rotate Pages ---");
-$n_tests += 8;
+$n_tests += 18;
# Do absolute, positive, and negative on ranges that include
# inherited and non-inherited.
# Pages 11-15 inherit /Rotate 90
@@ -2290,6 +2290,49 @@ $td->runtest("check output",
{$td->FILE => "a.pdf"},
{$td->FILE => "inherited-flattened.pdf"});
+foreach my $angle (qw(90 180 270))
+{
+ $td->runtest("rotate annotations",
+ {$td->COMMAND =>
+ "qpdf --static-id --qdf --rotate=$angle" .
+ " --flatten-rotation --no-original-object-ids" .
+ " form-fields-and-annotations.pdf a.pdf"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0});
+ $td->runtest("check output (flatten $angle)",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "annotations-rotated-$angle.pdf"});
+}
+
+# The file form-fields-and-annotations-shared.pdf contains some
+# annotations that appear in multiple pages /Annots, some non-shared
+# things that share appearance streams, some form fields appear on
+# multiple pages, and an indirect /Annotations array. It is out of
+# spec in several ways but still works in most viewers. These test
+# make sure we don't make anything worse and also end up exercising
+# some cases of things being copied more than once, though we also
+# exercise that with legitimate test cases using overlay.
+
+$td->runtest("shared annotations 1 page",
+ {$td->COMMAND =>
+ "qpdf --qdf --no-original-object-ids --static-id" .
+ " --rotate=90:1 form-fields-and-annotations-shared.pdf" .
+ " a.pdf --flatten-rotation"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "rotated-shared-annotations-1.pdf"});
+$td->runtest("shared annotations 2 pages",
+ {$td->COMMAND =>
+ "qpdf --qdf --no-original-object-ids --static-id" .
+ " --rotate=90:1,2 form-fields-and-annotations-shared.pdf" .
+ " a.pdf --flatten-rotation"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "rotated-shared-annotations-2.pdf"});
+
show_ntests();
# ----------
$td->notify("--- Flatten Form/Annotations ---");
diff --git a/qpdf/qtest/qpdf/annotations-rotated-180.pdf b/qpdf/qtest/qpdf/annotations-rotated-180.pdf
new file mode 100644
index 00000000..7c0f0792
--- /dev/null
+++ b/qpdf/qtest/qpdf/annotations-rotated-180.pdf
@@ -0,0 +1,1052 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 6 0 R
+ >>
+ /Pages 7 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 8 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 9 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 421.2
+ 307.078
+ 540
+ 321.226
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 225.852
+ 321.626
+ 240
+ 461.226
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+6 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 16 0 R
+ ]
+>>
+endobj
+
+7 0 obj
+<<
+ /Count 1
+ /Kids [
+ 17 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+8 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+9 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 10 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+10 0 obj
+53
+endobj
+
+11 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ -0
+ -1
+ 1
+ 0
+ -792
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 12 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+12 0 obj
+55
+endobj
+
+13 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 18 0 R
+ /Off 20 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 447.199
+ 131.451
+ 459.251
+ 143.499
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+14 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 23 0 R
+ /Off 25 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 447.199
+ 152.651
+ 459.251
+ 164.699
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+15 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 27 0 R
+ /Off 29 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 448.549
+ 173.451
+ 460.601
+ 185.499
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+16 0 obj
+<<
+ /EF <<
+ /F 31 0 R
+ /UF 31 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+17 0 obj
+<<
+ /Annots [
+ 33 0 R
+ 3 0 R
+ 34 0 R
+ 4 0 R
+ 35 0 R
+ 36 0 R
+ 37 0 R
+ 38 0 R
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /Contents [
+ 39 0 R
+ 41 0 R
+ 43 0 R
+ ]
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 7 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+18 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 19 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+19 0 obj
+202
+endobj
+
+20 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 21 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+21 0 obj
+12
+endobj
+
+22 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+23 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 24 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+24 0 obj
+202
+endobj
+
+25 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 26 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+26 0 obj
+12
+endobj
+
+27 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 28 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+28 0 obj
+202
+endobj
+
+29 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 30 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+30 0 obj
+12
+endobj
+
+31 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 32 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+32 0 obj
+22
+endobj
+
+33 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 237.6
+ 271.304
+ 540
+ 290.168
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+34 0 obj
+<<
+ /AP <<
+ /N 46 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 16 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 520
+ 372
+ 540
+ 392
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+35 0 obj
+<<
+ /AP <<
+ /N 48 0 R
+ >>
+ /DA ()
+ /Rect [
+ 520
+ 432
+ 540
+ 442
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+36 0 obj
+<<
+ /AP <<
+ /N 50 0 R
+ >>
+ /DA ()
+ /Rect [
+ 500
+ 422
+ 510
+ 442
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+37 0 obj
+<<
+ /AP <<
+ /N 52 0 R
+ >>
+ /DA ()
+ /Rect [
+ 470
+ 432
+ 490
+ 442
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+38 0 obj
+<<
+ /AP <<
+ /N 54 0 R
+ >>
+ /DA ()
+ /Rect [
+ 450
+ 422
+ 460
+ 442
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+39 0 obj
+<<
+ /Length 40 0 R
+>>
+stream
+q
+-1 0 0 -1 612 792 cm
+endstream
+endobj
+
+40 0 obj
+23
+endobj
+
+%% Contents for page 1
+41 0 obj
+<<
+ /Length 42 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+42 0 obj
+874
+endobj
+
+%% Contents for page 1
+43 0 obj
+<<
+ /Length 44 0 R
+>>
+stream
+
+Q
+endstream
+endobj
+
+44 0 obj
+3
+endobj
+
+45 0 obj
+<<
+ /Font 56 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+46 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 47 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+47 0 obj
+52
+endobj
+
+48 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 612
+ 792
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 49 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+49 0 obj
+36
+endobj
+
+50 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -0
+ -1
+ 1
+ 0
+ -792
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 51 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+51 0 obj
+36
+endobj
+
+52 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 1
+ -0
+ -0
+ 1
+ -612
+ -792
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 53 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+53 0 obj
+36
+endobj
+
+54 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ -0
+ 792
+ -612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 55 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+55 0 obj
+38
+endobj
+
+56 0 obj
+<<
+ /ZaDi 22 0 R
+>>
+endobj
+
+xref
+0 57
+0000000000 65535 f
+0000000025 00000 n
+0000000211 00000 n
+0000000263 00000 n
+0000000507 00000 n
+0000000756 00000 n
+0000000875 00000 n
+0000000945 00000 n
+0000001018 00000 n
+0000001122 00000 n
+0000001394 00000 n
+0000001414 00000 n
+0000001690 00000 n
+0000001710 00000 n
+0000002062 00000 n
+0000002414 00000 n
+0000002766 00000 n
+0000002907 00000 n
+0000003211 00000 n
+0000003628 00000 n
+0000003649 00000 n
+0000003876 00000 n
+0000003896 00000 n
+0000003977 00000 n
+0000004394 00000 n
+0000004415 00000 n
+0000004642 00000 n
+0000004662 00000 n
+0000005079 00000 n
+0000005100 00000 n
+0000005327 00000 n
+0000005347 00000 n
+0000005555 00000 n
+0000005575 00000 n
+0000005820 00000 n
+0000006026 00000 n
+0000006168 00000 n
+0000006310 00000 n
+0000006452 00000 n
+0000006617 00000 n
+0000006697 00000 n
+0000006740 00000 n
+0000007671 00000 n
+0000007715 00000 n
+0000007775 00000 n
+0000007794 00000 n
+0000007868 00000 n
+0000008130 00000 n
+0000008150 00000 n
+0000008394 00000 n
+0000008414 00000 n
+0000008659 00000 n
+0000008679 00000 n
+0000008925 00000 n
+0000008945 00000 n
+0000009192 00000 n
+0000009212 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 57
+ /ID [<a2f146daeb6d814a742556489dab9882><31415926535897932384626433832795>]
+>>
+startxref
+9250
+%%EOF
diff --git a/qpdf/qtest/qpdf/annotations-rotated-270.pdf b/qpdf/qtest/qpdf/annotations-rotated-270.pdf
new file mode 100644
index 00000000..b6da458c
--- /dev/null
+++ b/qpdf/qtest/qpdf/annotations-rotated-270.pdf
@@ -0,0 +1,1052 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 6 0 R
+ >>
+ /Pages 7 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 8 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 9 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 307.078
+ 72
+ 321.226
+ 190.8
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 321.626
+ 372
+ 461.226
+ 386.148
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+6 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 16 0 R
+ ]
+>>
+endobj
+
+7 0 obj
+<<
+ /Count 1
+ /Kids [
+ 17 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+8 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+9 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 10 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+10 0 obj
+53
+endobj
+
+11 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ -1
+ 0
+ -0
+ -1
+ 0
+ 792
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 12 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+12 0 obj
+55
+endobj
+
+13 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 18 0 R
+ /Off 20 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 131.451
+ 152.749
+ 143.499
+ 164.801
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+14 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 23 0 R
+ /Off 25 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 152.651
+ 152.749
+ 164.699
+ 164.801
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+15 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 27 0 R
+ /Off 29 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 173.451
+ 151.399
+ 185.499
+ 163.451
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+16 0 obj
+<<
+ /EF <<
+ /F 31 0 R
+ /UF 31 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+17 0 obj
+<<
+ /Annots [
+ 33 0 R
+ 3 0 R
+ 34 0 R
+ 4 0 R
+ 35 0 R
+ 36 0 R
+ 37 0 R
+ 38 0 R
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /Contents [
+ 39 0 R
+ 41 0 R
+ 43 0 R
+ ]
+ /MediaBox [
+ 0
+ 0
+ 792
+ 612
+ ]
+ /Parent 7 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+18 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 19 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+19 0 obj
+202
+endobj
+
+20 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 21 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+21 0 obj
+12
+endobj
+
+22 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+23 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 24 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+24 0 obj
+202
+endobj
+
+25 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 26 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+26 0 obj
+12
+endobj
+
+27 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 28 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+28 0 obj
+202
+endobj
+
+29 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 30 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+30 0 obj
+12
+endobj
+
+31 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 32 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+32 0 obj
+22
+endobj
+
+33 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 271.304
+ 72
+ 290.168
+ 374.4
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+34 0 obj
+<<
+ /AP <<
+ /N 46 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 16 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 372
+ 72
+ 392
+ 92
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+35 0 obj
+<<
+ /AP <<
+ /N 48 0 R
+ >>
+ /DA ()
+ /Rect [
+ 432
+ 72
+ 442
+ 92
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+36 0 obj
+<<
+ /AP <<
+ /N 50 0 R
+ >>
+ /DA ()
+ /Rect [
+ 422
+ 102
+ 442
+ 112
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+37 0 obj
+<<
+ /AP <<
+ /N 52 0 R
+ >>
+ /DA ()
+ /Rect [
+ 432
+ 122
+ 442
+ 142
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+38 0 obj
+<<
+ /AP <<
+ /N 54 0 R
+ >>
+ /DA ()
+ /Rect [
+ 422
+ 152
+ 442
+ 162
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+39 0 obj
+<<
+ /Length 40 0 R
+>>
+stream
+q
+0 1 -1 0 792 0 cm
+endstream
+endobj
+
+40 0 obj
+20
+endobj
+
+%% Contents for page 1
+41 0 obj
+<<
+ /Length 42 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+42 0 obj
+874
+endobj
+
+%% Contents for page 1
+43 0 obj
+<<
+ /Length 44 0 R
+>>
+stream
+
+Q
+endstream
+endobj
+
+44 0 obj
+3
+endobj
+
+45 0 obj
+<<
+ /Font 56 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+46 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 47 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+47 0 obj
+52
+endobj
+
+48 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 792
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 49 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+49 0 obj
+36
+endobj
+
+50 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ 0
+ -0
+ -1
+ 0
+ 792
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 51 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+51 0 obj
+36
+endobj
+
+52 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ -0
+ -792
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 53 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+53 0 obj
+36
+endobj
+
+54 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ 0
+ -792
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 55 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+55 0 obj
+38
+endobj
+
+56 0 obj
+<<
+ /ZaDi 22 0 R
+>>
+endobj
+
+xref
+0 57
+0000000000 65535 f
+0000000025 00000 n
+0000000211 00000 n
+0000000263 00000 n
+0000000506 00000 n
+0000000755 00000 n
+0000000874 00000 n
+0000000944 00000 n
+0000001017 00000 n
+0000001121 00000 n
+0000001390 00000 n
+0000001410 00000 n
+0000001684 00000 n
+0000001704 00000 n
+0000002056 00000 n
+0000002408 00000 n
+0000002760 00000 n
+0000002901 00000 n
+0000003205 00000 n
+0000003619 00000 n
+0000003640 00000 n
+0000003864 00000 n
+0000003884 00000 n
+0000003965 00000 n
+0000004379 00000 n
+0000004400 00000 n
+0000004624 00000 n
+0000004644 00000 n
+0000005058 00000 n
+0000005079 00000 n
+0000005303 00000 n
+0000005323 00000 n
+0000005531 00000 n
+0000005551 00000 n
+0000005795 00000 n
+0000005999 00000 n
+0000006139 00000 n
+0000006281 00000 n
+0000006423 00000 n
+0000006588 00000 n
+0000006665 00000 n
+0000006708 00000 n
+0000007639 00000 n
+0000007683 00000 n
+0000007743 00000 n
+0000007762 00000 n
+0000007836 00000 n
+0000008095 00000 n
+0000008115 00000 n
+0000008356 00000 n
+0000008376 00000 n
+0000008619 00000 n
+0000008639 00000 n
+0000008882 00000 n
+0000008902 00000 n
+0000009145 00000 n
+0000009165 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 57
+ /ID [<a2f146daeb6d814a742556489dab9882><31415926535897932384626433832795>]
+>>
+startxref
+9203
+%%EOF
diff --git a/qpdf/qtest/qpdf/annotations-rotated-90.pdf b/qpdf/qtest/qpdf/annotations-rotated-90.pdf
new file mode 100644
index 00000000..767eae0e
--- /dev/null
+++ b/qpdf/qtest/qpdf/annotations-rotated-90.pdf
@@ -0,0 +1,1052 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 6 0 R
+ >>
+ /Pages 7 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 8 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 9 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 470.774
+ 421.2
+ 484.922
+ 540
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 330.774
+ 225.852
+ 470.374
+ 240
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+6 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 16 0 R
+ ]
+>>
+endobj
+
+7 0 obj
+<<
+ /Count 1
+ /Kids [
+ 17 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+8 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+9 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 10 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+10 0 obj
+53
+endobj
+
+11 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 12 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+12 0 obj
+55
+endobj
+
+13 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 18 0 R
+ /Off 20 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 648.501
+ 447.199
+ 660.549
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+14 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 23 0 R
+ /Off 25 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 627.301
+ 447.199
+ 639.349
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+15 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 27 0 R
+ /Off 29 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 606.501
+ 448.549
+ 618.549
+ 460.601
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+16 0 obj
+<<
+ /EF <<
+ /F 31 0 R
+ /UF 31 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+17 0 obj
+<<
+ /Annots [
+ 33 0 R
+ 3 0 R
+ 34 0 R
+ 4 0 R
+ 35 0 R
+ 36 0 R
+ 37 0 R
+ 38 0 R
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /Contents [
+ 39 0 R
+ 41 0 R
+ 43 0 R
+ ]
+ /MediaBox [
+ 0
+ 0
+ 792
+ 612
+ ]
+ /Parent 7 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+18 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 19 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+19 0 obj
+202
+endobj
+
+20 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 21 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+21 0 obj
+12
+endobj
+
+22 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+23 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 24 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+24 0 obj
+202
+endobj
+
+25 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 26 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+26 0 obj
+12
+endobj
+
+27 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 28 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+28 0 obj
+202
+endobj
+
+29 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 45 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 30 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+30 0 obj
+12
+endobj
+
+31 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 32 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+32 0 obj
+22
+endobj
+
+33 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 501.832
+ 237.6
+ 520.696
+ 540
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+34 0 obj
+<<
+ /AP <<
+ /N 46 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 16 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 400
+ 520
+ 420
+ 540
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+35 0 obj
+<<
+ /AP <<
+ /N 48 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 520
+ 360
+ 540
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+36 0 obj
+<<
+ /AP <<
+ /N 50 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 500
+ 370
+ 510
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+37 0 obj
+<<
+ /AP <<
+ /N 52 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 470
+ 360
+ 490
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+38 0 obj
+<<
+ /AP <<
+ /N 54 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 450
+ 370
+ 460
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+39 0 obj
+<<
+ /Length 40 0 R
+>>
+stream
+q
+0 -1 1 0 0 612 cm
+endstream
+endobj
+
+40 0 obj
+20
+endobj
+
+%% Contents for page 1
+41 0 obj
+<<
+ /Length 42 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+42 0 obj
+874
+endobj
+
+%% Contents for page 1
+43 0 obj
+<<
+ /Length 44 0 R
+>>
+stream
+
+Q
+endstream
+endobj
+
+44 0 obj
+3
+endobj
+
+45 0 obj
+<<
+ /Font 56 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+46 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 47 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+47 0 obj
+52
+endobj
+
+48 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 49 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+49 0 obj
+36
+endobj
+
+50 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 51 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+51 0 obj
+36
+endobj
+
+52 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -0
+ 1
+ -1
+ 0
+ 0
+ -612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 53 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+53 0 obj
+36
+endobj
+
+54 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ -0
+ 0
+ -1
+ 612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 55 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+55 0 obj
+38
+endobj
+
+56 0 obj
+<<
+ /ZaDi 22 0 R
+>>
+endobj
+
+xref
+0 57
+0000000000 65535 f
+0000000025 00000 n
+0000000211 00000 n
+0000000263 00000 n
+0000000507 00000 n
+0000000756 00000 n
+0000000875 00000 n
+0000000945 00000 n
+0000001018 00000 n
+0000001122 00000 n
+0000001391 00000 n
+0000001411 00000 n
+0000001683 00000 n
+0000001703 00000 n
+0000002055 00000 n
+0000002407 00000 n
+0000002759 00000 n
+0000002900 00000 n
+0000003204 00000 n
+0000003618 00000 n
+0000003639 00000 n
+0000003863 00000 n
+0000003883 00000 n
+0000003964 00000 n
+0000004378 00000 n
+0000004399 00000 n
+0000004623 00000 n
+0000004643 00000 n
+0000005057 00000 n
+0000005078 00000 n
+0000005302 00000 n
+0000005322 00000 n
+0000005530 00000 n
+0000005550 00000 n
+0000005795 00000 n
+0000006001 00000 n
+0000006143 00000 n
+0000006285 00000 n
+0000006427 00000 n
+0000006592 00000 n
+0000006669 00000 n
+0000006712 00000 n
+0000007643 00000 n
+0000007687 00000 n
+0000007747 00000 n
+0000007766 00000 n
+0000007840 00000 n
+0000008099 00000 n
+0000008119 00000 n
+0000008360 00000 n
+0000008380 00000 n
+0000008621 00000 n
+0000008641 00000 n
+0000008884 00000 n
+0000008904 00000 n
+0000009149 00000 n
+0000009169 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 57
+ /ID [<a2f146daeb6d814a742556489dab9882><31415926535897932384626433832795>]
+>>
+startxref
+9207
+%%EOF
diff --git a/qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf b/qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf
new file mode 100644
index 00000000..56b102c6
--- /dev/null
+++ b/qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf
@@ -0,0 +1,1132 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ 6 0 R
+ 7 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 8 0 R
+ >>
+ /Pages 9 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 10 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 72
+ 470.774
+ 190.8
+ 484.922
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 13 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 372
+ 330.774
+ 386.148
+ 470.374
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 72
+ 470.774
+ 190.8
+ 484.922
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+6 0 obj
+<<
+ /AP <<
+ /N 13 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 372
+ 330.774
+ 386.148
+ 470.374
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+7 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 15 0 R
+ 16 0 R
+ 17 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+8 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 18 0 R
+ ]
+>>
+endobj
+
+9 0 obj
+<<
+ /Count 4
+ /Kids [
+ 19 0 R
+ 20 0 R
+ 21 0 R
+ 22 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+10 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+11 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 12 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+12 0 obj
+53
+endobj
+
+13 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 14 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+14 0 obj
+55
+endobj
+
+15 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 23 0 R
+ /Off 25 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 27 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 7 0 R
+ /Rect [
+ 152.749
+ 648.501
+ 164.801
+ 660.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+16 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 28 0 R
+ /Off 30 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 27 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 7 0 R
+ /Rect [
+ 152.749
+ 627.301
+ 164.801
+ 639.349
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+17 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 32 0 R
+ /Off 34 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 27 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 7 0 R
+ /Rect [
+ 151.399
+ 606.501
+ 163.451
+ 618.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+18 0 obj
+<<
+ /EF <<
+ /F 36 0 R
+ /UF 36 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+19 0 obj
+<<
+ /Annots [
+ 38 0 R
+ 3 0 R
+ 39 0 R
+ 4 0 R
+ 40 0 R
+ 41 0 R
+ 42 0 R
+ 43 0 R
+ 15 0 R
+ 16 0 R
+ 17 0 R
+ ]
+ /Contents 44 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+%% Page 2
+20 0 obj
+<<
+ /Annots [
+ 38 0 R
+ 39 0 R
+ 40 0 R
+ 41 0 R
+ 42 0 R
+ 43 0 R
+ 5 0 R
+ 6 0 R
+ 15 0 R
+ 16 0 R
+ 17 0 R
+ ]
+ /Contents 46 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources <<
+ /Font <<
+ /F1 48 0 R
+ >>
+ /ProcSet 49 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 3
+21 0 obj
+<<
+ /Annots 50 0 R
+ /Contents 46 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources <<
+ /Font <<
+ /F1 48 0 R
+ >>
+ /ProcSet 49 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 4
+22 0 obj
+<<
+ /Annots 50 0 R
+ /Contents 46 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources <<
+ /Font <<
+ /F1 48 0 R
+ >>
+ /ProcSet 49 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+23 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 51 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 24 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+24 0 obj
+202
+endobj
+
+25 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 51 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 26 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+26 0 obj
+12
+endobj
+
+27 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+28 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 51 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 29 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+29 0 obj
+202
+endobj
+
+30 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 51 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 31 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+31 0 obj
+12
+endobj
+
+32 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 51 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 33 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+33 0 obj
+202
+endobj
+
+34 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 51 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 35 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+35 0 obj
+12
+endobj
+
+36 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 37 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+37 0 obj
+22
+endobj
+
+38 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 72
+ 501.832
+ 374.4
+ 520.696
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+39 0 obj
+<<
+ /AP <<
+ /N 52 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 18 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 72
+ 400
+ 92
+ 420
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+40 0 obj
+<<
+ /AP <<
+ /N 54 0 R
+ >>
+ /DA ()
+ /Rect [
+ 72
+ 350
+ 92
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+41 0 obj
+<<
+ /AP <<
+ /N 56 0 R
+ >>
+ /DA ()
+ /Rect [
+ 102
+ 350
+ 112
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+42 0 obj
+<<
+ /AP <<
+ /N 58 0 R
+ >>
+ /DA ()
+ /Rect [
+ 122
+ 350
+ 142
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+43 0 obj
+<<
+ /AP <<
+ /N 60 0 R
+ >>
+ /DA ()
+ /Rect [
+ 152
+ 350
+ 162
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+44 0 obj
+<<
+ /Length 45 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+45 0 obj
+874
+endobj
+
+%% Contents for page 4
+46 0 obj
+<<
+ /Length 47 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato) Tj
+ET
+endstream
+endobj
+
+47 0 obj
+44
+endobj
+
+48 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+49 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+50 0 obj
+[
+ 38 0 R
+ 39 0 R
+ 40 0 R
+ 41 0 R
+ 42 0 R
+ 43 0 R
+ 5 0 R
+ 6 0 R
+ 15 0 R
+ 16 0 R
+ 17 0 R
+]
+endobj
+
+51 0 obj
+<<
+ /Font 62 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+52 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 53 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+53 0 obj
+52
+endobj
+
+54 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 55 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+55 0 obj
+36
+endobj
+
+56 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 57 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+57 0 obj
+36
+endobj
+
+58 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 59 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+59 0 obj
+36
+endobj
+
+60 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 61 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+61 0 obj
+38
+endobj
+
+62 0 obj
+<<
+ /ZaDi 27 0 R
+>>
+endobj
+
+xref
+0 63
+0000000000 65535 f
+0000000025 00000 n
+0000000235 00000 n
+0000000288 00000 n
+0000000532 00000 n
+0000000781 00000 n
+0000001025 00000 n
+0000001274 00000 n
+0000001393 00000 n
+0000001463 00000 n
+0000001569 00000 n
+0000001674 00000 n
+0000001889 00000 n
+0000001909 00000 n
+0000002179 00000 n
+0000002199 00000 n
+0000002551 00000 n
+0000002903 00000 n
+0000003255 00000 n
+0000003396 00000 n
+0000003678 00000 n
+0000004019 00000 n
+0000004242 00000 n
+0000004455 00000 n
+0000004814 00000 n
+0000004835 00000 n
+0000005004 00000 n
+0000005024 00000 n
+0000005105 00000 n
+0000005464 00000 n
+0000005485 00000 n
+0000005654 00000 n
+0000005674 00000 n
+0000006033 00000 n
+0000006054 00000 n
+0000006223 00000 n
+0000006243 00000 n
+0000006451 00000 n
+0000006471 00000 n
+0000006715 00000 n
+0000006919 00000 n
+0000007059 00000 n
+0000007201 00000 n
+0000007343 00000 n
+0000007508 00000 n
+0000008439 00000 n
+0000008483 00000 n
+0000008584 00000 n
+0000008604 00000 n
+0000008723 00000 n
+0000008759 00000 n
+0000008877 00000 n
+0000008951 00000 n
+0000009155 00000 n
+0000009175 00000 n
+0000009361 00000 n
+0000009381 00000 n
+0000009620 00000 n
+0000009640 00000 n
+0000009880 00000 n
+0000009900 00000 n
+0000010141 00000 n
+0000010161 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 63
+ /ID [<a2f146daeb6d814a742556489dab9882><2af5c3b45c6e23a702a8d1dab51fe6b8>]
+>>
+startxref
+10199
+%%EOF
diff --git a/qpdf/qtest/qpdf/form-fields-and-annotations.pdf b/qpdf/qtest/qpdf/form-fields-and-annotations.pdf
new file mode 100644
index 00000000..118363d7
--- /dev/null
+++ b/qpdf/qtest/qpdf/form-fields-and-annotations.pdf
@@ -0,0 +1,942 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 6 0 R
+ >>
+ /Pages 7 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 8 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 9 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 72
+ 470.774
+ 190.8
+ 484.922
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 372
+ 330.774
+ 386.148
+ 470.374
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+6 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 16 0 R
+ ]
+>>
+endobj
+
+7 0 obj
+<<
+ /Count 1
+ /Kids [
+ 17 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+8 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+9 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 10 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+10 0 obj
+53
+endobj
+
+11 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 12 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+12 0 obj
+55
+endobj
+
+13 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 18 0 R
+ /Off 20 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 152.749
+ 648.501
+ 164.801
+ 660.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+14 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 23 0 R
+ /Off 25 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 152.749
+ 627.301
+ 164.801
+ 639.349
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+15 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 27 0 R
+ /Off 29 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 22 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 151.399
+ 606.501
+ 163.451
+ 618.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+16 0 obj
+<<
+ /EF <<
+ /F 31 0 R
+ /UF 31 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+17 0 obj
+<<
+ /Annots [
+ 33 0 R
+ 3 0 R
+ 34 0 R
+ 4 0 R
+ 35 0 R
+ 36 0 R
+ 37 0 R
+ 38 0 R
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ ]
+ /Contents 39 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 7 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+18 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 41 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 19 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+19 0 obj
+202
+endobj
+
+20 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 41 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 21 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+21 0 obj
+12
+endobj
+
+22 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+23 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 41 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 24 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+24 0 obj
+202
+endobj
+
+25 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 41 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 26 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+26 0 obj
+12
+endobj
+
+27 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 41 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 28 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+28 0 obj
+202
+endobj
+
+29 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 41 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 30 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+30 0 obj
+12
+endobj
+
+31 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 32 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+32 0 obj
+22
+endobj
+
+33 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 72
+ 501.832
+ 374.4
+ 520.696
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+34 0 obj
+<<
+ /AP <<
+ /N 42 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 16 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 72
+ 400
+ 92
+ 420
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+35 0 obj
+<<
+ /AP <<
+ /N 44 0 R
+ >>
+ /DA ()
+ /Rect [
+ 72
+ 350
+ 92
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+36 0 obj
+<<
+ /AP <<
+ /N 46 0 R
+ >>
+ /DA ()
+ /Rect [
+ 102
+ 350
+ 112
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+37 0 obj
+<<
+ /AP <<
+ /N 48 0 R
+ >>
+ /DA ()
+ /Rect [
+ 122
+ 350
+ 142
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+38 0 obj
+<<
+ /AP <<
+ /N 50 0 R
+ >>
+ /DA ()
+ /Rect [
+ 152
+ 350
+ 162
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+39 0 obj
+<<
+ /Length 40 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+40 0 obj
+874
+endobj
+
+41 0 obj
+<<
+ /Font 52 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+42 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 43 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+43 0 obj
+52
+endobj
+
+44 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 45 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+45 0 obj
+36
+endobj
+
+46 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 47 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+47 0 obj
+36
+endobj
+
+48 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 49 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+49 0 obj
+36
+endobj
+
+50 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 51 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+51 0 obj
+38
+endobj
+
+52 0 obj
+<<
+ /ZaDi 22 0 R
+>>
+endobj
+
+xref
+0 53
+0000000000 65535 f
+0000000025 00000 n
+0000000211 00000 n
+0000000263 00000 n
+0000000506 00000 n
+0000000755 00000 n
+0000000874 00000 n
+0000000944 00000 n
+0000001017 00000 n
+0000001121 00000 n
+0000001335 00000 n
+0000001355 00000 n
+0000001625 00000 n
+0000001645 00000 n
+0000001997 00000 n
+0000002349 00000 n
+0000002701 00000 n
+0000002842 00000 n
+0000003114 00000 n
+0000003473 00000 n
+0000003494 00000 n
+0000003663 00000 n
+0000003683 00000 n
+0000003764 00000 n
+0000004123 00000 n
+0000004144 00000 n
+0000004313 00000 n
+0000004333 00000 n
+0000004692 00000 n
+0000004713 00000 n
+0000004882 00000 n
+0000004902 00000 n
+0000005110 00000 n
+0000005130 00000 n
+0000005374 00000 n
+0000005578 00000 n
+0000005718 00000 n
+0000005860 00000 n
+0000006002 00000 n
+0000006167 00000 n
+0000007098 00000 n
+0000007119 00000 n
+0000007193 00000 n
+0000007397 00000 n
+0000007417 00000 n
+0000007603 00000 n
+0000007623 00000 n
+0000007862 00000 n
+0000007882 00000 n
+0000008122 00000 n
+0000008142 00000 n
+0000008383 00000 n
+0000008403 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 53
+ /ID [<a2f146daeb6d814a742556489dab9882><7b639c67bfc16b5e891fa5468aac3a14>]
+>>
+startxref
+8441
+%%EOF
diff --git a/qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf b/qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf
new file mode 100644
index 00000000..4c6d88d1
--- /dev/null
+++ b/qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf
@@ -0,0 +1,1894 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ 6 0 R
+ 7 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 8 0 R
+ >>
+ /Pages 9 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 10 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 11 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 72
+ 470.774
+ 190.8
+ 484.922
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 13 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 372
+ 330.774
+ 386.148
+ 470.374
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /AP <<
+ /N 15 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 470.774
+ 421.2
+ 484.922
+ 540
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+6 0 obj
+<<
+ /AP <<
+ /N 17 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 330.774
+ 225.852
+ 470.374
+ 240
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+7 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 19 0 R
+ 20 0 R
+ 21 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+8 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 22 0 R
+ ]
+>>
+endobj
+
+9 0 obj
+<<
+ /Count 4
+ /Kids [
+ 23 0 R
+ 24 0 R
+ 25 0 R
+ 26 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+10 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+11 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 12 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+12 0 obj
+53
+endobj
+
+13 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 14 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+14 0 obj
+55
+endobj
+
+15 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 16 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+16 0 obj
+53
+endobj
+
+17 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 18 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+18 0 obj
+55
+endobj
+
+19 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 27 0 R
+ /Off 29 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 31 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 7 0 R
+ /Rect [
+ 648.501
+ 447.199
+ 660.549
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+20 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 32 0 R
+ /Off 34 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 31 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 7 0 R
+ /Rect [
+ 627.301
+ 447.199
+ 639.349
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+21 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 36 0 R
+ /Off 38 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 31 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 7 0 R
+ /Rect [
+ 606.501
+ 448.549
+ 618.549
+ 460.601
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+22 0 obj
+<<
+ /EF <<
+ /F 40 0 R
+ /UF 40 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+23 0 obj
+<<
+ /Annots [
+ 42 0 R
+ 5 0 R
+ 43 0 R
+ 6 0 R
+ 44 0 R
+ 45 0 R
+ 46 0 R
+ 47 0 R
+ 19 0 R
+ 20 0 R
+ 21 0 R
+ ]
+ /Contents [
+ 48 0 R
+ 50 0 R
+ 52 0 R
+ ]
+ /MediaBox [
+ 0
+ 0
+ 792
+ 612
+ ]
+ /Parent 9 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+%% Page 2
+24 0 obj
+<<
+ /Annots [
+ 54 0 R
+ 55 0 R
+ 56 0 R
+ 57 0 R
+ 58 0 R
+ 59 0 R
+ 3 0 R
+ 4 0 R
+ 60 0 R
+ 61 0 R
+ 62 0 R
+ ]
+ /Contents 63 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources <<
+ /Font <<
+ /F1 65 0 R
+ >>
+ /ProcSet 66 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 3
+25 0 obj
+<<
+ /Annots 67 0 R
+ /Contents 63 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources <<
+ /Font <<
+ /F1 65 0 R
+ >>
+ /ProcSet 66 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 4
+26 0 obj
+<<
+ /Annots 67 0 R
+ /Contents 63 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 9 0 R
+ /Resources <<
+ /Font <<
+ /F1 65 0 R
+ >>
+ /ProcSet 66 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+27 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 28 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+28 0 obj
+202
+endobj
+
+29 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 30 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+30 0 obj
+12
+endobj
+
+31 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+32 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 33 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+33 0 obj
+202
+endobj
+
+34 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 35 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+35 0 obj
+12
+endobj
+
+36 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 37 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+37 0 obj
+202
+endobj
+
+38 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 39 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+39 0 obj
+12
+endobj
+
+40 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 41 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+41 0 obj
+22
+endobj
+
+42 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 501.832
+ 237.6
+ 520.696
+ 540
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+43 0 obj
+<<
+ /AP <<
+ /N 69 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 22 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 400
+ 520
+ 420
+ 540
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+44 0 obj
+<<
+ /AP <<
+ /N 71 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 520
+ 360
+ 540
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+45 0 obj
+<<
+ /AP <<
+ /N 73 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 500
+ 370
+ 510
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+46 0 obj
+<<
+ /AP <<
+ /N 75 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 470
+ 360
+ 490
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+47 0 obj
+<<
+ /AP <<
+ /N 77 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 450
+ 370
+ 460
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+48 0 obj
+<<
+ /Length 49 0 R
+>>
+stream
+q
+0 -1 1 0 0 612 cm
+endstream
+endobj
+
+49 0 obj
+20
+endobj
+
+%% Contents for page 1
+50 0 obj
+<<
+ /Length 51 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+51 0 obj
+874
+endobj
+
+%% Contents for page 1
+52 0 obj
+<<
+ /Length 53 0 R
+>>
+stream
+
+Q
+endstream
+endobj
+
+53 0 obj
+3
+endobj
+
+54 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 72
+ 501.832
+ 374.4
+ 520.696
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+55 0 obj
+<<
+ /AP <<
+ /N 79 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 22 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 72
+ 400
+ 92
+ 420
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+56 0 obj
+<<
+ /AP <<
+ /N 81 0 R
+ >>
+ /DA ()
+ /Rect [
+ 72
+ 350
+ 92
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+57 0 obj
+<<
+ /AP <<
+ /N 83 0 R
+ >>
+ /DA ()
+ /Rect [
+ 102
+ 350
+ 112
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+58 0 obj
+<<
+ /AP <<
+ /N 85 0 R
+ >>
+ /DA ()
+ /Rect [
+ 122
+ 350
+ 142
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+59 0 obj
+<<
+ /AP <<
+ /N 87 0 R
+ >>
+ /DA ()
+ /Rect [
+ 152
+ 350
+ 162
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+60 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 89 0 R
+ /Off 91 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 31 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 93 0 R
+ /Rect [
+ 152.749
+ 648.501
+ 164.801
+ 660.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+61 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 94 0 R
+ /Off 96 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 31 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 93 0 R
+ /Rect [
+ 152.749
+ 627.301
+ 164.801
+ 639.349
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+62 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 98 0 R
+ /Off 100 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 31 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 93 0 R
+ /Rect [
+ 151.399
+ 606.501
+ 163.451
+ 618.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 4
+63 0 obj
+<<
+ /Length 64 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato) Tj
+ET
+endstream
+endobj
+
+64 0 obj
+44
+endobj
+
+65 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+66 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+67 0 obj
+[
+ 54 0 R
+ 55 0 R
+ 56 0 R
+ 57 0 R
+ 58 0 R
+ 59 0 R
+ 3 0 R
+ 4 0 R
+ 60 0 R
+ 61 0 R
+ 62 0 R
+]
+endobj
+
+68 0 obj
+<<
+ /Font 102 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+69 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 70 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+70 0 obj
+52
+endobj
+
+71 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 72 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+72 0 obj
+36
+endobj
+
+73 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 74 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+74 0 obj
+36
+endobj
+
+75 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -0
+ 1
+ -1
+ 0
+ 0
+ -612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 76 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+76 0 obj
+36
+endobj
+
+77 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ -0
+ 0
+ -1
+ 612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 78 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+78 0 obj
+38
+endobj
+
+79 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 80 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+80 0 obj
+52
+endobj
+
+81 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 82 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+82 0 obj
+36
+endobj
+
+83 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 84 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+84 0 obj
+36
+endobj
+
+85 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 86 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+86 0 obj
+36
+endobj
+
+87 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 88 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+88 0 obj
+38
+endobj
+
+89 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 90 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+90 0 obj
+202
+endobj
+
+91 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 92 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+92 0 obj
+12
+endobj
+
+93 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 60 0 R
+ 61 0 R
+ 62 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+94 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 95 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+95 0 obj
+202
+endobj
+
+96 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 97 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+97 0 obj
+12
+endobj
+
+98 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 99 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+99 0 obj
+202
+endobj
+
+100 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 68 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 101 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+101 0 obj
+12
+endobj
+
+102 0 obj
+<<
+ /ZaDi 31 0 R
+>>
+endobj
+
+xref
+0 103
+0000000000 65535 f
+0000000025 00000 n
+0000000235 00000 n
+0000000288 00000 n
+0000000532 00000 n
+0000000781 00000 n
+0000001026 00000 n
+0000001275 00000 n
+0000001394 00000 n
+0000001464 00000 n
+0000001570 00000 n
+0000001675 00000 n
+0000001890 00000 n
+0000001910 00000 n
+0000002180 00000 n
+0000002200 00000 n
+0000002470 00000 n
+0000002490 00000 n
+0000002762 00000 n
+0000002782 00000 n
+0000003134 00000 n
+0000003486 00000 n
+0000003838 00000 n
+0000003979 00000 n
+0000004293 00000 n
+0000004634 00000 n
+0000004857 00000 n
+0000005070 00000 n
+0000005484 00000 n
+0000005505 00000 n
+0000005729 00000 n
+0000005749 00000 n
+0000005830 00000 n
+0000006244 00000 n
+0000006265 00000 n
+0000006489 00000 n
+0000006509 00000 n
+0000006923 00000 n
+0000006944 00000 n
+0000007168 00000 n
+0000007188 00000 n
+0000007396 00000 n
+0000007416 00000 n
+0000007661 00000 n
+0000007867 00000 n
+0000008009 00000 n
+0000008151 00000 n
+0000008293 00000 n
+0000008458 00000 n
+0000008535 00000 n
+0000008578 00000 n
+0000009509 00000 n
+0000009553 00000 n
+0000009613 00000 n
+0000009632 00000 n
+0000009876 00000 n
+0000010080 00000 n
+0000010220 00000 n
+0000010362 00000 n
+0000010504 00000 n
+0000010646 00000 n
+0000010999 00000 n
+0000011352 00000 n
+0000011729 00000 n
+0000011830 00000 n
+0000011850 00000 n
+0000011969 00000 n
+0000012005 00000 n
+0000012123 00000 n
+0000012198 00000 n
+0000012457 00000 n
+0000012477 00000 n
+0000012718 00000 n
+0000012738 00000 n
+0000012979 00000 n
+0000012999 00000 n
+0000013242 00000 n
+0000013262 00000 n
+0000013507 00000 n
+0000013527 00000 n
+0000013731 00000 n
+0000013751 00000 n
+0000013937 00000 n
+0000013957 00000 n
+0000014196 00000 n
+0000014216 00000 n
+0000014456 00000 n
+0000014476 00000 n
+0000014717 00000 n
+0000014737 00000 n
+0000015096 00000 n
+0000015117 00000 n
+0000015286 00000 n
+0000015306 00000 n
+0000015426 00000 n
+0000015785 00000 n
+0000015806 00000 n
+0000015975 00000 n
+0000015995 00000 n
+0000016354 00000 n
+0000016375 00000 n
+0000016546 00000 n
+0000016567 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 103
+ /ID [<a2f146daeb6d814a742556489dab9882><31415926535897932384626433832795>]
+>>
+startxref
+16606
+%%EOF
diff --git a/qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf b/qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf
new file mode 100644
index 00000000..5c59008a
--- /dev/null
+++ b/qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf
@@ -0,0 +1,2705 @@
+%PDF-1.6
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /AcroForm <<
+ /DR 2 0 R
+ /Fields [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ 6 0 R
+ 7 0 R
+ 8 0 R
+ ]
+ >>
+ /Names <<
+ /EmbeddedFiles 9 0 R
+ >>
+ /Pages 10 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Font <<
+ /F1 11 0 R
+ >>
+>>
+endobj
+
+3 0 obj
+<<
+ /AP <<
+ /N 12 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 470.774
+ 421.2
+ 484.922
+ 540
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+4 0 obj
+<<
+ /AP <<
+ /N 14 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 330.774
+ 225.852
+ 470.374
+ 240
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+5 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 16 0 R
+ 17 0 R
+ 18 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+6 0 obj
+<<
+ /AP <<
+ /N 19 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 470.774
+ 421.2
+ 484.922
+ 540
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+7 0 obj
+<<
+ /AP <<
+ /N 21 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 330.774
+ 225.852
+ 470.374
+ 240
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+8 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 23 0 R
+ 24 0 R
+ 25 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+9 0 obj
+<<
+ /Names [
+ (attachment1.txt)
+ 26 0 R
+ ]
+>>
+endobj
+
+10 0 obj
+<<
+ /Count 4
+ /Kids [
+ 27 0 R
+ 28 0 R
+ 29 0 R
+ 30 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+11 0 obj
+<<
+ /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+12 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 13 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+13 0 obj
+53
+endobj
+
+14 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 15 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+15 0 obj
+55
+endobj
+
+16 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 31 0 R
+ /Off 33 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 648.501
+ 447.199
+ 660.549
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+17 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 36 0 R
+ /Off 38 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 627.301
+ 447.199
+ 639.349
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+18 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 40 0 R
+ /Off 42 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 5 0 R
+ /Rect [
+ 606.501
+ 448.549
+ 618.549
+ 460.601
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+19 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 20 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+20 0 obj
+53
+endobj
+
+21 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 22 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+22 0 obj
+55
+endobj
+
+23 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 44 0 R
+ /Off 46 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 8 0 R
+ /Rect [
+ 648.501
+ 447.199
+ 660.549
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+24 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 48 0 R
+ /Off 50 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 8 0 R
+ /Rect [
+ 627.301
+ 447.199
+ 639.349
+ 459.251
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+25 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 52 0 R
+ /Off 54 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 8 0 R
+ /Rect [
+ 606.501
+ 448.549
+ 618.549
+ 460.601
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+26 0 obj
+<<
+ /EF <<
+ /F 56 0 R
+ /UF 56 0 R
+ >>
+ /F (attachment1.txt)
+ /Type /Filespec
+ /UF (attachment1.txt)
+>>
+endobj
+
+%% Page 1
+27 0 obj
+<<
+ /Annots [
+ 58 0 R
+ 3 0 R
+ 59 0 R
+ 4 0 R
+ 60 0 R
+ 61 0 R
+ 62 0 R
+ 63 0 R
+ 16 0 R
+ 17 0 R
+ 18 0 R
+ ]
+ /Contents [
+ 64 0 R
+ 66 0 R
+ 68 0 R
+ ]
+ /MediaBox [
+ 0
+ 0
+ 792
+ 612
+ ]
+ /Parent 10 0 R
+ /Resources 2 0 R
+ /Type /Page
+>>
+endobj
+
+%% Page 2
+28 0 obj
+<<
+ /Annots [
+ 70 0 R
+ 71 0 R
+ 72 0 R
+ 73 0 R
+ 74 0 R
+ 75 0 R
+ 6 0 R
+ 7 0 R
+ 23 0 R
+ 24 0 R
+ 25 0 R
+ ]
+ /Contents [
+ 76 0 R
+ 78 0 R
+ 80 0 R
+ ]
+ /MediaBox [
+ 0
+ 0
+ 792
+ 612
+ ]
+ /Parent 10 0 R
+ /Resources <<
+ /Font <<
+ /F1 82 0 R
+ >>
+ /ProcSet 83 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 3
+29 0 obj
+<<
+ /Annots 84 0 R
+ /Contents 78 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 10 0 R
+ /Resources <<
+ /Font <<
+ /F1 82 0 R
+ >>
+ /ProcSet 83 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 4
+30 0 obj
+<<
+ /Annots 84 0 R
+ /Contents 78 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 10 0 R
+ /Resources <<
+ /Font <<
+ /F1 82 0 R
+ >>
+ /ProcSet 83 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+31 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 32 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+32 0 obj
+202
+endobj
+
+33 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 34 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+34 0 obj
+12
+endobj
+
+35 0 obj
+<<
+ /BaseFont /ZapfDingbats
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+36 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 37 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+37 0 obj
+202
+endobj
+
+38 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 39 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+39 0 obj
+12
+endobj
+
+40 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 41 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+41 0 obj
+202
+endobj
+
+42 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 43 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+43 0 obj
+12
+endobj
+
+44 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 45 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+45 0 obj
+202
+endobj
+
+46 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 47 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+47 0 obj
+12
+endobj
+
+48 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 49 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+49 0 obj
+202
+endobj
+
+50 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 51 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+51 0 obj
+12
+endobj
+
+52 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 53 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+53 0 obj
+202
+endobj
+
+54 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 55 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+55 0 obj
+12
+endobj
+
+56 0 obj
+<<
+ /Params <<
+ /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
+ /Size 22
+ /Subtype /text#2fplain
+ >>
+ /Type /EmbeddedFile
+ /Length 57 0 R
+>>
+stream
+content of attachment
+endstream
+endobj
+
+57 0 obj
+22
+endobj
+
+58 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 501.832
+ 237.6
+ 520.696
+ 540
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+59 0 obj
+<<
+ /AP <<
+ /N 86 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 26 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 400
+ 520
+ 420
+ 540
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+60 0 obj
+<<
+ /AP <<
+ /N 88 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 520
+ 360
+ 540
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+61 0 obj
+<<
+ /AP <<
+ /N 90 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 500
+ 370
+ 510
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+62 0 obj
+<<
+ /AP <<
+ /N 92 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 470
+ 360
+ 490
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+63 0 obj
+<<
+ /AP <<
+ /N 94 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 450
+ 370
+ 460
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 1
+64 0 obj
+<<
+ /Length 65 0 R
+>>
+stream
+q
+0 -1 1 0 0 612 cm
+endstream
+endobj
+
+65 0 obj
+20
+endobj
+
+%% Contents for page 1
+66 0 obj
+<<
+ /Length 67 0 R
+>>
+stream
+q
+1 1 .7 rg
+.5 .5 0 RG
+72 470.77 118.8 14.15 re
+B
+Q
+q
+0 .5 .5 RG
+0 1 1 rg
+372 330.77 14.15 139.4 re
+B
+Q
+q
+1 0 0 RG
+72 310 20 10 re
+72 310 5 10 re
+S
+0 1 0 RG
+102 310 10 20 re
+102 310 10 5 re
+S
+0 0 1 RG
+122 310 20 10 re
+137 310 5 10 re
+S
+0.5 0 1 RG
+152 310 10 20 re
+152 325 10 5 re
+S
+10 w
+0.14 .33 .18 RG
+5 5 602 782 re
+S
+Q
+BT
+ /F1 16 Tf
+ 20.6 TL
+ 170 650 Td
+ (radio button 1) Tj
+ (radio button 2) '
+ (radio button 3) '
+ 1 0 0 1 72 546 Tm
+ /F1 20 Tf
+ (Thick green border surrounds page.) Tj
+ 0 -40 Td
+ /F1 24 Tf
+ 0 0 1 rg
+ (https://www.qbilt.org) Tj
+ /F1 12 Tf
+ 1 0 0 1 202 474 Tm
+ (<- Formy field in yellow) Tj
+ 1 0 0 1 392 410 Tm
+ 14.4 TL
+ (<- Rot-ccw field) Tj
+ (with "Rot" at bottom) '
+ (and text going up) '
+ 0 g
+ 1 0 0 1 102 405 Tm
+ (Arrow to the left points down.) Tj
+ 1 0 0 1 182 310 Tm
+ (<- Drawn rectangles appear below annotations.) Tj
+ET
+endstream
+endobj
+
+67 0 obj
+874
+endobj
+
+%% Contents for page 1
+68 0 obj
+<<
+ /Length 69 0 R
+>>
+stream
+
+Q
+endstream
+endobj
+
+69 0 obj
+3
+endobj
+
+70 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 501.832
+ 237.6
+ 520.696
+ 540
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+71 0 obj
+<<
+ /AP <<
+ /N 96 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 26 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 400
+ 520
+ 420
+ 540
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+72 0 obj
+<<
+ /AP <<
+ /N 98 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 520
+ 360
+ 540
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+73 0 obj
+<<
+ /AP <<
+ /N 100 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 500
+ 370
+ 510
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+74 0 obj
+<<
+ /AP <<
+ /N 102 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 470
+ 360
+ 490
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+75 0 obj
+<<
+ /AP <<
+ /N 104 0 R
+ >>
+ /DA ()
+ /Rect [
+ 350
+ 450
+ 370
+ 460
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+%% Contents for page 2
+76 0 obj
+<<
+ /Length 77 0 R
+>>
+stream
+q
+0 -1 1 0 0 612 cm
+endstream
+endobj
+
+77 0 obj
+20
+endobj
+
+%% Contents for page 4
+78 0 obj
+<<
+ /Length 79 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato) Tj
+ET
+endstream
+endobj
+
+79 0 obj
+44
+endobj
+
+%% Contents for page 2
+80 0 obj
+<<
+ /Length 81 0 R
+>>
+stream
+
+Q
+endstream
+endobj
+
+81 0 obj
+3
+endobj
+
+82 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+83 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+84 0 obj
+[
+ 106 0 R
+ 107 0 R
+ 108 0 R
+ 109 0 R
+ 110 0 R
+ 111 0 R
+ 112 0 R
+ 113 0 R
+ 114 0 R
+ 115 0 R
+ 116 0 R
+]
+endobj
+
+85 0 obj
+<<
+ /Font 117 0 R
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+>>
+endobj
+
+86 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 87 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+87 0 obj
+52
+endobj
+
+88 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 89 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+89 0 obj
+36
+endobj
+
+90 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 91 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+91 0 obj
+36
+endobj
+
+92 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -0
+ 1
+ -1
+ 0
+ 0
+ -612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 93 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+93 0 obj
+36
+endobj
+
+94 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ -0
+ 0
+ -1
+ 612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 95 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+95 0 obj
+38
+endobj
+
+96 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 97 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+97 0 obj
+52
+endobj
+
+98 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 99 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+99 0 obj
+36
+endobj
+
+100 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 1
+ 0
+ 0
+ 1
+ -612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 101 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+101 0 obj
+36
+endobj
+
+102 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -0
+ 1
+ -1
+ 0
+ 0
+ -612
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 103 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+103 0 obj
+36
+endobj
+
+104 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ -0
+ 0
+ -1
+ 612
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 105 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+105 0 obj
+38
+endobj
+
+106 0 obj
+<<
+ /A <<
+ /S /URI
+ /URI (https://www.qbilt.org/)
+ >>
+ /Border [
+ 0
+ 0
+ .4
+ ]
+ /C [
+ .8
+ .6
+ .6
+ ]
+ /H /I
+ /Rect [
+ 72
+ 501.832
+ 374.4
+ 520.696
+ ]
+ /Subtype /Link
+ /Type /Annot
+>>
+endobj
+
+107 0 obj
+<<
+ /AP <<
+ /N 118 0 R
+ >>
+ /Contents (attachment1.txt)
+ /FS 26 0 R
+ /NM (attachment1.txt)
+ /Rect [
+ 72
+ 400
+ 92
+ 420
+ ]
+ /Subtype /FileAttachment
+ /Type /Annot
+>>
+endobj
+
+108 0 obj
+<<
+ /AP <<
+ /N 120 0 R
+ >>
+ /DA ()
+ /Rect [
+ 72
+ 350
+ 92
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+109 0 obj
+<<
+ /AP <<
+ /N 122 0 R
+ >>
+ /DA ()
+ /Rect [
+ 102
+ 350
+ 112
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+110 0 obj
+<<
+ /AP <<
+ /N 124 0 R
+ >>
+ /DA ()
+ /Rect [
+ 122
+ 350
+ 142
+ 360
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+111 0 obj
+<<
+ /AP <<
+ /N 126 0 R
+ >>
+ /DA ()
+ /Rect [
+ 152
+ 350
+ 162
+ 370
+ ]
+ /Subtype /FreeText
+ /Type /Annot
+>>
+endobj
+
+112 0 obj
+<<
+ /AP <<
+ /N 128 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 72
+ 470.774
+ 190.8
+ 484.922
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Formy field)
+>>
+endobj
+
+113 0 obj
+<<
+ /AP <<
+ /N 130 0 R
+ >>
+ /DA (0 0.4 0 rg /F1 18 Tf)
+ /DR 2 0 R
+ /DV ()
+ /FT /Tx
+ /Ff 0
+ /Rect [
+ 372
+ 330.774
+ 386.148
+ 470.374
+ ]
+ /Subtype /Widget
+ /T (Text Box 1)
+ /Type /Annot
+ /V (Rot-ccw field)
+>>
+endobj
+
+114 0 obj
+<<
+ /AP <<
+ /N <<
+ /1 132 0 R
+ /Off 134 0 R
+ >>
+ >>
+ /AS /1
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 136 0 R
+ /Rect [
+ 152.749
+ 648.501
+ 164.801
+ 660.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+115 0 obj
+<<
+ /AP <<
+ /N <<
+ /2 137 0 R
+ /Off 139 0 R
+ >>
+ >>
+ /AS /2
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 136 0 R
+ /Rect [
+ 152.749
+ 627.301
+ 164.801
+ 639.349
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+116 0 obj
+<<
+ /AP <<
+ /N <<
+ /3 141 0 R
+ /Off 143 0 R
+ >>
+ >>
+ /AS /3
+ /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
+ /DR <<
+ /Font <<
+ /ZaDi 35 0 R
+ >>
+ >>
+ /F 4
+ /FT /Btn
+ /MK <<
+ /CA (l)
+ >>
+ /Parent 136 0 R
+ /Rect [
+ 151.399
+ 606.501
+ 163.451
+ 618.549
+ ]
+ /Subtype /Widget
+ /Type /Annot
+>>
+endobj
+
+117 0 obj
+<<
+ /ZaDi 35 0 R
+>>
+endobj
+
+118 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 20
+ ]
+ /Resources <<
+ >>
+ /Subtype /Form
+ /Type /XObject
+ /Length 119 0 R
+>>
+stream
+0 10 m
+10 0 l
+20 10 l
+10 0 m
+10 20 l
+0 0 20 20 re
+S
+endstream
+endobj
+
+119 0 obj
+52
+endobj
+
+120 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 121 0 R
+>>
+stream
+1 0 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+121 0 obj
+36
+endobj
+
+122 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 123 0 R
+>>
+stream
+0 1 0 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+123 0 obj
+36
+endobj
+
+124 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ -1
+ 0
+ 0
+ -1
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 125 0 R
+>>
+stream
+0 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+125 0 obj
+36
+endobj
+
+126 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 20
+ 10
+ ]
+ /Matrix [
+ 0
+ -1
+ 1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 127 0 R
+>>
+stream
+0.5 0 1 RG
+0 0 20 10 re
+0 0 5 10 re
+S
+endstream
+endobj
+
+127 0 obj
+38
+endobj
+
+128 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 118.8
+ 11.322
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 129 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Formy field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+129 0 obj
+53
+endobj
+
+130 0 obj
+<<
+ /BBox [
+ 0
+ -2.826
+ 140.4
+ 11.322
+ ]
+ /Matrix [
+ 0
+ 1
+ -1
+ 0
+ 0
+ 0
+ ]
+ /Resources 2 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 131 0 R
+>>
+stream
+/Tx BMC
+q
+BT
+ /F1 18 Tf
+ (Rot-ccw field) Tj
+ET
+Q
+EMC
+endstream
+endobj
+
+131 0 obj
+55
+endobj
+
+132 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 133 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+1 0 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+133 0 obj
+202
+endobj
+
+134 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 135 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+135 0 obj
+12
+endobj
+
+136 0 obj
+<<
+ /DV /1
+ /FT /Btn
+ /Ff 49152
+ /Kids [
+ 114 0 R
+ 115 0 R
+ 116 0 R
+ ]
+ /T (r1)
+ /V /2
+>>
+endobj
+
+137 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 138 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 1 0 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+138 0 obj
+202
+endobj
+
+139 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 140 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+140 0 obj
+12
+endobj
+
+141 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 142 0 R
+>>
+stream
+/Tx BMC
+q BT
+0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
+0 0 Td
+ET
+Q
+0 0 1 rg
+6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
+8.45 4.65 7.35 3.55 6 3.55 c
+4.65 3.55 3.6 4.65 3.6 6 c
+3.6 7.35 4.65 8.4 6 8.4 c f*
+
+EMC
+endstream
+endobj
+
+142 0 obj
+202
+endobj
+
+143 0 obj
+<<
+ /BBox [
+ 0
+ 0
+ 12.05
+ 12.05
+ ]
+ /Resources 85 0 R
+ /Subtype /Form
+ /Type /XObject
+ /Length 144 0 R
+>>
+stream
+/Tx BMC
+EMC
+endstream
+endobj
+
+144 0 obj
+12
+endobj
+
+xref
+0 145
+0000000000 65535 f
+0000000025 00000 n
+0000000248 00000 n
+0000000301 00000 n
+0000000546 00000 n
+0000000795 00000 n
+0000000914 00000 n
+0000001159 00000 n
+0000001408 00000 n
+0000001527 00000 n
+0000001597 00000 n
+0000001704 00000 n
+0000001809 00000 n
+0000002079 00000 n
+0000002099 00000 n
+0000002371 00000 n
+0000002391 00000 n
+0000002743 00000 n
+0000003095 00000 n
+0000003447 00000 n
+0000003717 00000 n
+0000003737 00000 n
+0000004009 00000 n
+0000004029 00000 n
+0000004381 00000 n
+0000004733 00000 n
+0000005085 00000 n
+0000005226 00000 n
+0000005541 00000 n
+0000005915 00000 n
+0000006139 00000 n
+0000006353 00000 n
+0000006767 00000 n
+0000006788 00000 n
+0000007012 00000 n
+0000007032 00000 n
+0000007113 00000 n
+0000007527 00000 n
+0000007548 00000 n
+0000007772 00000 n
+0000007792 00000 n
+0000008206 00000 n
+0000008227 00000 n
+0000008451 00000 n
+0000008471 00000 n
+0000008885 00000 n
+0000008906 00000 n
+0000009130 00000 n
+0000009150 00000 n
+0000009564 00000 n
+0000009585 00000 n
+0000009809 00000 n
+0000009829 00000 n
+0000010243 00000 n
+0000010264 00000 n
+0000010488 00000 n
+0000010508 00000 n
+0000010716 00000 n
+0000010736 00000 n
+0000010981 00000 n
+0000011187 00000 n
+0000011329 00000 n
+0000011471 00000 n
+0000011613 00000 n
+0000011778 00000 n
+0000011855 00000 n
+0000011898 00000 n
+0000012829 00000 n
+0000012873 00000 n
+0000012933 00000 n
+0000012952 00000 n
+0000013197 00000 n
+0000013403 00000 n
+0000013545 00000 n
+0000013688 00000 n
+0000013831 00000 n
+0000013997 00000 n
+0000014074 00000 n
+0000014117 00000 n
+0000014218 00000 n
+0000014261 00000 n
+0000014321 00000 n
+0000014340 00000 n
+0000014459 00000 n
+0000014495 00000 n
+0000014626 00000 n
+0000014701 00000 n
+0000014960 00000 n
+0000014980 00000 n
+0000015221 00000 n
+0000015241 00000 n
+0000015482 00000 n
+0000015502 00000 n
+0000015745 00000 n
+0000015765 00000 n
+0000016010 00000 n
+0000016030 00000 n
+0000016289 00000 n
+0000016309 00000 n
+0000016550 00000 n
+0000016570 00000 n
+0000016813 00000 n
+0000016834 00000 n
+0000017079 00000 n
+0000017100 00000 n
+0000017347 00000 n
+0000017368 00000 n
+0000017613 00000 n
+0000017819 00000 n
+0000017961 00000 n
+0000018105 00000 n
+0000018249 00000 n
+0000018393 00000 n
+0000018640 00000 n
+0000018892 00000 n
+0000019249 00000 n
+0000019606 00000 n
+0000019963 00000 n
+0000020002 00000 n
+0000020208 00000 n
+0000020229 00000 n
+0000020417 00000 n
+0000020438 00000 n
+0000020679 00000 n
+0000020700 00000 n
+0000020942 00000 n
+0000020963 00000 n
+0000021206 00000 n
+0000021227 00000 n
+0000021444 00000 n
+0000021465 00000 n
+0000021737 00000 n
+0000021758 00000 n
+0000022119 00000 n
+0000022141 00000 n
+0000022312 00000 n
+0000022333 00000 n
+0000022457 00000 n
+0000022818 00000 n
+0000022840 00000 n
+0000023011 00000 n
+0000023032 00000 n
+0000023393 00000 n
+0000023415 00000 n
+0000023586 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 145
+ /ID [<a2f146daeb6d814a742556489dab9882><31415926535897932384626433832795>]
+>>
+startxref
+23607
+%%EOF