<html>
<head>
<div height="0" hidden="true">
<div id="fuzz763_1026368">
  RunTestSet [fuzz763_1026368]

{{27.3431454,27.3431454}, {29.6862907,25}, {33,25}},
{{33,25}, {36.3137093,25}, {38.6568527,27.3431454}},
{{38.6568527,27.3431454}, {41,29.6862907}, {41,33}},
{{41,33}, {41,36.3137093}, {38.6568527,38.6568527}},
{{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}},
{{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}},
{{38.6341171,38.6795731}, {38.6284409,38.6852493}, {38.6227531,38.6909218}},
{{38.6227531,38.6909218}, {36.2775421,41.0320053}, {32.9638329,41.0290833}},
{{32.9638329,41.0290833}, {29.6501274,41.0261612}, {27.3090477,38.6809464}},
{{27.3090477,38.6809464}, {24.9679718,36.3357391}, {24.9708939,33.0220299}},
{{24.9708939,33.0220299}, {24.973814,29.7083225}, {27.319025,27.3672428}},
{{27.319025,27.3672428}, {27.3209743,27.3652973}, {27.3229256,27.3633518}},
{{27.3229256,27.3633518}, {27.324995,27.3612823}, {27.3270645,27.3592148}},
{{27.3270645,27.3592148}, {27.3312511,27.355032}, {27.3354416,27.3508568}},
{{27.3354416,27.3508568}, {27.3332844,27.3530178}, {27.331131,27.3551788}},
{{27.331131,27.3551788}, {27.3369579,27.3493824}, {27.3431988,27.3431988}},
{{27.3431988,27.3431988}, {27.3431454,27.3431454}},
{{38.6398277,38.6738319}, {38.6447258,38.6689186}},
{{38.6447258,38.6689186}, {38.6447449,38.6689377}},
{{38.6447449,38.6689377}, {38.6422882,38.6713867}, {38.6398277,38.6738319}},
op union
{{41,33}, {41,36.3137093}, {38.6568527,38.6568527}},
{{38.6568527,38.6568527}, {36.3137093,41}, {33,41}},
{{33,41}, {29.6862907,41}, {27.3431454,38.6568527}},
{{27.3431454,38.6568527}, {25,36.3137093}, {25,33}},
{{25,33}, {25,29.6862907}, {27.3431454,27.3431454}},
{{27.3431454,27.3431454}, {29.6862907,25}, {33,25}},
{{33,25}, {36.3137093,25}, {38.6568527,27.3431454}},
{{38.6568527,27.3431454}, {41,29.6862907}, {41,33}},
debugShowQuadIntersection wtTs[0]=1 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{33,25}} wnTs[0]=0 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}}
debugShowQuadLineIntersection wtTs[0]=0 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{27.3431454,27.3431454}} wnTs[0]=1 {{27.3431988,27.3431988}, {27.3431454,27.3431454}}
debugShowQuadIntersection wtTs[0]=1 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}} {{38.6568527,27.3431454}} wnTs[0]=0 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}}
debugShowQuadIntersection wtTs[0]=1 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}} {{41,33}} wnTs[0]=0 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}}
debugShowQuadIntersection wtTs[0]=1 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} {{38.6568527,38.6568527}} wnTs[0]=0 {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}}
debugShowQuadIntersection wtTs[0]=1 {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}} {{38.6447449,38.6689377}} wnTs[0]=0 {{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}}
debugShowQuadIntersection wtTs[0]=1 {{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}} {{38.6341171,38.6795731}} wnTs[0]=0 {{38.6341171,38.6795731}, {38.6284409,38.6852493}, {38.6227531,38.6909218}}
debugShowQuadIntersection wtTs[0]=1 {{38.6341171,38.6795731}, {38.6284409,38.6852493}, {38.6227531,38.6909218}} {{38.6227531,38.6909218}} wnTs[0]=0 {{38.6227531,38.6909218}, {36.2775421,41.0320053}, {32.9638329,41.0290833}}
debugShowQuadIntersection wtTs[0]=1 {{38.6227531,38.6909218}, {36.2775421,41.0320053}, {32.9638329,41.0290833}} {{32.9638329,41.0290833}} wnTs[0]=0 {{32.9638329,41.0290833}, {29.6501274,41.0261612}, {27.3090477,38.6809464}}
debugShowQuadIntersection wtTs[0]=1 {{32.9638329,41.0290833}, {29.6501274,41.0261612}, {27.3090477,38.6809464}} {{27.3090477,38.6809464}} wnTs[0]=0 {{27.3090477,38.6809464}, {24.9679718,36.3357391}, {24.9708939,33.0220299}}
debugShowQuadIntersection wtTs[0]=1 {{27.3090477,38.6809464}, {24.9679718,36.3357391}, {24.9708939,33.0220299}} {{24.9708939,33.0220299}} wnTs[0]=0 {{24.9708939,33.0220299}, {24.973814,29.7083225}, {27.319025,27.3672428}}
debugShowQuadIntersection wtTs[0]=1 {{24.9708939,33.0220299}, {24.973814,29.7083225}, {27.319025,27.3672428}} {{27.319025,27.3672428}} wnTs[0]=0 {{27.319025,27.3672428}, {27.3209743,27.3652973}, {27.3229256,27.3633518}}
debugShowQuadIntersection wtTs[0]=1 {{27.319025,27.3672428}, {27.3209743,27.3652973}, {27.3229256,27.3633518}} {{27.3229256,27.3633518}} wnTs[0]=0 {{27.3229256,27.3633518}, {27.324995,27.3612823}, {27.3270645,27.3592148}}
debugShowQuadIntersection wtTs[0]=1 {{27.3229256,27.3633518}, {27.324995,27.3612823}, {27.3270645,27.3592148}} {{27.3270645,27.3592148}} wnTs[0]=0 {{27.3270645,27.3592148}, {27.3312511,27.355032}, {27.3354416,27.3508568}}
debugShowQuadIntersection wtTs[0]=1 {{27.3270645,27.3592148}, {27.3312511,27.355032}, {27.3354416,27.3508568}} {{27.3354416,27.3508568}} wnTs[0]=0 {{27.3354416,27.3508568}, {27.3332844,27.3530178}, {27.331131,27.3551788}}
debugShowQuadIntersection no intersect {{27.3270645,27.3592148}, {27.3312511,27.355032}, {27.3354416,27.3508568}} {{27.331131,27.3551788}, {27.3369579,27.3493824}, {27.3431988,27.3431988}}
debugShowQuadIntersection wtTs[0]=1 {{27.3354416,27.3508568}, {27.3332844,27.3530178}, {27.331131,27.3551788}} {{27.331131,27.3551788}} wnTs[0]=0 {{27.331131,27.3551788}, {27.3369579,27.3493824}, {27.3431988,27.3431988}}
debugShowQuadLineIntersection wtTs[0]=1 {{27.331131,27.3551788}, {27.3369579,27.3493824}, {27.3431988,27.3431988}} {{27.3431988,27.3431988}} wnTs[0]=0 {{27.3431988,27.3431988}, {27.3431454,27.3431454}}
debugShowQuadIntersection wtTs[0]=0 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{27.3431454,27.3431454}} wnTs[0]=1 {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadIntersection wtTs[0]=0 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{27.3431454,27.3431454}} wtTs[1]=1 {{33,25}} wnTs[0]=0 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} wnTs[1]=1
debugShowQuadIntersection wtTs[0]=1 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{33,25}} wnTs[0]=0 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}}
debugShowQuadIntersection wtTs[0]=0 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}} {{33,25}} wnTs[0]=1 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}}
debugShowQuadIntersection wtTs[0]=0 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}} {{33,25}} wtTs[1]=1 {{38.6568527,27.3431454}} wnTs[0]=0 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}} wnTs[1]=1
debugShowQuadIntersection wtTs[0]=1 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}} {{38.6568527,27.3431454}} wnTs[0]=0 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}}
debugShowQuadIntersection wtTs[0]=1 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}} {{41,33}} wnTs[0]=0 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}}
debugShowQuadIntersection wtTs[0]=0 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}} {{38.6568527,27.3431454}} wnTs[0]=1 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}}
debugShowQuadIntersection wtTs[0]=0 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}} {{38.6568527,27.3431454}} wtTs[1]=1 {{41,33}} wnTs[0]=0 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}} wnTs[1]=1
debugShowQuadIntersection wtTs[0]=0 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} {{41,33}} wtTs[1]=1 {{38.6568527,38.6568527}} wnTs[0]=0 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} wnTs[1]=1
debugShowQuadIntersection wtTs[0]=1 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} {{38.6568527,38.6568527}} wnTs[0]=0 {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}}
debugShowQuadIntersection wtTs[0]=0 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} {{41,33}} wnTs[0]=1 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}}
debugShowQuadIntersection wtTs[0]=0 {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}} {{38.6568527,38.6568527}} wnTs[0]=1 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}}
debugShowQuadIntersection wtTs[0]=0 {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}} {{38.6568527,38.6568527}} wnTs[0]=0 {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}}
debugShowQuadIntersection wtTs[0]=0.0149880862 {{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}} {{38.6445847,38.6690979}} wnTs[0]=0.00261623 {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}}
debugShowQuadIntersection no intersect {{38.6341171,38.6795731}, {38.6284409,38.6852493}, {38.6227531,38.6909218}} {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}}
debugShowQuadIntersection no intersect {{38.6227531,38.6909218}, {36.2775421,41.0320053}, {32.9638329,41.0290833}} {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}}
debugShowQuadIntersection no intersect {{38.6227531,38.6909218}, {36.2775421,41.0320053}, {32.9638329,41.0290833}} {{33,41}, {29.6862907,41}, {27.3431454,38.6568527}}
debugShowQuadIntersection no intersect {{32.9638329,41.0290833}, {29.6501274,41.0261612}, {27.3090477,38.6809464}} {{33,41}, {29.6862907,41}, {27.3431454,38.6568527}}
debugShowQuadIntersection no intersect {{27.3090477,38.6809464}, {24.9679718,36.3357391}, {24.9708939,33.0220299}} {{27.3431454,38.6568527}, {25,36.3137093}, {25,33}}
debugShowQuadIntersection no intersect {{24.9708939,33.0220299}, {24.973814,29.7083225}, {27.319025,27.3672428}} {{27.3431454,38.6568527}, {25,36.3137093}, {25,33}}
debugShowQuadIntersection no intersect {{24.9708939,33.0220299}, {24.973814,29.7083225}, {27.319025,27.3672428}} {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadIntersection no intersect {{27.319025,27.3672428}, {27.3209743,27.3652973}, {27.3229256,27.3633518}} {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadIntersection no intersect {{27.3229256,27.3633518}, {27.324995,27.3612823}, {27.3270645,27.3592148}} {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadIntersection no intersect {{27.3270645,27.3592148}, {27.3312511,27.355032}, {27.3354416,27.3508568}} {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadIntersection wtTs[0]=0 {{27.3354416,27.3508568}, {27.3332844,27.3530178}, {27.331131,27.3551788}} {{27.3354416,27.3508568}} wtTs[1]=1 {{27.331131,27.3551788}} wnTs[0]=0.998355 {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}} wnTs[1]=0.99743327
debugShowQuadIntersection wtTs[0]=0.0266527086 {{27.331131,27.3551788}, {27.3369579,27.3493824}, {27.3431988,27.3431988}} {{27.3314419,27.3548698}} wnTs[0]=0.997499 {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadLineIntersection wtTs[0]=1 {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}} {{27.3431454,27.3431454}} wnTs[0]=1 {{27.3431988,27.3431988}, {27.3431454,27.3431454}}
debugShowQuadLineIntersection wtTs[0]=0 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{27.3431454,27.3431454}} wnTs[0]=1 {{27.3431988,27.3431988}, {27.3431454,27.3431454}}
debugShowQuadLineIntersection no intersect {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}} {{38.6398277,38.6738319}, {38.6447258,38.6689186}}
debugShowQuadLineIntersection wtTs[0]=1 {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}} {{38.6447449,38.6689377}} wnTs[0]=1 {{38.6447258,38.6689186}, {38.6447449,38.6689377}}
debugShowQuadIntersection wtTs[0]=1 {{38.6568527,38.6568527}, {38.6510239,38.6626816}, {38.6447449,38.6689377}} {{38.6447449,38.6689377}} wnTs[0]=0 {{38.6447449,38.6689377}, {38.6422882,38.6713867}, {38.6398277,38.6738319}}
debugShowQuadLineIntersection no intersect {{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}} {{38.6398277,38.6738319}, {38.6447258,38.6689186}}
debugShowQuadLineIntersection wtTs[0]=0 {{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}} {{38.6447449,38.6689377}} wnTs[0]=1 {{38.6447258,38.6689186}, {38.6447449,38.6689377}}
debugShowQuadIntersection wtTs[0]=0 {{38.6447449,38.6689377}, {38.6394348,38.6742554}, {38.6341171,38.6795731}} {{38.6447449,38.6689377}} wnTs[0]=0 {{38.6447449,38.6689377}, {38.6422882,38.6713867}, {38.6398277,38.6738319}}
debugShowQuadIntersection wtTs[0]=1 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} {{38.6568527,38.6568527}} wnTs[0]=0 {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}}
debugShowQuadIntersection wtTs[0]=0 {{41,33}, {41,36.3137093}, {38.6568527,38.6568527}} {{41,33}} wnTs[0]=1 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}}
debugShowQuadIntersection wtTs[0]=1 {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}} {{33,41}} wnTs[0]=0 {{33,41}, {29.6862907,41}, {27.3431454,38.6568527}}
debugShowQuadIntersection wtTs[0]=1 {{33,41}, {29.6862907,41}, {27.3431454,38.6568527}} {{27.3431454,38.6568527}} wnTs[0]=0 {{27.3431454,38.6568527}, {25,36.3137093}, {25,33}}
debugShowQuadIntersection wtTs[0]=1 {{27.3431454,38.6568527}, {25,36.3137093}, {25,33}} {{25,33}} wnTs[0]=0 {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}}
debugShowQuadIntersection wtTs[0]=1 {{25,33}, {25,29.6862907}, {27.3431454,27.3431454}} {{27.3431454,27.3431454}} wnTs[0]=0 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}}
debugShowQuadIntersection wtTs[0]=1 {{27.3431454,27.3431454}, {29.6862907,25}, {33,25}} {{33,25}} wnTs[0]=0 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}}
debugShowQuadIntersection wtTs[0]=1 {{33,25}, {36.3137093,25}, {38.6568527,27.3431454}} {{38.6568527,27.3431454}} wnTs[0]=0 {{38.6568527,27.3431454}, {41,29.6862907}, {41,33}}
debugShowQuadLineIntersection no intersect {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}} {{38.6398277,38.6738319}, {38.6447258,38.6689186}}
debugShowQuadLineIntersection no intersect {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}} {{38.6447258,38.6689186}, {38.6447449,38.6689377}}
debugShowQuadIntersection wtTs[0]=0.00258220891 {{38.6568527,38.6568527}, {36.3137093,41}, {33,41}} {{38.6447449,38.6689377}} wtTs[1]=0.00362998223 {{38.6398277,38.6738319}} wnTs[0]=0 {{38.6447449,38.6689377}, {38.6422882,38.6713867}, {38.6398277,38.6738319}} wnTs[1]=1
debugShowLineIntersection wtTs[0]=1 {{38.6398277,38.6738319}, {38.6447258,38.6689186}} {{38.6447258,38.6689186}} wnTs[0]=0 {{38.6447258,38.6689186}, {38.6447449,38.6689377}}
debugShowQuadLineIntersection wtTs[0]=1 {{38.6447449,38.6689377}, {38.6422882,38.6713867}, {38.6398277,38.6738319}} {{38.6398277,38.6738319}} wnTs[0]=0 {{38.6398277,38.6738319}, {38.6447258,38.6689186}}
debugShowQuadLineIntersection wtTs[0]=0 {{38.6447449,38.6689377}, {38.6422882,38.6713867}, {38.6398277,38.6738319}} {{38.6447449,38.6689377}} wnTs[0]=1 {{38.6447258,38.6689186}, {38.6447449,38.6689377}}
SkOpSegment::debugShowTs - id=0 [o=24,16 t=0 27.3431454,27.3431454 w=1 o=0] [o=26,1 t=1 33,25 w=1 o=0]
SkOpSegment::debugShowTs o id=25 [o=24,16 t=0 27.3431454,27.3431454 w=1 o=0] [o=26,1 t=1 33,25 w=1 o=0] operand
SkOpSegment::debugShowTs + id=0 [o=24,16 t=0 27.3431454,27.3431454 w=1 o=0] [o=26,1 t=1 33,25 w=1 o=0]
SkOpSegment::debugShowTs o id=25 [o=24,16 t=0 27.3431454,27.3431454 w=1 o=0] [o=26,1 t=1 33,25 w=1 o=0] operand
SkOpSegment::debugShowTs - id=1 [o=25,0 t=0 33,25 w=1 o=0] [o=27,2 t=1 38.6568527,27.3431454 w=1 o=0]
SkOpSegment::debugShowTs o id=26 [o=25,0 t=0 33,25 w=1 o=0] [o=27,2 t=1 38.6568527,27.3431454 w=1 o=0] operand
SkOpSegment::debugShowTs + id=1 [o=25,0 t=0 33,25 w=1 o=0] [o=27,2 t=1 38.6568527,27.3431454 w=1 o=0]
SkOpSegment::debugShowTs o id=26 [o=25,0 t=0 33,25 w=1 o=0] [o=27,2 t=1 38.6568527,27.3431454 w=1 o=0] operand
SkOpSegment::debugShowTs - id=2 [o=26,1 t=0 38.6568527,27.3431454 w=1 o=0] [o=20,3 t=1 41,33 w=1 o=0]
SkOpSegment::debugShowTs o id=27 [o=26,1 t=0 38.6568527,27.3431454 w=1 o=0] [o=20,3 t=1 41,33 w=1 o=0] operand
SkOpSegment::debugShowTs + id=2 [o=26,1 t=0 38.6568527,27.3431454 w=1 o=0] [o=20,3 t=1 41,33 w=1 o=0]
SkOpSegment::debugShowTs o id=27 [o=26,1 t=0 38.6568527,27.3431454 w=1 o=0] [o=20,3 t=1 41,33 w=1 o=0] operand
SkOpSegment::debugShowTs - id=3 [o=27,2 t=0 41,33 w=1 o=0] [o=21,4 t=1 38.6568527,38.6568527 w=1 o=0]
SkOpSegment::debugShowTs o id=20 [o=27,2 t=0 41,33 w=1 o=0] [o=21,4 t=1 38.6568527,38.6568527 w=1 o=0] operand
SkOpSegment::debugShowTs + id=3 [o=27,2 t=0 41,33 w=1 o=0] [o=21,4 t=1 38.6568527,38.6568527 w=1 o=0]
SkOpSegment::debugShowTs o id=20 [o=27,2 t=0 41,33 w=1 o=0] [o=21,4 t=1 38.6568527,38.6568527 w=1 o=0] operand
SkOpSegment::debugShowTs - id=14 [o=13 t=0 27.3354416,27.3508568 w=1 o=0] [o=15 t=1 27.331131,27.3551788 w=1 o=0]
SkOpSegment::debugShowTs o id=24 [o=23 t=0 25,33 w=1 o=0] [o=15 t=0.997 27.3314419,27.3548698 w=1 o=0] [o=25,16,0 t=1 27.3431454,27.3431454 w=1 o=0] operand
SkOpSegment::addTPair addTPair this=14 0 other=24 0.998354892
SkOpSegment::addTPair id=14 lower=0 upper=1 other=24 oLower=2 oUpper=2
SkOpSegment::addTPair addTPair this=24 0.99743327 other=14 1
SkOpSegment::addTPair id=24 lower=1 upper=1 other=14 oLower=2 oUpper=3
SkOpSegment::debugShowTs + id=14 [o=24,13 t=0 27.3354416,27.3508568 w=1 o=0] [o=24,15 t=1 27.331131,27.3551788 w=1 o=0]
SkOpSegment::debugShowTs o id=24 [o=23 t=0 25,33 w=1 o=0] [o=14 t=0.997 27.331131,27.3551788 w=1 o=0] [o=15 t=0.997 27.3314419,27.3548698 w=1 o=0] [o=14 t=0.998 27.3354416,27.3508568 w=1 o=0] [o=25,16,0 t=1 27.3431454,27.3431454 w=1 o=0] operand
SkOpSegment::debugShowTs - id=21 [o=20,4,3 t=0 38.6568527,38.6568527 w=1 o=0] [o=5 t=0.00262 38.6445847,38.6690979 w=1 o=0] [o=22 t=1 33,41 w=1 o=0] operand
SkOpSegment::debugShowTs o id=19 [o=18,5,4 t=0 38.6447449,38.6689377 w=1 o=0] [o=17 t=1 38.6398277,38.6738319 w=1 o=0]
SkOpSegment::addTPair addTPair this=21 0.00258220891 other=19 0
SkOpSegment::addTPair id=21 lower=3 upper=3 other=19 oLower=0 oUpper=3
SkOpSegment::addTPair addTPair this=19 1 other=21 0.00362998223
SkOpSegment::addTPair id=19 lower=4 upper=5 other=21 oLower=5 oUpper=5
SkOpSegment::debugShowTs + id=21 [o=20,4,3 t=0 38.6568527,38.6568527 w=1 o=0] [o=19 t=0.00258 38.6447449,38.6689377 w=1 o=0] [o=5 t=0.00262 38.6445847,38.6690979 w=1 o=0] [o=19 t=0.00363 38.6398277,38.6738319 w=1 o=0] [o=22 t=1 33,41 w=1 o=0] operand
SkOpSegment::debugShowTs o id=19 [o=21,18,5,4 t=0 38.6447449,38.6689377 w=1 o=0] [o=21,17 t=1 38.6398277,38.6738319 w=1 o=0]
SkOpContour::calcCoincidentWinding count=5
SkOpSegment::debugShowTs p id=0 [o=24,16 t=0 27.3431454,27.3431454 w=1 o=1] [o=26,1 t=1 33,25 w=1 o=0]
SkOpSegment::debugShowTs o id=25 [o=24,16 t=0 27.3431454,27.3431454 w=0 o=0] [o=26,1 t=1 33,25 w=1 o=0] operand done
SkOpSegment::debugShowTs p id=1 [o=25,0 t=0 33,25 w=1 o=1] [o=27,2 t=1 38.6568527,27.3431454 w=1 o=0]
SkOpSegment::debugShowTs o id=26 [o=25,0 t=0 33,25 w=0 o=0] [o=27,2 t=1 38.6568527,27.3431454 w=1 o=0] operand done
SkOpSegment::debugShowTs p id=2 [o=26,1 t=0 38.6568527,27.3431454 w=1 o=1] [o=20,3 t=1 41,33 w=1 o=0]
SkOpSegment::debugShowTs o id=27 [o=26,1 t=0 38.6568527,27.3431454 w=0 o=0] [o=20,3 t=1 41,33 w=1 o=0] operand done
SkOpSegment::debugShowTs p id=3 [o=27,2 t=0 41,33 w=1 o=1] [o=21,4 t=1 38.6568527,38.6568527 w=1 o=0]
SkOpSegment::debugShowTs o id=20 [o=27,2 t=0 41,33 w=0 o=0] [o=21,4 t=1 38.6568527,38.6568527 w=1 o=0] operand done
SkOpSegment::debugShowTs p id=14 [o=24,13 t=0 27.3354416,27.3508568 w=1 o=-1] [o=24,15 t=1 27.331131,27.3551788 w=1 o=0]
SkOpSegment::debugShowTs o id=24 [o=23 t=0 25,33 w=0 o=0] [o=14 t=0.997 27.331131,27.3551788 w=0 o=0] [o=15 t=0.997 27.3314419,27.3548698 w=0 o=0] [o=14 t=0.998 27.3354416,27.3508568 w=1 o=0] [o=25,16,0 t=1 27.3431454,27.3431454 w=1 o=0] operand
SkOpContour::calcCoincidentWinding count=1
SkOpSegment::debugShowTs p id=21 [o=20,4,3 t=0 38.6568527,38.6568527 w=1 o=0] [o=19 t=0.00258 38.6447449,38.6689377 w=1 o=1] [o=5 t=0.00262 38.6445847,38.6690979 w=1 o=1] [o=19 t=0.00363 38.6398277,38.6738319 w=1 o=0] [o=22 t=1 33,41 w=1 o=0] operand
SkOpSegment::debugShowTs o id=19 [o=21,18,5,4 t=0 38.6447449,38.6689377 w=0 o=0] [o=21,17 t=1 38.6398277,38.6738319 w=1 o=0] done
SkOpSegment::checkEnds id=4 missing t=1 other=21 otherT=0.00258220891 pt=(38.6447449,38.6689377)
SkOpSegment::addTPair addTPair this=4 1 other=21 0.00258220891
SkOpSegment::addTPair id=4 lower=3 upper=6 other=21 oLower=3 oUpper=4
SkOpSegment::checkEnds id=5 missing t=0 other=21 otherT=0.00258220891 pt=(38.6447449,38.6689377)
SkOpSegment::addTPair addTPair this=5 0 other=21 0.00258220891
SkOpSegment::addTPair id=5 lower=0 upper=3 other=21 oLower=3 oUpper=5
SkOpSegment::checkEnds id=13 missing t=1 other=24 otherT=0.998354892 pt=(27.3354416,27.3508568)
SkOpSegment::addTPair addTPair this=13 1 other=24 0.998354892
SkOpSegment::addTPair id=13 lower=1 upper=2 other=24 oLower=3 oUpper=4
SkOpSegment::checkEnds id=15 missing t=0 other=24 otherT=0.99743327 pt=(27.331131,27.3551788)
SkOpSegment::addTPair addTPair this=15 0 other=24 0.99743327
SkOpSegment::addTPair id=15 lower=0 upper=1 other=24 oLower=1 oUpper=2
SkOpSegment::checkEnds id=21 missing t=0.00362998223 other=17 otherT=0 pt=(38.6398277,38.6738319)
SkOpSegment::addTPair addTPair this=21 0.00362998223 other=17 0
SkOpSegment::addTPair id=21 lower=7 upper=8 other=17 oLower=0 oUpper=1
SkOpSegment::addTPair addTPair this=0 0 other=25 0
SkOpSegment::addTPair id=0 lower=0 upper=2 other=25 oLower=0 oUpper=2
SkOpSegment::addTPair addTPair duplicate this=0 0 other=25 0
SkOpSegment::addTPair addTPair this=3 1 other=20 1
SkOpSegment::addTPair id=3 lower=2 upper=4 other=20 oLower=2 oUpper=4
SkOpSegment::addTPair addTPair duplicate this=3 1 other=20 1
SkOpSegment::addTPair addTPair this=21 0.00258220891 other=18 1
SkOpSegment::addTPair id=21 lower=3 upper=6 other=18 oLower=1 oUpper=4
SkOpSegment::addTPair addTPair duplicate this=18 1 other=21 0.00258220891
SkOpContour::joinCoincidence count=5
SkOpContour::joinCoincidence count=1
SkOpSegment::sortAngles [0] tStart=0 [1]
SkOpAngle::after [0/1] 2/1 tStart=0 tEnd=1 < [16/1] 27/27 tStart=1 tEnd=0 < [24/2] 17/21 tStart=1 tEnd=0.998354892  F 4
SkOpSegment::sortAngles [0] tStart=1 [4]
SkOpSegment::sortAngles [1] tStart=1 [3]
SkOpSegment::sortAngles [2] tStart=1 [3]
SkOpSegment::sortAngles [3] tStart=1 [3]
SkOpAngle::after [3/2] 1/5 tStart=1 tEnd=0 < [4/1] 18/17 tStart=0 tEnd=1 < [21/1] 21/17 tStart=0 tEnd=0.00258220891  T 11
SkOpSegment::sortAngles [4] tStart=1 [3]
SkOpAngle::after [4/2] 1/1 tStart=1 tEnd=0 < [21/3] 21/21 tStart=0.00258220891 tEnd=0.0026162254 < [21/2] 1/1 tStart=0.00258220891 tEnd=0  T 5
SkOpAngle::after [4/2] 1/1 tStart=1 tEnd=0 < [18/1] 11/11 tStart=1 tEnd=0 < [21/3] 21/21 tStart=0.00258220891 tEnd=0.0026162254  T 4
SkOpAngle::after [4/2] 1/1 tStart=1 tEnd=0 < [5/1] 21/21 tStart=0 tEnd=0.0149880862 < [18/1] 11/11 tStart=1 tEnd=0  F 4
SkOpAngle::after [18/1] 11/11 tStart=1 tEnd=0 < [5/1] 21/21 tStart=0 tEnd=0.0149880862 < [21/3] 21/21 tStart=0.00258220891 tEnd=0.0026162254  T 7
SkOpSegment::sortAngles [5] tStart=0.0149880862 [4]
SkOpAngle::after [5/2] 1/1 tStart=0.0149880862 tEnd=0 < [21/4] 1/1 tStart=0.0026162254 tEnd=0.00258220891 < [5/3] 21/21 tStart=0.0149880862 tEnd=1  T 12
SkOpAngle::after [5/2] 1/1 tStart=0.0149880862 tEnd=0 < [21/5] 17/17 tStart=0.0026162254 tEnd=0.00362998223 < [21/4] 1/1 tStart=0.0026162254 tEnd=0.00258220891  F 5
SkOpAngle::after [21/4] 1/1 tStart=0.0026162254 tEnd=0.00258220891 < [21/5] 17/17 tStart=0.0026162254 tEnd=0.00362998223 < [5/3] 21/21 tStart=0.0149880862 tEnd=1  T 4
SkOpSegment::sortAngles [13] tStart=1 [1]
SkOpAngle::after [13/1] 17/17 tStart=1 tEnd=0 < [14/1] 21/21 tStart=0 tEnd=1 < [24/1] 5/5 tStart=0.998354892 tEnd=1  T 4
SkOpSegment::sortAngles [14] tStart=1 [3]
SkOpSegment::sortAngles [15] tStart=0.0266527086 [2]
SkOpSegment::sortAngles [21] tStart=0.00362998223 [8]
SkOpAngle::after [21/6] 1/1 tStart=0.00362998223 tEnd=0.0026162254 < [17/1] 5/5 tStart=0 tEnd=1 < [21/7] 17/17 tStart=0.00362998223 tEnd=1  T 4
SkOpSegment::debugShowActiveSpans id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 (27.3431454,27.3431454) tEnd=1 other=25 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=1 (33,25 36.3137093,25 38.6568527,27.3431454) t=0 (33,25) tEnd=1 other=25 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=2 (38.6568527,27.3431454 41,29.6862907 41,33) t=0 (38.6568527,27.3431454) tEnd=1 other=26 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=3 (41,33 41,36.3137093 38.6568527,38.6568527) t=0 (41,33) tEnd=1 other=27 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 (38.6568527,38.6568527) tEnd=1 other=21 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0 (38.6447449,38.6689377) tEnd=0.0149880862 other=21 otherT=0.00258220891 otherIndex=4 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0.0149880862 (38.6445847,38.6690979) tEnd=1 other=21 otherT=0.0026162254 otherIndex=7 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (38.6341171,38.6795731 38.6284409,38.6852493 38.6227531,38.6909218) t=0 (38.6341171,38.6795731) tEnd=1 other=5 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=7 (38.6227531,38.6909218 36.2775421,41.0320053 32.9638329,41.0290833) t=0 (38.6227531,38.6909218) tEnd=1 other=6 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=8 (32.9638329,41.0290833 29.6501274,41.0261612 27.3090477,38.6809464) t=0 (32.9638329,41.0290833) tEnd=1 other=7 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=9 (27.3090477,38.6809464 24.9679718,36.3357391 24.9708939,33.0220299) t=0 (27.3090477,38.6809464) tEnd=1 other=8 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=10 (24.9708939,33.0220299 24.973814,29.7083225 27.319025,27.3672428) t=0 (24.9708939,33.0220299) tEnd=1 other=9 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=11 (27.319025,27.3672428 27.3209743,27.3652973 27.3229256,27.3633518) t=0 (27.319025,27.3672428) tEnd=1 other=10 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=12 (27.3229256,27.3633518 27.324995,27.3612823 27.3270645,27.3592148) t=0 (27.3229256,27.3633518) tEnd=1 other=11 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=13 (27.3270645,27.3592148 27.3312511,27.355032 27.3354416,27.3508568) t=0 (27.3270645,27.3592148) tEnd=1 other=12 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 (27.3354416,27.3508568) tEnd=1 other=24 otherT=0.998354892 otherIndex=5 windSum=? windValue=1 oppValue=-1
SkOpSegment::debugShowActiveSpans id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0 (27.331131,27.3551788) tEnd=0.0266527086 other=24 otherT=0.99743327 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0.0266527086 (27.3314419,27.3548698) tEnd=1 other=24 otherT=0.997499486 otherIndex=3 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=16 (27.3431988,27.3431988 27.3431454,27.3431454) t=0 (27.3431988,27.3431988) tEnd=1 other=15 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 (38.6568527,38.6568527) tEnd=0.00258220891 other=20 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00258220891 (38.6447449,38.6689377) tEnd=0.0026162254 other=18 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.0026162254 (38.6445847,38.6690979) tEnd=0.00362998223 other=5 otherT=0.0149880862 otherIndex=4 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00362998223 (38.6398277,38.6738319) tEnd=1 other=17 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=22 (33,41 29.6862907,41 27.3431454,38.6568527) t=0 (33,41) tEnd=1 other=21 otherT=1 otherIndex=10 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=23 (27.3431454,38.6568527 25,36.3137093 25,33) t=0 (27.3431454,38.6568527) tEnd=1 other=22 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=24 (25,33 25,29.6862907 27.3431454,27.3431454) t=0.998354892 (27.3354416,27.3508568) tEnd=1 other=13 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=17 (38.6398277,38.6738319 38.6447258,38.6689186) t=0 (38.6398277,38.6738319) tEnd=1 other=21 otherT=0.00362998223 otherIndex=8 windSum=? windValue=1 oppValue=0
SkOpSegment::findTop
SkOpAngle::dumpOne [0/2] next=1/1 sect=16/17  s=1 [4] e=0 [2] sgn=1 windVal=1 windSum=? oppVal=1 oppSum=?
SkOpAngle::dumpOne [1/1] next=0/2 sect=30/29  s=0 [0] e=1 [2] sgn=-1 windVal=1 windSum=? oppVal=1 oppSum=? stop
SkOpSegment::markWinding id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [1] (27.3431454,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markWinding id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [0] (27.3431454,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markWinding id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [2] (27.3431454,27.3431454) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=1 (33,25 36.3137093,25 38.6568527,27.3431454) t=0 [0] (33,25) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markWinding id=1 (33,25 36.3137093,25 38.6568527,27.3431454) t=0 [1] (33,25) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=2 (38.6568527,27.3431454 41,29.6862907 41,33) t=0 [0] (38.6568527,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markWinding id=2 (38.6568527,27.3431454 41,29.6862907 41,33) t=0 [1] (38.6568527,27.3431454) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=3 (41,33 41,36.3137093 38.6568527,38.6568527) t=0 [0] (41,33) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markWinding id=3 (41,33 41,36.3137093 38.6568527,38.6568527) t=0 [1] (41,33) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markWinding id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [1] (27.3431454,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markWinding id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [0] (27.3431454,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markWinding id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [2] (27.3431454,27.3431454) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::activeOp id=0 t=0 tEnd=1 op=union miFrom=1 miTo=0 suFrom=1 suTo=0 result=1
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [1] (27.3431454,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [0] (27.3431454,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=0 (27.3431454,27.3431454 29.6862907,25 33,25) t=0 [2] (27.3431454,27.3431454) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
bridgeOp current id=0 from=(27.3431454,27.3431454) to=(33,25)
path.moveTo(27.3431454,27.3431454);
path.quadTo(29.6862907,25, 33,25);
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=1 (33,25 36.3137093,25 38.6568527,27.3431454) t=0 [0] (33,25) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=1 (33,25 36.3137093,25 38.6568527,27.3431454) t=0 [1] (33,25) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
bridgeOp current id=1 from=(33,25) to=(38.6568527,27.3431454)
path.quadTo(36.3137093,25, 38.6568527,27.3431454);
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=2 (38.6568527,27.3431454 41,29.6862907 41,33) t=0 [0] (38.6568527,27.3431454) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=2 (38.6568527,27.3431454 41,29.6862907 41,33) t=0 [1] (38.6568527,27.3431454) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
bridgeOp current id=2 from=(38.6568527,27.3431454) to=(41,33)
path.quadTo(41,29.6862907, 41,33);
SkOpSegment::markWinding id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 [0] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 [1] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 [2] (38.6568527,38.6568527) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last id=4 windSum=? small=0
SkOpSegment::markWinding id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 [0] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 [1] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 [2] (38.6568527,38.6568527) tEnd=0.00258220891 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last id=21 windSum=? small=0
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/2] next=4/1 sect=1/5  s=1 [4] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
SkOpAngle::dumpOne [4/1] next=21/1 sect=18/17  s=0 [0] e=1 [3] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [21/1] next=3/2 sect=21/17  s=0 [0] e=0.00258220891 [3] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpSegment::activeOp id=4 t=0 tEnd=1 op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::markDoneBinary id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 [0] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 [1] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=4 (38.6568527,38.6568527 38.6510239,38.6626816 38.6447449,38.6689377) t=0 [2] (38.6568527,38.6568527) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append id=4 windSum=-2147483647 small=0
SkOpSegment::activeOp id=21 t=0 tEnd=0.00258220891 op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
SkOpSegment::findNextOp chase.append id=21 windSum=-2147483647 small=0
SkOpSegment::markDoneBinary id=3 (41,33 41,36.3137093 38.6568527,38.6568527) t=0 [0] (41,33) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=3 (41,33 41,36.3137093 38.6568527,38.6568527) t=0 [1] (41,33) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
SkOpSegment::findNextOp from:[3] to:[21] start=0 end=3
bridgeOp current id=3 from=(41,33) to=(38.6568527,38.6568527)
path.quadTo(41,36.3137093, 38.6568527,38.6568527);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [21/2] next=4/2 sect=1/1  s=0.00258220891 [3] e=0 [0] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [4/2] next=18/1 sect=1/1  s=1 [6] e=0 [2] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpAngle::dumpOne [18/1] next=5/1 sect=11/11  s=1 [4] e=0 [0] sgn=1 windVal=1 windSum=? done
SkOpAngle::dumpOne [5/1] next=21/3 sect=21/21  s=0 [0] e=0.0149880862 [4] sgn=-1 windVal=1 windSum=? unorderable
SkOpAngle::dumpOne [21/3] next=21/2 sect=21/21  s=0.00258220891 [3] e=0.0026162254 [7] sgn=-1 windVal=1 windSum=? oppVal=1 oppSum=? unorderable operand
SkOpSegment::activeOp id=4 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=18 t=1 tEnd=0 op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=5 t=0 tEnd=0.0149880862 op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDoneBinary id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0 [0] (38.6447449,38.6689377) tEnd=0 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0 [1] (38.6447449,38.6689377) tEnd=0 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0 [2] (38.6447449,38.6689377) tEnd=0 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0 [3] (38.6447449,38.6689377) tEnd=0.0149880862 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=21 t=0.00258220891 tEnd=0.0026162254 op=union miFrom=1 miTo=0 suFrom=1 suTo=0 result=1
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 [0] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 [1] (38.6568527,38.6568527) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0 [2] (38.6568527,38.6568527) tEnd=0.00258220891 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[21] to:[21] start=3 end=7
bridgeOp current id=21 from=(38.6568527,38.6568527) to=(38.6447449,38.6689377)
path.quadTo(38.6510239,38.6626816, 38.6447449,38.6689377);
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00258220891 [3] (38.6447449,38.6689377) tEnd=0.00258220891 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00258220891 [4] (38.6447449,38.6689377) tEnd=0.00258220891 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00258220891 [5] (38.6447449,38.6689377) tEnd=0.00258220891 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00258220891 [6] (38.6447449,38.6689377) tEnd=0.0026162254 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0.0149880862 (38.6445847,38.6690979) tEnd=1 other=21 otherT=0.0026162254 otherIndex=7 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (38.6341171,38.6795731 38.6284409,38.6852493 38.6227531,38.6909218) t=0 (38.6341171,38.6795731) tEnd=1 other=5 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=7 (38.6227531,38.6909218 36.2775421,41.0320053 32.9638329,41.0290833) t=0 (38.6227531,38.6909218) tEnd=1 other=6 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=8 (32.9638329,41.0290833 29.6501274,41.0261612 27.3090477,38.6809464) t=0 (32.9638329,41.0290833) tEnd=1 other=7 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=9 (27.3090477,38.6809464 24.9679718,36.3357391 24.9708939,33.0220299) t=0 (27.3090477,38.6809464) tEnd=1 other=8 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=10 (24.9708939,33.0220299 24.973814,29.7083225 27.319025,27.3672428) t=0 (24.9708939,33.0220299) tEnd=1 other=9 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=11 (27.319025,27.3672428 27.3209743,27.3652973 27.3229256,27.3633518) t=0 (27.319025,27.3672428) tEnd=1 other=10 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=12 (27.3229256,27.3633518 27.324995,27.3612823 27.3270645,27.3592148) t=0 (27.3229256,27.3633518) tEnd=1 other=11 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=13 (27.3270645,27.3592148 27.3312511,27.355032 27.3354416,27.3508568) t=0 (27.3270645,27.3592148) tEnd=1 other=12 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 (27.3354416,27.3508568) tEnd=1 other=24 otherT=0.998354892 otherIndex=5 windSum=? windValue=1 oppValue=-1
SkOpSegment::debugShowActiveSpans id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0 (27.331131,27.3551788) tEnd=0.0266527086 other=24 otherT=0.99743327 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0.0266527086 (27.3314419,27.3548698) tEnd=1 other=24 otherT=0.997499486 otherIndex=3 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=16 (27.3431988,27.3431988 27.3431454,27.3431454) t=0 (27.3431988,27.3431988) tEnd=1 other=15 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.0026162254 (38.6445847,38.6690979) tEnd=0.00362998223 other=5 otherT=0.0149880862 otherIndex=4 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00362998223 (38.6398277,38.6738319) tEnd=1 other=17 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=22 (33,41 29.6862907,41 27.3431454,38.6568527) t=0 (33,41) tEnd=1 other=21 otherT=1 otherIndex=10 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=23 (27.3431454,38.6568527 25,36.3137093 25,33) t=0 (27.3431454,38.6568527) tEnd=1 other=22 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=24 (25,33 25,29.6862907 27.3431454,27.3431454) t=0.998354892 (27.3354416,27.3508568) tEnd=1 other=13 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=17 (38.6398277,38.6738319 38.6447258,38.6689186) t=0 (38.6398277,38.6738319) tEnd=1 other=21 otherT=0.00362998223 otherIndex=8 windSum=? windValue=1 oppValue=0
SkOpSegment::findTop
SkOpAngle::dumpOne [0/1] next=24/2 sect=2/1  s=0 [0] e=1 [3] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1 done
SkOpAngle::dumpOne [24/2] next=16/1 sect=17/21  s=1 [8] e=0.998354892 [5] sgn=1 windVal=1 windSum=? operand stop
SkOpAngle::dumpOne [16/1] next=0/1 sect=27/27  s=1 [3] e=0 [0] sgn=1 windVal=1 windSum=? stop
SkOpSegment::markWinding id=16 (27.3431988,27.3431988 27.3431454,27.3431454) t=0 [0] (27.3431988,27.3431988) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0.0266527086 [2] (27.3314419,27.3548698) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0 [0] (27.331131,27.3551788) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0 [1] (27.331131,27.3551788) tEnd=0.0266527086 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markAngle last id=15 windSum=-1 small=0
SkOpSegment::markWinding id=24 (25,33 25,29.6862907 27.3431454,27.3431454) t=0.998354892 [4] (27.3354416,27.3508568) tEnd=0.998354892 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=24 (25,33 25,29.6862907 27.3431454,27.3431454) t=0.998354892 [5] (27.3354416,27.3508568) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last id=24 windSum=-1 small=0
SkOpSegment::activeOp id=24 t=0.998354892 tEnd=1 op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [24/2] next=16/1 sect=17/21  s=1 [8] e=0.998354892 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand stop
SkOpAngle::dumpOne [16/1] next=0/1 sect=27/27  s=1 [3] e=0 [0] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 stop
SkOpAngle::dumpOne [0/1] next=24/2 sect=2/1  s=0 [0] e=1 [3] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1 done
SkOpSegment::activeOp id=16 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDoneBinary id=16 (27.3431988,27.3431988 27.3431454,27.3431454) t=0 [0] (27.3431988,27.3431988) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0.0266527086 [2] (27.3314419,27.3548698) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markDoneBinary id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0 [0] (27.331131,27.3551788) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=15 (27.331131,27.3551788 27.3369579,27.3493824 27.3431988,27.3431988) t=0 [1] (27.331131,27.3551788) tEnd=0.0266527086 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp chase.append id=15 windSum=-1 small=0
SkOpSegment::activeOp id=0 t=0 tEnd=1 op=union miFrom=1 miTo=0 suFrom=1 suTo=0 result=1
SkOpSegment::markDoneBinary id=24 (25,33 25,29.6862907 27.3431454,27.3431454) t=0.998354892 [4] (27.3354416,27.3508568) tEnd=0.998354892 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDoneBinary id=24 (25,33 25,29.6862907 27.3431454,27.3431454) t=0.998354892 [5] (27.3354416,27.3508568) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[24] to:[0] start=0 end=3
bridgeOp current id=24 from=(27.3354416,27.3508568) to=(27.3431454,27.3431454)
path.moveTo(27.3354416,27.3508568);
path.quadTo(27.3392906,27.3470001, 27.3431454,27.3431454);
SkOpSegment::markWinding id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 [0] (27.3354416,27.3508568) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=-1
SkOpSegment::markWinding id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 [1] (27.3354416,27.3508568) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=-1
SkOpSegment::markAngle last id=14 windSum=-1 small=0
SkOpSegment::debugShowActiveSpans id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0.0149880862 (38.6445847,38.6690979) tEnd=1 other=21 otherT=0.0026162254 otherIndex=7 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (38.6341171,38.6795731 38.6284409,38.6852493 38.6227531,38.6909218) t=0 (38.6341171,38.6795731) tEnd=1 other=5 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=7 (38.6227531,38.6909218 36.2775421,41.0320053 32.9638329,41.0290833) t=0 (38.6227531,38.6909218) tEnd=1 other=6 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=8 (32.9638329,41.0290833 29.6501274,41.0261612 27.3090477,38.6809464) t=0 (32.9638329,41.0290833) tEnd=1 other=7 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=9 (27.3090477,38.6809464 24.9679718,36.3357391 24.9708939,33.0220299) t=0 (27.3090477,38.6809464) tEnd=1 other=8 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=10 (24.9708939,33.0220299 24.973814,29.7083225 27.319025,27.3672428) t=0 (24.9708939,33.0220299) tEnd=1 other=9 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=11 (27.319025,27.3672428 27.3209743,27.3652973 27.3229256,27.3633518) t=0 (27.319025,27.3672428) tEnd=1 other=10 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=12 (27.3229256,27.3633518 27.324995,27.3612823 27.3270645,27.3592148) t=0 (27.3229256,27.3633518) tEnd=1 other=11 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=13 (27.3270645,27.3592148 27.3312511,27.355032 27.3354416,27.3508568) t=0 (27.3270645,27.3592148) tEnd=1 other=12 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 (27.3354416,27.3508568) tEnd=1 other=24 otherT=0.998354892 otherIndex=5 windSum=-1 windValue=1 oppValue=-1
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.0026162254 (38.6445847,38.6690979) tEnd=0.00362998223 other=5 otherT=0.0149880862 otherIndex=4 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00362998223 (38.6398277,38.6738319) tEnd=1 other=17 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=22 (33,41 29.6862907,41 27.3431454,38.6568527) t=0 (33,41) tEnd=1 other=21 otherT=1 otherIndex=10 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=23 (27.3431454,38.6568527 25,36.3137093 25,33) t=0 (27.3431454,38.6568527) tEnd=1 other=22 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=17 (38.6398277,38.6738319 38.6447258,38.6689186) t=0 (38.6398277,38.6738319) tEnd=1 other=21 otherT=0.00362998223 otherIndex=8 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=14 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=1 suTo=0 result=0
SkOpSegment::markDoneBinary id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 [0] (27.3354416,27.3508568) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=-1
SkOpSegment::markDoneBinary id=14 (27.3354416,27.3508568 27.3332844,27.3530178 27.331131,27.3551788) t=0 [1] (27.3354416,27.3508568) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=-1
bridgeOp chase.append id=14 windSum=-1 small=0
SkOpSegment::markWinding id=13 (27.3270645,27.3592148 27.3312511,27.355032 27.3354416,27.3508568) t=0 [0] (27.3270645,27.3592148) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=12 (27.3229256,27.3633518 27.324995,27.3612823 27.3270645,27.3592148) t=0 [0] (27.3229256,27.3633518) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=11 (27.319025,27.3672428 27.3209743,27.3652973 27.3229256,27.3633518) t=0 [0] (27.319025,27.3672428) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=10 (24.9708939,33.0220299 24.973814,29.7083225 27.319025,27.3672428) t=0 [0] (24.9708939,33.0220299) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=9 (27.3090477,38.6809464 24.9679718,36.3357391 24.9708939,33.0220299) t=0 [0] (27.3090477,38.6809464) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=8 (32.9638329,41.0290833 29.6501274,41.0261612 27.3090477,38.6809464) t=0 [0] (32.9638329,41.0290833) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=7 (38.6227531,38.6909218 36.2775421,41.0320053 32.9638329,41.0290833) t=0 [0] (38.6227531,38.6909218) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=6 (38.6341171,38.6795731 38.6284409,38.6852493 38.6227531,38.6909218) t=0 [0] (38.6341171,38.6795731) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0.0149880862 [4] (38.6445847,38.6690979) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last id=5 windSum=-1 small=0
SkOpSegment::debugShowActiveSpans id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0.0149880862 (38.6445847,38.6690979) tEnd=1 other=21 otherT=0.0026162254 otherIndex=7 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (38.6341171,38.6795731 38.6284409,38.6852493 38.6227531,38.6909218) t=0 (38.6341171,38.6795731) tEnd=1 other=5 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=7 (38.6227531,38.6909218 36.2775421,41.0320053 32.9638329,41.0290833) t=0 (38.6227531,38.6909218) tEnd=1 other=6 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=8 (32.9638329,41.0290833 29.6501274,41.0261612 27.3090477,38.6809464) t=0 (32.9638329,41.0290833) tEnd=1 other=7 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=9 (27.3090477,38.6809464 24.9679718,36.3357391 24.9708939,33.0220299) t=0 (27.3090477,38.6809464) tEnd=1 other=8 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=10 (24.9708939,33.0220299 24.973814,29.7083225 27.319025,27.3672428) t=0 (24.9708939,33.0220299) tEnd=1 other=9 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=11 (27.319025,27.3672428 27.3209743,27.3652973 27.3229256,27.3633518) t=0 (27.319025,27.3672428) tEnd=1 other=10 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=12 (27.3229256,27.3633518 27.324995,27.3612823 27.3270645,27.3592148) t=0 (27.3229256,27.3633518) tEnd=1 other=11 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=13 (27.3270645,27.3592148 27.3312511,27.355032 27.3354416,27.3508568) t=0 (27.3270645,27.3592148) tEnd=1 other=12 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.0026162254 (38.6445847,38.6690979) tEnd=0.00362998223 other=5 otherT=0.0149880862 otherIndex=4 windSum=? windValue=1 oppValue=1
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00362998223 (38.6398277,38.6738319) tEnd=1 other=17 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=22 (33,41 29.6862907,41 27.3431454,38.6568527) t=0 (33,41) tEnd=1 other=21 otherT=1 otherIndex=10 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=23 (27.3431454,38.6568527 25,36.3137093 25,33) t=0 (27.3431454,38.6568527) tEnd=1 other=22 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=17 (38.6398277,38.6738319 38.6447258,38.6689186) t=0 (38.6398277,38.6738319) tEnd=1 other=21 otherT=0.00362998223 otherIndex=8 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=13 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=13 (27.3270645,27.3592148 27.3312511,27.355032 27.3354416,27.3508568) t=0 [0] (27.3270645,27.3592148) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=13 from=(27.3354416,27.3508568) to=(27.3270645,27.3592148)
path.moveTo(27.3354416,27.3508568);
path.quadTo(27.3312511,27.355032, 27.3270645,27.3592148);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=12 (27.3229256,27.3633518 27.324995,27.3612823 27.3270645,27.3592148) t=0 [0] (27.3229256,27.3633518) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=12 from=(27.3270645,27.3592148) to=(27.3229256,27.3633518)
path.quadTo(27.324995,27.3612823, 27.3229256,27.3633518);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=11 (27.319025,27.3672428 27.3209743,27.3652973 27.3229256,27.3633518) t=0 [0] (27.319025,27.3672428) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=11 from=(27.3229256,27.3633518) to=(27.319025,27.3672428)
path.quadTo(27.3209743,27.3652973, 27.319025,27.3672428);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=10 (24.9708939,33.0220299 24.973814,29.7083225 27.319025,27.3672428) t=0 [0] (24.9708939,33.0220299) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=10 from=(27.319025,27.3672428) to=(24.9708939,33.0220299)
path.quadTo(24.973814,29.7083225, 24.9708939,33.0220299);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=9 (27.3090477,38.6809464 24.9679718,36.3357391 24.9708939,33.0220299) t=0 [0] (27.3090477,38.6809464) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=9 from=(24.9708939,33.0220299) to=(27.3090477,38.6809464)
path.quadTo(24.9679718,36.3357391, 27.3090477,38.6809464);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=8 (32.9638329,41.0290833 29.6501274,41.0261612 27.3090477,38.6809464) t=0 [0] (32.9638329,41.0290833) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=8 from=(27.3090477,38.6809464) to=(32.9638329,41.0290833)
path.quadTo(29.6501274,41.0261612, 32.9638329,41.0290833);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=7 (38.6227531,38.6909218 36.2775421,41.0320053 32.9638329,41.0290833) t=0 [0] (38.6227531,38.6909218) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=7 from=(32.9638329,41.0290833) to=(38.6227531,38.6909218)
path.quadTo(36.2775421,41.0320053, 38.6227531,38.6909218);
SkOpSegment::findNextOp simple
SkOpSegment::markDoneBinary id=6 (38.6341171,38.6795731 38.6284409,38.6852493 38.6227531,38.6909218) t=0 [0] (38.6341171,38.6795731) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=6 from=(38.6227531,38.6909218) to=(38.6341171,38.6795731)
path.quadTo(38.6284409,38.6852493, 38.6341171,38.6795731);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [5/3] next=5/2 sect=21/21  s=0.0149880862 [4] e=1 [5] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [5/2] next=21/4 sect=1/1  s=0.0149880862 [4] e=0 [0] sgn=1 windVal=1 windSum=? done unorderable
SkOpAngle::dumpOne [21/4] next=21/5 sect=1/1  s=0.0026162254 [7] e=0.00258220891 [3] sgn=1 windVal=1 windSum=? oppVal=1 oppSum=? done unorderable operand
SkOpAngle::dumpOne [21/5] next=5/3 sect=17/17  s=0.0026162254 [7] e=0.00362998223 [8] sgn=-1 windVal=1 windSum=? oppVal=1 oppSum=? operand
SkOpSegment::activeOp id=5 t=0.0149880862 tEnd=0 op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::activeOp id=21 t=0.0026162254 tEnd=0.00258220891 op=union miFrom=1 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::activeOp id=21 t=0.0026162254 tEnd=0.00362998223 op=union miFrom=0 miTo=1 suFrom=1 suTo=0 result=0
SkOpSegment::markDoneBinary id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.0026162254 [7] (38.6445847,38.6690979) tEnd=0.00362998223 newWindSum=-2147483647 newOppSum=-2147483647 oppSum=? windSum=? windValue=1 oppValue=1
SkOpSegment::markDoneBinary id=5 (38.6447449,38.6689377 38.6394348,38.6742554 38.6341171,38.6795731) t=0.0149880862 [4] (38.6445847,38.6690979) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[5] to:[5] start=4 end=0
bridgeOp current id=5 from=(38.6341171,38.6795731) to=(38.6445847,38.6690979)
path.quadTo(38.6393547,38.6743355, 38.6445847,38.6690979);
SkOpSegment::debugShowActiveSpans id=21 (38.6568527,38.6568527 36.3137093,41 33,41) t=0.00362998223 (38.6398277,38.6738319) tEnd=1 other=17 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=22 (33,41 29.6862907,41 27.3431454,38.6568527) t=0 (33,41) tEnd=1 other=21 otherT=1 otherIndex=10 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=23 (27.3431454,38.6568527 25,36.3137093 25,33) t=0 (27.3431454,38.6568527) tEnd=1 other=22 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=17 (38.6398277,38.6738319 38.6447258,38.6689186) t=0 (38.6398277,38.6738319) tEnd=1 other=21 otherT=0.00362998223 otherIndex=8 windSum=? windValue=1 oppValue=0
d:\cygwin\puregit\src\pathops\skopsegment.cpp:472: failed assertion "span.fT > 0"
</div>
</div>

<script type="text/javascript">

var testDivs = [
    fuzz763_1026368,
];

var decimal_places = 3; // make this 3 to show more precision

var tests = [];
var testLines = [];
var testTitles = [];
var testIndex = 0;
var ctx;

var xmin, xmax, focusXmin, focusXmax;
var ymin, ymax, focusYmin, focusYmax;
var scale;
var mouseX, mouseY;
var srcLeft, srcTop;
var screenWidth, screenHeight;
var drawnPts, drawnLines, drawnQuads, drawnCubics;
var curveT = 0;

var pt_labels = 2;
var collect_bounds = false;
var control_lines = 0;
var curve_t = false;
var debug_xy = 1;
var focus_enabled = false;
var focus_on_selection = false;
var step_limit = 0;
var draw_active = false;
var draw_add = false;
var draw_angle = 0;
var draw_deriviatives = 0;
var draw_hints = false;
var draw_hodo = 0;
var draw_id = false;
var draw_intersection = 0;
var draw_intersectT = false;
var draw_legend = true;
var draw_log = false;
var draw_mark = false;
var draw_midpoint = false;
var draw_op = 0;
var draw_sequence = false;
var draw_sort = 0;
var draw_path = 3;
var draw_computed = 0;
var retina_scale = !!window.devicePixelRatio;

var activeCount = 0;
var addCount = 0;
var angleCount = 0;
var opCount = 0;
var sectCount = 0;
var sortCount = 0;
var markCount = 0;
var activeMax = 0;
var addMax = 0;
var angleMax = 0;
var sectMax = 0;
var sectMax2 = 0;
var sortMax = 0;
var markMax = 0;
var opMax = 0;
var stepMax = 0;
var lastIndex = 0;
var hasPath = false;
var hasComputedPath = false;

var firstActiveSpan = -1;
var logStart = -1;
var logRange = 0;

var SPAN_ID = 0;
var SPAN_X1 = SPAN_ID + 1;
var SPAN_Y1 = SPAN_X1 + 1;
var SPAN_X2 = SPAN_Y1 + 1;
var SPAN_Y2 = SPAN_X2 + 1;
var SPAN_L_T = SPAN_Y2 + 1;
var SPAN_L_TX = SPAN_L_T + 1;
var SPAN_L_TY = SPAN_L_TX + 1;
var SPAN_L_TEND = SPAN_L_TY + 1;
var SPAN_L_OTHER = SPAN_L_TEND + 1;
var SPAN_L_OTHERT = SPAN_L_OTHER + 1;
var SPAN_L_OTHERI = SPAN_L_OTHERT + 1;
var SPAN_L_SUM = SPAN_L_OTHERI + 1;
var SPAN_L_VAL = SPAN_L_SUM + 1;
var SPAN_L_OPP = SPAN_L_VAL + 1;

var SPAN_X3 = SPAN_Y2 + 1;
var SPAN_Y3 = SPAN_X3 + 1;
var SPAN_Q_T = SPAN_Y3 + 1;
var SPAN_Q_TX = SPAN_Q_T + 1;
var SPAN_Q_TY = SPAN_Q_TX + 1;
var SPAN_Q_TEND = SPAN_Q_TY + 1;
var SPAN_Q_OTHER = SPAN_Q_TEND + 1;
var SPAN_Q_OTHERT = SPAN_Q_OTHER + 1;
var SPAN_Q_OTHERI = SPAN_Q_OTHERT + 1;
var SPAN_Q_SUM = SPAN_Q_OTHERI + 1;
var SPAN_Q_VAL = SPAN_Q_SUM + 1;
var SPAN_Q_OPP = SPAN_Q_VAL + 1;

var SPAN_X4 = SPAN_Y3 + 1;
var SPAN_Y4 = SPAN_X4 + 1;
var SPAN_C_T = SPAN_Y4 + 1;
var SPAN_C_TX = SPAN_C_T + 1;
var SPAN_C_TY = SPAN_C_TX + 1;
var SPAN_C_TEND = SPAN_C_TY + 1;
var SPAN_C_OTHER = SPAN_C_TEND + 1;
var SPAN_C_OTHERT = SPAN_C_OTHER + 1;
var SPAN_C_OTHERI = SPAN_C_OTHERT + 1;
var SPAN_C_SUM = SPAN_C_OTHERI + 1;
var SPAN_C_VAL = SPAN_C_SUM + 1;
var SPAN_C_OPP = SPAN_C_VAL + 1;

var ACTIVE_LINE_SPAN =        1;
var ACTIVE_QUAD_SPAN =        ACTIVE_LINE_SPAN + 1;
var ACTIVE_CUBIC_SPAN =       ACTIVE_QUAD_SPAN + 1;

var ADD_MOVETO =              ACTIVE_CUBIC_SPAN + 1;
var ADD_LINETO =              ADD_MOVETO + 1;
var ADD_QUADTO =              ADD_LINETO + 1;
var ADD_CUBICTO =             ADD_QUADTO + 1;
var ADD_CLOSE =               ADD_CUBICTO + 1;
var ADD_FILL =                ADD_CLOSE + 1;

var PATH_LINE =               ADD_FILL + 1;
var PATH_QUAD =               PATH_LINE + 1;
var PATH_CUBIC =              PATH_QUAD + 1;

var INTERSECT_LINE =          PATH_CUBIC + 1;
var INTERSECT_LINE_2 =        INTERSECT_LINE + 1;
var INTERSECT_LINE_NO =       INTERSECT_LINE_2 + 1;
var INTERSECT_QUAD_LINE =     INTERSECT_LINE_NO + 1;
var INTERSECT_QUAD_LINE_2 =   INTERSECT_QUAD_LINE + 1;
var INTERSECT_QUAD_LINE_NO =  INTERSECT_QUAD_LINE_2 + 1;
var INTERSECT_QUAD =          INTERSECT_QUAD_LINE_NO + 1;
var INTERSECT_QUAD_2 =        INTERSECT_QUAD + 1;
var INTERSECT_QUAD_NO =       INTERSECT_QUAD_2 + 1;
var INTERSECT_SELF_CUBIC =    INTERSECT_QUAD_NO + 1;
var INTERSECT_SELF_CUBIC_NO = INTERSECT_SELF_CUBIC + 1;
var INTERSECT_CUBIC_LINE =    INTERSECT_SELF_CUBIC_NO + 1;
var INTERSECT_CUBIC_LINE_2 =  INTERSECT_CUBIC_LINE + 1;
var INTERSECT_CUBIC_LINE_3 =  INTERSECT_CUBIC_LINE_2 + 1;
var INTERSECT_CUBIC_LINE_NO = INTERSECT_CUBIC_LINE_3 + 1;
var INTERSECT_CUBIC_QUAD =    INTERSECT_CUBIC_LINE_NO + 1;
var INTERSECT_CUBIC_QUAD_2 =  INTERSECT_CUBIC_QUAD + 1;
var INTERSECT_CUBIC_QUAD_3 =  INTERSECT_CUBIC_QUAD_2 + 1;
var INTERSECT_CUBIC_QUAD_4 =  INTERSECT_CUBIC_QUAD_3 + 1;
var INTERSECT_CUBIC_QUAD_NO = INTERSECT_CUBIC_QUAD_4 + 1;
var INTERSECT_CUBIC =         INTERSECT_CUBIC_QUAD_NO + 1;
var INTERSECT_CUBIC_2 =       INTERSECT_CUBIC + 1;
var INTERSECT_CUBIC_3 =       INTERSECT_CUBIC_2 + 1;
var INTERSECT_CUBIC_4 =       INTERSECT_CUBIC_3 + 1;
// FIXME: add cubic 5- 9
var INTERSECT_CUBIC_NO =      INTERSECT_CUBIC_4 + 1;

var SORT_UNARY =              INTERSECT_CUBIC_NO + 1;
var SORT_BINARY =             SORT_UNARY + 1;

var OP_DIFFERENCE =           SORT_BINARY + 1;
var OP_INTERSECT =            OP_DIFFERENCE + 1;
var OP_UNION =                OP_INTERSECT + 1;
var OP_XOR =                  OP_UNION + 1;

var MARK_LINE =               OP_XOR + 1;
var MARK_QUAD =               MARK_LINE + 1;
var MARK_CUBIC =              MARK_QUAD + 1;
var MARK_DONE_LINE =          MARK_CUBIC + 1;
var MARK_DONE_QUAD =          MARK_DONE_LINE + 1;
var MARK_DONE_CUBIC =         MARK_DONE_QUAD + 1;
var MARK_UNSORTABLE_LINE =    MARK_DONE_CUBIC + 1;
var MARK_UNSORTABLE_QUAD =    MARK_UNSORTABLE_LINE + 1;
var MARK_UNSORTABLE_CUBIC =   MARK_UNSORTABLE_QUAD + 1;
var MARK_SIMPLE_LINE =        MARK_UNSORTABLE_CUBIC + 1;
var MARK_SIMPLE_QUAD =        MARK_SIMPLE_LINE + 1;
var MARK_SIMPLE_CUBIC =       MARK_SIMPLE_QUAD + 1;
var MARK_SIMPLE_DONE_LINE =   MARK_SIMPLE_CUBIC + 1;
var MARK_SIMPLE_DONE_QUAD =   MARK_SIMPLE_DONE_LINE + 1;
var MARK_SIMPLE_DONE_CUBIC =  MARK_SIMPLE_DONE_QUAD + 1;
var MARK_DONE_UNARY_LINE =    MARK_SIMPLE_DONE_CUBIC + 1;
var MARK_DONE_UNARY_QUAD =    MARK_DONE_UNARY_LINE + 1;
var MARK_DONE_UNARY_CUBIC =   MARK_DONE_UNARY_QUAD + 1;
var MARK_ANGLE_LAST =         MARK_DONE_UNARY_CUBIC + 1;

var COMPUTED_SET_1 =          MARK_ANGLE_LAST + 1;
var COMPUTED_SET_2 =          COMPUTED_SET_1 + 1;

var ANGLE_AFTER =             COMPUTED_SET_2;
var ANGLE_AFTER2 =            ANGLE_AFTER + 1;

var ACTIVE_OP =               ANGLE_AFTER2 + 1;

var FRAG_TYPE_LAST =          ACTIVE_OP;

var REC_TYPE_UNKNOWN = -1;
var REC_TYPE_PATH = 0;
var REC_TYPE_SECT = 1;
var REC_TYPE_ACTIVE = 2;
var REC_TYPE_ADD = 3;
var REC_TYPE_SORT = 4;
var REC_TYPE_OP = 5;
var REC_TYPE_MARK = 6;
var REC_TYPE_COMPUTED = 7;
var REC_TYPE_COIN = 8;
var REC_TYPE_ANGLE = 9;
var REC_TYPE_ACTIVE_OP = 10;
var REC_TYPE_LAST = REC_TYPE_ACTIVE_OP;

function strs_to_nums(strs) {
    var result = [];
    for (var idx = 1; idx < strs.length; ++idx) {
        var str = strs[idx];
        var num = parseFloat(str);
        if (isNaN(num)) {
            result.push(str);
        } else {
            result.push(num);
        }
    }
    return result;
}

function filter_str_by(id, str, regex, array) {
    if (regex.test(str)) {
        var strs = regex.exec(str);
        var result = strs_to_nums(strs);
        array.push(id);
        array.push(result);
        return true;
    }
    return false;
}

function construct_regexp2(pattern) {
    var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
    escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
    escape = escape.replace(/CUBIC_VAL/g, "\\(P_VAL P_VAL P_VAL P_VAL\\)");
    escape = escape.replace(/QUAD_VAL/g, "\\(P_VAL P_VAL P_VAL\\)");
    escape = escape.replace(/LINE_VAL/g, "\\(P_VAL P_VAL\\)");
    escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
    escape = escape.replace(/PT_VAL/g, "\\(P_VAL\\)");
    escape = escape.replace(/P_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?, ?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
    escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
    escape = escape.replace(/PATH/g, "pathB?");
    escape = escape.replace(/IDX/g, "(\\d+)");
    escape = escape.replace(/NUM/g, "(-?\\d+)");
    escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
    return new RegExp(escape, 'i');
}

function construct_regexp2c(pattern) {
    var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
    escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
    escape = escape.replace(/CUBIC_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}");
    escape = escape.replace(/QUAD_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}");
    escape = escape.replace(/LINE_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}\\}");
    escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
    escape = escape.replace(/PT_VAL/g, "\\{\\{P_VAL\\}\\}");
    escape = escape.replace(/P_VAL/g, "(?:f?[xX] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?,(?: f?[yY] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
    escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
    escape = escape.replace(/OPER/g, "[a-z]+");
    escape = escape.replace(/PATH/g, "pathB?");
    escape = escape.replace(/T_F/g, "([TF])");
    escape = escape.replace(/IDX/g, "(\\d+)");
    escape = escape.replace(/NUM/g, "(-?\\d+)");
    escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
    return new RegExp(escape, 'i');
}

function match_regexp(str, lineNo, array, id, pattern) {
    var regex = construct_regexp2(pattern);
    if (filter_str_by(id, str, regex, array)) {
        return true;
    }
    regex = construct_regexp2c(pattern);
    return filter_str_by(id, str, regex, array);
}

function endsWith(str, suffix) {
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

function parse_all(test) {
    var lines = test.match(/[^\r\n]+/g);
    var records = []; // a rec can be the original paths, a set of intersections, a set of active spans, a sort, or a path add
    var record = [];
    var recType = REC_TYPE_UNKNOWN;
    var lastLineNo;
    var moveX, moveY;
    for (var lineNo = 0; lineNo < lines.length; ++lineNo) {
        var line = lines[lineNo];
        if (line.length == 0) {
            continue;
        }
        var opStart = "SkOpSegment::";
        if (line.lastIndexOf(opStart, 0) === 0) {
            line = line.substr(opStart.length);
        }
        var angleStart = "SkOpAngle::";
        if (line.lastIndexOf(angleStart, 0) === 0) {
            line = line.substr(angleStart.length);
        }
        var type = line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ACTIVE 
                : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN 
                : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT
                : line.lastIndexOf("activeOp", 0) === 0 ? REC_TYPE_ACTIVE_OP
                : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
                : line.lastIndexOf("debugOne", 0) === 0 ? REC_TYPE_SORT
                : line.lastIndexOf("dumpOne", 0) === 0 ? REC_TYPE_SORT
                : line.lastIndexOf("pathB.", 0) === 0 ? REC_TYPE_ADD
                : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
                : line.lastIndexOf("after", 0) === 0 ? REC_TYPE_ANGLE
                : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
                : line.lastIndexOf("  {{", 0) === 0 ? REC_TYPE_COMPUTED
                : line.lastIndexOf("{{", 0) === 0 ? REC_TYPE_PATH
                : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
                : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
                : REC_TYPE_UNKNOWN;
        if (recType != type || recType == REC_TYPE_ADD || recType == REC_TYPE_SECT
                || recType == REC_TYPE_ACTIVE_OP || recType == REC_TYPE_ANGLE) {
            if (recType != REC_TYPE_UNKNOWN) {
                records.push(recType);
                records.push(lastLineNo);
                records.push(record);
            }
            record = [];
            recType = type;
            lastLineNo = lineNo;
        }
        var found = false;
        switch (recType) {
            case REC_TYPE_ACTIVE:
                found = match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
" id=IDX LINE_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=NUM"
                ) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
" id=IDX QUAD_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=NUM"
                ) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
" id=IDX CUBIC_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=NUM"
                );
                break;
            case REC_TYPE_ACTIVE_OP:
                found = match_regexp(line, lineNo, record, ACTIVE_OP, "activeOp" +
" id=IDX t=T_VAL tEnd=T_VAL op=OPER miFrom=NUM miTo=NUM suFrom=NUM suTo=NUM result=IDX"
                );
                break;
            case REC_TYPE_ADD:
                if (match_regexp(line, lineNo, record, ADD_MOVETO, "PATH.moveTo(P_VAL);")) {
                    moveX = record[1][0];
                    moveY = record[1][1];
                    found = true;
                } else if (match_regexp(line, lineNo, record, ADD_LINETO, "PATH.lineTo(P_VAL);")) {
                    record[1].unshift(moveY);
                    record[1].unshift(moveX);
                    moveX = record[1][2];
                    moveY = record[1][3];
                    found = true;
                } else if (match_regexp(line, lineNo, record, ADD_QUADTO, "PATH.quadTo(P_VAL, P_VAL);")) {
                    record[1].unshift(moveY);
                    record[1].unshift(moveX);
                    moveX = record[1][4];
                    moveY = record[1][5];
                    found = true;
                } else if (match_regexp(line, lineNo, record, ADD_CUBICTO, "PATH.cubicTo(P_VAL, P_VAL, P_VAL);")) {
                    record[1].unshift(moveY);
                    record[1].unshift(moveX);
                    moveX = record[1][6];
                    moveY = record[1][7];
                    found = true;
                } else if (match_regexp(line, lineNo, record, ADD_FILL, "PATH.setFillType(FILL_TYPE);")) {
                    found = true;
                } else {
                    found = match_regexp(line, lineNo, record, ADD_CLOSE, "PATH.close();");
                }
                break;
            case REC_TYPE_ANGLE:
                found = match_regexp(line, lineNo, record, ANGLE_AFTER, "after " +
"id=IDX IDX/IDX tStart=T_VAL tEnd=T_VAL < id=IDX IDX/IDX tStart=T_VAL tEnd=T_VAL < id=IDX IDX/IDX tStart=T_VAL tEnd=T_VAL  T_F IDX");
                if (found) {
                    break;
                }
                found = match_regexp(line, lineNo, record, ANGLE_AFTER2, "after " +
"[IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL  T_F IDX");
                break;
            case REC_TYPE_COIN:
                found = true;
                break;
            case REC_TYPE_COMPUTED:
                found = line ==  "computed quadratics given"
                  || match_regexp(line, lineNo, record, COMPUTED_SET_1, "computed quadratics set 1"
                ) || match_regexp(line, lineNo, record, COMPUTED_SET_2, "computed quadratics set 2"
                ) || match_regexp(line, lineNo, record, PATH_QUAD, "  QUAD_VAL,"
                ) || match_regexp(line, lineNo, record, PATH_CUBIC, "  CUBIC_VAL,"
                );
                break;
            case REC_TYPE_PATH:
                found = match_regexp(line, lineNo, record, PATH_LINE, "LINE_VAL"
                ) || match_regexp(line, lineNo, record, PATH_QUAD, "QUAD_VAL"
                ) || match_regexp(line, lineNo, record, PATH_CUBIC, "CUBIC_VAL"
                );
                break;
            case REC_TYPE_SECT:
                found = match_regexp(line, lineNo, record, INTERSECT_LINE, "debugShowLineIntersection" +
" wtTs[0]=T_VAL LINE_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_LINE_2, "debugShowLineIntersection" +
" wtTs[0]=T_VAL LINE_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_LINE_NO, "debugShowLineIntersection" +
" no intersect LINE_VAL LINE_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE, "debugShowQuadLineIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_2, "debugShowQuadLineIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_NO, "debugShowQuadLineIntersection" +
" no intersect QUAD_VAL LINE_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_QUAD, "debugShowQuadIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_2, "debugShowQuadIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_NO, "debugShowQuadIntersection" +
" no intersect QUAD_VAL QUAD_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE, "debugShowCubicLineIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_2, "debugShowCubicLineIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_3, "debugShowCubicLineIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_NO, "debugShowCubicLineIntersection" +
" no intersect CUBIC_VAL LINE_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_2, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_3, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_4, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_NO, "debugShowCubicQuadIntersection" +
" no intersect CUBIC_VAL QUAD_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_2, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_3, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_4, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_NO, "debugShowCubicIntersection" +
" no intersect CUBIC_VAL CUBIC_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL"
                ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC_NO, "debugShowCubicIntersection" +
" no self intersect CUBIC_VAL"
                );
                break;
            case REC_TYPE_SORT:
                var hasDone = / done/.test(line);
                var hasUnorderable = / unorderable/.test(line);
                var hasSmall = / small/.test(line);
                var hasTiny = / tiny/.test(line);
                var hasOperand = / operand/.test(line);
                var hasStop = / stop/.test(line);
                line.replace(/[ a-z]+$/, "");
                found = match_regexp(line, lineNo, record, SORT_UNARY, "debugOne" +
" [IDX/IDX] next=IDX/IDX sect=IDX/IDX  s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
                ) || match_regexp(line, lineNo, record, SORT_BINARY, "debugOne" +
" [IDX/IDX] next=IDX/IDX sect=IDX/IDX  s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT oppVal=IDX oppSum=OPT"
                ) || match_regexp(line, lineNo, record, SORT_UNARY, "dumpOne" +
" [IDX/IDX] next=IDX/IDX sect=NUM/NUM  s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
                ) || match_regexp(line, lineNo, record, SORT_BINARY, "dumpOne" +
" [IDX/IDX] next=IDX/IDX sect=NUM/NUM  s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT oppVal=IDX oppSum=OPT"
                );
                if (found) {
                    record[1].push(hasDone);
                    record[1].push(hasUnorderable);
                    record[1].push(hasSmall);
                    record[1].push(hasTiny);
                    record[1].push(hasOperand);
                    record[1].push(hasStop);
                }
                break;
            case REC_TYPE_MARK:
                found = match_regexp(line, lineNo, record, MARK_LINE, "markWinding" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_QUAD, "markWinding" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_CUBIC, "markWinding" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_DONE_LINE, "markDoneBinary" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_DONE_QUAD, "markDoneBinary" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_DONE_CUBIC, "markDoneBinary" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_LINE, "markUnsortable" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_QUAD, "markUnsortable" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_CUBIC, "markUnsortable" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_SIMPLE_LINE, "markWinding" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_SIMPLE_QUAD, "markWinding" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CUBIC, "markWinding" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_LINE, "markDone" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_QUAD, "markDone" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_CUBIC, "markDone" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_LINE, "markDoneUnary" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_QUAD, "markDoneUnary" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_CUBIC, "markDoneUnary" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
                ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
" last id=IDX windSum=OPT small=IDX");
                break;
            case REC_TYPE_OP:
                if (line.lastIndexOf("oppSign oppSign=", 0) === 0
                        || line.lastIndexOf("operator<", 0) === 0) {
                    found = true;
                    break;
                }
                found = match_regexp(line, lineNo, record, OP_DIFFERENCE, "op difference"
                ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op intersect"
                ) || match_regexp(line, lineNo, record, OP_UNION, "op union"
                ) || match_regexp(line, lineNo, record, OP_XOR, "op xor"
                );
                break;
            case REC_TYPE_UNKNOWN:
                found = true;
                break;
        }
        if (!found) {
            console.log(line + " [" + lineNo + "] of type " + type + " not found");
        }
    }
    if (recType != REC_TYPE_UNKNOWN) {
        records.push(recType);
        records.push(lastLineNo);
        records.push(record);
    }
    if (records.length >= 1) {
        tests[testIndex] = records;
        testLines[testIndex] = lines;
    }
}

function init(test) {
    var canvas = document.getElementById('canvas');
    if (!canvas.getContext) return;
    ctx = canvas.getContext('2d');
    var resScale = retina_scale && window.devicePixelRatio ? window.devicePixelRatio : 1;
    var unscaledWidth = window.innerWidth - 20;
    var unscaledHeight = window.innerHeight - 20;
    screenWidth = unscaledWidth;
    screenHeight = unscaledHeight;
    canvas.width = unscaledWidth * resScale;
    canvas.height = unscaledHeight * resScale;
    canvas.style.width = unscaledWidth + 'px';
    canvas.style.height = unscaledHeight + 'px';
    if (resScale != 1) {
        ctx.scale(resScale, resScale);
    }
    xmin = Infinity;
    xmax = -Infinity;
    ymin = Infinity;
    ymax = -Infinity;
    hasPath = hasComputedPath = false;
    firstActiveSpan = -1;
    for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
        var recType = test[tIndex];
        if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
            console.log("unknown rec type: " + recType);
            throw "stop execution";
        }
        var records = test[tIndex + 2];
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
                console.log("unknown in range frag type: " + fragType);
                throw "stop execution";
            }
            var frags = records[recordIndex + 1];
            var first = 0;
            var last = -1;
            var first2 = 0;
            var last2 = 0;
            switch (recType) {
                case REC_TYPE_COMPUTED:
                    if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2) {
                        break;
                    }
                    hasComputedPath = true;
                case REC_TYPE_PATH:
                    switch (fragType) {
                        case PATH_LINE:
                            last = 4;
                            break;
                        case PATH_QUAD:
                            last = 6;
                            break;
                        case PATH_CUBIC:
                            last = 8;
                            break;
                        default:
                            console.log("unknown " + (recType == REC_TYPE_PATH ? "REC_TYPE_PATH" 
                                    : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
                            throw "stop execution";
                    }
                    if (recType == REC_TYPE_PATH) {
                        hasPath = true;
                    }
                    break;
                case REC_TYPE_ACTIVE:
                    if (firstActiveSpan < 0) {
                        firstActiveSpan = tIndex;
                    }
                    first = 1;
                    switch (fragType) {
                        case ACTIVE_LINE_SPAN:
                            last = 5;
                            break;
                        case ACTIVE_QUAD_SPAN:
                            last = 7;
                            break;
                        case ACTIVE_CUBIC_SPAN:
                            last = 9;
                            break;
                        default:
                            console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                case REC_TYPE_ADD:
                    switch (fragType) {
                        case ADD_MOVETO:
                            break;
                        case ADD_LINETO:
                            last = 4;
                            break;
                        case ADD_QUADTO:
                            last = 6;
                            break;
                        case ADD_CUBICTO:
                            last = 8;
                            break;
                        case ADD_CLOSE:
                        case ADD_FILL:
                            break;
                        default:
                            console.log("unknown REC_TYPE_ADD frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                case REC_TYPE_SECT:
                    switch (fragType) {
                        case INTERSECT_LINE:
                            first = 1; last = 5; first2 = 8; last2 = 12;
                            break;
                        case INTERSECT_LINE_2:
                            first = 1; last = 5; first2 = 11; last2 = 15;
                            break;
                        case INTERSECT_LINE_NO:
                            first = 0; last = 4; first2 = 4; last2 = 8;
                            break;
                        case INTERSECT_QUAD_LINE:
                            first = 1; last = 7; first2 = 10; last2 = 14;
                            break;
                        case INTERSECT_QUAD_LINE_2:
                            first = 1; last = 7; first2 = 13; last2 = 17;
                            break;
                        case INTERSECT_QUAD_LINE_NO:
                            first = 0; last = 6; first2 = 6; last2 = 10;
                            break;
                        case INTERSECT_QUAD:
                            first = 1; last = 7; first2 = 10; last2 = 16;
                            break;
                        case INTERSECT_QUAD_2:
                            first = 1; last = 7; first2 = 13; last2 = 19;
                            break;
                        case INTERSECT_QUAD_NO:
                            first = 0; last = 6; first2 = 6; last2 = 12;
                            break;
                        case INTERSECT_SELF_CUBIC:
                            first = 1; last = 9;
                            break;
                        case INTERSECT_SELF_CUBIC_NO:
                            first = 0; last = 8;
                            break;
                        case INTERSECT_CUBIC_LINE:
                            first = 1; last = 9; first2 = 12; last2 = 16;
                            break;
                        case INTERSECT_CUBIC_LINE_2:
                            first = 1; last = 9; first2 = 15; last2 = 19;
                            break;
                        case INTERSECT_CUBIC_LINE_3:
                            first = 1; last = 9; first2 = 18; last2 = 22;
                            break;
                        case INTERSECT_CUBIC_LINE_NO:
                            first = 0; last = 8; first2 = 8; last2 = 12;
                            break;
                        case INTERSECT_CUBIC_QUAD:
                            first = 1; last = 9; first2 = 12; last2 = 18;
                            break;
                        case INTERSECT_CUBIC_QUAD_2:
                            first = 1; last = 9; first2 = 15; last2 = 21;
                            break;
                        case INTERSECT_CUBIC_QUAD_3:
                            first = 1; last = 9; first2 = 18; last2 = 24;
                            break;
                        case INTERSECT_CUBIC_QUAD_4:
                            first = 1; last = 9; first2 = 21; last2 = 27;
                            break;
                        case INTERSECT_CUBIC_QUAD_NO:
                            first = 0; last = 8; first2 = 8; last2 = 14;
                            break;
                        case INTERSECT_CUBIC:
                            first = 1; last = 9; first2 = 12; last2 = 20;
                            break;
                        case INTERSECT_CUBIC_2:
                            first = 1; last = 9; first2 = 15; last2 = 23;
                            break;
                        case INTERSECT_CUBIC_3:
                            first = 1; last = 9; first2 = 18; last2 = 26;
                            break;
                        case INTERSECT_CUBIC_4:
                            first = 1; last = 9; first2 = 21; last2 = 29;
                            break;
                        case INTERSECT_CUBIC_NO:
                            first = 0; last = 8; first2 = 8; last2 = 16;
                            break;
                        default:
                            console.log("unknown REC_TYPE_SECT frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                default:
                    continue;
            }
            for (var idx = first; idx < last; idx += 2) {
                xmin = Math.min(xmin, frags[idx]);
                xmax = Math.max(xmax, frags[idx]);
                ymin = Math.min(ymin, frags[idx + 1]);
                ymax = Math.max(ymax, frags[idx + 1]);
            }
            for (var idx = first2; idx < last2; idx += 2) {
                xmin = Math.min(xmin, frags[idx]);
                xmax = Math.max(xmax, frags[idx]);
                ymin = Math.min(ymin, frags[idx + 1]);
                ymax = Math.max(ymax, frags[idx + 1]);
            }
        }
    }
    var angleBounds = [Infinity, Infinity, -Infinity, -Infinity];
    for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
        var recType = test[tIndex];
        var records = test[tIndex + 2];
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            var frags = records[recordIndex + 1];
            switch (recType) {
                case REC_TYPE_ACTIVE_OP:
                    if (!draw_op) {
                        break;
                    }
                    {
                        var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
                        curve_extremes(curve, angleBounds);
                    }
                    break;
                case REC_TYPE_ANGLE:
                    if (!draw_angle) {
                        break;
                    }
                    if (fragType == ANGLE_AFTER) {
                        var curve = curvePartialByID(test, frags[0], frags[3], frags[4]);
                        curve_extremes(curve, angleBounds);
                        curve = curvePartialByID(test, frags[5], frags[8], frags[9]);
                        curve_extremes(curve, angleBounds);
                        curve = curvePartialByID(test, frags[10], frags[13], frags[14]);
                    } else if (fragType == ANGLE_AFTER2) {
                        var curve = curvePartialByID(test, frags[0], frags[4], frags[5]);
                        curve_extremes(curve, angleBounds);
                        curve = curvePartialByID(test, frags[6], frags[10], frags[11]);
                        curve_extremes(curve, angleBounds);
                        curve = curvePartialByID(test, frags[12], frags[16], frags[17]);
                    }
                    break;
                case REC_TYPE_SORT:
                    if (!draw_sort) {
                        break;
                    }
                    if (fragType == SORT_UNARY || fragType == SORT_BINARY) {
                        var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
                        curve_extremes(curve, angleBounds);
                    }
                    break;
            }
        }
    }
    xmin = Math.min(xmin, angleBounds[0]);
    ymin = Math.min(ymin, angleBounds[1]);
    xmax = Math.max(xmax, angleBounds[2]);
    ymax = Math.max(ymax, angleBounds[3]);
    setScale(xmin, xmax, ymin, ymax);
    if (hasPath == false && hasComputedPath == true && !draw_computed) {
        draw_computed = 3; // show both quadratics and cubics
    }
    if (hasPath == true && hasComputedPath == false && draw_computed) {
        draw_computed = 0;
    }
}

function curveByID(test, id) {
    var tIndex = firstActiveSpan;
    if (tIndex < 0) {
        return [];
    }
    while (tIndex < test.length) {
        var recType = test[tIndex];
        if (recType != REC_TYPE_ACTIVE) {
            return [];
        }
        var records = test[tIndex + 2];
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            var frags = records[recordIndex + 1];
            if (frags[0] == id) {
                switch (fragType) {
                    case ACTIVE_LINE_SPAN:
                        return [frags[1], frags[2], frags[3], frags[4]];
                    case ACTIVE_QUAD_SPAN:
                        return [frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6]];
                    case ACTIVE_CUBIC_SPAN:
                        return [frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], frags[7], frags[8]];
                }
            }
        }
        tIndex += 3;
    }
    return [];
}

function curvePartialByID(test, id, t0, t1) {
    var tIndex = firstActiveSpan;
    if (tIndex < 0) {
        return [];
    }
    while (tIndex < test.length) {
        var recType = test[tIndex];
        if (recType != REC_TYPE_ACTIVE) {
            return [];
        }
        var records = test[tIndex + 2];
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            var frags = records[recordIndex + 1];
            if (frags[0] == id) {
                switch (fragType) {
                    case ACTIVE_LINE_SPAN:
                        return linePartial(frags[1], frags[2], frags[3], frags[4], t0, t1);
                    case ACTIVE_QUAD_SPAN:
                        return quadPartial(frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], t0, t1);
                    case ACTIVE_CUBIC_SPAN:
                        return cubicPartial(frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], frags[7], frags[8], t0, t1);
                }
            }
        }
        tIndex += 3;
    }
    return [];
}

function idByCurve(test, frag, type) {
    var tIndex = firstActiveSpan;
    if (tIndex < 0) {
        return -1;
    }
    while (tIndex < test.length) {
        var recType = test[tIndex];
        if (recType != REC_TYPE_ACTIVE) {
            return -1;
        }
        var records = test[tIndex + 2];
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            var frags = records[recordIndex + 1];
            switch (fragType) {
                case ACTIVE_LINE_SPAN:
                    if (type != PATH_LINE) {
                        continue;
                    }
                    if (frag[0] != frags[1] || frag[1] != frags[2]
                            || frag[2] != frags[3] || frag[3] != frags[4]) {
                        continue;
                    }
                    return frags[0];
                case ACTIVE_QUAD_SPAN:
                    if (type != PATH_QUAD) {
                        continue;
                    }
                    if (frag[0] != frags[1] || frag[1] != frags[2]
                            || frag[2] != frags[3] || frag[3] != frags[4]
                            || frag[4] != frags[5] || frag[5] != frags[6]) {
                        continue;
                    }
                    return frags[0];
                case ACTIVE_CUBIC_SPAN:
                    if (type != PATH_CUBIC) {
                        continue;
                    }
                    if (frag[0] != frags[1] || frag[1] != frags[2]
                            || frag[2] != frags[3] || frag[3] != frags[4]
                            || frag[4] != frags[5] || frag[5] != frags[6]
                            || frag[6] != frags[7] || frag[7] != frags[8]) {
                        continue;
                    }
                    return frags[0];
            }
        }
        ++tIndex;
    }
    return -1;
}

function curve_extremes(curve, bounds) {
    for (var index = 0; index < curve.length; index += 2) {
        var x = curve[index];
        var y = curve[index + 1];
        bounds[0] = Math.min(bounds[0], x);
        bounds[1] = Math.min(bounds[1], y);
        bounds[2] = Math.max(bounds[2], x);
        bounds[3] = Math.max(bounds[3], y);
    }
}

function setScale(x0, x1, y0, y1) {
    var srcWidth = x1 - x0;
    var srcHeight = y1 - y0;
    var usableWidth = screenWidth;
    var xDigits = Math.ceil(Math.log(Math.abs(xmax)) / Math.log(10));
    var yDigits = Math.ceil(Math.log(Math.abs(ymax)) / Math.log(10));
    usableWidth -= (xDigits + yDigits) * 10;
    usableWidth -= decimal_places * 10;
    if (draw_legend) {
        usableWidth -= 40;
    }
    var hscale = usableWidth / srcWidth;
    var vscale = screenHeight / srcHeight;
    scale = Math.min(hscale, vscale);
    var invScale = 1 / scale;
    var sxmin = x0 - invScale * 5;
    var symin = y0 - invScale * 10;
    var sxmax = x1 + invScale * (6 * decimal_places + 10);
    var symax = y1 + invScale * 10;
    srcWidth = sxmax - sxmin;
    srcHeight = symax - symin;
    hscale = usableWidth / srcWidth;
    vscale = screenHeight / srcHeight;
    scale = Math.min(hscale, vscale);
    srcLeft = sxmin;
    srcTop = symin;
}

function drawArc(curve, op, from, to) {
    var type = PATH_LINE + (curve.length / 2 - 2);
    var pt = pointAtT(curve, type, op ? 0.4 : 0.6);
    var dy = pt.y - curve[1];
    var dx = pt.x - curve[0];
    var dist = Math.sqrt(dy * dy + dx * dx);
    var _dist = dist * scale;
    var angle = Math.atan2(dy, dx);
    var _px = (curve[0] - srcLeft) * scale;
    var _py = (curve[1] - srcTop) * scale;
    var divisor = 4;
    var endDist;
    do {
        var ends = [];
        for (var index = -1; index <= 1; index += 2) {
            var px = Math.cos(index * Math.PI / divisor);
            var py = Math.sin(index * Math.PI / divisor);
            ends.push(px);
            ends.push(py);
        }
        var endDx = (ends[2] - ends[0]) * scale * dist;
        var endDy = (ends[3] - ends[1]) * scale * dist;
        endDist = Math.sqrt(endDx * endDx + endDy * endDy);
        if (endDist < 100) {
            break;
        }
        divisor *= 2;
    } while (true);
    if (endDist < 30) {
        return;
    }
    if (op) {
        divisor *= 2;
    }
    ctx.strokeStyle = op ? "rgba(210,0,45, 0.4)" : "rgba(90,90,90, 0.5)";
    ctx.beginPath();
    ctx.arc(_px, _py, _dist, angle - Math.PI / divisor, angle + Math.PI / divisor, false);
    ctx.stroke();
    var saveAlign = ctx.textAlign;
    var saveStyle = ctx.fillStyle;
    var saveFont = ctx.font;
    ctx.textAlign = "center";
    ctx.fillStyle = "black";
    ctx.font = "normal 24px Arial";
    divisor *= 0.8;
    for (var index = -1; index <= 1; index += 2) {
        var px = curve[0] + Math.cos(angle + index * Math.PI / divisor) * dist;
        var py = curve[1] + Math.sin(angle + index * Math.PI / divisor) * dist;
        var _px = (px - srcLeft) * scale;
        var _py = (py - srcTop) * scale;
        ctx.fillText(index < 0 ? to.toString() : from.toString(), _px, _py + 8);
    }
    ctx.textAlign = saveAlign;
    ctx.fillStyle = saveStyle;
    ctx.font = saveFont;
}

function drawPoint(px, py, end) {
    for (var pts = 0; pts < drawnPts.length; pts += 2) {
        var x = drawnPts[pts];
        var y = drawnPts[pts + 1];
        if (px == x && py == y) {
            return;
        }
    }
    drawnPts.push(px);
    drawnPts.push(py);
    var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
    var _px = (px - srcLeft) * scale;
    var _py = (py - srcTop) * scale;
    ctx.beginPath();
    ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
    ctx.closePath();
    if (end) {
        ctx.fill();
    } else {
        ctx.stroke();
    }
    if (debug_xy) {
        ctx.textAlign = "left";
        ctx.fillText(label, _px + 5, _py);
    }
}

function drawPoints(ptArray, curveType, drawControls) {
    var count = (curveType - PATH_LINE + 2) * 2;
    for (var idx = 0; idx < count; idx += 2) {
        if (!drawControls && idx != 0 && idx != count - 2) {
            continue;
        }
        drawPoint(ptArray[idx], ptArray[idx + 1], idx == 0 || idx == count - 2);
    }
}

function drawControlLines(curve, curveType, drawEnd) {
    if (curveType == PATH_LINE) {
        return;
    }
    ctx.strokeStyle = "rgba(0,0,0, 0.3)";
    drawLine(curve[0], curve[1], curve[2], curve[3]);
    drawLine(curve[2], curve[3], curve[4], curve[5]);
    if (curveType == PATH_CUBIC) {
        drawLine(curve[4], curve[5], curve[6], curve[7]);
        if (drawEnd > 1) {
            drawLine(curve[6], curve[7], curve[0], curve[1]);
            if (drawEnd > 2) {
                drawLine(curve[0], curve[1], curve[4], curve[5]);
                drawLine(curve[6], curve[7], curve[2], curve[3]);
            }
        }
    } else if (drawEnd > 1) {
        drawLine(curve[4], curve[5], curve[0], curve[1]);
    }
}

function pointAtT(curve, curveType, t) {
    var xy = {};
    switch (curveType) {
        case PATH_LINE:
            var a = 1 - t;
            var b = t;
            xy.x = a * curve[0] + b * curve[2];
            xy.y = a * curve[1] + b * curve[3];
            break;
        case PATH_QUAD:
            var one_t = 1 - t;
            var a = one_t * one_t;
            var b = 2 * one_t * t;
            var c = t * t;
            xy.x = a * curve[0] + b * curve[2] + c * curve[4];
            xy.y = a * curve[1] + b * curve[3] + c * curve[5];
            break;
        case PATH_CUBIC:
            var one_t = 1 - t;
            var one_t2 = one_t * one_t;
            var a = one_t2 * one_t;
            var b = 3 * one_t2 * t;
            var t2 = t * t;
            var c = 3 * one_t * t2;
            var d = t2 * t;
            xy.x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
            xy.y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
            break;
    }
    return xy;
}
    
function drawPointAtT(curve, curveType) {
    var x, y;
    var xy = pointAtT(curve, curveType, curveT);
    drawPoint(xy.x, xy.y, true);
    if (!draw_intersectT) {
        return;
    }
    ctx.fillStyle = "red";
    drawTAtPointUp(xy.x, xy.y, curveT);
}

function drawTAtPointUp(px, py, t) {
    var label = t.toFixed(decimal_places);
    var _px = (px - srcLeft)* scale;
    var _py = (py - srcTop) * scale;
    ctx.fillText(label, _px + 5, _py - 10);
}

function drawTAtPointDown(px, py, t) {
    var label = t.toFixed(decimal_places);
    var _px = (px - srcLeft)* scale;
    var _py = (py - srcTop) * scale;
    ctx.fillText(label, _px + 5, _py + 10);
}

function alreadyDrawnLine(x1, y1, x2, y2) {
    if (collect_bounds) {
        if (focus_enabled) {
            focusXmin = Math.min(focusXmin, x1, x2);
            focusYmin = Math.min(focusYmin, y1, y2);
            focusXmax = Math.max(focusXmax, x1, x2);
            focusYmax = Math.max(focusYmax, y1, y2);
        }
        return true;
    }
    for (var pts = 0; pts < drawnLines.length; pts += 4) {
        if (x1 == drawnLines[pts] && y1 == drawnLines[pts + 1]
                && x2 == drawnLines[pts + 2] && y2 == drawnLines[pts + 3]) {
            return true;
        }
    }
    drawnLines.push(x1);
    drawnLines.push(y1);
    drawnLines.push(x2);
    drawnLines.push(y2);
    return false;
}

function drawLine(x1, y1, x2, y2) {
    if (alreadyDrawnLine(x1, y1, x2, y2)) {
        return;
    }
    ctx.beginPath();
    ctx.moveTo((x1 - srcLeft) * scale,
            (y1 - srcTop) * scale);
    ctx.lineTo((x2 - srcLeft) * scale,
            (y2 - srcTop) * scale);
    ctx.stroke();
}

function linePartial(x1, y1, x2, y2, t1, t2) {
    var dx = x1 - x2;
    var dy = y1 - y2;
    var array = [
        x1 - t1 * dx,
        y1 - t1 * dy,
        x1 - t2 * dx,
        y1 - t2 * dy
    ];
    return array;
}

function drawLinePartial(x1, y1, x2, y2, t1, t2) {
    var a = linePartial(x1, y1, x2, y2, t1, t2);
    var ax = a[0];
    var ay = a[1];
    var bx = a[2];
    var by = a[3];
    if (alreadyDrawnLine(ax, ay, bx, by)) {
        return;
    }
    ctx.beginPath();
    ctx.moveTo((ax - srcLeft) * scale,
            (ay - srcTop) * scale);
    ctx.lineTo((bx - srcLeft) * scale,
            (by - srcTop) * scale);
    ctx.stroke();
}

function alreadyDrawnQuad(x1, y1, x2, y2, x3, y3) {
    if (collect_bounds) {
        if (focus_enabled) {
            focusXmin = Math.min(focusXmin, x1, x2, x3);
            focusYmin = Math.min(focusYmin, y1, y2, y3);
            focusXmax = Math.max(focusXmax, x1, x2, x3);
            focusYmax = Math.max(focusYmax, y1, y2, y3);
        }
        return true;
    }
    for (var pts = 0; pts < drawnQuads.length; pts += 6) {
        if (x1 == drawnQuads[pts] && y1 == drawnQuads[pts + 1]
                && x2 == drawnQuads[pts + 2] && y2 == drawnQuads[pts + 3]
                && x3 == drawnQuads[pts + 4] && y3 == drawnQuads[pts + 5]) {
            return true;
        }
    }
    drawnQuads.push(x1);
    drawnQuads.push(y1);
    drawnQuads.push(x2);
    drawnQuads.push(y2);
    drawnQuads.push(x3);
    drawnQuads.push(y3);
    return false;
}

function drawQuad(x1, y1, x2, y2, x3, y3) {
    if (alreadyDrawnQuad(x1, y1, x2, y2, x3, y3)) {
        return;
    }
    ctx.beginPath();
    ctx.moveTo((x1 - srcLeft) * scale,
            (y1 - srcTop) * scale);
    ctx.quadraticCurveTo((x2 - srcLeft) * scale,
            (y2 - srcTop) * scale,
            (x3 - srcLeft) * scale,
            (y3 - srcTop) * scale);
    ctx.stroke();
}

function interp(A, B, t) {
    return A + (B - A) * t;
}

function interp_quad_coords(x1, x2, x3, t)
{
    var ab = interp(x1, x2, t);
    var bc = interp(x2, x3, t);
    var abc = interp(ab, bc, t);
    return abc;
}

function quadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
    var ax = interp_quad_coords(x1, x2, x3, t1);
    var ay = interp_quad_coords(y1, y2, y3, t1);
    var dx = interp_quad_coords(x1, x2, x3, (t1 + t2) / 2);
    var dy = interp_quad_coords(y1, y2, y3, (t1 + t2) / 2);
    var cx = interp_quad_coords(x1, x2, x3, t2);
    var cy = interp_quad_coords(y1, y2, y3, t2);
    var bx = 2*dx - (ax + cx)/2;
    var by = 2*dy - (ay + cy)/2;
    var array = [
        ax, ay, bx, by, cx, cy
    ];
    return array;
}

function drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
    var a = quadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
    var ax = a[0];
    var ay = a[1];
    var bx = a[2];
    var by = a[3];
    var cx = a[4];
    var cy = a[5];
    if (alreadyDrawnQuad(ax, ay, bx, by, cx, cy)) {
        return;
    }
    ctx.beginPath();
    ctx.moveTo((ax - srcLeft) * scale,
            (ay - srcTop) * scale);
    ctx.quadraticCurveTo((bx - srcLeft) * scale,
            (by - srcTop) * scale,
            (cx - srcLeft) * scale,
            (cy - srcTop) * scale);
    ctx.stroke();
}

function alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
    if (collect_bounds) {
        if (focus_enabled) {
            focusXmin = Math.min(focusXmin, x1, x2, x3, x4);
            focusYmin = Math.min(focusYmin, y1, y2, y3, y4);
            focusXmax = Math.max(focusXmax, x1, x2, x3, x4);
            focusYmax = Math.max(focusYmax, y1, y2, y3, y4);
        }
        return true;
    }
    for (var pts = 0; pts < drawnCubics.length; pts += 8) {
        if (x1 == drawnCubics[pts] && y1 == drawnCubics[pts + 1]
                && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3] 
                && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5] 
                && x4 == drawnCubics[pts + 6] && y4 == drawnCubics[pts + 7]) {
            return true;
        }
    }
    drawnCubics.push(x1);
    drawnCubics.push(y1);
    drawnCubics.push(x2);
    drawnCubics.push(y2);
    drawnCubics.push(x3);
    drawnCubics.push(y3);
    drawnCubics.push(x4);
    drawnCubics.push(y4);
    return false;
}

function drawCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
    if (alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4)) {
        return;
    }
    ctx.beginPath();
    ctx.moveTo((x1 - srcLeft) * scale,
            (y1 - srcTop) * scale);
    ctx.bezierCurveTo((x2 - srcLeft) * scale,
            (y2 - srcTop) * scale,
            (x3 - srcLeft) * scale,
            (y3 - srcTop) * scale,
            (x4 - srcLeft) * scale,
            (y4 - srcTop) * scale);
    ctx.stroke();
}

function interp_cubic_coords(x1, x2, x3, x4, t)
{
    var ab = interp(x1, x2, t);
    var bc = interp(x2, x3, t);
    var cd = interp(x3, x4, t);
    var abc = interp(ab, bc, t);
    var bcd = interp(bc, cd, t);
    var abcd = interp(abc, bcd, t);
    return abcd;
}

function cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
    var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
    var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
    var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
    var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
    var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
    var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
    var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
    var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
    var mx = ex * 27 - ax * 8 - dx;
    var my = ey * 27 - ay * 8 - dy;
    var nx = fx * 27 - ax - dx * 8;
    var ny = fy * 27 - ay - dy * 8;
    var bx = (mx * 2 - nx) / 18;
    var by = (my * 2 - ny) / 18;
    var cx = (nx * 2 - mx) / 18;
    var cy = (ny * 2 - my) / 18;
    var array = [
        ax, ay, bx, by, cx, cy, dx, dy
    ];
    return array;
}
    
function drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
    var a = cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
    var ax = a[0];
    var ay = a[1];
    var bx = a[2];
    var by = a[3];
    var cx = a[4];
    var cy = a[5];
    var dx = a[6];
    var dy = a[7];
    if (alreadyDrawnCubic(ax, ay, bx, by, cx, cy, dx, dy)) {
        return;
    }
    ctx.beginPath();
    ctx.moveTo((ax - srcLeft) * scale,
            (ay - srcTop) * scale);
    ctx.bezierCurveTo((bx - srcLeft) * scale,
            (by - srcTop) * scale,
            (cx - srcLeft) * scale,
            (cy - srcTop) * scale,
            (dx - srcLeft) * scale,
            (dy - srcTop) * scale);
    ctx.stroke();
}

function drawCurve(c) {
    switch (c.length) {
        case 4:
            drawLine(c[0], c[1], c[2], c[3]);
            break;
        case 6:
            drawQuad(c[0], c[1], c[2], c[3], c[4], c[5]);
            break;
        case 8:
            drawCubic(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]);
            break;
    }
}

function boundsWidth(pts) {
    var min = pts[0];
    var max = pts[0];
    for (var idx = 2; idx < pts.length; idx += 2) {
        min = Math.min(min, pts[idx]);
        max = Math.max(max, pts[idx]);
    }
    return max - min;
}

function boundsHeight(pts) {
    var min = pts[1];
    var max = pts[1];
    for (var idx = 3; idx < pts.length; idx += 2) {
        min = Math.min(min, pts[idx]);
        max = Math.max(max, pts[idx]);
    }
    return max - min;
}

function tangent(pts) {
    var dx = pts[2] - pts[0];
    var dy = pts[3] - pts[1];
    if (dx == 0 && dy == 0 && pts.length > 4) {
        dx = pts[4] - pts[0];
        dy = pts[5] - pts[1];
        if (dx == 0 && dy == 0 && pts.length > 6) {
            dx = pts[6] - pts[0];
            dy = pts[7] - pts[1];
        }
    }
    return Math.atan2(-dy, dx);
}

function hodograph(cubic) {
    var hodo = [];
    hodo[0] = 3 * (cubic[2] - cubic[0]);
    hodo[1] = 3 * (cubic[3] - cubic[1]);
    hodo[2] = 3 * (cubic[4] - cubic[2]);
    hodo[3] = 3 * (cubic[5] - cubic[3]);
    hodo[4] = 3 * (cubic[6] - cubic[4]);
    hodo[5] = 3 * (cubic[7] - cubic[5]);
    return hodo;
}

function hodograph2(cubic) {
    var quad = hodograph(cubic);
    var hodo = [];
    hodo[0] = 2 * (quad[2] - quad[0]);
    hodo[1] = 2 * (quad[3] - quad[1]);
    hodo[2] = 2 * (quad[4] - quad[2]);
    hodo[3] = 2 * (quad[5] - quad[3]);
    return hodo;
}

function quadraticRootsReal(A, B, C, s) {
    if (A == 0) {
        if (B == 0) {
            s[0] = 0;
            return C == 0;
        }
        s[0] = -C / B;
        return 1;
    }
    /* normal form: x^2 + px + q = 0 */
    var p = B / (2 * A);
    var q = C / A;
    var p2 = p * p;
    if (p2 < q) {
        return 0;
    }
    var sqrt_D = 0;
    if (p2 > q) {
        sqrt_D = sqrt(p2 - q);
    }
    s[0] = sqrt_D - p;
    s[1] = -sqrt_D - p;
    return 1 + s[0] != s[1];
}

function add_valid_ts(s, realRoots, t) {
    var foundRoots = 0;
    for (var index = 0; index < realRoots; ++index) {
        var tValue = s[index];
        if (tValue >= 0 && tValue <= 1) {
            for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
                if (t[idx2] != tValue) {
                    t[foundRoots++] = tValue;
                }
            }
        }
    }
    return foundRoots;
}

function quadraticRootsValidT(a, b, c, t) {
    var s = [];
    var realRoots = quadraticRootsReal(A, B, C, s);
    var foundRoots = add_valid_ts(s, realRoots, t);
    return foundRoots != 0;
}

function find_cubic_inflections(cubic, tValues) {
    var Ax = src[2] - src[0];
    var Ay = src[3] - src[1];
    var Bx = src[4] - 2 * src[2] + src[0];
    var By = src[5] - 2 * src[3] + src[1];
    var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
    var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
    return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
            Ax * By - Ay * Bx, tValues);
}

function dxy_at_t(curve, type, t) {
    var dxy = {};
    if (type == PATH_QUAD) {
        var a = t - 1;
        var b = 1 - 2 * t;
        var c = t;
        dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
        dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
    } else if (type == PATH_CUBIC) {
        var one_t = 1 - t;
        var a = curve[0];
        var b = curve[2];
        var c = curve[4];
        var d = curve[6];
        dxy.x = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
        a = curve[1];
        b = curve[3];
        c = curve[5];
        d = curve[7];
        dxy.y = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
    }
    return dxy;
}

function drawLabel(num, px, py) {
    ctx.beginPath();
    ctx.arc(px, py, 8, 0, Math.PI*2, true);
    ctx.closePath();
    ctx.strokeStyle = "rgba(0,0,0, 0.4)";
    ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
    ctx.stroke();
    ctx.fillStyle = "black";
    ctx.font = "normal 10px Arial";
  //  ctx.rotate(0.001);
    ctx.fillText(num, px - 2, py + 3);
  //  ctx.rotate(-0.001);
}

function drawLabelX(ymin, num, loc) {
    var px = (loc - srcLeft) * scale;
    var py = (ymin - srcTop) * scale - 20;
    drawLabel(num, px, py);
}

function drawLabelY(xmin, num, loc) {
    var px = (xmin - srcLeft) * scale - 20;
    var py = (loc - srcTop) * scale;
    drawLabel(num, px, py);
}

function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
    ctx.beginPath();
    ctx.moveTo(hx, hy - 100);
    ctx.lineTo(hx, hy);
    ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
    ctx.stroke();
    ctx.beginPath();
    ctx.moveTo(hx, hy);
    ctx.lineTo(hx, hy + 100);
    ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
    ctx.stroke();
    ctx.beginPath();
    ctx.moveTo(hx - 100, hy);
    ctx.lineTo(hx, hy);
    ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
    ctx.stroke();
    ctx.beginPath();
    ctx.moveTo(hx, hy);
    ctx.lineTo(hx + 100, hy);
    ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
    ctx.stroke();
}

function scalexy(x, y, mag) {
    var length = Math.sqrt(x * x + y * y);
    return mag / length;
}

function drawArrow(x, y, dx, dy) {
    var dscale = scalexy(dx, dy, 1 / scale * 100);
    dx *= dscale;
    dy *= dscale;
    ctx.beginPath();
    ctx.moveTo((x - srcLeft) * scale, (y - srcTop) * scale);
    x += dx;
    y += dy;
    ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
    dx /= 10;
    dy /= 10;
    ctx.lineTo((x - dy - srcLeft) * scale, (y + dx - srcTop) * scale);
    ctx.lineTo((x + dx * 2 - srcLeft) * scale, (y + dy * 2 - srcTop) * scale);
    ctx.lineTo((x + dy - srcLeft) * scale, (y - dx - srcTop) * scale);
    ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
    ctx.strokeStyle = "rgba(0,75,0, 0.4)";
    ctx.stroke();
}

function x_at_t(curve, t) {
    var one_t = 1 - t;
    if (curve.length == 4) {
        return one_t * curve[0] + t * curve[2];
    }
    var one_t2 = one_t * one_t;
    var t2 = t * t;
    if (curve.length == 6) {
        return one_t2 * curve[0] + 2 * one_t * t * curve[2] + t2 * curve[4];
    }
    var a = one_t2 * one_t;
    var b = 3 * one_t2 * t;
    var c = 3 * one_t * t2;
    var d = t2 * t;
    return a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
}

function y_at_t(curve, t) {
    var one_t = 1 - t;
    if (curve.length == 4) {
        return one_t * curve[1] + t * curve[3];
    }
    var one_t2 = one_t * one_t;
    var t2 = t * t;
    if (curve.length == 6) {
        return one_t2 * curve[1] + 2 * one_t * t * curve[3] + t2 * curve[5];
    }
    var a = one_t2 * one_t;
    var b = 3 * one_t2 * t;
    var c = 3 * one_t * t2;
    var d = t2 * t;
    return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
}

function drawOrder(curve, label) {
    var px = x_at_t(curve, 0.75);
    var py = y_at_t(curve, 0.75);
    var _px = (px - srcLeft) * scale;
    var _py = (py - srcTop) * scale;
    ctx.beginPath();
    ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.fillStyle = "white";
    ctx.fill();
    if (label == 'L') {
        ctx.strokeStyle = "rgba(255,0,0, 1)";
        ctx.fillStyle = "rgba(255,0,0, 1)";
    } else {
        ctx.strokeStyle = "rgba(0,0,255, 1)";
        ctx.fillStyle = "rgba(0,0,255, 1)";
    }
    ctx.stroke();
    ctx.font = "normal 16px Arial";
    ctx.textAlign = "center";
    ctx.fillText(label, _px, _py + 5);
    ctx.font = "normal 10px Arial";
}

function drawID(curve, id) {
    var px = x_at_t(curve, 0.5);
    var py = y_at_t(curve, 0.5);
    var _px = (px - srcLeft) * scale;
    var _py = (py - srcTop) * scale;
    draw_id_at(id, _px, _py);
}

function draw_id_at(id, _px, _py) {
    ctx.beginPath();
    ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.fillStyle = "white";
    ctx.fill();
    ctx.strokeStyle = "rgba(127,127,0, 1)";
    ctx.fillStyle = "rgba(127,127,0, 1)";
    ctx.stroke();
    ctx.font = "normal 16px Arial";
    ctx.textAlign = "center";
    ctx.fillText(id, _px, _py + 5);
    ctx.font = "normal 10px Arial";
}

function drawLinePartialID(id, x1, y1, x2, y2, t1, t2) {
    var curve = [x1, y1, x2, y2];
    drawCurvePartialID(id, curve, t1, t2);
}

function drawQuadPartialID(id, x1, y1, x2, y2, x3, y3, t1, t2) {
    var curve = [x1, y1, x2, y2, x3, y3];
    drawCurvePartialID(id, curve, t1, t2);
}

function drawCubicPartialID(id, x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
    var curve = [x1, y1, x2, y2, x3, y3, x4, y4];
    drawCurvePartialID(id, curve, t1, t2);
}

function  drawCurvePartialID(id, curve, t1, t2) {
    var px = x_at_t(curve, (t1 + t2) / 2);
    var py = y_at_t(curve, (t1 + t2) / 2);
    var _px = (px - srcLeft) * scale;
    var _py = (py - srcTop) * scale;
    draw_id_at(id, _px, _py);
}

function drawCurveSpecials(test, curve, type) {
    if (pt_labels) {
        drawPoints(curve, type, pt_labels == 2);
    }
    if (control_lines != 0) {
        drawControlLines(curve, type, control_lines);
    }
    if (curve_t) {
        drawPointAtT(curve, type);
    }
    if (draw_midpoint) {
        var mid = pointAtT(curve, type, 0.5);
        drawPoint(mid.x, mid.y, true);
    }
    if (draw_id) {
        var id = idByCurve(test, curve, type);
        if (id >= 0) {
            drawID(curve, id);
        }
    }
    if (type == PATH_LINE) {
        return;
    }
    if (draw_deriviatives > 0) {
        var d = dxy_at_t(curve, type, 0);
        drawArrow(curve[0], curve[1], d.x, d.y);
        if (draw_deriviatives == 2) {
            d = dxy_at_t(curve, type, 1);
            if (type == PATH_CUBIC) {
                drawArrow(curve[6], curve[7], d.x, d.y);
            } else {
                drawArrow(curve[4], curve[5], d.x, d.y);
            }
        }
        if (draw_midpoint) {
            var mid = pointAtT(curve, type, 0.5);
            d = dxy_at_t(curve, type, 0.5);
            drawArrow(mid.x, mid.y, d.x, d.y);
        }
    }
    if (type != PATH_CUBIC) {
        return;
    }
    if (draw_hodo == 1 || draw_hodo == 2) {
        var hodo = hodograph(curve);
        var hMinX = Math.min(0, hodo[0], hodo[2], hodo[4]);
        var hMinY = Math.min(0, hodo[1], hodo[3], hodo[5]);
        var hMaxX = Math.max(0, hodo[0], hodo[2], hodo[4]);
        var hMaxY = Math.max(0, hodo[1], hodo[3], hodo[5]);
        var hScaleX = hMaxX - hMinX > 0 ? screenWidth / (hMaxX - hMinX) : 1;
        var hScaleY = hMaxY - hMinY > 0 ? screenHeight / (hMaxY - hMinY) : 1;
        var hUnit = Math.min(hScaleX, hScaleY);
        hUnit /= 2;
        var hx = xoffset - hMinX * hUnit;
        var hy = yoffset - hMinY * hUnit;
        ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
        ctx.quadraticCurveTo(
            hx + hodo[2] * hUnit, hy + hodo[3] * hUnit,
            hx + hodo[4] * hUnit, hy + hodo[5] * hUnit);
        ctx.strokeStyle = "red";
        ctx.stroke();
        if (draw_hodo == 1) {
            drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
        }
    }
    if (draw_hodo == 3) {
        var hodo = hodograph2(curve);
        var hMinX = Math.min(0, hodo[0], hodo[2]);
        var hMinY = Math.min(0, hodo[1], hodo[3]);
        var hMaxX = Math.max(0, hodo[0], hodo[2]);
        var hMaxY = Math.max(0, hodo[1], hodo[3]);
        var hScaleX = hMaxX - hMinX > 0 ? screenWidth / (hMaxX - hMinX) : 1;
        var hScaleY = hMaxY - hMinY > 0 ? screenHeight / (hMaxY - hMinY) : 1;
        var hUnit = Math.min(hScaleX, hScaleY);
        hUnit /= 2;
        var hx = xoffset - hMinX * hUnit;
        var hy = yoffset - hMinY * hUnit;
        ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
        ctx.lineTo(hx + hodo[2] * hUnit, hy + hodo[3] * hUnit);
        ctx.strokeStyle = "red";
        ctx.stroke();
        drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
    }
    if (draw_sequence) {
        var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
        for (var i = 0; i < 8; i+= 2) {
            drawLabelX(ymin, i >> 1, curve[i]);
        }
        var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
        for (var i = 1; i < 8; i+= 2) {
            drawLabelY(xmin, i >> 1, curve[i]);
        }
    }
}

function logCurves(test) {
    for (curves in test) {
        var curve = test[curves];
        dumpCurve(curve);
    }
}

function curveToString(curve) {
    var str = "{{";
    for (i = 0; i < curve.length; i += 2) {
        str += curve[i].toFixed(decimal_places) + "," + curve[i + 1].toFixed(decimal_places);
        if (i < curve.length - 2) {
            str += "}, {";
        }
    }
    str += "}}";
    return str;
}

function dumpCurve(curve) {
    console.log(curveToString(curve));
}

function draw(test, lines, title) {
    ctx.fillStyle = "rgba(0,0,0, 0.1)";
    ctx.font = "normal 50px Arial";
    ctx.textAlign = "left";
    ctx.fillText(title, 50, 50);
    ctx.font = "normal 10px Arial";
    ctx.lineWidth = "1.001"; "0.999";
    var secondPath = test.length;
    var closeCount = 0;
    logStart = -1;
    logRange = 0;
    // find last active rec type at this step
    var curType = test[0];
    var curStep = 0;
    var hasOp = false;
    var lastActive = 0;
    var lastAdd = 0;
    var lastSect = 0;
    var lastSort = 0;
    var lastMark = 0;
    activeCount = 0;
    addCount = 0;
    angleCount = 0;
    opCount = 0;
    sectCount = 0;
    sortCount = 0;
    markCount = 0;
    activeMax = 0;
    addMax = 0;
    angleMax = 0;
    opMax = 0;
    sectMax = 0;
    sectMax2 = 0;
    sortMax = 0;
    markMax = 0;
    lastIndex = test.length - 3;
    for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
        var recType = test[tIndex];
        if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
            console.log("unknown rec type: " + recType);
            throw "stop execution";
        }
   //     if (curType == recType && curType != REC_TYPE_ADD) {
   //         continue;
   //     }
        var inStepRange = step_limit == 0 || curStep < step_limit;
        curType = recType;
        if (recType == REC_TYPE_OP) {
            hasOp = true;
            continue;
        }
        if (recType == REC_TYPE_UNKNOWN) {
            // these types do not advance step
            continue;
        }
        var bumpStep = false;
        var records = test[tIndex + 2];
        var fragType = records[0];
        if (recType == REC_TYPE_ADD) {
            if (records.length != 2) {
                console.log("expect only two elements: " + records.length);
                throw "stop execution";
            }
            if (fragType == ADD_MOVETO || fragType == ADD_CLOSE) {
                continue;
            }
            ++addMax;
            if (!draw_add || !inStepRange) {
                continue;
            }
            lastAdd = tIndex;
            ++addCount;
            bumpStep = true;
        }
        if (recType == REC_TYPE_PATH && hasOp) {
            secondPath = tIndex;
        }
        if (recType == REC_TYPE_ACTIVE) {
            ++activeMax;
            if (!draw_active || !inStepRange) {
                continue;
            }
            lastActive = tIndex;
            ++activeCount;
            bumpStep = true;
        }
        if (recType == REC_TYPE_ACTIVE_OP) {
            ++opMax;
            if (!draw_op || !inStepRange) {
                continue;
            }
            lastOp = tIndex;
            ++opCount;
            bumpStep = true;
        }
        if (recType == REC_TYPE_ANGLE) {
            ++angleMax;
            if (!draw_angle || !inStepRange) {
                continue;
            }
            lastAngle = tIndex;
            ++angleCount;
            bumpStep = true;
        }
        if (recType == REC_TYPE_SECT) {
            if (records.length != 2) {
                console.log("expect only two elements: " + records.length);
                throw "stop execution";
            }
            ++sectMax;
            var sectBump = 1;
            switch (fragType) {
                case INTERSECT_LINE:
                case INTERSECT_QUAD_LINE:
                case INTERSECT_QUAD:
                case INTERSECT_SELF_CUBIC:
                case INTERSECT_CUBIC_LINE:
                case INTERSECT_CUBIC_QUAD:
                case INTERSECT_CUBIC:
                    sectBump = 1;
                    break;
                case INTERSECT_LINE_2:
                case INTERSECT_QUAD_LINE_2:
                case INTERSECT_QUAD_2:
                case INTERSECT_CUBIC_LINE_2:
                case INTERSECT_CUBIC_QUAD_2:
                case INTERSECT_CUBIC_2:
                    sectBump = 2;
                    break;
                case INTERSECT_LINE_NO:
                case INTERSECT_QUAD_LINE_NO:
                case INTERSECT_QUAD_NO:
                case INTERSECT_SELF_CUBIC_NO:
                case INTERSECT_CUBIC_LINE_NO:
                case INTERSECT_CUBIC_QUAD_NO:
                case INTERSECT_CUBIC_NO:
                    sectBump = 0;
                    break;
                case INTERSECT_CUBIC_LINE_3:
                case INTERSECT_CUBIC_QUAD_3:
                case INTERSECT_CUBIC_3:
                    sectBump = 3;
                    break;
                case INTERSECT_CUBIC_QUAD_4:
                case INTERSECT_CUBIC_4:
                    sectBump = 4;
                    break;
                default:
                    console.log("missing case " + records.length);
                    throw "stop execution";
            }
            sectMax2 += sectBump;
            if (draw_intersection <= 1 || !inStepRange) {
                continue;
            }
            lastSect = tIndex;
            sectCount += sectBump;
            bumpStep = true;
        }
        if (recType == REC_TYPE_SORT) {
            ++sortMax;
            if (!draw_sort || !inStepRange) {
                continue;
            }
            lastSort = tIndex;
            ++sortCount;
            bumpStep = true;
        }
        if (recType == REC_TYPE_MARK) {
            ++markMax;
            if (!draw_mark || !inStepRange) {
                continue;
            }
            lastMark = tIndex;
            ++markCount;
            bumpStep = true;
        }
        if (bumpStep) {
            lastIndex = tIndex;
            logStart = test[tIndex + 1];
            logRange = records.length / 2;
            ++curStep;
        }
    }
    stepMax = (draw_add ? addMax : 0)
            + (draw_active ? activeMax : 0)
            + (draw_op ? opMax : 0)
            + (draw_angle ? angleMax : 0)
            + (draw_sort ? sortMax : 0)
            + (draw_mark ? markMax : 0)
            + (draw_intersection == 2 ? sectMax : draw_intersection == 3 ? sectMax2 : 0);
    if (stepMax == 0) {
        stepMax = addMax + activeMax + angleMax + opMax + sortMax + markMax;
    }
    drawnPts = [];
    drawnLines = [];
    drawnQuads = [];
    drawnCubics = [];
    focusXmin = focusYmin = Infinity;
    focusXmax = focusYmax = -Infinity;
    var pathIndex = 0;
    var opLetter = 'S';
    for (var tIndex = lastIndex; tIndex >= 0; tIndex -= 3) {
        var recType = test[tIndex];
        var records = test[tIndex + 2];
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
                console.log("unknown in range frag type: " + fragType);
                throw "stop execution";
            }
            var frags = records[recordIndex + 1];
            focus_enabled = false;
            switch (recType) {
                case REC_TYPE_COMPUTED:
                    if (draw_computed == 0) {
                        continue;
                    }
                    ctx.lineWidth = 1;
                    ctx.strokeStyle = pathIndex == 0 ? "black" : "red";
                    ctx.fillStyle = "blue";
                    var drawThis = false;
                    switch (fragType) {
                        case PATH_QUAD:
                            if ((draw_computed & 5) == 1 || ((draw_computed & 4) != 0
                                    && (draw_computed & 1) == pathIndex)) {
                                drawQuad(frags[0], frags[1], frags[2], frags[3],
                                        frags[4], frags[5]);
                                drawThis = true;
                            }
                            break;
                        case PATH_CUBIC:
                            if ((draw_computed & 6) == 2 || ((draw_computed & 4) != 0
                                     && (draw_computed & 1) != pathIndex)) {
                                drawCubic(frags[0], frags[1], frags[2], frags[3],
                                        frags[4], frags[5], frags[6], frags[7]);
                                drawThis = true;
                            }
                            ++pathIndex;
                            break;
                        case COMPUTED_SET_1:
                            pathIndex = 0;
                            break;
                        case COMPUTED_SET_2:
                            pathIndex = 1;
                            break;
                        default:
                            console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
                            throw "stop execution";
                    }
                    if (!drawThis || collect_bounds) {
                        break;
                    }
                    drawCurveSpecials(test, frags, fragType);
                    break;
                case REC_TYPE_PATH:
                    if (!draw_path) {
                        continue;
                    }
                    var firstPath = tIndex < secondPath;
                    if ((draw_path & (firstPath ? 1 : 2)) == 0) {
                        continue;
                    }
                    ctx.lineWidth = 1;
                    ctx.strokeStyle = firstPath ? "black" : "red";
                    ctx.fillStyle = "blue";
                    switch (fragType) {
                        case PATH_LINE:
                            drawLine(frags[0], frags[1], frags[2], frags[3]);
                            break;
                        case PATH_QUAD:
                            drawQuad(frags[0], frags[1], frags[2], frags[3],
                                    frags[4], frags[5]);
                            break;
                        case PATH_CUBIC:
                            drawCubic(frags[0], frags[1], frags[2], frags[3],
                                    frags[4], frags[5], frags[6], frags[7]);
                            break;
                        default:
                            console.log("unknown REC_TYPE_PATH frag type: " + fragType);
                            throw "stop execution";
                    }
                    if (collect_bounds) {
                        break;
                    }
                    drawCurveSpecials(test, frags, fragType);
                    break;
                case REC_TYPE_OP:
                    switch (fragType) {
                        case OP_INTERSECT: opLetter = 'I'; break;
                        case OP_DIFFERENCE: opLetter = 'D'; break;
                        case OP_UNION: opLetter = 'U'; break;
                        case OP_XOR: opLetter = 'X'; break;
                        default:
                            console.log("unknown REC_TYPE_OP frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                case REC_TYPE_ACTIVE:
                    if (!draw_active || (step_limit > 0 && tIndex < lastActive)) {
                        continue;
                    }
                    var x1 = frags[SPAN_X1];
                    var y1 = frags[SPAN_Y1];
                    var x2 = frags[SPAN_X2];
                    var y2 = frags[SPAN_Y2];
                    var x3, y3, x3, y4, t1, t2;
                    ctx.lineWidth = 3;
                    ctx.strokeStyle = "rgba(0,0,255, 0.3)";
                    focus_enabled = true;
                    switch (fragType) {
                        case ACTIVE_LINE_SPAN:
                            t1 = frags[SPAN_L_T];
                            t2 = frags[SPAN_L_TEND];
                            drawLinePartial(x1, y1, x2, y2, t1, t2);
                            if (draw_id) {
                                drawLinePartialID(frags[0], x1, y1, x2, y2, t1, t2);
                            }
                             break;
                        case ACTIVE_QUAD_SPAN:
                            x3 = frags[SPAN_X3];
                            y3 = frags[SPAN_Y3];
                            t1 = frags[SPAN_Q_T];
                            t2 = frags[SPAN_Q_TEND];
                            drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
                            if (draw_id) {
                                drawQuadPartialID(frags[0], x1, y1, x2, y2, x3, y3, t1, t2);
                            }
                            break;
                        case ACTIVE_CUBIC_SPAN:
                            x3 = frags[SPAN_X3];
                            y3 = frags[SPAN_Y3];
                            x4 = frags[SPAN_X4];
                            y4 = frags[SPAN_Y4];
                            t1 = frags[SPAN_C_T];
                            t2 = frags[SPAN_C_TEND];
                            drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
                            if (draw_id) {
                                drawCubicPartialID(frags[0], x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
                            }
                            break;
                        default:
                            console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                case REC_TYPE_ACTIVE_OP:
                    if (!draw_op || (step_limit > 0 && tIndex < lastOp)) {
                        continue;
                    }
                    focus_enabled = true;
                    ctx.lineWidth = 3;
                    var activeSpan = frags[7] == "1";
                    ctx.strokeStyle = activeSpan ? "rgba(45,160,0, 0.3)" : "rgba(255,45,0, 0.5)";
                    var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
                    drawCurve(curve);
                    if (draw_op > 1) {
                        drawArc(curve, false, frags[3], frags[4]);
                        drawArc(curve, true, frags[5], frags[6]);
                    }
                    break;
                case REC_TYPE_ADD:
                    if (!draw_add) {
                        continue;
                    }
                    ctx.lineWidth = 3;
                    ctx.strokeStyle = closeCount == 0 ? "rgba(0,0,255, 0.3)"
                            : closeCount == 1 ? "rgba(0,127,0, 0.3)"
                            : closeCount == 2 ? "rgba(0,127,127, 0.3)"
                            : closeCount == 3 ? "rgba(127,127,0, 0.3)"
                            : "rgba(127,0,127, 0.3)";
                    focus_enabled = true;
                    switch (fragType) {
                        case ADD_MOVETO:
                            break;
                        case ADD_LINETO:
                            if (step_limit == 0 || tIndex >= lastAdd) {
                                drawLine(frags[0], frags[1], frags[2], frags[3]);
                            }
                            break;
                        case ADD_QUADTO:
                            if (step_limit == 0 || tIndex >= lastAdd) {
                                drawQuad(frags[0], frags[1], frags[2], frags[3], frags[4], frags[5]);
                            }
                            break;
                        case ADD_CUBICTO:
                            if (step_limit == 0 || tIndex >= lastAdd) {
                                drawCubic(frags[0], frags[1], frags[2], frags[3],
                                        frags[4], frags[5], frags[6], frags[7]);
                            }
                            break;
                        case ADD_CLOSE:
                            ++closeCount;
                            break;
                        case ADD_FILL:
                            break;
                        default:
                            console.log("unknown REC_TYPE_ADD frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                case REC_TYPE_ANGLE:
                    if (!draw_angle || (step_limit > 0 && tIndex < lastAngle)) {
                        continue;
                    }
                    if (fragType != ANGLE_AFTER && fragType != ANGLE_AFTER2) {
                        continue;
                    }
                    focus_enabled = true;
                    ctx.lineWidth = 3;
                    ctx.strokeStyle = "rgba(127,45,127, 0.3)";
                    var leftCurve, midCurve, rightCurve;
                    if (fragType == ANGLE_AFTER) {
                        leftCurve = curvePartialByID(test, frags[0], frags[3], frags[4]);
                        midCurve = curvePartialByID(test, frags[5], frags[8], frags[9]);
                        rightCurve = curvePartialByID(test, frags[10], frags[13], frags[14]);
                    } else {
                        leftCurve = curvePartialByID(test, frags[0], frags[4], frags[5]);
                        midCurve = curvePartialByID(test, frags[6], frags[10], frags[11]);
                        rightCurve = curvePartialByID(test, frags[12], frags[16], frags[17]);
                    }
                    drawCurve(leftCurve);
                    drawCurve(rightCurve);
                    var inBetween = frags[fragType == ANGLE_AFTER ? 15 : 18] == "T";
                    ctx.strokeStyle = inBetween ? "rgba(0,160,45, 0.3)" : "rgba(255,0,45, 0.5)";
                    drawCurve(midCurve);
                    if (draw_angle > 1) {
                        drawOrder(leftCurve, 'L');
                        drawOrder(rightCurve, 'R');
                    }
                    break;
                case REC_TYPE_SECT:
                    if (!draw_intersection) {
                        continue;
                    }
                    if (draw_intersection != 1 && (step_limit > 0 && tIndex < lastSect)) {
                        continue;
                    }
                    // draw_intersection == 1 : show all
                    // draw_intersection == 2 : step == 0 ? show all : show intersection line #step
                    // draw_intersection == 3 : step == 0 ? show all : show intersection #step
                    ctx.lineWidth = 1;
                    ctx.strokeStyle = "rgba(0,0,255, 0.3)";
                    ctx.fillStyle = "blue";
                    focus_enabled = true;
                    var f = [];
                    var c1s;
                    var c1l;
                    var c2s;
                    var c2l;
                    switch (fragType) {
                        case INTERSECT_LINE:
                            f.push(5, 6, 0, 7);
                            c1s = 1; c1l = 4; c2s = 8; c2l = 4;
                            break;
                        case INTERSECT_LINE_2:
                            f.push(5, 6, 0, 10);
                            f.push(8, 9, 7, 15);
                            c1s = 1; c1l = 4; c2s = 11; c2l = 4;
                            break;
                        case INTERSECT_LINE_NO:
                            c1s = 0; c1l = 4; c2s = 4; c2l = 4;
                            break;
                        case INTERSECT_QUAD_LINE:
                            f.push(7, 8, 0, 9);
                            c1s = 1; c1l = 6; c2s = 10; c2l = 4;
                            break;
                        case INTERSECT_QUAD_LINE_2:
                            f.push(7, 8, 0, 12);
                            f.push(10, 11, 9, 17);
                            c1s = 1; c1l = 6; c2s = 13; c2l = 4;
                            break;
                        case INTERSECT_QUAD_LINE_NO:
                            c1s = 0; c1l = 6; c2s = 6; c2l = 4;
                            break;
                        case INTERSECT_QUAD:
                            f.push(7, 8, 0, 9);
                            c1s = 1; c1l = 6; c2s = 10; c2l = 6;
                            break;
                        case INTERSECT_QUAD_2:
                            f.push(7, 8, 0, 12);
                            f.push(10, 11, 9, 19);
                            c1s = 1; c1l = 6; c2s = 13; c2l = 6;
                            break;
                        case INTERSECT_QUAD_NO:
                            c1s = 0; c1l = 6; c2s = 6; c2l = 6;
                            break;
                        case INTERSECT_SELF_CUBIC:
                            f.push(9, 10, 0, 11);
                            c1s = 1; c1l = 8; c2s = 0; c2l = 0;
                            break;
                        case INTERSECT_SELF_CUBIC_NO:
                            c1s = 0; c1l = 8; c2s = 0; c2l = 0;
                            break;
                        case INTERSECT_CUBIC_LINE:
                            f.push(9, 10, 0, 11);
                            c1s = 1; c1l = 8; c2s = 12; c2l = 4;
                            break;
                        case INTERSECT_CUBIC_LINE_2:
                            f.push(9, 10, 0, 14);
                            f.push(12, 13, 11, 19);
                            c1s = 1; c1l = 8; c2s = 15; c2l = 4;
                            break;
                        case INTERSECT_CUBIC_LINE_3:
                            f.push(9, 10, 0, 17);
                            f.push(12, 13, 11, 22);
                            f.push(15, 16, 14, 23);
                            c1s = 1; c1l = 8; c2s = 18; c2l = 4;
                            break;
                        case INTERSECT_CUBIC_QUAD_NO:
                            c1s = 0; c1l = 8; c2s = 8; c2l = 6;
                            break;
                        case INTERSECT_CUBIC_QUAD:
                            f.push(9, 10, 0, 11);
                            c1s = 1; c1l = 8; c2s = 12; c2l = 6;
                            break;
                        case INTERSECT_CUBIC_QUAD_2:
                            f.push(9, 10, 0, 14);
                            f.push(12, 13, 11, 21);
                            c1s = 1; c1l = 8; c2s = 15; c2l = 6;
                            break;
                        case INTERSECT_CUBIC_QUAD_3:
                            f.push(9, 10, 0, 17);
                            f.push(12, 13, 11, 24);
                            f.push(15, 16, 14, 25);
                            c1s = 1; c1l = 8; c2s = 18; c2l = 6;
                            break;
                        case INTERSECT_CUBIC_QUAD_4:
                            f.push(9, 10, 0, 20);
                            f.push(12, 13, 11, 27);
                            f.push(15, 16, 14, 28);
                            f.push(18, 19, 17, 29);
                            c1s = 1; c1l = 8; c2s = 21; c2l = 6;
                            break;
                        case INTERSECT_CUBIC_LINE_NO:
                            c1s = 0; c1l = 8; c2s = 8; c2l = 4;
                            break;
                        case INTERSECT_CUBIC:
                            f.push(9, 10, 0, 11);
                            c1s = 1; c1l = 8; c2s = 12; c2l = 8;
                            break;
                        case INTERSECT_CUBIC_2:
                            f.push(9, 10, 0, 14);
                            f.push(12, 13, 11, 23);
                            c1s = 1; c1l = 8; c2s = 15; c2l = 8;
                            break;
                        case INTERSECT_CUBIC_3:
                            f.push(9, 10, 0, 17);
                            f.push(12, 13, 11, 26);
                            f.push(15, 16, 14, 27);
                            c1s = 1; c1l = 8; c2s = 18; c2l = 8;
                            break;
                        case INTERSECT_CUBIC_4:
                            f.push(9, 10, 0, 20);
                            f.push(12, 13, 11, 29);
                            f.push(15, 16, 14, 30);
                            f.push(18, 19, 17, 31);
                            c1s = 1; c1l = 8; c2s = 21; c2l = 8;
                            break;
                        case INTERSECT_CUBIC_NO:
                            c1s = 0; c1l = 8; c2s = 8; c2l = 8;
                            break;
                        default:
                            console.log("unknown REC_TYPE_SECT frag type: " + fragType);
                            throw "stop execution";
                    }
                    if (draw_intersection != 1) {
                        var id = -1;
                        var curve;
                        switch (c1l) {
                            case 4: 
                                drawLine(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]);
                                if (draw_id) {
                                    curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]];
                                    id = idByCurve(test, curve, PATH_LINE);
                                }
                                break;
                            case 6:
                                drawQuad(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
                                        frags[c1s + 4], frags[c1s + 5]);
                                if (draw_id) {
                                    curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
                                            frags[c1s + 4], frags[c1s + 5]];
                                    id = idByCurve(test, curve, PATH_QUAD);
                                }
                                break;
                            case 8:
                                drawCubic(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
                                        frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]);
                                if (draw_id) {
                                    curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
                                            frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]];
                                    id = idByCurve(test, curve, PATH_CUBIC);
                                }
                                break;
                        }
                        if (id >= 0) {
                            drawID(curve, id);
                        }
                        id = -1;
                        switch (c2l) {
                            case 0:
                                break;
                            case 4: 
                                drawLine(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]);
                                if (draw_id) {
                                    curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]];
                                    id = idByCurve(test, curve, PATH_LINE);
                                }
                                break;
                            case 6:
                                drawQuad(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
                                        frags[c2s + 4], frags[c2s + 5]);
                                if (draw_id) {
                                    curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
                                            frags[c2s + 4], frags[c2s + 5]];
                                    id = idByCurve(test, curve, PATH_QUAD);
                                }
                                break;
                            case 8:
                                drawCubic(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
                                        frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]);
                                if (draw_id) {
                                    curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
                                            frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]];
                                    id = idByCurve(test, curve, PATH_CUBIC);
                                }
                                break;
                        }
                        if (id >= 0) {
                            drawID(curve, id);
                        }
                    }
                    if (collect_bounds) {
                        break;
                    }
                    for (var idx = 0; idx < f.length; idx += 4) {
                        if (draw_intersection != 3 || idx == lastSect - tIndex) {
                            drawPoint(frags[f[idx]], frags[f[idx + 1]], true);
                        }
                    }
                    if (!draw_intersectT) {
                        break;
                    }
                    ctx.fillStyle = "red";
                    for (var idx = 0; idx < f.length; idx += 4) {
                        if (draw_intersection != 3 || idx == lastSect - tIndex) {
                            drawTAtPointUp(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 2]]);
                            drawTAtPointDown(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 3]]);
                        }
                    }
                    break;
                case REC_TYPE_SORT:
                    if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
                        continue;
                    }
                    ctx.lineWidth = 3;
                    ctx.strokeStyle = "rgba(127,127,0, 0.5)";
                    focus_enabled = true;
                    switch (fragType) {
                        case SORT_UNARY:
                        case SORT_BINARY:
                            var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
                            drawCurve(curve);
                            break;
                        default:
                            console.log("unknown REC_TYPE_SORT frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                case REC_TYPE_MARK:
                    if (!draw_mark || (step_limit > 0 && tIndex < lastMark)) {
                        continue;
                    }
                    ctx.lineWidth = 3;
                    ctx.strokeStyle = fragType >= MARK_DONE_LINE ?
                            "rgba(127,0,127, 0.5)" : "rgba(127,127,0, 0.5)";
                    focus_enabled = true;
                    switch (fragType) {
                        case MARK_LINE:
                        case MARK_DONE_LINE:
                        case MARK_UNSORTABLE_LINE:
                        case MARK_SIMPLE_LINE:
                        case MARK_SIMPLE_DONE_LINE:
                        case MARK_DONE_UNARY_LINE:
                            drawLinePartial(frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[9]);
                            if (draw_id) {
                                drawLinePartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[9]);
                            }
                            break;
                        case MARK_QUAD:
                        case MARK_DONE_QUAD:
                        case MARK_UNSORTABLE_QUAD:
                        case MARK_SIMPLE_QUAD:
                        case MARK_SIMPLE_DONE_QUAD:
                        case MARK_DONE_UNARY_QUAD:
                            drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], frags[7], frags[11]);
                            if (draw_id) {
                                drawQuadPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], frags[7], frags[11]);
                            }
                            break;
                        case MARK_CUBIC:
                        case MARK_DONE_CUBIC:
                        case MARK_UNSORTABLE_CUBIC:
                        case MARK_SIMPLE_CUBIC:
                        case MARK_SIMPLE_DONE_CUBIC:
                        case MARK_DONE_UNARY_CUBIC:
                            drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
                            if (draw_id) {
                                drawCubicPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
                                frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
                            }
                            break;
                        case MARK_ANGLE_LAST:
                            // FIXME: ignored for now
                            break;
                        default:
                            console.log("unknown REC_TYPE_MARK frag type: " + fragType);
                            throw "stop execution";
                    }
                    break;
                default:
                    continue;
            }
        }
        switch (recType) {
            case REC_TYPE_SORT:
                if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
                    break;
                }
                var angles = []; // use tangent lines to describe arcs
                var windFrom = [];
                var windTo = [];
                var opp = [];
                var minXY = Number.MAX_VALUE;
                var partial;
                focus_enabled = true;
                var someUnsortable = false;
                for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
                    var fragType = records[recordIndex];
                    var frags = records[recordIndex + 1];
                    var unsortable = (fragType == SORT_UNARY && frags[14]) ||
                            (fragType == SORT_BINARY && frags[16]);
                    someUnsortable |= unsortable;
                    switch (fragType) {
                        case SORT_UNARY:
                        case SORT_BINARY:
                            partial = curvePartialByID(test, frags[0], frags[6], frags[8]);
                            break;
                        default:
                            console.log("unknown REC_TYPE_SORT frag type: " + fragType);
                            throw "stop execution";
                    }
                    var dx = boundsWidth(partial);
                    var dy = boundsHeight(partial);
                    minXY = Math.min(minXY, dx * dx + dy * dy);
                    if (collect_bounds) {
                        continue;
                    }
                    angles.push(tangent(partial));
                    var from = frags[12];
                    var to = frags[12];
                    var sgn = frags[10];
                    if (sgn < 0) {
                        from -= frags[11];
                    } else if (sgn > 0) {
                        to -= frags[11];
                    }
                    windFrom.push(from + (unsortable ? "!" : ""));
                    windTo.push(to + (unsortable ? "!" : ""));
                    opp.push(fragType == SORT_BINARY);
                    if (draw_sort == 1) {
                        drawOrder(partial, frags[12]);
                    } else {
                        drawOrder(partial, (recordIndex / 2) + 1);
                    }
                }
                var radius = Math.sqrt(minXY) / 2 * scale;
                radius = Math.min(50, radius);
                var scaledRadius = radius / scale;
                var centerX = partial[0];
                var centerY = partial[1];
                if (collect_bounds) {
                    if (focus_enabled) {
                        focusXmin = Math.min(focusXmin, centerX - scaledRadius);
                        focusYmin = Math.min(focusYmin, centerY - scaledRadius);
                        focusXmax = Math.max(focusXmax, centerX + scaledRadius);
                        focusYmax = Math.max(focusYmax, centerY + scaledRadius);
                    }
                    break;
                }
                break;
            default:
                break;
        }
    }
    if (collect_bounds) {
        return;
    }
    if (draw_log && logStart >= 0) {
        ctx.font = "normal 10px Arial";
        ctx.textAlign = "left";
        ctx.beginPath();
        var top = screenHeight - 20 - (logRange + 2) * 10;
        ctx.rect(50, top, screenWidth - 100, (logRange + 2) * 10);
        ctx.fillStyle = "white";
        ctx.fill();
        ctx.fillStyle = "rgba(0,0,0, 0.5)";
        if (logStart > 0) {
            ctx.fillText(lines[logStart - 1], 50, top + 8);
        }
        ctx.fillStyle = "black";
        for (var idx = 0; idx < logRange; ++idx) {
            ctx.fillText(lines[logStart + idx], 50, top + 18 + 10 * idx);
        }
        ctx.fillStyle = "rgba(0,0,0, 0.5)";
        if (logStart + logRange < lines.length) {
            ctx.fillText(lines[logStart + logRange], 50, top + 18 + 10 * logRange);
        }
    }
    if (draw_legend) {
        var pos = 0;
        var drawSomething = draw_add | draw_active | draw_sort | draw_mark;
   //     drawBox(pos++, "yellow", "black", opLetter, true, '');
        drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? sectCount : sectMax2, draw_intersection, intersectionKey);
        drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addMax, draw_add, addKey);
        drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
        drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_angle ? angleCount : angleMax, draw_angle, angleKey);
        drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_op ? opCount : opMax, draw_op, opKey);
        drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
        drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
        drawBox(pos++, "black", "white", 
                (new Array('P', 'P1', 'P2', 'P'))[draw_path], draw_path != 0, pathKey);
        drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
                (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
                draw_computed != 0, computedKey);
        drawBox(pos++, "green", "black", step_limit, drawSomething, '');
        drawBox(pos++, "green", "black", stepMax, drawSomething, '');
        drawBox(pos++, "rgba(255,0,0, 0.6)", "black", lastIndex, drawSomething & draw_log, '');
        drawBox(pos++, "rgba(255,0,0, 0.6)", "black", test.length - 1, drawSomething & draw_log, '');
        if (curve_t) {
            drawCurveTControl();
        }
        ctx.font = "normal 20px Arial";
        ctx.fillStyle = "rgba(0,0,0, 0.3)";
        ctx.textAlign = "right";
        ctx.fillText(scale.toFixed(decimal_places) + 'x' , screenWidth - 10, screenHeight - 5);
    }
    if (draw_hints) {
        ctx.font = "normal 10px Arial";
        ctx.fillStyle = "rgba(0,0,0, 0.5)";
        ctx.textAlign = "right";
        var y = 4;
        ctx.fillText("control lines : " +  controlLinesKey, ctx.screenWidthwidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("curve t : " +  curveTKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("deriviatives : " +  deriviativesKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("intersect t : " +  intersectTKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("hodo : " +  hodoKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("log : " +  logKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("log curve : " +  logCurvesKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("mid point : " +  midpointKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("points : " +  ptsKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("sequence : " +  sequenceKey, screenWidth - 10, pos * 50 + y++ * 10);
        ctx.fillText("xy : " +  xyKey, screenWidth - 10, pos * 50 + y++ * 10);
    }
}

function drawBox(y, backC, foreC, str, enable, label) {
    ctx.beginPath();
    ctx.fillStyle = backC;
    ctx.rect(screenWidth - 40, y * 50 + 10, 40, 30);
    ctx.fill();
    ctx.font = "normal 16px Arial";
    ctx.fillStyle = foreC;
    ctx.textAlign = "center";
    ctx.fillText(str, screenWidth - 20, y * 50 + 32);
    if (!enable) {
        ctx.fillStyle = "rgba(255,255,255, 0.5)";
        ctx.fill();
    }
    if (label != '') {
        ctx.font = "normal 9px Arial";
        ctx.fillStyle = "black";
        ctx.fillText(label, screenWidth - 47, y * 50 + 40);
    }
}

function drawCurveTControl() {
    ctx.lineWidth = 2;
    ctx.strokeStyle = "rgba(0,0,0, 0.3)";
    ctx.beginPath();
    ctx.rect(screenWidth - 80, 40, 28, screenHeight - 80);
    ctx.stroke();
    var ty = 40 + curveT * (screenHeight - 80);
    ctx.beginPath();
    ctx.moveTo(screenWidth - 80, ty);
    ctx.lineTo(screenWidth - 85, ty - 5);
    ctx.lineTo(screenWidth - 85, ty + 5);
    ctx.lineTo(screenWidth - 80, ty);
    ctx.fillStyle = "rgba(0,0,0, 0.6)";
    ctx.fill();
    var num = curveT.toFixed(decimal_places);
    ctx.font = "normal 10px Arial";
    ctx.textAlign = "left";
    ctx.fillText(num, screenWidth - 78, ty);
}

function ptInTControl() {
    var e = window.event;
	var tgt = e.target || e.srcElement;
    var left = tgt.offsetLeft;
    var top = tgt.offsetTop;
    var x = (e.clientX - left);
    var y = (e.clientY - top);
    if (x < screenWidth - 80 || x > screenWidth - 50) {
        return false;
    }
    if (y < 40 || y > screenHeight - 80) {
        return false;
    }
    curveT = (y - 40) / (screenHeight - 120);
    if (curveT < 0 || curveT > 1) {
        throw "stop execution";
    }
    return true;
}

function drawTop() {
    if (tests[testIndex] == null) {
        var str = testDivs[testIndex].textContent;
        parse_all(str);
        var title = testDivs[testIndex].id.toString();
        testTitles[testIndex] = title;
    }
    init(tests[testIndex]);
    redraw();
}

function redraw() {
    if (focus_on_selection) {
        collect_bounds = true;
        draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
        collect_bounds = false;
        if (focusXmin < focusXmax && focusYmin < focusYmax) {
            setScale(focusXmin, focusXmax, focusYmin, focusYmax);
        }
    }
    ctx.beginPath();
    ctx.fillStyle = "white";
    ctx.rect(0, 0, screenWidth, screenHeight);
    ctx.fill();
    draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
}

function dumpCurvePartial(test, id, t0, t1) {
    var curve = curveByID(test, id);
    var name = ["line", "quad", "cubic"][curve.length / 2 - 2];
    console.log("id=" + id + " " + name + "=" +  curveToString(curve)
        + " t0=" + t0 + " t1=" + t1
        + " partial=" + curveToString(curvePartialByID(test, id, t0, t1)));
}

function dumpAngleTest(test, id, t0, t1) {
    var curve = curveByID(test, id);
    console.log("    { {" + curveToString(curve) + "}, " 
            + curve.length / 2 + ", " + t0 + ", " + t1 + ", {} }, //");
}

function dumpLogToConsole() {
    if (logStart < 0) {
        return;
    }
    var test = tests[testIndex];
    var recType = REC_TYPE_UNKNOWN;
    var records;
    for (var index = 0; index < test.length; index += 3) {
        var lastLineNo = test[index + 1];
        if (lastLineNo >= logStart && lastLineNo < logStart + logRange) {
            recType = test[index];
            records = test[index + 2];
            break;
        }
    }
    if (recType == REC_TYPE_UNKNOWN) {
        return;
    }
    var lines = testLines[testIndex];
    for (var idx = 0; idx < logRange; ++idx) {
        var line = lines[logStart + idx];
        console.log(line);
        for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
            var fragType = records[recordIndex];
            var frags = records[recordIndex + 1];
            if (recType == REC_TYPE_ANGLE && fragType == ANGLE_AFTER) {
                dumpCurvePartial(test, frags[0], frags[3], frags[4]);
                dumpCurvePartial(test, frags[5], frags[8], frags[9]);
                dumpCurvePartial(test, frags[10], frags[13], frags[14]);
                console.log("\nstatic IntersectData intersectDataSet[] = {");
                dumpAngleTest(test, frags[0], frags[3], frags[4]);
                dumpAngleTest(test, frags[5], frags[8], frags[9]);
                dumpAngleTest(test, frags[10], frags[13], frags[14]);
                console.log("};");
            } else if (recType == REC_TYPE_ANGLE && fragType == ANGLE_AFTER2) {
                dumpCurvePartial(test, frags[0], frags[4], frags[5]);
                dumpCurvePartial(test, frags[6], frags[10], frags[11]);
                dumpCurvePartial(test, frags[12], frags[16], frags[17]);
                console.log("\nstatic IntersectData intersectDataSet[] = { //");
                dumpAngleTest(test, frags[0], frags[4], frags[5]);
                dumpAngleTest(test, frags[6], frags[10], frags[11]);
                dumpAngleTest(test, frags[12], frags[16], frags[17]);
                console.log("}; //");
            }
        }
    }
}

var activeKey = 'a';
var pathKey = 'b';
var pathBackKey = 'B';
var centerKey = 'c';
var addKey = 'd';
var deriviativesKey = 'f';
var angleKey = 'g';
var angleBackKey = 'G';
var hodoKey = 'h';
var intersectionKey = 'i';
var intersectionBackKey = 'I';
var sequenceKey = 'j';
var midpointKey = 'k';
var logKey = 'l';
var logToConsoleKey = 'L';
var markKey = 'm';
var sortKey = 'o';
var opKey = 'p';
var opBackKey = 'P';
var computedKey = 'q';
var computedBackKey = 'Q';
var stepKey = 's';
var stepBackKey = 'S';
var intersectTKey = 't';
var curveTKey = 'u';
var controlLinesBackKey = 'V';
var controlLinesKey = 'v';
var ptsKey = 'x';
var xyKey = 'y';
var logCurvesKey = 'z';
var focusKey = '`';
var idKey = '.';
var retinaKey = '\\';

function doKeyPress(evt) {
    var char = String.fromCharCode(evt.charCode);
    var focusWasOn = false;
    switch (char) {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
        decimal_places = char - '0';
        redraw();
        break;
    case activeKey:
        draw_active ^= true;
        redraw(); 
        break;
    case addKey:
        draw_add ^= true;
        redraw(); 
        break;
    case angleKey:
        draw_angle = (draw_angle + 1) % 3;
        redraw();
        break;
    case angleBackKey:
        draw_angle = (draw_angle + 2) % 3;
        redraw();
        break;
    case centerKey:
        setScale(xmin, xmax, ymin, ymax);
        redraw(); 
        break;
    case controlLinesBackKey:
        control_lines = (control_lines + 3) % 4;
        redraw(); 
        break;
    case controlLinesKey:
        control_lines = (control_lines + 1) % 4;
        redraw(); 
        break;
    case computedBackKey:
        draw_computed = (draw_computed + 5) % 6;
        redraw(); 
        break;
    case computedKey:
        draw_computed = (draw_computed + 1) % 6;
        redraw(); 
        break;
    case curveTKey:
        curve_t ^= true;
        if (curve_t) {
            draw_legend = true;
        }
        redraw();
        break;
    case deriviativesKey:
        draw_deriviatives = (draw_deriviatives + 1) % 3;
        redraw();
        break;
    case focusKey:
        focus_on_selection ^= true;
        setScale(xmin, xmax, ymin, ymax);
        redraw();
        break;
    case hodoKey:
        draw_hodo = (draw_hodo + 1) % 4;
        redraw();
        break;
    case idKey:
        draw_id ^= true;
        redraw();
        break;
    case intersectionBackKey:
        draw_intersection = (draw_intersection + 3) % 4;
        redraw(); 
        break;
    case intersectionKey:
        draw_intersection = (draw_intersection + 1) % 4;
        redraw(); 
        break;
    case intersectTKey:
        draw_intersectT ^= true;
        redraw();
        break;
    case logCurvesKey:
        logCurves(tests[testIndex]);
        break;
    case logKey:
        draw_log ^= true;
        redraw();
        break;
    case logToConsoleKey:
        if (draw_log) {
            dumpLogToConsole();
        }
        break;
    case markKey:
        draw_mark ^= true;
        redraw();
        break;
    case midpointKey:
        draw_midpoint ^= true;
        redraw();
        break;
    case opKey:
        draw_op = (draw_op + 1) % 3;
        redraw();
        break;
    case opBackKey:
        draw_op = (draw_op + 2) % 3;
        redraw();
        break;
    case pathKey:
        draw_path = (draw_path + 1) % 4;
        redraw(); 
        break;
    case pathBackKey:
        draw_path = (draw_path + 3) % 4;
        redraw(); 
        break;
    case ptsKey:
        pt_labels = (pt_labels + 1) % 3;
        redraw();
        break;
    case retinaKey:
        retina_scale ^= true;
        drawTop();
        break;
    case sequenceKey:
        draw_sequence ^= true;
        redraw();
        break;
    case sortKey:
        draw_sort = (draw_sort + 1) % 3;
        drawTop();
        break;
    case stepKey:
        step_limit++;
        if (step_limit > stepMax) {
            step_limit = stepMax;
        }
        redraw();
        break;
    case stepBackKey:
        step_limit--;
        if (step_limit < 0) {
            step_limit = 0;
        }
        redraw();
        break;
    case xyKey:
        debug_xy = (debug_xy + 1) % 3;
        redraw();
        break;
    case '-':
        focusWasOn = focus_on_selection;
        if (focusWasOn) {
            focus_on_selection = false;
            scale /= 1.2;
        } else {
            scale /= 2;
            calcLeftTop();
        }
        redraw();
        focus_on_selection = focusWasOn;
        break;
    case '=':
    case '+':
        focusWasOn = focus_on_selection;
        if (focusWasOn) {
            focus_on_selection = false;
            scale *= 1.2;
        } else {
            scale *= 2;
            calcLeftTop();
        }
        redraw();
        focus_on_selection = focusWasOn;
        break;
    case '?':
        draw_hints ^= true;
        if (draw_hints && !draw_legend) {
            draw_legend = true;
        }
        redraw();
        break;
    case '/':
        draw_legend ^= true;
        redraw();
        break;
    }
}

function doKeyDown(evt) {
    var char = evt.keyCode;
    var preventDefault = false;
    switch (char) {
    case 37: // left arrow
        if (evt.shiftKey) {
            testIndex -= 9;
        }
        if (--testIndex < 0)
            testIndex = tests.length - 1;
        drawTop();
        preventDefault = true;
        break;
    case 39: // right arrow
        if (evt.shiftKey) {
            testIndex += 9;
        }
        if (++testIndex >= tests.length)
            testIndex = 0;
        drawTop();
        preventDefault = true;
        break;
    }
    if (preventDefault) {
          evt.preventDefault();
          return false;
    }
    return true;
}

(function() {
    var hidden = "hidden";

    // Standards:
    if (hidden in document)
        document.addEventListener("visibilitychange", onchange);
    else if ((hidden = "mozHidden") in document)
        document.addEventListener("mozvisibilitychange", onchange);
    else if ((hidden = "webkitHidden") in document)
        document.addEventListener("webkitvisibilitychange", onchange);
    else if ((hidden = "msHidden") in document)
        document.addEventListener("msvisibilitychange", onchange);
    // IE 9 and lower:
    else if ('onfocusin' in document)
        document.onfocusin = document.onfocusout = onchange;
    // All others:
    else
        window.onpageshow = window.onpagehide 
            = window.onfocus = window.onblur = onchange;

    function onchange (evt) {
        var v = 'visible', h = 'hidden',
            evtMap = { 
                focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h 
            };

        evt = evt || window.event;
        if (evt.type in evtMap)
            document.body.className = evtMap[evt.type];
        else        
            document.body.className = this[hidden] ? "hidden" : "visible";
    }
})();

function calcXY() {
    var e = window.event;
	var tgt = e.target || e.srcElement;
    var left = tgt.offsetLeft;
    var top = tgt.offsetTop;
    mouseX = (e.clientX - left) / scale + srcLeft;
    mouseY = (e.clientY - top) / scale + srcTop;
}

function calcLeftTop() {
    srcLeft = mouseX - screenWidth / 2 / scale;
    srcTop = mouseY - screenHeight / 2 / scale;
}

var disableClick = false;

function handleMouseClick() {
    if (disableClick) {
        return;
    }
    if (!curve_t || !ptInTControl()) {
        calcXY();
        calcLeftTop();
    }
    redraw();
//    if (!curve_t || !ptInTControl()) {
//        mouseX = screenWidth / 2 / scale + srcLeft;
//        mouseY = screenHeight / 2 / scale + srcTop;
//    }
}

function handleMouseOver() {
    calcXY();
    if (debug_xy != 2) {
        return;
    }
    var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
    ctx.beginPath();
    ctx.rect(300,100,num.length * 6,10);
    ctx.fillStyle="white";
    ctx.fill();
    ctx.font = "normal 10px Arial";
    ctx.fillStyle="black";
    ctx.textAlign = "left";
    ctx.fillText(num, 300, 108);
}

function start() {
    for (var i = 0; i < testDivs.length; ++i) {
        tests[i] = null;
    }
    testIndex = 0;
    drawTop();
    window.addEventListener('keypress', doKeyPress, true);
    window.addEventListener('keydown', doKeyDown, true);
    window.onresize = function() {
        drawTop();
    }
    /*
    window.onpagehide = function() {
        disableClick = true;
    }
    */
    window.onpageshow = function () {
        disableClick = false;
    }
}

</script>
</head>

<body onLoad="start();">
<canvas id="canvas" width="750" height="500"
    onmousemove="handleMouseOver()"
    onclick="handleMouseClick()"
    ></canvas >
</body>
</html>
