X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=TESTPAT;h=ac8d20c1d9392178bfdb983d1bd8d17f61d52521;hb=5aad1166a5731dc848a68cbb380bbcba6a23d063;hp=69a4053376491bf22ecc5a9370e29bd068182d84;hpb=3a1d72b2788ad0568e80c456e8cda52741b99653;p=elisp%2Fflim.git diff --git a/TESTPAT b/TESTPAT index 69a4053..ac8d20c 100644 --- a/TESTPAT +++ b/TESTPAT @@ -1,138 +1,976 @@ ;---------------------------------------------------------------------------- -;-------- This sequece of hyphens is 76 bytes long. ------------------------- +;-------- This sequece of HYPHEN-MINUS is 76 bytes long. -------------------- ;---------------------------------------------------------------------------- + +;;; options: +;;encode-sticked-comment-as-atom ; violate the policy preserving structures +;;ignore-75bytes-limit ; violate RFC2047 +;;ignore-76bytes-limit ; violate RFC2047 +;;permit-sticked-comment ; violate RFC2047 +;;permit-sticked-special ; violate RFC2047 +;;separate-sticked-comment ; violate the policy preserving absence of space +;;separate-sticked-special ; violate the policy preserving absence of space +;;zero-characters-encoded-word-hack ; violate common sense (very tricky) +;;quoted-encoded-word ; violate character sequence semantics +;;separate-sticked-tokens-for-fold ; violate the policy preserving absence of space +;;encode-long-ascii-string-for-fold ; violate the policy preserving US-ASCII string +;;divide-atom-for-fold ; violate tne policy preserving absence of space + +;;; test driver + +(setq decode-test 'decode-flam) +(setq encode-test 'encode-flam) + +(setq decode-succ-count 0) +(setq decode-all-count 0) +(defun decode (src dsts &rest opts) + (if (stringp dsts) (setq dsts (list dsts))) + (setq decode-all-count (1+ decode-all-count)) + (let ((res (condition-case nil + (apply decode-test src dsts opts) + (error nil)))) + (if (eq res t) + (progn + (setq decode-succ-count (1+ decode-succ-count)) + (insert "\n'dsucc")) + (insert (format "\n%S\n'dfail" res))) + res)) + +(setq encode-succ-count 0) +(setq encode-all-count 0) +(defun encode (src dsts &rest opts) + (if (stringp dsts) (setq dsts (list dsts))) + (setq encode-all-count (1+ encode-all-count)) + (let ((res (condition-case nil + (apply encode-test src dsts opts) + (error nil)))) + (if (eq res t) + (progn + (setq encode-succ-count (1+ encode-succ-count)) + (insert "\n'esucc")) + (insert (format "\n%S\n'efail" res))) + res)) + +(defun report () + (insert + (format "\n\"Decode: %d/%d Encode: %d/%d Total: %d/%d\"" + decode-succ-count decode-all-count + encode-succ-count encode-all-count + (+ decode-succ-count encode-succ-count) + (+ decode-all-count encode-all-count)))) + +;;; FLAM specific part (FLIM is OK) + +(if (< max-specpdl-size 1000) + (setq max-specpdl-size 1000)) + +(defun decode-flam (src dsts &rest opts) + (setq eword-lexical-analyze-cache nil) + (setq eword-decode-sticked-encoded-word + (or (memq 'permit-sticked-comment opts) + (memq 'permit-sticked-special opts))) + (setq eword-decode-quoted-encoded-word nil) + (with-temp-buffer + (insert src "\n" mail-header-separator) + (eword-decode-header 'us-ascii mail-header-separator) + (goto-char (point-min)) + (std11-narrow-to-header mail-header-separator) + (std11-field-end) + (let ((result (buffer-substring (point-min) (point)))) + (if (member result dsts) t result)))) + +(defun encode-flam (src dsts &rest opts) + (setq eword-lexical-analyze-cache nil) + (setq eword-decode-sticked-encoded-word nil) + (setq eword-decode-quoted-encoded-word nil) + (with-temp-buffer + (insert src "\n" mail-header-separator) + (goto-char (point-min)) + (eword-encode-header 'us-ascii) + (goto-char (point-min)) + (std11-narrow-to-header mail-header-separator) + (std11-field-end) + (let ((result (buffer-substring (point-min) (point)))) + (if (member result dsts) t result)))) + +;;;start-test + +;;; Section 1: Decoding examples from RFC2047 + +(decode +"From: =?US-ASCII?Q?Keith_Moore?= " +"From: Keith Moore ") + +(decode +"To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= " +"To: Keld J.ANxrn Simonsen ")*B + +(decode +"CC: =?ISO-8859-1?Q?Andr=E9?= Pirard " +"CC: Andr.ANi Pirard ")*B + +(decode +"Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= + =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=" +"Subject: If you can read this you understand the example.") + +(decode +"From: =?ISO-8859-1?Q?Olle_J=E4rnefors?= " +"From: Olle J.ANdrnefors ")*B + +(decode +"From: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= " +"From: Patrik F.ANdltstrNvm ")*B + +(decode +"From: Nathaniel Borenstein + (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" +"From: Nathaniel Borenstein (.HNmNeNlNy NoNa NiNlNhNtNp)")*B + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a?=)" +"From: foo@bar.baz (a)") + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a?= b)" +"From: foo@bar.baz (a b)") + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)" +"From: foo@bar.baz (ab)") + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)" +"From: foo@bar.baz (ab)") + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a?= + =?ISO-8859-1?Q?b?=)" +"From: foo@bar.baz (ab)") + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a_b?=)" +"From: foo@bar.baz (a b)") + +(decode +"From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)" +"From: foo@bar.baz (a b)") + +(decode +"Subject: (=?ISO-8859-1?Q?a?=)" +"Subject: (=?ISO-8859-1?Q?a?=)") + +(decode +"Subject: (=?ISO-8859-1?Q?a?= b)" +"Subject: (=?ISO-8859-1?Q?a?= b)") + +(decode +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)" +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") + +(decode +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)" +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") + +(decode +"Subject: (=?ISO-8859-1?Q?a?= + =?ISO-8859-1?Q?b?=)" +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") + +(decode +"Subject: (=?ISO-8859-1?Q?a_b?=)" +"Subject: (=?ISO-8859-1?Q?a_b?=)") + +(decode +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)" +"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)") + +;;; Section 2: Decoding proper inputs. + (decode "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= " "From: $B$"(B ") -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?= - " -"From: $B$"$$(B ") +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?= + " +"From: $B$"$$(B ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?= + " +"From: $B$"$$(B ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?= + " +"From: $B$"$$(B ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"ja \\\"a\\\"\" " +"From: $B$"(B \"ja \\\"a\\\"\" ") + +(decode +"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?= + =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" +"From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)") + +(decode +"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= " +"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b " +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b ") + +(decode +"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b " +"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b ") + +(decode +"From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" " +"From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" ") + +(decode +"From: \"\\\"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\\\"\\\\\" " +"From: \"\\\"\\\\\" $B$"(B \"\\\"\\\\\" ") + +(decode +"From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>" +"From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>") + +(decode +"From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= " +"From: $BAA(B ") + +(decode +"From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) " +"From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) ") + +(decode +"From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)" +"From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= " +"From: \"$B$"(B($B$"(B)\" ") + +(decode +"From: =?US-ASCII?Q?=28?= , =?US-ASCII?Q?=29?= " +"From: \"(\" , \")\" ") + +(decode +"From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= " +"From: \"a\\\"b$B$"(Bc\\\\\" ") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: $B$"(B") + +(decode +"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b") + +(decode +"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b" +"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b") + +(decode +"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)") + +(decode +"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)" +"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)") + +(decode +"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"") + +(decode +"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"" +"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"") + +(decode +"Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +"Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:") + +(decode +"Subject: =?ISO-2022-JP?B??=" +"Subject: =?ISO-2022-JP?B??=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a + =?ISO-2022-JP?B?GyRCJCQbKEI=?=" +"Subject: $B$"(B a $B$$(B") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?= + =?US-ASCII?Q?____________________________________________________________?= + =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=" +"Subject: $B0$(B $BR_(B") + +(decode +"From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= " +"From: \"abcdefghijklmnopqrst.AN!()\\\"\\\\\" ")*B + +(decode +"Subject: ?= =?" +"Subject: ?= =?") + +(decode +"Subject: \" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"" +"Subject: \" $B$"(B \"") + +(decode +"From: \"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\" " +"From: \"\\\\\" $B$"(B \"\" ") + +(decode +"Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B_=1B$B$\"=1B(B?=" +"Subject: $B$"(B $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?=" +"Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=" +"Subject: $B$"(B a .HN`")*B + +(decode +"Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" +"Subject: .HN`$BNm(B")*B + +(decode +"Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" +"Subject: .HN` $BNm(B")*B + +(decode +"Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?=" +"Subject: .FNC$B4X?t(B")*B + +(decode +"Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?=" +"Subject: .FNC$B4X?t(B")*B + +(decode +"Subject: =?Shift_JIS?B?gqA=?=" +"Subject: $B$"(B" +'quoted-encoded-word) + +(decode +"Subject: =?EUC-JP?B?pKI=?=" +"Subject: $B$"(B" +'quoted-encoded-word) + +(decode +"Subject: = =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: = $B$"(B") + +(decode +"Subject: =? =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =? $B$"(B") + +(decode +"Subject: =?ISO-2022-JP =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP $B$"(B") + +(decode +"Subject: =?ISO-2022-JP? =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP? $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?B =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?B? =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B? $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? $B$"(B") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: $B$"$"(B") + +(decode +"Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==") + +(decode +"From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +"From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(decode +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test") + +(decode +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" +'permit-sticked-special) + +;;; Section 3: Decoding melancholic inputs. + +(decode +"From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= " +"From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") + +(decode +"From: akr@jaist.ac.jp + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)" +"From: akr@jaist.ac.jp ($B$"(B\\a$B$$(B)") + +(decode +"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= " +"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) ") + +(decode +"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " +"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) ") + +(decode +"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= " +"From: (a)$B$"(B " +'permit-sticked-comment) + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " +"From: $B$"(B(b) " +'permit-sticked-comment) + +(decode +"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " +"From: (a)$B$"(B(b) " +'permit-sticked-comment) + +(decode +"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= " +"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" " +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" ") + +(decode +"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" " +"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=) + " +"From: $B$"(B($B$"(B) " +'permit-sticked-comment) + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"To: $B$"(B" +'permit-sticked-special) + +(decode +"To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"To: ,$B$"(B" +'permit-sticked-special) + +(decode +"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"To: akr@jaist.ac.jp,$B$"(B" +'permit-sticked-special) + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;") + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" +"To: $B$"(B:akr@jaist.ac.jp;" +'permit-sticked-special) + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;") + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" +"To: $B$"(B:$B$$(B;" +'ignore-76bytes-limit 'permit-sticked-special) + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=") + +(decode +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" +"To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" +'ignore-76bytes-limit 'permit-sticked-special) + +(decode +"Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject:$B$"(B" +'permit-sticked-special) + +;;; Section 4: Decoding invalid inputs. + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= + " +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= ") + +(decode +"From: akr@jaist.ac.jp + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)" +"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)") + +(decode +"From: akr@jaist.ac.jp + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" +"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)") + +(decode +"From: akr@jaist.ac.jp + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" +"From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" +'ignore-76bytes-limit) + +(decode +"Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?=" +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?=") + +(decode +"Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=" +"Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=") + +;;; Section 5: Encoding proper inputs. + +(encode +"From: $B$"(B " +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= ") + +(encode +"From: $B$"$$(B " +"From: =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= ") + +(encode +"From: $B$"(B $B$$(B " +"From: =?ISO-2022-JP?B?GyRCJCIbKEIgGyRCJCQbKEI=?= ") + +(encode +"From: .AN! N! "*B +"From: =?ISO-8859-1?Q?=A1_=A1?= ") + +(encode +"From: \"$B$"(B($B$"(B)\" " +"From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= ") + +(encode +"From: \"a\\\"b$B$"(Bc\\\\\" " +"From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= ") + +(encode +"Subject: $B0$(B $BR_(B" +"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?= + =?US-ASCII?Q?____________________________________________________________?= + =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=") + +(encode +"Subject: $B0$(B $BR_(B" +"Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w==" +'ignore-76bytes-limit 'ignore-75bytes-limit) + +(encode +"From: .AN! "*B +"From: =?ISO-8859-1?Q?=A1?= ") + +(encode +"From: \"abcdefghijklmnopqrst.AN!()\\\"\\\\\" "*B +"From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= ") + +(encode +"From: akr@jaist.ac.jp (abcdefghijklmnopqrst.AN!\\(\\)\"\\\\)"*B +"From: akr@jaist.ac.jp (=?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29\"=5C?=)") + +(encode +"Subject: $B$"(B a .HN`"*B +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=") + +(encode +"Subject: .HN`$BNm(B"*B +"Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=") + +(encode +"Subject: .HN` $BNm(B"*B +'("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" + "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?=")) + +(encode +"Subject: .FNC$B4X?t(B"*B +'("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?=" + "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?=")) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B)aaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa ($B$"$$(B)aaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaa + (=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ")) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa( $B$"$$(B)aaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaa( + =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ")) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B )aaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= + )aaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?= )aaaaaaaaaaaaaaaaaaaa ")) -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyRCJCQbKEI=?= - " -"From: $B$"$$(B ") +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B) aaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=) + aaaaaaaaaaaaaaaaaaaa ") -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyRCJCQbKEI=?= +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"(B $B$$(B)aaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: $B$"$$(B ") +'zero-characters-encoded-word-hack) -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= ") +'zero-characters-encoded-word-hack) -(decode -"From: akr@jaist.ac.jp - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)" -"From: akr@jaist.ac.jp ($B$"(B\\a$B$$(B)") +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'separate-sticked-tokens-for-fold) -(decode -"From: akr@jaist.ac.jp - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)" -"From: akr@jaist.ac.jp - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)") +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaa?= + =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= " +'encode-long-ascii-string-for-fold 'permit-sticked-special) -(decode -"From: akr@jaist.ac.jp - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" -"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)") +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaa " +'divide-atom-for-fold) -(decode -"From: akr@jaist.ac.jp - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" -"From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'("From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " + "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ") 'ignore-76bytes-limit) -(decode -"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?= - =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" -"From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)") +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa($B$"(B)aa " +"From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= + =?US-ASCII?Q?a?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa " +'encode-long-ascii-string-for-fold) -(decode -"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= " -"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") +(encode +"From: $B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa($B$"(B)aa " +"From: =?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==?= + =?US-ASCII?Q?aaaaaaaaaaaaaaa?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa" +'encode-long-ascii-string-for-fold) -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b " -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b ") +(encode +"From: ($B$"(B) " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) ") -(decode -"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b " -"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b ") +(encode +"From: (((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))) " +"From: ((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= " -"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") +(encode +"From: ((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))) " +"From: (((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyRCJCIbKEI=?=))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) ") +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))) " +"From: ((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyRCJCIbKEI=?=)))))))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " -"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) ") +(encode +"From: ((((((((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))))))))) " +"From: (((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= " -"From: (a)$B$"(B " -'permit-sticked-comment) +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))))) " +"From: + ((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " -"From: $B$"(B(b) " -'permit-sticked-comment) +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))))))))))) " +"From: + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: (a)$B$"(B(b) " -"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " -'permit-sticked-comment) +(encode +"From: ((((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))))) " +"From: + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= " -"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") +(encode +"From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))))))))))))))))) " +"From: + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" " -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" ") +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))))))))))))) " +"From: + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyhC?=((=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))) + " +'zero-characters-encoded-word-hack) -(decode -"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" " -"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" ") +(encode +"From: ()($B$"(B)() " +"From: ()(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)() ") -(decode -"From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" " -"From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" ") +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()() " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()() + ") -(decode -"From: \"\\\"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\\\"\\\\\" " -"From: \"\\\"\\\\\" $B$"(B \"\\\"\\\\\" ") +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()()()()() " +"From: + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()()()() + ") -(decode -"From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>" -"From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>") +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()()()()()() " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()()()()()()()()() + " +'zero-characters-encoded-word-hack) -(decode -"From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= " -"From: $BAA(B ") +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()()()()()()()()()() " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()(=?ISO-2022-JP?B?GyhC?= + =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()() " +'zero-characters-encoded-word-hack) -(decode -"From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) " -"From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) ") +(encode +"To: l@d ($B$"(B aaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") -(decode -"From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)" -"From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)") +(encode +"To: l@d ($B$"(B aaaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + aaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") -(decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= " -"From: \"$B$"(B($B$"(B)\" ") +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?= + =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +'encode-long-ascii-string-for-fold) + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()$B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?= + =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=()=?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +'encode-long-ascii-string-for-fold) + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $B$"(B)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $B$"(B)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +;---------------------------------------------------------------------------- + +;;; Section 6: Encoding melancholic inputs. + +(encode +"From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" +"From: akr@jaist.ac.jp + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" +'ignore-76bytes-limit) + +(encode +"From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" +"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?= + =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" +'zero-characters-encoded-word-hack) (encode "From: $B$"(B($B$"(B) " @@ -151,15 +989,6 @@ " 'separate-sticked-comment) -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=") - -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"To: $B$"(B" -'permit-sticked-special) - (encode "To: $B$"(B" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -170,15 +999,6 @@ "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= " 'separate-sticked-special) -(decode -"To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=") - -(decode -"To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"To: ,$B$"(B" -'permit-sticked-special) - (encode "To: ,$B$"(B" "To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -189,15 +1009,6 @@ "To: , =?ISO-2022-JP?B?GyRCJCIbKEI=?= " 'separate-sticked-special) -(decode -"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=") - -(decode -"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"To: akr@jaist.ac.jp,$B$"(B" -'permit-sticked-special) - (encode "To: akr@jaist.ac.jp,$B$"(B" "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -208,15 +1019,6 @@ "To: akr@jaist.ac.jp, =?ISO-2022-JP?B?GyRCJCIbKEI=?= " 'separate-sticked-special) -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;") - -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" -"To: $B$"(B:akr@jaist.ac.jp;" -'permit-sticked-special) - (encode "To: $B$"(B:akr@jaist.ac.jp;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" @@ -227,15 +1029,6 @@ "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;" 'separate-sticked-special) -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;") - -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" -"To: $B$"(B:$B$$(B;" -'ignore-76bytes-limit 'permit-sticked-special) - (encode "To: $B$"(B:$B$$(B;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" @@ -253,15 +1046,6 @@ ;" 'separate-sticked-special) -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=") - -(decode -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" -"To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" -'ignore-76bytes-limit 'permit-sticked-special) - (encode "To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" @@ -281,60 +1065,162 @@ =?ISO-2022-JP?B?GyRCJCgbKEI=?= " 'separate-sticked-special) -(decode -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"Subject: $B$"(B") +;;; Section 7: Using quoted-encoded-words. +;; +;; quoted-encoded-word $BI=8=(B +;; +;; RFC2047 $B$N%G%3!<%@$O@x:_E*$K(B($B%G%3!<%I7k2L$G$J$/(B) encoded-word $B$=$N$b$N$r(B +;; $B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#(B +;; +;; 1. $BCN$i$J$$(B charset $B$b$7$/$O(B encoding $B$,;XDj$5$l$F$$$?$H$-!#(B +;; =?unknown-charset?known-encoding?some-encoded-text?= +;; =?known-charset?unknown-encoding?some-encoded-text?= +;; =?unknown-charset?unknown-encoding?some-encoded-text?= +;; +;; 2. $B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#(B +;; Non ASCII $B3HD%(B RFC822 $B$NCf$K(B =?US-ASCII?Q?=0D=0A=0D=0A?= $B$N%G%3!<%I(B +;; $B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#(B +;; +;; $B$^$?!"%G%3!<%@$O(B encoded-word $B$N$h$&$K$_$($k%G%3!<%I7k2L$r=PNO$7$J$1(B +;; $B$l$P$J$i$J$$$3$H$b$"$k!#(B +;; +;; =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?= +;; +;; $B%G%3!<%@$,C1$J$kJ8;zNs$r=PNO$9$k>l9g!"C1=c$K$d$k$H(B encoded-word $B$=$N$b$N$H(B +;; encoded-word $B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#(B +;; $B$3$3$G$OJ8;zNsCf$G$=$l$i$r3Nl9g(B(0, 2, 4, ...): charset $B$N@hF,$N(B + $B$N?t$rH>J,$K$7$?J8;zNs(B +;; $B4q?t$N>l9g(B(1, 3, 5, ...): charset $B$N@hF,$N(B + $B$N?t$rH>J,(B($B>.?tE@0J2<(B +;; $B@Z$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs(B +;; =?+US-ASCII?Q?abcd?= $B$O(B abcd $B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"(B +;; $B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#(B +;; +;; $B$3$l$O$H$/$K(B Non ASCII $B3HD%(B RFC822 $B$NCf$K(B quoted-encoded-word $BI=8=$r(B +;; $BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#(B($BKd$a9~$s$@7k2L$O@5$7$$(B +;; quoted-encoded-word $BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#(B) (decode -"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=") +"Subject: =?Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) (decode -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b" -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b") +"Subject: =?US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" +"Subject: =?+US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" +'quoted-encoded-word) (decode -"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b" -"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b") +"Subject: =?US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" +"Subject: =?+US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" +'quoted-encoded-word) (decode -"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=") +"Subject: =?ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?= + =?ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?=" +"Subject: =?+ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?==?+ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?=" +'quoted-encoded-word) (decode -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)" -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)") +"Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) (decode -"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)" -"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)") +"Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) (decode -"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=") +"Subject: =?Unknown-Charset?B?gqA=?= + =?Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) (decode -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"" -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"") +"Subject: =?Unknown-Charset?B?gqA=?= + =?Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) (decode -"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"" -"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"") +"Subject: a=?Unknown-Charset?B?gqA=?=" +"Subject: a=?Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) (decode -"Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)" -"Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)") +"Subject: =?Unknown-Charset?B?gqA=?=b" +"Subject: =?Unknown-Charset?B?gqA=?=b" +'quoted-encoded-word) (decode -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:" -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:") +"Subject: a=?Unknown-Charset?B?gqA=?=b" +"Subject: a=?Unknown-Charset?B?gqA=?=b" +'quoted-encoded-word) (decode -"Subject: =?ISO-2022-JP?B??=" -"Subject: =?ISO-2022-JP?B??=") +"Subject: a =?Unknown-Charset?B?gqA=?= b" +"Subject: a =?+Unknown-Charset?B?gqA=?= b" +'quoted-encoded-word) (decode "Subject: =?ISO-2022-JP?B?DQoNCg==?=" -"Subject: ") +"Subject: =?+US-ASCII?Q?=0D=0A=0D=0A?=" +'quoted-encoded-word) + +(decode +"Subject: =?US-ASCII?Q?a=0D=0A_b?=" +"Subject: a=?+US-ASCII?Q?=0D=0A?= b" +'quoted-encoded-word) + +(decode +"Subject: =?US-ASCII?Q?a=0D=0Ab?=" +"Subject: a=?+US-ASCII?Q?=0D=0A?=b" +'quoted-encoded-word) + +;;;end-test + +(report) ;----------------------------------------------------------------------------