/*4:*/
#line 261 "tex.w"
/*9:*/
#line 340 "tex.w"

#include <stdint.h> 
#include <stdbool.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <math.h> 

#define odd(X)       ((X)&1)
#define chr(X)       ((unsigned char)(X))
#define ord(X)       ((int)(X))

#if __SIZEOF_FLOAT__==4
typedef float float32_t;
#else
#error  float type must have size 4
#endif

#define banner "This is TeX, Version 3.14159265 (HINT)" \

#define mem_bot 0 \

#define mem_top 30000 \
 \

#define font_base 0 \

#define hash_size 2100 \

#define hash_prime 1777
#define hyph_size 307 \
 \

#define done6 36
#define incr(X) X= X+1
#define decr(X) X= X-1
#define negate(X) X= -X
#define loop while(true) 
#define do_nothing 
#define empty 0 \

#define text_char unsigned char
#define first_text_char 0
#define last_text_char 255 \

#define null_code 00
#define carriage_return 015
#define invalid_code 0177 \

#define reset_OK(X) erstat(X) ==0
#define rewrite_OK(X) erstat(X) ==0 \

#define t_open_in term_in.f= stdin
#define t_open_out term_out.f= stdout \

#define update_terminal fflush(term_out.f) 
#define clear_terminal fflush(term_in.f) 
#define wake_up_terminal do_nothing \

#define loc cur_input.loc_field \

#define si(X) X
#define so(X) X \

#define length(X) (str_start[X+1]-str_start[X])  \
 \

#define cur_length (pool_ptr-str_start[str_ptr])  \

#define append_char(X)  \
{str_pool[pool_ptr]= si(X) ;incr(pool_ptr) ; \
}
#define flush_char decr(pool_ptr) 
#define str_room(X)  \
{if(pool_ptr+X> pool_size)  \
overflow("pool size",pool_size-init_pool_ptr) ; \
 \
} \

#define flush_string {decr(str_ptr) ;pool_ptr= str_start[str_ptr]; \
} \

#define app_lc_hex(X) l= X; \
if(l<10) append_char(l+'0') else append_char(l-10+'a')  \

#define bad_pool(X) {wake_up_terminal;write_ln(term_out,X) ; \
a_close(&pool_file) ;return false; \
}
#define no_print 16
#define term_only 17
#define log_only 18
#define term_and_log 19
#define pseudo 20
#define new_string 21
#define max_selector 21 \

#define print_ASCII print \

#define prompt_input(X) {wake_up_terminal;print_str(X) ;term_input() ; \
} \

#define batch_mode 0
#define nonstop_mode 1
#define scroll_mode 2
#define error_stop_mode 3
#define print_err(X) {if(interaction==error_stop_mode) wake_up_terminal; \
print_nl("! ") ;print_str(X) ; \
} \

#define spotless 0
#define warning_issued 1
#define error_message_issued 2
#define fatal_error_stop 3 \

#define hlp1(X) help_line[0]= X;}
#define hlp2(X) help_line[1]= X;hlp1
#define hlp3(X) help_line[2]= X;hlp2
#define hlp4(X) help_line[3]= X;hlp3
#define hlp5(X) help_line[4]= X;hlp4
#define hlp6(X) help_line[5]= X;hlp5
#define help0 help_ptr= 0
#define help1 {help_ptr= 1;hlp1
#define help2 {help_ptr= 2;hlp2
#define help3 {help_ptr= 3;hlp3
#define help4 {help_ptr= 4;hlp4
#define help5 {help_ptr= 5;hlp5
#define help6 {help_ptr= 6;hlp6 \

#define succumb {if(interaction==error_stop_mode)  \
interaction= scroll_mode; \
if(log_opened) error() ; \
if(interaction> batch_mode) debug_help() ; \
history= fatal_error_stop;jump_out() ; \
} \

#define check_interrupt {if(interrupt!=0) pause_for_instructions() ; \
} \

#define unity 0200000
#define two 0400000 \

#define nx_plus_y(X,Y,Z) mult_and_add(X,Y,Z,07777777777) 
#define mult_integers(X,Y) mult_and_add(X,Y,0,017777777777)  \

#define inf_bad 10000 \

#define set_glue_ratio_zero(X) X= 0.0
#define set_glue_ratio_one(X) X= 1.0
#define float(X) ((double) (X) ) 
#define unfloat(X) ((glue_ratio) (X) ) 
#define float_constant(X) ((double) (X) )  \

#define min_quarterword 0
#define max_quarterword 255
#define min_halfword 0
#define max_halfword 65535 \

#define qi(X) X+min_quarterword \

#define qo(X) X-min_quarterword \

#define hi(X) X+min_halfword \

#define ho(X) X-min_halfword \
 \

#define sc i \

#define pointer halfword
#define null min_halfword \

#define link(X) mem[X].hh.rh
#define info(X) mem[X].hh.lh \

#define free_avail(X)  \
{link(X) = avail;avail= X; \
decr_dyn_used; \
} \

#define fast_get_avail(X)  \
{X= avail; \
if(X==null) X= get_avail() ; \
else{avail= link(X) ;link(X) = null; \
incr_dyn_used; \
} \
} \

#define empty_flag max_halfword
#define is_empty(X) (link(X) ==empty_flag) 
#define node_size info
#define llink(X) info(X+1) 
#define rlink(X) link(X+1)  \

#define type(X) mem[X].hh.b0
#define subtype(X) mem[X].hh.b1 \

#define is_char_node(X) (X>=hi_mem_min)  \

#define font type
#define character subtype \

#define hlist_node 0
#define box_node_size 7
#define width_offset 1
#define depth_offset 2
#define height_offset 3
#define width(X) mem[X+width_offset].sc
#define depth(X) mem[X+depth_offset].sc
#define height(X) mem[X+height_offset].sc
#define shift_amount(X) mem[X+4].sc
#define list_offset 5
#define list_ptr(X) link(X+list_offset) 
#define glue_order(X) subtype(X+list_offset) 
#define glue_sign(X) type(X+list_offset) 
#define normal 0
#define stretching 1
#define shrinking 2
#define glue_offset 6
#define glue_set(X) mem[X+glue_offset].gr \
 \

#define vlist_node 1 \

#define rule_node 2
#define rule_node_size 4
#define null_flag -010000000000
#define is_running(X) (X==null_flag)  \

#define ins_node 3
#define ins_node_size 5
#define float_cost(X) mem[X+1].i
#define ins_ptr(X) info(X+4) 
#define split_top_ptr(X) link(X+4)  \

#define mark_node 4
#define small_node_size 2
#define mark_ptr(X) mem[X+1].i \

#define adjust_node 5
#define adjust_ptr mark_ptr \

#define ligature_node 6
#define lig_char(X) X+1
#define lig_ptr(X) link(lig_char(X) )  \

#define disc_node 7
#define replace_count subtype
#define pre_break llink
#define post_break rlink \

#define whatsit_node 8 \

#define math_node 9
#define before 0
#define after 1 \

#define precedes_break(X) (type(X) <math_node) 
#define non_discardable(X) (type(X) <math_node)  \

#define glue_node 10
#define cond_math_glue 98
#define mu_glue 99
#define a_leaders 100
#define c_leaders 101
#define x_leaders 102
#define glue_ptr llink
#define leader_ptr rlink \

#define glue_spec_size 4
#define glue_ref_count(X) link(X) 
#define stretch(X) mem[X+2].sc
#define shrink(X) mem[X+3].sc
#define stretch_order type
#define shrink_order subtype
#define fil 1
#define fill 2
#define filll 3 \

#define kern_node 11
#define explicit 1
#define acc_kern 2 \

#define penalty_node 12
#define inf_penalty inf_bad
#define eject_penalty (-inf_penalty) 
#define penalty(X) mem[X+1].i \

#define unset_node 13
#define glue_stretch(X) mem[X+glue_offset].sc
#define glue_shrink shift_amount
#define span_count subtype \

#define zero_glue mem_bot
#define fil_glue zero_glue+glue_spec_size
#define fill_glue fil_glue+glue_spec_size
#define ss_glue fill_glue+glue_spec_size
#define fil_neg_glue ss_glue+glue_spec_size
#define lo_mem_stat_max fil_neg_glue+glue_spec_size-1 \
 \

#define page_ins_head mem_top
#define contrib_head mem_top-1
#define page_head mem_top-2
#define temp_head mem_top-3
#define hold_head mem_top-4
#define adjust_head mem_top-5
#define active mem_top-7
#define align_head mem_top-8
#define end_span mem_top-9
#define omit_template mem_top-10
#define null_list mem_top-11
#define lig_trick mem_top-12
#define garbage mem_top-12
#define backup_head mem_top-13
#define hi_mem_stat_min mem_top-13 \

#define hi_mem_stat_usage 14 \

#define node_list_display(X)  \
{append_char('.') ;show_node_list(X) ;flush_char; \
} \

#define token_ref_count(X) info(X)  \

#define fast_delete_glue_ref(X)  \
{if(glue_ref_count(X) ==null) free_node(X,glue_spec_size) ; \
else decr(glue_ref_count(X) ) ; \
} \

#define add_token_ref(X) incr(token_ref_count(X) ) 
#define add_glue_ref(X) incr(glue_ref_count(X) )  \

#define escape 0 \

#define relax 0
#define left_brace 1
#define right_brace 2
#define math_shift 3
#define tab_mark 4
#define car_ret 5
#define out_param 5
#define mac_param 6
#define sup_mark 7
#define sub_mark 8
#define ignore 9
#define endv 9
#define spacer 10
#define letter 11
#define other_char 12
#define active_char 13
#define par_end 13
#define match 13
#define comment 14
#define end_match 14
#define stop 14
#define invalid_char 15
#define delim_num 15
#define max_char_code 15 \

#define char_num 16
#define math_char_num 17
#define mark 18
#define xray 19
#define make_box 20
#define hmove 21
#define vmove 22
#define un_hbox 23
#define un_vbox 24
#define remove_item 25 \

#define hskip 26
#define vskip 27
#define mskip 28
#define kern 29
#define mkern 30
#define leader_ship 31
#define halign 32
#define valign 33
#define no_align 34
#define vrule 35
#define hrule 36
#define insert 37
#define vadjust 38
#define ignore_spaces 39
#define after_assignment 40
#define after_group 41
#define break_penalty 42
#define start_par 43
#define ital_corr 44
#define accent 45
#define math_accent 46
#define discretionary 47
#define eq_no 48
#define left_right 49
#define math_comp 50
#define limit_switch 51
#define above 52
#define math_style 53
#define math_choice 54
#define non_script 55
#define vcenter 56
#define case_shift 57
#define message 58
#define extension 59
#define in_stream 60
#define begin_group 61
#define end_group 62
#define omit 63
#define ex_space 64
#define no_boundary 65
#define radical 66
#define end_cs_name 67
#define min_internal 68
#define char_given 68
#define math_given 69
#define last_item 70 \

#define max_non_prefixed_command 70 \

#define toks_register 71
#define assign_toks 72
#define assign_int 73
#define assign_dimen 74
#define assign_glue 75
#define assign_mu_glue 76
#define assign_font_dimen 77
#define assign_font_int 78 \

#define set_aux 79
#define set_prev_graf 80
#define set_page_dimen 81
#define set_page_int 82 \

#define set_box_dimen 83
#define set_shape 84
#define def_code 85
#define def_family 86
#define set_font 87
#define def_font 88
#define register 89
#define max_internal 89
#define advance 90
#define multiply 91
#define divide 92
#define prefix 93
#define let 94
#define shorthand_def 95
#define read_to_cs 96
#define def 97
#define set_box 98
#define hyph_data 99
#define set_interaction 100
#define max_command 100 \

#define undefined_cs (max_command+1) 
#define expand_after (max_command+2) 
#define no_expand (max_command+3) 
#define input (max_command+4) 
#define if_test (max_command+5) 
#define fi_or_else (max_command+6) 
#define cs_name (max_command+7) 
#define convert (max_command+8) 
#define the (max_command+9) 
#define top_bot_mark (max_command+10) 
#define call (max_command+11) 
#define long_call (max_command+12) 
#define outer_call (max_command+13) 
#define long_outer_call (max_command+14) 
#define end_template (max_command+15) 
#define dont_expand (max_command+16) 
#define glue_ref (max_command+17) 
#define shape_ref (max_command+18) 
#define box_ref (max_command+19) 
#define data (max_command+20)  \

#define vmode 1
#define hmode (vmode+max_command+1) 
#define mmode (hmode+max_command+1)  \

#define ignore_depth -65536000 \

#define mode cur_list.mode_field
#define head cur_list.head_field
#define tail cur_list.tail_field
#define prev_graf cur_list.pg_field
#define aux cur_list.aux_field
#define prev_depth aux.sc
#define space_factor aux.hh.lh
#define clang aux.hh.rh
#define incompleat_noad aux.i
#define mode_line cur_list.ml_field \

#define tail_append(X) {link(tail) = X;tail= link(tail) ; \
} \

#define eq_level_field(X) X.hh.b1
#define eq_type_field(X) X.hh.b0
#define equiv_field(X) X.hh.rh
#define eq_level(X) eq_level_field(eqtb[X]) 
#define eq_type(X) eq_type_field(eqtb[X]) 
#define equiv(X) equiv_field(eqtb[X]) 
#define level_zero min_quarterword
#define level_one (level_zero+1)  \

#define active_base 1
#define single_base (active_base+256) 
#define null_cs (single_base+256) 
#define hash_base (null_cs+1) 
#define frozen_control_sequence (hash_base+hash_size) 
#define frozen_protection frozen_control_sequence
#define frozen_cr (frozen_control_sequence+1) 
#define frozen_end_group (frozen_control_sequence+2) 
#define frozen_right (frozen_control_sequence+3) 
#define frozen_fi (frozen_control_sequence+4) 
#define frozen_end_template (frozen_control_sequence+5) 
#define frozen_endv (frozen_control_sequence+6) 
#define frozen_relax (frozen_control_sequence+7) 
#define end_write (frozen_control_sequence+8) 
#define frozen_dont_expand (frozen_control_sequence+9)  \

#define frozen_null_font (frozen_control_sequence+10)  \

#define font_id_base (frozen_null_font-font_base)  \

#define undefined_control_sequence (frozen_null_font+257) 
#define glue_base (undefined_control_sequence+1)  \

#define line_skip_code 0
#define baseline_skip_code 1
#define par_skip_code 2
#define above_display_skip_code 3
#define below_display_skip_code 4
#define above_display_short_skip_code 5 \

#define below_display_short_skip_code 6 \

#define left_skip_code 7
#define right_skip_code 8
#define top_skip_code 9
#define split_top_skip_code 10
#define tab_skip_code 11
#define space_skip_code 12
#define xspace_skip_code 13
#define par_fill_skip_code 14
#define thin_mu_skip_code 15
#define med_mu_skip_code 16
#define thick_mu_skip_code 17
#define glue_pars 18
#define skip_base (glue_base+glue_pars) 
#define mu_skip_base (skip_base+256) 
#define local_base (mu_skip_base+256)  \

#define skip(X) equiv(skip_base+X) 
#define mu_skip(X) equiv(mu_skip_base+X) 
#define glue_par(X) equiv(glue_base+X) 
#define line_skip glue_par(line_skip_code) 
#define baseline_skip glue_par(baseline_skip_code) 
#define par_skip glue_par(par_skip_code) 
#define above_display_skip glue_par(above_display_skip_code) 
#define below_display_skip glue_par(below_display_skip_code) 
#define above_display_short_skip glue_par(above_display_short_skip_code) 
#define below_display_short_skip glue_par(below_display_short_skip_code) 
#define left_skip glue_par(left_skip_code) 
#define right_skip glue_par(right_skip_code) 
#define top_skip glue_par(top_skip_code) 
#define split_top_skip glue_par(split_top_skip_code) 
#define tab_skip glue_par(tab_skip_code) 
#define space_skip glue_par(space_skip_code) 
#define xspace_skip glue_par(xspace_skip_code) 
#define par_fill_skip glue_par(par_fill_skip_code) 
#define thin_mu_skip glue_par(thin_mu_skip_code) 
#define med_mu_skip glue_par(med_mu_skip_code) 
#define thick_mu_skip glue_par(thick_mu_skip_code)  \

#define par_shape_loc local_base
#define output_routine_loc (local_base+1) 
#define every_par_loc (local_base+2) 
#define every_math_loc (local_base+3) 
#define every_display_loc (local_base+4) 
#define every_hbox_loc (local_base+5) 
#define every_vbox_loc (local_base+6) 
#define every_job_loc (local_base+7) 
#define every_cr_loc (local_base+8) 
#define err_help_loc (local_base+9) 
#define toks_base (local_base+10) 
#define box_base (toks_base+256) 
#define cur_font_loc (box_base+256) 
#define math_font_base (cur_font_loc+1) 
#define cat_code_base (math_font_base+48)  \

#define lc_code_base (cat_code_base+256) 
#define uc_code_base (lc_code_base+256) 
#define sf_code_base (uc_code_base+256) 
#define math_code_base (sf_code_base+256) 
#define int_base (math_code_base+256)  \

#define par_shape_ptr equiv(par_shape_loc) 
#define output_routine equiv(output_routine_loc) 
#define every_par equiv(every_par_loc) 
#define every_math equiv(every_math_loc) 
#define every_display equiv(every_display_loc) 
#define every_hbox equiv(every_hbox_loc) 
#define every_vbox equiv(every_vbox_loc) 
#define every_job equiv(every_job_loc) 
#define every_cr equiv(every_cr_loc) 
#define err_help equiv(err_help_loc) 
#define toks(X) equiv(toks_base+X) 
#define box(X) equiv(box_base+X) 
#define cur_font equiv(cur_font_loc) 
#define fam_fnt(X) equiv(math_font_base+X) 
#define cat_code(X) equiv(cat_code_base+X) 
#define lc_code(X) equiv(lc_code_base+X) 
#define uc_code(X) equiv(uc_code_base+X) 
#define sf_code(X) equiv(sf_code_base+X) 
#define math_code(X) equiv(math_code_base+X)  \
 \

#define null_font font_base
#define var_code 070000 \

#define pretolerance_code 0
#define tolerance_code 1
#define line_penalty_code 2
#define hyphen_penalty_code 3
#define ex_hyphen_penalty_code 4
#define club_penalty_code 5
#define widow_penalty_code 6
#define display_widow_penalty_code 7
#define broken_penalty_code 8
#define bin_op_penalty_code 9
#define rel_penalty_code 10
#define pre_display_penalty_code 11 \

#define post_display_penalty_code 12 \

#define inter_line_penalty_code 13
#define double_hyphen_demerits_code 14
#define final_hyphen_demerits_code 15
#define adj_demerits_code 16
#define mag_code 17
#define delimiter_factor_code 18
#define looseness_code 19
#define time_code 20
#define day_code 21
#define month_code 22
#define year_code 23
#define show_box_breadth_code 24
#define show_box_depth_code 25
#define hbadness_code 26
#define vbadness_code 27
#define pausing_code 28
#define tracing_online_code 29
#define tracing_macros_code 30
#define tracing_stats_code 31
#define tracing_paragraphs_code 32
#define tracing_pages_code 33
#define tracing_output_code 34
#define tracing_lost_chars_code 35
#define tracing_commands_code 36
#define tracing_restores_code 37
#define uc_hyph_code 38
#define output_penalty_code 39
#define max_dead_cycles_code 40
#define hang_after_code 41
#define floating_penalty_code 42
#define global_defs_code 43
#define cur_fam_code 44
#define escape_char_code 45
#define default_hyphen_char_code 46
#define default_skew_char_code 47
#define end_line_char_code 48
#define new_line_char_code 49
#define language_code 50
#define left_hyphen_min_code 51
#define right_hyphen_min_code 52
#define holding_inserts_code 53
#define error_context_lines_code 54
#define int_pars 55
#define count_base (int_base+int_pars) 
#define del_code_base (count_base+256) 
#define dimen_base (del_code_base+256)  \

#define del_code(X) eqtb[del_code_base+X].i
#define count(X) eqtb[count_base+X].i
#define int_par(X) eqtb[int_base+X].i
#define pretolerance int_par(pretolerance_code) 
#define tolerance int_par(tolerance_code) 
#define line_penalty int_par(line_penalty_code) 
#define hyphen_penalty int_par(hyphen_penalty_code) 
#define ex_hyphen_penalty int_par(ex_hyphen_penalty_code) 
#define club_penalty int_par(club_penalty_code) 
#define widow_penalty int_par(widow_penalty_code) 
#define display_widow_penalty int_par(display_widow_penalty_code) 
#define broken_penalty int_par(broken_penalty_code) 
#define bin_op_penalty int_par(bin_op_penalty_code) 
#define rel_penalty int_par(rel_penalty_code) 
#define pre_display_penalty int_par(pre_display_penalty_code) 
#define post_display_penalty int_par(post_display_penalty_code) 
#define inter_line_penalty int_par(inter_line_penalty_code) 
#define double_hyphen_demerits int_par(double_hyphen_demerits_code) 
#define final_hyphen_demerits int_par(final_hyphen_demerits_code) 
#define adj_demerits int_par(adj_demerits_code) 
#define mag int_par(mag_code) 
#define delimiter_factor int_par(delimiter_factor_code) 
#define looseness int_par(looseness_code) 
#define time int_par(time_code) 
#define day int_par(day_code) 
#define month int_par(month_code) 
#define year int_par(year_code) 
#define show_box_breadth int_par(show_box_breadth_code) 
#define show_box_depth int_par(show_box_depth_code) 
#define hbadness int_par(hbadness_code) 
#define vbadness int_par(vbadness_code) 
#define pausing int_par(pausing_code) 
#define tracing_online int_par(tracing_online_code) 
#define tracing_macros int_par(tracing_macros_code) 
#define tracing_stats int_par(tracing_stats_code) 
#define tracing_paragraphs int_par(tracing_paragraphs_code) 
#define tracing_pages int_par(tracing_pages_code) 
#define tracing_output int_par(tracing_output_code) 
#define tracing_lost_chars int_par(tracing_lost_chars_code) 
#define tracing_commands int_par(tracing_commands_code) 
#define tracing_restores int_par(tracing_restores_code) 
#define uc_hyph int_par(uc_hyph_code) 
#define output_penalty int_par(output_penalty_code) 
#define max_dead_cycles int_par(max_dead_cycles_code) 
#define hang_after int_par(hang_after_code) 
#define floating_penalty int_par(floating_penalty_code) 
#define global_defs int_par(global_defs_code) 
#define cur_fam int_par(cur_fam_code) 
#define escape_char int_par(escape_char_code) 
#define default_hyphen_char int_par(default_hyphen_char_code) 
#define default_skew_char int_par(default_skew_char_code) 
#define end_line_char int_par(end_line_char_code) 
#define new_line_char int_par(new_line_char_code) 
#define language int_par(language_code) 
#define left_hyphen_min int_par(left_hyphen_min_code) 
#define right_hyphen_min int_par(right_hyphen_min_code) 
#define holding_inserts int_par(holding_inserts_code) 
#define error_context_lines int_par(error_context_lines_code)  \

#define par_indent_code 0
#define math_surround_code 1
#define line_skip_limit_code 2
#define hsize_code 3
#define vsize_code 4
#define max_depth_code 5
#define split_max_depth_code 6
#define box_max_depth_code 7
#define hfuzz_code 8
#define vfuzz_code 9
#define delimiter_shortfall_code 10
#define null_delimiter_space_code 11
#define script_space_code 12
#define pre_display_size_code 13
#define display_width_code 14
#define display_indent_code 15
#define overfull_rule_code 16
#define hang_indent_code 17
#define h_offset_code 18
#define v_offset_code 19
#define emergency_stretch_code 20
#define dimen_pars 21
#define scaled_base (dimen_base+dimen_pars)  \

#define eqtb_size (scaled_base+255)  \

#define dimen(X) eqtb[scaled_base+X].sc
#define dimen_par(X) eqtb[dimen_base+X].sc
#define par_indent dimen_par(par_indent_code) 
#define math_surround dimen_par(math_surround_code) 
#define line_skip_limit dimen_par(line_skip_limit_code) 
#define hsize dimen_par(hsize_code) 
#define vsize dimen_par(vsize_code) 
#define max_depth dimen_par(max_depth_code) 
#define split_max_depth dimen_par(split_max_depth_code) 
#define box_max_depth dimen_par(box_max_depth_code) 
#define hfuzz dimen_par(hfuzz_code) 
#define vfuzz dimen_par(vfuzz_code) 
#define delimiter_shortfall dimen_par(delimiter_shortfall_code) 
#define null_delimiter_space dimen_par(null_delimiter_space_code) 
#define script_space dimen_par(script_space_code) 
#define pre_display_size dimen_par(pre_display_size_code) 
#define display_width dimen_par(display_width_code) 
#define display_indent dimen_par(display_indent_code) 
#define overfull_rule dimen_par(overfull_rule_code) 
#define hang_indent dimen_par(hang_indent_code) 
#define h_offset dimen_par(h_offset_code) 
#define v_offset dimen_par(v_offset_code) 
#define emergency_stretch dimen_par(emergency_stretch_code)  \

#define next(X) hash[X].lh
#define text(X) hash[X].rh
#define hash_is_full (hash_used==hash_base) 
#define font_id_text(X) text(font_id_base+X)  \

#define save_type(X) save_stack[X].hh.b0
#define save_level(X) save_stack[X].hh.b1 \

#define save_index(X) save_stack[X].hh.rh \

#define restore_old_value 0
#define restore_zero 1
#define insert_token 2
#define level_boundary 3 \

#define bottom_level 0
#define simple_group 1
#define hbox_group 2
#define adjusted_hbox_group 3
#define vbox_group 4
#define vtop_group 5
#define align_group 6
#define no_align_group 7
#define output_group 8
#define math_group 9
#define disc_group 10
#define insert_group 11
#define vcenter_group 12
#define math_choice_group 13
#define semi_simple_group 14
#define math_shift_group 15
#define math_left_group 16
#define max_group_code 16 \

#define check_full_save_stack if(save_ptr> max_save_stack)  \
{max_save_stack= save_ptr; \
if(max_save_stack> save_size-6) overflow("save size",save_size) ; \
 \
} \

#define saved(X) save_stack[save_ptr+X].i \

#define cs_token_flag 07777 \

#define left_brace_token 00400
#define left_brace_limit 01000
#define right_brace_token 01000
#define right_brace_limit 01400
#define math_shift_token 01400
#define tab_token 02000
#define out_param_token 02400
#define space_token 05040
#define letter_token 05400
#define other_token 06000
#define match_token 06400
#define end_match_token 07000 \

#define chr_cmd(X) {print_str(X) ;print_ASCII(chr_code) ; \
} \

#define state cur_input.state_field
#define index cur_input.index_field
#define start cur_input.start_field
#define limit cur_input.limit_field
#define name cur_input.name_field \

#define mid_line 1
#define skip_blanks (2+max_char_code) 
#define new_line (3+max_char_code+max_char_code)  \

#define terminal_input (name==0) 
#define cur_file input_file[index] \

#define skipping 1
#define defining 2
#define matching 3
#define aligning 4
#define absorbing 5 \

#define token_list 0
#define token_type index
#define param_start limit
#define parameter 0
#define u_template 1
#define v_template 2
#define backed_up 3
#define inserted 4
#define macro 5
#define output_text 6
#define every_par_text 7
#define every_math_text 8
#define every_display_text 9
#define every_hbox_text 10
#define every_vbox_text 11
#define every_job_text 12
#define every_cr_text 13
#define mark_text 14
#define write_text 15 \

#define begin_pseudoprint  \
{l= tally;tally= 0;selector= pseudo; \
trick_count= 1000000; \
}
#define set_trick_count  \
{first_count= tally; \
trick_count= tally+1+error_line-half_error_line; \
if(trick_count<error_line) trick_count= error_line; \
} \

#define push_input  \
{if(input_ptr> max_in_stack)  \
{max_in_stack= input_ptr; \
if(input_ptr==stack_size) overflow("input stack size",stack_size) ; \
 \
} \
input_stack[input_ptr]= cur_input; \
incr(input_ptr) ; \
} \

#define pop_input  \
{decr(input_ptr) ;cur_input= input_stack[input_ptr]; \
} \

#define back_list(X) begin_token_list(X,backed_up) 
#define ins_list(X) begin_token_list(X,inserted)  \

#define any_state_plus(X) case mid_line+X:case skip_blanks+X:case new_line+X \

#define add_delims_to(X) X+math_shift:X+tab_mark:X+mac_param: \
X+sub_mark:X+letter:X+other_char \

#define is_hex(X) (((X>='0') &&(X<='9') ) ||((X>='a') &&(X<='f') ) ) 
#define hex_to_cur_chr  \
if(c<='9') cur_chr= c-'0';else cur_chr= c-'a'+10; \
if(cc<='9') cur_chr= 16*cur_chr+cc-'0'; \
else cur_chr= 16*cur_chr+cc-'a'+10 \

#define no_expand_flag 257 \

#define end_line_char_inactive (end_line_char<0) ||(end_line_char> 255)  \

#define store_new_token(X) {q= get_avail() ;link(p) = q;info(q) = X; \
p= q; \
}
#define fast_store_new_token(X) {fast_get_avail(q) ;link(p) = q;info(q) = X; \
p= q; \
} \

#define top_mark_code 0
#define first_mark_code 1
#define bot_mark_code 2
#define split_first_mark_code 3
#define split_bot_mark_code 4
#define top_mark cur_mark[top_mark_code]
#define first_mark cur_mark[first_mark_code]
#define bot_mark cur_mark[bot_mark_code]
#define split_first_mark cur_mark[split_first_mark_code]
#define split_bot_mark cur_mark[split_bot_mark_code] \

#define int_val 0
#define dimen_val 1
#define glue_val 2
#define mu_val 3
#define ident_val 4
#define tok_val 5 \

#define scanned_result_end(X) cur_val_level= X;}
#define scanned_result(X) {cur_val= X;scanned_result_end \

#define input_line_no_code (glue_val+1) 
#define badness_code (glue_val+2)  \

#define max_dimen 07777777777 \

#define octal_token (other_token+'\'') 
#define hex_token (other_token+'"') 
#define alpha_token (other_token+'`') 
#define point_token (other_token+'.') 
#define continental_point_token (other_token+',')  \

#define infinity 017777777777
#define zero_token (other_token+'0') 
#define A_token (letter_token+'A') 
#define other_A_token (other_token+'A')  \

#define scan_normal_dimen scan_dimen(false,false,false)  \

#define set_conversion_end(X) denom= X;}
#define set_conversion(X) {num= X;set_conversion_end \

#define default_rule 26214 \

#define number_code 0
#define roman_numeral_code 1
#define string_code 2
#define meaning_code 3
#define font_name_code 4
#define job_name_code 5 \

#define closed 2
#define just_open 1 \

#define if_char_code 0
#define if_cat_code 1
#define if_int_code 2
#define if_dim_code 3
#define if_odd_code 4
#define if_vmode_code 5
#define if_hmode_code 6
#define if_mmode_code 7
#define if_inner_code 8
#define if_void_code 9
#define if_hbox_code 10
#define if_vbox_code 11
#define ifx_code 12
#define if_eof_code 13
#define if_true_code 14
#define if_false_code 15
#define if_case_code 16 \

#define if_node_size 2
#define if_line_field(X) mem[X+1].i
#define if_code 1
#define fi_code 2
#define else_code 3
#define or_code 4 \

#define get_x_token_or_active_char  \
{get_x_token() ; \
if(cur_cmd==relax) if(cur_chr==no_expand_flag)  \
{cur_cmd= active_char; \
cur_chr= cur_tok-cs_token_flag-active_base; \
} \
} \

#define append_to_name(X) {c= X;incr(k) ; \
if(k<=file_name_size) name_of_file[k]= xchr[c]; \
} \

#define format_default_length 20
#define format_area_length 11
#define format_ext_length 4
#define format_extension_str ".fmt" \

#define pack_cur_name pack_file_name(cur_name,cur_area,cur_ext)  \

#define no_tag 0
#define lig_tag 1
#define list_tag 2
#define ext_tag 3 \

#define stop_flag qi(128) 
#define kern_flag qi(128) 
#define skip_byte(X) X.b0
#define next_char(X) X.b1
#define op_byte(X) X.b2
#define rem_byte(X) X.b3 \

#define ext_top(X) X.b0
#define ext_mid(X) X.b1
#define ext_bot(X) X.b2
#define ext_rep(X) X.b3 \

#define slant_code 1
#define space_code 2
#define space_stretch_code 3
#define space_shrink_code 4
#define x_height_code 5
#define quad_code 6
#define extra_space_code 7 \

#define non_char qi(256) 
#define non_address 0 \

#define char_info_end(X) X].qqqq
#define char_info(X) font_info[char_base[X]+char_info_end
#define char_width_end(X) X.b0].sc
#define char_width(X) font_info[width_base[X]+char_width_end
#define char_exists(X) (X.b0> min_quarterword) 
#define char_italic_end(X) (qo(X.b2) ) /4].sc
#define char_italic(X) font_info[italic_base[X]+char_italic_end
#define height_depth(X) qo(X.b1) 
#define char_height_end(X) (X) /16].sc
#define char_height(X) font_info[height_base[X]+char_height_end
#define char_depth_end(X) (X) %16].sc
#define char_depth(X) font_info[depth_base[X]+char_depth_end
#define char_tag(X) ((qo(X.b2) ) %4)  \

#define char_kern_end(X) 256*op_byte(X) +rem_byte(X) ].sc
#define char_kern(X) font_info[kern_base[X]+char_kern_end
#define kern_base_offset 256*(128+min_quarterword) 
#define lig_kern_start(X) lig_kern_base[X]+rem_byte
#define lig_kern_restart_end(X) 256*op_byte(X) +rem_byte(X) +32768-kern_base_offset
#define lig_kern_restart(X) lig_kern_base[X]+lig_kern_restart_end \

#define param_end(X) param_base[X]].sc
#define param(X) font_info[X+param_end
#define slant param(slant_code) 
#define space param(space_code) 
#define space_stretch param(space_stretch_code) 
#define space_shrink param(space_shrink_code) 
#define x_height param(x_height_code) 
#define quad param(quad_code) 
#define extra_space param(extra_space_code)  \

#define abort goto bad_tfm \

#define start_font_error_message print_err("Font ") ;sprint_cs(u) ; \
print_char('=') ;print_file_name(nom,aire,empty_string) ; \
if(s>=0)  \
{print_str(" at ") ;print_scaled(s) ;print_str("pt") ; \
} \
else if(s!=-1000)  \
{print_str(" scaled ") ;print_int(-s) ; \
} \

#define fget get(tfm_file) 
#define fbyte tfm_file.d
#define read_sixteen(X) {X= fbyte; \
if(X> 127) abort; \
fget;X= X*0400+fbyte; \
}
#define store_four_quarters(X) {fget;a= fbyte;qw.b0= qi(a) ; \
fget;b= fbyte;qw.b1= qi(b) ; \
fget;c= fbyte;qw.b2= qi(c) ; \
fget;d= fbyte;qw.b3= qi(d) ; \
X= qw; \
} \

#define check_byte_range(X) {if((X<bc) ||(X> ec) ) abort;}
#define current_character_being_worked_on k+bc-fmem_ptr \

#define store_scaled(X) {fget;a= fbyte;fget;b= fbyte; \
fget;c= fbyte;fget;d= fbyte; \
sw= (((((d*z) /0400) +(c*z) ) /0400) +(b*z) ) /beta; \
if(a==0) X= sw;else if(a==255) X= sw-alpha;else abort; \
} \

#define check_existence(X)  \
{check_byte_range(X) ; \
qw= char_info(f) (X) ; \
if(!char_exists(qw) ) abort; \
} \

#define adjust(X) X[f]= qo(X[f])  \
 \

#define set_char_0 0
#define set1 128
#define set_rule 132
#define put_rule 137
#define nop 138
#define bop 139
#define eop 140
#define push 141
#define pop 142
#define right1 143
#define w0 147
#define w1 148
#define x0 152
#define x1 153
#define down1 157
#define y0 161
#define y1 162
#define z0 166
#define z1 167
#define fnt_num_0 171
#define fnt1 235
#define xxx1 239
#define xxx4 242
#define fnt_def1 243
#define pre 247
#define post 248
#define post_post 249 \

#define id_byte 2 \

#define dvi_out(X) {dvi_buf[dvi_ptr]= X;incr(dvi_ptr) ; \
if(dvi_ptr==dvi_limit) dvi_swap() ; \
} \

#define movement_node_size 3
#define location(X) mem[X+2].i \

#define y_here 1
#define z_here 2
#define yz_OK 3
#define y_OK 4
#define z_OK 5
#define d_fixed 6 \

#define none_seen 0
#define y_seen 6
#define z_seen 12 \

#define synch_h if(cur_h!=dvi_h)  \
{movement(cur_h-dvi_h,right1) ;dvi_h= cur_h; \
}
#define synch_v if(cur_v!=dvi_v)  \
{movement(cur_v-dvi_v,down1) ;dvi_v= cur_v; \
} \

#define billion float_constant(1000000000) 
#define vet_glue(X) glue_temp= X; \
if(glue_temp> billion)  \
glue_temp= billion; \
else if(glue_temp<-billion)  \
glue_temp= -billion \

#define exactly 0
#define additional 1
#define natural 0,additional \

#define noad_size 4
#define nucleus(X) X+1
#define supscr(X) X+2
#define subscr(X) X+3
#define math_type link
#define fam font
#define math_char 1
#define sub_box 2
#define sub_mlist 3
#define math_text_char 4 \

#define ord_noad (unset_node+3) 
#define op_noad (ord_noad+1) 
#define bin_noad (ord_noad+2) 
#define rel_noad (ord_noad+3) 
#define open_noad (ord_noad+4) 
#define close_noad (ord_noad+5) 
#define punct_noad (ord_noad+6) 
#define inner_noad (ord_noad+7) 
#define limits 1
#define no_limits 2 \

#define left_delimiter(X) X+4
#define right_delimiter(X) X+5
#define radical_noad (inner_noad+1) 
#define radical_noad_size 5
#define fraction_noad (radical_noad+1) 
#define fraction_noad_size 6
#define small_fam(X) mem[X].qqqq.b0
#define small_char(X) mem[X].qqqq.b1
#define large_fam(X) mem[X].qqqq.b2
#define large_char(X) mem[X].qqqq.b3
#define thickness width
#define default_code 010000000000
#define numerator supscr
#define denominator subscr \

#define under_noad (fraction_noad+1) 
#define over_noad (under_noad+1) 
#define accent_noad (over_noad+1) 
#define accent_noad_size 5
#define accent_chr(X) X+4
#define vcenter_noad (accent_noad+1) 
#define left_noad (vcenter_noad+1) 
#define right_noad (left_noad+1) 
#define delimiter nucleus
#define scripts_allowed(X) (type(X) >=ord_noad) &&(type(X) <left_noad)  \

#define style_node (unset_node+1) 
#define style_node_size 3
#define display_style 0
#define text_style 2
#define script_style 4
#define script_script_style 6
#define cramped 1 \

#define choice_node (unset_node+2) 
#define display_mlist(X) info(X+1) 
#define text_mlist(X) link(X+1) 
#define script_mlist(X) info(X+2) 
#define script_script_mlist(X) link(X+2)  \

#define text_size 0
#define script_size 16
#define script_script_size 32 \

#define mathsy_end(X) fam_fnt(2+X) ]].sc
#define mathsy(X) font_info[X+param_base[mathsy_end
#define math_x_height mathsy(5) 
#define math_quad mathsy(6) 
#define num1 mathsy(8) 
#define num2 mathsy(9) 
#define num3 mathsy(10) 
#define denom1 mathsy(11) 
#define denom2 mathsy(12) 
#define sup1 mathsy(13) 
#define sup2 mathsy(14) 
#define sup3 mathsy(15) 
#define sub1 mathsy(16) 
#define sub2 mathsy(17) 
#define sup_drop mathsy(18) 
#define sub_drop mathsy(19) 
#define delim1 mathsy(20)  \

#define delim2 mathsy(21) 
#define axis_height mathsy(22) 
#define total_mathsy_params 22 \

#define mathex(X) font_info[X+param_base[fam_fnt(3+cur_size) ]].sc
#define default_rule_thickness mathex(8) 
#define big_op_spacing1 mathex(9) 
#define big_op_spacing2 mathex(10) 
#define big_op_spacing3 mathex(11) 
#define big_op_spacing4 mathex(12) 
#define big_op_spacing5 mathex(13) 
#define total_mathex_params 13 \

#define cramped_style(X) 2*(X/2) +cramped
#define sub_style(X) 2*(X/4) +script_style+cramped
#define sup_style(X) 2*(X/4) +script_style+(X%2) 
#define num_style(X) X+2-2*(X/6) 
#define denom_style(X) 2*(X/2) +cramped+2-2*(X/6)  \

#define mu_mult(X) nx_plus_y(n,X,xn_over_d(X,f,0200000) )  \

#define new_hlist(X) mem[nucleus(X) ].i \

#define choose_mlist(X) {p= X(q) ;X(q) = null;} \

#define math_spacing_str  \
 \
"math_spacing" \
 \

#define u_part(X) mem[X+height_offset].i
#define v_part(X) mem[X+depth_offset].i
#define extra_info(X) info(X+list_offset)  \

#define preamble link(align_head) 
#define align_stack_node_size 5 \

#define span_code 256
#define cr_code 257
#define cr_cr_code (cr_code+1) 
#define end_template_token cs_token_flag+frozen_end_template \

#define span_node_size 2 \

#define tight_fit 3 \

#define loose_fit 1 \

#define very_loose_fit 0 \

#define decent_fit 2 \

#define active_node_size 3
#define fitness subtype
#define break_node rlink
#define line_number llink
#define total_demerits(X) mem[X+2].i
#define unhyphenated 0
#define hyphenated 1
#define last_active active \

#define passive_node_size 2
#define cur_break rlink
#define prev_break llink
#define serial info \

#define delta_node_size 7
#define delta_node 2 \

#define do_all_six(X) X(1) ;X(2) ;X(3) ;X(4) ;X(5) ;X(6)  \

#define check_shrinkage(X) if((shrink_order(X) !=normal) &&(shrink(X) !=0) )  \
{X= finite_shrink(X) ; \
} \

#define copy_to_cur_active(X) cur_active_width[X]= active_width[X]
#define update_width(X)  \
cur_active_width[X]= cur_active_width[X]+mem[r+X].sc \

#define awful_bad 07777777777 \

#define set_break_width_to_background(X) break_width[X]= background[X] \

#define convert_to_break_width(X)  \
mem[prev_r+X].sc= mem[prev_r+X].sc \
-cur_active_width[X]+break_width[X]
#define store_break_width(X) active_width[X]= break_width[X]
#define new_delta_to_break_width(X)  \
mem[q+X].sc= break_width[X]-cur_active_width[X] \

#define new_delta_from_break_width(X) mem[q+X].sc=  \
cur_active_width[X]-break_width[X] \

#define combine_two_deltas(X) mem[prev_r+X].sc= mem[prev_r+X].sc+mem[r+X].sc
#define downdate_width(X) cur_active_width[X]= cur_active_width[X]- \
mem[prev_r+X].sc \

#define update_active(X) active_width[X]= active_width[X]+mem[r+X].sc \

#define store_background(X) active_width[X]= background[X] \

#define act_width active_width[1]
#define kern_break {if(!is_char_node(link(cur_p) ) &&auto_breaking)  \
if(type(link(cur_p) ) ==glue_node) try_break(0,unhyphenated) ; \
act_width= act_width+width(cur_p) ; \
} \

#define next_break prev_break \

#define append_charnode_to_t(X) {link(t) = get_avail() ;t= link(t) ; \
font(t) = hf;character(t) = X; \
}
#define set_cur_r {if(j<n) cur_r= qi(hu[j+1]) ;else cur_r= bchar; \
if(odd(hyf[j]) ) cur_rh= hchar;else cur_rh= non_char; \
} \

#define wrap_lig(X) if(ligature_present)  \
{p= new_ligature(hf,cur_l,link(cur_q) ) ; \
if(lft_hit)  \
{subtype(p) = 2;lft_hit= false; \
} \
if(X) if(lig_stack==null)  \
{incr(subtype(p) ) ;rt_hit= false; \
} \
link(cur_q) = p;t= p;ligature_present= false; \
}
#define pop_lig_stack {if(lig_ptr(lig_stack) > null)  \
{link(t) = lig_ptr(lig_stack) ; \
t= link(t) ;incr(j) ; \
} \
p= lig_stack;lig_stack= link(p) ;free_node(p,small_node_size) ; \
if(lig_stack==null) set_cur_r else cur_r= character(lig_stack) ; \
} \

#define advance_major_tail {major_tail= link(major_tail) ;incr(r_count) ; \
} \

#define trie_link(X) trie[X].rh
#define trie_char(X) trie[X].b1
#define trie_op(X) trie[X].b0 \

#define set_cur_lang if(language<=0) cur_lang= 0; \
else if(language> 255) cur_lang= 0; \
else cur_lang= language \

#define trie_root trie_l[0] \

#define trie_ref trie_hash
#define trie_back(X) trie[X].lh \

#define active_height active_width
#define cur_height active_height[1]
#define set_height_zero(X) active_height[X]= 0 \

#define deplorable 100000 \

#define inserts_only 1 \

#define box_there 2 \

#define page_ins_node_size 4
#define inserting 0
#define split_up 1
#define broken_ptr(X) link(X+1)  \

#define broken_ins(X) info(X+1) 
#define last_ins_ptr(X) link(X+2) 
#define best_ins_ptr(X) info(X+2)  \

#define page_goal page_so_far[0]
#define page_total page_so_far[1]
#define page_shrink page_so_far[6]
#define page_depth page_so_far[7] \

#define print_plus_end(X) print_str(X) ;}
#define print_plus(X) if(page_so_far[X]!=0)  \
{print_str(" plus ") ;print_scaled(page_so_far[X]) ;print_plus_end \

#define set_page_so_far_zero(X) page_so_far[X]= 0 \

#define contrib_tail nest[0].tail_field \

#define adjust_space_factor  \
main_s= sf_code(cur_chr) ; \
if(main_s==1000) space_factor= 1000; \
else if(main_s<1000)  \
{if(main_s> 0) space_factor= main_s; \
} \
else if(space_factor<1000) space_factor= 1000; \
else space_factor= main_s \

#define pack_lig(X)  \
{main_p= new_ligature(main_f,cur_l,link(cur_q) ) ; \
if(lft_hit)  \
{subtype(main_p) = 2;lft_hit= false; \
} \
if(X) if(lig_stack==null)  \
{incr(subtype(main_p) ) ;rt_hit= false; \
} \
link(cur_q) = main_p;tail= main_p;ligature_present= false; \
} \

#define wrapup(X) if(cur_l<non_char)  \
{if(link(cur_q) > null)  \
if(character(tail) ==qi(hyphen_char[main_f]) ) ins_disc= true; \
if(ligature_present) pack_lig(X) ; \
if(ins_disc)  \
{ins_disc= false; \
if(mode> 0) tail_append(new_disc() ) ; \
} \
} \

#define any_mode(X) case vmode+X:case hmode+X:case mmode+X \

#define non_math(X) case vmode+X:case hmode+X \

#define fil_code 0
#define fill_code 1
#define ss_code 2
#define fil_neg_code 3
#define skip_code 4
#define mskip_code 5 \

#define box_flag 010000000000
#define ship_out_flag box_flag+512
#define leader_flag box_flag+513
#define box_code 0
#define copy_code 1
#define last_box_code 2
#define vsplit_code 3
#define vtop_code 4 \

#define fam_in_range ((cur_fam>=0) &&(cur_fam<16) )  \

#define above_code 0
#define over_code 1
#define atop_code 2
#define delimited_code 3 \

#define global (a>=4) 
#define define(X,Y,Z) if(global) geq_define(X,Y,Z) ;else eq_define(X,Y,Z) 
#define word_define(X,Y) if(global) geq_word_define(X,Y) ;else eq_word_define(X,Y)  \

#define char_def_code 0
#define math_char_def_code 1
#define count_def_code 2
#define dimen_def_code 3
#define skip_def_code 4
#define mu_skip_def_code 5
#define toks_def_code 6 \

#define show_code 0
#define show_box_code 1
#define show_the_code 2
#define show_lists 3 \

#define too_small(X) {wake_up_terminal; \
wterm_ln("---! Must increase the %s",X) ; \
 \
goto bad_fmt; \
} \

#define dump_wd(X) {fmt_file.d= X;put(fmt_file) ;}
#define dump_int(X) {fmt_file.d.i= X;put(fmt_file) ;}
#define dump_hh(X) {fmt_file.d.hh= X;put(fmt_file) ;}
#define dump_qqqq(X) {fmt_file.d.qqqq= X;put(fmt_file) ;} \

#define undump_wd(X) {get(fmt_file) ;X= fmt_file.d;}
#define undump_int(X) {get(fmt_file) ;X= fmt_file.d.i;}
#define undump_hh(X) {get(fmt_file) ;X= fmt_file.d.hh;}
#define undump_qqqq(X) {get(fmt_file) ;X= fmt_file.d.qqqq;}
#define undump_end_end(X) X= x;}
#define undump_end(X) (x> X) ) goto bad_fmt;else undump_end_end
#define undump(X) {undump_int(x) ;if((x<X) ||undump_end
#define undump_size_end_end(X) too_small(X) else undump_end_end
#define undump_size_end(X) if(x> X) undump_size_end_end
#define undump_size(X) {undump_int(x) ; \
if(x<X) goto bad_fmt;undump_size_end \

#define dump_four_ASCII  \
w.b0= qi(so(str_pool[k]) ) ;w.b1= qi(so(str_pool[k+1]) ) ; \
w.b2= qi(so(str_pool[k+2]) ) ;w.b3= qi(so(str_pool[k+3]) ) ; \
dump_qqqq(w)  \

#define undump_four_ASCII  \
undump_qqqq(w) ; \
str_pool[k]= si(qo(w.b0) ) ;str_pool[k+1]= si(qo(w.b1) ) ; \
str_pool[k+2]= si(qo(w.b2) ) ;str_pool[k+3]= si(qo(w.b3) )  \

#define write_node_size 2
#define open_node_size 3
#define open_node 0
#define write_node 1
#define close_node 2
#define special_node 3
#define language_node 4
#define what_lang(X) link(X+1) 
#define what_lhm(X) type(X+1) 
#define what_rhm(X) subtype(X+1) 
#define write_tokens(X) link(X+1) 
#define write_stream(X) info(X+1) 
#define open_name(X) link(X+1) 
#define open_area(X) info(X+2) 
#define open_ext(X) link(X+2)  \

#define immediate_code 4
#define set_language_code 5 \

#define adv_past(X) if(subtype(X) ==language_node)  \
{cur_lang= what_lang(X) ;l_hyf= what_lhm(X) ;r_hyf= what_rhm(X) ;} \

#define end_write_token cs_token_flag+end_write \

#define str_0_255 "^^@^^A^^B^^C^^D^^E^^F^^G^^H^^I^^J^^K^^L^^M^^N^^O" \
"^^P^^Q^^R^^S^^T^^U^^V^^W^^X^^Y^^Z^^[^^\\^^]^^^^^_" \
" !\"#$%&'()*+,-./" \
"0123456789:;<=>?" \
"@ABCDEFGHIJKLMNO" \
"PQRSTUVWXYZ[\\]^_" \
"`abcdefghijklmno" \
"pqrstuvwxyz{|}~^^?" \
"^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f" \
"^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f" \
"^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af" \
"^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf" \
"^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf" \
"^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df" \
"^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef" \
"^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff"
#define str_start_0_255 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45, \
48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93, \
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, \
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, \
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, \
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, \
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, \
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, \
194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254, \
258,262,266,270,274,278,282,286,290,294,298,302,306,310,314,318, \
322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382, \
386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446, \
450,454,458,462,466,470,474,478,482,486,490,494,498,502,506,510, \
514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574, \
578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638, \
642,646,650,654,658,662,666,670,674,678,682,686,690,694,698,702,
#define str_256 "???"
#define str_257 "m2d5c2l5x2v5i"
#define str_258 "batchmode"
#define str_259 "nonstopmode"
#define str_260 "scrollmode"
#define str_261 "CLOBBERED."
#define str_262 "fil"
#define str_263 "unset"
#define str_264 "rule("
#define str_265 "insert"
#define str_266 "glue"
#define str_267 "nonscript"
#define str_268 "mskip"
#define str_269 "mu"
#define str_270 ""
#define empty_string 270
#define str_271 "kern"
#define str_272 "mkern"
#define str_273 "math"
#define str_274 "penalty "
#define str_275 "discretionary"
#define str_276 "mark"
#define str_277 "vadjust"
#define str_278 "flushing"
#define str_279 "copying"
#define str_280 "lineskip"
#define str_281 "baselineskip"
#define str_282 "parskip"
#define str_283 "abovedisplayskip"
#define str_284 "belowdisplayskip"
#define str_285 "abovedisplayshortskip"
#define str_286 "belowdisplayshortskip"
#define str_287 "leftskip"
#define str_288 "rightskip"
#define str_289 "topskip"
#define str_290 "splittopskip"
#define str_291 "tabskip"
#define str_292 "spaceskip"
#define str_293 "xspaceskip"
#define str_294 "parfillskip"
#define str_295 "thinmuskip"
#define str_296 "medmuskip"
#define str_297 "thickmuskip"
#define str_298 "skip"
#define str_299 "muskip"
#define str_300 "pt"
#define str_301 "output"
#define str_302 "everypar"
#define str_303 "everymath"
#define str_304 "everydisplay"
#define str_305 "everyhbox"
#define str_306 "everyvbox"
#define str_307 "everyjob"
#define str_308 "everycr"
#define str_309 "errhelp"
#define str_310 "toks"
#define str_311 "parshape"
#define str_312 "box"
#define str_313 "textfont"
#define str_314 "scriptfont"
#define str_315 "scriptscriptfont"
#define str_316 "catcode"
#define str_317 "lccode"
#define str_318 "uccode"
#define str_319 "sfcode"
#define str_320 "mathcode"
#define str_321 "pretolerance"
#define str_322 "tolerance"
#define str_323 "linepenalty"
#define str_324 "hyphenpenalty"
#define str_325 "exhyphenpenalty"
#define str_326 "clubpenalty"
#define str_327 "widowpenalty"
#define str_328 "displaywidowpenalty"
#define str_329 "brokenpenalty"
#define str_330 "binoppenalty"
#define str_331 "relpenalty"
#define str_332 "predisplaypenalty"
#define str_333 "postdisplaypenalty"
#define str_334 "interlinepenalty"
#define str_335 "doublehyphendemerits"
#define str_336 "finalhyphendemerits"
#define str_337 "adjdemerits"
#define str_338 "mag"
#define str_339 "delimiterfactor"
#define str_340 "looseness"
#define str_341 "time"
#define str_342 "day"
#define str_343 "month"
#define str_344 "year"
#define str_345 "showboxbreadth"
#define str_346 "showboxdepth"
#define str_347 "hbadness"
#define str_348 "vbadness"
#define str_349 "pausing"
#define str_350 "tracingonline"
#define str_351 "tracingmacros"
#define str_352 "tracingstats"
#define str_353 "tracingparagraphs"
#define str_354 "tracingpages"
#define str_355 "tracingoutput"
#define str_356 "tracinglostchars"
#define str_357 "tracingcommands"
#define str_358 "tracingrestores"
#define str_359 "uchyph"
#define str_360 "outputpenalty"
#define str_361 "maxdeadcycles"
#define str_362 "hangafter"
#define str_363 "floatingpenalty"
#define str_364 "globaldefs"
#define str_365 "fam"
#define str_366 "escapechar"
#define str_367 "defaulthyphenchar"
#define str_368 "defaultskewchar"
#define str_369 "endlinechar"
#define str_370 "newlinechar"
#define str_371 "language"
#define str_372 "lefthyphenmin"
#define str_373 "righthyphenmin"
#define str_374 "holdinginserts"
#define str_375 "errorcontextlines"
#define str_376 "count"
#define str_377 "delcode"
#define str_378 "parindent"
#define str_379 "mathsurround"
#define str_380 "lineskiplimit"
#define str_381 "hsize"
#define str_382 "vsize"
#define str_383 "maxdepth"
#define str_384 "splitmaxdepth"
#define str_385 "boxmaxdepth"
#define str_386 "hfuzz"
#define str_387 "vfuzz"
#define str_388 "delimitershortfall"
#define str_389 "nulldelimiterspace"
#define str_390 "scriptspace"
#define str_391 "predisplaysize"
#define str_392 "displaywidth"
#define str_393 "displayindent"
#define str_394 "overfullrule"
#define str_395 "hangindent"
#define str_396 "hoffset"
#define str_397 "voffset"
#define str_398 "emergencystretch"
#define str_399 "dimen"
#define str_400 "notexpanded:"
#define str_401 "csname"
#define str_402 "endcsname"
#define str_403 "IMPOSSIBLE."
#define str_404 "NONEXISTENT."
#define str_405 "accent"
#define str_406 "advance"
#define str_407 "afterassignment"
#define str_408 "aftergroup"
#define str_409 "begingroup"
#define str_410 "char"
#define str_411 "delimiter"
#define str_412 "divide"
#define str_413 "endgroup"
#define str_414 "expandafter"
#define str_415 "font"
#define str_416 "fontdimen"
#define str_417 "halign"
#define str_418 "hrule"
#define str_419 "ignorespaces"
#define str_420 "mathaccent"
#define str_421 "mathchar"
#define str_422 "mathchoice"
#define str_423 "multiply"
#define str_424 "noalign"
#define str_425 "noboundary"
#define str_426 "noexpand"
#define str_427 "omit"
#define str_428 "penalty"
#define str_429 "prevgraf"
#define str_430 "radical"
#define str_431 "read"
#define str_432 "relax"
#define str_433 "setbox"
#define str_434 "the"
#define str_435 "valign"
#define str_436 "vcenter"
#define str_437 "vrule"
#define str_438 "curlevel"
#define str_439 "retaining"
#define str_440 "restoring"
#define str_441 "ETC."
#define str_442 "BAD."
#define str_443 "write"
#define str_444 "par"
#define str_445 "input"
#define str_446 "endinput"
#define str_447 "topmark"
#define str_448 "firstmark"
#define str_449 "botmark"
#define str_450 "splitfirstmark"
#define str_451 "splitbotmark"
#define str_452 "spacefactor"
#define str_453 "prevdepth"
#define str_454 "deadcycles"
#define str_455 "insertpenalties"
#define str_456 "wd"
#define str_457 "ht"
#define str_458 "dp"
#define str_459 "lastpenalty"
#define str_460 "lastkern"
#define str_461 "lastskip"
#define str_462 "inputlineno"
#define str_463 "badness"
#define str_464 "true"
#define str_465 "em"
#define str_466 "ex"
#define str_467 "in"
#define str_468 "pc"
#define str_469 "cm"
#define str_470 "mm"
#define str_471 "bp"
#define str_472 "dd"
#define str_473 "cc"
#define str_474 "sp"
#define str_475 "plus"
#define str_476 "minus"
#define str_477 "width"
#define str_478 "height"
#define str_479 "depth"
#define str_480 "number"
#define str_481 "romannumeral"
#define str_482 "string"
#define str_483 "meaning"
#define str_484 "fontname"
#define str_485 "jobname"
#define str_486 "if"
#define str_487 "ifcat"
#define str_488 "ifnum"
#define str_489 "ifdim"
#define str_490 "ifodd"
#define str_491 "ifvmode"
#define str_492 "ifhmode"
#define str_493 "ifmmode"
#define str_494 "ifinner"
#define str_495 "ifvoid"
#define str_496 "ifhbox"
#define str_497 "ifvbox"
#define str_498 "ifx"
#define str_499 "ifeof"
#define str_500 "iftrue"
#define str_501 "iffalse"
#define str_502 "ifcase"
#define str_503 "fi"
#define str_504 "or"
#define str_505 "else"
#define str_506 "TeXinputs/"
#define TEX_area 506
#define str_507 "TeXfonts/"
#define TEX_font_area 507
#define str_508 ".fmt"
#define format_extension 508
#define str_509 ".log"
#define str_510 ".dvi"
#define str_511 "input file name"
#define str_512 ".tex"
#define str_513 "texput"
#define str_514 "nullfont"
#define str_515 ".tfm"
#define str_516 "vlistout"
#define str_517 "to"
#define str_518 "spread"
#define str_519 "vpack"
#define str_520 "displaystyle"
#define str_521 "textstyle"
#define str_522 "scriptstyle"
#define str_523 "scriptscriptstyle"
#define str_524 "mathord"
#define str_525 "mathop"
#define str_526 "mathbin"
#define str_527 "mathrel"
#define str_528 "mathopen"
#define str_529 "mathclose"
#define str_530 "mathpunct"
#define str_531 "mathinner"
#define str_532 "overline"
#define str_533 "underline"
#define str_534 "left"
#define str_535 "right"
#define str_536 "limits"
#define str_537 "nolimits"
#define str_538 "fraction, thickness "
#define str_539 "mlist1"
#define str_540 "mlist2"
#define str_541 "mlist3"
#define str_542 "0234000122*4000133**3**344*0400400*000000234000111*1111112341011"
#define math_spacing 542
#define str_543 "mlist4"
#define str_544 "span"
#define str_545 "cr"
#define str_546 "crcr"
#define str_547 "endtemplate"
#define str_548 "endv"
#define str_549 "256 spans"
#define str_550 "align1"
#define str_551 "align0"
#define str_552 "disc1"
#define str_553 "disc2"
#define str_554 "paragraph"
#define str_555 "disc3"
#define str_556 "disc4"
#define str_557 "line breaking"
#define str_558 "hyphenation"
#define str_559 "patterns"
#define str_560 "pruning"
#define str_561 "vertbreak"
#define str_562 "vsplit"
#define str_563 "vbox"
#define str_564 "pagegoal"
#define str_565 "pagetotal"
#define str_566 "pagestretch"
#define str_567 "pagefilstretch"
#define str_568 "pagefillstretch"
#define str_569 "pagefilllstretch"
#define str_570 "pageshrink"
#define str_571 "pagedepth"
#define str_572 "page"
#define str_573 "end"
#define str_574 "dump"
#define str_575 "hskip"
#define str_576 "hfil"
#define str_577 "hfill"
#define str_578 "hss"
#define str_579 "hfilneg"
#define str_580 "vskip"
#define str_581 "vfil"
#define str_582 "vfill"
#define str_583 "vss"
#define str_584 "vfilneg"
#define str_585 "right."
#define str_586 "rightbrace"
#define str_587 "moveleft"
#define str_588 "moveright"
#define str_589 "raise"
#define str_590 "lower"
#define str_591 "copy"
#define str_592 "lastbox"
#define str_593 "vtop"
#define str_594 "hbox"
#define str_595 "shipout"
#define str_596 "leaders"
#define str_597 "cleaders"
#define str_598 "xleaders"
#define str_599 "indent"
#define str_600 "noindent"
#define str_601 "unpenalty"
#define str_602 "unkern"
#define str_603 "unskip"
#define str_604 "unhbox"
#define str_605 "unhcopy"
#define str_606 "unvbox"
#define str_607 "unvcopy"
#define str_608 "eqno"
#define str_609 "leqno"
#define str_610 "displaylimits"
#define str_611 "above"
#define str_612 "over"
#define str_613 "atop"
#define str_614 "abovewithdelims"
#define str_615 "overwithdelims"
#define str_616 "atopwithdelims"
#define str_617 "display"
#define str_618 "long"
#define str_619 "outer"
#define str_620 "global"
#define str_621 "def"
#define str_622 "gdef"
#define str_623 "edef"
#define str_624 "xdef"
#define str_625 "prefix"
#define str_626 "inaccessible"
#define str_627 "let"
#define str_628 "futurelet"
#define str_629 "chardef"
#define str_630 "mathchardef"
#define str_631 "countdef"
#define str_632 "dimendef"
#define str_633 "skipdef"
#define str_634 "muskipdef"
#define str_635 "toksdef"
#define str_636 "by"
#define str_637 "hyphenchar"
#define str_638 "skewchar"
#define str_639 "FONT"
#define str_640 "at"
#define str_641 "scaled"
#define str_642 "errorstopmode"
#define str_643 "openin"
#define str_644 "closein"
#define str_645 "message"
#define str_646 "errmessage"
#define str_647 "lowercase"
#define str_648 "uppercase"
#define str_649 "show"
#define str_650 "showbox"
#define str_651 "showthe"
#define str_652 "showlists"
#define str_653 "long macro"
#define str_654 "outer macro"
#define str_655 "outer endtemplate"
#define str_656 " (INITEX)"
#define str_657 "end occurred "
#define str_658 "openout"
#define str_659 "closeout"
#define str_660 "special"
#define str_661 "immediate"
#define str_662 "setlanguage"
#define str_663 "ext1"
#define str_664 "ext2"
#define str_665 "ext3"
#define str_666 "endwrite"
#define str_667 "ext4"

#line 358 "tex.w"


/*:9*//*56:*/
#line 1447 "tex.w"

#define put(file)    fwrite(&((file).d),sizeof((file).d),1,(file).f)
#define get(file)    fread(&((file).d),sizeof((file).d),1,(file).f)

#define reset(file,name,mode)   ((file).f= fopen((char *)(name)+1,mode),\
                                 (file).f!=NULL?get(file):0)
#define rewrite(file,name,mode) ((file).f= fopen((char *)(name)+1,mode))
#define close(file)    fclose((file).f)
#define eof(file)    feof((file).f)
#define eoln(file)    ((file).d=='\n'||eof(file))
#define erstat(file)   ((file).f==NULL?-1:ferror((file).f))

#define read(file,x) ((x)= (file).d,get(file))
#define read_ln(file)  do get(file); while (!eoln(file))

#define write(file, format,...)    fprintf(file.f,format,## __VA_ARGS__)
#define write_ln(file,...)    write(file,__VA_ARGS__"\n")

#define wterm(format,...) write(term_out,format, ## __VA_ARGS__)
#define wterm_ln(format,...) wterm(format "\n", ## __VA_ARGS__)
#define wterm_cr         write(term_out,"\n")
#define wlog(format, ...) write(log_file,format, ## __VA_ARGS__)
#define wlog_ln(format, ...)   wlog(format "\n", ## __VA_ARGS__)
#define wlog_cr         write(log_file,"\n")

/*:56*/
#line 261 "tex.w"


/*6:*/
#line 289 "tex.w"




/*:6*/
#line 263 "tex.w"

/*11:*/
#line 396 "tex.w"

enum{mem_max= 30000};


enum{mem_min= 0};


enum{buf_size= 500};


enum{error_line= 72};
enum{half_error_line= 42};

enum{max_print_line= 79};
enum{stack_size= 200};
enum{max_in_open= 6};

enum{font_max= 75};

enum{font_mem_size= 20000};
enum{param_size= 60};
enum{nest_size= 40};
enum{max_strings= 3000};
enum{string_vacancies= 8000};


enum{pool_size= 32000};



enum{save_size= 600};

enum{trie_size= 8000};

enum{trie_op_size= 500};
enum{dvi_buf_size= 800};
enum{file_name_size= 40};
const char*pool_name= "TeXformats:TEX.POOL                     ";



/*:11*/
#line 264 "tex.w"

/*18:*/
#line 539 "tex.w"

typedef uint8_t ASCII_code;

/*:18*//*25:*/
#line 774 "tex.w"

typedef uint8_t eight_bits;
typedef struct{FILE*f;text_char d;}alpha_file;
typedef struct{FILE*f;eight_bits d;}byte_file;

/*:25*//*38:*/
#line 1132 "tex.w"

typedef uint16_t pool_pointer;
typedef uint16_t str_number;
typedef uint8_t packed_ASCII_code;

/*:38*//*101:*/
#line 2198 "tex.w"

typedef int scaled;
typedef uint32_t nonnegative_integer;
typedef uint8_t small_number;

/*:101*//*109:*/
#line 2390 "tex.w"

typedef float32_t glue_ratio;

/*:109*//*113:*/
#line 2494 "tex.w"

typedef uint8_t quarterword;
typedef uint16_t halfword;
typedef uint8_t two_choices;
typedef uint8_t four_choices;
typedef struct{
halfword rh;
union{
halfword lh;
struct{quarterword b0;quarterword b1;};
};}two_halves;
typedef struct{
quarterword b0;
quarterword b1;
quarterword b2;
quarterword b3;
}four_quarters;
typedef struct{
union{
int i;
glue_ratio gr;
two_halves hh;
four_quarters qqqq;
};}memory_word;
typedef struct{FILE*f;memory_word d;}word_file;

/*:113*//*150:*/
#line 3212 "tex.w"

typedef uint8_t glue_ord;

/*:150*//*212:*/
#line 4369 "tex.w"

typedef struct{int16_t mode_field;
pointer head_field,tail_field;
int pg_field,ml_field;
memory_word aux_field;
}list_state_record;

/*:212*//*269:*/
#line 5934 "tex.w"

typedef uint8_t group_code;

/*:269*//*300:*/
#line 6514 "tex.w"

typedef struct{
quarterword state_field,index_field;
halfword start_field,loc_field,limit_field,name_field;
}in_state_record;

/*:300*//*548:*/
#line 10743 "tex.w"

typedef uint8_t internal_font_number;
typedef uint16_t font_index;

/*:548*//*594:*/
#line 11923 "tex.w"

typedef uint16_t dvi_index;

/*:594*//*920:*/
#line 18138 "tex.w"

typedef uint16_t trie_pointer;

/*:920*//*925:*/
#line 18204 "tex.w"

typedef uint16_t hyph_pointer;

/*:925*/
#line 265 "tex.w"

/*13:*/
#line 467 "tex.w"

int bad;

/*:13*//*20:*/
#line 579 "tex.w"

ASCII_code xord[256];

uint8_t xchr[256];


/*:20*//*26:*/
#line 791 "tex.w"

uint8_t name_of_file0[file_name_size+1]= {0},*const name_of_file= name_of_file0-1;

uint8_t name_length;


/*:26*//*30:*/
#line 891 "tex.w"

ASCII_code buffer[buf_size+1];
uint16_t first;
uint16_t last;
uint16_t max_buf_stack;

/*:30*//*32:*/
#line 964 "tex.w"

alpha_file term_in;
alpha_file term_out;

/*:32*//*39:*/
#line 1137 "tex.w"

/*1795:*/
#line 26438 "tex.w"

typedef enum{
str_start_256= sizeof(str_0_255)-1,
str_start_257= str_start_256+sizeof(str_256)-1,
str_start_258= str_start_257+sizeof(str_257)-1,
str_start_259= str_start_258+sizeof(str_258)-1,
str_start_260= str_start_259+sizeof(str_259)-1,
str_start_261= str_start_260+sizeof(str_260)-1,
str_start_262= str_start_261+sizeof(str_261)-1,
str_start_263= str_start_262+sizeof(str_262)-1,
str_start_264= str_start_263+sizeof(str_263)-1,
str_start_265= str_start_264+sizeof(str_264)-1,
str_start_266= str_start_265+sizeof(str_265)-1,
str_start_267= str_start_266+sizeof(str_266)-1,
str_start_268= str_start_267+sizeof(str_267)-1,
str_start_269= str_start_268+sizeof(str_268)-1,
str_start_270= str_start_269+sizeof(str_269)-1,
str_start_271= str_start_270+sizeof(str_270)-1,
str_start_272= str_start_271+sizeof(str_271)-1,
str_start_273= str_start_272+sizeof(str_272)-1,
str_start_274= str_start_273+sizeof(str_273)-1,
str_start_275= str_start_274+sizeof(str_274)-1,
str_start_276= str_start_275+sizeof(str_275)-1,
str_start_277= str_start_276+sizeof(str_276)-1,
str_start_278= str_start_277+sizeof(str_277)-1,
str_start_279= str_start_278+sizeof(str_278)-1,
str_start_280= str_start_279+sizeof(str_279)-1,
str_start_281= str_start_280+sizeof(str_280)-1,
str_start_282= str_start_281+sizeof(str_281)-1,
str_start_283= str_start_282+sizeof(str_282)-1,
str_start_284= str_start_283+sizeof(str_283)-1,
str_start_285= str_start_284+sizeof(str_284)-1,
str_start_286= str_start_285+sizeof(str_285)-1,
str_start_287= str_start_286+sizeof(str_286)-1,
str_start_288= str_start_287+sizeof(str_287)-1,
str_start_289= str_start_288+sizeof(str_288)-1,
str_start_290= str_start_289+sizeof(str_289)-1,
str_start_291= str_start_290+sizeof(str_290)-1,
str_start_292= str_start_291+sizeof(str_291)-1,
str_start_293= str_start_292+sizeof(str_292)-1,
str_start_294= str_start_293+sizeof(str_293)-1,
str_start_295= str_start_294+sizeof(str_294)-1,
str_start_296= str_start_295+sizeof(str_295)-1,
str_start_297= str_start_296+sizeof(str_296)-1,
str_start_298= str_start_297+sizeof(str_297)-1,
str_start_299= str_start_298+sizeof(str_298)-1,
str_start_300= str_start_299+sizeof(str_299)-1,
str_start_301= str_start_300+sizeof(str_300)-1,
str_start_302= str_start_301+sizeof(str_301)-1,
str_start_303= str_start_302+sizeof(str_302)-1,
str_start_304= str_start_303+sizeof(str_303)-1,
str_start_305= str_start_304+sizeof(str_304)-1,
str_start_306= str_start_305+sizeof(str_305)-1,
str_start_307= str_start_306+sizeof(str_306)-1,
str_start_308= str_start_307+sizeof(str_307)-1,
str_start_309= str_start_308+sizeof(str_308)-1,
str_start_310= str_start_309+sizeof(str_309)-1,
str_start_311= str_start_310+sizeof(str_310)-1,
str_start_312= str_start_311+sizeof(str_311)-1,
str_start_313= str_start_312+sizeof(str_312)-1,
str_start_314= str_start_313+sizeof(str_313)-1,
str_start_315= str_start_314+sizeof(str_314)-1,
str_start_316= str_start_315+sizeof(str_315)-1,
str_start_317= str_start_316+sizeof(str_316)-1,
str_start_318= str_start_317+sizeof(str_317)-1,
str_start_319= str_start_318+sizeof(str_318)-1,
str_start_320= str_start_319+sizeof(str_319)-1,
str_start_321= str_start_320+sizeof(str_320)-1,
str_start_322= str_start_321+sizeof(str_321)-1,
str_start_323= str_start_322+sizeof(str_322)-1,
str_start_324= str_start_323+sizeof(str_323)-1,
str_start_325= str_start_324+sizeof(str_324)-1,
str_start_326= str_start_325+sizeof(str_325)-1,
str_start_327= str_start_326+sizeof(str_326)-1,
str_start_328= str_start_327+sizeof(str_327)-1,
str_start_329= str_start_328+sizeof(str_328)-1,
str_start_330= str_start_329+sizeof(str_329)-1,
str_start_331= str_start_330+sizeof(str_330)-1,
str_start_332= str_start_331+sizeof(str_331)-1,
str_start_333= str_start_332+sizeof(str_332)-1,
str_start_334= str_start_333+sizeof(str_333)-1,
str_start_335= str_start_334+sizeof(str_334)-1,
str_start_336= str_start_335+sizeof(str_335)-1,
str_start_337= str_start_336+sizeof(str_336)-1,
str_start_338= str_start_337+sizeof(str_337)-1,
str_start_339= str_start_338+sizeof(str_338)-1,
str_start_340= str_start_339+sizeof(str_339)-1,
str_start_341= str_start_340+sizeof(str_340)-1,
str_start_342= str_start_341+sizeof(str_341)-1,
str_start_343= str_start_342+sizeof(str_342)-1,
str_start_344= str_start_343+sizeof(str_343)-1,
str_start_345= str_start_344+sizeof(str_344)-1,
str_start_346= str_start_345+sizeof(str_345)-1,
str_start_347= str_start_346+sizeof(str_346)-1,
str_start_348= str_start_347+sizeof(str_347)-1,
str_start_349= str_start_348+sizeof(str_348)-1,
str_start_350= str_start_349+sizeof(str_349)-1,
str_start_351= str_start_350+sizeof(str_350)-1,
str_start_352= str_start_351+sizeof(str_351)-1,
str_start_353= str_start_352+sizeof(str_352)-1,
str_start_354= str_start_353+sizeof(str_353)-1,
str_start_355= str_start_354+sizeof(str_354)-1,
str_start_356= str_start_355+sizeof(str_355)-1,
str_start_357= str_start_356+sizeof(str_356)-1,
str_start_358= str_start_357+sizeof(str_357)-1,
str_start_359= str_start_358+sizeof(str_358)-1,
str_start_360= str_start_359+sizeof(str_359)-1,
str_start_361= str_start_360+sizeof(str_360)-1,
str_start_362= str_start_361+sizeof(str_361)-1,
str_start_363= str_start_362+sizeof(str_362)-1,
str_start_364= str_start_363+sizeof(str_363)-1,
str_start_365= str_start_364+sizeof(str_364)-1,
str_start_366= str_start_365+sizeof(str_365)-1,
str_start_367= str_start_366+sizeof(str_366)-1,
str_start_368= str_start_367+sizeof(str_367)-1,
str_start_369= str_start_368+sizeof(str_368)-1,
str_start_370= str_start_369+sizeof(str_369)-1,
str_start_371= str_start_370+sizeof(str_370)-1,
str_start_372= str_start_371+sizeof(str_371)-1,
str_start_373= str_start_372+sizeof(str_372)-1,
str_start_374= str_start_373+sizeof(str_373)-1,
str_start_375= str_start_374+sizeof(str_374)-1,
str_start_376= str_start_375+sizeof(str_375)-1,
str_start_377= str_start_376+sizeof(str_376)-1,
str_start_378= str_start_377+sizeof(str_377)-1,
str_start_379= str_start_378+sizeof(str_378)-1,
str_start_380= str_start_379+sizeof(str_379)-1,
str_start_381= str_start_380+sizeof(str_380)-1,
str_start_382= str_start_381+sizeof(str_381)-1,
str_start_383= str_start_382+sizeof(str_382)-1,
str_start_384= str_start_383+sizeof(str_383)-1,
str_start_385= str_start_384+sizeof(str_384)-1,
str_start_386= str_start_385+sizeof(str_385)-1,
str_start_387= str_start_386+sizeof(str_386)-1,
str_start_388= str_start_387+sizeof(str_387)-1,
str_start_389= str_start_388+sizeof(str_388)-1,
str_start_390= str_start_389+sizeof(str_389)-1,
str_start_391= str_start_390+sizeof(str_390)-1,
str_start_392= str_start_391+sizeof(str_391)-1,
str_start_393= str_start_392+sizeof(str_392)-1,
str_start_394= str_start_393+sizeof(str_393)-1,
str_start_395= str_start_394+sizeof(str_394)-1,
str_start_396= str_start_395+sizeof(str_395)-1,
str_start_397= str_start_396+sizeof(str_396)-1,
str_start_398= str_start_397+sizeof(str_397)-1,
str_start_399= str_start_398+sizeof(str_398)-1,
str_start_400= str_start_399+sizeof(str_399)-1,
str_start_401= str_start_400+sizeof(str_400)-1,
str_start_402= str_start_401+sizeof(str_401)-1,
str_start_403= str_start_402+sizeof(str_402)-1,
str_start_404= str_start_403+sizeof(str_403)-1,
str_start_405= str_start_404+sizeof(str_404)-1,
str_start_406= str_start_405+sizeof(str_405)-1,
str_start_407= str_start_406+sizeof(str_406)-1,
str_start_408= str_start_407+sizeof(str_407)-1,
str_start_409= str_start_408+sizeof(str_408)-1,
str_start_410= str_start_409+sizeof(str_409)-1,
str_start_411= str_start_410+sizeof(str_410)-1,
str_start_412= str_start_411+sizeof(str_411)-1,
str_start_413= str_start_412+sizeof(str_412)-1,
str_start_414= str_start_413+sizeof(str_413)-1,
str_start_415= str_start_414+sizeof(str_414)-1,
str_start_416= str_start_415+sizeof(str_415)-1,
str_start_417= str_start_416+sizeof(str_416)-1,
str_start_418= str_start_417+sizeof(str_417)-1,
str_start_419= str_start_418+sizeof(str_418)-1,
str_start_420= str_start_419+sizeof(str_419)-1,
str_start_421= str_start_420+sizeof(str_420)-1,
str_start_422= str_start_421+sizeof(str_421)-1,
str_start_423= str_start_422+sizeof(str_422)-1,
str_start_424= str_start_423+sizeof(str_423)-1,
str_start_425= str_start_424+sizeof(str_424)-1,
str_start_426= str_start_425+sizeof(str_425)-1,
str_start_427= str_start_426+sizeof(str_426)-1,
str_start_428= str_start_427+sizeof(str_427)-1,
str_start_429= str_start_428+sizeof(str_428)-1,
str_start_430= str_start_429+sizeof(str_429)-1,
str_start_431= str_start_430+sizeof(str_430)-1,
str_start_432= str_start_431+sizeof(str_431)-1,
str_start_433= str_start_432+sizeof(str_432)-1,
str_start_434= str_start_433+sizeof(str_433)-1,
str_start_435= str_start_434+sizeof(str_434)-1,
str_start_436= str_start_435+sizeof(str_435)-1,
str_start_437= str_start_436+sizeof(str_436)-1,
str_start_438= str_start_437+sizeof(str_437)-1,
str_start_439= str_start_438+sizeof(str_438)-1,
str_start_440= str_start_439+sizeof(str_439)-1,
str_start_441= str_start_440+sizeof(str_440)-1,
str_start_442= str_start_441+sizeof(str_441)-1,
str_start_443= str_start_442+sizeof(str_442)-1,
str_start_444= str_start_443+sizeof(str_443)-1,
str_start_445= str_start_444+sizeof(str_444)-1,
str_start_446= str_start_445+sizeof(str_445)-1,
str_start_447= str_start_446+sizeof(str_446)-1,
str_start_448= str_start_447+sizeof(str_447)-1,
str_start_449= str_start_448+sizeof(str_448)-1,
str_start_450= str_start_449+sizeof(str_449)-1,
str_start_451= str_start_450+sizeof(str_450)-1,
str_start_452= str_start_451+sizeof(str_451)-1,
str_start_453= str_start_452+sizeof(str_452)-1,
str_start_454= str_start_453+sizeof(str_453)-1,
str_start_455= str_start_454+sizeof(str_454)-1,
str_start_456= str_start_455+sizeof(str_455)-1,
str_start_457= str_start_456+sizeof(str_456)-1,
str_start_458= str_start_457+sizeof(str_457)-1,
str_start_459= str_start_458+sizeof(str_458)-1,
str_start_460= str_start_459+sizeof(str_459)-1,
str_start_461= str_start_460+sizeof(str_460)-1,
str_start_462= str_start_461+sizeof(str_461)-1,
str_start_463= str_start_462+sizeof(str_462)-1,
str_start_464= str_start_463+sizeof(str_463)-1,
str_start_465= str_start_464+sizeof(str_464)-1,
str_start_466= str_start_465+sizeof(str_465)-1,
str_start_467= str_start_466+sizeof(str_466)-1,
str_start_468= str_start_467+sizeof(str_467)-1,
str_start_469= str_start_468+sizeof(str_468)-1,
str_start_470= str_start_469+sizeof(str_469)-1,
str_start_471= str_start_470+sizeof(str_470)-1,
str_start_472= str_start_471+sizeof(str_471)-1,
str_start_473= str_start_472+sizeof(str_472)-1,
str_start_474= str_start_473+sizeof(str_473)-1,
str_start_475= str_start_474+sizeof(str_474)-1,
str_start_476= str_start_475+sizeof(str_475)-1,
str_start_477= str_start_476+sizeof(str_476)-1,
str_start_478= str_start_477+sizeof(str_477)-1,
str_start_479= str_start_478+sizeof(str_478)-1,
str_start_480= str_start_479+sizeof(str_479)-1,
str_start_481= str_start_480+sizeof(str_480)-1,
str_start_482= str_start_481+sizeof(str_481)-1,
str_start_483= str_start_482+sizeof(str_482)-1,
str_start_484= str_start_483+sizeof(str_483)-1,
str_start_485= str_start_484+sizeof(str_484)-1,
str_start_486= str_start_485+sizeof(str_485)-1,
str_start_487= str_start_486+sizeof(str_486)-1,
str_start_488= str_start_487+sizeof(str_487)-1,
str_start_489= str_start_488+sizeof(str_488)-1,
str_start_490= str_start_489+sizeof(str_489)-1,
str_start_491= str_start_490+sizeof(str_490)-1,
str_start_492= str_start_491+sizeof(str_491)-1,
str_start_493= str_start_492+sizeof(str_492)-1,
str_start_494= str_start_493+sizeof(str_493)-1,
str_start_495= str_start_494+sizeof(str_494)-1,
str_start_496= str_start_495+sizeof(str_495)-1,
str_start_497= str_start_496+sizeof(str_496)-1,
str_start_498= str_start_497+sizeof(str_497)-1,
str_start_499= str_start_498+sizeof(str_498)-1,
str_start_500= str_start_499+sizeof(str_499)-1,
str_start_501= str_start_500+sizeof(str_500)-1,
str_start_502= str_start_501+sizeof(str_501)-1,
str_start_503= str_start_502+sizeof(str_502)-1,
str_start_504= str_start_503+sizeof(str_503)-1,
str_start_505= str_start_504+sizeof(str_504)-1,
str_start_506= str_start_505+sizeof(str_505)-1,
str_start_507= str_start_506+sizeof(str_506)-1,
str_start_508= str_start_507+sizeof(str_507)-1,
str_start_509= str_start_508+sizeof(str_508)-1,
str_start_510= str_start_509+sizeof(str_509)-1,
str_start_511= str_start_510+sizeof(str_510)-1,
str_start_512= str_start_511+sizeof(str_511)-1,
str_start_513= str_start_512+sizeof(str_512)-1,
str_start_514= str_start_513+sizeof(str_513)-1,
str_start_515= str_start_514+sizeof(str_514)-1,
str_start_516= str_start_515+sizeof(str_515)-1,
str_start_517= str_start_516+sizeof(str_516)-1,
str_start_518= str_start_517+sizeof(str_517)-1,
str_start_519= str_start_518+sizeof(str_518)-1,
str_start_520= str_start_519+sizeof(str_519)-1,
str_start_521= str_start_520+sizeof(str_520)-1,
str_start_522= str_start_521+sizeof(str_521)-1,
str_start_523= str_start_522+sizeof(str_522)-1,
str_start_524= str_start_523+sizeof(str_523)-1,
str_start_525= str_start_524+sizeof(str_524)-1,
str_start_526= str_start_525+sizeof(str_525)-1,
str_start_527= str_start_526+sizeof(str_526)-1,
str_start_528= str_start_527+sizeof(str_527)-1,
str_start_529= str_start_528+sizeof(str_528)-1,
str_start_530= str_start_529+sizeof(str_529)-1,
str_start_531= str_start_530+sizeof(str_530)-1,
str_start_532= str_start_531+sizeof(str_531)-1,
str_start_533= str_start_532+sizeof(str_532)-1,
str_start_534= str_start_533+sizeof(str_533)-1,
str_start_535= str_start_534+sizeof(str_534)-1,
str_start_536= str_start_535+sizeof(str_535)-1,
str_start_537= str_start_536+sizeof(str_536)-1,
str_start_538= str_start_537+sizeof(str_537)-1,
str_start_539= str_start_538+sizeof(str_538)-1,
str_start_540= str_start_539+sizeof(str_539)-1,
str_start_541= str_start_540+sizeof(str_540)-1,
str_start_542= str_start_541+sizeof(str_541)-1,
str_start_543= str_start_542+sizeof(str_542)-1,
str_start_544= str_start_543+sizeof(str_543)-1,
str_start_545= str_start_544+sizeof(str_544)-1,
str_start_546= str_start_545+sizeof(str_545)-1,
str_start_547= str_start_546+sizeof(str_546)-1,
str_start_548= str_start_547+sizeof(str_547)-1,
str_start_549= str_start_548+sizeof(str_548)-1,
str_start_550= str_start_549+sizeof(str_549)-1,
str_start_551= str_start_550+sizeof(str_550)-1,
str_start_552= str_start_551+sizeof(str_551)-1,
str_start_553= str_start_552+sizeof(str_552)-1,
str_start_554= str_start_553+sizeof(str_553)-1,
str_start_555= str_start_554+sizeof(str_554)-1,
str_start_556= str_start_555+sizeof(str_555)-1,
str_start_557= str_start_556+sizeof(str_556)-1,
str_start_558= str_start_557+sizeof(str_557)-1,
str_start_559= str_start_558+sizeof(str_558)-1,
str_start_560= str_start_559+sizeof(str_559)-1,
str_start_561= str_start_560+sizeof(str_560)-1,
str_start_562= str_start_561+sizeof(str_561)-1,
str_start_563= str_start_562+sizeof(str_562)-1,
str_start_564= str_start_563+sizeof(str_563)-1,
str_start_565= str_start_564+sizeof(str_564)-1,
str_start_566= str_start_565+sizeof(str_565)-1,
str_start_567= str_start_566+sizeof(str_566)-1,
str_start_568= str_start_567+sizeof(str_567)-1,
str_start_569= str_start_568+sizeof(str_568)-1,
str_start_570= str_start_569+sizeof(str_569)-1,
str_start_571= str_start_570+sizeof(str_570)-1,
str_start_572= str_start_571+sizeof(str_571)-1,
str_start_573= str_start_572+sizeof(str_572)-1,
str_start_574= str_start_573+sizeof(str_573)-1,
str_start_575= str_start_574+sizeof(str_574)-1,
str_start_576= str_start_575+sizeof(str_575)-1,
str_start_577= str_start_576+sizeof(str_576)-1,
str_start_578= str_start_577+sizeof(str_577)-1,
str_start_579= str_start_578+sizeof(str_578)-1,
str_start_580= str_start_579+sizeof(str_579)-1,
str_start_581= str_start_580+sizeof(str_580)-1,
str_start_582= str_start_581+sizeof(str_581)-1,
str_start_583= str_start_582+sizeof(str_582)-1,
str_start_584= str_start_583+sizeof(str_583)-1,
str_start_585= str_start_584+sizeof(str_584)-1,
str_start_586= str_start_585+sizeof(str_585)-1,
str_start_587= str_start_586+sizeof(str_586)-1,
str_start_588= str_start_587+sizeof(str_587)-1,
str_start_589= str_start_588+sizeof(str_588)-1,
str_start_590= str_start_589+sizeof(str_589)-1,
str_start_591= str_start_590+sizeof(str_590)-1,
str_start_592= str_start_591+sizeof(str_591)-1,
str_start_593= str_start_592+sizeof(str_592)-1,
str_start_594= str_start_593+sizeof(str_593)-1,
str_start_595= str_start_594+sizeof(str_594)-1,
str_start_596= str_start_595+sizeof(str_595)-1,
str_start_597= str_start_596+sizeof(str_596)-1,
str_start_598= str_start_597+sizeof(str_597)-1,
str_start_599= str_start_598+sizeof(str_598)-1,
str_start_600= str_start_599+sizeof(str_599)-1,
str_start_601= str_start_600+sizeof(str_600)-1,
str_start_602= str_start_601+sizeof(str_601)-1,
str_start_603= str_start_602+sizeof(str_602)-1,
str_start_604= str_start_603+sizeof(str_603)-1,
str_start_605= str_start_604+sizeof(str_604)-1,
str_start_606= str_start_605+sizeof(str_605)-1,
str_start_607= str_start_606+sizeof(str_606)-1,
str_start_608= str_start_607+sizeof(str_607)-1,
str_start_609= str_start_608+sizeof(str_608)-1,
str_start_610= str_start_609+sizeof(str_609)-1,
str_start_611= str_start_610+sizeof(str_610)-1,
str_start_612= str_start_611+sizeof(str_611)-1,
str_start_613= str_start_612+sizeof(str_612)-1,
str_start_614= str_start_613+sizeof(str_613)-1,
str_start_615= str_start_614+sizeof(str_614)-1,
str_start_616= str_start_615+sizeof(str_615)-1,
str_start_617= str_start_616+sizeof(str_616)-1,
str_start_618= str_start_617+sizeof(str_617)-1,
str_start_619= str_start_618+sizeof(str_618)-1,
str_start_620= str_start_619+sizeof(str_619)-1,
str_start_621= str_start_620+sizeof(str_620)-1,
str_start_622= str_start_621+sizeof(str_621)-1,
str_start_623= str_start_622+sizeof(str_622)-1,
str_start_624= str_start_623+sizeof(str_623)-1,
str_start_625= str_start_624+sizeof(str_624)-1,
str_start_626= str_start_625+sizeof(str_625)-1,
str_start_627= str_start_626+sizeof(str_626)-1,
str_start_628= str_start_627+sizeof(str_627)-1,
str_start_629= str_start_628+sizeof(str_628)-1,
str_start_630= str_start_629+sizeof(str_629)-1,
str_start_631= str_start_630+sizeof(str_630)-1,
str_start_632= str_start_631+sizeof(str_631)-1,
str_start_633= str_start_632+sizeof(str_632)-1,
str_start_634= str_start_633+sizeof(str_633)-1,
str_start_635= str_start_634+sizeof(str_634)-1,
str_start_636= str_start_635+sizeof(str_635)-1,
str_start_637= str_start_636+sizeof(str_636)-1,
str_start_638= str_start_637+sizeof(str_637)-1,
str_start_639= str_start_638+sizeof(str_638)-1,
str_start_640= str_start_639+sizeof(str_639)-1,
str_start_641= str_start_640+sizeof(str_640)-1,
str_start_642= str_start_641+sizeof(str_641)-1,
str_start_643= str_start_642+sizeof(str_642)-1,
str_start_644= str_start_643+sizeof(str_643)-1,
str_start_645= str_start_644+sizeof(str_644)-1,
str_start_646= str_start_645+sizeof(str_645)-1,
str_start_647= str_start_646+sizeof(str_646)-1,
str_start_648= str_start_647+sizeof(str_647)-1,
str_start_649= str_start_648+sizeof(str_648)-1,
str_start_650= str_start_649+sizeof(str_649)-1,
str_start_651= str_start_650+sizeof(str_650)-1,
str_start_652= str_start_651+sizeof(str_651)-1,
str_start_653= str_start_652+sizeof(str_652)-1,
str_start_654= str_start_653+sizeof(str_653)-1,
str_start_655= str_start_654+sizeof(str_654)-1,
str_start_656= str_start_655+sizeof(str_655)-1,
str_start_657= str_start_656+sizeof(str_656)-1,
str_start_658= str_start_657+sizeof(str_657)-1,
str_start_659= str_start_658+sizeof(str_658)-1,
str_start_660= str_start_659+sizeof(str_659)-1,
str_start_661= str_start_660+sizeof(str_660)-1,
str_start_662= str_start_661+sizeof(str_661)-1,
str_start_663= str_start_662+sizeof(str_662)-1,
str_start_664= str_start_663+sizeof(str_663)-1,
str_start_665= str_start_664+sizeof(str_664)-1,
str_start_666= str_start_665+sizeof(str_665)-1,
str_start_667= str_start_666+sizeof(str_666)-1,
str_start_668= str_start_667+sizeof(str_667)-1,
str_start_end}str_starts;

/*:1795*/
#line 1138 "tex.w"

packed_ASCII_code str_pool[pool_size+1]= /*1793:*/
#line 26275 "tex.w"

str_0_255
str_256 str_257 str_258 str_259 str_260 str_261 str_262 str_263
str_264 str_265 str_266 str_267 str_268 str_269 str_270 str_271
str_272 str_273 str_274 str_275 str_276 str_277 str_278 str_279
str_280 str_281 str_282 str_283 str_284 str_285 str_286 str_287
str_288 str_289 str_290 str_291 str_292 str_293 str_294 str_295
str_296 str_297 str_298 str_299 str_300 str_301 str_302 str_303
str_304 str_305 str_306 str_307 str_308 str_309 str_310 str_311
str_312 str_313 str_314 str_315 str_316 str_317 str_318 str_319
str_320 str_321 str_322 str_323 str_324 str_325 str_326 str_327
str_328 str_329 str_330 str_331 str_332 str_333 str_334 str_335
str_336 str_337 str_338 str_339 str_340 str_341 str_342 str_343
str_344 str_345 str_346 str_347 str_348 str_349 str_350 str_351
str_352 str_353 str_354 str_355 str_356 str_357 str_358 str_359
str_360 str_361 str_362 str_363 str_364 str_365 str_366 str_367
str_368 str_369 str_370 str_371 str_372 str_373 str_374 str_375
str_376 str_377 str_378 str_379 str_380 str_381 str_382 str_383
str_384 str_385 str_386 str_387 str_388 str_389 str_390 str_391
str_392 str_393 str_394 str_395 str_396 str_397 str_398 str_399
str_400 str_401 str_402 str_403 str_404 str_405 str_406 str_407
str_408 str_409 str_410 str_411 str_412 str_413 str_414 str_415
str_416 str_417 str_418 str_419 str_420 str_421 str_422 str_423
str_424 str_425 str_426 str_427 str_428 str_429 str_430 str_431
str_432 str_433 str_434 str_435 str_436 str_437 str_438 str_439
str_440 str_441 str_442 str_443 str_444 str_445 str_446 str_447
str_448 str_449 str_450 str_451 str_452 str_453 str_454 str_455
str_456 str_457 str_458 str_459 str_460 str_461 str_462 str_463
str_464 str_465 str_466 str_467 str_468 str_469 str_470 str_471
str_472 str_473 str_474 str_475 str_476 str_477 str_478 str_479
str_480 str_481 str_482 str_483 str_484 str_485 str_486 str_487
str_488 str_489 str_490 str_491 str_492 str_493 str_494 str_495
str_496 str_497 str_498 str_499 str_500 str_501 str_502 str_503
str_504 str_505 str_506 str_507 str_508 str_509 str_510 str_511
str_512 str_513 str_514 str_515 str_516 str_517 str_518 str_519
str_520 str_521 str_522 str_523 str_524 str_525 str_526 str_527
str_528 str_529 str_530 str_531 str_532 str_533 str_534 str_535
str_536 str_537 str_538 str_539 str_540 str_541 str_542 str_543
str_544 str_545 str_546 str_547 str_548 str_549 str_550 str_551
str_552 str_553 str_554 str_555 str_556 str_557 str_558 str_559
str_560 str_561 str_562 str_563 str_564 str_565 str_566 str_567
str_568 str_569 str_570 str_571 str_572 str_573 str_574 str_575
str_576 str_577 str_578 str_579 str_580 str_581 str_582 str_583
str_584 str_585 str_586 str_587 str_588 str_589 str_590 str_591
str_592 str_593 str_594 str_595 str_596 str_597 str_598 str_599
str_600 str_601 str_602 str_603 str_604 str_605 str_606 str_607
str_608 str_609 str_610 str_611 str_612 str_613 str_614 str_615
str_616 str_617 str_618 str_619 str_620 str_621 str_622 str_623
str_624 str_625 str_626 str_627 str_628 str_629 str_630 str_631
str_632 str_633 str_634 str_635 str_636 str_637 str_638 str_639
str_640 str_641 str_642 str_643 str_644 str_645 str_646 str_647
str_648 str_649 str_650 str_651 str_652 str_653 str_654 str_655
str_656 str_657 str_658 str_659 str_660 str_661 str_662 str_663
str_664 str_665 str_666 str_667

/*:1793*/
#line 1139 "tex.w"
;
pool_pointer str_start[max_strings+1]= {/*1794:*/
#line 26330 "tex.w"

str_start_0_255
str_start_256,str_start_257,str_start_258,str_start_259,
str_start_260,str_start_261,str_start_262,str_start_263,
str_start_264,str_start_265,str_start_266,str_start_267,
str_start_268,str_start_269,str_start_270,str_start_271,
str_start_272,str_start_273,str_start_274,str_start_275,
str_start_276,str_start_277,str_start_278,str_start_279,
str_start_280,str_start_281,str_start_282,str_start_283,
str_start_284,str_start_285,str_start_286,str_start_287,
str_start_288,str_start_289,str_start_290,str_start_291,
str_start_292,str_start_293,str_start_294,str_start_295,
str_start_296,str_start_297,str_start_298,str_start_299,
str_start_300,str_start_301,str_start_302,str_start_303,
str_start_304,str_start_305,str_start_306,str_start_307,
str_start_308,str_start_309,str_start_310,str_start_311,
str_start_312,str_start_313,str_start_314,str_start_315,
str_start_316,str_start_317,str_start_318,str_start_319,
str_start_320,str_start_321,str_start_322,str_start_323,
str_start_324,str_start_325,str_start_326,str_start_327,
str_start_328,str_start_329,str_start_330,str_start_331,
str_start_332,str_start_333,str_start_334,str_start_335,
str_start_336,str_start_337,str_start_338,str_start_339,
str_start_340,str_start_341,str_start_342,str_start_343,
str_start_344,str_start_345,str_start_346,str_start_347,
str_start_348,str_start_349,str_start_350,str_start_351,
str_start_352,str_start_353,str_start_354,str_start_355,
str_start_356,str_start_357,str_start_358,str_start_359,
str_start_360,str_start_361,str_start_362,str_start_363,
str_start_364,str_start_365,str_start_366,str_start_367,
str_start_368,str_start_369,str_start_370,str_start_371,
str_start_372,str_start_373,str_start_374,str_start_375,
str_start_376,str_start_377,str_start_378,str_start_379,
str_start_380,str_start_381,str_start_382,str_start_383,
str_start_384,str_start_385,str_start_386,str_start_387,
str_start_388,str_start_389,str_start_390,str_start_391,
str_start_392,str_start_393,str_start_394,str_start_395,
str_start_396,str_start_397,str_start_398,str_start_399,
str_start_400,str_start_401,str_start_402,str_start_403,
str_start_404,str_start_405,str_start_406,str_start_407,
str_start_408,str_start_409,str_start_410,str_start_411,
str_start_412,str_start_413,str_start_414,str_start_415,
str_start_416,str_start_417,str_start_418,str_start_419,
str_start_420,str_start_421,str_start_422,str_start_423,
str_start_424,str_start_425,str_start_426,str_start_427,
str_start_428,str_start_429,str_start_430,str_start_431,
str_start_432,str_start_433,str_start_434,str_start_435,
str_start_436,str_start_437,str_start_438,str_start_439,
str_start_440,str_start_441,str_start_442,str_start_443,
str_start_444,str_start_445,str_start_446,str_start_447,
str_start_448,str_start_449,str_start_450,str_start_451,
str_start_452,str_start_453,str_start_454,str_start_455,
str_start_456,str_start_457,str_start_458,str_start_459,
str_start_460,str_start_461,str_start_462,str_start_463,
str_start_464,str_start_465,str_start_466,str_start_467,
str_start_468,str_start_469,str_start_470,str_start_471,
str_start_472,str_start_473,str_start_474,str_start_475,
str_start_476,str_start_477,str_start_478,str_start_479,
str_start_480,str_start_481,str_start_482,str_start_483,
str_start_484,str_start_485,str_start_486,str_start_487,
str_start_488,str_start_489,str_start_490,str_start_491,
str_start_492,str_start_493,str_start_494,str_start_495,
str_start_496,str_start_497,str_start_498,str_start_499,
str_start_500,str_start_501,str_start_502,str_start_503,
str_start_504,str_start_505,str_start_506,str_start_507,
str_start_508,str_start_509,str_start_510,str_start_511,
str_start_512,str_start_513,str_start_514,str_start_515,
str_start_516,str_start_517,str_start_518,str_start_519,
str_start_520,str_start_521,str_start_522,str_start_523,
str_start_524,str_start_525,str_start_526,str_start_527,
str_start_528,str_start_529,str_start_530,str_start_531,
str_start_532,str_start_533,str_start_534,str_start_535,
str_start_536,str_start_537,str_start_538,str_start_539,
str_start_540,str_start_541,str_start_542,str_start_543,
str_start_544,str_start_545,str_start_546,str_start_547,
str_start_548,str_start_549,str_start_550,str_start_551,
str_start_552,str_start_553,str_start_554,str_start_555,
str_start_556,str_start_557,str_start_558,str_start_559,
str_start_560,str_start_561,str_start_562,str_start_563,
str_start_564,str_start_565,str_start_566,str_start_567,
str_start_568,str_start_569,str_start_570,str_start_571,
str_start_572,str_start_573,str_start_574,str_start_575,
str_start_576,str_start_577,str_start_578,str_start_579,
str_start_580,str_start_581,str_start_582,str_start_583,
str_start_584,str_start_585,str_start_586,str_start_587,
str_start_588,str_start_589,str_start_590,str_start_591,
str_start_592,str_start_593,str_start_594,str_start_595,
str_start_596,str_start_597,str_start_598,str_start_599,
str_start_600,str_start_601,str_start_602,str_start_603,
str_start_604,str_start_605,str_start_606,str_start_607,
str_start_608,str_start_609,str_start_610,str_start_611,
str_start_612,str_start_613,str_start_614,str_start_615,
str_start_616,str_start_617,str_start_618,str_start_619,
str_start_620,str_start_621,str_start_622,str_start_623,
str_start_624,str_start_625,str_start_626,str_start_627,
str_start_628,str_start_629,str_start_630,str_start_631,
str_start_632,str_start_633,str_start_634,str_start_635,
str_start_636,str_start_637,str_start_638,str_start_639,
str_start_640,str_start_641,str_start_642,str_start_643,
str_start_644,str_start_645,str_start_646,str_start_647,
str_start_648,str_start_649,str_start_650,str_start_651,
str_start_652,str_start_653,str_start_654,str_start_655,
str_start_656,str_start_657,str_start_658,str_start_659,
str_start_660,str_start_661,str_start_662,str_start_663,
str_start_664,str_start_665,str_start_666,str_start_667,
str_start_668

/*:1794*/
#line 1140 "tex.w"
};
pool_pointer pool_ptr= /*1796:*/
#line 26855 "tex.w"
str_start_668

/*:1796*/
#line 1141 "tex.w"
;
str_number str_ptr= /*1797:*/
#line 26857 "tex.w"
668

/*:1797*/
#line 1142 "tex.w"
;
pool_pointer init_pool_ptr;
str_number init_str_ptr;

/*:39*//*50:*/
#line 1316 "tex.w"

#ifdef INIT
alpha_file pool_file;
#endif

/*:50*//*54:*/
#line 1424 "tex.w"

alpha_file log_file;
uint8_t selector;
uint8_t dig[23];
int tally;
uint8_t term_offset;

uint8_t file_offset;

ASCII_code trick_buf[error_line+1];

int trick_count;
int first_count;

/*:54*//*73:*/
#line 1770 "tex.w"

uint8_t interaction;

/*:73*//*76:*/
#line 1811 "tex.w"

bool deletions_allowed;
bool set_box_allowed;
uint8_t history;
int8_t error_count;


/*:76*//*79:*/
#line 1870 "tex.w"

char*help_line[6];
uint8_t help_ptr;
bool use_err_help;

/*:79*//*96:*/
#line 2135 "tex.w"

int interrupt;
bool OK_to_interrupt;

/*:96*//*104:*/
#line 2268 "tex.w"

bool arith_error;
scaled rem;

/*:104*//*115:*/
#line 2557 "tex.w"

pointer temp_ptr;

/*:115*//*116:*/
#line 2589 "tex.w"

memory_word mem0[mem_max-mem_min+1],*const mem= mem0-mem_min;
pointer lo_mem_max;
pointer hi_mem_min;

/*:116*//*117:*/
#line 2602 "tex.w"

int var_used,dyn_used;
#ifdef DEBUG
#define incr_dyn_used incr(dyn_used)
#define decr_dyn_used decr(dyn_used)
#else
#define incr_dyn_used
#define decr_dyn_used
#endif

/*:117*//*118:*/
#line 2625 "tex.w"

pointer avail;
pointer mem_end;

/*:118*//*124:*/
#line 2725 "tex.w"

pointer rover;

/*:124*//*165:*/
#line 3428 "tex.w"

#ifdef DEBUG
bool is_free0[mem_max-mem_min+1],*const is_free= is_free0-mem_min;
bool was_free0[mem_max-mem_min+1],*const was_free= was_free0-mem_min;

pointer was_mem_end,was_lo_max,was_hi_min;

bool panicking;
#endif

/*:165*//*173:*/
#line 3582 "tex.w"

int font_in_short_display;

/*:173*//*181:*/
#line 3710 "tex.w"

int depth_threshold;
int breadth_max;

/*:181*//*213:*/
#line 4387 "tex.w"

list_state_record nest[nest_size+1];
uint8_t nest_ptr;
uint8_t max_nest_stack;
list_state_record cur_list;
int16_t shown_mode;

/*:213*//*246:*/
#line 5336 "tex.w"

uint8_t old_setting;

/*:246*//*253:*/
#line 5502 "tex.w"

memory_word eqtb0[eqtb_size-active_base+1],*const eqtb= eqtb0-active_base;
quarterword xeq_level0[eqtb_size-int_base+1],*const xeq_level= xeq_level0-int_base;

/*:253*//*256:*/
#line 5550 "tex.w"

two_halves hash0[undefined_control_sequence-hash_base],*const hash= hash0-hash_base;

pointer hash_used;
bool no_new_control_sequence;
int cs_count;

/*:256*//*271:*/
#line 5943 "tex.w"

memory_word save_stack[save_size+1];
uint16_t save_ptr;
uint16_t max_save_stack;
quarterword cur_level;
group_code cur_group;
uint16_t cur_boundary;

/*:271*//*286:*/
#line 6185 "tex.w"

int mag_set;

/*:286*//*297:*/
#line 6443 "tex.w"

eight_bits cur_cmd;
halfword cur_chr;
pointer cur_cs;
halfword cur_tok;

/*:297*//*301:*/
#line 6520 "tex.w"

in_state_record input_stack[stack_size+1];
uint8_t input_ptr;
uint8_t max_in_stack;
in_state_record cur_input;


/*:301*//*304:*/
#line 6622 "tex.w"

uint8_t in_open;
uint8_t open_parens;
alpha_file input_file0[max_in_open],*const input_file= input_file0-1;
int line;
int line_stack0[max_in_open],*const line_stack= line_stack0-1;

/*:304*//*305:*/
#line 6665 "tex.w"

uint8_t scanner_status;
pointer warning_index;
pointer def_ref;

/*:305*//*308:*/
#line 6789 "tex.w"

pointer param_stack[param_size+1];

uint8_t param_ptr;
int max_param_stack;


/*:308*//*309:*/
#line 6806 "tex.w"

int align_state;

/*:309*//*310:*/
#line 6817 "tex.w"

uint8_t base_ptr;

/*:310*//*333:*/
#line 7194 "tex.w"

pointer par_loc;
halfword par_token;

/*:333*//*361:*/
#line 7611 "tex.w"

bool force_eof;

/*:361*//*382:*/
#line 7925 "tex.w"

pointer cur_mark0[split_bot_mark_code-top_mark_code+1],*const cur_mark= cur_mark0-top_mark_code;


/*:382*//*387:*/
#line 7974 "tex.w"

uint8_t long_state;

/*:387*//*388:*/
#line 7985 "tex.w"

pointer pstack[9];

/*:388*//*410:*/
#line 8369 "tex.w"

int cur_val;
uint8_t cur_val_level;

/*:410*//*438:*/
#line 8740 "tex.w"

small_number radix;

/*:438*//*447:*/
#line 8875 "tex.w"

glue_ord cur_order;

/*:447*//*480:*/
#line 9482 "tex.w"

alpha_file read_file[16];
uint8_t read_open[17];

/*:480*//*489:*/
#line 9669 "tex.w"

pointer cond_ptr;
uint8_t if_limit;
small_number cur_if;
int if_line;

/*:489*//*493:*/
#line 9695 "tex.w"

int skip_line;

/*:493*//*512:*/
#line 10022 "tex.w"

str_number cur_name;
str_number cur_area;
str_number cur_ext;

/*:512*//*513:*/
#line 10038 "tex.w"

pool_pointer area_delimiter;
pool_pointer ext_delimiter;

/*:513*//*520:*/
#line 10138 "tex.w"

ASCII_code TEX_format_default[1+format_default_length+1]= " TeXformats/plain.fmt";




/*:520*//*526:*/
#line 10269 "tex.w"

bool name_in_progress;
str_number job_name;
bool log_opened;

/*:526*//*532:*/
#line 10342 "tex.w"

byte_file dvi_file;
str_number output_file_name;
str_number log_name;

/*:532*//*539:*/
#line 10465 "tex.w"

byte_file tfm_file;

/*:539*//*549:*/
#line 10752 "tex.w"

memory_word font_info[font_mem_size+1];

font_index fmem_ptr;
internal_font_number font_ptr;
four_quarters font_check0[font_max-font_base+1],*const font_check= font_check0-font_base;
scaled font_size0[font_max-font_base+1],*const font_size= font_size0-font_base;
scaled font_dsize0[font_max-font_base+1],*const font_dsize= font_dsize0-font_base;
font_index font_params0[font_max-font_base+1],*const font_params= font_params0-font_base;

str_number font_name0[font_max-font_base+1],*const font_name= font_name0-font_base;
str_number font_area0[font_max-font_base+1],*const font_area= font_area0-font_base;
eight_bits font_bc0[font_max-font_base+1],*const font_bc= font_bc0-font_base;

eight_bits font_ec0[font_max-font_base+1],*const font_ec= font_ec0-font_base;

pointer font_glue0[font_max-font_base+1],*const font_glue= font_glue0-font_base;

bool font_used0[font_max-font_base+1],*const font_used= font_used0-font_base;

int hyphen_char0[font_max-font_base+1],*const hyphen_char= hyphen_char0-font_base;

int skew_char0[font_max-font_base+1],*const skew_char= skew_char0-font_base;

font_index bchar_label0[font_max-font_base+1],*const bchar_label= bchar_label0-font_base;


uint16_t font_bchar0[font_max-font_base+1],*const font_bchar= font_bchar0-font_base;

uint16_t font_false_bchar0[font_max-font_base+1],*const font_false_bchar= font_false_bchar0-font_base;


/*:549*//*550:*/
#line 10793 "tex.w"

int char_base0[font_max-font_base+1],*const char_base= char_base0-font_base;

int width_base0[font_max-font_base+1],*const width_base= width_base0-font_base;

int height_base0[font_max-font_base+1],*const height_base= height_base0-font_base;

int depth_base0[font_max-font_base+1],*const depth_base= depth_base0-font_base;

int italic_base0[font_max-font_base+1],*const italic_base= italic_base0-font_base;

int lig_kern_base0[font_max-font_base+1],*const lig_kern_base= lig_kern_base0-font_base;

int kern_base0[font_max-font_base+1],*const kern_base= kern_base0-font_base;

int exten_base0[font_max-font_base+1],*const exten_base= exten_base0-font_base;

int param_base0[font_max-font_base+1],*const param_base= param_base0-font_base;


/*:550*//*555:*/
#line 10887 "tex.w"

four_quarters null_character;

/*:555*//*592:*/
#line 11882 "tex.w"

int total_pages;
scaled max_v;
scaled max_h;
int max_push;
int last_bop;
int dead_cycles;
bool doing_leaders;

quarterword c,f;
scaled rule_ht,rule_dp,rule_wd;
pointer g;
int lq,lr;

/*:592*//*595:*/
#line 11930 "tex.w"

eight_bits dvi_buf[dvi_buf_size+1];
dvi_index half_buf;
dvi_index dvi_limit;
dvi_index dvi_ptr;
int dvi_offset;

int dvi_gone;

/*:595*//*605:*/
#line 12095 "tex.w"

pointer down_ptr,right_ptr;

/*:605*//*616:*/
#line 12317 "tex.w"

scaled dvi_h,dvi_v;
scaled cur_h,cur_v;
internal_font_number dvi_f;
int cur_s;

/*:616*//*646:*/
#line 12921 "tex.w"

scaled total_stretch0[filll-normal+1],*const total_stretch= total_stretch0-normal,total_shrink0[filll-normal+1],*const total_shrink= total_shrink0-normal;

int last_badness;

/*:646*//*647:*/
#line 12931 "tex.w"

pointer adjust_tail;

/*:647*//*661:*/
#line 13105 "tex.w"

int pack_begin_line;


/*:661*//*684:*/
#line 13522 "tex.w"

two_halves empty_field;
four_quarters null_delimiter;

/*:684*//*719:*/
#line 14174 "tex.w"

pointer cur_mlist;
small_number cur_style;
small_number cur_size;
scaled cur_mu;
bool mlist_penalties;

/*:719*//*724:*/
#line 14264 "tex.w"

internal_font_number cur_f;
quarterword cur_c;
four_quarters cur_i;


/*:724*//*764:*/
#line 15075 "tex.w"

int magic_offset;

/*:764*//*770:*/
#line 15276 "tex.w"

pointer cur_align;
pointer cur_span;
pointer cur_loop;
pointer align_ptr;
pointer cur_head,cur_tail;

/*:770*//*814:*/
#line 16049 "tex.w"

pointer just_box;

/*:814*//*821:*/
#line 16192 "tex.w"

pointer passive;
pointer printed_node;
halfword pass_number;

/*:821*//*823:*/
#line 16231 "tex.w"

scaled active_width0[6],*const active_width= active_width0-1;

scaled cur_active_width0[6],*const cur_active_width= cur_active_width0-1;
scaled background0[6],*const background= background0-1;
scaled break_width0[6],*const break_width= break_width0-1;

/*:823*//*825:*/
#line 16288 "tex.w"

bool no_shrink_error_yet;

/*:825*//*828:*/
#line 16340 "tex.w"

pointer cur_p;
bool second_pass;
bool final_pass;
int threshold;

/*:828*//*833:*/
#line 16441 "tex.w"

int minimal_demerits0[tight_fit-very_loose_fit+1],*const minimal_demerits= minimal_demerits0-very_loose_fit;

int minimum_demerits;

pointer best_place0[tight_fit-very_loose_fit+1],*const best_place= best_place0-very_loose_fit;

halfword best_pl_line0[tight_fit-very_loose_fit+1],*const best_pl_line= best_pl_line0-very_loose_fit;


/*:833*//*839:*/
#line 16559 "tex.w"

scaled disc_width;

/*:839*//*847:*/
#line 16699 "tex.w"

halfword easy_line;
halfword last_special_line;

scaled first_width;

scaled second_width;
scaled first_indent;
scaled second_indent;

/*:847*//*872:*/
#line 17210 "tex.w"

pointer best_bet;
int fewest_demerits;
halfword best_line;
int actual_looseness;

int line_diff;


/*:872*//*892:*/
#line 17544 "tex.w"

uint16_t hc[66];
small_number hn;
pointer ha,hb;
internal_font_number hf;
uint16_t hu[64];
int hyf_char;
ASCII_code cur_lang,init_cur_lang;
int l_hyf,r_hyf,init_l_hyf,init_r_hyf;
halfword hyf_bchar;

/*:892*//*900:*/
#line 17677 "tex.w"

uint8_t hyf[65];
pointer init_list;
bool init_lig;
bool init_lft;

/*:900*//*905:*/
#line 17801 "tex.w"

small_number hyphen_passed;

/*:905*//*907:*/
#line 17842 "tex.w"

halfword cur_l,cur_r;
pointer cur_q;
pointer lig_stack;
bool ligature_present;
bool lft_hit,rt_hit;

/*:907*//*921:*/
#line 18145 "tex.w"

two_halves trie[trie_size+1];
small_number hyf_distance0[trie_op_size],*const hyf_distance= hyf_distance0-1;
small_number hyf_num0[trie_op_size],*const hyf_num= hyf_num0-1;
quarterword hyf_next0[trie_op_size],*const hyf_next= hyf_next0-1;
uint16_t op_start[256];

/*:921*//*926:*/
#line 18207 "tex.w"

str_number hyph_word[hyph_size+1];
pointer hyph_list[hyph_size+1];
hyph_pointer hyph_count;

/*:926*//*943:*/
#line 18416 "tex.w"

#ifdef INIT
uint16_t trie_op_hash0[trie_op_size+trie_op_size+1],*const trie_op_hash= trie_op_hash0+trie_op_size;

quarterword trie_used[256];

ASCII_code trie_op_lang0[trie_op_size],*const trie_op_lang= trie_op_lang0-1;

quarterword trie_op_val0[trie_op_size],*const trie_op_val= trie_op_val0-1;

uint16_t trie_op_ptr;
#endif

/*:943*//*947:*/
#line 18509 "tex.w"

#ifdef INIT
packed_ASCII_code trie_c[trie_size+1];

quarterword trie_o[trie_size+1];

trie_pointer trie_l[trie_size+1];

trie_pointer trie_r[trie_size+1];

trie_pointer trie_ptr;
trie_pointer trie_hash[trie_size+1];

#endif

/*:947*//*950:*/
#line 18596 "tex.w"

#ifdef INIT
bool trie_taken0[trie_size],*const trie_taken= trie_taken0-1;

trie_pointer trie_min[256];

trie_pointer trie_max;
bool trie_not_ready;
#endif

/*:950*//*971:*/
#line 18955 "tex.w"

scaled best_height_plus_depth;


/*:971*//*980:*/
#line 19162 "tex.w"

pointer page_tail;
uint8_t page_contents;
scaled page_max_depth;
pointer best_page_break;
int least_page_cost;
scaled best_size;

/*:980*//*982:*/
#line 19244 "tex.w"

scaled page_so_far[8];
pointer last_glue;
int last_penalty;
scaled last_kern;
int insert_penalties;

/*:982*//*989:*/
#line 19378 "tex.w"

bool output_active;

/*:989*//*1032:*/
#line 20098 "tex.w"

internal_font_number main_f;
four_quarters main_i;
four_quarters main_j;
font_index main_k;
pointer main_p;
int main_s;
halfword bchar;
halfword false_bchar;
bool cancel_boundary;
bool ins_disc;

/*:1032*//*1074:*/
#line 20871 "tex.w"

pointer cur_box;

/*:1074*//*1266:*/
#line 23457 "tex.w"

halfword after_token;

/*:1266*//*1281:*/
#line 23560 "tex.w"

bool long_help_seen;

/*:1281*//*1299:*/
#line 23746 "tex.w"

str_number format_ident;

/*:1299*//*1305:*/
#line 23827 "tex.w"

word_file fmt_file;

/*:1305*//*1331:*/
#line 24280 "tex.w"

int ready_already;

/*:1331*//*1342:*/
#line 24612 "tex.w"

alpha_file write_file[16];
bool write_open[18];

/*:1342*//*1345:*/
#line 24643 "tex.w"

pointer write_loc;

/*:1345*/
#line 266 "tex.w"


void initialize(void)
{/*19:*/
#line 572 "tex.w"

int i;

/*:19*//*163:*/
#line 3387 "tex.w"

int k;

/*:163*//*927:*/
#line 18212 "tex.w"

hyph_pointer z;

/*:927*/
#line 269 "tex.w"

/*8:*/
#line 315 "tex.w"

/*21:*/
#line 594 "tex.w"

xchr[040]= ' ';
xchr[041]= '!';
xchr[042]= '"';
xchr[043]= '#';
xchr[044]= '$';
xchr[045]= '%';
xchr[046]= '&';
xchr[047]= '\'';
xchr[050]= '(';
xchr[051]= ')';
xchr[052]= '*';
xchr[053]= '+';
xchr[054]= ',';
xchr[055]= '-';
xchr[056]= '.';
xchr[057]= '/';
xchr[060]= '0';
xchr[061]= '1';
xchr[062]= '2';
xchr[063]= '3';
xchr[064]= '4';
xchr[065]= '5';
xchr[066]= '6';
xchr[067]= '7';
xchr[070]= '8';
xchr[071]= '9';
xchr[072]= ':';
xchr[073]= ';';
xchr[074]= '<';
xchr[075]= '=';
xchr[076]= '>';
xchr[077]= '?';
xchr[0100]= '@';
xchr[0101]= 'A';
xchr[0102]= 'B';
xchr[0103]= 'C';
xchr[0104]= 'D';
xchr[0105]= 'E';
xchr[0106]= 'F';
xchr[0107]= 'G';
xchr[0110]= 'H';
xchr[0111]= 'I';
xchr[0112]= 'J';
xchr[0113]= 'K';
xchr[0114]= 'L';
xchr[0115]= 'M';
xchr[0116]= 'N';
xchr[0117]= 'O';
xchr[0120]= 'P';
xchr[0121]= 'Q';
xchr[0122]= 'R';
xchr[0123]= 'S';
xchr[0124]= 'T';
xchr[0125]= 'U';
xchr[0126]= 'V';
xchr[0127]= 'W';
xchr[0130]= 'X';
xchr[0131]= 'Y';
xchr[0132]= 'Z';
xchr[0133]= '[';
xchr[0134]= '\\';
xchr[0135]= ']';
xchr[0136]= '^';
xchr[0137]= '_';
xchr[0140]= '`';
xchr[0141]= 'a';
xchr[0142]= 'b';
xchr[0143]= 'c';
xchr[0144]= 'd';
xchr[0145]= 'e';
xchr[0146]= 'f';
xchr[0147]= 'g';
xchr[0150]= 'h';
xchr[0151]= 'i';
xchr[0152]= 'j';
xchr[0153]= 'k';
xchr[0154]= 'l';
xchr[0155]= 'm';
xchr[0156]= 'n';
xchr[0157]= 'o';
xchr[0160]= 'p';
xchr[0161]= 'q';
xchr[0162]= 'r';
xchr[0163]= 's';
xchr[0164]= 't';
xchr[0165]= 'u';
xchr[0166]= 'v';
xchr[0167]= 'w';
xchr[0170]= 'x';
xchr[0171]= 'y';
xchr[0172]= 'z';
xchr[0173]= '{';
xchr[0174]= '|';
xchr[0175]= '}';
xchr[0176]= '~';

/*:21*//*23:*/
#line 725 "tex.w"

for(i= 0;i<=037;i++)xchr[i]= ' ';
for(i= 0177;i<=0377;i++)xchr[i]= ' ';

/*:23*//*24:*/
#line 735 "tex.w"

for(i= first_text_char;i<=last_text_char;i++)xord[chr(i)]= invalid_code;
for(i= 0200;i<=0377;i++)xord[xchr[i]]= i;
for(i= 0;i<=0176;i++)xord[xchr[i]]= i;

/*:24*//*74:*/
#line 1773 "tex.w"
interaction= error_stop_mode;

/*:74*//*77:*/
#line 1821 "tex.w"

deletions_allowed= true;set_box_allowed= true;
error_count= 0;

/*:77*//*80:*/
#line 1875 "tex.w"

help_ptr= 0;use_err_help= false;

/*:80*//*97:*/
#line 2139 "tex.w"

interrupt= 0;OK_to_interrupt= true;

/*:97*//*166:*/
#line 3438 "tex.w"

#ifdef DEBUG
was_mem_end= mem_min;
was_lo_max= mem_min;was_hi_min= mem_max;
panicking= false;
#endif

/*:166*//*215:*/
#line 4407 "tex.w"

nest_ptr= 0;max_nest_stack= 0;
mode= vmode;head= contrib_head;tail= contrib_head;
prev_depth= ignore_depth;mode_line= 0;
prev_graf= 0;shown_mode= 0;
/*991:*/
#line 19388 "tex.w"

page_contents= empty;page_tail= page_head;link(page_head)= null;
last_glue= max_halfword;last_penalty= 0;last_kern= 0;
page_depth= 0;page_max_depth= 0

/*:991*/
#line 4412 "tex.w"
;

/*:215*//*254:*/
#line 5506 "tex.w"

for(k= int_base;k<=eqtb_size;k++)xeq_level[k]= level_one;

/*:254*//*257:*/
#line 5557 "tex.w"

no_new_control_sequence= true;
next(hash_base)= 0;text(hash_base)= 0;
for(k= hash_base+1;k<=undefined_control_sequence-1;k++)hash[k]= hash[hash_base];

/*:257*//*272:*/
#line 5956 "tex.w"

save_ptr= 0;cur_level= level_one;cur_group= bottom_level;cur_boundary= 0;
max_save_stack= 0;

/*:272*//*287:*/
#line 6188 "tex.w"

mag_set= 0;

/*:287*//*383:*/
#line 7929 "tex.w"

top_mark= null;first_mark= null;bot_mark= null;
split_first_mark= null;split_bot_mark= null;

/*:383*//*439:*/
#line 8747 "tex.w"

cur_val= 0;cur_val_level= int_val;radix= 0;cur_order= normal;

/*:439*//*481:*/
#line 9486 "tex.w"

for(k= 0;k<=16;k++)read_open[k]= closed;

/*:481*//*490:*/
#line 9675 "tex.w"

cond_ptr= null;if_limit= normal;cur_if= 0;if_line= 0;

/*:490*//*551:*/
#line 10813 "tex.w"

for(k= font_base;k<=font_max;k++)font_used[k]= false;

/*:551*//*556:*/
#line 10890 "tex.w"

null_character.b0= min_quarterword;null_character.b1= min_quarterword;
null_character.b2= min_quarterword;null_character.b3= min_quarterword;

/*:556*//*593:*/
#line 11896 "tex.w"

total_pages= 0;max_v= 0;max_h= 0;max_push= 0;last_bop= -1;
doing_leaders= false;dead_cycles= 0;cur_s= -1;

/*:593*//*596:*/
#line 11942 "tex.w"

half_buf= dvi_buf_size/2;dvi_limit= dvi_buf_size;dvi_ptr= 0;
dvi_offset= 0;dvi_gone= 0;

/*:596*//*606:*/
#line 12098 "tex.w"

down_ptr= null;right_ptr= null;

/*:606*//*648:*/
#line 12934 "tex.w"
adjust_tail= null;last_badness= 0;

/*:648*//*662:*/
#line 13109 "tex.w"

pack_begin_line= 0;

/*:662*//*685:*/
#line 13526 "tex.w"

empty_field.rh= empty;empty_field.lh= null;
null_delimiter.b0= 0;null_delimiter.b1= min_quarterword;
null_delimiter.b2= 0;null_delimiter.b3= min_quarterword;

/*:685*//*771:*/
#line 15285 "tex.w"

align_ptr= null;cur_align= null;cur_span= null;cur_loop= null;
cur_head= null;cur_tail= null;

/*:771*//*928:*/
#line 18215 "tex.w"

for(z= 0;z<=hyph_size;z++)
{hyph_word[z]= 0;hyph_list[z]= null;
}
hyph_count= 0;

/*:928*//*990:*/
#line 19381 "tex.w"

output_active= false;insert_penalties= 0;

/*:990*//*1033:*/
#line 20114 "tex.w"

ligature_present= false;cancel_boundary= false;lft_hit= false;rt_hit= false;
ins_disc= false;

/*:1033*//*1267:*/
#line 23460 "tex.w"

after_token= 0;

/*:1267*//*1282:*/
#line 23563 "tex.w"
long_help_seen= false;

/*:1282*//*1300:*/
#line 23749 "tex.w"

format_ident= 0;

/*:1300*//*1343:*/
#line 24616 "tex.w"

for(k= 0;k<=17;k++)write_open[k]= false;

/*:1343*/
#line 316 "tex.w"

#ifdef INIT
/*164:*/
#line 3390 "tex.w"

for(k= mem_bot+1;k<=lo_mem_stat_max;k++)mem[k].sc= 0;


k= mem_bot;while(k<=lo_mem_stat_max)

{glue_ref_count(k)= null+1;
stretch_order(k)= normal;shrink_order(k)= normal;
k= k+glue_spec_size;
}
stretch(fil_glue)= unity;stretch_order(fil_glue)= fil;
stretch(fill_glue)= unity;stretch_order(fill_glue)= fill;
stretch(ss_glue)= unity;stretch_order(ss_glue)= fil;
shrink(ss_glue)= unity;shrink_order(ss_glue)= fil;
stretch(fil_neg_glue)= -unity;stretch_order(fil_neg_glue)= fil;
rover= lo_mem_stat_max+1;
link(rover)= empty_flag;
node_size(rover)= 1000;
llink(rover)= rover;rlink(rover)= rover;
lo_mem_max= rover+1000;link(lo_mem_max)= null;info(lo_mem_max)= null;
for(k= hi_mem_stat_min;k<=mem_top;k++)
mem[k]= mem[lo_mem_max];
/*790:*/
#line 15595 "tex.w"

info(omit_template)= end_template_token;

/*:790*//*797:*/
#line 15701 "tex.w"

link(end_span)= max_quarterword+1;info(end_span)= null;

/*:797*//*820:*/
#line 16162 "tex.w"

type(last_active)= hyphenated;line_number(last_active)= max_halfword;
subtype(last_active)= 0;

/*:820*//*981:*/
#line 19215 "tex.w"

subtype(page_ins_head)= qi(255);
type(page_ins_head)= split_up;link(page_ins_head)= page_ins_head;

/*:981*//*988:*/
#line 19372 "tex.w"

type(page_head)= glue_node;subtype(page_head)= normal;

/*:988*/
#line 3412 "tex.w"
;
avail= null;mem_end= mem_top;
hi_mem_min= hi_mem_stat_min;
var_used= lo_mem_stat_max+1-mem_bot;dyn_used= hi_mem_stat_usage;


/*:164*//*222:*/
#line 4596 "tex.w"

eq_type(undefined_control_sequence)= undefined_cs;
equiv(undefined_control_sequence)= null;
eq_level(undefined_control_sequence)= level_zero;
for(k= active_base;k<=undefined_control_sequence-1;k++)
eqtb[k]= eqtb[undefined_control_sequence];

/*:222*//*228:*/
#line 4751 "tex.w"

equiv(glue_base)= zero_glue;eq_level(glue_base)= level_one;
eq_type(glue_base)= glue_ref;
for(k= glue_base+1;k<=local_base-1;k++)eqtb[k]= eqtb[glue_base];
glue_ref_count(zero_glue)= glue_ref_count(zero_glue)+local_base-glue_base;

/*:228*//*232:*/
#line 4870 "tex.w"

par_shape_ptr= null;eq_type(par_shape_loc)= shape_ref;
eq_level(par_shape_loc)= level_one;
for(k= output_routine_loc;k<=toks_base+255;k++)
eqtb[k]= eqtb[undefined_control_sequence];
box(0)= null;eq_type(box_base)= box_ref;eq_level(box_base)= level_one;
for(k= box_base+1;k<=box_base+255;k++)eqtb[k]= eqtb[box_base];
cur_font= null_font;eq_type(cur_font_loc)= data;
eq_level(cur_font_loc)= level_one;
for(k= math_font_base;k<=math_font_base+47;k++)eqtb[k]= eqtb[cur_font_loc];
equiv(cat_code_base)= 0;eq_type(cat_code_base)= data;
eq_level(cat_code_base)= level_one;
for(k= cat_code_base+1;k<=int_base-1;k++)eqtb[k]= eqtb[cat_code_base];
for(k= 0;k<=255;k++)
{cat_code(k)= other_char;math_code(k)= hi(k);sf_code(k)= 1000;
}
cat_code(carriage_return)= car_ret;cat_code(' ')= spacer;
cat_code('\\')= escape;cat_code('%')= comment;
cat_code(invalid_code)= invalid_char;cat_code(null_code)= ignore;
for(k= '0';k<='9';k++)math_code(k)= hi(k+var_code);
for(k= 'A';k<='Z';k++)
{cat_code(k)= letter;cat_code(k+'a'-'A')= letter;
math_code(k)= hi(k+var_code+0x100);
math_code(k+'a'-'A')= hi(k+'a'-'A'+var_code+0x100);
lc_code(k)= k+'a'-'A';lc_code(k+'a'-'A')= k+'a'-'A';
uc_code(k)= k;uc_code(k+'a'-'A')= k;
sf_code(k)= 999;
}

/*:232*//*240:*/
#line 5279 "tex.w"

for(k= int_base;k<=del_code_base-1;k++)eqtb[k].i= 0;
mag= 1000;tolerance= 10000;hang_after= 1;max_dead_cycles= 25;
escape_char= '\\';end_line_char= carriage_return;
for(k= 0;k<=255;k++)del_code(k)= -1;
del_code('.')= 0;

/*:240*//*250:*/
#line 5471 "tex.w"

for(k= dimen_base;k<=eqtb_size;k++)eqtb[k].sc= 0;

/*:250*//*258:*/
#line 5562 "tex.w"

hash_used= frozen_control_sequence;
cs_count= 0;
eq_type(frozen_dont_expand)= dont_expand;
text(frozen_dont_expand)= /*1525:*/
#line 25471 "tex.w"
400
/*:1525*/
#line 5566 "tex.w"
;


/*:258*//*552:*/
#line 10819 "tex.w"

font_ptr= null_font;fmem_ptr= 7;
font_name[null_font]= /*1639:*/
#line 25813 "tex.w"
514
/*:1639*/
#line 10821 "tex.w"
;font_area[null_font]= empty_string;
hyphen_char[null_font]= '-';skew_char[null_font]= -1;
bchar_label[null_font]= non_address;
font_bchar[null_font]= non_char;font_false_bchar[null_font]= non_char;
font_bc[null_font]= 1;font_ec[null_font]= 0;
font_size[null_font]= 0;font_dsize[null_font]= 0;
char_base[null_font]= 0;width_base[null_font]= 0;
height_base[null_font]= 0;depth_base[null_font]= 0;
italic_base[null_font]= 0;lig_kern_base[null_font]= 0;
kern_base[null_font]= 0;exten_base[null_font]= 0;
font_glue[null_font]= null;font_params[null_font]= 7;
param_base[null_font]= -1;
for(k= 0;k<=6;k++)font_info[k].sc= 0;

/*:552*//*946:*/
#line 18486 "tex.w"

for(k= -trie_op_size;k<=trie_op_size;k++)trie_op_hash[k]= 0;
for(k= 0;k<=255;k++)trie_used[k]= min_quarterword;
trie_op_ptr= 0;

/*:946*//*951:*/
#line 18612 "tex.w"

trie_not_ready= true;trie_root= 0;trie_c[0]= si(0);trie_ptr= 0;

/*:951*//*1216:*/
#line 22800 "tex.w"

text(frozen_protection)= /*1751:*/
#line 26149 "tex.w"
626
/*:1751*/
#line 22801 "tex.w"
;

/*:1216*//*1301:*/
#line 23752 "tex.w"

format_ident= /*1781:*/
#line 26239 "tex.w"
656
/*:1781*/
#line 23753 "tex.w"
;

/*:1301*//*1369:*/
#line 24851 "tex.w"

text(end_write)= /*1791:*/
#line 26269 "tex.w"
666
/*:1791*/
#line 24852 "tex.w"
;eq_level(end_write)= level_one;
eq_type(end_write)= outer_call;equiv(end_write)= null;

/*:1369*/
#line 318 "tex.w"

#endif

/*:8*/
#line 270 "tex.w"
;
}
/*57:*/
#line 1474 "tex.w"

void print_ln(void)
{switch(selector){
case term_and_log:{wterm_cr;wlog_cr;
term_offset= 0;file_offset= 0;
}break;
case log_only:{wlog_cr;file_offset= 0;
}break;
case term_only:{wterm_cr;term_offset= 0;
}break;
case no_print:case pseudo:case new_string:do_nothing;break;
default:write_ln(write_file[selector]);
}
}

/*:57*//*58:*/
#line 1493 "tex.w"

void print_char(ASCII_code s)
{
if(/*244:*/
#line 5312 "tex.w"
s==new_line_char

/*:244*/
#line 1496 "tex.w"
)
if(selector<pseudo)
{print_ln();return;
}
switch(selector){
case term_and_log:{wterm("%c",xchr[s]);wlog("%c",xchr[s]);
incr(term_offset);incr(file_offset);
if(term_offset==max_print_line)
{wterm_cr;term_offset= 0;
}
if(file_offset==max_print_line)
{wlog_cr;file_offset= 0;
}
}break;
case log_only:{wlog("%c",xchr[s]);incr(file_offset);
if(file_offset==max_print_line)print_ln();
}break;
case term_only:{wterm("%c",xchr[s]);incr(term_offset);
if(term_offset==max_print_line)print_ln();
}break;
case no_print:do_nothing;break;
case pseudo:if(tally<trick_count)trick_buf[tally%error_line]= s;break;
case new_string:{if(pool_ptr<pool_size)append_char(s);
}break;
default:write(write_file[selector],"%c",xchr[s]);
}
incr(tally);
}

/*:58*//*59:*/
#line 1533 "tex.w"

void print(int s)
{
pool_pointer j;
int nl;
if(s>=str_ptr)s= /*1381:*/
#line 25039 "tex.w"
256
/*:1381*/
#line 1538 "tex.w"
;

else if(s<256)
if(s<0)s= /*1381:*/
#line 25039 "tex.w"
256
/*:1381*/
#line 1541 "tex.w"
;
else{if(selector> pseudo)
{print_char(s);return;
}
if((/*244:*/
#line 5312 "tex.w"
s==new_line_char

/*:244*/
#line 1545 "tex.w"
))
if(selector<pseudo)
{print_ln();return;
}
nl= new_line_char;new_line_char= -1;

j= str_start[s];
while(j<str_start[s+1])
{print_char(so(str_pool[j]));incr(j);
}
new_line_char= nl;return;
}
j= str_start[s];
while(j<str_start[s+1])
{print_char(so(str_pool[j]));incr(j);
}
}

void print_str(char*s)
{while(*s!=0)print_char(*s++);
}

/*:59*//*60:*/
#line 1571 "tex.w"

void slow_print(int s)
{pool_pointer j;
if((s>=str_ptr)||(s<256))print(s);
else{j= str_start[s];
while(j<str_start[s+1])
{print(so(str_pool[j]));incr(j);
}
}
}

/*:60*//*62:*/
#line 1598 "tex.w"

void print_nl(char*s)
{if(((term_offset> 0)&&(odd(selector)))||
((file_offset> 0)&&(selector>=log_only)))print_ln();
print_str(s);
}

/*:62*//*63:*/
#line 1608 "tex.w"

void print_esc(str_number s)
{int c;
/*243:*/
#line 5310 "tex.w"
c= escape_char

/*:243*/
#line 1611 "tex.w"
;
if(c>=0)if(c<256)print(c);
slow_print(s);
}

/*:63*//*64:*/
#line 1618 "tex.w"

void print_the_digs(eight_bits k)

{while(k> 0)
{decr(k);
if(dig[k]<10)print_char('0'+dig[k]);
else print_char('A'-10+dig[k]);
}
}

/*:64*//*65:*/
#line 1634 "tex.w"

void print_int(int n)
{uint8_t k;
int m;
k= 0;
if(n<0)
{print_char('-');
if(n> -100000000)negate(n);
else{m= -1-n;n= m/10;m= (m%10)+1;k= 1;
if(m<10)dig[0]= m;
else{dig[0]= 0;incr(n);
}
}
}
do{dig[k]= n%10;n= n/10;incr(k);
}while(!(n==0));
print_the_digs(k);
}

/*:65*//*262:*/
#line 5640 "tex.w"

void print_cs(int p)
{if(p<hash_base)
if(p>=single_base)
if(p==null_cs)
{print_esc(/*1526:*/
#line 25474 "tex.w"
401
/*:1526*/
#line 5645 "tex.w"
);print_esc(/*1527:*/
#line 25477 "tex.w"
402
/*:1527*/
#line 5645 "tex.w"
);print_char(' ');
}
else{print_esc(p-single_base);
if(cat_code(p-single_base)==letter)print_char(' ');
}
else if(p<active_base)print_esc(/*1528:*/
#line 25480 "tex.w"
403
/*:1528*/
#line 5650 "tex.w"
);

else print(p-active_base);
else if(p>=undefined_control_sequence)print_esc(/*1528:*/
#line 25480 "tex.w"
403
/*:1528*/
#line 5653 "tex.w"
);
else if((text(p)<0)||(text(p)>=str_ptr))print_esc(/*1529:*/
#line 25483 "tex.w"
404
/*:1529*/
#line 5654 "tex.w"
);

else{print_esc(text(p));
print_char(' ');
}
}

/*:262*//*263:*/
#line 5664 "tex.w"

void sprint_cs(pointer p)
{if(p<hash_base)
if(p<single_base)print(p-active_base);
else if(p<null_cs)print_esc(p-single_base);
else{print_esc(/*1526:*/
#line 25474 "tex.w"
401
/*:1526*/
#line 5669 "tex.w"
);print_esc(/*1527:*/
#line 25477 "tex.w"
402
/*:1527*/
#line 5669 "tex.w"
);
}
else print_esc(text(p));
}

/*:263*//*518:*/
#line 10100 "tex.w"

void print_file_name(int n,int a,int e)
{slow_print(a);slow_print(n);slow_print(e);
}

/*:518*//*699:*/
#line 13817 "tex.w"

void print_size(int s)
{if(s==text_size)print_esc(/*1438:*/
#line 25210 "tex.w"
313
/*:1438*/
#line 13819 "tex.w"
);
else if(s==script_size)print_esc(/*1439:*/
#line 25213 "tex.w"
314
/*:1439*/
#line 13820 "tex.w"
);
else print_esc(/*1440:*/
#line 25216 "tex.w"
315
/*:1440*/
#line 13821 "tex.w"
);
}

/*:699*//*1355:*/
#line 24737 "tex.w"

void print_write_whatsit(str_number s,pointer p)
{print_esc(s);
if(write_stream(p)<16)print_int(write_stream(p));
else if(write_stream(p)==16)print_char('*');

else print_char('-');
}

/*:1355*/
#line 272 "tex.w"

/*78:*/
#line 1836 "tex.w"

void normalize_selector(void);
void get_token(void);
void term_input(void);
void show_context(void);
void begin_file_reading(void);
void open_log_file(void);
void close_files_and_terminate(void);
void clear_for_error_prompt(void);
void give_err_help(void);
#ifdef DEBUG
void debug_help(void);
#else
#define debug_help() do_nothing
#endif

/*:78*//*81:*/
#line 1888 "tex.w"

void jump_out(void)
{close_files_and_terminate();exit(0);
}

/*:81*//*82:*/
#line 1895 "tex.w"

void error(void)
{
ASCII_code c;
int s1,s2,s3,s4;

if(history<error_message_issued)history= error_message_issued;
print_char('.');show_context();
if(interaction==error_stop_mode)/*83:*/
#line 1913 "tex.w"

loop{resume:clear_for_error_prompt();prompt_input("? ");

if(last==first)return;
c= buffer[first];
if(c>='a')c= c+'A'-'a';
/*84:*/
#line 1934 "tex.w"

switch(c){
case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':if(deletions_allowed)
/*88:*/
#line 2007 "tex.w"

{s1= cur_tok;s2= cur_cmd;s3= cur_chr;s4= align_state;
align_state= 1000000;OK_to_interrupt= false;
if((last> first+1)&&(buffer[first+1]>='0')&&(buffer[first+1]<='9'))
c= c*10+buffer[first+1]-'0'*11;
else c= c-'0';
while(c> 0)
{get_token();
decr(c);
}
cur_tok= s1;cur_cmd= s2;cur_chr= s3;align_state= s4;OK_to_interrupt= true;
help2("I have just deleted some text, as you asked.")
("You can now delete more, or insert, or whatever.");
show_context();goto resume;
}

/*:88*/
#line 1937 "tex.w"
break;

#ifdef DEBUG
case'D':{debug_help();goto resume;}
#endif
case'E':if(base_ptr> 0)
{print_nl("You want to edit file ");

slow_print(input_stack[base_ptr].name_field);
print_str(" at line ");print_int(line);
interaction= scroll_mode;jump_out();
}break;
case'H':/*89:*/
#line 2023 "tex.w"

{if(use_err_help)
{give_err_help();use_err_help= false;
}
else{if(help_ptr==0)
help2("Sorry, I don't know how to help in this situation.")
("Maybe you should try asking a human?");
do{decr(help_ptr);print_str(help_line[help_ptr]);print_ln();
}while(!(help_ptr==0));
}
help4("Sorry, I already gave what help I could...")
("Maybe you should try asking a human?")
("An error might have occurred before I noticed any problems.")
("``If all else fails, read the instructions.'");
goto resume;
}

/*:89*/
#line 1949 "tex.w"

case'I':/*87:*/
#line 1991 "tex.w"

{begin_file_reading();

if(last> first+1)
{loc= first+1;buffer[first]= ' ';
}
else{prompt_input("insert>");loc= first;

}
first= last;
cur_input.limit_field= last-1;
return;
}

/*:87*/
#line 1950 "tex.w"

case'Q':case'R':case'S':/*86:*/
#line 1974 "tex.w"

{error_count= 0;interaction= batch_mode+c-'Q';
print_str("OK, entering ");
switch(c){
case'Q':{print_esc(/*1383:*/
#line 25045 "tex.w"
258
/*:1383*/
#line 1978 "tex.w"
);decr(selector);
}break;
case'R':print_esc(/*1384:*/
#line 25048 "tex.w"
259
/*:1384*/
#line 1980 "tex.w"
);break;
case'S':print_esc(/*1385:*/
#line 25051 "tex.w"
260
/*:1385*/
#line 1981 "tex.w"
);
}
print_str("...");print_ln();update_terminal;return;
}

/*:86*/
#line 1951 "tex.w"

case'X':{interaction= scroll_mode;jump_out();
}break;
default:do_nothing;
}
/*85:*/
#line 1958 "tex.w"

{print_str("Type <return> to proceed, S to scroll future error messages,");

print_nl("R to run without stopping, Q to run quietly,");
print_nl("I to insert something, ");
if(base_ptr> 0)print_str("E to edit your file,");
if(deletions_allowed)
print_nl("1 or ... or 9 to ignore the next 1 to 9 tokens of input,");
print_nl("H for help, X to quit.");
}

/*:85*/
#line 1956 "tex.w"


/*:84*/
#line 1919 "tex.w"
;
}

/*:83*/
#line 1903 "tex.w"
;
incr(error_count);
if(error_count==100)
{print_nl("(That makes 100 errors; please try again.)");

history= fatal_error_stop;jump_out();
}
/*90:*/
#line 2040 "tex.w"

if(interaction> batch_mode)decr(selector);
if(use_err_help)
{print_ln();give_err_help();
}
else while(help_ptr> 0)
{decr(help_ptr);print_nl(help_line[help_ptr]);
}
print_ln();
if(interaction> batch_mode)incr(selector);
print_ln()

/*:90*/
#line 1910 "tex.w"
;
}

/*:82*//*93:*/
#line 2079 "tex.w"

void fatal_error(char*s)
{normalize_selector();
print_err("Emergency stop");help1(s);succumb;

}

/*:93*//*94:*/
#line 2088 "tex.w"

void overflow(char*s,int n)
{normalize_selector();
print_err("TeX capacity exceeded, sorry [");

print_str(s);print_char('=');print_int(n);print_char(']');
help2("If you really absolutely need more capacity,")
("you can ask a wizard to enlarge me.");
succumb;
}

/*:94*//*95:*/
#line 2107 "tex.w"

void confusion(str_number s)

{normalize_selector();
if(history<error_message_issued)
{print_err("This can't happen (");print(s);print_char(')');

help1("I'm broken. Please show this to someone who can fix can fix");
}
else{print_err("I can't go on meeting you like this");

help2("One of your faux pas seems to have wounded me deeply...")
("in fact, I'm barely conscious. Please fix it and try again.");
}
succumb;
}

/*:95*/
#line 273 "tex.w"


/*:4*//*27:*/
#line 823 "tex.w"
bool a_open_in(alpha_file*f)

{reset((*f),name_of_file,"r");return reset_OK((*f));
}

bool a_open_out(alpha_file*f)

{rewrite((*f),name_of_file,"w");return rewrite_OK((*f));
}

bool b_open_in(byte_file*f)

{reset((*f),name_of_file,"rb");return reset_OK((*f));
}

bool b_open_out(byte_file*f)

{rewrite((*f),name_of_file,"wb");return rewrite_OK((*f));
}

bool w_open_in(word_file*f)

{reset((*f),name_of_file,"rb");return reset_OK((*f));
}

bool w_open_out(word_file*f)

{rewrite((*f),name_of_file,"wb");return rewrite_OK((*f));
}

/*:27*//*28:*/
#line 864 "tex.w"
void a_close(alpha_file*f)
{close((*f));
}

void b_close(byte_file*f)
{close((*f));
}

void w_close(word_file*f)
{close((*f));
}

/*:28*//*31:*/
#line 937 "tex.w"
bool input_ln(alpha_file*f,bool bypass_eoln)

{uint16_t last_nonblank;
if(bypass_eoln)if(!eof((*f)))get((*f));

last= first;
if(eof((*f)))return false;
else{last_nonblank= first;
while(!eoln((*f)))
{if(last>=max_buf_stack)
{max_buf_stack= last+1;
if(max_buf_stack==buf_size)
/*35:*/
#line 1023 "tex.w"

if(format_ident==0)
{write_ln(term_out,"Buffer size exceeded!");exit(0);

}
else{cur_input.loc_field= first;cur_input.limit_field= last-1;
overflow("buffer size",buf_size);

}

/*:35*/
#line 949 "tex.w"
;
}
buffer[last]= xord[(*f).d];get((*f));incr(last);
if(buffer[last-1]!=' ')last_nonblank= last;
}
last= last_nonblank;return true;
}
}

/*:31*//*37:*/
#line 1067 "tex.w"
bool init_terminal(void)
{
t_open_in;
loop{wake_up_terminal;write(term_out,"**");update_terminal;

if(!input_ln(&term_in,true))
{write_ln(term_out);
write(term_out,"! End of file on the terminal... why?");

return false;
}
loc= first;
while((loc<last)&&(buffer[loc]==' '))incr(loc);
if(loc<last)
{return true;

}
write_ln(term_out,"Please type the name of your input file.");
}
}

/*:37*//*43:*/
#line 1185 "tex.w"
str_number make_string(void)
{if(str_ptr==max_strings)
overflow("number of strings",max_strings-init_str_ptr);

incr(str_ptr);str_start[str_ptr]= pool_ptr;
return str_ptr-1;
}

/*:43*//*45:*/
#line 1204 "tex.w"
bool str_eq_buf(str_number s,int k)

{
pool_pointer j;
bool result;
j= str_start[s];
while(j<str_start[s+1])
{if(so(str_pool[j])!=buffer[k])
{result= false;goto not_found;
}
incr(j);incr(k);
}
result= true;
not_found:return result;
}

/*:45*//*46:*/
#line 1223 "tex.w"
bool str_eq_str(str_number s,str_number t)

{
pool_pointer j,k;
bool result;
result= false;
if(length(s)!=length(t))goto not_found;
j= str_start[s];k= str_start[t];
while(j<str_start[s+1])
{if(str_pool[j]!=str_pool[k])goto not_found;
incr(j);incr(k);
}
result= true;
not_found:return result;
}

/*:46*//*47:*/
#line 1245 "tex.w"

#ifdef INIT
bool get_strings_started(void)

{
int k,l;
uint8_t m,n;
str_number g;
int a;
bool c;
pool_ptr= 0;str_ptr= 0;str_start[0]= 0;
/*48:*/
#line 1265 "tex.w"

for(k= 0;k<=255;k++)
{if(/*49:*/
#line 1305 "tex.w"

(k<' ')||(k> '~')

/*:49*/
#line 1267 "tex.w"
)
{append_char('^');append_char('^');
if(k<0100)append_char(k+0100)
else if(k<0200)append_char(k-0100)
else{app_lc_hex(k/16);app_lc_hex(k%16);
}
}
else append_char(k);
g= make_string();
}

/*:48*/
#line 1256 "tex.w"
;
/*51:*/
#line 1324 "tex.w"

{int k;for(k= 1;k<=file_name_size;k++)name_of_file[k]= pool_name[k-1];}
if(a_open_in(&pool_file))
{c= false;
do{/*52:*/
#line 1336 "tex.w"

{if(eof(pool_file))bad_pool("! TEX.POOL has no check sum.");

read(pool_file,m);read(pool_file,n);
if(m=='*')/*53:*/
#line 1362 "tex.w"

{a= 0;k= 1;
loop{if((xord[n]<'0')||(xord[n]> '9'))
bad_pool("! TEX.POOL check sum doesn't have nine digits.");

a= 10*a+xord[n]-'0';
if(k==9)goto done;
incr(k);read(pool_file,n);
}
done:if(a!=0)bad_pool("! TEX.POOL doesn't match; TANGLE me again.");

c= true;
}

/*:53*/
#line 1340 "tex.w"

else{if((xord[m]<'0')||(xord[m]> '9')||
(xord[n]<'0')||(xord[n]> '9'))
bad_pool("! TEX.POOL line doesn't begin with two digits.");

l= xord[m]*10+xord[n]-'0'*11;
if(pool_ptr+l+string_vacancies> pool_size)
bad_pool("! You have to increase POOLSIZE.");

for(k= 1;k<=l;k++)
{if(eoln(pool_file))m= ' ';else read(pool_file,m);
append_char(xord[m]);
}
read_ln(pool_file);g= make_string();
}
}

/*:52*/
#line 1329 "tex.w"
;
}while(!(c));
a_close(&pool_file);return true;
}
else bad_pool("! I can't read TEX.POOL.")


/*:51*/
#line 1258 "tex.w"
;
}
#endif

/*:47*//*66:*/
#line 1656 "tex.w"
void print_two(int n)
{n= abs(n)%100;print_char('0'+(n/10));
print_char('0'+(n%10));
}

/*:66*//*67:*/
#line 1663 "tex.w"
void print_hex(int n)

{uint8_t k;
k= 0;print_char('"');
do{dig[k]= n%16;n= n/16;incr(k);
}while(!(n==0));
print_the_digs(k);
}

/*:67*//*69:*/
#line 1683 "tex.w"
void print_roman_int(int n)
{
pool_pointer j,k;
nonnegative_integer u,v;
j= str_start[/*1382:*/
#line 25042 "tex.w"
257
/*:1382*/
#line 1687 "tex.w"
];v= 1000;
loop{while(n>=v)
{print_char(so(str_pool[j]));n= n-v;
}
if(n<=0)return;
k= j+2;u= v/(so(str_pool[k-1])-'0');
if(str_pool[k-1]==si('2'))
{k= k+2;u= u/(so(str_pool[k-1])-'0');
}
if(n+u>=v)
{print_char(so(str_pool[k]));n= n+u;
}
else{j= j+2;v= v/(so(str_pool[j-1])-'0');
}
}
}

/*:69*//*70:*/
#line 1707 "tex.w"
void print_current_string(void)
{pool_pointer j;
j= str_start[str_ptr];
while(j<pool_ptr)
{print_char(so(str_pool[j]));incr(j);
}
}

/*:70*//*71:*/
#line 1725 "tex.w"
void term_input(void)
{int k;
update_terminal;
if(!input_ln(&term_in,true))fatal_error("End of file on the terminal!");

term_offset= 0;
decr(selector);
if(last!=first)for(k= first;k<=last-1;k++)print(buffer[k]);
print_ln();incr(selector);
}

/*:71*//*91:*/
#line 2055 "tex.w"
void int_error(int n)
{print_str(" (");print_int(n);print_char(')');error();
}

/*:91*//*92:*/
#line 2063 "tex.w"
void normalize_selector(void)
{if(log_opened)selector= term_and_log;
else selector= term_only;
if(job_name==0)open_log_file();
if(interaction==batch_mode)decr(selector);
}

/*:92*//*98:*/
#line 2147 "tex.w"
void pause_for_instructions(void)
{if(OK_to_interrupt)
{interaction= error_stop_mode;
if((selector==log_only)||(selector==no_print))
incr(selector);
print_err("Interruption");

help3("You rang?")
("Try to insert some instructions for me (e.g.,`I\\showlists'),")
("unless you just want to quit by typing `X'.");
deletions_allowed= false;error();deletions_allowed= true;
interrupt= 0;
}
}

/*:98*//*100:*/
#line 2186 "tex.w"
int half(int x)
{if(odd(x))return(x+1)/2;
else return x/2;
}

/*:100*//*102:*/
#line 2207 "tex.w"
scaled round_decimals(small_number k)

{int a;
a= 0;
while(k> 0)
{decr(k);a= (a+dig[k]*two)/10;
}
return(a+1)/2;
}

/*:102*//*103:*/
#line 2229 "tex.w"
void print_scaled(scaled s)

{scaled delta;
if(s<0)
{print_char('-');negate(s);
}
print_int(s/unity);
print_char('.');
s= 10*(s%unity)+5;delta= 10;
do{if(delta> unity)s= s+0100000-50000;
print_char('0'+(s/unity));s= 10*(s%unity);delta= delta*10;
}while(!(s<=delta));
}

/*:103*//*105:*/
#line 2279 "tex.w"
scaled mult_and_add(int n,scaled x,scaled y,scaled max_answer)
{if(n<0)
{negate(x);negate(n);
}
if(n==0)return y;
else if(((x<=(max_answer-y)/n)&&(-x<=(max_answer+y)/n)))
return n*x+y;
else{arith_error= true;return 0;
}
}

/*:105*//*106:*/
#line 2292 "tex.w"
scaled x_over_n(scaled x,int n)
{bool negative;
scaled x_over_n;negative= false;
if(n==0)
{arith_error= true;x_over_n= 0;rem= x;
}
else{if(n<0)
{negate(x);negate(n);negative= true;
}
if(x>=0)
{x_over_n= x/n;rem= x%n;
}
else{x_over_n= -((-x)/n);rem= -((-x)%n);
}
}
if(negative)negate(rem);
return x_over_n;}

/*:106*//*107:*/
#line 2317 "tex.w"
scaled xn_over_d(scaled x,int n,int d)
{bool positive;
nonnegative_integer t,u,v;
scaled xn_over_d;if(x>=0)positive= true;
else{negate(x);positive= false;
}
t= (x%0100000)*n;
u= (x/0100000)*n+(t/0100000);
v= (u%d)*0100000+(t%0100000);
if(u/d>=0100000)arith_error= true;
else u= 0100000*(u/d)+(v/d);
if(positive)
{xn_over_d= u;rem= v%d;
}
else{xn_over_d= -u;rem= -(v%d);
}
return xn_over_d;}

/*:107*//*108:*/
#line 2355 "tex.w"
halfword badness(scaled t,scaled s)
{int r;

if(t==0)return 0;
else if(s<=0)return inf_bad;
else{if(t<=7230584)r= (t*297)/s;
else if(s>=1663497)r= t/(s/297);
else r= t;
if(r> 1290)return inf_bad;
else return(r*r*r+0400000)/01000000;
}
}

/*:108*//*114:*/
#line 2524 "tex.w"

#ifdef DEBUG
void print_word(memory_word w)

{print_int(w.i);print_char(' ');
print_scaled(w.sc);print_char(' ');
print_scaled(round(unity*float(w.gr)));print_ln();

print_int(w.hh.lh);print_char('=');print_int(w.hh.b0);print_char(':');
print_int(w.hh.b1);print_char(';');print_int(w.hh.rh);print_char(' ');
print_int(w.qqqq.b0);print_char(':');print_int(w.qqqq.b1);print_char(':');
print_int(w.qqqq.b2);print_char(':');print_int(w.qqqq.b3);
}
#endif

/*:114*//*119:*/
#line 2633 "tex.w"
/*292:*/
#line 6322 "tex.w"

void show_token_list(int p,int q,int l)
{
int m,c;
ASCII_code match_chr;
ASCII_code n;
match_chr= '#';n= '0';tally= 0;
while((p!=null)&&(tally<l))
{if(p==q)/*320:*/
#line 7002 "tex.w"
set_trick_count

/*:320*/
#line 6330 "tex.w"
;
/*293:*/
#line 6339 "tex.w"

if((p<hi_mem_min)||(p> mem_end))
{print_esc(/*1386:*/
#line 25054 "tex.w"
261
/*:1386*/
#line 6341 "tex.w"
);return;

}
if(info(p)>=cs_token_flag)print_cs(info(p)-cs_token_flag);
else{m= info(p)/0400;c= info(p)%0400;
if(info(p)<0)print_esc(/*1567:*/
#line 25597 "tex.w"
442
/*:1567*/
#line 6346 "tex.w"
);

else/*294:*/
#line 6355 "tex.w"

switch(m){
case left_brace:case right_brace:case math_shift:case tab_mark:case sup_mark:case sub_mark:case spacer:
case letter:case other_char:print(c);break;
case mac_param:{print(c);print(c);
}break;
case out_param:{print(match_chr);
if(c<=9)print_char(c+'0');
else{print_char('!');return;
}
}break;
case match:{match_chr= c;print(c);incr(n);print_char(n);
if(n> '9')return;
}break;
case end_match:print_str("->");break;

default:print_esc(/*1567:*/
#line 25597 "tex.w"
442
/*:1567*/
#line 6371 "tex.w"
);

}

/*:294*/
#line 6348 "tex.w"
;
}

/*:293*/
#line 6331 "tex.w"
;
p= link(p);
}
if(p!=null)print_esc(/*1566:*/
#line 25594 "tex.w"
441
/*:1566*/
#line 6334 "tex.w"
);


}

/*:292*/
#line 2633 "tex.w"

/*306:*/
#line 6673 "tex.w"

void runaway(void)
{pointer p;
if(scanner_status> skipping)
{print_nl("Runaway ");

switch(scanner_status){
case defining:{print_str("definition");p= def_ref;
}break;
case matching:{print_str("argument");p= temp_head;
}break;
case aligning:{print_str("preamble");p= hold_head;
}break;
case absorbing:{print_str("text");p= def_ref;
}
}
print_char('?');print_ln();show_token_list(link(p),null,error_line-10);
}
}

/*:306*/
#line 2634 "tex.w"


/*:119*//*120:*/
#line 2645 "tex.w"
pointer get_avail(void)
{pointer p;
p= avail;
if(p!=null)avail= link(avail);
else if(mem_end<mem_max)
{incr(mem_end);p= mem_end;
}
else{decr(hi_mem_min);p= hi_mem_min;
if(hi_mem_min<=lo_mem_max)
{runaway();
overflow("main memory size",mem_max+1-mem_min);


}
}
link(p)= null;
incr_dyn_used;
return p;
}

/*:120*//*123:*/
#line 2691 "tex.w"
void flush_list(pointer p)

{pointer q,r;
if(p!=null)
{r= p;
do{q= r;r= link(r);
decr_dyn_used;
}while(!(r==null));
link(q)= avail;avail= p;
}
}

/*:123*//*125:*/
#line 2736 "tex.w"
pointer get_node(int s)
{
pointer p;
pointer q;
int r;
int t;
restart:p= rover;
do{/*127:*/
#line 2786 "tex.w"

q= p+node_size(p);

while(is_empty(q))
{t= rlink(q);
if(q==rover)rover= t;
llink(t)= llink(q);rlink(llink(q))= t;
q= q+node_size(q);
}
r= q-s;
if(r> p+1)/*128:*/
#line 2801 "tex.w"

{node_size(p)= r-p;

rover= p;
goto found;
}

/*:128*/
#line 2796 "tex.w"
;
if(r==p)if(rlink(p)!=p)
/*129:*/
#line 2810 "tex.w"

{rover= rlink(p);t= llink(p);
llink(rover)= t;rlink(t)= rover;
goto found;
}

/*:129*/
#line 2798 "tex.w"
;
node_size(p)= q-p

/*:127*/
#line 2744 "tex.w"
;

p= rlink(p);
}while(!(p==rover));
if(s==010000000000)
{return max_halfword;
}
if(lo_mem_max+2<hi_mem_min)if(lo_mem_max+2<=mem_bot+max_halfword)
/*126:*/
#line 2771 "tex.w"

{if(hi_mem_min-lo_mem_max>=1998)t= lo_mem_max+1000;
else t= lo_mem_max+1+(hi_mem_min-lo_mem_max)/2;

p= llink(rover);q= lo_mem_max;rlink(p)= q;llink(rover)= q;
if(t> mem_bot+max_halfword)t= mem_bot+max_halfword;
rlink(q)= rover;llink(q)= p;link(q)= empty_flag;node_size(q)= t-lo_mem_max;
lo_mem_max= t;link(lo_mem_max)= null;info(lo_mem_max)= null;
rover= q;goto restart;
}

/*:126*/
#line 2752 "tex.w"
;
overflow("main memory size",mem_max+1-mem_min);


found:link(r)= null;
#ifdef STAT
var_used= var_used+s;
#endif

return r;
}

/*:125*//*130:*/
#line 2821 "tex.w"
void free_node(pointer p,halfword s)

{pointer q;
node_size(p)= s;link(p)= empty_flag;
q= llink(rover);llink(p)= q;rlink(p)= rover;
llink(rover)= p;rlink(q)= p;
#ifdef STAT
var_used= var_used-s;
#endif

}

/*:130*//*131:*/
#line 2838 "tex.w"

#ifdef INIT
void sort_avail(void)

{pointer p,q,r;
pointer old_rover;
p= get_node(010000000000);
p= rlink(rover);rlink(rover)= max_halfword;old_rover= rover;
while(p!=old_rover)/*132:*/
#line 2860 "tex.w"

if(p<rover)
{q= p;p= rlink(q);rlink(q)= rover;rover= q;
}
else{q= rover;
while(rlink(q)<p)q= rlink(q);
r= rlink(p);rlink(p)= rlink(q);rlink(q)= p;p= r;
}

/*:132*/
#line 2847 "tex.w"
;
p= rover;
while(rlink(p)!=max_halfword)
{llink(rlink(p))= p;p= rlink(p);
}
rlink(p)= rover;llink(rover)= p;
}
#endif

/*:131*//*136:*/
#line 2969 "tex.w"
pointer new_null_box(void)
{pointer p;
p= get_node(box_node_size);type(p)= hlist_node;
subtype(p)= min_quarterword;
width(p)= 0;depth(p)= 0;height(p)= 0;shift_amount(p)= 0;list_ptr(p)= null;
glue_sign(p)= normal;glue_order(p)= normal;set_glue_ratio_zero(glue_set(p));
return p;
}

/*:136*//*139:*/
#line 2999 "tex.w"
pointer new_rule(void)
{pointer p;
p= get_node(rule_node_size);type(p)= rule_node;
subtype(p)= 0;
width(p)= null_flag;depth(p)= null_flag;height(p)= null_flag;
return p;
}

/*:139*//*144:*/
#line 3068 "tex.w"
pointer new_ligature(quarterword f,quarterword c,pointer q)
{pointer p;
p= get_node(small_node_size);type(p)= ligature_node;
font(lig_char(p))= f;character(lig_char(p))= c;lig_ptr(p)= q;
subtype(p)= 0;return p;
}

pointer new_lig_item(quarterword c)
{pointer p;
p= get_node(small_node_size);character(p)= c;lig_ptr(p)= null;
return p;
}

/*:144*//*145:*/
#line 3103 "tex.w"
pointer new_disc(void)
{pointer p;
p= get_node(small_node_size);type(p)= disc_node;
replace_count(p)= 0;pre_break(p)= null;post_break(p)= null;
return p;
}

/*:145*//*147:*/
#line 3137 "tex.w"
pointer new_math(scaled w,small_number s)
{pointer p;
p= get_node(small_node_size);type(p)= math_node;
subtype(p)= s;width(p)= w;return p;
}

/*:147*//*151:*/
#line 3219 "tex.w"
pointer new_spec(pointer p)
{pointer q;
q= get_node(glue_spec_size);
mem[q]= mem[p];glue_ref_count(q)= null;
width(q)= width(p);stretch(q)= stretch(p);shrink(q)= shrink(p);
return q;
}

/*:151*//*152:*/
#line 3232 "tex.w"
pointer new_param_glue(small_number n)
{pointer p;
pointer q;
p= get_node(small_node_size);type(p)= glue_node;subtype(p)= n+1;
leader_ptr(p)= null;
q= /*224:*/
#line 4665 "tex.w"
glue_par(n)

/*:224*/
#line 3237 "tex.w"
;
glue_ptr(p)= q;incr(glue_ref_count(q));
return p;
}

/*:152*//*153:*/
#line 3245 "tex.w"
pointer new_glue(pointer q)
{pointer p;
p= get_node(small_node_size);type(p)= glue_node;subtype(p)= normal;
leader_ptr(p)= null;glue_ptr(p)= q;incr(glue_ref_count(q));
return p;
}

/*:153*//*154:*/
#line 3259 "tex.w"
pointer new_skip_param(small_number n)
{pointer p;
temp_ptr= new_spec(/*224:*/
#line 4665 "tex.w"
glue_par(n)

/*:224*/
#line 3261 "tex.w"
);
p= new_glue(temp_ptr);glue_ref_count(temp_ptr)= null;subtype(p)= n+1;
return p;
}

/*:154*//*156:*/
#line 3283 "tex.w"
pointer new_kern(scaled w)
{pointer p;
p= get_node(small_node_size);type(p)= kern_node;
subtype(p)= normal;
width(p)= w;
return p;
}

/*:156*//*158:*/
#line 3306 "tex.w"
pointer new_penalty(int m)
{pointer p;
p= get_node(small_node_size);type(p)= penalty_node;
subtype(p)= 0;
penalty(p)= m;return p;
}

/*:158*//*167:*/
#line 3449 "tex.w"

#ifdef DEBUG
void check_mem(bool print_locs)
{
pointer p,q;
bool clobbered;
for(p= mem_min;p<=lo_mem_max;p++)is_free[p]= false;

for(p= hi_mem_min;p<=mem_end;p++)is_free[p]= false;
/*168:*/
#line 3469 "tex.w"

p= avail;q= null;clobbered= false;
while(p!=null)
{if((p> mem_end)||(p<hi_mem_min))clobbered= true;
else if(is_free[p])clobbered= true;
if(clobbered)
{print_nl("AVAIL list clobbered at ");

print_int(q);goto done1;
}
is_free[p]= true;q= p;p= link(q);
}
done1:

/*:168*/
#line 3458 "tex.w"
;
/*169:*/
#line 3483 "tex.w"

p= rover;q= null;clobbered= false;
do{if((p>=lo_mem_max)||(p<mem_min))clobbered= true;
else if((rlink(p)>=lo_mem_max)||(rlink(p)<mem_min))clobbered= true;
else if(!(is_empty(p))||(node_size(p)<2)||
(p+node_size(p)> lo_mem_max)||(llink(rlink(p))!=p))clobbered= true;
if(clobbered)
{print_nl("Double-AVAIL list clobbered at ");
print_int(q);goto done2;
}
for(q= p;q<=p+node_size(p)-1;q++)
{if(is_free[q])
{print_nl("Doubly free location at ");

print_int(q);goto done2;
}
is_free[q]= true;
}
q= p;p= rlink(p);
}while(!(p==rover));
done2:

/*:169*/
#line 3459 "tex.w"
;
/*170:*/
#line 3505 "tex.w"

p= mem_min;
while(p<=lo_mem_max)
{if(is_empty(p))
{print_nl("Bad flag at ");print_int(p);

}
while((p<=lo_mem_max)&&!is_free[p])incr(p);
while((p<=lo_mem_max)&&is_free[p])incr(p);
}

/*:170*/
#line 3460 "tex.w"
;
if(print_locs)/*171:*/
#line 3516 "tex.w"

{print_nl("New busy locs:");
for(p= mem_min;p<=lo_mem_max;p++)
if(!is_free[p]&&((p> was_lo_max)||was_free[p]))
{print_char(' ');print_int(p);
}
for(p= hi_mem_min;p<=mem_end;p++)
if(!is_free[p]&&
((p<was_hi_min)||(p> was_mem_end)||was_free[p]))
{print_char(' ');print_int(p);
}
}

/*:171*/
#line 3461 "tex.w"
;
for(p= mem_min;p<=lo_mem_max;p++)was_free[p]= is_free[p];
for(p= hi_mem_min;p<=mem_end;p++)was_free[p]= is_free[p];

was_mem_end= mem_end;was_lo_max= lo_mem_max;was_hi_min= hi_mem_min;
}
#endif

/*:167*//*172:*/
#line 3538 "tex.w"

#ifdef DEBUG
void search_mem(pointer p)
{int q;
for(q= mem_min;q<=lo_mem_max;q++)
{if(link(q)==p)
{print_nl("LINK(");print_int(q);print_char(')');
}
if(info(q)==p)
{print_nl("INFO(");print_int(q);print_char(')');
}
}
for(q= hi_mem_min;q<=mem_end;q++)
{if(link(q)==p)
{print_nl("LINK(");print_int(q);print_char(')');
}
if(info(q)==p)
{print_nl("INFO(");print_int(q);print_char(')');
}
}
/*255:*/
#line 5513 "tex.w"

for(q= active_base;q<=box_base+255;q++)
{if(equiv(q)==p)
{print_nl("EQUIV(");print_int(q);print_char(')');
}
}

/*:255*/
#line 3558 "tex.w"
;
/*285:*/
#line 6172 "tex.w"

if(save_ptr> 0)for(q= 0;q<=save_ptr-1;q++)
{if(equiv_field(save_stack[q])==p)
{print_nl("SAVE(");print_int(q);print_char(')');
}
}

/*:285*/
#line 3559 "tex.w"
;
/*933:*/
#line 18262 "tex.w"

for(q= 0;q<=hyph_size;q++)
{if(hyph_list[q]==p)
{print_nl("HYPH(");print_int(q);print_char(')');
}
}

/*:933*/
#line 3560 "tex.w"
;
}
#endif

/*:172*//*174:*/
#line 3588 "tex.w"
void short_display(int p)
{int n;
while(p> mem_min)
{if(is_char_node(p))
{if(p<=mem_end)
{if(font(p)!=font_in_short_display)
{if((font(p)<font_base)||(font(p)> font_max))
print_char('*');

else/*267:*/
#line 5855 "tex.w"

print_esc(font_id_text(font(p)))

/*:267*/
#line 3597 "tex.w"
;
print_char(' ');font_in_short_display= font(p);
}
print_ASCII(qo(character(p)));
}
}
else/*175:*/
#line 3608 "tex.w"

switch(type(p)){
case hlist_node:case vlist_node:case ins_node:case whatsit_node:case mark_node:case adjust_node:
case unset_node:print_str("[]");break;
case rule_node:print_char('|');break;
case glue_node:if(glue_ptr(p)!=zero_glue)print_char(' ');break;
case math_node:print_char('$');break;
case ligature_node:short_display(lig_ptr(p));break;
case disc_node:{short_display(pre_break(p));
short_display(post_break(p));
n= replace_count(p);
while(n> 0)
{if(link(p)!=null)p= link(p);
decr(n);
}
}break;
default:do_nothing;
}

/*:175*/
#line 3603 "tex.w"
;
p= link(p);
}
}

/*:174*//*176:*/
#line 3631 "tex.w"
void print_font_and_char(int p)
{if(p> mem_end)print_esc(/*1386:*/
#line 25054 "tex.w"
261
/*:1386*/
#line 3632 "tex.w"
);
else{if((font(p)<font_base)||(font(p)> font_max))print_char('*');

else/*267:*/
#line 5855 "tex.w"

print_esc(font_id_text(font(p)))

/*:267*/
#line 3635 "tex.w"
;
print_char(' ');print_ASCII(qo(character(p)));
}
}

void print_mark(int p)
{print_char('{');
if((p<hi_mem_min)||(p> mem_end))print_esc(/*1386:*/
#line 25054 "tex.w"
261
/*:1386*/
#line 3642 "tex.w"
);
else show_token_list(link(p),null,max_print_line-10);
print_char('}');
}

void print_rule_dimen(scaled d)
{if(is_running(d))print_char('*');else print_scaled(d);

}

/*:176*//*177:*/
#line 3655 "tex.w"
void print_glue(scaled d,int order,str_number s)

{print_scaled(d);
if((order<normal)||(order> filll))print_str("foul");
else if(order> normal)
{print_str("fil");
while(order> fil)
{print_char('l');decr(order);
}
}
else if(s!=0)print(s);
}

/*:177*//*178:*/
#line 3670 "tex.w"
void print_spec(int p,str_number s)

{if((p<mem_min)||(p>=lo_mem_max))print_char('*');

else{print_scaled(width(p));
if(s!=0)print(s);
if(stretch(p)!=0)
{print_str(" plus ");print_glue(stretch(p),stretch_order(p),s);
}
if(shrink(p)!=0)
{print_str(" minus ");print_glue(shrink(p),shrink_order(p),s);
}
}
}

/*:178*//*179:*/
#line 3688 "tex.w"
/*691:*/
#line 13645 "tex.w"

void print_fam_and_char(pointer p)
{print_esc(/*1490:*/
#line 25366 "tex.w"
365
/*:1490*/
#line 13647 "tex.w"
);print_int(fam(p));print_char(' ');
print_ASCII(qo(character(p)));
}

void print_delimiter(pointer p)
{int a;
a= small_fam(p)*256+qo(small_char(p));
a= a*0x1000+large_fam(p)*256+qo(large_char(p));
if(a<0)print_int(a);
else print_hex(a);
}

/*:691*//*692:*/
#line 13666 "tex.w"

void show_info(void);
void print_subsidiary_data(pointer p,ASCII_code c)

{if(cur_length>=depth_threshold)
{if(math_type(p)!=empty)print_str(" []");
}
else{append_char(c);
temp_ptr= p;
switch(math_type(p)){
case math_char:{print_ln();print_current_string();print_fam_and_char(p);
}break;
case sub_box:show_info();break;
case sub_mlist:if(info(p)==null)
{print_ln();print_current_string();print_str("{}");
}
else show_info();break;
default:do_nothing;
}
flush_char;
}
}

/*:692*//*694:*/
#line 13703 "tex.w"

void print_style(int c)
{switch(c/2){
case 0:print_esc(/*1645:*/
#line 25831 "tex.w"
520
/*:1645*/
#line 13706 "tex.w"
);break;
case 1:print_esc(/*1646:*/
#line 25834 "tex.w"
521
/*:1646*/
#line 13707 "tex.w"
);break;
case 2:print_esc(/*1647:*/
#line 25837 "tex.w"
522
/*:1647*/
#line 13708 "tex.w"
);break;
case 3:print_esc(/*1648:*/
#line 25840 "tex.w"
523
/*:1648*/
#line 13709 "tex.w"
);break;
default:print_str("Unknown style!");
}
}

/*:694*/
#line 3688 "tex.w"

/*225:*/
#line 4671 "tex.w"

void print_skip_param(int n)
{switch(n){
case line_skip_code:print_esc(/*1405:*/
#line 25111 "tex.w"
280
/*:1405*/
#line 4674 "tex.w"
);break;
case baseline_skip_code:print_esc(/*1406:*/
#line 25114 "tex.w"
281
/*:1406*/
#line 4675 "tex.w"
);break;
case par_skip_code:print_esc(/*1407:*/
#line 25117 "tex.w"
282
/*:1407*/
#line 4676 "tex.w"
);break;
case above_display_skip_code:print_esc(/*1408:*/
#line 25120 "tex.w"
283
/*:1408*/
#line 4677 "tex.w"
);break;
case below_display_skip_code:print_esc(/*1409:*/
#line 25123 "tex.w"
284
/*:1409*/
#line 4678 "tex.w"
);break;
case above_display_short_skip_code:print_esc(/*1410:*/
#line 25126 "tex.w"
285
/*:1410*/
#line 4679 "tex.w"
);break;
case below_display_short_skip_code:print_esc(/*1411:*/
#line 25129 "tex.w"
286
/*:1411*/
#line 4680 "tex.w"
);break;
case left_skip_code:print_esc(/*1412:*/
#line 25132 "tex.w"
287
/*:1412*/
#line 4681 "tex.w"
);break;
case right_skip_code:print_esc(/*1413:*/
#line 25135 "tex.w"
288
/*:1413*/
#line 4682 "tex.w"
);break;
case top_skip_code:print_esc(/*1414:*/
#line 25138 "tex.w"
289
/*:1414*/
#line 4683 "tex.w"
);break;
case split_top_skip_code:print_esc(/*1415:*/
#line 25141 "tex.w"
290
/*:1415*/
#line 4684 "tex.w"
);break;
case tab_skip_code:print_esc(/*1416:*/
#line 25144 "tex.w"
291
/*:1416*/
#line 4685 "tex.w"
);break;
case space_skip_code:print_esc(/*1417:*/
#line 25147 "tex.w"
292
/*:1417*/
#line 4686 "tex.w"
);break;
case xspace_skip_code:print_esc(/*1418:*/
#line 25150 "tex.w"
293
/*:1418*/
#line 4687 "tex.w"
);break;
case par_fill_skip_code:print_esc(/*1419:*/
#line 25153 "tex.w"
294
/*:1419*/
#line 4688 "tex.w"
);break;
case thin_mu_skip_code:print_esc(/*1420:*/
#line 25156 "tex.w"
295
/*:1420*/
#line 4689 "tex.w"
);break;
case med_mu_skip_code:print_esc(/*1421:*/
#line 25159 "tex.w"
296
/*:1421*/
#line 4690 "tex.w"
);break;
case thick_mu_skip_code:print_esc(/*1422:*/
#line 25162 "tex.w"
297
/*:1422*/
#line 4691 "tex.w"
);break;
default:print_str("[unknown glue parameter!]");
}
}

/*:225*/
#line 3689 "tex.w"


/*:179*//*182:*/
#line 3726 "tex.w"
void show_node_list(int p)
{
int n;
double g;
if(cur_length> depth_threshold)
{if(p> null)print_str(" []");

return;
}
n= 0;
while(p> mem_min)
{print_ln();print_current_string();
if(p> mem_end)
{print_str("Bad link, display aborted.");return;

}
incr(n);if(n> breadth_max)
{print_str("etc.");return;

}
/*183:*/
#line 3752 "tex.w"

if(is_char_node(p))print_font_and_char(p);
else switch(type(p)){
case hlist_node:case vlist_node:case unset_node:/*184:*/
#line 3771 "tex.w"

{if(type(p)==hlist_node)print_esc('h');
else if(type(p)==vlist_node)print_esc('v');
else print_esc(/*1388:*/
#line 25060 "tex.w"
263
/*:1388*/
#line 3774 "tex.w"
);
print_str("box(");print_scaled(height(p));print_char('+');
print_scaled(depth(p));print_str(")x");print_scaled(width(p));
if(type(p)==unset_node)
/*185:*/
#line 3787 "tex.w"

{if(span_count(p)!=min_quarterword)
{print_str(" (");print_int(qo(span_count(p))+1);
print_str(" columns)");
}
if(glue_stretch(p)!=0)
{print_str(", stretch ");print_glue(glue_stretch(p),glue_order(p),0);
}
if(glue_shrink(p)!=0)
{print_str(", shrink ");print_glue(glue_shrink(p),glue_sign(p),0);
}
}

/*:185*/
#line 3778 "tex.w"

else{/*186:*/
#line 3810 "tex.w"

g= float(glue_set(p));
if((g!=float_constant(0))&&(glue_sign(p)!=normal))
{print_str(", glue set ");
if(glue_sign(p)==shrinking)print_str("- ");
if(abs(mem[p+glue_offset].i)<04000000)print_str("?.?");
else if(abs(g)> float_constant(20000))
{if(g> float_constant(0))print_char('>');
else print_str("< -");
print_glue(20000*unity,glue_order(p),0);
}
else print_glue(round(unity*g),glue_order(p),0);

}

/*:186*/
#line 3779 "tex.w"
;
if(shift_amount(p)!=0)
{print_str(", shifted ");print_scaled(shift_amount(p));
}
}
node_list_display(list_ptr(p));
}

/*:184*/
#line 3755 "tex.w"
break;
case rule_node:/*187:*/
#line 3825 "tex.w"

{print_esc(/*1389:*/
#line 25063 "tex.w"
264
/*:1389*/
#line 3826 "tex.w"
);print_rule_dimen(height(p));print_char('+');
print_rule_dimen(depth(p));print_str(")x");print_rule_dimen(width(p));
}

/*:187*/
#line 3756 "tex.w"
break;
case ins_node:/*188:*/
#line 3830 "tex.w"

{print_esc(/*1390:*/
#line 25066 "tex.w"
265
/*:1390*/
#line 3831 "tex.w"
);print_int(qo(subtype(p)));
print_str(", natural size ");print_scaled(height(p));
print_str("; split(");print_spec(split_top_ptr(p),0);
print_char(',');print_scaled(depth(p));
print_str("); float cost ");print_int(float_cost(p));
node_list_display(ins_ptr(p));
}

/*:188*/
#line 3757 "tex.w"
break;
case whatsit_node:/*1356:*/
#line 24746 "tex.w"

switch(subtype(p)){
case open_node:{print_write_whatsit(/*1783:*/
#line 26245 "tex.w"
658
/*:1783*/
#line 24748 "tex.w"
,p);
print_char('=');print_file_name(open_name(p),open_area(p),open_ext(p));
}break;
case write_node:{print_write_whatsit(/*1568:*/
#line 25600 "tex.w"
443
/*:1568*/
#line 24751 "tex.w"
,p);
print_mark(write_tokens(p));
}break;
case close_node:print_write_whatsit(/*1784:*/
#line 26248 "tex.w"
659
/*:1784*/
#line 24754 "tex.w"
,p);break;
case special_node:{print_esc(/*1785:*/
#line 26251 "tex.w"
660
/*:1785*/
#line 24755 "tex.w"
);
print_mark(write_tokens(p));
}break;
case language_node:{print_esc(/*1787:*/
#line 26257 "tex.w"
662
/*:1787*/
#line 24758 "tex.w"
);
print_int(what_lang(p));print_str(" (hyphenmin ");
print_int(what_lhm(p));print_char(',');
print_int(what_rhm(p));print_char(')');
}break;
default:print_str("whatsit?");
}

/*:1356*/
#line 3758 "tex.w"
break;
case glue_node:/*189:*/
#line 3839 "tex.w"

if(subtype(p)>=a_leaders)/*190:*/
#line 3857 "tex.w"

{print_esc(empty_string);
if(subtype(p)==c_leaders)print_char('c');
else if(subtype(p)==x_leaders)print_char('x');
print_str("leaders ");print_spec(glue_ptr(p),0);
node_list_display(leader_ptr(p));
}

/*:190*/
#line 3840 "tex.w"

else{print_esc(/*1391:*/
#line 25069 "tex.w"
266
/*:1391*/
#line 3841 "tex.w"
);
if(subtype(p)!=normal)
{print_char('(');
if(subtype(p)<cond_math_glue)
print_skip_param(subtype(p)-1);
else if(subtype(p)==cond_math_glue)print_esc(/*1392:*/
#line 25072 "tex.w"
267
/*:1392*/
#line 3846 "tex.w"
);
else print_esc(/*1393:*/
#line 25075 "tex.w"
268
/*:1393*/
#line 3847 "tex.w"
);
print_char(')');
}
if(subtype(p)!=cond_math_glue)
{print_char(' ');
if(subtype(p)<cond_math_glue)print_spec(glue_ptr(p),0);
else print_spec(glue_ptr(p),/*1394:*/
#line 25078 "tex.w"
269
/*:1394*/
#line 3853 "tex.w"
);
}
}

/*:189*/
#line 3759 "tex.w"
break;
case kern_node:/*191:*/
#line 3867 "tex.w"

if(subtype(p)!=mu_glue)
{print_esc(/*1396:*/
#line 25084 "tex.w"
271
/*:1396*/
#line 3869 "tex.w"
);
if(subtype(p)!=normal)print_char(' ');
print_scaled(width(p));
if(subtype(p)==acc_kern)print_str(" (for accent)");

}
else{print_esc(/*1397:*/
#line 25087 "tex.w"
272
/*:1397*/
#line 3875 "tex.w"
);print_scaled(width(p));print_str("mu");
}

/*:191*/
#line 3760 "tex.w"
break;
case math_node:/*192:*/
#line 3878 "tex.w"

{print_esc(/*1398:*/
#line 25090 "tex.w"
273
/*:1398*/
#line 3879 "tex.w"
);
if(subtype(p)==before)print_str("on");
else print_str("off");
if(width(p)!=0)
{print_str(", surrounded ");print_scaled(width(p));
}
}

/*:192*/
#line 3761 "tex.w"
break;
case ligature_node:/*193:*/
#line 3887 "tex.w"

{print_font_and_char(lig_char(p));print_str(" (ligature ");
if(subtype(p)> 1)print_char('|');
font_in_short_display= font(lig_char(p));short_display(lig_ptr(p));
if(odd(subtype(p)))print_char('|');
print_char(')');
}

/*:193*/
#line 3762 "tex.w"
break;
case penalty_node:/*194:*/
#line 3895 "tex.w"

{print_esc(/*1399:*/
#line 25093 "tex.w"
274
/*:1399*/
#line 3896 "tex.w"
);print_int(penalty(p));
}

/*:194*/
#line 3763 "tex.w"
break;
case disc_node:/*195:*/
#line 3902 "tex.w"

{print_esc(/*1400:*/
#line 25096 "tex.w"
275
/*:1400*/
#line 3903 "tex.w"
);
if(replace_count(p)> 0)
{print_str(" replacing ");print_int(replace_count(p));
}
node_list_display(pre_break(p));
append_char('|');show_node_list(post_break(p));flush_char;
}

/*:195*/
#line 3764 "tex.w"
break;
case mark_node:/*196:*/
#line 3911 "tex.w"

{print_esc(/*1401:*/
#line 25099 "tex.w"
276
/*:1401*/
#line 3912 "tex.w"
);print_mark(mark_ptr(p));
}

/*:196*/
#line 3765 "tex.w"
break;
case adjust_node:/*197:*/
#line 3915 "tex.w"

{print_esc(/*1402:*/
#line 25102 "tex.w"
277
/*:1402*/
#line 3916 "tex.w"
);node_list_display(adjust_ptr(p));
}

/*:197*/
#line 3766 "tex.w"
break;
/*690:*/
#line 13635 "tex.w"

case style_node:print_style(subtype(p));break;
case choice_node:/*695:*/
#line 13714 "tex.w"

{print_esc(/*1547:*/
#line 25537 "tex.w"
422
/*:1547*/
#line 13715 "tex.w"
);
append_char('D');show_node_list(display_mlist(p));flush_char;
append_char('T');show_node_list(text_mlist(p));flush_char;
append_char('S');show_node_list(script_mlist(p));flush_char;
append_char('s');show_node_list(script_script_mlist(p));flush_char;
}

/*:695*/
#line 13637 "tex.w"
break;
case ord_noad:case op_noad:case bin_noad:case rel_noad:case open_noad:case close_noad:case punct_noad:case inner_noad:
case radical_noad:case over_noad:case under_noad:case vcenter_noad:case accent_noad:
case left_noad:case right_noad:/*696:*/
#line 13722 "tex.w"

{switch(type(p)){
case ord_noad:print_esc(/*1649:*/
#line 25843 "tex.w"
524
/*:1649*/
#line 13724 "tex.w"
);break;
case op_noad:print_esc(/*1650:*/
#line 25846 "tex.w"
525
/*:1650*/
#line 13725 "tex.w"
);break;
case bin_noad:print_esc(/*1651:*/
#line 25849 "tex.w"
526
/*:1651*/
#line 13726 "tex.w"
);break;
case rel_noad:print_esc(/*1652:*/
#line 25852 "tex.w"
527
/*:1652*/
#line 13727 "tex.w"
);break;
case open_noad:print_esc(/*1653:*/
#line 25855 "tex.w"
528
/*:1653*/
#line 13728 "tex.w"
);break;
case close_noad:print_esc(/*1654:*/
#line 25858 "tex.w"
529
/*:1654*/
#line 13729 "tex.w"
);break;
case punct_noad:print_esc(/*1655:*/
#line 25861 "tex.w"
530
/*:1655*/
#line 13730 "tex.w"
);break;
case inner_noad:print_esc(/*1656:*/
#line 25864 "tex.w"
531
/*:1656*/
#line 13731 "tex.w"
);break;
case over_noad:print_esc(/*1657:*/
#line 25867 "tex.w"
532
/*:1657*/
#line 13732 "tex.w"
);break;
case under_noad:print_esc(/*1658:*/
#line 25870 "tex.w"
533
/*:1658*/
#line 13733 "tex.w"
);break;
case vcenter_noad:print_esc(/*1561:*/
#line 25579 "tex.w"
436
/*:1561*/
#line 13734 "tex.w"
);break;
case radical_noad:{print_esc(/*1555:*/
#line 25561 "tex.w"
430
/*:1555*/
#line 13735 "tex.w"
);print_delimiter(left_delimiter(p));
}break;
case accent_noad:{print_esc(/*1530:*/
#line 25486 "tex.w"
405
/*:1530*/
#line 13737 "tex.w"
);print_fam_and_char(accent_chr(p));
}break;
case left_noad:{print_esc(/*1659:*/
#line 25873 "tex.w"
534
/*:1659*/
#line 13739 "tex.w"
);print_delimiter(delimiter(p));
}break;
case right_noad:{print_esc(/*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 13741 "tex.w"
);print_delimiter(delimiter(p));
}
}
if(subtype(p)!=normal)
if(subtype(p)==limits)print_esc(/*1661:*/
#line 25879 "tex.w"
536
/*:1661*/
#line 13745 "tex.w"
);
else print_esc(/*1662:*/
#line 25882 "tex.w"
537
/*:1662*/
#line 13746 "tex.w"
);
if(type(p)<left_noad)print_subsidiary_data(nucleus(p),'.');
print_subsidiary_data(supscr(p),'^');
print_subsidiary_data(subscr(p),'_');
}

/*:696*/
#line 13640 "tex.w"
break;
case fraction_noad:/*697:*/
#line 13752 "tex.w"

{print_esc(/*1663:*/
#line 25885 "tex.w"
538
/*:1663*/
#line 13753 "tex.w"
);
if(thickness(p)==default_code)print_str("= default");
else print_scaled(thickness(p));
if((small_fam(left_delimiter(p))!=0)||
(small_char(left_delimiter(p))!=min_quarterword)||
(large_fam(left_delimiter(p))!=0)||
(large_char(left_delimiter(p))!=min_quarterword))
{print_str(", left-delimiter ");print_delimiter(left_delimiter(p));
}
if((small_fam(right_delimiter(p))!=0)||
(small_char(right_delimiter(p))!=min_quarterword)||
(large_fam(right_delimiter(p))!=0)||
(large_char(right_delimiter(p))!=min_quarterword))
{print_str(", right-delimiter ");print_delimiter(right_delimiter(p));
}
print_subsidiary_data(numerator(p),'\\');
print_subsidiary_data(denominator(p),'/');
}

/*:697*/
#line 13641 "tex.w"
break;

/*:690*/
#line 3767 "tex.w"

default:print_str("Unknown node type!");
}

/*:183*/
#line 3746 "tex.w"
;
p= link(p);
}

}

/*:182*//*198:*/
#line 3922 "tex.w"
void show_box(pointer p)
{/*236:*/
#line 5085 "tex.w"

depth_threshold= show_box_depth;
breadth_max= show_box_breadth

/*:236*/
#line 3923 "tex.w"
;
if(breadth_max<=0)breadth_max= 5;
if(pool_ptr+depth_threshold>=pool_size)
depth_threshold= pool_size-pool_ptr-1;

show_node_list(p);
print_ln();
}

/*:198*//*200:*/
#line 3946 "tex.w"
void delete_token_ref(pointer p)

{if(token_ref_count(p)==null)flush_list(p);
else decr(token_ref_count(p));
}

/*:200*//*201:*/
#line 3960 "tex.w"
void delete_glue_ref(pointer p)
fast_delete_glue_ref(p)

/*:201*//*202:*/
#line 3968 "tex.w"
void flush_node_list(pointer p)
{
pointer q;
while(p!=null)

{q= link(p);
if(is_char_node(p))free_avail(p)
else{switch(type(p)){
case hlist_node:case vlist_node:case unset_node:{flush_node_list(list_ptr(p));
free_node(p,box_node_size);goto done;
}
case rule_node:{free_node(p,rule_node_size);goto done;
}
case ins_node:{flush_node_list(ins_ptr(p));
delete_glue_ref(split_top_ptr(p));
free_node(p,ins_node_size);goto done;
}
case whatsit_node:/*1358:*/
#line 24780 "tex.w"

{switch(subtype(p)){
case open_node:free_node(p,open_node_size);break;
case write_node:case special_node:{delete_token_ref(write_tokens(p));
free_node(p,write_node_size);goto done;
}
case close_node:case language_node:free_node(p,small_node_size);break;
default:confusion(/*1790:*/
#line 26266 "tex.w"
665
/*:1790*/
#line 24787 "tex.w"
);

}
goto done;
}

/*:1358*/
#line 3985 "tex.w"

case glue_node:{fast_delete_glue_ref(glue_ptr(p));
if(leader_ptr(p)!=null)flush_node_list(leader_ptr(p));
}break;
case kern_node:case math_node:case penalty_node:do_nothing;break;
case ligature_node:flush_node_list(lig_ptr(p));break;
case mark_node:delete_token_ref(mark_ptr(p));break;
case disc_node:{flush_node_list(pre_break(p));
flush_node_list(post_break(p));
}break;
case adjust_node:flush_node_list(adjust_ptr(p));break;
/*698:*/
#line 13774 "tex.w"

case style_node:{free_node(p,style_node_size);goto done;
}
case choice_node:{flush_node_list(display_mlist(p));
flush_node_list(text_mlist(p));
flush_node_list(script_mlist(p));
flush_node_list(script_script_mlist(p));
free_node(p,style_node_size);goto done;
}
case ord_noad:case op_noad:case bin_noad:case rel_noad:case open_noad:case close_noad:case punct_noad:case inner_noad:
case radical_noad:case over_noad:case under_noad:case vcenter_noad:case accent_noad:
{if(math_type(nucleus(p))>=sub_box)
flush_node_list(info(nucleus(p)));
if(math_type(supscr(p))>=sub_box)
flush_node_list(info(supscr(p)));
if(math_type(subscr(p))>=sub_box)
flush_node_list(info(subscr(p)));
if(type(p)==radical_noad)free_node(p,radical_noad_size);
else if(type(p)==accent_noad)free_node(p,accent_noad_size);
else free_node(p,noad_size);
goto done;
}
case left_noad:case right_noad:{free_node(p,noad_size);goto done;
}
case fraction_noad:{flush_node_list(info(numerator(p)));
flush_node_list(info(denominator(p)));
free_node(p,fraction_noad_size);goto done;
}

/*:698*/
#line 3996 "tex.w"

default:confusion(/*1403:*/
#line 25105 "tex.w"
278
/*:1403*/
#line 3997 "tex.w"
);

}
free_node(p,small_node_size);
done:;}
p= q;
}
}

/*:202*//*204:*/
#line 4030 "tex.w"
pointer copy_node_list(pointer p)

{pointer h;
pointer q;
pointer r;
uint8_t words;
h= get_avail();q= h;
while(p!=null)
{/*205:*/
#line 4045 "tex.w"

words= 1;
if(is_char_node(p))r= get_avail();
else/*206:*/
#line 4054 "tex.w"

switch(type(p)){
case hlist_node:case vlist_node:case unset_node:{r= get_node(box_node_size);
mem[r+6]= mem[p+6];mem[r+5]= mem[p+5];
list_ptr(r)= copy_node_list(list_ptr(p));
words= 5;
}break;
case rule_node:{r= get_node(rule_node_size);words= rule_node_size;
}break;
case ins_node:{r= get_node(ins_node_size);mem[r+4]= mem[p+4];
add_glue_ref(split_top_ptr(p));
ins_ptr(r)= copy_node_list(ins_ptr(p));
words= ins_node_size-1;
}break;
case whatsit_node:/*1357:*/
#line 24766 "tex.w"

switch(subtype(p)){
case open_node:{r= get_node(open_node_size);words= open_node_size;
}break;
case write_node:case special_node:{r= get_node(write_node_size);
add_token_ref(write_tokens(p));words= write_node_size;
}break;
case close_node:case language_node:{r= get_node(small_node_size);
words= small_node_size;
}break;
default:confusion(/*1789:*/
#line 26263 "tex.w"
664
/*:1789*/
#line 24776 "tex.w"
);

}

/*:1357*/
#line 4069 "tex.w"
break;
case glue_node:{r= get_node(small_node_size);add_glue_ref(glue_ptr(p));
glue_ptr(r)= glue_ptr(p);leader_ptr(r)= copy_node_list(leader_ptr(p));
}break;
case kern_node:case math_node:case penalty_node:{r= get_node(small_node_size);
words= small_node_size;
}break;
case ligature_node:{r= get_node(small_node_size);
mem[lig_char(r)]= mem[lig_char(p)];
lig_ptr(r)= copy_node_list(lig_ptr(p));
}break;
case disc_node:{r= get_node(small_node_size);
pre_break(r)= copy_node_list(pre_break(p));
post_break(r)= copy_node_list(post_break(p));
}break;
case mark_node:{r= get_node(small_node_size);add_token_ref(mark_ptr(p));
words= small_node_size;
}break;
case adjust_node:{r= get_node(small_node_size);
adjust_ptr(r)= copy_node_list(adjust_ptr(p));
}break;
default:confusion(/*1404:*/
#line 25108 "tex.w"
279
/*:1404*/
#line 4090 "tex.w"
);

}

/*:206*/
#line 4049 "tex.w"
;
while(words> 0)
{decr(words);mem[r+words]= mem[p+words];
}

/*:205*/
#line 4038 "tex.w"
;
link(q)= r;q= r;p= link(p);
}
link(q)= null;q= link(h);free_avail(h);
return q;
}

/*:204*//*211:*/
#line 4304 "tex.w"
void print_mode(int m)
{if(m> 0)
switch(m/(max_command+1)){
case 0:print_str("vertical");break;
case 1:print_str("horizontal");break;
case 2:print_str("display math");
}
else if(m==0)print_str("no");
else switch((-m)/(max_command+1)){
case 0:print_str("internal vertical");break;
case 1:print_str("restricted horizontal");break;
case 2:print_str("math");
}
print_str(" mode");
}

/*:211*//*216:*/
#line 4418 "tex.w"
void push_nest(void)
{if(nest_ptr> max_nest_stack)
{max_nest_stack= nest_ptr;
if(nest_ptr==nest_size)overflow("semantic nest size",nest_size);

}
nest[nest_ptr]= cur_list;
incr(nest_ptr);head= get_avail();tail= head;prev_graf= 0;mode_line= line;
}

/*:216*//*217:*/
#line 4433 "tex.w"
void pop_nest(void)
{free_avail(head);decr(nest_ptr);cur_list= nest[nest_ptr];
}

/*:217*//*218:*/
#line 4439 "tex.w"
void print_totals(void);
void show_activities(void)
{int p;
int16_t m;
memory_word a;
pointer q,r;
int t;
nest[nest_ptr]= cur_list;
print_nl("");print_ln();
for(p= nest_ptr;p>=0;p--)
{m= nest[p].mode_field;a= nest[p].aux_field;
print_nl("### ");print_mode(m);
print_str(" entered at line ");print_int(abs(nest[p].ml_field));
if(m==hmode)if(nest[p].pg_field!=040600000)
{print_str(" (language");print_int(nest[p].pg_field%0200000);
print_str(":hyphenmin");print_int(nest[p].pg_field/020000000);
print_char(',');print_int((nest[p].pg_field/0200000)%0100);
print_char(')');
}
if(nest[p].ml_field<0)print_str(" (\\output routine)");
if(p==0)
{/*986:*/
#line 19296 "tex.w"

if(page_head!=page_tail)
{print_nl("### current page:");
if(output_active)print_str(" (held over for next output)");

show_box(link(page_head));
if(page_contents> empty)
{print_nl("total height ");print_totals();

print_nl(" goal height ");print_scaled(page_goal);

r= link(page_ins_head);
while(r!=page_ins_head)
{print_ln();print_esc(/*1390:*/
#line 25066 "tex.w"
265
/*:1390*/
#line 19309 "tex.w"
);t= qo(subtype(r));
print_int(t);print_str(" adds ");
if(count(t)==1000)t= height(r);
else t= x_over_n(height(r),1000)*count(t);
print_scaled(t);
if(type(r)==split_up)
{q= page_head;t= 0;
do{q= link(q);
if((type(q)==ins_node)&&(subtype(q)==subtype(r)))incr(t);
}while(!(q==broken_ins(r)));
print_str(", #");print_int(t);print_str(" might split");
}
r= link(r);
}
}
}

/*:986*/
#line 4460 "tex.w"
;
if(link(contrib_head)!=null)
print_nl("### recent contributions:");
}
show_box(link(nest[p].head_field));
/*219:*/
#line 4469 "tex.w"

switch(abs(m)/(max_command+1)){
case 0:{print_nl("prevdepth ");
if(a.sc<=ignore_depth)print_str("ignored");
else print_scaled(a.sc);
if(nest[p].pg_field!=0)
{print_str(", prevgraf ");
print_int(nest[p].pg_field);print_str(" line");
if(nest[p].pg_field!=1)print_char('s');
}
}break;
case 1:{print_nl("spacefactor ");print_int(a.hh.lh);
if(m> 0)if(a.hh.rh> 0)
{print_str(", current language ");print_int(a.hh.rh);
}
}break;
case 2:if(a.i!=null)
{print_str("this will be denominator of:");show_box(a.i);
}
}

/*:219*/
#line 4465 "tex.w"
;
}
}

/*:218*//*237:*/
#line 5091 "tex.w"
void print_param(int n)
{switch(n){
case pretolerance_code:print_esc(/*1446:*/
#line 25234 "tex.w"
321
/*:1446*/
#line 5093 "tex.w"
);break;
case tolerance_code:print_esc(/*1447:*/
#line 25237 "tex.w"
322
/*:1447*/
#line 5094 "tex.w"
);break;
case line_penalty_code:print_esc(/*1448:*/
#line 25240 "tex.w"
323
/*:1448*/
#line 5095 "tex.w"
);break;
case hyphen_penalty_code:print_esc(/*1449:*/
#line 25243 "tex.w"
324
/*:1449*/
#line 5096 "tex.w"
);break;
case ex_hyphen_penalty_code:print_esc(/*1450:*/
#line 25246 "tex.w"
325
/*:1450*/
#line 5097 "tex.w"
);break;
case club_penalty_code:print_esc(/*1451:*/
#line 25249 "tex.w"
326
/*:1451*/
#line 5098 "tex.w"
);break;
case widow_penalty_code:print_esc(/*1452:*/
#line 25252 "tex.w"
327
/*:1452*/
#line 5099 "tex.w"
);break;
case display_widow_penalty_code:print_esc(/*1453:*/
#line 25255 "tex.w"
328
/*:1453*/
#line 5100 "tex.w"
);break;
case broken_penalty_code:print_esc(/*1454:*/
#line 25258 "tex.w"
329
/*:1454*/
#line 5101 "tex.w"
);break;
case bin_op_penalty_code:print_esc(/*1455:*/
#line 25261 "tex.w"
330
/*:1455*/
#line 5102 "tex.w"
);break;
case rel_penalty_code:print_esc(/*1456:*/
#line 25264 "tex.w"
331
/*:1456*/
#line 5103 "tex.w"
);break;
case pre_display_penalty_code:print_esc(/*1457:*/
#line 25267 "tex.w"
332
/*:1457*/
#line 5104 "tex.w"
);break;
case post_display_penalty_code:print_esc(/*1458:*/
#line 25270 "tex.w"
333
/*:1458*/
#line 5105 "tex.w"
);break;
case inter_line_penalty_code:print_esc(/*1459:*/
#line 25273 "tex.w"
334
/*:1459*/
#line 5106 "tex.w"
);break;
case double_hyphen_demerits_code:print_esc(/*1460:*/
#line 25276 "tex.w"
335
/*:1460*/
#line 5107 "tex.w"
);break;
case final_hyphen_demerits_code:print_esc(/*1461:*/
#line 25279 "tex.w"
336
/*:1461*/
#line 5108 "tex.w"
);break;
case adj_demerits_code:print_esc(/*1462:*/
#line 25282 "tex.w"
337
/*:1462*/
#line 5109 "tex.w"
);break;
case mag_code:print_esc(/*1463:*/
#line 25285 "tex.w"
338
/*:1463*/
#line 5110 "tex.w"
);break;
case delimiter_factor_code:print_esc(/*1464:*/
#line 25288 "tex.w"
339
/*:1464*/
#line 5111 "tex.w"
);break;
case looseness_code:print_esc(/*1465:*/
#line 25291 "tex.w"
340
/*:1465*/
#line 5112 "tex.w"
);break;
case time_code:print_esc(/*1466:*/
#line 25294 "tex.w"
341
/*:1466*/
#line 5113 "tex.w"
);break;
case day_code:print_esc(/*1467:*/
#line 25297 "tex.w"
342
/*:1467*/
#line 5114 "tex.w"
);break;
case month_code:print_esc(/*1468:*/
#line 25300 "tex.w"
343
/*:1468*/
#line 5115 "tex.w"
);break;
case year_code:print_esc(/*1469:*/
#line 25303 "tex.w"
344
/*:1469*/
#line 5116 "tex.w"
);break;
case show_box_breadth_code:print_esc(/*1470:*/
#line 25306 "tex.w"
345
/*:1470*/
#line 5117 "tex.w"
);break;
case show_box_depth_code:print_esc(/*1471:*/
#line 25309 "tex.w"
346
/*:1471*/
#line 5118 "tex.w"
);break;
case hbadness_code:print_esc(/*1472:*/
#line 25312 "tex.w"
347
/*:1472*/
#line 5119 "tex.w"
);break;
case vbadness_code:print_esc(/*1473:*/
#line 25315 "tex.w"
348
/*:1473*/
#line 5120 "tex.w"
);break;
case pausing_code:print_esc(/*1474:*/
#line 25318 "tex.w"
349
/*:1474*/
#line 5121 "tex.w"
);break;
case tracing_online_code:print_esc(/*1475:*/
#line 25321 "tex.w"
350
/*:1475*/
#line 5122 "tex.w"
);break;
case tracing_macros_code:print_esc(/*1476:*/
#line 25324 "tex.w"
351
/*:1476*/
#line 5123 "tex.w"
);break;
case tracing_stats_code:print_esc(/*1477:*/
#line 25327 "tex.w"
352
/*:1477*/
#line 5124 "tex.w"
);break;
case tracing_paragraphs_code:print_esc(/*1478:*/
#line 25330 "tex.w"
353
/*:1478*/
#line 5125 "tex.w"
);break;
case tracing_pages_code:print_esc(/*1479:*/
#line 25333 "tex.w"
354
/*:1479*/
#line 5126 "tex.w"
);break;
case tracing_output_code:print_esc(/*1480:*/
#line 25336 "tex.w"
355
/*:1480*/
#line 5127 "tex.w"
);break;
case tracing_lost_chars_code:print_esc(/*1481:*/
#line 25339 "tex.w"
356
/*:1481*/
#line 5128 "tex.w"
);break;
case tracing_commands_code:print_esc(/*1482:*/
#line 25342 "tex.w"
357
/*:1482*/
#line 5129 "tex.w"
);break;
case tracing_restores_code:print_esc(/*1483:*/
#line 25345 "tex.w"
358
/*:1483*/
#line 5130 "tex.w"
);break;
case uc_hyph_code:print_esc(/*1484:*/
#line 25348 "tex.w"
359
/*:1484*/
#line 5131 "tex.w"
);break;
case output_penalty_code:print_esc(/*1485:*/
#line 25351 "tex.w"
360
/*:1485*/
#line 5132 "tex.w"
);break;
case max_dead_cycles_code:print_esc(/*1486:*/
#line 25354 "tex.w"
361
/*:1486*/
#line 5133 "tex.w"
);break;
case hang_after_code:print_esc(/*1487:*/
#line 25357 "tex.w"
362
/*:1487*/
#line 5134 "tex.w"
);break;
case floating_penalty_code:print_esc(/*1488:*/
#line 25360 "tex.w"
363
/*:1488*/
#line 5135 "tex.w"
);break;
case global_defs_code:print_esc(/*1489:*/
#line 25363 "tex.w"
364
/*:1489*/
#line 5136 "tex.w"
);break;
case cur_fam_code:print_esc(/*1490:*/
#line 25366 "tex.w"
365
/*:1490*/
#line 5137 "tex.w"
);break;
case escape_char_code:print_esc(/*1491:*/
#line 25369 "tex.w"
366
/*:1491*/
#line 5138 "tex.w"
);break;
case default_hyphen_char_code:print_esc(/*1492:*/
#line 25372 "tex.w"
367
/*:1492*/
#line 5139 "tex.w"
);break;
case default_skew_char_code:print_esc(/*1493:*/
#line 25375 "tex.w"
368
/*:1493*/
#line 5140 "tex.w"
);break;
case end_line_char_code:print_esc(/*1494:*/
#line 25378 "tex.w"
369
/*:1494*/
#line 5141 "tex.w"
);break;
case new_line_char_code:print_esc(/*1495:*/
#line 25381 "tex.w"
370
/*:1495*/
#line 5142 "tex.w"
);break;
case language_code:print_esc(/*1496:*/
#line 25384 "tex.w"
371
/*:1496*/
#line 5143 "tex.w"
);break;
case left_hyphen_min_code:print_esc(/*1497:*/
#line 25387 "tex.w"
372
/*:1497*/
#line 5144 "tex.w"
);break;
case right_hyphen_min_code:print_esc(/*1498:*/
#line 25390 "tex.w"
373
/*:1498*/
#line 5145 "tex.w"
);break;
case holding_inserts_code:print_esc(/*1499:*/
#line 25393 "tex.w"
374
/*:1499*/
#line 5146 "tex.w"
);break;
case error_context_lines_code:print_esc(/*1500:*/
#line 25396 "tex.w"
375
/*:1500*/
#line 5147 "tex.w"
);break;
default:print_str("[unknown integer parameter!]");
}
}

/*:237*//*241:*/
#line 5293 "tex.w"
void fix_date_and_time(void)
{time= 12*60;
day= 4;
month= 7;
year= 1776;
}

/*:241*//*245:*/
#line 5318 "tex.w"
void begin_diagnostic(void)
{old_setting= selector;
if((tracing_online<=0)&&(selector==term_and_log))
{decr(selector);
if(history==spotless)history= warning_issued;
}
}

void end_diagnostic(bool blank_line)

{print_nl("");
if(blank_line)print_ln();
selector= old_setting;
}

/*:245*//*247:*/
#line 5392 "tex.w"
void print_length_param(int n)
{switch(n){
case par_indent_code:print_esc(/*1503:*/
#line 25405 "tex.w"
378
/*:1503*/
#line 5394 "tex.w"
);break;
case math_surround_code:print_esc(/*1504:*/
#line 25408 "tex.w"
379
/*:1504*/
#line 5395 "tex.w"
);break;
case line_skip_limit_code:print_esc(/*1505:*/
#line 25411 "tex.w"
380
/*:1505*/
#line 5396 "tex.w"
);break;
case hsize_code:print_esc(/*1506:*/
#line 25414 "tex.w"
381
/*:1506*/
#line 5397 "tex.w"
);break;
case vsize_code:print_esc(/*1507:*/
#line 25417 "tex.w"
382
/*:1507*/
#line 5398 "tex.w"
);break;
case max_depth_code:print_esc(/*1508:*/
#line 25420 "tex.w"
383
/*:1508*/
#line 5399 "tex.w"
);break;
case split_max_depth_code:print_esc(/*1509:*/
#line 25423 "tex.w"
384
/*:1509*/
#line 5400 "tex.w"
);break;
case box_max_depth_code:print_esc(/*1510:*/
#line 25426 "tex.w"
385
/*:1510*/
#line 5401 "tex.w"
);break;
case hfuzz_code:print_esc(/*1511:*/
#line 25429 "tex.w"
386
/*:1511*/
#line 5402 "tex.w"
);break;
case vfuzz_code:print_esc(/*1512:*/
#line 25432 "tex.w"
387
/*:1512*/
#line 5403 "tex.w"
);break;
case delimiter_shortfall_code:print_esc(/*1513:*/
#line 25435 "tex.w"
388
/*:1513*/
#line 5404 "tex.w"
);break;
case null_delimiter_space_code:print_esc(/*1514:*/
#line 25438 "tex.w"
389
/*:1514*/
#line 5405 "tex.w"
);break;
case script_space_code:print_esc(/*1515:*/
#line 25441 "tex.w"
390
/*:1515*/
#line 5406 "tex.w"
);break;
case pre_display_size_code:print_esc(/*1516:*/
#line 25444 "tex.w"
391
/*:1516*/
#line 5407 "tex.w"
);break;
case display_width_code:print_esc(/*1517:*/
#line 25447 "tex.w"
392
/*:1517*/
#line 5408 "tex.w"
);break;
case display_indent_code:print_esc(/*1518:*/
#line 25450 "tex.w"
393
/*:1518*/
#line 5409 "tex.w"
);break;
case overfull_rule_code:print_esc(/*1519:*/
#line 25453 "tex.w"
394
/*:1519*/
#line 5410 "tex.w"
);break;
case hang_indent_code:print_esc(/*1520:*/
#line 25456 "tex.w"
395
/*:1520*/
#line 5411 "tex.w"
);break;
case h_offset_code:print_esc(/*1521:*/
#line 25459 "tex.w"
396
/*:1521*/
#line 5412 "tex.w"
);break;
case v_offset_code:print_esc(/*1522:*/
#line 25462 "tex.w"
397
/*:1522*/
#line 5413 "tex.w"
);break;
case emergency_stretch_code:print_esc(/*1523:*/
#line 25465 "tex.w"
398
/*:1523*/
#line 5414 "tex.w"
);break;
default:print_str("[unknown dimen parameter!]");
}
}

/*:247*//*252:*/
#line 5484 "tex.w"
/*298:*/
#line 6463 "tex.w"

void print_cmd_chr(quarterword cmd,halfword chr_code)
{switch(cmd){
case left_brace:chr_cmd("begin-group character ")break;
case right_brace:chr_cmd("end-group character ")break;
case math_shift:chr_cmd("math shift character ")break;
case mac_param:chr_cmd("macro parameter character ")break;
case sup_mark:chr_cmd("superscript character ")break;
case sub_mark:chr_cmd("subscript character ")break;
case endv:print_str("end of alignment template");break;
case spacer:chr_cmd("blank space ")break;
case letter:chr_cmd("the letter ")break;
case other_char:chr_cmd("the character ")break;
/*227:*/
#line 4740 "tex.w"

case assign_glue:case assign_mu_glue:if(chr_code<skip_base)
print_skip_param(chr_code-glue_base);
else if(chr_code<mu_skip_base)
{print_esc(/*1423:*/
#line 25165 "tex.w"
298
/*:1423*/
#line 4744 "tex.w"
);print_int(chr_code-skip_base);
}
else{print_esc(/*1424:*/
#line 25168 "tex.w"
299
/*:1424*/
#line 4746 "tex.w"
);print_int(chr_code-mu_skip_base);
}break;

/*:227*//*231:*/
#line 4841 "tex.w"

case assign_toks:if(chr_code>=toks_base)
{print_esc(/*1435:*/
#line 25201 "tex.w"
310
/*:1435*/
#line 4843 "tex.w"
);print_int(chr_code-toks_base);
}
else switch(chr_code){
case output_routine_loc:print_esc(/*1426:*/
#line 25174 "tex.w"
301
/*:1426*/
#line 4846 "tex.w"
);break;
case every_par_loc:print_esc(/*1427:*/
#line 25177 "tex.w"
302
/*:1427*/
#line 4847 "tex.w"
);break;
case every_math_loc:print_esc(/*1428:*/
#line 25180 "tex.w"
303
/*:1428*/
#line 4848 "tex.w"
);break;
case every_display_loc:print_esc(/*1429:*/
#line 25183 "tex.w"
304
/*:1429*/
#line 4849 "tex.w"
);break;
case every_hbox_loc:print_esc(/*1430:*/
#line 25186 "tex.w"
305
/*:1430*/
#line 4850 "tex.w"
);break;
case every_vbox_loc:print_esc(/*1431:*/
#line 25189 "tex.w"
306
/*:1431*/
#line 4851 "tex.w"
);break;
case every_job_loc:print_esc(/*1432:*/
#line 25192 "tex.w"
307
/*:1432*/
#line 4852 "tex.w"
);break;
case every_cr_loc:print_esc(/*1433:*/
#line 25195 "tex.w"
308
/*:1433*/
#line 4853 "tex.w"
);break;
default:print_esc(/*1434:*/
#line 25198 "tex.w"
309
/*:1434*/
#line 4854 "tex.w"
);
}break;

/*:231*//*239:*/
#line 5269 "tex.w"

case assign_int:if(chr_code<count_base)print_param(chr_code-int_base);
else{print_esc(/*1501:*/
#line 25399 "tex.w"
376
/*:1501*/
#line 5271 "tex.w"
);print_int(chr_code-count_base);
}break;

/*:239*//*249:*/
#line 5465 "tex.w"

case assign_dimen:if(chr_code<scaled_base)
print_length_param(chr_code-dimen_base);
else{print_esc(/*1524:*/
#line 25468 "tex.w"
399
/*:1524*/
#line 5468 "tex.w"
);print_int(chr_code-scaled_base);
}break;

/*:249*//*266:*/
#line 5797 "tex.w"

case accent:print_esc(/*1530:*/
#line 25486 "tex.w"
405
/*:1530*/
#line 5798 "tex.w"
);break;
case advance:print_esc(/*1531:*/
#line 25489 "tex.w"
406
/*:1531*/
#line 5799 "tex.w"
);break;
case after_assignment:print_esc(/*1532:*/
#line 25492 "tex.w"
407
/*:1532*/
#line 5800 "tex.w"
);break;
case after_group:print_esc(/*1533:*/
#line 25495 "tex.w"
408
/*:1533*/
#line 5801 "tex.w"
);break;
case assign_font_dimen:print_esc(/*1541:*/
#line 25519 "tex.w"
416
/*:1541*/
#line 5802 "tex.w"
);break;
case begin_group:print_esc(/*1534:*/
#line 25498 "tex.w"
409
/*:1534*/
#line 5803 "tex.w"
);break;
case break_penalty:print_esc(/*1553:*/
#line 25555 "tex.w"
428
/*:1553*/
#line 5804 "tex.w"
);break;
case char_num:print_esc(/*1535:*/
#line 25501 "tex.w"
410
/*:1535*/
#line 5805 "tex.w"
);break;
case cs_name:print_esc(/*1526:*/
#line 25474 "tex.w"
401
/*:1526*/
#line 5806 "tex.w"
);break;
case def_font:print_esc(/*1540:*/
#line 25516 "tex.w"
415
/*:1540*/
#line 5807 "tex.w"
);break;
case delim_num:print_esc(/*1536:*/
#line 25504 "tex.w"
411
/*:1536*/
#line 5808 "tex.w"
);break;
case divide:print_esc(/*1537:*/
#line 25507 "tex.w"
412
/*:1537*/
#line 5809 "tex.w"
);break;
case end_cs_name:print_esc(/*1527:*/
#line 25477 "tex.w"
402
/*:1527*/
#line 5810 "tex.w"
);break;
case end_group:print_esc(/*1538:*/
#line 25510 "tex.w"
413
/*:1538*/
#line 5811 "tex.w"
);break;
case ex_space:print_esc(' ');break;
case expand_after:print_esc(/*1539:*/
#line 25513 "tex.w"
414
/*:1539*/
#line 5813 "tex.w"
);break;
case halign:print_esc(/*1542:*/
#line 25522 "tex.w"
417
/*:1542*/
#line 5814 "tex.w"
);break;
case hrule:print_esc(/*1543:*/
#line 25525 "tex.w"
418
/*:1543*/
#line 5815 "tex.w"
);break;
case ignore_spaces:print_esc(/*1544:*/
#line 25528 "tex.w"
419
/*:1544*/
#line 5816 "tex.w"
);break;
case insert:print_esc(/*1390:*/
#line 25066 "tex.w"
265
/*:1390*/
#line 5817 "tex.w"
);break;
case ital_corr:print_esc('/');break;
case mark:print_esc(/*1401:*/
#line 25099 "tex.w"
276
/*:1401*/
#line 5819 "tex.w"
);break;
case math_accent:print_esc(/*1545:*/
#line 25531 "tex.w"
420
/*:1545*/
#line 5820 "tex.w"
);break;
case math_char_num:print_esc(/*1546:*/
#line 25534 "tex.w"
421
/*:1546*/
#line 5821 "tex.w"
);break;
case math_choice:print_esc(/*1547:*/
#line 25537 "tex.w"
422
/*:1547*/
#line 5822 "tex.w"
);break;
case multiply:print_esc(/*1548:*/
#line 25540 "tex.w"
423
/*:1548*/
#line 5823 "tex.w"
);break;
case no_align:print_esc(/*1549:*/
#line 25543 "tex.w"
424
/*:1549*/
#line 5824 "tex.w"
);break;
case no_boundary:print_esc(/*1550:*/
#line 25546 "tex.w"
425
/*:1550*/
#line 5825 "tex.w"
);break;
case no_expand:print_esc(/*1551:*/
#line 25549 "tex.w"
426
/*:1551*/
#line 5826 "tex.w"
);break;
case non_script:print_esc(/*1392:*/
#line 25072 "tex.w"
267
/*:1392*/
#line 5827 "tex.w"
);break;
case omit:print_esc(/*1552:*/
#line 25552 "tex.w"
427
/*:1552*/
#line 5828 "tex.w"
);break;
case radical:print_esc(/*1555:*/
#line 25561 "tex.w"
430
/*:1555*/
#line 5829 "tex.w"
);break;
case read_to_cs:print_esc(/*1556:*/
#line 25564 "tex.w"
431
/*:1556*/
#line 5830 "tex.w"
);break;
case relax:print_esc(/*1557:*/
#line 25567 "tex.w"
432
/*:1557*/
#line 5831 "tex.w"
);break;
case set_box:print_esc(/*1558:*/
#line 25570 "tex.w"
433
/*:1558*/
#line 5832 "tex.w"
);break;
case set_prev_graf:print_esc(/*1554:*/
#line 25558 "tex.w"
429
/*:1554*/
#line 5833 "tex.w"
);break;
case set_shape:print_esc(/*1436:*/
#line 25204 "tex.w"
311
/*:1436*/
#line 5834 "tex.w"
);break;
case the:print_esc(/*1559:*/
#line 25573 "tex.w"
434
/*:1559*/
#line 5835 "tex.w"
);break;
case toks_register:print_esc(/*1435:*/
#line 25201 "tex.w"
310
/*:1435*/
#line 5836 "tex.w"
);break;
case vadjust:print_esc(/*1402:*/
#line 25102 "tex.w"
277
/*:1402*/
#line 5837 "tex.w"
);break;
case valign:print_esc(/*1560:*/
#line 25576 "tex.w"
435
/*:1560*/
#line 5838 "tex.w"
);break;
case vcenter:print_esc(/*1561:*/
#line 25579 "tex.w"
436
/*:1561*/
#line 5839 "tex.w"
);break;
case vrule:print_esc(/*1562:*/
#line 25582 "tex.w"
437
/*:1562*/
#line 5840 "tex.w"
);break;

/*:266*//*335:*/
#line 7203 "tex.w"

case par_end:print_esc(/*1569:*/
#line 25603 "tex.w"
444
/*:1569*/
#line 7204 "tex.w"
);break;

/*:335*//*377:*/
#line 7854 "tex.w"

case input:if(chr_code==0)print_esc(/*1570:*/
#line 25606 "tex.w"
445
/*:1570*/
#line 7855 "tex.w"
);else print_esc(/*1571:*/
#line 25609 "tex.w"
446
/*:1571*/
#line 7855 "tex.w"
);break;

/*:377*//*385:*/
#line 7945 "tex.w"

case top_bot_mark:switch(chr_code){
case first_mark_code:print_esc(/*1573:*/
#line 25615 "tex.w"
448
/*:1573*/
#line 7947 "tex.w"
);break;
case bot_mark_code:print_esc(/*1574:*/
#line 25618 "tex.w"
449
/*:1574*/
#line 7948 "tex.w"
);break;
case split_first_mark_code:print_esc(/*1575:*/
#line 25621 "tex.w"
450
/*:1575*/
#line 7949 "tex.w"
);break;
case split_bot_mark_code:print_esc(/*1576:*/
#line 25624 "tex.w"
451
/*:1576*/
#line 7950 "tex.w"
);break;
default:print_esc(/*1572:*/
#line 25612 "tex.w"
447
/*:1572*/
#line 7951 "tex.w"
);
}break;

/*:385*//*412:*/
#line 8388 "tex.w"

case register:if(chr_code==int_val)print_esc(/*1501:*/
#line 25399 "tex.w"
376
/*:1501*/
#line 8389 "tex.w"
);
else if(chr_code==dimen_val)print_esc(/*1524:*/
#line 25468 "tex.w"
399
/*:1524*/
#line 8390 "tex.w"
);
else if(chr_code==glue_val)print_esc(/*1423:*/
#line 25165 "tex.w"
298
/*:1423*/
#line 8391 "tex.w"
);
else print_esc(/*1424:*/
#line 25168 "tex.w"
299
/*:1424*/
#line 8392 "tex.w"
);break;

/*:412*//*417:*/
#line 8498 "tex.w"

case set_aux:if(chr_code==vmode)print_esc(/*1578:*/
#line 25630 "tex.w"
453
/*:1578*/
#line 8499 "tex.w"
);
else print_esc(/*1577:*/
#line 25627 "tex.w"
452
/*:1577*/
#line 8500 "tex.w"
);break;
case set_page_int:if(chr_code==0)print_esc(/*1579:*/
#line 25633 "tex.w"
454
/*:1579*/
#line 8501 "tex.w"
);
else print_esc(/*1580:*/
#line 25636 "tex.w"
455
/*:1580*/
#line 8502 "tex.w"
);break;
case set_box_dimen:if(chr_code==width_offset)print_esc(/*1581:*/
#line 25639 "tex.w"
456
/*:1581*/
#line 8503 "tex.w"
);
else if(chr_code==height_offset)print_esc(/*1582:*/
#line 25642 "tex.w"
457
/*:1582*/
#line 8504 "tex.w"
);
else print_esc(/*1583:*/
#line 25645 "tex.w"
458
/*:1583*/
#line 8505 "tex.w"
);break;
case last_item:switch(chr_code){
case int_val:print_esc(/*1584:*/
#line 25648 "tex.w"
459
/*:1584*/
#line 8507 "tex.w"
);break;
case dimen_val:print_esc(/*1585:*/
#line 25651 "tex.w"
460
/*:1585*/
#line 8508 "tex.w"
);break;
case glue_val:print_esc(/*1586:*/
#line 25654 "tex.w"
461
/*:1586*/
#line 8509 "tex.w"
);break;
case input_line_no_code:print_esc(/*1587:*/
#line 25657 "tex.w"
462
/*:1587*/
#line 8510 "tex.w"
);break;
default:print_esc(/*1588:*/
#line 25660 "tex.w"
463
/*:1588*/
#line 8511 "tex.w"
);
}break;

/*:417*//*469:*/
#line 9287 "tex.w"

case convert:switch(chr_code){
case number_code:print_esc(/*1605:*/
#line 25711 "tex.w"
480
/*:1605*/
#line 9289 "tex.w"
);break;
case roman_numeral_code:print_esc(/*1606:*/
#line 25714 "tex.w"
481
/*:1606*/
#line 9290 "tex.w"
);break;
case string_code:print_esc(/*1607:*/
#line 25717 "tex.w"
482
/*:1607*/
#line 9291 "tex.w"
);break;
case meaning_code:print_esc(/*1608:*/
#line 25720 "tex.w"
483
/*:1608*/
#line 9292 "tex.w"
);break;
case font_name_code:print_esc(/*1609:*/
#line 25723 "tex.w"
484
/*:1609*/
#line 9293 "tex.w"
);break;
default:print_esc(/*1610:*/
#line 25726 "tex.w"
485
/*:1610*/
#line 9294 "tex.w"
);
}break;

/*:469*//*488:*/
#line 9625 "tex.w"

case if_test:switch(chr_code){
case if_cat_code:print_esc(/*1612:*/
#line 25732 "tex.w"
487
/*:1612*/
#line 9627 "tex.w"
);break;
case if_int_code:print_esc(/*1613:*/
#line 25735 "tex.w"
488
/*:1613*/
#line 9628 "tex.w"
);break;
case if_dim_code:print_esc(/*1614:*/
#line 25738 "tex.w"
489
/*:1614*/
#line 9629 "tex.w"
);break;
case if_odd_code:print_esc(/*1615:*/
#line 25741 "tex.w"
490
/*:1615*/
#line 9630 "tex.w"
);break;
case if_vmode_code:print_esc(/*1616:*/
#line 25744 "tex.w"
491
/*:1616*/
#line 9631 "tex.w"
);break;
case if_hmode_code:print_esc(/*1617:*/
#line 25747 "tex.w"
492
/*:1617*/
#line 9632 "tex.w"
);break;
case if_mmode_code:print_esc(/*1618:*/
#line 25750 "tex.w"
493
/*:1618*/
#line 9633 "tex.w"
);break;
case if_inner_code:print_esc(/*1619:*/
#line 25753 "tex.w"
494
/*:1619*/
#line 9634 "tex.w"
);break;
case if_void_code:print_esc(/*1620:*/
#line 25756 "tex.w"
495
/*:1620*/
#line 9635 "tex.w"
);break;
case if_hbox_code:print_esc(/*1621:*/
#line 25759 "tex.w"
496
/*:1621*/
#line 9636 "tex.w"
);break;
case if_vbox_code:print_esc(/*1622:*/
#line 25762 "tex.w"
497
/*:1622*/
#line 9637 "tex.w"
);break;
case ifx_code:print_esc(/*1623:*/
#line 25765 "tex.w"
498
/*:1623*/
#line 9638 "tex.w"
);break;
case if_eof_code:print_esc(/*1624:*/
#line 25768 "tex.w"
499
/*:1624*/
#line 9639 "tex.w"
);break;
case if_true_code:print_esc(/*1625:*/
#line 25771 "tex.w"
500
/*:1625*/
#line 9640 "tex.w"
);break;
case if_false_code:print_esc(/*1626:*/
#line 25774 "tex.w"
501
/*:1626*/
#line 9641 "tex.w"
);break;
case if_case_code:print_esc(/*1627:*/
#line 25777 "tex.w"
502
/*:1627*/
#line 9642 "tex.w"
);break;
default:print_esc(/*1611:*/
#line 25729 "tex.w"
486
/*:1611*/
#line 9643 "tex.w"
);
}break;

/*:488*//*492:*/
#line 9687 "tex.w"

case fi_or_else:if(chr_code==fi_code)print_esc(/*1628:*/
#line 25780 "tex.w"
503
/*:1628*/
#line 9688 "tex.w"
);
else if(chr_code==or_code)print_esc(/*1629:*/
#line 25783 "tex.w"
504
/*:1629*/
#line 9689 "tex.w"
);
else print_esc(/*1630:*/
#line 25786 "tex.w"
505
/*:1630*/
#line 9690 "tex.w"
);break;

/*:492*//*781:*/
#line 15430 "tex.w"

case tab_mark:if(chr_code==span_code)print_esc(/*1669:*/
#line 25903 "tex.w"
544
/*:1669*/
#line 15431 "tex.w"
);
else chr_cmd("alignment tab character ")break;
case car_ret:if(chr_code==cr_code)print_esc(/*1670:*/
#line 25906 "tex.w"
545
/*:1670*/
#line 15433 "tex.w"
);
else print_esc(/*1671:*/
#line 25909 "tex.w"
546
/*:1671*/
#line 15434 "tex.w"
);break;

/*:781*//*984:*/
#line 19269 "tex.w"

case set_page_dimen:switch(chr_code){
case 0:print_esc(/*1689:*/
#line 25963 "tex.w"
564
/*:1689*/
#line 19271 "tex.w"
);break;
case 1:print_esc(/*1690:*/
#line 25966 "tex.w"
565
/*:1690*/
#line 19272 "tex.w"
);break;
case 2:print_esc(/*1691:*/
#line 25969 "tex.w"
566
/*:1691*/
#line 19273 "tex.w"
);break;
case 3:print_esc(/*1692:*/
#line 25972 "tex.w"
567
/*:1692*/
#line 19274 "tex.w"
);break;
case 4:print_esc(/*1693:*/
#line 25975 "tex.w"
568
/*:1693*/
#line 19275 "tex.w"
);break;
case 5:print_esc(/*1694:*/
#line 25978 "tex.w"
569
/*:1694*/
#line 19276 "tex.w"
);break;
case 6:print_esc(/*1695:*/
#line 25981 "tex.w"
570
/*:1695*/
#line 19277 "tex.w"
);break;
default:print_esc(/*1696:*/
#line 25984 "tex.w"
571
/*:1696*/
#line 19278 "tex.w"
);
}break;

/*:984*//*1053:*/
#line 20477 "tex.w"

case stop:if(chr_code==1)print_esc(/*1699:*/
#line 25993 "tex.w"
574
/*:1699*/
#line 20478 "tex.w"
);else print_esc(/*1698:*/
#line 25990 "tex.w"
573
/*:1698*/
#line 20478 "tex.w"
);break;

/*:1053*//*1059:*/
#line 20575 "tex.w"

case hskip:switch(chr_code){
case skip_code:print_esc(/*1700:*/
#line 25996 "tex.w"
575
/*:1700*/
#line 20577 "tex.w"
);break;
case fil_code:print_esc(/*1701:*/
#line 25999 "tex.w"
576
/*:1701*/
#line 20578 "tex.w"
);break;
case fill_code:print_esc(/*1702:*/
#line 26002 "tex.w"
577
/*:1702*/
#line 20579 "tex.w"
);break;
case ss_code:print_esc(/*1703:*/
#line 26005 "tex.w"
578
/*:1703*/
#line 20580 "tex.w"
);break;
default:print_esc(/*1704:*/
#line 26008 "tex.w"
579
/*:1704*/
#line 20581 "tex.w"
);
}break;
case vskip:switch(chr_code){
case skip_code:print_esc(/*1705:*/
#line 26011 "tex.w"
580
/*:1705*/
#line 20584 "tex.w"
);break;
case fil_code:print_esc(/*1706:*/
#line 26014 "tex.w"
581
/*:1706*/
#line 20585 "tex.w"
);break;
case fill_code:print_esc(/*1707:*/
#line 26017 "tex.w"
582
/*:1707*/
#line 20586 "tex.w"
);break;
case ss_code:print_esc(/*1708:*/
#line 26020 "tex.w"
583
/*:1708*/
#line 20587 "tex.w"
);break;
default:print_esc(/*1709:*/
#line 26023 "tex.w"
584
/*:1709*/
#line 20588 "tex.w"
);
}break;
case mskip:print_esc(/*1393:*/
#line 25075 "tex.w"
268
/*:1393*/
#line 20590 "tex.w"
);break;
case kern:print_esc(/*1396:*/
#line 25084 "tex.w"
271
/*:1396*/
#line 20591 "tex.w"
);break;
case mkern:print_esc(/*1397:*/
#line 25087 "tex.w"
272
/*:1397*/
#line 20592 "tex.w"
);break;

/*:1059*//*1072:*/
#line 20837 "tex.w"

case hmove:if(chr_code==1)print_esc(/*1712:*/
#line 26032 "tex.w"
587
/*:1712*/
#line 20838 "tex.w"
);else print_esc(/*1713:*/
#line 26035 "tex.w"
588
/*:1713*/
#line 20838 "tex.w"
);break;
case vmove:if(chr_code==1)print_esc(/*1714:*/
#line 26038 "tex.w"
589
/*:1714*/
#line 20839 "tex.w"
);else print_esc(/*1715:*/
#line 26041 "tex.w"
590
/*:1715*/
#line 20839 "tex.w"
);break;
case make_box:switch(chr_code){
case box_code:print_esc(/*1437:*/
#line 25207 "tex.w"
312
/*:1437*/
#line 20841 "tex.w"
);break;
case copy_code:print_esc(/*1716:*/
#line 26044 "tex.w"
591
/*:1716*/
#line 20842 "tex.w"
);break;
case last_box_code:print_esc(/*1717:*/
#line 26047 "tex.w"
592
/*:1717*/
#line 20843 "tex.w"
);break;
case vsplit_code:print_esc(/*1687:*/
#line 25957 "tex.w"
562
/*:1687*/
#line 20844 "tex.w"
);break;
case vtop_code:print_esc(/*1718:*/
#line 26050 "tex.w"
593
/*:1718*/
#line 20845 "tex.w"
);break;
case vtop_code+vmode:print_esc(/*1688:*/
#line 25960 "tex.w"
563
/*:1688*/
#line 20846 "tex.w"
);break;
default:print_esc(/*1719:*/
#line 26053 "tex.w"
594
/*:1719*/
#line 20847 "tex.w"
);
}break;
case leader_ship:if(chr_code==a_leaders)print_esc(/*1721:*/
#line 26059 "tex.w"
596
/*:1721*/
#line 20849 "tex.w"
);
else if(chr_code==c_leaders)print_esc(/*1722:*/
#line 26062 "tex.w"
597
/*:1722*/
#line 20850 "tex.w"
);
else if(chr_code==x_leaders)print_esc(/*1723:*/
#line 26065 "tex.w"
598
/*:1723*/
#line 20851 "tex.w"
);
else print_esc(/*1720:*/
#line 26056 "tex.w"
595
/*:1720*/
#line 20852 "tex.w"
);break;

/*:1072*//*1089:*/
#line 21098 "tex.w"

case start_par:if(chr_code==0)print_esc(/*1725:*/
#line 26071 "tex.w"
600
/*:1725*/
#line 21099 "tex.w"
);else print_esc(/*1724:*/
#line 26068 "tex.w"
599
/*:1724*/
#line 21099 "tex.w"
);break;

/*:1089*//*1108:*/
#line 21316 "tex.w"

case remove_item:if(chr_code==glue_node)print_esc(/*1728:*/
#line 26080 "tex.w"
603
/*:1728*/
#line 21317 "tex.w"
);
else if(chr_code==kern_node)print_esc(/*1727:*/
#line 26077 "tex.w"
602
/*:1727*/
#line 21318 "tex.w"
);
else print_esc(/*1726:*/
#line 26074 "tex.w"
601
/*:1726*/
#line 21319 "tex.w"
);break;
case un_hbox:if(chr_code==copy_code)print_esc(/*1730:*/
#line 26086 "tex.w"
605
/*:1730*/
#line 21320 "tex.w"
);
else print_esc(/*1729:*/
#line 26083 "tex.w"
604
/*:1729*/
#line 21321 "tex.w"
);break;
case un_vbox:if(chr_code==copy_code)print_esc(/*1732:*/
#line 26092 "tex.w"
607
/*:1732*/
#line 21322 "tex.w"
);
else print_esc(/*1731:*/
#line 26089 "tex.w"
606
/*:1731*/
#line 21323 "tex.w"
);break;

/*:1108*//*1115:*/
#line 21387 "tex.w"

case discretionary:if(chr_code==1)
print_esc('-');else print_esc(/*1400:*/
#line 25096 "tex.w"
275
/*:1400*/
#line 21389 "tex.w"
);break;

/*:1115*//*1143:*/
#line 21746 "tex.w"

case eq_no:if(chr_code==1)print_esc(/*1734:*/
#line 26098 "tex.w"
609
/*:1734*/
#line 21747 "tex.w"
);else print_esc(/*1733:*/
#line 26095 "tex.w"
608
/*:1733*/
#line 21747 "tex.w"
);break;

/*:1143*//*1157:*/
#line 21994 "tex.w"

case math_comp:switch(chr_code){
case ord_noad:print_esc(/*1649:*/
#line 25843 "tex.w"
524
/*:1649*/
#line 21996 "tex.w"
);break;
case op_noad:print_esc(/*1650:*/
#line 25846 "tex.w"
525
/*:1650*/
#line 21997 "tex.w"
);break;
case bin_noad:print_esc(/*1651:*/
#line 25849 "tex.w"
526
/*:1651*/
#line 21998 "tex.w"
);break;
case rel_noad:print_esc(/*1652:*/
#line 25852 "tex.w"
527
/*:1652*/
#line 21999 "tex.w"
);break;
case open_noad:print_esc(/*1653:*/
#line 25855 "tex.w"
528
/*:1653*/
#line 22000 "tex.w"
);break;
case close_noad:print_esc(/*1654:*/
#line 25858 "tex.w"
529
/*:1654*/
#line 22001 "tex.w"
);break;
case punct_noad:print_esc(/*1655:*/
#line 25861 "tex.w"
530
/*:1655*/
#line 22002 "tex.w"
);break;
case inner_noad:print_esc(/*1656:*/
#line 25864 "tex.w"
531
/*:1656*/
#line 22003 "tex.w"
);break;
case under_noad:print_esc(/*1658:*/
#line 25870 "tex.w"
533
/*:1658*/
#line 22004 "tex.w"
);break;
default:print_esc(/*1657:*/
#line 25867 "tex.w"
532
/*:1657*/
#line 22005 "tex.w"
);
}break;
case limit_switch:if(chr_code==limits)print_esc(/*1661:*/
#line 25879 "tex.w"
536
/*:1661*/
#line 22007 "tex.w"
);
else if(chr_code==no_limits)print_esc(/*1662:*/
#line 25882 "tex.w"
537
/*:1662*/
#line 22008 "tex.w"
);
else print_esc(/*1735:*/
#line 26101 "tex.w"
610
/*:1735*/
#line 22009 "tex.w"
);break;

/*:1157*//*1170:*/
#line 22130 "tex.w"

case math_style:print_style(chr_code);break;

/*:1170*//*1179:*/
#line 22233 "tex.w"

case above:switch(chr_code){
case over_code:print_esc(/*1737:*/
#line 26107 "tex.w"
612
/*:1737*/
#line 22235 "tex.w"
);break;
case atop_code:print_esc(/*1738:*/
#line 26110 "tex.w"
613
/*:1738*/
#line 22236 "tex.w"
);break;
case delimited_code+above_code:print_esc(/*1739:*/
#line 26113 "tex.w"
614
/*:1739*/
#line 22237 "tex.w"
);break;
case delimited_code+over_code:print_esc(/*1740:*/
#line 26116 "tex.w"
615
/*:1740*/
#line 22238 "tex.w"
);break;
case delimited_code+atop_code:print_esc(/*1741:*/
#line 26119 "tex.w"
616
/*:1741*/
#line 22239 "tex.w"
);break;
default:print_esc(/*1736:*/
#line 26104 "tex.w"
611
/*:1736*/
#line 22240 "tex.w"
);
}break;

/*:1179*//*1189:*/
#line 22354 "tex.w"

case left_right:if(chr_code==left_noad)print_esc(/*1659:*/
#line 25873 "tex.w"
534
/*:1659*/
#line 22355 "tex.w"
);
else print_esc(/*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 22356 "tex.w"
);break;

/*:1189*//*1209:*/
#line 22667 "tex.w"

case prefix:if(chr_code==1)print_esc(/*1743:*/
#line 26125 "tex.w"
618
/*:1743*/
#line 22668 "tex.w"
);
else if(chr_code==2)print_esc(/*1744:*/
#line 26128 "tex.w"
619
/*:1744*/
#line 22669 "tex.w"
);
else print_esc(/*1745:*/
#line 26131 "tex.w"
620
/*:1745*/
#line 22670 "tex.w"
);break;
case def:if(chr_code==0)print_esc(/*1746:*/
#line 26134 "tex.w"
621
/*:1746*/
#line 22671 "tex.w"
);
else if(chr_code==1)print_esc(/*1747:*/
#line 26137 "tex.w"
622
/*:1747*/
#line 22672 "tex.w"
);
else if(chr_code==2)print_esc(/*1748:*/
#line 26140 "tex.w"
623
/*:1748*/
#line 22673 "tex.w"
);
else print_esc(/*1749:*/
#line 26143 "tex.w"
624
/*:1749*/
#line 22674 "tex.w"
);break;

/*:1209*//*1220:*/
#line 22827 "tex.w"

case let:if(chr_code!=normal)print_esc(/*1753:*/
#line 26155 "tex.w"
628
/*:1753*/
#line 22828 "tex.w"
);else print_esc(/*1752:*/
#line 26152 "tex.w"
627
/*:1752*/
#line 22828 "tex.w"
);break;

/*:1220*//*1223:*/
#line 22879 "tex.w"

case shorthand_def:switch(chr_code){
case char_def_code:print_esc(/*1754:*/
#line 26158 "tex.w"
629
/*:1754*/
#line 22881 "tex.w"
);break;
case math_char_def_code:print_esc(/*1755:*/
#line 26161 "tex.w"
630
/*:1755*/
#line 22882 "tex.w"
);break;
case count_def_code:print_esc(/*1756:*/
#line 26164 "tex.w"
631
/*:1756*/
#line 22883 "tex.w"
);break;
case dimen_def_code:print_esc(/*1757:*/
#line 26167 "tex.w"
632
/*:1757*/
#line 22884 "tex.w"
);break;
case skip_def_code:print_esc(/*1758:*/
#line 26170 "tex.w"
633
/*:1758*/
#line 22885 "tex.w"
);break;
case mu_skip_def_code:print_esc(/*1759:*/
#line 26173 "tex.w"
634
/*:1759*/
#line 22886 "tex.w"
);break;
default:print_esc(/*1760:*/
#line 26176 "tex.w"
635
/*:1760*/
#line 22887 "tex.w"
);
}break;
case char_given:{print_esc(/*1535:*/
#line 25501 "tex.w"
410
/*:1535*/
#line 22889 "tex.w"
);print_hex(chr_code);
}break;
case math_given:{print_esc(/*1546:*/
#line 25534 "tex.w"
421
/*:1546*/
#line 22891 "tex.w"
);print_hex(chr_code);
}break;

/*:1223*//*1231:*/
#line 23023 "tex.w"

case def_code:if(chr_code==cat_code_base)print_esc(/*1441:*/
#line 25219 "tex.w"
316
/*:1441*/
#line 23024 "tex.w"
);
else if(chr_code==math_code_base)print_esc(/*1445:*/
#line 25231 "tex.w"
320
/*:1445*/
#line 23025 "tex.w"
);
else if(chr_code==lc_code_base)print_esc(/*1442:*/
#line 25222 "tex.w"
317
/*:1442*/
#line 23026 "tex.w"
);
else if(chr_code==uc_code_base)print_esc(/*1443:*/
#line 25225 "tex.w"
318
/*:1443*/
#line 23027 "tex.w"
);
else if(chr_code==sf_code_base)print_esc(/*1444:*/
#line 25228 "tex.w"
319
/*:1444*/
#line 23028 "tex.w"
);
else print_esc(/*1502:*/
#line 25402 "tex.w"
377
/*:1502*/
#line 23029 "tex.w"
);break;
case def_family:print_size(chr_code-math_font_base);break;

/*:1231*//*1251:*/
#line 23294 "tex.w"

case hyph_data:if(chr_code==1)print_esc(/*1684:*/
#line 25948 "tex.w"
559
/*:1684*/
#line 23295 "tex.w"
);
else print_esc(/*1683:*/
#line 25945 "tex.w"
558
/*:1683*/
#line 23296 "tex.w"
);break;

/*:1251*//*1255:*/
#line 23331 "tex.w"

case assign_font_int:if(chr_code==0)print_esc(/*1762:*/
#line 26182 "tex.w"
637
/*:1762*/
#line 23332 "tex.w"
);
else print_esc(/*1763:*/
#line 26185 "tex.w"
638
/*:1763*/
#line 23333 "tex.w"
);break;

/*:1255*//*1261:*/
#line 23416 "tex.w"

case set_font:{print_str("select font ");slow_print(font_name[chr_code]);
if(font_size[chr_code]!=font_dsize[chr_code])
{print_str(" at ");print_scaled(font_size[chr_code]);
print_str("pt");
}
}break;

/*:1261*//*1263:*/
#line 23434 "tex.w"

case set_interaction:switch(chr_code){
case batch_mode:print_esc(/*1383:*/
#line 25045 "tex.w"
258
/*:1383*/
#line 23436 "tex.w"
);break;
case nonstop_mode:print_esc(/*1384:*/
#line 25048 "tex.w"
259
/*:1384*/
#line 23437 "tex.w"
);break;
case scroll_mode:print_esc(/*1385:*/
#line 25051 "tex.w"
260
/*:1385*/
#line 23438 "tex.w"
);break;
default:print_esc(/*1767:*/
#line 26197 "tex.w"
642
/*:1767*/
#line 23439 "tex.w"
);
}break;

/*:1263*//*1273:*/
#line 23496 "tex.w"

case in_stream:if(chr_code==0)print_esc(/*1769:*/
#line 26203 "tex.w"
644
/*:1769*/
#line 23497 "tex.w"
);
else print_esc(/*1768:*/
#line 26200 "tex.w"
643
/*:1768*/
#line 23498 "tex.w"
);break;

/*:1273*//*1278:*/
#line 23531 "tex.w"

case message:if(chr_code==0)print_esc(/*1770:*/
#line 26206 "tex.w"
645
/*:1770*/
#line 23532 "tex.w"
);
else print_esc(/*1771:*/
#line 26209 "tex.w"
646
/*:1771*/
#line 23533 "tex.w"
);break;

/*:1278*//*1287:*/
#line 23598 "tex.w"

case case_shift:if(chr_code==lc_code_base)print_esc(/*1772:*/
#line 26212 "tex.w"
647
/*:1772*/
#line 23599 "tex.w"
);
else print_esc(/*1773:*/
#line 26215 "tex.w"
648
/*:1773*/
#line 23600 "tex.w"
);break;

/*:1287*//*1292:*/
#line 23649 "tex.w"

case xray:switch(chr_code){
case show_box_code:print_esc(/*1775:*/
#line 26221 "tex.w"
650
/*:1775*/
#line 23651 "tex.w"
);break;
case show_the_code:print_esc(/*1776:*/
#line 26224 "tex.w"
651
/*:1776*/
#line 23652 "tex.w"
);break;
case show_lists:print_esc(/*1777:*/
#line 26227 "tex.w"
652
/*:1777*/
#line 23653 "tex.w"
);break;
default:print_esc(/*1774:*/
#line 26218 "tex.w"
649
/*:1774*/
#line 23654 "tex.w"
);
}break;

/*:1292*//*1295:*/
#line 23698 "tex.w"

case undefined_cs:print_str("undefined");break;
case call:print_str("macro");break;
case long_call:print_esc(/*1778:*/
#line 26230 "tex.w"
653
/*:1778*/
#line 23701 "tex.w"
);break;
case outer_call:print_esc(/*1779:*/
#line 26233 "tex.w"
654
/*:1779*/
#line 23702 "tex.w"
);break;
case long_outer_call:{print_esc(/*1743:*/
#line 26125 "tex.w"
618
/*:1743*/
#line 23703 "tex.w"
);print_esc(/*1779:*/
#line 26233 "tex.w"
654
/*:1779*/
#line 23703 "tex.w"
);
}break;
case end_template:print_esc(/*1780:*/
#line 26236 "tex.w"
655
/*:1780*/
#line 23705 "tex.w"
);break;

/*:1295*//*1346:*/
#line 24646 "tex.w"

case extension:switch(chr_code){
case open_node:print_esc(/*1783:*/
#line 26245 "tex.w"
658
/*:1783*/
#line 24648 "tex.w"
);break;
case write_node:print_esc(/*1568:*/
#line 25600 "tex.w"
443
/*:1568*/
#line 24649 "tex.w"
);break;
case close_node:print_esc(/*1784:*/
#line 26248 "tex.w"
659
/*:1784*/
#line 24650 "tex.w"
);break;
case special_node:print_esc(/*1785:*/
#line 26251 "tex.w"
660
/*:1785*/
#line 24651 "tex.w"
);break;
case immediate_code:print_esc(/*1786:*/
#line 26254 "tex.w"
661
/*:1786*/
#line 24652 "tex.w"
);break;
case set_language_code:print_esc(/*1787:*/
#line 26257 "tex.w"
662
/*:1787*/
#line 24653 "tex.w"
);break;
default:print_str("[unknown extension!]");
}break;

/*:1346*/
#line 6476 "tex.w"

default:print_str("[unknown command code!]");
}
}

/*:298*/
#line 5484 "tex.w"

#ifdef STAT
void show_eqtb(pointer n)
{if(n<active_base)print_char('?');
else if(n<glue_base)/*223:*/
#line 4607 "tex.w"

{sprint_cs(n);print_char('=');print_cmd_chr(eq_type(n),equiv(n));
if(eq_type(n)>=call)
{print_char(':');show_token_list(link(equiv(n)),null,32);
}
}

/*:223*/
#line 5488 "tex.w"

else if(n<local_base)/*229:*/
#line 4757 "tex.w"

if(n<skip_base)
{print_skip_param(n-glue_base);print_char('=');
if(n<glue_base+thin_mu_skip_code)print_spec(equiv(n),/*1425:*/
#line 25171 "tex.w"
300
/*:1425*/
#line 4760 "tex.w"
);
else print_spec(equiv(n),/*1394:*/
#line 25078 "tex.w"
269
/*:1394*/
#line 4761 "tex.w"
);
}
else if(n<mu_skip_base)
{print_esc(/*1423:*/
#line 25165 "tex.w"
298
/*:1423*/
#line 4764 "tex.w"
);print_int(n-skip_base);print_char('=');
print_spec(equiv(n),/*1425:*/
#line 25171 "tex.w"
300
/*:1425*/
#line 4765 "tex.w"
);
}
else{print_esc(/*1424:*/
#line 25168 "tex.w"
299
/*:1424*/
#line 4767 "tex.w"
);print_int(n-mu_skip_base);print_char('=');
print_spec(equiv(n),/*1394:*/
#line 25078 "tex.w"
269
/*:1394*/
#line 4768 "tex.w"
);
}

/*:229*/
#line 5489 "tex.w"

else if(n<int_base)/*233:*/
#line 4899 "tex.w"

if(n==par_shape_loc)
{print_esc(/*1436:*/
#line 25204 "tex.w"
311
/*:1436*/
#line 4901 "tex.w"
);print_char('=');
if(par_shape_ptr==null)print_char('0');
else print_int(info(par_shape_ptr));
}
else if(n<toks_base)
{print_cmd_chr(assign_toks,n);print_char('=');
if(equiv(n)!=null)show_token_list(link(equiv(n)),null,32);
}
else if(n<box_base)
{print_esc(/*1435:*/
#line 25201 "tex.w"
310
/*:1435*/
#line 4910 "tex.w"
);print_int(n-toks_base);print_char('=');
if(equiv(n)!=null)show_token_list(link(equiv(n)),null,32);
}
else if(n<cur_font_loc)
{print_esc(/*1437:*/
#line 25207 "tex.w"
312
/*:1437*/
#line 4914 "tex.w"
);print_int(n-box_base);print_char('=');
if(equiv(n)==null)print_str("void");
else{depth_threshold= 0;breadth_max= 1;show_node_list(equiv(n));
}
}
else if(n<cat_code_base)/*234:*/
#line 4922 "tex.w"

{if(n==cur_font_loc)print_str("current font");
else if(n<math_font_base+16)
{print_esc(/*1438:*/
#line 25210 "tex.w"
313
/*:1438*/
#line 4925 "tex.w"
);print_int(n-math_font_base);
}
else if(n<math_font_base+32)
{print_esc(/*1439:*/
#line 25213 "tex.w"
314
/*:1439*/
#line 4928 "tex.w"
);print_int(n-math_font_base-16);
}
else{print_esc(/*1440:*/
#line 25216 "tex.w"
315
/*:1440*/
#line 4930 "tex.w"
);print_int(n-math_font_base-32);
}
print_char('=');
print_esc(hash[font_id_base+equiv(n)].rh);

}

/*:234*/
#line 4919 "tex.w"

else/*235:*/
#line 4937 "tex.w"

if(n<math_code_base)
{if(n<lc_code_base)
{print_esc(/*1441:*/
#line 25219 "tex.w"
316
/*:1441*/
#line 4940 "tex.w"
);print_int(n-cat_code_base);
}
else if(n<uc_code_base)
{print_esc(/*1442:*/
#line 25222 "tex.w"
317
/*:1442*/
#line 4943 "tex.w"
);print_int(n-lc_code_base);
}
else if(n<sf_code_base)
{print_esc(/*1443:*/
#line 25225 "tex.w"
318
/*:1443*/
#line 4946 "tex.w"
);print_int(n-uc_code_base);
}
else{print_esc(/*1444:*/
#line 25228 "tex.w"
319
/*:1444*/
#line 4948 "tex.w"
);print_int(n-sf_code_base);
}
print_char('=');print_int(equiv(n));
}
else{print_esc(/*1445:*/
#line 25231 "tex.w"
320
/*:1445*/
#line 4952 "tex.w"
);print_int(n-math_code_base);
print_char('=');print_int(ho(equiv(n)));
}

/*:235*/
#line 4920 "tex.w"


/*:233*/
#line 5490 "tex.w"

else if(n<dimen_base)/*242:*/
#line 5300 "tex.w"

{if(n<count_base)print_param(n-int_base);
else if(n<del_code_base)
{print_esc(/*1501:*/
#line 25399 "tex.w"
376
/*:1501*/
#line 5303 "tex.w"
);print_int(n-count_base);
}
else{print_esc(/*1502:*/
#line 25402 "tex.w"
377
/*:1502*/
#line 5305 "tex.w"
);print_int(n-del_code_base);
}
print_char('=');print_int(eqtb[n].i);
}

/*:242*/
#line 5491 "tex.w"

else if(n<=eqtb_size)/*251:*/
#line 5474 "tex.w"

{if(n<scaled_base)print_length_param(n-dimen_base);
else{print_esc(/*1524:*/
#line 25468 "tex.w"
399
/*:1524*/
#line 5476 "tex.w"
);print_int(n-scaled_base);
}
print_char('=');print_scaled(eqtb[n].sc);print_str("pt");
}

/*:251*/
#line 5492 "tex.w"

else print_char('?');
}
#endif

/*:252*//*259:*/
#line 5577 "tex.w"
pointer id_lookup(int j,int l)
{
int h;
int d;
pointer p;
pointer k;
/*261:*/
#line 5624 "tex.w"

h= buffer[j];
for(k= j+1;k<=j+l-1;k++)
{h= h+h+buffer[k];
while(h>=hash_prime)h= h-hash_prime;
}

/*:261*/
#line 5583 "tex.w"
;
p= h+hash_base;
loop{if(text(p)> 0)if(length(text(p))==l)
if(str_eq_buf(text(p),j))goto found;
if(next(p)==0)
{if(no_new_control_sequence)
p= undefined_control_sequence;
else/*260:*/
#line 5598 "tex.w"

{if(text(p)> 0)
{do{if(hash_is_full)overflow("hash size",hash_size);

decr(hash_used);
}while(!(text(hash_used)==0));
next(p)= hash_used;p= hash_used;
}
str_room(l);d= cur_length;
while(pool_ptr> str_start[str_ptr])
{decr(pool_ptr);str_pool[pool_ptr+l]= str_pool[pool_ptr];
}
for(k= j;k<=j+l-1;k++)append_char(buffer[k]);
text(p)= make_string();pool_ptr= pool_ptr+d;
#ifdef STAT
incr(cs_count);
#endif

}

/*:260*/
#line 5590 "tex.w"
;
goto found;
}
p= next(p);
}
found:return p;
}

/*:259*//*264:*/
#line 5680 "tex.w"

#ifdef INIT
void primitive(str_number s,quarterword c,halfword o)
{pool_pointer k;
int j;
small_number l;
if(s<256)cur_val= s+single_base;
else{k= str_start[s];l= str_start[s+1]-k;

for(j= 0;j<=l-1;j++)buffer[j]= so(str_pool[k+j]);
cur_val= id_lookup(0,l);
flush_string;text(cur_val)= s;
}
eq_level(cur_val)= level_one;eq_type(cur_val)= c;equiv(cur_val)= o;
}
#endif

/*:264*//*274:*/
#line 5987 "tex.w"
void new_save_level(group_code c)
{check_full_save_stack;
save_type(save_ptr)= level_boundary;save_level(save_ptr)= cur_group;
save_index(save_ptr)= cur_boundary;
if(cur_level==max_quarterword)overflow("grouping levels",

max_quarterword-min_quarterword);

cur_boundary= save_ptr;incr(cur_level);incr(save_ptr);cur_group= c;
}

/*:274*//*275:*/
#line 6004 "tex.w"
void eq_destroy(memory_word w)
{pointer q;
switch(eq_type_field(w)){
case call:case long_call:case outer_call:case long_outer_call:delete_token_ref(equiv_field(w));break;
case glue_ref:delete_glue_ref(equiv_field(w));break;
case shape_ref:{q= equiv_field(w);
if(q!=null)free_node(q,info(q)+info(q)+1);
}break;
case box_ref:flush_node_list(equiv_field(w));break;
default:do_nothing;
}
}

/*:275*//*276:*/
#line 6020 "tex.w"
void eq_save(pointer p,quarterword l)
{check_full_save_stack;
if(l==level_zero)save_type(save_ptr)= restore_zero;
else{save_stack[save_ptr]= eqtb[p];incr(save_ptr);
save_type(save_ptr)= restore_old_value;
}
save_level(save_ptr)= l;save_index(save_ptr)= p;incr(save_ptr);
}

/*:276*//*277:*/
#line 6037 "tex.w"
void eq_define(pointer p,quarterword t,halfword e)

{if(eq_level(p)==cur_level)eq_destroy(eqtb[p]);
else if(cur_level> level_one)eq_save(p,eq_level(p));
eq_level(p)= cur_level;eq_type(p)= t;equiv(p)= e;
}

/*:277*//*278:*/
#line 6048 "tex.w"
void eq_word_define(pointer p,int w)
{if(xeq_level[p]!=cur_level)
{eq_save(p,xeq_level[p]);xeq_level[p]= cur_level;
}
eqtb[p].i= w;
}

/*:278*//*279:*/
#line 6060 "tex.w"
void geq_define(pointer p,quarterword t,halfword e)

{eq_destroy(eqtb[p]);
eq_level(p)= level_one;eq_type(p)= t;equiv(p)= e;
}

void geq_word_define(pointer p,int w)
{eqtb[p].i= w;xeq_level[p]= level_one;
}

/*:279*//*280:*/
#line 6072 "tex.w"
void save_for_after(halfword t)
{if(cur_level> level_one)
{check_full_save_stack;
save_type(save_ptr)= insert_token;save_level(save_ptr)= level_zero;
save_index(save_ptr)= t;incr(save_ptr);
}
}

/*:280*//*281:*/
#line 6084 "tex.w"
/*284:*/
#line 6155 "tex.w"

#ifdef STAT
void restore_trace(pointer p,str_number s)

{begin_diagnostic();print_char('{');print(s);print_char(' ');
show_eqtb(p);print_char('}');
end_diagnostic(false);
}
#endif

/*:284*/
#line 6084 "tex.w"

void back_input(void);
void unsave(void)
{
pointer p;
quarterword l;
halfword t;
if(cur_level> level_one)
{decr(cur_level);
/*282:*/
#line 6099 "tex.w"

loop{decr(save_ptr);
if(save_type(save_ptr)==level_boundary)goto done;
p= save_index(save_ptr);
if(save_type(save_ptr)==insert_token)
/*326:*/
#line 7097 "tex.w"

{t= cur_tok;cur_tok= p;back_input();cur_tok= t;
}

/*:326*/
#line 6104 "tex.w"

else{if(save_type(save_ptr)==restore_old_value)
{l= save_level(save_ptr);decr(save_ptr);
}
else save_stack[save_ptr]= eqtb[undefined_control_sequence];
/*283:*/
#line 6121 "tex.w"

if(p<int_base)
if(eq_level(p)==level_one)
{eq_destroy(save_stack[save_ptr]);

#ifdef STAT
if(tracing_restores> 0)restore_trace(p,/*1564:*/
#line 25588 "tex.w"
439
/*:1564*/
#line 6127 "tex.w"
);
#endif

}
else{eq_destroy(eqtb[p]);
eqtb[p]= save_stack[save_ptr];

#ifdef STAT
if(tracing_restores> 0)restore_trace(p,/*1565:*/
#line 25591 "tex.w"
440
/*:1565*/
#line 6135 "tex.w"
);
#endif

}
else if(xeq_level[p]!=level_one)
{eqtb[p]= save_stack[save_ptr];xeq_level[p]= l;

#ifdef STAT
if(tracing_restores> 0)restore_trace(p,/*1565:*/
#line 25591 "tex.w"
440
/*:1565*/
#line 6143 "tex.w"
);
#endif

}
else{

#ifdef STAT
if(tracing_restores> 0)restore_trace(p,/*1564:*/
#line 25588 "tex.w"
439
/*:1564*/
#line 6150 "tex.w"
);
#endif

}

/*:283*/
#line 6110 "tex.w"
;
}
}
done:cur_group= save_level(save_ptr);cur_boundary= save_index(save_ptr)

/*:282*/
#line 6093 "tex.w"
;
}
else confusion(/*1563:*/
#line 25585 "tex.w"
438
/*:1563*/
#line 6095 "tex.w"
);

}

/*:281*//*288:*/
#line 6194 "tex.w"
void prepare_mag(void)
{if((mag_set> 0)&&(mag!=mag_set))
{print_err("Incompatible magnification (");print_int(mag);

print_str(");");print_nl(" the previous value will be retained");
help2("I can handle only one magnification ratio per job. So I've")
("reverted to the magnification you used earlier on this run.");
int_error(mag_set);
geq_word_define(int_base+mag_code,mag_set);
}
if((mag<=0)||(mag> 32768))
{print_err("Illegal magnification has been changed to 1000");

help1("The magnification ratio must be between 1 and 32768.");
int_error(mag);geq_word_define(int_base+mag_code,1000);
}
mag_set= mag;
}

/*:288*//*295:*/
#line 6378 "tex.w"
void token_show(pointer p)
{if(p!=null)show_token_list(link(p),null,10000000);
}

/*:295*//*296:*/
#line 6385 "tex.w"
void print_meaning(void)
{print_cmd_chr(cur_cmd,cur_chr);
if(cur_cmd>=call)
{print_char(':');print_ln();token_show(cur_chr);
}
else if(cur_cmd==top_bot_mark)
{print_char(':');print_ln();
token_show(cur_mark[cur_chr]);
}
}

/*:296*//*299:*/
#line 6483 "tex.w"
void show_cur_cmd_chr(void)
{begin_diagnostic();print_nl("{");
if(mode!=shown_mode)
{print_mode(mode);print_str(": ");shown_mode= mode;
}
print_cmd_chr(cur_cmd,cur_chr);print_char('}');
end_diagnostic(false);
}

/*:299*//*311:*/
#line 6827 "tex.w"
void show_context(void)
{
uint8_t old_setting;
int nn;
bool bottom_line;
/*315:*/
#line 6939 "tex.w"

int i;
uint16_t j;
uint8_t l;
int m;
uint8_t n;
int p;
int q;

/*:315*/
#line 6832 "tex.w"

base_ptr= input_ptr;input_stack[base_ptr]= cur_input;

nn= -1;bottom_line= false;
loop{cur_input= input_stack[base_ptr];
if((state!=token_list))
if((name> 17)||(base_ptr==0))bottom_line= true;
if((base_ptr==input_ptr)||bottom_line||(nn<error_context_lines))
/*312:*/
#line 6850 "tex.w"

{if((base_ptr==input_ptr)||(state!=token_list)||
(token_type!=backed_up)||(loc!=null))

{tally= 0;
old_setting= selector;
if(state!=token_list)
{/*313:*/
#line 6874 "tex.w"

if(name<=17)
if(terminal_input)
if(base_ptr==0)print_nl("<*>");else print_nl("<insert> ");
else{print_nl("<read ");
if(name==17)print_char('*');else print_int(name-1);

print_char('>');
}
else{print_nl("l.");print_int(line);
}
print_char(' ')

/*:313*/
#line 6857 "tex.w"
;
/*318:*/
#line 6985 "tex.w"

begin_pseudoprint;
if(buffer[limit]==end_line_char)j= limit;
else j= limit+1;
if(j> 0)for(i= start;i<=j-1;i++)
{if(i==loc)set_trick_count;
print(buffer[i]);
}

/*:318*/
#line 6858 "tex.w"
;
}
else{/*314:*/
#line 6887 "tex.w"

switch(token_type){
case parameter:print_nl("<argument> ");break;
case u_template:case v_template:print_nl("<template> ");break;
case backed_up:if(loc==null)print_nl("<recently read> ");
else print_nl("<to be read again> ");break;
case inserted:print_nl("<inserted text> ");break;
case macro:{print_ln();print_cs(name);
}break;
case output_text:print_nl("<output> ");break;
case every_par_text:print_nl("<everypar> ");break;
case every_math_text:print_nl("<everymath> ");break;
case every_display_text:print_nl("<everydisplay> ");break;
case every_hbox_text:print_nl("<everyhbox> ");break;
case every_vbox_text:print_nl("<everyvbox> ");break;
case every_job_text:print_nl("<everyjob> ");break;
case every_cr_text:print_nl("<everycr> ");break;
case mark_text:print_nl("<mark> ");break;
case write_text:print_nl("<write> ");break;
default:print_nl("?");
}

/*:314*/
#line 6860 "tex.w"
;
/*319:*/
#line 6994 "tex.w"

begin_pseudoprint;
if(token_type<macro)show_token_list(start,loc,100000);
else show_token_list(link(start),loc,100000)

/*:319*/
#line 6861 "tex.w"
;
}
selector= old_setting;
/*317:*/
#line 6963 "tex.w"

if(trick_count==1000000)set_trick_count;

if(tally<trick_count)m= tally-first_count;
else m= trick_count-first_count;
if(l+first_count<=half_error_line)
{p= 0;n= l+first_count;
}
else{print_str("...");p= l+first_count-half_error_line+3;
n= half_error_line;
}
for(q= p;q<=first_count-1;q++)print_char(trick_buf[q%error_line]);
print_ln();
for(q= 1;q<=n;q++)print_char(' ');
if(m+n<=error_line)p= first_count+m;else p= first_count+(error_line-n-3);
for(q= first_count;q<=p-1;q++)print_char(trick_buf[q%error_line]);
if(m+n> error_line)print_str("...")

/*:317*/
#line 6864 "tex.w"
;
incr(nn);
}
}

/*:312*/
#line 6840 "tex.w"

else if(nn==error_context_lines)
{print_nl("...");incr(nn);
}
if(bottom_line)goto done;
decr(base_ptr);
}
done:cur_input= input_stack[input_ptr];
}

/*:311*//*323:*/
#line 7033 "tex.w"
void begin_token_list(pointer p,quarterword t)
{push_input;state= token_list;start= p;token_type= t;
if(t>=macro)
{add_token_ref(p);
if(t==macro)param_start= param_ptr;
else{loc= link(p);
if(tracing_macros> 1)
{begin_diagnostic();print_nl("");
switch(t){
case mark_text:print_esc(/*1401:*/
#line 25099 "tex.w"
276
/*:1401*/
#line 7042 "tex.w"
);break;
case write_text:print_esc(/*1568:*/
#line 25600 "tex.w"
443
/*:1568*/
#line 7043 "tex.w"
);break;
default:print_cmd_chr(assign_toks,t-output_text+output_routine_loc);
}
print_str("->");token_show(p);end_diagnostic(false);
}
}
}
else loc= p;
}

/*:323*//*324:*/
#line 7058 "tex.w"
void end_token_list(void)
{if(token_type>=backed_up)
{if(token_type<=inserted)flush_list(start);
else{delete_token_ref(start);
if(token_type==macro)
while(param_ptr> param_start)
{decr(param_ptr);
flush_list(param_stack[param_ptr]);
}
}
}
else if(token_type==u_template)
if(align_state> 500000)align_state= 0;
else fatal_error("(interwoven alignment preambles are not allowed)");

pop_input;
check_interrupt;
}

/*:324*//*325:*/
#line 7085 "tex.w"
void back_input(void)
{pointer p;
while((state==token_list)&&(loc==null)&&(token_type!=v_template))
end_token_list();
p= get_avail();info(p)= cur_tok;
if(cur_tok<right_brace_limit)
if(cur_tok<left_brace_limit)decr(align_state);
else incr(align_state);
push_input;state= token_list;start= p;token_type= backed_up;
loc= p;
}

/*:325*//*327:*/
#line 7106 "tex.w"
void back_error(void)
{OK_to_interrupt= false;back_input();OK_to_interrupt= true;error();
}

void ins_error(void)
{OK_to_interrupt= false;back_input();token_type= inserted;
OK_to_interrupt= true;error();
}

/*:327*//*328:*/
#line 7121 "tex.w"
void begin_file_reading(void)
{if(in_open==max_in_open)overflow("text input levels",max_in_open);

if(first==buf_size)overflow("buffer size",buf_size);

incr(in_open);push_input;index= in_open;
line_stack[index]= line;start= first;state= mid_line;
name= 0;
}

/*:328*//*329:*/
#line 7134 "tex.w"
void end_file_reading(void)
{first= start;line= line_stack[index];
if(name> 17)a_close(&cur_file);
pop_input;decr(in_open);
}

/*:329*//*330:*/
#line 7144 "tex.w"
void clear_for_error_prompt(void)
{while((state!=token_list)&&terminal_input&&
(input_ptr> 0)&&(loc> limit))end_file_reading();
print_ln();clear_terminal;
}

/*:330*//*336:*/
#line 7211 "tex.w"
void check_outer_validity(void)
{pointer p;
pointer q;
if(scanner_status!=normal)
{deletions_allowed= false;
/*337:*/
#line 7237 "tex.w"

if(cur_cs!=0)
{if((state==token_list)||(name<1)||(name> 17))
{p= get_avail();info(p)= cs_token_flag+cur_cs;
back_list(p);
}
cur_cmd= spacer;cur_chr= ' ';
}

/*:337*/
#line 7216 "tex.w"
;
if(scanner_status> skipping)
/*338:*/
#line 7246 "tex.w"

{runaway();
if(cur_cs==0)print_err("File ended")

else{cur_cs= 0;print_err("Forbidden control sequence found");

}
print_str(" while scanning ");
/*339:*/
#line 7271 "tex.w"

p= get_avail();
switch(scanner_status){
case defining:{print_str("definition");info(p)= right_brace_token+'}';
}break;
case matching:{print_str("use");info(p)= par_token;long_state= outer_call;
}break;
case aligning:{print_str("preamble");info(p)= right_brace_token+'}';q= p;
p= get_avail();link(p)= q;info(p)= cs_token_flag+frozen_cr;
align_state= -1000000;
}break;
case absorbing:{print_str("text");info(p)= right_brace_token+'}';
}
}
ins_list(p)

/*:339*/
#line 7255 "tex.w"
;
print_str(" of ");sprint_cs(warning_index);
help4("I suspect you have forgotten a `}', causing me")
("to read past where you wanted me to stop.")
("I'll try to recover; but if the error is serious,")
("you'd better type `E' or `X' now and fix your file.");
error();
}

/*:338*/
#line 7218 "tex.w"

else{print_err("Incomplete ");print_cmd_chr(if_test,cur_if);

print_str("; all text was ignored after line ");print_int(skip_line);
help3("A forbidden control sequence occurred in skipped text.")
("This kind of error happens when you say `\\if...' and forget")
("the matching `\\fi'. I've inserted a `\\fi'; this might work.");
if(cur_cs!=0)cur_cs= 0;
else help_line[2]= 
"The file ended while I was skipping conditional text.";
cur_tok= cs_token_flag+frozen_fi;ins_error();
}
deletions_allowed= true;
}
}

/*:336*//*340:*/
#line 7289 "tex.w"
void firm_up_the_line(void);

/*:340*//*341:*/
#line 7295 "tex.w"
void get_next(void)
{





uint16_t k;
halfword t;
uint8_t cat;
ASCII_code c,cc;
uint8_t d;
restart:cur_cs= 0;
if(state!=token_list)
/*343:*/
#line 7325 "tex.w"


{get_cur_chr:if(loc<=limit)
{cur_chr= buffer[loc];incr(loc);
reswitch:cur_cmd= cat_code(cur_chr);
/*344:*/
#line 7349 "tex.w"

switch(state+cur_cmd){
/*345:*/
#line 7363 "tex.w"

any_state_plus(ignore):case skip_blanks+spacer:case new_line+spacer

/*:345*/
#line 7351 "tex.w"
:goto get_cur_chr;
any_state_plus(escape):/*354:*/
#line 7469 "tex.w"

{if(loc> limit)cur_cs= null_cs;
else{start_cs:k= loc;cur_chr= buffer[k];cat= cat_code(cur_chr);
incr(k);
if(cat==letter)state= skip_blanks;
else if(cat==spacer)state= skip_blanks;
else state= mid_line;
if((cat==letter)&&(k<=limit))
/*356:*/
#line 7515 "tex.w"

{do{cur_chr= buffer[k];cat= cat_code(cur_chr);incr(k);
}while(!((cat!=letter)||(k> limit)));
/*355:*/
#line 7494 "tex.w"

{if(buffer[k]==cur_chr)if(cat==sup_mark)if(k<limit)
{c= buffer[k+1];if(c<0200)
{d= 2;
if(is_hex(c))if(k+2<=limit)
{cc= buffer[k+2];if(is_hex(cc))incr(d);
}
if(d> 2)
{hex_to_cur_chr;buffer[k-1]= cur_chr;
}
else if(c<0100)buffer[k-1]= c+0100;
else buffer[k-1]= c-0100;
limit= limit-d;first= first-d;
while(k<=limit)
{buffer[k]= buffer[k+d];incr(k);
}
goto start_cs;
}
}
}

/*:355*/
#line 7518 "tex.w"
;
if(cat!=letter)decr(k);

if(k> loc+1)
{cur_cs= id_lookup(loc,k-loc);loc= k;goto found;
}
}

/*:356*/
#line 7479 "tex.w"

else/*355:*/
#line 7494 "tex.w"

{if(buffer[k]==cur_chr)if(cat==sup_mark)if(k<limit)
{c= buffer[k+1];if(c<0200)
{d= 2;
if(is_hex(c))if(k+2<=limit)
{cc= buffer[k+2];if(is_hex(cc))incr(d);
}
if(d> 2)
{hex_to_cur_chr;buffer[k-1]= cur_chr;
}
else if(c<0100)buffer[k-1]= c+0100;
else buffer[k-1]= c-0100;
limit= limit-d;first= first-d;
while(k<=limit)
{buffer[k]= buffer[k+d];incr(k);
}
goto start_cs;
}
}
}

/*:355*/
#line 7480 "tex.w"
;
cur_cs= single_base+buffer[loc];incr(loc);
}
found:cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);
if(cur_cmd>=outer_call)check_outer_validity();
}

/*:354*/
#line 7353 "tex.w"
break;
any_state_plus(active_char):/*353:*/
#line 7448 "tex.w"

{cur_cs= cur_chr+active_base;
cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);state= mid_line;
if(cur_cmd>=outer_call)check_outer_validity();
}

/*:353*/
#line 7355 "tex.w"
break;
any_state_plus(sup_mark):/*352:*/
#line 7432 "tex.w"

{if(cur_chr==buffer[loc])if(loc<limit)
{c= buffer[loc+1];if(c<0200)
{loc= loc+2;
if(is_hex(c))if(loc<=limit)
{cc= buffer[loc];if(is_hex(cc))
{incr(loc);hex_to_cur_chr;goto reswitch;
}
}
if(c<0100)cur_chr= c+0100;else cur_chr= c-0100;
goto reswitch;
}
}
state= mid_line;
}

/*:352*/
#line 7357 "tex.w"
break;
any_state_plus(invalid_char):/*346:*/
#line 7370 "tex.w"

{print_err("Text line contains an invalid character");

help2("A funny symbol that I can't read has just been input.")
("Continue, and I'll forget that it ever happened.");
deletions_allowed= false;error();deletions_allowed= true;
goto restart;
}

/*:346*/
#line 7358 "tex.w"

/*347:*/
#line 7382 "tex.w"

case mid_line+spacer:/*349:*/
#line 7410 "tex.w"

{state= skip_blanks;cur_chr= ' ';
}

/*:349*/
#line 7383 "tex.w"
break;
case mid_line+car_ret:/*348:*/
#line 7404 "tex.w"

{loc= limit+1;cur_cmd= spacer;cur_chr= ' ';
}

/*:348*/
#line 7384 "tex.w"
break;
case skip_blanks+car_ret:any_state_plus(comment):
/*350:*/
#line 7414 "tex.w"

{loc= limit+1;goto get_cur_chr;
}

/*:350*/
#line 7386 "tex.w"

case new_line+car_ret:/*351:*/
#line 7418 "tex.w"

{loc= limit+1;cur_cs= par_loc;cur_cmd= eq_type(cur_cs);
cur_chr= equiv(cur_cs);
if(cur_cmd>=outer_call)check_outer_validity();
}

/*:351*/
#line 7387 "tex.w"
break;
case mid_line+left_brace:incr(align_state);break;
case skip_blanks+left_brace:case new_line+left_brace:{
state= mid_line;incr(align_state);
}break;
case mid_line+right_brace:decr(align_state);break;
case skip_blanks+right_brace:case new_line+right_brace:{
state= mid_line;decr(align_state);
}break;
add_delims_to(case skip_blanks):add_delims_to(case new_line):state= mid_line;break;

/*:347*/
#line 7359 "tex.w"

default:do_nothing;
}

/*:344*/
#line 7331 "tex.w"
;
}
else{state= new_line;
/*360:*/
#line 7578 "tex.w"

if(name> 17)/*362:*/
#line 7614 "tex.w"

{incr(line);first= start;
if(!force_eof)
{if(input_ln(&cur_file,true))
firm_up_the_line();
else force_eof= true;
}
if(force_eof)
{print_char(')');decr(open_parens);
update_terminal;
force_eof= false;
end_file_reading();
check_outer_validity();goto restart;
}
if(end_line_char_inactive)decr(limit);
else buffer[limit]= end_line_char;
first= limit+1;loc= start;
}

/*:362*/
#line 7580 "tex.w"

else{if(!terminal_input)
{cur_cmd= 0;cur_chr= 0;return;
}
if(input_ptr> 0)
{end_file_reading();goto restart;
}
if(selector<log_only)open_log_file();
if(interaction> nonstop_mode)
{if(end_line_char_inactive)incr(limit);
if(limit==start)
print_nl("(Please type a command or say `\\end')");

print_ln();first= start;
prompt_input("*");

limit= last;
if(end_line_char_inactive)decr(limit);
else buffer[limit]= end_line_char;
first= limit+1;
loc= start;
}
else fatal_error("*** (job aborted, no legal \\end found)");



}

/*:360*/
#line 7335 "tex.w"
;
check_interrupt;
goto get_cur_chr;
}
}

/*:343*/
#line 7309 "tex.w"

else/*357:*/
#line 7529 "tex.w"

if(loc!=null)

{t= info(loc);loc= link(loc);
if(t>=cs_token_flag)
{cur_cs= t-cs_token_flag;
cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);
if(cur_cmd>=outer_call)
if(cur_cmd==dont_expand)
/*358:*/
#line 7560 "tex.w"

{cur_cs= info(loc)-cs_token_flag;loc= null;
cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);
if(cur_cmd> max_command)
{cur_cmd= relax;cur_chr= no_expand_flag;
}
}

/*:358*/
#line 7538 "tex.w"

else check_outer_validity();
}
else{cur_cmd= t/0400;cur_chr= t%0400;
switch(cur_cmd){
case left_brace:incr(align_state);break;
case right_brace:decr(align_state);break;
case out_param:/*359:*/
#line 7568 "tex.w"

{begin_token_list(param_stack[param_start+cur_chr-1],parameter);
goto restart;
}

/*:359*/
#line 7545 "tex.w"

default:do_nothing;
}
}
}
else{
end_token_list();goto restart;
}

/*:357*/
#line 7311 "tex.w"
;
/*342:*/
#line 7321 "tex.w"

if(cur_cmd<=car_ret)if(cur_cmd>=tab_mark)if(align_state==0)
/*789:*/
#line 15582 "tex.w"

{if((scanner_status==aligning)||(cur_align==null))
fatal_error("(interwoven alignment preambles are not allowed)");

cur_cmd= extra_info(cur_align);extra_info(cur_align)= cur_chr;
if(cur_cmd==omit)begin_token_list(omit_template,v_template);
else begin_token_list(v_part(cur_align),v_template);
align_state= 1000000;goto restart;
}

/*:789*/
#line 7323 "tex.w"


/*:342*/
#line 7312 "tex.w"
;
}

/*:341*//*363:*/
#line 7640 "tex.w"
void firm_up_the_line(void)
{int k;
limit= last;
if(pausing> 0)if(interaction> nonstop_mode)
{wake_up_terminal;print_ln();
if(start<limit)for(k= start;k<=limit-1;k++)print(buffer[k]);
first= limit;prompt_input("=>");

if(last> first)
{for(k= first;k<=last-1;k++)
buffer[k+start-first]= buffer[k];
limit= start+last-first;
}
}
}

/*:363*//*365:*/
#line 7679 "tex.w"
void get_token(void)
{no_new_control_sequence= false;get_next();no_new_control_sequence= true;

if(cur_cs==0)cur_tok= (cur_cmd*0400)+cur_chr;
else cur_tok= cs_token_flag+cur_cs;
}

/*:365*//*366:*/
#line 7705 "tex.w"
/*389:*/
#line 8001 "tex.w"

void macro_call(void)
{
pointer r;
pointer p;
pointer q;
pointer s;
pointer t;
pointer u,v;
pointer rbrace_ptr;
small_number n;
halfword unbalance;
int m;
pointer ref_count;
small_number save_scanner_status;
pointer save_warning_index;
ASCII_code match_chr;
save_scanner_status= scanner_status;save_warning_index= warning_index;
warning_index= cur_cs;ref_count= cur_chr;r= link(ref_count);n= 0;
if(tracing_macros> 0)/*401:*/
#line 8225 "tex.w"

{begin_diagnostic();print_ln();print_cs(warning_index);
token_show(ref_count);end_diagnostic(false);
}

/*:401*/
#line 8020 "tex.w"
;
if(info(r)!=end_match_token)
/*391:*/
#line 8057 "tex.w"

{scanner_status= matching;unbalance= 0;
long_state= eq_type(cur_cs);
if(long_state>=outer_call)long_state= long_state-2;
do{link(temp_head)= null;
if((info(r)> match_token+255)||(info(r)<match_token))s= null;
else{match_chr= info(r)-match_token;s= link(r);r= s;
p= temp_head;m= 0;
}
/*392:*/
#line 8077 "tex.w"

resume:get_token();
if(cur_tok==info(r))
/*394:*/
#line 8109 "tex.w"

{r= link(r);
if((info(r)>=match_token)&&(info(r)<=end_match_token))
{if(cur_tok<left_brace_limit)decr(align_state);
goto found;
}
else goto resume;
}

/*:394*/
#line 8081 "tex.w"
;
/*397:*/
#line 8165 "tex.w"

if(s!=r)
if(s==null)/*398:*/
#line 8182 "tex.w"

{print_err("Use of ");sprint_cs(warning_index);

print_str(" doesn't match its definition");
help4("If you say, e.g., `\\def\\a1{...}', then you must always")
("put `1' after `\\a', since control sequence names are")
("made up of letters only. The macro here has not been")
("followed by the required stuff, so I'm ignoring it.");
error();goto end;
}

/*:398*/
#line 8167 "tex.w"

else{t= s;
do{store_new_token(info(t));incr(m);u= link(t);v= s;
loop{if(u==r)
if(cur_tok!=info(v))goto done;
else{r= link(v);goto resume;
}
if(info(u)!=info(v))goto done;
u= link(u);v= link(v);
}
done:t= link(t);
}while(!(t==r));
r= s;
}

/*:397*/
#line 8083 "tex.w"
;
if(cur_tok==par_token)if(long_state!=long_call)
/*396:*/
#line 8134 "tex.w"

{if(long_state==call)
{runaway();print_err("Paragraph ended before ");

sprint_cs(warning_index);print_str(" was complete");
help3("I suspect you've forgotten a `}', causing me to apply this")
("control sequence to too much text. How can we recover?")
("My plan is to forget the whole thing and hope for the best.");
back_error();
}
pstack[n]= link(temp_head);align_state= align_state-unbalance;
for(m= 0;m<=n;m++)flush_list(pstack[m]);
goto end;
}

/*:396*/
#line 8085 "tex.w"
;
if(cur_tok<right_brace_limit)
if(cur_tok<left_brace_limit)
/*399:*/
#line 8193 "tex.w"

{unbalance= 1;

loop{fast_store_new_token(cur_tok);get_token();
if(cur_tok==par_token)if(long_state!=long_call)
/*396:*/
#line 8134 "tex.w"

{if(long_state==call)
{runaway();print_err("Paragraph ended before ");

sprint_cs(warning_index);print_str(" was complete");
help3("I suspect you've forgotten a `}', causing me to apply this")
("control sequence to too much text. How can we recover?")
("My plan is to forget the whole thing and hope for the best.");
back_error();
}
pstack[n]= link(temp_head);align_state= align_state-unbalance;
for(m= 0;m<=n;m++)flush_list(pstack[m]);
goto end;
}

/*:396*/
#line 8198 "tex.w"
;
if(cur_tok<right_brace_limit)
if(cur_tok<left_brace_limit)incr(unbalance);
else{decr(unbalance);
if(unbalance==0)goto done1;
}
}
done1:rbrace_ptr= p;store_new_token(cur_tok);
}

/*:399*/
#line 8088 "tex.w"

else/*395:*/
#line 8118 "tex.w"

{back_input();print_err("Argument of ");sprint_cs(warning_index);

print_str(" has an extra }");
help6("I've run across a `}' that doesn't seem to match anything.")
("For example, `\\def\\a#1{...}' and `\\a}' would produce")
("this error. If you simply proceed now, the `\\par' that")
("I've just inserted will cause me to report a runaway")
("argument that might be the root of the problem. But if")
("your `}' was spurious, just type `2' and it will go away.");
incr(align_state);long_state= call;cur_tok= par_token;ins_error();
goto resume;
}

/*:395*/
#line 8089 "tex.w"

else/*393:*/
#line 8097 "tex.w"

{if(cur_tok==space_token)
if(info(r)<=end_match_token)
if(info(r)>=match_token)goto resume;
store_new_token(cur_tok);
}

/*:393*/
#line 8091 "tex.w"
;
incr(m);
if(info(r)> end_match_token)goto resume;
if(info(r)<match_token)goto resume;
found:if(s!=null)/*400:*/
#line 8211 "tex.w"

{if((m==1)&&(info(p)<right_brace_limit)&&(p!=temp_head))
{link(rbrace_ptr)= null;free_avail(p);
p= link(temp_head);pstack[n]= link(p);free_avail(p);
}
else pstack[n]= link(temp_head);
incr(n);
if(tracing_macros> 0)
{begin_diagnostic();print_nl("");print(match_chr);print_int(n);
print_str("<-");show_token_list(pstack[n-1],null,1000);
end_diagnostic(false);
}
}

/*:400*/
#line 8095 "tex.w"


/*:392*/
#line 8067 "tex.w"
;

}while(!(info(r)==end_match_token));
}

/*:391*/
#line 8023 "tex.w"
;
/*390:*/
#line 8032 "tex.w"

while((state==token_list)&&(loc==null)&&(token_type!=v_template))
end_token_list();
begin_token_list(ref_count,macro);name= warning_index;loc= link(r);
if(n> 0)
{if(param_ptr+n> max_param_stack)
{max_param_stack= param_ptr+n;
if(max_param_stack> param_size)
overflow("parameter stack size",param_size);

}
for(m= 0;m<=n-1;m++)param_stack[param_ptr+m]= pstack[m];
param_ptr= param_ptr+n;
}

/*:390*/
#line 8024 "tex.w"
;
end:scanner_status= save_scanner_status;warning_index= save_warning_index;
}

/*:389*/
#line 7705 "tex.w"

/*379:*/
#line 7865 "tex.w"

void insert_relax(void)
{cur_tok= cs_token_flag+cur_cs;back_input();
cur_tok= cs_token_flag+frozen_relax;back_input();token_type= inserted;
}

/*:379*/
#line 7706 "tex.w"

void pass_text(void);
void start_input(void);
void conditional(void);
void get_x_token(void);
void conv_toks(void);
void ins_the_toks(void);
void expand(void)
{halfword t;
pointer p,q,r;
uint16_t j;
int cv_backup;
small_number cvl_backup,radix_backup,co_backup;

pointer backup_backup;
small_number save_scanner_status;
cv_backup= cur_val;cvl_backup= cur_val_level;radix_backup= radix;
co_backup= cur_order;backup_backup= link(backup_head);
if(cur_cmd<call)/*367:*/
#line 7731 "tex.w"

{if(tracing_commands> 1)show_cur_cmd_chr();
switch(cur_cmd){
case top_bot_mark:/*386:*/
#line 7957 "tex.w"

{if(cur_mark[cur_chr]!=null)
begin_token_list(cur_mark[cur_chr],mark_text);
}

/*:386*/
#line 7734 "tex.w"
break;
case expand_after:/*368:*/
#line 7749 "tex.w"

{get_token();t= cur_tok;get_token();
if(cur_cmd> max_command)expand();else back_input();
cur_tok= t;back_input();
}

/*:368*/
#line 7735 "tex.w"
break;
case no_expand:/*369:*/
#line 7763 "tex.w"

{save_scanner_status= scanner_status;scanner_status= normal;
get_token();scanner_status= save_scanner_status;t= cur_tok;
back_input();
if(t>=cs_token_flag)
{p= get_avail();info(p)= cs_token_flag+frozen_dont_expand;
link(p)= loc;start= p;loc= p;
}
}

/*:369*/
#line 7736 "tex.w"
break;
case cs_name:/*372:*/
#line 7795 "tex.w"

{r= get_avail();p= r;
do{get_x_token();
if(cur_cs==0)store_new_token(cur_tok);
}while(!(cur_cs!=0));
if(cur_cmd!=end_cs_name)/*373:*/
#line 7809 "tex.w"

{print_err("Missing ");print_esc(/*1527:*/
#line 25477 "tex.w"
402
/*:1527*/
#line 7810 "tex.w"
);print_str(" inserted");

help2("The control sequence marked <to be read again> should")
("not appear between \\csname and \\endcsname.");
back_error();
}

/*:373*/
#line 7800 "tex.w"
;
/*374:*/
#line 7817 "tex.w"

j= first;p= link(r);
while(p!=null)
{if(j>=max_buf_stack)
{max_buf_stack= j+1;
if(max_buf_stack==buf_size)
overflow("buffer size",buf_size);

}
buffer[j]= info(p)%0400;incr(j);p= link(p);
}
if(j> first+1)
{no_new_control_sequence= false;cur_cs= id_lookup(first,j-first);
no_new_control_sequence= true;
}
else if(j==first)cur_cs= null_cs;
else cur_cs= single_base+buffer[first]

/*:374*/
#line 7801 "tex.w"
;
flush_list(r);
if(eq_type(cur_cs)==undefined_cs)
{eq_define(cur_cs,relax,256);
}
cur_tok= cur_cs+cs_token_flag;back_input();
}

/*:372*/
#line 7737 "tex.w"
break;
case convert:conv_toks();break;
case the:ins_the_toks();break;
case if_test:conditional();break;
case fi_or_else:/*510:*/
#line 9940 "tex.w"

if(cur_chr> if_limit)
if(if_limit==if_code)insert_relax();
else{print_err("Extra ");print_cmd_chr(fi_or_else,cur_chr);



help1("I'm ignoring this; it doesn't match any \\if.");
error();
}
else{while(cur_chr!=fi_code)pass_text();
/*496:*/
#line 9732 "tex.w"

{p= cond_ptr;if_line= if_line_field(p);
cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p);
free_node(p,if_node_size);
}

/*:496*/
#line 9951 "tex.w"
;
}

/*:510*/
#line 7741 "tex.w"
break;
case input:/*378:*/
#line 7857 "tex.w"

if(cur_chr> 0)force_eof= true;
else if(name_in_progress)insert_relax();
else start_input()

/*:378*/
#line 7742 "tex.w"
;break;
default:/*370:*/
#line 7773 "tex.w"

{print_err("Undefined control sequence");

help5("The control sequence at the end of the top line")
("of your error message was never \\def'ed. If you have")
("misspelled it (e.g., `\\hobx'), type `I' and the correct")
("spelling (e.g., `I\\hbox'). Otherwise just continue,")
("and I'll forget about whatever was undefined.");
error();
}

/*:370*/
#line 7743 "tex.w"

}
}

/*:367*/
#line 7724 "tex.w"

else if(cur_cmd<end_template)macro_call();
else/*375:*/
#line 7841 "tex.w"

{cur_tok= cs_token_flag+frozen_endv;back_input();
}

/*:375*/
#line 7726 "tex.w"
;
cur_val= cv_backup;cur_val_level= cvl_backup;radix= radix_backup;
cur_order= co_backup;link(backup_head)= backup_backup;
}

/*:366*//*380:*/
#line 7875 "tex.w"
void get_x_token(void)

{
restart:get_next();

if(cur_cmd<=max_command)goto done;
if(cur_cmd>=call)
if(cur_cmd<end_template)macro_call();
else{cur_cs= frozen_endv;cur_cmd= endv;
goto done;
}
else expand();
goto restart;
done:if(cur_cs==0)cur_tok= (cur_cmd*0400)+cur_chr;
else cur_tok= cs_token_flag+cur_cs;
}

/*:380*//*381:*/
#line 7895 "tex.w"
void x_token(void)
{while(cur_cmd> max_command)
{expand();
get_next();
}
if(cur_cs==0)cur_tok= (cur_cmd*0400)+cur_chr;
else cur_tok= cs_token_flag+cur_cs;
}

/*:381*//*403:*/
#line 8243 "tex.w"
void scan_left_brace(void)
{/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 8244 "tex.w"
;
if(cur_cmd!=left_brace)
{print_err("Missing { inserted");

help4("A left brace was mandatory here, so I've put one in.")
("You might want to delete and/or insert some corrections")
("so that I will find a matching right brace soon.")
("(If you're confused by all this, try typing `I}' now.)");
back_error();cur_tok= left_brace_token+'{';cur_cmd= left_brace;
cur_chr= '{';incr(align_state);
}
}

/*:403*//*405:*/
#line 8264 "tex.w"
void scan_optional_equals(void)
{/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 8265 "tex.w"
;
if(cur_tok!=other_token+'=')back_input();
}

/*:405*//*407:*/
#line 8288 "tex.w"
bool scan_keyword(str_number s)
{
pointer p;
pointer q;
pool_pointer k;
p= backup_head;link(p)= null;k= str_start[s];
while(k<str_start[s+1])
{get_x_token();

if((cur_cs==0)&&
((cur_chr==so(str_pool[k]))||(cur_chr==so(str_pool[k])-'a'+'A')))
{store_new_token(cur_tok);incr(k);
}
else if((cur_cmd!=spacer)||(p!=backup_head))
{back_input();
if(p!=backup_head)back_list(link(backup_head));
return false;
}
}
flush_list(link(backup_head));return true;
}

/*:407*//*408:*/
#line 8313 "tex.w"
void mu_error(void)
{print_err("Incompatible glue units");

help1("I'm going to assume that 1mu=1pt when they're mixed.");
error();
}

/*:408*//*409:*/
#line 8330 "tex.w"
void scan_int(void);
/*433:*/
#line 8666 "tex.w"

void scan_eight_bit_int(void)
{scan_int();
if((cur_val<0)||(cur_val> 255))
{print_err("Bad register code");

help2("A register number must be between 0 and 255.")
("I changed this one to zero.");int_error(cur_val);cur_val= 0;
}
}

/*:433*//*434:*/
#line 8677 "tex.w"

void scan_char_num(void)
{scan_int();
if((cur_val<0)||(cur_val> 255))
{print_err("Bad character code");

help2("A character number must be between 0 and 255.")
("I changed this one to zero.");int_error(cur_val);cur_val= 0;
}
}

/*:434*//*435:*/
#line 8691 "tex.w"

void scan_four_bit_int(void)
{scan_int();
if((cur_val<0)||(cur_val> 15))
{print_err("Bad number");

help2("Since I expected to read a number between 0 and 15,")
("I changed this one to zero.");int_error(cur_val);cur_val= 0;
}
}

/*:435*//*436:*/
#line 8702 "tex.w"

void scan_fifteen_bit_int(void)
{scan_int();
if((cur_val<0)||(cur_val> 077777))
{print_err("Bad mathchar");

help2("A mathchar number must be between 0 and 32767.")
("I changed this one to zero.");int_error(cur_val);cur_val= 0;
}
}

/*:436*//*437:*/
#line 8713 "tex.w"

void scan_twenty_seven_bit_int(void)
{scan_int();
if((cur_val<0)||(cur_val> 0777777777))
{print_err("Bad delimiter code");

help2("A numeric delimiter code must be between 0 and 2^{27}-1.")
("I changed this one to zero.");int_error(cur_val);cur_val= 0;
}
}

/*:437*/
#line 8331 "tex.w"

/*577:*/
#line 11265 "tex.w"

void scan_font_ident(void)
{internal_font_number f;
halfword m;
/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 11269 "tex.w"
;
if(cur_cmd==def_font)f= cur_font;
else if(cur_cmd==set_font)f= cur_chr;
else if(cur_cmd==def_family)
{m= cur_chr;scan_four_bit_int();f= equiv(m+cur_val);
}
else{print_err("Missing font identifier");

help2("I was looking for a control sequence whose")
("current meaning has been defined by \\font.");
back_error();f= null_font;
}
cur_val= f;
}

/*:577*//*578:*/
#line 11288 "tex.w"

void find_font_dimen(bool writing)

{internal_font_number f;
int n;
scan_int();n= cur_val;scan_font_ident();f= cur_val;
if(n<=0)cur_val= fmem_ptr;
else{if(writing&&(n<=space_shrink_code)&&
(n>=space_code)&&(font_glue[f]!=null))
{delete_glue_ref(font_glue[f]);
font_glue[f]= null;
}
if(n> font_params[f])
if(f<font_ptr)cur_val= fmem_ptr;
else/*580:*/
#line 11319 "tex.w"

{do{if(fmem_ptr==font_mem_size)
overflow("font memory",font_mem_size);

font_info[fmem_ptr].sc= 0;incr(fmem_ptr);incr(font_params[f]);
}while(!(n==font_params[f]));
cur_val= fmem_ptr-1;
}

/*:580*/
#line 11302 "tex.w"

else cur_val= n+param_base[f];
}
/*579:*/
#line 11308 "tex.w"

if(cur_val==fmem_ptr)
{print_err("Font ");print_esc(font_id_text(f));
print_str(" has only ");print_int(font_params[f]);
print_str(" fontdimen parameters");

help2("To increase the number of font parameters, you must")
("use \\fontdimen immediately after the \\font is loaded.");
error();
}

/*:579*/
#line 11305 "tex.w"
;
}

/*:578*/
#line 8332 "tex.w"


/*:409*//*413:*/
#line 8403 "tex.w"
void scan_something_internal(small_number level,bool negative)

{halfword m;
uint8_t p;
m= cur_chr;
switch(cur_cmd){
case def_code:/*414:*/
#line 8433 "tex.w"

{scan_char_num();
if(m==math_code_base)scanned_result(ho(math_code(cur_val)))(int_val)
else if(m<math_code_base)scanned_result(equiv(m+cur_val))(int_val)
else scanned_result(eqtb[m+cur_val].i)(int_val);
}

/*:414*/
#line 8409 "tex.w"
break;
case toks_register:case assign_toks:case def_family:case set_font:case def_font:/*415:*/
#line 8440 "tex.w"

if(level!=tok_val)
{print_err("Missing number, treated as zero");

help3("A number should have been here; I inserted `0'.")
("(If you can't figure out why I needed to see a number,")
("look up `weird error' in the index to The TeXbook.)");

back_error();scanned_result(0)(dimen_val);
}
else if(cur_cmd<=assign_toks)
{if(cur_cmd<assign_toks)
{scan_eight_bit_int();m= toks_base+cur_val;
}
scanned_result(equiv(m))(tok_val);
}
else{back_input();scan_font_ident();
scanned_result(font_id_base+cur_val)(ident_val);
}

/*:415*/
#line 8411 "tex.w"
break;
case assign_int:scanned_result(eqtb[m].i)(int_val)break;
case assign_dimen:scanned_result(eqtb[m].sc)(dimen_val)break;
case assign_glue:scanned_result(equiv(m))(glue_val)break;
case assign_mu_glue:scanned_result(equiv(m))(mu_val)break;
case set_aux:/*418:*/
#line 8514 "tex.w"

if(abs(mode)!=m)
{print_err("Improper ");print_cmd_chr(set_aux,m);


help4("You can refer to \\spacefactor only in horizontal mode;")
("you can refer to \\prevdepth only in vertical mode; and")
("neither of these is meaningful inside \\write. So")
("I'm forgetting what you said and using zero instead.");
error();
if(level!=tok_val)scanned_result(0)(dimen_val)
else scanned_result(0)(int_val);
}
else if(m==vmode)scanned_result(prev_depth)(dimen_val)
else scanned_result(space_factor)(int_val)

/*:418*/
#line 8416 "tex.w"
break;
case set_prev_graf:/*422:*/
#line 8553 "tex.w"

if(mode==0)scanned_result(0)(int_val)
else{nest[nest_ptr]= cur_list;p= nest_ptr;
while(abs(nest[p].mode_field)!=vmode)decr(p);
scanned_result(nest[p].pg_field)(int_val);
}

/*:422*/
#line 8417 "tex.w"
break;
case set_page_int:/*419:*/
#line 8530 "tex.w"

{if(m==0)cur_val= dead_cycles;else cur_val= insert_penalties;
cur_val_level= int_val;
}

/*:419*/
#line 8418 "tex.w"
break;
case set_page_dimen:/*421:*/
#line 8546 "tex.w"

{if((page_contents==empty)&&(!output_active))
if(m==0)cur_val= max_dimen;else cur_val= 0;
else cur_val= page_so_far[m];
cur_val_level= dimen_val;
}

/*:421*/
#line 8419 "tex.w"
break;
case set_shape:/*423:*/
#line 8560 "tex.w"

{if(par_shape_ptr==null)cur_val= 0;
else cur_val= info(par_shape_ptr);
cur_val_level= int_val;
}

/*:423*/
#line 8420 "tex.w"
break;
case set_box_dimen:/*420:*/
#line 8535 "tex.w"

{scan_eight_bit_int();
if(box(cur_val)==null)cur_val= 0;else cur_val= mem[box(cur_val)+m].sc;
cur_val_level= dimen_val;
}

/*:420*/
#line 8421 "tex.w"
break;
case char_given:case math_given:scanned_result(cur_chr)(int_val)break;
case assign_font_dimen:/*425:*/
#line 8597 "tex.w"

{find_font_dimen(false);font_info[fmem_ptr].sc= 0;
scanned_result(font_info[cur_val].sc)(dimen_val);
}

/*:425*/
#line 8423 "tex.w"
break;
case assign_font_int:/*426:*/
#line 8602 "tex.w"

{scan_font_ident();
if(m==0)scanned_result(hyphen_char[cur_val])(int_val)
else scanned_result(skew_char[cur_val])(int_val);
}

/*:426*/
#line 8424 "tex.w"
break;
case register:/*427:*/
#line 8608 "tex.w"

{scan_eight_bit_int();
switch(m){
case int_val:cur_val= count(cur_val);break;
case dimen_val:cur_val= dimen(cur_val);break;
case glue_val:cur_val= skip(cur_val);break;
case mu_val:cur_val= mu_skip(cur_val);
}
cur_val_level= m;
}

/*:427*/
#line 8425 "tex.w"
break;
case last_item:/*424:*/
#line 8572 "tex.w"

if(cur_chr> glue_val)
{if(cur_chr==input_line_no_code)cur_val= line;
else cur_val= last_badness;
cur_val_level= int_val;
}
else{if(cur_chr==glue_val)cur_val= zero_glue;else cur_val= 0;
cur_val_level= cur_chr;
if(!is_char_node(tail)&&(mode!=0))
switch(cur_chr){
case int_val:if(type(tail)==penalty_node)cur_val= penalty(tail);break;
case dimen_val:if(type(tail)==kern_node)cur_val= width(tail);break;
case glue_val:if(type(tail)==glue_node)
{cur_val= glue_ptr(tail);
if(subtype(tail)==mu_glue)cur_val_level= mu_val;
}
}
else if((mode==vmode)&&(tail==head))
switch(cur_chr){
case int_val:cur_val= last_penalty;break;
case dimen_val:cur_val= last_kern;break;
case glue_val:if(last_glue!=max_halfword)cur_val= last_glue;
}
}

/*:424*/
#line 8426 "tex.w"
break;
default:/*428:*/
#line 8619 "tex.w"

{print_err("You can't use `");print_cmd_chr(cur_cmd,cur_chr);

print_str("' after ");print_esc(/*1559:*/
#line 25573 "tex.w"
434
/*:1559*/
#line 8622 "tex.w"
);
help1("I'm forgetting what you said and using zero instead.");
error();
if(level!=tok_val)scanned_result(0)(dimen_val)
else scanned_result(0)(int_val);
}

/*:428*/
#line 8427 "tex.w"

}
while(cur_val_level> level)/*429:*/
#line 8635 "tex.w"

{if(cur_val_level==glue_val)cur_val= width(cur_val);
else if(cur_val_level==mu_val)mu_error();
decr(cur_val_level);
}

/*:429*/
#line 8429 "tex.w"
;
/*430:*/
#line 8645 "tex.w"

if(negative)
if(cur_val_level>=glue_val)
{cur_val= new_spec(cur_val);
/*431:*/
#line 8655 "tex.w"

{negate(width(cur_val));
negate(stretch(cur_val));
negate(shrink(cur_val));
}

/*:431*/
#line 8649 "tex.w"
;
}
else negate(cur_val);
else if((cur_val_level>=glue_val)&&(cur_val_level<=mu_val))
add_glue_ref(cur_val)

/*:430*/
#line 8430 "tex.w"
;
}

/*:413*//*440:*/
#line 8756 "tex.w"
void scan_int(void)
{
bool negative;
int m;
small_number d;
bool vacuous;
bool OK_so_far;
radix= 0;OK_so_far= true;
/*441:*/
#line 8772 "tex.w"

negative= false;
do{/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 8774 "tex.w"
;
if(cur_tok==other_token+'-')
{negative= !negative;cur_tok= other_token+'+';
}
}while(!(cur_tok!=other_token+'+'))

/*:441*/
#line 8764 "tex.w"
;
if(cur_tok==alpha_token)/*442:*/
#line 8783 "tex.w"

{get_token();
if(cur_tok<cs_token_flag)
{cur_val= cur_chr;
if(cur_cmd<=right_brace)
if(cur_cmd==right_brace)incr(align_state);
else decr(align_state);
}
else if(cur_tok<cs_token_flag+single_base)
cur_val= cur_tok-cs_token_flag-active_base;
else cur_val= cur_tok-cs_token_flag-single_base;
if(cur_val> 255)
{print_err("Improper alphabetic constant");

help2("A one-character control sequence belongs after a ` mark.")
("So I'm essentially inserting \\0 here.");
cur_val= '0';back_error();
}
else/*443:*/
#line 8804 "tex.w"

{get_x_token();if(cur_cmd!=spacer)back_input();
}

/*:443*/
#line 8801 "tex.w"
;
}

/*:442*/
#line 8765 "tex.w"

else if((cur_cmd>=min_internal)&&(cur_cmd<=max_internal))
scan_something_internal(int_val,false);
else/*444:*/
#line 8808 "tex.w"

{radix= 10;m= 214748364;
if(cur_tok==octal_token)
{radix= 8;m= 02000000000;get_x_token();
}
else if(cur_tok==hex_token)
{radix= 16;m= 01000000000;get_x_token();
}
vacuous= true;cur_val= 0;
/*445:*/
#line 8827 "tex.w"

loop{if((cur_tok<zero_token+radix)&&(cur_tok>=zero_token)&&
(cur_tok<=zero_token+9))d= cur_tok-zero_token;
else if(radix==16)
if((cur_tok<=A_token+5)&&(cur_tok>=A_token))d= cur_tok-A_token+10;
else if((cur_tok<=other_A_token+5)&&(cur_tok>=other_A_token))
d= cur_tok-other_A_token+10;
else goto done;
else goto done;
vacuous= false;
if((cur_val>=m)&&((cur_val> m)||(d> 7)||(radix!=10)))
{if(OK_so_far)
{print_err("Number too big");

help2("I can only go up to 2147483647='17777777777=\"7FFFFFFF,")
("so I'm using that number instead of yours.");
error();cur_val= infinity;OK_so_far= false;
}
}
else cur_val= cur_val*radix+d;
get_x_token();
}
done:

/*:445*/
#line 8817 "tex.w"
;
if(vacuous)/*446:*/
#line 8851 "tex.w"

{print_err("Missing number, treated as zero");

help3("A number should have been here; I inserted `0'.")
("(If you can't figure out why I needed to see a number,")
("look up `weird error' in the index to The TeXbook.)");

back_error();
}

/*:446*/
#line 8818 "tex.w"

else if(cur_cmd!=spacer)back_input();
}

/*:444*/
#line 8768 "tex.w"
;
if(negative)negate(cur_val);
}

/*:440*//*448:*/
#line 8890 "tex.w"
void scan_dimen(bool mu,bool inf,bool shortcut)

{
bool negative;
int f;
/*450:*/
#line 8932 "tex.w"

uint32_t num,denom;
int k,kk;
pointer p,q;
scaled v;
int save_cur_val;

/*:450*/
#line 8895 "tex.w"

f= 0;arith_error= false;cur_order= normal;negative= false;
if(!shortcut)
{/*441:*/
#line 8772 "tex.w"

negative= false;
do{/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 8774 "tex.w"
;
if(cur_tok==other_token+'-')
{negative= !negative;cur_tok= other_token+'+';
}
}while(!(cur_tok!=other_token+'+'))

/*:441*/
#line 8898 "tex.w"
;
if((cur_cmd>=min_internal)&&(cur_cmd<=max_internal))
/*449:*/
#line 8921 "tex.w"

if(mu)
{scan_something_internal(mu_val,false);
/*451:*/
#line 8943 "tex.w"

if(cur_val_level>=glue_val)
{v= width(cur_val);delete_glue_ref(cur_val);cur_val= v;
}

/*:451*/
#line 8924 "tex.w"
;
if(cur_val_level==mu_val)goto attach_sign;
if(cur_val_level!=int_val)mu_error();
}
else{scan_something_internal(dimen_val,false);
if(cur_val_level==dimen_val)goto attach_sign;
}

/*:449*/
#line 8900 "tex.w"

else{back_input();
if(cur_tok==continental_point_token)cur_tok= point_token;
if(cur_tok!=point_token)scan_int();
else{radix= 10;cur_val= 0;
}
if(cur_tok==continental_point_token)cur_tok= point_token;
if((radix==10)&&(cur_tok==point_token))/*452:*/
#line 8954 "tex.w"

{k= 0;p= null;get_token();
loop{get_x_token();
if((cur_tok> zero_token+9)||(cur_tok<zero_token))goto done1;
if(k<17)
{q= get_avail();link(q)= p;info(q)= cur_tok-zero_token;
p= q;incr(k);
}
}
done1:for(kk= k;kk>=1;kk--)
{dig[kk-1]= info(p);q= p;p= link(p);free_avail(q);
}
f= round_decimals(k);
if(cur_cmd!=spacer)back_input();
}

/*:452*/
#line 8907 "tex.w"
;
}
}
if(cur_val<0)
{negative= !negative;negate(cur_val);
}
/*453:*/
#line 8977 "tex.w"

if(inf)/*454:*/
#line 8995 "tex.w"

if(scan_keyword(/*1387:*/
#line 25057 "tex.w"
262
/*:1387*/
#line 8996 "tex.w"
))

{cur_order= fil;
while(scan_keyword('l'))
{if(cur_order==filll)
{print_err("Illegal unit of measure (");

print_str("replaced by filll)");
help1("I dddon't go any higher than filll.");error();
}
else incr(cur_order);
}
goto attach_fraction;
}

/*:454*/
#line 8978 "tex.w"
;
/*455:*/
#line 9011 "tex.w"

save_cur_val= cur_val;
/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 9013 "tex.w"
;
if((cur_cmd<min_internal)||(cur_cmd> max_internal))back_input();
else{if(mu)
{scan_something_internal(mu_val,false);/*451:*/
#line 8943 "tex.w"

if(cur_val_level>=glue_val)
{v= width(cur_val);delete_glue_ref(cur_val);cur_val= v;
}

/*:451*/
#line 9016 "tex.w"
;
if(cur_val_level!=mu_val)mu_error();
}
else scan_something_internal(dimen_val,false);
v= cur_val;goto found;
}
if(mu)goto not_found;
if(scan_keyword(/*1590:*/
#line 25666 "tex.w"
465
/*:1590*/
#line 9023 "tex.w"
))v= (/*558:*/
#line 10924 "tex.w"
quad(cur_font)

/*:558*/
#line 9023 "tex.w"
);

else if(scan_keyword(/*1591:*/
#line 25669 "tex.w"
466
/*:1591*/
#line 9025 "tex.w"
))v= (/*559:*/
#line 10926 "tex.w"
x_height(cur_font)

/*:559*/
#line 9025 "tex.w"
);

else goto not_found;
/*443:*/
#line 8804 "tex.w"

{get_x_token();if(cur_cmd!=spacer)back_input();
}

/*:443*/
#line 9028 "tex.w"
;
found:cur_val= nx_plus_y(save_cur_val,v,xn_over_d(v,f,0200000));
goto attach_sign;
not_found:

/*:455*/
#line 8980 "tex.w"
;
if(mu)/*456:*/
#line 9033 "tex.w"

if(scan_keyword(/*1394:*/
#line 25078 "tex.w"
269
/*:1394*/
#line 9034 "tex.w"
))goto attach_fraction;

else{print_err("Illegal unit of measure (");print_str("mu inserted)");

help4("The unit of measurement in math glue must be mu.")
("To recover gracefully from this error, it's best to")
("delete the erroneous units; e.g., type `2' to delete")
("two letters. (See Chapter 27 of The TeXbook.)");

error();goto attach_fraction;
}

/*:456*/
#line 8981 "tex.w"
;
if(scan_keyword(/*1589:*/
#line 25663 "tex.w"
464
/*:1589*/
#line 8982 "tex.w"
))/*457:*/
#line 9046 "tex.w"

{prepare_mag();
if(mag!=1000)
{cur_val= xn_over_d(cur_val,1000,mag);
f= (1000*f+0200000*rem)/mag;
cur_val= cur_val+(f/0200000);f= f%0200000;
}
}

/*:457*/
#line 8982 "tex.w"
;

if(scan_keyword(/*1425:*/
#line 25171 "tex.w"
300
/*:1425*/
#line 8984 "tex.w"
))goto attach_fraction;

/*458:*/
#line 9065 "tex.w"

if(scan_keyword(/*1592:*/
#line 25672 "tex.w"
467
/*:1592*/
#line 9066 "tex.w"
))set_conversion(7227)(100)

else if(scan_keyword(/*1593:*/
#line 25675 "tex.w"
468
/*:1593*/
#line 9068 "tex.w"
))set_conversion(12)(1)

else if(scan_keyword(/*1594:*/
#line 25678 "tex.w"
469
/*:1594*/
#line 9070 "tex.w"
))set_conversion(7227)(254)

else if(scan_keyword(/*1595:*/
#line 25681 "tex.w"
470
/*:1595*/
#line 9072 "tex.w"
))set_conversion(7227)(2540)

else if(scan_keyword(/*1596:*/
#line 25684 "tex.w"
471
/*:1596*/
#line 9074 "tex.w"
))set_conversion(7227)(7200)

else if(scan_keyword(/*1597:*/
#line 25687 "tex.w"
472
/*:1597*/
#line 9076 "tex.w"
))set_conversion(1238)(1157)

else if(scan_keyword(/*1598:*/
#line 25690 "tex.w"
473
/*:1598*/
#line 9078 "tex.w"
))set_conversion(14856)(1157)

else if(scan_keyword(/*1599:*/
#line 25693 "tex.w"
474
/*:1599*/
#line 9080 "tex.w"
))goto done;

else/*459:*/
#line 9088 "tex.w"

{print_err("Illegal unit of measure (");print_str("pt inserted)");

help6("Dimensions can be in units of em, ex, in, pt, pc,")
("cm, mm, dd, cc, bp, or sp; but yours is a new one!")
("I'll assume that you meant to say pt, for printer's points.")
("To recover gracefully from this error, it's best to")
("delete the erroneous units; e.g., type `2' to delete")
("two letters. (See Chapter 27 of The TeXbook.)");

error();goto done2;
}


/*:459*/
#line 9082 "tex.w"
;
cur_val= xn_over_d(cur_val,num,denom);
f= (num*f+0200000*rem)/denom;
cur_val= cur_val+(f/0200000);f= f%0200000;
done2:

/*:458*/
#line 8987 "tex.w"
;
attach_fraction:if(cur_val>=040000)arith_error= true;
else cur_val= cur_val*unity+f;
done:

/*:453*/
#line 8914 "tex.w"
;
/*443:*/
#line 8804 "tex.w"

{get_x_token();if(cur_cmd!=spacer)back_input();
}

/*:443*/
#line 8915 "tex.w"
;
attach_sign:if(arith_error||(abs(cur_val)>=010000000000))
/*460:*/
#line 9102 "tex.w"

{print_err("Dimension too large");

help2("I can't work with sizes bigger than about 19 feet.")
("Continue and I'll use the largest value I can.");
error();cur_val= max_dimen;arith_error= false;
}

/*:460*/
#line 8917 "tex.w"
;
if(negative)negate(cur_val);
}

/*:448*//*461:*/
#line 9120 "tex.w"
void scan_glue(small_number level)

{
bool negative;
pointer q;
bool mu;
mu= (level==mu_val);/*441:*/
#line 8772 "tex.w"

negative= false;
do{/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 8774 "tex.w"
;
if(cur_tok==other_token+'-')
{negative= !negative;cur_tok= other_token+'+';
}
}while(!(cur_tok!=other_token+'+'))

/*:441*/
#line 9126 "tex.w"
;
if((cur_cmd>=min_internal)&&(cur_cmd<=max_internal))
{scan_something_internal(level,negative);
if(cur_val_level>=glue_val)
{if(cur_val_level!=level)mu_error();
return;
}
if(cur_val_level==int_val)scan_dimen(mu,false,true);
else if(level==mu_val)mu_error();
}
else{back_input();scan_dimen(mu,false,false);
if(negative)negate(cur_val);
}
/*462:*/
#line 9143 "tex.w"

q= new_spec(zero_glue);width(q)= cur_val;
if(scan_keyword(/*1600:*/
#line 25696 "tex.w"
475
/*:1600*/
#line 9145 "tex.w"
))

{scan_dimen(mu,true,false);
stretch(q)= cur_val;stretch_order(q)= cur_order;
}
if(scan_keyword(/*1601:*/
#line 25699 "tex.w"
476
/*:1601*/
#line 9150 "tex.w"
))

{scan_dimen(mu,true,false);
shrink(q)= cur_val;shrink_order(q)= cur_order;
}
cur_val= q

/*:462*/
#line 9140 "tex.w"
;
}

/*:461*//*463:*/
#line 9166 "tex.w"
pointer scan_rule_spec(void)
{
pointer q;
q= new_rule();
if(cur_cmd==vrule)width(q)= default_rule;
else{height(q)= default_rule;depth(q)= 0;
}
reswitch:if(scan_keyword(/*1602:*/
#line 25702 "tex.w"
477
/*:1602*/
#line 9173 "tex.w"
))

{scan_normal_dimen;width(q)= cur_val;goto reswitch;
}
if(scan_keyword(/*1603:*/
#line 25705 "tex.w"
478
/*:1603*/
#line 9177 "tex.w"
))

{scan_normal_dimen;height(q)= cur_val;goto reswitch;
}
if(scan_keyword(/*1604:*/
#line 25708 "tex.w"
479
/*:1604*/
#line 9181 "tex.w"
))

{scan_normal_dimen;depth(q)= cur_val;goto reswitch;
}
return q;
}

/*:463*//*464:*/
#line 9200 "tex.w"
pointer str_toks(pool_pointer b)

{pointer p;
pointer q;
halfword t;
pool_pointer k;
str_room(1);
p= temp_head;link(p)= null;k= b;
while(k<pool_ptr)
{t= so(str_pool[k]);
if(t==' ')t= space_token;
else t= other_token+t;
fast_store_new_token(t);
incr(k);
}
pool_ptr= b;return p;
}

/*:464*//*465:*/
#line 9225 "tex.w"
pointer the_toks(void)
{uint8_t old_setting;
pointer p,q,r;
pool_pointer b;
get_x_token();scan_something_internal(tok_val,false);
if(cur_val_level>=ident_val)/*466:*/
#line 9245 "tex.w"

{p= temp_head;link(p)= null;
if(cur_val_level==ident_val)store_new_token(cs_token_flag+cur_val)
else if(cur_val!=null)
{r= link(cur_val);
while(r!=null)
{fast_store_new_token(info(r));r= link(r);
}
}
return p;
}

/*:466*/
#line 9230 "tex.w"

else{old_setting= selector;selector= new_string;b= pool_ptr;
switch(cur_val_level){
case int_val:print_int(cur_val);break;
case dimen_val:{print_scaled(cur_val);print_str("pt");
}break;
case glue_val:{print_spec(cur_val,/*1425:*/
#line 25171 "tex.w"
300
/*:1425*/
#line 9236 "tex.w"
);delete_glue_ref(cur_val);
}break;
case mu_val:{print_spec(cur_val,/*1394:*/
#line 25078 "tex.w"
269
/*:1394*/
#line 9238 "tex.w"
);delete_glue_ref(cur_val);
}
}
selector= old_setting;return str_toks(b);
}
}

/*:465*//*467:*/
#line 9259 "tex.w"
void ins_the_toks(void)
{link(garbage)= the_toks();ins_list(link(temp_head));
}

/*:467*//*470:*/
#line 9301 "tex.w"
void conv_toks(void)
{uint8_t old_setting;
uint8_t c;
small_number save_scanner_status;
pool_pointer b;
c= cur_chr;/*471:*/
#line 9312 "tex.w"

switch(c){
case number_code:case roman_numeral_code:scan_int();break;
case string_code:case meaning_code:{save_scanner_status= scanner_status;
scanner_status= normal;get_token();scanner_status= save_scanner_status;
}break;
case font_name_code:scan_font_ident();break;
case job_name_code:if(job_name==0)open_log_file();
}

/*:471*/
#line 9306 "tex.w"
;
old_setting= selector;selector= new_string;b= pool_ptr;
/*472:*/
#line 9322 "tex.w"

switch(c){
case number_code:print_int(cur_val);break;
case roman_numeral_code:print_roman_int(cur_val);break;
case string_code:if(cur_cs!=0)sprint_cs(cur_cs);
else print_char(cur_chr);break;
case meaning_code:print_meaning();break;
case font_name_code:{print(font_name[cur_val]);
if(font_size[cur_val]!=font_dsize[cur_val])
{print_str(" at ");print_scaled(font_size[cur_val]);
print_str("pt");
}
}break;
case job_name_code:print(job_name);
}

/*:472*/
#line 9308 "tex.w"
;
selector= old_setting;link(garbage)= str_toks(b);ins_list(link(temp_head));
}

/*:470*//*473:*/
#line 9362 "tex.w"
pointer scan_toks(bool macro_def,bool xpand)
{
halfword t;
halfword s;
pointer p;
pointer q;
halfword unbalance;
halfword hash_brace;
if(macro_def)scanner_status= defining;
else scanner_status= absorbing;
warning_index= cur_cs;def_ref= get_avail();token_ref_count(def_ref)= null;
p= def_ref;hash_brace= 0;t= zero_token;
if(macro_def)/*474:*/
#line 9382 "tex.w"

{loop{get_token();
if(cur_tok<right_brace_limit)goto done1;
if(cur_cmd==mac_param)
/*476:*/
#line 9403 "tex.w"

{s= match_token+cur_chr;get_token();
if(cur_cmd==left_brace)
{hash_brace= cur_tok;
store_new_token(cur_tok);store_new_token(end_match_token);
goto done;
}
if(t==zero_token+9)
{print_err("You already have nine parameters");

help1("I'm going to ignore the # sign you just used.");error();
}
else{incr(t);
if(cur_tok!=t)
{print_err("Parameters must be numbered consecutively");

help2("I've inserted the digit you should have used after the #.")
("Type `1' to delete what you did use.");back_error();
}
cur_tok= s;
}
}

/*:476*/
#line 9388 "tex.w"
;
store_new_token(cur_tok);
}
done1:store_new_token(end_match_token);
if(cur_cmd==right_brace)
/*475:*/
#line 9396 "tex.w"

{print_err("Missing { inserted");incr(align_state);

help2("Where was the left brace? You said something like `\\def\\a}',")
("which I'm going to interpret as `\\def\\a{}'.");error();goto found;
}

/*:475*/
#line 9393 "tex.w"
;
done:;}

/*:474*/
#line 9374 "tex.w"

else scan_left_brace();
/*477:*/
#line 9426 "tex.w"

unbalance= 1;
loop{if(xpand)/*478:*/
#line 9443 "tex.w"

{loop{get_next();
if(cur_cmd<=max_command)goto done2;
if(cur_cmd!=the)expand();
else{q= the_toks();
if(link(temp_head)!=null)
{link(p)= link(temp_head);p= q;
}
}
}
done2:x_token();
}

/*:478*/
#line 9428 "tex.w"

else get_token();
if(cur_tok<right_brace_limit)
if(cur_cmd<right_brace)incr(unbalance);
else{decr(unbalance);
if(unbalance==0)goto found;
}
else if(cur_cmd==mac_param)
if(macro_def)/*479:*/
#line 9456 "tex.w"

{s= cur_tok;
if(xpand)get_x_token();else get_token();
if(cur_cmd!=mac_param)
if((cur_tok<=zero_token)||(cur_tok> t))
{print_err("Illegal parameter number in definition of ");

sprint_cs(warning_index);
help3("You meant to type ## instead of #, right?")
("Or maybe a } was forgotten somewhere earlier, and things")
("are all screwed up? I'm going to assume that you meant ##.");
back_error();cur_tok= s;
}
else cur_tok= out_param_token-'0'+cur_chr;
}

/*:479*/
#line 9436 "tex.w"
;
store_new_token(cur_tok);
}

/*:477*/
#line 9376 "tex.w"
;
found:scanner_status= normal;
if(hash_brace!=0)store_new_token(hash_brace);
return p;
}

/*:473*//*482:*/
#line 9493 "tex.w"
void read_toks(int n,pointer r)
{
pointer p;
pointer q;
int s;
small_number m;
scanner_status= defining;warning_index= r;
def_ref= get_avail();token_ref_count(def_ref)= null;
p= def_ref;
store_new_token(end_match_token);
if((n<0)||(n> 15))m= 16;else m= n;
s= align_state;align_state= 1000000;
do{/*483:*/
#line 9510 "tex.w"

begin_file_reading();name= m+1;
if(read_open[m]==closed)/*484:*/
#line 9534 "tex.w"

if(interaction> nonstop_mode)
if(n<0)prompt_input("")
else{wake_up_terminal;
print_ln();sprint_cs(r);prompt_input("=");n= -1;
}
else fatal_error("*** (cannot \\read from terminal in nonstop modes)")


/*:484*/
#line 9512 "tex.w"
;
else if(read_open[m]==just_open)/*485:*/
#line 9547 "tex.w"

if(input_ln(&read_file[m],false))read_open[m]= normal;
else{a_close(&read_file[m]);read_open[m]= closed;
}

/*:485*/
#line 9513 "tex.w"

else/*486:*/
#line 9555 "tex.w"

{if(!input_ln(&read_file[m],true))
{a_close(&read_file[m]);read_open[m]= closed;
if(align_state!=1000000)
{runaway();
print_err("File ended within ");print_esc(/*1556:*/
#line 25564 "tex.w"
431
/*:1556*/
#line 9560 "tex.w"
);

help1("This \\read has unbalanced braces.");
align_state= 1000000;error();
}
}
}

/*:486*/
#line 9514 "tex.w"
;
limit= last;
if(end_line_char_inactive)decr(limit);
else buffer[limit]= end_line_char;
first= limit+1;loc= start;state= new_line;
loop{get_token();
if(cur_tok==0)goto done;

if(align_state<1000000)
{do{get_token();}while(!(cur_tok==0));
align_state= 1000000;goto done;
}
store_new_token(cur_tok);
}
done:end_file_reading()

/*:483*/
#line 9505 "tex.w"
;
}while(!(align_state==1000000));
cur_val= def_ref;scanner_status= normal;align_state= s;
}

/*:482*//*494:*/
#line 9704 "tex.w"
void pass_text(void)
{
int l;
small_number save_scanner_status;
save_scanner_status= scanner_status;scanner_status= skipping;l= 0;
skip_line= line;
loop{get_next();
if(cur_cmd==fi_or_else)
{if(l==0)goto done;
if(cur_chr==fi_code)decr(l);
}
else if(cur_cmd==if_test)incr(l);
}
done:scanner_status= save_scanner_status;
}

/*:494*//*497:*/
#line 9741 "tex.w"
void change_if_limit(small_number l,pointer p)
{
pointer q;
if(p==cond_ptr)if_limit= l;
else{q= cond_ptr;
loop{if(q==null)confusion(/*1611:*/
#line 25729 "tex.w"
486
/*:1611*/
#line 9746 "tex.w"
);

if(link(q)==p)
{type(q)= l;return;
}
q= link(q);
}
}
}

/*:497*//*498:*/
#line 9761 "tex.w"
void conditional(void)
{
bool b;
uint8_t r;
int m,n;
pointer p,q;
small_number save_scanner_status;
pointer save_cond_ptr;
small_number this_if;
/*495:*/
#line 9726 "tex.w"

{p= get_node(if_node_size);link(p)= cond_ptr;type(p)= if_limit;
subtype(p)= cur_if;if_line_field(p)= if_line;
cond_ptr= p;cur_if= cur_chr;if_limit= if_code;if_line= line;
}

/*:495*/
#line 9770 "tex.w"
;save_cond_ptr= cond_ptr;this_if= cur_chr;
/*501:*/
#line 9799 "tex.w"

switch(this_if){
case if_char_code:case if_cat_code:/*506:*/
#line 9870 "tex.w"

{get_x_token_or_active_char;
if((cur_cmd> active_char)||(cur_chr> 255))
{m= relax;n= 256;
}
else{m= cur_cmd;n= cur_chr;
}
get_x_token_or_active_char;
if((cur_cmd> active_char)||(cur_chr> 255))
{cur_cmd= relax;cur_chr= 256;
}
if(this_if==if_char_code)b= (n==cur_chr);else b= (m==cur_cmd);
}

/*:506*/
#line 9801 "tex.w"
break;
case if_int_code:case if_dim_code:/*503:*/
#line 9827 "tex.w"

{if(this_if==if_int_code)scan_int();else scan_normal_dimen;
n= cur_val;/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 9829 "tex.w"
;
if((cur_tok>=other_token+'<')&&(cur_tok<=other_token+'>'))
r= cur_tok-other_token;
else{print_err("Missing = inserted for ");

print_cmd_chr(if_test,this_if);
help1("I was expecting to see `<', `=', or `>'. Didn't.");
back_error();r= '=';
}
if(this_if==if_int_code)scan_int();else scan_normal_dimen;
switch(r){
case'<':b= (n<cur_val);break;
case'=':b= (n==cur_val);break;
case'>':b= (n> cur_val);
}
}

/*:503*/
#line 9802 "tex.w"
break;
case if_odd_code:/*504:*/
#line 9846 "tex.w"

{scan_int();b= odd(cur_val);
}

/*:504*/
#line 9803 "tex.w"
break;
case if_vmode_code:b= (abs(mode)==vmode);break;
case if_hmode_code:b= (abs(mode)==hmode);break;
case if_mmode_code:b= (abs(mode)==mmode);break;
case if_inner_code:b= (mode<0);break;
case if_void_code:case if_hbox_code:case if_vbox_code:/*505:*/
#line 9850 "tex.w"

{scan_eight_bit_int();p= box(cur_val);
if(this_if==if_void_code)b= (p==null);
else if(p==null)b= false;
else if(this_if==if_hbox_code)b= (type(p)==hlist_node);
else b= (type(p)==vlist_node);
}

/*:505*/
#line 9808 "tex.w"
break;
case ifx_code:/*507:*/
#line 9891 "tex.w"

{save_scanner_status= scanner_status;scanner_status= normal;
get_next();n= cur_cs;p= cur_cmd;q= cur_chr;
get_next();if(cur_cmd!=p)b= false;
else if(cur_cmd<call)b= (cur_chr==q);
else/*508:*/
#line 9908 "tex.w"

{p= link(cur_chr);q= link(equiv(n));
if(p==q)b= true;
else{while((p!=null)&&(q!=null))
if(info(p)!=info(q))p= null;
else{p= link(p);q= link(q);
}
b= ((p==null)&&(q==null));
}
}

/*:508*/
#line 9896 "tex.w"
;
scanner_status= save_scanner_status;
}

/*:507*/
#line 9809 "tex.w"
break;
case if_eof_code:{scan_four_bit_int();b= (read_open[cur_val]==closed);
}break;
case if_true_code:b= true;break;
case if_false_code:b= false;break;
case if_case_code:/*509:*/
#line 9919 "tex.w"

{scan_int();n= cur_val;
if(tracing_commands> 1)
{begin_diagnostic();print_str("{case ");print_int(n);print_char('}');
end_diagnostic(false);
}
while(n!=0)
{pass_text();
if(cond_ptr==save_cond_ptr)
if(cur_chr==or_code)decr(n);
else goto common_ending;
else if(cur_chr==fi_code)/*496:*/
#line 9732 "tex.w"

{p= cond_ptr;if_line= if_line_field(p);
cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p);
free_node(p,if_node_size);
}

/*:496*/
#line 9930 "tex.w"
;
}
change_if_limit(or_code,save_cond_ptr);
return;
}

/*:509*/
#line 9814 "tex.w"
;
}

/*:501*/
#line 9771 "tex.w"
;
if(tracing_commands> 1)/*502:*/
#line 9817 "tex.w"

{begin_diagnostic();
if(b)print_str("{true}");else print_str("{false}");
end_diagnostic(false);
}

/*:502*/
#line 9772 "tex.w"
;
if(b)
{change_if_limit(else_code,save_cond_ptr);
return;
}
/*500:*/
#line 9787 "tex.w"

loop{pass_text();
if(cond_ptr==save_cond_ptr)
{if(cur_chr!=or_code)goto common_ending;
print_err("Extra ");print_esc(/*1629:*/
#line 25783 "tex.w"
504
/*:1629*/
#line 9791 "tex.w"
);

help1("I'm ignoring this; it doesn't match any \\if.");
error();
}
else if(cur_chr==fi_code)/*496:*/
#line 9732 "tex.w"

{p= cond_ptr;if_line= if_line_field(p);
cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p);
free_node(p,if_node_size);
}

/*:496*/
#line 9796 "tex.w"
;
}

/*:500*/
#line 9777 "tex.w"
;
common_ending:if(cur_chr==fi_code)/*496:*/
#line 9732 "tex.w"

{p= cond_ptr;if_line= if_line_field(p);
cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p);
free_node(p,if_node_size);
}

/*:496*/
#line 9778 "tex.w"

else if_limit= fi_code;
}

/*:498*//*515:*/
#line 10054 "tex.w"
void begin_name(void)
{area_delimiter= 0;ext_delimiter= 0;
}

/*:515*//*516:*/
#line 10064 "tex.w"
bool more_name(ASCII_code c)
{if(c==' ')return false;
else{str_room(1);append_char(c);
if((c=='>')||(c==':'))
{area_delimiter= cur_length;ext_delimiter= 0;
}
else if((c=='.')&&(ext_delimiter==0))ext_delimiter= cur_length;
return true;
}
}

/*:516*//*517:*/
#line 10078 "tex.w"
void end_name(void)
{if(str_ptr+3> max_strings)
overflow("number of strings",max_strings-init_str_ptr);

if(area_delimiter==0)cur_area= empty_string;
else{cur_area= str_ptr;
str_start[str_ptr+1]= str_start[str_ptr]+area_delimiter;incr(str_ptr);
}
if(ext_delimiter==0)
{cur_ext= empty_string;cur_name= make_string();
}
else{cur_name= str_ptr;
str_start[str_ptr+1]= str_start[str_ptr]+ext_delimiter-area_delimiter-1;
incr(str_ptr);cur_ext= make_string();
}
}

/*:517*//*519:*/
#line 10115 "tex.w"
void pack_file_name(str_number n,str_number a,str_number e)
{int k;
ASCII_code c;
int j;
k= 0;
for(j= str_start[a];j<=str_start[a+1]-1;j++)append_to_name(so(str_pool[j]));
for(j= str_start[n];j<=str_start[n+1]-1;j++)append_to_name(so(str_pool[j]));
for(j= str_start[e];j<=str_start[e+1]-1;j++)append_to_name(so(str_pool[j]));
if(k<=file_name_size)name_length= k;else name_length= file_name_size;
name_of_file[name_length+1]= 0;
}

/*:519*//*522:*/
#line 10158 "tex.w"
void pack_buffered_name(small_number n,int a,int b)
{int k;
ASCII_code c;
int j;
if(n+b-a+1+format_ext_length> file_name_size)
b= a+file_name_size-n-1-format_ext_length;
k= 0;
for(j= 1;j<=n;j++)append_to_name(xord[TEX_format_default[j]]);
for(j= a;j<=b;j++)append_to_name(buffer[j]);
for(j= format_default_length-format_ext_length+1;j<=format_default_length;j++)
append_to_name(xord[TEX_format_default[j]]);
if(k<=file_name_size)name_length= k;else name_length= file_name_size;
name_of_file[name_length+1]= 0;
}

/*:522*//*524:*/
#line 10220 "tex.w"
str_number make_name_string(void)
{int k;
if((pool_ptr+name_length> pool_size)||(str_ptr==max_strings)||
(cur_length> 0))
return'?';
else{for(k= 1;k<=name_length;k++)append_char(xord[name_of_file[k]]);
return make_string();
}
}
str_number a_make_name_string(alpha_file*f)
{return make_name_string();
}
str_number b_make_name_string(byte_file*f)
{return make_name_string();
}
str_number w_make_name_string(word_file*f)
{return make_name_string();
}

/*:524*//*525:*/
#line 10244 "tex.w"
void scan_file_name(void)
{
name_in_progress= true;begin_name();
/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 10247 "tex.w"
;
loop{if((cur_cmd> other_char)||(cur_chr> 255))
{back_input();goto done;
}
if(!more_name(cur_chr))goto done;
get_x_token();
}
done:end_name();name_in_progress= false;
}

/*:525*//*528:*/
#line 10287 "tex.w"
void pack_job_name(str_number s)

{cur_area= empty_string;cur_ext= s;
cur_name= job_name;pack_cur_name;
}

/*:528*//*529:*/
#line 10300 "tex.w"
void prompt_file_name(char*s,str_number e)
{
uint16_t k;
if(interaction==scroll_mode)wake_up_terminal;
if(strcmp(s,"input file name")==0)print_err("I can't find file `")

else print_err("I can't write on file `");

print_file_name(cur_name,cur_area,cur_ext);print_str("'.");
if(e==/*1637:*/
#line 25807 "tex.w"
512
/*:1637*/
#line 10309 "tex.w"
)show_context();
print_nl("Please type another ");print_str(s);

if(interaction<scroll_mode)
fatal_error("*** (job aborted, file error in nonstop mode)");

clear_terminal;prompt_input(": ");/*530:*/
#line 10320 "tex.w"

{begin_name();k= first;
while((buffer[k]==' ')&&(k<last))incr(k);
loop{if(k==last)goto done;
if(!more_name(buffer[k]))goto done;
incr(k);
}
done:end_name();
}

/*:530*/
#line 10315 "tex.w"
;
if(cur_ext==empty_string)cur_ext= e;
pack_cur_name;
}

/*:529*//*534:*/
#line 10352 "tex.w"
void open_log_file(void)
{uint8_t old_setting;
int k;
uint16_t l;
ASCII_code months[]= " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC";
old_setting= selector;
if(job_name==0)job_name= /*1638:*/
#line 25810 "tex.w"
513
/*:1638*/
#line 10358 "tex.w"
;

pack_job_name(/*1634:*/
#line 25798 "tex.w"
509
/*:1634*/
#line 10360 "tex.w"
);
while(!a_open_out(&log_file))/*535:*/
#line 10389 "tex.w"

{selector= term_only;
prompt_file_name("transcript file name",/*1634:*/
#line 25798 "tex.w"
509
/*:1634*/
#line 10391 "tex.w"
);
}

/*:535*/
#line 10361 "tex.w"
;
log_name= a_make_name_string(&log_file);
selector= log_only;log_opened= true;
/*536:*/
#line 10394 "tex.w"

{wlog("%s",banner);
slow_print(format_ident);print_str("  ");
print_int(day);print_char(' ');
for(k= 3*month-2;k<=3*month;k++)wlog("%c",months[k]);
print_char(' ');print_int(year);print_char(' ');
print_two(time/60);print_char(':');print_two(time%60);
}

/*:536*/
#line 10364 "tex.w"
;
input_stack[input_ptr]= cur_input;
print_nl("**");

l= input_stack[0].limit_field;
if(buffer[l]==end_line_char)decr(l);
for(k= 1;k<=l;k++)print(buffer[k]);
print_ln();
selector= old_setting+2;
}

/*:534*//*537:*/
#line 10406 "tex.w"
void start_input(void)
{
scan_file_name();
if(cur_ext==empty_string)cur_ext= /*1637:*/
#line 25807 "tex.w"
512
/*:1637*/
#line 10409 "tex.w"
;
pack_cur_name;
loop{begin_file_reading();
if(a_open_in(&cur_file))goto done;
if(cur_area==empty_string)
{pack_file_name(cur_name,TEX_area,cur_ext);
if(a_open_in(&cur_file))goto done;
}
end_file_reading();
prompt_file_name("input file name",/*1637:*/
#line 25807 "tex.w"
512
/*:1637*/
#line 10418 "tex.w"
);
}
done:name= a_make_name_string(&cur_file);
if(job_name==0)
{job_name= cur_name;open_log_file();
}

if(term_offset+length(name)> max_print_line-2)print_ln();
else if((term_offset> 0)||(file_offset> 0))print_char(' ');
print_char('(');incr(open_parens);slow_print(name);update_terminal;
state= new_line;
if(name==str_ptr-1)
{flush_string;name= cur_name;
}
/*538:*/
#line 10441 "tex.w"

{line= 1;
if(input_ln(&cur_file,false))do_nothing;
firm_up_the_line();
if(end_line_char_inactive)decr(limit);
else buffer[limit]= end_line_char;
first= limit+1;loc= start;
}

/*:538*/
#line 10432 "tex.w"
;
}

/*:537*//*560:*/
#line 10946 "tex.w"
internal_font_number read_font_info(pointer u,str_number nom,str_number aire,
scaled s)
{
font_index k;
bool file_opened;
halfword lf,lh,bc,ec,nw,nh,nd,ni,nl,nk,ne,np;

internal_font_number f;
internal_font_number g;
eight_bits a,b,c,d;
four_quarters qw;scaled sw;
int bch_label;
uint16_t bchar;
scaled z;
int alpha;uint8_t beta;

g= null_font;
/*562:*/
#line 10999 "tex.w"

/*563:*/
#line 11011 "tex.w"

file_opened= false;
if(aire==empty_string)pack_file_name(nom,TEX_font_area,/*1640:*/
#line 25816 "tex.w"
515
/*:1640*/
#line 11013 "tex.w"
);
else pack_file_name(nom,aire,/*1640:*/
#line 25816 "tex.w"
515
/*:1640*/
#line 11014 "tex.w"
);
if(!b_open_in(&tfm_file))abort;
file_opened= true

/*:563*/
#line 11000 "tex.w"
;
/*565:*/
#line 11039 "tex.w"

{read_sixteen(lf);
fget;read_sixteen(lh);
fget;read_sixteen(bc);
fget;read_sixteen(ec);
if((bc> ec+1)||(ec> 255))abort;
if(bc> 255)
{bc= 1;ec= 0;
}
fget;read_sixteen(nw);
fget;read_sixteen(nh);
fget;read_sixteen(nd);
fget;read_sixteen(ni);
fget;read_sixteen(nl);
fget;read_sixteen(nk);
fget;read_sixteen(ne);
fget;read_sixteen(np);
if(lf!=6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np)abort;
if((nw==0)||(nh==0)||(nd==0)||(ni==0))abort;
}

/*:565*/
#line 11001 "tex.w"
;
/*566:*/
#line 11066 "tex.w"

lf= lf-6-lh;
if(np<7)lf= lf+7-np;
if((font_ptr==font_max)||(fmem_ptr+lf> font_mem_size))
/*567:*/
#line 11082 "tex.w"

{start_font_error_message;
print_str(" not loaded: Not enough room left");

help4("I'm afraid I won't be able to make use of this font,")
("because my memory for character-size data is too small.")
("If you're really stuck, ask a wizard to enlarge me.")
("Or maybe try `I\\font<same font id>=<name of loaded font>'.");
error();goto done;
}

/*:567*/
#line 11070 "tex.w"
;
f= font_ptr+1;
char_base[f]= fmem_ptr-bc;
width_base[f]= char_base[f]+ec+1;
height_base[f]= width_base[f]+nw;
depth_base[f]= height_base[f]+nh;
italic_base[f]= depth_base[f]+nd;
lig_kern_base[f]= italic_base[f]+ni;
kern_base[f]= lig_kern_base[f]+nl-kern_base_offset;
exten_base[f]= kern_base[f]+kern_base_offset+nk;
param_base[f]= exten_base[f]+ne

/*:566*/
#line 11002 "tex.w"
;
/*568:*/
#line 11095 "tex.w"

{if(lh<2)abort;
store_four_quarters(font_check[f]);
fget;read_sixteen(z);
fget;z= z*0400+fbyte;fget;z= (z*020)+(fbyte/020);
if(z<unity)abort;
while(lh> 2)
{fget;fget;fget;fget;decr(lh);
}
font_dsize[f]= z;
if(s!=-1000)
if(s>=0)z= s;
else z= xn_over_d(z,-s,1000);
font_size[f]= z;
}

/*:568*/
#line 11003 "tex.w"
;
/*569:*/
#line 11111 "tex.w"

for(k= fmem_ptr;k<=width_base[f]-1;k++)
{store_four_quarters(font_info[k].qqqq);
if((a>=nw)||(b/020>=nh)||(b%020>=nd)||
(c/4>=ni))abort;
switch(c%4){
case lig_tag:if(d>=nl)abort;break;
case ext_tag:if(d>=ne)abort;break;
case list_tag:/*570:*/
#line 11132 "tex.w"

{check_byte_range(d);
while(d<current_character_being_worked_on)
{qw= char_info(f)(d);

if(char_tag(qw)!=list_tag)goto not_found;
d= qo(rem_byte(qw));
}
if(d==current_character_being_worked_on)abort;
not_found:;}

/*:570*/
#line 11119 "tex.w"
break;
default:do_nothing;
}
}

/*:569*/
#line 11004 "tex.w"
;
/*571:*/
#line 11167 "tex.w"

{/*572:*/
#line 11177 "tex.w"

{alpha= 16;
while(z>=040000000)
{z= z/2;alpha= alpha+alpha;
}
beta= 256/alpha;alpha= alpha*z;
}

/*:572*/
#line 11168 "tex.w"
;
for(k= width_base[f];k<=lig_kern_base[f]-1;k++)
store_scaled(font_info[k].sc);
if(font_info[width_base[f]].sc!=0)abort;
if(font_info[height_base[f]].sc!=0)abort;
if(font_info[depth_base[f]].sc!=0)abort;
if(font_info[italic_base[f]].sc!=0)abort;
}

/*:571*/
#line 11005 "tex.w"
;
/*573:*/
#line 11191 "tex.w"

bch_label= 077777;bchar= 256;
if(nl> 0)
{for(k= lig_kern_base[f];k<=kern_base[f]+kern_base_offset-1;k++)
{store_four_quarters(font_info[k].qqqq);
if(a> 128)
{if(256*c+d>=nl)abort;
if(a==255)if(k==lig_kern_base[f])bchar= b;
}
else{if(b!=bchar)check_existence(b);
if(c<128)check_existence(d)
else if(256*(c-128)+d>=nk)abort;
if(a<128)if(k-lig_kern_base[f]+a+1>=nl)abort;
}
}
if(a==255)bch_label= 256*c+d;
}
for(k= kern_base[f]+kern_base_offset;k<=exten_base[f]-1;k++)
store_scaled(font_info[k].sc);

/*:573*/
#line 11006 "tex.w"
;
/*574:*/
#line 11211 "tex.w"

for(k= exten_base[f];k<=param_base[f]-1;k++)
{store_four_quarters(font_info[k].qqqq);
if(a!=0)check_existence(a);
if(b!=0)check_existence(b);
if(c!=0)check_existence(c);
check_existence(d);
}

/*:574*/
#line 11007 "tex.w"
;
/*575:*/
#line 11223 "tex.w"

{for(k= 1;k<=np;k++)
if(k==1)
{fget;sw= fbyte;if(sw> 127)sw= sw-256;
fget;sw= sw*0400+fbyte;fget;sw= sw*0400+fbyte;
fget;font_info[param_base[f]].sc= 
(sw*020)+(fbyte/020);
}
else store_scaled(font_info[param_base[f]+k-1].sc);
if(eof(tfm_file))abort;
for(k= np+1;k<=7;k++)font_info[param_base[f]+k-1].sc= 0;
}

/*:575*/
#line 11008 "tex.w"
;
/*576:*/
#line 11243 "tex.w"

if(np>=7)font_params[f]= np;else font_params[f]= 7;
hyphen_char[f]= default_hyphen_char;skew_char[f]= default_skew_char;
if(bch_label<nl)bchar_label[f]= bch_label+lig_kern_base[f];
else bchar_label[f]= non_address;
font_bchar[f]= qi(bchar);
font_false_bchar[f]= qi(bchar);
if(bchar<=ec)if(bchar>=bc)
{qw= char_info(f)(bchar);
if(char_exists(qw))font_false_bchar[f]= non_char;
}
font_name[f]= nom;
font_area[f]= aire;
font_bc[f]= bc;font_ec[f]= ec;font_glue[f]= null;
adjust(char_base);adjust(width_base);adjust(lig_kern_base);
adjust(kern_base);adjust(exten_base);
decr(param_base[f]);
fmem_ptr= fmem_ptr+lf;font_ptr= f;g= f;goto done

/*:576*/
#line 11009 "tex.w"


/*:562*/
#line 10965 "tex.w"
;
bad_tfm:/*561:*/
#line 10987 "tex.w"

start_font_error_message;

if(file_opened)print_str(" not loadable: Bad metric (TFM) file");
else print_str(" not loadable: Metric (TFM) file not found");
help5("I wasn't able to read the size data for this font,")
("so I will ignore the font specification.")
("[Wizards can fix TFM files using TFtoPL/PLtoTF.]")
("You might try inserting a different font spec;")
("e.g., type `I\\font<same font id>=<substitute font name>'.");
error()

/*:561*/
#line 10966 "tex.w"
;
done:if(file_opened)b_close(&tfm_file);
return g;
}

/*:560*//*581:*/
#line 11333 "tex.w"
void char_warning(internal_font_number f,eight_bits c)
{if(tracing_lost_chars> 0)
{begin_diagnostic();
print_nl("Missing character: There is no ");

print_ASCII(c);print_str(" in font ");
slow_print(font_name[f]);print_char('!');end_diagnostic(false);
}
}

/*:581*//*582:*/
#line 11347 "tex.w"
pointer new_character(internal_font_number f,eight_bits c)
{
pointer p;
if(font_bc[f]<=c)if(font_ec[f]>=c)
if(char_exists(char_info(f)(qi(c))))
{p= get_avail();font(p)= f;character(p)= qi(c);
return p;
}
char_warning(f,c);
return null;
}

/*:582*//*597:*/
#line 11957 "tex.w"
void write_dvi(dvi_index a,dvi_index b)
{int k;
for(k= a;k<=b;k++)write(dvi_file,"%c",dvi_buf[k]);
}

/*:597*//*598:*/
#line 11969 "tex.w"
void dvi_swap(void)
{if(dvi_limit==dvi_buf_size)
{write_dvi(0,half_buf-1);dvi_limit= half_buf;
dvi_offset= dvi_offset+dvi_buf_size;dvi_ptr= 0;
}
else{write_dvi(half_buf,dvi_buf_size-1);dvi_limit= dvi_buf_size;
}
dvi_gone= dvi_gone+half_buf;
}

/*:598*//*600:*/
#line 11989 "tex.w"
void dvi_four(int x)
{if(x>=0)dvi_out(x/0100000000)
else{x= x+010000000000;
x= x+010000000000;
dvi_out((x/0100000000)+128);
}
x= x%0100000000;dvi_out(x/0200000);
x= x%0200000;dvi_out(x/0400);
dvi_out(x%0400);
}

/*:600*//*601:*/
#line 12005 "tex.w"
void dvi_pop(int l)
{if((l==dvi_offset+dvi_ptr)&&(dvi_ptr> 0))decr(dvi_ptr);
else dvi_out(pop);
}

/*:601*//*602:*/
#line 12013 "tex.w"
void dvi_font_def(internal_font_number f)
{int k;
dvi_out(fnt_def1);
dvi_out(f-font_base-1);
dvi_out(qo(font_check[f].b0));
dvi_out(qo(font_check[f].b1));
dvi_out(qo(font_check[f].b2));
dvi_out(qo(font_check[f].b3));
dvi_four(font_size[f]);
dvi_four(font_dsize[f]);
dvi_out(length(font_area[f]));
dvi_out(length(font_name[f]));
/*603:*/
#line 12028 "tex.w"

for(k= str_start[font_area[f]];k<=str_start[font_area[f]+1]-1;k++)
dvi_out(so(str_pool[k]));
for(k= str_start[font_name[f]];k<=str_start[font_name[f]+1]-1;k++)
dvi_out(so(str_pool[k]))

/*:603*/
#line 12025 "tex.w"
;
}

/*:602*//*607:*/
#line 12107 "tex.w"
void movement(scaled w,eight_bits o)
{
small_number mstate;
pointer p,q;
int k;
q= get_node(movement_node_size);
width(q)= w;location(q)= dvi_offset+dvi_ptr;
if(o==down1)
{link(q)= down_ptr;down_ptr= q;
}
else{link(q)= right_ptr;right_ptr= q;
}
/*611:*/
#line 12222 "tex.w"

p= link(q);mstate= none_seen;
while(p!=null)
{if(width(p)==w)/*612:*/
#line 12241 "tex.w"

switch(mstate+info(p)){
case none_seen+yz_OK:case none_seen+y_OK:case z_seen+yz_OK:case z_seen+y_OK:
if(location(p)<dvi_gone)goto not_found;
else/*613:*/
#line 12253 "tex.w"

{k= location(p)-dvi_offset;
if(k<0)k= k+dvi_buf_size;
dvi_buf[k]= dvi_buf[k]+y1-down1;
info(p)= y_here;goto found;
}

/*:613*/
#line 12245 "tex.w"
break;
case none_seen+z_OK:case y_seen+yz_OK:case y_seen+z_OK:
if(location(p)<dvi_gone)goto not_found;
else/*614:*/
#line 12260 "tex.w"

{k= location(p)-dvi_offset;
if(k<0)k= k+dvi_buf_size;
dvi_buf[k]= dvi_buf[k]+z1-down1;
info(p)= z_here;goto found;
}

/*:614*/
#line 12248 "tex.w"
break;
case none_seen+y_here:case none_seen+z_here:case y_seen+z_here:case z_seen+y_here:goto found;
default:do_nothing;
}

/*:612*/
#line 12226 "tex.w"

else switch(mstate+info(p)){
case none_seen+y_here:mstate= y_seen;break;
case none_seen+z_here:mstate= z_seen;break;
case y_seen+z_here:case z_seen+y_here:goto not_found;
default:do_nothing;
}
p= link(p);
}
not_found:

/*:611*/
#line 12120 "tex.w"
;
/*610:*/
#line 12189 "tex.w"

info(q)= yz_OK;
if(abs(w)>=040000000)
{dvi_out(o+3);
dvi_four(w);return;
}
if(abs(w)>=0100000)
{dvi_out(o+2);
if(w<0)w= w+0100000000;
dvi_out(w/0200000);w= w%0200000;goto label2;
}
if(abs(w)>=0200)
{dvi_out(o+1);
if(w<0)w= w+0200000;
goto label2;
}
dvi_out(o);
if(w<0)w= w+0400;
goto label1;
label2:dvi_out(w/0400);
label1:dvi_out(w%0400);return

/*:610*/
#line 12121 "tex.w"
;
found:/*609:*/
#line 12165 "tex.w"

info(q)= info(p);
if(info(q)==y_here)
{dvi_out(o+y0-down1);
while(link(q)!=p)
{q= link(q);
switch(info(q)){
case yz_OK:info(q)= z_OK;break;
case y_OK:info(q)= d_fixed;break;
default:do_nothing;
}
}
}
else{dvi_out(o+z0-down1);
while(link(q)!=p)
{q= link(q);
switch(info(q)){
case yz_OK:info(q)= y_OK;break;
case z_OK:info(q)= d_fixed;break;
default:do_nothing;
}
}
}

/*:609*/
#line 12122 "tex.w"
;
}

/*:607*//*615:*/
#line 12273 "tex.w"
void prune_movements(int l)

{
pointer p;
while(down_ptr!=null)
{if(location(down_ptr)<l)goto done;
p= down_ptr;down_ptr= link(p);free_node(p,movement_node_size);
}
done:while(right_ptr!=null)
{if(location(right_ptr)<l)return;
p= right_ptr;right_ptr= link(p);free_node(p,movement_node_size);
}
}

/*:615*//*618:*/
#line 12350 "tex.w"
void vlist_out(void);


/*:618*//*619:*/
#line 12359 "tex.w"
/*1368:*/
#line 24824 "tex.w"

void special_out(pointer p)
{uint8_t old_setting;
int k;
synch_h;synch_v;
old_setting= selector;selector= new_string;
show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
selector= old_setting;
str_room(1);
if(cur_length<256)
{dvi_out(xxx1);dvi_out(cur_length);
}
else{dvi_out(xxx4);dvi_four(cur_length);
}
for(k= str_start[str_ptr];k<=pool_ptr-1;k++)dvi_out(so(str_pool[k]));
pool_ptr= str_start[str_ptr];
}

/*:1368*//*1370:*/
#line 24855 "tex.w"

void write_out(pointer p)
{uint8_t old_setting;
int old_mode;
small_number j;
pointer q,r;
/*1371:*/
#line 24882 "tex.w"

q= get_avail();info(q)= right_brace_token+'}';
r= get_avail();link(q)= r;info(r)= end_write_token;ins_list(q);
begin_token_list(write_tokens(p),write_text);
q= get_avail();info(q)= left_brace_token+'{';ins_list(q);


old_mode= mode;mode= 0;

cur_cs= write_loc;q= scan_toks(false,true);
get_token();if(cur_tok!=end_write_token)
/*1372:*/
#line 24897 "tex.w"

{print_err("Unbalanced write command");

help2("On this page there's a \\write with fewer real {'s than }'s.")
("I can't handle that very well; good luck.");error();
do{get_token();
}while(!(cur_tok==end_write_token));
}

/*:1372*/
#line 24893 "tex.w"
;
mode= old_mode;
end_token_list()

/*:1371*/
#line 24861 "tex.w"
;
old_setting= selector;j= write_stream(p);
if(write_open[j])selector= j;
else{
if((j==17)&&(selector==term_and_log))selector= log_only;
print_nl("");
}
token_show(def_ref);print_ln();
flush_list(def_ref);selector= old_setting;
}

/*:1370*//*1373:*/
#line 24909 "tex.w"

void out_what(pointer p)
{small_number j;
switch(subtype(p)){
case open_node:case write_node:case close_node:/*1374:*/
#line 24927 "tex.w"

if(!doing_leaders)
{j= write_stream(p);
if(subtype(p)==write_node)write_out(p);
else{if(write_open[j])a_close(&write_file[j]);
if(subtype(p)==close_node)write_open[j]= false;
else if(j<16)
{cur_name= open_name(p);cur_area= open_area(p);
cur_ext= open_ext(p);
if(cur_ext==empty_string)cur_ext= /*1637:*/
#line 25807 "tex.w"
512
/*:1637*/
#line 24936 "tex.w"
;
pack_cur_name;
while(!a_open_out(&write_file[j]))
prompt_file_name("output file name",/*1637:*/
#line 25807 "tex.w"
512
/*:1637*/
#line 24939 "tex.w"
);
write_open[j]= true;
}
}
}

/*:1374*/
#line 24914 "tex.w"
break;
case special_node:special_out(p);break;
case language_node:do_nothing;break;
default:confusion(/*1792:*/
#line 26272 "tex.w"
667

/*:1792*/
#line 24917 "tex.w"
);

}
}

/*:1373*/
#line 12359 "tex.w"

void hlist_out(void)
{
scaled base_line;
scaled left_edge;
scaled save_h,save_v;
pointer this_box;
glue_ord g_order;
uint8_t g_sign;
pointer p;
int save_loc;
pointer leader_box;
scaled leader_wd;
scaled lx;
bool outer_doing_leaders;
scaled edge;
double glue_temp;
double cur_glue;
scaled cur_g;
cur_g= 0;cur_glue= float_constant(0);
this_box= temp_ptr;g_order= glue_order(this_box);
g_sign= glue_sign(this_box);p= list_ptr(this_box);
incr(cur_s);
if(cur_s> 0)dvi_out(push);
if(cur_s> max_push)max_push= cur_s;
save_loc= dvi_offset+dvi_ptr;base_line= cur_v;left_edge= cur_h;
while(p!=null)/*620:*/
#line 12398 "tex.w"

reswitch:if(is_char_node(p))
{synch_h;synch_v;
do{f= font(p);c= character(p);
if(f!=dvi_f)/*621:*/
#line 12412 "tex.w"

{if(!font_used[f])
{dvi_font_def(f);font_used[f]= true;
}
if(f<=64+font_base)dvi_out(f-font_base-1+fnt_num_0)
else{dvi_out(fnt1);dvi_out(f-font_base-1);
}
dvi_f= f;
}

/*:621*/
#line 12402 "tex.w"
;
if(c>=qi(128))dvi_out(set1);
dvi_out(qo(c));
cur_h= cur_h+char_width(f)(char_info(f)(c));
p= link(p);
}while(!(!is_char_node(p)));
dvi_h= cur_h;
}
else/*622:*/
#line 12422 "tex.w"

{switch(type(p)){
case hlist_node:case vlist_node:/*623:*/
#line 12440 "tex.w"

if(list_ptr(p)==null)cur_h= cur_h+width(p);
else{save_h= dvi_h;save_v= dvi_v;
cur_v= base_line+shift_amount(p);
temp_ptr= p;edge= cur_h;
if(type(p)==vlist_node)vlist_out();else hlist_out();
dvi_h= save_h;dvi_v= save_v;
cur_h= edge+width(p);cur_v= base_line;
}

/*:623*/
#line 12424 "tex.w"
break;
case rule_node:{rule_ht= height(p);rule_dp= depth(p);rule_wd= width(p);
goto fin_rule;
}
case whatsit_node:/*1367:*/
#line 24817 "tex.w"

out_what(p)

/*:1367*/
#line 12428 "tex.w"
;break;
case glue_node:/*625:*/
#line 12467 "tex.w"

{g= glue_ptr(p);rule_wd= width(g)-cur_g;
if(g_sign!=normal)
{if(g_sign==stretching)
{if(stretch_order(g)==g_order)
{cur_glue= cur_glue+stretch(g);
vet_glue(float(glue_set(this_box))*cur_glue);

cur_g= round(glue_temp);
}
}
else if(shrink_order(g)==g_order)
{cur_glue= cur_glue-shrink(g);
vet_glue(float(glue_set(this_box))*cur_glue);
cur_g= round(glue_temp);
}
}
rule_wd= rule_wd+cur_g;
if(subtype(p)>=a_leaders)
/*626:*/
#line 12490 "tex.w"

{leader_box= leader_ptr(p);
if(type(leader_box)==rule_node)
{rule_ht= height(leader_box);rule_dp= depth(leader_box);
goto fin_rule;
}
leader_wd= width(leader_box);
if((leader_wd> 0)&&(rule_wd> 0))
{rule_wd= rule_wd+10;
edge= cur_h+rule_wd;lx= 0;
/*627:*/
#line 12524 "tex.w"

if(subtype(p)==a_leaders)
{save_h= cur_h;
cur_h= left_edge+leader_wd*((cur_h-left_edge)/leader_wd);
if(cur_h<save_h)cur_h= cur_h+leader_wd;
}
else{lq= rule_wd/leader_wd;
lr= rule_wd%leader_wd;
if(subtype(p)==c_leaders)cur_h= cur_h+(lr/2);
else{lx= lr/(lq+1);
cur_h= cur_h+((lr-(lq-1)*lx)/2);
}
}

/*:627*/
#line 12501 "tex.w"
;
while(cur_h+leader_wd<=edge)
/*628:*/
#line 12541 "tex.w"

{cur_v= base_line+shift_amount(leader_box);synch_v;save_v= dvi_v;
synch_h;save_h= dvi_h;temp_ptr= leader_box;
outer_doing_leaders= doing_leaders;doing_leaders= true;
if(type(leader_box)==vlist_node)vlist_out();else hlist_out();
doing_leaders= outer_doing_leaders;
dvi_v= save_v;dvi_h= save_h;cur_v= base_line;
cur_h= save_h+leader_wd+lx;
}

/*:628*/
#line 12503 "tex.w"
;
cur_h= edge-10;goto next_p;
}
}

/*:626*/
#line 12486 "tex.w"
;
goto move_past;
}

/*:625*/
#line 12429 "tex.w"

case kern_node:case math_node:cur_h= cur_h+width(p);break;
case ligature_node:/*652:*/
#line 12994 "tex.w"

{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p);
p= lig_trick;goto reswitch;
}

/*:652*/
#line 12431 "tex.w"

default:do_nothing;
}
goto next_p;
fin_rule:/*624:*/
#line 12450 "tex.w"

if(is_running(rule_ht))rule_ht= height(this_box);
if(is_running(rule_dp))rule_dp= depth(this_box);
rule_ht= rule_ht+rule_dp;
if((rule_ht> 0)&&(rule_wd> 0))
{synch_h;cur_v= base_line+rule_dp;synch_v;
dvi_out(set_rule);dvi_four(rule_ht);dvi_four(rule_wd);
cur_v= base_line;dvi_h= dvi_h+rule_wd;
}

/*:624*/
#line 12435 "tex.w"
;
move_past:cur_h= cur_h+rule_wd;
next_p:p= link(p);
}

/*:622*/
#line 12410 "tex.w"


/*:620*/
#line 12386 "tex.w"
;
prune_movements(save_loc);
if(cur_s> 0)dvi_pop(save_loc);
decr(cur_s);
}

/*:619*//*629:*/
#line 12553 "tex.w"
void vlist_out(void)
{
scaled left_edge;
scaled top_edge;
scaled save_h,save_v;
pointer this_box;
glue_ord g_order;
uint8_t g_sign;
pointer p;
int save_loc;
pointer leader_box;
scaled leader_ht;
scaled lx;
bool outer_doing_leaders;
scaled edge;
double glue_temp;
double cur_glue;
scaled cur_g;
cur_g= 0;cur_glue= float_constant(0);
this_box= temp_ptr;g_order= glue_order(this_box);
g_sign= glue_sign(this_box);p= list_ptr(this_box);
incr(cur_s);
if(cur_s> 0)dvi_out(push);
if(cur_s> max_push)max_push= cur_s;
save_loc= dvi_offset+dvi_ptr;left_edge= cur_h;cur_v= cur_v-height(this_box);
top_edge= cur_v;
while(p!=null)/*630:*/
#line 12586 "tex.w"

{if(is_char_node(p))confusion(/*1641:*/
#line 25819 "tex.w"
516
/*:1641*/
#line 12587 "tex.w"
);

else/*631:*/
#line 12593 "tex.w"

{switch(type(p)){
case hlist_node:case vlist_node:/*632:*/
#line 12613 "tex.w"

if(list_ptr(p)==null)cur_v= cur_v+height(p)+depth(p);
else{cur_v= cur_v+height(p);synch_v;
save_h= dvi_h;save_v= dvi_v;
cur_h= left_edge+shift_amount(p);
temp_ptr= p;
if(type(p)==vlist_node)vlist_out();else hlist_out();
dvi_h= save_h;dvi_v= save_v;
cur_v= save_v+depth(p);cur_h= left_edge;
}

/*:632*/
#line 12595 "tex.w"
break;
case rule_node:{rule_ht= height(p);rule_dp= depth(p);rule_wd= width(p);
goto fin_rule;
}
case whatsit_node:/*1366:*/
#line 24814 "tex.w"

out_what(p)

/*:1366*/
#line 12599 "tex.w"
;break;
case glue_node:/*634:*/
#line 12634 "tex.w"

{g= glue_ptr(p);rule_ht= width(g)-cur_g;
if(g_sign!=normal)
{if(g_sign==stretching)
{if(stretch_order(g)==g_order)
{cur_glue= cur_glue+stretch(g);
vet_glue(float(glue_set(this_box))*cur_glue);

cur_g= round(glue_temp);
}
}
else if(shrink_order(g)==g_order)
{cur_glue= cur_glue-shrink(g);
vet_glue(float(glue_set(this_box))*cur_glue);
cur_g= round(glue_temp);
}
}
rule_ht= rule_ht+cur_g;
if(subtype(p)>=a_leaders)
/*635:*/
#line 12657 "tex.w"

{leader_box= leader_ptr(p);
if(type(leader_box)==rule_node)
{rule_wd= width(leader_box);rule_dp= 0;
goto fin_rule;
}
leader_ht= height(leader_box)+depth(leader_box);
if((leader_ht> 0)&&(rule_ht> 0))
{rule_ht= rule_ht+10;
edge= cur_v+rule_ht;lx= 0;
/*636:*/
#line 12675 "tex.w"

if(subtype(p)==a_leaders)
{save_v= cur_v;
cur_v= top_edge+leader_ht*((cur_v-top_edge)/leader_ht);
if(cur_v<save_v)cur_v= cur_v+leader_ht;
}
else{lq= rule_ht/leader_ht;
lr= rule_ht%leader_ht;
if(subtype(p)==c_leaders)cur_v= cur_v+(lr/2);
else{lx= lr/(lq+1);
cur_v= cur_v+((lr-(lq-1)*lx)/2);
}
}

/*:636*/
#line 12668 "tex.w"
;
while(cur_v+leader_ht<=edge)
/*637:*/
#line 12692 "tex.w"

{cur_h= left_edge+shift_amount(leader_box);synch_h;save_h= dvi_h;
cur_v= cur_v+height(leader_box);synch_v;save_v= dvi_v;
temp_ptr= leader_box;
outer_doing_leaders= doing_leaders;doing_leaders= true;
if(type(leader_box)==vlist_node)vlist_out();else hlist_out();
doing_leaders= outer_doing_leaders;
dvi_v= save_v;dvi_h= save_h;cur_h= left_edge;
cur_v= save_v-height(leader_box)+leader_ht+lx;
}

/*:637*/
#line 12670 "tex.w"
;
cur_v= edge-10;goto next_p;
}
}

/*:635*/
#line 12653 "tex.w"
;
goto move_past;
}

/*:634*/
#line 12600 "tex.w"

case kern_node:cur_v= cur_v+width(p);break;
default:do_nothing;
}
goto next_p;
fin_rule:/*633:*/
#line 12624 "tex.w"

if(is_running(rule_wd))rule_wd= width(this_box);
rule_ht= rule_ht+rule_dp;
cur_v= cur_v+rule_ht;
if((rule_ht> 0)&&(rule_wd> 0))
{synch_h;synch_v;
dvi_out(put_rule);dvi_four(rule_ht);dvi_four(rule_wd);
}
goto next_p

/*:633*/
#line 12605 "tex.w"
;
move_past:cur_v= cur_v+rule_ht;
}

/*:631*/
#line 12589 "tex.w"
;
next_p:p= link(p);
}

/*:630*/
#line 12580 "tex.w"
;
prune_movements(save_loc);
if(cur_s> 0)dvi_pop(save_loc);
decr(cur_s);
}

/*:629*//*638:*/
#line 12706 "tex.w"
void ship_out(pointer p)
{
int page_loc;
uint8_t j,k;
int s;
uint8_t old_setting;
if(tracing_output> 0)
{print_nl("");print_ln();
print_str("Completed box being shipped out");

}
if(term_offset> max_print_line-9)print_ln();
else if((term_offset> 0)||(file_offset> 0))print_char(' ');
print_char('[');j= 9;
while((count(j)==0)&&(j> 0))decr(j);
for(k= 0;k<=j;k++)
{print_int(count(k));
if(k<j)print_char('.');
}
update_terminal;
if(tracing_output> 0)
{print_char(']');
begin_diagnostic();show_box(p);end_diagnostic(true);
}
/*640:*/
#line 12756 "tex.w"

/*641:*/
#line 12772 "tex.w"

if((height(p)> max_dimen)||(depth(p)> max_dimen)||
(height(p)+depth(p)+v_offset> max_dimen)||
(width(p)+h_offset> max_dimen))
{print_err("Huge page cannot be shipped out");

help2("The page just created is more than 18 feet tall or")
("more than 18 feet wide, so I suspect something went wrong.");
error();
if(tracing_output<=0)
{begin_diagnostic();
print_nl("The following box has been deleted:");

show_box(p);
end_diagnostic(true);
}
goto done;
}
if(height(p)+depth(p)+v_offset> max_v)max_v= height(p)+depth(p)+v_offset;
if(width(p)+h_offset> max_h)max_h= width(p)+h_offset

/*:641*/
#line 12757 "tex.w"
;
/*617:*/
#line 12323 "tex.w"

dvi_h= 0;dvi_v= 0;cur_h= h_offset;dvi_f= null_font;
/*531:*/
#line 10333 "tex.w"

if(output_file_name==0)
{if(job_name==0)open_log_file();
pack_job_name(/*1635:*/
#line 25801 "tex.w"
510
/*:1635*/
#line 10336 "tex.w"
);
while(!b_open_out(&dvi_file))
prompt_file_name("file name for output",/*1635:*/
#line 25801 "tex.w"
510
/*:1635*/
#line 10338 "tex.w"
);
output_file_name= b_make_name_string(&dvi_file);
}

/*:531*/
#line 12325 "tex.w"
;
if(total_pages==0)
{dvi_out(pre);dvi_out(id_byte);

dvi_four(25400000);dvi_four(473628672);
prepare_mag();dvi_four(mag);
old_setting= selector;selector= new_string;
print_str(" TeX output ");print_int(year);print_char('.');
print_two(month);print_char('.');print_two(day);
print_char(':');print_two(time/60);
print_two(time%60);
selector= old_setting;dvi_out(cur_length);
for(s= str_start[str_ptr];s<=pool_ptr-1;s++)dvi_out(so(str_pool[s]));
pool_ptr= str_start[str_ptr];
}

/*:617*/
#line 12758 "tex.w"
;
page_loc= dvi_offset+dvi_ptr;
dvi_out(bop);
for(k= 0;k<=9;k++)dvi_four(count(k));
dvi_four(last_bop);last_bop= page_loc;
cur_v= height(p)+v_offset;temp_ptr= p;
if(type(p)==vlist_node)vlist_out();else hlist_out();
dvi_out(eop);incr(total_pages);cur_s= -1;
done:

/*:640*/
#line 12730 "tex.w"
;
if(tracing_output<=0)print_char(']');
dead_cycles= 0;
update_terminal;
/*639:*/
#line 12737 "tex.w"

#ifdef STAT
if(tracing_stats> 1)
{print_nl("Memory usage before: ");

print_int(var_used);print_char('&');
print_int(dyn_used);print_char(';');
}
#endif
flush_node_list(p);
#ifdef STAT
if(tracing_stats> 1)
{print_str(" after: ");
print_int(var_used);print_char('&');
print_int(dyn_used);print_str("; still untouched: ");
print_int(hi_mem_min-lo_mem_max-1);print_ln();
}
#endif

/*:639*/
#line 12734 "tex.w"
;
}

/*:638*//*645:*/
#line 12883 "tex.w"
void scan_spec(group_code c,bool three_codes)

{
int s;
uint8_t spec_code;
if(three_codes)s= saved(0);
if(scan_keyword(/*1642:*/
#line 25822 "tex.w"
517
/*:1642*/
#line 12889 "tex.w"
))spec_code= exactly;

else if(scan_keyword(/*1643:*/
#line 25825 "tex.w"
518
/*:1643*/
#line 12891 "tex.w"
))spec_code= additional;

else{spec_code= additional;cur_val= 0;
goto found;
}
scan_normal_dimen;
found:if(three_codes)
{saved(0)= s;incr(save_ptr);
}
saved(0)= spec_code;saved(1)= cur_val;save_ptr= save_ptr+2;
new_save_level(c);scan_left_brace();
}

/*:645*//*649:*/
#line 12938 "tex.w"
pointer hpack(pointer p,scaled w,small_number m)
{
pointer r;
pointer q;
scaled h,d,x;
scaled s;
pointer g;
glue_ord o;
internal_font_number f;
four_quarters i;
eight_bits hd;
last_badness= 0;r= get_node(box_node_size);type(r)= hlist_node;
subtype(r)= min_quarterword;shift_amount(r)= 0;
q= r+list_offset;link(q)= p;
h= 0;/*650:*/
#line 12965 "tex.w"

d= 0;x= 0;
total_stretch[normal]= 0;total_shrink[normal]= 0;
total_stretch[fil]= 0;total_shrink[fil]= 0;
total_stretch[fill]= 0;total_shrink[fill]= 0;
total_stretch[filll]= 0;total_shrink[filll]= 0

/*:650*/
#line 12952 "tex.w"
;
while(p!=null)/*651:*/
#line 12972 "tex.w"


{reswitch:while(is_char_node(p))
/*654:*/
#line 13015 "tex.w"

{f= font(p);i= char_info(f)(character(p));hd= height_depth(i);
x= x+char_width(f)(i);
s= char_height(f)(hd);if(s> h)h= s;
s= char_depth(f)(hd);if(s> d)d= s;
p= link(p);
}

/*:654*/
#line 12976 "tex.w"
;
if(p!=null)
{switch(type(p)){
case hlist_node:case vlist_node:case rule_node:case unset_node:
/*653:*/
#line 13003 "tex.w"

{x= x+width(p);
if(type(p)>=rule_node)s= 0;else s= shift_amount(p);
if(height(p)-s> h)h= height(p)-s;
if(depth(p)+s> d)d= depth(p)+s;
}

/*:653*/
#line 12980 "tex.w"
break;
case ins_node:case mark_node:case adjust_node:if(adjust_tail!=null)
/*655:*/
#line 13030 "tex.w"

{while(link(q)!=p)q= link(q);
if(type(p)==adjust_node)
{link(adjust_tail)= adjust_ptr(p);
while(link(adjust_tail)!=null)adjust_tail= link(adjust_tail);
p= link(p);free_node(link(q),small_node_size);
}
else{link(adjust_tail)= p;adjust_tail= p;p= link(p);
}
link(q)= p;p= q;
}

/*:655*/
#line 12982 "tex.w"
break;
case whatsit_node:/*1360:*/
#line 24795 "tex.w"
do_nothing

/*:1360*/
#line 12983 "tex.w"
;break;
case glue_node:/*656:*/
#line 13042 "tex.w"

{g= glue_ptr(p);x= x+width(g);
o= stretch_order(g);total_stretch[o]= total_stretch[o]+stretch(g);
o= shrink_order(g);total_shrink[o]= total_shrink[o]+shrink(g);
if(subtype(p)>=a_leaders)
{g= leader_ptr(p);
if(height(g)> h)h= height(g);
if(depth(g)> d)d= depth(g);
}
}

/*:656*/
#line 12984 "tex.w"
break;
case kern_node:case math_node:x= x+width(p);break;
case ligature_node:/*652:*/
#line 12994 "tex.w"

{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p);
p= lig_trick;goto reswitch;
}

/*:652*/
#line 12986 "tex.w"

default:do_nothing;
}
p= link(p);
}
}


/*:651*/
#line 12955 "tex.w"
;
if(adjust_tail!=null)link(adjust_tail)= null;
height(r)= h;depth(r)= d;
/*657:*/
#line 13056 "tex.w"

if(m==additional)w= x+w;
width(r)= w;x= w-x;
if(x==0)
{glue_sign(r)= normal;glue_order(r)= normal;
set_glue_ratio_zero(glue_set(r));
goto end;
}
else if(x> 0)/*658:*/
#line 13068 "tex.w"

{/*659:*/
#line 13082 "tex.w"

if(total_stretch[filll]!=0)o= filll;
else if(total_stretch[fill]!=0)o= fill;
else if(total_stretch[fil]!=0)o= fil;
else o= normal

/*:659*/
#line 13069 "tex.w"
;
glue_order(r)= o;glue_sign(r)= stretching;
if(total_stretch[o]!=0)glue_set(r)= unfloat(x/(double)total_stretch[o]);

else{glue_sign(r)= normal;
set_glue_ratio_zero(glue_set(r));
}
if(o==normal)if(list_ptr(r)!=null)
/*660:*/
#line 13088 "tex.w"

{last_badness= badness(x,total_stretch[normal]);
if(last_badness> hbadness)
{print_ln();
if(last_badness> 100)print_nl("Underfull");else print_nl("Loose");
print_str(" \\hbox (badness ");print_int(last_badness);


goto common_ending;
}
}

/*:660*/
#line 13078 "tex.w"
;
goto end;
}

/*:658*/
#line 13065 "tex.w"

else/*664:*/
#line 13127 "tex.w"

{/*665:*/
#line 13146 "tex.w"

if(total_shrink[filll]!=0)o= filll;
else if(total_shrink[fill]!=0)o= fill;
else if(total_shrink[fil]!=0)o= fil;
else o= normal

/*:665*/
#line 13128 "tex.w"
;
glue_order(r)= o;glue_sign(r)= shrinking;
if(total_shrink[o]!=0)glue_set(r)= unfloat((-x)/(double)total_shrink[o]);

else{glue_sign(r)= normal;
set_glue_ratio_zero(glue_set(r));
}
if((total_shrink[o]<-x)&&(o==normal)&&(list_ptr(r)!=null))
{last_badness= 1000000;
set_glue_ratio_one(glue_set(r));
/*666:*/
#line 13152 "tex.w"

if((-x-total_shrink[normal]> hfuzz)||(hbadness<100))
{if((overfull_rule> 0)&&(-x-total_shrink[normal]> hfuzz))
{while(link(q)!=null)q= link(q);
link(q)= new_rule();
width(link(q))= overfull_rule;
}
print_ln();print_nl("Overfull \\hbox (");

print_scaled(-x-total_shrink[normal]);print_str("pt too wide");
goto common_ending;
}

/*:666*/
#line 13139 "tex.w"
;
}
else if(o==normal)if(list_ptr(r)!=null)
/*667:*/
#line 13165 "tex.w"

{last_badness= badness(-x,total_shrink[normal]);
if(last_badness> hbadness)
{print_ln();print_nl("Tight \\hbox (badness ");print_int(last_badness);

goto common_ending;
}
}

/*:667*/
#line 13142 "tex.w"
;
goto end;
}

/*:664*/
#line 13066 "tex.w"


/*:657*/
#line 12959 "tex.w"
;
common_ending:/*663:*/
#line 13112 "tex.w"

if(output_active)print_str(") has occurred while \\output is active");
else{if(pack_begin_line!=0)
{if(pack_begin_line> 0)print_str(") in paragraph at lines ");
else print_str(") in alignment at lines ");
print_int(abs(pack_begin_line));
print_str("--");
}
else print_str(") detected at line ");
print_int(line);
}
print_ln();
font_in_short_display= null_font;short_display(list_ptr(r));print_ln();
begin_diagnostic();show_box(r);end_diagnostic(true)

/*:663*/
#line 12961 "tex.w"
;
end:return r;
}

/*:649*//*668:*/
#line 13181 "tex.w"

#define vpack(...) vpackage(__VA_ARGS__, max_dimen)


pointer vpackage(pointer p,scaled h,small_number m,scaled l)
{
pointer r;
scaled w,d,x;
scaled s;
pointer g;
glue_ord o;
last_badness= 0;r= get_node(box_node_size);type(r)= vlist_node;
subtype(r)= min_quarterword;shift_amount(r)= 0;
list_ptr(r)= p;
w= 0;/*650:*/
#line 12965 "tex.w"

d= 0;x= 0;
total_stretch[normal]= 0;total_shrink[normal]= 0;
total_stretch[fil]= 0;total_shrink[fil]= 0;
total_stretch[fill]= 0;total_shrink[fill]= 0;
total_stretch[filll]= 0;total_shrink[filll]= 0

/*:650*/
#line 13195 "tex.w"
;
while(p!=null)/*669:*/
#line 13210 "tex.w"

{if(is_char_node(p))confusion(/*1644:*/
#line 25828 "tex.w"
519
/*:1644*/
#line 13211 "tex.w"
);

else switch(type(p)){
case hlist_node:case vlist_node:case rule_node:case unset_node:
/*670:*/
#line 13225 "tex.w"

{x= x+d+height(p);d= depth(p);
if(type(p)>=rule_node)s= 0;else s= shift_amount(p);
if(width(p)+s> w)w= width(p)+s;
}

/*:670*/
#line 13215 "tex.w"
break;
case whatsit_node:/*1359:*/
#line 24793 "tex.w"
do_nothing

/*:1359*/
#line 13216 "tex.w"
;break;
case glue_node:/*671:*/
#line 13231 "tex.w"

{x= x+d;d= 0;
g= glue_ptr(p);x= x+width(g);
o= stretch_order(g);total_stretch[o]= total_stretch[o]+stretch(g);
o= shrink_order(g);total_shrink[o]= total_shrink[o]+shrink(g);
if(subtype(p)>=a_leaders)
{g= leader_ptr(p);
if(width(g)> w)w= width(g);
}
}

/*:671*/
#line 13217 "tex.w"
break;
case kern_node:{x= x+d+width(p);d= 0;
}break;
default:do_nothing;
}
p= link(p);
}

/*:669*/
#line 13197 "tex.w"
;
width(r)= w;
if(d> l)
{x= x+d-l;depth(r)= l;
}
else depth(r)= d;
/*672:*/
#line 13245 "tex.w"

if(m==additional)h= x+h;
height(r)= h;x= h-x;
if(x==0)
{glue_sign(r)= normal;glue_order(r)= normal;
set_glue_ratio_zero(glue_set(r));
goto end;
}
else if(x> 0)/*673:*/
#line 13257 "tex.w"

{/*659:*/
#line 13082 "tex.w"

if(total_stretch[filll]!=0)o= filll;
else if(total_stretch[fill]!=0)o= fill;
else if(total_stretch[fil]!=0)o= fil;
else o= normal

/*:659*/
#line 13258 "tex.w"
;
glue_order(r)= o;glue_sign(r)= stretching;
if(total_stretch[o]!=0)glue_set(r)= unfloat(x/(double)total_stretch[o]);

else{glue_sign(r)= normal;
set_glue_ratio_zero(glue_set(r));
}
if(o==normal)if(list_ptr(r)!=null)
/*674:*/
#line 13271 "tex.w"

{last_badness= badness(x,total_stretch[normal]);
if(last_badness> vbadness)
{print_ln();
if(last_badness> 100)print_nl("Underfull");else print_nl("Loose");
print_str(" \\vbox (badness ");print_int(last_badness);


goto common_ending;
}
}

/*:674*/
#line 13267 "tex.w"
;
goto end;
}

/*:673*/
#line 13254 "tex.w"

else/*676:*/
#line 13296 "tex.w"

{/*665:*/
#line 13146 "tex.w"

if(total_shrink[filll]!=0)o= filll;
else if(total_shrink[fill]!=0)o= fill;
else if(total_shrink[fil]!=0)o= fil;
else o= normal

/*:665*/
#line 13297 "tex.w"
;
glue_order(r)= o;glue_sign(r)= shrinking;
if(total_shrink[o]!=0)glue_set(r)= unfloat((-x)/(double)total_shrink[o]);

else{glue_sign(r)= normal;
set_glue_ratio_zero(glue_set(r));
}
if((total_shrink[o]<-x)&&(o==normal)&&(list_ptr(r)!=null))
{last_badness= 1000000;
set_glue_ratio_one(glue_set(r));
/*677:*/
#line 13315 "tex.w"

if((-x-total_shrink[normal]> vfuzz)||(vbadness<100))
{print_ln();print_nl("Overfull \\vbox (");

print_scaled(-x-total_shrink[normal]);print_str("pt too high");
goto common_ending;
}

/*:677*/
#line 13308 "tex.w"
;
}
else if(o==normal)if(list_ptr(r)!=null)
/*678:*/
#line 13323 "tex.w"

{last_badness= badness(-x,total_shrink[normal]);
if(last_badness> vbadness)
{print_ln();print_nl("Tight \\vbox (badness ");print_int(last_badness);

goto common_ending;
}
}

/*:678*/
#line 13311 "tex.w"
;
goto end;
}

/*:676*/
#line 13255 "tex.w"


/*:672*/
#line 13204 "tex.w"
;
common_ending:/*675:*/
#line 13283 "tex.w"

if(output_active)print_str(") has occurred while \\output is active");
else{if(pack_begin_line!=0)
{print_str(") in alignment at lines ");
print_int(abs(pack_begin_line));
print_str("--");
}
else print_str(") detected at line ");
print_int(line);
print_ln();
}
begin_diagnostic();show_box(r);end_diagnostic(true)

/*:675*/
#line 13206 "tex.w"
;
end:return r;
}

/*:668*//*679:*/
#line 13335 "tex.w"
void append_to_vlist(pointer b)
{scaled d;
pointer p;
if(prev_depth> ignore_depth)
{d= width(baseline_skip)-prev_depth-height(b);
if(d<line_skip_limit)p= new_param_glue(line_skip_code);
else{p= new_skip_param(baseline_skip_code);
width(temp_ptr)= d;
}
link(tail)= p;tail= p;
}
link(tail)= b;tail= b;prev_depth= depth(b);
}

/*:679*//*686:*/
#line 13533 "tex.w"
pointer new_noad(void)
{pointer p;
p= get_node(noad_size);
type(p)= ord_noad;subtype(p)= normal;
mem[nucleus(p)].hh= empty_field;
mem[subscr(p)].hh= empty_field;
mem[supscr(p)].hh= empty_field;
return p;
}

/*:686*//*688:*/
#line 13594 "tex.w"
pointer new_style(small_number s)
{pointer p;
p= get_node(style_node_size);type(p)= style_node;
subtype(p)= s;width(p)= 0;depth(p)= 0;
return p;
}

/*:688*//*689:*/
#line 13611 "tex.w"
pointer new_choice(void)
{pointer p;
p= get_node(style_node_size);type(p)= choice_node;
subtype(p)= 0;
display_mlist(p)= null;text_mlist(p)= null;script_mlist(p)= null;
script_script_mlist(p)= null;
return p;
}

/*:689*//*693:*/
#line 13699 "tex.w"
void show_info(void)
{show_node_list(info(temp_ptr));
}

/*:693*//*704:*/
#line 13894 "tex.w"
pointer fraction_rule(scaled t)

{pointer p;
p= new_rule();height(p)= t;depth(p)= 0;return p;
}

/*:704*//*705:*/
#line 13904 "tex.w"
pointer overbar(pointer b,scaled k,scaled t)
{pointer p,q;
p= new_kern(k);link(p)= b;q= fraction_rule(t);link(q)= p;
p= new_kern(t);link(p)= q;return vpack(p,natural);
}

/*:705*//*706:*/
#line 13925 "tex.w"
/*709:*/
#line 13997 "tex.w"

pointer char_box(internal_font_number f,quarterword c)
{four_quarters q;
eight_bits hd;
pointer b,p;
q= char_info(f)(c);hd= height_depth(q);
b= new_null_box();width(b)= char_width(f)(q)+char_italic(f)(q);
height(b)= char_height(f)(hd);depth(b)= char_depth(f)(hd);
p= get_avail();character(p)= c;font(p)= f;list_ptr(b)= p;return b;
}

/*:709*//*711:*/
#line 14021 "tex.w"

void stack_into_box(pointer b,internal_font_number f,
quarterword c)
{pointer p;
p= char_box(f,c);link(p)= list_ptr(b);list_ptr(b)= p;
height(b)= height(p);
}

/*:711*//*712:*/
#line 14032 "tex.w"

scaled height_plus_depth(internal_font_number f,quarterword c)
{four_quarters q;
eight_bits hd;
q= char_info(f)(c);hd= height_depth(q);
return char_height(f)(hd)+char_depth(f)(hd);
}

/*:712*/
#line 13925 "tex.w"

pointer var_delimiter(pointer d,small_number s,scaled v)
{
pointer b;
internal_font_number f,g;
quarterword c,x,y;
int m,n;
scaled u;
scaled w;
four_quarters q;
eight_bits hd;
four_quarters r;
small_number z;
bool large_attempt;
f= null_font;w= 0;large_attempt= false;
z= small_fam(d);x= small_char(d);
loop{/*707:*/
#line 13959 "tex.w"

if((z!=0)||(x!=min_quarterword))
{z= z+s+16;
do{z= z-16;g= fam_fnt(z);
if(g!=null_font)
/*708:*/
#line 13970 "tex.w"

{y= x;
if((qo(y)>=font_bc[g])&&(qo(y)<=font_ec[g]))
{resume:q= char_info(g)(y);
if(char_exists(q))
{if(char_tag(q)==ext_tag)
{f= g;c= y;goto found;
}
hd= height_depth(q);
u= char_height(g)(hd)+char_depth(g)(hd);
if(u> w)
{f= g;c= y;w= u;
if(u>=v)goto found;
}
if(char_tag(q)==list_tag)
{y= rem_byte(q);goto resume;
}
}
}
}

/*:708*/
#line 13966 "tex.w"
;
}while(!(z<16));
}

/*:707*/
#line 13942 "tex.w"
;
if(large_attempt)goto found;
large_attempt= true;z= large_fam(d);x= large_char(d);
}
found:if(f!=null_font)
/*710:*/
#line 14011 "tex.w"

if(char_tag(q)==ext_tag)
/*713:*/
#line 14040 "tex.w"

{b= new_null_box();
type(b)= vlist_node;
r= font_info[exten_base[f]+rem_byte(q)].qqqq;
/*714:*/
#line 14065 "tex.w"

c= ext_rep(r);u= height_plus_depth(f,c);
w= 0;q= char_info(f)(c);width(b)= char_width(f)(q)+char_italic(f)(q);
c= ext_bot(r);if(c!=min_quarterword)w= w+height_plus_depth(f,c);
c= ext_mid(r);if(c!=min_quarterword)w= w+height_plus_depth(f,c);
c= ext_top(r);if(c!=min_quarterword)w= w+height_plus_depth(f,c);
n= 0;
if(u> 0)while(w<v)
{w= w+u;incr(n);
if(ext_mid(r)!=min_quarterword)w= w+u;
}

/*:714*/
#line 14045 "tex.w"
;
c= ext_bot(r);
if(c!=min_quarterword)stack_into_box(b,f,c);
c= ext_rep(r);
for(m= 1;m<=n;m++)stack_into_box(b,f,c);
c= ext_mid(r);
if(c!=min_quarterword)
{stack_into_box(b,f,c);c= ext_rep(r);
for(m= 1;m<=n;m++)stack_into_box(b,f,c);
}
c= ext_top(r);
if(c!=min_quarterword)stack_into_box(b,f,c);
depth(b)= w-height(b);
}

/*:713*/
#line 14014 "tex.w"

else b= char_box(f,c)

/*:710*/
#line 13947 "tex.w"
;
else{b= new_null_box();
width(b)= null_delimiter_space;
}
shift_amount(b)= half(height(b)-depth(b))-axis_height(s);
return b;
}

/*:706*//*715:*/
#line 14090 "tex.w"
pointer rebox(pointer b,scaled w)
{pointer p;
internal_font_number f;
scaled v;
if((width(b)!=w)&&(list_ptr(b)!=null))
{if(type(b)==vlist_node)b= hpack(b,natural);
p= list_ptr(b);
if((is_char_node(p))&&(link(p)==null))
{f= font(p);v= char_width(f)(char_info(f)(character(p)));
if(v!=width(b))link(p)= new_kern(width(b)-v);
}
free_node(b,box_node_size);
b= new_glue(ss_glue);link(b)= p;
while(link(p)!=null)p= link(p);
link(p)= new_glue(ss_glue);
return hpack(b,w,exactly);
}
else{width(b)= w;return b;
}
}

/*:715*//*716:*/
#line 14116 "tex.w"
pointer math_glue(pointer g,scaled m)
{pointer p;
int n;
scaled f;
n= x_over_n(m,0200000);f= rem;
if(f<0)
{decr(n);f= f+0200000;
}
p= get_node(glue_spec_size);
width(p)= mu_mult(width(g));
stretch_order(p)= stretch_order(g);
if(stretch_order(p)==normal)stretch(p)= mu_mult(stretch(g));
else stretch(p)= stretch(g);
shrink_order(p)= shrink_order(g);
if(shrink_order(p)==normal)shrink(p)= mu_mult(shrink(g));
else shrink(p)= shrink(g);
return p;
}

/*:716*//*717:*/
#line 14138 "tex.w"
void math_kern(pointer p,scaled m)
{int n;
scaled f;
if(subtype(p)==mu_glue)
{n= x_over_n(m,0200000);f= rem;
if(f<0)
{decr(n);f= f+0200000;
}
width(p)= mu_mult(width(p));subtype(p)= explicit;
}
}

/*:717*//*718:*/
#line 14153 "tex.w"
void flush_math(void)
{flush_node_list(link(head));flush_node_list(incompleat_noad);
link(head)= null;tail= head;incompleat_noad= null;
}

/*:718*//*720:*/
#line 14190 "tex.w"
void mlist_to_hlist(void);
pointer clean_box(pointer p,small_number s)
{
pointer q;
small_number save_style;
pointer x;
pointer r;
switch(math_type(p)){
case math_char:{cur_mlist= new_noad();mem[nucleus(cur_mlist)]= mem[p];
}break;
case sub_box:{q= info(p);goto found;
}
case sub_mlist:cur_mlist= info(p);break;
default:{q= new_null_box();goto found;
}
}
save_style= cur_style;cur_style= s;mlist_penalties= false;
mlist_to_hlist();q= link(temp_head);
cur_style= save_style;
/*703:*/
#line 13884 "tex.w"

{if(cur_style<script_style)cur_size= text_size;
else cur_size= 16*((cur_style-text_style)/2);
cur_mu= x_over_n(math_quad(cur_size),18);
}

/*:703*/
#line 14209 "tex.w"
;
found:if(is_char_node(q)||(q==null))x= hpack(q,natural);
else if((link(q)==null)&&(type(q)<=vlist_node)&&(shift_amount(q)==0))
x= q;
else x= hpack(q,natural);
/*721:*/
#line 14220 "tex.w"

q= list_ptr(x);
if(is_char_node(q))
{r= link(q);
if(r!=null)if(link(r)==null)if(!is_char_node(r))
if(type(r)==kern_node)
{free_node(r,small_node_size);link(q)= null;
}
}

/*:721*/
#line 14214 "tex.w"
;
return x;
}

/*:720*//*722:*/
#line 14237 "tex.w"
void fetch(pointer a)
{cur_c= character(a);cur_f= fam_fnt(fam(a)+cur_size);
if(cur_f==null_font)
/*723:*/
#line 14251 "tex.w"

{print_err("");print_size(cur_size);print_char(' ');
print_int(fam(a));print_str(" is undefined (character ");
print_ASCII(qo(cur_c));print_char(')');
help4("Somewhere in the math formula just ended, you used the")
("stated character from an undefined font family. For example,")
("plain TeX doesn't allow \\it or \\sl in subscripts. Proceed,")
("and I'll try to forget that I needed that character.");
error();cur_i= null_character;math_type(a)= empty;
}

/*:723*/
#line 14240 "tex.w"

else{if((qo(cur_c)>=font_bc[cur_f])&&(qo(cur_c)<=font_ec[cur_f]))
cur_i= char_info(cur_f)(cur_c);
else cur_i= null_character;
if(!(char_exists(cur_i)))
{char_warning(cur_f,qo(cur_c));
math_type(a)= empty;
}
}
}

/*:722*//*726:*/
#line 14291 "tex.w"
/*734:*/
#line 14443 "tex.w"

void make_over(pointer q)
{info(nucleus(q))= 
overbar(clean_box(nucleus(q),cramped_style(cur_style)),
3*default_rule_thickness,default_rule_thickness);
math_type(nucleus(q))= sub_box;
}

/*:734*//*735:*/
#line 14451 "tex.w"

void make_under(pointer q)
{pointer p,x,y;
scaled delta;
x= clean_box(nucleus(q),cur_style);
p= new_kern(3*default_rule_thickness);link(x)= p;
link(p)= fraction_rule(default_rule_thickness);
y= vpack(x,natural);
delta= height(y)+depth(y)+default_rule_thickness;
height(y)= height(x);depth(y)= delta-height(y);
info(nucleus(q))= y;math_type(nucleus(q))= sub_box;
}

/*:735*//*736:*/
#line 14464 "tex.w"

void make_vcenter(pointer q)
{pointer v;
scaled delta;
v= info(nucleus(q));
if(type(v)!=vlist_node)confusion(/*1561:*/
#line 25579 "tex.w"
436
/*:1561*/
#line 14469 "tex.w"
);

delta= height(v)+depth(v);
height(v)= axis_height(cur_size)+half(delta);
depth(v)= delta-height(v);
}

/*:736*//*737:*/
#line 14485 "tex.w"

void make_radical(pointer q)
{pointer x,y;
scaled delta,clr;
x= clean_box(nucleus(q),cramped_style(cur_style));
if(cur_style<text_style)
clr= default_rule_thickness+(abs(math_x_height(cur_size))/4);
else{clr= default_rule_thickness;clr= clr+(abs(clr)/4);
}
y= var_delimiter(left_delimiter(q),cur_size,height(x)+depth(x)+clr+
default_rule_thickness);
delta= depth(y)-(height(x)+depth(x)+clr);
if(delta> 0)clr= clr+half(delta);
shift_amount(y)= -(height(x)+clr);
link(y)= overbar(x,clr,height(y));
info(nucleus(q))= hpack(y,natural);math_type(nucleus(q))= sub_box;
}

/*:737*//*738:*/
#line 14507 "tex.w"

void make_math_accent(pointer q)
{
pointer p,x,y;
int a;
quarterword c;
internal_font_number f;
four_quarters i;
scaled s;
scaled h;
scaled delta;
scaled w;
fetch(accent_chr(q));
if(char_exists(cur_i))
{i= cur_i;c= cur_c;f= cur_f;
/*741:*/
#line 14554 "tex.w"

s= 0;
if(math_type(nucleus(q))==math_char)
{fetch(nucleus(q));
if(char_tag(cur_i)==lig_tag)
{a= lig_kern_start(cur_f)(cur_i);
cur_i= font_info[a].qqqq;
if(skip_byte(cur_i)> stop_flag)
{a= lig_kern_restart(cur_f)(cur_i);
cur_i= font_info[a].qqqq;
}
loop{if(qo(next_char(cur_i))==skew_char[cur_f])
{if(op_byte(cur_i)>=kern_flag)
if(skip_byte(cur_i)<=stop_flag)s= char_kern(cur_f)(cur_i);
goto done1;
}
if(skip_byte(cur_i)>=stop_flag)goto done1;
a= a+qo(skip_byte(cur_i))+1;
cur_i= font_info[a].qqqq;
}
}
}
done1:

/*:741*/
#line 14522 "tex.w"
;
x= clean_box(nucleus(q),cramped_style(cur_style));w= width(x);h= height(x);
/*740:*/
#line 14544 "tex.w"

loop{if(char_tag(i)!=list_tag)goto done;
y= rem_byte(i);
i= char_info(f)(y);
if(!char_exists(i))goto done;
if(char_width(f)(i)> w)goto done;
c= y;
}
done:

/*:740*/
#line 14524 "tex.w"
;
if(h<x_height(f))delta= h;else delta= x_height(f);
if((math_type(supscr(q))!=empty)||(math_type(subscr(q))!=empty))
if(math_type(nucleus(q))==math_char)
/*742:*/
#line 14578 "tex.w"

{flush_node_list(x);x= new_noad();
mem[nucleus(x)]= mem[nucleus(q)];
mem[supscr(x)]= mem[supscr(q)];
mem[subscr(x)]= mem[subscr(q)];
mem[supscr(q)].hh= empty_field;
mem[subscr(q)].hh= empty_field;
math_type(nucleus(q))= sub_mlist;info(nucleus(q))= x;
x= clean_box(nucleus(q),cur_style);delta= delta+height(x)-h;h= height(x);
}

/*:742*/
#line 14528 "tex.w"
;
y= char_box(f,c);
shift_amount(y)= s+half(w-width(y));
width(y)= 0;p= new_kern(-delta);link(p)= x;link(y)= p;
y= vpack(y,natural);width(y)= width(x);
if(height(y)<h)/*739:*/
#line 14539 "tex.w"

{p= new_kern(h-height(y));link(p)= list_ptr(y);list_ptr(y)= p;
height(y)= h;
}

/*:739*/
#line 14533 "tex.w"
;
info(nucleus(q))= y;
math_type(nucleus(q))= sub_box;
}
}

/*:738*//*743:*/
#line 14592 "tex.w"

void make_fraction(pointer q)
{pointer p,v,x,y,z;
scaled delta,delta1,delta2,shift_up,shift_down,clr;

if(thickness(q)==default_code)thickness(q)= default_rule_thickness;
/*744:*/
#line 14609 "tex.w"

x= clean_box(numerator(q),num_style(cur_style));
z= clean_box(denominator(q),denom_style(cur_style));
if(width(x)<width(z))x= rebox(x,width(z));
else z= rebox(z,width(x));
if(cur_style<text_style)
{shift_up= num1(cur_size);shift_down= denom1(cur_size);
}
else{shift_down= denom2(cur_size);
if(thickness(q)!=0)shift_up= num2(cur_size);
else shift_up= num3(cur_size);
}

/*:744*/
#line 14600 "tex.w"
;
if(thickness(q)==0)/*745:*/
#line 14626 "tex.w"

{if(cur_style<text_style)clr= 7*default_rule_thickness;
else clr= 3*default_rule_thickness;
delta= half(clr-((shift_up-depth(x))-(height(z)-shift_down)));
if(delta> 0)
{shift_up= shift_up+delta;
shift_down= shift_down+delta;
}
}

/*:745*/
#line 14602 "tex.w"

else/*746:*/
#line 14639 "tex.w"

{if(cur_style<text_style)clr= 3*thickness(q);
else clr= thickness(q);
delta= half(thickness(q));
delta1= clr-((shift_up-depth(x))-(axis_height(cur_size)+delta));
delta2= clr-((axis_height(cur_size)-delta)-(height(z)-shift_down));
if(delta1> 0)shift_up= shift_up+delta1;
if(delta2> 0)shift_down= shift_down+delta2;
}

/*:746*/
#line 14603 "tex.w"
;
/*747:*/
#line 14649 "tex.w"

v= new_null_box();type(v)= vlist_node;
height(v)= shift_up+height(x);depth(v)= depth(z)+shift_down;
width(v)= width(x);
if(thickness(q)==0)
{p= new_kern((shift_up-depth(x))-(height(z)-shift_down));
link(p)= z;
}
else{y= fraction_rule(thickness(q));
p= new_kern((axis_height(cur_size)-delta)-(height(z)-shift_down));
link(y)= p;link(p)= z;
p= new_kern((shift_up-depth(x))-(axis_height(cur_size)+delta));
link(p)= y;
}
link(x)= p;list_ptr(v)= x

/*:747*/
#line 14604 "tex.w"
;
/*748:*/
#line 14665 "tex.w"

if(cur_style<text_style)delta= delim1(cur_size);
else delta= delim2(cur_size);
x= var_delimiter(left_delimiter(q),cur_size,delta);link(x)= v;
z= var_delimiter(right_delimiter(q),cur_size,delta);link(v)= z;
new_hlist(q)= hpack(x,natural)

/*:748*/
#line 14606 "tex.w"
;
}

/*:743*//*749:*/
#line 14687 "tex.w"

scaled make_op(pointer q)
{scaled delta;
pointer p,v,x,y,z;
quarterword c;four_quarters i;
scaled shift_up,shift_down;
if((subtype(q)==normal)&&(cur_style<text_style))
subtype(q)= limits;
if(math_type(nucleus(q))==math_char)
{fetch(nucleus(q));
if((cur_style<text_style)&&(char_tag(cur_i)==list_tag))
{c= rem_byte(cur_i);i= char_info(cur_f)(c);
if(char_exists(i))
{cur_c= c;cur_i= i;character(nucleus(q))= c;
}
}
delta= char_italic(cur_f)(cur_i);x= clean_box(nucleus(q),cur_style);
if((math_type(subscr(q))!=empty)&&(subtype(q)!=limits))
width(x)= width(x)-delta;
shift_amount(x)= half(height(x)-depth(x))-axis_height(cur_size);

math_type(nucleus(q))= sub_box;info(nucleus(q))= x;
}
else delta= 0;
if(subtype(q)==limits)
/*750:*/
#line 14719 "tex.w"

{x= clean_box(supscr(q),sup_style(cur_style));
y= clean_box(nucleus(q),cur_style);
z= clean_box(subscr(q),sub_style(cur_style));
v= new_null_box();type(v)= vlist_node;width(v)= width(y);
if(width(x)> width(v))width(v)= width(x);
if(width(z)> width(v))width(v)= width(z);
x= rebox(x,width(v));y= rebox(y,width(v));z= rebox(z,width(v));
shift_amount(x)= half(delta);shift_amount(z)= -shift_amount(x);
height(v)= height(y);depth(v)= depth(y);
/*751:*/
#line 14739 "tex.w"

if(math_type(supscr(q))==empty)
{free_node(x,box_node_size);list_ptr(v)= y;
}
else{shift_up= big_op_spacing3-depth(x);
if(shift_up<big_op_spacing1)shift_up= big_op_spacing1;
p= new_kern(shift_up);link(p)= y;link(x)= p;
p= new_kern(big_op_spacing5);link(p)= x;list_ptr(v)= p;
height(v)= height(v)+big_op_spacing5+height(x)+depth(x)+shift_up;
}
if(math_type(subscr(q))==empty)free_node(z,box_node_size);
else{shift_down= big_op_spacing4-height(z);
if(shift_down<big_op_spacing2)shift_down= big_op_spacing2;
p= new_kern(shift_down);link(y)= p;link(p)= z;
p= new_kern(big_op_spacing5);link(z)= p;
depth(v)= depth(v)+big_op_spacing5+height(z)+depth(z)+shift_down;
}

/*:751*/
#line 14730 "tex.w"
;
new_hlist(q)= v;
}

/*:750*/
#line 14712 "tex.w"
;
return delta;
}

/*:749*//*752:*/
#line 14767 "tex.w"

void make_ord(pointer q)
{
int a;
pointer p,r;
restart:
if(math_type(subscr(q))==empty)if(math_type(supscr(q))==empty)
if(math_type(nucleus(q))==math_char)
{p= link(q);
if(p!=null)if((type(p)>=ord_noad)&&(type(p)<=punct_noad))
if(math_type(nucleus(p))==math_char)
if(fam(nucleus(p))==fam(nucleus(q)))
{math_type(nucleus(q))= math_text_char;
fetch(nucleus(q));
if(char_tag(cur_i)==lig_tag)
{a= lig_kern_start(cur_f)(cur_i);
cur_c= character(nucleus(p));
cur_i= font_info[a].qqqq;
if(skip_byte(cur_i)> stop_flag)
{a= lig_kern_restart(cur_f)(cur_i);
cur_i= font_info[a].qqqq;
}
loop{/*753:*/
#line 14809 "tex.w"

if(next_char(cur_i)==cur_c)if(skip_byte(cur_i)<=stop_flag)
if(op_byte(cur_i)>=kern_flag)
{p= new_kern(char_kern(cur_f)(cur_i));
link(p)= link(q);link(q)= p;return;
}
else{check_interrupt;
switch(op_byte(cur_i)){
qi(case 1):qi(case 5):character(nucleus(q))= rem_byte(cur_i);break;
qi(case 2):qi(case 6):character(nucleus(p))= rem_byte(cur_i);break;
qi(case 3):qi(case 7):qi(case 11):{r= new_noad();
character(nucleus(r))= rem_byte(cur_i);
fam(nucleus(r))= fam(nucleus(q));
link(q)= r;link(r)= p;
if(op_byte(cur_i)<qi(11))math_type(nucleus(r))= math_char;
else math_type(nucleus(r))= math_text_char;
}break;
default:{link(q)= link(p);
character(nucleus(q))= rem_byte(cur_i);
mem[subscr(q)]= mem[subscr(p)];mem[supscr(q)]= mem[supscr(p)];
free_node(p,noad_size);
}
}
if(op_byte(cur_i)> qi(3))return;
math_type(nucleus(q))= math_char;goto restart;
}

/*:753*/
#line 14791 "tex.w"
;
if(skip_byte(cur_i)>=stop_flag)return;
a= a+qo(skip_byte(cur_i))+1;
cur_i= font_info[a].qqqq;
}
}
}
}
}

/*:752*//*756:*/
#line 14891 "tex.w"

void make_scripts(pointer q,scaled delta)
{pointer p,x,y,z;
scaled shift_up,shift_down,clr;
small_number t;
p= new_hlist(q);
if(is_char_node(p))
{shift_up= 0;shift_down= 0;
}
else{z= hpack(p,natural);
if(cur_style<script_style)t= script_size;else t= script_script_size;
shift_up= height(z)-sup_drop(t);
shift_down= depth(z)+sub_drop(t);
free_node(z,box_node_size);
}
if(math_type(supscr(q))==empty)
/*757:*/
#line 14923 "tex.w"

{x= clean_box(subscr(q),sub_style(cur_style));
width(x)= width(x)+script_space;
if(shift_down<sub1(cur_size))shift_down= sub1(cur_size);
clr= height(x)-(abs(math_x_height(cur_size)*4)/5);
if(shift_down<clr)shift_down= clr;
shift_amount(x)= shift_down;
}

/*:757*/
#line 14907 "tex.w"

else{/*758:*/
#line 14935 "tex.w"

{x= clean_box(supscr(q),sup_style(cur_style));
width(x)= width(x)+script_space;
if(odd(cur_style))clr= sup3(cur_size);
else if(cur_style<text_style)clr= sup1(cur_size);
else clr= sup2(cur_size);
if(shift_up<clr)shift_up= clr;
clr= depth(x)+(abs(math_x_height(cur_size))/4);
if(shift_up<clr)shift_up= clr;
}

/*:758*/
#line 14908 "tex.w"
;
if(math_type(subscr(q))==empty)shift_amount(x)= -shift_up;
else/*759:*/
#line 14952 "tex.w"

{y= clean_box(subscr(q),sub_style(cur_style));
width(y)= width(y)+script_space;
if(shift_down<sub2(cur_size))shift_down= sub2(cur_size);
clr= 4*default_rule_thickness-
((shift_up-depth(x))-(height(y)-shift_down));
if(clr> 0)
{shift_down= shift_down+clr;
clr= (abs(math_x_height(cur_size)*4)/5)-(shift_up-depth(x));
if(clr> 0)
{shift_up= shift_up+clr;
shift_down= shift_down-clr;
}
}
shift_amount(x)= delta;
p= new_kern((shift_up-depth(x))-(height(y)-shift_down));link(x)= p;link(p)= y;
x= vpack(x,natural);shift_amount(x)= shift_down;
}

/*:759*/
#line 14911 "tex.w"
;
}
if(new_hlist(q)==null)new_hlist(q)= x;
else{p= new_hlist(q);
while(link(p)!=null)p= link(p);
link(p)= x;
}
}

/*:756*//*762:*/
#line 15024 "tex.w"

small_number make_left_right(pointer q,small_number style,
scaled max_d,scaled max_h)
{scaled delta,delta1,delta2;
if(style<script_style)cur_size= text_size;
else cur_size= 16*((style-text_style)/2);
delta2= max_d+axis_height(cur_size);
delta1= max_h+max_d-delta2;
if(delta2> delta1)delta1= delta2;
delta= (delta1/500)*delimiter_factor;
delta2= delta1+delta1-delimiter_shortfall;
if(delta<delta2)delta= delta2;
new_hlist(q)= var_delimiter(delimiter(q),cur_size,delta);
return type(q)-(left_noad-open_noad);
}

/*:762*/
#line 14291 "tex.w"

void mlist_to_hlist(void)
{

pointer mlist;
bool penalties;
small_number style;
small_number save_style;
pointer q;
pointer r;
small_number r_type;
small_number t;
pointer p,x,y,z;
int pen;
small_number s;
scaled max_h,max_d;
scaled delta;
mlist= cur_mlist;penalties= mlist_penalties;
style= cur_style;
q= mlist;r= null;r_type= op_noad;max_h= 0;max_d= 0;
/*703:*/
#line 13884 "tex.w"

{if(cur_style<script_style)cur_size= text_size;
else cur_size= 16*((cur_style-text_style)/2);
cur_mu= x_over_n(math_quad(cur_size),18);
}

/*:703*/
#line 14311 "tex.w"
;
while(q!=null)/*727:*/
#line 14322 "tex.w"

{/*728:*/
#line 14338 "tex.w"

reswitch:delta= 0;
switch(type(q)){
case bin_noad:switch(r_type){
case bin_noad:case op_noad:case rel_noad:case open_noad:case punct_noad:case left_noad:
{type(q)= ord_noad;goto reswitch;
}
default:do_nothing;
}break;
case rel_noad:case close_noad:case punct_noad:case right_noad:{
/*729:*/
#line 14358 "tex.w"

if(r_type==bin_noad)type(r)= ord_noad

/*:729*/
#line 14348 "tex.w"
;
if(type(q)==right_noad)goto done_with_noad;
}break;
/*733:*/
#line 14422 "tex.w"

case left_noad:goto done_with_noad;
case fraction_noad:{make_fraction(q);goto check_dimensions;
}
case op_noad:{delta= make_op(q);
if(subtype(q)==limits)goto check_dimensions;
}break;
case ord_noad:make_ord(q);break;
case open_noad:case inner_noad:do_nothing;break;
case radical_noad:make_radical(q);break;
case over_noad:make_over(q);break;
case under_noad:make_under(q);break;
case accent_noad:make_math_accent(q);break;
case vcenter_noad:make_vcenter(q);break;

/*:733*/
#line 14351 "tex.w"

/*730:*/
#line 14361 "tex.w"

case style_node:{cur_style= subtype(q);
/*703:*/
#line 13884 "tex.w"

{if(cur_style<script_style)cur_size= text_size;
else cur_size= 16*((cur_style-text_style)/2);
cur_mu= x_over_n(math_quad(cur_size),18);
}

/*:703*/
#line 14363 "tex.w"
;
goto done_with_node;
}
case choice_node:/*731:*/
#line 14381 "tex.w"

{switch(cur_style/2){
case 0:choose_mlist(display_mlist)break;
case 1:choose_mlist(text_mlist)break;
case 2:choose_mlist(script_mlist)break;
case 3:choose_mlist(script_script_mlist);
}
flush_node_list(display_mlist(q));
flush_node_list(text_mlist(q));
flush_node_list(script_mlist(q));
flush_node_list(script_script_mlist(q));
type(q)= style_node;subtype(q)= cur_style;width(q)= 0;depth(q)= 0;
if(p!=null)
{z= link(q);link(q)= p;
while(link(p)!=null)p= link(p);
link(p)= z;
}
goto done_with_node;
}

/*:731*/
#line 14367 "tex.w"

case ins_node:case mark_node:case adjust_node:
case whatsit_node:case penalty_node:case disc_node:goto done_with_node;
case rule_node:{if(height(q)> max_h)max_h= height(q);
if(depth(q)> max_d)max_d= depth(q);goto done_with_node;
}
case glue_node:{/*732:*/
#line 14409 "tex.w"

if(subtype(q)==mu_glue)
{x= glue_ptr(q);
y= math_glue(x,cur_mu);delete_glue_ref(x);glue_ptr(q)= y;
subtype(q)= normal;
}
else if((cur_size!=text_size)&&(subtype(q)==cond_math_glue))
{p= link(q);
if(p!=null)if((type(p)==glue_node)||(type(p)==kern_node))
{link(q)= link(p);link(p)= null;flush_node_list(p);
}
}

/*:732*/
#line 14373 "tex.w"
;
goto done_with_node;
}
case kern_node:{math_kern(q,cur_mu);goto done_with_node;
}

/*:730*/
#line 14352 "tex.w"

default:confusion(/*1664:*/
#line 25888 "tex.w"
539
/*:1664*/
#line 14353 "tex.w"
);

}
/*754:*/
#line 14848 "tex.w"

switch(math_type(nucleus(q))){
case math_char:case math_text_char:
/*755:*/
#line 14870 "tex.w"

{fetch(nucleus(q));
if(char_exists(cur_i))
{delta= char_italic(cur_f)(cur_i);p= new_character(cur_f,qo(cur_c));
if((math_type(nucleus(q))==math_text_char)&&(space(cur_f)!=0))
delta= 0;
if((math_type(subscr(q))==empty)&&(delta!=0))
{link(p)= new_kern(delta);delta= 0;
}
}
else p= null;
}

/*:755*/
#line 14853 "tex.w"
break;
case empty:p= null;break;
case sub_box:p= info(nucleus(q));break;
case sub_mlist:{cur_mlist= info(nucleus(q));save_style= cur_style;
mlist_penalties= false;mlist_to_hlist();

cur_style= save_style;/*703:*/
#line 13884 "tex.w"

{if(cur_style<script_style)cur_size= text_size;
else cur_size= 16*((cur_style-text_style)/2);
cur_mu= x_over_n(math_quad(cur_size),18);
}

/*:703*/
#line 14859 "tex.w"
;
p= hpack(link(temp_head),natural);
}break;
default:confusion(/*1665:*/
#line 25891 "tex.w"
540
/*:1665*/
#line 14862 "tex.w"
);

}
new_hlist(q)= p;
if((math_type(subscr(q))==empty)&&(math_type(supscr(q))==empty))
goto check_dimensions;
make_scripts(q,delta)

/*:754*/
#line 14356 "tex.w"


/*:728*/
#line 14325 "tex.w"
;
check_dimensions:z= hpack(new_hlist(q),natural);
if(height(z)> max_h)max_h= height(z);
if(depth(z)> max_d)max_d= depth(z);
free_node(z,box_node_size);
done_with_noad:r= q;r_type= type(r);
done_with_node:q= link(q);
}

/*:727*/
#line 14313 "tex.w"
;
/*729:*/
#line 14358 "tex.w"

if(r_type==bin_noad)type(r)= ord_noad

/*:729*/
#line 14314 "tex.w"
;
/*760:*/
#line 14977 "tex.w"

p= temp_head;link(p)= null;q= mlist;r_type= 0;cur_style= style;
/*703:*/
#line 13884 "tex.w"

{if(cur_style<script_style)cur_size= text_size;
else cur_size= 16*((cur_style-text_style)/2);
cur_mu= x_over_n(math_quad(cur_size),18);
}

/*:703*/
#line 14979 "tex.w"
;
while(q!=null)
{/*761:*/
#line 14994 "tex.w"

t= ord_noad;s= noad_size;pen= inf_penalty;
switch(type(q)){
case op_noad:case open_noad:case close_noad:case punct_noad:case inner_noad:t= type(q);break;
case bin_noad:{t= bin_noad;pen= bin_op_penalty;
}break;
case rel_noad:{t= rel_noad;pen= rel_penalty;
}break;
case ord_noad:case vcenter_noad:case over_noad:case under_noad:do_nothing;break;
case radical_noad:s= radical_noad_size;break;
case accent_noad:s= accent_noad_size;break;
case fraction_noad:{t= inner_noad;s= fraction_noad_size;
}break;
case left_noad:case right_noad:t= make_left_right(q,style,max_d,max_h);break;
case style_node:/*763:*/
#line 15040 "tex.w"

{cur_style= subtype(q);s= style_node_size;
/*703:*/
#line 13884 "tex.w"

{if(cur_style<script_style)cur_size= text_size;
else cur_size= 16*((cur_style-text_style)/2);
cur_mu= x_over_n(math_quad(cur_size),18);
}

/*:703*/
#line 15042 "tex.w"
;
goto delete_q;
}

/*:763*/
#line 15008 "tex.w"

case whatsit_node:case penalty_node:case rule_node:case disc_node:case adjust_node:case ins_node:case mark_node:
case glue_node:case kern_node:
{link(p)= q;p= q;q= link(q);link(p)= null;goto done;
}
default:confusion(/*1666:*/
#line 25894 "tex.w"
541
/*:1666*/
#line 15013 "tex.w"
);

}

/*:761*/
#line 14984 "tex.w"
;
/*766:*/
#line 15081 "tex.w"

if(r_type> 0)
{switch(so(str_pool[r_type*8+t+magic_offset])){
case'0':x= 0;break;
case'1':if(cur_style<script_style)x= thin_mu_skip_code;else x= 0;break;
case'2':x= thin_mu_skip_code;break;
case'3':if(cur_style<script_style)x= med_mu_skip_code;else x= 0;break;
case'4':if(cur_style<script_style)x= thick_mu_skip_code;else x= 0;break;
default:confusion(/*1668:*/
#line 25900 "tex.w"
543
/*:1668*/
#line 15089 "tex.w"
);

}
if(x!=0)
{y= math_glue(glue_par(x),cur_mu);
z= new_glue(y);glue_ref_count(y)= null;link(p)= z;p= z;
subtype(z)= x+1;
}
}

/*:766*/
#line 14985 "tex.w"
;
/*767:*/
#line 15103 "tex.w"

if(new_hlist(q)!=null)
{link(p)= new_hlist(q);
do{p= link(p);
}while(!(link(p)==null));
}
if(penalties)if(link(q)!=null)if(pen<inf_penalty)
{r_type= type(link(q));
if(r_type!=penalty_node)if(r_type!=rel_noad)
{z= new_penalty(pen);link(p)= z;p= z;
}
}

/*:767*/
#line 14986 "tex.w"
;
r_type= t;
delete_q:r= q;q= link(q);free_node(r,s);
done:;}

/*:760*/
#line 14316 "tex.w"
;
}

/*:726*//*772:*/
#line 15292 "tex.w"
void push_alignment(void)
{pointer p;
p= get_node(align_stack_node_size);
link(p)= align_ptr;info(p)= cur_align;
llink(p)= preamble;rlink(p)= cur_span;
mem[p+2].i= cur_loop;mem[p+3].i= align_state;
info(p+4)= cur_head;link(p+4)= cur_tail;
align_ptr= p;
cur_head= get_avail();
}

void pop_alignment(void)
{pointer p;
free_avail(cur_head);
p= align_ptr;
cur_tail= link(p+4);cur_head= info(p+4);
align_state= mem[p+3].i;cur_loop= mem[p+2].i;
cur_span= rlink(p);preamble= llink(p);
cur_align= info(p);align_ptr= link(p);
free_node(p,align_stack_node_size);
}

/*:772*//*774:*/
#line 15332 "tex.w"
/*782:*/
#line 15444 "tex.w"

void get_preamble_token(void)
{
restart:get_token();
while((cur_chr==span_code)&&(cur_cmd==tab_mark))
{get_token();
if(cur_cmd> max_command)
{expand();get_token();
}
}
if(cur_cmd==endv)
fatal_error("(interwoven alignment preambles are not allowed)");

if((cur_cmd==assign_glue)&&(cur_chr==glue_base+tab_skip_code))
{scan_optional_equals();scan_glue(glue_val);
if(global_defs> 0)geq_define(glue_base+tab_skip_code,glue_ref,cur_val);
else eq_define(glue_base+tab_skip_code,glue_ref,cur_val);
goto restart;
}
}

/*:782*/
#line 15332 "tex.w"

void align_peek(void);
void normal_paragraph(void);
void init_align(void)
{
pointer save_cs_ptr;
pointer p;
save_cs_ptr= cur_cs;
push_alignment();align_state= -1000000;
/*776:*/
#line 15365 "tex.w"

if((mode==mmode)&&((tail!=head)||(incompleat_noad!=null)))
{print_err("Improper ");print_esc(/*1542:*/
#line 25522 "tex.w"
417
/*:1542*/
#line 15367 "tex.w"
);print_str(" inside $$'s");

help3("Displays can use special alignments (like \\eqalignno)")
("only if nothing but the alignment itself is between $$'s.")
("So I've deleted the formulas that preceded this alignment.");
error();flush_math();
}

/*:776*/
#line 15341 "tex.w"
;
push_nest();
/*775:*/
#line 15356 "tex.w"

if(mode==mmode)
{mode= -vmode;prev_depth= nest[nest_ptr-2].aux_field.sc;
}
else if(mode> 0)negate(mode)

/*:775*/
#line 15343 "tex.w"
;
scan_spec(align_group,false);
/*777:*/
#line 15375 "tex.w"

preamble= null;cur_align= align_head;cur_loop= null;scanner_status= aligning;
warning_index= save_cs_ptr;align_state= -1000000;

loop{/*778:*/
#line 15386 "tex.w"

link(cur_align)= new_param_glue(tab_skip_code);
cur_align= link(cur_align)

/*:778*/
#line 15379 "tex.w"
;
if(cur_cmd==car_ret)goto done;
/*779:*/
#line 15390 "tex.w"

/*783:*/
#line 15467 "tex.w"

p= hold_head;link(p)= null;
loop{get_preamble_token();
if(cur_cmd==mac_param)goto done1;
if((cur_cmd<=car_ret)&&(cur_cmd>=tab_mark)&&(align_state==-1000000))
if((p==hold_head)&&(cur_loop==null)&&(cur_cmd==tab_mark)
)cur_loop= cur_align;
else{print_err("Missing # inserted in alignment preamble");

help3("There should be exactly one # between &'s, when an")
("\\halign or \\valign is being set up. In this case you had")
("none, so I've put one in; maybe that will work.");
back_error();goto done1;
}
else if((cur_cmd!=spacer)||(p!=hold_head))
{link(p)= get_avail();p= link(p);info(p)= cur_tok;
}
}
done1:

/*:783*/
#line 15391 "tex.w"
;
link(cur_align)= new_null_box();cur_align= link(cur_align);
info(cur_align)= end_span;width(cur_align)= null_flag;
u_part(cur_align)= link(hold_head);
/*784:*/
#line 15487 "tex.w"

p= hold_head;link(p)= null;
loop{resume:get_preamble_token();
if((cur_cmd<=car_ret)&&(cur_cmd>=tab_mark)&&(align_state==-1000000))
goto done2;
if(cur_cmd==mac_param)
{print_err("Only one # is allowed per tab");

help3("There should be exactly one # between &'s, when an")
("\\halign or \\valign is being set up. In this case you had")
("more than one, so I'm ignoring all but the first.");
error();goto resume;
}
link(p)= get_avail();p= link(p);info(p)= cur_tok;
}
done2:link(p)= get_avail();p= link(p);
info(p)= end_template_token

/*:784*/
#line 15395 "tex.w"
;
v_part(cur_align)= link(hold_head)

/*:779*/
#line 15382 "tex.w"
;
}
done:scanner_status= normal

/*:777*/
#line 15345 "tex.w"
;
new_save_level(align_group);
if(every_cr!=null)begin_token_list(every_cr,every_cr_text);
align_peek();
}

/*:774*//*786:*/
#line 15537 "tex.w"
/*787:*/
#line 15550 "tex.w"

void init_span(pointer p)
{push_nest();
if(mode==-hmode)space_factor= 1000;
else{prev_depth= ignore_depth;normal_paragraph();
}
cur_span= p;
}

/*:787*/
#line 15537 "tex.w"

void init_row(void)
{push_nest();mode= (-hmode-vmode)-mode;
if(mode==-hmode)space_factor= 0;else prev_depth= 0;
tail_append(new_glue(glue_ptr(preamble)));
subtype(tail)= tab_skip_code+1;
cur_align= link(preamble);cur_tail= cur_head;init_span(cur_align);
}

/*:786*//*788:*/
#line 15566 "tex.w"
void init_col(void)
{extra_info(cur_align)= cur_cmd;
if(cur_cmd==omit)align_state= 0;
else{back_input();begin_token_list(u_part(cur_align),u_template);
}
}

/*:788*//*791:*/
#line 15603 "tex.w"
bool fin_col(void)
{
pointer p;
pointer q,r;
pointer s;
pointer u;
scaled w;
glue_ord o;
halfword n;
if(cur_align==null)confusion(/*1673:*/
#line 25915 "tex.w"
548
/*:1673*/
#line 15612 "tex.w"
);
q= link(cur_align);if(q==null)confusion(/*1673:*/
#line 25915 "tex.w"
548
/*:1673*/
#line 15613 "tex.w"
);

if(align_state<500000)
fatal_error("(interwoven alignment preambles are not allowed)");

p= link(q);
/*792:*/
#line 15634 "tex.w"

if((p==null)&&(extra_info(cur_align)<cr_code))
if(cur_loop!=null)/*793:*/
#line 15646 "tex.w"

{link(q)= new_null_box();p= link(q);
info(p)= end_span;width(p)= null_flag;cur_loop= link(cur_loop);
/*794:*/
#line 15654 "tex.w"

q= hold_head;r= u_part(cur_loop);
while(r!=null)
{link(q)= get_avail();q= link(q);info(q)= info(r);r= link(r);
}
link(q)= null;u_part(p)= link(hold_head);
q= hold_head;r= v_part(cur_loop);
while(r!=null)
{link(q)= get_avail();q= link(q);info(q)= info(r);r= link(r);
}
link(q)= null;v_part(p)= link(hold_head)

/*:794*/
#line 15649 "tex.w"
;
cur_loop= link(cur_loop);
link(p)= new_glue(glue_ptr(cur_loop));
}

/*:793*/
#line 15636 "tex.w"

else{print_err("Extra alignment tab has been changed to ");

print_esc(/*1670:*/
#line 25906 "tex.w"
545
/*:1670*/
#line 15639 "tex.w"
);
help3("You have given more \\span or & marks than there were")
("in the preamble to the \\halign or \\valign now in progress.")
("So I'll assume that you meant to type \\cr instead.");
extra_info(cur_align)= cr_code;error();
}

/*:792*/
#line 15619 "tex.w"
;
if(extra_info(cur_align)!=span_code)
{unsave();new_save_level(align_group);
/*796:*/
#line 15670 "tex.w"

{if(mode==-hmode)
{adjust_tail= cur_tail;u= hpack(link(head),natural);w= width(u);
cur_tail= adjust_tail;adjust_tail= null;
}
else{u= vpackage(link(head),natural,0);w= height(u);
}
n= min_quarterword;
if(cur_span!=cur_align)/*798:*/
#line 15704 "tex.w"

{q= cur_span;
do{incr(n);q= link(link(q));
}while(!(q==cur_align));
if(n> max_quarterword)confusion(/*1674:*/
#line 25918 "tex.w"
549
/*:1674*/
#line 15708 "tex.w"
);


q= cur_span;while(link(info(q))<n)q= info(q);
if(link(info(q))> n)
{s= get_node(span_node_size);info(s)= info(q);link(s)= n;
info(q)= s;width(s)= w;
}
else if(width(info(q))<w)width(info(q))= w;
}

/*:798*/
#line 15678 "tex.w"

else if(w> width(cur_align))width(cur_align)= w;
type(u)= unset_node;span_count(u)= n;
/*659:*/
#line 13082 "tex.w"

if(total_stretch[filll]!=0)o= filll;
else if(total_stretch[fill]!=0)o= fill;
else if(total_stretch[fil]!=0)o= fil;
else o= normal

/*:659*/
#line 15681 "tex.w"
;
glue_order(u)= o;glue_stretch(u)= total_stretch[o];
/*665:*/
#line 13146 "tex.w"

if(total_shrink[filll]!=0)o= filll;
else if(total_shrink[fill]!=0)o= fill;
else if(total_shrink[fil]!=0)o= fil;
else o= normal

/*:665*/
#line 15683 "tex.w"
;
glue_sign(u)= o;glue_shrink(u)= total_shrink[o];
pop_nest();link(tail)= u;tail= u;
}

/*:796*/
#line 15622 "tex.w"
;
/*795:*/
#line 15666 "tex.w"

tail_append(new_glue(glue_ptr(link(cur_align))));
subtype(tail)= tab_skip_code+1

/*:795*/
#line 15623 "tex.w"
;
if(extra_info(cur_align)>=cr_code)
{return true;
}
init_span(p);
}
align_state= 1000000;/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 15629 "tex.w"
;
cur_align= p;
init_col();return false;
}

/*:791*//*799:*/
#line 15724 "tex.w"
void fin_row(void)
{pointer p;
if(mode==-hmode)
{p= hpack(link(head),natural);
pop_nest();append_to_vlist(p);
if(cur_head!=cur_tail)
{link(tail)= link(cur_head);tail= cur_tail;
}
}
else{p= vpack(link(head),natural);pop_nest();
link(tail)= p;tail= p;space_factor= 1000;
}
type(p)= unset_node;glue_stretch(p)= 0;
if(every_cr!=null)begin_token_list(every_cr,every_cr_text);
align_peek();
}

/*:799*//*800:*/
#line 15745 "tex.w"
void do_assignments(void);
void resume_after_display(void);
void build_page(void);
void fin_align(void)
{pointer p,q,r,s,u,v;
scaled t,w;
scaled o;
halfword n;
scaled rule_save;
memory_word aux_save;
if(cur_group!=align_group)confusion(/*1675:*/
#line 25921 "tex.w"
550
/*:1675*/
#line 15755 "tex.w"
);

unsave();
if(cur_group!=align_group)confusion(/*1676:*/
#line 25924 "tex.w"
551
/*:1676*/
#line 15758 "tex.w"
);
unsave();
if(nest[nest_ptr-1].mode_field==mmode)o= display_indent;
else o= 0;
/*801:*/
#line 15795 "tex.w"

q= link(preamble);
do{flush_list(u_part(q));flush_list(v_part(q));
p= link(link(q));
if(width(q)==null_flag)
/*802:*/
#line 15809 "tex.w"

{width(q)= 0;r= link(q);s= glue_ptr(r);
if(s!=zero_glue)
{add_glue_ref(zero_glue);delete_glue_ref(s);
glue_ptr(r)= zero_glue;
}
}

/*:802*/
#line 15800 "tex.w"
;
if(info(q)!=end_span)
/*803:*/
#line 15824 "tex.w"

{t= width(q)+width(glue_ptr(link(q)));
r= info(q);s= end_span;info(s)= p;n= min_quarterword+1;
do{width(r)= width(r)-t;u= info(r);
while(link(r)> n)
{s= info(s);n= link(info(s))+1;
}
if(link(r)<n)
{info(r)= info(s);info(s)= r;decr(link(r));s= r;
}
else{if(width(r)> width(info(s)))width(info(s))= width(r);
free_node(r,span_node_size);
}
r= u;
}while(!(r==end_span));
}

/*:803*/
#line 15803 "tex.w"
;
type(q)= unset_node;span_count(q)= min_quarterword;height(q)= 0;
depth(q)= 0;glue_order(q)= normal;glue_sign(q)= normal;
glue_stretch(q)= 0;glue_shrink(q)= 0;q= p;
}while(!(q==null))

/*:801*/
#line 15763 "tex.w"
;
/*804:*/
#line 15847 "tex.w"

save_ptr= save_ptr-2;pack_begin_line= -mode_line;
if(mode==-vmode)
{rule_save= overfull_rule;
overfull_rule= 0;
p= hpack(preamble,saved(1),saved(0));overfull_rule= rule_save;
}
else{q= link(preamble);
do{height(q)= width(q);width(q)= 0;q= link(link(q));
}while(!(q==null));
p= vpack(preamble,saved(1),saved(0));
q= link(preamble);
do{width(q)= height(q);height(q)= 0;q= link(link(q));
}while(!(q==null));
}
pack_begin_line= 0

/*:804*/
#line 15765 "tex.w"
;
/*805:*/
#line 15864 "tex.w"

q= link(head);s= head;
while(q!=null)
{if(!is_char_node(q))
if(type(q)==unset_node)
/*807:*/
#line 15888 "tex.w"

{if(mode==-vmode)
{type(q)= hlist_node;width(q)= width(p);
}
else{type(q)= vlist_node;height(q)= height(p);
}
glue_order(q)= glue_order(p);glue_sign(q)= glue_sign(p);
glue_set(q)= glue_set(p);shift_amount(q)= o;
r= link(list_ptr(q));s= link(list_ptr(p));
do{/*808:*/
#line 15907 "tex.w"

n= span_count(r);t= width(s);w= t;u= hold_head;
while(n> min_quarterword)
{decr(n);
/*809:*/
#line 15924 "tex.w"

s= link(s);v= glue_ptr(s);link(u)= new_glue(v);u= link(u);
subtype(u)= tab_skip_code+1;t= t+width(v);
if(glue_sign(p)==stretching)
{if(stretch_order(v)==glue_order(p))
t= t+round(float(glue_set(p))*stretch(v));

}
else if(glue_sign(p)==shrinking)
{if(shrink_order(v)==glue_order(p))
t= t-round(float(glue_set(p))*shrink(v));
}
s= link(s);link(u)= new_null_box();u= link(u);t= t+width(s);
if(mode==-vmode)width(u)= width(s);else
{type(u)= vlist_node;height(u)= width(s);
}

/*:809*/
#line 15912 "tex.w"
;
}
if(mode==-vmode)
/*810:*/
#line 15941 "tex.w"

{height(r)= height(q);depth(r)= depth(q);
if(t==width(r))
{glue_sign(r)= normal;glue_order(r)= normal;
set_glue_ratio_zero(glue_set(r));
}
else if(t> width(r))
{glue_sign(r)= stretching;
if(glue_stretch(r)==0)set_glue_ratio_zero(glue_set(r));
else glue_set(r)= unfloat((t-width(r))/(double)glue_stretch(r));

}
else{glue_order(r)= glue_sign(r);glue_sign(r)= shrinking;
if(glue_shrink(r)==0)set_glue_ratio_zero(glue_set(r));
else if((glue_order(r)==normal)&&(width(r)-t> glue_shrink(r)))
set_glue_ratio_one(glue_set(r));
else glue_set(r)= unfloat((width(r)-t)/(double)glue_shrink(r));
}
width(r)= w;type(r)= hlist_node;
}

/*:810*/
#line 15916 "tex.w"

else/*811:*/
#line 15962 "tex.w"

{width(r)= width(q);
if(t==height(r))
{glue_sign(r)= normal;glue_order(r)= normal;
set_glue_ratio_zero(glue_set(r));
}
else if(t> height(r))
{glue_sign(r)= stretching;
if(glue_stretch(r)==0)set_glue_ratio_zero(glue_set(r));
else glue_set(r)= unfloat((t-height(r))/(double)glue_stretch(r));

}
else{glue_order(r)= glue_sign(r);glue_sign(r)= shrinking;
if(glue_shrink(r)==0)set_glue_ratio_zero(glue_set(r));
else if((glue_order(r)==normal)&&(height(r)-t> glue_shrink(r)))
set_glue_ratio_one(glue_set(r));
else glue_set(r)= unfloat((height(r)-t)/(double)glue_shrink(r));
}
height(r)= w;type(r)= vlist_node;
}

/*:811*/
#line 15918 "tex.w"
;
shift_amount(r)= 0;
if(u!=hold_head)
{link(u)= link(r);link(r)= link(hold_head);r= u;
}

/*:808*/
#line 15897 "tex.w"
;
r= link(link(r));s= link(link(s));
}while(!(r==null));
}

/*:807*/
#line 15869 "tex.w"

else if(type(q)==rule_node)
/*806:*/
#line 15875 "tex.w"

{if(is_running(width(q)))width(q)= width(p);
if(is_running(height(q)))height(q)= height(p);
if(is_running(depth(q)))depth(q)= depth(p);
if(o!=0)
{r= link(q);link(q)= null;q= hpack(q,natural);
shift_amount(q)= o;link(q)= r;link(s)= q;
}
}

/*:806*/
#line 15871 "tex.w"
;
s= q;q= link(q);
}

/*:805*/
#line 15766 "tex.w"
;
flush_node_list(p);pop_alignment();
/*812:*/
#line 15993 "tex.w"

aux_save= aux;p= link(head);q= tail;pop_nest();
if(mode==mmode)/*1206:*/
#line 22615 "tex.w"

{do_assignments();
if(cur_cmd!=math_shift)/*1207:*/
#line 22629 "tex.w"

{print_err("Missing $$ inserted");

help2("Displays can use special alignments (like \\eqalignno)")
("only if nothing but the alignment itself is between $$'s.");
back_error();
}

/*:1207*/
#line 22617 "tex.w"

else/*1197:*/
#line 22467 "tex.w"

{get_x_token();
if(cur_cmd!=math_shift)
{print_err("Display math should end with $$");

help2("The `$' that I just saw supposedly matches a previous `$$'.")
("So I shall assume that you typed `$$' both times.");
back_error();
}
}

/*:1197*/
#line 22618 "tex.w"
;
pop_nest();
tail_append(new_penalty(pre_display_penalty));
tail_append(new_param_glue(above_display_skip_code));
link(tail)= p;
if(p!=null)tail= q;
tail_append(new_penalty(post_display_penalty));
tail_append(new_param_glue(below_display_skip_code));
prev_depth= aux_save.sc;resume_after_display();
}

/*:1206*/
#line 15995 "tex.w"

else{aux= aux_save;link(tail)= p;
if(p!=null)tail= q;
if(mode==vmode)build_page();
}

/*:812*/
#line 15768 "tex.w"
;
}
/*785:*/
#line 15515 "tex.w"

void align_peek(void)
{
restart:align_state= 1000000;/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 15518 "tex.w"
;
if(cur_cmd==no_align)
{scan_left_brace();new_save_level(no_align_group);
if(mode==-vmode)normal_paragraph();
}
else if(cur_cmd==right_brace)fin_align();
else if((cur_cmd==car_ret)&&(cur_chr==cr_cr_code))
goto restart;
else{init_row();
init_col();
}
}

/*:785*/
#line 15770 "tex.w"


/*:800*//*815:*/
#line 16057 "tex.w"
/*826:*/
#line 16291 "tex.w"

pointer finite_shrink(pointer p)
{pointer q;
if(no_shrink_error_yet)
{no_shrink_error_yet= false;
print_err("Infinite glue shrinkage found in a paragraph");

help5("The paragraph just ended includes some glue that has")
("infinite shrinkability, e.g., `\\hskip 0pt minus 1fil'.")
("Such glue doesn't belong there---it allows a paragraph")
("of any length to fit on one line. But it's safe to proceed,")
("since the offensive shrinkability has been made finite.");
error();
}
q= new_spec(p);shrink_order(q)= normal;
delete_glue_ref(p);return q;
}

/*:826*//*829:*/
#line 16363 "tex.w"

void try_break(int pi,small_number break_type)
{
pointer r;
pointer prev_r;
halfword old_l;
bool no_break_yet;
/*830:*/
#line 16391 "tex.w"

pointer prev_prev_r;
pointer s;
pointer q;
pointer v;
int t;
internal_font_number f;
halfword l;
bool node_r_stays_active;
scaled line_width;
uint8_t fit_class;
halfword b;
int d;
bool artificial_demerits;
#ifdef STAT
pointer save_link;
#endif
scaled shortfall;

/*:830*/
#line 16370 "tex.w"

/*831:*/
#line 16410 "tex.w"

if(abs(pi)>=inf_penalty)
if(pi> 0)goto end;
else pi= eject_penalty

/*:831*/
#line 16371 "tex.w"
;
no_break_yet= true;prev_r= active;old_l= 0;
do_all_six(copy_to_cur_active);
loop{resume:r= link(prev_r);
/*832:*/
#line 16420 "tex.w"


if(type(r)==delta_node)
{do_all_six(update_width);
prev_prev_r= prev_r;prev_r= r;goto resume;
}

/*:832*/
#line 16376 "tex.w"
;
/*835:*/
#line 16465 "tex.w"

{l= line_number(r);
if(l> old_l)
{
if((minimum_demerits<awful_bad)&&
((old_l!=easy_line)||(r==last_active)))
/*836:*/
#line 16483 "tex.w"

{if(no_break_yet)/*837:*/
#line 16519 "tex.w"

{no_break_yet= false;do_all_six(set_break_width_to_background);
s= cur_p;
if(break_type> unhyphenated)if(cur_p!=null)
/*840:*/
#line 16562 "tex.w"

{t= replace_count(cur_p);v= cur_p;s= post_break(cur_p);
while(t> 0)
{decr(t);v= link(v);
/*841:*/
#line 16580 "tex.w"

if(is_char_node(v))
{f= font(v);
break_width[1]= break_width[1]-char_width(f)(char_info(f)(character(v)));
}
else switch(type(v)){
case ligature_node:{f= font(lig_char(v));
break_width[1]= break_width[1]-
char_width(f)(char_info(f)(character(lig_char(v))));
}break;
case hlist_node:case vlist_node:case rule_node:case kern_node:
break_width[1]= break_width[1]-width(v);break;
default:confusion(/*1677:*/
#line 25927 "tex.w"
552
/*:1677*/
#line 16592 "tex.w"
);

}

/*:841*/
#line 16566 "tex.w"
;
}
while(s!=null)
{/*842:*/
#line 16596 "tex.w"

if(is_char_node(s))
{f= font(s);
break_width[1]= break_width[1]+char_width(f)(char_info(f)(character(s)));
}
else switch(type(s)){
case ligature_node:{f= font(lig_char(s));
break_width[1]= break_width[1]+
char_width(f)(char_info(f)(character(lig_char(s))));
}break;
case hlist_node:case vlist_node:case rule_node:case kern_node:
break_width[1]= break_width[1]+width(s);break;
default:confusion(/*1678:*/
#line 25930 "tex.w"
553
/*:1678*/
#line 16608 "tex.w"
);

}

/*:842*/
#line 16569 "tex.w"
;
s= link(s);
}
break_width[1]= break_width[1]+disc_width;
if(post_break(cur_p)==null)s= link(v);

}

/*:840*/
#line 16523 "tex.w"
;
while(s!=null)
{if(is_char_node(s))goto done;
switch(type(s)){
case glue_node:/*838:*/
#line 16538 "tex.w"

{v= glue_ptr(s);break_width[1]= break_width[1]-width(v);
break_width[2+stretch_order(v)]= break_width[2+stretch_order(v)]-stretch(v);
break_width[6]= break_width[6]-shrink(v);
}

/*:838*/
#line 16527 "tex.w"
break;
case penalty_node:do_nothing;break;
case math_node:break_width[1]= break_width[1]-width(s);break;
case kern_node:if(subtype(s)!=explicit)goto done;
else break_width[1]= break_width[1]-width(s);break;
default:goto done;
}
s= link(s);
}
done:;}

/*:837*/
#line 16484 "tex.w"
;
/*843:*/
#line 16621 "tex.w"

if(type(prev_r)==delta_node)
{do_all_six(convert_to_break_width);
}
else if(prev_r==active)
{do_all_six(store_break_width);
}
else{q= get_node(delta_node_size);link(q)= r;type(q)= delta_node;
subtype(q)= 0;
do_all_six(new_delta_to_break_width);
link(prev_r)= q;prev_prev_r= prev_r;prev_r= q;
}

/*:843*/
#line 16485 "tex.w"
;
if(abs(adj_demerits)>=awful_bad-minimum_demerits)
minimum_demerits= awful_bad-1;
else minimum_demerits= minimum_demerits+abs(adj_demerits);
for(fit_class= very_loose_fit;fit_class<=tight_fit;fit_class++)
{if(minimal_demerits[fit_class]<=minimum_demerits)
/*845:*/
#line 16651 "tex.w"

{q= get_node(passive_node_size);
link(q)= passive;passive= q;cur_break(q)= cur_p;
#ifdef STAT
incr(pass_number);serial(q)= pass_number;
#endif

prev_break(q)= best_place[fit_class];
q= get_node(active_node_size);break_node(q)= passive;
line_number(q)= best_pl_line[fit_class]+1;
fitness(q)= fit_class;type(q)= break_type;
total_demerits(q)= minimal_demerits[fit_class];
link(q)= r;link(prev_r)= q;prev_r= q;
#ifdef STAT
if(tracing_paragraphs> 0)
/*846:*/
#line 16671 "tex.w"

{print_nl("@@");print_int(serial(passive));

print_str(": line ");print_int(line_number(q)-1);
print_char('.');print_int(fit_class);
if(break_type==hyphenated)print_char('-');
print_str(" t=");print_int(total_demerits(q));
print_str(" -> @@");
if(prev_break(passive)==null)print_char('0');
else print_int(serial(prev_break(passive)));
}

/*:846*/
#line 16666 "tex.w"
;
#endif

}

/*:845*/
#line 16491 "tex.w"
;
minimal_demerits[fit_class]= awful_bad;
}
minimum_demerits= awful_bad;
/*844:*/
#line 16640 "tex.w"

if(r!=last_active)
{q= get_node(delta_node_size);link(q)= r;type(q)= delta_node;
subtype(q)= 0;
do_all_six(new_delta_from_break_width);
link(prev_r)= q;prev_prev_r= prev_r;prev_r= q;
}

/*:844*/
#line 16495 "tex.w"
;
}

/*:836*/
#line 16471 "tex.w"
;
if(r==last_active)goto end;
/*850:*/
#line 16747 "tex.w"

if(l> easy_line)
{line_width= second_width;old_l= max_halfword-1;
}
else{old_l= l;
if(l> last_special_line)line_width= second_width;
else if(par_shape_ptr==null)line_width= first_width;
else line_width= mem[par_shape_ptr+2*l].sc;
}

/*:850*/
#line 16473 "tex.w"
;
}
}

/*:835*/
#line 16379 "tex.w"
;
/*851:*/
#line 16767 "tex.w"

{artificial_demerits= false;

shortfall= line_width-cur_active_width[1];
if(shortfall> 0)
/*852:*/
#line 16797 "tex.w"

if((cur_active_width[3]!=0)||(cur_active_width[4]!=0)||
(cur_active_width[5]!=0))
{b= 0;fit_class= decent_fit;
}
else{if(shortfall> 7230584)if(cur_active_width[2]<1663497)
{b= inf_bad;fit_class= very_loose_fit;goto done1;
}
b= badness(shortfall,cur_active_width[2]);
if(b> 12)
if(b> 99)fit_class= very_loose_fit;
else fit_class= loose_fit;
else fit_class= decent_fit;
done1:;
}

/*:852*/
#line 16773 "tex.w"

else/*853:*/
#line 16816 "tex.w"

{if(-shortfall> cur_active_width[6])b= inf_bad+1;
else b= badness(-shortfall,cur_active_width[6]);
if(b> 12)fit_class= tight_fit;else fit_class= decent_fit;
}

/*:853*/
#line 16775 "tex.w"
;
if((b> inf_bad)||(pi==eject_penalty))
/*854:*/
#line 16831 "tex.w"

{if(final_pass&&(minimum_demerits==awful_bad)&&
(link(r)==last_active)&&
(prev_r==active))
artificial_demerits= true;
else if(b> threshold)goto deactivate;
node_r_stays_active= false;
}

/*:854*/
#line 16778 "tex.w"

else{prev_r= r;
if(b> threshold)goto resume;
node_r_stays_active= true;
}
/*855:*/
#line 16847 "tex.w"

if(artificial_demerits)d= 0;
else/*859:*/
#line 16908 "tex.w"

{d= line_penalty+b;
if(abs(d)>=10000)d= 100000000;else d= d*d;
if(pi!=0)
if(pi> 0)d= d+pi*pi;
else if(pi> eject_penalty)d= d-pi*pi;
if((break_type==hyphenated)&&(type(r)==hyphenated))
if(cur_p!=null)d= d+double_hyphen_demerits;
else d= d+final_hyphen_demerits;
if(abs(fit_class-fitness(r))> 1)d= d+adj_demerits;
}

/*:859*/
#line 16849 "tex.w"
;
#ifdef STAT
if(tracing_paragraphs> 0)
/*856:*/
#line 16863 "tex.w"

{if(printed_node!=cur_p)
/*857:*/
#line 16885 "tex.w"

{print_nl("");
if(cur_p==null)short_display(link(printed_node));
else{save_link= link(cur_p);
link(cur_p)= null;print_nl("");short_display(link(printed_node));
link(cur_p)= save_link;
}
printed_node= cur_p;
}

/*:857*/
#line 16865 "tex.w"
;
print_nl("@");

if(cur_p==null)print_esc(/*1569:*/
#line 25603 "tex.w"
444
/*:1569*/
#line 16868 "tex.w"
);
else if(type(cur_p)!=glue_node)
{if(type(cur_p)==penalty_node)print_esc(/*1553:*/
#line 25555 "tex.w"
428
/*:1553*/
#line 16870 "tex.w"
);
else if(type(cur_p)==disc_node)print_esc(/*1400:*/
#line 25096 "tex.w"
275
/*:1400*/
#line 16871 "tex.w"
);
else if(type(cur_p)==kern_node)print_esc(/*1396:*/
#line 25084 "tex.w"
271
/*:1396*/
#line 16872 "tex.w"
);
else print_esc(/*1398:*/
#line 25090 "tex.w"
273
/*:1398*/
#line 16873 "tex.w"
);
}
print_str(" via @@");
if(break_node(r)==null)print_char('0');
else print_int(serial(break_node(r)));
print_str(" b=");
if(b> inf_bad)print_char('*');else print_int(b);

print_str(" p=");print_int(pi);print_str(" d=");
if(artificial_demerits)print_char('*');else print_int(d);
}

/*:856*/
#line 16852 "tex.w"
;
#endif

d= d+total_demerits(r);

if(d<=minimal_demerits[fit_class])
{minimal_demerits[fit_class]= d;
best_place[fit_class]= break_node(r);best_pl_line[fit_class]= l;
if(d<minimum_demerits)minimum_demerits= d;
}

/*:855*/
#line 16783 "tex.w"
;
if(node_r_stays_active)goto resume;
deactivate:/*860:*/
#line 16930 "tex.w"

link(prev_r)= link(r);free_node(r,active_node_size);
if(prev_r==active)/*861:*/
#line 16955 "tex.w"

{r= link(active);
if(type(r)==delta_node)
{do_all_six(update_active);
do_all_six(copy_to_cur_active);
link(active)= link(r);free_node(r,delta_node_size);
}
}

/*:861*/
#line 16933 "tex.w"

else if(type(prev_r)==delta_node)
{r= link(prev_r);
if(r==last_active)
{do_all_six(downdate_width);
link(prev_prev_r)= last_active;
free_node(prev_r,delta_node_size);prev_r= prev_prev_r;
}
else if(type(r)==delta_node)
{do_all_six(update_width);
do_all_six(combine_two_deltas);
link(prev_r)= link(r);free_node(r,delta_node_size);
}
}

/*:860*/
#line 16785 "tex.w"
;
}

/*:851*/
#line 16382 "tex.w"
;
}
end:;
#ifdef STAT
/*858:*/
#line 16900 "tex.w"

if(cur_p==printed_node)if(cur_p!=null)if(type(cur_p)==disc_node)
{t= replace_count(cur_p);
while(t> 0)
{decr(t);printed_node= link(printed_node);
}
}

/*:858*/
#line 16386 "tex.w"
;
#endif

}

/*:829*//*877:*/
#line 17281 "tex.w"

void post_line_break(int final_widow_penalty)
{
pointer q,r,s;
bool disc_break;
bool post_disc_break;
scaled cur_width;
scaled cur_indent;
quarterword t;
int pen;
halfword cur_line;
/*878:*/
#line 17312 "tex.w"

q= break_node(best_bet);cur_p= null;
do{r= q;q= prev_break(q);next_break(r)= cur_p;cur_p= r;
}while(!(q==null))

/*:878*/
#line 17292 "tex.w"
;
cur_line= prev_graf+1;
do{/*880:*/
#line 17349 "tex.w"

/*881:*/
#line 17361 "tex.w"

q= cur_break(cur_p);disc_break= false;post_disc_break= false;
if(q!=null)
if(type(q)==glue_node)
{delete_glue_ref(glue_ptr(q));
glue_ptr(q)= right_skip;
subtype(q)= right_skip_code+1;add_glue_ref(right_skip);
goto done;
}
else{if(type(q)==disc_node)
/*882:*/
#line 17380 "tex.w"

{t= replace_count(q);
/*883:*/
#line 17388 "tex.w"

if(t==0)r= link(q);
else{r= q;
while(t> 1)
{r= link(r);decr(t);
}
s= link(r);
r= link(s);link(s)= null;
flush_node_list(link(q));replace_count(q)= 0;
}

/*:883*/
#line 17382 "tex.w"
;
if(post_break(q)!=null)/*884:*/
#line 17402 "tex.w"

{s= post_break(q);
while(link(s)!=null)s= link(s);
link(s)= r;r= post_break(q);post_break(q)= null;post_disc_break= true;
}

/*:884*/
#line 17383 "tex.w"
;
if(pre_break(q)!=null)/*885:*/
#line 17411 "tex.w"

{s= pre_break(q);link(q)= s;
while(link(s)!=null)s= link(s);
pre_break(q)= null;q= s;
}

/*:885*/
#line 17384 "tex.w"
;
link(q)= r;disc_break= true;
}

/*:882*/
#line 17371 "tex.w"

else if((type(q)==math_node)||(type(q)==kern_node))width(q)= 0;
}
else{q= temp_head;
while(link(q)!=null)q= link(q);
}
/*886:*/
#line 17417 "tex.w"

r= new_param_glue(right_skip_code);link(r)= link(q);link(q)= r;q= r

/*:886*/
#line 17377 "tex.w"
;
done:

/*:881*/
#line 17351 "tex.w"
;
/*887:*/
#line 17424 "tex.w"

r= link(q);link(q)= null;q= link(temp_head);link(temp_head)= r;
if(left_skip!=zero_glue)
{r= new_param_glue(left_skip_code);
link(r)= q;q= r;
}

/*:887*/
#line 17352 "tex.w"
;
/*889:*/
#line 17443 "tex.w"

if(cur_line> last_special_line)
{cur_width= second_width;cur_indent= second_indent;
}
else if(par_shape_ptr==null)
{cur_width= first_width;cur_indent= first_indent;
}
else{cur_width= mem[par_shape_ptr+2*cur_line].sc;
cur_indent= mem[par_shape_ptr+2*cur_line-1].sc;
}
adjust_tail= adjust_head;just_box= hpack(q,cur_width,exactly);
shift_amount(just_box)= cur_indent

/*:889*/
#line 17353 "tex.w"
;
/*888:*/
#line 17431 "tex.w"

append_to_vlist(just_box);
if(adjust_head!=adjust_tail)
{link(tail)= link(adjust_head);tail= adjust_tail;
}
adjust_tail= null

/*:888*/
#line 17355 "tex.w"
;
/*890:*/
#line 17463 "tex.w"

if(cur_line+1!=best_line)
{pen= inter_line_penalty;
if(cur_line==prev_graf+1)pen= pen+club_penalty;
if(cur_line+2==best_line)pen= pen+final_widow_penalty;
if(disc_break)pen= pen+broken_penalty;
if(pen!=0)
{r= new_penalty(pen);
link(tail)= r;tail= r;
}
}

/*:890*/
#line 17356 "tex.w"


/*:880*/
#line 17295 "tex.w"
;
incr(cur_line);cur_p= next_break(cur_p);
if(cur_p!=null)if(!post_disc_break)
/*879:*/
#line 17324 "tex.w"

{r= temp_head;
loop{q= link(r);
if(q==cur_break(cur_p))goto done1;


if(is_char_node(q))goto done1;
if(non_discardable(q))goto done1;
if(type(q)==kern_node)if(subtype(q)!=explicit)goto done1;
r= q;
}
done1:if(r!=temp_head)
{link(r)= null;flush_node_list(link(temp_head));
link(temp_head)= q;
}
}

/*:879*/
#line 17298 "tex.w"
;
}while(!(cur_p==null));
if((cur_line!=best_line)||(link(temp_head)!=null))
confusion(/*1682:*/
#line 25942 "tex.w"
557
/*:1682*/
#line 17301 "tex.w"
);

prev_graf= best_line-1;
}

/*:877*//*895:*/
#line 17576 "tex.w"

/*906:*/
#line 17804 "tex.w"


small_number reconstitute(small_number j,small_number n,halfword bchar,halfword hchar)
{
pointer p;
pointer t;
four_quarters q;
halfword cur_rh;
halfword test_char;
scaled w;
font_index k;
hyphen_passed= 0;t= hold_head;w= 0;link(hold_head)= null;

/*908:*/
#line 17856 "tex.w"

cur_l= qi(hu[j]);cur_q= t;
if(j==0)
{ligature_present= init_lig;p= init_list;
if(ligature_present)lft_hit= init_lft;
while(p> null)
{append_charnode_to_t(character(p));p= link(p);
}
}
else if(cur_l<non_char)append_charnode_to_t(cur_l);
lig_stack= null;set_cur_r

/*:908*/
#line 17817 "tex.w"
;
resume:/*909:*/
#line 17872 "tex.w"

if(cur_l==non_char)
{k= bchar_label[hf];
if(k==non_address)goto done;else q= font_info[k].qqqq;
}
else{q= char_info(hf)(cur_l);
if(char_tag(q)!=lig_tag)goto done;
k= lig_kern_start(hf)(q);q= font_info[k].qqqq;
if(skip_byte(q)> stop_flag)
{k= lig_kern_restart(hf)(q);q= font_info[k].qqqq;
}
}
if(cur_rh<non_char)test_char= cur_rh;else test_char= cur_r;
loop{if(next_char(q)==test_char)if(skip_byte(q)<=stop_flag)
if(cur_rh<non_char)
{hyphen_passed= j;hchar= non_char;cur_rh= non_char;
goto resume;
}
else{if(hchar<non_char)if(odd(hyf[j]))
{hyphen_passed= j;hchar= non_char;
}
if(op_byte(q)<kern_flag)
/*911:*/
#line 17934 "tex.w"

{if(cur_l==non_char)lft_hit= true;
if(j==n)if(lig_stack==null)rt_hit= true;
check_interrupt;
switch(op_byte(q)){
qi(case 1):qi(case 5):{cur_l= rem_byte(q);
ligature_present= true;
}break;
qi(case 2):qi(case 6):{cur_r= rem_byte(q);
if(lig_stack> null)character(lig_stack)= cur_r;
else{lig_stack= new_lig_item(cur_r);
if(j==n)bchar= non_char;
else{p= get_avail();lig_ptr(lig_stack)= p;
character(p)= qi(hu[j+1]);font(p)= hf;
}
}
}break;
qi(case 3):{cur_r= rem_byte(q);
p= lig_stack;lig_stack= new_lig_item(cur_r);link(lig_stack)= p;
}break;
qi(case 7):qi(case 11):{wrap_lig(false);
cur_q= t;cur_l= rem_byte(q);ligature_present= true;
}break;
default:{cur_l= rem_byte(q);ligature_present= true;
if(lig_stack> null)pop_lig_stack
else if(j==n)goto done;
else{append_charnode_to_t(cur_r);incr(j);set_cur_r;
}
}
}
if(op_byte(q)> qi(4))if(op_byte(q)!=qi(7))goto done;
goto resume;
}

/*:911*/
#line 17895 "tex.w"
;
w= char_kern(hf)(q);goto done;
}
if(skip_byte(q)>=stop_flag)
if(cur_rh==non_char)goto done;
else{cur_rh= non_char;goto resume;
}
k= k+qo(skip_byte(q))+1;q= font_info[k].qqqq;
}
done:

/*:909*/
#line 17819 "tex.w"
;
/*910:*/
#line 17924 "tex.w"

wrap_lig(rt_hit);
if(w!=0)
{link(t)= new_kern(w);t= link(t);w= 0;
}
if(lig_stack> null)
{cur_q= t;cur_l= character(lig_stack);ligature_present= true;
pop_lig_stack;goto resume;
}

/*:910*/
#line 17821 "tex.w"
;
return j;
}

/*:906*/
#line 17577 "tex.w"

void hyphenate(void)
{
/*901:*/
#line 17683 "tex.w"

int i,j,l;
pointer q,r,s;
halfword bchar;

/*:901*//*912:*/
#line 17977 "tex.w"

pointer major_tail,minor_tail;

ASCII_code c;
uint8_t c_loc;
int r_count;
pointer hyf_node;

/*:912*//*922:*/
#line 18152 "tex.w"

trie_pointer z;
int v;

/*:922*//*929:*/
#line 18224 "tex.w"

hyph_pointer h;
str_number k;
pool_pointer u;

/*:929*/
#line 17580 "tex.w"

/*923:*/
#line 18161 "tex.w"

for(j= 0;j<=hn;j++)hyf[j]= 0;
/*930:*/
#line 18233 "tex.w"

h= hc[1];incr(hn);hc[hn]= cur_lang;
for(j= 2;j<=hn;j++)h= (h+h+hc[j])%hyph_size;
loop{/*931:*/
#line 18242 "tex.w"

k= hyph_word[h];if(k==0)goto not_found;
if(length(k)<hn)goto not_found;
if(length(k)==hn)
{j= 1;u= str_start[k];
do{if(so(str_pool[u])<hc[j])goto not_found;
if(so(str_pool[u])> hc[j])goto done;
incr(j);incr(u);
}while(!(j> hn));
/*932:*/
#line 18256 "tex.w"

s= hyph_list[h];
while(s!=null)
{hyf[info(s)]= 1;s= link(s);
}

/*:932*/
#line 18251 "tex.w"
;
decr(hn);goto found;
}
done:

/*:931*/
#line 18237 "tex.w"
;
if(h> 0)decr(h);else h= hyph_size;
}
not_found:decr(hn)

/*:930*/
#line 18164 "tex.w"
;
if(trie_char(cur_lang+1)!=qi(cur_lang))return;
hc[0]= 0;hc[hn+1]= 0;hc[hn+2]= 256;
for(j= 0;j<=hn-r_hyf+1;j++)
{z= trie_link(cur_lang+1)+hc[j];l= j;
while(hc[l]==qo(trie_char(z)))
{if(trie_op(z)!=min_quarterword)
/*924:*/
#line 18178 "tex.w"

{v= trie_op(z);
do{v= v+op_start[cur_lang];i= l-hyf_distance[v];
if(hyf_num[v]> hyf[i])hyf[i]= hyf_num[v];
v= hyf_next[v];
}while(!(v==min_quarterword));
}

/*:924*/
#line 18171 "tex.w"
;
incr(l);z= trie_link(z)+hc[l];
}
}
found:for(j= 0;j<=l_hyf-1;j++)hyf[j]= 0;
for(j= 0;j<=r_hyf-1;j++)hyf[hn-j]= 0

/*:923*/
#line 17581 "tex.w"
;
/*902:*/
#line 17695 "tex.w"

for(j= l_hyf;j<=hn-r_hyf;j++)if(odd(hyf[j]))goto found1;
return;
found1:

/*:902*/
#line 17582 "tex.w"
;
/*903:*/
#line 17711 "tex.w"

q= link(hb);link(hb)= null;r= link(ha);link(ha)= null;bchar= hyf_bchar;
if(is_char_node(ha))
if(font(ha)!=hf)goto found2;
else{init_list= ha;init_lig= false;hu[0]= qo(character(ha));
}
else if(type(ha)==ligature_node)
if(font(lig_char(ha))!=hf)goto found2;
else{init_list= lig_ptr(ha);init_lig= true;init_lft= (subtype(ha)> 1);
hu[0]= qo(character(lig_char(ha)));
if(init_list==null)if(init_lft)
{hu[0]= 256;init_lig= false;
}
free_node(ha,small_node_size);
}
else{
if(!is_char_node(r))if(type(r)==ligature_node)
if(subtype(r)> 1)goto found2;
j= 1;s= ha;init_list= null;goto common_ending;
}
s= cur_p;
while(link(s)!=ha)s= link(s);
j= 0;goto common_ending;
found2:s= ha;j= 0;hu[0]= 256;init_lig= false;init_list= null;
common_ending:flush_node_list(r);
/*913:*/
#line 17987 "tex.w"

do{l= j;j= reconstitute(j,hn,bchar,qi(hyf_char))+1;
if(hyphen_passed==0)
{link(s)= link(hold_head);
while(link(s)> null)s= link(s);
if(odd(hyf[j-1]))
{l= j;hyphen_passed= j-1;link(hold_head)= null;
}
}
if(hyphen_passed> 0)
/*914:*/
#line 18012 "tex.w"

do{r= get_node(small_node_size);
link(r)= link(hold_head);type(r)= disc_node;
major_tail= r;r_count= 0;
while(link(major_tail)> null)advance_major_tail;
i= hyphen_passed;hyf[i]= 0;
/*915:*/
#line 18028 "tex.w"

minor_tail= null;pre_break(r)= null;hyf_node= new_character(hf,hyf_char);
if(hyf_node!=null)
{incr(i);c= hu[i];hu[i]= hyf_char;free_avail(hyf_node);
}
while(l<=i)
{l= reconstitute(l,i,font_bchar[hf],non_char)+1;
if(link(hold_head)> null)
{if(minor_tail==null)pre_break(r)= link(hold_head);
else link(minor_tail)= link(hold_head);
minor_tail= link(hold_head);
while(link(minor_tail)> null)minor_tail= link(minor_tail);
}
}
if(hyf_node!=null)
{hu[i]= c;
l= i;decr(i);
}

/*:915*/
#line 18018 "tex.w"
;
/*916:*/
#line 18049 "tex.w"

minor_tail= null;post_break(r)= null;c_loc= 0;
if(bchar_label[hf]!=non_address)
{decr(l);c= hu[l];c_loc= l;hu[l]= 256;
}
while(l<j)
{do{l= reconstitute(l,hn,bchar,non_char)+1;
if(c_loc> 0)
{hu[c_loc]= c;c_loc= 0;
}
if(link(hold_head)> null)
{if(minor_tail==null)post_break(r)= link(hold_head);
else link(minor_tail)= link(hold_head);
minor_tail= link(hold_head);
while(link(minor_tail)> null)minor_tail= link(minor_tail);
}
}while(!(l>=j));
while(l> j)
/*917:*/
#line 18070 "tex.w"

{j= reconstitute(j,hn,bchar,non_char)+1;
link(major_tail)= link(hold_head);
while(link(major_tail)> null)advance_major_tail;
}

/*:917*/
#line 18067 "tex.w"
;
}

/*:916*/
#line 18020 "tex.w"
;
/*918:*/
#line 18080 "tex.w"

if(r_count> 127)
{link(s)= link(r);link(r)= null;flush_node_list(r);
}
else{link(s)= r;replace_count(r)= r_count;
}
s= major_tail

/*:918*/
#line 18021 "tex.w"
;
hyphen_passed= j-1;link(hold_head)= null;
}while(!(!odd(hyf[j-1])))

/*:914*/
#line 17998 "tex.w"
;
}while(!(j> hn));
link(s)= q

/*:913*/
#line 17736 "tex.w"
;
flush_list(init_list)

/*:903*/
#line 17583 "tex.w"
;
}

/*:895*//*942:*/
#line 18389 "tex.w"

#ifdef INIT
/*944:*/
#line 18436 "tex.w"

quarterword new_trie_op(small_number d,small_number n,quarterword v)
{
int16_t h;
quarterword u;
uint16_t l;
h= abs(n+313*d+361*v+1009*cur_lang)%(trie_op_size+trie_op_size)
-trie_op_size;
loop{l= trie_op_hash[h];
if(l==0)
{if(trie_op_ptr==trie_op_size)
overflow("pattern memory ops",trie_op_size);
u= trie_used[cur_lang];
if(u==max_quarterword)
overflow("pattern memory ops per language",
max_quarterword-min_quarterword);
incr(trie_op_ptr);incr(u);trie_used[cur_lang]= u;
hyf_distance[trie_op_ptr]= d;
hyf_num[trie_op_ptr]= n;hyf_next[trie_op_ptr]= v;
trie_op_lang[trie_op_ptr]= cur_lang;trie_op_hash[h]= trie_op_ptr;
trie_op_val[trie_op_ptr]= u;return u;
}
if((hyf_distance[l]==d)&&(hyf_num[l]==n)&&(hyf_next[l]==v)
&&(trie_op_lang[l]==cur_lang))
{return trie_op_val[l];
}
if(h> -trie_op_size)decr(h);else h= trie_op_size;
}
}

/*:944*//*948:*/
#line 18538 "tex.w"

trie_pointer trie_node(trie_pointer p)

{
trie_pointer h;
trie_pointer q;
h= abs(trie_c[p]+1009*trie_o[p]+
2718*trie_l[p]+3142*trie_r[p])%trie_size;
loop{q= trie_hash[h];
if(q==0)
{trie_hash[h]= p;return p;
}
if((trie_c[q]==trie_c[p])&&(trie_o[q]==trie_o[p])&&
(trie_l[q]==trie_l[p])&&(trie_r[q]==trie_r[p]))
{return q;
}
if(h> 0)decr(h);else h= trie_size;
}
}

/*:948*//*949:*/
#line 18564 "tex.w"

trie_pointer compress_trie(trie_pointer p)
{if(p==0)return 0;
else{trie_l[p]= compress_trie(trie_l[p]);
trie_r[p]= compress_trie(trie_r[p]);
return trie_node(p);
}
}

/*:949*//*953:*/
#line 18635 "tex.w"

void first_fit(trie_pointer p)
{
trie_pointer h;
trie_pointer z;
trie_pointer q;
ASCII_code c;
trie_pointer l,r;
uint16_t ll;
c= so(trie_c[p]);
z= trie_min[c];
loop{h= z-c;
/*954:*/
#line 18660 "tex.w"

if(trie_max<h+256)
{if(trie_size<=h+256)overflow("pattern memory",trie_size);

do{incr(trie_max);trie_taken[trie_max]= false;
trie_link(trie_max)= trie_max+1;trie_back(trie_max)= trie_max-1;
}while(!(trie_max==h+256));
}

/*:954*/
#line 18647 "tex.w"
;
if(trie_taken[h])goto not_found;
/*955:*/
#line 18669 "tex.w"

q= trie_r[p];
while(q> 0)
{if(trie_link(h+so(trie_c[q]))==0)goto not_found;
q= trie_r[q];
}
goto found

/*:955*/
#line 18650 "tex.w"
;
not_found:z= trie_link(z);
}
found:/*956:*/
#line 18677 "tex.w"

trie_taken[h]= true;trie_ref[p]= h;q= p;
do{z= h+so(trie_c[q]);l= trie_back(z);r= trie_link(z);
trie_back(r)= l;trie_link(l)= r;trie_link(z)= 0;
if(l<256)
{if(z<256)ll= z;else ll= 256;
do{trie_min[l]= r;incr(l);
}while(!(l==ll));
}
q= trie_r[q];
}while(!(q==0))

/*:956*/
#line 18653 "tex.w"
;
}

/*:953*//*957:*/
#line 18692 "tex.w"

void trie_pack(trie_pointer p)
{trie_pointer q;
do{q= trie_l[p];
if((q> 0)&&(trie_ref[q]==0))
{first_fit(q);trie_pack(q);
}
p= trie_r[p];
}while(!(p==0));
}

/*:957*//*959:*/
#line 18728 "tex.w"

void trie_fix(trie_pointer p)
{trie_pointer q;
ASCII_code c;
trie_pointer z;
z= trie_ref[p];
do{q= trie_l[p];c= so(trie_c[p]);
trie_link(z+c)= trie_ref[q];trie_char(z+c)= qi(c);trie_op(z+c)= trie_o[p];
if(q> 0)trie_fix(q);
p= trie_r[p];
}while(!(p==0));
}

/*:959*//*960:*/
#line 18745 "tex.w"

void new_patterns(void)
{
uint8_t k,l;

bool digit_sensed;
quarterword v;
trie_pointer p,q;
bool first_child;
ASCII_code c;
if(trie_not_ready)
{set_cur_lang;scan_left_brace();
/*961:*/
#line 18769 "tex.w"

k= 0;hyf[0]= 0;digit_sensed= false;
loop{get_x_token();
switch(cur_cmd){
case letter:case other_char:/*962:*/
#line 18787 "tex.w"

if(digit_sensed||(cur_chr<'0')||(cur_chr> '9'))
{if(cur_chr=='.')cur_chr= 0;
else{cur_chr= lc_code(cur_chr);
if(cur_chr==0)
{print_err("Nonletter");

help1("(See Appendix H.)");error();
}
}
if(k<63)
{incr(k);hc[k]= cur_chr;hyf[k]= 0;digit_sensed= false;
}
}
else if(k<63)
{hyf[k]= cur_chr-'0';digit_sensed= true;
}

/*:962*/
#line 18773 "tex.w"
break;
case spacer:case right_brace:{if(k> 0)
/*963:*/
#line 18809 "tex.w"

{/*965:*/
#line 18837 "tex.w"

if(hc[1]==0)hyf[0]= 0;
if(hc[k]==0)hyf[k]= 0;
l= k;v= min_quarterword;
loop{if(hyf[l]!=0)v= new_trie_op(k-l,hyf[l],v);
if(l> 0)decr(l);else goto done1;
}
done1:

/*:965*/
#line 18810 "tex.w"
;
q= 0;hc[0]= cur_lang;
while(l<=k)
{c= hc[l];incr(l);p= trie_l[q];first_child= true;
while((p> 0)&&(c> so(trie_c[p])))
{q= p;p= trie_r[q];first_child= false;
}
if((p==0)||(c<so(trie_c[p])))
/*964:*/
#line 18829 "tex.w"

{if(trie_ptr==trie_size)overflow("pattern memory",trie_size);

incr(trie_ptr);trie_r[trie_ptr]= p;p= trie_ptr;trie_l[p]= 0;
if(first_child)trie_l[q]= p;else trie_r[q]= p;
trie_c[p]= si(c);trie_o[p]= min_quarterword;
}

/*:964*/
#line 18818 "tex.w"
;
q= p;
}
if(trie_o[q]!=min_quarterword)
{print_err("Duplicate pattern");

help1("(See Appendix H.)");error();
}
trie_o[q]= v;
}

/*:963*/
#line 18775 "tex.w"
;
if(cur_cmd==right_brace)goto done;
k= 0;hyf[0]= 0;digit_sensed= false;
}break;
default:{print_err("Bad ");print_esc(/*1684:*/
#line 25948 "tex.w"
559
/*:1684*/
#line 18779 "tex.w"
);

help1("(See Appendix H.)");error();
}
}
}
done:

/*:961*/
#line 18757 "tex.w"
;
}
else{print_err("Too late for ");print_esc(/*1684:*/
#line 25948 "tex.w"
559
/*:1684*/
#line 18759 "tex.w"
);
help1("All patterns must be given before typesetting begins.");
error();link(garbage)= scan_toks(false,false);flush_list(def_ref);
}
}

/*:960*//*966:*/
#line 18853 "tex.w"

void init_trie(void)
{trie_pointer p;
int j,k,t;
trie_pointer r,s;
two_halves h;
/*952:*/
#line 18620 "tex.w"

/*945:*/
#line 18470 "tex.w"

op_start[0]= -min_quarterword;
for(j= 1;j<=255;j++)op_start[j]= op_start[j-1]+qo(trie_used[j-1]);
for(j= 1;j<=trie_op_ptr;j++)
trie_op_hash[j]= op_start[trie_op_lang[j]]+trie_op_val[j];
for(j= 1;j<=trie_op_ptr;j++)while(trie_op_hash[j]> j)
{k= trie_op_hash[j];
t= hyf_distance[k];hyf_distance[k]= hyf_distance[j];hyf_distance[j]= t;
t= hyf_num[k];hyf_num[k]= hyf_num[j];hyf_num[j]= t;
t= hyf_next[k];hyf_next[k]= hyf_next[j];hyf_next[j]= t;
trie_op_hash[j]= trie_op_hash[k];trie_op_hash[k]= k;
}

/*:945*/
#line 18621 "tex.w"
;
for(p= 0;p<=trie_size;p++)trie_hash[p]= 0;
trie_root= compress_trie(trie_root);
for(p= 0;p<=trie_ptr;p++)trie_ref[p]= 0;
for(p= 0;p<=255;p++)trie_min[p]= p+1;
trie_link(0)= 1;trie_max= 0

/*:952*/
#line 18859 "tex.w"
;
if(trie_root!=0)
{first_fit(trie_root);trie_pack(trie_root);
}
/*958:*/
#line 18708 "tex.w"

h.rh= 0;h.b0= min_quarterword;h.b1= min_quarterword;

if(trie_root==0)
{for(r= 0;r<=256;r++)trie[r]= h;
trie_max= 256;
}
else{trie_fix(trie_root);
r= 0;
do{s= trie_link(r);trie[r]= h;r= s;
}while(!(r> trie_max));
}
trie_char(0)= qi('?');

/*:958*/
#line 18863 "tex.w"
;
trie_not_ready= false;
}

/*:966*/
#line 18391 "tex.w"

#endif

/*:942*/
#line 16057 "tex.w"

void line_break(int final_widow_penalty)
{
/*862:*/
#line 16984 "tex.w"

bool auto_breaking;
pointer prev_p;
pointer q,r,s,prev_s;
internal_font_number f;

/*:862*//*893:*/
#line 17557 "tex.w"

small_number j;
uint8_t c;

/*:893*/
#line 16060 "tex.w"

pack_begin_line= mode_line;
/*816:*/
#line 16081 "tex.w"

link(temp_head)= link(head);
if(is_char_node(tail))tail_append(new_penalty(inf_penalty))
else if(type(tail)!=glue_node)tail_append(new_penalty(inf_penalty))
else{type(tail)= penalty_node;delete_glue_ref(glue_ptr(tail));
flush_node_list(leader_ptr(tail));penalty(tail)= inf_penalty;
}
link(tail)= new_param_glue(par_fill_skip_code);
init_cur_lang= prev_graf%0200000;
init_l_hyf= prev_graf/020000000;
init_r_hyf= (prev_graf/0200000)%0100;
pop_nest();

/*:816*//*827:*/
#line 16309 "tex.w"

no_shrink_error_yet= true;
check_shrinkage(left_skip);check_shrinkage(right_skip);
q= left_skip;r= right_skip;background[1]= width(q)+width(r);
background[2]= 0;background[3]= 0;background[4]= 0;background[5]= 0;
background[2+stretch_order(q)]= stretch(q);
background[2+stretch_order(r)]= background[2+stretch_order(r)]+stretch(r);
background[6]= shrink(q)+shrink(r);

/*:827*//*834:*/
#line 16451 "tex.w"

minimum_demerits= awful_bad;
minimal_demerits[tight_fit]= awful_bad;
minimal_demerits[decent_fit]= awful_bad;
minimal_demerits[loose_fit]= awful_bad;
minimal_demerits[very_loose_fit]= awful_bad;

/*:834*//*848:*/
#line 16712 "tex.w"

if(par_shape_ptr==null)
if(hang_indent==0)
{last_special_line= 0;second_width= hsize;
second_indent= 0;
}
else/*849:*/
#line 16726 "tex.w"

{last_special_line= abs(hang_after);
if(hang_after<0)
{first_width= hsize-abs(hang_indent);
if(hang_indent>=0)first_indent= hang_indent;
else first_indent= 0;
second_width= hsize;second_indent= 0;
}
else{first_width= hsize;first_indent= 0;
second_width= hsize-abs(hang_indent);
if(hang_indent>=0)second_indent= hang_indent;
else second_indent= 0;
}
}

/*:849*/
#line 16718 "tex.w"

else{last_special_line= info(par_shape_ptr)-1;
second_width= mem[par_shape_ptr+2*(last_special_line+1)].sc;
second_indent= mem[par_shape_ptr+2*last_special_line+1].sc;
}
if(looseness==0)easy_line= last_special_line;
else easy_line= max_halfword

/*:848*/
#line 16062 "tex.w"
;
/*863:*/
#line 16994 "tex.w"

threshold= pretolerance;
if(threshold>=0)
{
#ifdef STAT
if(tracing_paragraphs> 0)
{begin_diagnostic();print_nl("@firstpass");}
#endif

second_pass= false;final_pass= false;
}
else{threshold= tolerance;second_pass= true;
final_pass= (emergency_stretch<=0);

#ifdef STAT
if(tracing_paragraphs> 0)begin_diagnostic();
#endif

}
loop{if(threshold> inf_bad)threshold= inf_bad;
if(second_pass)/*891:*/
#line 17530 "tex.w"

{
#ifdef INIT
if(trie_not_ready)init_trie();
#endif

cur_lang= init_cur_lang;l_hyf= init_l_hyf;r_hyf= init_r_hyf;
}

/*:891*/
#line 17014 "tex.w"
;
/*864:*/
#line 17053 "tex.w"

q= get_node(active_node_size);
type(q)= unhyphenated;fitness(q)= decent_fit;
link(q)= last_active;break_node(q)= null;
line_number(q)= prev_graf+1;total_demerits(q)= 0;link(active)= q;
do_all_six(store_background);
passive= null;printed_node= temp_head;pass_number= 0;
font_in_short_display= null_font

/*:864*/
#line 17015 "tex.w"
;
cur_p= link(temp_head);auto_breaking= true;
prev_p= cur_p;
while((cur_p!=null)&&(link(active)!=last_active))
/*866:*/
#line 17089 "tex.w"

{if(is_char_node(cur_p))
/*867:*/
#line 17123 "tex.w"

{prev_p= cur_p;
do{f= font(cur_p);
act_width= act_width+char_width(f)(char_info(f)(character(cur_p)));
cur_p= link(cur_p);
}while(!(!is_char_node(cur_p)));
}

/*:867*/
#line 17091 "tex.w"
;
switch(type(cur_p)){
case hlist_node:case vlist_node:case rule_node:act_width= act_width+width(cur_p);break;
case whatsit_node:/*1362:*/
#line 24802 "tex.w"

adv_past(cur_p)

/*:1362*/
#line 17094 "tex.w"
break;
case glue_node:{/*868:*/
#line 17134 "tex.w"

if(auto_breaking)
{if(is_char_node(prev_p))try_break(0,unhyphenated);
else if(precedes_break(prev_p))try_break(0,unhyphenated);
else if((type(prev_p)==kern_node)&&(subtype(prev_p)!=explicit))
try_break(0,unhyphenated);
}
check_shrinkage(glue_ptr(cur_p));q= glue_ptr(cur_p);
act_width= act_width+width(q);
active_width[2+stretch_order(q)]= 
active_width[2+stretch_order(q)]+stretch(q);
active_width[6]= active_width[6]+shrink(q)

/*:868*/
#line 17096 "tex.w"
;
if(second_pass&&auto_breaking)
/*894:*/
#line 17564 "tex.w"

{prev_s= cur_p;s= link(prev_s);
if(s!=null)
{/*896:*/
#line 17589 "tex.w"

loop{if(is_char_node(s))
{c= qo(character(s));hf= font(s);
}
else if(type(s)==ligature_node)
if(lig_ptr(s)==null)goto resume;
else{q= lig_ptr(s);c= qo(character(q));hf= font(q);
}
else if((type(s)==kern_node)&&(subtype(s)==normal))goto resume;
else if(type(s)==whatsit_node)
{/*1363:*/
#line 24805 "tex.w"

adv_past(s)

/*:1363*/
#line 17599 "tex.w"
;
goto resume;
}
else goto done1;
if(lc_code(c)!=0)
if((lc_code(c)==c)||(uc_hyph> 0))goto done2;
else goto done1;
resume:prev_s= s;s= link(prev_s);
}
done2:hyf_char= hyphen_char[hf];
if(hyf_char<0)goto done1;
if(hyf_char> 255)goto done1;
ha= prev_s

/*:896*/
#line 17567 "tex.w"
;
if(l_hyf+r_hyf> 63)goto done1;
/*897:*/
#line 17615 "tex.w"

hn= 0;
loop{if(is_char_node(s))
{if(font(s)!=hf)goto done3;
hyf_bchar= character(s);c= qo(hyf_bchar);
if(lc_code(c)==0)goto done3;
if(hn==63)goto done3;
hb= s;incr(hn);hu[hn]= c;hc[hn]= lc_code(c);hyf_bchar= non_char;
}
else if(type(s)==ligature_node)
/*898:*/
#line 17641 "tex.w"

{if(font(lig_char(s))!=hf)goto done3;
j= hn;q= lig_ptr(s);if(q> null)hyf_bchar= character(q);
while(q> null)
{c= qo(character(q));
if(lc_code(c)==0)goto done3;
if(j==63)goto done3;
incr(j);hu[j]= c;hc[j]= lc_code(c);
q= link(q);
}
hb= s;hn= j;
if(odd(subtype(s)))hyf_bchar= font_bchar[hf];else hyf_bchar= non_char;
}

/*:898*/
#line 17626 "tex.w"

else if((type(s)==kern_node)&&(subtype(s)==normal))
{hb= s;
hyf_bchar= font_bchar[hf];
}
else goto done3;
s= link(s);
}
done3:

/*:897*/
#line 17569 "tex.w"
;
/*899:*/
#line 17655 "tex.w"

if(hn<l_hyf+r_hyf)goto done1;
loop{if(!(is_char_node(s)))
switch(type(s)){
case ligature_node:do_nothing;break;
case kern_node:if(subtype(s)!=normal)goto done4;break;
case whatsit_node:case glue_node:case penalty_node:case ins_node:case adjust_node:case mark_node:
goto done4;
default:goto done1;
}
s= link(s);
}
done4:

/*:899*/
#line 17571 "tex.w"
;
hyphenate();
}
done1:;}

/*:894*/
#line 17098 "tex.w"
;
}break;
case kern_node:if(subtype(cur_p)==explicit)kern_break
else act_width= act_width+width(cur_p);break;
case ligature_node:{f= font(lig_char(cur_p));
act_width= act_width+char_width(f)(char_info(f)(character(lig_char(cur_p))));
}break;
case disc_node:/*869:*/
#line 17150 "tex.w"

{s= pre_break(cur_p);disc_width= 0;
if(s==null)try_break(ex_hyphen_penalty,hyphenated);
else{do{/*870:*/
#line 17168 "tex.w"

if(is_char_node(s))
{f= font(s);
disc_width= disc_width+char_width(f)(char_info(f)(character(s)));
}
else switch(type(s)){
case ligature_node:{f= font(lig_char(s));
disc_width= disc_width+
char_width(f)(char_info(f)(character(lig_char(s))));
}break;
case hlist_node:case vlist_node:case rule_node:case kern_node:
disc_width= disc_width+width(s);break;
default:confusion(/*1680:*/
#line 25936 "tex.w"
555
/*:1680*/
#line 17180 "tex.w"
);

}

/*:870*/
#line 17153 "tex.w"
;
s= link(s);
}while(!(s==null));
act_width= act_width+disc_width;
try_break(hyphen_penalty,hyphenated);
act_width= act_width-disc_width;
}
r= replace_count(cur_p);s= link(cur_p);
while(r> 0)
{/*871:*/
#line 17184 "tex.w"

if(is_char_node(s))
{f= font(s);
act_width= act_width+char_width(f)(char_info(f)(character(s)));
}
else switch(type(s)){
case ligature_node:{f= font(lig_char(s));
act_width= act_width+
char_width(f)(char_info(f)(character(lig_char(s))));
}break;
case hlist_node:case vlist_node:case rule_node:case kern_node:
act_width= act_width+width(s);break;
default:confusion(/*1681:*/
#line 25939 "tex.w"
556
/*:1681*/
#line 17196 "tex.w"
);

}

/*:871*/
#line 17162 "tex.w"
;
decr(r);s= link(s);
}
prev_p= cur_p;cur_p= s;goto done5;
}

/*:869*/
#line 17105 "tex.w"

case math_node:{auto_breaking= (subtype(cur_p)==after);kern_break;
}break;
case penalty_node:try_break(penalty(cur_p),unhyphenated);break;
case mark_node:case ins_node:case adjust_node:do_nothing;break;
default:confusion(/*1679:*/
#line 25933 "tex.w"
554
/*:1679*/
#line 17110 "tex.w"
);

}
prev_p= cur_p;cur_p= link(cur_p);
done5:;}

/*:866*/
#line 17021 "tex.w"
;
if(cur_p==null)
/*873:*/
#line 17219 "tex.w"

{try_break(eject_penalty,hyphenated);
if(link(active)!=last_active)
{/*874:*/
#line 17229 "tex.w"

r= link(active);fewest_demerits= awful_bad;
do{if(type(r)!=delta_node)if(total_demerits(r)<fewest_demerits)
{fewest_demerits= total_demerits(r);best_bet= r;
}
r= link(r);
}while(!(r==last_active));
best_line= line_number(best_bet)

/*:874*/
#line 17222 "tex.w"
;
if(looseness==0)goto done;
/*875:*/
#line 17243 "tex.w"

{r= link(active);actual_looseness= 0;
do{if(type(r)!=delta_node)
{line_diff= line_number(r)-best_line;
if(((line_diff<actual_looseness)&&(looseness<=line_diff))||
((line_diff> actual_looseness)&&(looseness>=line_diff)))
{best_bet= r;actual_looseness= line_diff;
fewest_demerits= total_demerits(r);
}
else if((line_diff==actual_looseness)&&
(total_demerits(r)<fewest_demerits))
{best_bet= r;fewest_demerits= total_demerits(r);
}
}
r= link(r);
}while(!(r==last_active));
best_line= line_number(best_bet);
}

/*:875*/
#line 17224 "tex.w"
;
if((actual_looseness==looseness)||final_pass)goto done;
}
}

/*:873*/
#line 17024 "tex.w"
;
/*865:*/
#line 17062 "tex.w"

q= link(active);
while(q!=last_active)
{cur_p= link(q);
if(type(q)==delta_node)free_node(q,delta_node_size);
else free_node(q,active_node_size);
q= cur_p;
}
q= passive;
while(q!=null)
{cur_p= link(q);
free_node(q,passive_node_size);
q= cur_p;
}

/*:865*/
#line 17025 "tex.w"
;
if(!second_pass)
{
#ifdef STAT
if(tracing_paragraphs> 0)print_nl("@secondpass");
#endif
threshold= tolerance;second_pass= true;final_pass= (emergency_stretch<=0);
}
else{
#ifdef STAT
if(tracing_paragraphs> 0)
print_nl("@emergencypass");
#endif
background[2]= background[2]+emergency_stretch;final_pass= true;
}
}
done:
#ifdef STAT
if(tracing_paragraphs> 0)
{end_diagnostic(true);normalize_selector();
}
#endif

/*:863*/
#line 16063 "tex.w"
;
/*876:*/
#line 17267 "tex.w"

post_line_break(final_widow_penalty)

/*:876*/
#line 16065 "tex.w"
;
/*865:*/
#line 17062 "tex.w"

q= link(active);
while(q!=last_active)
{cur_p= link(q);
if(type(q)==delta_node)free_node(q,delta_node_size);
else free_node(q,active_node_size);
q= cur_p;
}
q= passive;
while(q!=null)
{cur_p= link(q);
free_node(q,passive_node_size);
q= cur_p;
}

/*:865*/
#line 16066 "tex.w"
;
pack_begin_line= 0;
}

/*:815*//*934:*/
#line 18280 "tex.w"
void new_hyph_exceptions(void)
{
uint8_t n;
int j;
hyph_pointer h;
str_number k;
pointer p;
pointer q;
str_number s,t;
pool_pointer u,v;
scan_left_brace();
set_cur_lang;
/*935:*/
#line 18296 "tex.w"

n= 0;p= null;
loop{get_x_token();
reswitch:switch(cur_cmd){
case letter:case other_char:case char_given:/*937:*/
#line 18321 "tex.w"

if(cur_chr=='-')/*938:*/
#line 18335 "tex.w"

{if(n<63)
{q= get_avail();link(q)= p;info(q)= n;p= q;
}
}

/*:938*/
#line 18322 "tex.w"

else{if(lc_code(cur_chr)==0)
{print_err("Not a letter");

help2("Letters in \\hyphenation words must have \\lccode>0.")
("Proceed; I'll ignore the character I just read.");
error();
}
else if(n<63)
{incr(n);hc[n]= lc_code(cur_chr);
}
}

/*:937*/
#line 18300 "tex.w"
break;
case char_num:{scan_char_num();cur_chr= cur_val;cur_cmd= char_given;
goto reswitch;
}
case spacer:case right_brace:{if(n> 1)/*939:*/
#line 18341 "tex.w"

{incr(n);hc[n]= cur_lang;str_room(n);h= 0;
for(j= 1;j<=n;j++)
{h= (h+h+hc[j])%hyph_size;
append_char(hc[j]);
}
s= make_string();
/*940:*/
#line 18351 "tex.w"

if(hyph_count==hyph_size)overflow("exception dictionary",hyph_size);

incr(hyph_count);
while(hyph_word[h]!=0)
{/*941:*/
#line 18362 "tex.w"

k= hyph_word[h];
if(length(k)<length(s))goto found;
if(length(k)> length(s))goto not_found;
u= str_start[k];v= str_start[s];
do{if(str_pool[u]<str_pool[v])goto found;
if(str_pool[u]> str_pool[v])goto not_found;
incr(u);incr(v);
}while(!(u==str_start[k+1]));
found:q= hyph_list[h];hyph_list[h]= p;p= q;
t= hyph_word[h];hyph_word[h]= s;s= t;
not_found:

/*:941*/
#line 18357 "tex.w"
;
if(h> 0)decr(h);else h= hyph_size;
}
hyph_word[h]= s;hyph_list[h]= p

/*:940*/
#line 18348 "tex.w"
;
}

/*:939*/
#line 18304 "tex.w"
;
if(cur_cmd==right_brace)return;
n= 0;p= null;
}break;
default:/*936:*/
#line 18312 "tex.w"

{print_err("Improper ");print_esc(/*1683:*/
#line 25945 "tex.w"
558
/*:1683*/
#line 18313 "tex.w"
);

print_str(" will be flushed");
help2("Hyphenation exceptions must contain only letters")
("and hyphens. But continue; I'll forgive and forget.");
error();
}

/*:936*/
#line 18308 "tex.w"

}
}

/*:935*/
#line 18293 "tex.w"
;
}

/*:934*//*968:*/
#line 18886 "tex.w"
pointer prune_page_top(pointer p)
{pointer prev_p;
pointer q;
prev_p= temp_head;link(temp_head)= p;
while(p!=null)
switch(type(p)){
case hlist_node:case vlist_node:case rule_node:/*969:*/
#line 18905 "tex.w"

{q= new_skip_param(split_top_skip_code);link(prev_p)= q;link(q)= p;

if(width(temp_ptr)> height(p))width(temp_ptr)= width(temp_ptr)-height(p);
else width(temp_ptr)= 0;
p= null;
}

/*:969*/
#line 18893 "tex.w"
break;
case whatsit_node:case mark_node:case ins_node:{prev_p= p;p= link(prev_p);
}break;
case glue_node:case kern_node:case penalty_node:{q= p;p= link(q);link(q)= null;
link(prev_p)= p;flush_node_list(q);
}break;
default:confusion(/*1685:*/
#line 25951 "tex.w"
560
/*:1685*/
#line 18899 "tex.w"
);

}
return link(temp_head);
}

/*:968*//*970:*/
#line 18929 "tex.w"
pointer vert_break(pointer p,scaled h,scaled d)

{
pointer prev_p;

pointer q,r;
int pi;
int b;
int least_cost;
pointer best_place;
scaled prev_dp;
small_number t;
prev_p= p;
least_cost= awful_bad;do_all_six(set_height_zero);prev_dp= 0;
loop{/*972:*/
#line 18963 "tex.w"

if(p==null)pi= eject_penalty;
else/*973:*/
#line 18978 "tex.w"

switch(type(p)){
case hlist_node:case vlist_node:case rule_node:{
cur_height= cur_height+prev_dp+height(p);prev_dp= depth(p);
goto not_found;
}
case whatsit_node:/*1365:*/
#line 24811 "tex.w"

goto not_found

/*:1365*/
#line 18984 "tex.w"
;
case glue_node:if(precedes_break(prev_p))pi= 0;
else goto update_heights;break;
case kern_node:{if(link(p)==null)t= penalty_node;
else t= type(link(p));
if(t==glue_node)pi= 0;else goto update_heights;
}break;
case penalty_node:pi= penalty(p);break;
case mark_node:case ins_node:goto not_found;
default:confusion(/*1686:*/
#line 25954 "tex.w"
561
/*:1686*/
#line 18993 "tex.w"
);

}

/*:973*/
#line 18967 "tex.w"
;
/*974:*/
#line 18999 "tex.w"

if(pi<inf_penalty)
{/*975:*/
#line 19013 "tex.w"

if(cur_height<h)
if((active_height[3]!=0)||(active_height[4]!=0)||
(active_height[5]!=0))b= 0;
else b= badness(h-cur_height,active_height[2]);
else if(cur_height-h> active_height[6])b= awful_bad;
else b= badness(cur_height-h,active_height[6])

/*:975*/
#line 19001 "tex.w"
;
if(b<awful_bad)
if(pi<=eject_penalty)b= pi;
else if(b<inf_bad)b= b+pi;
else b= deplorable;
if(b<=least_cost)
{best_place= p;least_cost= b;
best_height_plus_depth= cur_height+prev_dp;
}
if((b==awful_bad)||(pi<=eject_penalty))goto done;
}

/*:974*/
#line 18969 "tex.w"
;
if((type(p)<glue_node)||(type(p)> kern_node))goto not_found;
update_heights:/*976:*/
#line 19025 "tex.w"

if(type(p)==kern_node)q= p;
else{q= glue_ptr(p);
active_height[2+stretch_order(q)]= 
active_height[2+stretch_order(q)]+stretch(q);
active_height[6]= active_height[6]+shrink(q);
if((shrink_order(q)!=normal)&&(shrink(q)!=0))
{
print_err("Infinite glue shrinkage found in box being split");

help4("The box you are \\vsplitting contains some infinitely")
("shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.")
("Such glue doesn't belong there; but you can safely proceed,")
("since the offensive shrinkability has been made finite.");
error();r= new_spec(q);shrink_order(r)= normal;delete_glue_ref(q);
glue_ptr(p)= r;q= r;
}
}
cur_height= cur_height+prev_dp+width(q);prev_dp= 0

/*:976*/
#line 18972 "tex.w"
;
not_found:if(prev_dp> d)
{cur_height= cur_height+prev_dp-d;
prev_dp= d;
}

/*:972*/
#line 18945 "tex.w"
;
prev_p= p;p= link(prev_p);
}
done:return best_place;
}

/*:970*//*977:*/
#line 19060 "tex.w"
pointer vsplit(eight_bits n,scaled h)

{
pointer v;
pointer p;
pointer q;
v= box(n);
if(split_first_mark!=null)
{delete_token_ref(split_first_mark);split_first_mark= null;
delete_token_ref(split_bot_mark);split_bot_mark= null;
}
/*978:*/
#line 19081 "tex.w"

if(v==null)
{return null;
}
if(type(v)!=vlist_node)
{print_err("");print_esc(/*1687:*/
#line 25957 "tex.w"
562
/*:1687*/
#line 19086 "tex.w"
);print_str(" needs a ");
print_esc(/*1688:*/
#line 25960 "tex.w"
563
/*:1688*/
#line 19087 "tex.w"
);

help2("The box you are trying to split is an \\hbox.")
("I can't split such a box, so I'll leave it alone.");
error();return null;
}

/*:978*/
#line 19071 "tex.w"
;
q= vert_break(list_ptr(v),h,split_max_depth);
/*979:*/
#line 19097 "tex.w"

p= list_ptr(v);
if(p==q)list_ptr(v)= null;
else loop{if(type(p)==mark_node)
if(split_first_mark==null)
{split_first_mark= mark_ptr(p);
split_bot_mark= split_first_mark;
token_ref_count(split_first_mark)= 
token_ref_count(split_first_mark)+2;
}
else{delete_token_ref(split_bot_mark);
split_bot_mark= mark_ptr(p);
add_token_ref(split_bot_mark);
}
if(link(p)==q)
{link(p)= null;goto done;
}
p= link(p);
}
done:

/*:979*/
#line 19074 "tex.w"
;
q= prune_page_top(q);p= list_ptr(v);free_node(v,box_node_size);
if(q==null)box(n)= null;
else box(n)= vpack(q,natural);
return vpackage(p,h,exactly,split_max_depth);
}

/*:977*//*985:*/
#line 19285 "tex.w"
void print_totals(void)
{print_scaled(page_total);
print_plus(2)("");
print_plus(3)("fil");
print_plus(4)("fill");
print_plus(5)("filll");
if(page_shrink!=0)
{print_str(" minus ");print_scaled(page_shrink);
}
}

/*:985*//*987:*/
#line 19331 "tex.w"
void freeze_page_specs(small_number s)
{page_contents= s;
page_goal= vsize;page_max_depth= max_depth;
page_depth= 0;do_all_six(set_page_so_far_zero);
least_page_cost= awful_bad;
#ifdef STAT
if(tracing_pages> 0)
{begin_diagnostic();
print_nl("%% goal height=");print_scaled(page_goal);

print_str(", max depth=");print_scaled(page_max_depth);
end_diagnostic(false);
}
#endif

}

/*:987*//*992:*/
#line 19398 "tex.w"
void box_error(eight_bits n)
{error();begin_diagnostic();
print_nl("The following box has been deleted:");

show_box(box(n));end_diagnostic(true);
flush_node_list(box(n));box(n)= null;
}

/*:992*//*993:*/
#line 19409 "tex.w"
void ensure_vbox(eight_bits n)
{pointer p;
p= box(n);
if(p!=null)if(type(p)==hlist_node)
{print_err("Insertions can only be added to a vbox");

help3("Tut tut: You're trying to \\insert into a")
("\\box register that now contains an \\hbox.")
("Proceed, and I'll discard its present contents.");
box_error(n);
}
}

/*:993*//*994:*/
#line 19428 "tex.w"
/*1012:*/
#line 19723 "tex.w"

void fire_up(pointer c)
{
pointer p,q,r,s;
pointer prev_p;
uint8_t n;
bool wait;
int save_vbadness;
scaled save_vfuzz;
pointer save_split_top_skip;
/*1013:*/
#line 19752 "tex.w"

if(type(best_page_break)==penalty_node)
{geq_word_define(int_base+output_penalty_code,penalty(best_page_break));
penalty(best_page_break)= inf_penalty;
}
else geq_word_define(int_base+output_penalty_code,inf_penalty)

/*:1013*/
#line 19733 "tex.w"
;
if(bot_mark!=null)
{if(top_mark!=null)delete_token_ref(top_mark);
top_mark= bot_mark;add_token_ref(top_mark);
delete_token_ref(first_mark);first_mark= null;
}
/*1014:*/
#line 19764 "tex.w"

if(c==best_page_break)best_page_break= null;
/*1015:*/
#line 19786 "tex.w"

if(box(255)!=null)
{print_err("");print_esc(/*1437:*/
#line 25207 "tex.w"
312
/*:1437*/
#line 19788 "tex.w"
);print_str("255 is not void");

help2("You shouldn't use \\box255 except in \\output routines.")
("Proceed, and I'll discard its present contents.");
box_error(255);
}

/*:1015*/
#line 19766 "tex.w"
;
insert_penalties= 0;
save_split_top_skip= split_top_skip;
if(holding_inserts<=0)
/*1018:*/
#line 19840 "tex.w"

{r= link(page_ins_head);
while(r!=page_ins_head)
{if(best_ins_ptr(r)!=null)
{n= qo(subtype(r));ensure_vbox(n);
if(box(n)==null)box(n)= new_null_box();
p= box(n)+list_offset;
while(link(p)!=null)p= link(p);
last_ins_ptr(r)= p;
}
r= link(r);
}
}

/*:1018*/
#line 19770 "tex.w"
;
q= hold_head;link(q)= null;prev_p= page_head;p= link(prev_p);
while(p!=best_page_break)
{if(type(p)==ins_node)
{if(holding_inserts<=0)
/*1020:*/
#line 19866 "tex.w"

{r= link(page_ins_head);
while(subtype(r)!=subtype(p))r= link(r);
if(best_ins_ptr(r)==null)wait= true;
else{wait= false;s= last_ins_ptr(r);link(s)= ins_ptr(p);
if(best_ins_ptr(r)==p)
/*1021:*/
#line 19882 "tex.w"

{if(type(r)==split_up)
if((broken_ins(r)==p)&&(broken_ptr(r)!=null))
{while(link(s)!=broken_ptr(r))s= link(s);
link(s)= null;
split_top_skip= split_top_ptr(p);
ins_ptr(p)= prune_page_top(broken_ptr(r));
if(ins_ptr(p)!=null)
{temp_ptr= vpack(ins_ptr(p),natural);
height(p)= height(temp_ptr)+depth(temp_ptr);
free_node(temp_ptr,box_node_size);wait= true;
}
}
best_ins_ptr(r)= null;
n= qo(subtype(r));
temp_ptr= list_ptr(box(n));
free_node(box(n),box_node_size);
box(n)= vpack(temp_ptr,natural);
}

/*:1021*/
#line 19873 "tex.w"

else{while(link(s)!=null)s= link(s);
last_ins_ptr(r)= s;
}
}
/*1022:*/
#line 19902 "tex.w"

link(prev_p)= link(p);link(p)= null;
if(wait)
{link(q)= p;q= p;incr(insert_penalties);
}
else{delete_glue_ref(split_top_ptr(p));
free_node(p,ins_node_size);
}
p= prev_p

/*:1022*/
#line 19879 "tex.w"
;
}

/*:1020*/
#line 19776 "tex.w"
;
}
else if(type(p)==mark_node)/*1016:*/
#line 19795 "tex.w"

{if(first_mark==null)
{first_mark= mark_ptr(p);
add_token_ref(first_mark);
}
if(bot_mark!=null)delete_token_ref(bot_mark);
bot_mark= mark_ptr(p);add_token_ref(bot_mark);
}

/*:1016*/
#line 19778 "tex.w"
;
prev_p= p;p= link(prev_p);
}
split_top_skip= save_split_top_skip;
/*1017:*/
#line 19815 "tex.w"

if(p!=null)
{if(link(contrib_head)==null)
if(nest_ptr==0)tail= page_tail;
else contrib_tail= page_tail;
link(page_tail)= link(contrib_head);
link(contrib_head)= p;
link(prev_p)= null;
}
save_vbadness= vbadness;vbadness= inf_bad;
save_vfuzz= vfuzz;vfuzz= max_dimen;
box(255)= vpackage(link(page_head),best_size,exactly,page_max_depth);
vbadness= save_vbadness;vfuzz= save_vfuzz;
if(last_glue!=max_halfword)delete_glue_ref(last_glue);
/*991:*/
#line 19388 "tex.w"

page_contents= empty;page_tail= page_head;link(page_head)= null;
last_glue= max_halfword;last_penalty= 0;last_kern= 0;
page_depth= 0;page_max_depth= 0

/*:991*/
#line 19829 "tex.w"
;
if(q!=hold_head)
{link(page_head)= link(hold_head);page_tail= q;
}

/*:1017*/
#line 19783 "tex.w"
;
/*1019:*/
#line 19854 "tex.w"

r= link(page_ins_head);
while(r!=page_ins_head)
{q= link(r);free_node(r,page_ins_node_size);r= q;
}
link(page_ins_head)= page_ins_head

/*:1019*/
#line 19784 "tex.w"


/*:1014*/
#line 19741 "tex.w"
;
if((top_mark!=null)&&(first_mark==null))
{first_mark= top_mark;add_token_ref(top_mark);
}
if(output_routine!=null)
if(dead_cycles>=max_dead_cycles)
/*1024:*/
#line 19927 "tex.w"

{print_err("Output loop---");print_int(dead_cycles);

print_str(" consecutive dead cycles");
help3("I've concluded that your \\output is awry; it never does a")
("\\shipout, so I'm shipping \\box255 out myself. Next time")
("increase \\maxdeadcycles if you want me to be more patient!");error();
}

/*:1024*/
#line 19747 "tex.w"

else/*1025:*/
#line 19936 "tex.w"

{output_active= true;
incr(dead_cycles);
push_nest();mode= -vmode;prev_depth= ignore_depth;mode_line= -line;
begin_token_list(output_routine,output_text);
new_save_level(output_group);normal_paragraph();
scan_left_brace();
return;
}

/*:1025*/
#line 19748 "tex.w"
;
/*1023:*/
#line 19916 "tex.w"

{if(link(page_head)!=null)
{if(link(contrib_head)==null)
if(nest_ptr==0)tail= page_tail;else contrib_tail= page_tail;
else link(page_tail)= link(contrib_head);
link(contrib_head)= link(page_head);
link(page_head)= null;page_tail= page_head;
}
ship_out(box(255));box(255)= null;
}

/*:1023*/
#line 19749 "tex.w"
;
}

/*:1012*/
#line 19428 "tex.w"

void build_page(void)
{
pointer p;
pointer q,r;
int b,c;
int pi;
uint8_t n;
scaled delta,h,w;
if((link(contrib_head)==null)||output_active)return;
do{resume:p= link(contrib_head);
/*996:*/
#line 19453 "tex.w"

if(last_glue!=max_halfword)delete_glue_ref(last_glue);
last_penalty= 0;last_kern= 0;
if(type(p)==glue_node)
{last_glue= glue_ptr(p);add_glue_ref(last_glue);
}
else{last_glue= max_halfword;
if(type(p)==penalty_node)last_penalty= penalty(p);
else if(type(p)==kern_node)last_kern= width(p);
}

/*:996*/
#line 19439 "tex.w"
;
/*997:*/
#line 19470 "tex.w"

/*1000:*/
#line 19498 "tex.w"

switch(type(p)){
case hlist_node:case vlist_node:case rule_node:if(page_contents<box_there)
/*1001:*/
#line 19519 "tex.w"

{if(page_contents==empty)freeze_page_specs(box_there);
else page_contents= box_there;
q= new_skip_param(top_skip_code);
if(width(temp_ptr)> height(p))width(temp_ptr)= width(temp_ptr)-height(p);
else width(temp_ptr)= 0;
link(q)= p;link(contrib_head)= q;goto resume;
}

/*:1001*/
#line 19502 "tex.w"

else/*1002:*/
#line 19528 "tex.w"

{page_total= page_total+page_depth+height(p);
page_depth= depth(p);
goto contribute;
}

/*:1002*/
#line 19503 "tex.w"
break;
case whatsit_node:/*1364:*/
#line 24808 "tex.w"

goto contribute

/*:1364*/
#line 19504 "tex.w"
;
case glue_node:if(page_contents<box_there)goto done1;
else if(precedes_break(page_tail))pi= 0;
else goto update_heights;break;
case kern_node:if(page_contents<box_there)goto done1;
else if(link(p)==null)return;
else if(type(link(p))==glue_node)pi= 0;
else goto update_heights;break;
case penalty_node:if(page_contents<box_there)goto done1;else pi= penalty(p);break;
case mark_node:goto contribute;
case ins_node:/*1008:*/
#line 19615 "tex.w"

{if(page_contents==empty)freeze_page_specs(inserts_only);
n= subtype(p);r= page_ins_head;
while(n>=subtype(link(r)))r= link(r);
n= qo(n);
if(subtype(r)!=qi(n))
/*1009:*/
#line 19643 "tex.w"

{q= get_node(page_ins_node_size);link(q)= link(r);link(r)= q;r= q;
subtype(r)= qi(n);type(r)= inserting;ensure_vbox(n);
if(box(n)==null)height(r)= 0;
else height(r)= height(box(n))+depth(box(n));
best_ins_ptr(r)= null;
q= skip(n);
if(count(n)==1000)h= height(r);
else h= x_over_n(height(r),1000)*count(n);
page_goal= page_goal-h-width(q);
page_so_far[2+stretch_order(q)]= page_so_far[2+stretch_order(q)]+stretch(q);
page_shrink= page_shrink+shrink(q);
if((shrink_order(q)!=normal)&&(shrink(q)!=0))
{print_err("Infinite glue shrinkage inserted from ");print_esc(/*1423:*/
#line 25165 "tex.w"
298
/*:1423*/
#line 19656 "tex.w"
);

print_int(n);
help3("The correction glue for page breaking with insertions")
("must have finite shrinkability. But you may proceed,")
("since the offensive shrinkability has been made finite.");
error();
}
}

/*:1009*/
#line 19622 "tex.w"
;
if(type(r)==split_up)insert_penalties= insert_penalties+float_cost(p);
else{last_ins_ptr(r)= p;
delta= page_goal-page_total-page_depth+page_shrink;

if(count(n)==1000)h= height(p);
else h= x_over_n(height(p),1000)*count(n);
if(((h<=0)||(h<=delta))&&(height(p)+height(r)<=dimen(n)))
{page_goal= page_goal-h;height(r)= height(r)+height(p);
}
else/*1010:*/
#line 19676 "tex.w"

{if(count(n)<=0)w= max_dimen;
else{w= page_goal-page_total-page_depth;
if(count(n)!=1000)w= x_over_n(w,count(n))*1000;
}
if(w> dimen(n)-height(r))w= dimen(n)-height(r);
q= vert_break(ins_ptr(p),w,depth(p));
height(r)= height(r)+best_height_plus_depth;
#ifdef STAT
if(tracing_pages> 0)/*1011:*/
#line 19696 "tex.w"

{begin_diagnostic();print_nl("% split");print_int(n);

print_str(" to ");print_scaled(w);
print_char(',');print_scaled(best_height_plus_depth);
print_str(" p=");
if(q==null)print_int(eject_penalty);
else if(type(q)==penalty_node)print_int(penalty(q));
else print_char('0');
end_diagnostic(false);
}

/*:1011*/
#line 19685 "tex.w"
;
#endif

if(count(n)!=1000)
best_height_plus_depth= x_over_n(best_height_plus_depth,1000)*count(n);
page_goal= page_goal-best_height_plus_depth;
type(r)= split_up;broken_ptr(r)= q;broken_ins(r)= p;
if(q==null)insert_penalties= insert_penalties+eject_penalty;
else if(type(q)==penalty_node)insert_penalties= insert_penalties+penalty(q);
}

/*:1010*/
#line 19632 "tex.w"
;
}
goto contribute;
}

/*:1008*/
#line 19514 "tex.w"

default:confusion(/*1697:*/
#line 25987 "tex.w"
572
/*:1697*/
#line 19515 "tex.w"
);

}

/*:1000*/
#line 19474 "tex.w"
;
/*1005:*/
#line 19562 "tex.w"

if(pi<inf_penalty)
{/*1007:*/
#line 19607 "tex.w"

if(page_total<page_goal)
if((page_so_far[3]!=0)||(page_so_far[4]!=0)||
(page_so_far[5]!=0))b= 0;
else b= badness(page_goal-page_total,page_so_far[2]);
else if(page_total-page_goal> page_shrink)b= awful_bad;
else b= badness(page_total-page_goal,page_shrink)

/*:1007*/
#line 19565 "tex.w"
;
if(b<awful_bad)
if(pi<=eject_penalty)c= pi;
else if(b<inf_bad)c= b+pi+insert_penalties;
else c= deplorable;
else c= b;
if(insert_penalties>=10000)c= awful_bad;

#ifdef STAT
if(tracing_pages> 0)/*1006:*/
#line 19593 "tex.w"

{begin_diagnostic();print_nl("%");
print_str(" t=");print_totals();
print_str(" g=");print_scaled(page_goal);
print_str(" b=");
if(b==awful_bad)print_char('*');else print_int(b);

print_str(" p=");print_int(pi);
print_str(" c=");
if(c==awful_bad)print_char('*');else print_int(c);
if(c<=least_page_cost)print_char('#');
end_diagnostic(false);
}

/*:1006*/
#line 19574 "tex.w"
;
#endif

if(c<=least_page_cost)
{best_page_break= p;best_size= page_goal;
least_page_cost= c;
r= link(page_ins_head);
while(r!=page_ins_head)
{best_ins_ptr(r)= last_ins_ptr(r);
r= link(r);
}
}
if((c==awful_bad)||(pi<=eject_penalty))
{fire_up(p);
if(output_active)return;
goto done;
}
}

/*:1005*/
#line 19477 "tex.w"
;
if((type(p)<glue_node)||(type(p)> kern_node))goto contribute;
update_heights:/*1004:*/
#line 19541 "tex.w"

if(type(p)==kern_node)q= p;
else{q= glue_ptr(p);
page_so_far[2+stretch_order(q)]= 
page_so_far[2+stretch_order(q)]+stretch(q);
page_shrink= page_shrink+shrink(q);
if((shrink_order(q)!=normal)&&(shrink(q)!=0))
{
print_err("Infinite glue shrinkage found on current page");

help4("The page about to be output contains some infinitely")
("shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.")
("Such glue doesn't belong there; but you can safely proceed,")
("since the offensive shrinkability has been made finite.");
error();
r= new_spec(q);shrink_order(r)= normal;delete_glue_ref(q);
glue_ptr(p)= r;q= r;
}
}
page_total= page_total+page_depth+width(q);page_depth= 0

/*:1004*/
#line 19480 "tex.w"
;
contribute:/*1003:*/
#line 19534 "tex.w"

if(page_depth> page_max_depth)
{page_total= 
page_total+page_depth-page_max_depth;
page_depth= page_max_depth;
}

/*:1003*/
#line 19481 "tex.w"
;
/*998:*/
#line 19486 "tex.w"

link(page_tail)= p;page_tail= p;
link(contrib_head)= link(p);link(p)= null;goto done

/*:998*/
#line 19482 "tex.w"
;
done1:/*999:*/
#line 19490 "tex.w"

link(contrib_head)= link(p);link(p)= null;flush_node_list(p)

/*:999*/
#line 19483 "tex.w"
;
done:

/*:997*/
#line 19442 "tex.w"
;
}while(!(link(contrib_head)==null));
/*995:*/
#line 19449 "tex.w"

if(nest_ptr==0)tail= contrib_head;
else contrib_tail= contrib_head

/*:995*/
#line 19444 "tex.w"
;
}

/*:994*//*1030:*/
#line 20035 "tex.w"
/*1043:*/
#line 20361 "tex.w"

void app_space(void)
{pointer q;
if((space_factor>=2000)&&(xspace_skip!=zero_glue))
q= new_param_glue(xspace_skip_code);
else{if(space_skip!=zero_glue)main_p= space_skip;
else/*1042:*/
#line 20350 "tex.w"

{main_p= font_glue[cur_font];
if(main_p==null)
{main_p= new_spec(zero_glue);main_k= param_base[cur_font]+space_code;
width(main_p)= font_info[main_k].sc;
stretch(main_p)= font_info[main_k+1].sc;
shrink(main_p)= font_info[main_k+2].sc;
font_glue[cur_font]= main_p;
}
}

/*:1042*/
#line 20367 "tex.w"
;
main_p= new_spec(main_p);
/*1044:*/
#line 20375 "tex.w"

if(space_factor>=2000)width(main_p)= width(main_p)+extra_space(cur_font);
stretch(main_p)= xn_over_d(stretch(main_p),space_factor,1000);
shrink(main_p)= xn_over_d(shrink(main_p),1000,space_factor)

/*:1044*/
#line 20369 "tex.w"
;
q= new_glue(main_p);glue_ref_count(main_p)= null;
}
link(tail)= q;tail= q;
}

/*:1043*//*1047:*/
#line 20413 "tex.w"

void insert_dollar_sign(void)
{back_input();cur_tok= math_shift_token+'$';
print_err("Missing $ inserted");

help2("I've inserted a begin-math/end-math symbol since I think")
("you left one out. Proceed, with fingers crossed.");ins_error();
}

/*:1047*//*1049:*/
#line 20438 "tex.w"

void you_cant(void)
{print_err("You can't use `");

print_cmd_chr(cur_cmd,cur_chr);
print_str("' in ");print_mode(mode);
}

/*:1049*//*1050:*/
#line 20446 "tex.w"

void report_illegal_case(void)
{you_cant();
help4("Sorry, but I'm not programmed to handle this case;")
("I'll just pretend that you didn't ask for it.")
("If you're in the wrong mode, you might be able to")
("return to the right one by typing `I}' or `I$' or `I\\par'.");
error();
}

/*:1050*//*1051:*/
#line 20461 "tex.w"

bool privileged(void)
{if(mode> 0)return true;
else{report_illegal_case();return false;
}
}

/*:1051*//*1054:*/
#line 20488 "tex.w"

bool its_all_over(void)
{
if(privileged())
{if((page_head==page_tail)&&(head==tail)&&(dead_cycles==0))
{return true;
}
back_input();
tail_append(new_null_box());
width(tail)= hsize;
tail_append(new_glue(fill_glue));
tail_append(new_penalty(-010000000000));
build_page();
}
return false;
}

/*:1054*//*1060:*/
#line 20598 "tex.w"

void append_glue(void)
{small_number s;
s= cur_chr;
switch(s){
case fil_code:cur_val= fil_glue;break;
case fill_code:cur_val= fill_glue;break;
case ss_code:cur_val= ss_glue;break;
case fil_neg_code:cur_val= fil_neg_glue;break;
case skip_code:scan_glue(glue_val);break;
case mskip_code:scan_glue(mu_val);
}
tail_append(new_glue(cur_val));
if(s>=skip_code)
{decr(glue_ref_count(cur_val));
if(s> skip_code)subtype(tail)= mu_glue;
}
}

/*:1060*//*1061:*/
#line 20617 "tex.w"

void append_kern(void)
{quarterword s;
s= cur_chr;scan_dimen(s==mu_glue,false,false);
tail_append(new_kern(cur_val));subtype(tail)= s;
}

/*:1061*//*1064:*/
#line 20661 "tex.w"

void off_save(void)
{pointer p;
if(cur_group==bottom_level)
/*1066:*/
#line 20700 "tex.w"

{print_err("Extra ");print_cmd_chr(cur_cmd,cur_chr);

help1("Things are pretty mixed up, but I think the worst is over.");
error();
}

/*:1066*/
#line 20665 "tex.w"

else{back_input();p= get_avail();link(temp_head)= p;
print_err("Missing ");
/*1065:*/
#line 20681 "tex.w"

switch(cur_group){
case semi_simple_group:{info(p)= cs_token_flag+frozen_end_group;
print_esc(/*1538:*/
#line 25510 "tex.w"
413
/*:1538*/
#line 20684 "tex.w"
);

}break;
case math_shift_group:{info(p)= math_shift_token+'$';print_char('$');

}break;
case math_left_group:{info(p)= cs_token_flag+frozen_right;link(p)= get_avail();
p= link(p);info(p)= other_token+'.';print_esc(/*1710:*/
#line 26026 "tex.w"
585
/*:1710*/
#line 20691 "tex.w"
);


}break;
default:{info(p)= right_brace_token+'}';print_char('}');

}
}

/*:1065*/
#line 20668 "tex.w"
;
print_str(" inserted");ins_list(link(temp_head));
help5("I've inserted something that you may have forgotten.")
("(See the <inserted text> above.)")
("With luck, this will get me unwedged. But if you")
("really didn't forget anything, try typing `2' now; then")
("my insertion and my current dilemma will both disappear.");
error();
}
}

/*:1064*//*1069:*/
#line 20736 "tex.w"

void extra_right_brace(void)
{print_err("Extra }, or forgotten ");

switch(cur_group){
case semi_simple_group:print_esc(/*1538:*/
#line 25510 "tex.w"
413
/*:1538*/
#line 20741 "tex.w"
);break;
case math_shift_group:print_char('$');break;
case math_left_group:print_esc(/*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 20743 "tex.w"
);
}
help5("I've deleted a group-closing symbol because it seems to be")
("spurious, as in `$x}$'. But perhaps the } is legitimate and")
("you forgot something else, as in `\\hbox{$x}'. In such cases")
("the way to recover is to insert both the forgotten and the")
("deleted material, e.g., by typing `I$}'.");error();
incr(align_state);
}

/*:1069*//*1070:*/
#line 20756 "tex.w"

void normal_paragraph(void)
{if(looseness!=0)eq_word_define(int_base+looseness_code,0);
if(hang_indent!=0)eq_word_define(dimen_base+hang_indent_code,0);
if(hang_after!=1)eq_word_define(int_base+hang_after_code,1);
if(par_shape_ptr!=null)eq_define(par_shape_loc,shape_ref,null);
}

/*:1070*//*1075:*/
#line 20877 "tex.w"

void box_end(int box_context)
{pointer p;
if(box_context<box_flag)/*1076:*/
#line 20892 "tex.w"

{if(cur_box!=null)
{shift_amount(cur_box)= box_context;
if(abs(mode)==vmode)
{append_to_vlist(cur_box);
if(adjust_tail!=null)
{if(adjust_head!=adjust_tail)
{link(tail)= link(adjust_head);tail= adjust_tail;
}
adjust_tail= null;
}
if(mode> 0)build_page();
}
else{if(abs(mode)==hmode)space_factor= 1000;
else{p= new_noad();
math_type(nucleus(p))= sub_box;
info(nucleus(p))= cur_box;cur_box= p;
}
link(tail)= cur_box;tail= cur_box;
}
}
}

/*:1076*/
#line 20881 "tex.w"

else if(box_context<ship_out_flag)/*1077:*/
#line 20915 "tex.w"

if(box_context<box_flag+256)
eq_define(box_base-box_flag+box_context,box_ref,cur_box);
else geq_define(box_base-box_flag-256+box_context,box_ref,cur_box)

/*:1077*/
#line 20882 "tex.w"
;
else if(cur_box!=null)
if(box_context> ship_out_flag)/*1078:*/
#line 20920 "tex.w"

{/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 20921 "tex.w"
;
if(((cur_cmd==hskip)&&(abs(mode)!=vmode))||
((cur_cmd==vskip)&&(abs(mode)==vmode)))
{append_glue();subtype(tail)= box_context-(leader_flag-a_leaders);
leader_ptr(tail)= cur_box;
}
else{print_err("Leaders not followed by proper glue");

help3("You should say `\\leaders <box or rule><hskip or vskip>'.")
("I found the <box or rule>, but there's no suitable")
("<hskip or vskip>, so I'm ignoring these leaders.");back_error();
flush_node_list(cur_box);
}
}

/*:1078*/
#line 20884 "tex.w"

else ship_out(cur_box);
}

/*:1075*//*1079:*/
#line 20941 "tex.w"

void begin_box(int box_context)
{
pointer p,q;
int m;
halfword k;
eight_bits n;
switch(cur_chr){
case box_code:{scan_eight_bit_int();cur_box= box(cur_val);
box(cur_val)= null;
}break;
case copy_code:{scan_eight_bit_int();cur_box= copy_node_list(box(cur_val));
}break;
case last_box_code:/*1080:*/
#line 20965 "tex.w"

{cur_box= null;
if(abs(mode)==mmode)
{you_cant();help1("Sorry; this \\lastbox will be void.");error();
}
else if((mode==vmode)&&(head==tail))
{you_cant();
help2("Sorry...I usually can't take things from the current page.")
("This \\lastbox will therefore be void.");error();
}
else{if(!is_char_node(tail))
if((type(tail)==hlist_node)||(type(tail)==vlist_node))
/*1081:*/
#line 20981 "tex.w"

{q= head;
do{p= q;
if(!is_char_node(q))if(type(q)==disc_node)
{for(m= 1;m<=replace_count(q);m++)p= link(p);
if(p==tail)goto done;
}
q= link(p);
}while(!(q==tail));
cur_box= tail;shift_amount(cur_box)= 0;
tail= p;link(p)= null;
done:;}

/*:1081*/
#line 20977 "tex.w"
;
}
}

/*:1080*/
#line 20955 "tex.w"
break;
case vsplit_code:/*1082:*/
#line 20996 "tex.w"

{scan_eight_bit_int();n= cur_val;
if(!scan_keyword(/*1642:*/
#line 25822 "tex.w"
517
/*:1642*/
#line 20998 "tex.w"
))

{print_err("Missing `to' inserted");

help2("I'm working on `\\vsplit<box number> to <dimen>';")
("will look for the <dimen> next.");error();
}
scan_normal_dimen;
cur_box= vsplit(n,cur_val);
}

/*:1082*/
#line 20956 "tex.w"
break;
default:/*1083:*/
#line 21012 "tex.w"

{k= cur_chr-vtop_code;saved(0)= box_context;
if(k==hmode)
if((box_context<box_flag)&&(abs(mode)==vmode))
scan_spec(adjusted_hbox_group,true);
else scan_spec(hbox_group,true);
else{if(k==vmode)scan_spec(vbox_group,true);
else{scan_spec(vtop_group,true);k= vmode;
}
normal_paragraph();
}
push_nest();mode= -k;
if(k==vmode)
{prev_depth= ignore_depth;
if(every_vbox!=null)begin_token_list(every_vbox,every_vbox_text);
}
else{space_factor= 1000;
if(every_hbox!=null)begin_token_list(every_hbox,every_hbox_text);
}
return;
}

/*:1083*/
#line 20957 "tex.w"

}
box_end(box_context);
}

/*:1079*//*1084:*/
#line 21034 "tex.w"

void scan_box(int box_context)

{/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 21037 "tex.w"
;
if(cur_cmd==make_box)begin_box(box_context);
else if((box_context>=leader_flag)&&((cur_cmd==hrule)||(cur_cmd==vrule)))
{cur_box= scan_rule_spec();box_end(box_context);
}
else{
print_err("A <box> was supposed to be here");

help3("I was expecting to see \\hbox or \\vbox or \\copy or \\box or")
("something like that. So you might find something missing in")
("your output. But keep trying; you can fix this later.");back_error();
}
}

/*:1084*//*1086:*/
#line 21064 "tex.w"

void package(small_number c)
{scaled h;
pointer p;
scaled d;
d= box_max_depth;unsave();save_ptr= save_ptr-3;
if(mode==-hmode)cur_box= hpack(link(head),saved(2),saved(1));
else{cur_box= vpackage(link(head),saved(2),saved(1),d);
if(c==vtop_code)/*1087:*/
#line 21082 "tex.w"

{h= 0;p= list_ptr(cur_box);
if(p!=null)if(type(p)<=rule_node)h= height(p);
depth(cur_box)= depth(cur_box)-h+height(cur_box);height(cur_box)= h;
}

/*:1087*/
#line 21072 "tex.w"
;
}
pop_nest();box_end(saved(0));
}

/*:1086*//*1091:*/
#line 21110 "tex.w"

small_number norm_min(int h)
{if(h<=0)return 1;else if(h>=63)return 63;
else return h;
}

void new_graf(bool indented)
{prev_graf= 0;
if((mode==vmode)||(head!=tail))
tail_append(new_param_glue(par_skip_code));
push_nest();mode= hmode;space_factor= 1000;set_cur_lang;clang= cur_lang;
prev_graf= (norm_min(left_hyphen_min)*0100+norm_min(right_hyphen_min))
*0200000+cur_lang;
if(indented)
{tail= new_null_box();link(head)= tail;width(tail)= par_indent;
}
if(every_par!=null)begin_token_list(every_par,every_par_text);
if(nest_ptr==1)build_page();
}

/*:1091*//*1093:*/
#line 21133 "tex.w"

void indent_in_hmode(void)
{pointer p,q;
if(cur_chr> 0)
{p= new_null_box();width(p)= par_indent;
if(abs(mode)==hmode)space_factor= 1000;
else{q= new_noad();math_type(nucleus(q))= sub_box;
info(nucleus(q))= p;p= q;
}
tail_append(p);
}
}

/*:1093*//*1095:*/
#line 21161 "tex.w"

void head_for_vmode(void)
{if(mode<0)
if(cur_cmd!=hrule)off_save();
else{print_err("You can't use `");
print_esc(/*1543:*/
#line 25525 "tex.w"
418
/*:1543*/
#line 21166 "tex.w"
);print_str("' here except with leaders");

help2("To put a horizontal rule in an hbox or an alignment,")
("you should use \\leaders or \\hrulefill (see The TeXbook).");
error();
}
else{back_input();cur_tok= par_token;back_input();token_type= inserted;
}
}

/*:1095*//*1096:*/
#line 21176 "tex.w"

void end_graf(void)
{if(mode==hmode)
{if(head==tail)pop_nest();
else line_break(widow_penalty);
normal_paragraph();
error_count= 0;
}
}

/*:1096*//*1099:*/
#line 21196 "tex.w"

void begin_insert_or_adjust(void)
{if(cur_cmd==vadjust)cur_val= 255;
else{scan_eight_bit_int();
if(cur_val==255)
{print_err("You can't ");print_esc(/*1390:*/
#line 25066 "tex.w"
265
/*:1390*/
#line 21201 "tex.w"
);print_int(255);

help1("I'm changing to \\insert0; box 255 is special.");
error();cur_val= 0;
}
}
saved(0)= cur_val;incr(save_ptr);
new_save_level(insert_group);scan_left_brace();normal_paragraph();
push_nest();mode= -vmode;prev_depth= ignore_depth;
}

/*:1099*//*1101:*/
#line 21233 "tex.w"

void make_mark(void)
{pointer p;
p= scan_toks(false,true);p= get_node(small_node_size);
type(p)= mark_node;subtype(p)= 0;
mark_ptr(p)= def_ref;link(tail)= p;tail= p;
}

/*:1101*//*1103:*/
#line 21247 "tex.w"

void append_penalty(void)
{scan_int();tail_append(new_penalty(cur_val));
if(mode==vmode)build_page();
}

/*:1103*//*1105:*/
#line 21266 "tex.w"

void delete_last(void)
{
pointer p,q;
int m;
if((mode==vmode)&&(tail==head))
/*1106:*/
#line 21287 "tex.w"

{if((cur_chr!=glue_node)||(last_glue!=max_halfword))
{you_cant();
help2("Sorry...I usually can't take things from the current page.")
("Try `I\\vskip-\\lastskip' instead.");
if(cur_chr==kern_node)help_line[0]= 
("Try `I\\kern-\\lastkern' instead.");
else if(cur_chr!=glue_node)help_line[0]= 
("Perhaps you can make the output routine do it.");
error();
}
}

/*:1106*/
#line 21272 "tex.w"

else{if(!is_char_node(tail))if(type(tail)==cur_chr)
{q= head;
do{p= q;
if(!is_char_node(q))if(type(q)==disc_node)
{for(m= 1;m<=replace_count(q);m++)p= link(p);
if(p==tail)return;
}
q= link(p);
}while(!(q==tail));
link(p)= null;flush_node_list(tail);tail= p;
}
}
}

/*:1105*//*1110:*/
#line 21330 "tex.w"

void unpackage(void)
{
pointer p;
uint8_t c;
c= cur_chr;scan_eight_bit_int();p= box(cur_val);
if(p==null)return;
if((abs(mode)==mmode)||((abs(mode)==vmode)&&(type(p)!=vlist_node))||
((abs(mode)==hmode)&&(type(p)!=hlist_node)))
{print_err("Incompatible list can't be unboxed");

help3("Sorry, Pandora. (You sneaky devil.)")
("I refuse to unbox an \\hbox in vertical mode or vice versa.")
("And I can't open any boxes in math mode.");
error();return;
}
if(c==copy_code)link(tail)= copy_node_list(list_ptr(p));
else{link(tail)= list_ptr(p);box(cur_val)= null;
free_node(p,box_node_size);
}
while(link(tail)!=null)tail= link(tail);
}

/*:1110*//*1113:*/
#line 21363 "tex.w"

void append_italic_correction(void)
{
pointer p;
internal_font_number f;
if(tail!=head)
{if(is_char_node(tail))p= tail;
else if(type(tail)==ligature_node)p= lig_char(tail);
else return;
f= font(p);
tail_append(new_kern(char_italic(f)(char_info(f)(character(p)))));
subtype(tail)= explicit;
}
}

/*:1113*//*1117:*/
#line 21397 "tex.w"

void append_discretionary(void)
{int c;
tail_append(new_disc());
if(cur_chr==1)
{c= hyphen_char[cur_font];
if(c>=0)if(c<256)pre_break(tail)= new_character(cur_font,c);
}
else{incr(save_ptr);saved(-1)= 0;new_save_level(disc_group);
scan_left_brace();push_nest();mode= -hmode;space_factor= 1000;
}
}

/*:1117*//*1119:*/
#line 21417 "tex.w"

void build_discretionary(void)
{
pointer p,q;
int n;
unsave();
/*1121:*/
#line 21459 "tex.w"

q= head;p= link(q);n= 0;
while(p!=null)
{if(!is_char_node(p))if(type(p)> rule_node)
if(type(p)!=kern_node)if(type(p)!=ligature_node)
{print_err("Improper discretionary list");

help1("Discretionary lists must contain only boxes and kerns.");
error();
begin_diagnostic();
print_nl("The following discretionary sublist has been deleted:");

show_box(p);
end_diagnostic(true);
flush_node_list(p);link(q)= null;goto done;
}
q= p;p= link(q);incr(n);
}
done:

/*:1121*/
#line 21425 "tex.w"
;
p= link(head);pop_nest();
switch(saved(-1)){
case 0:pre_break(tail)= p;break;
case 1:post_break(tail)= p;break;
case 2:/*1120:*/
#line 21437 "tex.w"

{if((n> 0)&&(abs(mode)==mmode))
{print_err("Illegal math ");print_esc(/*1400:*/
#line 25096 "tex.w"
275
/*:1400*/
#line 21439 "tex.w"
);

help2("Sorry: The third part of a discretionary break must be")
("empty, in math formulas. I had to delete your third part.");
flush_node_list(p);n= 0;error();
}
else link(tail)= p;
if(n<=max_quarterword)replace_count(tail)= n;
else{print_err("Discretionary list is too long");

help2("Wow---I never thought anybody would tweak me here.")
("You can't seriously need such a huge discretionary list?");
error();
}
if(n> 0)tail= q;
decr(save_ptr);return;
}

/*:1120*/
#line 21431 "tex.w"
;
}
incr(saved(-1));new_save_level(disc_group);scan_left_brace();
push_nest();mode= -hmode;space_factor= 1000;
}

/*:1119*//*1123:*/
#line 21493 "tex.w"

void make_accent(void)
{double s,t;
pointer p,q,r;
internal_font_number f;
scaled a,h,x,w,delta;
four_quarters i;
scan_char_num();f= cur_font;p= new_character(f,cur_val);
if(p!=null)
{x= x_height(f);s= slant(f)/float_constant(65536);

a= char_width(f)(char_info(f)(character(p)));
do_assignments();
/*1124:*/
#line 21513 "tex.w"

q= null;f= cur_font;
if((cur_cmd==letter)||(cur_cmd==other_char)||(cur_cmd==char_given))
q= new_character(f,cur_chr);
else if(cur_cmd==char_num)
{scan_char_num();q= new_character(f,cur_val);
}
else back_input()

/*:1124*/
#line 21507 "tex.w"
;
if(q!=null)/*1125:*/
#line 21529 "tex.w"

{t= slant(f)/float_constant(65536);

i= char_info(f)(character(q));
w= char_width(f)(i);h= char_height(f)(height_depth(i));
if(h!=x)
{p= hpack(p,natural);shift_amount(p)= x-h;
}
delta= round((w-a)/float_constant(2)+h*t-x*s);


r= new_kern(delta);subtype(r)= acc_kern;link(tail)= r;link(r)= p;
tail= new_kern(-a-delta);subtype(tail)= acc_kern;link(p)= tail;p= q;
}

/*:1125*/
#line 21508 "tex.w"
;
link(tail)= p;tail= p;space_factor= 1000;
}
}

/*:1123*//*1127:*/
#line 21557 "tex.w"

void align_error(void)
{if(abs(align_state)> 2)
/*1128:*/
#line 21577 "tex.w"

{print_err("Misplaced ");print_cmd_chr(cur_cmd,cur_chr);



if(cur_tok==tab_token+'&')
{help6("I can't figure out why you would want to use a tab mark")
("here. If you just want an ampersand, the remedy is")
("simple: Just type `I\\&' now. But if some right brace")
("up above has ended a previous alignment prematurely,")
("you're probably due for more error messages, and you")
("might try typing `S' now just to see what is salvageable.");
}
else{help5("I can't figure out why you would want to use a tab mark")
("or \\cr or \\span just now. If something like a right brace")
("up above has ended a previous alignment prematurely,")
("you're probably due for more error messages, and you")
("might try typing `S' now just to see what is salvageable.");
}
error();
}

/*:1128*/
#line 21560 "tex.w"

else{back_input();
if(align_state<0)
{print_err("Missing { inserted");

incr(align_state);cur_tok= left_brace_token+'{';
}
else{print_err("Missing } inserted");

decr(align_state);cur_tok= right_brace_token+'}';
}
help3("I've put in what seems to be necessary to fix")
("the current column of the current alignment.")
("Try to go on, since this might almost work.");ins_error();
}
}

/*:1127*//*1129:*/
#line 21602 "tex.w"

void no_align_error(void)
{print_err("Misplaced ");print_esc(/*1549:*/
#line 25543 "tex.w"
424
/*:1549*/
#line 21604 "tex.w"
);

help2("I expect to see \\noalign only after the \\cr of")
("an alignment. Proceed, and I'll ignore this case.");error();
}
void omit_error(void)
{print_err("Misplaced ");print_esc(/*1552:*/
#line 25552 "tex.w"
427
/*:1552*/
#line 21610 "tex.w"
);

help2("I expect to see \\omit only after tab marks or the \\cr of")
("an alignment. Proceed, and I'll ignore this case.");error();
}

/*:1129*//*1131:*/
#line 21632 "tex.w"

void do_endv(void)
{base_ptr= input_ptr;input_stack[base_ptr]= cur_input;
while((input_stack[base_ptr].index_field!=v_template)&&
(input_stack[base_ptr].loc_field==null)&&
(input_stack[base_ptr].state_field==token_list))decr(base_ptr);
if((input_stack[base_ptr].index_field!=v_template)||
(input_stack[base_ptr].loc_field!=null)||
(input_stack[base_ptr].state_field!=token_list))
fatal_error("(interwoven alignment preambles are not allowed)");

if(cur_group==align_group)
{end_graf();
if(fin_col())fin_row();
}
else off_save();
}

/*:1131*//*1135:*/
#line 21667 "tex.w"

void cs_error(void)
{print_err("Extra ");print_esc(/*1527:*/
#line 25477 "tex.w"
402
/*:1527*/
#line 21669 "tex.w"
);

help1("I'm ignoring this, since I wasn't doing a \\csname.");
error();
}

/*:1135*//*1136:*/
#line 21685 "tex.w"

void push_math(group_code c)
{push_nest();mode= -mmode;incompleat_noad= null;new_save_level(c);
}

/*:1136*//*1138:*/
#line 21698 "tex.w"

void init_math(void)
{
scaled w;
scaled l;
scaled s;
pointer p;
pointer q;
internal_font_number f;
int n;
scaled v;
scaled d;
get_token();
if((cur_cmd==math_shift)&&(mode> 0))/*1145:*/
#line 21756 "tex.w"

{if(head==tail)
{pop_nest();w= -max_dimen;
}
else{line_break(display_widow_penalty);
/*1146:*/
#line 21776 "tex.w"

v= shift_amount(just_box)+2*quad(cur_font);w= -max_dimen;
p= list_ptr(just_box);
while(p!=null)
{/*1147:*/
#line 21793 "tex.w"

reswitch:if(is_char_node(p))
{f= font(p);d= char_width(f)(char_info(f)(character(p)));
goto found;
}
switch(type(p)){
case hlist_node:case vlist_node:case rule_node:{d= width(p);goto found;
}
case ligature_node:/*652:*/
#line 12994 "tex.w"

{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p);
p= lig_trick;goto reswitch;
}

/*:652*/
#line 21801 "tex.w"

case kern_node:case math_node:d= width(p);break;
case glue_node:/*1148:*/
#line 21815 "tex.w"

{q= glue_ptr(p);d= width(q);
if(glue_sign(just_box)==stretching)
{if((glue_order(just_box)==stretch_order(q))&&
(stretch(q)!=0))
v= max_dimen;
}
else if(glue_sign(just_box)==shrinking)
{if((glue_order(just_box)==shrink_order(q))&&
(shrink(q)!=0))
v= max_dimen;
}
if(subtype(p)>=a_leaders)goto found;
}

/*:1148*/
#line 21804 "tex.w"
break;
case whatsit_node:/*1361:*/
#line 24797 "tex.w"
d= 0

/*:1361*/
#line 21805 "tex.w"
;break;
default:d= 0;
}

/*:1147*/
#line 21781 "tex.w"
;
if(v<max_dimen)v= v+d;
goto not_found;
found:if(v<max_dimen)
{v= v+d;w= v;
}
else{w= max_dimen;goto done;
}
not_found:p= link(p);
}
done:

/*:1146*/
#line 21763 "tex.w"
;
}

/*1149:*/
#line 21833 "tex.w"

if(par_shape_ptr==null)
if((hang_indent!=0)&&
(((hang_after>=0)&&(prev_graf+2> hang_after))||
(prev_graf+1<-hang_after)))
{l= hsize-abs(hang_indent);
if(hang_indent> 0)s= hang_indent;else s= 0;
}
else{l= hsize;s= 0;
}
else{n= info(par_shape_ptr);
if(prev_graf+2>=n)p= par_shape_ptr+2*n;
else p= par_shape_ptr+2*(prev_graf+2);
s= mem[p-1].sc;l= mem[p].sc;
}

/*:1149*/
#line 21766 "tex.w"
;
push_math(math_shift_group);mode= mmode;
eq_word_define(int_base+cur_fam_code,-1);
eq_word_define(dimen_base+pre_display_size_code,w);
eq_word_define(dimen_base+display_width_code,l);
eq_word_define(dimen_base+display_indent_code,s);
if(every_display!=null)begin_token_list(every_display,every_display_text);
if(nest_ptr==1)build_page();
}

/*:1145*/
#line 21711 "tex.w"

else{back_input();/*1139:*/
#line 21716 "tex.w"

{push_math(math_shift_group);eq_word_define(int_base+cur_fam_code,-1);
if(every_math!=null)begin_token_list(every_math,every_math_text);
}

/*:1139*/
#line 21712 "tex.w"
;
}
}

/*:1138*//*1142:*/
#line 21740 "tex.w"

void start_eq_no(void)
{saved(0)= cur_chr;incr(save_ptr);
/*1139:*/
#line 21716 "tex.w"

{push_math(math_shift_group);eq_word_define(int_base+cur_fam_code,-1);
if(every_math!=null)begin_token_list(every_math,every_math_text);
}

/*:1139*/
#line 21743 "tex.w"
;
}

/*:1142*//*1151:*/
#line 21877 "tex.w"

void scan_math(pointer p)
{
int c;
restart:/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 21881 "tex.w"
;
reswitch:switch(cur_cmd){
case letter:case other_char:case char_given:{c= ho(math_code(cur_chr));
if(c==0100000)
{/*1152:*/
#line 21906 "tex.w"

{cur_cs= cur_chr+active_base;
cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);
x_token();back_input();
}

/*:1152*/
#line 21885 "tex.w"
;
goto restart;
}
}break;
case char_num:{scan_char_num();cur_chr= cur_val;cur_cmd= char_given;
goto reswitch;
}
case math_char_num:{scan_fifteen_bit_int();c= cur_val;
}break;
case math_given:c= cur_chr;break;
case delim_num:{scan_twenty_seven_bit_int();c= cur_val/010000;
}break;
default:/*1153:*/
#line 21915 "tex.w"

{back_input();scan_left_brace();
saved(0)= p;incr(save_ptr);push_math(math_group);return;
}

/*:1153*/
#line 21897 "tex.w"

}
math_type(p)= math_char;character(p)= qi(c%256);
if((c>=var_code)&&fam_in_range)fam(p)= cur_fam;
else fam(p)= (c/256)%16;
}

/*:1151*//*1155:*/
#line 21945 "tex.w"

void set_math_char(int c)
{pointer p;
if(c>=0100000)
/*1152:*/
#line 21906 "tex.w"

{cur_cs= cur_chr+active_base;
cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);
x_token();back_input();
}

/*:1152*/
#line 21949 "tex.w"

else{p= new_noad();math_type(nucleus(p))= math_char;
character(nucleus(p))= qi(c%256);
fam(nucleus(p))= (c/256)%16;
if(c>=var_code)
{if(fam_in_range)fam(nucleus(p))= cur_fam;
type(p)= ord_noad;
}
else type(p)= ord_noad+(c/010000);
link(tail)= p;tail= p;
}
}

/*:1155*//*1159:*/
#line 22017 "tex.w"

void math_limit_switch(void)
{
if(head!=tail)if(type(tail)==op_noad)
{subtype(tail)= cur_chr;return;
}
print_err("Limit controls must follow a math operator");

help1("I'm ignoring this misplaced \\limits or \\nolimits command.");error();
}

/*:1159*//*1160:*/
#line 22033 "tex.w"

void scan_delimiter(pointer p,bool r)
{if(r)scan_twenty_seven_bit_int();
else{/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 22036 "tex.w"
;
switch(cur_cmd){
case letter:case other_char:cur_val= del_code(cur_chr);break;
case delim_num:scan_twenty_seven_bit_int();break;
default:cur_val= -1;
}
}
if(cur_val<0)/*1161:*/
#line 22051 "tex.w"

{print_err("Missing delimiter (. inserted)");

help6("I was expecting to see something like `(' or `\\{' or")
("`\\}' here. If you typed, e.g., `{' instead of `\\{', you")
("should probably delete the `{' by typing `1' now, so that")
("braces don't get unbalanced. Otherwise just proceed.")
("Acceptable delimiters are characters whose \\delcode is")
("nonnegative, or you can use `\\delimiter <delimiter code>'.");
back_error();cur_val= 0;
}

/*:1161*/
#line 22044 "tex.w"
;
small_fam(p)= (cur_val/04000000)%16;
small_char(p)= qi((cur_val/010000)%256);
large_fam(p)= (cur_val/256)%16;
large_char(p)= qi(cur_val%256);
}

/*:1160*//*1163:*/
#line 22066 "tex.w"

void math_radical(void)
{tail_append(get_node(radical_noad_size));
type(tail)= radical_noad;subtype(tail)= normal;
mem[nucleus(tail)].hh= empty_field;
mem[subscr(tail)].hh= empty_field;
mem[supscr(tail)].hh= empty_field;
scan_delimiter(left_delimiter(tail),true);scan_math(nucleus(tail));
}

/*:1163*//*1165:*/
#line 22079 "tex.w"

void math_ac(void)
{if(cur_cmd==accent)
/*1166:*/
#line 22096 "tex.w"

{print_err("Please use ");print_esc(/*1545:*/
#line 25531 "tex.w"
420
/*:1545*/
#line 22097 "tex.w"
);
print_str(" for accents in math mode");

help2("I'm changing \\accent to \\mathaccent here; wish me luck.")
("(Accents are not the same in formulas as they are in text.)");
error();
}

/*:1166*/
#line 22082 "tex.w"
;
tail_append(get_node(accent_noad_size));
type(tail)= accent_noad;subtype(tail)= normal;
mem[nucleus(tail)].hh= empty_field;
mem[subscr(tail)].hh= empty_field;
mem[supscr(tail)].hh= empty_field;
math_type(accent_chr(tail))= math_char;
scan_fifteen_bit_int();
character(accent_chr(tail))= qi(cur_val%256);
if((cur_val>=var_code)&&fam_in_range)fam(accent_chr(tail))= cur_fam;
else fam(accent_chr(tail))= (cur_val/256)%16;
scan_math(nucleus(tail));
}

/*:1165*//*1172:*/
#line 22143 "tex.w"

void append_choices(void)
{tail_append(new_choice());incr(save_ptr);saved(-1)= 0;
push_math(math_choice_group);scan_left_brace();
}

/*:1172*//*1174:*/
#line 22152 "tex.w"

/*1184:*/
#line 22297 "tex.w"

pointer fin_mlist(pointer p)
{pointer q;
if(incompleat_noad!=null)/*1185:*/
#line 22306 "tex.w"

{math_type(denominator(incompleat_noad))= sub_mlist;
info(denominator(incompleat_noad))= link(head);
if(p==null)q= incompleat_noad;
else{q= info(numerator(incompleat_noad));
if(type(q)!=left_noad)confusion(/*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 22311 "tex.w"
);

info(numerator(incompleat_noad))= link(q);
link(q)= incompleat_noad;link(incompleat_noad)= p;
}
}

/*:1185*/
#line 22300 "tex.w"

else{link(tail)= p;q= link(head);
}
pop_nest();return q;
}

/*:1184*/
#line 22153 "tex.w"

void build_choices(void)
{
pointer p;
unsave();p= fin_mlist(null);
switch(saved(-1)){
case 0:display_mlist(tail)= p;break;
case 1:text_mlist(tail)= p;break;
case 2:script_mlist(tail)= p;break;
case 3:{script_script_mlist(tail)= p;decr(save_ptr);return;
}
}
incr(saved(-1));push_math(math_choice_group);scan_left_brace();
}

/*:1174*//*1176:*/
#line 22176 "tex.w"

void sub_sup(void)
{small_number t;
pointer p;
t= empty;p= null;
if(tail!=head)if(scripts_allowed(tail))
{p= supscr(tail)+cur_cmd-sup_mark;
t= math_type(p);
}
if((p==null)||(t!=empty))/*1177:*/
#line 22189 "tex.w"

{tail_append(new_noad());
p= supscr(tail)+cur_cmd-sup_mark;
if(t!=empty)
{if(cur_cmd==sup_mark)
{print_err("Double superscript");

help1("I treat `x^1^2' essentially like `x^1{}^2'.");
}
else{print_err("Double subscript");

help1("I treat `x_1_2' essentially like `x_1{}_2'.");
}
error();
}
}

/*:1177*/
#line 22185 "tex.w"
;
scan_math(p);
}

/*:1176*//*1181:*/
#line 22246 "tex.w"

void math_fraction(void)
{small_number c;
c= cur_chr;
if(incompleat_noad!=null)
/*1183:*/
#line 22278 "tex.w"

{if(c>=delimited_code)
{scan_delimiter(garbage,false);scan_delimiter(garbage,false);
}
if(c%delimited_code==above_code)scan_normal_dimen;
print_err("Ambiguous; you need another { and }");

help3("I'm ignoring this fraction specification, since I don't")
("know whether a construction like `x \\over y \\over z'")
("means `{x \\over y} \\over z' or `x \\over {y \\over z}'.");
error();
}

/*:1183*/
#line 22251 "tex.w"

else{incompleat_noad= get_node(fraction_noad_size);
type(incompleat_noad)= fraction_noad;
subtype(incompleat_noad)= normal;
math_type(numerator(incompleat_noad))= sub_mlist;
info(numerator(incompleat_noad))= link(head);
mem[denominator(incompleat_noad)].hh= empty_field;
mem[left_delimiter(incompleat_noad)].qqqq= null_delimiter;
mem[right_delimiter(incompleat_noad)].qqqq= null_delimiter;
link(head)= null;tail= head;
/*1182:*/
#line 22265 "tex.w"

if(c>=delimited_code)
{scan_delimiter(left_delimiter(incompleat_noad),false);
scan_delimiter(right_delimiter(incompleat_noad),false);
}
switch(c%delimited_code){
case above_code:{scan_normal_dimen;
thickness(incompleat_noad)= cur_val;
}break;
case over_code:thickness(incompleat_noad)= default_code;break;
case atop_code:thickness(incompleat_noad)= 0;
}

/*:1182*/
#line 22261 "tex.w"
;
}
}

/*:1181*//*1191:*/
#line 22361 "tex.w"

void math_left_right(void)
{small_number t;
pointer p;
t= cur_chr;
if((t==right_noad)&&(cur_group!=math_left_group))
/*1192:*/
#line 22381 "tex.w"

{if(cur_group==math_shift_group)
{scan_delimiter(garbage,false);
print_err("Extra ");print_esc(/*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 22384 "tex.w"
);

help1("I'm ignoring a \\right that had no matching \\left.");
error();
}
else off_save();
}

/*:1192*/
#line 22367 "tex.w"

else{p= new_noad();type(p)= t;
scan_delimiter(delimiter(p),false);
if(t==left_noad)
{push_math(math_left_group);link(head)= p;tail= p;
}
else{p= fin_mlist(p);unsave();
tail_append(new_noad());type(tail)= inner_noad;
math_type(nucleus(tail))= sub_mlist;
info(nucleus(tail))= p;
}
}
}

/*:1191*//*1194:*/
#line 22398 "tex.w"

void after_math(void)
{bool l;
bool danger;
int m;
pointer p;
pointer a;
/*1198:*/
#line 22482 "tex.w"

pointer b;
scaled w;
scaled z;
scaled e;
scaled q;
scaled d;
scaled s;
small_number g1,g2;
pointer r;
pointer t;

/*:1198*/
#line 22405 "tex.w"

danger= false;
/*1195:*/
#line 22428 "tex.w"

if((font_params[fam_fnt(2+text_size)]<total_mathsy_params)||
(font_params[fam_fnt(2+script_size)]<total_mathsy_params)||
(font_params[fam_fnt(2+script_script_size)]<total_mathsy_params))
{print_err("Math formula deleted: Insufficient symbol fonts");

help3("Sorry, but I can't typeset math unless \\textfont 2")
("and \\scriptfont 2 and \\scriptscriptfont 2 have all")
("the \\fontdimen values needed in math symbol fonts.");
error();flush_math();danger= true;
}
else if((font_params[fam_fnt(3+text_size)]<total_mathex_params)||
(font_params[fam_fnt(3+script_size)]<total_mathex_params)||
(font_params[fam_fnt(3+script_script_size)]<total_mathex_params))
{print_err("Math formula deleted: Insufficient extension fonts");
help3("Sorry, but I can't typeset math unless \\textfont 3")
("and \\scriptfont 3 and \\scriptscriptfont 3 have all")
("the \\fontdimen values needed in math extension fonts.");
error();flush_math();danger= true;
}

/*:1195*/
#line 22408 "tex.w"
;
m= mode;l= false;p= fin_mlist(null);
if(mode==-m)
{/*1197:*/
#line 22467 "tex.w"

{get_x_token();
if(cur_cmd!=math_shift)
{print_err("Display math should end with $$");

help2("The `$' that I just saw supposedly matches a previous `$$'.")
("So I shall assume that you typed `$$' both times.");
back_error();
}
}

/*:1197*/
#line 22411 "tex.w"
;
cur_mlist= p;cur_style= text_style;mlist_penalties= false;
mlist_to_hlist();a= hpack(link(temp_head),natural);
unsave();decr(save_ptr);
if(saved(0)==1)l= true;
danger= false;
/*1195:*/
#line 22428 "tex.w"

if((font_params[fam_fnt(2+text_size)]<total_mathsy_params)||
(font_params[fam_fnt(2+script_size)]<total_mathsy_params)||
(font_params[fam_fnt(2+script_script_size)]<total_mathsy_params))
{print_err("Math formula deleted: Insufficient symbol fonts");

help3("Sorry, but I can't typeset math unless \\textfont 2")
("and \\scriptfont 2 and \\scriptscriptfont 2 have all")
("the \\fontdimen values needed in math symbol fonts.");
error();flush_math();danger= true;
}
else if((font_params[fam_fnt(3+text_size)]<total_mathex_params)||
(font_params[fam_fnt(3+script_size)]<total_mathex_params)||
(font_params[fam_fnt(3+script_script_size)]<total_mathex_params))
{print_err("Math formula deleted: Insufficient extension fonts");
help3("Sorry, but I can't typeset math unless \\textfont 3")
("and \\scriptfont 3 and \\scriptscriptfont 3 have all")
("the \\fontdimen values needed in math extension fonts.");
error();flush_math();danger= true;
}

/*:1195*/
#line 22418 "tex.w"
;
m= mode;p= fin_mlist(null);
}
else a= null;
if(m<0)/*1196:*/
#line 22455 "tex.w"

{tail_append(new_math(math_surround,before));
cur_mlist= p;cur_style= text_style;mlist_penalties= (mode> 0);mlist_to_hlist();
link(tail)= link(temp_head);
while(link(tail)!=null)tail= link(tail);
tail_append(new_math(math_surround,after));
space_factor= 1000;unsave();
}

/*:1196*/
#line 22422 "tex.w"

else{if(a==null)/*1197:*/
#line 22467 "tex.w"

{get_x_token();
if(cur_cmd!=math_shift)
{print_err("Display math should end with $$");

help2("The `$' that I just saw supposedly matches a previous `$$'.")
("So I shall assume that you typed `$$' both times.");
back_error();
}
}

/*:1197*/
#line 22423 "tex.w"
;
/*1199:*/
#line 22498 "tex.w"

cur_mlist= p;cur_style= display_style;mlist_penalties= false;
mlist_to_hlist();p= link(temp_head);
adjust_tail= adjust_head;b= hpack(p,natural);p= list_ptr(b);
t= adjust_tail;adjust_tail= null;
w= width(b);z= display_width;s= display_indent;
if((a==null)||danger)
{e= 0;q= 0;
}
else{e= width(a);q= e+math_quad(text_size);
}
if(w+q> z)
/*1201:*/
#line 22534 "tex.w"

{if((e!=0)&&((w-total_shrink[normal]+q<=z)||
(total_shrink[fil]!=0)||(total_shrink[fill]!=0)||
(total_shrink[filll]!=0)))
{free_node(b,box_node_size);
b= hpack(p,z-q,exactly);
}
else{e= 0;
if(w> z)
{free_node(b,box_node_size);
b= hpack(p,z,exactly);
}
}
w= width(b);
}

/*:1201*/
#line 22511 "tex.w"
;
/*1202:*/
#line 22558 "tex.w"

d= half(z-w);
if((e> 0)&&(d<2*e))
{d= half(z-w-e);
if(p!=null)if(!is_char_node(p))if(type(p)==glue_node)d= 0;
}

/*:1202*/
#line 22513 "tex.w"
;
/*1203:*/
#line 22571 "tex.w"

tail_append(new_penalty(pre_display_penalty));
if((d+s<=pre_display_size)||l)
{g1= above_display_skip_code;g2= below_display_skip_code;
}
else{g1= above_display_short_skip_code;
g2= below_display_short_skip_code;
}
if(l&&(e==0))
{shift_amount(a)= s;append_to_vlist(a);
tail_append(new_penalty(inf_penalty));
}
else tail_append(new_param_glue(g1))

/*:1203*/
#line 22514 "tex.w"
;
/*1204:*/
#line 22585 "tex.w"

if(e!=0)
{r= new_kern(z-w-e-d);
if(l)
{link(a)= r;link(r)= b;b= a;d= 0;
}
else{link(b)= r;link(r)= a;
}
b= hpack(b,natural);
}
shift_amount(b)= s+d;append_to_vlist(b)

/*:1204*/
#line 22515 "tex.w"
;
/*1205:*/
#line 22597 "tex.w"

if((a!=null)&&(e==0)&&!l)
{tail_append(new_penalty(inf_penalty));
shift_amount(a)= s+z-width(a);
append_to_vlist(a);
g2= 0;
}
if(t!=adjust_head)
{link(tail)= link(adjust_head);tail= t;
}
tail_append(new_penalty(post_display_penalty));
if(g2> 0)tail_append(new_param_glue(g2))

/*:1205*/
#line 22516 "tex.w"
;
resume_after_display()

/*:1199*/
#line 22424 "tex.w"
;
}
}

/*:1194*//*1200:*/
#line 22519 "tex.w"

void resume_after_display(void)
{if(cur_group!=math_shift_group)confusion(/*1742:*/
#line 26122 "tex.w"
617
/*:1742*/
#line 22521 "tex.w"
);

unsave();prev_graf= prev_graf+3;
push_nest();mode= hmode;space_factor= 1000;set_cur_lang;clang= cur_lang;
prev_graf= (norm_min(left_hyphen_min)*0100+norm_min(right_hyphen_min))
*0200000+cur_lang;
/*443:*/
#line 8804 "tex.w"

{get_x_token();if(cur_cmd!=spacer)back_input();
}

/*:443*/
#line 22527 "tex.w"
;
if(nest_ptr==1)build_page();
}

/*:1200*//*1211:*/
#line 22716 "tex.w"

/*1215:*/
#line 22781 "tex.w"

void get_r_token(void)
{
restart:do{get_token();
}while(!(cur_tok!=space_token));
if((cur_cs==0)||(cur_cs> frozen_control_sequence))
{print_err("Missing control sequence inserted");

help5("Please don't say `\\def cs{...}', say `\\def\\cs{...}'.")
("I've inserted an inaccessible control sequence so that your")
("definition will be completed without mixing me up too badly.")
("You can recover graciously from this error, if you're")
("careful; see exercise 27.2 in The TeXbook.");

if(cur_cs==0)back_input();
cur_tok= cs_token_flag+frozen_protection;ins_error();goto restart;
}
}

/*:1215*//*1229:*/
#line 22992 "tex.w"

void trap_zero_glue(void)
{if((width(cur_val)==0)&&(stretch(cur_val)==0)&&(shrink(cur_val)==0))
{add_glue_ref(zero_glue);
delete_glue_ref(cur_val);cur_val= zero_glue;
}
}

/*:1229*//*1236:*/
#line 23072 "tex.w"

void do_register_command(small_number a)
{
pointer l,q,r,s;
uint8_t p;
q= cur_cmd;
/*1237:*/
#line 23101 "tex.w"

{if(q!=register)
{get_x_token();
if((cur_cmd>=assign_int)&&(cur_cmd<=assign_mu_glue))
{l= cur_chr;p= cur_cmd-assign_int;goto found;
}
if(cur_cmd!=register)
{print_err("You can't use `");print_cmd_chr(cur_cmd,cur_chr);

print_str("' after ");print_cmd_chr(q,0);
help1("I'm forgetting what you said and not changing anything.");
error();return;
}
}
p= cur_chr;scan_eight_bit_int();
switch(p){
case int_val:l= cur_val+count_base;break;
case dimen_val:l= cur_val+scaled_base;break;
case glue_val:l= cur_val+skip_base;break;
case mu_val:l= cur_val+mu_skip_base;
}
}
found:

/*:1237*/
#line 23078 "tex.w"
;
if(q==register)scan_optional_equals();
else if(scan_keyword(/*1761:*/
#line 26179 "tex.w"
636
/*:1761*/
#line 23080 "tex.w"
))do_nothing;

arith_error= false;
if(q<multiply)/*1238:*/
#line 23125 "tex.w"

if(p<glue_val)
{if(p==int_val)scan_int();else scan_normal_dimen;
if(q==advance)cur_val= cur_val+eqtb[l].i;
}
else{scan_glue(p);
if(q==advance)/*1239:*/
#line 23134 "tex.w"

{q= new_spec(cur_val);r= equiv(l);
delete_glue_ref(cur_val);
width(q)= width(q)+width(r);
if(stretch(q)==0)stretch_order(q)= normal;
if(stretch_order(q)==stretch_order(r))stretch(q)= stretch(q)+stretch(r);
else if((stretch_order(q)<stretch_order(r))&&(stretch(r)!=0))
{stretch(q)= stretch(r);stretch_order(q)= stretch_order(r);
}
if(shrink(q)==0)shrink_order(q)= normal;
if(shrink_order(q)==shrink_order(r))shrink(q)= shrink(q)+shrink(r);
else if((shrink_order(q)<shrink_order(r))&&(shrink(r)!=0))
{shrink(q)= shrink(r);shrink_order(q)= shrink_order(r);
}
cur_val= q;
}

/*:1239*/
#line 23131 "tex.w"
;
}

/*:1238*/
#line 23083 "tex.w"

else/*1240:*/
#line 23151 "tex.w"

{scan_int();
if(p<glue_val)
if(q==multiply)
if(p==int_val)cur_val= mult_integers(eqtb[l].i,cur_val);
else cur_val= nx_plus_y(eqtb[l].i,cur_val,0);
else cur_val= x_over_n(eqtb[l].i,cur_val);
else{s= equiv(l);r= new_spec(s);
if(q==multiply)
{width(r)= nx_plus_y(width(s),cur_val,0);
stretch(r)= nx_plus_y(stretch(s),cur_val,0);
shrink(r)= nx_plus_y(shrink(s),cur_val,0);
}
else{width(r)= x_over_n(width(s),cur_val);
stretch(r)= x_over_n(stretch(s),cur_val);
shrink(r)= x_over_n(shrink(s),cur_val);
}
cur_val= r;
}
}

/*:1240*/
#line 23084 "tex.w"
;
if(arith_error)
{print_err("Arithmetic overflow");

help2("I can't carry out that multiplication or division,")
("since the result is out of range.");
if(p>=glue_val)delete_glue_ref(cur_val);
error();return;
}
if(p<glue_val)word_define(l,cur_val);
else{trap_zero_glue();define(l,glue_ref,cur_val);
}
}

/*:1236*//*1243:*/
#line 23203 "tex.w"

void alter_aux(void)
{halfword c;
if(cur_chr!=abs(mode))report_illegal_case();
else{c= cur_chr;scan_optional_equals();
if(c==vmode)
{scan_normal_dimen;prev_depth= cur_val;
}
else{scan_int();
if((cur_val<=0)||(cur_val> 32767))
{print_err("Bad space factor");

help1("I allow only values in the range 1..32767 here.");
int_error(cur_val);
}
else space_factor= cur_val;
}
}
}

/*:1243*//*1244:*/
#line 23223 "tex.w"

void alter_prev_graf(void)
{uint8_t p;
nest[nest_ptr]= cur_list;p= nest_ptr;
while(abs(nest[p].mode_field)!=vmode)decr(p);
scan_optional_equals();scan_int();
if(cur_val<0)
{print_err("Bad ");print_esc(/*1554:*/
#line 25558 "tex.w"
429
/*:1554*/
#line 23230 "tex.w"
);

help1("I allow only nonnegative values here.");
int_error(cur_val);
}
else{nest[p].pg_field= cur_val;cur_list= nest[nest_ptr];
}
}

/*:1244*//*1245:*/
#line 23239 "tex.w"

void alter_page_so_far(void)
{uint8_t c;
c= cur_chr;scan_optional_equals();scan_normal_dimen;
page_so_far[c]= cur_val;
}

/*:1245*//*1246:*/
#line 23246 "tex.w"

void alter_integer(void)
{uint8_t c;
c= cur_chr;scan_optional_equals();scan_int();
if(c==0)dead_cycles= cur_val;
else insert_penalties= cur_val;
}

/*:1246*//*1247:*/
#line 23254 "tex.w"

void alter_box_dimen(void)
{small_number c;
eight_bits b;
c= cur_chr;scan_eight_bit_int();b= cur_val;scan_optional_equals();
scan_normal_dimen;
if(box(b)!=null)mem[box(b)+c].sc= cur_val;
}

/*:1247*//*1257:*/
#line 23340 "tex.w"

void new_font(small_number a)
{
pointer u;
scaled s;
int f;
str_number t;
uint8_t old_setting;
str_number flushable_string;
if(job_name==0)open_log_file();


get_r_token();u= cur_cs;
if(u>=hash_base)t= text(u);
else if(u>=single_base)
if(u==null_cs)t= /*1764:*/
#line 26188 "tex.w"
639
/*:1764*/
#line 23355 "tex.w"
;else t= u-single_base;
else{old_setting= selector;selector= new_string;
print_str("FONT");print(u-active_base);selector= old_setting;

str_room(1);t= make_string();
}
define(u,set_font,null_font);scan_optional_equals();scan_file_name();
/*1258:*/
#line 23369 "tex.w"

name_in_progress= true;
if(scan_keyword(/*1765:*/
#line 26191 "tex.w"
640
/*:1765*/
#line 23371 "tex.w"
))/*1259:*/
#line 23386 "tex.w"

{scan_normal_dimen;s= cur_val;
if((s<=0)||(s>=01000000000))
{print_err("Improper `at' size (");
print_scaled(s);print_str("pt), replaced by 10pt");

help2("I can only handle fonts at positive sizes that are")
("less than 2048pt, so I've changed what you said to 10pt.");
error();s= 10*unity;
}
}

/*:1259*/
#line 23371 "tex.w"


else if(scan_keyword(/*1766:*/
#line 26194 "tex.w"
641
/*:1766*/
#line 23373 "tex.w"
))

{scan_int();s= -cur_val;
if((cur_val<=0)||(cur_val> 32768))
{print_err("Illegal magnification has been changed to 1000");

help1("The magnification ratio must be between 1 and 32768.");
int_error(cur_val);s= -1000;
}
}
else s= -1000;
name_in_progress= false

/*:1258*/
#line 23362 "tex.w"
;
/*1260:*/
#line 23402 "tex.w"

flushable_string= str_ptr-1;
for(f= font_base+1;f<=font_ptr;f++)
if(str_eq_str(font_name[f],cur_name)&&str_eq_str(font_area[f],cur_area))
{if(cur_name==flushable_string)
{flush_string;cur_name= font_name[f];
}
if(s> 0)
{if(s==font_size[f])goto common_ending;
}
else if(font_size[f]==xn_over_d(font_dsize[f],-s,1000))
goto common_ending;
}

/*:1260*/
#line 23364 "tex.w"
;
f= read_font_info(u,cur_name,cur_area,s);
common_ending:equiv(u)= f;eqtb[font_id_base+f]= eqtb[u];font_id_text(f)= t;
}

/*:1257*//*1265:*/
#line 23445 "tex.w"

void new_interaction(void)
{print_ln();
interaction= cur_chr;
/*75:*/
#line 1788 "tex.w"

if(interaction==batch_mode)selector= no_print;else selector= term_only

/*:75*/
#line 23449 "tex.w"
;
if(log_opened)selector= selector+2;
}

/*:1265*/
#line 22717 "tex.w"

void prefixed_command(void)
{
small_number a;
internal_font_number f;
int j;
font_index k;
pointer p,q;
int n;
bool e;
a= 0;
while(cur_cmd==prefix)
{if(!odd(a/cur_chr))a= a+cur_chr;
/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 22730 "tex.w"
;
if(cur_cmd<=max_non_prefixed_command)
/*1212:*/
#line 22744 "tex.w"

{print_err("You can't use a prefix with `");

print_cmd_chr(cur_cmd,cur_chr);print_char('\'');
help1("I'll pretend you didn't say \\long or \\outer or \\global.");
back_error();return;
}

/*:1212*/
#line 22732 "tex.w"
;
}
/*1213:*/
#line 22752 "tex.w"

if((cur_cmd!=def)&&(a%4!=0))
{print_err("You can't use `");print_esc(/*1743:*/
#line 26125 "tex.w"
618
/*:1743*/
#line 22754 "tex.w"
);print_str("' or `");
print_esc(/*1744:*/
#line 26128 "tex.w"
619
/*:1744*/
#line 22755 "tex.w"
);print_str("' with `");

print_cmd_chr(cur_cmd,cur_chr);print_char('\'');
help1("I'll pretend you didn't say \\long or \\outer here.");
error();
}

/*:1213*/
#line 22734 "tex.w"
;
/*1214:*/
#line 22769 "tex.w"

if(global_defs!=0)
if(global_defs<0)
{if(global)a= a-4;
}
else{if(!global)a= a+4;
}

/*:1214*/
#line 22735 "tex.w"
;
switch(cur_cmd){
/*1217:*/
#line 22806 "tex.w"

case set_font:define(cur_font_loc,data,cur_chr);break;

/*:1217*//*1218:*/
#line 22813 "tex.w"

case def:{if(odd(cur_chr)&&!global&&(global_defs>=0))a= a+4;
e= (cur_chr>=2);get_r_token();p= cur_cs;
q= scan_toks(true,e);define(p,call+(a%4),def_ref);
}break;

/*:1218*//*1221:*/
#line 22830 "tex.w"

case let:{n= cur_chr;
get_r_token();p= cur_cs;
if(n==normal)
{do{get_token();
}while(!(cur_cmd!=spacer));
if(cur_tok==other_token+'=')
{get_token();
if(cur_cmd==spacer)get_token();
}
}
else{get_token();q= cur_tok;get_token();back_input();
cur_tok= q;back_input();
}
if(cur_cmd>=call)add_token_ref(cur_chr);
define(p,cur_cmd,cur_chr);
}break;

/*:1221*//*1224:*/
#line 22899 "tex.w"

case shorthand_def:{n= cur_chr;get_r_token();p= cur_cs;define(p,relax,256);
scan_optional_equals();
switch(n){
case char_def_code:{scan_char_num();define(p,char_given,cur_val);
}break;
case math_char_def_code:{scan_fifteen_bit_int();define(p,math_given,cur_val);
}break;
default:{scan_eight_bit_int();
switch(n){
case count_def_code:define(p,assign_int,count_base+cur_val);break;
case dimen_def_code:define(p,assign_dimen,scaled_base+cur_val);break;
case skip_def_code:define(p,assign_glue,skip_base+cur_val);break;
case mu_skip_def_code:define(p,assign_mu_glue,mu_skip_base+cur_val);break;
case toks_def_code:define(p,assign_toks,toks_base+cur_val);
}
}
}
}break;

/*:1224*//*1225:*/
#line 22919 "tex.w"

case read_to_cs:{scan_int();n= cur_val;
if(!scan_keyword(/*1642:*/
#line 25822 "tex.w"
517
/*:1642*/
#line 22921 "tex.w"
))

{print_err("Missing `to' inserted");

help2("You should have said `\\read<number> to \\cs'.")
("I'm going to look for the \\cs now.");error();
}
get_r_token();
p= cur_cs;read_toks(n,p);define(p,call,cur_val);
}break;

/*:1225*//*1226:*/
#line 22936 "tex.w"

case toks_register:case assign_toks:{q= cur_cs;
if(cur_cmd==toks_register)
{scan_eight_bit_int();p= toks_base+cur_val;
}
else p= cur_chr;
scan_optional_equals();
/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 22943 "tex.w"
;
if(cur_cmd!=left_brace)/*1227:*/
#line 22960 "tex.w"

{if(cur_cmd==toks_register)
{scan_eight_bit_int();cur_cmd= assign_toks;cur_chr= toks_base+cur_val;
}
if(cur_cmd==assign_toks)
{q= equiv(cur_chr);
if(q==null)define(p,undefined_cs,null);
else{add_token_ref(q);define(p,call,q);
}
goto done;
}
}

/*:1227*/
#line 22945 "tex.w"
;
back_input();cur_cs= q;q= scan_toks(false,false);
if(link(def_ref)==null)
{define(p,undefined_cs,null);free_avail(def_ref);
}
else{if(p==output_routine_loc)
{link(q)= get_avail();q= link(q);
info(q)= right_brace_token+'}';
q= get_avail();info(q)= left_brace_token+'{';
link(q)= link(def_ref);link(def_ref)= q;
}
define(p,call,def_ref);
}
}break;

/*:1226*//*1228:*/
#line 22975 "tex.w"

case assign_int:{p= cur_chr;scan_optional_equals();scan_int();
word_define(p,cur_val);
}break;
case assign_dimen:{p= cur_chr;scan_optional_equals();
scan_normal_dimen;word_define(p,cur_val);
}break;
case assign_glue:case assign_mu_glue:{p= cur_chr;n= cur_cmd;scan_optional_equals();
if(n==assign_mu_glue)scan_glue(mu_val);else scan_glue(glue_val);
trap_zero_glue();
define(p,glue_ref,cur_val);
}break;

/*:1228*//*1232:*/
#line 23035 "tex.w"

case def_code:{/*1233:*/
#line 23053 "tex.w"

if(cur_chr==cat_code_base)n= max_char_code;
else if(cur_chr==math_code_base)n= 0100000;
else if(cur_chr==sf_code_base)n= 077777;
else if(cur_chr==del_code_base)n= 077777777;
else n= 255

/*:1233*/
#line 23036 "tex.w"
;
p= cur_chr;scan_char_num();p= p+cur_val;scan_optional_equals();
scan_int();
if(((cur_val<0)&&(p<del_code_base))||(cur_val> n))
{print_err("Invalid code (");print_int(cur_val);

if(p<del_code_base)print_str("), should be in the range 0..");
else print_str("), should be at most ");
print_int(n);
help1("I'm going to use 0 instead of that illegal code value.");
error();cur_val= 0;
}
if(p<math_code_base)define(p,data,cur_val);
else if(p<del_code_base)define(p,data,hi(cur_val));
else word_define(p,cur_val);
}break;

/*:1232*//*1234:*/
#line 23060 "tex.w"

case def_family:{p= cur_chr;scan_four_bit_int();p= p+cur_val;
scan_optional_equals();scan_font_ident();define(p,data,cur_val);
}break;

/*:1234*//*1235:*/
#line 23067 "tex.w"

case register:case advance:case multiply:case divide:do_register_command(a);break;

/*:1235*//*1241:*/
#line 23176 "tex.w"

case set_box:{scan_eight_bit_int();
if(global)n= 256+cur_val;else n= cur_val;
scan_optional_equals();
if(set_box_allowed)scan_box(box_flag+n);
else{print_err("Improper ");print_esc(/*1558:*/
#line 25570 "tex.w"
433
/*:1558*/
#line 23181 "tex.w"
);

help2("Sorry, \\setbox is not allowed after \\halign in a display,")
("or between \\accent and an accented character.");error();
}
}break;

/*:1241*//*1242:*/
#line 23196 "tex.w"

case set_aux:alter_aux();break;
case set_prev_graf:alter_prev_graf();break;
case set_page_dimen:alter_page_so_far();break;
case set_page_int:alter_integer();break;
case set_box_dimen:alter_box_dimen();break;

/*:1242*//*1248:*/
#line 23265 "tex.w"

case set_shape:{scan_optional_equals();scan_int();n= cur_val;
if(n<=0)p= null;
else{p= get_node(2*n+1);info(p)= n;
for(j= 1;j<=n;j++)
{scan_normal_dimen;
mem[p+2*j-1].sc= cur_val;
scan_normal_dimen;
mem[p+2*j].sc= cur_val;
}
}
define(par_shape_loc,shape_ref,p);
}break;

/*:1248*//*1252:*/
#line 23298 "tex.w"

case hyph_data:if(cur_chr==1)
{
#ifdef INIT
new_patterns();goto done;
#endif
print_err("Patterns can be loaded only by INITEX");

help0;error();
do{get_token();}while(!(cur_cmd==right_brace));
return;
}
else{new_hyph_exceptions();goto done;
}break;

/*:1252*//*1253:*/
#line 23316 "tex.w"

case assign_font_dimen:{find_font_dimen(true);k= cur_val;
scan_optional_equals();scan_normal_dimen;font_info[k].sc= cur_val;
}break;
case assign_font_int:{n= cur_chr;scan_font_ident();f= cur_val;
scan_optional_equals();scan_int();
if(n==0)hyphen_char[f]= cur_val;else skew_char[f]= cur_val;
}break;

/*:1253*//*1256:*/
#line 23337 "tex.w"

case def_font:new_font(a);break;

/*:1256*//*1264:*/
#line 23442 "tex.w"

case set_interaction:new_interaction();break;

/*:1264*/
#line 22737 "tex.w"

default:confusion(/*1750:*/
#line 26146 "tex.w"
625
/*:1750*/
#line 22738 "tex.w"
);

}
done:/*1269:*/
#line 23467 "tex.w"

if(after_token!=0)
{cur_tok= after_token;back_input();after_token= 0;
}

/*:1269*/
#line 22741 "tex.w"
;
}

/*:1211*//*1270:*/
#line 23475 "tex.w"

void do_assignments(void)
{
loop{/*404:*/
#line 8257 "tex.w"

do{get_x_token();
}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax)))

/*:404*/
#line 23478 "tex.w"
;
if(cur_cmd<=max_non_prefixed_command)return;
set_box_allowed= false;prefixed_command();set_box_allowed= true;
}
}

/*:1270*//*1275:*/
#line 23503 "tex.w"

void open_or_close_in(void)
{uint8_t c;
uint8_t n;
c= cur_chr;scan_four_bit_int();n= cur_val;
if(read_open[n]!=closed)
{a_close(&read_file[n]);read_open[n]= closed;
}
if(c!=0)
{scan_optional_equals();scan_file_name();
if(cur_ext==empty_string)cur_ext= /*1637:*/
#line 25807 "tex.w"
512
/*:1637*/
#line 23513 "tex.w"
;
pack_cur_name;
if(a_open_in(&read_file[n]))read_open[n]= just_open;
}
}

/*:1275*//*1279:*/
#line 23535 "tex.w"

void issue_message(void)
{uint8_t old_setting;
uint8_t c;
str_number s;
c= cur_chr;link(garbage)= scan_toks(false,true);
old_setting= selector;selector= new_string;
token_show(def_ref);selector= old_setting;
flush_list(def_ref);
str_room(1);s= make_string();
if(c==0)/*1280:*/
#line 23550 "tex.w"

{if(term_offset+length(s)> max_print_line-2)print_ln();
else if((term_offset> 0)||(file_offset> 0))print_char(' ');
slow_print(s);update_terminal;
}

/*:1280*/
#line 23545 "tex.w"

else/*1283:*/
#line 23565 "tex.w"

{print_err("");slow_print(s);
if(err_help!=null)use_err_help= true;
else if(long_help_seen)help1("(That was another \\errmessage.)")
else{if(interaction<error_stop_mode)long_help_seen= true;
help4("This error message was generated by an \\errmessage")
("command, so I can't give any explicit help.")
("Pretend that you're Hercule Poirot: Examine all clues,")

("and deduce the truth by order and method.");
}
error();use_err_help= false;
}

/*:1283*/
#line 23546 "tex.w"
;
flush_string;
}

/*:1279*//*1288:*/
#line 23602 "tex.w"

void shift_case(void)
{pointer b;
pointer p;
halfword t;
eight_bits c;
b= cur_chr;p= scan_toks(false,false);p= link(def_ref);
while(p!=null)
{/*1289:*/
#line 23621 "tex.w"

t= info(p);
if(t<cs_token_flag+single_base)
{c= t%256;
if(equiv(b+c)!=0)info(p)= t-c+equiv(b+c);
}

/*:1289*/
#line 23610 "tex.w"
;
p= link(p);
}
back_list(link(def_ref));free_avail(def_ref);
}

/*:1288*//*1293:*/
#line 23657 "tex.w"

void show_whatever(void)
{
pointer p;
switch(cur_chr){
case show_lists:{begin_diagnostic();show_activities();
}break;
case show_box_code:/*1296:*/
#line 23707 "tex.w"

{scan_eight_bit_int();begin_diagnostic();
print_nl("> \\box");print_int(cur_val);print_char('=');
if(box(cur_val)==null)print_str("void");
else show_box(box(cur_val));
}

/*:1296*/
#line 23664 "tex.w"
break;
case show_code:/*1294:*/
#line 23688 "tex.w"

{get_token();
if(interaction==error_stop_mode)wake_up_terminal;
print_nl("> ");
if(cur_cs!=0)
{sprint_cs(cur_cs);print_char('=');
}
print_meaning();goto common_ending;
}

/*:1294*/
#line 23665 "tex.w"

default:/*1297:*/
#line 23714 "tex.w"

{p= the_toks();
if(interaction==error_stop_mode)wake_up_terminal;
print_nl("> ");token_show(temp_head);
flush_list(link(temp_head));goto common_ending;
}

/*:1297*/
#line 23666 "tex.w"

}
/*1298:*/
#line 23721 "tex.w"

end_diagnostic(true);print_err("OK");

if(selector==term_and_log)if(tracing_online<=0)
{selector= term_only;print_str(" (see the transcript file)");
selector= term_and_log;
}

/*:1298*/
#line 23668 "tex.w"
;
common_ending:if(interaction<error_stop_mode)
{help0;decr(error_count);
}
else if(tracing_online> 0)
{
help3("This isn't an error message; I'm just \\showing something.")
("Type `I\\show...' to show more (e.g., \\show\\cs,")
("\\showthe\\count10, \\showbox255, \\showlists).");
}
else{
help5("This isn't an error message; I'm just \\showing something.")
("Type `I\\show...' to show more (e.g., \\show\\cs,")
("\\showthe\\count10, \\showbox255, \\showlists).")
("And type `I\\tracingonline=1\\show...' to show boxes and")
("lists on your terminal as well as in the transcript file.");
}
error();
}

/*:1293*//*1302:*/
#line 23755 "tex.w"

#ifdef INIT
void store_fmt_file(void)
{
int j,k,l;
pointer p,q;
int x;
four_quarters w;
/*1304:*/
#line 23812 "tex.w"

if(save_ptr!=0)
{print_err("You can't dump inside a group");

help1("`{...\\dump}' is a no-no.");succumb;
}

/*:1304*/
#line 23763 "tex.w"
;
/*1328:*/
#line 24208 "tex.w"

selector= new_string;
print_str(" (preloaded format=");print(job_name);print_char(' ');
print_int(year);print_char('.');
print_int(month);print_char('.');print_int(day);print_char(')');
if(interaction==batch_mode)selector= log_only;
else selector= term_and_log;
str_room(1);
format_ident= make_string();
pack_job_name(format_extension);
while(!w_open_out(&fmt_file))
prompt_file_name("format file name",format_extension);
print_nl("Beginning to dump on file ");

slow_print(w_make_name_string(&fmt_file));flush_string;
print_nl("");slow_print(format_ident)

/*:1328*/
#line 23765 "tex.w"
;
/*1307:*/
#line 23849 "tex.w"

dump_int(0);
dump_int(mem_bot);
dump_int(mem_top);
dump_int(eqtb_size);
dump_int(hash_prime);
dump_int(hyph_size)

/*:1307*/
#line 23766 "tex.w"
;
/*1309:*/
#line 23882 "tex.w"

dump_int(pool_ptr);
dump_int(str_ptr);
for(k= 0;k<=str_ptr;k++)dump_int(str_start[k]);
k= 0;
while(k+4<pool_ptr)
{dump_four_ASCII;k= k+4;
}
k= pool_ptr-4;dump_four_ASCII;
print_ln();print_int(str_ptr);print_str(" strings of total length ");
print_int(pool_ptr)

/*:1309*/
#line 23767 "tex.w"
;
/*1311:*/
#line 23917 "tex.w"

sort_avail();var_used= 0;
dump_int(lo_mem_max);dump_int(rover);
p= mem_bot;q= rover;x= 0;
do{for(k= p;k<=q+1;k++)dump_wd(mem[k]);
x= x+q+2-p;var_used= var_used+q-p;
p= q+node_size(q);q= rlink(q);
}while(!(q==rover));
var_used= var_used+lo_mem_max-p;dyn_used= mem_end+1-hi_mem_min;
for(k= p;k<=lo_mem_max;k++)dump_wd(mem[k]);
x= x+lo_mem_max+1-p;
dump_int(hi_mem_min);dump_int(avail);
for(k= hi_mem_min;k<=mem_end;k++)dump_wd(mem[k]);
x= x+mem_end+1-hi_mem_min;
p= avail;
while(p!=null)
{decr(dyn_used);p= link(p);
}
dump_int(var_used);dump_int(dyn_used);
print_ln();print_int(x);
print_str(" memory locations dumped; current usage is ");
print_int(var_used);print_char('&');print_int(dyn_used)

/*:1311*/
#line 23768 "tex.w"
;
/*1313:*/
#line 23962 "tex.w"

/*1315:*/
#line 23980 "tex.w"

k= active_base;
do{j= k;
while(j<int_base-1)
{if((equiv(j)==equiv(j+1))&&(eq_type(j)==eq_type(j+1))&&
(eq_level(j)==eq_level(j+1)))goto found1;
incr(j);
}
l= int_base;goto done1;
found1:incr(j);l= j;
while(j<int_base-1)
{if((equiv(j)!=equiv(j+1))||(eq_type(j)!=eq_type(j+1))||
(eq_level(j)!=eq_level(j+1)))goto done1;
incr(j);
}
done1:dump_int(l-k);
while(k<l)
{dump_wd(eqtb[k]);incr(k);
}
k= j+1;dump_int(k-l);
}while(!(k==int_base))

/*:1315*/
#line 23963 "tex.w"
;
/*1316:*/
#line 24002 "tex.w"

do{j= k;
while(j<eqtb_size)
{if(eqtb[j].i==eqtb[j+1].i)goto found2;
incr(j);
}
l= eqtb_size+1;goto done2;
found2:incr(j);l= j;
while(j<eqtb_size)
{if(eqtb[j].i!=eqtb[j+1].i)goto done2;
incr(j);
}
done2:dump_int(l-k);
while(k<l)
{dump_wd(eqtb[k]);incr(k);
}
k= j+1;dump_int(k-l);
}while(!(k> eqtb_size))

/*:1316*/
#line 23964 "tex.w"
;
dump_int(par_loc);dump_int(write_loc);
/*1318:*/
#line 24038 "tex.w"

dump_int(hash_used);cs_count= frozen_control_sequence-1-hash_used;
for(p= hash_base;p<=hash_used;p++)if(text(p)!=0)
{dump_int(p);dump_hh(hash[p]);incr(cs_count);
}
for(p= hash_used+1;p<=undefined_control_sequence-1;p++)dump_hh(hash[p]);
dump_int(cs_count);
print_ln();print_int(cs_count);print_str(" multiletter control sequences")

/*:1318*/
#line 23966 "tex.w"


/*:1313*/
#line 23769 "tex.w"
;
/*1320:*/
#line 24054 "tex.w"

dump_int(fmem_ptr);
for(k= 0;k<=fmem_ptr-1;k++)dump_wd(font_info[k]);
dump_int(font_ptr);
for(k= null_font;k<=font_ptr;k++)
/*1322:*/
#line 24071 "tex.w"

{dump_qqqq(font_check[k]);
dump_int(font_size[k]);
dump_int(font_dsize[k]);
dump_int(font_params[k]);
dump_int(hyphen_char[k]);
dump_int(skew_char[k]);
dump_int(font_name[k]);
dump_int(font_area[k]);
dump_int(font_bc[k]);
dump_int(font_ec[k]);
dump_int(char_base[k]);
dump_int(width_base[k]);
dump_int(height_base[k]);
dump_int(depth_base[k]);
dump_int(italic_base[k]);
dump_int(lig_kern_base[k]);
dump_int(kern_base[k]);
dump_int(exten_base[k]);
dump_int(param_base[k]);
dump_int(font_glue[k]);
dump_int(bchar_label[k]);
dump_int(font_bchar[k]);
dump_int(font_false_bchar[k]);
print_nl("\\font");print_esc(font_id_text(k));print_char('=');
print_file_name(font_name[k],font_area[k],empty_string);
if(font_size[k]!=font_dsize[k])
{print_str(" at ");print_scaled(font_size[k]);print_str("pt");
}
}

/*:1322*/
#line 24059 "tex.w"
;
print_ln();print_int(fmem_ptr-7);print_str(" words of font info for ");
print_int(font_ptr-font_base);print_str(" preloaded font");
if(font_ptr!=font_base+1)print_char('s')

/*:1320*/
#line 23770 "tex.w"
;
/*1324:*/
#line 24128 "tex.w"

dump_int(hyph_count);
for(k= 0;k<=hyph_size;k++)if(hyph_word[k]!=0)
{dump_int(k);dump_int(hyph_word[k]);dump_int(hyph_list[k]);
}
print_ln();print_int(hyph_count);print_str(" hyphenation exception");
if(hyph_count!=1)print_char('s');
if(trie_not_ready)init_trie();
dump_int(trie_max);
for(k= 0;k<=trie_max;k++)dump_hh(trie[k]);
dump_int(trie_op_ptr);
for(k= 1;k<=trie_op_ptr;k++)
{dump_int(hyf_distance[k]);
dump_int(hyf_num[k]);
dump_int(hyf_next[k]);
}
print_nl("Hyphenation trie of length ");print_int(trie_max);

print_str(" has ");print_int(trie_op_ptr);print_str(" op");
if(trie_op_ptr!=1)print_char('s');
print_str(" out of ");print_int(trie_op_size);
for(k= 255;k>=0;k--)if(trie_used[k]> min_quarterword)
{print_nl("  ");print_int(qo(trie_used[k]));
print_str(" for language ");print_int(k);
dump_int(k);dump_int(qo(trie_used[k]));
}

/*:1324*/
#line 23771 "tex.w"
;
/*1326:*/
#line 24198 "tex.w"

dump_int(interaction);dump_int(format_ident);dump_int(69069);
tracing_stats= 0

/*:1326*/
#line 23772 "tex.w"
;
/*1329:*/
#line 24225 "tex.w"

w_close(&fmt_file)

/*:1329*/
#line 23773 "tex.w"
;
}
#endif

/*:1302*//*1348:*/
#line 24663 "tex.w"

/*1349:*/
#line 24684 "tex.w"

void new_whatsit(small_number s,small_number w)
{pointer p;
p= get_node(w);type(p)= whatsit_node;subtype(p)= s;
link(tail)= p;tail= p;
}

/*:1349*//*1350:*/
#line 24694 "tex.w"

void new_write_whatsit(small_number w)
{new_whatsit(cur_chr,w);
if(w!=write_node_size)scan_four_bit_int();
else{scan_int();
if(cur_val<0)cur_val= 17;
else if(cur_val> 15)cur_val= 16;
}
write_stream(tail)= cur_val;
}

/*:1350*/
#line 24664 "tex.w"

void do_extension(void)
{int k;
pointer p;
switch(cur_chr){
case open_node:/*1351:*/
#line 24705 "tex.w"

{new_write_whatsit(open_node_size);
scan_optional_equals();scan_file_name();
open_name(tail)= cur_name;open_area(tail)= cur_area;open_ext(tail)= cur_ext;
}

/*:1351*/
#line 24669 "tex.w"
break;
case write_node:/*1352:*/
#line 24715 "tex.w"

{k= cur_cs;new_write_whatsit(write_node_size);
cur_cs= k;p= scan_toks(false,false);write_tokens(tail)= def_ref;
}

/*:1352*/
#line 24670 "tex.w"
break;
case close_node:/*1353:*/
#line 24720 "tex.w"

{new_write_whatsit(write_node_size);write_tokens(tail)= null;
}

/*:1353*/
#line 24671 "tex.w"
break;
case special_node:/*1354:*/
#line 24727 "tex.w"

{new_whatsit(special_node,write_node_size);write_stream(tail)= null;
p= scan_toks(false,true);write_tokens(tail)= def_ref;
}

/*:1354*/
#line 24672 "tex.w"
break;
case immediate_code:/*1375:*/
#line 24950 "tex.w"

{get_x_token();
if((cur_cmd==extension)&&(cur_chr<=close_node))
{p= tail;do_extension();
out_what(tail);
flush_node_list(tail);tail= p;link(p)= null;
}
else back_input();
}

/*:1375*/
#line 24673 "tex.w"
break;
case set_language_code:/*1377:*/
#line 24978 "tex.w"

if(abs(mode)!=hmode)report_illegal_case();
else{new_whatsit(language_node,small_node_size);
scan_int();
if(cur_val<=0)clang= 0;
else if(cur_val> 255)clang= 0;
else clang= cur_val;
what_lang(tail)= clang;
what_lhm(tail)= norm_min(left_hyphen_min);
what_rhm(tail)= norm_min(right_hyphen_min);
}

/*:1377*/
#line 24674 "tex.w"
break;
default:confusion(/*1788:*/
#line 26260 "tex.w"
663
/*:1788*/
#line 24675 "tex.w"
);

}
}

/*:1348*//*1376:*/
#line 24964 "tex.w"

void fix_language(void)
{ASCII_code l;
if(language<=0)l= 0;
else if(language> 255)l= 0;
else l= language;
if(l!=clang)
{new_whatsit(language_node,small_node_size);
what_lang(tail)= l;clang= l;
what_lhm(tail)= norm_min(left_hyphen_min);
what_rhm(tail)= norm_min(right_hyphen_min);
}
}

/*:1376*/
#line 20035 "tex.w"

/*1068:*/
#line 20717 "tex.w"

void handle_right_brace(void)
{pointer p,q;
scaled d;
int f;
switch(cur_group){
case simple_group:unsave();break;
case bottom_level:{print_err("Too many }'s");

help2("You've closed more groups than you opened.")
("Such booboos are generally harmless, so keep going.");error();
}break;
case semi_simple_group:case math_shift_group:case math_left_group:extra_right_brace();break;
/*1085:*/
#line 21055 "tex.w"

case hbox_group:package(0);break;
case adjusted_hbox_group:{adjust_tail= adjust_head;package(0);
}break;
case vbox_group:{end_graf();package(0);
}break;
case vtop_group:{end_graf();package(vtop_code);
}break;

/*:1085*//*1100:*/
#line 21212 "tex.w"

case insert_group:{end_graf();q= split_top_skip;add_glue_ref(q);
d= split_max_depth;f= floating_penalty;unsave();decr(save_ptr);

p= vpack(link(head),natural);pop_nest();
if(saved(0)<255)
{tail_append(get_node(ins_node_size));
type(tail)= ins_node;subtype(tail)= qi(saved(0));
height(tail)= height(p)+depth(p);ins_ptr(tail)= list_ptr(p);
split_top_ptr(tail)= q;depth(tail)= d;float_cost(tail)= f;
}
else{tail_append(get_node(small_node_size));
type(tail)= adjust_node;
subtype(tail)= 0;
adjust_ptr(tail)= list_ptr(p);delete_glue_ref(q);
}
free_node(p,box_node_size);
if(nest_ptr==0)build_page();
}break;
case output_group:/*1026:*/
#line 19949 "tex.w"

{if((loc!=null)||
((token_type!=output_text)&&(token_type!=backed_up)))
/*1027:*/
#line 19969 "tex.w"

{print_err("Unbalanced output routine");

help2("Your sneaky output routine has problematic {'s and/or }'s.")
("I can't handle that very well; good luck.");error();
do{get_token();
}while(!(loc==null));
}

/*:1027*/
#line 19952 "tex.w"
;
end_token_list();
end_graf();unsave();output_active= false;insert_penalties= 0;
/*1028:*/
#line 19978 "tex.w"

if(box(255)!=null)
{print_err("Output routine didn't use all of ");
print_esc(/*1437:*/
#line 25207 "tex.w"
312
/*:1437*/
#line 19981 "tex.w"
);print_int(255);

help3("Your \\output commands should empty \\box255,")
("e.g., by saying `\\shipout\\box255'.")
("Proceed; I'll discard its present contents.");
box_error(255);
}

/*:1028*/
#line 19955 "tex.w"
;
if(tail!=head)
{link(page_tail)= link(head);
page_tail= tail;
}
if(link(page_head)!=null)
{if(link(contrib_head)==null)contrib_tail= page_tail;
link(page_tail)= link(contrib_head);
link(contrib_head)= link(page_head);
link(page_head)= null;page_tail= page_head;
}
pop_nest();build_page();
}

/*:1026*/
#line 21231 "tex.w"
break;

/*:1100*//*1118:*/
#line 21414 "tex.w"

case disc_group:build_discretionary();break;

/*:1118*//*1132:*/
#line 21650 "tex.w"

case align_group:{back_input();cur_tok= cs_token_flag+frozen_cr;
print_err("Missing ");print_esc(/*1670:*/
#line 25906 "tex.w"
545
/*:1670*/
#line 21652 "tex.w"
);print_str(" inserted");

help1("I'm guessing that you meant to end an alignment here.");
ins_error();
}break;

/*:1132*//*1133:*/
#line 21658 "tex.w"

case no_align_group:{end_graf();unsave();align_peek();
}break;

/*:1133*//*1168:*/
#line 22111 "tex.w"

case vcenter_group:{end_graf();unsave();save_ptr= save_ptr-2;
p= vpack(link(head),saved(1),saved(0));pop_nest();
tail_append(new_noad());type(tail)= vcenter_noad;
math_type(nucleus(tail))= sub_box;info(nucleus(tail))= p;
}break;

/*:1168*//*1173:*/
#line 22149 "tex.w"

case math_choice_group:build_choices();break;

/*:1173*//*1186:*/
#line 22323 "tex.w"

case math_group:{unsave();decr(save_ptr);
math_type(saved(0))= sub_mlist;p= fin_mlist(null);info(saved(0))= p;
if(p!=null)if(link(p)==null)
if(type(p)==ord_noad)
{if(math_type(subscr(p))==empty)
if(math_type(supscr(p))==empty)
{mem[saved(0)].hh= mem[nucleus(p)].hh;
free_node(p,noad_size);
}
}
else if(type(p)==accent_noad)if(saved(0)==nucleus(tail))
if(type(tail)==ord_noad)/*1187:*/
#line 22338 "tex.w"

{q= head;while(link(q)!=tail)q= link(q);
link(q)= p;free_node(tail,noad_size);tail= p;
}

/*:1187*/
#line 22335 "tex.w"
;
}break;

/*:1186*/
#line 20730 "tex.w"

default:confusion(/*1711:*/
#line 26029 "tex.w"
586
/*:1711*/
#line 20731 "tex.w"
);

}
}

/*:1068*/
#line 20036 "tex.w"

void main_control(void)
{




int t;
if(every_job!=null)begin_token_list(every_job,every_job_text);
big_switch:get_x_token();
reswitch:/*1031:*/
#line 20071 "tex.w"

if(interrupt!=0)if(OK_to_interrupt)
{back_input();check_interrupt;goto big_switch;
}
#ifdef DEBUG
if(panicking)check_mem(false);
#endif
if(tracing_commands> 0)show_cur_cmd_chr()

/*:1031*/
#line 20046 "tex.w"
;
switch(abs(mode)+cur_cmd){
case hmode+letter:case hmode+other_char:case hmode+char_given:goto main_loop;
case hmode+char_num:{scan_char_num();cur_chr= cur_val;goto main_loop;}
case hmode+no_boundary:{get_x_token();
if((cur_cmd==letter)||(cur_cmd==other_char)||(cur_cmd==char_given)||
(cur_cmd==char_num))cancel_boundary= true;
goto reswitch;
}
case hmode+spacer:if(space_factor==1000)goto append_normal_space;
else app_space();break;
case hmode+ex_space:case mmode+ex_space:goto append_normal_space;
/*1045:*/
#line 20385 "tex.w"

any_mode(relax):case vmode+spacer:case mmode+spacer:case mmode+no_boundary:do_nothing;
any_mode(ignore_spaces):{/*406:*/
#line 8269 "tex.w"

do{get_x_token();
}while(!(cur_cmd!=spacer))

/*:406*/
#line 20387 "tex.w"
;
goto reswitch;
}
case vmode+stop:if(its_all_over())return;break;
/*1048:*/
#line 20432 "tex.w"

case vmode+vmove:case hmode+hmove:case mmode+hmove:any_mode(last_item):

/*:1048*//*1098:*/
#line 21193 "tex.w"

case vmode+vadjust:

/*:1098*//*1111:*/
#line 21353 "tex.w"
case vmode+ital_corr:

/*:1111*//*1144:*/
#line 21749 "tex.w"
non_math(eq_no):

/*:1144*/
#line 20391 "tex.w"
any_mode(mac_param):
report_illegal_case();break;
/*1046:*/
#line 20403 "tex.w"

non_math(sup_mark):non_math(sub_mark):non_math(math_char_num):
non_math(math_given):non_math(math_comp):non_math(delim_num):
non_math(left_right):non_math(above):non_math(radical):
non_math(math_style):non_math(math_choice):non_math(vcenter):
non_math(non_script):non_math(mkern):non_math(limit_switch):
non_math(mskip):non_math(math_accent):
case mmode+endv:case mmode+par_end:case mmode+stop:case mmode+vskip:case mmode+un_vbox:
case mmode+valign:case mmode+hrule

/*:1046*/
#line 20393 "tex.w"
:insert_dollar_sign();break;
/*1056:*/
#line 20521 "tex.w"

case vmode+hrule:case hmode+vrule:case mmode+vrule:{tail_append(scan_rule_spec());
if(abs(mode)==vmode)prev_depth= ignore_depth;
else if(abs(mode)==hmode)space_factor= 1000;
}break;

/*:1056*//*1057:*/
#line 20532 "tex.w"

case vmode+vskip:case hmode+hskip:case mmode+hskip:case mmode+mskip:append_glue();break;
any_mode(kern):case mmode+mkern:append_kern();break;

/*:1057*//*1063:*/
#line 20645 "tex.w"

non_math(left_brace):new_save_level(simple_group);break;
any_mode(begin_group):new_save_level(semi_simple_group);break;
any_mode(end_group):if(cur_group==semi_simple_group)unsave();
else off_save();break;

/*:1063*//*1067:*/
#line 20714 "tex.w"

any_mode(right_brace):handle_right_brace();break;

/*:1067*//*1073:*/
#line 20858 "tex.w"

case vmode+hmove:case hmode+vmove:case mmode+vmove:{t= cur_chr;
scan_normal_dimen;
if(t==0)scan_box(cur_val);else scan_box(-cur_val);
}break;
any_mode(leader_ship):scan_box(leader_flag-a_leaders+cur_chr);break;
any_mode(make_box):begin_box(0);break;

/*:1073*//*1090:*/
#line 21101 "tex.w"

case vmode+start_par:new_graf(cur_chr> 0);break;
case vmode+letter:case vmode+other_char:case vmode+char_num:case vmode+char_given:
case vmode+math_shift:case vmode+un_hbox:case vmode+vrule:
case vmode+accent:case vmode+discretionary:case vmode+hskip:case vmode+valign:
case vmode+ex_space:case vmode+no_boundary:
{back_input();new_graf(true);
}break;

/*:1090*//*1092:*/
#line 21130 "tex.w"

case hmode+start_par:case mmode+start_par:indent_in_hmode();break;

/*:1092*//*1094:*/
#line 21150 "tex.w"

case vmode+par_end:{normal_paragraph();
if(mode> 0)build_page();
}break;
case hmode+par_end:{if(align_state<0)off_save();

end_graf();
if(mode==vmode)build_page();
}break;
case hmode+stop:case hmode+vskip:case hmode+hrule:case hmode+un_vbox:case hmode+halign:head_for_vmode();break;

/*:1094*//*1097:*/
#line 21189 "tex.w"

any_mode(insert):case hmode+vadjust:case mmode+vadjust:begin_insert_or_adjust();break;
any_mode(mark):make_mark();break;

/*:1097*//*1102:*/
#line 21244 "tex.w"

any_mode(break_penalty):append_penalty();break;

/*:1102*//*1104:*/
#line 21260 "tex.w"

any_mode(remove_item):delete_last();break;

/*:1104*//*1109:*/
#line 21327 "tex.w"

case vmode+un_vbox:case hmode+un_hbox:case mmode+un_hbox:unpackage();break;

/*:1109*//*1112:*/
#line 21359 "tex.w"

case hmode+ital_corr:append_italic_correction();break;
case mmode+ital_corr:tail_append(new_kern(0))break;

/*:1112*//*1116:*/
#line 21391 "tex.w"

case hmode+discretionary:case mmode+discretionary:append_discretionary();break;

/*:1116*//*1122:*/
#line 21482 "tex.w"

case hmode+accent:make_accent();break;

/*:1122*//*1126:*/
#line 21552 "tex.w"

any_mode(car_ret):any_mode(tab_mark):align_error();break;
any_mode(no_align):no_align_error();break;
any_mode(omit):omit_error();break;

/*:1126*//*1130:*/
#line 21619 "tex.w"

case vmode+halign:case hmode+valign:init_align();break;
case mmode+halign:if(privileged())
if(cur_group==math_shift_group)init_align();
else off_save();break;
case vmode+endv:case hmode+endv:do_endv();break;

/*:1130*//*1134:*/
#line 21664 "tex.w"

any_mode(end_cs_name):cs_error();break;

/*:1134*//*1137:*/
#line 21695 "tex.w"

case hmode+math_shift:init_math();break;

/*:1137*//*1140:*/
#line 21725 "tex.w"

case mmode+eq_no:if(privileged())
if(cur_group==math_shift_group)start_eq_no();
else off_save();break;

/*:1140*//*1150:*/
#line 21863 "tex.w"

case mmode+left_brace:{tail_append(new_noad());
back_input();scan_math(nucleus(tail));
}break;

/*:1150*//*1154:*/
#line 21927 "tex.w"

case mmode+letter:case mmode+other_char:case mmode+char_given:
set_math_char(ho(math_code(cur_chr)));break;
case mmode+char_num:{scan_char_num();cur_chr= cur_val;
set_math_char(ho(math_code(cur_chr)));
}break;
case mmode+math_char_num:{scan_fifteen_bit_int();set_math_char(cur_val);
}break;
case mmode+math_given:set_math_char(cur_chr);break;
case mmode+delim_num:{scan_twenty_seven_bit_int();
set_math_char(cur_val/010000);
}break;

/*:1154*//*1158:*/
#line 22011 "tex.w"

case mmode+math_comp:{tail_append(new_noad());
type(tail)= cur_chr;scan_math(nucleus(tail));
}break;
case mmode+limit_switch:math_limit_switch();break;

/*:1158*//*1162:*/
#line 22063 "tex.w"

case mmode+radical:math_radical();break;

/*:1162*//*1164:*/
#line 22076 "tex.w"

case mmode+accent:case mmode+math_accent:math_ac();break;

/*:1164*//*1167:*/
#line 22105 "tex.w"

case mmode+vcenter:{scan_spec(vcenter_group,false);normal_paragraph();
push_nest();mode= -vmode;prev_depth= ignore_depth;
if(every_vbox!=null)begin_token_list(every_vbox,every_vbox_text);
}break;

/*:1167*//*1171:*/
#line 22133 "tex.w"

case mmode+math_style:tail_append(new_style(cur_chr))break;
case mmode+non_script:{tail_append(new_glue(zero_glue));
subtype(tail)= cond_math_glue;
}break;
case mmode+math_choice:append_choices();break;

/*:1171*//*1175:*/
#line 22173 "tex.w"

case mmode+sub_mark:case mmode+sup_mark:sub_sup();break;

/*:1175*//*1180:*/
#line 22243 "tex.w"

case mmode+above:math_fraction();break;

/*:1180*//*1190:*/
#line 22358 "tex.w"

case mmode+left_right:math_left_right();break;

/*:1190*//*1193:*/
#line 22394 "tex.w"

case mmode+math_shift:if(cur_group==math_shift_group)after_math();
else off_save();break;

/*:1193*/
#line 20394 "tex.w"

/*1210:*/
#line 22681 "tex.w"

any_mode(toks_register):
any_mode(assign_toks):
any_mode(assign_int):
any_mode(assign_dimen):
any_mode(assign_glue):
any_mode(assign_mu_glue):
any_mode(assign_font_dimen):
any_mode(assign_font_int):
any_mode(set_aux):
any_mode(set_prev_graf):
any_mode(set_page_dimen):
any_mode(set_page_int):
any_mode(set_box_dimen):
any_mode(set_shape):
any_mode(def_code):
any_mode(def_family):
any_mode(set_font):
any_mode(def_font):
any_mode(register):
any_mode(advance):
any_mode(multiply):
any_mode(divide):
any_mode(prefix):
any_mode(let):
any_mode(shorthand_def):
any_mode(read_to_cs):
any_mode(def):
any_mode(set_box):
any_mode(hyph_data):
any_mode(set_interaction):prefixed_command();break;

/*:1210*//*1268:*/
#line 23463 "tex.w"

any_mode(after_assignment):{get_token();after_token= cur_tok;
}break;

/*:1268*//*1271:*/
#line 23484 "tex.w"

any_mode(after_group):{get_token();save_for_after(cur_tok);
}break;

/*:1271*//*1274:*/
#line 23500 "tex.w"

any_mode(in_stream):open_or_close_in();break;

/*:1274*//*1276:*/
#line 23522 "tex.w"

any_mode(message):issue_message();break;

/*:1276*//*1285:*/
#line 23589 "tex.w"

any_mode(case_shift):shift_case();break;

/*:1285*//*1290:*/
#line 23631 "tex.w"

any_mode(xray):show_whatever();break;

/*:1290*/
#line 20395 "tex.w"

/*1347:*/
#line 24660 "tex.w"

any_mode(extension):do_extension();

/*:1347*/
#line 20396 "tex.w"


/*:1045*/
#line 20058 "tex.w"

}
goto big_switch;
main_loop:/*1034:*/
#line 20136 "tex.w"

adjust_space_factor;
main_f= cur_font;
bchar= font_bchar[main_f];false_bchar= font_false_bchar[main_f];
if(mode> 0)if(language!=clang)fix_language();
fast_get_avail(lig_stack);font(lig_stack)= main_f;cur_l= qi(cur_chr);
character(lig_stack)= cur_l;
cur_q= tail;
if(cancel_boundary)
{cancel_boundary= false;main_k= non_address;
}
else main_k= bchar_label[main_f];
if(main_k==non_address)goto main_loop_move2;
cur_r= cur_l;cur_l= non_char;
goto main_lig_loop1;

main_loop_wrapup:/*1035:*/
#line 20194 "tex.w"

wrapup(rt_hit)

/*:1035*/
#line 20153 "tex.w"
;
main_loop_move:/*1036:*/
#line 20197 "tex.w"


if(lig_stack==null)goto reswitch;
cur_q= tail;cur_l= character(lig_stack);
main_loop_move1:if(!is_char_node(lig_stack))goto main_loop_move_lig;
main_loop_move2:if((cur_chr<font_bc[main_f])||(cur_chr> font_ec[main_f]))
{char_warning(main_f,cur_chr);free_avail(lig_stack);goto big_switch;
}
main_i= char_info(main_f)(cur_l);
if(!char_exists(main_i))
{char_warning(main_f,cur_chr);free_avail(lig_stack);goto big_switch;
}
link(tail)= lig_stack;tail= lig_stack

/*:1036*/
#line 20156 "tex.w"
;
main_loop_lookahead:/*1038:*/
#line 20229 "tex.w"

get_next();
if(cur_cmd==letter)goto main_loop_lookahead1;
if(cur_cmd==other_char)goto main_loop_lookahead1;
if(cur_cmd==char_given)goto main_loop_lookahead1;
x_token();
if(cur_cmd==letter)goto main_loop_lookahead1;
if(cur_cmd==other_char)goto main_loop_lookahead1;
if(cur_cmd==char_given)goto main_loop_lookahead1;
if(cur_cmd==char_num)
{scan_char_num();cur_chr= cur_val;goto main_loop_lookahead1;
}
if(cur_cmd==no_boundary)bchar= non_char;
cur_r= bchar;lig_stack= null;goto main_lig_loop;
main_loop_lookahead1:adjust_space_factor;
fast_get_avail(lig_stack);font(lig_stack)= main_f;
cur_r= qi(cur_chr);character(lig_stack)= cur_r;
if(cur_r==false_bchar)cur_r= non_char

/*:1038*/
#line 20158 "tex.w"
;
main_lig_loop:/*1039:*/
#line 20258 "tex.w"

if(char_tag(main_i)!=lig_tag)goto main_loop_wrapup;
if(cur_r==non_char)goto main_loop_wrapup;
main_k= lig_kern_start(main_f)(main_i);main_j= font_info[main_k].qqqq;
if(skip_byte(main_j)<=stop_flag)goto main_lig_loop2;
main_k= lig_kern_restart(main_f)(main_j);
main_lig_loop1:main_j= font_info[main_k].qqqq;
main_lig_loop2:if(next_char(main_j)==cur_r)
if(skip_byte(main_j)<=stop_flag)
/*1040:*/
#line 20284 "tex.w"

{if(op_byte(main_j)>=kern_flag)
{wrapup(rt_hit);
tail_append(new_kern(char_kern(main_f)(main_j)));goto main_loop_move;
}
if(cur_l==non_char)lft_hit= true;
else if(lig_stack==null)rt_hit= true;
check_interrupt;
switch(op_byte(main_j)){
qi(case 1):qi(case 5):{cur_l= rem_byte(main_j);
main_i= char_info(main_f)(cur_l);ligature_present= true;
}break;
qi(case 2):qi(case 6):{cur_r= rem_byte(main_j);
if(lig_stack==null)
{lig_stack= new_lig_item(cur_r);bchar= non_char;
}
else if(is_char_node(lig_stack))
{main_p= lig_stack;lig_stack= new_lig_item(cur_r);
lig_ptr(lig_stack)= main_p;
}
else character(lig_stack)= cur_r;
}break;
qi(case 3):{cur_r= rem_byte(main_j);
main_p= lig_stack;lig_stack= new_lig_item(cur_r);
link(lig_stack)= main_p;
}break;
qi(case 7):qi(case 11):{wrapup(false);
cur_q= tail;cur_l= rem_byte(main_j);
main_i= char_info(main_f)(cur_l);ligature_present= true;
}break;
default:{cur_l= rem_byte(main_j);ligature_present= true;
if(lig_stack==null)goto main_loop_wrapup;
else goto main_loop_move1;
}
}
if(op_byte(main_j)> qi(4))
if(op_byte(main_j)!=qi(7))goto main_loop_wrapup;
if(cur_l<non_char)goto main_lig_loop;
main_k= bchar_label[main_f];goto main_lig_loop1;
}

/*:1040*/
#line 20268 "tex.w"
;
if(skip_byte(main_j)==qi(0))incr(main_k);
else{if(skip_byte(main_j)>=stop_flag)goto main_loop_wrapup;
main_k= main_k+qo(skip_byte(main_j))+1;
}
goto main_lig_loop1

/*:1039*/
#line 20160 "tex.w"
;
main_loop_move_lig:/*1037:*/
#line 20214 "tex.w"

main_p= lig_ptr(lig_stack);
if(main_p> null)tail_append(main_p);
temp_ptr= lig_stack;lig_stack= link(temp_ptr);
free_node(temp_ptr,small_node_size);
main_i= char_info(main_f)(cur_l);ligature_present= true;
if(lig_stack==null)
if(main_p> null)goto main_loop_lookahead;
else cur_r= bchar;
else cur_r= character(lig_stack);
goto main_lig_loop

/*:1037*/
#line 20162 "tex.w"


/*:1034*/
#line 20062 "tex.w"
;
append_normal_space:/*1041:*/
#line 20336 "tex.w"

if(space_skip==zero_glue)
{/*1042:*/
#line 20350 "tex.w"

{main_p= font_glue[cur_font];
if(main_p==null)
{main_p= new_spec(zero_glue);main_k= param_base[cur_font]+space_code;
width(main_p)= font_info[main_k].sc;
stretch(main_p)= font_info[main_k+1].sc;
shrink(main_p)= font_info[main_k+2].sc;
font_glue[cur_font]= main_p;
}
}

/*:1042*/
#line 20338 "tex.w"
;
temp_ptr= new_glue(main_p);
}
else temp_ptr= new_param_glue(space_skip_code);
link(tail)= temp_ptr;tail= temp_ptr;
goto big_switch

/*:1041*/
#line 20064 "tex.w"
;
}

/*:1030*//*1284:*/
#line 23582 "tex.w"
void give_err_help(void)
{token_show(err_help);
}

/*:1284*//*1303:*/
#line 23787 "tex.w"
/*523:*/
#line 10180 "tex.w"

bool open_fmt_file(void)
{
uint16_t j;
j= loc;
if(buffer[loc]=='&')
{incr(loc);j= loc;buffer[last]= ' ';
while(buffer[j]!=' ')incr(j);
pack_buffered_name(0,loc,j-1);
if(w_open_in(&fmt_file))goto found;
pack_buffered_name(format_area_length,loc,j-1);

if(w_open_in(&fmt_file))goto found;
wake_up_terminal;
wterm_ln("Sorry, I can't find that format; will try PLAIN.");

update_terminal;
}

pack_buffered_name(format_default_length-format_ext_length,1,0);
if(!w_open_in(&fmt_file))
{wake_up_terminal;
wterm_ln("I can't find the PLAIN format file!");


return false;
}
found:loc= j;return true;
}

/*:523*/
#line 23787 "tex.w"

bool load_fmt_file(void)
{
int j,k;
pointer p,q;
int x;
four_quarters w;
/*1308:*/
#line 23863 "tex.w"

x= fmt_file.d.i;
if(x!=0)goto bad_fmt;
undump_int(x);
if(x!=mem_bot)goto bad_fmt;
undump_int(x);
if(x!=mem_top)goto bad_fmt;
undump_int(x);
if(x!=eqtb_size)goto bad_fmt;
undump_int(x);
if(x!=hash_prime)goto bad_fmt;
undump_int(x);
if(x!=hyph_size)goto bad_fmt

/*:1308*/
#line 23794 "tex.w"
;
/*1310:*/
#line 23899 "tex.w"

undump_size(0)(pool_size)("string pool size")(pool_ptr);
undump_size(0)(max_strings)("max strings")(str_ptr);
for(k= 0;k<=str_ptr;k++)undump(0)(pool_ptr)(str_start[k]);
k= 0;
while(k+4<pool_ptr)
{undump_four_ASCII;k= k+4;
}
k= pool_ptr-4;undump_four_ASCII;
init_str_ptr= str_ptr;init_pool_ptr= pool_ptr

/*:1310*/
#line 23795 "tex.w"
;
/*1312:*/
#line 23940 "tex.w"

undump(lo_mem_stat_max+1000)(hi_mem_stat_min-1)(lo_mem_max);
undump(lo_mem_stat_max+1)(lo_mem_max)(rover);
p= mem_bot;q= rover;
do{for(k= p;k<=q+1;k++)undump_wd(mem[k]);
p= q+node_size(q);
if((p> lo_mem_max)||((q>=rlink(q))&&(rlink(q)!=rover)))goto bad_fmt;
q= rlink(q);
}while(!(q==rover));
for(k= p;k<=lo_mem_max;k++)undump_wd(mem[k]);
if(mem_min<mem_bot-2)
{p= llink(rover);q= mem_min+1;
link(mem_min)= null;info(mem_min)= null;
rlink(p)= q;llink(rover)= q;
rlink(q)= rover;llink(q)= p;link(q)= empty_flag;
node_size(q)= mem_bot-q;
}
undump(lo_mem_max+1)(hi_mem_stat_min)(hi_mem_min);
undump(null)(mem_top)(avail);mem_end= mem_top;
for(k= hi_mem_min;k<=mem_end;k++)undump_wd(mem[k]);
undump_int(var_used);undump_int(dyn_used)

/*:1312*/
#line 23796 "tex.w"
;
/*1314:*/
#line 23968 "tex.w"

/*1317:*/
#line 24021 "tex.w"

k= active_base;
do{undump_int(x);
if((x<1)||(k+x> eqtb_size+1))goto bad_fmt;
for(j= k;j<=k+x-1;j++)undump_wd(eqtb[j]);
k= k+x;
undump_int(x);
if((x<0)||(k+x> eqtb_size+1))goto bad_fmt;
for(j= k;j<=k+x-1;j++)eqtb[j]= eqtb[k-1];
k= k+x;
}while(!(k> eqtb_size))

/*:1317*/
#line 23969 "tex.w"
;
undump(hash_base)(frozen_control_sequence)(par_loc);
par_token= cs_token_flag+par_loc;
undump(hash_base)(frozen_control_sequence)(write_loc);
/*1319:*/
#line 24047 "tex.w"

undump(hash_base)(frozen_control_sequence)(hash_used);p= hash_base-1;
do{undump(p+1)(hash_used)(p);undump_hh(hash[p]);
}while(!(p==hash_used));
for(p= hash_used+1;p<=undefined_control_sequence-1;p++)undump_hh(hash[p]);
undump_int(cs_count)

/*:1319*/
#line 23973 "tex.w"


/*:1314*/
#line 23797 "tex.w"
;
/*1321:*/
#line 24064 "tex.w"

undump_size(7)(font_mem_size)("font mem size")(fmem_ptr);
for(k= 0;k<=fmem_ptr-1;k++)undump_wd(font_info[k]);
undump_size(font_base)(font_max)("font max")(font_ptr);
for(k= null_font;k<=font_ptr;k++)
/*1323:*/
#line 24102 "tex.w"

{undump_qqqq(font_check[k]);
undump_int(font_size[k]);
undump_int(font_dsize[k]);
undump(min_halfword)(max_halfword)(font_params[k]);
undump_int(hyphen_char[k]);
undump_int(skew_char[k]);
undump(0)(str_ptr)(font_name[k]);
undump(0)(str_ptr)(font_area[k]);
undump(0)(255)(font_bc[k]);
undump(0)(255)(font_ec[k]);
undump_int(char_base[k]);
undump_int(width_base[k]);
undump_int(height_base[k]);
undump_int(depth_base[k]);
undump_int(italic_base[k]);
undump_int(lig_kern_base[k]);
undump_int(kern_base[k]);
undump_int(exten_base[k]);
undump_int(param_base[k]);
undump(min_halfword)(lo_mem_max)(font_glue[k]);
undump(0)(fmem_ptr-1)(bchar_label[k]);
undump(min_quarterword)(non_char)(font_bchar[k]);
undump(min_quarterword)(non_char)(font_false_bchar[k]);
}

/*:1323*/
#line 24069 "tex.w"


/*:1321*/
#line 23798 "tex.w"
;
/*1325:*/
#line 24157 "tex.w"

undump(0)(hyph_size)(hyph_count);
for(k= 1;k<=hyph_count;k++)
{undump(0)(hyph_size)(j);
undump(0)(str_ptr)(hyph_word[j]);
undump(min_halfword)(max_halfword)(hyph_list[j]);
}
undump_size(0)(trie_size)("trie size")(j);
#ifdef INIT
trie_max= j;
#endif
for(k= 0;k<=j;k++)undump_hh(trie[k]);
undump_size(0)(trie_op_size)("trie op size")(j);
#ifdef INIT
trie_op_ptr= j;
#endif
for(k= 1;k<=j;k++)
{undump(0)(63)(hyf_distance[k]);
undump(0)(63)(hyf_num[k]);
undump(min_quarterword)(max_quarterword)(hyf_next[k]);
}
#ifdef INIT
for(k= 0;k<=255;k++)trie_used[k]= min_quarterword;
#endif

k= 256;
while(j> 0)
{undump(0)(k-1)(k);undump(1)(j)(x);
#ifdef INIT
trie_used[k]= qi(x);
#endif

j= j-x;op_start[k]= qo(j);
}
#ifdef INIT
trie_not_ready= false
#endif

/*:1325*/
#line 23799 "tex.w"
;
/*1327:*/
#line 24202 "tex.w"

undump(batch_mode)(error_stop_mode)(interaction);
undump(0)(str_ptr)(format_ident);
undump_int(x);
if((x!=69069)||eof(fmt_file))goto bad_fmt

/*:1327*/
#line 23800 "tex.w"
;
return true;
bad_fmt:wake_up_terminal;
wterm_ln("(Fatal format file error; I'm stymied)");

return false;
}

/*:1303*//*1330:*/
#line 24235 "tex.w"
/*1333:*/
#line 24329 "tex.w"

void close_files_and_terminate(void)
{int k;
/*1378:*/
#line 24990 "tex.w"

for(k= 0;k<=15;k++)if(write_open[k])a_close(&write_file[k])

/*:1378*/
#line 24332 "tex.w"
;
#ifdef STAT
if(tracing_stats> 0)/*1334:*/
#line 24351 "tex.w"

if(log_opened)
{wlog_ln(" ");
wlog_ln("Here is how much of TeX's memory you used:");

wlog(" %d string",str_ptr-init_str_ptr);
if(str_ptr!=init_str_ptr+1)wlog("s");
wlog_ln(" out of %d",max_strings-init_str_ptr);
wlog_ln(" %d string characters out of %d",pool_ptr-init_pool_ptr,
pool_size-init_pool_ptr);
wlog_ln(" %d words of memory out of %d",lo_mem_max-mem_min+mem_end-hi_mem_min+2,
mem_end+1-mem_min);
wlog_ln(" %d multiletter control sequences out of %d",cs_count,hash_size);
wlog(" %d words of font info for %d font",fmem_ptr,font_ptr-font_base);
if(font_ptr!=font_base+1)wlog("s");
wlog_ln(", out of %d for %d",font_mem_size,font_max-font_base);
wlog(" %d hyphenation exception",hyph_count);
if(hyph_count!=1)wlog("s");
wlog_ln(" out of %d",hyph_size);
wlog_ln(" %di,%dn,%dp,%db,%ds stack positions out of %di,%dn,%dp,%db,%ds",
max_in_stack,max_nest_stack,
max_param_stack,
max_buf_stack+1,
max_save_stack+6,
stack_size,
nest_size,
param_size,
buf_size,
save_size);
}

/*:1334*/
#line 24334 "tex.w"
;
#endif
wake_up_terminal;/*642:*/
#line 12800 "tex.w"

while(cur_s> -1)
{if(cur_s> 0)dvi_out(pop)
else{dvi_out(eop);incr(total_pages);
}
decr(cur_s);
}
if(total_pages==0)print_nl("No pages of output.");

else{dvi_out(post);
dvi_four(last_bop);last_bop= dvi_offset+dvi_ptr-5;
dvi_four(25400000);dvi_four(473628672);
prepare_mag();dvi_four(mag);
dvi_four(max_v);dvi_four(max_h);
dvi_out(max_push/256);dvi_out(max_push%256);
dvi_out((total_pages/256)%256);dvi_out(total_pages%256);
/*643:*/
#line 12831 "tex.w"

while(font_ptr> font_base)
{if(font_used[font_ptr])dvi_font_def(font_ptr);
decr(font_ptr);
}

/*:643*/
#line 12816 "tex.w"
;
dvi_out(post_post);dvi_four(last_bop);dvi_out(id_byte);
k= 4+((dvi_buf_size-dvi_ptr)%4);
while(k> 0)
{dvi_out(223);decr(k);
}
/*599:*/
#line 11982 "tex.w"

if(dvi_limit==half_buf)write_dvi(half_buf,dvi_buf_size-1);
if(dvi_ptr> 0)write_dvi(0,dvi_ptr-1)

/*:599*/
#line 12822 "tex.w"
;
print_nl("Output written on ");slow_print(output_file_name);

print_str(" (");print_int(total_pages);print_str(" page");
if(total_pages!=1)print_char('s');
print_str(", ");print_int(dvi_offset+dvi_ptr);print_str(" bytes).");
b_close(&dvi_file);
}

/*:642*/
#line 24336 "tex.w"
;
if(log_opened)
{wlog_cr;a_close(&log_file);selector= selector-2;
if(selector==term_only)
{print_nl("Transcript written on ");

slow_print(log_name);print_char('.');
}
}
}

/*:1333*//*1335:*/
#line 24385 "tex.w"

void final_cleanup(void)
{
small_number c;
c= cur_chr;
if(job_name==0)open_log_file();
while(input_ptr> 0)
if(state==token_list)end_token_list();else end_file_reading();
while(open_parens> 0)
{print_str(" )");decr(open_parens);
}
if(cur_level> level_one)
{print_nl("(");print_esc(/*1782:*/
#line 26242 "tex.w"
657
/*:1782*/
#line 24397 "tex.w"
);
print_str("inside a group at level ");

print_int(cur_level-level_one);print_char(')');
}
while(cond_ptr!=null)
{print_nl("(");print_esc(/*1782:*/
#line 26242 "tex.w"
657
/*:1782*/
#line 24403 "tex.w"
);
print_str("when ");print_cmd_chr(if_test,cur_if);
if(if_line!=0)
{print_str(" on line ");print_int(if_line);
}
print_str(" was incomplete)");
if_line= if_line_field(cond_ptr);
cur_if= subtype(cond_ptr);temp_ptr= cond_ptr;
cond_ptr= link(cond_ptr);free_node(temp_ptr,if_node_size);
}
if(history!=spotless)
if(((history==warning_issued)||(interaction<error_stop_mode)))
if(selector==term_and_log)
{selector= term_only;
print_nl("(see the transcript file for additional information)");

selector= term_and_log;
}
if(c==1)
{
#ifdef INIT
for(c= top_mark_code;c<=split_bot_mark_code;c++)
if(cur_mark[c]!=null)delete_token_ref(cur_mark[c]);
if(last_glue!=max_halfword)delete_glue_ref(last_glue);
store_fmt_file();return;
#endif
print_nl("(\\dump is performed only by INITEX)");return;

}
}

/*:1335*//*1336:*/
#line 24434 "tex.w"

#ifdef INIT
void init_prim(void)
{no_new_control_sequence= false;
/*226:*/
#line 4700 "tex.w"

primitive(/*1405:*/
#line 25111 "tex.w"
280
/*:1405*/
#line 4701 "tex.w"
,assign_glue,glue_base+line_skip_code);

primitive(/*1406:*/
#line 25114 "tex.w"
281
/*:1406*/
#line 4703 "tex.w"
,assign_glue,glue_base+baseline_skip_code);

primitive(/*1407:*/
#line 25117 "tex.w"
282
/*:1407*/
#line 4705 "tex.w"
,assign_glue,glue_base+par_skip_code);

primitive(/*1408:*/
#line 25120 "tex.w"
283
/*:1408*/
#line 4707 "tex.w"
,assign_glue,glue_base+above_display_skip_code);

primitive(/*1409:*/
#line 25123 "tex.w"
284
/*:1409*/
#line 4709 "tex.w"
,assign_glue,glue_base+below_display_skip_code);

primitive(/*1410:*/
#line 25126 "tex.w"
285
/*:1410*/
#line 4711 "tex.w"
,
assign_glue,glue_base+above_display_short_skip_code);

primitive(/*1411:*/
#line 25129 "tex.w"
286
/*:1411*/
#line 4714 "tex.w"
,
assign_glue,glue_base+below_display_short_skip_code);

primitive(/*1412:*/
#line 25132 "tex.w"
287
/*:1412*/
#line 4717 "tex.w"
,assign_glue,glue_base+left_skip_code);

primitive(/*1413:*/
#line 25135 "tex.w"
288
/*:1413*/
#line 4719 "tex.w"
,assign_glue,glue_base+right_skip_code);

primitive(/*1414:*/
#line 25138 "tex.w"
289
/*:1414*/
#line 4721 "tex.w"
,assign_glue,glue_base+top_skip_code);

primitive(/*1415:*/
#line 25141 "tex.w"
290
/*:1415*/
#line 4723 "tex.w"
,assign_glue,glue_base+split_top_skip_code);

primitive(/*1416:*/
#line 25144 "tex.w"
291
/*:1416*/
#line 4725 "tex.w"
,assign_glue,glue_base+tab_skip_code);

primitive(/*1417:*/
#line 25147 "tex.w"
292
/*:1417*/
#line 4727 "tex.w"
,assign_glue,glue_base+space_skip_code);

primitive(/*1418:*/
#line 25150 "tex.w"
293
/*:1418*/
#line 4729 "tex.w"
,assign_glue,glue_base+xspace_skip_code);

primitive(/*1419:*/
#line 25153 "tex.w"
294
/*:1419*/
#line 4731 "tex.w"
,assign_glue,glue_base+par_fill_skip_code);

primitive(/*1420:*/
#line 25156 "tex.w"
295
/*:1420*/
#line 4733 "tex.w"
,assign_mu_glue,glue_base+thin_mu_skip_code);

primitive(/*1421:*/
#line 25159 "tex.w"
296
/*:1421*/
#line 4735 "tex.w"
,assign_mu_glue,glue_base+med_mu_skip_code);

primitive(/*1422:*/
#line 25162 "tex.w"
297
/*:1422*/
#line 4737 "tex.w"
,assign_mu_glue,glue_base+thick_mu_skip_code);


/*:226*//*230:*/
#line 4821 "tex.w"

primitive(/*1426:*/
#line 25174 "tex.w"
301
/*:1426*/
#line 4822 "tex.w"
,assign_toks,output_routine_loc);

primitive(/*1427:*/
#line 25177 "tex.w"
302
/*:1427*/
#line 4824 "tex.w"
,assign_toks,every_par_loc);

primitive(/*1428:*/
#line 25180 "tex.w"
303
/*:1428*/
#line 4826 "tex.w"
,assign_toks,every_math_loc);

primitive(/*1429:*/
#line 25183 "tex.w"
304
/*:1429*/
#line 4828 "tex.w"
,assign_toks,every_display_loc);

primitive(/*1430:*/
#line 25186 "tex.w"
305
/*:1430*/
#line 4830 "tex.w"
,assign_toks,every_hbox_loc);

primitive(/*1431:*/
#line 25189 "tex.w"
306
/*:1431*/
#line 4832 "tex.w"
,assign_toks,every_vbox_loc);

primitive(/*1432:*/
#line 25192 "tex.w"
307
/*:1432*/
#line 4834 "tex.w"
,assign_toks,every_job_loc);

primitive(/*1433:*/
#line 25195 "tex.w"
308
/*:1433*/
#line 4836 "tex.w"
,assign_toks,every_cr_loc);

primitive(/*1434:*/
#line 25198 "tex.w"
309
/*:1434*/
#line 4838 "tex.w"
,assign_toks,err_help_loc);


/*:230*//*238:*/
#line 5154 "tex.w"

primitive(/*1446:*/
#line 25234 "tex.w"
321
/*:1446*/
#line 5155 "tex.w"
,assign_int,int_base+pretolerance_code);

primitive(/*1447:*/
#line 25237 "tex.w"
322
/*:1447*/
#line 5157 "tex.w"
,assign_int,int_base+tolerance_code);

primitive(/*1448:*/
#line 25240 "tex.w"
323
/*:1448*/
#line 5159 "tex.w"
,assign_int,int_base+line_penalty_code);

primitive(/*1449:*/
#line 25243 "tex.w"
324
/*:1449*/
#line 5161 "tex.w"
,assign_int,int_base+hyphen_penalty_code);

primitive(/*1450:*/
#line 25246 "tex.w"
325
/*:1450*/
#line 5163 "tex.w"
,assign_int,int_base+ex_hyphen_penalty_code);

primitive(/*1451:*/
#line 25249 "tex.w"
326
/*:1451*/
#line 5165 "tex.w"
,assign_int,int_base+club_penalty_code);

primitive(/*1452:*/
#line 25252 "tex.w"
327
/*:1452*/
#line 5167 "tex.w"
,assign_int,int_base+widow_penalty_code);

primitive(/*1453:*/
#line 25255 "tex.w"
328
/*:1453*/
#line 5169 "tex.w"
,
assign_int,int_base+display_widow_penalty_code);

primitive(/*1454:*/
#line 25258 "tex.w"
329
/*:1454*/
#line 5172 "tex.w"
,assign_int,int_base+broken_penalty_code);

primitive(/*1455:*/
#line 25261 "tex.w"
330
/*:1455*/
#line 5174 "tex.w"
,assign_int,int_base+bin_op_penalty_code);

primitive(/*1456:*/
#line 25264 "tex.w"
331
/*:1456*/
#line 5176 "tex.w"
,assign_int,int_base+rel_penalty_code);

primitive(/*1457:*/
#line 25267 "tex.w"
332
/*:1457*/
#line 5178 "tex.w"
,assign_int,int_base+pre_display_penalty_code);

primitive(/*1458:*/
#line 25270 "tex.w"
333
/*:1458*/
#line 5180 "tex.w"
,assign_int,int_base+post_display_penalty_code);

primitive(/*1459:*/
#line 25273 "tex.w"
334
/*:1459*/
#line 5182 "tex.w"
,assign_int,int_base+inter_line_penalty_code);

primitive(/*1460:*/
#line 25276 "tex.w"
335
/*:1460*/
#line 5184 "tex.w"
,
assign_int,int_base+double_hyphen_demerits_code);

primitive(/*1461:*/
#line 25279 "tex.w"
336
/*:1461*/
#line 5187 "tex.w"
,
assign_int,int_base+final_hyphen_demerits_code);

primitive(/*1462:*/
#line 25282 "tex.w"
337
/*:1462*/
#line 5190 "tex.w"
,assign_int,int_base+adj_demerits_code);

primitive(/*1463:*/
#line 25285 "tex.w"
338
/*:1463*/
#line 5192 "tex.w"
,assign_int,int_base+mag_code);

primitive(/*1464:*/
#line 25288 "tex.w"
339
/*:1464*/
#line 5194 "tex.w"
,assign_int,int_base+delimiter_factor_code);

primitive(/*1465:*/
#line 25291 "tex.w"
340
/*:1465*/
#line 5196 "tex.w"
,assign_int,int_base+looseness_code);

primitive(/*1466:*/
#line 25294 "tex.w"
341
/*:1466*/
#line 5198 "tex.w"
,assign_int,int_base+time_code);

primitive(/*1467:*/
#line 25297 "tex.w"
342
/*:1467*/
#line 5200 "tex.w"
,assign_int,int_base+day_code);

primitive(/*1468:*/
#line 25300 "tex.w"
343
/*:1468*/
#line 5202 "tex.w"
,assign_int,int_base+month_code);

primitive(/*1469:*/
#line 25303 "tex.w"
344
/*:1469*/
#line 5204 "tex.w"
,assign_int,int_base+year_code);

primitive(/*1470:*/
#line 25306 "tex.w"
345
/*:1470*/
#line 5206 "tex.w"
,assign_int,int_base+show_box_breadth_code);

primitive(/*1471:*/
#line 25309 "tex.w"
346
/*:1471*/
#line 5208 "tex.w"
,assign_int,int_base+show_box_depth_code);

primitive(/*1472:*/
#line 25312 "tex.w"
347
/*:1472*/
#line 5210 "tex.w"
,assign_int,int_base+hbadness_code);

primitive(/*1473:*/
#line 25315 "tex.w"
348
/*:1473*/
#line 5212 "tex.w"
,assign_int,int_base+vbadness_code);

primitive(/*1474:*/
#line 25318 "tex.w"
349
/*:1474*/
#line 5214 "tex.w"
,assign_int,int_base+pausing_code);

primitive(/*1475:*/
#line 25321 "tex.w"
350
/*:1475*/
#line 5216 "tex.w"
,assign_int,int_base+tracing_online_code);

primitive(/*1476:*/
#line 25324 "tex.w"
351
/*:1476*/
#line 5218 "tex.w"
,assign_int,int_base+tracing_macros_code);

primitive(/*1477:*/
#line 25327 "tex.w"
352
/*:1477*/
#line 5220 "tex.w"
,assign_int,int_base+tracing_stats_code);

primitive(/*1478:*/
#line 25330 "tex.w"
353
/*:1478*/
#line 5222 "tex.w"
,assign_int,int_base+tracing_paragraphs_code);

primitive(/*1479:*/
#line 25333 "tex.w"
354
/*:1479*/
#line 5224 "tex.w"
,assign_int,int_base+tracing_pages_code);

primitive(/*1480:*/
#line 25336 "tex.w"
355
/*:1480*/
#line 5226 "tex.w"
,assign_int,int_base+tracing_output_code);

primitive(/*1481:*/
#line 25339 "tex.w"
356
/*:1481*/
#line 5228 "tex.w"
,assign_int,int_base+tracing_lost_chars_code);

primitive(/*1482:*/
#line 25342 "tex.w"
357
/*:1482*/
#line 5230 "tex.w"
,assign_int,int_base+tracing_commands_code);

primitive(/*1483:*/
#line 25345 "tex.w"
358
/*:1483*/
#line 5232 "tex.w"
,assign_int,int_base+tracing_restores_code);

primitive(/*1484:*/
#line 25348 "tex.w"
359
/*:1484*/
#line 5234 "tex.w"
,assign_int,int_base+uc_hyph_code);

primitive(/*1485:*/
#line 25351 "tex.w"
360
/*:1485*/
#line 5236 "tex.w"
,assign_int,int_base+output_penalty_code);

primitive(/*1486:*/
#line 25354 "tex.w"
361
/*:1486*/
#line 5238 "tex.w"
,assign_int,int_base+max_dead_cycles_code);

primitive(/*1487:*/
#line 25357 "tex.w"
362
/*:1487*/
#line 5240 "tex.w"
,assign_int,int_base+hang_after_code);

primitive(/*1488:*/
#line 25360 "tex.w"
363
/*:1488*/
#line 5242 "tex.w"
,assign_int,int_base+floating_penalty_code);

primitive(/*1489:*/
#line 25363 "tex.w"
364
/*:1489*/
#line 5244 "tex.w"
,assign_int,int_base+global_defs_code);

primitive(/*1490:*/
#line 25366 "tex.w"
365
/*:1490*/
#line 5246 "tex.w"
,assign_int,int_base+cur_fam_code);

primitive(/*1491:*/
#line 25369 "tex.w"
366
/*:1491*/
#line 5248 "tex.w"
,assign_int,int_base+escape_char_code);

primitive(/*1492:*/
#line 25372 "tex.w"
367
/*:1492*/
#line 5250 "tex.w"
,assign_int,int_base+default_hyphen_char_code);

primitive(/*1493:*/
#line 25375 "tex.w"
368
/*:1493*/
#line 5252 "tex.w"
,assign_int,int_base+default_skew_char_code);

primitive(/*1494:*/
#line 25378 "tex.w"
369
/*:1494*/
#line 5254 "tex.w"
,assign_int,int_base+end_line_char_code);

primitive(/*1495:*/
#line 25381 "tex.w"
370
/*:1495*/
#line 5256 "tex.w"
,assign_int,int_base+new_line_char_code);

primitive(/*1496:*/
#line 25384 "tex.w"
371
/*:1496*/
#line 5258 "tex.w"
,assign_int,int_base+language_code);

primitive(/*1497:*/
#line 25387 "tex.w"
372
/*:1497*/
#line 5260 "tex.w"
,assign_int,int_base+left_hyphen_min_code);

primitive(/*1498:*/
#line 25390 "tex.w"
373
/*:1498*/
#line 5262 "tex.w"
,assign_int,int_base+right_hyphen_min_code);

primitive(/*1499:*/
#line 25393 "tex.w"
374
/*:1499*/
#line 5264 "tex.w"
,assign_int,int_base+holding_inserts_code);

primitive(/*1500:*/
#line 25396 "tex.w"
375
/*:1500*/
#line 5266 "tex.w"
,assign_int,int_base+error_context_lines_code);


/*:238*//*248:*/
#line 5419 "tex.w"

primitive(/*1503:*/
#line 25405 "tex.w"
378
/*:1503*/
#line 5420 "tex.w"
,assign_dimen,dimen_base+par_indent_code);

primitive(/*1504:*/
#line 25408 "tex.w"
379
/*:1504*/
#line 5422 "tex.w"
,assign_dimen,dimen_base+math_surround_code);

primitive(/*1505:*/
#line 25411 "tex.w"
380
/*:1505*/
#line 5424 "tex.w"
,assign_dimen,dimen_base+line_skip_limit_code);

primitive(/*1506:*/
#line 25414 "tex.w"
381
/*:1506*/
#line 5426 "tex.w"
,assign_dimen,dimen_base+hsize_code);

primitive(/*1507:*/
#line 25417 "tex.w"
382
/*:1507*/
#line 5428 "tex.w"
,assign_dimen,dimen_base+vsize_code);

primitive(/*1508:*/
#line 25420 "tex.w"
383
/*:1508*/
#line 5430 "tex.w"
,assign_dimen,dimen_base+max_depth_code);

primitive(/*1509:*/
#line 25423 "tex.w"
384
/*:1509*/
#line 5432 "tex.w"
,assign_dimen,dimen_base+split_max_depth_code);

primitive(/*1510:*/
#line 25426 "tex.w"
385
/*:1510*/
#line 5434 "tex.w"
,assign_dimen,dimen_base+box_max_depth_code);

primitive(/*1511:*/
#line 25429 "tex.w"
386
/*:1511*/
#line 5436 "tex.w"
,assign_dimen,dimen_base+hfuzz_code);

primitive(/*1512:*/
#line 25432 "tex.w"
387
/*:1512*/
#line 5438 "tex.w"
,assign_dimen,dimen_base+vfuzz_code);

primitive(/*1513:*/
#line 25435 "tex.w"
388
/*:1513*/
#line 5440 "tex.w"
,
assign_dimen,dimen_base+delimiter_shortfall_code);

primitive(/*1514:*/
#line 25438 "tex.w"
389
/*:1514*/
#line 5443 "tex.w"
,
assign_dimen,dimen_base+null_delimiter_space_code);

primitive(/*1515:*/
#line 25441 "tex.w"
390
/*:1515*/
#line 5446 "tex.w"
,assign_dimen,dimen_base+script_space_code);

primitive(/*1516:*/
#line 25444 "tex.w"
391
/*:1516*/
#line 5448 "tex.w"
,assign_dimen,dimen_base+pre_display_size_code);

primitive(/*1517:*/
#line 25447 "tex.w"
392
/*:1517*/
#line 5450 "tex.w"
,assign_dimen,dimen_base+display_width_code);

primitive(/*1518:*/
#line 25450 "tex.w"
393
/*:1518*/
#line 5452 "tex.w"
,assign_dimen,dimen_base+display_indent_code);

primitive(/*1519:*/
#line 25453 "tex.w"
394
/*:1519*/
#line 5454 "tex.w"
,assign_dimen,dimen_base+overfull_rule_code);

primitive(/*1520:*/
#line 25456 "tex.w"
395
/*:1520*/
#line 5456 "tex.w"
,assign_dimen,dimen_base+hang_indent_code);

primitive(/*1521:*/
#line 25459 "tex.w"
396
/*:1521*/
#line 5458 "tex.w"
,assign_dimen,dimen_base+h_offset_code);

primitive(/*1522:*/
#line 25462 "tex.w"
397
/*:1522*/
#line 5460 "tex.w"
,assign_dimen,dimen_base+v_offset_code);

primitive(/*1523:*/
#line 25465 "tex.w"
398
/*:1523*/
#line 5462 "tex.w"
,assign_dimen,dimen_base+emergency_stretch_code);


/*:248*//*265:*/
#line 5701 "tex.w"

primitive(' ',ex_space,0);

primitive('/',ital_corr,0);

primitive(/*1530:*/
#line 25486 "tex.w"
405
/*:1530*/
#line 5706 "tex.w"
,accent,0);

primitive(/*1531:*/
#line 25489 "tex.w"
406
/*:1531*/
#line 5708 "tex.w"
,advance,0);

primitive(/*1532:*/
#line 25492 "tex.w"
407
/*:1532*/
#line 5710 "tex.w"
,after_assignment,0);

primitive(/*1533:*/
#line 25495 "tex.w"
408
/*:1533*/
#line 5712 "tex.w"
,after_group,0);

primitive(/*1534:*/
#line 25498 "tex.w"
409
/*:1534*/
#line 5714 "tex.w"
,begin_group,0);

primitive(/*1535:*/
#line 25501 "tex.w"
410
/*:1535*/
#line 5716 "tex.w"
,char_num,0);

primitive(/*1526:*/
#line 25474 "tex.w"
401
/*:1526*/
#line 5718 "tex.w"
,cs_name,0);

primitive(/*1536:*/
#line 25504 "tex.w"
411
/*:1536*/
#line 5720 "tex.w"
,delim_num,0);

primitive(/*1537:*/
#line 25507 "tex.w"
412
/*:1537*/
#line 5722 "tex.w"
,divide,0);

primitive(/*1527:*/
#line 25477 "tex.w"
402
/*:1527*/
#line 5724 "tex.w"
,end_cs_name,0);

primitive(/*1538:*/
#line 25510 "tex.w"
413
/*:1538*/
#line 5726 "tex.w"
,end_group,0);

text(frozen_end_group)= /*1538:*/
#line 25510 "tex.w"
413
/*:1538*/
#line 5728 "tex.w"
;eqtb[frozen_end_group]= eqtb[cur_val];
primitive(/*1539:*/
#line 25513 "tex.w"
414
/*:1539*/
#line 5729 "tex.w"
,expand_after,0);

primitive(/*1540:*/
#line 25516 "tex.w"
415
/*:1540*/
#line 5731 "tex.w"
,def_font,0);

primitive(/*1541:*/
#line 25519 "tex.w"
416
/*:1541*/
#line 5733 "tex.w"
,assign_font_dimen,0);

primitive(/*1542:*/
#line 25522 "tex.w"
417
/*:1542*/
#line 5735 "tex.w"
,halign,0);

primitive(/*1543:*/
#line 25525 "tex.w"
418
/*:1543*/
#line 5737 "tex.w"
,hrule,0);

primitive(/*1544:*/
#line 25528 "tex.w"
419
/*:1544*/
#line 5739 "tex.w"
,ignore_spaces,0);

primitive(/*1390:*/
#line 25066 "tex.w"
265
/*:1390*/
#line 5741 "tex.w"
,insert,0);

primitive(/*1401:*/
#line 25099 "tex.w"
276
/*:1401*/
#line 5743 "tex.w"
,mark,0);

primitive(/*1545:*/
#line 25531 "tex.w"
420
/*:1545*/
#line 5745 "tex.w"
,math_accent,0);

primitive(/*1546:*/
#line 25534 "tex.w"
421
/*:1546*/
#line 5747 "tex.w"
,math_char_num,0);

primitive(/*1547:*/
#line 25537 "tex.w"
422
/*:1547*/
#line 5749 "tex.w"
,math_choice,0);

primitive(/*1548:*/
#line 25540 "tex.w"
423
/*:1548*/
#line 5751 "tex.w"
,multiply,0);

primitive(/*1549:*/
#line 25543 "tex.w"
424
/*:1549*/
#line 5753 "tex.w"
,no_align,0);

primitive(/*1550:*/
#line 25546 "tex.w"
425
/*:1550*/
#line 5755 "tex.w"
,no_boundary,0);

primitive(/*1551:*/
#line 25549 "tex.w"
426
/*:1551*/
#line 5757 "tex.w"
,no_expand,0);

primitive(/*1392:*/
#line 25072 "tex.w"
267
/*:1392*/
#line 5759 "tex.w"
,non_script,0);

primitive(/*1552:*/
#line 25552 "tex.w"
427
/*:1552*/
#line 5761 "tex.w"
,omit,0);

primitive(/*1436:*/
#line 25204 "tex.w"
311
/*:1436*/
#line 5763 "tex.w"
,set_shape,0);

primitive(/*1553:*/
#line 25555 "tex.w"
428
/*:1553*/
#line 5765 "tex.w"
,break_penalty,0);

primitive(/*1554:*/
#line 25558 "tex.w"
429
/*:1554*/
#line 5767 "tex.w"
,set_prev_graf,0);

primitive(/*1555:*/
#line 25561 "tex.w"
430
/*:1555*/
#line 5769 "tex.w"
,radical,0);

primitive(/*1556:*/
#line 25564 "tex.w"
431
/*:1556*/
#line 5771 "tex.w"
,read_to_cs,0);

primitive(/*1557:*/
#line 25567 "tex.w"
432
/*:1557*/
#line 5773 "tex.w"
,relax,256);

text(frozen_relax)= /*1557:*/
#line 25567 "tex.w"
432
/*:1557*/
#line 5775 "tex.w"
;eqtb[frozen_relax]= eqtb[cur_val];
primitive(/*1558:*/
#line 25570 "tex.w"
433
/*:1558*/
#line 5776 "tex.w"
,set_box,0);

primitive(/*1559:*/
#line 25573 "tex.w"
434
/*:1559*/
#line 5778 "tex.w"
,the,0);

primitive(/*1435:*/
#line 25201 "tex.w"
310
/*:1435*/
#line 5780 "tex.w"
,toks_register,0);

primitive(/*1402:*/
#line 25102 "tex.w"
277
/*:1402*/
#line 5782 "tex.w"
,vadjust,0);

primitive(/*1560:*/
#line 25576 "tex.w"
435
/*:1560*/
#line 5784 "tex.w"
,valign,0);

primitive(/*1561:*/
#line 25579 "tex.w"
436
/*:1561*/
#line 5786 "tex.w"
,vcenter,0);

primitive(/*1562:*/
#line 25582 "tex.w"
437
/*:1562*/
#line 5788 "tex.w"
,vrule,0);


/*:265*//*334:*/
#line 7198 "tex.w"

primitive(/*1569:*/
#line 25603 "tex.w"
444
/*:1569*/
#line 7199 "tex.w"
,par_end,256);

par_loc= cur_val;par_token= cs_token_flag+par_loc;

/*:334*//*376:*/
#line 7848 "tex.w"

primitive(/*1570:*/
#line 25606 "tex.w"
445
/*:1570*/
#line 7849 "tex.w"
,input,0);

primitive(/*1571:*/
#line 25609 "tex.w"
446
/*:1571*/
#line 7851 "tex.w"
,input,1);


/*:376*//*384:*/
#line 7933 "tex.w"

primitive(/*1572:*/
#line 25612 "tex.w"
447
/*:1572*/
#line 7934 "tex.w"
,top_bot_mark,top_mark_code);

primitive(/*1573:*/
#line 25615 "tex.w"
448
/*:1573*/
#line 7936 "tex.w"
,top_bot_mark,first_mark_code);

primitive(/*1574:*/
#line 25618 "tex.w"
449
/*:1574*/
#line 7938 "tex.w"
,top_bot_mark,bot_mark_code);

primitive(/*1575:*/
#line 25621 "tex.w"
450
/*:1575*/
#line 7940 "tex.w"
,top_bot_mark,split_first_mark_code);

primitive(/*1576:*/
#line 25624 "tex.w"
451
/*:1576*/
#line 7942 "tex.w"
,top_bot_mark,split_bot_mark_code);


/*:384*//*411:*/
#line 8378 "tex.w"

primitive(/*1501:*/
#line 25399 "tex.w"
376
/*:1501*/
#line 8379 "tex.w"
,register,int_val);

primitive(/*1524:*/
#line 25468 "tex.w"
399
/*:1524*/
#line 8381 "tex.w"
,register,dimen_val);

primitive(/*1423:*/
#line 25165 "tex.w"
298
/*:1423*/
#line 8383 "tex.w"
,register,glue_val);

primitive(/*1424:*/
#line 25168 "tex.w"
299
/*:1424*/
#line 8385 "tex.w"
,register,mu_val);


/*:411*//*416:*/
#line 8472 "tex.w"

primitive(/*1577:*/
#line 25627 "tex.w"
452
/*:1577*/
#line 8473 "tex.w"
,set_aux,hmode);

primitive(/*1578:*/
#line 25630 "tex.w"
453
/*:1578*/
#line 8475 "tex.w"
,set_aux,vmode);

primitive(/*1579:*/
#line 25633 "tex.w"
454
/*:1579*/
#line 8477 "tex.w"
,set_page_int,0);

primitive(/*1580:*/
#line 25636 "tex.w"
455
/*:1580*/
#line 8479 "tex.w"
,set_page_int,1);

primitive(/*1581:*/
#line 25639 "tex.w"
456
/*:1581*/
#line 8481 "tex.w"
,set_box_dimen,width_offset);

primitive(/*1582:*/
#line 25642 "tex.w"
457
/*:1582*/
#line 8483 "tex.w"
,set_box_dimen,height_offset);

primitive(/*1583:*/
#line 25645 "tex.w"
458
/*:1583*/
#line 8485 "tex.w"
,set_box_dimen,depth_offset);

primitive(/*1584:*/
#line 25648 "tex.w"
459
/*:1584*/
#line 8487 "tex.w"
,last_item,int_val);

primitive(/*1585:*/
#line 25651 "tex.w"
460
/*:1585*/
#line 8489 "tex.w"
,last_item,dimen_val);

primitive(/*1586:*/
#line 25654 "tex.w"
461
/*:1586*/
#line 8491 "tex.w"
,last_item,glue_val);

primitive(/*1587:*/
#line 25657 "tex.w"
462
/*:1587*/
#line 8493 "tex.w"
,last_item,input_line_no_code);

primitive(/*1588:*/
#line 25660 "tex.w"
463
/*:1588*/
#line 8495 "tex.w"
,last_item,badness_code);


/*:416*//*468:*/
#line 9273 "tex.w"

primitive(/*1605:*/
#line 25711 "tex.w"
480
/*:1605*/
#line 9274 "tex.w"
,convert,number_code);

primitive(/*1606:*/
#line 25714 "tex.w"
481
/*:1606*/
#line 9276 "tex.w"
,convert,roman_numeral_code);

primitive(/*1607:*/
#line 25717 "tex.w"
482
/*:1607*/
#line 9278 "tex.w"
,convert,string_code);

primitive(/*1608:*/
#line 25720 "tex.w"
483
/*:1608*/
#line 9280 "tex.w"
,convert,meaning_code);

primitive(/*1609:*/
#line 25723 "tex.w"
484
/*:1609*/
#line 9282 "tex.w"
,convert,font_name_code);

primitive(/*1610:*/
#line 25726 "tex.w"
485
/*:1610*/
#line 9284 "tex.w"
,convert,job_name_code);


/*:468*//*487:*/
#line 9589 "tex.w"

primitive(/*1611:*/
#line 25729 "tex.w"
486
/*:1611*/
#line 9590 "tex.w"
,if_test,if_char_code);

primitive(/*1612:*/
#line 25732 "tex.w"
487
/*:1612*/
#line 9592 "tex.w"
,if_test,if_cat_code);

primitive(/*1613:*/
#line 25735 "tex.w"
488
/*:1613*/
#line 9594 "tex.w"
,if_test,if_int_code);

primitive(/*1614:*/
#line 25738 "tex.w"
489
/*:1614*/
#line 9596 "tex.w"
,if_test,if_dim_code);

primitive(/*1615:*/
#line 25741 "tex.w"
490
/*:1615*/
#line 9598 "tex.w"
,if_test,if_odd_code);

primitive(/*1616:*/
#line 25744 "tex.w"
491
/*:1616*/
#line 9600 "tex.w"
,if_test,if_vmode_code);

primitive(/*1617:*/
#line 25747 "tex.w"
492
/*:1617*/
#line 9602 "tex.w"
,if_test,if_hmode_code);

primitive(/*1618:*/
#line 25750 "tex.w"
493
/*:1618*/
#line 9604 "tex.w"
,if_test,if_mmode_code);

primitive(/*1619:*/
#line 25753 "tex.w"
494
/*:1619*/
#line 9606 "tex.w"
,if_test,if_inner_code);

primitive(/*1620:*/
#line 25756 "tex.w"
495
/*:1620*/
#line 9608 "tex.w"
,if_test,if_void_code);

primitive(/*1621:*/
#line 25759 "tex.w"
496
/*:1621*/
#line 9610 "tex.w"
,if_test,if_hbox_code);

primitive(/*1622:*/
#line 25762 "tex.w"
497
/*:1622*/
#line 9612 "tex.w"
,if_test,if_vbox_code);

primitive(/*1623:*/
#line 25765 "tex.w"
498
/*:1623*/
#line 9614 "tex.w"
,if_test,ifx_code);

primitive(/*1624:*/
#line 25768 "tex.w"
499
/*:1624*/
#line 9616 "tex.w"
,if_test,if_eof_code);

primitive(/*1625:*/
#line 25771 "tex.w"
500
/*:1625*/
#line 9618 "tex.w"
,if_test,if_true_code);

primitive(/*1626:*/
#line 25774 "tex.w"
501
/*:1626*/
#line 9620 "tex.w"
,if_test,if_false_code);

primitive(/*1627:*/
#line 25777 "tex.w"
502
/*:1627*/
#line 9622 "tex.w"
,if_test,if_case_code);


/*:487*//*491:*/
#line 9678 "tex.w"

primitive(/*1628:*/
#line 25780 "tex.w"
503
/*:1628*/
#line 9679 "tex.w"
,fi_or_else,fi_code);

text(frozen_fi)= /*1628:*/
#line 25780 "tex.w"
503
/*:1628*/
#line 9681 "tex.w"
;eqtb[frozen_fi]= eqtb[cur_val];
primitive(/*1629:*/
#line 25783 "tex.w"
504
/*:1629*/
#line 9682 "tex.w"
,fi_or_else,or_code);

primitive(/*1630:*/
#line 25786 "tex.w"
505
/*:1630*/
#line 9684 "tex.w"
,fi_or_else,else_code);


/*:491*//*553:*/
#line 10835 "tex.w"

primitive(/*1639:*/
#line 25813 "tex.w"
514
/*:1639*/
#line 10836 "tex.w"
,set_font,null_font);

text(frozen_null_font)= /*1639:*/
#line 25813 "tex.w"
514
/*:1639*/
#line 10838 "tex.w"
;eqtb[frozen_null_font]= eqtb[cur_val];

/*:553*//*780:*/
#line 15416 "tex.w"

primitive(/*1669:*/
#line 25903 "tex.w"
544
/*:1669*/
#line 15417 "tex.w"
,tab_mark,span_code);

primitive(/*1670:*/
#line 25906 "tex.w"
545
/*:1670*/
#line 15419 "tex.w"
,car_ret,cr_code);

text(frozen_cr)= /*1670:*/
#line 25906 "tex.w"
545
/*:1670*/
#line 15421 "tex.w"
;eqtb[frozen_cr]= eqtb[cur_val];
primitive(/*1671:*/
#line 25909 "tex.w"
546
/*:1671*/
#line 15422 "tex.w"
,car_ret,cr_cr_code);

text(frozen_end_template)= /*1672:*/
#line 25912 "tex.w"
547
/*:1672*/
#line 15424 "tex.w"
;text(frozen_endv)= /*1672:*/
#line 25912 "tex.w"
547
/*:1672*/
#line 15424 "tex.w"
;
eq_type(frozen_endv)= endv;equiv(frozen_endv)= null_list;
eq_level(frozen_endv)= level_one;
eqtb[frozen_end_template]= eqtb[frozen_endv];
eq_type(frozen_end_template)= end_template;

/*:780*//*983:*/
#line 19251 "tex.w"

primitive(/*1689:*/
#line 25963 "tex.w"
564
/*:1689*/
#line 19252 "tex.w"
,set_page_dimen,0);

primitive(/*1690:*/
#line 25966 "tex.w"
565
/*:1690*/
#line 19254 "tex.w"
,set_page_dimen,1);

primitive(/*1691:*/
#line 25969 "tex.w"
566
/*:1691*/
#line 19256 "tex.w"
,set_page_dimen,2);

primitive(/*1692:*/
#line 25972 "tex.w"
567
/*:1692*/
#line 19258 "tex.w"
,set_page_dimen,3);

primitive(/*1693:*/
#line 25975 "tex.w"
568
/*:1693*/
#line 19260 "tex.w"
,set_page_dimen,4);

primitive(/*1694:*/
#line 25978 "tex.w"
569
/*:1694*/
#line 19262 "tex.w"
,set_page_dimen,5);

primitive(/*1695:*/
#line 25981 "tex.w"
570
/*:1695*/
#line 19264 "tex.w"
,set_page_dimen,6);

primitive(/*1696:*/
#line 25984 "tex.w"
571
/*:1696*/
#line 19266 "tex.w"
,set_page_dimen,7);


/*:983*//*1052:*/
#line 20471 "tex.w"

primitive(/*1698:*/
#line 25990 "tex.w"
573
/*:1698*/
#line 20472 "tex.w"
,stop,0);

primitive(/*1699:*/
#line 25993 "tex.w"
574
/*:1699*/
#line 20474 "tex.w"
,stop,1);


/*:1052*//*1058:*/
#line 20547 "tex.w"

primitive(/*1700:*/
#line 25996 "tex.w"
575
/*:1700*/
#line 20548 "tex.w"
,hskip,skip_code);

primitive(/*1701:*/
#line 25999 "tex.w"
576
/*:1701*/
#line 20550 "tex.w"
,hskip,fil_code);

primitive(/*1702:*/
#line 26002 "tex.w"
577
/*:1702*/
#line 20552 "tex.w"
,hskip,fill_code);

primitive(/*1703:*/
#line 26005 "tex.w"
578
/*:1703*/
#line 20554 "tex.w"
,hskip,ss_code);

primitive(/*1704:*/
#line 26008 "tex.w"
579
/*:1704*/
#line 20556 "tex.w"
,hskip,fil_neg_code);

primitive(/*1705:*/
#line 26011 "tex.w"
580
/*:1705*/
#line 20558 "tex.w"
,vskip,skip_code);

primitive(/*1706:*/
#line 26014 "tex.w"
581
/*:1706*/
#line 20560 "tex.w"
,vskip,fil_code);

primitive(/*1707:*/
#line 26017 "tex.w"
582
/*:1707*/
#line 20562 "tex.w"
,vskip,fill_code);

primitive(/*1708:*/
#line 26020 "tex.w"
583
/*:1708*/
#line 20564 "tex.w"
,vskip,ss_code);

primitive(/*1709:*/
#line 26023 "tex.w"
584
/*:1709*/
#line 20566 "tex.w"
,vskip,fil_neg_code);

primitive(/*1393:*/
#line 25075 "tex.w"
268
/*:1393*/
#line 20568 "tex.w"
,mskip,mskip_code);

primitive(/*1396:*/
#line 25084 "tex.w"
271
/*:1396*/
#line 20570 "tex.w"
,kern,explicit);

primitive(/*1397:*/
#line 25087 "tex.w"
272
/*:1397*/
#line 20572 "tex.w"
,mkern,mu_glue);


/*:1058*//*1071:*/
#line 20804 "tex.w"

primitive(/*1712:*/
#line 26032 "tex.w"
587
/*:1712*/
#line 20805 "tex.w"
,hmove,1);

primitive(/*1713:*/
#line 26035 "tex.w"
588
/*:1713*/
#line 20807 "tex.w"
,hmove,0);

primitive(/*1714:*/
#line 26038 "tex.w"
589
/*:1714*/
#line 20809 "tex.w"
,vmove,1);

primitive(/*1715:*/
#line 26041 "tex.w"
590
/*:1715*/
#line 20811 "tex.w"
,vmove,0);


primitive(/*1437:*/
#line 25207 "tex.w"
312
/*:1437*/
#line 20814 "tex.w"
,make_box,box_code);

primitive(/*1716:*/
#line 26044 "tex.w"
591
/*:1716*/
#line 20816 "tex.w"
,make_box,copy_code);

primitive(/*1717:*/
#line 26047 "tex.w"
592
/*:1717*/
#line 20818 "tex.w"
,make_box,last_box_code);

primitive(/*1687:*/
#line 25957 "tex.w"
562
/*:1687*/
#line 20820 "tex.w"
,make_box,vsplit_code);

primitive(/*1718:*/
#line 26050 "tex.w"
593
/*:1718*/
#line 20822 "tex.w"
,make_box,vtop_code);

primitive(/*1688:*/
#line 25960 "tex.w"
563
/*:1688*/
#line 20824 "tex.w"
,make_box,vtop_code+vmode);

primitive(/*1719:*/
#line 26053 "tex.w"
594
/*:1719*/
#line 20826 "tex.w"
,make_box,vtop_code+hmode);

primitive(/*1720:*/
#line 26056 "tex.w"
595
/*:1720*/
#line 20828 "tex.w"
,leader_ship,a_leaders-1);

primitive(/*1721:*/
#line 26059 "tex.w"
596
/*:1721*/
#line 20830 "tex.w"
,leader_ship,a_leaders);

primitive(/*1722:*/
#line 26062 "tex.w"
597
/*:1722*/
#line 20832 "tex.w"
,leader_ship,c_leaders);

primitive(/*1723:*/
#line 26065 "tex.w"
598
/*:1723*/
#line 20834 "tex.w"
,leader_ship,x_leaders);


/*:1071*//*1088:*/
#line 21092 "tex.w"

primitive(/*1724:*/
#line 26068 "tex.w"
599
/*:1724*/
#line 21093 "tex.w"
,start_par,1);

primitive(/*1725:*/
#line 26071 "tex.w"
600
/*:1725*/
#line 21095 "tex.w"
,start_par,0);


/*:1088*//*1107:*/
#line 21300 "tex.w"

primitive(/*1726:*/
#line 26074 "tex.w"
601
/*:1726*/
#line 21301 "tex.w"
,remove_item,penalty_node);

primitive(/*1727:*/
#line 26077 "tex.w"
602
/*:1727*/
#line 21303 "tex.w"
,remove_item,kern_node);

primitive(/*1728:*/
#line 26080 "tex.w"
603
/*:1728*/
#line 21305 "tex.w"
,remove_item,glue_node);

primitive(/*1729:*/
#line 26083 "tex.w"
604
/*:1729*/
#line 21307 "tex.w"
,un_hbox,box_code);

primitive(/*1730:*/
#line 26086 "tex.w"
605
/*:1730*/
#line 21309 "tex.w"
,un_hbox,copy_code);

primitive(/*1731:*/
#line 26089 "tex.w"
606
/*:1731*/
#line 21311 "tex.w"
,un_vbox,box_code);

primitive(/*1732:*/
#line 26092 "tex.w"
607
/*:1732*/
#line 21313 "tex.w"
,un_vbox,copy_code);


/*:1107*//*1114:*/
#line 21381 "tex.w"

primitive('-',discretionary,1);

primitive(/*1400:*/
#line 25096 "tex.w"
275
/*:1400*/
#line 21384 "tex.w"
,discretionary,0);


/*:1114*//*1141:*/
#line 21730 "tex.w"

primitive(/*1733:*/
#line 26095 "tex.w"
608
/*:1733*/
#line 21731 "tex.w"
,eq_no,0);

primitive(/*1734:*/
#line 26098 "tex.w"
609
/*:1734*/
#line 21733 "tex.w"
,eq_no,1);


/*:1141*//*1156:*/
#line 21966 "tex.w"

primitive(/*1649:*/
#line 25843 "tex.w"
524
/*:1649*/
#line 21967 "tex.w"
,math_comp,ord_noad);

primitive(/*1650:*/
#line 25846 "tex.w"
525
/*:1650*/
#line 21969 "tex.w"
,math_comp,op_noad);

primitive(/*1651:*/
#line 25849 "tex.w"
526
/*:1651*/
#line 21971 "tex.w"
,math_comp,bin_noad);

primitive(/*1652:*/
#line 25852 "tex.w"
527
/*:1652*/
#line 21973 "tex.w"
,math_comp,rel_noad);

primitive(/*1653:*/
#line 25855 "tex.w"
528
/*:1653*/
#line 21975 "tex.w"
,math_comp,open_noad);

primitive(/*1654:*/
#line 25858 "tex.w"
529
/*:1654*/
#line 21977 "tex.w"
,math_comp,close_noad);

primitive(/*1655:*/
#line 25861 "tex.w"
530
/*:1655*/
#line 21979 "tex.w"
,math_comp,punct_noad);

primitive(/*1656:*/
#line 25864 "tex.w"
531
/*:1656*/
#line 21981 "tex.w"
,math_comp,inner_noad);

primitive(/*1658:*/
#line 25870 "tex.w"
533
/*:1658*/
#line 21983 "tex.w"
,math_comp,under_noad);

primitive(/*1657:*/
#line 25867 "tex.w"
532
/*:1657*/
#line 21985 "tex.w"
,math_comp,over_noad);

primitive(/*1735:*/
#line 26101 "tex.w"
610
/*:1735*/
#line 21987 "tex.w"
,limit_switch,normal);

primitive(/*1661:*/
#line 25879 "tex.w"
536
/*:1661*/
#line 21989 "tex.w"
,limit_switch,limits);

primitive(/*1662:*/
#line 25882 "tex.w"
537
/*:1662*/
#line 21991 "tex.w"
,limit_switch,no_limits);


/*:1156*//*1169:*/
#line 22120 "tex.w"

primitive(/*1645:*/
#line 25831 "tex.w"
520
/*:1645*/
#line 22121 "tex.w"
,math_style,display_style);

primitive(/*1646:*/
#line 25834 "tex.w"
521
/*:1646*/
#line 22123 "tex.w"
,math_style,text_style);

primitive(/*1647:*/
#line 25837 "tex.w"
522
/*:1647*/
#line 22125 "tex.w"
,math_style,script_style);

primitive(/*1648:*/
#line 25840 "tex.w"
523
/*:1648*/
#line 22127 "tex.w"
,math_style,script_script_style);


/*:1169*//*1178:*/
#line 22219 "tex.w"

primitive(/*1736:*/
#line 26104 "tex.w"
611
/*:1736*/
#line 22220 "tex.w"
,above,above_code);

primitive(/*1737:*/
#line 26107 "tex.w"
612
/*:1737*/
#line 22222 "tex.w"
,above,over_code);

primitive(/*1738:*/
#line 26110 "tex.w"
613
/*:1738*/
#line 22224 "tex.w"
,above,atop_code);

primitive(/*1739:*/
#line 26113 "tex.w"
614
/*:1739*/
#line 22226 "tex.w"
,above,delimited_code+above_code);

primitive(/*1740:*/
#line 26116 "tex.w"
615
/*:1740*/
#line 22228 "tex.w"
,above,delimited_code+over_code);

primitive(/*1741:*/
#line 26119 "tex.w"
616
/*:1741*/
#line 22230 "tex.w"
,above,delimited_code+atop_code);


/*:1178*//*1188:*/
#line 22347 "tex.w"

primitive(/*1659:*/
#line 25873 "tex.w"
534
/*:1659*/
#line 22348 "tex.w"
,left_right,left_noad);

primitive(/*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 22350 "tex.w"
,left_right,right_noad);

text(frozen_right)= /*1660:*/
#line 25876 "tex.w"
535
/*:1660*/
#line 22352 "tex.w"
;eqtb[frozen_right]= eqtb[cur_val];

/*:1188*//*1208:*/
#line 22651 "tex.w"

primitive(/*1743:*/
#line 26125 "tex.w"
618
/*:1743*/
#line 22652 "tex.w"
,prefix,1);

primitive(/*1744:*/
#line 26128 "tex.w"
619
/*:1744*/
#line 22654 "tex.w"
,prefix,2);

primitive(/*1745:*/
#line 26131 "tex.w"
620
/*:1745*/
#line 22656 "tex.w"
,prefix,4);

primitive(/*1746:*/
#line 26134 "tex.w"
621
/*:1746*/
#line 22658 "tex.w"
,def,0);

primitive(/*1747:*/
#line 26137 "tex.w"
622
/*:1747*/
#line 22660 "tex.w"
,def,1);

primitive(/*1748:*/
#line 26140 "tex.w"
623
/*:1748*/
#line 22662 "tex.w"
,def,2);

primitive(/*1749:*/
#line 26143 "tex.w"
624
/*:1749*/
#line 22664 "tex.w"
,def,3);


/*:1208*//*1219:*/
#line 22821 "tex.w"

primitive(/*1752:*/
#line 26152 "tex.w"
627
/*:1752*/
#line 22822 "tex.w"
,let,normal);

primitive(/*1753:*/
#line 26155 "tex.w"
628
/*:1753*/
#line 22824 "tex.w"
,let,normal+1);


/*:1219*//*1222:*/
#line 22863 "tex.w"

primitive(/*1754:*/
#line 26158 "tex.w"
629
/*:1754*/
#line 22864 "tex.w"
,shorthand_def,char_def_code);

primitive(/*1755:*/
#line 26161 "tex.w"
630
/*:1755*/
#line 22866 "tex.w"
,shorthand_def,math_char_def_code);

primitive(/*1756:*/
#line 26164 "tex.w"
631
/*:1756*/
#line 22868 "tex.w"
,shorthand_def,count_def_code);

primitive(/*1757:*/
#line 26167 "tex.w"
632
/*:1757*/
#line 22870 "tex.w"
,shorthand_def,dimen_def_code);

primitive(/*1758:*/
#line 26170 "tex.w"
633
/*:1758*/
#line 22872 "tex.w"
,shorthand_def,skip_def_code);

primitive(/*1759:*/
#line 26173 "tex.w"
634
/*:1759*/
#line 22874 "tex.w"
,shorthand_def,mu_skip_def_code);

primitive(/*1760:*/
#line 26176 "tex.w"
635
/*:1760*/
#line 22876 "tex.w"
,shorthand_def,toks_def_code);


/*:1222*//*1230:*/
#line 23003 "tex.w"

primitive(/*1441:*/
#line 25219 "tex.w"
316
/*:1441*/
#line 23004 "tex.w"
,def_code,cat_code_base);

primitive(/*1445:*/
#line 25231 "tex.w"
320
/*:1445*/
#line 23006 "tex.w"
,def_code,math_code_base);

primitive(/*1442:*/
#line 25222 "tex.w"
317
/*:1442*/
#line 23008 "tex.w"
,def_code,lc_code_base);

primitive(/*1443:*/
#line 25225 "tex.w"
318
/*:1443*/
#line 23010 "tex.w"
,def_code,uc_code_base);

primitive(/*1444:*/
#line 25228 "tex.w"
319
/*:1444*/
#line 23012 "tex.w"
,def_code,sf_code_base);

primitive(/*1502:*/
#line 25402 "tex.w"
377
/*:1502*/
#line 23014 "tex.w"
,def_code,del_code_base);

primitive(/*1438:*/
#line 25210 "tex.w"
313
/*:1438*/
#line 23016 "tex.w"
,def_family,math_font_base);

primitive(/*1439:*/
#line 25213 "tex.w"
314
/*:1439*/
#line 23018 "tex.w"
,def_family,math_font_base+script_size);

primitive(/*1440:*/
#line 25216 "tex.w"
315
/*:1440*/
#line 23020 "tex.w"
,def_family,math_font_base+script_script_size);


/*:1230*//*1250:*/
#line 23288 "tex.w"

primitive(/*1683:*/
#line 25945 "tex.w"
558
/*:1683*/
#line 23289 "tex.w"
,hyph_data,0);

primitive(/*1684:*/
#line 25948 "tex.w"
559
/*:1684*/
#line 23291 "tex.w"
,hyph_data,1);


/*:1250*//*1254:*/
#line 23325 "tex.w"

primitive(/*1762:*/
#line 26182 "tex.w"
637
/*:1762*/
#line 23326 "tex.w"
,assign_font_int,0);

primitive(/*1763:*/
#line 26185 "tex.w"
638
/*:1763*/
#line 23328 "tex.w"
,assign_font_int,1);


/*:1254*//*1262:*/
#line 23424 "tex.w"

primitive(/*1383:*/
#line 25045 "tex.w"
258
/*:1383*/
#line 23425 "tex.w"
,set_interaction,batch_mode);

primitive(/*1384:*/
#line 25048 "tex.w"
259
/*:1384*/
#line 23427 "tex.w"
,set_interaction,nonstop_mode);

primitive(/*1385:*/
#line 25051 "tex.w"
260
/*:1385*/
#line 23429 "tex.w"
,set_interaction,scroll_mode);

primitive(/*1767:*/
#line 26197 "tex.w"
642
/*:1767*/
#line 23431 "tex.w"
,set_interaction,error_stop_mode);


/*:1262*//*1272:*/
#line 23490 "tex.w"

primitive(/*1768:*/
#line 26200 "tex.w"
643
/*:1768*/
#line 23491 "tex.w"
,in_stream,1);

primitive(/*1769:*/
#line 26203 "tex.w"
644
/*:1769*/
#line 23493 "tex.w"
,in_stream,0);


/*:1272*//*1277:*/
#line 23525 "tex.w"

primitive(/*1770:*/
#line 26206 "tex.w"
645
/*:1770*/
#line 23526 "tex.w"
,message,0);

primitive(/*1771:*/
#line 26209 "tex.w"
646
/*:1771*/
#line 23528 "tex.w"
,message,1);


/*:1277*//*1286:*/
#line 23592 "tex.w"

primitive(/*1772:*/
#line 26212 "tex.w"
647
/*:1772*/
#line 23593 "tex.w"
,case_shift,lc_code_base);

primitive(/*1773:*/
#line 26215 "tex.w"
648
/*:1773*/
#line 23595 "tex.w"
,case_shift,uc_code_base);


/*:1286*//*1291:*/
#line 23639 "tex.w"

primitive(/*1774:*/
#line 26218 "tex.w"
649
/*:1774*/
#line 23640 "tex.w"
,xray,show_code);

primitive(/*1775:*/
#line 26221 "tex.w"
650
/*:1775*/
#line 23642 "tex.w"
,xray,show_box_code);

primitive(/*1776:*/
#line 26224 "tex.w"
651
/*:1776*/
#line 23644 "tex.w"
,xray,show_the_code);

primitive(/*1777:*/
#line 26227 "tex.w"
652
/*:1777*/
#line 23646 "tex.w"
,xray,show_lists);


/*:1291*//*1344:*/
#line 24626 "tex.w"

primitive(/*1783:*/
#line 26245 "tex.w"
658
/*:1783*/
#line 24627 "tex.w"
,extension,open_node);

primitive(/*1568:*/
#line 25600 "tex.w"
443
/*:1568*/
#line 24629 "tex.w"
,extension,write_node);write_loc= cur_val;

primitive(/*1784:*/
#line 26248 "tex.w"
659
/*:1784*/
#line 24631 "tex.w"
,extension,close_node);

primitive(/*1785:*/
#line 26251 "tex.w"
660
/*:1785*/
#line 24633 "tex.w"
,extension,special_node);

primitive(/*1786:*/
#line 26254 "tex.w"
661
/*:1786*/
#line 24635 "tex.w"
,extension,immediate_code);

primitive(/*1787:*/
#line 26257 "tex.w"
662
/*:1787*/
#line 24637 "tex.w"
,extension,set_language_code);


/*:1344*/
#line 24438 "tex.w"
;
no_new_control_sequence= true;
}
#endif

/*:1336*//*1338:*/
#line 24491 "tex.w"

#ifdef DEBUG
void debug_help(void)
{
int k,l,m,n;
loop{wake_up_terminal;
print_nl("debug # (-1 to exit):");update_terminal;

if(fscanf(term_in.f," %d",&m)<1||
m<0)return;
else if(m==0)
{goto breakpoint;
breakpoint:m= 0;
}
else{fscanf(term_in.f," %d",&n);
switch(m){
/*1339:*/
#line 24515 "tex.w"

case 1:print_word(mem[n]);break;
case 2:print_int(info(n));break;
case 3:print_int(link(n));break;
case 4:print_word(eqtb[n]);break;
case 5:print_word(font_info[n]);break;
case 6:print_word(save_stack[n]);break;
case 7:show_box(n);break;

case 8:{breadth_max= 10000;depth_threshold= pool_size-pool_ptr-10;
show_node_list(n);
}break;
case 9:show_token_list(n,null,1000);break;
case 10:slow_print(n);break;
case 11:check_mem(n> 0);break;
case 12:search_mem(n);break;
case 13:{fscanf(term_in.f," %d",&l);print_cmd_chr(n,l);
}break;
case 14:for(k= 0;k<=n;k++)print(buffer[k]);break;
case 15:{font_in_short_display= null_font;short_display(n);
}break;
case 16:panicking= !panicking;break;

/*:1339*/
#line 24507 "tex.w"

default:print_str("?");
}
}
}
}
#endif

/*:1338*/
#line 24235 "tex.w"


/*:1330*//*1332:*/
#line 24289 "tex.w"
int main(void){
history= fatal_error_stop;
t_open_out;
if(ready_already==314159)goto start_of_TEX;
/*14:*/
#line 473 "tex.w"

bad= 0;
if((half_error_line<30)||(half_error_line> error_line-15))bad= 1;
if(max_print_line<60)bad= 2;
if(dvi_buf_size%8!=0)bad= 3;
if(mem_bot+1100> mem_top)bad= 4;
if(hash_prime> hash_size)bad= 5;
if(max_in_open>=128)bad= 6;
if(mem_top<256+11)bad= 7;

/*:14*//*111:*/
#line 2452 "tex.w"

#ifdef INIT
if((mem_min!=mem_bot)||(mem_max!=mem_top))bad= 10;
#endif

if((mem_min> mem_bot)||(mem_max<mem_top))bad= 10;
if((min_quarterword> 0)||(max_quarterword<127))bad= 11;
if((min_halfword> 0)||(max_halfword<32767))bad= 12;
if((min_quarterword<min_halfword)||
(max_quarterword> max_halfword))bad= 13;
if((mem_min<min_halfword)||(mem_max>=max_halfword)||
(mem_bot-mem_min> max_halfword+1))bad= 14;
if((font_base<min_quarterword)||(font_max> max_quarterword))bad= 15;
if(font_max> font_base+256)bad= 16;
if((save_size> max_halfword)||(max_strings> max_halfword))bad= 17;
if(buf_size> max_halfword)bad= 18;
if(max_quarterword-min_quarterword<255)bad= 19;

/*:111*//*290:*/
#line 6246 "tex.w"

if(cs_token_flag+undefined_control_sequence> max_halfword)bad= 21;

/*:290*//*521:*/
#line 10144 "tex.w"

if(format_default_length> file_name_size)bad= 31;

/*:521*//*1249:*/
#line 23283 "tex.w"

if(2*max_halfword<mem_top-mem_min)bad= 41;

/*:1249*/
#line 24293 "tex.w"

if(bad> 0)
{wterm_ln("Ouch---my internal constants have been clobbered!"
"---case %d",bad);

exit(0);
}
initialize();
#ifdef INIT
init_prim();
init_str_ptr= str_ptr;init_pool_ptr= pool_ptr;fix_date_and_time();
#endif
ready_already= 314159;
start_of_TEX:/*55:*/
#line 1438 "tex.w"

selector= term_only;tally= 0;term_offset= 0;file_offset= 0;

/*:55*//*61:*/
#line 1588 "tex.w"

wterm("%s",banner);
if(format_ident==0)wterm_ln(" (no format preloaded)");
else{slow_print(format_ident);print_ln();
}
update_terminal;

/*:61*//*527:*/
#line 10278 "tex.w"

job_name= 0;name_in_progress= false;log_opened= false;

/*:527*//*533:*/
#line 10347 "tex.w"
output_file_name= 0;

/*:533*/
#line 24306 "tex.w"
;
/*1337:*/
#line 24450 "tex.w"

{/*331:*/
#line 7153 "tex.w"

{input_ptr= 0;max_in_stack= 0;
in_open= 0;open_parens= 0;max_buf_stack= 0;
param_ptr= 0;max_param_stack= 0;
first= buf_size;do{buffer[first]= 0;decr(first);}while(!(first==0));
scanner_status= normal;warning_index= null;first= 1;
state= new_line;start= 1;index= 0;line= 0;name= 0;
force_eof= false;
align_state= 1000000;
if(!init_terminal())exit(0);
limit= last;first= last+1;
}

/*:331*/
#line 24451 "tex.w"
;
if((format_ident==0)||(buffer[loc]=='&'))
{if(format_ident!=0)initialize();
if(!open_fmt_file())exit(0);
if(!load_fmt_file())
{w_close(&fmt_file);exit(0);
}
w_close(&fmt_file);
while((loc<limit)&&(buffer[loc]==' '))incr(loc);
}
if(end_line_char_inactive)decr(limit);
else buffer[limit]= end_line_char;
fix_date_and_time();
/*765:*/
#line 15078 "tex.w"

magic_offset= str_start[math_spacing]-9*ord_noad

/*:765*/
#line 24464 "tex.w"
;
/*75:*/
#line 1788 "tex.w"

if(interaction==batch_mode)selector= no_print;else selector= term_only

/*:75*/
#line 24465 "tex.w"
;
if((loc<limit)&&(cat_code(buffer[loc])!=escape))start_input();

}

/*:1337*/
#line 24307 "tex.w"
;
history= spotless;
main_control();
final_cleanup();
close_files_and_terminate();
ready_already= 0;
return 0;}

/*:1332*/