Commit
+4953 -3117 +/-64 browse
1 | diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml |
2 | new file mode 100644 |
3 | index 0000000..e2b24cc |
4 | --- /dev/null |
5 | +++ b/.github/FUNDING.yml |
6 | @@ -0,0 +1,13 @@ |
7 | + # These are supported funding model platforms |
8 | + |
9 | + github: stalwartlabs |
10 | + patreon: # Replace with a single Patreon username |
11 | + open_collective: # Replace with a single Open Collective username |
12 | + ko_fi: # Replace with a single Ko-fi username |
13 | + tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel |
14 | + community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry |
15 | + liberapay: # Replace with a single Liberapay username |
16 | + issuehunt: # Replace with a single IssueHunt username |
17 | + otechie: # Replace with a single Otechie username |
18 | + lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry |
19 | + custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] |
20 | diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml |
21 | new file mode 100644 |
22 | index 0000000..5c2da0c |
23 | --- /dev/null |
24 | +++ b/.github/workflows/rust.yml |
25 | @@ -0,0 +1,22 @@ |
26 | + name: "CI" |
27 | + |
28 | + on: |
29 | + push: |
30 | + branches: [ main ] |
31 | + pull_request: |
32 | + branches: [ main ] |
33 | + |
34 | + env: |
35 | + CARGO_TERM_COLOR: always |
36 | + |
37 | + jobs: |
38 | + build: |
39 | + |
40 | + runs-on: ubuntu-latest |
41 | + |
42 | + steps: |
43 | + - uses: actions/checkout@v2 |
44 | + - name: Build |
45 | + run: cargo build --verbose |
46 | + - name: Run tests |
47 | + run: cargo test --verbose |
48 | diff --git a/CHANGELOG.md b/CHANGELOG.md |
49 | new file mode 100644 |
50 | index 0000000..173f38e |
51 | --- /dev/null |
52 | +++ b/CHANGELOG.md |
53 | @@ -0,0 +1,3 @@ |
54 | + mail-auth 0.1.0 |
55 | + ================================ |
56 | + - Initial release. |
57 | diff --git a/Cargo.toml b/Cargo.toml |
58 | index 2ae36a2..a7fbffe 100644 |
59 | --- a/Cargo.toml |
60 | +++ b/Cargo.toml |
61 | @@ -1,12 +1,22 @@ |
62 | [package] |
63 | name = "mail-auth" |
64 | + description = "DKIM, ARC, SPF and DMARC library for Rust" |
65 | version = "0.1.0" |
66 | edition = "2021" |
67 | + authors = [ "Stalwart Labs <hello@stalw.art>"] |
68 | + license = "Apache-2.0 OR MIT" |
69 | + repository = "https://github.com/stalwartlabs/mail-auth" |
70 | + homepage = "https://github.com/stalwartlabs/mail-auth" |
71 | + keywords = ["dkim", "dmarc", "spf", "arc", "email", "mail", "e-mail"] |
72 | + categories = ["email", "authentication"] |
73 | + readme = "README.md" |
74 | + resolver = "2" |
75 | |
76 | + [lib] |
77 | + doctest = false |
78 | |
79 | [dependencies] |
80 | - #mail-parser = { version = "0.7", git = "https://github.com/stalwartlabs/mail-parser", features = ["ludicrous_mode", "full_encoding"] |
81 | - mail-parser = { path = "/home/vagrant/code/mail-parser", features = ["ludicrous_mode", "full_encoding"] } |
82 | + mail-parser = { version = "0.8", git = "https://github.com/stalwartlabs/mail-parser", features = ["ludicrous_mode", "full_encoding"] } |
83 | mail-builder = { version = "0.2.4", git = "https://github.com/stalwartlabs/mail-builder", features = ["ludicrous_mode"] } |
84 | rsa = {version = "0.7.0"} |
85 | ed25519-dalek = "1.0.1" |
86 | diff --git a/LICENSE-APACHE b/LICENSE-APACHE |
87 | new file mode 100644 |
88 | index 0000000..16fe87b |
89 | --- /dev/null |
90 | +++ b/LICENSE-APACHE |
91 | @@ -0,0 +1,201 @@ |
92 | + Apache License |
93 | + Version 2.0, January 2004 |
94 | + http://www.apache.org/licenses/ |
95 | + |
96 | + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
97 | + |
98 | + 1. Definitions. |
99 | + |
100 | + "License" shall mean the terms and conditions for use, reproduction, |
101 | + and distribution as defined by Sections 1 through 9 of this document. |
102 | + |
103 | + "Licensor" shall mean the copyright owner or entity authorized by |
104 | + the copyright owner that is granting the License. |
105 | + |
106 | + "Legal Entity" shall mean the union of the acting entity and all |
107 | + other entities that control, are controlled by, or are under common |
108 | + control with that entity. For the purposes of this definition, |
109 | + "control" means (i) the power, direct or indirect, to cause the |
110 | + direction or management of such entity, whether by contract or |
111 | + otherwise, or (ii) ownership of fifty percent (50%) or more of the |
112 | + outstanding shares, or (iii) beneficial ownership of such entity. |
113 | + |
114 | + "You" (or "Your") shall mean an individual or Legal Entity |
115 | + exercising permissions granted by this License. |
116 | + |
117 | + "Source" form shall mean the preferred form for making modifications, |
118 | + including but not limited to software source code, documentation |
119 | + source, and configuration files. |
120 | + |
121 | + "Object" form shall mean any form resulting from mechanical |
122 | + transformation or translation of a Source form, including but |
123 | + not limited to compiled object code, generated documentation, |
124 | + and conversions to other media types. |
125 | + |
126 | + "Work" shall mean the work of authorship, whether in Source or |
127 | + Object form, made available under the License, as indicated by a |
128 | + copyright notice that is included in or attached to the work |
129 | + (an example is provided in the Appendix below). |
130 | + |
131 | + "Derivative Works" shall mean any work, whether in Source or Object |
132 | + form, that is based on (or derived from) the Work and for which the |
133 | + editorial revisions, annotations, elaborations, or other modifications |
134 | + represent, as a whole, an original work of authorship. For the purposes |
135 | + of this License, Derivative Works shall not include works that remain |
136 | + separable from, or merely link (or bind by name) to the interfaces of, |
137 | + the Work and Derivative Works thereof. |
138 | + |
139 | + "Contribution" shall mean any work of authorship, including |
140 | + the original version of the Work and any modifications or additions |
141 | + to that Work or Derivative Works thereof, that is intentionally |
142 | + submitted to Licensor for inclusion in the Work by the copyright owner |
143 | + or by an individual or Legal Entity authorized to submit on behalf of |
144 | + the copyright owner. For the purposes of this definition, "submitted" |
145 | + means any form of electronic, verbal, or written communication sent |
146 | + to the Licensor or its representatives, including but not limited to |
147 | + communication on electronic mailing lists, source code control systems, |
148 | + and issue tracking systems that are managed by, or on behalf of, the |
149 | + Licensor for the purpose of discussing and improving the Work, but |
150 | + excluding communication that is conspicuously marked or otherwise |
151 | + designated in writing by the copyright owner as "Not a Contribution." |
152 | + |
153 | + "Contributor" shall mean Licensor and any individual or Legal Entity |
154 | + on behalf of whom a Contribution has been received by Licensor and |
155 | + subsequently incorporated within the Work. |
156 | + |
157 | + 2. Grant of Copyright License. Subject to the terms and conditions of |
158 | + this License, each Contributor hereby grants to You a perpetual, |
159 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
160 | + copyright license to reproduce, prepare Derivative Works of, |
161 | + publicly display, publicly perform, sublicense, and distribute the |
162 | + Work and such Derivative Works in Source or Object form. |
163 | + |
164 | + 3. Grant of Patent License. Subject to the terms and conditions of |
165 | + this License, each Contributor hereby grants to You a perpetual, |
166 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
167 | + (except as stated in this section) patent license to make, have made, |
168 | + use, offer to sell, sell, import, and otherwise transfer the Work, |
169 | + where such license applies only to those patent claims licensable |
170 | + by such Contributor that are necessarily infringed by their |
171 | + Contribution(s) alone or by combination of their Contribution(s) |
172 | + with the Work to which such Contribution(s) was submitted. If You |
173 | + institute patent litigation against any entity (including a |
174 | + cross-claim or counterclaim in a lawsuit) alleging that the Work |
175 | + or a Contribution incorporated within the Work constitutes direct |
176 | + or contributory patent infringement, then any patent licenses |
177 | + granted to You under this License for that Work shall terminate |
178 | + as of the date such litigation is filed. |
179 | + |
180 | + 4. Redistribution. You may reproduce and distribute copies of the |
181 | + Work or Derivative Works thereof in any medium, with or without |
182 | + modifications, and in Source or Object form, provided that You |
183 | + meet the following conditions: |
184 | + |
185 | + (a) You must give any other recipients of the Work or |
186 | + Derivative Works a copy of this License; and |
187 | + |
188 | + (b) You must cause any modified files to carry prominent notices |
189 | + stating that You changed the files; and |
190 | + |
191 | + (c) You must retain, in the Source form of any Derivative Works |
192 | + that You distribute, all copyright, patent, trademark, and |
193 | + attribution notices from the Source form of the Work, |
194 | + excluding those notices that do not pertain to any part of |
195 | + the Derivative Works; and |
196 | + |
197 | + (d) If the Work includes a "NOTICE" text file as part of its |
198 | + distribution, then any Derivative Works that You distribute must |
199 | + include a readable copy of the attribution notices contained |
200 | + within such NOTICE file, excluding those notices that do not |
201 | + pertain to any part of the Derivative Works, in at least one |
202 | + of the following places: within a NOTICE text file distributed |
203 | + as part of the Derivative Works; within the Source form or |
204 | + documentation, if provided along with the Derivative Works; or, |
205 | + within a display generated by the Derivative Works, if and |
206 | + wherever such third-party notices normally appear. The contents |
207 | + of the NOTICE file are for informational purposes only and |
208 | + do not modify the License. You may add Your own attribution |
209 | + notices within Derivative Works that You distribute, alongside |
210 | + or as an addendum to the NOTICE text from the Work, provided |
211 | + that such additional attribution notices cannot be construed |
212 | + as modifying the License. |
213 | + |
214 | + You may add Your own copyright statement to Your modifications and |
215 | + may provide additional or different license terms and conditions |
216 | + for use, reproduction, or distribution of Your modifications, or |
217 | + for any such Derivative Works as a whole, provided Your use, |
218 | + reproduction, and distribution of the Work otherwise complies with |
219 | + the conditions stated in this License. |
220 | + |
221 | + 5. Submission of Contributions. Unless You explicitly state otherwise, |
222 | + any Contribution intentionally submitted for inclusion in the Work |
223 | + by You to the Licensor shall be under the terms and conditions of |
224 | + this License, without any additional terms or conditions. |
225 | + Notwithstanding the above, nothing herein shall supersede or modify |
226 | + the terms of any separate license agreement you may have executed |
227 | + with Licensor regarding such Contributions. |
228 | + |
229 | + 6. Trademarks. This License does not grant permission to use the trade |
230 | + names, trademarks, service marks, or product names of the Licensor, |
231 | + except as required for reasonable and customary use in describing the |
232 | + origin of the Work and reproducing the content of the NOTICE file. |
233 | + |
234 | + 7. Disclaimer of Warranty. Unless required by applicable law or |
235 | + agreed to in writing, Licensor provides the Work (and each |
236 | + Contributor provides its Contributions) on an "AS IS" BASIS, |
237 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
238 | + implied, including, without limitation, any warranties or conditions |
239 | + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
240 | + PARTICULAR PURPOSE. You are solely responsible for determining the |
241 | + appropriateness of using or redistributing the Work and assume any |
242 | + risks associated with Your exercise of permissions under this License. |
243 | + |
244 | + 8. Limitation of Liability. In no event and under no legal theory, |
245 | + whether in tort (including negligence), contract, or otherwise, |
246 | + unless required by applicable law (such as deliberate and grossly |
247 | + negligent acts) or agreed to in writing, shall any Contributor be |
248 | + liable to You for damages, including any direct, indirect, special, |
249 | + incidental, or consequential damages of any character arising as a |
250 | + result of this License or out of the use or inability to use the |
251 | + Work (including but not limited to damages for loss of goodwill, |
252 | + work stoppage, computer failure or malfunction, or any and all |
253 | + other commercial damages or losses), even if such Contributor |
254 | + has been advised of the possibility of such damages. |
255 | + |
256 | + 9. Accepting Warranty or Additional Liability. While redistributing |
257 | + the Work or Derivative Works thereof, You may choose to offer, |
258 | + and charge a fee for, acceptance of support, warranty, indemnity, |
259 | + or other liability obligations and/or rights consistent with this |
260 | + License. However, in accepting such obligations, You may act only |
261 | + on Your own behalf and on Your sole responsibility, not on behalf |
262 | + of any other Contributor, and only if You agree to indemnify, |
263 | + defend, and hold each Contributor harmless for any liability |
264 | + incurred by, or claims asserted against, such Contributor by reason |
265 | + of your accepting any such warranty or additional liability. |
266 | + |
267 | + END OF TERMS AND CONDITIONS |
268 | + |
269 | + APPENDIX: How to apply the Apache License to your work. |
270 | + |
271 | + To apply the Apache License to your work, attach the following |
272 | + boilerplate notice, with the fields enclosed by brackets "[]" |
273 | + replaced with your own identifying information. (Don't include |
274 | + the brackets!) The text should be enclosed in the appropriate |
275 | + comment syntax for the file format. We also recommend that a |
276 | + file or class name and description of purpose be included on the |
277 | + same "printed page" as the copyright notice for easier |
278 | + identification within third-party archives. |
279 | + |
280 | + Copyright [yyyy] [name of copyright owner] |
281 | + |
282 | + Licensed under the Apache License, Version 2.0 (the "License"); |
283 | + you may not use this file except in compliance with the License. |
284 | + You may obtain a copy of the License at |
285 | + |
286 | + http://www.apache.org/licenses/LICENSE-2.0 |
287 | + |
288 | + Unless required by applicable law or agreed to in writing, software |
289 | + distributed under the License is distributed on an "AS IS" BASIS, |
290 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
291 | + See the License for the specific language governing permissions and |
292 | + limitations under the License. |
293 | diff --git a/LICENSE-MIT b/LICENSE-MIT |
294 | new file mode 100644 |
295 | index 0000000..31aa793 |
296 | --- /dev/null |
297 | +++ b/LICENSE-MIT |
298 | @@ -0,0 +1,23 @@ |
299 | + Permission is hereby granted, free of charge, to any |
300 | + person obtaining a copy of this software and associated |
301 | + documentation files (the "Software"), to deal in the |
302 | + Software without restriction, including without |
303 | + limitation the rights to use, copy, modify, merge, |
304 | + publish, distribute, sublicense, and/or sell copies of |
305 | + the Software, and to permit persons to whom the Software |
306 | + is furnished to do so, subject to the following |
307 | + conditions: |
308 | + |
309 | + The above copyright notice and this permission notice |
310 | + shall be included in all copies or substantial portions |
311 | + of the Software. |
312 | + |
313 | + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF |
314 | + ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
315 | + TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
316 | + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
317 | + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
318 | + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
319 | + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR |
320 | + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
321 | + DEALINGS IN THE SOFTWARE. |
322 | diff --git a/README.md b/README.md |
323 | index 243c8b6..4acd5e8 100644 |
324 | --- a/README.md |
325 | +++ b/README.md |
326 | @@ -1,2 +1,243 @@ |
327 | # mail-auth |
328 | - DKIM, SPF and DMARC library for Rust |
329 | + |
330 | + [![crates.io](https://img.shields.io/crates/v/mail-auth)](https://crates.io/crates/mail-auth) |
331 | + [![build](https://github.com/stalwartlabs/mail-auth/actions/workflows/rust.yml/badge.svg)](https://github.com/stalwartlabs/mail-auth/actions/workflows/rust.yml) |
332 | + [![docs.rs](https://img.shields.io/docsrs/mail-auth)](https://docs.rs/mail-auth) |
333 | + [![crates.io](https://img.shields.io/crates/l/mail-auth)](http://www.apache.org/licenses/LICENSE-2.0) |
334 | + |
335 | + _mail-auth_ is an e-mail authentication and reporting library written in Rust that supports the **DKIM**, **ARC**, **SPF** and **DMARC** |
336 | + protocols. The library aims to be fast, safe and correct while supporting all major [message authentication and reporting RFCs](#conformed-rfcs). |
337 | + |
338 | + Features: |
339 | + |
340 | + - **DomainKeys Identified Mail (DKIM)**: |
341 | + - ED25519-SHA256 (Edwards-Curve Digital Signature Algorithm), RSA-SHA256 and RSA-SHA1 signing and verification. |
342 | + - DKIM Authorized Third-Party Signatures. |
343 | + - DKIM failure reporting using the Abuse Reporting Format. |
344 | + - **Authenticated Received Chain (ARC)**: |
345 | + - ED25519-SHA256 (Edwards-Curve Digital Signature Algorithm), RSA-SHA256 and RSA-SHA1 chain verification. |
346 | + - ARC sealing. |
347 | + - **Sender Policy Framework (SPF)**: |
348 | + - Policy evalution. |
349 | + - SPF failure reporting using the Abuse Reporting Format. |
350 | + - **Domain-based Message Authentication, Reporting, and Conformance (DMARC)**: |
351 | + - Policy evaluation. |
352 | + - DMARC aggregate report parsing and generation. |
353 | + - **Abuse Reporting Format (ARF)**: |
354 | + - Abuse and Authentication failure reporting. |
355 | + - Feedback report parsing and generation. |
356 | + |
357 | + |
358 | + ## Usage examples |
359 | + |
360 | + ### DKIM Signature Verification |
361 | + |
362 | + ```rust |
363 | + // Create a resolver using Cloudflare DNS |
364 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
365 | + |
366 | + // Parse message |
367 | + let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
368 | + |
369 | + // Validate signature |
370 | + let result = resolver.verify_dkim(&authenticated_message).await; |
371 | + |
372 | + // Make sure all signatures passed verification |
373 | + assert!(result.iter().all(|s| s.result() == &DKIMResult::Pass)); |
374 | + ``` |
375 | + |
376 | + ### DKIM Signing |
377 | + |
378 | + ```rust |
379 | + // Sign an e-mail message using RSA-SHA256 |
380 | + let pk_rsa = PrivateKey::from_rsa_pkcs1_pem(RSA_PRIVATE_KEY).unwrap(); |
381 | + let signature_rsa = Signature::new() |
382 | + .headers(["From", "To", "Subject"]) |
383 | + .domain("example.com") |
384 | + .selector("default") |
385 | + .sign(RFC5322_MESSAGE.as_bytes(), &pk_rsa) |
386 | + .unwrap(); |
387 | + |
388 | + // Sign an e-mail message using ED25519-SHA256 |
389 | + let pk_ed = PrivateKey::from_ed25519( |
390 | + &base64_decode(ED25519_PUBLIC_KEY.as_bytes()).unwrap(), |
391 | + &base64_decode(ED25519_PRIVATE_KEY.as_bytes()).unwrap(), |
392 | + ) |
393 | + .unwrap(); |
394 | + let signature_ed = Signature::new() |
395 | + .headers(["From", "To", "Subject"]) |
396 | + .domain("example.com") |
397 | + .selector("default-ed") |
398 | + .sign(RFC5322_MESSAGE.as_bytes(), &pk_ed) |
399 | + .unwrap(); |
400 | + |
401 | + // Print the message including both signatures to stdout |
402 | + println!( |
403 | + "{}{}{}", |
404 | + signature_rsa.to_header(), |
405 | + signature_ed.to_header(), |
406 | + RFC5322_MESSAGE |
407 | + ); |
408 | + ``` |
409 | + |
410 | + ### ARC Chain Verification |
411 | + |
412 | + ```rust |
413 | + // Create a resolver using Cloudflare DNS |
414 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
415 | + |
416 | + // Parse message |
417 | + let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
418 | + |
419 | + // Validate ARC chain |
420 | + let result = resolver.verify_arc(&authenticated_message).await; |
421 | + |
422 | + // Make sure ARC passed verification |
423 | + assert_eq!(result.result(), &DKIMResult::Pass); |
424 | + ``` |
425 | + |
426 | + ### ARC Chain Sealing |
427 | + |
428 | + ```rust |
429 | + // Create a resolver using Cloudflare DNS |
430 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
431 | + |
432 | + // Parse message to be sealed |
433 | + let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
434 | + |
435 | + // Verify ARC and DKIM signatures |
436 | + let arc_result = resolver.verify_arc(&authenticated_message).await; |
437 | + let dkim_result = resolver.verify_dkim(&authenticated_message).await; |
438 | + |
439 | + // Build Authenticated-Results header |
440 | + let auth_results = AuthenticationResults::new("mx.mydomain.org") |
441 | + .with_dkim_result(&dkim_result, "sender@example.org") |
442 | + .with_arc_result(&arc_result, "127.0.0.1".parse().unwrap()); |
443 | + |
444 | + // Seal message |
445 | + if arc_result.can_be_sealed() { |
446 | + // Seal the e-mail message using RSA-SHA256 |
447 | + let pk_rsa = PrivateKey::from_rsa_pkcs1_pem(RSA_PRIVATE_KEY).unwrap(); |
448 | + let arc_set = ARC::new(&auth_results) |
449 | + .domain("example.org") |
450 | + .selector("default") |
451 | + .headers(["From", "To", "Subject", "DKIM-Signature"]) |
452 | + .seal(&authenticated_message, &arc_result, &pk_rsa) |
453 | + .unwrap(); |
454 | + |
455 | + // Print the sealed message to stdout |
456 | + println!("{}{}", arc_set.to_header(), RFC5322_MESSAGE) |
457 | + } else { |
458 | + eprintln!("The message could not be sealed, probably an ARC chain with cv=fail was found.") |
459 | + } |
460 | + ``` |
461 | + |
462 | + ### SPF Policy Evaluation |
463 | + |
464 | + ```rust |
465 | + // Create a resolver using Cloudflare DNS |
466 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
467 | + |
468 | + // Verify HELO identity |
469 | + let result = resolver |
470 | + .verify_spf_helo("127.0.0.1".parse().unwrap(), "gmail.com") |
471 | + .await; |
472 | + assert_eq!(result.result(), SPFResult::Fail); |
473 | + |
474 | + // Verify MAIL-FROM identity |
475 | + let result = resolver |
476 | + .verify_spf_sender("::1".parse().unwrap(), "gmail.com", "sender@gmail.com") |
477 | + .await; |
478 | + assert_eq!(result.result(), SPFResult::Fail); |
479 | + ``` |
480 | + |
481 | + ### DMARC Policy Evaluation |
482 | + |
483 | + ```rust |
484 | + // Create a resolver using Cloudflare DNS |
485 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
486 | + |
487 | + // Verify DKIM signatures |
488 | + let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
489 | + let dkim_result = resolver.verify_dkim(&authenticated_message).await; |
490 | + |
491 | + // Verify SPF MAIL-FROM identity |
492 | + let spf_result = resolver |
493 | + .verify_spf_sender("::1".parse().unwrap(), "example.org", "sender@example.org") |
494 | + .await; |
495 | + |
496 | + // Verify DMARC |
497 | + let dmarc_result = resolver |
498 | + .verify_dmarc( |
499 | + &authenticated_message, |
500 | + &dkim_result, |
501 | + "example.org", |
502 | + &spf_result, |
503 | + ) |
504 | + .await; |
505 | + assert_eq!(dmarc_result.dkim_result(), &DMARCResult::Pass); |
506 | + assert_eq!(dmarc_result.spf_result(), &DMARCResult::Pass); |
507 | + ``` |
508 | + |
509 | + More examples available under the [examples](examples) directory. |
510 | + |
511 | + ## Testing & Fuzzing |
512 | + |
513 | + To run the testsuite: |
514 | + |
515 | + ```bash |
516 | + $ cargo test --all-features |
517 | + ``` |
518 | + |
519 | + To fuzz the library with `cargo-fuzz`: |
520 | + |
521 | + ```bash |
522 | + $ cargo +nightly fuzz run mail_parser |
523 | + ``` |
524 | + |
525 | + ## Conformed RFCs |
526 | + |
527 | + ### DKIM |
528 | + |
529 | + - [RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures](https://datatracker.ietf.org/doc/html/rfc6376) |
530 | + - [RFC 6541 - DomainKeys Identified Mail (DKIM) Authorized Third-Party Signatures](https://datatracker.ietf.org/doc/html/rfc6541) |
531 | + - [RFC 6651 - Extensions to DomainKeys Identified Mail (DKIM) for Failure Reporting](https://datatracker.ietf.org/doc/html/rfc6651) |
532 | + - [RFC 8032 - Edwards-Curve Digital Signature Algorithm (EdDSA)](https://datatracker.ietf.org/doc/html/rfc8032) |
533 | + - [RFC 4686 - Analysis of Threats Motivating DomainKeys Identified Mail (DKIM)](https://datatracker.ietf.org/doc/html/rfc4686) |
534 | + - [RFC 5016 - Requirements for a DomainKeys Identified Mail (DKIM) Signing Practices Protocol](https://datatracker.ietf.org/doc/html/rfc5016) |
535 | + - [RFC 5585 - DomainKeys Identified Mail (DKIM) Service Overview](https://datatracker.ietf.org/doc/html/rfc5585) |
536 | + - [RFC 5672 - DomainKeys Identified Mail (DKIM) Signatures -- Update](https://datatracker.ietf.org/doc/html/rfc5672) |
537 | + - [RFC 5863 - DomainKeys Identified Mail (DKIM) Development, Deployment, and Operations](https://datatracker.ietf.org/doc/html/rfc5863) |
538 | + - [RFC 6377 - DomainKeys Identified Mail (DKIM) and Mailing Lists](https://datatracker.ietf.org/doc/html/rfc6377) |
539 | + |
540 | + ### SPF |
541 | + - [RFC 7208 - Sender Policy Framework (SPF)](https://datatracker.ietf.org/doc/html/rfc7208) |
542 | + - [RFC 6652 - Sender Policy Framework (SPF) Authentication Failure Reporting Using the Abuse Reporting Format](https://datatracker.ietf.org/doc/html/rfc6652) |
543 | + |
544 | + ### DMARC |
545 | + - [RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)](https://datatracker.ietf.org/doc/html/rfc7489) |
546 | + - [RFC 8617 - The Authenticated Received Chain (ARC) Protocol](https://datatracker.ietf.org/doc/html/rfc8617) |
547 | + - [RFC 8601 - Message Header Field for Indicating Message Authentication Status](https://datatracker.ietf.org/doc/html/rfc8601) |
548 | + - [RFC 8616 - Email Authentication for Internationalized Mail](https://datatracker.ietf.org/doc/html/rfc8616) |
549 | + - [RFC 7960 - Interoperability Issues between Domain-based Message Authentication, Reporting, and Conformance (DMARC) and Indirect Email Flows](https://datatracker.ietf.org/doc/html/rfc7960) |
550 | + |
551 | + ### ARF |
552 | + - [RFC 5965 - An Extensible Format for Email Feedback Reports](https://datatracker.ietf.org/doc/html/rfc5965) |
553 | + - [RFC 6430 - Email Feedback Report Type Value: not-spam](https://datatracker.ietf.org/doc/html/rfc6430) |
554 | + - [RFC 6590 - Redaction of Potentially Sensitive Data from Mail Abuse Reports](https://datatracker.ietf.org/doc/html/rfc6590) |
555 | + - [RFC 6591 - Authentication Failure Reporting Using the Abuse Reporting Format](https://datatracker.ietf.org/doc/html/rfc6591) |
556 | + - [RFC 6650 - Creation and Use of Email Feedback Reports: An Applicability Statement for the Abuse Reporting Format (ARF)](https://datatracker.ietf.org/doc/html/rfc6650) |
557 | + |
558 | + ## License |
559 | + |
560 | + Licensed under either of |
561 | + |
562 | + * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) |
563 | + * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) |
564 | + |
565 | + at your option. |
566 | + |
567 | + ## Copyright |
568 | + |
569 | + Copyright (C) 2020-2022, Stalwart Labs Ltd. |
570 | + |
571 | diff --git a/examples/arc_seal.rs b/examples/arc_seal.rs |
572 | new file mode 100644 |
573 | index 0000000..7a93c9c |
574 | --- /dev/null |
575 | +++ b/examples/arc_seal.rs |
576 | @@ -0,0 +1,67 @@ |
577 | + /* |
578 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
579 | + * |
580 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
581 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
582 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
583 | + * option. This file may not be copied, modified, or distributed |
584 | + * except according to those terms. |
585 | + */ |
586 | + |
587 | + use mail_auth::{ |
588 | + arc::ARC, common::headers::HeaderWriter, AuthenticatedMessage, AuthenticationResults, |
589 | + PrivateKey, Resolver, |
590 | + }; |
591 | + |
592 | + const TEST_MESSAGE: &str = include_str!("../resources/arc/001.txt"); |
593 | + |
594 | + const RSA_PRIVATE_KEY: &str = r#"-----BEGIN RSA PRIVATE KEY----- |
595 | + MIICXwIBAAKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFC |
596 | + jxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gb |
597 | + to/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB |
598 | + AoGBALmn+XwWk7akvkUlqb+dOxyLB9i5VBVfje89Teolwc9YJT36BGN/l4e0l6QX |
599 | + /1//6DWUTB3KI6wFcm7TWJcxbS0tcKZX7FsJvUz1SbQnkS54DJck1EZO/BLa5ckJ |
600 | + gAYIaqlA9C0ZwM6i58lLlPadX/rtHb7pWzeNcZHjKrjM461ZAkEA+itss2nRlmyO |
601 | + n1/5yDyCluST4dQfO8kAB3toSEVc7DeFeDhnC1mZdjASZNvdHS4gbLIA1hUGEF9m |
602 | + 3hKsGUMMPwJBAPW5v/U+AWTADFCS22t72NUurgzeAbzb1HWMqO4y4+9Hpjk5wvL/ |
603 | + eVYizyuce3/fGke7aRYw/ADKygMJdW8H/OcCQQDz5OQb4j2QDpPZc0Nc4QlbvMsj |
604 | + 7p7otWRO5xRa6SzXqqV3+F0VpqvDmshEBkoCydaYwc2o6WQ5EBmExeV8124XAkEA |
605 | + qZzGsIxVP+sEVRWZmW6KNFSdVUpk3qzK0Tz/WjQMe5z0UunY9Ax9/4PVhp/j61bf |
606 | + eAYXunajbBSOLlx4D+TunwJBANkPI5S9iylsbLs6NkaMHV6k5ioHBBmgCak95JGX |
607 | + GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
608 | + -----END RSA PRIVATE KEY-----"#; |
609 | + |
610 | + #[tokio::main] |
611 | + async fn main() { |
612 | + // Create a resolver using Cloudflare DNS |
613 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
614 | + |
615 | + // Parse message to be sealed |
616 | + let authenticated_message = AuthenticatedMessage::parse(TEST_MESSAGE.as_bytes()).unwrap(); |
617 | + |
618 | + // Verify ARC and DKIM signatures |
619 | + let arc_result = resolver.verify_arc(&authenticated_message).await; |
620 | + let dkim_result = resolver.verify_dkim(&authenticated_message).await; |
621 | + |
622 | + // Build Authenticated-Results header |
623 | + let auth_results = AuthenticationResults::new("mx.mydomain.org") |
624 | + .with_dkim_result(&dkim_result, "sender@example.org") |
625 | + .with_arc_result(&arc_result, "127.0.0.1".parse().unwrap()); |
626 | + |
627 | + // Seal message |
628 | + if arc_result.can_be_sealed() { |
629 | + // Seal the e-mail message using RSA-SHA256 |
630 | + let pk_rsa = PrivateKey::from_rsa_pkcs1_pem(RSA_PRIVATE_KEY).unwrap(); |
631 | + let arc_set = ARC::new(&auth_results) |
632 | + .domain("example.org") |
633 | + .selector("default") |
634 | + .headers(["From", "To", "Subject", "DKIM-Signature"]) |
635 | + .seal(&authenticated_message, &arc_result, &pk_rsa) |
636 | + .unwrap(); |
637 | + |
638 | + // Print the sealed message to stdout |
639 | + println!("{}{}", arc_set.to_header(), TEST_MESSAGE) |
640 | + } else { |
641 | + eprintln!("The message could not be sealed, probably an ARC chain with cv=fail was found.") |
642 | + } |
643 | + } |
644 | diff --git a/examples/arc_verify.rs b/examples/arc_verify.rs |
645 | new file mode 100644 |
646 | index 0000000..e04cf22 |
647 | --- /dev/null |
648 | +++ b/examples/arc_verify.rs |
649 | @@ -0,0 +1,28 @@ |
650 | + /* |
651 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
652 | + * |
653 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
654 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
655 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
656 | + * option. This file may not be copied, modified, or distributed |
657 | + * except according to those terms. |
658 | + */ |
659 | + |
660 | + use mail_auth::{AuthenticatedMessage, DKIMResult, Resolver}; |
661 | + |
662 | + const TEST_MESSAGE: &str = include_str!("../resources/arc/001.txt"); |
663 | + |
664 | + #[tokio::main] |
665 | + async fn main() { |
666 | + // Create a resolver using Cloudflare DNS |
667 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
668 | + |
669 | + // Parse message |
670 | + let authenticated_message = AuthenticatedMessage::parse(TEST_MESSAGE.as_bytes()).unwrap(); |
671 | + |
672 | + // Validate ARC chain |
673 | + let result = resolver.verify_arc(&authenticated_message).await; |
674 | + |
675 | + // Make sure ARC passed verification |
676 | + assert_eq!(result.result(), &DKIMResult::Pass); |
677 | + } |
678 | diff --git a/examples/dkim_sign.rs b/examples/dkim_sign.rs |
679 | new file mode 100644 |
680 | index 0000000..07f6d04 |
681 | --- /dev/null |
682 | +++ b/examples/dkim_sign.rs |
683 | @@ -0,0 +1,70 @@ |
684 | + /* |
685 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
686 | + * |
687 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
688 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
689 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
690 | + * option. This file may not be copied, modified, or distributed |
691 | + * except according to those terms. |
692 | + */ |
693 | + |
694 | + use mail_auth::{common::headers::HeaderWriter, dkim::Signature, PrivateKey}; |
695 | + use mail_parser::decoders::base64::base64_decode; |
696 | + |
697 | + const RSA_PRIVATE_KEY: &str = r#"-----BEGIN RSA PRIVATE KEY----- |
698 | + MIICXwIBAAKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFC |
699 | + jxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gb |
700 | + to/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB |
701 | + AoGBALmn+XwWk7akvkUlqb+dOxyLB9i5VBVfje89Teolwc9YJT36BGN/l4e0l6QX |
702 | + /1//6DWUTB3KI6wFcm7TWJcxbS0tcKZX7FsJvUz1SbQnkS54DJck1EZO/BLa5ckJ |
703 | + gAYIaqlA9C0ZwM6i58lLlPadX/rtHb7pWzeNcZHjKrjM461ZAkEA+itss2nRlmyO |
704 | + n1/5yDyCluST4dQfO8kAB3toSEVc7DeFeDhnC1mZdjASZNvdHS4gbLIA1hUGEF9m |
705 | + 3hKsGUMMPwJBAPW5v/U+AWTADFCS22t72NUurgzeAbzb1HWMqO4y4+9Hpjk5wvL/ |
706 | + eVYizyuce3/fGke7aRYw/ADKygMJdW8H/OcCQQDz5OQb4j2QDpPZc0Nc4QlbvMsj |
707 | + 7p7otWRO5xRa6SzXqqV3+F0VpqvDmshEBkoCydaYwc2o6WQ5EBmExeV8124XAkEA |
708 | + qZzGsIxVP+sEVRWZmW6KNFSdVUpk3qzK0Tz/WjQMe5z0UunY9Ax9/4PVhp/j61bf |
709 | + eAYXunajbBSOLlx4D+TunwJBANkPI5S9iylsbLs6NkaMHV6k5ioHBBmgCak95JGX |
710 | + GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
711 | + -----END RSA PRIVATE KEY-----"#; |
712 | + |
713 | + const ED25519_PRIVATE_KEY: &str = "nWGxne/9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A="; |
714 | + const ED25519_PUBLIC_KEY: &str = "11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo="; |
715 | + |
716 | + const TEST_MESSAGE: &str = r#"From: bill@example.com |
717 | + To: jdoe@example.com |
718 | + Subject: TPS Report |
719 | + |
720 | + I'm going to need those TPS reports ASAP. So, if you could do that, that'd be great. |
721 | + "#; |
722 | + |
723 | + fn main() { |
724 | + // Sign an e-mail message using RSA-SHA256 |
725 | + let pk_rsa = PrivateKey::from_rsa_pkcs1_pem(RSA_PRIVATE_KEY).unwrap(); |
726 | + let signature_rsa = Signature::new() |
727 | + .headers(["From", "To", "Subject"]) |
728 | + .domain("example.com") |
729 | + .selector("default") |
730 | + .sign(TEST_MESSAGE.as_bytes(), &pk_rsa) |
731 | + .unwrap(); |
732 | + |
733 | + // Sign an e-mail message using ED25519-SHA256 |
734 | + let pk_ed = PrivateKey::from_ed25519( |
735 | + &base64_decode(ED25519_PUBLIC_KEY.as_bytes()).unwrap(), |
736 | + &base64_decode(ED25519_PRIVATE_KEY.as_bytes()).unwrap(), |
737 | + ) |
738 | + .unwrap(); |
739 | + let signature_ed = Signature::new() |
740 | + .headers(["From", "To", "Subject"]) |
741 | + .domain("example.com") |
742 | + .selector("default-ed") |
743 | + .sign(TEST_MESSAGE.as_bytes(), &pk_ed) |
744 | + .unwrap(); |
745 | + |
746 | + // Print the message including both signatures to stdout |
747 | + println!( |
748 | + "{}{}{}", |
749 | + signature_rsa.to_header(), |
750 | + signature_ed.to_header(), |
751 | + TEST_MESSAGE |
752 | + ); |
753 | + } |
754 | diff --git a/examples/dkim_verify.rs b/examples/dkim_verify.rs |
755 | new file mode 100644 |
756 | index 0000000..622fec9 |
757 | --- /dev/null |
758 | +++ b/examples/dkim_verify.rs |
759 | @@ -0,0 +1,53 @@ |
760 | + /* |
761 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
762 | + * |
763 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
764 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
765 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
766 | + * option. This file may not be copied, modified, or distributed |
767 | + * except according to those terms. |
768 | + */ |
769 | + |
770 | + use mail_auth::{AuthenticatedMessage, DKIMResult, Resolver}; |
771 | + |
772 | + const TEST_MESSAGE: &str = r#"DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; |
773 | + d=football.example.com; i=@football.example.com; |
774 | + q=dns/txt; s=brisbane; t=1528637909; h=from : to : |
775 | + subject : date : message-id : from : subject : date; |
776 | + bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; |
777 | + b=/gCrinpcQOoIfuHNQIbq4pgh9kyIK3AQUdt9OdqQehSwhEIug4D11Bus |
778 | + Fa3bT3FY5OsU7ZbnKELq+eXdp1Q1Dw== |
779 | + DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; |
780 | + d=football.example.com; i=@football.example.com; |
781 | + q=dns/txt; s=test; t=1528637909; h=from : to : subject : |
782 | + date : message-id : from : subject : date; |
783 | + bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; |
784 | + b=F45dVWDfMbQDGHJFlXUNB2HKfbCeLRyhDXgFpEL8GwpsRe0IeIixNTe3 |
785 | + DhCVlUrSjV4BwcVcOF6+FF3Zo9Rpo1tFOeS9mPYQTnGdaSGsgeefOsk2Jz |
786 | + dA+L10TeYt9BgDfQNZtKdN1WO//KgIqXP7OdEFE4LjFYNcUxZQ4FADY+8= |
787 | + From: Joe SixPack <joe@football.example.com> |
788 | + To: Suzie Q <suzie@shopping.example.net> |
789 | + Subject: Is dinner ready? |
790 | + Date: Fri, 11 Jul 2003 21:00:37 -0700 (PDT) |
791 | + Message-ID: <20030712040037.46341.5F8J@football.example.com> |
792 | + |
793 | + Hi. |
794 | + |
795 | + We lost the game. Are you hungry yet? |
796 | + |
797 | + Joe."#; |
798 | + |
799 | + #[tokio::main] |
800 | + async fn main() { |
801 | + // Create a resolver using Cloudflare DNS |
802 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
803 | + |
804 | + // Parse message |
805 | + let authenticated_message = AuthenticatedMessage::parse(TEST_MESSAGE.as_bytes()).unwrap(); |
806 | + |
807 | + // Validate signature |
808 | + let result = resolver.verify_dkim(&authenticated_message).await; |
809 | + |
810 | + // Make sure all signatures passed verification |
811 | + assert!(result.iter().all(|s| s.result() == &DKIMResult::Pass)); |
812 | + } |
813 | diff --git a/examples/dmarc_verify.rs b/examples/dmarc_verify.rs |
814 | new file mode 100644 |
815 | index 0000000..cbf1049 |
816 | --- /dev/null |
817 | +++ b/examples/dmarc_verify.rs |
818 | @@ -0,0 +1,65 @@ |
819 | + /* |
820 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
821 | + * |
822 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
823 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
824 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
825 | + * option. This file may not be copied, modified, or distributed |
826 | + * except according to those terms. |
827 | + */ |
828 | + |
829 | + use mail_auth::{AuthenticatedMessage, DMARCResult, Resolver}; |
830 | + |
831 | + const TEST_MESSAGE: &str = r#"DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; |
832 | + d=football.example.com; i=@football.example.com; |
833 | + q=dns/txt; s=brisbane; t=1528637909; h=from : to : |
834 | + subject : date : message-id : from : subject : date; |
835 | + bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; |
836 | + b=/gCrinpcQOoIfuHNQIbq4pgh9kyIK3AQUdt9OdqQehSwhEIug4D11Bus |
837 | + Fa3bT3FY5OsU7ZbnKELq+eXdp1Q1Dw== |
838 | + DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; |
839 | + d=football.example.com; i=@football.example.com; |
840 | + q=dns/txt; s=test; t=1528637909; h=from : to : subject : |
841 | + date : message-id : from : subject : date; |
842 | + bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; |
843 | + b=F45dVWDfMbQDGHJFlXUNB2HKfbCeLRyhDXgFpEL8GwpsRe0IeIixNTe3 |
844 | + DhCVlUrSjV4BwcVcOF6+FF3Zo9Rpo1tFOeS9mPYQTnGdaSGsgeefOsk2Jz |
845 | + dA+L10TeYt9BgDfQNZtKdN1WO//KgIqXP7OdEFE4LjFYNcUxZQ4FADY+8= |
846 | + From: Joe SixPack <joe@football.example.com> |
847 | + To: Suzie Q <suzie@shopping.example.net> |
848 | + Subject: Is dinner ready? |
849 | + Date: Fri, 11 Jul 2003 21:00:37 -0700 (PDT) |
850 | + Message-ID: <20030712040037.46341.5F8J@football.example.com> |
851 | + |
852 | + Hi. |
853 | + |
854 | + We lost the game. Are you hungry yet? |
855 | + |
856 | + Joe."#; |
857 | + |
858 | + #[tokio::main] |
859 | + async fn main() { |
860 | + // Create a resolver using Cloudflare DNS |
861 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
862 | + |
863 | + // Verify DKIM signatures |
864 | + let authenticated_message = AuthenticatedMessage::parse(TEST_MESSAGE.as_bytes()).unwrap(); |
865 | + let dkim_result = resolver.verify_dkim(&authenticated_message).await; |
866 | + |
867 | + // Verify SPF MAIL-FROM identity |
868 | + let spf_result = resolver |
869 | + .verify_spf_sender("::1".parse().unwrap(), "example.org", "sender@example.org") |
870 | + .await; |
871 | + |
872 | + // Verify DMARC |
873 | + let dmarc_result = resolver |
874 | + .verify_dmarc( |
875 | + &authenticated_message, |
876 | + &dkim_result, |
877 | + "example.org", |
878 | + &spf_result, |
879 | + ) |
880 | + .await; |
881 | + assert_eq!(dmarc_result.dkim_result(), &DMARCResult::Pass); |
882 | + assert_eq!(dmarc_result.spf_result(), &DMARCResult::Pass); |
883 | + } |
884 | diff --git a/examples/report_arf_generate.rs b/examples/report_arf_generate.rs |
885 | new file mode 100644 |
886 | index 0000000..c37ec71 |
887 | --- /dev/null |
888 | +++ b/examples/report_arf_generate.rs |
889 | @@ -0,0 +1,51 @@ |
890 | + /* |
891 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
892 | + * |
893 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
894 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
895 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
896 | + * option. This file may not be copied, modified, or distributed |
897 | + * except according to those terms. |
898 | + */ |
899 | + |
900 | + use mail_auth::report::{AuthFailureType, Feedback, FeedbackType, IdentityAlignment}; |
901 | + |
902 | + fn main() { |
903 | + // Generate ARF feedback |
904 | + let feedback = Feedback::new(FeedbackType::AuthFailure) |
905 | + .with_arrival_date(5934759438) |
906 | + .with_authentication_results("dkim=pass") |
907 | + .with_incidents(10) |
908 | + .with_original_envelope_id("821-abc-123") |
909 | + .with_original_mail_from("hello@world.org") |
910 | + .with_original_rcpt_to("ciao@mundo.org") |
911 | + .with_reported_domain("example.org") |
912 | + .with_reported_domain("example2.org") |
913 | + .with_reported_uri("uri:domain.org") |
914 | + .with_reported_uri("uri:domain2.org") |
915 | + .with_reporting_mta("Manchegator 2.0") |
916 | + .with_source_ip("192.168.1.1".parse().unwrap()) |
917 | + .with_user_agent("DMARC-Meister") |
918 | + .with_version(2) |
919 | + .with_source_port(1234) |
920 | + .with_auth_failure(AuthFailureType::Dmarc) |
921 | + .with_dkim_adsp_dns("v=dkim1") |
922 | + .with_dkim_canonicalized_body("base64 goes here") |
923 | + .with_dkim_canonicalized_header("more base64") |
924 | + .with_dkim_domain("dkim-domain.org") |
925 | + .with_dkim_identity("my-dkim-identity@domain.org") |
926 | + .with_dkim_selector("the-selector") |
927 | + .with_dkim_selector_dns("v=dkim1;") |
928 | + .with_spf_dns("v=spf1") |
929 | + .with_identity_alignment(IdentityAlignment::DkimSpf) |
930 | + .with_message(&b"From: hello@world.org\r\nTo: ciao@mundo.org\r\n\r\n"[..]) |
931 | + .as_rfc5322( |
932 | + "no-reply@example.org", |
933 | + "ruf@otherdomain.com", |
934 | + "DMARC Authentication Failure Report", |
935 | + ) |
936 | + .unwrap(); |
937 | + |
938 | + // Print ARF feedback to stdout |
939 | + println!("{}", feedback); |
940 | + } |
941 | diff --git a/examples/report_arf_parse.rs b/examples/report_arf_parse.rs |
942 | new file mode 100644 |
943 | index 0000000..907b0eb |
944 | --- /dev/null |
945 | +++ b/examples/report_arf_parse.rs |
946 | @@ -0,0 +1,21 @@ |
947 | + /* |
948 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
949 | + * |
950 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
951 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
952 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
953 | + * option. This file may not be copied, modified, or distributed |
954 | + * except according to those terms. |
955 | + */ |
956 | + |
957 | + use mail_auth::report::Feedback; |
958 | + |
959 | + const TEST_MESSAGE: &str = include_str!("../resources/arf/001.eml"); |
960 | + |
961 | + fn main() { |
962 | + // Parse Abuse Report Format feedback repot |
963 | + let report = Feedback::parse_rfc5322(TEST_MESSAGE.as_bytes()).unwrap(); |
964 | + |
965 | + // Write ARF to stdout at JSPON |
966 | + println!("{}", serde_json::to_string_pretty(&report).unwrap()); |
967 | + } |
968 | diff --git a/examples/report_dmarc_generate.rs b/examples/report_dmarc_generate.rs |
969 | new file mode 100644 |
970 | index 0000000..8e1fcd4 |
971 | --- /dev/null |
972 | +++ b/examples/report_dmarc_generate.rs |
973 | @@ -0,0 +1,110 @@ |
974 | + /* |
975 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
976 | + * |
977 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
978 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
979 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
980 | + * option. This file may not be copied, modified, or distributed |
981 | + * except according to those terms. |
982 | + */ |
983 | + |
984 | + use mail_auth::report::{ |
985 | + ActionDisposition, Alignment, DKIMAuthResult, DKIMResult, DMARCResult, Disposition, |
986 | + PolicyOverride, PolicyOverrideReason, Record, Report, SPFAuthResult, SPFDomainScope, SPFResult, |
987 | + }; |
988 | + |
989 | + fn main() { |
990 | + // Generate DMARC aggregate report |
991 | + let report = Report::new() |
992 | + .with_version(1.0) |
993 | + .with_org_name("Initech Industries Incorporated") |
994 | + .with_email("dmarc@initech.net") |
995 | + .with_extra_contact_info("XMPP:dmarc@initech.net") |
996 | + .with_report_id("abc-123") |
997 | + .with_date_range_begin(12345) |
998 | + .with_date_range_end(12346) |
999 | + .with_error("Did not include TPS report cover.") |
1000 | + .with_domain("example.org") |
1001 | + .with_version_published(1.0) |
1002 | + .with_adkim(Alignment::Relaxed) |
1003 | + .with_aspf(Alignment::Strict) |
1004 | + .with_p(Disposition::Quarantine) |
1005 | + .with_sp(Disposition::Reject) |
1006 | + .with_testing(false) |
1007 | + .with_record( |
1008 | + Record::new() |
1009 | + .with_source_ip("192.168.1.2".parse().unwrap()) |
1010 | + .with_count(3) |
1011 | + .with_action_disposition(ActionDisposition::Pass) |
1012 | + .with_dmarc_dkim_result(DMARCResult::Pass) |
1013 | + .with_dmarc_spf_result(DMARCResult::Fail) |
1014 | + .with_policy_override_reason( |
1015 | + PolicyOverrideReason::new(PolicyOverride::Forwarded) |
1016 | + .with_comment("it was forwarded"), |
1017 | + ) |
1018 | + .with_policy_override_reason( |
1019 | + PolicyOverrideReason::new(PolicyOverride::MailingList) |
1020 | + .with_comment("sent from mailing list"), |
1021 | + ) |
1022 | + .with_envelope_from("hello@example.org") |
1023 | + .with_envelope_to("other@example.org") |
1024 | + .with_header_from("bye@example.org") |
1025 | + .with_dkim_auth_result( |
1026 | + DKIMAuthResult::new() |
1027 | + .with_domain("test.org") |
1028 | + .with_selector("my-selector") |
1029 | + .with_result(DKIMResult::PermError) |
1030 | + .with_human_result("failed to parse record"), |
1031 | + ) |
1032 | + .with_spf_auth_result( |
1033 | + SPFAuthResult::new() |
1034 | + .with_domain("test.org") |
1035 | + .with_scope(SPFDomainScope::Helo) |
1036 | + .with_result(SPFResult::SoftFail) |
1037 | + .with_human_result("dns timed out"), |
1038 | + ), |
1039 | + ) |
1040 | + .with_record( |
1041 | + Record::new() |
1042 | + .with_source_ip("a:b:c::e:f".parse().unwrap()) |
1043 | + .with_count(99) |
1044 | + .with_action_disposition(ActionDisposition::Reject) |
1045 | + .with_dmarc_dkim_result(DMARCResult::Fail) |
1046 | + .with_dmarc_spf_result(DMARCResult::Pass) |
1047 | + .with_policy_override_reason( |
1048 | + PolicyOverrideReason::new(PolicyOverride::LocalPolicy) |
1049 | + .with_comment("on the white list"), |
1050 | + ) |
1051 | + .with_policy_override_reason( |
1052 | + PolicyOverrideReason::new(PolicyOverride::SampledOut) |
1053 | + .with_comment("it was sampled out"), |
1054 | + ) |
1055 | + .with_envelope_from("hello2example.org") |
1056 | + .with_envelope_to("other2@example.org") |
1057 | + .with_header_from("bye2@example.org") |
1058 | + .with_dkim_auth_result( |
1059 | + DKIMAuthResult::new() |
1060 | + .with_domain("test2.org") |
1061 | + .with_selector("my-other-selector") |
1062 | + .with_result(DKIMResult::Neutral) |
1063 | + .with_human_result("something went wrong"), |
1064 | + ) |
1065 | + .with_spf_auth_result( |
1066 | + SPFAuthResult::new() |
1067 | + .with_domain("test.org") |
1068 | + .with_scope(SPFDomainScope::MailFrom) |
1069 | + .with_result(SPFResult::None) |
1070 | + .with_human_result("no policy found"), |
1071 | + ), |
1072 | + ) |
1073 | + .as_rfc5322( |
1074 | + "initech.net", |
1075 | + "Initech Industries", |
1076 | + "noreply-dmarc@initech.net", |
1077 | + "dmarc-reports@example.org", |
1078 | + ) |
1079 | + .unwrap(); |
1080 | + |
1081 | + // Print report to stdout |
1082 | + println!("{}", report); |
1083 | + } |
1084 | diff --git a/examples/report_dmarc_parse.rs b/examples/report_dmarc_parse.rs |
1085 | new file mode 100644 |
1086 | index 0000000..941d2bf |
1087 | --- /dev/null |
1088 | +++ b/examples/report_dmarc_parse.rs |
1089 | @@ -0,0 +1,21 @@ |
1090 | + /* |
1091 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
1092 | + * |
1093 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
1094 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
1095 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
1096 | + * option. This file may not be copied, modified, or distributed |
1097 | + * except according to those terms. |
1098 | + */ |
1099 | + |
1100 | + use mail_auth::report::Report; |
1101 | + |
1102 | + const TEST_MESSAGE: &str = include_str!("../resources/dmarc-feedback/100.eml"); |
1103 | + |
1104 | + fn main() { |
1105 | + // Parse DMARC aggregate report |
1106 | + let report = Report::parse_rfc5322(TEST_MESSAGE.as_bytes()).unwrap(); |
1107 | + |
1108 | + // Write report to stdout at JSPON |
1109 | + println!("{}", serde_json::to_string_pretty(&report).unwrap()); |
1110 | + } |
1111 | diff --git a/examples/spf_verify.rs b/examples/spf_verify.rs |
1112 | new file mode 100644 |
1113 | index 0000000..93930f7 |
1114 | --- /dev/null |
1115 | +++ b/examples/spf_verify.rs |
1116 | @@ -0,0 +1,29 @@ |
1117 | + /* |
1118 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
1119 | + * |
1120 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
1121 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
1122 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
1123 | + * option. This file may not be copied, modified, or distributed |
1124 | + * except according to those terms. |
1125 | + */ |
1126 | + |
1127 | + use mail_auth::{Resolver, SPFResult}; |
1128 | + |
1129 | + #[tokio::main] |
1130 | + async fn main() { |
1131 | + // Create a resolver using Cloudflare DNS |
1132 | + let resolver = Resolver::new_cloudflare_tls().unwrap(); |
1133 | + |
1134 | + // Verify HELO identity |
1135 | + let result = resolver |
1136 | + .verify_spf_helo("127.0.0.1".parse().unwrap(), "gmail.com") |
1137 | + .await; |
1138 | + assert_eq!(result.result(), SPFResult::Fail); |
1139 | + |
1140 | + // Verify MAIL-FROM identity |
1141 | + let result = resolver |
1142 | + .verify_spf_sender("::1".parse().unwrap(), "gmail.com", "sender@gmail.com") |
1143 | + .await; |
1144 | + assert_eq!(result.result(), SPFResult::Fail); |
1145 | + } |
1146 | diff --git a/fuzz/.gitignore b/fuzz/.gitignore |
1147 | new file mode 100644 |
1148 | index 0000000..a092511 |
1149 | --- /dev/null |
1150 | +++ b/fuzz/.gitignore |
1151 | @@ -0,0 +1,3 @@ |
1152 | + target |
1153 | + corpus |
1154 | + artifacts |
1155 | diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml |
1156 | new file mode 100644 |
1157 | index 0000000..7b38df1 |
1158 | --- /dev/null |
1159 | +++ b/fuzz/Cargo.toml |
1160 | @@ -0,0 +1,25 @@ |
1161 | + [package] |
1162 | + name = "mail-auth-fuzz" |
1163 | + version = "0.0.0" |
1164 | + authors = ["Automatically generated"] |
1165 | + publish = false |
1166 | + edition = "2018" |
1167 | + |
1168 | + [package.metadata] |
1169 | + cargo-fuzz = true |
1170 | + |
1171 | + [dependencies] |
1172 | + libfuzzer-sys = "0.4" |
1173 | + |
1174 | + [dependencies.mail-auth] |
1175 | + path = ".." |
1176 | + |
1177 | + # Prevent this from interfering with workspaces |
1178 | + [workspace] |
1179 | + members = ["."] |
1180 | + |
1181 | + [[bin]] |
1182 | + name = "mail_auth" |
1183 | + path = "fuzz_targets/mail_auth.rs" |
1184 | + test = false |
1185 | + doc = false |
1186 | diff --git a/fuzz/fuzz_targets/mail_auth.rs b/fuzz/fuzz_targets/mail_auth.rs |
1187 | new file mode 100644 |
1188 | index 0000000..b4b36cf |
1189 | --- /dev/null |
1190 | +++ b/fuzz/fuzz_targets/mail_auth.rs |
1191 | @@ -0,0 +1,76 @@ |
1192 | + /* |
1193 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
1194 | + * |
1195 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
1196 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
1197 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
1198 | + * option. This file may not be copied, modified, or distributed |
1199 | + * except according to those terms. |
1200 | + */ |
1201 | + |
1202 | + #![no_main] |
1203 | + use libfuzzer_sys::fuzz_target; |
1204 | + |
1205 | + use mail_auth::{ |
1206 | + arc, |
1207 | + common::parse::TxtRecordParser, |
1208 | + dkim::{self, Atps, DomainKey, DomainKeyReport}, |
1209 | + dmarc::DMARC, |
1210 | + report::{Feedback, Report}, |
1211 | + spf::{Macro, SPF}, |
1212 | + AuthenticatedMessage, |
1213 | + }; |
1214 | + |
1215 | + static RFC822_ALPHABET: &[u8] = b"0123456789abcdefghijklmnopqrstuvwxyz:=- \r\n"; |
1216 | + static XML_ALPHABET: &[u8] = b"abcdefghijklmnopqrstuvwxyz</>"; |
1217 | + static TXT_ALPHABET: &[u8] = b"abcdefghijklmnopqrstuvwxyz1=;:"; |
1218 | + |
1219 | + fuzz_target!(|data: &[u8]| { |
1220 | + let data_rfc822 = into_alphabet(data, RFC822_ALPHABET); |
1221 | + let data_txt = into_alphabet(data, TXT_ALPHABET); |
1222 | + |
1223 | + dkim::Signature::parse(data).ok(); |
1224 | + dkim::Signature::parse(&data_txt).ok(); |
1225 | + |
1226 | + arc::Signature::parse(data).ok(); |
1227 | + arc::Signature::parse(&data_txt).ok(); |
1228 | + |
1229 | + arc::Seal::parse(data).ok(); |
1230 | + arc::Seal::parse(&data_txt).ok(); |
1231 | + |
1232 | + arc::Results::parse(data).ok(); |
1233 | + arc::Results::parse(&data_txt).ok(); |
1234 | + |
1235 | + AuthenticatedMessage::parse(data); |
1236 | + AuthenticatedMessage::parse(&data_rfc822); |
1237 | + |
1238 | + DomainKey::parse(data).ok(); |
1239 | + DomainKey::parse(&data_txt).ok(); |
1240 | + |
1241 | + DomainKeyReport::parse(data).ok(); |
1242 | + DomainKeyReport::parse(&data_txt).ok(); |
1243 | + |
1244 | + Atps::parse(data).ok(); |
1245 | + Atps::parse(&data_txt).ok(); |
1246 | + |
1247 | + DMARC::parse(data).ok(); |
1248 | + DMARC::parse(&data_txt).ok(); |
1249 | + |
1250 | + SPF::parse(data).ok(); |
1251 | + SPF::parse(&data_txt).ok(); |
1252 | + |
1253 | + Macro::parse(data).ok(); |
1254 | + Macro::parse(&data_txt).ok(); |
1255 | + |
1256 | + Report::parse_xml(data).ok(); |
1257 | + Report::parse_xml(&into_alphabet(data, XML_ALPHABET)).ok(); |
1258 | + |
1259 | + Feedback::parse_arf(data); |
1260 | + Feedback::parse_arf(&data_rfc822); |
1261 | + }); |
1262 | + |
1263 | + fn into_alphabet(data: &[u8], alphabet: &[u8]) -> Vec<u8> { |
1264 | + data.iter() |
1265 | + .map(|&byte| alphabet[byte as usize % alphabet.len()]) |
1266 | + .collect() |
1267 | + } |
1268 | diff --git a/resources/arc/001.txt b/resources/arc/001.txt |
1269 | index 495e1f3..52dabed 100644 |
1270 | --- a/resources/arc/001.txt |
1271 | +++ b/resources/arc/001.txt |
1272 | @@ -2,7 +2,6 @@ arc-20160816._domainkey.google.com k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB |
1273 | ietf1._domainkey.ietf.org k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNzNnjKTd5cczd2CDzHflCZuv1tMWYwd7zE+deoJ6s/fXR7/n9ZIBnDS5egt7HAHjNjZrmjcoRlfSsNxRJvUQFyYvaU1BT1s8R+mkPgSOqZ4t9HqAVjiczn2B9+dbjdNN+S/zvSyMMuSCSJDKKAXhBpDeQTpeY7/UdP9s6ws0yjQIDAQAB |
1274 | velikisrpan22._domainkey.stalw.art v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvzwKQIIWzQXv0nihasFTT3+JO23hXCge+ESWNxCJdVLxKL5edxrumEU3DnrPeGD6q6E/vjoXwBabpm8F5o96MEPm7v12O5IIK7wx7gIJiQWvexwh+GJvW4aFFa0g13Ai75UdZjGFNKHAEGeLmkQYybK/EHW5ymRlSg3g8zydJGEcI/melLCiBoShHjfZFJEThxLmPHNSi+KOUMypxqYHd7hzg6W7qnq6t9puZYXMWj6tEaf6ORWgb7DOXZSTJJjAJPBWa2+UrxXX6Ro7L7Xy1zzeYFCk8W5vmn0wMgGpjkWw0ljJWNwIpxZAj9p5wMedWasaPS74TZ1b7tI39ncp6QIDAQAB |
1275 | |
1276 | - Delivered-To: mauro@degennaro.me |
1277 | Received: by 2002:adf:b343:0:0:0:0:0 with SMTP id k3csp2230702wrd; |
1278 | Mon, 7 Nov 2022 23:51:18 -0800 (PST) |
1279 | X-Google-Smtp-Source: AMsMyM7H9v9q2HbUtfgLEbIKzpE2HA/rU5t0NWXFi8ofP0dnpTMVE1iS6XCwU854K6aOmoFdAKGT |
1280 | @@ -36,11 +35,6 @@ ARC-Authentication-Results: i=1; mx.google.com; |
1281 | spf=pass (google.com: domain of jmap-bounces@ietf.org designates 50.223.129.194 as permitted sender) smtp.mailfrom=jmap-bounces@ietf.org; |
1282 | dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=stalw.art |
1283 | Return-Path: <jmap-bounces@ietf.org> |
1284 | - Received: from mail.ietf.org (mail.ietf.org. [50.223.129.194]) |
1285 | - by mx.google.com with ESMTPS id r7-20020a1709028bc700b0018862b71d11si11837558plo.381.2022.11.07.23.51.17 |
1286 | - for <mauro@degennaro.me> |
1287 | - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); |
1288 | - Mon, 07 Nov 2022 23:51:18 -0800 (PST) |
1289 | Received-SPF: pass (google.com: domain of jmap-bounces@ietf.org designates 50.223.129.194 as permitted sender) client-ip=50.223.129.194; |
1290 | Authentication-Results: mx.google.com; |
1291 | dkim=pass header.i=@ietf.org header.s=ietf1 header.b=jqktrzno; |
1292 | @@ -48,9 +42,6 @@ Authentication-Results: mx.google.com; |
1293 | dkim=neutral (body hash did not verify) header.i=@stalw.art header.s=velikisrpan22 header.b=QS+O8z2Y; |
1294 | spf=pass (google.com: domain of jmap-bounces@ietf.org designates 50.223.129.194 as permitted sender) smtp.mailfrom=jmap-bounces@ietf.org; |
1295 | dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=stalw.art |
1296 | - Received: from ietfa.amsl.com (localhost [IPv6:::1]) |
1297 | - by ietfa.amsl.com (Postfix) with ESMTP id C3412C1594A9 |
1298 | - for <mauro@degennaro.me>; Mon, 7 Nov 2022 23:51:12 -0800 (PST) |
1299 | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; |
1300 | t=1667893872; bh=wA8UHicgWC9Xhbg+MPaDDXiNuk7OpeLzC4PgU7LJ3mQ=; |
1301 | h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: |
1302 | diff --git a/resources/arc/002.txt b/resources/arc/002.txt |
1303 | deleted file mode 100644 |
1304 | index b775fdd..0000000 |
1305 | --- a/resources/arc/002.txt |
1306 | +++ /dev/null |
1307 | @@ -1,2302 +0,0 @@ |
1308 | - arc-20160816._domainkey.google.com k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Lztpxs7yUxQEsbDFhjMc9kZVZu5P/COYEUIX4B39IL4SXAbv4viIlT9E6F6iZmTh1go7+9WQLywwgwjXMJx/Dz0RgMoPeyp5NRy4l320DPYibNqVMWa5iQ2WiImQC0en1O9uhLLvzaSZJ03fvGmCo9jMo0GwKzLNe14xMgn/px2L5N/3IKlKX4bqUAJTUt8L993ZlWzvgMnSFSt8B+euSKSrtAiopdy4r1yO4eN5goBASrGW0eLQc1lYouNvCrcTQpos4/GEAqiGzpqueJLmBfOO4clNvVvpPkvQs2BHw9I9LmIjaMxTNGxkGBRaP3utDiKXXqu1K+LRzl0HCNSdQIDAQAB |
1309 | - arcselector9901._domainkey.microsoft.com v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAohCECx8ACVIj42taMc8G2ljiDmsboUW4mgasOg3/2Ay1D37DwK0CE1aok6x0x6dQ4FC/NGdeksPjT/ZLYH+zwwUvElJwd8adtZK4E7AT9Rzr6WPtTiFHi87em6n12HTvp8plpGHXnm8vdFrTxcCUguwUBzbe6MB12Dc3vSURcOUqfa6Dlj/6cNehl+PMonqlLxOl2KmpTJ/Vy9jhdFOu50xEhXIT5ocOa4tX12hfoMpZfBW6iU5QIyvnEFkJuF8Ibs7Hhr7Ec1GZc6tgOd5uNTAnnvh+xiYs8e722H5iDecMsBzj+I9U+CBY1ACwY9hTC1UDNu3xS+WKQNgvnifdIQIDAQAB |
1310 | - selector1._domainkey.vatovec.si v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUFq8+oDncCa2jNpwZvJbw6e5Amx4Lo/bzjM8AszdhAmck01is5OnLAmYtWVu7hO8ldFXsFaZuBKZZVnt2hCBPZMwTkEOr5g/hKXIkWX8KpVgDfqYGVViIdF49bcQ4RYnwQlARl6M9aYGLl8U+icqGx6+Iu/k2+RvOxipraQel6wIDAQAB; n=1024,1450260163,1466071363 |
1311 | - |
1312 | - Delivered-To: mauro@degennaro.me |
1313 | - Received: by 2002:adf:b343:0:0:0:0:0 with SMTP id k3csp415470wrd; |
1314 | - Fri, 4 Nov 2022 08:30:18 -0700 (PDT) |
1315 | - X-Google-Smtp-Source: AMsMyM5abK2vbvt3VueR2GF7skojK+76IWFqlt5Yw/xEuosCF02MAhrVCaXSw8nTy3DNqCHkUvJH |
1316 | - X-Received: by 2002:a05:6402:428a:b0:42e:8f7e:1638 with SMTP id g10-20020a056402428a00b0042e8f7e1638mr36152425edc.228.1667575818118; |
1317 | - Fri, 04 Nov 2022 08:30:18 -0700 (PDT) |
1318 | - ARC-Seal: i=2; a=rsa-sha256; t=1667575818; cv=pass; |
1319 | - d=google.com; s=arc-20160816; |
1320 | - b=RIZRdvNDbmeZiWTQmPaG68b2Uop5eM9v5WG9OcGyDps78/oWIM++Dn8G86t1PUlyuy |
1321 | - 1JGk6d7leFjX7UHTeVaeEAwwCwk4+AP6ACZ+/ueMqwTN6cLhXpUmzK7O12Rfi4qJ4w9U |
1322 | - wipgznVCnyHqHH8WdERikcHeoUcIZ6E7EDdC08ex4X0oLXqGlqs99wOoEZGIYTuv4XfF |
1323 | - Sw1/UREsPnxvOQEfqgFab8pVj+bN+H8501eqIVNiHErjsESx/pBahb9HDiq3nO0OjUev |
1324 | - GWAbJpOo0gOyxsGd4mN+PuiFGGvd0WPTnklfg4pGh44ZVchn5eQGk2NmA9DJTXFCflni |
1325 | - 8UsA== |
1326 | - ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; |
1327 | - h=mime-version:content-language:accept-language:in-reply-to |
1328 | - :references:message-id:date:thread-index:thread-topic:subject:cc:to |
1329 | - :from:dkim-signature; |
1330 | - bh=tMH3ryy0U0w8b6JMDGLM9JLLv6RozVeX3XYFfHG3Qv0=; |
1331 | - b=grmnn7KkgPHnxh81DIorbb9aQjDdq4aMnk47JXcC15TFIGHeHiMzfeMF2fJqja6usa |
1332 | - jWF+lV/9niUGwmAZsF39ViN3162k/NkModLUxaR87kcBoRC+r25QK5w+KeNuDeUjPUko |
1333 | - jFKiyF1XLdM+YqL9/9L3lzhbf9HkOSKhL5SSMLYT2PMD08WNH5VjUVbjNVWzyR2SBHZK |
1334 | - HFkVAAgElkbxYyfP7uerEDQlItb9lCY0ydRssngb4m2mm6+KCZi0oHQwnCgTn4OPQj8M |
1335 | - xv9TvPHRzwipxVcBqt7t0GYStIVifQ1tcexmtnJnfOdEoUett8LTK70SCafhsvPs1VqB |
1336 | - a2zw== |
1337 | - ARC-Authentication-Results: i=2; mx.google.com; |
1338 | - dkim=pass header.i=@vatovec.si header.s=selector1 header.b=U1n54F4X; |
1339 | - arc=pass (i=1 spf=pass spfdomain=vatovec.si dkim=pass dkdomain=vatovec.si dmarc=pass fromdomain=vatovec.si); |
1340 | - spf=pass (google.com: domain of vlado@vatovec.si designates 40.107.20.126 as permitted sender) smtp.mailfrom=vlado@vatovec.si |
1341 | - Return-Path: <vlado@vatovec.si> |
1342 | - Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2126.outbound.protection.outlook.com. [40.107.20.126]) |
1343 | - by mx.google.com with ESMTPS id n2-20020a170906164200b0078decbc3f73si4485382ejd.460.2022.11.04.08.30.17 |
1344 | - for <mauro@degennaro.me> |
1345 | - (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); |
1346 | - Fri, 04 Nov 2022 08:30:17 -0700 (PDT) |
1347 | - Received-SPF: pass (google.com: domain of vlado@vatovec.si designates 40.107.20.126 as permitted sender) client-ip=40.107.20.126; |
1348 | - Authentication-Results: mx.google.com; |
1349 | - dkim=pass header.i=@vatovec.si header.s=selector1 header.b=U1n54F4X; |
1350 | - arc=pass (i=1 spf=pass spfdomain=vatovec.si dkim=pass dkdomain=vatovec.si dmarc=pass fromdomain=vatovec.si); |
1351 | - spf=pass (google.com: domain of vlado@vatovec.si designates 40.107.20.126 as permitted sender) smtp.mailfrom=vlado@vatovec.si |
1352 | - ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; |
1353 | - b=nvfHZZNJdD165VKHIM2jy9w6SJ735AZShb4SMt2e4Fk9zxq+JvQZCgoU3IMpI08s+rrrm4prMwtUGETUmJQudKivXn030g3LJElnX5kbbDVAnT9yVpvRjdzj0gLqPr0xquyNmNHjxYzHjqXMuNV8JgV/fOUSmWN3iwzNTaK8T+kHMi/esCI1EgtHW4TnCD+eEfZjP1dvepH+GvZpbQQXFXr0E92bwy0qzRnGuCkXBHCzNfbfZcuM7g/TtG2SGznLiciAfcEVU+AKTIZlBiLwnKgFbT7flh4sP3juD6YC6FWfkhIpGyRdU5ROElllgRxNp9vfZuKCZ+f/Vr2T2QYDSg== |
1354 | - ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; |
1355 | - s=arcselector9901; |
1356 | - h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; |
1357 | - bh=tMH3ryy0U0w8b6JMDGLM9JLLv6RozVeX3XYFfHG3Qv0=; |
1358 | - b=gfnMGagd8VdEg3POHuu9ja7MQb8Zxh7l1nih39TFl7WqYe2ewNYyevwDA88VmVuoBqXOm5rKTdy0qGOIJHiLU3LOnQI+V95NX/bDo3gpL2m4TzR0ntnBENmP5NZI6gfZv42yjZZTKppiWKDqvWRvFfBNo3M+/cxMFYdxR6l0fg4lEV2hzIrId76wDyRQKYsBpPfjO+07aUtma1kbPYZq7BEgIE/5tECGwj9DIq3uG6xaHRdcGH5tlexCDx1CuwzAIfmOFAzKk0b9H/k8RbDcljX4oy6Zx2+9TriMUY3DRP3f9gK/2u5d79OVqLjo447bYrsPFi2HsycZ/o/ctvwcTg== |
1359 | - ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass |
1360 | - smtp.mailfrom=vatovec.si; dmarc=pass action=none header.from=vatovec.si; |
1361 | - dkim=pass header.d=vatovec.si; arc=none |
1362 | - DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vatovec.si; |
1363 | - s=selector1; |
1364 | - h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; |
1365 | - bh=tMH3ryy0U0w8b6JMDGLM9JLLv6RozVeX3XYFfHG3Qv0=; |
1366 | - b=U1n54F4XZo8WC7zR0ejVd1XO916dD261Lbeu4Cza6dzRdy6HHyShZ3VoUboFpILal2idObhYNALejiYoSKYk3RWvSuBO1Djhic3yK3C05IGHceSvKnMZP2z6zBu32XBvPASiwgk/cOiIxwat1XqLYWf7HXdXCnuZ/94kv4Zxhc0= |
1367 | - Received: from DU0PR05MB9819.eurprd05.prod.outlook.com (2603:10a6:10:473::18) |
1368 | - by VE1PR05MB7216.eurprd05.prod.outlook.com (2603:10a6:800:1a8::21) with |
1369 | - Microsoft SMTP Server (version=TLS1_2, |
1370 | - cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.20; Fri, 4 Nov |
1371 | - 2022 15:30:14 +0000 |
1372 | - Received: from DU0PR05MB9819.eurprd05.prod.outlook.com |
1373 | - ([fe80::879:4a51:c1ed:6467]) by DU0PR05MB9819.eurprd05.prod.outlook.com |
1374 | - ([fe80::879:4a51:c1ed:6467%7]) with mapi id 15.20.5791.022; Fri, 4 Nov 2022 |
1375 | - 15:30:14 +0000 |
1376 | - From: Vlado Vatovec <vlado@vatovec.si> |
1377 | - To: "mauro@degennaro.me" <mauro@degennaro.me> |
1378 | - CC: =?utf-8?B?TWF0amHFviBWYXRvdmVj?= <Matjaz@vatovec.si> |
1379 | - Subject: De Gennaro from Ljubljana to Vitoria-Gasteiz |
1380 | - Thread-Topic: De Gennaro from Ljubljana to Vitoria-Gasteiz |
1381 | - Thread-Index: AQHY8GJVVWCeb4Z6qkms3JK80PUmfw== |
1382 | - Date: Fri, 4 Nov 2022 15:30:14 +0000 |
1383 | - Message-ID: |
1384 | - <DU0PR05MB9819EC59C67766ACFA0F67FFC23B9@DU0PR05MB9819.eurprd05.prod.outlook.com> |
1385 | - References: |
1386 | - <CAGxp_yhJwfA9Pan2DrhXixRSy9CorLPgibm-6mBQjT6tqoKYog@mail.gmail.com> |
1387 | - <DB9PR05MB7980BF3F7BFEFBF8552DEC3CBC399@DB9PR05MB7980.eurprd05.prod.outlook.com> |
1388 | - In-Reply-To: |
1389 | - <DB9PR05MB7980BF3F7BFEFBF8552DEC3CBC399@DB9PR05MB7980.eurprd05.prod.outlook.com> |
1390 | - Accept-Language: en-GB, sl-SI, en-US |
1391 | - Content-Language: en-GB |
1392 | - X-MS-Has-Attach: yes |
1393 | - X-MS-TNEF-Correlator: |
1394 | - authentication-results: dkim=none (message not signed) |
1395 | - header.d=none;dmarc=none action=none header.from=vatovec.si; |
1396 | - x-ms-publictraffictype: Email |
1397 | - x-ms-traffictypediagnostic: DU0PR05MB9819:EE_|VE1PR05MB7216:EE_ |
1398 | - x-ms-office365-filtering-correlation-id: 05720521-a0d2-4894-c510-08dabe797857 |
1399 | - x-ms-exchange-senderadcheck: 1 |
1400 | - x-ms-exchange-antispam-relay: 0 |
1401 | - x-microsoft-antispam: BCL:0; |
1402 | - x-microsoft-antispam-message-info: |
1403 | - bCaSU7plJxkNsq9uE3gtCbZTp8XtEKCqBbov+2ft3IAN574Ba444OVEJ5AC0Ubf6WJDr868wLoag5eLRRCqpiu3Ff+k3+U/G3KBu2RNncV46275aSVy6L9lEzIGyxHdhGqfk2HEAN0bzYDop6bMVAfAzm/Rr1Pa94DPtbownQO8GpK0XhgAF7ATRmGRs64a2pgbtcFFH0bNRCayH7LX3mHNidPGF0jiu0LjMIxTGgcTEOsfA9yoadanPNcMKs3MHGBGwOyeNdhSshM8QzqXA4p29I1GIKKl1QDhJUigm9lU8+F7qyiwaYghqQ6oHXZoRu+l3PPMNTQrJW7TnP7ikPieWVZ3o2mq7dqPfJP1kvJ+fsuJzz+fhwoWwepVMOHvGvLVz3CTNZ94FM6p97l8bYE6QndPnM2wHrcjTV2b6WRW7j5JhMgK5d8SEaQ3ikrSYIcormUHNMusBeDHo7D1o761Vsyf6iTD3GOzG8wxtb65SgDYsA8Bnm4tC9/y/ZCfY48SxZ/ArG1DrawARwk89i88alizNhGdw7/xaLbzWXMF5Etv4Je2Wu8M68lK2C+t5V1gPpgchRe6Ci0fn78223avA/i+mGzXW/V6Izm8Bu11t2K4UOfBpJaOuBAQcpEKOVNo6OgfHSXo16ZtkWEWWoTjEC3Gqd2axe9wRb2TzqE3ohWy3B3Bl1dIFQpVC78uwtVwz7f1IXZDiizDACWTS4kQvAnN714i6EC68Abn4R3+uDRneQUX8Np5Qt0QKPTbM5jGzzsb/9CzP6lJ5+gCg3YaWkG42OmgTo20RWUgrLvMR8ZJLb3U9qJp6YGd/4ABR |
1404 | - x-forefront-antispam-report: |
1405 | - CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR05MB9819.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(39830400003)(136003)(396003)(366004)(346002)(451199015)(38070700005)(86362001)(6506007)(9686003)(316002)(41300700001)(7696005)(8676002)(38100700002)(71200400001)(166002)(66946007)(66556008)(2906002)(186003)(7066003)(26005)(6916009)(55016003)(66476007)(64756008)(66446008)(83380400001)(76116006)(4326008)(53546011)(66899015)(33656002)(8936002)(5660300002)(478600001)(107886003)(52536014)(99936003)(122000001)(579004);DIR:OUT;SFP:1102; |
1406 | - x-ms-exchange-antispam-messagedata-chunkcount: 1 |
1407 | - x-ms-exchange-antispam-messagedata-0: |
1408 | - =?utf-8?B?a2YvNmFwSkx1Tk1iR25KSWhWNlZITERWandxNndkQjFJUnBCMGRjRFpqQnl6?= |
1409 | - =?utf-8?B?MmJ2UmNmUVFmRk0rY1VBMU9JMUF1dVJGY0kvbFdQVHhuRkdDelF0cE5JbTVX?= |
1410 | - =?utf-8?B?enhlaVE3dFVLMmJWamRyMUhDTVJVdEo5Zm9QZEhhbXlQbnZYdENEQ2crYUt0?= |
1411 | - =?utf-8?B?Tm1rUzJPM1FJVzF0b0MyakRrQnNGWUtnVVBHNCtpOGt5RnhQbUQ2bVJ4Wmdl?= |
1412 | - =?utf-8?B?YmVaT241QVNvUFdRWWdNYVV1MW14dHNjNjZWWE9YWGZ6ZlZ4WnhtWlpNUmRw?= |
1413 | - =?utf-8?B?RDFvRVBpNzk4V1hkNTd3SE5qajB1OW5iYko5bWJRUExRSjVyQThOWThEcU9U?= |
1414 | - =?utf-8?B?S2xBcmpaa0NhcVMzTVhmNkVxMmVaeEFJUzgyRHVhcS93eGpHaVhJMDZ3QUlv?= |
1415 | - =?utf-8?B?MlBXaC9qV3NtSDlBL0FJYmNDdDlhYk5iWEUvUUswNzJFWFB4aW1xV3N6bW5W?= |
1416 | - =?utf-8?B?TzFXaC9MWG1OVEhEWmViTWxXcXlmaFQ2SHFlVVVWd0M4ZXNsYnd6UGN1bEVq?= |
1417 | - =?utf-8?B?Z1BUVTViVFgzUEFGL09RL2U2dCsrYnFLc2FvQVBiUkw1VTVDRisrYk16RURN?= |
1418 | - =?utf-8?B?dGhORTZyRnJaZU1Tdm5sczc4WjBHZnMyVHdNbTMyaGZGZTJuZktleGdjNlFk?= |
1419 | - =?utf-8?B?MzZZVVZLZXZKejcvYThzNlFSSW1JalZzVkdlQWJsOGRXN2p6cWRMYjdGc3dp?= |
1420 | - =?utf-8?B?TlRYeFZ6QjRoZ01QbWIwUnJlRmRNcEhKL0ZnUGJ1c0hDS04rZm56SXdMVllC?= |
1421 | - =?utf-8?B?aDRtR0kvTWUyN2lYK2NtU1hnanRKNUlqcWlCR0p6R1lWdkRaem9aTW1PL1Na?= |
1422 | - =?utf-8?B?NkJLTUJiWjdYRnhBbnNENWUyTjI3L3lMREp6Nzh5a1ZjdklHeUdaaktaWkUx?= |
1423 | - =?utf-8?B?cldwYmMwM2Z0ZGJpWE5DcWJ1ekVCVGtYMXZOWkYzakNRa0kxenFjQjdwSkYw?= |
1424 | - =?utf-8?B?WjVpYWMzVDJRQjhTRU1EaDlPTFN3a0FEYTlSOXhxb3JYZlFZdVJJSk1jNnBx?= |
1425 | - =?utf-8?B?bGZOSWNlSDY2ZDVTOXJQZFlGRElCK2tqVmxxalQ1YWV2YnhrVW80d2tscFlu?= |
1426 | - =?utf-8?B?cVBsd25reVQ3ZmpxblZ2OUlwQ3hpQWdJV3VWcWUyakluc2NxU0pwK2JMMUtG?= |
1427 | - =?utf-8?B?dUt5TU1xMEN1dm1aNE9rYTVDcVlBOGNIQk42bkxKWjAzRGk2Mi96RlRlQXNL?= |
1428 | - =?utf-8?B?Ni9DaE9qcEt6MzVvbUpDRmp4bEdSNkRsN1NtclBMV3FlMURNTlhUdGdUakFn?= |
1429 | - =?utf-8?B?aWNoYy80MXBERCtraDU3MU8vNG01Z1ZnNU1GYW9DNWpqRXJuYTlLNy9rNGNs?= |
1430 | - =?utf-8?B?U2kwNjVzVU96dnhUZlhGUnVGTGFGMExaa2VlbHlEV3lHb0x6T2hPYURsMkhj?= |
1431 | - =?utf-8?B?dFJJYnRWOENDTnJkS0N0MDZvL284TkV6bk1EMnpOSExXVlpNVWpTRW9EVE9Z?= |
1432 | - =?utf-8?B?T0t1Qlptd0E5RHg4UlA1dWRHaWx2NVVOY0tUUktVWWh4WVkxTG52SzJ3UVd1?= |
1433 | - =?utf-8?B?b1BRS2p1WVR1Wlo2WHo2b1lTUkxFQklmV3NQQ2JyVnppd3oxeldDd2szUmxw?= |
1434 | - =?utf-8?B?TFhOTkdac24xME9sVy9zVk1kaDBrT0pldWhCRGxMMkFoenFvRjZXYVVXbUhi?= |
1435 | - =?utf-8?B?MkMwOS8rSHJQRXRyRnlBY0VLN0JmMUJQdVVSZlcxZjhJTHJWSDlaZzJDSk5N?= |
1436 | - =?utf-8?B?QVltRldYdUV6bFJoQkEvc3pMU2N2bGN4UCtDMFB1a1hnZ1hLRWgvdGVxZUV3?= |
1437 | - =?utf-8?B?dExVaWRRVWlRM0ZKV2tDNys3QWRQOEpkVEJjd2xiK3B3YjVBeDhOWHhuWVg1?= |
1438 | - =?utf-8?B?WVlCUTVnWnp1QWNldHVQK213RTZzeDlQcDVQR2k3ck53d1c2dEdZZDM2VzZt?= |
1439 | - =?utf-8?B?aWxSek54aiswSFVDdDN1NzRKd0UzNVExM1dDVkZrTzFTZlpMRHMxcHlXS1A0?= |
1440 | - =?utf-8?B?NGFyWTdNSmFTRFQ2MmhFc0lHSTZqSkpvZW9lRGRONUtxeVNieXBLZ280Nyt4?= |
1441 | - =?utf-8?B?T2VnOXpZSUdOMEpDaWJvdlRzS1REc0g2VGNDc3FtNEtMemx4NkJYcGtyYTRn?= |
1442 | - =?utf-8?B?WHZzZnRaY3RmMlI5V2wybWQ2MUtwNHUxbEwyWXJmaWY0N0RHTXZ5T1lRb2lM?= |
1443 | - =?utf-8?Q?IFiA=3D?= |
1444 | - Content-Type: multipart/related; |
1445 | - boundary="_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_"; |
1446 | - type="multipart/alternative" |
1447 | - MIME-Version: 1.0 |
1448 | - X-OriginatorOrg: vatovec.si |
1449 | - X-MS-Exchange-CrossTenant-AuthAs: Internal |
1450 | - X-MS-Exchange-CrossTenant-AuthSource: DU0PR05MB9819.eurprd05.prod.outlook.com |
1451 | - X-MS-Exchange-CrossTenant-Network-Message-Id: 05720521-a0d2-4894-c510-08dabe797857 |
1452 | - X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2022 15:30:14.5059 |
1453 | - (UTC) |
1454 | - X-MS-Exchange-CrossTenant-fromentityheader: Hosted |
1455 | - X-MS-Exchange-CrossTenant-id: 23351a1b-91df-4a51-bf0a-093c5e13358c |
1456 | - X-MS-Exchange-CrossTenant-mailboxtype: HOSTED |
1457 | - X-MS-Exchange-CrossTenant-userprincipalname: xpTBMWhVwz0uVBFeL037W5hVodvYmSlIVvcDtcayDpmwYpRIXPaaNFZ0fPQAkRq1XGTLrbabrpxhMQcRqnxcUA== |
1458 | - X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR05MB7216 |
1459 | - |
1460 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
1461 | - Content-Type: multipart/alternative; |
1462 | - boundary="_000_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_" |
1463 | - |
1464 | - --_000_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
1465 | - Content-Type: text/plain; charset="utf-8" |
1466 | - Content-Transfer-Encoding: base64 |
1467 | - |
1468 | - RGVhciBNYXVybywNCg0KUmF0ZSB0byBtb3ZlIGxpc3RlZCBnb29kcyBmcm9tIExqdWJsamFuYSB0 |
1469 | - byBWaXRvcmlhLUdhc3RlaXogaXMg4oKsIDEuNzAwICsgaW5zdXJhbmNlIGNvdmVyLg0KSW5jbCBw |
1470 | - YWNraW5nLCBsb2FkaW5nLCB0cmFuc3BvcnQsIHVubG9hZGluZyB0byByZXNpZGVuY2Ugd2l0aCBn |
1471 | - b29kIGFjY2VzcywgY2FycnkgdXAgdG8gMXN0IGZsb29yLCB1bnBhY2tpbmcsIHJlbW92YWwgb2Yg |
1472 | - cGFja2luZyBtYXRlcmlhbHMgb24gZGF5IG9mIGRlbGl2ZXJ5Lg0KRXhjbCBWQVQgMjIlLCBzdG9y |
1473 | - YWdlLCBkaWZmaWN1bHQgYWNjZXNzIGF0IGJvdGggZW5kcy4NClJhdGUgdmFsaWQgNjAgZGF5cw0K |
1474 | - UGF5bWVudCBiZWZvcmUgc2hpcHBpbmcgZnJvbSBTbG92ZW5pYS4NCg0KDQpLaW5kIHJlZ2FyZHMs |
1475 | - DQpWbGFkbyBWYXRvdmVjDQorMzg2IDQxIDc1NiAzNDANCg0KW0xvZ28sIGNvbXBhbnkgbmFtZSAg |
1476 | - RGVzY3JpcHRpb24gYXV0b21hdGljYWxseSBnZW5lcmF0ZWRdIFZhdG92ZWMgZC5vLm8uDQrEjHVm |
1477 | - YXJqZXZhIDUNCjEwMDAgTGp1YmxqYW5hDQpTbG92ZW5pYQ0KKzM4NiAxIDQzMCAxMyA0MA0Kd3d3 |
1478 | - LnZhdG92ZWMuc2k8aHR0cDovL3d3dy52YXRvdmVjLnNpLz4NCltjaWQ6aW1hZ2UwMDMucG5nQDAx |
1479 | - RDhGMDZBLkI2OTcyQ0YwXTxodHRwczovL3d3dy5maWRpLm9yZy9hYm91dC1maWRpPltjaWQ6aW1h |
1480 | - Z2UwMDQucG5nQDAxRDhGMDZBLkI2OTcyQ0YwXTxodHRwczovL3d3dy5maWRpLm9yZy9xdWFsaXR5 |
1481 | - L2ZpZGktZmFpbS1jZXJ0aWZpY2F0aW9uPltEaWFncmFtICBEZXNjcmlwdGlvbiBhdXRvbWF0aWNh |
1482 | - bGx5IGdlbmVyYXRlZCB3aXRoIGxvdyBjb25maWRlbmNlXTxodHRwczovL3d3dy5maWRpLm9yZy9h |
1483 | - Ym91dC1maWRpL2ZpZGktcGNncz5bTG9nbywgY29tcGFueSBuYW1lICBEZXNjcmlwdGlvbiBhdXRv |
1484 | - bWF0aWNhbGx5IGdlbmVyYXRlZF08aHR0cHM6Ly93d3cuaWFtb3ZlcnMub3JnLz4NCg0KV2UgdGFr |
1485 | - ZSBwcml2YWN5IHNlcmlvdXNseS4gUmVhZCBtb3JlIG9uIG91ciBwcml2YWN5IHBvbGljeSBoZXJl |
1486 | - PGh0dHA6Ly93d3cudmF0b3ZlYy5zaS9lbi90b3AtcXVhbGl0eS1tb3Zpbmctc2VydmljZXMvZGF0 |
1487 | - YS1wcml2YWN5Pi4gT3VyIGFudGktdHJ1c3QsIGNvcnBvcmF0ZSByZXNwb25zaWJpbGl0eSBhbmQg |
1488 | - ZW52aXJvbm1lbnRhbCBwb2xpY3kgaXMgYXZhaWxhYmxlIGhlcmU8aHR0cHM6Ly92YXRvdmVjLnNp |
1489 | - L2VuL3RvcC1xdWFsaXR5LW1vdmluZy1zZXJ2aWNlcy9jb3Jwb3JhdGUtc29jaWFsLXJlc3BvbnNp |
1490 | - YmlsaXR5Lz4uDQoNCg0KDQoNCkZyb206IEluZm8gVmF0b3ZlYyA8aW5mb0B2YXRvdmVjLnNpPg0K |
1491 | - U2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAyLCAyMDIyIDY6NTAgQU0NClRvOiBWbGFkbyBWYXRv |
1492 | - dmVjIDx2bGFkb0B2YXRvdmVjLnNpPg0KQ2M6IE1hdGphxb4gVmF0b3ZlYyA8TWF0amF6QHZhdG92 |
1493 | - ZWMuc2k+DQpTdWJqZWN0OiBGVzogUXVvdGUgbW92ZSBmcm9tIExqdWJsamFuYSB0byBTcGFpbg0K |
1494 | - DQoNCg0KRnJvbTogTWF1cm8gRGUgR2VubmFybyA8bWF1cm9AZGVnZW5uYXJvLm1lPG1haWx0bzpt |
1495 | - YXVyb0BkZWdlbm5hcm8ubWU+Pg0KU2VudDogTW9uZGF5LCBPY3RvYmVyIDMxLCAyMDIyIDExOjU2 |
1496 | - IEFNDQpUbzogSW5mbyBWYXRvdmVjIDxpbmZvQHZhdG92ZWMuc2k8bWFpbHRvOmluZm9AdmF0b3Zl |
1497 | - Yy5zaT4+DQpTdWJqZWN0OiBRdW90ZSBtb3ZlIGZyb20gTGp1YmxqYW5hIHRvIFNwYWluDQoNCkhl |
1498 | - bGxvLA0KDQpJIGZvdW5kIHlvdXIgY29tcGFueSBvbiBHb29nbGUgc2VhcmNoLiBXZSBhcmUgbW92 |
1499 | - aW5nIGZyb20gTGp1YmxqYW5hIERyYXZsamUgdG8gVml0b3JpYS1HYXN0ZWl6LCBTcGFpbiBhcm91 |
1500 | - bmQgbWlkIEphbnVhcnkgYW5kIHdvdWxkIGxpa2UgdG8gcmVjZWl2ZSBhIHF1b3RlIHRvIHRyYW5z |
1501 | - cG9ydCBhcm91bmQgMyBjdWJpYyBtZXRlcnMuIEl0IGlzIG9ubHkgc29tZSBib3hlcyBhbmQgYmlr |
1502 | - ZXMgYnV0IG5vIGZ1cm5pdHVyZSBvciBob21lIGFwcGxpYW5jZXMsIHBsZWFzZSBmaW5kIGJlbG93 |
1503 | - IHRoZSBkaW1lbnNpb25zIGFuZCBlc3RpbWF0ZWQgd2VpZ2h0czoNCg0KRGVzY3JpcHRpb24NClF0 |
1504 | - eQ0KRGltZW5zaW9uDQpEaW1lbnNpb24NCkRpbWVuc2lvbg0KV2VpZ2h0IChrZykNCkJveCBJa2Vh |
1505 | - DQoxNA0KNTYNCjMzDQo0MQ0KOA0KMS4wNjA3NTINCkJveCBUb3BlYWsNCjENCjY4DQozMw0KNDEN |
1506 | - CjEwDQowLjA5MjAwNA0KVG9vbGJveA0KMQ0KNjcNCjMwDQo0MA0KMTUNCjAuMDgwNA0KQm94IERl |
1507 | - Y2FudGFsbw0KMQ0KNDQNCjM0DQozNw0KOA0KMC4wNTUzNTINCkJveGVzDQozDQo1MA0KMzANCjQ1 |
1508 | - DQo4DQowLjIwMjUNCkJveCBJbmRvb3INCjENCjIwDQo1Nw0KNDkNCjUNCjAuMDU1ODYNClBsYXN0 |
1509 | - aWMgQm94DQoyDQo1OA0KMzgNCjMyDQoxMA0KMC4xNDEwNTYNCkZvbGRpbmcgYmlrZXMNCjINCjYw |
1510 | - DQoyNg0KNjANCjEwDQowLjE4NzINCkJpa2VzICh3aGVlbHMgcmVtb3ZlZCkNCjINCjEwNA0KNjcN |
1511 | - CjI3DQo3DQowLjM3NjI3Mg0KT3RoZXIgaXRlbXMNCjENCjEwNw0KNTgNCjEwDQo0DQowLjA2MjA2 |
1512 | - DQo4NQ0Ka2cNCjIuMzEzNDU2DQpjdWJpYyBtZXRlcnMNCg0KSWYgeW91IGhhdmUgYW55IHF1ZXN0 |
1513 | - aW9ucyBwbGVhc2UgZmVlbCBmcmVlIHRvIGVtYWlsIG9yIGNhbGwgbWUgYXQgMDMwIDMyMiAxMzku |
1514 | - DQoNClRoYW5rIHlvdSBpbiBhZHZhbmNlLg0KDQoNCktpbmQgcmVnYXJkcywNCk1hdXJvIERlIEdl |
1515 | - bm5hcm8NCg0KDQoNCg== |
1516 | - |
1517 | - --_000_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
1518 | - Content-Type: text/html; charset="utf-8" |
1519 | - Content-Transfer-Encoding: base64 |
1520 | - |
1521 | - PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy |
1522 | - bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt |
1523 | - YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj |
1524 | - cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv |
1525 | - VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg |
1526 | - Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv |
1527 | - ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPCEtLVtp |
1528 | - ZiAhbXNvXT48c3R5bGU+dlw6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kb1w6KiB7 |
1529 | - YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0 |
1530 | - I1ZNTCk7fQ0KLnNoYXBlIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9DQo8L3N0eWxlPjwh |
1531 | - W2VuZGlmXS0tPjxzdHlsZT48IS0tDQovKiBGb250IERlZmluaXRpb25zICovDQpAZm9udC1mYWNl |
1532 | - DQoJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOw0KCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYg |
1533 | - MyAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIg |
1534 | - MTUgNSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNhbGlicmkg |
1535 | - TGlnaHQiOw0KCXBhbm9zZS0xOjIgMTUgMyAyIDIgMiA0IDMgMiA0O30NCi8qIFN0eWxlIERlZmlu |
1536 | - aXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJe21h |
1537 | - cmdpbjowY207DQoJZm9udC1zaXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fu |
1538 | - cy1zZXJpZjt9DQphOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rDQoJe21zby1zdHlsZS1wcmlvcml0 |
1539 | - eTo5OTsNCgljb2xvcjojMDU2M0MxOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0Kc3Bh |
1540 | - bi5FbWFpbFN0eWxlMjANCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1m |
1541 | - YW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJY29sb3I6d2luZG93dGV4dDt9DQouTXNvQ2hw |
1542 | - RGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsNCglmb250LXNpemU6MTAuMHB0 |
1543 | - O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjYxMi4wcHQgNzkyLjBwdDsNCgltYXJnaW46 |
1544 | - NzAuODVwdCA3MC44NXB0IDcwLjg1cHQgNzAuODVwdDt9DQpkaXYuV29yZFNlY3Rpb24xDQoJe3Bh |
1545 | - Z2U6V29yZFNlY3Rpb24xO30NCi0tPjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8 |
1546 | - bzpzaGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI3IiAvPg0KPC94bWw+PCFb |
1547 | - ZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWxheW91dCB2OmV4dD0i |
1548 | - ZWRpdCI+DQo8bzppZG1hcCB2OmV4dD0iZWRpdCIgZGF0YT0iMSIgLz4NCjwvbzpzaGFwZWxheW91 |
1549 | - dD48L3htbD48IVtlbmRpZl0tLT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IlNMIiBsaW5rPSIjMDU2 |
1550 | - M0MxIiB2bGluaz0iIzk1NEY3MiIgc3R5bGU9IndvcmQtd3JhcDpicmVhay13b3JkIj4NCjxkaXYg |
1551 | - Y2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i |
1552 | - bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkRlYXIgTWF1cm8sPG86cD48L286cD48L3NwYW4+ |
1553 | - PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9Im1zby1mYXJlYXN0LWxhbmd1 |
1554 | - YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y |
1555 | - bWFsIj48c3BhbiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPlJhdGUgdG8gbW92 |
1556 | - ZSBsaXN0ZWQgZ29vZHMgZnJvbSBManVibGphbmEgdG8gVml0b3JpYS1HYXN0ZWl6IGlzIOKCrCAx |
1557 | - LjcwMCArIGluc3VyYW5jZSBjb3Zlci48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i |
1558 | - TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkluY2wg |
1559 | - cGFja2luZywgbG9hZGluZywgdHJhbnNwb3J0LCB1bmxvYWRpbmcgdG8gcmVzaWRlbmNlIHdpdGgg |
1560 | - Z29vZCBhY2Nlc3MsIGNhcnJ5IHVwIHRvIDFzdCBmbG9vciwgdW5wYWNraW5nLCByZW1vdmFsIG9m |
1561 | - IHBhY2tpbmcgbWF0ZXJpYWxzIG9uIGRheSBvZiBkZWxpdmVyeS48bzpwPjwvbzpwPjwvc3Bhbj48 |
1562 | - L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3Vh |
1563 | - Z2U6RU4tVVMiPkV4Y2wgVkFUIDIyJSwgc3RvcmFnZSwgZGlmZmljdWx0IGFjY2VzcyBhdCBib3Ro |
1564 | - IGVuZHMuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g |
1565 | - c3R5bGU9Im1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5SYXRlIHZhbGlkIDYwIGRheXM8bzpw |
1566 | - PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0ibXNv |
1567 | - LWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPlBheW1lbnQgYmVmb3JlIHNoaXBwaW5nIGZyb20gU2xv |
1568 | - dmVuaWEuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g |
1569 | - c3R5bGU9Im1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bh |
1570 | - bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxwIGNs |
1571 | - YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEyLjBw |
1572 | - dDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+S2luZCByZWdhcmRzLDxicj4NClZsYWRvIFZh |
1573 | - dG92ZWM8YnI+DQorMzg2IDQxIDc1NiAzNDA8YnI+DQo8L3NwYW4+PHU+PHNwYW4gbGFuZz0iRU4t |
1574 | - VVMiIHN0eWxlPSJjb2xvcjojMDU2M0MxO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48YnI+ |
1575 | - DQo8L3NwYW4+PC91PjwhLS1baWYgZ3RlIHZtbCAxXT48djpzaGFwZXR5cGUgaWQ9Il94MDAwMF90 |
1576 | - NzUiIGNvb3Jkc2l6ZT0iMjE2MDAsMjE2MDAiIG86c3B0PSI3NSIgbzpwcmVmZXJyZWxhdGl2ZT0i |
1577 | - dCIgcGF0aD0ibUA0QDVsQDRAMTFAOUAxMUA5QDV4ZSIgZmlsbGVkPSJmIiBzdHJva2VkPSJmIj4N |
1578 | - Cjx2OnN0cm9rZSBqb2luc3R5bGU9Im1pdGVyIiAvPg0KPHY6Zm9ybXVsYXM+DQo8djpmIGVxbj0i |
1579 | - aWYgbGluZURyYXduIHBpeGVsTGluZVdpZHRoIDAiIC8+DQo8djpmIGVxbj0ic3VtIEAwIDEgMCIg |
1580 | - Lz4NCjx2OmYgZXFuPSJzdW0gMCAwIEAxIiAvPg0KPHY6ZiBlcW49InByb2QgQDIgMSAyIiAvPg0K |
1581 | - PHY6ZiBlcW49InByb2QgQDMgMjE2MDAgcGl4ZWxXaWR0aCIgLz4NCjx2OmYgZXFuPSJwcm9kIEAz |
1582 | - IDIxNjAwIHBpeGVsSGVpZ2h0IiAvPg0KPHY6ZiBlcW49InN1bSBAMCAwIDEiIC8+DQo8djpmIGVx |
1583 | - bj0icHJvZCBANiAxIDIiIC8+DQo8djpmIGVxbj0icHJvZCBANyAyMTYwMCBwaXhlbFdpZHRoIiAv |
1584 | - Pg0KPHY6ZiBlcW49InN1bSBAOCAyMTYwMCAwIiAvPg0KPHY6ZiBlcW49InByb2QgQDcgMjE2MDAg |
1585 | - cGl4ZWxIZWlnaHQiIC8+DQo8djpmIGVxbj0ic3VtIEAxMCAyMTYwMCAwIiAvPg0KPC92OmZvcm11 |
1586 | - bGFzPg0KPHY6cGF0aCBvOmV4dHJ1c2lvbm9rPSJmIiBncmFkaWVudHNoYXBlb2s9InQiIG86Y29u |
1587 | - bmVjdHR5cGU9InJlY3QiIC8+DQo8bzpsb2NrIHY6ZXh0PSJlZGl0IiBhc3BlY3RyYXRpbz0idCIg |
1588 | - Lz4NCjwvdjpzaGFwZXR5cGU+PHY6c2hhcGUgaWQ9IlBpY3R1cmVfeDAwMjBfMjgiIG86c3BpZD0i |
1589 | - X3gwMDAwX3MxMDI2IiB0eXBlPSIjX3gwMDAwX3Q3NSIgYWx0PSJMb2dvLCBjb21wYW55IG5hbWUm |
1590 | - IzEwOyYjMTA7RGVzY3JpcHRpb24gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQiIHN0eWxlPSdwb3Np |
1591 | - dGlvbjphYnNvbHV0ZTttYXJnaW4tbGVmdDowO21hcmdpbi10b3A6Ljc1cHQ7d2lkdGg6MTg2Ljc1 |
1592 | - cHQ7aGVpZ2h0OjcxLjlwdDt6LWluZGV4OjI1MTY1OTI2NDt2aXNpYmlsaXR5OnZpc2libGU7bXNv |
1593 | - LXdyYXAtc3R5bGU6c3F1YXJlO21zby13aWR0aC1wZXJjZW50OjA7bXNvLWhlaWdodC1wZXJjZW50 |
1594 | - OjA7bXNvLXdyYXAtZGlzdGFuY2UtbGVmdDo5cHQ7bXNvLXdyYXAtZGlzdGFuY2UtdG9wOjA7bXNv |
1595 | - LXdyYXAtZGlzdGFuY2UtcmlnaHQ6OXB0O21zby13cmFwLWRpc3RhbmNlLWJvdHRvbTowO21zby1w |
1596 | - b3NpdGlvbi1ob3Jpem9udGFsOmxlZnQ7bXNvLXBvc2l0aW9uLWhvcml6b250YWwtcmVsYXRpdmU6 |
1597 | - bWFyZ2luO21zby1wb3NpdGlvbi12ZXJ0aWNhbDphYnNvbHV0ZTttc28tcG9zaXRpb24tdmVydGlj |
1598 | - YWwtcmVsYXRpdmU6dGV4dDttc28td2lkdGgtcGVyY2VudDowO21zby1oZWlnaHQtcGVyY2VudDow |
1599 | - O21zby13aWR0aC1yZWxhdGl2ZTpwYWdlO21zby1oZWlnaHQtcmVsYXRpdmU6cGFnZSc+DQo8djpp |
1600 | - bWFnZWRhdGEgc3JjPSJjaWQ6aW1hZ2UwMDEucG5nQDAxRDhGMDZBLkI2OTcyQ0YwIiBvOnRpdGxl |
1601 | - PSJMb2dvLCBjb21wYW55IG5hbWUmIzEwOyYjMTA7RGVzY3JpcHRpb24gYXV0b21hdGljYWxseSBn |
1602 | - ZW5lcmF0ZWQiIC8+DQo8dzp3cmFwIHR5cGU9InNxdWFyZSIgYW5jaG9yeD0ibWFyZ2luIi8+DQo8 |
1603 | - L3Y6c2hhcGU+PCFbZW5kaWZdLS0+PCFbaWYgIXZtbF0+PGltZyB3aWR0aD0iMjQ5IiBoZWlnaHQ9 |
1604 | - Ijk2IiBzdHlsZT0id2lkdGg6Mi41OTM3aW47aGVpZ2h0OjEuMGluIiBzcmM9ImNpZDppbWFnZTAw |
1605 | - Mi5qcGdAMDFEOEYwNkEuQjY5NzJDRjAiIGFsaWduPSJsZWZ0IiBoc3BhY2U9IjEyIiBhbHQ9Ikxv |
1606 | - Z28sIGNvbXBhbnkgbmFtZQoKRGVzY3JpcHRpb24gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQiIHY6 |
1607 | - c2hhcGVzPSJQaWN0dXJlX3gwMDIwXzI4Ij48IVtlbmRpZl0+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 |
1608 | - eWxlPSJmb250LXNpemU6MTAuMHB0O21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj4NCiBWYXRv |
1609 | - dmVjIGQuby5vLjxicj4NCsSMdWZhcmpldmEgNTxicj4NCjEwMDAgTGp1YmxqYW5hPGJyPg0KU2xv |
1610 | - dmVuaWE8YnI+DQorMzg2IDEgNDMwIDEzIDQwPGJyPg0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVT |
1611 | - IiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPjxhIGhyZWY9Imh0dHA6Ly93d3cu |
1612 | - dmF0b3ZlYy5zaS8iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0Ij53d3cudmF0b3ZlYy5z |
1613 | - aTwvc3Bhbj48L2E+PGJyPg0KPC9zcGFuPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpZGkub3JnL2Fi |
1614 | - b3V0LWZpZGkiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iY29sb3I6d2luZG93dGV4dDttc28t |
1615 | - ZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt0ZXh0LWRlY29yYXRpb246bm9uZSI+PGltZyBib3JkZXI9 |
1616 | - IjAiIHdpZHRoPSI3MyIgaGVpZ2h0PSI2NSIgc3R5bGU9IndpZHRoOi43NjA0aW47aGVpZ2h0Oi42 |
1617 | - NzdpbiIgaWQ9IkdyYXBoaWNfeDAwMjBfMzkiIHNyYz0iY2lkOmltYWdlMDAzLnBuZ0AwMUQ4RjA2 |
1618 | - QS5CNjk3MkNGMCI+PC9zcGFuPjwvYT48YSBocmVmPSJodHRwczovL3d3dy5maWRpLm9yZy9xdWFs |
1619 | - aXR5L2ZpZGktZmFpbS1jZXJ0aWZpY2F0aW9uIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImNv |
1620 | - bG9yOndpbmRvd3RleHQ7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7dGV4dC1kZWNvcmF0aW9u |
1621 | - Om5vbmUiPjxpbWcgYm9yZGVyPSIwIiB3aWR0aD0iMTM3IiBoZWlnaHQ9IjY2IiBzdHlsZT0id2lk |
1622 | - dGg6MS40MjdpbjtoZWlnaHQ6LjY4NzVpbiIgaWQ9IkdyYXBoaWNfeDAwMjBfNDAiIHNyYz0iY2lk |
1623 | - OmltYWdlMDA0LnBuZ0AwMUQ4RjA2QS5CNjk3MkNGMCI+PC9zcGFuPjwvYT48YSBocmVmPSJodHRw |
1624 | - czovL3d3dy5maWRpLm9yZy9hYm91dC1maWRpL2ZpZGktcGNncyI+PHNwYW4gbGFuZz0iRU4tVVMi |
1625 | - IHN0eWxlPSJmb250LXNpemU6Ni4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSBMaWdodCZx |
1626 | - dW90OyxzYW5zLXNlcmlmO2NvbG9yOndpbmRvd3RleHQ7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4t |
1627 | - VVM7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPjxpbWcgYm9yZGVyPSIwIiB3aWR0aD0iMTY1IiBoZWln |
1628 | - aHQ9IjU4IiBzdHlsZT0id2lkdGg6MS43MTg3aW47aGVpZ2h0Oi42MDQxaW4iIGlkPSJQaWN0dXJl |
1629 | - X3gwMDIwXzQxIiBzcmM9ImNpZDppbWFnZTAwNS5qcGdAMDFEOEYwNkEuQjY5NzJDRjAiIGFsdD0i |
1630 | - RGlhZ3JhbQoKRGVzY3JpcHRpb24gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgd2l0aCBsb3cgY29u |
1631 | - ZmlkZW5jZSI+PC9zcGFuPjwvYT48YSBocmVmPSJodHRwczovL3d3dy5pYW1vdmVycy5vcmcvIj48 |
1632 | - c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTo2LjBwdDtjb2xvcjp3aW5kb3d0ZXh0 |
1633 | - O21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO3RleHQtZGVjb3JhdGlvbjpub25lIj48aW1nIGJv |
1634 | - cmRlcj0iMCIgd2lkdGg9Ijg5IiBoZWlnaHQ9IjUyIiBzdHlsZT0id2lkdGg6LjkyN2luO2hlaWdo |
1635 | - dDouNTQxNmluIiBpZD0iUGljdHVyZV94MDAyMF82NSIgc3JjPSJjaWQ6aW1hZ2UwMDYucG5nQDAx |
1636 | - RDhGMDZBLkI2OTcyQ0YwIiBhbHQ9IkxvZ28sIGNvbXBhbnkgbmFtZQoKRGVzY3JpcHRpb24gYXV0 |
1637 | - b21hdGljYWxseSBnZW5lcmF0ZWQiPjwvc3Bhbj48L2E+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl |
1638 | - PSJtc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PGJyPg0KPC9zcGFuPjxzcGFuIGxhbmc9IkVO |
1639 | - LVVTIiBzdHlsZT0iZm9udC1zaXplOjUuMHB0O21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48 |
1640 | - YnI+DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6OC4wcHQ7Zm9u |
1641 | - dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSBMaWdodCZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0 |
1642 | - LWxhbmd1YWdlOkVOLVVTIj5XZSB0YWtlIHByaXZhY3kgc2VyaW91c2x5LiBSZWFkIG1vcmUgb24g |
1643 | - b3VyIHByaXZhY3kgcG9saWN5DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJtc28t |
1644 | - ZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PGEgaHJlZj0iaHR0cDovL3d3dy52YXRvdmVjLnNpL2Vu |
1645 | - L3RvcC1xdWFsaXR5LW1vdmluZy1zZXJ2aWNlcy9kYXRhLXByaXZhY3kiPjxzcGFuIHN0eWxlPSJm |
1646 | - b250LXNpemU6OC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSBMaWdodCZxdW90OyxzYW5z |
1647 | - LXNlcmlmIj5oZXJlPC9zcGFuPjwvYT48L3NwYW4+PHU+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl |
1648 | - PSJmb250LXNpemU6OC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSBMaWdodCZxdW90Oyxz |
1649 | - YW5zLXNlcmlmO2NvbG9yOiMwNTYzQzE7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPi48L3Nw |
1650 | - YW4+PC91PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjguMHB0O2ZvbnQtZmFt |
1651 | - aWx5OiZxdW90O0NhbGlicmkgTGlnaHQmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMDU2M0MxO21z |
1652 | - by1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj4NCjwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5 |
1653 | - bGU9ImZvbnQtc2l6ZTo4LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpIExpZ2h0JnF1b3Q7 |
1654 | - LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPk91ciBhbnRpLXRydXN0LCBj |
1655 | - b3Jwb3JhdGUgcmVzcG9uc2liaWxpdHkgYW5kIGVudmlyb25tZW50YWwgcG9saWN5IGlzIGF2YWls |
1656 | - YWJsZQ0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3Vh |
1657 | - Z2U6RU4tVVMiPjxhIGhyZWY9Imh0dHBzOi8vdmF0b3ZlYy5zaS9lbi90b3AtcXVhbGl0eS1tb3Zp |
1658 | - bmctc2VydmljZXMvY29ycG9yYXRlLXNvY2lhbC1yZXNwb25zaWJpbGl0eS8iPjxzcGFuIHN0eWxl |
1659 | - PSJmb250LXNpemU6OC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSBMaWdodCZxdW90Oyxz |
1660 | - YW5zLXNlcmlmIj5oZXJlPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl |
1661 | - PSJmb250LXNpemU6OC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSBMaWdodCZxdW90Oyxz |
1662 | - YW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj4uPGJyPg0KPGJyPg0KPG86cD48 |
1663 | - L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48 |
1664 | - L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3Vh |
1665 | - Z2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt |
1666 | - YWwiPjxzcGFuIHN0eWxlPSJtc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8 |
1667 | - L286cD48L3NwYW4+PC9wPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10 |
1668 | - b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBjbSAwY20gMGNtIj4NCjxwIGNs |
1669 | - YXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIGxhbmc9IkVOLUdCIj5Gcm9tOjwvc3Bhbj48L2I+PHNw |
1670 | - YW4gbGFuZz0iRU4tR0IiPiBJbmZvIFZhdG92ZWMgJmx0O2luZm9AdmF0b3ZlYy5zaSZndDsNCjxi |
1671 | - cj4NCjxiPlNlbnQ6PC9iPiBXZWRuZXNkYXksIE5vdmVtYmVyIDIsIDIwMjIgNjo1MCBBTTxicj4N |
1672 | - CjxiPlRvOjwvYj4gVmxhZG8gVmF0b3ZlYyAmbHQ7dmxhZG9AdmF0b3ZlYy5zaSZndDs8YnI+DQo8 |
1673 | - Yj5DYzo8L2I+IE1hdGphxb4gVmF0b3ZlYyAmbHQ7TWF0amF6QHZhdG92ZWMuc2kmZ3Q7PGJyPg0K |
1674 | - PGI+U3ViamVjdDo8L2I+IEZXOiBRdW90ZSBtb3ZlIGZyb20gTGp1YmxqYW5hIHRvIFNwYWluPG86 |
1675 | - cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi |
1676 | - PjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9 |
1677 | - Im1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+ |
1678 | - DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 |
1679 | - RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpu |
1680 | - b25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBjbSAwY20g |
1681 | - MGNtIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIGxhbmc9IkVOLVVTIj5Gcm9tOjwv |
1682 | - c3Bhbj48L2I+PHNwYW4gbGFuZz0iRU4tVVMiPiBNYXVybyBEZSBHZW5uYXJvICZsdDs8YSBocmVm |
1683 | - PSJtYWlsdG86bWF1cm9AZGVnZW5uYXJvLm1lIj5tYXVyb0BkZWdlbm5hcm8ubWU8L2E+Jmd0Ow0K |
1684 | - PGJyPg0KPGI+U2VudDo8L2I+IE1vbmRheSwgT2N0b2JlciAzMSwgMjAyMiAxMTo1NiBBTTxicj4N |
1685 | - CjxiPlRvOjwvYj4gSW5mbyBWYXRvdmVjICZsdDs8YSBocmVmPSJtYWlsdG86aW5mb0B2YXRvdmVj |
1686 | - LnNpIj5pbmZvQHZhdG92ZWMuc2k8L2E+Jmd0Ozxicj4NCjxiPlN1YmplY3Q6PC9iPiBRdW90ZSBt |
1687 | - b3ZlIGZyb20gTGp1YmxqYW5hIHRvIFNwYWluPG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+ |
1688 | - DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2 |
1689 | - Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SGVsbG8sPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxk |
1690 | - aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0K |
1691 | - PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkkgZm91bmQgeW91ciBjb21wYW55IG9uIEdvb2ds |
1692 | - ZSBzZWFyY2guIFdlIGFyZSBtb3ZpbmcgZnJvbSBManVibGphbmEgRHJhdmxqZSB0byBWaXRvcmlh |
1693 | - LUdhc3RlaXosIFNwYWluIGFyb3VuZCBtaWQgSmFudWFyeSBhbmQgd291bGQgbGlrZSB0byByZWNl |
1694 | - aXZlIGEgcXVvdGUgdG8gdHJhbnNwb3J0IGFyb3VuZCAzIGN1YmljIG1ldGVycy4gSXQgaXMgb25s |
1695 | - eSBzb21lIGJveGVzIGFuZCBiaWtlcyBidXQgbm8gZnVybml0dXJlDQogb3IgaG9tZSBhcHBsaWFu |
1696 | - Y2VzLCBwbGVhc2UgZmluZCBiZWxvdyB0aGUgZGltZW5zaW9ucyBhbmQgZXN0aW1hdGVkIHdlaWdo |
1697 | - dHM6PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 |
1698 | - bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjx0YWJsZSBjbGFzcz0iTXNvTm9y |
1699 | - bWFsVGFibGUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0 |
1700 | - aD0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZSI+DQo8dGJvZHk+DQo8dHIgc3R5 |
1701 | - bGU9ImhlaWdodDoxNS43NXB0Ij4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlcjpz |
1702 | - b2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWln |
1703 | - aHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g |
1704 | - c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fu |
1705 | - cy1zZXJpZiI+RGVzY3JpcHRpb248bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZh |
1706 | - bGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLWxl |
1707 | - ZnQ6bm9uZTtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7 |
1708 | - b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250 |
1709 | - LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPlF0 |
1710 | - eTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxl |
1711 | - PSJib3JkZXI6c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItbGVmdDpub25lO3BhZGRpbmc6MS41 |
1712 | - cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0K |
1713 | - PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1m |
1714 | - YW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+RGltZW5zaW9uPG86cD48L286cD48 |
1715 | - L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlcjpzb2xp |
1716 | - ZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1sZWZ0Om5vbmU7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41 |
1717 | - cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNv |
1718 | - Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtB |
1719 | - cmlhbCZxdW90OyxzYW5zLXNlcmlmIj5EaW1lbnNpb248bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 |
1720 | - L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyOnNvbGlkICNDQ0NDQ0MgMS4w |
1721 | - cHQ7Ym9yZGVyLWxlZnQ6bm9uZTtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVp |
1722 | - Z2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu |
1723 | - IHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNh |
1724 | - bnMtc2VyaWYiPkRpbWVuc2lvbjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFs |
1725 | - aWduPSJib3R0b20iIHN0eWxlPSJib3JkZXI6c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItbGVm |
1726 | - dDpub25lO3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtv |
1727 | - dmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt |
1728 | - c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+V2Vp |
1729 | - Z2h0IChrZyk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9t |
1730 | - IiBzdHlsZT0iYm9yZGVyOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLWxlZnQ6bm9uZTtwYWRk |
1731 | - aW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlk |
1732 | - ZGVuIj4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXI6c29saWQgI0ND |
1733 | - Q0NDQyAxLjBwdDtib3JkZXItbGVmdDpub25lO3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIu |
1734 | - MjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjx0ZCB2YWxpZ249 |
1735 | - ImJvdHRvbSIgc3R5bGU9ImJvcmRlcjpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1sZWZ0Om5v |
1736 | - bmU7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJm |
1737 | - bG93OmhpZGRlbiI+DQo8L3RkPg0KPC90cj4NCjx0ciBzdHlsZT0iaGVpZ2h0OjE1Ljc1cHQiPg0K |
1738 | - PHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9y |
1739 | - ZGVyLXRvcDpub25lO3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUu |
1740 | - NzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9 |
1741 | - ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJp |
1742 | - ZiI+Qm94IElrZWE8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90 |
1743 | - dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRv |
1744 | - bTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3Bh |
1745 | - ZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpo |
1746 | - aWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1h |
1747 | - bGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1 |
1748 | - b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MTQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3Rk |
1749 | - Pg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0 |
1750 | - Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xp |
1751 | - ZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6 |
1752 | - MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJp |
1753 | - Z2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4w |
1754 | - cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+NTY8bzpwPjwvbzpw |
1755 | - Pjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRv |
1756 | - cDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0 |
1757 | - O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEu |
1758 | - NXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1z |
1759 | - b05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5 |
1760 | - bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1z |
1761 | - ZXJpZiI+MzM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9t |
1762 | - IiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpz |
1763 | - b2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRp |
1764 | - bmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRk |
1765 | - ZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGln |
1766 | - bjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 |
1767 | - QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+NDE8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0K |
1768 | - PHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5v |
1769 | - bmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAj |
1770 | - Q0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUu |
1771 | - NzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0 |
1772 | - IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7 |
1773 | - Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+ODxvOnA+PC9vOnA+PC9z |
1774 | - cGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5v |
1775 | - bmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9y |
1776 | - ZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQg |
1777 | - Mi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGln |
1778 | - bj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVy |
1779 | - LWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEu |
1780 | - MHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVy |
1781 | - ZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0i |
1782 | - dGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p |
1783 | - bHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MS4wNjA3NTI8bzpwPjwvbzpwPjwvc3Bh |
1784 | - bj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25l |
1785 | - O2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRl |
1786 | - ci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIu |
1787 | - MjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjwvdHI+DQo8dHIg |
1788 | - c3R5bGU9ImhlaWdodDoxNS43NXB0Ij4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRl |
1789 | - cjpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci10b3A6bm9uZTtwYWRkaW5nOjEuNXB0IDIuMjVw |
1790 | - dCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNz |
1791 | - PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZx |
1792 | - dW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPkJveCBUb3BlYWs8bzpwPjwvbzpwPjwvc3Bhbj48 |
1793 | - L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2Jv |
1794 | - cmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1y |
1795 | - aWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVw |
1796 | - dDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg |
1797 | - YWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQt |
1798 | - c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MTxv |
1799 | - OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJi |
1800 | - b3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0ND |
1801 | - Q0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAy |
1802 | - LjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBj |
1803 | - bGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48 |
1804 | - c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90 |
1805 | - OyxzYW5zLXNlcmlmIj42ODxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWdu |
1806 | - PSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXIt |
1807 | - Ym90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4w |
1808 | - cHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJm |
1809 | - bG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0 |
1810 | - ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls |
1811 | - eTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4zMzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N |
1812 | - CjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVy |
1813 | - LWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0 |
1814 | - OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hl |
1815 | - aWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGln |
1816 | - bj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXpl |
1817 | - OjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj40MTxvOnA+ |
1818 | - PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3Jk |
1819 | - ZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0Mg |
1820 | - MS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1 |
1821 | - cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFz |
1822 | - cz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3Bh |
1823 | - biBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90Oyxz |
1824 | - YW5zLXNlcmlmIj4xMDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJi |
1825 | - b3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90 |
1826 | - dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7 |
1827 | - cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93 |
1828 | - OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpu |
1829 | - b25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2Jv |
1830 | - cmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0 |
1831 | - IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05v |
1832 | - cm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9 |
1833 | - ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJp |
1834 | - ZiI+MC4wOTIwMDQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90 |
1835 | - dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRv |
1836 | - bTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3Bh |
1837 | - ZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpo |
1838 | - aWRkZW4iPg0KPC90ZD4NCjwvdHI+DQo8dHIgc3R5bGU9ImhlaWdodDoxNS43NXB0Ij4NCjx0ZCB2 |
1839 | - YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlcjpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci10 |
1840 | - b3A6bm9uZTtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7 |
1841 | - b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250 |
1842 | - LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPlRv |
1843 | - b2xib3g8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBz |
1844 | - dHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xp |
1845 | - ZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6 |
1846 | - MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4i |
1847 | - Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpy |
1848 | - aWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJp |
1849 | - YWwmcXVvdDssc2Fucy1zZXJpZiI+MTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQg |
1850 | - dmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTti |
1851 | - b3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0ND |
1852 | - Q0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0 |
1853 | - O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0 |
1854 | - eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250 |
1855 | - LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj42NzxvOnA+PC9vOnA+PC9zcGFu |
1856 | - PjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7 |
1857 | - Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVy |
1858 | - LXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4y |
1859 | - NXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFs |
1860 | - IiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9u |
1861 | - dC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4z |
1862 | - MDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxl |
1863 | - PSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICND |
1864 | - Q0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVw |
1865 | - dCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8 |
1866 | - cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0 |
1867 | - Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZx |
1868 | - dW90OyxzYW5zLXNlcmlmIj40MDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFs |
1869 | - aWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3Jk |
1870 | - ZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0Mg |
1871 | - MS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292 |
1872 | - ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxl |
1873 | - PSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZh |
1874 | - bWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4xNTxvOnA+PC9vOnA+PC9zcGFuPjwv |
1875 | - cD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9y |
1876 | - ZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJp |
1877 | - Z2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0 |
1878 | - O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90 |
1879 | - dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRv |
1880 | - bTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3Bh |
1881 | - ZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpo |
1882 | - aWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1h |
1883 | - bGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1 |
1884 | - b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MC4wODA0PG86cD48L286cD48L3NwYW4+PC9wPg0K |
1885 | - PC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXIt |
1886 | - bGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6 |
1887 | - c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVp |
1888 | - Z2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8L3RyPg0KPHRyIHN0eWxlPSJo |
1889 | - ZWlnaHQ6MTUuNzVwdCI+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXI6c29saWQg |
1890 | - I0NDQ0NDQyAxLjBwdDtib3JkZXItdG9wOm5vbmU7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQg |
1891 | - Mi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9y |
1892 | - bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlh |
1893 | - bCZxdW90OyxzYW5zLXNlcmlmIj5Cb3ggRGVjYW50YWxvPG86cD48L286cD48L3NwYW4+PC9wPg0K |
1894 | - PC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXIt |
1895 | - bGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6 |
1896 | - c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVp |
1897 | - Z2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWdu |
1898 | - PSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 |
1899 | - MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjE8bzpwPjwv |
1900 | - bzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVy |
1901 | - LXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEu |
1902 | - MHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0 |
1903 | - IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9 |
1904 | - Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4g |
1905 | - c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fu |
1906 | - cy1zZXJpZiI+NDQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90 |
1907 | - dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRv |
1908 | - bTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3Bh |
1909 | - ZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpo |
1910 | - aWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1h |
1911 | - bGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1 |
1912 | - b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MzQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3Rk |
1913 | - Pg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0 |
1914 | - Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xp |
1915 | - ZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6 |
1916 | - MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJp |
1917 | - Z2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4w |
1918 | - cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+Mzc8bzpwPjwvbzpw |
1919 | - Pjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRv |
1920 | - cDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0 |
1921 | - O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEu |
1922 | - NXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1z |
1923 | - b05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5 |
1924 | - bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1z |
1925 | - ZXJpZiI+ODxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20i |
1926 | - IHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNv |
1927 | - bGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGlu |
1928 | - ZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRl |
1929 | - biI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2Jv |
1930 | - cmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1y |
1931 | - aWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVw |
1932 | - dDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg |
1933 | - YWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQt |
1934 | - c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MC4w |
1935 | - NTUzNTI8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBz |
1936 | - dHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xp |
1937 | - ZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6 |
1938 | - MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4i |
1939 | - Pg0KPC90ZD4NCjwvdHI+DQo8dHIgc3R5bGU9ImhlaWdodDoxNS43NXB0Ij4NCjx0ZCB2YWxpZ249 |
1940 | - ImJvdHRvbSIgc3R5bGU9ImJvcmRlcjpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci10b3A6bm9u |
1941 | - ZTtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZs |
1942 | - b3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 |
1943 | - MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPkJveGVzPG86 |
1944 | - cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJv |
1945 | - cmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0ND |
1946 | - QyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIu |
1947 | - MjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNs |
1948 | - YXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxz |
1949 | - cGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7 |
1950 | - LHNhbnMtc2VyaWYiPjM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0i |
1951 | - Ym90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJv |
1952 | - dHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0 |
1953 | - O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxv |
1954 | - dzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4 |
1955 | - dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6 |
1956 | - JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+NTA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 |
1957 | - L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1s |
1958 | - ZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpz |
1959 | - b2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWln |
1960 | - aHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249 |
1961 | - InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox |
1962 | - MC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MzA8bzpwPjwv |
1963 | - bzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVy |
1964 | - LXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEu |
1965 | - MHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0 |
1966 | - IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9 |
1967 | - Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4g |
1968 | - c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fu |
1969 | - cy1zZXJpZiI+NDU8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90 |
1970 | - dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRv |
1971 | - bTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3Bh |
1972 | - ZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpo |
1973 | - aWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1h |
1974 | - bGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1 |
1975 | - b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+ODxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+ |
1976 | - DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6 |
1977 | - bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlk |
1978 | - ICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDox |
1979 | - NS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHls |
1980 | - ZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAj |
1981 | - Q0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41 |
1982 | - cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0K |
1983 | - PHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdo |
1984 | - dCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwm |
1985 | - cXVvdDssc2Fucy1zZXJpZiI+MC4yMDI1PG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0 |
1986 | - ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25l |
1987 | - O2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0ND |
1988 | - Q0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1 |
1989 | - cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8L3RyPg0KPHRyIHN0eWxlPSJoZWlnaHQ6MTUu |
1990 | - NzVwdCI+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXI6c29saWQgI0NDQ0NDQyAx |
1991 | - LjBwdDtib3JkZXItdG9wOm5vbmU7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hl |
1992 | - aWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh |
1993 | - biBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90Oyxz |
1994 | - YW5zLXNlcmlmIj5Cb3ggSW5kb29yPG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2 |
1995 | - YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2Jv |
1996 | - cmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0ND |
1997 | - QyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7 |
1998 | - b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5 |
1999 | - bGU9InRleHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQt |
2000 | - ZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjE8bzpwPjwvbzpwPjwvc3Bhbj48 |
2001 | - L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2Jv |
2002 | - cmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1y |
2003 | - aWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVw |
2004 | - dDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg |
2005 | - YWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQt |
2006 | - c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MjA8 |
2007 | - bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0i |
2008 | - Ym9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0ND |
2009 | - Q0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQg |
2010 | - Mi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAg |
2011 | - Y2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+ |
2012 | - PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVv |
2013 | - dDssc2Fucy1zZXJpZiI+NTc8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGln |
2014 | - bj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVy |
2015 | - LWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEu |
2016 | - MHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVy |
2017 | - ZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0i |
2018 | - dGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p |
2019 | - bHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+NDk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+ |
2020 | - DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRl |
2021 | - ci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdo |
2022 | - dDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDto |
2023 | - ZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxp |
2024 | - Z249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 |
2025 | - ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+NTxvOnA+ |
2026 | - PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3Jk |
2027 | - ZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0Mg |
2028 | - MS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1 |
2029 | - cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0K |
2030 | - PHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5v |
2031 | - bmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAj |
2032 | - Q0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUu |
2033 | - NzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0 |
2034 | - IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7 |
2035 | - Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MC4wNTU4NjxvOnA+PC9v |
2036 | - OnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXIt |
2037 | - dG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4w |
2038 | - cHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQg |
2039 | - MS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPC90 |
2040 | - cj4NCjx0ciBzdHlsZT0iaGVpZ2h0OjE1Ljc1cHQiPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHls |
2041 | - ZT0iYm9yZGVyOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXRvcDpub25lO3BhZGRpbmc6MS41 |
2042 | - cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0K |
2043 | - PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1m |
2044 | - YW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+UGxhc3RpYyBCb3g8bzpwPjwvbzpw |
2045 | - Pjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRv |
2046 | - cDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0 |
2047 | - O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEu |
2048 | - NXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1z |
2049 | - b05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5 |
2050 | - bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1z |
2051 | - ZXJpZiI+MjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20i |
2052 | - IHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNv |
2053 | - bGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGlu |
2054 | - ZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRl |
2055 | - biI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWdu |
2056 | - OnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtB |
2057 | - cmlhbCZxdW90OyxzYW5zLXNlcmlmIj41ODxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8 |
2058 | - dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9u |
2059 | - ZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICND |
2060 | - Q0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43 |
2061 | - NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQi |
2062 | - IHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm |
2063 | - b250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4zODxvOnA+PC9vOnA+PC9z |
2064 | - cGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5v |
2065 | - bmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9y |
2066 | - ZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQg |
2067 | - Mi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9y |
2068 | - bWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0i |
2069 | - Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlm |
2070 | - Ij4zMjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0 |
2071 | - eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlk |
2072 | - ICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzox |
2073 | - LjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+ |
2074 | - DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJp |
2075 | - Z2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlh |
2076 | - bCZxdW90OyxzYW5zLXNlcmlmIj4xMDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQg |
2077 | - dmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTti |
2078 | - b3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0ND |
2079 | - Q0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0 |
2080 | - O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9y |
2081 | - ZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0ND |
2082 | - IDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4y |
2083 | - NXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xh |
2084 | - c3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNw |
2085 | - YW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDss |
2086 | - c2Fucy1zZXJpZiI+MC4xNDEwNTY8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZh |
2087 | - bGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9y |
2088 | - ZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0ND |
2089 | - IDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtv |
2090 | - dmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjwvdHI+DQo8dHIgc3R5bGU9ImhlaWdodDoxNS43NXB0 |
2091 | - Ij4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlcjpzb2xpZCAjQ0NDQ0NDIDEuMHB0 |
2092 | - O2JvcmRlci10b3A6bm9uZTtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0 |
2093 | - OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0 |
2094 | - eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMt |
2095 | - c2VyaWYiPkZvbGRpbmcgYmlrZXM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZh |
2096 | - bGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9y |
2097 | - ZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0ND |
2098 | - IDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtv |
2099 | - dmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHls |
2100 | - ZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1m |
2101 | - YW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MjxvOnA+PC9vOnA+PC9zcGFuPjwv |
2102 | - cD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9y |
2103 | - ZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJp |
2104 | - Z2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0 |
2105 | - O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBh |
2106 | - bGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1z |
2107 | - aXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj42MDxv |
2108 | - OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJi |
2109 | - b3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0ND |
2110 | - Q0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAy |
2111 | - LjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBj |
2112 | - bGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48 |
2113 | - c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90 |
2114 | - OyxzYW5zLXNlcmlmIj4yNjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWdu |
2115 | - PSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXIt |
2116 | - Ym90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4w |
2117 | - cHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJm |
2118 | - bG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0 |
2119 | - ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls |
2120 | - eTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj42MDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N |
2121 | - CjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVy |
2122 | - LWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0 |
2123 | - OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hl |
2124 | - aWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGln |
2125 | - bj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXpl |
2126 | - OjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4xMDxvOnA+ |
2127 | - PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3Jk |
2128 | - ZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0Mg |
2129 | - MS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1 |
2130 | - cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0K |
2131 | - PHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5v |
2132 | - bmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAj |
2133 | - Q0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUu |
2134 | - NzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0 |
2135 | - IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7 |
2136 | - Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MC4xODcyPG86cD48L286 |
2137 | - cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10 |
2138 | - b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBw |
2139 | - dDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAx |
2140 | - LjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8L3Ry |
2141 | - Pg0KPHRyIHN0eWxlPSJoZWlnaHQ6MTUuNzVwdCI+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxl |
2142 | - PSJib3JkZXI6c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItdG9wOm5vbmU7cGFkZGluZzoxLjVw |
2143 | - dCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8 |
2144 | - cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZh |
2145 | - bWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj5CaWtlcyAod2hlZWxzIHJlbW92ZWQp |
2146 | - PG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9 |
2147 | - ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0ND |
2148 | - Q0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0 |
2149 | - IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxw |
2150 | - IGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQi |
2151 | - PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1 |
2152 | - b3Q7LHNhbnMtc2VyaWYiPjI8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L3RkPg0KPHRkIHZhbGln |
2153 | - bj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVy |
2154 | - LWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEu |
2155 | - MHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVy |
2156 | - ZmxvdzpoaWRkZW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0i |
2157 | - dGV4dC1hbGlnbjpyaWdodCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p |
2158 | - bHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+MTA0PG86cD48L286cD48L3NwYW4+PC9w |
2159 | - Pg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3Jk |
2160 | - ZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmln |
2161 | - aHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7 |
2162 | - aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFs |
2163 | - aWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNp |
2164 | - emU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjY3PG86 |
2165 | - cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJv |
2166 | - cmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0ND |
2167 | - QyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIu |
2168 | - MjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNs |
2169 | - YXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxz |
2170 | - cGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7 |
2171 | - LHNhbnMtc2VyaWYiPjI3PG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249 |
2172 | - ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1i |
2173 | - b3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBw |
2174 | - dDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZs |
2175 | - b3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5bGU9InRl |
2176 | - eHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5 |
2177 | - OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjc8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 |
2178 | - L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1s |
2179 | - ZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpz |
2180 | - b2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWln |
2181 | - aHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIg |
2182 | - c3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29s |
2183 | - aWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5n |
2184 | - OjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVu |
2185 | - Ij4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246 |
2186 | - cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Fy |
2187 | - aWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjAuMzc2MjcyPG86cD48L286cD48L3NwYW4+PC9wPg0KPC90 |
2188 | - ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVm |
2189 | - dDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29s |
2190 | - aWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0 |
2191 | - OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8L3RyPg0KPHRyIHN0eWxlPSJoZWln |
2192 | - aHQ6MTUuNzVwdCI+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXI6c29saWQgI0ND |
2193 | - Q0NDQyAxLjBwdDtib3JkZXItdG9wOm5vbmU7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4y |
2194 | - NXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFs |
2195 | - Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZx |
2196 | - dW90OyxzYW5zLXNlcmlmIj5PdGhlciBpdGVtczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+ |
2197 | - DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6 |
2198 | - bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlk |
2199 | - ICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDox |
2200 | - NS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmln |
2201 | - aHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBw |
2202 | - dDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4xPG86cD48L286cD48 |
2203 | - L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6 |
2204 | - bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDti |
2205 | - b3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVw |
2206 | - dCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29O |
2207 | - b3JtYWwiIGFsaWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxl |
2208 | - PSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2Vy |
2209 | - aWYiPjEwNzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20i |
2210 | - IHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNv |
2211 | - bGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGlu |
2212 | - ZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRl |
2213 | - biI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWdu |
2214 | - OnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtB |
2215 | - cmlhbCZxdW90OyxzYW5zLXNlcmlmIj41ODxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvdGQ+DQo8 |
2216 | - dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9u |
2217 | - ZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICND |
2218 | - Q0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43 |
2219 | - NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQi |
2220 | - IHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm |
2221 | - b250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4xMDxvOnA+PC9vOnA+PC9z |
2222 | - cGFuPjwvcD4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5v |
2223 | - bmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9y |
2224 | - ZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQg |
2225 | - Mi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9y |
2226 | - bWFsIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0i |
2227 | - Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlm |
2228 | - Ij40PG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5 |
2229 | - bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQg |
2230 | - I0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEu |
2231 | - NXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4N |
2232 | - CjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVy |
2233 | - LWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0 |
2234 | - OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hl |
2235 | - aWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGln |
2236 | - bj0icmlnaHQiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXpl |
2237 | - OjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmIj4wLjA2MjA2 |
2238 | - PG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9 |
2239 | - ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0ND |
2240 | - Q0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0 |
2241 | - IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwv |
2242 | - dGQ+DQo8L3RyPg0KPHRyIHN0eWxlPSJoZWlnaHQ6MTUuNzVwdCI+DQo8dGQgdmFsaWduPSJib3R0 |
2243 | - b20iIHN0eWxlPSJib3JkZXI6c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItdG9wOm5vbmU7cGFk |
2244 | - ZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93Omhp |
2245 | - ZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25l |
2246 | - O2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRl |
2247 | - ci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIu |
2248 | - MjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjx0ZCB2YWxpZ249 |
2249 | - ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1i |
2250 | - b3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBw |
2251 | - dDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZs |
2252 | - b3c6aGlkZGVuIj4NCjwvdGQ+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9w |
2253 | - Om5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7 |
2254 | - Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41 |
2255 | - cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZh |
2256 | - bGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9y |
2257 | - ZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0ND |
2258 | - IDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtv |
2259 | - dmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRl |
2260 | - ci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAx |
2261 | - LjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVw |
2262 | - dCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8 |
2263 | - dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9u |
2264 | - ZTtib3JkZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICND |
2265 | - Q0NDQ0MgMS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43 |
2266 | - NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0i |
2267 | - Ym9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0ND |
2268 | - Q0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQg |
2269 | - Mi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPC90 |
2270 | - ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVm |
2271 | - dDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29s |
2272 | - aWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0 |
2273 | - OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8L3RyPg0KPHRyIHN0eWxlPSJoZWln |
2274 | - aHQ6MTUuNzVwdCI+DQo8dGQgdmFsaWduPSJib3R0b20iIHN0eWxlPSJib3JkZXI6c29saWQgI0ND |
2275 | - Q0NDQyAxLjBwdDtib3JkZXItdG9wOm5vbmU7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4y |
2276 | - NXB0O2hlaWdodDoxNS43NXB0O292ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0i |
2277 | - Ym90dG9tIiBzdHlsZT0iYm9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJv |
2278 | - dHRvbTpzb2xpZCAjQ0NDQ0NDIDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0 |
2279 | - O3BhZGRpbmc6MS41cHQgMi4yNXB0IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxv |
2280 | - dzpoaWRkZW4iPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6 |
2281 | - bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDti |
2282 | - b3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVw |
2283 | - dCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjwvdGQ+DQo8dGQgdmFs |
2284 | - aWduPSJib3R0b20iIHN0eWxlPSJib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZTtib3Jk |
2285 | - ZXItYm90dG9tOnNvbGlkICNDQ0NDQ0MgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICNDQ0NDQ0Mg |
2286 | - MS4wcHQ7cGFkZGluZzoxLjVwdCAyLjI1cHQgMS41cHQgMi4yNXB0O2hlaWdodDoxNS43NXB0O292 |
2287 | - ZXJmbG93OmhpZGRlbiI+DQo8L3RkPg0KPHRkIHZhbGlnbj0iYm90dG9tIiBzdHlsZT0iYm9yZGVy |
2288 | - LXRvcDpub25lO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjQ0NDQ0NDIDEu |
2289 | - MHB0O2JvcmRlci1yaWdodDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MS41cHQgMi4yNXB0 |
2290 | - IDEuNXB0IDIuMjVwdDtoZWlnaHQ6MTUuNzVwdDtvdmVyZmxvdzpoaWRkZW4iPg0KPC90ZD4NCjx0 |
2291 | - ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25l |
2292 | - O2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0ND |
2293 | - Q0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1 |
2294 | - cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIg |
2295 | - c3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2Zv |
2296 | - bnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjg1PG86cD48L286cD48L3Nw |
2297 | - YW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9u |
2298 | - ZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3Jk |
2299 | - ZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAy |
2300 | - LjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3Jt |
2301 | - YWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFs |
2302 | - JnF1b3Q7LHNhbnMtc2VyaWYiPmtnPG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2 |
2303 | - YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDpub25lO2Jv |
2304 | - cmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgI0NDQ0ND |
2305 | - QyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVwdCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7 |
2306 | - b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5 |
2307 | - bGU9InRleHQtYWxpZ246cmlnaHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQt |
2308 | - ZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWYiPjIuMzEzNDU2PG86cD48L286cD48 |
2309 | - L3NwYW4+PC9wPg0KPC90ZD4NCjx0ZCB2YWxpZ249ImJvdHRvbSIgc3R5bGU9ImJvcmRlci10b3A6 |
2310 | - bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206c29saWQgI0NDQ0NDQyAxLjBwdDti |
2311 | - b3JkZXItcmlnaHQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjEuNXB0IDIuMjVwdCAxLjVw |
2312 | - dCAyLjI1cHQ7aGVpZ2h0OjE1Ljc1cHQ7b3ZlcmZsb3c6aGlkZGVuIj4NCjxwIGNsYXNzPSJNc29O |
2313 | - b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Fy |
2314 | - aWFsJnF1b3Q7LHNhbnMtc2VyaWYiPmN1YmljIG1ldGVyczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N |
2315 | - CjwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz |
2316 | - cz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs |
2317 | - YXNzPSJNc29Ob3JtYWwiPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgcGxlYXNlIGZlZWwgZnJl |
2318 | - ZSB0byBlbWFpbCBvciBjYWxsIG1lIGF0IDAzMCAzMjIgMTM5LjxvOnA+PC9vOnA+PC9wPg0KPC9k |
2319 | - aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8 |
2320 | - L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5UaGFuayB5b3UgaW4gYWR2YW5jZS48 |
2321 | - bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+ |
2322 | - Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86 |
2323 | - cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5L |
2324 | - aW5kIHJlZ2FyZHMsPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv |
2325 | - Tm9ybWFsIj5NYXVybyBEZSBHZW5uYXJvPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8 |
2326 | - cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N |
2327 | - CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2 |
2328 | - Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjwv |
2329 | - ZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= |
2330 | - |
2331 | - --_000_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_-- |
2332 | - |
2333 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
2334 | - Content-Type: image/png; name="image001.png" |
2335 | - Content-Description: image001.png |
2336 | - Content-Disposition: inline; filename="image001.png"; size=39015; |
2337 | - creation-date="Fri, 04 Nov 2022 15:30:13 GMT"; |
2338 | - modification-date="Fri, 04 Nov 2022 15:30:13 GMT" |
2339 | - Content-ID: <image001.png@01D8F06A.B6972CF0> |
2340 | - Content-Transfer-Encoding: base64 |
2341 | - |
2342 | - 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 |
3026 | - LBoDysr+f/er8XZcsB7OAAAAAElFTkSuQmCC |
3027 | - |
3028 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
3029 | - Content-Type: image/jpeg; name="image002.jpg" |
3030 | - Content-Description: image002.jpg |
3031 | - Content-Disposition: inline; filename="image002.jpg"; size=5861; |
3032 | - creation-date="Fri, 04 Nov 2022 15:30:13 GMT"; |
3033 | - modification-date="Fri, 04 Nov 2022 15:30:13 GMT" |
3034 | - Content-ID: <image002.jpg@01D8F06A.B6972CF0> |
3035 | - Content-Transfer-Encoding: base64 |
3036 | - |
3037 | - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf |
3038 | - IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 |
3039 | - Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABgAPkDASIA |
3040 | - AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA |
3041 | - AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 |
3042 | - ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm |
3043 | - p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA |
3044 | - AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx |
3045 | - BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK |
3046 | - U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 |
3047 | - uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aiii |
3048 | - gAqK5urezgae6njgiT7zyMFA/E1zfjHx1Y+FYvJVRc6hIuUtweFH95z2H6mvFtb8Qap4huvtGp3T |
3049 | - TYPyRjiNP91eg/nXbQwc6vvPRGNSso6dT1zU/iv4csWZLUz37jvCmE/76bH6ZrBm+NEm79xoQC/9 |
3050 | - NLnn9Fry+ivSjgaK3VzmdebPUYPjQd3+kaF8vrHcc/qtdDpfxS8NaiyxzTS2Eh7XKYX/AL6GR+eK |
3051 | - 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 |
3140 | - |
3141 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
3142 | - Content-Type: image/png; name="image003.png" |
3143 | - Content-Description: image003.png |
3144 | - Content-Disposition: inline; filename="image003.png"; size=2977; |
3145 | - creation-date="Fri, 04 Nov 2022 15:30:13 GMT"; |
3146 | - modification-date="Fri, 04 Nov 2022 15:30:14 GMT" |
3147 | - Content-ID: <image003.png@01D8F06A.B6972CF0> |
3148 | - Content-Transfer-Encoding: base64 |
3149 | - |
3150 | - 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 |
3202 | - qgAAAABJRU5ErkJggg== |
3203 | - |
3204 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
3205 | - Content-Type: image/png; name="image004.png" |
3206 | - Content-Description: image004.png |
3207 | - Content-Disposition: inline; filename="image004.png"; size=5296; |
3208 | - creation-date="Fri, 04 Nov 2022 15:30:14 GMT"; |
3209 | - modification-date="Fri, 04 Nov 2022 15:30:14 GMT" |
3210 | - Content-ID: <image004.png@01D8F06A.B6972CF0> |
3211 | - Content-Transfer-Encoding: base64 |
3212 | - |
3213 | - iVBORw0KGgoAAAANSUhEUgAAAIkAAABCCAYAAABjC/W+AAAAAXNSR0ICQMB9xQAAAAlwSFlzAAAO |
3214 | - xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAABQwSURBVHja |
3215 | - 7V19fBTVud6rRdfd2cUt8hHEKiHZxNnZBVwtwuxsNmTBiGirbbBexWIR6gd4lXsRRYFitSKIfAso |
3216 | - oCgUTP0s1bSgUu0PsBDlolhLdbPLkoSPQPiwXKGIc59n5oxZogQoBBKcP85vzp4558yZ8z7zvs/7 |
3217 | - nrMzjrFjxzrsZKeGkj0JdmpaINEdxd9LSKG8lEu+MulSBqZcyvCkOzAu5Q48kXIr443kku9LSvIg |
3218 | - nLsqIclKwpHttQV1moNkgxTKTkvK9UmPMi/tCa5JSUplUlK+2unprP/T00Xfi/R/nq76FyL9S6St |
3219 | - npBeISm70PZvFW5lCcBza9oZ6mgL7TQByQaH/6yUJF8NUDwLUGytkoL6dgj9cwBiN1IN8iwDCPYA |
3220 | - MJ+kPMqapBR8H2kVfq9gAjBW47i5Wgrpe9CGoIKmOQDQvITyH02BVrIF2AxBkvBlewGKQRDmmrQU |
3221 | - /JKCpUbgkaCAWUni3BIIeXTSFSoGAPISTrlttVP2IX0/4Qu3RB8ekbwo67BBkgNpl9InISljKqTA |
3222 | - uwDJvh3oD8d/IN1e7gifYwuymYAk6ZKLN0nBFVsAhm0ABrXFNskwGZ+j/HdJr3wzANHheK+TlkIK |
3223 | - gHhXpRR8C0eCcBXAcq0tzCYMkoQz+7yNkjJlk6Ts3y7MCEECjbEx5Q5OBPm8zOFw/MeJHngZzE3a |
3224 | - KV9S6VHmA4ybNkuhxQDhBbZQmxhIEi4lnpICH2wX5oTg2Agzk3Qr8wCOnJN1EwlnKAzN9ZzJa+Sr |
3225 | - bcE2EZCAVwyEmq8lQDYZxLSzjrK1AM5Vp+pmSJbhUr+BcdxlC/cUgyQlBR/a7Al+VQ1wUIMQJOAH |
3226 | - T1c7w61P9Q2RCGN80wCUEbrDcaYt5FMAEqjzUVtASEEc9c0eHpUvAJA7m9JNARxnACSDUy6lf5nD |
3227 | - YbvKJxMkCZd8/xaPAAiAAjd3V9KV37+p3hyAEktK+TFb0CcJJADIAJiVg1UGQIIEyo5EM3A9q78n |
3228 | - +2GC2tnCbmSQwHvoBlBs2yzMDNLBpEsZ0FxuksE53VFi85PGAkm1Q/al3Er5diPKCaLqCR6EBrnX |
3229 | - njwbJHV23R18jABhdJPh8ApP4FV74myQZKhpuUvKo+ysFkQVnCS9QZJle+JskBip1OE4E2bl5Roj |
3230 | - iqrodHvhLQyxJ80GSaY3UwQOcmCTCLcnpMCK2tNkxRUPwBm28I8TJBsc/hYVkvKiWJJnVPUAtMiP |
3231 | - m/vNLvNle99tlX8Fji1t4R8nSNLOUFeYmC+oRWpIViVlud7MN/ms9ubHy1sGlq70yjeW/Rv3UlCg |
3232 | - XozUR9O0K+Lx+HkFBQUdw+HwOaqqfh/53rGYFkfeWJbAeQll/uLiQ6+DsmykUGZZLKbmo88StA0Y |
3233 | - AoGWQ50CXgf9t0VfLTWte1EsFovE42Gv6KcjrlfM8cTjahuOB/Xj+K2hHx/roK0HfXfCuXYovxLn |
3234 | - YzyiLAd1spDvjbK+qhq+gNdAWSGuUYDj+UcFEng04ywuwtB7c+YiSyQ592+ewFPrvfLBcq/8b99H |
3235 | - NBopRZqPif1vCCkX+ek4yvh9czQafTcWi07WtMgSlF2sqvELIxH1BQrPak/AaJr6JOqUl5aa5g6C |
3236 | - ug7tX0TdRyGcXxJ0qDM2EonMR/8Po6/uOP9TpD+h/+kom81+cL3JSKVo/z8UOs4PRb9/QLvpSC8R |
3237 | - ROivE/pajHwQkHsQ5z9G+7lo0xP1R+Kab6B8BM5fgmMJfi8DSB5FnbeBlW4NgqTc4XMBFB+SqNKr |
3238 | - AXlNJ5zhZhexnA3TAlAM+swTrKr1dtbXeeU7jqc/TPIiTO5PIHi33+9vgUmdw6cfk/xLTrpZRx1F |
3239 | - IFBjUECZIEHdPAIL7QiuAu6xiUa111F+ZYamCaPdO2jnrSvTBqHdr8w+I3/EuXNxvUmoN5rX51jw |
3240 | - +16cH2iOQfsN0jSA5yLUf8XSZsg/xzGIcQKIPabgt4L+nPh9K9IDov2dyL/aIEgSUqgHQLK3yjA1 |
3241 | - hhaZ1dwA8p43v/cnXmUF4zu1SOt88rDj7dN84iNvUJNQXUNwM4QmGYTfY0WdIoDgJQgoAAAsyAQJ |
3242 | - zg3m5JvaRH0CWsMLwb2JOm0z6vTFudfqXfcm1PsL0p8BmMFCq01H+R+RRtDc4XgP0h2WdsI4F9LU |
3243 | - oK8XqZ0ESH6LupdaYMY4l+P4IMoupDZU1e5jRXuVYGwQJCmXPILgYPCsxtwjMqDZEFNJVtZ7A/Oh |
3244 | - /fbtxti5GLnm3IsnnYi+MXG/oyahcMXT94ylSSCUycxj4mECtPugti+CIF/K4ChO1HkBvx9BHw+a |
3245 | - Au8GzaC9ivKH0Wcr9ovzOehjDTkIeQ20xFkQ2kDUfwx1b8A1p5aUlJyJ/EyaJ2iJswWQRjJRUxAY |
3246 | - GMOd6L8j+l5SBxL1RZz/odBqxjjQ/9kCGATwJJRfRFOHNOOwICE5TUqB13YYO80MLbIdmkU5FQIf |
3247 | - 5/O5Eg6f+6jqZmc713mVoRWe4DZuodwKLVjtCerl58pT74I6PhHjoTABiMuYp6Bo5027r12FCf4T |
3248 | - js9SjdMcgEy2R/4R5oUZCaLuE3WAU0eRG+Bp74J2r9EUoOwmcY6aYxlANhmC7kxzRKCIcxPwm23u |
3249 | - Fu0eE2P4Geq/bPajPURQkoAiP94CAtr+hppPgGQg7uf31GgmJ1GjQss9jX7G4Xybw4Kk2pl9HjyZ |
3250 | - Txhd5WQnPcFV5b6wqwHGXwCSgydDe6B+wiSOIqM2n6RwO9o8PGHjUHZr/X4wqAvMdur9VJMG64cK |
3251 | - vNvfef2c1p0Wzc7yD5mR5Y+O82W3qd8W3ko/mJb3aR63mFFhQ4OsbRmY4Sg9cfEQPrWZ3gp/l5aW |
3252 | - nsEymhULEEYcBtfleWtvL/MUXOZ56wknp+D9Y46+dsuRb4X6HdiGgKRGscgv2rn4m4JEam+Ni1qL |
3253 | - 7b4WrMMcQ/3xWv2YY1bPp8biONnW0nwNejdpKdQJ2mNnpfifTMqjzD2CCp4Yj/fUCwtjeq9eRUjx |
3254 | - QxIJkQBBP9YpKuqpQ53uJgmr5xpGCgsLjH7Q5idGmwLtrkItqo/M7awvysrXZ7TN/deMdjnrZ7TL |
3255 | - fX1q25xHnmmdM+BDb+C3FR5F7K1VzMgw8h+0lOfOhnaxYxyNECdJSXIhn8S0oa4NczOqYZCoj5iC |
3256 | - 1f5Je0nbzMQ81Nbj1CACJE+yXkFBVAehY/0b6mkSuHoRnQna6RphZ+9QAZyCSGTX4x38n87PytPn |
3257 | - ID3TPk+f2d6vL2jj16u8X//JixuwjQVIAmeKw9HCFm6jgUS5tlLsWSVQkpJ865FA0rNnIbRDJH24 |
3258 | - OoLFVwAcNdAib1Ob4Pe8owEJTJnePaptGxwKX/50m9yVz7aHRmmXq0/NytUXAiSfeUztYa1Qr/fK |
3259 | - ZY21rxX3ehvjIzCHCh6AWXWBLe0Weg0Y7xDGIXB8hpwDqpxew1jTm9FGCy/kBlEHXEC9RNzncNQZ |
3260 | - KghuB3pBfsGjkL8d50aacxRnf5NwvXnmNbRfYDw/pHclTNR5kMPj6H8huQqDaWJ8Y1jX4kbI98/w |
3261 | - nO5lyvTAMK5ggyBJuJRbKus2NjP1OxqQoPNNDfCWXkKDrET+Rgj+S9xE2ooMHgkkKNvt6N/XN9eX |
3262 | - fdHMdv4PqUmmACTPAySfAiTWTv2PvMpSHURXjse6YDKuP/EgibxCF5eRTaT9mHwRV4g8hd9XC1dy |
3263 | - EoT0ewKJAofQ3sVYrmGAjTyCden9IN1M95eCRB0IPbLDJJAFHRm0I18hH2FfOLeefYfDcZcJisib |
3264 | - nHd6ImYQLPIcOQXKFiA/i5FapMW8lih/i/NNb6eAIVnxgJo8UeO5MnpXwrVeiD6vPpImGVotQMI/ |
3265 | - dae8Sp+jMTcY3F5GAxk7EMfHcRM/EHWeNLWHNp5hZgyq2hR+3WCOBBI+lSyb0To7B0BZ9zSA8rzQ |
3266 | - JDukzvrH3sCbtQ7fOdnxWD7AmMB4ft0IIFkkQtt9cE8zGQeh50FvgIIRYx6A31OEVnChzV9pelHv |
3267 | - RhJJjGsK2s1EvTF0OYVrPI7zJYJdlyI/xxQuvSZtAurBk1GH1HlZ6iwI8lpxvR8TGGboXv2AATQR |
3268 | - 6ocHFHmPDyLHI4JvdNl7MSor5NLfDP5po7ksIEDCiGyfI4FkeCZIkt5Q8ZFAQkGic71nz5hOrRKP |
3269 | - F1GwO8S6g4Sb+ojlqlrQW9zYOyS7dLeOFSQGUC7IzpmW5f/w5bYX61vASdZ7Au8t8WWf7yiJS+jz |
3270 | - vaIiajZ1eGOBBH3/iO4vxhbGvS0V5qNIjJnR0ekCJBBcZLlYl8mj4MnXoFVfYCyEaz1iDhnzuJxR |
3271 | - VWoRPlRCA0xD29UMt6N8qeUdcd4wR9fXA4kbddYyiCfMSle60fRYGBmmCUG9OSLW81CdZlRfR3kZ |
3272 | - YzqWVqTH2iBIuEZTdai5ue7oiGtkD/OME+CCj2ISfyFuIoYn5yDKamiD6SbS/xe85H2/33TRjgUk |
3273 | - TL/Kys4rbZ332Vpv4O9/lvwdWdbNXE+pER5SY4BkiWlqupdQgOL+x5OI4wEoFGMeUqfO4y0hAAgu |
3274 | - xrB9MR8YnqNgzTWZSBld2Gi0x1wcNQoaZSlGOzEHlzH2QvOA1JnRUcsMMHJKLWB5jQSvGMsTzKN+ |
3275 | - P8wDI8MjBdheJUhpytDPFrZHtz1ohoSJ68alAObR5nlcZyLG3I+BvW8HiUu56VDiqtxyPJwkA0T7 |
3276 | - xALTWqRKTiyeqH2WdjlWkDCVtfbnlUmyP0MbdYpG1crGAgnHRRNqrqF0j5ukPN4SkzrMMq2MutL0 |
3277 | - UDiMSTAqivNjqXnMlWNVs1aBSWLFCnCszkwYmuqn1Agovzbj2j0oTJHvrardApmrwVZUV2iyRxl8 |
3278 | - yyC/fbmMYOa7X8GwPcdgmUhxXa5gd6VGxJyPgVX4OnD4TXMDDmKBhMekS77nKL2byuLi4rMyzzFg |
3279 | - RLIqBL0XKN6P4wGkL5C+MsGljhKTe/mxguRbAnKNChLbBa4Lpil0KdPCY6jwyHOOEiRVmdE9QZ4o |
3280 | - +K+QviQLZziZttJUa5FXaHKoWfjUmS7kYUGy52hBgvFU2SBpZJBU++SspCeQJHmtNRf3lh4BJBMY |
3281 | - WQVIauuDhGsdJolVP/2WFdXbCRKCgEycqs7MF+gZzP2/BHc5YKnjI4AkB9eqFdcceaIniiC01Lb4 |
3282 | - fSE5RUbU2E8OYYXbaZasML5YFOwA89SOphWpBz0PJpoRLtk3G5DU+sLnVEjKO9uMRTIj4vpJrVNu |
3283 | - e3iQaH2j0eh0+v4lJYcGsXDzN8ZiUTL3b8RawLo7cKMN2k8lSeOaAUA1kYtg1g4twfgnk/Vnros0 |
3284 | - ELTj7qzRGAtdzsITT1y5oKYtEGsfZ2G8q3g9QQ7v5jYCrvSSPDLQhjzvr6+1SkueAH46XGwO+jWI |
3285 | - SJ65mKdxYW0xTS/XaZo8SAzy6lHm7RJ7W8FL9vP/tLbKNb0KAHYVF8WER/ApwDiqW7duudzvAW2X |
3286 | - JwJmXIm9gyuz1LQCJItJUs0HQx0LgOQwboL8PUjDzN1lxmajts0CJCmX/J9VknIwLdZCkpI8wgaJ |
3287 | - IegJjG5CmAMYRheR1vtpYrhMn2lKqRGh2dqJ2MrPrOgnA2+mBlInMcrJUD/K1qBsGYFVf09skwUJ |
3288 | - 3+9R4VaquV1gi8dwg1fojtLv/F8QGMRiYIw7x2heueWB0VKGx0V0M8/cSmjUGya0z2NI64Cjn4s+ |
3289 | - pgkwnG1qEm2Y2FDE9ZUmS7a/tTAlKcvIS4ygmlvZB+B0sUGiTqCZsLSJuaFdGyM4yVBu4mHYnftL |
3290 | - YTZaCa1yBcrKLYJLQs31GHISrueYnETtz3UZsb0w0GxAwjclbsvYwlghBaZ910FCz4aElYtyjJ6K |
3291 | - v1O0qTsfy6crn/kSQRJR/qUhg7C3YgSV4QCScfbF1WHRfxsr3yxA8rFTbgWAfEQPh2ZnoxSshDb5 |
3292 | - gc1N7DjJodpEUh7YId4mYATW3IGJ9oTZIKlPYM9PupUUNQk3Rac8ym77jQI2SL4JFEkZWpOpTSRl |
3293 | - sT1pNkgOBYkv3BJmZ5X5l0/zbYsAzm32xNkgqecOh3qmJWV/pXihXpWkbOF3aOzJs0FSn8SOotnZ |
3294 | - KFaHN7qV1SfiYwJ2Oo1Awpe+8HXcO82VYWOFOOUJlJX7fE3+pTYbHP6z+UkUO2rcyCCxvJ2UW3l/ |
3295 | - u/gjVI1kBNsW8bs0TfXmPnbKPi5QJprA68y/EyAxnkq4wADGZ9ulzgZQtvOt0G5laVN8mS4/6waA |
3296 | - DOU3/2xBn0SQmBoldOkmKfj32gzXGMT2f9NSqEdTuam0JKvgT5MAkEttIZ8CkBhPqdMfAkBW7hQv |
3297 | - ACZQ4P1sSbrkAafyZnSHv0XCJd+TkgIL085Q0BbwKQSJoVF84XMBjNKtHvNzJpvFm5EAmoUJp/+k |
3298 | - P8EweRqAu7xCUkpBVLNs4TYBkFheT8ol313lCX5ufT3LCLy5lb0Vbnk81H5uo5sWmD9+NTQpBasA |
3299 | - kof55khbsE0IJHXmR75sk0f5A98Psk18h0981rU67Q7OA1/pXu44/HtOjl1rZLdPupTe4EKLN3uC |
3300 | - uwGOv4B/XG4LtAmDRMQjWvAjRJVuZfVmwVNqxFc9IcQDmyTlbQj2ftSJ01Qdm8YqPYM75hKSch34 |
3301 | - xvSN7mDVNuO7O6F/wIO5PWG/i6R5gKSOq/DbwPJgCPMtuMn7d4mPRXNztblnVtkH3pDm94H5GTT+ |
3302 | - SR2E9+a0S74m5QoVoW1PAKkXym5A3fsqpOBTCbdSjno7dtSBbiXq/pxxEFuIzRAkhwDGJRdVS6Ex |
3303 | - SY/yVwBmH80QX3jHT8/vEV8bJ3joJe0WXxHfKc5bn6XnbxLipCeYBFGelXDlx23BnUYgsVKtL+wC |
3304 | - wbwEmuG2pBSYDaJZhuP6CncgCa1Sg/JdSNuQthpaRgp+hPxyaIwFKSk0HEDr0ZQjuzZIGs9lbbvB |
3305 | - GeqYcIaCaafclSvL8IZkvrcN59ro9kcCbJDYqfmk/wfQpl0MQdVYKwAAAABJRU5ErkJggg== |
3306 | - |
3307 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
3308 | - Content-Type: image/jpeg; name="image005.jpg" |
3309 | - Content-Description: image005.jpg |
3310 | - Content-Disposition: inline; filename="image005.jpg"; size=8964; |
3311 | - creation-date="Fri, 04 Nov 2022 15:30:14 GMT"; |
3312 | - modification-date="Fri, 04 Nov 2022 15:30:14 GMT" |
3313 | - Content-ID: <image005.jpg@01D8F06A.B6972CF0> |
3314 | - Content-Transfer-Encoding: base64 |
3315 | - |
3316 | - /9j/4AAQSkZJRgABAQEA3ADcAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF |
3317 | - BgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK |
3318 | - CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCABrAS8DASIA |
3319 | - AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA |
3320 | - AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 |
3321 | - ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm |
3322 | - p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA |
3323 | - AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx |
3324 | - BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK |
3325 | - U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 |
3326 | - uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9+KKK |
3327 | - KACiiigAooooAKKKM0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR |
3328 | - QAUUUUAFFFFABRRRQAUUUUAFFFGaACiis3X/ABJo3hrTJtV1zUobS2gjMk09xIFVFA6kmgqMZVJK |
3329 | - MVds0EYDrR0bLNXxP8cP+C5n7HPwn1a40Hw/qOoeKry14k/sO3DQk+glYhGI9jWd8F/+C8H7LPxS |
3330 | - 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 |
3473 | - AKKKKACiiigAooooA//Z |
3474 | - |
3475 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_ |
3476 | - Content-Type: image/png; name="image006.png" |
3477 | - Content-Description: image006.png |
3478 | - Content-Disposition: inline; filename="image006.png"; size=7034; |
3479 | - creation-date="Fri, 04 Nov 2022 15:30:14 GMT"; |
3480 | - modification-date="Fri, 04 Nov 2022 15:30:14 GMT" |
3481 | - Content-ID: <image006.png@01D8F06A.B6972CF0> |
3482 | - Content-Transfer-Encoding: base64 |
3483 | - |
3484 | - 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 |
3607 | - nvwfi0iDQOLhMeYAAAAASUVORK5CYII= |
3608 | - |
3609 | - --_009_DU0PR05MB9819EC59C67766ACFA0F67FFC23B9DU0PR05MB9819eurp_-- |
3610 | diff --git a/resources/arf/001.json b/resources/arf/001.json |
3611 | index d879e11..5345bf3 100644 |
3612 | --- a/resources/arf/001.json |
3613 | +++ b/resources/arf/001.json |
3614 | @@ -13,6 +13,17 @@ |
3615 | "user_agent": "SomeGenerator/1.0", |
3616 | "version": 1, |
3617 | "source_port": 0, |
3618 | + "auth_failure": "Unspecified", |
3619 | + "delivery_result": "Unspecified", |
3620 | + "dkim_adsp_dns": null, |
3621 | + "dkim_canonicalized_body": null, |
3622 | + "dkim_canonicalized_header": null, |
3623 | + "dkim_domain": null, |
3624 | + "dkim_identity": null, |
3625 | + "dkim_selector": null, |
3626 | + "dkim_selector_dns": null, |
3627 | + "spf_dns": null, |
3628 | + "identity_alignment": "Unspecified", |
3629 | "message": null, |
3630 | - "auth_failure": null |
3631 | + "headers": null |
3632 | } |
3633 | \ No newline at end of file |
3634 | diff --git a/resources/arf/002.json b/resources/arf/002.json |
3635 | index 1d88b41..6466697 100644 |
3636 | --- a/resources/arf/002.json |
3637 | +++ b/resources/arf/002.json |
3638 | @@ -20,6 +20,17 @@ |
3639 | "user_agent": "SomeGenerator/1.0", |
3640 | "version": 1, |
3641 | "source_port": 0, |
3642 | + "auth_failure": "Unspecified", |
3643 | + "delivery_result": "Unspecified", |
3644 | + "dkim_adsp_dns": null, |
3645 | + "dkim_canonicalized_body": null, |
3646 | + "dkim_canonicalized_header": null, |
3647 | + "dkim_domain": null, |
3648 | + "dkim_identity": null, |
3649 | + "dkim_selector": null, |
3650 | + "dkim_selector_dns": null, |
3651 | + "spf_dns": null, |
3652 | + "identity_alignment": "Unspecified", |
3653 | "message": null, |
3654 | - "auth_failure": null |
3655 | + "headers": null |
3656 | } |
3657 | \ No newline at end of file |
3658 | diff --git a/resources/arf/003.json b/resources/arf/003.json |
3659 | index 6af2706..e588da7 100644 |
3660 | --- a/resources/arf/003.json |
3661 | +++ b/resources/arf/003.json |
3662 | @@ -17,18 +17,17 @@ |
3663 | "user_agent": "SomeDKIMFilter/1.0", |
3664 | "version": 1, |
3665 | "source_port": 0, |
3666 | + "auth_failure": "BodyHash", |
3667 | + "delivery_result": "Unspecified", |
3668 | + "dkim_adsp_dns": null, |
3669 | + "dkim_canonicalized_body": null, |
3670 | + "dkim_canonicalized_header": null, |
3671 | + "dkim_domain": "example.net", |
3672 | + "dkim_identity": null, |
3673 | + "dkim_selector": null, |
3674 | + "dkim_selector_dns": null, |
3675 | + "spf_dns": null, |
3676 | + "identity_alignment": "Unspecified", |
3677 | "message": null, |
3678 | - "auth_failure": { |
3679 | - "auth_failure": "BodyHash", |
3680 | - "delivery_result": "Other", |
3681 | - "dkim_adsp_dns": null, |
3682 | - "dkim_canonicalized_body": null, |
3683 | - "dkim_canonicalized_header": null, |
3684 | - "dkim_domain": "example.net", |
3685 | - "dkim_identity": null, |
3686 | - "dkim_selector": null, |
3687 | - "dkim_selector_dns": null, |
3688 | - "spf_dns": null, |
3689 | - "identity_alignment": "None" |
3690 | - } |
3691 | + "headers": null |
3692 | } |
3693 | \ No newline at end of file |
3694 | diff --git a/resources/arf/004.json b/resources/arf/004.json |
3695 | index ecf12bc..dc4fc0f 100644 |
3696 | --- a/resources/arf/004.json |
3697 | +++ b/resources/arf/004.json |
3698 | @@ -17,18 +17,1473 @@ |
3699 | "user_agent": "OpenDMARC-Filter/1.3.2", |
3700 | "version": 1, |
3701 | "source_port": 0, |
3702 | + "auth_failure": "Dmarc", |
3703 | + "delivery_result": "Unspecified", |
3704 | + "dkim_adsp_dns": null, |
3705 | + "dkim_canonicalized_body": null, |
3706 | + "dkim_canonicalized_header": null, |
3707 | + "dkim_domain": null, |
3708 | + "dkim_identity": null, |
3709 | + "dkim_selector": null, |
3710 | + "dkim_selector_dns": null, |
3711 | + "spf_dns": null, |
3712 | + "identity_alignment": "Unspecified", |
3713 | "message": null, |
3714 | - "auth_failure": { |
3715 | - "auth_failure": "Dmarc", |
3716 | - "delivery_result": "Other", |
3717 | - "dkim_adsp_dns": null, |
3718 | - "dkim_canonicalized_body": null, |
3719 | - "dkim_canonicalized_header": null, |
3720 | - "dkim_domain": null, |
3721 | - "dkim_identity": null, |
3722 | - "dkim_selector": null, |
3723 | - "dkim_selector_dns": null, |
3724 | - "spf_dns": null, |
3725 | - "identity_alignment": "None" |
3726 | - } |
3727 | + "headers": [ |
3728 | + 65, |
3729 | + 117, |
3730 | + 116, |
3731 | + 104, |
3732 | + 101, |
3733 | + 110, |
3734 | + 116, |
3735 | + 105, |
3736 | + 99, |
3737 | + 97, |
3738 | + 116, |
3739 | + 105, |
3740 | + 111, |
3741 | + 110, |
3742 | + 45, |
3743 | + 82, |
3744 | + 101, |
3745 | + 115, |
3746 | + 117, |
3747 | + 108, |
3748 | + 116, |
3749 | + 115, |
3750 | + 58, |
3751 | + 32, |
3752 | + 98, |
3753 | + 111, |
3754 | + 120, |
3755 | + 46, |
3756 | + 109, |
3757 | + 121, |
3758 | + 100, |
3759 | + 111, |
3760 | + 109, |
3761 | + 97, |
3762 | + 105, |
3763 | + 110, |
3764 | + 46, |
3765 | + 110, |
3766 | + 97, |
3767 | + 109, |
3768 | + 101, |
3769 | + 59, |
3770 | + 10, |
3771 | + 9, |
3772 | + 100, |
3773 | + 107, |
3774 | + 105, |
3775 | + 109, |
3776 | + 61, |
3777 | + 102, |
3778 | + 97, |
3779 | + 105, |
3780 | + 108, |
3781 | + 32, |
3782 | + 114, |
3783 | + 101, |
3784 | + 97, |
3785 | + 115, |
3786 | + 111, |
3787 | + 110, |
3788 | + 61, |
3789 | + 34, |
3790 | + 115, |
3791 | + 105, |
3792 | + 103, |
3793 | + 110, |
3794 | + 97, |
3795 | + 116, |
3796 | + 117, |
3797 | + 114, |
3798 | + 101, |
3799 | + 32, |
3800 | + 118, |
3801 | + 101, |
3802 | + 114, |
3803 | + 105, |
3804 | + 102, |
3805 | + 105, |
3806 | + 99, |
3807 | + 97, |
3808 | + 116, |
3809 | + 105, |
3810 | + 111, |
3811 | + 110, |
3812 | + 32, |
3813 | + 102, |
3814 | + 97, |
3815 | + 105, |
3816 | + 108, |
3817 | + 101, |
3818 | + 100, |
3819 | + 34, |
3820 | + 32, |
3821 | + 40, |
3822 | + 50, |
3823 | + 48, |
3824 | + 52, |
3825 | + 56, |
3826 | + 45, |
3827 | + 98, |
3828 | + 105, |
3829 | + 116, |
3830 | + 32, |
3831 | + 107, |
3832 | + 101, |
3833 | + 121, |
3834 | + 59, |
3835 | + 32, |
3836 | + 117, |
3837 | + 110, |
3838 | + 112, |
3839 | + 114, |
3840 | + 111, |
3841 | + 116, |
3842 | + 101, |
3843 | + 99, |
3844 | + 116, |
3845 | + 101, |
3846 | + 100, |
3847 | + 41, |
3848 | + 32, |
3849 | + 104, |
3850 | + 101, |
3851 | + 97, |
3852 | + 100, |
3853 | + 101, |
3854 | + 114, |
3855 | + 46, |
3856 | + 100, |
3857 | + 61, |
3858 | + 105, |
3859 | + 110, |
3860 | + 116, |
3861 | + 101, |
3862 | + 114, |
3863 | + 112, |
3864 | + 117, |
3865 | + 98, |
3866 | + 108, |
3867 | + 105, |
3868 | + 99, |
3869 | + 97, |
3870 | + 116, |
3871 | + 105, |
3872 | + 111, |
3873 | + 110, |
3874 | + 46, |
3875 | + 111, |
3876 | + 114, |
3877 | + 103, |
3878 | + 32, |
3879 | + 104, |
3880 | + 101, |
3881 | + 97, |
3882 | + 100, |
3883 | + 101, |
3884 | + 114, |
3885 | + 46, |
3886 | + 105, |
3887 | + 61, |
3888 | + 64, |
3889 | + 105, |
3890 | + 110, |
3891 | + 116, |
3892 | + 101, |
3893 | + 114, |
3894 | + 112, |
3895 | + 117, |
3896 | + 98, |
3897 | + 108, |
3898 | + 105, |
3899 | + 99, |
3900 | + 97, |
3901 | + 116, |
3902 | + 105, |
3903 | + 111, |
3904 | + 110, |
3905 | + 46, |
3906 | + 111, |
3907 | + 114, |
3908 | + 103, |
3909 | + 32, |
3910 | + 104, |
3911 | + 101, |
3912 | + 97, |
3913 | + 100, |
3914 | + 101, |
3915 | + 114, |
3916 | + 46, |
3917 | + 98, |
3918 | + 61, |
3919 | + 34, |
3920 | + 80, |
3921 | + 114, |
3922 | + 115, |
3923 | + 84, |
3924 | + 78, |
3925 | + 110, |
3926 | + 117, |
3927 | + 72, |
3928 | + 34, |
3929 | + 59, |
3930 | + 10, |
3931 | + 9, |
3932 | + 100, |
3933 | + 107, |
3934 | + 105, |
3935 | + 109, |
3936 | + 45, |
3937 | + 97, |
3938 | + 116, |
3939 | + 112, |
3940 | + 115, |
3941 | + 61, |
3942 | + 110, |
3943 | + 101, |
3944 | + 117, |
3945 | + 116, |
3946 | + 114, |
3947 | + 97, |
3948 | + 108, |
3949 | + 10, |
3950 | + 82, |
3951 | + 101, |
3952 | + 99, |
3953 | + 101, |
3954 | + 105, |
3955 | + 118, |
3956 | + 101, |
3957 | + 100, |
3958 | + 58, |
3959 | + 32, |
3960 | + 102, |
3961 | + 114, |
3962 | + 111, |
3963 | + 109, |
3964 | + 32, |
3965 | + 100, |
3966 | + 115, |
3967 | + 108, |
3968 | + 98, |
3969 | + 45, |
3970 | + 48, |
3971 | + 48, |
3972 | + 50, |
3973 | + 45, |
3974 | + 50, |
3975 | + 48, |
3976 | + 50, |
3977 | + 45, |
3978 | + 49, |
3979 | + 53, |
3980 | + 48, |
3981 | + 45, |
3982 | + 49, |
3983 | + 50, |
3984 | + 55, |
3985 | + 46, |
3986 | + 48, |
3987 | + 48, |
3988 | + 50, |
3989 | + 46, |
3990 | + 50, |
3991 | + 48, |
3992 | + 50, |
3993 | + 46, |
3994 | + 112, |
3995 | + 111, |
3996 | + 111, |
3997 | + 108, |
3998 | + 115, |
3999 | + 46, |
4000 | + 118, |
4001 | + 111, |
4002 | + 100, |
4003 | + 97, |
4004 | + 102, |
4005 | + 111, |
4006 | + 110, |
4007 | + 101, |
4008 | + 45, |
4009 | + 105, |
4010 | + 112, |
4011 | + 46, |
4012 | + 100, |
4013 | + 101, |
4014 | + 32, |
4015 | + 40, |
4016 | + 100, |
4017 | + 115, |
4018 | + 108, |
4019 | + 98, |
4020 | + 45, |
4021 | + 49, |
4022 | + 56, |
4023 | + 56, |
4024 | + 45, |
4025 | + 48, |
4026 | + 57, |
4027 | + 57, |
4028 | + 45, |
4029 | + 48, |
4030 | + 56, |
4031 | + 48, |
4032 | + 45, |
4033 | + 48, |
4034 | + 50, |
4035 | + 57, |
4036 | + 46, |
4037 | + 49, |
4038 | + 56, |
4039 | + 56, |
4040 | + 46, |
4041 | + 48, |
4042 | + 57, |
4043 | + 57, |
4044 | + 46, |
4045 | + 112, |
4046 | + 111, |
4047 | + 111, |
4048 | + 108, |
4049 | + 115, |
4050 | + 46, |
4051 | + 118, |
4052 | + 111, |
4053 | + 100, |
4054 | + 97, |
4055 | + 102, |
4056 | + 111, |
4057 | + 110, |
4058 | + 101, |
4059 | + 45, |
4060 | + 105, |
4061 | + 112, |
4062 | + 46, |
4063 | + 100, |
4064 | + 101, |
4065 | + 32, |
4066 | + 91, |
4067 | + 49, |
4068 | + 56, |
4069 | + 56, |
4070 | + 46, |
4071 | + 57, |
4072 | + 57, |
4073 | + 46, |
4074 | + 56, |
4075 | + 48, |
4076 | + 46, |
4077 | + 50, |
4078 | + 57, |
4079 | + 93, |
4080 | + 41, |
4081 | + 10, |
4082 | + 9, |
4083 | + 98, |
4084 | + 121, |
4085 | + 32, |
4086 | + 115, |
4087 | + 97, |
4088 | + 105, |
4089 | + 110, |
4090 | + 97, |
4091 | + 121, |
4092 | + 46, |
4093 | + 105, |
4094 | + 110, |
4095 | + 116, |
4096 | + 101, |
4097 | + 114, |
4098 | + 112, |
4099 | + 117, |
4100 | + 98, |
4101 | + 108, |
4102 | + 105, |
4103 | + 99, |
4104 | + 97, |
4105 | + 116, |
4106 | + 105, |
4107 | + 111, |
4108 | + 110, |
4109 | + 46, |
4110 | + 111, |
4111 | + 114, |
4112 | + 103, |
4113 | + 32, |
4114 | + 40, |
4115 | + 80, |
4116 | + 111, |
4117 | + 115, |
4118 | + 116, |
4119 | + 102, |
4120 | + 105, |
4121 | + 120, |
4122 | + 41, |
4123 | + 32, |
4124 | + 119, |
4125 | + 105, |
4126 | + 116, |
4127 | + 104, |
4128 | + 32, |
4129 | + 69, |
4130 | + 83, |
4131 | + 77, |
4132 | + 84, |
4133 | + 80, |
4134 | + 65, |
4135 | + 32, |
4136 | + 105, |
4137 | + 100, |
4138 | + 32, |
4139 | + 54, |
4140 | + 66, |
4141 | + 66, |
4142 | + 50, |
4143 | + 51, |
4144 | + 65, |
4145 | + 50, |
4146 | + 68, |
4147 | + 51, |
4148 | + 10, |
4149 | + 9, |
4150 | + 102, |
4151 | + 111, |
4152 | + 114, |
4153 | + 32, |
4154 | + 60, |
4155 | + 97, |
4156 | + 100, |
4157 | + 100, |
4158 | + 114, |
4159 | + 101, |
4160 | + 115, |
4161 | + 115, |
4162 | + 64, |
4163 | + 109, |
4164 | + 121, |
4165 | + 111, |
4166 | + 116, |
4167 | + 104, |
4168 | + 101, |
4169 | + 114, |
4170 | + 100, |
4171 | + 111, |
4172 | + 109, |
4173 | + 97, |
4174 | + 105, |
4175 | + 110, |
4176 | + 46, |
4177 | + 110, |
4178 | + 97, |
4179 | + 109, |
4180 | + 101, |
4181 | + 62, |
4182 | + 59, |
4183 | + 32, |
4184 | + 84, |
4185 | + 117, |
4186 | + 101, |
4187 | + 44, |
4188 | + 32, |
4189 | + 32, |
4190 | + 53, |
4191 | + 32, |
4192 | + 79, |
4193 | + 99, |
4194 | + 116, |
4195 | + 32, |
4196 | + 50, |
4197 | + 48, |
4198 | + 50, |
4199 | + 49, |
4200 | + 32, |
4201 | + 48, |
4202 | + 48, |
4203 | + 58, |
4204 | + 51, |
4205 | + 54, |
4206 | + 58, |
4207 | + 53, |
4208 | + 50, |
4209 | + 32, |
4210 | + 45, |
4211 | + 48, |
4212 | + 52, |
4213 | + 48, |
4214 | + 48, |
4215 | + 32, |
4216 | + 40, |
4217 | + 69, |
4218 | + 68, |
4219 | + 84, |
4220 | + 41, |
4221 | + 10, |
4222 | + 68, |
4223 | + 75, |
4224 | + 73, |
4225 | + 77, |
4226 | + 45, |
4227 | + 70, |
4228 | + 105, |
4229 | + 108, |
4230 | + 116, |
4231 | + 101, |
4232 | + 114, |
4233 | + 58, |
4234 | + 32, |
4235 | + 79, |
4236 | + 112, |
4237 | + 101, |
4238 | + 110, |
4239 | + 68, |
4240 | + 75, |
4241 | + 73, |
4242 | + 77, |
4243 | + 32, |
4244 | + 70, |
4245 | + 105, |
4246 | + 108, |
4247 | + 116, |
4248 | + 101, |
4249 | + 114, |
4250 | + 32, |
4251 | + 118, |
4252 | + 50, |
4253 | + 46, |
4254 | + 49, |
4255 | + 49, |
4256 | + 46, |
4257 | + 48, |
4258 | + 32, |
4259 | + 115, |
4260 | + 97, |
4261 | + 105, |
4262 | + 110, |
4263 | + 97, |
4264 | + 121, |
4265 | + 46, |
4266 | + 105, |
4267 | + 110, |
4268 | + 116, |
4269 | + 101, |
4270 | + 114, |
4271 | + 112, |
4272 | + 117, |
4273 | + 98, |
4274 | + 108, |
4275 | + 105, |
4276 | + 99, |
4277 | + 97, |
4278 | + 116, |
4279 | + 105, |
4280 | + 111, |
4281 | + 110, |
4282 | + 46, |
4283 | + 111, |
4284 | + 114, |
4285 | + 103, |
4286 | + 32, |
4287 | + 54, |
4288 | + 66, |
4289 | + 66, |
4290 | + 50, |
4291 | + 51, |
4292 | + 65, |
4293 | + 50, |
4294 | + 68, |
4295 | + 51, |
4296 | + 10, |
4297 | + 68, |
4298 | + 75, |
4299 | + 73, |
4300 | + 77, |
4301 | + 45, |
4302 | + 83, |
4303 | + 105, |
4304 | + 103, |
4305 | + 110, |
4306 | + 97, |
4307 | + 116, |
4308 | + 117, |
4309 | + 114, |
4310 | + 101, |
4311 | + 58, |
4312 | + 32, |
4313 | + 118, |
4314 | + 61, |
4315 | + 49, |
4316 | + 59, |
4317 | + 32, |
4318 | + 97, |
4319 | + 61, |
4320 | + 114, |
4321 | + 115, |
4322 | + 97, |
4323 | + 45, |
4324 | + 115, |
4325 | + 104, |
4326 | + 97, |
4327 | + 50, |
4328 | + 53, |
4329 | + 54, |
4330 | + 59, |
4331 | + 32, |
4332 | + 99, |
4333 | + 61, |
4334 | + 114, |
4335 | + 101, |
4336 | + 108, |
4337 | + 97, |
4338 | + 120, |
4339 | + 101, |
4340 | + 100, |
4341 | + 47, |
4342 | + 114, |
4343 | + 101, |
4344 | + 108, |
4345 | + 97, |
4346 | + 120, |
4347 | + 101, |
4348 | + 100, |
4349 | + 59, |
4350 | + 10, |
4351 | + 9, |
4352 | + 100, |
4353 | + 61, |
4354 | + 105, |
4355 | + 110, |
4356 | + 116, |
4357 | + 101, |
4358 | + 114, |
4359 | + 112, |
4360 | + 117, |
4361 | + 98, |
4362 | + 108, |
4363 | + 105, |
4364 | + 99, |
4365 | + 97, |
4366 | + 116, |
4367 | + 105, |
4368 | + 111, |
4369 | + 110, |
4370 | + 46, |
4371 | + 111, |
4372 | + 114, |
4373 | + 103, |
4374 | + 59, |
4375 | + 32, |
4376 | + 115, |
4377 | + 61, |
4378 | + 100, |
4379 | + 101, |
4380 | + 102, |
4381 | + 97, |
4382 | + 117, |
4383 | + 108, |
4384 | + 116, |
4385 | + 59, |
4386 | + 32, |
4387 | + 116, |
4388 | + 61, |
4389 | + 49, |
4390 | + 54, |
4391 | + 51, |
4392 | + 51, |
4393 | + 52, |
4394 | + 48, |
4395 | + 56, |
4396 | + 54, |
4397 | + 49, |
4398 | + 50, |
4399 | + 59, |
4400 | + 10, |
4401 | + 9, |
4402 | + 98, |
4403 | + 104, |
4404 | + 61, |
4405 | + 113, |
4406 | + 49, |
4407 | + 47, |
4408 | + 79, |
4409 | + 80, |
4410 | + 83, |
4411 | + 110, |
4412 | + 43, |
4413 | + 86, |
4414 | + 88, |
4415 | + 116, |
4416 | + 101, |
4417 | + 89, |
4418 | + 50, |
4419 | + 43, |
4420 | + 68, |
4421 | + 72, |
4422 | + 88, |
4423 | + 113, |
4424 | + 79, |
4425 | + 73, |
4426 | + 103, |
4427 | + 115, |
4428 | + 53, |
4429 | + 76, |
4430 | + 115, |
4431 | + 78, |
4432 | + 67, |
4433 | + 74, |
4434 | + 105, |
4435 | + 115, |
4436 | + 69, |
4437 | + 99, |
4438 | + 81, |
4439 | + 73, |
4440 | + 75, |
4441 | + 86, |
4442 | + 87, |
4443 | + 57, |
4444 | + 105, |
4445 | + 116, |
4446 | + 54, |
4447 | + 73, |
4448 | + 61, |
4449 | + 59, |
4450 | + 10, |
4451 | + 9, |
4452 | + 104, |
4453 | + 61, |
4454 | + 70, |
4455 | + 114, |
4456 | + 111, |
4457 | + 109, |
4458 | + 58, |
4459 | + 83, |
4460 | + 117, |
4461 | + 98, |
4462 | + 106, |
4463 | + 101, |
4464 | + 99, |
4465 | + 116, |
4466 | + 58, |
4467 | + 84, |
4468 | + 111, |
4469 | + 58, |
4470 | + 82, |
4471 | + 101, |
4472 | + 112, |
4473 | + 108, |
4474 | + 121, |
4475 | + 45, |
4476 | + 84, |
4477 | + 111, |
4478 | + 58, |
4479 | + 68, |
4480 | + 97, |
4481 | + 116, |
4482 | + 101, |
4483 | + 58, |
4484 | + 70, |
4485 | + 114, |
4486 | + 111, |
4487 | + 109, |
4488 | + 59, |
4489 | + 10, |
4490 | + 9, |
4491 | + 98, |
4492 | + 61, |
4493 | + 80, |
4494 | + 114, |
4495 | + 115, |
4496 | + 84, |
4497 | + 78, |
4498 | + 110, |
4499 | + 117, |
4500 | + 72, |
4501 | + 56, |
4502 | + 68, |
4503 | + 48, |
4504 | + 67, |
4505 | + 104, |
4506 | + 51, |
4507 | + 103, |
4508 | + 99, |
4509 | + 87, |
4510 | + 113, |
4511 | + 71, |
4512 | + 109, |
4513 | + 88, |
4514 | + 105, |
4515 | + 89, |
4516 | + 99, |
4517 | + 50, |
4518 | + 75, |
4519 | + 118, |
4520 | + 117, |
4521 | + 49, |
4522 | + 67, |
4523 | + 72, |
4524 | + 71, |
4525 | + 74, |
4526 | + 66, |
4527 | + 115, |
4528 | + 113, |
4529 | + 83, |
4530 | + 53, |
4531 | + 50, |
4532 | + 49, |
4533 | + 117, |
4534 | + 89, |
4535 | + 97, |
4536 | + 122, |
4537 | + 100, |
4538 | + 51, |
4539 | + 71, |
4540 | + 47, |
4541 | + 117, |
4542 | + 114, |
4543 | + 112, |
4544 | + 55, |
4545 | + 77, |
4546 | + 72, |
4547 | + 81, |
4548 | + 118, |
4549 | + 109, |
4550 | + 78, |
4551 | + 119, |
4552 | + 75, |
4553 | + 48, |
4554 | + 114, |
4555 | + 49, |
4556 | + 103, |
4557 | + 83, |
4558 | + 10, |
4559 | + 9, |
4560 | + 32, |
4561 | + 68, |
4562 | + 82, |
4563 | + 51, |
4564 | + 65, |
4565 | + 51, |
4566 | + 75, |
4567 | + 119, |
4568 | + 71, |
4569 | + 101, |
4570 | + 106, |
4571 | + 73, |
4572 | + 53, |
4573 | + 117, |
4574 | + 117, |
4575 | + 113, |
4576 | + 122, |
4577 | + 120, |
4578 | + 68, |
4579 | + 67, |
4580 | + 113, |
4581 | + 122, |
4582 | + 50, |
4583 | + 56, |
4584 | + 77, |
4585 | + 113, |
4586 | + 54, |
4587 | + 65, |
4588 | + 107, |
4589 | + 100, |
4590 | + 84, |
4591 | + 107, |
4592 | + 79, |
4593 | + 106, |
4594 | + 70, |
4595 | + 121, |
4596 | + 88, |
4597 | + 119, |
4598 | + 54, |
4599 | + 53, |
4600 | + 77, |
4601 | + 76, |
4602 | + 108, |
4603 | + 115, |
4604 | + 75, |
4605 | + 84, |
4606 | + 81, |
4607 | + 100, |
4608 | + 100, |
4609 | + 87, |
4610 | + 84, |
4611 | + 103, |
4612 | + 99, |
4613 | + 105, |
4614 | + 86, |
4615 | + 110, |
4616 | + 111, |
4617 | + 113, |
4618 | + 74, |
4619 | + 101, |
4620 | + 109, |
4621 | + 112, |
4622 | + 97, |
4623 | + 54, |
4624 | + 121, |
4625 | + 122, |
4626 | + 119, |
4627 | + 10, |
4628 | + 9, |
4629 | + 32, |
4630 | + 80, |
4631 | + 83, |
4632 | + 77, |
4633 | + 53, |
4634 | + 53, |
4635 | + 53, |
4636 | + 48, |
4637 | + 88, |
4638 | + 113, |
4639 | + 86, |
4640 | + 70, |
4641 | + 113, |
4642 | + 113, |
4643 | + 107, |
4644 | + 78, |
4645 | + 120, |
4646 | + 69, |
4647 | + 99, |
4648 | + 89, |
4649 | + 66, |
4650 | + 85, |
4651 | + 66, |
4652 | + 89, |
4653 | + 69, |
4654 | + 119, |
4655 | + 85, |
4656 | + 100, |
4657 | + 121, |
4658 | + 49, |
4659 | + 116, |
4660 | + 89, |
4661 | + 56, |
4662 | + 114, |
4663 | + 99, |
4664 | + 52, |
4665 | + 122, |
4666 | + 104, |
4667 | + 113, |
4668 | + 56, |
4669 | + 99, |
4670 | + 73, |
4671 | + 114, |
4672 | + 115, |
4673 | + 111, |
4674 | + 110, |
4675 | + 81, |
4676 | + 86, |
4677 | + 120, |
4678 | + 74, |
4679 | + 74, |
4680 | + 83, |
4681 | + 98, |
4682 | + 99, |
4683 | + 51, |
4684 | + 99, |
4685 | + 100, |
4686 | + 111, |
4687 | + 110, |
4688 | + 73, |
4689 | + 67, |
4690 | + 77, |
4691 | + 49, |
4692 | + 107, |
4693 | + 76, |
4694 | + 66, |
4695 | + 86, |
4696 | + 10, |
4697 | + 9, |
4698 | + 32, |
4699 | + 87, |
4700 | + 65, |
4701 | + 83, |
4702 | + 118, |
4703 | + 49, |
4704 | + 54, |
4705 | + 112, |
4706 | + 51, |
4707 | + 51, |
4708 | + 55, |
4709 | + 54, |
4710 | + 90, |
4711 | + 66, |
4712 | + 99, |
4713 | + 75, |
4714 | + 113, |
4715 | + 70, |
4716 | + 76, |
4717 | + 99, |
4718 | + 56, |
4719 | + 85, |
4720 | + 81, |
4721 | + 53, |
4722 | + 56, |
4723 | + 89, |
4724 | + 81, |
4725 | + 75, |
4726 | + 97, |
4727 | + 70, |
4728 | + 109, |
4729 | + 53, |
4730 | + 49, |
4731 | + 86, |
4732 | + 90, |
4733 | + 71, |
4734 | + 69, |
4735 | + 106, |
4736 | + 116, |
4737 | + 97, |
4738 | + 98, |
4739 | + 102, |
4740 | + 109, |
4741 | + 87, |
4742 | + 98, |
4743 | + 103, |
4744 | + 79, |
4745 | + 81, |
4746 | + 55, |
4747 | + 86, |
4748 | + 105, |
4749 | + 107, |
4750 | + 70, |
4751 | + 70, |
4752 | + 69, |
4753 | + 67, |
4754 | + 68, |
4755 | + 71, |
4756 | + 51, |
4757 | + 97, |
4758 | + 82, |
4759 | + 116, |
4760 | + 56, |
4761 | + 102, |
4762 | + 90, |
4763 | + 97, |
4764 | + 54, |
4765 | + 10, |
4766 | + 9, |
4767 | + 32, |
4768 | + 68, |
4769 | + 48, |
4770 | + 51, |
4771 | + 77, |
4772 | + 114, |
4773 | + 122, |
4774 | + 85, |
4775 | + 83, |
4776 | + 110, |
4777 | + 103, |
4778 | + 119, |
4779 | + 80, |
4780 | + 85, |
4781 | + 100, |
4782 | + 99, |
4783 | + 82, |
4784 | + 81, |
4785 | + 90, |
4786 | + 117, |
4787 | + 113, |
4788 | + 83, |
4789 | + 47, |
4790 | + 115, |
4791 | + 65, |
4792 | + 112, |
4793 | + 87, |
4794 | + 47, |
4795 | + 97, |
4796 | + 57, |
4797 | + 78, |
4798 | + 50, |
4799 | + 89, |
4800 | + 119, |
4801 | + 100, |
4802 | + 98, |
4803 | + 82, |
4804 | + 53, |
4805 | + 49, |
4806 | + 79, |
4807 | + 70, |
4808 | + 122, |
4809 | + 80, |
4810 | + 66, |
4811 | + 114, |
4812 | + 52, |
4813 | + 121, |
4814 | + 112, |
4815 | + 85, |
4816 | + 69, |
4817 | + 73, |
4818 | + 119, |
4819 | + 47, |
4820 | + 113, |
4821 | + 112, |
4822 | + 114, |
4823 | + 103, |
4824 | + 66, |
4825 | + 71, |
4826 | + 52, |
4827 | + 66, |
4828 | + 102, |
4829 | + 81, |
4830 | + 81, |
4831 | + 75, |
4832 | + 101, |
4833 | + 83, |
4834 | + 10, |
4835 | + 9, |
4836 | + 32, |
4837 | + 49, |
4838 | + 80, |
4839 | + 104, |
4840 | + 105, |
4841 | + 110, |
4842 | + 78, |
4843 | + 118, |
4844 | + 86, |
4845 | + 116, |
4846 | + 103, |
4847 | + 81, |
4848 | + 112, |
4849 | + 81, |
4850 | + 61, |
4851 | + 61, |
4852 | + 10, |
4853 | + 70, |
4854 | + 114, |
4855 | + 111, |
4856 | + 109, |
4857 | + 58, |
4858 | + 32, |
4859 | + 34, |
4860 | + 82, |
4861 | + 111, |
4862 | + 108, |
4863 | + 102, |
4864 | + 32, |
4865 | + 66, |
4866 | + 97, |
4867 | + 100, |
4868 | + 101, |
4869 | + 114, |
4870 | + 34, |
4871 | + 32, |
4872 | + 60, |
4873 | + 105, |
4874 | + 110, |
4875 | + 102, |
4876 | + 111, |
4877 | + 64, |
4878 | + 105, |
4879 | + 110, |
4880 | + 116, |
4881 | + 101, |
4882 | + 114, |
4883 | + 112, |
4884 | + 117, |
4885 | + 98, |
4886 | + 108, |
4887 | + 105, |
4888 | + 99, |
4889 | + 97, |
4890 | + 116, |
4891 | + 105, |
4892 | + 111, |
4893 | + 110, |
4894 | + 46, |
4895 | + 111, |
4896 | + 114, |
4897 | + 103, |
4898 | + 62, |
4899 | + 10, |
4900 | + 83, |
4901 | + 117, |
4902 | + 98, |
4903 | + 106, |
4904 | + 101, |
4905 | + 99, |
4906 | + 116, |
4907 | + 58, |
4908 | + 32, |
4909 | + 87, |
4910 | + 105, |
4911 | + 114, |
4912 | + 32, |
4913 | + 107, |
4914 | + 97, |
4915 | + 117, |
4916 | + 102, |
4917 | + 101, |
4918 | + 110, |
4919 | + 32, |
4920 | + 100, |
4921 | + 101, |
4922 | + 105, |
4923 | + 110, |
4924 | + 32, |
4925 | + 65, |
4926 | + 117, |
4927 | + 116, |
4928 | + 111, |
4929 | + 33, |
4930 | + 10, |
4931 | + 84, |
4932 | + 111, |
4933 | + 58, |
4934 | + 32, |
4935 | + 34, |
4936 | + 97, |
4937 | + 100, |
4938 | + 100, |
4939 | + 114, |
4940 | + 101, |
4941 | + 115, |
4942 | + 115, |
4943 | + 34, |
4944 | + 32, |
4945 | + 60, |
4946 | + 97, |
4947 | + 100, |
4948 | + 100, |
4949 | + 114, |
4950 | + 101, |
4951 | + 115, |
4952 | + 115, |
4953 | + 64, |
4954 | + 109, |
4955 | + 121, |
4956 | + 111, |
4957 | + 116, |
4958 | + 104, |
4959 | + 101, |
4960 | + 114, |
4961 | + 100, |
4962 | + 111, |
4963 | + 109, |
4964 | + 97, |
4965 | + 105, |
4966 | + 110, |
4967 | + 46, |
4968 | + 110, |
4969 | + 97, |
4970 | + 109, |
4971 | + 101, |
4972 | + 62, |
4973 | + 10, |
4974 | + 67, |
4975 | + 111, |
4976 | + 110, |
4977 | + 116, |
4978 | + 101, |
4979 | + 110, |
4980 | + 116, |
4981 | + 45, |
4982 | + 84, |
4983 | + 121, |
4984 | + 112, |
4985 | + 101, |
4986 | + 58, |
4987 | + 32, |
4988 | + 109, |
4989 | + 117, |
4990 | + 108, |
4991 | + 116, |
4992 | + 105, |
4993 | + 112, |
4994 | + 97, |
4995 | + 114, |
4996 | + 116, |
4997 | + 47, |
4998 | + 97, |
4999 | + 108, |
5000 | + 116, |
5001 | + 101, |
5002 | + 114, |
5003 | + 110, |
5004 | + 97, |
5005 | + 116, |
5006 | + 105, |
5007 | + 118, |
5008 | + 101, |
5009 | + 59, |
5010 | + 32, |
5011 | + 98, |
5012 | + 111, |
5013 | + 117, |
5014 | + 110, |
5015 | + 100, |
5016 | + 97, |
5017 | + 114, |
5018 | + 121, |
5019 | + 61, |
5020 | + 34, |
5021 | + 84, |
5022 | + 68, |
5023 | + 54, |
5024 | + 103, |
5025 | + 77, |
5026 | + 51, |
5027 | + 66, |
5028 | + 108, |
5029 | + 118, |
5030 | + 61, |
5031 | + 95, |
5032 | + 88, |
5033 | + 66, |
5034 | + 90, |
5035 | + 89, |
5036 | + 78, |
5037 | + 70, |
5038 | + 84, |
5039 | + 55, |
5040 | + 100, |
5041 | + 67, |
5042 | + 115, |
5043 | + 72, |
5044 | + 49, |
5045 | + 68, |
5046 | + 72, |
5047 | + 72, |
5048 | + 79, |
5049 | + 75, |
5050 | + 85, |
5051 | + 117, |
5052 | + 83, |
5053 | + 121, |
5054 | + 65, |
5055 | + 34, |
5056 | + 10, |
5057 | + 77, |
5058 | + 73, |
5059 | + 77, |
5060 | + 69, |
5061 | + 45, |
5062 | + 86, |
5063 | + 101, |
5064 | + 114, |
5065 | + 115, |
5066 | + 105, |
5067 | + 111, |
5068 | + 110, |
5069 | + 58, |
5070 | + 32, |
5071 | + 49, |
5072 | + 46, |
5073 | + 48, |
5074 | + 10, |
5075 | + 82, |
5076 | + 101, |
5077 | + 112, |
5078 | + 108, |
5079 | + 121, |
5080 | + 45, |
5081 | + 84, |
5082 | + 111, |
5083 | + 58, |
5084 | + 32, |
5085 | + 34, |
5086 | + 82, |
5087 | + 111, |
5088 | + 108, |
5089 | + 102, |
5090 | + 32, |
5091 | + 66, |
5092 | + 97, |
5093 | + 100, |
5094 | + 101, |
5095 | + 114, |
5096 | + 34, |
5097 | + 32, |
5098 | + 60, |
5099 | + 97, |
5100 | + 117, |
5101 | + 116, |
5102 | + 111, |
5103 | + 50, |
5104 | + 52, |
5105 | + 45, |
5106 | + 101, |
5107 | + 120, |
5108 | + 112, |
5109 | + 111, |
5110 | + 114, |
5111 | + 116, |
5112 | + 64, |
5113 | + 103, |
5114 | + 109, |
5115 | + 120, |
5116 | + 46, |
5117 | + 100, |
5118 | + 101, |
5119 | + 62, |
5120 | + 10, |
5121 | + 79, |
5122 | + 114, |
5123 | + 103, |
5124 | + 97, |
5125 | + 110, |
5126 | + 105, |
5127 | + 122, |
5128 | + 97, |
5129 | + 116, |
5130 | + 105, |
5131 | + 111, |
5132 | + 110, |
5133 | + 58, |
5134 | + 32, |
5135 | + 65, |
5136 | + 117, |
5137 | + 116, |
5138 | + 111, |
5139 | + 84, |
5140 | + 69, |
5141 | + 65, |
5142 | + 77, |
5143 | + 50, |
5144 | + 52, |
5145 | + 10, |
5146 | + 68, |
5147 | + 97, |
5148 | + 116, |
5149 | + 101, |
5150 | + 58, |
5151 | + 32, |
5152 | + 84, |
5153 | + 117, |
5154 | + 101, |
5155 | + 44, |
5156 | + 32, |
5157 | + 53, |
5158 | + 32, |
5159 | + 79, |
5160 | + 99, |
5161 | + 116, |
5162 | + 32, |
5163 | + 50, |
5164 | + 48, |
5165 | + 50, |
5166 | + 49, |
5167 | + 32, |
5168 | + 48, |
5169 | + 54, |
5170 | + 58, |
5171 | + 51, |
5172 | + 54, |
5173 | + 58, |
5174 | + 53, |
5175 | + 49, |
5176 | + 32, |
5177 | + 43, |
5178 | + 48, |
5179 | + 50, |
5180 | + 48, |
5181 | + 48, |
5182 | + 10 |
5183 | + ] |
5184 | } |
5185 | \ No newline at end of file |
5186 | diff --git a/resources/arf/005.json b/resources/arf/005.json |
5187 | index 2b200b7..0bdf2a1 100644 |
5188 | --- a/resources/arf/005.json |
5189 | +++ b/resources/arf/005.json |
5190 | @@ -19,18 +19,1191 @@ |
5191 | "user_agent": "Someisp!Mail-Feedback/1.0", |
5192 | "version": 1, |
5193 | "source_port": 0, |
5194 | + "auth_failure": "BodyHash", |
5195 | + "delivery_result": "Unspecified", |
5196 | + "dkim_adsp_dns": null, |
5197 | + "dkim_canonicalized_body": "VGhpcyBpcyBhIG1lc3NhZ2UgYm9keSB0\n aGF0IGdvdCBtb2RpZmllZCBpbiB0cmFuc2l0LgoKQXQgdGhlIHNhbWU\n gdGltZSB0aGF0IHRoZSBib2R5aGFzaCBmYWlscyB0byB2ZXJpZnksIH\n RoZQptZXNzYWdlIGNvbnRlbnQgaXMgY2xlYXJseSBhYnVzaXZlIG9yI\n HBoaXNoeSwgYXMgdGhlClN1YmplY3QgYWxyZWFkeSBoaW50cy4gIElu\n ZGVlZCwgdGhpcyBib2R5IGFsc28gY29udGFpbnMKdGhlIGZvbGxvd2l\n uZyB0ZXh0OgoKICAgUGxlYXNlIGVudGVyIHlvdXIgZnVsbCBiYW5rIG\n NyZWRlbnRpYWxzIGF0CiAgIGh0dHA6Ly93d3cuc2VuZGVyLmV4YW1wb\n GUvCgpXZSBhcmUgaW1wbHlpbmcgdGhhdCwgYWx0aG91Z2ggbXVsdGlw\n bGUgZmFpbHVyZXMKcmVxdWlyZSBtdWx0aXBsZSByZXBvcnRzLCBhIHN\n pbmdsZSBmYWlsdXJlIGNhbiBiZQpyZXBvcnRlZCBhbG9uZyB3aXRoIH\n BoaXNoaW5nIGluIGEgc2luZ2xlIHJlcG9ydC4K", |
5198 | + "dkim_canonicalized_header": null, |
5199 | + "dkim_domain": "sender.example", |
5200 | + "dkim_identity": "@sender.example", |
5201 | + "dkim_selector": "testkey", |
5202 | + "dkim_selector_dns": null, |
5203 | + "spf_dns": null, |
5204 | + "identity_alignment": "Unspecified", |
5205 | "message": null, |
5206 | - "auth_failure": { |
5207 | - "auth_failure": "BodyHash", |
5208 | - "delivery_result": "Other", |
5209 | - "dkim_adsp_dns": null, |
5210 | - "dkim_canonicalized_body": "VGhpcyBpcyBhIG1lc3NhZ2UgYm9keSB0\n aGF0IGdvdCBtb2RpZmllZCBpbiB0cmFuc2l0LgoKQXQgdGhlIHNhbWU\n gdGltZSB0aGF0IHRoZSBib2R5aGFzaCBmYWlscyB0byB2ZXJpZnksIH\n RoZQptZXNzYWdlIGNvbnRlbnQgaXMgY2xlYXJseSBhYnVzaXZlIG9yI\n HBoaXNoeSwgYXMgdGhlClN1YmplY3QgYWxyZWFkeSBoaW50cy4gIElu\n ZGVlZCwgdGhpcyBib2R5IGFsc28gY29udGFpbnMKdGhlIGZvbGxvd2l\n uZyB0ZXh0OgoKICAgUGxlYXNlIGVudGVyIHlvdXIgZnVsbCBiYW5rIG\n NyZWRlbnRpYWxzIGF0CiAgIGh0dHA6Ly93d3cuc2VuZGVyLmV4YW1wb\n GUvCgpXZSBhcmUgaW1wbHlpbmcgdGhhdCwgYWx0aG91Z2ggbXVsdGlw\n bGUgZmFpbHVyZXMKcmVxdWlyZSBtdWx0aXBsZSByZXBvcnRzLCBhIHN\n pbmdsZSBmYWlsdXJlIGNhbiBiZQpyZXBvcnRlZCBhbG9uZyB3aXRoIH\n BoaXNoaW5nIGluIGEgc2luZ2xlIHJlcG9ydC4K", |
5211 | - "dkim_canonicalized_header": null, |
5212 | - "dkim_domain": "sender.example", |
5213 | - "dkim_identity": "@sender.example", |
5214 | - "dkim_selector": "testkey", |
5215 | - "dkim_selector_dns": null, |
5216 | - "spf_dns": null, |
5217 | - "identity_alignment": "None" |
5218 | - } |
5219 | + "headers": [ |
5220 | + 65, |
5221 | + 117, |
5222 | + 116, |
5223 | + 104, |
5224 | + 101, |
5225 | + 110, |
5226 | + 116, |
5227 | + 105, |
5228 | + 99, |
5229 | + 97, |
5230 | + 116, |
5231 | + 105, |
5232 | + 111, |
5233 | + 110, |
5234 | + 45, |
5235 | + 82, |
5236 | + 101, |
5237 | + 115, |
5238 | + 117, |
5239 | + 108, |
5240 | + 116, |
5241 | + 115, |
5242 | + 58, |
5243 | + 32, |
5244 | + 109, |
5245 | + 116, |
5246 | + 97, |
5247 | + 49, |
5248 | + 48, |
5249 | + 49, |
5250 | + 49, |
5251 | + 46, |
5252 | + 109, |
5253 | + 97, |
5254 | + 105, |
5255 | + 108, |
5256 | + 46, |
5257 | + 116, |
5258 | + 112, |
5259 | + 50, |
5260 | + 46, |
5261 | + 114, |
5262 | + 101, |
5263 | + 99, |
5264 | + 101, |
5265 | + 105, |
5266 | + 118, |
5267 | + 101, |
5268 | + 114, |
5269 | + 46, |
5270 | + 101, |
5271 | + 120, |
5272 | + 97, |
5273 | + 109, |
5274 | + 112, |
5275 | + 108, |
5276 | + 101, |
5277 | + 59, |
5278 | + 10, |
5279 | + 32, |
5280 | + 100, |
5281 | + 107, |
5282 | + 105, |
5283 | + 109, |
5284 | + 61, |
5285 | + 102, |
5286 | + 97, |
5287 | + 105, |
5288 | + 108, |
5289 | + 32, |
5290 | + 40, |
5291 | + 98, |
5292 | + 111, |
5293 | + 100, |
5294 | + 121, |
5295 | + 104, |
5296 | + 97, |
5297 | + 115, |
5298 | + 104, |
5299 | + 41, |
5300 | + 32, |
5301 | + 104, |
5302 | + 101, |
5303 | + 97, |
5304 | + 100, |
5305 | + 101, |
5306 | + 114, |
5307 | + 46, |
5308 | + 100, |
5309 | + 61, |
5310 | + 115, |
5311 | + 101, |
5312 | + 110, |
5313 | + 100, |
5314 | + 101, |
5315 | + 114, |
5316 | + 46, |
5317 | + 101, |
5318 | + 120, |
5319 | + 97, |
5320 | + 109, |
5321 | + 112, |
5322 | + 108, |
5323 | + 101, |
5324 | + 59, |
5325 | + 10, |
5326 | + 32, |
5327 | + 115, |
5328 | + 112, |
5329 | + 102, |
5330 | + 61, |
5331 | + 112, |
5332 | + 97, |
5333 | + 115, |
5334 | + 115, |
5335 | + 32, |
5336 | + 115, |
5337 | + 109, |
5338 | + 116, |
5339 | + 112, |
5340 | + 46, |
5341 | + 109, |
5342 | + 97, |
5343 | + 105, |
5344 | + 108, |
5345 | + 102, |
5346 | + 114, |
5347 | + 111, |
5348 | + 109, |
5349 | + 61, |
5350 | + 97, |
5351 | + 110, |
5352 | + 101, |
5353 | + 120, |
5354 | + 97, |
5355 | + 109, |
5356 | + 112, |
5357 | + 108, |
5358 | + 101, |
5359 | + 46, |
5360 | + 114, |
5361 | + 101, |
5362 | + 112, |
5363 | + 108, |
5364 | + 121, |
5365 | + 64, |
5366 | + 97, |
5367 | + 46, |
5368 | + 115, |
5369 | + 101, |
5370 | + 110, |
5371 | + 100, |
5372 | + 101, |
5373 | + 114, |
5374 | + 46, |
5375 | + 101, |
5376 | + 120, |
5377 | + 97, |
5378 | + 109, |
5379 | + 112, |
5380 | + 108, |
5381 | + 101, |
5382 | + 10, |
5383 | + 82, |
5384 | + 101, |
5385 | + 99, |
5386 | + 101, |
5387 | + 105, |
5388 | + 118, |
5389 | + 101, |
5390 | + 100, |
5391 | + 58, |
5392 | + 32, |
5393 | + 102, |
5394 | + 114, |
5395 | + 111, |
5396 | + 109, |
5397 | + 32, |
5398 | + 115, |
5399 | + 109, |
5400 | + 116, |
5401 | + 112, |
5402 | + 45, |
5403 | + 111, |
5404 | + 117, |
5405 | + 116, |
5406 | + 46, |
5407 | + 115, |
5408 | + 101, |
5409 | + 110, |
5410 | + 100, |
5411 | + 101, |
5412 | + 114, |
5413 | + 46, |
5414 | + 101, |
5415 | + 120, |
5416 | + 97, |
5417 | + 109, |
5418 | + 112, |
5419 | + 108, |
5420 | + 101, |
5421 | + 10, |
5422 | + 32, |
5423 | + 98, |
5424 | + 121, |
5425 | + 32, |
5426 | + 109, |
5427 | + 116, |
5428 | + 97, |
5429 | + 49, |
5430 | + 48, |
5431 | + 49, |
5432 | + 49, |
5433 | + 46, |
5434 | + 109, |
5435 | + 97, |
5436 | + 105, |
5437 | + 108, |
5438 | + 46, |
5439 | + 116, |
5440 | + 112, |
5441 | + 50, |
5442 | + 46, |
5443 | + 114, |
5444 | + 101, |
5445 | + 99, |
5446 | + 101, |
5447 | + 105, |
5448 | + 118, |
5449 | + 101, |
5450 | + 114, |
5451 | + 46, |
5452 | + 101, |
5453 | + 120, |
5454 | + 97, |
5455 | + 109, |
5456 | + 112, |
5457 | + 108, |
5458 | + 101, |
5459 | + 10, |
5460 | + 32, |
5461 | + 119, |
5462 | + 105, |
5463 | + 116, |
5464 | + 104, |
5465 | + 32, |
5466 | + 83, |
5467 | + 77, |
5468 | + 84, |
5469 | + 80, |
5470 | + 32, |
5471 | + 105, |
5472 | + 100, |
5473 | + 32, |
5474 | + 111, |
5475 | + 66, |
5476 | + 56, |
5477 | + 53, |
5478 | + 87, |
5479 | + 56, |
5480 | + 120, |
5481 | + 86, |
5482 | + 48, |
5483 | + 48, |
5484 | + 48, |
5485 | + 49, |
5486 | + 54, |
5487 | + 57, |
5488 | + 59, |
5489 | + 10, |
5490 | + 32, |
5491 | + 83, |
5492 | + 97, |
5493 | + 116, |
5494 | + 44, |
5495 | + 32, |
5496 | + 48, |
5497 | + 56, |
5498 | + 32, |
5499 | + 79, |
5500 | + 99, |
5501 | + 116, |
5502 | + 32, |
5503 | + 50, |
5504 | + 48, |
5505 | + 49, |
5506 | + 49, |
5507 | + 32, |
5508 | + 49, |
5509 | + 51, |
5510 | + 58, |
5511 | + 49, |
5512 | + 53, |
5513 | + 58, |
5514 | + 53, |
5515 | + 56, |
5516 | + 32, |
5517 | + 45, |
5518 | + 48, |
5519 | + 55, |
5520 | + 48, |
5521 | + 48, |
5522 | + 32, |
5523 | + 40, |
5524 | + 80, |
5525 | + 68, |
5526 | + 84, |
5527 | + 41, |
5528 | + 10, |
5529 | + 68, |
5530 | + 75, |
5531 | + 73, |
5532 | + 77, |
5533 | + 45, |
5534 | + 83, |
5535 | + 105, |
5536 | + 103, |
5537 | + 110, |
5538 | + 97, |
5539 | + 116, |
5540 | + 117, |
5541 | + 114, |
5542 | + 101, |
5543 | + 58, |
5544 | + 32, |
5545 | + 118, |
5546 | + 61, |
5547 | + 49, |
5548 | + 59, |
5549 | + 32, |
5550 | + 99, |
5551 | + 61, |
5552 | + 114, |
5553 | + 101, |
5554 | + 108, |
5555 | + 97, |
5556 | + 120, |
5557 | + 101, |
5558 | + 100, |
5559 | + 47, |
5560 | + 115, |
5561 | + 105, |
5562 | + 109, |
5563 | + 112, |
5564 | + 108, |
5565 | + 101, |
5566 | + 59, |
5567 | + 32, |
5568 | + 97, |
5569 | + 61, |
5570 | + 114, |
5571 | + 115, |
5572 | + 97, |
5573 | + 45, |
5574 | + 115, |
5575 | + 104, |
5576 | + 97, |
5577 | + 50, |
5578 | + 53, |
5579 | + 54, |
5580 | + 59, |
5581 | + 10, |
5582 | + 32, |
5583 | + 115, |
5584 | + 61, |
5585 | + 116, |
5586 | + 101, |
5587 | + 115, |
5588 | + 116, |
5589 | + 107, |
5590 | + 101, |
5591 | + 121, |
5592 | + 59, |
5593 | + 32, |
5594 | + 100, |
5595 | + 61, |
5596 | + 115, |
5597 | + 101, |
5598 | + 110, |
5599 | + 100, |
5600 | + 101, |
5601 | + 114, |
5602 | + 46, |
5603 | + 101, |
5604 | + 120, |
5605 | + 97, |
5606 | + 109, |
5607 | + 112, |
5608 | + 108, |
5609 | + 101, |
5610 | + 59, |
5611 | + 32, |
5612 | + 104, |
5613 | + 61, |
5614 | + 70, |
5615 | + 114, |
5616 | + 111, |
5617 | + 109, |
5618 | + 58, |
5619 | + 84, |
5620 | + 111, |
5621 | + 58, |
5622 | + 83, |
5623 | + 117, |
5624 | + 98, |
5625 | + 106, |
5626 | + 101, |
5627 | + 99, |
5628 | + 116, |
5629 | + 58, |
5630 | + 68, |
5631 | + 97, |
5632 | + 116, |
5633 | + 101, |
5634 | + 59, |
5635 | + 10, |
5636 | + 32, |
5637 | + 98, |
5638 | + 104, |
5639 | + 61, |
5640 | + 50, |
5641 | + 106, |
5642 | + 85, |
5643 | + 83, |
5644 | + 79, |
5645 | + 72, |
5646 | + 57, |
5647 | + 78, |
5648 | + 104, |
5649 | + 116, |
5650 | + 86, |
5651 | + 71, |
5652 | + 67, |
5653 | + 81, |
5654 | + 87, |
5655 | + 78, |
5656 | + 114, |
5657 | + 57, |
5658 | + 66, |
5659 | + 114, |
5660 | + 73, |
5661 | + 65, |
5662 | + 80, |
5663 | + 114, |
5664 | + 101, |
5665 | + 75, |
5666 | + 81, |
5667 | + 106, |
5668 | + 79, |
5669 | + 54, |
5670 | + 83, |
5671 | + 110, |
5672 | + 55, |
5673 | + 88, |
5674 | + 73, |
5675 | + 107, |
5676 | + 102, |
5677 | + 74, |
5678 | + 86, |
5679 | + 79, |
5680 | + 122, |
5681 | + 118, |
5682 | + 56, |
5683 | + 61, |
5684 | + 59, |
5685 | + 10, |
5686 | + 32, |
5687 | + 98, |
5688 | + 61, |
5689 | + 65, |
5690 | + 117, |
5691 | + 85, |
5692 | + 111, |
5693 | + 70, |
5694 | + 69, |
5695 | + 102, |
5696 | + 68, |
5697 | + 120, |
5698 | + 84, |
5699 | + 68, |
5700 | + 107, |
5701 | + 72, |
5702 | + 108, |
5703 | + 76, |
5704 | + 88, |
5705 | + 83, |
5706 | + 90, |
5707 | + 69, |
5708 | + 112, |
5709 | + 90, |
5710 | + 106, |
5711 | + 55, |
5712 | + 57, |
5713 | + 76, |
5714 | + 73, |
5715 | + 67, |
5716 | + 69, |
5717 | + 112, |
5718 | + 115, |
5719 | + 54, |
5720 | + 101, |
5721 | + 100, |
5722 | + 97, |
5723 | + 55, |
5724 | + 87, |
5725 | + 51, |
5726 | + 100, |
5727 | + 101, |
5728 | + 84, |
5729 | + 86, |
5730 | + 70, |
5731 | + 79, |
5732 | + 107, |
5733 | + 52, |
5734 | + 121, |
5735 | + 65, |
5736 | + 85, |
5737 | + 111, |
5738 | + 113, |
5739 | + 79, |
5740 | + 66, |
5741 | + 10, |
5742 | + 32, |
5743 | + 52, |
5744 | + 110, |
5745 | + 117, |
5746 | + 106, |
5747 | + 99, |
5748 | + 55, |
5749 | + 89, |
5750 | + 111, |
5751 | + 112, |
5752 | + 100, |
5753 | + 71, |
5754 | + 53, |
5755 | + 100, |
5756 | + 87, |
5757 | + 76, |
5758 | + 83, |
5759 | + 100, |
5760 | + 78, |
5761 | + 103, |
5762 | + 54, |
5763 | + 120, |
5764 | + 78, |
5765 | + 65, |
5766 | + 90, |
5767 | + 112, |
5768 | + 79, |
5769 | + 80, |
5770 | + 114, |
5771 | + 43, |
5772 | + 107, |
5773 | + 72, |
5774 | + 120, |
5775 | + 116, |
5776 | + 49, |
5777 | + 73, |
5778 | + 114, |
5779 | + 69, |
5780 | + 43, |
5781 | + 78, |
5782 | + 97, |
5783 | + 104, |
5784 | + 77, |
5785 | + 54, |
5786 | + 76, |
5787 | + 47, |
5788 | + 76, |
5789 | + 98, |
5790 | + 118, |
5791 | + 97, |
5792 | + 72, |
5793 | + 117, |
5794 | + 116, |
5795 | + 10, |
5796 | + 32, |
5797 | + 75, |
5798 | + 86, |
5799 | + 100, |
5800 | + 107, |
5801 | + 76, |
5802 | + 76, |
5803 | + 107, |
5804 | + 112, |
5805 | + 86, |
5806 | + 97, |
5807 | + 86, |
5808 | + 86, |
5809 | + 81, |
5810 | + 80, |
5811 | + 122, |
5812 | + 101, |
5813 | + 82, |
5814 | + 68, |
5815 | + 73, |
5816 | + 48, |
5817 | + 48, |
5818 | + 57, |
5819 | + 83, |
5820 | + 79, |
5821 | + 50, |
5822 | + 73, |
5823 | + 108, |
5824 | + 53, |
5825 | + 76, |
5826 | + 117, |
5827 | + 55, |
5828 | + 114, |
5829 | + 68, |
5830 | + 78, |
5831 | + 72, |
5832 | + 54, |
5833 | + 109, |
5834 | + 90, |
5835 | + 99, |
5836 | + 107, |
5837 | + 66, |
5838 | + 100, |
5839 | + 114, |
5840 | + 73, |
5841 | + 120, |
5842 | + 48, |
5843 | + 111, |
5844 | + 114, |
5845 | + 69, |
5846 | + 116, |
5847 | + 90, |
5848 | + 86, |
5849 | + 10, |
5850 | + 32, |
5851 | + 52, |
5852 | + 98, |
5853 | + 109, |
5854 | + 112, |
5855 | + 47, |
5856 | + 89, |
5857 | + 122, |
5858 | + 104, |
5859 | + 119, |
5860 | + 118, |
5861 | + 99, |
5862 | + 117, |
5863 | + 98, |
5864 | + 85, |
5865 | + 52, |
5866 | + 61, |
5867 | + 10, |
5868 | + 82, |
5869 | + 101, |
5870 | + 99, |
5871 | + 101, |
5872 | + 105, |
5873 | + 118, |
5874 | + 101, |
5875 | + 100, |
5876 | + 58, |
5877 | + 32, |
5878 | + 102, |
5879 | + 114, |
5880 | + 111, |
5881 | + 109, |
5882 | + 32, |
5883 | + 109, |
5884 | + 97, |
5885 | + 105, |
5886 | + 108, |
5887 | + 46, |
5888 | + 115, |
5889 | + 101, |
5890 | + 110, |
5891 | + 100, |
5892 | + 101, |
5893 | + 114, |
5894 | + 46, |
5895 | + 101, |
5896 | + 120, |
5897 | + 97, |
5898 | + 109, |
5899 | + 112, |
5900 | + 108, |
5901 | + 101, |
5902 | + 10, |
5903 | + 32, |
5904 | + 98, |
5905 | + 121, |
5906 | + 32, |
5907 | + 115, |
5908 | + 109, |
5909 | + 116, |
5910 | + 112, |
5911 | + 45, |
5912 | + 111, |
5913 | + 117, |
5914 | + 116, |
5915 | + 46, |
5916 | + 115, |
5917 | + 101, |
5918 | + 110, |
5919 | + 100, |
5920 | + 101, |
5921 | + 114, |
5922 | + 46, |
5923 | + 101, |
5924 | + 120, |
5925 | + 97, |
5926 | + 109, |
5927 | + 112, |
5928 | + 108, |
5929 | + 101, |
5930 | + 10, |
5931 | + 32, |
5932 | + 119, |
5933 | + 105, |
5934 | + 116, |
5935 | + 104, |
5936 | + 32, |
5937 | + 83, |
5938 | + 77, |
5939 | + 84, |
5940 | + 80, |
5941 | + 32, |
5942 | + 105, |
5943 | + 100, |
5944 | + 32, |
5945 | + 111, |
5946 | + 51, |
5947 | + 70, |
5948 | + 53, |
5949 | + 50, |
5950 | + 103, |
5951 | + 120, |
5952 | + 79, |
5953 | + 48, |
5954 | + 50, |
5955 | + 57, |
5956 | + 49, |
5957 | + 52, |
5958 | + 52, |
5959 | + 59, |
5960 | + 10, |
5961 | + 32, |
5962 | + 83, |
5963 | + 97, |
5964 | + 116, |
5965 | + 44, |
5966 | + 32, |
5967 | + 48, |
5968 | + 56, |
5969 | + 32, |
5970 | + 79, |
5971 | + 99, |
5972 | + 116, |
5973 | + 32, |
5974 | + 50, |
5975 | + 48, |
5976 | + 49, |
5977 | + 49, |
5978 | + 32, |
5979 | + 49, |
5980 | + 51, |
5981 | + 58, |
5982 | + 49, |
5983 | + 53, |
5984 | + 58, |
5985 | + 51, |
5986 | + 49, |
5987 | + 32, |
5988 | + 45, |
5989 | + 48, |
5990 | + 55, |
5991 | + 48, |
5992 | + 48, |
5993 | + 32, |
5994 | + 40, |
5995 | + 80, |
5996 | + 68, |
5997 | + 84, |
5998 | + 41, |
5999 | + 10, |
6000 | + 32, |
6001 | + 82, |
6002 | + 101, |
6003 | + 99, |
6004 | + 101, |
6005 | + 105, |
6006 | + 118, |
6007 | + 101, |
6008 | + 100, |
6009 | + 58, |
6010 | + 32, |
6011 | + 102, |
6012 | + 114, |
6013 | + 111, |
6014 | + 109, |
6015 | + 32, |
6016 | + 105, |
6017 | + 110, |
6018 | + 116, |
6019 | + 101, |
6020 | + 114, |
6021 | + 110, |
6022 | + 97, |
6023 | + 108, |
6024 | + 45, |
6025 | + 99, |
6026 | + 108, |
6027 | + 105, |
6028 | + 101, |
6029 | + 110, |
6030 | + 116, |
6031 | + 45, |
6032 | + 48, |
6033 | + 48, |
6034 | + 49, |
6035 | + 46, |
6036 | + 115, |
6037 | + 101, |
6038 | + 110, |
6039 | + 100, |
6040 | + 101, |
6041 | + 114, |
6042 | + 46, |
6043 | + 101, |
6044 | + 120, |
6045 | + 97, |
6046 | + 109, |
6047 | + 112, |
6048 | + 108, |
6049 | + 101, |
6050 | + 10, |
6051 | + 32, |
6052 | + 98, |
6053 | + 121, |
6054 | + 32, |
6055 | + 109, |
6056 | + 97, |
6057 | + 105, |
6058 | + 108, |
6059 | + 46, |
6060 | + 115, |
6061 | + 101, |
6062 | + 110, |
6063 | + 100, |
6064 | + 101, |
6065 | + 114, |
6066 | + 46, |
6067 | + 101, |
6068 | + 120, |
6069 | + 97, |
6070 | + 109, |
6071 | + 112, |
6072 | + 108, |
6073 | + 101, |
6074 | + 10, |
6075 | + 32, |
6076 | + 119, |
6077 | + 105, |
6078 | + 116, |
6079 | + 104, |
6080 | + 32, |
6081 | + 83, |
6082 | + 77, |
6083 | + 84, |
6084 | + 80, |
6085 | + 32, |
6086 | + 105, |
6087 | + 100, |
6088 | + 32, |
6089 | + 111, |
6090 | + 51, |
6091 | + 70, |
6092 | + 51, |
6093 | + 66, |
6094 | + 119, |
6095 | + 100, |
6096 | + 89, |
6097 | + 48, |
6098 | + 50, |
6099 | + 56, |
6100 | + 52, |
6101 | + 51, |
6102 | + 49, |
6103 | + 59, |
6104 | + 10, |
6105 | + 32, |
6106 | + 83, |
6107 | + 97, |
6108 | + 116, |
6109 | + 44, |
6110 | + 32, |
6111 | + 48, |
6112 | + 56, |
6113 | + 32, |
6114 | + 79, |
6115 | + 99, |
6116 | + 116, |
6117 | + 32, |
6118 | + 50, |
6119 | + 48, |
6120 | + 49, |
6121 | + 49, |
6122 | + 32, |
6123 | + 49, |
6124 | + 51, |
6125 | + 58, |
6126 | + 49, |
6127 | + 53, |
6128 | + 58, |
6129 | + 50, |
6130 | + 52, |
6131 | + 32, |
6132 | + 45, |
6133 | + 48, |
6134 | + 55, |
6135 | + 48, |
6136 | + 48, |
6137 | + 32, |
6138 | + 40, |
6139 | + 80, |
6140 | + 68, |
6141 | + 84, |
6142 | + 41, |
6143 | + 10, |
6144 | + 68, |
6145 | + 97, |
6146 | + 116, |
6147 | + 101, |
6148 | + 58, |
6149 | + 32, |
6150 | + 83, |
6151 | + 97, |
6152 | + 116, |
6153 | + 44, |
6154 | + 32, |
6155 | + 56, |
6156 | + 32, |
6157 | + 79, |
6158 | + 99, |
6159 | + 116, |
6160 | + 32, |
6161 | + 50, |
6162 | + 48, |
6163 | + 49, |
6164 | + 49, |
6165 | + 32, |
6166 | + 49, |
6167 | + 54, |
6168 | + 58, |
6169 | + 49, |
6170 | + 53, |
6171 | + 58, |
6172 | + 50, |
6173 | + 52, |
6174 | + 32, |
6175 | + 45, |
6176 | + 48, |
6177 | + 52, |
6178 | + 48, |
6179 | + 48, |
6180 | + 32, |
6181 | + 40, |
6182 | + 69, |
6183 | + 68, |
6184 | + 84, |
6185 | + 41, |
6186 | + 10, |
6187 | + 82, |
6188 | + 101, |
6189 | + 112, |
6190 | + 108, |
6191 | + 121, |
6192 | + 45, |
6193 | + 84, |
6194 | + 111, |
6195 | + 58, |
6196 | + 32, |
6197 | + 97, |
6198 | + 110, |
6199 | + 101, |
6200 | + 120, |
6201 | + 97, |
6202 | + 109, |
6203 | + 112, |
6204 | + 108, |
6205 | + 101, |
6206 | + 46, |
6207 | + 114, |
6208 | + 101, |
6209 | + 112, |
6210 | + 108, |
6211 | + 121, |
6212 | + 64, |
6213 | + 97, |
6214 | + 46, |
6215 | + 115, |
6216 | + 101, |
6217 | + 110, |
6218 | + 100, |
6219 | + 101, |
6220 | + 114, |
6221 | + 46, |
6222 | + 101, |
6223 | + 120, |
6224 | + 97, |
6225 | + 109, |
6226 | + 112, |
6227 | + 108, |
6228 | + 101, |
6229 | + 10, |
6230 | + 70, |
6231 | + 114, |
6232 | + 111, |
6233 | + 109, |
6234 | + 58, |
6235 | + 32, |
6236 | + 97, |
6237 | + 110, |
6238 | + 101, |
6239 | + 120, |
6240 | + 97, |
6241 | + 109, |
6242 | + 112, |
6243 | + 108, |
6244 | + 101, |
6245 | + 64, |
6246 | + 97, |
6247 | + 46, |
6248 | + 115, |
6249 | + 101, |
6250 | + 110, |
6251 | + 100, |
6252 | + 101, |
6253 | + 114, |
6254 | + 46, |
6255 | + 101, |
6256 | + 120, |
6257 | + 97, |
6258 | + 109, |
6259 | + 112, |
6260 | + 108, |
6261 | + 101, |
6262 | + 10, |
6263 | + 84, |
6264 | + 111, |
6265 | + 58, |
6266 | + 32, |
6267 | + 115, |
6268 | + 111, |
6269 | + 109, |
6270 | + 101, |
6271 | + 117, |
6272 | + 115, |
6273 | + 101, |
6274 | + 114, |
6275 | + 64, |
6276 | + 114, |
6277 | + 101, |
6278 | + 99, |
6279 | + 101, |
6280 | + 105, |
6281 | + 118, |
6282 | + 101, |
6283 | + 114, |
6284 | + 46, |
6285 | + 101, |
6286 | + 120, |
6287 | + 97, |
6288 | + 109, |
6289 | + 112, |
6290 | + 108, |
6291 | + 101, |
6292 | + 10, |
6293 | + 83, |
6294 | + 117, |
6295 | + 98, |
6296 | + 106, |
6297 | + 101, |
6298 | + 99, |
6299 | + 116, |
6300 | + 58, |
6301 | + 32, |
6302 | + 89, |
6303 | + 111, |
6304 | + 117, |
6305 | + 32, |
6306 | + 104, |
6307 | + 97, |
6308 | + 118, |
6309 | + 101, |
6310 | + 32, |
6311 | + 97, |
6312 | + 32, |
6313 | + 110, |
6314 | + 101, |
6315 | + 119, |
6316 | + 32, |
6317 | + 98, |
6318 | + 105, |
6319 | + 108, |
6320 | + 108, |
6321 | + 32, |
6322 | + 102, |
6323 | + 114, |
6324 | + 111, |
6325 | + 109, |
6326 | + 32, |
6327 | + 121, |
6328 | + 111, |
6329 | + 117, |
6330 | + 114, |
6331 | + 32, |
6332 | + 98, |
6333 | + 97, |
6334 | + 110, |
6335 | + 107, |
6336 | + 10, |
6337 | + 77, |
6338 | + 101, |
6339 | + 115, |
6340 | + 115, |
6341 | + 97, |
6342 | + 103, |
6343 | + 101, |
6344 | + 45, |
6345 | + 73, |
6346 | + 68, |
6347 | + 58, |
6348 | + 32, |
6349 | + 60, |
6350 | + 56, |
6351 | + 55, |
6352 | + 57, |
6353 | + 49, |
6354 | + 51, |
6355 | + 57, |
6356 | + 49, |
6357 | + 48, |
6358 | + 46, |
6359 | + 49, |
6360 | + 51, |
6361 | + 49, |
6362 | + 56, |
6363 | + 48, |
6364 | + 57, |
6365 | + 52, |
6366 | + 54, |
6367 | + 48, |
6368 | + 52, |
6369 | + 53, |
6370 | + 52, |
6371 | + 54, |
6372 | + 64, |
6373 | + 111, |
6374 | + 117, |
6375 | + 116, |
6376 | + 46, |
6377 | + 115, |
6378 | + 101, |
6379 | + 110, |
6380 | + 100, |
6381 | + 101, |
6382 | + 114, |
6383 | + 46, |
6384 | + 101, |
6385 | + 120, |
6386 | + 97, |
6387 | + 109, |
6388 | + 112, |
6389 | + 108, |
6390 | + 101, |
6391 | + 62, |
6392 | + 10 |
6393 | + ] |
6394 | } |
6395 | \ No newline at end of file |
6396 | diff --git a/resources/schemas/dmarc-draft.xsd b/resources/schemas/dmarc-draft.xsd |
6397 | deleted file mode 100644 |
6398 | index 3220edc..0000000 |
6399 | --- a/resources/schemas/dmarc-draft.xsd |
6400 | +++ /dev/null |
6401 | @@ -1,351 +0,0 @@ |
6402 | - <?xml version="1.0"?> |
6403 | - <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" |
6404 | - targetNamespace="http://dmarc.org/dmarc-xml/0.2"> |
6405 | - |
6406 | - <!-- The time range in UTC covered by messages in this report, |
6407 | - specified in seconds since epoch. --> |
6408 | - <xs:complexType name="DateRangeType"> |
6409 | - <xs:all> |
6410 | - <xs:element name="begin" type="xs:integer" |
6411 | - minOccurs="1" maxOccurs="1"/> |
6412 | - <xs:element name="end" type="xs:integer" |
6413 | - minOccurs="1" maxOccurs="1"/> |
6414 | - </xs:all> |
6415 | - </xs:complexType> |
6416 | - |
6417 | - |
6418 | - <!-- Report generator metadata. --> |
6419 | - <!-- |
6420 | - org_name: Reporting Organization |
6421 | - email: Contact to be used when contacting |
6422 | - the Reporting Organization |
6423 | - extra_contact_info: Additional contact details |
6424 | - report_id: UUID, specified elsewhere |
6425 | - date_range: Timestamps used when forming report data |
6426 | - error: ? |
6427 | - --> |
6428 | - <xs:complexType name="ReportMetadataType"> |
6429 | - <xs:sequence> |
6430 | - <xs:element name="org_name" type="xs:string" |
6431 | - minOccurs="1" maxOccurs="1"/> |
6432 | - <xs:element name="email" type="xs:string" |
6433 | - minOccurs="1" maxOccurs="1"/> |
6434 | - <xs:element name="extra_contact_info" type="xs:string" |
6435 | - minOccurs="0" maxOccurs="1"/> |
6436 | - <xs:element name="report_id" type="xs:string" |
6437 | - minOccurs="1" maxOccurs="1"/> |
6438 | - <xs:element name="date_range" type="DateRangeType" |
6439 | - minOccurs="1" maxOccurs="1"/> |
6440 | - <xs:element name="error" type="xs:string" |
6441 | - minOccurs="0" maxOccurs="unbounded"/> |
6442 | - </xs:sequence> |
6443 | - </xs:complexType> |
6444 | - |
6445 | - <!-- Alignment mode (relaxed or strict) for DKIM and SPF. --> |
6446 | - <xs:simpleType name="AlignmentType"> |
6447 | - <xs:restriction base="xs:string"> |
6448 | - <xs:enumeration value="r"/> |
6449 | - <xs:enumeration value="s"/> |
6450 | - </xs:restriction> |
6451 | - </xs:simpleType> |
6452 | - |
6453 | - <!-- The policy actions specified by p and sp in the |
6454 | - DMARC record. --> |
6455 | - <xs:simpleType name="DispositionType"> |
6456 | - <xs:restriction base="xs:string"> |
6457 | - <xs:enumeration value="none"/> |
6458 | - <xs:enumeration value="quarantine"/> |
6459 | - <xs:enumeration value="reject"/> |
6460 | - </xs:restriction> |
6461 | - </xs:simpleType> |
6462 | - |
6463 | - <!-- The policy actions utilized on messages for this record. --> |
6464 | - <!-- |
6465 | - "none": No action taken |
6466 | - "pass": No action, passing DMARC w/enforcing policy |
6467 | - "quarantine": Failed DMARC, message marked for quarantine |
6468 | - "reject": Failed DMARC, marked as reject |
6469 | - --> |
6470 | - <xs:simpleType name="ActionDispositionType"> |
6471 | - <xs:restriction base="xs:string"> |
6472 | - <xs:enumeration value="none"/> |
6473 | - <xs:enumeration value="pass"/> |
6474 | - <xs:enumeration value="quarantine"/> |
6475 | - <xs:enumeration value="reject"/> |
6476 | - </xs:restriction> |
6477 | - |
6478 | - <!-- The DMARC policy that is published by the sending domain |
6479 | - in this report. --> |
6480 | - <xs:complexType name="PolicyPublishedType"> |
6481 | - <xs:all> |
6482 | - <!-- The domain at which the DMARC record was found. --> |
6483 | - <xs:element name="domain" type="xs:string" |
6484 | - minOccurs="1" maxOccurs="1"/> |
6485 | - <!-- The version declared in the DMARC record found. --> |
6486 | - <xs:element name="version_published" type="xs:decimal" |
6487 | - minOccurs="0" maxOccurs="1"/> |
6488 | - <!-- The DKIM alignment mode. --> |
6489 | - <xs:element name="adkim" type="AlignmentType" |
6490 | - minOccurs="0" maxOccurs="1"/> |
6491 | - <!-- The SPF alignment mode. --> |
6492 | - <xs:element name="aspf" type="AlignmentType" |
6493 | - minOccurs="0" maxOccurs="1"/> |
6494 | - <!-- The policy published for messages from the domain. --> |
6495 | - <xs:element name="p" type="DispositionType" |
6496 | - minOccurs="1" maxOccurs="1"/> |
6497 | - <!-- The policy published for messages from subdomains. --> |
6498 | - <xs:element name="sp" type="DispositionType" |
6499 | - minOccurs="1" maxOccurs="1"/> |
6500 | - <!-- The percent declared in the DMARC record --> |
6501 | - <xs:element name="testing" type="TestingType" |
6502 | - minOccurs="0" maxOccurs="1"/> |
6503 | - <!-- Failure reporting options in effect. --> |
6504 | - <xs:element name="fo" type="xs:string" |
6505 | - minOccurs="0" maxOccurs="1"/> |
6506 | - </xs:all> |
6507 | - </xs:complexType> |
6508 | - |
6509 | - <!-- Values for Testing mode attached to Policy --> |
6510 | - <xs:simpleType name="TestingType"> |
6511 | - <xs:restriction base="xs:string"> |
6512 | - <xs:enumeration value="n"/> |
6513 | - <xs:enumeration value="y"/> |
6514 | - </xs:restriction> |
6515 | - </xs:simpleType> |
6516 | - |
6517 | - <!-- The DMARC-aligned authentication result. --> |
6518 | - <xs:simpleType name="DMARCResultType"> |
6519 | - <xs:restriction base="xs:string"> |
6520 | - <xs:enumeration value="pass"/> |
6521 | - <xs:enumeration value="fail"/> |
6522 | - </xs:restriction> |
6523 | - </xs:simpleType> |
6524 | - |
6525 | - <!-- Reasons that may affect DMARC disposition or execution |
6526 | - thereof. --> |
6527 | - <xs:simpleType name="PolicyOverrideType"> |
6528 | - <xs:restriction base="xs:string"> |
6529 | - <xs:enumeration value="forwarded"/> |
6530 | - <xs:enumeration value="sampled_out"/> |
6531 | - <xs:enumeration value="trusted_forwarder"/> |
6532 | - <xs:enumeration value="mailing_list"/> |
6533 | - <xs:enumeration value="local_policy"/> |
6534 | - <xs:enumeration value="other"/> |
6535 | - </xs:restriction> |
6536 | - </xs:simpleType> |
6537 | - |
6538 | - <!-- How do we allow report generators to include new |
6539 | - classes of override reasons if they want to be more |
6540 | - specific than "other"? --> |
6541 | - <xs:complexType name="PolicyOverrideReason"> |
6542 | - <xs:all> |
6543 | - <xs:element name="type" type="PolicyOverrideType" |
6544 | - minOccurs="1" maxOccurs="1"/> |
6545 | - <xs:element name="comment" type="xs:string" |
6546 | - minOccurs="0" maxOccurs="1"/> |
6547 | - </xs:all> |
6548 | - </xs:complexType> |
6549 | - |
6550 | - <!-- Taking into account everything else in the record, |
6551 | - the results of applying DMARC. If alignment fails |
6552 | - and the policy applied does not match the domain's |
6553 | - configured policy, the reason element MUST be specified --> |
6554 | - |
6555 | - <xs:complexType name="PolicyEvaluatedType"> |
6556 | - <xs:sequence> |
6557 | - <xs:element name="disposition" type="ActionDispositionType"/> |
6558 | - <xs:element name="dkim" type="DMARCResultType"/> |
6559 | - <xs:element name="spf" type="DMARCResultType"/> |
6560 | - <xs:element name="reason" type="PolicyOverrideReason" |
6561 | - minOccurs="0" maxOccurs="unbounded"/> |
6562 | - </xs:sequence> |
6563 | - </xs:complexType> |
6564 | - |
6565 | - <!-- Credit to Roger L. Costello for IPv4 regex |
6566 | - http://mailman.ic.ac.uk/pipermail/xml-dev/1999-December/ |
6567 | - 018018.html --> |
6568 | - <!-- Credit to java2s.com for IPv6 regex |
6569 | - http://www.java2s.com/Code/XML/XML-Schema/ |
6570 | - IPv6addressesareeasiertodescribeusingasimpleregex.htm --> |
6571 | - <xs:simpleType name="IPAddress"> |
6572 | - <xs:restriction base="xs:string"> |
6573 | - <xs:pattern value="((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]).){3} |
6574 | - (1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])| |
6575 | - ([A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}"/> |
6576 | - </xs:restriction> |
6577 | - </xs:simpleType> |
6578 | - |
6579 | - <xs:complexType name="RowType"> |
6580 | - <xs:all> |
6581 | - <!-- The connecting IP. --> |
6582 | - <xs:element name="source_ip" type="IPAddress" |
6583 | - minOccurs="1" maxOccurs="1"/> |
6584 | - <!-- The number of messages for which the |
6585 | - PolicyEvaluatedType was applied. --> |
6586 | - <xs:element name="count" type="xs:integer" |
6587 | - minOccurs="1" maxOccurs="1"/> |
6588 | - <!-- The DMARC disposition applied to matching |
6589 | - messages. --> |
6590 | - <xs:element name="policy_evaluated" |
6591 | - type="PolicyEvaluatedType" |
6592 | - minOccurs="1" maxOccurs="1"/> |
6593 | - <xs:element name="extensions" type="ExtensionType" |
6594 | - minOccurs="0" maxOccurs"unbounded"/> |
6595 | - </xs:all> |
6596 | - </xs:complexType> |
6597 | - |
6598 | - <xs:complexType name="IdentifierType"> |
6599 | - <xs:all> |
6600 | - <!-- The envelope recipient domain. --> |
6601 | - <xs:element name="envelope_to" type="xs:string" |
6602 | - minOccurs="0"/> |
6603 | - <!-- The RFC5321.MailFrom domain. --> |
6604 | - <xs:element name="envelope_from" type="xs:string" |
6605 | - minOccurs="1"/> |
6606 | - <!-- The RFC5322.From domain. --> |
6607 | - <xs:element name="header_from" type="xs:string" |
6608 | - minOccurs="1"/> |
6609 | - </xs:all> |
6610 | - </xs:complexType> |
6611 | - |
6612 | - <!-- DKIM verification result, according to RFC 7001 |
6613 | - Section 2.6.1. --> |
6614 | - <xs:simpleType name="DKIMResultType"> |
6615 | - <xs:restriction base="xs:string"> |
6616 | - <xs:enumeration value="none"/> |
6617 | - <xs:enumeration value="pass"/> |
6618 | - <xs:enumeration value="fail"/> |
6619 | - <xs:enumeration value="policy"/> |
6620 | - <xs:enumeration value="neutral"/> |
6621 | - <xs:enumeration value="temperror"/> |
6622 | - <xs:enumeration value="permerror"/> |
6623 | - </xs:restriction> |
6624 | - </xs:simpleType> |
6625 | - |
6626 | - <xs:complexType name="DKIMAuthResultType"> |
6627 | - <xs:all> |
6628 | - <!-- The "d=" parameter in the signature. --> |
6629 | - <xs:element name="domain" type="xs:string" |
6630 | - minOccurs="1" maxOccurs="1"/> |
6631 | - <!-- The "s=" parameter in the signature. --> |
6632 | - <xs:element name="selector" type="xs:string" |
6633 | - minOccurs="1" maxOccurs="1"/> |
6634 | - <!-- The DKIM verification result. --> |
6635 | - <xs:element name="result" type="DKIMResultType" |
6636 | - minOccurs="1" maxOccurs="1"/> |
6637 | - <!-- Any extra information (e.g., from |
6638 | - Authentication-Results). --> |
6639 | - <xs:element name="human_result" type="xs:string" |
6640 | - minOccurs="0" maxOccurs="1"/> |
6641 | - </xs:all> |
6642 | - </xs:complexType> |
6643 | - |
6644 | - <!-- SPF domain scope. --> |
6645 | - <xs:simpleType name="SPFDomainScope"> |
6646 | - <xs:restriction base="xs:string"> |
6647 | - <xs:enumeration value="helo"/> |
6648 | - <xs:enumeration value="mfrom"/> |
6649 | - </xs:restriction> |
6650 | - </xs:simpleType> |
6651 | - |
6652 | - <!-- SPF result. --> |
6653 | - <xs:simpleType name="SPFResultType"> |
6654 | - <xs:restriction base="xs:string"> |
6655 | - <xs:enumeration value="none"/> |
6656 | - <xs:enumeration value="neutral"/> |
6657 | - <xs:enumeration value="pass"/> |
6658 | - <xs:enumeration value="fail"/> |
6659 | - <xs:enumeration value="softfail"/> |
6660 | - <!-- "TempError" commonly implemented as "unknown". --> |
6661 | - <xs:enumeration value="temperror"/> |
6662 | - <!-- "PermError" commonly implemented as "error". --> |
6663 | - <xs:enumeration value="permerror"/> |
6664 | - </xs:restriction> |
6665 | - </xs:simpleType> |
6666 | - |
6667 | - <xs:complexType name="SPFAuthResultType"> |
6668 | - <xs:all> |
6669 | - <!-- The checked domain. --> |
6670 | - <xs:element name="domain" type="xs:string" |
6671 | - minOccurs="1" maxOccurs="1"/> |
6672 | - <!-- The scope of the checked domain. --> |
6673 | - <xs:element name="scope" type="SPFDomainScope" |
6674 | - minOccurs="0" maxOccurs="1"/> |
6675 | - <!-- The SPF verification result. --> |
6676 | - <xs:element name="result" type="SPFResultType" |
6677 | - minOccurs="1" maxOccurs="1"/> |
6678 | - <!-- Any extra information |
6679 | - (e.g., from Authentication-Results). |
6680 | - The information in the field below should be for a |
6681 | - person to be provided with additional information |
6682 | - that may be useful when debugging SPF authentication |
6683 | - issues. This could include broken records, invalid |
6684 | - DNS responses, etc. |
6685 | - --> |
6686 | - <xs:element name="human_result" type="xs:string" |
6687 | - minOccurs="0" maxOccurs="1"/> |
6688 | - </xs:all> |
6689 | - </xs:complexType> |
6690 | - |
6691 | - <!-- This element contains DKIM and SPF results, uninterpreted |
6692 | - with respect to DMARC. --> |
6693 | - <xs:complexType name="AuthResultType"> |
6694 | - <xs:sequence> |
6695 | - <!-- There may be no DKIM signatures, or multiple DKIM |
6696 | - signatures. --> |
6697 | - <xs:element name="dkim" type="DKIMAuthResultType" |
6698 | - minOccurs="0" maxOccurs="unbounded"/> |
6699 | - <!-- There will always be at least one SPF result. --> |
6700 | - <xs:element name="spf" type="SPFAuthResultType" minOccurs="1" |
6701 | - maxOccurs="unbounded"/> |
6702 | - </xs:sequence> |
6703 | - </xs:complexType> |
6704 | - |
6705 | - <!-- This element contains all the authentication results that |
6706 | - were evaluated by the receiving system for the given set of |
6707 | - messages. --> |
6708 | - <xs:complexType name="RecordType"> |
6709 | - <xs:sequence> |
6710 | - <xs:element name="row" type="RowType"/> |
6711 | - <xs:element name="identifiers" type="IdentifierType" |
6712 | - minOccurs="1" maxOccurs="1"/> |
6713 | - <xs:element name="auth_results" type="AuthResultType" |
6714 | - minOccurs="1" maxOccurs="1"/> |
6715 | - </xs:sequence> |
6716 | - </xs:complexType> |
6717 | - |
6718 | - <xs:complexType name="ExtensionType"> |
6719 | - <xs:sequence> |
6720 | - <xs:element name="extension" type="xs:string" |
6721 | - minOccurs="0" maxOccurs="1"/> |
6722 | - <xs:sequence minOccurs="1" maxOccurs="1"> |
6723 | - <xs:attribute name="name" use="required"/> |
6724 | - <xs:attribute name="definition" use="required"/> |
6725 | - </xs:sequence> |
6726 | - </xs:sequence> |
6727 | - </xs:complexType> |
6728 | - |
6729 | - |
6730 | - <!-- |
6731 | - version: Version of the report format |
6732 | - --> |
6733 | - <!-- Parent --> |
6734 | - <xs:element name="feedback"> |
6735 | - <xs:complexType> |
6736 | - <xs:sequence> |
6737 | - <xs:element name="version" |
6738 | - minOccurs="0" maxOccurs="1" type="xs:decimal"/> |
6739 | - <xs:element name="report_metadata" |
6740 | - minOccurs="1" maxOccurs="1" |
6741 | - type="ReportMetadataType"/> |
6742 | - <xs:element name="policy_published" |
6743 | - minOccurs="1" maxOccurs="1" |
6744 | - type="PolicyPublishedType"/> |
6745 | - <xs:element name="record" type="RecordType" |
6746 | - minOccurs="1" maxOccurs="unbounded"/> |
6747 | - <xs:element name="extensions" type="ExtensionType" |
6748 | - minOccurs="0" maxOccurs="unbounded"/> |
6749 | - </xs:sequence> |
6750 | - </xs:complexType> |
6751 | - </xs:element> |
6752 | - </xs:schema> |
6753 | diff --git a/resources/schemas/dmarc-rfc7489.xsd b/resources/schemas/dmarc-rfc7489.xsd |
6754 | deleted file mode 100644 |
6755 | index 47f5c5b..0000000 |
6756 | --- a/resources/schemas/dmarc-rfc7489.xsd |
6757 | +++ /dev/null |
6758 | @@ -1,263 +0,0 @@ |
6759 | - <?xml version="1.0"?> |
6760 | - <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" |
6761 | - targetNamespace="http://dmarc.org/dmarc-xml/0.1"> |
6762 | - |
6763 | - <!-- The time range in UTC covered by messages in this report, |
6764 | - specified in seconds since epoch. --> |
6765 | - <xs:complexType name="DateRangeType"> |
6766 | - <xs:all> |
6767 | - <xs:element name="begin" type="xs:integer"/> |
6768 | - <xs:element name="end" type="xs:integer"/> |
6769 | - </xs:all> |
6770 | - </xs:complexType> |
6771 | - |
6772 | - <!-- Report generator metadata. --> |
6773 | - <xs:complexType name="ReportMetadataType"> |
6774 | - <xs:sequence> |
6775 | - <xs:element name="org_name" type="xs:string"/> |
6776 | - <xs:element name="email" type="xs:string"/> |
6777 | - <xs:element name="extra_contact_info" type="xs:string" |
6778 | - minOccurs="0"/> |
6779 | - <xs:element name="report_id" type="xs:string"/> |
6780 | - <xs:element name="date_range" type="DateRangeType"/> |
6781 | - <xs:element name="error" type="xs:string" minOccurs="0" |
6782 | - maxOccurs="unbounded"/> |
6783 | - </xs:sequence> |
6784 | - </xs:complexType> |
6785 | - |
6786 | - <!-- Alignment mode (relaxed or strict) for DKIM and SPF. --> |
6787 | - <xs:simpleType name="AlignmentType"> |
6788 | - <xs:restriction base="xs:string"> |
6789 | - <xs:enumeration value="r"/> |
6790 | - <xs:enumeration value="s"/> |
6791 | - </xs:restriction> |
6792 | - </xs:simpleType> |
6793 | - |
6794 | - <!-- The policy actions specified by p and sp in the |
6795 | - DMARC record. --> |
6796 | - <xs:simpleType name="DispositionType"> |
6797 | - <xs:restriction base="xs:string"> |
6798 | - <xs:enumeration value="none"/> |
6799 | - <xs:enumeration value="quarantine"/> |
6800 | - <xs:enumeration value="reject"/> |
6801 | - </xs:restriction> |
6802 | - </xs:simpleType> |
6803 | - |
6804 | - <!-- The DMARC policy that applied to the messages in |
6805 | - this report. --> |
6806 | - <xs:complexType name="PolicyPublishedType"> |
6807 | - <xs:all> |
6808 | - <!-- The domain at which the DMARC record was found. --> |
6809 | - <xs:element name="domain" type="xs:string"/> |
6810 | - <!-- The DKIM alignment mode. --> |
6811 | - <xs:element name="adkim" type="AlignmentType" |
6812 | - minOccurs="0"/> |
6813 | - <!-- The SPF alignment mode. --> |
6814 | - <xs:element name="aspf" type="AlignmentType" |
6815 | - minOccurs="0"/> |
6816 | - <!-- The policy to apply to messages from the domain. --> |
6817 | - <xs:element name="p" type="DispositionType"/> |
6818 | - <!-- The policy to apply to messages from subdomains. --> |
6819 | - <xs:element name="sp" type="DispositionType"/> |
6820 | - <!-- The percent of messages to which policy applies. --> |
6821 | - <xs:element name="pct" type="xs:integer"/> |
6822 | - <!-- Failure reporting options in effect. --> |
6823 | - <xs:element name="fo" type="xs:string"/> |
6824 | - </xs:all> |
6825 | - </xs:complexType> |
6826 | - |
6827 | - <!-- The DMARC-aligned authentication result. --> |
6828 | - <xs:simpleType name="DMARCResultType"> |
6829 | - <xs:restriction base="xs:string"> |
6830 | - <xs:enumeration value="pass"/> |
6831 | - <xs:enumeration value="fail"/> |
6832 | - </xs:restriction> |
6833 | - </xs:simpleType> |
6834 | - |
6835 | - <!-- Reasons that may affect DMARC disposition or execution |
6836 | - thereof. --> |
6837 | - <xs:simpleType name="PolicyOverrideType"> |
6838 | - <xs:restriction base="xs:string"> |
6839 | - <xs:enumeration value="forwarded"/> |
6840 | - <xs:enumeration value="sampled_out"/> |
6841 | - <xs:enumeration value="trusted_forwarder"/> |
6842 | - <xs:enumeration value="mailing_list"/> |
6843 | - <xs:enumeration value="local_policy"/> |
6844 | - <xs:enumeration value="other"/> |
6845 | - </xs:restriction> |
6846 | - </xs:simpleType> |
6847 | - |
6848 | - <!-- How do we allow report generators to include new |
6849 | - classes of override reasons if they want to be more |
6850 | - specific than "other"? --> |
6851 | - <xs:complexType name="PolicyOverrideReason"> |
6852 | - <xs:all> |
6853 | - <xs:element name="type" type="PolicyOverrideType"/> |
6854 | - <xs:element name="comment" type="xs:string" |
6855 | - minOccurs="0"/> |
6856 | - </xs:all> |
6857 | - </xs:complexType> |
6858 | - |
6859 | - <!-- Taking into account everything else in the record, |
6860 | - the results of applying DMARC. --> |
6861 | - <xs:complexType name="PolicyEvaluatedType"> |
6862 | - <xs:sequence> |
6863 | - <xs:element name="disposition" type="DispositionType"/> |
6864 | - <xs:element name="dkim" type="DMARCResultType"/> |
6865 | - <xs:element name="spf" type="DMARCResultType"/> |
6866 | - <xs:element name="reason" type="PolicyOverrideReason" |
6867 | - minOccurs="0" maxOccurs="unbounded"/> |
6868 | - </xs:sequence> |
6869 | - </xs:complexType> |
6870 | - <!-- Credit to Roger L. Costello for IPv4 regex |
6871 | - http://mailman.ic.ac.uk/pipermail/xml-dev/1999-December/ |
6872 | - 018018.html --> |
6873 | - <!-- Credit to java2s.com for IPv6 regex |
6874 | - http://www.java2s.com/Code/XML/XML-Schema/ |
6875 | - IPv6addressesareeasiertodescribeusingasimpleregex.htm --> |
6876 | - <xs:simpleType name="IPAddress"> |
6877 | - <xs:restriction base="xs:string"> |
6878 | - <xs:pattern value="((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]).){3} |
6879 | - (1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])| |
6880 | - ([A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}"/> |
6881 | - </xs:restriction> |
6882 | - </xs:simpleType> |
6883 | - |
6884 | - <xs:complexType name="RowType"> |
6885 | - <xs:all> |
6886 | - <!-- The connecting IP. --> |
6887 | - <xs:element name="source_ip" type="IPAddress"/> |
6888 | - <!-- The number of matching messages. --> |
6889 | - <xs:element name="count" type="xs:integer"/> |
6890 | - <!-- The DMARC disposition applying to matching |
6891 | - messages. --> |
6892 | - <xs:element name="policy_evaluated" |
6893 | - type="PolicyEvaluatedType" |
6894 | - minOccurs="1"/> |
6895 | - </xs:all> |
6896 | - </xs:complexType> |
6897 | - |
6898 | - <xs:complexType name="IdentifierType"> |
6899 | - <xs:all> |
6900 | - <!-- The envelope recipient domain. --> |
6901 | - <xs:element name="envelope_to" type="xs:string" |
6902 | - minOccurs="0"/> |
6903 | - <!-- The RFC5321.MailFrom domain. --> |
6904 | - <xs:element name="envelope_from" type="xs:string" |
6905 | - minOccurs="1"/> |
6906 | - <!-- The RFC5322.From domain. --> |
6907 | - <xs:element name="header_from" type="xs:string" |
6908 | - minOccurs="1"/> |
6909 | - </xs:all> |
6910 | - </xs:complexType> |
6911 | - |
6912 | - <!-- DKIM verification result, according to RFC 7001 |
6913 | - Section 2.6.1. --> |
6914 | - <xs:simpleType name="DKIMResultType"> |
6915 | - <xs:restriction base="xs:string"> |
6916 | - <xs:enumeration value="none"/> |
6917 | - <xs:enumeration value="pass"/> |
6918 | - <xs:enumeration value="fail"/> |
6919 | - <xs:enumeration value="policy"/> |
6920 | - <xs:enumeration value="neutral"/> |
6921 | - <xs:enumeration value="temperror"/> |
6922 | - <xs:enumeration value="permerror"/> |
6923 | - </xs:restriction> |
6924 | - </xs:simpleType> |
6925 | - |
6926 | - <xs:complexType name="DKIMAuthResultType"> |
6927 | - <xs:all> |
6928 | - <!-- The "d=" parameter in the signature. --> |
6929 | - <xs:element name="domain" type="xs:string" |
6930 | - minOccurs="1"/> |
6931 | - <!-- The "s=" parameter in the signature. --> |
6932 | - <xs:element name="selector" type="xs:string" |
6933 | - minOccurs="0"/> |
6934 | - <!-- The DKIM verification result. --> |
6935 | - <xs:element name="result" type="DKIMResultType" |
6936 | - minOccurs="1"/> |
6937 | - <!-- Any extra information (e.g., from |
6938 | - Authentication-Results). --> |
6939 | - <xs:element name="human_result" type="xs:string" |
6940 | - minOccurs="0"/> |
6941 | - </xs:all> |
6942 | - </xs:complexType> |
6943 | - |
6944 | - <!-- SPF domain scope. --> |
6945 | - <xs:simpleType name="SPFDomainScope"> |
6946 | - <xs:restriction base="xs:string"> |
6947 | - <xs:enumeration value="helo"/> |
6948 | - <xs:enumeration value="mfrom"/> |
6949 | - </xs:restriction> |
6950 | - </xs:simpleType> |
6951 | - |
6952 | - <!-- SPF result. --> |
6953 | - <xs:simpleType name="SPFResultType"> |
6954 | - <xs:restriction base="xs:string"> |
6955 | - <xs:enumeration value="none"/> |
6956 | - <xs:enumeration value="neutral"/> |
6957 | - <xs:enumeration value="pass"/> |
6958 | - <xs:enumeration value="fail"/> |
6959 | - <xs:enumeration value="softfail"/> |
6960 | - <!-- "TempError" commonly implemented as "unknown". --> |
6961 | - <xs:enumeration value="temperror"/> |
6962 | - <!-- "PermError" commonly implemented as "error". --> |
6963 | - <xs:enumeration value="permerror"/> |
6964 | - </xs:restriction> |
6965 | - </xs:simpleType> |
6966 | - |
6967 | - <xs:complexType name="SPFAuthResultType"> |
6968 | - <xs:all> |
6969 | - <!-- The checked domain. --> |
6970 | - <xs:element name="domain" type="xs:string" minOccurs="1"/> |
6971 | - <!-- The scope of the checked domain. --> |
6972 | - <xs:element name="scope" type="SPFDomainScope" minOccurs="1"/> |
6973 | - <!-- The SPF verification result. --> |
6974 | - <xs:element name="result" type="SPFResultType" |
6975 | - minOccurs="1"/> |
6976 | - </xs:all> |
6977 | - </xs:complexType> |
6978 | - |
6979 | - <!-- This element contains DKIM and SPF results, uninterpreted |
6980 | - with respect to DMARC. --> |
6981 | - <xs:complexType name="AuthResultType"> |
6982 | - <xs:sequence> |
6983 | - <!-- There may be no DKIM signatures, or multiple DKIM |
6984 | - signatures. --> |
6985 | - <xs:element name="dkim" type="DKIMAuthResultType" |
6986 | - minOccurs="0" maxOccurs="unbounded"/> |
6987 | - <!-- There will always be at least one SPF result. --> |
6988 | - <xs:element name="spf" type="SPFAuthResultType" minOccurs="1" |
6989 | - maxOccurs="unbounded"/> |
6990 | - </xs:sequence> |
6991 | - </xs:complexType> |
6992 | - |
6993 | - <!-- This element contains all the authentication results that |
6994 | - were evaluated by the receiving system for the given set of |
6995 | - messages. --> |
6996 | - <xs:complexType name="RecordType"> |
6997 | - <xs:sequence> |
6998 | - <xs:element name="row" type="RowType"/> |
6999 | - <xs:element name="identifiers" type="IdentifierType"/> |
7000 | - <xs:element name="auth_results" type="AuthResultType"/> |
7001 | - </xs:sequence> |
7002 | - </xs:complexType> |
7003 | - |
7004 | - <!-- Parent --> |
7005 | - <xs:element name="feedback"> |
7006 | - <xs:complexType> |
7007 | - <xs:sequence> |
7008 | - <xs:element name="version" |
7009 | - type="xs:decimal"/> |
7010 | - <xs:element name="report_metadata" |
7011 | - type="ReportMetadataType"/> |
7012 | - <xs:element name="policy_published" |
7013 | - type="PolicyPublishedType"/> |
7014 | - <xs:element name="record" type="RecordType" |
7015 | - maxOccurs="unbounded"/> |
7016 | - </xs:sequence> |
7017 | - </xs:complexType> |
7018 | - </xs:element> |
7019 | - </xs:schema> |
7020 | - |
7021 | - |
7022 | diff --git a/src/arc/headers.rs b/src/arc/headers.rs |
7023 | index 81842ce..15c6515 100644 |
7024 | --- a/src/arc/headers.rs |
7025 | +++ b/src/arc/headers.rs |
7026 | @@ -1,3 +1,13 @@ |
7027 | + /* |
7028 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7029 | + * |
7030 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7031 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7032 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7033 | + * option. This file may not be copied, modified, or distributed |
7034 | + * except according to those terms. |
7035 | + */ |
7036 | + |
7037 | use std::io::Write; |
7038 | |
7039 | use crate::{ |
7040 | diff --git a/src/arc/mod.rs b/src/arc/mod.rs |
7041 | index b905e18..ed4485a 100644 |
7042 | --- a/src/arc/mod.rs |
7043 | +++ b/src/arc/mod.rs |
7044 | @@ -1,3 +1,13 @@ |
7045 | + /* |
7046 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7047 | + * |
7048 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7049 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7050 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7051 | + * option. This file may not be copied, modified, or distributed |
7052 | + * except according to those terms. |
7053 | + */ |
7054 | + |
7055 | pub mod headers; |
7056 | pub mod parse; |
7057 | pub mod seal; |
7058 | @@ -12,7 +22,7 @@ use crate::{ |
7059 | }; |
7060 | |
7061 | #[derive(Debug, PartialEq, Eq, Clone, Default)] |
7062 | - pub(crate) struct Signature<'x> { |
7063 | + pub struct Signature<'x> { |
7064 | pub(crate) i: u32, |
7065 | pub(crate) a: Algorithm, |
7066 | pub(crate) d: Cow<'x, str>, |
7067 | @@ -29,7 +39,7 @@ pub(crate) struct Signature<'x> { |
7068 | } |
7069 | |
7070 | #[derive(Debug, PartialEq, Eq, Clone, Default)] |
7071 | - pub(crate) struct Seal<'x> { |
7072 | + pub struct Seal<'x> { |
7073 | pub(crate) i: u32, |
7074 | pub(crate) a: Algorithm, |
7075 | pub(crate) b: Vec<u8>, |
7076 | @@ -40,7 +50,7 @@ pub(crate) struct Seal<'x> { |
7077 | } |
7078 | |
7079 | #[derive(Debug, PartialEq, Eq, Clone)] |
7080 | - pub(crate) struct Results { |
7081 | + pub struct Results { |
7082 | pub(crate) i: u32, |
7083 | } |
7084 | |
7085 | diff --git a/src/arc/parse.rs b/src/arc/parse.rs |
7086 | index 858f9a6..8089ded 100644 |
7087 | --- a/src/arc/parse.rs |
7088 | +++ b/src/arc/parse.rs |
7089 | @@ -1,3 +1,13 @@ |
7090 | + /* |
7091 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7092 | + * |
7093 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7094 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7095 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7096 | + * option. This file may not be copied, modified, or distributed |
7097 | + * except according to those terms. |
7098 | + */ |
7099 | + |
7100 | use mail_parser::decoders::base64::base64_decode_stream; |
7101 | |
7102 | use crate::{ |
7103 | diff --git a/src/arc/seal.rs b/src/arc/seal.rs |
7104 | index e7b727e..d60aa39 100644 |
7105 | --- a/src/arc/seal.rs |
7106 | +++ b/src/arc/seal.rs |
7107 | @@ -1,3 +1,13 @@ |
7108 | + /* |
7109 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7110 | + * |
7111 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7112 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7113 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7114 | + * option. This file may not be copied, modified, or distributed |
7115 | + * except according to those terms. |
7116 | + */ |
7117 | + |
7118 | use std::{borrow::Cow, io::Write, time::SystemTime}; |
7119 | |
7120 | use ed25519_dalek::Signer; |
7121 | diff --git a/src/arc/verify.rs b/src/arc/verify.rs |
7122 | index 05fa9d2..db793d3 100644 |
7123 | --- a/src/arc/verify.rs |
7124 | +++ b/src/arc/verify.rs |
7125 | @@ -1,3 +1,13 @@ |
7126 | + /* |
7127 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7128 | + * |
7129 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7130 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7131 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7132 | + * option. This file may not be copied, modified, or distributed |
7133 | + * except according to those terms. |
7134 | + */ |
7135 | + |
7136 | use std::time::SystemTime; |
7137 | |
7138 | use sha1::Sha1; |
7139 | diff --git a/src/common/auth_results.rs b/src/common/auth_results.rs |
7140 | index ca7575e..301b728 100644 |
7141 | --- a/src/common/auth_results.rs |
7142 | +++ b/src/common/auth_results.rs |
7143 | @@ -1,3 +1,13 @@ |
7144 | + /* |
7145 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7146 | + * |
7147 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7148 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7149 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7150 | + * option. This file may not be copied, modified, or distributed |
7151 | + * except according to those terms. |
7152 | + */ |
7153 | + |
7154 | use std::{borrow::Cow, fmt::Write, net::IpAddr}; |
7155 | |
7156 | use mail_builder::encoders::base64::base64_encode; |
7157 | diff --git a/src/common/base32.rs b/src/common/base32.rs |
7158 | index f240f51..0e8fbca 100644 |
7159 | --- a/src/common/base32.rs |
7160 | +++ b/src/common/base32.rs |
7161 | @@ -1,3 +1,13 @@ |
7162 | + /* |
7163 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7164 | + * |
7165 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7166 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7167 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7168 | + * option. This file may not be copied, modified, or distributed |
7169 | + * except according to those terms. |
7170 | + */ |
7171 | + |
7172 | pub(crate) static BASE32_ALPHABET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; |
7173 | |
7174 | pub(crate) struct Base32Writer { |
7175 | diff --git a/src/common/headers.rs b/src/common/headers.rs |
7176 | index aa5009d..ff45eaa 100644 |
7177 | --- a/src/common/headers.rs |
7178 | +++ b/src/common/headers.rs |
7179 | @@ -1,3 +1,13 @@ |
7180 | + /* |
7181 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7182 | + * |
7183 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7184 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7185 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7186 | + * option. This file may not be copied, modified, or distributed |
7187 | + * except according to those terms. |
7188 | + */ |
7189 | + |
7190 | use std::{ |
7191 | io::Write, |
7192 | iter::{Enumerate, Peekable}, |
7193 | diff --git a/src/common/lru.rs b/src/common/lru.rs |
7194 | index afb3155..7462211 100644 |
7195 | --- a/src/common/lru.rs |
7196 | +++ b/src/common/lru.rs |
7197 | @@ -1,3 +1,13 @@ |
7198 | + /* |
7199 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7200 | + * |
7201 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7202 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7203 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7204 | + * option. This file may not be copied, modified, or distributed |
7205 | + * except according to those terms. |
7206 | + */ |
7207 | + |
7208 | use std::{borrow::Borrow, hash::Hash, time::Instant}; |
7209 | |
7210 | use parking_lot::Mutex; |
7211 | diff --git a/src/common/message.rs b/src/common/message.rs |
7212 | index ec53937..f5793b8 100644 |
7213 | --- a/src/common/message.rs |
7214 | +++ b/src/common/message.rs |
7215 | @@ -1,3 +1,13 @@ |
7216 | + /* |
7217 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7218 | + * |
7219 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7220 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7221 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7222 | + * option. This file may not be copied, modified, or distributed |
7223 | + * except according to those terms. |
7224 | + */ |
7225 | + |
7226 | use mail_parser::{parsers::MessageStream, HeaderValue}; |
7227 | use sha1::Sha1; |
7228 | use sha2::Sha256; |
7229 | diff --git a/src/common/mod.rs b/src/common/mod.rs |
7230 | index 30b7c8a..8ba3e43 100644 |
7231 | --- a/src/common/mod.rs |
7232 | +++ b/src/common/mod.rs |
7233 | @@ -1,3 +1,13 @@ |
7234 | + /* |
7235 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7236 | + * |
7237 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7238 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7239 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7240 | + * option. This file may not be copied, modified, or distributed |
7241 | + * except according to those terms. |
7242 | + */ |
7243 | + |
7244 | pub mod auth_results; |
7245 | pub mod base32; |
7246 | pub mod headers; |
7247 | diff --git a/src/common/parse.rs b/src/common/parse.rs |
7248 | index f54f744..0022afc 100644 |
7249 | --- a/src/common/parse.rs |
7250 | +++ b/src/common/parse.rs |
7251 | @@ -1,3 +1,13 @@ |
7252 | + /* |
7253 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7254 | + * |
7255 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7256 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7257 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7258 | + * option. This file may not be copied, modified, or distributed |
7259 | + * except according to those terms. |
7260 | + */ |
7261 | + |
7262 | use std::{borrow::Cow, slice::Iter}; |
7263 | |
7264 | use mail_parser::decoders::quoted_printable::quoted_printable_decode_char; |
7265 | @@ -23,7 +33,7 @@ pub(crate) const X: u64 = b'x' as u64; |
7266 | pub(crate) const Y: u64 = b'y' as u64; |
7267 | pub(crate) const Z: u64 = b'z' as u64; |
7268 | |
7269 | - pub(crate) trait TxtRecordParser: Sized { |
7270 | + pub trait TxtRecordParser: Sized { |
7271 | fn parse(record: &[u8]) -> crate::Result<Self>; |
7272 | } |
7273 | |
7274 | diff --git a/src/common/resolver.rs b/src/common/resolver.rs |
7275 | index a04454b..f4e05e1 100644 |
7276 | --- a/src/common/resolver.rs |
7277 | +++ b/src/common/resolver.rs |
7278 | @@ -1,3 +1,13 @@ |
7279 | + /* |
7280 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7281 | + * |
7282 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7283 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7284 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7285 | + * option. This file may not be copied, modified, or distributed |
7286 | + * except according to those terms. |
7287 | + */ |
7288 | + |
7289 | use std::{ |
7290 | borrow::Cow, |
7291 | net::{IpAddr, Ipv4Addr, Ipv6Addr}, |
7292 | @@ -13,7 +23,7 @@ use trust_dns_resolver::{ |
7293 | }; |
7294 | |
7295 | use crate::{ |
7296 | - dkim::{Atps, DomainKey}, |
7297 | + dkim::{Atps, DomainKey, DomainKeyReport}, |
7298 | dmarc::DMARC, |
7299 | spf::{Macro, SPF}, |
7300 | Error, Policy, Resolver, Txt, MX, |
7301 | @@ -334,6 +344,12 @@ impl From<DomainKey> for Txt { |
7302 | } |
7303 | } |
7304 | |
7305 | + impl From<DomainKeyReport> for Txt { |
7306 | + fn from(v: DomainKeyReport) -> Self { |
7307 | + Txt::DomainKeyReport(v.into()) |
7308 | + } |
7309 | + } |
7310 | + |
7311 | impl From<Atps> for Txt { |
7312 | fn from(v: Atps) -> Self { |
7313 | Txt::Atps(v.into()) |
7314 | @@ -381,6 +397,16 @@ impl UnwrapTxtRecord for DomainKey { |
7315 | } |
7316 | } |
7317 | |
7318 | + impl UnwrapTxtRecord for DomainKeyReport { |
7319 | + fn unwrap_txt(txt: Txt) -> crate::Result<Arc<Self>> { |
7320 | + match txt { |
7321 | + Txt::DomainKeyReport(a) => Ok(a), |
7322 | + Txt::Error(err) => Err(err), |
7323 | + _ => Err(Error::Io("Invalid record type".to_string())), |
7324 | + } |
7325 | + } |
7326 | + } |
7327 | + |
7328 | impl UnwrapTxtRecord for Atps { |
7329 | fn unwrap_txt(txt: Txt) -> crate::Result<Arc<Self>> { |
7330 | match txt { |
7331 | diff --git a/src/common/verify.rs b/src/common/verify.rs |
7332 | index cde5be3..e4a075e 100644 |
7333 | --- a/src/common/verify.rs |
7334 | +++ b/src/common/verify.rs |
7335 | @@ -1,3 +1,13 @@ |
7336 | + /* |
7337 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7338 | + * |
7339 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7340 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7341 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7342 | + * option. This file may not be copied, modified, or distributed |
7343 | + * except according to those terms. |
7344 | + */ |
7345 | + |
7346 | use rsa::PaddingScheme; |
7347 | use sha1::Sha1; |
7348 | use sha2::Sha256; |
7349 | diff --git a/src/dkim/canonicalize.rs b/src/dkim/canonicalize.rs |
7350 | index c905e0d..ef34159 100644 |
7351 | --- a/src/dkim/canonicalize.rs |
7352 | +++ b/src/dkim/canonicalize.rs |
7353 | @@ -1,6 +1,5 @@ |
7354 | /* |
7355 | - * Copyright Stalwart Labs Ltd. See the COPYING |
7356 | - * file at the top-level directory of this distribution. |
7357 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7358 | * |
7359 | * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7360 | * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7361 | diff --git a/src/dkim/headers.rs b/src/dkim/headers.rs |
7362 | index 616b170..08b1b0b 100644 |
7363 | --- a/src/dkim/headers.rs |
7364 | +++ b/src/dkim/headers.rs |
7365 | @@ -1,3 +1,13 @@ |
7366 | + /* |
7367 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7368 | + * |
7369 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7370 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7371 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7372 | + * option. This file may not be copied, modified, or distributed |
7373 | + * except according to those terms. |
7374 | + */ |
7375 | + |
7376 | use std::{ |
7377 | fmt::{Display, Formatter}, |
7378 | io::Write, |
7379 | diff --git a/src/dkim/mod.rs b/src/dkim/mod.rs |
7380 | index a4f69c2..f68671e 100644 |
7381 | --- a/src/dkim/mod.rs |
7382 | +++ b/src/dkim/mod.rs |
7383 | @@ -1,6 +1,5 @@ |
7384 | /* |
7385 | - * Copyright Stalwart Labs Ltd. See the COPYING |
7386 | - * file at the top-level directory of this distribution. |
7387 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7388 | * |
7389 | * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7390 | * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7391 | @@ -77,15 +76,15 @@ impl Default for Canonicalization { |
7392 | } |
7393 | |
7394 | #[derive(Debug, PartialEq, Eq, Clone)] |
7395 | - pub(crate) struct DomainKey { |
7396 | + pub struct DomainKey { |
7397 | pub(crate) v: Version, |
7398 | pub(crate) p: PublicKey, |
7399 | pub(crate) f: u64, |
7400 | } |
7401 | |
7402 | #[derive(Debug, PartialEq, Eq, Clone)] |
7403 | - pub(crate) struct Report { |
7404 | - pub(crate) ra: Option<String>, |
7405 | + pub struct DomainKeyReport { |
7406 | + pub(crate) ra: String, |
7407 | pub(crate) rp: u8, |
7408 | pub(crate) rr: u8, |
7409 | pub(crate) rs: Option<String>, |
7410 | @@ -249,6 +248,10 @@ impl<'x> DKIMOutput<'x> { |
7411 | pub fn signature(&self) -> Option<&Signature> { |
7412 | self.signature |
7413 | } |
7414 | + |
7415 | + pub fn failure_report_addr(&self) -> Option<&str> { |
7416 | + self.report.as_deref() |
7417 | + } |
7418 | } |
7419 | |
7420 | impl<'x> ARCOutput<'x> { |
7421 | diff --git a/src/dkim/parse.rs b/src/dkim/parse.rs |
7422 | index 614c550..f07345c 100644 |
7423 | --- a/src/dkim/parse.rs |
7424 | +++ b/src/dkim/parse.rs |
7425 | @@ -1,3 +1,13 @@ |
7426 | + /* |
7427 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7428 | + * |
7429 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7430 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7431 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7432 | + * option. This file may not be copied, modified, or distributed |
7433 | + * except according to those terms. |
7434 | + */ |
7435 | + |
7436 | use std::slice::Iter; |
7437 | |
7438 | use mail_parser::decoders::base64::base64_decode_stream; |
7439 | @@ -10,8 +20,8 @@ use crate::{ |
7440 | }; |
7441 | |
7442 | use super::{ |
7443 | - Algorithm, Atps, Canonicalization, DomainKey, Flag, HashAlgorithm, PublicKey, Report, Service, |
7444 | - Signature, Version, RR_DNS, RR_OTHER, RR_POLICY, |
7445 | + Algorithm, Atps, Canonicalization, DomainKey, DomainKeyReport, Flag, HashAlgorithm, PublicKey, |
7446 | + Service, Signature, Version, RR_DNS, RR_OTHER, RR_POLICY, |
7447 | }; |
7448 | |
7449 | const ATPSH: u64 = (b'a' as u64) |
7450 | @@ -312,12 +322,12 @@ impl TxtRecordParser for DomainKey { |
7451 | } |
7452 | } |
7453 | |
7454 | - impl TxtRecordParser for Report { |
7455 | + impl TxtRecordParser for DomainKeyReport { |
7456 | #[allow(clippy::while_let_on_iterator)] |
7457 | fn parse(header: &[u8]) -> crate::Result<Self> { |
7458 | let mut header = header.iter(); |
7459 | - let mut record = Report { |
7460 | - ra: None, |
7461 | + let mut record = DomainKeyReport { |
7462 | + ra: String::new(), |
7463 | rp: 100, |
7464 | rr: u8::MAX, |
7465 | rs: None, |
7466 | @@ -326,7 +336,7 @@ impl TxtRecordParser for Report { |
7467 | while let Some(key) = header.key() { |
7468 | match key { |
7469 | RA => { |
7470 | - record.ra = header.text_qp(true).into(); |
7471 | + record.ra = header.text_qp(true); |
7472 | } |
7473 | RP => { |
7474 | record.rp = std::cmp::min(header.number().unwrap_or(0), 100) as u8; |
7475 | @@ -378,7 +388,7 @@ impl TxtRecordParser for Report { |
7476 | } |
7477 | } |
7478 | |
7479 | - if record.ra.is_some() { |
7480 | + if !record.ra.is_empty() { |
7481 | Ok(record) |
7482 | } else { |
7483 | Err(Error::InvalidRecordType) |
7484 | @@ -471,10 +481,10 @@ mod test { |
7485 | use crate::{ |
7486 | common::parse::TxtRecordParser, |
7487 | dkim::{ |
7488 | - Algorithm, Canonicalization, DomainKey, PublicKey, Report, Signature, Version, RR_DNS, |
7489 | - RR_EXPIRATION, RR_OTHER, RR_POLICY, RR_SIGNATURE, RR_UNKNOWN_TAG, RR_VERIFICATION, |
7490 | - R_FLAG_MATCH_DOMAIN, R_FLAG_TESTING, R_HASH_SHA1, R_HASH_SHA256, R_SVC_ALL, |
7491 | - R_SVC_EMAIL, |
7492 | + Algorithm, Canonicalization, DomainKey, DomainKeyReport, PublicKey, Signature, Version, |
7493 | + RR_DNS, RR_EXPIRATION, RR_OTHER, RR_POLICY, RR_SIGNATURE, RR_UNKNOWN_TAG, |
7494 | + RR_VERIFICATION, R_FLAG_MATCH_DOMAIN, R_FLAG_TESTING, R_HASH_SHA1, R_HASH_SHA256, |
7495 | + R_SVC_ALL, R_SVC_EMAIL, |
7496 | }, |
7497 | }; |
7498 | |
7499 | @@ -743,8 +753,8 @@ mod test { |
7500 | for (record, expected_result) in [ |
7501 | ( |
7502 | "ra=dkim-errors; rp=97; rr=v:x", |
7503 | - Report { |
7504 | - ra: "dkim-errors".to_string().into(), |
7505 | + DomainKeyReport { |
7506 | + ra: "dkim-errors".to_string(), |
7507 | rp: 97, |
7508 | rr: RR_VERIFICATION | RR_EXPIRATION, |
7509 | rs: None, |
7510 | @@ -752,8 +762,8 @@ mod test { |
7511 | ), |
7512 | ( |
7513 | "ra=postmaster; rp=1; rr=d:o:p:s:u:v:x; rs=Error=20Message;", |
7514 | - Report { |
7515 | - ra: "postmaster".to_string().into(), |
7516 | + DomainKeyReport { |
7517 | + ra: "postmaster".to_string(), |
7518 | rp: 1, |
7519 | rr: RR_DNS |
7520 | | RR_OTHER |
7521 | @@ -766,7 +776,10 @@ mod test { |
7522 | }, |
7523 | ), |
7524 | ] { |
7525 | - assert_eq!(Report::parse(record.as_bytes()).unwrap(), expected_result); |
7526 | + assert_eq!( |
7527 | + DomainKeyReport::parse(record.as_bytes()).unwrap(), |
7528 | + expected_result |
7529 | + ); |
7530 | } |
7531 | } |
7532 | } |
7533 | diff --git a/src/dkim/sign.rs b/src/dkim/sign.rs |
7534 | index 360d114..4bd6c99 100644 |
7535 | --- a/src/dkim/sign.rs |
7536 | +++ b/src/dkim/sign.rs |
7537 | @@ -1,6 +1,5 @@ |
7538 | /* |
7539 | - * Copyright Stalwart Labs Ltd. See the COPYING |
7540 | - * file at the top-level directory of this distribution. |
7541 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7542 | * |
7543 | * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7544 | * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7545 | @@ -218,8 +217,8 @@ mod test { |
7546 | |
7547 | use crate::{ |
7548 | common::parse::TxtRecordParser, |
7549 | - dkim::{Atps, Canonicalization, DomainKey, HashAlgorithm, Signature}, |
7550 | - AuthenticatedMessage, DKIMResult, PrivateKey, Resolver, |
7551 | + dkim::{Atps, Canonicalization, DomainKey, DomainKeyReport, HashAlgorithm, Signature}, |
7552 | + AuthenticatedMessage, DKIMOutput, DKIMResult, PrivateKey, Resolver, |
7553 | }; |
7554 | |
7555 | const RSA_PRIVATE_KEY: &str = r#"-----BEGIN RSA PRIVATE KEY----- |
7556 | @@ -315,8 +314,27 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7557 | ) |
7558 | .unwrap(); |
7559 | |
7560 | + // Create resolver |
7561 | + let resolver = Resolver::new_system_conf().unwrap(); |
7562 | + resolver.txt_add( |
7563 | + "default._domainkey.example.com.".to_string(), |
7564 | + DomainKey::parse(RSA_PUBLIC_KEY.as_bytes()).unwrap(), |
7565 | + Instant::now() + Duration::new(3600, 0), |
7566 | + ); |
7567 | + resolver.txt_add( |
7568 | + "ed._domainkey.example.com.".to_string(), |
7569 | + DomainKey::parse(ED25519_PUBLIC_KEY.as_bytes()).unwrap(), |
7570 | + Instant::now() + Duration::new(3600, 0), |
7571 | + ); |
7572 | + resolver.txt_add( |
7573 | + "_report._domainkey.example.com.".to_string(), |
7574 | + DomainKeyReport::parse("ra=dkim-failures; rp=100; rr=x".as_bytes()).unwrap(), |
7575 | + Instant::now() + Duration::new(3600, 0), |
7576 | + ); |
7577 | + |
7578 | // Test RSA-SHA256 relaxed/relaxed |
7579 | verify( |
7580 | + &resolver, |
7581 | Signature::new() |
7582 | .headers(["From", "To", "Subject"]) |
7583 | .domain("example.com") |
7584 | @@ -325,29 +343,27 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7585 | .sign(message.as_bytes(), &pk_rsa) |
7586 | .unwrap(), |
7587 | message, |
7588 | - RSA_PUBLIC_KEY, |
7589 | - "", |
7590 | Ok(()), |
7591 | ) |
7592 | .await; |
7593 | |
7594 | // Test ED25519-SHA256 relaxed/relaxed |
7595 | verify( |
7596 | + &resolver, |
7597 | Signature::new() |
7598 | .headers(["From", "To", "Subject"]) |
7599 | .domain("example.com") |
7600 | - .selector("default") |
7601 | + .selector("ed") |
7602 | .sign(message.as_bytes(), &pk_ed) |
7603 | .unwrap(), |
7604 | message, |
7605 | - ED25519_PUBLIC_KEY, |
7606 | - "", |
7607 | Ok(()), |
7608 | ) |
7609 | .await; |
7610 | |
7611 | // Test RSA-SHA256 simple/simple with duplicated headers |
7612 | verify( |
7613 | + &resolver, |
7614 | Signature::new() |
7615 | .headers([ |
7616 | "From", |
7617 | @@ -363,14 +379,13 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7618 | .sign(message_multiheader.as_bytes(), &pk_rsa) |
7619 | .unwrap(), |
7620 | message_multiheader, |
7621 | - RSA_PUBLIC_KEY, |
7622 | - "", |
7623 | Ok(()), |
7624 | ) |
7625 | .await; |
7626 | |
7627 | // Test RSA-SHA256 simple/relaxed with fixed body length |
7628 | verify( |
7629 | + &resolver, |
7630 | Signature::new() |
7631 | .headers(["From", "To", "Subject"]) |
7632 | .domain("example.com") |
7633 | @@ -380,14 +395,13 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7634 | .sign(message.as_bytes(), &pk_rsa) |
7635 | .unwrap(), |
7636 | &(message.to_string() + "\r\n----- Mailing list"), |
7637 | - RSA_PUBLIC_KEY, |
7638 | - "", |
7639 | Ok(()), |
7640 | ) |
7641 | .await; |
7642 | |
7643 | // Test AUID not matching domain |
7644 | verify( |
7645 | + &resolver, |
7646 | Signature::new() |
7647 | .headers(["From", "To", "Subject"]) |
7648 | .domain("example.com") |
7649 | @@ -396,30 +410,33 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7650 | .sign(message.as_bytes(), &pk_rsa) |
7651 | .unwrap(), |
7652 | message, |
7653 | - RSA_PUBLIC_KEY, |
7654 | - "", |
7655 | Err(super::Error::FailedAUIDMatch), |
7656 | ) |
7657 | .await; |
7658 | |
7659 | - // Test expired signature |
7660 | - verify( |
7661 | + // Test expired signature and reporting |
7662 | + let r = verify( |
7663 | + &resolver, |
7664 | Signature::new() |
7665 | .headers(["From", "To", "Subject"]) |
7666 | .domain("example.com") |
7667 | .selector("default") |
7668 | .expiration(12345) |
7669 | + .reporting(true) |
7670 | .sign_::<Sha256>(message.as_bytes(), &pk_rsa, 12345) |
7671 | .unwrap(), |
7672 | message, |
7673 | - RSA_PUBLIC_KEY, |
7674 | - "", |
7675 | Err(super::Error::SignatureExpired), |
7676 | ) |
7677 | - .await; |
7678 | + .await |
7679 | + .pop() |
7680 | + .unwrap() |
7681 | + .report; |
7682 | + assert_eq!(r.as_deref(), Some("dkim-failures@example.com")); |
7683 | |
7684 | // Verify ATPS (failure) |
7685 | verify( |
7686 | + &resolver, |
7687 | Signature::new() |
7688 | .headers(["From", "To", "Subject"]) |
7689 | .domain("example.com") |
7690 | @@ -429,14 +446,18 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7691 | .sign_::<Sha256>(message.as_bytes(), &pk_rsa, 12345) |
7692 | .unwrap(), |
7693 | message, |
7694 | - RSA_PUBLIC_KEY, |
7695 | - "", |
7696 | Err(super::Error::DNSRecordNotFound(ResponseCode::NXDomain)), |
7697 | ) |
7698 | .await; |
7699 | |
7700 | // Verify ATPS (success) |
7701 | + resolver.txt_add( |
7702 | + "UN42N5XOV642KXRXRQIYANHCOUPGQL5LT4WTBKYT2IJFLBWODFDQ._atps.example.com.".to_string(), |
7703 | + Atps::parse(b"v=ATPS1;").unwrap(), |
7704 | + Instant::now() + Duration::new(3600, 0), |
7705 | + ); |
7706 | verify( |
7707 | + &resolver, |
7708 | Signature::new() |
7709 | .headers(["From", "To", "Subject"]) |
7710 | .domain("example.com") |
7711 | @@ -446,14 +467,18 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7712 | .sign_::<Sha256>(message.as_bytes(), &pk_rsa, 12345) |
7713 | .unwrap(), |
7714 | message, |
7715 | - RSA_PUBLIC_KEY, |
7716 | - "UN42N5XOV642KXRXRQIYANHCOUPGQL5LT4WTBKYT2IJFLBWODFDQ._atps.example.com.", |
7717 | Ok(()), |
7718 | ) |
7719 | .await; |
7720 | |
7721 | // Verify ATPS (success - no hash) |
7722 | + resolver.txt_add( |
7723 | + "example.com._atps.example.com.".to_string(), |
7724 | + Atps::parse(b"v=ATPS1;").unwrap(), |
7725 | + Instant::now() + Duration::new(3600, 0), |
7726 | + ); |
7727 | verify( |
7728 | + &resolver, |
7729 | Signature::new() |
7730 | .headers(["From", "To", "Subject"]) |
7731 | .domain("example.com") |
7732 | @@ -462,38 +487,21 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7733 | .sign_::<Sha256>(message.as_bytes(), &pk_rsa, 12345) |
7734 | .unwrap(), |
7735 | message, |
7736 | - RSA_PUBLIC_KEY, |
7737 | - "example.com._atps.example.com.", |
7738 | Ok(()), |
7739 | ) |
7740 | .await; |
7741 | } |
7742 | |
7743 | - async fn verify( |
7744 | - signature: Signature<'_>, |
7745 | - message_: &str, |
7746 | - public_key: &str, |
7747 | - atps: &str, |
7748 | + async fn verify<'x>( |
7749 | + resolver: &Resolver, |
7750 | + signature: Signature<'x>, |
7751 | + message_: &'x str, |
7752 | expect: Result<(), super::Error>, |
7753 | - ) { |
7754 | + ) -> Vec<DKIMOutput<'x>> { |
7755 | let mut message = Vec::with_capacity(message_.len() + 100); |
7756 | signature.write(&mut message, true).unwrap(); |
7757 | message.extend_from_slice(message_.as_bytes()); |
7758 | - //println!("[{}]", String::from_utf8_lossy(&message)); |
7759 | |
7760 | - let resolver = Resolver::new_system_conf().unwrap(); |
7761 | - resolver.txt_add( |
7762 | - "default._domainkey.example.com.".to_string(), |
7763 | - DomainKey::parse(public_key.as_bytes()).unwrap(), |
7764 | - Instant::now() + Duration::new(3600, 0), |
7765 | - ); |
7766 | - if !atps.is_empty() { |
7767 | - resolver.txt_add( |
7768 | - atps.to_string(), |
7769 | - Atps::parse(b"v=ATPS1;").unwrap(), |
7770 | - Instant::now() + Duration::new(3600, 0), |
7771 | - ); |
7772 | - } |
7773 | let message = AuthenticatedMessage::parse(&message).unwrap(); |
7774 | let dkim = resolver.verify_dkim(&message).await; |
7775 | |
7776 | @@ -505,5 +513,14 @@ GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= |
7777 | ) if hdr == err => (), |
7778 | (result, expect) => panic!("Expected {:?} but got {:?}.", expect, result), |
7779 | } |
7780 | + |
7781 | + dkim.into_iter() |
7782 | + .map(|d| DKIMOutput { |
7783 | + result: d.result, |
7784 | + signature: None, |
7785 | + report: d.report, |
7786 | + is_atps: d.is_atps, |
7787 | + }) |
7788 | + .collect() |
7789 | } |
7790 | } |
7791 | diff --git a/src/dkim/verify.rs b/src/dkim/verify.rs |
7792 | index 6b22ad6..649a76c 100644 |
7793 | --- a/src/dkim/verify.rs |
7794 | +++ b/src/dkim/verify.rs |
7795 | @@ -1,3 +1,13 @@ |
7796 | + /* |
7797 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7798 | + * |
7799 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7800 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7801 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7802 | + * option. This file may not be copied, modified, or distributed |
7803 | + * except according to those terms. |
7804 | + */ |
7805 | + |
7806 | use std::{borrow::Cow, io::Write, time::SystemTime}; |
7807 | |
7808 | use sha1::{Digest, Sha1}; |
7809 | @@ -5,10 +15,13 @@ use sha2::Sha256; |
7810 | |
7811 | use crate::{ |
7812 | common::{base32::Base32Writer, verify::VerifySignature}, |
7813 | - AuthenticatedMessage, DKIMOutput, Error, Resolver, |
7814 | + is_within_pct, AuthenticatedMessage, DKIMOutput, DKIMResult, Error, Resolver, |
7815 | }; |
7816 | |
7817 | - use super::{Algorithm, Atps, DomainKey, Flag, HashAlgorithm, Signature}; |
7818 | + use super::{ |
7819 | + Algorithm, Atps, DomainKey, DomainKeyReport, Flag, HashAlgorithm, Signature, RR_DNS, |
7820 | + RR_EXPIRATION, RR_OTHER, RR_SIGNATURE, RR_VERIFICATION, |
7821 | + }; |
7822 | |
7823 | impl Resolver { |
7824 | /// Verifies DKIM headers of an RFC5322 message. |
7825 | @@ -33,12 +46,17 @@ impl Resolver { |
7826 | now: u64, |
7827 | ) -> Vec<DKIMOutput<'x>> { |
7828 | let mut output = Vec::with_capacity(message.dkim_headers.len()); |
7829 | + let mut report_requested = false; |
7830 | |
7831 | // Validate DKIM headers |
7832 | for header in &message.dkim_headers { |
7833 | // Validate body hash |
7834 | let signature = match &header.header { |
7835 | Ok(signature) => { |
7836 | + if signature.r { |
7837 | + report_requested = true; |
7838 | + } |
7839 | + |
7840 | if signature.x == 0 || (signature.x > signature.t && signature.x > now) { |
7841 | signature |
7842 | } else { |
7843 | @@ -157,6 +175,80 @@ impl Resolver { |
7844 | // Verification successful |
7845 | output.push(DKIMOutput::pass().with_signature(signature)); |
7846 | } |
7847 | + |
7848 | + // Handle reports |
7849 | + if report_requested { |
7850 | + for dkim in &mut output { |
7851 | + // Process signatures with errors that requested reports |
7852 | + let signature = if let Some(signature) = &dkim.signature { |
7853 | + if signature.r && dkim.result != DKIMResult::Pass { |
7854 | + signature |
7855 | + } else { |
7856 | + continue; |
7857 | + } |
7858 | + } else { |
7859 | + continue; |
7860 | + }; |
7861 | + |
7862 | + // Obtain ._domainkey TXT record |
7863 | + let record = if let Ok(record) = self |
7864 | + .txt_lookup::<DomainKeyReport>(format!("_report._domainkey.{}.", signature.d)) |
7865 | + .await |
7866 | + { |
7867 | + if is_within_pct(record.rp) { |
7868 | + record |
7869 | + } else { |
7870 | + continue; |
7871 | + } |
7872 | + } else { |
7873 | + continue; |
7874 | + }; |
7875 | + |
7876 | + // Set report address |
7877 | + dkim.report = match &dkim.result() { |
7878 | + DKIMResult::Neutral(err) |
7879 | + | DKIMResult::Fail(err) |
7880 | + | DKIMResult::PermError(err) |
7881 | + | DKIMResult::TempError(err) => { |
7882 | + let send_report = match err { |
7883 | + Error::CryptoError(_) |
7884 | + | Error::Io(_) |
7885 | + | Error::FailedVerification |
7886 | + | Error::FailedBodyHashMatch |
7887 | + | Error::FailedAUIDMatch => (record.rr & RR_VERIFICATION) != 0, |
7888 | + Error::Base64 |
7889 | + | Error::UnsupportedVersion |
7890 | + | Error::UnsupportedAlgorithm |
7891 | + | Error::UnsupportedCanonicalization |
7892 | + | Error::UnsupportedKeyType |
7893 | + | Error::IncompatibleAlgorithms => (record.rr & RR_SIGNATURE) != 0, |
7894 | + Error::SignatureExpired => (record.rr & RR_EXPIRATION) != 0, |
7895 | + Error::DNSError |
7896 | + | Error::DNSRecordNotFound(_) |
7897 | + | Error::InvalidRecordType |
7898 | + | Error::ParseError |
7899 | + | Error::RevokedPublicKey => (record.rr & RR_DNS) != 0, |
7900 | + Error::MissingParameters |
7901 | + | Error::NoHeadersFound |
7902 | + | Error::ARCChainTooLong |
7903 | + | Error::ARCInvalidInstance(_) |
7904 | + | Error::ARCInvalidCV |
7905 | + | Error::ARCHasHeaderTag |
7906 | + | Error::ARCBrokenChain |
7907 | + | Error::DMARCNotAligned => (record.rr & RR_OTHER) != 0, |
7908 | + }; |
7909 | + |
7910 | + if send_report { |
7911 | + format!("{}@{}", record.ra, signature.d).into() |
7912 | + } else { |
7913 | + None |
7914 | + } |
7915 | + } |
7916 | + DKIMResult::None | DKIMResult::Pass => None, |
7917 | + }; |
7918 | + } |
7919 | + } |
7920 | + |
7921 | output |
7922 | } |
7923 | } |
7924 | @@ -299,7 +391,7 @@ mod test { |
7925 | /*if !file_name.to_str().unwrap().contains("002") { |
7926 | continue; |
7927 | }*/ |
7928 | - println!("file {}", file_name.to_str().unwrap()); |
7929 | + println!("DKIM verifying {}", file_name.to_str().unwrap()); |
7930 | |
7931 | let test = String::from_utf8(fs::read(&file_name).unwrap()).unwrap(); |
7932 | let (dns_records, raw_message) = test.split_once("\n\n").unwrap(); |
7933 | diff --git a/src/dmarc/mod.rs b/src/dmarc/mod.rs |
7934 | index 5723446..291bc2f 100644 |
7935 | --- a/src/dmarc/mod.rs |
7936 | +++ b/src/dmarc/mod.rs |
7937 | @@ -1,3 +1,13 @@ |
7938 | + /* |
7939 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
7940 | + * |
7941 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
7942 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7943 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
7944 | + * option. This file may not be copied, modified, or distributed |
7945 | + * except according to those terms. |
7946 | + */ |
7947 | + |
7948 | use std::{fmt::Display, sync::Arc}; |
7949 | |
7950 | use crate::{DMARCOutput, DMARCResult, Error, Version}; |
7951 | @@ -25,8 +35,8 @@ pub struct DMARC { |
7952 | |
7953 | #[derive(Debug, Clone, PartialEq, Eq)] |
7954 | #[allow(clippy::upper_case_acronyms)] |
7955 | - pub(crate) struct URI { |
7956 | - uri: Vec<u8>, |
7957 | + pub struct URI { |
7958 | + uri: String, |
7959 | max_size: usize, |
7960 | } |
7961 | |
7962 | @@ -44,7 +54,7 @@ pub(crate) enum Psd { |
7963 | } |
7964 | |
7965 | #[derive(Debug, Clone, PartialEq, Eq)] |
7966 | - pub(crate) enum Report { |
7967 | + pub enum Report { |
7968 | All, |
7969 | Any, |
7970 | Dkim, |
7971 | @@ -53,7 +63,7 @@ pub(crate) enum Report { |
7972 | } |
7973 | |
7974 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] |
7975 | - pub(crate) enum Policy { |
7976 | + pub enum Policy { |
7977 | None, |
7978 | Quarantine, |
7979 | Reject, |
7980 | @@ -76,7 +86,7 @@ impl URI { |
7981 | #[cfg(test)] |
7982 | pub fn new(uri: impl Into<String>, max_size: usize) -> Self { |
7983 | URI { |
7984 | - uri: uri.into().into_bytes(), |
7985 | + uri: uri.into(), |
7986 | max_size, |
7987 | } |
7988 | } |
7989 | @@ -124,6 +134,56 @@ impl DMARCOutput { |
7990 | self.record = record.into(); |
7991 | self |
7992 | } |
7993 | + |
7994 | + pub fn domain(&self) -> &str { |
7995 | + &self.domain |
7996 | + } |
7997 | + |
7998 | + pub fn policy(&self) -> Policy { |
7999 | + self.policy |
8000 | + } |
8001 | + |
8002 | + pub fn dkim_result(&self) -> &DMARCResult { |
8003 | + &self.dkim_result |
8004 | + } |
8005 | + |
8006 | + pub fn spf_result(&self) -> &DMARCResult { |
8007 | + &self.spf_result |
8008 | + } |
8009 | + |
8010 | + pub fn dmarc_record(&self) -> Option<&DMARC> { |
8011 | + self.record.as_deref() |
8012 | + } |
8013 | + |
8014 | + /// Returns the failure reporting options |
8015 | + pub fn failure_report(&self) -> Option<Report> { |
8016 | + // Send failure reports |
8017 | + match &self.record { |
8018 | + Some(record) |
8019 | + if !record.ruf.is_empty() |
8020 | + && (self.dkim_result != DMARCResult::Pass |
8021 | + && matches!(record.fo, Report::Any | Report::Dkim | Report::DkimSpf)) |
8022 | + || (self.spf_result != DMARCResult::Pass |
8023 | + && matches!(record.fo, Report::Any | Report::Spf | Report::DkimSpf)) |
8024 | + || (self.dkim_result != DMARCResult::Pass |
8025 | + && self.spf_result != DMARCResult::Pass |
8026 | + && record.fo == Report::All) => |
8027 | + { |
8028 | + Some(record.fo.clone()) |
8029 | + } |
8030 | + _ => None, |
8031 | + } |
8032 | + } |
8033 | + } |
8034 | + |
8035 | + impl DMARC { |
8036 | + pub fn ruf(&self) -> &[URI] { |
8037 | + &self.ruf |
8038 | + } |
8039 | + |
8040 | + pub fn rua(&self) -> &[URI] { |
8041 | + &self.rua |
8042 | + } |
8043 | } |
8044 | |
8045 | impl Display for Policy { |
8046 | diff --git a/src/dmarc/parse.rs b/src/dmarc/parse.rs |
8047 | index 8bcdde5..7fd2e5f 100644 |
8048 | --- a/src/dmarc/parse.rs |
8049 | +++ b/src/dmarc/parse.rs |
8050 | @@ -1,3 +1,13 @@ |
8051 | + /* |
8052 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8053 | + * |
8054 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8055 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8056 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8057 | + * option. This file may not be copied, modified, or distributed |
8058 | + * except according to those terms. |
8059 | + */ |
8060 | + |
8061 | use std::slice::Iter; |
8062 | |
8063 | use mail_parser::decoders::quoted_printable::quoted_printable_decode_char; |
8064 | @@ -168,6 +178,8 @@ impl DMARCParser for Iter<'_, u8> { |
8065 | fn uris(&mut self) -> crate::Result<Vec<URI>> { |
8066 | let mut uris = Vec::new(); |
8067 | let mut uri = Vec::with_capacity(16); |
8068 | + let mut found_uri = false; |
8069 | + let mut found_at = false; |
8070 | let mut size: usize = 0; |
8071 | |
8072 | 'outer: while let Some(&ch) = self.next() { |
8073 | @@ -179,7 +191,17 @@ impl DMARCParser for Iter<'_, u8> { |
8074 | if ch.is_ascii_hexdigit() { |
8075 | if hex1 != 0 { |
8076 | if let Some(ch) = quoted_printable_decode_char(hex1, ch) { |
8077 | - uri.push(ch); |
8078 | + match ch { |
8079 | + b'@' => { |
8080 | + found_at = true; |
8081 | + uri.push(ch); |
8082 | + } |
8083 | + _ => { |
8084 | + if !ch.is_ascii_whitespace() { |
8085 | + uri.push(ch); |
8086 | + } |
8087 | + } |
8088 | + } |
8089 | } |
8090 | break; |
8091 | } else { |
8092 | @@ -224,10 +246,14 @@ impl DMARCParser for Iter<'_, u8> { |
8093 | } |
8094 | b',' => { |
8095 | if !uri.is_empty() { |
8096 | - uris.push(URI { |
8097 | - uri: uri.to_vec(), |
8098 | - max_size: size, |
8099 | - }); |
8100 | + if found_uri && found_at { |
8101 | + uris.push(URI { |
8102 | + uri: String::from_utf8_lossy(&uri).to_lowercase(), |
8103 | + max_size: size, |
8104 | + }); |
8105 | + } |
8106 | + found_uri = false; |
8107 | + found_at = false; |
8108 | uri.clear(); |
8109 | } |
8110 | size = 0; |
8111 | @@ -243,17 +269,29 @@ impl DMARCParser for Iter<'_, u8> { |
8112 | } |
8113 | b',' => { |
8114 | if !uri.is_empty() { |
8115 | - uris.push(URI { |
8116 | - uri: uri.to_vec(), |
8117 | - max_size: size, |
8118 | - }); |
8119 | + if found_uri && found_at { |
8120 | + uris.push(URI { |
8121 | + uri: String::from_utf8_lossy(&uri).to_lowercase(), |
8122 | + max_size: size, |
8123 | + }); |
8124 | + } |
8125 | + found_uri = false; |
8126 | + found_at = false; |
8127 | uri.clear(); |
8128 | } |
8129 | size = 0; |
8130 | } |
8131 | + b':' if !found_uri => { |
8132 | + found_uri = uri.eq_ignore_ascii_case(b"mailto"); |
8133 | + uri.clear(); |
8134 | + } |
8135 | b';' => { |
8136 | break; |
8137 | } |
8138 | + b'@' => { |
8139 | + found_at = true; |
8140 | + uri.push(ch); |
8141 | + } |
8142 | _ => { |
8143 | if !ch.is_ascii_whitespace() { |
8144 | uri.push(ch); |
8145 | @@ -262,9 +300,9 @@ impl DMARCParser for Iter<'_, u8> { |
8146 | } |
8147 | } |
8148 | |
8149 | - if !uri.is_empty() { |
8150 | + if !uri.is_empty() && found_uri && found_at { |
8151 | uris.push(URI { |
8152 | - uri, |
8153 | + uri: String::from_utf8_lossy(&uri).to_lowercase(), |
8154 | max_size: size, |
8155 | }) |
8156 | } |
8157 | @@ -322,7 +360,7 @@ mod test { |
8158 | pct: 100, |
8159 | rf: Format::Afrf as u8, |
8160 | ri: 86400, |
8161 | - rua: vec![URI::new("mailto:dmarc-feedback@example.com", 0)], |
8162 | + rua: vec![URI::new("dmarc-feedback@example.com", 0)], |
8163 | ruf: vec![], |
8164 | sp: Policy::None, |
8165 | psd: Psd::Default, |
8166 | @@ -344,8 +382,8 @@ mod test { |
8167 | pct: 100, |
8168 | rf: Format::Afrf as u8, |
8169 | ri: 86400, |
8170 | - rua: vec![URI::new("mailto:dmarc-feedback@example.com", 0)], |
8171 | - ruf: vec![URI::new("mailto:auth-reports@example.com", 0)], |
8172 | + rua: vec![URI::new("dmarc-feedback@example.com", 0)], |
8173 | + ruf: vec![URI::new("auth-reports@example.com", 0)], |
8174 | sp: Policy::None, |
8175 | psd: Psd::Default, |
8176 | t: false, |
8177 | @@ -368,8 +406,8 @@ mod test { |
8178 | ri: 86400, |
8179 | ruf: vec![], |
8180 | rua: vec![ |
8181 | - URI::new("mailto:dmarc-feedback@example.com", 0), |
8182 | - URI::new("mailto:tld-test@thirdparty.example.net", 10 * 1024 * 1024), |
8183 | + URI::new("dmarc-feedback@example.com", 0), |
8184 | + URI::new("tld-test@thirdparty.example.net", 10 * 1024 * 1024), |
8185 | ], |
8186 | sp: Policy::Quarantine, |
8187 | psd: Psd::Default, |
8188 | @@ -391,7 +429,7 @@ mod test { |
8189 | pct: 100, |
8190 | rf: Format::Afrf as u8, |
8191 | ri: 86400, |
8192 | - rua: vec![URI::new("mailto:dmarc-feedback@example.com", 0)], |
8193 | + rua: vec![URI::new("dmarc-feedback@example.com", 0)], |
8194 | ruf: vec![], |
8195 | sp: Policy::Quarantine, |
8196 | psd: Psd::Default, |
8197 | @@ -415,8 +453,8 @@ mod test { |
8198 | rf: Format::Afrf as u8, |
8199 | ri: 3600, |
8200 | rua: vec![ |
8201 | - URI::new("mailto:dmarc-feedback@example.com", 10 * 1024), |
8202 | - URI::new("mailto:user @example.com", 2 * 1024 * 1024 * 1024), |
8203 | + URI::new("dmarc-feedback@example.com", 10 * 1024), |
8204 | + URI::new("user@example.com", 2 * 1024 * 1024 * 1024), |
8205 | ], |
8206 | ruf: vec![], |
8207 | sp: Policy::Reject, |
8208 | @@ -440,8 +478,8 @@ mod test { |
8209 | rf: Format::Afrf as u8, |
8210 | ri: 86400, |
8211 | rua: vec![ |
8212 | - URI::new("mailto:dmarc-feedback@example.com", 0), |
8213 | - URI::new("mailto:tld-test@thirdparty.example.net", 0), |
8214 | + URI::new("dmarc-feedback@example.com", 0), |
8215 | + URI::new("tld-test@thirdparty.example.net", 0), |
8216 | ], |
8217 | ruf: vec![], |
8218 | sp: Policy::Quarantine, |
8219 | diff --git a/src/dmarc/verify.rs b/src/dmarc/verify.rs |
8220 | index 50d5ccf..8c8d30c 100644 |
8221 | --- a/src/dmarc/verify.rs |
8222 | +++ b/src/dmarc/verify.rs |
8223 | @@ -1,3 +1,13 @@ |
8224 | + /* |
8225 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8226 | + * |
8227 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8228 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8229 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8230 | + * option. This file may not be copied, modified, or distributed |
8231 | + * except according to those terms. |
8232 | + */ |
8233 | + |
8234 | use std::sync::Arc; |
8235 | |
8236 | use crate::{ |
8237 | @@ -5,7 +15,7 @@ use crate::{ |
8238 | SPFOutput, SPFResult, |
8239 | }; |
8240 | |
8241 | - use super::{Alignment, DMARC}; |
8242 | + use super::{Alignment, DMARC, URI}; |
8243 | |
8244 | impl Resolver { |
8245 | pub async fn verify_dmarc( |
8246 | @@ -28,11 +38,8 @@ impl Resolver { |
8247 | } |
8248 | } |
8249 | } |
8250 | - |
8251 | - let has_dkim_pass = dkim_output.iter().any(|o| o.result == DKIMResult::Pass); |
8252 | - if from_domain.is_empty() || (spf_output.result != SPFResult::Pass && !has_dkim_pass) { |
8253 | - // No domain found or no mechanism passed, skip DMARC. |
8254 | - return DMARCOutput::default().with_domain(from_domain); |
8255 | + if from_domain.is_empty() { |
8256 | + return DMARCOutput::default(); |
8257 | } |
8258 | |
8259 | // Obtain DMARC policy |
8260 | @@ -56,44 +63,87 @@ impl Resolver { |
8261 | record: None, |
8262 | }; |
8263 | |
8264 | - // Check SPF alignment |
8265 | - let from_subdomain = format!(".{}", from_domain); |
8266 | - if spf_output.result == SPFResult::Pass { |
8267 | - output.spf_result = if mail_from_domain == from_domain { |
8268 | - DMARCResult::Pass |
8269 | - } else if dmarc.aspf == Alignment::Relaxed |
8270 | - && mail_from_domain.ends_with(&from_subdomain) |
8271 | - || from_domain.ends_with(&format!(".{}", mail_from_domain)) |
8272 | - { |
8273 | - output.policy = dmarc.sp; |
8274 | - DMARCResult::Pass |
8275 | - } else { |
8276 | - DMARCResult::Fail(Error::DMARCNotAligned) |
8277 | - }; |
8278 | + let has_dkim_pass = dkim_output.iter().any(|o| o.result == DKIMResult::Pass); |
8279 | + if spf_output.result == SPFResult::Pass || has_dkim_pass { |
8280 | + // Check SPF alignment |
8281 | + let from_subdomain = format!(".{}", from_domain); |
8282 | + if spf_output.result == SPFResult::Pass { |
8283 | + output.spf_result = if mail_from_domain == from_domain { |
8284 | + DMARCResult::Pass |
8285 | + } else if dmarc.aspf == Alignment::Relaxed |
8286 | + && mail_from_domain.ends_with(&from_subdomain) |
8287 | + || from_domain.ends_with(&format!(".{}", mail_from_domain)) |
8288 | + { |
8289 | + output.policy = dmarc.sp; |
8290 | + DMARCResult::Pass |
8291 | + } else { |
8292 | + DMARCResult::Fail(Error::DMARCNotAligned) |
8293 | + }; |
8294 | + } |
8295 | + |
8296 | + // Check DKIM alignment |
8297 | + if has_dkim_pass { |
8298 | + output.dkim_result = if dkim_output.iter().any(|o| { |
8299 | + o.result == DKIMResult::Pass && o.signature.as_ref().unwrap().d.eq(from_domain) |
8300 | + }) { |
8301 | + DMARCResult::Pass |
8302 | + } else if dmarc.adkim == Alignment::Relaxed |
8303 | + && dkim_output.iter().any(|o| { |
8304 | + o.result == DKIMResult::Pass |
8305 | + && (o.signature.as_ref().unwrap().d.ends_with(&from_subdomain) |
8306 | + || from_domain |
8307 | + .ends_with(&format!(".{}", o.signature.as_ref().unwrap().d))) |
8308 | + }) |
8309 | + { |
8310 | + output.policy = dmarc.sp; |
8311 | + DMARCResult::Pass |
8312 | + } else { |
8313 | + if dkim_output.iter().any(|o| { |
8314 | + o.result == DKIMResult::Pass |
8315 | + && (o.signature.as_ref().unwrap().d.ends_with(&from_subdomain) |
8316 | + || from_domain |
8317 | + .ends_with(&format!(".{}", o.signature.as_ref().unwrap().d))) |
8318 | + }) { |
8319 | + output.policy = dmarc.sp; |
8320 | + } |
8321 | + DMARCResult::Fail(Error::DMARCNotAligned) |
8322 | + }; |
8323 | + } |
8324 | } |
8325 | |
8326 | - // Check DKIM alignment |
8327 | - if has_dkim_pass { |
8328 | - output.dkim_result = if dkim_output.iter().any(|o| { |
8329 | - o.result == DKIMResult::Pass && o.signature.as_ref().unwrap().d.eq(from_domain) |
8330 | - }) { |
8331 | - DMARCResult::Pass |
8332 | - } else if dmarc.adkim == Alignment::Relaxed |
8333 | - && dkim_output.iter().any(|o| { |
8334 | - o.result == DKIMResult::Pass |
8335 | - && (o.signature.as_ref().unwrap().d.ends_with(&from_subdomain) |
8336 | - || from_domain |
8337 | - .ends_with(&format!(".{}", o.signature.as_ref().unwrap().d))) |
8338 | - }) |
8339 | + output.with_record(dmarc) |
8340 | + } |
8341 | + |
8342 | + pub async fn verify_dmarc_report_address<'x>( |
8343 | + &self, |
8344 | + domain: &str, |
8345 | + addresses: &'x [URI], |
8346 | + ) -> Option<Vec<&'x URI>> { |
8347 | + let mut result = Vec::with_capacity(addresses.len()); |
8348 | + for address in addresses { |
8349 | + if address.uri.ends_with(domain) |
8350 | + || match self |
8351 | + .txt_lookup::<DMARC>(format!( |
8352 | + "{}.report.dmarc.{}.", |
8353 | + domain, |
8354 | + address |
8355 | + .uri |
8356 | + .rsplit_once('@') |
8357 | + .map(|(_, d)| d) |
8358 | + .unwrap_or_default() |
8359 | + )) |
8360 | + .await |
8361 | + { |
8362 | + Ok(_) => true, |
8363 | + Err(Error::DNSError) => return None, |
8364 | + _ => false, |
8365 | + } |
8366 | { |
8367 | - output.policy = dmarc.sp; |
8368 | - DMARCResult::Pass |
8369 | - } else { |
8370 | - DMARCResult::Fail(Error::DMARCNotAligned) |
8371 | - }; |
8372 | + result.push(address); |
8373 | + } |
8374 | } |
8375 | |
8376 | - output.with_record(dmarc) |
8377 | + result.into() |
8378 | } |
8379 | |
8380 | async fn dmarc_tree_walk(&self, domain: &str) -> crate::Result<Option<Arc<DMARC>>> { |
8381 | @@ -134,3 +184,187 @@ impl Resolver { |
8382 | Ok(None) |
8383 | } |
8384 | } |
8385 | + |
8386 | + #[cfg(test)] |
8387 | + mod test { |
8388 | + use std::time::{Duration, Instant}; |
8389 | + |
8390 | + use crate::{ |
8391 | + common::parse::TxtRecordParser, |
8392 | + dkim::Signature, |
8393 | + dmarc::{Policy, DMARC, URI}, |
8394 | + AuthenticatedMessage, DKIMOutput, DKIMResult, DMARCResult, Error, Resolver, SPFOutput, |
8395 | + SPFResult, |
8396 | + }; |
8397 | + |
8398 | + #[tokio::test] |
8399 | + async fn dmarc_verify() { |
8400 | + let resolver = Resolver::new_system_conf().unwrap(); |
8401 | + |
8402 | + for ( |
8403 | + dmarc_dns, |
8404 | + dmarc, |
8405 | + message, |
8406 | + mail_from_domain, |
8407 | + signature_domain, |
8408 | + dkim, |
8409 | + spf, |
8410 | + expect_dkim, |
8411 | + expect_spf, |
8412 | + policy, |
8413 | + ) in [ |
8414 | + // Strict - Pass |
8415 | + ( |
8416 | + "_dmarc.example.org.", |
8417 | + concat!( |
8418 | + "v=DMARC1; p=reject; sp=quarantine; np=None; aspf=s; adkim=s; fo=1;", |
8419 | + "rua=mailto:dmarc-feedback@example.org" |
8420 | + ), |
8421 | + "From: hello@example.org\r\n\r\n", |
8422 | + "example.org", |
8423 | + "example.org", |
8424 | + DKIMResult::Pass, |
8425 | + SPFResult::Pass, |
8426 | + DMARCResult::Pass, |
8427 | + DMARCResult::Pass, |
8428 | + Policy::Reject, |
8429 | + ), |
8430 | + // Relaxed - Pass |
8431 | + ( |
8432 | + "_dmarc.example.org.", |
8433 | + concat!( |
8434 | + "v=DMARC1; p=reject; sp=quarantine; np=None; aspf=r; adkim=r; fo=1;", |
8435 | + "rua=mailto:dmarc-feedback@example.org" |
8436 | + ), |
8437 | + "From: hello@example.org\r\n\r\n", |
8438 | + "subdomain.example.org", |
8439 | + "subdomain.example.org", |
8440 | + DKIMResult::Pass, |
8441 | + SPFResult::Pass, |
8442 | + DMARCResult::Pass, |
8443 | + DMARCResult::Pass, |
8444 | + Policy::Quarantine, |
8445 | + ), |
8446 | + // Strict - Fail |
8447 | + ( |
8448 | + "_dmarc.example.org.", |
8449 | + concat!( |
8450 | + "v=DMARC1; p=reject; sp=quarantine; np=None; aspf=s; adkim=s; fo=1;", |
8451 | + "rua=mailto:dmarc-feedback@example.org" |
8452 | + ), |
8453 | + "From: hello@example.org\r\n\r\n", |
8454 | + "subdomain.example.org", |
8455 | + "subdomain.example.org", |
8456 | + DKIMResult::Pass, |
8457 | + SPFResult::Pass, |
8458 | + DMARCResult::Fail(Error::DMARCNotAligned), |
8459 | + DMARCResult::Fail(Error::DMARCNotAligned), |
8460 | + Policy::Quarantine, |
8461 | + ), |
8462 | + // Strict - Pass with tree walk |
8463 | + ( |
8464 | + "_dmarc.example.org.", |
8465 | + concat!( |
8466 | + "v=DMARC1; p=reject; sp=quarantine; np=None; aspf=s; adkim=s; fo=1;", |
8467 | + "rua=mailto:dmarc-feedback@example.org" |
8468 | + ), |
8469 | + "From: hello@a.b.c.example.org\r\n\r\n", |
8470 | + "a.b.c.example.org", |
8471 | + "a.b.c.example.org", |
8472 | + DKIMResult::Pass, |
8473 | + SPFResult::Pass, |
8474 | + DMARCResult::Pass, |
8475 | + DMARCResult::Pass, |
8476 | + Policy::Reject, |
8477 | + ), |
8478 | + // Relaxed - Pass with tree walk |
8479 | + ( |
8480 | + "_dmarc.c.example.org.", |
8481 | + concat!( |
8482 | + "v=DMARC1; p=reject; sp=quarantine; np=None; aspf=r; adkim=r; fo=1;", |
8483 | + "rua=mailto:dmarc-feedback@example.org" |
8484 | + ), |
8485 | + "From: hello@a.b.c.example.org\r\n\r\n", |
8486 | + "example.org", |
8487 | + "example.org", |
8488 | + DKIMResult::Pass, |
8489 | + SPFResult::Pass, |
8490 | + DMARCResult::Pass, |
8491 | + DMARCResult::Pass, |
8492 | + Policy::Quarantine, |
8493 | + ), |
8494 | + // Failed mechanisms |
8495 | + ( |
8496 | + "_dmarc.example.org.", |
8497 | + concat!( |
8498 | + "v=DMARC1; p=reject; sp=quarantine; np=None; aspf=s; adkim=s; fo=1;", |
8499 | + "rua=mailto:dmarc-feedback@example.org" |
8500 | + ), |
8501 | + "From: hello@example.org\r\n\r\n", |
8502 | + "example.org", |
8503 | + "example.org", |
8504 | + DKIMResult::Fail(Error::SignatureExpired), |
8505 | + SPFResult::Fail, |
8506 | + DMARCResult::None, |
8507 | + DMARCResult::None, |
8508 | + Policy::Reject, |
8509 | + ), |
8510 | + ] { |
8511 | + resolver.txt_add( |
8512 | + dmarc_dns, |
8513 | + DMARC::parse(dmarc.as_bytes()).unwrap(), |
8514 | + Instant::now() + Duration::new(3200, 0), |
8515 | + ); |
8516 | + |
8517 | + let auth_message = AuthenticatedMessage::parse(message.as_bytes()).unwrap(); |
8518 | + let signature = Signature { |
8519 | + d: signature_domain.into(), |
8520 | + ..Default::default() |
8521 | + }; |
8522 | + let dkim = DKIMOutput { |
8523 | + result: dkim, |
8524 | + signature: (&signature).into(), |
8525 | + report: None, |
8526 | + is_atps: false, |
8527 | + }; |
8528 | + let spf = SPFOutput { |
8529 | + result: spf, |
8530 | + domain: mail_from_domain.to_string(), |
8531 | + report: None, |
8532 | + explanation: None, |
8533 | + }; |
8534 | + let result = resolver |
8535 | + .verify_dmarc(&auth_message, &[dkim], mail_from_domain, &spf) |
8536 | + .await; |
8537 | + assert_eq!(result.dkim_result, expect_dkim); |
8538 | + assert_eq!(result.spf_result, expect_spf); |
8539 | + assert_eq!(result.policy, policy); |
8540 | + } |
8541 | + } |
8542 | + |
8543 | + #[tokio::test] |
8544 | + async fn dmarc_verify_report_address() { |
8545 | + let resolver = Resolver::new_system_conf().unwrap(); |
8546 | + resolver.txt_add( |
8547 | + "example.org.report.dmarc.external.org.", |
8548 | + DMARC::parse(b"v=DMARC1").unwrap(), |
8549 | + Instant::now() + Duration::new(3200, 0), |
8550 | + ); |
8551 | + let uris = vec![ |
8552 | + URI::new("dmarc@example.org", 0), |
8553 | + URI::new("dmarc@external.org", 0), |
8554 | + URI::new("domain@other.org", 0), |
8555 | + ]; |
8556 | + |
8557 | + assert_eq!( |
8558 | + resolver |
8559 | + .verify_dmarc_report_address("example.org", &uris) |
8560 | + .await |
8561 | + .unwrap(), |
8562 | + vec![ |
8563 | + &URI::new("dmarc@example.org", 0), |
8564 | + &URI::new("dmarc@external.org", 0), |
8565 | + ] |
8566 | + ); |
8567 | + } |
8568 | + } |
8569 | diff --git a/src/lib.rs b/src/lib.rs |
8570 | index f6bb344..ffcf78c 100644 |
8571 | --- a/src/lib.rs |
8572 | +++ b/src/lib.rs |
8573 | @@ -1,6 +1,5 @@ |
8574 | /* |
8575 | - * Copyright Stalwart Labs Ltd. See the COPYING |
8576 | - * file at the top-level directory of this distribution. |
8577 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8578 | * |
8579 | * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8580 | * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8581 | @@ -9,6 +8,250 @@ |
8582 | * except according to those terms. |
8583 | */ |
8584 | |
8585 | + //! # mail-auth |
8586 | + //! |
8587 | + //! [![crates.io](https://img.shields.io/crates/v/mail-auth)](https://crates.io/crates/mail-auth) |
8588 | + //! [![build](https://github.com/stalwartlabs/mail-auth/actions/workflows/rust.yml/badge.svg)](https://github.com/stalwartlabs/mail-auth/actions/workflows/rust.yml) |
8589 | + //! [![docs.rs](https://img.shields.io/docsrs/mail-auth)](https://docs.rs/mail-auth) |
8590 | + //! [![crates.io](https://img.shields.io/crates/l/mail-auth)](http://www.apache.org/licenses/LICENSE-2.0) |
8591 | + //! |
8592 | + //! _mail-auth_ is an e-mail authentication and reporting library written in Rust that supports the **DKIM**, **ARC**, **SPF** and **DMARC** |
8593 | + //! protocols. The library aims to be fast, safe and correct while supporting all major [message authentication and reporting RFCs](#conformed-rfcs). |
8594 | + //! |
8595 | + //! Features: |
8596 | + //! |
8597 | + //! - **DomainKeys Identified Mail (DKIM)**: |
8598 | + //! - ED25519-SHA256 (Edwards-Curve Digital Signature Algorithm), RSA-SHA256 and RSA-SHA1 signing and verification. |
8599 | + //! - DKIM Authorized Third-Party Signatures. |
8600 | + //! - DKIM failure reporting using the Abuse Reporting Format. |
8601 | + //! - **Authenticated Received Chain (ARC)**: |
8602 | + //! - ED25519-SHA256 (Edwards-Curve Digital Signature Algorithm), RSA-SHA256 and RSA-SHA1 chain verification. |
8603 | + //! - ARC sealing. |
8604 | + //! - **Sender Policy Framework (SPF)**: |
8605 | + //! - Policy evalution. |
8606 | + //! - SPF failure reporting using the Abuse Reporting Format. |
8607 | + //! - **Domain-based Message Authentication, Reporting, and Conformance (DMARC)**: |
8608 | + //! - Policy evaluation. |
8609 | + //! - DMARC aggregate report parsing and generation. |
8610 | + //! - **Abuse Reporting Format (ARF)**: |
8611 | + //! - Abuse and Authentication failure reporting. |
8612 | + //! - Feedback report parsing and generation. |
8613 | + //! |
8614 | + //! |
8615 | + //! ## Usage examples |
8616 | + //! |
8617 | + //! ### DKIM Signature Verification |
8618 | + //! |
8619 | + //! ```rust |
8620 | + //! // Create a resolver using Cloudflare DNS |
8621 | + //! let resolver = Resolver::new_cloudflare_tls().unwrap(); |
8622 | + //! |
8623 | + //! // Parse message |
8624 | + //! let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
8625 | + //! |
8626 | + //! // Validate signature |
8627 | + //! let result = resolver.verify_dkim(&authenticated_message).await; |
8628 | + //! |
8629 | + //! // Make sure all signatures passed verification |
8630 | + //! assert!(result.iter().all(|s| s.result() == &DKIMResult::Pass)); |
8631 | + //! ``` |
8632 | + //! |
8633 | + //! ### DKIM Signing |
8634 | + //! |
8635 | + //! ```rust |
8636 | + //! // Sign an e-mail message using RSA-SHA256 |
8637 | + //! let pk_rsa = PrivateKey::from_rsa_pkcs1_pem(RSA_PRIVATE_KEY).unwrap(); |
8638 | + //! let signature_rsa = Signature::new() |
8639 | + //! .headers(["From", "To", "Subject"]) |
8640 | + //! .domain("example.com") |
8641 | + //! .selector("default") |
8642 | + //! .sign(RFC5322_MESSAGE.as_bytes(), &pk_rsa) |
8643 | + //! .unwrap(); |
8644 | + //! |
8645 | + //! // Sign an e-mail message using ED25519-SHA256 |
8646 | + //! let pk_ed = PrivateKey::from_ed25519( |
8647 | + //! &base64_decode(ED25519_PUBLIC_KEY.as_bytes()).unwrap(), |
8648 | + //! &base64_decode(ED25519_PRIVATE_KEY.as_bytes()).unwrap(), |
8649 | + //! ) |
8650 | + //! .unwrap(); |
8651 | + //! let signature_ed = Signature::new() |
8652 | + //! .headers(["From", "To", "Subject"]) |
8653 | + //! .domain("example.com") |
8654 | + //! .selector("default-ed") |
8655 | + //! .sign(RFC5322_MESSAGE.as_bytes(), &pk_ed) |
8656 | + //! .unwrap(); |
8657 | + //! |
8658 | + //! // Print the message including both signatures to stdout |
8659 | + //! println!( |
8660 | + //! "{}{}{}", |
8661 | + //! signature_rsa.to_header(), |
8662 | + //! signature_ed.to_header(), |
8663 | + //! RFC5322_MESSAGE |
8664 | + //! ); |
8665 | + //! ``` |
8666 | + //! |
8667 | + //! ### ARC Chain Verification |
8668 | + //! |
8669 | + //! ```rust |
8670 | + //! // Create a resolver using Cloudflare DNS |
8671 | + //! let resolver = Resolver::new_cloudflare_tls().unwrap(); |
8672 | + //! |
8673 | + //! // Parse message |
8674 | + //! let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
8675 | + //! |
8676 | + //! // Validate ARC chain |
8677 | + //! let result = resolver.verify_arc(&authenticated_message).await; |
8678 | + //! |
8679 | + //! // Make sure ARC passed verification |
8680 | + //! assert_eq!(result.result(), &DKIMResult::Pass); |
8681 | + //! ``` |
8682 | + //! |
8683 | + //! ### ARC Chain Sealing |
8684 | + //! |
8685 | + //! ```rust |
8686 | + //! // Create a resolver using Cloudflare DNS |
8687 | + //! let resolver = Resolver::new_cloudflare_tls().unwrap(); |
8688 | + //! |
8689 | + //! // Parse message to be sealed |
8690 | + //! let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
8691 | + //! |
8692 | + //! // Verify ARC and DKIM signatures |
8693 | + //! let arc_result = resolver.verify_arc(&authenticated_message).await; |
8694 | + //! let dkim_result = resolver.verify_dkim(&authenticated_message).await; |
8695 | + //! |
8696 | + //! // Build Authenticated-Results header |
8697 | + //! let auth_results = AuthenticationResults::new("mx.mydomain.org") |
8698 | + //! .with_dkim_result(&dkim_result, "sender@example.org") |
8699 | + //! .with_arc_result(&arc_result, "127.0.0.1".parse().unwrap()); |
8700 | + //! |
8701 | + //! // Seal message |
8702 | + //! if arc_result.can_be_sealed() { |
8703 | + //! // Seal the e-mail message using RSA-SHA256 |
8704 | + //! let pk_rsa = PrivateKey::from_rsa_pkcs1_pem(RSA_PRIVATE_KEY).unwrap(); |
8705 | + //! let arc_set = ARC::new(&auth_results) |
8706 | + //! .domain("example.org") |
8707 | + //! .selector("default") |
8708 | + //! .headers(["From", "To", "Subject", "DKIM-Signature"]) |
8709 | + //! .seal(&authenticated_message, &arc_result, &pk_rsa) |
8710 | + //! .unwrap(); |
8711 | + //! |
8712 | + //! // Print the sealed message to stdout |
8713 | + //! println!("{}{}", arc_set.to_header(), RFC5322_MESSAGE) |
8714 | + //! } else { |
8715 | + //! eprintln!("The message could not be sealed, probably an ARC chain with cv=fail was found.") |
8716 | + //! } |
8717 | + //! ``` |
8718 | + //! |
8719 | + //! ### SPF Policy Evaluation |
8720 | + //! |
8721 | + //! ```rust |
8722 | + //! // Create a resolver using Cloudflare DNS |
8723 | + //! let resolver = Resolver::new_cloudflare_tls().unwrap(); |
8724 | + //! |
8725 | + //! // Verify HELO identity |
8726 | + //! let result = resolver |
8727 | + //! .verify_spf_helo("127.0.0.1".parse().unwrap(), "gmail.com") |
8728 | + //! .await; |
8729 | + //! assert_eq!(result.result(), SPFResult::Fail); |
8730 | + //! |
8731 | + //! // Verify MAIL-FROM identity |
8732 | + //! let result = resolver |
8733 | + //! .verify_spf_sender("::1".parse().unwrap(), "gmail.com", "sender@gmail.com") |
8734 | + //! .await; |
8735 | + //! assert_eq!(result.result(), SPFResult::Fail); |
8736 | + //! ``` |
8737 | + //! |
8738 | + //! ### DMARC Policy Evaluation |
8739 | + //! |
8740 | + //! ```rust |
8741 | + //! // Create a resolver using Cloudflare DNS |
8742 | + //! let resolver = Resolver::new_cloudflare_tls().unwrap(); |
8743 | + //! |
8744 | + //! // Verify DKIM signatures |
8745 | + //! let authenticated_message = AuthenticatedMessage::parse(RFC5322_MESSAGE.as_bytes()).unwrap(); |
8746 | + //! let dkim_result = resolver.verify_dkim(&authenticated_message).await; |
8747 | + //! |
8748 | + //! // Verify SPF MAIL-FROM identity |
8749 | + //! let spf_result = resolver |
8750 | + //! .verify_spf_sender("::1".parse().unwrap(), "example.org", "sender@example.org") |
8751 | + //! .await; |
8752 | + //! |
8753 | + //! // Verify DMARC |
8754 | + //! let dmarc_result = resolver |
8755 | + //! .verify_dmarc( |
8756 | + //! &authenticated_message, |
8757 | + //! &dkim_result, |
8758 | + //! "example.org", |
8759 | + //! &spf_result, |
8760 | + //! ) |
8761 | + //! .await; |
8762 | + //! assert_eq!(dmarc_result.dkim_result(), &DMARCResult::Pass); |
8763 | + //! assert_eq!(dmarc_result.spf_result(), &DMARCResult::Pass); |
8764 | + //! ``` |
8765 | + //! |
8766 | + //! More examples available under the [examples](examples) directory. |
8767 | + //! |
8768 | + //! ## Testing & Fuzzing |
8769 | + //! |
8770 | + //! To run the testsuite: |
8771 | + //! |
8772 | + //! ```bash |
8773 | + //! $ cargo test --all-features |
8774 | + //! ``` |
8775 | + //! |
8776 | + //! To fuzz the library with `cargo-fuzz`: |
8777 | + //! |
8778 | + //! ```bash |
8779 | + //! $ cargo +nightly fuzz run mail_parser |
8780 | + //! ``` |
8781 | + //! |
8782 | + //! ## Conformed RFCs |
8783 | + //! |
8784 | + //! ### DKIM |
8785 | + //! |
8786 | + //! - [RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures](https://datatracker.ietf.org/doc/html/rfc6376) |
8787 | + //! - [RFC 6541 - DomainKeys Identified Mail (DKIM) Authorized Third-Party Signatures](https://datatracker.ietf.org/doc/html/rfc6541) |
8788 | + //! - [RFC 6651 - Extensions to DomainKeys Identified Mail (DKIM) for Failure Reporting](https://datatracker.ietf.org/doc/html/rfc6651) |
8789 | + //! - [RFC 8032 - Edwards-Curve Digital Signature Algorithm (EdDSA)](https://datatracker.ietf.org/doc/html/rfc8032) |
8790 | + //! - [RFC 4686 - Analysis of Threats Motivating DomainKeys Identified Mail (DKIM)](https://datatracker.ietf.org/doc/html/rfc4686) |
8791 | + //! - [RFC 5016 - Requirements for a DomainKeys Identified Mail (DKIM) Signing Practices Protocol](https://datatracker.ietf.org/doc/html/rfc5016) |
8792 | + //! - [RFC 5585 - DomainKeys Identified Mail (DKIM) Service Overview](https://datatracker.ietf.org/doc/html/rfc5585) |
8793 | + //! - [RFC 5672 - DomainKeys Identified Mail (DKIM) Signatures -- Update](https://datatracker.ietf.org/doc/html/rfc5672) |
8794 | + //! - [RFC 5863 - DomainKeys Identified Mail (DKIM) Development, Deployment, and Operations](https://datatracker.ietf.org/doc/html/rfc5863) |
8795 | + //! - [RFC 6377 - DomainKeys Identified Mail (DKIM) and Mailing Lists](https://datatracker.ietf.org/doc/html/rfc6377) |
8796 | + //! |
8797 | + //! ### SPF |
8798 | + //! - [RFC 7208 - Sender Policy Framework (SPF)](https://datatracker.ietf.org/doc/html/rfc7208) |
8799 | + //! - [RFC 6652 - Sender Policy Framework (SPF) Authentication Failure Reporting Using the Abuse Reporting Format](https://datatracker.ietf.org/doc/html/rfc6652) |
8800 | + //! |
8801 | + //! ### DMARC |
8802 | + //! - [RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)](https://datatracker.ietf.org/doc/html/rfc7489) |
8803 | + //! - [RFC 8617 - The Authenticated Received Chain (ARC) Protocol](https://datatracker.ietf.org/doc/html/rfc8617) |
8804 | + //! - [RFC 8601 - Message Header Field for Indicating Message Authentication Status](https://datatracker.ietf.org/doc/html/rfc8601) |
8805 | + //! - [RFC 8616 - Email Authentication for Internationalized Mail](https://datatracker.ietf.org/doc/html/rfc8616) |
8806 | + //! - [RFC 7960 - Interoperability Issues between Domain-based Message Authentication, Reporting, and Conformance (DMARC) and Indirect Email Flows](https://datatracker.ietf.org/doc/html/rfc7960) |
8807 | + //! |
8808 | + //! ### ARF |
8809 | + //! - [RFC 5965 - An Extensible Format for Email Feedback Reports](https://datatracker.ietf.org/doc/html/rfc5965) |
8810 | + //! - [RFC 6430 - Email Feedback Report Type Value: not-spam](https://datatracker.ietf.org/doc/html/rfc6430) |
8811 | + //! - [RFC 6590 - Redaction of Potentially Sensitive Data from Mail Abuse Reports](https://datatracker.ietf.org/doc/html/rfc6590) |
8812 | + //! - [RFC 6591 - Authentication Failure Reporting Using the Abuse Reporting Format](https://datatracker.ietf.org/doc/html/rfc6591) |
8813 | + //! - [RFC 6650 - Creation and Use of Email Feedback Reports: An Applicability Statement for the Abuse Reporting Format (ARF)](https://datatracker.ietf.org/doc/html/rfc6650) |
8814 | + //! |
8815 | + //! ## License |
8816 | + //! |
8817 | + //! Licensed under either of |
8818 | + //! |
8819 | + //! * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) |
8820 | + //! * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) |
8821 | + //! |
8822 | + //! at your option. |
8823 | + //! |
8824 | + //! ## Copyright |
8825 | + //! |
8826 | + //! Copyright (C) 2020-2022, Stalwart Labs Ltd. |
8827 | + //! |
8828 | + |
8829 | use std::{ |
8830 | cell::Cell, |
8831 | fmt::Display, |
8832 | @@ -19,7 +262,7 @@ use std::{ |
8833 | |
8834 | use arc::Set; |
8835 | use common::{headers::Header, lru::LruCache}; |
8836 | - use dkim::{Atps, Canonicalization, DomainKey, HashAlgorithm}; |
8837 | + use dkim::{Atps, Canonicalization, DomainKey, DomainKeyReport, HashAlgorithm}; |
8838 | use dmarc::DMARC; |
8839 | use rsa::RsaPrivateKey; |
8840 | use spf::{Macro, SPF}; |
8841 | @@ -56,6 +299,7 @@ pub(crate) enum Txt { |
8842 | SPF(Arc<SPF>), |
8843 | SPFMacro(Arc<Macro>), |
8844 | DomainKey(Arc<DomainKey>), |
8845 | + DomainKeyReport(Arc<DomainKeyReport>), |
8846 | DMARC(Arc<DMARC>), |
8847 | Atps(Arc<Atps>), |
8848 | Error(Error), |
8849 | diff --git a/src/report/arf/generate.rs b/src/report/arf/generate.rs |
8850 | index 8196dca..df00b3d 100644 |
8851 | --- a/src/report/arf/generate.rs |
8852 | +++ b/src/report/arf/generate.rs |
8853 | @@ -1,3 +1,13 @@ |
8854 | + /* |
8855 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8856 | + * |
8857 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8858 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8859 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8860 | + * option. This file may not be copied, modified, or distributed |
8861 | + * except according to those terms. |
8862 | + */ |
8863 | + |
8864 | use std::{fmt::Write, time::SystemTime}; |
8865 | |
8866 | use mail_builder::{ |
8867 | diff --git a/src/report/arf/mod.rs b/src/report/arf/mod.rs |
8868 | index 7af0b71..110d55f 100644 |
8869 | --- a/src/report/arf/mod.rs |
8870 | +++ b/src/report/arf/mod.rs |
8871 | @@ -1,3 +1,13 @@ |
8872 | + /* |
8873 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8874 | + * |
8875 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8876 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8877 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8878 | + * option. This file may not be copied, modified, or distributed |
8879 | + * except according to those terms. |
8880 | + */ |
8881 | + |
8882 | use std::{borrow::Cow, net::IpAddr}; |
8883 | |
8884 | use super::{AuthFailureType, DeliveryResult, Feedback, FeedbackType, IdentityAlignment}; |
8885 | diff --git a/src/report/arf/parse.rs b/src/report/arf/parse.rs |
8886 | index 6c39d7d..c0eea1c 100644 |
8887 | --- a/src/report/arf/parse.rs |
8888 | +++ b/src/report/arf/parse.rs |
8889 | @@ -1,3 +1,13 @@ |
8890 | + /* |
8891 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8892 | + * |
8893 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8894 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8895 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8896 | + * option. This file may not be copied, modified, or distributed |
8897 | + * except according to those terms. |
8898 | + */ |
8899 | + |
8900 | use std::borrow::Cow; |
8901 | |
8902 | use mail_parser::{parsers::MessageStream, HeaderValue, Message, MimeHeaders, PartType}; |
8903 | diff --git a/src/report/dmarc/generate.rs b/src/report/dmarc/generate.rs |
8904 | index 810a570..d44b026 100644 |
8905 | --- a/src/report/dmarc/generate.rs |
8906 | +++ b/src/report/dmarc/generate.rs |
8907 | @@ -1,3 +1,13 @@ |
8908 | + /* |
8909 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8910 | + * |
8911 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8912 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8913 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8914 | + * option. This file may not be copied, modified, or distributed |
8915 | + * except according to those terms. |
8916 | + */ |
8917 | + |
8918 | use flate2::{write::GzEncoder, Compression}; |
8919 | use mail_builder::{headers::HeaderType, MessageBuilder}; |
8920 | |
8921 | diff --git a/src/report/dmarc/mod.rs b/src/report/dmarc/mod.rs |
8922 | index d09562b..658a373 100644 |
8923 | --- a/src/report/dmarc/mod.rs |
8924 | +++ b/src/report/dmarc/mod.rs |
8925 | @@ -1,3 +1,13 @@ |
8926 | + /* |
8927 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8928 | + * |
8929 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8930 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8931 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8932 | + * option. This file may not be copied, modified, or distributed |
8933 | + * except according to those terms. |
8934 | + */ |
8935 | + |
8936 | pub mod generate; |
8937 | pub mod parse; |
8938 | |
8939 | diff --git a/src/report/dmarc/parse.rs b/src/report/dmarc/parse.rs |
8940 | index 7b9401a..64ab859 100644 |
8941 | --- a/src/report/dmarc/parse.rs |
8942 | +++ b/src/report/dmarc/parse.rs |
8943 | @@ -1,3 +1,13 @@ |
8944 | + /* |
8945 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8946 | + * |
8947 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8948 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8949 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8950 | + * option. This file may not be copied, modified, or distributed |
8951 | + * except according to those terms. |
8952 | + */ |
8953 | + |
8954 | use std::io::{BufRead, Cursor, Read}; |
8955 | use std::str::FromStr; |
8956 | |
8957 | diff --git a/src/report/mod.rs b/src/report/mod.rs |
8958 | index 0b0ab42..e3bd93a 100644 |
8959 | --- a/src/report/mod.rs |
8960 | +++ b/src/report/mod.rs |
8961 | @@ -1,3 +1,13 @@ |
8962 | + /* |
8963 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8964 | + * |
8965 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8966 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8967 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8968 | + * option. This file may not be copied, modified, or distributed |
8969 | + * except according to those terms. |
8970 | + */ |
8971 | + |
8972 | pub mod arf; |
8973 | pub mod dmarc; |
8974 | |
8975 | diff --git a/src/spf/macros.rs b/src/spf/macros.rs |
8976 | index c1c28f2..5de6329 100644 |
8977 | --- a/src/spf/macros.rs |
8978 | +++ b/src/spf/macros.rs |
8979 | @@ -1,3 +1,13 @@ |
8980 | + /* |
8981 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
8982 | + * |
8983 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
8984 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
8985 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
8986 | + * option. This file may not be copied, modified, or distributed |
8987 | + * except according to those terms. |
8988 | + */ |
8989 | + |
8990 | use std::{borrow::Cow, net::IpAddr, time::SystemTime}; |
8991 | |
8992 | use super::{Macro, Variable, Variables}; |
8993 | diff --git a/src/spf/mod.rs b/src/spf/mod.rs |
8994 | index e3fc194..799b975 100644 |
8995 | --- a/src/spf/mod.rs |
8996 | +++ b/src/spf/mod.rs |
8997 | @@ -1,3 +1,13 @@ |
8998 | + /* |
8999 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
9000 | + * |
9001 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
9002 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
9003 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
9004 | + * option. This file may not be copied, modified, or distributed |
9005 | + * except according to those terms. |
9006 | + */ |
9007 | + |
9008 | pub mod macros; |
9009 | pub mod parse; |
9010 | pub mod verify; |
9011 | @@ -87,7 +97,7 @@ pub(crate) struct Directive { |
9012 | |
9013 | #[derive(Debug, PartialEq, Eq, Clone, Copy)] |
9014 | #[repr(u8)] |
9015 | - pub(crate) enum Variable { |
9016 | + pub enum Variable { |
9017 | Sender = 0, |
9018 | SenderLocalPart = 1, |
9019 | SenderDomainPart = 2, |
9020 | @@ -102,12 +112,12 @@ pub(crate) enum Variable { |
9021 | } |
9022 | |
9023 | #[derive(Debug, PartialEq, Eq, Clone, Default)] |
9024 | - pub(crate) struct Variables<'x> { |
9025 | + pub struct Variables<'x> { |
9026 | vars: [Cow<'x, [u8]>; 11], |
9027 | } |
9028 | |
9029 | #[derive(Debug, PartialEq, Eq, Clone)] |
9030 | - pub(crate) enum Macro { |
9031 | + pub enum Macro { |
9032 | Literal(Vec<u8>), |
9033 | Variable { |
9034 | letter: Variable, |
9035 | @@ -236,6 +246,10 @@ impl SPFOutput { |
9036 | self.result |
9037 | } |
9038 | |
9039 | + pub fn domain(&self) -> &str { |
9040 | + &self.domain |
9041 | + } |
9042 | + |
9043 | pub fn explanation(&self) -> Option<&str> { |
9044 | self.explanation.as_deref() |
9045 | } |
9046 | diff --git a/src/spf/parse.rs b/src/spf/parse.rs |
9047 | index 5723481..f864351 100644 |
9048 | --- a/src/spf/parse.rs |
9049 | +++ b/src/spf/parse.rs |
9050 | @@ -1,3 +1,13 @@ |
9051 | + /* |
9052 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
9053 | + * |
9054 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
9055 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
9056 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
9057 | + * option. This file may not be copied, modified, or distributed |
9058 | + * except according to those terms. |
9059 | + */ |
9060 | + |
9061 | use std::{ |
9062 | net::{Ipv4Addr, Ipv6Addr}, |
9063 | slice::Iter, |
9064 | diff --git a/src/spf/verify.rs b/src/spf/verify.rs |
9065 | index c0f43eb..cd1b697 100644 |
9066 | --- a/src/spf/verify.rs |
9067 | +++ b/src/spf/verify.rs |
9068 | @@ -1,3 +1,13 @@ |
9069 | + /* |
9070 | + * Copyright (c) 2020-2022, Stalwart Labs Ltd. |
9071 | + * |
9072 | + * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
9073 | + * https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
9074 | + * <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
9075 | + * option. This file may not be copied, modified, or distributed |
9076 | + * except according to those terms. |
9077 | + */ |
9078 | + |
9079 | use std::{ |
9080 | net::{IpAddr, Ipv4Addr, Ipv6Addr}, |
9081 | time::Instant, |