# 18 "parsing/lexer.mll" open Lexing open Misc open Parser type error = | Illegal_character of char | Illegal_escape of string * string option | Reserved_sequence of string * string option | Unterminated_comment of Location.t | Unterminated_string | Unterminated_string_in_comment of Location.t * Location.t | Empty_character_literal | Keyword_as_label of string | Invalid_literal of string | Invalid_directive of string * string option ;; exception Error of error * Location.t;; (* The table of keywords *) let keyword_table = create_hashtable 181 [ (* create_hashtable 149 [ *) "and", AND; "et", AND; (* TODO: French by @Naereen *) "as", AS; (*"comme", AS;*) (* TODO: French by @Naereen *) "assert", ASSERT; "impose", ASSERT; (* TODO: French by @Naereen *) "begin", BEGIN; "debut", BEGIN; (* TODO: French by @Naereen *) "class", CLASS; "constraint", CONSTRAINT; "do", DO; "faire", DO; (* TODO: French by @Naereen *) "done", DONE; "fait", DONE; (* TODO: French by @Naereen *) "downto", DOWNTO; "jusquadecroissant", DOWNTO; (* TODO: French by @Naereen *) "else", ELSE; "sinon", ELSE; (* TODO: French by @Naereen *) "end", END; "fin", END; (* TODO: French by @Naereen *) "exception", EXCEPTION; "external", EXTERNAL; "false", FALSE; "faux", FALSE; (* TODO: French by @Naereen *) "for", FOR; "pour", FOR; (* TODO: French by @Naereen *) "fun", FUN; "function", FUNCTION; (*"fonction", FUNCTION;*) (* TODO: French by @Naereen *) "functor", FUNCTOR; "if", IF; "si", IF; (* TODO: French by @Naereen *) "in", IN; "dans", IN; (* TODO: French by @Naereen *) "include", INCLUDE; (*"inclure", INCLUDE;*) (* TODO: French by @Naereen *) "inherit", INHERIT; "initializer", INITIALIZER; "lazy", LAZY; "let", LET; "soit", LET; (* TODO: French by @Naereen *) "match", MATCH; "filtre", MATCH; (* TODO: French by @Naereen *) "method", METHOD; "module", MODULE; "mutable", MUTABLE; "new", NEW; (*"nouveau", NEW;*) (* TODO: French by @Naereen *) "nonrec", NONREC; (*"nonrecursif", NONREC;*) (* TODO: French by @Naereen *) "object", OBJECT; "of", OF; (*"de", OF;*) (* TODO: French by @Naereen *) "open", OPEN; "ouvre", OPEN; (* TODO: French by @Naereen *) "or", OR; "ou", OR; (* TODO: French by @Naereen *) (* "parser", PARSER; *) "private", PRIVATE; "rec", REC; "recursif", REC; (* TODO: French by @Naereen *) "sig", SIG; "struct", STRUCT; "then", THEN; "alors", THEN; (* TODO: French by @Naereen *) "to", TO; "jusqua", TO; (* TODO: French by @Naereen *) "true", TRUE; "vrai", TRUE; (* TODO: French by @Naereen *) "try", TRY; "essayer", TRY; (* TODO: French by @Naereen *) "type", TYPE; "val", VAL; "virtual", VIRTUAL; "when", WHEN; "quand", WHEN; (* TODO: French by @Naereen *) "while", WHILE; "tantque", WHILE; (* TODO: French by @Naereen *) "with", WITH; "avec", WITH; (* TODO: French by @Naereen *) "lor", INFIXOP3("lor"); (* Should be INFIXOP2 *) "lxor", INFIXOP3("lxor"); (* Should be INFIXOP2 *) "mod", INFIXOP3("mod"); "land", INFIXOP3("land"); "lsl", INFIXOP4("lsl"); "lsr", INFIXOP4("lsr"); "asr", INFIXOP4("asr") ] (* To buffer string literals *) let string_buffer = Buffer.create 256 let reset_string_buffer () = Buffer.reset string_buffer let get_stored_string () = Buffer.contents string_buffer let store_string_char c = Buffer.add_char string_buffer c let store_string_utf_8_uchar u = Buffer.add_utf_8_uchar string_buffer u let store_string s = Buffer.add_string string_buffer s let store_lexeme lexbuf = store_string (Lexing.lexeme lexbuf) (* To store the position of the beginning of a string and comment *) let string_start_loc = ref Location.none;; let comment_start_loc = ref [];; let in_comment () = !comment_start_loc <> [];; let is_in_string = ref false let in_string () = !is_in_string let print_warnings = ref true (* Escaped chars are interpreted in strings unless they are in comments. *) let store_escaped_char lexbuf c = if in_comment () then store_lexeme lexbuf else store_string_char c let store_escaped_uchar lexbuf u = if in_comment () then store_lexeme lexbuf else store_string_utf_8_uchar u let compute_quoted_string_idloc {Location.loc_start = orig_loc } shift id = let id_start_pos = orig_loc.Lexing.pos_cnum + shift in let loc_start = Lexing.{orig_loc with pos_cnum = id_start_pos } in let loc_end = Lexing.{orig_loc with pos_cnum = id_start_pos + String.length id} in {Location. loc_start ; loc_end ; loc_ghost = false } let wrap_string_lexer f lexbuf = let loc_start = lexbuf.lex_curr_p in reset_string_buffer(); is_in_string := true; let string_start = lexbuf.lex_start_p in string_start_loc := Location.curr lexbuf; let loc_end = f lexbuf in is_in_string := false; lexbuf.lex_start_p <- string_start; let loc = Location.{loc_ghost= false; loc_start; loc_end} in get_stored_string (), loc let wrap_comment_lexer comment lexbuf = let start_loc = Location.curr lexbuf in comment_start_loc := [start_loc]; reset_string_buffer (); let end_loc = comment lexbuf in let s = get_stored_string () in reset_string_buffer (); s, { start_loc with Location.loc_end = end_loc.Location.loc_end } let error lexbuf e = raise (Error(e, Location.curr lexbuf)) let error_loc loc e = raise (Error(e, loc)) (* to translate escape sequences *) let digit_value c = match c with | 'a' .. 'f' -> 10 + Char.code c - Char.code 'a' | 'A' .. 'F' -> 10 + Char.code c - Char.code 'A' | '0' .. '9' -> Char.code c - Char.code '0' | _ -> assert false let num_value lexbuf ~base ~first ~last = let c = ref 0 in for i = first to last do let v = digit_value (Lexing.lexeme_char lexbuf i) in assert(v < base); c := (base * !c) + v done; !c let char_for_backslash = function | 'n' -> '\010' | 'r' -> '\013' | 'b' -> '\008' | 't' -> '\009' | c -> c let illegal_escape lexbuf reason = let error = Illegal_escape (Lexing.lexeme lexbuf, Some reason) in raise (Error (error, Location.curr lexbuf)) let char_for_decimal_code lexbuf i = let c = num_value lexbuf ~base:10 ~first:i ~last:(i+2) in if (c < 0 || c > 255) then if in_comment () then 'x' else illegal_escape lexbuf (Printf.sprintf "%d is outside the range of legal characters (0-255)." c) else Char.chr c let char_for_octal_code lexbuf i = let c = num_value lexbuf ~base:8 ~first:i ~last:(i+2) in if (c < 0 || c > 255) then if in_comment () then 'x' else illegal_escape lexbuf (Printf.sprintf "o%o (=%d) is outside the range of legal characters (0-255)." c c) else Char.chr c let char_for_hexadecimal_code lexbuf i = Char.chr (num_value lexbuf ~base:16 ~first:i ~last:(i+1)) let uchar_for_uchar_escape lexbuf = let len = Lexing.lexeme_end lexbuf - Lexing.lexeme_start lexbuf in let first = 3 (* skip opening \u{ *) in let last = len - 2 (* skip closing } *) in let digit_count = last - first + 1 in match digit_count > 6 with | true -> illegal_escape lexbuf "too many digits, expected 1 to 6 hexadecimal digits" | false -> let cp = num_value lexbuf ~base:16 ~first ~last in if Uchar.is_valid cp then Uchar.unsafe_of_int cp else illegal_escape lexbuf (Printf.sprintf "%X is not a Unicode scalar value" cp) let is_keyword name = Hashtbl.mem keyword_table name let check_label_name lexbuf name = if is_keyword name then error lexbuf (Keyword_as_label name) (* Update the current location with file name and line number. *) let update_loc lexbuf file line absolute chars = let pos = lexbuf.lex_curr_p in let new_file = match file with | None -> pos.pos_fname | Some s -> s in lexbuf.lex_curr_p <- { pos with pos_fname = new_file; pos_lnum = if absolute then line else pos.pos_lnum + line; pos_bol = pos.pos_cnum - chars; } ;; let preprocessor = ref None let escaped_newlines = ref false (* Warn about Latin-1 characters used in idents *) let warn_latin1 lexbuf = Location.deprecated (Location.curr lexbuf) "ISO-Latin1 characters in identifiers" let handle_docstrings = ref true let comment_list = ref [] let add_comment com = comment_list := com :: !comment_list let add_docstring_comment ds = let com = ("*" ^ Docstrings.docstring_body ds, Docstrings.docstring_loc ds) in add_comment com let comments () = List.rev !comment_list (* Error report *) open Format let prepare_error loc = function | Illegal_character c -> Location.errorf ~loc "Illegal character (%s)" (Char.escaped c) | Illegal_escape (s, explanation) -> Location.errorf ~loc "Illegal backslash escape in string or character (%s)%t" s (fun ppf -> match explanation with | None -> () | Some expl -> fprintf ppf ": %s" expl) | Reserved_sequence (s, explanation) -> Location.errorf ~loc "Reserved character sequence: %s%t" s (fun ppf -> match explanation with | None -> () | Some expl -> fprintf ppf " %s" expl) | Unterminated_comment _ -> Location.errorf ~loc "Comment not terminated" | Unterminated_string -> Location.errorf ~loc "String literal not terminated" | Unterminated_string_in_comment (_, literal_loc) -> Location.errorf ~loc "This comment contains an unterminated string literal" ~sub:[Location.msg ~loc:literal_loc "String literal begins here"] | Empty_character_literal -> let msg = "Illegal empty character literal ''" in let sub = [Location.msg "Hint: Did you mean ' ' or a type variable 'a?"] in Location.error ~loc ~sub msg | Keyword_as_label kwd -> Location.errorf ~loc "`%s' is a keyword, it cannot be used as label name" kwd | Invalid_literal s -> Location.errorf ~loc "Invalid literal %s" s | Invalid_directive (dir, explanation) -> Location.errorf ~loc "Invalid lexer directive %S%t" dir (fun ppf -> match explanation with | None -> () | Some expl -> fprintf ppf ": %s" expl) let () = Location.register_error_of_exn (function | Error (err, loc) -> Some (prepare_error loc err) | _ -> None ) # 347 "parsing/lexer.ml" let __ocaml_lex_tables = { Lexing.lex_base = "\000\000\155\255\156\255\224\000\003\001\038\001\073\001\108\001\ \143\001\181\255\178\001\215\001\189\255\091\000\252\001\031\002\ \068\000\071\000\066\002\207\255\209\255\212\255\101\002\136\002\ \171\002\088\000\255\000\201\002\235\255\029\003\113\003\197\003\ \149\004\101\005\053\006\005\007\213\007\180\008\016\009\147\009\ \231\009\122\000\254\255\001\000\005\000\255\255\006\000\007\000\ \198\010\228\010\180\011\249\255\248\255\147\012\204\255\250\255\ \177\012\129\013\246\255\245\255\081\014\045\015\032\004\253\015\ \217\016\240\004\016\009\178\017\006\018\090\018\174\018\002\019\ \086\019\170\019\254\019\082\020\166\020\087\000\250\020\078\021\ \162\021\246\021\074\022\108\000\187\255\160\005\234\255\169\002\ \111\006\188\022\000\011\233\255\063\007\046\023\232\255\003\004\ \160\023\205\012\231\255\015\008\018\024\230\255\211\004\222\255\ \109\024\106\000\107\000\011\000\229\255\228\255\223\255\255\011\ \118\000\126\000\108\000\227\255\224\000\109\000\226\255\136\000\ \003\001\110\000\225\255\204\013\111\000\224\255\217\000\218\255\ \222\000\217\255\248\000\134\024\216\255\201\024\236\024\017\025\ \052\025\087\025\199\255\200\255\201\255\197\255\122\025\115\000\ \183\000\190\255\191\255\192\255\219\000\177\255\175\255\184\255\ \157\025\180\255\182\255\192\025\227\025\006\026\041\026\192\002\ \205\008\080\001\038\001\115\001\103\026\241\255\188\026\243\255\ \012\000\244\255\252\013\028\011\253\255\250\000\251\000\255\255\ \254\255\252\255\233\012\056\016\056\027\105\015\084\027\021\017\ \198\027\033\028\003\001\004\001\013\000\251\255\250\255\249\255\ \156\014\038\001\202\002\005\001\248\255\032\004\020\001\247\255\ \189\003\240\004\021\001\246\255\067\028\029\001\245\255\017\000\ \236\001\245\255\246\255\247\255\018\000\138\028\255\255\248\255\ \202\000\172\028\235\005\186\006\253\255\073\001\094\001\111\001\ \138\007\252\255\090\008\180\008\251\255\211\028\250\255\234\028\ \016\029\249\255\113\001\150\001\252\255\118\009\254\255\255\255\ \129\001\130\001\253\255\045\029\038\001\044\001\098\001\107\001\ \045\001\142\001\044\001\019\000\255\255"; Lexing.lex_backtrk = "\255\255\255\255\255\255\095\000\094\000\091\000\090\000\083\000\ \081\000\255\255\072\000\069\000\255\255\062\000\061\000\059\000\ \057\000\053\000\086\000\255\255\255\255\255\255\041\000\040\000\ \047\000\045\000\044\000\067\000\255\255\015\000\015\000\014\000\ \013\000\012\000\011\000\011\000\011\000\008\000\050\000\004\000\ \003\000\002\000\255\255\100\000\100\000\255\255\255\255\255\255\ \089\000\255\255\255\255\255\255\255\255\052\000\255\255\255\255\ \255\255\255\255\255\255\255\255\011\000\011\000\097\000\011\000\ \011\000\098\000\019\000\019\000\017\000\016\000\019\000\016\000\ \016\000\015\000\017\000\016\000\017\000\255\255\018\000\018\000\ \015\000\015\000\017\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\032\000\ \032\000\032\000\032\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\034\000\255\255\ \035\000\255\255\036\000\093\000\255\255\096\000\042\000\092\000\ \087\000\049\000\255\255\255\255\255\255\255\255\060\000\079\000\ \076\000\255\255\255\255\255\255\077\000\255\255\255\255\255\255\ \070\000\255\255\255\255\088\000\082\000\085\000\084\000\255\255\ \255\255\255\255\255\255\000\000\255\255\255\255\013\000\255\255\ \014\000\255\255\014\000\014\000\255\255\014\000\014\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\010\000\010\000\255\255\255\255\ \007\000\007\000\007\000\007\000\255\255\001\000\007\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\003\000\255\255\255\255\ \003\000\255\255\255\255\255\255\002\000\255\255\255\255\001\000\ \255\255\255\255\255\255\255\255\255\255"; Lexing.lex_default = "\001\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\000\000\000\000\000\000\255\255\255\255\ \255\255\255\255\105\000\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\255\255\255\255\000\000\255\255\255\255\ \255\255\255\255\255\255\000\000\000\000\255\255\000\000\000\000\ \255\255\255\255\000\000\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\000\000\255\255\000\000\255\255\ \255\255\255\255\255\255\000\000\255\255\255\255\000\000\255\255\ \255\255\255\255\000\000\255\255\255\255\000\000\255\255\000\000\ \110\000\255\255\255\255\255\255\000\000\000\000\000\000\255\255\ \255\255\255\255\255\255\000\000\255\255\255\255\000\000\255\255\ \255\255\255\255\000\000\255\255\255\255\000\000\255\255\000\000\ \255\255\000\000\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\000\000\000\000\000\000\000\000\255\255\255\255\ \255\255\000\000\000\000\000\000\255\255\000\000\000\000\000\000\ \255\255\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\161\000\255\255\163\000\165\000\000\000\255\255\000\000\ \255\255\000\000\186\000\255\255\000\000\255\255\255\255\000\000\ \000\000\000\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\000\000\000\000\000\000\ \255\255\255\255\255\255\255\255\000\000\255\255\255\255\000\000\ \255\255\255\255\255\255\000\000\255\255\255\255\000\000\255\255\ \209\000\000\000\000\000\000\000\255\255\215\000\000\000\000\000\ \255\255\255\255\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\000\000\255\255\255\255\000\000\255\255\000\000\255\255\ \255\255\000\000\255\255\236\000\000\000\255\255\000\000\000\000\ \255\255\255\255\000\000\255\255\255\255\255\255\246\000\249\000\ \255\255\249\000\255\255\255\255\000\000"; Lexing.lex_trans = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\041\000\042\000\042\000\041\000\043\000\047\000\045\000\ \045\000\042\000\046\000\046\000\047\000\106\000\167\000\187\000\ \107\000\207\000\188\000\167\000\211\000\252\000\207\000\234\000\ \041\000\008\000\028\000\023\000\006\000\004\000\022\000\026\000\ \025\000\020\000\024\000\007\000\019\000\018\000\038\000\003\000\ \030\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\017\000\016\000\015\000\014\000\010\000\037\000\ \005\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\013\000\044\000\012\000\005\000\040\000\ \021\000\035\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\036\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\027\000\011\000\009\000\039\000\141\000\ \143\000\140\000\126\000\041\000\139\000\138\000\041\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\109\000\108\000\115\000\118\000\122\000\125\000\146\000\ \150\000\145\000\041\000\144\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\119\000\119\000\ \119\000\119\000\119\000\119\000\119\000\119\000\116\000\116\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\147\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\148\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \002\000\003\000\127\000\128\000\003\000\003\000\003\000\129\000\ \130\000\106\000\003\000\003\000\107\000\003\000\003\000\003\000\ \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ \117\000\117\000\003\000\149\000\003\000\003\000\003\000\003\000\ \003\000\129\000\130\000\176\000\003\000\175\000\103\000\003\000\ \003\000\003\000\191\000\190\000\196\000\003\000\003\000\162\000\ \003\000\003\000\003\000\121\000\121\000\121\000\121\000\121\000\ \121\000\121\000\121\000\199\000\203\000\003\000\003\000\003\000\ \003\000\003\000\003\000\003\000\206\000\231\000\162\000\005\000\ \161\000\245\000\005\000\005\000\005\000\246\000\250\000\251\000\ \005\000\005\000\221\000\005\000\005\000\005\000\200\000\200\000\ \200\000\200\000\255\255\104\000\003\000\255\255\003\000\000\000\ \005\000\003\000\005\000\005\000\005\000\005\000\005\000\000\000\ \221\000\221\000\006\000\223\000\247\000\006\000\006\000\006\000\ \000\000\000\000\163\000\006\000\006\000\248\000\006\000\006\000\ \006\000\221\000\000\000\211\000\223\000\255\255\234\000\003\000\ \255\255\003\000\000\000\006\000\005\000\006\000\006\000\006\000\ \006\000\006\000\000\000\239\000\239\000\135\000\241\000\241\000\ \135\000\135\000\135\000\000\000\000\000\000\000\135\000\135\000\ \248\000\135\000\158\000\135\000\000\000\000\000\000\000\000\000\ \239\000\000\000\005\000\240\000\005\000\000\000\135\000\006\000\ \135\000\157\000\135\000\135\000\135\000\000\000\000\000\000\000\ \155\000\000\000\155\000\155\000\155\000\155\000\000\000\000\000\ \000\000\155\000\155\000\000\000\155\000\155\000\155\000\000\000\ \000\000\000\000\000\000\000\000\000\000\006\000\000\000\006\000\ \000\000\155\000\135\000\155\000\156\000\155\000\155\000\155\000\ \000\000\000\000\000\000\006\000\000\000\000\000\006\000\006\000\ \006\000\000\000\000\000\000\000\006\000\006\000\000\000\006\000\ \006\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\ \135\000\000\000\135\000\000\000\006\000\155\000\006\000\006\000\ \006\000\006\000\006\000\000\000\000\000\000\000\211\000\000\000\ \006\000\212\000\000\000\006\000\006\000\006\000\000\000\255\255\ \000\000\006\000\006\000\000\000\006\000\006\000\006\000\000\000\ \000\000\000\000\000\000\155\000\000\000\155\000\214\000\154\000\ \006\000\006\000\237\000\006\000\006\000\006\000\006\000\006\000\ \000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\ \006\000\006\000\006\000\000\000\000\000\000\000\006\000\006\000\ \000\000\006\000\006\000\006\000\000\000\000\000\006\000\153\000\ \006\000\000\000\000\000\000\000\151\000\006\000\006\000\000\000\ \006\000\006\000\006\000\006\000\006\000\000\000\000\000\000\000\ \006\000\000\000\000\000\006\000\006\000\006\000\000\000\000\000\ \213\000\006\000\006\000\000\000\142\000\006\000\006\000\000\000\ \255\255\000\000\000\000\152\000\000\000\006\000\000\000\000\000\ \000\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\ \000\000\000\000\255\255\135\000\000\000\000\000\135\000\135\000\ \135\000\000\000\000\000\255\255\135\000\135\000\000\000\135\000\ \136\000\135\000\000\000\255\255\000\000\000\000\000\000\000\000\ \006\000\000\000\006\000\000\000\135\000\006\000\135\000\135\000\ \137\000\135\000\135\000\000\000\000\000\000\000\006\000\000\000\ \000\000\006\000\006\000\134\000\000\000\000\000\255\255\006\000\ \006\000\000\000\006\000\006\000\006\000\000\000\238\000\000\000\ \000\000\000\000\000\000\006\000\000\000\006\000\000\000\006\000\ \135\000\006\000\006\000\006\000\006\000\006\000\000\000\000\000\ \000\000\133\000\000\000\133\000\133\000\133\000\133\000\000\000\ \000\000\000\000\133\000\133\000\000\000\133\000\133\000\133\000\ \000\000\000\000\000\000\000\000\000\000\000\000\135\000\000\000\ \135\000\000\000\133\000\006\000\133\000\133\000\133\000\133\000\ \133\000\159\000\000\000\000\000\003\000\000\000\000\000\003\000\ \003\000\003\000\000\000\000\000\132\000\131\000\003\000\000\000\ \003\000\003\000\003\000\000\000\000\000\000\000\000\000\000\000\ \159\000\006\000\000\000\006\000\000\000\003\000\133\000\003\000\ \003\000\003\000\003\000\003\000\210\000\000\000\085\000\000\000\ \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ \160\000\160\000\197\000\197\000\197\000\197\000\197\000\197\000\ \197\000\197\000\197\000\197\000\133\000\084\000\133\000\000\000\ \087\000\003\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\000\000\086\000\000\000\003\000\ \087\000\003\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\066\000\086\000\000\000\000\000\ \000\000\000\000\000\000\068\000\000\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\066\000\066\000\ \066\000\066\000\067\000\066\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \000\000\000\000\000\000\000\000\029\000\000\000\066\000\066\000\ \066\000\066\000\067\000\066\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \066\000\000\000\000\000\000\000\000\000\000\000\000\000\068\000\ \000\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\066\000\070\000\066\000\066\000\067\000\066\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \071\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\072\000\069\000\069\000\000\000\000\000\000\000\000\000\ \029\000\000\000\066\000\070\000\066\000\066\000\067\000\066\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \071\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\072\000\069\000\069\000\031\000\201\000\201\000\201\000\ \201\000\201\000\201\000\201\000\201\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\031\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\062\000\000\000\000\000\062\000\062\000\062\000\000\000\ \000\000\000\000\062\000\062\000\000\000\062\000\000\000\062\000\ \198\000\198\000\198\000\198\000\198\000\198\000\198\000\198\000\ \198\000\198\000\062\000\000\000\000\000\062\000\062\000\062\000\ \062\000\000\000\095\000\000\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\062\000\094\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\062\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\032\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \000\000\000\000\000\000\000\000\032\000\000\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \000\000\065\000\000\000\000\000\065\000\065\000\065\000\000\000\ \000\000\000\000\065\000\065\000\000\000\065\000\000\000\065\000\ \202\000\202\000\202\000\202\000\202\000\202\000\202\000\202\000\ \000\000\000\000\065\000\000\000\000\000\065\000\065\000\065\000\ \065\000\000\000\102\000\000\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\065\000\101\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\065\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\033\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\000\000\000\000\000\000\033\000\088\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\000\000\000\000\000\000\000\000\089\000\ \000\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\226\000\226\000\226\000\226\000\226\000\ \226\000\226\000\226\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\000\000\000\000\000\000\000\000\096\000\000\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\224\000\224\000\224\000\224\000\224\000\224\000\ \224\000\224\000\224\000\224\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\063\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\000\000\000\000\000\000\000\000\093\000\000\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\225\000\225\000\225\000\225\000\225\000\225\000\ \225\000\225\000\225\000\225\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\000\000\034\000\034\000\ \034\000\034\000\060\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\000\000\000\000\000\000\000\000\100\000\000\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\227\000\227\000\227\000\227\000\227\000\227\000\ \227\000\227\000\000\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\048\000\162\000\048\000\ \048\000\048\000\048\000\000\000\000\000\000\000\048\000\048\000\ \000\000\048\000\048\000\048\000\228\000\228\000\228\000\228\000\ \228\000\228\000\228\000\228\000\000\000\162\000\048\000\161\000\ \048\000\048\000\048\000\048\000\048\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\160\000\160\000\160\000\ \160\000\160\000\160\000\160\000\160\000\160\000\160\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\048\000\057\000\000\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\000\000\ \048\000\053\000\048\000\000\000\053\000\053\000\053\000\066\000\ \000\000\000\000\053\000\053\000\000\000\053\000\054\000\053\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\053\000\000\000\000\000\053\000\053\000\053\000\ \053\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\000\000\000\000\000\000\053\000\066\000\ \000\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\000\000\053\000\000\000\055\000\000\000\ \000\000\000\000\000\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\000\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\048\000\000\000\048\000\048\000\ \048\000\048\000\000\000\000\000\000\000\048\000\048\000\000\000\ \048\000\048\000\048\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\048\000\000\000\048\000\ \048\000\048\000\048\000\048\000\000\000\243\000\000\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\048\000\050\000\242\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\034\000\048\000\ \000\000\048\000\000\000\000\000\000\000\000\000\000\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\000\000\000\000\000\000\000\000\034\000\000\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\000\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\000\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\000\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\048\000\ \000\000\048\000\048\000\048\000\048\000\000\000\000\000\000\000\ \048\000\048\000\000\000\048\000\048\000\048\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \048\000\000\000\048\000\048\000\048\000\048\000\048\000\000\000\ \000\000\090\000\000\000\049\000\090\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\052\000\000\000\ \090\000\000\000\000\000\000\000\048\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\000\000\ \000\000\179\000\048\000\049\000\048\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\095\000\ \000\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\178\000\094\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\000\000\ \177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\000\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\050\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\051\000\000\000\ \000\000\000\000\000\000\000\000\000\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\000\000\ \000\000\000\000\000\000\050\000\000\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\123\000\ \123\000\123\000\123\000\123\000\123\000\123\000\123\000\123\000\ \123\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \123\000\123\000\123\000\123\000\123\000\123\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \123\000\123\000\123\000\123\000\123\000\123\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\000\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\000\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\053\000\000\000\000\000\053\000\ \053\000\053\000\000\000\000\000\000\000\053\000\053\000\000\000\ \053\000\053\000\053\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\053\000\000\000\053\000\ \053\000\053\000\053\000\053\000\000\000\000\000\097\000\000\000\ \056\000\097\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\059\000\000\000\097\000\000\000\000\000\ \000\000\053\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\000\000\000\000\000\000\053\000\ \056\000\053\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\102\000\000\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \178\000\101\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\000\000\177\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \000\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \057\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\058\000\000\000\000\000\000\000\000\000\ \000\000\000\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\000\000\000\000\000\000\000\000\ \057\000\000\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\124\000\124\000\124\000\124\000\ \124\000\124\000\124\000\124\000\124\000\124\000\187\000\000\000\ \000\000\188\000\000\000\000\000\000\000\124\000\124\000\124\000\ \124\000\124\000\124\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\124\000\124\000\124\000\ \124\000\124\000\124\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \185\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \034\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\000\000\000\000\000\000\000\000\ \034\000\000\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\061\000\034\000\034\000\ \034\000\034\000\034\000\034\000\204\000\204\000\204\000\204\000\ \204\000\204\000\204\000\204\000\204\000\204\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\204\000\204\000\204\000\ \204\000\204\000\204\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\255\255\204\000\204\000\204\000\ \204\000\204\000\204\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\062\000\000\000\062\000\034\000\000\000\000\000\062\000\ \062\000\000\000\062\000\000\000\062\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\062\000\062\000\062\000\000\000\062\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\062\000\034\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\062\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\000\000\000\000\000\000\000\000\ \180\000\000\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\181\000\034\000\034\000\ \034\000\064\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\000\000\000\000\000\000\000\000\180\000\ \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\065\000\000\000\065\000\ \034\000\000\000\000\000\065\000\065\000\000\000\065\000\000\000\ \065\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\000\000\065\000\065\000\065\000\ \000\000\065\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\000\000\000\000\000\000\065\000\ \034\000\000\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\000\000\065\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \000\000\000\000\000\000\000\000\184\000\000\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\066\000\000\000\000\000\000\000\083\000\000\000\083\000\ \000\000\000\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\066\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\066\000\ \066\000\066\000\066\000\067\000\066\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\000\000\000\000\000\000\000\000\068\000\000\000\066\000\ \066\000\066\000\066\000\067\000\066\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\066\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\066\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\081\000\081\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\000\000\000\000\000\000\000\000\066\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\066\000\066\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\066\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\073\000\ \073\000\073\000\073\000\073\000\073\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\000\000\000\000\000\000\000\000\066\000\000\000\073\000\ \073\000\073\000\073\000\073\000\073\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\000\000\000\000\000\000\000\000\000\000\000\000\ \074\000\000\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\073\000\073\000\073\000\073\000\073\000\ \073\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\075\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\000\000\000\000\000\000\ \000\000\073\000\000\000\073\000\073\000\073\000\073\000\073\000\ \073\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\075\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\066\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\074\000\ \074\000\074\000\074\000\074\000\074\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\079\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\000\000\000\000\000\000\000\000\074\000\000\000\074\000\ \074\000\074\000\074\000\074\000\074\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\079\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\066\000\000\000\000\000\000\000\077\000\000\000\077\000\ \000\000\000\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\066\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\000\000\000\000\000\000\000\000\076\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\066\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\066\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\000\000\000\000\ \000\000\077\000\000\000\077\000\000\000\000\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\000\000\000\000\000\000\000\000\066\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\066\000\066\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\000\000\000\000\000\000\ \000\000\080\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\066\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\081\000\081\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\000\000\000\000\000\000\000\000\081\000\000\000\066\000\ \066\000\066\000\066\000\066\000\066\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\066\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\000\000\000\000\000\000\ \000\000\082\000\000\000\066\000\066\000\066\000\066\000\066\000\ \066\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\090\000\000\000\000\000\ \090\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\090\000\000\000\000\000\000\000\ \000\000\000\000\000\000\089\000\000\000\000\000\000\000\000\000\ \000\000\000\000\092\000\000\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\000\000\ \000\000\000\000\000\000\089\000\000\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\090\000\ \091\000\000\000\090\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\090\000\000\000\ \000\000\000\000\000\000\000\000\000\000\093\000\000\000\000\000\ \000\000\000\000\000\000\000\000\092\000\000\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\000\000\000\000\000\000\000\000\093\000\000\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\097\000\091\000\000\000\097\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \097\000\000\000\000\000\000\000\000\000\000\000\000\000\096\000\ \000\000\000\000\000\000\000\000\000\000\000\000\099\000\000\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\000\000\000\000\000\000\000\000\096\000\ \000\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\097\000\098\000\000\000\097\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\097\000\000\000\000\000\000\000\000\000\000\000\ \000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\ \099\000\000\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\000\000\000\000\000\000\ \000\000\100\000\000\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\114\000\098\000\114\000\ \000\000\000\000\000\000\000\000\114\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\131\000\ \000\000\000\000\131\000\131\000\131\000\000\000\000\000\000\000\ \131\000\131\000\000\000\131\000\131\000\131\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \131\000\000\000\131\000\131\000\131\000\131\000\131\000\000\000\ \000\000\114\000\000\000\000\000\000\000\000\000\000\000\114\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\114\000\112\000\000\000\000\000\114\000\ \000\000\114\000\000\000\000\000\131\000\111\000\000\000\000\000\ \000\000\000\000\133\000\000\000\133\000\133\000\133\000\133\000\ \000\000\000\000\000\000\133\000\133\000\000\000\133\000\133\000\ \133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\131\000\133\000\131\000\133\000\133\000\133\000\ \133\000\133\000\000\000\000\000\000\000\006\000\000\000\000\000\ \006\000\006\000\006\000\000\000\000\000\000\000\006\000\006\000\ \000\000\006\000\006\000\006\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\006\000\133\000\ \006\000\006\000\006\000\006\000\006\000\000\000\000\000\000\000\ \000\000\000\000\135\000\000\000\000\000\135\000\135\000\135\000\ \000\000\000\000\000\000\135\000\135\000\000\000\135\000\135\000\ \135\000\000\000\000\000\000\000\000\000\133\000\000\000\133\000\ \000\000\000\000\006\000\135\000\000\000\135\000\135\000\135\000\ \135\000\135\000\000\000\000\000\000\000\135\000\000\000\000\000\ \135\000\135\000\135\000\000\000\000\000\000\000\135\000\135\000\ \000\000\135\000\135\000\135\000\000\000\000\000\000\000\000\000\ \006\000\000\000\006\000\000\000\000\000\255\255\135\000\135\000\ \135\000\135\000\135\000\135\000\135\000\000\000\000\000\000\000\ \135\000\000\000\000\000\135\000\135\000\135\000\000\000\000\000\ \000\000\135\000\135\000\000\000\135\000\135\000\135\000\000\000\ \000\000\000\000\000\000\000\000\000\000\135\000\000\000\135\000\ \000\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ \000\000\000\000\000\000\006\000\000\000\000\000\006\000\006\000\ \006\000\000\000\000\000\000\000\006\000\006\000\000\000\006\000\ \006\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\ \135\000\000\000\135\000\000\000\006\000\135\000\006\000\006\000\ \006\000\006\000\006\000\000\000\000\000\000\000\006\000\000\000\ \000\000\006\000\006\000\006\000\000\000\000\000\000\000\006\000\ \006\000\000\000\006\000\006\000\006\000\000\000\000\000\000\000\ \000\000\000\000\000\000\135\000\000\000\135\000\000\000\006\000\ \006\000\006\000\006\000\006\000\006\000\006\000\000\000\000\000\ \000\000\155\000\000\000\155\000\155\000\155\000\155\000\000\000\ \000\000\000\000\155\000\155\000\000\000\155\000\155\000\155\000\ \000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\ \006\000\000\000\155\000\006\000\155\000\155\000\155\000\155\000\ \155\000\000\000\000\000\000\000\155\000\000\000\155\000\155\000\ \155\000\155\000\000\000\000\000\000\000\155\000\155\000\000\000\ \155\000\155\000\155\000\000\000\000\000\000\000\000\000\000\000\ \000\000\006\000\000\000\006\000\000\000\155\000\155\000\155\000\ \155\000\155\000\155\000\155\000\000\000\000\000\000\000\135\000\ \000\000\000\000\135\000\135\000\135\000\000\000\000\000\000\000\ \135\000\135\000\000\000\135\000\135\000\135\000\000\000\000\000\ \000\000\000\000\000\000\000\000\155\000\000\000\155\000\000\000\ \135\000\155\000\135\000\135\000\135\000\135\000\135\000\000\000\ \000\000\000\000\135\000\000\000\000\000\135\000\135\000\135\000\ \000\000\000\000\000\000\135\000\135\000\000\000\135\000\135\000\ \135\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\ \000\000\155\000\000\000\135\000\135\000\135\000\135\000\135\000\ \135\000\135\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\167\000\000\000\000\000\168\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\135\000\000\000\135\000\000\000\000\000\135\000\ \000\000\172\000\000\000\000\000\000\000\000\000\170\000\174\000\ \000\000\173\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\135\000\000\000\135\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\000\000\000\000\000\000\000\000\166\000\000\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\171\000\166\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\000\000\ \000\000\000\000\000\000\166\000\000\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\182\000\000\000\000\000\182\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \182\000\000\000\000\000\000\000\000\000\182\000\000\000\180\000\ \182\000\000\000\000\000\000\000\000\000\000\000\183\000\169\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\000\000\000\000\182\000\000\000\000\000\000\000\ \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\000\000\000\000\000\000\000\000\180\000\ \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\178\000\177\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\182\000\ \177\000\000\000\182\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\182\000\000\000\ \000\000\000\000\000\000\000\000\000\000\184\000\000\000\000\000\ \000\000\000\000\000\000\000\000\183\000\000\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\000\000\000\000\000\000\000\000\184\000\000\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\195\000\177\000\195\000\000\000\000\000\000\000\000\000\ \195\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\195\000\000\000\000\000\ \000\000\000\000\000\000\195\000\205\000\205\000\205\000\205\000\ \205\000\205\000\000\000\000\000\000\000\000\000\000\000\195\000\ \193\000\000\000\000\000\195\000\221\000\195\000\000\000\222\000\ \000\000\192\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\205\000\205\000\205\000\205\000\ \205\000\205\000\220\000\000\000\220\000\000\000\000\000\000\000\ \000\000\220\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\219\000\219\000\219\000\219\000\219\000\219\000\ \219\000\219\000\219\000\219\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\229\000\229\000\229\000\229\000\ \229\000\229\000\229\000\229\000\229\000\229\000\220\000\000\000\ \000\000\000\000\000\000\000\000\220\000\229\000\229\000\229\000\ \229\000\229\000\229\000\000\000\000\000\000\000\000\000\000\000\ \220\000\218\000\000\000\000\000\220\000\000\000\220\000\216\000\ \000\000\000\000\217\000\230\000\230\000\230\000\230\000\230\000\ \230\000\230\000\230\000\230\000\230\000\229\000\229\000\229\000\ \229\000\229\000\229\000\000\000\230\000\230\000\230\000\230\000\ \230\000\230\000\232\000\232\000\232\000\232\000\232\000\232\000\ \232\000\232\000\232\000\232\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\232\000\232\000\232\000\232\000\232\000\ \232\000\000\000\000\000\000\000\230\000\230\000\230\000\230\000\ \230\000\230\000\000\000\000\000\000\000\000\000\000\000\000\000\ \232\000\232\000\232\000\232\000\232\000\232\000\232\000\232\000\ \232\000\232\000\000\000\232\000\232\000\232\000\232\000\232\000\ \232\000\232\000\232\000\232\000\232\000\232\000\232\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\232\000\232\000\232\000\232\000\232\000\232\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\255\255\000\000\243\000\233\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000"; Lexing.lex_check = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\043\000\000\000\000\000\043\000\044\000\ \046\000\047\000\044\000\046\000\047\000\107\000\168\000\188\000\ \107\000\168\000\188\000\207\000\212\000\251\000\207\000\212\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\ \013\000\017\000\025\000\041\000\017\000\017\000\041\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ \077\000\105\000\106\000\114\000\117\000\121\000\124\000\013\000\ \143\000\013\000\041\000\013\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \119\000\119\000\119\000\119\000\119\000\119\000\119\000\119\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\003\000\126\000\126\000\003\000\003\000\003\000\128\000\ \128\000\026\000\003\000\003\000\026\000\003\000\003\000\003\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \116\000\116\000\003\000\148\000\003\000\003\000\003\000\003\000\ \003\000\130\000\130\000\173\000\004\000\174\000\026\000\004\000\ \004\000\004\000\186\000\187\000\195\000\004\000\004\000\162\000\ \004\000\004\000\004\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\198\000\202\000\004\000\003\000\004\000\ \004\000\004\000\004\000\004\000\205\000\216\000\162\000\005\000\ \162\000\244\000\005\000\005\000\005\000\245\000\248\000\250\000\ \005\000\005\000\221\000\005\000\005\000\005\000\193\000\193\000\ \193\000\193\000\161\000\026\000\003\000\161\000\003\000\255\255\ \005\000\004\000\005\000\005\000\005\000\005\000\005\000\255\255\ \222\000\221\000\006\000\222\000\246\000\006\000\006\000\006\000\ \255\255\255\255\161\000\006\000\006\000\247\000\006\000\006\000\ \006\000\223\000\255\255\234\000\223\000\163\000\234\000\004\000\ \163\000\004\000\255\255\006\000\005\000\006\000\006\000\006\000\ \006\000\006\000\255\255\240\000\241\000\007\000\240\000\241\000\ \007\000\007\000\007\000\255\255\255\255\255\255\007\000\007\000\ \249\000\007\000\007\000\007\000\255\255\255\255\255\255\255\255\ \235\000\255\255\005\000\235\000\005\000\255\255\007\000\006\000\ \007\000\007\000\007\000\007\000\007\000\255\255\255\255\255\255\ \008\000\255\255\008\000\008\000\008\000\008\000\255\255\255\255\ \255\255\008\000\008\000\255\255\008\000\008\000\008\000\255\255\ \255\255\255\255\255\255\255\255\255\255\006\000\255\255\006\000\ \255\255\008\000\007\000\008\000\008\000\008\000\008\000\008\000\ \255\255\255\255\255\255\010\000\255\255\255\255\010\000\010\000\ \010\000\255\255\255\255\255\255\010\000\010\000\255\255\010\000\ \010\000\010\000\255\255\255\255\255\255\255\255\255\255\255\255\ \007\000\255\255\007\000\255\255\010\000\008\000\010\000\010\000\ \010\000\010\000\010\000\255\255\255\255\255\255\208\000\255\255\ \011\000\208\000\255\255\011\000\011\000\011\000\255\255\026\000\ \255\255\011\000\011\000\255\255\011\000\011\000\011\000\255\255\ \255\255\255\255\255\255\008\000\255\255\008\000\208\000\010\000\ \010\000\011\000\235\000\011\000\011\000\011\000\011\000\011\000\ \255\255\255\255\255\255\255\255\255\255\014\000\255\255\255\255\ \014\000\014\000\014\000\255\255\255\255\255\255\014\000\014\000\ \255\255\014\000\014\000\014\000\255\255\255\255\010\000\010\000\ \010\000\255\255\255\255\255\255\011\000\011\000\014\000\255\255\ \014\000\014\000\014\000\014\000\014\000\255\255\255\255\255\255\ \015\000\255\255\255\255\015\000\015\000\015\000\255\255\255\255\ \208\000\015\000\015\000\255\255\015\000\015\000\015\000\255\255\ \161\000\255\255\255\255\011\000\255\255\011\000\255\255\255\255\ \255\255\015\000\014\000\015\000\015\000\015\000\015\000\015\000\ \255\255\255\255\246\000\018\000\255\255\255\255\018\000\018\000\ \018\000\255\255\255\255\247\000\018\000\018\000\255\255\018\000\ \018\000\018\000\255\255\163\000\255\255\255\255\255\255\255\255\ \014\000\255\255\014\000\255\255\018\000\015\000\018\000\018\000\ \018\000\018\000\018\000\255\255\255\255\255\255\022\000\255\255\ \255\255\022\000\022\000\022\000\255\255\255\255\249\000\022\000\ \022\000\255\255\022\000\022\000\022\000\255\255\235\000\255\255\ \255\255\255\255\255\255\015\000\255\255\015\000\255\255\022\000\ \018\000\022\000\022\000\022\000\022\000\022\000\255\255\255\255\ \255\255\023\000\255\255\023\000\023\000\023\000\023\000\255\255\ \255\255\255\255\023\000\023\000\255\255\023\000\023\000\023\000\ \255\255\255\255\255\255\255\255\255\255\255\255\018\000\255\255\ \018\000\255\255\023\000\022\000\023\000\023\000\023\000\023\000\ \023\000\159\000\255\255\255\255\024\000\255\255\255\255\024\000\ \024\000\024\000\255\255\255\255\024\000\024\000\024\000\255\255\ \024\000\024\000\024\000\255\255\255\255\255\255\255\255\255\255\ \159\000\022\000\255\255\022\000\255\255\024\000\023\000\024\000\ \024\000\024\000\024\000\024\000\208\000\255\255\027\000\255\255\ \159\000\159\000\159\000\159\000\159\000\159\000\159\000\159\000\ \159\000\159\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\023\000\027\000\023\000\255\255\ \087\000\024\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\255\255\087\000\255\255\024\000\ \027\000\024\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\029\000\027\000\255\255\255\255\ \255\255\255\255\255\255\029\000\255\255\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \255\255\255\255\255\255\255\255\029\000\255\255\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \030\000\255\255\255\255\255\255\255\255\255\255\255\255\030\000\ \255\255\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\255\255\255\255\255\255\255\255\ \030\000\255\255\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\031\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \255\255\255\255\255\255\255\255\031\000\255\255\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \255\255\062\000\255\255\255\255\062\000\062\000\062\000\255\255\ \255\255\255\255\062\000\062\000\255\255\062\000\255\255\062\000\ \197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\ \197\000\197\000\062\000\255\255\255\255\062\000\062\000\062\000\ \062\000\255\255\095\000\255\255\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\062\000\095\000\ \255\255\255\255\255\255\255\255\255\255\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\062\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\032\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \255\255\255\255\255\255\255\255\032\000\255\255\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \255\255\065\000\255\255\255\255\065\000\065\000\065\000\255\255\ \255\255\255\255\065\000\065\000\255\255\065\000\255\255\065\000\ \201\000\201\000\201\000\201\000\201\000\201\000\201\000\201\000\ \255\255\255\255\065\000\255\255\255\255\065\000\065\000\065\000\ \065\000\255\255\102\000\255\255\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\065\000\102\000\ \255\255\255\255\255\255\255\255\255\255\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\065\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\033\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \255\255\255\255\255\255\255\255\033\000\085\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \255\255\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\255\255\255\255\255\255\255\255\085\000\ \255\255\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\218\000\218\000\218\000\218\000\218\000\ \218\000\218\000\218\000\255\255\255\255\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\255\255\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \255\255\255\255\255\255\255\255\034\000\255\255\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\255\255\255\255\255\255\255\255\088\000\255\255\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\219\000\219\000\219\000\219\000\219\000\219\000\ \219\000\219\000\219\000\219\000\255\255\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\255\255\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\035\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \255\255\255\255\255\255\255\255\035\000\255\255\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\255\255\255\255\255\255\255\255\092\000\255\255\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\224\000\224\000\224\000\224\000\224\000\224\000\ \224\000\224\000\224\000\224\000\255\255\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\255\255\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\036\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \255\255\255\255\255\255\255\255\036\000\255\255\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\255\255\255\255\255\255\255\255\099\000\255\255\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\226\000\226\000\226\000\226\000\226\000\226\000\ \226\000\226\000\255\255\255\255\255\255\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\255\255\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\255\255\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\037\000\160\000\037\000\ \037\000\037\000\037\000\255\255\255\255\255\255\037\000\037\000\ \255\255\037\000\037\000\037\000\227\000\227\000\227\000\227\000\ \227\000\227\000\227\000\227\000\255\255\160\000\037\000\160\000\ \037\000\037\000\037\000\037\000\037\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\160\000\160\000\160\000\ \160\000\160\000\160\000\160\000\160\000\160\000\160\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\037\000\037\000\255\255\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\255\255\ \037\000\038\000\037\000\255\255\038\000\038\000\038\000\066\000\ \255\255\255\255\038\000\038\000\255\255\038\000\038\000\038\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\038\000\255\255\255\255\038\000\038\000\038\000\ \038\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\255\255\255\255\255\255\038\000\066\000\ \255\255\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\255\255\038\000\255\255\038\000\255\255\ \255\255\255\255\255\255\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\255\255\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\039\000\255\255\039\000\039\000\ \039\000\039\000\255\255\255\255\255\255\039\000\039\000\255\255\ \039\000\039\000\039\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\039\000\255\255\039\000\ \039\000\039\000\039\000\039\000\255\255\237\000\255\255\237\000\ \237\000\237\000\237\000\237\000\237\000\237\000\237\000\237\000\ \237\000\237\000\237\000\237\000\237\000\237\000\237\000\237\000\ \237\000\237\000\237\000\237\000\237\000\237\000\237\000\237\000\ \237\000\039\000\039\000\237\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\040\000\039\000\ \255\255\039\000\255\255\255\255\255\255\255\255\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\255\255\255\255\255\255\255\255\040\000\255\255\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\255\255\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\048\000\ \255\255\048\000\048\000\048\000\048\000\255\255\255\255\255\255\ \048\000\048\000\255\255\048\000\048\000\048\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \048\000\255\255\048\000\048\000\048\000\048\000\048\000\255\255\ \255\255\090\000\255\255\049\000\090\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\255\255\ \090\000\255\255\255\255\255\255\048\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\255\255\ \255\255\171\000\048\000\049\000\048\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\090\000\ \255\255\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\171\000\090\000\171\000\171\000\171\000\ \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ \171\000\171\000\171\000\171\000\171\000\171\000\171\000\255\255\ \171\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\255\255\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\050\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\255\255\ \255\255\255\255\255\255\255\255\255\255\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\255\255\ \255\255\255\255\255\255\050\000\255\255\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\111\000\ \111\000\111\000\111\000\111\000\111\000\111\000\111\000\111\000\ \111\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \111\000\111\000\111\000\111\000\111\000\111\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \111\000\111\000\111\000\111\000\111\000\111\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\255\255\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\255\255\050\000\050\000\050\000\050\000\ \050\000\050\000\050\000\050\000\053\000\255\255\255\255\053\000\ \053\000\053\000\255\255\255\255\255\255\053\000\053\000\255\255\ \053\000\053\000\053\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\053\000\255\255\053\000\ \053\000\053\000\053\000\053\000\255\255\255\255\097\000\255\255\ \056\000\097\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\255\255\097\000\255\255\255\255\ \255\255\053\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\255\255\255\255\255\255\053\000\ \056\000\053\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\097\000\255\255\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \178\000\097\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\255\255\178\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \255\255\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \057\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\255\255\255\255\255\255\255\255\ \255\255\255\255\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\255\255\255\255\255\255\255\255\ \057\000\255\255\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\123\000\123\000\123\000\123\000\ \123\000\123\000\123\000\123\000\123\000\123\000\170\000\255\255\ \255\255\170\000\255\255\255\255\255\255\123\000\123\000\123\000\ \123\000\123\000\123\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\170\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\123\000\123\000\123\000\ \123\000\123\000\123\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \170\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \060\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\255\255\255\255\255\255\255\255\ \060\000\255\255\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\192\000\192\000\192\000\192\000\ \192\000\192\000\192\000\192\000\192\000\192\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\192\000\192\000\192\000\ \192\000\192\000\192\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\170\000\192\000\192\000\192\000\ \192\000\192\000\192\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \255\255\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \255\255\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\061\000\255\255\061\000\061\000\255\255\255\255\061\000\ \061\000\255\255\061\000\255\255\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\255\255\ \255\255\061\000\061\000\061\000\255\255\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \255\255\255\255\255\255\061\000\061\000\255\255\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \255\255\061\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\255\255\255\255\255\255\255\255\ \181\000\255\255\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\255\255\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\063\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \255\255\255\255\255\255\255\255\063\000\179\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \255\255\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\255\255\255\255\255\255\255\255\179\000\ \255\255\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\255\255\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\255\255\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\064\000\255\255\064\000\ \064\000\255\255\255\255\064\000\064\000\255\255\064\000\255\255\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\255\255\255\255\064\000\064\000\064\000\ \255\255\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\255\255\255\255\255\255\064\000\ \064\000\255\255\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\255\255\064\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \255\255\255\255\255\255\255\255\183\000\255\255\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \255\255\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \255\255\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\067\000\255\255\255\255\255\255\067\000\255\255\067\000\ \255\255\255\255\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\255\255\255\255\255\255\ \255\255\067\000\255\255\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\068\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\255\255\255\255\255\255\255\255\068\000\255\255\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\069\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\255\255\255\255\255\255\ \255\255\069\000\255\255\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\070\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\255\255\255\255\255\255\255\255\070\000\255\255\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\071\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\255\255\255\255\255\255\ \255\255\071\000\255\255\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\072\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\255\255\255\255\255\255\255\255\072\000\255\255\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\073\000\255\255\255\255\255\255\255\255\255\255\255\255\ \073\000\255\255\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\255\255\255\255\255\255\ \255\255\073\000\255\255\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\074\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\255\255\255\255\255\255\255\255\074\000\255\255\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\075\000\255\255\255\255\255\255\075\000\255\255\075\000\ \255\255\255\255\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\255\255\255\255\255\255\ \255\255\075\000\255\255\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\076\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\255\255\255\255\255\255\255\255\076\000\255\255\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\078\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\255\255\255\255\255\255\ \255\255\078\000\255\255\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\079\000\255\255\255\255\ \255\255\079\000\255\255\079\000\255\255\255\255\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\255\255\255\255\255\255\255\255\079\000\255\255\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\080\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\255\255\255\255\255\255\ \255\255\080\000\255\255\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\081\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\255\255\255\255\255\255\255\255\081\000\255\255\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\082\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\255\255\255\255\255\255\ \255\255\082\000\255\255\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\089\000\255\255\255\255\ \089\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\089\000\255\255\255\255\255\255\ \255\255\255\255\255\255\089\000\255\255\255\255\255\255\255\255\ \255\255\255\255\089\000\255\255\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\255\255\ \255\255\255\255\255\255\089\000\255\255\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\093\000\ \089\000\255\255\093\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\093\000\255\255\ \255\255\255\255\255\255\255\255\255\255\093\000\255\255\255\255\ \255\255\255\255\255\255\255\255\093\000\255\255\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\255\255\255\255\255\255\255\255\093\000\255\255\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\096\000\093\000\255\255\096\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \096\000\255\255\255\255\255\255\255\255\255\255\255\255\096\000\ \255\255\255\255\255\255\255\255\255\255\255\255\096\000\255\255\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\255\255\255\255\255\255\255\255\096\000\ \255\255\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\100\000\096\000\255\255\100\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\100\000\255\255\255\255\255\255\255\255\255\255\ \255\255\100\000\255\255\255\255\255\255\255\255\255\255\255\255\ \100\000\255\255\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\255\255\255\255\255\255\ \255\255\100\000\255\255\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\104\000\100\000\104\000\ \255\255\255\255\255\255\255\255\104\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\104\000\104\000\104\000\ \104\000\104\000\104\000\104\000\104\000\104\000\104\000\131\000\ \255\255\255\255\131\000\131\000\131\000\255\255\255\255\255\255\ \131\000\131\000\255\255\131\000\131\000\131\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \131\000\255\255\131\000\131\000\131\000\131\000\131\000\255\255\ \255\255\104\000\255\255\255\255\255\255\255\255\255\255\104\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\104\000\104\000\255\255\255\255\104\000\ \255\255\104\000\255\255\255\255\131\000\104\000\255\255\255\255\ \255\255\255\255\133\000\255\255\133\000\133\000\133\000\133\000\ \255\255\255\255\255\255\133\000\133\000\255\255\133\000\133\000\ \133\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\131\000\133\000\131\000\133\000\133\000\133\000\ \133\000\133\000\255\255\255\255\255\255\134\000\255\255\255\255\ \134\000\134\000\134\000\255\255\255\255\255\255\134\000\134\000\ \255\255\134\000\134\000\134\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\134\000\133\000\ \134\000\134\000\134\000\134\000\134\000\255\255\255\255\255\255\ \255\255\255\255\135\000\255\255\255\255\135\000\135\000\135\000\ \255\255\255\255\255\255\135\000\135\000\255\255\135\000\135\000\ \135\000\255\255\255\255\255\255\255\255\133\000\255\255\133\000\ \255\255\255\255\134\000\135\000\255\255\135\000\135\000\135\000\ \135\000\135\000\255\255\255\255\255\255\136\000\255\255\255\255\ \136\000\136\000\136\000\255\255\255\255\255\255\136\000\136\000\ \255\255\136\000\136\000\136\000\255\255\255\255\255\255\255\255\ \134\000\255\255\134\000\255\255\255\255\104\000\136\000\135\000\ \136\000\136\000\136\000\136\000\136\000\255\255\255\255\255\255\ \137\000\255\255\255\255\137\000\137\000\137\000\255\255\255\255\ \255\255\137\000\137\000\255\255\137\000\137\000\137\000\255\255\ \255\255\255\255\255\255\255\255\255\255\135\000\255\255\135\000\ \255\255\137\000\136\000\137\000\137\000\137\000\137\000\137\000\ \255\255\255\255\255\255\142\000\255\255\255\255\142\000\142\000\ \142\000\255\255\255\255\255\255\142\000\142\000\255\255\142\000\ \142\000\142\000\255\255\255\255\255\255\255\255\255\255\255\255\ \136\000\255\255\136\000\255\255\142\000\137\000\142\000\142\000\ \142\000\142\000\142\000\255\255\255\255\255\255\152\000\255\255\ \255\255\152\000\152\000\152\000\255\255\255\255\255\255\152\000\ \152\000\255\255\152\000\152\000\152\000\255\255\255\255\255\255\ \255\255\255\255\255\255\137\000\255\255\137\000\255\255\152\000\ \142\000\152\000\152\000\152\000\152\000\152\000\255\255\255\255\ \255\255\155\000\255\255\155\000\155\000\155\000\155\000\255\255\ \255\255\255\255\155\000\155\000\255\255\155\000\155\000\155\000\ \255\255\255\255\255\255\255\255\255\255\255\255\142\000\255\255\ \142\000\255\255\155\000\152\000\155\000\155\000\155\000\155\000\ \155\000\255\255\255\255\255\255\156\000\255\255\156\000\156\000\ \156\000\156\000\255\255\255\255\255\255\156\000\156\000\255\255\ \156\000\156\000\156\000\255\255\255\255\255\255\255\255\255\255\ \255\255\152\000\255\255\152\000\255\255\156\000\155\000\156\000\ \156\000\156\000\156\000\156\000\255\255\255\255\255\255\157\000\ \255\255\255\255\157\000\157\000\157\000\255\255\255\255\255\255\ \157\000\157\000\255\255\157\000\157\000\157\000\255\255\255\255\ \255\255\255\255\255\255\255\255\155\000\255\255\155\000\255\255\ \157\000\156\000\157\000\157\000\157\000\157\000\157\000\255\255\ \255\255\255\255\158\000\255\255\255\255\158\000\158\000\158\000\ \255\255\255\255\255\255\158\000\158\000\255\255\158\000\158\000\ \158\000\255\255\255\255\255\255\255\255\255\255\255\255\156\000\ \255\255\156\000\255\255\158\000\157\000\158\000\158\000\158\000\ \158\000\158\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\164\000\255\255\255\255\164\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\157\000\255\255\157\000\255\255\255\255\158\000\ \255\255\164\000\255\255\255\255\255\255\255\255\164\000\164\000\ \255\255\164\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\158\000\255\255\158\000\ \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ \164\000\164\000\255\255\255\255\255\255\255\255\164\000\255\255\ \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ \164\000\164\000\164\000\166\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\255\255\ \255\255\255\255\255\255\166\000\255\255\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\ \166\000\166\000\166\000\166\000\166\000\166\000\166\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\180\000\255\255\255\255\180\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \180\000\255\255\255\255\255\255\255\255\182\000\255\255\180\000\ \182\000\255\255\255\255\255\255\255\255\255\255\180\000\164\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\255\255\255\255\182\000\255\255\255\255\255\255\ \255\255\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\255\255\255\255\255\255\255\255\180\000\ \255\255\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\182\000\180\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\184\000\ \182\000\255\255\184\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\184\000\255\255\ \255\255\255\255\255\255\255\255\255\255\184\000\255\255\255\255\ \255\255\255\255\255\255\255\255\184\000\255\255\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\255\255\255\255\255\255\255\255\184\000\255\255\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\185\000\184\000\185\000\255\255\255\255\255\255\255\255\ \185\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ \185\000\185\000\185\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\204\000\204\000\204\000\204\000\204\000\ \204\000\204\000\204\000\204\000\204\000\185\000\255\255\255\255\ \255\255\255\255\255\255\185\000\204\000\204\000\204\000\204\000\ \204\000\204\000\255\255\255\255\255\255\255\255\255\255\185\000\ \185\000\255\255\255\255\185\000\213\000\185\000\255\255\213\000\ \255\255\185\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\204\000\204\000\204\000\204\000\ \204\000\204\000\213\000\255\255\213\000\255\255\255\255\255\255\ \255\255\213\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\213\000\213\000\213\000\213\000\213\000\213\000\ \213\000\213\000\213\000\213\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\217\000\217\000\217\000\217\000\ \217\000\217\000\217\000\217\000\217\000\217\000\213\000\255\255\ \255\255\255\255\255\255\255\255\213\000\217\000\217\000\217\000\ \217\000\217\000\217\000\255\255\255\255\255\255\255\255\255\255\ \213\000\213\000\255\255\255\255\213\000\255\255\213\000\213\000\ \255\255\255\255\213\000\229\000\229\000\229\000\229\000\229\000\ \229\000\229\000\229\000\229\000\229\000\217\000\217\000\217\000\ \217\000\217\000\217\000\255\255\229\000\229\000\229\000\229\000\ \229\000\229\000\231\000\231\000\231\000\231\000\231\000\231\000\ \231\000\231\000\231\000\231\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\231\000\231\000\231\000\231\000\231\000\ \231\000\255\255\255\255\255\255\229\000\229\000\229\000\229\000\ \229\000\229\000\255\255\255\255\255\255\255\255\255\255\255\255\ \232\000\232\000\232\000\232\000\232\000\232\000\232\000\232\000\ \232\000\232\000\255\255\231\000\231\000\231\000\231\000\231\000\ \231\000\232\000\232\000\232\000\232\000\232\000\232\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\232\000\232\000\232\000\232\000\232\000\232\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\213\000\255\255\243\000\232\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \243\000\243\000\243\000\243\000\243\000\243\000\243\000\243\000\ \255\255\255\255\243\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255"; Lexing.lex_base_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \058\000\172\000\000\000\000\000\230\000\088\001\010\000\000\000\ \202\001\001\000\000\000\004\002\118\002\018\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\ \207\002\007\000\001\000\000\000\026\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\048\000\000\000\200\002\058\003\116\003\006\000\174\003\ \032\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\006\000\009\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000"; Lexing.lex_backtrk_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\036\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\048\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000"; Lexing.lex_default_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\028\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000"; Lexing.lex_trans_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\007\000\015\000\004\000\007\000\015\000\045\000\045\000\ \045\000\000\000\045\000\045\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \007\000\015\000\004\000\031\000\000\000\000\000\045\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\000\000\000\000\000\000\000\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\000\000\000\000\000\000\000\000\001\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\045\000\000\000\000\000\ \000\000\004\000\000\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\007\000\000\000\000\000\ \007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\007\000\000\000\000\000\000\000\ \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\000\000\ \000\000\000\000\000\000\001\000\000\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\007\000\000\000\000\000\007\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \007\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\000\000\000\000\000\000\000\000\001\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\015\000\000\000\000\000\015\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\ \000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\000\000\000\000\000\000\ \000\000\004\000\000\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\000\000\ \000\000\000\000\000\000\004\000\000\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\015\000\ \000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\015\000\000\000\ \000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\000\000\000\000\000\000\000\000\004\000\000\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\000\000\000\000\000\000\000\000\045\000\ \000\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\000\000\000\000\045\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\045\000\000\000\000\000\000\000\000\000\000\000\ \000\000\045\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\000\000\000\000\000\000\ \000\000\045\000\000\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\000\000\ \000\000\000\000\000\000\045\000\000\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\000\000\000\000\000\000\000\000\045\000\000\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\000\000\000\000\045\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \045\000\000\000\000\000\000\000\000\000\000\000\000\000\045\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\000\000\000\000\000\000\000\000\045\000\ \000\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000"; Lexing.lex_check_code = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\090\000\097\000\159\000\090\000\097\000\213\000\182\000\ \222\000\161\000\182\000\223\000\161\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \090\000\097\000\159\000\162\000\255\255\255\255\182\000\255\255\ \255\255\161\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\159\000\159\000\159\000\159\000\159\000\159\000\ \159\000\159\000\159\000\159\000\255\255\255\255\255\255\255\255\ \255\255\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\255\255\255\255\255\255\255\255\085\000\ \255\255\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\164\000\255\255\255\255\ \255\255\088\000\255\255\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\089\000\255\255\255\255\ \089\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\089\000\255\255\255\255\255\255\ \255\255\255\255\255\255\089\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\161\000\ \255\255\255\255\255\255\089\000\255\255\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\255\255\255\255\255\255\255\255\092\000\255\255\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\093\000\255\255\255\255\093\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \093\000\255\255\255\255\255\255\255\255\255\255\255\255\093\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\255\255\255\255\255\255\255\255\093\000\ \255\255\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\096\000\255\255\255\255\096\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\096\000\255\255\255\255\255\255\255\255\255\255\ \255\255\096\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\255\255\255\255\255\255\ \255\255\096\000\255\255\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ \096\000\096\000\096\000\096\000\096\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\255\255\ \255\255\255\255\255\255\099\000\255\255\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\100\000\ \255\255\255\255\100\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\100\000\255\255\ \255\255\255\255\255\255\255\255\255\255\100\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\255\255\255\255\255\255\255\255\100\000\255\255\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\160\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\160\000\ \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ \160\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\255\255\255\255\255\255\255\255\179\000\ \255\255\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\179\000\179\000\179\000\179\000\179\000\ \179\000\179\000\179\000\180\000\255\255\255\255\180\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\180\000\255\255\255\255\255\255\255\255\255\255\ \255\255\180\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\255\255\255\255\255\255\ \255\255\180\000\255\255\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ \180\000\180\000\180\000\180\000\180\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\255\255\ \255\255\255\255\255\255\181\000\255\255\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\255\255\255\255\255\255\255\255\183\000\255\255\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\184\000\255\255\255\255\184\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \184\000\255\255\255\255\255\255\255\255\255\255\255\255\184\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\255\255\255\255\255\255\255\255\184\000\ \255\255\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255"; Lexing.lex_code = "\255\002\255\255\004\255\255\003\255\255\000\002\001\003\255\005\ \255\255\000\004\001\005\255\007\255\006\255\255\007\255\255\006\ \255\007\255\255\000\004\001\005\002\006\003\007\255\001\255\255\ \000\001\255"; } let rec token lexbuf = lexbuf.Lexing.lex_mem <- Array.make 6 (-1); __ocaml_lex_token_rec lexbuf 0 and __ocaml_lex_token_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let # 410 "parsing/lexer.mll" bs # 2828 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 410 "parsing/lexer.mll" ( if not !escaped_newlines then error lexbuf (Illegal_character bs); update_loc lexbuf None 1 false 0; token lexbuf ) # 2835 "parsing/lexer.ml" | 1 -> # 415 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; EOL ) # 2841 "parsing/lexer.ml" | 2 -> # 418 "parsing/lexer.mll" ( token lexbuf ) # 2846 "parsing/lexer.ml" | 3 -> # 420 "parsing/lexer.mll" ( UNDERSCORE ) # 2851 "parsing/lexer.ml" | 4 -> # 422 "parsing/lexer.mll" ( TILDE ) # 2856 "parsing/lexer.ml" | 5 -> # 424 "parsing/lexer.mll" ( error lexbuf (Reserved_sequence (".~", Some "is reserved for use in MetaOCaml")) ) # 2862 "parsing/lexer.ml" | 6 -> let # 426 "parsing/lexer.mll" name # 2868 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 427 "parsing/lexer.mll" ( check_label_name lexbuf name; LABEL name ) # 2873 "parsing/lexer.ml" | 7 -> let # 429 "parsing/lexer.mll" name # 2879 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 430 "parsing/lexer.mll" ( warn_latin1 lexbuf; LABEL name ) # 2884 "parsing/lexer.ml" | 8 -> # 433 "parsing/lexer.mll" ( QUESTION ) # 2889 "parsing/lexer.ml" | 9 -> let # 434 "parsing/lexer.mll" name # 2895 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 435 "parsing/lexer.mll" ( check_label_name lexbuf name; OPTLABEL name ) # 2900 "parsing/lexer.ml" | 10 -> let # 437 "parsing/lexer.mll" name # 2906 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 438 "parsing/lexer.mll" ( warn_latin1 lexbuf; OPTLABEL name ) # 2911 "parsing/lexer.ml" | 11 -> let # 440 "parsing/lexer.mll" name # 2917 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 441 "parsing/lexer.mll" ( try Hashtbl.find keyword_table name with Not_found -> LIDENT name ) # 2922 "parsing/lexer.ml" | 12 -> let # 443 "parsing/lexer.mll" name # 2928 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 444 "parsing/lexer.mll" ( warn_latin1 lexbuf; LIDENT name ) # 2932 "parsing/lexer.ml" | 13 -> let # 445 "parsing/lexer.mll" name # 2938 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 446 "parsing/lexer.mll" ( UIDENT name ) # 2942 "parsing/lexer.ml" | 14 -> let # 447 "parsing/lexer.mll" name # 2948 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 448 "parsing/lexer.mll" ( warn_latin1 lexbuf; UIDENT name ) # 2952 "parsing/lexer.ml" | 15 -> let # 449 "parsing/lexer.mll" lit # 2958 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 449 "parsing/lexer.mll" ( INT (lit, None) ) # 2962 "parsing/lexer.ml" | 16 -> let # 450 "parsing/lexer.mll" lit # 2968 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos (lexbuf.Lexing.lex_curr_pos + -1) and # 450 "parsing/lexer.mll" modif # 2973 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_curr_pos + -1) in # 451 "parsing/lexer.mll" ( INT (lit, Some modif) ) # 2977 "parsing/lexer.ml" | 17 -> let # 452 "parsing/lexer.mll" lit # 2983 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 453 "parsing/lexer.mll" ( FLOAT (lit, None) ) # 2987 "parsing/lexer.ml" | 18 -> let # 454 "parsing/lexer.mll" lit # 2993 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos (lexbuf.Lexing.lex_curr_pos + -1) and # 454 "parsing/lexer.mll" modif # 2998 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_curr_pos + -1) in # 455 "parsing/lexer.mll" ( FLOAT (lit, Some modif) ) # 3002 "parsing/lexer.ml" | 19 -> let # 456 "parsing/lexer.mll" invalid # 3008 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 457 "parsing/lexer.mll" ( error lexbuf (Invalid_literal invalid) ) # 3012 "parsing/lexer.ml" | 20 -> # 459 "parsing/lexer.mll" ( let s, loc = wrap_string_lexer string lexbuf in STRING (s, loc, None) ) # 3018 "parsing/lexer.ml" | 21 -> let # 461 "parsing/lexer.mll" delim # 3024 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 462 "parsing/lexer.mll" ( let s, loc = wrap_string_lexer (quoted_string delim) lexbuf in STRING (s, loc, Some delim) ) # 3029 "parsing/lexer.ml" | 22 -> let # 464 "parsing/lexer.mll" id # 3035 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) (lexbuf.Lexing.lex_curr_pos + -1) in # 465 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string "") lexbuf in let idloc = compute_quoted_string_idloc orig_loc 2 id in QUOTED_STRING_EXPR (id, idloc, s, loc, Some "") ) # 3042 "parsing/lexer.ml" | 23 -> let # 469 "parsing/lexer.mll" id # 3048 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) lexbuf.Lexing.lex_mem.(0) and # 469 "parsing/lexer.mll" delim # 3053 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(1) (lexbuf.Lexing.lex_curr_pos + -1) in # 470 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string delim) lexbuf in let idloc = compute_quoted_string_idloc orig_loc 2 id in QUOTED_STRING_EXPR (id, idloc, s, loc, Some delim) ) # 3060 "parsing/lexer.ml" | 24 -> let # 474 "parsing/lexer.mll" id # 3066 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) (lexbuf.Lexing.lex_curr_pos + -1) in # 475 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string "") lexbuf in let idloc = compute_quoted_string_idloc orig_loc 3 id in QUOTED_STRING_ITEM (id, idloc, s, loc, Some "") ) # 3073 "parsing/lexer.ml" | 25 -> let # 479 "parsing/lexer.mll" id # 3079 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) lexbuf.Lexing.lex_mem.(0) and # 479 "parsing/lexer.mll" delim # 3084 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(1) (lexbuf.Lexing.lex_curr_pos + -1) in # 480 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string delim) lexbuf in let idloc = compute_quoted_string_idloc orig_loc 3 id in QUOTED_STRING_ITEM (id, idloc, s, loc, Some delim) ) # 3091 "parsing/lexer.ml" | 26 -> # 485 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 1; (* newline is ('\013'* '\010') *) CHAR '\n' ) # 3098 "parsing/lexer.ml" | 27 -> let # 488 "parsing/lexer.mll" c # 3104 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_start_pos + 1) in # 489 "parsing/lexer.mll" ( CHAR c ) # 3108 "parsing/lexer.ml" | 28 -> let # 490 "parsing/lexer.mll" c # 3114 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_start_pos + 2) in # 491 "parsing/lexer.mll" ( CHAR (char_for_backslash c) ) # 3118 "parsing/lexer.ml" | 29 -> # 493 "parsing/lexer.mll" ( CHAR(char_for_decimal_code lexbuf 2) ) # 3123 "parsing/lexer.ml" | 30 -> # 495 "parsing/lexer.mll" ( CHAR(char_for_octal_code lexbuf 3) ) # 3128 "parsing/lexer.ml" | 31 -> # 497 "parsing/lexer.mll" ( CHAR(char_for_hexadecimal_code lexbuf 3) ) # 3133 "parsing/lexer.ml" | 32 -> let # 498 "parsing/lexer.mll" esc # 3139 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_start_pos + 3) in # 499 "parsing/lexer.mll" ( error lexbuf (Illegal_escape (esc, None)) ) # 3143 "parsing/lexer.ml" | 33 -> # 501 "parsing/lexer.mll" ( error lexbuf Empty_character_literal ) # 3148 "parsing/lexer.ml" | 34 -> # 503 "parsing/lexer.mll" ( let s, loc = wrap_comment_lexer comment lexbuf in COMMENT (s, loc) ) # 3154 "parsing/lexer.ml" | 35 -> # 506 "parsing/lexer.mll" ( let s, loc = wrap_comment_lexer comment lexbuf in if !handle_docstrings then DOCSTRING (Docstrings.docstring s loc) else COMMENT ("*" ^ s, loc) ) # 3164 "parsing/lexer.ml" | 36 -> let # 512 "parsing/lexer.mll" stars # 3170 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) lexbuf.Lexing.lex_curr_pos in # 513 "parsing/lexer.mll" ( let s, loc = wrap_comment_lexer (fun lexbuf -> store_string ("*" ^ stars); comment lexbuf) lexbuf in COMMENT (s, loc) ) # 3181 "parsing/lexer.ml" | 37 -> # 522 "parsing/lexer.mll" ( if !print_warnings then Location.prerr_warning (Location.curr lexbuf) Warnings.Comment_start; let s, loc = wrap_comment_lexer comment lexbuf in COMMENT (s, loc) ) # 3189 "parsing/lexer.ml" | 38 -> let # 526 "parsing/lexer.mll" stars # 3195 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) (lexbuf.Lexing.lex_curr_pos + -2) in # 527 "parsing/lexer.mll" ( if !handle_docstrings && stars="" then (* (**) is an empty docstring *) DOCSTRING(Docstrings.docstring "" (Location.curr lexbuf)) else COMMENT (stars, Location.curr lexbuf) ) # 3203 "parsing/lexer.ml" | 39 -> # 533 "parsing/lexer.mll" ( let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Comment_not_end; lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_curr_pos - 1; let curpos = lexbuf.lex_curr_p in lexbuf.lex_curr_p <- { curpos with pos_cnum = curpos.pos_cnum - 1 }; STAR ) # 3214 "parsing/lexer.ml" | 40 -> # 541 "parsing/lexer.mll" ( let at_beginning_of_line pos = (pos.pos_cnum = pos.pos_bol) in if not (at_beginning_of_line lexbuf.lex_start_p) then HASH else try directive lexbuf with Failure _ -> HASH ) # 3223 "parsing/lexer.ml" | 41 -> # 546 "parsing/lexer.mll" ( AMPERSAND ) # 3228 "parsing/lexer.ml" | 42 -> # 547 "parsing/lexer.mll" ( AMPERAMPER ) # 3233 "parsing/lexer.ml" | 43 -> # 548 "parsing/lexer.mll" ( BACKQUOTE ) # 3238 "parsing/lexer.ml" | 44 -> # 549 "parsing/lexer.mll" ( QUOTE ) # 3243 "parsing/lexer.ml" | 45 -> # 550 "parsing/lexer.mll" ( LPAREN ) # 3248 "parsing/lexer.ml" | 46 -> # 551 "parsing/lexer.mll" ( RPAREN ) # 3253 "parsing/lexer.ml" | 47 -> # 552 "parsing/lexer.mll" ( STAR ) # 3258 "parsing/lexer.ml" | 48 -> # 553 "parsing/lexer.mll" ( COMMA ) # 3263 "parsing/lexer.ml" | 49 -> # 554 "parsing/lexer.mll" ( MINUSGREATER ) # 3268 "parsing/lexer.ml" | 50 -> # 555 "parsing/lexer.mll" ( DOT ) # 3273 "parsing/lexer.ml" | 51 -> # 556 "parsing/lexer.mll" ( DOTDOT ) # 3278 "parsing/lexer.ml" | 52 -> let # 557 "parsing/lexer.mll" op # 3284 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) lexbuf.Lexing.lex_curr_pos in # 557 "parsing/lexer.mll" ( DOTOP op ) # 3288 "parsing/lexer.ml" | 53 -> # 558 "parsing/lexer.mll" ( COLON ) # 3293 "parsing/lexer.ml" | 54 -> # 559 "parsing/lexer.mll" ( COLONCOLON ) # 3298 "parsing/lexer.ml" | 55 -> # 560 "parsing/lexer.mll" ( COLONEQUAL ) # 3303 "parsing/lexer.ml" | 56 -> # 561 "parsing/lexer.mll" ( COLONGREATER ) # 3308 "parsing/lexer.ml" | 57 -> # 562 "parsing/lexer.mll" ( SEMI ) # 3313 "parsing/lexer.ml" | 58 -> # 563 "parsing/lexer.mll" ( SEMISEMI ) # 3318 "parsing/lexer.ml" | 59 -> # 564 "parsing/lexer.mll" ( LESS ) # 3323 "parsing/lexer.ml" | 60 -> # 565 "parsing/lexer.mll" ( LESSMINUS ) # 3328 "parsing/lexer.ml" | 61 -> # 566 "parsing/lexer.mll" ( EQUAL ) # 3333 "parsing/lexer.ml" | 62 -> # 567 "parsing/lexer.mll" ( LBRACKET ) # 3338 "parsing/lexer.ml" | 63 -> # 568 "parsing/lexer.mll" ( LBRACKETBAR ) # 3343 "parsing/lexer.ml" | 64 -> # 569 "parsing/lexer.mll" ( LBRACKETLESS ) # 3348 "parsing/lexer.ml" | 65 -> # 570 "parsing/lexer.mll" ( LBRACKETGREATER ) # 3353 "parsing/lexer.ml" | 66 -> # 571 "parsing/lexer.mll" ( RBRACKET ) # 3358 "parsing/lexer.ml" | 67 -> # 572 "parsing/lexer.mll" ( LBRACE ) # 3363 "parsing/lexer.ml" | 68 -> # 573 "parsing/lexer.mll" ( LBRACELESS ) # 3368 "parsing/lexer.ml" | 69 -> # 574 "parsing/lexer.mll" ( BAR ) # 3373 "parsing/lexer.ml" | 70 -> # 575 "parsing/lexer.mll" ( BARBAR ) # 3378 "parsing/lexer.ml" | 71 -> # 576 "parsing/lexer.mll" ( BARRBRACKET ) # 3383 "parsing/lexer.ml" | 72 -> # 577 "parsing/lexer.mll" ( GREATER ) # 3388 "parsing/lexer.ml" | 73 -> # 578 "parsing/lexer.mll" ( GREATERRBRACKET ) # 3393 "parsing/lexer.ml" | 74 -> # 579 "parsing/lexer.mll" ( RBRACE ) # 3398 "parsing/lexer.ml" | 75 -> # 580 "parsing/lexer.mll" ( GREATERRBRACE ) # 3403 "parsing/lexer.ml" | 76 -> # 581 "parsing/lexer.mll" ( LBRACKETAT ) # 3408 "parsing/lexer.ml" | 77 -> # 582 "parsing/lexer.mll" ( LBRACKETATAT ) # 3413 "parsing/lexer.ml" | 78 -> # 583 "parsing/lexer.mll" ( LBRACKETATATAT ) # 3418 "parsing/lexer.ml" | 79 -> # 584 "parsing/lexer.mll" ( LBRACKETPERCENT ) # 3423 "parsing/lexer.ml" | 80 -> # 585 "parsing/lexer.mll" ( LBRACKETPERCENTPERCENT ) # 3428 "parsing/lexer.ml" | 81 -> # 586 "parsing/lexer.mll" ( BANG ) # 3433 "parsing/lexer.ml" | 82 -> # 587 "parsing/lexer.mll" ( INFIXOP0 "!=" ) # 3438 "parsing/lexer.ml" | 83 -> # 588 "parsing/lexer.mll" ( PLUS ) # 3443 "parsing/lexer.ml" | 84 -> # 589 "parsing/lexer.mll" ( PLUSDOT ) # 3448 "parsing/lexer.ml" | 85 -> # 590 "parsing/lexer.mll" ( PLUSEQ ) # 3453 "parsing/lexer.ml" | 86 -> # 591 "parsing/lexer.mll" ( MINUS ) # 3458 "parsing/lexer.ml" | 87 -> # 592 "parsing/lexer.mll" ( MINUSDOT ) # 3463 "parsing/lexer.ml" | 88 -> let # 594 "parsing/lexer.mll" op # 3469 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 595 "parsing/lexer.mll" ( PREFIXOP op ) # 3473 "parsing/lexer.ml" | 89 -> let # 596 "parsing/lexer.mll" op # 3479 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 597 "parsing/lexer.mll" ( PREFIXOP op ) # 3483 "parsing/lexer.ml" | 90 -> let # 598 "parsing/lexer.mll" op # 3489 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 599 "parsing/lexer.mll" ( INFIXOP0 op ) # 3493 "parsing/lexer.ml" | 91 -> let # 600 "parsing/lexer.mll" op # 3499 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 601 "parsing/lexer.mll" ( INFIXOP1 op ) # 3503 "parsing/lexer.ml" | 92 -> let # 602 "parsing/lexer.mll" op # 3509 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 603 "parsing/lexer.mll" ( INFIXOP2 op ) # 3513 "parsing/lexer.ml" | 93 -> let # 604 "parsing/lexer.mll" op # 3519 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 605 "parsing/lexer.mll" ( INFIXOP4 op ) # 3523 "parsing/lexer.ml" | 94 -> # 606 "parsing/lexer.mll" ( PERCENT ) # 3528 "parsing/lexer.ml" | 95 -> let # 607 "parsing/lexer.mll" op # 3534 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 608 "parsing/lexer.mll" ( INFIXOP3 op ) # 3538 "parsing/lexer.ml" | 96 -> let # 609 "parsing/lexer.mll" op # 3544 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 610 "parsing/lexer.mll" ( HASHOP op ) # 3548 "parsing/lexer.ml" | 97 -> let # 611 "parsing/lexer.mll" op # 3554 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 612 "parsing/lexer.mll" ( LETOP op ) # 3558 "parsing/lexer.ml" | 98 -> let # 613 "parsing/lexer.mll" op # 3564 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 614 "parsing/lexer.mll" ( ANDOP op ) # 3568 "parsing/lexer.ml" | 99 -> # 615 "parsing/lexer.mll" ( EOF ) # 3573 "parsing/lexer.ml" | 100 -> let # 616 "parsing/lexer.mll" illegal_char # 3579 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 617 "parsing/lexer.mll" ( error lexbuf (Illegal_character illegal_char) ) # 3583 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state and directive lexbuf = lexbuf.Lexing.lex_mem <- Array.make 8 (-1);(* L=1 [4] <- p ; *) lexbuf.Lexing.lex_mem.(4) <- lexbuf.Lexing.lex_curr_pos ; __ocaml_lex_directive_rec lexbuf 159 and __ocaml_lex_directive_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let # 620 "parsing/lexer.mll" num # 3598 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_mem.(1) and # 621 "parsing/lexer.mll" name # 3603 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(2) lexbuf.Lexing.lex_mem.(3) and # 621 "parsing/lexer.mll" directive # 3608 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos (lexbuf.Lexing.lex_mem.(3) + 1) in # 623 "parsing/lexer.mll" ( match int_of_string num with | exception _ -> (* PR#7165 *) let explanation = "line number out of range" in error lexbuf (Invalid_directive ("#" ^ directive, Some explanation)) | line_num -> (* Documentation says that the line number should be positive, but we have never guarded against this and it might have useful hackish uses. *) update_loc lexbuf (Some name) (line_num - 1) true 0; token lexbuf ) # 3624 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_directive_rec lexbuf __ocaml_lex_state and comment lexbuf = lexbuf.Lexing.lex_mem <- Array.make 2 (-1); __ocaml_lex_comment_rec lexbuf 164 and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 638 "parsing/lexer.mll" ( comment_start_loc := (Location.curr lexbuf) :: !comment_start_loc; store_lexeme lexbuf; comment lexbuf ) # 3639 "parsing/lexer.ml" | 1 -> # 643 "parsing/lexer.mll" ( match !comment_start_loc with | [] -> assert false | [_] -> comment_start_loc := []; Location.curr lexbuf | _ :: l -> comment_start_loc := l; store_lexeme lexbuf; comment lexbuf ) # 3650 "parsing/lexer.ml" | 2 -> # 651 "parsing/lexer.mll" ( string_start_loc := Location.curr lexbuf; store_string_char '\"'; is_in_string := true; let _loc = try string lexbuf with Error (Unterminated_string, str_start) -> match !comment_start_loc with | [] -> assert false | loc :: _ -> let start = List.hd (List.rev !comment_start_loc) in comment_start_loc := []; error_loc loc (Unterminated_string_in_comment (start, str_start)) in is_in_string := false; store_string_char '\"'; comment lexbuf ) # 3670 "parsing/lexer.ml" | 3 -> let # 667 "parsing/lexer.mll" delim # 3676 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) (lexbuf.Lexing.lex_curr_pos + -1) in # 668 "parsing/lexer.mll" ( string_start_loc := Location.curr lexbuf; store_lexeme lexbuf; is_in_string := true; let _loc = try quoted_string delim lexbuf with Error (Unterminated_string, str_start) -> match !comment_start_loc with | [] -> assert false | loc :: _ -> let start = List.hd (List.rev !comment_start_loc) in comment_start_loc := []; error_loc loc (Unterminated_string_in_comment (start, str_start)) in is_in_string := false; store_string_char '|'; store_string delim; store_string_char '}'; comment lexbuf ) # 3697 "parsing/lexer.ml" | 4 -> # 687 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3702 "parsing/lexer.ml" | 5 -> # 689 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 1; store_lexeme lexbuf; comment lexbuf ) # 3710 "parsing/lexer.ml" | 6 -> # 694 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3715 "parsing/lexer.ml" | 7 -> # 696 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3720 "parsing/lexer.ml" | 8 -> # 698 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3725 "parsing/lexer.ml" | 9 -> # 700 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3730 "parsing/lexer.ml" | 10 -> # 702 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3735 "parsing/lexer.ml" | 11 -> # 704 "parsing/lexer.mll" ( match !comment_start_loc with | [] -> assert false | loc :: _ -> let start = List.hd (List.rev !comment_start_loc) in comment_start_loc := []; error_loc loc (Unterminated_comment start) ) # 3746 "parsing/lexer.ml" | 12 -> # 712 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; store_lexeme lexbuf; comment lexbuf ) # 3754 "parsing/lexer.ml" | 13 -> # 717 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3759 "parsing/lexer.ml" | 14 -> # 719 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3764 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state and string lexbuf = lexbuf.Lexing.lex_mem <- Array.make 2 (-1); __ocaml_lex_string_rec lexbuf 208 and __ocaml_lex_string_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 723 "parsing/lexer.mll" ( lexbuf.lex_start_p ) # 3776 "parsing/lexer.ml" | 1 -> let # 724 "parsing/lexer.mll" space # 3782 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_curr_pos in # 725 "parsing/lexer.mll" ( update_loc lexbuf None 1 false (String.length space); if in_comment () then store_lexeme lexbuf; string lexbuf ) # 3789 "parsing/lexer.ml" | 2 -> let # 729 "parsing/lexer.mll" c # 3795 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_start_pos + 1) in # 730 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_backslash c); string lexbuf ) # 3800 "parsing/lexer.ml" | 3 -> # 733 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_decimal_code lexbuf 1); string lexbuf ) # 3806 "parsing/lexer.ml" | 4 -> # 736 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_octal_code lexbuf 2); string lexbuf ) # 3812 "parsing/lexer.ml" | 5 -> # 739 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_hexadecimal_code lexbuf 2); string lexbuf ) # 3818 "parsing/lexer.ml" | 6 -> # 742 "parsing/lexer.mll" ( store_escaped_uchar lexbuf (uchar_for_uchar_escape lexbuf); string lexbuf ) # 3824 "parsing/lexer.ml" | 7 -> # 745 "parsing/lexer.mll" ( if not (in_comment ()) then begin (* Should be an error, but we are very lax. error lexbuf (Illegal_escape (Lexing.lexeme lexbuf, None)) *) let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Illegal_backslash; end; store_lexeme lexbuf; string lexbuf ) # 3838 "parsing/lexer.ml" | 8 -> # 756 "parsing/lexer.mll" ( if not (in_comment ()) then Location.prerr_warning (Location.curr lexbuf) Warnings.Eol_in_string; update_loc lexbuf None 1 false 0; store_lexeme lexbuf; string lexbuf ) # 3848 "parsing/lexer.ml" | 9 -> # 763 "parsing/lexer.mll" ( is_in_string := false; error_loc !string_start_loc Unterminated_string ) # 3854 "parsing/lexer.ml" | 10 -> let # 765 "parsing/lexer.mll" c # 3860 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 766 "parsing/lexer.mll" ( store_string_char c; string lexbuf ) # 3865 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec lexbuf __ocaml_lex_state and quoted_string delim lexbuf = __ocaml_lex_quoted_string_rec delim lexbuf 235 and __ocaml_lex_quoted_string_rec delim lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 771 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; store_lexeme lexbuf; quoted_string delim lexbuf ) # 3880 "parsing/lexer.ml" | 1 -> # 776 "parsing/lexer.mll" ( is_in_string := false; error_loc !string_start_loc Unterminated_string ) # 3886 "parsing/lexer.ml" | 2 -> let # 778 "parsing/lexer.mll" edelim # 3892 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 779 "parsing/lexer.mll" ( if delim = edelim then lexbuf.lex_start_p else (store_lexeme lexbuf; quoted_string delim lexbuf) ) # 3899 "parsing/lexer.ml" | 3 -> let # 783 "parsing/lexer.mll" c # 3905 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 784 "parsing/lexer.mll" ( store_string_char c; quoted_string delim lexbuf ) # 3910 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_quoted_string_rec delim lexbuf __ocaml_lex_state and skip_hash_bang lexbuf = __ocaml_lex_skip_hash_bang_rec lexbuf 244 and __ocaml_lex_skip_hash_bang_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 789 "parsing/lexer.mll" ( update_loc lexbuf None 3 false 0 ) # 3922 "parsing/lexer.ml" | 1 -> # 791 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0 ) # 3927 "parsing/lexer.ml" | 2 -> # 792 "parsing/lexer.mll" ( () ) # 3932 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_hash_bang_rec lexbuf __ocaml_lex_state ;; # 794 "parsing/lexer.mll" let token_with_comments lexbuf = match !preprocessor with | None -> token lexbuf | Some (_init, preprocess) -> preprocess token lexbuf type newline_state = | NoLine (* There have been no blank lines yet. *) | NewLine (* There have been no blank lines, and the previous token was a newline. *) | BlankLine (* There have been blank lines. *) type doc_state = | Initial (* There have been no docstrings yet *) | After of docstring list (* There have been docstrings, none of which were preceded by a blank line *) | Before of docstring list * docstring list * docstring list (* There have been docstrings, some of which were preceded by a blank line *) and docstring = Docstrings.docstring let token lexbuf = let post_pos = lexeme_end_p lexbuf in let attach lines docs pre_pos = let open Docstrings in match docs, lines with | Initial, _ -> () | After a, (NoLine | NewLine) -> set_post_docstrings post_pos (List.rev a); set_pre_docstrings pre_pos a; | After a, BlankLine -> set_post_docstrings post_pos (List.rev a); set_pre_extra_docstrings pre_pos (List.rev a) | Before(a, f, b), (NoLine | NewLine) -> set_post_docstrings post_pos (List.rev a); set_post_extra_docstrings post_pos (List.rev_append f (List.rev b)); set_floating_docstrings pre_pos (List.rev f); set_pre_extra_docstrings pre_pos (List.rev a); set_pre_docstrings pre_pos b | Before(a, f, b), BlankLine -> set_post_docstrings post_pos (List.rev a); set_post_extra_docstrings post_pos (List.rev_append f (List.rev b)); set_floating_docstrings pre_pos (List.rev_append f (List.rev b)); set_pre_extra_docstrings pre_pos (List.rev a) in let rec loop lines docs lexbuf = match token_with_comments lexbuf with | COMMENT (s, loc) -> add_comment (s, loc); let lines' = match lines with | NoLine -> NoLine | NewLine -> NoLine | BlankLine -> BlankLine in loop lines' docs lexbuf | EOL -> let lines' = match lines with | NoLine -> NewLine | NewLine -> BlankLine | BlankLine -> BlankLine in loop lines' docs lexbuf | DOCSTRING doc -> Docstrings.register doc; add_docstring_comment doc; let docs' = if Docstrings.docstring_body doc = "/*" then match docs with | Initial -> Before([], [doc], []) | After a -> Before (a, [doc], []) | Before(a, f, b) -> Before(a, doc :: b @ f, []) else match docs, lines with | Initial, (NoLine | NewLine) -> After [doc] | Initial, BlankLine -> Before([], [], [doc]) | After a, (NoLine | NewLine) -> After (doc :: a) | After a, BlankLine -> Before (a, [], [doc]) | Before(a, f, b), (NoLine | NewLine) -> Before(a, f, doc :: b) | Before(a, f, b), BlankLine -> Before(a, b @ f, [doc]) in loop NoLine docs' lexbuf | tok -> attach lines docs (lexeme_start_p lexbuf); tok in loop NoLine Initial lexbuf let init () = is_in_string := false; comment_start_loc := []; comment_list := []; match !preprocessor with | None -> () | Some (init, _preprocess) -> init () let set_preprocessor init preprocess = escaped_newlines := true; preprocessor := Some (init, preprocess) # 4049 "parsing/lexer.ml"