Version Description
- New: Live preview of PDF document on the settings page
- Fix: checks if number store table exists before applying DB migration
- Tweak: Remove i18n for some log strings
- Marked tested up to WooCommerce 6.3
Download this release
Release Info
Developer | pomegranate |
Plugin | WooCommerce PDF Invoices & Packing Slips |
Version | 2.14.0 |
Comparing to | |
See all releases |
Code changes from version 2.13.1 to 2.14.0
- assets/css/settings-styles.css +680 -20
- assets/css/settings-styles.min.css +1 -1
- assets/images/reset-input.svg +4 -0
- assets/js/admin-script.js +507 -27
- assets/js/admin-script.min.js +1 -1
- assets/js/media-upload.js +12 -8
- assets/js/media-upload.min.js +1 -1
- assets/js/pdf_js/pdf.js +14618 -0
- assets/js/pdf_js/pdf.sandbox.js +245 -0
assets/css/settings-styles.css
CHANGED
@@ -9,8 +9,7 @@ span.wpo-warning {
|
|
9 |
Â
position: relative;
|
10 |
Â
min-height: 90px;
|
11 |
Â
border: 1px solid #3D5C99;
|
12 |
-
background-color: #EBF5FF;
|
13 |
-
border-radius: 5px;
|
14 |
Â
padding: 15px;
|
15 |
Â
padding-left: 100px;
|
16 |
Â
margin-top: 15px;
|
@@ -31,17 +30,17 @@ img.wpo-helper {
|
|
31 |
Â
margin-left: 1.5em;
|
32 |
Â
}
|
33 |
Â
|
34 |
-
.extensions li {
|
35 |
Â
margin: 0;
|
36 |
Â
}
|
37 |
Â
|
38 |
-
.extensions li ul {
|
39 |
Â
list-style-type: square;
|
40 |
Â
margin-top: 0.5em;
|
41 |
Â
margin-bottom: 0.5em;
|
42 |
Â
}
|
43 |
Â
|
44 |
-
.extensions > li:before {
|
45 |
Â
content: "";
|
46 |
Â
border-color: transparent transparent transparent #111;
|
47 |
Â
border-style: solid;
|
@@ -54,24 +53,24 @@ img.wpo-helper {
|
|
54 |
Â
position: relative;
|
55 |
Â
}
|
56 |
Â
|
57 |
-
.extensions li:not(.expanded) {
|
58 |
Â
cursor:pointer;
|
59 |
Â
}
|
60 |
Â
|
61 |
-
.extensions .expanded:before {
|
62 |
Â
border-color: #111 transparent transparent transparent;
|
63 |
Â
left: -1.17em;
|
64 |
Â
border-width: 0.45em 0.45em 0.35em 0.35em !important;
|
65 |
Â
}
|
66 |
Â
|
67 |
-
.extensions .more {
|
68 |
Â
padding: 10px;
|
69 |
Â
background-color: white;
|
70 |
Â
border: 1px solid #ccc;
|
71 |
Â
border-radius: 5px;
|
72 |
Â
}
|
73 |
Â
|
74 |
-
.extensions table td {
|
75 |
Â
vertical-align: top;
|
76 |
Â
}
|
77 |
Â
|
@@ -88,11 +87,12 @@ img.wpo-helper {
|
|
88 |
Â
#img-header_logo {
|
89 |
Â
max-height: 200px;
|
90 |
Â
width: auto;
|
Â
|
|
91 |
Â
}
|
92 |
Â
|
93 |
Â
.multiple-text-input label {
|
94 |
-
|
95 |
-
|
96 |
Â
}
|
97 |
Â
|
98 |
Â
table.wcpdf_documents_settings_list {
|
@@ -123,20 +123,75 @@ table.wcpdf_documents_settings_list td.title {
|
|
123 |
Â
}
|
124 |
Â
|
125 |
Â
.wcpdf_document_settings_sections {
|
126 |
-
margin-
|
127 |
-
|
128 |
Â
}
|
129 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
130 |
Â
.wcpdf_document_settings_sections ul {
|
131 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
132 |
Â
}
|
133 |
-
|
134 |
-
|
Â
|
|
135 |
Â
}
|
136 |
-
|
137 |
-
|
138 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
139 |
Â
color: black;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
140 |
Â
}
|
141 |
Â
|
142 |
Â
.edit-next-number {
|
@@ -146,3 +201,608 @@ table.wcpdf_documents_settings_list td.title {
|
|
146 |
Â
opacity:1;
|
147 |
Â
cursor:pointer;
|
148 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
9 |
Â
position: relative;
|
10 |
Â
min-height: 90px;
|
11 |
Â
border: 1px solid #3D5C99;
|
12 |
+
background-color: #EBF5FF;
|
Â
|
|
13 |
Â
padding: 15px;
|
14 |
Â
padding-left: 100px;
|
15 |
Â
margin-top: 15px;
|
30 |
Â
margin-left: 1.5em;
|
31 |
Â
}
|
32 |
Â
|
33 |
+
.wcpdf-extensions li {
|
34 |
Â
margin: 0;
|
35 |
Â
}
|
36 |
Â
|
37 |
+
.wcpdf-extensions li ul {
|
38 |
Â
list-style-type: square;
|
39 |
Â
margin-top: 0.5em;
|
40 |
Â
margin-bottom: 0.5em;
|
41 |
Â
}
|
42 |
Â
|
43 |
+
.wcpdf-extensions > li:before {
|
44 |
Â
content: "";
|
45 |
Â
border-color: transparent transparent transparent #111;
|
46 |
Â
border-style: solid;
|
53 |
Â
position: relative;
|
54 |
Â
}
|
55 |
Â
|
56 |
+
.wcpdf-extensions li:not(.expanded) {
|
57 |
Â
cursor:pointer;
|
58 |
Â
}
|
59 |
Â
|
60 |
+
.wcpdf-extensions .expanded:before {
|
61 |
Â
border-color: #111 transparent transparent transparent;
|
62 |
Â
left: -1.17em;
|
63 |
Â
border-width: 0.45em 0.45em 0.35em 0.35em !important;
|
64 |
Â
}
|
65 |
Â
|
66 |
+
.wcpdf-extensions .more {
|
67 |
Â
padding: 10px;
|
68 |
Â
background-color: white;
|
69 |
Â
border: 1px solid #ccc;
|
70 |
Â
border-radius: 5px;
|
71 |
Â
}
|
72 |
Â
|
73 |
+
.wcpdf-extensions table td {
|
74 |
Â
vertical-align: top;
|
75 |
Â
}
|
76 |
Â
|
87 |
Â
#img-header_logo {
|
88 |
Â
max-height: 200px;
|
89 |
Â
width: auto;
|
90 |
+
max-width: 100%;
|
91 |
Â
}
|
92 |
Â
|
93 |
Â
.multiple-text-input label {
|
94 |
+
min-width: 120px;
|
95 |
+
display: inline-block;
|
96 |
Â
}
|
97 |
Â
|
98 |
Â
table.wcpdf_documents_settings_list {
|
123 |
Â
}
|
124 |
Â
|
125 |
Â
.wcpdf_document_settings_sections {
|
126 |
+
margin-bottom: 40px;
|
127 |
+
position: relative;
|
128 |
Â
}
|
129 |
+
|
130 |
+
.wcpdf_document_settings_sections > h2 {
|
131 |
+
cursor: pointer;
|
132 |
+
padding: 1em 0.8em;
|
133 |
+
margin: 0;
|
134 |
+
border: 1px solid #eaeaea;
|
135 |
+
}
|
136 |
+
|
137 |
Â
.wcpdf_document_settings_sections ul {
|
138 |
+
background: white;
|
139 |
+
list-style: none;
|
140 |
+
margin: 0;
|
141 |
+
padding: 0;
|
142 |
+
width: 100%;
|
143 |
+
display: block;
|
144 |
+
height: auto;
|
145 |
+
display: none;
|
146 |
+
box-sizing: border-box;
|
147 |
+
position: absolute;
|
148 |
+
border-left: 1px solid #eaeaea;
|
149 |
+
border-right: 1px solid #eaeaea;
|
150 |
+
z-index: 1000;
|
151 |
+
box-shadow: 0 35px 35px -8px rgba(0, 0, 0, 0.1);
|
152 |
+
-webkit-box-shadow: 0 35px 35px -8px rgba(0, 0, 0, 0.1);
|
153 |
Â
}
|
154 |
+
|
155 |
+
.wcpdf_document_settings_sections ul.active {
|
156 |
+
display: block;
|
157 |
Â
}
|
158 |
+
|
159 |
+
.wcpdf_document_settings_sections ul li {
|
160 |
+
box-sizing: border-box;
|
161 |
+
padding: 0;
|
162 |
+
margin-bottom: 0;
|
163 |
+
border-bottom: 1px solid #eaeaea;
|
164 |
+
font-size: 1.1em;
|
165 |
+
}
|
166 |
+
|
167 |
+
.wcpdf_document_settings_sections ul li:hover {
|
168 |
+
cursor: pointer;
|
169 |
+
background: #51266b;
|
170 |
+
color: white;
|
171 |
+
}
|
172 |
+
|
173 |
+
.wcpdf_document_settings_sections ul li:hover a {
|
174 |
+
color: white;
|
175 |
+
}
|
176 |
+
|
177 |
+
.wcpdf_document_settings_sections ul li a {
|
178 |
Â
color: black;
|
179 |
+
text-decoration: none;
|
180 |
+
padding: 1.2em 1.6em;
|
181 |
+
display: block;
|
182 |
+
}
|
183 |
+
|
184 |
+
.wcpdf_document_settings_sections .arrow-down {
|
185 |
+
font-size: 0.7em;
|
186 |
+
color: #999;
|
187 |
+
margin-left: 8px;
|
188 |
+
font-weight: normal;
|
189 |
+
float: right;
|
190 |
+
}
|
191 |
+
|
192 |
+
.wcpdf_document_settings_sections p:hover,
|
193 |
+
.wcpdf_document_settings_sections p:hover > .arrow-down {
|
194 |
+
color: #222;
|
195 |
Â
}
|
196 |
Â
|
197 |
Â
.edit-next-number {
|
201 |
Â
opacity:1;
|
202 |
Â
cursor:pointer;
|
203 |
Â
}
|
204 |
+
|
205 |
+
/* Preview */
|
206 |
+
|
207 |
+
body.woocommerce_page_wpo_wcpdf_options_page {
|
208 |
+
background: #fff;
|
209 |
+
}
|
210 |
+
|
211 |
+
.wrap [class$="icon32"] + h2 {
|
212 |
+
font-size: 18px;
|
213 |
+
padding: 1em;
|
214 |
+
}
|
215 |
+
|
216 |
+
.wrap .notice {
|
217 |
+
margin: 15px 0 0;
|
218 |
+
}
|
219 |
+
|
220 |
+
.nav-tab-wrapper a.nav-tab {
|
221 |
+
background: transparent;
|
222 |
+
border: none;
|
223 |
+
border-bottom: 3px solid transparent;
|
224 |
+
padding: 1em 0em;
|
225 |
+
margin: 0 1.2em;
|
226 |
+
font-size: 15px;
|
227 |
+
}
|
228 |
+
|
229 |
+
.nav-tab-wrapper a.nav-tab.nav-tab-active {
|
230 |
+
border-bottom: 3px solid #51266b;
|
231 |
+
}
|
232 |
+
|
233 |
+
#wpo-wcpdf-preview-wrapper {
|
234 |
+
width: 100%;
|
235 |
+
height: auto;
|
236 |
+
position: relative;
|
237 |
+
display: flex;
|
238 |
+
align-items: flex-start;
|
239 |
+
}
|
240 |
+
|
241 |
+
#wpo-wcpdf-preview-wrapper .sidebar,
|
242 |
+
#wpo-wcpdf-preview-wrapper .preview-document {
|
243 |
+
transition: .3s ease-in-out;
|
244 |
+
}
|
245 |
+
|
246 |
+
#wpo-wcpdf-preview-wrapper .sidebar {
|
247 |
+
height: auto;
|
248 |
+
padding: 4em 0 0 0;
|
249 |
+
box-sizing: border-box;
|
250 |
+
background: transparent;
|
251 |
+
flex: 0 0 35%;
|
252 |
+
overflow-x: hidden;
|
253 |
+
}
|
254 |
+
|
255 |
+
#wpo-wcpdf-preview-wrapper .sidebar > form {
|
256 |
+
background: white;
|
257 |
+
overflow: visible;
|
258 |
+
padding: 0;
|
259 |
+
margin-left: 2em;
|
260 |
+
box-sizing: border-box;
|
261 |
+
width: calc(100% - 4em);
|
262 |
+
max-width: 50vw;
|
263 |
+
}
|
264 |
+
|
265 |
+
#wpo-wcpdf-preview-wrapper .sidebar > form.editor {
|
266 |
+
max-width: none;
|
267 |
+
}
|
268 |
+
|
269 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table,
|
270 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr,
|
271 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > th,
|
272 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td,
|
273 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody,
|
274 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr,
|
275 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > th,
|
276 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td {
|
277 |
+
display: block;
|
278 |
+
width: 100%;
|
279 |
+
padding: 0;
|
280 |
+
}
|
281 |
+
|
282 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > th,
|
283 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > th {
|
284 |
+
padding-bottom: 0.6em;
|
285 |
+
}
|
286 |
+
|
287 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td,
|
288 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td {
|
289 |
+
padding-bottom: 2.4em;
|
290 |
+
}
|
291 |
+
|
292 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td > p.description,
|
293 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td p.description {
|
294 |
+
font-size: 0.85em;
|
295 |
+
padding-top: 0.7em;
|
296 |
+
}
|
297 |
+
|
298 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td > input[type="text"],
|
299 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td > input[type="text"],
|
300 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td > select,
|
301 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td > select,
|
302 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td > textarea,
|
303 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td > textarea {
|
304 |
+
max-width: none;
|
305 |
+
width: 100%;
|
306 |
+
}
|
307 |
+
|
308 |
+
#wpo-wcpdf-preview-wrapper input[type="text"][size] {
|
309 |
+
width: auto !important;
|
310 |
+
max-width: 100% !important;
|
311 |
+
}
|
312 |
+
|
313 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td > input#next_invoice_number {
|
314 |
+
width: auto !important;
|
315 |
+
}
|
316 |
+
|
317 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table,
|
318 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table,
|
319 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table {
|
320 |
+
display: table;
|
321 |
+
}
|
322 |
+
|
323 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table tbody,
|
324 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table tbody,
|
325 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table tbody {
|
326 |
+
display: table-row-group;
|
327 |
+
}
|
328 |
+
|
329 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table tr,
|
330 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table tr,
|
331 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table tr,
|
332 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table tbody tr,
|
333 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table tbody tr,
|
334 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table tbody tr {
|
335 |
+
display: table-row;
|
336 |
+
}
|
337 |
+
|
338 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table > tbody > tr > th,
|
339 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table > tbody > tr > td,
|
340 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table > tbody > tr > th,
|
341 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table > tbody > tr > td,
|
342 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table > tbody > tr > th,
|
343 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table > tbody > tr > td {
|
344 |
+
display: table-cell;
|
345 |
+
padding: 15px 10px 15px 0px;
|
346 |
+
width: auto;
|
347 |
+
}
|
348 |
+
|
349 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table > tbody > tr > th,
|
350 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar .form-table > tbody > tr > th,
|
351 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar .form-table > tbody > tr > th {
|
352 |
+
width: 300px !important;
|
353 |
+
}
|
354 |
+
|
355 |
+
/* WPML */
|
356 |
+
|
357 |
+
#wpo-wcpdf-settings .form-table .ui-tabs-nav {
|
358 |
+
padding-left: 0!important;
|
359 |
+
margin-left: 0!important;
|
360 |
+
}
|
361 |
+
|
362 |
+
#wpo-wcpdf-settings .translations input,
|
363 |
+
#wpo-wcpdf-settings .translations textarea {
|
364 |
+
width: 100%;
|
365 |
+
}
|
366 |
+
|
367 |
+
#wpo-wcpdf-settings .wcpdf-attachment-settings-hint {
|
368 |
+
border-left: 4px solid #51266b;
|
369 |
+
}
|
370 |
+
|
371 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar {
|
372 |
+
flex: 0 0 100%;
|
373 |
+
}
|
374 |
+
|
375 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .sidebar {
|
376 |
+
flex: 0 0 95%;
|
377 |
+
}
|
378 |
+
|
379 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="full"] .sidebar {
|
380 |
+
flex: 0 0 95%;
|
381 |
+
margin-left: -95%;
|
382 |
+
}
|
383 |
+
|
384 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .sidebar {
|
385 |
+
flex: 0 0 95%;
|
386 |
+
}
|
387 |
+
|
388 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="sidebar"] .sidebar {
|
389 |
+
flex: 0 0 35%;
|
390 |
+
}
|
391 |
+
|
392 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="full"] .sidebar {
|
393 |
+
margin-left: -35%;
|
394 |
+
}
|
395 |
+
|
396 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state="full"] .sidebar {
|
397 |
+
transition-delay: .4s;
|
398 |
+
}
|
399 |
+
|
400 |
+
#wpo-wcpdf-preview-wrapper .preview-document {
|
401 |
+
padding: 0;
|
402 |
+
box-sizing: border-box;
|
403 |
+
position: sticky;
|
404 |
+
top: 2.4em;
|
405 |
+
flex: 0 0 60%;
|
406 |
+
}
|
407 |
+
|
408 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .preview-document {
|
409 |
+
display: none;
|
410 |
+
}
|
411 |
+
|
412 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .preview-document {
|
413 |
+
display: none;
|
414 |
+
}
|
415 |
+
|
416 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="full"] .preview-document {
|
417 |
+
flex: 0 0 95%;
|
418 |
+
}
|
419 |
+
|
420 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .preview-document {
|
421 |
+
flex: 0 0 60%;
|
422 |
+
margin-right: -60%;
|
423 |
+
}
|
424 |
+
|
425 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="sidebar"] .preview-document {
|
426 |
+
flex: 0 0 60%;
|
427 |
+
}
|
428 |
+
|
429 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="full"] .preview-document {
|
430 |
+
flex: 0 0 95%;
|
431 |
+
}
|
432 |
+
|
433 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state="full"] .preview-document {
|
434 |
+
transition-delay: .4s;
|
435 |
+
}
|
436 |
+
|
437 |
+
.preview-document .preview {
|
438 |
+
width: 100%;
|
439 |
+
box-sizing: border-box;
|
440 |
+
padding-right: 5%;
|
441 |
+
}
|
442 |
+
|
443 |
+
.preview-document .preview > #preview-canvas {
|
444 |
+
display: block;
|
445 |
+
max-width: 800px;
|
446 |
+
max-height: 85vh;
|
447 |
+
width: auto!important;
|
448 |
+
margin: 0 auto;
|
449 |
+
background: white;
|
450 |
+
box-shadow: 0 0 35px -8px rgba(0, 0, 0, 0.12);
|
451 |
+
-webkit-box-shadow: 0 0 35px -8px rgba(0, 0, 0, 0.12);
|
452 |
+
}
|
453 |
+
|
454 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"] #preview-canvas {
|
455 |
+
max-height: 170vh;
|
456 |
+
}
|
457 |
+
|
458 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state="sidebar"] #preview-canvas {
|
459 |
+
max-height: 170vh;
|
460 |
+
transition: max-height .4s ease-in-out .3s;
|
461 |
+
}
|
462 |
+
|
463 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state="full"] #preview-canvas {
|
464 |
+
transition: max-height .4s ease-in-out 0s;
|
465 |
+
}
|
466 |
+
|
467 |
+
.preview-document .preview-data-wrapper {
|
468 |
+
width: 100%;
|
469 |
+
height: 4em;
|
470 |
+
}
|
471 |
+
|
472 |
+
.preview-document .preview-data-wrapper .preview-order-data,
|
473 |
+
.preview-document .preview-data-wrapper .preview-document-type {
|
474 |
+
float: right;
|
475 |
+
}
|
476 |
+
|
477 |
+
.preview-document .preview-data-wrapper .preview-document-type {
|
478 |
+
margin-right: 30px;
|
479 |
+
}
|
480 |
+
|
481 |
+
.preview-document .preview-data-wrapper .preview-document-type ul > li {
|
482 |
+
text-decoration: none;
|
483 |
+
color: initial;
|
484 |
+
padding: 1.4em 1.6em;
|
485 |
+
}
|
486 |
+
|
487 |
+
.preview-document .preview-data-wrapper .preview-document-type ul > li:hover {
|
488 |
+
color: white !important;
|
489 |
+
}
|
490 |
+
|
491 |
+
.preview-document .preview-data p {
|
492 |
+
padding: 1.4em 0;
|
493 |
+
margin: 0;
|
494 |
+
color: #666;
|
495 |
+
text-align: right;
|
496 |
+
cursor: pointer;
|
497 |
+
font-weight: lighter;
|
498 |
+
float: right;
|
499 |
+
}
|
500 |
+
|
501 |
+
.preview-document .preview-data p.order-search {
|
502 |
+
display: none;
|
503 |
+
}
|
504 |
+
|
505 |
+
.preview-document .preview-data input {
|
506 |
+
float: right;
|
507 |
+
margin: 1em 0 0 1em;
|
508 |
+
padding: 0.1em 0.5em;
|
509 |
+
width: 20ch;
|
510 |
+
margin-right: -25ch;
|
511 |
+
display: none;
|
512 |
+
}
|
513 |
+
|
514 |
+
.preview-document .preview-data input.active {
|
515 |
+
margin-right: 0;
|
516 |
+
display: inline-block;
|
517 |
+
}
|
518 |
+
|
519 |
+
.preview-document .preview-data ul {
|
520 |
+
position: absolute;
|
521 |
+
right: 0;
|
522 |
+
top: 4em;
|
523 |
+
background: white;
|
524 |
+
box-shadow: 0 0 25px -10px rgba(0,0,0,0.2);
|
525 |
+
-webkit-box-shadow: 0 0 25px -10px rgba(0,0,0,0.2);
|
526 |
+
list-style: none;
|
527 |
+
margin: 0;
|
528 |
+
padding: 0;
|
529 |
+
min-width: 24em;
|
530 |
+
display: block;
|
531 |
+
height: 0;
|
532 |
+
overflow: hidden;
|
533 |
+
}
|
534 |
+
|
535 |
+
.preview-document .preview-data ul.active {
|
536 |
+
height: auto;
|
537 |
+
z-index: 1;
|
538 |
+
}
|
539 |
+
|
540 |
+
.preview-document .preview-data ul li {
|
541 |
+
box-sizing: border-box;
|
542 |
+
padding: 0;
|
543 |
+
margin-bottom: 0;
|
544 |
+
border-bottom: 1px solid #eaeaea;
|
545 |
+
font-size: 1.1em;
|
546 |
+
}
|
547 |
+
|
548 |
+
.preview-document .preview-data ul li:hover {
|
549 |
+
cursor: pointer;
|
550 |
+
background: #51266b;
|
551 |
+
color: white;
|
552 |
+
}
|
553 |
+
|
554 |
+
.preview-document .preview-data ul li a,
|
555 |
+
.preview-document .preview-data.preview-order-data ul li {
|
556 |
+
display: block;
|
557 |
+
padding: 1.4em 1.6em;
|
558 |
+
}
|
559 |
+
|
560 |
+
.preview-document .preview-data .arrow-down {
|
561 |
+
font-size: 0.8em;
|
562 |
+
color: #999;
|
563 |
+
margin-left: 8px;
|
564 |
+
}
|
565 |
+
|
566 |
+
.preview-document .preview-data p:hover,
|
567 |
+
.preview-document .preview-data p:hover > .arrow-down {
|
568 |
+
color: #222;
|
569 |
+
}
|
570 |
+
|
571 |
+
.preview-document .preview-data #preview-order-search-results {
|
572 |
+
display: none;
|
573 |
+
position: absolute;
|
574 |
+
right: 0;
|
575 |
+
top: 4em;
|
576 |
+
width: 300px;
|
577 |
+
box-shadow: 0 0 25px -10px rgba(0,0,0,0.2);
|
578 |
+
-webkit-box-shadow: 0 0 25px -10px rgba(0,0,0,0.2);
|
579 |
+
padding: 20px 0;
|
580 |
+
background-color: white;
|
581 |
+
}
|
582 |
+
|
583 |
+
.preview-document .preview-data #preview-order-search-results a {
|
584 |
+
display: block;
|
585 |
+
border-left: 1px solid #999;
|
586 |
+
border-right: 1px solid #999;
|
587 |
+
border-top: 1px solid #999;
|
588 |
+
color: #000;
|
589 |
+
padding: 10px;
|
590 |
+
margin: 0 20px;
|
591 |
+
text-decoration: none;
|
592 |
+
cursor: pointer;
|
593 |
+
}
|
594 |
+
|
595 |
+
.preview-document .preview-data #preview-order-search-results a:last-child {
|
596 |
+
border-bottom: 1px solid #999;
|
597 |
+
}
|
598 |
+
|
599 |
+
.preview-document .preview-data #preview-order-search-results a:hover {
|
600 |
+
background-color: #51266b;
|
601 |
+
color: white;
|
602 |
+
}
|
603 |
+
|
604 |
+
.preview-document .preview-data #preview-order-search-results .order-number {
|
605 |
+
font-weight: bold;
|
606 |
+
}
|
607 |
+
|
608 |
+
.preview-document .preview-data #preview-order-search-results .date,
|
609 |
+
.preview-document .preview-data #preview-order-search-results .total {
|
610 |
+
margin-top: 6px;
|
611 |
+
display: inline-block;
|
612 |
+
}
|
613 |
+
|
614 |
+
.preview-document .preview-data #preview-order-search-results .total {
|
615 |
+
float: right;
|
616 |
+
}
|
617 |
+
|
618 |
+
.preview-document .preview-data #preview-order-search-results .error {
|
619 |
+
margin: 0 20px;
|
620 |
+
}
|
621 |
+
|
622 |
+
.preview-document .preview-order-search-wrapper {
|
623 |
+
position: relative;
|
624 |
+
float: right;
|
625 |
+
}
|
626 |
+
|
627 |
+
.preview-document .preview-order-search-wrapper img.preview-order-search-clear {
|
628 |
+
position: absolute;
|
629 |
+
width: 30px;
|
630 |
+
height: 16px;
|
631 |
+
top: 22px;
|
632 |
+
right: 6px;
|
633 |
+
display: none;
|
634 |
+
cursor: pointer;
|
635 |
+
}
|
636 |
+
|
637 |
+
#wpo-wcpdf-preview-wrapper .gutter {
|
638 |
+
flex: 0 0 5%;
|
639 |
+
position: sticky;
|
640 |
+
top: 2.4em;
|
641 |
+
height: 170vh;
|
642 |
+
}
|
643 |
+
|
644 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state="closed"] .gutter .slide-left,
|
645 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="closed"] .gutter .slide-left {
|
646 |
+
float: right;
|
647 |
+
}
|
648 |
+
|
649 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="sidebar"] .gutter .slide-left {
|
650 |
+
border: none;
|
651 |
+
}
|
652 |
+
|
653 |
+
#wpo-wcpdf-preview-wrapper .slider {
|
654 |
+
box-sizing: border-box;
|
655 |
+
padding-top: 2.4em;
|
656 |
+
color: #999;
|
657 |
+
font-weight: bold;
|
658 |
+
cursor: pointer;
|
659 |
+
font-size: 0.7em;
|
660 |
+
line-height: 1em;
|
661 |
+
width: 50%;
|
662 |
+
height: 100%;
|
663 |
+
float: left;
|
664 |
+
}
|
665 |
+
|
666 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-left {
|
667 |
+
text-align: right;
|
668 |
+
padding-right: 10px;
|
669 |
+
border-right: 1px solid #ccc;
|
670 |
+
}
|
671 |
+
|
672 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-right {
|
673 |
+
text-align: left;
|
674 |
+
padding-left: 10px;
|
675 |
+
border-left: 1px solid #ccc;
|
676 |
+
display: none;
|
677 |
+
}
|
678 |
+
|
679 |
+
#wpo-wcpdf-preview-wrapper .slider:hover {
|
680 |
+
color: #222;
|
681 |
+
}
|
682 |
+
|
683 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-left:after {
|
684 |
+
content: 'Preview';
|
685 |
+
position: absolute;
|
686 |
+
right: 2em;
|
687 |
+
font-size: 1.4em;
|
688 |
+
display: none;
|
689 |
+
}
|
690 |
+
|
691 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-right:after {
|
692 |
+
content: 'Settings';
|
693 |
+
position: absolute;
|
694 |
+
left: 2em;
|
695 |
+
font-size: 1.4em;
|
696 |
+
display: none;
|
697 |
+
}
|
698 |
+
|
699 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .gutter {
|
700 |
+
display: none;
|
701 |
+
}
|
702 |
+
|
703 |
+
#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state="sidebar"] .gutter {
|
704 |
+
height: 100vh;
|
705 |
+
}
|
706 |
+
|
707 |
+
#wpo-wcpdf-preview-wrapper[data-preview-state="full"] .slide-right:after {
|
708 |
+
display: inline-block;
|
709 |
+
}
|
710 |
+
|
711 |
+
#wpo-wcpdf-preview-wrapper[data-preview-state="closed"] .slide-left:after {
|
712 |
+
display: inline-block;
|
713 |
+
}
|
714 |
+
|
715 |
+
#wpo-wcpdf-preview-wrapper.static .preview-document,
|
716 |
+
#wpo-wcpdf-preview-wrapper.static .gutter {
|
717 |
+
position: static!important;
|
718 |
+
}
|
719 |
+
|
720 |
+
#wpo-wcpdf-preview-wrapper.static .sidebar {
|
721 |
+
height: 170vh!important;
|
722 |
+
overflow: hidden;
|
723 |
+
}
|
724 |
+
|
725 |
+
#wpo-wcpdf-preview-wrapper input.readonly,
|
726 |
+
#wpo-wcpdf-preview-wrapper input[readonly],
|
727 |
+
#wpo-wcpdf-preview-wrapper textarea.readonly,
|
728 |
+
#wpo-wcpdf-preview-wrapper textarea[readonly] {
|
729 |
+
background-color: #f8f8f8;
|
730 |
+
}
|
731 |
+
|
732 |
+
#wpo-wcpdf-preview-wrapper[data-preview-state="sidebar"] .select2.select2-container {
|
733 |
+
width: 100%!important;
|
734 |
+
}
|
735 |
+
|
736 |
+
@media screen and (min-width: 1920px) {
|
737 |
+
.preview-document .preview > #preview-canvas {
|
738 |
+
max-width: 900px;
|
739 |
+
}
|
740 |
+
}
|
741 |
+
|
742 |
+
@media screen and (max-width: 1200px) {
|
743 |
+
.preview-document .preview > #preview-canvas {
|
744 |
+
max-width: 680px;
|
745 |
+
}
|
746 |
+
|
747 |
+
.nav-tab-wrapper a.nav-tab {
|
748 |
+
padding: 1em 2em;
|
749 |
+
margin: 0 0.5em 0.5em 0;
|
750 |
+
border: 1px solid #ccc;
|
751 |
+
box-sizing: border-box;
|
752 |
+
height: 4em;
|
753 |
+
}
|
754 |
+
|
755 |
+
.nav-tab-wrapper a.nav-tab.nav-tab-active {
|
756 |
+
border: 3px solid #51266b;
|
757 |
+
}
|
758 |
+
}
|
759 |
+
|
760 |
+
@media screen and (max-width: 960px) {
|
761 |
+
.preview-document .preview > #preview-canvas {
|
762 |
+
width: 80vw!important;
|
763 |
+
}
|
764 |
+
|
765 |
+
#wpo-wcpdf-preview-wrapper .sidebar > form {
|
766 |
+
max-width: 100%;
|
767 |
+
}
|
768 |
+
|
769 |
+
#wpo-wcpdf-preview-wrapper[data-preview-state="closed"] .select2.select2-container {
|
770 |
+
width: 100%!important;
|
771 |
+
}
|
772 |
+
|
773 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table,
|
774 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr,
|
775 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > th,
|
776 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tr > td,
|
777 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody,
|
778 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr,
|
779 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > th,
|
780 |
+
#wpo-wcpdf-preview-wrapper .sidebar .form-table > tbody > tr > td {
|
781 |
+
display: block!important;
|
782 |
+
/*width: 100%!important;*/
|
783 |
+
}
|
784 |
+
|
785 |
+
.preview-document .preview-data-wrapper {
|
786 |
+
height: 6em;
|
787 |
+
}
|
788 |
+
|
789 |
+
.preview-document .preview-data p {
|
790 |
+
padding: 2.2em 0;
|
791 |
+
}
|
792 |
+
|
793 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-right:after,
|
794 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-left:after {
|
795 |
+
top: 1.5em;
|
796 |
+
padding: 1em;
|
797 |
+
background: white;
|
798 |
+
border: 1px solid #ccc;
|
799 |
+
}
|
800 |
+
|
801 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-right:after {
|
802 |
+
left: 0;
|
803 |
+
}
|
804 |
+
|
805 |
+
#wpo-wcpdf-preview-wrapper .slider.slide-left:after {
|
806 |
+
right: 0;
|
807 |
+
}
|
808 |
+
}
|
assets/css/settings-styles.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
span.wpo-warning{display:inline-block;border:1px solid red;border-left:4px solid red;padding:5px 15px;background-color:#fff}.wcpdf-extensions-ad{position:relative;min-height:90px;border:1px solid #3d5c99;background-color:#ebf5ff;border-radius:5px;padding:15px;padding-left:100px;margin-top:15px}img.wpo-helper{position:absolute;bottom:0;left:3px}.wcpdf-extensions-ad h3{margin:0}.wcpdf-extensions-ad ul{margin:0;margin-left:1.5em}.extensions li{margin:0}.extensions li ul{list-style-type:square;margin-top:.5em;margin-bottom:.5em}.extensions>li:before{content:"";border-color:transparent transparent transparent #111;border-style:solid;border-width:.35em .35em .35em .45em;display:block;height:0;width:0;left:-1em;top:.9em;position:relative}.extensions li:not(.expanded){cursor:pointer}.extensions .expanded:before{border-color:#111 transparent transparent transparent;left:-1.17em;border-width:.45em .45em .35em .35em!important}.extensions .more{padding:10px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.extensions table td{vertical-align:top}.dropbox-logo{margin-bottom:-10px;margin-right:10px}.cloud-logo{margin-bottom:-10px;margin-top:-5px;margin-right:10px}#img-header_logo{max-height:200px;width:auto}.multiple-text-input label{min-width:120px;display:inline-block}table.wcpdf_documents_settings_list{width:100%;border-collapse:collapse;border-spacing:0;background-color:#fff;border-top:2px solid #000}table.wcpdf_documents_settings_list tr.odd{background-color:#ebf5ff}table.wcpdf_documents_settings_list td{padding:5px}table.wcpdf_documents_settings_list a{text-decoration:none}table.wcpdf_documents_settings_list td.settings-icon{text-align:right}table.wcpdf_documents_settings_list td.title{font-weight:700}.wcpdf_document_settings_sections{margin-top:10px;font-size:120%}.wcpdf_document_settings_sections li,.wcpdf_document_settings_sections ul{display:inline}.wcpdf_document_settings_sections li+li:before{content:" | "}.wcpdf_document_settings_sections a.active{text-decoration:none;font-weight:700;color:#000}.edit-next-number{opacity:.5}.edit-next-number:hover{opacity:1;cursor:pointer}
|
1 |
+
span.wpo-warning{display:inline-block;border:1px solid red;border-left:4px solid red;padding:5px 15px;background-color:#fff}.wcpdf-extensions-ad{position:relative;min-height:90px;border:1px solid #3d5c99;background-color:#ebf5ff;padding:15px;padding-left:100px;margin-top:15px}img.wpo-helper{position:absolute;bottom:0;left:3px}.wcpdf-extensions-ad h3{margin:0}.wcpdf-extensions-ad ul{margin:0;margin-left:1.5em}.wcpdf-extensions li{margin:0}.wcpdf-extensions li ul{list-style-type:square;margin-top:.5em;margin-bottom:.5em}.wcpdf-extensions>li:before{content:"";border-color:transparent transparent transparent #111;border-style:solid;border-width:.35em .35em .35em .45em;display:block;height:0;width:0;left:-1em;top:.9em;position:relative}.wcpdf-extensions li:not(.expanded){cursor:pointer}.wcpdf-extensions .expanded:before{border-color:#111 transparent transparent transparent;left:-1.17em;border-width:.45em .45em .35em .35em!important}.wcpdf-extensions .more{padding:10px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.wcpdf-extensions table td{vertical-align:top}.dropbox-logo{margin-bottom:-10px;margin-right:10px}.cloud-logo{margin-bottom:-10px;margin-top:-5px;margin-right:10px}#img-header_logo{max-height:200px;width:auto;max-width:100%}.multiple-text-input label{min-width:120px;display:inline-block}table.wcpdf_documents_settings_list{width:100%;border-collapse:collapse;border-spacing:0;background-color:#fff;border-top:2px solid #000}table.wcpdf_documents_settings_list tr.odd{background-color:#ebf5ff}table.wcpdf_documents_settings_list td{padding:5px}table.wcpdf_documents_settings_list a{text-decoration:none}table.wcpdf_documents_settings_list td.settings-icon{text-align:right}table.wcpdf_documents_settings_list td.title{font-weight:700}.wcpdf_document_settings_sections{margin-bottom:40px;position:relative}.wcpdf_document_settings_sections>h2{cursor:pointer;padding:1em .8em;margin:0;border:1px solid #eaeaea}.wcpdf_document_settings_sections ul{background:#fff;list-style:none;margin:0;padding:0;width:100%;display:block;height:auto;display:none;box-sizing:border-box;position:absolute;border-left:1px solid #eaeaea;border-right:1px solid #eaeaea;z-index:1000;box-shadow:0 35px 35px -8px rgba(0,0,0,.1);-webkit-box-shadow:0 35px 35px -8px rgba(0,0,0,.1)}.wcpdf_document_settings_sections ul.active{display:block}.wcpdf_document_settings_sections ul li{box-sizing:border-box;padding:0;margin-bottom:0;border-bottom:1px solid #eaeaea;font-size:1.1em}.wcpdf_document_settings_sections ul li:hover{cursor:pointer;background:#51266b;color:#fff}.wcpdf_document_settings_sections ul li:hover a{color:#fff}.wcpdf_document_settings_sections ul li a{color:#000;text-decoration:none;padding:1.2em 1.6em;display:block}.wcpdf_document_settings_sections .arrow-down{font-size:.7em;color:#999;margin-left:8px;font-weight:400;float:right}.wcpdf_document_settings_sections p:hover,.wcpdf_document_settings_sections p:hover>.arrow-down{color:#222}.edit-next-number{opacity:.5}.edit-next-number:hover{opacity:1;cursor:pointer}body.woocommerce_page_wpo_wcpdf_options_page{background:#fff}.wrap [class$=icon32]+h2{font-size:18px;padding:1em}.wrap .notice{margin:15px 0 0}.nav-tab-wrapper a.nav-tab{background:0 0;border:none;border-bottom:3px solid transparent;padding:1em 0;margin:0 1.2em;font-size:15px}.nav-tab-wrapper a.nav-tab.nav-tab-active{border-bottom:3px solid #51266b}#wpo-wcpdf-preview-wrapper{width:100%;height:auto;position:relative;display:flex;align-items:flex-start}#wpo-wcpdf-preview-wrapper .preview-document,#wpo-wcpdf-preview-wrapper .sidebar{transition:.3s ease-in-out}#wpo-wcpdf-preview-wrapper .sidebar{height:auto;padding:4em 0 0 0;box-sizing:border-box;background:0 0;flex:0 0 35%;overflow-x:hidden}#wpo-wcpdf-preview-wrapper .sidebar>form{background:#fff;overflow:visible;padding:0;margin-left:2em;box-sizing:border-box;width:calc(100% - 4em);max-width:50vw}#wpo-wcpdf-preview-wrapper .sidebar>form.editor{max-width:none}#wpo-wcpdf-preview-wrapper .sidebar .form-table,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>th{display:block;width:100%;padding:0}#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>th{padding-bottom:.6em}#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td{padding-bottom:2.4em}#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td p.description,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td>p.description{font-size:.85em;padding-top:.7em}#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td>input[type=text],#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td>select,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td>textarea,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td>input[type=text],#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td>select,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td>textarea{max-width:none;width:100%}#wpo-wcpdf-preview-wrapper input[type=text][size]{width:auto!important;max-width:100%!important}#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td>input#next_invoice_number{width:auto!important}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table{display:table}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table tbody,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table tbody,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table tbody{display:table-row-group}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table tbody tr,#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table tr,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table tbody tr,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table tr,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table tbody tr,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table tr{display:table-row}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table>tbody>tr>td,#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table>tbody>tr>td,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table>tbody>tr>td,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table>tbody>tr>th{display:table-cell;padding:15px 10px 15px 0;width:auto}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar .form-table>tbody>tr>th{width:300px!important}#wpo-wcpdf-settings .form-table .ui-tabs-nav{padding-left:0!important;margin-left:0!important}#wpo-wcpdf-settings .translations input,#wpo-wcpdf-settings .translations textarea{width:100%}#wpo-wcpdf-settings .wcpdf-attachment-settings-hint{border-left:4px solid #51266b}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .sidebar{flex:0 0 100%}#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .sidebar{flex:0 0 95%}#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=full] .sidebar{flex:0 0 95%;margin-left:-95%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .sidebar{flex:0 0 95%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=sidebar] .sidebar{flex:0 0 35%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=full] .sidebar{margin-left:-35%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state=full] .sidebar{transition-delay:.4s}#wpo-wcpdf-preview-wrapper .preview-document{padding:0;box-sizing:border-box;position:sticky;top:2.4em;flex:0 0 60%}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .preview-document{display:none}#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .preview-document{display:none}#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=full] .preview-document{flex:0 0 95%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .preview-document{flex:0 0 60%;margin-right:-60%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=sidebar] .preview-document{flex:0 0 60%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=full] .preview-document{flex:0 0 95%}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state=full] .preview-document{transition-delay:.4s}.preview-document .preview{width:100%;box-sizing:border-box;padding-right:5%}.preview-document .preview>#preview-canvas{display:block;max-width:800px;max-height:85vh;width:auto!important;margin:0 auto;background:#fff;box-shadow:0 0 35px -8px rgba(0,0,0,.12);-webkit-box-shadow:0 0 35px -8px rgba(0,0,0,.12)}#wpo-wcpdf-preview-wrapper[data-preview-states="2"] #preview-canvas{max-height:170vh}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state=sidebar] #preview-canvas{max-height:170vh;transition:max-height .4s ease-in-out .3s}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-from-preview-state=full] #preview-canvas{transition:max-height .4s ease-in-out 0s}.preview-document .preview-data-wrapper{width:100%;height:4em}.preview-document .preview-data-wrapper .preview-document-type,.preview-document .preview-data-wrapper .preview-order-data{float:right}.preview-document .preview-data-wrapper .preview-document-type{margin-right:30px}.preview-document .preview-data-wrapper .preview-document-type ul>li{text-decoration:none;color:initial;padding:1.4em 1.6em}.preview-document .preview-data-wrapper .preview-document-type ul>li:hover{color:#fff!important}.preview-document .preview-data p{padding:1.4em 0;margin:0;color:#666;text-align:right;cursor:pointer;font-weight:lighter;float:right}.preview-document .preview-data p.order-search{display:none}.preview-document .preview-data input{float:right;margin:1em 0 0 1em;padding:.1em .5em;width:20ch;margin-right:-25ch;display:none}.preview-document .preview-data input.active{margin-right:0;display:inline-block}.preview-document .preview-data ul{position:absolute;right:0;top:4em;background:#fff;box-shadow:0 0 25px -10px rgba(0,0,0,.2);-webkit-box-shadow:0 0 25px -10px rgba(0,0,0,.2);list-style:none;margin:0;padding:0;min-width:24em;display:block;height:0;overflow:hidden}.preview-document .preview-data ul.active{height:auto;z-index:1}.preview-document .preview-data ul li{box-sizing:border-box;padding:0;margin-bottom:0;border-bottom:1px solid #eaeaea;font-size:1.1em}.preview-document .preview-data ul li:hover{cursor:pointer;background:#51266b;color:#fff}.preview-document .preview-data ul li a,.preview-document .preview-data.preview-order-data ul li{display:block;padding:1.4em 1.6em}.preview-document .preview-data .arrow-down{font-size:.8em;color:#999;margin-left:8px}.preview-document .preview-data p:hover,.preview-document .preview-data p:hover>.arrow-down{color:#222}.preview-document .preview-data #preview-order-search-results{display:none;position:absolute;right:0;top:4em;width:300px;box-shadow:0 0 25px -10px rgba(0,0,0,.2);-webkit-box-shadow:0 0 25px -10px rgba(0,0,0,.2);padding:20px 0;background-color:#fff}.preview-document .preview-data #preview-order-search-results a{display:block;border-left:1px solid #999;border-right:1px solid #999;border-top:1px solid #999;color:#000;padding:10px;margin:0 20px;text-decoration:none;cursor:pointer}.preview-document .preview-data #preview-order-search-results a:last-child{border-bottom:1px solid #999}.preview-document .preview-data #preview-order-search-results a:hover{background-color:#51266b;color:#fff}.preview-document .preview-data #preview-order-search-results .order-number{font-weight:700}.preview-document .preview-data #preview-order-search-results .date,.preview-document .preview-data #preview-order-search-results .total{margin-top:6px;display:inline-block}.preview-document .preview-data #preview-order-search-results .total{float:right}.preview-document .preview-data #preview-order-search-results .error{margin:0 20px}.preview-document .preview-order-search-wrapper{position:relative;float:right}.preview-document .preview-order-search-wrapper img.preview-order-search-clear{position:absolute;width:30px;height:16px;top:22px;right:6px;display:none;cursor:pointer}#wpo-wcpdf-preview-wrapper .gutter{flex:0 0 5%;position:sticky;top:2.4em;height:170vh}#wpo-wcpdf-preview-wrapper[data-preview-states="2"][data-preview-state=closed] .gutter .slide-left,#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=closed] .gutter .slide-left{float:right}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=sidebar] .gutter .slide-left{border:none}#wpo-wcpdf-preview-wrapper .slider{box-sizing:border-box;padding-top:2.4em;color:#999;font-weight:700;cursor:pointer;font-size:.7em;line-height:1em;width:50%;height:100%;float:left}#wpo-wcpdf-preview-wrapper .slider.slide-left{text-align:right;padding-right:10px;border-right:1px solid #ccc}#wpo-wcpdf-preview-wrapper .slider.slide-right{text-align:left;padding-left:10px;border-left:1px solid #ccc;display:none}#wpo-wcpdf-preview-wrapper .slider:hover{color:#222}#wpo-wcpdf-preview-wrapper .slider.slide-left:after{content:'Preview';position:absolute;right:2em;font-size:1.4em;display:none}#wpo-wcpdf-preview-wrapper .slider.slide-right:after{content:'Settings';position:absolute;left:2em;font-size:1.4em;display:none}#wpo-wcpdf-preview-wrapper[data-preview-states="1"] .gutter{display:none}#wpo-wcpdf-preview-wrapper[data-preview-states="3"][data-preview-state=sidebar] .gutter{height:100vh}#wpo-wcpdf-preview-wrapper[data-preview-state=full] .slide-right:after{display:inline-block}#wpo-wcpdf-preview-wrapper[data-preview-state=closed] .slide-left:after{display:inline-block}#wpo-wcpdf-preview-wrapper.static .gutter,#wpo-wcpdf-preview-wrapper.static .preview-document{position:static!important}#wpo-wcpdf-preview-wrapper.static .sidebar{height:170vh!important;overflow:hidden}#wpo-wcpdf-preview-wrapper input.readonly,#wpo-wcpdf-preview-wrapper input[readonly],#wpo-wcpdf-preview-wrapper textarea.readonly,#wpo-wcpdf-preview-wrapper textarea[readonly]{background-color:#f8f8f8}#wpo-wcpdf-preview-wrapper[data-preview-state=sidebar] .select2.select2-container{width:100%!important}@media screen and (min-width:1920px){.preview-document .preview>#preview-canvas{max-width:900px}}@media screen and (max-width:1200px){.preview-document .preview>#preview-canvas{max-width:680px}.nav-tab-wrapper a.nav-tab{padding:1em 2em;margin:0 .5em .5em 0;border:1px solid #ccc;box-sizing:border-box;height:4em}.nav-tab-wrapper a.nav-tab.nav-tab-active{border:3px solid #51266b}}@media screen and (max-width:960px){.preview-document .preview>#preview-canvas{width:80vw!important}#wpo-wcpdf-preview-wrapper .sidebar>form{max-width:100%}#wpo-wcpdf-preview-wrapper[data-preview-state=closed] .select2.select2-container{width:100%!important}#wpo-wcpdf-preview-wrapper .sidebar .form-table,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>td,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tbody>tr>th,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>td,#wpo-wcpdf-preview-wrapper .sidebar .form-table>tr>th{display:block!important}.preview-document .preview-data-wrapper{height:6em}.preview-document .preview-data p{padding:2.2em 0}#wpo-wcpdf-preview-wrapper .slider.slide-left:after,#wpo-wcpdf-preview-wrapper .slider.slide-right:after{top:1.5em;padding:1em;background:#fff;border:1px solid #ccc}#wpo-wcpdf-preview-wrapper .slider.slide-right:after{left:0}#wpo-wcpdf-preview-wrapper .slider.slide-left:after{right:0}}
|
assets/images/reset-input.svg
ADDED
@@ -0,0 +1,4 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<svg width="31" height="16" viewBox="0 0 31 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2 |
+
<path d="M27.078 5.23445e-06H9.51333C8.75212 -0.00142913 8.01992 0.291975 7.47034 0.818671L1.47434 6.542C1.27694 6.72911 1.11929 6.9541 1.01081 7.20353C0.90234 7.45295 0.845267 7.72168 0.843008 7.99366C0.838864 8.26554 0.889631 8.53545 0.99227 8.78723C1.09491 9.03902 1.24731 9.2675 1.44034 9.459L7.114 15.1327C7.38804 15.4085 7.71409 15.6271 8.07325 15.776C8.43241 15.9249 8.81754 16.001 9.20633 16H27.078C28.815 16 30.2283 14.5867 30.2283 12.8497V3.15034C30.2283 1.41334 28.815 5.23445e-06 27.078 5.23445e-06Z" fill="#51266B"/>
|
3 |
+
<path d="M22.7833 7.99996L25.0763 5.70663C25.2637 5.51896 25.3689 5.26463 25.3689 4.99946C25.3689 4.7343 25.2637 4.47997 25.0763 4.29229C24.8887 4.10497 24.6343 3.99976 24.3692 3.99976C24.104 3.99976 23.8497 4.10497 23.662 4.29229L21.369 6.58563L19.076 4.29229C18.698 3.91429 18.039 3.91429 17.6617 4.29229C17.4744 4.47997 17.3691 4.7343 17.3691 4.99946C17.3691 5.26463 17.4744 5.51896 17.6617 5.70663L19.9547 7.99996L17.6617 10.2933C17.4744 10.481 17.3691 10.7353 17.3691 11.0005C17.3691 11.2656 17.4744 11.52 17.6617 11.7076C17.8494 11.8949 18.1037 12.0002 18.3688 12.0002C18.634 12.0002 18.8883 11.8949 19.076 11.7076L21.369 9.41429L23.662 11.7076C23.851 11.8966 24.102 12.0006 24.3693 12.0006C24.6367 12.0006 24.8877 11.8966 25.0763 11.7076C25.2637 11.52 25.3689 11.2656 25.3689 11.0005C25.3689 10.7353 25.2637 10.481 25.0763 10.2933L22.7833 7.99996Z" fill="white"/>
|
4 |
+
</svg>
|
assets/js/admin-script.js
CHANGED
@@ -1,39 +1,519 @@
|
|
1 |
Â
jQuery( function( $ ) {
|
2 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
3 |
Â
// enable input & show save button
|
4 |
Â
$( this ).hide();
|
5 |
-
$( this ).siblings( 'input' ).prop('disabled', false);
|
6 |
-
$( this ).siblings( '.save-next-number.button').show();
|
7 |
-
});
|
8 |
Â
|
9 |
-
$('.save-next-number').on('click', function( event ) {
|
10 |
Â
$input = $( this ).siblings( 'input' );
|
11 |
-
$input.addClass('ajax-waiting');
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
Â
|
|
17 |
Â
};
|
18 |
Â
|
19 |
-
xhr = $.ajax({
|
20 |
-
type:
|
21 |
-
url:
|
22 |
-
data:
|
23 |
-
success:
|
24 |
-
$input.removeClass('ajax-waiting');
|
25 |
Â
$input.siblings( '.edit-next-number' ).show();
|
26 |
-
$input.prop('disabled', 'disabled');
|
27 |
-
$input.siblings( '.save-next-number.button').hide();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
28 |
Â
}
|
29 |
-
}
|
30 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
31 |
Â
|
32 |
-
|
33 |
-
|
34 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
35 |
Â
} else {
|
36 |
-
$
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
37 |
Â
}
|
38 |
-
})
|
39 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
Â
jQuery( function( $ ) {
|
2 |
+
|
3 |
+
$( '.wcpdf-extensions .more' ).hide();
|
4 |
+
|
5 |
+
$( '.wcpdf-extensions > li' ).on( 'click', function( event ) {
|
6 |
+
$( this ).toggleClass( 'expanded' );
|
7 |
+
$( this ).find( '.more' ).slideToggle();
|
8 |
+
} );
|
9 |
+
|
10 |
+
$( '.edit-next-number' ).on( 'click', function( event ) {
|
11 |
Â
// enable input & show save button
|
12 |
Â
$( this ).hide();
|
13 |
+
$( this ).siblings( 'input' ).prop( 'disabled', false );
|
14 |
+
$( this ).siblings( '.save-next-number.button' ).show();
|
15 |
+
} );
|
16 |
Â
|
17 |
+
$( '.save-next-number' ).on( 'click', function( event ) {
|
18 |
Â
$input = $( this ).siblings( 'input' );
|
19 |
+
$input.addClass( 'ajax-waiting' );
|
20 |
+
|
21 |
+
let data = {
|
22 |
+
security: $input.data( 'nonce' ),
|
23 |
+
action: 'wpo_wcpdf_set_next_number',
|
24 |
+
store: $input.data( 'store' ),
|
25 |
+
number: $input.val(),
|
26 |
Â
};
|
27 |
Â
|
28 |
+
xhr = $.ajax( {
|
29 |
+
type: 'POST',
|
30 |
+
url: wpo_wcpdf_admin.ajaxurl,
|
31 |
+
data: data,
|
32 |
+
success: function( response ) {
|
33 |
+
$input.removeClass( 'ajax-waiting' );
|
34 |
Â
$input.siblings( '.edit-next-number' ).show();
|
35 |
+
$input.prop( 'disabled', 'disabled' );
|
36 |
+
$input.siblings( '.save-next-number.button' ).hide();
|
37 |
+
}
|
38 |
+
} );
|
39 |
+
} );
|
40 |
+
|
41 |
+
$( "[name='wpo_wcpdf_documents_settings_invoice[display_number]']" ).on( 'change', function( event ) {
|
42 |
+
if ( $( this ).val() == 'order_number' ) {
|
43 |
+
$( this ).closest( 'td' ).find( '.description' ).slideDown();
|
44 |
+
} else {
|
45 |
+
$( this ).closest( 'td' ).find( '.description' ).hide();
|
46 |
+
}
|
47 |
+
} ).trigger( 'change' );
|
48 |
+
|
49 |
+
// enable settings document switch
|
50 |
+
$( '.wcpdf_document_settings_sections > h2' ).on( 'click', function() {
|
51 |
+
$( this ).parent().find( 'ul' ).toggleClass( 'active' );
|
52 |
+
} );
|
53 |
+
|
54 |
+
|
55 |
+
//----------> Preview <----------//
|
56 |
+
|
57 |
+
// objects
|
58 |
+
let $previewWrapper = $( '#wpo-wcpdf-preview-wrapper' );
|
59 |
+
let $preview = $( '#wpo-wcpdf-preview-wrapper .preview' );
|
60 |
+
let $previewOrderIdInput = $( '#wpo-wcpdf-preview-wrapper input[name="order_id"]' );
|
61 |
+
let $previewDocumentTypeInput = $( '#wpo-wcpdf-preview-wrapper input[name="document_type"]' );
|
62 |
+
let $previewNonceInput = $( '#wpo-wcpdf-preview-wrapper input[name="nonce"]' );
|
63 |
+
let $previewSettingsForm = $( '#wpo-wcpdf-settings' );
|
64 |
+
let previewXhr = null;
|
65 |
+
|
66 |
+
// variables
|
67 |
+
let previewOrderId, previewDocumentType, previewNonce, previewSettingsFormData, previewTimeout, previewSearchTimeout, previousWindowWidth;
|
68 |
+
|
69 |
+
function loadPreviewData() {
|
70 |
+
previewOrderId = $previewOrderIdInput.val();
|
71 |
+
previewDocumentType = $previewDocumentTypeInput.val();
|
72 |
+
previewNonce = $previewNonceInput.val();
|
73 |
+
previewSettingsFormData = $previewSettingsForm.serialize();
|
74 |
+
}
|
75 |
+
|
76 |
+
function resetDocumentType() {
|
77 |
+
$previewDocumentTypeInput.val( $previewDocumentTypeInput.data( 'default' ) ).trigger( 'change' );
|
78 |
+
}
|
79 |
+
|
80 |
+
function resetOrderId() {
|
81 |
+
$previewOrderIdInput.val( '' ).trigger( 'change' );
|
82 |
+
}
|
83 |
+
|
84 |
+
$( document ).ready( function() {
|
85 |
+
resetDocumentType(); // force document type reset
|
86 |
+
resetOrderId(); // force order ID reset
|
87 |
+
loadPreviewData(); // load preview data
|
88 |
+
|
89 |
+
previousWindowWidth = $(window).width();
|
90 |
+
determinePreviewStates(); // determine preview states based on screen size
|
91 |
+
} );
|
92 |
+
|
93 |
+
$( window ).on( 'resize', determinePreviewStates );
|
94 |
+
|
95 |
+
function determinePreviewStates() {
|
96 |
+
|
97 |
+
// console.log(previousWindowWidth);
|
98 |
+
// console.log('Now: ' + $(this).width() );
|
99 |
+
|
100 |
+
// Check if preview states are allowed to change based on screen size
|
101 |
+
if ( $previewWrapper.attr( 'data-preview-states-lock') == false ) {
|
102 |
+
|
103 |
+
// On small screens: 2 preview states and close preview
|
104 |
+
if ( $(this).width() <= 1200 && ( previousWindowWidth > 1200 || $(this).width() == previousWindowWidth ) ) {
|
105 |
+
// console.log('Slide!');
|
106 |
+
if ( $previewWrapper.attr( 'data-preview-state') == 'full' ) {
|
107 |
+
$previewWrapper.find( '.preview-document' ).show();
|
108 |
+
$previewWrapper.find( '.sidebar' ).hide();
|
109 |
+
$previewWrapper.find( '.slide-left' ).hide();
|
110 |
+
$previewWrapper.find( '.slide-right' ).show();
|
111 |
+
$previewWrapper.attr( 'data-preview-states', 2 );
|
112 |
+
$previewWrapper.attr( 'data-preview-state', 'full' );
|
113 |
+
$previewWrapper.attr( 'data-from-preview-state', '' );
|
114 |
+
} else {
|
115 |
+
$previewWrapper.find( '.preview-document' ).hide();
|
116 |
+
$previewWrapper.find( '.sidebar' ).show();
|
117 |
+
$previewWrapper.find( '.slide-left' ).show();
|
118 |
+
$previewWrapper.find( '.slide-right' ).hide();
|
119 |
+
$previewWrapper.attr( 'data-preview-states', 2 );
|
120 |
+
$previewWrapper.attr( 'data-preview-state', 'closed' );
|
121 |
+
$previewWrapper.attr( 'data-from-preview-state', '' );
|
122 |
+
}
|
123 |
+
|
124 |
+
// On larger screens: 3 preview states and show settings as sidebar
|
125 |
+
} else if ( $(this).width() > 1200 && ( previousWindowWidth <= 1200 || $(this).width() == previousWindowWidth ) ) {
|
126 |
+
if ( $previewWrapper.attr( 'data-preview-state') == 'full' ) {
|
127 |
+
$previewWrapper.find( '.preview-document' ).show();
|
128 |
+
$previewWrapper.find( '.sidebar' ).hide();
|
129 |
+
$previewWrapper.find( '.slide-left' ).hide();
|
130 |
+
$previewWrapper.find( '.slide-right' ).show();
|
131 |
+
$previewWrapper.attr( 'data-preview-states', 3 );
|
132 |
+
$previewWrapper.attr( 'data-preview-state', 'full' );
|
133 |
+
$previewWrapper.attr( 'data-from-preview-state', 'sidebar' );
|
134 |
+
$previewWrapper.addClass( 'static' );
|
135 |
+
} else if ( $previewWrapper.attr( 'data-preview-state') == 'closed' && $(this).width() !== previousWindowWidth ) {
|
136 |
+
$previewWrapper.find( '.preview-document' ).hide();
|
137 |
+
$previewWrapper.find( '.sidebar' ).show();
|
138 |
+
$previewWrapper.find( '.slide-left' ).show();
|
139 |
+
$previewWrapper.find( '.slide-right' ).hide();
|
140 |
+
$previewWrapper.attr( 'data-preview-states', 3 );
|
141 |
+
$previewWrapper.attr( 'data-preview-state', 'closed' );
|
142 |
+
$previewWrapper.attr( 'data-from-preview-state', '' );
|
143 |
+
$previewWrapper.removeClass( 'static' );
|
144 |
+
} else {
|
145 |
+
$previewWrapper.find( '.preview-document, .sidebar' ).show();
|
146 |
+
$previewWrapper.find( '.slide-left, .slide-right' ).show();
|
147 |
+
$previewWrapper.attr( 'data-preview-states', 3 );
|
148 |
+
$previewWrapper.attr( 'data-preview-state', 'sidebar' );
|
149 |
+
$previewWrapper.attr( 'data-from-preview-state', '' );
|
150 |
+
$previewWrapper.removeClass( 'static' );
|
151 |
+
}
|
152 |
Â
}
|
153 |
+
}
|
154 |
+
previousWindowWidth = $(this).width();
|
155 |
+
}
|
156 |
+
|
157 |
+
$( '.slide-left' ).on( 'click', function() {
|
158 |
+
let previewStates = $previewWrapper.attr( 'data-preview-states' );
|
159 |
+
let previewState = $previewWrapper.attr( 'data-preview-state' );
|
160 |
Â
|
161 |
+
$previewWrapper.find( '.preview-data-wrapper ul' ).removeClass( 'active' );
|
162 |
+
|
163 |
+
if ( previewStates == 3 ) {
|
164 |
+
if ( previewState == 'closed' ) {
|
165 |
+
$previewWrapper.find( '.preview-document' ).show();
|
166 |
+
$previewWrapper.find( '.slide-right' ).show();
|
167 |
+
$previewWrapper.attr( 'data-preview-state', 'sidebar' );
|
168 |
+
$previewWrapper.attr( 'data-from-preview-state', 'closed' );
|
169 |
+
} else {
|
170 |
+
$previewWrapper.find( '.slide-left' ).hide();
|
171 |
+
$previewWrapper.find( '.sidebar' ).delay(300).hide(0);
|
172 |
+
$previewWrapper.attr( 'data-preview-state', 'full' );
|
173 |
+
$previewWrapper.attr( 'data-from-preview-state', 'sidebar' );
|
174 |
+
makePreviewScrollable( $previewWrapper );
|
175 |
+
}
|
176 |
+
} else {
|
177 |
+
$previewWrapper.find( '.preview-document' ).show();
|
178 |
+
$previewWrapper.find( '.slide-left' ).hide();
|
179 |
+
$previewWrapper.find( '.slide-right' ).show();
|
180 |
+
$previewWrapper.attr( 'data-preview-state', 'full' );
|
181 |
+
$previewWrapper.attr( 'data-from-preview-state', 'closed' );
|
182 |
+
makePreviewScrollable( $previewWrapper );
|
183 |
+
}
|
184 |
+
} );
|
185 |
+
|
186 |
+
$( '.slide-right' ).on( 'click', function() {
|
187 |
+
let previewStates = $previewWrapper.attr( 'data-preview-states' );
|
188 |
+
let previewState = $previewWrapper.attr( 'data-preview-state' );
|
189 |
+
|
190 |
+
$previewWrapper.find( '.preview-data-wrapper ul' ).removeClass( 'active' );
|
191 |
+
|
192 |
+
if ( previewStates == 3 ) {
|
193 |
+
if ( previewState == 'full' ) {
|
194 |
+
$previewWrapper.find( '.slide-left' ).delay(400).show(0);
|
195 |
+
$previewWrapper.find( '.sidebar' ).show();
|
196 |
+
$previewWrapper.attr( 'data-preview-state', 'sidebar' );
|
197 |
+
$previewWrapper.attr( 'data-from-preview-state', 'full' );
|
198 |
+
} else {
|
199 |
+
$previewWrapper.find( '.preview-document' ).hide(300);
|
200 |
+
$previewWrapper.find( '.slide-right' ).hide();
|
201 |
+
$previewWrapper.attr( 'data-preview-state', 'closed' );
|
202 |
+
$previewWrapper.attr( 'data-from-preview-state', 'sidebar' );
|
203 |
+
}
|
204 |
Â
} else {
|
205 |
+
$previewWrapper.find( '.preview-document' ).hide(300);
|
206 |
+
$previewWrapper.find( '.slide-left' ).show();
|
207 |
+
$previewWrapper.find( '.slide-right' ).hide();
|
208 |
+
$previewWrapper.attr( 'data-preview-state', 'closed' );
|
209 |
+
$previewWrapper.attr( 'data-from-preview-state', 'full' );
|
210 |
+
}
|
211 |
+
$previewWrapper.removeClass( 'static' );
|
212 |
+
} );
|
213 |
+
|
214 |
+
function makePreviewScrollable( wrapper ) {
|
215 |
+
window.scrollTo( 0, 0 );
|
216 |
+
let $wrapper = wrapper;
|
217 |
+
// Make preview scrollable after panel animation is complete
|
218 |
+
setTimeout( function() {
|
219 |
+
$wrapper.addClass( 'static' );
|
220 |
+
}, 300 );
|
221 |
+
}
|
222 |
+
|
223 |
+
$( '.preview-document .preview-data p' ).on( 'click', function() {
|
224 |
+
let $previewData = $( this ).closest( '.preview-data' );
|
225 |
+
$previewData.siblings( '.preview-data' ).find( 'ul' ).removeClass( 'active' );
|
226 |
+
$previewData.find( 'ul' ).toggleClass( 'active' );
|
227 |
+
} );
|
228 |
+
|
229 |
+
$( '.preview-document .preview-data ul > li' ).on( 'click', function() {
|
230 |
+
let $previewData = $( this ).closest( '.preview-data' );
|
231 |
+
$previewData.find( 'ul' ).toggleClass( 'active' );
|
232 |
+
if ( $( this ).hasClass( 'order-search' ) ) {
|
233 |
+
$previewData.find( 'p.last-order' ).hide();
|
234 |
+
$previewData.find( 'input[name="preview-order-search"]' ).addClass( 'active' );
|
235 |
+
$previewData.find( 'p.order-search' ).show().find( '.order-search-label' ).text( $( this ).text() );
|
236 |
+
} else {
|
237 |
+
$previewData.find( 'p.last-order' ).show();
|
238 |
+
$previewData.find( 'p.order-search' ).hide();
|
239 |
+
$previewData.find( 'input[name="preview-order-search"]' ).removeClass( 'active' ).val( '' );
|
240 |
+
$previewData.find( '#preview-order-search-results' ).hide();
|
241 |
+
$previewData.find( 'img.preview-order-search-clear' ).hide(); // remove the clear button
|
242 |
+
resetOrderId() // force order ID reset
|
243 |
+
triggerPreview(); // trigger preview
|
244 |
+
}
|
245 |
+
} );
|
246 |
+
|
247 |
+
// Preview on page load
|
248 |
+
$( document ).ready( triggerPreview() );
|
249 |
+
|
250 |
+
// Preview on user input
|
251 |
+
$( document ).on( 'keyup paste', '#wpo-wcpdf-settings input:not([type=checkbox]), #wpo-wcpdf-settings textarea, #wpo-wcpdf-settings select:not(.dropdown-add-field)', function( event ) {
|
252 |
+
if ( ! settingIsExcludedForPreview( $( this ).attr( 'name' ) ) ) {
|
253 |
+
let duration = event.type == 'keyup' ? 1000 : 0;
|
254 |
+
triggerPreview( duration );
|
255 |
+
}
|
256 |
+
} );
|
257 |
+
|
258 |
+
// Preview on user selected option (using 'change' event breaks the PDF render)
|
259 |
+
$( document ).on( 'click', '#wpo-wcpdf-settings select:not(.dropdown-add-field) option', function( event ) {
|
260 |
+
if ( ! settingIsExcludedForPreview( $( this ).parent().attr( 'name' ) ) ) {
|
261 |
+
triggerPreview();
|
262 |
Â
}
|
263 |
+
} );
|
264 |
+
|
265 |
+
// Preview on user checkbox change
|
266 |
+
$( document ).on( 'change', '#wpo-wcpdf-settings input[type="checkbox"]', function( event ) {
|
267 |
+
if ( ! settingIsExcludedForPreview( $( this ).attr( 'name' ) ) ) {
|
268 |
+
triggerPreview( 1000 );
|
269 |
+
}
|
270 |
+
} );
|
271 |
+
|
272 |
+
// Preview on select / radio setting change
|
273 |
+
$( document ).on( 'change', '#wpo-wcpdf-settings input[type="radio"], #wpo-wcpdf-settings select', function( event ) {
|
274 |
+
if ( ! settingIsExcludedForPreview( $( this ).attr( 'name' ) ) ) {
|
275 |
+
triggerPreview();
|
276 |
+
}
|
277 |
+
} );
|
278 |
+
|
279 |
+
// Preview on header logo change
|
280 |
+
$( document.body ).on( 'wpo-wcpdf-media-upload-setting-updated', function( event, $input ) {
|
281 |
+
triggerPreview();
|
282 |
+
} );
|
283 |
+
$( document ).on( 'click', '.wpo_remove_image_button', function( event ) {
|
284 |
+
triggerPreview();
|
285 |
+
} );
|
286 |
+
|
287 |
+
// Custom trigger
|
288 |
+
$( document ).on( 'wpo_wcpdf_refresh_preview', function( event, duration ) {
|
289 |
+
triggerPreview( duration );
|
290 |
+
} );
|
291 |
+
|
292 |
+
// Preview on user click in search result
|
293 |
+
$( document ).on( 'click', '#preview-order-search-results a', function( event ) {
|
294 |
+
event.preventDefault();
|
295 |
+
$( '.preview-document .order-search-label').text( '#' + $( this ).data( 'order_id' ) );
|
296 |
+
$previewOrderIdInput.val( $( this ).data( 'order_id' ) ).change();
|
297 |
+
$( this ).closest( 'div' ).hide(); // hide results div
|
298 |
+
$( this ).closest( 'div' ).children( 'a' ).remove(); // remove all results
|
299 |
+
triggerPreview();
|
300 |
+
} );
|
301 |
+
|
302 |
+
// Trigger the Preview
|
303 |
+
function triggerPreview( timeoutDuration ) {
|
304 |
+
loadPreviewData();
|
305 |
+
clearTimeout( previewTimeout );
|
306 |
+
previewTimeout = setTimeout( function() { ajaxLoadPreview() }, timeoutDuration );
|
307 |
+
}
|
308 |
+
|
309 |
+
// Settings excluded from trigger the Preview
|
310 |
+
function settingIsExcludedForPreview( settingName ) {
|
311 |
+
let excluded = false;
|
312 |
+
if ( ! settingName ) {
|
313 |
+
return excluded;
|
314 |
+
}
|
315 |
+
let nameKey = settingName.includes( '[' ) ? settingName.match(/\[(.*?)\]/)[1] : settingName;
|
316 |
+
if ( $.inArray( nameKey, wpo_wcpdf_admin.preview_excluded_settings ) !== -1 ) {
|
317 |
+
excluded = true;
|
318 |
+
}
|
319 |
+
return excluded;
|
320 |
+
}
|
321 |
+
|
322 |
+
// Clear preview order search results/input
|
323 |
+
$( document ).on( 'click', 'img.preview-order-search-clear', function( event ) {
|
324 |
+
event.preventDefault();
|
325 |
+
$( this ).closest( 'div' ).find( 'input#preview-order-search' ).val( '' );
|
326 |
+
$( this ).closest( '.preview-data' ).find( '#preview-order-search-results' ).children( 'a' ).remove(); // remove previous results
|
327 |
+
$( this ).closest( '.preview-data' ).find( '#preview-order-search-results' ).children( '.error' ).remove(); // remove previous errors
|
328 |
+
$( this ).closest( '.preview-data' ).find( '#preview-order-search-results' ).hide();
|
329 |
+
$( this ).hide();
|
330 |
+
} );
|
331 |
+
|
332 |
+
// Trigger preview on document selection and change the document type input with the new value
|
333 |
+
$( '#wpo-wcpdf-preview-wrapper ul.preview-data-option-list li' ).on( 'click', function() {
|
334 |
+
let inputName = $( this ).closest( 'ul' ).data( 'input-name' );
|
335 |
+
let $input = $( '#wpo-wcpdf-preview-wrapper :input[name='+inputName+']');
|
336 |
+
$input.val( $( this ).data( 'value' ) ).trigger( 'change' );
|
337 |
+
} );
|
338 |
+
|
339 |
+
// Detect document type input changes and apply the same document title to the document selector
|
340 |
+
$previewDocumentTypeInput.on( 'change', function() {
|
341 |
+
let inputValue = $( this ).val();
|
342 |
+
if ( inputValue.length ) {
|
343 |
+
let inputName = $( this ).attr( 'name' );
|
344 |
+
let $ul = $( '#wpo-wcpdf-preview-wrapper ul.preview-data-option-list[data-input-name='+inputName+']' );
|
345 |
+
let $li = $ul.find( 'li[data-value='+inputValue+']' );
|
346 |
+
$ul.parent().find( '.current-label' ).text( $li.text() );
|
347 |
+
triggerPreview();
|
348 |
+
}
|
349 |
+
} ).trigger( 'change' );
|
350 |
+
|
351 |
+
// Detect order ID input changes
|
352 |
+
$previewOrderIdInput.on( 'change', function() {
|
353 |
+
triggerPreview();
|
354 |
+
} ).trigger( 'change' );
|
355 |
+
|
356 |
+
// Load the Preview with AJAX
|
357 |
+
function ajaxLoadPreview() {
|
358 |
+
let worker = wpo_wcpdf_admin.pdfjs_worker;
|
359 |
+
let canvasId = 'preview-canvas';
|
360 |
+
let data = {
|
361 |
+
action: 'wpo_wcpdf_preview',
|
362 |
+
security: previewNonce,
|
363 |
+
order_id: previewOrderId,
|
364 |
+
document_type: previewDocumentType,
|
365 |
+
data: previewSettingsFormData,
|
366 |
+
};
|
367 |
+
|
368 |
+
// remove previous error notices
|
369 |
+
$preview.children( '.notice' ).remove();
|
370 |
+
|
371 |
+
// block ui
|
372 |
+
$preview.block( {
|
373 |
+
message: null,
|
374 |
+
overlayCSS: {
|
375 |
+
background: '#fff',
|
376 |
+
opacity: 0.6
|
377 |
+
}
|
378 |
+
} );
|
379 |
+
|
380 |
+
previewXhr = $.ajax( {
|
381 |
+
type: 'POST',
|
382 |
+
url: wpo_wcpdf_admin.ajaxurl,
|
383 |
+
data: data,
|
384 |
+
beforeSend: function( jqXHR, settings ) {
|
385 |
+
if ( previewXhr != null ) {
|
386 |
+
previewXhr.abort();
|
387 |
+
}
|
388 |
+
},
|
389 |
+
success: function( response, textStatus, jqXHR ) {
|
390 |
+
if ( response.data.error ) {
|
391 |
+
$( '#'+canvasId ).remove();
|
392 |
+
$preview.append( '<div class="notice notice-error inline"><p>'+response.data.error+'</p></div>' );
|
393 |
+
} else if ( response.data.pdf_data ) {
|
394 |
+
$( '#'+canvasId ).remove();
|
395 |
+
$preview.append( '<canvas id="'+canvasId+'" style="width:100%;"></canvas>' );
|
396 |
+
renderPdf( worker, canvasId, response.data.pdf_data );
|
397 |
+
}
|
398 |
+
|
399 |
+
$preview.unblock();
|
400 |
+
},
|
401 |
+
error: function( jqXHR, textStatus, errorThrown ) {
|
402 |
+
if ( textStatus != 'abort' ) {
|
403 |
+
let errorMessage = jqXHR.status + ': ' + jqXHR.statusText
|
404 |
+
$( '#'+canvasId ).remove();
|
405 |
+
$preview.append( '<div class="notice notice-error inline"><p>'+errorMessage+'</p></div>' );
|
406 |
+
$preview.unblock();
|
407 |
+
}
|
408 |
+
},
|
409 |
+
} );
|
410 |
+
}
|
411 |
+
|
412 |
+
// pdf_js (third party library code)
|
413 |
+
function renderPdf( worker, canvasId, pdfData ) {
|
414 |
+
// atob() is used to convert base64 encoded PDF to binary-like data.
|
415 |
+
// (See also https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding.)
|
416 |
+
pdfData = window.atob( pdfData );
|
417 |
+
|
418 |
+
// Loaded via <script> tag, create shortcut to access PDF.js exports.
|
419 |
+
let pdfjsLib = window['pdfjs-dist/build/pdf'];
|
420 |
+
|
421 |
+
// The workerSrc property shall be specified.
|
422 |
+
pdfjsLib.GlobalWorkerOptions.workerSrc = worker;
|
423 |
+
|
424 |
+
// Using DocumentInitParameters object to load binary data.
|
425 |
+
let loadingTask = pdfjsLib.getDocument( { data: pdfData } );
|
426 |
+
loadingTask.promise.then( function( pdf ) {
|
427 |
+
console.log( 'PDF loaded' );
|
428 |
+
|
429 |
+
// Fetch the first page
|
430 |
+
let pageNumber = 1;
|
431 |
+
pdf.getPage( pageNumber ).then( function( page ) {
|
432 |
+
console.log( 'Page loaded' );
|
433 |
+
|
434 |
+
let scale = 2;
|
435 |
+
let viewport = page.getViewport( { scale: scale } );
|
436 |
+
|
437 |
+
// Prepare canvas using PDF page dimensions
|
438 |
+
let canvas = document.getElementById( canvasId );
|
439 |
+
let context = canvas.getContext( '2d' );
|
440 |
+
|
441 |
+
canvas.height = viewport.height;
|
442 |
+
canvas.width = viewport.width;
|
443 |
+
|
444 |
+
// Render PDF page into canvas context
|
445 |
+
let renderContext = {
|
446 |
+
canvasContext: context,
|
447 |
+
viewport: viewport
|
448 |
+
};
|
449 |
+
let renderTask = page.render( renderContext );
|
450 |
+
renderTask.promise.then( function() {
|
451 |
+
console.log( 'Page rendered' );
|
452 |
+
} );
|
453 |
+
} );
|
454 |
+
}, function( reason ) {
|
455 |
+
// PDF loading error
|
456 |
+
console.error( reason );
|
457 |
+
} );
|
458 |
+
}
|
459 |
+
|
460 |
+
// Preview on user input
|
461 |
+
$( '#preview-order-search' ).on( 'keyup paste', function( event ) {
|
462 |
+
let $elem = $( this );
|
463 |
+
$elem.addClass( 'ajax-waiting' );
|
464 |
+
let duration = event.type == 'keyup' ? 1000 : 0;
|
465 |
+
loadPreviewData();
|
466 |
+
clearTimeout( previewSearchTimeout );
|
467 |
+
previewSearchTimeout = setTimeout( function() { previewOrderSearch( $elem ) }, duration );
|
468 |
+
} );
|
469 |
+
|
470 |
+
// Preview order search
|
471 |
+
function previewOrderSearch( $elem ) {
|
472 |
+
let $div = $elem.closest( '.preview-data' ).find( '#preview-order-search-results' );
|
473 |
+
let value = $elem.val();
|
474 |
+
let nonce = $elem.data( 'nonce' );
|
475 |
+
let action = 'wpo_wcpdf_preview_order_search';
|
476 |
+
|
477 |
+
let data = {
|
478 |
+
security: nonce,
|
479 |
+
action: action,
|
480 |
+
search: value,
|
481 |
+
document_type: previewDocumentType,
|
482 |
+
};
|
483 |
+
|
484 |
+
$div.parent().find( 'img.preview-order-search-clear' ).hide(); // hide the clear button
|
485 |
+
$div.children( '.error' ).remove(); // remove previous errors
|
486 |
+
$div.children( 'a' ).remove(); // remove previous results
|
487 |
+
$div.hide(); // hide search results
|
488 |
+
|
489 |
+
$.ajax( {
|
490 |
+
type: 'POST',
|
491 |
+
url: wpo_wcpdf_admin.ajaxurl,
|
492 |
+
data: data,
|
493 |
+
success: function( response ) {
|
494 |
+
if ( response.data ) {
|
495 |
+
if ( response.data.error ) {
|
496 |
+
$div.append( '<span class="error">'+response.data.error+'</span>' );
|
497 |
+
$div.show();
|
498 |
+
} else {
|
499 |
+
$.each( response.data, function( i, item ) {
|
500 |
+
let firstLine = '<a data-order_id="'+i+'"><span class="order-number">#'+item.order_number+'</span> - '+item.billing_first_name+' '+item.billing_last_name;
|
501 |
+
if ( item.billing_company.length > 0 ) {
|
502 |
+
firstLine = firstLine+', '+item.billing_company;
|
503 |
+
}
|
504 |
+
let secondLine = '<br><span class="date">'+item.date_created+'</span><span class="total">'+item.total+'</span></a>';
|
505 |
+
$div.append( firstLine+secondLine );
|
506 |
+
$div.show();
|
507 |
+
} );
|
508 |
+
}
|
509 |
+
}
|
510 |
+
|
511 |
+
$elem.removeClass( 'ajax-waiting' );
|
512 |
+
$elem.closest( 'div' ).find( 'img.preview-order-search-clear' ).show();
|
513 |
+
}
|
514 |
+
} );
|
515 |
+
}
|
516 |
+
|
517 |
+
//----------> /Preview <----------//
|
518 |
+
|
519 |
+
} );
|
assets/js/admin-script.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(a){a(".edit-next-number").on("click",function(){a(this).hide(),a(this).siblings("input").prop("disabled",!1),a(this).siblings(".save-next-number.button").show()}),a(".save-next-number").on("click",function(){$input=a(this).siblings("input"),$input.addClass("ajax-waiting");var b={security:$input.data("nonce"),action:"wpo_wcpdf_set_next_number",store:$input.data("store"),number:$input.val()};xhr=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:b,success:function(){$input.removeClass("ajax-waiting"),$input.siblings(".edit-next-number").show(),$input.prop("disabled","disabled"),$input.siblings(".save-next-number.button").hide()}})}),a("[name='wpo_wcpdf_documents_settings_invoice[display_number]']").on("change",function(){"order_number"==a(this).val()?a(this).closest("td").find(".description").slideDown():a(this).closest("td").find(".description").hide()}).trigger("change")});
|
1 |
+
jQuery(function(a){function b(){l=u.val(),m=v.val(),n=w.val(),o=x.serialize()}function c(){v.val(v.data("default")).trigger("change")}function d(){u.val("").trigger("change")}function e(){!1==s.attr("data-preview-states-lock")&&(1200>=a(this).width()&&(1200<r||a(this).width()==r)?"full"==s.attr("data-preview-state")?(s.find(".preview-document").show(),s.find(".sidebar").hide(),s.find(".slide-left").hide(),s.find(".slide-right").show(),s.attr("data-preview-states",2),s.attr("data-preview-state","full"),s.attr("data-from-preview-state","")):(s.find(".preview-document").hide(),s.find(".sidebar").show(),s.find(".slide-left").show(),s.find(".slide-right").hide(),s.attr("data-preview-states",2),s.attr("data-preview-state","closed"),s.attr("data-from-preview-state","")):1200<a(this).width()&&(1200>=r||a(this).width()==r)&&("full"==s.attr("data-preview-state")?(s.find(".preview-document").show(),s.find(".sidebar").hide(),s.find(".slide-left").hide(),s.find(".slide-right").show(),s.attr("data-preview-states",3),s.attr("data-preview-state","full"),s.attr("data-from-preview-state","sidebar"),s.addClass("static")):"closed"==s.attr("data-preview-state")&&a(this).width()!==r?(s.find(".preview-document").hide(),s.find(".sidebar").show(),s.find(".slide-left").show(),s.find(".slide-right").hide(),s.attr("data-preview-states",3),s.attr("data-preview-state","closed"),s.attr("data-from-preview-state",""),s.removeClass("static")):(s.find(".preview-document, .sidebar").show(),s.find(".slide-left, .slide-right").show(),s.attr("data-preview-states",3),s.attr("data-preview-state","sidebar"),s.attr("data-from-preview-state",""),s.removeClass("static")))),r=a(this).width()}function f(a){window.scrollTo(0,0);setTimeout(function(){a.addClass("static")},300)}function g(a){b(),clearTimeout(p),p=setTimeout(function(){i()},a)}function h(b){let c=!1;if(!b)return c;let d=b.includes("[")?b.match(/\[(.*?)\]/)[1]:b;return-1!==a.inArray(d,wpo_wcpdf_admin.preview_excluded_settings)&&(c=!0),c}function i(){let b=wpo_wcpdf_admin.pdfjs_worker,c="preview-canvas",d={action:"wpo_wcpdf_preview",security:n,order_id:l,document_type:m,data:o};t.children(".notice").remove(),t.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),y=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:d,beforeSend:function(){null!=y&&y.abort()},success:function(d){d.data.error?(a("#"+c).remove(),t.append("<div class=\"notice notice-error inline\"><p>"+d.data.error+"</p></div>")):d.data.pdf_data&&(a("#"+c).remove(),t.append("<canvas id=\""+c+"\" style=\"width:100%;\"></canvas>"),j(b,c,d.data.pdf_data)),t.unblock()},error:function(b,d){if("abort"!=d){let d=b.status+": "+b.statusText;a("#"+c).remove(),t.append("<div class=\"notice notice-error inline\"><p>"+d+"</p></div>"),t.unblock()}}})}function j(a,b,c){c=window.atob(c);let d=window["pdfjs-dist/build/pdf"];d.GlobalWorkerOptions.workerSrc=a;let e=d.getDocument({data:c});e.promise.then(function(a){console.log("PDF loaded");a.getPage(1).then(function(a){console.log("Page loaded");let c=a.getViewport({scale:2}),d=document.getElementById(b),e=d.getContext("2d");d.height=c.height,d.width=c.width;let f=a.render({canvasContext:e,viewport:c});f.promise.then(function(){console.log("Page rendered")})})},function(a){console.error(a)})}function k(b){let c=b.closest(".preview-data").find("#preview-order-search-results"),d=b.val(),e=b.data("nonce"),f={security:e,action:"wpo_wcpdf_preview_order_search",search:d,document_type:m};c.parent().find("img.preview-order-search-clear").hide(),c.children(".error").remove(),c.children("a").remove(),c.hide(),a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:f,success:function(d){d.data&&(d.data.error?(c.append("<span class=\"error\">"+d.data.error+"</span>"),c.show()):a.each(d.data,function(a,b){let d="<a data-order_id=\""+a+"\"><span class=\"order-number\">#"+b.order_number+"</span> - "+b.billing_first_name+" "+b.billing_last_name;0<b.billing_company.length&&(d=d+", "+b.billing_company);let e="<br><span class=\"date\">"+b.date_created+"</span><span class=\"total\">"+b.total+"</span></a>";c.append(d+e),c.show()})),b.removeClass("ajax-waiting"),b.closest("div").find("img.preview-order-search-clear").show()}})}a(".wcpdf-extensions .more").hide(),a(".wcpdf-extensions > li").on("click",function(){a(this).toggleClass("expanded"),a(this).find(".more").slideToggle()}),a(".edit-next-number").on("click",function(){a(this).hide(),a(this).siblings("input").prop("disabled",!1),a(this).siblings(".save-next-number.button").show()}),a(".save-next-number").on("click",function(){$input=a(this).siblings("input"),$input.addClass("ajax-waiting");let b={security:$input.data("nonce"),action:"wpo_wcpdf_set_next_number",store:$input.data("store"),number:$input.val()};xhr=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:b,success:function(){$input.removeClass("ajax-waiting"),$input.siblings(".edit-next-number").show(),$input.prop("disabled","disabled"),$input.siblings(".save-next-number.button").hide()}})}),a("[name='wpo_wcpdf_documents_settings_invoice[display_number]']").on("change",function(){"order_number"==a(this).val()?a(this).closest("td").find(".description").slideDown():a(this).closest("td").find(".description").hide()}).trigger("change"),a(".wcpdf_document_settings_sections > h2").on("click",function(){a(this).parent().find("ul").toggleClass("active")});let l,m,n,o,p,q,r,s=a("#wpo-wcpdf-preview-wrapper"),t=a("#wpo-wcpdf-preview-wrapper .preview"),u=a("#wpo-wcpdf-preview-wrapper input[name=\"order_id\"]"),v=a("#wpo-wcpdf-preview-wrapper input[name=\"document_type\"]"),w=a("#wpo-wcpdf-preview-wrapper input[name=\"nonce\"]"),x=a("#wpo-wcpdf-settings"),y=null;a(document).ready(function(){c(),d(),b(),r=a(window).width(),e()}),a(window).on("resize",e),a(".slide-left").on("click",function(){let a=s.attr("data-preview-states"),b=s.attr("data-preview-state");s.find(".preview-data-wrapper ul").removeClass("active"),3==a?"closed"==b?(s.find(".preview-document").show(),s.find(".slide-right").show(),s.attr("data-preview-state","sidebar"),s.attr("data-from-preview-state","closed")):(s.find(".slide-left").hide(),s.find(".sidebar").delay(300).hide(0),s.attr("data-preview-state","full"),s.attr("data-from-preview-state","sidebar"),f(s)):(s.find(".preview-document").show(),s.find(".slide-left").hide(),s.find(".slide-right").show(),s.attr("data-preview-state","full"),s.attr("data-from-preview-state","closed"),f(s))}),a(".slide-right").on("click",function(){let a=s.attr("data-preview-states"),b=s.attr("data-preview-state");s.find(".preview-data-wrapper ul").removeClass("active"),3==a?"full"==b?(s.find(".slide-left").delay(400).show(0),s.find(".sidebar").show(),s.attr("data-preview-state","sidebar"),s.attr("data-from-preview-state","full")):(s.find(".preview-document").hide(300),s.find(".slide-right").hide(),s.attr("data-preview-state","closed"),s.attr("data-from-preview-state","sidebar")):(s.find(".preview-document").hide(300),s.find(".slide-left").show(),s.find(".slide-right").hide(),s.attr("data-preview-state","closed"),s.attr("data-from-preview-state","full")),s.removeClass("static")}),a(".preview-document .preview-data p").on("click",function(){let b=a(this).closest(".preview-data");b.siblings(".preview-data").find("ul").removeClass("active"),b.find("ul").toggleClass("active")}),a(".preview-document .preview-data ul > li").on("click",function(){let b=a(this).closest(".preview-data");b.find("ul").toggleClass("active"),a(this).hasClass("order-search")?(b.find("p.last-order").hide(),b.find("input[name=\"preview-order-search\"]").addClass("active"),b.find("p.order-search").show().find(".order-search-label").text(a(this).text())):(b.find("p.last-order").show(),b.find("p.order-search").hide(),b.find("input[name=\"preview-order-search\"]").removeClass("active").val(""),b.find("#preview-order-search-results").hide(),b.find("img.preview-order-search-clear").hide(),d(),g())}),a(document).ready(g()),a(document).on("keyup paste","#wpo-wcpdf-settings input:not([type=checkbox]), #wpo-wcpdf-settings textarea, #wpo-wcpdf-settings select:not(.dropdown-add-field)",function(b){if(!h(a(this).attr("name"))){let a="keyup"==b.type?1e3:0;g(a)}}),a(document).on("click","#wpo-wcpdf-settings select:not(.dropdown-add-field) option",function(){h(a(this).parent().attr("name"))||g()}),a(document).on("change","#wpo-wcpdf-settings input[type=\"checkbox\"]",function(){h(a(this).attr("name"))||g(1e3)}),a(document).on("change","#wpo-wcpdf-settings input[type=\"radio\"], #wpo-wcpdf-settings select",function(){h(a(this).attr("name"))||g()}),a(document.body).on("wpo-wcpdf-media-upload-setting-updated",function(){g()}),a(document).on("click",".wpo_remove_image_button",function(){g()}),a(document).on("wpo_wcpdf_refresh_preview",function(a,b){g(b)}),a(document).on("click","#preview-order-search-results a",function(b){b.preventDefault(),a(".preview-document .order-search-label").text("#"+a(this).data("order_id")),u.val(a(this).data("order_id")).change(),a(this).closest("div").hide(),a(this).closest("div").children("a").remove(),g()}),a(document).on("click","img.preview-order-search-clear",function(b){b.preventDefault(),a(this).closest("div").find("input#preview-order-search").val(""),a(this).closest(".preview-data").find("#preview-order-search-results").children("a").remove(),a(this).closest(".preview-data").find("#preview-order-search-results").children(".error").remove(),a(this).closest(".preview-data").find("#preview-order-search-results").hide(),a(this).hide()}),a("#wpo-wcpdf-preview-wrapper ul.preview-data-option-list li").on("click",function(){let b=a(this).closest("ul").data("input-name"),c=a("#wpo-wcpdf-preview-wrapper :input[name="+b+"]");c.val(a(this).data("value")).trigger("change")}),v.on("change",function(){let b=a(this).val();if(b.length){let c=a(this).attr("name"),d=a("#wpo-wcpdf-preview-wrapper ul.preview-data-option-list[data-input-name="+c+"]"),e=d.find("li[data-value="+b+"]");d.parent().find(".current-label").text(e.text()),g()}}).trigger("change"),u.on("change",function(){g()}).trigger("change"),a("#preview-order-search").on("keyup paste",function(c){let d=a(this);d.addClass("ajax-waiting");let e="keyup"==c.type?1e3:0;b(),clearTimeout(q),q=setTimeout(function(){k(d)},e)})});
|
assets/js/media-upload.js
CHANGED
@@ -29,16 +29,16 @@ jQuery(document).ready(function($) {
|
|
29 |
Â
// When an image is selected, run a callback.
|
30 |
Â
file_frame.on( 'select', function() {
|
31 |
Â
// get target elements
|
32 |
-
let $input
|
33 |
-
let $
|
34 |
Â
|
35 |
Â
// We set multiple to false so only get one image from the uploader
|
36 |
Â
let attachment = file_frame.state().get( 'selection' ).first().toJSON();
|
37 |
Â
|
38 |
Â
// set the value of the input field to the attachment id and set the image until we have an ajax response
|
39 |
Â
$input.val( attachment.id );
|
40 |
-
if ( $
|
41 |
-
$
|
42 |
Â
}
|
43 |
Â
$( '.attachment-resolution, .attachment-resolution-warning' ).remove();
|
44 |
Â
|
@@ -60,7 +60,11 @@ jQuery(document).ready(function($) {
|
|
60 |
Â
if ( response && typeof response.success != 'undefined' && response.success === true ) {
|
61 |
Â
$settings_wrapper.html( response.data );
|
62 |
Â
}
|
63 |
-
$settings_wrapper.removeAttr( 'style' );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
64 |
Â
},
|
65 |
Â
error: function (xhr, ajaxOptions, thrownError) {
|
66 |
Â
$settings_wrapper.removeAttr( 'style' );
|
@@ -76,12 +80,12 @@ jQuery(document).ready(function($) {
|
|
76 |
Â
$( '#wpo-wcpdf-settings, .wpo-wcpdf-setup' ).on( 'click', '.wpo_remove_image_button', function( event ){
|
77 |
Â
// get source & target elements
|
78 |
Â
let $settings_wrapper = $(this).parent();
|
79 |
-
let $input = $settings_wrapper.find( 'input
|
80 |
-
let $
|
81 |
Â
|
82 |
Â
// clear all inputs & warnings
|
83 |
Â
$input.val( '' );
|
84 |
-
$
|
85 |
Â
$( this ).remove();
|
86 |
Â
$( '.attachment-resolution, .attachment-resolution-warning' ).remove();
|
87 |
Â
});
|
29 |
Â
// When an image is selected, run a callback.
|
30 |
Â
file_frame.on( 'select', function() {
|
31 |
Â
// get target elements
|
32 |
+
let $input = $settings_wrapper.find( 'input.media-upload-id' );
|
33 |
+
let $preview = $settings_wrapper.find( 'img.media-upload-preview' );
|
34 |
Â
|
35 |
Â
// We set multiple to false so only get one image from the uploader
|
36 |
Â
let attachment = file_frame.state().get( 'selection' ).first().toJSON();
|
37 |
Â
|
38 |
Â
// set the value of the input field to the attachment id and set the image until we have an ajax response
|
39 |
Â
$input.val( attachment.id );
|
40 |
+
if ( $preview.length ) {
|
41 |
+
$preview.attr( 'src', attachment.url );
|
42 |
Â
}
|
43 |
Â
$( '.attachment-resolution, .attachment-resolution-warning' ).remove();
|
44 |
Â
|
60 |
Â
if ( response && typeof response.success != 'undefined' && response.success === true ) {
|
61 |
Â
$settings_wrapper.html( response.data );
|
62 |
Â
}
|
63 |
+
$settings_wrapper.removeAttr( 'style' );
|
64 |
+
|
65 |
+
// custom trigger
|
66 |
+
$input = $settings_wrapper.find( 'input.media-upload-id' );
|
67 |
+
$( document.body ).trigger( 'wpo-wcpdf-media-upload-setting-updated', [ $input ] );
|
68 |
Â
},
|
69 |
Â
error: function (xhr, ajaxOptions, thrownError) {
|
70 |
Â
$settings_wrapper.removeAttr( 'style' );
|
80 |
Â
$( '#wpo-wcpdf-settings, .wpo-wcpdf-setup' ).on( 'click', '.wpo_remove_image_button', function( event ){
|
81 |
Â
// get source & target elements
|
82 |
Â
let $settings_wrapper = $(this).parent();
|
83 |
+
let $input = $settings_wrapper.find( 'input.media-upload-id' );
|
84 |
+
let $preview = $settings_wrapper.find( 'img.media-upload-preview' );
|
85 |
Â
|
86 |
Â
// clear all inputs & warnings
|
87 |
Â
$input.val( '' );
|
88 |
+
$preview.remove();
|
89 |
Â
$( this ).remove();
|
90 |
Â
$( '.attachment-resolution, .attachment-resolution-warning' ).remove();
|
91 |
Â
});
|
assets/js/media-upload.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(a){var b;a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_upload_image_button",function(c){c.preventDefault();let d=a(this).parent();return b?void b.open():void(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){let c=d.find("input
|
1 |
+
jQuery(document).ready(function(a){var b;a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_upload_image_button",function(c){c.preventDefault();let d=a(this).parent();return b?void b.open():void(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){let c=d.find("input.media-upload-id"),e=d.find("img.media-upload-preview"),f=b.state().get("selection").first().toJSON();c.val(f.id),e.length&&e.attr("src",f.url),a(".attachment-resolution, .attachment-resolution-warning").remove(),d.css("opacity","0.25");let g={security:c.data("ajax_nonce"),action:"wpo_wcpdf_get_media_upload_setting_html",args:c.data("settings_callback_args"),attachment_id:f.id};xhr=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:g,success:function(b){b&&"undefined"!=typeof b.success&&!0===b.success&&d.html(b.data),d.removeAttr("style"),c=d.find("input.media-upload-id"),a(document.body).trigger("wpo-wcpdf-media-upload-setting-updated",[c])},error:function(){d.removeAttr("style")}})}),b.open())}),a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_remove_image_button",function(){let b=a(this).parent(),c=b.find("input.media-upload-id"),d=b.find("img.media-upload-preview");c.val(""),d.remove(),a(this).remove(),a(".attachment-resolution, .attachment-resolution-warning").remove()})});
|
assets/js/pdf_js/pdf.js
ADDED
@@ -0,0 +1,14618 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/**
|
2 |
+
* @licstart The following is the entire license notice for the
|
3 |
+
* Javascript code in this page
|
4 |
+
*
|
5 |
+
* Copyright 2021 Mozilla Foundation
|
6 |
+
*
|
7 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8 |
+
* you may not use this file except in compliance with the License.
|
9 |
+
* You may obtain a copy of the License at
|
10 |
+
*
|
11 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12 |
+
*
|
13 |
+
* Unless required by applicable law or agreed to in writing, software
|
14 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 |
+
* See the License for the specific language governing permissions and
|
17 |
+
* limitations under the License.
|
18 |
+
*
|
19 |
+
* @licend The above is the entire license notice for the
|
20 |
+
* Javascript code in this page
|
21 |
+
*/
|
22 |
+
|
23 |
+
(function webpackUniversalModuleDefinition(root, factory) {
|
24 |
+
if(typeof exports === 'object' && typeof module === 'object')
|
25 |
+
module.exports = factory();
|
26 |
+
else if(typeof define === 'function' && define.amd)
|
27 |
+
define("pdfjs-dist/build/pdf", [], factory);
|
28 |
+
else if(typeof exports === 'object')
|
29 |
+
exports["pdfjs-dist/build/pdf"] = factory();
|
30 |
+
else
|
31 |
+
root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
|
32 |
+
})(this, function() {
|
33 |
+
return /******/ (() => { // webpackBootstrap
|
34 |
+
/******/ "use strict";
|
35 |
+
/******/ var __webpack_modules__ = ([
|
36 |
+
/* 0 */,
|
37 |
+
/* 1 */
|
38 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
39 |
+
|
40 |
+
|
41 |
+
|
42 |
+
Object.defineProperty(exports, "__esModule", ({
|
43 |
+
value: true
|
44 |
+
}));
|
45 |
+
exports.addLinkAttributes = addLinkAttributes;
|
46 |
+
exports.deprecated = deprecated;
|
47 |
+
exports.getFilenameFromUrl = getFilenameFromUrl;
|
48 |
+
exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
|
49 |
+
exports.isDataScheme = isDataScheme;
|
50 |
+
exports.isFetchSupported = isFetchSupported;
|
51 |
+
exports.isPdfFile = isPdfFile;
|
52 |
+
exports.isValidFetchUrl = isValidFetchUrl;
|
53 |
+
exports.loadScript = loadScript;
|
54 |
+
exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0;
|
55 |
+
|
56 |
+
var _util = __w_pdfjs_require__(2);
|
57 |
+
|
58 |
+
const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
|
59 |
+
exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
|
60 |
+
const SVG_NS = "http://www.w3.org/2000/svg";
|
61 |
+
|
62 |
+
class BaseCanvasFactory {
|
63 |
+
constructor() {
|
64 |
+
if (this.constructor === BaseCanvasFactory) {
|
65 |
+
(0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
create(width, height) {
|
70 |
+
(0, _util.unreachable)("Abstract method `create` called.");
|
71 |
+
}
|
72 |
+
|
73 |
+
reset(canvasAndContext, width, height) {
|
74 |
+
if (!canvasAndContext.canvas) {
|
75 |
+
throw new Error("Canvas is not specified");
|
76 |
+
}
|
77 |
+
|
78 |
+
if (width <= 0 || height <= 0) {
|
79 |
+
throw new Error("Invalid canvas size");
|
80 |
+
}
|
81 |
+
|
82 |
+
canvasAndContext.canvas.width = width;
|
83 |
+
canvasAndContext.canvas.height = height;
|
84 |
+
}
|
85 |
+
|
86 |
+
destroy(canvasAndContext) {
|
87 |
+
if (!canvasAndContext.canvas) {
|
88 |
+
throw new Error("Canvas is not specified");
|
89 |
+
}
|
90 |
+
|
91 |
+
canvasAndContext.canvas.width = 0;
|
92 |
+
canvasAndContext.canvas.height = 0;
|
93 |
+
canvasAndContext.canvas = null;
|
94 |
+
canvasAndContext.context = null;
|
95 |
+
}
|
96 |
+
|
97 |
+
}
|
98 |
+
|
99 |
+
exports.BaseCanvasFactory = BaseCanvasFactory;
|
100 |
+
|
101 |
+
class DOMCanvasFactory extends BaseCanvasFactory {
|
102 |
+
constructor({
|
103 |
+
ownerDocument = globalThis.document
|
104 |
+
} = {}) {
|
105 |
+
super();
|
106 |
+
this._document = ownerDocument;
|
107 |
+
}
|
108 |
+
|
109 |
+
create(width, height) {
|
110 |
+
if (width <= 0 || height <= 0) {
|
111 |
+
throw new Error("Invalid canvas size");
|
112 |
+
}
|
113 |
+
|
114 |
+
const canvas = this._document.createElement("canvas");
|
115 |
+
|
116 |
+
const context = canvas.getContext("2d");
|
117 |
+
canvas.width = width;
|
118 |
+
canvas.height = height;
|
119 |
+
return {
|
120 |
+
canvas,
|
121 |
+
context
|
122 |
+
};
|
123 |
+
}
|
124 |
+
|
125 |
+
}
|
126 |
+
|
127 |
+
exports.DOMCanvasFactory = DOMCanvasFactory;
|
128 |
+
|
129 |
+
class BaseCMapReaderFactory {
|
130 |
+
constructor({
|
131 |
+
baseUrl = null,
|
132 |
+
isCompressed = false
|
133 |
+
}) {
|
134 |
+
if (this.constructor === BaseCMapReaderFactory) {
|
135 |
+
(0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
|
136 |
+
}
|
137 |
+
|
138 |
+
this.baseUrl = baseUrl;
|
139 |
+
this.isCompressed = isCompressed;
|
140 |
+
}
|
141 |
+
|
142 |
+
async fetch({
|
143 |
+
name
|
144 |
+
}) {
|
145 |
+
if (!this.baseUrl) {
|
146 |
+
throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
|
147 |
+
}
|
148 |
+
|
149 |
+
if (!name) {
|
150 |
+
throw new Error("CMap name must be specified.");
|
151 |
+
}
|
152 |
+
|
153 |
+
const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
|
154 |
+
const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
|
155 |
+
return this._fetchData(url, compressionType).catch(reason => {
|
156 |
+
throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
|
157 |
+
});
|
158 |
+
}
|
159 |
+
|
160 |
+
_fetchData(url, compressionType) {
|
161 |
+
(0, _util.unreachable)("Abstract method `_fetchData` called.");
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
165 |
+
|
166 |
+
exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
|
167 |
+
|
168 |
+
class DOMCMapReaderFactory extends BaseCMapReaderFactory {
|
169 |
+
_fetchData(url, compressionType) {
|
170 |
+
if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) {
|
171 |
+
return fetch(url).then(async response => {
|
172 |
+
if (!response.ok) {
|
173 |
+
throw new Error(response.statusText);
|
174 |
+
}
|
175 |
+
|
176 |
+
let cMapData;
|
177 |
+
|
178 |
+
if (this.isCompressed) {
|
179 |
+
cMapData = new Uint8Array(await response.arrayBuffer());
|
180 |
+
} else {
|
181 |
+
cMapData = (0, _util.stringToBytes)(await response.text());
|
182 |
+
}
|
183 |
+
|
184 |
+
return {
|
185 |
+
cMapData,
|
186 |
+
compressionType
|
187 |
+
};
|
188 |
+
});
|
189 |
+
}
|
190 |
+
|
191 |
+
return new Promise((resolve, reject) => {
|
192 |
+
const request = new XMLHttpRequest();
|
193 |
+
request.open("GET", url, true);
|
194 |
+
|
195 |
+
if (this.isCompressed) {
|
196 |
+
request.responseType = "arraybuffer";
|
197 |
+
}
|
198 |
+
|
199 |
+
request.onreadystatechange = () => {
|
200 |
+
if (request.readyState !== XMLHttpRequest.DONE) {
|
201 |
+
return;
|
202 |
+
}
|
203 |
+
|
204 |
+
if (request.status === 200 || request.status === 0) {
|
205 |
+
let cMapData;
|
206 |
+
|
207 |
+
if (this.isCompressed && request.response) {
|
208 |
+
cMapData = new Uint8Array(request.response);
|
209 |
+
} else if (!this.isCompressed && request.responseText) {
|
210 |
+
cMapData = (0, _util.stringToBytes)(request.responseText);
|
211 |
+
}
|
212 |
+
|
213 |
+
if (cMapData) {
|
214 |
+
resolve({
|
215 |
+
cMapData,
|
216 |
+
compressionType
|
217 |
+
});
|
218 |
+
return;
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
+
reject(new Error(request.statusText));
|
223 |
+
};
|
224 |
+
|
225 |
+
request.send(null);
|
226 |
+
});
|
227 |
+
}
|
228 |
+
|
229 |
+
}
|
230 |
+
|
231 |
+
exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
|
232 |
+
|
233 |
+
class DOMSVGFactory {
|
234 |
+
create(width, height) {
|
235 |
+
(0, _util.assert)(width > 0 && height > 0, "Invalid SVG dimensions");
|
236 |
+
const svg = document.createElementNS(SVG_NS, "svg:svg");
|
237 |
+
svg.setAttribute("version", "1.1");
|
238 |
+
svg.setAttribute("width", width + "px");
|
239 |
+
svg.setAttribute("height", height + "px");
|
240 |
+
svg.setAttribute("preserveAspectRatio", "none");
|
241 |
+
svg.setAttribute("viewBox", "0 0 " + width + " " + height);
|
242 |
+
return svg;
|
243 |
+
}
|
244 |
+
|
245 |
+
createElement(type) {
|
246 |
+
(0, _util.assert)(typeof type === "string", "Invalid SVG element type");
|
247 |
+
return document.createElementNS(SVG_NS, type);
|
248 |
+
}
|
249 |
+
|
250 |
+
}
|
251 |
+
|
252 |
+
exports.DOMSVGFactory = DOMSVGFactory;
|
253 |
+
|
254 |
+
class PageViewport {
|
255 |
+
constructor({
|
256 |
+
viewBox,
|
257 |
+
scale,
|
258 |
+
rotation,
|
259 |
+
offsetX = 0,
|
260 |
+
offsetY = 0,
|
261 |
+
dontFlip = false
|
262 |
+
}) {
|
263 |
+
this.viewBox = viewBox;
|
264 |
+
this.scale = scale;
|
265 |
+
this.rotation = rotation;
|
266 |
+
this.offsetX = offsetX;
|
267 |
+
this.offsetY = offsetY;
|
268 |
+
const centerX = (viewBox[2] + viewBox[0]) / 2;
|
269 |
+
const centerY = (viewBox[3] + viewBox[1]) / 2;
|
270 |
+
let rotateA, rotateB, rotateC, rotateD;
|
271 |
+
rotation %= 360;
|
272 |
+
|
273 |
+
if (rotation < 0) {
|
274 |
+
rotation += 360;
|
275 |
+
}
|
276 |
+
|
277 |
+
switch (rotation) {
|
278 |
+
case 180:
|
279 |
+
rotateA = -1;
|
280 |
+
rotateB = 0;
|
281 |
+
rotateC = 0;
|
282 |
+
rotateD = 1;
|
283 |
+
break;
|
284 |
+
|
285 |
+
case 90:
|
286 |
+
rotateA = 0;
|
287 |
+
rotateB = 1;
|
288 |
+
rotateC = 1;
|
289 |
+
rotateD = 0;
|
290 |
+
break;
|
291 |
+
|
292 |
+
case 270:
|
293 |
+
rotateA = 0;
|
294 |
+
rotateB = -1;
|
295 |
+
rotateC = -1;
|
296 |
+
rotateD = 0;
|
297 |
+
break;
|
298 |
+
|
299 |
+
case 0:
|
300 |
+
rotateA = 1;
|
301 |
+
rotateB = 0;
|
302 |
+
rotateC = 0;
|
303 |
+
rotateD = -1;
|
304 |
+
break;
|
305 |
+
|
306 |
+
default:
|
307 |
+
throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
|
308 |
+
}
|
309 |
+
|
310 |
+
if (dontFlip) {
|
311 |
+
rotateC = -rotateC;
|
312 |
+
rotateD = -rotateD;
|
313 |
+
}
|
314 |
+
|
315 |
+
let offsetCanvasX, offsetCanvasY;
|
316 |
+
let width, height;
|
317 |
+
|
318 |
+
if (rotateA === 0) {
|
319 |
+
offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
|
320 |
+
offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
|
321 |
+
width = Math.abs(viewBox[3] - viewBox[1]) * scale;
|
322 |
+
height = Math.abs(viewBox[2] - viewBox[0]) * scale;
|
323 |
+
} else {
|
324 |
+
offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
|
325 |
+
offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
|
326 |
+
width = Math.abs(viewBox[2] - viewBox[0]) * scale;
|
327 |
+
height = Math.abs(viewBox[3] - viewBox[1]) * scale;
|
328 |
+
}
|
329 |
+
|
330 |
+
this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
|
331 |
+
this.width = width;
|
332 |
+
this.height = height;
|
333 |
+
}
|
334 |
+
|
335 |
+
clone({
|
336 |
+
scale = this.scale,
|
337 |
+
rotation = this.rotation,
|
338 |
+
offsetX = this.offsetX,
|
339 |
+
offsetY = this.offsetY,
|
340 |
+
dontFlip = false
|
341 |
+
} = {}) {
|
342 |
+
return new PageViewport({
|
343 |
+
viewBox: this.viewBox.slice(),
|
344 |
+
scale,
|
345 |
+
rotation,
|
346 |
+
offsetX,
|
347 |
+
offsetY,
|
348 |
+
dontFlip
|
349 |
+
});
|
350 |
+
}
|
351 |
+
|
352 |
+
convertToViewportPoint(x, y) {
|
353 |
+
return _util.Util.applyTransform([x, y], this.transform);
|
354 |
+
}
|
355 |
+
|
356 |
+
convertToViewportRectangle(rect) {
|
357 |
+
const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
|
358 |
+
|
359 |
+
const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
|
360 |
+
|
361 |
+
return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
|
362 |
+
}
|
363 |
+
|
364 |
+
convertToPdfPoint(x, y) {
|
365 |
+
return _util.Util.applyInverseTransform([x, y], this.transform);
|
366 |
+
}
|
367 |
+
|
368 |
+
}
|
369 |
+
|
370 |
+
exports.PageViewport = PageViewport;
|
371 |
+
|
372 |
+
class RenderingCancelledException extends _util.BaseException {
|
373 |
+
constructor(msg, type) {
|
374 |
+
super(msg);
|
375 |
+
this.type = type;
|
376 |
+
}
|
377 |
+
|
378 |
+
}
|
379 |
+
|
380 |
+
exports.RenderingCancelledException = RenderingCancelledException;
|
381 |
+
const LinkTarget = {
|
382 |
+
NONE: 0,
|
383 |
+
SELF: 1,
|
384 |
+
BLANK: 2,
|
385 |
+
PARENT: 3,
|
386 |
+
TOP: 4
|
387 |
+
};
|
388 |
+
exports.LinkTarget = LinkTarget;
|
389 |
+
|
390 |
+
function addLinkAttributes(link, {
|
391 |
+
url,
|
392 |
+
target,
|
393 |
+
rel,
|
394 |
+
enabled = true
|
395 |
+
} = {}) {
|
396 |
+
(0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.');
|
397 |
+
const urlNullRemoved = (0, _util.removeNullCharacters)(url);
|
398 |
+
|
399 |
+
if (enabled) {
|
400 |
+
link.href = link.title = urlNullRemoved;
|
401 |
+
} else {
|
402 |
+
link.href = "";
|
403 |
+
link.title = `Disabled: ${urlNullRemoved}`;
|
404 |
+
|
405 |
+
link.onclick = () => {
|
406 |
+
return false;
|
407 |
+
};
|
408 |
+
}
|
409 |
+
|
410 |
+
let targetStr = "";
|
411 |
+
|
412 |
+
switch (target) {
|
413 |
+
case LinkTarget.NONE:
|
414 |
+
break;
|
415 |
+
|
416 |
+
case LinkTarget.SELF:
|
417 |
+
targetStr = "_self";
|
418 |
+
break;
|
419 |
+
|
420 |
+
case LinkTarget.BLANK:
|
421 |
+
targetStr = "_blank";
|
422 |
+
break;
|
423 |
+
|
424 |
+
case LinkTarget.PARENT:
|
425 |
+
targetStr = "_parent";
|
426 |
+
break;
|
427 |
+
|
428 |
+
case LinkTarget.TOP:
|
429 |
+
targetStr = "_top";
|
430 |
+
break;
|
431 |
+
}
|
432 |
+
|
433 |
+
link.target = targetStr;
|
434 |
+
link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
|
435 |
+
}
|
436 |
+
|
437 |
+
function isDataScheme(url) {
|
438 |
+
const ii = url.length;
|
439 |
+
let i = 0;
|
440 |
+
|
441 |
+
while (i < ii && url[i].trim() === "") {
|
442 |
+
i++;
|
443 |
+
}
|
444 |
+
|
445 |
+
return url.substring(i, i + 5).toLowerCase() === "data:";
|
446 |
+
}
|
447 |
+
|
448 |
+
function isPdfFile(filename) {
|
449 |
+
return typeof filename === "string" && /\.pdf$/i.test(filename);
|
450 |
+
}
|
451 |
+
|
452 |
+
function getFilenameFromUrl(url) {
|
453 |
+
const anchor = url.indexOf("#");
|
454 |
+
const query = url.indexOf("?");
|
455 |
+
const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
|
456 |
+
return url.substring(url.lastIndexOf("/", end) + 1, end);
|
457 |
+
}
|
458 |
+
|
459 |
+
function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
|
460 |
+
if (typeof url !== "string") {
|
461 |
+
return defaultFilename;
|
462 |
+
}
|
463 |
+
|
464 |
+
if (isDataScheme(url)) {
|
465 |
+
(0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
|
466 |
+
return defaultFilename;
|
467 |
+
}
|
468 |
+
|
469 |
+
const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
|
470 |
+
const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
|
471 |
+
const splitURI = reURI.exec(url);
|
472 |
+
let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
|
473 |
+
|
474 |
+
if (suggestedFilename) {
|
475 |
+
suggestedFilename = suggestedFilename[0];
|
476 |
+
|
477 |
+
if (suggestedFilename.includes("%")) {
|
478 |
+
try {
|
479 |
+
suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
|
480 |
+
} catch (ex) {}
|
481 |
+
}
|
482 |
+
}
|
483 |
+
|
484 |
+
return suggestedFilename || defaultFilename;
|
485 |
+
}
|
486 |
+
|
487 |
+
class StatTimer {
|
488 |
+
constructor() {
|
489 |
+
this.started = Object.create(null);
|
490 |
+
this.times = [];
|
491 |
+
}
|
492 |
+
|
493 |
+
time(name) {
|
494 |
+
if (name in this.started) {
|
495 |
+
(0, _util.warn)(`Timer is already running for ${name}`);
|
496 |
+
}
|
497 |
+
|
498 |
+
this.started[name] = Date.now();
|
499 |
+
}
|
500 |
+
|
501 |
+
timeEnd(name) {
|
502 |
+
if (!(name in this.started)) {
|
503 |
+
(0, _util.warn)(`Timer has not been started for ${name}`);
|
504 |
+
}
|
505 |
+
|
506 |
+
this.times.push({
|
507 |
+
name,
|
508 |
+
start: this.started[name],
|
509 |
+
end: Date.now()
|
510 |
+
});
|
511 |
+
delete this.started[name];
|
512 |
+
}
|
513 |
+
|
514 |
+
toString() {
|
515 |
+
const outBuf = [];
|
516 |
+
let longest = 0;
|
517 |
+
|
518 |
+
for (const time of this.times) {
|
519 |
+
const name = time.name;
|
520 |
+
|
521 |
+
if (name.length > longest) {
|
522 |
+
longest = name.length;
|
523 |
+
}
|
524 |
+
}
|
525 |
+
|
526 |
+
for (const time of this.times) {
|
527 |
+
const duration = time.end - time.start;
|
528 |
+
outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
|
529 |
+
}
|
530 |
+
|
531 |
+
return outBuf.join("");
|
532 |
+
}
|
533 |
+
|
534 |
+
}
|
535 |
+
|
536 |
+
exports.StatTimer = StatTimer;
|
537 |
+
|
538 |
+
function isFetchSupported() {
|
539 |
+
return typeof fetch !== "undefined" && typeof Response !== "undefined" && "body" in Response.prototype && typeof ReadableStream !== "undefined";
|
540 |
+
}
|
541 |
+
|
542 |
+
function isValidFetchUrl(url, baseUrl) {
|
543 |
+
try {
|
544 |
+
const {
|
545 |
+
protocol
|
546 |
+
} = baseUrl ? new URL(url, baseUrl) : new URL(url);
|
547 |
+
return protocol === "http:" || protocol === "https:";
|
548 |
+
} catch (ex) {
|
549 |
+
return false;
|
550 |
+
}
|
551 |
+
}
|
552 |
+
|
553 |
+
function loadScript(src, removeScriptElement = false) {
|
554 |
+
return new Promise((resolve, reject) => {
|
555 |
+
const script = document.createElement("script");
|
556 |
+
script.src = src;
|
557 |
+
|
558 |
+
script.onload = function (evt) {
|
559 |
+
if (removeScriptElement) {
|
560 |
+
script.remove();
|
561 |
+
}
|
562 |
+
|
563 |
+
resolve(evt);
|
564 |
+
};
|
565 |
+
|
566 |
+
script.onerror = function () {
|
567 |
+
reject(new Error(`Cannot load script at: ${script.src}`));
|
568 |
+
};
|
569 |
+
|
570 |
+
(document.head || document.documentElement).appendChild(script);
|
571 |
+
});
|
572 |
+
}
|
573 |
+
|
574 |
+
function deprecated(details) {
|
575 |
+
console.log("Deprecated API usage: " + details);
|
576 |
+
}
|
577 |
+
|
578 |
+
let pdfDateStringRegex;
|
579 |
+
|
580 |
+
class PDFDateString {
|
581 |
+
static toDateObject(input) {
|
582 |
+
if (!input || !(0, _util.isString)(input)) {
|
583 |
+
return null;
|
584 |
+
}
|
585 |
+
|
586 |
+
if (!pdfDateStringRegex) {
|
587 |
+
pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
|
588 |
+
}
|
589 |
+
|
590 |
+
const matches = pdfDateStringRegex.exec(input);
|
591 |
+
|
592 |
+
if (!matches) {
|
593 |
+
return null;
|
594 |
+
}
|
595 |
+
|
596 |
+
const year = parseInt(matches[1], 10);
|
597 |
+
let month = parseInt(matches[2], 10);
|
598 |
+
month = month >= 1 && month <= 12 ? month - 1 : 0;
|
599 |
+
let day = parseInt(matches[3], 10);
|
600 |
+
day = day >= 1 && day <= 31 ? day : 1;
|
601 |
+
let hour = parseInt(matches[4], 10);
|
602 |
+
hour = hour >= 0 && hour <= 23 ? hour : 0;
|
603 |
+
let minute = parseInt(matches[5], 10);
|
604 |
+
minute = minute >= 0 && minute <= 59 ? minute : 0;
|
605 |
+
let second = parseInt(matches[6], 10);
|
606 |
+
second = second >= 0 && second <= 59 ? second : 0;
|
607 |
+
const universalTimeRelation = matches[7] || "Z";
|
608 |
+
let offsetHour = parseInt(matches[8], 10);
|
609 |
+
offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
|
610 |
+
let offsetMinute = parseInt(matches[9], 10) || 0;
|
611 |
+
offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
|
612 |
+
|
613 |
+
if (universalTimeRelation === "-") {
|
614 |
+
hour += offsetHour;
|
615 |
+
minute += offsetMinute;
|
616 |
+
} else if (universalTimeRelation === "+") {
|
617 |
+
hour -= offsetHour;
|
618 |
+
minute -= offsetMinute;
|
619 |
+
}
|
620 |
+
|
621 |
+
return new Date(Date.UTC(year, month, day, hour, minute, second));
|
622 |
+
}
|
623 |
+
|
624 |
+
}
|
625 |
+
|
626 |
+
exports.PDFDateString = PDFDateString;
|
627 |
+
|
628 |
+
/***/ }),
|
629 |
+
/* 2 */
|
630 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
631 |
+
|
632 |
+
|
633 |
+
|
634 |
+
Object.defineProperty(exports, "__esModule", ({
|
635 |
+
value: true
|
636 |
+
}));
|
637 |
+
exports.arrayByteLength = arrayByteLength;
|
638 |
+
exports.arraysToBytes = arraysToBytes;
|
639 |
+
exports.assert = assert;
|
640 |
+
exports.bytesToString = bytesToString;
|
641 |
+
exports.createObjectURL = createObjectURL;
|
642 |
+
exports.createPromiseCapability = createPromiseCapability;
|
643 |
+
exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
|
644 |
+
exports.escapeString = escapeString;
|
645 |
+
exports.getModificationDate = getModificationDate;
|
646 |
+
exports.getVerbosityLevel = getVerbosityLevel;
|
647 |
+
exports.info = info;
|
648 |
+
exports.isArrayBuffer = isArrayBuffer;
|
649 |
+
exports.isArrayEqual = isArrayEqual;
|
650 |
+
exports.isAscii = isAscii;
|
651 |
+
exports.isBool = isBool;
|
652 |
+
exports.isNum = isNum;
|
653 |
+
exports.isSameOrigin = isSameOrigin;
|
654 |
+
exports.isString = isString;
|
655 |
+
exports.objectFromMap = objectFromMap;
|
656 |
+
exports.objectSize = objectSize;
|
657 |
+
exports.removeNullCharacters = removeNullCharacters;
|
658 |
+
exports.setVerbosityLevel = setVerbosityLevel;
|
659 |
+
exports.shadow = shadow;
|
660 |
+
exports.string32 = string32;
|
661 |
+
exports.stringToBytes = stringToBytes;
|
662 |
+
exports.stringToPDFString = stringToPDFString;
|
663 |
+
exports.stringToUTF16BEString = stringToUTF16BEString;
|
664 |
+
exports.stringToUTF8String = stringToUTF8String;
|
665 |
+
exports.unreachable = unreachable;
|
666 |
+
exports.utf8StringToString = utf8StringToString;
|
667 |
+
exports.warn = warn;
|
668 |
+
exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
|
669 |
+
|
670 |
+
__w_pdfjs_require__(3);
|
671 |
+
|
672 |
+
const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
|
673 |
+
exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
|
674 |
+
const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
|
675 |
+
exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
|
676 |
+
const PermissionFlag = {
|
677 |
+
PRINT: 0x04,
|
678 |
+
MODIFY_CONTENTS: 0x08,
|
679 |
+
COPY: 0x10,
|
680 |
+
MODIFY_ANNOTATIONS: 0x20,
|
681 |
+
FILL_INTERACTIVE_FORMS: 0x100,
|
682 |
+
COPY_FOR_ACCESSIBILITY: 0x200,
|
683 |
+
ASSEMBLE: 0x400,
|
684 |
+
PRINT_HIGH_QUALITY: 0x800
|
685 |
+
};
|
686 |
+
exports.PermissionFlag = PermissionFlag;
|
687 |
+
const TextRenderingMode = {
|
688 |
+
FILL: 0,
|
689 |
+
STROKE: 1,
|
690 |
+
FILL_STROKE: 2,
|
691 |
+
INVISIBLE: 3,
|
692 |
+
FILL_ADD_TO_PATH: 4,
|
693 |
+
STROKE_ADD_TO_PATH: 5,
|
694 |
+
FILL_STROKE_ADD_TO_PATH: 6,
|
695 |
+
ADD_TO_PATH: 7,
|
696 |
+
FILL_STROKE_MASK: 3,
|
697 |
+
ADD_TO_PATH_FLAG: 4
|
698 |
+
};
|
699 |
+
exports.TextRenderingMode = TextRenderingMode;
|
700 |
+
const ImageKind = {
|
701 |
+
GRAYSCALE_1BPP: 1,
|
702 |
+
RGB_24BPP: 2,
|
703 |
+
RGBA_32BPP: 3
|
704 |
+
};
|
705 |
+
exports.ImageKind = ImageKind;
|
706 |
+
const AnnotationType = {
|
707 |
+
TEXT: 1,
|
708 |
+
LINK: 2,
|
709 |
+
FREETEXT: 3,
|
710 |
+
LINE: 4,
|
711 |
+
SQUARE: 5,
|
712 |
+
CIRCLE: 6,
|
713 |
+
POLYGON: 7,
|
714 |
+
POLYLINE: 8,
|
715 |
+
HIGHLIGHT: 9,
|
716 |
+
UNDERLINE: 10,
|
717 |
+
SQUIGGLY: 11,
|
718 |
+
STRIKEOUT: 12,
|
719 |
+
STAMP: 13,
|
720 |
+
CARET: 14,
|
721 |
+
INK: 15,
|
722 |
+
POPUP: 16,
|
723 |
+
FILEATTACHMENT: 17,
|
724 |
+
SOUND: 18,
|
725 |
+
MOVIE: 19,
|
726 |
+
WIDGET: 20,
|
727 |
+
SCREEN: 21,
|
728 |
+
PRINTERMARK: 22,
|
729 |
+
TRAPNET: 23,
|
730 |
+
WATERMARK: 24,
|
731 |
+
THREED: 25,
|
732 |
+
REDACT: 26
|
733 |
+
};
|
734 |
+
exports.AnnotationType = AnnotationType;
|
735 |
+
const AnnotationStateModelType = {
|
736 |
+
MARKED: "Marked",
|
737 |
+
REVIEW: "Review"
|
738 |
+
};
|
739 |
+
exports.AnnotationStateModelType = AnnotationStateModelType;
|
740 |
+
const AnnotationMarkedState = {
|
741 |
+
MARKED: "Marked",
|
742 |
+
UNMARKED: "Unmarked"
|
743 |
+
};
|
744 |
+
exports.AnnotationMarkedState = AnnotationMarkedState;
|
745 |
+
const AnnotationReviewState = {
|
746 |
+
ACCEPTED: "Accepted",
|
747 |
+
REJECTED: "Rejected",
|
748 |
+
CANCELLED: "Cancelled",
|
749 |
+
COMPLETED: "Completed",
|
750 |
+
NONE: "None"
|
751 |
+
};
|
752 |
+
exports.AnnotationReviewState = AnnotationReviewState;
|
753 |
+
const AnnotationReplyType = {
|
754 |
+
GROUP: "Group",
|
755 |
+
REPLY: "R"
|
756 |
+
};
|
757 |
+
exports.AnnotationReplyType = AnnotationReplyType;
|
758 |
+
const AnnotationFlag = {
|
759 |
+
INVISIBLE: 0x01,
|
760 |
+
HIDDEN: 0x02,
|
761 |
+
PRINT: 0x04,
|
762 |
+
NOZOOM: 0x08,
|
763 |
+
NOROTATE: 0x10,
|
764 |
+
NOVIEW: 0x20,
|
765 |
+
READONLY: 0x40,
|
766 |
+
LOCKED: 0x80,
|
767 |
+
TOGGLENOVIEW: 0x100,
|
768 |
+
LOCKEDCONTENTS: 0x200
|
769 |
+
};
|
770 |
+
exports.AnnotationFlag = AnnotationFlag;
|
771 |
+
const AnnotationFieldFlag = {
|
772 |
+
READONLY: 0x0000001,
|
773 |
+
REQUIRED: 0x0000002,
|
774 |
+
NOEXPORT: 0x0000004,
|
775 |
+
MULTILINE: 0x0001000,
|
776 |
+
PASSWORD: 0x0002000,
|
777 |
+
NOTOGGLETOOFF: 0x0004000,
|
778 |
+
RADIO: 0x0008000,
|
779 |
+
PUSHBUTTON: 0x0010000,
|
780 |
+
COMBO: 0x0020000,
|
781 |
+
EDIT: 0x0040000,
|
782 |
+
SORT: 0x0080000,
|
783 |
+
FILESELECT: 0x0100000,
|
784 |
+
MULTISELECT: 0x0200000,
|
785 |
+
DONOTSPELLCHECK: 0x0400000,
|
786 |
+
DONOTSCROLL: 0x0800000,
|
787 |
+
COMB: 0x1000000,
|
788 |
+
RICHTEXT: 0x2000000,
|
789 |
+
RADIOSINUNISON: 0x2000000,
|
790 |
+
COMMITONSELCHANGE: 0x4000000
|
791 |
+
};
|
792 |
+
exports.AnnotationFieldFlag = AnnotationFieldFlag;
|
793 |
+
const AnnotationBorderStyleType = {
|
794 |
+
SOLID: 1,
|
795 |
+
DASHED: 2,
|
796 |
+
BEVELED: 3,
|
797 |
+
INSET: 4,
|
798 |
+
UNDERLINE: 5
|
799 |
+
};
|
800 |
+
exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
|
801 |
+
const AnnotationActionEventType = {
|
802 |
+
E: "Mouse Enter",
|
803 |
+
X: "Mouse Exit",
|
804 |
+
D: "Mouse Down",
|
805 |
+
U: "Mouse Up",
|
806 |
+
Fo: "Focus",
|
807 |
+
Bl: "Blur",
|
808 |
+
PO: "PageOpen",
|
809 |
+
PC: "PageClose",
|
810 |
+
PV: "PageVisible",
|
811 |
+
PI: "PageInvisible",
|
812 |
+
K: "Keystroke",
|
813 |
+
F: "Format",
|
814 |
+
V: "Validate",
|
815 |
+
C: "Calculate"
|
816 |
+
};
|
817 |
+
exports.AnnotationActionEventType = AnnotationActionEventType;
|
818 |
+
const DocumentActionEventType = {
|
819 |
+
WC: "WillClose",
|
820 |
+
WS: "WillSave",
|
821 |
+
DS: "DidSave",
|
822 |
+
WP: "WillPrint",
|
823 |
+
DP: "DidPrint"
|
824 |
+
};
|
825 |
+
exports.DocumentActionEventType = DocumentActionEventType;
|
826 |
+
const PageActionEventType = {
|
827 |
+
O: "PageOpen",
|
828 |
+
C: "PageClose"
|
829 |
+
};
|
830 |
+
exports.PageActionEventType = PageActionEventType;
|
831 |
+
const StreamType = {
|
832 |
+
UNKNOWN: "UNKNOWN",
|
833 |
+
FLATE: "FLATE",
|
834 |
+
LZW: "LZW",
|
835 |
+
DCT: "DCT",
|
836 |
+
JPX: "JPX",
|
837 |
+
JBIG: "JBIG",
|
838 |
+
A85: "A85",
|
839 |
+
AHX: "AHX",
|
840 |
+
CCF: "CCF",
|
841 |
+
RLX: "RLX"
|
842 |
+
};
|
843 |
+
exports.StreamType = StreamType;
|
844 |
+
const FontType = {
|
845 |
+
UNKNOWN: "UNKNOWN",
|
846 |
+
TYPE1: "TYPE1",
|
847 |
+
TYPE1C: "TYPE1C",
|
848 |
+
CIDFONTTYPE0: "CIDFONTTYPE0",
|
849 |
+
CIDFONTTYPE0C: "CIDFONTTYPE0C",
|
850 |
+
TRUETYPE: "TRUETYPE",
|
851 |
+
CIDFONTTYPE2: "CIDFONTTYPE2",
|
852 |
+
TYPE3: "TYPE3",
|
853 |
+
OPENTYPE: "OPENTYPE",
|
854 |
+
TYPE0: "TYPE0",
|
855 |
+
MMTYPE1: "MMTYPE1"
|
856 |
+
};
|
857 |
+
exports.FontType = FontType;
|
858 |
+
const VerbosityLevel = {
|
859 |
+
ERRORS: 0,
|
860 |
+
WARNINGS: 1,
|
861 |
+
INFOS: 5
|
862 |
+
};
|
863 |
+
exports.VerbosityLevel = VerbosityLevel;
|
864 |
+
const CMapCompressionType = {
|
865 |
+
NONE: 0,
|
866 |
+
BINARY: 1,
|
867 |
+
STREAM: 2
|
868 |
+
};
|
869 |
+
exports.CMapCompressionType = CMapCompressionType;
|
870 |
+
const OPS = {
|
871 |
+
dependency: 1,
|
872 |
+
setLineWidth: 2,
|
873 |
+
setLineCap: 3,
|
874 |
+
setLineJoin: 4,
|
875 |
+
setMiterLimit: 5,
|
876 |
+
setDash: 6,
|
877 |
+
setRenderingIntent: 7,
|
878 |
+
setFlatness: 8,
|
879 |
+
setGState: 9,
|
880 |
+
save: 10,
|
881 |
+
restore: 11,
|
882 |
+
transform: 12,
|
883 |
+
moveTo: 13,
|
884 |
+
lineTo: 14,
|
885 |
+
curveTo: 15,
|
886 |
+
curveTo2: 16,
|
887 |
+
curveTo3: 17,
|
888 |
+
closePath: 18,
|
889 |
+
rectangle: 19,
|
890 |
+
stroke: 20,
|
891 |
+
closeStroke: 21,
|
892 |
+
fill: 22,
|
893 |
+
eoFill: 23,
|
894 |
+
fillStroke: 24,
|
895 |
+
eoFillStroke: 25,
|
896 |
+
closeFillStroke: 26,
|
897 |
+
closeEOFillStroke: 27,
|
898 |
+
endPath: 28,
|
899 |
+
clip: 29,
|
900 |
+
eoClip: 30,
|
901 |
+
beginText: 31,
|
902 |
+
endText: 32,
|
903 |
+
setCharSpacing: 33,
|
904 |
+
setWordSpacing: 34,
|
905 |
+
setHScale: 35,
|
906 |
+
setLeading: 36,
|
907 |
+
setFont: 37,
|
908 |
+
setTextRenderingMode: 38,
|
909 |
+
setTextRise: 39,
|
910 |
+
moveText: 40,
|
911 |
+
setLeadingMoveText: 41,
|
912 |
+
setTextMatrix: 42,
|
913 |
+
nextLine: 43,
|
914 |
+
showText: 44,
|
915 |
+
showSpacedText: 45,
|
916 |
+
nextLineShowText: 46,
|
917 |
+
nextLineSetSpacingShowText: 47,
|
918 |
+
setCharWidth: 48,
|
919 |
+
setCharWidthAndBounds: 49,
|
920 |
+
setStrokeColorSpace: 50,
|
921 |
+
setFillColorSpace: 51,
|
922 |
+
setStrokeColor: 52,
|
923 |
+
setStrokeColorN: 53,
|
924 |
+
setFillColor: 54,
|
925 |
+
setFillColorN: 55,
|
926 |
+
setStrokeGray: 56,
|
927 |
+
setFillGray: 57,
|
928 |
+
setStrokeRGBColor: 58,
|
929 |
+
setFillRGBColor: 59,
|
930 |
+
setStrokeCMYKColor: 60,
|
931 |
+
setFillCMYKColor: 61,
|
932 |
+
shadingFill: 62,
|
933 |
+
beginInlineImage: 63,
|
934 |
+
beginImageData: 64,
|
935 |
+
endInlineImage: 65,
|
936 |
+
paintXObject: 66,
|
937 |
+
markPoint: 67,
|
938 |
+
markPointProps: 68,
|
939 |
+
beginMarkedContent: 69,
|
940 |
+
beginMarkedContentProps: 70,
|
941 |
+
endMarkedContent: 71,
|
942 |
+
beginCompat: 72,
|
943 |
+
endCompat: 73,
|
944 |
+
paintFormXObjectBegin: 74,
|
945 |
+
paintFormXObjectEnd: 75,
|
946 |
+
beginGroup: 76,
|
947 |
+
endGroup: 77,
|
948 |
+
beginAnnotations: 78,
|
949 |
+
endAnnotations: 79,
|
950 |
+
beginAnnotation: 80,
|
951 |
+
endAnnotation: 81,
|
952 |
+
paintJpegXObject: 82,
|
953 |
+
paintImageMaskXObject: 83,
|
954 |
+
paintImageMaskXObjectGroup: 84,
|
955 |
+
paintImageXObject: 85,
|
956 |
+
paintInlineImageXObject: 86,
|
957 |
+
paintInlineImageXObjectGroup: 87,
|
958 |
+
paintImageXObjectRepeat: 88,
|
959 |
+
paintImageMaskXObjectRepeat: 89,
|
960 |
+
paintSolidColorImageMask: 90,
|
961 |
+
constructPath: 91
|
962 |
+
};
|
963 |
+
exports.OPS = OPS;
|
964 |
+
const UNSUPPORTED_FEATURES = {
|
965 |
+
unknown: "unknown",
|
966 |
+
forms: "forms",
|
967 |
+
javaScript: "javaScript",
|
968 |
+
signatures: "signatures",
|
969 |
+
smask: "smask",
|
970 |
+
shadingPattern: "shadingPattern",
|
971 |
+
font: "font",
|
972 |
+
errorTilingPattern: "errorTilingPattern",
|
973 |
+
errorExtGState: "errorExtGState",
|
974 |
+
errorXObject: "errorXObject",
|
975 |
+
errorFontLoadType3: "errorFontLoadType3",
|
976 |
+
errorFontState: "errorFontState",
|
977 |
+
errorFontMissing: "errorFontMissing",
|
978 |
+
errorFontTranslate: "errorFontTranslate",
|
979 |
+
errorColorSpace: "errorColorSpace",
|
980 |
+
errorOperatorList: "errorOperatorList",
|
981 |
+
errorFontToUnicode: "errorFontToUnicode",
|
982 |
+
errorFontLoadNative: "errorFontLoadNative",
|
983 |
+
errorFontBuildPath: "errorFontBuildPath",
|
984 |
+
errorFontGetPath: "errorFontGetPath",
|
985 |
+
errorMarkedContent: "errorMarkedContent"
|
986 |
+
};
|
987 |
+
exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
|
988 |
+
const PasswordResponses = {
|
989 |
+
NEED_PASSWORD: 1,
|
990 |
+
INCORRECT_PASSWORD: 2
|
991 |
+
};
|
992 |
+
exports.PasswordResponses = PasswordResponses;
|
993 |
+
let verbosity = VerbosityLevel.WARNINGS;
|
994 |
+
|
995 |
+
function setVerbosityLevel(level) {
|
996 |
+
if (Number.isInteger(level)) {
|
997 |
+
verbosity = level;
|
998 |
+
}
|
999 |
+
}
|
1000 |
+
|
1001 |
+
function getVerbosityLevel() {
|
1002 |
+
return verbosity;
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
function info(msg) {
|
1006 |
+
if (verbosity >= VerbosityLevel.INFOS) {
|
1007 |
+
console.log(`Info: ${msg}`);
|
1008 |
+
}
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
function warn(msg) {
|
1012 |
+
if (verbosity >= VerbosityLevel.WARNINGS) {
|
1013 |
+
console.log(`Warning: ${msg}`);
|
1014 |
+
}
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
function unreachable(msg) {
|
1018 |
+
throw new Error(msg);
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
function assert(cond, msg) {
|
1022 |
+
if (!cond) {
|
1023 |
+
unreachable(msg);
|
1024 |
+
}
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
function isSameOrigin(baseUrl, otherUrl) {
|
1028 |
+
let base;
|
1029 |
+
|
1030 |
+
try {
|
1031 |
+
base = new URL(baseUrl);
|
1032 |
+
|
1033 |
+
if (!base.origin || base.origin === "null") {
|
1034 |
+
return false;
|
1035 |
+
}
|
1036 |
+
} catch (e) {
|
1037 |
+
return false;
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
const other = new URL(otherUrl, base);
|
1041 |
+
return base.origin === other.origin;
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
function _isValidProtocol(url) {
|
1045 |
+
if (!url) {
|
1046 |
+
return false;
|
1047 |
+
}
|
1048 |
+
|
1049 |
+
switch (url.protocol) {
|
1050 |
+
case "http:":
|
1051 |
+
case "https:":
|
1052 |
+
case "ftp:":
|
1053 |
+
case "mailto:":
|
1054 |
+
case "tel:":
|
1055 |
+
return true;
|
1056 |
+
|
1057 |
+
default:
|
1058 |
+
return false;
|
1059 |
+
}
|
1060 |
+
}
|
1061 |
+
|
1062 |
+
function createValidAbsoluteUrl(url, baseUrl) {
|
1063 |
+
if (!url) {
|
1064 |
+
return null;
|
1065 |
+
}
|
1066 |
+
|
1067 |
+
try {
|
1068 |
+
const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
|
1069 |
+
|
1070 |
+
if (_isValidProtocol(absoluteUrl)) {
|
1071 |
+
return absoluteUrl;
|
1072 |
+
}
|
1073 |
+
} catch (ex) {}
|
1074 |
+
|
1075 |
+
return null;
|
1076 |
+
}
|
1077 |
+
|
1078 |
+
function shadow(obj, prop, value) {
|
1079 |
+
Object.defineProperty(obj, prop, {
|
1080 |
+
value,
|
1081 |
+
enumerable: true,
|
1082 |
+
configurable: true,
|
1083 |
+
writable: false
|
1084 |
+
});
|
1085 |
+
return value;
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
const BaseException = function BaseExceptionClosure() {
|
1089 |
+
function BaseException(message) {
|
1090 |
+
if (this.constructor === BaseException) {
|
1091 |
+
unreachable("Cannot initialize BaseException.");
|
1092 |
+
}
|
1093 |
+
|
1094 |
+
this.message = message;
|
1095 |
+
this.name = this.constructor.name;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
BaseException.prototype = new Error();
|
1099 |
+
BaseException.constructor = BaseException;
|
1100 |
+
return BaseException;
|
1101 |
+
}();
|
1102 |
+
|
1103 |
+
exports.BaseException = BaseException;
|
1104 |
+
|
1105 |
+
class PasswordException extends BaseException {
|
1106 |
+
constructor(msg, code) {
|
1107 |
+
super(msg);
|
1108 |
+
this.code = code;
|
1109 |
+
}
|
1110 |
+
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
exports.PasswordException = PasswordException;
|
1114 |
+
|
1115 |
+
class UnknownErrorException extends BaseException {
|
1116 |
+
constructor(msg, details) {
|
1117 |
+
super(msg);
|
1118 |
+
this.details = details;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
}
|
1122 |
+
|
1123 |
+
exports.UnknownErrorException = UnknownErrorException;
|
1124 |
+
|
1125 |
+
class InvalidPDFException extends BaseException {}
|
1126 |
+
|
1127 |
+
exports.InvalidPDFException = InvalidPDFException;
|
1128 |
+
|
1129 |
+
class MissingPDFException extends BaseException {}
|
1130 |
+
|
1131 |
+
exports.MissingPDFException = MissingPDFException;
|
1132 |
+
|
1133 |
+
class UnexpectedResponseException extends BaseException {
|
1134 |
+
constructor(msg, status) {
|
1135 |
+
super(msg);
|
1136 |
+
this.status = status;
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
}
|
1140 |
+
|
1141 |
+
exports.UnexpectedResponseException = UnexpectedResponseException;
|
1142 |
+
|
1143 |
+
class FormatError extends BaseException {}
|
1144 |
+
|
1145 |
+
exports.FormatError = FormatError;
|
1146 |
+
|
1147 |
+
class AbortException extends BaseException {}
|
1148 |
+
|
1149 |
+
exports.AbortException = AbortException;
|
1150 |
+
const NullCharactersRegExp = /\x00/g;
|
1151 |
+
|
1152 |
+
function removeNullCharacters(str) {
|
1153 |
+
if (typeof str !== "string") {
|
1154 |
+
warn("The argument for removeNullCharacters must be a string.");
|
1155 |
+
return str;
|
1156 |
+
}
|
1157 |
+
|
1158 |
+
return str.replace(NullCharactersRegExp, "");
|
1159 |
+
}
|
1160 |
+
|
1161 |
+
function bytesToString(bytes) {
|
1162 |
+
assert(bytes !== null && typeof bytes === "object" && bytes.length !== undefined, "Invalid argument for bytesToString");
|
1163 |
+
const length = bytes.length;
|
1164 |
+
const MAX_ARGUMENT_COUNT = 8192;
|
1165 |
+
|
1166 |
+
if (length < MAX_ARGUMENT_COUNT) {
|
1167 |
+
return String.fromCharCode.apply(null, bytes);
|
1168 |
+
}
|
1169 |
+
|
1170 |
+
const strBuf = [];
|
1171 |
+
|
1172 |
+
for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
|
1173 |
+
const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
|
1174 |
+
const chunk = bytes.subarray(i, chunkEnd);
|
1175 |
+
strBuf.push(String.fromCharCode.apply(null, chunk));
|
1176 |
+
}
|
1177 |
+
|
1178 |
+
return strBuf.join("");
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
function stringToBytes(str) {
|
1182 |
+
assert(typeof str === "string", "Invalid argument for stringToBytes");
|
1183 |
+
const length = str.length;
|
1184 |
+
const bytes = new Uint8Array(length);
|
1185 |
+
|
1186 |
+
for (let i = 0; i < length; ++i) {
|
1187 |
+
bytes[i] = str.charCodeAt(i) & 0xff;
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
return bytes;
|
1191 |
+
}
|
1192 |
+
|
1193 |
+
function arrayByteLength(arr) {
|
1194 |
+
if (arr.length !== undefined) {
|
1195 |
+
return arr.length;
|
1196 |
+
}
|
1197 |
+
|
1198 |
+
assert(arr.byteLength !== undefined, "arrayByteLength - invalid argument.");
|
1199 |
+
return arr.byteLength;
|
1200 |
+
}
|
1201 |
+
|
1202 |
+
function arraysToBytes(arr) {
|
1203 |
+
const length = arr.length;
|
1204 |
+
|
1205 |
+
if (length === 1 && arr[0] instanceof Uint8Array) {
|
1206 |
+
return arr[0];
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
let resultLength = 0;
|
1210 |
+
|
1211 |
+
for (let i = 0; i < length; i++) {
|
1212 |
+
resultLength += arrayByteLength(arr[i]);
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
let pos = 0;
|
1216 |
+
const data = new Uint8Array(resultLength);
|
1217 |
+
|
1218 |
+
for (let i = 0; i < length; i++) {
|
1219 |
+
let item = arr[i];
|
1220 |
+
|
1221 |
+
if (!(item instanceof Uint8Array)) {
|
1222 |
+
if (typeof item === "string") {
|
1223 |
+
item = stringToBytes(item);
|
1224 |
+
} else {
|
1225 |
+
item = new Uint8Array(item);
|
1226 |
+
}
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
const itemLength = item.byteLength;
|
1230 |
+
data.set(item, pos);
|
1231 |
+
pos += itemLength;
|
1232 |
+
}
|
1233 |
+
|
1234 |
+
return data;
|
1235 |
+
}
|
1236 |
+
|
1237 |
+
function string32(value) {
|
1238 |
+
return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
function objectSize(obj) {
|
1242 |
+
return Object.keys(obj).length;
|
1243 |
+
}
|
1244 |
+
|
1245 |
+
function objectFromMap(map) {
|
1246 |
+
const obj = Object.create(null);
|
1247 |
+
|
1248 |
+
for (const [key, value] of map) {
|
1249 |
+
obj[key] = value;
|
1250 |
+
}
|
1251 |
+
|
1252 |
+
return obj;
|
1253 |
+
}
|
1254 |
+
|
1255 |
+
function isLittleEndian() {
|
1256 |
+
const buffer8 = new Uint8Array(4);
|
1257 |
+
buffer8[0] = 1;
|
1258 |
+
const view32 = new Uint32Array(buffer8.buffer, 0, 1);
|
1259 |
+
return view32[0] === 1;
|
1260 |
+
}
|
1261 |
+
|
1262 |
+
const IsLittleEndianCached = {
|
1263 |
+
get value() {
|
1264 |
+
return shadow(this, "value", isLittleEndian());
|
1265 |
+
}
|
1266 |
+
|
1267 |
+
};
|
1268 |
+
exports.IsLittleEndianCached = IsLittleEndianCached;
|
1269 |
+
|
1270 |
+
function isEvalSupported() {
|
1271 |
+
try {
|
1272 |
+
new Function("");
|
1273 |
+
return true;
|
1274 |
+
} catch (e) {
|
1275 |
+
return false;
|
1276 |
+
}
|
1277 |
+
}
|
1278 |
+
|
1279 |
+
const IsEvalSupportedCached = {
|
1280 |
+
get value() {
|
1281 |
+
return shadow(this, "value", isEvalSupported());
|
1282 |
+
}
|
1283 |
+
|
1284 |
+
};
|
1285 |
+
exports.IsEvalSupportedCached = IsEvalSupportedCached;
|
1286 |
+
const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
|
1287 |
+
|
1288 |
+
class Util {
|
1289 |
+
static makeHexColor(r, g, b) {
|
1290 |
+
return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
|
1291 |
+
}
|
1292 |
+
|
1293 |
+
static transform(m1, m2) {
|
1294 |
+
return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
static applyTransform(p, m) {
|
1298 |
+
const xt = p[0] * m[0] + p[1] * m[2] + m[4];
|
1299 |
+
const yt = p[0] * m[1] + p[1] * m[3] + m[5];
|
1300 |
+
return [xt, yt];
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
static applyInverseTransform(p, m) {
|
1304 |
+
const d = m[0] * m[3] - m[1] * m[2];
|
1305 |
+
const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
|
1306 |
+
const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
|
1307 |
+
return [xt, yt];
|
1308 |
+
}
|
1309 |
+
|
1310 |
+
static getAxialAlignedBoundingBox(r, m) {
|
1311 |
+
const p1 = Util.applyTransform(r, m);
|
1312 |
+
const p2 = Util.applyTransform(r.slice(2, 4), m);
|
1313 |
+
const p3 = Util.applyTransform([r[0], r[3]], m);
|
1314 |
+
const p4 = Util.applyTransform([r[2], r[1]], m);
|
1315 |
+
return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
static inverseTransform(m) {
|
1319 |
+
const d = m[0] * m[3] - m[1] * m[2];
|
1320 |
+
return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
static apply3dTransform(m, v) {
|
1324 |
+
return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
|
1325 |
+
}
|
1326 |
+
|
1327 |
+
static singularValueDecompose2dScale(m) {
|
1328 |
+
const transpose = [m[0], m[2], m[1], m[3]];
|
1329 |
+
const a = m[0] * transpose[0] + m[1] * transpose[2];
|
1330 |
+
const b = m[0] * transpose[1] + m[1] * transpose[3];
|
1331 |
+
const c = m[2] * transpose[0] + m[3] * transpose[2];
|
1332 |
+
const d = m[2] * transpose[1] + m[3] * transpose[3];
|
1333 |
+
const first = (a + d) / 2;
|
1334 |
+
const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;
|
1335 |
+
const sx = first + second || 1;
|
1336 |
+
const sy = first - second || 1;
|
1337 |
+
return [Math.sqrt(sx), Math.sqrt(sy)];
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
static normalizeRect(rect) {
|
1341 |
+
const r = rect.slice(0);
|
1342 |
+
|
1343 |
+
if (rect[0] > rect[2]) {
|
1344 |
+
r[0] = rect[2];
|
1345 |
+
r[2] = rect[0];
|
1346 |
+
}
|
1347 |
+
|
1348 |
+
if (rect[1] > rect[3]) {
|
1349 |
+
r[1] = rect[3];
|
1350 |
+
r[3] = rect[1];
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
return r;
|
1354 |
+
}
|
1355 |
+
|
1356 |
+
static intersect(rect1, rect2) {
|
1357 |
+
function compare(a, b) {
|
1358 |
+
return a - b;
|
1359 |
+
}
|
1360 |
+
|
1361 |
+
const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);
|
1362 |
+
const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);
|
1363 |
+
const result = [];
|
1364 |
+
rect1 = Util.normalizeRect(rect1);
|
1365 |
+
rect2 = Util.normalizeRect(rect2);
|
1366 |
+
|
1367 |
+
if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
|
1368 |
+
result[0] = orderedX[1];
|
1369 |
+
result[2] = orderedX[2];
|
1370 |
+
} else {
|
1371 |
+
return null;
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
|
1375 |
+
result[1] = orderedY[1];
|
1376 |
+
result[3] = orderedY[2];
|
1377 |
+
} else {
|
1378 |
+
return null;
|
1379 |
+
}
|
1380 |
+
|
1381 |
+
return result;
|
1382 |
+
}
|
1383 |
+
|
1384 |
+
}
|
1385 |
+
|
1386 |
+
exports.Util = Util;
|
1387 |
+
const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];
|
1388 |
+
|
1389 |
+
function stringToPDFString(str) {
|
1390 |
+
const length = str.length,
|
1391 |
+
strBuf = [];
|
1392 |
+
|
1393 |
+
if (str[0] === "\xFE" && str[1] === "\xFF") {
|
1394 |
+
for (let i = 2; i < length; i += 2) {
|
1395 |
+
strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
|
1396 |
+
}
|
1397 |
+
} else if (str[0] === "\xFF" && str[1] === "\xFE") {
|
1398 |
+
for (let i = 2; i < length; i += 2) {
|
1399 |
+
strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));
|
1400 |
+
}
|
1401 |
+
} else {
|
1402 |
+
for (let i = 0; i < length; ++i) {
|
1403 |
+
const code = PDFStringTranslateTable[str.charCodeAt(i)];
|
1404 |
+
strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
|
1405 |
+
}
|
1406 |
+
}
|
1407 |
+
|
1408 |
+
return strBuf.join("");
|
1409 |
+
}
|
1410 |
+
|
1411 |
+
function escapeString(str) {
|
1412 |
+
return str.replace(/([()\\\n\r])/g, match => {
|
1413 |
+
if (match === "\n") {
|
1414 |
+
return "\\n";
|
1415 |
+
} else if (match === "\r") {
|
1416 |
+
return "\\r";
|
1417 |
+
}
|
1418 |
+
|
1419 |
+
return `\\${match}`;
|
1420 |
+
});
|
1421 |
+
}
|
1422 |
+
|
1423 |
+
function isAscii(str) {
|
1424 |
+
return /^[\x00-\x7F]*$/.test(str);
|
1425 |
+
}
|
1426 |
+
|
1427 |
+
function stringToUTF16BEString(str) {
|
1428 |
+
const buf = ["\xFE\xFF"];
|
1429 |
+
|
1430 |
+
for (let i = 0, ii = str.length; i < ii; i++) {
|
1431 |
+
const char = str.charCodeAt(i);
|
1432 |
+
buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));
|
1433 |
+
}
|
1434 |
+
|
1435 |
+
return buf.join("");
|
1436 |
+
}
|
1437 |
+
|
1438 |
+
function stringToUTF8String(str) {
|
1439 |
+
return decodeURIComponent(escape(str));
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
function utf8StringToString(str) {
|
1443 |
+
return unescape(encodeURIComponent(str));
|
1444 |
+
}
|
1445 |
+
|
1446 |
+
function isBool(v) {
|
1447 |
+
return typeof v === "boolean";
|
1448 |
+
}
|
1449 |
+
|
1450 |
+
function isNum(v) {
|
1451 |
+
return typeof v === "number";
|
1452 |
+
}
|
1453 |
+
|
1454 |
+
function isString(v) {
|
1455 |
+
return typeof v === "string";
|
1456 |
+
}
|
1457 |
+
|
1458 |
+
function isArrayBuffer(v) {
|
1459 |
+
return typeof v === "object" && v !== null && v.byteLength !== undefined;
|
1460 |
+
}
|
1461 |
+
|
1462 |
+
function isArrayEqual(arr1, arr2) {
|
1463 |
+
if (arr1.length !== arr2.length) {
|
1464 |
+
return false;
|
1465 |
+
}
|
1466 |
+
|
1467 |
+
for (let i = 0, ii = arr1.length; i < ii; i++) {
|
1468 |
+
if (arr1[i] !== arr2[i]) {
|
1469 |
+
return false;
|
1470 |
+
}
|
1471 |
+
}
|
1472 |
+
|
1473 |
+
return true;
|
1474 |
+
}
|
1475 |
+
|
1476 |
+
function getModificationDate(date = new Date()) {
|
1477 |
+
const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
|
1478 |
+
return buffer.join("");
|
1479 |
+
}
|
1480 |
+
|
1481 |
+
function createPromiseCapability() {
|
1482 |
+
const capability = Object.create(null);
|
1483 |
+
let isSettled = false;
|
1484 |
+
Object.defineProperty(capability, "settled", {
|
1485 |
+
get() {
|
1486 |
+
return isSettled;
|
1487 |
+
}
|
1488 |
+
|
1489 |
+
});
|
1490 |
+
capability.promise = new Promise(function (resolve, reject) {
|
1491 |
+
capability.resolve = function (data) {
|
1492 |
+
isSettled = true;
|
1493 |
+
resolve(data);
|
1494 |
+
};
|
1495 |
+
|
1496 |
+
capability.reject = function (reason) {
|
1497 |
+
isSettled = true;
|
1498 |
+
reject(reason);
|
1499 |
+
};
|
1500 |
+
});
|
1501 |
+
return capability;
|
1502 |
+
}
|
1503 |
+
|
1504 |
+
function createObjectURL(data, contentType = "", forceDataSchema = false) {
|
1505 |
+
if (URL.createObjectURL && !forceDataSchema) {
|
1506 |
+
return URL.createObjectURL(new Blob([data], {
|
1507 |
+
type: contentType
|
1508 |
+
}));
|
1509 |
+
}
|
1510 |
+
|
1511 |
+
const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
1512 |
+
let buffer = `data:${contentType};base64,`;
|
1513 |
+
|
1514 |
+
for (let i = 0, ii = data.length; i < ii; i += 3) {
|
1515 |
+
const b1 = data[i] & 0xff;
|
1516 |
+
const b2 = data[i + 1] & 0xff;
|
1517 |
+
const b3 = data[i + 2] & 0xff;
|
1518 |
+
const d1 = b1 >> 2,
|
1519 |
+
d2 = (b1 & 3) << 4 | b2 >> 4;
|
1520 |
+
const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
|
1521 |
+
const d4 = i + 2 < ii ? b3 & 0x3f : 64;
|
1522 |
+
buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
|
1523 |
+
}
|
1524 |
+
|
1525 |
+
return buffer;
|
1526 |
+
}
|
1527 |
+
|
1528 |
+
/***/ }),
|
1529 |
+
/* 3 */
|
1530 |
+
/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
|
1531 |
+
|
1532 |
+
|
1533 |
+
|
1534 |
+
var _is_node = __w_pdfjs_require__(4);
|
1535 |
+
|
1536 |
+
;
|
1537 |
+
|
1538 |
+
/***/ }),
|
1539 |
+
/* 4 */
|
1540 |
+
/***/ ((__unused_webpack_module, exports) => {
|
1541 |
+
|
1542 |
+
|
1543 |
+
|
1544 |
+
Object.defineProperty(exports, "__esModule", ({
|
1545 |
+
value: true
|
1546 |
+
}));
|
1547 |
+
exports.isNodeJS = void 0;
|
1548 |
+
const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser");
|
1549 |
+
exports.isNodeJS = isNodeJS;
|
1550 |
+
|
1551 |
+
/***/ }),
|
1552 |
+
/* 5 */
|
1553 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
1554 |
+
|
1555 |
+
|
1556 |
+
|
1557 |
+
Object.defineProperty(exports, "__esModule", ({
|
1558 |
+
value: true
|
1559 |
+
}));
|
1560 |
+
exports.getDocument = getDocument;
|
1561 |
+
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
|
1562 |
+
exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0;
|
1563 |
+
|
1564 |
+
var _util = __w_pdfjs_require__(2);
|
1565 |
+
|
1566 |
+
var _display_utils = __w_pdfjs_require__(1);
|
1567 |
+
|
1568 |
+
var _font_loader = __w_pdfjs_require__(6);
|
1569 |
+
|
1570 |
+
var _node_utils = __w_pdfjs_require__(7);
|
1571 |
+
|
1572 |
+
var _annotation_storage = __w_pdfjs_require__(8);
|
1573 |
+
|
1574 |
+
var _api_compatibility = __w_pdfjs_require__(9);
|
1575 |
+
|
1576 |
+
var _canvas = __w_pdfjs_require__(10);
|
1577 |
+
|
1578 |
+
var _worker_options = __w_pdfjs_require__(12);
|
1579 |
+
|
1580 |
+
var _is_node = __w_pdfjs_require__(4);
|
1581 |
+
|
1582 |
+
var _message_handler = __w_pdfjs_require__(13);
|
1583 |
+
|
1584 |
+
var _metadata = __w_pdfjs_require__(14);
|
1585 |
+
|
1586 |
+
var _optional_content_config = __w_pdfjs_require__(15);
|
1587 |
+
|
1588 |
+
var _transport_stream = __w_pdfjs_require__(16);
|
1589 |
+
|
1590 |
+
const DEFAULT_RANGE_CHUNK_SIZE = 65536;
|
1591 |
+
const RENDERING_CANCELLED_TIMEOUT = 100;
|
1592 |
+
const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;
|
1593 |
+
exports.DefaultCanvasFactory = DefaultCanvasFactory;
|
1594 |
+
const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
|
1595 |
+
exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
|
1596 |
+
let createPDFNetworkStream;
|
1597 |
+
|
1598 |
+
function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
|
1599 |
+
createPDFNetworkStream = pdfNetworkStreamFactory;
|
1600 |
+
}
|
1601 |
+
|
1602 |
+
function getDocument(src) {
|
1603 |
+
const task = new PDFDocumentLoadingTask();
|
1604 |
+
let source;
|
1605 |
+
|
1606 |
+
if (typeof src === "string" || src instanceof URL) {
|
1607 |
+
source = {
|
1608 |
+
url: src
|
1609 |
+
};
|
1610 |
+
} else if ((0, _util.isArrayBuffer)(src)) {
|
1611 |
+
source = {
|
1612 |
+
data: src
|
1613 |
+
};
|
1614 |
+
} else if (src instanceof PDFDataRangeTransport) {
|
1615 |
+
source = {
|
1616 |
+
range: src
|
1617 |
+
};
|
1618 |
+
} else {
|
1619 |
+
if (typeof src !== "object") {
|
1620 |
+
throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object.");
|
1621 |
+
}
|
1622 |
+
|
1623 |
+
if (!src.url && !src.data && !src.range) {
|
1624 |
+
throw new Error("Invalid parameter object: need either .data, .range or .url");
|
1625 |
+
}
|
1626 |
+
|
1627 |
+
source = src;
|
1628 |
+
}
|
1629 |
+
|
1630 |
+
const params = Object.create(null);
|
1631 |
+
let rangeTransport = null,
|
1632 |
+
worker = null;
|
1633 |
+
|
1634 |
+
for (const key in source) {
|
1635 |
+
const value = source[key];
|
1636 |
+
|
1637 |
+
switch (key) {
|
1638 |
+
case "url":
|
1639 |
+
if (typeof window !== "undefined") {
|
1640 |
+
try {
|
1641 |
+
params[key] = new URL(value, window.location).href;
|
1642 |
+
continue;
|
1643 |
+
} catch (ex) {
|
1644 |
+
(0, _util.warn)(`Cannot create valid URL: "${ex}".`);
|
1645 |
+
}
|
1646 |
+
} else if (typeof value === "string" || value instanceof URL) {
|
1647 |
+
params[key] = value.toString();
|
1648 |
+
continue;
|
1649 |
+
}
|
1650 |
+
|
1651 |
+
throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property.");
|
1652 |
+
|
1653 |
+
case "range":
|
1654 |
+
rangeTransport = value;
|
1655 |
+
continue;
|
1656 |
+
|
1657 |
+
case "worker":
|
1658 |
+
worker = value;
|
1659 |
+
continue;
|
1660 |
+
|
1661 |
+
case "data":
|
1662 |
+
if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) {
|
1663 |
+
params[key] = new Uint8Array(value);
|
1664 |
+
} else if (value instanceof Uint8Array) {
|
1665 |
+
break;
|
1666 |
+
} else if (typeof value === "string") {
|
1667 |
+
params[key] = (0, _util.stringToBytes)(value);
|
1668 |
+
} else if (typeof value === "object" && value !== null && !isNaN(value.length)) {
|
1669 |
+
params[key] = new Uint8Array(value);
|
1670 |
+
} else if ((0, _util.isArrayBuffer)(value)) {
|
1671 |
+
params[key] = new Uint8Array(value);
|
1672 |
+
} else {
|
1673 |
+
throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property.");
|
1674 |
+
}
|
1675 |
+
|
1676 |
+
continue;
|
1677 |
+
}
|
1678 |
+
|
1679 |
+
params[key] = value;
|
1680 |
+
}
|
1681 |
+
|
1682 |
+
params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
|
1683 |
+
params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;
|
1684 |
+
params.ignoreErrors = params.stopAtErrors !== true;
|
1685 |
+
params.fontExtraProperties = params.fontExtraProperties === true;
|
1686 |
+
params.pdfBug = params.pdfBug === true;
|
1687 |
+
params.enableXfa = params.enableXfa === true;
|
1688 |
+
|
1689 |
+
if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {
|
1690 |
+
params.docBaseUrl = null;
|
1691 |
+
}
|
1692 |
+
|
1693 |
+
if (!Number.isInteger(params.maxImageSize)) {
|
1694 |
+
params.maxImageSize = -1;
|
1695 |
+
}
|
1696 |
+
|
1697 |
+
if (typeof params.isEvalSupported !== "boolean") {
|
1698 |
+
params.isEvalSupported = true;
|
1699 |
+
}
|
1700 |
+
|
1701 |
+
if (typeof params.disableFontFace !== "boolean") {
|
1702 |
+
params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
|
1703 |
+
}
|
1704 |
+
|
1705 |
+
if (typeof params.ownerDocument === "undefined") {
|
1706 |
+
params.ownerDocument = globalThis.document;
|
1707 |
+
}
|
1708 |
+
|
1709 |
+
if (typeof params.disableRange !== "boolean") {
|
1710 |
+
params.disableRange = false;
|
1711 |
+
}
|
1712 |
+
|
1713 |
+
if (typeof params.disableStream !== "boolean") {
|
1714 |
+
params.disableStream = false;
|
1715 |
+
}
|
1716 |
+
|
1717 |
+
if (typeof params.disableAutoFetch !== "boolean") {
|
1718 |
+
params.disableAutoFetch = false;
|
1719 |
+
}
|
1720 |
+
|
1721 |
+
(0, _util.setVerbosityLevel)(params.verbosity);
|
1722 |
+
|
1723 |
+
if (!worker) {
|
1724 |
+
const workerParams = {
|
1725 |
+
verbosity: params.verbosity,
|
1726 |
+
port: _worker_options.GlobalWorkerOptions.workerPort
|
1727 |
+
};
|
1728 |
+
worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
|
1729 |
+
task._worker = worker;
|
1730 |
+
}
|
1731 |
+
|
1732 |
+
const docId = task.docId;
|
1733 |
+
worker.promise.then(function () {
|
1734 |
+
if (task.destroyed) {
|
1735 |
+
throw new Error("Loading aborted");
|
1736 |
+
}
|
1737 |
+
|
1738 |
+
const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);
|
1739 |
+
|
1740 |
+
const networkStreamPromise = new Promise(function (resolve) {
|
1741 |
+
let networkStream;
|
1742 |
+
|
1743 |
+
if (rangeTransport) {
|
1744 |
+
networkStream = new _transport_stream.PDFDataTransportStream({
|
1745 |
+
length: params.length,
|
1746 |
+
initialData: params.initialData,
|
1747 |
+
progressiveDone: params.progressiveDone,
|
1748 |
+
contentDispositionFilename: params.contentDispositionFilename,
|
1749 |
+
disableRange: params.disableRange,
|
1750 |
+
disableStream: params.disableStream
|
1751 |
+
}, rangeTransport);
|
1752 |
+
} else if (!params.data) {
|
1753 |
+
networkStream = createPDFNetworkStream({
|
1754 |
+
url: params.url,
|
1755 |
+
length: params.length,
|
1756 |
+
httpHeaders: params.httpHeaders,
|
1757 |
+
withCredentials: params.withCredentials,
|
1758 |
+
rangeChunkSize: params.rangeChunkSize,
|
1759 |
+
disableRange: params.disableRange,
|
1760 |
+
disableStream: params.disableStream
|
1761 |
+
});
|
1762 |
+
}
|
1763 |
+
|
1764 |
+
resolve(networkStream);
|
1765 |
+
});
|
1766 |
+
return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {
|
1767 |
+
if (task.destroyed) {
|
1768 |
+
throw new Error("Loading aborted");
|
1769 |
+
}
|
1770 |
+
|
1771 |
+
const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
|
1772 |
+
messageHandler.postMessageTransfers = worker.postMessageTransfers;
|
1773 |
+
const transport = new WorkerTransport(messageHandler, task, networkStream, params);
|
1774 |
+
task._transport = transport;
|
1775 |
+
messageHandler.send("Ready", null);
|
1776 |
+
});
|
1777 |
+
}).catch(task._capability.reject);
|
1778 |
+
return task;
|
1779 |
+
}
|
1780 |
+
|
1781 |
+
function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
|
1782 |
+
if (worker.destroyed) {
|
1783 |
+
return Promise.reject(new Error("Worker was destroyed"));
|
1784 |
+
}
|
1785 |
+
|
1786 |
+
if (pdfDataRangeTransport) {
|
1787 |
+
source.length = pdfDataRangeTransport.length;
|
1788 |
+
source.initialData = pdfDataRangeTransport.initialData;
|
1789 |
+
source.progressiveDone = pdfDataRangeTransport.progressiveDone;
|
1790 |
+
source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;
|
1791 |
+
}
|
1792 |
+
|
1793 |
+
return worker.messageHandler.sendWithPromise("GetDocRequest", {
|
1794 |
+
docId,
|
1795 |
+
apiVersion: '2.9.359',
|
1796 |
+
source: {
|
1797 |
+
data: source.data,
|
1798 |
+
url: source.url,
|
1799 |
+
password: source.password,
|
1800 |
+
disableAutoFetch: source.disableAutoFetch,
|
1801 |
+
rangeChunkSize: source.rangeChunkSize,
|
1802 |
+
length: source.length
|
1803 |
+
},
|
1804 |
+
maxImageSize: source.maxImageSize,
|
1805 |
+
disableFontFace: source.disableFontFace,
|
1806 |
+
postMessageTransfers: worker.postMessageTransfers,
|
1807 |
+
docBaseUrl: source.docBaseUrl,
|
1808 |
+
ignoreErrors: source.ignoreErrors,
|
1809 |
+
isEvalSupported: source.isEvalSupported,
|
1810 |
+
fontExtraProperties: source.fontExtraProperties,
|
1811 |
+
enableXfa: source.enableXfa
|
1812 |
+
}).then(function (workerId) {
|
1813 |
+
if (worker.destroyed) {
|
1814 |
+
throw new Error("Worker was destroyed");
|
1815 |
+
}
|
1816 |
+
|
1817 |
+
return workerId;
|
1818 |
+
});
|
1819 |
+
}
|
1820 |
+
|
1821 |
+
const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
|
1822 |
+
let nextDocumentId = 0;
|
1823 |
+
|
1824 |
+
class PDFDocumentLoadingTask {
|
1825 |
+
constructor() {
|
1826 |
+
this._capability = (0, _util.createPromiseCapability)();
|
1827 |
+
this._transport = null;
|
1828 |
+
this._worker = null;
|
1829 |
+
this.docId = "d" + nextDocumentId++;
|
1830 |
+
this.destroyed = false;
|
1831 |
+
this.onPassword = null;
|
1832 |
+
this.onProgress = null;
|
1833 |
+
this.onUnsupportedFeature = null;
|
1834 |
+
}
|
1835 |
+
|
1836 |
+
get promise() {
|
1837 |
+
return this._capability.promise;
|
1838 |
+
}
|
1839 |
+
|
1840 |
+
destroy() {
|
1841 |
+
this.destroyed = true;
|
1842 |
+
const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
|
1843 |
+
return transportDestroyed.then(() => {
|
1844 |
+
this._transport = null;
|
1845 |
+
|
1846 |
+
if (this._worker) {
|
1847 |
+
this._worker.destroy();
|
1848 |
+
|
1849 |
+
this._worker = null;
|
1850 |
+
}
|
1851 |
+
});
|
1852 |
+
}
|
1853 |
+
|
1854 |
+
}
|
1855 |
+
|
1856 |
+
return PDFDocumentLoadingTask;
|
1857 |
+
}();
|
1858 |
+
|
1859 |
+
class PDFDataRangeTransport {
|
1860 |
+
constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
|
1861 |
+
this.length = length;
|
1862 |
+
this.initialData = initialData;
|
1863 |
+
this.progressiveDone = progressiveDone;
|
1864 |
+
this.contentDispositionFilename = contentDispositionFilename;
|
1865 |
+
this._rangeListeners = [];
|
1866 |
+
this._progressListeners = [];
|
1867 |
+
this._progressiveReadListeners = [];
|
1868 |
+
this._progressiveDoneListeners = [];
|
1869 |
+
this._readyCapability = (0, _util.createPromiseCapability)();
|
1870 |
+
}
|
1871 |
+
|
1872 |
+
addRangeListener(listener) {
|
1873 |
+
this._rangeListeners.push(listener);
|
1874 |
+
}
|
1875 |
+
|
1876 |
+
addProgressListener(listener) {
|
1877 |
+
this._progressListeners.push(listener);
|
1878 |
+
}
|
1879 |
+
|
1880 |
+
addProgressiveReadListener(listener) {
|
1881 |
+
this._progressiveReadListeners.push(listener);
|
1882 |
+
}
|
1883 |
+
|
1884 |
+
addProgressiveDoneListener(listener) {
|
1885 |
+
this._progressiveDoneListeners.push(listener);
|
1886 |
+
}
|
1887 |
+
|
1888 |
+
onDataRange(begin, chunk) {
|
1889 |
+
for (const listener of this._rangeListeners) {
|
1890 |
+
listener(begin, chunk);
|
1891 |
+
}
|
1892 |
+
}
|
1893 |
+
|
1894 |
+
onDataProgress(loaded, total) {
|
1895 |
+
this._readyCapability.promise.then(() => {
|
1896 |
+
for (const listener of this._progressListeners) {
|
1897 |
+
listener(loaded, total);
|
1898 |
+
}
|
1899 |
+
});
|
1900 |
+
}
|
1901 |
+
|
1902 |
+
onDataProgressiveRead(chunk) {
|
1903 |
+
this._readyCapability.promise.then(() => {
|
1904 |
+
for (const listener of this._progressiveReadListeners) {
|
1905 |
+
listener(chunk);
|
1906 |
+
}
|
1907 |
+
});
|
1908 |
+
}
|
1909 |
+
|
1910 |
+
onDataProgressiveDone() {
|
1911 |
+
this._readyCapability.promise.then(() => {
|
1912 |
+
for (const listener of this._progressiveDoneListeners) {
|
1913 |
+
listener();
|
1914 |
+
}
|
1915 |
+
});
|
1916 |
+
}
|
1917 |
+
|
1918 |
+
transportReady() {
|
1919 |
+
this._readyCapability.resolve();
|
1920 |
+
}
|
1921 |
+
|
1922 |
+
requestDataRange(begin, end) {
|
1923 |
+
(0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange");
|
1924 |
+
}
|
1925 |
+
|
1926 |
+
abort() {}
|
1927 |
+
|
1928 |
+
}
|
1929 |
+
|
1930 |
+
exports.PDFDataRangeTransport = PDFDataRangeTransport;
|
1931 |
+
|
1932 |
+
class PDFDocumentProxy {
|
1933 |
+
constructor(pdfInfo, transport) {
|
1934 |
+
this._pdfInfo = pdfInfo;
|
1935 |
+
this._transport = transport;
|
1936 |
+
}
|
1937 |
+
|
1938 |
+
get annotationStorage() {
|
1939 |
+
return this._transport.annotationStorage;
|
1940 |
+
}
|
1941 |
+
|
1942 |
+
get numPages() {
|
1943 |
+
return this._pdfInfo.numPages;
|
1944 |
+
}
|
1945 |
+
|
1946 |
+
get fingerprint() {
|
1947 |
+
return this._pdfInfo.fingerprint;
|
1948 |
+
}
|
1949 |
+
|
1950 |
+
get isPureXfa() {
|
1951 |
+
return this._pdfInfo.isPureXfa;
|
1952 |
+
}
|
1953 |
+
|
1954 |
+
getPage(pageNumber) {
|
1955 |
+
return this._transport.getPage(pageNumber);
|
1956 |
+
}
|
1957 |
+
|
1958 |
+
getPageIndex(ref) {
|
1959 |
+
return this._transport.getPageIndex(ref);
|
1960 |
+
}
|
1961 |
+
|
1962 |
+
getDestinations() {
|
1963 |
+
return this._transport.getDestinations();
|
1964 |
+
}
|
1965 |
+
|
1966 |
+
getDestination(id) {
|
1967 |
+
return this._transport.getDestination(id);
|
1968 |
+
}
|
1969 |
+
|
1970 |
+
getPageLabels() {
|
1971 |
+
return this._transport.getPageLabels();
|
1972 |
+
}
|
1973 |
+
|
1974 |
+
getPageLayout() {
|
1975 |
+
return this._transport.getPageLayout();
|
1976 |
+
}
|
1977 |
+
|
1978 |
+
getPageMode() {
|
1979 |
+
return this._transport.getPageMode();
|
1980 |
+
}
|
1981 |
+
|
1982 |
+
getViewerPreferences() {
|
1983 |
+
return this._transport.getViewerPreferences();
|
1984 |
+
}
|
1985 |
+
|
1986 |
+
getOpenAction() {
|
1987 |
+
return this._transport.getOpenAction();
|
1988 |
+
}
|
1989 |
+
|
1990 |
+
getAttachments() {
|
1991 |
+
return this._transport.getAttachments();
|
1992 |
+
}
|
1993 |
+
|
1994 |
+
getJavaScript() {
|
1995 |
+
return this._transport.getJavaScript();
|
1996 |
+
}
|
1997 |
+
|
1998 |
+
getJSActions() {
|
1999 |
+
return this._transport.getDocJSActions();
|
2000 |
+
}
|
2001 |
+
|
2002 |
+
getOutline() {
|
2003 |
+
return this._transport.getOutline();
|
2004 |
+
}
|
2005 |
+
|
2006 |
+
getOptionalContentConfig() {
|
2007 |
+
return this._transport.getOptionalContentConfig();
|
2008 |
+
}
|
2009 |
+
|
2010 |
+
getPermissions() {
|
2011 |
+
return this._transport.getPermissions();
|
2012 |
+
}
|
2013 |
+
|
2014 |
+
getMetadata() {
|
2015 |
+
return this._transport.getMetadata();
|
2016 |
+
}
|
2017 |
+
|
2018 |
+
getMarkInfo() {
|
2019 |
+
return this._transport.getMarkInfo();
|
2020 |
+
}
|
2021 |
+
|
2022 |
+
getData() {
|
2023 |
+
return this._transport.getData();
|
2024 |
+
}
|
2025 |
+
|
2026 |
+
getDownloadInfo() {
|
2027 |
+
return this._transport.downloadInfoCapability.promise;
|
2028 |
+
}
|
2029 |
+
|
2030 |
+
getStats() {
|
2031 |
+
return this._transport.getStats();
|
2032 |
+
}
|
2033 |
+
|
2034 |
+
cleanup(keepLoadedFonts = false) {
|
2035 |
+
return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);
|
2036 |
+
}
|
2037 |
+
|
2038 |
+
destroy() {
|
2039 |
+
return this.loadingTask.destroy();
|
2040 |
+
}
|
2041 |
+
|
2042 |
+
get loadingParams() {
|
2043 |
+
return this._transport.loadingParams;
|
2044 |
+
}
|
2045 |
+
|
2046 |
+
get loadingTask() {
|
2047 |
+
return this._transport.loadingTask;
|
2048 |
+
}
|
2049 |
+
|
2050 |
+
saveDocument() {
|
2051 |
+
if (arguments.length > 0) {
|
2052 |
+
(0, _display_utils.deprecated)("saveDocument no longer accepts any options.");
|
2053 |
+
}
|
2054 |
+
|
2055 |
+
if (this._transport.annotationStorage.size <= 0) {
|
2056 |
+
(0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead.");
|
2057 |
+
}
|
2058 |
+
|
2059 |
+
return this._transport.saveDocument();
|
2060 |
+
}
|
2061 |
+
|
2062 |
+
getFieldObjects() {
|
2063 |
+
return this._transport.getFieldObjects();
|
2064 |
+
}
|
2065 |
+
|
2066 |
+
hasJSActions() {
|
2067 |
+
return this._transport.hasJSActions();
|
2068 |
+
}
|
2069 |
+
|
2070 |
+
getCalculationOrderIds() {
|
2071 |
+
return this._transport.getCalculationOrderIds();
|
2072 |
+
}
|
2073 |
+
|
2074 |
+
}
|
2075 |
+
|
2076 |
+
exports.PDFDocumentProxy = PDFDocumentProxy;
|
2077 |
+
|
2078 |
+
class PDFPageProxy {
|
2079 |
+
constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {
|
2080 |
+
this._pageIndex = pageIndex;
|
2081 |
+
this._pageInfo = pageInfo;
|
2082 |
+
this._ownerDocument = ownerDocument;
|
2083 |
+
this._transport = transport;
|
2084 |
+
this._stats = pdfBug ? new _display_utils.StatTimer() : null;
|
2085 |
+
this._pdfBug = pdfBug;
|
2086 |
+
this.commonObjs = transport.commonObjs;
|
2087 |
+
this.objs = new PDFObjects();
|
2088 |
+
this.cleanupAfterRender = false;
|
2089 |
+
this.pendingCleanup = false;
|
2090 |
+
this._intentStates = new Map();
|
2091 |
+
this.destroyed = false;
|
2092 |
+
}
|
2093 |
+
|
2094 |
+
get pageNumber() {
|
2095 |
+
return this._pageIndex + 1;
|
2096 |
+
}
|
2097 |
+
|
2098 |
+
get rotate() {
|
2099 |
+
return this._pageInfo.rotate;
|
2100 |
+
}
|
2101 |
+
|
2102 |
+
get ref() {
|
2103 |
+
return this._pageInfo.ref;
|
2104 |
+
}
|
2105 |
+
|
2106 |
+
get userUnit() {
|
2107 |
+
return this._pageInfo.userUnit;
|
2108 |
+
}
|
2109 |
+
|
2110 |
+
get view() {
|
2111 |
+
return this._pageInfo.view;
|
2112 |
+
}
|
2113 |
+
|
2114 |
+
getViewport({
|
2115 |
+
scale,
|
2116 |
+
rotation = this.rotate,
|
2117 |
+
offsetX = 0,
|
2118 |
+
offsetY = 0,
|
2119 |
+
dontFlip = false
|
2120 |
+
} = {}) {
|
2121 |
+
return new _display_utils.PageViewport({
|
2122 |
+
viewBox: this.view,
|
2123 |
+
scale,
|
2124 |
+
rotation,
|
2125 |
+
offsetX,
|
2126 |
+
offsetY,
|
2127 |
+
dontFlip
|
2128 |
+
});
|
2129 |
+
}
|
2130 |
+
|
2131 |
+
getAnnotations({
|
2132 |
+
intent = null
|
2133 |
+
} = {}) {
|
2134 |
+
if (!this._annotationsPromise || this._annotationsIntent !== intent) {
|
2135 |
+
this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);
|
2136 |
+
this._annotationsIntent = intent;
|
2137 |
+
}
|
2138 |
+
|
2139 |
+
return this._annotationsPromise;
|
2140 |
+
}
|
2141 |
+
|
2142 |
+
getJSActions() {
|
2143 |
+
return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex));
|
2144 |
+
}
|
2145 |
+
|
2146 |
+
getXfa() {
|
2147 |
+
return this._xfaPromise || (this._xfaPromise = this._transport.getPageXfa(this._pageIndex));
|
2148 |
+
}
|
2149 |
+
|
2150 |
+
render({
|
2151 |
+
canvasContext,
|
2152 |
+
viewport,
|
2153 |
+
intent = "display",
|
2154 |
+
renderInteractiveForms = false,
|
2155 |
+
transform = null,
|
2156 |
+
imageLayer = null,
|
2157 |
+
canvasFactory = null,
|
2158 |
+
background = null,
|
2159 |
+
includeAnnotationStorage = false,
|
2160 |
+
optionalContentConfigPromise = null
|
2161 |
+
}) {
|
2162 |
+
var _intentState;
|
2163 |
+
|
2164 |
+
if (arguments[0]?.annotationStorage !== undefined) {
|
2165 |
+
(0, _display_utils.deprecated)("render no longer accepts an `annotationStorage` option, " + "please use the `includeAnnotationStorage`-boolean instead.");
|
2166 |
+
includeAnnotationStorage || (includeAnnotationStorage = !!arguments[0].annotationStorage);
|
2167 |
+
}
|
2168 |
+
|
2169 |
+
if (this._stats) {
|
2170 |
+
this._stats.time("Overall");
|
2171 |
+
}
|
2172 |
+
|
2173 |
+
const renderingIntent = intent === "print" ? "print" : "display";
|
2174 |
+
this.pendingCleanup = false;
|
2175 |
+
|
2176 |
+
if (!optionalContentConfigPromise) {
|
2177 |
+
optionalContentConfigPromise = this._transport.getOptionalContentConfig();
|
2178 |
+
}
|
2179 |
+
|
2180 |
+
let intentState = this._intentStates.get(renderingIntent);
|
2181 |
+
|
2182 |
+
if (!intentState) {
|
2183 |
+
intentState = Object.create(null);
|
2184 |
+
|
2185 |
+
this._intentStates.set(renderingIntent, intentState);
|
2186 |
+
}
|
2187 |
+
|
2188 |
+
if (intentState.streamReaderCancelTimeout) {
|
2189 |
+
clearTimeout(intentState.streamReaderCancelTimeout);
|
2190 |
+
intentState.streamReaderCancelTimeout = null;
|
2191 |
+
}
|
2192 |
+
|
2193 |
+
const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({
|
2194 |
+
ownerDocument: this._ownerDocument
|
2195 |
+
});
|
2196 |
+
const annotationStorage = includeAnnotationStorage ? this._transport.annotationStorage.serializable : null;
|
2197 |
+
|
2198 |
+
if (!intentState.displayReadyCapability) {
|
2199 |
+
intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
|
2200 |
+
intentState.operatorList = {
|
2201 |
+
fnArray: [],
|
2202 |
+
argsArray: [],
|
2203 |
+
lastChunk: false
|
2204 |
+
};
|
2205 |
+
|
2206 |
+
if (this._stats) {
|
2207 |
+
this._stats.time("Page Request");
|
2208 |
+
}
|
2209 |
+
|
2210 |
+
this._pumpOperatorList({
|
2211 |
+
pageIndex: this._pageIndex,
|
2212 |
+
intent: renderingIntent,
|
2213 |
+
renderInteractiveForms: renderInteractiveForms === true,
|
2214 |
+
annotationStorage
|
2215 |
+
});
|
2216 |
+
}
|
2217 |
+
|
2218 |
+
const complete = error => {
|
2219 |
+
intentState.renderTasks.delete(internalRenderTask);
|
2220 |
+
|
2221 |
+
if (this.cleanupAfterRender || renderingIntent === "print") {
|
2222 |
+
this.pendingCleanup = true;
|
2223 |
+
}
|
2224 |
+
|
2225 |
+
this._tryCleanup();
|
2226 |
+
|
2227 |
+
if (error) {
|
2228 |
+
internalRenderTask.capability.reject(error);
|
2229 |
+
|
2230 |
+
this._abortOperatorList({
|
2231 |
+
intentState,
|
2232 |
+
reason: error
|
2233 |
+
});
|
2234 |
+
} else {
|
2235 |
+
internalRenderTask.capability.resolve();
|
2236 |
+
}
|
2237 |
+
|
2238 |
+
if (this._stats) {
|
2239 |
+
this._stats.timeEnd("Rendering");
|
2240 |
+
|
2241 |
+
this._stats.timeEnd("Overall");
|
2242 |
+
}
|
2243 |
+
};
|
2244 |
+
|
2245 |
+
const internalRenderTask = new InternalRenderTask({
|
2246 |
+
callback: complete,
|
2247 |
+
params: {
|
2248 |
+
canvasContext,
|
2249 |
+
viewport,
|
2250 |
+
transform,
|
2251 |
+
imageLayer,
|
2252 |
+
background
|
2253 |
+
},
|
2254 |
+
objs: this.objs,
|
2255 |
+
commonObjs: this.commonObjs,
|
2256 |
+
operatorList: intentState.operatorList,
|
2257 |
+
pageIndex: this._pageIndex,
|
2258 |
+
canvasFactory: canvasFactoryInstance,
|
2259 |
+
useRequestAnimationFrame: renderingIntent !== "print",
|
2260 |
+
pdfBug: this._pdfBug
|
2261 |
+
});
|
2262 |
+
((_intentState = intentState).renderTasks || (_intentState.renderTasks = new Set())).add(internalRenderTask);
|
2263 |
+
const renderTask = internalRenderTask.task;
|
2264 |
+
Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
|
2265 |
+
if (this.pendingCleanup) {
|
2266 |
+
complete();
|
2267 |
+
return;
|
2268 |
+
}
|
2269 |
+
|
2270 |
+
if (this._stats) {
|
2271 |
+
this._stats.time("Rendering");
|
2272 |
+
}
|
2273 |
+
|
2274 |
+
internalRenderTask.initializeGraphics({
|
2275 |
+
transparency,
|
2276 |
+
optionalContentConfig
|
2277 |
+
});
|
2278 |
+
internalRenderTask.operatorListChanged();
|
2279 |
+
}).catch(complete);
|
2280 |
+
return renderTask;
|
2281 |
+
}
|
2282 |
+
|
2283 |
+
getOperatorList() {
|
2284 |
+
function operatorListChanged() {
|
2285 |
+
if (intentState.operatorList.lastChunk) {
|
2286 |
+
intentState.opListReadCapability.resolve(intentState.operatorList);
|
2287 |
+
intentState.renderTasks.delete(opListTask);
|
2288 |
+
}
|
2289 |
+
}
|
2290 |
+
|
2291 |
+
const renderingIntent = "oplist";
|
2292 |
+
|
2293 |
+
let intentState = this._intentStates.get(renderingIntent);
|
2294 |
+
|
2295 |
+
if (!intentState) {
|
2296 |
+
intentState = Object.create(null);
|
2297 |
+
|
2298 |
+
this._intentStates.set(renderingIntent, intentState);
|
2299 |
+
}
|
2300 |
+
|
2301 |
+
let opListTask;
|
2302 |
+
|
2303 |
+
if (!intentState.opListReadCapability) {
|
2304 |
+
var _intentState2;
|
2305 |
+
|
2306 |
+
opListTask = Object.create(null);
|
2307 |
+
opListTask.operatorListChanged = operatorListChanged;
|
2308 |
+
intentState.opListReadCapability = (0, _util.createPromiseCapability)();
|
2309 |
+
((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask);
|
2310 |
+
intentState.operatorList = {
|
2311 |
+
fnArray: [],
|
2312 |
+
argsArray: [],
|
2313 |
+
lastChunk: false
|
2314 |
+
};
|
2315 |
+
|
2316 |
+
if (this._stats) {
|
2317 |
+
this._stats.time("Page Request");
|
2318 |
+
}
|
2319 |
+
|
2320 |
+
this._pumpOperatorList({
|
2321 |
+
pageIndex: this._pageIndex,
|
2322 |
+
intent: renderingIntent
|
2323 |
+
});
|
2324 |
+
}
|
2325 |
+
|
2326 |
+
return intentState.opListReadCapability.promise;
|
2327 |
+
}
|
2328 |
+
|
2329 |
+
streamTextContent({
|
2330 |
+
normalizeWhitespace = false,
|
2331 |
+
disableCombineTextItems = false,
|
2332 |
+
includeMarkedContent = false
|
2333 |
+
} = {}) {
|
2334 |
+
const TEXT_CONTENT_CHUNK_SIZE = 100;
|
2335 |
+
return this._transport.messageHandler.sendWithStream("GetTextContent", {
|
2336 |
+
pageIndex: this._pageIndex,
|
2337 |
+
normalizeWhitespace: normalizeWhitespace === true,
|
2338 |
+
combineTextItems: disableCombineTextItems !== true,
|
2339 |
+
includeMarkedContent: includeMarkedContent === true
|
2340 |
+
}, {
|
2341 |
+
highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
|
2342 |
+
|
2343 |
+
size(textContent) {
|
2344 |
+
return textContent.items.length;
|
2345 |
+
}
|
2346 |
+
|
2347 |
+
});
|
2348 |
+
}
|
2349 |
+
|
2350 |
+
getTextContent(params = {}) {
|
2351 |
+
const readableStream = this.streamTextContent(params);
|
2352 |
+
return new Promise(function (resolve, reject) {
|
2353 |
+
function pump() {
|
2354 |
+
reader.read().then(function ({
|
2355 |
+
value,
|
2356 |
+
done
|
2357 |
+
}) {
|
2358 |
+
if (done) {
|
2359 |
+
resolve(textContent);
|
2360 |
+
return;
|
2361 |
+
}
|
2362 |
+
|
2363 |
+
Object.assign(textContent.styles, value.styles);
|
2364 |
+
textContent.items.push(...value.items);
|
2365 |
+
pump();
|
2366 |
+
}, reject);
|
2367 |
+
}
|
2368 |
+
|
2369 |
+
const reader = readableStream.getReader();
|
2370 |
+
const textContent = {
|
2371 |
+
items: [],
|
2372 |
+
styles: Object.create(null)
|
2373 |
+
};
|
2374 |
+
pump();
|
2375 |
+
});
|
2376 |
+
}
|
2377 |
+
|
2378 |
+
getStructTree() {
|
2379 |
+
return this._structTreePromise || (this._structTreePromise = this._transport.getStructTree(this._pageIndex));
|
2380 |
+
}
|
2381 |
+
|
2382 |
+
_destroy() {
|
2383 |
+
this.destroyed = true;
|
2384 |
+
this._transport.pageCache[this._pageIndex] = null;
|
2385 |
+
const waitOn = [];
|
2386 |
+
|
2387 |
+
for (const [intent, intentState] of this._intentStates) {
|
2388 |
+
this._abortOperatorList({
|
2389 |
+
intentState,
|
2390 |
+
reason: new Error("Page was destroyed."),
|
2391 |
+
force: true
|
2392 |
+
});
|
2393 |
+
|
2394 |
+
if (intent === "oplist") {
|
2395 |
+
continue;
|
2396 |
+
}
|
2397 |
+
|
2398 |
+
for (const internalRenderTask of intentState.renderTasks) {
|
2399 |
+
waitOn.push(internalRenderTask.completed);
|
2400 |
+
internalRenderTask.cancel();
|
2401 |
+
}
|
2402 |
+
}
|
2403 |
+
|
2404 |
+
this.objs.clear();
|
2405 |
+
this._annotationsPromise = null;
|
2406 |
+
this._jsActionsPromise = null;
|
2407 |
+
this._xfaPromise = null;
|
2408 |
+
this._structTreePromise = null;
|
2409 |
+
this.pendingCleanup = false;
|
2410 |
+
return Promise.all(waitOn);
|
2411 |
+
}
|
2412 |
+
|
2413 |
+
cleanup(resetStats = false) {
|
2414 |
+
this.pendingCleanup = true;
|
2415 |
+
return this._tryCleanup(resetStats);
|
2416 |
+
}
|
2417 |
+
|
2418 |
+
_tryCleanup(resetStats = false) {
|
2419 |
+
if (!this.pendingCleanup) {
|
2420 |
+
return false;
|
2421 |
+
}
|
2422 |
+
|
2423 |
+
for (const {
|
2424 |
+
renderTasks,
|
2425 |
+
operatorList
|
2426 |
+
} of this._intentStates.values()) {
|
2427 |
+
if (renderTasks.size > 0 || !operatorList.lastChunk) {
|
2428 |
+
return false;
|
2429 |
+
}
|
2430 |
+
}
|
2431 |
+
|
2432 |
+
this._intentStates.clear();
|
2433 |
+
|
2434 |
+
this.objs.clear();
|
2435 |
+
this._annotationsPromise = null;
|
2436 |
+
this._jsActionsPromise = null;
|
2437 |
+
this._xfaPromise = null;
|
2438 |
+
this._structTreePromise = null;
|
2439 |
+
|
2440 |
+
if (resetStats && this._stats) {
|
2441 |
+
this._stats = new _display_utils.StatTimer();
|
2442 |
+
}
|
2443 |
+
|
2444 |
+
this.pendingCleanup = false;
|
2445 |
+
return true;
|
2446 |
+
}
|
2447 |
+
|
2448 |
+
_startRenderPage(transparency, intent) {
|
2449 |
+
const intentState = this._intentStates.get(intent);
|
2450 |
+
|
2451 |
+
if (!intentState) {
|
2452 |
+
return;
|
2453 |
+
}
|
2454 |
+
|
2455 |
+
if (this._stats) {
|
2456 |
+
this._stats.timeEnd("Page Request");
|
2457 |
+
}
|
2458 |
+
|
2459 |
+
if (intentState.displayReadyCapability) {
|
2460 |
+
intentState.displayReadyCapability.resolve(transparency);
|
2461 |
+
}
|
2462 |
+
}
|
2463 |
+
|
2464 |
+
_renderPageChunk(operatorListChunk, intentState) {
|
2465 |
+
for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {
|
2466 |
+
intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
|
2467 |
+
intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
|
2468 |
+
}
|
2469 |
+
|
2470 |
+
intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
|
2471 |
+
|
2472 |
+
for (const internalRenderTask of intentState.renderTasks) {
|
2473 |
+
internalRenderTask.operatorListChanged();
|
2474 |
+
}
|
2475 |
+
|
2476 |
+
if (operatorListChunk.lastChunk) {
|
2477 |
+
this._tryCleanup();
|
2478 |
+
}
|
2479 |
+
}
|
2480 |
+
|
2481 |
+
_pumpOperatorList(args) {
|
2482 |
+
(0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.');
|
2483 |
+
|
2484 |
+
const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", args);
|
2485 |
+
|
2486 |
+
const reader = readableStream.getReader();
|
2487 |
+
|
2488 |
+
const intentState = this._intentStates.get(args.intent);
|
2489 |
+
|
2490 |
+
intentState.streamReader = reader;
|
2491 |
+
|
2492 |
+
const pump = () => {
|
2493 |
+
reader.read().then(({
|
2494 |
+
value,
|
2495 |
+
done
|
2496 |
+
}) => {
|
2497 |
+
if (done) {
|
2498 |
+
intentState.streamReader = null;
|
2499 |
+
return;
|
2500 |
+
}
|
2501 |
+
|
2502 |
+
if (this._transport.destroyed) {
|
2503 |
+
return;
|
2504 |
+
}
|
2505 |
+
|
2506 |
+
this._renderPageChunk(value, intentState);
|
2507 |
+
|
2508 |
+
pump();
|
2509 |
+
}, reason => {
|
2510 |
+
intentState.streamReader = null;
|
2511 |
+
|
2512 |
+
if (this._transport.destroyed) {
|
2513 |
+
return;
|
2514 |
+
}
|
2515 |
+
|
2516 |
+
if (intentState.operatorList) {
|
2517 |
+
intentState.operatorList.lastChunk = true;
|
2518 |
+
|
2519 |
+
for (const internalRenderTask of intentState.renderTasks) {
|
2520 |
+
internalRenderTask.operatorListChanged();
|
2521 |
+
}
|
2522 |
+
|
2523 |
+
this._tryCleanup();
|
2524 |
+
}
|
2525 |
+
|
2526 |
+
if (intentState.displayReadyCapability) {
|
2527 |
+
intentState.displayReadyCapability.reject(reason);
|
2528 |
+
} else if (intentState.opListReadCapability) {
|
2529 |
+
intentState.opListReadCapability.reject(reason);
|
2530 |
+
} else {
|
2531 |
+
throw reason;
|
2532 |
+
}
|
2533 |
+
});
|
2534 |
+
};
|
2535 |
+
|
2536 |
+
pump();
|
2537 |
+
}
|
2538 |
+
|
2539 |
+
_abortOperatorList({
|
2540 |
+
intentState,
|
2541 |
+
reason,
|
2542 |
+
force = false
|
2543 |
+
}) {
|
2544 |
+
(0, _util.assert)(reason instanceof Error || typeof reason === "object" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.');
|
2545 |
+
|
2546 |
+
if (!intentState.streamReader) {
|
2547 |
+
return;
|
2548 |
+
}
|
2549 |
+
|
2550 |
+
if (!force) {
|
2551 |
+
if (intentState.renderTasks.size > 0) {
|
2552 |
+
return;
|
2553 |
+
}
|
2554 |
+
|
2555 |
+
if (reason instanceof _display_utils.RenderingCancelledException) {
|
2556 |
+
intentState.streamReaderCancelTimeout = setTimeout(() => {
|
2557 |
+
this._abortOperatorList({
|
2558 |
+
intentState,
|
2559 |
+
reason,
|
2560 |
+
force: true
|
2561 |
+
});
|
2562 |
+
|
2563 |
+
intentState.streamReaderCancelTimeout = null;
|
2564 |
+
}, RENDERING_CANCELLED_TIMEOUT);
|
2565 |
+
return;
|
2566 |
+
}
|
2567 |
+
}
|
2568 |
+
|
2569 |
+
intentState.streamReader.cancel(new _util.AbortException(reason?.message));
|
2570 |
+
intentState.streamReader = null;
|
2571 |
+
|
2572 |
+
if (this._transport.destroyed) {
|
2573 |
+
return;
|
2574 |
+
}
|
2575 |
+
|
2576 |
+
for (const [intent, curIntentState] of this._intentStates) {
|
2577 |
+
if (curIntentState === intentState) {
|
2578 |
+
this._intentStates.delete(intent);
|
2579 |
+
|
2580 |
+
break;
|
2581 |
+
}
|
2582 |
+
}
|
2583 |
+
|
2584 |
+
this.cleanup();
|
2585 |
+
}
|
2586 |
+
|
2587 |
+
get stats() {
|
2588 |
+
return this._stats;
|
2589 |
+
}
|
2590 |
+
|
2591 |
+
}
|
2592 |
+
|
2593 |
+
exports.PDFPageProxy = PDFPageProxy;
|
2594 |
+
|
2595 |
+
class LoopbackPort {
|
2596 |
+
constructor() {
|
2597 |
+
this._listeners = [];
|
2598 |
+
this._deferred = Promise.resolve(undefined);
|
2599 |
+
}
|
2600 |
+
|
2601 |
+
postMessage(obj, transfers) {
|
2602 |
+
function cloneValue(value) {
|
2603 |
+
if (typeof value !== "object" || value === null) {
|
2604 |
+
return value;
|
2605 |
+
}
|
2606 |
+
|
2607 |
+
if (cloned.has(value)) {
|
2608 |
+
return cloned.get(value);
|
2609 |
+
}
|
2610 |
+
|
2611 |
+
let buffer, result;
|
2612 |
+
|
2613 |
+
if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
|
2614 |
+
if (transfers?.includes(buffer)) {
|
2615 |
+
result = new value.constructor(buffer, value.byteOffset, value.byteLength);
|
2616 |
+
} else {
|
2617 |
+
result = new value.constructor(value);
|
2618 |
+
}
|
2619 |
+
|
2620 |
+
cloned.set(value, result);
|
2621 |
+
return result;
|
2622 |
+
}
|
2623 |
+
|
2624 |
+
if (value instanceof Map) {
|
2625 |
+
result = new Map();
|
2626 |
+
cloned.set(value, result);
|
2627 |
+
|
2628 |
+
for (const [key, val] of value) {
|
2629 |
+
result.set(key, cloneValue(val));
|
2630 |
+
}
|
2631 |
+
|
2632 |
+
return result;
|
2633 |
+
}
|
2634 |
+
|
2635 |
+
if (value instanceof Set) {
|
2636 |
+
result = new Set();
|
2637 |
+
cloned.set(value, result);
|
2638 |
+
|
2639 |
+
for (const val of value) {
|
2640 |
+
result.add(cloneValue(val));
|
2641 |
+
}
|
2642 |
+
|
2643 |
+
return result;
|
2644 |
+
}
|
2645 |
+
|
2646 |
+
if (value instanceof URL) {
|
2647 |
+
throw new Error(`LoopbackPort.postMessage - cannot clone: ${value}`);
|
2648 |
+
}
|
2649 |
+
|
2650 |
+
result = Array.isArray(value) ? [] : Object.create(null);
|
2651 |
+
cloned.set(value, result);
|
2652 |
+
|
2653 |
+
for (const i in value) {
|
2654 |
+
let desc,
|
2655 |
+
p = value;
|
2656 |
+
|
2657 |
+
while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
|
2658 |
+
p = Object.getPrototypeOf(p);
|
2659 |
+
}
|
2660 |
+
|
2661 |
+
if (typeof desc.value === "undefined") {
|
2662 |
+
continue;
|
2663 |
+
}
|
2664 |
+
|
2665 |
+
if (typeof desc.value === "function") {
|
2666 |
+
if (value.hasOwnProperty?.(i)) {
|
2667 |
+
throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);
|
2668 |
+
}
|
2669 |
+
|
2670 |
+
continue;
|
2671 |
+
}
|
2672 |
+
|
2673 |
+
result[i] = cloneValue(desc.value);
|
2674 |
+
}
|
2675 |
+
|
2676 |
+
return result;
|
2677 |
+
}
|
2678 |
+
|
2679 |
+
const cloned = new WeakMap();
|
2680 |
+
const event = {
|
2681 |
+
data: cloneValue(obj)
|
2682 |
+
};
|
2683 |
+
|
2684 |
+
this._deferred.then(() => {
|
2685 |
+
for (const listener of this._listeners) {
|
2686 |
+
listener.call(this, event);
|
2687 |
+
}
|
2688 |
+
});
|
2689 |
+
}
|
2690 |
+
|
2691 |
+
addEventListener(name, listener) {
|
2692 |
+
this._listeners.push(listener);
|
2693 |
+
}
|
2694 |
+
|
2695 |
+
removeEventListener(name, listener) {
|
2696 |
+
const i = this._listeners.indexOf(listener);
|
2697 |
+
|
2698 |
+
this._listeners.splice(i, 1);
|
2699 |
+
}
|
2700 |
+
|
2701 |
+
terminate() {
|
2702 |
+
this._listeners.length = 0;
|
2703 |
+
}
|
2704 |
+
|
2705 |
+
}
|
2706 |
+
|
2707 |
+
exports.LoopbackPort = LoopbackPort;
|
2708 |
+
|
2709 |
+
const PDFWorker = function PDFWorkerClosure() {
|
2710 |
+
const pdfWorkerPorts = new WeakMap();
|
2711 |
+
let isWorkerDisabled = false;
|
2712 |
+
let fallbackWorkerSrc;
|
2713 |
+
let nextFakeWorkerId = 0;
|
2714 |
+
let fakeWorkerCapability;
|
2715 |
+
|
2716 |
+
if (_is_node.isNodeJS && typeof require === "function") {
|
2717 |
+
isWorkerDisabled = true;
|
2718 |
+
fallbackWorkerSrc = "./pdf.worker.js";
|
2719 |
+
} else if (typeof document === "object" && "currentScript" in document) {
|
2720 |
+
const pdfjsFilePath = document.currentScript?.src;
|
2721 |
+
|
2722 |
+
if (pdfjsFilePath) {
|
2723 |
+
fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
|
2724 |
+
}
|
2725 |
+
}
|
2726 |
+
|
2727 |
+
function getWorkerSrc() {
|
2728 |
+
if (_worker_options.GlobalWorkerOptions.workerSrc) {
|
2729 |
+
return _worker_options.GlobalWorkerOptions.workerSrc;
|
2730 |
+
}
|
2731 |
+
|
2732 |
+
if (typeof fallbackWorkerSrc !== "undefined") {
|
2733 |
+
if (!_is_node.isNodeJS) {
|
2734 |
+
(0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
|
2735 |
+
}
|
2736 |
+
|
2737 |
+
return fallbackWorkerSrc;
|
2738 |
+
}
|
2739 |
+
|
2740 |
+
throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
|
2741 |
+
}
|
2742 |
+
|
2743 |
+
function getMainThreadWorkerMessageHandler() {
|
2744 |
+
let mainWorkerMessageHandler;
|
2745 |
+
|
2746 |
+
try {
|
2747 |
+
mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler;
|
2748 |
+
} catch (ex) {}
|
2749 |
+
|
2750 |
+
return mainWorkerMessageHandler || null;
|
2751 |
+
}
|
2752 |
+
|
2753 |
+
function setupFakeWorkerGlobal() {
|
2754 |
+
if (fakeWorkerCapability) {
|
2755 |
+
return fakeWorkerCapability.promise;
|
2756 |
+
}
|
2757 |
+
|
2758 |
+
fakeWorkerCapability = (0, _util.createPromiseCapability)();
|
2759 |
+
|
2760 |
+
const loader = async function () {
|
2761 |
+
const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
|
2762 |
+
|
2763 |
+
if (mainWorkerMessageHandler) {
|
2764 |
+
return mainWorkerMessageHandler;
|
2765 |
+
}
|
2766 |
+
|
2767 |
+
if (_is_node.isNodeJS && typeof require === "function") {
|
2768 |
+
const worker = eval("require")(getWorkerSrc());
|
2769 |
+
return worker.WorkerMessageHandler;
|
2770 |
+
}
|
2771 |
+
|
2772 |
+
await (0, _display_utils.loadScript)(getWorkerSrc());
|
2773 |
+
return window.pdfjsWorker.WorkerMessageHandler;
|
2774 |
+
};
|
2775 |
+
|
2776 |
+
loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);
|
2777 |
+
return fakeWorkerCapability.promise;
|
2778 |
+
}
|
2779 |
+
|
2780 |
+
function createCDNWrapper(url) {
|
2781 |
+
const wrapper = "importScripts('" + url + "');";
|
2782 |
+
return URL.createObjectURL(new Blob([wrapper]));
|
2783 |
+
}
|
2784 |
+
|
2785 |
+
class PDFWorker {
|
2786 |
+
constructor({
|
2787 |
+
name = null,
|
2788 |
+
port = null,
|
2789 |
+
verbosity = (0, _util.getVerbosityLevel)()
|
2790 |
+
} = {}) {
|
2791 |
+
if (port && pdfWorkerPorts.has(port)) {
|
2792 |
+
throw new Error("Cannot use more than one PDFWorker per port");
|
2793 |
+
}
|
2794 |
+
|
2795 |
+
this.name = name;
|
2796 |
+
this.destroyed = false;
|
2797 |
+
this.postMessageTransfers = true;
|
2798 |
+
this.verbosity = verbosity;
|
2799 |
+
this._readyCapability = (0, _util.createPromiseCapability)();
|
2800 |
+
this._port = null;
|
2801 |
+
this._webWorker = null;
|
2802 |
+
this._messageHandler = null;
|
2803 |
+
|
2804 |
+
if (port) {
|
2805 |
+
pdfWorkerPorts.set(port, this);
|
2806 |
+
|
2807 |
+
this._initializeFromPort(port);
|
2808 |
+
|
2809 |
+
return;
|
2810 |
+
}
|
2811 |
+
|
2812 |
+
this._initialize();
|
2813 |
+
}
|
2814 |
+
|
2815 |
+
get promise() {
|
2816 |
+
return this._readyCapability.promise;
|
2817 |
+
}
|
2818 |
+
|
2819 |
+
get port() {
|
2820 |
+
return this._port;
|
2821 |
+
}
|
2822 |
+
|
2823 |
+
get messageHandler() {
|
2824 |
+
return this._messageHandler;
|
2825 |
+
}
|
2826 |
+
|
2827 |
+
_initializeFromPort(port) {
|
2828 |
+
this._port = port;
|
2829 |
+
this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
|
2830 |
+
|
2831 |
+
this._messageHandler.on("ready", function () {});
|
2832 |
+
|
2833 |
+
this._readyCapability.resolve();
|
2834 |
+
}
|
2835 |
+
|
2836 |
+
_initialize() {
|
2837 |
+
if (typeof Worker !== "undefined" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
|
2838 |
+
let workerSrc = getWorkerSrc();
|
2839 |
+
|
2840 |
+
try {
|
2841 |
+
if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
|
2842 |
+
workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);
|
2843 |
+
}
|
2844 |
+
|
2845 |
+
const worker = new Worker(workerSrc);
|
2846 |
+
const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
|
2847 |
+
|
2848 |
+
const terminateEarly = () => {
|
2849 |
+
worker.removeEventListener("error", onWorkerError);
|
2850 |
+
messageHandler.destroy();
|
2851 |
+
worker.terminate();
|
2852 |
+
|
2853 |
+
if (this.destroyed) {
|
2854 |
+
this._readyCapability.reject(new Error("Worker was destroyed"));
|
2855 |
+
} else {
|
2856 |
+
this._setupFakeWorker();
|
2857 |
+
}
|
2858 |
+
};
|
2859 |
+
|
2860 |
+
const onWorkerError = () => {
|
2861 |
+
if (!this._webWorker) {
|
2862 |
+
terminateEarly();
|
2863 |
+
}
|
2864 |
+
};
|
2865 |
+
|
2866 |
+
worker.addEventListener("error", onWorkerError);
|
2867 |
+
messageHandler.on("test", data => {
|
2868 |
+
worker.removeEventListener("error", onWorkerError);
|
2869 |
+
|
2870 |
+
if (this.destroyed) {
|
2871 |
+
terminateEarly();
|
2872 |
+
return;
|
2873 |
+
}
|
2874 |
+
|
2875 |
+
if (data) {
|
2876 |
+
this._messageHandler = messageHandler;
|
2877 |
+
this._port = worker;
|
2878 |
+
this._webWorker = worker;
|
2879 |
+
|
2880 |
+
if (!data.supportTransfers) {
|
2881 |
+
this.postMessageTransfers = false;
|
2882 |
+
}
|
2883 |
+
|
2884 |
+
this._readyCapability.resolve();
|
2885 |
+
|
2886 |
+
messageHandler.send("configure", {
|
2887 |
+
verbosity: this.verbosity
|
2888 |
+
});
|
2889 |
+
} else {
|
2890 |
+
this._setupFakeWorker();
|
2891 |
+
|
2892 |
+
messageHandler.destroy();
|
2893 |
+
worker.terminate();
|
2894 |
+
}
|
2895 |
+
});
|
2896 |
+
messageHandler.on("ready", data => {
|
2897 |
+
worker.removeEventListener("error", onWorkerError);
|
2898 |
+
|
2899 |
+
if (this.destroyed) {
|
2900 |
+
terminateEarly();
|
2901 |
+
return;
|
2902 |
+
}
|
2903 |
+
|
2904 |
+
try {
|
2905 |
+
sendTest();
|
2906 |
+
} catch (e) {
|
2907 |
+
this._setupFakeWorker();
|
2908 |
+
}
|
2909 |
+
});
|
2910 |
+
|
2911 |
+
const sendTest = () => {
|
2912 |
+
const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
|
2913 |
+
|
2914 |
+
try {
|
2915 |
+
messageHandler.send("test", testObj, [testObj.buffer]);
|
2916 |
+
} catch (ex) {
|
2917 |
+
(0, _util.warn)("Cannot use postMessage transfers.");
|
2918 |
+
testObj[0] = 0;
|
2919 |
+
messageHandler.send("test", testObj);
|
2920 |
+
}
|
2921 |
+
};
|
2922 |
+
|
2923 |
+
sendTest();
|
2924 |
+
return;
|
2925 |
+
} catch (e) {
|
2926 |
+
(0, _util.info)("The worker has been disabled.");
|
2927 |
+
}
|
2928 |
+
}
|
2929 |
+
|
2930 |
+
this._setupFakeWorker();
|
2931 |
+
}
|
2932 |
+
|
2933 |
+
_setupFakeWorker() {
|
2934 |
+
if (!isWorkerDisabled) {
|
2935 |
+
(0, _util.warn)("Setting up fake worker.");
|
2936 |
+
isWorkerDisabled = true;
|
2937 |
+
}
|
2938 |
+
|
2939 |
+
setupFakeWorkerGlobal().then(WorkerMessageHandler => {
|
2940 |
+
if (this.destroyed) {
|
2941 |
+
this._readyCapability.reject(new Error("Worker was destroyed"));
|
2942 |
+
|
2943 |
+
return;
|
2944 |
+
}
|
2945 |
+
|
2946 |
+
const port = new LoopbackPort();
|
2947 |
+
this._port = port;
|
2948 |
+
const id = "fake" + nextFakeWorkerId++;
|
2949 |
+
const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
|
2950 |
+
WorkerMessageHandler.setup(workerHandler, port);
|
2951 |
+
const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
|
2952 |
+
this._messageHandler = messageHandler;
|
2953 |
+
|
2954 |
+
this._readyCapability.resolve();
|
2955 |
+
|
2956 |
+
messageHandler.send("configure", {
|
2957 |
+
verbosity: this.verbosity
|
2958 |
+
});
|
2959 |
+
}).catch(reason => {
|
2960 |
+
this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
|
2961 |
+
});
|
2962 |
+
}
|
2963 |
+
|
2964 |
+
destroy() {
|
2965 |
+
this.destroyed = true;
|
2966 |
+
|
2967 |
+
if (this._webWorker) {
|
2968 |
+
this._webWorker.terminate();
|
2969 |
+
|
2970 |
+
this._webWorker = null;
|
2971 |
+
}
|
2972 |
+
|
2973 |
+
pdfWorkerPorts.delete(this._port);
|
2974 |
+
this._port = null;
|
2975 |
+
|
2976 |
+
if (this._messageHandler) {
|
2977 |
+
this._messageHandler.destroy();
|
2978 |
+
|
2979 |
+
this._messageHandler = null;
|
2980 |
+
}
|
2981 |
+
}
|
2982 |
+
|
2983 |
+
static fromPort(params) {
|
2984 |
+
if (!params || !params.port) {
|
2985 |
+
throw new Error("PDFWorker.fromPort - invalid method signature.");
|
2986 |
+
}
|
2987 |
+
|
2988 |
+
if (pdfWorkerPorts.has(params.port)) {
|
2989 |
+
return pdfWorkerPorts.get(params.port);
|
2990 |
+
}
|
2991 |
+
|
2992 |
+
return new PDFWorker(params);
|
2993 |
+
}
|
2994 |
+
|
2995 |
+
static getWorkerSrc() {
|
2996 |
+
return getWorkerSrc();
|
2997 |
+
}
|
2998 |
+
|
2999 |
+
}
|
3000 |
+
|
3001 |
+
return PDFWorker;
|
3002 |
+
}();
|
3003 |
+
|
3004 |
+
exports.PDFWorker = PDFWorker;
|
3005 |
+
|
3006 |
+
class WorkerTransport {
|
3007 |
+
constructor(messageHandler, loadingTask, networkStream, params) {
|
3008 |
+
this.messageHandler = messageHandler;
|
3009 |
+
this.loadingTask = loadingTask;
|
3010 |
+
this.commonObjs = new PDFObjects();
|
3011 |
+
this.fontLoader = new _font_loader.FontLoader({
|
3012 |
+
docId: loadingTask.docId,
|
3013 |
+
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
|
3014 |
+
ownerDocument: params.ownerDocument
|
3015 |
+
});
|
3016 |
+
this._params = params;
|
3017 |
+
this.CMapReaderFactory = new params.CMapReaderFactory({
|
3018 |
+
baseUrl: params.cMapUrl,
|
3019 |
+
isCompressed: params.cMapPacked
|
3020 |
+
});
|
3021 |
+
this.destroyed = false;
|
3022 |
+
this.destroyCapability = null;
|
3023 |
+
this._passwordCapability = null;
|
3024 |
+
this._networkStream = networkStream;
|
3025 |
+
this._fullReader = null;
|
3026 |
+
this._lastProgress = null;
|
3027 |
+
this.pageCache = [];
|
3028 |
+
this.pagePromises = [];
|
3029 |
+
this.downloadInfoCapability = (0, _util.createPromiseCapability)();
|
3030 |
+
this.setupMessageHandler();
|
3031 |
+
}
|
3032 |
+
|
3033 |
+
get annotationStorage() {
|
3034 |
+
return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage());
|
3035 |
+
}
|
3036 |
+
|
3037 |
+
destroy() {
|
3038 |
+
if (this.destroyCapability) {
|
3039 |
+
return this.destroyCapability.promise;
|
3040 |
+
}
|
3041 |
+
|
3042 |
+
this.destroyed = true;
|
3043 |
+
this.destroyCapability = (0, _util.createPromiseCapability)();
|
3044 |
+
|
3045 |
+
if (this._passwordCapability) {
|
3046 |
+
this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
|
3047 |
+
}
|
3048 |
+
|
3049 |
+
const waitOn = [];
|
3050 |
+
|
3051 |
+
for (const page of this.pageCache) {
|
3052 |
+
if (page) {
|
3053 |
+
waitOn.push(page._destroy());
|
3054 |
+
}
|
3055 |
+
}
|
3056 |
+
|
3057 |
+
this.pageCache.length = 0;
|
3058 |
+
this.pagePromises.length = 0;
|
3059 |
+
|
3060 |
+
if (this.hasOwnProperty("annotationStorage")) {
|
3061 |
+
this.annotationStorage.resetModified();
|
3062 |
+
}
|
3063 |
+
|
3064 |
+
const terminated = this.messageHandler.sendWithPromise("Terminate", null);
|
3065 |
+
waitOn.push(terminated);
|
3066 |
+
Promise.all(waitOn).then(() => {
|
3067 |
+
this.commonObjs.clear();
|
3068 |
+
this.fontLoader.clear();
|
3069 |
+
this._hasJSActionsPromise = null;
|
3070 |
+
|
3071 |
+
if (this._networkStream) {
|
3072 |
+
this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
|
3073 |
+
}
|
3074 |
+
|
3075 |
+
if (this.messageHandler) {
|
3076 |
+
this.messageHandler.destroy();
|
3077 |
+
this.messageHandler = null;
|
3078 |
+
}
|
3079 |
+
|
3080 |
+
this.destroyCapability.resolve();
|
3081 |
+
}, this.destroyCapability.reject);
|
3082 |
+
return this.destroyCapability.promise;
|
3083 |
+
}
|
3084 |
+
|
3085 |
+
setupMessageHandler() {
|
3086 |
+
const {
|
3087 |
+
messageHandler,
|
3088 |
+
loadingTask
|
3089 |
+
} = this;
|
3090 |
+
messageHandler.on("GetReader", (data, sink) => {
|
3091 |
+
(0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
|
3092 |
+
this._fullReader = this._networkStream.getFullReader();
|
3093 |
+
|
3094 |
+
this._fullReader.onProgress = evt => {
|
3095 |
+
this._lastProgress = {
|
3096 |
+
loaded: evt.loaded,
|
3097 |
+
total: evt.total
|
3098 |
+
};
|
3099 |
+
};
|
3100 |
+
|
3101 |
+
sink.onPull = () => {
|
3102 |
+
this._fullReader.read().then(function ({
|
3103 |
+
value,
|
3104 |
+
done
|
3105 |
+
}) {
|
3106 |
+
if (done) {
|
3107 |
+
sink.close();
|
3108 |
+
return;
|
3109 |
+
}
|
3110 |
+
|
3111 |
+
(0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer.");
|
3112 |
+
sink.enqueue(new Uint8Array(value), 1, [value]);
|
3113 |
+
}).catch(reason => {
|
3114 |
+
sink.error(reason);
|
3115 |
+
});
|
3116 |
+
};
|
3117 |
+
|
3118 |
+
sink.onCancel = reason => {
|
3119 |
+
this._fullReader.cancel(reason);
|
3120 |
+
|
3121 |
+
sink.ready.catch(readyReason => {
|
3122 |
+
if (this.destroyed) {
|
3123 |
+
return;
|
3124 |
+
}
|
3125 |
+
|
3126 |
+
throw readyReason;
|
3127 |
+
});
|
3128 |
+
};
|
3129 |
+
});
|
3130 |
+
messageHandler.on("ReaderHeadersReady", data => {
|
3131 |
+
const headersCapability = (0, _util.createPromiseCapability)();
|
3132 |
+
const fullReader = this._fullReader;
|
3133 |
+
fullReader.headersReady.then(() => {
|
3134 |
+
if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
|
3135 |
+
if (this._lastProgress && loadingTask.onProgress) {
|
3136 |
+
loadingTask.onProgress(this._lastProgress);
|
3137 |
+
}
|
3138 |
+
|
3139 |
+
fullReader.onProgress = evt => {
|
3140 |
+
if (loadingTask.onProgress) {
|
3141 |
+
loadingTask.onProgress({
|
3142 |
+
loaded: evt.loaded,
|
3143 |
+
total: evt.total
|
3144 |
+
});
|
3145 |
+
}
|
3146 |
+
};
|
3147 |
+
}
|
3148 |
+
|
3149 |
+
headersCapability.resolve({
|
3150 |
+
isStreamingSupported: fullReader.isStreamingSupported,
|
3151 |
+
isRangeSupported: fullReader.isRangeSupported,
|
3152 |
+
contentLength: fullReader.contentLength
|
3153 |
+
});
|
3154 |
+
}, headersCapability.reject);
|
3155 |
+
return headersCapability.promise;
|
3156 |
+
});
|
3157 |
+
messageHandler.on("GetRangeReader", (data, sink) => {
|
3158 |
+
(0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
|
3159 |
+
|
3160 |
+
const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
|
3161 |
+
|
3162 |
+
if (!rangeReader) {
|
3163 |
+
sink.close();
|
3164 |
+
return;
|
3165 |
+
}
|
3166 |
+
|
3167 |
+
sink.onPull = () => {
|
3168 |
+
rangeReader.read().then(function ({
|
3169 |
+
value,
|
3170 |
+
done
|
3171 |
+
}) {
|
3172 |
+
if (done) {
|
3173 |
+
sink.close();
|
3174 |
+
return;
|
3175 |
+
}
|
3176 |
+
|
3177 |
+
(0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer.");
|
3178 |
+
sink.enqueue(new Uint8Array(value), 1, [value]);
|
3179 |
+
}).catch(reason => {
|
3180 |
+
sink.error(reason);
|
3181 |
+
});
|
3182 |
+
};
|
3183 |
+
|
3184 |
+
sink.onCancel = reason => {
|
3185 |
+
rangeReader.cancel(reason);
|
3186 |
+
sink.ready.catch(readyReason => {
|
3187 |
+
if (this.destroyed) {
|
3188 |
+
return;
|
3189 |
+
}
|
3190 |
+
|
3191 |
+
throw readyReason;
|
3192 |
+
});
|
3193 |
+
};
|
3194 |
+
});
|
3195 |
+
messageHandler.on("GetDoc", ({
|
3196 |
+
pdfInfo
|
3197 |
+
}) => {
|
3198 |
+
this._numPages = pdfInfo.numPages;
|
3199 |
+
|
3200 |
+
loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
|
3201 |
+
});
|
3202 |
+
messageHandler.on("DocException", function (ex) {
|
3203 |
+
let reason;
|
3204 |
+
|
3205 |
+
switch (ex.name) {
|
3206 |
+
case "PasswordException":
|
3207 |
+
reason = new _util.PasswordException(ex.message, ex.code);
|
3208 |
+
break;
|
3209 |
+
|
3210 |
+
case "InvalidPDFException":
|
3211 |
+
reason = new _util.InvalidPDFException(ex.message);
|
3212 |
+
break;
|
3213 |
+
|
3214 |
+
case "MissingPDFException":
|
3215 |
+
reason = new _util.MissingPDFException(ex.message);
|
3216 |
+
break;
|
3217 |
+
|
3218 |
+
case "UnexpectedResponseException":
|
3219 |
+
reason = new _util.UnexpectedResponseException(ex.message, ex.status);
|
3220 |
+
break;
|
3221 |
+
|
3222 |
+
case "UnknownErrorException":
|
3223 |
+
reason = new _util.UnknownErrorException(ex.message, ex.details);
|
3224 |
+
break;
|
3225 |
+
}
|
3226 |
+
|
3227 |
+
if (!(reason instanceof Error)) {
|
3228 |
+
const msg = "DocException - expected a valid Error.";
|
3229 |
+
(0, _util.warn)(msg);
|
3230 |
+
}
|
3231 |
+
|
3232 |
+
loadingTask._capability.reject(reason);
|
3233 |
+
});
|
3234 |
+
messageHandler.on("PasswordRequest", exception => {
|
3235 |
+
this._passwordCapability = (0, _util.createPromiseCapability)();
|
3236 |
+
|
3237 |
+
if (loadingTask.onPassword) {
|
3238 |
+
const updatePassword = password => {
|
3239 |
+
this._passwordCapability.resolve({
|
3240 |
+
password
|
3241 |
+
});
|
3242 |
+
};
|
3243 |
+
|
3244 |
+
try {
|
3245 |
+
loadingTask.onPassword(updatePassword, exception.code);
|
3246 |
+
} catch (ex) {
|
3247 |
+
this._passwordCapability.reject(ex);
|
3248 |
+
}
|
3249 |
+
} else {
|
3250 |
+
this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
|
3251 |
+
}
|
3252 |
+
|
3253 |
+
return this._passwordCapability.promise;
|
3254 |
+
});
|
3255 |
+
messageHandler.on("DataLoaded", data => {
|
3256 |
+
if (loadingTask.onProgress) {
|
3257 |
+
loadingTask.onProgress({
|
3258 |
+
loaded: data.length,
|
3259 |
+
total: data.length
|
3260 |
+
});
|
3261 |
+
}
|
3262 |
+
|
3263 |
+
this.downloadInfoCapability.resolve(data);
|
3264 |
+
});
|
3265 |
+
messageHandler.on("StartRenderPage", data => {
|
3266 |
+
if (this.destroyed) {
|
3267 |
+
return;
|
3268 |
+
}
|
3269 |
+
|
3270 |
+
const page = this.pageCache[data.pageIndex];
|
3271 |
+
|
3272 |
+
page._startRenderPage(data.transparency, data.intent);
|
3273 |
+
});
|
3274 |
+
messageHandler.on("commonobj", data => {
|
3275 |
+
if (this.destroyed) {
|
3276 |
+
return;
|
3277 |
+
}
|
3278 |
+
|
3279 |
+
const [id, type, exportedData] = data;
|
3280 |
+
|
3281 |
+
if (this.commonObjs.has(id)) {
|
3282 |
+
return;
|
3283 |
+
}
|
3284 |
+
|
3285 |
+
switch (type) {
|
3286 |
+
case "Font":
|
3287 |
+
const params = this._params;
|
3288 |
+
|
3289 |
+
if ("error" in exportedData) {
|
3290 |
+
const exportedError = exportedData.error;
|
3291 |
+
(0, _util.warn)(`Error during font loading: ${exportedError}`);
|
3292 |
+
this.commonObjs.resolve(id, exportedError);
|
3293 |
+
break;
|
3294 |
+
}
|
3295 |
+
|
3296 |
+
let fontRegistry = null;
|
3297 |
+
|
3298 |
+
if (params.pdfBug && globalThis.FontInspector?.enabled) {
|
3299 |
+
fontRegistry = {
|
3300 |
+
registerFont(font, url) {
|
3301 |
+
globalThis.FontInspector.fontAdded(font, url);
|
3302 |
+
}
|
3303 |
+
|
3304 |
+
};
|
3305 |
+
}
|
3306 |
+
|
3307 |
+
const font = new _font_loader.FontFaceObject(exportedData, {
|
3308 |
+
isEvalSupported: params.isEvalSupported,
|
3309 |
+
disableFontFace: params.disableFontFace,
|
3310 |
+
ignoreErrors: params.ignoreErrors,
|
3311 |
+
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
|
3312 |
+
fontRegistry
|
3313 |
+
});
|
3314 |
+
this.fontLoader.bind(font).catch(reason => {
|
3315 |
+
return messageHandler.sendWithPromise("FontFallback", {
|
3316 |
+
id
|
3317 |
+
});
|
3318 |
+
}).finally(() => {
|
3319 |
+
if (!params.fontExtraProperties && font.data) {
|
3320 |
+
font.data = null;
|
3321 |
+
}
|
3322 |
+
|
3323 |
+
this.commonObjs.resolve(id, font);
|
3324 |
+
});
|
3325 |
+
break;
|
3326 |
+
|
3327 |
+
case "FontPath":
|
3328 |
+
case "Image":
|
3329 |
+
this.commonObjs.resolve(id, exportedData);
|
3330 |
+
break;
|
3331 |
+
|
3332 |
+
default:
|
3333 |
+
throw new Error(`Got unknown common object type ${type}`);
|
3334 |
+
}
|
3335 |
+
});
|
3336 |
+
messageHandler.on("obj", data => {
|
3337 |
+
if (this.destroyed) {
|
3338 |
+
return undefined;
|
3339 |
+
}
|
3340 |
+
|
3341 |
+
const [id, pageIndex, type, imageData] = data;
|
3342 |
+
const pageProxy = this.pageCache[pageIndex];
|
3343 |
+
|
3344 |
+
if (pageProxy.objs.has(id)) {
|
3345 |
+
return undefined;
|
3346 |
+
}
|
3347 |
+
|
3348 |
+
switch (type) {
|
3349 |
+
case "Image":
|
3350 |
+
pageProxy.objs.resolve(id, imageData);
|
3351 |
+
const MAX_IMAGE_SIZE_TO_STORE = 8000000;
|
3352 |
+
|
3353 |
+
if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {
|
3354 |
+
pageProxy.cleanupAfterRender = true;
|
3355 |
+
}
|
3356 |
+
|
3357 |
+
break;
|
3358 |
+
|
3359 |
+
default:
|
3360 |
+
throw new Error(`Got unknown object type ${type}`);
|
3361 |
+
}
|
3362 |
+
|
3363 |
+
return undefined;
|
3364 |
+
});
|
3365 |
+
messageHandler.on("DocProgress", data => {
|
3366 |
+
if (this.destroyed) {
|
3367 |
+
return;
|
3368 |
+
}
|
3369 |
+
|
3370 |
+
if (loadingTask.onProgress) {
|
3371 |
+
loadingTask.onProgress({
|
3372 |
+
loaded: data.loaded,
|
3373 |
+
total: data.total
|
3374 |
+
});
|
3375 |
+
}
|
3376 |
+
});
|
3377 |
+
messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
|
3378 |
+
messageHandler.on("FetchBuiltInCMap", (data, sink) => {
|
3379 |
+
if (this.destroyed) {
|
3380 |
+
sink.error(new Error("Worker was destroyed"));
|
3381 |
+
return;
|
3382 |
+
}
|
3383 |
+
|
3384 |
+
let fetched = false;
|
3385 |
+
|
3386 |
+
sink.onPull = () => {
|
3387 |
+
if (fetched) {
|
3388 |
+
sink.close();
|
3389 |
+
return;
|
3390 |
+
}
|
3391 |
+
|
3392 |
+
fetched = true;
|
3393 |
+
this.CMapReaderFactory.fetch(data).then(function (builtInCMap) {
|
3394 |
+
sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);
|
3395 |
+
}).catch(function (reason) {
|
3396 |
+
sink.error(reason);
|
3397 |
+
});
|
3398 |
+
};
|
3399 |
+
});
|
3400 |
+
}
|
3401 |
+
|
3402 |
+
_onUnsupportedFeature({
|
3403 |
+
featureId
|
3404 |
+
}) {
|
3405 |
+
if (this.destroyed) {
|
3406 |
+
return;
|
3407 |
+
}
|
3408 |
+
|
3409 |
+
if (this.loadingTask.onUnsupportedFeature) {
|
3410 |
+
this.loadingTask.onUnsupportedFeature(featureId);
|
3411 |
+
}
|
3412 |
+
}
|
3413 |
+
|
3414 |
+
getData() {
|
3415 |
+
return this.messageHandler.sendWithPromise("GetData", null);
|
3416 |
+
}
|
3417 |
+
|
3418 |
+
getPage(pageNumber) {
|
3419 |
+
if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
|
3420 |
+
return Promise.reject(new Error("Invalid page request"));
|
3421 |
+
}
|
3422 |
+
|
3423 |
+
const pageIndex = pageNumber - 1;
|
3424 |
+
|
3425 |
+
if (pageIndex in this.pagePromises) {
|
3426 |
+
return this.pagePromises[pageIndex];
|
3427 |
+
}
|
3428 |
+
|
3429 |
+
const promise = this.messageHandler.sendWithPromise("GetPage", {
|
3430 |
+
pageIndex
|
3431 |
+
}).then(pageInfo => {
|
3432 |
+
if (this.destroyed) {
|
3433 |
+
throw new Error("Transport destroyed");
|
3434 |
+
}
|
3435 |
+
|
3436 |
+
const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);
|
3437 |
+
this.pageCache[pageIndex] = page;
|
3438 |
+
return page;
|
3439 |
+
});
|
3440 |
+
this.pagePromises[pageIndex] = promise;
|
3441 |
+
return promise;
|
3442 |
+
}
|
3443 |
+
|
3444 |
+
getPageIndex(ref) {
|
3445 |
+
return this.messageHandler.sendWithPromise("GetPageIndex", {
|
3446 |
+
ref
|
3447 |
+
}).catch(function (reason) {
|
3448 |
+
return Promise.reject(new Error(reason));
|
3449 |
+
});
|
3450 |
+
}
|
3451 |
+
|
3452 |
+
getAnnotations(pageIndex, intent) {
|
3453 |
+
return this.messageHandler.sendWithPromise("GetAnnotations", {
|
3454 |
+
pageIndex,
|
3455 |
+
intent
|
3456 |
+
});
|
3457 |
+
}
|
3458 |
+
|
3459 |
+
saveDocument() {
|
3460 |
+
return this.messageHandler.sendWithPromise("SaveDocument", {
|
3461 |
+
numPages: this._numPages,
|
3462 |
+
annotationStorage: this.annotationStorage.serializable,
|
3463 |
+
filename: this._fullReader?.filename ?? null
|
3464 |
+
}).finally(() => {
|
3465 |
+
this.annotationStorage.resetModified();
|
3466 |
+
});
|
3467 |
+
}
|
3468 |
+
|
3469 |
+
getFieldObjects() {
|
3470 |
+
return this.messageHandler.sendWithPromise("GetFieldObjects", null);
|
3471 |
+
}
|
3472 |
+
|
3473 |
+
hasJSActions() {
|
3474 |
+
return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise("HasJSActions", null));
|
3475 |
+
}
|
3476 |
+
|
3477 |
+
getCalculationOrderIds() {
|
3478 |
+
return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
|
3479 |
+
}
|
3480 |
+
|
3481 |
+
getDestinations() {
|
3482 |
+
return this.messageHandler.sendWithPromise("GetDestinations", null);
|
3483 |
+
}
|
3484 |
+
|
3485 |
+
getDestination(id) {
|
3486 |
+
if (typeof id !== "string") {
|
3487 |
+
return Promise.reject(new Error("Invalid destination request."));
|
3488 |
+
}
|
3489 |
+
|
3490 |
+
return this.messageHandler.sendWithPromise("GetDestination", {
|
3491 |
+
id
|
3492 |
+
});
|
3493 |
+
}
|
3494 |
+
|
3495 |
+
getPageLabels() {
|
3496 |
+
return this.messageHandler.sendWithPromise("GetPageLabels", null);
|
3497 |
+
}
|
3498 |
+
|
3499 |
+
getPageLayout() {
|
3500 |
+
return this.messageHandler.sendWithPromise("GetPageLayout", null);
|
3501 |
+
}
|
3502 |
+
|
3503 |
+
getPageMode() {
|
3504 |
+
return this.messageHandler.sendWithPromise("GetPageMode", null);
|
3505 |
+
}
|
3506 |
+
|
3507 |
+
getViewerPreferences() {
|
3508 |
+
return this.messageHandler.sendWithPromise("GetViewerPreferences", null);
|
3509 |
+
}
|
3510 |
+
|
3511 |
+
getOpenAction() {
|
3512 |
+
return this.messageHandler.sendWithPromise("GetOpenAction", null);
|
3513 |
+
}
|
3514 |
+
|
3515 |
+
getAttachments() {
|
3516 |
+
return this.messageHandler.sendWithPromise("GetAttachments", null);
|
3517 |
+
}
|
3518 |
+
|
3519 |
+
getJavaScript() {
|
3520 |
+
return this.messageHandler.sendWithPromise("GetJavaScript", null);
|
3521 |
+
}
|
3522 |
+
|
3523 |
+
getDocJSActions() {
|
3524 |
+
return this.messageHandler.sendWithPromise("GetDocJSActions", null);
|
3525 |
+
}
|
3526 |
+
|
3527 |
+
getPageJSActions(pageIndex) {
|
3528 |
+
return this.messageHandler.sendWithPromise("GetPageJSActions", {
|
3529 |
+
pageIndex
|
3530 |
+
});
|
3531 |
+
}
|
3532 |
+
|
3533 |
+
getPageXfa(pageIndex) {
|
3534 |
+
return this.messageHandler.sendWithPromise("GetPageXfa", {
|
3535 |
+
pageIndex
|
3536 |
+
});
|
3537 |
+
}
|
3538 |
+
|
3539 |
+
getStructTree(pageIndex) {
|
3540 |
+
return this.messageHandler.sendWithPromise("GetStructTree", {
|
3541 |
+
pageIndex
|
3542 |
+
});
|
3543 |
+
}
|
3544 |
+
|
3545 |
+
getOutline() {
|
3546 |
+
return this.messageHandler.sendWithPromise("GetOutline", null);
|
3547 |
+
}
|
3548 |
+
|
3549 |
+
getOptionalContentConfig() {
|
3550 |
+
return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => {
|
3551 |
+
return new _optional_content_config.OptionalContentConfig(results);
|
3552 |
+
});
|
3553 |
+
}
|
3554 |
+
|
3555 |
+
getPermissions() {
|
3556 |
+
return this.messageHandler.sendWithPromise("GetPermissions", null);
|
3557 |
+
}
|
3558 |
+
|
3559 |
+
getMetadata() {
|
3560 |
+
return this.messageHandler.sendWithPromise("GetMetadata", null).then(results => {
|
3561 |
+
return {
|
3562 |
+
info: results[0],
|
3563 |
+
metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
|
3564 |
+
contentDispositionFilename: this._fullReader?.filename ?? null,
|
3565 |
+
contentLength: this._fullReader?.contentLength ?? null
|
3566 |
+
};
|
3567 |
+
});
|
3568 |
+
}
|
3569 |
+
|
3570 |
+
getMarkInfo() {
|
3571 |
+
return this.messageHandler.sendWithPromise("GetMarkInfo", null);
|
3572 |
+
}
|
3573 |
+
|
3574 |
+
getStats() {
|
3575 |
+
return this.messageHandler.sendWithPromise("GetStats", null);
|
3576 |
+
}
|
3577 |
+
|
3578 |
+
async startCleanup(keepLoadedFonts = false) {
|
3579 |
+
await this.messageHandler.sendWithPromise("Cleanup", null);
|
3580 |
+
|
3581 |
+
if (this.destroyed) {
|
3582 |
+
return;
|
3583 |
+
}
|
3584 |
+
|
3585 |
+
for (let i = 0, ii = this.pageCache.length; i < ii; i++) {
|
3586 |
+
const page = this.pageCache[i];
|
3587 |
+
|
3588 |
+
if (!page) {
|
3589 |
+
continue;
|
3590 |
+
}
|
3591 |
+
|
3592 |
+
const cleanupSuccessful = page.cleanup();
|
3593 |
+
|
3594 |
+
if (!cleanupSuccessful) {
|
3595 |
+
throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);
|
3596 |
+
}
|
3597 |
+
}
|
3598 |
+
|
3599 |
+
this.commonObjs.clear();
|
3600 |
+
|
3601 |
+
if (!keepLoadedFonts) {
|
3602 |
+
this.fontLoader.clear();
|
3603 |
+
}
|
3604 |
+
|
3605 |
+
this._hasJSActionsPromise = null;
|
3606 |
+
}
|
3607 |
+
|
3608 |
+
get loadingParams() {
|
3609 |
+
const params = this._params;
|
3610 |
+
return (0, _util.shadow)(this, "loadingParams", {
|
3611 |
+
disableAutoFetch: params.disableAutoFetch,
|
3612 |
+
disableFontFace: params.disableFontFace
|
3613 |
+
});
|
3614 |
+
}
|
3615 |
+
|
3616 |
+
}
|
3617 |
+
|
3618 |
+
class PDFObjects {
|
3619 |
+
constructor() {
|
3620 |
+
this._objs = Object.create(null);
|
3621 |
+
}
|
3622 |
+
|
3623 |
+
_ensureObj(objId) {
|
3624 |
+
if (this._objs[objId]) {
|
3625 |
+
return this._objs[objId];
|
3626 |
+
}
|
3627 |
+
|
3628 |
+
return this._objs[objId] = {
|
3629 |
+
capability: (0, _util.createPromiseCapability)(),
|
3630 |
+
data: null,
|
3631 |
+
resolved: false
|
3632 |
+
};
|
3633 |
+
}
|
3634 |
+
|
3635 |
+
get(objId, callback = null) {
|
3636 |
+
if (callback) {
|
3637 |
+
this._ensureObj(objId).capability.promise.then(callback);
|
3638 |
+
|
3639 |
+
return null;
|
3640 |
+
}
|
3641 |
+
|
3642 |
+
const obj = this._objs[objId];
|
3643 |
+
|
3644 |
+
if (!obj || !obj.resolved) {
|
3645 |
+
throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
|
3646 |
+
}
|
3647 |
+
|
3648 |
+
return obj.data;
|
3649 |
+
}
|
3650 |
+
|
3651 |
+
has(objId) {
|
3652 |
+
const obj = this._objs[objId];
|
3653 |
+
return obj?.resolved || false;
|
3654 |
+
}
|
3655 |
+
|
3656 |
+
resolve(objId, data) {
|
3657 |
+
const obj = this._ensureObj(objId);
|
3658 |
+
|
3659 |
+
obj.resolved = true;
|
3660 |
+
obj.data = data;
|
3661 |
+
obj.capability.resolve(data);
|
3662 |
+
}
|
3663 |
+
|
3664 |
+
clear() {
|
3665 |
+
this._objs = Object.create(null);
|
3666 |
+
}
|
3667 |
+
|
3668 |
+
}
|
3669 |
+
|
3670 |
+
class RenderTask {
|
3671 |
+
constructor(internalRenderTask) {
|
3672 |
+
this._internalRenderTask = internalRenderTask;
|
3673 |
+
this.onContinue = null;
|
3674 |
+
}
|
3675 |
+
|
3676 |
+
get promise() {
|
3677 |
+
return this._internalRenderTask.capability.promise;
|
3678 |
+
}
|
3679 |
+
|
3680 |
+
cancel() {
|
3681 |
+
this._internalRenderTask.cancel();
|
3682 |
+
}
|
3683 |
+
|
3684 |
+
}
|
3685 |
+
|
3686 |
+
const InternalRenderTask = function InternalRenderTaskClosure() {
|
3687 |
+
const canvasInRendering = new WeakSet();
|
3688 |
+
|
3689 |
+
class InternalRenderTask {
|
3690 |
+
constructor({
|
3691 |
+
callback,
|
3692 |
+
params,
|
3693 |
+
objs,
|
3694 |
+
commonObjs,
|
3695 |
+
operatorList,
|
3696 |
+
pageIndex,
|
3697 |
+
canvasFactory,
|
3698 |
+
useRequestAnimationFrame = false,
|
3699 |
+
pdfBug = false
|
3700 |
+
}) {
|
3701 |
+
this.callback = callback;
|
3702 |
+
this.params = params;
|
3703 |
+
this.objs = objs;
|
3704 |
+
this.commonObjs = commonObjs;
|
3705 |
+
this.operatorListIdx = null;
|
3706 |
+
this.operatorList = operatorList;
|
3707 |
+
this._pageIndex = pageIndex;
|
3708 |
+
this.canvasFactory = canvasFactory;
|
3709 |
+
this._pdfBug = pdfBug;
|
3710 |
+
this.running = false;
|
3711 |
+
this.graphicsReadyCallback = null;
|
3712 |
+
this.graphicsReady = false;
|
3713 |
+
this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
|
3714 |
+
this.cancelled = false;
|
3715 |
+
this.capability = (0, _util.createPromiseCapability)();
|
3716 |
+
this.task = new RenderTask(this);
|
3717 |
+
this._cancelBound = this.cancel.bind(this);
|
3718 |
+
this._continueBound = this._continue.bind(this);
|
3719 |
+
this._scheduleNextBound = this._scheduleNext.bind(this);
|
3720 |
+
this._nextBound = this._next.bind(this);
|
3721 |
+
this._canvas = params.canvasContext.canvas;
|
3722 |
+
}
|
3723 |
+
|
3724 |
+
get completed() {
|
3725 |
+
return this.capability.promise.catch(function () {});
|
3726 |
+
}
|
3727 |
+
|
3728 |
+
initializeGraphics({
|
3729 |
+
transparency = false,
|
3730 |
+
optionalContentConfig
|
3731 |
+
}) {
|
3732 |
+
if (this.cancelled) {
|
3733 |
+
return;
|
3734 |
+
}
|
3735 |
+
|
3736 |
+
if (this._canvas) {
|
3737 |
+
if (canvasInRendering.has(this._canvas)) {
|
3738 |
+
throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed.");
|
3739 |
+
}
|
3740 |
+
|
3741 |
+
canvasInRendering.add(this._canvas);
|
3742 |
+
}
|
3743 |
+
|
3744 |
+
if (this._pdfBug && globalThis.StepperManager?.enabled) {
|
3745 |
+
this.stepper = globalThis.StepperManager.create(this._pageIndex);
|
3746 |
+
this.stepper.init(this.operatorList);
|
3747 |
+
this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
|
3748 |
+
}
|
3749 |
+
|
3750 |
+
const {
|
3751 |
+
canvasContext,
|
3752 |
+
viewport,
|
3753 |
+
transform,
|
3754 |
+
imageLayer,
|
3755 |
+
background
|
3756 |
+
} = this.params;
|
3757 |
+
this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig);
|
3758 |
+
this.gfx.beginDrawing({
|
3759 |
+
transform,
|
3760 |
+
viewport,
|
3761 |
+
transparency,
|
3762 |
+
background
|
3763 |
+
});
|
3764 |
+
this.operatorListIdx = 0;
|
3765 |
+
this.graphicsReady = true;
|
3766 |
+
|
3767 |
+
if (this.graphicsReadyCallback) {
|
3768 |
+
this.graphicsReadyCallback();
|
3769 |
+
}
|
3770 |
+
}
|
3771 |
+
|
3772 |
+
cancel(error = null) {
|
3773 |
+
this.running = false;
|
3774 |
+
this.cancelled = true;
|
3775 |
+
|
3776 |
+
if (this.gfx) {
|
3777 |
+
this.gfx.endDrawing();
|
3778 |
+
}
|
3779 |
+
|
3780 |
+
if (this._canvas) {
|
3781 |
+
canvasInRendering.delete(this._canvas);
|
3782 |
+
}
|
3783 |
+
|
3784 |
+
this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas"));
|
3785 |
+
}
|
3786 |
+
|
3787 |
+
operatorListChanged() {
|
3788 |
+
if (!this.graphicsReady) {
|
3789 |
+
if (!this.graphicsReadyCallback) {
|
3790 |
+
this.graphicsReadyCallback = this._continueBound;
|
3791 |
+
}
|
3792 |
+
|
3793 |
+
return;
|
3794 |
+
}
|
3795 |
+
|
3796 |
+
if (this.stepper) {
|
3797 |
+
this.stepper.updateOperatorList(this.operatorList);
|
3798 |
+
}
|
3799 |
+
|
3800 |
+
if (this.running) {
|
3801 |
+
return;
|
3802 |
+
}
|
3803 |
+
|
3804 |
+
this._continue();
|
3805 |
+
}
|
3806 |
+
|
3807 |
+
_continue() {
|
3808 |
+
this.running = true;
|
3809 |
+
|
3810 |
+
if (this.cancelled) {
|
3811 |
+
return;
|
3812 |
+
}
|
3813 |
+
|
3814 |
+
if (this.task.onContinue) {
|
3815 |
+
this.task.onContinue(this._scheduleNextBound);
|
3816 |
+
} else {
|
3817 |
+
this._scheduleNext();
|
3818 |
+
}
|
3819 |
+
}
|
3820 |
+
|
3821 |
+
_scheduleNext() {
|
3822 |
+
if (this._useRequestAnimationFrame) {
|
3823 |
+
window.requestAnimationFrame(() => {
|
3824 |
+
this._nextBound().catch(this._cancelBound);
|
3825 |
+
});
|
3826 |
+
} else {
|
3827 |
+
Promise.resolve().then(this._nextBound).catch(this._cancelBound);
|
3828 |
+
}
|
3829 |
+
}
|
3830 |
+
|
3831 |
+
async _next() {
|
3832 |
+
if (this.cancelled) {
|
3833 |
+
return;
|
3834 |
+
}
|
3835 |
+
|
3836 |
+
this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
|
3837 |
+
|
3838 |
+
if (this.operatorListIdx === this.operatorList.argsArray.length) {
|
3839 |
+
this.running = false;
|
3840 |
+
|
3841 |
+
if (this.operatorList.lastChunk) {
|
3842 |
+
this.gfx.endDrawing();
|
3843 |
+
|
3844 |
+
if (this._canvas) {
|
3845 |
+
canvasInRendering.delete(this._canvas);
|
3846 |
+
}
|
3847 |
+
|
3848 |
+
this.callback();
|
3849 |
+
}
|
3850 |
+
}
|
3851 |
+
}
|
3852 |
+
|
3853 |
+
}
|
3854 |
+
|
3855 |
+
return InternalRenderTask;
|
3856 |
+
}();
|
3857 |
+
|
3858 |
+
const version = '2.9.359';
|
3859 |
+
exports.version = version;
|
3860 |
+
const build = 'e667c8cbc';
|
3861 |
+
exports.build = build;
|
3862 |
+
|
3863 |
+
/***/ }),
|
3864 |
+
/* 6 */
|
3865 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
3866 |
+
|
3867 |
+
|
3868 |
+
|
3869 |
+
Object.defineProperty(exports, "__esModule", ({
|
3870 |
+
value: true
|
3871 |
+
}));
|
3872 |
+
exports.FontLoader = exports.FontFaceObject = void 0;
|
3873 |
+
|
3874 |
+
var _util = __w_pdfjs_require__(2);
|
3875 |
+
|
3876 |
+
class BaseFontLoader {
|
3877 |
+
constructor({
|
3878 |
+
docId,
|
3879 |
+
onUnsupportedFeature,
|
3880 |
+
ownerDocument = globalThis.document
|
3881 |
+
}) {
|
3882 |
+
if (this.constructor === BaseFontLoader) {
|
3883 |
+
(0, _util.unreachable)("Cannot initialize BaseFontLoader.");
|
3884 |
+
}
|
3885 |
+
|
3886 |
+
this.docId = docId;
|
3887 |
+
this._onUnsupportedFeature = onUnsupportedFeature;
|
3888 |
+
this._document = ownerDocument;
|
3889 |
+
this.nativeFontFaces = [];
|
3890 |
+
this.styleElement = null;
|
3891 |
+
}
|
3892 |
+
|
3893 |
+
addNativeFontFace(nativeFontFace) {
|
3894 |
+
this.nativeFontFaces.push(nativeFontFace);
|
3895 |
+
|
3896 |
+
this._document.fonts.add(nativeFontFace);
|
3897 |
+
}
|
3898 |
+
|
3899 |
+
insertRule(rule) {
|
3900 |
+
let styleElement = this.styleElement;
|
3901 |
+
|
3902 |
+
if (!styleElement) {
|
3903 |
+
styleElement = this.styleElement = this._document.createElement("style");
|
3904 |
+
styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;
|
3905 |
+
|
3906 |
+
this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement);
|
3907 |
+
}
|
3908 |
+
|
3909 |
+
const styleSheet = styleElement.sheet;
|
3910 |
+
styleSheet.insertRule(rule, styleSheet.cssRules.length);
|
3911 |
+
}
|
3912 |
+
|
3913 |
+
clear() {
|
3914 |
+
for (const nativeFontFace of this.nativeFontFaces) {
|
3915 |
+
this._document.fonts.delete(nativeFontFace);
|
3916 |
+
}
|
3917 |
+
|
3918 |
+
this.nativeFontFaces.length = 0;
|
3919 |
+
|
3920 |
+
if (this.styleElement) {
|
3921 |
+
this.styleElement.remove();
|
3922 |
+
this.styleElement = null;
|
3923 |
+
}
|
3924 |
+
}
|
3925 |
+
|
3926 |
+
async bind(font) {
|
3927 |
+
if (font.attached || font.missingFile) {
|
3928 |
+
return;
|
3929 |
+
}
|
3930 |
+
|
3931 |
+
font.attached = true;
|
3932 |
+
|
3933 |
+
if (this.isFontLoadingAPISupported) {
|
3934 |
+
const nativeFontFace = font.createNativeFontFace();
|
3935 |
+
|
3936 |
+
if (nativeFontFace) {
|
3937 |
+
this.addNativeFontFace(nativeFontFace);
|
3938 |
+
|
3939 |
+
try {
|
3940 |
+
await nativeFontFace.loaded;
|
3941 |
+
} catch (ex) {
|
3942 |
+
this._onUnsupportedFeature({
|
3943 |
+
featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative
|
3944 |
+
});
|
3945 |
+
|
3946 |
+
(0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);
|
3947 |
+
font.disableFontFace = true;
|
3948 |
+
throw ex;
|
3949 |
+
}
|
3950 |
+
}
|
3951 |
+
|
3952 |
+
return;
|
3953 |
+
}
|
3954 |
+
|
3955 |
+
const rule = font.createFontFaceRule();
|
3956 |
+
|
3957 |
+
if (rule) {
|
3958 |
+
this.insertRule(rule);
|
3959 |
+
|
3960 |
+
if (this.isSyncFontLoadingSupported) {
|
3961 |
+
return;
|
3962 |
+
}
|
3963 |
+
|
3964 |
+
await new Promise(resolve => {
|
3965 |
+
const request = this._queueLoadingCallback(resolve);
|
3966 |
+
|
3967 |
+
this._prepareFontLoadEvent([rule], [font], request);
|
3968 |
+
});
|
3969 |
+
}
|
3970 |
+
}
|
3971 |
+
|
3972 |
+
_queueLoadingCallback(callback) {
|
3973 |
+
(0, _util.unreachable)("Abstract method `_queueLoadingCallback`.");
|
3974 |
+
}
|
3975 |
+
|
3976 |
+
get isFontLoadingAPISupported() {
|
3977 |
+
return (0, _util.shadow)(this, "isFontLoadingAPISupported", !!this._document?.fonts);
|
3978 |
+
}
|
3979 |
+
|
3980 |
+
get isSyncFontLoadingSupported() {
|
3981 |
+
(0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`.");
|
3982 |
+
}
|
3983 |
+
|
3984 |
+
get _loadTestFont() {
|
3985 |
+
(0, _util.unreachable)("Abstract method `_loadTestFont`.");
|
3986 |
+
}
|
3987 |
+
|
3988 |
+
_prepareFontLoadEvent(rules, fontsToLoad, request) {
|
3989 |
+
(0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`.");
|
3990 |
+
}
|
3991 |
+
|
3992 |
+
}
|
3993 |
+
|
3994 |
+
let FontLoader;
|
3995 |
+
exports.FontLoader = FontLoader;
|
3996 |
+
{
|
3997 |
+
exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {
|
3998 |
+
constructor(params) {
|
3999 |
+
super(params);
|
4000 |
+
this.loadingContext = {
|
4001 |
+
requests: [],
|
4002 |
+
nextRequestId: 0
|
4003 |
+
};
|
4004 |
+
this.loadTestFontId = 0;
|
4005 |
+
}
|
4006 |
+
|
4007 |
+
get isSyncFontLoadingSupported() {
|
4008 |
+
let supported = false;
|
4009 |
+
|
4010 |
+
if (typeof navigator === "undefined") {
|
4011 |
+
supported = true;
|
4012 |
+
} else {
|
4013 |
+
const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
|
4014 |
+
|
4015 |
+
if (m?.[1] >= 14) {
|
4016 |
+
supported = true;
|
4017 |
+
}
|
4018 |
+
}
|
4019 |
+
|
4020 |
+
return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported);
|
4021 |
+
}
|
4022 |
+
|
4023 |
+
_queueLoadingCallback(callback) {
|
4024 |
+
function completeRequest() {
|
4025 |
+
(0, _util.assert)(!request.done, "completeRequest() cannot be called twice.");
|
4026 |
+
request.done = true;
|
4027 |
+
|
4028 |
+
while (context.requests.length > 0 && context.requests[0].done) {
|
4029 |
+
const otherRequest = context.requests.shift();
|
4030 |
+
setTimeout(otherRequest.callback, 0);
|
4031 |
+
}
|
4032 |
+
}
|
4033 |
+
|
4034 |
+
const context = this.loadingContext;
|
4035 |
+
const request = {
|
4036 |
+
id: `pdfjs-font-loading-${context.nextRequestId++}`,
|
4037 |
+
done: false,
|
4038 |
+
complete: completeRequest,
|
4039 |
+
callback
|
4040 |
+
};
|
4041 |
+
context.requests.push(request);
|
4042 |
+
return request;
|
4043 |
+
}
|
4044 |
+
|
4045 |
+
get _loadTestFont() {
|
4046 |
+
const getLoadTestFont = function () {
|
4047 |
+
return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");
|
4048 |
+
};
|
4049 |
+
|
4050 |
+
return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont());
|
4051 |
+
}
|
4052 |
+
|
4053 |
+
_prepareFontLoadEvent(rules, fonts, request) {
|
4054 |
+
function int32(data, offset) {
|
4055 |
+
return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
|
4056 |
+
}
|
4057 |
+
|
4058 |
+
function spliceString(s, offset, remove, insert) {
|
4059 |
+
const chunk1 = s.substring(0, offset);
|
4060 |
+
const chunk2 = s.substring(offset + remove);
|
4061 |
+
return chunk1 + insert + chunk2;
|
4062 |
+
}
|
4063 |
+
|
4064 |
+
let i, ii;
|
4065 |
+
|
4066 |
+
const canvas = this._document.createElement("canvas");
|
4067 |
+
|
4068 |
+
canvas.width = 1;
|
4069 |
+
canvas.height = 1;
|
4070 |
+
const ctx = canvas.getContext("2d");
|
4071 |
+
let called = 0;
|
4072 |
+
|
4073 |
+
function isFontReady(name, callback) {
|
4074 |
+
called++;
|
4075 |
+
|
4076 |
+
if (called > 30) {
|
4077 |
+
(0, _util.warn)("Load test font never loaded.");
|
4078 |
+
callback();
|
4079 |
+
return;
|
4080 |
+
}
|
4081 |
+
|
4082 |
+
ctx.font = "30px " + name;
|
4083 |
+
ctx.fillText(".", 0, 20);
|
4084 |
+
const imageData = ctx.getImageData(0, 0, 1, 1);
|
4085 |
+
|
4086 |
+
if (imageData.data[3] > 0) {
|
4087 |
+
callback();
|
4088 |
+
return;
|
4089 |
+
}
|
4090 |
+
|
4091 |
+
setTimeout(isFontReady.bind(null, name, callback));
|
4092 |
+
}
|
4093 |
+
|
4094 |
+
const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;
|
4095 |
+
let data = this._loadTestFont;
|
4096 |
+
const COMMENT_OFFSET = 976;
|
4097 |
+
data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
|
4098 |
+
const CFF_CHECKSUM_OFFSET = 16;
|
4099 |
+
const XXXX_VALUE = 0x58585858;
|
4100 |
+
let checksum = int32(data, CFF_CHECKSUM_OFFSET);
|
4101 |
+
|
4102 |
+
for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
|
4103 |
+
checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
|
4104 |
+
}
|
4105 |
+
|
4106 |
+
if (i < loadTestFontId.length) {
|
4107 |
+
checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0;
|
4108 |
+
}
|
4109 |
+
|
4110 |
+
data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
|
4111 |
+
const url = `url(data:font/opentype;base64,${btoa(data)});`;
|
4112 |
+
const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`;
|
4113 |
+
this.insertRule(rule);
|
4114 |
+
const names = [];
|
4115 |
+
|
4116 |
+
for (const font of fonts) {
|
4117 |
+
names.push(font.loadedName);
|
4118 |
+
}
|
4119 |
+
|
4120 |
+
names.push(loadTestFontId);
|
4121 |
+
|
4122 |
+
const div = this._document.createElement("div");
|
4123 |
+
|
4124 |
+
div.style.visibility = "hidden";
|
4125 |
+
div.style.width = div.style.height = "10px";
|
4126 |
+
div.style.position = "absolute";
|
4127 |
+
div.style.top = div.style.left = "0px";
|
4128 |
+
|
4129 |
+
for (const name of names) {
|
4130 |
+
const span = this._document.createElement("span");
|
4131 |
+
|
4132 |
+
span.textContent = "Hi";
|
4133 |
+
span.style.fontFamily = name;
|
4134 |
+
div.appendChild(span);
|
4135 |
+
}
|
4136 |
+
|
4137 |
+
this._document.body.appendChild(div);
|
4138 |
+
|
4139 |
+
isFontReady(loadTestFontId, () => {
|
4140 |
+
this._document.body.removeChild(div);
|
4141 |
+
|
4142 |
+
request.complete();
|
4143 |
+
});
|
4144 |
+
}
|
4145 |
+
|
4146 |
+
};
|
4147 |
+
}
|
4148 |
+
|
4149 |
+
class FontFaceObject {
|
4150 |
+
constructor(translatedData, {
|
4151 |
+
isEvalSupported = true,
|
4152 |
+
disableFontFace = false,
|
4153 |
+
ignoreErrors = false,
|
4154 |
+
onUnsupportedFeature,
|
4155 |
+
fontRegistry = null
|
4156 |
+
}) {
|
4157 |
+
this.compiledGlyphs = Object.create(null);
|
4158 |
+
|
4159 |
+
for (const i in translatedData) {
|
4160 |
+
this[i] = translatedData[i];
|
4161 |
+
}
|
4162 |
+
|
4163 |
+
this.isEvalSupported = isEvalSupported !== false;
|
4164 |
+
this.disableFontFace = disableFontFace === true;
|
4165 |
+
this.ignoreErrors = ignoreErrors === true;
|
4166 |
+
this._onUnsupportedFeature = onUnsupportedFeature;
|
4167 |
+
this.fontRegistry = fontRegistry;
|
4168 |
+
}
|
4169 |
+
|
4170 |
+
createNativeFontFace() {
|
4171 |
+
if (!this.data || this.disableFontFace) {
|
4172 |
+
return null;
|
4173 |
+
}
|
4174 |
+
|
4175 |
+
let nativeFontFace;
|
4176 |
+
|
4177 |
+
if (!this.cssFontInfo) {
|
4178 |
+
nativeFontFace = new FontFace(this.loadedName, this.data, {});
|
4179 |
+
} else {
|
4180 |
+
const css = {
|
4181 |
+
weight: this.cssFontInfo.fontWeight
|
4182 |
+
};
|
4183 |
+
|
4184 |
+
if (this.cssFontInfo.italicAngle) {
|
4185 |
+
css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;
|
4186 |
+
}
|
4187 |
+
|
4188 |
+
nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);
|
4189 |
+
}
|
4190 |
+
|
4191 |
+
if (this.fontRegistry) {
|
4192 |
+
this.fontRegistry.registerFont(this);
|
4193 |
+
}
|
4194 |
+
|
4195 |
+
return nativeFontFace;
|
4196 |
+
}
|
4197 |
+
|
4198 |
+
createFontFaceRule() {
|
4199 |
+
if (!this.data || this.disableFontFace) {
|
4200 |
+
return null;
|
4201 |
+
}
|
4202 |
+
|
4203 |
+
const data = (0, _util.bytesToString)(this.data);
|
4204 |
+
const url = `url(data:${this.mimetype};base64,${btoa(data)});`;
|
4205 |
+
let rule;
|
4206 |
+
|
4207 |
+
if (!this.cssFontInfo) {
|
4208 |
+
rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`;
|
4209 |
+
} else {
|
4210 |
+
let css = `font-weight: ${this.cssFontInfo.fontWeight};`;
|
4211 |
+
|
4212 |
+
if (this.cssFontInfo.italicAngle) {
|
4213 |
+
css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;
|
4214 |
+
}
|
4215 |
+
|
4216 |
+
rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`;
|
4217 |
+
}
|
4218 |
+
|
4219 |
+
if (this.fontRegistry) {
|
4220 |
+
this.fontRegistry.registerFont(this, url);
|
4221 |
+
}
|
4222 |
+
|
4223 |
+
return rule;
|
4224 |
+
}
|
4225 |
+
|
4226 |
+
getPathGenerator(objs, character) {
|
4227 |
+
if (this.compiledGlyphs[character] !== undefined) {
|
4228 |
+
return this.compiledGlyphs[character];
|
4229 |
+
}
|
4230 |
+
|
4231 |
+
let cmds;
|
4232 |
+
|
4233 |
+
try {
|
4234 |
+
cmds = objs.get(this.loadedName + "_path_" + character);
|
4235 |
+
} catch (ex) {
|
4236 |
+
if (!this.ignoreErrors) {
|
4237 |
+
throw ex;
|
4238 |
+
}
|
4239 |
+
|
4240 |
+
this._onUnsupportedFeature({
|
4241 |
+
featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath
|
4242 |
+
});
|
4243 |
+
|
4244 |
+
(0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`);
|
4245 |
+
return this.compiledGlyphs[character] = function (c, size) {};
|
4246 |
+
}
|
4247 |
+
|
4248 |
+
if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {
|
4249 |
+
const jsBuf = [];
|
4250 |
+
|
4251 |
+
for (const current of cmds) {
|
4252 |
+
const args = current.args !== undefined ? current.args.join(",") : "";
|
4253 |
+
jsBuf.push("c.", current.cmd, "(", args, ");\n");
|
4254 |
+
}
|
4255 |
+
|
4256 |
+
return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join(""));
|
4257 |
+
}
|
4258 |
+
|
4259 |
+
return this.compiledGlyphs[character] = function (c, size) {
|
4260 |
+
for (const current of cmds) {
|
4261 |
+
if (current.cmd === "scale") {
|
4262 |
+
current.args = [size, -size];
|
4263 |
+
}
|
4264 |
+
|
4265 |
+
c[current.cmd].apply(c, current.args);
|
4266 |
+
}
|
4267 |
+
};
|
4268 |
+
}
|
4269 |
+
|
4270 |
+
}
|
4271 |
+
|
4272 |
+
exports.FontFaceObject = FontFaceObject;
|
4273 |
+
|
4274 |
+
/***/ }),
|
4275 |
+
/* 7 */
|
4276 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
4277 |
+
|
4278 |
+
|
4279 |
+
|
4280 |
+
Object.defineProperty(exports, "__esModule", ({
|
4281 |
+
value: true
|
4282 |
+
}));
|
4283 |
+
exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;
|
4284 |
+
|
4285 |
+
var _display_utils = __w_pdfjs_require__(1);
|
4286 |
+
|
4287 |
+
var _is_node = __w_pdfjs_require__(4);
|
4288 |
+
|
4289 |
+
var _util = __w_pdfjs_require__(2);
|
4290 |
+
|
4291 |
+
let NodeCanvasFactory = class {
|
4292 |
+
constructor() {
|
4293 |
+
(0, _util.unreachable)("Not implemented: NodeCanvasFactory");
|
4294 |
+
}
|
4295 |
+
|
4296 |
+
};
|
4297 |
+
exports.NodeCanvasFactory = NodeCanvasFactory;
|
4298 |
+
let NodeCMapReaderFactory = class {
|
4299 |
+
constructor() {
|
4300 |
+
(0, _util.unreachable)("Not implemented: NodeCMapReaderFactory");
|
4301 |
+
}
|
4302 |
+
|
4303 |
+
};
|
4304 |
+
exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
|
4305 |
+
|
4306 |
+
if (_is_node.isNodeJS) {
|
4307 |
+
exports.NodeCanvasFactory = NodeCanvasFactory = class extends _display_utils.BaseCanvasFactory {
|
4308 |
+
create(width, height) {
|
4309 |
+
if (width <= 0 || height <= 0) {
|
4310 |
+
throw new Error("Invalid canvas size");
|
4311 |
+
}
|
4312 |
+
|
4313 |
+
const Canvas = require("canvas");
|
4314 |
+
|
4315 |
+
const canvas = Canvas.createCanvas(width, height);
|
4316 |
+
return {
|
4317 |
+
canvas,
|
4318 |
+
context: canvas.getContext("2d")
|
4319 |
+
};
|
4320 |
+
}
|
4321 |
+
|
4322 |
+
};
|
4323 |
+
exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _display_utils.BaseCMapReaderFactory {
|
4324 |
+
_fetchData(url, compressionType) {
|
4325 |
+
return new Promise((resolve, reject) => {
|
4326 |
+
const fs = require("fs");
|
4327 |
+
|
4328 |
+
fs.readFile(url, (error, data) => {
|
4329 |
+
if (error || !data) {
|
4330 |
+
reject(new Error(error));
|
4331 |
+
return;
|
4332 |
+
}
|
4333 |
+
|
4334 |
+
resolve({
|
4335 |
+
cMapData: new Uint8Array(data),
|
4336 |
+
compressionType
|
4337 |
+
});
|
4338 |
+
});
|
4339 |
+
});
|
4340 |
+
}
|
4341 |
+
|
4342 |
+
};
|
4343 |
+
}
|
4344 |
+
|
4345 |
+
/***/ }),
|
4346 |
+
/* 8 */
|
4347 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
4348 |
+
|
4349 |
+
|
4350 |
+
|
4351 |
+
Object.defineProperty(exports, "__esModule", ({
|
4352 |
+
value: true
|
4353 |
+
}));
|
4354 |
+
exports.AnnotationStorage = void 0;
|
4355 |
+
|
4356 |
+
var _util = __w_pdfjs_require__(2);
|
4357 |
+
|
4358 |
+
class AnnotationStorage {
|
4359 |
+
constructor() {
|
4360 |
+
this._storage = new Map();
|
4361 |
+
this._modified = false;
|
4362 |
+
this.onSetModified = null;
|
4363 |
+
this.onResetModified = null;
|
4364 |
+
}
|
4365 |
+
|
4366 |
+
getValue(key, defaultValue) {
|
4367 |
+
const obj = this._storage.get(key);
|
4368 |
+
|
4369 |
+
return obj !== undefined ? obj : defaultValue;
|
4370 |
+
}
|
4371 |
+
|
4372 |
+
setValue(key, value) {
|
4373 |
+
const obj = this._storage.get(key);
|
4374 |
+
|
4375 |
+
let modified = false;
|
4376 |
+
|
4377 |
+
if (obj !== undefined) {
|
4378 |
+
for (const [entry, val] of Object.entries(value)) {
|
4379 |
+
if (obj[entry] !== val) {
|
4380 |
+
modified = true;
|
4381 |
+
obj[entry] = val;
|
4382 |
+
}
|
4383 |
+
}
|
4384 |
+
} else {
|
4385 |
+
this._storage.set(key, value);
|
4386 |
+
|
4387 |
+
modified = true;
|
4388 |
+
}
|
4389 |
+
|
4390 |
+
if (modified) {
|
4391 |
+
this._setModified();
|
4392 |
+
}
|
4393 |
+
}
|
4394 |
+
|
4395 |
+
getAll() {
|
4396 |
+
return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;
|
4397 |
+
}
|
4398 |
+
|
4399 |
+
get size() {
|
4400 |
+
return this._storage.size;
|
4401 |
+
}
|
4402 |
+
|
4403 |
+
_setModified() {
|
4404 |
+
if (!this._modified) {
|
4405 |
+
this._modified = true;
|
4406 |
+
|
4407 |
+
if (typeof this.onSetModified === "function") {
|
4408 |
+
this.onSetModified();
|
4409 |
+
}
|
4410 |
+
}
|
4411 |
+
}
|
4412 |
+
|
4413 |
+
resetModified() {
|
4414 |
+
if (this._modified) {
|
4415 |
+
this._modified = false;
|
4416 |
+
|
4417 |
+
if (typeof this.onResetModified === "function") {
|
4418 |
+
this.onResetModified();
|
4419 |
+
}
|
4420 |
+
}
|
4421 |
+
}
|
4422 |
+
|
4423 |
+
get serializable() {
|
4424 |
+
return this._storage.size > 0 ? this._storage : null;
|
4425 |
+
}
|
4426 |
+
|
4427 |
+
}
|
4428 |
+
|
4429 |
+
exports.AnnotationStorage = AnnotationStorage;
|
4430 |
+
|
4431 |
+
/***/ }),
|
4432 |
+
/* 9 */
|
4433 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
4434 |
+
|
4435 |
+
|
4436 |
+
|
4437 |
+
Object.defineProperty(exports, "__esModule", ({
|
4438 |
+
value: true
|
4439 |
+
}));
|
4440 |
+
exports.apiCompatibilityParams = void 0;
|
4441 |
+
|
4442 |
+
var _is_node = __w_pdfjs_require__(4);
|
4443 |
+
|
4444 |
+
const compatibilityParams = Object.create(null);
|
4445 |
+
{
|
4446 |
+
(function checkFontFace() {
|
4447 |
+
if (_is_node.isNodeJS) {
|
4448 |
+
compatibilityParams.disableFontFace = true;
|
4449 |
+
}
|
4450 |
+
})();
|
4451 |
+
}
|
4452 |
+
const apiCompatibilityParams = Object.freeze(compatibilityParams);
|
4453 |
+
exports.apiCompatibilityParams = apiCompatibilityParams;
|
4454 |
+
|
4455 |
+
/***/ }),
|
4456 |
+
/* 10 */
|
4457 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
4458 |
+
|
4459 |
+
|
4460 |
+
|
4461 |
+
Object.defineProperty(exports, "__esModule", ({
|
4462 |
+
value: true
|
4463 |
+
}));
|
4464 |
+
exports.CanvasGraphics = void 0;
|
4465 |
+
|
4466 |
+
var _util = __w_pdfjs_require__(2);
|
4467 |
+
|
4468 |
+
var _pattern_helper = __w_pdfjs_require__(11);
|
4469 |
+
|
4470 |
+
const MIN_FONT_SIZE = 16;
|
4471 |
+
const MAX_FONT_SIZE = 100;
|
4472 |
+
const MAX_GROUP_SIZE = 4096;
|
4473 |
+
const COMPILE_TYPE3_GLYPHS = true;
|
4474 |
+
const MAX_SIZE_TO_COMPILE = 1000;
|
4475 |
+
const FULL_CHUNK_HEIGHT = 16;
|
4476 |
+
const LINEWIDTH_SCALE_FACTOR = 1.000001;
|
4477 |
+
|
4478 |
+
function addContextCurrentTransform(ctx) {
|
4479 |
+
if (ctx.mozCurrentTransform) {
|
4480 |
+
return;
|
4481 |
+
}
|
4482 |
+
|
4483 |
+
ctx._originalSave = ctx.save;
|
4484 |
+
ctx._originalRestore = ctx.restore;
|
4485 |
+
ctx._originalRotate = ctx.rotate;
|
4486 |
+
ctx._originalScale = ctx.scale;
|
4487 |
+
ctx._originalTranslate = ctx.translate;
|
4488 |
+
ctx._originalTransform = ctx.transform;
|
4489 |
+
ctx._originalSetTransform = ctx.setTransform;
|
4490 |
+
ctx._originalResetTransform = ctx.resetTransform;
|
4491 |
+
ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
|
4492 |
+
ctx._transformStack = [];
|
4493 |
+
|
4494 |
+
try {
|
4495 |
+
const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth");
|
4496 |
+
ctx._setLineWidth = desc.set;
|
4497 |
+
ctx._getLineWidth = desc.get;
|
4498 |
+
Object.defineProperty(ctx, "lineWidth", {
|
4499 |
+
set: function setLineWidth(width) {
|
4500 |
+
this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);
|
4501 |
+
},
|
4502 |
+
get: function getLineWidth() {
|
4503 |
+
return this._getLineWidth();
|
4504 |
+
}
|
4505 |
+
});
|
4506 |
+
} catch (_) {}
|
4507 |
+
|
4508 |
+
Object.defineProperty(ctx, "mozCurrentTransform", {
|
4509 |
+
get: function getCurrentTransform() {
|
4510 |
+
return this._transformMatrix;
|
4511 |
+
}
|
4512 |
+
});
|
4513 |
+
Object.defineProperty(ctx, "mozCurrentTransformInverse", {
|
4514 |
+
get: function getCurrentTransformInverse() {
|
4515 |
+
const [a, b, c, d, e, f] = this._transformMatrix;
|
4516 |
+
const ad_bc = a * d - b * c;
|
4517 |
+
const bc_ad = b * c - a * d;
|
4518 |
+
return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
|
4519 |
+
}
|
4520 |
+
});
|
4521 |
+
|
4522 |
+
ctx.save = function ctxSave() {
|
4523 |
+
const old = this._transformMatrix;
|
4524 |
+
|
4525 |
+
this._transformStack.push(old);
|
4526 |
+
|
4527 |
+
this._transformMatrix = old.slice(0, 6);
|
4528 |
+
|
4529 |
+
this._originalSave();
|
4530 |
+
};
|
4531 |
+
|
4532 |
+
ctx.restore = function ctxRestore() {
|
4533 |
+
const prev = this._transformStack.pop();
|
4534 |
+
|
4535 |
+
if (prev) {
|
4536 |
+
this._transformMatrix = prev;
|
4537 |
+
|
4538 |
+
this._originalRestore();
|
4539 |
+
}
|
4540 |
+
};
|
4541 |
+
|
4542 |
+
ctx.translate = function ctxTranslate(x, y) {
|
4543 |
+
const m = this._transformMatrix;
|
4544 |
+
m[4] = m[0] * x + m[2] * y + m[4];
|
4545 |
+
m[5] = m[1] * x + m[3] * y + m[5];
|
4546 |
+
|
4547 |
+
this._originalTranslate(x, y);
|
4548 |
+
};
|
4549 |
+
|
4550 |
+
ctx.scale = function ctxScale(x, y) {
|
4551 |
+
const m = this._transformMatrix;
|
4552 |
+
m[0] = m[0] * x;
|
4553 |
+
m[1] = m[1] * x;
|
4554 |
+
m[2] = m[2] * y;
|
4555 |
+
m[3] = m[3] * y;
|
4556 |
+
|
4557 |
+
this._originalScale(x, y);
|
4558 |
+
};
|
4559 |
+
|
4560 |
+
ctx.transform = function ctxTransform(a, b, c, d, e, f) {
|
4561 |
+
const m = this._transformMatrix;
|
4562 |
+
this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
|
4563 |
+
|
4564 |
+
ctx._originalTransform(a, b, c, d, e, f);
|
4565 |
+
};
|
4566 |
+
|
4567 |
+
ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
|
4568 |
+
this._transformMatrix = [a, b, c, d, e, f];
|
4569 |
+
|
4570 |
+
ctx._originalSetTransform(a, b, c, d, e, f);
|
4571 |
+
};
|
4572 |
+
|
4573 |
+
ctx.resetTransform = function ctxResetTransform() {
|
4574 |
+
this._transformMatrix = [1, 0, 0, 1, 0, 0];
|
4575 |
+
|
4576 |
+
ctx._originalResetTransform();
|
4577 |
+
};
|
4578 |
+
|
4579 |
+
ctx.rotate = function ctxRotate(angle) {
|
4580 |
+
const cosValue = Math.cos(angle);
|
4581 |
+
const sinValue = Math.sin(angle);
|
4582 |
+
const m = this._transformMatrix;
|
4583 |
+
this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
|
4584 |
+
|
4585 |
+
this._originalRotate(angle);
|
4586 |
+
};
|
4587 |
+
}
|
4588 |
+
|
4589 |
+
class CachedCanvases {
|
4590 |
+
constructor(canvasFactory) {
|
4591 |
+
this.canvasFactory = canvasFactory;
|
4592 |
+
this.cache = Object.create(null);
|
4593 |
+
}
|
4594 |
+
|
4595 |
+
getCanvas(id, width, height, trackTransform) {
|
4596 |
+
let canvasEntry;
|
4597 |
+
|
4598 |
+
if (this.cache[id] !== undefined) {
|
4599 |
+
canvasEntry = this.cache[id];
|
4600 |
+
this.canvasFactory.reset(canvasEntry, width, height);
|
4601 |
+
canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
|
4602 |
+
} else {
|
4603 |
+
canvasEntry = this.canvasFactory.create(width, height);
|
4604 |
+
this.cache[id] = canvasEntry;
|
4605 |
+
}
|
4606 |
+
|
4607 |
+
if (trackTransform) {
|
4608 |
+
addContextCurrentTransform(canvasEntry.context);
|
4609 |
+
}
|
4610 |
+
|
4611 |
+
return canvasEntry;
|
4612 |
+
}
|
4613 |
+
|
4614 |
+
clear() {
|
4615 |
+
for (const id in this.cache) {
|
4616 |
+
const canvasEntry = this.cache[id];
|
4617 |
+
this.canvasFactory.destroy(canvasEntry);
|
4618 |
+
delete this.cache[id];
|
4619 |
+
}
|
4620 |
+
}
|
4621 |
+
|
4622 |
+
}
|
4623 |
+
|
4624 |
+
function compileType3Glyph(imgData) {
|
4625 |
+
const POINT_TO_PROCESS_LIMIT = 1000;
|
4626 |
+
const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
|
4627 |
+
const width = imgData.width,
|
4628 |
+
height = imgData.height,
|
4629 |
+
width1 = width + 1;
|
4630 |
+
let i, ii, j, j0;
|
4631 |
+
const points = new Uint8Array(width1 * (height + 1));
|
4632 |
+
const lineSize = width + 7 & ~7,
|
4633 |
+
data0 = imgData.data;
|
4634 |
+
const data = new Uint8Array(lineSize * height);
|
4635 |
+
let pos = 0;
|
4636 |
+
|
4637 |
+
for (i = 0, ii = data0.length; i < ii; i++) {
|
4638 |
+
const elem = data0[i];
|
4639 |
+
let mask = 128;
|
4640 |
+
|
4641 |
+
while (mask > 0) {
|
4642 |
+
data[pos++] = elem & mask ? 0 : 255;
|
4643 |
+
mask >>= 1;
|
4644 |
+
}
|
4645 |
+
}
|
4646 |
+
|
4647 |
+
let count = 0;
|
4648 |
+
pos = 0;
|
4649 |
+
|
4650 |
+
if (data[pos] !== 0) {
|
4651 |
+
points[0] = 1;
|
4652 |
+
++count;
|
4653 |
+
}
|
4654 |
+
|
4655 |
+
for (j = 1; j < width; j++) {
|
4656 |
+
if (data[pos] !== data[pos + 1]) {
|
4657 |
+
points[j] = data[pos] ? 2 : 1;
|
4658 |
+
++count;
|
4659 |
+
}
|
4660 |
+
|
4661 |
+
pos++;
|
4662 |
+
}
|
4663 |
+
|
4664 |
+
if (data[pos] !== 0) {
|
4665 |
+
points[j] = 2;
|
4666 |
+
++count;
|
4667 |
+
}
|
4668 |
+
|
4669 |
+
for (i = 1; i < height; i++) {
|
4670 |
+
pos = i * lineSize;
|
4671 |
+
j0 = i * width1;
|
4672 |
+
|
4673 |
+
if (data[pos - lineSize] !== data[pos]) {
|
4674 |
+
points[j0] = data[pos] ? 1 : 8;
|
4675 |
+
++count;
|
4676 |
+
}
|
4677 |
+
|
4678 |
+
let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
|
4679 |
+
|
4680 |
+
for (j = 1; j < width; j++) {
|
4681 |
+
sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
|
4682 |
+
|
4683 |
+
if (POINT_TYPES[sum]) {
|
4684 |
+
points[j0 + j] = POINT_TYPES[sum];
|
4685 |
+
++count;
|
4686 |
+
}
|
4687 |
+
|
4688 |
+
pos++;
|
4689 |
+
}
|
4690 |
+
|
4691 |
+
if (data[pos - lineSize] !== data[pos]) {
|
4692 |
+
points[j0 + j] = data[pos] ? 2 : 4;
|
4693 |
+
++count;
|
4694 |
+
}
|
4695 |
+
|
4696 |
+
if (count > POINT_TO_PROCESS_LIMIT) {
|
4697 |
+
return null;
|
4698 |
+
}
|
4699 |
+
}
|
4700 |
+
|
4701 |
+
pos = lineSize * (height - 1);
|
4702 |
+
j0 = i * width1;
|
4703 |
+
|
4704 |
+
if (data[pos] !== 0) {
|
4705 |
+
points[j0] = 8;
|
4706 |
+
++count;
|
4707 |
+
}
|
4708 |
+
|
4709 |
+
for (j = 1; j < width; j++) {
|
4710 |
+
if (data[pos] !== data[pos + 1]) {
|
4711 |
+
points[j0 + j] = data[pos] ? 4 : 8;
|
4712 |
+
++count;
|
4713 |
+
}
|
4714 |
+
|
4715 |
+
pos++;
|
4716 |
+
}
|
4717 |
+
|
4718 |
+
if (data[pos] !== 0) {
|
4719 |
+
points[j0 + j] = 4;
|
4720 |
+
++count;
|
4721 |
+
}
|
4722 |
+
|
4723 |
+
if (count > POINT_TO_PROCESS_LIMIT) {
|
4724 |
+
return null;
|
4725 |
+
}
|
4726 |
+
|
4727 |
+
const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
|
4728 |
+
const outlines = [];
|
4729 |
+
|
4730 |
+
for (i = 0; count && i <= height; i++) {
|
4731 |
+
let p = i * width1;
|
4732 |
+
const end = p + width;
|
4733 |
+
|
4734 |
+
while (p < end && !points[p]) {
|
4735 |
+
p++;
|
4736 |
+
}
|
4737 |
+
|
4738 |
+
if (p === end) {
|
4739 |
+
continue;
|
4740 |
+
}
|
4741 |
+
|
4742 |
+
const coords = [p % width1, i];
|
4743 |
+
const p0 = p;
|
4744 |
+
let type = points[p];
|
4745 |
+
|
4746 |
+
do {
|
4747 |
+
const step = steps[type];
|
4748 |
+
|
4749 |
+
do {
|
4750 |
+
p += step;
|
4751 |
+
} while (!points[p]);
|
4752 |
+
|
4753 |
+
const pp = points[p];
|
4754 |
+
|
4755 |
+
if (pp !== 5 && pp !== 10) {
|
4756 |
+
type = pp;
|
4757 |
+
points[p] = 0;
|
4758 |
+
} else {
|
4759 |
+
type = pp & 0x33 * type >> 4;
|
4760 |
+
points[p] &= type >> 2 | type << 2;
|
4761 |
+
}
|
4762 |
+
|
4763 |
+
coords.push(p % width1, p / width1 | 0);
|
4764 |
+
|
4765 |
+
if (!points[p]) {
|
4766 |
+
--count;
|
4767 |
+
}
|
4768 |
+
} while (p0 !== p);
|
4769 |
+
|
4770 |
+
outlines.push(coords);
|
4771 |
+
--i;
|
4772 |
+
}
|
4773 |
+
|
4774 |
+
const drawOutline = function (c) {
|
4775 |
+
c.save();
|
4776 |
+
c.scale(1 / width, -1 / height);
|
4777 |
+
c.translate(0, -height);
|
4778 |
+
c.beginPath();
|
4779 |
+
|
4780 |
+
for (let k = 0, kk = outlines.length; k < kk; k++) {
|
4781 |
+
const o = outlines[k];
|
4782 |
+
c.moveTo(o[0], o[1]);
|
4783 |
+
|
4784 |
+
for (let l = 2, ll = o.length; l < ll; l += 2) {
|
4785 |
+
c.lineTo(o[l], o[l + 1]);
|
4786 |
+
}
|
4787 |
+
}
|
4788 |
+
|
4789 |
+
c.fill();
|
4790 |
+
c.beginPath();
|
4791 |
+
c.restore();
|
4792 |
+
};
|
4793 |
+
|
4794 |
+
return drawOutline;
|
4795 |
+
}
|
4796 |
+
|
4797 |
+
class CanvasExtraState {
|
4798 |
+
constructor() {
|
4799 |
+
this.alphaIsShape = false;
|
4800 |
+
this.fontSize = 0;
|
4801 |
+
this.fontSizeScale = 1;
|
4802 |
+
this.textMatrix = _util.IDENTITY_MATRIX;
|
4803 |
+
this.textMatrixScale = 1;
|
4804 |
+
this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
|
4805 |
+
this.leading = 0;
|
4806 |
+
this.x = 0;
|
4807 |
+
this.y = 0;
|
4808 |
+
this.lineX = 0;
|
4809 |
+
this.lineY = 0;
|
4810 |
+
this.charSpacing = 0;
|
4811 |
+
this.wordSpacing = 0;
|
4812 |
+
this.textHScale = 1;
|
4813 |
+
this.textRenderingMode = _util.TextRenderingMode.FILL;
|
4814 |
+
this.textRise = 0;
|
4815 |
+
this.fillColor = "#000000";
|
4816 |
+
this.strokeColor = "#000000";
|
4817 |
+
this.patternFill = false;
|
4818 |
+
this.fillAlpha = 1;
|
4819 |
+
this.strokeAlpha = 1;
|
4820 |
+
this.lineWidth = 1;
|
4821 |
+
this.activeSMask = null;
|
4822 |
+
this.resumeSMaskCtx = null;
|
4823 |
+
this.transferMaps = null;
|
4824 |
+
}
|
4825 |
+
|
4826 |
+
clone() {
|
4827 |
+
return Object.create(this);
|
4828 |
+
}
|
4829 |
+
|
4830 |
+
setCurrentPoint(x, y) {
|
4831 |
+
this.x = x;
|
4832 |
+
this.y = y;
|
4833 |
+
}
|
4834 |
+
|
4835 |
+
}
|
4836 |
+
|
4837 |
+
const CanvasGraphics = function CanvasGraphicsClosure() {
|
4838 |
+
const EXECUTION_TIME = 15;
|
4839 |
+
const EXECUTION_STEPS = 10;
|
4840 |
+
|
4841 |
+
function putBinaryImageData(ctx, imgData, transferMaps = null) {
|
4842 |
+
if (typeof ImageData !== "undefined" && imgData instanceof ImageData) {
|
4843 |
+
ctx.putImageData(imgData, 0, 0);
|
4844 |
+
return;
|
4845 |
+
}
|
4846 |
+
|
4847 |
+
const height = imgData.height,
|
4848 |
+
width = imgData.width;
|
4849 |
+
const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
|
4850 |
+
const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
|
4851 |
+
const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
|
4852 |
+
const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
|
4853 |
+
let srcPos = 0,
|
4854 |
+
destPos;
|
4855 |
+
const src = imgData.data;
|
4856 |
+
const dest = chunkImgData.data;
|
4857 |
+
let i, j, thisChunkHeight, elemsInThisChunk;
|
4858 |
+
let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
|
4859 |
+
|
4860 |
+
if (transferMaps) {
|
4861 |
+
switch (transferMaps.length) {
|
4862 |
+
case 1:
|
4863 |
+
transferMapRed = transferMaps[0];
|
4864 |
+
transferMapGreen = transferMaps[0];
|
4865 |
+
transferMapBlue = transferMaps[0];
|
4866 |
+
transferMapGray = transferMaps[0];
|
4867 |
+
break;
|
4868 |
+
|
4869 |
+
case 4:
|
4870 |
+
transferMapRed = transferMaps[0];
|
4871 |
+
transferMapGreen = transferMaps[1];
|
4872 |
+
transferMapBlue = transferMaps[2];
|
4873 |
+
transferMapGray = transferMaps[3];
|
4874 |
+
break;
|
4875 |
+
}
|
4876 |
+
}
|
4877 |
+
|
4878 |
+
if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
|
4879 |
+
const srcLength = src.byteLength;
|
4880 |
+
const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
|
4881 |
+
const dest32DataLength = dest32.length;
|
4882 |
+
const fullSrcDiff = width + 7 >> 3;
|
4883 |
+
let white = 0xffffffff;
|
4884 |
+
let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
|
4885 |
+
|
4886 |
+
if (transferMapGray) {
|
4887 |
+
if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
|
4888 |
+
[white, black] = [black, white];
|
4889 |
+
}
|
4890 |
+
}
|
4891 |
+
|
4892 |
+
for (i = 0; i < totalChunks; i++) {
|
4893 |
+
thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
|
4894 |
+
destPos = 0;
|
4895 |
+
|
4896 |
+
for (j = 0; j < thisChunkHeight; j++) {
|
4897 |
+
const srcDiff = srcLength - srcPos;
|
4898 |
+
let k = 0;
|
4899 |
+
const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
|
4900 |
+
const kEndUnrolled = kEnd & ~7;
|
4901 |
+
let mask = 0;
|
4902 |
+
let srcByte = 0;
|
4903 |
+
|
4904 |
+
for (; k < kEndUnrolled; k += 8) {
|
4905 |
+
srcByte = src[srcPos++];
|
4906 |
+
dest32[destPos++] = srcByte & 128 ? white : black;
|
4907 |
+
dest32[destPos++] = srcByte & 64 ? white : black;
|
4908 |
+
dest32[destPos++] = srcByte & 32 ? white : black;
|
4909 |
+
dest32[destPos++] = srcByte & 16 ? white : black;
|
4910 |
+
dest32[destPos++] = srcByte & 8 ? white : black;
|
4911 |
+
dest32[destPos++] = srcByte & 4 ? white : black;
|
4912 |
+
dest32[destPos++] = srcByte & 2 ? white : black;
|
4913 |
+
dest32[destPos++] = srcByte & 1 ? white : black;
|
4914 |
+
}
|
4915 |
+
|
4916 |
+
for (; k < kEnd; k++) {
|
4917 |
+
if (mask === 0) {
|
4918 |
+
srcByte = src[srcPos++];
|
4919 |
+
mask = 128;
|
4920 |
+
}
|
4921 |
+
|
4922 |
+
dest32[destPos++] = srcByte & mask ? white : black;
|
4923 |
+
mask >>= 1;
|
4924 |
+
}
|
4925 |
+
}
|
4926 |
+
|
4927 |
+
while (destPos < dest32DataLength) {
|
4928 |
+
dest32[destPos++] = 0;
|
4929 |
+
}
|
4930 |
+
|
4931 |
+
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
|
4932 |
+
}
|
4933 |
+
} else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
|
4934 |
+
const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
|
4935 |
+
j = 0;
|
4936 |
+
elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
|
4937 |
+
|
4938 |
+
for (i = 0; i < fullChunks; i++) {
|
4939 |
+
dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
|
4940 |
+
srcPos += elemsInThisChunk;
|
4941 |
+
|
4942 |
+
if (hasTransferMaps) {
|
4943 |
+
for (let k = 0; k < elemsInThisChunk; k += 4) {
|
4944 |
+
if (transferMapRed) {
|
4945 |
+
dest[k + 0] = transferMapRed[dest[k + 0]];
|
4946 |
+
}
|
4947 |
+
|
4948 |
+
if (transferMapGreen) {
|
4949 |
+
dest[k + 1] = transferMapGreen[dest[k + 1]];
|
4950 |
+
}
|
4951 |
+
|
4952 |
+
if (transferMapBlue) {
|
4953 |
+
dest[k + 2] = transferMapBlue[dest[k + 2]];
|
4954 |
+
}
|
4955 |
+
}
|
4956 |
+
}
|
4957 |
+
|
4958 |
+
ctx.putImageData(chunkImgData, 0, j);
|
4959 |
+
j += FULL_CHUNK_HEIGHT;
|
4960 |
+
}
|
4961 |
+
|
4962 |
+
if (i < totalChunks) {
|
4963 |
+
elemsInThisChunk = width * partialChunkHeight * 4;
|
4964 |
+
dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
|
4965 |
+
|
4966 |
+
if (hasTransferMaps) {
|
4967 |
+
for (let k = 0; k < elemsInThisChunk; k += 4) {
|
4968 |
+
if (transferMapRed) {
|
4969 |
+
dest[k + 0] = transferMapRed[dest[k + 0]];
|
4970 |
+
}
|
4971 |
+
|
4972 |
+
if (transferMapGreen) {
|
4973 |
+
dest[k + 1] = transferMapGreen[dest[k + 1]];
|
4974 |
+
}
|
4975 |
+
|
4976 |
+
if (transferMapBlue) {
|
4977 |
+
dest[k + 2] = transferMapBlue[dest[k + 2]];
|
4978 |
+
}
|
4979 |
+
}
|
4980 |
+
}
|
4981 |
+
|
4982 |
+
ctx.putImageData(chunkImgData, 0, j);
|
4983 |
+
}
|
4984 |
+
} else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
|
4985 |
+
const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
|
4986 |
+
thisChunkHeight = FULL_CHUNK_HEIGHT;
|
4987 |
+
elemsInThisChunk = width * thisChunkHeight;
|
4988 |
+
|
4989 |
+
for (i = 0; i < totalChunks; i++) {
|
4990 |
+
if (i >= fullChunks) {
|
4991 |
+
thisChunkHeight = partialChunkHeight;
|
4992 |
+
elemsInThisChunk = width * thisChunkHeight;
|
4993 |
+
}
|
4994 |
+
|
4995 |
+
destPos = 0;
|
4996 |
+
|
4997 |
+
for (j = elemsInThisChunk; j--;) {
|
4998 |
+
dest[destPos++] = src[srcPos++];
|
4999 |
+
dest[destPos++] = src[srcPos++];
|
5000 |
+
dest[destPos++] = src[srcPos++];
|
5001 |
+
dest[destPos++] = 255;
|
5002 |
+
}
|
5003 |
+
|
5004 |
+
if (hasTransferMaps) {
|
5005 |
+
for (let k = 0; k < destPos; k += 4) {
|
5006 |
+
if (transferMapRed) {
|
5007 |
+
dest[k + 0] = transferMapRed[dest[k + 0]];
|
5008 |
+
}
|
5009 |
+
|
5010 |
+
if (transferMapGreen) {
|
5011 |
+
dest[k + 1] = transferMapGreen[dest[k + 1]];
|
5012 |
+
}
|
5013 |
+
|
5014 |
+
if (transferMapBlue) {
|
5015 |
+
dest[k + 2] = transferMapBlue[dest[k + 2]];
|
5016 |
+
}
|
5017 |
+
}
|
5018 |
+
}
|
5019 |
+
|
5020 |
+
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
|
5021 |
+
}
|
5022 |
+
} else {
|
5023 |
+
throw new Error(`bad image kind: ${imgData.kind}`);
|
5024 |
+
}
|
5025 |
+
}
|
5026 |
+
|
5027 |
+
function putBinaryImageMask(ctx, imgData) {
|
5028 |
+
const height = imgData.height,
|
5029 |
+
width = imgData.width;
|
5030 |
+
const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
|
5031 |
+
const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
|
5032 |
+
const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
|
5033 |
+
const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
|
5034 |
+
let srcPos = 0;
|
5035 |
+
const src = imgData.data;
|
5036 |
+
const dest = chunkImgData.data;
|
5037 |
+
|
5038 |
+
for (let i = 0; i < totalChunks; i++) {
|
5039 |
+
const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
|
5040 |
+
let destPos = 3;
|
5041 |
+
|
5042 |
+
for (let j = 0; j < thisChunkHeight; j++) {
|
5043 |
+
let elem,
|
5044 |
+
mask = 0;
|
5045 |
+
|
5046 |
+
for (let k = 0; k < width; k++) {
|
5047 |
+
if (!mask) {
|
5048 |
+
elem = src[srcPos++];
|
5049 |
+
mask = 128;
|
5050 |
+
}
|
5051 |
+
|
5052 |
+
dest[destPos] = elem & mask ? 0 : 255;
|
5053 |
+
destPos += 4;
|
5054 |
+
mask >>= 1;
|
5055 |
+
}
|
5056 |
+
}
|
5057 |
+
|
5058 |
+
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
|
5059 |
+
}
|
5060 |
+
}
|
5061 |
+
|
5062 |
+
function copyCtxState(sourceCtx, destCtx) {
|
5063 |
+
const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"];
|
5064 |
+
|
5065 |
+
for (let i = 0, ii = properties.length; i < ii; i++) {
|
5066 |
+
const property = properties[i];
|
5067 |
+
|
5068 |
+
if (sourceCtx[property] !== undefined) {
|
5069 |
+
destCtx[property] = sourceCtx[property];
|
5070 |
+
}
|
5071 |
+
}
|
5072 |
+
|
5073 |
+
if (sourceCtx.setLineDash !== undefined) {
|
5074 |
+
destCtx.setLineDash(sourceCtx.getLineDash());
|
5075 |
+
destCtx.lineDashOffset = sourceCtx.lineDashOffset;
|
5076 |
+
}
|
5077 |
+
}
|
5078 |
+
|
5079 |
+
function resetCtxToDefault(ctx) {
|
5080 |
+
ctx.strokeStyle = "#000000";
|
5081 |
+
ctx.fillStyle = "#000000";
|
5082 |
+
ctx.fillRule = "nonzero";
|
5083 |
+
ctx.globalAlpha = 1;
|
5084 |
+
ctx.lineWidth = 1;
|
5085 |
+
ctx.lineCap = "butt";
|
5086 |
+
ctx.lineJoin = "miter";
|
5087 |
+
ctx.miterLimit = 10;
|
5088 |
+
ctx.globalCompositeOperation = "source-over";
|
5089 |
+
ctx.font = "10px sans-serif";
|
5090 |
+
|
5091 |
+
if (ctx.setLineDash !== undefined) {
|
5092 |
+
ctx.setLineDash([]);
|
5093 |
+
ctx.lineDashOffset = 0;
|
5094 |
+
}
|
5095 |
+
}
|
5096 |
+
|
5097 |
+
function composeSMaskBackdrop(bytes, r0, g0, b0) {
|
5098 |
+
const length = bytes.length;
|
5099 |
+
|
5100 |
+
for (let i = 3; i < length; i += 4) {
|
5101 |
+
const alpha = bytes[i];
|
5102 |
+
|
5103 |
+
if (alpha === 0) {
|
5104 |
+
bytes[i - 3] = r0;
|
5105 |
+
bytes[i - 2] = g0;
|
5106 |
+
bytes[i - 1] = b0;
|
5107 |
+
} else if (alpha < 255) {
|
5108 |
+
const alpha_ = 255 - alpha;
|
5109 |
+
bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
|
5110 |
+
bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
|
5111 |
+
bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
|
5112 |
+
}
|
5113 |
+
}
|
5114 |
+
}
|
5115 |
+
|
5116 |
+
function composeSMaskAlpha(maskData, layerData, transferMap) {
|
5117 |
+
const length = maskData.length;
|
5118 |
+
const scale = 1 / 255;
|
5119 |
+
|
5120 |
+
for (let i = 3; i < length; i += 4) {
|
5121 |
+
const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
|
5122 |
+
layerData[i] = layerData[i] * alpha * scale | 0;
|
5123 |
+
}
|
5124 |
+
}
|
5125 |
+
|
5126 |
+
function composeSMaskLuminosity(maskData, layerData, transferMap) {
|
5127 |
+
const length = maskData.length;
|
5128 |
+
|
5129 |
+
for (let i = 3; i < length; i += 4) {
|
5130 |
+
const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
|
5131 |
+
layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
|
5132 |
+
}
|
5133 |
+
}
|
5134 |
+
|
5135 |
+
function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
|
5136 |
+
const hasBackdrop = !!backdrop;
|
5137 |
+
const r0 = hasBackdrop ? backdrop[0] : 0;
|
5138 |
+
const g0 = hasBackdrop ? backdrop[1] : 0;
|
5139 |
+
const b0 = hasBackdrop ? backdrop[2] : 0;
|
5140 |
+
let composeFn;
|
5141 |
+
|
5142 |
+
if (subtype === "Luminosity") {
|
5143 |
+
composeFn = composeSMaskLuminosity;
|
5144 |
+
} else {
|
5145 |
+
composeFn = composeSMaskAlpha;
|
5146 |
+
}
|
5147 |
+
|
5148 |
+
const PIXELS_TO_PROCESS = 1048576;
|
5149 |
+
const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
|
5150 |
+
|
5151 |
+
for (let row = 0; row < height; row += chunkSize) {
|
5152 |
+
const chunkHeight = Math.min(chunkSize, height - row);
|
5153 |
+
const maskData = maskCtx.getImageData(0, row, width, chunkHeight);
|
5154 |
+
const layerData = layerCtx.getImageData(0, row, width, chunkHeight);
|
5155 |
+
|
5156 |
+
if (hasBackdrop) {
|
5157 |
+
composeSMaskBackdrop(maskData.data, r0, g0, b0);
|
5158 |
+
}
|
5159 |
+
|
5160 |
+
composeFn(maskData.data, layerData.data, transferMap);
|
5161 |
+
maskCtx.putImageData(layerData, 0, row);
|
5162 |
+
}
|
5163 |
+
}
|
5164 |
+
|
5165 |
+
function composeSMask(ctx, smask, layerCtx) {
|
5166 |
+
const mask = smask.canvas;
|
5167 |
+
const maskCtx = smask.context;
|
5168 |
+
ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
|
5169 |
+
genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, smask.backdrop, smask.transferMap);
|
5170 |
+
ctx.drawImage(mask, 0, 0);
|
5171 |
+
}
|
5172 |
+
|
5173 |
+
const LINE_CAP_STYLES = ["butt", "round", "square"];
|
5174 |
+
const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
|
5175 |
+
const NORMAL_CLIP = {};
|
5176 |
+
const EO_CLIP = {};
|
5177 |
+
|
5178 |
+
class CanvasGraphics {
|
5179 |
+
constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig) {
|
5180 |
+
this.ctx = canvasCtx;
|
5181 |
+
this.current = new CanvasExtraState();
|
5182 |
+
this.stateStack = [];
|
5183 |
+
this.pendingClip = null;
|
5184 |
+
this.pendingEOFill = false;
|
5185 |
+
this.res = null;
|
5186 |
+
this.xobjs = null;
|
5187 |
+
this.commonObjs = commonObjs;
|
5188 |
+
this.objs = objs;
|
5189 |
+
this.canvasFactory = canvasFactory;
|
5190 |
+
this.imageLayer = imageLayer;
|
5191 |
+
this.groupStack = [];
|
5192 |
+
this.processingType3 = null;
|
5193 |
+
this.baseTransform = null;
|
5194 |
+
this.baseTransformStack = [];
|
5195 |
+
this.groupLevel = 0;
|
5196 |
+
this.smaskStack = [];
|
5197 |
+
this.smaskCounter = 0;
|
5198 |
+
this.tempSMask = null;
|
5199 |
+
this.contentVisible = true;
|
5200 |
+
this.markedContentStack = [];
|
5201 |
+
this.optionalContentConfig = optionalContentConfig;
|
5202 |
+
this.cachedCanvases = new CachedCanvases(this.canvasFactory);
|
5203 |
+
|
5204 |
+
if (canvasCtx) {
|
5205 |
+
addContextCurrentTransform(canvasCtx);
|
5206 |
+
}
|
5207 |
+
|
5208 |
+
this._cachedGetSinglePixelWidth = null;
|
5209 |
+
}
|
5210 |
+
|
5211 |
+
beginDrawing({
|
5212 |
+
transform,
|
5213 |
+
viewport,
|
5214 |
+
transparency = false,
|
5215 |
+
background = null
|
5216 |
+
}) {
|
5217 |
+
const width = this.ctx.canvas.width;
|
5218 |
+
const height = this.ctx.canvas.height;
|
5219 |
+
this.ctx.save();
|
5220 |
+
this.ctx.fillStyle = background || "rgb(255, 255, 255)";
|
5221 |
+
this.ctx.fillRect(0, 0, width, height);
|
5222 |
+
this.ctx.restore();
|
5223 |
+
|
5224 |
+
if (transparency) {
|
5225 |
+
const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
|
5226 |
+
this.compositeCtx = this.ctx;
|
5227 |
+
this.transparentCanvas = transparentCanvas.canvas;
|
5228 |
+
this.ctx = transparentCanvas.context;
|
5229 |
+
this.ctx.save();
|
5230 |
+
this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
|
5231 |
+
}
|
5232 |
+
|
5233 |
+
this.ctx.save();
|
5234 |
+
resetCtxToDefault(this.ctx);
|
5235 |
+
|
5236 |
+
if (transform) {
|
5237 |
+
this.ctx.transform.apply(this.ctx, transform);
|
5238 |
+
}
|
5239 |
+
|
5240 |
+
this.ctx.transform.apply(this.ctx, viewport.transform);
|
5241 |
+
this.baseTransform = this.ctx.mozCurrentTransform.slice();
|
5242 |
+
this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
|
5243 |
+
|
5244 |
+
if (this.imageLayer) {
|
5245 |
+
this.imageLayer.beginLayout();
|
5246 |
+
}
|
5247 |
+
}
|
5248 |
+
|
5249 |
+
executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
|
5250 |
+
const argsArray = operatorList.argsArray;
|
5251 |
+
const fnArray = operatorList.fnArray;
|
5252 |
+
let i = executionStartIdx || 0;
|
5253 |
+
const argsArrayLen = argsArray.length;
|
5254 |
+
|
5255 |
+
if (argsArrayLen === i) {
|
5256 |
+
return i;
|
5257 |
+
}
|
5258 |
+
|
5259 |
+
const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
|
5260 |
+
const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
|
5261 |
+
let steps = 0;
|
5262 |
+
const commonObjs = this.commonObjs;
|
5263 |
+
const objs = this.objs;
|
5264 |
+
let fnId;
|
5265 |
+
|
5266 |
+
while (true) {
|
5267 |
+
if (stepper !== undefined && i === stepper.nextBreakPoint) {
|
5268 |
+
stepper.breakIt(i, continueCallback);
|
5269 |
+
return i;
|
5270 |
+
}
|
5271 |
+
|
5272 |
+
fnId = fnArray[i];
|
5273 |
+
|
5274 |
+
if (fnId !== _util.OPS.dependency) {
|
5275 |
+
this[fnId].apply(this, argsArray[i]);
|
5276 |
+
} else {
|
5277 |
+
for (const depObjId of argsArray[i]) {
|
5278 |
+
const objsPool = depObjId.startsWith("g_") ? commonObjs : objs;
|
5279 |
+
|
5280 |
+
if (!objsPool.has(depObjId)) {
|
5281 |
+
objsPool.get(depObjId, continueCallback);
|
5282 |
+
return i;
|
5283 |
+
}
|
5284 |
+
}
|
5285 |
+
}
|
5286 |
+
|
5287 |
+
i++;
|
5288 |
+
|
5289 |
+
if (i === argsArrayLen) {
|
5290 |
+
return i;
|
5291 |
+
}
|
5292 |
+
|
5293 |
+
if (chunkOperations && ++steps > EXECUTION_STEPS) {
|
5294 |
+
if (Date.now() > endTime) {
|
5295 |
+
continueCallback();
|
5296 |
+
return i;
|
5297 |
+
}
|
5298 |
+
|
5299 |
+
steps = 0;
|
5300 |
+
}
|
5301 |
+
}
|
5302 |
+
}
|
5303 |
+
|
5304 |
+
endDrawing() {
|
5305 |
+
while (this.stateStack.length || this.current.activeSMask !== null) {
|
5306 |
+
this.restore();
|
5307 |
+
}
|
5308 |
+
|
5309 |
+
this.ctx.restore();
|
5310 |
+
|
5311 |
+
if (this.transparentCanvas) {
|
5312 |
+
this.ctx = this.compositeCtx;
|
5313 |
+
this.ctx.save();
|
5314 |
+
this.ctx.setTransform(1, 0, 0, 1, 0, 0);
|
5315 |
+
this.ctx.drawImage(this.transparentCanvas, 0, 0);
|
5316 |
+
this.ctx.restore();
|
5317 |
+
this.transparentCanvas = null;
|
5318 |
+
}
|
5319 |
+
|
5320 |
+
this.cachedCanvases.clear();
|
5321 |
+
|
5322 |
+
if (this.imageLayer) {
|
5323 |
+
this.imageLayer.endLayout();
|
5324 |
+
}
|
5325 |
+
}
|
5326 |
+
|
5327 |
+
setLineWidth(width) {
|
5328 |
+
this.current.lineWidth = width;
|
5329 |
+
this.ctx.lineWidth = width;
|
5330 |
+
}
|
5331 |
+
|
5332 |
+
setLineCap(style) {
|
5333 |
+
this.ctx.lineCap = LINE_CAP_STYLES[style];
|
5334 |
+
}
|
5335 |
+
|
5336 |
+
setLineJoin(style) {
|
5337 |
+
this.ctx.lineJoin = LINE_JOIN_STYLES[style];
|
5338 |
+
}
|
5339 |
+
|
5340 |
+
setMiterLimit(limit) {
|
5341 |
+
this.ctx.miterLimit = limit;
|
5342 |
+
}
|
5343 |
+
|
5344 |
+
setDash(dashArray, dashPhase) {
|
5345 |
+
const ctx = this.ctx;
|
5346 |
+
|
5347 |
+
if (ctx.setLineDash !== undefined) {
|
5348 |
+
ctx.setLineDash(dashArray);
|
5349 |
+
ctx.lineDashOffset = dashPhase;
|
5350 |
+
}
|
5351 |
+
}
|
5352 |
+
|
5353 |
+
setRenderingIntent(intent) {}
|
5354 |
+
|
5355 |
+
setFlatness(flatness) {}
|
5356 |
+
|
5357 |
+
setGState(states) {
|
5358 |
+
for (let i = 0, ii = states.length; i < ii; i++) {
|
5359 |
+
const state = states[i];
|
5360 |
+
const key = state[0];
|
5361 |
+
const value = state[1];
|
5362 |
+
|
5363 |
+
switch (key) {
|
5364 |
+
case "LW":
|
5365 |
+
this.setLineWidth(value);
|
5366 |
+
break;
|
5367 |
+
|
5368 |
+
case "LC":
|
5369 |
+
this.setLineCap(value);
|
5370 |
+
break;
|
5371 |
+
|
5372 |
+
case "LJ":
|
5373 |
+
this.setLineJoin(value);
|
5374 |
+
break;
|
5375 |
+
|
5376 |
+
case "ML":
|
5377 |
+
this.setMiterLimit(value);
|
5378 |
+
break;
|
5379 |
+
|
5380 |
+
case "D":
|
5381 |
+
this.setDash(value[0], value[1]);
|
5382 |
+
break;
|
5383 |
+
|
5384 |
+
case "RI":
|
5385 |
+
this.setRenderingIntent(value);
|
5386 |
+
break;
|
5387 |
+
|
5388 |
+
case "FL":
|
5389 |
+
this.setFlatness(value);
|
5390 |
+
break;
|
5391 |
+
|
5392 |
+
case "Font":
|
5393 |
+
this.setFont(value[0], value[1]);
|
5394 |
+
break;
|
5395 |
+
|
5396 |
+
case "CA":
|
5397 |
+
this.current.strokeAlpha = state[1];
|
5398 |
+
break;
|
5399 |
+
|
5400 |
+
case "ca":
|
5401 |
+
this.current.fillAlpha = state[1];
|
5402 |
+
this.ctx.globalAlpha = state[1];
|
5403 |
+
break;
|
5404 |
+
|
5405 |
+
case "BM":
|
5406 |
+
this.ctx.globalCompositeOperation = value;
|
5407 |
+
break;
|
5408 |
+
|
5409 |
+
case "SMask":
|
5410 |
+
if (this.current.activeSMask) {
|
5411 |
+
if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {
|
5412 |
+
this.suspendSMaskGroup();
|
5413 |
+
} else {
|
5414 |
+
this.endSMaskGroup();
|
5415 |
+
}
|
5416 |
+
}
|
5417 |
+
|
5418 |
+
this.current.activeSMask = value ? this.tempSMask : null;
|
5419 |
+
|
5420 |
+
if (this.current.activeSMask) {
|
5421 |
+
this.beginSMaskGroup();
|
5422 |
+
}
|
5423 |
+
|
5424 |
+
this.tempSMask = null;
|
5425 |
+
break;
|
5426 |
+
|
5427 |
+
case "TR":
|
5428 |
+
this.current.transferMaps = value;
|
5429 |
+
}
|
5430 |
+
}
|
5431 |
+
}
|
5432 |
+
|
5433 |
+
beginSMaskGroup() {
|
5434 |
+
const activeSMask = this.current.activeSMask;
|
5435 |
+
const drawnWidth = activeSMask.canvas.width;
|
5436 |
+
const drawnHeight = activeSMask.canvas.height;
|
5437 |
+
const cacheId = "smaskGroupAt" + this.groupLevel;
|
5438 |
+
const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
|
5439 |
+
const currentCtx = this.ctx;
|
5440 |
+
const currentTransform = currentCtx.mozCurrentTransform;
|
5441 |
+
this.ctx.save();
|
5442 |
+
const groupCtx = scratchCanvas.context;
|
5443 |
+
groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
|
5444 |
+
groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
|
5445 |
+
groupCtx.transform.apply(groupCtx, currentTransform);
|
5446 |
+
activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
|
5447 |
+
copyCtxState(currentCtx, groupCtx);
|
5448 |
+
this.ctx = groupCtx;
|
5449 |
+
this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
|
5450 |
+
this.groupStack.push(currentCtx);
|
5451 |
+
this.groupLevel++;
|
5452 |
+
}
|
5453 |
+
|
5454 |
+
suspendSMaskGroup() {
|
5455 |
+
const groupCtx = this.ctx;
|
5456 |
+
this.groupLevel--;
|
5457 |
+
this.ctx = this.groupStack.pop();
|
5458 |
+
composeSMask(this.ctx, this.current.activeSMask, groupCtx);
|
5459 |
+
this.ctx.restore();
|
5460 |
+
this.ctx.save();
|
5461 |
+
copyCtxState(groupCtx, this.ctx);
|
5462 |
+
this.current.resumeSMaskCtx = groupCtx;
|
5463 |
+
|
5464 |
+
const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
|
5465 |
+
|
5466 |
+
this.ctx.transform.apply(this.ctx, deltaTransform);
|
5467 |
+
groupCtx.save();
|
5468 |
+
groupCtx.setTransform(1, 0, 0, 1, 0, 0);
|
5469 |
+
groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
|
5470 |
+
groupCtx.restore();
|
5471 |
+
}
|
5472 |
+
|
5473 |
+
resumeSMaskGroup() {
|
5474 |
+
const groupCtx = this.current.resumeSMaskCtx;
|
5475 |
+
const currentCtx = this.ctx;
|
5476 |
+
this.ctx = groupCtx;
|
5477 |
+
this.groupStack.push(currentCtx);
|
5478 |
+
this.groupLevel++;
|
5479 |
+
}
|
5480 |
+
|
5481 |
+
endSMaskGroup() {
|
5482 |
+
const groupCtx = this.ctx;
|
5483 |
+
this.groupLevel--;
|
5484 |
+
this.ctx = this.groupStack.pop();
|
5485 |
+
composeSMask(this.ctx, this.current.activeSMask, groupCtx);
|
5486 |
+
this.ctx.restore();
|
5487 |
+
copyCtxState(groupCtx, this.ctx);
|
5488 |
+
|
5489 |
+
const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
|
5490 |
+
|
5491 |
+
this.ctx.transform.apply(this.ctx, deltaTransform);
|
5492 |
+
}
|
5493 |
+
|
5494 |
+
save() {
|
5495 |
+
this.ctx.save();
|
5496 |
+
const old = this.current;
|
5497 |
+
this.stateStack.push(old);
|
5498 |
+
this.current = old.clone();
|
5499 |
+
this.current.resumeSMaskCtx = null;
|
5500 |
+
}
|
5501 |
+
|
5502 |
+
restore() {
|
5503 |
+
if (this.current.resumeSMaskCtx) {
|
5504 |
+
this.resumeSMaskGroup();
|
5505 |
+
}
|
5506 |
+
|
5507 |
+
if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
|
5508 |
+
this.endSMaskGroup();
|
5509 |
+
}
|
5510 |
+
|
5511 |
+
if (this.stateStack.length !== 0) {
|
5512 |
+
this.current = this.stateStack.pop();
|
5513 |
+
this.ctx.restore();
|
5514 |
+
this.pendingClip = null;
|
5515 |
+
this._cachedGetSinglePixelWidth = null;
|
5516 |
+
} else {
|
5517 |
+
this.current.activeSMask = null;
|
5518 |
+
}
|
5519 |
+
}
|
5520 |
+
|
5521 |
+
transform(a, b, c, d, e, f) {
|
5522 |
+
this.ctx.transform(a, b, c, d, e, f);
|
5523 |
+
this._cachedGetSinglePixelWidth = null;
|
5524 |
+
}
|
5525 |
+
|
5526 |
+
constructPath(ops, args) {
|
5527 |
+
const ctx = this.ctx;
|
5528 |
+
const current = this.current;
|
5529 |
+
let x = current.x,
|
5530 |
+
y = current.y;
|
5531 |
+
|
5532 |
+
for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
|
5533 |
+
switch (ops[i] | 0) {
|
5534 |
+
case _util.OPS.rectangle:
|
5535 |
+
x = args[j++];
|
5536 |
+
y = args[j++];
|
5537 |
+
const width = args[j++];
|
5538 |
+
const height = args[j++];
|
5539 |
+
const xw = x + width;
|
5540 |
+
const yh = y + height;
|
5541 |
+
ctx.moveTo(x, y);
|
5542 |
+
|
5543 |
+
if (width === 0 || height === 0) {
|
5544 |
+
ctx.lineTo(xw, yh);
|
5545 |
+
} else {
|
5546 |
+
ctx.lineTo(xw, y);
|
5547 |
+
ctx.lineTo(xw, yh);
|
5548 |
+
ctx.lineTo(x, yh);
|
5549 |
+
}
|
5550 |
+
|
5551 |
+
ctx.closePath();
|
5552 |
+
break;
|
5553 |
+
|
5554 |
+
case _util.OPS.moveTo:
|
5555 |
+
x = args[j++];
|
5556 |
+
y = args[j++];
|
5557 |
+
ctx.moveTo(x, y);
|
5558 |
+
break;
|
5559 |
+
|
5560 |
+
case _util.OPS.lineTo:
|
5561 |
+
x = args[j++];
|
5562 |
+
y = args[j++];
|
5563 |
+
ctx.lineTo(x, y);
|
5564 |
+
break;
|
5565 |
+
|
5566 |
+
case _util.OPS.curveTo:
|
5567 |
+
x = args[j + 4];
|
5568 |
+
y = args[j + 5];
|
5569 |
+
ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
|
5570 |
+
j += 6;
|
5571 |
+
break;
|
5572 |
+
|
5573 |
+
case _util.OPS.curveTo2:
|
5574 |
+
ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
|
5575 |
+
x = args[j + 2];
|
5576 |
+
y = args[j + 3];
|
5577 |
+
j += 4;
|
5578 |
+
break;
|
5579 |
+
|
5580 |
+
case _util.OPS.curveTo3:
|
5581 |
+
x = args[j + 2];
|
5582 |
+
y = args[j + 3];
|
5583 |
+
ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
|
5584 |
+
j += 4;
|
5585 |
+
break;
|
5586 |
+
|
5587 |
+
case _util.OPS.closePath:
|
5588 |
+
ctx.closePath();
|
5589 |
+
break;
|
5590 |
+
}
|
5591 |
+
}
|
5592 |
+
|
5593 |
+
current.setCurrentPoint(x, y);
|
5594 |
+
}
|
5595 |
+
|
5596 |
+
closePath() {
|
5597 |
+
this.ctx.closePath();
|
5598 |
+
}
|
5599 |
+
|
5600 |
+
stroke(consumePath) {
|
5601 |
+
consumePath = typeof consumePath !== "undefined" ? consumePath : true;
|
5602 |
+
const ctx = this.ctx;
|
5603 |
+
const strokeColor = this.current.strokeColor;
|
5604 |
+
ctx.globalAlpha = this.current.strokeAlpha;
|
5605 |
+
|
5606 |
+
if (this.contentVisible) {
|
5607 |
+
if (typeof strokeColor === "object" && strokeColor?.getPattern) {
|
5608 |
+
const lineWidth = this.getSinglePixelWidth();
|
5609 |
+
ctx.save();
|
5610 |
+
ctx.strokeStyle = strokeColor.getPattern(ctx, this);
|
5611 |
+
ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
|
5612 |
+
ctx.stroke();
|
5613 |
+
ctx.restore();
|
5614 |
+
} else {
|
5615 |
+
const lineWidth = this.getSinglePixelWidth();
|
5616 |
+
|
5617 |
+
if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
|
5618 |
+
ctx.save();
|
5619 |
+
ctx.resetTransform();
|
5620 |
+
ctx.lineWidth = Math.round(this._combinedScaleFactor);
|
5621 |
+
ctx.stroke();
|
5622 |
+
ctx.restore();
|
5623 |
+
} else {
|
5624 |
+
ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
|
5625 |
+
ctx.stroke();
|
5626 |
+
}
|
5627 |
+
}
|
5628 |
+
}
|
5629 |
+
|
5630 |
+
if (consumePath) {
|
5631 |
+
this.consumePath();
|
5632 |
+
}
|
5633 |
+
|
5634 |
+
ctx.globalAlpha = this.current.fillAlpha;
|
5635 |
+
}
|
5636 |
+
|
5637 |
+
closeStroke() {
|
5638 |
+
this.closePath();
|
5639 |
+
this.stroke();
|
5640 |
+
}
|
5641 |
+
|
5642 |
+
fill(consumePath) {
|
5643 |
+
consumePath = typeof consumePath !== "undefined" ? consumePath : true;
|
5644 |
+
const ctx = this.ctx;
|
5645 |
+
const fillColor = this.current.fillColor;
|
5646 |
+
const isPatternFill = this.current.patternFill;
|
5647 |
+
let needRestore = false;
|
5648 |
+
|
5649 |
+
if (isPatternFill) {
|
5650 |
+
ctx.save();
|
5651 |
+
ctx.fillStyle = fillColor.getPattern(ctx, this);
|
5652 |
+
needRestore = true;
|
5653 |
+
}
|
5654 |
+
|
5655 |
+
if (this.contentVisible) {
|
5656 |
+
if (this.pendingEOFill) {
|
5657 |
+
ctx.fill("evenodd");
|
5658 |
+
this.pendingEOFill = false;
|
5659 |
+
} else {
|
5660 |
+
ctx.fill();
|
5661 |
+
}
|
5662 |
+
}
|
5663 |
+
|
5664 |
+
if (needRestore) {
|
5665 |
+
ctx.restore();
|
5666 |
+
}
|
5667 |
+
|
5668 |
+
if (consumePath) {
|
5669 |
+
this.consumePath();
|
5670 |
+
}
|
5671 |
+
}
|
5672 |
+
|
5673 |
+
eoFill() {
|
5674 |
+
this.pendingEOFill = true;
|
5675 |
+
this.fill();
|
5676 |
+
}
|
5677 |
+
|
5678 |
+
fillStroke() {
|
5679 |
+
this.fill(false);
|
5680 |
+
this.stroke(false);
|
5681 |
+
this.consumePath();
|
5682 |
+
}
|
5683 |
+
|
5684 |
+
eoFillStroke() {
|
5685 |
+
this.pendingEOFill = true;
|
5686 |
+
this.fillStroke();
|
5687 |
+
}
|
5688 |
+
|
5689 |
+
closeFillStroke() {
|
5690 |
+
this.closePath();
|
5691 |
+
this.fillStroke();
|
5692 |
+
}
|
5693 |
+
|
5694 |
+
closeEOFillStroke() {
|
5695 |
+
this.pendingEOFill = true;
|
5696 |
+
this.closePath();
|
5697 |
+
this.fillStroke();
|
5698 |
+
}
|
5699 |
+
|
5700 |
+
endPath() {
|
5701 |
+
this.consumePath();
|
5702 |
+
}
|
5703 |
+
|
5704 |
+
clip() {
|
5705 |
+
this.pendingClip = NORMAL_CLIP;
|
5706 |
+
}
|
5707 |
+
|
5708 |
+
eoClip() {
|
5709 |
+
this.pendingClip = EO_CLIP;
|
5710 |
+
}
|
5711 |
+
|
5712 |
+
beginText() {
|
5713 |
+
this.current.textMatrix = _util.IDENTITY_MATRIX;
|
5714 |
+
this.current.textMatrixScale = 1;
|
5715 |
+
this.current.x = this.current.lineX = 0;
|
5716 |
+
this.current.y = this.current.lineY = 0;
|
5717 |
+
}
|
5718 |
+
|
5719 |
+
endText() {
|
5720 |
+
const paths = this.pendingTextPaths;
|
5721 |
+
const ctx = this.ctx;
|
5722 |
+
|
5723 |
+
if (paths === undefined) {
|
5724 |
+
ctx.beginPath();
|
5725 |
+
return;
|
5726 |
+
}
|
5727 |
+
|
5728 |
+
ctx.save();
|
5729 |
+
ctx.beginPath();
|
5730 |
+
|
5731 |
+
for (let i = 0; i < paths.length; i++) {
|
5732 |
+
const path = paths[i];
|
5733 |
+
ctx.setTransform.apply(ctx, path.transform);
|
5734 |
+
ctx.translate(path.x, path.y);
|
5735 |
+
path.addToPath(ctx, path.fontSize);
|
5736 |
+
}
|
5737 |
+
|
5738 |
+
ctx.restore();
|
5739 |
+
ctx.clip();
|
5740 |
+
ctx.beginPath();
|
5741 |
+
delete this.pendingTextPaths;
|
5742 |
+
}
|
5743 |
+
|
5744 |
+
setCharSpacing(spacing) {
|
5745 |
+
this.current.charSpacing = spacing;
|
5746 |
+
}
|
5747 |
+
|
5748 |
+
setWordSpacing(spacing) {
|
5749 |
+
this.current.wordSpacing = spacing;
|
5750 |
+
}
|
5751 |
+
|
5752 |
+
setHScale(scale) {
|
5753 |
+
this.current.textHScale = scale / 100;
|
5754 |
+
}
|
5755 |
+
|
5756 |
+
setLeading(leading) {
|
5757 |
+
this.current.leading = -leading;
|
5758 |
+
}
|
5759 |
+
|
5760 |
+
setFont(fontRefName, size) {
|
5761 |
+
const fontObj = this.commonObjs.get(fontRefName);
|
5762 |
+
const current = this.current;
|
5763 |
+
|
5764 |
+
if (!fontObj) {
|
5765 |
+
throw new Error(`Can't find font for ${fontRefName}`);
|
5766 |
+
}
|
5767 |
+
|
5768 |
+
current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
|
5769 |
+
|
5770 |
+
if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
|
5771 |
+
(0, _util.warn)("Invalid font matrix for font " + fontRefName);
|
5772 |
+
}
|
5773 |
+
|
5774 |
+
if (size < 0) {
|
5775 |
+
size = -size;
|
5776 |
+
current.fontDirection = -1;
|
5777 |
+
} else {
|
5778 |
+
current.fontDirection = 1;
|
5779 |
+
}
|
5780 |
+
|
5781 |
+
this.current.font = fontObj;
|
5782 |
+
this.current.fontSize = size;
|
5783 |
+
|
5784 |
+
if (fontObj.isType3Font) {
|
5785 |
+
return;
|
5786 |
+
}
|
5787 |
+
|
5788 |
+
const name = fontObj.loadedName || "sans-serif";
|
5789 |
+
let bold = "normal";
|
5790 |
+
|
5791 |
+
if (fontObj.black) {
|
5792 |
+
bold = "900";
|
5793 |
+
} else if (fontObj.bold) {
|
5794 |
+
bold = "bold";
|
5795 |
+
}
|
5796 |
+
|
5797 |
+
const italic = fontObj.italic ? "italic" : "normal";
|
5798 |
+
const typeface = `"${name}", ${fontObj.fallbackName}`;
|
5799 |
+
let browserFontSize = size;
|
5800 |
+
|
5801 |
+
if (size < MIN_FONT_SIZE) {
|
5802 |
+
browserFontSize = MIN_FONT_SIZE;
|
5803 |
+
} else if (size > MAX_FONT_SIZE) {
|
5804 |
+
browserFontSize = MAX_FONT_SIZE;
|
5805 |
+
}
|
5806 |
+
|
5807 |
+
this.current.fontSizeScale = size / browserFontSize;
|
5808 |
+
this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;
|
5809 |
+
}
|
5810 |
+
|
5811 |
+
setTextRenderingMode(mode) {
|
5812 |
+
this.current.textRenderingMode = mode;
|
5813 |
+
}
|
5814 |
+
|
5815 |
+
setTextRise(rise) {
|
5816 |
+
this.current.textRise = rise;
|
5817 |
+
}
|
5818 |
+
|
5819 |
+
moveText(x, y) {
|
5820 |
+
this.current.x = this.current.lineX += x;
|
5821 |
+
this.current.y = this.current.lineY += y;
|
5822 |
+
}
|
5823 |
+
|
5824 |
+
setLeadingMoveText(x, y) {
|
5825 |
+
this.setLeading(-y);
|
5826 |
+
this.moveText(x, y);
|
5827 |
+
}
|
5828 |
+
|
5829 |
+
setTextMatrix(a, b, c, d, e, f) {
|
5830 |
+
this.current.textMatrix = [a, b, c, d, e, f];
|
5831 |
+
this.current.textMatrixScale = Math.hypot(a, b);
|
5832 |
+
this.current.x = this.current.lineX = 0;
|
5833 |
+
this.current.y = this.current.lineY = 0;
|
5834 |
+
}
|
5835 |
+
|
5836 |
+
nextLine() {
|
5837 |
+
this.moveText(0, this.current.leading);
|
5838 |
+
}
|
5839 |
+
|
5840 |
+
paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
|
5841 |
+
const ctx = this.ctx;
|
5842 |
+
const current = this.current;
|
5843 |
+
const font = current.font;
|
5844 |
+
const textRenderingMode = current.textRenderingMode;
|
5845 |
+
const fontSize = current.fontSize / current.fontSizeScale;
|
5846 |
+
const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
|
5847 |
+
const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
|
5848 |
+
const patternFill = current.patternFill && !font.missingFile;
|
5849 |
+
let addToPath;
|
5850 |
+
|
5851 |
+
if (font.disableFontFace || isAddToPathSet || patternFill) {
|
5852 |
+
addToPath = font.getPathGenerator(this.commonObjs, character);
|
5853 |
+
}
|
5854 |
+
|
5855 |
+
if (font.disableFontFace || patternFill) {
|
5856 |
+
ctx.save();
|
5857 |
+
ctx.translate(x, y);
|
5858 |
+
ctx.beginPath();
|
5859 |
+
addToPath(ctx, fontSize);
|
5860 |
+
|
5861 |
+
if (patternTransform) {
|
5862 |
+
ctx.setTransform.apply(ctx, patternTransform);
|
5863 |
+
}
|
5864 |
+
|
5865 |
+
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
5866 |
+
ctx.fill();
|
5867 |
+
}
|
5868 |
+
|
5869 |
+
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
5870 |
+
if (resetLineWidthToOne) {
|
5871 |
+
ctx.resetTransform();
|
5872 |
+
ctx.lineWidth = Math.round(this._combinedScaleFactor);
|
5873 |
+
}
|
5874 |
+
|
5875 |
+
ctx.stroke();
|
5876 |
+
}
|
5877 |
+
|
5878 |
+
ctx.restore();
|
5879 |
+
} else {
|
5880 |
+
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
5881 |
+
ctx.fillText(character, x, y);
|
5882 |
+
}
|
5883 |
+
|
5884 |
+
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
5885 |
+
if (resetLineWidthToOne) {
|
5886 |
+
ctx.save();
|
5887 |
+
ctx.moveTo(x, y);
|
5888 |
+
ctx.resetTransform();
|
5889 |
+
ctx.lineWidth = Math.round(this._combinedScaleFactor);
|
5890 |
+
ctx.strokeText(character, 0, 0);
|
5891 |
+
ctx.restore();
|
5892 |
+
} else {
|
5893 |
+
ctx.strokeText(character, x, y);
|
5894 |
+
}
|
5895 |
+
}
|
5896 |
+
}
|
5897 |
+
|
5898 |
+
if (isAddToPathSet) {
|
5899 |
+
const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
|
5900 |
+
paths.push({
|
5901 |
+
transform: ctx.mozCurrentTransform,
|
5902 |
+
x,
|
5903 |
+
y,
|
5904 |
+
fontSize,
|
5905 |
+
addToPath
|
5906 |
+
});
|
5907 |
+
}
|
5908 |
+
}
|
5909 |
+
|
5910 |
+
get isFontSubpixelAAEnabled() {
|
5911 |
+
const {
|
5912 |
+
context: ctx
|
5913 |
+
} = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
|
5914 |
+
ctx.scale(1.5, 1);
|
5915 |
+
ctx.fillText("I", 0, 10);
|
5916 |
+
const data = ctx.getImageData(0, 0, 10, 10).data;
|
5917 |
+
let enabled = false;
|
5918 |
+
|
5919 |
+
for (let i = 3; i < data.length; i += 4) {
|
5920 |
+
if (data[i] > 0 && data[i] < 255) {
|
5921 |
+
enabled = true;
|
5922 |
+
break;
|
5923 |
+
}
|
5924 |
+
}
|
5925 |
+
|
5926 |
+
return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled);
|
5927 |
+
}
|
5928 |
+
|
5929 |
+
showText(glyphs) {
|
5930 |
+
const current = this.current;
|
5931 |
+
const font = current.font;
|
5932 |
+
|
5933 |
+
if (font.isType3Font) {
|
5934 |
+
return this.showType3Text(glyphs);
|
5935 |
+
}
|
5936 |
+
|
5937 |
+
const fontSize = current.fontSize;
|
5938 |
+
|
5939 |
+
if (fontSize === 0) {
|
5940 |
+
return undefined;
|
5941 |
+
}
|
5942 |
+
|
5943 |
+
const ctx = this.ctx;
|
5944 |
+
const fontSizeScale = current.fontSizeScale;
|
5945 |
+
const charSpacing = current.charSpacing;
|
5946 |
+
const wordSpacing = current.wordSpacing;
|
5947 |
+
const fontDirection = current.fontDirection;
|
5948 |
+
const textHScale = current.textHScale * fontDirection;
|
5949 |
+
const glyphsLength = glyphs.length;
|
5950 |
+
const vertical = font.vertical;
|
5951 |
+
const spacingDir = vertical ? 1 : -1;
|
5952 |
+
const defaultVMetrics = font.defaultVMetrics;
|
5953 |
+
const widthAdvanceScale = fontSize * current.fontMatrix[0];
|
5954 |
+
const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
|
5955 |
+
ctx.save();
|
5956 |
+
let patternTransform;
|
5957 |
+
|
5958 |
+
if (current.patternFill) {
|
5959 |
+
ctx.save();
|
5960 |
+
const pattern = current.fillColor.getPattern(ctx, this);
|
5961 |
+
patternTransform = ctx.mozCurrentTransform;
|
5962 |
+
ctx.restore();
|
5963 |
+
ctx.fillStyle = pattern;
|
5964 |
+
}
|
5965 |
+
|
5966 |
+
ctx.transform.apply(ctx, current.textMatrix);
|
5967 |
+
ctx.translate(current.x, current.y + current.textRise);
|
5968 |
+
|
5969 |
+
if (fontDirection > 0) {
|
5970 |
+
ctx.scale(textHScale, -1);
|
5971 |
+
} else {
|
5972 |
+
ctx.scale(textHScale, 1);
|
5973 |
+
}
|
5974 |
+
|
5975 |
+
let lineWidth = current.lineWidth;
|
5976 |
+
let resetLineWidthToOne = false;
|
5977 |
+
const scale = current.textMatrixScale;
|
5978 |
+
|
5979 |
+
if (scale === 0 || lineWidth === 0) {
|
5980 |
+
const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
|
5981 |
+
|
5982 |
+
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
5983 |
+
this._cachedGetSinglePixelWidth = null;
|
5984 |
+
lineWidth = this.getSinglePixelWidth();
|
5985 |
+
resetLineWidthToOne = lineWidth < 0;
|
5986 |
+
}
|
5987 |
+
} else {
|
5988 |
+
lineWidth /= scale;
|
5989 |
+
}
|
5990 |
+
|
5991 |
+
if (fontSizeScale !== 1.0) {
|
5992 |
+
ctx.scale(fontSizeScale, fontSizeScale);
|
5993 |
+
lineWidth /= fontSizeScale;
|
5994 |
+
}
|
5995 |
+
|
5996 |
+
ctx.lineWidth = lineWidth;
|
5997 |
+
let x = 0,
|
5998 |
+
i;
|
5999 |
+
|
6000 |
+
for (i = 0; i < glyphsLength; ++i) {
|
6001 |
+
const glyph = glyphs[i];
|
6002 |
+
|
6003 |
+
if ((0, _util.isNum)(glyph)) {
|
6004 |
+
x += spacingDir * glyph * fontSize / 1000;
|
6005 |
+
continue;
|
6006 |
+
}
|
6007 |
+
|
6008 |
+
let restoreNeeded = false;
|
6009 |
+
const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
|
6010 |
+
const character = glyph.fontChar;
|
6011 |
+
const accent = glyph.accent;
|
6012 |
+
let scaledX, scaledY;
|
6013 |
+
let width = glyph.width;
|
6014 |
+
|
6015 |
+
if (vertical) {
|
6016 |
+
const vmetric = glyph.vmetric || defaultVMetrics;
|
6017 |
+
const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
|
6018 |
+
const vy = vmetric[2] * widthAdvanceScale;
|
6019 |
+
width = vmetric ? -vmetric[0] : width;
|
6020 |
+
scaledX = vx / fontSizeScale;
|
6021 |
+
scaledY = (x + vy) / fontSizeScale;
|
6022 |
+
} else {
|
6023 |
+
scaledX = x / fontSizeScale;
|
6024 |
+
scaledY = 0;
|
6025 |
+
}
|
6026 |
+
|
6027 |
+
if (font.remeasure && width > 0) {
|
6028 |
+
const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
|
6029 |
+
|
6030 |
+
if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
|
6031 |
+
const characterScaleX = width / measuredWidth;
|
6032 |
+
restoreNeeded = true;
|
6033 |
+
ctx.save();
|
6034 |
+
ctx.scale(characterScaleX, 1);
|
6035 |
+
scaledX /= characterScaleX;
|
6036 |
+
} else if (width !== measuredWidth) {
|
6037 |
+
scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
|
6038 |
+
}
|
6039 |
+
}
|
6040 |
+
|
6041 |
+
if (this.contentVisible && (glyph.isInFont || font.missingFile)) {
|
6042 |
+
if (simpleFillText && !accent) {
|
6043 |
+
ctx.fillText(character, scaledX, scaledY);
|
6044 |
+
} else {
|
6045 |
+
this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
|
6046 |
+
|
6047 |
+
if (accent) {
|
6048 |
+
const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
|
6049 |
+
const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
|
6050 |
+
this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne);
|
6051 |
+
}
|
6052 |
+
}
|
6053 |
+
}
|
6054 |
+
|
6055 |
+
let charWidth;
|
6056 |
+
|
6057 |
+
if (vertical) {
|
6058 |
+
charWidth = width * widthAdvanceScale - spacing * fontDirection;
|
6059 |
+
} else {
|
6060 |
+
charWidth = width * widthAdvanceScale + spacing * fontDirection;
|
6061 |
+
}
|
6062 |
+
|
6063 |
+
x += charWidth;
|
6064 |
+
|
6065 |
+
if (restoreNeeded) {
|
6066 |
+
ctx.restore();
|
6067 |
+
}
|
6068 |
+
}
|
6069 |
+
|
6070 |
+
if (vertical) {
|
6071 |
+
current.y -= x;
|
6072 |
+
} else {
|
6073 |
+
current.x += x * textHScale;
|
6074 |
+
}
|
6075 |
+
|
6076 |
+
ctx.restore();
|
6077 |
+
return undefined;
|
6078 |
+
}
|
6079 |
+
|
6080 |
+
showType3Text(glyphs) {
|
6081 |
+
const ctx = this.ctx;
|
6082 |
+
const current = this.current;
|
6083 |
+
const font = current.font;
|
6084 |
+
const fontSize = current.fontSize;
|
6085 |
+
const fontDirection = current.fontDirection;
|
6086 |
+
const spacingDir = font.vertical ? 1 : -1;
|
6087 |
+
const charSpacing = current.charSpacing;
|
6088 |
+
const wordSpacing = current.wordSpacing;
|
6089 |
+
const textHScale = current.textHScale * fontDirection;
|
6090 |
+
const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
|
6091 |
+
const glyphsLength = glyphs.length;
|
6092 |
+
const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
|
6093 |
+
let i, glyph, width, spacingLength;
|
6094 |
+
|
6095 |
+
if (isTextInvisible || fontSize === 0) {
|
6096 |
+
return;
|
6097 |
+
}
|
6098 |
+
|
6099 |
+
this._cachedGetSinglePixelWidth = null;
|
6100 |
+
ctx.save();
|
6101 |
+
ctx.transform.apply(ctx, current.textMatrix);
|
6102 |
+
ctx.translate(current.x, current.y);
|
6103 |
+
ctx.scale(textHScale, fontDirection);
|
6104 |
+
|
6105 |
+
for (i = 0; i < glyphsLength; ++i) {
|
6106 |
+
glyph = glyphs[i];
|
6107 |
+
|
6108 |
+
if ((0, _util.isNum)(glyph)) {
|
6109 |
+
spacingLength = spacingDir * glyph * fontSize / 1000;
|
6110 |
+
this.ctx.translate(spacingLength, 0);
|
6111 |
+
current.x += spacingLength * textHScale;
|
6112 |
+
continue;
|
6113 |
+
}
|
6114 |
+
|
6115 |
+
const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
|
6116 |
+
const operatorList = font.charProcOperatorList[glyph.operatorListId];
|
6117 |
+
|
6118 |
+
if (!operatorList) {
|
6119 |
+
(0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
|
6120 |
+
continue;
|
6121 |
+
}
|
6122 |
+
|
6123 |
+
if (this.contentVisible) {
|
6124 |
+
this.processingType3 = glyph;
|
6125 |
+
this.save();
|
6126 |
+
ctx.scale(fontSize, fontSize);
|
6127 |
+
ctx.transform.apply(ctx, fontMatrix);
|
6128 |
+
this.executeOperatorList(operatorList);
|
6129 |
+
this.restore();
|
6130 |
+
}
|
6131 |
+
|
6132 |
+
const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
|
6133 |
+
|
6134 |
+
width = transformed[0] * fontSize + spacing;
|
6135 |
+
ctx.translate(width, 0);
|
6136 |
+
current.x += width * textHScale;
|
6137 |
+
}
|
6138 |
+
|
6139 |
+
ctx.restore();
|
6140 |
+
this.processingType3 = null;
|
6141 |
+
}
|
6142 |
+
|
6143 |
+
setCharWidth(xWidth, yWidth) {}
|
6144 |
+
|
6145 |
+
setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
|
6146 |
+
this.ctx.rect(llx, lly, urx - llx, ury - lly);
|
6147 |
+
this.clip();
|
6148 |
+
this.endPath();
|
6149 |
+
}
|
6150 |
+
|
6151 |
+
getColorN_Pattern(IR) {
|
6152 |
+
let pattern;
|
6153 |
+
|
6154 |
+
if (IR[0] === "TilingPattern") {
|
6155 |
+
const color = IR[1];
|
6156 |
+
const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
|
6157 |
+
const canvasGraphicsFactory = {
|
6158 |
+
createCanvasGraphics: ctx => {
|
6159 |
+
return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);
|
6160 |
+
}
|
6161 |
+
};
|
6162 |
+
pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
|
6163 |
+
} else {
|
6164 |
+
pattern = (0, _pattern_helper.getShadingPattern)(IR);
|
6165 |
+
}
|
6166 |
+
|
6167 |
+
return pattern;
|
6168 |
+
}
|
6169 |
+
|
6170 |
+
setStrokeColorN() {
|
6171 |
+
this.current.strokeColor = this.getColorN_Pattern(arguments);
|
6172 |
+
}
|
6173 |
+
|
6174 |
+
setFillColorN() {
|
6175 |
+
this.current.fillColor = this.getColorN_Pattern(arguments);
|
6176 |
+
this.current.patternFill = true;
|
6177 |
+
}
|
6178 |
+
|
6179 |
+
setStrokeRGBColor(r, g, b) {
|
6180 |
+
const color = _util.Util.makeHexColor(r, g, b);
|
6181 |
+
|
6182 |
+
this.ctx.strokeStyle = color;
|
6183 |
+
this.current.strokeColor = color;
|
6184 |
+
}
|
6185 |
+
|
6186 |
+
setFillRGBColor(r, g, b) {
|
6187 |
+
const color = _util.Util.makeHexColor(r, g, b);
|
6188 |
+
|
6189 |
+
this.ctx.fillStyle = color;
|
6190 |
+
this.current.fillColor = color;
|
6191 |
+
this.current.patternFill = false;
|
6192 |
+
}
|
6193 |
+
|
6194 |
+
shadingFill(patternIR) {
|
6195 |
+
if (!this.contentVisible) {
|
6196 |
+
return;
|
6197 |
+
}
|
6198 |
+
|
6199 |
+
const ctx = this.ctx;
|
6200 |
+
this.save();
|
6201 |
+
const pattern = (0, _pattern_helper.getShadingPattern)(patternIR);
|
6202 |
+
ctx.fillStyle = pattern.getPattern(ctx, this, true);
|
6203 |
+
const inv = ctx.mozCurrentTransformInverse;
|
6204 |
+
|
6205 |
+
if (inv) {
|
6206 |
+
const canvas = ctx.canvas;
|
6207 |
+
const width = canvas.width;
|
6208 |
+
const height = canvas.height;
|
6209 |
+
|
6210 |
+
const bl = _util.Util.applyTransform([0, 0], inv);
|
6211 |
+
|
6212 |
+
const br = _util.Util.applyTransform([0, height], inv);
|
6213 |
+
|
6214 |
+
const ul = _util.Util.applyTransform([width, 0], inv);
|
6215 |
+
|
6216 |
+
const ur = _util.Util.applyTransform([width, height], inv);
|
6217 |
+
|
6218 |
+
const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
|
6219 |
+
const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
|
6220 |
+
const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
|
6221 |
+
const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
|
6222 |
+
this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
|
6223 |
+
} else {
|
6224 |
+
this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
|
6225 |
+
}
|
6226 |
+
|
6227 |
+
this.restore();
|
6228 |
+
}
|
6229 |
+
|
6230 |
+
beginInlineImage() {
|
6231 |
+
(0, _util.unreachable)("Should not call beginInlineImage");
|
6232 |
+
}
|
6233 |
+
|
6234 |
+
beginImageData() {
|
6235 |
+
(0, _util.unreachable)("Should not call beginImageData");
|
6236 |
+
}
|
6237 |
+
|
6238 |
+
paintFormXObjectBegin(matrix, bbox) {
|
6239 |
+
if (!this.contentVisible) {
|
6240 |
+
return;
|
6241 |
+
}
|
6242 |
+
|
6243 |
+
this.save();
|
6244 |
+
this.baseTransformStack.push(this.baseTransform);
|
6245 |
+
|
6246 |
+
if (Array.isArray(matrix) && matrix.length === 6) {
|
6247 |
+
this.transform.apply(this, matrix);
|
6248 |
+
}
|
6249 |
+
|
6250 |
+
this.baseTransform = this.ctx.mozCurrentTransform;
|
6251 |
+
|
6252 |
+
if (bbox) {
|
6253 |
+
const width = bbox[2] - bbox[0];
|
6254 |
+
const height = bbox[3] - bbox[1];
|
6255 |
+
this.ctx.rect(bbox[0], bbox[1], width, height);
|
6256 |
+
this.clip();
|
6257 |
+
this.endPath();
|
6258 |
+
}
|
6259 |
+
}
|
6260 |
+
|
6261 |
+
paintFormXObjectEnd() {
|
6262 |
+
if (!this.contentVisible) {
|
6263 |
+
return;
|
6264 |
+
}
|
6265 |
+
|
6266 |
+
this.restore();
|
6267 |
+
this.baseTransform = this.baseTransformStack.pop();
|
6268 |
+
}
|
6269 |
+
|
6270 |
+
beginGroup(group) {
|
6271 |
+
if (!this.contentVisible) {
|
6272 |
+
return;
|
6273 |
+
}
|
6274 |
+
|
6275 |
+
this.save();
|
6276 |
+
const currentCtx = this.ctx;
|
6277 |
+
|
6278 |
+
if (!group.isolated) {
|
6279 |
+
(0, _util.info)("TODO: Support non-isolated groups.");
|
6280 |
+
}
|
6281 |
+
|
6282 |
+
if (group.knockout) {
|
6283 |
+
(0, _util.warn)("Knockout groups not supported.");
|
6284 |
+
}
|
6285 |
+
|
6286 |
+
const currentTransform = currentCtx.mozCurrentTransform;
|
6287 |
+
|
6288 |
+
if (group.matrix) {
|
6289 |
+
currentCtx.transform.apply(currentCtx, group.matrix);
|
6290 |
+
}
|
6291 |
+
|
6292 |
+
if (!group.bbox) {
|
6293 |
+
throw new Error("Bounding box is required.");
|
6294 |
+
}
|
6295 |
+
|
6296 |
+
let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
|
6297 |
+
|
6298 |
+
const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
|
6299 |
+
bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
|
6300 |
+
const offsetX = Math.floor(bounds[0]);
|
6301 |
+
const offsetY = Math.floor(bounds[1]);
|
6302 |
+
let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
|
6303 |
+
let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
|
6304 |
+
let scaleX = 1,
|
6305 |
+
scaleY = 1;
|
6306 |
+
|
6307 |
+
if (drawnWidth > MAX_GROUP_SIZE) {
|
6308 |
+
scaleX = drawnWidth / MAX_GROUP_SIZE;
|
6309 |
+
drawnWidth = MAX_GROUP_SIZE;
|
6310 |
+
}
|
6311 |
+
|
6312 |
+
if (drawnHeight > MAX_GROUP_SIZE) {
|
6313 |
+
scaleY = drawnHeight / MAX_GROUP_SIZE;
|
6314 |
+
drawnHeight = MAX_GROUP_SIZE;
|
6315 |
+
}
|
6316 |
+
|
6317 |
+
let cacheId = "groupAt" + this.groupLevel;
|
6318 |
+
|
6319 |
+
if (group.smask) {
|
6320 |
+
cacheId += "_smask_" + this.smaskCounter++ % 2;
|
6321 |
+
}
|
6322 |
+
|
6323 |
+
const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
|
6324 |
+
const groupCtx = scratchCanvas.context;
|
6325 |
+
groupCtx.scale(1 / scaleX, 1 / scaleY);
|
6326 |
+
groupCtx.translate(-offsetX, -offsetY);
|
6327 |
+
groupCtx.transform.apply(groupCtx, currentTransform);
|
6328 |
+
|
6329 |
+
if (group.smask) {
|
6330 |
+
this.smaskStack.push({
|
6331 |
+
canvas: scratchCanvas.canvas,
|
6332 |
+
context: groupCtx,
|
6333 |
+
offsetX,
|
6334 |
+
offsetY,
|
6335 |
+
scaleX,
|
6336 |
+
scaleY,
|
6337 |
+
subtype: group.smask.subtype,
|
6338 |
+
backdrop: group.smask.backdrop,
|
6339 |
+
transferMap: group.smask.transferMap || null,
|
6340 |
+
startTransformInverse: null
|
6341 |
+
});
|
6342 |
+
} else {
|
6343 |
+
currentCtx.setTransform(1, 0, 0, 1, 0, 0);
|
6344 |
+
currentCtx.translate(offsetX, offsetY);
|
6345 |
+
currentCtx.scale(scaleX, scaleY);
|
6346 |
+
}
|
6347 |
+
|
6348 |
+
copyCtxState(currentCtx, groupCtx);
|
6349 |
+
this.ctx = groupCtx;
|
6350 |
+
this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
|
6351 |
+
this.groupStack.push(currentCtx);
|
6352 |
+
this.groupLevel++;
|
6353 |
+
this.current.activeSMask = null;
|
6354 |
+
}
|
6355 |
+
|
6356 |
+
endGroup(group) {
|
6357 |
+
if (!this.contentVisible) {
|
6358 |
+
return;
|
6359 |
+
}
|
6360 |
+
|
6361 |
+
this.groupLevel--;
|
6362 |
+
const groupCtx = this.ctx;
|
6363 |
+
this.ctx = this.groupStack.pop();
|
6364 |
+
|
6365 |
+
if (this.ctx.imageSmoothingEnabled !== undefined) {
|
6366 |
+
this.ctx.imageSmoothingEnabled = false;
|
6367 |
+
} else {
|
6368 |
+
this.ctx.mozImageSmoothingEnabled = false;
|
6369 |
+
}
|
6370 |
+
|
6371 |
+
if (group.smask) {
|
6372 |
+
this.tempSMask = this.smaskStack.pop();
|
6373 |
+
} else {
|
6374 |
+
this.ctx.drawImage(groupCtx.canvas, 0, 0);
|
6375 |
+
}
|
6376 |
+
|
6377 |
+
this.restore();
|
6378 |
+
}
|
6379 |
+
|
6380 |
+
beginAnnotations() {
|
6381 |
+
this.save();
|
6382 |
+
|
6383 |
+
if (this.baseTransform) {
|
6384 |
+
this.ctx.setTransform.apply(this.ctx, this.baseTransform);
|
6385 |
+
}
|
6386 |
+
}
|
6387 |
+
|
6388 |
+
endAnnotations() {
|
6389 |
+
this.restore();
|
6390 |
+
}
|
6391 |
+
|
6392 |
+
beginAnnotation(rect, transform, matrix) {
|
6393 |
+
this.save();
|
6394 |
+
resetCtxToDefault(this.ctx);
|
6395 |
+
this.current = new CanvasExtraState();
|
6396 |
+
|
6397 |
+
if (Array.isArray(rect) && rect.length === 4) {
|
6398 |
+
const width = rect[2] - rect[0];
|
6399 |
+
const height = rect[3] - rect[1];
|
6400 |
+
this.ctx.rect(rect[0], rect[1], width, height);
|
6401 |
+
this.clip();
|
6402 |
+
this.endPath();
|
6403 |
+
}
|
6404 |
+
|
6405 |
+
this.transform.apply(this, transform);
|
6406 |
+
this.transform.apply(this, matrix);
|
6407 |
+
}
|
6408 |
+
|
6409 |
+
endAnnotation() {
|
6410 |
+
this.restore();
|
6411 |
+
}
|
6412 |
+
|
6413 |
+
paintImageMaskXObject(img) {
|
6414 |
+
if (!this.contentVisible) {
|
6415 |
+
return;
|
6416 |
+
}
|
6417 |
+
|
6418 |
+
const ctx = this.ctx;
|
6419 |
+
const width = img.width,
|
6420 |
+
height = img.height;
|
6421 |
+
const fillColor = this.current.fillColor;
|
6422 |
+
const isPatternFill = this.current.patternFill;
|
6423 |
+
const glyph = this.processingType3;
|
6424 |
+
|
6425 |
+
if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
|
6426 |
+
if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
|
6427 |
+
glyph.compiled = compileType3Glyph({
|
6428 |
+
data: img.data,
|
6429 |
+
width,
|
6430 |
+
height
|
6431 |
+
});
|
6432 |
+
} else {
|
6433 |
+
glyph.compiled = null;
|
6434 |
+
}
|
6435 |
+
}
|
6436 |
+
|
6437 |
+
if (glyph?.compiled) {
|
6438 |
+
glyph.compiled(ctx);
|
6439 |
+
return;
|
6440 |
+
}
|
6441 |
+
|
6442 |
+
const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
|
6443 |
+
const maskCtx = maskCanvas.context;
|
6444 |
+
maskCtx.save();
|
6445 |
+
putBinaryImageMask(maskCtx, img);
|
6446 |
+
maskCtx.globalCompositeOperation = "source-in";
|
6447 |
+
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
|
6448 |
+
maskCtx.fillRect(0, 0, width, height);
|
6449 |
+
maskCtx.restore();
|
6450 |
+
this.paintInlineImageXObject(maskCanvas.canvas);
|
6451 |
+
}
|
6452 |
+
|
6453 |
+
paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
|
6454 |
+
if (!this.contentVisible) {
|
6455 |
+
return;
|
6456 |
+
}
|
6457 |
+
|
6458 |
+
const width = imgData.width;
|
6459 |
+
const height = imgData.height;
|
6460 |
+
const fillColor = this.current.fillColor;
|
6461 |
+
const isPatternFill = this.current.patternFill;
|
6462 |
+
const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
|
6463 |
+
const maskCtx = maskCanvas.context;
|
6464 |
+
maskCtx.save();
|
6465 |
+
putBinaryImageMask(maskCtx, imgData);
|
6466 |
+
maskCtx.globalCompositeOperation = "source-in";
|
6467 |
+
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
|
6468 |
+
maskCtx.fillRect(0, 0, width, height);
|
6469 |
+
maskCtx.restore();
|
6470 |
+
const ctx = this.ctx;
|
6471 |
+
|
6472 |
+
for (let i = 0, ii = positions.length; i < ii; i += 2) {
|
6473 |
+
ctx.save();
|
6474 |
+
ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]);
|
6475 |
+
ctx.scale(1, -1);
|
6476 |
+
ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
|
6477 |
+
ctx.restore();
|
6478 |
+
}
|
6479 |
+
}
|
6480 |
+
|
6481 |
+
paintImageMaskXObjectGroup(images) {
|
6482 |
+
if (!this.contentVisible) {
|
6483 |
+
return;
|
6484 |
+
}
|
6485 |
+
|
6486 |
+
const ctx = this.ctx;
|
6487 |
+
const fillColor = this.current.fillColor;
|
6488 |
+
const isPatternFill = this.current.patternFill;
|
6489 |
+
|
6490 |
+
for (let i = 0, ii = images.length; i < ii; i++) {
|
6491 |
+
const image = images[i];
|
6492 |
+
const width = image.width,
|
6493 |
+
height = image.height;
|
6494 |
+
const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
|
6495 |
+
const maskCtx = maskCanvas.context;
|
6496 |
+
maskCtx.save();
|
6497 |
+
putBinaryImageMask(maskCtx, image);
|
6498 |
+
maskCtx.globalCompositeOperation = "source-in";
|
6499 |
+
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
|
6500 |
+
maskCtx.fillRect(0, 0, width, height);
|
6501 |
+
maskCtx.restore();
|
6502 |
+
ctx.save();
|
6503 |
+
ctx.transform.apply(ctx, image.transform);
|
6504 |
+
ctx.scale(1, -1);
|
6505 |
+
ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
|
6506 |
+
ctx.restore();
|
6507 |
+
}
|
6508 |
+
}
|
6509 |
+
|
6510 |
+
paintImageXObject(objId) {
|
6511 |
+
if (!this.contentVisible) {
|
6512 |
+
return;
|
6513 |
+
}
|
6514 |
+
|
6515 |
+
const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
|
6516 |
+
|
6517 |
+
if (!imgData) {
|
6518 |
+
(0, _util.warn)("Dependent image isn't ready yet");
|
6519 |
+
return;
|
6520 |
+
}
|
6521 |
+
|
6522 |
+
this.paintInlineImageXObject(imgData);
|
6523 |
+
}
|
6524 |
+
|
6525 |
+
paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
|
6526 |
+
if (!this.contentVisible) {
|
6527 |
+
return;
|
6528 |
+
}
|
6529 |
+
|
6530 |
+
const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
|
6531 |
+
|
6532 |
+
if (!imgData) {
|
6533 |
+
(0, _util.warn)("Dependent image isn't ready yet");
|
6534 |
+
return;
|
6535 |
+
}
|
6536 |
+
|
6537 |
+
const width = imgData.width;
|
6538 |
+
const height = imgData.height;
|
6539 |
+
const map = [];
|
6540 |
+
|
6541 |
+
for (let i = 0, ii = positions.length; i < ii; i += 2) {
|
6542 |
+
map.push({
|
6543 |
+
transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
|
6544 |
+
x: 0,
|
6545 |
+
y: 0,
|
6546 |
+
w: width,
|
6547 |
+
h: height
|
6548 |
+
});
|
6549 |
+
}
|
6550 |
+
|
6551 |
+
this.paintInlineImageXObjectGroup(imgData, map);
|
6552 |
+
}
|
6553 |
+
|
6554 |
+
paintInlineImageXObject(imgData) {
|
6555 |
+
if (!this.contentVisible) {
|
6556 |
+
return;
|
6557 |
+
}
|
6558 |
+
|
6559 |
+
const width = imgData.width;
|
6560 |
+
const height = imgData.height;
|
6561 |
+
const ctx = this.ctx;
|
6562 |
+
this.save();
|
6563 |
+
ctx.scale(1 / width, -1 / height);
|
6564 |
+
const currentTransform = ctx.mozCurrentTransformInverse;
|
6565 |
+
let widthScale = Math.max(Math.hypot(currentTransform[0], currentTransform[1]), 1);
|
6566 |
+
let heightScale = Math.max(Math.hypot(currentTransform[2], currentTransform[3]), 1);
|
6567 |
+
let imgToPaint, tmpCanvas, tmpCtx;
|
6568 |
+
|
6569 |
+
if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
|
6570 |
+
imgToPaint = imgData;
|
6571 |
+
} else {
|
6572 |
+
tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
|
6573 |
+
tmpCtx = tmpCanvas.context;
|
6574 |
+
putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
|
6575 |
+
imgToPaint = tmpCanvas.canvas;
|
6576 |
+
}
|
6577 |
+
|
6578 |
+
let paintWidth = width,
|
6579 |
+
paintHeight = height;
|
6580 |
+
let tmpCanvasId = "prescale1";
|
6581 |
+
|
6582 |
+
while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
|
6583 |
+
let newWidth = paintWidth,
|
6584 |
+
newHeight = paintHeight;
|
6585 |
+
|
6586 |
+
if (widthScale > 2 && paintWidth > 1) {
|
6587 |
+
newWidth = Math.ceil(paintWidth / 2);
|
6588 |
+
widthScale /= paintWidth / newWidth;
|
6589 |
+
}
|
6590 |
+
|
6591 |
+
if (heightScale > 2 && paintHeight > 1) {
|
6592 |
+
newHeight = Math.ceil(paintHeight / 2);
|
6593 |
+
heightScale /= paintHeight / newHeight;
|
6594 |
+
}
|
6595 |
+
|
6596 |
+
tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
|
6597 |
+
tmpCtx = tmpCanvas.context;
|
6598 |
+
tmpCtx.clearRect(0, 0, newWidth, newHeight);
|
6599 |
+
tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
|
6600 |
+
imgToPaint = tmpCanvas.canvas;
|
6601 |
+
paintWidth = newWidth;
|
6602 |
+
paintHeight = newHeight;
|
6603 |
+
tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
|
6604 |
+
}
|
6605 |
+
|
6606 |
+
ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
|
6607 |
+
|
6608 |
+
if (this.imageLayer) {
|
6609 |
+
const position = this.getCanvasPosition(0, -height);
|
6610 |
+
this.imageLayer.appendImage({
|
6611 |
+
imgData,
|
6612 |
+
left: position[0],
|
6613 |
+
top: position[1],
|
6614 |
+
width: width / currentTransform[0],
|
6615 |
+
height: height / currentTransform[3]
|
6616 |
+
});
|
6617 |
+
}
|
6618 |
+
|
6619 |
+
this.restore();
|
6620 |
+
}
|
6621 |
+
|
6622 |
+
paintInlineImageXObjectGroup(imgData, map) {
|
6623 |
+
if (!this.contentVisible) {
|
6624 |
+
return;
|
6625 |
+
}
|
6626 |
+
|
6627 |
+
const ctx = this.ctx;
|
6628 |
+
const w = imgData.width;
|
6629 |
+
const h = imgData.height;
|
6630 |
+
const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
|
6631 |
+
const tmpCtx = tmpCanvas.context;
|
6632 |
+
putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
|
6633 |
+
|
6634 |
+
for (let i = 0, ii = map.length; i < ii; i++) {
|
6635 |
+
const entry = map[i];
|
6636 |
+
ctx.save();
|
6637 |
+
ctx.transform.apply(ctx, entry.transform);
|
6638 |
+
ctx.scale(1, -1);
|
6639 |
+
ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
|
6640 |
+
|
6641 |
+
if (this.imageLayer) {
|
6642 |
+
const position = this.getCanvasPosition(entry.x, entry.y);
|
6643 |
+
this.imageLayer.appendImage({
|
6644 |
+
imgData,
|
6645 |
+
left: position[0],
|
6646 |
+
top: position[1],
|
6647 |
+
width: w,
|
6648 |
+
height: h
|
6649 |
+
});
|
6650 |
+
}
|
6651 |
+
|
6652 |
+
ctx.restore();
|
6653 |
+
}
|
6654 |
+
}
|
6655 |
+
|
6656 |
+
paintSolidColorImageMask() {
|
6657 |
+
if (!this.contentVisible) {
|
6658 |
+
return;
|
6659 |
+
}
|
6660 |
+
|
6661 |
+
this.ctx.fillRect(0, 0, 1, 1);
|
6662 |
+
}
|
6663 |
+
|
6664 |
+
markPoint(tag) {}
|
6665 |
+
|
6666 |
+
markPointProps(tag, properties) {}
|
6667 |
+
|
6668 |
+
beginMarkedContent(tag) {
|
6669 |
+
this.markedContentStack.push({
|
6670 |
+
visible: true
|
6671 |
+
});
|
6672 |
+
}
|
6673 |
+
|
6674 |
+
beginMarkedContentProps(tag, properties) {
|
6675 |
+
if (tag === "OC") {
|
6676 |
+
this.markedContentStack.push({
|
6677 |
+
visible: this.optionalContentConfig.isVisible(properties)
|
6678 |
+
});
|
6679 |
+
} else {
|
6680 |
+
this.markedContentStack.push({
|
6681 |
+
visible: true
|
6682 |
+
});
|
6683 |
+
}
|
6684 |
+
|
6685 |
+
this.contentVisible = this.isContentVisible();
|
6686 |
+
}
|
6687 |
+
|
6688 |
+
endMarkedContent() {
|
6689 |
+
this.markedContentStack.pop();
|
6690 |
+
this.contentVisible = this.isContentVisible();
|
6691 |
+
}
|
6692 |
+
|
6693 |
+
beginCompat() {}
|
6694 |
+
|
6695 |
+
endCompat() {}
|
6696 |
+
|
6697 |
+
consumePath() {
|
6698 |
+
const ctx = this.ctx;
|
6699 |
+
|
6700 |
+
if (this.pendingClip) {
|
6701 |
+
if (this.pendingClip === EO_CLIP) {
|
6702 |
+
ctx.clip("evenodd");
|
6703 |
+
} else {
|
6704 |
+
ctx.clip();
|
6705 |
+
}
|
6706 |
+
|
6707 |
+
this.pendingClip = null;
|
6708 |
+
}
|
6709 |
+
|
6710 |
+
ctx.beginPath();
|
6711 |
+
}
|
6712 |
+
|
6713 |
+
getSinglePixelWidth() {
|
6714 |
+
if (this._cachedGetSinglePixelWidth === null) {
|
6715 |
+
const m = this.ctx.mozCurrentTransform;
|
6716 |
+
const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
|
6717 |
+
const sqNorm1 = m[0] ** 2 + m[2] ** 2;
|
6718 |
+
const sqNorm2 = m[1] ** 2 + m[3] ** 2;
|
6719 |
+
const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;
|
6720 |
+
|
6721 |
+
if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
|
6722 |
+
this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
|
6723 |
+
} else if (absDet > Number.EPSILON) {
|
6724 |
+
this._cachedGetSinglePixelWidth = pixelHeight;
|
6725 |
+
} else {
|
6726 |
+
this._cachedGetSinglePixelWidth = 1;
|
6727 |
+
}
|
6728 |
+
}
|
6729 |
+
|
6730 |
+
return this._cachedGetSinglePixelWidth;
|
6731 |
+
}
|
6732 |
+
|
6733 |
+
getCanvasPosition(x, y) {
|
6734 |
+
const transform = this.ctx.mozCurrentTransform;
|
6735 |
+
return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
|
6736 |
+
}
|
6737 |
+
|
6738 |
+
isContentVisible() {
|
6739 |
+
for (let i = this.markedContentStack.length - 1; i >= 0; i--) {
|
6740 |
+
if (!this.markedContentStack[i].visible) {
|
6741 |
+
return false;
|
6742 |
+
}
|
6743 |
+
}
|
6744 |
+
|
6745 |
+
return true;
|
6746 |
+
}
|
6747 |
+
|
6748 |
+
}
|
6749 |
+
|
6750 |
+
for (const op in _util.OPS) {
|
6751 |
+
CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
|
6752 |
+
}
|
6753 |
+
|
6754 |
+
return CanvasGraphics;
|
6755 |
+
}();
|
6756 |
+
|
6757 |
+
exports.CanvasGraphics = CanvasGraphics;
|
6758 |
+
|
6759 |
+
/***/ }),
|
6760 |
+
/* 11 */
|
6761 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
6762 |
+
|
6763 |
+
|
6764 |
+
|
6765 |
+
Object.defineProperty(exports, "__esModule", ({
|
6766 |
+
value: true
|
6767 |
+
}));
|
6768 |
+
exports.getShadingPattern = getShadingPattern;
|
6769 |
+
exports.TilingPattern = void 0;
|
6770 |
+
|
6771 |
+
var _util = __w_pdfjs_require__(2);
|
6772 |
+
|
6773 |
+
let svgElement;
|
6774 |
+
|
6775 |
+
function createMatrix(matrix) {
|
6776 |
+
if (typeof DOMMatrix !== "undefined") {
|
6777 |
+
return new DOMMatrix(matrix);
|
6778 |
+
}
|
6779 |
+
|
6780 |
+
if (!svgElement) {
|
6781 |
+
svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
6782 |
+
}
|
6783 |
+
|
6784 |
+
return svgElement.createSVGMatrix(matrix);
|
6785 |
+
}
|
6786 |
+
|
6787 |
+
function applyBoundingBox(ctx, bbox) {
|
6788 |
+
if (!bbox || typeof Path2D === "undefined") {
|
6789 |
+
return;
|
6790 |
+
}
|
6791 |
+
|
6792 |
+
const width = bbox[2] - bbox[0];
|
6793 |
+
const height = bbox[3] - bbox[1];
|
6794 |
+
const region = new Path2D();
|
6795 |
+
region.rect(bbox[0], bbox[1], width, height);
|
6796 |
+
ctx.clip(region);
|
6797 |
+
}
|
6798 |
+
|
6799 |
+
class BaseShadingPattern {
|
6800 |
+
constructor() {
|
6801 |
+
if (this.constructor === BaseShadingPattern) {
|
6802 |
+
(0, _util.unreachable)("Cannot initialize BaseShadingPattern.");
|
6803 |
+
}
|
6804 |
+
}
|
6805 |
+
|
6806 |
+
getPattern() {
|
6807 |
+
(0, _util.unreachable)("Abstract method `getPattern` called.");
|
6808 |
+
}
|
6809 |
+
|
6810 |
+
}
|
6811 |
+
|
6812 |
+
class RadialAxialShadingPattern extends BaseShadingPattern {
|
6813 |
+
constructor(IR) {
|
6814 |
+
super();
|
6815 |
+
this._type = IR[1];
|
6816 |
+
this._bbox = IR[2];
|
6817 |
+
this._colorStops = IR[3];
|
6818 |
+
this._p0 = IR[4];
|
6819 |
+
this._p1 = IR[5];
|
6820 |
+
this._r0 = IR[6];
|
6821 |
+
this._r1 = IR[7];
|
6822 |
+
this._matrix = IR[8];
|
6823 |
+
}
|
6824 |
+
|
6825 |
+
getPattern(ctx, owner, shadingFill) {
|
6826 |
+
const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", ctx.canvas.width, ctx.canvas.height, true);
|
6827 |
+
const tmpCtx = tmpCanvas.context;
|
6828 |
+
tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
|
6829 |
+
tmpCtx.beginPath();
|
6830 |
+
tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
|
6831 |
+
|
6832 |
+
if (!shadingFill) {
|
6833 |
+
tmpCtx.setTransform.apply(tmpCtx, owner.baseTransform);
|
6834 |
+
|
6835 |
+
if (this._matrix) {
|
6836 |
+
tmpCtx.transform.apply(tmpCtx, this._matrix);
|
6837 |
+
}
|
6838 |
+
} else {
|
6839 |
+
tmpCtx.setTransform.apply(tmpCtx, ctx.mozCurrentTransform);
|
6840 |
+
}
|
6841 |
+
|
6842 |
+
applyBoundingBox(tmpCtx, this._bbox);
|
6843 |
+
let grad;
|
6844 |
+
|
6845 |
+
if (this._type === "axial") {
|
6846 |
+
grad = tmpCtx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);
|
6847 |
+
} else if (this._type === "radial") {
|
6848 |
+
grad = tmpCtx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);
|
6849 |
+
}
|
6850 |
+
|
6851 |
+
for (const colorStop of this._colorStops) {
|
6852 |
+
grad.addColorStop(colorStop[0], colorStop[1]);
|
6853 |
+
}
|
6854 |
+
|
6855 |
+
tmpCtx.fillStyle = grad;
|
6856 |
+
tmpCtx.fill();
|
6857 |
+
const pattern = ctx.createPattern(tmpCanvas.canvas, "repeat");
|
6858 |
+
pattern.setTransform(createMatrix(ctx.mozCurrentTransformInverse));
|
6859 |
+
return pattern;
|
6860 |
+
}
|
6861 |
+
|
6862 |
+
}
|
6863 |
+
|
6864 |
+
function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
|
6865 |
+
const coords = context.coords,
|
6866 |
+
colors = context.colors;
|
6867 |
+
const bytes = data.data,
|
6868 |
+
rowSize = data.width * 4;
|
6869 |
+
let tmp;
|
6870 |
+
|
6871 |
+
if (coords[p1 + 1] > coords[p2 + 1]) {
|
6872 |
+
tmp = p1;
|
6873 |
+
p1 = p2;
|
6874 |
+
p2 = tmp;
|
6875 |
+
tmp = c1;
|
6876 |
+
c1 = c2;
|
6877 |
+
c2 = tmp;
|
6878 |
+
}
|
6879 |
+
|
6880 |
+
if (coords[p2 + 1] > coords[p3 + 1]) {
|
6881 |
+
tmp = p2;
|
6882 |
+
p2 = p3;
|
6883 |
+
p3 = tmp;
|
6884 |
+
tmp = c2;
|
6885 |
+
c2 = c3;
|
6886 |
+
c3 = tmp;
|
6887 |
+
}
|
6888 |
+
|
6889 |
+
if (coords[p1 + 1] > coords[p2 + 1]) {
|
6890 |
+
tmp = p1;
|
6891 |
+
p1 = p2;
|
6892 |
+
p2 = tmp;
|
6893 |
+
tmp = c1;
|
6894 |
+
c1 = c2;
|
6895 |
+
c2 = tmp;
|
6896 |
+
}
|
6897 |
+
|
6898 |
+
const x1 = (coords[p1] + context.offsetX) * context.scaleX;
|
6899 |
+
const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
|
6900 |
+
const x2 = (coords[p2] + context.offsetX) * context.scaleX;
|
6901 |
+
const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
|
6902 |
+
const x3 = (coords[p3] + context.offsetX) * context.scaleX;
|
6903 |
+
const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
|
6904 |
+
|
6905 |
+
if (y1 >= y3) {
|
6906 |
+
return;
|
6907 |
+
}
|
6908 |
+
|
6909 |
+
const c1r = colors[c1],
|
6910 |
+
c1g = colors[c1 + 1],
|
6911 |
+
c1b = colors[c1 + 2];
|
6912 |
+
const c2r = colors[c2],
|
6913 |
+
c2g = colors[c2 + 1],
|
6914 |
+
c2b = colors[c2 + 2];
|
6915 |
+
const c3r = colors[c3],
|
6916 |
+
c3g = colors[c3 + 1],
|
6917 |
+
c3b = colors[c3 + 2];
|
6918 |
+
const minY = Math.round(y1),
|
6919 |
+
maxY = Math.round(y3);
|
6920 |
+
let xa, car, cag, cab;
|
6921 |
+
let xb, cbr, cbg, cbb;
|
6922 |
+
|
6923 |
+
for (let y = minY; y <= maxY; y++) {
|
6924 |
+
if (y < y2) {
|
6925 |
+
let k;
|
6926 |
+
|
6927 |
+
if (y < y1) {
|
6928 |
+
k = 0;
|
6929 |
+
} else if (y1 === y2) {
|
6930 |
+
k = 1;
|
6931 |
+
} else {
|
6932 |
+
k = (y1 - y) / (y1 - y2);
|
6933 |
+
}
|
6934 |
+
|
6935 |
+
xa = x1 - (x1 - x2) * k;
|
6936 |
+
car = c1r - (c1r - c2r) * k;
|
6937 |
+
cag = c1g - (c1g - c2g) * k;
|
6938 |
+
cab = c1b - (c1b - c2b) * k;
|
6939 |
+
} else {
|
6940 |
+
let k;
|
6941 |
+
|
6942 |
+
if (y > y3) {
|
6943 |
+
k = 1;
|
6944 |
+
} else if (y2 === y3) {
|
6945 |
+
k = 0;
|
6946 |
+
} else {
|
6947 |
+
k = (y2 - y) / (y2 - y3);
|
6948 |
+
}
|
6949 |
+
|
6950 |
+
xa = x2 - (x2 - x3) * k;
|
6951 |
+
car = c2r - (c2r - c3r) * k;
|
6952 |
+
cag = c2g - (c2g - c3g) * k;
|
6953 |
+
cab = c2b - (c2b - c3b) * k;
|
6954 |
+
}
|
6955 |
+
|
6956 |
+
let k;
|
6957 |
+
|
6958 |
+
if (y < y1) {
|
6959 |
+
k = 0;
|
6960 |
+
} else if (y > y3) {
|
6961 |
+
k = 1;
|
6962 |
+
} else {
|
6963 |
+
k = (y1 - y) / (y1 - y3);
|
6964 |
+
}
|
6965 |
+
|
6966 |
+
xb = x1 - (x1 - x3) * k;
|
6967 |
+
cbr = c1r - (c1r - c3r) * k;
|
6968 |
+
cbg = c1g - (c1g - c3g) * k;
|
6969 |
+
cbb = c1b - (c1b - c3b) * k;
|
6970 |
+
const x1_ = Math.round(Math.min(xa, xb));
|
6971 |
+
const x2_ = Math.round(Math.max(xa, xb));
|
6972 |
+
let j = rowSize * y + x1_ * 4;
|
6973 |
+
|
6974 |
+
for (let x = x1_; x <= x2_; x++) {
|
6975 |
+
k = (xa - x) / (xa - xb);
|
6976 |
+
|
6977 |
+
if (k < 0) {
|
6978 |
+
k = 0;
|
6979 |
+
} else if (k > 1) {
|
6980 |
+
k = 1;
|
6981 |
+
}
|
6982 |
+
|
6983 |
+
bytes[j++] = car - (car - cbr) * k | 0;
|
6984 |
+
bytes[j++] = cag - (cag - cbg) * k | 0;
|
6985 |
+
bytes[j++] = cab - (cab - cbb) * k | 0;
|
6986 |
+
bytes[j++] = 255;
|
6987 |
+
}
|
6988 |
+
}
|
6989 |
+
}
|
6990 |
+
|
6991 |
+
function drawFigure(data, figure, context) {
|
6992 |
+
const ps = figure.coords;
|
6993 |
+
const cs = figure.colors;
|
6994 |
+
let i, ii;
|
6995 |
+
|
6996 |
+
switch (figure.type) {
|
6997 |
+
case "lattice":
|
6998 |
+
const verticesPerRow = figure.verticesPerRow;
|
6999 |
+
const rows = Math.floor(ps.length / verticesPerRow) - 1;
|
7000 |
+
const cols = verticesPerRow - 1;
|
7001 |
+
|
7002 |
+
for (i = 0; i < rows; i++) {
|
7003 |
+
let q = i * verticesPerRow;
|
7004 |
+
|
7005 |
+
for (let j = 0; j < cols; j++, q++) {
|
7006 |
+
drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
|
7007 |
+
drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
|
7008 |
+
}
|
7009 |
+
}
|
7010 |
+
|
7011 |
+
break;
|
7012 |
+
|
7013 |
+
case "triangles":
|
7014 |
+
for (i = 0, ii = ps.length; i < ii; i += 3) {
|
7015 |
+
drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
|
7016 |
+
}
|
7017 |
+
|
7018 |
+
break;
|
7019 |
+
|
7020 |
+
default:
|
7021 |
+
throw new Error("illegal figure");
|
7022 |
+
}
|
7023 |
+
}
|
7024 |
+
|
7025 |
+
class MeshShadingPattern extends BaseShadingPattern {
|
7026 |
+
constructor(IR) {
|
7027 |
+
super();
|
7028 |
+
this._coords = IR[2];
|
7029 |
+
this._colors = IR[3];
|
7030 |
+
this._figures = IR[4];
|
7031 |
+
this._bounds = IR[5];
|
7032 |
+
this._matrix = IR[6];
|
7033 |
+
this._bbox = IR[7];
|
7034 |
+
this._background = IR[8];
|
7035 |
+
}
|
7036 |
+
|
7037 |
+
_createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {
|
7038 |
+
const EXPECTED_SCALE = 1.1;
|
7039 |
+
const MAX_PATTERN_SIZE = 3000;
|
7040 |
+
const BORDER_SIZE = 2;
|
7041 |
+
const offsetX = Math.floor(this._bounds[0]);
|
7042 |
+
const offsetY = Math.floor(this._bounds[1]);
|
7043 |
+
const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;
|
7044 |
+
const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;
|
7045 |
+
const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
|
7046 |
+
const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
|
7047 |
+
const scaleX = boundsWidth / width;
|
7048 |
+
const scaleY = boundsHeight / height;
|
7049 |
+
const context = {
|
7050 |
+
coords: this._coords,
|
7051 |
+
colors: this._colors,
|
7052 |
+
offsetX: -offsetX,
|
7053 |
+
offsetY: -offsetY,
|
7054 |
+
scaleX: 1 / scaleX,
|
7055 |
+
scaleY: 1 / scaleY
|
7056 |
+
};
|
7057 |
+
const paddedWidth = width + BORDER_SIZE * 2;
|
7058 |
+
const paddedHeight = height + BORDER_SIZE * 2;
|
7059 |
+
const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
|
7060 |
+
const tmpCtx = tmpCanvas.context;
|
7061 |
+
const data = tmpCtx.createImageData(width, height);
|
7062 |
+
|
7063 |
+
if (backgroundColor) {
|
7064 |
+
const bytes = data.data;
|
7065 |
+
|
7066 |
+
for (let i = 0, ii = bytes.length; i < ii; i += 4) {
|
7067 |
+
bytes[i] = backgroundColor[0];
|
7068 |
+
bytes[i + 1] = backgroundColor[1];
|
7069 |
+
bytes[i + 2] = backgroundColor[2];
|
7070 |
+
bytes[i + 3] = 255;
|
7071 |
+
}
|
7072 |
+
}
|
7073 |
+
|
7074 |
+
for (const figure of this._figures) {
|
7075 |
+
drawFigure(data, figure, context);
|
7076 |
+
}
|
7077 |
+
|
7078 |
+
tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
|
7079 |
+
const canvas = tmpCanvas.canvas;
|
7080 |
+
return {
|
7081 |
+
canvas,
|
7082 |
+
offsetX: offsetX - BORDER_SIZE * scaleX,
|
7083 |
+
offsetY: offsetY - BORDER_SIZE * scaleY,
|
7084 |
+
scaleX,
|
7085 |
+
scaleY
|
7086 |
+
};
|
7087 |
+
}
|
7088 |
+
|
7089 |
+
getPattern(ctx, owner, shadingFill) {
|
7090 |
+
applyBoundingBox(ctx, this._bbox);
|
7091 |
+
let scale;
|
7092 |
+
|
7093 |
+
if (shadingFill) {
|
7094 |
+
scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
|
7095 |
+
} else {
|
7096 |
+
scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
|
7097 |
+
|
7098 |
+
if (this._matrix) {
|
7099 |
+
const matrixScale = _util.Util.singularValueDecompose2dScale(this._matrix);
|
7100 |
+
|
7101 |
+
scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
|
7102 |
+
}
|
7103 |
+
}
|
7104 |
+
|
7105 |
+
const temporaryPatternCanvas = this._createMeshCanvas(scale, shadingFill ? null : this._background, owner.cachedCanvases);
|
7106 |
+
|
7107 |
+
if (!shadingFill) {
|
7108 |
+
ctx.setTransform.apply(ctx, owner.baseTransform);
|
7109 |
+
|
7110 |
+
if (this._matrix) {
|
7111 |
+
ctx.transform.apply(ctx, this._matrix);
|
7112 |
+
}
|
7113 |
+
}
|
7114 |
+
|
7115 |
+
ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
|
7116 |
+
ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
|
7117 |
+
return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat");
|
7118 |
+
}
|
7119 |
+
|
7120 |
+
}
|
7121 |
+
|
7122 |
+
class DummyShadingPattern extends BaseShadingPattern {
|
7123 |
+
getPattern() {
|
7124 |
+
return "hotpink";
|
7125 |
+
}
|
7126 |
+
|
7127 |
+
}
|
7128 |
+
|
7129 |
+
function getShadingPattern(IR) {
|
7130 |
+
switch (IR[0]) {
|
7131 |
+
case "RadialAxial":
|
7132 |
+
return new RadialAxialShadingPattern(IR);
|
7133 |
+
|
7134 |
+
case "Mesh":
|
7135 |
+
return new MeshShadingPattern(IR);
|
7136 |
+
|
7137 |
+
case "Dummy":
|
7138 |
+
return new DummyShadingPattern();
|
7139 |
+
}
|
7140 |
+
|
7141 |
+
throw new Error(`Unknown IR type: ${IR[0]}`);
|
7142 |
+
}
|
7143 |
+
|
7144 |
+
const PaintType = {
|
7145 |
+
COLORED: 1,
|
7146 |
+
UNCOLORED: 2
|
7147 |
+
};
|
7148 |
+
|
7149 |
+
class TilingPattern {
|
7150 |
+
static get MAX_PATTERN_SIZE() {
|
7151 |
+
return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000);
|
7152 |
+
}
|
7153 |
+
|
7154 |
+
constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
|
7155 |
+
this.operatorList = IR[2];
|
7156 |
+
this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
|
7157 |
+
this.bbox = IR[4];
|
7158 |
+
this.xstep = IR[5];
|
7159 |
+
this.ystep = IR[6];
|
7160 |
+
this.paintType = IR[7];
|
7161 |
+
this.tilingType = IR[8];
|
7162 |
+
this.color = color;
|
7163 |
+
this.ctx = ctx;
|
7164 |
+
this.canvasGraphicsFactory = canvasGraphicsFactory;
|
7165 |
+
this.baseTransform = baseTransform;
|
7166 |
+
}
|
7167 |
+
|
7168 |
+
createPatternCanvas(owner) {
|
7169 |
+
const operatorList = this.operatorList;
|
7170 |
+
const bbox = this.bbox;
|
7171 |
+
const xstep = this.xstep;
|
7172 |
+
const ystep = this.ystep;
|
7173 |
+
const paintType = this.paintType;
|
7174 |
+
const tilingType = this.tilingType;
|
7175 |
+
const color = this.color;
|
7176 |
+
const canvasGraphicsFactory = this.canvasGraphicsFactory;
|
7177 |
+
(0, _util.info)("TilingType: " + tilingType);
|
7178 |
+
const x0 = bbox[0],
|
7179 |
+
y0 = bbox[1],
|
7180 |
+
x1 = bbox[2],
|
7181 |
+
y1 = bbox[3];
|
7182 |
+
|
7183 |
+
const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
|
7184 |
+
|
7185 |
+
const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
|
7186 |
+
|
7187 |
+
const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
|
7188 |
+
const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
|
7189 |
+
const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
|
7190 |
+
const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
|
7191 |
+
const tmpCtx = tmpCanvas.context;
|
7192 |
+
const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
|
7193 |
+
graphics.groupLevel = owner.groupLevel;
|
7194 |
+
this.setFillAndStrokeStyleToContext(graphics, paintType, color);
|
7195 |
+
graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
|
7196 |
+
this.clipBbox(graphics, bbox, x0, y0, x1, y1);
|
7197 |
+
graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();
|
7198 |
+
graphics.executeOperatorList(operatorList);
|
7199 |
+
graphics.endDrawing();
|
7200 |
+
return {
|
7201 |
+
canvas: tmpCanvas.canvas,
|
7202 |
+
scaleX: dimx.scale,
|
7203 |
+
scaleY: dimy.scale
|
7204 |
+
};
|
7205 |
+
}
|
7206 |
+
|
7207 |
+
getSizeAndScale(step, realOutputSize, scale) {
|
7208 |
+
step = Math.abs(step);
|
7209 |
+
const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);
|
7210 |
+
let size = Math.ceil(step * scale);
|
7211 |
+
|
7212 |
+
if (size >= maxSize) {
|
7213 |
+
size = maxSize;
|
7214 |
+
} else {
|
7215 |
+
scale = size / step;
|
7216 |
+
}
|
7217 |
+
|
7218 |
+
return {
|
7219 |
+
scale,
|
7220 |
+
size
|
7221 |
+
};
|
7222 |
+
}
|
7223 |
+
|
7224 |
+
clipBbox(graphics, bbox, x0, y0, x1, y1) {
|
7225 |
+
if (Array.isArray(bbox) && bbox.length === 4) {
|
7226 |
+
const bboxWidth = x1 - x0;
|
7227 |
+
const bboxHeight = y1 - y0;
|
7228 |
+
graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
|
7229 |
+
graphics.clip();
|
7230 |
+
graphics.endPath();
|
7231 |
+
}
|
7232 |
+
}
|
7233 |
+
|
7234 |
+
setFillAndStrokeStyleToContext(graphics, paintType, color) {
|
7235 |
+
const context = graphics.ctx,
|
7236 |
+
current = graphics.current;
|
7237 |
+
|
7238 |
+
switch (paintType) {
|
7239 |
+
case PaintType.COLORED:
|
7240 |
+
const ctx = this.ctx;
|
7241 |
+
context.fillStyle = ctx.fillStyle;
|
7242 |
+
context.strokeStyle = ctx.strokeStyle;
|
7243 |
+
current.fillColor = ctx.fillStyle;
|
7244 |
+
current.strokeColor = ctx.strokeStyle;
|
7245 |
+
break;
|
7246 |
+
|
7247 |
+
case PaintType.UNCOLORED:
|
7248 |
+
const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);
|
7249 |
+
|
7250 |
+
context.fillStyle = cssColor;
|
7251 |
+
context.strokeStyle = cssColor;
|
7252 |
+
current.fillColor = cssColor;
|
7253 |
+
current.strokeColor = cssColor;
|
7254 |
+
break;
|
7255 |
+
|
7256 |
+
default:
|
7257 |
+
throw new _util.FormatError(`Unsupported paint type: ${paintType}`);
|
7258 |
+
}
|
7259 |
+
}
|
7260 |
+
|
7261 |
+
getPattern(ctx, owner, shadingFill) {
|
7262 |
+
ctx = this.ctx;
|
7263 |
+
let matrix = ctx.mozCurrentTransformInverse;
|
7264 |
+
|
7265 |
+
if (!shadingFill) {
|
7266 |
+
matrix = _util.Util.transform(matrix, owner.baseTransform);
|
7267 |
+
|
7268 |
+
if (this.matrix) {
|
7269 |
+
matrix = _util.Util.transform(matrix, this.matrix);
|
7270 |
+
}
|
7271 |
+
}
|
7272 |
+
|
7273 |
+
const temporaryPatternCanvas = this.createPatternCanvas(owner);
|
7274 |
+
let domMatrix = createMatrix(matrix);
|
7275 |
+
domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);
|
7276 |
+
const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat");
|
7277 |
+
pattern.setTransform(domMatrix);
|
7278 |
+
return pattern;
|
7279 |
+
}
|
7280 |
+
|
7281 |
+
}
|
7282 |
+
|
7283 |
+
exports.TilingPattern = TilingPattern;
|
7284 |
+
|
7285 |
+
/***/ }),
|
7286 |
+
/* 12 */
|
7287 |
+
/***/ ((__unused_webpack_module, exports) => {
|
7288 |
+
|
7289 |
+
|
7290 |
+
|
7291 |
+
Object.defineProperty(exports, "__esModule", ({
|
7292 |
+
value: true
|
7293 |
+
}));
|
7294 |
+
exports.GlobalWorkerOptions = void 0;
|
7295 |
+
const GlobalWorkerOptions = Object.create(null);
|
7296 |
+
exports.GlobalWorkerOptions = GlobalWorkerOptions;
|
7297 |
+
GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
|
7298 |
+
GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc;
|
7299 |
+
|
7300 |
+
/***/ }),
|
7301 |
+
/* 13 */
|
7302 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
7303 |
+
|
7304 |
+
|
7305 |
+
|
7306 |
+
Object.defineProperty(exports, "__esModule", ({
|
7307 |
+
value: true
|
7308 |
+
}));
|
7309 |
+
exports.MessageHandler = void 0;
|
7310 |
+
|
7311 |
+
var _util = __w_pdfjs_require__(2);
|
7312 |
+
|
7313 |
+
const CallbackKind = {
|
7314 |
+
UNKNOWN: 0,
|
7315 |
+
DATA: 1,
|
7316 |
+
ERROR: 2
|
7317 |
+
};
|
7318 |
+
const StreamKind = {
|
7319 |
+
UNKNOWN: 0,
|
7320 |
+
CANCEL: 1,
|
7321 |
+
CANCEL_COMPLETE: 2,
|
7322 |
+
CLOSE: 3,
|
7323 |
+
ENQUEUE: 4,
|
7324 |
+
ERROR: 5,
|
7325 |
+
PULL: 6,
|
7326 |
+
PULL_COMPLETE: 7,
|
7327 |
+
START_COMPLETE: 8
|
7328 |
+
};
|
7329 |
+
|
7330 |
+
function wrapReason(reason) {
|
7331 |
+
if (typeof reason !== "object" || reason === null) {
|
7332 |
+
return reason;
|
7333 |
+
}
|
7334 |
+
|
7335 |
+
switch (reason.name) {
|
7336 |
+
case "AbortException":
|
7337 |
+
return new _util.AbortException(reason.message);
|
7338 |
+
|
7339 |
+
case "MissingPDFException":
|
7340 |
+
return new _util.MissingPDFException(reason.message);
|
7341 |
+
|
7342 |
+
case "UnexpectedResponseException":
|
7343 |
+
return new _util.UnexpectedResponseException(reason.message, reason.status);
|
7344 |
+
|
7345 |
+
case "UnknownErrorException":
|
7346 |
+
return new _util.UnknownErrorException(reason.message, reason.details);
|
7347 |
+
|
7348 |
+
default:
|
7349 |
+
return new _util.UnknownErrorException(reason.message, reason.toString());
|
7350 |
+
}
|
7351 |
+
}
|
7352 |
+
|
7353 |
+
class MessageHandler {
|
7354 |
+
constructor(sourceName, targetName, comObj) {
|
7355 |
+
this.sourceName = sourceName;
|
7356 |
+
this.targetName = targetName;
|
7357 |
+
this.comObj = comObj;
|
7358 |
+
this.callbackId = 1;
|
7359 |
+
this.streamId = 1;
|
7360 |
+
this.postMessageTransfers = true;
|
7361 |
+
this.streamSinks = Object.create(null);
|
7362 |
+
this.streamControllers = Object.create(null);
|
7363 |
+
this.callbackCapabilities = Object.create(null);
|
7364 |
+
this.actionHandler = Object.create(null);
|
7365 |
+
|
7366 |
+
this._onComObjOnMessage = event => {
|
7367 |
+
const data = event.data;
|
7368 |
+
|
7369 |
+
if (data.targetName !== this.sourceName) {
|
7370 |
+
return;
|
7371 |
+
}
|
7372 |
+
|
7373 |
+
if (data.stream) {
|
7374 |
+
this._processStreamMessage(data);
|
7375 |
+
|
7376 |
+
return;
|
7377 |
+
}
|
7378 |
+
|
7379 |
+
if (data.callback) {
|
7380 |
+
const callbackId = data.callbackId;
|
7381 |
+
const capability = this.callbackCapabilities[callbackId];
|
7382 |
+
|
7383 |
+
if (!capability) {
|
7384 |
+
throw new Error(`Cannot resolve callback ${callbackId}`);
|
7385 |
+
}
|
7386 |
+
|
7387 |
+
delete this.callbackCapabilities[callbackId];
|
7388 |
+
|
7389 |
+
if (data.callback === CallbackKind.DATA) {
|
7390 |
+
capability.resolve(data.data);
|
7391 |
+
} else if (data.callback === CallbackKind.ERROR) {
|
7392 |
+
capability.reject(wrapReason(data.reason));
|
7393 |
+
} else {
|
7394 |
+
throw new Error("Unexpected callback case");
|
7395 |
+
}
|
7396 |
+
|
7397 |
+
return;
|
7398 |
+
}
|
7399 |
+
|
7400 |
+
const action = this.actionHandler[data.action];
|
7401 |
+
|
7402 |
+
if (!action) {
|
7403 |
+
throw new Error(`Unknown action from worker: ${data.action}`);
|
7404 |
+
}
|
7405 |
+
|
7406 |
+
if (data.callbackId) {
|
7407 |
+
const cbSourceName = this.sourceName;
|
7408 |
+
const cbTargetName = data.sourceName;
|
7409 |
+
new Promise(function (resolve) {
|
7410 |
+
resolve(action(data.data));
|
7411 |
+
}).then(function (result) {
|
7412 |
+
comObj.postMessage({
|
7413 |
+
sourceName: cbSourceName,
|
7414 |
+
targetName: cbTargetName,
|
7415 |
+
callback: CallbackKind.DATA,
|
7416 |
+
callbackId: data.callbackId,
|
7417 |
+
data: result
|
7418 |
+
});
|
7419 |
+
}, function (reason) {
|
7420 |
+
comObj.postMessage({
|
7421 |
+
sourceName: cbSourceName,
|
7422 |
+
targetName: cbTargetName,
|
7423 |
+
callback: CallbackKind.ERROR,
|
7424 |
+
callbackId: data.callbackId,
|
7425 |
+
reason: wrapReason(reason)
|
7426 |
+
});
|
7427 |
+
});
|
7428 |
+
return;
|
7429 |
+
}
|
7430 |
+
|
7431 |
+
if (data.streamId) {
|
7432 |
+
this._createStreamSink(data);
|
7433 |
+
|
7434 |
+
return;
|
7435 |
+
}
|
7436 |
+
|
7437 |
+
action(data.data);
|
7438 |
+
};
|
7439 |
+
|
7440 |
+
comObj.addEventListener("message", this._onComObjOnMessage);
|
7441 |
+
}
|
7442 |
+
|
7443 |
+
on(actionName, handler) {
|
7444 |
+
const ah = this.actionHandler;
|
7445 |
+
|
7446 |
+
if (ah[actionName]) {
|
7447 |
+
throw new Error(`There is already an actionName called "${actionName}"`);
|
7448 |
+
}
|
7449 |
+
|
7450 |
+
ah[actionName] = handler;
|
7451 |
+
}
|
7452 |
+
|
7453 |
+
send(actionName, data, transfers) {
|
7454 |
+
this._postMessage({
|
7455 |
+
sourceName: this.sourceName,
|
7456 |
+
targetName: this.targetName,
|
7457 |
+
action: actionName,
|
7458 |
+
data
|
7459 |
+
}, transfers);
|
7460 |
+
}
|
7461 |
+
|
7462 |
+
sendWithPromise(actionName, data, transfers) {
|
7463 |
+
const callbackId = this.callbackId++;
|
7464 |
+
const capability = (0, _util.createPromiseCapability)();
|
7465 |
+
this.callbackCapabilities[callbackId] = capability;
|
7466 |
+
|
7467 |
+
try {
|
7468 |
+
this._postMessage({
|
7469 |
+
sourceName: this.sourceName,
|
7470 |
+
targetName: this.targetName,
|
7471 |
+
action: actionName,
|
7472 |
+
callbackId,
|
7473 |
+
data
|
7474 |
+
}, transfers);
|
7475 |
+
} catch (ex) {
|
7476 |
+
capability.reject(ex);
|
7477 |
+
}
|
7478 |
+
|
7479 |
+
return capability.promise;
|
7480 |
+
}
|
7481 |
+
|
7482 |
+
sendWithStream(actionName, data, queueingStrategy, transfers) {
|
7483 |
+
const streamId = this.streamId++;
|
7484 |
+
const sourceName = this.sourceName;
|
7485 |
+
const targetName = this.targetName;
|
7486 |
+
const comObj = this.comObj;
|
7487 |
+
return new ReadableStream({
|
7488 |
+
start: controller => {
|
7489 |
+
const startCapability = (0, _util.createPromiseCapability)();
|
7490 |
+
this.streamControllers[streamId] = {
|
7491 |
+
controller,
|
7492 |
+
startCall: startCapability,
|
7493 |
+
pullCall: null,
|
7494 |
+
cancelCall: null,
|
7495 |
+
isClosed: false
|
7496 |
+
};
|
7497 |
+
|
7498 |
+
this._postMessage({
|
7499 |
+
sourceName,
|
7500 |
+
targetName,
|
7501 |
+
action: actionName,
|
7502 |
+
streamId,
|
7503 |
+
data,
|
7504 |
+
desiredSize: controller.desiredSize
|
7505 |
+
}, transfers);
|
7506 |
+
|
7507 |
+
return startCapability.promise;
|
7508 |
+
},
|
7509 |
+
pull: controller => {
|
7510 |
+
const pullCapability = (0, _util.createPromiseCapability)();
|
7511 |
+
this.streamControllers[streamId].pullCall = pullCapability;
|
7512 |
+
comObj.postMessage({
|
7513 |
+
sourceName,
|
7514 |
+
targetName,
|
7515 |
+
stream: StreamKind.PULL,
|
7516 |
+
streamId,
|
7517 |
+
desiredSize: controller.desiredSize
|
7518 |
+
});
|
7519 |
+
return pullCapability.promise;
|
7520 |
+
},
|
7521 |
+
cancel: reason => {
|
7522 |
+
(0, _util.assert)(reason instanceof Error, "cancel must have a valid reason");
|
7523 |
+
const cancelCapability = (0, _util.createPromiseCapability)();
|
7524 |
+
this.streamControllers[streamId].cancelCall = cancelCapability;
|
7525 |
+
this.streamControllers[streamId].isClosed = true;
|
7526 |
+
comObj.postMessage({
|
7527 |
+
sourceName,
|
7528 |
+
targetName,
|
7529 |
+
stream: StreamKind.CANCEL,
|
7530 |
+
streamId,
|
7531 |
+
reason: wrapReason(reason)
|
7532 |
+
});
|
7533 |
+
return cancelCapability.promise;
|
7534 |
+
}
|
7535 |
+
}, queueingStrategy);
|
7536 |
+
}
|
7537 |
+
|
7538 |
+
_createStreamSink(data) {
|
7539 |
+
const self = this;
|
7540 |
+
const action = this.actionHandler[data.action];
|
7541 |
+
const streamId = data.streamId;
|
7542 |
+
const sourceName = this.sourceName;
|
7543 |
+
const targetName = data.sourceName;
|
7544 |
+
const comObj = this.comObj;
|
7545 |
+
const streamSink = {
|
7546 |
+
enqueue(chunk, size = 1, transfers) {
|
7547 |
+
if (this.isCancelled) {
|
7548 |
+
return;
|
7549 |
+
}
|
7550 |
+
|
7551 |
+
const lastDesiredSize = this.desiredSize;
|
7552 |
+
this.desiredSize -= size;
|
7553 |
+
|
7554 |
+
if (lastDesiredSize > 0 && this.desiredSize <= 0) {
|
7555 |
+
this.sinkCapability = (0, _util.createPromiseCapability)();
|
7556 |
+
this.ready = this.sinkCapability.promise;
|
7557 |
+
}
|
7558 |
+
|
7559 |
+
self._postMessage({
|
7560 |
+
sourceName,
|
7561 |
+
targetName,
|
7562 |
+
stream: StreamKind.ENQUEUE,
|
7563 |
+
streamId,
|
7564 |
+
chunk
|
7565 |
+
}, transfers);
|
7566 |
+
},
|
7567 |
+
|
7568 |
+
close() {
|
7569 |
+
if (this.isCancelled) {
|
7570 |
+
return;
|
7571 |
+
}
|
7572 |
+
|
7573 |
+
this.isCancelled = true;
|
7574 |
+
comObj.postMessage({
|
7575 |
+
sourceName,
|
7576 |
+
targetName,
|
7577 |
+
stream: StreamKind.CLOSE,
|
7578 |
+
streamId
|
7579 |
+
});
|
7580 |
+
delete self.streamSinks[streamId];
|
7581 |
+
},
|
7582 |
+
|
7583 |
+
error(reason) {
|
7584 |
+
(0, _util.assert)(reason instanceof Error, "error must have a valid reason");
|
7585 |
+
|
7586 |
+
if (this.isCancelled) {
|
7587 |
+
return;
|
7588 |
+
}
|
7589 |
+
|
7590 |
+
this.isCancelled = true;
|
7591 |
+
comObj.postMessage({
|
7592 |
+
sourceName,
|
7593 |
+
targetName,
|
7594 |
+
stream: StreamKind.ERROR,
|
7595 |
+
streamId,
|
7596 |
+
reason: wrapReason(reason)
|
7597 |
+
});
|
7598 |
+
},
|
7599 |
+
|
7600 |
+
sinkCapability: (0, _util.createPromiseCapability)(),
|
7601 |
+
onPull: null,
|
7602 |
+
onCancel: null,
|
7603 |
+
isCancelled: false,
|
7604 |
+
desiredSize: data.desiredSize,
|
7605 |
+
ready: null
|
7606 |
+
};
|
7607 |
+
streamSink.sinkCapability.resolve();
|
7608 |
+
streamSink.ready = streamSink.sinkCapability.promise;
|
7609 |
+
this.streamSinks[streamId] = streamSink;
|
7610 |
+
new Promise(function (resolve) {
|
7611 |
+
resolve(action(data.data, streamSink));
|
7612 |
+
}).then(function () {
|
7613 |
+
comObj.postMessage({
|
7614 |
+
sourceName,
|
7615 |
+
targetName,
|
7616 |
+
stream: StreamKind.START_COMPLETE,
|
7617 |
+
streamId,
|
7618 |
+
success: true
|
7619 |
+
});
|
7620 |
+
}, function (reason) {
|
7621 |
+
comObj.postMessage({
|
7622 |
+
sourceName,
|
7623 |
+
targetName,
|
7624 |
+
stream: StreamKind.START_COMPLETE,
|
7625 |
+
streamId,
|
7626 |
+
reason: wrapReason(reason)
|
7627 |
+
});
|
7628 |
+
});
|
7629 |
+
}
|
7630 |
+
|
7631 |
+
_processStreamMessage(data) {
|
7632 |
+
const streamId = data.streamId;
|
7633 |
+
const sourceName = this.sourceName;
|
7634 |
+
const targetName = data.sourceName;
|
7635 |
+
const comObj = this.comObj;
|
7636 |
+
|
7637 |
+
switch (data.stream) {
|
7638 |
+
case StreamKind.START_COMPLETE:
|
7639 |
+
if (data.success) {
|
7640 |
+
this.streamControllers[streamId].startCall.resolve();
|
7641 |
+
} else {
|
7642 |
+
this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));
|
7643 |
+
}
|
7644 |
+
|
7645 |
+
break;
|
7646 |
+
|
7647 |
+
case StreamKind.PULL_COMPLETE:
|
7648 |
+
if (data.success) {
|
7649 |
+
this.streamControllers[streamId].pullCall.resolve();
|
7650 |
+
} else {
|
7651 |
+
this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));
|
7652 |
+
}
|
7653 |
+
|
7654 |
+
break;
|
7655 |
+
|
7656 |
+
case StreamKind.PULL:
|
7657 |
+
if (!this.streamSinks[streamId]) {
|
7658 |
+
comObj.postMessage({
|
7659 |
+
sourceName,
|
7660 |
+
targetName,
|
7661 |
+
stream: StreamKind.PULL_COMPLETE,
|
7662 |
+
streamId,
|
7663 |
+
success: true
|
7664 |
+
});
|
7665 |
+
break;
|
7666 |
+
}
|
7667 |
+
|
7668 |
+
if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {
|
7669 |
+
this.streamSinks[streamId].sinkCapability.resolve();
|
7670 |
+
}
|
7671 |
+
|
7672 |
+
this.streamSinks[streamId].desiredSize = data.desiredSize;
|
7673 |
+
const {
|
7674 |
+
onPull
|
7675 |
+
} = this.streamSinks[data.streamId];
|
7676 |
+
new Promise(function (resolve) {
|
7677 |
+
resolve(onPull && onPull());
|
7678 |
+
}).then(function () {
|
7679 |
+
comObj.postMessage({
|
7680 |
+
sourceName,
|
7681 |
+
targetName,
|
7682 |
+
stream: StreamKind.PULL_COMPLETE,
|
7683 |
+
streamId,
|
7684 |
+
success: true
|
7685 |
+
});
|
7686 |
+
}, function (reason) {
|
7687 |
+
comObj.postMessage({
|
7688 |
+
sourceName,
|
7689 |
+
targetName,
|
7690 |
+
stream: StreamKind.PULL_COMPLETE,
|
7691 |
+
streamId,
|
7692 |
+
reason: wrapReason(reason)
|
7693 |
+
});
|
7694 |
+
});
|
7695 |
+
break;
|
7696 |
+
|
7697 |
+
case StreamKind.ENQUEUE:
|
7698 |
+
(0, _util.assert)(this.streamControllers[streamId], "enqueue should have stream controller");
|
7699 |
+
|
7700 |
+
if (this.streamControllers[streamId].isClosed) {
|
7701 |
+
break;
|
7702 |
+
}
|
7703 |
+
|
7704 |
+
this.streamControllers[streamId].controller.enqueue(data.chunk);
|
7705 |
+
break;
|
7706 |
+
|
7707 |
+
case StreamKind.CLOSE:
|
7708 |
+
(0, _util.assert)(this.streamControllers[streamId], "close should have stream controller");
|
7709 |
+
|
7710 |
+
if (this.streamControllers[streamId].isClosed) {
|
7711 |
+
break;
|
7712 |
+
}
|
7713 |
+
|
7714 |
+
this.streamControllers[streamId].isClosed = true;
|
7715 |
+
this.streamControllers[streamId].controller.close();
|
7716 |
+
|
7717 |
+
this._deleteStreamController(streamId);
|
7718 |
+
|
7719 |
+
break;
|
7720 |
+
|
7721 |
+
case StreamKind.ERROR:
|
7722 |
+
(0, _util.assert)(this.streamControllers[streamId], "error should have stream controller");
|
7723 |
+
this.streamControllers[streamId].controller.error(wrapReason(data.reason));
|
7724 |
+
|
7725 |
+
this._deleteStreamController(streamId);
|
7726 |
+
|
7727 |
+
break;
|
7728 |
+
|
7729 |
+
case StreamKind.CANCEL_COMPLETE:
|
7730 |
+
if (data.success) {
|
7731 |
+
this.streamControllers[streamId].cancelCall.resolve();
|
7732 |
+
} else {
|
7733 |
+
this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));
|
7734 |
+
}
|
7735 |
+
|
7736 |
+
this._deleteStreamController(streamId);
|
7737 |
+
|
7738 |
+
break;
|
7739 |
+
|
7740 |
+
case StreamKind.CANCEL:
|
7741 |
+
if (!this.streamSinks[streamId]) {
|
7742 |
+
break;
|
7743 |
+
}
|
7744 |
+
|
7745 |
+
const {
|
7746 |
+
onCancel
|
7747 |
+
} = this.streamSinks[data.streamId];
|
7748 |
+
new Promise(function (resolve) {
|
7749 |
+
resolve(onCancel && onCancel(wrapReason(data.reason)));
|
7750 |
+
}).then(function () {
|
7751 |
+
comObj.postMessage({
|
7752 |
+
sourceName,
|
7753 |
+
targetName,
|
7754 |
+
stream: StreamKind.CANCEL_COMPLETE,
|
7755 |
+
streamId,
|
7756 |
+
success: true
|
7757 |
+
});
|
7758 |
+
}, function (reason) {
|
7759 |
+
comObj.postMessage({
|
7760 |
+
sourceName,
|
7761 |
+
targetName,
|
7762 |
+
stream: StreamKind.CANCEL_COMPLETE,
|
7763 |
+
streamId,
|
7764 |
+
reason: wrapReason(reason)
|
7765 |
+
});
|
7766 |
+
});
|
7767 |
+
this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));
|
7768 |
+
this.streamSinks[streamId].isCancelled = true;
|
7769 |
+
delete this.streamSinks[streamId];
|
7770 |
+
break;
|
7771 |
+
|
7772 |
+
default:
|
7773 |
+
throw new Error("Unexpected stream case");
|
7774 |
+
}
|
7775 |
+
}
|
7776 |
+
|
7777 |
+
async _deleteStreamController(streamId) {
|
7778 |
+
await Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {
|
7779 |
+
return capability && capability.promise;
|
7780 |
+
}));
|
7781 |
+
delete this.streamControllers[streamId];
|
7782 |
+
}
|
7783 |
+
|
7784 |
+
_postMessage(message, transfers) {
|
7785 |
+
if (transfers && this.postMessageTransfers) {
|
7786 |
+
this.comObj.postMessage(message, transfers);
|
7787 |
+
} else {
|
7788 |
+
this.comObj.postMessage(message);
|
7789 |
+
}
|
7790 |
+
}
|
7791 |
+
|
7792 |
+
destroy() {
|
7793 |
+
this.comObj.removeEventListener("message", this._onComObjOnMessage);
|
7794 |
+
}
|
7795 |
+
|
7796 |
+
}
|
7797 |
+
|
7798 |
+
exports.MessageHandler = MessageHandler;
|
7799 |
+
|
7800 |
+
/***/ }),
|
7801 |
+
/* 14 */
|
7802 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
7803 |
+
|
7804 |
+
|
7805 |
+
|
7806 |
+
Object.defineProperty(exports, "__esModule", ({
|
7807 |
+
value: true
|
7808 |
+
}));
|
7809 |
+
exports.Metadata = void 0;
|
7810 |
+
|
7811 |
+
var _util = __w_pdfjs_require__(2);
|
7812 |
+
|
7813 |
+
class Metadata {
|
7814 |
+
constructor({
|
7815 |
+
parsedData,
|
7816 |
+
rawData
|
7817 |
+
}) {
|
7818 |
+
this._metadataMap = parsedData;
|
7819 |
+
this._data = rawData;
|
7820 |
+
}
|
7821 |
+
|
7822 |
+
getRaw() {
|
7823 |
+
return this._data;
|
7824 |
+
}
|
7825 |
+
|
7826 |
+
get(name) {
|
7827 |
+
return this._metadataMap.get(name) ?? null;
|
7828 |
+
}
|
7829 |
+
|
7830 |
+
getAll() {
|
7831 |
+
return (0, _util.objectFromMap)(this._metadataMap);
|
7832 |
+
}
|
7833 |
+
|
7834 |
+
has(name) {
|
7835 |
+
return this._metadataMap.has(name);
|
7836 |
+
}
|
7837 |
+
|
7838 |
+
}
|
7839 |
+
|
7840 |
+
exports.Metadata = Metadata;
|
7841 |
+
|
7842 |
+
/***/ }),
|
7843 |
+
/* 15 */
|
7844 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
7845 |
+
|
7846 |
+
|
7847 |
+
|
7848 |
+
Object.defineProperty(exports, "__esModule", ({
|
7849 |
+
value: true
|
7850 |
+
}));
|
7851 |
+
exports.OptionalContentConfig = void 0;
|
7852 |
+
|
7853 |
+
var _util = __w_pdfjs_require__(2);
|
7854 |
+
|
7855 |
+
class OptionalContentGroup {
|
7856 |
+
constructor(name, intent) {
|
7857 |
+
this.visible = true;
|
7858 |
+
this.name = name;
|
7859 |
+
this.intent = intent;
|
7860 |
+
}
|
7861 |
+
|
7862 |
+
}
|
7863 |
+
|
7864 |
+
class OptionalContentConfig {
|
7865 |
+
constructor(data) {
|
7866 |
+
this.name = null;
|
7867 |
+
this.creator = null;
|
7868 |
+
this._order = null;
|
7869 |
+
this._groups = new Map();
|
7870 |
+
|
7871 |
+
if (data === null) {
|
7872 |
+
return;
|
7873 |
+
}
|
7874 |
+
|
7875 |
+
this.name = data.name;
|
7876 |
+
this.creator = data.creator;
|
7877 |
+
this._order = data.order;
|
7878 |
+
|
7879 |
+
for (const group of data.groups) {
|
7880 |
+
this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent));
|
7881 |
+
}
|
7882 |
+
|
7883 |
+
if (data.baseState === "OFF") {
|
7884 |
+
for (const group of this._groups) {
|
7885 |
+
group.visible = false;
|
7886 |
+
}
|
7887 |
+
}
|
7888 |
+
|
7889 |
+
for (const on of data.on) {
|
7890 |
+
this._groups.get(on).visible = true;
|
7891 |
+
}
|
7892 |
+
|
7893 |
+
for (const off of data.off) {
|
7894 |
+
this._groups.get(off).visible = false;
|
7895 |
+
}
|
7896 |
+
}
|
7897 |
+
|
7898 |
+
_evaluateVisibilityExpression(array) {
|
7899 |
+
const length = array.length;
|
7900 |
+
|
7901 |
+
if (length < 2) {
|
7902 |
+
return true;
|
7903 |
+
}
|
7904 |
+
|
7905 |
+
const operator = array[0];
|
7906 |
+
|
7907 |
+
for (let i = 1; i < length; i++) {
|
7908 |
+
const element = array[i];
|
7909 |
+
let state;
|
7910 |
+
|
7911 |
+
if (Array.isArray(element)) {
|
7912 |
+
state = this._evaluateVisibilityExpression(element);
|
7913 |
+
} else if (this._groups.has(element)) {
|
7914 |
+
state = this._groups.get(element).visible;
|
7915 |
+
} else {
|
7916 |
+
(0, _util.warn)(`Optional content group not found: ${element}`);
|
7917 |
+
return true;
|
7918 |
+
}
|
7919 |
+
|
7920 |
+
switch (operator) {
|
7921 |
+
case "And":
|
7922 |
+
if (!state) {
|
7923 |
+
return false;
|
7924 |
+
}
|
7925 |
+
|
7926 |
+
break;
|
7927 |
+
|
7928 |
+
case "Or":
|
7929 |
+
if (state) {
|
7930 |
+
return true;
|
7931 |
+
}
|
7932 |
+
|
7933 |
+
break;
|
7934 |
+
|
7935 |
+
case "Not":
|
7936 |
+
return !state;
|
7937 |
+
|
7938 |
+
default:
|
7939 |
+
return true;
|
7940 |
+
}
|
7941 |
+
}
|
7942 |
+
|
7943 |
+
return operator === "And";
|
7944 |
+
}
|
7945 |
+
|
7946 |
+
isVisible(group) {
|
7947 |
+
if (group.type === "OCG") {
|
7948 |
+
if (!this._groups.has(group.id)) {
|
7949 |
+
(0, _util.warn)(`Optional content group not found: ${group.id}`);
|
7950 |
+
return true;
|
7951 |
+
}
|
7952 |
+
|
7953 |
+
return this._groups.get(group.id).visible;
|
7954 |
+
} else if (group.type === "OCMD") {
|
7955 |
+
if (group.expression) {
|
7956 |
+
return this._evaluateVisibilityExpression(group.expression);
|
7957 |
+
}
|
7958 |
+
|
7959 |
+
if (!group.policy || group.policy === "AnyOn") {
|
7960 |
+
for (const id of group.ids) {
|
7961 |
+
if (!this._groups.has(id)) {
|
7962 |
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
7963 |
+
return true;
|
7964 |
+
}
|
7965 |
+
|
7966 |
+
if (this._groups.get(id).visible) {
|
7967 |
+
return true;
|
7968 |
+
}
|
7969 |
+
}
|
7970 |
+
|
7971 |
+
return false;
|
7972 |
+
} else if (group.policy === "AllOn") {
|
7973 |
+
for (const id of group.ids) {
|
7974 |
+
if (!this._groups.has(id)) {
|
7975 |
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
7976 |
+
return true;
|
7977 |
+
}
|
7978 |
+
|
7979 |
+
if (!this._groups.get(id).visible) {
|
7980 |
+
return false;
|
7981 |
+
}
|
7982 |
+
}
|
7983 |
+
|
7984 |
+
return true;
|
7985 |
+
} else if (group.policy === "AnyOff") {
|
7986 |
+
for (const id of group.ids) {
|
7987 |
+
if (!this._groups.has(id)) {
|
7988 |
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
7989 |
+
return true;
|
7990 |
+
}
|
7991 |
+
|
7992 |
+
if (!this._groups.get(id).visible) {
|
7993 |
+
return true;
|
7994 |
+
}
|
7995 |
+
}
|
7996 |
+
|
7997 |
+
return false;
|
7998 |
+
} else if (group.policy === "AllOff") {
|
7999 |
+
for (const id of group.ids) {
|
8000 |
+
if (!this._groups.has(id)) {
|
8001 |
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
8002 |
+
return true;
|
8003 |
+
}
|
8004 |
+
|
8005 |
+
if (this._groups.get(id).visible) {
|
8006 |
+
return false;
|
8007 |
+
}
|
8008 |
+
}
|
8009 |
+
|
8010 |
+
return true;
|
8011 |
+
}
|
8012 |
+
|
8013 |
+
(0, _util.warn)(`Unknown optional content policy ${group.policy}.`);
|
8014 |
+
return true;
|
8015 |
+
}
|
8016 |
+
|
8017 |
+
(0, _util.warn)(`Unknown group type ${group.type}.`);
|
8018 |
+
return true;
|
8019 |
+
}
|
8020 |
+
|
8021 |
+
setVisibility(id, visible = true) {
|
8022 |
+
if (!this._groups.has(id)) {
|
8023 |
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
8024 |
+
return;
|
8025 |
+
}
|
8026 |
+
|
8027 |
+
this._groups.get(id).visible = !!visible;
|
8028 |
+
}
|
8029 |
+
|
8030 |
+
getOrder() {
|
8031 |
+
if (!this._groups.size) {
|
8032 |
+
return null;
|
8033 |
+
}
|
8034 |
+
|
8035 |
+
if (this._order) {
|
8036 |
+
return this._order.slice();
|
8037 |
+
}
|
8038 |
+
|
8039 |
+
return Array.from(this._groups.keys());
|
8040 |
+
}
|
8041 |
+
|
8042 |
+
getGroups() {
|
8043 |
+
return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null;
|
8044 |
+
}
|
8045 |
+
|
8046 |
+
getGroup(id) {
|
8047 |
+
return this._groups.get(id) || null;
|
8048 |
+
}
|
8049 |
+
|
8050 |
+
}
|
8051 |
+
|
8052 |
+
exports.OptionalContentConfig = OptionalContentConfig;
|
8053 |
+
|
8054 |
+
/***/ }),
|
8055 |
+
/* 16 */
|
8056 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
8057 |
+
|
8058 |
+
|
8059 |
+
|
8060 |
+
Object.defineProperty(exports, "__esModule", ({
|
8061 |
+
value: true
|
8062 |
+
}));
|
8063 |
+
exports.PDFDataTransportStream = void 0;
|
8064 |
+
|
8065 |
+
var _util = __w_pdfjs_require__(2);
|
8066 |
+
|
8067 |
+
var _display_utils = __w_pdfjs_require__(1);
|
8068 |
+
|
8069 |
+
class PDFDataTransportStream {
|
8070 |
+
constructor(params, pdfDataRangeTransport) {
|
8071 |
+
(0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');
|
8072 |
+
this._queuedChunks = [];
|
8073 |
+
this._progressiveDone = params.progressiveDone || false;
|
8074 |
+
this._contentDispositionFilename = params.contentDispositionFilename || null;
|
8075 |
+
const initialData = params.initialData;
|
8076 |
+
|
8077 |
+
if (initialData?.length > 0) {
|
8078 |
+
const buffer = new Uint8Array(initialData).buffer;
|
8079 |
+
|
8080 |
+
this._queuedChunks.push(buffer);
|
8081 |
+
}
|
8082 |
+
|
8083 |
+
this._pdfDataRangeTransport = pdfDataRangeTransport;
|
8084 |
+
this._isStreamingSupported = !params.disableStream;
|
8085 |
+
this._isRangeSupported = !params.disableRange;
|
8086 |
+
this._contentLength = params.length;
|
8087 |
+
this._fullRequestReader = null;
|
8088 |
+
this._rangeReaders = [];
|
8089 |
+
|
8090 |
+
this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {
|
8091 |
+
this._onReceiveData({
|
8092 |
+
begin,
|
8093 |
+
chunk
|
8094 |
+
});
|
8095 |
+
});
|
8096 |
+
|
8097 |
+
this._pdfDataRangeTransport.addProgressListener((loaded, total) => {
|
8098 |
+
this._onProgress({
|
8099 |
+
loaded,
|
8100 |
+
total
|
8101 |
+
});
|
8102 |
+
});
|
8103 |
+
|
8104 |
+
this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {
|
8105 |
+
this._onReceiveData({
|
8106 |
+
chunk
|
8107 |
+
});
|
8108 |
+
});
|
8109 |
+
|
8110 |
+
this._pdfDataRangeTransport.addProgressiveDoneListener(() => {
|
8111 |
+
this._onProgressiveDone();
|
8112 |
+
});
|
8113 |
+
|
8114 |
+
this._pdfDataRangeTransport.transportReady();
|
8115 |
+
}
|
8116 |
+
|
8117 |
+
_onReceiveData(args) {
|
8118 |
+
const buffer = new Uint8Array(args.chunk).buffer;
|
8119 |
+
|
8120 |
+
if (args.begin === undefined) {
|
8121 |
+
if (this._fullRequestReader) {
|
8122 |
+
this._fullRequestReader._enqueue(buffer);
|
8123 |
+
} else {
|
8124 |
+
this._queuedChunks.push(buffer);
|
8125 |
+
}
|
8126 |
+
} else {
|
8127 |
+
const found = this._rangeReaders.some(function (rangeReader) {
|
8128 |
+
if (rangeReader._begin !== args.begin) {
|
8129 |
+
return false;
|
8130 |
+
}
|
8131 |
+
|
8132 |
+
rangeReader._enqueue(buffer);
|
8133 |
+
|
8134 |
+
return true;
|
8135 |
+
});
|
8136 |
+
|
8137 |
+
(0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.");
|
8138 |
+
}
|
8139 |
+
}
|
8140 |
+
|
8141 |
+
get _progressiveDataLength() {
|
8142 |
+
return this._fullRequestReader?._loaded ?? 0;
|
8143 |
+
}
|
8144 |
+
|
8145 |
+
_onProgress(evt) {
|
8146 |
+
if (evt.total === undefined) {
|
8147 |
+
const firstReader = this._rangeReaders[0];
|
8148 |
+
|
8149 |
+
if (firstReader?.onProgress) {
|
8150 |
+
firstReader.onProgress({
|
8151 |
+
loaded: evt.loaded
|
8152 |
+
});
|
8153 |
+
}
|
8154 |
+
} else {
|
8155 |
+
const fullReader = this._fullRequestReader;
|
8156 |
+
|
8157 |
+
if (fullReader?.onProgress) {
|
8158 |
+
fullReader.onProgress({
|
8159 |
+
loaded: evt.loaded,
|
8160 |
+
total: evt.total
|
8161 |
+
});
|
8162 |
+
}
|
8163 |
+
}
|
8164 |
+
}
|
8165 |
+
|
8166 |
+
_onProgressiveDone() {
|
8167 |
+
if (this._fullRequestReader) {
|
8168 |
+
this._fullRequestReader.progressiveDone();
|
8169 |
+
}
|
8170 |
+
|
8171 |
+
this._progressiveDone = true;
|
8172 |
+
}
|
8173 |
+
|
8174 |
+
_removeRangeReader(reader) {
|
8175 |
+
const i = this._rangeReaders.indexOf(reader);
|
8176 |
+
|
8177 |
+
if (i >= 0) {
|
8178 |
+
this._rangeReaders.splice(i, 1);
|
8179 |
+
}
|
8180 |
+
}
|
8181 |
+
|
8182 |
+
getFullReader() {
|
8183 |
+
(0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once.");
|
8184 |
+
const queuedChunks = this._queuedChunks;
|
8185 |
+
this._queuedChunks = null;
|
8186 |
+
return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);
|
8187 |
+
}
|
8188 |
+
|
8189 |
+
getRangeReader(begin, end) {
|
8190 |
+
if (end <= this._progressiveDataLength) {
|
8191 |
+
return null;
|
8192 |
+
}
|
8193 |
+
|
8194 |
+
const reader = new PDFDataTransportStreamRangeReader(this, begin, end);
|
8195 |
+
|
8196 |
+
this._pdfDataRangeTransport.requestDataRange(begin, end);
|
8197 |
+
|
8198 |
+
this._rangeReaders.push(reader);
|
8199 |
+
|
8200 |
+
return reader;
|
8201 |
+
}
|
8202 |
+
|
8203 |
+
cancelAllRequests(reason) {
|
8204 |
+
if (this._fullRequestReader) {
|
8205 |
+
this._fullRequestReader.cancel(reason);
|
8206 |
+
}
|
8207 |
+
|
8208 |
+
for (const reader of this._rangeReaders.slice(0)) {
|
8209 |
+
reader.cancel(reason);
|
8210 |
+
}
|
8211 |
+
|
8212 |
+
this._pdfDataRangeTransport.abort();
|
8213 |
+
}
|
8214 |
+
|
8215 |
+
}
|
8216 |
+
|
8217 |
+
exports.PDFDataTransportStream = PDFDataTransportStream;
|
8218 |
+
|
8219 |
+
class PDFDataTransportStreamReader {
|
8220 |
+
constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {
|
8221 |
+
this._stream = stream;
|
8222 |
+
this._done = progressiveDone || false;
|
8223 |
+
this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;
|
8224 |
+
this._queuedChunks = queuedChunks || [];
|
8225 |
+
this._loaded = 0;
|
8226 |
+
|
8227 |
+
for (const chunk of this._queuedChunks) {
|
8228 |
+
this._loaded += chunk.byteLength;
|
8229 |
+
}
|
8230 |
+
|
8231 |
+
this._requests = [];
|
8232 |
+
this._headersReady = Promise.resolve();
|
8233 |
+
stream._fullRequestReader = this;
|
8234 |
+
this.onProgress = null;
|
8235 |
+
}
|
8236 |
+
|
8237 |
+
_enqueue(chunk) {
|
8238 |
+
if (this._done) {
|
8239 |
+
return;
|
8240 |
+
}
|
8241 |
+
|
8242 |
+
if (this._requests.length > 0) {
|
8243 |
+
const requestCapability = this._requests.shift();
|
8244 |
+
|
8245 |
+
requestCapability.resolve({
|
8246 |
+
value: chunk,
|
8247 |
+
done: false
|
8248 |
+
});
|
8249 |
+
} else {
|
8250 |
+
this._queuedChunks.push(chunk);
|
8251 |
+
}
|
8252 |
+
|
8253 |
+
this._loaded += chunk.byteLength;
|
8254 |
+
}
|
8255 |
+
|
8256 |
+
get headersReady() {
|
8257 |
+
return this._headersReady;
|
8258 |
+
}
|
8259 |
+
|
8260 |
+
get filename() {
|
8261 |
+
return this._filename;
|
8262 |
+
}
|
8263 |
+
|
8264 |
+
get isRangeSupported() {
|
8265 |
+
return this._stream._isRangeSupported;
|
8266 |
+
}
|
8267 |
+
|
8268 |
+
get isStreamingSupported() {
|
8269 |
+
return this._stream._isStreamingSupported;
|
8270 |
+
}
|
8271 |
+
|
8272 |
+
get contentLength() {
|
8273 |
+
return this._stream._contentLength;
|
8274 |
+
}
|
8275 |
+
|
8276 |
+
async read() {
|
8277 |
+
if (this._queuedChunks.length > 0) {
|
8278 |
+
const chunk = this._queuedChunks.shift();
|
8279 |
+
|
8280 |
+
return {
|
8281 |
+
value: chunk,
|
8282 |
+
done: false
|
8283 |
+
};
|
8284 |
+
}
|
8285 |
+
|
8286 |
+
if (this._done) {
|
8287 |
+
return {
|
8288 |
+
value: undefined,
|
8289 |
+
done: true
|
8290 |
+
};
|
8291 |
+
}
|
8292 |
+
|
8293 |
+
const requestCapability = (0, _util.createPromiseCapability)();
|
8294 |
+
|
8295 |
+
this._requests.push(requestCapability);
|
8296 |
+
|
8297 |
+
return requestCapability.promise;
|
8298 |
+
}
|
8299 |
+
|
8300 |
+
cancel(reason) {
|
8301 |
+
this._done = true;
|
8302 |
+
|
8303 |
+
for (const requestCapability of this._requests) {
|
8304 |
+
requestCapability.resolve({
|
8305 |
+
value: undefined,
|
8306 |
+
done: true
|
8307 |
+
});
|
8308 |
+
}
|
8309 |
+
|
8310 |
+
this._requests.length = 0;
|
8311 |
+
}
|
8312 |
+
|
8313 |
+
progressiveDone() {
|
8314 |
+
if (this._done) {
|
8315 |
+
return;
|
8316 |
+
}
|
8317 |
+
|
8318 |
+
this._done = true;
|
8319 |
+
}
|
8320 |
+
|
8321 |
+
}
|
8322 |
+
|
8323 |
+
class PDFDataTransportStreamRangeReader {
|
8324 |
+
constructor(stream, begin, end) {
|
8325 |
+
this._stream = stream;
|
8326 |
+
this._begin = begin;
|
8327 |
+
this._end = end;
|
8328 |
+
this._queuedChunk = null;
|
8329 |
+
this._requests = [];
|
8330 |
+
this._done = false;
|
8331 |
+
this.onProgress = null;
|
8332 |
+
}
|
8333 |
+
|
8334 |
+
_enqueue(chunk) {
|
8335 |
+
if (this._done) {
|
8336 |
+
return;
|
8337 |
+
}
|
8338 |
+
|
8339 |
+
if (this._requests.length === 0) {
|
8340 |
+
this._queuedChunk = chunk;
|
8341 |
+
} else {
|
8342 |
+
const requestsCapability = this._requests.shift();
|
8343 |
+
|
8344 |
+
requestsCapability.resolve({
|
8345 |
+
value: chunk,
|
8346 |
+
done: false
|
8347 |
+
});
|
8348 |
+
|
8349 |
+
for (const requestCapability of this._requests) {
|
8350 |
+
requestCapability.resolve({
|
8351 |
+
value: undefined,
|
8352 |
+
done: true
|
8353 |
+
});
|
8354 |
+
}
|
8355 |
+
|
8356 |
+
this._requests.length = 0;
|
8357 |
+
}
|
8358 |
+
|
8359 |
+
this._done = true;
|
8360 |
+
|
8361 |
+
this._stream._removeRangeReader(this);
|
8362 |
+
}
|
8363 |
+
|
8364 |
+
get isStreamingSupported() {
|
8365 |
+
return false;
|
8366 |
+
}
|
8367 |
+
|
8368 |
+
async read() {
|
8369 |
+
if (this._queuedChunk) {
|
8370 |
+
const chunk = this._queuedChunk;
|
8371 |
+
this._queuedChunk = null;
|
8372 |
+
return {
|
8373 |
+
value: chunk,
|
8374 |
+
done: false
|
8375 |
+
};
|
8376 |
+
}
|
8377 |
+
|
8378 |
+
if (this._done) {
|
8379 |
+
return {
|
8380 |
+
value: undefined,
|
8381 |
+
done: true
|
8382 |
+
};
|
8383 |
+
}
|
8384 |
+
|
8385 |
+
const requestCapability = (0, _util.createPromiseCapability)();
|
8386 |
+
|
8387 |
+
this._requests.push(requestCapability);
|
8388 |
+
|
8389 |
+
return requestCapability.promise;
|
8390 |
+
}
|
8391 |
+
|
8392 |
+
cancel(reason) {
|
8393 |
+
this._done = true;
|
8394 |
+
|
8395 |
+
for (const requestCapability of this._requests) {
|
8396 |
+
requestCapability.resolve({
|
8397 |
+
value: undefined,
|
8398 |
+
done: true
|
8399 |
+
});
|
8400 |
+
}
|
8401 |
+
|
8402 |
+
this._requests.length = 0;
|
8403 |
+
|
8404 |
+
this._stream._removeRangeReader(this);
|
8405 |
+
}
|
8406 |
+
|
8407 |
+
}
|
8408 |
+
|
8409 |
+
/***/ }),
|
8410 |
+
/* 17 */
|
8411 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
8412 |
+
|
8413 |
+
|
8414 |
+
|
8415 |
+
Object.defineProperty(exports, "__esModule", ({
|
8416 |
+
value: true
|
8417 |
+
}));
|
8418 |
+
exports.AnnotationLayer = void 0;
|
8419 |
+
|
8420 |
+
var _display_utils = __w_pdfjs_require__(1);
|
8421 |
+
|
8422 |
+
var _util = __w_pdfjs_require__(2);
|
8423 |
+
|
8424 |
+
var _annotation_storage = __w_pdfjs_require__(8);
|
8425 |
+
|
8426 |
+
var _scripting_utils = __w_pdfjs_require__(18);
|
8427 |
+
|
8428 |
+
class AnnotationElementFactory {
|
8429 |
+
static create(parameters) {
|
8430 |
+
const subtype = parameters.data.annotationType;
|
8431 |
+
|
8432 |
+
switch (subtype) {
|
8433 |
+
case _util.AnnotationType.LINK:
|
8434 |
+
return new LinkAnnotationElement(parameters);
|
8435 |
+
|
8436 |
+
case _util.AnnotationType.TEXT:
|
8437 |
+
return new TextAnnotationElement(parameters);
|
8438 |
+
|
8439 |
+
case _util.AnnotationType.WIDGET:
|
8440 |
+
const fieldType = parameters.data.fieldType;
|
8441 |
+
|
8442 |
+
switch (fieldType) {
|
8443 |
+
case "Tx":
|
8444 |
+
return new TextWidgetAnnotationElement(parameters);
|
8445 |
+
|
8446 |
+
case "Btn":
|
8447 |
+
if (parameters.data.radioButton) {
|
8448 |
+
return new RadioButtonWidgetAnnotationElement(parameters);
|
8449 |
+
} else if (parameters.data.checkBox) {
|
8450 |
+
return new CheckboxWidgetAnnotationElement(parameters);
|
8451 |
+
}
|
8452 |
+
|
8453 |
+
return new PushButtonWidgetAnnotationElement(parameters);
|
8454 |
+
|
8455 |
+
case "Ch":
|
8456 |
+
return new ChoiceWidgetAnnotationElement(parameters);
|
8457 |
+
}
|
8458 |
+
|
8459 |
+
return new WidgetAnnotationElement(parameters);
|
8460 |
+
|
8461 |
+
case _util.AnnotationType.POPUP:
|
8462 |
+
return new PopupAnnotationElement(parameters);
|
8463 |
+
|
8464 |
+
case _util.AnnotationType.FREETEXT:
|
8465 |
+
return new FreeTextAnnotationElement(parameters);
|
8466 |
+
|
8467 |
+
case _util.AnnotationType.LINE:
|
8468 |
+
return new LineAnnotationElement(parameters);
|
8469 |
+
|
8470 |
+
case _util.AnnotationType.SQUARE:
|
8471 |
+
return new SquareAnnotationElement(parameters);
|
8472 |
+
|
8473 |
+
case _util.AnnotationType.CIRCLE:
|
8474 |
+
return new CircleAnnotationElement(parameters);
|
8475 |
+
|
8476 |
+
case _util.AnnotationType.POLYLINE:
|
8477 |
+
return new PolylineAnnotationElement(parameters);
|
8478 |
+
|
8479 |
+
case _util.AnnotationType.CARET:
|
8480 |
+
return new CaretAnnotationElement(parameters);
|
8481 |
+
|
8482 |
+
case _util.AnnotationType.INK:
|
8483 |
+
return new InkAnnotationElement(parameters);
|
8484 |
+
|
8485 |
+
case _util.AnnotationType.POLYGON:
|
8486 |
+
return new PolygonAnnotationElement(parameters);
|
8487 |
+
|
8488 |
+
case _util.AnnotationType.HIGHLIGHT:
|
8489 |
+
return new HighlightAnnotationElement(parameters);
|
8490 |
+
|
8491 |
+
case _util.AnnotationType.UNDERLINE:
|
8492 |
+
return new UnderlineAnnotationElement(parameters);
|
8493 |
+
|
8494 |
+
case _util.AnnotationType.SQUIGGLY:
|
8495 |
+
return new SquigglyAnnotationElement(parameters);
|
8496 |
+
|
8497 |
+
case _util.AnnotationType.STRIKEOUT:
|
8498 |
+
return new StrikeOutAnnotationElement(parameters);
|
8499 |
+
|
8500 |
+
case _util.AnnotationType.STAMP:
|
8501 |
+
return new StampAnnotationElement(parameters);
|
8502 |
+
|
8503 |
+
case _util.AnnotationType.FILEATTACHMENT:
|
8504 |
+
return new FileAttachmentAnnotationElement(parameters);
|
8505 |
+
|
8506 |
+
default:
|
8507 |
+
return new AnnotationElement(parameters);
|
8508 |
+
}
|
8509 |
+
}
|
8510 |
+
|
8511 |
+
}
|
8512 |
+
|
8513 |
+
class AnnotationElement {
|
8514 |
+
constructor(parameters, {
|
8515 |
+
isRenderable = false,
|
8516 |
+
ignoreBorder = false,
|
8517 |
+
createQuadrilaterals = false
|
8518 |
+
} = {}) {
|
8519 |
+
this.isRenderable = isRenderable;
|
8520 |
+
this.data = parameters.data;
|
8521 |
+
this.layer = parameters.layer;
|
8522 |
+
this.page = parameters.page;
|
8523 |
+
this.viewport = parameters.viewport;
|
8524 |
+
this.linkService = parameters.linkService;
|
8525 |
+
this.downloadManager = parameters.downloadManager;
|
8526 |
+
this.imageResourcesPath = parameters.imageResourcesPath;
|
8527 |
+
this.renderInteractiveForms = parameters.renderInteractiveForms;
|
8528 |
+
this.svgFactory = parameters.svgFactory;
|
8529 |
+
this.annotationStorage = parameters.annotationStorage;
|
8530 |
+
this.enableScripting = parameters.enableScripting;
|
8531 |
+
this.hasJSActions = parameters.hasJSActions;
|
8532 |
+
this._mouseState = parameters.mouseState;
|
8533 |
+
|
8534 |
+
if (isRenderable) {
|
8535 |
+
this.container = this._createContainer(ignoreBorder);
|
8536 |
+
}
|
8537 |
+
|
8538 |
+
if (createQuadrilaterals) {
|
8539 |
+
this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);
|
8540 |
+
}
|
8541 |
+
}
|
8542 |
+
|
8543 |
+
_createContainer(ignoreBorder = false) {
|
8544 |
+
const data = this.data,
|
8545 |
+
page = this.page,
|
8546 |
+
viewport = this.viewport;
|
8547 |
+
const container = document.createElement("section");
|
8548 |
+
let width = data.rect[2] - data.rect[0];
|
8549 |
+
let height = data.rect[3] - data.rect[1];
|
8550 |
+
container.setAttribute("data-annotation-id", data.id);
|
8551 |
+
|
8552 |
+
const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
|
8553 |
+
|
8554 |
+
container.style.transform = `matrix(${viewport.transform.join(",")})`;
|
8555 |
+
container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;
|
8556 |
+
|
8557 |
+
if (!ignoreBorder && data.borderStyle.width > 0) {
|
8558 |
+
container.style.borderWidth = `${data.borderStyle.width}px`;
|
8559 |
+
|
8560 |
+
if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
|
8561 |
+
width = width - 2 * data.borderStyle.width;
|
8562 |
+
height = height - 2 * data.borderStyle.width;
|
8563 |
+
}
|
8564 |
+
|
8565 |
+
const horizontalRadius = data.borderStyle.horizontalCornerRadius;
|
8566 |
+
const verticalRadius = data.borderStyle.verticalCornerRadius;
|
8567 |
+
|
8568 |
+
if (horizontalRadius > 0 || verticalRadius > 0) {
|
8569 |
+
const radius = `${horizontalRadius}px / ${verticalRadius}px`;
|
8570 |
+
container.style.borderRadius = radius;
|
8571 |
+
}
|
8572 |
+
|
8573 |
+
switch (data.borderStyle.style) {
|
8574 |
+
case _util.AnnotationBorderStyleType.SOLID:
|
8575 |
+
container.style.borderStyle = "solid";
|
8576 |
+
break;
|
8577 |
+
|
8578 |
+
case _util.AnnotationBorderStyleType.DASHED:
|
8579 |
+
container.style.borderStyle = "dashed";
|
8580 |
+
break;
|
8581 |
+
|
8582 |
+
case _util.AnnotationBorderStyleType.BEVELED:
|
8583 |
+
(0, _util.warn)("Unimplemented border style: beveled");
|
8584 |
+
break;
|
8585 |
+
|
8586 |
+
case _util.AnnotationBorderStyleType.INSET:
|
8587 |
+
(0, _util.warn)("Unimplemented border style: inset");
|
8588 |
+
break;
|
8589 |
+
|
8590 |
+
case _util.AnnotationBorderStyleType.UNDERLINE:
|
8591 |
+
container.style.borderBottomStyle = "solid";
|
8592 |
+
break;
|
8593 |
+
|
8594 |
+
default:
|
8595 |
+
break;
|
8596 |
+
}
|
8597 |
+
|
8598 |
+
if (data.color) {
|
8599 |
+
container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
|
8600 |
+
} else {
|
8601 |
+
container.style.borderWidth = 0;
|
8602 |
+
}
|
8603 |
+
}
|
8604 |
+
|
8605 |
+
container.style.left = `${rect[0]}px`;
|
8606 |
+
container.style.top = `${rect[1]}px`;
|
8607 |
+
container.style.width = `${width}px`;
|
8608 |
+
container.style.height = `${height}px`;
|
8609 |
+
return container;
|
8610 |
+
}
|
8611 |
+
|
8612 |
+
_createQuadrilaterals(ignoreBorder = false) {
|
8613 |
+
if (!this.data.quadPoints) {
|
8614 |
+
return null;
|
8615 |
+
}
|
8616 |
+
|
8617 |
+
const quadrilaterals = [];
|
8618 |
+
const savedRect = this.data.rect;
|
8619 |
+
|
8620 |
+
for (const quadPoint of this.data.quadPoints) {
|
8621 |
+
this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];
|
8622 |
+
quadrilaterals.push(this._createContainer(ignoreBorder));
|
8623 |
+
}
|
8624 |
+
|
8625 |
+
this.data.rect = savedRect;
|
8626 |
+
return quadrilaterals;
|
8627 |
+
}
|
8628 |
+
|
8629 |
+
_createPopup(trigger, data) {
|
8630 |
+
let container = this.container;
|
8631 |
+
|
8632 |
+
if (this.quadrilaterals) {
|
8633 |
+
trigger = trigger || this.quadrilaterals;
|
8634 |
+
container = this.quadrilaterals[0];
|
8635 |
+
}
|
8636 |
+
|
8637 |
+
if (!trigger) {
|
8638 |
+
trigger = document.createElement("div");
|
8639 |
+
trigger.style.height = container.style.height;
|
8640 |
+
trigger.style.width = container.style.width;
|
8641 |
+
container.appendChild(trigger);
|
8642 |
+
}
|
8643 |
+
|
8644 |
+
const popupElement = new PopupElement({
|
8645 |
+
container,
|
8646 |
+
trigger,
|
8647 |
+
color: data.color,
|
8648 |
+
title: data.title,
|
8649 |
+
modificationDate: data.modificationDate,
|
8650 |
+
contents: data.contents,
|
8651 |
+
hideWrapper: true
|
8652 |
+
});
|
8653 |
+
const popup = popupElement.render();
|
8654 |
+
popup.style.left = container.style.width;
|
8655 |
+
container.appendChild(popup);
|
8656 |
+
}
|
8657 |
+
|
8658 |
+
_renderQuadrilaterals(className) {
|
8659 |
+
for (const quadrilateral of this.quadrilaterals) {
|
8660 |
+
quadrilateral.className = className;
|
8661 |
+
}
|
8662 |
+
|
8663 |
+
return this.quadrilaterals;
|
8664 |
+
}
|
8665 |
+
|
8666 |
+
render() {
|
8667 |
+
(0, _util.unreachable)("Abstract method `AnnotationElement.render` called");
|
8668 |
+
}
|
8669 |
+
|
8670 |
+
}
|
8671 |
+
|
8672 |
+
class LinkAnnotationElement extends AnnotationElement {
|
8673 |
+
constructor(parameters) {
|
8674 |
+
const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"]));
|
8675 |
+
super(parameters, {
|
8676 |
+
isRenderable,
|
8677 |
+
createQuadrilaterals: true
|
8678 |
+
});
|
8679 |
+
}
|
8680 |
+
|
8681 |
+
render() {
|
8682 |
+
const {
|
8683 |
+
data,
|
8684 |
+
linkService
|
8685 |
+
} = this;
|
8686 |
+
const link = document.createElement("a");
|
8687 |
+
|
8688 |
+
if (data.url) {
|
8689 |
+
(0, _display_utils.addLinkAttributes)(link, {
|
8690 |
+
url: data.url,
|
8691 |
+
target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
|
8692 |
+
rel: linkService.externalLinkRel,
|
8693 |
+
enabled: linkService.externalLinkEnabled
|
8694 |
+
});
|
8695 |
+
} else if (data.action) {
|
8696 |
+
this._bindNamedAction(link, data.action);
|
8697 |
+
} else if (data.dest) {
|
8698 |
+
this._bindLink(link, data.dest);
|
8699 |
+
} else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) {
|
8700 |
+
this._bindJSAction(link, data);
|
8701 |
+
} else {
|
8702 |
+
this._bindLink(link, "");
|
8703 |
+
}
|
8704 |
+
|
8705 |
+
if (this.quadrilaterals) {
|
8706 |
+
return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => {
|
8707 |
+
const linkElement = index === 0 ? link : link.cloneNode();
|
8708 |
+
quadrilateral.appendChild(linkElement);
|
8709 |
+
return quadrilateral;
|
8710 |
+
});
|
8711 |
+
}
|
8712 |
+
|
8713 |
+
this.container.className = "linkAnnotation";
|
8714 |
+
this.container.appendChild(link);
|
8715 |
+
return this.container;
|
8716 |
+
}
|
8717 |
+
|
8718 |
+
_bindLink(link, destination) {
|
8719 |
+
link.href = this.linkService.getDestinationHash(destination);
|
8720 |
+
|
8721 |
+
link.onclick = () => {
|
8722 |
+
if (destination) {
|
8723 |
+
this.linkService.goToDestination(destination);
|
8724 |
+
}
|
8725 |
+
|
8726 |
+
return false;
|
8727 |
+
};
|
8728 |
+
|
8729 |
+
if (destination || destination === "") {
|
8730 |
+
link.className = "internalLink";
|
8731 |
+
}
|
8732 |
+
}
|
8733 |
+
|
8734 |
+
_bindNamedAction(link, action) {
|
8735 |
+
link.href = this.linkService.getAnchorUrl("");
|
8736 |
+
|
8737 |
+
link.onclick = () => {
|
8738 |
+
this.linkService.executeNamedAction(action);
|
8739 |
+
return false;
|
8740 |
+
};
|
8741 |
+
|
8742 |
+
link.className = "internalLink";
|
8743 |
+
}
|
8744 |
+
|
8745 |
+
_bindJSAction(link, data) {
|
8746 |
+
link.href = this.linkService.getAnchorUrl("");
|
8747 |
+
const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
|
8748 |
+
|
8749 |
+
for (const name of Object.keys(data.actions)) {
|
8750 |
+
const jsName = map.get(name);
|
8751 |
+
|
8752 |
+
if (!jsName) {
|
8753 |
+
continue;
|
8754 |
+
}
|
8755 |
+
|
8756 |
+
link[jsName] = () => {
|
8757 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
8758 |
+
source: this,
|
8759 |
+
detail: {
|
8760 |
+
id: data.id,
|
8761 |
+
name
|
8762 |
+
}
|
8763 |
+
});
|
8764 |
+
return false;
|
8765 |
+
};
|
8766 |
+
}
|
8767 |
+
|
8768 |
+
link.className = "internalLink";
|
8769 |
+
}
|
8770 |
+
|
8771 |
+
}
|
8772 |
+
|
8773 |
+
class TextAnnotationElement extends AnnotationElement {
|
8774 |
+
constructor(parameters) {
|
8775 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
8776 |
+
super(parameters, {
|
8777 |
+
isRenderable
|
8778 |
+
});
|
8779 |
+
}
|
8780 |
+
|
8781 |
+
render() {
|
8782 |
+
this.container.className = "textAnnotation";
|
8783 |
+
const image = document.createElement("img");
|
8784 |
+
image.style.height = this.container.style.height;
|
8785 |
+
image.style.width = this.container.style.width;
|
8786 |
+
image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg";
|
8787 |
+
image.alt = "[{{type}} Annotation]";
|
8788 |
+
image.dataset.l10nId = "text_annotation_type";
|
8789 |
+
image.dataset.l10nArgs = JSON.stringify({
|
8790 |
+
type: this.data.name
|
8791 |
+
});
|
8792 |
+
|
8793 |
+
if (!this.data.hasPopup) {
|
8794 |
+
this._createPopup(image, this.data);
|
8795 |
+
}
|
8796 |
+
|
8797 |
+
this.container.appendChild(image);
|
8798 |
+
return this.container;
|
8799 |
+
}
|
8800 |
+
|
8801 |
+
}
|
8802 |
+
|
8803 |
+
class WidgetAnnotationElement extends AnnotationElement {
|
8804 |
+
render() {
|
8805 |
+
if (this.data.alternativeText) {
|
8806 |
+
this.container.title = this.data.alternativeText;
|
8807 |
+
}
|
8808 |
+
|
8809 |
+
return this.container;
|
8810 |
+
}
|
8811 |
+
|
8812 |
+
_getKeyModifier(event) {
|
8813 |
+
return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && event.metaKey;
|
8814 |
+
}
|
8815 |
+
|
8816 |
+
_setEventListener(element, baseName, eventName, valueGetter) {
|
8817 |
+
if (baseName.includes("mouse")) {
|
8818 |
+
element.addEventListener(baseName, event => {
|
8819 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
8820 |
+
source: this,
|
8821 |
+
detail: {
|
8822 |
+
id: this.data.id,
|
8823 |
+
name: eventName,
|
8824 |
+
value: valueGetter(event),
|
8825 |
+
shift: event.shiftKey,
|
8826 |
+
modifier: this._getKeyModifier(event)
|
8827 |
+
}
|
8828 |
+
});
|
8829 |
+
});
|
8830 |
+
} else {
|
8831 |
+
element.addEventListener(baseName, event => {
|
8832 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
8833 |
+
source: this,
|
8834 |
+
detail: {
|
8835 |
+
id: this.data.id,
|
8836 |
+
name: eventName,
|
8837 |
+
value: event.target.checked
|
8838 |
+
}
|
8839 |
+
});
|
8840 |
+
});
|
8841 |
+
}
|
8842 |
+
}
|
8843 |
+
|
8844 |
+
_setEventListeners(element, names, getter) {
|
8845 |
+
for (const [baseName, eventName] of names) {
|
8846 |
+
if (eventName === "Action" || this.data.actions?.[eventName]) {
|
8847 |
+
this._setEventListener(element, baseName, eventName, getter);
|
8848 |
+
}
|
8849 |
+
}
|
8850 |
+
}
|
8851 |
+
|
8852 |
+
_dispatchEventFromSandbox(actions, jsEvent) {
|
8853 |
+
const setColor = (jsName, styleName, event) => {
|
8854 |
+
const color = event.detail[jsName];
|
8855 |
+
event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
|
8856 |
+
};
|
8857 |
+
|
8858 |
+
const commonActions = {
|
8859 |
+
display: event => {
|
8860 |
+
const hidden = event.detail.display % 2 === 1;
|
8861 |
+
event.target.style.visibility = hidden ? "hidden" : "visible";
|
8862 |
+
this.annotationStorage.setValue(this.data.id, {
|
8863 |
+
hidden,
|
8864 |
+
print: event.detail.display === 0 || event.detail.display === 3
|
8865 |
+
});
|
8866 |
+
},
|
8867 |
+
print: event => {
|
8868 |
+
this.annotationStorage.setValue(this.data.id, {
|
8869 |
+
print: event.detail.print
|
8870 |
+
});
|
8871 |
+
},
|
8872 |
+
hidden: event => {
|
8873 |
+
event.target.style.visibility = event.detail.hidden ? "hidden" : "visible";
|
8874 |
+
this.annotationStorage.setValue(this.data.id, {
|
8875 |
+
hidden: event.detail.hidden
|
8876 |
+
});
|
8877 |
+
},
|
8878 |
+
focus: event => {
|
8879 |
+
setTimeout(() => event.target.focus({
|
8880 |
+
preventScroll: false
|
8881 |
+
}), 0);
|
8882 |
+
},
|
8883 |
+
userName: event => {
|
8884 |
+
event.target.title = event.detail.userName;
|
8885 |
+
},
|
8886 |
+
readonly: event => {
|
8887 |
+
if (event.detail.readonly) {
|
8888 |
+
event.target.setAttribute("readonly", "");
|
8889 |
+
} else {
|
8890 |
+
event.target.removeAttribute("readonly");
|
8891 |
+
}
|
8892 |
+
},
|
8893 |
+
required: event => {
|
8894 |
+
if (event.detail.required) {
|
8895 |
+
event.target.setAttribute("required", "");
|
8896 |
+
} else {
|
8897 |
+
event.target.removeAttribute("required");
|
8898 |
+
}
|
8899 |
+
},
|
8900 |
+
bgColor: event => {
|
8901 |
+
setColor("bgColor", "backgroundColor", event);
|
8902 |
+
},
|
8903 |
+
fillColor: event => {
|
8904 |
+
setColor("fillColor", "backgroundColor", event);
|
8905 |
+
},
|
8906 |
+
fgColor: event => {
|
8907 |
+
setColor("fgColor", "color", event);
|
8908 |
+
},
|
8909 |
+
textColor: event => {
|
8910 |
+
setColor("textColor", "color", event);
|
8911 |
+
},
|
8912 |
+
borderColor: event => {
|
8913 |
+
setColor("borderColor", "borderColor", event);
|
8914 |
+
},
|
8915 |
+
strokeColor: event => {
|
8916 |
+
setColor("strokeColor", "borderColor", event);
|
8917 |
+
}
|
8918 |
+
};
|
8919 |
+
|
8920 |
+
for (const name of Object.keys(jsEvent.detail)) {
|
8921 |
+
const action = actions[name] || commonActions[name];
|
8922 |
+
|
8923 |
+
if (action) {
|
8924 |
+
action(jsEvent);
|
8925 |
+
}
|
8926 |
+
}
|
8927 |
+
}
|
8928 |
+
|
8929 |
+
}
|
8930 |
+
|
8931 |
+
class TextWidgetAnnotationElement extends WidgetAnnotationElement {
|
8932 |
+
constructor(parameters) {
|
8933 |
+
const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
|
8934 |
+
super(parameters, {
|
8935 |
+
isRenderable
|
8936 |
+
});
|
8937 |
+
}
|
8938 |
+
|
8939 |
+
setPropertyOnSiblings(base, key, value, keyInStorage) {
|
8940 |
+
const storage = this.annotationStorage;
|
8941 |
+
|
8942 |
+
for (const element of document.getElementsByName(base.name)) {
|
8943 |
+
if (element !== base) {
|
8944 |
+
element[key] = value;
|
8945 |
+
const data = Object.create(null);
|
8946 |
+
data[keyInStorage] = value;
|
8947 |
+
storage.setValue(element.getAttribute("id"), data);
|
8948 |
+
}
|
8949 |
+
}
|
8950 |
+
}
|
8951 |
+
|
8952 |
+
render() {
|
8953 |
+
const storage = this.annotationStorage;
|
8954 |
+
const id = this.data.id;
|
8955 |
+
this.container.className = "textWidgetAnnotation";
|
8956 |
+
let element = null;
|
8957 |
+
|
8958 |
+
if (this.renderInteractiveForms) {
|
8959 |
+
const storedData = storage.getValue(id, {
|
8960 |
+
value: this.data.fieldValue,
|
8961 |
+
valueAsString: this.data.fieldValue
|
8962 |
+
});
|
8963 |
+
const textContent = storedData.valueAsString || storedData.value || "";
|
8964 |
+
const elementData = {
|
8965 |
+
userValue: null,
|
8966 |
+
formattedValue: null,
|
8967 |
+
beforeInputSelectionRange: null,
|
8968 |
+
beforeInputValue: null
|
8969 |
+
};
|
8970 |
+
|
8971 |
+
if (this.data.multiLine) {
|
8972 |
+
element = document.createElement("textarea");
|
8973 |
+
element.textContent = textContent;
|
8974 |
+
} else {
|
8975 |
+
element = document.createElement("input");
|
8976 |
+
element.type = "text";
|
8977 |
+
element.setAttribute("value", textContent);
|
8978 |
+
}
|
8979 |
+
|
8980 |
+
elementData.userValue = textContent;
|
8981 |
+
element.setAttribute("id", id);
|
8982 |
+
element.addEventListener("input", event => {
|
8983 |
+
storage.setValue(id, {
|
8984 |
+
value: event.target.value
|
8985 |
+
});
|
8986 |
+
this.setPropertyOnSiblings(element, "value", event.target.value, "value");
|
8987 |
+
});
|
8988 |
+
|
8989 |
+
let blurListener = event => {
|
8990 |
+
if (elementData.formattedValue) {
|
8991 |
+
event.target.value = elementData.formattedValue;
|
8992 |
+
}
|
8993 |
+
|
8994 |
+
event.target.scrollLeft = 0;
|
8995 |
+
elementData.beforeInputSelectionRange = null;
|
8996 |
+
};
|
8997 |
+
|
8998 |
+
if (this.enableScripting && this.hasJSActions) {
|
8999 |
+
element.addEventListener("focus", event => {
|
9000 |
+
if (elementData.userValue) {
|
9001 |
+
event.target.value = elementData.userValue;
|
9002 |
+
}
|
9003 |
+
});
|
9004 |
+
element.addEventListener("updatefromsandbox", jsEvent => {
|
9005 |
+
const actions = {
|
9006 |
+
value(event) {
|
9007 |
+
elementData.userValue = event.detail.value || "";
|
9008 |
+
storage.setValue(id, {
|
9009 |
+
value: elementData.userValue.toString()
|
9010 |
+
});
|
9011 |
+
|
9012 |
+
if (!elementData.formattedValue) {
|
9013 |
+
event.target.value = elementData.userValue;
|
9014 |
+
}
|
9015 |
+
},
|
9016 |
+
|
9017 |
+
valueAsString(event) {
|
9018 |
+
elementData.formattedValue = event.detail.valueAsString || "";
|
9019 |
+
|
9020 |
+
if (event.target !== document.activeElement) {
|
9021 |
+
event.target.value = elementData.formattedValue;
|
9022 |
+
}
|
9023 |
+
|
9024 |
+
storage.setValue(id, {
|
9025 |
+
formattedValue: elementData.formattedValue
|
9026 |
+
});
|
9027 |
+
},
|
9028 |
+
|
9029 |
+
selRange(event) {
|
9030 |
+
const [selStart, selEnd] = event.detail.selRange;
|
9031 |
+
|
9032 |
+
if (selStart >= 0 && selEnd < event.target.value.length) {
|
9033 |
+
event.target.setSelectionRange(selStart, selEnd);
|
9034 |
+
}
|
9035 |
+
}
|
9036 |
+
|
9037 |
+
};
|
9038 |
+
|
9039 |
+
this._dispatchEventFromSandbox(actions, jsEvent);
|
9040 |
+
});
|
9041 |
+
element.addEventListener("keydown", event => {
|
9042 |
+
elementData.beforeInputValue = event.target.value;
|
9043 |
+
let commitKey = -1;
|
9044 |
+
|
9045 |
+
if (event.key === "Escape") {
|
9046 |
+
commitKey = 0;
|
9047 |
+
} else if (event.key === "Enter") {
|
9048 |
+
commitKey = 2;
|
9049 |
+
} else if (event.key === "Tab") {
|
9050 |
+
commitKey = 3;
|
9051 |
+
}
|
9052 |
+
|
9053 |
+
if (commitKey === -1) {
|
9054 |
+
return;
|
9055 |
+
}
|
9056 |
+
|
9057 |
+
elementData.userValue = event.target.value;
|
9058 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
9059 |
+
source: this,
|
9060 |
+
detail: {
|
9061 |
+
id,
|
9062 |
+
name: "Keystroke",
|
9063 |
+
value: event.target.value,
|
9064 |
+
willCommit: true,
|
9065 |
+
commitKey,
|
9066 |
+
selStart: event.target.selectionStart,
|
9067 |
+
selEnd: event.target.selectionEnd
|
9068 |
+
}
|
9069 |
+
});
|
9070 |
+
});
|
9071 |
+
const _blurListener = blurListener;
|
9072 |
+
blurListener = null;
|
9073 |
+
element.addEventListener("blur", event => {
|
9074 |
+
if (this._mouseState.isDown) {
|
9075 |
+
elementData.userValue = event.target.value;
|
9076 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
9077 |
+
source: this,
|
9078 |
+
detail: {
|
9079 |
+
id,
|
9080 |
+
name: "Keystroke",
|
9081 |
+
value: event.target.value,
|
9082 |
+
willCommit: true,
|
9083 |
+
commitKey: 1,
|
9084 |
+
selStart: event.target.selectionStart,
|
9085 |
+
selEnd: event.target.selectionEnd
|
9086 |
+
}
|
9087 |
+
});
|
9088 |
+
}
|
9089 |
+
|
9090 |
+
_blurListener(event);
|
9091 |
+
});
|
9092 |
+
element.addEventListener("mousedown", event => {
|
9093 |
+
elementData.beforeInputValue = event.target.value;
|
9094 |
+
elementData.beforeInputSelectionRange = null;
|
9095 |
+
});
|
9096 |
+
element.addEventListener("keyup", event => {
|
9097 |
+
if (event.target.selectionStart === event.target.selectionEnd) {
|
9098 |
+
elementData.beforeInputSelectionRange = null;
|
9099 |
+
}
|
9100 |
+
});
|
9101 |
+
element.addEventListener("select", event => {
|
9102 |
+
elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];
|
9103 |
+
});
|
9104 |
+
|
9105 |
+
if (this.data.actions?.Keystroke) {
|
9106 |
+
element.addEventListener("input", event => {
|
9107 |
+
let selStart = -1;
|
9108 |
+
let selEnd = -1;
|
9109 |
+
|
9110 |
+
if (elementData.beforeInputSelectionRange) {
|
9111 |
+
[selStart, selEnd] = elementData.beforeInputSelectionRange;
|
9112 |
+
}
|
9113 |
+
|
9114 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
9115 |
+
source: this,
|
9116 |
+
detail: {
|
9117 |
+
id,
|
9118 |
+
name: "Keystroke",
|
9119 |
+
value: elementData.beforeInputValue,
|
9120 |
+
change: event.data,
|
9121 |
+
willCommit: false,
|
9122 |
+
selStart,
|
9123 |
+
selEnd
|
9124 |
+
}
|
9125 |
+
});
|
9126 |
+
});
|
9127 |
+
}
|
9128 |
+
|
9129 |
+
this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value);
|
9130 |
+
}
|
9131 |
+
|
9132 |
+
if (blurListener) {
|
9133 |
+
element.addEventListener("blur", blurListener);
|
9134 |
+
}
|
9135 |
+
|
9136 |
+
element.disabled = this.data.readOnly;
|
9137 |
+
element.name = this.data.fieldName;
|
9138 |
+
|
9139 |
+
if (this.data.maxLen !== null) {
|
9140 |
+
element.maxLength = this.data.maxLen;
|
9141 |
+
}
|
9142 |
+
|
9143 |
+
if (this.data.comb) {
|
9144 |
+
const fieldWidth = this.data.rect[2] - this.data.rect[0];
|
9145 |
+
const combWidth = fieldWidth / this.data.maxLen;
|
9146 |
+
element.classList.add("comb");
|
9147 |
+
element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;
|
9148 |
+
}
|
9149 |
+
} else {
|
9150 |
+
element = document.createElement("div");
|
9151 |
+
element.textContent = this.data.fieldValue;
|
9152 |
+
element.style.verticalAlign = "middle";
|
9153 |
+
element.style.display = "table-cell";
|
9154 |
+
}
|
9155 |
+
|
9156 |
+
this._setTextStyle(element);
|
9157 |
+
|
9158 |
+
this.container.appendChild(element);
|
9159 |
+
return this.container;
|
9160 |
+
}
|
9161 |
+
|
9162 |
+
_setTextStyle(element) {
|
9163 |
+
const TEXT_ALIGNMENT = ["left", "center", "right"];
|
9164 |
+
const {
|
9165 |
+
fontSize,
|
9166 |
+
fontColor
|
9167 |
+
} = this.data.defaultAppearanceData;
|
9168 |
+
const style = element.style;
|
9169 |
+
|
9170 |
+
if (fontSize) {
|
9171 |
+
style.fontSize = `${fontSize}px`;
|
9172 |
+
}
|
9173 |
+
|
9174 |
+
style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);
|
9175 |
+
|
9176 |
+
if (this.data.textAlignment !== null) {
|
9177 |
+
style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
|
9178 |
+
}
|
9179 |
+
}
|
9180 |
+
|
9181 |
+
}
|
9182 |
+
|
9183 |
+
class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
|
9184 |
+
constructor(parameters) {
|
9185 |
+
super(parameters, {
|
9186 |
+
isRenderable: parameters.renderInteractiveForms
|
9187 |
+
});
|
9188 |
+
}
|
9189 |
+
|
9190 |
+
render() {
|
9191 |
+
const storage = this.annotationStorage;
|
9192 |
+
const data = this.data;
|
9193 |
+
const id = data.id;
|
9194 |
+
let value = storage.getValue(id, {
|
9195 |
+
value: data.fieldValue && (data.exportValue && data.exportValue === data.fieldValue || !data.exportValue && data.fieldValue !== "Off")
|
9196 |
+
}).value;
|
9197 |
+
|
9198 |
+
if (typeof value === "string") {
|
9199 |
+
value = value !== "Off";
|
9200 |
+
storage.setValue(id, {
|
9201 |
+
value
|
9202 |
+
});
|
9203 |
+
}
|
9204 |
+
|
9205 |
+
this.container.className = "buttonWidgetAnnotation checkBox";
|
9206 |
+
const element = document.createElement("input");
|
9207 |
+
element.disabled = data.readOnly;
|
9208 |
+
element.type = "checkbox";
|
9209 |
+
element.name = this.data.fieldName;
|
9210 |
+
|
9211 |
+
if (value) {
|
9212 |
+
element.setAttribute("checked", true);
|
9213 |
+
}
|
9214 |
+
|
9215 |
+
element.setAttribute("id", id);
|
9216 |
+
element.addEventListener("change", function (event) {
|
9217 |
+
const name = event.target.name;
|
9218 |
+
|
9219 |
+
for (const checkbox of document.getElementsByName(name)) {
|
9220 |
+
if (checkbox !== event.target) {
|
9221 |
+
checkbox.checked = false;
|
9222 |
+
storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), {
|
9223 |
+
value: false
|
9224 |
+
});
|
9225 |
+
}
|
9226 |
+
}
|
9227 |
+
|
9228 |
+
storage.setValue(id, {
|
9229 |
+
value: event.target.checked
|
9230 |
+
});
|
9231 |
+
});
|
9232 |
+
|
9233 |
+
if (this.enableScripting && this.hasJSActions) {
|
9234 |
+
element.addEventListener("updatefromsandbox", jsEvent => {
|
9235 |
+
const actions = {
|
9236 |
+
value(event) {
|
9237 |
+
event.target.checked = event.detail.value !== "Off";
|
9238 |
+
storage.setValue(id, {
|
9239 |
+
value: event.target.checked
|
9240 |
+
});
|
9241 |
+
}
|
9242 |
+
|
9243 |
+
};
|
9244 |
+
|
9245 |
+
this._dispatchEventFromSandbox(actions, jsEvent);
|
9246 |
+
});
|
9247 |
+
|
9248 |
+
this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
|
9249 |
+
}
|
9250 |
+
|
9251 |
+
this.container.appendChild(element);
|
9252 |
+
return this.container;
|
9253 |
+
}
|
9254 |
+
|
9255 |
+
}
|
9256 |
+
|
9257 |
+
class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
|
9258 |
+
constructor(parameters) {
|
9259 |
+
super(parameters, {
|
9260 |
+
isRenderable: parameters.renderInteractiveForms
|
9261 |
+
});
|
9262 |
+
}
|
9263 |
+
|
9264 |
+
render() {
|
9265 |
+
this.container.className = "buttonWidgetAnnotation radioButton";
|
9266 |
+
const storage = this.annotationStorage;
|
9267 |
+
const data = this.data;
|
9268 |
+
const id = data.id;
|
9269 |
+
let value = storage.getValue(id, {
|
9270 |
+
value: data.fieldValue === data.buttonValue
|
9271 |
+
}).value;
|
9272 |
+
|
9273 |
+
if (typeof value === "string") {
|
9274 |
+
value = value !== data.buttonValue;
|
9275 |
+
storage.setValue(id, {
|
9276 |
+
value
|
9277 |
+
});
|
9278 |
+
}
|
9279 |
+
|
9280 |
+
const element = document.createElement("input");
|
9281 |
+
element.disabled = data.readOnly;
|
9282 |
+
element.type = "radio";
|
9283 |
+
element.name = data.fieldName;
|
9284 |
+
|
9285 |
+
if (value) {
|
9286 |
+
element.setAttribute("checked", true);
|
9287 |
+
}
|
9288 |
+
|
9289 |
+
element.setAttribute("id", id);
|
9290 |
+
element.addEventListener("change", function (event) {
|
9291 |
+
const {
|
9292 |
+
target
|
9293 |
+
} = event;
|
9294 |
+
|
9295 |
+
for (const radio of document.getElementsByName(target.name)) {
|
9296 |
+
if (radio !== target) {
|
9297 |
+
storage.setValue(radio.getAttribute("id"), {
|
9298 |
+
value: false
|
9299 |
+
});
|
9300 |
+
}
|
9301 |
+
}
|
9302 |
+
|
9303 |
+
storage.setValue(id, {
|
9304 |
+
value: target.checked
|
9305 |
+
});
|
9306 |
+
});
|
9307 |
+
|
9308 |
+
if (this.enableScripting && this.hasJSActions) {
|
9309 |
+
const pdfButtonValue = data.buttonValue;
|
9310 |
+
element.addEventListener("updatefromsandbox", jsEvent => {
|
9311 |
+
const actions = {
|
9312 |
+
value(event) {
|
9313 |
+
const checked = pdfButtonValue === event.detail.value;
|
9314 |
+
|
9315 |
+
for (const radio of document.getElementsByName(event.target.name)) {
|
9316 |
+
const radioId = radio.getAttribute("id");
|
9317 |
+
radio.checked = radioId === id && checked;
|
9318 |
+
storage.setValue(radioId, {
|
9319 |
+
value: radio.checked
|
9320 |
+
});
|
9321 |
+
}
|
9322 |
+
}
|
9323 |
+
|
9324 |
+
};
|
9325 |
+
|
9326 |
+
this._dispatchEventFromSandbox(actions, jsEvent);
|
9327 |
+
});
|
9328 |
+
|
9329 |
+
this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
|
9330 |
+
}
|
9331 |
+
|
9332 |
+
this.container.appendChild(element);
|
9333 |
+
return this.container;
|
9334 |
+
}
|
9335 |
+
|
9336 |
+
}
|
9337 |
+
|
9338 |
+
class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
|
9339 |
+
render() {
|
9340 |
+
const container = super.render();
|
9341 |
+
container.className = "buttonWidgetAnnotation pushButton";
|
9342 |
+
|
9343 |
+
if (this.data.alternativeText) {
|
9344 |
+
container.title = this.data.alternativeText;
|
9345 |
+
}
|
9346 |
+
|
9347 |
+
return container;
|
9348 |
+
}
|
9349 |
+
|
9350 |
+
}
|
9351 |
+
|
9352 |
+
class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
|
9353 |
+
constructor(parameters) {
|
9354 |
+
super(parameters, {
|
9355 |
+
isRenderable: parameters.renderInteractiveForms
|
9356 |
+
});
|
9357 |
+
}
|
9358 |
+
|
9359 |
+
render() {
|
9360 |
+
this.container.className = "choiceWidgetAnnotation";
|
9361 |
+
const storage = this.annotationStorage;
|
9362 |
+
const id = this.data.id;
|
9363 |
+
storage.getValue(id, {
|
9364 |
+
value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
|
9365 |
+
});
|
9366 |
+
const selectElement = document.createElement("select");
|
9367 |
+
selectElement.disabled = this.data.readOnly;
|
9368 |
+
selectElement.name = this.data.fieldName;
|
9369 |
+
selectElement.setAttribute("id", id);
|
9370 |
+
|
9371 |
+
if (!this.data.combo) {
|
9372 |
+
selectElement.size = this.data.options.length;
|
9373 |
+
|
9374 |
+
if (this.data.multiSelect) {
|
9375 |
+
selectElement.multiple = true;
|
9376 |
+
}
|
9377 |
+
}
|
9378 |
+
|
9379 |
+
for (const option of this.data.options) {
|
9380 |
+
const optionElement = document.createElement("option");
|
9381 |
+
optionElement.textContent = option.displayValue;
|
9382 |
+
optionElement.value = option.exportValue;
|
9383 |
+
|
9384 |
+
if (this.data.fieldValue.includes(option.exportValue)) {
|
9385 |
+
optionElement.setAttribute("selected", true);
|
9386 |
+
}
|
9387 |
+
|
9388 |
+
selectElement.appendChild(optionElement);
|
9389 |
+
}
|
9390 |
+
|
9391 |
+
const getValue = (event, isExport) => {
|
9392 |
+
const name = isExport ? "value" : "textContent";
|
9393 |
+
const options = event.target.options;
|
9394 |
+
|
9395 |
+
if (!event.target.multiple) {
|
9396 |
+
return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];
|
9397 |
+
}
|
9398 |
+
|
9399 |
+
return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);
|
9400 |
+
};
|
9401 |
+
|
9402 |
+
const getItems = event => {
|
9403 |
+
const options = event.target.options;
|
9404 |
+
return Array.prototype.map.call(options, option => {
|
9405 |
+
return {
|
9406 |
+
displayValue: option.textContent,
|
9407 |
+
exportValue: option.value
|
9408 |
+
};
|
9409 |
+
});
|
9410 |
+
};
|
9411 |
+
|
9412 |
+
if (this.enableScripting && this.hasJSActions) {
|
9413 |
+
selectElement.addEventListener("updatefromsandbox", jsEvent => {
|
9414 |
+
const actions = {
|
9415 |
+
value(event) {
|
9416 |
+
const options = selectElement.options;
|
9417 |
+
const value = event.detail.value;
|
9418 |
+
const values = new Set(Array.isArray(value) ? value : [value]);
|
9419 |
+
Array.prototype.forEach.call(options, option => {
|
9420 |
+
option.selected = values.has(option.value);
|
9421 |
+
});
|
9422 |
+
storage.setValue(id, {
|
9423 |
+
value: getValue(event, true)
|
9424 |
+
});
|
9425 |
+
},
|
9426 |
+
|
9427 |
+
multipleSelection(event) {
|
9428 |
+
selectElement.multiple = true;
|
9429 |
+
},
|
9430 |
+
|
9431 |
+
remove(event) {
|
9432 |
+
const options = selectElement.options;
|
9433 |
+
const index = event.detail.remove;
|
9434 |
+
options[index].selected = false;
|
9435 |
+
selectElement.remove(index);
|
9436 |
+
|
9437 |
+
if (options.length > 0) {
|
9438 |
+
const i = Array.prototype.findIndex.call(options, option => option.selected);
|
9439 |
+
|
9440 |
+
if (i === -1) {
|
9441 |
+
options[0].selected = true;
|
9442 |
+
}
|
9443 |
+
}
|
9444 |
+
|
9445 |
+
storage.setValue(id, {
|
9446 |
+
value: getValue(event, true),
|
9447 |
+
items: getItems(event)
|
9448 |
+
});
|
9449 |
+
},
|
9450 |
+
|
9451 |
+
clear(event) {
|
9452 |
+
while (selectElement.length !== 0) {
|
9453 |
+
selectElement.remove(0);
|
9454 |
+
}
|
9455 |
+
|
9456 |
+
storage.setValue(id, {
|
9457 |
+
value: null,
|
9458 |
+
items: []
|
9459 |
+
});
|
9460 |
+
},
|
9461 |
+
|
9462 |
+
insert(event) {
|
9463 |
+
const {
|
9464 |
+
index,
|
9465 |
+
displayValue,
|
9466 |
+
exportValue
|
9467 |
+
} = event.detail.insert;
|
9468 |
+
const optionElement = document.createElement("option");
|
9469 |
+
optionElement.textContent = displayValue;
|
9470 |
+
optionElement.value = exportValue;
|
9471 |
+
selectElement.insertBefore(optionElement, selectElement.children[index]);
|
9472 |
+
storage.setValue(id, {
|
9473 |
+
value: getValue(event, true),
|
9474 |
+
items: getItems(event)
|
9475 |
+
});
|
9476 |
+
},
|
9477 |
+
|
9478 |
+
items(event) {
|
9479 |
+
const {
|
9480 |
+
items
|
9481 |
+
} = event.detail;
|
9482 |
+
|
9483 |
+
while (selectElement.length !== 0) {
|
9484 |
+
selectElement.remove(0);
|
9485 |
+
}
|
9486 |
+
|
9487 |
+
for (const item of items) {
|
9488 |
+
const {
|
9489 |
+
displayValue,
|
9490 |
+
exportValue
|
9491 |
+
} = item;
|
9492 |
+
const optionElement = document.createElement("option");
|
9493 |
+
optionElement.textContent = displayValue;
|
9494 |
+
optionElement.value = exportValue;
|
9495 |
+
selectElement.appendChild(optionElement);
|
9496 |
+
}
|
9497 |
+
|
9498 |
+
if (selectElement.options.length > 0) {
|
9499 |
+
selectElement.options[0].selected = true;
|
9500 |
+
}
|
9501 |
+
|
9502 |
+
storage.setValue(id, {
|
9503 |
+
value: getValue(event, true),
|
9504 |
+
items: getItems(event)
|
9505 |
+
});
|
9506 |
+
},
|
9507 |
+
|
9508 |
+
indices(event) {
|
9509 |
+
const indices = new Set(event.detail.indices);
|
9510 |
+
const options = event.target.options;
|
9511 |
+
Array.prototype.forEach.call(options, (option, i) => {
|
9512 |
+
option.selected = indices.has(i);
|
9513 |
+
});
|
9514 |
+
storage.setValue(id, {
|
9515 |
+
value: getValue(event, true)
|
9516 |
+
});
|
9517 |
+
},
|
9518 |
+
|
9519 |
+
editable(event) {
|
9520 |
+
event.target.disabled = !event.detail.editable;
|
9521 |
+
}
|
9522 |
+
|
9523 |
+
};
|
9524 |
+
|
9525 |
+
this._dispatchEventFromSandbox(actions, jsEvent);
|
9526 |
+
});
|
9527 |
+
selectElement.addEventListener("input", event => {
|
9528 |
+
const exportValue = getValue(event, true);
|
9529 |
+
const value = getValue(event, false);
|
9530 |
+
storage.setValue(id, {
|
9531 |
+
value: exportValue
|
9532 |
+
});
|
9533 |
+
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
|
9534 |
+
source: this,
|
9535 |
+
detail: {
|
9536 |
+
id,
|
9537 |
+
name: "Keystroke",
|
9538 |
+
value,
|
9539 |
+
changeEx: exportValue,
|
9540 |
+
willCommit: true,
|
9541 |
+
commitKey: 1,
|
9542 |
+
keyDown: false
|
9543 |
+
}
|
9544 |
+
});
|
9545 |
+
});
|
9546 |
+
|
9547 |
+
this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked);
|
9548 |
+
} else {
|
9549 |
+
selectElement.addEventListener("input", function (event) {
|
9550 |
+
storage.setValue(id, {
|
9551 |
+
value: getValue(event)
|
9552 |
+
});
|
9553 |
+
});
|
9554 |
+
}
|
9555 |
+
|
9556 |
+
this.container.appendChild(selectElement);
|
9557 |
+
return this.container;
|
9558 |
+
}
|
9559 |
+
|
9560 |
+
}
|
9561 |
+
|
9562 |
+
class PopupAnnotationElement extends AnnotationElement {
|
9563 |
+
constructor(parameters) {
|
9564 |
+
const isRenderable = !!(parameters.data.title || parameters.data.contents);
|
9565 |
+
super(parameters, {
|
9566 |
+
isRenderable
|
9567 |
+
});
|
9568 |
+
}
|
9569 |
+
|
9570 |
+
render() {
|
9571 |
+
const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"];
|
9572 |
+
this.container.className = "popupAnnotation";
|
9573 |
+
|
9574 |
+
if (IGNORE_TYPES.includes(this.data.parentType)) {
|
9575 |
+
return this.container;
|
9576 |
+
}
|
9577 |
+
|
9578 |
+
const selector = `[data-annotation-id="${this.data.parentId}"]`;
|
9579 |
+
const parentElements = this.layer.querySelectorAll(selector);
|
9580 |
+
|
9581 |
+
if (parentElements.length === 0) {
|
9582 |
+
return this.container;
|
9583 |
+
}
|
9584 |
+
|
9585 |
+
const popup = new PopupElement({
|
9586 |
+
container: this.container,
|
9587 |
+
trigger: Array.from(parentElements),
|
9588 |
+
color: this.data.color,
|
9589 |
+
title: this.data.title,
|
9590 |
+
modificationDate: this.data.modificationDate,
|
9591 |
+
contents: this.data.contents
|
9592 |
+
});
|
9593 |
+
const page = this.page;
|
9594 |
+
|
9595 |
+
const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);
|
9596 |
+
|
9597 |
+
const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];
|
9598 |
+
const popupTop = rect[1];
|
9599 |
+
this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;
|
9600 |
+
this.container.style.left = `${popupLeft}px`;
|
9601 |
+
this.container.style.top = `${popupTop}px`;
|
9602 |
+
this.container.appendChild(popup.render());
|
9603 |
+
return this.container;
|
9604 |
+
}
|
9605 |
+
|
9606 |
+
}
|
9607 |
+
|
9608 |
+
class PopupElement {
|
9609 |
+
constructor(parameters) {
|
9610 |
+
this.container = parameters.container;
|
9611 |
+
this.trigger = parameters.trigger;
|
9612 |
+
this.color = parameters.color;
|
9613 |
+
this.title = parameters.title;
|
9614 |
+
this.modificationDate = parameters.modificationDate;
|
9615 |
+
this.contents = parameters.contents;
|
9616 |
+
this.hideWrapper = parameters.hideWrapper || false;
|
9617 |
+
this.pinned = false;
|
9618 |
+
}
|
9619 |
+
|
9620 |
+
render() {
|
9621 |
+
const BACKGROUND_ENLIGHT = 0.7;
|
9622 |
+
const wrapper = document.createElement("div");
|
9623 |
+
wrapper.className = "popupWrapper";
|
9624 |
+
this.hideElement = this.hideWrapper ? wrapper : this.container;
|
9625 |
+
this.hideElement.hidden = true;
|
9626 |
+
const popup = document.createElement("div");
|
9627 |
+
popup.className = "popup";
|
9628 |
+
const color = this.color;
|
9629 |
+
|
9630 |
+
if (color) {
|
9631 |
+
const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
|
9632 |
+
const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
|
9633 |
+
const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
|
9634 |
+
popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);
|
9635 |
+
}
|
9636 |
+
|
9637 |
+
const title = document.createElement("h1");
|
9638 |
+
title.textContent = this.title;
|
9639 |
+
popup.appendChild(title);
|
9640 |
+
|
9641 |
+
const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);
|
9642 |
+
|
9643 |
+
if (dateObject) {
|
9644 |
+
const modificationDate = document.createElement("span");
|
9645 |
+
modificationDate.textContent = "{{date}}, {{time}}";
|
9646 |
+
modificationDate.dataset.l10nId = "annotation_date_string";
|
9647 |
+
modificationDate.dataset.l10nArgs = JSON.stringify({
|
9648 |
+
date: dateObject.toLocaleDateString(),
|
9649 |
+
time: dateObject.toLocaleTimeString()
|
9650 |
+
});
|
9651 |
+
popup.appendChild(modificationDate);
|
9652 |
+
}
|
9653 |
+
|
9654 |
+
const contents = this._formatContents(this.contents);
|
9655 |
+
|
9656 |
+
popup.appendChild(contents);
|
9657 |
+
|
9658 |
+
if (!Array.isArray(this.trigger)) {
|
9659 |
+
this.trigger = [this.trigger];
|
9660 |
+
}
|
9661 |
+
|
9662 |
+
for (const element of this.trigger) {
|
9663 |
+
element.addEventListener("click", this._toggle.bind(this));
|
9664 |
+
element.addEventListener("mouseover", this._show.bind(this, false));
|
9665 |
+
element.addEventListener("mouseout", this._hide.bind(this, false));
|
9666 |
+
}
|
9667 |
+
|
9668 |
+
popup.addEventListener("click", this._hide.bind(this, true));
|
9669 |
+
wrapper.appendChild(popup);
|
9670 |
+
return wrapper;
|
9671 |
+
}
|
9672 |
+
|
9673 |
+
_formatContents(contents) {
|
9674 |
+
const p = document.createElement("p");
|
9675 |
+
const lines = contents.split(/(?:\r\n?|\n)/);
|
9676 |
+
|
9677 |
+
for (let i = 0, ii = lines.length; i < ii; ++i) {
|
9678 |
+
const line = lines[i];
|
9679 |
+
p.appendChild(document.createTextNode(line));
|
9680 |
+
|
9681 |
+
if (i < ii - 1) {
|
9682 |
+
p.appendChild(document.createElement("br"));
|
9683 |
+
}
|
9684 |
+
}
|
9685 |
+
|
9686 |
+
return p;
|
9687 |
+
}
|
9688 |
+
|
9689 |
+
_toggle() {
|
9690 |
+
if (this.pinned) {
|
9691 |
+
this._hide(true);
|
9692 |
+
} else {
|
9693 |
+
this._show(true);
|
9694 |
+
}
|
9695 |
+
}
|
9696 |
+
|
9697 |
+
_show(pin = false) {
|
9698 |
+
if (pin) {
|
9699 |
+
this.pinned = true;
|
9700 |
+
}
|
9701 |
+
|
9702 |
+
if (this.hideElement.hidden) {
|
9703 |
+
this.hideElement.hidden = false;
|
9704 |
+
this.container.style.zIndex += 1;
|
9705 |
+
}
|
9706 |
+
}
|
9707 |
+
|
9708 |
+
_hide(unpin = true) {
|
9709 |
+
if (unpin) {
|
9710 |
+
this.pinned = false;
|
9711 |
+
}
|
9712 |
+
|
9713 |
+
if (!this.hideElement.hidden && !this.pinned) {
|
9714 |
+
this.hideElement.hidden = true;
|
9715 |
+
this.container.style.zIndex -= 1;
|
9716 |
+
}
|
9717 |
+
}
|
9718 |
+
|
9719 |
+
}
|
9720 |
+
|
9721 |
+
class FreeTextAnnotationElement extends AnnotationElement {
|
9722 |
+
constructor(parameters) {
|
9723 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9724 |
+
super(parameters, {
|
9725 |
+
isRenderable,
|
9726 |
+
ignoreBorder: true
|
9727 |
+
});
|
9728 |
+
}
|
9729 |
+
|
9730 |
+
render() {
|
9731 |
+
this.container.className = "freeTextAnnotation";
|
9732 |
+
|
9733 |
+
if (!this.data.hasPopup) {
|
9734 |
+
this._createPopup(null, this.data);
|
9735 |
+
}
|
9736 |
+
|
9737 |
+
return this.container;
|
9738 |
+
}
|
9739 |
+
|
9740 |
+
}
|
9741 |
+
|
9742 |
+
class LineAnnotationElement extends AnnotationElement {
|
9743 |
+
constructor(parameters) {
|
9744 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9745 |
+
super(parameters, {
|
9746 |
+
isRenderable,
|
9747 |
+
ignoreBorder: true
|
9748 |
+
});
|
9749 |
+
}
|
9750 |
+
|
9751 |
+
render() {
|
9752 |
+
this.container.className = "lineAnnotation";
|
9753 |
+
const data = this.data;
|
9754 |
+
const width = data.rect[2] - data.rect[0];
|
9755 |
+
const height = data.rect[3] - data.rect[1];
|
9756 |
+
const svg = this.svgFactory.create(width, height);
|
9757 |
+
const line = this.svgFactory.createElement("svg:line");
|
9758 |
+
line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]);
|
9759 |
+
line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]);
|
9760 |
+
line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]);
|
9761 |
+
line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]);
|
9762 |
+
line.setAttribute("stroke-width", data.borderStyle.width || 1);
|
9763 |
+
line.setAttribute("stroke", "transparent");
|
9764 |
+
svg.appendChild(line);
|
9765 |
+
this.container.append(svg);
|
9766 |
+
|
9767 |
+
this._createPopup(line, data);
|
9768 |
+
|
9769 |
+
return this.container;
|
9770 |
+
}
|
9771 |
+
|
9772 |
+
}
|
9773 |
+
|
9774 |
+
class SquareAnnotationElement extends AnnotationElement {
|
9775 |
+
constructor(parameters) {
|
9776 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9777 |
+
super(parameters, {
|
9778 |
+
isRenderable,
|
9779 |
+
ignoreBorder: true
|
9780 |
+
});
|
9781 |
+
}
|
9782 |
+
|
9783 |
+
render() {
|
9784 |
+
this.container.className = "squareAnnotation";
|
9785 |
+
const data = this.data;
|
9786 |
+
const width = data.rect[2] - data.rect[0];
|
9787 |
+
const height = data.rect[3] - data.rect[1];
|
9788 |
+
const svg = this.svgFactory.create(width, height);
|
9789 |
+
const borderWidth = data.borderStyle.width;
|
9790 |
+
const square = this.svgFactory.createElement("svg:rect");
|
9791 |
+
square.setAttribute("x", borderWidth / 2);
|
9792 |
+
square.setAttribute("y", borderWidth / 2);
|
9793 |
+
square.setAttribute("width", width - borderWidth);
|
9794 |
+
square.setAttribute("height", height - borderWidth);
|
9795 |
+
square.setAttribute("stroke-width", borderWidth || 1);
|
9796 |
+
square.setAttribute("stroke", "transparent");
|
9797 |
+
square.setAttribute("fill", "none");
|
9798 |
+
svg.appendChild(square);
|
9799 |
+
this.container.append(svg);
|
9800 |
+
|
9801 |
+
this._createPopup(square, data);
|
9802 |
+
|
9803 |
+
return this.container;
|
9804 |
+
}
|
9805 |
+
|
9806 |
+
}
|
9807 |
+
|
9808 |
+
class CircleAnnotationElement extends AnnotationElement {
|
9809 |
+
constructor(parameters) {
|
9810 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9811 |
+
super(parameters, {
|
9812 |
+
isRenderable,
|
9813 |
+
ignoreBorder: true
|
9814 |
+
});
|
9815 |
+
}
|
9816 |
+
|
9817 |
+
render() {
|
9818 |
+
this.container.className = "circleAnnotation";
|
9819 |
+
const data = this.data;
|
9820 |
+
const width = data.rect[2] - data.rect[0];
|
9821 |
+
const height = data.rect[3] - data.rect[1];
|
9822 |
+
const svg = this.svgFactory.create(width, height);
|
9823 |
+
const borderWidth = data.borderStyle.width;
|
9824 |
+
const circle = this.svgFactory.createElement("svg:ellipse");
|
9825 |
+
circle.setAttribute("cx", width / 2);
|
9826 |
+
circle.setAttribute("cy", height / 2);
|
9827 |
+
circle.setAttribute("rx", width / 2 - borderWidth / 2);
|
9828 |
+
circle.setAttribute("ry", height / 2 - borderWidth / 2);
|
9829 |
+
circle.setAttribute("stroke-width", borderWidth || 1);
|
9830 |
+
circle.setAttribute("stroke", "transparent");
|
9831 |
+
circle.setAttribute("fill", "none");
|
9832 |
+
svg.appendChild(circle);
|
9833 |
+
this.container.append(svg);
|
9834 |
+
|
9835 |
+
this._createPopup(circle, data);
|
9836 |
+
|
9837 |
+
return this.container;
|
9838 |
+
}
|
9839 |
+
|
9840 |
+
}
|
9841 |
+
|
9842 |
+
class PolylineAnnotationElement extends AnnotationElement {
|
9843 |
+
constructor(parameters) {
|
9844 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9845 |
+
super(parameters, {
|
9846 |
+
isRenderable,
|
9847 |
+
ignoreBorder: true
|
9848 |
+
});
|
9849 |
+
this.containerClassName = "polylineAnnotation";
|
9850 |
+
this.svgElementName = "svg:polyline";
|
9851 |
+
}
|
9852 |
+
|
9853 |
+
render() {
|
9854 |
+
this.container.className = this.containerClassName;
|
9855 |
+
const data = this.data;
|
9856 |
+
const width = data.rect[2] - data.rect[0];
|
9857 |
+
const height = data.rect[3] - data.rect[1];
|
9858 |
+
const svg = this.svgFactory.create(width, height);
|
9859 |
+
let points = [];
|
9860 |
+
|
9861 |
+
for (const coordinate of data.vertices) {
|
9862 |
+
const x = coordinate.x - data.rect[0];
|
9863 |
+
const y = data.rect[3] - coordinate.y;
|
9864 |
+
points.push(x + "," + y);
|
9865 |
+
}
|
9866 |
+
|
9867 |
+
points = points.join(" ");
|
9868 |
+
const polyline = this.svgFactory.createElement(this.svgElementName);
|
9869 |
+
polyline.setAttribute("points", points);
|
9870 |
+
polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
|
9871 |
+
polyline.setAttribute("stroke", "transparent");
|
9872 |
+
polyline.setAttribute("fill", "none");
|
9873 |
+
svg.appendChild(polyline);
|
9874 |
+
this.container.append(svg);
|
9875 |
+
|
9876 |
+
this._createPopup(polyline, data);
|
9877 |
+
|
9878 |
+
return this.container;
|
9879 |
+
}
|
9880 |
+
|
9881 |
+
}
|
9882 |
+
|
9883 |
+
class PolygonAnnotationElement extends PolylineAnnotationElement {
|
9884 |
+
constructor(parameters) {
|
9885 |
+
super(parameters);
|
9886 |
+
this.containerClassName = "polygonAnnotation";
|
9887 |
+
this.svgElementName = "svg:polygon";
|
9888 |
+
}
|
9889 |
+
|
9890 |
+
}
|
9891 |
+
|
9892 |
+
class CaretAnnotationElement extends AnnotationElement {
|
9893 |
+
constructor(parameters) {
|
9894 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9895 |
+
super(parameters, {
|
9896 |
+
isRenderable,
|
9897 |
+
ignoreBorder: true
|
9898 |
+
});
|
9899 |
+
}
|
9900 |
+
|
9901 |
+
render() {
|
9902 |
+
this.container.className = "caretAnnotation";
|
9903 |
+
|
9904 |
+
if (!this.data.hasPopup) {
|
9905 |
+
this._createPopup(null, this.data);
|
9906 |
+
}
|
9907 |
+
|
9908 |
+
return this.container;
|
9909 |
+
}
|
9910 |
+
|
9911 |
+
}
|
9912 |
+
|
9913 |
+
class InkAnnotationElement extends AnnotationElement {
|
9914 |
+
constructor(parameters) {
|
9915 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9916 |
+
super(parameters, {
|
9917 |
+
isRenderable,
|
9918 |
+
ignoreBorder: true
|
9919 |
+
});
|
9920 |
+
this.containerClassName = "inkAnnotation";
|
9921 |
+
this.svgElementName = "svg:polyline";
|
9922 |
+
}
|
9923 |
+
|
9924 |
+
render() {
|
9925 |
+
this.container.className = this.containerClassName;
|
9926 |
+
const data = this.data;
|
9927 |
+
const width = data.rect[2] - data.rect[0];
|
9928 |
+
const height = data.rect[3] - data.rect[1];
|
9929 |
+
const svg = this.svgFactory.create(width, height);
|
9930 |
+
|
9931 |
+
for (const inkList of data.inkLists) {
|
9932 |
+
let points = [];
|
9933 |
+
|
9934 |
+
for (const coordinate of inkList) {
|
9935 |
+
const x = coordinate.x - data.rect[0];
|
9936 |
+
const y = data.rect[3] - coordinate.y;
|
9937 |
+
points.push(`${x},${y}`);
|
9938 |
+
}
|
9939 |
+
|
9940 |
+
points = points.join(" ");
|
9941 |
+
const polyline = this.svgFactory.createElement(this.svgElementName);
|
9942 |
+
polyline.setAttribute("points", points);
|
9943 |
+
polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
|
9944 |
+
polyline.setAttribute("stroke", "transparent");
|
9945 |
+
polyline.setAttribute("fill", "none");
|
9946 |
+
|
9947 |
+
this._createPopup(polyline, data);
|
9948 |
+
|
9949 |
+
svg.appendChild(polyline);
|
9950 |
+
}
|
9951 |
+
|
9952 |
+
this.container.append(svg);
|
9953 |
+
return this.container;
|
9954 |
+
}
|
9955 |
+
|
9956 |
+
}
|
9957 |
+
|
9958 |
+
class HighlightAnnotationElement extends AnnotationElement {
|
9959 |
+
constructor(parameters) {
|
9960 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9961 |
+
super(parameters, {
|
9962 |
+
isRenderable,
|
9963 |
+
ignoreBorder: true,
|
9964 |
+
createQuadrilaterals: true
|
9965 |
+
});
|
9966 |
+
}
|
9967 |
+
|
9968 |
+
render() {
|
9969 |
+
if (!this.data.hasPopup) {
|
9970 |
+
this._createPopup(null, this.data);
|
9971 |
+
}
|
9972 |
+
|
9973 |
+
if (this.quadrilaterals) {
|
9974 |
+
return this._renderQuadrilaterals("highlightAnnotation");
|
9975 |
+
}
|
9976 |
+
|
9977 |
+
this.container.className = "highlightAnnotation";
|
9978 |
+
return this.container;
|
9979 |
+
}
|
9980 |
+
|
9981 |
+
}
|
9982 |
+
|
9983 |
+
class UnderlineAnnotationElement extends AnnotationElement {
|
9984 |
+
constructor(parameters) {
|
9985 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
9986 |
+
super(parameters, {
|
9987 |
+
isRenderable,
|
9988 |
+
ignoreBorder: true,
|
9989 |
+
createQuadrilaterals: true
|
9990 |
+
});
|
9991 |
+
}
|
9992 |
+
|
9993 |
+
render() {
|
9994 |
+
if (!this.data.hasPopup) {
|
9995 |
+
this._createPopup(null, this.data);
|
9996 |
+
}
|
9997 |
+
|
9998 |
+
if (this.quadrilaterals) {
|
9999 |
+
return this._renderQuadrilaterals("underlineAnnotation");
|
10000 |
+
}
|
10001 |
+
|
10002 |
+
this.container.className = "underlineAnnotation";
|
10003 |
+
return this.container;
|
10004 |
+
}
|
10005 |
+
|
10006 |
+
}
|
10007 |
+
|
10008 |
+
class SquigglyAnnotationElement extends AnnotationElement {
|
10009 |
+
constructor(parameters) {
|
10010 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
10011 |
+
super(parameters, {
|
10012 |
+
isRenderable,
|
10013 |
+
ignoreBorder: true,
|
10014 |
+
createQuadrilaterals: true
|
10015 |
+
});
|
10016 |
+
}
|
10017 |
+
|
10018 |
+
render() {
|
10019 |
+
if (!this.data.hasPopup) {
|
10020 |
+
this._createPopup(null, this.data);
|
10021 |
+
}
|
10022 |
+
|
10023 |
+
if (this.quadrilaterals) {
|
10024 |
+
return this._renderQuadrilaterals("squigglyAnnotation");
|
10025 |
+
}
|
10026 |
+
|
10027 |
+
this.container.className = "squigglyAnnotation";
|
10028 |
+
return this.container;
|
10029 |
+
}
|
10030 |
+
|
10031 |
+
}
|
10032 |
+
|
10033 |
+
class StrikeOutAnnotationElement extends AnnotationElement {
|
10034 |
+
constructor(parameters) {
|
10035 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
10036 |
+
super(parameters, {
|
10037 |
+
isRenderable,
|
10038 |
+
ignoreBorder: true,
|
10039 |
+
createQuadrilaterals: true
|
10040 |
+
});
|
10041 |
+
}
|
10042 |
+
|
10043 |
+
render() {
|
10044 |
+
if (!this.data.hasPopup) {
|
10045 |
+
this._createPopup(null, this.data);
|
10046 |
+
}
|
10047 |
+
|
10048 |
+
if (this.quadrilaterals) {
|
10049 |
+
return this._renderQuadrilaterals("strikeoutAnnotation");
|
10050 |
+
}
|
10051 |
+
|
10052 |
+
this.container.className = "strikeoutAnnotation";
|
10053 |
+
return this.container;
|
10054 |
+
}
|
10055 |
+
|
10056 |
+
}
|
10057 |
+
|
10058 |
+
class StampAnnotationElement extends AnnotationElement {
|
10059 |
+
constructor(parameters) {
|
10060 |
+
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
10061 |
+
super(parameters, {
|
10062 |
+
isRenderable,
|
10063 |
+
ignoreBorder: true
|
10064 |
+
});
|
10065 |
+
}
|
10066 |
+
|
10067 |
+
render() {
|
10068 |
+
this.container.className = "stampAnnotation";
|
10069 |
+
|
10070 |
+
if (!this.data.hasPopup) {
|
10071 |
+
this._createPopup(null, this.data);
|
10072 |
+
}
|
10073 |
+
|
10074 |
+
return this.container;
|
10075 |
+
}
|
10076 |
+
|
10077 |
+
}
|
10078 |
+
|
10079 |
+
class FileAttachmentAnnotationElement extends AnnotationElement {
|
10080 |
+
constructor(parameters) {
|
10081 |
+
super(parameters, {
|
10082 |
+
isRenderable: true
|
10083 |
+
});
|
10084 |
+
const {
|
10085 |
+
filename,
|
10086 |
+
content
|
10087 |
+
} = this.data.file;
|
10088 |
+
this.filename = (0, _display_utils.getFilenameFromUrl)(filename);
|
10089 |
+
this.content = content;
|
10090 |
+
this.linkService.eventBus?.dispatch("fileattachmentannotation", {
|
10091 |
+
source: this,
|
10092 |
+
id: (0, _util.stringToPDFString)(filename),
|
10093 |
+
filename,
|
10094 |
+
content
|
10095 |
+
});
|
10096 |
+
}
|
10097 |
+
|
10098 |
+
render() {
|
10099 |
+
this.container.className = "fileAttachmentAnnotation";
|
10100 |
+
const trigger = document.createElement("div");
|
10101 |
+
trigger.style.height = this.container.style.height;
|
10102 |
+
trigger.style.width = this.container.style.width;
|
10103 |
+
trigger.addEventListener("dblclick", this._download.bind(this));
|
10104 |
+
|
10105 |
+
if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
|
10106 |
+
this._createPopup(trigger, this.data);
|
10107 |
+
}
|
10108 |
+
|
10109 |
+
this.container.appendChild(trigger);
|
10110 |
+
return this.container;
|
10111 |
+
}
|
10112 |
+
|
10113 |
+
_download() {
|
10114 |
+
this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);
|
10115 |
+
}
|
10116 |
+
|
10117 |
+
}
|
10118 |
+
|
10119 |
+
class AnnotationLayer {
|
10120 |
+
static render(parameters) {
|
10121 |
+
const sortedAnnotations = [],
|
10122 |
+
popupAnnotations = [];
|
10123 |
+
|
10124 |
+
for (const data of parameters.annotations) {
|
10125 |
+
if (!data) {
|
10126 |
+
continue;
|
10127 |
+
}
|
10128 |
+
|
10129 |
+
if (data.annotationType === _util.AnnotationType.POPUP) {
|
10130 |
+
popupAnnotations.push(data);
|
10131 |
+
continue;
|
10132 |
+
}
|
10133 |
+
|
10134 |
+
sortedAnnotations.push(data);
|
10135 |
+
}
|
10136 |
+
|
10137 |
+
if (popupAnnotations.length) {
|
10138 |
+
sortedAnnotations.push(...popupAnnotations);
|
10139 |
+
}
|
10140 |
+
|
10141 |
+
for (const data of sortedAnnotations) {
|
10142 |
+
const element = AnnotationElementFactory.create({
|
10143 |
+
data,
|
10144 |
+
layer: parameters.div,
|
10145 |
+
page: parameters.page,
|
10146 |
+
viewport: parameters.viewport,
|
10147 |
+
linkService: parameters.linkService,
|
10148 |
+
downloadManager: parameters.downloadManager,
|
10149 |
+
imageResourcesPath: parameters.imageResourcesPath || "",
|
10150 |
+
renderInteractiveForms: parameters.renderInteractiveForms !== false,
|
10151 |
+
svgFactory: new _display_utils.DOMSVGFactory(),
|
10152 |
+
annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),
|
10153 |
+
enableScripting: parameters.enableScripting,
|
10154 |
+
hasJSActions: parameters.hasJSActions,
|
10155 |
+
mouseState: parameters.mouseState || {
|
10156 |
+
isDown: false
|
10157 |
+
}
|
10158 |
+
});
|
10159 |
+
|
10160 |
+
if (element.isRenderable) {
|
10161 |
+
const rendered = element.render();
|
10162 |
+
|
10163 |
+
if (data.hidden) {
|
10164 |
+
rendered.style.visibility = "hidden";
|
10165 |
+
}
|
10166 |
+
|
10167 |
+
if (Array.isArray(rendered)) {
|
10168 |
+
for (const renderedElement of rendered) {
|
10169 |
+
parameters.div.appendChild(renderedElement);
|
10170 |
+
}
|
10171 |
+
} else {
|
10172 |
+
if (element instanceof PopupAnnotationElement) {
|
10173 |
+
parameters.div.prepend(rendered);
|
10174 |
+
} else {
|
10175 |
+
parameters.div.appendChild(rendered);
|
10176 |
+
}
|
10177 |
+
}
|
10178 |
+
}
|
10179 |
+
}
|
10180 |
+
}
|
10181 |
+
|
10182 |
+
static update(parameters) {
|
10183 |
+
const transform = `matrix(${parameters.viewport.transform.join(",")})`;
|
10184 |
+
|
10185 |
+
for (const data of parameters.annotations) {
|
10186 |
+
const elements = parameters.div.querySelectorAll(`[data-annotation-id="${data.id}"]`);
|
10187 |
+
|
10188 |
+
if (elements) {
|
10189 |
+
for (const element of elements) {
|
10190 |
+
element.style.transform = transform;
|
10191 |
+
}
|
10192 |
+
}
|
10193 |
+
}
|
10194 |
+
|
10195 |
+
parameters.div.hidden = false;
|
10196 |
+
}
|
10197 |
+
|
10198 |
+
}
|
10199 |
+
|
10200 |
+
exports.AnnotationLayer = AnnotationLayer;
|
10201 |
+
|
10202 |
+
/***/ }),
|
10203 |
+
/* 18 */
|
10204 |
+
/***/ ((__unused_webpack_module, exports) => {
|
10205 |
+
|
10206 |
+
|
10207 |
+
|
10208 |
+
Object.defineProperty(exports, "__esModule", ({
|
10209 |
+
value: true
|
10210 |
+
}));
|
10211 |
+
exports.ColorConverters = void 0;
|
10212 |
+
|
10213 |
+
function makeColorComp(n) {
|
10214 |
+
return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
|
10215 |
+
}
|
10216 |
+
|
10217 |
+
class ColorConverters {
|
10218 |
+
static CMYK_G([c, y, m, k]) {
|
10219 |
+
return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];
|
10220 |
+
}
|
10221 |
+
|
10222 |
+
static G_CMYK([g]) {
|
10223 |
+
return ["CMYK", 0, 0, 0, 1 - g];
|
10224 |
+
}
|
10225 |
+
|
10226 |
+
static G_RGB([g]) {
|
10227 |
+
return ["RGB", g, g, g];
|
10228 |
+
}
|
10229 |
+
|
10230 |
+
static G_HTML([g]) {
|
10231 |
+
const G = makeColorComp(g);
|
10232 |
+
return `#${G}${G}${G}`;
|
10233 |
+
}
|
10234 |
+
|
10235 |
+
static RGB_G([r, g, b]) {
|
10236 |
+
return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
|
10237 |
+
}
|
10238 |
+
|
10239 |
+
static RGB_HTML([r, g, b]) {
|
10240 |
+
const R = makeColorComp(r);
|
10241 |
+
const G = makeColorComp(g);
|
10242 |
+
const B = makeColorComp(b);
|
10243 |
+
return `#${R}${G}${B}`;
|
10244 |
+
}
|
10245 |
+
|
10246 |
+
static T_HTML() {
|
10247 |
+
return "#00000000";
|
10248 |
+
}
|
10249 |
+
|
10250 |
+
static CMYK_RGB([c, y, m, k]) {
|
10251 |
+
return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];
|
10252 |
+
}
|
10253 |
+
|
10254 |
+
static CMYK_HTML(components) {
|
10255 |
+
return this.RGB_HTML(this.CMYK_RGB(components));
|
10256 |
+
}
|
10257 |
+
|
10258 |
+
static RGB_CMYK([r, g, b]) {
|
10259 |
+
const c = 1 - r;
|
10260 |
+
const m = 1 - g;
|
10261 |
+
const y = 1 - b;
|
10262 |
+
const k = Math.min(c, m, y);
|
10263 |
+
return ["CMYK", c, m, y, k];
|
10264 |
+
}
|
10265 |
+
|
10266 |
+
}
|
10267 |
+
|
10268 |
+
exports.ColorConverters = ColorConverters;
|
10269 |
+
|
10270 |
+
/***/ }),
|
10271 |
+
/* 19 */
|
10272 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
10273 |
+
|
10274 |
+
|
10275 |
+
|
10276 |
+
Object.defineProperty(exports, "__esModule", ({
|
10277 |
+
value: true
|
10278 |
+
}));
|
10279 |
+
exports.renderTextLayer = renderTextLayer;
|
10280 |
+
|
10281 |
+
var _util = __w_pdfjs_require__(2);
|
10282 |
+
|
10283 |
+
const MAX_TEXT_DIVS_TO_RENDER = 100000;
|
10284 |
+
const DEFAULT_FONT_SIZE = 30;
|
10285 |
+
const DEFAULT_FONT_ASCENT = 0.8;
|
10286 |
+
const ascentCache = new Map();
|
10287 |
+
const AllWhitespaceRegexp = /^\s+$/g;
|
10288 |
+
|
10289 |
+
function getAscent(fontFamily, ctx) {
|
10290 |
+
const cachedAscent = ascentCache.get(fontFamily);
|
10291 |
+
|
10292 |
+
if (cachedAscent) {
|
10293 |
+
return cachedAscent;
|
10294 |
+
}
|
10295 |
+
|
10296 |
+
ctx.save();
|
10297 |
+
ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;
|
10298 |
+
const metrics = ctx.measureText("");
|
10299 |
+
let ascent = metrics.fontBoundingBoxAscent;
|
10300 |
+
let descent = Math.abs(metrics.fontBoundingBoxDescent);
|
10301 |
+
|
10302 |
+
if (ascent) {
|
10303 |
+
ctx.restore();
|
10304 |
+
const ratio = ascent / (ascent + descent);
|
10305 |
+
ascentCache.set(fontFamily, ratio);
|
10306 |
+
return ratio;
|
10307 |
+
}
|
10308 |
+
|
10309 |
+
ctx.strokeStyle = "red";
|
10310 |
+
ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
|
10311 |
+
ctx.strokeText("g", 0, 0);
|
10312 |
+
let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
|
10313 |
+
descent = 0;
|
10314 |
+
|
10315 |
+
for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {
|
10316 |
+
if (pixels[i] > 0) {
|
10317 |
+
descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);
|
10318 |
+
break;
|
10319 |
+
}
|
10320 |
+
}
|
10321 |
+
|
10322 |
+
ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
|
10323 |
+
ctx.strokeText("A", 0, DEFAULT_FONT_SIZE);
|
10324 |
+
pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
|
10325 |
+
ascent = 0;
|
10326 |
+
|
10327 |
+
for (let i = 0, ii = pixels.length; i < ii; i += 4) {
|
10328 |
+
if (pixels[i] > 0) {
|
10329 |
+
ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);
|
10330 |
+
break;
|
10331 |
+
}
|
10332 |
+
}
|
10333 |
+
|
10334 |
+
ctx.restore();
|
10335 |
+
|
10336 |
+
if (ascent) {
|
10337 |
+
const ratio = ascent / (ascent + descent);
|
10338 |
+
ascentCache.set(fontFamily, ratio);
|
10339 |
+
return ratio;
|
10340 |
+
}
|
10341 |
+
|
10342 |
+
ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);
|
10343 |
+
return DEFAULT_FONT_ASCENT;
|
10344 |
+
}
|
10345 |
+
|
10346 |
+
function appendText(task, geom, styles, ctx) {
|
10347 |
+
const textDiv = document.createElement("span");
|
10348 |
+
const textDivProperties = {
|
10349 |
+
angle: 0,
|
10350 |
+
canvasWidth: 0,
|
10351 |
+
hasText: geom.str !== "",
|
10352 |
+
hasEOL: geom.hasEOL,
|
10353 |
+
originalTransform: null,
|
10354 |
+
paddingBottom: 0,
|
10355 |
+
paddingLeft: 0,
|
10356 |
+
paddingRight: 0,
|
10357 |
+
paddingTop: 0,
|
10358 |
+
scale: 1
|
10359 |
+
};
|
10360 |
+
|
10361 |
+
task._textDivs.push(textDiv);
|
10362 |
+
|
10363 |
+
const tx = _util.Util.transform(task._viewport.transform, geom.transform);
|
10364 |
+
|
10365 |
+
let angle = Math.atan2(tx[1], tx[0]);
|
10366 |
+
const style = styles[geom.fontName];
|
10367 |
+
|
10368 |
+
if (style.vertical) {
|
10369 |
+
angle += Math.PI / 2;
|
10370 |
+
}
|
10371 |
+
|
10372 |
+
const fontHeight = Math.hypot(tx[2], tx[3]);
|
10373 |
+
const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);
|
10374 |
+
let left, top;
|
10375 |
+
|
10376 |
+
if (angle === 0) {
|
10377 |
+
left = tx[4];
|
10378 |
+
top = tx[5] - fontAscent;
|
10379 |
+
} else {
|
10380 |
+
left = tx[4] + fontAscent * Math.sin(angle);
|
10381 |
+
top = tx[5] - fontAscent * Math.cos(angle);
|
10382 |
+
}
|
10383 |
+
|
10384 |
+
textDiv.style.left = `${left}px`;
|
10385 |
+
textDiv.style.top = `${top}px`;
|
10386 |
+
textDiv.style.fontSize = `${fontHeight}px`;
|
10387 |
+
textDiv.style.fontFamily = style.fontFamily;
|
10388 |
+
textDiv.setAttribute("role", "presentation");
|
10389 |
+
textDiv.textContent = geom.str;
|
10390 |
+
textDiv.dir = geom.dir;
|
10391 |
+
|
10392 |
+
if (task._fontInspectorEnabled) {
|
10393 |
+
textDiv.dataset.fontName = geom.fontName;
|
10394 |
+
}
|
10395 |
+
|
10396 |
+
if (angle !== 0) {
|
10397 |
+
textDivProperties.angle = angle * (180 / Math.PI);
|
10398 |
+
}
|
10399 |
+
|
10400 |
+
let shouldScaleText = false;
|
10401 |
+
|
10402 |
+
if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) {
|
10403 |
+
shouldScaleText = true;
|
10404 |
+
} else if (geom.transform[0] !== geom.transform[3]) {
|
10405 |
+
const absScaleX = Math.abs(geom.transform[0]),
|
10406 |
+
absScaleY = Math.abs(geom.transform[3]);
|
10407 |
+
|
10408 |
+
if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {
|
10409 |
+
shouldScaleText = true;
|
10410 |
+
}
|
10411 |
+
}
|
10412 |
+
|
10413 |
+
if (shouldScaleText) {
|
10414 |
+
if (style.vertical) {
|
10415 |
+
textDivProperties.canvasWidth = geom.height * task._viewport.scale;
|
10416 |
+
} else {
|
10417 |
+
textDivProperties.canvasWidth = geom.width * task._viewport.scale;
|
10418 |
+
}
|
10419 |
+
}
|
10420 |
+
|
10421 |
+
task._textDivProperties.set(textDiv, textDivProperties);
|
10422 |
+
|
10423 |
+
if (task._textContentStream) {
|
10424 |
+
task._layoutText(textDiv);
|
10425 |
+
}
|
10426 |
+
|
10427 |
+
if (task._enhanceTextSelection && textDivProperties.hasText) {
|
10428 |
+
let angleCos = 1,
|
10429 |
+
angleSin = 0;
|
10430 |
+
|
10431 |
+
if (angle !== 0) {
|
10432 |
+
angleCos = Math.cos(angle);
|
10433 |
+
angleSin = Math.sin(angle);
|
10434 |
+
}
|
10435 |
+
|
10436 |
+
const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
|
10437 |
+
const divHeight = fontHeight;
|
10438 |
+
let m, b;
|
10439 |
+
|
10440 |
+
if (angle !== 0) {
|
10441 |
+
m = [angleCos, angleSin, -angleSin, angleCos, left, top];
|
10442 |
+
b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
|
10443 |
+
} else {
|
10444 |
+
b = [left, top, left + divWidth, top + divHeight];
|
10445 |
+
}
|
10446 |
+
|
10447 |
+
task._bounds.push({
|
10448 |
+
left: b[0],
|
10449 |
+
top: b[1],
|
10450 |
+
right: b[2],
|
10451 |
+
bottom: b[3],
|
10452 |
+
div: textDiv,
|
10453 |
+
size: [divWidth, divHeight],
|
10454 |
+
m
|
10455 |
+
});
|
10456 |
+
}
|
10457 |
+
}
|
10458 |
+
|
10459 |
+
function render(task) {
|
10460 |
+
if (task._canceled) {
|
10461 |
+
return;
|
10462 |
+
}
|
10463 |
+
|
10464 |
+
const textDivs = task._textDivs;
|
10465 |
+
const capability = task._capability;
|
10466 |
+
const textDivsLength = textDivs.length;
|
10467 |
+
|
10468 |
+
if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
|
10469 |
+
task._renderingDone = true;
|
10470 |
+
capability.resolve();
|
10471 |
+
return;
|
10472 |
+
}
|
10473 |
+
|
10474 |
+
if (!task._textContentStream) {
|
10475 |
+
for (let i = 0; i < textDivsLength; i++) {
|
10476 |
+
task._layoutText(textDivs[i]);
|
10477 |
+
}
|
10478 |
+
}
|
10479 |
+
|
10480 |
+
task._renderingDone = true;
|
10481 |
+
capability.resolve();
|
10482 |
+
}
|
10483 |
+
|
10484 |
+
function findPositiveMin(ts, offset, count) {
|
10485 |
+
let result = 0;
|
10486 |
+
|
10487 |
+
for (let i = 0; i < count; i++) {
|
10488 |
+
const t = ts[offset++];
|
10489 |
+
|
10490 |
+
if (t > 0) {
|
10491 |
+
result = result ? Math.min(t, result) : t;
|
10492 |
+
}
|
10493 |
+
}
|
10494 |
+
|
10495 |
+
return result;
|
10496 |
+
}
|
10497 |
+
|
10498 |
+
function expand(task) {
|
10499 |
+
const bounds = task._bounds;
|
10500 |
+
const viewport = task._viewport;
|
10501 |
+
const expanded = expandBounds(viewport.width, viewport.height, bounds);
|
10502 |
+
|
10503 |
+
for (let i = 0; i < expanded.length; i++) {
|
10504 |
+
const div = bounds[i].div;
|
10505 |
+
|
10506 |
+
const divProperties = task._textDivProperties.get(div);
|
10507 |
+
|
10508 |
+
if (divProperties.angle === 0) {
|
10509 |
+
divProperties.paddingLeft = bounds[i].left - expanded[i].left;
|
10510 |
+
divProperties.paddingTop = bounds[i].top - expanded[i].top;
|
10511 |
+
divProperties.paddingRight = expanded[i].right - bounds[i].right;
|
10512 |
+
divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
|
10513 |
+
|
10514 |
+
task._textDivProperties.set(div, divProperties);
|
10515 |
+
|
10516 |
+
continue;
|
10517 |
+
}
|
10518 |
+
|
10519 |
+
const e = expanded[i],
|
10520 |
+
b = bounds[i];
|
10521 |
+
const m = b.m,
|
10522 |
+
c = m[0],
|
10523 |
+
s = m[1];
|
10524 |
+
const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
|
10525 |
+
const ts = new Float64Array(64);
|
10526 |
+
|
10527 |
+
for (let j = 0, jj = points.length; j < jj; j++) {
|
10528 |
+
const t = _util.Util.applyTransform(points[j], m);
|
10529 |
+
|
10530 |
+
ts[j + 0] = c && (e.left - t[0]) / c;
|
10531 |
+
ts[j + 4] = s && (e.top - t[1]) / s;
|
10532 |
+
ts[j + 8] = c && (e.right - t[0]) / c;
|
10533 |
+
ts[j + 12] = s && (e.bottom - t[1]) / s;
|
10534 |
+
ts[j + 16] = s && (e.left - t[0]) / -s;
|
10535 |
+
ts[j + 20] = c && (e.top - t[1]) / c;
|
10536 |
+
ts[j + 24] = s && (e.right - t[0]) / -s;
|
10537 |
+
ts[j + 28] = c && (e.bottom - t[1]) / c;
|
10538 |
+
ts[j + 32] = c && (e.left - t[0]) / -c;
|
10539 |
+
ts[j + 36] = s && (e.top - t[1]) / -s;
|
10540 |
+
ts[j + 40] = c && (e.right - t[0]) / -c;
|
10541 |
+
ts[j + 44] = s && (e.bottom - t[1]) / -s;
|
10542 |
+
ts[j + 48] = s && (e.left - t[0]) / s;
|
10543 |
+
ts[j + 52] = c && (e.top - t[1]) / -c;
|
10544 |
+
ts[j + 56] = s && (e.right - t[0]) / s;
|
10545 |
+
ts[j + 60] = c && (e.bottom - t[1]) / -c;
|
10546 |
+
}
|
10547 |
+
|
10548 |
+
const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
|
10549 |
+
divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
|
10550 |
+
divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
|
10551 |
+
divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
|
10552 |
+
divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
|
10553 |
+
|
10554 |
+
task._textDivProperties.set(div, divProperties);
|
10555 |
+
}
|
10556 |
+
}
|
10557 |
+
|
10558 |
+
function expandBounds(width, height, boxes) {
|
10559 |
+
const bounds = boxes.map(function (box, i) {
|
10560 |
+
return {
|
10561 |
+
x1: box.left,
|
10562 |
+
y1: box.top,
|
10563 |
+
x2: box.right,
|
10564 |
+
y2: box.bottom,
|
10565 |
+
index: i,
|
10566 |
+
x1New: undefined,
|
10567 |
+
x2New: undefined
|
10568 |
+
};
|
10569 |
+
});
|
10570 |
+
expandBoundsLTR(width, bounds);
|
10571 |
+
const expanded = new Array(boxes.length);
|
10572 |
+
|
10573 |
+
for (const b of bounds) {
|
10574 |
+
const i = b.index;
|
10575 |
+
expanded[i] = {
|
10576 |
+
left: b.x1New,
|
10577 |
+
top: 0,
|
10578 |
+
right: b.x2New,
|
10579 |
+
bottom: 0
|
10580 |
+
};
|
10581 |
+
}
|
10582 |
+
|
10583 |
+
boxes.map(function (box, i) {
|
10584 |
+
const e = expanded[i],
|
10585 |
+
b = bounds[i];
|
10586 |
+
b.x1 = box.top;
|
10587 |
+
b.y1 = width - e.right;
|
10588 |
+
b.x2 = box.bottom;
|
10589 |
+
b.y2 = width - e.left;
|
10590 |
+
b.index = i;
|
10591 |
+
b.x1New = undefined;
|
10592 |
+
b.x2New = undefined;
|
10593 |
+
});
|
10594 |
+
expandBoundsLTR(height, bounds);
|
10595 |
+
|
10596 |
+
for (const b of bounds) {
|
10597 |
+
const i = b.index;
|
10598 |
+
expanded[i].top = b.x1New;
|
10599 |
+
expanded[i].bottom = b.x2New;
|
10600 |
+
}
|
10601 |
+
|
10602 |
+
return expanded;
|
10603 |
+
}
|
10604 |
+
|
10605 |
+
function expandBoundsLTR(width, bounds) {
|
10606 |
+
bounds.sort(function (a, b) {
|
10607 |
+
return a.x1 - b.x1 || a.index - b.index;
|
10608 |
+
});
|
10609 |
+
const fakeBoundary = {
|
10610 |
+
x1: -Infinity,
|
10611 |
+
y1: -Infinity,
|
10612 |
+
x2: 0,
|
10613 |
+
y2: Infinity,
|
10614 |
+
index: -1,
|
10615 |
+
x1New: 0,
|
10616 |
+
x2New: 0
|
10617 |
+
};
|
10618 |
+
const horizon = [{
|
10619 |
+
start: -Infinity,
|
10620 |
+
end: Infinity,
|
10621 |
+
boundary: fakeBoundary
|
10622 |
+
}];
|
10623 |
+
|
10624 |
+
for (const boundary of bounds) {
|
10625 |
+
let i = 0;
|
10626 |
+
|
10627 |
+
while (i < horizon.length && horizon[i].end <= boundary.y1) {
|
10628 |
+
i++;
|
10629 |
+
}
|
10630 |
+
|
10631 |
+
let j = horizon.length - 1;
|
10632 |
+
|
10633 |
+
while (j >= 0 && horizon[j].start >= boundary.y2) {
|
10634 |
+
j--;
|
10635 |
+
}
|
10636 |
+
|
10637 |
+
let horizonPart, affectedBoundary;
|
10638 |
+
let q,
|
10639 |
+
k,
|
10640 |
+
maxXNew = -Infinity;
|
10641 |
+
|
10642 |
+
for (q = i; q <= j; q++) {
|
10643 |
+
horizonPart = horizon[q];
|
10644 |
+
affectedBoundary = horizonPart.boundary;
|
10645 |
+
let xNew;
|
10646 |
+
|
10647 |
+
if (affectedBoundary.x2 > boundary.x1) {
|
10648 |
+
xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
|
10649 |
+
} else if (affectedBoundary.x2New === undefined) {
|
10650 |
+
xNew = (affectedBoundary.x2 + boundary.x1) / 2;
|
10651 |
+
} else {
|
10652 |
+
xNew = affectedBoundary.x2New;
|
10653 |
+
}
|
10654 |
+
|
10655 |
+
if (xNew > maxXNew) {
|
10656 |
+
maxXNew = xNew;
|
10657 |
+
}
|
10658 |
+
}
|
10659 |
+
|
10660 |
+
boundary.x1New = maxXNew;
|
10661 |
+
|
10662 |
+
for (q = i; q <= j; q++) {
|
10663 |
+
horizonPart = horizon[q];
|
10664 |
+
affectedBoundary = horizonPart.boundary;
|
10665 |
+
|
10666 |
+
if (affectedBoundary.x2New === undefined) {
|
10667 |
+
if (affectedBoundary.x2 > boundary.x1) {
|
10668 |
+
if (affectedBoundary.index > boundary.index) {
|
10669 |
+
affectedBoundary.x2New = affectedBoundary.x2;
|
10670 |
+
}
|
10671 |
+
} else {
|
10672 |
+
affectedBoundary.x2New = maxXNew;
|
10673 |
+
}
|
10674 |
+
} else if (affectedBoundary.x2New > maxXNew) {
|
10675 |
+
affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
|
10676 |
+
}
|
10677 |
+
}
|
10678 |
+
|
10679 |
+
const changedHorizon = [];
|
10680 |
+
let lastBoundary = null;
|
10681 |
+
|
10682 |
+
for (q = i; q <= j; q++) {
|
10683 |
+
horizonPart = horizon[q];
|
10684 |
+
affectedBoundary = horizonPart.boundary;
|
10685 |
+
const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
|
10686 |
+
|
10687 |
+
if (lastBoundary === useBoundary) {
|
10688 |
+
changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
|
10689 |
+
} else {
|
10690 |
+
changedHorizon.push({
|
10691 |
+
start: horizonPart.start,
|
10692 |
+
end: horizonPart.end,
|
10693 |
+
boundary: useBoundary
|
10694 |
+
});
|
10695 |
+
lastBoundary = useBoundary;
|
10696 |
+
}
|
10697 |
+
}
|
10698 |
+
|
10699 |
+
if (horizon[i].start < boundary.y1) {
|
10700 |
+
changedHorizon[0].start = boundary.y1;
|
10701 |
+
changedHorizon.unshift({
|
10702 |
+
start: horizon[i].start,
|
10703 |
+
end: boundary.y1,
|
10704 |
+
boundary: horizon[i].boundary
|
10705 |
+
});
|
10706 |
+
}
|
10707 |
+
|
10708 |
+
if (boundary.y2 < horizon[j].end) {
|
10709 |
+
changedHorizon[changedHorizon.length - 1].end = boundary.y2;
|
10710 |
+
changedHorizon.push({
|
10711 |
+
start: boundary.y2,
|
10712 |
+
end: horizon[j].end,
|
10713 |
+
boundary: horizon[j].boundary
|
10714 |
+
});
|
10715 |
+
}
|
10716 |
+
|
10717 |
+
for (q = i; q <= j; q++) {
|
10718 |
+
horizonPart = horizon[q];
|
10719 |
+
affectedBoundary = horizonPart.boundary;
|
10720 |
+
|
10721 |
+
if (affectedBoundary.x2New !== undefined) {
|
10722 |
+
continue;
|
10723 |
+
}
|
10724 |
+
|
10725 |
+
let used = false;
|
10726 |
+
|
10727 |
+
for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
|
10728 |
+
used = horizon[k].boundary === affectedBoundary;
|
10729 |
+
}
|
10730 |
+
|
10731 |
+
for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
|
10732 |
+
used = horizon[k].boundary === affectedBoundary;
|
10733 |
+
}
|
10734 |
+
|
10735 |
+
for (k = 0; !used && k < changedHorizon.length; k++) {
|
10736 |
+
used = changedHorizon[k].boundary === affectedBoundary;
|
10737 |
+
}
|
10738 |
+
|
10739 |
+
if (!used) {
|
10740 |
+
affectedBoundary.x2New = maxXNew;
|
10741 |
+
}
|
10742 |
+
}
|
10743 |
+
|
10744 |
+
Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
|
10745 |
+
}
|
10746 |
+
|
10747 |
+
for (const horizonPart of horizon) {
|
10748 |
+
const affectedBoundary = horizonPart.boundary;
|
10749 |
+
|
10750 |
+
if (affectedBoundary.x2New === undefined) {
|
10751 |
+
affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
|
10752 |
+
}
|
10753 |
+
}
|
10754 |
+
}
|
10755 |
+
|
10756 |
+
class TextLayerRenderTask {
|
10757 |
+
constructor({
|
10758 |
+
textContent,
|
10759 |
+
textContentStream,
|
10760 |
+
container,
|
10761 |
+
viewport,
|
10762 |
+
textDivs,
|
10763 |
+
textContentItemsStr,
|
10764 |
+
enhanceTextSelection
|
10765 |
+
}) {
|
10766 |
+
this._textContent = textContent;
|
10767 |
+
this._textContentStream = textContentStream;
|
10768 |
+
this._container = container;
|
10769 |
+
this._document = container.ownerDocument;
|
10770 |
+
this._viewport = viewport;
|
10771 |
+
this._textDivs = textDivs || [];
|
10772 |
+
this._textContentItemsStr = textContentItemsStr || [];
|
10773 |
+
this._enhanceTextSelection = !!enhanceTextSelection;
|
10774 |
+
this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;
|
10775 |
+
this._reader = null;
|
10776 |
+
this._layoutTextLastFontSize = null;
|
10777 |
+
this._layoutTextLastFontFamily = null;
|
10778 |
+
this._layoutTextCtx = null;
|
10779 |
+
this._textDivProperties = new WeakMap();
|
10780 |
+
this._renderingDone = false;
|
10781 |
+
this._canceled = false;
|
10782 |
+
this._capability = (0, _util.createPromiseCapability)();
|
10783 |
+
this._renderTimer = null;
|
10784 |
+
this._bounds = [];
|
10785 |
+
|
10786 |
+
this._capability.promise.finally(() => {
|
10787 |
+
if (this._layoutTextCtx) {
|
10788 |
+
this._layoutTextCtx.canvas.width = 0;
|
10789 |
+
this._layoutTextCtx.canvas.height = 0;
|
10790 |
+
this._layoutTextCtx = null;
|
10791 |
+
}
|
10792 |
+
}).catch(() => {});
|
10793 |
+
}
|
10794 |
+
|
10795 |
+
get promise() {
|
10796 |
+
return this._capability.promise;
|
10797 |
+
}
|
10798 |
+
|
10799 |
+
cancel() {
|
10800 |
+
this._canceled = true;
|
10801 |
+
|
10802 |
+
if (this._reader) {
|
10803 |
+
this._reader.cancel(new _util.AbortException("TextLayer task cancelled."));
|
10804 |
+
|
10805 |
+
this._reader = null;
|
10806 |
+
}
|
10807 |
+
|
10808 |
+
if (this._renderTimer !== null) {
|
10809 |
+
clearTimeout(this._renderTimer);
|
10810 |
+
this._renderTimer = null;
|
10811 |
+
}
|
10812 |
+
|
10813 |
+
this._capability.reject(new Error("TextLayer task cancelled."));
|
10814 |
+
}
|
10815 |
+
|
10816 |
+
_processItems(items, styleCache) {
|
10817 |
+
for (let i = 0, len = items.length; i < len; i++) {
|
10818 |
+
if (items[i].str === undefined) {
|
10819 |
+
if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") {
|
10820 |
+
const parent = this._container;
|
10821 |
+
this._container = document.createElement("span");
|
10822 |
+
|
10823 |
+
this._container.classList.add("markedContent");
|
10824 |
+
|
10825 |
+
if (items[i].id !== null) {
|
10826 |
+
this._container.setAttribute("id", `${items[i].id}`);
|
10827 |
+
}
|
10828 |
+
|
10829 |
+
parent.appendChild(this._container);
|
10830 |
+
} else if (items[i].type === "endMarkedContent") {
|
10831 |
+
this._container = this._container.parentNode;
|
10832 |
+
}
|
10833 |
+
|
10834 |
+
continue;
|
10835 |
+
}
|
10836 |
+
|
10837 |
+
this._textContentItemsStr.push(items[i].str);
|
10838 |
+
|
10839 |
+
appendText(this, items[i], styleCache, this._layoutTextCtx);
|
10840 |
+
}
|
10841 |
+
}
|
10842 |
+
|
10843 |
+
_layoutText(textDiv) {
|
10844 |
+
const textDivProperties = this._textDivProperties.get(textDiv);
|
10845 |
+
|
10846 |
+
let transform = "";
|
10847 |
+
|
10848 |
+
if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {
|
10849 |
+
const {
|
10850 |
+
fontSize,
|
10851 |
+
fontFamily
|
10852 |
+
} = textDiv.style;
|
10853 |
+
|
10854 |
+
if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
|
10855 |
+
this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;
|
10856 |
+
this._layoutTextLastFontSize = fontSize;
|
10857 |
+
this._layoutTextLastFontFamily = fontFamily;
|
10858 |
+
}
|
10859 |
+
|
10860 |
+
const {
|
10861 |
+
width
|
10862 |
+
} = this._layoutTextCtx.measureText(textDiv.textContent);
|
10863 |
+
|
10864 |
+
if (width > 0) {
|
10865 |
+
textDivProperties.scale = textDivProperties.canvasWidth / width;
|
10866 |
+
transform = `scaleX(${textDivProperties.scale})`;
|
10867 |
+
}
|
10868 |
+
}
|
10869 |
+
|
10870 |
+
if (textDivProperties.angle !== 0) {
|
10871 |
+
transform = `rotate(${textDivProperties.angle}deg) ${transform}`;
|
10872 |
+
}
|
10873 |
+
|
10874 |
+
if (transform.length > 0) {
|
10875 |
+
if (this._enhanceTextSelection) {
|
10876 |
+
textDivProperties.originalTransform = transform;
|
10877 |
+
}
|
10878 |
+
|
10879 |
+
textDiv.style.transform = transform;
|
10880 |
+
}
|
10881 |
+
|
10882 |
+
if (textDivProperties.hasText) {
|
10883 |
+
this._container.appendChild(textDiv);
|
10884 |
+
}
|
10885 |
+
|
10886 |
+
if (textDivProperties.hasEOL) {
|
10887 |
+
const br = document.createElement("br");
|
10888 |
+
br.setAttribute("role", "presentation");
|
10889 |
+
|
10890 |
+
this._container.appendChild(br);
|
10891 |
+
}
|
10892 |
+
}
|
10893 |
+
|
10894 |
+
_render(timeout = 0) {
|
10895 |
+
const capability = (0, _util.createPromiseCapability)();
|
10896 |
+
let styleCache = Object.create(null);
|
10897 |
+
|
10898 |
+
const canvas = this._document.createElement("canvas");
|
10899 |
+
|
10900 |
+
canvas.height = canvas.width = DEFAULT_FONT_SIZE;
|
10901 |
+
canvas.mozOpaque = true;
|
10902 |
+
this._layoutTextCtx = canvas.getContext("2d", {
|
10903 |
+
alpha: false
|
10904 |
+
});
|
10905 |
+
|
10906 |
+
if (this._textContent) {
|
10907 |
+
const textItems = this._textContent.items;
|
10908 |
+
const textStyles = this._textContent.styles;
|
10909 |
+
|
10910 |
+
this._processItems(textItems, textStyles);
|
10911 |
+
|
10912 |
+
capability.resolve();
|
10913 |
+
} else if (this._textContentStream) {
|
10914 |
+
const pump = () => {
|
10915 |
+
this._reader.read().then(({
|
10916 |
+
value,
|
10917 |
+
done
|
10918 |
+
}) => {
|
10919 |
+
if (done) {
|
10920 |
+
capability.resolve();
|
10921 |
+
return;
|
10922 |
+
}
|
10923 |
+
|
10924 |
+
Object.assign(styleCache, value.styles);
|
10925 |
+
|
10926 |
+
this._processItems(value.items, styleCache);
|
10927 |
+
|
10928 |
+
pump();
|
10929 |
+
}, capability.reject);
|
10930 |
+
};
|
10931 |
+
|
10932 |
+
this._reader = this._textContentStream.getReader();
|
10933 |
+
pump();
|
10934 |
+
} else {
|
10935 |
+
throw new Error('Neither "textContent" nor "textContentStream"' + " parameters specified.");
|
10936 |
+
}
|
10937 |
+
|
10938 |
+
capability.promise.then(() => {
|
10939 |
+
styleCache = null;
|
10940 |
+
|
10941 |
+
if (!timeout) {
|
10942 |
+
render(this);
|
10943 |
+
} else {
|
10944 |
+
this._renderTimer = setTimeout(() => {
|
10945 |
+
render(this);
|
10946 |
+
this._renderTimer = null;
|
10947 |
+
}, timeout);
|
10948 |
+
}
|
10949 |
+
}, this._capability.reject);
|
10950 |
+
}
|
10951 |
+
|
10952 |
+
expandTextDivs(expandDivs = false) {
|
10953 |
+
if (!this._enhanceTextSelection || !this._renderingDone) {
|
10954 |
+
return;
|
10955 |
+
}
|
10956 |
+
|
10957 |
+
if (this._bounds !== null) {
|
10958 |
+
expand(this);
|
10959 |
+
this._bounds = null;
|
10960 |
+
}
|
10961 |
+
|
10962 |
+
const transformBuf = [],
|
10963 |
+
paddingBuf = [];
|
10964 |
+
|
10965 |
+
for (let i = 0, ii = this._textDivs.length; i < ii; i++) {
|
10966 |
+
const div = this._textDivs[i];
|
10967 |
+
|
10968 |
+
const divProps = this._textDivProperties.get(div);
|
10969 |
+
|
10970 |
+
if (!divProps.hasText) {
|
10971 |
+
continue;
|
10972 |
+
}
|
10973 |
+
|
10974 |
+
if (expandDivs) {
|
10975 |
+
transformBuf.length = 0;
|
10976 |
+
paddingBuf.length = 0;
|
10977 |
+
|
10978 |
+
if (divProps.originalTransform) {
|
10979 |
+
transformBuf.push(divProps.originalTransform);
|
10980 |
+
}
|
10981 |
+
|
10982 |
+
if (divProps.paddingTop > 0) {
|
10983 |
+
paddingBuf.push(`${divProps.paddingTop}px`);
|
10984 |
+
transformBuf.push(`translateY(${-divProps.paddingTop}px)`);
|
10985 |
+
} else {
|
10986 |
+
paddingBuf.push(0);
|
10987 |
+
}
|
10988 |
+
|
10989 |
+
if (divProps.paddingRight > 0) {
|
10990 |
+
paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);
|
10991 |
+
} else {
|
10992 |
+
paddingBuf.push(0);
|
10993 |
+
}
|
10994 |
+
|
10995 |
+
if (divProps.paddingBottom > 0) {
|
10996 |
+
paddingBuf.push(`${divProps.paddingBottom}px`);
|
10997 |
+
} else {
|
10998 |
+
paddingBuf.push(0);
|
10999 |
+
}
|
11000 |
+
|
11001 |
+
if (divProps.paddingLeft > 0) {
|
11002 |
+
paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);
|
11003 |
+
transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);
|
11004 |
+
} else {
|
11005 |
+
paddingBuf.push(0);
|
11006 |
+
}
|
11007 |
+
|
11008 |
+
div.style.padding = paddingBuf.join(" ");
|
11009 |
+
|
11010 |
+
if (transformBuf.length) {
|
11011 |
+
div.style.transform = transformBuf.join(" ");
|
11012 |
+
}
|
11013 |
+
} else {
|
11014 |
+
div.style.padding = null;
|
11015 |
+
div.style.transform = divProps.originalTransform;
|
11016 |
+
}
|
11017 |
+
}
|
11018 |
+
}
|
11019 |
+
|
11020 |
+
}
|
11021 |
+
|
11022 |
+
function renderTextLayer(renderParameters) {
|
11023 |
+
const task = new TextLayerRenderTask({
|
11024 |
+
textContent: renderParameters.textContent,
|
11025 |
+
textContentStream: renderParameters.textContentStream,
|
11026 |
+
container: renderParameters.container,
|
11027 |
+
viewport: renderParameters.viewport,
|
11028 |
+
textDivs: renderParameters.textDivs,
|
11029 |
+
textContentItemsStr: renderParameters.textContentItemsStr,
|
11030 |
+
enhanceTextSelection: renderParameters.enhanceTextSelection
|
11031 |
+
});
|
11032 |
+
|
11033 |
+
task._render(renderParameters.timeout);
|
11034 |
+
|
11035 |
+
return task;
|
11036 |
+
}
|
11037 |
+
|
11038 |
+
/***/ }),
|
11039 |
+
/* 20 */
|
11040 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
11041 |
+
|
11042 |
+
|
11043 |
+
|
11044 |
+
Object.defineProperty(exports, "__esModule", ({
|
11045 |
+
value: true
|
11046 |
+
}));
|
11047 |
+
exports.SVGGraphics = void 0;
|
11048 |
+
|
11049 |
+
var _util = __w_pdfjs_require__(2);
|
11050 |
+
|
11051 |
+
var _display_utils = __w_pdfjs_require__(1);
|
11052 |
+
|
11053 |
+
var _is_node = __w_pdfjs_require__(4);
|
11054 |
+
|
11055 |
+
let SVGGraphics = class {
|
11056 |
+
constructor() {
|
11057 |
+
(0, _util.unreachable)("Not implemented: SVGGraphics");
|
11058 |
+
}
|
11059 |
+
|
11060 |
+
};
|
11061 |
+
exports.SVGGraphics = SVGGraphics;
|
11062 |
+
{
|
11063 |
+
const SVG_DEFAULTS = {
|
11064 |
+
fontStyle: "normal",
|
11065 |
+
fontWeight: "normal",
|
11066 |
+
fillColor: "#000000"
|
11067 |
+
};
|
11068 |
+
const XML_NS = "http://www.w3.org/XML/1998/namespace";
|
11069 |
+
const XLINK_NS = "http://www.w3.org/1999/xlink";
|
11070 |
+
const LINE_CAP_STYLES = ["butt", "round", "square"];
|
11071 |
+
const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
|
11072 |
+
|
11073 |
+
const convertImgDataToPng = function () {
|
11074 |
+
const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
11075 |
+
const CHUNK_WRAPPER_SIZE = 12;
|
11076 |
+
const crcTable = new Int32Array(256);
|
11077 |
+
|
11078 |
+
for (let i = 0; i < 256; i++) {
|
11079 |
+
let c = i;
|
11080 |
+
|
11081 |
+
for (let h = 0; h < 8; h++) {
|
11082 |
+
if (c & 1) {
|
11083 |
+
c = 0xedb88320 ^ c >> 1 & 0x7fffffff;
|
11084 |
+
} else {
|
11085 |
+
c = c >> 1 & 0x7fffffff;
|
11086 |
+
}
|
11087 |
+
}
|
11088 |
+
|
11089 |
+
crcTable[i] = c;
|
11090 |
+
}
|
11091 |
+
|
11092 |
+
function crc32(data, start, end) {
|
11093 |
+
let crc = -1;
|
11094 |
+
|
11095 |
+
for (let i = start; i < end; i++) {
|
11096 |
+
const a = (crc ^ data[i]) & 0xff;
|
11097 |
+
const b = crcTable[a];
|
11098 |
+
crc = crc >>> 8 ^ b;
|
11099 |
+
}
|
11100 |
+
|
11101 |
+
return crc ^ -1;
|
11102 |
+
}
|
11103 |
+
|
11104 |
+
function writePngChunk(type, body, data, offset) {
|
11105 |
+
let p = offset;
|
11106 |
+
const len = body.length;
|
11107 |
+
data[p] = len >> 24 & 0xff;
|
11108 |
+
data[p + 1] = len >> 16 & 0xff;
|
11109 |
+
data[p + 2] = len >> 8 & 0xff;
|
11110 |
+
data[p + 3] = len & 0xff;
|
11111 |
+
p += 4;
|
11112 |
+
data[p] = type.charCodeAt(0) & 0xff;
|
11113 |
+
data[p + 1] = type.charCodeAt(1) & 0xff;
|
11114 |
+
data[p + 2] = type.charCodeAt(2) & 0xff;
|
11115 |
+
data[p + 3] = type.charCodeAt(3) & 0xff;
|
11116 |
+
p += 4;
|
11117 |
+
data.set(body, p);
|
11118 |
+
p += body.length;
|
11119 |
+
const crc = crc32(data, offset + 4, p);
|
11120 |
+
data[p] = crc >> 24 & 0xff;
|
11121 |
+
data[p + 1] = crc >> 16 & 0xff;
|
11122 |
+
data[p + 2] = crc >> 8 & 0xff;
|
11123 |
+
data[p + 3] = crc & 0xff;
|
11124 |
+
}
|
11125 |
+
|
11126 |
+
function adler32(data, start, end) {
|
11127 |
+
let a = 1;
|
11128 |
+
let b = 0;
|
11129 |
+
|
11130 |
+
for (let i = start; i < end; ++i) {
|
11131 |
+
a = (a + (data[i] & 0xff)) % 65521;
|
11132 |
+
b = (b + a) % 65521;
|
11133 |
+
}
|
11134 |
+
|
11135 |
+
return b << 16 | a;
|
11136 |
+
}
|
11137 |
+
|
11138 |
+
function deflateSync(literals) {
|
11139 |
+
if (!_is_node.isNodeJS) {
|
11140 |
+
return deflateSyncUncompressed(literals);
|
11141 |
+
}
|
11142 |
+
|
11143 |
+
try {
|
11144 |
+
let input;
|
11145 |
+
|
11146 |
+
if (parseInt(process.versions.node) >= 8) {
|
11147 |
+
input = literals;
|
11148 |
+
} else {
|
11149 |
+
input = Buffer.from(literals);
|
11150 |
+
}
|
11151 |
+
|
11152 |
+
const output = require("zlib").deflateSync(input, {
|
11153 |
+
level: 9
|
11154 |
+
});
|
11155 |
+
|
11156 |
+
return output instanceof Uint8Array ? output : new Uint8Array(output);
|
11157 |
+
} catch (e) {
|
11158 |
+
(0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e);
|
11159 |
+
}
|
11160 |
+
|
11161 |
+
return deflateSyncUncompressed(literals);
|
11162 |
+
}
|
11163 |
+
|
11164 |
+
function deflateSyncUncompressed(literals) {
|
11165 |
+
let len = literals.length;
|
11166 |
+
const maxBlockLength = 0xffff;
|
11167 |
+
const deflateBlocks = Math.ceil(len / maxBlockLength);
|
11168 |
+
const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
|
11169 |
+
let pi = 0;
|
11170 |
+
idat[pi++] = 0x78;
|
11171 |
+
idat[pi++] = 0x9c;
|
11172 |
+
let pos = 0;
|
11173 |
+
|
11174 |
+
while (len > maxBlockLength) {
|
11175 |
+
idat[pi++] = 0x00;
|
11176 |
+
idat[pi++] = 0xff;
|
11177 |
+
idat[pi++] = 0xff;
|
11178 |
+
idat[pi++] = 0x00;
|
11179 |
+
idat[pi++] = 0x00;
|
11180 |
+
idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
|
11181 |
+
pi += maxBlockLength;
|
11182 |
+
pos += maxBlockLength;
|
11183 |
+
len -= maxBlockLength;
|
11184 |
+
}
|
11185 |
+
|
11186 |
+
idat[pi++] = 0x01;
|
11187 |
+
idat[pi++] = len & 0xff;
|
11188 |
+
idat[pi++] = len >> 8 & 0xff;
|
11189 |
+
idat[pi++] = ~len & 0xffff & 0xff;
|
11190 |
+
idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
|
11191 |
+
idat.set(literals.subarray(pos), pi);
|
11192 |
+
pi += literals.length - pos;
|
11193 |
+
const adler = adler32(literals, 0, literals.length);
|
11194 |
+
idat[pi++] = adler >> 24 & 0xff;
|
11195 |
+
idat[pi++] = adler >> 16 & 0xff;
|
11196 |
+
idat[pi++] = adler >> 8 & 0xff;
|
11197 |
+
idat[pi++] = adler & 0xff;
|
11198 |
+
return idat;
|
11199 |
+
}
|
11200 |
+
|
11201 |
+
function encode(imgData, kind, forceDataSchema, isMask) {
|
11202 |
+
const width = imgData.width;
|
11203 |
+
const height = imgData.height;
|
11204 |
+
let bitDepth, colorType, lineSize;
|
11205 |
+
const bytes = imgData.data;
|
11206 |
+
|
11207 |
+
switch (kind) {
|
11208 |
+
case _util.ImageKind.GRAYSCALE_1BPP:
|
11209 |
+
colorType = 0;
|
11210 |
+
bitDepth = 1;
|
11211 |
+
lineSize = width + 7 >> 3;
|
11212 |
+
break;
|
11213 |
+
|
11214 |
+
case _util.ImageKind.RGB_24BPP:
|
11215 |
+
colorType = 2;
|
11216 |
+
bitDepth = 8;
|
11217 |
+
lineSize = width * 3;
|
11218 |
+
break;
|
11219 |
+
|
11220 |
+
case _util.ImageKind.RGBA_32BPP:
|
11221 |
+
colorType = 6;
|
11222 |
+
bitDepth = 8;
|
11223 |
+
lineSize = width * 4;
|
11224 |
+
break;
|
11225 |
+
|
11226 |
+
default:
|
11227 |
+
throw new Error("invalid format");
|
11228 |
+
}
|
11229 |
+
|
11230 |
+
const literals = new Uint8Array((1 + lineSize) * height);
|
11231 |
+
let offsetLiterals = 0,
|
11232 |
+
offsetBytes = 0;
|
11233 |
+
|
11234 |
+
for (let y = 0; y < height; ++y) {
|
11235 |
+
literals[offsetLiterals++] = 0;
|
11236 |
+
literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
|
11237 |
+
offsetBytes += lineSize;
|
11238 |
+
offsetLiterals += lineSize;
|
11239 |
+
}
|
11240 |
+
|
11241 |
+
if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
|
11242 |
+
offsetLiterals = 0;
|
11243 |
+
|
11244 |
+
for (let y = 0; y < height; y++) {
|
11245 |
+
offsetLiterals++;
|
11246 |
+
|
11247 |
+
for (let i = 0; i < lineSize; i++) {
|
11248 |
+
literals[offsetLiterals++] ^= 0xff;
|
11249 |
+
}
|
11250 |
+
}
|
11251 |
+
}
|
11252 |
+
|
11253 |
+
const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);
|
11254 |
+
const idat = deflateSync(literals);
|
11255 |
+
const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
|
11256 |
+
const data = new Uint8Array(pngLength);
|
11257 |
+
let offset = 0;
|
11258 |
+
data.set(PNG_HEADER, offset);
|
11259 |
+
offset += PNG_HEADER.length;
|
11260 |
+
writePngChunk("IHDR", ihdr, data, offset);
|
11261 |
+
offset += CHUNK_WRAPPER_SIZE + ihdr.length;
|
11262 |
+
writePngChunk("IDATA", idat, data, offset);
|
11263 |
+
offset += CHUNK_WRAPPER_SIZE + idat.length;
|
11264 |
+
writePngChunk("IEND", new Uint8Array(0), data, offset);
|
11265 |
+
return (0, _util.createObjectURL)(data, "image/png", forceDataSchema);
|
11266 |
+
}
|
11267 |
+
|
11268 |
+
return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
|
11269 |
+
const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
|
11270 |
+
return encode(imgData, kind, forceDataSchema, isMask);
|
11271 |
+
};
|
11272 |
+
}();
|
11273 |
+
|
11274 |
+
class SVGExtraState {
|
11275 |
+
constructor() {
|
11276 |
+
this.fontSizeScale = 1;
|
11277 |
+
this.fontWeight = SVG_DEFAULTS.fontWeight;
|
11278 |
+
this.fontSize = 0;
|
11279 |
+
this.textMatrix = _util.IDENTITY_MATRIX;
|
11280 |
+
this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
|
11281 |
+
this.leading = 0;
|
11282 |
+
this.textRenderingMode = _util.TextRenderingMode.FILL;
|
11283 |
+
this.textMatrixScale = 1;
|
11284 |
+
this.x = 0;
|
11285 |
+
this.y = 0;
|
11286 |
+
this.lineX = 0;
|
11287 |
+
this.lineY = 0;
|
11288 |
+
this.charSpacing = 0;
|
11289 |
+
this.wordSpacing = 0;
|
11290 |
+
this.textHScale = 1;
|
11291 |
+
this.textRise = 0;
|
11292 |
+
this.fillColor = SVG_DEFAULTS.fillColor;
|
11293 |
+
this.strokeColor = "#000000";
|
11294 |
+
this.fillAlpha = 1;
|
11295 |
+
this.strokeAlpha = 1;
|
11296 |
+
this.lineWidth = 1;
|
11297 |
+
this.lineJoin = "";
|
11298 |
+
this.lineCap = "";
|
11299 |
+
this.miterLimit = 0;
|
11300 |
+
this.dashArray = [];
|
11301 |
+
this.dashPhase = 0;
|
11302 |
+
this.dependencies = [];
|
11303 |
+
this.activeClipUrl = null;
|
11304 |
+
this.clipGroup = null;
|
11305 |
+
this.maskId = "";
|
11306 |
+
}
|
11307 |
+
|
11308 |
+
clone() {
|
11309 |
+
return Object.create(this);
|
11310 |
+
}
|
11311 |
+
|
11312 |
+
setCurrentPoint(x, y) {
|
11313 |
+
this.x = x;
|
11314 |
+
this.y = y;
|
11315 |
+
}
|
11316 |
+
|
11317 |
+
}
|
11318 |
+
|
11319 |
+
function opListToTree(opList) {
|
11320 |
+
let opTree = [];
|
11321 |
+
const tmp = [];
|
11322 |
+
|
11323 |
+
for (const opListElement of opList) {
|
11324 |
+
if (opListElement.fn === "save") {
|
11325 |
+
opTree.push({
|
11326 |
+
fnId: 92,
|
11327 |
+
fn: "group",
|
11328 |
+
items: []
|
11329 |
+
});
|
11330 |
+
tmp.push(opTree);
|
11331 |
+
opTree = opTree[opTree.length - 1].items;
|
11332 |
+
continue;
|
11333 |
+
}
|
11334 |
+
|
11335 |
+
if (opListElement.fn === "restore") {
|
11336 |
+
opTree = tmp.pop();
|
11337 |
+
} else {
|
11338 |
+
opTree.push(opListElement);
|
11339 |
+
}
|
11340 |
+
}
|
11341 |
+
|
11342 |
+
return opTree;
|
11343 |
+
}
|
11344 |
+
|
11345 |
+
function pf(value) {
|
11346 |
+
if (Number.isInteger(value)) {
|
11347 |
+
return value.toString();
|
11348 |
+
}
|
11349 |
+
|
11350 |
+
const s = value.toFixed(10);
|
11351 |
+
let i = s.length - 1;
|
11352 |
+
|
11353 |
+
if (s[i] !== "0") {
|
11354 |
+
return s;
|
11355 |
+
}
|
11356 |
+
|
11357 |
+
do {
|
11358 |
+
i--;
|
11359 |
+
} while (s[i] === "0");
|
11360 |
+
|
11361 |
+
return s.substring(0, s[i] === "." ? i : i + 1);
|
11362 |
+
}
|
11363 |
+
|
11364 |
+
function pm(m) {
|
11365 |
+
if (m[4] === 0 && m[5] === 0) {
|
11366 |
+
if (m[1] === 0 && m[2] === 0) {
|
11367 |
+
if (m[0] === 1 && m[3] === 1) {
|
11368 |
+
return "";
|
11369 |
+
}
|
11370 |
+
|
11371 |
+
return `scale(${pf(m[0])} ${pf(m[3])})`;
|
11372 |
+
}
|
11373 |
+
|
11374 |
+
if (m[0] === m[3] && m[1] === -m[2]) {
|
11375 |
+
const a = Math.acos(m[0]) * 180 / Math.PI;
|
11376 |
+
return `rotate(${pf(a)})`;
|
11377 |
+
}
|
11378 |
+
} else {
|
11379 |
+
if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
|
11380 |
+
return `translate(${pf(m[4])} ${pf(m[5])})`;
|
11381 |
+
}
|
11382 |
+
}
|
11383 |
+
|
11384 |
+
return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;
|
11385 |
+
}
|
11386 |
+
|
11387 |
+
let clipCount = 0;
|
11388 |
+
let maskCount = 0;
|
11389 |
+
let shadingCount = 0;
|
11390 |
+
exports.SVGGraphics = SVGGraphics = class {
|
11391 |
+
constructor(commonObjs, objs, forceDataSchema = false) {
|
11392 |
+
this.svgFactory = new _display_utils.DOMSVGFactory();
|
11393 |
+
this.current = new SVGExtraState();
|
11394 |
+
this.transformMatrix = _util.IDENTITY_MATRIX;
|
11395 |
+
this.transformStack = [];
|
11396 |
+
this.extraStack = [];
|
11397 |
+
this.commonObjs = commonObjs;
|
11398 |
+
this.objs = objs;
|
11399 |
+
this.pendingClip = null;
|
11400 |
+
this.pendingEOFill = false;
|
11401 |
+
this.embedFonts = false;
|
11402 |
+
this.embeddedFonts = Object.create(null);
|
11403 |
+
this.cssStyle = null;
|
11404 |
+
this.forceDataSchema = !!forceDataSchema;
|
11405 |
+
this._operatorIdMapping = [];
|
11406 |
+
|
11407 |
+
for (const op in _util.OPS) {
|
11408 |
+
this._operatorIdMapping[_util.OPS[op]] = op;
|
11409 |
+
}
|
11410 |
+
}
|
11411 |
+
|
11412 |
+
save() {
|
11413 |
+
this.transformStack.push(this.transformMatrix);
|
11414 |
+
const old = this.current;
|
11415 |
+
this.extraStack.push(old);
|
11416 |
+
this.current = old.clone();
|
11417 |
+
}
|
11418 |
+
|
11419 |
+
restore() {
|
11420 |
+
this.transformMatrix = this.transformStack.pop();
|
11421 |
+
this.current = this.extraStack.pop();
|
11422 |
+
this.pendingClip = null;
|
11423 |
+
this.tgrp = null;
|
11424 |
+
}
|
11425 |
+
|
11426 |
+
group(items) {
|
11427 |
+
this.save();
|
11428 |
+
this.executeOpTree(items);
|
11429 |
+
this.restore();
|
11430 |
+
}
|
11431 |
+
|
11432 |
+
loadDependencies(operatorList) {
|
11433 |
+
const fnArray = operatorList.fnArray;
|
11434 |
+
const argsArray = operatorList.argsArray;
|
11435 |
+
|
11436 |
+
for (let i = 0, ii = fnArray.length; i < ii; i++) {
|
11437 |
+
if (fnArray[i] !== _util.OPS.dependency) {
|
11438 |
+
continue;
|
11439 |
+
}
|
11440 |
+
|
11441 |
+
for (const obj of argsArray[i]) {
|
11442 |
+
const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs;
|
11443 |
+
const promise = new Promise(resolve => {
|
11444 |
+
objsPool.get(obj, resolve);
|
11445 |
+
});
|
11446 |
+
this.current.dependencies.push(promise);
|
11447 |
+
}
|
11448 |
+
}
|
11449 |
+
|
11450 |
+
return Promise.all(this.current.dependencies);
|
11451 |
+
}
|
11452 |
+
|
11453 |
+
transform(a, b, c, d, e, f) {
|
11454 |
+
const transformMatrix = [a, b, c, d, e, f];
|
11455 |
+
this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
|
11456 |
+
this.tgrp = null;
|
11457 |
+
}
|
11458 |
+
|
11459 |
+
getSVG(operatorList, viewport) {
|
11460 |
+
this.viewport = viewport;
|
11461 |
+
|
11462 |
+
const svgElement = this._initialize(viewport);
|
11463 |
+
|
11464 |
+
return this.loadDependencies(operatorList).then(() => {
|
11465 |
+
this.transformMatrix = _util.IDENTITY_MATRIX;
|
11466 |
+
this.executeOpTree(this.convertOpList(operatorList));
|
11467 |
+
return svgElement;
|
11468 |
+
});
|
11469 |
+
}
|
11470 |
+
|
11471 |
+
convertOpList(operatorList) {
|
11472 |
+
const operatorIdMapping = this._operatorIdMapping;
|
11473 |
+
const argsArray = operatorList.argsArray;
|
11474 |
+
const fnArray = operatorList.fnArray;
|
11475 |
+
const opList = [];
|
11476 |
+
|
11477 |
+
for (let i = 0, ii = fnArray.length; i < ii; i++) {
|
11478 |
+
const fnId = fnArray[i];
|
11479 |
+
opList.push({
|
11480 |
+
fnId,
|
11481 |
+
fn: operatorIdMapping[fnId],
|
11482 |
+
args: argsArray[i]
|
11483 |
+
});
|
11484 |
+
}
|
11485 |
+
|
11486 |
+
return opListToTree(opList);
|
11487 |
+
}
|
11488 |
+
|
11489 |
+
executeOpTree(opTree) {
|
11490 |
+
for (const opTreeElement of opTree) {
|
11491 |
+
const fn = opTreeElement.fn;
|
11492 |
+
const fnId = opTreeElement.fnId;
|
11493 |
+
const args = opTreeElement.args;
|
11494 |
+
|
11495 |
+
switch (fnId | 0) {
|
11496 |
+
case _util.OPS.beginText:
|
11497 |
+
this.beginText();
|
11498 |
+
break;
|
11499 |
+
|
11500 |
+
case _util.OPS.dependency:
|
11501 |
+
break;
|
11502 |
+
|
11503 |
+
case _util.OPS.setLeading:
|
11504 |
+
this.setLeading(args);
|
11505 |
+
break;
|
11506 |
+
|
11507 |
+
case _util.OPS.setLeadingMoveText:
|
11508 |
+
this.setLeadingMoveText(args[0], args[1]);
|
11509 |
+
break;
|
11510 |
+
|
11511 |
+
case _util.OPS.setFont:
|
11512 |
+
this.setFont(args);
|
11513 |
+
break;
|
11514 |
+
|
11515 |
+
case _util.OPS.showText:
|
11516 |
+
this.showText(args[0]);
|
11517 |
+
break;
|
11518 |
+
|
11519 |
+
case _util.OPS.showSpacedText:
|
11520 |
+
this.showText(args[0]);
|
11521 |
+
break;
|
11522 |
+
|
11523 |
+
case _util.OPS.endText:
|
11524 |
+
this.endText();
|
11525 |
+
break;
|
11526 |
+
|
11527 |
+
case _util.OPS.moveText:
|
11528 |
+
this.moveText(args[0], args[1]);
|
11529 |
+
break;
|
11530 |
+
|
11531 |
+
case _util.OPS.setCharSpacing:
|
11532 |
+
this.setCharSpacing(args[0]);
|
11533 |
+
break;
|
11534 |
+
|
11535 |
+
case _util.OPS.setWordSpacing:
|
11536 |
+
this.setWordSpacing(args[0]);
|
11537 |
+
break;
|
11538 |
+
|
11539 |
+
case _util.OPS.setHScale:
|
11540 |
+
this.setHScale(args[0]);
|
11541 |
+
break;
|
11542 |
+
|
11543 |
+
case _util.OPS.setTextMatrix:
|
11544 |
+
this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
|
11545 |
+
break;
|
11546 |
+
|
11547 |
+
case _util.OPS.setTextRise:
|
11548 |
+
this.setTextRise(args[0]);
|
11549 |
+
break;
|
11550 |
+
|
11551 |
+
case _util.OPS.setTextRenderingMode:
|
11552 |
+
this.setTextRenderingMode(args[0]);
|
11553 |
+
break;
|
11554 |
+
|
11555 |
+
case _util.OPS.setLineWidth:
|
11556 |
+
this.setLineWidth(args[0]);
|
11557 |
+
break;
|
11558 |
+
|
11559 |
+
case _util.OPS.setLineJoin:
|
11560 |
+
this.setLineJoin(args[0]);
|
11561 |
+
break;
|
11562 |
+
|
11563 |
+
case _util.OPS.setLineCap:
|
11564 |
+
this.setLineCap(args[0]);
|
11565 |
+
break;
|
11566 |
+
|
11567 |
+
case _util.OPS.setMiterLimit:
|
11568 |
+
this.setMiterLimit(args[0]);
|
11569 |
+
break;
|
11570 |
+
|
11571 |
+
case _util.OPS.setFillRGBColor:
|
11572 |
+
this.setFillRGBColor(args[0], args[1], args[2]);
|
11573 |
+
break;
|
11574 |
+
|
11575 |
+
case _util.OPS.setStrokeRGBColor:
|
11576 |
+
this.setStrokeRGBColor(args[0], args[1], args[2]);
|
11577 |
+
break;
|
11578 |
+
|
11579 |
+
case _util.OPS.setStrokeColorN:
|
11580 |
+
this.setStrokeColorN(args);
|
11581 |
+
break;
|
11582 |
+
|
11583 |
+
case _util.OPS.setFillColorN:
|
11584 |
+
this.setFillColorN(args);
|
11585 |
+
break;
|
11586 |
+
|
11587 |
+
case _util.OPS.shadingFill:
|
11588 |
+
this.shadingFill(args[0]);
|
11589 |
+
break;
|
11590 |
+
|
11591 |
+
case _util.OPS.setDash:
|
11592 |
+
this.setDash(args[0], args[1]);
|
11593 |
+
break;
|
11594 |
+
|
11595 |
+
case _util.OPS.setRenderingIntent:
|
11596 |
+
this.setRenderingIntent(args[0]);
|
11597 |
+
break;
|
11598 |
+
|
11599 |
+
case _util.OPS.setFlatness:
|
11600 |
+
this.setFlatness(args[0]);
|
11601 |
+
break;
|
11602 |
+
|
11603 |
+
case _util.OPS.setGState:
|
11604 |
+
this.setGState(args[0]);
|
11605 |
+
break;
|
11606 |
+
|
11607 |
+
case _util.OPS.fill:
|
11608 |
+
this.fill();
|
11609 |
+
break;
|
11610 |
+
|
11611 |
+
case _util.OPS.eoFill:
|
11612 |
+
this.eoFill();
|
11613 |
+
break;
|
11614 |
+
|
11615 |
+
case _util.OPS.stroke:
|
11616 |
+
this.stroke();
|
11617 |
+
break;
|
11618 |
+
|
11619 |
+
case _util.OPS.fillStroke:
|
11620 |
+
this.fillStroke();
|
11621 |
+
break;
|
11622 |
+
|
11623 |
+
case _util.OPS.eoFillStroke:
|
11624 |
+
this.eoFillStroke();
|
11625 |
+
break;
|
11626 |
+
|
11627 |
+
case _util.OPS.clip:
|
11628 |
+
this.clip("nonzero");
|
11629 |
+
break;
|
11630 |
+
|
11631 |
+
case _util.OPS.eoClip:
|
11632 |
+
this.clip("evenodd");
|
11633 |
+
break;
|
11634 |
+
|
11635 |
+
case _util.OPS.paintSolidColorImageMask:
|
11636 |
+
this.paintSolidColorImageMask();
|
11637 |
+
break;
|
11638 |
+
|
11639 |
+
case _util.OPS.paintImageXObject:
|
11640 |
+
this.paintImageXObject(args[0]);
|
11641 |
+
break;
|
11642 |
+
|
11643 |
+
case _util.OPS.paintInlineImageXObject:
|
11644 |
+
this.paintInlineImageXObject(args[0]);
|
11645 |
+
break;
|
11646 |
+
|
11647 |
+
case _util.OPS.paintImageMaskXObject:
|
11648 |
+
this.paintImageMaskXObject(args[0]);
|
11649 |
+
break;
|
11650 |
+
|
11651 |
+
case _util.OPS.paintFormXObjectBegin:
|
11652 |
+
this.paintFormXObjectBegin(args[0], args[1]);
|
11653 |
+
break;
|
11654 |
+
|
11655 |
+
case _util.OPS.paintFormXObjectEnd:
|
11656 |
+
this.paintFormXObjectEnd();
|
11657 |
+
break;
|
11658 |
+
|
11659 |
+
case _util.OPS.closePath:
|
11660 |
+
this.closePath();
|
11661 |
+
break;
|
11662 |
+
|
11663 |
+
case _util.OPS.closeStroke:
|
11664 |
+
this.closeStroke();
|
11665 |
+
break;
|
11666 |
+
|
11667 |
+
case _util.OPS.closeFillStroke:
|
11668 |
+
this.closeFillStroke();
|
11669 |
+
break;
|
11670 |
+
|
11671 |
+
case _util.OPS.closeEOFillStroke:
|
11672 |
+
this.closeEOFillStroke();
|
11673 |
+
break;
|
11674 |
+
|
11675 |
+
case _util.OPS.nextLine:
|
11676 |
+
this.nextLine();
|
11677 |
+
break;
|
11678 |
+
|
11679 |
+
case _util.OPS.transform:
|
11680 |
+
this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
|
11681 |
+
break;
|
11682 |
+
|
11683 |
+
case _util.OPS.constructPath:
|
11684 |
+
this.constructPath(args[0], args[1]);
|
11685 |
+
break;
|
11686 |
+
|
11687 |
+
case _util.OPS.endPath:
|
11688 |
+
this.endPath();
|
11689 |
+
break;
|
11690 |
+
|
11691 |
+
case 92:
|
11692 |
+
this.group(opTreeElement.items);
|
11693 |
+
break;
|
11694 |
+
|
11695 |
+
default:
|
11696 |
+
(0, _util.warn)(`Unimplemented operator ${fn}`);
|
11697 |
+
break;
|
11698 |
+
}
|
11699 |
+
}
|
11700 |
+
}
|
11701 |
+
|
11702 |
+
setWordSpacing(wordSpacing) {
|
11703 |
+
this.current.wordSpacing = wordSpacing;
|
11704 |
+
}
|
11705 |
+
|
11706 |
+
setCharSpacing(charSpacing) {
|
11707 |
+
this.current.charSpacing = charSpacing;
|
11708 |
+
}
|
11709 |
+
|
11710 |
+
nextLine() {
|
11711 |
+
this.moveText(0, this.current.leading);
|
11712 |
+
}
|
11713 |
+
|
11714 |
+
setTextMatrix(a, b, c, d, e, f) {
|
11715 |
+
const current = this.current;
|
11716 |
+
current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];
|
11717 |
+
current.textMatrixScale = Math.hypot(a, b);
|
11718 |
+
current.x = current.lineX = 0;
|
11719 |
+
current.y = current.lineY = 0;
|
11720 |
+
current.xcoords = [];
|
11721 |
+
current.ycoords = [];
|
11722 |
+
current.tspan = this.svgFactory.createElement("svg:tspan");
|
11723 |
+
current.tspan.setAttributeNS(null, "font-family", current.fontFamily);
|
11724 |
+
current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`);
|
11725 |
+
current.tspan.setAttributeNS(null, "y", pf(-current.y));
|
11726 |
+
current.txtElement = this.svgFactory.createElement("svg:text");
|
11727 |
+
current.txtElement.appendChild(current.tspan);
|
11728 |
+
}
|
11729 |
+
|
11730 |
+
beginText() {
|
11731 |
+
const current = this.current;
|
11732 |
+
current.x = current.lineX = 0;
|
11733 |
+
current.y = current.lineY = 0;
|
11734 |
+
current.textMatrix = _util.IDENTITY_MATRIX;
|
11735 |
+
current.lineMatrix = _util.IDENTITY_MATRIX;
|
11736 |
+
current.textMatrixScale = 1;
|
11737 |
+
current.tspan = this.svgFactory.createElement("svg:tspan");
|
11738 |
+
current.txtElement = this.svgFactory.createElement("svg:text");
|
11739 |
+
current.txtgrp = this.svgFactory.createElement("svg:g");
|
11740 |
+
current.xcoords = [];
|
11741 |
+
current.ycoords = [];
|
11742 |
+
}
|
11743 |
+
|
11744 |
+
moveText(x, y) {
|
11745 |
+
const current = this.current;
|
11746 |
+
current.x = current.lineX += x;
|
11747 |
+
current.y = current.lineY += y;
|
11748 |
+
current.xcoords = [];
|
11749 |
+
current.ycoords = [];
|
11750 |
+
current.tspan = this.svgFactory.createElement("svg:tspan");
|
11751 |
+
current.tspan.setAttributeNS(null, "font-family", current.fontFamily);
|
11752 |
+
current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`);
|
11753 |
+
current.tspan.setAttributeNS(null, "y", pf(-current.y));
|
11754 |
+
}
|
11755 |
+
|
11756 |
+
showText(glyphs) {
|
11757 |
+
const current = this.current;
|
11758 |
+
const font = current.font;
|
11759 |
+
const fontSize = current.fontSize;
|
11760 |
+
|
11761 |
+
if (fontSize === 0) {
|
11762 |
+
return;
|
11763 |
+
}
|
11764 |
+
|
11765 |
+
const fontSizeScale = current.fontSizeScale;
|
11766 |
+
const charSpacing = current.charSpacing;
|
11767 |
+
const wordSpacing = current.wordSpacing;
|
11768 |
+
const fontDirection = current.fontDirection;
|
11769 |
+
const textHScale = current.textHScale * fontDirection;
|
11770 |
+
const vertical = font.vertical;
|
11771 |
+
const spacingDir = vertical ? 1 : -1;
|
11772 |
+
const defaultVMetrics = font.defaultVMetrics;
|
11773 |
+
const widthAdvanceScale = fontSize * current.fontMatrix[0];
|
11774 |
+
let x = 0;
|
11775 |
+
|
11776 |
+
for (const glyph of glyphs) {
|
11777 |
+
if (glyph === null) {
|
11778 |
+
x += fontDirection * wordSpacing;
|
11779 |
+
continue;
|
11780 |
+
} else if ((0, _util.isNum)(glyph)) {
|
11781 |
+
x += spacingDir * glyph * fontSize / 1000;
|
11782 |
+
continue;
|
11783 |
+
}
|
11784 |
+
|
11785 |
+
const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
|
11786 |
+
const character = glyph.fontChar;
|
11787 |
+
let scaledX, scaledY;
|
11788 |
+
let width = glyph.width;
|
11789 |
+
|
11790 |
+
if (vertical) {
|
11791 |
+
let vx;
|
11792 |
+
const vmetric = glyph.vmetric || defaultVMetrics;
|
11793 |
+
vx = glyph.vmetric ? vmetric[1] : width * 0.5;
|
11794 |
+
vx = -vx * widthAdvanceScale;
|
11795 |
+
const vy = vmetric[2] * widthAdvanceScale;
|
11796 |
+
width = vmetric ? -vmetric[0] : width;
|
11797 |
+
scaledX = vx / fontSizeScale;
|
11798 |
+
scaledY = (x + vy) / fontSizeScale;
|
11799 |
+
} else {
|
11800 |
+
scaledX = x / fontSizeScale;
|
11801 |
+
scaledY = 0;
|
11802 |
+
}
|
11803 |
+
|
11804 |
+
if (glyph.isInFont || font.missingFile) {
|
11805 |
+
current.xcoords.push(current.x + scaledX);
|
11806 |
+
|
11807 |
+
if (vertical) {
|
11808 |
+
current.ycoords.push(-current.y + scaledY);
|
11809 |
+
}
|
11810 |
+
|
11811 |
+
current.tspan.textContent += character;
|
11812 |
+
} else {}
|
11813 |
+
|
11814 |
+
let charWidth;
|
11815 |
+
|
11816 |
+
if (vertical) {
|
11817 |
+
charWidth = width * widthAdvanceScale - spacing * fontDirection;
|
11818 |
+
} else {
|
11819 |
+
charWidth = width * widthAdvanceScale + spacing * fontDirection;
|
11820 |
+
}
|
11821 |
+
|
11822 |
+
x += charWidth;
|
11823 |
+
}
|
11824 |
+
|
11825 |
+
current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" "));
|
11826 |
+
|
11827 |
+
if (vertical) {
|
11828 |
+
current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" "));
|
11829 |
+
} else {
|
11830 |
+
current.tspan.setAttributeNS(null, "y", pf(-current.y));
|
11831 |
+
}
|
11832 |
+
|
11833 |
+
if (vertical) {
|
11834 |
+
current.y -= x;
|
11835 |
+
} else {
|
11836 |
+
current.x += x * textHScale;
|
11837 |
+
}
|
11838 |
+
|
11839 |
+
current.tspan.setAttributeNS(null, "font-family", current.fontFamily);
|
11840 |
+
current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`);
|
11841 |
+
|
11842 |
+
if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
|
11843 |
+
current.tspan.setAttributeNS(null, "font-style", current.fontStyle);
|
11844 |
+
}
|
11845 |
+
|
11846 |
+
if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
|
11847 |
+
current.tspan.setAttributeNS(null, "font-weight", current.fontWeight);
|
11848 |
+
}
|
11849 |
+
|
11850 |
+
const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
|
11851 |
+
|
11852 |
+
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
11853 |
+
if (current.fillColor !== SVG_DEFAULTS.fillColor) {
|
11854 |
+
current.tspan.setAttributeNS(null, "fill", current.fillColor);
|
11855 |
+
}
|
11856 |
+
|
11857 |
+
if (current.fillAlpha < 1) {
|
11858 |
+
current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha);
|
11859 |
+
}
|
11860 |
+
} else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
|
11861 |
+
current.tspan.setAttributeNS(null, "fill", "transparent");
|
11862 |
+
} else {
|
11863 |
+
current.tspan.setAttributeNS(null, "fill", "none");
|
11864 |
+
}
|
11865 |
+
|
11866 |
+
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
11867 |
+
const lineWidthScale = 1 / (current.textMatrixScale || 1);
|
11868 |
+
|
11869 |
+
this._setStrokeAttributes(current.tspan, lineWidthScale);
|
11870 |
+
}
|
11871 |
+
|
11872 |
+
let textMatrix = current.textMatrix;
|
11873 |
+
|
11874 |
+
if (current.textRise !== 0) {
|
11875 |
+
textMatrix = textMatrix.slice();
|
11876 |
+
textMatrix[5] += current.textRise;
|
11877 |
+
}
|
11878 |
+
|
11879 |
+
current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);
|
11880 |
+
current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve");
|
11881 |
+
current.txtElement.appendChild(current.tspan);
|
11882 |
+
current.txtgrp.appendChild(current.txtElement);
|
11883 |
+
|
11884 |
+
this._ensureTransformGroup().appendChild(current.txtElement);
|
11885 |
+
}
|
11886 |
+
|
11887 |
+
setLeadingMoveText(x, y) {
|
11888 |
+
this.setLeading(-y);
|
11889 |
+
this.moveText(x, y);
|
11890 |
+
}
|
11891 |
+
|
11892 |
+
addFontStyle(fontObj) {
|
11893 |
+
if (!fontObj.data) {
|
11894 |
+
throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.');
|
11895 |
+
}
|
11896 |
+
|
11897 |
+
if (!this.cssStyle) {
|
11898 |
+
this.cssStyle = this.svgFactory.createElement("svg:style");
|
11899 |
+
this.cssStyle.setAttributeNS(null, "type", "text/css");
|
11900 |
+
this.defs.appendChild(this.cssStyle);
|
11901 |
+
}
|
11902 |
+
|
11903 |
+
const url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
|
11904 |
+
this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`;
|
11905 |
+
}
|
11906 |
+
|
11907 |
+
setFont(details) {
|
11908 |
+
const current = this.current;
|
11909 |
+
const fontObj = this.commonObjs.get(details[0]);
|
11910 |
+
let size = details[1];
|
11911 |
+
current.font = fontObj;
|
11912 |
+
|
11913 |
+
if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {
|
11914 |
+
this.addFontStyle(fontObj);
|
11915 |
+
this.embeddedFonts[fontObj.loadedName] = fontObj;
|
11916 |
+
}
|
11917 |
+
|
11918 |
+
current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
|
11919 |
+
let bold = "normal";
|
11920 |
+
|
11921 |
+
if (fontObj.black) {
|
11922 |
+
bold = "900";
|
11923 |
+
} else if (fontObj.bold) {
|
11924 |
+
bold = "bold";
|
11925 |
+
}
|
11926 |
+
|
11927 |
+
const italic = fontObj.italic ? "italic" : "normal";
|
11928 |
+
|
11929 |
+
if (size < 0) {
|
11930 |
+
size = -size;
|
11931 |
+
current.fontDirection = -1;
|
11932 |
+
} else {
|
11933 |
+
current.fontDirection = 1;
|
11934 |
+
}
|
11935 |
+
|
11936 |
+
current.fontSize = size;
|
11937 |
+
current.fontFamily = fontObj.loadedName;
|
11938 |
+
current.fontWeight = bold;
|
11939 |
+
current.fontStyle = italic;
|
11940 |
+
current.tspan = this.svgFactory.createElement("svg:tspan");
|
11941 |
+
current.tspan.setAttributeNS(null, "y", pf(-current.y));
|
11942 |
+
current.xcoords = [];
|
11943 |
+
current.ycoords = [];
|
11944 |
+
}
|
11945 |
+
|
11946 |
+
endText() {
|
11947 |
+
const current = this.current;
|
11948 |
+
|
11949 |
+
if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {
|
11950 |
+
current.element = current.txtElement;
|
11951 |
+
this.clip("nonzero");
|
11952 |
+
this.endPath();
|
11953 |
+
}
|
11954 |
+
}
|
11955 |
+
|
11956 |
+
setLineWidth(width) {
|
11957 |
+
if (width > 0) {
|
11958 |
+
this.current.lineWidth = width;
|
11959 |
+
}
|
11960 |
+
}
|
11961 |
+
|
11962 |
+
setLineCap(style) {
|
11963 |
+
this.current.lineCap = LINE_CAP_STYLES[style];
|
11964 |
+
}
|
11965 |
+
|
11966 |
+
setLineJoin(style) {
|
11967 |
+
this.current.lineJoin = LINE_JOIN_STYLES[style];
|
11968 |
+
}
|
11969 |
+
|
11970 |
+
setMiterLimit(limit) {
|
11971 |
+
this.current.miterLimit = limit;
|
11972 |
+
}
|
11973 |
+
|
11974 |
+
setStrokeAlpha(strokeAlpha) {
|
11975 |
+
this.current.strokeAlpha = strokeAlpha;
|
11976 |
+
}
|
11977 |
+
|
11978 |
+
setStrokeRGBColor(r, g, b) {
|
11979 |
+
this.current.strokeColor = _util.Util.makeHexColor(r, g, b);
|
11980 |
+
}
|
11981 |
+
|
11982 |
+
setFillAlpha(fillAlpha) {
|
11983 |
+
this.current.fillAlpha = fillAlpha;
|
11984 |
+
}
|
11985 |
+
|
11986 |
+
setFillRGBColor(r, g, b) {
|
11987 |
+
this.current.fillColor = _util.Util.makeHexColor(r, g, b);
|
11988 |
+
this.current.tspan = this.svgFactory.createElement("svg:tspan");
|
11989 |
+
this.current.xcoords = [];
|
11990 |
+
this.current.ycoords = [];
|
11991 |
+
}
|
11992 |
+
|
11993 |
+
setStrokeColorN(args) {
|
11994 |
+
this.current.strokeColor = this._makeColorN_Pattern(args);
|
11995 |
+
}
|
11996 |
+
|
11997 |
+
setFillColorN(args) {
|
11998 |
+
this.current.fillColor = this._makeColorN_Pattern(args);
|
11999 |
+
}
|
12000 |
+
|
12001 |
+
shadingFill(args) {
|
12002 |
+
const width = this.viewport.width;
|
12003 |
+
const height = this.viewport.height;
|
12004 |
+
|
12005 |
+
const inv = _util.Util.inverseTransform(this.transformMatrix);
|
12006 |
+
|
12007 |
+
const bl = _util.Util.applyTransform([0, 0], inv);
|
12008 |
+
|
12009 |
+
const br = _util.Util.applyTransform([0, height], inv);
|
12010 |
+
|
12011 |
+
const ul = _util.Util.applyTransform([width, 0], inv);
|
12012 |
+
|
12013 |
+
const ur = _util.Util.applyTransform([width, height], inv);
|
12014 |
+
|
12015 |
+
const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
|
12016 |
+
const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
|
12017 |
+
const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
|
12018 |
+
const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
|
12019 |
+
const rect = this.svgFactory.createElement("svg:rect");
|
12020 |
+
rect.setAttributeNS(null, "x", x0);
|
12021 |
+
rect.setAttributeNS(null, "y", y0);
|
12022 |
+
rect.setAttributeNS(null, "width", x1 - x0);
|
12023 |
+
rect.setAttributeNS(null, "height", y1 - y0);
|
12024 |
+
rect.setAttributeNS(null, "fill", this._makeShadingPattern(args));
|
12025 |
+
|
12026 |
+
if (this.current.fillAlpha < 1) {
|
12027 |
+
rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha);
|
12028 |
+
}
|
12029 |
+
|
12030 |
+
this._ensureTransformGroup().appendChild(rect);
|
12031 |
+
}
|
12032 |
+
|
12033 |
+
_makeColorN_Pattern(args) {
|
12034 |
+
if (args[0] === "TilingPattern") {
|
12035 |
+
return this._makeTilingPattern(args);
|
12036 |
+
}
|
12037 |
+
|
12038 |
+
return this._makeShadingPattern(args);
|
12039 |
+
}
|
12040 |
+
|
12041 |
+
_makeTilingPattern(args) {
|
12042 |
+
const color = args[1];
|
12043 |
+
const operatorList = args[2];
|
12044 |
+
const matrix = args[3] || _util.IDENTITY_MATRIX;
|
12045 |
+
const [x0, y0, x1, y1] = args[4];
|
12046 |
+
const xstep = args[5];
|
12047 |
+
const ystep = args[6];
|
12048 |
+
const paintType = args[7];
|
12049 |
+
const tilingId = `shading${shadingCount++}`;
|
12050 |
+
|
12051 |
+
const [tx0, ty0] = _util.Util.applyTransform([x0, y0], matrix);
|
12052 |
+
|
12053 |
+
const [tx1, ty1] = _util.Util.applyTransform([x1, y1], matrix);
|
12054 |
+
|
12055 |
+
const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);
|
12056 |
+
|
12057 |
+
const txstep = xstep * xscale;
|
12058 |
+
const tystep = ystep * yscale;
|
12059 |
+
const tiling = this.svgFactory.createElement("svg:pattern");
|
12060 |
+
tiling.setAttributeNS(null, "id", tilingId);
|
12061 |
+
tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse");
|
12062 |
+
tiling.setAttributeNS(null, "width", txstep);
|
12063 |
+
tiling.setAttributeNS(null, "height", tystep);
|
12064 |
+
tiling.setAttributeNS(null, "x", `${tx0}`);
|
12065 |
+
tiling.setAttributeNS(null, "y", `${ty0}`);
|
12066 |
+
const svg = this.svg;
|
12067 |
+
const transformMatrix = this.transformMatrix;
|
12068 |
+
const fillColor = this.current.fillColor;
|
12069 |
+
const strokeColor = this.current.strokeColor;
|
12070 |
+
const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);
|
12071 |
+
this.svg = bbox;
|
12072 |
+
this.transformMatrix = matrix;
|
12073 |
+
|
12074 |
+
if (paintType === 2) {
|
12075 |
+
const cssColor = _util.Util.makeHexColor(...color);
|
12076 |
+
|
12077 |
+
this.current.fillColor = cssColor;
|
12078 |
+
this.current.strokeColor = cssColor;
|
12079 |
+
}
|
12080 |
+
|
12081 |
+
this.executeOpTree(this.convertOpList(operatorList));
|
12082 |
+
this.svg = svg;
|
12083 |
+
this.transformMatrix = transformMatrix;
|
12084 |
+
this.current.fillColor = fillColor;
|
12085 |
+
this.current.strokeColor = strokeColor;
|
12086 |
+
tiling.appendChild(bbox.childNodes[0]);
|
12087 |
+
this.defs.appendChild(tiling);
|
12088 |
+
return `url(#${tilingId})`;
|
12089 |
+
}
|
12090 |
+
|
12091 |
+
_makeShadingPattern(args) {
|
12092 |
+
switch (args[0]) {
|
12093 |
+
case "RadialAxial":
|
12094 |
+
const shadingId = `shading${shadingCount++}`;
|
12095 |
+
const colorStops = args[3];
|
12096 |
+
let gradient;
|
12097 |
+
|
12098 |
+
switch (args[1]) {
|
12099 |
+
case "axial":
|
12100 |
+
const point0 = args[4];
|
12101 |
+
const point1 = args[5];
|
12102 |
+
gradient = this.svgFactory.createElement("svg:linearGradient");
|
12103 |
+
gradient.setAttributeNS(null, "id", shadingId);
|
12104 |
+
gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
|
12105 |
+
gradient.setAttributeNS(null, "x1", point0[0]);
|
12106 |
+
gradient.setAttributeNS(null, "y1", point0[1]);
|
12107 |
+
gradient.setAttributeNS(null, "x2", point1[0]);
|
12108 |
+
gradient.setAttributeNS(null, "y2", point1[1]);
|
12109 |
+
break;
|
12110 |
+
|
12111 |
+
case "radial":
|
12112 |
+
const focalPoint = args[4];
|
12113 |
+
const circlePoint = args[5];
|
12114 |
+
const focalRadius = args[6];
|
12115 |
+
const circleRadius = args[7];
|
12116 |
+
gradient = this.svgFactory.createElement("svg:radialGradient");
|
12117 |
+
gradient.setAttributeNS(null, "id", shadingId);
|
12118 |
+
gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
|
12119 |
+
gradient.setAttributeNS(null, "cx", circlePoint[0]);
|
12120 |
+
gradient.setAttributeNS(null, "cy", circlePoint[1]);
|
12121 |
+
gradient.setAttributeNS(null, "r", circleRadius);
|
12122 |
+
gradient.setAttributeNS(null, "fx", focalPoint[0]);
|
12123 |
+
gradient.setAttributeNS(null, "fy", focalPoint[1]);
|
12124 |
+
gradient.setAttributeNS(null, "fr", focalRadius);
|
12125 |
+
break;
|
12126 |
+
|
12127 |
+
default:
|
12128 |
+
throw new Error(`Unknown RadialAxial type: ${args[1]}`);
|
12129 |
+
}
|
12130 |
+
|
12131 |
+
for (const colorStop of colorStops) {
|
12132 |
+
const stop = this.svgFactory.createElement("svg:stop");
|
12133 |
+
stop.setAttributeNS(null, "offset", colorStop[0]);
|
12134 |
+
stop.setAttributeNS(null, "stop-color", colorStop[1]);
|
12135 |
+
gradient.appendChild(stop);
|
12136 |
+
}
|
12137 |
+
|
12138 |
+
this.defs.appendChild(gradient);
|
12139 |
+
return `url(#${shadingId})`;
|
12140 |
+
|
12141 |
+
case "Mesh":
|
12142 |
+
(0, _util.warn)("Unimplemented pattern Mesh");
|
12143 |
+
return null;
|
12144 |
+
|
12145 |
+
case "Dummy":
|
12146 |
+
return "hotpink";
|
12147 |
+
|
12148 |
+
default:
|
12149 |
+
throw new Error(`Unknown IR type: ${args[0]}`);
|
12150 |
+
}
|
12151 |
+
}
|
12152 |
+
|
12153 |
+
setDash(dashArray, dashPhase) {
|
12154 |
+
this.current.dashArray = dashArray;
|
12155 |
+
this.current.dashPhase = dashPhase;
|
12156 |
+
}
|
12157 |
+
|
12158 |
+
constructPath(ops, args) {
|
12159 |
+
const current = this.current;
|
12160 |
+
let x = current.x,
|
12161 |
+
y = current.y;
|
12162 |
+
let d = [];
|
12163 |
+
let j = 0;
|
12164 |
+
|
12165 |
+
for (const op of ops) {
|
12166 |
+
switch (op | 0) {
|
12167 |
+
case _util.OPS.rectangle:
|
12168 |
+
x = args[j++];
|
12169 |
+
y = args[j++];
|
12170 |
+
const width = args[j++];
|
12171 |
+
const height = args[j++];
|
12172 |
+
const xw = x + width;
|
12173 |
+
const yh = y + height;
|
12174 |
+
d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z");
|
12175 |
+
break;
|
12176 |
+
|
12177 |
+
case _util.OPS.moveTo:
|
12178 |
+
x = args[j++];
|
12179 |
+
y = args[j++];
|
12180 |
+
d.push("M", pf(x), pf(y));
|
12181 |
+
break;
|
12182 |
+
|
12183 |
+
case _util.OPS.lineTo:
|
12184 |
+
x = args[j++];
|
12185 |
+
y = args[j++];
|
12186 |
+
d.push("L", pf(x), pf(y));
|
12187 |
+
break;
|
12188 |
+
|
12189 |
+
case _util.OPS.curveTo:
|
12190 |
+
x = args[j + 4];
|
12191 |
+
y = args[j + 5];
|
12192 |
+
d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
|
12193 |
+
j += 6;
|
12194 |
+
break;
|
12195 |
+
|
12196 |
+
case _util.OPS.curveTo2:
|
12197 |
+
d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
|
12198 |
+
x = args[j + 2];
|
12199 |
+
y = args[j + 3];
|
12200 |
+
j += 4;
|
12201 |
+
break;
|
12202 |
+
|
12203 |
+
case _util.OPS.curveTo3:
|
12204 |
+
x = args[j + 2];
|
12205 |
+
y = args[j + 3];
|
12206 |
+
d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
|
12207 |
+
j += 4;
|
12208 |
+
break;
|
12209 |
+
|
12210 |
+
case _util.OPS.closePath:
|
12211 |
+
d.push("Z");
|
12212 |
+
break;
|
12213 |
+
}
|
12214 |
+
}
|
12215 |
+
|
12216 |
+
d = d.join(" ");
|
12217 |
+
|
12218 |
+
if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {
|
12219 |
+
d = current.path.getAttributeNS(null, "d") + d;
|
12220 |
+
} else {
|
12221 |
+
current.path = this.svgFactory.createElement("svg:path");
|
12222 |
+
|
12223 |
+
this._ensureTransformGroup().appendChild(current.path);
|
12224 |
+
}
|
12225 |
+
|
12226 |
+
current.path.setAttributeNS(null, "d", d);
|
12227 |
+
current.path.setAttributeNS(null, "fill", "none");
|
12228 |
+
current.element = current.path;
|
12229 |
+
current.setCurrentPoint(x, y);
|
12230 |
+
}
|
12231 |
+
|
12232 |
+
endPath() {
|
12233 |
+
const current = this.current;
|
12234 |
+
current.path = null;
|
12235 |
+
|
12236 |
+
if (!this.pendingClip) {
|
12237 |
+
return;
|
12238 |
+
}
|
12239 |
+
|
12240 |
+
if (!current.element) {
|
12241 |
+
this.pendingClip = null;
|
12242 |
+
return;
|
12243 |
+
}
|
12244 |
+
|
12245 |
+
const clipId = `clippath${clipCount++}`;
|
12246 |
+
const clipPath = this.svgFactory.createElement("svg:clipPath");
|
12247 |
+
clipPath.setAttributeNS(null, "id", clipId);
|
12248 |
+
clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix));
|
12249 |
+
const clipElement = current.element.cloneNode(true);
|
12250 |
+
|
12251 |
+
if (this.pendingClip === "evenodd") {
|
12252 |
+
clipElement.setAttributeNS(null, "clip-rule", "evenodd");
|
12253 |
+
} else {
|
12254 |
+
clipElement.setAttributeNS(null, "clip-rule", "nonzero");
|
12255 |
+
}
|
12256 |
+
|
12257 |
+
this.pendingClip = null;
|
12258 |
+
clipPath.appendChild(clipElement);
|
12259 |
+
this.defs.appendChild(clipPath);
|
12260 |
+
|
12261 |
+
if (current.activeClipUrl) {
|
12262 |
+
current.clipGroup = null;
|
12263 |
+
|
12264 |
+
for (const prev of this.extraStack) {
|
12265 |
+
prev.clipGroup = null;
|
12266 |
+
}
|
12267 |
+
|
12268 |
+
clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl);
|
12269 |
+
}
|
12270 |
+
|
12271 |
+
current.activeClipUrl = `url(#${clipId})`;
|
12272 |
+
this.tgrp = null;
|
12273 |
+
}
|
12274 |
+
|
12275 |
+
clip(type) {
|
12276 |
+
this.pendingClip = type;
|
12277 |
+
}
|
12278 |
+
|
12279 |
+
closePath() {
|
12280 |
+
const current = this.current;
|
12281 |
+
|
12282 |
+
if (current.path) {
|
12283 |
+
const d = `${current.path.getAttributeNS(null, "d")}Z`;
|
12284 |
+
current.path.setAttributeNS(null, "d", d);
|
12285 |
+
}
|
12286 |
+
}
|
12287 |
+
|
12288 |
+
setLeading(leading) {
|
12289 |
+
this.current.leading = -leading;
|
12290 |
+
}
|
12291 |
+
|
12292 |
+
setTextRise(textRise) {
|
12293 |
+
this.current.textRise = textRise;
|
12294 |
+
}
|
12295 |
+
|
12296 |
+
setTextRenderingMode(textRenderingMode) {
|
12297 |
+
this.current.textRenderingMode = textRenderingMode;
|
12298 |
+
}
|
12299 |
+
|
12300 |
+
setHScale(scale) {
|
12301 |
+
this.current.textHScale = scale / 100;
|
12302 |
+
}
|
12303 |
+
|
12304 |
+
setRenderingIntent(intent) {}
|
12305 |
+
|
12306 |
+
setFlatness(flatness) {}
|
12307 |
+
|
12308 |
+
setGState(states) {
|
12309 |
+
for (const [key, value] of states) {
|
12310 |
+
switch (key) {
|
12311 |
+
case "LW":
|
12312 |
+
this.setLineWidth(value);
|
12313 |
+
break;
|
12314 |
+
|
12315 |
+
case "LC":
|
12316 |
+
this.setLineCap(value);
|
12317 |
+
break;
|
12318 |
+
|
12319 |
+
case "LJ":
|
12320 |
+
this.setLineJoin(value);
|
12321 |
+
break;
|
12322 |
+
|
12323 |
+
case "ML":
|
12324 |
+
this.setMiterLimit(value);
|
12325 |
+
break;
|
12326 |
+
|
12327 |
+
case "D":
|
12328 |
+
this.setDash(value[0], value[1]);
|
12329 |
+
break;
|
12330 |
+
|
12331 |
+
case "RI":
|
12332 |
+
this.setRenderingIntent(value);
|
12333 |
+
break;
|
12334 |
+
|
12335 |
+
case "FL":
|
12336 |
+
this.setFlatness(value);
|
12337 |
+
break;
|
12338 |
+
|
12339 |
+
case "Font":
|
12340 |
+
this.setFont(value);
|
12341 |
+
break;
|
12342 |
+
|
12343 |
+
case "CA":
|
12344 |
+
this.setStrokeAlpha(value);
|
12345 |
+
break;
|
12346 |
+
|
12347 |
+
case "ca":
|
12348 |
+
this.setFillAlpha(value);
|
12349 |
+
break;
|
12350 |
+
|
12351 |
+
default:
|
12352 |
+
(0, _util.warn)(`Unimplemented graphic state operator ${key}`);
|
12353 |
+
break;
|
12354 |
+
}
|
12355 |
+
}
|
12356 |
+
}
|
12357 |
+
|
12358 |
+
fill() {
|
12359 |
+
const current = this.current;
|
12360 |
+
|
12361 |
+
if (current.element) {
|
12362 |
+
current.element.setAttributeNS(null, "fill", current.fillColor);
|
12363 |
+
current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha);
|
12364 |
+
this.endPath();
|
12365 |
+
}
|
12366 |
+
}
|
12367 |
+
|
12368 |
+
stroke() {
|
12369 |
+
const current = this.current;
|
12370 |
+
|
12371 |
+
if (current.element) {
|
12372 |
+
this._setStrokeAttributes(current.element);
|
12373 |
+
|
12374 |
+
current.element.setAttributeNS(null, "fill", "none");
|
12375 |
+
this.endPath();
|
12376 |
+
}
|
12377 |
+
}
|
12378 |
+
|
12379 |
+
_setStrokeAttributes(element, lineWidthScale = 1) {
|
12380 |
+
const current = this.current;
|
12381 |
+
let dashArray = current.dashArray;
|
12382 |
+
|
12383 |
+
if (lineWidthScale !== 1 && dashArray.length > 0) {
|
12384 |
+
dashArray = dashArray.map(function (value) {
|
12385 |
+
return lineWidthScale * value;
|
12386 |
+
});
|
12387 |
+
}
|
12388 |
+
|
12389 |
+
element.setAttributeNS(null, "stroke", current.strokeColor);
|
12390 |
+
element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha);
|
12391 |
+
element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit));
|
12392 |
+
element.setAttributeNS(null, "stroke-linecap", current.lineCap);
|
12393 |
+
element.setAttributeNS(null, "stroke-linejoin", current.lineJoin);
|
12394 |
+
element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px");
|
12395 |
+
element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" "));
|
12396 |
+
element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px");
|
12397 |
+
}
|
12398 |
+
|
12399 |
+
eoFill() {
|
12400 |
+
if (this.current.element) {
|
12401 |
+
this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
|
12402 |
+
}
|
12403 |
+
|
12404 |
+
this.fill();
|
12405 |
+
}
|
12406 |
+
|
12407 |
+
fillStroke() {
|
12408 |
+
this.stroke();
|
12409 |
+
this.fill();
|
12410 |
+
}
|
12411 |
+
|
12412 |
+
eoFillStroke() {
|
12413 |
+
if (this.current.element) {
|
12414 |
+
this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
|
12415 |
+
}
|
12416 |
+
|
12417 |
+
this.fillStroke();
|
12418 |
+
}
|
12419 |
+
|
12420 |
+
closeStroke() {
|
12421 |
+
this.closePath();
|
12422 |
+
this.stroke();
|
12423 |
+
}
|
12424 |
+
|
12425 |
+
closeFillStroke() {
|
12426 |
+
this.closePath();
|
12427 |
+
this.fillStroke();
|
12428 |
+
}
|
12429 |
+
|
12430 |
+
closeEOFillStroke() {
|
12431 |
+
this.closePath();
|
12432 |
+
this.eoFillStroke();
|
12433 |
+
}
|
12434 |
+
|
12435 |
+
paintSolidColorImageMask() {
|
12436 |
+
const rect = this.svgFactory.createElement("svg:rect");
|
12437 |
+
rect.setAttributeNS(null, "x", "0");
|
12438 |
+
rect.setAttributeNS(null, "y", "0");
|
12439 |
+
rect.setAttributeNS(null, "width", "1px");
|
12440 |
+
rect.setAttributeNS(null, "height", "1px");
|
12441 |
+
rect.setAttributeNS(null, "fill", this.current.fillColor);
|
12442 |
+
|
12443 |
+
this._ensureTransformGroup().appendChild(rect);
|
12444 |
+
}
|
12445 |
+
|
12446 |
+
paintImageXObject(objId) {
|
12447 |
+
const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
|
12448 |
+
|
12449 |
+
if (!imgData) {
|
12450 |
+
(0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);
|
12451 |
+
return;
|
12452 |
+
}
|
12453 |
+
|
12454 |
+
this.paintInlineImageXObject(imgData);
|
12455 |
+
}
|
12456 |
+
|
12457 |
+
paintInlineImageXObject(imgData, mask) {
|
12458 |
+
const width = imgData.width;
|
12459 |
+
const height = imgData.height;
|
12460 |
+
const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
|
12461 |
+
const cliprect = this.svgFactory.createElement("svg:rect");
|
12462 |
+
cliprect.setAttributeNS(null, "x", "0");
|
12463 |
+
cliprect.setAttributeNS(null, "y", "0");
|
12464 |
+
cliprect.setAttributeNS(null, "width", pf(width));
|
12465 |
+
cliprect.setAttributeNS(null, "height", pf(height));
|
12466 |
+
this.current.element = cliprect;
|
12467 |
+
this.clip("nonzero");
|
12468 |
+
const imgEl = this.svgFactory.createElement("svg:image");
|
12469 |
+
imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc);
|
12470 |
+
imgEl.setAttributeNS(null, "x", "0");
|
12471 |
+
imgEl.setAttributeNS(null, "y", pf(-height));
|
12472 |
+
imgEl.setAttributeNS(null, "width", pf(width) + "px");
|
12473 |
+
imgEl.setAttributeNS(null, "height", pf(height) + "px");
|
12474 |
+
imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`);
|
12475 |
+
|
12476 |
+
if (mask) {
|
12477 |
+
mask.appendChild(imgEl);
|
12478 |
+
} else {
|
12479 |
+
this._ensureTransformGroup().appendChild(imgEl);
|
12480 |
+
}
|
12481 |
+
}
|
12482 |
+
|
12483 |
+
paintImageMaskXObject(imgData) {
|
12484 |
+
const current = this.current;
|
12485 |
+
const width = imgData.width;
|
12486 |
+
const height = imgData.height;
|
12487 |
+
const fillColor = current.fillColor;
|
12488 |
+
current.maskId = `mask${maskCount++}`;
|
12489 |
+
const mask = this.svgFactory.createElement("svg:mask");
|
12490 |
+
mask.setAttributeNS(null, "id", current.maskId);
|
12491 |
+
const rect = this.svgFactory.createElement("svg:rect");
|
12492 |
+
rect.setAttributeNS(null, "x", "0");
|
12493 |
+
rect.setAttributeNS(null, "y", "0");
|
12494 |
+
rect.setAttributeNS(null, "width", pf(width));
|
12495 |
+
rect.setAttributeNS(null, "height", pf(height));
|
12496 |
+
rect.setAttributeNS(null, "fill", fillColor);
|
12497 |
+
rect.setAttributeNS(null, "mask", `url(#${current.maskId})`);
|
12498 |
+
this.defs.appendChild(mask);
|
12499 |
+
|
12500 |
+
this._ensureTransformGroup().appendChild(rect);
|
12501 |
+
|
12502 |
+
this.paintInlineImageXObject(imgData, mask);
|
12503 |
+
}
|
12504 |
+
|
12505 |
+
paintFormXObjectBegin(matrix, bbox) {
|
12506 |
+
if (Array.isArray(matrix) && matrix.length === 6) {
|
12507 |
+
this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
12508 |
+
}
|
12509 |
+
|
12510 |
+
if (bbox) {
|
12511 |
+
const width = bbox[2] - bbox[0];
|
12512 |
+
const height = bbox[3] - bbox[1];
|
12513 |
+
const cliprect = this.svgFactory.createElement("svg:rect");
|
12514 |
+
cliprect.setAttributeNS(null, "x", bbox[0]);
|
12515 |
+
cliprect.setAttributeNS(null, "y", bbox[1]);
|
12516 |
+
cliprect.setAttributeNS(null, "width", pf(width));
|
12517 |
+
cliprect.setAttributeNS(null, "height", pf(height));
|
12518 |
+
this.current.element = cliprect;
|
12519 |
+
this.clip("nonzero");
|
12520 |
+
this.endPath();
|
12521 |
+
}
|
12522 |
+
}
|
12523 |
+
|
12524 |
+
paintFormXObjectEnd() {}
|
12525 |
+
|
12526 |
+
_initialize(viewport) {
|
12527 |
+
const svg = this.svgFactory.create(viewport.width, viewport.height);
|
12528 |
+
const definitions = this.svgFactory.createElement("svg:defs");
|
12529 |
+
svg.appendChild(definitions);
|
12530 |
+
this.defs = definitions;
|
12531 |
+
const rootGroup = this.svgFactory.createElement("svg:g");
|
12532 |
+
rootGroup.setAttributeNS(null, "transform", pm(viewport.transform));
|
12533 |
+
svg.appendChild(rootGroup);
|
12534 |
+
this.svg = rootGroup;
|
12535 |
+
return svg;
|
12536 |
+
}
|
12537 |
+
|
12538 |
+
_ensureClipGroup() {
|
12539 |
+
if (!this.current.clipGroup) {
|
12540 |
+
const clipGroup = this.svgFactory.createElement("svg:g");
|
12541 |
+
clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl);
|
12542 |
+
this.svg.appendChild(clipGroup);
|
12543 |
+
this.current.clipGroup = clipGroup;
|
12544 |
+
}
|
12545 |
+
|
12546 |
+
return this.current.clipGroup;
|
12547 |
+
}
|
12548 |
+
|
12549 |
+
_ensureTransformGroup() {
|
12550 |
+
if (!this.tgrp) {
|
12551 |
+
this.tgrp = this.svgFactory.createElement("svg:g");
|
12552 |
+
this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix));
|
12553 |
+
|
12554 |
+
if (this.current.activeClipUrl) {
|
12555 |
+
this._ensureClipGroup().appendChild(this.tgrp);
|
12556 |
+
} else {
|
12557 |
+
this.svg.appendChild(this.tgrp);
|
12558 |
+
}
|
12559 |
+
}
|
12560 |
+
|
12561 |
+
return this.tgrp;
|
12562 |
+
}
|
12563 |
+
|
12564 |
+
};
|
12565 |
+
}
|
12566 |
+
|
12567 |
+
/***/ }),
|
12568 |
+
/* 21 */
|
12569 |
+
/***/ ((__unused_webpack_module, exports) => {
|
12570 |
+
|
12571 |
+
|
12572 |
+
|
12573 |
+
Object.defineProperty(exports, "__esModule", ({
|
12574 |
+
value: true
|
12575 |
+
}));
|
12576 |
+
exports.XfaLayer = void 0;
|
12577 |
+
|
12578 |
+
class XfaLayer {
|
12579 |
+
static setupStorage(html, fieldId, element, storage) {
|
12580 |
+
const storedData = storage.getValue(fieldId, {
|
12581 |
+
value: null
|
12582 |
+
});
|
12583 |
+
|
12584 |
+
switch (element.name) {
|
12585 |
+
case "textarea":
|
12586 |
+
html.textContent = storedData.value !== null ? storedData.value : "";
|
12587 |
+
html.addEventListener("input", event => {
|
12588 |
+
storage.setValue(fieldId, {
|
12589 |
+
value: event.target.value
|
12590 |
+
});
|
12591 |
+
});
|
12592 |
+
break;
|
12593 |
+
|
12594 |
+
case "input":
|
12595 |
+
if (storedData.value !== null) {
|
12596 |
+
html.setAttribute("value", storedData.value);
|
12597 |
+
}
|
12598 |
+
|
12599 |
+
if (element.attributes.type === "radio") {
|
12600 |
+
html.addEventListener("change", event => {
|
12601 |
+
const {
|
12602 |
+
target
|
12603 |
+
} = event;
|
12604 |
+
|
12605 |
+
for (const radio of document.getElementsByName(target.name)) {
|
12606 |
+
if (radio !== target) {
|
12607 |
+
const id = radio.id;
|
12608 |
+
storage.setValue(id.split("-")[0], {
|
12609 |
+
value: false
|
12610 |
+
});
|
12611 |
+
}
|
12612 |
+
}
|
12613 |
+
|
12614 |
+
storage.setValue(fieldId, {
|
12615 |
+
value: target.checked
|
12616 |
+
});
|
12617 |
+
});
|
12618 |
+
} else {
|
12619 |
+
html.addEventListener("input", event => {
|
12620 |
+
storage.setValue(fieldId, {
|
12621 |
+
value: event.target.value
|
12622 |
+
});
|
12623 |
+
});
|
12624 |
+
}
|
12625 |
+
|
12626 |
+
break;
|
12627 |
+
|
12628 |
+
case "select":
|
12629 |
+
if (storedData.value !== null) {
|
12630 |
+
for (const option of element.children) {
|
12631 |
+
if (option.attributes.value === storedData.value) {
|
12632 |
+
option.attributes.selected = true;
|
12633 |
+
}
|
12634 |
+
}
|
12635 |
+
}
|
12636 |
+
|
12637 |
+
html.addEventListener("input", event => {
|
12638 |
+
const options = event.target.options;
|
12639 |
+
const value = options.selectedIndex === -1 ? null : options[options.selectedIndex].value;
|
12640 |
+
storage.setValue(fieldId, {
|
12641 |
+
value
|
12642 |
+
});
|
12643 |
+
});
|
12644 |
+
break;
|
12645 |
+
}
|
12646 |
+
}
|
12647 |
+
|
12648 |
+
static setAttributes(html, element, storage) {
|
12649 |
+
const {
|
12650 |
+
attributes
|
12651 |
+
} = element;
|
12652 |
+
|
12653 |
+
for (const [key, value] of Object.entries(attributes)) {
|
12654 |
+
if (value === null || value === undefined || key === "fieldId") {
|
12655 |
+
continue;
|
12656 |
+
}
|
12657 |
+
|
12658 |
+
if (key !== "style") {
|
12659 |
+
if (key === "textContent") {
|
12660 |
+
html.textContent = value;
|
12661 |
+
} else {
|
12662 |
+
html.setAttribute(key, value);
|
12663 |
+
}
|
12664 |
+
} else {
|
12665 |
+
Object.assign(html.style, value);
|
12666 |
+
}
|
12667 |
+
}
|
12668 |
+
|
12669 |
+
if (storage && attributes.fieldId !== undefined) {
|
12670 |
+
this.setupStorage(html, attributes.fieldId, element, storage);
|
12671 |
+
}
|
12672 |
+
}
|
12673 |
+
|
12674 |
+
static render(parameters) {
|
12675 |
+
const storage = parameters.annotationStorage;
|
12676 |
+
const root = parameters.xfa;
|
12677 |
+
const rootHtml = document.createElement(root.name);
|
12678 |
+
|
12679 |
+
if (root.attributes) {
|
12680 |
+
this.setAttributes(rootHtml, root);
|
12681 |
+
}
|
12682 |
+
|
12683 |
+
const stack = [[root, -1, rootHtml]];
|
12684 |
+
const rootDiv = parameters.div;
|
12685 |
+
rootDiv.appendChild(rootHtml);
|
12686 |
+
const coeffs = parameters.viewport.transform.join(",");
|
12687 |
+
rootDiv.style.transform = `matrix(${coeffs})`;
|
12688 |
+
rootDiv.setAttribute("class", "xfaLayer xfaFont");
|
12689 |
+
|
12690 |
+
while (stack.length > 0) {
|
12691 |
+
const [parent, i, html] = stack[stack.length - 1];
|
12692 |
+
|
12693 |
+
if (i + 1 === parent.children.length) {
|
12694 |
+
stack.pop();
|
12695 |
+
continue;
|
12696 |
+
}
|
12697 |
+
|
12698 |
+
const child = parent.children[++stack[stack.length - 1][1]];
|
12699 |
+
|
12700 |
+
if (child === null) {
|
12701 |
+
continue;
|
12702 |
+
}
|
12703 |
+
|
12704 |
+
const {
|
12705 |
+
name
|
12706 |
+
} = child;
|
12707 |
+
|
12708 |
+
if (name === "#text") {
|
12709 |
+
html.appendChild(document.createTextNode(child.value));
|
12710 |
+
continue;
|
12711 |
+
}
|
12712 |
+
|
12713 |
+
const childHtml = document.createElement(name);
|
12714 |
+
html.appendChild(childHtml);
|
12715 |
+
|
12716 |
+
if (child.attributes) {
|
12717 |
+
this.setAttributes(childHtml, child, storage);
|
12718 |
+
}
|
12719 |
+
|
12720 |
+
if (child.children && child.children.length > 0) {
|
12721 |
+
stack.push([child, -1, childHtml]);
|
12722 |
+
} else if (child.value) {
|
12723 |
+
childHtml.appendChild(document.createTextNode(child.value));
|
12724 |
+
}
|
12725 |
+
}
|
12726 |
+
}
|
12727 |
+
|
12728 |
+
static update(parameters) {
|
12729 |
+
const transform = `matrix(${parameters.viewport.transform.join(",")})`;
|
12730 |
+
parameters.div.style.transform = transform;
|
12731 |
+
parameters.div.hidden = false;
|
12732 |
+
}
|
12733 |
+
|
12734 |
+
}
|
12735 |
+
|
12736 |
+
exports.XfaLayer = XfaLayer;
|
12737 |
+
|
12738 |
+
/***/ }),
|
12739 |
+
/* 22 */
|
12740 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
12741 |
+
|
12742 |
+
|
12743 |
+
|
12744 |
+
Object.defineProperty(exports, "__esModule", ({
|
12745 |
+
value: true
|
12746 |
+
}));
|
12747 |
+
exports.PDFNodeStream = void 0;
|
12748 |
+
|
12749 |
+
var _util = __w_pdfjs_require__(2);
|
12750 |
+
|
12751 |
+
var _network_utils = __w_pdfjs_require__(23);
|
12752 |
+
|
12753 |
+
;
|
12754 |
+
|
12755 |
+
const fs = require("fs");
|
12756 |
+
|
12757 |
+
const http = require("http");
|
12758 |
+
|
12759 |
+
const https = require("https");
|
12760 |
+
|
12761 |
+
const url = require("url");
|
12762 |
+
|
12763 |
+
const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
|
12764 |
+
|
12765 |
+
function parseUrl(sourceUrl) {
|
12766 |
+
const parsedUrl = url.parse(sourceUrl);
|
12767 |
+
|
12768 |
+
if (parsedUrl.protocol === "file:" || parsedUrl.host) {
|
12769 |
+
return parsedUrl;
|
12770 |
+
}
|
12771 |
+
|
12772 |
+
if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
|
12773 |
+
return url.parse(`file:///${sourceUrl}`);
|
12774 |
+
}
|
12775 |
+
|
12776 |
+
if (!parsedUrl.host) {
|
12777 |
+
parsedUrl.protocol = "file:";
|
12778 |
+
}
|
12779 |
+
|
12780 |
+
return parsedUrl;
|
12781 |
+
}
|
12782 |
+
|
12783 |
+
class PDFNodeStream {
|
12784 |
+
constructor(source) {
|
12785 |
+
this.source = source;
|
12786 |
+
this.url = parseUrl(source.url);
|
12787 |
+
this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:";
|
12788 |
+
this.isFsUrl = this.url.protocol === "file:";
|
12789 |
+
this.httpHeaders = this.isHttp && source.httpHeaders || {};
|
12790 |
+
this._fullRequestReader = null;
|
12791 |
+
this._rangeRequestReaders = [];
|
12792 |
+
}
|
12793 |
+
|
12794 |
+
get _progressiveDataLength() {
|
12795 |
+
return this._fullRequestReader?._loaded ?? 0;
|
12796 |
+
}
|
12797 |
+
|
12798 |
+
getFullReader() {
|
12799 |
+
(0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once.");
|
12800 |
+
this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
|
12801 |
+
return this._fullRequestReader;
|
12802 |
+
}
|
12803 |
+
|
12804 |
+
getRangeReader(start, end) {
|
12805 |
+
if (end <= this._progressiveDataLength) {
|
12806 |
+
return null;
|
12807 |
+
}
|
12808 |
+
|
12809 |
+
const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
|
12810 |
+
|
12811 |
+
this._rangeRequestReaders.push(rangeReader);
|
12812 |
+
|
12813 |
+
return rangeReader;
|
12814 |
+
}
|
12815 |
+
|
12816 |
+
cancelAllRequests(reason) {
|
12817 |
+
if (this._fullRequestReader) {
|
12818 |
+
this._fullRequestReader.cancel(reason);
|
12819 |
+
}
|
12820 |
+
|
12821 |
+
for (const reader of this._rangeRequestReaders.slice(0)) {
|
12822 |
+
reader.cancel(reason);
|
12823 |
+
}
|
12824 |
+
}
|
12825 |
+
|
12826 |
+
}
|
12827 |
+
|
12828 |
+
exports.PDFNodeStream = PDFNodeStream;
|
12829 |
+
|
12830 |
+
class BaseFullReader {
|
12831 |
+
constructor(stream) {
|
12832 |
+
this._url = stream.url;
|
12833 |
+
this._done = false;
|
12834 |
+
this._storedError = null;
|
12835 |
+
this.onProgress = null;
|
12836 |
+
const source = stream.source;
|
12837 |
+
this._contentLength = source.length;
|
12838 |
+
this._loaded = 0;
|
12839 |
+
this._filename = null;
|
12840 |
+
this._disableRange = source.disableRange || false;
|
12841 |
+
this._rangeChunkSize = source.rangeChunkSize;
|
12842 |
+
|
12843 |
+
if (!this._rangeChunkSize && !this._disableRange) {
|
12844 |
+
this._disableRange = true;
|
12845 |
+
}
|
12846 |
+
|
12847 |
+
this._isStreamingSupported = !source.disableStream;
|
12848 |
+
this._isRangeSupported = !source.disableRange;
|
12849 |
+
this._readableStream = null;
|
12850 |
+
this._readCapability = (0, _util.createPromiseCapability)();
|
12851 |
+
this._headersCapability = (0, _util.createPromiseCapability)();
|
12852 |
+
}
|
12853 |
+
|
12854 |
+
get headersReady() {
|
12855 |
+
return this._headersCapability.promise;
|
12856 |
+
}
|
12857 |
+
|
12858 |
+
get filename() {
|
12859 |
+
return this._filename;
|
12860 |
+
}
|
12861 |
+
|
12862 |
+
get contentLength() {
|
12863 |
+
return this._contentLength;
|
12864 |
+
}
|
12865 |
+
|
12866 |
+
get isRangeSupported() {
|
12867 |
+
return this._isRangeSupported;
|
12868 |
+
}
|
12869 |
+
|
12870 |
+
get isStreamingSupported() {
|
12871 |
+
return this._isStreamingSupported;
|
12872 |
+
}
|
12873 |
+
|
12874 |
+
async read() {
|
12875 |
+
await this._readCapability.promise;
|
12876 |
+
|
12877 |
+
if (this._done) {
|
12878 |
+
return {
|
12879 |
+
value: undefined,
|
12880 |
+
done: true
|
12881 |
+
};
|
12882 |
+
}
|
12883 |
+
|
12884 |
+
if (this._storedError) {
|
12885 |
+
throw this._storedError;
|
12886 |
+
}
|
12887 |
+
|
12888 |
+
const chunk = this._readableStream.read();
|
12889 |
+
|
12890 |
+
if (chunk === null) {
|
12891 |
+
this._readCapability = (0, _util.createPromiseCapability)();
|
12892 |
+
return this.read();
|
12893 |
+
}
|
12894 |
+
|
12895 |
+
this._loaded += chunk.length;
|
12896 |
+
|
12897 |
+
if (this.onProgress) {
|
12898 |
+
this.onProgress({
|
12899 |
+
loaded: this._loaded,
|
12900 |
+
total: this._contentLength
|
12901 |
+
});
|
12902 |
+
}
|
12903 |
+
|
12904 |
+
const buffer = new Uint8Array(chunk).buffer;
|
12905 |
+
return {
|
12906 |
+
value: buffer,
|
12907 |
+
done: false
|
12908 |
+
};
|
12909 |
+
}
|
12910 |
+
|
12911 |
+
cancel(reason) {
|
12912 |
+
if (!this._readableStream) {
|
12913 |
+
this._error(reason);
|
12914 |
+
|
12915 |
+
return;
|
12916 |
+
}
|
12917 |
+
|
12918 |
+
this._readableStream.destroy(reason);
|
12919 |
+
}
|
12920 |
+
|
12921 |
+
_error(reason) {
|
12922 |
+
this._storedError = reason;
|
12923 |
+
|
12924 |
+
this._readCapability.resolve();
|
12925 |
+
}
|
12926 |
+
|
12927 |
+
_setReadableStream(readableStream) {
|
12928 |
+
this._readableStream = readableStream;
|
12929 |
+
readableStream.on("readable", () => {
|
12930 |
+
this._readCapability.resolve();
|
12931 |
+
});
|
12932 |
+
readableStream.on("end", () => {
|
12933 |
+
readableStream.destroy();
|
12934 |
+
this._done = true;
|
12935 |
+
|
12936 |
+
this._readCapability.resolve();
|
12937 |
+
});
|
12938 |
+
readableStream.on("error", reason => {
|
12939 |
+
this._error(reason);
|
12940 |
+
});
|
12941 |
+
|
12942 |
+
if (!this._isStreamingSupported && this._isRangeSupported) {
|
12943 |
+
this._error(new _util.AbortException("streaming is disabled"));
|
12944 |
+
}
|
12945 |
+
|
12946 |
+
if (this._storedError) {
|
12947 |
+
this._readableStream.destroy(this._storedError);
|
12948 |
+
}
|
12949 |
+
}
|
12950 |
+
|
12951 |
+
}
|
12952 |
+
|
12953 |
+
class BaseRangeReader {
|
12954 |
+
constructor(stream) {
|
12955 |
+
this._url = stream.url;
|
12956 |
+
this._done = false;
|
12957 |
+
this._storedError = null;
|
12958 |
+
this.onProgress = null;
|
12959 |
+
this._loaded = 0;
|
12960 |
+
this._readableStream = null;
|
12961 |
+
this._readCapability = (0, _util.createPromiseCapability)();
|
12962 |
+
const source = stream.source;
|
12963 |
+
this._isStreamingSupported = !source.disableStream;
|
12964 |
+
}
|
12965 |
+
|
12966 |
+
get isStreamingSupported() {
|
12967 |
+
return this._isStreamingSupported;
|
12968 |
+
}
|
12969 |
+
|
12970 |
+
async read() {
|
12971 |
+
await this._readCapability.promise;
|
12972 |
+
|
12973 |
+
if (this._done) {
|
12974 |
+
return {
|
12975 |
+
value: undefined,
|
12976 |
+
done: true
|
12977 |
+
};
|
12978 |
+
}
|
12979 |
+
|
12980 |
+
if (this._storedError) {
|
12981 |
+
throw this._storedError;
|
12982 |
+
}
|
12983 |
+
|
12984 |
+
const chunk = this._readableStream.read();
|
12985 |
+
|
12986 |
+
if (chunk === null) {
|
12987 |
+
this._readCapability = (0, _util.createPromiseCapability)();
|
12988 |
+
return this.read();
|
12989 |
+
}
|
12990 |
+
|
12991 |
+
this._loaded += chunk.length;
|
12992 |
+
|
12993 |
+
if (this.onProgress) {
|
12994 |
+
this.onProgress({
|
12995 |
+
loaded: this._loaded
|
12996 |
+
});
|
12997 |
+
}
|
12998 |
+
|
12999 |
+
const buffer = new Uint8Array(chunk).buffer;
|
13000 |
+
return {
|
13001 |
+
value: buffer,
|
13002 |
+
done: false
|
13003 |
+
};
|
13004 |
+
}
|
13005 |
+
|
13006 |
+
cancel(reason) {
|
13007 |
+
if (!this._readableStream) {
|
13008 |
+
this._error(reason);
|
13009 |
+
|
13010 |
+
return;
|
13011 |
+
}
|
13012 |
+
|
13013 |
+
this._readableStream.destroy(reason);
|
13014 |
+
}
|
13015 |
+
|
13016 |
+
_error(reason) {
|
13017 |
+
this._storedError = reason;
|
13018 |
+
|
13019 |
+
this._readCapability.resolve();
|
13020 |
+
}
|
13021 |
+
|
13022 |
+
_setReadableStream(readableStream) {
|
13023 |
+
this._readableStream = readableStream;
|
13024 |
+
readableStream.on("readable", () => {
|
13025 |
+
this._readCapability.resolve();
|
13026 |
+
});
|
13027 |
+
readableStream.on("end", () => {
|
13028 |
+
readableStream.destroy();
|
13029 |
+
this._done = true;
|
13030 |
+
|
13031 |
+
this._readCapability.resolve();
|
13032 |
+
});
|
13033 |
+
readableStream.on("error", reason => {
|
13034 |
+
this._error(reason);
|
13035 |
+
});
|
13036 |
+
|
13037 |
+
if (this._storedError) {
|
13038 |
+
this._readableStream.destroy(this._storedError);
|
13039 |
+
}
|
13040 |
+
}
|
13041 |
+
|
13042 |
+
}
|
13043 |
+
|
13044 |
+
function createRequestOptions(parsedUrl, headers) {
|
13045 |
+
return {
|
13046 |
+
protocol: parsedUrl.protocol,
|
13047 |
+
auth: parsedUrl.auth,
|
13048 |
+
host: parsedUrl.hostname,
|
13049 |
+
port: parsedUrl.port,
|
13050 |
+
path: parsedUrl.path,
|
13051 |
+
method: "GET",
|
13052 |
+
headers
|
13053 |
+
};
|
13054 |
+
}
|
13055 |
+
|
13056 |
+
class PDFNodeStreamFullReader extends BaseFullReader {
|
13057 |
+
constructor(stream) {
|
13058 |
+
super(stream);
|
13059 |
+
|
13060 |
+
const handleResponse = response => {
|
13061 |
+
if (response.statusCode === 404) {
|
13062 |
+
const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`);
|
13063 |
+
this._storedError = error;
|
13064 |
+
|
13065 |
+
this._headersCapability.reject(error);
|
13066 |
+
|
13067 |
+
return;
|
13068 |
+
}
|
13069 |
+
|
13070 |
+
this._headersCapability.resolve();
|
13071 |
+
|
13072 |
+
this._setReadableStream(response);
|
13073 |
+
|
13074 |
+
const getResponseHeader = name => {
|
13075 |
+
return this._readableStream.headers[name.toLowerCase()];
|
13076 |
+
};
|
13077 |
+
|
13078 |
+
const {
|
13079 |
+
allowRangeRequests,
|
13080 |
+
suggestedLength
|
13081 |
+
} = (0, _network_utils.validateRangeRequestCapabilities)({
|
13082 |
+
getResponseHeader,
|
13083 |
+
isHttp: stream.isHttp,
|
13084 |
+
rangeChunkSize: this._rangeChunkSize,
|
13085 |
+
disableRange: this._disableRange
|
13086 |
+
});
|
13087 |
+
this._isRangeSupported = allowRangeRequests;
|
13088 |
+
this._contentLength = suggestedLength || this._contentLength;
|
13089 |
+
this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
|
13090 |
+
};
|
13091 |
+
|
13092 |
+
this._request = null;
|
13093 |
+
|
13094 |
+
if (this._url.protocol === "http:") {
|
13095 |
+
this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);
|
13096 |
+
} else {
|
13097 |
+
this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);
|
13098 |
+
}
|
13099 |
+
|
13100 |
+
this._request.on("error", reason => {
|
13101 |
+
this._storedError = reason;
|
13102 |
+
|
13103 |
+
this._headersCapability.reject(reason);
|
13104 |
+
});
|
13105 |
+
|
13106 |
+
this._request.end();
|
13107 |
+
}
|
13108 |
+
|
13109 |
+
}
|
13110 |
+
|
13111 |
+
class PDFNodeStreamRangeReader extends BaseRangeReader {
|
13112 |
+
constructor(stream, start, end) {
|
13113 |
+
super(stream);
|
13114 |
+
this._httpHeaders = {};
|
13115 |
+
|
13116 |
+
for (const property in stream.httpHeaders) {
|
13117 |
+
const value = stream.httpHeaders[property];
|
13118 |
+
|
13119 |
+
if (typeof value === "undefined") {
|
13120 |
+
continue;
|
13121 |
+
}
|
13122 |
+
|
13123 |
+
this._httpHeaders[property] = value;
|
13124 |
+
}
|
13125 |
+
|
13126 |
+
this._httpHeaders.Range = `bytes=${start}-${end - 1}`;
|
13127 |
+
|
13128 |
+
const handleResponse = response => {
|
13129 |
+
if (response.statusCode === 404) {
|
13130 |
+
const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`);
|
13131 |
+
this._storedError = error;
|
13132 |
+
return;
|
13133 |
+
}
|
13134 |
+
|
13135 |
+
this._setReadableStream(response);
|
13136 |
+
};
|
13137 |
+
|
13138 |
+
this._request = null;
|
13139 |
+
|
13140 |
+
if (this._url.protocol === "http:") {
|
13141 |
+
this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
|
13142 |
+
} else {
|
13143 |
+
this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
|
13144 |
+
}
|
13145 |
+
|
13146 |
+
this._request.on("error", reason => {
|
13147 |
+
this._storedError = reason;
|
13148 |
+
});
|
13149 |
+
|
13150 |
+
this._request.end();
|
13151 |
+
}
|
13152 |
+
|
13153 |
+
}
|
13154 |
+
|
13155 |
+
class PDFNodeStreamFsFullReader extends BaseFullReader {
|
13156 |
+
constructor(stream) {
|
13157 |
+
super(stream);
|
13158 |
+
let path = decodeURIComponent(this._url.path);
|
13159 |
+
|
13160 |
+
if (fileUriRegex.test(this._url.href)) {
|
13161 |
+
path = path.replace(/^\//, "");
|
13162 |
+
}
|
13163 |
+
|
13164 |
+
fs.lstat(path, (error, stat) => {
|
13165 |
+
if (error) {
|
13166 |
+
if (error.code === "ENOENT") {
|
13167 |
+
error = new _util.MissingPDFException(`Missing PDF "${path}".`);
|
13168 |
+
}
|
13169 |
+
|
13170 |
+
this._storedError = error;
|
13171 |
+
|
13172 |
+
this._headersCapability.reject(error);
|
13173 |
+
|
13174 |
+
return;
|
13175 |
+
}
|
13176 |
+
|
13177 |
+
this._contentLength = stat.size;
|
13178 |
+
|
13179 |
+
this._setReadableStream(fs.createReadStream(path));
|
13180 |
+
|
13181 |
+
this._headersCapability.resolve();
|
13182 |
+
});
|
13183 |
+
}
|
13184 |
+
|
13185 |
+
}
|
13186 |
+
|
13187 |
+
class PDFNodeStreamFsRangeReader extends BaseRangeReader {
|
13188 |
+
constructor(stream, start, end) {
|
13189 |
+
super(stream);
|
13190 |
+
let path = decodeURIComponent(this._url.path);
|
13191 |
+
|
13192 |
+
if (fileUriRegex.test(this._url.href)) {
|
13193 |
+
path = path.replace(/^\//, "");
|
13194 |
+
}
|
13195 |
+
|
13196 |
+
this._setReadableStream(fs.createReadStream(path, {
|
13197 |
+
start,
|
13198 |
+
end: end - 1
|
13199 |
+
}));
|
13200 |
+
}
|
13201 |
+
|
13202 |
+
}
|
13203 |
+
|
13204 |
+
/***/ }),
|
13205 |
+
/* 23 */
|
13206 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
13207 |
+
|
13208 |
+
|
13209 |
+
|
13210 |
+
Object.defineProperty(exports, "__esModule", ({
|
13211 |
+
value: true
|
13212 |
+
}));
|
13213 |
+
exports.createResponseStatusError = createResponseStatusError;
|
13214 |
+
exports.extractFilenameFromHeader = extractFilenameFromHeader;
|
13215 |
+
exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
|
13216 |
+
exports.validateResponseStatus = validateResponseStatus;
|
13217 |
+
|
13218 |
+
var _util = __w_pdfjs_require__(2);
|
13219 |
+
|
13220 |
+
var _content_disposition = __w_pdfjs_require__(24);
|
13221 |
+
|
13222 |
+
var _display_utils = __w_pdfjs_require__(1);
|
13223 |
+
|
13224 |
+
function validateRangeRequestCapabilities({
|
13225 |
+
getResponseHeader,
|
13226 |
+
isHttp,
|
13227 |
+
rangeChunkSize,
|
13228 |
+
disableRange
|
13229 |
+
}) {
|
13230 |
+
(0, _util.assert)(rangeChunkSize > 0, "Range chunk size must be larger than zero");
|
13231 |
+
const returnValues = {
|
13232 |
+
allowRangeRequests: false,
|
13233 |
+
suggestedLength: undefined
|
13234 |
+
};
|
13235 |
+
const length = parseInt(getResponseHeader("Content-Length"), 10);
|
13236 |
+
|
13237 |
+
if (!Number.isInteger(length)) {
|
13238 |
+
return returnValues;
|
13239 |
+
}
|
13240 |
+
|
13241 |
+
returnValues.suggestedLength = length;
|
13242 |
+
|
13243 |
+
if (length <= 2 * rangeChunkSize) {
|
13244 |
+
return returnValues;
|
13245 |
+
}
|
13246 |
+
|
13247 |
+
if (disableRange || !isHttp) {
|
13248 |
+
return returnValues;
|
13249 |
+
}
|
13250 |
+
|
13251 |
+
if (getResponseHeader("Accept-Ranges") !== "bytes") {
|
13252 |
+
return returnValues;
|
13253 |
+
}
|
13254 |
+
|
13255 |
+
const contentEncoding = getResponseHeader("Content-Encoding") || "identity";
|
13256 |
+
|
13257 |
+
if (contentEncoding !== "identity") {
|
13258 |
+
return returnValues;
|
13259 |
+
}
|
13260 |
+
|
13261 |
+
returnValues.allowRangeRequests = true;
|
13262 |
+
return returnValues;
|
13263 |
+
}
|
13264 |
+
|
13265 |
+
function extractFilenameFromHeader(getResponseHeader) {
|
13266 |
+
const contentDisposition = getResponseHeader("Content-Disposition");
|
13267 |
+
|
13268 |
+
if (contentDisposition) {
|
13269 |
+
let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
|
13270 |
+
|
13271 |
+
if (filename.includes("%")) {
|
13272 |
+
try {
|
13273 |
+
filename = decodeURIComponent(filename);
|
13274 |
+
} catch (ex) {}
|
13275 |
+
}
|
13276 |
+
|
13277 |
+
if ((0, _display_utils.isPdfFile)(filename)) {
|
13278 |
+
return filename;
|
13279 |
+
}
|
13280 |
+
}
|
13281 |
+
|
13282 |
+
return null;
|
13283 |
+
}
|
13284 |
+
|
13285 |
+
function createResponseStatusError(status, url) {
|
13286 |
+
if (status === 404 || status === 0 && url.startsWith("file:")) {
|
13287 |
+
return new _util.MissingPDFException('Missing PDF "' + url + '".');
|
13288 |
+
}
|
13289 |
+
|
13290 |
+
return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status);
|
13291 |
+
}
|
13292 |
+
|
13293 |
+
function validateResponseStatus(status) {
|
13294 |
+
return status === 200 || status === 206;
|
13295 |
+
}
|
13296 |
+
|
13297 |
+
/***/ }),
|
13298 |
+
/* 24 */
|
13299 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
13300 |
+
|
13301 |
+
|
13302 |
+
|
13303 |
+
Object.defineProperty(exports, "__esModule", ({
|
13304 |
+
value: true
|
13305 |
+
}));
|
13306 |
+
exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
|
13307 |
+
|
13308 |
+
var _util = __w_pdfjs_require__(2);
|
13309 |
+
|
13310 |
+
function getFilenameFromContentDispositionHeader(contentDisposition) {
|
13311 |
+
let needsEncodingFixup = true;
|
13312 |
+
let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition);
|
13313 |
+
|
13314 |
+
if (tmp) {
|
13315 |
+
tmp = tmp[1];
|
13316 |
+
let filename = rfc2616unquote(tmp);
|
13317 |
+
filename = unescape(filename);
|
13318 |
+
filename = rfc5987decode(filename);
|
13319 |
+
filename = rfc2047decode(filename);
|
13320 |
+
return fixupEncoding(filename);
|
13321 |
+
}
|
13322 |
+
|
13323 |
+
tmp = rfc2231getparam(contentDisposition);
|
13324 |
+
|
13325 |
+
if (tmp) {
|
13326 |
+
const filename = rfc2047decode(tmp);
|
13327 |
+
return fixupEncoding(filename);
|
13328 |
+
}
|
13329 |
+
|
13330 |
+
tmp = toParamRegExp("filename", "i").exec(contentDisposition);
|
13331 |
+
|
13332 |
+
if (tmp) {
|
13333 |
+
tmp = tmp[1];
|
13334 |
+
let filename = rfc2616unquote(tmp);
|
13335 |
+
filename = rfc2047decode(filename);
|
13336 |
+
return fixupEncoding(filename);
|
13337 |
+
}
|
13338 |
+
|
13339 |
+
function toParamRegExp(attributePattern, flags) {
|
13340 |
+
return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags);
|
13341 |
+
}
|
13342 |
+
|
13343 |
+
function textdecode(encoding, value) {
|
13344 |
+
if (encoding) {
|
13345 |
+
if (!/^[\x00-\xFF]+$/.test(value)) {
|
13346 |
+
return value;
|
13347 |
+
}
|
13348 |
+
|
13349 |
+
try {
|
13350 |
+
const decoder = new TextDecoder(encoding, {
|
13351 |
+
fatal: true
|
13352 |
+
});
|
13353 |
+
const buffer = (0, _util.stringToBytes)(value);
|
13354 |
+
value = decoder.decode(buffer);
|
13355 |
+
needsEncodingFixup = false;
|
13356 |
+
} catch (e) {
|
13357 |
+
if (/^utf-?8$/i.test(encoding)) {
|
13358 |
+
try {
|
13359 |
+
value = decodeURIComponent(escape(value));
|
13360 |
+
needsEncodingFixup = false;
|
13361 |
+
} catch (err) {}
|
13362 |
+
}
|
13363 |
+
}
|
13364 |
+
}
|
13365 |
+
|
13366 |
+
return value;
|
13367 |
+
}
|
13368 |
+
|
13369 |
+
function fixupEncoding(value) {
|
13370 |
+
if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
|
13371 |
+
value = textdecode("utf-8", value);
|
13372 |
+
|
13373 |
+
if (needsEncodingFixup) {
|
13374 |
+
value = textdecode("iso-8859-1", value);
|
13375 |
+
}
|
13376 |
+
}
|
13377 |
+
|
13378 |
+
return value;
|
13379 |
+
}
|
13380 |
+
|
13381 |
+
function rfc2231getparam(contentDispositionStr) {
|
13382 |
+
const matches = [];
|
13383 |
+
let match;
|
13384 |
+
const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig");
|
13385 |
+
|
13386 |
+
while ((match = iter.exec(contentDispositionStr)) !== null) {
|
13387 |
+
let [, n, quot, part] = match;
|
13388 |
+
n = parseInt(n, 10);
|
13389 |
+
|
13390 |
+
if (n in matches) {
|
13391 |
+
if (n === 0) {
|
13392 |
+
break;
|
13393 |
+
}
|
13394 |
+
|
13395 |
+
continue;
|
13396 |
+
}
|
13397 |
+
|
13398 |
+
matches[n] = [quot, part];
|
13399 |
+
}
|
13400 |
+
|
13401 |
+
const parts = [];
|
13402 |
+
|
13403 |
+
for (let n = 0; n < matches.length; ++n) {
|
13404 |
+
if (!(n in matches)) {
|
13405 |
+
break;
|
13406 |
+
}
|
13407 |
+
|
13408 |
+
let [quot, part] = matches[n];
|
13409 |
+
part = rfc2616unquote(part);
|
13410 |
+
|
13411 |
+
if (quot) {
|
13412 |
+
part = unescape(part);
|
13413 |
+
|
13414 |
+
if (n === 0) {
|
13415 |
+
part = rfc5987decode(part);
|
13416 |
+
}
|
13417 |
+
}
|
13418 |
+
|
13419 |
+
parts.push(part);
|
13420 |
+
}
|
13421 |
+
|
13422 |
+
return parts.join("");
|
13423 |
+
}
|
13424 |
+
|
13425 |
+
function rfc2616unquote(value) {
|
13426 |
+
if (value.startsWith('"')) {
|
13427 |
+
const parts = value.slice(1).split('\\"');
|
13428 |
+
|
13429 |
+
for (let i = 0; i < parts.length; ++i) {
|
13430 |
+
const quotindex = parts[i].indexOf('"');
|
13431 |
+
|
13432 |
+
if (quotindex !== -1) {
|
13433 |
+
parts[i] = parts[i].slice(0, quotindex);
|
13434 |
+
parts.length = i + 1;
|
13435 |
+
}
|
13436 |
+
|
13437 |
+
parts[i] = parts[i].replace(/\\(.)/g, "$1");
|
13438 |
+
}
|
13439 |
+
|
13440 |
+
value = parts.join('"');
|
13441 |
+
}
|
13442 |
+
|
13443 |
+
return value;
|
13444 |
+
}
|
13445 |
+
|
13446 |
+
function rfc5987decode(extvalue) {
|
13447 |
+
const encodingend = extvalue.indexOf("'");
|
13448 |
+
|
13449 |
+
if (encodingend === -1) {
|
13450 |
+
return extvalue;
|
13451 |
+
}
|
13452 |
+
|
13453 |
+
const encoding = extvalue.slice(0, encodingend);
|
13454 |
+
const langvalue = extvalue.slice(encodingend + 1);
|
13455 |
+
const value = langvalue.replace(/^[^']*'/, "");
|
13456 |
+
return textdecode(encoding, value);
|
13457 |
+
}
|
13458 |
+
|
13459 |
+
function rfc2047decode(value) {
|
13460 |
+
if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) {
|
13461 |
+
return value;
|
13462 |
+
}
|
13463 |
+
|
13464 |
+
return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) {
|
13465 |
+
if (encoding === "q" || encoding === "Q") {
|
13466 |
+
text = text.replace(/_/g, " ");
|
13467 |
+
text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {
|
13468 |
+
return String.fromCharCode(parseInt(hex, 16));
|
13469 |
+
});
|
13470 |
+
return textdecode(charset, text);
|
13471 |
+
}
|
13472 |
+
|
13473 |
+
try {
|
13474 |
+
text = atob(text);
|
13475 |
+
} catch (e) {}
|
13476 |
+
|
13477 |
+
return textdecode(charset, text);
|
13478 |
+
});
|
13479 |
+
}
|
13480 |
+
|
13481 |
+
return "";
|
13482 |
+
}
|
13483 |
+
|
13484 |
+
/***/ }),
|
13485 |
+
/* 25 */
|
13486 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
13487 |
+
|
13488 |
+
|
13489 |
+
|
13490 |
+
Object.defineProperty(exports, "__esModule", ({
|
13491 |
+
value: true
|
13492 |
+
}));
|
13493 |
+
exports.PDFNetworkStream = void 0;
|
13494 |
+
|
13495 |
+
var _util = __w_pdfjs_require__(2);
|
13496 |
+
|
13497 |
+
var _network_utils = __w_pdfjs_require__(23);
|
13498 |
+
|
13499 |
+
;
|
13500 |
+
const OK_RESPONSE = 200;
|
13501 |
+
const PARTIAL_CONTENT_RESPONSE = 206;
|
13502 |
+
|
13503 |
+
function getArrayBuffer(xhr) {
|
13504 |
+
const data = xhr.response;
|
13505 |
+
|
13506 |
+
if (typeof data !== "string") {
|
13507 |
+
return data;
|
13508 |
+
}
|
13509 |
+
|
13510 |
+
const array = (0, _util.stringToBytes)(data);
|
13511 |
+
return array.buffer;
|
13512 |
+
}
|
13513 |
+
|
13514 |
+
class NetworkManager {
|
13515 |
+
constructor(url, args) {
|
13516 |
+
this.url = url;
|
13517 |
+
args = args || {};
|
13518 |
+
this.isHttp = /^https?:/i.test(url);
|
13519 |
+
this.httpHeaders = this.isHttp && args.httpHeaders || {};
|
13520 |
+
this.withCredentials = args.withCredentials || false;
|
13521 |
+
|
13522 |
+
this.getXhr = args.getXhr || function NetworkManager_getXhr() {
|
13523 |
+
return new XMLHttpRequest();
|
13524 |
+
};
|
13525 |
+
|
13526 |
+
this.currXhrId = 0;
|
13527 |
+
this.pendingRequests = Object.create(null);
|
13528 |
+
}
|
13529 |
+
|
13530 |
+
requestRange(begin, end, listeners) {
|
13531 |
+
const args = {
|
13532 |
+
begin,
|
13533 |
+
end
|
13534 |
+
};
|
13535 |
+
|
13536 |
+
for (const prop in listeners) {
|
13537 |
+
args[prop] = listeners[prop];
|
13538 |
+
}
|
13539 |
+
|
13540 |
+
return this.request(args);
|
13541 |
+
}
|
13542 |
+
|
13543 |
+
requestFull(listeners) {
|
13544 |
+
return this.request(listeners);
|
13545 |
+
}
|
13546 |
+
|
13547 |
+
request(args) {
|
13548 |
+
const xhr = this.getXhr();
|
13549 |
+
const xhrId = this.currXhrId++;
|
13550 |
+
const pendingRequest = this.pendingRequests[xhrId] = {
|
13551 |
+
xhr
|
13552 |
+
};
|
13553 |
+
xhr.open("GET", this.url);
|
13554 |
+
xhr.withCredentials = this.withCredentials;
|
13555 |
+
|
13556 |
+
for (const property in this.httpHeaders) {
|
13557 |
+
const value = this.httpHeaders[property];
|
13558 |
+
|
13559 |
+
if (typeof value === "undefined") {
|
13560 |
+
continue;
|
13561 |
+
}
|
13562 |
+
|
13563 |
+
xhr.setRequestHeader(property, value);
|
13564 |
+
}
|
13565 |
+
|
13566 |
+
if (this.isHttp && "begin" in args && "end" in args) {
|
13567 |
+
xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`);
|
13568 |
+
pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;
|
13569 |
+
} else {
|
13570 |
+
pendingRequest.expectedStatus = OK_RESPONSE;
|
13571 |
+
}
|
13572 |
+
|
13573 |
+
xhr.responseType = "arraybuffer";
|
13574 |
+
|
13575 |
+
if (args.onError) {
|
13576 |
+
xhr.onerror = function (evt) {
|
13577 |
+
args.onError(xhr.status);
|
13578 |
+
};
|
13579 |
+
}
|
13580 |
+
|
13581 |
+
xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
|
13582 |
+
xhr.onprogress = this.onProgress.bind(this, xhrId);
|
13583 |
+
pendingRequest.onHeadersReceived = args.onHeadersReceived;
|
13584 |
+
pendingRequest.onDone = args.onDone;
|
13585 |
+
pendingRequest.onError = args.onError;
|
13586 |
+
pendingRequest.onProgress = args.onProgress;
|
13587 |
+
xhr.send(null);
|
13588 |
+
return xhrId;
|
13589 |
+
}
|
13590 |
+
|
13591 |
+
onProgress(xhrId, evt) {
|
13592 |
+
const pendingRequest = this.pendingRequests[xhrId];
|
13593 |
+
|
13594 |
+
if (!pendingRequest) {
|
13595 |
+
return;
|
13596 |
+
}
|
13597 |
+
|
13598 |
+
if (pendingRequest.onProgress) {
|
13599 |
+
pendingRequest.onProgress(evt);
|
13600 |
+
}
|
13601 |
+
}
|
13602 |
+
|
13603 |
+
onStateChange(xhrId, evt) {
|
13604 |
+
const pendingRequest = this.pendingRequests[xhrId];
|
13605 |
+
|
13606 |
+
if (!pendingRequest) {
|
13607 |
+
return;
|
13608 |
+
}
|
13609 |
+
|
13610 |
+
const xhr = pendingRequest.xhr;
|
13611 |
+
|
13612 |
+
if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
|
13613 |
+
pendingRequest.onHeadersReceived();
|
13614 |
+
delete pendingRequest.onHeadersReceived;
|
13615 |
+
}
|
13616 |
+
|
13617 |
+
if (xhr.readyState !== 4) {
|
13618 |
+
return;
|
13619 |
+
}
|
13620 |
+
|
13621 |
+
if (!(xhrId in this.pendingRequests)) {
|
13622 |
+
return;
|
13623 |
+
}
|
13624 |
+
|
13625 |
+
delete this.pendingRequests[xhrId];
|
13626 |
+
|
13627 |
+
if (xhr.status === 0 && this.isHttp) {
|
13628 |
+
if (pendingRequest.onError) {
|
13629 |
+
pendingRequest.onError(xhr.status);
|
13630 |
+
}
|
13631 |
+
|
13632 |
+
return;
|
13633 |
+
}
|
13634 |
+
|
13635 |
+
const xhrStatus = xhr.status || OK_RESPONSE;
|
13636 |
+
const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
|
13637 |
+
|
13638 |
+
if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
|
13639 |
+
if (pendingRequest.onError) {
|
13640 |
+
pendingRequest.onError(xhr.status);
|
13641 |
+
}
|
13642 |
+
|
13643 |
+
return;
|
13644 |
+
}
|
13645 |
+
|
13646 |
+
const chunk = getArrayBuffer(xhr);
|
13647 |
+
|
13648 |
+
if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
|
13649 |
+
const rangeHeader = xhr.getResponseHeader("Content-Range");
|
13650 |
+
const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
|
13651 |
+
pendingRequest.onDone({
|
13652 |
+
begin: parseInt(matches[1], 10),
|
13653 |
+
chunk
|
13654 |
+
});
|
13655 |
+
} else if (chunk) {
|
13656 |
+
pendingRequest.onDone({
|
13657 |
+
begin: 0,
|
13658 |
+
chunk
|
13659 |
+
});
|
13660 |
+
} else if (pendingRequest.onError) {
|
13661 |
+
pendingRequest.onError(xhr.status);
|
13662 |
+
}
|
13663 |
+
}
|
13664 |
+
|
13665 |
+
getRequestXhr(xhrId) {
|
13666 |
+
return this.pendingRequests[xhrId].xhr;
|
13667 |
+
}
|
13668 |
+
|
13669 |
+
isPendingRequest(xhrId) {
|
13670 |
+
return xhrId in this.pendingRequests;
|
13671 |
+
}
|
13672 |
+
|
13673 |
+
abortRequest(xhrId) {
|
13674 |
+
const xhr = this.pendingRequests[xhrId].xhr;
|
13675 |
+
delete this.pendingRequests[xhrId];
|
13676 |
+
xhr.abort();
|
13677 |
+
}
|
13678 |
+
|
13679 |
+
}
|
13680 |
+
|
13681 |
+
class PDFNetworkStream {
|
13682 |
+
constructor(source) {
|
13683 |
+
this._source = source;
|
13684 |
+
this._manager = new NetworkManager(source.url, {
|
13685 |
+
httpHeaders: source.httpHeaders,
|
13686 |
+
withCredentials: source.withCredentials
|
13687 |
+
});
|
13688 |
+
this._rangeChunkSize = source.rangeChunkSize;
|
13689 |
+
this._fullRequestReader = null;
|
13690 |
+
this._rangeRequestReaders = [];
|
13691 |
+
}
|
13692 |
+
|
13693 |
+
_onRangeRequestReaderClosed(reader) {
|
13694 |
+
const i = this._rangeRequestReaders.indexOf(reader);
|
13695 |
+
|
13696 |
+
if (i >= 0) {
|
13697 |
+
this._rangeRequestReaders.splice(i, 1);
|
13698 |
+
}
|
13699 |
+
}
|
13700 |
+
|
13701 |
+
getFullReader() {
|
13702 |
+
(0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once.");
|
13703 |
+
this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
|
13704 |
+
return this._fullRequestReader;
|
13705 |
+
}
|
13706 |
+
|
13707 |
+
getRangeReader(begin, end) {
|
13708 |
+
const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
|
13709 |
+
reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
|
13710 |
+
|
13711 |
+
this._rangeRequestReaders.push(reader);
|
13712 |
+
|
13713 |
+
return reader;
|
13714 |
+
}
|
13715 |
+
|
13716 |
+
cancelAllRequests(reason) {
|
13717 |
+
if (this._fullRequestReader) {
|
13718 |
+
this._fullRequestReader.cancel(reason);
|
13719 |
+
}
|
13720 |
+
|
13721 |
+
for (const reader of this._rangeRequestReaders.slice(0)) {
|
13722 |
+
reader.cancel(reason);
|
13723 |
+
}
|
13724 |
+
}
|
13725 |
+
|
13726 |
+
}
|
13727 |
+
|
13728 |
+
exports.PDFNetworkStream = PDFNetworkStream;
|
13729 |
+
|
13730 |
+
class PDFNetworkStreamFullRequestReader {
|
13731 |
+
constructor(manager, source) {
|
13732 |
+
this._manager = manager;
|
13733 |
+
const args = {
|
13734 |
+
onHeadersReceived: this._onHeadersReceived.bind(this),
|
13735 |
+
onDone: this._onDone.bind(this),
|
13736 |
+
onError: this._onError.bind(this),
|
13737 |
+
onProgress: this._onProgress.bind(this)
|
13738 |
+
};
|
13739 |
+
this._url = source.url;
|
13740 |
+
this._fullRequestId = manager.requestFull(args);
|
13741 |
+
this._headersReceivedCapability = (0, _util.createPromiseCapability)();
|
13742 |
+
this._disableRange = source.disableRange || false;
|
13743 |
+
this._contentLength = source.length;
|
13744 |
+
this._rangeChunkSize = source.rangeChunkSize;
|
13745 |
+
|
13746 |
+
if (!this._rangeChunkSize && !this._disableRange) {
|
13747 |
+
this._disableRange = true;
|
13748 |
+
}
|
13749 |
+
|
13750 |
+
this._isStreamingSupported = false;
|
13751 |
+
this._isRangeSupported = false;
|
13752 |
+
this._cachedChunks = [];
|
13753 |
+
this._requests = [];
|
13754 |
+
this._done = false;
|
13755 |
+
this._storedError = undefined;
|
13756 |
+
this._filename = null;
|
13757 |
+
this.onProgress = null;
|
13758 |
+
}
|
13759 |
+
|
13760 |
+
_onHeadersReceived() {
|
13761 |
+
const fullRequestXhrId = this._fullRequestId;
|
13762 |
+
|
13763 |
+
const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
|
13764 |
+
|
13765 |
+
const getResponseHeader = name => {
|
13766 |
+
return fullRequestXhr.getResponseHeader(name);
|
13767 |
+
};
|
13768 |
+
|
13769 |
+
const {
|
13770 |
+
allowRangeRequests,
|
13771 |
+
suggestedLength
|
13772 |
+
} = (0, _network_utils.validateRangeRequestCapabilities)({
|
13773 |
+
getResponseHeader,
|
13774 |
+
isHttp: this._manager.isHttp,
|
13775 |
+
rangeChunkSize: this._rangeChunkSize,
|
13776 |
+
disableRange: this._disableRange
|
13777 |
+
});
|
13778 |
+
|
13779 |
+
if (allowRangeRequests) {
|
13780 |
+
this._isRangeSupported = true;
|
13781 |
+
}
|
13782 |
+
|
13783 |
+
this._contentLength = suggestedLength || this._contentLength;
|
13784 |
+
this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
|
13785 |
+
|
13786 |
+
if (this._isRangeSupported) {
|
13787 |
+
this._manager.abortRequest(fullRequestXhrId);
|
13788 |
+
}
|
13789 |
+
|
13790 |
+
this._headersReceivedCapability.resolve();
|
13791 |
+
}
|
13792 |
+
|
13793 |
+
_onDone(args) {
|
13794 |
+
if (args) {
|
13795 |
+
if (this._requests.length > 0) {
|
13796 |
+
const requestCapability = this._requests.shift();
|
13797 |
+
|
13798 |
+
requestCapability.resolve({
|
13799 |
+
value: args.chunk,
|
13800 |
+
done: false
|
13801 |
+
});
|
13802 |
+
} else {
|
13803 |
+
this._cachedChunks.push(args.chunk);
|
13804 |
+
}
|
13805 |
+
}
|
13806 |
+
|
13807 |
+
this._done = true;
|
13808 |
+
|
13809 |
+
if (this._cachedChunks.length > 0) {
|
13810 |
+
return;
|
13811 |
+
}
|
13812 |
+
|
13813 |
+
for (const requestCapability of this._requests) {
|
13814 |
+
requestCapability.resolve({
|
13815 |
+
value: undefined,
|
13816 |
+
done: true
|
13817 |
+
});
|
13818 |
+
}
|
13819 |
+
|
13820 |
+
this._requests.length = 0;
|
13821 |
+
}
|
13822 |
+
|
13823 |
+
_onError(status) {
|
13824 |
+
const url = this._url;
|
13825 |
+
const exception = (0, _network_utils.createResponseStatusError)(status, url);
|
13826 |
+
this._storedError = exception;
|
13827 |
+
|
13828 |
+
this._headersReceivedCapability.reject(exception);
|
13829 |
+
|
13830 |
+
for (const requestCapability of this._requests) {
|
13831 |
+
requestCapability.reject(exception);
|
13832 |
+
}
|
13833 |
+
|
13834 |
+
this._requests.length = 0;
|
13835 |
+
this._cachedChunks.length = 0;
|
13836 |
+
}
|
13837 |
+
|
13838 |
+
_onProgress(data) {
|
13839 |
+
if (this.onProgress) {
|
13840 |
+
this.onProgress({
|
13841 |
+
loaded: data.loaded,
|
13842 |
+
total: data.lengthComputable ? data.total : this._contentLength
|
13843 |
+
});
|
13844 |
+
}
|
13845 |
+
}
|
13846 |
+
|
13847 |
+
get filename() {
|
13848 |
+
return this._filename;
|
13849 |
+
}
|
13850 |
+
|
13851 |
+
get isRangeSupported() {
|
13852 |
+
return this._isRangeSupported;
|
13853 |
+
}
|
13854 |
+
|
13855 |
+
get isStreamingSupported() {
|
13856 |
+
return this._isStreamingSupported;
|
13857 |
+
}
|
13858 |
+
|
13859 |
+
get contentLength() {
|
13860 |
+
return this._contentLength;
|
13861 |
+
}
|
13862 |
+
|
13863 |
+
get headersReady() {
|
13864 |
+
return this._headersReceivedCapability.promise;
|
13865 |
+
}
|
13866 |
+
|
13867 |
+
async read() {
|
13868 |
+
if (this._storedError) {
|
13869 |
+
throw this._storedError;
|
13870 |
+
}
|
13871 |
+
|
13872 |
+
if (this._cachedChunks.length > 0) {
|
13873 |
+
const chunk = this._cachedChunks.shift();
|
13874 |
+
|
13875 |
+
return {
|
13876 |
+
value: chunk,
|
13877 |
+
done: false
|
13878 |
+
};
|
13879 |
+
}
|
13880 |
+
|
13881 |
+
if (this._done) {
|
13882 |
+
return {
|
13883 |
+
value: undefined,
|
13884 |
+
done: true
|
13885 |
+
};
|
13886 |
+
}
|
13887 |
+
|
13888 |
+
const requestCapability = (0, _util.createPromiseCapability)();
|
13889 |
+
|
13890 |
+
this._requests.push(requestCapability);
|
13891 |
+
|
13892 |
+
return requestCapability.promise;
|
13893 |
+
}
|
13894 |
+
|
13895 |
+
cancel(reason) {
|
13896 |
+
this._done = true;
|
13897 |
+
|
13898 |
+
this._headersReceivedCapability.reject(reason);
|
13899 |
+
|
13900 |
+
for (const requestCapability of this._requests) {
|
13901 |
+
requestCapability.resolve({
|
13902 |
+
value: undefined,
|
13903 |
+
done: true
|
13904 |
+
});
|
13905 |
+
}
|
13906 |
+
|
13907 |
+
this._requests.length = 0;
|
13908 |
+
|
13909 |
+
if (this._manager.isPendingRequest(this._fullRequestId)) {
|
13910 |
+
this._manager.abortRequest(this._fullRequestId);
|
13911 |
+
}
|
13912 |
+
|
13913 |
+
this._fullRequestReader = null;
|
13914 |
+
}
|
13915 |
+
|
13916 |
+
}
|
13917 |
+
|
13918 |
+
class PDFNetworkStreamRangeRequestReader {
|
13919 |
+
constructor(manager, begin, end) {
|
13920 |
+
this._manager = manager;
|
13921 |
+
const args = {
|
13922 |
+
onDone: this._onDone.bind(this),
|
13923 |
+
onProgress: this._onProgress.bind(this)
|
13924 |
+
};
|
13925 |
+
this._requestId = manager.requestRange(begin, end, args);
|
13926 |
+
this._requests = [];
|
13927 |
+
this._queuedChunk = null;
|
13928 |
+
this._done = false;
|
13929 |
+
this.onProgress = null;
|
13930 |
+
this.onClosed = null;
|
13931 |
+
}
|
13932 |
+
|
13933 |
+
_close() {
|
13934 |
+
if (this.onClosed) {
|
13935 |
+
this.onClosed(this);
|
13936 |
+
}
|
13937 |
+
}
|
13938 |
+
|
13939 |
+
_onDone(data) {
|
13940 |
+
const chunk = data.chunk;
|
13941 |
+
|
13942 |
+
if (this._requests.length > 0) {
|
13943 |
+
const requestCapability = this._requests.shift();
|
13944 |
+
|
13945 |
+
requestCapability.resolve({
|
13946 |
+
value: chunk,
|
13947 |
+
done: false
|
13948 |
+
});
|
13949 |
+
} else {
|
13950 |
+
this._queuedChunk = chunk;
|
13951 |
+
}
|
13952 |
+
|
13953 |
+
this._done = true;
|
13954 |
+
|
13955 |
+
for (const requestCapability of this._requests) {
|
13956 |
+
requestCapability.resolve({
|
13957 |
+
value: undefined,
|
13958 |
+
done: true
|
13959 |
+
});
|
13960 |
+
}
|
13961 |
+
|
13962 |
+
this._requests.length = 0;
|
13963 |
+
|
13964 |
+
this._close();
|
13965 |
+
}
|
13966 |
+
|
13967 |
+
_onProgress(evt) {
|
13968 |
+
if (!this.isStreamingSupported && this.onProgress) {
|
13969 |
+
this.onProgress({
|
13970 |
+
loaded: evt.loaded
|
13971 |
+
});
|
13972 |
+
}
|
13973 |
+
}
|
13974 |
+
|
13975 |
+
get isStreamingSupported() {
|
13976 |
+
return false;
|
13977 |
+
}
|
13978 |
+
|
13979 |
+
async read() {
|
13980 |
+
if (this._queuedChunk !== null) {
|
13981 |
+
const chunk = this._queuedChunk;
|
13982 |
+
this._queuedChunk = null;
|
13983 |
+
return {
|
13984 |
+
value: chunk,
|
13985 |
+
done: false
|
13986 |
+
};
|
13987 |
+
}
|
13988 |
+
|
13989 |
+
if (this._done) {
|
13990 |
+
return {
|
13991 |
+
value: undefined,
|
13992 |
+
done: true
|
13993 |
+
};
|
13994 |
+
}
|
13995 |
+
|
13996 |
+
const requestCapability = (0, _util.createPromiseCapability)();
|
13997 |
+
|
13998 |
+
this._requests.push(requestCapability);
|
13999 |
+
|
14000 |
+
return requestCapability.promise;
|
14001 |
+
}
|
14002 |
+
|
14003 |
+
cancel(reason) {
|
14004 |
+
this._done = true;
|
14005 |
+
|
14006 |
+
for (const requestCapability of this._requests) {
|
14007 |
+
requestCapability.resolve({
|
14008 |
+
value: undefined,
|
14009 |
+
done: true
|
14010 |
+
});
|
14011 |
+
}
|
14012 |
+
|
14013 |
+
this._requests.length = 0;
|
14014 |
+
|
14015 |
+
if (this._manager.isPendingRequest(this._requestId)) {
|
14016 |
+
this._manager.abortRequest(this._requestId);
|
14017 |
+
}
|
14018 |
+
|
14019 |
+
this._close();
|
14020 |
+
}
|
14021 |
+
|
14022 |
+
}
|
14023 |
+
|
14024 |
+
/***/ }),
|
14025 |
+
/* 26 */
|
14026 |
+
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
|
14027 |
+
|
14028 |
+
|
14029 |
+
|
14030 |
+
Object.defineProperty(exports, "__esModule", ({
|
14031 |
+
value: true
|
14032 |
+
}));
|
14033 |
+
exports.PDFFetchStream = void 0;
|
14034 |
+
|
14035 |
+
var _util = __w_pdfjs_require__(2);
|
14036 |
+
|
14037 |
+
var _network_utils = __w_pdfjs_require__(23);
|
14038 |
+
|
14039 |
+
;
|
14040 |
+
|
14041 |
+
function createFetchOptions(headers, withCredentials, abortController) {
|
14042 |
+
return {
|
14043 |
+
method: "GET",
|
14044 |
+
headers,
|
14045 |
+
signal: abortController?.signal,
|
14046 |
+
mode: "cors",
|
14047 |
+
credentials: withCredentials ? "include" : "same-origin",
|
14048 |
+
redirect: "follow"
|
14049 |
+
};
|
14050 |
+
}
|
14051 |
+
|
14052 |
+
function createHeaders(httpHeaders) {
|
14053 |
+
const headers = new Headers();
|
14054 |
+
|
14055 |
+
for (const property in httpHeaders) {
|
14056 |
+
const value = httpHeaders[property];
|
14057 |
+
|
14058 |
+
if (typeof value === "undefined") {
|
14059 |
+
continue;
|
14060 |
+
}
|
14061 |
+
|
14062 |
+
headers.append(property, value);
|
14063 |
+
}
|
14064 |
+
|
14065 |
+
return headers;
|
14066 |
+
}
|
14067 |
+
|
14068 |
+
class PDFFetchStream {
|
14069 |
+
constructor(source) {
|
14070 |
+
this.source = source;
|
14071 |
+
this.isHttp = /^https?:/i.test(source.url);
|
14072 |
+
this.httpHeaders = this.isHttp && source.httpHeaders || {};
|
14073 |
+
this._fullRequestReader = null;
|
14074 |
+
this._rangeRequestReaders = [];
|
14075 |
+
}
|
14076 |
+
|
14077 |
+
get _progressiveDataLength() {
|
14078 |
+
return this._fullRequestReader?._loaded ?? 0;
|
14079 |
+
}
|
14080 |
+
|
14081 |
+
getFullReader() {
|
14082 |
+
(0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once.");
|
14083 |
+
this._fullRequestReader = new PDFFetchStreamReader(this);
|
14084 |
+
return this._fullRequestReader;
|
14085 |
+
}
|
14086 |
+
|
14087 |
+
getRangeReader(begin, end) {
|
14088 |
+
if (end <= this._progressiveDataLength) {
|
14089 |
+
return null;
|
14090 |
+
}
|
14091 |
+
|
14092 |
+
const reader = new PDFFetchStreamRangeReader(this, begin, end);
|
14093 |
+
|
14094 |
+
this._rangeRequestReaders.push(reader);
|
14095 |
+
|
14096 |
+
return reader;
|
14097 |
+
}
|
14098 |
+
|
14099 |
+
cancelAllRequests(reason) {
|
14100 |
+
if (this._fullRequestReader) {
|
14101 |
+
this._fullRequestReader.cancel(reason);
|
14102 |
+
}
|
14103 |
+
|
14104 |
+
for (const reader of this._rangeRequestReaders.slice(0)) {
|
14105 |
+
reader.cancel(reason);
|
14106 |
+
}
|
14107 |
+
}
|
14108 |
+
|
14109 |
+
}
|
14110 |
+
|
14111 |
+
exports.PDFFetchStream = PDFFetchStream;
|
14112 |
+
|
14113 |
+
class PDFFetchStreamReader {
|
14114 |
+
constructor(stream) {
|
14115 |
+
this._stream = stream;
|
14116 |
+
this._reader = null;
|
14117 |
+
this._loaded = 0;
|
14118 |
+
this._filename = null;
|
14119 |
+
const source = stream.source;
|
14120 |
+
this._withCredentials = source.withCredentials || false;
|
14121 |
+
this._contentLength = source.length;
|
14122 |
+
this._headersCapability = (0, _util.createPromiseCapability)();
|
14123 |
+
this._disableRange = source.disableRange || false;
|
14124 |
+
this._rangeChunkSize = source.rangeChunkSize;
|
14125 |
+
|
14126 |
+
if (!this._rangeChunkSize && !this._disableRange) {
|
14127 |
+
this._disableRange = true;
|
14128 |
+
}
|
14129 |
+
|
14130 |
+
if (typeof AbortController !== "undefined") {
|
14131 |
+
this._abortController = new AbortController();
|
14132 |
+
}
|
14133 |
+
|
14134 |
+
this._isStreamingSupported = !source.disableStream;
|
14135 |
+
this._isRangeSupported = !source.disableRange;
|
14136 |
+
this._headers = createHeaders(this._stream.httpHeaders);
|
14137 |
+
const url = source.url;
|
14138 |
+
fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {
|
14139 |
+
if (!(0, _network_utils.validateResponseStatus)(response.status)) {
|
14140 |
+
throw (0, _network_utils.createResponseStatusError)(response.status, url);
|
14141 |
+
}
|
14142 |
+
|
14143 |
+
this._reader = response.body.getReader();
|
14144 |
+
|
14145 |
+
this._headersCapability.resolve();
|
14146 |
+
|
14147 |
+
const getResponseHeader = name => {
|
14148 |
+
return response.headers.get(name);
|
14149 |
+
};
|
14150 |
+
|
14151 |
+
const {
|
14152 |
+
allowRangeRequests,
|
14153 |
+
suggestedLength
|
14154 |
+
} = (0, _network_utils.validateRangeRequestCapabilities)({
|
14155 |
+
getResponseHeader,
|
14156 |
+
isHttp: this._stream.isHttp,
|
14157 |
+
rangeChunkSize: this._rangeChunkSize,
|
14158 |
+
disableRange: this._disableRange
|
14159 |
+
});
|
14160 |
+
this._isRangeSupported = allowRangeRequests;
|
14161 |
+
this._contentLength = suggestedLength || this._contentLength;
|
14162 |
+
this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
|
14163 |
+
|
14164 |
+
if (!this._isStreamingSupported && this._isRangeSupported) {
|
14165 |
+
this.cancel(new _util.AbortException("Streaming is disabled."));
|
14166 |
+
}
|
14167 |
+
}).catch(this._headersCapability.reject);
|
14168 |
+
this.onProgress = null;
|
14169 |
+
}
|
14170 |
+
|
14171 |
+
get headersReady() {
|
14172 |
+
return this._headersCapability.promise;
|
14173 |
+
}
|
14174 |
+
|
14175 |
+
get filename() {
|
14176 |
+
return this._filename;
|
14177 |
+
}
|
14178 |
+
|
14179 |
+
get contentLength() {
|
14180 |
+
return this._contentLength;
|
14181 |
+
}
|
14182 |
+
|
14183 |
+
get isRangeSupported() {
|
14184 |
+
return this._isRangeSupported;
|
14185 |
+
}
|
14186 |
+
|
14187 |
+
get isStreamingSupported() {
|
14188 |
+
return this._isStreamingSupported;
|
14189 |
+
}
|
14190 |
+
|
14191 |
+
async read() {
|
14192 |
+
await this._headersCapability.promise;
|
14193 |
+
const {
|
14194 |
+
value,
|
14195 |
+
done
|
14196 |
+
} = await this._reader.read();
|
14197 |
+
|
14198 |
+
if (done) {
|
14199 |
+
return {
|
14200 |
+
value,
|
14201 |
+
done
|
14202 |
+
};
|
14203 |
+
}
|
14204 |
+
|
14205 |
+
this._loaded += value.byteLength;
|
14206 |
+
|
14207 |
+
if (this.onProgress) {
|
14208 |
+
this.onProgress({
|
14209 |
+
loaded: this._loaded,
|
14210 |
+
total: this._contentLength
|
14211 |
+
});
|
14212 |
+
}
|
14213 |
+
|
14214 |
+
const buffer = new Uint8Array(value).buffer;
|
14215 |
+
return {
|
14216 |
+
value: buffer,
|
14217 |
+
done: false
|
14218 |
+
};
|
14219 |
+
}
|
14220 |
+
|
14221 |
+
cancel(reason) {
|
14222 |
+
if (this._reader) {
|
14223 |
+
this._reader.cancel(reason);
|
14224 |
+
}
|
14225 |
+
|
14226 |
+
if (this._abortController) {
|
14227 |
+
this._abortController.abort();
|
14228 |
+
}
|
14229 |
+
}
|
14230 |
+
|
14231 |
+
}
|
14232 |
+
|
14233 |
+
class PDFFetchStreamRangeReader {
|
14234 |
+
constructor(stream, begin, end) {
|
14235 |
+
this._stream = stream;
|
14236 |
+
this._reader = null;
|
14237 |
+
this._loaded = 0;
|
14238 |
+
const source = stream.source;
|
14239 |
+
this._withCredentials = source.withCredentials || false;
|
14240 |
+
this._readCapability = (0, _util.createPromiseCapability)();
|
14241 |
+
this._isStreamingSupported = !source.disableStream;
|
14242 |
+
|
14243 |
+
if (typeof AbortController !== "undefined") {
|
14244 |
+
this._abortController = new AbortController();
|
14245 |
+
}
|
14246 |
+
|
14247 |
+
this._headers = createHeaders(this._stream.httpHeaders);
|
14248 |
+
|
14249 |
+
this._headers.append("Range", `bytes=${begin}-${end - 1}`);
|
14250 |
+
|
14251 |
+
const url = source.url;
|
14252 |
+
fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {
|
14253 |
+
if (!(0, _network_utils.validateResponseStatus)(response.status)) {
|
14254 |
+
throw (0, _network_utils.createResponseStatusError)(response.status, url);
|
14255 |
+
}
|
14256 |
+
|
14257 |
+
this._readCapability.resolve();
|
14258 |
+
|
14259 |
+
this._reader = response.body.getReader();
|
14260 |
+
}).catch(reason => {
|
14261 |
+
if (reason?.name === "AbortError") {
|
14262 |
+
return;
|
14263 |
+
}
|
14264 |
+
|
14265 |
+
throw reason;
|
14266 |
+
});
|
14267 |
+
this.onProgress = null;
|
14268 |
+
}
|
14269 |
+
|
14270 |
+
get isStreamingSupported() {
|
14271 |
+
return this._isStreamingSupported;
|
14272 |
+
}
|
14273 |
+
|
14274 |
+
async read() {
|
14275 |
+
await this._readCapability.promise;
|
14276 |
+
const {
|
14277 |
+
value,
|
14278 |
+
done
|
14279 |
+
} = await this._reader.read();
|
14280 |
+
|
14281 |
+
if (done) {
|
14282 |
+
return {
|
14283 |
+
value,
|
14284 |
+
done
|
14285 |
+
};
|
14286 |
+
}
|
14287 |
+
|
14288 |
+
this._loaded += value.byteLength;
|
14289 |
+
|
14290 |
+
if (this.onProgress) {
|
14291 |
+
this.onProgress({
|
14292 |
+
loaded: this._loaded
|
14293 |
+
});
|
14294 |
+
}
|
14295 |
+
|
14296 |
+
const buffer = new Uint8Array(value).buffer;
|
14297 |
+
return {
|
14298 |
+
value: buffer,
|
14299 |
+
done: false
|
14300 |
+
};
|
14301 |
+
}
|
14302 |
+
|
14303 |
+
cancel(reason) {
|
14304 |
+
if (this._reader) {
|
14305 |
+
this._reader.cancel(reason);
|
14306 |
+
}
|
14307 |
+
|
14308 |
+
if (this._abortController) {
|
14309 |
+
this._abortController.abort();
|
14310 |
+
}
|
14311 |
+
}
|
14312 |
+
|
14313 |
+
}
|
14314 |
+
|
14315 |
+
/***/ })
|
14316 |
+
/******/ ]);
|
14317 |
+
/************************************************************************/
|
14318 |
+
/******/ // The module cache
|
14319 |
+
/******/ var __webpack_module_cache__ = {};
|
14320 |
+
/******/
|
14321 |
+
/******/ // The require function
|
14322 |
+
/******/ function __w_pdfjs_require__(moduleId) {
|
14323 |
+
/******/ // Check if module is in cache
|
14324 |
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
14325 |
+
/******/ if (cachedModule !== undefined) {
|
14326 |
+
/******/ return cachedModule.exports;
|
14327 |
+
/******/ }
|
14328 |
+
/******/ // Create a new module (and put it into the cache)
|
14329 |
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
14330 |
+
/******/ // no module.id needed
|
14331 |
+
/******/ // no module.loaded needed
|
14332 |
+
/******/ exports: {}
|
14333 |
+
/******/ };
|
14334 |
+
/******/
|
14335 |
+
/******/ // Execute the module function
|
14336 |
+
/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
|
14337 |
+
/******/
|
14338 |
+
/******/ // Return the exports of the module
|
14339 |
+
/******/ return module.exports;
|
14340 |
+
/******/ }
|
14341 |
+
/******/
|
14342 |
+
/************************************************************************/
|
14343 |
+
var __webpack_exports__ = {};
|
14344 |
+
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
14345 |
+
(() => {
|
14346 |
+
var exports = __webpack_exports__;
|
14347 |
+
|
14348 |
+
|
14349 |
+
Object.defineProperty(exports, "__esModule", ({
|
14350 |
+
value: true
|
14351 |
+
}));
|
14352 |
+
Object.defineProperty(exports, "addLinkAttributes", ({
|
14353 |
+
enumerable: true,
|
14354 |
+
get: function () {
|
14355 |
+
return _display_utils.addLinkAttributes;
|
14356 |
+
}
|
14357 |
+
}));
|
14358 |
+
Object.defineProperty(exports, "getFilenameFromUrl", ({
|
14359 |
+
enumerable: true,
|
14360 |
+
get: function () {
|
14361 |
+
return _display_utils.getFilenameFromUrl;
|
14362 |
+
}
|
14363 |
+
}));
|
14364 |
+
Object.defineProperty(exports, "getPdfFilenameFromUrl", ({
|
14365 |
+
enumerable: true,
|
14366 |
+
get: function () {
|
14367 |
+
return _display_utils.getPdfFilenameFromUrl;
|
14368 |
+
}
|
14369 |
+
}));
|
14370 |
+
Object.defineProperty(exports, "isPdfFile", ({
|
14371 |
+
enumerable: true,
|
14372 |
+
get: function () {
|
14373 |
+
return _display_utils.isPdfFile;
|
14374 |
+
}
|
14375 |
+
}));
|
14376 |
+
Object.defineProperty(exports, "LinkTarget", ({
|
14377 |
+
enumerable: true,
|
14378 |
+
get: function () {
|
14379 |
+
return _display_utils.LinkTarget;
|
14380 |
+
}
|
14381 |
+
}));
|
14382 |
+
Object.defineProperty(exports, "loadScript", ({
|
14383 |
+
enumerable: true,
|
14384 |
+
get: function () {
|
14385 |
+
return _display_utils.loadScript;
|
14386 |
+
}
|
14387 |
+
}));
|
14388 |
+
Object.defineProperty(exports, "PDFDateString", ({
|
14389 |
+
enumerable: true,
|
14390 |
+
get: function () {
|
14391 |
+
return _display_utils.PDFDateString;
|
14392 |
+
}
|
14393 |
+
}));
|
14394 |
+
Object.defineProperty(exports, "RenderingCancelledException", ({
|
14395 |
+
enumerable: true,
|
14396 |
+
get: function () {
|
14397 |
+
return _display_utils.RenderingCancelledException;
|
14398 |
+
}
|
14399 |
+
}));
|
14400 |
+
Object.defineProperty(exports, "build", ({
|
14401 |
+
enumerable: true,
|
14402 |
+
get: function () {
|
14403 |
+
return _api.build;
|
14404 |
+
}
|
14405 |
+
}));
|
14406 |
+
Object.defineProperty(exports, "getDocument", ({
|
14407 |
+
enumerable: true,
|
14408 |
+
get: function () {
|
14409 |
+
return _api.getDocument;
|
14410 |
+
}
|
14411 |
+
}));
|
14412 |
+
Object.defineProperty(exports, "LoopbackPort", ({
|
14413 |
+
enumerable: true,
|
14414 |
+
get: function () {
|
14415 |
+
return _api.LoopbackPort;
|
14416 |
+
}
|
14417 |
+
}));
|
14418 |
+
Object.defineProperty(exports, "PDFDataRangeTransport", ({
|
14419 |
+
enumerable: true,
|
14420 |
+
get: function () {
|
14421 |
+
return _api.PDFDataRangeTransport;
|
14422 |
+
}
|
14423 |
+
}));
|
14424 |
+
Object.defineProperty(exports, "PDFWorker", ({
|
14425 |
+
enumerable: true,
|
14426 |
+
get: function () {
|
14427 |
+
return _api.PDFWorker;
|
14428 |
+
}
|
14429 |
+
}));
|
14430 |
+
Object.defineProperty(exports, "version", ({
|
14431 |
+
enumerable: true,
|
14432 |
+
get: function () {
|
14433 |
+
return _api.version;
|
14434 |
+
}
|
14435 |
+
}));
|
14436 |
+
Object.defineProperty(exports, "CMapCompressionType", ({
|
14437 |
+
enumerable: true,
|
14438 |
+
get: function () {
|
14439 |
+
return _util.CMapCompressionType;
|
14440 |
+
}
|
14441 |
+
}));
|
14442 |
+
Object.defineProperty(exports, "createObjectURL", ({
|
14443 |
+
enumerable: true,
|
14444 |
+
get: function () {
|
14445 |
+
return _util.createObjectURL;
|
14446 |
+
}
|
14447 |
+
}));
|
14448 |
+
Object.defineProperty(exports, "createPromiseCapability", ({
|
14449 |
+
enumerable: true,
|
14450 |
+
get: function () {
|
14451 |
+
return _util.createPromiseCapability;
|
14452 |
+
}
|
14453 |
+
}));
|
14454 |
+
Object.defineProperty(exports, "createValidAbsoluteUrl", ({
|
14455 |
+
enumerable: true,
|
14456 |
+
get: function () {
|
14457 |
+
return _util.createValidAbsoluteUrl;
|
14458 |
+
}
|
14459 |
+
}));
|
14460 |
+
Object.defineProperty(exports, "InvalidPDFException", ({
|
14461 |
+
enumerable: true,
|
14462 |
+
get: function () {
|
14463 |
+
return _util.InvalidPDFException;
|
14464 |
+
}
|
14465 |
+
}));
|
14466 |
+
Object.defineProperty(exports, "MissingPDFException", ({
|
14467 |
+
enumerable: true,
|
14468 |
+
get: function () {
|
14469 |
+
return _util.MissingPDFException;
|
14470 |
+
}
|
14471 |
+
}));
|
14472 |
+
Object.defineProperty(exports, "OPS", ({
|
14473 |
+
enumerable: true,
|
14474 |
+
get: function () {
|
14475 |
+
return _util.OPS;
|
14476 |
+
}
|
14477 |
+
}));
|
14478 |
+
Object.defineProperty(exports, "PasswordResponses", ({
|
14479 |
+
enumerable: true,
|
14480 |
+
get: function () {
|
14481 |
+
return _util.PasswordResponses;
|
14482 |
+
}
|
14483 |
+
}));
|
14484 |
+
Object.defineProperty(exports, "PermissionFlag", ({
|
14485 |
+
enumerable: true,
|
14486 |
+
get: function () {
|
14487 |
+
return _util.PermissionFlag;
|
14488 |
+
}
|
14489 |
+
}));
|
14490 |
+
Object.defineProperty(exports, "removeNullCharacters", ({
|
14491 |
+
enumerable: true,
|
14492 |
+
get: function () {
|
14493 |
+
return _util.removeNullCharacters;
|
14494 |
+
}
|
14495 |
+
}));
|
14496 |
+
Object.defineProperty(exports, "shadow", ({
|
14497 |
+
enumerable: true,
|
14498 |
+
get: function () {
|
14499 |
+
return _util.shadow;
|
14500 |
+
}
|
14501 |
+
}));
|
14502 |
+
Object.defineProperty(exports, "UnexpectedResponseException", ({
|
14503 |
+
enumerable: true,
|
14504 |
+
get: function () {
|
14505 |
+
return _util.UnexpectedResponseException;
|
14506 |
+
}
|
14507 |
+
}));
|
14508 |
+
Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({
|
14509 |
+
enumerable: true,
|
14510 |
+
get: function () {
|
14511 |
+
return _util.UNSUPPORTED_FEATURES;
|
14512 |
+
}
|
14513 |
+
}));
|
14514 |
+
Object.defineProperty(exports, "Util", ({
|
14515 |
+
enumerable: true,
|
14516 |
+
get: function () {
|
14517 |
+
return _util.Util;
|
14518 |
+
}
|
14519 |
+
}));
|
14520 |
+
Object.defineProperty(exports, "VerbosityLevel", ({
|
14521 |
+
enumerable: true,
|
14522 |
+
get: function () {
|
14523 |
+
return _util.VerbosityLevel;
|
14524 |
+
}
|
14525 |
+
}));
|
14526 |
+
Object.defineProperty(exports, "AnnotationLayer", ({
|
14527 |
+
enumerable: true,
|
14528 |
+
get: function () {
|
14529 |
+
return _annotation_layer.AnnotationLayer;
|
14530 |
+
}
|
14531 |
+
}));
|
14532 |
+
Object.defineProperty(exports, "apiCompatibilityParams", ({
|
14533 |
+
enumerable: true,
|
14534 |
+
get: function () {
|
14535 |
+
return _api_compatibility.apiCompatibilityParams;
|
14536 |
+
}
|
14537 |
+
}));
|
14538 |
+
Object.defineProperty(exports, "GlobalWorkerOptions", ({
|
14539 |
+
enumerable: true,
|
14540 |
+
get: function () {
|
14541 |
+
return _worker_options.GlobalWorkerOptions;
|
14542 |
+
}
|
14543 |
+
}));
|
14544 |
+
Object.defineProperty(exports, "renderTextLayer", ({
|
14545 |
+
enumerable: true,
|
14546 |
+
get: function () {
|
14547 |
+
return _text_layer.renderTextLayer;
|
14548 |
+
}
|
14549 |
+
}));
|
14550 |
+
Object.defineProperty(exports, "SVGGraphics", ({
|
14551 |
+
enumerable: true,
|
14552 |
+
get: function () {
|
14553 |
+
return _svg.SVGGraphics;
|
14554 |
+
}
|
14555 |
+
}));
|
14556 |
+
Object.defineProperty(exports, "XfaLayer", ({
|
14557 |
+
enumerable: true,
|
14558 |
+
get: function () {
|
14559 |
+
return _xfa_layer.XfaLayer;
|
14560 |
+
}
|
14561 |
+
}));
|
14562 |
+
|
14563 |
+
var _display_utils = __w_pdfjs_require__(1);
|
14564 |
+
|
14565 |
+
var _api = __w_pdfjs_require__(5);
|
14566 |
+
|
14567 |
+
var _util = __w_pdfjs_require__(2);
|
14568 |
+
|
14569 |
+
var _annotation_layer = __w_pdfjs_require__(17);
|
14570 |
+
|
14571 |
+
var _api_compatibility = __w_pdfjs_require__(9);
|
14572 |
+
|
14573 |
+
var _worker_options = __w_pdfjs_require__(12);
|
14574 |
+
|
14575 |
+
var _text_layer = __w_pdfjs_require__(19);
|
14576 |
+
|
14577 |
+
var _svg = __w_pdfjs_require__(20);
|
14578 |
+
|
14579 |
+
var _xfa_layer = __w_pdfjs_require__(21);
|
14580 |
+
|
14581 |
+
const pdfjsVersion = '2.9.359';
|
14582 |
+
const pdfjsBuild = 'e667c8cbc';
|
14583 |
+
{
|
14584 |
+
const {
|
14585 |
+
isNodeJS
|
14586 |
+
} = __w_pdfjs_require__(4);
|
14587 |
+
|
14588 |
+
if (isNodeJS) {
|
14589 |
+
const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream;
|
14590 |
+
|
14591 |
+
(0, _api.setPDFNetworkStreamFactory)(params => {
|
14592 |
+
return new PDFNodeStream(params);
|
14593 |
+
});
|
14594 |
+
} else {
|
14595 |
+
const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream;
|
14596 |
+
|
14597 |
+
let PDFFetchStream;
|
14598 |
+
|
14599 |
+
if ((0, _display_utils.isFetchSupported)()) {
|
14600 |
+
PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream;
|
14601 |
+
}
|
14602 |
+
|
14603 |
+
(0, _api.setPDFNetworkStreamFactory)(params => {
|
14604 |
+
if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {
|
14605 |
+
return new PDFFetchStream(params);
|
14606 |
+
}
|
14607 |
+
|
14608 |
+
return new PDFNetworkStream(params);
|
14609 |
+
});
|
14610 |
+
}
|
14611 |
+
}
|
14612 |
+
})();
|
14613 |
+
|
14614 |
+
/******/ return __webpack_exports__;
|
14615 |
+
/******/ })()
|
14616 |
+
;
|
14617 |
+
});
|
14618 |
+
//# sourceMappingURL=pdf.js.map
|
assets/js/pdf_js/pdf.sandbox.js
ADDED
@@ -0,0 +1,309 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/**
|
2 |
+
* @licstart The following is the entire license notice for the
|
3 |
+
* Javascript code in this page
|
4 |
+
*
|
5 |
+
* Copyright 2021 Mozilla Foundation
|
6 |
+
*
|
7 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8 |
+
* you may not use this file except in compliance with the License.
|
9 |
+
* You may obtain a copy of the License at
|
10 |
+
*
|
11 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12 |
+
*
|
13 |
+
* Unless required by applicable law or agreed to in writing, software
|
14 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 |
+
* See the License for the specific language governing permissions and
|
17 |
+
* limitations under the License.
|
18 |
+
*
|
19 |
+
* @licend The above is the entire license notice for the
|
20 |
+
* Javascript code in this page
|
21 |
+
*/
|
22 |
+
|
23 |
+
(function webpackUniversalModuleDefinition(root, factory) {
|
24 |
+
if(typeof exports === 'object' && typeof module === 'object')
|
25 |
+
module.exports = factory();
|
26 |
+
else if(typeof define === 'function' && define.amd)
|
27 |
+
define("pdfjs-dist/build/pdf.sandbox", [], factory);
|
28 |
+
else if(typeof exports === 'object')
|
29 |
+
exports["pdfjs-dist/build/pdf.sandbox"] = factory();
|
30 |
+
else
|
31 |
+
root["pdfjs-dist/build/pdf.sandbox"] = root.pdfjsSandbox = factory();
|
32 |
+
})(this, function() {
|
33 |
+
return /******/ (() => { // webpackBootstrap
|
34 |
+
/******/ "use strict";
|
35 |
+
/******/ var __webpack_modules__ = ([
|
36 |
+
/* 0 */,
|
37 |
+
/* 1 */
|
38 |
+
/***/ ((__unused_webpack_module, exports) => {
|
39 |
+
|
40 |
+
Object.defineProperty(exports, "__esModule", ({value:true}));exports.default=void 0;var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h,n;b.ready=new Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var t="";"undefined"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;"object"!==typeof WebAssembly&&w("no native wasm support detected");var x,z=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown function "+(a+", make sure it is exported"));return c;}function B(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var U=(l.length<<2)+1;p=C(U);D(l,E,p,U);}return p;},array:function(l){var p=C(l.length);F.set(l,p);return p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var y=f[d[m]];y?(0===a&&(a=G()),k[m]=y(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function K(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.decode(a.subarray(c,d));for(e="";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else e+=String.fromCharCode(f);}return e;}function H(a){return a?K(E,a,void 0):"";}function D(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function L(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return c;}function ba(a){var c=L(a)+1,d=M(c);d&&D(a,F,d,c);return d;}var ca,F,E,N;function da(){var a=x.buffer;ca=a;b.HEAP8=F=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=E=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a);}var O,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};function w(a){if(b.onAbort)b.onAbort(a);u(a);z=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");n(a);throw a;}function S(a){return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var T="data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBn9/f39/fwF/YAR/f39/AX5gA39+fgF/YAF/AX5gBX9+fn5+AGABfgF+YAJ8fAF8YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAV/fn5/fwF+YAAAYAV/f39/fwBgA39+fgBgBH9+fn8AYAd/f39/f39/AX9gBn9+f35+fwF/YAV/fn5+fwF/YAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AEf35+fwF/YAJ+fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn8BfmAHf39/f39/fwBgA39/fgBgBH9/fn8AYAR/fn9/AGAIf39/f39/f38Bf2AEf39/fgF/YAR/fn9+AX9gBH9+fn4Bf2AGf3x/f39/AX9gA35/fwF/YAR/fn5+AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAZ/f39/f38AYAN/f3wAYAV/fn9/fwBgBH9+f34AYAJ/fABgB3x/f39/f38AYAp/f39/f39/f39/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAN+fn4Bf2AEfn5+fgF/YAJ8fwF/YAJ8fAF/YAABfmABfAF+YAV/f39/fwF+YAd/f39/f39+AX5gBX9/f39+AX5gBH9/f34BfmADf39+AX5gBH9/fn8BfmAFf39+fn4BfmAFf35/fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfwF8YAF+AXxgAn9/AXxgAn5+AXwCPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIB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QQBHDwsgAacPCyABpykCBCEEIAAgARAKIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCiACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEkiBb1C////////////AINCgYCAgICAgPj/AFQgBUQAAAAAAAAAAGJxDwsgACABEApBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxgELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEH91gAgAhATQX8MAQsgABAPCyEAIAJBEGokACAACyEAIAAoAgRBf0wEQCAAIAFBAXRqLwEQDwsgACABai0AEAsoAQF/IwBBEGsiAiQAIAIgATsBDiAAIAJBDmpBAhCHARogAkEQaiQACwsAIAAgAUEBEOMFC5oLAgV/D34jAEHgAGsiBSQAIAJCIIYgAUIgiIQhDyAEQi+GIANCEYiEIQwgBEL///////8/gyINQg+GIANCMYiEIRAgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCERIA1CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUEBa0H9/wFNBEBBACAHQQFrQf7/AUkNARoLIAFQIAJC////////////AIMiDkKAgICAgIDA//8AVCAOQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAOQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDoQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDoRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIA5C////////P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNYIgtCIIYgBSkDUCIBQiCIhCEPIAtCIIghEUEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDSADIA0gDVAiCBt5IAhBBnStfKciCEEPaxByIAUpA0giAkIPhiAFKQNAIgNCMYiEIRAgAkIvhiADQhGIhCEMIAJCEYghEiAGIAhrQRBqCyEGIAxC/////w+DIgIgAUL/////D4MiAX4iEyADQg+GQoCA/v8PgyIDIA9C/////w+DIg5+fCIEQiCGIg0gASADfnwiDCANVK0gAiAOfiIVIAMgC0L/////D4MiC358IhQgEEL/////D4MiDSABfnwiECAEIBNUrUIghiAEQiCIhHwiEyACIAt+IhYgAyARQoCABIQiD358IgMgDSAOfnwiESABIBJC/////weDQoCAgIAIhCIBfnwiEkIghnwiF3whBCAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCACIA9+fCICIBhUrSACIAIgASAOfnwiAlatfCACIAIgFCAVVK0gECAUVK18fCICVq18IAEgD358IAEgC34iCyANIA9+fCIBIAtUrUIghiABQiCIhHwgAiABQiCGfCIBIAJUrXwgASABIBEgElatIAMgFlStIAMgEVatfHxCIIYgEkIgiIR8IgFWrXwgASAQIBNWrSATIBdWrXx8IgIgAVStfCIBQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAxCP4ghAyABQgGGIAJCP4iEIQEgAkIBhiAEQj+IhCECIAxCAYYhDCADIARCAYaEIQQLIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAwgBCAGQf8AaiIGEHIgBUEgaiACIAEgBhByIAVBEGogDCAEIAcQ1gIgBSACIAEgBxDWAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEMIAUpAyggBSkDGIQhBCAFKQMAIQIgBSkDCAwBCyABQv///////z+DIAatQjCGhAsgCoQhCiAMUCAEQn9VIARCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyAMIARCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQC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AC0AAEEgcUUEQCABIAIgABCnBBoLC64CAAJAAkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUoNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgscAQF/IAAgARA6BH9BAAUgAEGPxABBABAUQX8LCxkBAX8gASACED8iA0UEQCAAIAIQnAMLIAMLJgEBfyMAQRBrIgIkACACQQA2AgwgAEEBIAFBABD9ASACQRBqJAALGQAgACgCECABEJwCIgFFBEAgABDGAQsgAQsPACAAKAJAQYACaiABEA4LbwIBfgF/IAAhBAJAAkAgARAQDQAgACABQTsgAUEAEBIiAxALBEAgAw8LIAMQIA0BIAAgAxAKIAAgARCNAyIEDQBCgICAgOAADwsgBCgCKCACQQN0aikDABANIQMLIAAgAyACEFAhASAAIAMQCiABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFQsgA0GHgAEQygILEAAgACAANgIEIAAgADYCAAtjAAJAAkAgAUEASA0AIAAoAqwCIAFMDQAgACgCpAIgAUEUbGoiACAAKAIAIAJqIgA2AgAgAEF/TA0BIAAPC0GeigFBoQ1ByKgBQcOKARAAAAtB0IoBQaENQcuoAUHDigEQAAALDAAgAEG80AFBABAUCw0AIAAgASABEEMQ/gELUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLbQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayICQYACIAJB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2RcQdiEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD6AUUNAQsgA0EANgIMIABBBCACQQAQ/QFBfyEECyADQRBqJAAgBAvMAQECfwJAAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQRQ0AIAAgA61CgICAgHCEEA0iASACIAQoAhAREwAhAiAAIAEQCiACDwsgA61CgICAgHCEEA0hASAAQQAgAyACEFMhBCAAIAEQCiAEDQIgAy8BBkEVa0H//wNxQQhNBEAgACACEKUDIgQNBAsgAygCECgCLCIDDQALC0EAIQQLIAQPCyAEQR91CxoAIAAgASACQQBOBH4gAq0FIAK4EBULEJ4BCwsAIABB/////wdxC80JAgR/BH4jAEHwAGsiBSQAIARC////////////AIMhCgJAAkAgAUIBfSILQn9RIAJC////////////AIMiCSABIAtWrXxCAX0iC0L///////+///8AViALQv///////7///wBRG0UEQCADQgF9IgtCf1IgCiADIAtWrXxCAX0iC0L///////+///8AVCALQv///////7///wBRGw0BCyABUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAJQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBhshBEIAIAEgBhshAwwCCyADIApCgICAgICAwP//AIWEUA0BIAEgCYRQBEAgAyAKhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAKhFBFDQAgASEDIAIhBAwBCyADIAEgASADVCAJIApUIAkgClEbIgcbIQogBCACIAcbIgtC////////P4MhCSACIAQgBxsiAkIwiKdB//8BcSEIIAtCMIinQf//AXEiBkUEQCAFQeAAaiAKIAkgCiAJIAlQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNoIQkgBSkDYCEKQRAgBmshBgsg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LQACENwBDQBBWQwEC0GDfwsMAgtBCgwBCyADCyEAIARBEGokACAAC58BAQJ/AkACQCACQv////8HWARAIAAgASACpxCTARB3IgRBAUgNAUF/IAQgACABIAIQngEiAhALGyEEDAILIAAgAhCdAyIFRQRAQX8hBAwBCwJAIAAgASAFEHciBEEBSARAQoCAgIAwIQIMAQtBfyAEIAAgASAFIAFBABASIgIQCxshBAsgACAFEBEMAQtCgICAgDAhAgsgAyACNwMAIAQLFgAgAEKAgICAcFoEQCAApyABNgIgCwsNACAAIAEgARBDEJ0CC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECsiARALBEAgABCIA0F/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAoAgAgARAKIAIPCyAAIAGnIgBBACAAKAIEQf////8HcRBXCwtqAQF/IAAoAhQEQCAAKAIAIAEQCkF/DwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABED4iARALRQ0AIAAQiANBfw8LIAAgAaciAkEAIAIoAgRB/////wdxEFchAiAAKAIAIAEQCiACCxYBAX8gAEIgiKciAUUgAUELakERS3ILSgECfyACQv////8HWARAIAAgASACIANBgIABEOABDwsgACACEJ0DIgRFBEAgACADEApBfw8LIAAgASAEIAMQSCEFIAAgBBARIAULggoBEn8jAEEwayIHJAAgAUEANgIAIAJBADYCACAHQQA2AiwgB0EANgIoIARBMHEhDiAEQRBxIREgAygCECIJECchBQJAAkACQAJ/A0AgCSgCICAISgRAAkAgBSgCBCINRQ0AQQAgESAFKAIAQYCAgIABcRsgBCAAIA0QpAMiC3ZBAXFFcg0AAkAgDkUNACAFKAIAQYCAgIB8cUGAgICAeEcNACADKAIUIAhBA3RqKAIAKAIQKQMAEIMBRQ0AIAAgBSgCBBDhAUF/DAQLIAAgB0EkaiANELIBBEAgDEEBaiEMDAELIAtFBEAgD0EBaiEPDAELIApBAWohCgsgBUEIaiEFIAhBAWohCAwBCwtBACEFAkAgAy0ABSIGQQRxRQ0AIAZBCHEEQCAEQQFxRQ0BIAMoAiggDGohDAwBCyADLwEGIgZBBUYEQCAEQQFx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HgAgACABIAJBAE4EfiACrQUgArgQFQsgAyAEEMoCC6wCAQR/IwBBEGsiAiQAAkACQAJAAkACQANAAkACQAJAIAEQVEEIag4QBAIFBQUFBQEIAAAGBQUICAULIAFC/////w+DIQEMBwsgACABQQEQwAEiARALRQ0BDAULCyAAIAJBCGogARCQAiEDIAAgARAKIAMEQCACIAM2AgwgAiADIAMQhgMiBGoiBTYCDEIAIQECQCAEIAIoAghGDQAgACAFIAJBDGpBAEEEEMICIgEQCw0AIAIgAigCDBCGAyACKAIMaiIENgIMIAIoAgggBCADa0YNACAAIAEQCkKAgICAwH4hAQsgACADEDYLIANFDQMMBAsgACABEAogAEGIwwBBABAUDAILIAAgARAKC0KAgICAwH4hAQwBC0KAgICA4AAhAQsgAkEQaiQAIAELzQIBA38CQCABQoCAgIBwVCACQv////8PVnINACACpyIEIAGnIgMoAihPDQACQAJAAkACQAJAAkACQAJAAkACQCADLwEGIgVBCGsOFgEKCgoKCgoKCgoKCgoDAgMEBQYHCAkACyAFQQJHDQkLIAMoAiQgBEEDdGopAwAQDQ8LIAMoAiQgBGowAABC/////w+DDwsgAygCJCAEajEAAA8LIAMoAiQgBEEBdGoyAQBC/////w+DDwsgAygCJCAEQQF0ajMBAA8LIAMoAiQgBEECdGo1AgAPCyADKAIkIARBAnRqKAIAIgBBAE4EQCAArQ8LIAC4EBUPCyADKAIkIARBAnRqKgIAuxAVDwsgAygCJCAEQQN0aisDABAVDwsgACACEDkhAyAAIAIQCiADRQRAQoCAgIDgAA8LIAAgASADIAFBABASIQEgACADEBEgAQuzAQEDfyABQoCAgIBwVARAQQAPCyABpyICLwEGQSlGBEAjAEEQayIEJAACQAJAIAAgBEEIaiABQeEAEIQBIgJFDQAgBCkDCCIBEBAEQCAAIAIpAwAQnwEhAwwCCyAAIAEgAikDCEEBIAIQNSIBEAsNACAAIAEQLCEDIAAgAikDABCfASICQQBIDQAgAiADRg0BIABBgNgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAItAAVBAXELHgAgAEKAgICAcINCgICAgJB/UQRAIACnIAEQngQLCxYAIAAgACgCKCABQQN0aikDACAB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LCACTQ0BAn8CQCAAKAI4IAJBAnRqKAIAIgApAgRCgICAgICAgIBAg0KAgICAgICAgMAAUg0AIANBDGogABDoBUUNAEEBIAMoAgwiAEF/Rw0BGgtBACEAQQALIQIgASAANgIACyADQRBqJAAgAg8LQcovQaENQb8YQcI/EAAAC0UAIAAoAhAgASACEOYBIgEgAkVyRQRAIAAQxgEgAQ8LIAMEQCADQQAgACgCECABEKMEIgAgAmsiAiAAIAJJGzYCAAsgAQtpAQN+IAAgAkIgiCIDIAFCIIgiBH4gAkL/////D4MiAiABQv////8PgyIBfiIFQiCIIAIgBH58IgJCIIh8IAEgA34gAkL/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwAL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahByIAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAsqAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAkHuAkEAEK0EGiADQRBqJAALDQAgAEEAIAFBABChBAsbACAAIAFB/wFxEA4gACgCBCEBIAAgAhAcIAELlwwBB38jAEEgayICJAACQAJAAkACQAJAAn8gACgCECIDQYN/RwRAQQAgA0FXRw0BGiAAKAJAIgMtAGxBAXFFBEAgAEHjhgFBABATDAMLIAMoAmRFBEAgAEH+hgFBABATDAMLQX8hBSAAEA8NBQJ/AkACQAJAIAAoAhAiA0Epaw4EAgEBAgALIANB3QBGIANBOmtBAklyIANB/QBGcg0BCyAAKAIwDQAgA0EqRgRAIAAQDw0IQQEhBAsgACABELkBDQcgBEUMAQsgAEEGEAxBAQshAyAAKAJALQBsIQEgA0UEQCAAEDQhBSAAEDQhAyAAQf4AQf0AIAFBA0YbEAwgAEEOEAwgAEEGEAwgAEEGEAwgACAFEB0gAEGFARAMIAFBA0ciBkUEQCAAQYsBEAwLIABBgQEQDCAAQcIAEAwgAEHpABAaIABB6gBBfxAbIQQgACADEB0gACAGBH9BiQEFIABBwQAQDCAAQcAAEBogAEGLARAMQYoBCxAMIABBERAMIABB6gBBfxAbIQYgAEEOEAwgAEHrACAFEBsaIAAgBhAdIABBARAMIABBAhA4IABBqwEQDCAAQeoAQX8QGyEFIAFBA0ciBkUEQCAAQYsBEAwLIABBhgEQDCAAQQAQayAAQeoAQX8QGyEHIAZFBEAgAEGLARAMCyAAQYEBEAwgAEHCABAMIABB6QAQGiAAQekAIAMQGxogAEHBABAMIABBwAAQGiAAIAcQHSAAQQ8QDCAAQQ8QDCAAQQ8QDCAAQQEQ8wIgACAFEB0gAEGGARAMIABBARBrIABB6gBBfxAbIQUgAUEDRyIBRQRAIABBiwEQDAsgAEGBARAMIABBwgAQDCAAQekAEBogAEHpACADEBsaIABB6wAgBBAbGiAAIAUQHSAAQYYBEAwgAEECEGsgAEHqAEF/EBshAyABRQRAIABBiwEQDAsgACADEB0gAEEwEAxBACEFIABBABAaIABBBBBrIAAgBBAdIABBwQAQDCAAQcAAEBogAEEPEAwgAEEPEAwgAEEPEAwMBgsgAUEDRgRAIABBiwEQDAsgAEGIARAMIABB6QBBfxAbIQEgAEEBEPMCDAQLIAAoAiALIQNBfyEFQX8hBAJAAn8CQCAAQaJ/IAFBBHIiByIGEMwDDQAgACgCEEGmf0YEQCAGQXtxIQggABA0IQYDQCAAEA8NAiAAQREQDCAAQbABEAwgAEHpACAGEBsaIABBDhAMIABBCCAIELACDQIgACgCEEGmf0YNAAsgACAGEB0LQQAMAQtBfwsNACAAKAIQQT9GBEAgABAPDQEgAEHpAEF/EBshBiAAEGANASAAQToQLg0BIABB6wBBfxAbIQggACAGEB0gACAHQQFxELkBDQEgACAIEB0LQQAhBAsgBA0DIAAoAhAiBEH7AGohBSAEQT1HQQAgBUELSxtFBEAgABAPDQEgACACQRxqIAJBGGogAkEUaiACQRBqQQAgBEE9RyAEELoBQQBIDQEgACABELkBBEAgACgCACACKAIUEBEMAgsCQCAEQT1GBEAgAigCHCIEQTxHIAMgAigCFCIBR3INASAAIAMQqQFBPCEEIAMhAQwBCyAAIAVBmocBai0AABAMIAIoAhQhASACKAIcIQQLQQAhBSAAIAQgAigCGCABIAIoAhBBAkEAENIBDAQLQQAhBSAEQe8AakECSw0DIAAQDw0AIAAgAkEcaiACQRhqIAJBFGogAkEQaiACQQxqQQEgBBC6AUEASA0AIABBERAMIARBk39GBEAgAEGwARAMCyAAQeoAQekAIARBkn9GG0F/EBshBSAAQQ4QDCAAIAEQuQFFDQEgACgCACACKAIUEBELQX8hBQwCCyACKAIcIgFBPEcgAigCFCIEIANHckUEQCAAIAMQqQELIAIoAgxBAWsiA0EDTw0CIAAgA0EVakH/AXEQDCAAIAEgAigCGCAEIAIoAhBBAUEAENIBIABB6wBBfxAbIQEgACAFEB0gAigCDCEFA0AgBQRAIABBDxAMIAIgAigCDEEBayIFNgIMDAELCwsgACABEB1BACEFCyACQSBqJAAgBQ8LEAEAC6wFAQZ/QQIhDAJAAkACQAJAAkAgACgCQCIJEKQBIghBxwBrDgQEAgIBAAsgCEHBAEYNAiAIQbwBRwRAIAhBtgFHDQIgCSgCgAIgCSgCmAJqIgsoAAEhCiALLwAFIQsgCkEIRg0CIApBOkcEQCAKQfEARg0DIApBzQBHDQULIAktAG5BAXFFDQQgAEGZiQFBABATQX8PC0EBIQwgCSgCgAIgCSgCmAJqIgcoAAEhCiAHLwAFIQsMAwtBAyEMDAILIAdBu39GBEAgAEG3iQFBABATQX8PCyAHQX5xQZR/RgRAIABB2IkBQQAQE0F/DwsgB0FfcUHbAEYEQCAAQcT+AEEAEBNBfw8LIABB/IkBQQAQE0F/DwtBASEMIAkoAoACIAkoApgCaigAASEKCyAJKAKYAiENQX8hByAJQX82ApgCIAkgDTYChAICQAJAIAYEQAJAAkACQAJAIAhBxwBrDgQBAwMCAAsCQCAIQcEARwRAIAhBvAFGDQEgCEG2AUcNBCAAEDQhByAAQbkBEAwgACAKEBogACAHEDggACALEBYgCSAHQQEQbxpBPCEIIABBPBAMDAcLIABBwgAQDCAAIAoQGkHBACEIDAYLIABBvQEQDCAAIAoQGiAAIAsQFkG8ASEIDAULIABB8QAQDCAAQRMQDEHHACEIDAMLIABB8AAQDCAAQRQQDEHKACEIDAILEAEACwJAAkACQCAIQccAaw4EAQQEAgALIAhBtgFHDQMgABA0IQcgAEG5ARAMIAAgChAaIAAgBxA4IAAgCxAWIAkgB0EBEG8aQTwhCAwDCyAAQfEAEAxBxwAhCAwCCyAAQfAAEAxBygAhCAwBCyAAIAgQDAsgASAINgIAIAIgCzYCACADIAo2AgAgBCAHNgIAIAUEQCAFIAw2AgALQQALWgEDfyMAQRBrIgEkAAJAIAAoAhAiA0Gqf0YNACADQTtHBEAgA0H9AEYNASAAKAIwDQEgAUE7NgIAIABB/dYAIAEQE0F/IQIMAQsgABAPIQILIAFBEGokACACCxkAIAEgAkEPcToABCABQQhqIABB0ABqEEwLvAEBBX8jAEEgayIEJAACfgJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQPiICEAsNAQsgACAEQQhqIAEQQyIGIAMQQyIHaiACpyIFKAIEIghB/////wdxaiAIQR92EKoDDQAgBEEIaiABIAYQnQIaIARBCGogBUEAIAUoAgRB/////wdxEFcaIARBCGogAyAHEJ0CGiAAIAIQCiAEQQhqEDcMAQsgACACEApCgICAgOAACyECIARBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1MBAX8gAUKAgICAcFoEfyABpy8BBiICQSlGBEACf0EAIAFBKRA/IgJFDQAaIAItABEEQCAAEMgCQX8MAQsgACACKQMAEL8BCw8LIAJBAkYFQQALC8kCAgF+An8jAEEQayIFJAACQCABQoCAgIBwVARAIAEhAwwBCyACQW9xIQQCQAJAAkAgAkEQcQ0AIAAgAUHCASABQQAQEiIDEAsNASADEBANACADECYNACAFIABBxgBBFiAEQQFGG0HIACAEGxAxNwMIIAAgAyABQQEgBUEIahA1IQMgACAFKQMIEAogAxALDQEgACABEAogA0KAgICAcFQNAyAAIAMQCiAAQajDAEEAEBQMAgsgBEEARyEEQQAhAgNAIAJBAkcEQCAAIAFBN0E5IAIgBEYbIAFBABASIgMQCw0CAkAgACADEDpFDQAgACADIAFBAEEAEDUiAxALDQMgA0L/////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IAJqLQAAIAFGDQIgAkEBaiECDAALAAtBfyECCyACC44BAQF/IwBBEGsiAyQAIAMgAjcDCAJAIAAgAUGGASABQQAQEiICEAsNACAAIAIQOgRAIAAgAiABQQEgA0EIahA1IgIQCw0BIAIQIA0BIAIQJg0BIAAgAhAKIABBj9MAQQAQFEKAgICA4AAhAgwBCyAAIAIQCiAAIAFBASADQQhqEJEFIQILIANBEGokACACC5oBAQN/IAEoAgAhAwJAIAAoAgQiAkF/TARAIAAgA0EBdGovARAiBEGA+ANxQYCwA0cgAkH/////B3EgA0EBaiICTHINASAAIAJBAXRqLwEQIgBBgPgDcUGAuANHDQEgBEEKdEGA+D9xIABB/wdxckGAgARqIQQgA0ECaiECDAELIANBAWohAiAAIANqLQAQIQQLIAEgAjYCACAECygAIAAgAkEwIAJBABASIgIQCwRAIAFBADYCAEF/DwsgACABIAIQ6QMLMwEBfwJAIAFCgICAgHBUDQAgAaciAy8BBkESRw0AIANBIGoPCyACBEAgAEESEJwDC0EACzkAIABB/wBNBEAgAEEDdkH8////AXFB4N8BaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELgEQQBHcgtdAQF/QX8hBAJAIAAgARApIgEQCw0AIAAgAacgAhCUBCEEIAAgARAKIAQNACADQYCAAXFFBEBBACEEIANBgIACcUUNASAAEPoBRQ0BCyAAQfAYQQAQFEF/IQQLIAQL2AICA38CfCABEFQhBiACEFQhBAJAAkACfAJAAkACQAJAAkACQAJAAkAgBkEIag4QAgEKCgoKCgMEAAkJCgoKBQoLIARBAUcNCSABpyACp0YPCyAEQXlHDQggAacgAqcQlQJFIQUMCAsgAacgAqdGIARBeEZxIQUMBwsgBEF/Rw0GIAGnIAKnRiEFDAYLIAGntyEHIARBB0YNASAEDQUgAqe3DAMLIAEQSSEHIARFDQEgBEEHRw0ECyACEEkMAQsgAqe3CyEIAkAgAwRAIAe9Qv///////////wCDIgFCgICAgICAgPj/AFhBACAIvUL///////////8AgyICQoGAgICAgID4/wBUG0UEQCABQoGAgICAgID4/wBUIAJCgICAgICAgPj/AFZzDwsgA0ECRw0BCyAHIAhhDwsgB70gCL1RDwsg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IQ5BASEJIAUCfyAFIAhBAnYgAmwiAWoiByAFIAFBAXRqIgYgBCADEQEAIQAgBiAFIAFBA2xqIgogBCADEQEAIQECQCAAQX9MBEAgAUEASA0BIAogByAHIAogBCADEQEAQQBIGwwCCyABQQBKDQAgByAKIAcgCiAEIAMRAQBBAEgbIQYLIAYLIAIgDREGACAFIAIgCGxqIgohASAKIQYgAiAFaiIPIQBBASERA0ACQAJAIAAgAU8NACAFIAAgBCADEQEAIgdBf0wNACAHDQEgDyAAIAIgDREGACACIA9qIQ8gEUEBaiERDAELAkADQCAAIAEgEGoiAU8NASAFIAEgBCADEQEAIgdBAEwEQCAHDQEgBiAQaiIGIAEgAiANEQYAIAhBAWshCAwBCwsgACABIAIgDREGAAwBCyAFIAAgACAPayIHIA8gBWsiASABIAdLGyIBayABIBIRBgAgACAKIAYgAGsiASAKIAZrIgAgACABSxsiAGsgACASEQYAIAggCWshBiAKIAFrIQECQCAGIAkgEWsiCEkEQCAFIQkgCCEAIAEhBSAGIQgMAQsgASEJIAYhAAsgCyAONgIIIAsgADYCBCALIAk2AgAgC0EMaiELDAMLIAAgAmohACAJQQFqIQkMAAsACwsgACAFaiEGIAUhCQNAIAIgCWoiCSEAIAYgCU0NAQNAIAAgBU0NASAAIBBqIgEgACAEIAMRAQBBAUgNASAAIAEgAiANEQYAIAEhAAwACwALAAsACyAMQeAEaiQAC08BAX8gARCOAQRAIAEQDQ8LAkAgAUKAgICAcFQNACABpyICLwEGQQRHDQAgAikDICIBEI4BRQ0AIAEQDQ8LIABB2bQBQQAQFEKAgICA4AALkAIBAn8jAEEQayIDJAAgAyACNwMIQoCAgIDgACECAkAgACABEL8BIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOYCIQIMAQsgACABQTwgAUEAEBIiARALBEAgASECDAELAkACQCABELEBRQ0AIAAgARCNAyIERQ0BIAAgBEYNACAAIAEgBCkDQBBYRQ0AIAAgARAKQoCAgIAwIQELAn4gARAgBEAgACABQcwBIAFBABASIQIgACABEAogAhALDQNCgICAgDAgAiACECYbIQELIAELEBAEQCAAQoCAgIAwQQEgA0EIahDmAiECDAILIAAgAUEBIANBCGoQrgEhAgsgACABEAoLIANBEGokACACCxoAIABB3gBB2AAgARsQDiAAIAJB//8DcRAwC+0BAQN/A0ACQCACIANMDQAgASADaiIFLQAAIgZBAnQhBwJAAkAgBkG0AUcEQCAGQcABRw0BIAQgBSgAATYCAAwCCyAAIAUoAAEiBUEAEG9BAEoNAiAAKAKkAiAFQRRsaigCEEUNAUHwmAFBoQ1BiPABQZqZARAAAAsgB0GTMWotAAAiBkEcSw0AQQEgBnQiBkGAgIAccUUEQCAGQYCAgOAAcUUEQCAGQYCAgIIBcUUNAiAAIAUoAAFBfxBvGgwCCyAAIAUoAAVBfxBvGgsgACgCACAFKAABEBELIAMgB0GQMWotAABqIQMMAQsLIAMLuQMBBX8gAUUEQCAAIAJBBHFBCHIQ7QEPC0F/IQMCQAJAAkAgACABQQFrIgQgAhCwAg0AIARBB0sNASACQXtxIQUgAkEBcSEGIAFBAWshBwNAIAAoAhAhAQJAAkACQAJAAkACQAJAAkACQAJAIAcOBwABAgMEBQYHCyABQSVHBEBBmgEhAiABQSpGDQkgAUEvRw0NQZsBIQIMCQtBnAEhAgwIC0GdASECQQAhAwJAIAFBK2sOAwgKAAoLQZ4BIQIMBwsgAUHqAGoiAUEDTw0KIAFB4ABrIQIMBgtBACEDAkACQAJAAkAgAUHmAGoOAwELAgALAkAgAUHJAGoOAggDAAtBowEhAgJAIAFBPGsOAwkLAAsLQaUBIQIMCAtBpAEhAgwHC0GmASECDAYLQacBIQIMBQsgAUHjAGoiAUEETw0IQanXquV6IAFBA3R2IQIMBAtBrQEhAiABQSZHDQcMAwtBrgEhAiABQd4ARw0GDAILQa8BIQIgAUH8AEcNBQwBC0GoASECIAZFDQILQX8hAyAAEA8NASAAIAQgBRCwAg0BIAAgAkH/AXEQDAwACwALIAMPCxABAAtBAAsJACAAQQIQzwMLUwEEfyAAKAL0ASICQQAgAkEAShshBEEAIQICQANAIAIgBEYNASABIAAoAvwBIgUgAkEEdGooAgxHBEAgAkEBaiECDAELCyAFIAJBBHRqIQMLIAMLNgADQCABIAJMRQRAIABBswEQDCAAIAFB//8DcRAWIAAoAkAoAswBIAFBA3RqKAIAIQEMAQsLC9UBAQJ/IAAgACgCQCIEIAECfwJAAkACQAJAAkACQCABQSdGDQAgAUHNAEYgAUE6RnJFBEAgAUHFAEYNASABQS1HDQNBr4sBIQMgBC0AbEEBRg0CDAMLQc6LASEDIAQtAG5BAXENASABQcUARw0CCyACQbF/Rg0DIAJBQ0YNBEHziwEhAyACQUlGDQAgAkFRRw0CCyAAIANBABATQX8PCyACQbF/Rg0BIAJBQ0YNAkEBIAJBUUYNAxogAkFJRw0AQQIMAwsQAQALQQYMAQtBBQsQqAFBH3ULCQAgAEEAEPABCzsBAX8gASgCACECA0ACQCACIAAoAgRB/////wdxTg0AIAAgAhAvQSBHDQAgASACQQFqIgI2AgAMAQsLC4UBAgV/AX5BfyEEAkAgASgCACIFIAAoAgRB/////wdxIgZODQAgBSEDA0ACQAJAIAMgBkYEQCAGIQMMAQsgACADEC8iB0Ewa0EKSQ0BIAMgBUYNAwsgAiAINwMAIAEgAzYCAEEAIQQMAgsgA0EBaiEDIAetIAhCCn58QjB9IQgMAAsACyAEC0EBAX8CQCACQoCAgIBwVA0AIAKnIgMvAQZBCkcNACADKQMgIgIQjgFFDQAgACABIAIQRw8LIABBoPUAQQAQFEF/CxsBAX4gACABIAIgAyAEEMMCIQUgACABEAogBQvlAwIHfwF+IwBBMGsiBSQAIAFBKhA/IQYgBUIANwIoAkADQCAHQQJHBEACQCAAQSAQaiIIBEAgCEEIaiEJQQAhBANAIARBAkYNAiAJIARBA3QiCmogAyAKaikDABANNwMAIARBAWohBAwACwALQX8hBCAHQQFHDQMgACgCECAFKAIoELsCDAMLIAggAiAHQQN0aikDACILQoCAgIAwIAAgCxA6GxANNwMYIAVBKGogB0ECdGogCDYCACAHQQFqIQcMAQsLAkAgBigCACIERQRAIAZBBGohAEEAIQQDQCAEQQJGDQIgBUEoaiAEQQJ0aigCACAAIARBA3RqEEwgBEEBaiEEDAALAAsCQCAEQQJHDQBBAiEEIAYoAhQNACAAKAIQIgIoApgBIgNFDQAgACABIAYpAxhBASACKAKcASADESwAIAYoAgAhBAsgBSAFQShqIARBAWsiA0ECdGooAgAiAikDCDcDACAFIAIpAxA3AwggBSACKQMYNwMQQQAhBCAFIANBAEetQoCAgIAQhDcDGCAFIAYpAxg3AyAgAEEtQQUgBRCCAwNAIARBAkYNASAAKAIQIAVBKGogBEECdGooAgAQuwIgBEEBaiEEDAALAAsgBkEBNgIUQQAhBAsgBUEwaiQAIAQLIwAgACABKQMIECUgACABKQMQECUgACABKQMYECUgACABEB8LmQIBAX8jAEEQayIHJAAgByAAOQMIIAcgAUEBayIFNgIAIAZBgAFB8cMAIAcQVRogAyAGLQAAQS1GNgIAIAQgBi0AAToAACABQQJOBEAgBEEBaiAGQQNqIAUQIxoLIAEgBGpBADoAACACAn8gASAGaiABQQFKakECaiEBQQAhBUEAIQNBACEEA0AgASICQQFqIQEgAiwAABD9BQ0ACwJAAkACQCACLAAAIgZBK2sOAwECAAILQQEhAwsgASwAACEGIAEhAiADIQQLAkAgBhBFRQ0AQQAhAQNAIAEgAiwAAGtBMGohBSACLAABEEVFDQEgAkEBaiECIAVBCmwhAQwACwALIAVBACAFayAEG0EBags2AgAgB0EQaiQACwoAIAAgAUECdGoLDgAgACABakGBgNzxeWwLEAAgACgCGEF/c0ECdCAAagshACAAIAGtIAEpAwBCgICAgDAgASgCCCABKAIgQQQQ4gELmQICBX8BfiMAQRBrIgQkACMAQRBrIgMkACADQoCAgIAwNwMIIANCgICAgDA3AwAgAEEsQQJBAEECIAMQ5QEhCCADQRBqJAAgBCAINwMIIAgQC0UEQAJ+An4gAhAQBEAgACACQQEgBEEIahDrBQwBCyAAIAJBASAEQQhqEK4BCyIIEAtFBEAgBCkDCEEPED9BCGohBwNAIAVBAkYEQANAIAZBAkcEQCABIAZBA3QiA2ogAyAHaikDABANNwMAIAZBAWohBgwBCwsgBCkDCCECIAgMAwsgBUEDdCEDIAVBAWohBSAAIAMgB2opAwAQZ0UNAAsLIAAgBCkDCBAKIAghAkKAgICA4AALIQggACACEAoLIARBEGokACAIC70MAwl/A34BfCMAQdAAayIIJAAgCCABNgJMQd8AQYACIARBIHEbIQkCQAJAAkACQAJ/AkACQAJAAkACQCABLQAAIgdBK2sOAwECAAILQQEhDAsgCCABQQFqIgE2AkwgBEGACHFFDQEgAS0AACEHCyAHQTBHDQACQAJAAkAgAS0AASIHQfgARwRAIAdB7wBGDQIgB0HYAEcNAQsgA0FvcUUEQCAIIAFBAmoiBTYCTEEQDAYLIAdB7wBGDQEgA0UhBgwECyADRSEGIAMgB0HPAEdyDQMMAQsgAw0GCyAEQQRxRQ0EIAggAUECaiIFNgJMQQgMAgsgBEGBAXENAgJ/IAhBzABqIQdBtMMAIQUDQCAFLQAAIgYEQCAGIAEtAABHBEBBAAwDBSAFQQFqIQUgAUEBaiEBDAILAAsLIAcEQCAHIAE2AgALQQELRQ0CRAAAAAAAAPD/RAAAAAAAAPB/IAwbIhG9An8gEZlEAAAAAAAA4EFjBEAgEaoMAQtBgICAgHgLIgC3vVEEQCAArSEODAYLIBEQFSEODAULAkACQCAHQeIARwRAIAdBwgBGIAZxDQEgBkEBcyAHQTBrQf8BcUEJS3INBCAEQRBxRQ0FIAFBAWohBUECIQYDQCAHQfgBcUEwRw0DIAEgBmotAAAhByAGQQFqIQYMAAsACyAGRQ0FCyAEQQRxRQ0DIAggAUECaiIFNgJMQQIMAQtBgAIhCSAHQf4BcUE4Rg0CIAggBTYCTEEICyEDQoCAgIDAfiEOIAUtAAAQ9AEgA0gNAgwDCyADDQELQQohAwsgCCgCTCIKQQFqIQdBACEBIANBCkchCwJAA0ACQCABIApqIgUtAAAiBkEYdEEYdSENIAYQ9AEgA04EQCAJIA1HDQEgCyABQQFHckUEQCAKLQAAQTBGDQQLIAUtAAEQ9AEgA04NAQsgCCAKIAFBAWoiAWo2AkwMAQsLIAUhBwtBACELAkAgBEEBcQ0AAkAgBkEuRw0AIAcgCk0EQCAHLQABEPQBIANODQILIAggB0EBaiIFNgJMQoCAgIDAfiEOIAkgBywAASIGRg0CA0AgBkH/AXEQ9AEgA04EQEEBIQsgCSAGQRh0QRh1Rw0CIAUtAAEQ9AEgA04NAgsgCCAFQQFqIgE2AkwgBS0AASEGIAEhBQwACwALIAUgCk0NAAJAIAZB/wFxQeUARwRAIANBCkZBACAGQf8BcUHFAEYbDQEgBkEgckH/AXFB8ABHIANBEEtyDQJBASADdEGEggRxDQEMAgsgA0EKRw0BC0EBIQsgBUEBaiEBAkACQAJAIAUtAAFBK2sOAwACAQILIAVBAmohAQwBCyAFQQJqIQELIAEtAAAQRUUNACABIQUDQCAIIAUiAUEBaiIFNgJMIAEtAAEiBEEYdEEYdSEHIAQQRQ0AIAcgCUcNASABLQACEEUNAAsLIAUgCkYEQEKAgICAwH4hDgwBCyAIIQkCQCAFIAprIgRBAmoiB0HBAE8EQCAAKAIQIAcQ5wEiCUUNAQtBACEBQQAhBiAMBEAgCUEtOgAAQQEhBgsgBEEAIARBAEobIQQDQCABIARHBEAgASAKai0AACIFQd8ARwRAIAYgCWogBToAACAGQQFqIQYLIAFBAWohAQwBCwsgBiAJakEAOgAAAn4gA0EKRwRAQoCAgIDAfiALDQEaCwJ8QgAhDiADQQpGQQAgCxtFBEAgCUEBaiAJIAktAAAiBkEtRhshAQNAIAEiBEEBaiEBIAQtAAAiBUEwRg0ACwJ+IANBCkYEQEIKIQ9CmLPmzJmz5swZDAELQQAgA2usIAOsIg+ACyEQQQAhAQNAAkAgBUUNACAFEPQBIgUgA04NACAOIAWsIA4gD358IA4gEFYiBRshDiABIAVqIQEgBC0AASEFIARBAWohBAwBCwsgDrohEQJ8IAEEQCADtyABtxCFBiARoiERCyARmgsgESAGQS1GGwwBCyAJEPkFCyIRvQJ/IBGZRAAAAAAAAOBBYwRAIBGqDAELQYCAgIB4CyIBt71RBEAgAa0MAQsgERAVCyEOIAdBwQBJDQEgACgCECAJEB8MAQsgABDGAUKAgICA4AAhDgsgAgRAIAIgCCgCTDYCAAsgCEHQAGokACAOCyYBAX4gACABIAIgAUEAEBIiBRALBH4gBQUgACAFIAEgAyAEEDULC7sHAg1/AX4jAEHgAGsiBSQAIAAgBUHIAGoQkQICQCACBEAgBSACNgJAIAVByABqQdvMACAFQUBrEIQCIANBf0cEQCAFIAM2AjAgBUHIAGpB5cwAIAVBMGoQhAILIAVByABqQQoQDiAAIAFBMSAAIAIQcUEDEBkaIAAgAUEyIAOtQQMQGRogBEECcQ0BCyAAKAIQQYwBaiECA0AgAigCACICRQ0BQQAhAyAEQQFxRQRAIAUCf0EAIQYCQCACKQMIIhJCgICAgHBUDQAgEqciDCgCECIHIAcoAhhBf3NBAnRBpH5yaigCACEDIAcQJyEIA0AgA0UNASAIIANBAWsiB0EDdGoiAygCACEKIAMoAgRBNkcEQCAKQf///x9xIQMMAQsLIApB/////wNLDQAgDCgCFCAHQQN0aikDACISQoCAgIBwg0KAgICAkH9SDQAgACASELcBIQYLQenMACAGRQ0AGiAGQenMACAGLQAAGws2AiAgBUHIAGpB28wAIAVBIGoQhAIgACAGEDYCQCACKAIIIgMvAQYQ9wEEQCADKAIgIgkvABEiA0ELdkEBcSEPIANBgAhxRQ0BIAIoAiAgCSgCFEF/c2ohDEEAIRAjAEEQayILJABBfyEDAkAgCS0AEkEEcUUNACAJKAJQIghFDQAgCCAJKAJMaiENIAkoAkQhBgNAIAYhAyAIIA1PDQEgCEEBaiEHAn8gCC0AACIGRQRAAkAgC0EIaiAHIA0QlAUiBkEASA0AIAsoAgghEUEAIQojAEEQayIOJAACQCAOQQxqIAYgB2oiCCANEJQFIgdBAEgEQEF/IQcMAQsgDigCDCIGQQF2QQAgBkEBcWtzIQoLIAsgCjYCDCAOQRBqJAAgB0EASA0AIAsoAgwgA2ohBiAHIAhqDAILIAkoAkQhAwwDCyADIAZBAWsiBiAGQf8BcUEFbiIRQQVsa0H/AXFqQQFrIQYgBwshCCAQIBFqIhAgDE0NAAsLIAtBEGokACAFIAAgCSgCQBCiBCIGQf86IAYbNgIQIAVByABqQfXMACAFQRBqEIQCIAAgBhA2IANBf0cEQCAFIAM2AgAgBUHIAGpB5cwAIAUQhAILIAVByABqQSkQDgwBC0EAIQ8gBUHIAGpB+swAQQAQhAILIAVByABqQQoQDiAEIQMgDw0CCyADIQQMAAsACyAFQcgAakEAEA5CgICAgCAhEiAFKAJURQRAIAAgBSgCSBBxIRILIAVByABqEJUBIAAgAUE1IBJBAxAZGiAFQeAAaiQAC+wBAgJ/AX4jAEEQayIDJAAgAUEIayIEKQMAIQUCfwJAIAAgA0EMaiABQRBrIgEpAwAQwwEEQCAAIAUQCgwBCyAAIANBCGogBRDDAQ0AIAECfwJAAkACQAJAAkACQCACQa0Baw4DAQMCAAsCQCACQaABaw4CBQAECyADKAIMIAMoAgh1DAULIAMoAgggAygCDHEMBAsgAygCCCADKAIMcgwDCyADKAIIIAMoAgxzDAILEAEACyADKAIMIAMoAgh0C603AwBBAAwBCyABQoCAgIAwNwMAIARCgICAgDA3AwBBfwshACADQRBqJAAgAAvcBAIGfwJ+AkAgAUKAgICAcINCgICAgJB/UgRAQoCAgIDgACEJIAAgARA+IgEQCw0BCwJAIAJCgICAgHCDQoCAgICQf1ENAEKAgICA4AAhCSAAIAIQPiICEAtFDQAgASECDAELAkAgAqciBCkCBCIJQv////8Hg1ANAAJAIAGnIgMoAgBBAUcNACADKQIEIAmFp0EASA0AIAAoAhAgAxCjBCAEKAIEIgVB/////wdxIgcgAykCBCIJpyIIQf////8HcSIGaiAFQR92dCAIQR92IghrQRFqSQ0AIAgEQCADIAZBAXRqQRBqIARBEGogBUEBdBAjGiADIAQpAgQgCXxC/////weDIAlCgICAgHiDhDcCBAwCCyADQRBqIgUgBmogBEEQaiAHECMaIAMgBCkCBCAJfEL/////B4MiCiAJQoCAgIB4g4Q3AgQgBSAKp2pBADoAAAwBCwJ+AkACQCAEKQIEIgmnQf////8HcSADKQIEIgqnQf////8HcWoiBkGAgICABE8EQCAAQfQNQQAQQQwBCyAAIAYgCSAKhKdBH3YiBxD8ASIFDQELQoCAgIDgAAwBCwJAIAdFBEAgBUEQaiADQRBqIAMoAgRB/////wdxECMiByADKAIEQf////8HcWogBEEQaiAEKAIEQf////8HcRAjGiAGIAdqQQA6AAAMAQsgBUEQaiIGIAMgAygCBEH/////B3EQlQUgBiADKAIEQQF0aiAEIAQoAgRB/////wdxEJUFCyAFrUKAgICAkH+ECyEJIAAgARAKDAELIAEhCQsgACACEAogCQtAACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoIAJqQQR0agsoAgALEOEBCwsAIABB4ztBABAUC50MAgx/BH4jAEGAAWsiCiQAIAohBSMAQeABayIIJAACQCABvSIRQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgEUL///////////8Ag0KBgICAgICA+P8AWgRAIAVBzsK5AjYAAAwCCyABRAAAAAAAAAAAYwRAIAVBLToAACAFQQFqIQULIAVBvMMALQAAOgAIIAVBtMMAKQAANwAADAELAkAgBEUEQAJ+IAGZRAAAAAAAAOBDYwRAIAGwDAELQoCAgICAgICAgH8LIhJC////////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AwAQCiADQQFqIQMMAQsLIAAgARAYC2UBAn8jAEEQayIFJAACQCACEJsBRQRAIAIQDSECDAELIAAgBUEMaiACEJACIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEGQyAAgAyAEELcFIQIgACAGEDYLIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQZw0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAiIQUMAQsgACACQQxqIAcQiwQiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEI4DDAELIAAgASAGIAggAxAiCyEFIAAgAyAIEJgDCyACQRBqJAAgBQsNACAAIAEQDSACEMABCxwAIAAgACgCECgCRCABQRhsaigCBEH1wgAQxQELZQEBfyMAQTBrIgIkAAJ/IAFC/////wdYBEAgAacQkwEMAQsgAiABNwMAIAJBEGpBGEGBwQAgAhBVGkEAIAAgAkEQahBxIgEQCw0AGiAAKAIQIAGnQQEQ1AILIQAgAkEwaiQAIAALPAEBfyABIAAoAtQBIAEoAhQgACgCyAEQ0QJBAnRqIgIoAgA2AiggAiABNgIAIAAgACgC0AFBAWo2AtABC0MAAn9BACACKAIAKAIAQRp2IANGDQAaQX8gACABIAIQ4wENABogAigCACIAIAAoAgBB////H3EgA0EadHI2AgBBAAsLqwEBBH9BfyECAkAgACABQQAQ4wENACABKAIoIgQgASgCECIDKAIgaiIFIAMoAhxLBEAgACABQRBqIAEgBRDRBQ0BCyABKAIkIQNBACECA0AgAiAERkUEQCAAIAEgAhCTAUEHEIABIAMpAwA3AwAgAkEBaiECIANBCGohAwwBCwsgACABKAIkEBhBACECIAFBADYCKCABQgA3AyAgASABLQAFQfcBcToABQsgAgt5AQN/AkACQCAAQQFxIgINACABQYECcUGBAkYgAUGACHFBACAAIAFzQQRxG3INASACIAFBgPQAcUVyDQAgAEEwcSICQRBGIAFBgDBxIgRBAEdzDQEgAEECcSABQYIEcUGCBEdyIAJBEEZyDQAgBEUNAQtBASEDCyADC5QBAQF/IwBBEGsiBSQAIAUg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AkACQCAAIARBCGogAUHiABCEASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEJ8BIgJBAEgNACACRQ0BIABBodgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAIgAi0ABUH+AXE6AAVBAQsuAQF/IACnKQMgIgBCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3EFQQALCwoAIAAoAgBBfHELMwAgACACQQEQ/AEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAkEBdBAjGiAArUKAgICAkH+EC2UCAn8BfkEEIQJCgICAgCAhBAJAAkACQAJAAkACQCABEFQiA0EIag4KAwIFBQUFBQUEAQALIANBB0YNAwwEC0EGIQIMAgtBBSECDAELQQchAgsgACgCKCACQQN0aikDACEECyAEC18BAXwgACkCBEL//////////z9YBEAgASABKwMIRAAAAAAAAPA/IAAoAgC3IgKjoDkDCCABIAErAxAgACgCBCIAQf////8HcSAAQR92IgB0IABrQRFquCACo6A5AxALC+cGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEPADCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQbM5QaENQY4sQcg5EAAAC4kCAgF+An8jAEEwayIEJABBoRkhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQakEgQZ4ZIAQQVRogBEEQaiEFDAkLIABBA0ECIAGnGxAxIQMMCQsgAEEBEDEhAwwICyAAQcUAEDEhAwwHCyAAIAFBABCbAyIBEAsEQCABIQMMBwsgACABIAIQoAQhAyAAIAEQCgwGCyACRQ0BCyABEA0hAwwECyAAQbUZQQAQFAwDCyAAIAEQSUEKQQBBABDJAiEDDAILQdUZIQULIAAgBRBxIQMLIARBMGokACADC6YEAQl/AkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQKyICEAtFDQEMAgsgAhANIQILIAKnIgooAgQiBUH/////B3EhBgJAIAVBAE4EQCAKQRBqIQVBACEDA0AgBCAGRkUEQCADIAQgBWotAABBB3ZqIQMgBEEBaiEEDAELCyADRQRAIAFFDQQgASAGNgIAIAUPCyAAIAMgBmpBABD8ASIHRQ0CQQAhAyAHQRBqIgshBANAIAMgBkYNAgJ/IAMgBWosAAAiCEEATgRAIAQgCDoAACAEQQFqDAELIAQgCEE/cUGAAXI6AAEgBCAIQcABcUEGdkHAAXI6AAAgBEECagshBCADQQFqIQMMAAsACyAAIAZBA2xBABD8ASIHRQ0BQQAhBSAHQRBqIgshBANAIAUiCCAGTg0BIAhBAWohBSAKIAhBAXRqLwEQIglB/wBNBEAgBCAJOgAAIARBAWohBAUCQCADIAUgBk5yIAlBgPgDcUGAsANHcg0AIAogBUEBdGovARAiDEGA+ANxQYC4A0cNACAJQQp0QYD4P3EgDEH/B3FyQYCABGohCSAIQQJqIQULIAQgCRDjAiAEaiEECwwACwALIARBADoAACAHIAQgB2tBEGtB/////wdxrSAHKQIEQoCAgIB4g4Q3AgQgACACEAogAQRAIAEgBygCBEH/////B3E2AgALIAsPCyABRQRAQQAPC0EAIQUgAUEANgIACyAFCyUCAX8BfiAAIAEQMSIDEAtFBEAgACADELcBIQIgACADEAoLIAILDAAgASAAKAIMEQQACz0BAX8gASABKAIAIgJBAWs2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQqwMPCyAAIAEQHwsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDoBUUNACACKAIMIgNBAEgNACAAIAEQpAQgAxCTAQwBCyAAIAFBARDUAgshASACQRBqJAAgAQtcAQN/IABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAwJAAkACQCABDgMCAAEECyACLABMDQMMAQsgAikCTEIghkI4h6cNAgsgACACQQhrEOoFDAELCwu8AQEDfwJAIAEgAigCECIDBH8gAwVBACEDIAIQ8AUNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJ/IAIsAEtBf0oEQCABIQMDQCABIAMiBEUNAhogACAEQQFrIgNqLQAAQQpHDQALIAIgACAEIAIoAiQRAQAiAyAESQ0CIAAgBGohACACKAIUIQUgASAEawwBCyABCyEDIAUgACADECMaIAIgAigCFCADajYCFCABIQMLIAMLQAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQeiAAIAUpAwA3AwAgACAFKQMINwMIIAVBEGok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5wBBABDXASEDIAAgARAKIANBf0oNASAAQYbCAUEAEBQLQX8hAgsgAgtdAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQYC4AUEAEBRCgICAgOAAIQELIAELEABB4bEBIABBCxCBAkEARwteAQJ/QcCxASEDAkACQCABKAIEQf////8HcSIEIAJMDQAgASACEC9BJUcNAEHNsQEhAyACQQJqIARODQAgASACQQFqQQIQwwMiAkF/Sg0BCyAAIAMQxANBfyECCyACC1cAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiADKQMAEEcNABogAisDCL1CgICAgICAgPj/AINCgICAgICAgPj/AFKtQoCAgIAQhAshASACQRBqJAAgAQtXACMAQRBrIgIkAAJ+QoCAgIDgACAAIAJBCGogAykDABBHDQAaIAIrAwi9Qv///////////wCDQoCAgICAgID4/wBWrUKAgICAEIQLIQEgAkEQaiQAIAEL+AICA38DfiMAQTBrIggkACADQgAgA0IAVRshDSAFQQFrIQogBUEBSCEFQgAhAwNAAkAgAyANUQRAIAQhDAwBC0J/IQwgACACIAMgCEEoahCJASIJQQBIDQACQCAJRQ0AIAYQEEUEQCAIIAgpAyg3AwAgAyELIANCgICAgAhaBEAgA7kQFSELCyAIIAI3AxAgCCALNwMIIAggACAGIAdBAyAIECIiCzcDKCAAIAgpAwAQCiAAIAgpAwgQCiALEAsNAgsCQAJAAkAgBQ0AIAAgCCkDKCILEL8BIglBAEgNASAJRQ0AIAAgCEEgaiALEEBBAEgNASAAIAEgCyAIKQMgIAQgCkKAgICAMEKAgICAMBDTBCIEQgBTDQEgACALEAoMAwsgBEL/////////D1MNASAAQfusAUEAEBQgCCkDKCELCyAAIAsQCgwCCyAAIAEgBCAIKQMoEG1BAEgNASAEQgF8IQQLIANCAXwhAwwBCwsgCEEwaiQAIAwLDAAgAEIAIABCAFUbCygAAkAgARAQRQRAIAEQJkUNAQsgACABED4PCyAAIAFBOEEAQQAQuQILowICBn8BfiMAQTBrIgIkAAJAAkAgAykDACIBECBFDQBCgICAgOAAIQsgACAB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ARAKQoCAgIDgAAuYAQICfgF/IAAgARAxIQMCfwJAIAEQXA0AQQAgACgCECgCOCABQQJ0aigCACkCBCICQoCAgICAgICAQINCgICAgICAgICAf1IgAkKAgICA8P///z+DUCACQv//////////v39WcRsNACACp0F/c0EfdkEBIAJC/////weDUBshBAsgBAsEfiAAQcHKACADQcPKABC9AQUgAwsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQJyEBA0AgAkUEQEEADwsgASACQQFrIgRBA3RqIgUoAgAhAiAFKAIEQTZHBEAgAkH///8fcSECDAELC0EBIQECQCACQf////8DSw0AIAMoAhQgBEEDdGopAwAiAEKAgICAcINCgICAgJB/Ug0AIACnKAIEQf////8HcUEARyEBCyABC8wDAQZ/IABB4ABqIgQQbiAAQdAAaiEFIAAoAlQhAgJAAkADQCAFIAIiAUcEQCABQQRrIgMtAABBEE8NAiABKAIEIQIgACABQQhrIgZBBhCfBCADIAMtAABBD3FBEHI6AAAgBigCAA0BIAEQRiABIAQQTAwBCwsMAQtBnDlBoQ1BxCxBqTkQAAALIABB1ABqIQEgAEHQAGohAgJAAkADQCACIAEoAgAiAUcEQCABQQhrIgMoAgBBAEwNAiABQQRrIgQgBC0AAEEPcToAACAAIANBBxCfBCABQQRqIQEMAQsLIABB5ABqIQEgAEHgAGohAgNAIAIgASgCACIBRwRAIAAgAUEIa0EIEJ8EIAFBBGohAQwBCwsMAQtB1jlBoQ1B5yxB9zkQAAALIAAiAkECOgBoIABB2ABqIQMgAEHgAGohAQNAIAEgAigCZCIARwRAIABBBGstAABBDnEEQCAAEEYgACADEEwFIAIgAEEIaxDfBQsMAQsLIAJBADoAaCACKAJcIQACQAJAA0AgACADRwRAIABBBGstAABBDnENAiAAKAIEIQEgAiAAQQhrEB8gASEADAELCyADEG4MAQtB/zlBoQ1BnS1B4DoQAAALCw0AIAAgAUHxyQAQxQELUAIBfwF+AkAgACABQekAIAFBABASIgQQC0UEQCAAIAQQLCEDIAAgAUHAACABQQAQEiIBEAtFDQELQoCAgIDgACEBQQAhAwsgAiADNgIAIAELxAEBBH8gAaci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AkAgAikDCCIHQgFTBEAMAQsgB0IBfSEGAkACQAJAAkAgASACQQRqIAIQjgJFDQAgByACKAIAIgitUg0AIAGnIQkgAigCBCEDIARFDQEgAykDACEFIAMgA0EIaiAIQQN0QQhrEOgBDAILAkAgBARAIAAgAUIAEGIiBRALDQYgACABQgBCASAGQQEQgANFDQEMBgsgACABIAYQYiIFEAsNBQsgACABIAYQlAJBAE4NAgwECyAIQQN0IANqQQhrKQMAIQULIAkgCSgCKEEBazYCKAsgB0KBgICACFQNACAGuRAVIQYLIAAgAUEwIAYQSEF/Sg0BCyAAIAUQCkKAgICA4AAhBQsgACABEAogAkEQaiQAIAULEAAgACADKQMAQREgBBD/AgvqBAIFfgN/IwBBEGsiCyQAAn4CQAJAAkAgACABECkiBkKAgICAcFQNACAGpyIKLwEGQQJHDQAgCi0ABUEJcUEJRw0AIAooAhAQJy0AA0EIcUUNACAKKAIUKQMAIgFC/////w9WDQAgCyABQiCGQiCHIgc3AwggByAKNQIoUg0AIAcgAqx8IgVC/////wdVDQAgCjUCICAFUwRAIAAgCiAFpxDTBQ0DCwJ/IARFIAJBAUhyRQRAIAooAiQiBCACQQN0aiAEIAGnQQN0EOgBQQAMAQsgAacLIQxBACEEIAJBACACQQBKGyECA0AgAiAERkUEQCADIARBA3RqKQMAEA0hASAKKAIkIAQgDGpBA3RqIAE3AwAgBEEBaiEEDAELCyAKIAU+AiggCigCFCAFQv////8PgzcDACAFQoCAgIAIfCEBDAELIAAgC0EIaiAGEEANASALKQMIIgEgAqwiCHwiBUKAgICAgICAEFkEQCAAQZXXAEEAEBQMAgsCQCAERSACQQFIckUEQEIAIQcgACAGIAhCACABQX8QgAMNAwwBCyABIQcLIAJBACACQQBKG60hCEIAIQFBACEEA0AgASAIUgRAIAEgB3whCSAEQQN0IQIgBEEBaiEEIAFCAXwhASAAIAYgCSACIANqKQMAEA0QjwFBAE4NAQwDCwsgACAGQTACfiAFQv////8PgyAFQoCAgIAIfCIBQv////8PWA0AGiAFuRAVCxBIQQBIDQELIAAgBhAKIAVC/////w+DIAFC/////w9YDQEaIAW5EBUMAQsgACAGEApCgICAgOAACyEBIAtBEGokACABCzwAIAFBAEHQABBLIgEgBDYCDCABIAA2AgAgASACIANqNgI8IAEgAjYCOCABQQE2AgggAUKggICAEDcDEAt/AQR/IAEtAABB2wBGBEAgAUEBaiIDEENBAWshAiAAKAIQKAI4IQRBwgEhAQNAIAFBzwFHBEACQCAEIAFBAnRqKAIAIgUoAgRB/////wdxIAJHDQAgBUEQaiADIAIQdA0AIAAgARAXDwsgAUEBaiEBDAELCxABAAsgACABEMcBCxcAIAAgACkDwAEgASACIANBAEF/ELcFCzUBAX8gACgC7AEiB0UEQCAAQdzNAEEAEBRCgICAgOAADwsgACABIAIgAyAEIAUgBiAHETMAC8YCAgJ+An9CgICAgDAhAgJAAkAgASkCVCIDQhiGQjiHpw0AIANCIIZCOIenBEAgA0IQhkI4h6dFDQEgACABKQNgEA0QkgFCgICAgOAADwsgASADQv////+PYINCgICAgBCENwJUA0AgASgCFCAESgRAIAEoAhAgBEEDdGooAgQiBSkCVEIYhkI4h6dFBEAgACAFELgFIgIQCw0EIAAgAhAKCyAEQQFqIQQMAQsLAkAgASgCUCIEBEBCgICAgOAAQoCAgIAwIAAgASAEEQIAQQBIGyECDAELIAAgASkDSEKAgICAMEEAQQAQNSECIAFCgICAgDA3A0gLIAIQCwRAIAFBAToAWSABIAAoAhApA4ABEA03A2ALIAEgASkCVEL///+HgGCDQoCAgAiENwJUCyACDwsgASABKQJUQv////+PYIM3AlQgAgvLBQIHfwF+IwBBEGsiBiQAAn9BACABKQJUIglCKIZCOIenDQAaIAEgCUL//4N4g0KAgASENwJUAkADQAJAIAEoAhQgAkwEQEEAIQIMAQsgAkEDdCEDIAJBAWohAiAAIAMgASgCEGooAgQQuQVBAE4NAQwCCwsCQANAIAIgASgCIE4NAQJAAkAgASgCHCIIIAJBFGxqIgMoAghBAUcNACADKAIMIgVB/QBGDQAgACAGQQhqIAZBDGogASgCECADKAIAQQN0aigCBCAFEO0DIgMNAQsgAkEBaiECDAELCyAAIAMgASAIIAJBFGxqKAIQEOwDDAELQQAgASgCUA0BGiABKAJIKAIkIQhBACECQQAhBQNAAkAgASgCOCAFTARAA0AgAiAB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JCABIARBA3YgAGo2AiBBAAshASADQRBqJAAgAQtfAgF/AXwjAEEQayICJAACf0EAIAEQjgFFDQAaQX8gACACQQhqIAEQRw0AGiACKwMIIgO9QoCAgICAgID4/wCDQoCAgICAgID4/wBSIAOcIANhcQshACACQRBqJAAgAAu7AQEBfCABAn8CfwNAAkACQAJAIAIQVA4IAAAAAAICAgECC0EAIQBBAEH/ASACpxCwARBKDAQLQQAiACACEEkiA71C////////////AINCgICAgICAgPj/AFYgA0QAAAAAAAAAAGNyDQIaQf8BIANEAAAAAADgb0BkDQMaAn8gA54iA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLDAMLIAAgAhCdASICEAtFDQALQX8LIQBBAAs2AgAgAAuyBAEIfyMAQRBrIgYkAAJ/QX8gACAGQQxqIAJBABDLAg0AGiABKAIQLQAzQQhxRQRAIAAgA0EwEN8BDAELIAEtAAVBCHEEQCAGKAIMIgMgASgCKCIFSQRAIAMhBANAIAQgBUZFBEAgACABKAIkIARBA3RqKQMAEAogBEEBaiEEDAELCyABIAM2AigLIANBAE4EfiADrQUgA7gQFQshAiABKAIUIAI3AwBBAQwBCyAAIAZBBGogASgCFCkDABDEARogBigCDCIJIQUCQCAGKAIEIgcgCU0NACABKAIQIgsoAiAiBCAHIAlrTwRAA0AgByIFIAlNDQIgACABIAAgBUEBayIHEOcFIgoQlAQhBCAAIAoQESAEDQAMAgsACyAJIQUgCxAnIgchCANAIAQgCkwEQCAGIAU2AgRBACEIA0AgBCAITA0DAkAgBygCBCIERQ0AIAAgBkEIaiAEELIBRQ0AIAYoAgggBUkNACAAIAEgBygCBBCUBBogASgCECILECcgCEEDdGohBwsgB0EIaiEHIAhBAWohCCALKAIgIQQMAAsABQJAIAgoAgQiBEUNACAAIAZBCGogBBCyAUUNACAGKAIIIgQgBUkNACAFIARBAWogCC0AA0EEcRshBQsgCEEIaiEIIApBAWohCiALKAIgIQQMAQsACwALIAAgASgCFCAFQQBOBH4gBa0FIAW4EBULEB5BASAFIAlNDQAaIAAgA0GawAAQdgshBCAGQRBqJAAgBAumBAEKfyMAQRBrIgIkACACQQA2Agwg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ACACQQVqQQtB8Q0gAhBVGiAAIAJBBWoQcSIEEAsNACAAKAIQIASnQQEQ1AIhAwsgAkEQaiQAIAML4QECBn8BfgJAIAEoAgQiBEH/////B3EiAkEBa0EJSw0AAn8gBEF/TARAIAEvARAMAQsgAS0AEAsiAxBFRQ0AAn8CQCADQTBGBEBBACIDIAJBAUcNAhoMAQsgAkEBIAJBAUsbIQUgAUEQaiEGIANBMGshAyAEQX9KIQdBASECA0AgAiAFRg0BAn8gB0UEQCABIAJBAXRqLwEQDAELIAIgBmotAAALIgQQRUUNAyAEQTBrrCADrUIKfnwiCKchAyACQQFqIQIgCEKAgICAEFQNAAsMAgsgACADNgIAQQELDwtBAAssAQF/A0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAguIAgECfyAAIAEoAgQQEQNAIAIgASgCFE5FBEAgACABKAIQIAJBA3RqKAIAEBEgAkEBaiECDAELCyAAIAEoAhAQGEEAIQIDQCABKAIgIAJKBEAgASgCHCACQRRsaiIDKAIIRQRAIAAoAhAgAygCBBD5AQsgACADKAIQEBEgACADKAIMEBEgAkEBaiECDAELCyAAIAEoAhwQGCAAIAEoAigQGEEAIQIDQCACIAEoAjhORQRAIAAgASgCNCACQQxsaigCBBARIAJBAWohAgwBCwsgACABKAI0EBggACABKQNAEAogACABKQNIEAogACABKQNgEAogACABKQNoEAogAUEIahBGIAAgARAYC68CAgJ/A34jAEEgayICJABCgICAgOAAIQcCQCAAIAMpAwAiBhBnDQAgACABQSoQbCIBEAsNAAJAIABBIBBqIgRFDQBBACEDIARBADYCFCAEQQA2AgAgBEEEaiEFA0AgA0ECRkUEQCAFIANBA3RqEG4gA0EBaiEDDAELCyAEQoCAgIAwNwMYIAEgBBCKASAAIAJBEGogARCsBQ0AAkAgACAGQoCAgIAwQQIgAkEQahAiIggQCwRAIAIgABCRATcDCCAAIAIpAxhCgICAgDBBASACQQhqECIhBiAAIAIpAwgQCiAGEAsNASAAIAYQCgsgACAIEAogACACKQMQEAogACACKQMYEAogASEHDAILIAAgAikDEBAKIAAgAikDGBAKCyAAIAEQCgsgAkEgaiQAIAcL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BSkDeCECIAUpA3AhBAwBCyAGBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABAyIAUpA2giCkIwiKdB+ABrIQYgBSkDYAshBCAHRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQMiAFKQNYIglCMIinQfgAayEHIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCSAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0oEQANAAn4gCiAJfSADIARWrX0iC0IAWQRAIAsgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQMiAFKQMoIQIgBSkDICEEDAULIAtCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgBkEBayIGIAdKDQALIAchBgsCQCAKIAl9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABAyIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAZBAWshBiAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QMiAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuhBAIEfgJ/AkAgAb0iBEIBhiIDUCAEQv///////////wCDQoCAgICAgID4/wBWckUEQCAAvSIFQjSIp0H/D3EiBkH/D0cNAQsgACABoiIAIACjDwsCfgJAIAMgBUIBhiICVARAIARCNIinQf8PcSEHIAZFBEAgBUIMhiICQgBTBEBBACEGDAMLQX8hBgNAIAJCAYYiAkIAUw0DIAZBAWshBgwACwALIAVC/////////weDQoCAgICAgIAIhAwCCyAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBUEBIAZrrYYLIQICfgJAIAdFBEAgBEIMhiIDQgBTBEBBACEHDAILQX8hBwNAIANCAYYiA0IAUw0CIAdBAWshBwwACwALIARC/////////weDQoCAgICAgIAIhAwBCyAEQQEgB2uthgshBCAGIAdKBEADQAJAIAIgBH0i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IAxBA3I2AgQgBSAKaiICIAIoAgRBAXI2AgQgAyAMEPQFCyAFIQILIAILIgIEQCACQQhqDwsgARChAiIFRQRAQQAPCyAFIABBfEF4IABBBGsoAgAiAkEDcRsgAkF4cWoiAiABIAEgAksbECMaIAAQ6QEgBQvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxByIAQgACACQYH4ACAFaxDWAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwuCEQIFfwt+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQQFrQf3/AU0EQCAHQQFrQf7/AUkNAQsgAVAgAkL///////////8AgyIKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCERIAMhAQwCCyABIApCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgCoRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIApC////////P1gEQCAFQbABaiABIAwgASAMIAxQIgYbeSAGQQZ0rXynIgZBD2sQckEQIAZrIQYgBSkDuAEhDCAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQQ9rEHIgBiAIakEQayEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC0ASAFQYABakIAIAUpA5gBfSAEELQBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtAEgBUHgAGogBEIAIAUpA3h9ELQBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELQBIAVBQGsgBEIAIAUpA1h9ELQBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEIAIQtAEgBUEgaiAEQgAgBSkDOH0QtAEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC0ASAFIARCACAFKQMYfRC0ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCAX0iCkL/////D4MiBCACQiCIIgt+Ig4gCkIgiCIKIAJC/////w+DIg9+fCICQiCIIAIgDlStQiCGhCAKIAt+fCACQiCGIgsgBCAPfnwiAiALVK0gAiACIAQgA0IRiEL/////D4MiDn4iDyAKIANCD4ZCgID+/w+DIg1+fCILQiCGIhAgBCANfnwgEFStIAogDn4gCyAPVK1CIIYgC0IgiIR8fHwiAlatfHwgAkIAUq18fSILQv////8PgyIOIAR+Ig8gCiAOfiINIAQgC0IgiCIQfnwiC0IghnwiDiAPVK0gCiAQfiALIA1UrUIghiALQiCIhHx8IA5CACACfSICQiCIIgsgBH4iDyACQv////8PgyINIAp+fCICQiCGIhAgBCANfnwgEFStIAogC34gAiAPVK1CIIYgAkIgiIR8fHwiAiAOVK18IAJCAn0iDyACVK18QgF9IgtC/////w+DIgIgDEIChiABQj6IhEL/////D4MiBH4iDiABQh6IQv////8PgyIKIAtCIIgiC358Ig0gDlStIA0gDSAPQiCIIg4gDEIeiEL//+//D4NCgIAQhCIMfnwiDVatfCALIAx+fCACIAx+IhMgBCALfnwiECATVK1CIIYgEEIgiIR8IA0gDSAQQiCGfCINVq18IA0gDSAKIA5+IhMgD0L/////D4MiDyAEfnwiECATVK0gECAQIAIgAUIChkL8////D4MiE358IhBWrXx8Ig1WrXwgDSALIBN+IgsgDCAPfnwiDCAEIA5+fCIEIAIgCn58IgJCIIggAiAEVK0gCyAMVq0gBCAMVK18fEIghoR8IgQgDVStfCAEIAQgECAOIBN+IgwgCiAPfnwiCkIgiCAKIAxUrUIghoR8IgogEFStIAogAkIghnwgClStfHwiBFatfCICQv////////8AWARAIAFCMYYgBEIgiCIBIANC/////w+DIgp+Ig0gBEL/////D4MiDCADQiCIIgt+fCIOQiCGIhAgCiAMfnwiDyAQVK19IA9CAFKtfSACQv////8PgyAKfiAMIBJC/////w+DfnwgASALfnwgDSAOVq1CIIYgDkIgiIR8IAQgFEIgiH4gAyACQiCIfnwgAiALfnwgASASfnxCIIZ8fSESIAZBAWshBkIAIA99DAELIARCIYghDCABQjCGIAJCP4YgBEIBiIQiBEL/////D4MiASADQiCIIgp+Ig8gDCACQh+GhCINQv////8PgyIQIANC/////w+DIgx+fCILQiCGIhMgASAMfnwiDiATVK19IA5CAFKtfSAEIBRCIIh+IAMgAkIhiH58IAJCAYgiAiAKfnwgDSASfnxCIIYgCiAQfiACQv////8PgyAMfnwgASASQv////8Pg358IAsgD1StQiCGIAtCIIiEfHx9IRJCACAOfQshASAGQYCAAU4EQCARQoCAgICAgMD//wCEIRFCACEBDAELIAZB//8AaiEHIAZBgYB/TARAAkAgBw0AIAQgAUIBhiADViASQgGGIAFCP4iEIgEgFFYgASAUURutfCIBIARUrSACQv///////z+DfCICQoCAgICAgMAAg1ANACACIBGEIREMAgtCACEBDAELIAQgAUIBhiADWiASQgGGIAFCP4iEIgEgFFogASAUURutfCIBIARUrSACQv///////z+DfCAHrUIwhnwgEYQhEQsgACABNwMAIAAgETcDCCAFQcABaiQADwsgAEIANwMAIABCgICAgICA4P//ACARIAIgA4RQGzcDCCAFQcABaiQAC8QBAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNAEEAIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQEEAIAEgAlMgASACURsNASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC9wyAxV/B34BfCMAQRBrIhEkACMAQaABayIOJAAgDkEQakEAQZABEEsaIA5BfzYCXCAOIAA2AjwgDkF/NgIYIA4gADYCFCAOQRBqEKoEIA5BEGohAiMAQTBrIg0kAEHgowQoAgAhEEHUowQoAgAhDwNAAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFEP0FDQALQQEhAAJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsCQAJAAkADQCAGQYmjBGosAAAgBUEgckYEQAJAIAZBBksNACACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AACEFDAELIAIQWiEFCyAGQQFqIgZBCEcNAQwCCwsgBkEDRwRAIAZBCEYNASAGQQRJDQIgBkEIRg0BCyACKAJoIgQEQCACIAIoAgRBAWs2AgQLIAZBBEkNAANAIAQEQCACIAIoAgRBAWs2AgQLIAZBAWsiBkEDSw0ACwsjAEEQayICJAACfiAAskMAAIB/lLwiBEH/////B3EiAEGAgIAEa0H////3B00EQCAArUIZhkKAgICAgICAwD98DAELIAStQhmGQoCAgICAgMD//wCEIABBgICA/AdPDQAaQgAgAEUNABogAiAArUIAIABnIgBB0QBqEHIgAikDACEWIAIpAwhCgICAgICAwACFQYn/ACAAa61CMIaECyEXIA0gFjcDACANIBcgBEGAgICAeHGtQiCGhDcDCCACQRBqJAAgDSkDCCEWIA0pAwAhFwwBCwJAAkACQCAGDQBBACEGA0AgBkGSowRqLAAAIAVBIHJHDQECQCAGQQFLDQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsgBkEBaiIGQQNHDQALDAELAkACQCAGDgQAAQECAQsCQCAFQTBHDQACfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLQV9xQdgARgRAIwBBsANrIgMkAAJ/IAIoAgQiBCACKAJoSQRAIAIgBEEBajYCBCAELQAADAELIAIQWgshBQJAAn8DQCAFQTBHBEACQCAFQS5HDQQgAigCBCIEIAIoAmhPDQAgAiAEQQFqNgIEIAQtAAAMAwsFIAIoAgQiBCACKAJoSQR/QQEhCiACIARBAWo2AgQgBC0AAAVBASEKIAIQWgshBQwBCwsgAhBaCyEFQQEhCCAFQTBHDQADQCAZQgF9IRkCfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLIgVBMEYNAAtBASEKC0KAgICAgIDA/z8hFwNAAkAgBUEgciEGAkACQCAFQTBrIgRBCkkNACAFQS5HQQAgBkHhAGtBBUsbDQIgBUEuRw0AIAgNAkEBIQggFiEZDAELIAZB1wBrIAQgBUE5ShshBAJAIBZCB1cEQCAEIAlBBHRqIQkMAQsgFkIcVwRAIANBMGogBBCBASADQSBqIBsgF0IAQoCAgICAgMD9PxAyIANBEGogAykDICIbIAMpAygiFyADKQMwIAMpAzgQMiADIBggGiADKQMQIAMpAxgQeiADKQMIIRogAykDACEYDAELIAwgBEVyDQAgA0HQAGogGyAXQgBCgICAgICAgP8/EDIgA0FAayAYIBogAykDUCADKQNYEHogAykDSCEaQQEhDCADKQNAIRgLIBZCAXwhFkEBIQoLIAIoAgQiBCACKAJoSQR/IAIgBEEBajYCBCAELQAABSACEFoLIQUMAQsLAn4CQCAKRQRAIAIoAmhFDQEgAiACKAIEIgRBAWs2AgQgAiAEQQJrNgIEIAhFDQEgAiAEQQNrNgIEDAELIBZCB1cEQCAWIRcDQCAJQQR0IQkgF0IBfCIXQghSDQALCwJAIAVBX3FB0ABGBEAgAhD6BSIXQoCAgICAgICAgH9SDQFCACEXIAIoAmhFDQEgAiACKAIEQQFrNgIEDAELQgAhFyACKAJoRQ0AIAIgAigCBEEBazYCBAsgCUUEQCADQfAAaiAAt0QAAAAAAAAAAKIQtQEgAykDcCEYIAMpA3gMAgsgGSAWIAgbQgKGIBd8QiB9IhZBACAQa61VBEBBhKcEQcQANgIAIANBoAFqIAAQgQEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhGCADKQOIAQwCCyAQQeIBa6wgFlcEQCAJQX9KBEADQCADQaADaiAYIBpCAEKAgICAgIDA/79/EHogGCAaQoCAgICAgID/PxD4BSECIANBkANqIBggGiAYIAMpA6ADIAJBAEgiBBsgGiADKQOoAyAEGxB6IBZCAX0hFiADKQOYAyEaIAMpA5ADIRggCUEBdCACQX9KciIJQX9KDQALCwJ+IBYgEKx9QiB8IhenIgRBACAEQQBKGyAPIBcgD61TGyIEQfEATgRAIANBgANqIAAQgQEgAykDiAMhGSADKQOAAyEbQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgBGsQyAEQtQEgA0HQAmogABCBASADQfACaiADKQPgAiADKQPoAiADKQPQAiIbIAMpA9gCIhkQ/AUgAykD+AIhHCADKQPwAgshFyADQcACaiAJIAlBAXFFIBggGkIAQgAQgAJBAEcgBEEgSHFxIgBqEKICIANBsAJqIBsgGSADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBcgHBB6IANBoAJqQgAgGCAAG0IAIBogABsgGyAZEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeiADQfABaiADKQOAAiADKQOIAiAXIBwQqAQgAykD8AEiGSADKQP4ASIXQgBCABCAAkUEQEGEpwRBxAA2AgALIANB4AFqIBkgFyAWpxD7BSADKQPgASEYIAMpA+gBDAILQYSnBEHEADYCACADQdABaiAAEIEBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhGCADKQO4AQwBCyADQeAAaiAAt0QAAAAAAAAAAKIQtQEgAykDYCEYIAMpA2gLIRYgDSAYNwMQIA0gFjcDGCADQbADaiQAIA0pAxghFiANKQMQIRcMBQsgAigCaEUNACACIAIoAgRBAWs2AgQLIAAhDEEAIQRBACEGIwBBkMYAayIBJABBACAPIBBqIhRrIRUCQAJ/A0AgBUEwRwRAAkAgBUEuRw0EIAIoAgQiACACKAJoTw0AIAIgAEEBajYCBCAALQAADAMLBSACKAIEIgAgAigCaEkEfyACIABBAWo2AgQgAC0AAAUgAhBaCyEFQQEhBgwBCwsgAhBaCyEFQQEhByAFQTBHDQBCfyEWA38CfyACKAIEIgAgAigCaEkEQCACIABBAWo2AgQgAC0AAAwBCyACEFoLIgVBMEcEf0EBBSAWQgF9IRYMAQsLIQYLIAFBADYCkAYCfgJAAkACQCAFQS5GIghFQQAgBUEwayIAQQlLG0UEQANAAkAgCEEBcQRAIAdFBEAgFyEWQQEhBwwCCyAGRSEIDAQLIBdCAXwhFyAEQfwPTARAIAMgF6cgBUEwRhshAyABQZAGaiAEQQJ0aiIGIAsEfyAFIAYoAgBBCmxqQTBrBSAACzYCAEEBIQZBACALQQFqIgAgAEEJRiIAGyELIAAgBGohBAwBCyAFQTBGDQAgASABKAKARkEBcjYCgEZB3I8BIQMLAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFQS5GIgggBUEwayIAQQpJcg0ACwsgFiAXIAcbIRYgBkUgBUFfcUHFAEdyRQRAIAIQ+gUiGUKAgICAgICAgIB/UgRAIBYgGXwhFgwECyACKAJoRQ0DIAIgAigCBEEBazYCBAwDCyAGRSEIIAVBAEgNAQsgAigCaEUNACACIAIoAgRBAWs2AgQLIAhFDQBBhKcEQRw2AgBCACEXIAIQqgRCAAwBCyABKAKQBiIARQRAIAEgDLdEAAAAAAAAAACiELUBIAEpAwAhFyABKQMIDAELIBYgF1IgF0IJVXIgD0EeTEEAIAAgD3YbckUEQCABQTBqIAwQgQEgAUEgaiAAEKICIAFBEGogASkDMCABKQM4IAEpAyAgASkDKBAyIAEpAxAhFyABKQMYDAELIBBBfm2tIBZTBEBBhKcEQcQANgIAIAFB4ABqIAwQgQEgAUHQAGogASkDYCABKQNoQn9C////////v///ABAyIAFBQGsgASkDUCABKQNYQn9C////////v///ABAyIAEpA0AhFyABKQNIDAELIBBB4gFrrCAWVQRAQYSnBEHEADYCACABQZABaiAMEIEBIAFBgAFqIAEpA5ABIAEpA5gBQgBCgICAgICAwAAQMiABQfAAaiABKQOAASABKQOIAUIAQoCAgICAgMAAEDIgASkDcCEXIAEpA3gMAQsgCwRAIAtBCEwEQCABQZAGaiAEQQJ0aiICKAIAIQADQCAAQQpsIQAgC0EBaiILQQlHDQALIAIgADYCAAsgBEEBaiEECwJAIAMgFqciB0ogA0EJTnIgB0ERSnINACAHQQlGBEAgAUHAAWogDBCBASABQbABaiABKAKQBhCiAiABQaABaiABKQPAASABKQPIASABKQOwASABKQO4ARAyIAEpA6ABIRcgASkDqAEMAgsgB0EITARAIAFBkAJqIAwQgQEgAUGAAmogASgCkAYQogIgAUHwAWogASkDkAIgASkDmAIgASkDgAIgASkDiAIQMiABQeABakEAIAdrQQJ0QdCjBGooAgAQgQEgAUHQAWogASkD8AEgASkD+AEgASkD4AEgASkD6AEQ9wUgASkD0AEhFyABKQPYAQwCCyAPIAdBfWxqQRtqIgJBHkxBACABKAKQBiIAIAJ2Gw0AIAFB4AJqIAwQgQEgAUHQAmogABCiAiABQcACaiABKQPgAiABKQPoAiABKQPQAiABKQPYAhAyIAFBsAJqIAdBAnRBiKMEaigCABCBASABQaACaiABKQPAAiABKQPIAiABKQOwAiABKQO4AhAyIAEpA6ACIRcgASkDqAIMAQsDQCABQZAGaiAEIgBBAWsiBEECdGooAgBFDQALQQAhCwJAIAdBCW8iBEUEQEEAIQQMAQsgBCAEQQlqIAdBf0obIRICQCAARQRAQQAhBEEAIQAMAQtBgJTr3ANBACASa0ECdEHQowRqKAIAIgltIQpBACEIQQAhBUEAIQQDQCABQZAGaiAFQQJ0aiICIAggAigCACIDIAluIgZqIgI2AgAgBEEBakH/D3EgBCACRSAEIAVGcSICGyEEIAdBCWsgByACGyEHIAogAyAGIAlsa2whCCAFQQFqIgUgAEcNAAsgCEUNACABQZAGaiAAQQJ0aiAINgIAIABBAWohAAsgByASa0EJaiEHCwNAIAFBkAZqIARB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BX0gBSAEGyEFDAELQoCAgICAgICAgH8hBSAAKAJoRQ0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQMiAEKQMoIQIgBCkDICEBIANB//8BSARAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAyIANB/f8CIANB/f8CSBtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgIDAABAyIAQpA0ghAiAEKQNAIQEgA0GDgH5KBEAgA0H+/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgIDAABAyIANBhoB9IANBhoB9ShtB/P8BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAyIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAsQACAAQSBGIABBCWtBBUlyC9gBAQR/IAAoAlQhAwJAIAAoAhQgACgCHCIFayIGBEAgACAFNgIUIAAgBSAGEP4FIAZJDQELAkAgAygCEEHhAEcEQCADKAIAIQQMAQsgAyADKAIEIgQ2AgALIAMoAgwgBGogASADKAIIIARrIgEgAiABIAJJGyIEECMaIAMgAygCACAEaiIBNgIAIAEgAygCBE0NACADIAE2AgQgAygCCCICIAFLBEAgAygCDCABakEAOgAAIAQPCyAALQAAQQRxRSACRXINACACIAMoAgxqQQFrQQA6AAALIAQLuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIB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QQBBAEETEKkFIQEgACAEEAoLIAZB0ABqJAAgAQsWACAAIAApA8ABIAMpAwBBA0F/EJkDCzsBAX8DQCACBEAgAC0AACEDIAAgAS0AADoAACABIAM6AAAgAUEBaiEBIABBAWohACACQQFrIQIMAQsLCxoAIAAtAAAhAiAAIAEtAAA6AAAgASACOgAAC0IBAX8gAkEBdiECA0AgAgRAIAAvAQAhAyAAIAEvAQA7AQAgASADOwEAIAFBAmohASAAQQJqIQAgAkEBayECDAELCwsaACAALwEAIQIgACABLwEAOwEAIAEgAjsBAAtCAQF/IAJBAnYhAgNAIAIEQCAAKAIAIQMgACABKAIANgIAIAEgAzYCACABQQRqIQEgAEEEaiEAIAJBAWshAgwBCwsLGgAgACgCACECIAAgASgCADYCACABIAI2AgALQgEBfiACQQN2IQIDQCACBEAgACkDACEDIAAgASkDADcDACABIAM3AwAgAUEIaiEBIABBCGohACACQQFrIQIMAQsLCxwBAX4gACkDACEDIAAgASkDADcDACABIAM3AwALWgECfiACQQR2IQIDQCACBEAgACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwAgAUEQaiEBIABBEGohACACQQFrIQIMAQsLCzQBAn4gACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwALmwMCA38CfiMAQSBrIgUkAEKAgICA4AAhCAJAIAAgAUEeEGgiB0UNACAAIAVBEGogAykDABDBAQ0AIAMpAwghASAFQQA2AhwCfgJAIARBG0wEQCAAIAVBHGogARDEAQ0DDAELIAAgBUEIaiABEEcNAiAEQRxGBEAgBSAFKwMItjgCHAwBCyAFKQMIDAELQgALIQFBASEGIAJBA04EQCAAIAMpAxAQ+AFBAXMhBgsgBygCDCgCICICLQAEBEAgABBwDAELIAc1AhQgBSkDECIJQQEgBEGZHmotAAB0rHxUBEAgAEGg2wEQaQwBCyAJpyACKAIIIAcoAhBqaiEAAkACQAJAAkACQAJAIARBFmsOCAQEAAABAQECAwsgBSgCHCEDIAYEQCAFIANB//8DcRDkAyIDNgIcCyAAIANB//8DcRCEAwwECyAFKAIcIQMgBgRAIAUgAxCDAyIDNgIcCyAAIAMQWwwDCyAAIAYEfiABEJMFBSABCzcAAAwCCxABAAsgACAFKAIcOgAAC0KAgICAMCEICyAFQSBqJAAgCAunAwIBfgN/IwBBEGsiByQAQoCAgIDgACEFAkAgACABQR4QaCIIRQ0AIAAgB0EIaiADKQMAEMEBDQBBASEGIAJBAk4EQCAAIAMpAwgQ+AFBAXMhBgsgCCgCDCgCICICLQAEBEAgABBwDAELIAg1AhQgBykDCCIBQQEgBEGZHmotAAB0rHxUBEAgAEGg2wEQaQwBCyABpyACKAIIIAgoAhBqaiEAAkACQAJAAkACQAJAAkACQAJAIARBFmsOCAgAAQIDBAUGBwsgADEAACEFDAgLIAAvAAAhACAGBH8gABDkAwUgAAtBEHRBEHWtIQUMBwsgAC8AACEAIAYEfyAAEOQDBSAAC60hBQwGCyAAKAAAIQAgBgR/IAAQgwMFIAALrSEFDAULIAAoAAAhAAJ/IAYEQCAAEIMDIQALIABBAE4LBEAgAK0hBQwFCyAAuBAVIQUMBAsgACgAACEAIAYEfyAAEIMDBSAAC767EBUhBQwDCyAAKQAAIQEgBgR+IAEQkwUFIAELvxAVIQUMAgsQAQALIAAwAABC/////w+DIQULIAdBEGokACAFC4ABAQN/IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqEMUDIgEQCw0AIAJBACACQQBKGyECA0AgAiAERg0BIAAgASAEIAMgBEEDdGopAwAQDRCWAiEGIARBAWohBCAGQX9KDQALIAAgARAKQoCAgIDgACEBCyAFQRBqJAAgAQumBQIJfgJ/IwBBMGsiDSQAIAMpAwAhBUKAgICAMCEGIA1CgICAgDA3AxhBASEOAkACQAJAAkACfiACQQJIBEBCgICAgDAhCkKAgICAMAwBCwJAIAMpAwgiChAQDQAgACAKEGcNAkEAIQ4gAkEDSA0AIAMpAxAMAQtCgICAgDALIQsgACAFQcMBIAVBABASIgQQCw0AAkAgBBAQRQRAIAAgBBAKIAAQTiIHEAsEQEKAgICAMCEJQoCAgIAwIQQMBAsgDSAFEA03AxAgACANQRBqQQhyQQAQlwMhAiANKQMYIQkgDSkDECEEIAINA0IAIQUDQCAAIAQgCSANQQRqEKsBIggQC0UEQCANKAIEBEAgBCEIDAQLIAAgByAFIAgQbSECIAVCAXwhBSACQQBODQELCyAEEBANBCAAIARBARCvARoMAwtCgICAgDAhCUKAgICAMCEIQoCAgIAwIQQgACAFECkiBxALDQMLIAAgDUEIaiAHEEBBAEgEQCAIIQQMAgsgDQJ+IA0pAwgiBEKAgICACHxC/////w9YBEAgBEL/////D4MMAQsgBLkQFQsiBTcDICAAIAFBASANQSBqEMUDIQYgACAFEAoCQCAGEAsNAEIAIQUgBEIAIARCAFUbIQwDQCAFIAxRBEAgCCEEDAYLIAAgByAFEGIiBBALDQECQCAOBEAgBCEBDAELIA0gBDcDICANIAVC/////w+DNwMoIAAgCiALQQIgDUEgahAiIQEgACAEEAogARALDQILIAAgBiAFIAEQjwEhAiAFQgF8IQUgAkEATg0ACwsgCCEEDAILQoCAgIAwIQlCgICAgDAhBEKAgICAMCEHCwsgACAGEApCgICAgOAAIQYLIAAgBxAKIAAgBBAKIAAgCRAKIA1BMGokACAGCw8AIAArAwAgASsDABDHBAsJACABKwMAEBULVgEBfyABEBBFBEAgAEHJzABBABAUQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiARAQDQBCgICAgOAAIAAgARArIgEQCw0BGiABpyEECyAAIARBAxD2AwsLEQAgACoCALsgASoCALsQxwQLCgAgASoCALsQFQsXACABKAIAIgEgACgCACIASSAAIAFJawsYACABKAIAIgBBAE4EQCAArQ8LIAC4EBULFwAgASgCACIBIAAoAgAiAEggACABSGsLBwAgATUCAAsNACAALwEAIAEvAQBrCwcAIAEzAQALDQAgAC4BACABLgEAawsOACABMgEAQv////8PgwsNACAALQAAIAEtAABrCwcAIAExAAALDQAgACwAACABLAAAawsOACABMAAAQv////8PgwvhCQQEfwF8AX4BfSMAQRBrIgYkAEKAgICA4AAhCgJAIAAgARCWASIIQQBIDQBBfyEFAkACQAJAIAhFDQBBASEHAkACQCAEQQFGBEBBfyEHIAYgCEEBazYCDCACQQJIDQEgACAGIAMpAwgQRw0GIAYrAwAiCb1C////////////AINCgYCAgICAgPj/AFoEQCAGQQA2AgwMAgsgCUQAAAAA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CGoQwAIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHgzwFBABAUC0KAgICA4AAhAQsgAQtmAQF+IAMpAwAiARD3A0UEQCAAQeTJAEEAEBRCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBANBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQKyIEEAsEfkKAgICA4AAFIAAgBKdBAhD2AwsLSQIBfgF/IAAgARDBAyIBEAsEQCABDwtCgICAgDAhAiABpyIDKAIEQYCAgIB4RwRAIAAgACgCECADENMCEDEhAgsgACABEAogAgsJACAAIAEQwQMLTgEBfiMAQRBrIgIkACACIAAgARDBAyIBNwMIAkAgARALBEAgASEEDAELIABCgICAgDBBASACQQhqEMgEIQQgACABEAoLIAJBEGokACAECy0AQoCAgIDgACAAIAMpAwAgAykDCEEAEJsCIgBBAEetQoCAgIAQhCAAQQBIGwuGAQEDfiADKQMAIgEhBCACQQROBEAgAykDGCEECyABQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYQDSAEQQAQiAQhAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQULIAULKgAgAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyAAIAFBA0EAEP8CC2MBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAIQdyEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQtjAQJ+AkACQCADKQMAIgFC/////29YBEAgABAoDAELIAMpAwghBSABIQQgAkEDTgRAIAMpAxAhBAsgACAFEDkiAg0BC0KAgICA4AAPCyAAIAEgAiAEQQAQEiEBIAAgAhARIAELZgEBfiADKQMAIgRC/////29YBEAgABAoQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDkiAkUNACAAIAQgAkEAEN0BIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC4sBAgF/An4jAEEQayIEJAAgAykDCCEFIAMpAwAiBiEBAkACQAJAAkAgAkEDSA0AIAMpAxAiARCxAQ0AIABBycwAQQAQFAwBCyAAIARBDGogBRCLBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEI4DIQEgACACIAMQmAMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmgMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxAENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJMCDQAgACACQQhqIAMpAwgQkwINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUwACfCAAIAApA9ABIgFCDIggAYUiAUIZhiABhSIBQhuIIAGFIgE3A9ABIAFCnbqz+5SS/aIlfkIMiEKAgICAgICA+D+Ev0QAAAAAAADwv6ALEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEBSA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQhgYgB0EIaiAHIAQQhgYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtbAQF/AkAgAL1C////////////AINCgICAgICAgPj/AFYgAEQAAAAAAAAAAGFyDQAgAEQAAAAAAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvjBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAVDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQsAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBb1C////////////AINCgICAgICAgPj/AFgEfCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbBSAGCyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFvUL///////////8Ag0KAgICAgICA+P8AWAR8IAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsFIAYLIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsL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QANAIANBAUgNAiAFQQhqIAZBACADIAYoAgRB/////wdxELABIgIQVw0DIAUgAyACayIDNgIEDAALAAsgBUEIaiAKIAMQywQNAQsgBEUEQCAFQQhqIAlBACAIEFcNAQsgACALEAogACABEAogBUEIahA3IQwMBAsgBUEIahBECyAAIAsQCgsgACABEAoMAQsgASEMCyAFQSBqJAAgDAv3BAIEfgV/IwBB0ABrIgIkACADKQMIIQggAykDACEFAkACQAJAIAEQEEUEQCABECZFDQELIABBk84AQQAQFAwBCwJAIAUQEA0AIAUQJg0AIAQEQCAAIAUQzQRBAEgNAgtCgICAgOAAIQYgACAFQcYBIAVBABASIgcQCw0CIAcQEA0AIAcQJg0AIAIgCDcDKCACIAE3AyAgACAHIAVBAiACQSBqEDUhBgwCCyAAIAJBCGpBABBCGkKAgICAMCEHAkAgACABECsiBhALBEBCgICAgDAhBQwBCyAAIAUQKyIFEAsNACAAIAgQOiINRQRAIAAgCBArIgcQCw0BCyAGpyEKIAWnIgwpAgQhAQNAAkACQCABQv////8Hg1AEQEEAIQMgC0UNASAJIAooAgRB/////wdxTg0CIAlBAWohAwwBCyAKIAwgCRDMBCIDQX9KDQAgCw0BIAJBCGoQRCAAIAUQCiAAIAcQCgwFCyACIAU3AyACfiANBEAgAiAGNwMwIAIgA603AyggACAAIAhCgICAgDBBAyACQSBqECIQPgwBCyACIAc3A0ggAkKAgICAMDcDQCACQoCAgIAwNwM4IAIgBjcDKCACIAOtNwMwIAAgAkEgahCQBQsiARALDQIgAkEIaiAKIAkgAxBXGiACQQhqIAEQjQEaIAwpAgQiAadB/////wdxIANqIQlBASELIAQNAQsLIAJBCGogCiAJIAooAgRB/////wdxEFcaIAAgBRAKIAAgBxAKIAAgBhAKIAJBCGoQNyEGDAILIAJBCGoQRCAAIAUQCiAAIAcQCiAAIAYQCgtCgICAgOAAIQYLIAJB0ABqJAAgBguDAgIDfwF+IwBBIGsiAiQAAkACQCAAIAEQYSIBEAsNACAAIAIgAykDABCOBA0AIAIpAwAiB0KAgICACFoEQCAAQaTCARBpDAELIAenIgNBAUYNASABpyIFKQIEpyIGQf////8HcSIERQ0BIAcgBK1+QoCAgIAEWQRAIABB9A1BABBBDAELIAAgAkEIaiADIARsIAZBH3YQqgMNAAJAIARBAUcEQANAIANBAUgNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDLBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmgEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJoBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmgEhBgsgACABEAoLIAJBEGokACAGC5gEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBQMAQsCQCAEEBAiAg0AIAQQJg0AQoCAgIDgACEFIAAgBEHIASAEQQAQEiIIEAsNAiAIEBANACAIECYNACANIAc3AwggDSABNwMAIAAgCCAEQQIgDRA1IQUMAgtCgICAgDAhCQJAIAAgARArIgwQCwRAQoCAgIAwIQUMAQsgABBOIgUQCw0AAkAgBxAQBEAgDUF/NgIADAELIAAgDSAHEMQBQQBIDQELIAynIg4pAgQhASAAIAQQKyIJEAsNAAJAIA0oAgAiA0UNACABp0H/////B3EhDyAAIA4CfwJAIAINACAJpyICKQIEQv////8HgyEKAkAgDwRAIAFC/////weDIAp9IApQrSIEfSEHIAOtIQgDQCAEIAt8IgEgB1UNAiAOIAIgAacQzAQiA0EASA0CIAAgDiALpyADEJoBIgEQCw0GIAAgBSAGIAFBABCqAUEASA0GIAogA6x8IQsgBkIBfCIGIAhSDQALDAQLIApQRQ0BDAMLIAZC/////w+DIQYgC6cMAQtBAAsgDxCaASIBEAsNASAAIAUgBiABQQAQqgFBAEgNAQsgACAMEAogACAJEAoMAgsgACAFEAogACAMEAogACAJEAoLQoCAgIDgACEFCyANQRBqJAAgBQvTAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBRCgICAgOAAIQcMAQsCQCAFEBANACAFECYNAEKAgICA4AAhByAAIAUgBCAFQQAQEiIGEAsNAQJAIARBxQFHDQAgACAFEM0EQX9KDQAgACAGEAoMAgsgBhAQDQAgBhAmDQAgACAGIAVBASACQShqEDUhBwwBCyACIAAgARArIgY3AwhCgICAgOAAIQcgBhALDQAgAiAFNwMQAkACQAJ/IARBxQFHBEBCgICAgDAhAUEBDAELIABBhMIBEHEiARALDQEgAiABNwMYQQILIQMgACAAKQNIIAMgAkEQahCuASEFIAAgARAKIAUQC0UNAQsgACAGEAoMAQsgACAFIARBASACQQhqELkCIQcgACACKQMIEAoLIAJBMGokACAHC/kCAgV/A34jAEEQayIFJAACQCAAIAEQYSIKEAsEQCAKIQEMAQsCQCAAIAMpAwAQgwQiBgRAQoCAgIDgACEBQoCAgIAwIQsgBkEBSA0BIABB8MEBQQAQFAwBC0KAgICA4AAhASAAIAMpAwAQKyILEAsNACALpyIHKAIEIQggBSAKpyIJKAIEQf////8HcSIGQQAgBEECRhs2AgwCQCACQQJIDQAgAykDCCIMEBANACAAIAVBDGogDCAGQQAQYw0BCyAGIAhB/////wdxIgZrIQICQAJAAkACQCAEDgIAAQILIAUoAgwhAwwCCyAFKAIMIgMgAkoh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IQQgACABECkiARALRQRAAn5CgICAgOAAIAAgAUHbACABQQAQEiIEEAsNABogACAEEDpFBEAgACAEEAogACABQQBBABDXBAwBCyAAIAQgAUEAQQAQNQshBCAAIAEQCgsgBAvWAgICfwR+IwBBIGsiBSQAAn4CQCAAIAUgACABECkiCRBADQBBLCEGQoCAgIAwIQgCQCACQQFIIARyRQRAQQAhAiADKQMAIgEQEA0BIAAgARArIggQCw0CQX8hBiAIpyICKAIEQQFHDQEgAi0AECEGDAELQQAhAgsgACAFQQhqQQAQQhpCACEBIAUpAwAiB0IAIAdCAFUbIQoCQANAIAEgClIEQAJAIAFQDQAgBkEATgRAIAVBCGogBhA7GgwBCyAFQQhqIAJBACACKAIEQf////8HcRBXGgsgACAJIAGnEHgiBxALDQICQCAHECYNACAHEBANACAFQQhqIAQEfiAAIAcQ1QQFIAcLEI0BDQMLIAFCAXwhAQwBCwsgACAIEAogACAJEAogBUEIahA3DAILIAVBCGoQRCAAIAgQCgsgACAJEApCgICAgOAACyEBIAVBIGokACABC/MBAgF/An4jAEEgayIEJAACfgJAAkACQCAAIARBEGogACABECkiBRBADQAgBCkDECIGQgFTDQEgBCAGQgF9IgE3AwggAkECTgRAIAAgBEEIaiADKQMIQn8gASAGEH4NASAEKQMIIQELA0AgAUIAUw0CIAAgBSABIARBGGoQiQEiAkEASA0BIAIEQCAAIAMpAwAQDSAEKQMYQQAQ3gENBAsgAUIBfSEBDAALAAsgACAFEApCgICAgOAADAILQn8hAQsgACAFEAogAUL/////D4MgAUKAgICACHxC/////w9YDQAaIAG5EBULIQEgBEEgaiQAIAEL9QICAX8EfiMAQSBrIgQkAAJ+AkACQCAAIARBEGogACABECkiBxBADQBCfyEGIAQpAxAiCEIBUw0BIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwhCACAIIAgQfg0BCwJAIAcgBEEEaiAEEI4CRQRAIAQpAwghAQwBCyAEKQMIIgUgBDUCACIBIAEgBVMbIQEgBCgCBCECA0AgASAFUgRAIAAgAykDABANIAIgBadBA3RqKQMAEA1BABDeAQRAIAUhBgwFBSAFQgF8IQUMAgsACwsgBCABNwMICyABIAggASAIVRshBQNAIAEgBVENAiAAIAcgASAEQRhqEIkBIgJBAEgNAQJAIAJFDQAgACADKQMAEA0gBCkDGEEAEN4BRQ0AIAEhBgwDCyABQgF8IQEMAAsACyAAIAcQCkKAgICA4AAMAQsgACAHEAogBkL/////D4MgBkKAgICACHxC/////w9YDQAaIAa5EBULIQEgBEEgaiQAIAEL3AICCH4BfyMAQTBrIg0kAEKAgICAMCEGAkACQCAAIA1BCGogACABECkiBxBABEBCgICAgDAhBQwBC0KAgICAMCEFIAAgAykDACIKEGcNAEKAgICAMCEJIAJBAk4EQCADKQMIIQkLIA0pAwgiBUIAIAVCAFUbIQsDQCAIIAtSBEACfiAIIgVCgICAgAhaBEAgCLkQFSEFCyAFCxALDQIgACAHIAUQngEiBhALDQIgDSABNwMgIA0gBTcDGCANIAY3AxAgACAKIAlBAyANQRBqECIiDBALDQIgACAMECwEQCAEBEAgACAGEAogACAHEAoMBQsgACAFEAogACAHEAogBiEFDAQFIAAgBhAKIAAgBRAKIAhCAXwhCAwCCwALCyAAIAcQCkL/////D0KAgICAMCAEGyEFDAELIAAgBRAKIAAgBhAKIAAgBxAKQoCAgIDgACEFCyANQTBqJAAgBQv1AQIBfwJ+IwBBIGsiBCQAAkACQCAAIARBGGogACABECkiBhBADQAgBEIANwMQAkAgAkEBTARAIAQgBCkDGCIFNwMIDAELIAQpAxghBSADKQMIIgEQEEUEQCAAIARBEGogAUIAIAUgBRB+DQILIAQgBTcDCCACQQNIDQAgAykDECIBEBANACAAIARBCGogAUIAIAUgBRB+DQEgBCkDCCEFCyAEKQMQIgEgBSABIAVVGyEFA0AgASAFUQ0CIAAgBiABIAMpAwAQDRCPASECIAFCAXwhASACQX9KDQALCyAAIAYQCkKAgICA4AAhBgsgBEEgaiQAIAYL0gQCA38IfiMAQUBqIgUkAEKAgICAMCEKIAVCgICAgDA3AzggBUKAgICAMDcDMAJAAkACQCAEQQhxIgYEQCAFIAAgARANIgsQlgEiB6w3AwggB0EATg0BDAILIAAgBUEIaiAAIAEQKSILEEANAQsgACADKQMAIg0QZw0AAkAgAkEBTARAQgAhASAFKQMI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BgRAQoCAgIAwIQUgAi0AAEEQcQRAIAJBGGogAkEQaiAEGykDABANIQULIAAgAhBNDAMLIAAgARCZAiIBEAsNAiABECYEQEKAgICAMCEFDAMLIAAQf0UNAAsMAQtBACEDCyAAIAMQESAAIAEQCiACQSBqJAAgBQuVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARALRQRAIAAgBRBnRQRAIAAgBhA5IgINAgsgACABEAoLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCiAAIAIQEUKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBBFBEAgARAmRQ0BCyAAEChCgICAgOAADwsCQCACECANACACECYNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJsCQQBIGwslAQF+IAAgARApIgEQCwRAIAEPCyAAIAEQ+wEhAiAAIAEQCiACC5MBAgF+AX8jAEEgayICJABCgICAgOAAIQQCQAJAIAAgARApIgEQCw0AIAAgAykDABA5IgNFDQAgACACIAGnIAMQUyIFQQBIDQEgBUUEQEKAgICAECEEDAILIAI1AgAhBCAAIAIQTSAEQgKIQgGDQoCAgIAQhCEEDAELQQAhAwsgACADEBEgACABEAogAkEgaiQAIAQLhwEBAn4gAykDACIFECBFBEBCgICAgBAPCwJAIAAgARApIgQQC0UEQCAEpyECIAUQDSEBA0AgACABEJkCIgEQC0UEQCABECYiAyACIAGnRnINAyAAEH9FDQELCyAAIAEQCiAAIAQQCgtCgICAgOAADwsgACABEAogACAEEAogA0WtQoCAgIAQhAtlAQF+QoCAgIDgACEEAkAgACADKQMAEDkiAkUNACAAIAEQKSIBEAsEQCAAIAIQESABDwsgAEEAIAGnIAIQUyEDIAAgAhARIAAgARAKIANBAEgNACADQQBHrUKAgICAEIQhBAsgBAsIACAAIAEQKQsPACAAIAFBN0EAQQAQwwILnAIBBX4jAEEQayICJAAgAykDACEFAkAgABA9IgEQCwRAIAEhBQwBC0KAgICAMCEHAkACQCAAIAVBABD1ASIEEAsNACAAIARB6gAgBEEAEBIiBxALDQADQCAAIAQgByACQQxqEKsBIgYQCw0BIAIoAgwEQCABIQUMAwsCQAJAIAYQIEUEQCAAECgMAQsgACAGQQAQeCIIEAsNACAAIAZBARB4IgUQCwRAIAAgCBAKDAELIAAgASAIIAVBh4ABEMoCQX9KDQELIAAgBhAKDAILIAAgBhAKDAALAAtCgICAgOAAIQUgBBAgBEAgACAEQQEQrwEaCyAHIQYgBCEHIAEhBAsgACAGEAogACAHEAogACAEEAoLIAJBEGokACAFC0AAAn4CQCABEKgDIgJFDQAgAi0AEEEBcQ0AQoCAgIAwIAItABFBAXENARoLIAAgAUEAQQAQ3AQaQoCAgIDgAAsLSABBLyECIAAgAykDACIBEFRBf0YEfyABpy8BBiICQSlGBEBBDUEpIAAgARA6GyECCyAAKAIQKAJEIAJBGGxqKAIEBUEvCxAxC/MBAgR/AX4jAEEwayICJAACQCADKQMAIgkQIEUEQEKBgICAECEBDAELQoCAgIDgACEBIAAgAkEsaiACQShqIAmnIghBAxCQAQ0AIAIoAiwhBiACKAIoIQdBACEDAkADQCADIAdHBEAgACACQQhqIAggBiADQQN0aigCBBBTIgVBAEgNAgJAIAVFDQAgACACQQhqEE0gAigCCCIFQQFxRUEAIARFIAVBAnFFchsNAEKAgICAECEBDAMLIANBAWohAwwBCwsgACAJEJ8BIgNBAEgNASADQQFHrUKAgICAEIQhAQsgACAGIAcQZAsgAkEwaiQAIAELnQECAX4Bf0KAgICAMCEBAkACQCAAIAMpAwAQKSIEEAsNACACQQEgAkEBShshBUEBIQIDQCACIAVGDQICQCADIAJBA3RqKQMAIgEQJg0AIAEQEA0AIAAgARApIgEQCw0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQCgsgAkEBaiECDAALAAsgACAEEAogACABEApCgICAgOAAIQQLIAQLGwAgACADKQMAIAMpAwgQWEEAR61CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECkiBRALRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkAENACAAED0iARALDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQXiIGEAsNAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2AQhBCAAIAYQCiAEEAsNAiAEEBBFBEAgACABIAkoAgQgBEGHgAEQGUF/TA0DCyADQQFqIQMMAQsLIAAgByAIEGQgAQwBCyAAIAIoAhwgAigCGBBkIAAgBRAKIAEhBUKAgICA4AALIQQgACAFEAoLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEChCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEGrnAFBABAUQoCAgIDgAA8LIAEQDQsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABAoDAELIAAgARCfASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEP8CCxAAIAAgAykDAEEBQQAQ/wILLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENoEBH5CgICAgOAABSAEEA0LC30BAn4gAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQESADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDSEFCyAFCycAIAAgAykDACIBIAMpAwhBARCbAkEASARAQoCAgIDgAA8LIAEQDQs4ACADKQMAIgFCIIinIgJBf0YgBEVBACACQX5xQQJHG3JFBEAgABAoQoCAgIDgAA8LIAAgARD7AQtiAQF+AkAgAykDACIBECANACABECYNACAAQcChAUEAEBRCgICAgOAADwsCQCAAIAEQUiIBEAtFBEAgAykDCCIEEBANASAAIAEgBBDaBEUNASAAIAEQCgtCgICAgOAADwsgAQu4AQECfiABECBFBEAgABAoQoCAgIDgAA8LQoCAgIDgACEFAn4gACABQTYgAUEAEBIiBBAQBEAgAEGOARAxDAELIAAgBBA+CyIEEAsEfkKAgICA4AAFAn4gACABQTMgAUEAEBIiARAQBEAgAEEvEDEMAQsgACABED4LIgEQCwRAIAAgBBAKQoCAgIDgAA8LAkAgBBD2AQ0AIAEQ9gENACAAQb4V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BUEIaiADIAJBH3YQqgMaIAcoAgRB/////wdxIQhBACEAA0ACQAJAIAAgCEgEQCAAQQFqIQJBfyEGAkACfwJAAkACQAJAAkACQAJAIAcgABAvIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCE4NBiAAQQJqIQAgByACEC8hBgwJC0EAIQRB3QAhAwwFC0HbACEDIAQgAiAITnINBiAAQQJqIAIgByACEC9B3QBGIgIbIQBB3QBBfyACGyEGQQEhBAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBkHcACEDCyACIQAMAgsgBUEIahA3IQEMAwsgAiEAQQEhBAsgBUEIaiADEJQBGiAGQQBIDQAgBUEIaiAGEJQBGgwACwALIAVBIGokACABC9gCAgN/AX4jAEEQayIEJAACQCABQv////9vWARAIAAQKEKAgICA4AAhBQwBC0KAgICA4AAhBSAAIAAgAUHuACABQQAQEhAsIgJBAEgNACACBH8gBEHnADoACCAEQQlqBSAEQQhqCyECIAAgACABQZ/PABDMAhAsIgNBAEgNACADBEAgAkHpADoAACACQQFqIQILIAAgACABQarPABDMAhAsIgNBAEgNACADBEAgAkHtADoAACACQQFqIQILIAAgACABQbTPABDMAhAsIgNBAEgNACADBEAgAkHzADoAACACQQFqIQILIAAgACABQe8AIAFBABASECwiA0EASA0AIAMEQCACQfUAOgAAIAJBAWohAgsgACAAIAFBw88AEMwCECwiA0EASA0AIAAgBEEIaiADBH8gAkH5ADoAACACQQFqBSACCyAEQQhqaxD+ASEFCyAEQRBqJAAgBQv6CgIRfwF+IwBBEGsiByQAAkAgACABEGEiARALDQAjAEEQayIFJABBfyEEAkAgACIGIAEQKyIVEAsNACAGIBWnIgooAgRB/////wdxIgBBARBKQQJ0EC0iCUUEQCAGIBUQCiAHQQA2AggMAQtBACEEIAVBADYCDCAAQQBHIQsDQCALBEAgCSAEQQJ0aiAKIAVBDGoQ2QE2AgAgBEEBaiEEIAUoAgwgAEghCwwBCwsgBiAVEAogByAJNgIICyAFQRBqJAAgBiABEApCgICAgOAAIQEgBCIAQQBIDQACQCAC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CyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwDC0EAIAAoAgggACgCBCACakkNARogASACEPUFDwsgACACEKUFCw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEPADCwscAQF/IAFBKBA/IgIEQCAAIAIQ7gMgACACEB8LCyUBAX8gAacoAiAiAwRAIAAgAykDACACECEgACADKQMIIAIQIQsLJwEBfyABpygCICICBEAgACACKQMAECUgACACKQMIECUgACACEB8LCx4BAX8gAacoAiAiAgRAIAAgAikDABAlIAAgAhAfCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDeBUUNACACKAIMIgNFDQAgACADEPIDIAIpAwAhAQsgACABECUgACACEB8LC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECELIAAgAykDGCACECEgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBEGshBCACQQxrKAIARQRAAkAgAygCAARAIAQQpgUMAQsgACACKQMQECULIAAgAikDGBAlCyAAIAQQHyAGIQIMAQsLIAAgAygCEBAfIAAgAxAfCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIQsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN4FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAlIAAgAhAfCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACEB8LCykBAX8gACABpyICNQIkQoCAgICQf4QQJSAAIAI1AiBCgICAgJB/hBAlCxEAIAAgAacoAiApAwAgAhAhCxkBAX8gACABpygCICICKQMAECUgACACEB8LQQEDfwJAIAFBDxA/IgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECEgA0EBaiEDDAALAAsLQwEDfyABQQ8QPyIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJSACQQFqIQIMAQsLIAAgAxAfCwtJAQJ/IAAgAacoAiAiBCkDACACECEgACAEKQMIIAIQIQNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQISADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECUgACACKQMIECUDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAlIANBAWohAwwBCwsgACACEB8LjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECELIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALIANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIQsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAlCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD5ASACQQFqIQIMAQsLIAAgBBAfCyAAIAOtQoCAgIBghBAlCwsSACABpygCICIABEAgABCtAwsLDgAgACABpykDICACECELGQAgACABpyIAKQMgECUgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCgCJCADQQN0aikDACACECEgA0EBaiEDDAELCws8AQJ/IAGnIQMDQCACIAMoAihPRQRAIAAgAygCJCACQQN0aikDABAlIAJBAWohAgwBCwsgACADKAIkEB8LCAAgACACEB8LtwECAX8CfiMAQSBrIgMkACABQQNGBEAgAikDECEEIAIpAwghBQJAIAAgA0EQaiACKQMAEKwFQQBIBEBCgICAgOAAIQQMAQsgACAEIAVBAiADQRBqECIiBBALBEAgAyAAEJEBNwMIIAAgAykDGEKAgICAMEEBIANBCGoQIiEEIAAgAykDCBAKCyAAIAMpAxAQCiAAIAMpAxgQCgsgA0EgaiQAIAQPC0H24wBBoQ1Bu+oCQYDkABAAAAvoAQEIfyMAIgchCyABpygCICIIKAIQIglB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TwRAIAAgAKEhAAwBCyAAIAEQsAQhAiABKwMAIAErAwggAkEBcRCEBiEACyABQRBqJAAgAAutAwIBfgV/IAG9Qv///////////wCDQoCAgICAgID4/wBYQQAgAL1C////////////AINCgYCAgICAgPj/AFQbRQRAIAAgAaAPCyABvSICQiCIpyIDQYCAwP8DayACpyIGckUEQCAAEK8EDwsgAkI+iKdBAnEiByAAvSICQj+Ip3IhBAJAAkAgAkIgiKdB/////wdxIgUgAqdyRQRAAkAgBEECaw4CAgADC0QYLURU+yEJwA8LIANB/////wdxIgMgBnJFBEBEGC1EVPsh+T8gAKYPCwJAIANBgIDA/wdGBEAgBUGAgMD/B0cNASAEQQN0QaCcBGorAwAPCyAFQYCAwP8HR0EAIANBgICAIGogBU8bRQRARBgtRFT7Ifk/IACmDwsCfCAHBEBEAAAAAAAAAAAgBUGAgIAgaiADSQ0BGgsgACABo5kQrwQLIQACQAJAAkAgBA4DBQABAgsgAJoPC0QYLURU+yEJQCAARAdcFDMmpqG8oKEPCyAARAdcFDMmpqG8oEQYLURU+yEJwKAPCyAEQQN0QcCcBGorAwAPC0QYLURU+yEJQCEACyAAC8cBAQJ/IwBBEGsiASQAAnwgAL1CIIinQf////8HcSICQfvDpP8DTQRARAAAAAAAAPA/IAJBnsGa8gNJDQEaIABEAAAAAAAAAAAQ2QIMAQsgACAAoSACQYCAwP8HTw0AGgJAAkACQAJAIAAgARCwBEEDcQ4DAAECAwsgASsDACABKwMIENkCDAMLIAErAwAgASsDCEEBENoCmgwCCyABKwMAIAErAwgQ2QKaDAELIAErAwAgASsDCEEBENoCCyEAIAFBEGokACAAC7ACAwF8AX4BfwJAIAC9IgJCIIinQf////8HcSIDQYCAwP8DTwRAIAKnIANBgIDA/wNrckUNAUQAAAAAAAAAACAAIAChow8LAnwgA0H////+A00EQEQYLURU+yH5PyADQYGAgOMDSQ0BGkQHXBQzJqaRPCAAIACiENsCIACioSAAoUQYLURU+yH5P6APCyACQn9XBEBEGC1EVPsh+T8gAEQAAAAAAADwP6BEAAAAAAAA4D+iIgCfIgEgASAAENsCokQHXBQzJqaRvKCgoSIAIACgDwtEAAAAAAAA8D8gAKFEAAAAAAAA4D+iIgCfIgEgABDbAqIgACABvUKAgICAcIO/IgAgAKKhIAEgAKCjoCAAoCIAIACgCw8LRAAAAAAAAAAARBgtRFT7IQlAIAJCf1UbC4cBAwF+AX8BfCAAvSIBQv///////////wCDvyEAAkACfCABQjSIp0H/D3EiAkH9B00EQCACQd8HSQ0CIAAgAKAiAyADIACiRAAAAAAAAPA/IACho6AMAQsgAEQAAAAAAADwPyAAoaMiACAAoAsQsANEAAAAAAAA4D+iIQALIAAgAJogAUJ/VRsLngEDAnwBfwF+RAAAAAAAAOA/IACmIQIgAL1C////////////AIMiBL8hAQJAIARCIIinIgNBwdyYhARNBEAgARCkAiEBIANB//+//wNNBEAgA0GAgMDyA0kNAiACIAEgAaAgASABoiABRAAAAAAAAPA/oKOhog8LIAIgASABIAFEAAAAAAAA8D+go6CiDwsgAiACoCABEIcGoiEACyAACwUAIACZCwUAIACfC94BAgF/An4gAL0iAkL///////////8AgyIDvyEAAkAgA0IgiKciAUHrp4b/A08EQCABQYGA0IEETwRARAAAAAAAAACAIACjRAAAAAAAAPA/oCEADAILRAAAAAAAAPA/RAAAAAAAAABAIAAgAKAQpAJEAAAAAAAAAECgo6EhAAwBCyABQa+xwf4DTwRAIAAgAKAQpAIiACAARAAAAAAAAABAoKMhAAwBCyABQYCAwABJDQAgAEQAAAAAAAAAwKIQpAIiAJogAEQAAAAAAAAAQKCjIQALIAAgAJogAkJ/VRsLgwIDAXwCfwF+IAC9IgRCIIinQf////8HcSICQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiEDAkAgAkH//z9NBEBBk/H9ywIhAyAARAAAAAAAAFBDor0iBEIgiKdB/////wdxIgJFDQELIAAgBEKAgICAgICAgIB/gyACQQNuIANqrUIghoS/IgEgAaIgASAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAGivUKAgICACHxCgICAgHyDvyIAIACioyIBIAChIAAgAKAgAaCjIACiIACgIQALIAALngMCA34CfyMAQSBrIgkk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IG92ZXJoZWFkLCAlMC4xZiBhdmVyYWdlIHNsYWNrKQoAbWVtb3J5IHVzZWQAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYXRvbSkKAGF0b21zACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIHN0cmluZykKAHN0cmluZ3MAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgb2JqZWN0KQoAb2JqZWN0cwAgIHByb3BlcnRpZXMAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc2hhcGUpCgAgIHNoYXBlcwAlLTIwcyAlOGxsZCAlOGxsZAoAYnl0ZWNvZGUgZnVuY3Rpb25zACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZ1bmN0aW9uKQoAICBieXRlY29kZQAgIHBjMmxpbmUAJS0yMHMgJThsbGQKAEMgZnVuY3Rpb25zAGFycmF5cwAgIGZhc3QgYXJyYXlzACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZhc3QgYXJyYXkpCgAgIGVsZW1lbnRzAGJpbmFyeSBvYmplY3RzAG91dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wHALgAAkC8AAFAwAACwMAAAADEAAFAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0LhTFjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQAcy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAAAADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdAB0b28gbWFueSBhcmd1bWVudHMAc3RyaW5nIGV4cGVjdGVkAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdmFsdWUgaXMgbm90IGl0ZXJhYmxlACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikASlNfTmV3U3ltYm9sRnJvbUF0b20AZGVzY3IgPCBydC0+YXRvbV9zaXplAG5vdCBhIHN5bWJvbABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzcyBmaWVsZCAnJXMnIGFscmVhZHkgZXhpc3RzAFsAXQBnZXQgAHNldCAAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGItPmZ1bmNfa2luZCA9PSBKU19GVU5DX05PUk1BTABqc19vcF9kZWZpbmVfY2xhc3MAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABzZXR0ZXIgaXMgZm9yYmlkZGVuAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGludmFsaWQgJ2luJyBvcGVyYW5kAG5vdCBhIGNvbnN0cnVjdG9yACAgICBhdCAlcwA6JWQAPGFub255bW91cz4AICglcwAgKG5hdGl2ZSkAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwAuAC4uAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAGV2YWwgaXMgbm90IHN1cHBvcnRlZABjaXJjdWxhciByZWZlcmVuY2UAZ2V0ICVzAHNldCAlcwBjYW5ub3QgY29udmVydCB0byBvYmplY3QAbm9ybWFsaXplAEHAzgAL9QEsJwAAAwAAAAAAAAB0AAAAYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwAlcwBmbGFncwBzb3VyY2UAZ2xvYmFsAGlnbm9yZUNhc2UAbXVsdGlsaW5lAGRvdEFsbAB1bmljb2RlAHN0aWNreQBleGVjAGNvbXBpbGUAdGVzdAB0b1N0cmluZwBbU3ltYm9sLnJlcGxhY2VdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnNwbGl0XQBBwNAAC+ADiycAAAEBAAB1AAAAAAAAAJEnAAABAQAAdgAAAAAAAACYJwAAAQIBAHcAAAAAAAAAnycAAAECAgB3AAAAAAAAAKonAAABAgQAdwAAAAAAAAC0JwAAAQIIAHcAAAAAAAAAuycAAAECEAB3AAAAAAAAAMMnAAABAiAAdwAAAAAAAADKJwAAAwAAAAEAAAAwAAAAzycAAAMAAAACAAAAeAAAANcnAAADAAAAAQAAAHkAAADcJwAAAwAAAAAAAAB6AAAA5ScAAAMAAAACAAAAewAAAPYnAAADAAAAAQAAAHwAAAAFKAAAAwAAAAEAAAB9AAAAFygAAAMAAAABAAAAfgAAACcoAAADAAAAAgAAAH8AAAAoPzopAG91dCBvZiBtZW1vcnkgaW4gcmVnZXhwIGV4ZWN1dGlvbgBmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAbm90IGEgc3RyaW5nAHkAW1N5bWJvbC5zcGVjaWVzXQDPKQAAAQEAAIAAAAAAAAAAbmV4dABbU3ltYm9sLnRvU3RyaW5nVGFnXQBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEGw1AAL1wrwKQAAAwAAAAAMAACBAAAA9SkAAAEDAAAKKgAAAAAAAHVuZXhwZWN0ZWQgZW5kIG9mIGNvbW1lbnQAdW5leHBlY3RlZCBjaGFyYWN0ZXIAaW52YWxpZCBjaGFyYWN0ZXIgaW4gYSBKU09OIHN0cmluZwBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGludmFsaWQgVVRGLTggc2VxdWVuY2UAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwBleHBlY3RpbmcgJyVjJwAgAFx1JTA0eABBcnJheSBsb28gbG9uZwBKU09OAAAAAAAAAACkKwAAAwgAANArAAADAAAAcGFyc2UAc3RyaW5naWZ5AMArAAADAAAAAgAAAIIAAADGKwAAAwAAAAMAAACDAAAA9SkAAAEDAACkKwAAAAAAAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAaW52YWxpZCBnZXR0ZXIAaW52YWxpZCBzZXR0ZXIAY2Fubm90IGhhdmUgc2V0dGVyL2dldHRlciBhbmQgdmFsdWUgb3Igd3JpdGFibGUAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzAHByb3h5OiBwcm9wZXJ0eSBub3QgcHJlc2VudCBpbiB0YXJnZXQgd2VyZSByZXR1cm5lZCBieSBub24gZXh0ZW5zaWJsZSBwcm94eQBwcm94eTogaW5jb25zaXN0ZW50IGRlbGV0ZVByb3BlcnR5AHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGhhcwBwcm94eTogaW5jb25zaXN0ZW50IGdldABwcm94eTogaW5jb25zaXN0ZW50IHNldABwcm94eTogY2Fubm90IHNldCBwcm9wZXJ0eQByZXZvY2FibGUAVi4AAAMAAAACAAAAhAAAAHNldABnZXQAaGFzAGRlbGV0ZQBjbGVhcgBzaXplAGZvckVhY2gAdmFsdWVzAGtleXMAZW50cmllcwBbU3ltYm9sLml0ZXJhdG9yXQBNYXAAcC4AAAMAAAACAQAAhQAAAHQuAAADAAAAAQEAAIYAAAB4LgAAAwAAAAEBAACHAAAAfC4AAAMAAAABAQAAiAAAAIMuAAADAAAAAAEAAIkAAACJLgAAAQIAAIoAAAAAAAAAji4AAAMAAAABAQAAiwAAAJYuAAADAAQAAAEAAIwAAACdLgAAAwAAAAABAACMAAAAoi4AAAMACAAAAQAAjAAAAKouAAADCQAAoi4AAP/////1KQAAAQMAALwuAAAAAAAAYWRkAFNldABBkN8AC7cBgC8AAAMAAQABAQAAhQAAAHguAAADAAEAAQEAAIcAAAB8LgAAAwABAAEBAACIAAAAgy4AAAMAAQAAAQAAiQAAAIkuAAABAgEAigAAAAAAAACOLgAAAwABAAEBAACLAAAAli4AAAMAAQAAAQAAjAAAAJ0uAAADCQAAli4AAP////+qLgAAAwkAAJYuAAD/////oi4AAAMACQAAAQAAjAAAAPUpAAABAwAAhC8AAAAAAABXZWFrTWFwAEHQ4AALV3AuAAADAAIAAgEAAIUAAAB0LgAAAwACAAEBAACGAAAAeC4AAAMAAgABAQAAhwAAAHwuAAADAAIAAQEAAIgAAAD1KQAAAQMAAEAwAAAAAAAAV2Vha1NldABBsOEAC4IDgC8AAAMAAwABAQAAhQAAAHguAAADAAMAAQEAAIcAAAB8LgAAAwADAAEBAACIAAAA9SkAAAEDAACgMAAAAAAAAE1hcCBJdGVyYXRvcgAAAADwKQAAAwAAAAAMAACNAAAA9SkAAAEDAADwMAAAAAAAAHMgIT0gTlVMTABqc19tYXBfaXRlcmF0b3JfbmV4dABTZXQgSXRlcmF0b3IAAAAAAPApAAADAAEAAAwAAI0AAAD1KQAAAQMAAD8xAAAAAAAAc2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgAAAAAAAADPKQAAAQEAAIAAAAAAAAAAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb21pc2Ugc2VsZiByZXNvbHV0aW9uAGFyZ2MgPT0gNQBwcm9taXNlX3JlYWN0aW9uX2pvYgBhcmdjID09IDMAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgB0aGVuAGNhdGNoAGZpbmFsbHkAQcDkAAtmIDIAAAMAAAACAAAAjgAAACUyAAADAAAAAQAAAI8AAAArMgAAAwAAAAEAAACQAAAA9SkAAAEDAAAsDgAAAAAAAHJlc29sdmUAcmVqZWN0AGFsbABhbGxTZXR0bGVkAGFueQByYWNlAEGw5QAL1gGAMgAAAwAAAAEBAACRAAAAiDIAAAMAAQABAQAAkQAAAI8yAAADAAAAAQEAAJIAAACTMgAAAwABAAEBAACSAAAAnjIAAAMAAgABAQAAkgAAAKIyAAADAAAAAQAAAJMAAADPKQAAAQEAAIAAAAAAAAAAcmVqZWN0ZWQAZnVsZmlsbGVkAGFzeW5jIABmdW5jdGlvbgAgYW5vbnltb3VzKAAKKSB7CgAKfSkAAAAAAAAAAPUpAAABAwAANA4AAAAAAABbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAEGQ5wALkwhwMwAAAwAAAAAAAACUAAAAcmV0dXJuAHRocm93AAAAAPApAAADAAAAAQEAAJUAAACgMwAAAwABAAEBAACVAAAApzMAAAMAAgABAQAAlQAAAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAQXN5bmNHZW5lcmF0b3IAAPApAAADAAAAAQEAAJYAAACgMwAAAwABAAEBAACWAAAApzMAAAMAAgABAQAAlgAAAPUpAAABAwAAADQAAAAAAABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AEpTX0lzVW5kZWZpbmVkKGZ1bmNfcmV0KQBqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0FXQUlUSU5HX1JFVFVSTiB8fCBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQ09NUExFVEVEAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXNvbHZlX2Z1bmN0aW9uAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAAPUpAAABAwAAQg4AAAAAAAB2YWx1ZU9mAFtTeW1ib2wudG9QcmltaXRpdmVdAHRvVVRDU3RyaW5nAHRvR01UU3RyaW5nAHRvSVNPU3RyaW5nAHRvRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdG9Mb2NhbGVEYXRlU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwBnZXRUaW1lem9uZU9mZnNldABnZXRUaW1lAGdldFllYXIAZ2V0RnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAZ2V0TW9udGgAZ2V0VVRDTW9udGgAZ2V0RGF0ZQBnZXRVVENEYXRlAGdldEhvdXJzAGdldFVUQ0hvdXJzAGdldE1pbnV0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b2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAG1pc3NpbmcgZm9ybWFsIHBhcmFtZXRlcgBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGdldHRlciBvciBzZXR0ZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACgpe3N1cGVyKC4uLmFyZ3VtZW50cyk7fQAoKXt9AGR1cGxpY2F0ZSBfX3Byb3RvX18gcHJvcGVydHkgbmFtZQB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZAB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AmpucnZ6goaKtrq+fY2Fubm90IG1peCA/PyB3aXRoICYmIG9yIHx8AHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBpbmNyZW1lbnQvZGVjcmVtZW50IG9wZXJhbmQAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudAB1cGRhdGVfbGFiZWwAbHMtPnJlZl9jb3VudCA+PSAwAGludmFsaWQgcHJvcGVydHkgbmFtZQBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dAB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGludmFsaWQgbGV4aWNhbCB2YXJpYWJsZSBuYW1lAHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVAgfHwgc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUF9ERVBUSABwdXRfbHZhbHVlAHNldF9vYmplY3RfbmFtZQAidXNlIHN0cmljdCIgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gd2l0aCBkZWZhdWx0IG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpZGVudGlmaWVyIGV4cGVjdGVkAGludmFsaWQgZXhwb3J0IHN5bnRheABmcm9tIGNsYXVzZSBleHBlY3RlZAAnbGV0JyBpcyBub3QgYSB2YWxpZCBsZXhpY2FsIGlkZW50aWZpZXIAbWlzc2luZyBpbml0aWFsaXplciBmb3IgY29uc3QgdmFyaWFibGUAdmFyaWFibGUgbmFtZSBleHBlY3RlZABleHBlY3RpbmcgJ2FzJwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBkdXBsaWNhdGUgbGFiZWwgbmFtZQByZXR1cm4gbm90IGluIGEgZnVuY3Rpb24AbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBkdXBsaWNhdGUgZGVmYXVsdABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAaW52YWxpZCBrZXl3b3JkOiB3aXRoAGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0ACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyAG9mAGluAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAHVuc3VwcG9ydGVkIGtleXdvcmQ6ICVzAGNwb29sX2lkeCA+PSAwAGpzX2NyZWF0ZV9mdW5jdGlvbgBzLT5pc19ldmFsIHx8IHMtPmNsb3N1cmVfdmFyX2NvdW50ID09IDAAYWRkX2V2YWxfdmFyaWFibGVzAGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcmVzb2x2ZV92YXJpYWJsZXMAbGFiMSA+PSAwICYmIGxhYjEgPCBzLT5sYWJlbF9jb3VudABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAcy0+bGFiZWxfc2xvdHNbbGFiZWxdLmZpcnN0X3JlbG9jID09IE5VTEwAc2tpcF9kZWFkX2NvZGUAcmVzb2x2ZV9sYWJlbHMAbHMtPmFkZHIgPT0gLTEAZGlmZiA9PSAoaW50MTZfdClkaWZmAGRpZmYgPT0gKGludDhfdClkaWZmAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAZmluZF9qdW1wX3RhcmdldABpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHVuY29uc2lzdGVudCBzdGFjayBzaXplOiAlZCAlZCAocGM9JWQpAG5hbWUAbWVzc2FnZQAAAADcJwAAAwAAAAAAAACjAAAA0E0AAAMDAABuDgAAAAAAANVNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNT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AQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQdTfAQuRBBAAAAD+//+H/v//BwAAAAAQAP8D/v//h/7//wdleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHN0YWNrIG92ZXJmbG93AHN5bnRheCBlcnJvcgBub3RoaW5nIHRvIHJlcGVhdABpbnZhbGlkIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cAB0b28gbWFueSBjYXB0dXJlcwBleHBlY3RpbmcgZ3JvdXAgbmFtZQBncm91cCBuYW1lIG5vdCBkZWZpbmVkAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA4HEAAKBvAADwcQAAAQAwADoAQfDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGVjX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBwOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUC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LFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEGAnwILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHABiHABgXABgnAGgnADgXAAhHABkXAJgY4AhY4Cgo4Ag44CgY4AgI4AgY4CgY4Cgo4Ci44DhI4Cgo4Ag44BgI4FgI4NlI4EjJAAgpAAlpAAj5ACh5AAgpAAg5AGgZAAgpAEg5ABiZAGiJCMPACCPACWPACJPACEPAGIPACCPACDPAaBPAaAPACDPAGJPACBPAyMTwCCTwCyTwCCTwCFTwOPTwGZTwCCgQCRgQKXgQCIgQCAgQGGgQKAgQOFgQCAgQCHgQWJgQGCgQu5kgOAGZuSJIFEAIBEAIREAJdEAIBEAJZEAYREAIBEAIVEAYlEAYNEH8eTAKOTA6aTAKOTAI6TAIaTgxmBkyTgP16lJwCAJwSAJwGqJ4AZgyfgnzDIJgCDJgGGJgCAJgCDJgGoJgCDJgGgJgCDJgGGJgCAJgCDJgGOJgC4JgCDJgHCJgGfJgKZJgXVFwGFFwHiHxKcZgLKeoIZinoGjIgAhogKlDKBGQiTEQuMiQCCiQCBiQvdQAGJQAWJQAWBW4EZgFuAGYhbAIlbBdhbBqpbBMUSCZ5HAItHA4tHA4BHAotHnYoBhIoKq2EDmWEFimECgWGfQJsQAYEQvosAnIsBiosFiYsFjYsBkDc+ywcDrAcCv4WzCgeDCrdGAo5GAoJGr2eIHQaqJwGCJ4eFB4I3gBmMN4AZhjeDGYA3hRmAN4IZgTeAGQSlRYQrgB2wRYQrg0WEK4xFgB3FRYAruTcAhDfgn0WVKwGFKwGlKwGFKwGHKwCAKwCAKwCAKwCeKwG0KwCOKwCNKwGFKwCSKwGCKwCIKwCLGYE31hkAihmARQGKGYBFjhkAjEUCnxkPoDcOpRmAK4IZgUWFGYBFmhmARZAZqEWCGQPiNhkYihkU4z8Z4J8P4hMZAZ8ZAOAIGa4oAK4oAJ9F4BMaBIYapScAgCcEgCcBt5QGgZQNgJSWJgiGJgCGJgCGJgCGJgCGJgCGJgCGJgCGJgCfHdIZLJkvANgvC+B1LxmLGQOEGYAvgBmAL5gZiC+DN4EwhxmDL4MZANU1AYE3gRmCNYAZ2T2BGYI9BKoNAN0wAI8Znw2jGQuPPZ4wAL8ZnjDQGa49gBnXPeBHGfAJXy+/GfBBnC8C5CybArabCK9K4MuXE98d1wgHoRngBUWCGbRFAYhFKYpFrIYCiRkFt3YHxXwHi3wFnx+tPoAZgD6jeQqAeZwwAs06AIAZiToDgTqeXgC2FgiNFgGJFgGDFp9ewowXhIyWVQmFJgGFJgGFJgiGJgCGJgCqRYAZiEWAK4NFgRkDzxetVQGJVQXwG0MwC5YwA7AwcBCj4Q0vAeAJLyWGRQuEBQSZNACENACANACBNACBNACJNOARBBDhCgSBGQ+/BAG1BCeNBAGPN4kZBY03gR2iGQCSGQCDGQOEBADgJgQBgBkAnxmZRYUZmUWKGYk9gBmsPYEZnjAChTABhTABhTABgjAChhkAhhkJhBkBi0kAmUkAkkkAgUkAjkkBjUkh4BpJBIIZA6wZAogZzisAjBkCgCsurBmAN2AhnEsCsBMOgDeaGQOjaQiCaZopBKprBJ2WAICWo2wDjWwpzx6vfp1yAYlyBaNxA6NxA6ckB7MUCoAUYC/g1kgIlUgJh0hgN4UcAYAcAKscAIEcAoAcAYAclTYAiDafdJ5fB4hfL5IzAIEzBIQzm3cCgHeZTASATD+fWJdXA5NXAa1Xgz8AgT8Ehz8Agj8AnD8Bgj8DiT8GiD8Gn26fah+mUQOLUQi1BgKGBpU5AYc5kjgEhziReAaDeAuGeE/IbzayaAyyaAaFaKcxB4kxYMWeBACpmgCCmgGBmk2nbQepglWbGBOWJQjNDgOdDg6ADsE7CoA7AZiDBomDBbQVAJEVB6ZOCN99AJOBCpFBAKtBQIZdAIBdAINdAI5dAIpdBbpDBIlDBYMqAIcqAYEqAZUqAIYqAIEqAIQqAIA3iCoBgSoBgioBgCoFgCoEhioBhioChCpgKttiAIRiHceVB4mVYEW1fwGlfyHEWgqJWgWMWxK4jQaJjTWaAgGOAgOPAmBfuyFgA9KZC4CZhiABgCABhyAAgSAAnSAAgSABiyAIiSBFh2ABrWABimAax5wH0oQcuHVgpogMAKwMAI0MCZwMAp9SAZVSAI1SSIZTAIFTAKtTAoBTAIFTAIhTB4lTBYUtAIEtAKQtAIEtAIUtBoktYNWYTWBWgEoOsY4MgI7jORtgBeAOGwCEGwrgYxtqW+POIwCII29m4eYDcBFY4dgIBp5cAIlcA4FcX50JAYUJCcVzCYlzAIZzAJRzBJJzYk/aVGAEylkDuFkGkFk/gI+AZIEZgEIKgS8N8AeXjwfin4/hdUIpiI9wEpaAPeC9NTCCNRCDPQfhK2Roo+AKIgSMIgKIIgaJIgGDIoMZcAL74JUZCaYZAb0ZgjeQGYc3gRmGN50Zgze6GRbFK2A5kxkL1hkImBlgJtQZAMYZAIEZAYAZAYEZAYMZAIsZAIAZAIYZAMAZAIMZAYcZAIYZAJsZAIMZAIQZAIAZAoYZAODzGQHgwxkBsRniK4AOhIAAjoBk74YoAJAoAYYoAIEoAIQoYHSsZQKNZQGJZQOBZWEPuZgEgJhkn+BkVgGPVijLAQOJAQOBAWKwwxlLvBlgYYMEAJoEAIEEAIAEAYAEAIkEAIMEAIAEAIAEBYAEA4AEAIAEAIAEAIIEAIEEAIAEAYAEAIAEAIAEAIAEAIAEAIEEAIAEAYMEAIYEAIMEAIMEAIAEAIkEAJAEBIIEAIQEAJAEM4EEYK2rGQPgAxkLjhkBjhkAjhkApBkJ4E0ZN5kZgDWBGQyrGQOIGQaBGQ2FGWA543cZB4wZAowZAuATGQvYGQaLGROLGQO3GQeJGQWnGQedGQGBGU3gGBkA0RkA4CYZC40ZAYQZAoIZBIYZCJgZBoYZCIIZDIYZKOAyGQC2GSSJGWOl8JZ9LyHv1C8K4H0vAfAGIS8N8AzQL2u+4b0vZYHwAuovetxVgBkd3xlgH+CPNwBBwLMCC7ILgsEAAAErAQAAASscAAwBRYCSAAACHWsAAh0oAQIdRQACHSiBAwAABQQxh5GaDQAABQQxh5GaAAMEh5EBAAAFBDGHkZofAAAIAQRQUXgxgocJAAoCBIcJAAkDBJGaBQAAAgSHYgAAAgQxgfsAAA0LHyosLjxFT3B9jpCVAAwLHyosLjxFT3COkJUQAAAUCx8hLVMqLC48Tk9gcEOBho2OkJUAFQsfIS1TKiwuPEdOT2BwQ4GGjY6QlQkEHyE7TnUACQMLFYZ1AAkCLl11AAkCLEGAdQANAiqOgHEACQI8YILPAAkDFV6KgDAAAAInRYW4AAEEETKJiIBKAAECW3YAAAACW3aESQAABAsfKjwAAR8ABAsfKjwAAh8qAAEfAQILHwACH30AAgsfAAIffQAGHzxPcI6QAAEfAQIffQEBHwACH30AAgsfBgEfAAIfYAACCx8BAR8AAgsfAwEfAAgLHyo8YHCQlQACHyoAAx8qPAECCx8AAQsBAh8qAAFggEQAAQErNQAAAh2HgbUAAAJFW4A/AAADHypFjNEAAAIdKIE8AAEGDTAvNT2bAAUNMC81PQEAAAEvAAAJBg0wLzU9mwAAAAUNMC81PQcGDTAvNT2bAwUNMC81PQkAAwINLwEAAAUNMC81PQQCNT0AAAAFDTAvNT0DAAEDLzU9AQEvWAADAjU9AgAAAjU9WQAABg0wLzU9mwACNT2AEgAPAS8fACMBLzsAJwEvNwAwAS8OAAsBLzIAAAEvVwAYAS8JAAQBL18AHgEvwDHvAAACHSiADwAHAi9FgKcAAg4fISwuQTw7Tk9aYEONlQINHyEsLkE8O05aYEONlQMLHyEsLkE7TlpDjZWANgAAAgsfAAAAAh+OOQAAAz5FXoAfAAACEDrAE6EAAAIEkQkAAAIEkUYAAQUNMC81PYCZAAQGDTAvNT2bCQAAAjU9LAABAjU9gN8AAgIcSQMALAMcSEkCAAgCHEmBHwAbAgQaj4QAAAIqjgAAAAIqjjYAAQIqjowSAAECKo4AAAACKo7AXEsAAwEiljsAEQEvnl0AAQEvzs0tAABDbixVbmFzc2lnbmVkAEx1LFVwcGVyY2FzZV9MZXR0ZXIATGwsTG93ZXJjYXNlX0xldHRlcgBMdCxUaXRsZWNhc2VfTGV0dGVyAExtLE1vZGlmaWVyX0xldHRlcgBMbyxPdGhlcl9MZXR0ZXIATW4sTm9uc3BhY2luZ19NYXJrAE1jLFNwYWNpbmdfTWFyawBNZSxFbmNsb3NpbmdfTWFyawBOZCxEZWNpbWFsX051bWJlcixkaWdpdABObCxMZXR0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEGAvwILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZCxDV0NGAENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkLENXQ00AQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWQsQ1dMAENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQsQ1dLQ0YAQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWQsQ1dUAENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkLENXVQBHcmFwaGVtZV9CYXNlLEdyX0Jhc2UAR3JhcGhlbWVfRXh0ZW5kLEdyX0V4dABJRF9Db250aW51ZSxJREMATG93ZXJjYXNlLExvd2VyAE1hdGgAVXBwZXJjYXNlLFVwcGVyAFhJRF9Db250aW51ZSxYSURDAFhJRF9TdGFydCxYSURTAEHAxwILtCCBACgAlwAqAIGAKgCXwCsAFYEsAJcALQCBQC0AlwAuABVBLgCZAS8AFiAwAEIIQABCikQAQgRKAJYATAAXgUwAQgJNAEJDTgAvwU8AQsNQAL9AUgBCA1MAQglVAEIIWgCWAF4AQkNeAIHAXwBCAWgAQsFrAIUBcQAXw3EAREhzAESDdwBCg3kAvgJ7AJdBfABCAX0ARAR+AEIOgABCgYcARIeJAIMErAAXA7YAgwK4ABQC0ACWANEAgADdAJeA3gCAgN8AlwDhAD5B4QCAwOEAvgTiAK6D6gCugvIArQH0AC7B9AADQfUAAwP8AIFA/gA+AgABvsABAb4BAwG+QAYBvkAOAT4CFAG+wBUBvgEXAUSBHQFEQTABRAI0AUSBNQFEgzYBRIM4AUSGOgFEAT4BhcBhAa6CiAEvQp0BhAGwAYTAtAGEQEoChEBMAoQATQIuBFYCLsFyAiABdwKEwHcChMCMAoSAjQKuQZYChICXAoQA0gIuwdICIAHXAoQA5QKugfIChAASA4QAMAMiwTEDLoEyA66BUgOEgHYDrgF3A4XAjAOFwKwDLwG3A4EAwwOEwNADhEDTA4SA1AOEwNUDhADXA4RA2gOEwNwDLkHdA4XA3QOEAN4DhUDeA4RA4AOEwOQDhEDnA4SA6AOEwOkDhADrA4RA7gOEgAkEgQA/BISEwQaEgMQGhMHOBiAB0AaEwNAGgwNLBx/ETAeDF08HgQBeB4PSZgdEHYAHQomOB0QYkwdCDZ8HFoKlB4WApge+wKYHRA2oB0SgrgciAcAHRIPAByIBwgdEg8IHIgHEB0SCxAciAcYHRILGBz4RyAdEgtAHIgHSB0SC0gciAdQHRIPUBz5M1geAQNwHvoDcB4DA3Ae+AN0HgEDdB76A3QeAwN0HvgDeB4BA3ge+gN4HgMDeB74A3weAQN8HIAjgByAI5AcgCOgHvgXsB4DA7ge+AO8Hl0DvB4CA7wcXwe8HPkTwB4BA8ge+gPIHgMDyB74D8weAwPQHroL1B4DA9gc+Q/cHgMD4B64D+QeAwPoHPgH7BwKB+we+g/wHgED+B76A/geAwP4HvgD/B4BA/weXgP8HHgEACJWEAAiBQAQIl8AFCIEACQiXQAkImYAJCIHACwiFwAwIsQANCIWADQixwA0IlwEPCJfBEQizwBUIgcAXCJUFHAiBwB4IFQIfCB8FIAiDhSIIFUQlCJcAKggZAUAIgYBACL/AQAgZQUEIgcBBCL9AQggthUIIgUBFCJeARQiVQkYIlwBICJlASAiXgEgIgQBJCICASQiBAEoIAoFKCJUESwgfQk0IgUBOCJnATgiDAk8IlUJRCBkBVAibgFQIGcZUCJfAVwiBAFgIl0BYCJmAWAiXwFgIgQBZCJdAWQiZgFkIm8BZCJcAWgiBQFoIl4BaCJnAWgiVAlsIl0BcCJmAXAiXwFwIgQBdCJdAXQiZgF0Im8BdCJcAXgiBQF4Il4BeCJnAXggVAl8ImUBiCD6BZgi+gGsIvkFzCL4AgQi+QIIIvgCDCL4BiQiFAIsIsUCLCIXAiwixAIwIvkCQCL4AkQi+wZEIvgGYCL5CmwhEAZ0IRAGeCEQBoAhEAaEIRAGiCD4CqwhEArgIIIK6CB5BygifBBgJI0UaCZfAHAmlBB0JK0UfCZvAIQmhBCIJJUUkCZnAJgklDScJH40tCR8NNAmBgDoJswCDCpkAnQqXQJ0KmYCdCr4AtwoVAR8LgcBbC4HApwuBwLwLrQTAC61EwguthMQLg/PGCy2F4AsDHeMLLYjxC4EAAAyDgg0MhAsTDIRCGQwiARwMIsEcDCKBHQwiQR4MIgEfDIQAJQwjwSYMhIAnDIXAJwyECysMhEIxDCIBNAwiwTQMIoE1DCJBNgwiATcMhAA9DCDCPQyEgD8MhcA/DC1KTAwfRVEMn8pTDK0VWQwDh2QMQQeADImAgwwpwYMMqUGEDIkAhQwpQYUMqcKFDIkAhwyPQIcMjYCHDEESiAwDApEMmQCUDKNElAwjg5YMLQeYDK+Emwyhwp0MtQCfDLNAnwyFgJ8MgxigDCNCrAwjRa0Ml8CvDKEEsAylQbIMlwCzDJlAswyXgLMMmcCzDK0XtAyFwL8MswHADLHAwAyzAMEMMUHBDLXAwQyzAMIMsUHCDDMBwwwxgcMMhQDEDLFAxAwzgcQMhQDFDLVAxQy3gMUMtcDFDLEAxgw1QcYMs8DGDLEBxwyzwMcMtQDIDLNAyAyxgcgML0LJDDFBygy1wMoMsQDLDLNAywy1gMsMscDLDC8BzAy1gMwMs8DMDLUAzQyxQM0MtYDNDIXAzQyxAs4Ms0DPDLGAzwyFwM8MsQHQDLPA0AyxAdEMtcDRDLMA0gyFQNIMtYDSDIXA0gwzAdMMsYHTDLNA1AyFgNQMscDUDLMA1QyFQNUMtYDVDLHA1QwhBdYMJYXYDKUC2wyZQNwMF4HcDJkA3QyXQd0MJwHeDIWC3gyJwN8MPwTgDJkA4gybQOIMv4PiDBlC5AwFQuUMP0PmDDHB5wyFQOgMsYHoDIVA6QwHgekMiQDqDJdA6gwZguoMnYDrDI3A6ww/COwMBQHwDJuA8AyXwfAMm4DxDJnA8QwXBfIMmYD0DBfB9AwZQfUMl8D1DJsA9gyZQPYMF4L2DBmB9wyhBPgMJUX6DCXF/AwlQf8MmcD/DAMBpymBANwpAwH+KQMC1yqBQNoqghRAPoJ/Sj6CP2o+AqGKPhABmz6CL5w+kMWzPpcBwD4ZwcA+P0HBPq/CxD6EQcc+rQTIPoFAyj4Eg8o+oAPMPqACzj6EgM8+IAHQPiDB0D6uhNE+hcDTPi0x1D6ty/Q+L4n6Pi0C/z4vLwA/pYIXP7HAGD+vBxk/r/8cP6WBPD+vZD0/MSBUPzGbZD8xAXw/s4N8P7FAfj+9gH4/u8B+P7MAfz8DBYQ/rQGMPxXDjD8tRo4/A8yRP5XGlz+vAZw/hQCdPy+FnT+tOqA/L0S9Px9vwD8fwdc/rV/YP4EA6D8fT+g/H4PwPx+D8j8fg/Q/n4H2P4MH+D+SgSZEksAqRBKBS0QSwdJEEsIuRRKBbkWSAE5GkoNXdBLDbnQfDQB1H40GdR8NDXWfgxN1H4kVdR8NGnUfjSB1FRAndZ9DL3WfRTF1Hw00dR+NOnWVA0F1H0RDdZ+DRXUfjUd1lQdOdZ+DUnUfjVR1Hw1bdR+NYXUfDWh1H41udR8NdXUfjXt1Hw2CdR+NiHUfDY91H42VdR8NnHUfjaJ1AwGpdZ8IqnWBQK51n4OudYFAsHWfjLB1gcC2dS0Dt3WfiLh1gcC8dZ8DvXWBwL51nwy/dYFAxXUtg8V1nwjHdYFAy3Wfg8t1gUDNdZ+MzXWBwNN1LQPUdZ+I1XWBwNl1nwPadYHA23WfDNx1gUDidS2D4nWfCOR1gUDodZ+D6HWBQOp1n4zqdYHA8HUtBPF1H4XzdR8F9nUfhfh1HwX7dR+F/XUtAoB7rU2BewNCiHuBwIl7LUWKewMEjXuBgJB7A9yRey0FoHutyKJ7g0Soe63IqnuXAEB8IUVAfCUNRHyHgEp8FcFKfBdBS3wfDUx8F4JSfJmAU3yXwFN8l4FafJcAZHwvAYB8gYCAfAMWhHzBBJB8AwGUfB8F/H6sAQC+ENEAvqxHCb4QOQ2+LIcpviwCLb6QNy6+kP9JvhC8ab4AAAAAAAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5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";if(!S(T)){var ka=T;T=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){var a=T;try{if(a==T&&v)return new Uint8Array(v);if(S(a))try{var c=ma(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting base64 string to bytes failed.");}else e=void 0;var f=e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){w(g);}}function na(){return v||"function"!==typeof fetch?Promise.resolve().then(function(){return la();}):fetch(T,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+T+"'";return a.arrayBuffer();}).catch(function(){return la();});}function V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function W(a){var c=L(a)+1,d=M(c);D(a,E,d,c);return d;}function oa(){}var pa=[null,[],[]];function qa(){function a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!ra){ra=!0;var c=new Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[sa()>>2]=60*g;N[ta()>>2]=Number(c!=f);d=a(d);e=a(e);d=ba(d);e=ba(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d);}}var ra;oa=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null;}catch(e){return b.HEAPU8[d]=1,W(e.message);}};var ma="function"===typeof atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return c;},ua={a:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},b:function(){w();},g:oa,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},e:function(a){var c=E.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{x.grow(Math.min(2147483648,e)-ca.byteLength+65535>>>16);da();var f=1;break a;}catch(g){}f=void 0;}if(f)return!0;}return!1;},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){for(var k=N[c+8*g>>2],m=N[c+(8*g+4)>>2],y=0;y<m;y++){var l=E[k+y],p=pa[a];0===l||10===l?((1===a?aa:u)(K(p,0)),p.length=0):p.push(l);}f+=m;}N[e>>2]=f;return 0;},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0;},h:function(a,c){qa();a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+(a?4:0)>>2];N[c+40>>2]=a;return c;},i:function(a){a=H(a);window.console.log(a);},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){b.asm=f.exports;x=b.asm.k;da();O=b.asm.t;fa.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()));}function c(f){a(f.instance);}function d(f){return na().then(function(g){return WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);w(g);});}var e={a:ua};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!==typeof WebAssembly.instantiateStreaming||S(T)||"function"!==typeof fetch?d(c):fetch(T,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(n);return{};})();b.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments);};b._init=function(){return(b._init=b.asm.o).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments);};var M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments);};b._free=function(){return(b._free=b.asm.s).apply(null,arguments);};var X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},ta=b.__get_daylight=function(){return(ta=b.__get_daylight=b.asm.v).apply(null,arguments);},sa=b.__get_timezone=function(){return(sa=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(null,arguments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return B(a,c,d,arguments,e);};};b.stringToNewUTF8=W;var Y;R=function va(){Y||Z();Y||(R=va);};function Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(fa);V(ha);h(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();ia.unshift(c);}V(ia);}}if(!(0<P)){if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);0<P||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();return Module.ready;};}();var _default=Module;exports.default=_default;
|
41 |
+
|
42 |
+
/***/ }),
|
43 |
+
/* 2 */
|
44 |
+
/***/ ((__unused_webpack_module, exports) => {
|
45 |
+
|
46 |
+
|
47 |
+
|
48 |
+
class SandboxSupportBase {
|
49 |
+
constructor(win) {
|
50 |
+
this.win = win;
|
51 |
+
this.timeoutIds = new Map();
|
52 |
+
this.commFun = null;
|
53 |
+
}
|
54 |
+
|
55 |
+
destroy() {
|
56 |
+
this.commFunc = null;
|
57 |
+
this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));
|
58 |
+
this.timeoutIds = null;
|
59 |
+
}
|
60 |
+
|
61 |
+
exportValueToSandbox(val) {
|
62 |
+
throw new Error("Not implemented");
|
63 |
+
}
|
64 |
+
|
65 |
+
importValueFromSandbox(val) {
|
66 |
+
throw new Error("Not implemented");
|
67 |
+
}
|
68 |
+
|
69 |
+
createErrorForSandbox(errorMessage) {
|
70 |
+
throw new Error("Not implemented");
|
71 |
+
}
|
72 |
+
|
73 |
+
callSandboxFunction(name, args) {
|
74 |
+
try {
|
75 |
+
args = this.exportValueToSandbox(args);
|
76 |
+
this.commFun(name, args);
|
77 |
+
} catch (e) {
|
78 |
+
this.win.console.error(e);
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
createSandboxExternals() {
|
83 |
+
const externals = {
|
84 |
+
setTimeout: (callbackId, nMilliseconds) => {
|
85 |
+
if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
|
86 |
+
return;
|
87 |
+
}
|
88 |
+
|
89 |
+
const id = this.win.setTimeout(() => {
|
90 |
+
this.timeoutIds.delete(callbackId);
|
91 |
+
this.callSandboxFunction("timeoutCb", {
|
92 |
+
callbackId,
|
93 |
+
interval: false
|
94 |
+
});
|
95 |
+
}, nMilliseconds);
|
96 |
+
this.timeoutIds.set(callbackId, id);
|
97 |
+
},
|
98 |
+
clearTimeout: id => {
|
99 |
+
this.win.clearTimeout(this.timeoutIds.get(id));
|
100 |
+
this.timeoutIds.delete(id);
|
101 |
+
},
|
102 |
+
setInterval: (callbackId, nMilliseconds) => {
|
103 |
+
if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
|
104 |
+
return;
|
105 |
+
}
|
106 |
+
|
107 |
+
const id = this.win.setInterval(() => {
|
108 |
+
this.callSandboxFunction("timeoutCb", {
|
109 |
+
callbackId,
|
110 |
+
interval: true
|
111 |
+
});
|
112 |
+
}, nMilliseconds);
|
113 |
+
this.timeoutIds.set(callbackId, id);
|
114 |
+
},
|
115 |
+
clearInterval: id => {
|
116 |
+
this.win.clearInterval(this.timeoutIds.get(id));
|
117 |
+
this.timeoutIds.delete(id);
|
118 |
+
},
|
119 |
+
alert: cMsg => {
|
120 |
+
if (typeof cMsg !== "string") {
|
121 |
+
return;
|
122 |
+
}
|
123 |
+
|
124 |
+
this.win.alert(cMsg);
|
125 |
+
},
|
126 |
+
confirm: cMsg => {
|
127 |
+
if (typeof cMsg !== "string") {
|
128 |
+
return false;
|
129 |
+
}
|
130 |
+
|
131 |
+
return this.win.confirm(cMsg);
|
132 |
+
},
|
133 |
+
prompt: (cQuestion, cDefault) => {
|
134 |
+
if (typeof cQuestion !== "string" || typeof cDefault !== "string") {
|
135 |
+
return null;
|
136 |
+
}
|
137 |
+
|
138 |
+
return this.win.prompt(cQuestion, cDefault);
|
139 |
+
},
|
140 |
+
parseURL: cUrl => {
|
141 |
+
const url = new this.win.URL(cUrl);
|
142 |
+
const props = ["hash", "host", "hostname", "href", "origin", "password", "pathname", "port", "protocol", "search", "searchParams", "username"];
|
143 |
+
return Object.fromEntries(props.map(name => [name, url[name].toString()]));
|
144 |
+
},
|
145 |
+
send: data => {
|
146 |
+
if (!data) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
|
150 |
+
const event = new this.win.CustomEvent("updatefromsandbox", {
|
151 |
+
detail: this.importValueFromSandbox(data)
|
152 |
+
});
|
153 |
+
this.win.dispatchEvent(event);
|
154 |
+
}
|
155 |
+
};
|
156 |
+
Object.setPrototypeOf(externals, null);
|
157 |
+
return (name, args) => {
|
158 |
+
try {
|
159 |
+
const result = externals[name](...args);
|
160 |
+
return this.exportValueToSandbox(result);
|
161 |
+
} catch (error) {
|
162 |
+
throw this.createErrorForSandbox(error?.toString() ?? "");
|
163 |
+
}
|
164 |
+
};
|
165 |
+
}
|
166 |
+
|
167 |
+
}
|
168 |
+
|
169 |
+
{
|
170 |
+
exports.SandboxSupportBase = SandboxSupportBase;
|
171 |
+
}
|
172 |
+
|
173 |
+
/***/ })
|
174 |
+
/******/ ]);
|
175 |
+
/************************************************************************/
|
176 |
+
/******/ // The module cache
|
177 |
+
/******/ var __webpack_module_cache__ = {};
|
178 |
+
/******/
|
179 |
+
/******/ // The require function
|
180 |
+
/******/ function __w_pdfjs_require__(moduleId) {
|
181 |
+
/******/ // Check if module is in cache
|
182 |
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
183 |
+
/******/ if (cachedModule !== undefined) {
|
184 |
+
/******/ return cachedModule.exports;
|
185 |
+
/******/ }
|
186 |
+
/******/ // Create a new module (and put it into the cache)
|
187 |
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
188 |
+
/******/ // no module.id needed
|
189 |
+
/******/ // no module.loaded needed
|
190 |
+
/******/ exports: {}
|
191 |
+
/******/ };
|
192 |
+
/******/
|
193 |
+
/******/ // Execute the module function
|
194 |
+
/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
|
195 |
+
/******/
|
196 |
+
/******/ // Return the exports of the module
|
197 |
+
/******/ return module.exports;
|
198 |
+
/******/ }
|
199 |
+
/******/
|
200 |
+
/************************************************************************/
|
201 |
+
var __webpack_exports__ = {};
|
202 |
+
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
203 |
+
(() => {
|
204 |
+
var exports = __webpack_exports__;
|
205 |
+
|
206 |
+
|
207 |
+
Object.defineProperty(exports, "__esModule", ({
|
208 |
+
value: true
|
209 |
+
}));
|
210 |
+
exports.QuickJSSandbox = QuickJSSandbox;
|
211 |
+
|
212 |
+
var _quickjsEval = _interopRequireDefault(__w_pdfjs_require__(1));
|
213 |
+
|
214 |
+
var _pdfSandboxExternal = __w_pdfjs_require__(2);
|
215 |
+
|
216 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
217 |
+
|
218 |
+
const pdfjsVersion = '2.9.359';
|
219 |
+
const pdfjsBuild = 'e667c8cbc';
|
220 |
+
|
221 |
+
class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase {
|
222 |
+
exportValueToSandbox(val) {
|
223 |
+
return JSON.stringify(val);
|
224 |
+
}
|
225 |
+
|
226 |
+
importValueFromSandbox(val) {
|
227 |
+
return val;
|
228 |
+
}
|
229 |
+
|
230 |
+
createErrorForSandbox(errorMessage) {
|
231 |
+
return new Error(errorMessage);
|
232 |
+
}
|
233 |
+
|
234 |
+
}
|
235 |
+
|
236 |
+
class Sandbox {
|
237 |
+
constructor(win, module) {
|
238 |
+
this.support = new SandboxSupport(win, this);
|
239 |
+
module.externalCall = this.support.createSandboxExternals();
|
240 |
+
this._module = module;
|
241 |
+
this._alertOnError = 0;
|
242 |
+
}
|
243 |
+
|
244 |
+
create(data) {
|
245 |
+
const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n delete globalThis.pdfjsScripting;\n const externalCall = globalThis.callExternalFunction;\n delete globalThis.callExternalFunction;\n\n const globalEval = code => globalThis.eval(code);\n\n const send = data => externalCall("send", [data]);\n\n const proxyHandler = new _proxy.ProxyHandler();\n const {\n data\n } = params;\n const doc = new _doc.Doc({\n send,\n globalEval,\n ...data.docInfo\n });\n const _document = {\n obj: doc,\n wrapped: new Proxy(doc, proxyHandler)\n };\n const app = new _app.App({\n send,\n globalEval,\n externalCall,\n _document,\n calculationOrder: data.calculationOrder,\n proxyHandler,\n ...data.appInfo\n });\n const util = new _util.Util({\n externalCall\n });\n const appObjects = app._objects;\n\n if (data.objects) {\n const annotations = [];\n\n for (const [name, objs] of Object.entries(data.objects)) {\n annotations.length = 0;\n let container = null;\n\n for (const obj of objs) {\n if (obj.type !== "") {\n annotations.push(obj);\n } else {\n container = obj;\n }\n }\n\n let obj = container;\n\n if (annotations.length > 0) {\n obj = annotations[0];\n obj.send = send;\n }\n\n obj.globalEval = globalEval;\n obj.doc = _document;\n obj.fieldPath = name;\n obj.appObjects = appObjects;\n let field;\n\n switch (obj.type) {\n case "radiobutton":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.RadioButtonField(otherButtons, obj);\n break;\n }\n\n case "checkbox":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.CheckboxField(otherButtons, obj);\n break;\n }\n\n case "text":\n if (annotations.length <= 1) {\n field = new _field.Field(obj);\n break;\n }\n\n obj.siblings = annotations.map(x => x.id).slice(1);\n field = new _field.Field(obj);\n break;\n\n default:\n field = new _field.Field(obj);\n }\n\n const wrapped = new Proxy(field, proxyHandler);\n\n doc._addField(name, wrapped);\n\n const _object = {\n obj: field,\n wrapped\n };\n\n for (const object of objs) {\n appObjects[object.id] = _object;\n }\n\n if (container) {\n appObjects[container.id] = _object;\n }\n }\n }\n\n const color = new _color.Color();\n globalThis.event = null;\n globalThis.global = Object.create(null);\n globalThis.app = new Proxy(app, proxyHandler);\n globalThis.color = new Proxy(color, proxyHandler);\n globalThis.console = new Proxy(new _console.Console({\n send\n }), proxyHandler);\n globalThis.util = new Proxy(util, proxyHandler);\n globalThis.border = _constants.Border;\n globalThis.cursor = _constants.Cursor;\n globalThis.display = _constants.Display;\n globalThis.font = _constants.Font;\n globalThis.highlight = _constants.Highlight;\n globalThis.position = _constants.Position;\n globalThis.scaleHow = _constants.ScaleHow;\n globalThis.scaleWhen = _constants.ScaleWhen;\n globalThis.style = _constants.Style;\n globalThis.trans = _constants.Trans;\n globalThis.zoomtype = _constants.ZoomType;\n globalThis.ADBE = {\n Reader_Value_Asked: true,\n Viewer_Value_Asked: true\n };\n const aform = new _aform.AForm(doc, app, util, color);\n\n for (const name of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n if (name !== "constructor" && !name.startsWith("_")) {\n globalThis[name] = aform[name].bind(aform);\n }\n }\n\n for (const [name, value] of Object.entries(_constants.GlobalConstants)) {\n Object.defineProperty(globalThis, name, {\n value,\n writable: false\n });\n }\n\n Object.defineProperties(globalThis, {\n ColorConvert: {\n value: color.convert.bind(color),\n writable: true\n },\n ColorEqual: {\n value: color.equal.bind(color),\n writable: true\n }\n });\n const properties = Object.create(null);\n\n for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n if (name === "constructor" || name.startsWith("_")) {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, name);\n\n if (descriptor.get) {\n properties[name] = {\n get: descriptor.get.bind(doc),\n set: descriptor.set.bind(doc)\n };\n } else {\n properties[name] = {\n value: _doc.Doc.prototype[name].bind(doc)\n };\n }\n }\n\n Object.defineProperties(globalThis, properties);\n const functions = {\n dispatchEvent: app._dispatchEvent.bind(app),\n timeoutCb: app._evalCallback.bind(app)\n };\n return (name, args) => {\n try {\n functions[name](args);\n } catch (error) {\n const value = `${error.toString()}\\n${error.stack}`;\n send({\n command: "error",\n value\n });\n }\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n s: "solid",\n d: "dashed",\n b: "beveled",\n i: "inset",\n u: "underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n visible: 0,\n hidden: 1,\n delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n visible: 0,\n hidden: 1,\n noPrint: 2,\n noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n Times: "Times-Roman",\n TimesB: "Times-Bold",\n TimesI: "Times-Italic",\n TimesBI: "Times-BoldItalic",\n Helv: "Helvetica",\n HelvB: "Helvetica-Bold",\n HelvI: "Helvetica-Oblique",\n HelvBI: "Helvetica-BoldOblique",\n Cour: "Courier",\n CourB: "Courier-Bold",\n CourI: "Courier-Oblique",\n CourBI: "Courier-BoldOblique",\n Symbol: "Symbol",\n ZapfD: "ZapfDingbats",\n KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n KaMi: "HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n n: "none",\n i: "invert",\n p: "push",\n o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = Object.freeze({\n textOnly: 0,\n iconOnly: 1,\n iconTextV: 2,\n textIconV: 3,\n iconTextH: 4,\n textIconH: 5,\n overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n proportional: 0,\n anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = Object.freeze({\n always: 0,\n never: 1,\n tooBig: 2,\n tooSmall: 3\n});\nexports.ScaleWhen = ScaleWhen;\nconst Style = Object.freeze({\n ch: "check",\n cr: "cross",\n di: "diamond",\n ci: "circle",\n st: "star",\n sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n blindsH: "BlindsHorizontal",\n blindsV: "BlindsVertical",\n boxI: "BoxIn",\n boxO: "BoxOut",\n dissolve: "Dissolve",\n glitterD: "GlitterDown",\n glitterR: "GlitterRight",\n glitterRD: "GlitterRightDown",\n random: "Random",\n replace: "Replace",\n splitHI: "SplitHorizontalIn",\n splitHO: "SplitHorizontalOut",\n splitVI: "SplitVerticalIn",\n splitVO: "SplitVerticalOut",\n wipeD: "WipeDown",\n wipeL: "WipeLeft",\n wipeR: "WipeRight",\n wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n none: "NoVary",\n fitP: "FitPage",\n fitW: "FitWidth",\n fitH: "FitHeight",\n fitV: "FitVisibleWidth",\n pref: "Preferred",\n refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % s " + "and less than or equal to % s.",\n IDS_LESS_THAN: "Invalid value: must be less than or equal to % s.",\n IDS_INVALID_MONTH: "** Invalid **",\n IDS_INVALID_DATE: "Invalid date / time: please ensure that the date / time exists.Field",\n IDS_INVALID_DATE2: " should match format ",\n IDS_INVALID_VALUE: "The value entered does not match the format of the field",\n IDS_AM: "am",\n IDS_PM: "pm",\n IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n RE_NUMBER_COMMIT_DOT_SEP: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n RE_NUMBER_ENTRY_COMMA_SEP: ["[+-]?\\\\d*,?\\\\d*"],\n RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", "[+-]?\\\\d+[.,]"],\n RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n RE_ZIP_COMMIT: ["\\\\d{5}"],\n RE_ZIP4_ENTRY: ["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", "\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- ])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this.alignment = data.alignment || "left";\n this.borderStyle = data.borderStyle || "";\n this.buttonAlignX = data.buttonAlignX || 50;\n this.buttonAlignY = data.buttonAlignY || 50;\n this.buttonFitBounds = data.buttonFitBounds;\n this.buttonPosition = data.buttonPosition;\n this.buttonScaleHow = data.buttonScaleHow;\n this.ButtonScaleWhen = data.buttonScaleWhen;\n this.calcOrderIndex = data.calcOrderIndex;\n this.charLimit = data.charLimit;\n this.comb = data.comb;\n this.commitOnSelChange = data.commitOnSelChange;\n this.currentValueIndices = data.currentValueIndices;\n this.defaultStyle = data.defaultStyle;\n this.defaultValue = data.defaultValue;\n this.doNotScroll = data.doNotScroll;\n this.doNotSpellCheck = data.doNotSpellCheck;\n this.delay = data.delay;\n this.display = data.display;\n this.doc = data.doc.wrapped;\n this.editable = data.editable;\n this.exportValues = data.exportValues;\n this.fileSelect = data.fileSelect;\n this.hidden = data.hidden;\n this.highlight = data.highlight;\n this.lineWidth = data.lineWidth;\n this.multiline = data.multiline;\n this.multipleSelection = !!data.multipleSelection;\n this.name = data.name;\n this.password = data.password;\n this.print = data.print;\n this.radiosInUnison = data.radiosInUnison;\n this.readonly = data.readonly;\n this.rect = data.rect;\n this.required = data.required;\n this.richText = data.richText;\n this.richValue = data.richValue;\n this.rotation = data.rotation;\n this.style = data.style;\n this.submitName = data.submitName;\n this.textFont = data.textFont;\n this.textSize = data.textSize;\n this.type = data.type;\n this.userName = data.userName;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._browseForFileToSubmit = data.browseForFileToSubmit || null;\n this._buttonCaption = null;\n this._buttonIcon = null;\n this._children = null;\n this._currentValueIndices = data.currentValueIndices || 0;\n this._document = data.doc;\n this._fieldPath = data.fieldPath;\n this._fillColor = data.fillColor || ["T"];\n this._isChoice = Array.isArray(data.items);\n this._items = data.items || [];\n this._page = data.page || 0;\n this._strokeColor = data.strokeColor || ["G", 0];\n this._textColor = data.textColor || ["G", 0];\n this._value = data.value || "";\n this._kidIds = data.kidIds || null;\n this._fieldType = (0, _common.getFieldType)(this._actions);\n this._siblings = data.siblings || null;\n this._globalEval = data.globalEval;\n this._appObjects = data.appObjects;\n this.valueAsString = data.valueAsString || this._value;\n }\n\n get currentValueIndices() {\n if (!this._isChoice) {\n return 0;\n }\n\n return this._currentValueIndices;\n }\n\n set currentValueIndices(indices) {\n if (!this._isChoice) {\n return;\n }\n\n if (!Array.isArray(indices)) {\n indices = [indices];\n }\n\n if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < this.numItems)) {\n return;\n }\n\n indices.sort();\n\n if (this.multipleSelection) {\n this._currentValueIndices = indices;\n this._value = [];\n indices.forEach(i => {\n this._value.push(this._items[i].displayValue);\n });\n } else {\n if (indices.length > 0) {\n indices = indices.splice(1, indices.length - 1);\n this._currentValueIndices = indices[0];\n this._value = this._items[this._currentValueIndices];\n }\n }\n\n this._send({\n id: this._id,\n indices\n });\n }\n\n get fillColor() {\n return this._fillColor;\n }\n\n set fillColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._fillColor = color;\n }\n }\n\n get bgColor() {\n return this.fillColor;\n }\n\n set bgColor(color) {\n this.fillColor = color;\n }\n\n get numItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n return this._items.length;\n }\n\n set numItems(_) {\n throw new Error("field.numItems is read-only");\n }\n\n get strokeColor() {\n return this._strokeColor;\n }\n\n set strokeColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._strokeColor = color;\n }\n }\n\n get borderColor() {\n return this.strokeColor;\n }\n\n set borderColor(color) {\n this.strokeColor = color;\n }\n\n get page() {\n return this._page;\n }\n\n set page(_) {\n throw new Error("field.page is read-only");\n }\n\n get textColor() {\n return this._textColor;\n }\n\n set textColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._textColor = color;\n }\n }\n\n get fgColor() {\n return this.textColor;\n }\n\n set fgColor(color) {\n this.textColor = color;\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === "") {\n this._value = "";\n } else if (typeof value === "string") {\n switch (this._fieldType) {\n case _common.FieldType.number:\n case _common.FieldType.percent:\n value = parseFloat(value);\n\n if (!isNaN(value)) {\n this._value = value;\n }\n\n break;\n\n default:\n this._value = value;\n }\n } else {\n this._value = value;\n }\n\n if (this._isChoice) {\n if (this.multipleSelection) {\n const values = new Set(value);\n this._currentValueIndices.length = 0;\n\n this._items.forEach(({\n displayValue\n }, i) => {\n if (values.has(displayValue)) {\n this._currentValueIndices.push(i);\n }\n });\n } else {\n this._currentValueIndices = this._items.findIndex(({\n displayValue\n }) => value === displayValue);\n }\n }\n }\n\n get valueAsString() {\n if (this._valueAsString === undefined) {\n this._valueAsString = this._value ? this._value.toString() : "";\n }\n\n return this._valueAsString;\n }\n\n set valueAsString(val) {\n this._valueAsString = val ? val.toString() : "";\n }\n\n browseForFileToSubmit() {\n if (this._browseForFileToSubmit) {\n this._browseForFileToSubmit();\n }\n }\n\n buttonGetCaption(nFace = 0) {\n if (this._buttonCaption) {\n return this._buttonCaption[nFace];\n }\n\n return "";\n }\n\n buttonGetIcon(nFace = 0) {\n if (this._buttonIcon) {\n return this._buttonIcon[nFace];\n }\n\n return null;\n }\n\n buttonImportIcon(cPath = null, nPave = 0) {}\n\n buttonSetCaption(cCaption, nFace = 0) {\n if (!this._buttonCaption) {\n this._buttonCaption = ["", "", ""];\n }\n\n this._buttonCaption[nFace] = cCaption;\n }\n\n buttonSetIcon(oIcon, nFace = 0) {\n if (!this._buttonIcon) {\n this._buttonIcon = [null, null, null];\n }\n\n this._buttonIcon[nFace] = oIcon;\n }\n\n checkThisBox(nWidget, bCheckIt = true) {}\n\n clearItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items = [];\n\n this._send({\n id: this._id,\n clear: null\n });\n }\n\n deleteItemAt(nIdx = null) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!this.numItems) {\n return;\n }\n\n if (nIdx === null) {\n nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n nIdx = nIdx || 0;\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n this._items.splice(nIdx, 1);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n if (this._currentValueIndices[index] === nIdx) {\n this._currentValueIndices.splice(index, 1);\n }\n\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n --this._currentValueIndices[index];\n }\n }\n } else {\n if (this._currentValueIndices === nIdx) {\n this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n } else if (this._currentValueIndices > nIdx) {\n --this._currentValueIndices;\n }\n }\n\n this._send({\n id: this._id,\n remove: nIdx\n });\n }\n\n getItemAt(nIdx = -1, bExportValue = false) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n const item = this._items[nIdx];\n return bExportValue ? item.exportValue : item.displayValue;\n }\n\n getArray() {\n if (this._kidIds) {\n return this._kidIds.map(id => this._appObjects[id].wrapped);\n }\n\n if (this._children === null) {\n this._children = this._document.obj._getChildren(this._fieldPath);\n }\n\n return this._children;\n }\n\n getLock() {\n return undefined;\n }\n\n isBoxChecked(nWidget) {\n return false;\n }\n\n isDefaultChecked(nWidget) {\n return false;\n }\n\n insertItemAt(cName, cExport = undefined, nIdx = 0) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!cName) {\n return;\n }\n\n if (nIdx < 0 || nIdx > this.numItems) {\n nIdx = this.numItems;\n }\n\n if (this._items.some(({\n displayValue\n }) => displayValue === cName)) {\n return;\n }\n\n if (cExport === undefined) {\n cExport = cName;\n }\n\n const data = {\n displayValue: cName,\n exportValue: cExport\n };\n\n this._items.splice(nIdx, 0, data);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n ++this._currentValueIndices[index];\n }\n }\n } else if (this._currentValueIndices >= nIdx) {\n ++this._currentValueIndices;\n }\n\n this._send({\n id: this._id,\n insert: {\n index: nIdx,\n ...data\n }\n });\n }\n\n setAction(cTrigger, cScript) {\n if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n return;\n }\n\n if (!(cTrigger in this._actions)) {\n this._actions[cTrigger] = [];\n }\n\n this._actions[cTrigger].push(cScript);\n }\n\n setFocus() {\n this._send({\n id: this._id,\n focus: true\n });\n }\n\n setItems(oArray) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items.length = 0;\n\n for (const element of oArray) {\n let displayValue, exportValue;\n\n if (Array.isArray(element)) {\n displayValue = element[0]?.toString() || "";\n exportValue = element[1]?.toString() || "";\n } else {\n displayValue = exportValue = element?.toString() || "";\n }\n\n this._items.push({\n displayValue,\n exportValue\n });\n }\n\n this._currentValueIndices = 0;\n\n this._send({\n id: this._id,\n items: this._items\n });\n }\n\n setLock() {}\n\n signatureGetModifications() {}\n\n signatureGetSeedValue() {}\n\n signatureInfo() {}\n\n signatureSetSeedValue() {}\n\n signatureSign() {}\n\n signatureValidate() {}\n\n _isButton() {\n return false;\n }\n\n _runActions(event) {\n const eventName = event.name;\n\n if (!this._actions.has(eventName)) {\n return false;\n }\n\n const actions = this._actions.get(eventName);\n\n try {\n for (const action of actions) {\n this._globalEval(action);\n }\n } catch (error) {\n event.rc = false;\n throw error;\n }\n\n return true;\n }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n constructor(otherButtons, data) {\n super(data);\n this.exportValues = [this.exportValues];\n this._radioIds = [this._id];\n this._radioActions = [this._actions];\n\n for (const radioData of otherButtons) {\n this.exportValues.push(radioData.exportValues);\n\n this._radioIds.push(radioData.id);\n\n this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n if (this._value === radioData.exportValues) {\n this._id = radioData.id;\n }\n }\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === null || value === undefined) {\n this._value = "";\n }\n\n const i = this.exportValues.indexOf(value);\n\n if (0 <= i && i < this._radioIds.length) {\n this._id = this._radioIds[i];\n this._value = value;\n } else if (value === "Off" && this._radioIds.length === 2) {\n const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\n this._id = this._radioIds[nextI];\n this._value = this.exportValues[nextI];\n }\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = this.exportValues[nWidget];\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n isBoxChecked(nWidget) {\n return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n }\n\n isDefaultChecked(nWidget) {\n return nWidget >= 0 && nWidget < this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\n }\n\n _getExportValue(state) {\n const i = this._radioIds.indexOf(this._id);\n\n return this.exportValues[i];\n }\n\n _runActions(event) {\n const i = this._radioIds.indexOf(this._id);\n\n this._actions = this._radioActions[i];\n return super._runActions(event);\n }\n\n _isButton() {\n return true;\n }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (!value || value === "Off") {\n this._value = "Off";\n } else {\n super.value = value;\n }\n }\n\n _getExportValue(state) {\n return state ? super._getExportValue(state) : "Off";\n }\n\n isBoxChecked(nWidget) {\n if (this._value === "Off") {\n return false;\n }\n\n return super.isBoxChecked(nWidget);\n }\n\n isDefaultChecked(nWidget) {\n if (this.defaultValue === "Off") {\n return this._value === "Off";\n }\n\n return super.isDefaultChecked(nWidget);\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.createActionsMap = createActionsMap;\nexports.getFieldType = getFieldType;\nexports.FieldType = void 0;\nconst FieldType = {\n none: 0,\n number: 1,\n percent: 2,\n date: 3,\n time: 4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n const actionsMap = new Map();\n\n if (actions) {\n for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n actionsMap.set(eventType, actionsForEvent);\n }\n }\n\n return actionsMap;\n}\n\nfunction getFieldType(actions) {\n let format = actions.get("Format");\n\n if (!format) {\n return FieldType.none;\n }\n\n format = format[0];\n format = format.trim();\n\n if (format.startsWith("AFNumber_")) {\n return FieldType.number;\n }\n\n if (format.startsWith("AFPercent_")) {\n return FieldType.percent;\n }\n\n if (format.startsWith("AFDate_")) {\n return FieldType.date;\n }\n\n if (format.startsWith("AFTime__")) {\n return FieldType.time;\n }\n\n return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Color extends _pdf_object.PDFObject {\n constructor() {\n super({});\n this.transparent = ["T"];\n this.black = ["G", 0];\n this.white = ["G", 1];\n this.red = ["RGB", 1, 0, 0];\n this.green = ["RGB", 0, 1, 0];\n this.blue = ["RGB", 0, 0, 1];\n this.cyan = ["CMYK", 1, 0, 0, 0];\n this.magenta = ["CMYK", 0, 1, 0, 0];\n this.yellow = ["CMYK", 0, 0, 1, 0];\n this.dkGray = ["G", 0.25];\n this.gray = ["G", 0.5];\n this.ltGray = ["G", 0.75];\n }\n\n static _isValidSpace(cColorSpace) {\n return typeof cColorSpace === "string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n }\n\n static _isValidColor(colorArray) {\n if (!Array.isArray(colorArray) || colorArray.length === 0) {\n return false;\n }\n\n const space = colorArray[0];\n\n if (!Color._isValidSpace(space)) {\n return false;\n }\n\n switch (space) {\n case "T":\n if (colorArray.length !== 1) {\n return false;\n }\n\n break;\n\n case "G":\n if (colorArray.length !== 2) {\n return false;\n }\n\n break;\n\n case "RGB":\n if (colorArray.length !== 4) {\n return false;\n }\n\n break;\n\n case "CMYK":\n if (colorArray.length !== 5) {\n return false;\n }\n\n break;\n\n default:\n return false;\n }\n\n return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n }\n\n static _getCorrectColor(colorArray) {\n return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n }\n\n convert(colorArray, cColorSpace) {\n if (!Color._isValidSpace(cColorSpace)) {\n return this.black;\n }\n\n if (cColorSpace === "T") {\n return ["T"];\n }\n\n colorArray = Color._getCorrectColor(colorArray);\n\n if (colorArray[0] === cColorSpace) {\n return colorArray;\n }\n\n if (colorArray[0] === "T") {\n return this.convert(this.black, cColorSpace);\n }\n\n return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n }\n\n equal(colorArray1, colorArray2) {\n colorArray1 = Color._getCorrectColor(colorArray1);\n colorArray2 = Color._getCorrectColor(colorArray2);\n\n if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n return colorArray1[0] === "T" && colorArray2[0] === "T";\n }\n\n if (colorArray1[0] !== colorArray2[0]) {\n colorArray2 = this.convert(colorArray2, colorArray1[0]);\n }\n\n return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return ["CMYK", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return ["RGB", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return "#00000000";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n\n static CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return ["CMYK", c, m, y, k];\n }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PDFObject = void 0;\n\nclass PDFObject {\n constructor(data) {\n this._expandos = Object.create(null);\n this._send = data.send || null;\n this._id = data.id || null;\n }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass AForm {\n constructor(document, app, util, color) {\n this._document = document;\n this._app = app;\n this._util = util;\n this._color = color;\n this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n this._emailRegex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n }\n\n _mkTargetName(event) {\n return event.target ? `[ ${event.target.name} ]` : "";\n }\n\n _parseDate(cFormat, cDate) {\n const ddate = Date.parse(cDate);\n\n if (isNaN(ddate)) {\n try {\n return this._util.scand(cFormat, cDate);\n } catch (error) {\n return null;\n }\n } else {\n return new Date(ddate);\n }\n }\n\n AFMergeChange(event = globalThis.event) {\n if (event.willCommit) {\n return event.value.toString();\n }\n\n return this._app._eventDispatcher.mergeChange(event);\n }\n\n AFParseDateEx(cString, cOrder) {\n return this._parseDate(cOrder, cString);\n }\n\n AFExtractNums(str) {\n if (typeof str === "number") {\n return [str];\n }\n\n if (!str || typeof str !== "string") {\n return null;\n }\n\n const first = str.charAt(0);\n\n if (first === "." || first === ",") {\n str = `0${str}`;\n }\n\n const numbers = str.match(/([0-9]+)/g);\n\n if (numbers.length === 0) {\n return null;\n }\n\n return numbers;\n }\n\n AFMakeNumber(str) {\n if (typeof str === "number") {\n return str;\n }\n\n if (typeof str !== "string") {\n return null;\n }\n\n str = str.trim().replace(",", ".");\n const number = parseFloat(str);\n\n if (isNaN(number) || !isFinite(number)) {\n return null;\n }\n\n return number;\n }\n\n AFMakeArrayFromList(string) {\n if (typeof string === "string") {\n return string.split(/, ?/g);\n }\n\n return string;\n }\n\n AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "";\n return;\n }\n\n const sign = Math.sign(value);\n const buf = [];\n let hasParen = false;\n\n if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n buf.push("-");\n }\n\n if ((negStyle === 2 || negStyle === 3) && sign === -1) {\n buf.push("(");\n hasParen = true;\n }\n\n if (bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n if (!bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n if (hasParen) {\n buf.push(")");\n }\n\n if (negStyle === 1 || negStyle === 3) {\n event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n }\n\n if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n value = -value;\n }\n\n const formatStr = buf.join("");\n event.value = this._util.printf(formatStr, value);\n }\n\n AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n let value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n value = value.trim();\n let pattern;\n\n if (sepStyle > 1) {\n pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : /^[+-]?[0-9]*,?[0-9]*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : /^[+-]?[0-9]*\\.?[0-9]*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n this._app.alert(err);\n }\n\n event.rc = false;\n }\n\n if (event.willCommit && sepStyle > 1) {\n event.value = parseFloat(value.replace(",", "."));\n }\n }\n\n AFPercent_Format(nDec, sepStyle, percentPrepend = false) {\n if (typeof nDec !== "number") {\n return;\n }\n\n if (typeof sepStyle !== "number") {\n return;\n }\n\n if (nDec < 0) {\n throw new Error("Invalid nDec value in AFPercent_Format");\n }\n\n const event = globalThis.event;\n\n if (nDec > 512) {\n event.value = "%";\n return;\n }\n\n nDec = Math.floor(nDec);\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "%";\n return;\n }\n\n const formatStr = `%,${sepStyle}.${nDec}f`;\n value = this._util.printf(formatStr, value * 100);\n\n if (percentPrepend) {\n event.value = `%${value}`;\n } else {\n event.value = `${value}%`;\n }\n }\n\n AFPercent_Keystroke(nDec, sepStyle) {\n this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n }\n\n AFDate_FormatEx(cFormat) {\n const event = globalThis.event;\n const value = event.value;\n\n if (!value) {\n return;\n }\n\n const date = this._parseDate(cFormat, value);\n\n if (date !== null) {\n event.value = this._util.printd(cFormat, date);\n }\n }\n\n AFDate_Format(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_FormatEx(this._dateFormats[pdf]);\n }\n }\n\n AFDate_KeystrokeEx(cFormat) {\n const event = globalThis.event;\n\n if (!event.willCommit) {\n return;\n }\n\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n if (this._parseDate(cFormat, value) === null) {\n const invalid = _constants.GlobalConstants.IDS_INVALID_DATE;\n const invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFDate_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n }\n }\n\n AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n const value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n return;\n }\n\n bGreaterThan = !!bGreaterThan;\n bLessThan = !!bLessThan;\n\n if (bGreaterThan) {\n nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n if (nGreaterThan === null) {\n return;\n }\n }\n\n if (bLessThan) {\n nLessThan = this.AFMakeNumber(nLessThan);\n\n if (nLessThan === null) {\n return;\n }\n }\n\n let err = "";\n\n if (bGreaterThan && bLessThan) {\n if (value < nGreaterThan || value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n }\n } else if (bGreaterThan) {\n if (value < nGreaterThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n }\n } else if (value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n }\n\n if (err) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSimple(cFunction, nValue1, nValue2) {\n const value1 = this.AFMakeNumber(nValue1);\n\n if (value1 === null) {\n throw new Error("Invalid nValue1 in AFSimple");\n }\n\n const value2 = this.AFMakeNumber(nValue2);\n\n if (value2 === null) {\n throw new Error("Invalid nValue2 in AFSimple");\n }\n\n switch (cFunction) {\n case "AVG":\n return (value1 + value2) / 2;\n\n case "SUM":\n return value1 + value2;\n\n case "PRD":\n return value1 * value2;\n\n case "MIN":\n return Math.min(value1, value2);\n\n case "MAX":\n return Math.max(value1, value2);\n }\n\n throw new Error("Invalid cFunction in AFSimple");\n }\n\n AFSimple_Calculate(cFunction, cFields) {\n const actions = {\n AVG: args => args.reduce((acc, value) => acc + value, 0) / args.length,\n SUM: args => args.reduce((acc, value) => acc + value, 0),\n PRD: args => args.reduce((acc, value) => acc * value, 1),\n MIN: args => args.reduce((acc, value) => Math.min(acc, value), Number.MAX_VALUE),\n MAX: args => args.reduce((acc, value) => Math.max(acc, value), Number.MIN_VALUE)\n };\n\n if (!(cFunction in actions)) {\n throw new TypeError("Invalid function in AFSimple_Calculate");\n }\n\n const event = globalThis.event;\n const values = [];\n\n for (const cField of cFields) {\n const field = this._document.getField(cField);\n\n const number = this.AFMakeNumber(field.value);\n\n if (number !== null) {\n values.push(number);\n }\n }\n\n if (values.length === 0) {\n event.value = cFunction === "PRD" ? 1 : 0;\n return;\n }\n\n const res = actions[cFunction](values);\n event.value = Math.round(1e6 * res) / 1e6;\n }\n\n AFSpecial_Format(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n\n if (psf === null) {\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n let formatStr = "";\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n if (this._util.printx("9999999999", event.value).length >= 10) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n event.value = this._util.printx(formatStr, event.value);\n }\n\n AFSpecial_KeystrokeEx(cMask) {\n if (!cMask) {\n return;\n }\n\n const event = globalThis.event;\n const value = this.AFMergeChange(event);\n const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n function _checkValidity(_value, _cMask) {\n for (let i = 0, ii = value.length; i < ii; i++) {\n const mask = _cMask.charAt(i);\n\n const char = _value.charAt(i);\n\n const checker = checkers.get(mask);\n\n if (checker) {\n if (!checker(char)) {\n return false;\n }\n } else if (mask !== char) {\n return false;\n }\n }\n\n return true;\n }\n\n if (!value) {\n return;\n }\n\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n if (value.length > cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (event.willCommit) {\n if (value.length < cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n event.value += cMask.substring(value.length);\n return;\n }\n\n if (value.length < cMask.length) {\n cMask = cMask.substring(0, value.length);\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSpecial_Keystroke(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n\n if (psf === null) {\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n const finalLen = event.value.length + event.change.length + event.selStart - event.selEnd;\n\n if (finalLen >= 8) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n this.AFSpecial_KeystrokeEx(formatStr);\n }\n\n AFTime_FormatEx(cFormat) {\n this.AFDate_FormatEx(cFormat);\n }\n\n AFTime_Format(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_FormatEx(this._timeFormats[pdf]);\n }\n }\n\n AFTime_KeystrokeEx(cFormat) {\n this.AFDate_KeystrokeEx(cFormat);\n }\n\n AFTime_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n }\n }\n\n eMailValidate(str) {\n return this._emailRegex.test(str);\n }\n\n}\n\nexports.AForm = AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.App = void 0;\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = __w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = __w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._constants = null;\n this._focusRect = true;\n this._fs = null;\n this._language = App._getLanguage(data.language);\n this._openInPlace = false;\n this._platform = App._getPlatform(data.platform);\n this._runtimeHighlight = false;\n this._runtimeHighlightColor = ["T"];\n this._thermometer = null;\n this._toolbar = false;\n this._document = data._document;\n this._proxyHandler = data.proxyHandler;\n this._objects = Object.create(null);\n this._eventDispatcher = new _event.EventDispatcher(this._document, data.calculationOrder, this._objects);\n this._timeoutIds = new WeakMap();\n\n if (typeof FinalizationRegistry !== "undefined") {\n this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\n } else {\n this._timeoutIdsRegistry = null;\n }\n\n this._timeoutCallbackIds = new Map();\n this._timeoutCallbackId = 0;\n this._globalEval = data.globalEval;\n this._externalCall = data.externalCall;\n this._document = data._document;\n }\n\n _dispatchEvent(pdfEvent) {\n this._eventDispatcher.dispatch(pdfEvent);\n }\n\n _registerTimeoutCallback(cExpr) {\n const id = this._timeoutCallbackId++;\n\n this._timeoutCallbackIds.set(id, cExpr);\n\n return id;\n }\n\n _unregisterTimeoutCallback(id) {\n this._timeoutCallbackIds.delete(id);\n }\n\n _evalCallback({\n callbackId,\n interval\n }) {\n const expr = this._timeoutCallbackIds.get(callbackId);\n\n if (!interval) {\n this._unregisterTimeoutCallback(callbackId);\n }\n\n if (expr) {\n this._globalEval(expr);\n }\n }\n\n _registerTimeout(callbackId, interval) {\n const timeout = Object.create(null);\n const id = {\n callbackId,\n interval\n };\n\n this._timeoutIds.set(timeout, id);\n\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.register(timeout, id);\n }\n\n return timeout;\n }\n\n _unregisterTimeout(timeout) {\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.unregister(timeout);\n }\n\n const data = this._timeoutIds.get(timeout);\n\n if (!data) {\n return;\n }\n\n this._timeoutIds.delete(timeout);\n\n this._cleanTimeout(data);\n }\n\n _cleanTimeout({\n callbackId,\n interval\n }) {\n this._unregisterTimeoutCallback(callbackId);\n\n if (interval) {\n this._externalCall("clearInterval", [callbackId]);\n } else {\n this._externalCall("clearTimeout", [callbackId]);\n }\n }\n\n static _getPlatform(platform) {\n if (typeof platform === "string") {\n platform = platform.toLowerCase();\n\n if (platform.includes("win")) {\n return "WIN";\n } else if (platform.includes("mac")) {\n return "MAC";\n }\n }\n\n return "UNIX";\n }\n\n static _getLanguage(language) {\n const [main, sub] = language.toLowerCase().split(/[-_]/);\n\n switch (main) {\n case "zh":\n if (sub === "cn" || sub === "sg") {\n return "CHS";\n }\n\n return "CHT";\n\n case "da":\n return "DAN";\n\n case "de":\n return "DEU";\n\n case "es":\n return "ESP";\n\n case "fr":\n return "FRA";\n\n case "it":\n return "ITA";\n\n case "ko":\n return "KOR";\n\n case "ja":\n return "JPN";\n\n case "nl":\n return "NLD";\n\n case "no":\n return "NOR";\n\n case "pt":\n if (sub === "br") {\n return "PTB";\n }\n\n return "ENU";\n\n case "fi":\n return "SUO";\n\n case "SV":\n return "SVE";\n\n default:\n return "ENU";\n }\n }\n\n get activeDocs() {\n return [this._document.wrapped];\n }\n\n set activeDocs(_) {\n throw new Error("app.activeDocs is read-only");\n }\n\n get calculate() {\n return this._document.obj.calculate;\n }\n\n set calculate(calculate) {\n this._document.obj.calculate = calculate;\n }\n\n get constants() {\n if (!this._constants) {\n this._constants = Object.freeze({\n align: Object.freeze({\n left: 0,\n center: 1,\n right: 2,\n top: 3,\n bottom: 4\n })\n });\n }\n\n return this._constants;\n }\n\n set constants(_) {\n throw new Error("app.constants is read-only");\n }\n\n get focusRect() {\n return this._focusRect;\n }\n\n set focusRect(val) {\n this._focusRect = val;\n }\n\n get formsVersion() {\n return FORMS_VERSION;\n }\n\n set formsVersion(_) {\n throw new Error("app.formsVersion is read-only");\n }\n\n get fromPDFConverters() {\n return [];\n }\n\n set fromPDFConverters(_) {\n throw new Error("app.fromPDFConverters is read-only");\n }\n\n get fs() {\n if (this._fs === null) {\n this._fs = new Proxy(new _fullscreen.FullScreen({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._fs;\n }\n\n set fs(_) {\n throw new Error("app.fs is read-only");\n }\n\n get language() {\n return this._language;\n }\n\n set language(_) {\n throw new Error("app.language is read-only");\n }\n\n get media() {\n return undefined;\n }\n\n set media(_) {\n throw new Error("app.media is read-only");\n }\n\n get monitors() {\n return [];\n }\n\n set monitors(_) {\n throw new Error("app.monitors is read-only");\n }\n\n get numPlugins() {\n return 0;\n }\n\n set numPlugins(_) {\n throw new Error("app.numPlugins is read-only");\n }\n\n get openInPlace() {\n return this._openInPlace;\n }\n\n set openInPlace(val) {\n this._openInPlace = val;\n }\n\n get platform() {\n return this._platform;\n }\n\n set platform(_) {\n throw new Error("app.platform is read-only");\n }\n\n get plugins() {\n return [];\n }\n\n set plugins(_) {\n throw new Error("app.plugins is read-only");\n }\n\n get printColorProfiles() {\n return [];\n }\n\n set printColorProfiles(_) {\n throw new Error("app.printColorProfiles is read-only");\n }\n\n get printerNames() {\n return [];\n }\n\n set printerNames(_) {\n throw new Error("app.printerNames is read-only");\n }\n\n get runtimeHighlight() {\n return this._runtimeHighlight;\n }\n\n set runtimeHighlight(val) {\n this._runtimeHighlight = val;\n }\n\n get runtimeHighlightColor() {\n return this._runtimeHighlightColor;\n }\n\n set runtimeHighlightColor(val) {\n if (_color.Color._isValidColor(val)) {\n this._runtimeHighlightColor = val;\n }\n }\n\n get thermometer() {\n if (this._thermometer === null) {\n this._thermometer = new Proxy(new _thermometer.Thermometer({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._thermometer;\n }\n\n set thermometer(_) {\n throw new Error("app.thermometer is read-only");\n }\n\n get toolbar() {\n return this._toolbar;\n }\n\n set toolbar(val) {\n this._toolbar = val;\n }\n\n get toolbarHorizontal() {\n return this.toolbar;\n }\n\n set toolbarHorizontal(value) {\n this.toolbar = value;\n }\n\n get toolbarVertical() {\n return this.toolbar;\n }\n\n set toolbarVertical(value) {\n this.toolbar = value;\n }\n\n get viewerType() {\n return VIEWER_TYPE;\n }\n\n set viewerType(_) {\n throw new Error("app.viewerType is read-only");\n }\n\n get viewerVariation() {\n return VIEWER_VARIATION;\n }\n\n set viewerVariation(_) {\n throw new Error("app.viewerVariation is read-only");\n }\n\n get viewerVersion() {\n return VIEWER_VERSION;\n }\n\n set viewerVersion(_) {\n throw new Error("app.viewerVersion is read-only");\n }\n\n addMenuItem() {}\n\n addSubMenu() {}\n\n addToolButton() {}\n\n alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", oDoc = null, oCheckbox = null) {\n if (typeof cMsg === "object") {\n nType = cMsg.nType;\n cMsg = cMsg.cMsg;\n }\n\n cMsg = (cMsg || "").toString();\n nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n if (nType >= 2) {\n return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n }\n\n this._externalCall("alert", [cMsg]);\n\n return 1;\n }\n\n beep() {}\n\n beginPriv() {}\n\n browseForDoc() {}\n\n clearInterval(oInterval) {\n this._unregisterTimeout(oInterval);\n }\n\n clearTimeOut(oTime) {\n this._unregisterTimeout(oTime);\n }\n\n endPriv() {}\n\n execDialog() {}\n\n execMenuItem() {}\n\n getNthPlugInName() {}\n\n getPath() {}\n\n goBack() {}\n\n goForward() {}\n\n hideMenuItem() {}\n\n hideToolbarButton() {}\n\n launchURL() {}\n\n listMenuItems() {}\n\n listToolbarButtons() {}\n\n loadPolicyFile() {}\n\n mailGetAddrs() {}\n\n mailMsg() {}\n\n newDoc() {}\n\n newCollection() {}\n\n newFDF() {}\n\n openDoc() {}\n\n openFDF() {}\n\n popUpMenu() {}\n\n popUpMenuEx() {}\n\n removeToolButton() {}\n\n response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n if (typeof cQuestion === "object") {\n cDefault = cQuestion.cDefault;\n cQuestion = cQuestion.cQuestion;\n }\n\n cQuestion = (cQuestion || "").toString();\n cDefault = (cDefault || "").toString();\n return this._externalCall("prompt", [cQuestion, cDefault || ""]);\n }\n\n setInterval(cExpr, nMilliseconds = 0) {\n if (typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setInterval must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setInterval must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setInterval", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, true);\n }\n\n setTimeOut(cExpr, nMilliseconds = 0) {\n if (typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setTimeOut must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setTimeOut must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setTimeout", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, false);\n }\n\n trustedFunction() {}\n\n trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n constructor(data) {\n this.change = data.change || "";\n this.changeEx = data.changeEx || null;\n this.commitKey = data.commitKey || 0;\n this.fieldFull = data.fieldFull || false;\n this.keyDown = data.keyDown || false;\n this.modifier = data.modifier || false;\n this.name = data.name;\n this.rc = true;\n this.richChange = data.richChange || [];\n this.richChangeEx = data.richChangeEx || [];\n this.richValue = data.richValue || [];\n this.selEnd = data.selEnd || -1;\n this.selStart = data.selStart || -1;\n this.shift = data.shift || false;\n this.source = data.source || null;\n this.target = data.target || null;\n this.targetName = "";\n this.type = "Field";\n this.value = data.value || "";\n this.willCommit = data.willCommit || false;\n }\n\n}\n\nexports.Event = Event;\n\nclass EventDispatcher {\n constructor(document, calculationOrder, objects) {\n this._document = document;\n this._calculationOrder = calculationOrder;\n this._objects = objects;\n this._document.obj._eventDispatcher = this;\n }\n\n mergeChange(event) {\n let value = event.value;\n\n if (typeof value !== "string") {\n value = value.toString();\n }\n\n const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n return `${prefix}${event.change}${postfix}`;\n }\n\n dispatch(baseEvent) {\n const id = baseEvent.id;\n\n if (!(id in this._objects)) {\n let event;\n\n if (id === "doc" || id === "page") {\n event = globalThis.event = new Event(baseEvent);\n event.source = event.target = this._document.wrapped;\n event.name = baseEvent.name;\n }\n\n if (id === "doc") {\n this._document.obj._dispatchDocEvent(event.name);\n } else if (id === "page") {\n this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n }\n\n return;\n }\n\n const name = baseEvent.name;\n const source = this._objects[id];\n const event = globalThis.event = new Event(baseEvent);\n let savedChange;\n\n if (source.obj._isButton()) {\n source.obj._id = id;\n event.value = source.obj._getExportValue(event.value);\n\n if (name === "Action") {\n source.obj._value = event.value;\n }\n }\n\n switch (name) {\n case "Keystroke":\n savedChange = {\n value: event.value,\n change: event.change,\n selStart: event.selStart,\n selEnd: event.selEnd\n };\n break;\n\n case "Blur":\n case "Focus":\n Object.defineProperty(event, "value", {\n configurable: false,\n writable: false,\n enumerable: true,\n value: event.value\n });\n break;\n\n case "Validate":\n this.runValidation(source, event);\n return;\n\n case "Action":\n this.runActions(source, source, event, name);\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n return;\n }\n\n this.runActions(source, source, event, name);\n\n if (name === "Keystroke") {\n if (event.rc) {\n if (event.willCommit) {\n this.runValidation(source, event);\n } else if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n source.wrapped.value = this.mergeChange(event);\n }\n } else if (!event.willCommit) {\n source.obj._send({\n id: source.obj._id,\n value: savedChange.value,\n selRange: [savedChange.selStart, savedChange.selEnd]\n });\n }\n }\n }\n\n runValidation(source, event) {\n const hasRan = this.runActions(source, source, event, "Validate");\n\n if (event.rc) {\n if (hasRan) {\n source.wrapped.value = event.value;\n source.wrapped.valueAsString = event.value;\n } else {\n source.obj.value = event.value;\n source.obj.valueAsString = event.value;\n }\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n event.value = source.obj.value;\n this.runActions(source, source, event, "Format");\n source.wrapped.valueAsString = event.value;\n }\n }\n\n runActions(source, target, event, eventName) {\n event.source = source.wrapped;\n event.target = target.wrapped;\n event.name = eventName;\n event.targetName = target.obj.name;\n event.rc = true;\n return target.obj._runActions(event);\n }\n\n calculateNow() {\n if (!this._calculationOrder) {\n return;\n }\n\n const first = this._calculationOrder[0];\n const source = this._objects[first];\n globalThis.event = new Event({});\n this.runCalculate(source, globalThis.event);\n }\n\n runCalculate(source, event) {\n if (!this._calculationOrder) {\n return;\n }\n\n for (const targetId of this._calculationOrder) {\n if (!(targetId in this._objects)) {\n continue;\n }\n\n if (!this._document.obj.calculate) {\n continue;\n }\n\n event.value = null;\n const target = this._objects[targetId];\n this.runActions(source, target, event, "Calculate");\n\n if (!event.rc) {\n continue;\n }\n\n if (event.value !== null) {\n target.wrapped.value = event.value;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Validate");\n\n if (!event.rc) {\n continue;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Format");\n\n if (event.value !== null) {\n target.wrapped.valueAsString = event.value;\n }\n }\n }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FullScreen = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass FullScreen extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._backgroundColor = [];\n this._clickAdvances = true;\n this._cursor = _constants.Cursor.hidden;\n this._defaultTransition = "";\n this._escapeExits = true;\n this._isFullScreen = true;\n this._loop = false;\n this._timeDelay = 3600;\n this._usePageTiming = false;\n this._useTimer = false;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n set backgroundColor(_) {}\n\n get clickAdvances() {\n return this._clickAdvances;\n }\n\n set clickAdvances(_) {}\n\n get cursor() {\n return this._cursor;\n }\n\n set cursor(_) {}\n\n get defaultTransition() {\n return this._defaultTransition;\n }\n\n set defaultTransition(_) {}\n\n get escapeExits() {\n return this._escapeExits;\n }\n\n set escapeExits(_) {}\n\n get isFullScreen() {\n return this._isFullScreen;\n }\n\n set isFullScreen(_) {}\n\n get loop() {\n return this._loop;\n }\n\n set loop(_) {}\n\n get timeDelay() {\n return this._timeDelay;\n }\n\n set timeDelay(_) {}\n\n get transitions() {\n return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n }\n\n set transitions(_) {\n throw new Error("fullscreen.transitions is read-only");\n }\n\n get usePageTiming() {\n return this._usePageTiming;\n }\n\n set usePageTiming(_) {}\n\n get useTimer() {\n return this._useTimer;\n }\n\n set useTimer(_) {}\n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._cancelled = false;\n this._duration = 100;\n this._text = "";\n this._value = 0;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n\n set cancelled(_) {\n throw new Error("thermometer.cancelled is read-only");\n }\n\n get duration() {\n return this._duration;\n }\n\n set duration(val) {\n this._duration = val;\n }\n\n get text() {\n return this._text;\n }\n\n set text(val) {\n this._text = val;\n }\n\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n }\n\n begin() {}\n\n end() {}\n\n}\n\nexports.Thermometer = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Console = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n clear() {\n this._send({\n id: "clear"\n });\n }\n\n hide() {}\n\n println(msg) {\n if (typeof msg === "string") {\n this._send({\n command: "println",\n value: "PDF.js Console:: " + msg\n });\n }\n }\n\n show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n static get(obj, prop) {\n return obj[prop.toLowerCase()];\n }\n\n static set(obj, prop, value) {\n throw new Error(`doc.info.${prop} is read-only`);\n }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._expandos = globalThis;\n this._baseURL = data.baseURL || "";\n this._calculate = true;\n this._delay = false;\n this._dirty = false;\n this._disclosed = false;\n this._media = undefined;\n this._metadata = data.metadata || "";\n this._noautocomplete = undefined;\n this._nocache = undefined;\n this._spellDictionaryOrder = [];\n this._spellLanguageOrder = [];\n this._printParams = null;\n this._fields = new Map();\n this._fieldNames = [];\n this._event = null;\n this._author = data.Author || "";\n this._creator = data.Creator || "";\n this._creationDate = this._getDate(data.CreationDate) || null;\n this._docID = data.docID || ["", ""];\n this._documentFileName = data.filename || "";\n this._filesize = data.filesize || 0;\n this._keywords = data.Keywords || "";\n this._layout = data.layout || "";\n this._modDate = this._getDate(data.ModDate) || null;\n this._numFields = 0;\n this._numPages = data.numPages || 1;\n this._pageNum = data.pageNum || 0;\n this._producer = data.Producer || "";\n this._subject = data.Subject || "";\n this._title = data.Title || "";\n this._URL = data.URL || "";\n this._info = new Proxy({\n title: this._title,\n author: this._author,\n authors: data.authors || [this._author],\n subject: this._subject,\n keywords: this._keywords,\n creator: this._creator,\n producer: this._producer,\n creationdate: this._creationDate,\n moddate: this._modDate,\n trapped: data.Trapped || "Unknown"\n }, InfoProxyHandler);\n this._zoomType = _constants.ZoomType.none;\n this._zoom = data.zoom || 100;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._globalEval = data.globalEval;\n this._pageActions = new Map();\n }\n\n _dispatchDocEvent(name) {\n if (name === "Open") {\n const dontRun = new Set(["WillClose", "WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n for (const actionName of this._actions.keys()) {\n if (!dontRun.has(actionName)) {\n this._runActions(actionName);\n }\n }\n\n this._runActions("OpenAction");\n } else {\n this._runActions(name);\n }\n }\n\n _dispatchPageEvent(name, actions, pageNumber) {\n if (name === "PageOpen") {\n if (!this._pageActions.has(pageNumber)) {\n this._pageActions.set(pageNumber, (0, _common.createActionsMap)(actions));\n }\n\n this._pageNum = pageNumber - 1;\n }\n\n actions = this._pageActions.get(pageNumber)?.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _runActions(name) {\n const actions = this._actions.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _addField(name, field) {\n this._fields.set(name, field);\n\n this._fieldNames.push(name);\n\n this._numFields++;\n }\n\n _getDate(date) {\n if (!date || date.length < 15 || !date.startsWith("D:")) {\n return date;\n }\n\n date = date.substring(2);\n const year = date.substring(0, 4);\n const month = date.substring(4, 6);\n const day = date.substring(6, 8);\n const hour = date.substring(8, 10);\n const minute = date.substring(10, 12);\n const o = date.charAt(12);\n let second, offsetPos;\n\n if (o === "Z" || o === "+" || o === "-") {\n second = "00";\n offsetPos = 12;\n } else {\n second = date.substring(12, 14);\n offsetPos = 14;\n }\n\n const offset = date.substring(offsetPos).replaceAll("\'", "");\n return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n }\n\n get author() {\n return this._author;\n }\n\n set author(_) {\n throw new Error("doc.author is read-only");\n }\n\n get baseURL() {\n return this._baseURL;\n }\n\n set baseURL(baseURL) {\n this._baseURL = baseURL;\n }\n\n get bookmarkRoot() {\n return undefined;\n }\n\n set bookmarkRoot(_) {\n throw new Error("doc.bookmarkRoot is read-only");\n }\n\n get calculate() {\n return this._calculate;\n }\n\n set calculate(calculate) {\n this._calculate = calculate;\n }\n\n get creator() {\n return this._creator;\n }\n\n set creator(_) {\n throw new Error("doc.creator is read-only");\n }\n\n get dataObjects() {\n return [];\n }\n\n set dataObjects(_) {\n throw new Error("doc.dataObjects is read-only");\n }\n\n get delay() {\n return this._delay;\n }\n\n set delay(delay) {\n this._delay = delay;\n }\n\n get dirty() {\n return this._dirty;\n }\n\n set dirty(dirty) {\n this._dirty = dirty;\n }\n\n get disclosed() {\n return this._disclosed;\n }\n\n set disclosed(disclosed) {\n this._disclosed = disclosed;\n }\n\n get docID() {\n return this._docID;\n }\n\n set docID(_) {\n throw new Error("doc.docID is read-only");\n }\n\n get documentFileName() {\n return this._documentFileName;\n }\n\n set documentFileName(_) {\n throw new Error("doc.documentFileName is read-only");\n }\n\n get dynamicXFAForm() {\n return false;\n }\n\n set dynamicXFAForm(_) {\n throw new Error("doc.dynamicXFAForm is read-only");\n }\n\n get external() {\n return true;\n }\n\n set external(_) {\n throw new Error("doc.external is read-only");\n }\n\n get filesize() {\n return this._filesize;\n }\n\n set filesize(_) {\n throw new Error("doc.filesize is read-only");\n }\n\n get hidden() {\n return false;\n }\n\n set hidden(_) {\n throw new Error("doc.hidden is read-only");\n }\n\n get hostContainer() {\n return undefined;\n }\n\n set hostContainer(_) {\n throw new Error("doc.hostContainer is read-only");\n }\n\n get icons() {\n return undefined;\n }\n\n set icons(_) {\n throw new Error("doc.icons is read-only");\n }\n\n get info() {\n return this._info;\n }\n\n set info(_) {\n throw new Error("doc.info is read-only");\n }\n\n get innerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerAppWindowRect(_) {\n throw new Error("doc.innerAppWindowRect is read-only");\n }\n\n get innerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerDocWindowRect(_) {\n throw new Error("doc.innerDocWindowRect is read-only");\n }\n\n get isModal() {\n return false;\n }\n\n set isModal(_) {\n throw new Error("doc.isModal is read-only");\n }\n\n get keywords() {\n return this._keywords;\n }\n\n set keywords(_) {\n throw new Error("doc.keywords is read-only");\n }\n\n get layout() {\n return this._layout;\n }\n\n set layout(value) {\n if (typeof value !== "string") {\n return;\n }\n\n if (value !== "SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== "TwoColumnRight" && value !== "TwoPageRight") {\n value = "SinglePage";\n }\n\n this._send({\n command: "layout",\n value\n });\n\n this._layout = value;\n }\n\n get media() {\n return this._media;\n }\n\n set media(media) {\n this._media = media;\n }\n\n get metadata() {\n return this._metadata;\n }\n\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n get modDate() {\n return this._modDate;\n }\n\n set modDate(_) {\n throw new Error("doc.modDate is read-only");\n }\n\n get mouseX() {\n return 0;\n }\n\n set mouseX(_) {\n throw new Error("doc.mouseX is read-only");\n }\n\n get mouseY() {\n return 0;\n }\n\n set mouseY(_) {\n throw new Error("doc.mouseY is read-only");\n }\n\n get noautocomplete() {\n return this._noautocomplete;\n }\n\n set noautocomplete(noautocomplete) {\n this._noautocomplete = noautocomplete;\n }\n\n get nocache() {\n return this._nocache;\n }\n\n set nocache(nocache) {\n this._nocache = nocache;\n }\n\n get numFields() {\n return this._numFields;\n }\n\n set numFields(_) {\n throw new Error("doc.numFields is read-only");\n }\n\n get numPages() {\n return this._numPages;\n }\n\n set numPages(_) {\n throw new Error("doc.numPages is read-only");\n }\n\n get numTemplates() {\n return 0;\n }\n\n set numTemplates(_) {\n throw new Error("doc.numTemplates is read-only");\n }\n\n get outerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerAppWindowRect(_) {\n throw new Error("doc.outerAppWindowRect is read-only");\n }\n\n get outerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerDocWindowRect(_) {\n throw new Error("doc.outerDocWindowRect is read-only");\n }\n\n get pageNum() {\n return this._pageNum;\n }\n\n set pageNum(value) {\n if (typeof value !== "number" || value < 0 || value >= this._numPages) {\n return;\n }\n\n this._send({\n command: "page-num",\n value\n });\n\n this._pageNum = value;\n }\n\n get pageWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set pageWindowRect(_) {\n throw new Error("doc.pageWindowRect is read-only");\n }\n\n get path() {\n return "";\n }\n\n set path(_) {\n throw new Error("doc.path is read-only");\n }\n\n get permStatusReady() {\n return true;\n }\n\n set permStatusReady(_) {\n throw new Error("doc.permStatusReady is read-only");\n }\n\n get producer() {\n return this._producer;\n }\n\n set producer(_) {\n throw new Error("doc.producer is read-only");\n }\n\n get requiresFullSave() {\n return false;\n }\n\n set requiresFullSave(_) {\n throw new Error("doc.requiresFullSave is read-only");\n }\n\n get securityHandler() {\n return null;\n }\n\n set securityHandler(_) {\n throw new Error("doc.securityHandler is read-only");\n }\n\n get selectedAnnots() {\n return [];\n }\n\n set selectedAnnots(_) {\n throw new Error("doc.selectedAnnots is read-only");\n }\n\n get sounds() {\n return [];\n }\n\n set sounds(_) {\n throw new Error("doc.sounds is read-only");\n }\n\n get spellDictionaryOrder() {\n return this._spellDictionaryOrder;\n }\n\n set spellDictionaryOrder(spellDictionaryOrder) {\n this._spellDictionaryOrder = spellDictionaryOrder;\n }\n\n get spellLanguageOrder() {\n return this._spellLanguageOrder;\n }\n\n set spellLanguageOrder(spellLanguageOrder) {\n this._spellLanguageOrder = spellLanguageOrder;\n }\n\n get subject() {\n return this._subject;\n }\n\n set subject(_) {\n throw new Error("doc.subject is read-only");\n }\n\n get templates() {\n return [];\n }\n\n set templates(_) {\n throw new Error("doc.templates is read-only");\n }\n\n get title() {\n return this._title;\n }\n\n set title(_) {\n throw new Error("doc.title is read-only");\n }\n\n get URL() {\n return this._URL;\n }\n\n set URL(_) {\n throw new Error("doc.URL is read-only");\n }\n\n get viewState() {\n return undefined;\n }\n\n set viewState(_) {\n throw new Error("doc.viewState is read-only");\n }\n\n get xfa() {\n return this._xfa;\n }\n\n set xfa(_) {\n throw new Error("doc.xfa is read-only");\n }\n\n get XFAForeground() {\n return false;\n }\n\n set XFAForeground(_) {\n throw new Error("doc.XFAForeground is read-only");\n }\n\n get zoomType() {\n return this._zoomType;\n }\n\n set zoomType(type) {\n if (typeof type !== "string") {\n return;\n }\n\n switch (type) {\n case _constants.ZoomType.none:\n this._send({\n command: "zoom",\n value: 1\n });\n\n break;\n\n case _constants.ZoomType.fitP:\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case _constants.ZoomType.fitW:\n this._send({\n command: "zoom",\n value: "page-width"\n });\n\n break;\n\n case _constants.ZoomType.fitH:\n this._send({\n command: "zoom",\n value: "page-height"\n });\n\n break;\n\n case _constants.ZoomType.fitV:\n this._send({\n command: "zoom",\n value: "auto"\n });\n\n break;\n\n case _constants.ZoomType.pref:\n case _constants.ZoomType.refW:\n break;\n\n default:\n return;\n }\n\n this._zoomType = type;\n }\n\n get zoom() {\n return this._zoom;\n }\n\n set zoom(value) {\n if (typeof value !== "number" || value < 8.33 || value > 6400) {\n return;\n }\n\n this._send({\n command: "zoom",\n value: value / 100\n });\n }\n\n addAnnot() {}\n\n addField() {}\n\n addIcon() {}\n\n addLink() {}\n\n addRecipientListCryptFilter() {}\n\n addRequirement() {}\n\n addScript() {}\n\n addThumbnails() {}\n\n addWatermarkFromFile() {}\n\n addWatermarkFromText() {}\n\n addWeblinks() {}\n\n bringToFront() {}\n\n calculateNow() {\n this._eventDispatcher.calculateNow();\n }\n\n closeDoc() {}\n\n colorConvertPage() {}\n\n createDataObject() {}\n\n createTemplate() {}\n\n deletePages() {}\n\n deleteSound() {}\n\n embedDocAsDataObject() {}\n\n embedOutputIntent() {}\n\n encryptForRecipients() {}\n\n encryptUsingPolicy() {}\n\n exportAsFDF() {}\n\n exportAsFDFStr() {}\n\n exportAsText() {}\n\n exportAsXFDF() {}\n\n exportAsXFDFStr() {}\n\n exportDataObject() {}\n\n exportXFAData() {}\n\n extractPages() {}\n\n flattenPages() {}\n\n getAnnot() {}\n\n getAnnots() {}\n\n getAnnot3D() {}\n\n getAnnots3D() {}\n\n getColorConvertAction() {}\n\n getDataObject() {}\n\n getDataObjectContents() {}\n\n getField(cName) {\n if (typeof cName === "object") {\n cName = cName.cName;\n }\n\n if (typeof cName !== "string") {\n throw new TypeError("Invalid field name: must be a string");\n }\n\n const searchedField = this._fields.get(cName);\n\n if (searchedField) {\n return searchedField;\n }\n\n const parts = cName.split("#");\n let childIndex = NaN;\n\n if (parts.length === 2) {\n childIndex = Math.floor(parseFloat(parts[1]));\n cName = parts[0];\n }\n\n for (const [name, field] of this._fields.entries()) {\n if (name.endsWith(cName)) {\n if (!isNaN(childIndex)) {\n const children = this._getChildren(name);\n\n if (childIndex < 0 || childIndex >= children.length) {\n childIndex = 0;\n }\n\n if (childIndex < children.length) {\n this._fields.set(cName, children[childIndex]);\n\n return children[childIndex];\n }\n }\n\n this._fields.set(cName, field);\n\n return field;\n }\n }\n\n return null;\n }\n\n _getChildren(fieldName) {\n const len = fieldName.length;\n const children = [];\n const pattern = /^\\.[^.]+$/;\n\n for (const [name, field] of this._fields.entries()) {\n if (name.startsWith(fieldName)) {\n const finalPart = name.slice(len);\n\n if (finalPart.match(pattern)) {\n children.push(field);\n }\n }\n }\n\n return children;\n }\n\n getIcon() {}\n\n getLegalWarnings() {}\n\n getLinks() {}\n\n getNthFieldName(nIndex) {\n if (typeof nIndex === "object") {\n nIndex = nIndex.nIndex;\n }\n\n if (typeof nIndex !== "number") {\n throw new TypeError("Invalid field index: must be a number");\n }\n\n if (0 <= nIndex && nIndex < this.numFields) {\n return this._fieldNames[Math.trunc(nIndex)];\n }\n\n return null;\n }\n\n getNthTemplate() {\n return null;\n }\n\n getOCGs() {}\n\n getOCGOrder() {}\n\n getPageBox() {}\n\n getPageLabel() {}\n\n getPageNthWord() {}\n\n getPageNthWordQuads() {}\n\n getPageNumWords() {}\n\n getPageRotation() {}\n\n getPageTransition() {}\n\n getPrintParams() {\n if (!this._printParams) {\n this._printParams = new _print_params.PrintParams({\n lastPage: this._numPages - 1\n });\n }\n\n return this._printParams;\n }\n\n getSound() {}\n\n getTemplate() {}\n\n getURL() {}\n\n gotoNamedDest() {}\n\n importAnFDF() {}\n\n importAnXFDF() {}\n\n importDataObject() {}\n\n importIcon() {}\n\n importSound() {}\n\n importTextData() {}\n\n importXFAData() {}\n\n insertPages() {}\n\n mailDoc() {}\n\n mailForm() {}\n\n movePage() {}\n\n newPage() {}\n\n openDataObject() {}\n\n print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\n if (typeof bUI === "object") {\n nStart = bUI.nStart;\n nEnd = bUI.nEnd;\n bSilent = bUI.bSilent;\n bShrinkToFit = bUI.bShrinkToFit;\n bPrintAsImage = bUI.bPrintAsImage;\n bReverse = bUI.bReverse;\n bAnnotations = bUI.bAnnotations;\n printParams = bUI.printParams;\n bUI = bUI.bUI;\n }\n\n if (printParams) {\n nStart = printParams.firstPage;\n nEnd = printParams.lastPage;\n }\n\n if (typeof nStart === "number") {\n nStart = Math.max(0, Math.trunc(nStart));\n } else {\n nStart = 0;\n }\n\n if (typeof nEnd === "number") {\n nEnd = Math.max(0, Math.trunc(nEnd));\n } else {\n nEnd = -1;\n }\n\n this._send({\n command: "print",\n start: nStart,\n end: nEnd\n });\n }\n\n removeDataObject() {}\n\n removeField() {}\n\n removeIcon() {}\n\n removeLinks() {}\n\n removeRequirement() {}\n\n removeScript() {}\n\n removeTemplate() {}\n\n removeThumbnails() {}\n\n removeWeblinks() {}\n\n replacePages() {}\n\n resetForm(aFields = null) {\n if (aFields && !Array.isArray(aFields) && typeof aFields === "object") {\n aFields = aFields.aFields;\n }\n\n let mustCalculate = false;\n\n if (aFields) {\n for (const fieldName of aFields) {\n if (!fieldName) {\n continue;\n }\n\n const field = this.getField(fieldName);\n\n if (!field) {\n continue;\n }\n\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n mustCalculate = true;\n }\n } else {\n mustCalculate = this._fields.size !== 0;\n\n for (const field of this._fields.values()) {\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n }\n }\n\n if (mustCalculate) {\n this.calculateNow();\n }\n }\n\n saveAs() {}\n\n scroll() {}\n\n selectPageNthWord() {}\n\n setAction() {}\n\n setDataObjectContents() {}\n\n setOCGOrder() {}\n\n setPageAction() {}\n\n setPageBoxes() {}\n\n setPageLabels() {}\n\n setPageRotations() {}\n\n setPageTabOrder() {}\n\n setPageTransitions() {}\n\n spawnPageFromTemplate() {}\n\n submitForm() {}\n\n syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n constructor(data) {\n this.binaryOk = true;\n this.bitmapDPI = 150;\n this.booklet = {\n binding: 0,\n duplexMode: 0,\n subsetFrom: 0,\n subsetTo: -1\n };\n this.colorOverride = 0;\n this.colorProfile = "";\n this.constants = Object.freeze({\n bookletBindings: Object.freeze({\n Left: 0,\n Right: 1,\n LeftTall: 2,\n RightTall: 3\n }),\n bookletDuplexMode: Object.freeze({\n BothSides: 0,\n FrontSideOnly: 1,\n BasicSideOnly: 2\n }),\n colorOverrides: Object.freeze({\n auto: 0,\n gray: 1,\n mono: 2\n }),\n fontPolicies: Object.freeze({\n everyPage: 0,\n jobStart: 1,\n pageRange: 2\n }),\n handling: Object.freeze({\n none: 0,\n fit: 1,\n shrink: 2,\n tileAll: 3,\n tileLarge: 4,\n nUp: 5,\n booklet: 6\n }),\n interactionLevel: Object.freeze({\n automatic: 0,\n full: 1,\n silent: 2\n }),\n nUpPageOrders: Object.freeze({\n Horizontal: 0,\n HorizontalReversed: 1,\n Vertical: 2\n }),\n printContents: Object.freeze({\n doc: 0,\n docAndComments: 1,\n formFieldsOnly: 2\n }),\n flagValues: Object.freeze({\n applyOverPrint: 1,\n applySoftProofSettings: 1 << 1,\n applyWorkingColorSpaces: 1 << 2,\n emitHalftones: 1 << 3,\n emitPostScriptXObjects: 1 << 4,\n emitFormsAsPSForms: 1 << 5,\n maxJP2KRes: 1 << 6,\n setPageSize: 1 << 7,\n suppressBG: 1 << 8,\n suppressCenter: 1 << 9,\n suppressCJKFontSubst: 1 << 10,\n suppressCropClip: 1 << 1,\n suppressRotate: 1 << 12,\n suppressTransfer: 1 << 13,\n suppressUCR: 1 << 14,\n useTrapAnnots: 1 << 15,\n usePrintersMarks: 1 << 16\n }),\n rasterFlagValues: Object.freeze({\n textToOutline: 1,\n strokesToOutline: 1 << 1,\n allowComplexClip: 1 << 2,\n preserveOverprint: 1 << 3\n }),\n subsets: Object.freeze({\n all: 0,\n even: 1,\n odd: 2\n }),\n tileMarks: Object.freeze({\n none: 0,\n west: 1,\n east: 2\n }),\n usages: Object.freeze({\n auto: 0,\n use: 1,\n noUse: 2\n })\n });\n this.downloadFarEastFonts = false;\n this.fileName = "";\n this.firstPage = 0;\n this.flags = 0;\n this.fontPolicy = 0;\n this.gradientDPI = 150;\n this.interactive = 1;\n this.lastPage = data.lastPage;\n this.npUpAutoRotate = false;\n this.npUpNumPagesH = 2;\n this.npUpNumPagesV = 2;\n this.npUpPageBorder = false;\n this.npUpPageOrder = 0;\n this.pageHandling = 0;\n this.pageSubset = 0;\n this.printAsImage = false;\n this.printContent = 0;\n this.printerName = "";\n this.psLevel = 0;\n this.rasterFlags = 0;\n this.reversePages = false;\n this.tileLabel = false;\n this.tileMark = 0;\n this.tileOverlap = 0;\n this.tileScale = 1.0;\n this.transparencyLevel = 75;\n this.usePrinterCRD = 0;\n this.useT1Conversion = 0;\n }\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n constructor() {\n this.nosend = new Set(["delay"]);\n }\n\n get(obj, prop) {\n if (prop in obj._expandos) {\n const val = obj._expandos[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const val = obj[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n return undefined;\n }\n\n set(obj, prop, value) {\n if (obj._kidIds) {\n obj._kidIds.forEach(id => {\n obj._appObjects[id].wrapped[prop] = value;\n });\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const old = obj[prop];\n obj[prop] = value;\n\n if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== "function") {\n const data = {\n id: obj._id\n };\n data[prop] = obj[prop];\n\n if (!obj._siblings) {\n obj._send(data);\n } else {\n data.siblings = obj._siblings;\n\n obj._send(data);\n }\n }\n } else {\n obj._expandos[prop] = value;\n }\n\n return true;\n }\n\n has(obj, prop) {\n return prop in obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n }\n\n getPrototypeOf(obj) {\n return null;\n }\n\n setPrototypeOf(obj, proto) {\n return false;\n }\n\n isExtensible(obj) {\n return true;\n }\n\n preventExtensions(obj) {\n return false;\n }\n\n getOwnPropertyDescriptor(obj, prop) {\n if (prop in obj._expandos) {\n return {\n configurable: true,\n enumerable: true,\n value: obj._expandos[prop]\n };\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n return {\n configurable: true,\n enumerable: true,\n value: obj[prop]\n };\n }\n\n return undefined;\n }\n\n defineProperty(obj, key, descriptor) {\n Object.defineProperty(obj._expandos, key, descriptor);\n return true;\n }\n\n deleteProperty(obj, prop) {\n if (prop in obj._expandos) {\n delete obj._expandos[prop];\n }\n }\n\n ownKeys(obj) {\n const fromExpandos = Reflect.ownKeys(obj._expandos);\n const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n return fromExpandos.concat(fromObj);\n }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._scandCache = new Map();\n this._months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n this._days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n this.MILLISECONDS_IN_DAY = 86400000;\n this.MILLISECONDS_IN_WEEK = 604800000;\n this._externalCall = data.externalCall;\n }\n\n printf(...args) {\n if (args.length === 0) {\n throw new Error("Invalid number of params in printf");\n }\n\n if (typeof args[0] !== "string") {\n throw new TypeError("First argument of printf must be a string");\n }\n\n const pattern = /%(,[0-4])?([+ 0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n const PLUS = 1;\n const SPACE = 2;\n const ZERO = 4;\n const HASH = 8;\n let i = 0;\n return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\n if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar !== "x") {\n const buf = ["%"];\n\n for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\n if (str) {\n buf.push(str);\n }\n }\n\n return buf.join("");\n }\n\n i++;\n\n if (i === args.length) {\n throw new Error("Not enough arguments in printf");\n }\n\n const arg = args[i];\n\n if (cConvChar === "s") {\n return arg.toString();\n }\n\n let flags = 0;\n\n if (cFlags) {\n for (const flag of cFlags) {\n switch (flag) {\n case "+":\n flags |= PLUS;\n break;\n\n case " ":\n flags |= SPACE;\n break;\n\n case "0":\n flags |= ZERO;\n break;\n\n case "#":\n flags |= HASH;\n break;\n }\n }\n }\n\n cFlags = flags;\n\n if (nWidth) {\n nWidth = parseInt(nWidth);\n }\n\n let intPart = Math.trunc(arg);\n\n if (cConvChar === "x") {\n let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n if (nWidth !== undefined) {\n hex = hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n }\n\n if (cFlags & HASH) {\n hex = `0x${hex}`;\n }\n\n return hex;\n }\n\n if (nPrecision) {\n nPrecision = parseInt(nPrecision.substring(1));\n }\n\n nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n const separators = {\n 0: [",", "."],\n 1: ["", "."],\n 2: [".", ","],\n 3: ["", ","],\n 4: ["\'", "."]\n };\
|