package ugtk2; use diagnostics; use strict; use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK @icon_paths $wm_icon $grab $border); #- leave it on one line, for automatic removal of the line at package creation use locale; @ISA = qw(Exporter); %EXPORT_TAGS = ( wrappers => [ qw(gtkadd gtkadd_widget gtkappend gtkappend_page gtkappenditems gtkcombo_setpopdown_strings gtkdestroy gtkentry gtkflush gtkhide gtkmodify_font gtkmove gtkpack gtkpack2 gtkpack2_ gtkpack2__ gtkpack_ gtkpack__ gtkpowerpack gtkput gtkradio gtkresize gtkroot gtkset_active gtkset_border_width gtkset_editable gtkset_justify gtkset_alignment gtkset_layout gtkset_line_wrap gtkset_markup gtkset_modal gtkset_mousecursor gtkset_mousecursor_normal gtkset_mousecursor_wait gtkset_name gtkset_property gtkset_relief gtkset_selectable gtkset_sensitive gtkset_shadow_type gtkset_size_request gtkset_text gtkset_tip gtkset_visibility gtksetstyle gtkshow gtksignal_connect gtksize gtktext_append gtktext_insert ) ], helpers => [ qw(add2notebook add_icon_path escape_text_for_TextView_markup_format gtkcolor gtkcreate_img gtkcreate_pixbuf gtkfontinfo gtkset_background gtktreeview_children set_back_pixmap get_default_step_items set_default_step_items string_size string_width) ], create => [ qw(create_adjustment create_box_with_title create_dialog create_factory_menu create_factory_popup_menu create_hbox create_hpaned create_menu create_notebook create_okcancel create_packtable create_scrolled_window create_vbox create_vpaned _create_dialog gtkcreate_frame) ], ask => [ qw(ask_browse_tree_info ask_browse_tree_info_given_widgets ask_dir ask_from_entry ask_okcancel ask_warn ask_yesorno) ], dialogs => [ qw(err_dialog info_dialog warn_dialog) ], ); $EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ]; @EXPORT_OK = map { @$_ } values %EXPORT_TAGS; use c; use log; use common; use mygtk2 qw(gtknew); #- do not import gtkadd which conflicts with ugtk2 version use Gtk2; $border = 5; sub wm_icon() { $wm_icon || $::Wizard_pix_up || "wiz_default_up.png" } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # wrappers # # Functional-style wrappers to existing Gtk functions; allows to program in # a more functional way, and especially, first, to avoid using temp # variables, and second, to "see" directly in the code the user interface # you're building. sub gtkdestroy { mygtk2::may_destroy($_[0]) } sub gtkflush() { mygtk2::flush() } sub gtkhide { $_[0]->hide; $_[0] } sub gtkmove { $_[0]->window->move($_[1], $_[2]); $_[0] } sub gtkpack { gtkpowerpack(1, 1, @_) } sub gtkpack_ { gtkpowerpack('arg', 1, @_) } sub gtkpack__ { gtkpowerpack(0, 1, @_) } sub gtkpack2 { gtkpowerpack(1, 0, @_) } sub gtkpack2_ { gtkpowerpack('arg', 0, @_) } sub gtkpack2__ { gtkpowerpack(0, 0, @_) } sub gtkput { $_[0]->put(gtkshow($_[1]), $_[2], $_[3]); $_[0] } sub gtkresize { $_[0]->window->resize($_[1], $_[2]); $_[0] } sub gtkset_active { $_[0]->set_active($_[1]); $_[0] } sub gtkset_border_width { $_[0]->set_border_width($_[1]); $_[0] } sub gtkset_editable { $_[0]->set_editable($_[1]); $_[0] } sub gtkset_selectable { $_[0]->set_selectable($_[1]); $_[0] } sub gtkset_justify { $_[0]->set_justify($_[1]); $_[0] } sub gtkset_alignment { $_[0]->set_alignment($_[1], $_[2]); $_[0] } sub gtkset_layout { $_[0]->set_layout($_[1]); $_[0] } sub gtkset_modal { $_[0]->set_modal($_[1]); $_[0] } sub gtkset_mousecursor_normal { gtkset_mousecursor('left-ptr', @_) } sub gtkset_mousecursor_wait { gtkset_mousecursor('watch', @_) } sub gtkset_relief { $_[0]->set_relief($_[1]); $_[0] } sub gtkset_sensitive { $_[0]->set_sensitive($_[1]); $_[0] } sub gtkset_visibility { $_[0]->set_visibility($_[1]); $_[0] } sub gtkset_tip { $_[0]->set_tip($_[1], $_[2]) if $_[2]; $_[1] } sub gtkset_shadow_type { $_[0]->set_shadow_type($_[1]); $_[0] } sub gtkset_style { $_[0]->set_style($_[1]); $_[0] } sub gtkset_size_request { $_[0]->set_size_request($_[1], $_[2]); $_[0] } sub gtkshow { $_[0]->show; $_[0] } sub gtksize { $_[0]->size($_[1], $_[2]); $_[0] } sub gtkset_markup { $_[0]->set_markup($_[1]); $_[0] } sub gtkset_line_wrap { $_[0]->set_line_wrap($_[1]); $_[0] } sub gtkadd { my $w = shift; foreach my $l (@_) { ref $l or $l = gtknew('WrappedLabel', text => $l); $w->add(gtkshow($l)); } $w; } sub gtkadd_widget { my $sg = shift; map { my $l = $_; ref $l or $l = gtknew('WrappedLabel', text => $l); $sg->add_widget($l); $l; } @_; } sub gtkappend { my $w = shift; foreach my $l (@_) { ref $l or $l = gtknew('WrappedLabel', text => $l); $w->append(gtkshow($l)); } $w; } sub gtkappenditems { my $w = shift; $_->show foreach @_; $w->append_items(@_); $w; } # append page to a notebook sub gtkappend_page { my ($notebook, $page, $o_title) = @_; $notebook->append_page($page, $o_title); $notebook; } sub gtkentry { my ($o_text) = @_; my $e = gtknew('Entry'); $o_text and $e->set_text($o_text); $e; } sub gtksetstyle { my ($w, $s) = @_; $w->set_style($s); $w; } sub gtkradio { my $def = shift; my $radio; map { my $w = gtkset_active($radio = Gtk2::RadioButton->new_with_label($radio ? $radio->get_group : undef, $_), $_ eq $def); $w->get_child->set_line_wrap(1); $w; } @_; } sub gtkroot() { mygtk2::root_window() } sub gtkcolor { &mygtk2::rgb2color } sub gtkset_background { &mygtk2::set_root_window_background } sub gtkset_text { my ($w, $s) = @_; $w->set_text($s); $w; } sub gtkcombo_setpopdown_strings { my $w = shift; $w->set_popdown_strings(@_); $w; } sub gtkset_mousecursor { my ($type, $w) = @_; ($w || gtkroot())->set_cursor(Gtk2::Gdk::Cursor->new($type)); $w; } sub gtksignal_connect { my $w = shift; $w->signal_connect(@_); $w; } sub gtkset_name { my ($widget, $name) = @_; $widget->set_name($name); $widget; } sub gtkpowerpack { #- Get Default Attributes (if any). 2 syntaxes allowed : #- gtkpowerpack( {expand => 1, fill => 0}, $box...) : the attributes are picked from a specified hash ref #- gtkpowerpack(1, 0, 1, $box, ...) : the attributes are picked from the non-ref list, in the order (expand, fill, padding, pack_end). my @attributes_list = qw(expand fill padding pack_end); my $default_attrs = {}; if (ref($_[0]) eq 'HASH') { $default_attrs = shift; } elsif (!ref($_[0])) { foreach (@attributes_list) { ref($_[0]) and last; $default_attrs->{$_} = shift; } } my $box = shift; while (@_) { #- Get attributes (if specified). 4 syntaxes allowed (default values are undef ie. false...) : #- gtkpowerpack({defaultattrs}, $box, $widget1, $widget2, ...) : the attrs are picked from the default ones (if they exist) #- gtkpowerpack($box, {fill=>1, expand=>0, ...}, $widget1, ...) : the attributes are picked from a specified hash ref #- gtkpowerpack($box, [1,0,1], $widget1, ...) : the attributes are picked from the array ref : (expand, fill, padding, pack_end). #- gtkpowerpack({attr=>'arg'}, $box, 1, $widget1, 0, $widget2, etc...) : the 'arg' value will tell gtkpowerpack to always read the #- attr value directly in the arg list (avoiding confusion between value 0 and Gtk::Label("0"). That can simplify some writings but #- this arg(s) MUST then be present... my (%attr, $attrs); ref($_[0]) eq 'HASH' || ref($_[0]) eq 'ARRAY' and $attrs = shift; foreach (@attributes_list) { if (($default_attrs->{$_} || '') eq 'arg') { ref($_[0]) and internal_error "error in packing definition\n"; $attr{$_} = shift; ref($attrs) eq 'ARRAY' and shift @$attrs; } elsif (ref($attrs) eq 'HASH' && defined($attrs->{$_})) { $attr{$_} = $attrs->{$_}; } elsif (ref($attrs) eq 'ARRAY') { $attr{$_} = shift @$attrs; } elsif (defined($default_attrs->{$_})) { $attr{$_} = int $default_attrs->{$_}; } else { $attr{$_} = 0; } } #- Get and pack the widget (create it if necessary to a label...) my $widget = ref($_[0]) ? shift : gtknew('WrappedLabel', text => shift); my $pack_call = 'pack_' . ($attr{pack_end} ? 'end' : 'start'); $box->$pack_call($widget, $attr{expand}, $attr{fill}, $attr{padding}); $widget->show; } return $box; } sub gtktreeview_children { my ($model, $iter) = @_; my @l; $model or return; for (my $p = $model->iter_children($iter); $p; $p = $model->iter_next($p)) { push @l, $p; } @l; } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # create # # Helpers that allow omitting common operations on common widgets # (e.g. create widgets with good default properties) sub create_pixbutton { my ($label, $pix, $reverse_order) = @_; my @label_and_pix = (0, $label, if_($pix, 0, $pix)); gtkadd(gtknew('Button'), gtknew('HBox', spacing => 3, children => [ 1, "", $reverse_order ? reverse(@label_and_pix) : @label_and_pix, 1, "", ])); } sub create_adjustment { my ($val, $min, $max) = @_; Gtk2::Adjustment->new($val, $min, $max + 1, 1, ($max - $min + 1) / 10, 1); } sub create_scrolled_window { my ($W, $o_policy, $o_viewport_shadow) = @_; gtknew('ScrolledWindow', ($o_policy ? (h_policy => $o_policy->[0], v_policy => $o_policy->[1]) : ()), child => $W, if_($o_viewport_shadow, shadow_type => $o_viewport_shadow)); } sub n_line_size { my ($nbline, $type, $widget) = @_; my $spacing = ${{ text => 3, various => 17 }}{$type}; my %fontinfo = gtkfontinfo($widget); round($nbline * ($fontinfo{ascent} + $fontinfo{descent} + $spacing) + 8); } # Glib::Markup::escape_text() if no use for us because it'll do extra # s/X/&foobar;/ (such as s/'/'/) that are suitable for # Gtk2::Labels but are not for Gtk2::TextViews, resulting in # displaying the raw enriched text instead... # sub escape_text_for_TextView_markup_format { my ($str) = @_; my %rules = ('&' => '&', '<' => '<', '>' => '>', ); eval { $str =~ s!([&<>])!$rules{$1}!g }; #^(&(amp|lt|gt);)!!) { if (my $err = $@) { internal_error("$err\n$str"); } $str; } sub markup_to_TextView_format { my ($s, $o_default_attrs) = @_; require interactive; my $l = interactive::markup_parse($s) or return $s; foreach (@$l) { my ($_txt, $attrs) = @$_; if ($attrs) { $attrs->{weight} eq 'bold' and $attrs->{weight} = do { require Gtk2::Pango; Gtk2::Pango->PANGO_WEIGHT_BOLD }; $attrs->{size} eq 'larger' and do { $attrs->{scale} = Gtk2::Pango->scale_x_large; # equivalent to Label's size => 'larger' delete $attrs->{size}; }; } #- nb: $attrs may be empty, need special handling if $o_default_attrs is used add2hash_($_->[1] ||= {}, $o_default_attrs) if $o_default_attrs; } $l; } sub create_box_with_title { my ($o, @l) = @_; my $nbline = sum(map { round(length($_) / 60 + 1/2) } map { split "\n" } @l); my $box = gtknew('VBox'); if ($nbline == 0) { $o->{box_size} = 0; return $box; } $o->{box_size} = n_line_size($nbline, 'text', $box); if (@l <= 2 && $nbline > 4) { $o->{icon} && !$::isWizard and eval { gtkpack__($box, gtknew('HBox', border_width => 5, children_loose => [ gtkcreate_img($o->{icon}) ])) }; my $wanted = $o->{box_size}; $o->{box_size} = min(200, $o->{box_size}); my $has_scroll = $o->{box_size} < $wanted; chomp(my $text = join("\n", @l)); my $wtext = gtknew('TextView', text => markup_to_TextView_format($text)); $wtext->set_justification('fill'); $wtext->set_left_margin(12); $wtext->set_right_margin(12); $wtext->can_focus($has_scroll); my $width = 400; my $scroll = gtknew('ScrolledWindow', child => $wtext, width => $width, height => 200); $scroll->signal_connect(realize => sub { my $layout = $wtext->create_pango_layout($text); $layout->set_width(($width - 10) * Gtk2::Pango->scale); $wtext->set_size_request($width, min(200, second($layout->get_pixel_size) + 10)); $scroll->set_size_request($width, min(200, second($layout->get_pixel_size) + 10)); $o->{rwindow}->queue_resize; }); gtkpack_($box, $o->{box_allow_grow} || 0, $scroll); } else { my $new_label = sub { my ($txt) = @_; ref($txt) ? $txt : gtknew('WrappedLabel', text_markup => $txt, # workaround infamous 6 years old gnome bug #101968: width => mygtk2::get_label_width()); }; gtkpack__($box, if_($::isWizard, gtknew('Label', height => 10)), (map { my $w = $new_label->($_); $::isWizard ? gtknew('HBox', children_tight => [ gtknew('Label', width => 20), $w ]) : $w; } @l), if_($::isWizard, gtknew('Label', height => 15)), ); } } sub _create_dialog { my ($title, $o_options) = @_; my $options = $o_options || {}; #- keep compatibility with "transient" now called "transient_for" $options->{transient_for} = delete $options->{transient} if $options->{transient}; gtknew('Dialog', title => $title, position_policy => 'center-on-parent', # center-on-parent does not work modal => 1, if_(!$::isInstall, icon_no_error => wm_icon()), %$options, allow_unknown_options => 1, ); } # drakfloppy / drakfont / harddrake2 / mcc sub create_dialog { my ($title, $label, $o_options) = @_; my $ret = 0; $o_options ||= {}; $o_options->{transient_for} = $::main_window if !$o_options->{transient_for} && $::main_window; my $dialog = gtkset_border_width(_create_dialog($title, $o_options), 10); $dialog->set_border_width(10); my $text = ref($label) ? $label : $o_options->{use_markup} ? gtknew('WrappedLabel', text_markup => $label) : gtknew('WrappedLabel', text => $label); gtkpack($dialog->vbox, gtknew('HBox', children => [ if_($o_options->{stock}, 0, Gtk2::Image->new_from_stock($o_options->{stock}, 'dialog'), 0, gtknew('Label', text => " "), ), 1, $o_options->{scroll} ? create_scrolled_window($text, [ 'never', 'automatic' ]) : $text, ]), ); if ($o_options->{cancel}) { $dialog->action_area->pack_start( gtknew('Button', text => N("Cancel"), clicked => sub { $ret = 0; $dialog->destroy; Gtk2->main_quit }, can_default => 1), 1, 1, 0); } my $button = gtknew('Button', text => N("Ok"), can_default => 1, clicked => sub { $ret = 1; $dialog->destroy; Gtk2->main_quit }); $dialog->action_area->pack_start($button, 1, 1, 0); $button->grab_default; $dialog->set_has_separator(0); $dialog->show_all; Gtk2->main; $ret; } sub info_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-info' }); create_dialog($title, $label, $o_options); } sub warn_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-warning', cancel => 1 }); create_dialog($title, $label, $o_options); } sub err_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-error' }); create_dialog($title, $label, $o_options); } sub create_hbox { gtknew('HButtonBox', layout => $_[0]) } sub create_vbox { gtknew('VButtonBox', layout => $_[0]) } sub create_factory_menu_ { my ($type, $name, $window, @menu_items) = @_; my $widget = Gtk2::ItemFactory->new($type, $name, my $accel_group = Gtk2::AccelGroup->new); $widget->create_items($window, @menu_items); $window->add_accel_group($accel_group); ($widget->get_widget($name), $widget); } sub create_factory_popup_menu { create_factory_menu_("Gtk2::Menu", '<main>', @_) } sub create_factory_menu { create_factory_menu_("Gtk2::MenuBar", '<main>', @_) } sub create_menu { my $title = shift; my $w = Gtk2::MenuItem->new($title); $w->set_submenu(gtkshow(gtkappend(Gtk2::Menu->new, @_))); $w; } sub create_notebook { my $book = gtknew('Notebook'); while (@_) { my ($page, $title) = splice(@_, 0, 2); gtkappend_page($book, $page, $title); } $book; } sub create_packtable { my ($options, @l) = @_; my $w = Gtk2::Table->new(0, 0, $options->{homogeneous} || 0); add2hash_($options, { xpadding => 5, ypadding => 0 }); each_index { my ($i, $l) = ($::i, $_); each_index { my $j = $::i; if ($_) { ref $_ or $_ = gtknew('WrappedLabel', text => $_); $j != $#$l && !$options->{mcc} ? $w->attach($_, $j, $j + 1, $i, $i + 1, 'fill', 'fill', $options->{xpadding}, $options->{ypadding}) : $w->attach($_, $j, $j + 1, $i, $i + 1, ['expand', 'fill'], ref($_) eq 'Gtk2::ScrolledWindow' || $_->get_data('must_grow') ? ['expand', 'fill'] : [], 0, 0); $_->show; } } @$l; } @l; $w->set_col_spacings($options->{col_spacings} || 0); $w->set_row_spacings($options->{row_spacings} || 0); gtkset_border_width($w, $::isInstall ? 3 : 10); } my $wm_is_kde; sub create_okcancel { my ($w, $o_ok, $o_cancel, $_o_spread, @other) = @_; # @other is a list of extra buttons (usually help (eg: XFdrake/drakx caller) or advanced (eg: interactive caller) button) # extra buttons have the following structure [ label, handler, is_first, pack_right ] local $::isWizard = $::isWizard && !$w->{pop_it}; my $cancel; if (defined $o_cancel || defined $o_ok) { $cancel = $o_cancel; } elsif (!$::Wizard_no_previous) { $cancel = $::isWizard ? N("Previous") : N("Cancel"); } my $ok = defined $o_ok ? $o_ok : $::isWizard ? ($::Wizard_finished ? N("Finish") : N("Next")) : N("Ok"); my $bok = $ok && ($w->{ok} = gtknew('Button', text => $ok, clicked => $w->{ok_clicked} || sub { $w->{retval} = 1; Gtk2->main_quit })); my $bprev; if ($cancel) { $bprev = $w->{cancel} = gtknew('Button', text => $cancel, clicked => $w->{cancel_clicked} || sub { log::l("default cancel_clicked"); undef $w->{retval}; Gtk2->main_quit }); } $w->{wizcancel} = gtknew('Button', text => ($::Wizard_skip ? N("Skip") : N("Cancel")), clicked => sub { die 'wizcancel' }) if $::isWizard && !$::isInstall && !$::Wizard_no_cancel;; if (!defined $wm_is_kde) { require any; my $wm = any::running_window_manager(); $wm_is_kde = !$::isInstall && ($wm eq "kwin" || $wm eq "compiz" && fuzzy_pidofs(qr/\bkde-window-decorator\b/)) || 0; } my $f = sub { $w->{buttons}{$_[0][0]} = ref($_[0][0]) =~ /Gtk2::Button/ ? $_[0][0] : gtknew('Button', text => $_[0][0], clicked => $_[0][1]) }; my @left = ((map { $f->($_) } grep { $_->[2] && !$_->[3] } @other), map { $f->($_) } grep { !$_->[2] && !$_->[3] } @other); my @right = ((map { $f->($_) } grep { $_->[2] && $_->[3] } @other), map { $f->($_) } grep { !$_->[2] && $_->[3] } @other); # we put space to group buttons in two packs (but if there's only one when not in wizard mode) # but in the installer where all windows run in wizard mode because of design even when not in a wizard step $bprev = gtknew('Label') if !$cancel && $::Wizard_no_previous && !@left && !@right; if ($::isWizard || $w->{pop_it}) { # wizard mode: order is cancel/left_extras/white/right_extras/prev/next unshift @left, $w->{wizcancel} if $w->{wizcancel}; push @right, $bprev, $bok; } else { # normal mode: cancel/ok button follow GNOME's HIG unshift @left, ($wm_is_kde ? $bok : $bprev); push @left, gtknew('Label') if $ok && $cancel; # space buttons but if there's only one button push @right, ($wm_is_kde ? $bprev : $bok); } gtknew('VBox', spacing => 5, children_loose => [ gtknew('HBox', height => 5), gtknew('HSeparator'), gtknew('HBox', children_loose => [ map { gtknew('HButtonBox', spacing => 5, layout => $_->[1], children_loose => [ map { $_->can_default($::isWizard); $_; } grep { $_ } @{$_->[0]} ]); } ([ \@left, 'start' ], [ \@right, 'end' ], ) ]), ]); } sub _setup_paned { my ($paned, $child1, $child2, %options) = @_; foreach ([ 'resize1', 0 ], [ 'shrink1', 1 ], [ 'resize2', 1 ], [ 'shrink2', 1 ]) { $options{$_->[0]} = $_->[1] unless defined($options{$_->[0]}); } $paned->pack1(gtkshow($child1), $options{resize1}, $options{shrink1}); $paned->pack2(gtkshow($child2), $options{resize2}, $options{shrink2}); gtkshow($paned); } sub create_vpaned { _setup_paned(Gtk2::VPaned->new, @_); } sub create_hpaned { _setup_paned(Gtk2::HPaned->new, @_); } sub gtkcreate_frame { my ($label) = @_; gtknew('Frame', text => $label, border_width => 5); } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # helpers # # Functions that do typical operations on widgets, that you may need in # several places of your programs. sub _find_imgfile { my ($name) = @_; if ($name =~ m|/| && -f $name) { $name; } else { foreach my $path (icon_paths()) { foreach ('', '.png', '.xpm') { my $file = "$path/$name$_"; -f $file and return $file; } } } } # use it if you want to display an icon/image in your app sub gtkcreate_img { my ($file, $o_size) = @_; gtknew('Image', file => $file, if_($o_size, size => $o_size)); } # use it if you want to draw an image onto a drawingarea sub gtkcreate_pixbuf { my ($file, $o_size) = @_; gtknew('Pixbuf', file => $file, if_($o_size, size => $o_size)); } sub gtktext_append { gtktext_insert(@_, append => 1) } sub may_set_icon { my ($w, $name) = @_; if (my $f = $name && _find_imgfile($name)) { $w->set_icon(gtkcreate_pixbuf($f)); } } sub gtktext_insert { &mygtk2::_text_insert } sub icon_paths { &mygtk2::_icon_paths } sub add_icon_path { &mygtk2::add_icon_path } sub set_main_window_size { my ($o) = @_; mygtk2::set_main_window_size($o->{rwindow}); } # extracts interesting font metrics for a given widget sub gtkfontinfo { my ($widget) = @_; my $context = $widget->get_pango_context; my $metrics = $context->get_metrics($context->get_font_description, $context->get_language); my %fontinfo; foreach (qw(ascent descent approximate_char_width approximate_digit_width)) { no strict; my $func = "get_$_"; $fontinfo{$_} = Gtk2::Pango->pixels($metrics->$func); } %fontinfo; } sub gtkmodify_font { my ($w, $arg) = @_; $w->modify_font(ref($arg) ? $arg : Gtk2::Pango::FontDescription->from_string($arg)); $w; } sub gtkset_property { my ($w, $property, $value) = @_; $w->set_property($property, $value); $w; } sub set_back_pixbuf { my ($widget, $pixbuf) = @_; my $window = $widget->window; my ($width, $height) = ($pixbuf->get_width, $pixbuf->get_height); my $pixmap = Gtk2::Gdk::Pixmap->new($window, $width, $height, $window->get_depth); $pixbuf->render_to_drawable($pixmap, $widget->style->fg_gc('normal'), 0, 0, 0, 0, $width, $height, 'max', 0, 0); $window->set_back_pixmap($pixmap, 0); } sub set_back_pixmap { my ($w) = @_; return if !$w->realized; my $window = $w->window; my $pixmap = $w->{back_pixmap} ||= Gtk2::Gdk::Pixmap->new($window, 1, 2, $window->get_depth); my $style = $w->get_style; $pixmap->draw_points($style->bg_gc('normal'), 0, 0); $pixmap->draw_points($style->base_gc('normal'), 0, 1); $window->set_back_pixmap($pixmap); } sub add2notebook { my ($n, $title, $book) = @_; $n->append_page($book, gtkshow(gtknew('Label', text => $title))); $book->show; } sub string_size { my ($widget, $text) = @_; my $layout = $widget->create_pango_layout($text); my @size = $layout->get_pixel_size; @size; } sub string_width { my ($widget, $text) = @_; my ($width, undef) = string_size($widget, $text); $width; } my ($def_step_title); sub set_default_step_items { $def_step_title = translate($_[0]); } sub get_default_step_items { ($def_step_title) } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # toplevel window creation helper # # Use the 'new' function as a method constructor and then 'main' on it to # launch the main loop. Use $o->{retval} to indicate that the window needs # to terminate. # Set $::isWizard to have a wizard appearance. # Set $::isEmbedded and $::XID so that the window will plug. sub new { my ($type, $title, %opts) = @_; my $o = bless { %opts }, $type; while (my $e = shift @tempory::objects) { $e->destroy } my $icon = find { _find_imgfile($_) } $::isInstall ? 'empty-banner' : $opts{icon}; my $banner_title = $opts{banner_title}; $o->{transient} ||= $::main_window if $::main_window && !$opts{do_not_track_main_window}; my $window = gtknew( 'MagicWindow', title => $title || '', pop_it => $o->{pop_it}, $::isInstall ? (banner => gtknew('Install_Title', text => $title || get_default_step_items())) : (), $::isStandalone && $banner_title && $icon ? (banner => Gtk2::Banner->new($icon, $banner_title)) : (), width => $opts{width}, height => $opts{height}, default_width => $opts{default_width}, default_height => $opts{default_height}, modal => (!$o->{pop_it} && !$::isInstall) && ($opts{modal} || $grab || $o->{grab}) || $o->{modal}, no_Window_Manager => exists $opts{no_Window_Manager} ? $opts{no_Window_Manager} : !$::isStandalone, if_(!$::isInstall, icon_no_error => wm_icon()), if_($o->{transient}, transient_for => $o->{transient}), ); push @::main_windows, $::main_window = $window->{real_window} if !$opts{do_not_track_main_window}; $window->set_border_width(10) if !$window->{pop_it} && !$::noborderWhenEmbedded; $o->{rwindow} = $o->{window} = $window; $o->{real_window} = $window->{real_window}; $o->{pop_it} = $window->{pop_it}; $o; } sub main { my ($o, $o_completed, $o_canceled) = @_; gtkset_mousecursor_normal(); $o->show; mygtk2::main($o->{rwindow}, sub { $o->{retval} ? !$o_completed || $o_completed->() : !$o_canceled || $o_canceled->() }); $o->{retval}; } sub show($) { my ($o) = @_; $o->{rwindow}->show; } sub destroy($) { my ($o) = @_; $o->{rwindow}->destroy; flush(); } sub DESTROY { goto &destroy } sub sync { my ($o) = @_; show($o); flush(); } sub flush() { gtkflush() } sub shrink_topwindow { my ($o) = @_; $o->{real_window}->signal_emit('size_allocate', Gtk2::Gdk::Rectangle->new(-1, -1, -1, -1)); } sub exit { gtkset_mousecursor_normal(); #- for restoring a normal in any case flush(); if ($::isStandalone) { require standalone; standalone::__exit($_[1]); #- workaround } else { c::_exit($_[1]); #- workaround } } #- in case "exit" above was not called by the program END { &exit() } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # ask # # Full UI managed functions that will return to you the value that the # user chose. sub ask_warn { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_warn(@_); main($w) } sub ask_yesorno { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_okcancel(@_, N("Yes"), N("No")); main($w) } sub ask_okcancel { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_okcancel(@_, N("Is this correct?"), N("Ok"), N("Cancel")); main($w) } sub ask_from_entry { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_from_entry(@_); main($w) } sub ask_dir { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_dir(@_); main($w) } sub _ask_from_entry($$@) { my ($o, @msgs) = @_; my $entry = gtknew('Entry'); my $f = sub { $o->{retval} = $entry->get_text; Gtk2->main_quit }; $o->{ok_clicked} = $f; $o->{cancel_clicked} = sub { undef $o->{retval}; Gtk2->main_quit }; gtkadd($o->{window}, gtkpack($o->create_box_with_title(@msgs), gtksignal_connect($entry, 'activate' => $f), ($o->{hide_buttons} ? () : create_okcancel($o))), ); $entry->grab_focus; } sub _ask_warn($@) { my ($o, @msgs) = @_; gtkadd($o->{window}, gtkpack($o->create_box_with_title(@msgs), my $w = gtknew('Button', text => N("Ok"), clicked => sub { Gtk2->main_quit }), ), ); $w->grab_focus; } sub _ask_okcancel($@) { my ($o, @msgs) = @_; my ($ok, $cancel) = splice @msgs, -2; gtkadd($o->{window}, gtkpack(create_box_with_title($o, @msgs), create_okcancel($o, $ok, $cancel), ) ); $o->{ok}->grab_focus; } sub create_file_selector { my (%opts) = @_; my $w = ugtk2->new(delete $opts{title}, modal => 1); my ($message, $save, $want_a_dir) = (delete $opts{message}, delete $opts{save}, delete $opts{want_a_dir}); my $action = $want_a_dir ? ($save ? 'create_folder' : 'select_folder') : ($save ? 'save' : 'open'); add2hash(\%opts, { width => 480, height => 250 }); gtkadd($w->{window}, gtkpack_(create_box_with_title($w, $message), 1, $w->{chooser} = gtknew('FileChooser', action => $action, %opts), 0, create_okcancel($w), )); $w->{chooser}->signal_connect(file_activated => sub { $w->{ok}->clicked }); $w; } sub file_selected_check { my ($save, $want_a_dir, $file) = @_; if (!$file) { N("No file chosen"); } elsif (-f $file && $want_a_dir) { N("You have chosen a file, not a directory"); } elsif (-d $file && !$want_a_dir) { N("You have chosen a directory, not a file"); } elsif (!-e $file && !$save) { $want_a_dir ? N("No such directory") : N("No such file"); } else { ''; } } sub _ask_file { my ($o, $title, $path) = @_; my $w = create_file_selector(title => $title, want_a_dir => 0, directory => $path); put_in_hash($o, $w); $w->{ok}->signal_connect(clicked => sub { $o->{retval} = $w->{chooser}->get_filename }); } sub _ask_dir { my ($o, $title, $path) = @_; my $w = create_file_selector(title => $title, want_a_dir => 1, directory => $path); put_in_hash($o, $w); $w->{ok}->signal_connect(clicked => sub { $o->{retval} = $w->{chooser}->get_filename }); } sub ask_browse_tree_info { my ($common) = @_; my $w = ugtk2->new($common->{title}); my $tree_model = Gtk2::TreeStore->new("Glib::String", "Gtk2::Gdk::Pixbuf", "Glib::String"); my $tree = Gtk2::TreeView->new_with_model($tree_model); $tree->get_selection->set_mode('browse'); $tree->append_column(my $textcolumn = Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 0)); $tree->append_column(my $pixcolumn = Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererPixbuf->new, 'pixbuf' => 1)); $tree->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 2)); $tree->set_headers_visible(0); $tree->set_rules_hint(1); $textcolumn->set_min_width(200); $textcolumn->set_max_width(200); gtkadd($w->{window}, gtknew('VBox', spacing => 5, children => [ 0, gtknew('Title2', label => $common->{message}, # workaround infamous 6 years old gnome bug #101968: width => mygtk2::get_label_width()), 1, gtknew('VBox', children => [ 1, gtknew('ScrolledWindow', child => $tree), 0, gtknew('Frame', text => N("Info"), child => gtknew('ScrolledWindow', child => my $info = gtknew('TextView', editable => 0, height => 100)), ) ]), 0, Gtk2::HSeparator->new, 0, my $status = gtknew('Label'), if_($common->{auto_deps}, 0, gtknew('CheckButton', text => $common->{auto_deps}, active_ref => \$common->{state}{auto_deps}) ), 0, Gtk2::HSeparator->new, 0, my $box2 = gtknew('HBox', spacing => 10), ])); gtkpack__($box2, gtknew(($::isInstall ? 'Install_Button' : 'Button'), text => N("Help"), clicked => $common->{interactive_help})) if $common->{interactive_help}; #gtkpack__($box2, my $toolbar = Gtk2::Toolbar->new('horizontal', 'icons')); gtkpack__($box2, my $toolbar = Gtk2::Toolbar->new); my @l = ([ $common->{ok}, 1 ], if_($common->{cancel}, [ $common->{cancel}, 0 ])); @l = reverse @l if !$::isInstall; my @buttons = map { my ($t, $val) = @$_; $box2->pack_end(my $w = gtknew('Button', text => $t, clicked => sub { $w->{retval} = $val; Gtk2->main_quit; }), 0, 1, 20); $w->show; $w; } @l; @buttons = reverse @buttons if !$::isInstall; $status->show; $w->{window}->set_size_request(map { $_ - 2 * $border - 4 } $w->{windowwidth}, $w->{windowheight}) if !$::isInstall; $buttons[0]->grab_focus; $w->{rwindow}->show; my @toolbar; foreach my $ic (@{$common->{icons} || []}) { push @toolbar, ($ic->{icon} => [ $ic->{help}, sub { if ($ic->{code}) { my $_w = $ic->{wait_message} && $common->{wait_message}->('', $ic->{wait_message}); $ic->{code}(); $common->{rebuild_tree}->(); } } ]); } my %toolbar = @toolbar; foreach (grep_index { $::i % 2 == 0 } @toolbar) { $toolbar->append_item(undef, $toolbar{$_}[0], undef, gtkcreate_img("$_.png"), $toolbar{$_}[1]); } $pixcolumn->{is_pix} = 1; $common->{widgets} = { w => $w, tree => $tree, tree_model => $tree_model, info => $info, status => $status }; ask_browse_tree_info_given_widgets($common); } sub ask_browse_tree_info_given_widgets { my ($common) = @_; my $w = $common->{widgets}; my ($curr, $prev_label, $idle, $mouse_toggle_pending); my (%wtree, %ptree, %pix, %node_state, %state_stats); my $update_size = sub { if ($w->{status}) { my $new_label = $common->{get_status}(); $prev_label ne $new_label and $w->{status}->set($prev_label = $new_label); } }; my $set_node_state_flat = sub { my ($iter, $state) = @_; $state eq 'XXX' and return; $pix{$state} ||= gtkcreate_pixbuf($state); $w->{tree_model}->set($iter, 1 => $pix{$state}); }; my $set_node_state_tree; $set_node_state_tree = sub { my ($iter, $state) = @_; my $iter_str = $w->{tree_model}->get_path_str($iter); $state eq 'XXX' and return; $pix{$state} ||= gtkcreate_pixbuf($state); if ($node_state{$iter_str} ne $state) { my $parent; if (!$w->{tree_model}->iter_has_child($iter) && ($parent = $w->{tree_model}->iter_parent($iter))) { my $parent_str = $w->{tree_model}->get_path_str($parent); my $stats = $state_stats{$parent_str} ||= {}; $stats->{$node_state{$iter_str}}--; $stats->{$state}++; my @list = grep { $stats->{$_} > 0 } keys %$stats; my $new_state = @list == 1 ? $list[0] : 'semiselected'; $node_state{$parent_str} ne $new_state and $set_node_state_tree->($parent, $new_state); } $w->{tree_model}->set($iter, 1 => $pix{$state}); $node_state{$iter_str} = $state; #- cache for efficiency } }; my $set_node_state = $common->{state}{flat} ? $set_node_state_flat : $set_node_state_tree; my $set_leaf_state = sub { my ($leaf, $state) = @_; $set_node_state->($_, $state) foreach @{$ptree{$leaf}}; }; my $add_parent; $add_parent = sub { my ($root, $state) = @_; $root or return undef; if (my $w = $wtree{$root}) { return $w } my $s; foreach (split '\|', $root) { my $s2 = $s ? "$s|$_" : $_; $wtree{$s2} ||= do { my $iter = $w->{tree_model}->append_set($s ? $add_parent->($s, $state) : undef, [ 0 => $_ ]); $iter; }; $s = $s2; } $set_node_state->($wtree{$s}, $state); #- use this state by default as tree is building. $wtree{$s}; }; my $add_node = sub { my ($leaf, $root, $options) = @_; my $state = $common->{node_state}($leaf) or return; if ($leaf) { my $iter = $w->{tree_model}->append_set($add_parent->($root, $state), [ 0 => $leaf ]); $set_node_state->($iter, $state); push @{$ptree{$leaf}}, $iter; } else { my $parent = $add_parent->($root, $state); #- hackery for partial displaying of trees, used in rpmdrake: #- if leaf is void, we may create the parent and one child (to have the [+] in front of the parent in the ctree) #- though we use '' as the label of the child; then rpmdrake will connect on tree_expand, and whenever #- the first child has '' as the label, it will remove the child and add all the "right" children $options->{nochild} or $w->{tree_model}->append_set($parent, [ 0 => '' ]); } }; my $clear_all_caches = sub { foreach (values %ptree) { foreach my $n (@$_) { delete $node_state{$w->{tree_model}->get_path_str($n)}; } } foreach (values %wtree) { my $iter_str = $w->{tree_model}->get_path_str($_); delete $node_state{$iter_str}; delete $state_stats{$iter_str}; } %ptree = %wtree = (); }; $common->{delete_all} = sub { $clear_all_caches->(); $w->{tree_model}->clear; }; $common->{rebuild_tree} = sub { $common->{delete_all}->(); $set_node_state = $common->{state}{flat} ? $set_node_state_flat : $set_node_state_tree; $common->{build_tree}($add_node, $common->{state}{flat}, $common->{tree_mode}); &$update_size; }; $common->{delete_category} = sub { my ($cat) = @_; exists $wtree{$cat} or return; foreach (keys %ptree) { my @to_remove; foreach my $node (@{$ptree{$_}}) { my $category; my $parent = $node; my @parents; while ($parent = $w->{tree_model}->iter_parent($parent)) { #- LEAKS my $parent_name = $w->{tree_model}->get($parent, 0); $category = $category ? "$parent_name|$category" : $parent_name; $_->[1] = "$parent_name|$_->[1]" foreach @parents; push @parents, [ $parent, $category ]; } if ($category =~ /^\Q$cat/) { push @to_remove, $node; foreach (@parents) { next if $_->[1] eq $cat || !exists $wtree{$_->[1]}; delete $wtree{$_->[1]}; delete $node_state{$w->{tree_model}->get_path_str($_->[0])}; delete $state_stats{$w->{tree_model}->get_path_str($_->[0])}; } } } foreach (@to_remove) { delete $node_state{$w->{tree_model}->get_path_str($_)}; } @{$ptree{$_}} = difference2($ptree{$_}, \@to_remove); } if (exists $wtree{$cat}) { my $iter_str = $w->{tree_model}->get_path_str($wtree{$cat}); delete $node_state{$iter_str}; delete $state_stats{$iter_str}; $w->{tree_model}->remove($wtree{$cat}); delete $wtree{$cat}; } &$update_size; }; $common->{add_nodes} = sub { my (@nodes) = @_; $add_node->($_->[0], $_->[1], $_->[2]) foreach @nodes; &$update_size; }; $common->{display_info} = sub { gtktext_insert($w->{info}, $common->{get_info}($curr)); 0 }; my $children = sub { map { $w->{tree_model}->get($_, 0) } gtktreeview_children($w->{tree_model}, $_[0]) }; my $toggle = sub { if (ref($curr) && !$_[0]) { $w->{tree}->toggle_expansion($w->{tree_model}->get_path($curr)); } else { if (ref $curr) { my @l = $common->{grep_allowed_to_toggle}($children->($curr)) or return; my @unsel = $common->{grep_unselected}(@l); my @p = @unsel ? #- not all is selected, select all if no option to potentially override (exists $common->{partialsel_unsel} && $common->{partialsel_unsel}->(\@unsel, \@l) ? difference2(\@l, \@unsel) : @unsel) : @l; $common->{toggle_nodes}($set_leaf_state, @p); &$update_size; } else { $common->{check_interactive_to_toggle}($curr) and $common->{toggle_nodes}($set_leaf_state, $curr); &$update_size; } } }; $w->{tree}->signal_connect(key_press_event => sub { my $c = chr($_[1]->keyval & 0xff); if ($_[1]->keyval >= 0x100 ? $c eq "\r" || $c eq "\x8d" : $c eq ' ') { $toggle->(0); } 0; }); $w->{tree}->get_selection->signal_connect(changed => sub { my ($model, $iter) = $_[0]->get_selected; $model && $iter or return; Glib::Source->remove($idle) if $idle; if (!$model->iter_has_child($iter)) { $curr = $model->get($iter, 0); $idle = Glib::Timeout->add(100, $common->{display_info}); } else { $curr = $iter; } #- the following test for equality is because we can have a button_press_event first, then #- two changed events, the first being on a different row :/ (is it a bug in gtk2?) - that #- happens in rpmdrake when doing a "search" and directly trying to select a found package if ($mouse_toggle_pending eq $model->get($iter, 0)) { $toggle->(1); $mouse_toggle_pending = 0; } 0; }); $w->{tree}->signal_connect(button_press_event => sub { #- not too good, but CellRendererPixbuf does not have the needed signals :( my ($path, $column) = $w->{tree}->get_path_at_pos($_[1]->x, $_[1]->y); if ($path && $column) { $column->{is_pix} and $mouse_toggle_pending = $w->{tree_model}->get($w->{tree_model}->get_iter($path), 0); } 0; }); $common->{rebuild_tree}->(); &$update_size; $common->{initial_selection} and $common->{toggle_nodes}($set_leaf_state, @{$common->{initial_selection}}); my $_b = before_leaving { $clear_all_caches->() }; $common->{init_callback}->() if $common->{init_callback}; $w->{w}->main; } sub gtk_set_treelist { my ($treelist, $l) = @_; my $list = $treelist->get_model; $list->clear; $list->append_set([ 0 => $_ ]) foreach @$l; } sub gtk_TextView_get_log { my ($log_w, $command, $filter_output, $when_command_is_over) = @_; my $pid = open(my $F, "$command |") or return; common::nonblock($F); my $gtk_buffer = $log_w->get_buffer; $log_w->signal_connect(destroy => sub { kill 9, $pid if $pid; #- we do not continue in background $pid = $gtk_buffer = ''; #- ensure $gtk_buffer is valid when its value is non-null }); Glib::Timeout->add(100, sub { if ($gtk_buffer) { my $end = $gtk_buffer->get_end_iter; while (defined (my $s = <$F>)) { $gtk_buffer->insert($end, $filter_output->($s)); } $log_w->{to_bottom}->(); } if (waitpid($pid, c::WNOHANG()) > 0) { #- we do not call $when_command_is_over if $gtk_buffer does not exist anymore #- since it is not a normal case $when_command_is_over->($gtk_buffer) if $when_command_is_over && $gtk_buffer; $pid = ''; 0; } else { to_bool($gtk_buffer); } }); $pid; #- $pid becomes invalid after $when_command_is_over is called } sub gtk_new_TextView_get_log { my ($command, $filter_output, $when_command_is_over) = @_; my $log_w = gtknew('TextView', editable => 0); my $log_scroll = gtknew('ScrolledWindow', child => $log_w, to_bottom => 1); my $pid = gtk_TextView_get_log($log_w, $command, $filter_output, $when_command_is_over) or return; $log_scroll, $pid; } # misc helpers: package Gtk2::TreeStore; sub append_set { my ($model, $parent, @values) = @_; # compatibility: @values = @{$values[0]} if @values == 1 && ref($values[0]) eq 'ARRAY'; my $iter = $model->append($parent); $model->set($iter, @values); return $iter; } package Gtk2::ListStore; # Append a new row, set the values, return the TreeIter sub append_set { my ($model, @values) = @_; # compatibility: @values = @{$values[0]} if @values == 1 && ref($values[0]) eq 'ARRAY'; my $iter = $model->append; $model->set($iter, @values); return $iter; } package Gtk2::TreeModel; # gets the string representation of a TreeIter sub get_path_str { my ($self, $iter) = @_; my $path = $self->get_path($iter); $path or return; $path->to_string; } sub iter_each_children { my ($model, $iter, $f) = @_; for (my $child = $model->iter_children($iter); $child; $child = $model->iter_next($child)) { $f->($child); } } package Gtk2::TreeView; # likewise gtk-1.2 function sub toggle_expansion { my ($self, $path, $b_open_all) = @_; if ($self->row_expanded($path)) { $self->collapse_row($path); } else { $self->expand_row($path, $b_open_all || 0); } } # With GTK+, for more GUIes coherency, GtkOptionMenu is recommended instead of a # combo if the user is selecting from a fixed set of options. # # That is, non-editable combo boxes are not encouraged. GtkOptionMenu is much # easier to use than GtkCombo as well. Use GtkCombo only when you need the # editable text entry. # # GtkOptionMenu is a much better-implemented widget and also the right UI for # noneditable sets of choices.) # # GtkCombo is deprecated in 2.4.x because it still uses deprecated # GtkList. GtkOption menu is deprecated in order to have an unified widget. # # GtkComBox widget replaces GtkOption menu whereas GtkComBoxEntry replaces GtkCombo. # # # This layer try to make OptionMenu and ComboBox look being api # compatible with Combo since its API is quite nice. package Gtk2::OptionMenu; use common; # try to get combox <==> option menu mapping sub set_popdown_strings { my ($w, @strs) = @_; my $menu = Gtk2::Menu->new; # keep string list around for ->set_text compatibilty helper $w->{strings} = \@strs; #$w->set_menu((ugtk2::create_factory_menu($window, [ "File", (undef) x 3, '<Branch>' ], map { [ "File/" . $_, (undef) x 3, '<Item>' ] } @strs))[0]); $menu->append(ugtk2::gtkshow(Gtk2::MenuItem->new_with_label($_))) foreach @strs; $w->set_menu($menu); $w; } sub new_with_strings { my ($class, $strs, $o_val) = @_; my $w = $class->new; $w->set_popdown_strings(@$strs); $w->set_text($o_val) if $o_val; $w; } sub entry { my ($w) = @_; return $w; } sub get_text { my ($w) = @_; $w->get_history == -1 ? '' : $w->{strings}[$w->get_history]; } sub set_text { my ($w, $val) = @_; each_index { if ($_ eq $val) { $w->set_history($::i); return; } } @{$w->{strings}}; } package Gtk2::ComboBox; use common; # try to get combox <==> option menu mapping sub set_popdown_strings { my ($w, @strs) = @_; $w->get_model->clear; # keep string list around for ->set_text compatibilty helper $w->{strings} = \@strs; $w->append_text($_) foreach @strs; $w; } sub new_with_strings { my ($class, $strs, $o_val) = @_; my $w = $class->new_text; $w->set_popdown_strings(@$strs); $w->set_text($o_val) if $o_val; $w; } sub entry { my ($w) = @_; return $w; } sub get_text { my ($w) = @_; $w->get_active == -1 ? '' : $w->{strings}[$w->get_active]; } sub set_text { my ($w, $val) = @_; eval { my $val_index = find_index { $_ eq $val } @{$w->{strings}}; $w->set_active($val_index); }; # internal_error(qq(impossible to lookup "$val":\n\t) . chomp_($@)) if $@; } package Gtk2::Label; sub set { my ($label, $text) = @_; mygtk2::gtkset($label, text => $text); } package Gtk2::WrappedLabel; sub new { my ($_type, $o_text, $o_align) = @_; mygtk2::gtknew('WrappedLabel', text => $o_text || '', alignment => [ $o_align || 0, 0.5 ]); } package Gtk2::Entry; sub new_with_text { my ($_class, $o_text) = @_; mygtk2::gtknew('Entry', text => $o_text); } package Gtk2::Banner; use MDK::Common; use mygtk2 qw(gtknew); use ugtk2 qw(:helpers :wrappers); sub set_pixmap { my ($darea) = @_; return if !$darea->realized; ugtk2::set_back_pixbuf($darea, $darea->{back_pixbuf}); update_text($darea); } sub update_text { my ($darea) = @_; $darea->{layout} = $darea->create_pango_layout($darea->{text}); $darea->{txt_width} = first($darea->{layout}->get_pixel_size); $darea->queue_draw; } sub new { my ($_class, $icon, $text, $o_options) = @_; mygtk2::import_style_ressources(); my $darea = gtknew('DrawingArea', widget_name => 'Banner'); $darea->{back_pixbuf} = gtknew('Pixbuf', file => 'banner-background'); my $d_height = $darea->{back_pixbuf}->get_height; $darea->set_size_request(-1, $d_height); $darea->modify_font(Gtk2::Pango::FontDescription->from_string("13")); eval { $darea->{icon} = ugtk2::gtkcreate_pixbuf($icon) }; my $blue_part = eval { gtknew('Pixbuf', file => 'banner-blue-part', flip => mygtk2::text_direction_rtl()) }; my $blue_width = $blue_part->get_width; $darea->{text} = $text; require lang; my $is_rtl = lang::text_direction_rtl(); $darea->signal_connect(realize => \&set_pixmap); $darea->signal_connect("style-set" => \&set_pixmap); $darea->signal_connect(expose_event => sub { my $style = $darea->get_style; my $height = $darea->{icon}->get_height; my $width = $darea->{icon}->get_width; # fix icon position when not using the default height: (undef, undef, undef, $d_height) = $darea->window->get_geometry; my $padding = int(($d_height - $height)/2); my $d_width = $darea->allocation->width; my $x_blue = $is_rtl ? $d_width - $blue_width : 0; my $x_icon = $is_rtl ? $d_width - 12 - $width : 12; # here: 48 is the amount of white background in the blue background we wish to ignore: my $x_text = $is_rtl ? $d_width - $blue_width + 48 - $darea->{txt_width} : $blue_width - 48; $darea->{layout_height} ||= second($darea->{layout}->get_pixel_size); $blue_part->render_to_drawable($darea->window, $style->bg_gc('normal'), 0, 0, $x_blue, 0, -1, -1, 'none', 0, 0); $darea->{icon}->render_to_drawable($darea->window, $style->bg_gc('normal'), 0, 0, $x_icon, $padding, -1, -1, 'none', 0, 0); $darea->window->draw_layout($style->fg_gc('normal'), $x_text, $o_options->{txt_ypos} || ($d_height - $darea->{layout_height})/2, $darea->{layout}); 1; }); return $darea; } package Gtk2::MDV::CellRendererPixWithLabel; use MDK::Common; use Glib::Object::Subclass "Gtk2::CellRenderer", properties => [ Glib::ParamSpec->string("label", "Label", "A meaningfull label", "", [qw(readable writable)]), Glib::ParamSpec->object("pixbuf", "Pixbuf file", "Something nice to display", 'Gtk2::Gdk::Pixbuf', [qw(readable writable)]), ]; my $x_padding = 2; my $y_padding = 2; sub INIT_INSTANCE {} sub pixbuf_size { my ($cell) = @_; my $pixbuf = $cell->get('pixbuf'); $pixbuf ? ($pixbuf->get_width, $pixbuf->get_height) : (0, 0); } sub calc_size { my ($cell, $layout) = @_; my ($width, $height) = $layout->get_pixel_size; my ($pwidth, $pheight) = pixbuf_size($cell); return 0, 0, $width + $x_padding * 3 + $pwidth, max($pheight, $height + $y_padding * 2); } sub GET_SIZE { my ($cell, $widget, $_cell_area) = @_; my $layout = $cell->get_layout($widget); $layout->set_text($cell->get('label')); return calc_size($cell, $layout); } sub get_layout { my ($_cell, $widget) = @_; return $widget->create_pango_layout(""); } sub RENDER { # not that efficient... my ($cell, $window, $widget, $_background_area, $cell_area, $_expose_area, $flags) = @_; my $state; if ($flags & 'selected') { $state = $widget->has_focus ? 'selected' : 'active'; } else { $state = $widget->state eq 'insensitive' ? 'insensitive' : 'normal'; } my $layout = $cell->get_layout($widget); $layout->set_text($cell->get('label')); my $is_rtl = lang::text_direction_rtl(); my $txt_width = first($layout->get_pixel_size); my ($x_offset, $y_offset, $_width, $_height) = calc_size($cell, $layout); my $pixbuf = $cell->get('pixbuf'); my ($pwidth, $pheight) = pixbuf_size($cell); my $txt_offset = $cell_area->x + $x_offset + $x_padding * 2 + $pwidth; if ($pixbuf) { $pixbuf->render_to_drawable($window, $widget->style->fg_gc('normal'), 0, 0, $is_rtl ? $cell_area->width - $cell_area->x - $pwidth : $cell_area->x ,#+ $x_padding, $cell_area->y, #+ $y_padding, $pwidth, $pheight, 'none', 0, 0); } $widget->get_style->paint_layout($window, $state, 1, $cell_area, $widget, "cellrenderertext", $is_rtl ? $cell_area->width - $txt_width - $txt_offset : $txt_offset, $cell_area->y + $y_offset + $y_padding, $layout); } 1; package Gtk2::Notify::Queue; sub new { my ($class, $statusicon) = @_; require Gtk2::Notify; my $self = bless { queue => [], statusicon => $statusicon, display => 5000, delay => 500, }, $class; $self; } sub process_next { my ($self) = @_; shift @{$self->{queue}}; #- wait for some time so that the new notification is noticeable @{$self->{queue}} and Glib::Timeout->add($self->{delay}, sub { $self->show; 0 }); } sub add { my ($self, $info) = @_; push @{$self->{queue}}, $info; @{$self->{queue}} == 1 and $self->show; } sub show { my ($self) = @_; # perl_checker: $self = Gtk2::Notify->new my $info = $self->{queue}[0]; my $notification = Gtk2::Notify->new_with_status_icon($info->{title}, $info->{message}, undef, $self->{statusicon}); $notification->set_icon_from_pixbuf($info->{pixbuf}); $notification->set_urgency($info->{urgency}) if $info->{urgency}; foreach my $a (@{$info->{actions} || []}) { $notification->add_action( $a->{action}, $a->{label}, sub { $info->{processed} = 1; #- $a->{callback} has to call $selft->process_next when done $a->{callback}->(); }); } $notification->signal_connect(closed => sub { $info->{processed} and return; $info->{timeout}->() if $info->{timeout}; $self->process_next; }); eval { $notification->show }; } 1; package Gtk2::GUI_Update_Guard; use MDK::Common::Func qw(before_leaving); use ugtk2; sub new { my ($_class) = @_; # prevent a perl_checker warning in callers my $old_signal = $SIG{ALRM}; $SIG{ALRM} = sub { ugtk2::gtkflush(); alarm(1); }; alarm(1); return before_leaving { alarm(0); $SIG{ALRM} = $old_signal || 'DEFAULT'; # restore default action }; } 1; id='n1434' href='#n1434'>1434</a> <a id='n1435' href='#n1435'>1435</a> <a id='n1436' href='#n1436'>1436</a> <a id='n1437' href='#n1437'>1437</a> <a id='n1438' href='#n1438'>1438</a> <a id='n1439' href='#n1439'>1439</a> <a id='n1440' href='#n1440'>1440</a> <a id='n1441' href='#n1441'>1441</a> <a id='n1442' href='#n1442'>1442</a> <a id='n1443' href='#n1443'>1443</a> <a id='n1444' href='#n1444'>1444</a> <a id='n1445' href='#n1445'>1445</a> <a id='n1446' href='#n1446'>1446</a> <a id='n1447' href='#n1447'>1447</a> <a id='n1448' href='#n1448'>1448</a> <a id='n1449' href='#n1449'>1449</a> <a id='n1450' href='#n1450'>1450</a> <a id='n1451' href='#n1451'>1451</a> <a id='n1452' href='#n1452'>1452</a> <a id='n1453' href='#n1453'>1453</a> <a id='n1454' href='#n1454'>1454</a> <a id='n1455' href='#n1455'>1455</a> <a id='n1456' href='#n1456'>1456</a> <a id='n1457' href='#n1457'>1457</a> <a id='n1458' href='#n1458'>1458</a> <a id='n1459' href='#n1459'>1459</a> <a id='n1460' href='#n1460'>1460</a> <a id='n1461' href='#n1461'>1461</a> <a id='n1462' href='#n1462'>1462</a> <a id='n1463' href='#n1463'>1463</a> <a id='n1464' href='#n1464'>1464</a> <a id='n1465' href='#n1465'>1465</a> <a id='n1466' href='#n1466'>1466</a> <a id='n1467' href='#n1467'>1467</a> <a id='n1468' href='#n1468'>1468</a> <a id='n1469' href='#n1469'>1469</a> <a id='n1470' href='#n1470'>1470</a> <a id='n1471' href='#n1471'>1471</a> <a id='n1472' href='#n1472'>1472</a> <a id='n1473' href='#n1473'>1473</a> <a id='n1474' href='#n1474'>1474</a> <a id='n1475' href='#n1475'>1475</a> <a id='n1476' href='#n1476'>1476</a> <a id='n1477' href='#n1477'>1477</a> <a id='n1478' href='#n1478'>1478</a> <a id='n1479' href='#n1479'>1479</a> <a id='n1480' href='#n1480'>1480</a> <a id='n1481' href='#n1481'>1481</a> <a id='n1482' href='#n1482'>1482</a> <a id='n1483' href='#n1483'>1483</a> <a id='n1484' href='#n1484'>1484</a> <a id='n1485' href='#n1485'>1485</a> <a id='n1486' href='#n1486'>1486</a> <a id='n1487' href='#n1487'>1487</a> <a id='n1488' href='#n1488'>1488</a> <a id='n1489' href='#n1489'>1489</a> <a id='n1490' href='#n1490'>1490</a> <a id='n1491' href='#n1491'>1491</a> <a id='n1492' href='#n1492'>1492</a> <a id='n1493' href='#n1493'>1493</a> <a id='n1494' href='#n1494'>1494</a> <a id='n1495' href='#n1495'>1495</a> <a id='n1496' href='#n1496'>1496</a> <a id='n1497' href='#n1497'>1497</a> <a id='n1498' href='#n1498'>1498</a> <a id='n1499' href='#n1499'>1499</a> <a id='n1500' href='#n1500'>1500</a> <a id='n1501' href='#n1501'>1501</a> <a id='n1502' href='#n1502'>1502</a> <a id='n1503' href='#n1503'>1503</a> <a id='n1504' href='#n1504'>1504</a> <a id='n1505' href='#n1505'>1505</a> <a id='n1506' href='#n1506'>1506</a> <a id='n1507' href='#n1507'>1507</a> <a id='n1508' href='#n1508'>1508</a> <a id='n1509' href='#n1509'>1509</a> <a id='n1510' href='#n1510'>1510</a> <a id='n1511' href='#n1511'>1511</a> <a id='n1512' href='#n1512'>1512</a> <a id='n1513' href='#n1513'>1513</a> <a id='n1514' href='#n1514'>1514</a> <a id='n1515' href='#n1515'>1515</a> <a id='n1516' href='#n1516'>1516</a> <a id='n1517' href='#n1517'>1517</a> <a id='n1518' href='#n1518'>1518</a> <a id='n1519' href='#n1519'>1519</a> <a id='n1520' href='#n1520'>1520</a> <a id='n1521' href='#n1521'>1521</a> <a id='n1522' href='#n1522'>1522</a> <a id='n1523' href='#n1523'>1523</a> <a id='n1524' href='#n1524'>1524</a> <a id='n1525' href='#n1525'>1525</a> <a id='n1526' href='#n1526'>1526</a> <a id='n1527' href='#n1527'>1527</a> <a id='n1528' href='#n1528'>1528</a> <a id='n1529' href='#n1529'>1529</a> <a id='n1530' href='#n1530'>1530</a> <a id='n1531' href='#n1531'>1531</a> <a id='n1532' href='#n1532'>1532</a> <a id='n1533' href='#n1533'>1533</a> <a id='n1534' href='#n1534'>1534</a> <a id='n1535' href='#n1535'>1535</a> <a id='n1536' href='#n1536'>1536</a> <a id='n1537' href='#n1537'>1537</a> <a id='n1538' href='#n1538'>1538</a> <a id='n1539' href='#n1539'>1539</a> <a id='n1540' href='#n1540'>1540</a> <a id='n1541' href='#n1541'>1541</a> <a id='n1542' href='#n1542'>1542</a> <a id='n1543' href='#n1543'>1543</a> <a id='n1544' href='#n1544'>1544</a> <a id='n1545' href='#n1545'>1545</a> <a id='n1546' href='#n1546'>1546</a> <a id='n1547' href='#n1547'>1547</a> <a id='n1548' href='#n1548'>1548</a> <a id='n1549' href='#n1549'>1549</a> <a id='n1550' href='#n1550'>1550</a> <a id='n1551' href='#n1551'>1551</a> <a id='n1552' href='#n1552'>1552</a> <a id='n1553' href='#n1553'>1553</a> <a id='n1554' href='#n1554'>1554</a> <a id='n1555' href='#n1555'>1555</a> <a id='n1556' href='#n1556'>1556</a> <a id='n1557' href='#n1557'>1557</a> <a id='n1558' href='#n1558'>1558</a> <a id='n1559' href='#n1559'>1559</a> <a id='n1560' href='#n1560'>1560</a> <a id='n1561' href='#n1561'>1561</a> <a id='n1562' href='#n1562'>1562</a> <a id='n1563' href='#n1563'>1563</a> <a id='n1564' href='#n1564'>1564</a> <a id='n1565' href='#n1565'>1565</a> <a id='n1566' href='#n1566'>1566</a> <a id='n1567' href='#n1567'>1567</a> <a id='n1568' href='#n1568'>1568</a> <a id='n1569' href='#n1569'>1569</a> <a id='n1570' href='#n1570'>1570</a> <a id='n1571' href='#n1571'>1571</a> <a id='n1572' href='#n1572'>1572</a> <a id='n1573' href='#n1573'>1573</a> <a id='n1574' href='#n1574'>1574</a> <a id='n1575' href='#n1575'>1575</a> <a id='n1576' href='#n1576'>1576</a> <a id='n1577' href='#n1577'>1577</a> <a id='n1578' href='#n1578'>1578</a> <a id='n1579' href='#n1579'>1579</a> <a id='n1580' href='#n1580'>1580</a> <a id='n1581' href='#n1581'>1581</a> <a id='n1582' href='#n1582'>1582</a> <a id='n1583' href='#n1583'>1583</a> <a id='n1584' href='#n1584'>1584</a> <a id='n1585' href='#n1585'>1585</a> <a id='n1586' href='#n1586'>1586</a> <a id='n1587' href='#n1587'>1587</a> <a id='n1588' href='#n1588'>1588</a> <a id='n1589' href='#n1589'>1589</a> <a id='n1590' href='#n1590'>1590</a> <a id='n1591' href='#n1591'>1591</a> <a id='n1592' href='#n1592'>1592</a> <a id='n1593' href='#n1593'>1593</a> <a id='n1594' href='#n1594'>1594</a> <a id='n1595' href='#n1595'>1595</a> <a id='n1596' href='#n1596'>1596</a> <a id='n1597' href='#n1597'>1597</a> <a id='n1598' href='#n1598'>1598</a> <a id='n1599' href='#n1599'>1599</a> <a id='n1600' href='#n1600'>1600</a> <a id='n1601' href='#n1601'>1601</a> <a id='n1602' href='#n1602'>1602</a> <a id='n1603' href='#n1603'>1603</a> <a id='n1604' href='#n1604'>1604</a> <a id='n1605' href='#n1605'>1605</a> <a id='n1606' href='#n1606'>1606</a> <a id='n1607' href='#n1607'>1607</a> <a id='n1608' href='#n1608'>1608</a> <a id='n1609' href='#n1609'>1609</a> <a id='n1610' href='#n1610'>1610</a> <a id='n1611' href='#n1611'>1611</a> <a id='n1612' href='#n1612'>1612</a> <a id='n1613' href='#n1613'>1613</a> <a id='n1614' href='#n1614'>1614</a> <a id='n1615' href='#n1615'>1615</a> <a id='n1616' href='#n1616'>1616</a> <a id='n1617' href='#n1617'>1617</a> <a id='n1618' href='#n1618'>1618</a> <a id='n1619' href='#n1619'>1619</a> <a id='n1620' href='#n1620'>1620</a> <a id='n1621' href='#n1621'>1621</a> <a id='n1622' href='#n1622'>1622</a> <a id='n1623' href='#n1623'>1623</a> <a id='n1624' href='#n1624'>1624</a> <a id='n1625' href='#n1625'>1625</a> <a id='n1626' href='#n1626'>1626</a> <a id='n1627' href='#n1627'>1627</a> <a id='n1628' href='#n1628'>1628</a> <a id='n1629' href='#n1629'>1629</a> <a id='n1630' href='#n1630'>1630</a> <a id='n1631' href='#n1631'>1631</a> <a id='n1632' href='#n1632'>1632</a> <a id='n1633' href='#n1633'>1633</a> <a id='n1634' href='#n1634'>1634</a> <a id='n1635' href='#n1635'>1635</a> <a id='n1636' href='#n1636'>1636</a> <a id='n1637' href='#n1637'>1637</a> <a id='n1638' href='#n1638'>1638</a> <a id='n1639' href='#n1639'>1639</a> <a id='n1640' href='#n1640'>1640</a> <a id='n1641' href='#n1641'>1641</a> <a id='n1642' href='#n1642'>1642</a> <a id='n1643' href='#n1643'>1643</a> <a id='n1644' href='#n1644'>1644</a> <a id='n1645' href='#n1645'>1645</a> <a id='n1646' href='#n1646'>1646</a> <a id='n1647' href='#n1647'>1647</a> <a id='n1648' href='#n1648'>1648</a> <a id='n1649' href='#n1649'>1649</a> <a id='n1650' href='#n1650'>1650</a> <a id='n1651' href='#n1651'>1651</a> <a id='n1652' href='#n1652'>1652</a> <a id='n1653' href='#n1653'>1653</a> <a id='n1654' href='#n1654'>1654</a> <a id='n1655' href='#n1655'>1655</a> <a id='n1656' href='#n1656'>1656</a> <a id='n1657' href='#n1657'>1657</a> <a id='n1658' href='#n1658'>1658</a> <a id='n1659' href='#n1659'>1659</a> <a id='n1660' href='#n1660'>1660</a> <a id='n1661' href='#n1661'>1661</a> <a id='n1662' href='#n1662'>1662</a> <a id='n1663' href='#n1663'>1663</a> <a id='n1664' href='#n1664'>1664</a> <a id='n1665' href='#n1665'>1665</a> <a id='n1666' href='#n1666'>1666</a> <a id='n1667' href='#n1667'>1667</a> <a id='n1668' href='#n1668'>1668</a> <a id='n1669' href='#n1669'>1669</a> <a id='n1670' href='#n1670'>1670</a> <a id='n1671' href='#n1671'>1671</a> <a id='n1672' href='#n1672'>1672</a> <a id='n1673' href='#n1673'>1673</a> <a id='n1674' href='#n1674'>1674</a> <a id='n1675' href='#n1675'>1675</a> <a id='n1676' href='#n1676'>1676</a> <a id='n1677' href='#n1677'>1677</a> <a id='n1678' href='#n1678'>1678</a> <a id='n1679' href='#n1679'>1679</a> <a id='n1680' href='#n1680'>1680</a> <a id='n1681' href='#n1681'>1681</a> <a id='n1682' href='#n1682'>1682</a> <a id='n1683' href='#n1683'>1683</a> <a id='n1684' href='#n1684'>1684</a> <a id='n1685' href='#n1685'>1685</a> <a id='n1686' href='#n1686'>1686</a> <a id='n1687' href='#n1687'>1687</a> <a id='n1688' href='#n1688'>1688</a> <a id='n1689' href='#n1689'>1689</a> <a id='n1690' href='#n1690'>1690</a> <a id='n1691' href='#n1691'>1691</a> <a id='n1692' href='#n1692'>1692</a> <a id='n1693' href='#n1693'>1693</a> <a id='n1694' href='#n1694'>1694</a> <a id='n1695' href='#n1695'>1695</a> <a id='n1696' href='#n1696'>1696</a> <a id='n1697' href='#n1697'>1697</a> <a id='n1698' href='#n1698'>1698</a> <a id='n1699' href='#n1699'>1699</a> <a id='n1700' href='#n1700'>1700</a> <a id='n1701' href='#n1701'>1701</a> <a id='n1702' href='#n1702'>1702</a> <a id='n1703' href='#n1703'>1703</a> <a id='n1704' href='#n1704'>1704</a> <a id='n1705' href='#n1705'>1705</a> <a id='n1706' href='#n1706'>1706</a> <a id='n1707' href='#n1707'>1707</a> <a id='n1708' href='#n1708'>1708</a> <a id='n1709' href='#n1709'>1709</a> <a id='n1710' href='#n1710'>1710</a> <a id='n1711' href='#n1711'>1711</a> <a id='n1712' href='#n1712'>1712</a> <a id='n1713' href='#n1713'>1713</a> <a id='n1714' href='#n1714'>1714</a> <a id='n1715' href='#n1715'>1715</a> <a id='n1716' href='#n1716'>1716</a> <a id='n1717' href='#n1717'>1717</a> <a id='n1718' href='#n1718'>1718</a> <a id='n1719' href='#n1719'>1719</a> <a id='n1720' href='#n1720'>1720</a> <a id='n1721' href='#n1721'>1721</a> <a id='n1722' href='#n1722'>1722</a> <a id='n1723' href='#n1723'>1723</a> <a id='n1724' href='#n1724'>1724</a> <a id='n1725' href='#n1725'>1725</a> <a id='n1726' href='#n1726'>1726</a> <a id='n1727' href='#n1727'>1727</a> <a id='n1728' href='#n1728'>1728</a> <a id='n1729' href='#n1729'>1729</a> <a id='n1730' href='#n1730'>1730</a> <a id='n1731' href='#n1731'>1731</a> <a id='n1732' href='#n1732'>1732</a> <a id='n1733' href='#n1733'>1733</a> <a id='n1734' href='#n1734'>1734</a> <a id='n1735' href='#n1735'>1735</a> <a id='n1736' href='#n1736'>1736</a> <a id='n1737' href='#n1737'>1737</a> <a id='n1738' href='#n1738'>1738</a> <a id='n1739' href='#n1739'>1739</a> <a id='n1740' href='#n1740'>1740</a> <a id='n1741' href='#n1741'>1741</a> <a id='n1742' href='#n1742'>1742</a> <a id='n1743' href='#n1743'>1743</a> <a id='n1744' href='#n1744'>1744</a> <a id='n1745' href='#n1745'>1745</a> <a id='n1746' href='#n1746'>1746</a> <a id='n1747' href='#n1747'>1747</a> <a id='n1748' href='#n1748'>1748</a> <a id='n1749' href='#n1749'>1749</a> <a id='n1750' href='#n1750'>1750</a> <a id='n1751' href='#n1751'>1751</a> <a id='n1752' href='#n1752'>1752</a> <a id='n1753' href='#n1753'>1753</a> <a id='n1754' href='#n1754'>1754</a> <a id='n1755' href='#n1755'>1755</a> <a id='n1756' href='#n1756'>1756</a> <a id='n1757' href='#n1757'>1757</a> <a id='n1758' href='#n1758'>1758</a> <a id='n1759' href='#n1759'>1759</a> <a id='n1760' href='#n1760'>1760</a> <a id='n1761' href='#n1761'>1761</a> <a id='n1762' href='#n1762'>1762</a> <a id='n1763' href='#n1763'>1763</a> <a id='n1764' href='#n1764'>1764</a> <a id='n1765' href='#n1765'>1765</a> <a id='n1766' href='#n1766'>1766</a> <a id='n1767' href='#n1767'>1767</a> <a id='n1768' href='#n1768'>1768</a> <a id='n1769' href='#n1769'>1769</a> <a id='n1770' href='#n1770'>1770</a> <a id='n1771' href='#n1771'>1771</a> <a id='n1772' href='#n1772'>1772</a> <a id='n1773' href='#n1773'>1773</a> <a id='n1774' href='#n1774'>1774</a> <a id='n1775' href='#n1775'>1775</a> <a id='n1776' href='#n1776'>1776</a> <a id='n1777' href='#n1777'>1777</a> <a id='n1778' href='#n1778'>1778</a> <a id='n1779' href='#n1779'>1779</a> <a id='n1780' href='#n1780'>1780</a> <a id='n1781' href='#n1781'>1781</a> <a id='n1782' href='#n1782'>1782</a> <a id='n1783' href='#n1783'>1783</a> <a id='n1784' href='#n1784'>1784</a> <a id='n1785' href='#n1785'>1785</a> <a id='n1786' href='#n1786'>1786</a> <a id='n1787' href='#n1787'>1787</a> <a id='n1788' href='#n1788'>1788</a> <a id='n1789' href='#n1789'>1789</a> <a id='n1790' href='#n1790'>1790</a> <a id='n1791' href='#n1791'>1791</a> <a id='n1792' href='#n1792'>1792</a> <a id='n1793' href='#n1793'>1793</a> <a id='n1794' href='#n1794'>1794</a> <a id='n1795' href='#n1795'>1795</a> <a id='n1796' href='#n1796'>1796</a> <a id='n1797' href='#n1797'>1797</a> <a id='n1798' href='#n1798'>1798</a> <a id='n1799' href='#n1799'>1799</a> <a id='n1800' href='#n1800'>1800</a> <a id='n1801' href='#n1801'>1801</a> <a id='n1802' href='#n1802'>1802</a> <a id='n1803' href='#n1803'>1803</a> <a id='n1804' href='#n1804'>1804</a> <a id='n1805' href='#n1805'>1805</a> <a id='n1806' href='#n1806'>1806</a> <a id='n1807' href='#n1807'>1807</a> <a id='n1808' href='#n1808'>1808</a> <a id='n1809' href='#n1809'>1809</a> <a id='n1810' href='#n1810'>1810</a> <a id='n1811' href='#n1811'>1811</a> <a id='n1812' href='#n1812'>1812</a> <a id='n1813' href='#n1813'>1813</a> <a id='n1814' href='#n1814'>1814</a> <a id='n1815' href='#n1815'>1815</a> <a id='n1816' href='#n1816'>1816</a> <a id='n1817' href='#n1817'>1817</a> <a id='n1818' href='#n1818'>1818</a> <a id='n1819' href='#n1819'>1819</a> <a id='n1820' href='#n1820'>1820</a> <a id='n1821' href='#n1821'>1821</a> <a id='n1822' href='#n1822'>1822</a> <a id='n1823' href='#n1823'>1823</a> <a id='n1824' href='#n1824'>1824</a> <a id='n1825' href='#n1825'>1825</a> <a id='n1826' href='#n1826'>1826</a> <a id='n1827' href='#n1827'>1827</a> <a id='n1828' href='#n1828'>1828</a> <a id='n1829' href='#n1829'>1829</a> <a id='n1830' href='#n1830'>1830</a> <a id='n1831' href='#n1831'>1831</a> <a id='n1832' href='#n1832'>1832</a> <a id='n1833' href='#n1833'>1833</a> <a id='n1834' href='#n1834'>1834</a> <a id='n1835' href='#n1835'>1835</a> <a id='n1836' href='#n1836'>1836</a> <a id='n1837' href='#n1837'>1837</a> <a id='n1838' href='#n1838'>1838</a> <a id='n1839' href='#n1839'>1839</a> <a id='n1840' href='#n1840'>1840</a> <a id='n1841' href='#n1841'>1841</a> <a id='n1842' href='#n1842'>1842</a> <a id='n1843' href='#n1843'>1843</a> <a id='n1844' href='#n1844'>1844</a> <a id='n1845' href='#n1845'>1845</a> <a id='n1846' href='#n1846'>1846</a> <a id='n1847' href='#n1847'>1847</a> <a id='n1848' href='#n1848'>1848</a> <a id='n1849' href='#n1849'>1849</a> <a id='n1850' href='#n1850'>1850</a> <a id='n1851' href='#n1851'>1851</a> <a id='n1852' href='#n1852'>1852</a> <a id='n1853' href='#n1853'>1853</a> <a id='n1854' href='#n1854'>1854</a> <a id='n1855' href='#n1855'>1855</a> <a id='n1856' href='#n1856'>1856</a> <a id='n1857' href='#n1857'>1857</a> <a id='n1858' href='#n1858'>1858</a> <a id='n1859' href='#n1859'>1859</a> <a id='n1860' href='#n1860'>1860</a> <a id='n1861' href='#n1861'>1861</a> <a id='n1862' href='#n1862'>1862</a> <a id='n1863' href='#n1863'>1863</a> <a id='n1864' href='#n1864'>1864</a> <a id='n1865' href='#n1865'>1865</a> <a id='n1866' href='#n1866'>1866</a> <a id='n1867' href='#n1867'>1867</a> <a id='n1868' href='#n1868'>1868</a> <a id='n1869' href='#n1869'>1869</a> <a id='n1870' href='#n1870'>1870</a> <a id='n1871' href='#n1871'>1871</a> <a id='n1872' href='#n1872'>1872</a> <a id='n1873' href='#n1873'>1873</a> <a id='n1874' href='#n1874'>1874</a> <a id='n1875' href='#n1875'>1875</a> <a id='n1876' href='#n1876'>1876</a> <a id='n1877' href='#n1877'>1877</a> <a id='n1878' href='#n1878'>1878</a> <a id='n1879' href='#n1879'>1879</a> <a id='n1880' href='#n1880'>1880</a> <a id='n1881' href='#n1881'>1881</a> <a id='n1882' href='#n1882'>1882</a> <a id='n1883' href='#n1883'>1883</a> <a id='n1884' href='#n1884'>1884</a> <a id='n1885' href='#n1885'>1885</a> <a id='n1886' href='#n1886'>1886</a> <a id='n1887' href='#n1887'>1887</a> <a id='n1888' href='#n1888'>1888</a> <a id='n1889' href='#n1889'>1889</a> <a id='n1890' href='#n1890'>1890</a> <a id='n1891' href='#n1891'>1891</a> <a id='n1892' href='#n1892'>1892</a> <a id='n1893' href='#n1893'>1893</a> <a id='n1894' href='#n1894'>1894</a> <a id='n1895' href='#n1895'>1895</a> <a id='n1896' href='#n1896'>1896</a> <a id='n1897' href='#n1897'>1897</a> <a id='n1898' href='#n1898'>1898</a> <a id='n1899' href='#n1899'>1899</a> <a id='n1900' href='#n1900'>1900</a> <a id='n1901' href='#n1901'>1901</a> <a id='n1902' href='#n1902'>1902</a> <a id='n1903' href='#n1903'>1903</a> <a id='n1904' href='#n1904'>1904</a> <a id='n1905' href='#n1905'>1905</a> <a id='n1906' href='#n1906'>1906</a> <a id='n1907' href='#n1907'>1907</a> <a id='n1908' href='#n1908'>1908</a> <a id='n1909' href='#n1909'>1909</a> <a id='n1910' href='#n1910'>1910</a> <a id='n1911' href='#n1911'>1911</a> <a id='n1912' href='#n1912'>1912</a> <a id='n1913' href='#n1913'>1913</a> <a id='n1914' href='#n1914'>1914</a> <a id='n1915' href='#n1915'>1915</a> <a id='n1916' href='#n1916'>1916</a> <a id='n1917' href='#n1917'>1917</a> <a id='n1918' href='#n1918'>1918</a> <a id='n1919' href='#n1919'>1919</a> <a id='n1920' href='#n1920'>1920</a> <a id='n1921' href='#n1921'>1921</a> <a id='n1922' href='#n1922'>1922</a> <a id='n1923' href='#n1923'>1923</a> <a id='n1924' href='#n1924'>1924</a> <a id='n1925' href='#n1925'>1925</a> <a id='n1926' href='#n1926'>1926</a> <a id='n1927' href='#n1927'>1927</a> <a id='n1928' href='#n1928'>1928</a> <a id='n1929' href='#n1929'>1929</a> <a id='n1930' href='#n1930'>1930</a> <a id='n1931' href='#n1931'>1931</a> <a id='n1932' href='#n1932'>1932</a> <a id='n1933' href='#n1933'>1933</a> <a id='n1934' href='#n1934'>1934</a> <a id='n1935' href='#n1935'>1935</a> <a id='n1936' href='#n1936'>1936</a> <a id='n1937' href='#n1937'>1937</a> <a id='n1938' href='#n1938'>1938</a> <a id='n1939' href='#n1939'>1939</a> <a id='n1940' href='#n1940'>1940</a> <a id='n1941' href='#n1941'>1941</a> <a id='n1942' href='#n1942'>1942</a> <a id='n1943' href='#n1943'>1943</a> <a id='n1944' href='#n1944'>1944</a> <a id='n1945' href='#n1945'>1945</a> <a id='n1946' href='#n1946'>1946</a> <a id='n1947' href='#n1947'>1947</a> <a id='n1948' href='#n1948'>1948</a> <a id='n1949' href='#n1949'>1949</a> <a id='n1950' href='#n1950'>1950</a> <a id='n1951' href='#n1951'>1951</a> <a id='n1952' href='#n1952'>1952</a> <a id='n1953' href='#n1953'>1953</a> <a id='n1954' href='#n1954'>1954</a> <a id='n1955' href='#n1955'>1955</a> <a id='n1956' href='#n1956'>1956</a> <a id='n1957' href='#n1957'>1957</a> <a id='n1958' href='#n1958'>1958</a> <a id='n1959' href='#n1959'>1959</a> <a id='n1960' href='#n1960'>1960</a> <a id='n1961' href='#n1961'>1961</a> <a id='n1962' href='#n1962'>1962</a> <a id='n1963' href='#n1963'>1963</a> <a id='n1964' href='#n1964'>1964</a> <a id='n1965' href='#n1965'>1965</a> <a id='n1966' href='#n1966'>1966</a> <a id='n1967' href='#n1967'>1967</a> <a id='n1968' href='#n1968'>1968</a> <a id='n1969' href='#n1969'>1969</a> <a id='n1970' href='#n1970'>1970</a> <a id='n1971' href='#n1971'>1971</a> <a id='n1972' href='#n1972'>1972</a> <a id='n1973' href='#n1973'>1973</a> <a id='n1974' href='#n1974'>1974</a> <a id='n1975' href='#n1975'>1975</a> <a id='n1976' href='#n1976'>1976</a> <a id='n1977' href='#n1977'>1977</a> <a id='n1978' href='#n1978'>1978</a> <a id='n1979' href='#n1979'>1979</a> <a id='n1980' href='#n1980'>1980</a> <a id='n1981' href='#n1981'>1981</a> <a id='n1982' href='#n1982'>1982</a> <a id='n1983' href='#n1983'>1983</a> <a id='n1984' href='#n1984'>1984</a> <a id='n1985' href='#n1985'>1985</a> <a id='n1986' href='#n1986'>1986</a> <a id='n1987' href='#n1987'>1987</a> <a id='n1988' href='#n1988'>1988</a> <a id='n1989' href='#n1989'>1989</a> <a id='n1990' href='#n1990'>1990</a> <a id='n1991' href='#n1991'>1991</a> <a id='n1992' href='#n1992'>1992</a> <a id='n1993' href='#n1993'>1993</a> <a id='n1994' href='#n1994'>1994</a> <a id='n1995' href='#n1995'>1995</a> <a id='n1996' href='#n1996'>1996</a> <a id='n1997' href='#n1997'>1997</a> <a id='n1998' href='#n1998'>1998</a> <a id='n1999' href='#n1999'>1999</a> <a id='n2000' href='#n2000'>2000</a> <a id='n2001' href='#n2001'>2001</a> <a id='n2002' href='#n2002'>2002</a> <a id='n2003' href='#n2003'>2003</a> <a id='n2004' href='#n2004'>2004</a> <a id='n2005' href='#n2005'>2005</a> <a id='n2006' href='#n2006'>2006</a> <a id='n2007' href='#n2007'>2007</a> <a id='n2008' href='#n2008'>2008</a> <a id='n2009' href='#n2009'>2009</a> <a id='n2010' href='#n2010'>2010</a> <a id='n2011' href='#n2011'>2011</a> <a id='n2012' href='#n2012'>2012</a> <a id='n2013' href='#n2013'>2013</a> <a id='n2014' href='#n2014'>2014</a> <a id='n2015' href='#n2015'>2015</a> <a id='n2016' href='#n2016'>2016</a> <a id='n2017' href='#n2017'>2017</a> <a id='n2018' href='#n2018'>2018</a> <a id='n2019' href='#n2019'>2019</a> <a id='n2020' href='#n2020'>2020</a> <a id='n2021' href='#n2021'>2021</a> <a id='n2022' href='#n2022'>2022</a> <a id='n2023' href='#n2023'>2023</a> <a id='n2024' href='#n2024'>2024</a> <a id='n2025' href='#n2025'>2025</a> <a id='n2026' href='#n2026'>2026</a> <a id='n2027' href='#n2027'>2027</a> <a id='n2028' href='#n2028'>2028</a> <a id='n2029' href='#n2029'>2029</a> <a id='n2030' href='#n2030'>2030</a> <a id='n2031' href='#n2031'>2031</a> <a id='n2032' href='#n2032'>2032</a> <a id='n2033' href='#n2033'>2033</a> <a id='n2034' href='#n2034'>2034</a> <a id='n2035' href='#n2035'>2035</a> <a id='n2036' href='#n2036'>2036</a> <a id='n2037' href='#n2037'>2037</a> <a id='n2038' href='#n2038'>2038</a> <a id='n2039' href='#n2039'>2039</a> <a id='n2040' href='#n2040'>2040</a> <a id='n2041' href='#n2041'>2041</a> <a id='n2042' href='#n2042'>2042</a> <a id='n2043' href='#n2043'>2043</a> <a id='n2044' href='#n2044'>2044</a> <a id='n2045' href='#n2045'>2045</a> <a id='n2046' href='#n2046'>2046</a> <a id='n2047' href='#n2047'>2047</a> <a id='n2048' href='#n2048'>2048</a> <a id='n2049' href='#n2049'>2049</a> <a id='n2050' href='#n2050'>2050</a> <a id='n2051' href='#n2051'>2051</a> <a id='n2052' href='#n2052'>2052</a> <a id='n2053' href='#n2053'>2053</a> <a id='n2054' href='#n2054'>2054</a> <a id='n2055' href='#n2055'>2055</a> <a id='n2056' href='#n2056'>2056</a> <a id='n2057' href='#n2057'>2057</a> <a id='n2058' href='#n2058'>2058</a> <a id='n2059' href='#n2059'>2059</a> <a id='n2060' href='#n2060'>2060</a> <a id='n2061' href='#n2061'>2061</a> <a id='n2062' href='#n2062'>2062</a> <a id='n2063' href='#n2063'>2063</a> <a id='n2064' href='#n2064'>2064</a> <a id='n2065' href='#n2065'>2065</a> <a id='n2066' href='#n2066'>2066</a> <a id='n2067' href='#n2067'>2067</a> <a id='n2068' href='#n2068'>2068</a> <a id='n2069' href='#n2069'>2069</a> <a id='n2070' href='#n2070'>2070</a> <a id='n2071' href='#n2071'>2071</a> <a id='n2072' href='#n2072'>2072</a> <a id='n2073' href='#n2073'>2073</a> <a id='n2074' href='#n2074'>2074</a> <a id='n2075' href='#n2075'>2075</a> <a id='n2076' href='#n2076'>2076</a> <a id='n2077' href='#n2077'>2077</a> <a id='n2078' href='#n2078'>2078</a> <a id='n2079' href='#n2079'>2079</a> <a id='n2080' href='#n2080'>2080</a> <a id='n2081' href='#n2081'>2081</a> <a id='n2082' href='#n2082'>2082</a> <a id='n2083' href='#n2083'>2083</a> <a id='n2084' href='#n2084'>2084</a> <a id='n2085' href='#n2085'>2085</a> <a id='n2086' href='#n2086'>2086</a> <a id='n2087' href='#n2087'>2087</a> <a id='n2088' href='#n2088'>2088</a> <a id='n2089' href='#n2089'>2089</a> <a id='n2090' href='#n2090'>2090</a> <a id='n2091' href='#n2091'>2091</a> <a id='n2092' href='#n2092'>2092</a> <a id='n2093' href='#n2093'>2093</a> <a id='n2094' href='#n2094'>2094</a> <a id='n2095' href='#n2095'>2095</a> <a id='n2096' href='#n2096'>2096</a> <a id='n2097' href='#n2097'>2097</a> <a id='n2098' href='#n2098'>2098</a> <a id='n2099' href='#n2099'>2099</a> <a id='n2100' href='#n2100'>2100</a> <a id='n2101' href='#n2101'>2101</a> <a id='n2102' href='#n2102'>2102</a> <a id='n2103' href='#n2103'>2103</a> <a id='n2104' href='#n2104'>2104</a> <a id='n2105' href='#n2105'>2105</a> <a id='n2106' href='#n2106'>2106</a> <a id='n2107' href='#n2107'>2107</a> <a id='n2108' href='#n2108'>2108</a> <a id='n2109' href='#n2109'>2109</a> <a id='n2110' href='#n2110'>2110</a> <a id='n2111' href='#n2111'>2111</a> <a id='n2112' href='#n2112'>2112</a> <a id='n2113' href='#n2113'>2113</a> <a id='n2114' href='#n2114'>2114</a> <a id='n2115' href='#n2115'>2115</a> <a id='n2116' href='#n2116'>2116</a> <a id='n2117' href='#n2117'>2117</a> <a id='n2118' href='#n2118'>2118</a> <a id='n2119' href='#n2119'>2119</a> <a id='n2120' href='#n2120'>2120</a> <a id='n2121' href='#n2121'>2121</a> <a id='n2122' href='#n2122'>2122</a> <a id='n2123' href='#n2123'>2123</a> <a id='n2124' href='#n2124'>2124</a> <a id='n2125' href='#n2125'>2125</a> <a id='n2126' href='#n2126'>2126</a> <a id='n2127' href='#n2127'>2127</a> <a id='n2128' href='#n2128'>2128</a> <a id='n2129' href='#n2129'>2129</a> <a id='n2130' href='#n2130'>2130</a> <a id='n2131' href='#n2131'>2131</a> <a id='n2132' href='#n2132'>2132</a> <a id='n2133' href='#n2133'>2133</a> <a id='n2134' href='#n2134'>2134</a> <a id='n2135' href='#n2135'>2135</a> <a id='n2136' href='#n2136'>2136</a> <a id='n2137' href='#n2137'>2137</a> <a id='n2138' href='#n2138'>2138</a> <a id='n2139' href='#n2139'>2139</a> <a id='n2140' href='#n2140'>2140</a> <a id='n2141' href='#n2141'>2141</a> <a id='n2142' href='#n2142'>2142</a> <a id='n2143' href='#n2143'>2143</a> <a id='n2144' href='#n2144'>2144</a> <a id='n2145' href='#n2145'>2145</a> <a id='n2146' href='#n2146'>2146</a> <a id='n2147' href='#n2147'>2147</a> <a id='n2148' href='#n2148'>2148</a> <a id='n2149' href='#n2149'>2149</a> <a id='n2150' href='#n2150'>2150</a> <a id='n2151' href='#n2151'>2151</a> <a id='n2152' href='#n2152'>2152</a> <a id='n2153' href='#n2153'>2153</a> <a id='n2154' href='#n2154'>2154</a> <a id='n2155' href='#n2155'>2155</a> <a id='n2156' href='#n2156'>2156</a> <a id='n2157' href='#n2157'>2157</a> <a id='n2158' href='#n2158'>2158</a> <a id='n2159' href='#n2159'>2159</a> <a id='n2160' href='#n2160'>2160</a> <a id='n2161' href='#n2161'>2161</a> <a id='n2162' href='#n2162'>2162</a> <a id='n2163' href='#n2163'>2163</a> <a id='n2164' href='#n2164'>2164</a> <a id='n2165' href='#n2165'>2165</a> <a id='n2166' href='#n2166'>2166</a> <a id='n2167' href='#n2167'>2167</a> <a id='n2168' href='#n2168'>2168</a> <a id='n2169' href='#n2169'>2169</a> <a id='n2170' href='#n2170'>2170</a> <a id='n2171' href='#n2171'>2171</a> <a id='n2172' href='#n2172'>2172</a> <a id='n2173' href='#n2173'>2173</a> <a id='n2174' href='#n2174'>2174</a> <a id='n2175' href='#n2175'>2175</a> <a id='n2176' href='#n2176'>2176</a> <a id='n2177' href='#n2177'>2177</a> <a id='n2178' href='#n2178'>2178</a> <a id='n2179' href='#n2179'>2179</a> <a id='n2180' href='#n2180'>2180</a> <a id='n2181' href='#n2181'>2181</a> <a id='n2182' href='#n2182'>2182</a> <a id='n2183' href='#n2183'>2183</a> <a id='n2184' href='#n2184'>2184</a> <a id='n2185' href='#n2185'>2185</a> <a id='n2186' href='#n2186'>2186</a> <a id='n2187' href='#n2187'>2187</a> <a id='n2188' href='#n2188'>2188</a> <a id='n2189' href='#n2189'>2189</a> <a id='n2190' href='#n2190'>2190</a> <a id='n2191' href='#n2191'>2191</a> <a id='n2192' href='#n2192'>2192</a> <a id='n2193' href='#n2193'>2193</a> <a id='n2194' href='#n2194'>2194</a> <a id='n2195' href='#n2195'>2195</a> <a id='n2196' href='#n2196'>2196</a> <a id='n2197' href='#n2197'>2197</a> <a id='n2198' href='#n2198'>2198</a> <a id='n2199' href='#n2199'>2199</a> <a id='n2200' href='#n2200'>2200</a> <a id='n2201' href='#n2201'>2201</a> <a id='n2202' href='#n2202'>2202</a> <a id='n2203' href='#n2203'>2203</a> <a id='n2204' href='#n2204'>2204</a> <a id='n2205' href='#n2205'>2205</a> <a id='n2206' href='#n2206'>2206</a> <a id='n2207' href='#n2207'>2207</a> <a id='n2208' href='#n2208'>2208</a> <a id='n2209' href='#n2209'>2209</a> <a id='n2210' href='#n2210'>2210</a> <a id='n2211' href='#n2211'>2211</a> <a id='n2212' href='#n2212'>2212</a> <a id='n2213' href='#n2213'>2213</a> <a id='n2214' href='#n2214'>2214</a> <a id='n2215' href='#n2215'>2215</a> <a id='n2216' href='#n2216'>2216</a> <a id='n2217' href='#n2217'>2217</a> <a id='n2218' href='#n2218'>2218</a> <a id='n2219' href='#n2219'>2219</a> <a id='n2220' href='#n2220'>2220</a> <a id='n2221' href='#n2221'>2221</a> <a id='n2222' href='#n2222'>2222</a> <a id='n2223' href='#n2223'>2223</a> <a id='n2224' href='#n2224'>2224</a> <a id='n2225' href='#n2225'>2225</a> <a id='n2226' href='#n2226'>2226</a> <a id='n2227' href='#n2227'>2227</a> <a id='n2228' href='#n2228'>2228</a> <a id='n2229' href='#n2229'>2229</a> <a id='n2230' href='#n2230'>2230</a> <a id='n2231' href='#n2231'>2231</a> <a id='n2232' href='#n2232'>2232</a> <a id='n2233' href='#n2233'>2233</a> <a id='n2234' href='#n2234'>2234</a> <a id='n2235' href='#n2235'>2235</a> <a id='n2236' href='#n2236'>2236</a> <a id='n2237' href='#n2237'>2237</a> <a id='n2238' href='#n2238'>2238</a> <a id='n2239' href='#n2239'>2239</a> <a id='n2240' href='#n2240'>2240</a> <a id='n2241' href='#n2241'>2241</a> <a id='n2242' href='#n2242'>2242</a> <a id='n2243' href='#n2243'>2243</a> <a id='n2244' href='#n2244'>2244</a> <a id='n2245' href='#n2245'>2245</a> <a id='n2246' href='#n2246'>2246</a> <a id='n2247' href='#n2247'>2247</a> <a id='n2248' href='#n2248'>2248</a> <a id='n2249' href='#n2249'>2249</a> <a id='n2250' href='#n2250'>2250</a> <a id='n2251' href='#n2251'>2251</a> <a id='n2252' href='#n2252'>2252</a> <a id='n2253' href='#n2253'>2253</a> <a id='n2254' href='#n2254'>2254</a> <a id='n2255' href='#n2255'>2255</a> <a id='n2256' href='#n2256'>2256</a> <a id='n2257' href='#n2257'>2257</a> <a id='n2258' href='#n2258'>2258</a> <a id='n2259' href='#n2259'>2259</a> <a id='n2260' href='#n2260'>2260</a> <a id='n2261' href='#n2261'>2261</a> <a id='n2262' href='#n2262'>2262</a> <a id='n2263' href='#n2263'>2263</a> <a id='n2264' href='#n2264'>2264</a> <a id='n2265' href='#n2265'>2265</a> <a id='n2266' href='#n2266'>2266</a> <a id='n2267' href='#n2267'>2267</a> <a id='n2268' href='#n2268'>2268</a> <a id='n2269' href='#n2269'>2269</a> <a id='n2270' href='#n2270'>2270</a> <a id='n2271' href='#n2271'>2271</a> <a id='n2272' href='#n2272'>2272</a> <a id='n2273' href='#n2273'>2273</a> <a id='n2274' href='#n2274'>2274</a> <a id='n2275' href='#n2275'>2275</a> <a id='n2276' href='#n2276'>2276</a> <a id='n2277' href='#n2277'>2277</a> <a id='n2278' href='#n2278'>2278</a> <a id='n2279' href='#n2279'>2279</a> <a id='n2280' href='#n2280'>2280</a> <a id='n2281' href='#n2281'>2281</a> <a id='n2282' href='#n2282'>2282</a> <a id='n2283' href='#n2283'>2283</a> <a id='n2284' href='#n2284'>2284</a> <a id='n2285' href='#n2285'>2285</a> <a id='n2286' href='#n2286'>2286</a> <a id='n2287' href='#n2287'>2287</a> <a id='n2288' href='#n2288'>2288</a> <a id='n2289' href='#n2289'>2289</a> <a id='n2290' href='#n2290'>2290</a> <a id='n2291' href='#n2291'>2291</a> <a id='n2292' href='#n2292'>2292</a> <a id='n2293' href='#n2293'>2293</a> <a id='n2294' href='#n2294'>2294</a> <a id='n2295' href='#n2295'>2295</a> <a id='n2296' href='#n2296'>2296</a> <a id='n2297' href='#n2297'>2297</a> <a id='n2298' href='#n2298'>2298</a> <a id='n2299' href='#n2299'>2299</a> <a id='n2300' href='#n2300'>2300</a> <a id='n2301' href='#n2301'>2301</a> <a id='n2302' href='#n2302'>2302</a> <a id='n2303' href='#n2303'>2303</a> <a id='n2304' href='#n2304'>2304</a> <a id='n2305' href='#n2305'>2305</a> <a id='n2306' href='#n2306'>2306</a> <a id='n2307' href='#n2307'>2307</a> <a id='n2308' href='#n2308'>2308</a> <a id='n2309' href='#n2309'>2309</a> <a id='n2310' href='#n2310'>2310</a> <a id='n2311' href='#n2311'>2311</a> <a id='n2312' href='#n2312'>2312</a> <a id='n2313' href='#n2313'>2313</a> <a id='n2314' href='#n2314'>2314</a> <a id='n2315' href='#n2315'>2315</a> <a id='n2316' href='#n2316'>2316</a> <a id='n2317' href='#n2317'>2317</a> <a id='n2318' href='#n2318'>2318</a> <a id='n2319' href='#n2319'>2319</a> <a id='n2320' href='#n2320'>2320</a> <a id='n2321' href='#n2321'>2321</a> <a id='n2322' href='#n2322'>2322</a> <a id='n2323' href='#n2323'>2323</a> <a id='n2324' href='#n2324'>2324</a> <a id='n2325' href='#n2325'>2325</a> <a id='n2326' href='#n2326'>2326</a> <a id='n2327' href='#n2327'>2327</a> <a id='n2328' href='#n2328'>2328</a> <a id='n2329' href='#n2329'>2329</a> <a id='n2330' href='#n2330'>2330</a> <a id='n2331' href='#n2331'>2331</a> <a id='n2332' href='#n2332'>2332</a> <a id='n2333' href='#n2333'>2333</a> <a id='n2334' href='#n2334'>2334</a> <a id='n2335' href='#n2335'>2335</a> <a id='n2336' href='#n2336'>2336</a> <a id='n2337' href='#n2337'>2337</a> <a id='n2338' href='#n2338'>2338</a> <a id='n2339' href='#n2339'>2339</a> <a id='n2340' href='#n2340'>2340</a> <a id='n2341' href='#n2341'>2341</a> <a id='n2342' href='#n2342'>2342</a> <a id='n2343' href='#n2343'>2343</a> <a id='n2344' href='#n2344'>2344</a> <a id='n2345' href='#n2345'>2345</a> <a id='n2346' href='#n2346'>2346</a> <a id='n2347' href='#n2347'>2347</a> <a id='n2348' href='#n2348'>2348</a> <a id='n2349' href='#n2349'>2349</a> <a id='n2350' href='#n2350'>2350</a> <a id='n2351' href='#n2351'>2351</a> <a id='n2352' href='#n2352'>2352</a> <a id='n2353' href='#n2353'>2353</a> <a id='n2354' href='#n2354'>2354</a> <a id='n2355' href='#n2355'>2355</a> <a id='n2356' href='#n2356'>2356</a> <a id='n2357' href='#n2357'>2357</a> <a id='n2358' href='#n2358'>2358</a> <a id='n2359' href='#n2359'>2359</a> <a id='n2360' href='#n2360'>2360</a> <a id='n2361' href='#n2361'>2361</a> <a id='n2362' href='#n2362'>2362</a> <a id='n2363' href='#n2363'>2363</a> <a id='n2364' href='#n2364'>2364</a> <a id='n2365' href='#n2365'>2365</a> <a id='n2366' href='#n2366'>2366</a> <a id='n2367' href='#n2367'>2367</a> <a id='n2368' href='#n2368'>2368</a> <a id='n2369' href='#n2369'>2369</a> <a id='n2370' href='#n2370'>2370</a> <a id='n2371' href='#n2371'>2371</a> <a id='n2372' href='#n2372'>2372</a> <a id='n2373' href='#n2373'>2373</a> <a id='n2374' href='#n2374'>2374</a> <a id='n2375' href='#n2375'>2375</a> <a id='n2376' href='#n2376'>2376</a> <a id='n2377' href='#n2377'>2377</a> <a id='n2378' href='#n2378'>2378</a> <a id='n2379' href='#n2379'>2379</a> <a id='n2380' href='#n2380'>2380</a> <a id='n2381' href='#n2381'>2381</a> <a id='n2382' href='#n2382'>2382</a> <a id='n2383' href='#n2383'>2383</a> <a id='n2384' href='#n2384'>2384</a> <a id='n2385' href='#n2385'>2385</a> <a id='n2386' href='#n2386'>2386</a> <a id='n2387' href='#n2387'>2387</a> <a id='n2388' href='#n2388'>2388</a> <a id='n2389' href='#n2389'>2389</a> <a id='n2390' href='#n2390'>2390</a> <a id='n2391' href='#n2391'>2391</a> <a id='n2392' href='#n2392'>2392</a> <a id='n2393' href='#n2393'>2393</a> <a id='n2394' href='#n2394'>2394</a> <a id='n2395' href='#n2395'>2395</a> <a id='n2396' href='#n2396'>2396</a> <a id='n2397' href='#n2397'>2397</a> <a id='n2398' href='#n2398'>2398</a> <a id='n2399' href='#n2399'>2399</a> <a id='n2400' href='#n2400'>2400</a> <a id='n2401' href='#n2401'>2401</a> <a id='n2402' href='#n2402'>2402</a> <a id='n2403' href='#n2403'>2403</a> <a id='n2404' href='#n2404'>2404</a> <a id='n2405' href='#n2405'>2405</a> <a id='n2406' href='#n2406'>2406</a> <a id='n2407' href='#n2407'>2407</a> <a id='n2408' href='#n2408'>2408</a> <a id='n2409' href='#n2409'>2409</a> <a id='n2410' href='#n2410'>2410</a> <a id='n2411' href='#n2411'>2411</a> <a id='n2412' href='#n2412'>2412</a> <a id='n2413' href='#n2413'>2413</a> <a id='n2414' href='#n2414'>2414</a> <a id='n2415' href='#n2415'>2415</a> <a id='n2416' href='#n2416'>2416</a> <a id='n2417' href='#n2417'>2417</a> <a id='n2418' href='#n2418'>2418</a> <a id='n2419' href='#n2419'>2419</a> <a id='n2420' href='#n2420'>2420</a> <a id='n2421' href='#n2421'>2421</a> <a id='n2422' href='#n2422'>2422</a> <a id='n2423' href='#n2423'>2423</a> <a id='n2424' href='#n2424'>2424</a> <a id='n2425' href='#n2425'>2425</a> <a id='n2426' href='#n2426'>2426</a> <a id='n2427' href='#n2427'>2427</a> <a id='n2428' href='#n2428'>2428</a> <a id='n2429' href='#n2429'>2429</a> <a id='n2430' href='#n2430'>2430</a> <a id='n2431' href='#n2431'>2431</a> <a id='n2432' href='#n2432'>2432</a> <a id='n2433' href='#n2433'>2433</a> <a id='n2434' href='#n2434'>2434</a> <a id='n2435' href='#n2435'>2435</a> <a id='n2436' href='#n2436'>2436</a> <a id='n2437' href='#n2437'>2437</a> <a id='n2438' href='#n2438'>2438</a> <a id='n2439' href='#n2439'>2439</a> <a id='n2440' href='#n2440'>2440</a> <a id='n2441' href='#n2441'>2441</a> <a id='n2442' href='#n2442'>2442</a> <a id='n2443' href='#n2443'>2443</a> <a id='n2444' href='#n2444'>2444</a> <a id='n2445' href='#n2445'>2445</a> <a id='n2446' href='#n2446'>2446</a> <a id='n2447' href='#n2447'>2447</a> <a id='n2448' href='#n2448'>2448</a> <a id='n2449' href='#n2449'>2449</a> <a id='n2450' href='#n2450'>2450</a> <a id='n2451' href='#n2451'>2451</a> <a id='n2452' href='#n2452'>2452</a> <a id='n2453' href='#n2453'>2453</a> <a id='n2454' href='#n2454'>2454</a> <a id='n2455' href='#n2455'>2455</a> <a id='n2456' href='#n2456'>2456</a> <a id='n2457' href='#n2457'>2457</a> <a id='n2458' href='#n2458'>2458</a> <a id='n2459' href='#n2459'>2459</a> <a id='n2460' href='#n2460'>2460</a> <a id='n2461' href='#n2461'>2461</a> <a id='n2462' href='#n2462'>2462</a> <a id='n2463' href='#n2463'>2463</a> <a id='n2464' href='#n2464'>2464</a> <a id='n2465' href='#n2465'>2465</a> <a id='n2466' href='#n2466'>2466</a> <a id='n2467' href='#n2467'>2467</a> <a id='n2468' href='#n2468'>2468</a> <a id='n2469' href='#n2469'>2469</a> <a id='n2470' href='#n2470'>2470</a> <a id='n2471' href='#n2471'>2471</a> <a id='n2472' href='#n2472'>2472</a> <a id='n2473' href='#n2473'>2473</a> <a id='n2474' href='#n2474'>2474</a> <a id='n2475' href='#n2475'>2475</a> <a id='n2476' href='#n2476'>2476</a> <a id='n2477' href='#n2477'>2477</a> <a id='n2478' href='#n2478'>2478</a> <a id='n2479' href='#n2479'>2479</a> <a id='n2480' href='#n2480'>2480</a> <a id='n2481' href='#n2481'>2481</a> <a id='n2482' href='#n2482'>2482</a> <a id='n2483' href='#n2483'>2483</a> <a id='n2484' href='#n2484'>2484</a> <a id='n2485' href='#n2485'>2485</a> <a id='n2486' href='#n2486'>2486</a> <a id='n2487' href='#n2487'>2487</a> <a id='n2488' href='#n2488'>2488</a> <a id='n2489' href='#n2489'>2489</a> <a id='n2490' href='#n2490'>2490</a> <a id='n2491' href='#n2491'>2491</a> <a id='n2492' href='#n2492'>2492</a> <a id='n2493' href='#n2493'>2493</a> <a id='n2494' href='#n2494'>2494</a> <a id='n2495' href='#n2495'>2495</a> <a id='n2496' href='#n2496'>2496</a> <a id='n2497' href='#n2497'>2497</a> <a id='n2498' href='#n2498'>2498</a> <a id='n2499' href='#n2499'>2499</a> <a id='n2500' href='#n2500'>2500</a> <a id='n2501' href='#n2501'>2501</a> <a id='n2502' href='#n2502'>2502</a> <a id='n2503' href='#n2503'>2503</a> <a id='n2504' href='#n2504'>2504</a> <a id='n2505' href='#n2505'>2505</a> <a id='n2506' href='#n2506'>2506</a> <a id='n2507' href='#n2507'>2507</a> <a id='n2508' href='#n2508'>2508</a> <a id='n2509' href='#n2509'>2509</a> <a id='n2510' href='#n2510'>2510</a> <a id='n2511' href='#n2511'>2511</a> <a id='n2512' href='#n2512'>2512</a> <a id='n2513' href='#n2513'>2513</a> <a id='n2514' href='#n2514'>2514</a> <a id='n2515' href='#n2515'>2515</a> <a id='n2516' href='#n2516'>2516</a> <a id='n2517' href='#n2517'>2517</a> <a id='n2518' href='#n2518'>2518</a> <a id='n2519' href='#n2519'>2519</a> <a id='n2520' href='#n2520'>2520</a> <a id='n2521' href='#n2521'>2521</a> <a id='n2522' href='#n2522'>2522</a> <a id='n2523' href='#n2523'>2523</a> <a id='n2524' href='#n2524'>2524</a> <a id='n2525' href='#n2525'>2525</a> <a id='n2526' href='#n2526'>2526</a> <a id='n2527' href='#n2527'>2527</a> <a id='n2528' href='#n2528'>2528</a> <a id='n2529' href='#n2529'>2529</a> <a id='n2530' href='#n2530'>2530</a> <a id='n2531' href='#n2531'>2531</a> <a id='n2532' href='#n2532'>2532</a> <a id='n2533' href='#n2533'>2533</a> <a id='n2534' href='#n2534'>2534</a> <a id='n2535' href='#n2535'>2535</a> <a id='n2536' href='#n2536'>2536</a> <a id='n2537' href='#n2537'>2537</a> <a id='n2538' href='#n2538'>2538</a> <a id='n2539' href='#n2539'>2539</a> <a id='n2540' href='#n2540'>2540</a> <a id='n2541' href='#n2541'>2541</a> <a id='n2542' href='#n2542'>2542</a> <a id='n2543' href='#n2543'>2543</a> <a id='n2544' href='#n2544'>2544</a> <a id='n2545' href='#n2545'>2545</a> <a id='n2546' href='#n2546'>2546</a> <a id='n2547' href='#n2547'>2547</a> <a id='n2548' href='#n2548'>2548</a> <a id='n2549' href='#n2549'>2549</a> <a id='n2550' href='#n2550'>2550</a> <a id='n2551' href='#n2551'>2551</a> <a id='n2552' href='#n2552'>2552</a> <a id='n2553' href='#n2553'>2553</a> <a id='n2554' href='#n2554'>2554</a> <a id='n2555' href='#n2555'>2555</a> <a id='n2556' href='#n2556'>2556</a> <a id='n2557' href='#n2557'>2557</a> <a id='n2558' href='#n2558'>2558</a> <a id='n2559' href='#n2559'>2559</a> <a id='n2560' href='#n2560'>2560</a> <a id='n2561' href='#n2561'>2561</a> <a id='n2562' href='#n2562'>2562</a> <a id='n2563' href='#n2563'>2563</a> <a id='n2564' href='#n2564'>2564</a> <a id='n2565' href='#n2565'>2565</a> <a id='n2566' href='#n2566'>2566</a> <a id='n2567' href='#n2567'>2567</a> <a id='n2568' href='#n2568'>2568</a> <a id='n2569' href='#n2569'>2569</a> <a id='n2570' href='#n2570'>2570</a> <a id='n2571' href='#n2571'>2571</a> <a id='n2572' href='#n2572'>2572</a> <a id='n2573' href='#n2573'>2573</a> <a id='n2574' href='#n2574'>2574</a> <a id='n2575' href='#n2575'>2575</a> <a id='n2576' href='#n2576'>2576</a> <a id='n2577' href='#n2577'>2577</a> <a id='n2578' href='#n2578'>2578</a> <a id='n2579' href='#n2579'>2579</a> <a id='n2580' href='#n2580'>2580</a> <a id='n2581' href='#n2581'>2581</a> <a id='n2582' href='#n2582'>2582</a> <a id='n2583' href='#n2583'>2583</a> <a id='n2584' href='#n2584'>2584</a> <a id='n2585' href='#n2585'>2585</a> <a id='n2586' href='#n2586'>2586</a> <a id='n2587' href='#n2587'>2587</a> <a id='n2588' href='#n2588'>2588</a> <a id='n2589' href='#n2589'>2589</a> <a id='n2590' href='#n2590'>2590</a> <a id='n2591' href='#n2591'>2591</a> <a id='n2592' href='#n2592'>2592</a> <a id='n2593' href='#n2593'>2593</a> <a id='n2594' href='#n2594'>2594</a> <a id='n2595' href='#n2595'>2595</a> <a id='n2596' href='#n2596'>2596</a> <a id='n2597' href='#n2597'>2597</a> <a id='n2598' href='#n2598'>2598</a> <a id='n2599' href='#n2599'>2599</a> <a id='n2600' href='#n2600'>2600</a> <a id='n2601' href='#n2601'>2601</a> <a id='n2602' href='#n2602'>2602</a> <a id='n2603' href='#n2603'>2603</a> <a id='n2604' href='#n2604'>2604</a> <a id='n2605' href='#n2605'>2605</a> <a id='n2606' href='#n2606'>2606</a> <a id='n2607' href='#n2607'>2607</a> <a id='n2608' href='#n2608'>2608</a> <a id='n2609' href='#n2609'>2609</a> <a id='n2610' href='#n2610'>2610</a> <a id='n2611' href='#n2611'>2611</a> <a id='n2612' href='#n2612'>2612</a> <a id='n2613' href='#n2613'>2613</a> <a id='n2614' href='#n2614'>2614</a> <a id='n2615' href='#n2615'>2615</a> <a id='n2616' href='#n2616'>2616</a> <a id='n2617' href='#n2617'>2617</a> <a id='n2618' href='#n2618'>2618</a> <a id='n2619' href='#n2619'>2619</a> <a id='n2620' href='#n2620'>2620</a> <a id='n2621' href='#n2621'>2621</a> <a id='n2622' href='#n2622'>2622</a> <a id='n2623' href='#n2623'>2623</a> <a id='n2624' href='#n2624'>2624</a> <a id='n2625' href='#n2625'>2625</a> <a id='n2626' href='#n2626'>2626</a> <a id='n2627' href='#n2627'>2627</a> <a id='n2628' href='#n2628'>2628</a> <a id='n2629' href='#n2629'>2629</a> <a id='n2630' href='#n2630'>2630</a> <a id='n2631' href='#n2631'>2631</a> <a id='n2632' href='#n2632'>2632</a> <a id='n2633' href='#n2633'>2633</a> <a id='n2634' href='#n2634'>2634</a> <a id='n2635' href='#n2635'>2635</a> <a id='n2636' href='#n2636'>2636</a> <a id='n2637' href='#n2637'>2637</a> <a id='n2638' href='#n2638'>2638</a> <a id='n2639' href='#n2639'>2639</a> <a id='n2640' href='#n2640'>2640</a> <a id='n2641' href='#n2641'>2641</a> <a id='n2642' href='#n2642'>2642</a> <a id='n2643' href='#n2643'>2643</a> <a id='n2644' href='#n2644'>2644</a> <a id='n2645' href='#n2645'>2645</a> <a id='n2646' href='#n2646'>2646</a> <a id='n2647' href='#n2647'>2647</a> <a id='n2648' href='#n2648'>2648</a> <a id='n2649' href='#n2649'>2649</a> <a id='n2650' href='#n2650'>2650</a> <a id='n2651' href='#n2651'>2651</a> <a id='n2652' href='#n2652'>2652</a> <a id='n2653' href='#n2653'>2653</a> <a id='n2654' href='#n2654'>2654</a> <a id='n2655' href='#n2655'>2655</a> <a id='n2656' href='#n2656'>2656</a> <a id='n2657' href='#n2657'>2657</a> <a id='n2658' href='#n2658'>2658</a> <a id='n2659' href='#n2659'>2659</a> <a id='n2660' href='#n2660'>2660</a> <a id='n2661' href='#n2661'>2661</a> <a id='n2662' href='#n2662'>2662</a> <a id='n2663' href='#n2663'>2663</a> <a id='n2664' href='#n2664'>2664</a> <a id='n2665' href='#n2665'>2665</a> <a id='n2666' href='#n2666'>2666</a> <a id='n2667' href='#n2667'>2667</a> <a id='n2668' href='#n2668'>2668</a> <a id='n2669' href='#n2669'>2669</a> <a id='n2670' href='#n2670'>2670</a> <a id='n2671' href='#n2671'>2671</a> <a id='n2672' href='#n2672'>2672</a> <a id='n2673' href='#n2673'>2673</a> <a id='n2674' href='#n2674'>2674</a> <a id='n2675' href='#n2675'>2675</a> <a id='n2676' href='#n2676'>2676</a> <a id='n2677' href='#n2677'>2677</a> <a id='n2678' href='#n2678'>2678</a> <a id='n2679' href='#n2679'>2679</a> <a id='n2680' href='#n2680'>2680</a> <a id='n2681' href='#n2681'>2681</a> <a id='n2682' href='#n2682'>2682</a> <a id='n2683' href='#n2683'>2683</a> <a id='n2684' href='#n2684'>2684</a> <a id='n2685' href='#n2685'>2685</a> <a id='n2686' href='#n2686'>2686</a> <a id='n2687' href='#n2687'>2687</a> <a id='n2688' href='#n2688'>2688</a> <a id='n2689' href='#n2689'>2689</a> <a id='n2690' href='#n2690'>2690</a> <a id='n2691' href='#n2691'>2691</a> <a id='n2692' href='#n2692'>2692</a> <a id='n2693' href='#n2693'>2693</a> <a id='n2694' href='#n2694'>2694</a> <a id='n2695' href='#n2695'>2695</a> <a id='n2696' href='#n2696'>2696</a> <a id='n2697' href='#n2697'>2697</a> <a id='n2698' href='#n2698'>2698</a> <a id='n2699' href='#n2699'>2699</a> <a id='n2700' href='#n2700'>2700</a> <a id='n2701' href='#n2701'>2701</a> <a id='n2702' href='#n2702'>2702</a> <a id='n2703' href='#n2703'>2703</a> <a id='n2704' href='#n2704'>2704</a> <a id='n2705' href='#n2705'>2705</a> <a id='n2706' href='#n2706'>2706</a> <a id='n2707' href='#n2707'>2707</a> <a id='n2708' href='#n2708'>2708</a> <a id='n2709' href='#n2709'>2709</a> <a id='n2710' href='#n2710'>2710</a> <a id='n2711' href='#n2711'>2711</a> <a id='n2712' href='#n2712'>2712</a> <a id='n2713' href='#n2713'>2713</a> <a id='n2714' href='#n2714'>2714</a> <a id='n2715' href='#n2715'>2715</a> <a id='n2716' href='#n2716'>2716</a> <a id='n2717' href='#n2717'>2717</a> <a id='n2718' href='#n2718'>2718</a> <a id='n2719' href='#n2719'>2719</a> <a id='n2720' href='#n2720'>2720</a> <a id='n2721' href='#n2721'>2721</a> <a id='n2722' href='#n2722'>2722</a> <a id='n2723' href='#n2723'>2723</a> <a id='n2724' href='#n2724'>2724</a> <a id='n2725' href='#n2725'>2725</a> <a id='n2726' href='#n2726'>2726</a> <a id='n2727' href='#n2727'>2727</a> <a id='n2728' href='#n2728'>2728</a> <a id='n2729' href='#n2729'>2729</a> <a id='n2730' href='#n2730'>2730</a> <a id='n2731' href='#n2731'>2731</a> <a id='n2732' href='#n2732'>2732</a> <a id='n2733' href='#n2733'>2733</a> <a id='n2734' href='#n2734'>2734</a> <a id='n2735' href='#n2735'>2735</a> <a id='n2736' href='#n2736'>2736</a> <a id='n2737' href='#n2737'>2737</a> <a id='n2738' href='#n2738'>2738</a> <a id='n2739' href='#n2739'>2739</a> <a id='n2740' href='#n2740'>2740</a> <a id='n2741' href='#n2741'>2741</a> <a id='n2742' href='#n2742'>2742</a> <a id='n2743' href='#n2743'>2743</a> <a id='n2744' href='#n2744'>2744</a> <a id='n2745' href='#n2745'>2745</a> <a id='n2746' href='#n2746'>2746</a> <a id='n2747' href='#n2747'>2747</a> <a id='n2748' href='#n2748'>2748</a> <a id='n2749' href='#n2749'>2749</a> <a id='n2750' href='#n2750'>2750</a> <a id='n2751' href='#n2751'>2751</a> <a id='n2752' href='#n2752'>2752</a> <a id='n2753' href='#n2753'>2753</a> <a id='n2754' href='#n2754'>2754</a> <a id='n2755' href='#n2755'>2755</a> <a id='n2756' href='#n2756'>2756</a> <a id='n2757' href='#n2757'>2757</a> <a id='n2758' href='#n2758'>2758</a> <a id='n2759' href='#n2759'>2759</a> <a id='n2760' href='#n2760'>2760</a> <a id='n2761' href='#n2761'>2761</a> <a id='n2762' href='#n2762'>2762</a> <a id='n2763' href='#n2763'>2763</a> <a id='n2764' href='#n2764'>2764</a> <a id='n2765' href='#n2765'>2765</a> <a id='n2766' href='#n2766'>2766</a> <a id='n2767' href='#n2767'>2767</a> <a id='n2768' href='#n2768'>2768</a> <a id='n2769' href='#n2769'>2769</a> <a id='n2770' href='#n2770'>2770</a> <a id='n2771' href='#n2771'>2771</a> <a id='n2772' href='#n2772'>2772</a> <a id='n2773' href='#n2773'>2773</a> <a id='n2774' href='#n2774'>2774</a> <a id='n2775' href='#n2775'>2775</a> <a id='n2776' href='#n2776'>2776</a> <a id='n2777' href='#n2777'>2777</a> <a id='n2778' href='#n2778'>2778</a> <a id='n2779' href='#n2779'>2779</a> <a id='n2780' href='#n2780'>2780</a> <a id='n2781' href='#n2781'>2781</a> <a id='n2782' href='#n2782'>2782</a> <a id='n2783' href='#n2783'>2783</a> <a id='n2784' href='#n2784'>2784</a> <a id='n2785' href='#n2785'>2785</a> <a id='n2786' href='#n2786'>2786</a> <a id='n2787' href='#n2787'>2787</a> <a id='n2788' href='#n2788'>2788</a> <a id='n2789' href='#n2789'>2789</a> <a id='n2790' href='#n2790'>2790</a> <a id='n2791' href='#n2791'>2791</a> <a id='n2792' href='#n2792'>2792</a> <a id='n2793' href='#n2793'>2793</a> <a id='n2794' href='#n2794'>2794</a> <a id='n2795' href='#n2795'>2795</a> <a id='n2796' href='#n2796'>2796</a> <a id='n2797' href='#n2797'>2797</a> <a id='n2798' href='#n2798'>2798</a> <a id='n2799' href='#n2799'>2799</a> <a id='n2800' href='#n2800'>2800</a> <a id='n2801' href='#n2801'>2801</a> <a id='n2802' href='#n2802'>2802</a> <a id='n2803' href='#n2803'>2803</a> <a id='n2804' href='#n2804'>2804</a> <a id='n2805' href='#n2805'>2805</a> <a id='n2806' href='#n2806'>2806</a> <a id='n2807' href='#n2807'>2807</a> <a id='n2808' href='#n2808'>2808</a> <a id='n2809' href='#n2809'>2809</a> <a id='n2810' href='#n2810'>2810</a> <a id='n2811' href='#n2811'>2811</a> <a id='n2812' href='#n2812'>2812</a> <a id='n2813' href='#n2813'>2813</a> <a id='n2814' href='#n2814'>2814</a> <a id='n2815' href='#n2815'>2815</a> <a id='n2816' href='#n2816'>2816</a> <a id='n2817' href='#n2817'>2817</a> <a id='n2818' href='#n2818'>2818</a> <a id='n2819' href='#n2819'>2819</a> <a id='n2820' href='#n2820'>2820</a> <a id='n2821' href='#n2821'>2821</a> <a id='n2822' href='#n2822'>2822</a> <a id='n2823' href='#n2823'>2823</a> <a id='n2824' href='#n2824'>2824</a> <a id='n2825' href='#n2825'>2825</a> <a id='n2826' href='#n2826'>2826</a> <a id='n2827' href='#n2827'>2827</a> <a id='n2828' href='#n2828'>2828</a> <a id='n2829' href='#n2829'>2829</a> <a id='n2830' href='#n2830'>2830</a> <a id='n2831' href='#n2831'>2831</a> <a id='n2832' href='#n2832'>2832</a> <a id='n2833' href='#n2833'>2833</a> <a id='n2834' href='#n2834'>2834</a> <a id='n2835' href='#n2835'>2835</a> <a id='n2836' href='#n2836'>2836</a> <a id='n2837' href='#n2837'>2837</a> <a id='n2838' href='#n2838'>2838</a> <a id='n2839' href='#n2839'>2839</a> <a id='n2840' href='#n2840'>2840</a> <a id='n2841' href='#n2841'>2841</a> <a id='n2842' href='#n2842'>2842</a> <a id='n2843' href='#n2843'>2843</a> <a id='n2844' href='#n2844'>2844</a> <a id='n2845' href='#n2845'>2845</a> <a id='n2846' href='#n2846'>2846</a> <a id='n2847' href='#n2847'>2847</a> <a id='n2848' href='#n2848'>2848</a> <a id='n2849' href='#n2849'>2849</a> <a id='n2850' href='#n2850'>2850</a> <a id='n2851' href='#n2851'>2851</a> <a id='n2852' href='#n2852'>2852</a> <a id='n2853' href='#n2853'>2853</a> <a id='n2854' href='#n2854'>2854</a> <a id='n2855' href='#n2855'>2855</a> <a id='n2856' href='#n2856'>2856</a> <a id='n2857' href='#n2857'>2857</a> <a id='n2858' href='#n2858'>2858</a> <a id='n2859' href='#n2859'>2859</a> <a id='n2860' href='#n2860'>2860</a> <a id='n2861' href='#n2861'>2861</a> <a id='n2862' href='#n2862'>2862</a> <a id='n2863' href='#n2863'>2863</a> <a id='n2864' href='#n2864'>2864</a> <a id='n2865' href='#n2865'>2865</a> <a id='n2866' href='#n2866'>2866</a> <a id='n2867' href='#n2867'>2867</a> <a id='n2868' href='#n2868'>2868</a> <a id='n2869' href='#n2869'>2869</a> <a id='n2870' href='#n2870'>2870</a> <a id='n2871' href='#n2871'>2871</a> <a id='n2872' href='#n2872'>2872</a> <a id='n2873' href='#n2873'>2873</a> <a id='n2874' href='#n2874'>2874</a> <a id='n2875' href='#n2875'>2875</a> <a id='n2876' href='#n2876'>2876</a> <a id='n2877' href='#n2877'>2877</a> <a id='n2878' href='#n2878'>2878</a> <a id='n2879' href='#n2879'>2879</a> <a id='n2880' href='#n2880'>2880</a> <a id='n2881' href='#n2881'>2881</a> <a id='n2882' href='#n2882'>2882</a> <a id='n2883' href='#n2883'>2883</a> <a id='n2884' href='#n2884'>2884</a> <a id='n2885' href='#n2885'>2885</a> <a id='n2886' href='#n2886'>2886</a> <a id='n2887' href='#n2887'>2887</a> <a id='n2888' href='#n2888'>2888</a> <a id='n2889' href='#n2889'>2889</a> <a id='n2890' href='#n2890'>2890</a> <a id='n2891' href='#n2891'>2891</a> <a id='n2892' href='#n2892'>2892</a> <a id='n2893' href='#n2893'>2893</a> <a id='n2894' href='#n2894'>2894</a> <a id='n2895' href='#n2895'>2895</a> <a id='n2896' href='#n2896'>2896</a> <a id='n2897' href='#n2897'>2897</a> <a id='n2898' href='#n2898'>2898</a> <a id='n2899' href='#n2899'>2899</a> <a id='n2900' href='#n2900'>2900</a> <a id='n2901' href='#n2901'>2901</a> <a id='n2902' href='#n2902'>2902</a> <a id='n2903' href='#n2903'>2903</a> <a id='n2904' href='#n2904'>2904</a> <a id='n2905' href='#n2905'>2905</a> <a id='n2906' href='#n2906'>2906</a> <a id='n2907' href='#n2907'>2907</a> <a id='n2908' href='#n2908'>2908</a> <a id='n2909' href='#n2909'>2909</a> <a id='n2910' href='#n2910'>2910</a> <a id='n2911' href='#n2911'>2911</a> <a id='n2912' href='#n2912'>2912</a> <a id='n2913' href='#n2913'>2913</a> <a id='n2914' href='#n2914'>2914</a> <a id='n2915' href='#n2915'>2915</a> <a id='n2916' href='#n2916'>2916</a> <a id='n2917' href='#n2917'>2917</a> <a id='n2918' href='#n2918'>2918</a> <a id='n2919' href='#n2919'>2919</a> <a id='n2920' href='#n2920'>2920</a> <a id='n2921' href='#n2921'>2921</a> <a id='n2922' href='#n2922'>2922</a> <a id='n2923' href='#n2923'>2923</a> <a id='n2924' href='#n2924'>2924</a> <a id='n2925' href='#n2925'>2925</a> <a id='n2926' href='#n2926'>2926</a> <a id='n2927' href='#n2927'>2927</a> <a id='n2928' href='#n2928'>2928</a> <a id='n2929' href='#n2929'>2929</a> <a id='n2930' href='#n2930'>2930</a> <a id='n2931' href='#n2931'>2931</a> <a id='n2932' href='#n2932'>2932</a> <a id='n2933' href='#n2933'>2933</a> <a id='n2934' href='#n2934'>2934</a> <a id='n2935' href='#n2935'>2935</a> <a id='n2936' href='#n2936'>2936</a> <a id='n2937' href='#n2937'>2937</a> <a id='n2938' href='#n2938'>2938</a> <a id='n2939' href='#n2939'>2939</a> <a id='n2940' href='#n2940'>2940</a> <a id='n2941' href='#n2941'>2941</a> <a id='n2942' href='#n2942'>2942</a> <a id='n2943' href='#n2943'>2943</a> <a id='n2944' href='#n2944'>2944</a> <a id='n2945' href='#n2945'>2945</a> <a id='n2946' href='#n2946'>2946</a> <a id='n2947' href='#n2947'>2947</a> <a id='n2948' href='#n2948'>2948</a> <a id='n2949' href='#n2949'>2949</a> <a id='n2950' href='#n2950'>2950</a> <a id='n2951' href='#n2951'>2951</a> <a id='n2952' href='#n2952'>2952</a> <a id='n2953' href='#n2953'>2953</a> <a id='n2954' href='#n2954'>2954</a> <a id='n2955' href='#n2955'>2955</a> <a id='n2956' href='#n2956'>2956</a> <a id='n2957' href='#n2957'>2957</a> <a id='n2958' href='#n2958'>2958</a> <a id='n2959' href='#n2959'>2959</a> <a id='n2960' href='#n2960'>2960</a> <a id='n2961' href='#n2961'>2961</a> <a id='n2962' href='#n2962'>2962</a> <a id='n2963' href='#n2963'>2963</a> <a id='n2964' href='#n2964'>2964</a> <a id='n2965' href='#n2965'>2965</a> <a id='n2966' href='#n2966'>2966</a> <a id='n2967' href='#n2967'>2967</a> <a id='n2968' href='#n2968'>2968</a> <a id='n2969' href='#n2969'>2969</a> <a id='n2970' href='#n2970'>2970</a> <a id='n2971' href='#n2971'>2971</a> <a id='n2972' href='#n2972'>2972</a> <a id='n2973' href='#n2973'>2973</a> <a id='n2974' href='#n2974'>2974</a> <a id='n2975' href='#n2975'>2975</a> <a id='n2976' href='#n2976'>2976</a> <a id='n2977' href='#n2977'>2977</a> <a id='n2978' href='#n2978'>2978</a> <a id='n2979' href='#n2979'>2979</a> <a id='n2980' href='#n2980'>2980</a> <a id='n2981' href='#n2981'>2981</a> <a id='n2982' href='#n2982'>2982</a> <a id='n2983' href='#n2983'>2983</a> <a id='n2984' href='#n2984'>2984</a> <a id='n2985' href='#n2985'>2985</a> <a id='n2986' href='#n2986'>2986</a> <a id='n2987' href='#n2987'>2987</a> <a id='n2988' href='#n2988'>2988</a> <a id='n2989' href='#n2989'>2989</a> <a id='n2990' href='#n2990'>2990</a> <a id='n2991' href='#n2991'>2991</a> <a id='n2992' href='#n2992'>2992</a> <a id='n2993' href='#n2993'>2993</a> <a id='n2994' href='#n2994'>2994</a> <a id='n2995' href='#n2995'>2995</a> <a id='n2996' href='#n2996'>2996</a> <a id='n2997' href='#n2997'>2997</a> <a id='n2998' href='#n2998'>2998</a> <a id='n2999' href='#n2999'>2999</a> <a id='n3000' href='#n3000'>3000</a> <a id='n3001' href='#n3001'>3001</a> <a id='n3002' href='#n3002'>3002</a> <a id='n3003' href='#n3003'>3003</a> <a id='n3004' href='#n3004'>3004</a> <a id='n3005' href='#n3005'>3005</a> <a id='n3006' href='#n3006'>3006</a> <a id='n3007' href='#n3007'>3007</a> <a id='n3008' href='#n3008'>3008</a> <a id='n3009' href='#n3009'>3009</a> <a id='n3010' href='#n3010'>3010</a> <a id='n3011' href='#n3011'>3011</a> <a id='n3012' href='#n3012'>3012</a> <a id='n3013' href='#n3013'>3013</a> <a id='n3014' href='#n3014'>3014</a> <a id='n3015' href='#n3015'>3015</a> <a id='n3016' href='#n3016'>3016</a> <a id='n3017' href='#n3017'>3017</a> <a id='n3018' href='#n3018'>3018</a> <a id='n3019' href='#n3019'>3019</a> <a id='n3020' href='#n3020'>3020</a> <a id='n3021' href='#n3021'>3021</a> <a id='n3022' href='#n3022'>3022</a> <a id='n3023' href='#n3023'>3023</a> <a id='n3024' href='#n3024'>3024</a> <a id='n3025' href='#n3025'>3025</a> <a id='n3026' href='#n3026'>3026</a> <a id='n3027' href='#n3027'>3027</a> <a id='n3028' href='#n3028'>3028</a> <a id='n3029' href='#n3029'>3029</a> <a id='n3030' href='#n3030'>3030</a> <a id='n3031' href='#n3031'>3031</a> <a id='n3032' href='#n3032'>3032</a> <a id='n3033' href='#n3033'>3033</a> <a id='n3034' href='#n3034'>3034</a> <a id='n3035' href='#n3035'>3035</a> <a id='n3036' href='#n3036'>3036</a> <a id='n3037' href='#n3037'>3037</a> <a id='n3038' href='#n3038'>3038</a> <a id='n3039' href='#n3039'>3039</a> <a id='n3040' href='#n3040'>3040</a> <a id='n3041' href='#n3041'>3041</a> <a id='n3042' href='#n3042'>3042</a> <a id='n3043' href='#n3043'>3043</a> <a id='n3044' href='#n3044'>3044</a> <a id='n3045' href='#n3045'>3045</a> <a id='n3046' href='#n3046'>3046</a> <a id='n3047' href='#n3047'>3047</a> <a id='n3048' href='#n3048'>3048</a> <a id='n3049' href='#n3049'>3049</a> <a id='n3050' href='#n3050'>3050</a> <a id='n3051' href='#n3051'>3051</a> <a id='n3052' href='#n3052'>3052</a> <a id='n3053' href='#n3053'>3053</a> <a id='n3054' href='#n3054'>3054</a> <a id='n3055' href='#n3055'>3055</a> <a id='n3056' href='#n3056'>3056</a> <a id='n3057' href='#n3057'>3057</a> <a id='n3058' href='#n3058'>3058</a> <a id='n3059' href='#n3059'>3059</a> <a id='n3060' href='#n3060'>3060</a> <a id='n3061' href='#n3061'>3061</a> <a id='n3062' href='#n3062'>3062</a> <a id='n3063' href='#n3063'>3063</a> <a id='n3064' href='#n3064'>3064</a> <a id='n3065' href='#n3065'>3065</a> <a id='n3066' href='#n3066'>3066</a> <a id='n3067' href='#n3067'>3067</a> <a id='n3068' href='#n3068'>3068</a> <a id='n3069' href='#n3069'>3069</a> <a id='n3070' href='#n3070'>3070</a> <a id='n3071' href='#n3071'>3071</a> <a id='n3072' href='#n3072'>3072</a> <a id='n3073' href='#n3073'>3073</a> <a id='n3074' href='#n3074'>3074</a> <a id='n3075' href='#n3075'>3075</a> <a id='n3076' href='#n3076'>3076</a> <a id='n3077' href='#n3077'>3077</a> <a id='n3078' href='#n3078'>3078</a> <a id='n3079' href='#n3079'>3079</a> <a id='n3080' href='#n3080'>3080</a> <a id='n3081' href='#n3081'>3081</a> <a id='n3082' href='#n3082'>3082</a> <a id='n3083' href='#n3083'>3083</a> <a id='n3084' href='#n3084'>3084</a> <a id='n3085' href='#n3085'>3085</a> <a id='n3086' href='#n3086'>3086</a> <a id='n3087' href='#n3087'>3087</a> <a id='n3088' href='#n3088'>3088</a> <a id='n3089' href='#n3089'>3089</a> <a id='n3090' href='#n3090'>3090</a> <a id='n3091' href='#n3091'>3091</a> <a id='n3092' href='#n3092'>3092</a> <a id='n3093' href='#n3093'>3093</a> <a id='n3094' href='#n3094'>3094</a> <a id='n3095' href='#n3095'>3095</a> <a id='n3096' href='#n3096'>3096</a> <a id='n3097' href='#n3097'>3097</a> <a id='n3098' href='#n3098'>3098</a> <a id='n3099' href='#n3099'>3099</a> <a id='n3100' href='#n3100'>3100</a> <a id='n3101' href='#n3101'>3101</a> <a id='n3102' href='#n3102'>3102</a> <a id='n3103' href='#n3103'>3103</a> <a id='n3104' href='#n3104'>3104</a> <a id='n3105' href='#n3105'>3105</a> <a id='n3106' href='#n3106'>3106</a> <a id='n3107' href='#n3107'>3107</a> <a id='n3108' href='#n3108'>3108</a> <a id='n3109' href='#n3109'>3109</a> <a id='n3110' href='#n3110'>3110</a> <a id='n3111' href='#n3111'>3111</a> <a id='n3112' href='#n3112'>3112</a> <a id='n3113' href='#n3113'>3113</a> <a id='n3114' href='#n3114'>3114</a> <a id='n3115' href='#n3115'>3115</a> <a id='n3116' href='#n3116'>3116</a> <a id='n3117' href='#n3117'>3117</a> <a id='n3118' href='#n3118'>3118</a> <a id='n3119' href='#n3119'>3119</a> <a id='n3120' href='#n3120'>3120</a> <a id='n3121' href='#n3121'>3121</a> <a id='n3122' href='#n3122'>3122</a> <a id='n3123' href='#n3123'>3123</a> <a id='n3124' href='#n3124'>3124</a> <a id='n3125' href='#n3125'>3125</a> <a id='n3126' href='#n3126'>3126</a> <a id='n3127' href='#n3127'>3127</a> <a id='n3128' href='#n3128'>3128</a> <a id='n3129' href='#n3129'>3129</a> <a id='n3130' href='#n3130'>3130</a> <a id='n3131' href='#n3131'>3131</a> <a id='n3132' href='#n3132'>3132</a> <a id='n3133' href='#n3133'>3133</a> <a id='n3134' href='#n3134'>3134</a> <a id='n3135' href='#n3135'>3135</a> <a id='n3136' href='#n3136'>3136</a> <a id='n3137' href='#n3137'>3137</a> <a id='n3138' href='#n3138'>3138</a> <a id='n3139' href='#n3139'>3139</a> <a id='n3140' href='#n3140'>3140</a> <a id='n3141' href='#n3141'>3141</a> <a id='n3142' href='#n3142'>3142</a> <a id='n3143' href='#n3143'>3143</a> <a id='n3144' href='#n3144'>3144</a> <a id='n3145' href='#n3145'>3145</a> <a id='n3146' href='#n3146'>3146</a> <a id='n3147' href='#n3147'>3147</a> <a id='n3148' href='#n3148'>3148</a> <a id='n3149' href='#n3149'>3149</a> <a id='n3150' href='#n3150'>3150</a> <a id='n3151' href='#n3151'>3151</a> <a id='n3152' href='#n3152'>3152</a> <a id='n3153' href='#n3153'>3153</a> <a id='n3154' href='#n3154'>3154</a> <a id='n3155' href='#n3155'>3155</a> <a id='n3156' href='#n3156'>3156</a> <a id='n3157' href='#n3157'>3157</a> <a id='n3158' href='#n3158'>3158</a> <a id='n3159' href='#n3159'>3159</a> <a id='n3160' href='#n3160'>3160</a> <a id='n3161' href='#n3161'>3161</a> <a id='n3162' href='#n3162'>3162</a> <a id='n3163' href='#n3163'>3163</a> <a id='n3164' href='#n3164'>3164</a> <a id='n3165' href='#n3165'>3165</a> <a id='n3166' href='#n3166'>3166</a> <a id='n3167' href='#n3167'>3167</a> <a id='n3168' href='#n3168'>3168</a> <a id='n3169' href='#n3169'>3169</a> <a id='n3170' href='#n3170'>3170</a> <a id='n3171' href='#n3171'>3171</a> <a id='n3172' href='#n3172'>3172</a> <a id='n3173' href='#n3173'>3173</a> <a id='n3174' href='#n3174'>3174</a> <a id='n3175' href='#n3175'>3175</a> <a id='n3176' href='#n3176'>3176</a> <a id='n3177' href='#n3177'>3177</a> <a id='n3178' href='#n3178'>3178</a> <a id='n3179' href='#n3179'>3179</a> <a id='n3180' href='#n3180'>3180</a> <a id='n3181' href='#n3181'>3181</a> <a id='n3182' href='#n3182'>3182</a> <a id='n3183' href='#n3183'>3183</a> <a id='n3184' href='#n3184'>3184</a> <a id='n3185' href='#n3185'>3185</a> <a id='n3186' href='#n3186'>3186</a> <a id='n3187' href='#n3187'>3187</a> <a id='n3188' href='#n3188'>3188</a> <a id='n3189' href='#n3189'>3189</a> <a id='n3190' href='#n3190'>3190</a> <a id='n3191' href='#n3191'>3191</a> <a id='n3192' href='#n3192'>3192</a> <a id='n3193' href='#n3193'>3193</a> <a id='n3194' href='#n3194'>3194</a> <a id='n3195' href='#n3195'>3195</a> <a id='n3196' href='#n3196'>3196</a> <a id='n3197' href='#n3197'>3197</a> <a id='n3198' href='#n3198'>3198</a> <a id='n3199' href='#n3199'>3199</a> <a id='n3200' href='#n3200'>3200</a> <a id='n3201' href='#n3201'>3201</a> <a id='n3202' href='#n3202'>3202</a> <a id='n3203' href='#n3203'>3203</a> <a id='n3204' href='#n3204'>3204</a> <a id='n3205' href='#n3205'>3205</a> <a id='n3206' href='#n3206'>3206</a> <a id='n3207' href='#n3207'>3207</a> <a id='n3208' href='#n3208'>3208</a> <a id='n3209' href='#n3209'>3209</a> <a id='n3210' href='#n3210'>3210</a> <a id='n3211' href='#n3211'>3211</a> <a id='n3212' href='#n3212'>3212</a> <a id='n3213' href='#n3213'>3213</a> <a id='n3214' href='#n3214'>3214</a> <a id='n3215' href='#n3215'>3215</a> <a id='n3216' href='#n3216'>3216</a> <a id='n3217' href='#n3217'>3217</a> <a id='n3218' href='#n3218'>3218</a> <a id='n3219' href='#n3219'>3219</a> <a id='n3220' href='#n3220'>3220</a> <a id='n3221' href='#n3221'>3221</a> <a id='n3222' href='#n3222'>3222</a> <a id='n3223' href='#n3223'>3223</a> <a id='n3224' href='#n3224'>3224</a> <a id='n3225' href='#n3225'>3225</a> <a id='n3226' href='#n3226'>3226</a> <a id='n3227' href='#n3227'>3227</a> <a id='n3228' href='#n3228'>3228</a> <a id='n3229' href='#n3229'>3229</a> <a id='n3230' href='#n3230'>3230</a> <a id='n3231' href='#n3231'>3231</a> <a id='n3232' href='#n3232'>3232</a> <a id='n3233' href='#n3233'>3233</a> <a id='n3234' href='#n3234'>3234</a> <a id='n3235' href='#n3235'>3235</a> <a id='n3236' href='#n3236'>3236</a> <a id='n3237' href='#n3237'>3237</a> <a id='n3238' href='#n3238'>3238</a> <a id='n3239' href='#n3239'>3239</a> <a id='n3240' href='#n3240'>3240</a> <a id='n3241' href='#n3241'>3241</a> <a id='n3242' href='#n3242'>3242</a> <a id='n3243' href='#n3243'>3243</a> <a id='n3244' href='#n3244'>3244</a> <a id='n3245' href='#n3245'>3245</a> <a id='n3246' href='#n3246'>3246</a> <a id='n3247' href='#n3247'>3247</a> <a id='n3248' href='#n3248'>3248</a> <a id='n3249' href='#n3249'>3249</a> <a id='n3250' href='#n3250'>3250</a> <a id='n3251' href='#n3251'>3251</a> <a id='n3252' href='#n3252'>3252</a> <a id='n3253' href='#n3253'>3253</a> <a id='n3254' href='#n3254'>3254</a> <a id='n3255' href='#n3255'>3255</a> <a id='n3256' href='#n3256'>3256</a> <a id='n3257' href='#n3257'>3257</a> <a id='n3258' href='#n3258'>3258</a> <a id='n3259' href='#n3259'>3259</a> <a id='n3260' href='#n3260'>3260</a> <a id='n3261' href='#n3261'>3261</a> <a id='n3262' href='#n3262'>3262</a> <a id='n3263' href='#n3263'>3263</a> <a id='n3264' href='#n3264'>3264</a> <a id='n3265' href='#n3265'>3265</a> <a id='n3266' href='#n3266'>3266</a> <a id='n3267' href='#n3267'>3267</a> <a id='n3268' href='#n3268'>3268</a> <a id='n3269' href='#n3269'>3269</a> <a id='n3270' href='#n3270'>3270</a> <a id='n3271' href='#n3271'>3271</a> <a id='n3272' href='#n3272'>3272</a> <a id='n3273' href='#n3273'>3273</a> <a id='n3274' href='#n3274'>3274</a> <a id='n3275' href='#n3275'>3275</a> <a id='n3276' href='#n3276'>3276</a> <a id='n3277' href='#n3277'>3277</a> <a id='n3278' href='#n3278'>3278</a> <a id='n3279' href='#n3279'>3279</a> <a id='n3280' href='#n3280'>3280</a> <a id='n3281' href='#n3281'>3281</a> <a id='n3282' href='#n3282'>3282</a> <a id='n3283' href='#n3283'>3283</a> <a id='n3284' href='#n3284'>3284</a> <a id='n3285' href='#n3285'>3285</a> <a id='n3286' href='#n3286'>3286</a> <a id='n3287' href='#n3287'>3287</a> <a id='n3288' href='#n3288'>3288</a> <a id='n3289' href='#n3289'>3289</a> <a id='n3290' href='#n3290'>3290</a> <a id='n3291' href='#n3291'>3291</a> <a id='n3292' href='#n3292'>3292</a> <a id='n3293' href='#n3293'>3293</a> <a id='n3294' href='#n3294'>3294</a> <a id='n3295' href='#n3295'>3295</a> <a id='n3296' href='#n3296'>3296</a> <a id='n3297' href='#n3297'>3297</a> <a id='n3298' href='#n3298'>3298</a> <a id='n3299' href='#n3299'>3299</a> <a id='n3300' href='#n3300'>3300</a> <a id='n3301' href='#n3301'>3301</a> <a id='n3302' href='#n3302'>3302</a> <a id='n3303' href='#n3303'>3303</a> <a id='n3304' href='#n3304'>3304</a> <a id='n3305' href='#n3305'>3305</a> <a id='n3306' href='#n3306'>3306</a> <a id='n3307' href='#n3307'>3307</a> <a id='n3308' href='#n3308'>3308</a> <a id='n3309' href='#n3309'>3309</a> <a id='n3310' href='#n3310'>3310</a> <a id='n3311' href='#n3311'>3311</a> <a id='n3312' href='#n3312'>3312</a> <a id='n3313' href='#n3313'>3313</a> <a id='n3314' href='#n3314'>3314</a> <a id='n3315' href='#n3315'>3315</a> <a id='n3316' href='#n3316'>3316</a> <a id='n3317' href='#n3317'>3317</a> <a id='n3318' href='#n3318'>3318</a> <a id='n3319' href='#n3319'>3319</a> <a id='n3320' href='#n3320'>3320</a> <a id='n3321' href='#n3321'>3321</a> <a id='n3322' href='#n3322'>3322</a> <a id='n3323' href='#n3323'>3323</a> <a id='n3324' href='#n3324'>3324</a> <a id='n3325' href='#n3325'>3325</a> <a id='n3326' href='#n3326'>3326</a> <a id='n3327' href='#n3327'>3327</a> <a id='n3328' href='#n3328'>3328</a> <a id='n3329' href='#n3329'>3329</a> <a id='n3330' href='#n3330'>3330</a> <a id='n3331' href='#n3331'>3331</a> <a id='n3332' href='#n3332'>3332</a> <a id='n3333' href='#n3333'>3333</a> <a id='n3334' href='#n3334'>3334</a> <a id='n3335' href='#n3335'>3335</a> <a id='n3336' href='#n3336'>3336</a> <a id='n3337' href='#n3337'>3337</a> <a id='n3338' href='#n3338'>3338</a> <a id='n3339' href='#n3339'>3339</a> <a id='n3340' href='#n3340'>3340</a> <a id='n3341' href='#n3341'>3341</a> <a id='n3342' href='#n3342'>3342</a> <a id='n3343' href='#n3343'>3343</a> <a id='n3344' href='#n3344'>3344</a> <a id='n3345' href='#n3345'>3345</a> <a id='n3346' href='#n3346'>3346</a> <a id='n3347' href='#n3347'>3347</a> <a id='n3348' href='#n3348'>3348</a> <a id='n3349' href='#n3349'>3349</a> <a id='n3350' href='#n3350'>3350</a> <a id='n3351' href='#n3351'>3351</a> <a id='n3352' href='#n3352'>3352</a> <a id='n3353' href='#n3353'>3353</a> <a id='n3354' href='#n3354'>3354</a> <a id='n3355' href='#n3355'>3355</a> <a id='n3356' href='#n3356'>3356</a> <a id='n3357' href='#n3357'>3357</a> <a id='n3358' href='#n3358'>3358</a> <a id='n3359' href='#n3359'>3359</a> <a id='n3360' href='#n3360'>3360</a> <a id='n3361' href='#n3361'>3361</a> <a id='n3362' href='#n3362'>3362</a> <a id='n3363' href='#n3363'>3363</a> <a id='n3364' href='#n3364'>3364</a> <a id='n3365' href='#n3365'>3365</a> <a id='n3366' href='#n3366'>3366</a> <a id='n3367' href='#n3367'>3367</a> <a id='n3368' href='#n3368'>3368</a> <a id='n3369' href='#n3369'>3369</a> <a id='n3370' href='#n3370'>3370</a> <a id='n3371' href='#n3371'>3371</a> <a id='n3372' href='#n3372'>3372</a> <a id='n3373' href='#n3373'>3373</a> <a id='n3374' href='#n3374'>3374</a> <a id='n3375' href='#n3375'>3375</a> <a id='n3376' href='#n3376'>3376</a> <a id='n3377' href='#n3377'>3377</a> <a id='n3378' href='#n3378'>3378</a> </pre></td> <td class='lines'><pre><code><span class="hl slc"># translation of DrakX-af21-09.po to Afrikaans</span> <span class="hl slc"># translation of DrakX-af.po to Afrikaans</span> <span class="hl slc"># KTranslator Generated File</span> <span class="hl slc"># KTranslator Generated File</span> <span class="hl slc"># Copyright (C) 2000,2003, 2004 Free Software Foundation, Inc.</span> <span class="hl slc"># Schalk W. Cronjé <schalkc@ntaba.co.za>, 2000.</span> <span class="hl slc"># Dirk van der Walt <mandrake@webmail.co.za>, 2003.</span> <span class="hl slc"># Dirk van der Walt <dirkvanderwalt@webmail.co.za>, 2004.</span> <span class="hl slc">#</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Project-Id-Version: DrakX-af</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Report-Msgid-Bugs-To:</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"POT-Creation-Date: 2007-09-12 17:01+0200</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"PO-Revision-Date: 2005-04-21 17:33+0200</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Last-Translator: Dirk van der Walt <dirkvanderwalt@webmail.co.za></span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Language-Team: Afrikaans</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"MIME-Version: 1.0</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Content-Type: text/plain; charset=UTF-8</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Content-Transfer-Encoding: 8bit</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"X-Generator: KBabel 1.0.2</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakboot:49</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"No bootloader found, creating a new configuration"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakboot:83 harddrake2:194 harddrake2:195 logdrake:71</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"/_File"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"/_Lêer"</span> <span class="hl slc">#: drakboot:84 logdrake:77</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"/File/_Quit"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"/Lêer/_Verlaat"</span> <span class="hl slc">#: drakboot:84 harddrake2:195 logdrake:77</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"<control>Q"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"<control>Q"</span> <span class="hl slc">#: drakboot:124</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Text only"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Teks alleen"</span> <span class="hl slc">#: drakboot:125</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Verbose"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakboot:126</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Silent"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Stil"</span> <span class="hl slc">#: drakboot:133</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"Your system bootloader is not in framebuffer mode. To activate graphical "</span> <span class="hl str">"boot, select a graphic video mode from the bootloader configuration tool."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"U rekenaar se selflaai program is nie in</span> <span class="hl esc">\"</span><span class="hl str">framebuffer</span><span class="hl esc">\"</span><span class="hl str">-modus nie. Om te "</span> <span class="hl str">"aktiveer, kies 'n grafiese-video modus vanuit die selflaai nutsprogram."</span> <span class="hl slc">#: drakboot:134</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Do you want to configure it now?"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Wil u die konfigurasie toets?"</span> <span class="hl slc">#: drakboot:143</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Install themes"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Installeer temas"</span> <span class="hl slc">#: drakboot:145</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Graphical boot theme selection"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Keuse van die Grafiese selflaai tema"</span> <span class="hl slc">#: drakboot:148</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Graphical boot mode:"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Gebruik grafiese selflaai"</span> <span class="hl slc">#: drakboot:150</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Theme"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Temas"</span> <span class="hl slc">#: drakboot:153</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"Display theme</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"under console"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Vertoon tema</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"onder konsole"</span> <span class="hl slc">#: drakboot:158 draksplash:25</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Create new theme"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Skep 'n nuwe tema"</span> <span class="hl slc">#: drakboot:190</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Default user"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verstekgebruiker"</span> <span class="hl slc">#: drakboot:191</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Default desktop"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verstek werkskerm"</span> <span class="hl slc">#: drakboot:194</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"No, I do not want autologin"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Nee, ek verlang NIE outo-aanteken NIE"</span> <span class="hl slc">#: drakboot:195</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Yes, I want autologin with this (user, desktop)"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Ja, ek verlang outo-inteken met hierdie (gebruiker,werkskerm)"</span> <span class="hl slc">#: drakboot:202</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"System mode"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Stelselmodus"</span> <span class="hl slc">#: drakboot:205</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Launch the graphical environment when your system starts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Laai X-Windowstelsel met herlaai"</span> <span class="hl slc">#: drakboot:260</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"Please choose a video mode, it will be applied to each of the boot entries "</span> <span class="hl str">"selected below.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Be sure your video card supports the mode you choose."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakbug:46</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Mandriva Linux Bug Report Tool"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Mandriva Linux Bug Report Tool"</span> <span class="hl slc">#: drakbug:51</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Mandriva Linux Control Center"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Mandriva Linux Control Center"</span> <span class="hl slc">#: drakbug:52</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"First Time Wizard"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"First Time Wizard"</span> <span class="hl slc">#: drakbug:53</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Synchronization tool"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Sinkronisasie-nutsprogram"</span> <span class="hl slc">#: drakbug:54 drakbug:168</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Standalone Tools"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Alleenstaande nutsprogramme"</span> <span class="hl slc">#: drakbug:56 drakbug:57</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Mandriva Online"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Mandriva Online"</span> <span class="hl slc">#: drakbug:58</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Remote Control"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Eksterne Beheer"</span> <span class="hl slc">#: drakbug:59</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Software Manager"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Software Manager"</span> <span class="hl slc">#: drakbug:60</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Windows Migration tool"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Nutsprogram vir Windows-migrasie "</span> <span class="hl slc">#: drakbug:61</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Configuration Wizards"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Konfigurasie-assistente"</span> <span class="hl slc">#: drakbug:83</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Select Mandriva Tool:"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Mandriva Bug Report Tool"</span> <span class="hl slc">#: drakbug:84</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"or Application Name</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"(or Full Path):"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Programnaam</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"of volle roete:"</span> <span class="hl slc">#: drakbug:87</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Find Package"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Soek Pakket"</span> <span class="hl slc">#: drakbug:89</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Package: "</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Pakket: "</span> <span class="hl slc">#: drakbug:90</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Kernel:"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kernel:"</span> <span class="hl slc">#: drakbug:102</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"The</span> <span class="hl esc">\"</span><span class="hl str"></span><span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\"</span> <span class="hl str">program has crashed with the following error:"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakbug:104</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"The</span> <span class="hl esc">\"</span><span class="hl str"></span><span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\"</span> <span class="hl str">program has crashed."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakbug:106</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"To submit a bug report, click on the report button.</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"This will open a web browser window on</span> <span class="hl ipl">%s</span> <span class="hl str">where you'll find a form to fill "</span> <span class="hl str">"in. The information displayed above will be transferred to that server.</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Things useful to include in your report are the output of lspcidrake -v, "</span> <span class="hl str">"kernel version, and /proc/cpuinfo."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Klik die 'Verslag' knoppie, indien u 'n foutverslag wil instuur.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Dit sal die blaaier oopmaak op</span> <span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"en 'n vorm om in te vul aan u toon. Die bogenoemde inligting</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"sal na daardie bediener gestuur word."</span> <span class="hl slc">#: drakbug:112</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Report"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verslag"</span> <span class="hl slc">#: drakbug:178</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Not installed"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Nie geïnstalleeer"</span> <span class="hl slc">#: drakbug:191</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Package not installed"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Pakket is nie geïnstalleer nie"</span> <span class="hl slc">#: drakclock:39</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"not defined"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"nie gekonfigureer nie"</span> <span class="hl slc">#: drakclock:41</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Change Time Zone"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verander Tydsone"</span> <span class="hl slc">#: drakclock:44</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Timezone - DrakClock"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Tydsone - DrakClock"</span> <span class="hl slc">#: drakclock:45</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"GMT - DrakClock"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"GMT - DrakClock"</span> <span class="hl slc">#: drakclock:45</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Is your hardware clock set to GMT?"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Is u Hardewareklok gestel vir GMT?"</span> <span class="hl slc">#: drakclock:70</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Network Time Protocol"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Network Time Protocol"</span> <span class="hl slc">#: drakclock:72</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"Your computer can synchronize its clock</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">" with a remote time server using NTP"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"U rekenaar kan sy tyd sinchroniseer</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"met 'n eksterne tyd-bediener deur NTP"</span> <span class="hl slc">#: drakclock:73</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Enable Network Time Protocol"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Aktiveer Network Time Protocol"</span> <span class="hl slc">#: drakclock:81</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Server:"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Bediener:"</span> <span class="hl slc">#: drakclock:110</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Please enter a valid NTP server address."</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Voorsien asseblief die inligting vir hierdie draadlose kaart:"</span> <span class="hl slc">#: drakclock:125</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Could not synchronize with</span> <span class="hl ipl">%s</span><span class="hl str">."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakclock:127</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Retry"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Herstel"</span> <span class="hl slc">#: drakclock:149 drakclock:159</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Reset"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Herstel"</span> <span class="hl slc">#: drakedm:41</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"GDM (GNOME Display Manager)"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakedm:42</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"KDM (KDE Display Manager)"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakedm:43</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"XDM (X Display Manager)"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kies 'n vertoonbestuurder"</span> <span class="hl slc">#: drakedm:54</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Choosing a display manager"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kies 'n vertoonbestuurder"</span> <span class="hl slc">#: drakedm:55</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"X11 Display Manager allows you to graphically log</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"into your system with the X Window System running and supports running</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"several different X sessions on your local machine at the same time."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"'X11 Display Manager' laat u toe om, deur 'n grafiese-</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"koppelvlak, aan te teken op u rekenaar. Die 'X Window'-stelsel kan tergelyk</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"'n aantal X-sessies op dieselfde rekenaar afskop."</span> <span class="hl slc">#: drakedm:73</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"The change is done, do you want to restart the dm service?"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Die veranderinge is voltooi, wil u die 'dm' diens oorbegin?"</span> <span class="hl slc">#: drakedm:74</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"You are going to close all running programs and lose your current session. "</span> <span class="hl str">"Are you really sure that you want to restart the dm service?"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakfont:187</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Search installed fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Opsoek na geïnstalleerde lettertipes"</span> <span class="hl slc">#: drakfont:189</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Unselect fonts installed"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Nie-gekose lettertipes geïnstalleer"</span> <span class="hl slc">#: drakfont:213</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"No fonts found"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Geen lettertipes gevind"</span> <span class="hl slc">#: drakfont:217</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"parse all fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"ontleed alle lettetipes"</span> <span class="hl slc">#: drakfont:222 drakfont:263 drakfont:332 drakfont:373 drakfont:380</span> <span class="hl slc">#: drakfont:406 drakfont:424 drakfont:438</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"done"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"klaar"</span> <span class="hl slc">#: drakfont:226</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Could not find any font in your mounted partitions"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kon nie enige lettertipes in u gehegte partisies vind nie"</span> <span class="hl slc">#: drakfont:261</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Reselect correct fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Herkies die korrekte lettertipes"</span> <span class="hl slc">#: drakfont:264</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Could not find any font.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kon nie enige lettertipes vind nie.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakfont:274</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Search for fonts in installed list"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Soek vir lettertipes in geïnstalleerde lys"</span> <span class="hl slc">#: drakfont:293</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"</span><span class="hl ipl">%s</span> <span class="hl str">fonts conversion"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"</span><span class="hl ipl">%s</span> <span class="hl str">lettertipe-omsetting"</span> <span class="hl slc">#: drakfont:330</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Fonts copy"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kopieer Lettertipes"</span> <span class="hl slc">#: drakfont:333</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"True Type fonts installation"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Ware lettertipe (True Type) installasie"</span> <span class="hl slc">#: drakfont:341</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"please wait during ttmkfdir..."</span> <span class="hl kwa">msgstr</span> <span class="hl str">"wag asseblief gedurende 'ttmkfdir'..."</span> <span class="hl slc">#: drakfont:342</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"True Type install done"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"'True Type' (lettertipes) installasie"</span> <span class="hl slc">#: drakfont:348 drakfont:363</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"type1inst building"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"type1inst building"</span> <span class="hl slc">#: drakfont:357</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Ghostscript referencing"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Gostscript verwysing"</span> <span class="hl slc">#: drakfont:374</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Suppress Temporary Files"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Onderdruk tydelike-lêers"</span> <span class="hl slc">#: drakfont:376 drakfont:434</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Restart XFS"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Herbegin XFS"</span> <span class="hl slc">#: drakfont:422 drakfont:432</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Suppress Fonts Files"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Onderdruk Lettertipe-lêers"</span> <span class="hl slc">#: drakfont:442</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"Before installing any fonts, be sure that you have the right to use and "</span> <span class="hl str">"install them on your system.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"You can install the fonts the normal way. In rare cases, bogus fonts may "</span> <span class="hl str">"hang up your X Server."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Maak tog seker dat u die reg tot gebruik van lettertipes het, voordat u dit "</span> <span class="hl str">"installeer.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"U kan hierdie lettertipes op die normale manier installeer. In uitsonderlike "</span> <span class="hl str">"gevalle mag dit X laat vries."</span> <span class="hl slc">#: drakfont:482</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Font Installation"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Post-installasie"</span> <span class="hl slc">#: drakfont:493</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"DrakFont"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"DrakFont"</span> <span class="hl slc">#: drakfont:494 drakfont:646</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Font List"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Lettertipe-lys"</span> <span class="hl slc">#: drakfont:497</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Get Windows Fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakfont:503</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"About"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Omtrent"</span> <span class="hl slc">#: drakfont:505 drakfont:725</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Uninstall"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verwyder"</span> <span class="hl slc">#: drakfont:506</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Import"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Trek in"</span> <span class="hl slc">#: drakfont:524</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Drakfont"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"DrakFont"</span> <span class="hl slc">#: drakfont:526</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Copyright (C) 2001-2006 by Mandriva"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kopiereg © 2001-2006 Mandriva"</span> <span class="hl slc">#: drakfont:528</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Font installer."</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Nie geïnstalleeer"</span> <span class="hl slc">#: drakfont:530 harddrake2:236</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Mandriva Linux"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Mandriva Linux"</span> <span class="hl slc">#. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>")</span> <span class="hl slc">#. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>")</span> <span class="hl slc">#: drakfont:537 harddrake2:241</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"_: Translator(s) name(s) & email(s)</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Dirk van der Walt <dirkvanderwalt@webmail.co.za></span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakfont:547</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Choose the applications that will support the fonts:"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kies die programme wat die lettertipes sal ondersteun"</span> <span class="hl slc">#: drakfont:558</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Ghostscript"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Ghostscript"</span> <span class="hl slc">#: drakfont:559</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"OpenOffice.org"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakfont:560</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Abiword"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Abiword"</span> <span class="hl slc">#: drakfont:561</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Generic Printers"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Generiese Drukkers"</span> <span class="hl slc">#: drakfont:575</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Select the font file or directory and click on 'Add'"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kies die fontlêer of lêergids en klik op 'Voeg by'"</span> <span class="hl slc">#: drakfont:576</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"File Selection"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Lêerkeuse"</span> <span class="hl slc">#: drakfont:580</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Fonte"</span> <span class="hl slc">#: drakfont:644</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Import fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Trek Lettertipes in"</span> <span class="hl slc">#: drakfont:657</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Install"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Installasie"</span> <span class="hl slc">#: drakfont:688</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Are you sure you want to uninstall the following fonts?"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakfont:733</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Unselected All"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Herstel Keuses"</span> <span class="hl slc">#: drakfont:736</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Selected All"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kies almal"</span> <span class="hl slc">#: drakfont:750 drakfont:769</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Importing fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Trek Lettertipes in"</span> <span class="hl slc">#: drakfont:754 drakfont:774</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Initial tests"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Begin-toetse"</span> <span class="hl slc">#: drakfont:755</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Copy fonts on your system"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Kopieer lettertipes op u stelsel"</span> <span class="hl slc">#: drakfont:756</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Install & convert Fonts"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Installeer & omskep die Lettertipes"</span> <span class="hl slc">#: drakfont:757</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Post Install"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Post-installasie"</span> <span class="hl slc">#: drakfont:775</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Remove fonts on your system"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verwyder lettertipes vanaf u rekenaar"</span> <span class="hl slc">#: drakfont:776</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Post Uninstall"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Post-Verwyder"</span> <span class="hl slc">#: drakhelp:17</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">" drakhelp 0.1</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Copyright (C)</span> <span class="hl ipl">%s</span> <span class="hl str">Mandriva.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"This is free software and may be redistributed under the terms of the GNU "</span> <span class="hl str">"GPL.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Usage:</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">" drakhelp 0.1</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Kopiereg ©</span> <span class="hl ipl">%s</span> <span class="hl str">Mandriva.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Hierdie is vry sagteware en mag versprei word onder die terme van die GNU "</span> <span class="hl str">"GPL.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Gebruik:</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakhelp:22</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">" --help - display this help</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">" --help - vertoon hierdie help</span> <span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakhelp:23</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">" --id <id_label> - load the html help page which refers to id_label</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">" --id <id_label> - load the html help page which refers to id_label</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakhelp:24</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">" --doc <link> - link to another web page ( for WM welcome "</span> <span class="hl str">"frontend)</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">" --doc <skakel> - skakel na 'n ander webblabsy ( vir WM se "</span> <span class="hl str">"verwelkomings gedeelte)</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl slc">#: drakhelp:52</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Mandriva Linux Help Center"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Mandriva Linux Hulp Sentrum"</span> <span class="hl slc">#: drakhelp:52</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"No Help entry for</span> <span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakperm:22</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"System settings"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Stelsel verstellings"</span> <span class="hl slc">#: drakperm:23</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Custom settings"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Aangepaste verstellings"</span> <span class="hl slc">#: drakperm:24</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Custom & system settings"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Pasmaak & stelsel verstellings"</span> <span class="hl slc">#: drakperm:32</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Security Permissions"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Vergunnigs"</span> <span class="hl slc">#: drakperm:44</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Editable"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Redigeerbaar"</span> <span class="hl slc">#: drakperm:49 drakperm:322</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Path"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Roete"</span> <span class="hl slc">#: drakperm:49 drakperm:250</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"User"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Gebruiker"</span> <span class="hl slc">#: drakperm:49 drakperm:250</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Group"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Groep:"</span> <span class="hl slc">#: drakperm:49 drakperm:334</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Permissions"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Vergunnigs"</span> <span class="hl slc">#: drakperm:59</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Add a new rule"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl slc">#: drakperm:66 drakperm:101 drakperm:126</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Edit current rule"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Redigeer die huidige reël"</span> <span class="hl slc">#: drakperm:108</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"Here you can see files to use in order to fix permissions, owners, and "</span> <span class="hl str">"groups via msec.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"You can also edit your own rules which will owerwrite the default rules."</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Hier kan u lêers sien om te gebruik om toegang, eienaars en groepe via msec "</span> <span class="hl str">"reg te setel.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"U kan selfs u eie reels bepaal wat dan die verstek reels sal vervang."</span> <span class="hl slc">#: drakperm:110</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">""</span> <span class="hl str">"The current security level is</span> <span class="hl ipl">%s</span><span class="hl str">.</span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Select permissions to see/edit"</span> <span class="hl kwa">msgstr</span> <span class="hl str">""</span> <span class="hl str">"Die huidige vlak van sekuriteit is</span> <span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\n</span><span class="hl str">"</span> <span class="hl str">"Ondersoek of verander vergunningsvlakke"</span> <span class="hl slc">#: drakperm:122</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Up"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Op"</span> <span class="hl slc">#: drakperm:122</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Move selected rule up one level"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Skuif gekose reël een vlak op"</span> <span class="hl slc">#: drakperm:123</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Down"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Af"</span> <span class="hl slc">#: drakperm:123</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Move selected rule down one level"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Skuif gekose reël een vlak af"</span> <span class="hl slc">#: drakperm:124</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Add a rule"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Voeg 'n reel by"</span> <span class="hl slc">#: drakperm:124</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Add a new rule at the end"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Voeg 'n nuwe reël aan die einde by"</span> <span class="hl slc">#: drakperm:125</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Delete selected rule"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Verwyder gekose reël."</span> <span class="hl slc">#: drakperm:126 drakups:300 drakups:362 drakups:382</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Edit"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Redigeer"</span> <span class="hl slc">#: drakperm:242</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"browse"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"blaai"</span> <span class="hl slc">#: drakperm:247</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"user"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"gebruiker"</span> <span class="hl slc">#: drakperm:247</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"group"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"groep"</span> <span class="hl slc">#: drakperm:247</span> <span class="hl slc">#, fuzzy, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"other"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Ander"</span> <span class="hl slc">#: drakperm:252</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Read"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Lees"</span> <span class="hl slc">#. -PO: here %s will be either "user", "group" or "other"</span> <span class="hl slc">#: drakperm:255</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Enable</span> <span class="hl esc">\"</span><span class="hl str"></span><span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\"</span> <span class="hl str">to read the file"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Stel</span> <span class="hl esc">\"</span><span class="hl str"></span><span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\"</span> <span class="hl str">in staat om die lêer te lees"</span> <span class="hl slc">#: drakperm:259</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Write"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Skryf"</span> <span class="hl slc">#. -PO: here %s will be either "user", "group" or "other"</span> <span class="hl slc">#: drakperm:262</span> <span class="hl slc">#, c-format</span> <span class="hl kwa">msgid</span> <span class="hl str">"Enable</span> <span class="hl esc">\"</span><span class="hl str"></span><span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\"</span> <span class="hl str">to write the file"</span> <span class="hl kwa">msgstr</span> <span class="hl str">"Laat</span> <span class="hl esc">\"</span><span class="hl str"></span><span class="hl ipl">%s</span><span class="hl str"></span><span class="hl esc">\"</span> <span class="hl str">toe om die lêer te skryf"</span>