You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(58) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(53) |
Feb
(56) |
Mar
|
Apr
|
May
(30) |
Jun
(78) |
Jul
(121) |
Aug
(155) |
Sep
(77) |
Oct
(61) |
Nov
(45) |
Dec
(94) |
2006 |
Jan
(116) |
Feb
(33) |
Mar
(11) |
Apr
(23) |
May
(60) |
Jun
(89) |
Jul
(130) |
Aug
(109) |
Sep
(124) |
Oct
(63) |
Nov
(82) |
Dec
(45) |
2007 |
Jan
(31) |
Feb
(35) |
Mar
(123) |
Apr
(36) |
May
(18) |
Jun
(134) |
Jul
(133) |
Aug
(241) |
Sep
(126) |
Oct
(31) |
Nov
(15) |
Dec
(5) |
2008 |
Jan
(11) |
Feb
(6) |
Mar
(16) |
Apr
(29) |
May
(43) |
Jun
(149) |
Jul
(27) |
Aug
(29) |
Sep
(37) |
Oct
(20) |
Nov
(4) |
Dec
(6) |
2009 |
Jan
(34) |
Feb
(30) |
Mar
(16) |
Apr
(6) |
May
(1) |
Jun
(32) |
Jul
(22) |
Aug
(7) |
Sep
(18) |
Oct
(50) |
Nov
(22) |
Dec
(8) |
2010 |
Jan
(17) |
Feb
(15) |
Mar
(10) |
Apr
(9) |
May
(67) |
Jun
(30) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(1) |
Dec
|
From: Mike G. v. a. <we...@ma...> - 2008-09-28 21:13:06
|
Log Message: ----------- Added code that has the gradebook updated every 5 minutes (using the cron job) Modified Files: -------------- wwmoodle/wwassignment4/moodle/mod/wwassignment: lib.php locallib.php version.php wwmoodle/wwassignment4/moodle/mod/wwassignment/db: install.xml upgrade.php Revision Data ------------- Index: version.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/version.php,v retrieving revision 1.1 retrieving revision 1.2 diff -Lwwassignment4/moodle/mod/wwassignment/version.php -Lwwassignment4/moodle/mod/wwassignment/version.php -u -r1.1 -r1.2 --- wwassignment4/moodle/mod/wwassignment/version.php +++ wwassignment4/moodle/mod/wwassignment/version.php @@ -5,8 +5,8 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2008042072; // The current module version (Date: YYYYMMDDXX) +$module->version = 2008092818; // The current module version (Date: YYYYMMDDXX) $module->requires = 2007101509; // Requires this Moodle version -$module->cron = 0; // Period for cron to check this module (secs) +$module->cron = 300; // Period for cron to check this module (secs) -- every 5 minutes ?> \ No newline at end of file Index: lib.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/lib.php,v retrieving revision 1.5 retrieving revision 1.6 diff -Lwwassignment4/moodle/mod/wwassignment/lib.php -Lwwassignment4/moodle/mod/wwassignment/lib.php -u -r1.5 -r1.6 --- wwassignment4/moodle/mod/wwassignment/lib.php +++ wwassignment4/moodle/mod/wwassignment/lib.php @@ -103,7 +103,7 @@ //get data from WeBWorK $wwsetdata = $wwclient->get_assignment_data($wwcoursename,$wwsetname,false); $wwassignment->id = $wwassignment->instance; - + $wwassignment->grade = $wwclient->get_max_grade($wwcoursename,$wwsetname,false); $wwassignment->timemodified = time(); $returnid = update_record('wwassignment',$wwassignment); @@ -264,19 +264,26 @@ /** * Update grades by firing grade_updated event * - * @param object $assignment null means all wwassignments + * @param object $wwassignment object with extra cmidnumber ?? + * @param object $wwassignment null means all wwassignments * @param int $userid specific user only, 0 mean all */ function wwassignment_update_grades($wwassignment=null, $userid=0, $nullifnone=true) { debugLog("Begin wwassignment_update_grades"); - //debugLog("inputs wwassignment = " . print_r($wwassignment,true)); - //debugLog("userid = $userid"); + debugLog("inputs wwassignment = " . print_r($wwassignment,true)); + debugLog("userid = $userid"); global $CFG; if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once($CFG->libdir.'/gradelib.php'); } if ($wwassignment != null) { + // Make sure wwassignment has cmid defined isnce wwassignment_grade_item_update requires it + if (!$wwassignment->cmidnumber) { // is this ever needed? + $wwassignment->cmidnumber =_wwassignment_cmid() ; + //error_log("adding cmidnumber to wwassignment".$wwassignment->cmidnumber); + } + if ($grades = wwassignment_get_user_grades($wwassignment, $userid)) { # fetches all students if userid=0 foreach($grades as $k=>$v) { if ($v->rawgrade == -1) { @@ -300,14 +307,18 @@ //debugLog ("sql string = $sql"); //$tmp = get_recordset_sql($sql); //error_log("result is ".print_r($tmp,true) ); - if ($rs = get_recordset_sql($sql)) { + if ($rs = get_recordset_sql($sql)) { debugLog("record set found"); while ($wwassignment = rs_fetch_next_record($rs)) { - debugLog("processing next grade"); + if (!$wwassignment->cmidnumber) { // is this ever needed? + $wwassignment->cmidnumber =_wwassignment_cmid() ; + } + + debugLog("processing next grade wwassignment is ".print_r($wwassignment,true) ); if ($wwassignment->grade != 0) { wwassignment_update_grades($wwassignment); } else { - wwassignment_grade_item_update($wwassignment); + wwassignment_grade_item_update($wwassignment); } } rs_close($rs); @@ -344,8 +355,7 @@ $wwsetname = _wwassignment_mapped_set($wwassignment->id,false); $wwassignment->grade = $wwclient->get_max_grade($wwcoursename,$wwsetname,false); } - - // debugLog("wwassignment->grade set to ". $wwassignment->grade); + // set grade in wwassignment $params = array('itemname'=>$wwassignment->name, 'idnumber'=>$wwassignment->cmidnumber); @@ -369,6 +379,7 @@ # grade_update() defined in gradelib.php # $grades=NULL means update grade_item table only, otherwise post grades in grade_grades debugLog("End wwassignment_grade_item_update"); + error_log("update grades for courseid: ". $wwassignment->courseid . " assignment id: ".$wwassignment->id); return grade_update('mod/wwassignment', $wwassignment->courseid, 'mod', 'wwassignment', $wwassignment->id, 0, $grades, $params); } /** @@ -504,9 +515,12 @@ * returns true if successful */ function wwassignment_cron() { - error_log("Begin wwassignment_cron --not used yet"); + error_log("Begin wwassignment_cron"); //FIXME: Add a call that updates all events with dates (in case people forgot to push) + //wwassignment_refresh_events(); + //FIXME: Add a call that updates all grades in all courses + wwassignment_update_grades(null,0); error_log("End wwassignment_cron"); return true; } Index: locallib.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/locallib.php,v retrieving revision 1.6 retrieving revision 1.7 diff -Lwwassignment4/moodle/mod/wwassignment/locallib.php -Lwwassignment4/moodle/mod/wwassignment/locallib.php -u -r1.6 -r1.7 --- wwassignment4/moodle/mod/wwassignment/locallib.php +++ wwassignment4/moodle/mod/wwassignment/locallib.php @@ -84,28 +84,13 @@ $event->format = 1; $event->modulename = 'wwassignment'; $event->instance = $wwassignmentid; - $event->visible = 1; - - // FIXME -- this doesn't create a new object we'll just handle the due date for now - // what you want is $openevent = clone $event this makes a shallow copy of the object - //$openevent = $event; - // FIXME -- it's likely that only the due date needs to be posted. once that is sure, clean this up. - $dueevent = $event; - - //$openevent->name .= ' is Open.'; - //$openevent->eventtype = 'open'; - //$openevent->timestart = $opendate; - //$openevent->timeduration = $duedate - $opendate; - + $event->visible = 1; $dueevent->name .= ' is Due.'; $dueevent->eventtype = 'due'; $dueevent->timestart = $duedate; $dueevent->timeduration = 1; // error_log("adding a due event"); $result = 0; - //if(!add_event($openevent)) { - // $result = -1; - //} if(!add_event($dueevent)) { $result = -1; } @@ -196,7 +181,7 @@ *@return id */ function _wwassignment_cmid() { - $wwassignment = get_record('mod','name','wwassignment'); + $wwassignment = get_record('modules','name','wwassignment'); return $wwassignment->id; } Index: upgrade.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/db/upgrade.php,v retrieving revision 1.5 retrieving revision 1.6 diff -Lwwassignment4/moodle/mod/wwassignment/db/upgrade.php -Lwwassignment4/moodle/mod/wwassignment/db/upgrade.php -u -r1.5 -r1.6 --- wwassignment4/moodle/mod/wwassignment/db/upgrade.php +++ wwassignment4/moodle/mod/wwassignment/db/upgrade.php @@ -34,39 +34,30 @@ //===== 1.9.0 upgrade line ======// notify("running 1.9 upgrade"); - if ($result && $oldversion < 2008042072) { + if ($result && $oldversion < 2008092818) { - /// Define field grade to be added to wwassignment - //$table = new XMLDBTable('wwassignment'); - //$field = new XMLDBField('grade'); - //$field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_set'); - + //Define field grade to be added to wwassignment + $table = new XMLDBTable('wwassignment'); + $field = new XMLDBField('grade'); + $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_set'); // can't do this until you are connected to webwork -- which you won't be on initial upgrades // add this either to wwlink block or to configuration /// Launch add field grade - //$result = $result && add_field($table, $field); + $result = $result && add_field($table, $field); /// Define field timemodified to be added to wwassignment $table = new XMLDBTable('wwassignment'); $field = new XMLDBField('timemodified'); - $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_set'); + $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'grade'); /// Launch add field timemodified to wwassignment_bridge $result = $result && add_field($table, $field); - - /// Define field timemodified to be added to wwassignment -// $table = new XMLDBTable('wwassignment_bridge'); -// $field = new XMLDBField('timemodified'); -// $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_course'); -// -// /// Launch add field timemodified to wwassignment_bridge -// $result = $result && add_field($table, $field); - + //notify('Processing assignment grades, this may take a while if there are many assignments...', 'notifysuccess'); // change grade typo to text if no grades MDL-13920 Index: install.xml =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/db/install.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -Lwwassignment4/moodle/mod/wwassignment/db/install.xml -Lwwassignment4/moodle/mod/wwassignment/db/install.xml -u -r1.3 -r1.4 --- wwassignment4/moodle/mod/wwassignment/db/install.xml +++ wwassignment4/moodle/mod/wwassignment/db/install.xml @@ -8,6 +8,7 @@ <FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="course" NEXT="description"/> <FIELD NAME="description" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="name" NEXT="webwork_set"/> <FIELD NAME="webwork_set" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" DEFAULT="undefined" PREVIOUS="description" NEXT="timemodified"/> + <FIELD NAME="grade" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="timeavailable" NEXT="timemodified"/> <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="webwork_set"/> </FIELDS> <KEYS> |
From: Mike G. v. a. <we...@ma...> - 2008-09-23 23:36:33
|
Log Message: ----------- Backport fixes to inheritance and for answerchecker: Fix the check for equivalent answers so that it uses the limits and other settings from the answer checker and the original formula object. from HEAD to rel-2-4-patches Tags: ---- rel-2-4-patches Modified Files: -------------- pg/lib: Value.pm pg/lib/Value: AnswerChecker.pm Formula.pm Revision Data ------------- Index: Value.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value.pm,v retrieving revision 1.53.2.3.2.2 retrieving revision 1.53.2.3.2.3 diff -Llib/Value.pm -Llib/Value.pm -u -r1.53.2.3.2.2 -r1.53.2.3.2.3 --- lib/Value.pm +++ lib/Value.pm @@ -598,8 +598,9 @@ # sub inherit { my $self = shift; - $self = bless {(map {%$_} @_),%$self}, ref($self); - foreach my $id ($self->noinherit) {delete $self->{$id}}; + my %copy = (map {%$_} @_); # copy values from given objects + foreach my $id ($self->noinherit) {delete $copy{$id}} + $self = bless {%copy,%$self}, ref($self); return $self; } Index: AnswerChecker.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/AnswerChecker.pm,v retrieving revision 1.91.2.2.2.2 retrieving revision 1.91.2.2.2.3 diff -Llib/Value/AnswerChecker.pm -Llib/Value/AnswerChecker.pm -u -r1.91.2.2.2.2 -r1.91.2.2.2.3 --- lib/Value/AnswerChecker.pm +++ lib/Value/AnswerChecker.pm @@ -1624,7 +1624,7 @@ sub cmp_call_filter { my $ans = shift; my $method = shift; - return $ans->{correct_value}->$method($ans); + return $ans->{correct_value}->$method($ans,@_); } sub cmp_prefilter { @@ -1646,10 +1646,14 @@ my $self = shift; my $ans = shift; $ans->{_filter_name} = "produce_equivalence_message"; return $ans if $ans->{ans_message}; # don't overwrite other messages - $ans->{prev_formula} = Parser::Formula($self->{context},$ans->{prev_ans}); + my $context = $self->context; + $ans->{prev_formula} = Parser::Formula($context,$ans->{prev_ans}); if (defined($ans->{prev_formula}) && defined($ans->{student_formula})) { - my $prev = eval {$self->promote($ans->{prev_formula})}; break unless defined($prev); - $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},{}); + my $prev = eval {$self->promote($ans->{prev_formula})->inherit($self)}; # inherit limits, etc. + break unless defined($prev); + $context->{answerHash} = $ans; # values here can override context flags + $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},$ans); + $context->{answerHash} = undef; if ( !$ans->{isPreview} # not preview mode and $ans->{prev_equals_current} # equivalent and $ans->{prev_ans} ne $ans->{original_student_ans}) # but not identical @@ -1681,8 +1685,10 @@ sub cmp_postprocess { my $self = shift; my $ans = shift; - return unless $ans->{score} == 0 && !$ans->{isPreview}; - return if $ans->{ans_message}; + return unless $ans->{score} == 0; + eval {$ans->{student_formula}->reduce} if defined($ans->{student_formula}); # check for bad function calls + $self->cmp_error($ans) if $self->{context}{error}{flag}; # and report the error + return if $ans->{ans_message} || $ans->{isPreview}; if ($self->{domainMismatch} && $ans->{showDomainErrors}) { $self->cmp_Error($ans,"The domain of your function doesn't match that of the correct answer"); return; Index: Formula.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/Formula.pm,v retrieving revision 1.43.2.2.2.1 retrieving revision 1.43.2.2.2.2 diff -Llib/Value/Formula.pm -Llib/Value/Formula.pm -u -r1.43.2.2.2.1 -r1.43.2.2.2.2 --- lib/Value/Formula.pm +++ lib/Value/Formula.pm @@ -220,6 +220,16 @@ } # +# Don't inherit test values or adapted values, or other temporary items +# +sub noinherit { + my $self = shift; + ($self->SUPER::noinherit(@_),"test_values","test_adapt","tree","string","variables", + "f","stack","ref","tokens","values","space","domainMismatch"); +} + + +# # Create the value list from a given set of test points # sub createPointValues { |
From: dpvc v. a. <we...@ma...> - 2008-09-23 22:01:41
|
Log Message: ----------- Fix the check for equivalent answers so that it uses the limits and other settings from the answer checker and the original formula object. Modified Files: -------------- pg/lib/Value: AnswerChecker.pm Revision Data ------------- Index: AnswerChecker.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/AnswerChecker.pm,v retrieving revision 1.120 retrieving revision 1.121 diff -Llib/Value/AnswerChecker.pm -Llib/Value/AnswerChecker.pm -u -r1.120 -r1.121 --- lib/Value/AnswerChecker.pm +++ lib/Value/AnswerChecker.pm @@ -1646,10 +1646,14 @@ my $self = shift; my $ans = shift; $ans->{_filter_name} = "produce_equivalence_message"; return $ans if $ans->{ans_message}; # don't overwrite other messages - $ans->{prev_formula} = Parser::Formula($self->{context},$ans->{prev_ans}); + my $context = $self->context; + $ans->{prev_formula} = Parser::Formula($context,$ans->{prev_ans}); if (defined($ans->{prev_formula}) && defined($ans->{student_formula})) { - my $prev = eval {$self->promote($ans->{prev_formula})}; break unless defined($prev); - $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},{}); + my $prev = eval {$self->promote($ans->{prev_formula})->inherit($self)}; # inherit limits, etc. + break unless defined($prev); + $context->{answerHash} = $ans; # values here can override context flags + $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},$ans); + $context->{answerHash} = undef; if ( !$ans->{isPreview} # not preview mode and $ans->{prev_equals_current} # equivalent and $ans->{prev_ans} ne $ans->{original_student_ans}) # but not identical |
From: dpvc v. a. <we...@ma...> - 2008-09-23 21:59:58
|
Log Message: ----------- Include a noinherit routine so that things like test_values and other temporary items are not inheritted. Only things like limits and so on. Modified Files: -------------- pg/lib/Value: Formula.pm Revision Data ------------- Index: Formula.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/Formula.pm,v retrieving revision 1.61 retrieving revision 1.62 diff -Llib/Value/Formula.pm -Llib/Value/Formula.pm -u -r1.61 -r1.62 --- lib/Value/Formula.pm +++ lib/Value/Formula.pm @@ -220,6 +220,16 @@ } # +# Don't inherit test values or adapted values, or other temporary items +# +sub noinherit { + my $self = shift; + ($self->SUPER::noinherit(@_),"test_values","test_adapt","tree","string","variables", + "f","stack","ref","tokens","values","space","domainMismatch"); +} + + +# # Create the value list from a given set of test points # sub createPointValues { |
From: dpvc v. a. <we...@ma...> - 2008-09-23 21:58:33
|
Log Message: ----------- Handle the no-inherit values better by deleting them from the copy before inserting the ones from the original hash. That way, you don't lose your copies of those values, you just don't inherit from the given objects. Modified Files: -------------- pg/lib: Value.pm Revision Data ------------- Index: Value.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value.pm,v retrieving revision 1.96 retrieving revision 1.97 diff -Llib/Value.pm -Llib/Value.pm -u -r1.96 -r1.97 --- lib/Value.pm +++ lib/Value.pm @@ -598,8 +598,9 @@ # sub inherit { my $self = shift; - $self = bless {(map {%$_} @_),%$self}, ref($self); - foreach my $id ($self->noinherit) {delete $self->{$id}}; + my %copy = (map {%$_} @_); # copy values from given objects + foreach my $id ($self->noinherit) {delete $copy{$id}} + $self = bless {%copy,%$self}, ref($self); return $self; } |
From: dpvc v. a. <we...@ma...> - 2008-09-21 18:48:34
|
Log Message: ----------- Protect against errors in student formula in the postfilter when looking to determine the error message to give about the student answer. Use cmp_compare to do equality checks between objects (rather than the hack that uses PG_restricted_eval). Handle MathObjects in the test_points and test_at list better. Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.18 retrieving revision 1.19 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.18 -r1.19 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -177,9 +177,7 @@ # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # my $adapt = $l->adapt; - $main::{_cmp_} = sub {return $adapt == $r}; # a closure to access local variables - my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters - delete $main::{_cmp_}; # remove temprary function + my $equal = $adapt->cmp_compare($r,{}); $self->{adapt} = $self->{adapt}->inherit($adapt); # save the adapted value's flags return -1 unless $equal; # @@ -208,9 +206,12 @@ delete $f->{adapt}; delete $f->{constant}; foreach my $id ('test_points','test_at') { if (defined $f->{$id}) { - $f->{$id} = $f->{$id}->value if Value::isValue($f->{$id}); + $f->{$id} = [$f->{$id}->value] if Value::isValue($f->{$id}); $f->{$id} = [$f->{$id}] unless ref($f->{$id}) eq 'ARRAY'; - $f->{$id} = [map {[$_]} @{$f->{$id}}] unless ref($f->{$id}[0]) eq 'ARRAY'; + $f->{$id} = [map { + (Value::isValue($_) ? [$_->value] : + (ref($_) eq 'ARRAY'? $_ : [$_])) + } @{$f->{$id}}]; $f->{$id} = $self->addConstants($f->{$id}); } } @@ -227,13 +228,17 @@ my $variables = $self->context->{variables}; my $Points = []; foreach my $p (@{$points}) { - my @P = (.1) x scalar(@names); my $j = 0; - foreach my $i (0..scalar(@names)-1) { - if (!$variables->{$names[$i]}{arbitraryConstant}) { - $P[$i] = $p->[$j] if defined $p->[$j]; $j++; + if (scalar(@{$p}) == scalar(@names)) { + push (@{$Points},$p); + } else { + my @P = (.1) x scalar(@names); my $j = 0; + foreach my $i (0..scalar(@names)-1) { + if (!$variables->{$names[$i]}{arbitraryConstant}) { + $P[$i] = $p->[$j] if defined $p->[$j]; $j++; + } } + push (@{$Points}, \@P); } - push (@{$Points}, \@P); } return $Points; } @@ -280,20 +285,20 @@ # sub cmp_postprocess { my $self = shift; my $ans = shift; - $self->SUPER::cmp_postprocess($ans); + $self->SUPER::cmp_postprocess($ans,@_); return unless $ans->{score} == 0 && !$ans->{isPreview}; return if $ans->{ans_message} || !$self->getFlag("showHints"); my $student = $ans->{student_value}; - my $result = $ans->{correct_value} <=> $student; # compare encodes the reason in the result + $main::{_cmp_} = sub {return $ans->{correct_value} <=> $student}; # compare encodes the reason in the result + my $result = main::PG_restricted_eval('&{$main::{_cmp_}}'); + delete $main::{_cmp_}; $self->cmp_Error($ans,"Note: there is always more than one posibility") if $result == 2 || $result == 3; if ($result == 3) { my $context = $self->context; $context->flags->set(no_parameters=>0); $context->variables->add(x00=>'Real'); my $correct = $self->removeConstant+"n01+n00x00"; # must use both parameters - $main::{_cmp_} = sub {return $correct == $student+"x00"}; # a closure to access local variables - $result = 1 if main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents domain errors (and other errors) - delete $main::{_cmp_}; # remove temprary function + $result = 1 if $correct->cmp_compare($student+"x00",{}); $context->variables->remove('x00'); $context->flags->set(no_parameters=>1); } |
From: dpvc v. a. <we...@ma...> - 2008-09-21 18:48:11
|
Log Message: ----------- Report bad function calls in student Formulas (e.g., roots of negatives), which used to be silently marked as incorrect. This is done during the post-processing phase by calling the formula's reduce method, which will return an error if there are illegal function calls (or other errors). Modified Files: -------------- pg/lib/Value: AnswerChecker.pm Revision Data ------------- Index: AnswerChecker.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/AnswerChecker.pm,v retrieving revision 1.119 retrieving revision 1.120 diff -Llib/Value/AnswerChecker.pm -Llib/Value/AnswerChecker.pm -u -r1.119 -r1.120 --- lib/Value/AnswerChecker.pm +++ lib/Value/AnswerChecker.pm @@ -1624,7 +1624,7 @@ sub cmp_call_filter { my $ans = shift; my $method = shift; - return $ans->{correct_value}->$method($ans); + return $ans->{correct_value}->$method($ans,@_); } sub cmp_prefilter { @@ -1681,8 +1681,10 @@ sub cmp_postprocess { my $self = shift; my $ans = shift; - return unless $ans->{score} == 0 && !$ans->{isPreview}; - return if $ans->{ans_message}; + return unless $ans->{score} == 0; + eval {$ans->{student_formula}->reduce} if defined($ans->{student_formula}); # check for bad function calls + $self->cmp_error($ans) if $self->{context}{error}{flag}; # and report the error + return if $ans->{ans_message} || $ans->{isPreview}; if ($self->{domainMismatch} && $ans->{showDomainErrors}) { $self->cmp_Error($ans,"The domain of your function doesn't match that of the correct answer"); return; |
From: dpvc v. a. <we...@ma...> - 2008-09-21 18:47:50
|
Log Message: ----------- BACKPORT: add recent changes up to version 1.19 (better protection from errors in student formulas, ability to get diagnostics for FormulaUpToConstant objects, properly handle test_points and test_at, etc.) Tags: ---- rel-2-4-patches Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.11.2.1.2.2 retrieving revision 1.11.2.1.2.3 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.11.2.1.2.2 -r1.11.2.1.2.3 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -176,9 +176,9 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - $main::{_cmp_} = sub {return ($l->{adapt}->inherit($l)) == $r}; # a closure to access local variables - my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters - delete $main::{_cmp_}; # remove temprary function + my $adapt = $l->adapt; + my $equal = $adapt->cmp_compare($r,{}); + $self->{adapt} = $self->{adapt}->inherit($adapt); # save the adapted value's flags return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) @@ -187,6 +187,62 @@ return abs($context->variables->get("n00")->{value}) < $context->flag("zeroLevelTol"); } +# +# Return the {adapt} formula with test points adjusted +# +sub adapt { + my $self = shift; + my $adapt = $self->{adapt}->inherit($self); delete $adapt->{adapt}; + return $self->adjustInherit($self->{adapt}); +} + +# +# Inherit from the main FormulaUpToConstant, but +# adjust the test points to include the constants +# +sub adjustInherit { + my $self = shift; + my $f = shift->inherit($self); + delete $f->{adapt}; delete $f->{constant}; + foreach my $id ('test_points','test_at') { + if (defined $f->{$id}) { + $f->{$id} = [$f->{$id}->value] if Value::isValue($f->{$id}); + $f->{$id} = [$f->{$id}] unless ref($f->{$id}) eq 'ARRAY'; + $f->{$id} = [map { + (Value::isValue($_) ? [$_->value] : + (ref($_) eq 'ARRAY'? $_ : [$_])) + } @{$f->{$id}}]; + $f->{$id} = $self->addConstants($f->{$id}); + } + } + return $f; +} + +# +# Insert dummy values for the constants for the test points +# (These are supposed to be +C, so the value shouldn't matter?) +# +sub addConstants { + my $self = shift; my $points = shift; + my @names = $self->context->variables->variables; + my $variables = $self->context->{variables}; + my $Points = []; + foreach my $p (@{$points}) { + if (scalar(@{$p}) == scalar(@names)) { + push (@{$Points},$p); + } else { + my @P = (.1) x scalar(@names); my $j = 0; + foreach my $i (0..scalar(@names)-1) { + if (!$variables->{$names[$i]}{arbitraryConstant}) { + $P[$i] = $p->[$j] if defined $p->[$j]; $j++; + } + } + push (@{$Points}, \@P); + } + } + return $Points; +} + ################################################## # # Here we override part of the answer comparison @@ -201,24 +257,48 @@ sub cmp_defaults {((shift)->SUPER::cmp_defaults,showHints => 1, showLinearityHints => 1)}; # +# Provide diagnostics based on the adapted function used to check +# the student's answer +# +sub cmp_diagnostics { + my $self = shift; + $self->inherit($self->{adapt})->SUPER::cmp_diagnostics(@_); +} + +# +# Make it possible to graph single-variable formulas by setting +# the arbitrary constants to 0 first. +# +sub cmp_graph { + my $self = shift; my $diagnostics = shift; + my $F1 = shift; my $F2; ($F1,$F2) = @{$F1} if (ref($F1) eq 'ARRAY'); + my %subs; my $context = $self->context; + foreach my $v ($context->variables->variables) + {$subs{$v} = 0 if ($context->variables->get($v)->{arbitraryConstant})} + $F1 = $F1->inherit($F1->{adapt})->substitute(%subs)->reduce; + $F2 = $F2->inherit($F2->{adapt})->substitute(%subs)->reduce; + $self->SUPER::cmp_graph($diagnostics,[$F1,$F2]); +} + +# # Add useful messages, if the author requested them # sub cmp_postprocess { my $self = shift; my $ans = shift; - $self->SUPER::cmp_postprocess($ans); + $self->SUPER::cmp_postprocess($ans,@_); return unless $ans->{score} == 0 && !$ans->{isPreview}; return if $ans->{ans_message} || !$self->getFlag("showHints"); my $student = $ans->{student_value}; - my $result = $ans->{correct_value} <=> $student; # compare encodes the reason in the result + $main::{_cmp_} = sub {return $ans->{correct_value} <=> $student}; # compare encodes the reason in the result + my $result = main::PG_restricted_eval('&{$main::{_cmp_}}'); + delete $main::{_cmp_}; $self->cmp_Error($ans,"Note: there is always more than one posibility") if $result == 2 || $result == 3; if ($result == 3) { my $context = $self->context; $context->flags->set(no_parameters=>0); $context->variables->add(x00=>'Real'); my $correct = $self->removeConstant+"n01+n00x00"; # must use both parameters - $main::{_cmp_} = sub {return $correct == $student+"x00"}; # a closure to access local variables - $result = 1 if main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents domain errors (and other errors) - delete $main::{_cmp_}; # remove temprary function + $result = 1 if $correct->cmp_compare($student+"x00",{}); $context->variables->remove('x00'); $context->flags->set(no_parameters=>1); } @@ -238,7 +318,7 @@ # sub removeConstant { my $self = shift; - main::Formula($self->substitute($self->{constant}=>0))->reduce->inherit($self); + return $self->adjustInherit(main::Formula($self->substitute($self->{constant}=>0))->reduce); } # |
From: dpvc v. a. <we...@ma...> - 2008-09-18 12:30:13
|
Log Message: ----------- Fix problem with using value method on an undefined value when the point returned by the graphed funciton is undefined. Modified Files: -------------- pg/macros: PGgraphmacros.pl Revision Data ------------- Index: PGgraphmacros.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/PGgraphmacros.pl,v retrieving revision 1.10 retrieving revision 1.11 diff -Lmacros/PGgraphmacros.pl -Lmacros/PGgraphmacros.pl -u -r1.10 -r1.11 --- macros/PGgraphmacros.pl +++ macros/PGgraphmacros.pl @@ -323,9 +323,13 @@ my $localContext= Parser::Context->current(\%main::context)->copy; $localContext->variables->add($var=>'Real') unless $localContext->variables->get($var); my $formula = Value->Package("Formula()")->new($localContext,$rule); - my $subRef = sub {my $x=shift; Parser::Evaluate($formula, $var=>$x)->value}; - #traps errors when - # graph domain is larger than the function's domain. + my $subRef = sub { + my $x = shift; + my $y = Parser::Evaluate($formula, $var=>$x); + $y = $y->value if defined $y; + return $y + }; + # traps errors when graph domain is larger than the function's domain. #my $subRef = string_to_sub($rule,$var); my $funRef = new Fun($subRef,$graph); $funRef->color($color); |
From: dpvc v. a. <we...@ma...> - 2008-09-18 12:29:01
|
Log Message: ----------- Fix problem with using value method on an undefined value when the point returned by the graphed funciton is undefined. Tags: ---- rel-2-4-patches Modified Files: -------------- pg/macros: PGgraphmacros.pl Revision Data ------------- Index: PGgraphmacros.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/PGgraphmacros.pl,v retrieving revision 1.6.6.1.2.1 retrieving revision 1.6.6.1.2.2 diff -Lmacros/PGgraphmacros.pl -Lmacros/PGgraphmacros.pl -u -r1.6.6.1.2.1 -r1.6.6.1.2.2 --- macros/PGgraphmacros.pl +++ macros/PGgraphmacros.pl @@ -323,9 +323,13 @@ my $localContext= Parser::Context->current(\%main::context)->copy; $localContext->variables->add($var=>'Real') unless $localContext->variables->get($var); my $formula = Value->Package("Formula()")->new($localContext,$rule); - my $subRef = sub {my $x=shift; Parser::Evaluate($formula, $var=>$x)->value}; - #traps errors when - # graph domain is larger than the function's domain. + my $subRef = sub { + my $x = shift; + my $y = Parser::Evaluate($formula, $var=>$x); + $y = $y->value if defined $y; + return $y + }; + # traps errors when graph domain is larger than the function's domain. #my $subRef = string_to_sub($rule,$var); my $funRef = new Fun($subRef,$graph); $funRef->color($color); |
From: dpvc v. a. <we...@ma...> - 2008-09-16 03:28:38
|
Log Message: ----------- Allow graphs of single-variable functions in diagnostics. Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.17 retrieving revision 1.18 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.17 -r1.18 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -118,7 +118,6 @@ # my $context = (Value::isContext($_[0]) ? shift : $self->context)->copy; $context->{parser}{Variable} = 'FormulaUpToConstant::Variable'; - $context->{diagnostics}{formulas}{showGraphs} = 0; # # Create a formula from the user's input. # @@ -191,15 +190,6 @@ } # -# Provide diagnostics based on the adapted function used to check -# the student's answer -# -sub cmp_diagnostics { - my $self = shift; - $self->inherit($self->{adapt})->SUPER::cmp_diagnostics(@_); -} - -# # Return the {adapt} formula with test points adjusted # sub adapt { @@ -262,6 +252,30 @@ sub cmp_defaults {((shift)->SUPER::cmp_defaults,showHints => 1, showLinearityHints => 1)}; # +# Provide diagnostics based on the adapted function used to check +# the student's answer +# +sub cmp_diagnostics { + my $self = shift; + $self->inherit($self->{adapt})->SUPER::cmp_diagnostics(@_); +} + +# +# Make it possible to graph single-variable formulas by setting +# the arbitrary constants to 0 first. +# +sub cmp_graph { + my $self = shift; my $diagnostics = shift; + my $F1 = shift; my $F2; ($F1,$F2) = @{$F1} if (ref($F1) eq 'ARRAY'); + my %subs; my $context = $self->context; + foreach my $v ($context->variables->variables) + {$subs{$v} = 0 if ($context->variables->get($v)->{arbitraryConstant})} + $F1 = $F1->inherit($F1->{adapt})->substitute(%subs)->reduce; + $F2 = $F2->inherit($F2->{adapt})->substitute(%subs)->reduce; + $self->SUPER::cmp_graph($diagnostics,[$F1,$F2]); +} + +# # Add useful messages, if the author requested them # sub cmp_postprocess { |
From: dpvc v. a. <we...@ma...> - 2008-09-16 03:06:03
|
Log Message: ----------- Allow diagnostics to show the adapted function's values. Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.16 retrieving revision 1.17 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.16 -r1.17 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -118,6 +118,7 @@ # my $context = (Value::isContext($_[0]) ? shift : $self->context)->copy; $context->{parser}{Variable} = 'FormulaUpToConstant::Variable'; + $context->{diagnostics}{formulas}{showGraphs} = 0; # # Create a formula from the user's input. # @@ -176,9 +177,11 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - $main::{_cmp_} = sub {return $l->adapt == $r}; # a closure to access local variables + my $adapt = $l->adapt; + $main::{_cmp_} = sub {return $adapt == $r}; # a closure to access local variables my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters delete $main::{_cmp_}; # remove temprary function + $self->{adapt} = $self->{adapt}->inherit($adapt); # save the adapted value's flags return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) @@ -188,6 +191,15 @@ } # +# Provide diagnostics based on the adapted function used to check +# the student's answer +# +sub cmp_diagnostics { + my $self = shift; + $self->inherit($self->{adapt})->SUPER::cmp_diagnostics(@_); +} + +# # Return the {adapt} formula with test points adjusted # sub adapt { |
From: dpvc v. a. <we...@ma...> - 2008-09-15 15:40:24
|
Log Message: ----------- Fixed problem with inerhiting test points into the adapted formula used for the comparison. In its context, the arbitrary constant is an extra variable, and so extra coordinates have to be added to the test points. This is now handled properly. (It may be a good idea to make $f->removeConstant revert to the original context of the formula rather than the modified one that includes its constants, rather than having to adjust the test points in that case.) Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.15 retrieving revision 1.16 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.15 -r1.16 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -176,9 +176,9 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - $main::{_cmp_} = sub {return ($l->{adapt}->inherit($l)) == $r}; # a closure to access local variables - my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters - delete $main::{_cmp_}; # remove temprary function + $main::{_cmp_} = sub {return $l->adapt == $r}; # a closure to access local variables + my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters + delete $main::{_cmp_}; # remove temprary function return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) @@ -187,6 +187,55 @@ return abs($context->variables->get("n00")->{value}) < $context->flag("zeroLevelTol"); } +# +# Return the {adapt} formula with test points adjusted +# +sub adapt { + my $self = shift; + my $adapt = $self->{adapt}->inherit($self); delete $adapt->{adapt}; + return $self->adjustInherit($self->{adapt}); +} + +# +# Inherit from the main FormulaUpToConstant, but +# adjust the test points to include the constants +# +sub adjustInherit { + my $self = shift; + my $f = shift->inherit($self); + delete $f->{adapt}; delete $f->{constant}; + foreach my $id ('test_points','test_at') { + if (defined $f->{$id}) { + $f->{$id} = $f->{$id}->value if Value::isValue($f->{$id}); + $f->{$id} = [$f->{$id}] unless ref($f->{$id}) eq 'ARRAY'; + $f->{$id} = [map {[$_]} @{$f->{$id}}] unless ref($f->{$id}[0]) eq 'ARRAY'; + $f->{$id} = $self->addConstants($f->{$id}); + } + } + return $f; +} + +# +# Insert dummy values for the constants for the test points +# (These are supposed to be +C, so the value shouldn't matter?) +# +sub addConstants { + my $self = shift; my $points = shift; + my @names = $self->context->variables->variables; + my $variables = $self->context->{variables}; + my $Points = []; + foreach my $p (@{$points}) { + my @P = (.1) x scalar(@names); my $j = 0; + foreach my $i (0..scalar(@names)-1) { + if (!$variables->{$names[$i]}{arbitraryConstant}) { + $P[$i] = $p->[$j] if defined $p->[$j]; $j++; + } + } + push (@{$Points}, \@P); + } + return $Points; +} + ################################################## # # Here we override part of the answer comparison @@ -238,7 +287,7 @@ # sub removeConstant { my $self = shift; - main::Formula($self->substitute($self->{constant}=>0))->reduce->inherit($self); + return $self->adjustInherit(main::Formula($self->substitute($self->{constant}=>0))->reduce); } # |
From: dpvc v. a. <we...@ma...> - 2008-09-14 00:35:04
|
Log Message: ----------- Bring up to version 3.6. Changes include: * Added a new eqn-number extension that allows you to add equation numbers to displayed equations via \label{xxx} and refer to those numbers at other locations in the HTML page via \ref{xxx}. See the eqn-number documentation for more details. * Fixed more problems with Firefox3 and their new single-source security policy for loading local files. (Previous attempts worked with pre-release versions of Firefox3, but this works with the release version.) * Worked around a print bug with Firefox3 where thin horizontal rules could disappear in the printed version even though they appear on screen. * Added CSS styles to make images in hypertext links within mathematics be underlines when one of the image modes is in use. * Added CSS to help isolate the control panel width from the CSS of the main page. * Added ability to put the mathematics within CDATA to help avoid problems with <, > and & within the mathematics. For example: <SPAN CLASS="math"><!--[CDATA[ x > y ]]--></SPAN> Using <![CDATA[ ... ]]> without the -- does not work in some browsers. * The tex2math plugin now processes the tex2math_ignore and tex2math_process directives on an element even if there are other class names included on the element as well. * Fixed a bug with the autobold plugin in MSIE when certain fonts are used as the default font. * Enhanced the ability to preset the styles used by jsMath by making the jsMath.styles entries be associative arrays rather than strings. This makes it easy to change a single style setting: instead of retyping the entire string, you simply set the style value that you are interested in changing. * Fixed a problem where Safari3 would not be able to drag the TeX source window produced by double-clicking on typeset mathematics. * Added an option to control whether the @(...) construct is processed within \hbox{} or not. This would allow arbitrary HTML tags to be inserted, which poses a security risk for content-management systems where untrusted users are entering data. The easy/load.js file now has a setting to control this, and it is off by default, though it is on by default when loading jsMath.js by hand. To turn it off by hand, set jsMath.safeHBoxes to 1. * Added checks within the HTML extension that prevent the insertion of raw HTML into jsMath equations. * Added a jsMath.ProcessElement() call that allows you to process the contents of a single element (of class "math") as TeX code directly. Note that this call may return before the mathematics is actually finished typesetting. See the page on dynamic math for more details. * Modified the way jsMath works around the lack of support for position:fixed in MSIE so that style changes for where the jsMath button and control panel appear should work properly in MSIE. * Removed the "Check for Updates" button from the jsMath Control Panel and moved it to the jsMath/test/index.html page (since it is really an administrator function, not a user function). Modified Files: -------------- webwork-modperl/htdocs/jsMath: jsMath-BaKoMa-fonts.js jsMath-controls.html jsMath-easy-load.js jsMath-loader-post.html jsMath-ww.js jsMath.js webwork-modperl/htdocs/jsMath/easy: load.js webwork-modperl/htdocs/jsMath/extensions: HTML.js autobold.js double-click.js underset-overset.js webwork-modperl/htdocs/jsMath/plugins: autoload.js noImageFonts.js smallFonts.js spriteImageFonts.js tex2math.js webwork-modperl/htdocs/jsMath/uncompressed: jsMath.js Added Files: ----------- webwork-modperl/htdocs/jsMath/extensions: eqn-number.js Revision Data ------------- Index: jsMath-controls.html =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-controls.html,v retrieving revision 1.13 retrieving revision 1.14 diff -Lhtdocs/jsMath/jsMath-controls.html -Lhtdocs/jsMath/jsMath-controls.html -u -r1.13 -r1.14 --- htdocs/jsMath/jsMath-controls.html +++ htdocs/jsMath/jsMath-controls.html @@ -138,12 +138,6 @@ this.panel.style.display = "block"; this.openMain = 0; - - if (jsMath.Browser.msieMoveButtonHack) { - this.panel.style.left = "0px"; - this.panel.style.top = "0px"; - jsMath.Controls.MoveButton(); - } }, Options: function () { @@ -251,10 +245,6 @@ jsMath.Global.Show(); }, - CheckVersion: function () { - jsMath.Script.delayedLoad('http://www.math.union.edu/locate/jsMath/jsMath/jsMath-version-check.js'); - }, - NoAuto: function () {jsMath.Element("_autofont").checked = false} }); @@ -304,8 +294,6 @@ <td align="center"> <table border="0" cellspacing="0" cellpadding="0"> <tr><td align="center" colspan="3"> -<input type="button" value="Check for jsMath Updates" - style="width:18em" onclick="jsMath.Controls.CheckVersion()" /><br /> <input type="button" id="jsMath__resolution" value="Hi-Res Fonts for Printing" style="width:18em" onclick="jsMath.Controls.PrintResolution()" /> </td></tr> @@ -458,12 +446,12 @@ if (showWarning) { if (mustPost) { var scr = document.getElementById("jsMath_script"); - window.parent.postMessage("jsMCP:SCR:"+scr.innerHTML); + window.parent.postMessage("jsMCP:SCR:"+scr.innerHTML,"*"); var main = document.getElementById("jsMath_main"); - window.parent.postMessage("jsMCP:PAN:"+main.innerHTML); + window.parent.postMessage("jsMCP:PAN:"+main.innerHTML,"*"); var options = document.getElementById("jsMath_options"); - window.parent.postMessage("jsMCP:OPT:"+options.innerHTML); - window.parent.postMessage("jsMCP:PST:"); + window.parent.postMessage("jsMCP:OPT:"+options.innerHTML,"*"); + window.parent.postMessage("jsMCP:PST:","*"); } } else { jsMath.Controls.Main() Index: jsMath-BaKoMa-fonts.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-BaKoMa-fonts.js,v retrieving revision 1.5 retrieving revision 1.6 diff -Lhtdocs/jsMath/jsMath-BaKoMa-fonts.js -Lhtdocs/jsMath/jsMath-BaKoMa-fonts.js -u -r1.5 -r1.6 --- htdocs/jsMath/jsMath-BaKoMa-fonts.js +++ htdocs/jsMath/jsMath-BaKoMa-fonts.js @@ -418,11 +418,11 @@ } jsMath.Setup.Styles({ - '.typeset .cmr10': 'font-family: cmr10, serif', - '.typeset .cmbx10': 'font-family: cmbx10, cmr10', - '.typeset .cmti10': 'font-family: cmti10, cmr10', - '.typeset .cmmi10': 'font-family: cmmi10', - '.typeset .cmsy10': 'font-family: cmsy10', - '.typeset .cmex10': 'font-family: cmex10', + '.typeset .cmr10': 'font-family: CMR10, serif', + '.typeset .cmbx10': 'font-family: CMBX10, CMR10', + '.typeset .cmti10': 'font-family: CMTI10, CMR10', + '.typeset .cmmi10': 'font-family: CMMI10', + '.typeset .cmsy10': 'font-family: CMSY10', + '.typeset .cmex10': 'font-family: CMEX10', '.typeset .arial': "font-family: 'Arial unicode MS'" }); Index: jsMath-easy-load.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-easy-load.js,v retrieving revision 1.4 retrieving revision 1.5 diff -Lhtdocs/jsMath/jsMath-easy-load.js -Lhtdocs/jsMath/jsMath-easy-load.js -u -r1.4 -r1.5 --- htdocs/jsMath/jsMath-easy-load.js +++ htdocs/jsMath/jsMath-easy-load.js @@ -32,6 +32,8 @@ jsMath.tex2math.doubleDollarsAreInLine = jsMath.Easy.doubleDollarsAreInLine; jsMath.tex2math.allowDisableTag = jsMath.Easy.allowDisableTag; +jsMath.safeHBoxes = jsMath.Easy.safeHBoxes; + if (jsMath.Easy.scale) { if (!jsMath.Controls) {jsMath.Controls = {}} if (!jsMath.Controls.cookie) {jsMath.Controls.cookie = {}} Index: jsMath.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath.js,v retrieving revision 1.41 retrieving revision 1.42 diff -Lhtdocs/jsMath/jsMath.js -Lhtdocs/jsMath/jsMath.js -u -r1.41 -r1.42 --- htdocs/jsMath/jsMath.js +++ htdocs/jsMath/jsMath.js @@ -10,7 +10,7 @@ * * for the latest version, and for documentation on how to use jsMath. * - * Copyright 2004-2007 by Davide P. Cervone + * Copyright 2004-2008 by Davide P. Cervone * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,11 +40,11 @@ //start = new Date().getTime(); jsMath.Script.Uncompress([ - ['if(!','window','.jsMath','||!',1,'.','jsMath.','loaded','){var ','jsMath_old','=',1,2,';',0,'document.','getElementById','||!',15,'childNodes||!',15,'createElement','){','alert("','The',' mathematics ','on this page requires W3C DOM support in its JavaScript. Unfortunately, your ','browser',' doesn\'t seem to have this.")}','else{',1,2,'={version:"3.5",document:document,',1,':',1,',','platform',':(','navigator.',37,'.match(/','Mac/)?"mac":',39,37,41,'Win/)?"pc":"unix"),','sizes',':[50,60,70,85,100,120,144,173,207,249],','styles',':{".math','":"font-family:serif; font-style:normal; font-weight:normal','",".typeset',51,'; line-height:normal',';","div','.typeset','":"text-align',':center; margin:1em 0px;","span',56,57,':left',52,' span',57,61,'; border:','0px; margin:0px','; padding',':0px;",".typeset .','normal',51,'",".typeset .','size0','":"font-size:','50','%",".typeset .','size1',74,'60',76,'size2',74,'70',76,'size3',74,'85',76,'size4',74,'100',76,'size5',74,'120',76,! 'size6',74,'144',76,'size7',74,'173',76,'size8',74,'207',76,'size9',74,'249',76,'cmr10','":"font-family:jsMath-',113,', serif',72,'cmbx10',114,118,', ','jsMath-cmr10',72,'cmti10',114,124,', ',122,72,'cmmi10',114,130,72,'cmsy10',114,134,72,'cmex10',114,138,72,'textit":"','font-family',':serif; ','font-style:italic',72,'textbf":"',143,':serif; font-weight:bold',72,'link":"','text-decoration:none',72,'error',74,'10pt; ',145,'; ','background-color',':#FFFFCC',68,':1px',66,'1px solid',' #CC0000',72,'blank','":"','display:inline-block','; ','overflow:hidden',66,'0px none; width:0px; height',69,'spacer','":"',169,'","#jsMath_hiddenSpan":"','visibility',':','hidden','; ','position:absolute','; top:0px',';left:0px',54,'; text-indent:0px","#','jsMath_message','":"','position:fixed','; bottom:1px; ','left:2px; ',159,':#E6E6E6','; border:solid 1px #959595; margin:0px; padding:','1px 8px','; z-index:102; color',': black','; font-size:','small; ','width:auto',';","#','jsMath_panel','":"'! ,190,'; bottom:1.5em; right:1.5em','; padding:.8em 1.6em; ',15! 9,':#DDD DDD; border:outset ','2px; z-index:103; ',201,'; color:black',199,'10pt; font-style:normal","#',203,' .disabled":"color:#888888","#',203,' .infoLink',74,'85%","#',203,' *":"','font-size:inherit; font-style:inherit; font-family:inherit',54,'","#',203,' div":"',159,':inherit; color:inherit;","#',203,' span":"',159,229,203,' td','":"border:0px; padding:0px; margin:0px; background-color:inherit; color:inherit;","#',203,' tr',236,203,' table',236,'jsMath_button','":"',190,191,'right:2px; ',159,':white',195,'0px 3px 1px 3px',197,':black; ',152,199,'x-small; ',201,'; cursor:hand;","#',243,222,'padding:0px',66,'0px; margin:0px',54,'; ',223,'","#jsMath_global":"',145,';","#jsMath_float','":"',183,184,'; left:0px; max-width:80%; z-index:101; ',201,'; height:auto',269,' .drag":"',159,209,'1px; height:12px',199,'1px',269,' .close":"',159,':#E6E6E6',66,'inset 1px; width:8px; height:8px; margin:1px 2px',269,' .source":"',159,':#E2E2E2',66,'outset 1px; ',201,275,68,':8px 15px; ',143,':cour! ier, fixed',199,'90%","#jsMath_noFont .message',57,': center',207,'border:3px solid #DD0000; ',159,':#FFF8F8; color: #AA0000',199,'small; ',201,202,'jsMath_noFont .link','":"',261,' 5px 2px 5px',66,'2px outset; ',159,':#E8E8E8; color:black',199,'80%; ',201,258,'jsMath_PrintWarning',' .message',57,':center',207,'border:3px solid #DD0000; ',159,': #FFF8F8; color: #AA0000',199,'x-small; ',201,';","@media print":"#',243,' {display:none','}\\n#jsMath_Warning',338,'}","@media screen":"#',325,338,'}"},Element',':function(','A','){return ',6,15,16,'("jsMath_"+A)},','BBoxFor',345,'A','){this.','hidden.innerHTML','=\'<nobr><','span class="','typeset"><',358,'scale">\'+A+"</span></span></nobr>";var B={w:this.',181,'.offsetWidth',',h:this.',181,'.offsetHeight','};this.',356,'="";return B},EmBoxFor',345,'B){var A=',6,'Global.cache.R;if(!A[this.em]){A[this.em]={}}if(!A[this.em][B]){var C=this.BBoxFor(B);','A[this.em][B]={w:C.w/this.em,h:C.h/this.em}}return A[this.em][B]},','EmBoxForItali! cs',345,371,6,373,'if(B.match(/<i>|class=\\"(icm|italic|igreek! |iaccent )/i)){C.w=C.Mw=','this.BBoxFor','(B+',6,'Browser.','italicString',').w-',6,384,'italicCorrection','}',374,'Init',':function(){','if(',6,'Setup.inited','!=1){',0,6,396,'){',6,'Setup.','Body()}if(',6,396,'!=1){if(',6,396,'==-100','){return }',23,'It looks like jsMath failed to set up properly (error code "+',6,396,'+"). I will try to keep going, but it could get ugly.");',6,396,'=1}}this.em=this.CurrentEm();','var A=',6,'Global.cache','.B;',0,'A[this.em]){A[this.em]={};','A[this.em].','bb=',381,'("x");','var C=',426,'bb.h;',426,'d=',381,'("x"+',6,'HTML.Rule(1,','C/',6,'em)).h-C;if(',6,384,385,'){',426,'ic=',6,352,'(',6,384,385,').w}}',6,384,389,'=',426,'ic;var F=',426,'bb;var D=F.h;var E=',426,'d;this.h=(D-E)/this.em;this.d=E/this.em;this.hd=this.h+','this.d;this.',403,'TeXfonts','();var B=this.EmBoxFor(\'<',358,113,'">M</span>\').w/2;this.TeX.M_height=B*(26/14);this.TeX.h=this.h;this.TeX.d=',465,'TeX.hd=this.hd;this.Img.Scale();',0,'this.initialized',355,403,'Sizes','();this! .','Img.UpdateFonts()}this.p_height=(','this.TeX.cmex10[0].','h+',481,'d)/0.85;',475,'=1},ReInit',393,'if(this.','em!=this.CurrentEm()){this.Init()}},CurrentEm',393,420,381,'(\'<span style="\'+',6,384,'block+\';','width:13em;height:1em','"></span>\').','w/13;if(A>0',347,'A}return ',381,'(\'<img src="\'+',6,167,'+\'" style="',497,'"/>\').w/13},Loaded',393,'if(',9,8,'B=["Process","ProcessBeforeShowing","ConvertTeX","ConvertTeX2","ConvertLaTeX","ConvertCustom","CustomSearch","Synchronize","Macro","document"];','for(var A=0;A<','B','.length;A++){','if(',9,'[B[A]]){','delete ',9,'[B[A]]}}}if(',9,355,'Insert(jsMath,',9,')}',9,'=null;',6,7,'=1},Add',345,'C,A){for(var B in A){','C[B]=A[B]}},Insert',345,534,'if(C[B]&&typeof (A[B])=="object"&&(','typeof (C[B])=="','object"||',539,'function")){this.Insert(C[B],A[B])}',29,'C[B]=A[B]}}},Package',345,'B,A',355,'Insert(B.prototype,A)}};',6,'Global={isLocal:1,cache:{','T:{},D:{},R:{},B',':{}},ClearCache',393,6,422,'={',551,':{}}},GoGlobal'! ,345,371,'String(',6,1,'.','location);var C','=(',6,'isCHMmode! ','?"#": "?");if(B){A=A.replace(/\\?.*/,"")+"?"+B}',6,'Controls.','Reload(',6,'root+"jsMath-','global.html"+C+escape(A))},Init',393,'if(',6,'Controls.cookie.','global=="always"&&!',6,'noGoGlobal','){if(',39,'accentColorName',411,0,6,1,'){',6,1,'=',1,'}',6,571,7,'=1;',6,571,'defaults.hiddenGlobal=null;this.GoGlobal(',6,571,'SetCookie(2))}},Register',393,420,6,1,'.parent;',0,6,'isCHMode){',6,568,'=(',6,1,'.','location.','protocol=="mk:")}try{',0,6,568,355,'Domain()}if(A',2,'&&A.',6,'isGlobal){A.',6,'Register(',6,1,')}}catch(B){',6,582,'=1}},Domain',393,'if(',39,'appName=="Microsoft Internet Explorer"&&',6,37,'=="mac"&&',39,'userProfile','!=null',411,'if(',1,'==parent',411,'var B=',6,15,'domain;try{while(true){try{if(parent.',15,'title',648,'){return }}','catch(A){}',0,15,'domain.match(/\\..*\\./)){break}',6,15,'domain=',6,15,'domain.replace(/^[^.]*\\./,"")}}',662,6,15,668,'B}};',6,'Script={request:null,Init',393,'if(!(',6,579,'asynch&&',6,579,'progress',')){if(',1,'.XMLHttpRequest','){! try{','this.request','=new XMLHttpRequest}catch(C){}if(',691,'&&',6,'root.match','(/^file:\\/\\//)){try{',691,'.open("GET",',6,'root+"',6,'js",false);',691,'.send(null)}catch(','C){',691,'=null;if(',1,'.postMessage',355,'mustPost=1;',6,1,'.addEventListener("message",',6,'Post.','Listener,false)}}}}',0,691,'&&',1,'.','ActiveXObject',8,'A=["MSXML2.XMLHTTP.5','.0","MSXML2.XMLHTTP','.4',727,'.3',727,'","Microsoft.XMLHTTP"];','for(var B=0;B<','A.length&&!',691,';B++){try{',691,'=new ',724,'(A[B])}catch(C){}}}}',0,691,'||',6,403,'domainChanged',355,'Load=this.delayedLoad;this.needsBody=1}},Load',345,'B,A){','if(A){',6,'Message.Set("Loading "+','B);',6,'Script.','Delay(1);',6,'Script.Push(','this,"xmlRequest",B',');',6,759,6,'Message',',"Clear")}',29,6,759,760,')}},xmlRequest',345,'url){','this.blocking','=1;try{',691,699,'url,false);',691,705,'err){',774,'=0;if(',6,'Translate.','restart&&',6,'Translate.asynchronous){return""}throw"jsMath can\'t load the file \'"+url+"\'\\','nMess! age: "+err.message}if(',691,'.status',648,'&&(',691,791,'>=400! ||',691, 791,'<0)){',774,'=0;if(',6,785,'restart&&',6,788,'nError status: "+',691,791,'}',0,'url','.match(/\\.js$/)){','return(',691,'.responseText',')}var tmpQueue','=this.queue;this.queue','=[];',6,1,'.eval(',691,816,');',774,'=0;','this.queue=this.queue.concat(','tmpQueue);this.Process();return""},cancelTimeout:30*1000,blocking:0,cancelTimer:null,needsBody:0,queue:[],Synchronize',345,'A,B){','if(typeof (','A)!="string"){',6,759,'null,A,B)}',29,6,759,6,1,',"eval",A)}},Push',345,'A,C,B',355,'queue[','this.queue.length',']=[A,C,B];if(!(',774,'||(this.needsBody&&!',6,15,'body))){this.Process()}},Process',393,'while(',847,'&&!',774,8,'C=this.queue[0];this.queue=this.queue.slice(1);',420,'this.SaveQueue();var B=C[0];var E=C[1];var D=C[2];if(B){B[E](D)}',29,'if(E){E(D)}}this.','RestoreQueue','(A)}},SaveQueue',393,'var A',818,'=[];return A},',865,345,'A){',828,'A)},delayedLoad',345,'A',355,'Push(','this,"','startLoad','",A)},',881,345,'A',8,'B=',6,15,21,'("iframe");B.style.',179,'="',181,! '";B.style.position="absolute";B','.style.width="','0px";B','.style.height="','0px";if(',6,15,'body.firstChild','){',6,15,'body.insertBefore(','B,',6,15,902,')}',29,6,15,'body','.appendChild(','B)}',774,'=1;this.','url=A;if(A.substr(0,',6,'root.length',')==',6,'root){A=A.substr(',6,922,')}',6,753,'A);this.cancelTimer=setTimeout("',6,756,'cancelLoad','()",this.cancelTimeout);',488,'mustPost){','B.src=',6,717,881,'(A,B)}',29,'if(A',813,938,6,574,'loader.html"}',29,938,'this.url}}},','endLoad',345,'A){if(this.cancelTimer){clearTimeout(this.cancelTimer);this.cancelTimer=null}',6,717,953,'();',6,765,'.Clear();if(A!="cancel"){',774,'=0;this.Process','()}},Start',393,'this.tmpQueue',818,'=[]},End',393,828,967,');',520,967,'},',934,345,'B,',955,'if(B==null){B="Can\'t load file"}if(A==null){A=2000}',6,765,'.Set(B);setTimeout(\'',6,756,953,'("cancel")\',A)},Delay',345,'A){',774,'=1;setTimeout("',6,756,'endDelay','()",A)},',995,393,774,964,'()},','imageCount',':0,WaitForImage',345,'B)! {',774,919,1002,'++;',488,'img==null',355,'img=[]}',420,'new I! mage',47 9,'img[this.img.length]=A;A.onload=function(){if(--',6,756,1002,'==0){',6,756,995,'()}};A.onerror=A.onload;A.onabort=A.onload;A.src=B},Uncompress',345,'data){for(var k=0;k<data.length;k++){var d=data[k];var n=d.length;for(var i=0;i<n;i++){',832,'d[i])=="number"){d[i]=d[d[i]]}}data[k]=d.join("")}',1,822,'data.join(""))}};',6,'Post={',1,':null,Listener',345,'D){if(D.source!=',6,717,1,411,'var E=D.origin;',420,15,'domain;if(','E==null||E==""){E','="localhost"}if(','A==null||A==""){A',1048,'E!=A||!','D.data.substr(','0,6).match(/jsM(CP|LD):/)){return }var B=',1052,'6,3).replace(/ /g,"");',430,1052,'10);if(',6,'Post.Commands[B',']){(',6,1060,'])(C)}},Commands:{SCR',345,'message){',6,1,822,'message)},ERR',345,'A){',6,756,934,'(A,3000)},BGN',345,'A){',6,756,'Start()},END',345,'A){',751,6,756,'End()}',6,756,953,'()}},',881,345,'A,B',355,1,'=B.contentWindow;',0,'A',813,'return ',6,'root+',501,6,574,'loader-post.html?"+A},',953,393,'this.',1,'=null}};',6,765,'={',167,':null,message:nu! ll,text:null,clear:null,Init',393,0,6,15,'body||!',6,579,686,411,'if(',6,403,'stylesReady){','this.message','=',6,'Setup.DIV("message",{visibility:"hidden','"})}',29,1131,'=',6,1134,'",position:"absolute",','bottom:"1px",left:"2px",','backgroundColor',':"#E6E6E6",border:"solid 1px #959595",margin:"0px",padding:"1px 8px",zIndex:102,color:"black",fontSize:"small",width:"auto"})}','this.text','=',6,15,'createTextNode','("");',1131,916,1145,');',1131,'.onmousedown=',6,785,'Cancel},Set',345,750,'if(this.clear){clearTimeout(this.clear',');this.clear=null}if(',6,579,686,'){',0,1145,355,'Init();',0,1145,661,'if(',6,384,'textNodeBug','){',1131,'.innerHTML','=B}',29,1145,'.nodeValue','=B}','this.message.style.',179,'="visible";',751,1187,'cursor="pointer";',0,1187,'cursor){',1187,'cursor="hand"}',1131,'.title=" Cancel Processing of Math "}',29,1187,'cursor="";',1131,'.title=""}}',29,'if(B.substr(0,8)!="Loading "){',6,1,791,'=B}}},Clear',393,1162,')}this.clear=setTimeout("',6,765,'.do! Clear()",1000)},doClear',393,488,'clear',355,'clear=null;',6,1! ,791,'=" ";',488,'text){',1145,1185,'=""}if(',1131,'){',1187,179,'="',181,'"}}},Blank',393,488,167,'||!',6,15,'body',411,'this.blank','=',6,403,'DIV("',167,'",{position:(',6,384,'msiePositionFixedBug','?"absolute":"fixed"),top:"0px",left:"0px",bottom:"0px",right:"0px",zIndex:101,',1143,':"white"});if(',6,384,'msieBlankBug){',1246,1181,'=" ";',1246,896,'110%";',1246,898,'110%"}},UnBlank',393,488,167,'){',6,15,'body.removeChild(',1246,')}',1246,'=null}};',6,'Setup={',7,':[],DIV',345,'D,B',8,'C=',6,15,21,'("div");C.id="jsMath_"+D;','for(var A in ','B){C.style[A]=B[A]}',0,6,15,'body.hasChildNodes){',6,15,'body',916,'C)}',29,6,15,906,'C,',6,15,902,')}return C},Script',345,750,488,7,'[B]){return }',29,'this.',7,'[B]=1}',0,'B.match("^([a-zA-Z]+:/?)?/")){B=',6,'root+B}',6,756,'Load(B,A)},Hidden',393,6,181,'=this.DIV("Hidden",{',179,':"',181,1141,'top:0,left:0,border:0,padding:0,margin:0});',6,'hiddenTop=',6,181,';return },Source',393,'if(',6,'Autoload','&&',6,1347,'.root){',6,'root=',6,! 1347,'.','root}',29,6,'root="";',420,6,15,'getElementsByTagName("','script");',751,733,'A.','length;B++){','var D=A[B].src;if(D&&D.match("(^|/|\\\\\\\\)',6,'js$")){',6,1353,'D.','replace(/',6,'js$/,"");break}}}}if(',6,'root.charAt(','0)=="\\\\"){',6,1353,6,'root.replace','(/\\\\/g,"/")}if(',6,1380,'0)=="/"){if(',6,1380,'1)!="/"){if(',6,15,620,'port){',6,'root=":"+',6,15,620,'port+',6,1357,6,'root="//"+',6,15,620,'host+',6,1357,6,1353,6,15,620,'protocol+',6,1357,29,0,6,696,'(/^[a-z]+:/i)){var D=','new String(',6,15,565,'=new RegExp("/[^/]*/\\\\.\\\\./");',6,1353,'D.replace(new RegExp("[^/]*$"),"")+',6,'root;while(',6,696,'(C)){',6,1353,6,1385,'(C,"/")}}}',6,'Img.',1353,6,701,'fonts/";',6,167,'=',6,701,167,'.gif";this.Domain()},Domain',393,'try{',6,15,'domain}catch(D',411,'var C="";',420,6,15,1046,6,696,'("://([^/]*)/")){C=RegExp.$1}C=C.replace(/:\\d+$/,"");if(C==""||C==A',411,'if(',39,'appName=="Microsoft Internet Explorer"&&',6,37,'=="mac"&&',39,'onLine&&',39,647,'&&',6,15,! 'all',411,'C=C.split(/\\./);A=A.split(/\\./);if(C.length<2||A.! length<2 ||','C[C.length-','1',']!=A[A.length-','1]||',1488,'2',1490,'2]){this.','DomainWarning','();return }var E=',1488,'2]+"."+',1488,'1];for(var B=3;B<=C.length&&B<=A.',1369,'if(',1488,'B',1490,'B]){break}E=',1488,'B]+"."+E}',6,15,668,'E;this.',746,'=1},',1496,393,23,'In order for jsMath to be able to load the additional components that it may need, the ',6,'js file must be ',7,' from a server in the same domain as the page that contains it. Because that is not the case for this page, the',25,'displayed here may not appear correctly.")},','EncodeFont',345,'C',8,'B=',6,'TeX[C];if(B','[0].c',648,411,514,'128;A++){var D=B[A];B[A]=D[3];if(B[A]==null){B[A]={}}B[A].w=D[0];B[A].h=D[1];if(D[2]!=null){B[A].d=D[2]}B[A].c=',6,'TeX.encoding[A]}},Fonts',393,733,6,'TeX.fam','.',1369,420,6,1543,'[B];if(A',355,1526,'(A)}}},TeXfont',345,'C',8,'B=',6,1532,'==null',411,420,6,'EmBoxFor(\'<span class="\'+C+\'">\'+B[65].c','+"</span>");B.hd=A.h;B.dh=0.05;B.d=',6,1563,'+',6,438,'B.hd)+"</span>").h-B.h! d;B.h=B.hd-B.d;','if(C=="',130,'"){B.skewchar=','127}',29,1571,134,1573,'48}}},',467,393,514,6,1543,516,'if(',6,1543,'[A]){this.TeXfont(',6,1543,'[A])}}},Sizes',393,6,'TeXparams','=[];var B;var A;for(A=0;A<',6,47,516,6,1595,'[A]={}}for(B in ',6,'TeX){',832,6,'TeX[B])!="object"){for(A=0;A<',6,47,516,6,1595,'[A][B]=',6,47,'[A]*',6,'TeX[B]/100}}}},Styles',345,'A){',0,'A){A=',6,49,';A[".typeset .scale"]="font-size:"+',6,579,'scale+"%";this.stylesReady=1}',6,759,880,'AddStyleSheet','",A);if(',6,384,'styleChangeDelay','){',6,759,6,'Script,"Delay",1)}},',1632,345,'D',8,'B=',6,15,1364,'head")[0];var A="";for(var E in D){A+=E+" {"+D[E]+"}\\n"}if(',6,15,'createStyleSheet){B.insertAdjacentHTML("beforeEnd",\'<','span style="','display:none">x</span><style type="text/css">\'+A+"</style>")}',29,430,6,15,21,'("style");C.type="text/css";C',916,6,15,1149,'(A));B',916,'C)}},Body',393,488,'inited',411,'this.inited=-','1;',6,403,'Hidden();',1673,'2;',6,384,1171,1673,'3;if(',6,579,167,'){',6,76! 5,'.Blank()}',1673,'4;',6,403,'Styles();',1673,'5;',6,571,1171! ,1673,'6 ;',6,759,6,'Setup,"User","pre-font");',1673,'7;',6,759,6,'Font,"Check");if(',6,'Font.register.length){',6,759,6,'Font,"LoadRegistered")}this.inited=1},User',345,'A){if(',6,'Setup.UserEvent[A',']){(',6,1723,'])()}},UserEvent:{"pre-font":null,onload:null}};',6,'Update={',467,345,'D){',1294,'D){for(var B in D[A]){for(var C in D[A][B]){',6,'TeX[A][B][C]=D[A][B][C]}}}},TeXfontCodes',345,'C){',1294,'C){',733,'C[A].',1369,6,'TeX[A][B].c=C[A][B]}}}};',6,'Browser={allowAbsolute:1,allowAbsoluteDelim:0,','separateSkips',':0,valignBug:0,operaHiddenFix:"",','msieCenterBugFix',':"",','msieInlineBlockFix',':"",msieSpaceFix:"",imgScale:1,renameOK:1,',1636,':0,delay:1,version:0,','TestSpanHeight',393,6,356,'=\'<span><','span style="\'+this.block','+\';height:2em;width:','1px"></span></span>\';var B=',6,'hidden.firstChild;',420,'B.firstChild;this.','spanHeightVaries','=(B',366,'>=A',366,'&&B',366,'>0);','this.spanHeightTooBig','=(B',366,'>A',366,');',6,356,'=""},','TestInlineBlock',393,'this.! block','="display:-moz-inline-box";','this.hasInlineBlock','=',6,'BBoxFor(\'<span style="\'+this.block','+\';width:10px;height:5px"></span>\').w>0;if','(',1789,'){',6,'styles[".typeset .',167,'"]=',6,1798,167,'"].replace(/',169,'/,',1787,');',6,1798,175,'"]=',6,1798,175,1804,169,'/,"")}',29,1787,'="',169,'";',1789,'=',6,1792,1793,'(!',1789,661,1787,'+=";',171,'";',420,6,352,'("x").h;this.mozInlineBlockBug=',6,1792,'+";height:"+A+\'px;width:1px','"></span>x','<',1761,'+";height:"+A+"px;width:1px;vertical-align:-"+A+\'px',498,'h>2*A;this.widthAddsBorder=',6,1792,'+\';',171,';height:1px;width:10px',';border-left:','10px solid',498,'w>10;','this.msieBorderBug','=',6,1792,1842,1843,'\').h!=',6,1792,1842,1854,164,1843,'\').h;','this.blankWidthBug=',1858,'||',6,1792,1762,'0px',498,'h==0},','TestRenameOK',393,6,356,'="<span></span>";',420,6,1765,'A.setAttribute("name","','jsMath_test','");this.renameOK=(',6,15,'getElementsByName("',1890,'").length>0);',6,356,1784,'TestStyleChange',! 393,6,356,'=\'<span ID="',1890,'">x</span>\';var B=',6,1765,42! 0,'B',36 3,';',6,403,1632,'({"#',1890,74,'200%"});this.',1636,'=(B',363,'==A);',6,356,1784,'VersionAtLeast',345,371,1426,'this.version',').split(".");','B=',1426,'B',1932,'if(B[1]==null){B[1]="0"}return A[0]>B[0]||(A[0]==B[0]&&A[1]>=B[1])},Init',393,6,27,'="unknown";this.',1785,479,1756,479,1881,479,1900,479,'MSIE',479,'Mozilla',479,'Opera',479,'OmniWeb',479,'Safari',479,'Konqueror();if(','this.allowAbsoluteDelim','){',6,'Box.DelimExtend=',6,'Box.DelimExtendAbsolute;',6,'Box.Layout=',6,'Box.LayoutAbsolute}',29,6,'Box.DelimExtend=',6,'Box.DelimExtendRelative;',6,'Box.Layout=',6,'Box.LayoutRelative}',488,1748,'){',6,'HTML.Place=',6,'HTML.','PlaceSeparateSkips',';',6,'Typeset.prototype.','Place=',6,1990,1987,'}},MSIE',393,488,1768,'&&!',1776,'){',6,27,'="MSIE";if(',6,37,'=="pc"){this.','IE7=(',1,689,648,');','this.quirks','=(',6,15,'compatMode=="BackCompat");this.msieStandard6=!',2013,'&&!this.IE7;',1961,919,1748,'=1',';this.buttonCheck=1;this.','msieBlankBug=1;this.','msieAccentBug',91! 9,'msieRelativeClipBug','=1;this.msieDivWidthBug=1;this.',1255,919,'msieIntegralBug',919,'waitForImages',919,'msieAlphaBug','=!this.IE7;this.','alphaPrintBug',2037,1750,'="position:relative; ";this.',1752,'=" ',169,';";this.msieTeXfontBaselineBug=!',2013,';',1858,'=',1872,'1;this.msieSpaceFix=\'<',1654,169,'"></span>\';',6,'Macro("joinrel","\\\\mathrel{\\\\kern-5mu}"),',6,'Parser.prototype.mathchardef.','mapstocharOrig','=',6,2058,'mapstochar;',520,6,2058,2063,6,'Macro("mapstochar","\\\\rlap{\\\\',2059,'\\\\,}\\\\kern1mu"),',6,1798,'arial"]="',143,': \'Arial unicode MS\'";',0,'this.IE7||',2013,'){',6,'styles["#',188,'"]=',6,2082,188,1804,190,'/,"',183,'").',1376,201,'/,"");',6,2082,203,'"]=',6,2082,203,1804,190,'/,"',183,'").',1376,201,'/,"");',6,2082,243,'"]="width:','1px; "+',6,2082,243,1804,190,'/,"',183,'").',1376,201,'/,"");',6,1,'.attachEvent("','onscroll",',6,571,'MoveButton',');',488,'IE7){',6,1,2129,'onresize",',6,571,2133,')}this.msieMoveButtonHack=this.IE7}',6,20! 82,313,'"]+=" ','display: inline-block',';";',6,1798,175,'"]='! ,6,1798, 175,1804,169,'/,"");',6,49,'[".tex2math_div"]=',6,49,'["div',56,'"]+"; width: 100%; ',2149,'";',6,49,'[".typeset"]+="; letter-spacing:0";if(','screen.deviceXDPI','&&','screen.logicalXDPI','&&',2174,'!=',2176,355,'imgScale*=',2176,'/',2174,';',6,579,'alpha=0}this.',385,'="<i>x</i>";',6,'EmBoxFor=',6,375,'}',29,'if(',6,37,'=="mac"){this.msieAbsoluteBug',919,'msieButtonBug',2029,2025,'quirks=1;',6,403,'Script("jsMath-msie-mac.js");',6,'Parser.prototype.macros.angle=["Replace","ord",\'<font face="Symbol">‹</font>\',"normal"];',6,2082,203,2114,'42em; "+',6,2082,203,1804,201,'/,"");',6,579,'printwarn=0}}',6,'Macro("not","\\\\mathrel{\\\\rlap{\\\\kern3mu','/}}")}},',1952,393,'if(',6,181,'.ATTRIBUTE_NODE){',6,27,'="',1952,'";if(',6,37,2007,2038,'=1}',1961,'=1;',6,2082,243,'"]=',6,2082,243,1804,'cursor:hand','/,"cursor:pointer");',6,2082,313,'"]=',6,2082,313,1804,2255,'/,"cursor:pointer");',6,2227,'/}}");if(',39,'vendor=="Firefox"){',1931,'=',39,'vendorSub}',29,'if(',39,'userAge! nt.match','(" Firefox/([0-9.]+)([a-z ]|$)")){',1931,'=RegExp.$1}}}},',1956,393,'if(',39,'accentColorName){',6,27,'="',1956,'";','this.allowAbsolute','=',1789,';',1961,'=',2293,';this.valignBug=!',2293,2024,1178,'=1;',6,'noChangeGlobal=1;',0,1789,'){',6,'Setup.Script("jsMath-old-browsers.js")}}},','Opera',393,'if(',1776,'){',6,27,'="Opera";',420,39,2279,'("Opera 7");',2293,'=0;this.delay=10;this.operaHiddenFix="[Processing]";',751,6,2311,1958,393,'if(',39,'appVersion',41,1958,'\\//)){',6,27,'="',1958,'";',420,39,'user'], - ['Agent','.match','("Safari/([0-9]+)");A=(A)?A[1]:400;','for(var B=0;B<','jsMath.','TeX.fam','.length',';B++){if(',4,5,'[B]&&',4,'TeX[',4,5,'[B]]){',4,12,4,5,'[B]].dh=0.1}}',4,'TeX.','axis_height','+=0.05;',4,22,'default_rule_thickness','+=0.025',';this.allowAbsoluteDelim=','A>=125;this.safariIFRAMEbug=A>=312&&A<412;this.safariButtonBug=A<412;this.safariImgBug=1;this.textNodeBug=1;this.buttonCheck=1;this.styleChangeDelay=1}},','Konqueror',':function','(){if(','navigator.product','&&',34,1,'("',31,'")){',4,'browser="',31,'";this.allowAbsolute=0',29,'0;if(navigator.userAgent',1,'(/',31,'\\/(\\d+)\\.(\\d+)/)){if(RegExp.$1<3||(RegExp.$1==3&&RegExp.$2<3)){this.separateSkips=1;this.valignBug=1;',4,'Setup.Script("jsMath-','old-browsers.js")}}',4,'Add(',4,'styles,{".typeset .cmr10','":"font-family: jsMath-','cmr10',', jsMath ','cmr10, serif','",".typeset .','cmbx10',58,63,60,63,', jsMath-cmr10, jsMath cmr10",".typeset .','cmti10',58,69,60,69,68,'cmmi10',58,75,60,75,62,'cmsy10',58! ,81,60,81,62,'cmex10',58,'cmex10, jsMath cmex10','"});',4,'Font.testFont','="jsMath','-',89,'"}}};',4,'Font={testFont:"jsMath-',87,'",','fallback',':"symbol",register:[],message:"<b>No jsMath TeX fonts found</b> -- using',' image fonts instead','.<br/>\\nThese',' may be slow and might not print well.<br/>\\nUse the jsMath control panel to get additional information','.",','extra_message',':\'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>Using',103,'. This',105,'.\',','print_message',':"To print higher-resolution math symbols, click the<br/>\\n<b>Hi-Res Fonts for Printing</b> button on',' the jsMath control panel.<br/>\\n",','alpha_message',':"If the math symbols print as black boxes, turn off <b>image alpha channels</b><br/>\\nusing the <B>Options</B> pane of',115,'Test1',32,'(C',',F,D,E){if(F==null){F=124}if(D==null){D=2}if(E==null){E=""}var B=jsMath.BBoxFor(\'<span style="font-family: \'+E+C+\', serif">\'+jsMath.TeX[C][F].c+"</span>");var A=j! sMath.BBoxFor(\'<span style="font-family: serif">\'+jsMath.TeX! [C][F].c +"</span>");return','(B.w>D*A.w&&B.h!=0)},Test2',32,'(C',122,'(A.w>D*B.w&&B.h!=0)},CheckTeX',':function(){var A=',4,'BBoxFor(\'<span style="font-family',': \'+',4,92,'+\', serif">\'+',4,22,87,'[1','].c+"</span>");',4,'nofonts=((A.w*3>A.h||A.h==0)&&!this.Test1("cmr10','",null,null,"jsMath-"));if(!',4,'nofonts){','return }if(',4,'browser!="Mozilla"||(',4,'platform','=="mac"&&(!',4,'Browser.VersionAtLeast(','1.5)||',4,152,'3)))||(',4,149,'!="mac"&&!',4,152,'3))){A=',4,130,': ',87,', serif">\'+',4,22,87,'[1',139,4,141,'"));if(!',4,144,4,52,'BaKoMa-fonts.js")}}},Check',128,4,'Controls.','cookie;this.CheckTeX();if(',4,144,'if(A.autofont','||A','.font=="tex"){','A.font=this.',101,';if(A.warn){',4,'nofontMessage=1;A.warn=0;',4,183,'SetCookie(0);if','(',4,'window.NoFontMessage','){',4,200,'()}else{','this.Message(this.','message)}}}}else{',187,'){A.font="tex"}if(A',189,'return }}if(',4,'noImgFonts){','A.font="unicode"}if(A','.font=="unicode','"){',4,52,101,'-"+',4,149,'+".js");',4,'B! ox.TeXnonfallback=',4,'Box.TeX',';',4,226,'=',4,'Box.TeXfallback;return }','if(!A.print&&A.printwarn){this.','PrintMessage','((',4,'Browser.','alphaPrintBug&&',4,183,'cookie.alpha)?this.',113,'+this.',116,':this.',113,')}if(',4,237,'waitForImages){',4,'Script.','Push(',4,'Script,"WaitForImage",',4,'blank)}if(A.font=="symbol"){',4,52,101,'-symbols.js");',4,'Box.TeXnonfallback=',4,226,';',4,226,'=',4,232,4,'Img.SetFont','({cmr10',':["all"],',75,275,81,275,87,275,63,275,69,':["all"]});',4,'Img.LoadFont','("cm-fonts")},Message',32,'(A){if(',4,'Element("Warning',40,'return }var ','B=',4,'Setup.DIV("','Warning','",{});B.innerHTML=\'<center><table><tr><td><div ','id="jsMath_noFont"><div ','class="message">\'+A','+\'<div style="text-align:left"><span style="float:left; margin: 8px 0px 0px 20px"><span onclick="',4,183,'Panel()" ','title=" Open ','the ','jsMath Control Panel',' " class="link">',308,'</span></span','><span style="margin: 8px 20px 0px 0px; float:right"><span onclick="'! ,4,'Font.','HideMessage','()" title=" Remove this font warning! message ',309,'Hide this Message',311,'></div><div style="height:6px"></div><br clear="all"/></div></','div><div style="width:22em; height:1px"></div></td></tr></table></center><hr/>\'},',315,128,4,292,'");if(A','){A.style.display="none"}},',234,32,290,4,'Element("','PrintWarning',40,294,'B=',4,297,333,299,301,'+\'</',321,'Register',32,'(H,B){if(typeof (H)=="string"){H={name:H}}if(!',4,'Setup.inited','&&!B){','this.register','[',350,6,']=H;',294,'I=H.name;var A=I.replace(/10$/,"");var F=',4,5,6,';if(H.prefix==null){H.prefix=""}if(!H.style){H.style="font-family: "+H.prefix+I+", serif"}if(!H.styles){H.styles={}}if(!H.macros){H.macros={}}',4,5,'[F]=I;',4,22,'famName[I]=F;H.macros[A]=["HandleFont",F];',4,55,4,'Parser.prototype.macros,H.macros);H.styles[".typeset ."+I]=H.style;',4,'Setup.Styles(H.styles);if(',4,'initialized){',4,252,'Push(',4,'Setup,"TeXfont",I)}var C=',4,183,'cookie;var E=!',4,'nofonts&&H.test(I,H.testChar,H.testFactor,H.prefix);if(E&&C',189,'if(H.tex){H.tex(I,F,H)}retu! rn }if(!E&&C.warn&&C.font=="tex"&&!',4,144,'if(!C.fonts',1,'("/"+I+"/")){C.fonts+=I+"/";',4,183,197,'(!',4,292,40,205,107,')}var G=',4,332,'ExtraFonts");if(G){if(G','.innerHTML','!=""){G',405,'+=","}G',405,'+=" "+H.prefix+I}}}if(C',214,'"||',4,212,'if(H.',101,'){H.',101,'(I,F,H)}',294,'D={};if(C.font=="symbol"&&H.symbol!=null){D[I]=H.symbol(I,F,H)}else{D[I]=["all"]}',4,273,'(D);',4,287,'(I);if(',4,'initialized){',4,252,'Push(',4,'Img,"Scale");',4,252,'Push(',4,'Img,"UpdateFonts")}},LoadRegistered',128,'0;while(A<',350,6,'){this.Register(',350,'[A++],1)}',350,'=[]},Load',32,'(A){',4,'Setup.Script(this.URL(A))},URL',32,'(A){return ',4,'Img.root+A+"/def.js"}};',4,'Controls={cookie:{scale:100,font:"tex",autofont:1,scaleImg:0,alpha:1,warn:1,fonts:"/",printwarn:1,stayhires:0,button:1,progress:1,asynch:0,blank:0,print:0,keep:"0D",global:"auto",hiddenGlobal:1},cookiePath:"/",','noCookiePattern',':/^(file|mk):$/,Init',32,'(){this.panel=',4,297,'panel",{display:"none"});if(!',4,237,'! msieButtonBug){this.Button',204,'setTimeout("',4,183,'Button()! ",500)}} ,Panel',32,'(){',4,'Translate.Cancel();if(this.loaded){this.Main',204,4,252,'delayedLoad(',4,'root+"jsMath-controls.html")}},Button',128,4,297,'button",{});A.',306,308,' ";A',405,'=\'<span onclick="',4,183,'Panel()">jsMath</span>\';if(!',4,'Global.','isLocal&&!',4,'noShowGlobal){A',405,'+=\'<span id="jsMath_global" ',306,'jsMath Global Panel " onclick="',4,497,'Show(1)">Global </span>\'}if(A.offsetWidth<30){A.style.width="auto"}if(!','this.cookie','.button',327,'MoveButton',32,'(){var C=',4,'Controls;if(!C.button){C.button=',4,332,'button")}if(C.button','){C.MoveElement(C.','button,3,2)}var B=20;var A=20;if(C.button){A=C.button.offsetHeight+6;B=A+5}if(C.panel',519,'panel,B,A)}},MoveElement',32,'(D,C,B){if(',4,237,'IE7){var A=document.body;D.style.right','="auto";D.style.','bottom',528,'left=A.clientWidth+A.scrollLeft-D.offsetWidth-C+"px";D.style.top=A.clientHeight+A.scrollTop-D.offsetHeight-B+"px"}else{','D.style.visibility="','hidden";',532,'visible"}},GetCookie',32,33! ,'this.defaults','==null){',538,'={}}',4,55,538,',',508,');this.userSet={};var C=',4,'document.cookie',';if(',4,'window.location','.protocol',1,'(this.',459,')){C=this.','localGetCookie','();','this.isLocalCookie','=1}if(C',1,'(/jsMath=([^;]+)/)){var D=unescape(RegExp.$1).split(/,/);',3,'D',6,';B++){var A=D[B].match(/(.*):(.*)/);if(A[2].match(/^\\d+$/)){A[2]=1*A[2]}',508,'[A[1]]=A[2];this.userSet[A[1]]=1}}},',558,32,'(){return ',4,552,'.search.substr(1)},SetCookie',32,'(F){var B=[];for(var E in ',508,'){if(',538,'[E]==null||',508,'[E]!=',538,'[E]){B[B',6,']=E+":"+',508,'[E]}}B=B.join(",");if(',560,'){if(F==2){return"','jsMath="+escape(B)}','this.','localSetCookie','(B,F)}else{B=escape(B);if(B==""){F=0}if(','this.cookiePath','){B+="; path="+',596,'}if(','this.cookieDomain','){B+="; domain="+',600,'}if(',508,'.keep!="0D"){var A={D',':1000*60*60*24',',W',606,'*7,M',606,'*30,Y',606,'*365};var D=new Date;D.setTime(D.getTime()+',508,'.keep.substr(','0,1)*A[',508,615,'1,1)]);B+=";! expires="+D.toGMTString()}if(B!=""){',4,549,93,'="+B;var C=',! 4,549,'; if(F&&!C',1,'(/jsMath=/)){alert("Cookies must be enabled in order to save jsMath options")}}}return null},',594,32,'(B,C){if(!C){',294,'A=String(',4,552,').replace(/\\?.*/,"");if(B!=""){A+="?',592,'if(A!=',4,552,'.href){this.Reload(A)}},Reload',32,'(A){if(!this.loaded){return }this.loaded=0;',4,348,'=-100;',4,497,'ClearCache();if(A){',4,552,'.replace(A)}else{',4,552,'.reload()}}};',4,'Click={CheckClick',32,'(A){if(!A){A=',4,'window.event}if','(A.altKey){',4,183,'Panel()}},CheckDblClick',32,'(B){if(!B){B=',4,661,'(!',4,'Click.DblClick){',4,'Extension.Require("double-click",1);var A=B;B={};for(var C in A){B[C]=A[C]}}',4,252,'Push(',4,'Click,"DblClick",[B,this.alt])}};',4,'TeX={thinmuskip:3/18,medmuskip:4/18,thickmuskip:5/18,x_height:0.430554,quad:1,num1:0.676508,num2:0.393732,num3:0.44373,denom1:0.685951,denom2:0.344841,sup1:0.412892,sup2:0.362892,sup3:0.288888,sub1:0.15,sub2:0.247217,sup_drop:0.386108,sub_drop:0.05,delim1:2.39,delim2:1,',23,':0.25,',27,':0.06,big_op_spacing1:! 0.111111,big_op_spacing2:0.166666,big_op_spacing3:0.2,big_op_spacing4:0.6,big_op_spacing5:0.1,integer:6553.6,scriptspace:0.05,nulldelimiterspace:0.12,delimiterfactor:901,delimitershortfall:0.5,scale:1,atom:["ord","op","bin","rel","open","close","punct","ord"],fam:["cmr10","',75,'","',81,'","',87,'","',69,'","","',63,'",""],famName:{cmr10:0,',75,':1,',81,':2,',87,':3,',69,':4,',63,':6},encoding:["À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","°","Ñ","Ò","Ó","Ô","Õ","Ö","·","Ø","Ù","Ú","Û","Ü","µ","¶","ß","ï","!",""","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b"! ,"c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","! r","s"," t","u","v","w","x","y","z","{","|","}","~","ÿ"],cmr10:[[0.625',',0.683],[0.','833',706,'778',706,'694',706,'667',706,'75',706,'722',706,'778',706,'722',706,'778',706,'722',706,'583',',0.694,0,{ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15}}],[0.556',',0.694],[0.','556',730,'833',730,'833',730,'278',',0.431],[0.','306',',0.431,0.194],[0.','5',730,'5',730,'5,0.628],[0.5',730,'5,0.568],[0.75',730,'444,0,0.17],[0.5',730,'722',738,'778',738,'5,0.528,0.0972],[0.903,0.683],[1.01',706,'778,0.732,0.0486],[0.278',',0.431,0,{','krn:{"108":-0.278,"76":-0.319}}],[0.278',',0.694,0,{','lig:{"96":','60}}],[0.5',730,'833',',0.694,0.194],[','0.5',',0.75,0.0556],[0.','833',767,'778',730,'278',760,'krn:{"63":0.111,"33":0.111},lig:{"39":34}}],[0.389',',0.75,0.25],[0.','389',775,'5,0.75],[','0.778,0.583,0.0833],[','0.278,0.106',',0.194],[0.','333',758,'lig:{"45":','123}}],[',780,'],[0.5',775,'5,0.644','],[0.5,0.644],[0.5,0.','644',! 790,'644',790,'644',790,'644],[0.5,0.644],[0.278',738,'278',740,'278,0.5',781,'778',',0.367,-0.133],[','0.472,0.5',781,'472',760,761,'62}}],[0.778',730,'75',',0.683,0,{krn:{"','116','":-0.0278,"','67',815,'79',815,'71',815,'85',815,'81',815,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}}],[0.','708',706,'722',706,'764',813,'88',815,'87',815,'65',815,'86',815,'89":-','0.0278}}],[0.','681',706,'653',',0.683,0,{','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67":-0.0278,"71":-0.0278,"81":-0.0278}}],[','0.785',706,'75',706,'361',813,'73":',842,'514',706,'778',813,'79',815,'67',815,'71',815,'81":-',842,'625',813,826,'917',706,'75',706,'778',813,'88',815,'87',815,'65',815,'86',815,'89":-',842,'681',813,'65','":-0.0833,"','111',815,'101',815,'97',815,'46',890,'44":-0.','0833}}],[0.','778,0.683',781,'736',813,'116',815,'67',815,'79',815,'71',815,'85',815,'81',815,826,'556',706,'722',813,'121',815,'101',890,'111',890,'114',8! 90,'97',890,'65',890,'117":-0.',900,'75',706,'75',',0.683,0,{i! c:0.','0 139,',847,'1.03',939,'0139,',847,'0.75',813,'79',815,'67',815,'71',815,'81":-',842,'75',939,'025,krn:{"101',890,'111',890,'114',890,'97',890,'65',890,934,900,'611',706,'278',775,'5',730,'278',775,'5',730,'278,0.668],[0.','278',760,761,'92}}],[0.5',758,'krn:{"118',815,'106":0.0556,"121',815,'119":-',842,'556,0.','694,0',',{krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}}],[0.','444',758,'krn:{"104',815,'107":-',842,'556',730,'444',738,'306',728,'12,"102":11,"108":13}}],[0.5',',0.431,0.194,{','ic:0.','0139,krn:{"','106":',842,'556',760,'krn:{"116',815,'117',815,'98',815,'121',815,'118',815,'119":-',842,980,'306,0.668',781,'528',760,'krn:{"97','":-0.0556,"','101',815,'97',815,'111',815,'99":-',842,'278',730,'833',758,'krn:{"116',815,'117',815,'98',815,'121',815,'118',815,'119":-',842,'556',758,'krn:{"116',815,'117',815,'98',815,'121',815,'118',815,'119":-',842,'5,0.431,0',994,992,'431,0.1! 94',994,'528',740,'392',738,'394',738,'389,0.615,0,{krn:{"121',815,'119":-',842,'556',758,'krn:{"119":-',842,'528',',0.431,0,{ic:0.',1010,'97',1033,'101',815,'97',815,'111',815,'99":-',842,'722',1092,1010,'101',815,'97',815,'111',815,'99":-',842,'528',738,'528',1008,'ic:0.',1010,'111',815,'101',815,'97',815,'46',890,'44":-0.',900,'444',738,'5',1092,'0278,',784,'124}}],[1',1092,'0278}],[0.','5',730,'5,0.668],[0.5,0.668]],',75,':[[0.615',939,'139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',900,'833',813,'127":0.167}}],[0.','763',939,1135,'krn:{"127":0.0833}}],[0.','694',813,1151,'742',939,'0757,',1155,'831',939,'0812,krn:{"61',1033,'59":-0.0556,"58":-0.0556,"127":0.','0556}}],[0.','78',939,'0576,',1155,'583',939,'139',1147,1168,'667',846,1155,'612',939,'11,krn:{"61',1033,1167,1168,'772',939,'0502,',1155,'64',1092,'0037,','krn:{"127":',842,'566',',0.694,0.194,{ic:0.','0528,',1155,'518',1008,'ic:0.0556','}],[0.444',760,'ic:0.0378,krn:{"',1167,1168,'406',758,'krn:{"12! 7":0.0556}}],[0.','438',1197,'0738,',1155,'497',1008,'ic:0.035! 9',',',1 210,'469',760,'ic:0.',1135,1155,'354',758,1210,'576',738,'583',730,'603',1008,1194,842,'494',1092,'0637,krn:{"',1167,'0278}}],[0.','438',1197,'046,',1194,'0.111}}],[0.','57',1092,'0359}],[0.','517',1008,1155,'571',1092,'0359,krn:{"59',1033,'58":-0.',1168,'437',1092,'113,krn:{"',1167,1240,'54',1092,'0359,',1194,842,'596,0.694,0.194,{',1155,'626',1008,1210,'651',1197,'0359,',1194,1245,'622',1092,1248,'466',758,1155,'591',760,1155,'828',1092,1139,'517',1008,1155,'363,0.431,0.0972,{ic:0.0799,',1155,'654',1008,1194,'0.0833}}],[1',804,'1',804,'1',804,'1',804,'0.278',',0.464,-0.0363],[','0.278',1307,'0.5,0.465,-0.0347],[',1310,'0.5',738,'5',738,'5',738,'5',740,'5',740,'5,0.',1075,790,1075,790,'431',781,'278,0.106],[',780,781,'778',',0.539,0.0391],[','0.5,0.75,0.25,{krn:{"1',1033,'65',1033,'77',1033,'78',1033,'89":0.0556,"90":-0.',1168,'778',1333,1310,'0.531',760,1202,',',1155,'75',813,'127":','0.','139}}],[0.','759',939,'0502,',1155,'715',939,'0715,krn:{"61',815,1167,900,'828',939,! 1135,1210,'738',939,'0576,',1155,'643',939,'139',1147,900,'786',846,1155,'831',939,'0812,krn:{"61',1033,1167,1168,'44',939,'0785,',1194,1245,'555',939,'0962',1147,'167}}],[0.','849',939,'0715,krn:{"61',1033,1167,1168,'681',813,1354,842,'97',939,'109,krn:{"','61',1033,1167,900,'803',939,1411,'61',890,'61',815,1167,900,'763',939,1135,1155,'642',939,'139',1147,900,'791,0.683,0.194,{',1155,'759',939,'00773,',1155,'613',939,'0576,krn:{"61',1033,1167,900,'584',939,'139,krn:{"61',815,1167,900,'683',939,1411,'59":-0.111,"',1256,'111,"61',1033,1354,842,'583',939,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}}],[0.','944',939,'139',1464,'828',939,'0785,krn:{"61',890,'61',815,1167,900,'581',939,'222',1464,'683',939,'0715,krn:{"61',1033,1167,900,'389,0.75],[0.389',765,'0.389',765,'1,0.358,-0.142],[',1491,'0.417',760,1194,1245,'529',738,'429',730,'433',758,1210,'52',760,'krn:{"89":0.0556,"90',1033,'106":-0.111,"102":-0.167,"',1151,'466',758,1210,'49',1197,'108,krn:{"',1167,1398,'477'! ,1008,1217,',',1194,842,'576',760,'krn:{"127":-',842,'345,0.66! ],[0.412 ,0.66,0.194,{ic:0.0572,krn:{"59',1033,1256,1168,'521',760,'ic:0.0315}],[0.298',760,'ic:0.0197,',1155,'878',738,'6',738,'485',758,1210,'503',1008,1155,'446',1008,1217,',',1155,'451',1092,1135,'krn:{"',1167,1168,'469',758,1210,'361,0.615,0,{',1155,'572',758,1194,842,'485',1092,'0359,',1194,842,'716',1092,'0269,',1155,'572',758,1194,842,'49',1008,1217,',',1210,'465',1092,'044,',1210,'322',758,1194,842,'384',1008,1155,'636',1008,1194,1245,'5,0.714,0,{ic:0.154}],[0.278',760,'ic:0.399}]],',81,':[[',779,'0.278,0.444,-0.0556],[',779,1310,779,'0.5,0.444,-0.0556],[',779,779,779,779,779,779,779,'1',765,1611,1611,'0.778',1307,'0.778,0.464,-0.0363','],[0.778,0.636,0.136',1626,1626,1626,1626,1626,'],[0.778',804,'0.778,0.483,-0.0169],[0.778',1333,'0.778',1333,'1',1333,'1',1333,'0.778',1333,'0.778',1333,'1',804,'1',804,'0.5',765,'0.5',765,'1',804,'1',765,'1',765,'0.778',1307,'1',804,'1',804,'0.611',765,'0.611',765,'1',804,'1',765,'1',765,'0.778',738,'275,0.556],[1',738,'667',1333,'0.667',13! 33,'0.889',765,'0.889',765,'0',765,'0',804,'0.556',730,'556',730,'667',738,'5',767,'722',730,'722',730,'778',730,'778',730,'611',730,'798',813,'48":0.','194}}],[0.657',939,'0304',',krn:{"48":0.',1356,'527',939,'0583',1716,1356,'771',939,'0278',1716,900,'528',939,'0894',1716,'111}}],[0.','719',939,'0993',1716,1732,'595',',0.683,0.0972,{ic:0.','0593',1716,1732,'845',939,'00965',1716,1732,'545',939,'0738,krn:{"48":',842,'678',1739,'185',1716,1398,'762',939,'0144',1716,1168,'69',813,1712,'139}}],[1.2',813,1712,1356,'82',939,'147',1716,900,'796',939,1725,1716,1732,'696',939,'0822',1716,900,'817,0.683,0.0972,{krn:{"48":',1245,'848',813,1712,900,'606',939,'075',1716,1356,'545',939,'254,krn:{"48":',842,'626',939,'0993',1716,900,'613',939,'0822,krn:{"48":',842,'988',939,'0822',1716,900,'713',939,'146',1716,1356,'668',1739,'0822',1716,900,'725',939,'0794',1716,1356,'667,0.556],[0.',1828,1828,1828,1828,'611',730,'611',730,'444',775,'444',775,'444',775,'444',775,'5',775,'5',775,'389',7! 75,'389',775,'278',775,'5',775,'5',775,'611',775,'5',775,'278'! ,765,'0. 833,0.04,0.96],[0.75',706,'833',706,'417',1197,'111}],[0.',1828,'667,0.556',1626,1626,'],[0.444',765,'0.444',765,'0.444',765,'0.611',765,'0.778,0.694,0.13','],[',1884,'],[',1884,'],[',1884,']],',87,':[[0.458',',0.04,1.16,{n:','16}],[0.458',1894,'17}],[0.417',1894,'104}],[0.417',1894,'105','}],[0.472,0.04,1.16,{n:','106',1902,'107',1902,'108',1902,'109}],[0.583',1894,'110}],[0.583',1894,'111',1902,'68',1902,'69}],[0.333',',0,0.6,{delim:{rep:','12}}],[0.556',1918,'13}}],[0.578',1894,'46}],[0.578',1894,'47}],[0.597',',0.04,1.76,{n:','18}],[0.597',1926,'19}],[0.736',',0.04,2.36,{n:','32}],[0.736',1930,'33}],[0.528',1930,'34}],[0.528',1930,'35}],[0.583',1930,'36}],[0.583',1930,'37}],[0.583',1930,'38}],[0.583',1930,'39}],[0.75',1930,'40}],[0.75',1930,'41}],[0.75',1930,'42}],[0.75',1930,'43}],[1.04',1930,'44}],[1.04',1930,'45}],[0.792',',0.04,2.96,{n:','48}],[0.792',1958,'49}],[0.583',1958,'50}],[0.583',1958,'51}],[0.639',1958,'52}],[0.639',1958,'53}],[0.639',1958,'54}],[0.639',195! 8,'55}],[0.806',1958,'56}],[0.806',1958,'57}],[0.806',',0.04,2.96],[','0.806',1978,'1.28',1978,'1.28',1978,'0.811',1926,'30}],[0.811',1926,'31}],[0.875',',0.04,1.76,{delim:{top:','48,bot:64,rep:66}}],[0.875',1990,'49,bot:65,rep:67}}],[0.667',1990,'50,bot:52,rep:54}}],[0.667',1990,'51,bot:53,rep:55','}}],[0.667,0.04,1.76,{delim:{bot:','52,rep:54',1998,'53,rep:55','}}],[0.667,0,0.6,{delim:{top:','50,rep:54',2002,'51,rep:55','}}],[0.889,0,0.9,{delim:{top:','56,mid:60,bot:58,rep:62',2006,'57,mid:61,bot:59,rep:62',2006,'56,bot:58,rep:62',2006,'57,bot:59,rep:62','}}],[0.889,0,1.8,{delim:{rep:','63',2014,'119}}],[0.889,0,0.3,{delim:{rep:62',2002,'120,bot:121,rep:63}}],[0.875',1990,'56,bot:59,rep:62}}],[0.875',1990,'57,bot:58,rep:62}}],[0.875',1918,'66}}],[0.875',1918,'67}}],[0.611',1926,'28}],[0.611',1926,'29}],[0.833,0,1,{n:71}],[1.11,0.1,1.5],[0.472,0,1.11,{ic:0.194,n:73}],[0.556,0,2.22,{ic:0.444}],[1.','11,0,1,{n:','75','}],[1.51,0.1,1.5],[1.',2032,'77',2034,2032,'79',2034,'06'! ], - [',0,1,{n:88','}],[0.','944,0,1,{n:','89',1,'472,0,1.11',',{ic:0.','194,n:90',1,'833,0,1,{n:','91',1,9,'92',1,9,'93',1,9,'94',1,9,'95}],[1.44,0.1,1.5],[','1.28,0.1,1.5],[0.556,0',',2.22',6,'444}],[','1.11,0.1,1.5],[',27,27,27,27,'0.',2,'97}],[',23,'.722,0,{n:99','}],[1,0.75,0,{n:','100','}],[1.44,0.75],[0.','556,0.722,0,{n:102',37,'103',39,'472',',0.04,1.76,{n:','20',1,'472',45,'21',1,'528',45,'22',1,'528',45,'23',1,'528',45,'24',1,'528',45,'25',1,'667',45,'26',1,'667',45,'27','}],[1,0.04,','1.16,{n:113}],[1',45,'114',75,'2.36,{n:115',75,'2.96,{n:116}],[1.06,0,1.8,{delim:{top:118,bot:116,rep:117}}],[1.06,0,0.6],[1.06,0.04,0.56],[0.778',',0,0.6,{delim:{','top:126,','bot:127,rep:119','}}],[0.667',83,'top:120,rep:63}}],[0.667',83,'bot:121,rep:63}}],[0','.45,0.12],[0',91,91,91,'.778',83,84,'rep:119}}],[0.778',83,85,'}}]],cmti10:[[0.627',',0.683,0,{ic:0.','133',1,'818,0.683],[0.767',102,'094',1,'692,0.683],[0.664',102,'153',1,'743',102,'164',1,'716',102,'12',1,'767',102,'111',! 1,'716',102,'0599',1,'767',102,'111',1,'716',102,'103',1,'613',',0.694',',0.194,{ic:0.','212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15}}],[0.','562',138,139,'103',1,'588',138,139,'103',1,'882',138,139,'103',1,'894',138,139,'103',1,'307',',0.431,0,{ic:0.','0767',1,'332,0.431',139,'0374',1,'511',',0.694],[0.','511',',0.694,0,{ic:0.','0969',1,'511,0.','628,0',6,'083',1,'511',173,'108',1,176,'562,0',6,'103',1,'831',171,'46,0,0.17],[0.537',138,139,'105',1,'716',163,'0751',1,'716',163,199,1,176,'528,0.0972',6,'0919',1,'883',102,'12',1,'985',102,'12',1,'767,0.732,0.0486',6,'094',1,'256,0.431,0,{krn:{"108":-0.256,"76":-0.321}}],[0.307',173,'124,lig:{"96":','60}}],[0.','514',173,'0696',1,'818',138,139,'0662',1,'769',171,'818',',0.75,0.0556',6,'136',1,'767',173,'0969',1,'307',173,'124',',krn:{"','63":0.102,"33":0.102','},lig:{"39":34}}],[0.','409',',0.75,0.25,{ic:0.','162',1,'409',253,'0369',1,176,'75,0',6,'149',1,'767,0.562,0.0567',6,'036! 9',1,'307,0.106',',0.194],[0.','358',163,'0283,','lig:{"45":12! 3}}],[0. ',269,'],[0.511',253,'162',1,176,'644,0',',{ic:0.136}],[0.511,0.644,0',282,282,282,'.194',282,282,282,286,282,282,6,'136',1,'307',163,'0582',1,'307,0.','431',139,'0582',1,300,'5',139,'0756',1,'767,0.367,-0.133',6,'0662',1,176,'5',270,'511',173,'122,lig:{"96":62}}],[0.767',173,'096',1,'743,0.683,0,{','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',326,'86','":-0.102,"','87',330,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','704',102,'103',1,'716',102,'145',1,'755',102,'094',249,'88','":-0.0256,"','87',347,'65',347,'86',347,'89','":-0.0256}}],[0.','678',102,'12',1,'653',102,'133',249,'111',326,'101',326,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',330,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.02! 56}}],[0.','774',102,'0872',1,'743',102,'164',1,'386',102,'158',1,'525',102,'14',1,'769',102,'145',249,372,'627,0.683,0,{krn:{"84',326,'89',326,'86',330,'87',330,333,'897',102,'164',1,'743',102,'164',1,'767',102,'094',249,'88',347,'87',347,'65',347,'86',347,'89',355,'678',102,'103',249,'65":-0.0767}}],[0.','767,0.683',139,'094',1,'729',102,'0387,',324,'0.0256,"84',326,'89',326,'86',330,'87',330,333,'562',102,'12',1,'716',102,'133',249,'121',326,'101',326,'111',369,'117',326,429,'743',102,'164',1,'743',102,'184',249,'111',326,'101',326,'117',369,'65',330,372,'999',102,'184',249,429,'743',102,'158',249,372,'743',102,'194',249,'101',326,'111',369,'117',326,429,'613',102,'145',1,'307',253,'188',1,'514',173,'169',1,'307',253,'105',1,'511',173,'0665',1,300,'668,0',6,'118',1,'307',173,224,'92}}],[0.','511',163,164,1,'46',173,'0631',249,333,'46',163,'0565',249,333,'511',173,'103',',krn:{"108":0.0511}}],[0.','46',163,199,249,333,'307',138,139,140,'12,"102":11,"108":13}}],[0.','46,0.! 431',139,'0885',1,'511',173,164,1,300,'655,0',6,'102',1,300,'6! 55',139, '145',1,'46',173,'108',1,'256',173,'103',548,'818',163,164,1,'562',163,164,249,'39":-0.102}}],[0.511',163,'0631',249,333,176,'431',139,'0631',249,333,'46,0.431',139,'0885',1,'422',163,'108',249,333,'409',163,'0821',1,'332,0.615,0',6,'0949',1,'537',163,164,1,'46',163,'108',1,'664',163,'108',548,'464',163,'12',1,'486,0.431',139,'0885',1,'409',163,'123',1,'511',163,'0921',',lig:{"45":124}}],[1.','02',163,647,1,'511',173,'122',1,176,'668,0',6,'116',1,176,'668,0',6,'105}]],cmbx10:[[0.692',',0.686],[0.','958',666,'894',666,'806',666,'767',666,'9',666,'831',666,'894',666,'831',666,'894',666,'831',666,'671',173,'109,krn:{"39":0.109,"63":0.109,"33":0.109,"41":0.109,"93":0.109},lig:{"105":',141,'639',171,'639',171,'958',171,'958',171,'319',',0.444],[0.','351,0.444',270,'575',171,'575',171,'575,0.632],[0.575',171,'575,0.596],[0.869',171,'511,0,0.17],[0.597',171,'831',700,'894',700,'575,0.542,0.0972],[1.04,0.686],[1.17',666,'894,0.735,0.0486],[0.319',',0.444,0,{krn:{"','108":-0.319,"76"! :-0.378}}],[0.35',',0.694,0,{lig:{"96":',225,'603',171,'958',138,270,'575',238,'],[0.958',238,'],[0.894',171,'319',',0.694,0,{krn:{"','63":0.128,"33":0.128',251,'447',',0.75,0.25],[0.','447',740,'575,0.75],[0.894,0.633,0.133],[0.','319,0.156',270,'383',',0.444,0',',{',274,744,'],[0.575',740,'575,0.644],[','0.575,0.644],[0.575,0.644],[',754,754,754,'0.575,0.644],[0.319',700,'319,0.444',270,'35,0.5',270,'894,0.391,-0.109],[0.543,0.5',270,'543',722,'62}}],[0.894',171,'869',',0.686,0,{krn:{"','116','":-0.0319,"','67',773,'79',773,'71',773,'85',773,'81',773,'84":-0.0958,"89":-0.0958,"86":-0.128,"87":-0.128}}],[','0.818',666,'831',666,'882',771,'88',773,'87',773,'65',773,'86',773,'89','":-0.0319}}],[0.','756',666,'724',',0.686,0',',{','krn:{"111":-0.0958,"101":-0.0958,"117":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.128,"79":-0.0319,"67":-0.0319,"71":-0.0319,"81":-0.0319}}],[','0.904',666,'9',666,'436',771,'73','":0.0319}}],[0.','594',666,'901',771,'79',773,'67',773,'71',773,'81'! ,800,'692',771,784,'1.09',666,'9',666,'864',771,'88',773,'87',! 773,'65' ,773,'86',773,'89',800,'786',771,'65":-0.0958,"111',773,'101',773,'97',773,'46":-0.0958,"44":-0.0958}}],[0.','864,0.686',270,'862',771,'116',773,'67',773,'79',773,'71',773,'85',773,'81',773,784,'0.639',666,'8',771,'121',773,'101":-0.0958,"111":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.0958,"117":-0.0958}}],[0.','885',666,'869',804,6,'016,',806,'1.19',804,6,'016,',806,'0.869',771,'79',773,'67',773,'71',773,'81',800,'869',804,6,'0287',249,878,'703',666,'319',740,'603',171,'319',740,'575',171,'319',171,'319',722,530,'559',720,'118',773,'106":0.0639,"121',773,'119',800,'639',138,',0',',{krn:{"101":0.0319,"111":0.0319,"120":-0.0319,"100":0.0319,"99":0.0319,"113":0.0319,"118":-0.0319,"106":0.0639,"121":-0.0319,"119":-0.0319}}],[0.','511',720,'104',773,'107',800,'639',171,'527',700,'351',173,689,558,'575,0.444',139,'016,krn:{"','106',814,'639',736,'116',773,'117',773,'98',773,'121',773,'118',773,'119',800,'319',171,'351',138,270,'607',736,'97":-0.0639,"101',773,'97',773,'111',773,! '99',800,'319',171,'958',720,'116',773,'117',773,'98',773,'121',773,'118',773,'119',800,'639',720,'116',773,'117',773,'98',773,'121',773,'118',773,'119',800,'575,0.444,0',933,'639',747,286,933,'607,0.444',270,'474',700,'454',700,'447,0.635,0,{krn:{"121',773,'119',800,'639',720,'119',800,1018,',0',6,950,'97":-0.0639,"101',773,'97',773,'111',773,'99',800,'831',747,6,950,'101',773,'97',773,'111',773,'99',800,'607',700,1018,139,950,'111',773,'101',773,'97',773,854,'511',700,1012,6,'0319',648,'15',747,6,1072,1,'575',171,'575',171,'575',138,']]};','jsMath.Img','={fonts:[50,60,70,85,100,120,144,173,207,249,298,358,430],w:{"50":6.9,"60":8.3,"70":9.7,"85":11.8,"100":13.9,"120":16.7,"144":20,"173":24,"207":28.8,"249":34.6,"298":41.4,"358":49.8,"430":59.8},best:4,update:{},factor:1,loaded:0,SetFont',':function(','B){for(var A in B){if(!','this.update[A',']){',1090,']=[]}',1090,']=',1090,'].concat(B[A])}},AddFont',1088,'A,B){if(!',1086,'[A]){',1086,'[A]={}}jsMath.Add(',1086,'[A],B)},Up! dateFonts',':function(){','var D=this.update;','if(!this.loade! d){','re turn }for(var A in D){for(var B=0;B<D[A].length;B++){var C=D[A][B];if(C=="all"){for(C in ','jsMath.TeX[','A]){',1110,'A][C].img','={}}}else{',1110,1113,'={}}}}this.update={}},BestSize',1106,'var B=jsMath.em*this.factor;var A=','this.w[this.fonts[','0]];for(var C=1;C<this.fonts.length;C++){if(B<(',1120,'C]]+2*A)/3){return C-1}A=',1120,'C]]}return C-1},Scale',1106,1108,'return }this.best=this.BestSize();this.em=',1086,'.w[this.fonts[this.best]];','this.scale','=(jsMath.em/this.em);','if(Math.abs(',1131,'-1)<0.12){',1131,'=1}},URL',1088,'A,B,E){var D=(','jsMath.Controls.cookie.','alpha)?"/alpha/":"/plain/";','if(E==null','){E="def.js"}else{E="char"+E+".png"}if(B!=""){B+="/"}','return this.','root+A+D+B+E},LoadFont',1088,'A){',1108,'this.Init()}jsMath.Setup.Script(this.URL(A,""))},Init',1106,'if(',1140,'print||',1140,'stayhires','){',1140,'print=',1140,1155,';this.factor*=3;if(!','jsMath.Controls.','isLocalCookie||!jsMath.Global.isLocal){',1162,'SetCookie(0)}if(','jsMath.Browser! .','alphaPrintBug){',1140,'alpha=0}}var B="0123456789ABCDEF";this.HexCode=[];for(var C=0;C<128;C++){var D=Math.floor(C/16);var A=C-16*D;this.HexCode[C]=B.charAt(D)+B.charAt(A)}this.loaded=1}};jsMath.HTML={Em',1088,'A){var C=','... [truncated message content] |
From: dpvc v. a. <we...@ma...> - 2008-09-14 00:25:44
|
Log Message: ----------- Added in version 3.6 Tags: ---- rel-2-4-patches Added Files: ----------- webwork-modperl/htdocs/jsMath/extensions: eqn-number.js Revision Data ------------- --- /dev/null +++ htdocs/jsMath/extensions/eqn-number.js @@ -0,0 +1,199 @@ +/* + * extensions/eqn-number.js + * + * Part of the jsMath package for mathematics on the web. + * + * This file causes jsMath to add equation numbers to displayed + * equations. These are displayed at the right, but the styles can + * be controlled through the jsMath.EqnNumber object. Equations + * are numbered if they include a \label{xxx} call, and the macro + * \ref{xxx} can be used to refer to the equation number elsewhere + * in the document (it must appear by itself in a math formula, + * e.g., $\ref{xxx}$). The "label-ref" CSS style can be used to + * style the references. + * + * If jsMath.EqnNumber.autonumber is set to 1, then ALL displayed + * equations will be numberd. Use the \nolabel macro to prevent + * equation numbering on an equation. + * + * You can activate eqn-numbering by calling + * + * jsMath.Extension.Require('eqn-number'); + * + * once jsMath.js has been loaded, or by adding "extensions/eqn-number.js" + * to the loadFiles array in jsMath/easy/load.js. + * + * --------------------------------------------------------------------- + * + * Copyright 2008 by Davide P. Cervone + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/********************************************************************/ + +if (jsMath.EqnNumber) {jsMath.EqnNumber_old = jsMath.EqnNumber} + +jsMath.EqnNumber = { + + styles: { + '.jsMath_displayBox, .tex2math_div': {position: 'relative'}, + '.jsMath_number': { + position: 'absolute', + right: '2em', top: '50%', 'margin-top': '-.5em', + height: 'auto', width: 'auto' + }, + '.jsMath_ref': {'text-decoration': 'none'} + }, + + autonumber: 0, // set to 1 to have ALL equations numbered + + number: 0, + format: function (n) {return n}, + formatLabel: function (n) {return '<A NAME="eqn-'+n+'">('+n+')</A>'}, + formatRef: function (n) {return '(<A CLASS="jsMath_ref" HREF="#eqn-'+n+'">'+n+'</A>)'}, + + _label: null, // flag set when \label{x} is used + _labels: {}, // stores label-name => label-value pairs + _refs: {}, // stores elements referring to undefined labels + _nolabel: 0, // set by \nolabel + + nextNumber: function () { + var ref = this.format(++this.number); + if (this._label) { + this._labels[this._label] = ref; + if (this._refs[this._label]) this.fixRefs(this._label); + } + return this.formatLabel(ref); + }, + + isRef: function (element) { + var tex = element.innerHTML; + var result = tex.match(/^\s*\\ref\s*\{([^\}]+)\}\s*$/); + if (!result) {return 0} + var ref = result[1]; + if (this._labels[ref]) { + this.setRef(element,ref); + } else { + if (!this._refs[ref]) {this._refs[ref] = []} + this._refs[ref][this._refs[ref].length] = element; + } + return 1; + }, + + setRef: function (element,ref) { + element.innerHTML = this.formatRef(this._labels[ref]); + element.className = "label-ref"; + }, + + fixRefs: function (label) { + for (var i = 0; i < this._refs[label].length; i++) + {this.setRef(this._refs[label][i],label)} + delete this._refs[label]; + }, + + badRefs: function () { + for (var label in this._refs) { + for (var i = 0; i < this._refs[label].length; i++) { + var element = this._refs[label][i]; + element.className = "typeset"; + element.innerHTML = "<span class='error'>Reference '"+label+"' is undefined</span>"; + } + } + }, + + makeDIV: function (element) { + var div = document.createElement('div'); + div.className = 'jsMath_displayBox'; + div.innerHTML = '<div class="jsMath_number">' + this.nextNumber() + '</div>'; + element.parentNode.insertBefore(div,element); + element.parentNode.removeChild(element); + div.appendChild(element); + }, + + makeSPAN: function (element) { + var span = document.createElement('span'); + span.className = 'jsMath_number'; + span.style.display = 'inline-block'; + span.innerHTML = jsMath.EqnNumber.nextNumber(); + element.parentNode.insertBefore(span,element); + }, + + ConvertMath: function (style,element,nocache) { + var EqnNumber = jsMath.EqnNumber; + if (EqnNumber.isRef(element)) return; + EqnNumber._label = null; EqnNumber._nolabel = 0; + this.ConvertMath_old(style,element,nocache); + if (EqnNumber._label || (EqnNumber.autonumber && !EqnNumber._nolabel)) { + if (element.tagName.toLowerCase() == 'div') { + EqnNumber.makeDIV(element); + } else if (element.parentNode.className == 'tex2math_div') { + EqnNumber.makeSPAN(element); + } + } + }, + + ProcessComplete: function () { + jsMath.EqnNumber.badRefs(); + this.ProcessComplete_old.apply(this,arguments); + }, + + Init: function () { + jsMath.Setup.Styles(this.styles); + jsMath.Translate.ConvertMath_old = jsMath.Translate.ConvertMath; + jsMath.Translate.ConvertMath = this.ConvertMath; + jsMath.Translate.ProcessComplete_old = jsMath.Translate.ProcessComplete; + jsMath.Translate.ProcessComplete = this.ProcessComplete; + } + +}; + +if (jsMath.EqnNumber_old) { + jsMath.Insert(jsMath.EqnNumber,jsMath.EqnNumber_old); + delete jsMath.EqnNumber_old; +} + +jsMath.Package(jsMath.Parser,{ + macros: { + label: 'Label', + nolabel: 'NoLabel', + ref: 'Ref' + }, + + Label: function (name) { + var label = this.GetArgument(this.cmd+name); if (this.error) return; + var EqnNumber = jsMath.EqnNumber; + if (!EqnNumber._label) { + if (!EqnNumber._labels[label]) { + EqnNumber._label = label; + EqnNumber._nolabel = 0; + } else { + this.Error("Label '"+label+"' is already defined"); + } + } else { + this.Error(this.cmd+name+' can only be used once in an equation'); + } + }, + + NoLabel: function (name) { + var EqnNumber = jsMath.EqnNumber; + EqnNumber._label = null; EqnNumber._nolabel = 1; + }, + + Ref: function (name) { + this.Error(this.cmd+name+' must be used by itself'); + } + +}); + +jsMath.EqnNumber.Init(); |
From: dpvc v. a. <we...@ma...> - 2008-09-14 00:25:16
|
Log Message: ----------- Bring jsMath to version 3.6. Changes include: * Added a new eqn-number extension that allows you to add equation numbers to displayed equations via \label{xxx} and refer to those numbers at other locations in the HTML page via \ref{xxx}. See the eqn-number documentation for more details. * Fixed more problems with Firefox3 and their new single-source security policy for loading local files. (Previous attempts worked with pre-release versions of Firefox3, but this works with the release version.) * Worked around a print bug with Firefox3 where thin horizontal rules could disappear in the printed version even though they appear on screen. * Added CSS styles to make images in hypertext links within mathematics be underlines when one of the image modes is in use. * Added CSS to help isolate the control panel width from the CSS of the main page. * Added ability to put the mathematics within CDATA to help avoid problems with <, > and & within the mathematics. For example: <SPAN CLASS="math"><!--[CDATA[ x > y ]]--></SPAN> Using <![CDATA[ ... ]]> without the -- does not work in some browsers. * The tex2math plugin now processes the tex2math_ignore and tex2math_process directives on an element even if there are other class names included on the element as well. * Fixed a bug with the autobold plugin in MSIE when certain fonts are used as the default font. * Enhanced the ability to preset the styles used by jsMath by making the jsMath.styles entries be associative arrays rather than strings. This makes it easy to change a single style setting: instead of retyping the entire string, you simply set the style value that you are interested in changing. * Fixed a problem where Safari3 would not be able to drag the TeX source window produced by double-clicking on typeset mathematics. * Added an option to control whether the @(...) construct is processed within \hbox{} or not. This would allow arbitrary HTML tags to be inserted, which poses a security risk for content-management systems where untrusted users are entering data. The easy/load.js file now has a setting to control this, and it is off by default, though it is on by default when loading jsMath.js by hand. To turn it off by hand, set jsMath.safeHBoxes to 1. * Added checks within the HTML extension that prevent the insertion of raw HTML into jsMath equations. * Added a jsMath.ProcessElement() call that allows you to process the contents of a single element (of class "math") as TeX code directly. Note that this call may return before the mathematics is actually finished typesetting. See the page on dynamic math for more details. * Modified the way jsMath works around the lack of support for position:fixed in MSIE so that style changes for where the jsMath button and control panel appear should work properly in MSIE. * Removed the "Check for Updates" button from the jsMath Control Panel and moved it to the jsMath/test/index.html page (since it is really an administrator function, not a user function). Tags: ---- rel-2-4-patches Modified Files: -------------- webwork-modperl/htdocs/jsMath: jsMath-BaKoMa-fonts.js jsMath-controls.html jsMath-easy-load.js jsMath-loader-post.html jsMath.js webwork-modperl/htdocs/jsMath/easy: load.js webwork-modperl/htdocs/jsMath/extensions: HTML.js autobold.js double-click.js underset-overset.js webwork-modperl/htdocs/jsMath/plugins: autoload.js noImageFonts.js smallFonts.js spriteImageFonts.js tex2math.js webwork-modperl/htdocs/jsMath/uncompressed: jsMath.js Revision Data ------------- Index: jsMath-controls.html =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-controls.html,v retrieving revision 1.12.4.1 retrieving revision 1.12.4.2 diff -Lhtdocs/jsMath/jsMath-controls.html -Lhtdocs/jsMath/jsMath-controls.html -u -r1.12.4.1 -r1.12.4.2 --- htdocs/jsMath/jsMath-controls.html +++ htdocs/jsMath/jsMath-controls.html @@ -138,12 +138,6 @@ this.panel.style.display = "block"; this.openMain = 0; - - if (jsMath.Browser.msieMoveButtonHack) { - this.panel.style.left = "0px"; - this.panel.style.top = "0px"; - jsMath.Controls.MoveButton(); - } }, Options: function () { @@ -251,10 +245,6 @@ jsMath.Global.Show(); }, - CheckVersion: function () { - jsMath.Script.delayedLoad('http://www.math.union.edu/locate/jsMath/jsMath/jsMath-version-check.js'); - }, - NoAuto: function () {jsMath.Element("_autofont").checked = false} }); @@ -304,8 +294,6 @@ <td align="center"> <table border="0" cellspacing="0" cellpadding="0"> <tr><td align="center" colspan="3"> -<input type="button" value="Check for jsMath Updates" - style="width:18em" onclick="jsMath.Controls.CheckVersion()" /><br /> <input type="button" id="jsMath__resolution" value="Hi-Res Fonts for Printing" style="width:18em" onclick="jsMath.Controls.PrintResolution()" /> </td></tr> @@ -458,12 +446,12 @@ if (showWarning) { if (mustPost) { var scr = document.getElementById("jsMath_script"); - window.parent.postMessage("jsMCP:SCR:"+scr.innerHTML); + window.parent.postMessage("jsMCP:SCR:"+scr.innerHTML,"*"); var main = document.getElementById("jsMath_main"); - window.parent.postMessage("jsMCP:PAN:"+main.innerHTML); + window.parent.postMessage("jsMCP:PAN:"+main.innerHTML,"*"); var options = document.getElementById("jsMath_options"); - window.parent.postMessage("jsMCP:OPT:"+options.innerHTML); - window.parent.postMessage("jsMCP:PST:"); + window.parent.postMessage("jsMCP:OPT:"+options.innerHTML,"*"); + window.parent.postMessage("jsMCP:PST:","*"); } } else { jsMath.Controls.Main() Index: jsMath-BaKoMa-fonts.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-BaKoMa-fonts.js,v retrieving revision 1.5 retrieving revision 1.5.4.1 diff -Lhtdocs/jsMath/jsMath-BaKoMa-fonts.js -Lhtdocs/jsMath/jsMath-BaKoMa-fonts.js -u -r1.5 -r1.5.4.1 --- htdocs/jsMath/jsMath-BaKoMa-fonts.js +++ htdocs/jsMath/jsMath-BaKoMa-fonts.js @@ -418,11 +418,11 @@ } jsMath.Setup.Styles({ - '.typeset .cmr10': 'font-family: cmr10, serif', - '.typeset .cmbx10': 'font-family: cmbx10, cmr10', - '.typeset .cmti10': 'font-family: cmti10, cmr10', - '.typeset .cmmi10': 'font-family: cmmi10', - '.typeset .cmsy10': 'font-family: cmsy10', - '.typeset .cmex10': 'font-family: cmex10', + '.typeset .cmr10': 'font-family: CMR10, serif', + '.typeset .cmbx10': 'font-family: CMBX10, CMR10', + '.typeset .cmti10': 'font-family: CMTI10, CMR10', + '.typeset .cmmi10': 'font-family: CMMI10', + '.typeset .cmsy10': 'font-family: CMSY10', + '.typeset .cmex10': 'font-family: CMEX10', '.typeset .arial': "font-family: 'Arial unicode MS'" }); Index: jsMath-easy-load.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-easy-load.js,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -Lhtdocs/jsMath/jsMath-easy-load.js -Lhtdocs/jsMath/jsMath-easy-load.js -u -r1.1.4.1 -r1.1.4.2 --- htdocs/jsMath/jsMath-easy-load.js +++ htdocs/jsMath/jsMath-easy-load.js @@ -32,6 +32,8 @@ jsMath.tex2math.doubleDollarsAreInLine = jsMath.Easy.doubleDollarsAreInLine; jsMath.tex2math.allowDisableTag = jsMath.Easy.allowDisableTag; +jsMath.safeHBoxes = jsMath.Easy.safeHBoxes; + if (jsMath.Easy.scale) { if (!jsMath.Controls) {jsMath.Controls = {}} if (!jsMath.Controls.cookie) {jsMath.Controls.cookie = {}} Index: jsMath.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath.js,v retrieving revision 1.36.2.1.2.1 retrieving revision 1.36.2.1.2.2 diff -Lhtdocs/jsMath/jsMath.js -Lhtdocs/jsMath/jsMath.js -u -r1.36.2.1.2.1 -r1.36.2.1.2.2 --- htdocs/jsMath/jsMath.js +++ htdocs/jsMath/jsMath.js @@ -10,7 +10,7 @@ * * for the latest version, and for documentation on how to use jsMath. * - * Copyright 2004-2007 by Davide P. Cervone + * Copyright 2004-2008 by Davide P. Cervone * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,11 +40,11 @@ //start = new Date().getTime(); jsMath.Script.Uncompress([ - ['if(!','window','.jsMath','||!',1,'.','jsMath.','loaded','){var ','jsMath_old','=',1,2,';',0,'document.','getElementById','||!',15,'childNodes||!',15,'createElement','){','alert("','The',' mathematics ','on this page requires W3C DOM support in its JavaScript. Unfortunately, your ','browser',' doesn\'t seem to have this.")}','else{',1,2,'={version:"3.5",document:document,',1,':',1,',','platform',':(','navigator.',37,'.match(/','Mac/)?"mac":',39,37,41,'Win/)?"pc":"unix"),','sizes',':[50,60,70,85,100,120,144,173,207,249],','styles',':{".math','":"font-family:serif; font-style:normal; font-weight:normal','",".typeset',51,'; line-height:normal',';","div','.typeset','":"text-align',':center; margin:1em 0px;","span',56,57,':left',52,' span',57,61,'; border:','0px; margin:0px','; padding',':0px;",".typeset .','normal',51,'",".typeset .','size0','":"font-size:','50','%",".typeset .','size1',74,'60',76,'size2',74,'70',76,'size3',74,'85',76,'size4',74,'100',76,'size5',74,'120',76,! 'size6',74,'144',76,'size7',74,'173',76,'size8',74,'207',76,'size9',74,'249',76,'cmr10','":"font-family:jsMath-',113,', serif',72,'cmbx10',114,118,', ','jsMath-cmr10',72,'cmti10',114,124,', ',122,72,'cmmi10',114,130,72,'cmsy10',114,134,72,'cmex10',114,138,72,'textit":"','font-family',':serif; ','font-style:italic',72,'textbf":"',143,':serif; font-weight:bold',72,'link":"','text-decoration:none',72,'error',74,'10pt; ',145,'; ','background-color',':#FFFFCC',68,':1px',66,'1px solid',' #CC0000',72,'blank','":"','display:inline-block','; ','overflow:hidden',66,'0px none; width:0px; height',69,'spacer','":"',169,'","#jsMath_hiddenSpan":"','visibility',':','hidden','; ','position:absolute','; top:0px',';left:0px',54,'; text-indent:0px","#','jsMath_message','":"','position:fixed','; bottom:1px; ','left:2px; ',159,':#E6E6E6','; border:solid 1px #959595; margin:0px; padding:','1px 8px','; z-index:102; color',': black','; font-size:','small; ','width:auto',';","#','jsMath_panel','":"'! ,190,'; bottom:1.5em; right:1.5em','; padding:.8em 1.6em; ',15! 9,':#DDD DDD; border:outset ','2px; z-index:103; ',201,'; color:black',199,'10pt; font-style:normal","#',203,' .disabled":"color:#888888","#',203,' .infoLink',74,'85%","#',203,' *":"','font-size:inherit; font-style:inherit; font-family:inherit',54,'","#',203,' div":"',159,':inherit; color:inherit;","#',203,' span":"',159,229,203,' td','":"border:0px; padding:0px; margin:0px; background-color:inherit; color:inherit;","#',203,' tr',236,203,' table',236,'jsMath_button','":"',190,191,'right:2px; ',159,':white',195,'0px 3px 1px 3px',197,':black; ',152,199,'x-small; ',201,'; cursor:hand;","#',243,222,'padding:0px',66,'0px; margin:0px',54,'; ',223,'","#jsMath_global":"',145,';","#jsMath_float','":"',183,184,'; left:0px; max-width:80%; z-index:101; ',201,'; height:auto',269,' .drag":"',159,209,'1px; height:12px',199,'1px',269,' .close":"',159,':#E6E6E6',66,'inset 1px; width:8px; height:8px; margin:1px 2px',269,' .source":"',159,':#E2E2E2',66,'outset 1px; ',201,275,68,':8px 15px; ',143,':cour! ier, fixed',199,'90%","#jsMath_noFont .message',57,': center',207,'border:3px solid #DD0000; ',159,':#FFF8F8; color: #AA0000',199,'small; ',201,202,'jsMath_noFont .link','":"',261,' 5px 2px 5px',66,'2px outset; ',159,':#E8E8E8; color:black',199,'80%; ',201,258,'jsMath_PrintWarning',' .message',57,':center',207,'border:3px solid #DD0000; ',159,': #FFF8F8; color: #AA0000',199,'x-small; ',201,';","@media print":"#',243,' {display:none','}\\n#jsMath_Warning',338,'}","@media screen":"#',325,338,'}"},Element',':function(','A','){return ',6,15,16,'("jsMath_"+A)},','BBoxFor',345,'A','){this.','hidden.innerHTML','=\'<nobr><','span class="','typeset"><',358,'scale">\'+A+"</span></span></nobr>";var B={w:this.',181,'.offsetWidth',',h:this.',181,'.offsetHeight','};this.',356,'="";return B},EmBoxFor',345,'B){var A=',6,'Global.cache.R;if(!A[this.em]){A[this.em]={}}if(!A[this.em][B]){var C=this.BBoxFor(B);','A[this.em][B]={w:C.w/this.em,h:C.h/this.em}}return A[this.em][B]},','EmBoxForItali! cs',345,371,6,373,'if(B.match(/<i>|class=\\"(icm|italic|igreek! |iaccent )/i)){C.w=C.Mw=','this.BBoxFor','(B+',6,'Browser.','italicString',').w-',6,384,'italicCorrection','}',374,'Init',':function(){','if(',6,'Setup.inited','!=1){',0,6,396,'){',6,'Setup.','Body()}if(',6,396,'!=1){if(',6,396,'==-100','){return }',23,'It looks like jsMath failed to set up properly (error code "+',6,396,'+"). I will try to keep going, but it could get ugly.");',6,396,'=1}}this.em=this.CurrentEm();','var A=',6,'Global.cache','.B;',0,'A[this.em]){A[this.em]={};','A[this.em].','bb=',381,'("x");','var C=',426,'bb.h;',426,'d=',381,'("x"+',6,'HTML.Rule(1,','C/',6,'em)).h-C;if(',6,384,385,'){',426,'ic=',6,352,'(',6,384,385,').w}}',6,384,389,'=',426,'ic;var F=',426,'bb;var D=F.h;var E=',426,'d;this.h=(D-E)/this.em;this.d=E/this.em;this.hd=this.h+','this.d;this.',403,'TeXfonts','();var B=this.EmBoxFor(\'<',358,113,'">M</span>\').w/2;this.TeX.M_height=B*(26/14);this.TeX.h=this.h;this.TeX.d=',465,'TeX.hd=this.hd;this.Img.Scale();',0,'this.initialized',355,403,'Sizes','();this! .','Img.UpdateFonts()}this.p_height=(','this.TeX.cmex10[0].','h+',481,'d)/0.85;',475,'=1},ReInit',393,'if(this.','em!=this.CurrentEm()){this.Init()}},CurrentEm',393,420,381,'(\'<span style="\'+',6,384,'block+\';','width:13em;height:1em','"></span>\').','w/13;if(A>0',347,'A}return ',381,'(\'<img src="\'+',6,167,'+\'" style="',497,'"/>\').w/13},Loaded',393,'if(',9,8,'B=["Process","ProcessBeforeShowing","ConvertTeX","ConvertTeX2","ConvertLaTeX","ConvertCustom","CustomSearch","Synchronize","Macro","document"];','for(var A=0;A<','B','.length;A++){','if(',9,'[B[A]]){','delete ',9,'[B[A]]}}}if(',9,355,'Insert(jsMath,',9,')}',9,'=null;',6,7,'=1},Add',345,'C,A){for(var B in A){','C[B]=A[B]}},Insert',345,534,'if(C[B]&&typeof (A[B])=="object"&&(','typeof (C[B])=="','object"||',539,'function")){this.Insert(C[B],A[B])}',29,'C[B]=A[B]}}},Package',345,'B,A',355,'Insert(B.prototype,A)}};',6,'Global={isLocal:1,cache:{','T:{},D:{},R:{},B',':{}},ClearCache',393,6,422,'={',551,':{}}},GoGlobal'! ,345,371,'String(',6,1,'.','location);var C','=(',6,'isCHMmode! ','?"#": "?");if(B){A=A.replace(/\\?.*/,"")+"?"+B}',6,'Controls.','Reload(',6,'root+"jsMath-','global.html"+C+escape(A))},Init',393,'if(',6,'Controls.cookie.','global=="always"&&!',6,'noGoGlobal','){if(',39,'accentColorName',411,0,6,1,'){',6,1,'=',1,'}',6,571,7,'=1;',6,571,'defaults.hiddenGlobal=null;this.GoGlobal(',6,571,'SetCookie(2))}},Register',393,420,6,1,'.parent;',0,6,'isCHMode){',6,568,'=(',6,1,'.','location.','protocol=="mk:")}try{',0,6,568,355,'Domain()}if(A',2,'&&A.',6,'isGlobal){A.',6,'Register(',6,1,')}}catch(B){',6,582,'=1}},Domain',393,'if(',39,'appName=="Microsoft Internet Explorer"&&',6,37,'=="mac"&&',39,'userProfile','!=null',411,'if(',1,'==parent',411,'var B=',6,15,'domain;try{while(true){try{if(parent.',15,'title',648,'){return }}','catch(A){}',0,15,'domain.match(/\\..*\\./)){break}',6,15,'domain=',6,15,'domain.replace(/^[^.]*\\./,"")}}',662,6,15,668,'B}};',6,'Script={request:null,Init',393,'if(!(',6,579,'asynch&&',6,579,'progress',')){if(',1,'.XMLHttpRequest','){! try{','this.request','=new XMLHttpRequest}catch(C){}if(',691,'&&',6,'root.match','(/^file:\\/\\//)){try{',691,'.open("GET",',6,'root+"',6,'js",false);',691,'.send(null)}catch(','C){',691,'=null;if(',1,'.postMessage',355,'mustPost=1;',6,1,'.addEventListener("message",',6,'Post.','Listener,false)}}}}',0,691,'&&',1,'.','ActiveXObject',8,'A=["MSXML2.XMLHTTP.5','.0","MSXML2.XMLHTTP','.4',727,'.3',727,'","Microsoft.XMLHTTP"];','for(var B=0;B<','A.length&&!',691,';B++){try{',691,'=new ',724,'(A[B])}catch(C){}}}}',0,691,'||',6,403,'domainChanged',355,'Load=this.delayedLoad;this.needsBody=1}},Load',345,'B,A){','if(A){',6,'Message.Set("Loading "+','B);',6,'Script.','Delay(1);',6,'Script.Push(','this,"xmlRequest",B',');',6,759,6,'Message',',"Clear")}',29,6,759,760,')}},xmlRequest',345,'url){','this.blocking','=1;try{',691,699,'url,false);',691,705,'err){',774,'=0;if(',6,'Translate.','restart&&',6,'Translate.asynchronous){return""}throw"jsMath can\'t load the file \'"+url+"\'\\','nMess! age: "+err.message}if(',691,'.status',648,'&&(',691,791,'>=400! ||',691, 791,'<0)){',774,'=0;if(',6,785,'restart&&',6,788,'nError status: "+',691,791,'}',0,'url','.match(/\\.js$/)){','return(',691,'.responseText',')}var tmpQueue','=this.queue;this.queue','=[];',6,1,'.eval(',691,816,');',774,'=0;','this.queue=this.queue.concat(','tmpQueue);this.Process();return""},cancelTimeout:30*1000,blocking:0,cancelTimer:null,needsBody:0,queue:[],Synchronize',345,'A,B){','if(typeof (','A)!="string"){',6,759,'null,A,B)}',29,6,759,6,1,',"eval",A)}},Push',345,'A,C,B',355,'queue[','this.queue.length',']=[A,C,B];if(!(',774,'||(this.needsBody&&!',6,15,'body))){this.Process()}},Process',393,'while(',847,'&&!',774,8,'C=this.queue[0];this.queue=this.queue.slice(1);',420,'this.SaveQueue();var B=C[0];var E=C[1];var D=C[2];if(B){B[E](D)}',29,'if(E){E(D)}}this.','RestoreQueue','(A)}},SaveQueue',393,'var A',818,'=[];return A},',865,345,'A){',828,'A)},delayedLoad',345,'A',355,'Push(','this,"','startLoad','",A)},',881,345,'A',8,'B=',6,15,21,'("iframe");B.style.',179,'="',181,! '";B.style.position="absolute";B','.style.width="','0px";B','.style.height="','0px";if(',6,15,'body.firstChild','){',6,15,'body.insertBefore(','B,',6,15,902,')}',29,6,15,'body','.appendChild(','B)}',774,'=1;this.','url=A;if(A.substr(0,',6,'root.length',')==',6,'root){A=A.substr(',6,922,')}',6,753,'A);this.cancelTimer=setTimeout("',6,756,'cancelLoad','()",this.cancelTimeout);',488,'mustPost){','B.src=',6,717,881,'(A,B)}',29,'if(A',813,938,6,574,'loader.html"}',29,938,'this.url}}},','endLoad',345,'A){if(this.cancelTimer){clearTimeout(this.cancelTimer);this.cancelTimer=null}',6,717,953,'();',6,765,'.Clear();if(A!="cancel"){',774,'=0;this.Process','()}},Start',393,'this.tmpQueue',818,'=[]},End',393,828,967,');',520,967,'},',934,345,'B,',955,'if(B==null){B="Can\'t load file"}if(A==null){A=2000}',6,765,'.Set(B);setTimeout(\'',6,756,953,'("cancel")\',A)},Delay',345,'A){',774,'=1;setTimeout("',6,756,'endDelay','()",A)},',995,393,774,964,'()},','imageCount',':0,WaitForImage',345,'B)! {',774,919,1002,'++;',488,'img==null',355,'img=[]}',420,'new I! mage',47 9,'img[this.img.length]=A;A.onload=function(){if(--',6,756,1002,'==0){',6,756,995,'()}};A.onerror=A.onload;A.onabort=A.onload;A.src=B},Uncompress',345,'data){for(var k=0;k<data.length;k++){var d=data[k];var n=d.length;for(var i=0;i<n;i++){',832,'d[i])=="number"){d[i]=d[d[i]]}}data[k]=d.join("")}',1,822,'data.join(""))}};',6,'Post={',1,':null,Listener',345,'D){if(D.source!=',6,717,1,411,'var E=D.origin;',420,15,'domain;if(','E==null||E==""){E','="localhost"}if(','A==null||A==""){A',1048,'E!=A||!','D.data.substr(','0,6).match(/jsM(CP|LD):/)){return }var B=',1052,'6,3).replace(/ /g,"");',430,1052,'10);if(',6,'Post.Commands[B',']){(',6,1060,'])(C)}},Commands:{SCR',345,'message){',6,1,822,'message)},ERR',345,'A){',6,756,934,'(A,3000)},BGN',345,'A){',6,756,'Start()},END',345,'A){',751,6,756,'End()}',6,756,953,'()}},',881,345,'A,B',355,1,'=B.contentWindow;',0,'A',813,'return ',6,'root+',501,6,574,'loader-post.html?"+A},',953,393,'this.',1,'=null}};',6,765,'={',167,':null,message:nu! ll,text:null,clear:null,Init',393,0,6,15,'body||!',6,579,686,411,'if(',6,403,'stylesReady){','this.message','=',6,'Setup.DIV("message",{visibility:"hidden','"})}',29,1131,'=',6,1134,'",position:"absolute",','bottom:"1px",left:"2px",','backgroundColor',':"#E6E6E6",border:"solid 1px #959595",margin:"0px",padding:"1px 8px",zIndex:102,color:"black",fontSize:"small",width:"auto"})}','this.text','=',6,15,'createTextNode','("");',1131,916,1145,');',1131,'.onmousedown=',6,785,'Cancel},Set',345,750,'if(this.clear){clearTimeout(this.clear',');this.clear=null}if(',6,579,686,'){',0,1145,355,'Init();',0,1145,661,'if(',6,384,'textNodeBug','){',1131,'.innerHTML','=B}',29,1145,'.nodeValue','=B}','this.message.style.',179,'="visible";',751,1187,'cursor="pointer";',0,1187,'cursor){',1187,'cursor="hand"}',1131,'.title=" Cancel Processing of Math "}',29,1187,'cursor="";',1131,'.title=""}}',29,'if(B.substr(0,8)!="Loading "){',6,1,791,'=B}}},Clear',393,1162,')}this.clear=setTimeout("',6,765,'.do! Clear()",1000)},doClear',393,488,'clear',355,'clear=null;',6,1! ,791,'=" ";',488,'text){',1145,1185,'=""}if(',1131,'){',1187,179,'="',181,'"}}},Blank',393,488,167,'||!',6,15,'body',411,'this.blank','=',6,403,'DIV("',167,'",{position:(',6,384,'msiePositionFixedBug','?"absolute":"fixed"),top:"0px",left:"0px",bottom:"0px",right:"0px",zIndex:101,',1143,':"white"});if(',6,384,'msieBlankBug){',1246,1181,'=" ";',1246,896,'110%";',1246,898,'110%"}},UnBlank',393,488,167,'){',6,15,'body.removeChild(',1246,')}',1246,'=null}};',6,'Setup={',7,':[],DIV',345,'D,B',8,'C=',6,15,21,'("div");C.id="jsMath_"+D;','for(var A in ','B){C.style[A]=B[A]}',0,6,15,'body.hasChildNodes){',6,15,'body',916,'C)}',29,6,15,906,'C,',6,15,902,')}return C},Script',345,750,488,7,'[B]){return }',29,'this.',7,'[B]=1}',0,'B.match("^([a-zA-Z]+:/?)?/")){B=',6,'root+B}',6,756,'Load(B,A)},Hidden',393,6,181,'=this.DIV("Hidden",{',179,':"',181,1141,'top:0,left:0,border:0,padding:0,margin:0});',6,'hiddenTop=',6,181,';return },Source',393,'if(',6,'Autoload','&&',6,1347,'.root){',6,'root=',6,! 1347,'.','root}',29,6,'root="";',420,6,15,'getElementsByTagName("','script");',751,733,'A.','length;B++){','var D=A[B].src;if(D&&D.match("(^|/|\\\\\\\\)',6,'js$")){',6,1353,'D.','replace(/',6,'js$/,"");break}}}}if(',6,'root.charAt(','0)=="\\\\"){',6,1353,6,'root.replace','(/\\\\/g,"/")}if(',6,1380,'0)=="/"){if(',6,1380,'1)!="/"){if(',6,15,620,'port){',6,'root=":"+',6,15,620,'port+',6,1357,6,'root="//"+',6,15,620,'host+',6,1357,6,1353,6,15,620,'protocol+',6,1357,29,0,6,696,'(/^[a-z]+:/i)){var D=','new String(',6,15,565,'=new RegExp("/[^/]*/\\\\.\\\\./");',6,1353,'D.replace(new RegExp("[^/]*$"),"")+',6,'root;while(',6,696,'(C)){',6,1353,6,1385,'(C,"/")}}}',6,'Img.',1353,6,701,'fonts/";',6,167,'=',6,701,167,'.gif";this.Domain()},Domain',393,'try{',6,15,'domain}catch(D',411,'var C="";',420,6,15,1046,6,696,'("://([^/]*)/")){C=RegExp.$1}C=C.replace(/:\\d+$/,"");if(C==""||C==A',411,'if(',39,'appName=="Microsoft Internet Explorer"&&',6,37,'=="mac"&&',39,'onLine&&',39,647,'&&',6,15,! 'all',411,'C=C.split(/\\./);A=A.split(/\\./);if(C.length<2||A.! length<2 ||','C[C.length-','1',']!=A[A.length-','1]||',1488,'2',1490,'2]){this.','DomainWarning','();return }var E=',1488,'2]+"."+',1488,'1];for(var B=3;B<=C.length&&B<=A.',1369,'if(',1488,'B',1490,'B]){break}E=',1488,'B]+"."+E}',6,15,668,'E;this.',746,'=1},',1496,393,23,'In order for jsMath to be able to load the additional components that it may need, the ',6,'js file must be ',7,' from a server in the same domain as the page that contains it. Because that is not the case for this page, the',25,'displayed here may not appear correctly.")},','EncodeFont',345,'C',8,'B=',6,'TeX[C];if(B','[0].c',648,411,514,'128;A++){var D=B[A];B[A]=D[3];if(B[A]==null){B[A]={}}B[A].w=D[0];B[A].h=D[1];if(D[2]!=null){B[A].d=D[2]}B[A].c=',6,'TeX.encoding[A]}},Fonts',393,733,6,'TeX.fam','.',1369,420,6,1543,'[B];if(A',355,1526,'(A)}}},TeXfont',345,'C',8,'B=',6,1532,'==null',411,420,6,'EmBoxFor(\'<span class="\'+C+\'">\'+B[65].c','+"</span>");B.hd=A.h;B.dh=0.05;B.d=',6,1563,'+',6,438,'B.hd)+"</span>").h-B.h! d;B.h=B.hd-B.d;','if(C=="',130,'"){B.skewchar=','127}',29,1571,134,1573,'48}}},',467,393,514,6,1543,516,'if(',6,1543,'[A]){this.TeXfont(',6,1543,'[A])}}},Sizes',393,6,'TeXparams','=[];var B;var A;for(A=0;A<',6,47,516,6,1595,'[A]={}}for(B in ',6,'TeX){',832,6,'TeX[B])!="object"){for(A=0;A<',6,47,516,6,1595,'[A][B]=',6,47,'[A]*',6,'TeX[B]/100}}}},Styles',345,'A){',0,'A){A=',6,49,';A[".typeset .scale"]="font-size:"+',6,579,'scale+"%";this.stylesReady=1}',6,759,880,'AddStyleSheet','",A);if(',6,384,'styleChangeDelay','){',6,759,6,'Script,"Delay",1)}},',1632,345,'D',8,'B=',6,15,1364,'head")[0];var A="";for(var E in D){A+=E+" {"+D[E]+"}\\n"}if(',6,15,'createStyleSheet){B.insertAdjacentHTML("beforeEnd",\'<','span style="','display:none">x</span><style type="text/css">\'+A+"</style>")}',29,430,6,15,21,'("style");C.type="text/css";C',916,6,15,1149,'(A));B',916,'C)}},Body',393,488,'inited',411,'this.inited=-','1;',6,403,'Hidden();',1673,'2;',6,384,1171,1673,'3;if(',6,579,167,'){',6,76! 5,'.Blank()}',1673,'4;',6,403,'Styles();',1673,'5;',6,571,1171! ,1673,'6 ;',6,759,6,'Setup,"User","pre-font");',1673,'7;',6,759,6,'Font,"Check");if(',6,'Font.register.length){',6,759,6,'Font,"LoadRegistered")}this.inited=1},User',345,'A){if(',6,'Setup.UserEvent[A',']){(',6,1723,'])()}},UserEvent:{"pre-font":null,onload:null}};',6,'Update={',467,345,'D){',1294,'D){for(var B in D[A]){for(var C in D[A][B]){',6,'TeX[A][B][C]=D[A][B][C]}}}},TeXfontCodes',345,'C){',1294,'C){',733,'C[A].',1369,6,'TeX[A][B].c=C[A][B]}}}};',6,'Browser={allowAbsolute:1,allowAbsoluteDelim:0,','separateSkips',':0,valignBug:0,operaHiddenFix:"",','msieCenterBugFix',':"",','msieInlineBlockFix',':"",msieSpaceFix:"",imgScale:1,renameOK:1,',1636,':0,delay:1,version:0,','TestSpanHeight',393,6,356,'=\'<span><','span style="\'+this.block','+\';height:2em;width:','1px"></span></span>\';var B=',6,'hidden.firstChild;',420,'B.firstChild;this.','spanHeightVaries','=(B',366,'>=A',366,'&&B',366,'>0);','this.spanHeightTooBig','=(B',366,'>A',366,');',6,356,'=""},','TestInlineBlock',393,'this.! block','="display:-moz-inline-box";','this.hasInlineBlock','=',6,'BBoxFor(\'<span style="\'+this.block','+\';width:10px;height:5px"></span>\').w>0;if','(',1789,'){',6,'styles[".typeset .',167,'"]=',6,1798,167,'"].replace(/',169,'/,',1787,');',6,1798,175,'"]=',6,1798,175,1804,169,'/,"")}',29,1787,'="',169,'";',1789,'=',6,1792,1793,'(!',1789,661,1787,'+=";',171,'";',420,6,352,'("x").h;this.mozInlineBlockBug=',6,1792,'+";height:"+A+\'px;width:1px','"></span>x','<',1761,'+";height:"+A+"px;width:1px;vertical-align:-"+A+\'px',498,'h>2*A;this.widthAddsBorder=',6,1792,'+\';',171,';height:1px;width:10px',';border-left:','10px solid',498,'w>10;','this.msieBorderBug','=',6,1792,1842,1843,'\').h!=',6,1792,1842,1854,164,1843,'\').h;','this.blankWidthBug=',1858,'||',6,1792,1762,'0px',498,'h==0},','TestRenameOK',393,6,356,'="<span></span>";',420,6,1765,'A.setAttribute("name","','jsMath_test','");this.renameOK=(',6,15,'getElementsByName("',1890,'").length>0);',6,356,1784,'TestStyleChange',! 393,6,356,'=\'<span ID="',1890,'">x</span>\';var B=',6,1765,42! 0,'B',36 3,';',6,403,1632,'({"#',1890,74,'200%"});this.',1636,'=(B',363,'==A);',6,356,1784,'VersionAtLeast',345,371,1426,'this.version',').split(".");','B=',1426,'B',1932,'if(B[1]==null){B[1]="0"}return A[0]>B[0]||(A[0]==B[0]&&A[1]>=B[1])},Init',393,6,27,'="unknown";this.',1785,479,1756,479,1881,479,1900,479,'MSIE',479,'Mozilla',479,'Opera',479,'OmniWeb',479,'Safari',479,'Konqueror();if(','this.allowAbsoluteDelim','){',6,'Box.DelimExtend=',6,'Box.DelimExtendAbsolute;',6,'Box.Layout=',6,'Box.LayoutAbsolute}',29,6,'Box.DelimExtend=',6,'Box.DelimExtendRelative;',6,'Box.Layout=',6,'Box.LayoutRelative}',488,1748,'){',6,'HTML.Place=',6,'HTML.','PlaceSeparateSkips',';',6,'Typeset.prototype.','Place=',6,1990,1987,'}},MSIE',393,488,1768,'&&!',1776,'){',6,27,'="MSIE";if(',6,37,'=="pc"){this.','IE7=(',1,689,648,');','this.quirks','=(',6,15,'compatMode=="BackCompat");this.msieStandard6=!',2013,'&&!this.IE7;',1961,919,1748,'=1',';this.buttonCheck=1;this.','msieBlankBug=1;this.','msieAccentBug',91! 9,'msieRelativeClipBug','=1;this.msieDivWidthBug=1;this.',1255,919,'msieIntegralBug',919,'waitForImages',919,'msieAlphaBug','=!this.IE7;this.','alphaPrintBug',2037,1750,'="position:relative; ";this.',1752,'=" ',169,';";this.msieTeXfontBaselineBug=!',2013,';',1858,'=',1872,'1;this.msieSpaceFix=\'<',1654,169,'"></span>\';',6,'Macro("joinrel","\\\\mathrel{\\\\kern-5mu}"),',6,'Parser.prototype.mathchardef.','mapstocharOrig','=',6,2058,'mapstochar;',520,6,2058,2063,6,'Macro("mapstochar","\\\\rlap{\\\\',2059,'\\\\,}\\\\kern1mu"),',6,1798,'arial"]="',143,': \'Arial unicode MS\'";',0,'this.IE7||',2013,'){',6,'styles["#',188,'"]=',6,2082,188,1804,190,'/,"',183,'").',1376,201,'/,"");',6,2082,203,'"]=',6,2082,203,1804,190,'/,"',183,'").',1376,201,'/,"");',6,2082,243,'"]="width:','1px; "+',6,2082,243,1804,190,'/,"',183,'").',1376,201,'/,"");',6,1,'.attachEvent("','onscroll",',6,571,'MoveButton',');',488,'IE7){',6,1,2129,'onresize",',6,571,2133,')}this.msieMoveButtonHack=this.IE7}',6,20! 82,313,'"]+=" ','display: inline-block',';";',6,1798,175,'"]='! ,6,1798, 175,1804,169,'/,"");',6,49,'[".tex2math_div"]=',6,49,'["div',56,'"]+"; width: 100%; ',2149,'";',6,49,'[".typeset"]+="; letter-spacing:0";if(','screen.deviceXDPI','&&','screen.logicalXDPI','&&',2174,'!=',2176,355,'imgScale*=',2176,'/',2174,';',6,579,'alpha=0}this.',385,'="<i>x</i>";',6,'EmBoxFor=',6,375,'}',29,'if(',6,37,'=="mac"){this.msieAbsoluteBug',919,'msieButtonBug',2029,2025,'quirks=1;',6,403,'Script("jsMath-msie-mac.js");',6,'Parser.prototype.macros.angle=["Replace","ord",\'<font face="Symbol">‹</font>\',"normal"];',6,2082,203,2114,'42em; "+',6,2082,203,1804,201,'/,"");',6,579,'printwarn=0}}',6,'Macro("not","\\\\mathrel{\\\\rlap{\\\\kern3mu','/}}")}},',1952,393,'if(',6,181,'.ATTRIBUTE_NODE){',6,27,'="',1952,'";if(',6,37,2007,2038,'=1}',1961,'=1;',6,2082,243,'"]=',6,2082,243,1804,'cursor:hand','/,"cursor:pointer");',6,2082,313,'"]=',6,2082,313,1804,2255,'/,"cursor:pointer");',6,2227,'/}}");if(',39,'vendor=="Firefox"){',1931,'=',39,'vendorSub}',29,'if(',39,'userAge! nt.match','(" Firefox/([0-9.]+)([a-z ]|$)")){',1931,'=RegExp.$1}}}},',1956,393,'if(',39,'accentColorName){',6,27,'="',1956,'";','this.allowAbsolute','=',1789,';',1961,'=',2293,';this.valignBug=!',2293,2024,1178,'=1;',6,'noChangeGlobal=1;',0,1789,'){',6,'Setup.Script("jsMath-old-browsers.js")}}},','Opera',393,'if(',1776,'){',6,27,'="Opera";',420,39,2279,'("Opera 7");',2293,'=0;this.delay=10;this.operaHiddenFix="[Processing]";',751,6,2311,1958,393,'if(',39,'appVersion',41,1958,'\\//)){',6,27,'="',1958,'";',420,39,'user'], - ['Agent','.match','("Safari/([0-9]+)");A=(A)?A[1]:400;','for(var B=0;B<','jsMath.','TeX.fam','.length',';B++){if(',4,5,'[B]&&',4,'TeX[',4,5,'[B]]){',4,12,4,5,'[B]].dh=0.1}}',4,'TeX.','axis_height','+=0.05;',4,22,'default_rule_thickness','+=0.025',';this.allowAbsoluteDelim=','A>=125;this.safariIFRAMEbug=A>=312&&A<412;this.safariButtonBug=A<412;this.safariImgBug=1;this.textNodeBug=1;this.buttonCheck=1;this.styleChangeDelay=1}},','Konqueror',':function','(){if(','navigator.product','&&',34,1,'("',31,'")){',4,'browser="',31,'";this.allowAbsolute=0',29,'0;if(navigator.userAgent',1,'(/',31,'\\/(\\d+)\\.(\\d+)/)){if(RegExp.$1<3||(RegExp.$1==3&&RegExp.$2<3)){this.separateSkips=1;this.valignBug=1;',4,'Setup.Script("jsMath-','old-browsers.js")}}',4,'Add(',4,'styles,{".typeset .cmr10','":"font-family: jsMath-','cmr10',', jsMath ','cmr10, serif','",".typeset .','cmbx10',58,63,60,63,', jsMath-cmr10, jsMath cmr10",".typeset .','cmti10',58,69,60,69,68,'cmmi10',58,75,60,75,62,'cmsy10',58! ,81,60,81,62,'cmex10',58,'cmex10, jsMath cmex10','"});',4,'Font.testFont','="jsMath','-',89,'"}}};',4,'Font={testFont:"jsMath-',87,'",','fallback',':"symbol",register:[],message:"<b>No jsMath TeX fonts found</b> -- using',' image fonts instead','.<br/>\\nThese',' may be slow and might not print well.<br/>\\nUse the jsMath control panel to get additional information','.",','extra_message',':\'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>Using',103,'. This',105,'.\',','print_message',':"To print higher-resolution math symbols, click the<br/>\\n<b>Hi-Res Fonts for Printing</b> button on',' the jsMath control panel.<br/>\\n",','alpha_message',':"If the math symbols print as black boxes, turn off <b>image alpha channels</b><br/>\\nusing the <B>Options</B> pane of',115,'Test1',32,'(C',',F,D,E){if(F==null){F=124}if(D==null){D=2}if(E==null){E=""}var B=jsMath.BBoxFor(\'<span style="font-family: \'+E+C+\', serif">\'+jsMath.TeX[C][F].c+"</span>");var A=j! sMath.BBoxFor(\'<span style="font-family: serif">\'+jsMath.TeX! [C][F].c +"</span>");return','(B.w>D*A.w&&B.h!=0)},Test2',32,'(C',122,'(A.w>D*B.w&&B.h!=0)},CheckTeX',':function(){var A=',4,'BBoxFor(\'<span style="font-family',': \'+',4,92,'+\', serif">\'+',4,22,87,'[1','].c+"</span>");',4,'nofonts=((A.w*3>A.h||A.h==0)&&!this.Test1("cmr10','",null,null,"jsMath-"));if(!',4,'nofonts){','return }if(',4,'browser!="Mozilla"||(',4,'platform','=="mac"&&(!',4,'Browser.VersionAtLeast(','1.5)||',4,152,'3)))||(',4,149,'!="mac"&&!',4,152,'3))){A=',4,130,': ',87,', serif">\'+',4,22,87,'[1',139,4,141,'"));if(!',4,144,4,52,'BaKoMa-fonts.js")}}},Check',128,4,'Controls.','cookie;this.CheckTeX();if(',4,144,'if(A.autofont','||A','.font=="tex"){','A.font=this.',101,';if(A.warn){',4,'nofontMessage=1;A.warn=0;',4,183,'SetCookie(0);if','(',4,'window.NoFontMessage','){',4,200,'()}else{','this.Message(this.','message)}}}}else{',187,'){A.font="tex"}if(A',189,'return }}if(',4,'noImgFonts){','A.font="unicode"}if(A','.font=="unicode','"){',4,52,101,'-"+',4,149,'+".js");',4,'B! ox.TeXnonfallback=',4,'Box.TeX',';',4,226,'=',4,'Box.TeXfallback;return }','if(!A.print&&A.printwarn){this.','PrintMessage','((',4,'Browser.','alphaPrintBug&&',4,183,'cookie.alpha)?this.',113,'+this.',116,':this.',113,')}if(',4,237,'waitForImages){',4,'Script.','Push(',4,'Script,"WaitForImage",',4,'blank)}if(A.font=="symbol"){',4,52,101,'-symbols.js");',4,'Box.TeXnonfallback=',4,226,';',4,226,'=',4,232,4,'Img.SetFont','({cmr10',':["all"],',75,275,81,275,87,275,63,275,69,':["all"]});',4,'Img.LoadFont','("cm-fonts")},Message',32,'(A){if(',4,'Element("Warning',40,'return }var ','B=',4,'Setup.DIV("','Warning','",{});B.innerHTML=\'<center><table><tr><td><div ','id="jsMath_noFont"><div ','class="message">\'+A','+\'<div style="text-align:left"><span style="float:left; margin: 8px 0px 0px 20px"><span onclick="',4,183,'Panel()" ','title=" Open ','the ','jsMath Control Panel',' " class="link">',308,'</span></span','><span style="margin: 8px 20px 0px 0px; float:right"><span onclick="'! ,4,'Font.','HideMessage','()" title=" Remove this font warning! message ',309,'Hide this Message',311,'></div><div style="height:6px"></div><br clear="all"/></div></','div><div style="width:22em; height:1px"></div></td></tr></table></center><hr/>\'},',315,128,4,292,'");if(A','){A.style.display="none"}},',234,32,290,4,'Element("','PrintWarning',40,294,'B=',4,297,333,299,301,'+\'</',321,'Register',32,'(H,B){if(typeof (H)=="string"){H={name:H}}if(!',4,'Setup.inited','&&!B){','this.register','[',350,6,']=H;',294,'I=H.name;var A=I.replace(/10$/,"");var F=',4,5,6,';if(H.prefix==null){H.prefix=""}if(!H.style){H.style="font-family: "+H.prefix+I+", serif"}if(!H.styles){H.styles={}}if(!H.macros){H.macros={}}',4,5,'[F]=I;',4,22,'famName[I]=F;H.macros[A]=["HandleFont",F];',4,55,4,'Parser.prototype.macros,H.macros);H.styles[".typeset ."+I]=H.style;',4,'Setup.Styles(H.styles);if(',4,'initialized){',4,252,'Push(',4,'Setup,"TeXfont",I)}var C=',4,183,'cookie;var E=!',4,'nofonts&&H.test(I,H.testChar,H.testFactor,H.prefix);if(E&&C',189,'if(H.tex){H.tex(I,F,H)}retu! rn }if(!E&&C.warn&&C.font=="tex"&&!',4,144,'if(!C.fonts',1,'("/"+I+"/")){C.fonts+=I+"/";',4,183,197,'(!',4,292,40,205,107,')}var G=',4,332,'ExtraFonts");if(G){if(G','.innerHTML','!=""){G',405,'+=","}G',405,'+=" "+H.prefix+I}}}if(C',214,'"||',4,212,'if(H.',101,'){H.',101,'(I,F,H)}',294,'D={};if(C.font=="symbol"&&H.symbol!=null){D[I]=H.symbol(I,F,H)}else{D[I]=["all"]}',4,273,'(D);',4,287,'(I);if(',4,'initialized){',4,252,'Push(',4,'Img,"Scale");',4,252,'Push(',4,'Img,"UpdateFonts")}},LoadRegistered',128,'0;while(A<',350,6,'){this.Register(',350,'[A++],1)}',350,'=[]},Load',32,'(A){',4,'Setup.Script(this.URL(A))},URL',32,'(A){return ',4,'Img.root+A+"/def.js"}};',4,'Controls={cookie:{scale:100,font:"tex",autofont:1,scaleImg:0,alpha:1,warn:1,fonts:"/",printwarn:1,stayhires:0,button:1,progress:1,asynch:0,blank:0,print:0,keep:"0D",global:"auto",hiddenGlobal:1},cookiePath:"/",','noCookiePattern',':/^(file|mk):$/,Init',32,'(){this.panel=',4,297,'panel",{display:"none"});if(!',4,237,'! msieButtonBug){this.Button',204,'setTimeout("',4,183,'Button()! ",500)}} ,Panel',32,'(){',4,'Translate.Cancel();if(this.loaded){this.Main',204,4,252,'delayedLoad(',4,'root+"jsMath-controls.html")}},Button',128,4,297,'button",{});A.',306,308,' ";A',405,'=\'<span onclick="',4,183,'Panel()">jsMath</span>\';if(!',4,'Global.','isLocal&&!',4,'noShowGlobal){A',405,'+=\'<span id="jsMath_global" ',306,'jsMath Global Panel " onclick="',4,497,'Show(1)">Global </span>\'}if(A.offsetWidth<30){A.style.width="auto"}if(!','this.cookie','.button',327,'MoveButton',32,'(){var C=',4,'Controls;if(!C.button){C.button=',4,332,'button")}if(C.button','){C.MoveElement(C.','button,3,2)}var B=20;var A=20;if(C.button){A=C.button.offsetHeight+6;B=A+5}if(C.panel',519,'panel,B,A)}},MoveElement',32,'(D,C,B){if(',4,237,'IE7){var A=document.body;D.style.right','="auto";D.style.','bottom',528,'left=A.clientWidth+A.scrollLeft-D.offsetWidth-C+"px";D.style.top=A.clientHeight+A.scrollTop-D.offsetHeight-B+"px"}else{','D.style.visibility="','hidden";',532,'visible"}},GetCookie',32,33! ,'this.defaults','==null){',538,'={}}',4,55,538,',',508,');this.userSet={};var C=',4,'document.cookie',';if(',4,'window.location','.protocol',1,'(this.',459,')){C=this.','localGetCookie','();','this.isLocalCookie','=1}if(C',1,'(/jsMath=([^;]+)/)){var D=unescape(RegExp.$1).split(/,/);',3,'D',6,';B++){var A=D[B].match(/(.*):(.*)/);if(A[2].match(/^\\d+$/)){A[2]=1*A[2]}',508,'[A[1]]=A[2];this.userSet[A[1]]=1}}},',558,32,'(){return ',4,552,'.search.substr(1)},SetCookie',32,'(F){var B=[];for(var E in ',508,'){if(',538,'[E]==null||',508,'[E]!=',538,'[E]){B[B',6,']=E+":"+',508,'[E]}}B=B.join(",");if(',560,'){if(F==2){return"','jsMath="+escape(B)}','this.','localSetCookie','(B,F)}else{B=escape(B);if(B==""){F=0}if(','this.cookiePath','){B+="; path="+',596,'}if(','this.cookieDomain','){B+="; domain="+',600,'}if(',508,'.keep!="0D"){var A={D',':1000*60*60*24',',W',606,'*7,M',606,'*30,Y',606,'*365};var D=new Date;D.setTime(D.getTime()+',508,'.keep.substr(','0,1)*A[',508,615,'1,1)]);B+=";! expires="+D.toGMTString()}if(B!=""){',4,549,93,'="+B;var C=',! 4,549,'; if(F&&!C',1,'(/jsMath=/)){alert("Cookies must be enabled in order to save jsMath options")}}}return null},',594,32,'(B,C){if(!C){',294,'A=String(',4,552,').replace(/\\?.*/,"");if(B!=""){A+="?',592,'if(A!=',4,552,'.href){this.Reload(A)}},Reload',32,'(A){if(!this.loaded){return }this.loaded=0;',4,348,'=-100;',4,497,'ClearCache();if(A){',4,552,'.replace(A)}else{',4,552,'.reload()}}};',4,'Click={CheckClick',32,'(A){if(!A){A=',4,'window.event}if','(A.altKey){',4,183,'Panel()}},CheckDblClick',32,'(B){if(!B){B=',4,661,'(!',4,'Click.DblClick){',4,'Extension.Require("double-click",1);var A=B;B={};for(var C in A){B[C]=A[C]}}',4,252,'Push(',4,'Click,"DblClick",[B,this.alt])}};',4,'TeX={thinmuskip:3/18,medmuskip:4/18,thickmuskip:5/18,x_height:0.430554,quad:1,num1:0.676508,num2:0.393732,num3:0.44373,denom1:0.685951,denom2:0.344841,sup1:0.412892,sup2:0.362892,sup3:0.288888,sub1:0.15,sub2:0.247217,sup_drop:0.386108,sub_drop:0.05,delim1:2.39,delim2:1,',23,':0.25,',27,':0.06,big_op_spacing1:! 0.111111,big_op_spacing2:0.166666,big_op_spacing3:0.2,big_op_spacing4:0.6,big_op_spacing5:0.1,integer:6553.6,scriptspace:0.05,nulldelimiterspace:0.12,delimiterfactor:901,delimitershortfall:0.5,scale:1,atom:["ord","op","bin","rel","open","close","punct","ord"],fam:["cmr10","',75,'","',81,'","',87,'","',69,'","","',63,'",""],famName:{cmr10:0,',75,':1,',81,':2,',87,':3,',69,':4,',63,':6},encoding:["À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","°","Ñ","Ò","Ó","Ô","Õ","Ö","·","Ø","Ù","Ú","Û","Ü","µ","¶","ß","ï","!",""","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b"! ,"c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","! r","s"," t","u","v","w","x","y","z","{","|","}","~","ÿ"],cmr10:[[0.625',',0.683],[0.','833',706,'778',706,'694',706,'667',706,'75',706,'722',706,'778',706,'722',706,'778',706,'722',706,'583',',0.694,0,{ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15}}],[0.556',',0.694],[0.','556',730,'833',730,'833',730,'278',',0.431],[0.','306',',0.431,0.194],[0.','5',730,'5',730,'5,0.628],[0.5',730,'5,0.568],[0.75',730,'444,0,0.17],[0.5',730,'722',738,'778',738,'5,0.528,0.0972],[0.903,0.683],[1.01',706,'778,0.732,0.0486],[0.278',',0.431,0,{','krn:{"108":-0.278,"76":-0.319}}],[0.278',',0.694,0,{','lig:{"96":','60}}],[0.5',730,'833',',0.694,0.194],[','0.5',',0.75,0.0556],[0.','833',767,'778',730,'278',760,'krn:{"63":0.111,"33":0.111},lig:{"39":34}}],[0.389',',0.75,0.25],[0.','389',775,'5,0.75],[','0.778,0.583,0.0833],[','0.278,0.106',',0.194],[0.','333',758,'lig:{"45":','123}}],[',780,'],[0.5',775,'5,0.644','],[0.5,0.644],[0.5,0.','644',! 790,'644',790,'644',790,'644],[0.5,0.644],[0.278',738,'278',740,'278,0.5',781,'778',',0.367,-0.133],[','0.472,0.5',781,'472',760,761,'62}}],[0.778',730,'75',',0.683,0,{krn:{"','116','":-0.0278,"','67',815,'79',815,'71',815,'85',815,'81',815,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}}],[0.','708',706,'722',706,'764',813,'88',815,'87',815,'65',815,'86',815,'89":-','0.0278}}],[0.','681',706,'653',',0.683,0,{','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67":-0.0278,"71":-0.0278,"81":-0.0278}}],[','0.785',706,'75',706,'361',813,'73":',842,'514',706,'778',813,'79',815,'67',815,'71',815,'81":-',842,'625',813,826,'917',706,'75',706,'778',813,'88',815,'87',815,'65',815,'86',815,'89":-',842,'681',813,'65','":-0.0833,"','111',815,'101',815,'97',815,'46',890,'44":-0.','0833}}],[0.','778,0.683',781,'736',813,'116',815,'67',815,'79',815,'71',815,'85',815,'81',815,826,'556',706,'722',813,'121',815,'101',890,'111',890,'114',8! 90,'97',890,'65',890,'117":-0.',900,'75',706,'75',',0.683,0,{i! c:0.','0 139,',847,'1.03',939,'0139,',847,'0.75',813,'79',815,'67',815,'71',815,'81":-',842,'75',939,'025,krn:{"101',890,'111',890,'114',890,'97',890,'65',890,934,900,'611',706,'278',775,'5',730,'278',775,'5',730,'278,0.668],[0.','278',760,761,'92}}],[0.5',758,'krn:{"118',815,'106":0.0556,"121',815,'119":-',842,'556,0.','694,0',',{krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}}],[0.','444',758,'krn:{"104',815,'107":-',842,'556',730,'444',738,'306',728,'12,"102":11,"108":13}}],[0.5',',0.431,0.194,{','ic:0.','0139,krn:{"','106":',842,'556',760,'krn:{"116',815,'117',815,'98',815,'121',815,'118',815,'119":-',842,980,'306,0.668',781,'528',760,'krn:{"97','":-0.0556,"','101',815,'97',815,'111',815,'99":-',842,'278',730,'833',758,'krn:{"116',815,'117',815,'98',815,'121',815,'118',815,'119":-',842,'556',758,'krn:{"116',815,'117',815,'98',815,'121',815,'118',815,'119":-',842,'5,0.431,0',994,992,'431,0.1! 94',994,'528',740,'392',738,'394',738,'389,0.615,0,{krn:{"121',815,'119":-',842,'556',758,'krn:{"119":-',842,'528',',0.431,0,{ic:0.',1010,'97',1033,'101',815,'97',815,'111',815,'99":-',842,'722',1092,1010,'101',815,'97',815,'111',815,'99":-',842,'528',738,'528',1008,'ic:0.',1010,'111',815,'101',815,'97',815,'46',890,'44":-0.',900,'444',738,'5',1092,'0278,',784,'124}}],[1',1092,'0278}],[0.','5',730,'5,0.668],[0.5,0.668]],',75,':[[0.615',939,'139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',900,'833',813,'127":0.167}}],[0.','763',939,1135,'krn:{"127":0.0833}}],[0.','694',813,1151,'742',939,'0757,',1155,'831',939,'0812,krn:{"61',1033,'59":-0.0556,"58":-0.0556,"127":0.','0556}}],[0.','78',939,'0576,',1155,'583',939,'139',1147,1168,'667',846,1155,'612',939,'11,krn:{"61',1033,1167,1168,'772',939,'0502,',1155,'64',1092,'0037,','krn:{"127":',842,'566',',0.694,0.194,{ic:0.','0528,',1155,'518',1008,'ic:0.0556','}],[0.444',760,'ic:0.0378,krn:{"',1167,1168,'406',758,'krn:{"12! 7":0.0556}}],[0.','438',1197,'0738,',1155,'497',1008,'ic:0.035! 9',',',1 210,'469',760,'ic:0.',1135,1155,'354',758,1210,'576',738,'583',730,'603',1008,1194,842,'494',1092,'0637,krn:{"',1167,'0278}}],[0.','438',1197,'046,',1194,'0.111}}],[0.','57',1092,'0359}],[0.','517',1008,1155,'571',1092,'0359,krn:{"59',1033,'58":-0.',1168,'437',1092,'113,krn:{"',1167,1240,'54',1092,'0359,',1194,842,'596,0.694,0.194,{',1155,'626',1008,1210,'651',1197,'0359,',1194,1245,'622',1092,1248,'466',758,1155,'591',760,1155,'828',1092,1139,'517',1008,1155,'363,0.431,0.0972,{ic:0.0799,',1155,'654',1008,1194,'0.0833}}],[1',804,'1',804,'1',804,'1',804,'0.278',',0.464,-0.0363],[','0.278',1307,'0.5,0.465,-0.0347],[',1310,'0.5',738,'5',738,'5',738,'5',740,'5',740,'5,0.',1075,790,1075,790,'431',781,'278,0.106],[',780,781,'778',',0.539,0.0391],[','0.5,0.75,0.25,{krn:{"1',1033,'65',1033,'77',1033,'78',1033,'89":0.0556,"90":-0.',1168,'778',1333,1310,'0.531',760,1202,',',1155,'75',813,'127":','0.','139}}],[0.','759',939,'0502,',1155,'715',939,'0715,krn:{"61',815,1167,900,'828',939,! 1135,1210,'738',939,'0576,',1155,'643',939,'139',1147,900,'786',846,1155,'831',939,'0812,krn:{"61',1033,1167,1168,'44',939,'0785,',1194,1245,'555',939,'0962',1147,'167}}],[0.','849',939,'0715,krn:{"61',1033,1167,1168,'681',813,1354,842,'97',939,'109,krn:{"','61',1033,1167,900,'803',939,1411,'61',890,'61',815,1167,900,'763',939,1135,1155,'642',939,'139',1147,900,'791,0.683,0.194,{',1155,'759',939,'00773,',1155,'613',939,'0576,krn:{"61',1033,1167,900,'584',939,'139,krn:{"61',815,1167,900,'683',939,1411,'59":-0.111,"',1256,'111,"61',1033,1354,842,'583',939,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}}],[0.','944',939,'139',1464,'828',939,'0785,krn:{"61',890,'61',815,1167,900,'581',939,'222',1464,'683',939,'0715,krn:{"61',1033,1167,900,'389,0.75],[0.389',765,'0.389',765,'1,0.358,-0.142],[',1491,'0.417',760,1194,1245,'529',738,'429',730,'433',758,1210,'52',760,'krn:{"89":0.0556,"90',1033,'106":-0.111,"102":-0.167,"',1151,'466',758,1210,'49',1197,'108,krn:{"',1167,1398,'477'! ,1008,1217,',',1194,842,'576',760,'krn:{"127":-',842,'345,0.66! ],[0.412 ,0.66,0.194,{ic:0.0572,krn:{"59',1033,1256,1168,'521',760,'ic:0.0315}],[0.298',760,'ic:0.0197,',1155,'878',738,'6',738,'485',758,1210,'503',1008,1155,'446',1008,1217,',',1155,'451',1092,1135,'krn:{"',1167,1168,'469',758,1210,'361,0.615,0,{',1155,'572',758,1194,842,'485',1092,'0359,',1194,842,'716',1092,'0269,',1155,'572',758,1194,842,'49',1008,1217,',',1210,'465',1092,'044,',1210,'322',758,1194,842,'384',1008,1155,'636',1008,1194,1245,'5,0.714,0,{ic:0.154}],[0.278',760,'ic:0.399}]],',81,':[[',779,'0.278,0.444,-0.0556],[',779,1310,779,'0.5,0.444,-0.0556],[',779,779,779,779,779,779,779,'1',765,1611,1611,'0.778',1307,'0.778,0.464,-0.0363','],[0.778,0.636,0.136',1626,1626,1626,1626,1626,'],[0.778',804,'0.778,0.483,-0.0169],[0.778',1333,'0.778',1333,'1',1333,'1',1333,'0.778',1333,'0.778',1333,'1',804,'1',804,'0.5',765,'0.5',765,'1',804,'1',765,'1',765,'0.778',1307,'1',804,'1',804,'0.611',765,'0.611',765,'1',804,'1',765,'1',765,'0.778',738,'275,0.556],[1',738,'667',1333,'0.667',13! 33,'0.889',765,'0.889',765,'0',765,'0',804,'0.556',730,'556',730,'667',738,'5',767,'722',730,'722',730,'778',730,'778',730,'611',730,'798',813,'48":0.','194}}],[0.657',939,'0304',',krn:{"48":0.',1356,'527',939,'0583',1716,1356,'771',939,'0278',1716,900,'528',939,'0894',1716,'111}}],[0.','719',939,'0993',1716,1732,'595',',0.683,0.0972,{ic:0.','0593',1716,1732,'845',939,'00965',1716,1732,'545',939,'0738,krn:{"48":',842,'678',1739,'185',1716,1398,'762',939,'0144',1716,1168,'69',813,1712,'139}}],[1.2',813,1712,1356,'82',939,'147',1716,900,'796',939,1725,1716,1732,'696',939,'0822',1716,900,'817,0.683,0.0972,{krn:{"48":',1245,'848',813,1712,900,'606',939,'075',1716,1356,'545',939,'254,krn:{"48":',842,'626',939,'0993',1716,900,'613',939,'0822,krn:{"48":',842,'988',939,'0822',1716,900,'713',939,'146',1716,1356,'668',1739,'0822',1716,900,'725',939,'0794',1716,1356,'667,0.556],[0.',1828,1828,1828,1828,'611',730,'611',730,'444',775,'444',775,'444',775,'444',775,'5',775,'5',775,'389',7! 75,'389',775,'278',775,'5',775,'5',775,'611',775,'5',775,'278'! ,765,'0. 833,0.04,0.96],[0.75',706,'833',706,'417',1197,'111}],[0.',1828,'667,0.556',1626,1626,'],[0.444',765,'0.444',765,'0.444',765,'0.611',765,'0.778,0.694,0.13','],[',1884,'],[',1884,'],[',1884,']],',87,':[[0.458',',0.04,1.16,{n:','16}],[0.458',1894,'17}],[0.417',1894,'104}],[0.417',1894,'105','}],[0.472,0.04,1.16,{n:','106',1902,'107',1902,'108',1902,'109}],[0.583',1894,'110}],[0.583',1894,'111',1902,'68',1902,'69}],[0.333',',0,0.6,{delim:{rep:','12}}],[0.556',1918,'13}}],[0.578',1894,'46}],[0.578',1894,'47}],[0.597',',0.04,1.76,{n:','18}],[0.597',1926,'19}],[0.736',',0.04,2.36,{n:','32}],[0.736',1930,'33}],[0.528',1930,'34}],[0.528',1930,'35}],[0.583',1930,'36}],[0.583',1930,'37}],[0.583',1930,'38}],[0.583',1930,'39}],[0.75',1930,'40}],[0.75',1930,'41}],[0.75',1930,'42}],[0.75',1930,'43}],[1.04',1930,'44}],[1.04',1930,'45}],[0.792',',0.04,2.96,{n:','48}],[0.792',1958,'49}],[0.583',1958,'50}],[0.583',1958,'51}],[0.639',1958,'52}],[0.639',1958,'53}],[0.639',1958,'54}],[0.639',195! 8,'55}],[0.806',1958,'56}],[0.806',1958,'57}],[0.806',',0.04,2.96],[','0.806',1978,'1.28',1978,'1.28',1978,'0.811',1926,'30}],[0.811',1926,'31}],[0.875',',0.04,1.76,{delim:{top:','48,bot:64,rep:66}}],[0.875',1990,'49,bot:65,rep:67}}],[0.667',1990,'50,bot:52,rep:54}}],[0.667',1990,'51,bot:53,rep:55','}}],[0.667,0.04,1.76,{delim:{bot:','52,rep:54',1998,'53,rep:55','}}],[0.667,0,0.6,{delim:{top:','50,rep:54',2002,'51,rep:55','}}],[0.889,0,0.9,{delim:{top:','56,mid:60,bot:58,rep:62',2006,'57,mid:61,bot:59,rep:62',2006,'56,bot:58,rep:62',2006,'57,bot:59,rep:62','}}],[0.889,0,1.8,{delim:{rep:','63',2014,'119}}],[0.889,0,0.3,{delim:{rep:62',2002,'120,bot:121,rep:63}}],[0.875',1990,'56,bot:59,rep:62}}],[0.875',1990,'57,bot:58,rep:62}}],[0.875',1918,'66}}],[0.875',1918,'67}}],[0.611',1926,'28}],[0.611',1926,'29}],[0.833,0,1,{n:71}],[1.11,0.1,1.5],[0.472,0,1.11,{ic:0.194,n:73}],[0.556,0,2.22,{ic:0.444}],[1.','11,0,1,{n:','75','}],[1.51,0.1,1.5],[1.',2032,'77',2034,2032,'79',2034,'06'! ], - [',0,1,{n:88','}],[0.','944,0,1,{n:','89',1,'472,0,1.11',',{ic:0.','194,n:90',1,'833,0,1,{n:','91',1,9,'92',1,9,'93',1,9,'94',1,9,'95}],[1.44,0.1,1.5],[','1.28,0.1,1.5],[0.556,0',',2.22',6,'444}],[','1.11,0.1,1.5],[',27,27,27,27,'0.',2,'97}],[',23,'.722,0,{n:99','}],[1,0.75,0,{n:','100','}],[1.44,0.75],[0.','556,0.722,0,{n:102',37,'103',39,'472',',0.04,1.76,{n:','20',1,'472',45,'21',1,'528',45,'22',1,'528',45,'23',1,'528',45,'24',1,'528',45,'25',1,'667',45,'26',1,'667',45,'27','}],[1,0.04,','1.16,{n:113}],[1',45,'114',75,'2.36,{n:115',75,'2.96,{n:116}],[1.06,0,1.8,{delim:{top:118,bot:116,rep:117}}],[1.06,0,0.6],[1.06,0.04,0.56],[0.778',',0,0.6,{delim:{','top:126,','bot:127,rep:119','}}],[0.667',83,'top:120,rep:63}}],[0.667',83,'bot:121,rep:63}}],[0','.45,0.12],[0',91,91,91,'.778',83,84,'rep:119}}],[0.778',83,85,'}}]],cmti10:[[0.627',',0.683,0,{ic:0.','133',1,'818,0.683],[0.767',102,'094',1,'692,0.683],[0.664',102,'153',1,'743',102,'164',1,'716',102,'12',1,'767',102,'111',! 1,'716',102,'0599',1,'767',102,'111',1,'716',102,'103',1,'613',',0.694',',0.194,{ic:0.','212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15}}],[0.','562',138,139,'103',1,'588',138,139,'103',1,'882',138,139,'103',1,'894',138,139,'103',1,'307',',0.431,0,{ic:0.','0767',1,'332,0.431',139,'0374',1,'511',',0.694],[0.','511',',0.694,0,{ic:0.','0969',1,'511,0.','628,0',6,'083',1,'511',173,'108',1,176,'562,0',6,'103',1,'831',171,'46,0,0.17],[0.537',138,139,'105',1,'716',163,'0751',1,'716',163,199,1,176,'528,0.0972',6,'0919',1,'883',102,'12',1,'985',102,'12',1,'767,0.732,0.0486',6,'094',1,'256,0.431,0,{krn:{"108":-0.256,"76":-0.321}}],[0.307',173,'124,lig:{"96":','60}}],[0.','514',173,'0696',1,'818',138,139,'0662',1,'769',171,'818',',0.75,0.0556',6,'136',1,'767',173,'0969',1,'307',173,'124',',krn:{"','63":0.102,"33":0.102','},lig:{"39":34}}],[0.','409',',0.75,0.25,{ic:0.','162',1,'409',253,'0369',1,176,'75,0',6,'149',1,'767,0.562,0.0567',6,'036! 9',1,'307,0.106',',0.194],[0.','358',163,'0283,','lig:{"45":12! 3}}],[0. ',269,'],[0.511',253,'162',1,176,'644,0',',{ic:0.136}],[0.511,0.644,0',282,282,282,'.194',282,282,282,286,282,282,6,'136',1,'307',163,'0582',1,'307,0.','431',139,'0582',1,300,'5',139,'0756',1,'767,0.367,-0.133',6,'0662',1,176,'5',270,'511',173,'122,lig:{"96":62}}],[0.767',173,'096',1,'743,0.683,0,{','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',326,'86','":-0.102,"','87',330,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','704',102,'103',1,'716',102,'145',1,'755',102,'094',249,'88','":-0.0256,"','87',347,'65',347,'86',347,'89','":-0.0256}}],[0.','678',102,'12',1,'653',102,'133',249,'111',326,'101',326,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',330,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.02! 56}}],[0.','774',102,'0872',1,'743',102,'164',1,'386',102,'158',1,'525',102,'14',1,'769',102,'145',249,372,'627,0.683,0,{krn:{"84',326,'89',326,'86',330,'87',330,333,'897',102,'164',1,'743',102,'164',1,'767',102,'094',249,'88',347,'87',347,'65',347,'86',347,'89',355,'678',102,'103',249,'65":-0.0767}}],[0.','767,0.683',139,'094',1,'729',102,'0387,',324,'0.0256,"84',326,'89',326,'86',330,'87',330,333,'562',102,'12',1,'716',102,'133',249,'121',326,'101',326,'111',369,'117',326,429,'743',102,'164',1,'743',102,'184',249,'111',326,'101',326,'117',369,'65',330,372,'999',102,'184',249,429,'743',102,'158',249,372,'743',102,'194',249,'101',326,'111',369,'117',326,429,'613',102,'145',1,'307',253,'188',1,'514',173,'169',1,'307',253,'105',1,'511',173,'0665',1,300,'668,0',6,'118',1,'307',173,224,'92}}],[0.','511',163,164,1,'46',173,'0631',249,333,'46',163,'0565',249,333,'511',173,'103',',krn:{"108":0.0511}}],[0.','46',163,199,249,333,'307',138,139,140,'12,"102":11,"108":13}}],[0.','46,0.! 431',139,'0885',1,'511',173,164,1,300,'655,0',6,'102',1,300,'6! 55',139, '145',1,'46',173,'108',1,'256',173,'103',548,'818',163,164,1,'562',163,164,249,'39":-0.102}}],[0.511',163,'0631',249,333,176,'431',139,'0631',249,333,'46,0.431',139,'0885',1,'422',163,'108',249,333,'409',163,'0821',1,'332,0.615,0',6,'0949',1,'537',163,164,1,'46',163,'108',1,'664',163,'108',548,'464',163,'12',1,'486,0.431',139,'0885',1,'409',163,'123',1,'511',163,'0921',',lig:{"45":124}}],[1.','02',163,647,1,'511',173,'122',1,176,'668,0',6,'116',1,176,'668,0',6,'105}]],cmbx10:[[0.692',',0.686],[0.','958',666,'894',666,'806',666,'767',666,'9',666,'831',666,'894',666,'831',666,'894',666,'831',666,'671',173,'109,krn:{"39":0.109,"63":0.109,"33":0.109,"41":0.109,"93":0.109},lig:{"105":',141,'639',171,'639',171,'958',171,'958',171,'319',',0.444],[0.','351,0.444',270,'575',171,'575',171,'575,0.632],[0.575',171,'575,0.596],[0.869',171,'511,0,0.17],[0.597',171,'831',700,'894',700,'575,0.542,0.0972],[1.04,0.686],[1.17',666,'894,0.735,0.0486],[0.319',',0.444,0,{krn:{"','108":-0.319,"76"! :-0.378}}],[0.35',',0.694,0,{lig:{"96":',225,'603',171,'958',138,270,'575',238,'],[0.958',238,'],[0.894',171,'319',',0.694,0,{krn:{"','63":0.128,"33":0.128',251,'447',',0.75,0.25],[0.','447',740,'575,0.75],[0.894,0.633,0.133],[0.','319,0.156',270,'383',',0.444,0',',{',274,744,'],[0.575',740,'575,0.644],[','0.575,0.644],[0.575,0.644],[',754,754,754,'0.575,0.644],[0.319',700,'319,0.444',270,'35,0.5',270,'894,0.391,-0.109],[0.543,0.5',270,'543',722,'62}}],[0.894',171,'869',',0.686,0,{krn:{"','116','":-0.0319,"','67',773,'79',773,'71',773,'85',773,'81',773,'84":-0.0958,"89":-0.0958,"86":-0.128,"87":-0.128}}],[','0.818',666,'831',666,'882',771,'88',773,'87',773,'65',773,'86',773,'89','":-0.0319}}],[0.','756',666,'724',',0.686,0',',{','krn:{"111":-0.0958,"101":-0.0958,"117":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.128,"79":-0.0319,"67":-0.0319,"71":-0.0319,"81":-0.0319}}],[','0.904',666,'9',666,'436',771,'73','":0.0319}}],[0.','594',666,'901',771,'79',773,'67',773,'71',773,'81'! ,800,'692',771,784,'1.09',666,'9',666,'864',771,'88',773,'87',! 773,'65' ,773,'86',773,'89',800,'786',771,'65":-0.0958,"111',773,'101',773,'97',773,'46":-0.0958,"44":-0.0958}}],[0.','864,0.686',270,'862',771,'116',773,'67',773,'79',773,'71',773,'85',773,'81',773,784,'0.639',666,'8',771,'121',773,'101":-0.0958,"111":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.0958,"117":-0.0958}}],[0.','885',666,'869',804,6,'016,',806,'1.19',804,6,'016,',806,'0.869',771,'79',773,'67',773,'71',773,'81',800,'869',804,6,'0287',249,878,'703',666,'319',740,'603',171,'319',740,'575',171,'319',171,'319',722,530,'559',720,'118',773,'106":0.0639,"121',773,'119',800,'639',138,',0',',{krn:{"101":0.0319,"111":0.0319,"120":-0.0319,"100":0.0319,"99":0.0319,"113":0.0319,"118":-0.0319,"106":0.0639,"121":-0.0319,"119":-0.0319}}],[0.','511',720,'104',773,'107',800,'639',171,'527',700,'351',173,689,558,'575,0.444',139,'016,krn:{"','106',814,'639',736,'116',773,'117',773,'98',773,'121',773,'118',773,'119',800,'319',171,'351',138,270,'607',736,'97":-0.0639,"101',773,'97',773,'111',773,! '99',800,'319',171,'958',720,'116',773,'117',773,'98',773,'121',773,'118',773,'119',800,'639',720,'116',773,'117',773,'98',773,'121',773,'118',773,'119',800,'575,0.444,0',933,'639',747,286,933,'607,0.444',270,'474',700,'454',700,'447,0.635,0,{krn:{"121',773,'119',800,'639',720,'119',800,1018,',0',6,950,'97":-0.0639,"101',773,'97',773,'111',773,'99',800,'831',747,6,950,'101',773,'97',773,'111',773,'99',800,'607',700,1018,139,950,'111',773,'101',773,'97',773,854,'511',700,1012,6,'0319',648,'15',747,6,1072,1,'575',171,'575',171,'575',138,']]};','jsMath.Img','={fonts:[50,60,70,85,100,120,144,173,207,249,298,358,430],w:{"50":6.9,"60":8.3,"70":9.7,"85":11.8,"100":13.9,"120":16.7,"144":20,"173":24,"207":28.8,"249":34.6,"298":41.4,"358":49.8,"430":59.8},best:4,update:{},factor:1,loaded:0,SetFont',':function(','B){for(var A in B){if(!','this.update[A',']){',1090,']=[]}',1090,']=',1090,'].concat(B[A])}},AddFont',1088,'A,B){if(!',1086,'[A]){',1086,'[A]={}}jsMath.Add(',1086,'[A],B)},Up! dateFonts',':function(){','var D=this.update;','if(!this.loade! d){','re turn }for(var A in D){for(var B=0;B<D[A].length;B++){var C=D[A][B];if(C=="all"){for(C in ','jsMath.TeX[','A]){',1110,'A][C].img','={}}}else{',1110,1113,'={}}}}this.update={}},BestSize',1106,'var B=jsMath.em*this.factor;var A=','this.w[this.fonts[','0]];for(var C=1;C<this.fonts.length;C++){if(B<(',1120,'C]]+2*A)/3){return C-1}A=',1120,'C]]}return C-1},Scale',1106,1108,'return }this.best=this.BestSize();this.em=',1086,'.w[this.fonts[this.best]];','this.scale','=(jsMath.em/this.em);','if(Math.abs(',1131,'-1)<0.12){',1131,'=1}},URL',1088,'A,B,E){var D=(','jsMath.Controls.cookie.','alpha)?"/alpha/":"/plain/";','if(E==null','){E="def.js"}else{E="char"+E+".png"}if(B!=""){B+="/"}','return this.','root+A+D+B+E},LoadFont',1088,'A){',1108,'this.Init()}jsMath.Setup.Script(this.URL(A,""))},Init',1106,'if(',1140,'print||',1140,'stayhires','){',1140,'print=',1140,1155,';this.factor*=3;if(!','jsMath.Controls.','isLocalCookie||!jsMath.Global.isLocal){',1162,'SetCookie(0)}if(','jsMath.Browser! .','alphaPrintBug){',1140,'alpha=0}}var B="0123456789ABCDEF";this.HexCode=[];for(var C=0;C<128;C++){var D=Math.floor(C/16);var A=C-16*D;this.HexCode[C]=B.charAt(D)+B.charAt(A)}this.loaded=1}};jsMath.HTML={Em',1088,'A){var C=','5;if(A<0){C... [truncated message content] |
From: dpvc v. a. <we...@ma...> - 2008-09-12 21:59:27
|
Log Message: ----------- BACKPORT: Make sure flags set on the FormulaUpToConstant object are inherited by the formulas used internally during the checking. Tags: ---- rel-2-4-patches Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.11.2.1.2.1 retrieving revision 1.11.2.1.2.2 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.11.2.1.2.1 -r1.11.2.1.2.2 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -149,6 +149,7 @@ my $n01 = $context->variables->get("n01"); $context->variables->add(n01=>'Parameter') unless $n01 and $n01->{parameter}; $f->{adapt} = $f + "(n00-$n)$f->{constant} + n01"; + return bless $f, $class; } @@ -175,9 +176,9 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - $main::{_cmp_} = sub {return $l->{adapt} == $r}; # a closure to access local variables - my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters - delete $main::{_cmp_}; # remove temprary function + $main::{_cmp_} = sub {return ($l->{adapt}->inherit($l)) == $r}; # a closure to access local variables + my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters + delete $main::{_cmp_}; # remove temprary function return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) @@ -237,7 +238,7 @@ # sub removeConstant { my $self = shift; - main::Formula($self->substitute($self->{constant}=>0))->reduce; + main::Formula($self->substitute($self->{constant}=>0))->reduce->inherit($self); } # |
From: dpvc v. a. <we...@ma...> - 2008-09-12 21:58:30
|
Log Message: ----------- Make sure flags set on the FormulaUpToConstant object are inherited by the formulas used internally during the checking for equality. Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.14 retrieving revision 1.15 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.14 -r1.15 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -149,6 +149,7 @@ my $n01 = $context->variables->get("n01"); $context->variables->add(n01=>'Parameter') unless $n01 and $n01->{parameter}; $f->{adapt} = $f + "(n00-$n)$f->{constant} + n01"; + return bless $f, $class; } @@ -175,9 +176,9 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - $main::{_cmp_} = sub {return $l->{adapt} == $r}; # a closure to access local variables - my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters - delete $main::{_cmp_}; # remove temprary function + $main::{_cmp_} = sub {return ($l->{adapt}->inherit($l)) == $r}; # a closure to access local variables + my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters + delete $main::{_cmp_}; # remove temprary function return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) @@ -237,7 +238,7 @@ # sub removeConstant { my $self = shift; - main::Formula($self->substitute($self->{constant}=>0))->reduce; + main::Formula($self->substitute($self->{constant}=>0))->reduce->inherit($self); } # |
From: dpvc v. a. <we...@ma...> - 2008-09-12 21:38:20
|
Log Message: ----------- BACKPORT: Trap errors when comparing to student answer while trying to determine the correct error message. This prevents extraneous warnings that would confuse the student (and instructor). Tags: ---- rel-2-4-patches Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.11.2.1 retrieving revision 1.11.2.1.2.1 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.11.2.1 -r1.11.2.1.2.1 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -175,9 +175,9 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - $main::_cmp_ = sub {return $l->{adapt} == $r}; # a closure to access local variables - my $equal = main::PG_restricted_eval('&$_cmp_'); # prevents errors with large adaptive parameters - delete $main::{_cmp_}; # remove temprary function + $main::{_cmp_} = sub {return $l->{adapt} == $r}; # a closure to access local variables + my $equal = main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents errors with large adaptive parameters + delete $main::{_cmp_}; # remove temprary function return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) @@ -214,7 +214,10 @@ my $context = $self->context; $context->flags->set(no_parameters=>0); $context->variables->add(x00=>'Real'); - $result = 1 if $self->removeConstant+"n01+n00x00" == $student+"x00"; # must use both parameters + my $correct = $self->removeConstant+"n01+n00x00"; # must use both parameters + $main::{_cmp_} = sub {return $correct == $student+"x00"}; # a closure to access local variables + $result = 1 if main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents domain errors (and other errors) + delete $main::{_cmp_}; # remove temprary function $context->variables->remove('x00'); $context->flags->set(no_parameters=>1); } |
From: dpvc v. a. <we...@ma...> - 2008-09-12 21:36:22
|
Log Message: ----------- Trap errors when comparing to student answer while trying to determine the correct error message. This prevents extraneous warnings that would confuse the student (and instructor). Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.13 retrieving revision 1.14 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.13 -r1.14 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -214,7 +214,10 @@ my $context = $self->context; $context->flags->set(no_parameters=>0); $context->variables->add(x00=>'Real'); - $result = 1 if $self->removeConstant+"n01+n00x00" == $student+"x00"; # must use both parameters + my $correct = $self->removeConstant+"n01+n00x00"; # must use both parameters + $main::{_cmp_} = sub {return $correct == $student+"x00"}; # a closure to access local variables + $result = 1 if main::PG_restricted_eval('&{$main::{_cmp_}}'); # prevents domain errors (and other errors) + delete $main::{_cmp_}; # remove temprary function $context->variables->remove('x00'); $context->flags->set(no_parameters=>1); } |
From: Mike G. v. a. <we...@ma...> - 2008-09-12 15:27:09
|
Log Message: ----------- fix error in defining $attempts Tags: ---- rel-2-4-patches Modified Files: -------------- pg/macros: PGbasicmacros.pl Revision Data ------------- Index: PGbasicmacros.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/PGbasicmacros.pl,v retrieving revision 1.47.2.2.2.5 retrieving revision 1.47.2.2.2.6 diff -Lmacros/PGbasicmacros.pl -Lmacros/PGbasicmacros.pl -u -r1.47.2.2.2.5 -r1.47.2.2.2.6 --- macros/PGbasicmacros.pl +++ macros/PGbasicmacros.pl @@ -1003,7 +1003,8 @@ my $showHint = PG_restricted_eval(q!$main::showHint!); my $displayHint = PG_restricted_eval(q!$envir->{'displayHintsQ'}!); PG_restricted_eval(q!$main::hintExists =1!); - my $attempts = PG_restricted_eval(q!$main::numOfAttempts = 0 unless defined($main::numOfAttempts);!); + PG_restricted_eval(q!$main::numOfAttempts = 0 unless defined($main::numOfAttempts);!); + my $attempts = PG_restricted_eval(q!$main::numOfAttempts!); if ($displayMode eq 'TeX') { if ($printHintForInstructor) { @@ -1023,26 +1024,6 @@ $out ; } -# sub hint { -# my @in = @_; -# my $out = ''; -# -# PG_restricted_eval(q!$main::hintExists =1; -# $main::numOfAttempts = 0 unless defined($main::numOfAttempts); -# !); -# -# if ($displayMode eq 'TeX') { -# $out = ''; # do nothing since hints are not available for download -# } elsif (($envir->{'displayHintsQ'}) and -# PG_restricted_eval(q!($main::numOfAttempts >= $main::showHint)!)) -# -# ## the second test above prevents a hint being shown if a doctored form is submitted -# -# {$out = join(' ',@in);} # show hint -# -# $out ; -# } - sub HINT { TEXT("$BR" . hint(@_) . "$BR") if hint(@_); |
From: Mike G. v. a. <we...@ma...> - 2008-09-12 15:26:12
|
Log Message: ----------- Make sure $attempts is properly defined Modified Files: -------------- pg/macros: PGbasicmacros.pl Revision Data ------------- Index: PGbasicmacros.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/PGbasicmacros.pl,v retrieving revision 1.55 retrieving revision 1.56 diff -Lmacros/PGbasicmacros.pl -Lmacros/PGbasicmacros.pl -u -r1.55 -r1.56 --- macros/PGbasicmacros.pl +++ macros/PGbasicmacros.pl @@ -1003,7 +1003,8 @@ my $showHint = PG_restricted_eval(q!$main::showHint!); my $displayHint = PG_restricted_eval(q!$envir->{'displayHintsQ'}!); PG_restricted_eval(q!$main::hintExists =1!); - my $attempts = PG_restricted_eval(q!$main::numOfAttempts = 0 unless defined($main::numOfAttempts);!); + PG_restricted_eval(q!$main::numOfAttempts = 0 unless defined($main::numOfAttempts);!); + my $attempts = PG_restricted_eval(q!$main::numOfAttempts!); if ($displayMode eq 'TeX') { if ($printHintForInstructor) { |
From: Mike G. v. a. <we...@ma...> - 2008-09-12 14:38:32
|
Log Message: ----------- forward port of change to 2-4-patches Modified Files: -------------- webwork2/lib/WeBWorK/ContentGenerator: Hardcopy.pm Revision Data ------------- Index: Hardcopy.pm =================================================================== RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/Hardcopy.pm,v retrieving revision 1.98 retrieving revision 1.99 diff -Llib/WeBWorK/ContentGenerator/Hardcopy.pm -Llib/WeBWorK/ContentGenerator/Hardcopy.pm -u -r1.98 -r1.99 --- lib/WeBWorK/ContentGenerator/Hardcopy.pm +++ lib/WeBWorK/ContentGenerator/Hardcopy.pm @@ -993,6 +993,7 @@ showHints => $showHints ? 1 : 0, # insure that this value is numeric showSolutions => $showSolutions ? 1 : 0, # (or what? -sam) processAnswers => $showCorrectAnswers ? 1 : 0, + permissionLevel => $db->getPermissionLevel($userID)->permission, }; my $formFields = { }; if ( $versioned && $MergedProblem->problem_id != 0 ) { |
From: Mike G. v. a. <we...@ma...> - 2008-09-12 14:33:36
|
Log Message: ----------- have hint always print hints for instructorsCVS: ---------------------------------------------------------------------- Modified Files: -------------- pg/macros: PGbasicmacros.pl Revision Data ------------- Index: PGbasicmacros.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/PGbasicmacros.pl,v retrieving revision 1.54 retrieving revision 1.55 diff -Lmacros/PGbasicmacros.pl -Lmacros/PGbasicmacros.pl -u -r1.54 -r1.55 --- macros/PGbasicmacros.pl +++ macros/PGbasicmacros.pl @@ -994,23 +994,31 @@ } - sub hint { my @in = @_; my $out = ''; - - PG_restricted_eval(q!$main::hintExists =1; - $main::numOfAttempts = 0 unless defined($main::numOfAttempts); - !); + my $permissionLevel = PG_restricted_eval(q!$main::envir{permissionLevel}!); + my $PRINT_FILE_NAMES_PERMISSION_LEVEL = PG_restricted_eval(q!$envir->{'PRINT_FILE_NAMES_PERMISSION_LEVEL'}!); + my $printHintForInstructor = $permissionLevel >= $PRINT_FILE_NAMES_PERMISSION_LEVEL; + my $showHint = PG_restricted_eval(q!$main::showHint!); + my $displayHint = PG_restricted_eval(q!$envir->{'displayHintsQ'}!); + PG_restricted_eval(q!$main::hintExists =1!); + my $attempts = PG_restricted_eval(q!$main::numOfAttempts = 0 unless defined($main::numOfAttempts);!); if ($displayMode eq 'TeX') { - $out = ''; # do nothing since hints are not available for download - } elsif (($envir->{'displayHintsQ'}) and - PG_restricted_eval(q!($main::numOfAttempts >= $main::showHint)!)) + if ($printHintForInstructor) { + $out = join(' ',@in, "$BR(Show hint after $showHint attempts. ) $BR"); + } else { + $out = ''; # do nothing since hints are not available for download for students + } + } elsif ($printHintForInstructor) { # always print hints for instructor types + $out = join(' ',@in, "$BR(Show hint after $showHint attempts. )$BR "); + } elsif ( $displayHint and ( $attempts > $showHint )) { ## the second test above prevents a hint being shown if a doctored form is submitted - {$out = join(' ',@in);} # show hint + $out = join(' ',@in); + } # show hint $out ; } |
From: Mike G. v. a. <we...@ma...> - 2008-09-12 14:20:47
|
Log Message: ----------- add permissionLevel so that hints will be printed for instructors. Tags: ---- rel-2-4-patches Modified Files: -------------- webwork2/lib/WeBWorK/ContentGenerator: Hardcopy.pm Revision Data ------------- Index: Hardcopy.pm =================================================================== RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/Hardcopy.pm,v retrieving revision 1.94.2.2.2.2 retrieving revision 1.94.2.2.2.3 diff -Llib/WeBWorK/ContentGenerator/Hardcopy.pm -Llib/WeBWorK/ContentGenerator/Hardcopy.pm -u -r1.94.2.2.2.2 -r1.94.2.2.2.3 --- lib/WeBWorK/ContentGenerator/Hardcopy.pm +++ lib/WeBWorK/ContentGenerator/Hardcopy.pm @@ -993,6 +993,7 @@ showHints => $showHints ? 1 : 0, # insure that this value is numeric showSolutions => $showSolutions ? 1 : 0, # (or what? -sam) processAnswers => $showCorrectAnswers ? 1 : 0, + permissionLevel => $db->getPermissionLevel($userID)->permission, }; my $formFields = { }; if ( $versioned && $MergedProblem->problem_id != 0 ) { |