diff --git a/bin/prepare-refseqs.pl b/bin/prepare-refseqs.pl index dd4b904dc4..55bc6b13b3 100755 --- a/bin/prepare-refseqs.pl +++ b/bin/prepare-refseqs.pl @@ -247,11 +247,8 @@ =head1 OPTIONS 'label' => $seqTrackName, 'key' => $seqTrackName, 'type' => "SequenceTrack", - 'config' => - { - 'chunkSize' => $chunkSize, - 'urlTemplate' => "$seqRel/{refseq}/", - } + 'chunkSize' => $chunkSize, + 'urlTemplate' => "$seqRel/{refseq}/", }; return $trackList; }); diff --git a/compat_121.html b/compat_121.html new file mode 100644 index 0000000000..8caf0e4fd1 --- /dev/null +++ b/compat_121.html @@ -0,0 +1,80 @@ + + + + +
+[ {start: 1, end: 2, strand: -1}, {start: 5, end: 6, strand: 1}, ... ] ++ + @description we can represent them more compactly (e.g., in JSON) something like this: + +
class = ["start", "end", "strand"] [ [1, 2, -1], [5, 6, 1], ... ] +If we want to represent a few different kinds of objects in our big list, we can have multiple "class" arrays, and tag each object to identify @@ -21,6 +36,8 @@ For example, if we have a lot of instances of a few types of objects, like this: + +
[ {start: 1, end: 2, strand: 1, id: 1}, {start: 5, end: 6, strand: 1, id: 2}, @@ -29,8 +46,12 @@ {start: 30, end: 40, chunk: 2}, ... ] ++ We could use the first array position to indicate the "class" for the object, like this: + +
classes = [["start", "end", "strand", "id"], ["start", "end", "chunk"]] [ [0, 1, 2, 1, 1], @@ -39,13 +60,18 @@ [1, 10, 20, 1], [1, 30, 40, 1] ] ++ Also, if we occasionally want to add an ad-hoc attribute, we could just stick an optional dictionary onto the end: + +
classes = [["start", "end", "strand", "id"], ["start", "end", "chunk"]] [ [0, 1, 2, 1, 1], [0, 5, 6, 1, 2, {foo: 1}] ] +Given that individual objects are being represented by arrays, generic code needs some way to differentiate arrays that are meant to be objects @@ -59,15 +85,15 @@ In the end, we get something like this: +
classes=[ {'attributes': ['Start', 'End', 'Subfeatures'], 'proto': {'Chrom': 'chr1'}, 'isArrayAttr': {Subfeatures: true}} ] +That's what this class facilitates. - """ - */ function ArrayRepr (classes) { this.classes = classes; @@ -84,6 +110,9 @@ function ArrayRepr (classes) { } } +/** + * @private + */ ArrayRepr.prototype.attrIndices = function(attr) { return this.classes.map( function(x) { @@ -107,12 +136,6 @@ ArrayRepr.prototype.get = function(obj, attr) { } }; -ArrayRepr.prototype.fastGet = function(obj, attr) { - // can be used only if attr is guaranteed to be in - // the "classes" array for this object - return obj[self.fields[obj[0]][attr]]; -}; - ArrayRepr.prototype.set = function(obj, attr, val) { if (attr in this.fields[obj[0]]) { obj[this.fields[obj[0]][attr]] = val; @@ -124,12 +147,6 @@ ArrayRepr.prototype.set = function(obj, attr, val) { } }; -ArrayRepr.prototype.fastSet = function(obj, attr, val) { - // can be used only if attr is guaranteed to be in - // the "classes" array for this object - obj[this.fields[obj[0]][attr]] = val; -}; - ArrayRepr.prototype.makeSetter = function(attr) { var self = this; return function(obj, val) { self.set(obj, attr, val); }; @@ -170,6 +187,91 @@ ArrayRepr.prototype.construct = function(self, obj, klass) { return result; }; + +/** + +Returns fast pre-compiled getter and setter functions for use with +Arrays that use this representation. + +When the returned
get
and set
functions are
+added as methods to an Array that contains data in this
+representation, they provide fast access by name to the data.
+
+@returns {Object} { get: function() {...}, set: function(val) {...} }
+
+@example
+var accessors = attrs.accessors();
+var feature = get_feature_from_someplace();
+feature.get = accessors.get;
+// print out the feature start and end
+console.log( feature.get('start') + ',' + feature.get('end') );
+
+*/
+ArrayRepr.prototype.accessors = function () {
+ return this._accessors = this._accessors || this._makeAccessors();
+};
+
+/**
+ * @private
+ */
+ArrayRepr.prototype._makeAccessors = function() {
+ var that = this,
+ accessors = {
+ get: function(field) {
+ var f = this.get.field_accessors[field];
+ if( f )
+ return f.call(this);
+ else
+ return undefined;
+ },
+ set: function(field,val) {
+ var f = this.set.field_accessors[field];
+ if( f )
+ return f.call(this,val);
+ else
+ return undefined;
+ }
+ };
+ accessors.get.field_accessors = {};
+ accessors.set.field_accessors = {};
+
+ // make a data structure as: { attr_name: [offset,offset,offset], }
+ // that will be convenient for finding the location of the attr
+ // for a given class like: indexForAttr{attrname}[classnum]
+ var indices = {};
+ dojo.forEach( this.classes, function(cdef,classnum) {
+ dojo.forEach( cdef.attributes || [], function(attrname,offset) {
+ attrname = attrname.toLowerCase();
+ indices[attrname] = indices[attrname] || [];
+ indices[attrname][classnum] = offset + 1;
+ });
+ });
+
+ // use that to make precalculated get and set accessors for each field
+ for( var attrname in indices ) {
+ if( ! indices.hasOwnProperty(attrname) ) continue;
+
+ // get
+ accessors.get.field_accessors[ attrname ] = (function() {
+ var attr_indices = indices[attrname];
+ return !attr_indices ? function() { return undefined; } : function() {
+ return this[ attr_indices[ this[0] ] ];
+ };
+ })();
+
+ // set
+ accessors.set.field_accessors[ attrname ] = (function() {
+ var attr_indices = indices[attrname];
+ return !attr_indices ? function() { return undefined; } : function(v) {
+ return ( this[ attr_indices[ this[0] ] ] = v );
+ };
+ })();
+ }
+
+
+ return accessors;
+};
+
/*
Copyright (c) 2007-2010 The Evolutionary Software Foundation
diff --git a/js/Browser.js b/js/Browser.js
index 4ede46b126..aadaa54b0c 100644
--- a/js/Browser.js
+++ b/js/Browser.js
@@ -1,12 +1,14 @@
+// CONTROLLER
+
/**
* Construct a new Browser object.
* @class This class is the main interface between JBrowse and embedders
* @constructor
* @param params an object with the following properties:config
- list of objects with "url" property that points to a config JSON filecontainerID
- ID of the HTML element that contains the browserrefSeqs
- object with "url" property that is the URL to list of reference sequence information itemstracklists
- list of objects with "url" property that points to a track list JSON filebrowserRoot
- (optional) URL prefix for the browser codetracks
- (optional) comma-delimited string containing initial list of tracks to viewlocation
- (optional) string describing the initial locationtrackInfo.js
files.
+ * @class
+ * @extends ConfigAdaptor.JB_json_v1
+ */
+ConfigAdaptor.JB_json_v0 = function() {
+};
+ConfigAdaptor.JB_json_v0.prototype = new ConfigAdaptor.JB_json_v1();
+
+/**
+ * Munge the v0 configuration to conform to v1.
+ *
+ * @param {Object} o the object containing the configuration, which it
+ * modifies in-place
+ * @param {Object} load_args the arguments that were passed to load()
+ * @returns {Object} v1-compliant configuration
+ */
+ConfigAdaptor.JB_json_v0.prototype.regularize_conf = function( o, load_args ) {
+
+ // transform Ye Olde Confige to conform to format version 1
+ o = { tracks: o };
+ dojo.forEach( o.tracks, function( trackdef ) {
+ if( 'url' in trackdef ) {
+ trackdef.urlTemplate = trackdef.url;
+ //trackdef.urlTemplate = trackdef.url.replace(/\{refseq\}\/([^/]+)/, "$1/{refseq}");
+ delete trackdef.url;
+
+ // TODO: this backendVersion thing is a stopgap until we
+ // refactor far enough to have real pluggable datasources
+ trackdef.backendVersion = 0;
+ }
+ });
+
+ return ConfigAdaptor.JB_json_v1.prototype.regularize_conf.call( this, o, load_args );
+};
+
+/**
+ * Parse the trackInfo.js configuration text into JSON.
+ *
+ * @param {String} conf_text the text in the conf file
+ * @returns {Object} parsed JSON
+ */
+ConfigAdaptor.JB_json_v0.prototype.parse_conf = function( conf_text ) {
+ conf_text.replace( /^[^\{]+/, '' );
+ var conf;
+ return eval( 'conf = ' + conf_text );
+};
+
+
diff --git a/js/ConfigAdaptor/JB_json_v1.js b/js/ConfigAdaptor/JB_json_v1.js
new file mode 100644
index 0000000000..7d3180d1a2
--- /dev/null
+++ b/js/ConfigAdaptor/JB_json_v1.js
@@ -0,0 +1,56 @@
+var ConfigAdaptor; if( !ConfigAdaptor ) ConfigAdaptor = {};
+
+/**
+ * Configuration adaptor for JBrowse JSON version 1 configuration
+ * files (formerly known as trackList.json files).
+ * @class
+ */
+ConfigAdaptor.JB_json_v1 = function() {
+};
+
+ConfigAdaptor.JB_json_v1.prototype.load = function( args ) {
+ var that = this;
+ dojo.xhrGet({
+ url: args.config.url,
+ handleAs: 'text',
+ load: function( o ) {
+ o = that.parse_conf( o, args );
+ o = that.regularize_conf( o, args );
+ args.onSuccess.call( args.context || this, o );
+ },
+ error: function( i ) {
+ console.error( ''+i );
+ if( args.onFailure )
+ args.onFailure.call( args.context || this, i);
+ }
+ });
+};
+
+/**
+ * In this adaptor, just evals the conf text to parse the JSON, but
+ * other conf adaptors might want to inherit and override this.
+ * @param {String} conf_text the configuration text
+ * @param {Object} load_args the arguments that were passed to load()
+ * @returns {Object} the parsed JSON
+ */
+ConfigAdaptor.JB_json_v1.prototype.parse_conf = function( conf_text, load_args ) {
+ var conf;
+ return eval( 'conf = ' + conf_text );
+};
+
+/**
+ * Applies defaults and any other necessary tweaks to the loaded JSON
+ * configuration. Called by load()
on the JSON
+ * configuration before it calls the onSuccess
callback.
+ * @param {Object} o the object containing the configuration, which it
+ * modifies in-place
+ * @param {Object} load_args the arguments that were passed to load()
+ * @returns the same object it was passed
+ */
+ConfigAdaptor.JB_json_v1.prototype.regularize_conf = function( o, load_args ) {
+ o.sourceUrl = o.sourceUrl || load_args.config.url;
+ o.baseUrl = o.baseUrl || Util.resolveUrl( o.sourceUrl, '.' );
+ if( ! /\/$/.test( o.baseUrl ) )
+ o.baseUrl += "/";
+ return o;
+};
diff --git a/js/FeatureTrack.js b/js/FeatureTrack.js
index e4b38e368d..db657b521d 100644
--- a/js/FeatureTrack.js
+++ b/js/FeatureTrack.js
@@ -1,8 +1,14 @@
-function FeatureTrack(trackMeta, refSeq, browserParams) {
- //trackMeta: object with:
+// VIEW
+
+/**
+ * @class
+ */
+function FeatureTrack( config, refSeq, browserParams ) {
+ //config: object with:
// key: display text track name
// label: internal track name (no spaces, odd characters)
- // sourceUrl: URL of the tracklist containing this track entry
+ // baseUrl: base URL to use for resolving relative URLs
+ // contained in the track's configuration
// config: configuration info for this track
//refSeq: object with:
// name: refseq name
@@ -11,41 +17,43 @@ function FeatureTrack(trackMeta, refSeq, browserParams) {
//browserParams: object with:
// changeCallback: function to call once JSON is loaded
// trackPadding: distance in px between tracks
- // baseUrl: base URL for the URL in trackMeta
+ // baseUrl: base URL for the URL in config
- Track.call(this, trackMeta.label, trackMeta.key,
+ Track.call(this, config.label, config.key,
false, browserParams.changeCallback);
this.fields = {};
- this.features = new NCList();
this.refSeq = refSeq;
- this.url = Util.resolveUrl(trackMeta.sourceUrl,
- Util.fillTemplate(trackMeta.config.urlTemplate,
- {'refseq': refSeq.name}) );
+
+ // TODO: this featureStore object should eventuallly be
+ // instantiated by Browser and passed into this constructor, not
+ // constructed here.
+ var storeclass = config.backendVersion == 0 ? SeqFeatureStore.NCList_v0 : SeqFeatureStore.NCList;
+ this.featureStore = new storeclass({
+ urlTemplate: config.urlTemplate,
+ baseUrl: config.baseUrl,
+ refSeq: refSeq,
+ track: this
+ });
+
+ // connect the store and track loadSuccess and loadFailed events
+ // to eachother
+ dojo.connect( this.featureStore, 'loadSuccess', this, 'loadSuccess' );
+ dojo.connect( this.featureStore, 'loadFail', this, 'loadFail' );
+
+ this.featureStore.load();
+
//number of histogram bins per block
this.numBins = 25;
this.histLabel = false;
this.padding = 5;
this.trackPadding = browserParams.trackPadding;
- this.trackMeta = trackMeta;
- this.config = trackMeta.config;
- this.load(this.url);
+ this.config = config;
}
FeatureTrack.prototype = new Track("");
FeatureTrack.prototype.loadSuccess = function(trackInfo, url) {
- var startTime = new Date().getTime();
- this.count = trackInfo.featureCount;
- // average feature density per base
- this.density = trackInfo.featureCount / this.refSeq.length;
-
- this.attrs = new ArrayRepr(trackInfo.intervals.classes);
- this.features.importExisting(trackInfo.intervals.nclist,
- this.attrs,
- url,
- trackInfo.intervals.urlTemplate,
- trackInfo.intervals.lazyClass);
var defaultConfig = {
style: {
@@ -57,7 +65,7 @@ FeatureTrack.prototype.loadSuccess = function(trackInfo, url) {
subfeature: 80
},
hooks: {
- create: function(track, feat, attrs) {
+ create: function(track, feat ) {
var featDiv;
var featUrl = track.featureUrl(feat);
if (featUrl) {
@@ -76,13 +84,13 @@ FeatureTrack.prototype.loadSuccess = function(trackInfo, url) {
if (! this.config.linkTemplate) {
defaultConfig.events.click =
- function(track, elem, feat, attrs, event) {
- alert("clicked on feature\n" +
- "start: " + (Number(attrs.get(feat, "Start"))+1) +
- ", end: " + Number(attrs.get(feat, "End")) +
- ", strand: " + attrs.get(feat, "Strand") +
- ", label: " + attrs.get(feat, "Name") +
- ", ID: " + attrs.get(feat, "ID") );
+ function(track, elem, feat, event) {
+ alert( "clicked on feature\n" +
+ "start: " + (Number( feat.get('start') )+1) +
+ ", end: " + Number( feat.get('end') ) +
+ ", strand: " + feat.get('strand') +
+ ", label: " + feat.get('name') +
+ ", ID: " + feat.get('id') );
};
}
@@ -98,14 +106,6 @@ FeatureTrack.prototype.loadSuccess = function(trackInfo, url) {
this.wrapHandler(this.evalHook(this.config.events[event]));
}
- if (trackInfo.histograms) {
- this.histograms = trackInfo.histograms;
- for (var i = 0; i < this.histograms.meta.length; i++) {
- this.histograms.meta[i].lazyArray =
- new LazyArray(this.histograms.meta[i].arrayParams, url);
- }
- }
-
this.setLoaded();
};
@@ -134,16 +134,14 @@ FeatureTrack.prototype.wrapHandler = function(handler) {
//instead of the parent feature
if (!elem.feature) elem = elem.parentElement;
if (!elem.feature) return; //shouldn't happen; just bail if it does
- handler(track, elem, elem.feature, track.attrs, event);
+ handler(track, elem, elem.feature, event);
};
};
FeatureTrack.prototype.setViewInfo = function(genomeView, numBlocks,
trackDiv, labelDiv,
widthPct, widthPx, scale) {
- Track.prototype.setViewInfo.apply(this, [genomeView, numBlocks,
- trackDiv, labelDiv,
- widthPct, widthPx, scale]);
+ Track.prototype.setViewInfo.apply(this, arguments );
this.setLabel(this.key);
};
@@ -154,7 +152,7 @@ FeatureTrack.prototype.fillHist = function(blockIndex, block,
var bpPerBin = (rightBase - leftBase) / this.numBins;
var pxPerCount = 2;
var logScale = false;
- var stats = this.histograms.stats;
+ var stats = this.featureStore.histograms.stats;
for (var i = 0; i < stats.length; i++) {
if (stats[i].bases >= bpPerBin) {
//console.log("bpPerBin: " + bpPerBin + ", histStats bases: " + this.histStats[i].bases + ", mean/max: " + (this.histStats[i].mean / this.histStats[i].max));
@@ -206,10 +204,10 @@ FeatureTrack.prototype.fillHist = function(blockIndex, block,
// is at 50,000 bases/bin, and we have server histograms at 20,000
// and 2,000 bases/bin, then we should choose the 2,000 histogramMeta
// rather than the 20,000)
- var histogramMeta = this.histograms.meta[0];
- for (var i = 0; i < this.histograms.meta.length; i++) {
- if (bpPerBin >= this.histograms.meta[i].basesPerBin)
- histogramMeta = this.histograms.meta[i];
+ var histogramMeta = this.featureStore.histograms.meta[0];
+ for (var i = 0; i < this.featureStore.histograms.meta.length; i++) {
+ if (bpPerBin >= this.featureStore.histograms.meta[i].basesPerBin)
+ histogramMeta = this.featureStore.histograms.meta[i];
}
// number of bins in the server-supplied histogram for each current bin
@@ -240,13 +238,13 @@ FeatureTrack.prototype.fillHist = function(blockIndex, block,
);
} else {
// make our own counts
- this.features.histogram(leftBase, rightBase,
- this.numBins, makeHistBlock);
+ this.featureStore.histogram( leftBase, rightBase,
+ this.numBins, makeHistBlock);
}
};
FeatureTrack.prototype.endZoom = function(destScale, destBlockBases) {
- if (destScale < (this.density * this.config.scaleThresh.hist)) {
+ if (destScale < (this.featureStore.density * this.config.scaleThresh.hist)) {
this.setLabel(this.key + "urlTemplate
- for each lazily-loaded array chunk, the chunk number will get substituted for {chunk} in this template, and the result will beused as the URL of the JSON for that array chunklength
- length of the overall arrayImplements a lazy PATRICIA tree. This class is a map where the keys are strings. The map supports fast @@ -47,7 +50,11 @@ the wire (so, no type tags in the JSON to distinguish loaded nodes, lazy nodes, and leaves) while supporting lazy loading and reasonably fast lookups. - */ ++ +@class + +*/ function LazyTrie(rootURL, chunkTempl) { this.rootURL = rootURL; diff --git a/js/NCList.js b/js/NCList.js index b040edd632..7597f7eb0b 100644 --- a/js/NCList.js +++ b/js/NCList.js @@ -1,9 +1,22 @@ -//After -//Alekseyenko, A., and Lee, C. (2007). -//Nested Containment List (NCList): A new algorithm for accelerating -// interval query of genome alignment and interval databases. -//Bioinformatics, doi:10.1093/bioinformatics/btl647 -//http://bioinformatics.oxfordjournals.org/cgi/content/abstract/btl647v1 +// MODEL + +/** + +Nested containment list. + +@class + +After +
+ Alekseyenko, A., and Lee, C. (2007). + Nested Containment List (NCList): A new algorithm for accelerating + interval query of genome alignment and interval databases. + Bioinformatics, doi:10.1093/bioinformatics/btl647 ++ +http://bioinformatics.oxfordjournals.org/cgi/content/abstract/btl647v1 + + */ function NCList() { } @@ -111,10 +124,12 @@ NCList.prototype.iterHelper = function(arr, from, to, fun, finish, } var chunk = this.lazyChunks[chunkNum]; finish.inc(); - Util.maybeLoad(Util.resolveUrl(this.baseURL, + Util.maybeLoad({ url: Util.resolveUrl(this.baseURL, this.lazyUrlTemplate.replace( /\{Chunk\}/g, chunkNum ) ), + handleAs: 'json' + }, chunk, (function (myChunkNum) { return function(o) { diff --git a/js/NCList_v0.js b/js/NCList_v0.js new file mode 100644 index 0000000000..e64f295f0b --- /dev/null +++ b/js/NCList_v0.js @@ -0,0 +1,216 @@ +/** + * Legacy-compatible NCList for 1.2.1 backcompat. + * @extends + */ +function NCList_v0() {} + +NCList_v0.prototype.importExisting = function(nclist, sublistIndex, + lazyIndex, baseURL, + lazyUrlTemplate) { + this.topList = nclist; + this.sublistIndex = sublistIndex; + this.lazyIndex = lazyIndex; + this.baseURL = baseURL; + this.lazyUrlTemplate = lazyUrlTemplate; +}; + +NCList_v0.prototype.fill = function(intervals, sublistIndex) { + //intervals: array of arrays of [start, end, ...] + //sublistIndex: index into a [start, end] array for storing a sublist + // array. this is so you can use those arrays for something + // else, and keep the NCList_v0 bookkeeping from interfering. + // That's hacky, but keeping a separate copy of the intervals + // in the NCList_v0 seems like a waste (TODO: measure that waste). + //half-open? + this.sublistIndex = sublistIndex; + var myIntervals = intervals;//.concat(); + //sort by OL + myIntervals.sort(function(a, b) { + if (a[0] != b[0]) + return a[0] - b[0]; + else + return b[1] - a[1]; + }); + var sublistStack = new Array(); + var curList = new Array(); + this.topList = curList; + curList.push(myIntervals[0]); + var curInterval, topSublist; + for (var i = 1, len = myIntervals.length; i < len; i++) { + curInterval = myIntervals[i]; + //if this interval is contained in the previous interval, + if (curInterval[1] < myIntervals[i - 1][1]) { + //create a new sublist starting with this interval + sublistStack.push(curList); + curList = new Array(curInterval); + myIntervals[i - 1][sublistIndex] = curList; + } else { + //find the right sublist for this interval + while (true) { + if (0 == sublistStack.length) { + curList.push(curInterval); + break; + } else { + topSublist = sublistStack[sublistStack.length - 1]; + if (topSublist[topSublist.length - 1][1] > curInterval[1]) { + //curList is the first (deepest) sublist that + //curInterval fits into + curList.push(curInterval); + break; + } else { + curList = sublistStack.pop(); + } + } + } + } + } +}; + +NCList_v0.prototype.binarySearch = function(arr, item, itemIndex) { + var low = -1; + var high = arr.length; + var mid; + + while (high - low > 1) { + mid = (low + high) >>> 1; + if (arr[mid][itemIndex] > item) + high = mid; + else + low = mid; + } + + //if we're iterating rightward, return the high index; + //if leftward, the low index + if (1 == itemIndex) return high; else return low; +}; + +NCList_v0.prototype.iterHelper = function(arr, from, to, fun, finish, + inc, searchIndex, testIndex, path) { + var len = arr.length; + var i = this.binarySearch(arr, from, searchIndex); + while ((i < len) + && (i >= 0) + && ((inc * arr[i][testIndex]) < (inc * to)) ) { + + if ("object" == typeof arr[i][this.lazyIndex]) { + var ncl = this; + // lazy node + if (arr[i][this.lazyIndex].state) { + if ("loading" == arr[i][this.lazyIndex].state) { + // node is currenly loading; finish this query once it + // has been loaded + finish.inc(); + arr[i][this.lazyIndex].callbacks.push( + function(parentIndex) { + return function(o) { + ncl.iterHelper(o, from, to, fun, finish, inc, + searchIndex, testIndex, + path.concat(parentIndex)); + finish.dec(); + }; + }(i) + ); + } else if ("loaded" == arr[i][this.lazyIndex].state) { + // just continue below + } else { + console.log("unknown lazy type: " + arr[i]); + } + } else { + // no "state" property means this node hasn't been loaded, + // start loading + arr[i][this.lazyIndex].state = "loading"; + arr[i][this.lazyIndex].callbacks = []; + finish.inc(); + dojo.xhrGet( + { + url: this.baseURL + + this.lazyUrlTemplate.replace( + /\{chunk\}/g, + arr[i][this.lazyIndex].chunk + ), + handleAs: "json", + load: function(lazyFeat, lazyObj, + sublistIndex, parentIndex) { + return function(o) { + lazyObj.state = "loaded"; + lazyFeat[sublistIndex] = o; + ncl.iterHelper(o, from, to, + fun, finish, inc, + searchIndex, testIndex, + path.concat(parentIndex)); + for (var c = 0; + c < lazyObj.callbacks.length; + c++) + lazyObj.callbacks[c](o); + finish.dec(); + }; + }(arr[i], arr[i][this.lazyIndex], this.sublistIndex, i), + error: function() { + finish.dec(); + } + }); + } + } else { + fun(arr[i], path.concat(i)); + } + + if (arr[i][this.sublistIndex]) + this.iterHelper(arr[i][this.sublistIndex], from, to, + fun, finish, inc, searchIndex, testIndex, + path.concat(i)); + i += inc; + } +}; + +NCList_v0.prototype.iterate = function(from, to, fun, postFun) { + // calls the given function once for each of the + // intervals that overlap the given interval + //if from <= to, iterates left-to-right, otherwise iterates right-to-left + + //inc: iterate leftward or rightward + var inc = (from > to) ? -1 : 1; + //searchIndex: search on start or end + var searchIndex = (from > to) ? 0 : 1; + //testIndex: test on start or end + var testIndex = (from > to) ? 1 : 0; + var finish = new Finisher(postFun); + this.iterHelper(this.topList, from, to, fun, finish, + inc, searchIndex, testIndex, []); + finish.finish(); +}; + +NCList_v0.prototype.histogram = function(from, to, numBins, callback) { + //calls callback with a histogram of the feature density + //in the given interval + + var result = new Array(numBins); + var binWidth = (to - from) / numBins; + for (var i = 0; i < numBins; i++) result[i] = 0; + //this.histHelper(this.topList, from, to, result, numBins, (to - from) / numBins); + this.iterate(from, to, + function(feat) { + var firstBin = + Math.max(0, ((feat[0] - from) / binWidth) | 0); + var lastBin = + Math.min(numBins, ((feat[1] - from) / binWidth) | 0); + for (var bin = firstBin; bin <= lastBin; bin++) + result[bin]++; + }, + function() { + callback(result); + } + ); +}; + +/* + +Copyright (c) 2007-2009 The Evolutionary Software Foundation + +Created by Mitchell Skinner
<img>
elements for the image
+ * tiles that should be displayed for a certain magnification scale
+ * and section of the reference.
+ * @param {Number} scale the current ratio of pixels per base in the view
+ * @param {Number} startBase the start of the region (in interbase coordinates)
+ * @param {Number} endBase the end of the region (in interbase coordinates)
+ */
+TiledImageStore.Fixed.prototype.getImages = function( scale, startBase, endBase ) {
+
+ var zoom = this._getZoom( scale );
+
+ var startTile = Math.max( startBase / zoom.basesPerTile, 0 ) | 0;
+ var endTile = endBase / zoom.basesPerTile | 0;
+
+ var result = [];
+ var im;
+ for (var i = startTile; i <= endTile; i++) {
+ im = this.tileToImage[i];
+ if (!im) {
+ im = document.createElement("img");
+ dojo.connect(im, "onerror", this.handleImageError );
+ im.src = this._imageSource( zoom, i );
+ //TODO: need image coord systems that don't start at 0?
+ im.startBase = (i * zoom.basesPerTile); // + this.refSeq.start;
+ im.baseWidth = zoom.basesPerTile;
+ im.tileNum = i;
+ this.tileToImage[i] = im;
+ }
+ result.push(im);
+ }
+ return result;
+};
+
+/**
+ * Gives the image source for a given zoom (as returned by _getZoom())
+ * and tileIndex.
+ * @private
+ */
+TiledImageStore.Fixed.prototype._imageSource = function( zoom, tileIndex ) {
+ return Util.resolveUrl(this.url, zoom.urlPrefix + tileIndex + ".png");
+};
+
+/**
+ * Clear the store's cache of image elements.
+ */
+TiledImageStore.Fixed.prototype.clearCache = function() {
+ this.tileToImage = {};
+};
+
+/**
+ * Remove the given image element from the cache.
+ */
+TiledImageStore.Fixed.prototype.unCacheImage = function( /**HTMLImageElement*/ im) {
+ delete this.tileToImage[ im.tileNum ];
+};
diff --git a/js/TiledImageStore/Fixed_v0.js b/js/TiledImageStore/Fixed_v0.js
new file mode 100644
index 0000000000..b701269eb8
--- /dev/null
+++ b/js/TiledImageStore/Fixed_v0.js
@@ -0,0 +1,17 @@
+/**
+ * @namespace
+ */
+var TiledImageStore; if( !TiledImageStore ) TiledImageStore = {};
+
+/**
+ * Subclass of TiledImageStore.Fixed to provide backward-compatibility
+ * with image stores formatted with JBrowse 1.2.1.
+ * @class
+ * @extends TiledImageStore.Fixed
+ */
+TiledImageStore.Fixed_v0 = TiledImageStore.Fixed;
+TiledImageStore.Fixed_v0.prototype = new TiledImageStore.Fixed('');
+
+TiledImageStore.Fixed_v0.prototype._imageSource = function( zoom, tileIndex ) {
+ return Util.resolveUrl( this.url, '../../' + zoom.urlPrefix + tileIndex + ".png" );
+};
diff --git a/js/Track.js b/js/Track.js
index c07739faa1..f61470ea34 100644
--- a/js/Track.js
+++ b/js/Track.js
@@ -1,3 +1,8 @@
+// VIEW
+
+/**
+ * @class
+ */
function Track(name, key, loaded, changeCallback) {
this.name = name;
this.key = key;
@@ -17,6 +22,10 @@ Track.prototype.load = function(url) {
});
};
+Track.prototype.loadSuccess = function(error) {
+ this.setLoaded();
+};
+
Track.prototype.loadFail = function(error) {
this.empty = true;
this.setLoaded();
diff --git a/js/Util.js b/js/Util.js
index cd286a98f3..6e2a6c6912 100644
--- a/js/Util.js
+++ b/js/Util.js
@@ -1,3 +1,9 @@
+// MISC
+
+/**
+ * @namespace
+ */
+
var Util = {};
Util.is_ie = navigator.appVersion.indexOf('MSIE') >= 0;
@@ -92,12 +98,13 @@ Util.fillTemplate = function(template, fillWith) {
/**
* function to load a specified resource only once
- * @param url URL to get
- * @param stateObj object that stores the state of the load
- * @param successCalback function to call on a successful load
- * @param errorCallback function to call on an unsuccessful load
+ * @param {Object} dojoXhrArgs object containing arguments for dojo.xhrGet,
+ * like url
and handleAs
+ * @param {Object} stateObj object that stores the state of the load
+ * @param {Function} successCallback function to call on a successful load
+ * @param {Function} errorCallback function to call on an unsuccessful load
*/
-Util.maybeLoad = function (url, stateObj, successCallback, errorCallback) {
+Util.maybeLoad = function ( dojoXhrArgs, stateObj, successCallback, errorCallback) {
if (stateObj.state) {
if ("loaded" == stateObj.state) {
successCallback(stateObj.data);
@@ -111,22 +118,22 @@ Util.maybeLoad = function (url, stateObj, successCallback, errorCallback) {
stateObj.state = "loading";
stateObj.successCallbacks = [successCallback];
stateObj.errorCallbacks = [errorCallback];
- dojo.xhrGet(
- {
- url: url,
- handleAs: "json",
- load: function(o) {
- stateObj.state = "loaded";
- stateObj.data = o;
- var cbs = stateObj.successCallbacks;
- for (var c = 0; c < cbs.length; c++) cbs[c](o);
- },
- error: function() {
- stateObj.state = "error";
- var cbs = stateObj.errorCallbacks;
- for (var c = 0; c < cbs.length; c++) cbs[c]();
- }
- });
+
+ var args = dojo.clone( dojoXhrArgs );
+ args.load = function(o) {
+ stateObj.state = "loaded";
+ stateObj.data = o;
+ var cbs = stateObj.successCallbacks;
+ for (var c = 0; c < cbs.length; c++) cbs[c](o);
+ };
+ args.error = function(error) {
+ console.error(''+error);
+ stateObj.state = "error";
+ var cbs = stateObj.errorCallbacks;
+ for (var c = 0; c < cbs.length; c++) cbs[c]();
+ };
+
+ dojo.xhrGet( args );
}
};
@@ -139,10 +146,11 @@ Util.deepUpdate = function(a, b) {
&& ("object" == typeof b[prop])
&& ("object" == typeof a[prop]) ) {
Util.deepUpdate(a[prop], b[prop]);
- } else {
+ } else if( typeof a[prop] == 'undefined' || typeof b[prop] != undefined ){
a[prop] = b[prop];
}
}
+ return a;
};
// from http://bugs.dojotoolkit.org/ticket/5794
@@ -252,6 +260,19 @@ Util.matchRefSeqName = function( name, refseqs ) {
return null;
};
+/**
+ * Wrap a handler function to be called 1ms later in a window timeout.
+ * This will usually give a better stack trace for figuring out where
+ * errors are happening.
+ */
+Util.debugHandler = function( context, func ) {
+ var debuggedHandler = function() {
+ var args = arguments;
+ window.setTimeout( function() { func.apply(context,args);}, 1);
+ };
+ return debuggedHandler;
+};
+
if (!Array.prototype.reduce)
{
Array.prototype.reduce = function(fun /*, initial*/)
@@ -362,6 +383,9 @@ if (!Array.prototype.indexOf)
};
}
+/**
+ * @class
+ */
function Finisher(fun) {
this.fun = fun;
this.count = 0;
diff --git a/js/touchJBrowse.js b/js/touchJBrowse.js
index b1894740f9..2688e74072 100644
--- a/js/touchJBrowse.js
+++ b/js/touchJBrowse.js
@@ -1,5 +1,4 @@
-
-
+// INTEGRATE ME INTO BROWSER.JS
function CompareObjPos(nodes, touch) {
var samePos = 0,
diff --git a/lib/GenomeDB.pm b/lib/GenomeDB.pm
index ec45aae2bf..1394a4d6b6 100644
--- a/lib/GenomeDB.pm
+++ b/lib/GenomeDB.pm
@@ -87,10 +87,10 @@ sub writeTrackEntry {
$trackIndex = ($#{$trackList} + 1) unless defined($trackIndex);
$trackList->[$trackIndex] = {
+ %{ $track->config || {} },
label => $track->label,
key => $track->key,
type => $track->type,
- config => $track->config
};
return $trackData;
};
@@ -158,7 +158,7 @@ sub getTrack {
return $type->new( $self->trackDir($trackLabel),
$baseUrl,
$trackDesc->{label},
- $trackDesc->{config},
+ $trackDesc,
$trackDesc->{key},
);
}
@@ -201,15 +201,12 @@ Return an arrayref of track definition hashrefs similar to:
[
{
- config => {
- autocomplete => "all",
- compress => 0,
- feature => ["remark"],
- key => "Example Features",
- style => { className => "feature2" },
- track => "ExampleFeatures",
- urlTemplate => "tracks/ExampleFeatures/{refseq}/trackData.json",
- },
+ autocomplete => "all",
+ compress => 0,
+ feature => ["remark"],
+ style => { className => "feature2" },
+ track => "ExampleFeatures",
+ urlTemplate => "tracks/ExampleFeatures/{refseq}/trackData.json",
key => "Example Features",
label => "ExampleFeatures",
type => "FeatureTrack",
diff --git a/tests/data/base_pairing/mahoney_formatted/trackList.json b/tests/data/base_pairing/mahoney_formatted/trackList.json
index 1a0e8a8fc7..6a75f7abe3 100644
--- a/tests/data/base_pairing/mahoney_formatted/trackList.json
+++ b/tests/data/base_pairing/mahoney_formatted/trackList.json
@@ -1,10 +1,8 @@
{
"tracks" : [
{
- "config" : {
- "chunkSize" : 20000,
- "urlTemplate" : "seq/{refseq}/"
- },
+ "chunkSize" : 20000,
+ "urlTemplate" : "seq/{refseq}/",
"type" : "SequenceTrack",
"label" : "DNA",
"key" : "DNA"
diff --git a/tests/data/hg19_formatted/trackList.json b/tests/data/hg19_formatted/trackList.json
index a8b25da4df..f7fff23767 100644
--- a/tests/data/hg19_formatted/trackList.json
+++ b/tests/data/hg19_formatted/trackList.json
@@ -1,7 +1,6 @@
{
"tracks" : [
{
- "config" : {
"urlTemplate" : "tracks/knownGene/{refseq}/trackData.jsonz",
"style" : {
"className" : "generic_parent",
@@ -16,8 +15,7 @@
"compress" : 1,
"hooks" : {
"modify" : "function(track, feat, attrs, elem) {\n var fType = attrs.get(feat, \"Type\");\n if (fType) {\n elem.className = \"basic\";\n switch (fType]) {\n case \"CDS\":\n case \"thick\":\n elem.style.height = \"10px\";\n elem.style.marginTop = \"-3px\";\n break;\n case \"UTR\":\n case \"thin\":\n elem.style.height = \"6px\";\n elem.style.marginTop = \"-1px\";\n break;\n }\n elem.style.backgroundColor = \"#0c0c78\";\n }\n}\n"
- }
- },
+ },
"type" : "FeatureTrack",
"label" : "knownGene",
"key" : "knownGene"
diff --git a/tests/data/volvox_formatted_1_2_1/refSeqs.js b/tests/data/volvox_formatted_1_2_1/refSeqs.js
new file mode 100644
index 0000000000..fbb225dc35
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/refSeqs.js
@@ -0,0 +1,11 @@
+refSeqs =
+[
+ {
+ "length" : 50001,
+ "name" : "ctgA",
+ "seqDir" : "seq/ctgA",
+ "seqChunkSize" : 20000,
+ "end" : 50001,
+ "start" : 0
+ }
+]
diff --git a/tests/data/volvox_formatted_1_2_1/seq/ctgA/0.txt b/tests/data/volvox_formatted_1_2_1/seq/ctgA/0.txt
new file mode 100644
index 0000000000..f23fb1ae81
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/seq/ctgA/0.txt
@@ -0,0 +1 @@
+cattgttgcggagttgaacaACGGCATTAGGAACACTTCCGTCTCtcacttttatacgattatgattggttctttagccttggtttagattggtagtagtagcggcgctaatgctacctgaattgagaactcgagcgggggctaggcaaattctgattcagcctgacttctcttggaaccctgcccataaatcaaagggttagtgcggccaaaacgttggacaacggtattagaagaccaacctgaccaccaaaccgtcaattaaccggtatcttctcggaaacggcggttctctcctagatagcgatctgtggtctcaccatgcaatttaaacaggtgagtaaagattgctacaaatacgagactagctgtcaccagatgctgttcatctgttggctccttggtcgctccgttgtacccaggctactttgaaagagcgcagaatacttagacggtatcgatcatggtagcatagcattctgataacatgtatggagttcgaacatccgtctggggccggacggtccgtttgaggttggttgatctgggtgatagtcagcaagatagacgttagataacaaattaaaggattttaccttagattgcgactagtacaacggtacatcggtgattcgcgctctactagatcacgctatgggtaccataaacaaacggtggaccttctcaagctggttgacgcctcagcaacataggcttcctcctccacgcatctcagcataaaaggcttataaactgcttctttgtgccagagcaactcaattaagcccttggtaccgtgggcacgcattctgtcacggtgaccaactgttcatcctgaatcgccgaatgggactatttggtacaggaatcaagcggatggcactactgcagcttatttacgacggtattcttaaagtttttaagacaatgtatttcatgggtagttcggtttgttttattgctacacaggctcttgtagacgacctacttagcactacggccgagcgcaataacccccggaaagcacttgctactgggaggcgggtttatccatcggcaataggggttatcagtactaccaagaagattgtgaagatattaacagcattgaaaaaagttcggactgggcatgaaacgtgtgtcagagttagagtccttgagggactgaatgggtttgtcccaggcccaagcttgaggtggatgtcacctcgggtactgcctctattacagaggtatcttaatggcgcatccagccttgtggctgggtctacgtacgcgtgggcaccatacgtatgttggcaggaaaggtcaatcatgcttgtttcctcgtcgcagaaacgttcacactattggctcgcgggatcgaacgggcctgattatttttccagctcctgcgttcctatcacgccaactgtcgctaataaaatgttatatagagataacccattgctatgcaaggatggagaaaccgcttcacaacaccctagaattacttcagcactaacatctaagataccgggaaaaccgtaggtgccacttggttttgagggcaatgcctcttgcactggcgattcgtggagtaaccttgctaccgatttccaccttttctaggtatgattacatgcgatcgccattgtcagtcgtcgtacgaaatccaggaaggaattcgaatacatgaccgaaagctatggcatcataagcgtggctctttactaaggacacgtgtagtcggctgatttcgcgcagaacttcgctcaccggacagtgactgctgtccgaacttgggggcagcgtagattctagctagagaccgcagcgaaaatgccactcgctaggtggctatggacgtccagctataggcccccacattcgtatgtatactccggtaattgagtctacctttcgaaagatcaaagttcacaaaccttctctcacgttaacatagatgctcgcacatagctagtccggtgataaagcggccgtgcatgcgagtatttagcgcacggaacagatattaggctgcgaaataccctcatatgctacagcgcaggtaacagacggttgatctccccgtagaattccctcaaggccggatcgttctcatgagtagcctttgtctgacatttcctctcaatagattgcagactcctgtgtcgtgggaaaacttcgcggaatcgctgtcgttacataaatctaaacagtgcagtccaagctatttactaccacgtatcataatgaacatctctttgtgaaatacgccggtacgccgagagatcgcccacattgcgtgtcaccaagacccagtgtctattgggcgcgctggttatagtatgcggaggcacccgatgtgctgctaatcactacaaactcgacaccaagaggcgaccgcgtgcgggagggctagaacgcgagagccacgtcaacgtggtggtaccgctcctgatgatacgagcactgtgctggcaccgctgccctatgtccagctaacaggtgtcacataatatcgcatctatagttgagtatcttatcgctagcgttacttgtgagttctcgggtagaatcgtcgtagcattctagtccttagcgtaagcaacgatatcgccgatattataggggcaataggtctcacccaccacgggtgtatatttaacgccctaagtagttaacggagactattaaacaattatgcacgtgaaagattagggtactgcacacgtgtcacgttgacgatgtaaacaccataaaggttgttctgtgatgcgatgcccatacctgcggtgcaacgtcctaaacttatgcggatcaccttctaattcagccgacgttgagaacgccagctatactctgtgagtacaaggtgaaagccccagatcaaaatattggagtcttgtccgtagctcttgggtggagagtgtgaccacgtttatcccttaatactgagactcttctcgttccacgccccggacattcgcgatacagcctagtttgataggtggctacaagggctctatccgaatagcacaaaactcagtcctagtgcgtataggtcgtgctctgcggttatacgctccacagaagaaagtacccactgcagtttgtcggtgggacttagcaaaacctgtaaccaaaaccgcacatggactctgttttggtggcgtggagtgtgcccgccgcctttatgctgggtcaaaatactatatgatttgttgtggtcgggcgcgacattggctcttatggtttataactattattcggtgcacagaaccgacttatgccccgattttgcacctcccgagagaaatggtactagtcattgtctcggggttttacaactcaaggataatctgccagcggtaccccgaaaaatcccatcccgaacggctggtacctatgctggagaccgaaatggagccagtgctatgcaaaccctcgctctttctatttggcccgaccagctgcgagagtcattcgacatacattgcgatggctggttcatctctctgcttcggattccgatcctgctgcctatggccacaacacgaaagagatcttggatacgtcctcaccatagtccaacggacaaatatggaggtgtacgcgcacggatacgagtacgacgggccgcccaatgctggtccttcgtgttatactgtttacttgcctccggtaagagtgtacagcttgtacccacgcggtggaggaccttacgcgtcgtccgcaggtgtggagatttcgctacctgttgcattggggcctcgccttacgtttttttcgacggaggcccgacccgccaggccagaccctcatcattgggatttttactgccttggacggcagattctgatgctggtaacgcgcttggcacacaccctggtcgtaattacgtactatcacctctattttaccaggggcgggccccgcctcaacgatcggtagtctcgttagaacagttgcttatactccgttagcactcacaactcggagaatgagcttacacagtccgtaatagtctccacagcttcccctggaaggttcgtacaggggccctggggtctaatgtgctaccgcctaacttcgttagtgtaaggtctcgtgtgcacctccaataacgctgcatttttgtatagaactcctttataggcctgactcttcggaacagcccactaattgacgtgcacgatgctgcatatacccttctcaatgacgcataccggtgactaaatcctgtggctggttgacactttgcataacccaccacgaaaacgcggtttgcacgtggttggaagcgagtaccggttaagggaagttacgtaaacccaacatagtgagcgatgcttaaaacactgcatgcgaacaacgaccggaacgagagcctaatagaaccaaatggataggtggttacgaaatccgcgcacaagtgtcgtgccactctcgtaaagaatgattgcttgcttatctatgagaaacctaataggcacgcacgtgtcgccagggaaaaaccaccatccgacaagacgctgaaaatcgagatagatgcagcccgcgcgtactttaagcacgatagccatcttgagcgcgacgattcagcttacggagattacttctcaaagcggacacctcgacgctgaagctctctatcgatgcacttgcatgtccatctacggcttgagcgaaccatgcttaacgcttggatgacgttgttagtcggattcgatcgtaccatactgtcctatccatcataacttcccgaattaaaactcattttctaccctcatttgtttcattggcgcatatgagcgccccatgggcgctgatcgacacaggcttgtagcgcacggctcgtcttgcagtagataaccatagtctttacgtcgcatatattaatatatcctcagacttccactgcggtattttggatcgtggcgtctgggacagtcacactctttaacgggagcgcgttcaatgtctgagtccatccgtgcagttcggtgcgattttattcttccctgcatcttccggattccttcttcttgtcggagaattcgccgctcgatcaaactcatcattggtacttattgaccgtttcatgctattacaccggtacactgatgataacgctgcggttttatcccccccaatacgcgcacacacgcttctttcggtgcgtcctgtcgtacccctattgcgcatcatggcactccagccgagcaatgctttggacaggtgtaaccaagctggatctagcgtgggttcgacacagctcggttcgtataaccacacgcatgaactgcgagtgcctcgccccagcgccgctgtctacttgctgtttagaggaagaagcaacagcttgcacccaatccgcatatctgcatataggtggccgttcctccgtggcgcgccgctacgttgtagcgcacggatcaaaagcgctgtgttactatacactggttcggagacggttcatgacgagcgcgctatatgtcggcatctgcgccccatgagcggccgctgtccggcggcacgaataatatagtgcaagaaaaaccgaagactacggttatatatgatggaacggccctcacagcattctaacaggtttgacaaacttaataaatgatgggccgcgcctgctgtgaatcccggacggtttggccggaaatacctaggcagtctttggaaaagcttttcctagatcaccatatcgttgtcagtggccaaggtttcgttaactctcggcgtacccagtatcggcgcaataggcctttgatcaacccttggaagattagtcgatcgtaacttcctacatcccggtgaaaggctttaattctaagtcttcgccacaaacgcttcaggagcgtcgagttctatcactttcgaggtactgccacttactatacaccggtacacttgttaagcaagtgtttgcggatgtggttaaattttgatggcagatttctgggtgttttagctatagctgtatcctcgaggtcgtcgtttaaccgctcctgttgctagatcatatgtatcgttgttcgagacgctagtagtcgctcctaccgaatcttacaggttcgatctctgctcggcttttgccgcgggccggtgcttgtgctataattataatgataagggcagtggccgcacaactgcagattactgacacttgagtgagaactaagccttgaagcatagtgttgaatgttgtagaaaagtatactgtgacaaaaacagggcctggtgtcaagtgtcctcagtgatctggatatcatcacgccttgttagcaggatttacccgcatagtaatggccggactttatattgccctgctgcgctagctagtactgcgggggctctcttccccctattgatattccgggcagaatgcgcgggtagtcagcattcatgtcaggcttctatcaacgtctcattcacccttggagtgtgacctacgtgttagaggcaatgtagcccgagagcccgttcaaagacaaactcccgaattaaacagacaccggttatgggagtgtgagtagtgacttccgaccagtgtttggtttcagcctgtcggttaacctcgcagggctaggagaatgagctgctagtaggtgattaccgaagtctccccagaaagggaacagtcttatagagtagagaatgtcaaatagcgttattgagttctgtctactgcactaccaagagcatgcccaccagagatgcgtcgcagtcgtagcgtagacgtcgtaatgacccaggtggcgttcggcctattcgcgtcggacgcgcgcgctactacaacgaagggttctgaaagtgcatgttcacactgaaattctaagtgttagtaaacaaacgcgtgtattccagggtcgtgtgtgacattatggctgtctgcgcccctcaatgatcatcaagacgttcaattgtatgttaacgtagatatcaggtttagttatccgtatactttttacgccgcgcgcttggaacagattctcctaacagccctcgcggtttcaaaaagaaccaaagtctataccatccttgttcccaattctgcctggttgcggagaaaagaccgcctccatacgtacccgactcggtattggtaagtggggaagcagtcgaacgcatatttcttggttatatcacaggccacgttctatatcggaagtggccggattacgatttgacgttctatccccgagagcgcattcttgtttgttactactaccacgcgggcgcttcttattcccagaccagagggaatgtgcggaagctttttccacagattggcggaactccagcgtgcttagtgcaggcggagaacgtccgttcagtggtgcgtgctttatttttcaatctgacccgacctgcgctcaagggttgcaagttgttgtgcgcccgagtaataggcgactcgtcgcaatgggtctggtacattgcattttcatcggtacggcgcttcataaagtgcggcaaatttctcaccccagtactcatgtttatagggtatcaggacccgaagcttctctgttccaaagaaatgtactgtttggctcccctgtccatattggaggtagatcacttgtggattatgcaatgaatgaatgaaagtttggtgctccccaccggggcgctctcaaagagagtgagctaaatttgaacatttaaattgctattccaacccggagtcctgaccggaacagtaatgaaacttcaaccatgccggacagactagaagaagggaaagttgcttgtatatgggagtaaaaatgatgttggtgccgtaatggtgccggaagtgactatagagcatgtcgtgacgcaccggtaggcagtgctataatcgtatgtccttcaggcgccgccggacctacgaagctgaaattagacaccggcacactagccccgtcagcgacggtgcgcggccgctgccctgcagcgaatggggctaacacgcataaaacgcccgcataaccactcgagctacgggaattcactcaggctgttgcttcgacgtgtagtctcattacataatcataatacctccaagaccaacggctgctcatgactctcttaccttgttagggacatttcggcactagggaagagctgaggactttgaaaacgtcgataaaaccatcgcgggaactagctgcgttagaactccatattttacgggtcgcaagcttgaggtcctgtcccggcagctgcaagtgctacggcaggaggggatctacctaacgtgcagtaacgagcccctgcccgtaatgaggcgtactcgtctctaatcgtcagtaagttactatgtccgaggacgcctctacgagttgaactctggctaggcccacctgtccgcgccctgctcgggtaccccatctgcttatccaacttcacctcgccttacggaatctctggttgccagtcatccgatggtcattaagcagcgtggtacatcgtagccaatacttcagggcgccagccatattcccagccaagcggctgcataattacagcgcctggcacgactaatcgatcccacaagcctggtagatgacccttagccctaaagcgccctctgacctatctgcacgtgatacttgattatttgtaatgagcggacagggtagatgactaatatacagggtcgtctaggtttgcacaatgcagacatcatccgcgcaaggcccggacggctgtactcacacagctagctccatctccctcagcagcactaagattcccacgtgaccagggcgacgggcctcagccaaacgtatccttgatatctacttaagtcaaggttgactccgaaccctatgggtcggtgccgttaacagggagtctatatctcggcgttccattgcttgtttcaaactcctgctataaggtgaaagcgctggagggcatagtttatgcccaaagttgcgcgtagatccgtcgggatatgtgctataataaggactgctcgaggtaggcggtaacggctcccgccttcagtaggcgcggaactcgaatcggagttacaggacttgaccgagtcatatccaagtttatgttacccgatcggatccggatgctcgtatctgcgacgaggtcggaagacggacgaaatacgattcaaccgcgcgaaccattagcatctaacctttagcctcaatgggtgttaacgtggtgggctcactcggcgtactctttgtgcaactattccgtatgaacaacagtcaagttgcgacatgatgctcttacgtgattcccacagtttcccacctcaggatgctttctttagctaaacccaatagttatggcggcaccttcagactcccacgaggacggctatgacgttgctaaaccattcgccgccaaaggctagcgctaacgagttctgtgagtttgttccgggccagatctccaggatggtcgcaacaacgcagtaccggttttatactggtgaccctctacctgttattaagttacagcgttgtcctacgtacatggtcgtgagtactcgcgtagtcaaacgccaggactagcagcgagaattattgtcgcgatacttactacaatacttacccgatattgacgtgcagggttgaaagagatggacagttgaatatctattttgacggaatcctcaaaactccctccacctcaggtaacggccctgtccgggaccgcattcttgcatatattggttcccagagcgtatctaagttagtctcttgaccgttcaccgactctagggcgactcgttatcgccctccgaaacgatgctttcgttacctcaatgatgacaggctgtaacgtaagtgatcccaatctcactcgtgccttgtccaccgttccgtgaagacgaagcaatacgcggaatacgtggcttcgtaatattttgacgatatggggctgggacgctcaagacttccatgacaaacaaagtgaagagcaactgcatccctcatcatgatcactattaccagagtagcgatggataacgctaatttggtcagggcagctatcgcatcccgcaggtgtaggcggagactttttcttttgttgcgagttgacaggtaatctcacggtataagcacggttatttacgcaagcgacgtccctgggagaatccgcccacgtaggaccccataatccataaatactgcggtcgaaaccttcatatcgtgacagaaccgctttctagggatgcggtccccgcattcagagttctactttggccagcgtgagacttaacaactccacttacgcggtacattgaagtcgttcagtccagtgtgacctgtgtaccgaataacgtgtagaccagcgcgtctacgacttagcgcggctccactccaaagcaccttttgggactttccaacgagcctgttggccgttaagcggtatttcacaaatagatcaccctagtgtcggtaaccgactaccctattgggatcatcgtgagctcgaaacactagaggcggaccaacggatgacatttgattcggctctacagagcttgtcgccagagaaaaactgtggcaatctacgctcgcggggaattgactttagcggcccctagacaggtgtgggacactagtctagattcacgtcctacacgacataacagcaccttcctggccagcccagaaatagtacctggacgacatccagccttccgacgccataatgtgagccgtagcgcccacgacgatcaacgaggagaaatttacaaaggctgtgtgaatgctacgtcgtctaccattgctcatcgaaacgaacgcaacgcacagcatacaacgtttaccatgccggagcgggatcctcaagtacagaaaacagaggtctaaacatgatccgaacaaatcggtaggtttacacagctacctcgtccattggcgtactgcatcgatcgtgcttactacggtcatgccggcccgcgatgcacgtacgaaggaataccctgtctgcccccgcgcgagttacgctgtctcgcacataccgagcactgtcgttcgaagctaaactatgagcccagccgagctccttatggccgcaacgctggtgcggccagctgataaattccacagtacacgatcctcgtgtaagatctcgggcatagtaagtcatttcacatggttaggagagatagaatacatggttctggtagctcaaccaggatttgtggaacccttggcccttggtgagtgctacaataaaattctccgtatgggacaaccaaagggtgctggatgtgacttcccggcccaggttagatgtccatatcattcatacattgcccgaccgacccaatgcctaaatcagaggcgccttagctagttcttgtagtgtgccacgtccggccacgcagacacgaccctcggcgagtgatcaccattaccggattggcatcgaagtctttttctgggaagttagccagtttggtgtgcggtgcttagaatcttattcccagtcaaacgcccctgggacgaattgctaaccctagttgccacgccggaaccatcttcgggagagtagacaaatccgagttagatatgttagcgtcttcgtgagtctgaaatgtatcacttcaccgcagaatacgcgaatgtctgtttgccctggactgacggaattggcttaaaagccgactagagcattttggtacggttcctatccgcgatgtaattacctatctaggttatcgctagacgaatagcgagtacagtgtagcaggccctttgttagcaagttgctctaaacagttgtcaaaacgtaggcacaatagtgcgattcttctaaatccgggaagctcatggcgctgggcagaaatatcacatacgggaataatcaacctccattttggttcgttttactcgatgagtgccccttgcttgagacgagcgttctgagttgatggcatgtcgaaaggtttacgcggtgagtagagcactttacccctacagatcggaatcctcgaggaggacagttggaacttcacattaacctttgttcgattgcatgaaggttgtgttctgggagtaggctcccaaggtagcggttcatgctgggggcagccctaagtttgtattatgtgagtttgcgtctgaaactacatttagcatgaggaacgtaagctttctggagggatcttctaaagccaggtatcgcccgctacgatgccggagccggtggttcacagctacctgtgctcaaaggcttaaggctaatcatagcaacagtgcgaaaggacgtctttcagatttcgaaaggtgctgacacaacaagggtcagggcggtcctacccttctgattccctacctggttttttagcaagggtcaaggctaggcttatactcccgaacgctttaaacactatcccacccctgacggggggaagttgcgcgttaagtataagaataagatttaacagtacactttaggttcctcttccgcgagccgtcatacagcaccgagcgccgttgaaacgcgattaacgcgtattgtcgtgcgaaaaaaaaacgctcgccagcatattggagtgtcgacttgaaatattgaacaacaccgcatatcaaggacgaatagtagggcttcactacctccacctgacggccctaggacttatactcgaaaaagaccttccatcacgatgtcccttaccggcgagagggctatatacgcatgaatagcagatcttgccgtcgctgagtgtcacccagggttgctccagaaaggagatagggcggagagccatcgacagcagctctcgtctaggtggtagcagctaaggagtcgtgtcgtcgcgccgagttggaacattatcgatgtacatcaatgcagtaatgatgctgatagactcgggagtttcctcaaacccagagttacgagaagacgcaggtctatcagttagaaggagtcagtattggcctttgaaagatcttatgctcatgcccaatcgtagttaaacgcgaatcgggaaggccaatctggcggttttgacccccggactcttaagacgtccaatgtggctagacataagtaacgaattactctataccgaggggcgggaaccggccaatttattacgagagcacgagagccttgtagcggccagcacactatcctcgagtccctctatcctgagacgtagatatacatatacgcctagagagaatagccgtctaggcttccgtcgccctctccgtcgttcgcgtgaaccgtaagtcttccgcattcccttcctcaagcgcgttggtgtgagagtggtattgaggcccagtcttataacgcatatacttgtgcactctattacttaccatgggaaccaatggcactctcgaatcatgctcacagctgagcaacggtgctgctcaccaattacatatgagtcgtggtttagcgttggagcggaagatgaatttccatctgttcgcgcgcatcactaaccaatatacggttatcccagcgctatctagttctgaccgggttggtagcgaacccttttgcaagccggcttagtggatgtgaagtgggagtgataacttaagccgccacgttcgggggggactcgtttatattggtgctggaatacgaacggcgtgattcgtagtcgccctaatcgggcgcgacaacacatgtagtactgtcgaggcggtttaaacccacagtaggtactctatcagcagaattatgctagaagtttcacaacaactttccgcatgaggctcagcggcagcgtcgcactcccaatggccagtgccggtagcgatgtttggtggaattagttccttcggaatacgaaccggatttaaagagcctcggagaacctaaacgaatccgtacgcatcttgcccaaggtgctgagccttgtcgcctttctcagttccacctacattaatgcaatgcgttcgaagctctgaccgcaaacaggaatcaagttcagacagagtgcaagagtttcgcaataattgggaacgacccacttgatataggtgcttttagagatgtgtgtacgaccgtccttcgagcatacctacgggttacaattgctccggtaagtcaaggcacatagaaaacatagccaactgagagtgtatacaagattacctcatgtagactgaaatacacacatcgctttaagctctcaaccgatgtagaacagattttgggcggcgttgacagcgtgcccgctcaccggtttgctcccttctcaccaaataaccatgagacgactttggtgactggactgccagatgacgggctacaaccgttttggttccgaattcgctctaactcaactaacatcatactatatgcgccaggatattctcgcggttggacccccctgccaattcgggttaaaaccactccccccatgtagggagctgccgcaattacaatatcgacgatcccagatggacgctcacaaaatatcagtcctttcacgatccgctcatatagacggatgaagggactgaggctgttagatagtgacgtcgagcatggcgtagacgagcgcaaccgggtcgaggcccgcattaccgtgacacccagttgaaaggatttacactgcttcattcgatatttaccactttgtatgaggagctcaacctaagtcaacacggaccatcatacaggtcgccagtaatgagaaggctgctgtgccatggagaagcgctgctacagcacacaacgaacatcttgcaatgtgaaggagggtgctcttttgggatgagcctacggggatgtgtatccctgccctgtaggcagttgggacttagcgcgactatctagataactaaggcgccagccgcggctgtttgccgaagtcgtgctgatgctgtacaacgaagggcgagcgtgttaacatgctacacgttgacctagactagtccaagtctgaaagtcccaatttaggtcgggtagtacagtcctcggttccagtcccatgttgtgccgacaaggacaagcgatcatcaaatcgactgaaattgaatcagctacctcagaccacattcagctctcggtaacatgggaggcttgtggttgcaccgtaaaagggggatagcccatccatcctgtaaacctacaatcgcgcgtagcttaatacgctcacattagacattcgatcgagagacctggtttcaagagccttcccttttgctttagtgggccaaatcgcaaccctgctcccctcccttacgccttatacacttcagtgcaaattcatgcgttcagcgaacaactggacttctgttgtacgtagtccacgggggcttattcattatagaaagccccctactgtcaccgttatatggttcacacatgagctgatcacctagagagtcgtcatgcacattcgcctaacaaggacatatgagtaaccgggaggggatatcttcgatttgcagcaccaatcgacgttgtactggtctattgtcggttaggtccgattatccgaccggcaatgaggcaagcccatctattcaggaaacttaggcagttccctgtgctggcccgacgtcgatgagttaagtctatacaggccggccgcgagtagttaacgagaccaacatagaactatcatactagccggcaatgatcaatagggtcttagtgccactgtccttcgagccctcgcctaatttagcgcgaccggtttcctattggcctgtggggttgcgggcgcgtccgctttaagaatggtccttaacacctacccggagatccattgcatagcacactctccccattagcctagacacgtcgtcgcccgtcgactttggctggaatttaatcgccggggatatcgaactttcacgccctttaacgacgaggaaacctaccgtcgcctggctggtaaatgggtgccttacggggactcacgatgctgtgaaccgcccgccagtctctggggctcccaaaatccaggttggaattacggacctccgccggtactacgcattacggggtggaaagtcctaagataggtgaatgaaagggcttcgctaaaccagtaagtcattaacaggacatcggcgtcacgtctcgcgggtttacacggcgcacaaatcctattcccatgataaacaccttatgccaatccacatccctcgctgcctaataaaattgtcacacctgcgctactgactaacgtttacgcaatgagagatgaattccgacacccacgcttgttgcaagcacagccgtatgggttctcgggtaaggtaacacgaggcacactccggcgcggccacttcggcccctccctgacgatgaccctcattggtcaagcatcagtcgaatgattcgtaacaaggagcaaccgactcagtagagagggtgaatctcacgcgctagcctgaggaccgcctaagtgcttgctgtgcgtcgcggcagtcgcgaggtgcgggctaaagtaaataattactggtcttacctaattaaagttggtggttagggacaacgttaccactaccagggtgcgcccctgaattcgggtatcggactatccagggcgccttttgcggccttaaatacctttttaatcacgctggagctagaaggccatcgggatagacggggttctaggtactcgaaaaaacaggcctaataactttattgcgcttggactaacctatgtacaacacgttgtagcatactatggaatgttactgacctacacggatagcatttgttcgggagcgtcattgacctcccagaccctatgccgatctgcaccattcagtgaccatccacaagtctctaggtttagccaaaggtgacaggtcaagcacttgcgcatgtccactagtcgattatgcaacgtctctgaacagttagcacttatctcccgccgtgtgactcacgcagtgaacttacctatagcatacgcctactattgaatgttcgttgttctaacacagcgctaatacctcactggcagaggtgcgcacgctcctagtatgggagggagtcaggtcagagtgtatgagactgatttttattcccgataggggttcagtgaaatcgacctctcaaaagagaggcgcagaattcgctgataagctctgctacgatcgctaaggcacgataagcagggcggtgaaggttggagcaagataatatcacccggacgcgggtcctgtcgcaacgagcggccgtgagacctggtgcgcaccgtgtctcgatcggccgaatatcggaacccactgcgtgactcaaatgatatttttgctatctgtgggggatttatgtcccggtagaactctgcttctagcagaggataaactttacaaggacggcgaatatggtgtcagagcgccctaatgatcccgtgctattccgcgggccaccggccgttaatggacttcgggttagaaggatgggttattcatcttccacagaaacgcccagccgcaatcgtgggtttactcgaccgcggttatctgcctacttagctgcattcctaaaacaggattaaaaaggccgcgagggttgcgaacctatggttgagaacagagtcatagagtcagatgcgcagggacggcacggatccacatggcagttaactaatattaatacccccttagcctcgtatatgggcgtgtgcagtcttgtccactcgcggacgcgtatccgagcgattctgtcttccaacgctattcgttaccactttggcacctctttgctaagcaggatgagaacatctcactcactacgagccttgactttcagcacgcggtacgagggcactgggcttctcgtcctttgctagatgtaggtgccttcccgccctcatgacgatgtcacgtctatcggtttattaaggtcggggaccattacgagattaccccgcgaccttcgtccaaatgggatcacggcaacgttccacgaggggcgcgttgcctgagccactcgggtatccccttccgatatccgcagaagtctagctaggagcaccgccaagcattacccgattaagcaaagcctactcatcgcatacacggttcttggggtttgcgtcagatagcaacttccggcggcagtagagatgatattttatccgattgagcttgcccagcgcaccctcgggccccgtggctcttctcttaaatgtgccctgcacgatgttagcggttcctactcctccccgagccctatgggtggacagactcgccctctgaggctgcgtgttcaactggttccaagtccggcgcctgtggatctacgacgcgaccagcaacattataccaatgtctaggcttagctcgaaaactagtaagccttagaactagggtcgtagcttcttctaaatgaagggcagcgtcatagccatccacgttagcgcttactcaatcgcctgtcggctgtcatgttaccgctgccgtaagttcgtgaacataaaatacaacacattttaggtttaacaaggattgtttaccgccacgtactggtgccggtagtgaaacgaaaaacctcagcatcgggaggaggagaacggaatccctaccaatcttatctctacttaaagaacaaagcgcgcggtacatggcgcagacgagaatgaatccccgaacgggccgagttagactcctcaacctgtcgaaaagttgcgatccgctagatcgtagagtacggacttaaaaaagaaaagaaggtctctacccgagcggtgagcccaaccagttccaggttgctgccggattcttccacacggcggtgccatatggacgaccccgtactttgggcattctaggctacctactgcgaacgcctcgcgttcatgcgcaaagttttctctagataggcgcgctttggtaagcatagtaataggttcttcagcgtctaaagcccgcccattaggcctggcgactctgctttagtggtaaagagatagcatcgatgtacatcgatggagagagtattttcacgaaagtgcgcgccgtacactatttatcggcatgcgcgctaaactggagggtctaataaccagatcacgcaacgaggtcccatgtacggttcgcattgcgaaagtatgggatactagaggttttatcgggcctcgcttgaggtctgtctgggactggcgcacatcgctcgtcgcccagtcgatagcggggtgattaaataagaaatatgttagtgcccggatttggaaccaaccagtcccggtagcggtacaaaaagcctttcctgctagttctatgcttaaagcgtactcctgttacaatccgtaggcaacctgaagaggcaacctggttttcctttatttcgactttgtttgccatttccaatgtgatactgtgcggcgaccttaatgctttttggtaaaaccataccgagatccagcgcacgcgacattcagaccggtcccggtttggcggtcaacctcgtactctgcactgttcagctagaggggtctcctatcccgaggtaccggtcgtctaacgggtggttacaggggctggtcctactctaccaacagttaaggagggcaacaagttcgatggggcatcgtataacttgaatgccattggacaaataataattgctccacgtcccaaacctcaactgaccttgtacgcataggtgccacctgcacgcaaccgagctcgttcaagtgtccttcttagctggcgccgagtgaacctgcatctgagagtctacccaacgatctagtatcataatgtctgtagccagcgactatgacacttagagagccgcctaagaaagtgtttgcggctcctgccccggtgcgcttgttcggtgggaggtcgttatatagaaccatggggatataatgaatggtaacatatctgccacgttgacaagccgctattatgaattcagggttggatactattatggcccttcacggtcacttgtaggacggccccaaacaggattagtaaagtcggtggtctaagtgtaagcgataggcaaactgcggttattcgcgtagaccgcttgatgatgtaaaataacagttttcatgtctttgcaattac
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/seq/ctgA/1.txt b/tests/data/volvox_formatted_1_2_1/seq/ctgA/1.txt
new file mode 100644
index 0000000000..5a5378a120
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/seq/ctgA/1.txt
@@ -0,0 +1 @@
+cgcgtgtagtctgaggacttaaggccccttctcggatagtgaaatagttcaggtccggctgttgacaggtgtcctgaccggaacgctttacagctcctgaggagcgtagcgccctacgtccttcctgatccagccgcacccatagctagtaaacaagttgactgcgagacacaaagtcaagggcctgggcaagcgcgggccggactgcttgtcgaatattgaagcgtactcgatccagatctgcgccattgagttaaaaggactatacgcctgtctccagccgattgcagaaaggacagatcctaatagaagaactggggctccattctctcaccgacaccctcctattcctatcccactggccccattgctggtaacccaaacctctcacgacgattcagcgctgcgattaaagagtggagtaaggttaaaatcggttggggcgagtagtgtttgatgcaagatccattgattatcgccagtgggatggcggcaaaggtaccatacctcgagcttatttgggtgcctcactcctcggggaaccatatagacttgcacttggcaaaatatggtcgggttcaaccgaccttttatgcctggaccctctgctgagggcctcttgatcaaaatgcttgcgttgcttataagttgccgcttgatgtccaggattattattccagcgtggaacgggaaatgatagcttatctgttactcagggcgcctgaattagggttgccattacataaaggaacgacaaggtgagcactgggagggcgcattcttataaccgggcatatgcgcggaacaccagcgttggatggcctacctccgcggaggtcggggtcgaaggcccccgtttcctggaacaataacactgtcccacttggtttgtaaagaacctccactcgtcatgacacggcctagcggtgttatcggcgacgataatcatgggtctttacaagtgaatcaggcttaccaggcggaccaggaggaaacactccacgagtgagacctggatccggggggatggcatacatcccatacgctcactcagcatgcacgttcctagcacatgctggaatcttgcaagctggacagagtgtattgtggcccttgagctatacttctaacgccagatccatgtttgcaaacatagctccagtggcctattcgacggtttagcctctgcaccatgttatggctcttataggtgttgggtcgacagtgggtgactagacgtaaagagagtatgccgtggttgaaccgagacctaaaaagctcaagatcacgacggatatctttaacggataccagcaatcggctaagaccagtgtctactactcgtgatcggcaccggccgcccgttatctggtgtagtagtcagccccgcatcacccgtgcctatgcgagccttgactctatcagtctaagagcacacgtttagacctgagccaagcgtaggtcactatcgagtcaaccttaaccctagttgattaatgctcttgacgtgtatgattacaccgaccgcgaataaactctcacgcgcgtgacggtttcctcgctagaagaagccatatactgtacacactgctgtgaccgacaagacttacctttggtttacgtacaggtggacagttgtttctcccctcgggtcgatagcgtttggtcgtgattccaataagtgccagatgtcggaacaacatgtttccataaagacgcgtgacatgatatggtttgctatgaagccactacgaaaatgccagtgcttctctttatattttgcagatgtggaagaagtgcatccattatagtccttttacgtacctggattctccgccagcactgccactactttcttactatccgttggggggggacgctcaacagagcgcggactcaggaatcagataacgaccggaacggggcatatgcccagcattcgttgttgtaaagcgattgagtttgggctgctaaggggccggcagttcgttccgggatacccgcaaaatttatgcctttgtccggtgattctaggtttagctcgatccacgaatacgacaatacaaggtttgcctcctctttcgtctatcacgcaagcttagagttgctaaaatttcgtagtccgtgcgttaaagctccctacatttctaagctgtacgacaccacactatcttgcaacaagagtcactctatttctcatatccgaatgaatatcgtcctgtacacgggtggcaatctcggcaagatggccgagatgtgtagcactgtcacgttcaaaagctcaaacttctgcccactgccagccctaacagaatctggagacatcataccagcgctgtcccatgtggcggagagttgcttcaatagaacgctatcaccgtgggatcacatacgtcactactccgtgtgacactatttattattcctttacctccaatacgcccgtccttgcatcgcattttgtagtaagacatcagacgacgttactgccacggaaccataaaacgtgctgagcccacgtaaacgtcctatcggtgaggtccgctcatcgtacgactctgaaatttggaaactaccagtttgttggcggtgaatatccaacctgtcggcatacacgctcacgcgtatggttggtacatgcgaaaaactacccaagcaccgggcgcgcgagacactatgagtttagtgatgatttacggagcacgttttttgaactcaacagaccgattgaatccttcaaacagggttactcgttcgtgacaaccgattacagcattctgaacgtggtacgtgcacatagcttggagagttgcgcgaatctctttcgtaccgtattctacctgatcgctagctttccggggtaacgacatcggcaatgatgagtagcagccagtatccatactggacaggtactccatataaaactcccgcttcaacacgcgagatttgaaccgcacagtgattgtgctgagtcctagtcaccatcccgatcttgtacacgggtaggggtgtaacgtgggcagatgatgcttacccttccgctggcttgtaaaggtgccccgcttcacttgatgagctgcgtcgacaagaccacccaacccgagccacgtggttccgacgactcaatgatttccagtatggtccaatcgagcaccttccactcatgaaatttgagcactgttggggatcgagtatgtgttttgcagtgggtctgtagcatggaaagatgtaccctaacccggctctggcattatcaacggtggattgggtggttaaacagcttcccttcggagacttaatggactaaaacgaatgaatcagacgccgagaacgagaactcaccatctggcccaggagccatatttttgattggtaaatcgctcgcatagtgcccgatacgatgcgtacttgagcgtaaacggcgcagcctctaatcataggtgattgctaagtctacggtcatccccagtggctgacgaggaattaaagacctatttccgtacttgttgcgcgccttcaattatccagcgtataccccgatggctactgctacatgtctaaagtgactagccagaaaaacctaaccctcgcccacgaggccttgatcatctcaatcatagagtaatgttcattgaattgcacggctcttggtgtgcacattgagacaatttctaaaccgacaagtttaatggccgagctcctcctgcgtccagctggaccttcatgcaggcatgaaggtccatatatattgtcctcccatagcccgccgaccgggtctgactcaactgtgttttcgctatcccaggctagcacttctattctttgttacgtccagtcatagtgttactatagggtaattttagtcatagtagacggccgctttttcgtatggcccgagaccgtccaccggctacccaattaagtcacatccggatcttgggtctagatattcctatcgaaaatagtctcgccgcctcactgcgtagttcagggggcgtcacacttgttcgcggcttttcctcatgggatctttacccgatggttgatgcaataaatgtctacaccggactggcgtgtccgagacgactttatacacgtgtgacgagtagatcagatcgtacgaatggtctgtctcacctatcccagtgggaggatggaaaacactcctgcctaccgggtcgaattatttacgcgtgttacaatatgtaatttagaaaaagggattgctggtcgatgcgtctccaagggattttttatctaaaagcatccttttgggtgtactctgatcgcacgtcgcagacagcagtgggttttgacgcagtccgtaggcccacagactcgtttgttgtttattaatcccaggggagcgttgaagccacacctattctgtagctgtttgaaaggtagctagcccggatattactcaaggtgactcccttcagaatcacacgtcgctggagtcgccacagggtggcatatacgagtgatagagcaccttactttcgaggtagcggtacattagtgcaacgatgaacccactatagtcttagtgatttcatgttttacttacgcgaaaacgtggggttttgtcaacacgtatacgttgaatgcacatgcctcatcctaaactgatgcactgccacaagtctgaaagagcgacagtctgcaacatagcggaaggttacgcccaagccagtggtgatcccccataagcttggagggactccccttagcgttggatgtctttgccccagcggcctcggtgtacgggttctccaccccactatggtttggaactatgaagaggtacggcaacctacccgaggcaccaaatcgtgaacctacgcctatatatacggatagcagggtatccattcttaccatgagctcgtaaaccactccgctgaattcgatgggctttggcgcacatcaccgtttctatcacagatctgtcaacggaatctaacgctatttactcggcgcacacagatcggaaaacccaactgtggcgcgggacggactccaggaatcgttacgcgttatcaccttcggctaagtcttgacgacattagagctatatggtattaatagtagctgtacatcaaatgataaaattatctgaattataagtgatagcgcccacataatgacacacacgttttagatagttagtagacgctcgagactttgcgagcaagaatggactgttaaccttaggggcgggttcccgcttacaaaagctgattcgctcctagagatctataagcgaagttcaacccctaattaccattgcataagaccgggagaacctgtgacacctgttcccatgggattagcgaaggattgttgacttattgccgagtgacctagtattgattaaaaatgcgacgtgaagtaaccaggccttcgatgggcgtctccgaatgggccagtaacaaccatatacaaactacaagttaaacccgaaaccgtggctaccatgctcatctagtcgggttcccgatggaacattccacggtgagcggccttggatgtcggaccaccatttggcaggacaaccgtcacgattcgcaacagcggttaaagcaagatggacgccaataatgatattcgaaagtggggttaaaactggccgccgcttgatcggtcctacttagtagcgtctcagatgctagaaccattccgagtgcaatgtgtgctagcaacagtggaatcggtctataacggtttcatgatcccttctccggccatccattgagaacgattctacattaatctgttaagcgaccgccaatcactgattagctccagaaaacctaagattaccgtatataagaatcaacctgctaaagtaggaaggcgcaggttgccgatgaacagatcaagttcatacaggagctcttaatccaccgtacccaagacctagtcaagcgggatgtcgttaacaactttgtacagacatttgggagcattgcaccacagactccaatgaataacgcatccgctaggaccggatatagactgaagaaagtatagtcagctgcctcctaaaggaggcagtagtaggagccaacctaacgtcgtggatacgcattactcggtagcgtggtaaacacacgaacccgatctcagaattttagcggcgagaagttccataaatcatatttctacttcgtgctccggcttcatctgatggtggtcattattctccatatgcatccagtagagcttgcgcttcacgcaaagttccaggatgctcacatatgtccatacggcgctactacatttactcgaacacttggaagcccgccgtcgggtgtatgactagcctttgactgagactcagcctcgcaattgtatgtaactagcgtatcccggcaaagtttataggtccatattaacaacagatgggagtagagcagcagcttttattcggactggcacctcatcgctttcgctgtctgcgggatcaccggtctctcttgaacgtgttagagcctgagggatctgagggcacacacggcacttgtatccggaaaacctatgtatagagcctcggttgccagtactagttcgtggtccatagcgcctgaggggattaaacgcctccggaaacacgcgagttgttcttgtgcacgtaaaaatcacttgatgttatcgtgttcggccccagtcgctgtctcacttcaaaccagcgccgtatccattctatgcaattacgattatacttttgacccgatctacgaatcagttacccatgaatgcgacctgcgataacatacagtgcgacctccagtcctgttcgattaaatcgacagagggtcccgaacgcatccaagcggcttgggtcccgctggcaccgctgggaagtaggtagagacgtattgaaggaagcgtgtacagattggtgattacggtgctcttataggaccagactcgggcgattctacggggtcgtccacactatggacccgagcatcgaatcagtatgtcaatctgaagggactaatcggggagacgctggactccgtcaggagtgaccagaagcagggatgcaaagacatcccggacgtggatagactacaaatcggacactcagatacatacctctagaaaatactattccccgtttctattccgttccgcggccttttacgtttagcttggagcaaactatatagccgaggagggtactacaacgcgacgcacttatatcccaatgaaagaataaaagctggtaagacaacgctagccactctacctgtgttgcactcgcgatattagggagacaggttacaatcagctgacacatgactagctgacccggagcactcaattctgcccatcggggatctgatcaaattcgtcgtcgcattggacggcttccctgcgtagcgaaggaatggttaccgtacgcctcccaacacacggcggtcaaaatagtcttcagcaacagtaacacaaatctcttcctagtactcttggtacacggccctagagttaattgtgtgcccccccatactctctacatgtgataacagcgacccactaggttgccaaacagagtcggaagtcctatcgagtccagggcgctgtagggcctacagactctccgatgtcctgtgttcttcgtaattgcaatattttcgggacccttctgctgttgtcagattcagtctgttccatcttctggaaatgttgaggaactcgaaaacgctaactccctgatatttgtggccttacatcaaccgtcctcaggtgaagcccaatgctaaaggagtgaaccagacgtgcaggaagaagctgttgaccctttaaagctctagttcttgtcaggtgttccgactcgctggcgagagtatgatccagtaagcggcggacctgcgaccacatgatgaggtccctacaaaatcctatgctccctgcgaattacaactcacagagaacagcctaggctttcttagttattgatgcacattctactgacgaacgcagcattcgaactaaaccattggtaatgtaattgtgacacgtgggaatctatttaaagctgcaagaactccaccacgtgttcatccacatcggtctctgtggaatggtccaggaccgtcccaatagggggaattgcgagacccaactaatcgagtgattgaacatgggagcaattcccgaatagaaacttgcaacgcgcagtactacgacgatggtagcaataacgacgcgctacttcagctcatgggtctaaattagggcgaacgattgcacctaatctgctggcttctctagattgtagatccacagggccaattaacagtgcaaagaatagcgtcatatgattagtttgaaaataatatacatgaaaatcgagcacccgcatcaataagctacgagagtctttggagagtgccaatacacctagcacatgctgtgcttatgttatgaaaattcatacttgactaacgttagccaccagccgatggcgctgtcacaacgaccctgggttaccgtttagttctctaagaagggtcactctaccagcggggttaaatataccggccgactgtctcgagagtgggttgagataactcaatttggatcagcattaagtctagagcgattctcgcggagcgatctatgcgcactgacttactcttggaatgtcactcgcggcttacatgcctccttgttccgcggattgaatattttatgcggtagtcatgactttaatcgtttctacagaaaagaccgtttgaaatggcagaggaaacaaccctgctggatcctccctaagtcacatccggacggacagattctacttaacctccaataaattgagaaaaatgcaaaaggatgccaatacctatagtacattttacgtttcccgtgtggttcgtgccaacccctggacggtggatgtccccggtgggtttttggaccgggcgaaattattggccaacccggaaacccaccgagagcctaagacgtgcatgatagttataagtttaatgggagccttaattgcaaccgatgggggcgggtatttgtctcctacaccgacactatggttgttatttgcggcttcactcaactacaatctggtctgtagagagtaaccccgtattatcttcccttgcgccctgggtgcgttagcggaagtatggggattaaggggcgtgaacaatgcttctaagagcccggcgctaacggacggtgtcacagagtgtctaggcagagtccccactgtggaatacgcatgcgtagcgaaccgcgcgagtcagtaggaacacattgggagcgattgttcctcctatcagccggcctagcaagcatgacgtcaaaccttagtgagcagcccaagaaataacgctcggactgcaacagatctaagcgggaaatatatcgatagcgaggaagccgagaggactaagcagagagacgaagaggtgagccggagtgatttagccccagatggcaggtatagcttccgttcacaacgaattgaacagaaagtccggcgcccctggaatttcgaaacgtcaccaggttggccgtaaggttggtaactcaacaccctaagactagcggtcttgcgtcatgcaagcggggcgtgtagcctgcacagacataatacggtagggaggttaggcgtggggcgacacagtaagatctgatgaatccatgtacgttgcctccccgtcgtacgcagttgatacttcgcatcatacttagcagaaagcatcatcgcgacctctcgtacaatggcaaaaaggagggcttcgtgcacggggtagagtcttccgcactctaatgaatcaacagtcgaggttcatggccacaaatgtaacgacgcgatatgactcgttatgtctaggtcccactgcggatctccttagaagcgaattgtataaatctcatagccccccccttagcaagtggtacgtagcccacacgatttacgcagagtggggtaagacctcccccacgacttggggaacgcgcgctcaccggatagctactgccactgtagagccactagcgcatagtgtatccatagtgatgtacgtagccaagcggggagtccttgtcttatgactagcgccatggggctatcaactgagaacggatgcacaaacggtccggccattcgcacagtccgccggtcactaatgaccggtctgcatggggctgcaacgatcgcccaaggattggaaattgttaataagagtccagtggacaatttagtaacgcgacgcgcatctctccccgcctaacaaggctcatttttagcttgacggcgcgtctcacgttgccgggctcagctcgagctcacgtgccgcgcggggttacctcaggtttgaggaatgtgtcttgaacggttcgtaccggcttagcgtcgggtgctcctcagggttcccagcaacattcttaccgcaatccaatactgagggcgctaccaatctaacgtatcactgacccagtaaaactcggtattacgggggcgatatatgtgcttgcctcaacatagaactaccgccttgacgttagaacgttaagttagagcacctgcccatctggattgcggcgataaaatcgattattgtcacctggatgaggaatatggcggacaaacgatcgtgtggacctgcgccgcaaccgtgggatgccgcagcagaatatctacagagcgtttgcaggagggccacgcggtatccacgtaagttcgcgcaatagcagcatcatctcgttcggggttgctgctctcagactgtcgatacgtccgaataccagcaacccctcgaggctttgtaatatttacggagtcctaagggatttggtgccccaagtatagttttgccgaagggggggcacagtgccgtgactacgattgggctattgggcaacccgaccccgtgcgcacacgtttgatctcagacagagggcaaaaagacgaagccacgagctcttcgaaatcaatctacatctatgctgggataagttctggtccacacctagatccgagaatggaccgtggataacgagcaccgttacctttgaggcggcagcacttttaacaccgtaaaagtaactctatagttgtcagcctttaaagattgcgttcccaatacggtacgcaccgtctactaccgtcaacacaccgtagcttaggtccccccgcggcagcgcttccatcgtggagggctgtcccccatcctccgtagaactgcgtttaccggtctggggagactccctaaagaaacaccacaggtgaggtggacgggaatcaagttaacgcattcacgtaattcactcctgttcacttacataagagaagttctggttcgcgccttaagtgccatccatgaggcatacgatgcgatggggaccacgcctgtagactagagaaacaccatcaagttgataaggagtgaaaattagtataggtctggcccgctcgtctgttgatagggcctttaaatgtaataggcctccgctctgaacgagtccgtacttatctgttggatagtaagaacacggttctcagtccgcaaggtagtatatgactacgcgtcgatggacctaaagatacgtttggcatcgtcctgagcagcttatgaaaattgctgcgcgtttcaggtggaagaatctgtgttattagtgcggggacggtagtttcgtagggaattatgggtagtacagatctatggacgggaggtgactgtcagcagactgtgcgcaggcgctggtggtataatcgctgggaccacgtactggcaagacgcatgcagcctggtgacatccacaccgccctcgctcagataggacggacgtgcggcaataccctatctggctcctggacacggaaaaacagcagtttaaaaaaaagtgggttttgtgcattatcactttgtccgttcgacagtttattgcacctcccagcatgctagtaaccccttgctctgatttgagatttattatcgtaacacggagtcgacgtgaagtttgatctgcggagaataggccgagaagcccctacgtaccctatgattcccgccatgtgcggtgtaaaattaaccactacttatggatttcatccaaattaactgacgcattatatatacctcgagtgtgtaagccggccctcgcggtaccaaatttcgggctgcatacctagaagtgtatgtcatctaaacctaaggatcgggtagtgacgtgtaactaacacgtgggacaatgtctgtcctgagctacgtcttaagaagtatttagtcctacgtactcaggcatcgatactccccgatgttgggtgcagtggggcgtccgggcggctaagatagtccagccactccttatgtgaatttatcaaaccgggaagaccagtgcataggccacgacctacgtagcacctccgtacaaccttgctccagggcacgtctaaatgtcgtactgggttcggactccatgcctggcgactagcctggcggtccacatattttacaaatccgagacaacaaagcacttccaaagtcgcgtggaccttaaggaaggcaacacaggggacatttagccactctaaagacccgcatactccagggcatacacgtaacgcgttctcttcactacggagtccgcgagcgaacgactaagggcgagggccgtagatctccttctcgtaaatataatcaaggttgccagcgcttatcggtgccaccgatccgaagagcgtaaggacgttacagtgtaggatacatggtttgcgcccgtccatacataatcgaccatcaaatcgaaagcgcgtatgcagtacctcgtactgcccaaaggacagagcgcattacgtcaccccgagcgtagcttaccatgttaagaccgtgctcatggtttccacccgtaagatgagcacagattgcttgctctaggtaacatagtaataagagaacattcatagacgttggaccacggttgaaagaccgcctcttaactactgaaaaacaatatttgtccttagtaaccaagatacattaatcaatcctccgctaatgaagttggtaggcaagccttcagtagcgtaccgtggatttgtgtttactgcatttacaccgcggctgggtacgaagcggtgtcgggcacgcacacgcgttcgatactgtaggtttcgttggggttgcttgttgccgctaacgttcgggtcgcttacttctgcaggcttgattactgagttcattcgatcggttcccaacttcggactattgcgccatcatcaatgtgggaaatcatttttaggaatacacctcgtacatgcatatgaagtctgcgtgcaacagactttccatgatgcgagctgggcttcccgtcctgcgggatgcaattggcccagtgcgcgaaggctgggctgattacggacatatctgctgtcctgacaatcgatggtgtagagcgtaacaatcattccaatttttcgacacgggccagggctttaggccactacgcacctgggttaacactcggcgacccgcctaacactgggtggacattcccgagttataacgacacctcattttcaacaaccacaaaaaggcataggcaaccgaactaaccttttgtttagttacttctggtatgttcatagtgtagggcaggtgatcggttaaacgcttgtacggaccccattctgtagcgcttttctgaacgataacactacgttgggagatacttgttgcgcagtcgtgggttaaaagcgagccgacgataaactgcaataaggaaagcggacctgtcacctcccgcgggtaaatctactcgctcgtttagaggccgtaaagcgacataacggtgtccagtacaagcccaactggtttagagaattcttctcctactacattcaccgtccgtatttcggcgcgccctacggtattcgtggtgttctgagcatacatgggatggactatcacccctgcgcgtaaggactagcagttgtaagtcacgttaaggttgcgtaggcaactgttggagtgcgtccatacttttcagcaccccgaatttgtacgcccaagttgtatcgtcgtgctgggacgagactcagcctttaccctaagcgtttaggaaagcgatgttttaccgcagacgcatatgagagaacgttgcaagatcgatctttctcgcgcacgttctgtagctagacctgcagctaatctaactgccgaactgttaggatgttttctctcctagacgcagggaccagttgtaagtaagggtttctcatcgctaggctagggtgatggtaggtgataccaatggagcggcgcgttaaaagggttgtaatctcggtgatatgtgcaccatagattgttccgttattttccttggtcatttagatacgagataggggcgccccagtgccacgaggtccatcttatgctgttgcgtagctagagccctacaactttctaagtaaaacctccatcgagtgcgcttggagaatttcatgtaccgtggcggtaccttacttgatgccgcgacccctatctaattaaagaccgcttcccgatgggcgaccttaatcttgctgcagtccaagttaacttcctctacgcccgatgacaaatttagccggagtaagttgttaacctagcctaatttgtaccgaattttgggttgtgagaagaccatttctacccgacgatcatgggttcctctcaactatacctagtgtcggttaatgatttatggcaaacaatcccccaatgtagcacccatatgggcgcaattatgtgaacttcaacactaactattggtttagttagtgatatttagcgcaaataagaggcatgggctgcgaaaagattgtgtttccgcaatgctagggaacctgacggcatacccgagatgatagttaggtgagcccgaatcatgcttgattaacgtaacgtctatcactacccgtgggcttttgcgattgcgatgcgttactcaaggcatactcaatggggctggtaataccgatatgggcctgtgtcttagcagcgacgtgtcgataatcgaagtacaatacgccagtctacgttagggctttgctaacacatcacccacagttgaagcatcacgcacagccctcattaggttgtcgtcaacctggaactcctagcaggctgggcagtatggcatccttcacgaacaatcttaagagacgcacttgacacaggttgcgacagtcaggatggggagcttctgaaaatctctacataaggtggcctcgtgatatcgtattaactcggagagcggttggactaatgagtgagtccaatcagtgatcggtttttaatgccgggaccacggcttgcggctgcgcgatctatttccctcgcgttacacaaggggtaggcataagcaacaagcccaaaaaaatcctcacgcaggcgtcaggtacagactttttccctcagcaacgcaaggtacacgtgtagtcgaatgtggtcataaccagcagctgtcttgcgcaagggcggtgctacacgcatgtttcactccacagtgacatgatgcccgctcttcggttgttctatgcagcgcgctggtcgcaccttaagcccagttcaatccatgcaattcaccgttgcagcactagatcatataccgcatacttcgtcagagcacaaccagatcacttacaacgaccgcaagctaagcatccctatcgtgcgtatgtgtcgaggcgcaagtactatggtcggatgaggaggtgtgccctcaggacacacagtatcgctcctcattcgacgacgcaagtcgtctagttctatgataggcgaagtgagtactgcggatcactacgcccaagacttggagtgacgacgccggctactagcgatggcagttcagaatggtgccttccaagggacactcggtcctaatcaggcacacgcgtctcaaagccactactcattcatgagctcgctggcgtggcagtggtcttatgcggctagcgaccagaatttctactagccttaggcgtacaagcgttgggcaggtcgcgagtaacctctacactctatcatggaccacacccatccatgttttaaacacagaggtcttaagaatagcgatggtacggttgagaacgtgggagttttttgctctacagcaagcacgttgcagtgaggagagctttaatcctaaatcataagtgatactggtgccgagcatctttcggacgaatatgaagacccaacgctaatgtgcctgttcgtcggcacattctcttgggacacccgctacccacatgtatgtgaattgggcccgtcttgattgtgtcgtagatgccaacggttcaatcagccccgacgacgagaagcatttctacgtctccagccttgcaacggtttctagagtcttgctgttcgtaaattgaagaatctactgtgcagactttatcgacccacgatacgctaatccgagcgcgactcggtctcggaaaattatccgagggagctcgttcaatgcggcggaggctctgagtgaagtttaaggctgagatagtcacacgcattcgggtccctacaccttgtttcgaatgtccaacgcgaactctgggcaacatcgcgagactttgaaagatgagggggctgtgacagggcctttgtaataggggtactttaagggcggcacaatgtgatacctatgtattcctatggtctgggtcagttatttaaattgaccggacaagaatctgactcgtagactgctgtatagatcacgattagagtttggcaatggttctgaaagtgatcatgtctaacgtaccggatgacactagtaataactgcagcagcgtgacgatgtaggggacttactctgtttacgggtctcgtctgccataaacatcctgctccggcagcggtcaaagacgtcctattatcgcactcgggcagaaactccagtcatggtgaggcacaccaacagtgtggggtcggttcgtggttaccaagccaccatttttcggcccaaactcatcttgaatagtcgtcctcattcatttgatcgatcgtcattacaaggttcataaatgcccagcgccgcgtctccggccagatggaagagctacgtgcaggcggtaagcaattgacgctatagccctatatacgtatgtgggactcaaggcgacatgctataccgactggtatcgaggcgaacgacaattgctatgggtcatcacctcatatttagattcagcccctggtggcgtcgctttgaccaactagttaaggttgaggagttcgctctcaaacctgataacgagctaggccatgtaccaaccttggctgtgcaccgacgagctgaaggaccgagctgctaggaggtcgcagtatcgattgctctttcagccttctaaaggtgcgacagaaacttgaacctctcggtactctaacactaggggtacgagtggataactcgattacattagtcctggtacaaaagtcctccttccgggcgccttaagctgctttaaagctatgtccgcttacgagaaaggggcgcacggtccgatctacttacagactgtcaaaacggtgtagtcggaatgggctcgaacgacgctaatagatacacgcgcattggcatggtacttcaccaatactatatctttaaagaagggcggcgagcctatttacccacttcgattaggggataacacaggtgattgagttttctggaaccgtcatctaatagccgaagcagtccacattacagtccattgcatttaaccactaggaatcgcgccaatcttgcgcttatgttgtttaggaggggccacgctagatcttgcctatcctgagttatatgagggacgatcctacatgtatcctcaaagttcgcgctcatccttagattctaggagatggattactaagtgtgtgtccatagtttaacgcaacacataatgttcgtgtcgtgatgcgtatccttggtcccgacctactactctagacctatacgatagcgttcaaagctccaccatcgatgcaacgtggtcgtaccagtacttatgaaaccttttttcgcagttcgaaccgcctggaaagaagcatacgcaatatcgtgtgatcagcacgcagggtatcagttaaagagcccaagacttagtctatcgagcagaagaccgattagggtatacaccatgtcagaatcgcctccagactagtggctgatatcgtacgttacacgaggtcgctcttgtcgagtgctcgaacgatctatcccctagatcacgcgtcccagtcggagtatcccgcctcggatcgaaatgacggctaaaaggtgtaatcacgcgcgtaattcctgcaagctctctgagttctgctcgctggttcgaatgagcctgcaggcagtacctacaattcctgctcggaggacctgttgcgagggatgcccccatacactgctgagggtaagtagctgaagtataaaggcggcaatcttctgacaaacacccttcttccccttggttaaccagacaagctggatttatcacccctcccggggacactgccctgttttatatcgcggacttgcatcagtcgcagtagtccgcgtagatgtggggacccctcccaccttacatggcaacgcgtgatggagtagtatctcgcgtcagtgagcgagttcgcatatttgtagggcgtcataacaaatgtaaatgctagtaagtgaaagatgtcaacatgcgggctcggttttgcgctccaggtatatcctgcatctgatgaacttttcaatgaccgtgtctggcgcagggctgtcgttttgcaggaggggatgcccagcgcatctcgagaatcatcggctaatcaacgcgaaaaagttaatcttctatcagtcagcgggctataactccttgaccaacagaggatcgcaggtatttgtactgtggagaaacaatcgtaagatggccggccatgaggcaaggattgtaatataccggggtggttatcgaagaagtaaagtaaggcctaccttctggggagcaatggggttctcagacgctaactcttcgttcacctacaacacgattggacttagagagggacctacggacccgaaattcacataggggggttccccgataagccaaggcaggatagagtctgaatccatggacttccatcaaacccctgtggtggttccgttcaagtcagggagtatcacgactcacttactgagtcacgtcctcaatatgactgaagtcgataagacgaaggcttaatttacggaacccccgtttagtaatcaagaaacgcattggcgcgggtctaacgtaagctcttcacaccgccgtctacgaaccagttcccggcgttgcatggtgatcgccgggttcccttggagggagtaccttgtgccctgcccgtatggtcgttcctaaatagcgaccaagtattagttgactgttgcgacttaaaatccaacccataagcatatatcgtgcacccagggactggagggcctcagccccttctttcgaaacttaaaccgtcttcttatgggtgaaatgtaagtttctacgtctggaataaacggttcgggccaccatgaagcgtctcgtgtgatagagattcgcaatgagtctgggaagtagaatcacaccaagttagaaaaattctccaactcagctaccgcgacccatccgttggggtaacgcaagggtattagccgctcagaggccaaagattagagaaacgcgacgcctgcggctgtcttgtgactactccgaccatgccgtcagctggagaccctacggtgggtagttgggtagagcgccgatagctaattctcgagtggaactgcggaatgtgtcatatgaggtagcgatattgggctatcacaagtacgtgagcctgtgaaaacggacgactcactagcaagtaagcacggccctggcgtggcggcggtacgcgtacaaacctccactgcttggggaataaggtgcgaacaccgtgatccattga
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/seq/ctgA/2.txt b/tests/data/volvox_formatted_1_2_1/seq/ctgA/2.txt
new file mode 100644
index 0000000000..cf63d97e83
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/seq/ctgA/2.txt
@@ -0,0 +1 @@
+ggcgtggaggcatagggccggagtgttcccgtaccaattacgagctaagaccgcctgtccagccctggtgattacgtagtaagctcggtacaagcctgtaattagcttccgggtggcggacattcgttcatattgccagtcacggcagaggccgcgctagctaggccagccccgatgaaacacgtgctagttttctatcgtgcctaaggatcgatggctatcgcggcattgttaacttatcaagcagccgaatcggcgatagtggacacaacatgaacacgctaagctctgagtgccagactctaccgcggcgaatcctaggccctgctggggctcccccacagagcagtaatggtcttctgcggccgcgtgcattcaatccgcgctggtcaatgcgttccatcgtgccttaagcggggcagtgtgataagacaattttgggggtttcatggagatatcttcagaaacctcgcgaggtgcgtttagataccacacgcgcggcggtcttttcacacaattcagtccgcggccggtaacctaactttgcttatcaatacataatcctcccaaatgtacggtttcgaaggagatacctctcccctgttagactctaggttttgcagtgctacctagagatcacaccagcattaaaccaaggtatcagcatcgtaacatggggaggcacgcgcttggcggtaagtacccgccacgattactctgtttcatagcgccaacgcccgtatagtgtgcttttaacgtcctcagaaatcaccgactgatcagtatggcgacatcggagggaggttggcgaaatgttgcttttatagatcgttaaaacctatcgttggcgcgtatcgcctccatagaacttcttactcacctagtctgatcccgggactggtcgaaatggagacgacgtagcttgagatctggatcgatcgactgatatcacacttaaatatgatcagattttactacggtcgatctccatatatctatcccagcacttgatacctcctgtccagccgactgcttggaccctagcacgcgatattagagggcgcgttgtagctcaaagtaaccagtgggacgacccgagtgaggttaccgctggcacgtaagggtgacatgactcccccagaaacactgaatttgtctagcagtacatcataatctgagaacatttagcgaagacgagaacaagctgtctcaatggacgtaggacgagaggaatgtgacggttataatacgcgacctctatgtgtctattaaatccctacgggccgtagcgagcaagctcgggatctttagtagcggatcgggtcttctacatggcgcaccaggtttgatatttcgagctagagttgctctaaagaaacgctcttgcttgggaaagtgacctggggtacgacgaagacacgggcctggttgcataccgtctcaccttcattcatcgagcgcgatagcgtagcattatccagcacgggaggcacctggcatgggcgtgaaatacaatccgaagagcagcatgaaaaaaaaatgagcggtcgtgacccgagggtgcgtccctccgaacgttgttcgttgccaaggtaagggacccacgccaagcatggttagggaagcgtgaccgacacaacatagaggacaatctcaatatgccttctgggtatcacctgggtgtgtagcagtgctactgttacaagtcgcgccatctgcgacgtcgttcgtccctattccctcctaaaggccccgactctgaaaaaacctacaatcctagacacgttgtggcccagcacaacgcgtctgctatacagcaagtcattcgtcgaatggggcaacacgtataagaaggccgtgattccaagggcacatggcgggtctctcaatgatctacgacgtgacgcaaacggggaaaggctggaccgttgtccggtaggcgatccatcataaaaggcgtctggttctgtggttattgtgtacacgtttgaaatatctgactgtagaacgatggaggtctctacgtagctctgcacgattccctcgggctcacgttcatggcaaggcgacatcacatgaacagggttgggtaacagccatctctgaagcattcccccagctcgcacggctcctttacccgctactacgtcatgcactggctagagacccaccaactattgtgcaagtaaagaccataaaattttggagctgtagcgaaagcgagttgctgcgatggttagaccaacattgggtcaaactattctaatccggctaggctcattaagcatcgcagattgccgatactaatgctaacgagcgatgaatgggcctcttcgagacgcgtccgtacctgcgaatatcaaccatgaaccctaatctggaaagtttgatgccgctgtgatagccactcctgtgtcgcgacggcaacgtaatgtacgtgcttggtttgagctctaaacataccttcgttagagttggtcagaggaggatattgtcatagcgctacaaccagcgccaaaggatagctccgtggctggtcggacgcgctagaatctaggcagaacacgtgcggcttcttgcactctgacgctcacgcattggactttggcggtcatctggttctcataagtccgaatcacagtagataaagatccgcgtgataagatatgcctacgtacttaagtagcaccctctgttcttggcgatcctatcattgcgggttctatacatatgttgatccaaccatcggccgccgggccgtcgtaggatctaatggccaacacatcaatcaaatcactcgcgaggacgcggaggtcccgtccataggtgtgtatgttggtacgcagcacctaatctggtctggtcaagcaactggcttgttccagtatataatctcagatagactgccctgaaagtagacaatgataaatatgtaagagcggggaaatcccatcgtcgactgtgttgcggacgattagcttgcaaagagaggtgtgagcggctgtcttaaattatggactcctcgcttccgtcgaacgtctgactagagaatctcttggaggtacacacgaacgtaggttcctcacagtatgtggcatggacaccggacaggtcacttgtatttatccattgaacgtgatatagtgtgtcgagtcgttatacaatacatactccaagcgtactccctttgggtaacgggtttgggtacatattaccatggtgtggaccgatttgtaaccctataagcgttccgggtactttaccatcgcggatgcgatcgcggatctacctatgtcagcgacatactgcccgtccaaaagtgattcagtatgtgttaatcagcgtattgcatcatcagtcattgagagtggaccgttctcgaagagcaagattcctgaccctttccactgggccatccagtacacccaattatatgcagacgaaaagctccatacatatataatacctcttcacaccgtgtgcagagaccaacttgatcgatattgtactcactcgtacggaataattagaagggcccgactgtcgagaccgttagcatttgcattatcgcggtgagcgtatagaaacaattataggctttgctgcgatcgcagtgtctgggacagagtctcctagacctagatcagcttaaaacaatgattgtaggtaatgtgcgttgccgtcgggccacacctttcagttcggttacaccgactcagaattatcttctatcgggaccctcaaactgataatggggtcaaatggtggtggtcccgtctttctgcagtgctttgtgagcagaatagctctcgagcgctccagtacgcctgagtatggctgcgcccaccaattggcgccgttaatgcgtggcgacacaagagaaccagtccacataagttatgcccttaagaagatcaccgggtttgcgccatcctgattcaggtaacggacgtccgtgtacacgaaccatactaatgagttctacatcgctccaacgcgtcttgaaccctatcgacaattacaaatgcaaagtattagttgggtcagtgcgtagcttatccaagggctgcagtaagtcgtccccatgacagacggacggcataagggccaaaaattccgccgcattagctgttaataatgccatccagaaccggacagtctcgatatataacttacggctgcgaactggcccttatgaattacatccacgtgctagttaacaggacggatcgcccggactaattgccgatcggccgtcccattctccgtacgatgtactgaacccaggcgtgtgaatgggtatgtcaacgtttacccatcgaccctgcctatagacctgagtttcattccagttgagcgtagaatgggatgagcagctttgcttgaggtgcgatattcgggagacctggtcagcaggattgatggttttatagtgctggattccctgctgaaattctctcttctgccgcatgtgaagaaggccttgcttcccttccacatgattgtaagatttcctaaggcctcccagctgcgtggaactgtgagtcaattaaacctctttcctttataaattacccagtctcaggtatttccttatcgtggtatgagaacggattaatacagttgtgtaagccagctccttataataaatctctctccctctctctgcctctcatctatgtatgtatgtatctgtcatctatctcctataagttgtttcttttgagaactctgactaacatagacattaaataaacaatttgtatactgaataattatataactactgcttgggggtgtggttgtgttgtgtggtgagggggtgtagaaatgtctaggggttgatctagcctaacaccttccagatgaccctaggttctggcctttccccaaagagtcctggtctactcagtcatctcccacaatttggccatcttcttgggtgctcaggacaataaatgacccagccagatcctctagagtcgacctgcaggcatgcaagcttggcgtaatcatggtcatagctgtttgctgtgtgaaattgttatgcgctcacattgcacacaacatacgagccggaagcatacagtgtagagcctggggtggcgtatgagtgagctaactcacattaatttgcgtttgcgctcactgccgcttttcagtcggggaaactgtcgtgacagctgcatttaatgatcggtcatcgcgcggggagatgcggttttgcgtattgtgccgcaggtggttatttctctcaacagtgagacgggcacagctgattgccctcaccggctgggctgagagagttgcagcaagcgtacacgcggggtttgcccagcagggcgaaattcctgttgtgatgtggattccgaatcgggcaaatgccctataaatcaaagcatagtccgagatagggtttgagtgtgttcagttttgggacagaggtcactataaagaacgttgactgcacgtcaagggcgagaaacgtcatcaggcgattgcactacgtgacatcaccaatcagttttttgggtcaggtgcgtgagacttatcggaactaaaggagcccgttttagcttcggggaaacgcgaagtgtcggaagaaggaaaacgaagagcgggtatcgcggaatgtacgtgctgagcgaaaccaacgcgcgttacggtcaagcgtgtatgtgttttggaggtaagtttccctgataaagcggaacaggggctatgtgtttacgggggtcgcatggagtacaagggggcaggacaagatttgcgcgacatggttttttttaaattgcgggagatggttggctgtcccgatgagattagaacctgcttttgttttagtttcggttcggtcagttcggactttggattggttttgttgggtatttaagaagggtgtttgtgggatgtttttttttgggtcgagcatcactggactatgtgtgtcctgcgtatcgtggcggggcctcgaacttagaggtaggacgattccgatgcaacaaccttatgctttactccaagcgatggtgaggcaaccttgtacagaagtgcaaccgccattgtggctgggtcggcccaaggaacggatattctcctgggtactgacaacccaggtctactgggttctatcgacggtacagtcaagcctcgagtttactgtctcccacttaagtccgctctgggcattaatgagtctgtggggtatcaagggtcacccaacgaagtagctagtcccgttgtacatttcgcgcgttacctagggagcacggtgagctacgagggtgtagctgcacacagcacggtatataggaacgcaaacatagtagtatgtccctatgcataacagggagaagtgactctccgacggtcatttatcccagactctcctcgctccctactaattgttctatatacaatcggagtaaattggtacctctctgacaacataggggggttgaagtttatgccacgcagtctgttacacttttgccggggaattgtgtagaccatgactcaaggtggtggtgcgagttactctactatctactgcttctcattacacatctcttggcttacaggccccagttatcagttacgaggctgccttaagagaaggccaacattcatgatcagatccccgcacacgggatgatagtctgagatctgccggacgctcgtctgctacaagtgtgggttgagcatagggtaagcctaagggctcgtaatggtacttcgcgatgtttattcgatatgagctacaaggtataacgttgccttcaccatttcggctcacgactcttacctcgcctcaccgctagacaccctgaccaaccgttagggtactgacaaccgatcaggcgactcctaaaggacctctcagcctcccagacatgaggtccgctcgcatgctgttcagcgagtccatatcaggaacagcaacgagacaaggcgagagcaacactagacttggagacataccaccacatctgtttactcttgattcaggaagacctgtggtaactgggcgacgcgtgcgtttatccgtcttccaatctccacagaatctgctccgtcagagggatgtatgactaacgcactgattttttgttcagtaaccgggcgcggattacggggcgtattccaggggtacattcaacgggaccccaaggaaaagttcggggtatttaaggaggcggtccaactctcggacttattgggcgacgtaatgataagcacacctctgctcatacagtgcacgaagaccggcattgttcaaacacagccgtccattccgcgactattgtcctgtgtacaggtgcctcgggtcccaaatccagcttatacccaaaactctcccggacttttttcgtccttgcaggaggaaaggacctgactccacgtttattaggggatcgttgggcccggacaatcgtgtattcaacataataaatgggttctagtttaaagccggaggtgacggtggattatggactagaggtaaacatttccggcgtaggtcagaaagaatatagaccctaaatttacgcaaaacgtgcacacgattgtaggtggagtcgtattaggaactcagggcgggtggaacgagtgtgttttaggcttaccatgaaccgtcgcgcggaaaatgatgacagaatggacggtgcttttttgcggggccaacaaaactcgcttatgttcgccattggatgtaagtaccgctatactacgcagcgaccccttacgacattgttgatttccaatgctttcatggaggtttgtgagcggtcgctaggaatcttcctccagcgagtagccagctggccactagttagcaaccagagttcatatgagctccagtaacacgaaggtacataaggaacgcaagcaagttcgggactacatagaacttggggtgcgtctaagccggggatcttaatagacaagaggccatcgtatgggtcaaatttcatgtttcgtcagatgccctatccgtggacacctaaatcaagcatcatatcctaatgctatttgctctcgctttggtatgattcatatgcagccctgtccgtaaaatgacgggccagaggatacctgtcactacctatttcagattaccactgttcgaaaccttgctctgaaatcgatcttcgtagagtgttcgttaatcgccgcgtgaattatataatcccccaaggagtacccttcgtcggtgcagtctacgtaactttcccaggttagcccccatctaatcgacgtacgtgagggggctacgggagatcgcacaagccgaagcatttctgctctgtttcgttacaactggaatcctcatcacgcagcgctaccggatgccatccctagtcatccccgcgagtttaaccagtcgagatggctcgaaccgtgtttcgaaggctggctattgaaccagttataaagcaggggcgactgtccgtcggacttcgatataaactatcacaaatttggcataagtatatacagccaagaaggctcagataggcacacgcacccaaatagtgaccgcctacgttcaggttgcccggcaacgaagcgcgcttgctccattaatccactatcagaggtaacgaccctctttcaccgtagctgcccccatgtcggggcaacagtttcccaccgataacgtgttctgtctagtacgtgaaacggattggctaacccctgtcagcctaattagatgacatcctcgtacctctagagaaggtgaggagaccgctggaacataagtaaacagtttaccaaacaatgatcatacatataacagaaaggagagatgcccggtggggtcgaagatacagctgtggttgatatctgcaacggccaggctgtcatgaagatcacgcgcacgaagctatttatgaaagatacccatgccggggcggcagcggtacctagtcctaaataccgacacgtagcaacgcgtcccctgaggcccaccctagtcaagggaacttaaaatatacgctgactttgtctaccaatcatcttcgattaacaccggcatactaagtctaccctggacccagcaatgagaaaaacttttccgaatgatcattgtgagtttacagagattaggaacaccaaaaaaatttacgtacgtccggttacccctgtgtgacccttggccacaaaccgtaaggtgcagcatgggcgttgagtccagggtttgtgacaccagacatgaataccctgtggcgggttgttagcatgttattcggatccgatttcagagggtccgttgataccgggcagtacaagacaccccacaccactgaggtggtacgtccgccagtctgctccctacgttatgcaaaattccttccccggcgttcttgcctgtactactcctaaagggccgtgaaatccgacgttgctgctccgtctcgggacacccacacaacagctacggaaaatcgtgaggatgcacaagggtcttgcattgttgatctatacagctcttcgcacggtgtgctactgttttccacaatgggcaaggggcgtgtaggtcttatgtaggagtaccccgtgatctggctataccttgctatctattccaccaaaatagccggggtcttatagttttattccggatctatcaagtgacaagtccatggggtaaacggtaagtttcgtacgctgggcggtgatccccgcttataaacgagcaaaccgccaaagcaaccattgccgggcttccagctagtaaatgttgggtgtcaatcgtgcatgtgactacttacccacaaagggacgcttgaagcgcctgaactcgtcacgtcatgcctagctcccggttgaaacacgaagacgcgtgaacctatctttgcttactattcgcctcctttaagaggcttcttgatgtggctctgcgacatggacagtagtagttgtacctgggtatgttagtgaaattacaagtacctcaaaaacgaattacgtgtatagagattatgtcactccgtcac
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/trackInfo.js b/tests/data/volvox_formatted_1_2_1/trackInfo.js
new file mode 100644
index 0000000000..bcdd9e5b7d
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/trackInfo.js
@@ -0,0 +1,84 @@
+trackInfo =
+[
+ {
+ "args" : {
+ "chunkSize" : 20000
+ },
+ "url" : "seq/{refseq}/",
+ "type" : "SequenceTrack",
+ "label" : "DNA",
+ "key" : "DNA"
+ },
+ {
+ "url" : "tracks/{refseq}/ExampleFeatures/trackData.json",
+ "label" : "ExampleFeatures",
+ "type" : "FeatureTrack",
+ "key" : "Example Features"
+ },
+ {
+ "url" : "tracks/{refseq}/NameTest/trackData.json",
+ "type" : "FeatureTrack",
+ "label" : "NameTest",
+ "key" : "Name test track"
+ },
+ {
+ "url" : "tracks/{refseq}/Motifs/trackData.json",
+ "label" : "Motifs",
+ "type" : "FeatureTrack",
+ "key" : "Example motifs"
+ },
+ {
+ "url" : "tracks/{refseq}/Alignments/trackData.json",
+ "type" : "FeatureTrack",
+ "label" : "Alignments",
+ "key" : "Example alignments"
+ },
+ {
+ "url" : "tracks/{refseq}/Genes/trackData.json",
+ "label" : "Genes",
+ "type" : "FeatureTrack",
+ "key" : "Protein-coding genes"
+ },
+ {
+ "url" : "tracks/{refseq}/ReadingFrame/trackData.json",
+ "type" : "FeatureTrack",
+ "label" : "ReadingFrame",
+ "key" : "Frame usage"
+ },
+ {
+ "url" : "tracks/{refseq}/CDS/trackData.json",
+ "label" : "CDS",
+ "type" : "FeatureTrack",
+ "key" : "Predicted genes"
+ },
+ {
+ "url" : "tracks/{refseq}/Transcript/trackData.json",
+ "type" : "FeatureTrack",
+ "label" : "Transcript",
+ "key" : "Exonerate predictions"
+ },
+ {
+ "url" : "tracks/{refseq}/Clones/trackData.json",
+ "label" : "Clones",
+ "type" : "FeatureTrack",
+ "key" : "Fingerprinted BACs"
+ },
+ {
+ "url" : "tracks/{refseq}/EST/trackData.json",
+ "type" : "FeatureTrack",
+ "label" : "EST",
+ "key" : "ESTs"
+ },
+ {
+ "url" : "tracks/{refseq}/bam_simulated/trackData.json",
+ "label" : "bam_simulated",
+ "type" : "FeatureTrack",
+ "key" : "Simulated next-gen reads"
+ },
+ {
+ "url" : "tracks/{refseq}/volvox_microarray.wig.json",
+ "type" : "ImageTrack",
+ "label" : "volvox_microarray.wig",
+ "key" : "volvox_microarray.wig"
+ }
+]
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/hist-10000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/hist-10000-0.json
new file mode 100644
index 0000000000..10cb5fbaee
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/hist-10000-0.json
@@ -0,0 +1 @@
+[2,3,6,7,4,2]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/names.json
new file mode 100644
index 0000000000..7bb004d736
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/names.json
@@ -0,0 +1 @@
+[[["seg08"],"Alignments","seg08","ctgA",18508,25367,"44"],[["seg12"],"Alignments","seg12","ctgA",12530,15870,"48"],[["seg14"],"Alignments","seg14","ctgA",41136,47829,"50"],[["seg03"],"Alignments","seg03","ctgA",6884,8999,"39"],[["seg05"],"Alignments","seg05","ctgA",26502,35904,"41"],[["seg09"],"Alignments","seg09","ctgA",36615,37227,"45"],[["seg04"],"Alignments","seg04","ctgA",5232,9825,"40"],[["seg13"],"Alignments","seg13","ctgA",49405,50000,"49"],[["seg06"],"Alignments","seg06","ctgA",19248,23427,"42"],[["seg10"],"Alignments","seg10","ctgA",29770,32937,"46"],[["seg15"],"Alignments","seg15","ctgA",39264,48453,"51"],[["seg11"],"Alignments","seg11","ctgA",24227,30738,"47"],[["seg02"],"Alignments","seg02","ctgA",26121,34466,"38"],[["seg01"],"Alignments","seg01","ctgA",32328,32359,"37"],[["seg07"],"Alignments","seg07","ctgA",44190,50000,"43"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/trackData.json
new file mode 100644
index 0000000000..598d8e48ee
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Alignments/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"10000","arrayParams":{"length":6,"chunkSize":10000,"urlTemplate":"hist-10000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":15,"histStats":[{"bases":10000,"max":7,"mean":4}],"featureNCList":[[5232,9825,-1,"40","seg04",[[6884,8999,-1,"39","seg03"]]],[12530,15870,1,"48","seg12"],[18508,25367,1,"44","seg08",[[19248,23427,1,"42","seg06"]]],[24227,30738,1,"47","seg11"],[26121,34466,1,"38","seg02"],[26502,35904,-1,"41","seg05",[[29770,32937,1,"46","seg10",[[32328,32359,1,"37","seg01"]]]]],[36615,37227,-1,"45","seg09"],[39264,48453,-1,"51","seg15",[[41136,47829,-1,"50","seg14"]]],[44190,50000,-1,"43","seg07"],[49405,50000,1,"49","seg13"]],"key":"Example alignments","className":"feature4","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"Alignments","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/hist-50000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/hist-50000-0.json
new file mode 100644
index 0000000000..b9b82b1c98
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/hist-50000-0.json
@@ -0,0 +1 @@
+[3,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/names.json
new file mode 100644
index 0000000000..28c3c9bf85
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/names.json
@@ -0,0 +1 @@
+[[["Apple1"],"CDS","Apple1","ctgA",9999,11500,"52"],[["Apple3"],"CDS","Apple3","ctgA",17399,23000,"54"],[["Apple2"],"CDS","Apple2","ctgA",12999,17200,"53"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/trackData.json
new file mode 100644
index 0000000000..fda9faa244
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/CDS/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"50000","arrayParams":{"length":2,"chunkSize":10000,"urlTemplate":"hist-50000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name","phase"],"lazyIndex":2,"featureCount":3,"histStats":[{"bases":50000,"max":3,"mean":1.5}],"featureNCList":[[9999,11500,1,"52","Apple1","0"],[12999,17200,1,"53","Apple2","0"],[17399,23000,1,"54","Apple3",null]],"key":"Predicted genes","className":"cds","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"CDS","type":"FeatureTrack","sublistIndex":6,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/hist-200000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/hist-200000-0.json
new file mode 100644
index 0000000000..bace2a0be1
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/hist-200000-0.json
@@ -0,0 +1 @@
+[1]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/names.json
new file mode 100644
index 0000000000..4722a2ec61
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/names.json
@@ -0,0 +1 @@
+[[["b101.2"],"Clones","b101.2","ctgA",999,20000,"81"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/trackData.json
new file mode 100644
index 0000000000..e39237d1a6
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Clones/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"200000","arrayParams":{"length":1,"chunkSize":10000,"urlTemplate":"hist-200000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":1,"histStats":[{"bases":200000,"max":1,"mean":1}],"featureNCList":[[999,20000,0,"81","b101.2"]],"key":"Fingerprinted BACs","className":"exon","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"Clones","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/hist-50000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/hist-50000-0.json
new file mode 100644
index 0000000000..c94180ee8a
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/hist-50000-0.json
@@ -0,0 +1 @@
+[6,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/names.json
new file mode 100644
index 0000000000..a5f2ad4916
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/names.json
@@ -0,0 +1 @@
+[[["agt830.5"],"EST","agt830.5","ctgA",1049,3202,"84"],[["agt767.3"],"EST","agt767.3","ctgA",7999,9000,"89"],[["agt221.3"],"EST","agt221.3","ctgA",7499,8000,"87"],[["agt221.5"],"EST","agt221.5","ctgA",1049,7300,"86"],[["agt767.5"],"EST","agt767.5","ctgA",1149,7200,"88"],[["agt830.3"],"EST","agt830.3","ctgA",5409,7503,"85"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/trackData.json
new file mode 100644
index 0000000000..28bd233734
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/EST/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"50000","arrayParams":{"length":2,"chunkSize":10000,"urlTemplate":"hist-50000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":6,"histStats":[{"bases":50000,"max":6,"mean":3}],"featureNCList":[[1049,7300,1,"86","agt221.5",[[1049,3202,1,"84","agt830.5"],[1149,7200,1,"88","agt767.5"]]],[5409,7503,-1,"85","agt830.3"],[7499,8000,-1,"87","agt221.3"],[7999,9000,-1,"89","agt767.3"]],"key":"ESTs","className":"est","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"EST","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/hist-10000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/hist-10000-0.json
new file mode 100644
index 0000000000..ccce2da2bc
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/hist-10000-0.json
@@ -0,0 +1 @@
+[4,3,4,3,4,1]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/names.json
new file mode 100644
index 0000000000..e4ee658948
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/names.json
@@ -0,0 +1 @@
+[[["f13"],"ExampleFeatures","f13","ctgA",19156,22915,"7"],[["f12"],"ExampleFeatures","f12","ctgA",49757,50000,"16"],[["f02"],"ExampleFeatures","f02","ctgA",24561,28338,"10"],[["f09"],"ExampleFeatures","f09","ctgA",36033,38167,"11"],[["f03"],"ExampleFeatures","f03","ctgA",36648,40440,"12"],[["f11"],"ExampleFeatures","f11","ctgA",46989,48410,"15"],[["f07"],"ExampleFeatures","f07","ctgA",1658,1984,"2"],[["Remark:hga","hga"],"ExampleFeatures","Remark:hga","ctgA",999,2000,"17"],[["f01"],"ExampleFeatures","f01","ctgA",44704,47713,"14"],[["f04"],"ExampleFeatures","f04","ctgA",37241,38653,"13"],[["f10"],"ExampleFeatures","f10","ctgA",15328,15533,"6"],[["f06"],"ExampleFeatures","f06","ctgA",3013,6130,"3"],[["f14"],"ExampleFeatures","f14","ctgA",23071,23185,"9"],[["f15"],"ExampleFeatures","f15","ctgA",22131,24633,"8"],[["f05"],"ExampleFeatures","f05","ctgA",4714,5968,"4"],[["f08"],"ExampleFeatures","f08","ctgA",13279,16394,"5"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/trackData.json
new file mode 100644
index 0000000000..8a9b2eda70
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ExampleFeatures/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"10000","arrayParams":{"length":6,"chunkSize":10000,"urlTemplate":"hist-10000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":16,"histStats":[{"bases":10000,"max":4,"mean":3.16666666666667}],"featureNCList":[[999,2000,0,"17","Remark:hga",[[1658,1984,1,"2","f07"]]],[3013,6130,1,"3","f06",[[4714,5968,-1,"4","f05"]]],[13279,16394,1,"5","f08",[[15328,15533,1,"6","f10"]]],[19156,22915,-1,"7","f13"],[22131,24633,1,"8","f15",[[23071,23185,1,"9","f14"]]],[24561,28338,1,"10","f02"],[36033,38167,1,"11","f09"],[36648,40440,-1,"12","f03",[[37241,38653,1,"13","f04"]]],[44704,47713,-1,"14","f01"],[46989,48410,-1,"15","f11"],[49757,50000,-1,"16","f12"]],"key":"Example Features","className":"feature2","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"ExampleFeatures","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/hist-200000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/hist-200000-0.json
new file mode 100644
index 0000000000..bace2a0be1
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/hist-200000-0.json
@@ -0,0 +1 @@
+[1]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/names.json
new file mode 100644
index 0000000000..1704902c44
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/names.json
@@ -0,0 +1 @@
+[[["EDEN"],"Genes","EDEN","ctgA",1049,9000,"60"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/trackData.json
new file mode 100644
index 0000000000..889fa282b7
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Genes/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"200000","arrayParams":{"length":1,"chunkSize":10000,"urlTemplate":"hist-200000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":1,"histStats":[{"bases":200000,"max":1,"mean":1}],"featureNCList":[[1049,9000,1,"60","EDEN"]],"key":"Protein-coding genes","className":"feature5","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"Genes","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/hist-10000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/hist-10000-0.json
new file mode 100644
index 0000000000..4881867869
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/hist-10000-0.json
@@ -0,0 +1 @@
+[0,7,3,4,3,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/names.json
new file mode 100644
index 0000000000..5e3290579a
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/names.json
@@ -0,0 +1 @@
+[[["m06"],"Motifs","m06","ctgA",30577,31748,"32"],[["m04"],"Motifs","m04","ctgA",33324,35791,"33"],[["m08"],"Motifs","m08","ctgA",17022,17675,"26"],[["m13"],"Motifs","m13","ctgA",17666,17690,"27"],[["m10"],"Motifs","m10","ctgA",28341,28447,"31"],[["m09"],"Motifs","m09","ctgA",46011,48851,"35"],[["m12"],"Motifs","m12","ctgA",21747,25612,"29"],[["m02"],"Motifs","m02","ctgA",28331,30033,"30"],[["m03"],"Motifs","m03","ctgA",15395,16159,"25"],[["m07"],"Motifs","m07","ctgA",18047,18552,"28"],[["m14"],"Motifs","m14","ctgA",14730,17239,"24"],[["m11"],"Motifs","m11","ctgA",11910,15561,"22"],[["m05"],"Motifs","m05","ctgA",13800,14007,"23"],[["m01"],"Motifs","m01","ctgA",48252,48366,"36"],[["m15"],"Motifs","m15","ctgA",37496,40559,"34"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/trackData.json
new file mode 100644
index 0000000000..36903d0499
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Motifs/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"10000","arrayParams":{"length":6,"chunkSize":10000,"urlTemplate":"hist-10000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":15,"histStats":[{"bases":10000,"max":7,"mean":2.83333333333333}],"featureNCList":[[11910,15561,1,"22","m11",[[13800,14007,-1,"23","m05"]]],[14730,17239,-1,"24","m14",[[15395,16159,1,"25","m03"]]],[17022,17675,1,"26","m08"],[17666,17690,1,"27","m13"],[18047,18552,-1,"28","m07"],[21747,25612,1,"29","m12"],[28331,30033,-1,"30","m02",[[28341,28447,-1,"31","m10"]]],[30577,31748,1,"32","m06"],[33324,35791,1,"33","m04"],[37496,40559,-1,"34","m15"],[46011,48851,1,"35","m09",[[48252,48366,1,"36","m01"]]]],"key":"Example motifs","className":"feature3","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"Motifs","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/hist-50000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/hist-50000-0.json
new file mode 100644
index 0000000000..27380f446e
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/hist-50000-0.json
@@ -0,0 +1 @@
+[4,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/names.json
new file mode 100644
index 0000000000..3068382880
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/names.json
@@ -0,0 +1 @@
+[[["Protein:HGB","hgb"],"NameTest","Protein:HGB","ctgA",1799,2900,"21"],[["Gene:hga","hga"],"NameTest","Gene:hga","ctgA",1099,2000,"18"],[["Gene:hgb","hgb"],"NameTest","Gene:hgb","ctgA",1599,3000,"20"],[["Protein:HGA","hga"],"NameTest","Protein:HGA","ctgA",1199,1900,"19"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/trackData.json
new file mode 100644
index 0000000000..e8726f229b
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/NameTest/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"50000","arrayParams":{"length":2,"chunkSize":10000,"urlTemplate":"hist-50000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":4,"histStats":[{"bases":50000,"max":4,"mean":2}],"featureNCList":[[1099,2000,1,"18","Gene:hga",[[1199,1900,1,"19","Protein:HGA"]]],[1599,3000,-1,"20","Gene:hgb",[[1799,2900,-1,"21","Protein:HGB"]]]],"key":"Name test track","className":"feature2","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"NameTest","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/hist-50000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/hist-50000-0.json
new file mode 100644
index 0000000000..27380f446e
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/hist-50000-0.json
@@ -0,0 +1 @@
+[4,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/names.json
new file mode 100644
index 0000000000..b24354d43d
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/names.json
@@ -0,0 +1 @@
+[[["EDEN.3"],"ReadingFrame","EDEN.3","ctgA",1299,9000,"74"],[["EDEN.1"],"ReadingFrame","EDEN.1","ctgA",1049,9000,"61"],[["Apple3"],"ReadingFrame","Apple3","ctgA",17399,23000,"54"],[["EDEN.2"],"ReadingFrame","EDEN.2","ctgA",1049,9000,"68"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/trackData.json
new file mode 100644
index 0000000000..39ebb54c55
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/ReadingFrame/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"50000","arrayParams":{"length":2,"chunkSize":10000,"urlTemplate":"hist-50000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand","id","name"],"lazyIndex":2,"featureCount":4,"histStats":[{"bases":50000,"max":4,"mean":2}],"featureNCList":[[1049,9000,1,"61","EDEN.1"],[1049,9000,1,"68","EDEN.2"],[1299,9000,1,"74","EDEN.3"],[17399,23000,1,"54","Apple3"]],"key":"Frame usage","className":"dblhelix","clientConfig":null,"arrowheadClass":null,"subfeatureHeaders":["start","end","strand","type"],"label":"ReadingFrame","type":"FeatureTrack","sublistIndex":5,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/hist-200000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/hist-200000-0.json
new file mode 100644
index 0000000000..bace2a0be1
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/hist-200000-0.json
@@ -0,0 +1 @@
+[1]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/names.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/names.json
new file mode 100644
index 0000000000..f4b392da12
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/names.json
@@ -0,0 +1 @@
+[[["Apple3"],"Transcript","Apple3","ctgA",17399,23000,"54"]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/trackData.json
new file mode 100644
index 0000000000..370e1c312a
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/Transcript/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"200000","arrayParams":{"length":1,"chunkSize":10000,"urlTemplate":"hist-200000-{chunk}.json"}}],"subfeatureClasses":{"CDS":"transcript-CDS","UTR":"transcript-UTR"},"headers":["start","end","strand","id","name","subfeatures"],"lazyIndex":2,"featureCount":1,"histStats":[{"bases":200000,"max":1,"mean":1}],"featureNCList":[[17399,23000,1,"54","Apple3",[[21200,23000,1,"UTR"],[18999,19500,1,"CDS"],[17999,18800,1,"CDS"],[20999,21200,1,"CDS"],[17399,17999,1,"UTR"]]]],"key":"Exonerate predictions","className":"transcript","clientConfig":null,"arrowheadClass":"transcript-arrowhead","subfeatureHeaders":["start","end","strand","type"],"label":"Transcript","type":"FeatureTrack","sublistIndex":6,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-100-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-100-0.json
new file mode 100644
index 0000000000..e124da4ac7
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-100-0.json
@@ -0,0 +1 @@
+[13,22,12,13,22,31,33,28,33,38,41,38,26,33,44,40,42,54,38,36,49,50,51,39,37,39,41,41,22,29,42,39,35,38,40,37,45,39,34,37,46,48,42,37,36,31,30,39,52,46,41,43,35,34,37,31,31,41,38,32,38,40,36,31,31,39,42,39,33,38,40,36,38,38,39,45,44,37,37,36,33,37,39,36,38,40,46,39,39,43,35,37,36,38,45,45,34,31,40,42,38,31,38,47,48,38,42,46,34,40,35,31,38,38,42,41,37,35,39,41,42,41,34,46,50,46,41,41,50,47,51,52,40,38,44,43,37,38,40,52,49,35,35,31,39,44,42,43,45,43,33,43,46,38,33,33,34,31,38,27,30,41,40,38,38,43,45,46,40,31,36,39,38,35,28,28,42,45,30,27,34,40,49,44,35,40,40,41,51,42,32,33,30,31,32,36,44,35,34,39,35,41,49,45,32,32,36,40,39,37,34,37,40,37,38,36,33,34,38,34,32,35,38,44,42,37,52,71,53,44,46,38,43,50,51,46,40,36,34,39,40,36,44,50,53,53,43,41,46,41,46,45,36,28,38,49,43,36,36,41,40,37,35,35,40,36,34,34,31,31,39,50,44,30,31,39,44,49,48,39,32,36,37,34,41,46,39,35,31,31,35,38,41,38,38,46,50,40,33,36,36,32,32,42,45,37,37,39,34,38,44,42,44,45,43,41,43,41,43,38,32,36,33,33,36,30,33,28,18,33,40,34,25,27,32,35,51,53,52,41,28,35,32,48,49,29,23,31,37,45,49,47,42,35,30,38,43,34,33,34,41,43,44,49,40,37,38,31,36,37,36,36,36,34,29,31,42,46,41,42,34,28,34,34,27,30,33,38,45,42,39,37,33,35,33,30,32,40,48,48,36,35,37,42,38,46,53,43,44,38,34,33,27,35,41,38,49,50,37,32,42,45,46,48,43,49,44,37,43,37,34,34,36,43,48,41,35,37,39,48,45,30,32,39,44,45,42,41,32,47,50,31,39,47,41,28,31,39,35,37,36,37,43,42,44,42,43,46,48,45,43,37,30,46,57,45,35,37,43,42,46,43,39,39,37,42,37,32,38,45,40,37,48,41,38,35,19,15,20,11,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-1000-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-1000-0.json
new file mode 100644
index 0000000000..999a2cf7ab
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-1000-0.json
@@ -0,0 +1 @@
+[131,217,223,214,220,197,202,215,211,211,224,210,239,244,229,191,208,190,224,189,210,197,243,236,243,220,194,221,197,215,207,230,172,209,196,214,214,203,191,208,223,204,232,217,228,215,233,229,221,164,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-20-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-20-0.json
new file mode 100644
index 0000000000..5f5d6714a5
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-20-0.json
@@ -0,0 +1 @@
+[5,5,9,11,13,14,12,16,12,11,9,9,7,3,4,6,10,10,9,11,12,12,9,10,14,15,12,12,21,22,22,24,25,26,19,17,18,15,17,16,16,17,18,23,22,22,21,24,23,20,24,27,31,26,27,29,25,21,17,20,19,16,14,14,17,19,16,16,21,24,29,29,29,31,27,29,25,22,21,19,19,19,18,22,26,27,34,34,36,36,31,31,25,21,16,15,19,22,24,28,31,29,30,27,27,28,33,33,31,33,36,35,28,28,26,23,20,16,20,20,19,24,25,27,24,24,28,23,21,22,25,27,23,24,28,27,25,21,21,24,20,17,13,10,9,8,12,15,22,26,28,29,27,25,22,26,27,24,23,25,27,20,19,18,17,17,18,22,24,26,27,26,25,22,19,20,23,25,23,23,23,22,23,25,28,25,27,28,25,24,17,20,21,20,22,21,27,27,26,25,22,25,23,21,28,29,27,32,29,31,24,24,27,23,26,20,21,24,26,22,20,27,25,22,22,20,21,16,19,17,18,19,19,20,18,20,23,24,24,24,24,28,26,28,34,32,32,30,27,25,18,22,25,23,30,29,33,27,26,28,22,21,18,22,20,18,22,19,20,22,24,24,24,24,24,23,20,21,16,14,19,19,20,19,20,20,20,22,21,25,25,29,27,23,22,19,18,17,14,18,20,24,25,29,27,24,25,21,24,20,20,20,18,21,20,21,23,21,21,20,18,18,20,22,21,25,23,24,23,22,26,25,23,26,24,26,24,23,25,20,24,23,20,20,18,21,18,20,26,25,24,20,23,20,19,20,21,22,23,25,23,20,22,23,24,26,24,30,28,26,20,19,23,21,22,25,31,31,29,28,28,27,23,24,22,26,28,24,24,21,24,18,19,22,22,22,22,23,19,20,19,20,20,20,21,22,21,22,23,22,26,25,29,24,21,22,20,20,18,20,24,24,27,23,24,24,22,26,22,24,27,29,30,27,29,28,22,20,19,17,18,22,25,28,28,27,27,23,21,22,20,21,19,21,24,19,25,26,27,25,23,24,21,19,19,21,22,25,22,25,26,24,26,28,28,30,32,29,25,25,26,21,18,18,18,15,15,17,19,22,24,26,25,22,25,28,27,26,24,28,26,18,20,20,21,18,19,21,16,18,19,16,17,24,28,29,29,33,33,28,26,25,28,30,28,27,27,25,23,19,23,24,27,27,31,30,27,24,24,25,20,19,22,20,21,20,23,27,26,29,31,28,24,21,15,17,14,18,18,21,20,19,18,16,22,21,26,26,25,27,22,25,23,25,27,27,30,31,29,24,21,22,21,19,19,21,25,20,21,20,22,22,20,21,25,25,23,25,23,27,21,24,27,27,29,32,33,29,24,22,19,12,12,17,19,21,27,31,34,32,32,29,28,29,26,26,30,32,31,29,28,24,22,22,23,23,24,25,29,29,29,23,29,32,30,31,30,33,29,27,32,33,32,32,33,34,35,28,30,29,31,26,18,20,19,20,20,26,25,26,24,22,24,25,26,25,24,29,30,23,22,21,22,23,17,19,23,24,28,27,26,28,28,26,24,25,25,28,29,36,38,34,33,27,25,19,17,20,21,22,24,24,25,21,20,19,20,16,17,18,23,25,24,26,26,26,26,25,26,26,22,24,21,24,25,29,32,32,30,25,25,22,22,31,26,28,28,30,27,23,22,20,19,17,17,17,20,24,30,32,33,33,30,28,23,21,24,22,26,25,23,21,19,20,15,15,18,20,24,23,22,21,22,21,16,17,20,21,20,21,24,21,22,24,22,22,19,17,12,10,11,12,12,19,24,25,27,23,27,26,23,21,21,28,26,21,21,25,26,21,23,27,25,21,26,25,24,22,28,30,27,26,25,30,27,29,30,31,33,27,27,25,24,19,17,18,19,17,17,19,20,24,27,24,24,24,24,23,20,21,23,21,21,20,22,23,25,26,24,20,21,18,17,13,13,17,15,19,18,18,21,18,19,23,26,26,24,29,30,25,20,24,23,18,16,11,14,14,18,20,22,25,23,21,20,21,18,24,26,27,30,31,33,28,30,30,26,23,23,24,20,22,22,22,22,21,22,23,23,27,27,25,27,23,24,23,23,27,27,28,28,27,30,28,31,30,31,29,22,23,20,19,16,16,20,20,22,21,22,20,19,20,15,17,16,19,21,21,20,20,23,20,17,16,17,20,18,20,21,25,26,24,25,27,28,28,26,21,18,18,16,15,20,24,25,25,27,27,23,21,22,20,24,21,18,22,25,27,24,24,28,27,26,30,29,28,27,31,26,23,21,19,18,15,17,18,18,17,20,21,22,20,20,22,25,24,19,23,22,28,24,21,24,23,27,21,21,22,23,25,21,20,25,23,21,20,22,21,19,24,27,25,26,26,24,19,19,22,23,23,25,26,28,24,21,21,19,22,19,19,20,18,22,15,18,19,22,22,24,25,22,20,20,24,23,20,19,24,21,19,16,20,23,18,20,23,26,25,20,22,24,24,24,22,24,24,23,22,20,27,27,27,26,23,26,23,24,24,26,23,22,27,31,35,36,41,44,41,39,41,40,41,34,32,26,24,23,24,28,27,30,28,29,24,23,22,23,23,22,23,24,27,29,28,28,32,30,28,28,29,30,31,32,32,30,30,29,28,24,25,23,23,22,22,24,22,23,25,24,21,20,20,21,17,20,20,23,24,23,27,24,23,21,24,25,20,20,22,24,23,25,26,26,25,29,32,30,31,34,35,29,31,30,29,31,31,34,32,34,33,32,30,28,25,22,19,16,22,23,25,30,30,31,26,28,24,25,28,25,26,27,25,26,24,29,26,26,26,25,28,23,27,26,25,23,18,17,15,15,15,21,20,22,26,29,29,25,31,29,28,24,23,23,22,26,23,25,27,28,23,22,23,23,23,22,26,25,26,25,25,23,24,22,20,22,20,25,22,20,22,21,24,19,22,22,19,19,24,24,21,24,27,28,25,24,25,22,19,22,19,20,24,23,23,19,23,22,19,18,17,19,18,17,15,17,18,15,17,18,20,19,22,28,26,29,28,33,32,27,30,33,32,30,28,25,23,16,16,11,11,11,13,18,18,24,26,28,26,23,26,24,21,25,25,28,28,30,31,31,31,31,30,28,30,28,27,23,23,21,21,21,19,18,20,22,25,20,19,25,23,23,19,23,26,20,21,20,20,18,17,20,19,25,29,28,28,30,34,25,25,24,29,24,23,24,21,19,17,19,19,19,19,19,18,18,16,18,21,21,22,24,25,22,22,22,23,21,19,24,22,28,24,24,28,24,21,19,20,22,19,22,25,24,25,23,28,24,26,28,29,30,28,37,32,32,27,24,25,17,19,17,16,18,18,21,20,23,26,27,24,23,23,22,19,20,18,17,14,16,20,17,18,18,22,22,18,24,29,32,31,30,32,28,25,24,21,20,21,22,23,20,20,20,23,25,22,21,23,24,24,23,24,24,23,22,22,21,21,26,26,29,26,23,28,24,23,23,23,28,26,24,29,27,31,28,26,30,28,32,24,28,28,26,25,23,27,22,26,27,24,23,25,28,24,24,27,29,27,26,23,23,21,24,24,26,27,24,26,20,20,18,23,25,21,22,21,20,18,20,20,19,21,21,20,17,19,23,22,21,19,21,22,19,23,21,20,16,17,17,14,16,22,27,22,24,23,20,16,9,11,7,10,13,13,14,19,18,17,17,21,20,22,24,28,27,23,26,23,21,16,16,15,14,13,13,14,13,13,16,18,21,21,21,22,22,21,20,19,23,22,24,27,29,36,36,40,36,34,31,25,26,26,30,31,34,34,31,24,21,16,13,15,16,22,21,23,25,21,20,17,19,19,17,20,21,19,22,23,27,36,34,34,29,32,29,20,21,19,20,15,15,16,16,15,14,18,17,18,18,20,23,23,19,19,23,24,26,26,28,32,30,28,30,27,29,26,32,29,30,31,28,25,20,21,22,20,23,26,26,24,20,18,15,14,14,17,18,21,24,30,31,30,31,30,25,20,16,16,17,18,19,21,25,22,19,22,23,22,19,21,24,20,21,22,26,27,26,25,27,27,25,25,24,28,27,30,27,26,25,30,29,26,26,26,26,19,20,20,23,24,26,27,27,25,21,17,17,18,15,16,18,24,22,22,23,25,25,23,22,20,23,23,26,23,23,25,19,21,16,18,22,22,21,20,24,21,18,18,19,18,17,20,21,19,19,17,14,19,16,19,18,22,31,28,30,29,33,28,23,23,24,25,23,23,27,26,23,21,26,28,22,23,24,25,18,17,16,14,13,15,17,19,22,25,25,23,22,20,19,16,15,15,15,18,17,18,19,19,21,19,20,19,19,21,20,21,23,25,25,24,27,26,24,23,27,28,30,28,26,25,23,20,20,22,23,21,23,24,23,20,20,24,21,20,18,19,21,20,20,22,23,22,20,19,19,17,16,16,22,18,19,18,20,21,17,23,27,30,29,27,31,27,24,27,26,30,23,30,33,25,27,24,26,20,14,17,18,21,21,24,23,22,21,23,20,20,20,24,27,29,28,27,25,21,20,22,24,25,31,35,37,33,29,31,29,26,26,27,28,28,25,26,24,24,27,24,24,25,23,22,22,21,21,18,21,23,20,23,21,20,17,17,15,14,14,17,18,18,19,24,29,29,27,26,26,20,20,19,19,23,26,33,32,35,36,35,32,27,25,25,23,20,21,20,21,19,24,24,20,20,22,26,24,26,29,30,29,25,22,24,29,30,28,33,33,32,24,26,25,23,24,23,25,25,27,30,31,33,33,33,30,24,25,24,21,18,21,20,18,24,25,28,29,31,30,24,23,20,15,19,24,25,25,28,25,22,19,18,19,16,19,20,23,23,22,25,27,26,22,27,26,29,26,25,32,29,26,20,24,25,18,17,20,23,24,23,25,25,24,22,24,26,28,25,24,27,25,22,23,29,31,28,27,28,26,21,19,19,18,17,15,17,18,21,23,24,24,25,25,22,28,29,31,27,28,27,19,19,20,23,25,28,31,34,29,27,26,23,23,19,18,18,16,19,18,23,31,36,37,37,36,32,28,22,21,18,20,19,17,18,17,22,19,24,26,32,33,30,31,29,27,20,22,23,23,19,16,16,16,13,13,15,19,26,23,26,29,27,28,20,25,22,20,20,17,19,18,20,20,24,26,25,22,21,21,20,15,19,25,25,27,26,30,28,25,26,22,21,25,25,28,25,27,28,25,24,25,25,27,26,29,28,26,25,24,26,28,32,32,30,30,32,28,26,25,25,28,25,26,26,26,29,27,25,22,24,24,23,21,21,18,18,17,16,15,20,24,30,36,35,35,34,37,31,27,29,33,28,24,24,22,21,16,22,20,20,21,22,27,24,25,27,26,28,26,25,28,25,26,24,26,25,24,25,30,30,28,28,27,24,25,24,25,26,26,25,24,22,23,19,19,21,20,22,21,23,23,26,25,26,27,28,27,22,21,20,16,16,16,20,21,16,19,20,26,21,23,33,34,32,29,30,26,17,19,18,17,23,26,28,30,31,31,27,31,27,23,22,22,23,21,22,22,24,28,27,25,24,24,19,14,10,9,7,6,7,8,10,10,11,11,11,13,11,13,11,9,8,4,3,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-200-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-200-0.json
new file mode 100644
index 0000000000..7eff81dd89
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-200-0.json
@@ -0,0 +1 @@
+[22,22,40,46,51,55,46,60,71,65,78,68,56,59,47,64,60,62,61,53,67,59,48,52,68,60,54,49,53,54,56,50,52,60,56,59,57,64,62,54,53,57,58,59,57,55,58,67,54,62,54,62,63,61,59,55,58,61,54,58,60,63,75,66,72,74,62,65,59,73,68,50,59,63,64,62,67,54,52,46,50,58,61,70,56,55,54,45,62,47,57,67,58,64,66,48,47,53,57,53,59,69,49,57,58,56,60,56,52,53,50,62,60,88,79,65,69,72,57,56,58,69,79,67,66,66,48,61,59,57,58,53,54,49,46,64,55,50,69,64,51,53,62,56,48,56,59,63,65,51,52,58,63,57,57,65,66,63,61,56,49,50,47,39,38,54,41,50,71,61,44,64,60,42,64,75,60,56,60,51,61,69,62,53,52,52,50,45,62,60,47,47,43,54,63,56,52,49,56,71,58,62,70,75,60,49,50,61,70,53,61,67,70,65,59,50,59,63,52,66,57,50,63,60,65,64,62,52,50,56,58,64,66,68,71,60,62,77,57,64,63,56,59,54,63,62,64,51,28,20,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-40-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-40-0.json
new file mode 100644
index 0000000000..cc7cc039c3
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-40-0.json
@@ -0,0 +1 @@
+[5,11,14,16,13,10,7,7,11,11,15,11,16,15,24,26,29,21,19,19,19,24,24,26,26,28,32,32,25,22,21,14,23,18,24,35,33,32,28,22,25,25,28,40,43,33,27,22,24,30,36,32,34,37,36,42,32,27,22,24,25,29,28,29,27,31,26,32,27,27,21,13,13,16,26,33,29,31,29,27,30,20,21,25,27,29,29,24,27,27,27,28,30,31,28,22,23,25,32,27,27,26,30,37,35,27,33,26,27,28,27,28,23,23,20,21,23,21,27,28,31,33,36,36,32,25,27,35,34,31,27,22,23,24,25,27,26,28,22,17,23,21,21,25,27,29,28,25,21,19,27,31,29,27,27,23,24,24,24,25,22,24,28,27,26,31,30,29,28,27,27,23,24,23,28,26,26,22,24,28,23,26,31,30,30,26,27,27,37,32,32,29,29,29,27,25,23,25,25,24,23,24,26,26,26,30,30,25,24,22,28,28,28,29,25,32,35,31,25,22,25,31,30,30,28,23,24,26,29,30,26,23,24,28,27,29,33,35,32,32,29,20,22,20,24,29,27,33,31,30,27,24,24,22,22,19,27,34,34,38,32,35,32,31,27,28,31,34,30,29,21,23,26,28,31,32,25,21,19,22,24,21,25,30,30,28,29,32,35,30,27,24,22,26,24,25,22,28,28,29,27,32,38,35,27,21,19,23,33,39,33,35,31,34,37,29,26,30,27,33,30,35,36,34,33,39,36,38,36,33,32,21,23,27,29,26,33,29,30,31,24,29,20,26,33,31,29,30,33,37,40,36,28,22,25,27,26,23,20,19,28,28,28,30,29,26,28,32,36,32,28,32,30,34,30,24,23,20,26,36,36,34,27,27,29,25,22,18,23,27,24,24,20,23,23,26,27,25,19,15,16,20,28,28,33,25,29,27,27,29,28,27,31,27,33,32,33,35,36,35,33,25,20,23,21,27,28,28,31,22,25,27,26,29,26,23,18,19,21,19,22,29,27,30,35,25,24,17,19,21,25,26,24,27,30,35,37,34,28,28,26,24,26,28,29,29,29,30,29,31,33,34,34,34,26,22,19,23,23,24,22,18,21,23,22,24,19,22,21,27,30,29,34,26,23,22,24,30,33,25,25,27,23,30,28,31,35,32,35,31,22,23,20,18,26,23,22,30,24,30,26,28,30,24,29,23,26,26,24,26,31,28,26,26,26,28,31,24,25,22,21,22,22,23,27,24,25,24,26,24,21,25,26,30,24,30,25,28,28,28,31,29,30,28,27,31,39,42,50,48,46,38,32,31,31,35,32,26,28,26,30,33,36,34,33,39,36,35,35,29,28,28,27,29,27,23,23,23,26,29,26,27,27,24,28,29,29,36,35,38,39,34,35,42,38,34,32,24,24,29,33,34,31,30,29,29,30,30,29,32,28,29,25,20,18,22,29,32,32,35,26,29,29,29,29,26,26,28,30,28,29,25,23,27,25,25,24,24,27,26,29,32,27,24,22,27,25,23,26,19,22,18,19,20,23,24,31,32,38,33,35,33,29,18,15,17,20,30,32,27,28,29,32,35,35,34,35,32,26,27,23,23,30,21,27,27,27,23,24,21,22,32,31,35,31,31,28,27,24,23,22,23,20,23,25,28,27,28,23,27,30,30,25,22,25,26,29,30,30,34,35,38,34,29,20,18,23,23,27,30,27,23,22,19,21,20,24,24,32,37,34,34,26,25,27,22,28,28,25,32,27,27,29,25,29,33,32,26,27,32,31,35,31,35,34,31,29,29,29,28,30,31,28,33,27,25,28,28,29,23,25,26,24,25,21,23,25,20,26,23,25,25,22,21,19,23,27,25,22,11,11,15,20,21,23,27,31,30,30,23,18,17,16,15,21,24,24,26,22,25,31,38,43,41,33,33,36,36,31,23,17,22,25,25,23,23,20,24,27,39,37,36,31,23,22,18,17,20,21,21,28,23,29,30,36,35,33,34,34,36,30,23,25,28,28,21,19,19,21,33,36,33,28,21,20,24,26,25,27,22,26,26,30,28,31,30,30,33,31,36,32,30,30,23,28,31,28,22,22,17,25,27,27,30,25,27,28,28,25,20,25,26,25,21,23,21,22,21,23,20,24,37,33,35,29,28,24,30,25,29,26,27,20,19,17,20,28,27,24,22,17,20,21,21,24,23,23,24,28,28,30,28,31,31,29,25,23,24,26,23,25,24,21,25,25,25,23,22,18,22,21,23,24,32,31,34,33,31,33,34,29,28,18,22,26,26,25,23,27,34,31,28,28,27,38,40,34,34,30,32,31,28,29,31,26,23,24,26,24,23,21,18,19,22,27,33,30,28,22,26,35,37,42,36,30,25,24,24,26,23,28,28,33,31,27,33,35,38,30,30,27,31,35,36,38,33,28,23,23,27,30,32,33,24,22,28,29,29,23,20,24,26,27,31,29,34,30,35,28,28,21,25,27,29,27,30,29,30,28,30,33,31,29,21,21,20,23,26,30,27,32,33,29,23,26,29,38,33,27,26,21,21,27,39,41,40,29,22,22,19,24,27,34,37,37,29,27,25,18,19,17,28,29,32,29,28,22,20,22,26,28,26,26,21,29,31,34,30,25,29,32,31,29,30,30,32,30,29,33,34,38,30,28,33,28,32,30,26,29,23,22,20,21,34,38,40,41,31,34,28,25,23,25,25,31,32,32,30,32,30,29,29,34,31,30,28,29,29,27,23,24,25,24,31,31,31,29,26,20,22,22,24,27,35,37,30,29,22,24,31,35,34,33,27,27,24,27,33,27,24,15,10,7,11,12,12,14,13,9,4,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-400-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-400-0.json
new file mode 100644
index 0000000000..3111c9a55b
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/hist-400-0.json
@@ -0,0 +1 @@
+[35,68,88,86,107,116,96,86,97,98,104,87,111,84,85,87,91,92,102,98,89,97,94,103,96,100,109,89,99,95,105,116,124,105,110,99,102,107,100,79,88,107,95,82,89,101,99,98,83,96,104,89,95,96,86,94,130,117,115,96,108,120,111,97,100,93,88,95,94,108,85,97,86,104,101,94,102,99,107,99,82,75,72,75,112,92,91,111,98,94,109,93,88,81,102,81,81,100,82,103,98,113,93,88,102,109,107,93,99,100,95,104,96,90,87,100,112,108,107,99,102,91,100,99,39,0]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-0.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-0.json
new file mode 100644
index 0000000000..0748c2d47c
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-0.json
@@ -0,0 +1 @@
+[[2,103,1],[7,108,1],[15,116,1],[16,117,1],[17,118,1],[42,143,1],[43,144,1],[47,148,1],[55,156,1],[65,166,1],[76,177,1],[90,191,1],[94,195,1],[109,210,1],[123,224,1],[125,226,1],[132,233,1],[140,241,1],[147,248,1],[149,250,1],[152,253,1],[186,287,1],[237,338,1],[258,359,1],[291,392,1],[301,402,1],[302,403,1],[311,412,1],[321,422,1],[325,426,1],[327,428,1],[338,439,1],[354,455,1],[390,491,1],[399,500,-1],[413,514,1],[413,514,-1],[422,523,1],[431,532,-1],[432,533,-1],[453,554,-1],[461,562,-1],[467,568,1],[481,582,-1],[485,586,-1],[487,588,1],[495,596,-1],[509,610,1],[513,614,-1],[540,641,1],[545,646,-1],[556,657,-1],[562,663,1],[564,665,-1],[564,665,1],[564,665,1],[566,667,-1],[570,671,1],[574,675,1],[574,675,1],[577,678,-1],[579,680,-1],[582,683,1],[593,694,-1],[595,696,1],[611,712,1],[611,712,1],[612,713,-1],[618,719,-1],[625,726,-1],[626,727,1],[630,731,1],[630,731,-1],[652,753,-1],[660,761,1],[661,762,1],[664,765,-1],[679,780,-1],[685,786,-1],[690,791,-1],[713,814,-1],[715,816,1],[720,821,-1],[725,826,1],[727,828,1],[729,830,-1],[730,831,-1],[747,848,-1],[764,865,-1],[766,867,1],[775,876,1],[786,887,1],[797,898,-1],[804,905,-1],[809,910,-1],[813,914,-1],[824,925,1],[833,934,1],[839,940,1],[844,945,-1],[845,946,1],[849,950,-1],[851,952,1],[855,956,1],[855,956,1],[866,967,1],[866,967,1],[873,974,1],[875,976,-1],[878,979,1],[878,979,-1],[883,984,-1],[893,994,-1],[911,1012,1],[919,1020,-1],[933,1034,-1],[939,1040,1],[942,1043,-1],[942,1043,1],[950,1051,1],[953,1054,-1],[955,1056,-1],[961,1062,1],[966,1067,-1],[971,1072,1],[972,1073,1],[972,1073,-1],[979,1080,1],[983,1084,1],[990,1091,1],[999,1100,-1],[1005,1106,-1],[1006,1107,1],[1012,1113,-1],[1012,1113,1],[1013,1114,1],[1017,1118,1],[1020,1121,1],[1030,1131,-1],[1032,1133,-1],[1033,1134,1],[1042,1143,1],[1044,1145,1],[1044,1145,-1],[1049,1150,-1],[1055,1156,-1],[1059,1160,-1],[1070,1171,1],[1080,1181,-1],[1081,1182,1],[1088,1189,-1],[1091,1192,-1],[1091,1192,1],[1094,1195,-1],[1100,1201,1],[1101,1202,-1],[1106,1207,-1],[1110,1211,1],[1113,1214,1],[1122,1223,1],[1124,1225,1],[1138,1239,1],[1173,1274,1],[1181,1282,1],[1184,1285,-1],[1186,1287,1],[1189,1290,-1],[1199,1300,-1],[1201,1302,-1],[1203,1304,1],[1205,1306,1],[1212,1313,1],[1217,1318,1],[1231,1332,-1],[1237,1338,-1],[1243,1344,1],[1281,1382,-1],[1291,1392,1],[1293,1394,1],[1295,1396,-1],[1302,1403,-1],[1306,1407,-1],[1309,1410,-1],[1309,1410,-1],[1315,1416,1],[1317,1418,1],[1330,1431,-1],[1332,1433,1],[1335,1436,-1],[1341,1442,-1],[1349,1450,-1],[1362,1463,-1],[1368,1469,-1],[1372,1473,1],[1374,1475,-1],[1374,1475,1],[1378,1479,1],[1382,1483,-1],[1383,1484,1],[1390,1491,-1],[1403,1504,-1],[1404,1505,1],[1406,1507,1],[1412,1513,1],[1412,1513,1],[1413,1514,1],[1417,1518,1],[1417,1518,1],[1419,1520,1],[1421,1522,1],[1429,1530,1],[1432,1533,-1],[1434,1535,-1],[1436,1537,-1],[1439,1540,1],[1450,1551,-1],[1454,1555,1],[1457,1558,1],[1466,1567,1],[1471,1572,-1],[1471,1572,1],[1479,1580,-1],[1481,1582,-1],[1499,1600,1],[1505,1606,1],[1507,1608,1],[1509,1610,-1],[1512,1613,1],[1515,1616,-1],[1522,1623,-1],[1526,1627,-1],[1527,1628,-1],[1528,1629,-1],[1542,1643,-1],[1542,1643,-1],[1543,1644,-1],[1569,1670,1],[1570,1671,1],[1577,1678,1],[1590,1691,-1],[1611,1712,1],[1614,1715,-1],[1627,1728,-1],[1629,1730,-1],[1630,1731,-1],[1630,1731,-1],[1632,1733,1],[1632,1733,-1],[1648,1749,-1],[1651,1752,1],[1652,1753,-1],[1660,1761,1],[1661,1762,-1],[1662,1763,1],[1662,1763,1],[1671,1772,-1],[1672,1773,1],[1676,1777,-1],[1681,1782,-1],[1687,1788,1],[1688,1789,-1],[1688,1789,-1],[1693,1794,-1],[1697,1798,-1],[1698,1799,1],[1708,1809,-1],[1714,1815,1],[1724,1825,1],[1726,1827,1],[1726,1827,-1],[1727,1828,1],[1728,1829,-1],[1729,1830,1],[1731,1832,-1],[1736,1837,1],[1739,1840,-1],[1742,1843,-1],[1743,1844,-1],[1747,1848,-1],[1750,1851,-1],[1755,1856,-1],[1759,1860,1],[1761,1862,-1],[1765,1866,1],[1766,1867,-1],[1767,1868,1],[1769,1870,-1],[1780,1881,-1],[1780,1881,1],[1781,1882,1],[1781,1882,-1],[1788,1889,-1],[1792,1893,-1],[1798,1899,1],[1804,1905,1],[1818,1919,-1],[1836,1937,1],[1836,1937,-1],[1841,1942,1],[1845,1946,1],[1863,1964,-1],[1863,1964,-1],[1899,2000,-1],[1903,2004,1],[1907,2008,1],[1908,2009,1],[1911,2012,1],[1912,2013,1],[1913,2014,1],[1921,2022,-1],[1929,2030,1],[1930,2031,1],[1930,2031,-1],[1930,2031,1],[1934,2035,-1],[1942,2043,-1],[1947,2048,-1],[1949,2050,1],[1952,2053,-1],[1956,2057,1],[1961,2062,1],[1969,2070,1],[1972,2073,1],[1977,2078,-1],[1985,2086,-1],[1986,2087,-1],[1987,2088,-1],[1991,2092,1],[1992,2093,1],[1998,2099,-1],[2000,2101,-1],[2006,2107,-1],[2010,2111,1],[2026,2127,-1],[2027,2128,-1],[2028,2129,1],[2032,2133,1],[2039,2140,1],[2043,2144,-1],[2049,2150,1],[2051,2152,1],[2055,2156,1],[2056,2157,-1],[2057,2158,1],[2059,2160,1],[2076,2177,1],[2077,2178,-1],[2081,2182,1],[2084,2185,-1],[2086,2187,1],[2099,2200,1],[2102,2203,1],[2111,2212,1],[2113,2214,1],[2114,2215,1],[2118,2219,1],[2118,2219,1],[2119,2220,1],[2122,2223,-1],[2124,2225,1],[2125,2226,-1],[2130,2231,-1],[2131,2232,-1],[2132,2233,1],[2134,2235,1],[2137,2238,-1],[2151,2252,1],[2152,2253,-1],[2154,2255,-1],[2155,2256,1],[2162,2263,-1],[2170,2271,-1],[2171,2272,-1],[2174,2275,1],[2174,2275,-1],[2187,2288,-1],[2189,2290,1],[2191,2292,1],[2198,2299,-1],[2199,2300,-1],[2200,2301,-1],[2204,2305,-1],[2208,2309,1],[2208,2309,1],[2216,2317,-1],[2217,2318,-1],[2220,2321,1],[2222,2323,1],[2225,2326,-1],[2226,2327,-1],[2232,2333,-1],[2237,2338,1],[2249,2350,-1],[2252,2353,1],[2264,2365,-1],[2265,2366,1],[2277,2378,-1],[2277,2378,1],[2282,2383,-1],[2293,2394,1],[2296,2397,1],[2317,2418,1],[2326,2427,1],[2329,2430,1],[2334,2435,-1],[2338,2439,1],[2349,2450,1],[2354,2455,1],[2361,2462,1],[2362,2463,1],[2367,2468,1],[2371,2472,-1],[2374,2475,1],[2377,2478,-1],[2382,2483,1],[2385,2486,1],[2389,2490,-1],[2391,2492,-1],[2408,2509,1],[2409,2510,-1],[2420,2521,1],[2430,2531,-1],[2432,2533,1],[2435,2536,-1],[2436,2537,1],[2438,2539,1],[2446,2547,-1],[2451,2552,1],[2456,2557,-1],[2457,2558,1],[2459,2560,-1],[2462,2563,1],[2462,2563,-1],[2464,2565,1],[2465,2566,-1],[2491,2592,1],[2495,2596,-1],[2498,2599,-1],[2504,2605,-1],[2512,2613,1],[2515,2616,-1],[2516,2617,1],[2526,2627,1],[2531,2632,-1],[2532,2633,-1],[2537,2638,1],[2538,2639,1],[2539,2640,1],[2551,2652,1],[2565,2666,1],[2571,2672,-1],[2581,2682,-1],[2583,2684,1],[2584,2685,1],[2588,2689,-1],[2596,2697,-1],[2599,2700,-1],[2602,2703,-1],[2605,2706,-1],[2615,2716,-1],[2617,2718,-1],[2618,2719,-1],[2619,2720,1],[2624,2725,1],[2627,2728,-1],[2628,2729,1],[2628,2729,-1],[2633,2734,-1],[2639,2740,1],[2642,2743,1],[2666,2767,1],[2667,2768,-1],[2671,2772,1],[2680,2781,1],[2685,2786,1],[2686,2787,1],[2696,2797,-1],[2697,2798,1],[2699,2800,-1],[2706,2807,-1],[2707,2808,-1],[2713,2814,-1],[2719,2820,1],[2720,2821,1],[2720,2821,1],[2729,2830,-1],[2739,2840,1],[2743,2844,-1],[2749,2850,-1],[2768,2869,1],[2777,2878,1],[2783,2884,1],[2783,2884,-1],[2787,2888,-1],[2792,2893,-1],[2795,2896,1],[2799,2900,-1],[2800,2901,1],[2824,2925,-1],[2882,2983,1],[2904,3005,-1],[2905,3006,1],[2905,3006,1],[2908,3009,1],[2922,3023,1],[2923,3024,-1],[2928,3029,1],[2935,3036,1],[2935,3036,1],[2937,3038,1],[2940,3041,-1],[2950,3051,1],[2951,3052,-1],[2955,3056,1],[2962,3063,1],[2966,3067,1],[2967,3068,-1],[2968,3069,-1],[2971,3072,-1],[2974,3075,1],[2979,3080,1],[2982,3083,1],[2984,3085,-1],[2990,3091,-1],[2998,3099,1],[3003,3104,1],[3016,3117,1],[3016,3117,-1],[3020,3121,-1],[3024,3125,1],[3025,3126,1],[3028,3129,-1],[3031,3132,1],[3040,3141,1],[3054,3155,1],[3055,3156,-1],[3057,3158,-1],[3060,3161,-1],[3078,3179,-1],[3080,3181,-1],[3083,3184,1],[3099,3200,1],[3102,3203,-1],[3104,3205,1],[3105,3206,-1],[3107,3208,1],[3110,3211,-1],[3111,3212,-1],[3114,3215,-1],[3115,3216,1],[3117,3218,-1],[3126,3227,1],[3128,3229,1],[3128,3229,1],[3135,3236,1],[3148,3249,-1],[3151,3252,-1],[3168,3269,-1],[3171,3272,1],[3179,3280,-1],[3182,3283,-1],[3182,3283,-1],[3192,3293,-1],[3199,3300,-1],[3200,3301,1],[3201,3302,-1],[3205,3306,1],[3213,3314,-1],[3230,3331,1],[3231,3332,1],[3232,3333,1],[3246,3347,1],[3248,3349,-1],[3254,3355,1],[3278,3379,-1],[3281,3382,1],[3304,3405,1],[3304,3405,-1],[3307,3408,1],[3319,3420,-1],[3324,3425,-1],[3325,3426,1],[3327,3428,-1],[3328,3429,-1],[3331,3432,-1],[3334,3435,-1],[3343,3444,1],[3346,3447,-1],[3350,3451,1],[3353,3454,1],[3354,3455,1],[3356,3457,1],[3358,3459,1],[3366,3467,-1],[3368,3469,-1],[3370,3471,-1],[3371,3472,1],[3379,3480,1],[3384,3485,1],[3388,3489,1],[3398,3499,1],[3401,3502,1],[3416,3517,1],[3420,3521,-1],[3422,3523,-1],[3442,3543,1],[3443,3544,1],[3446,3547,-1],[3446,3547,-1],[3453,3554,-1],[3456,3557,-1],[3460,3561,-1],[3463,3564,-1],[3466,3567,-1],[3474,3575,1],[3492,3593,1],[3500,3601,-1],[3501,3602,-1],[3501,3602,-1],[3504,3605,-1],[3505,3606,1],[3521,3622,1],[3523,3624,-1],[3524,3625,1],[3532,3633,1],[3538,3639,-1],[3545,3646,1],[3549,3650,-1],[3555,3656,-1],[3559,3660,-1],[3562,3663,1],[3564,3665,-1],[3578,3679,-1],[3579,3680,-1],[3581,3682,1],[3582,3683,1],[3583,3684,-1],[3583,3684,-1],[3612,3713,-1],[3624,3725,1],[3631,3732,-1],[3636,3737,1],[3639,3740,-1],[3644,3745,1],[3645,3746,-1],[3651,3752,1],[3652,3753,-1],[3656,3757,-1],[3658,3759,1],[3667,3768,1],[3671,3772,-1],[3678,3779,1],[3678,3779,-1],[3679,3780,1],[3683,3784,-1],[3685,3786,1],[3689,3790,-1],[3690,3791,1],[3691,3792,1],[3695,3796,1],[3697,3798,-1],[3714,3815,1],[3717,3818,-1],[3729,3830,-1],[3732,3833,1],[3737,3838,1],[3744,3845,1],[3750,3851,1],[3751,3852,1],[3759,3860,-1],[3766,3868,1],[3769,3871,-1],[3771,3873,1],[3778,3880,1],[3780,3882,-1],[3783,3885,1],[3783,3885,1],[3812,3914,1],[3827,3929,-1],[3829,3931,-1],[3830,3932,-1],[3836,3938,1],[3837,3939,-1],[3843,3945,1],[3847,3949,-1],[3856,3957,-1],[3858,3959,-1],[3866,3967,1],[3868,3969,-1],[3883,3984,1],[3886,3987,1],[3887,3988,1],[3890,3991,-1],[3892,3993,-1],[3895,3996,1],[3912,4013,-1],[3913,4014,-1],[3919,4020,-1],[3921,4022,1],[3925,4026,1],[3933,4034,1],[3933,4034,1],[3934,4035,-1],[3937,4038,-1],[3938,4039,1],[3941,4042,1],[3945,4046,1],[3949,4050,-1],[3950,4051,1],[3957,4058,1],[3962,4063,-1],[3968,4069,-1],[3977,4078,-1],[3989,4090,-1],[4002,4103,-1],[4007,4108,1],[4016,4117,-1],[4022,4123,1],[4029,4130,-1],[4033,4134,-1],[4036,4137,-1],[4037,4138,1],[4041,4142,-1],[4041,4142,1],[4045,4146,-1],[4045,4146,1],[4051,4152,1],[4059,4160,-1],[4064,4165,1],[4067,4168,1],[4072,4173,-1],[4083,4184,1],[4084,4185,1],[4085,4186,-1],[4088,4189,-1],[4089,4190,-1],[4089,4190,1],[4090,4191,1],[4091,4192,1],[4095,4196,1],[4099,4200,1],[4104,4205,1],[4118,4219,1],[4137,4238,-1],[4142,4243,1],[4144,4245,-1],[4148,4249,-1],[4150,4251,1],[4153,4254,-1],[4153,4254,1],[4154,4255,1],[4155,4256,-1],[4157,4258,1],[4158,4259,-1],[4170,4271,-1],[4176,4277,1],[4182,4283,1],[4188,4289,-1],[4189,4290,-1],[4194,4295,1],[4195,4296,-1],[4197,4298,-1],[4212,4313,1],[4215,4316,1],[4230,4331,1],[4235,4336,1],[4238,4339,1],[4242,4343,-1],[4246,4347,1],[4253,4354,1],[4256,4357,1],[4260,4361,-1],[4261,4362,1],[4262,4363,-1],[4273,4374,1],[4274,4375,-1],[4276,4377,1],[4283,4384,-1],[4283,4384,1],[4286,4387,1],[4290,4391,1],[4294,4395,-1],[4327,4428,-1],[4328,4429,-1],[4336,4437,-1],[4342,4443,-1],[4343,4444,-1],[4344,4445,-1],[4349,4450,1],[4350,4451,-1],[4350,4451,-1],[4362,4463,1],[4366,4467,-1],[4367,4468,-1],[4373,4474,-1],[4378,4479,1],[4379,4480,1],[4389,4490,1],[4398,4499,1],[4407,4508,1],[4410,4511,-1],[4415,4516,-1],[4425,4526,-1],[4426,4527,-1],[4427,4528,-1],[4432,4533,-1],[4433,4534,1],[4434,4535,1],[4435,4536,-1],[4454,4555,-1],[4467,4568,-1],[4476,4577,-1],[4478,4579,-1],[4481,4582,-1],[4489,4590,1],[4489,4590,-1],[4490,4591,-1],[4499,4600,-1],[4510,4611,1],[4531,4632,1],[4536,4637,1],[4538,4639,1],[4539,4640,-1],[4545,4646,-1],[4546,4647,1],[4560,4661,-1],[4571,4672,-1],[4575,4676,-1],[4575,4676,-1],[4590,4691,-1],[4603,4704,-1],[4612,4713,-1],[4612,4713,-1],[4613,4714,-1],[4618,4719,-1],[4620,4721,1],[4620,4721,-1],[4628,4729,1],[4648,4749,-1],[4650,4751,-1],[4655,4756,1],[4660,4761,1],[4661,4762,1],[4663,4764,1],[4665,4766,1],[4693,4794,1],[4698,4799,1],[4704,4805,1],[4705,4806,1],[4716,4817,-1],[4720,4821,1],[4722,4823,-1],[4731,4832,1],[4732,4833,-1],[4733,4834,-1],[4737,4838,-1],[4738,4839,1],[4739,4840,1],[4743,4844,-1],[4747,4848,-1],[4747,4848,1],[4751,4852,-1],[4765,4866,-1],[4766,4867,-1],[4770,4871,-1],[4780,4881,-1],[4785,4886,1],[4788,4889,1],[4790,4891,-1],[4809,4910,-1],[4813,4914,1],[4823,4924,-1],[4831,4932,-1],[4832,4933,-1],[4834,4935,-1],[4835,4936,-1],[4836,4937,-1],[4839,4940,1],[4842,4943,1],[4842,4943,-1],[4853,4954,-1],[4854,4955,-1],[4858,4959,1],[4860,4961,1],[4862,4963,-1],[4863,4964,-1],[4863,4964,-1],[4867,4968,-1],[4867,4968,-1],[4878,4979,1],[4882,4983,1],[4886,4987,-1],[4888,4989,-1],[4889,4990,-1],[4890,4991,-1],[4890,4991,1],[4893,4994,1],[4897,4998,-1],[4899,5000,-1],[4905,5006,-1],[4916,5017,1],[4920,5021,-1],[4938,5039,1],[4940,5041,1],[4943,5044,-1],[4950,5051,1],[4953,5054,1],[4961,5062,1],[4961,5062,1],[4979,5080,-1],[4980,5081,1],[4983,5084,1],[4987,5088,1],[4991,5092,-1],[4997,5098,1],[5015,5116,1],[5020,5121,1],[5020,5121,1],[5026,5127,1],[5029,5130,1],[5032,5133,-1],[5033,5134,-1],[5037,5138,-1],[5040,5141,-1],[5040,5141,-1],[5053,5154,1],[5057,5158,-1],[5059,5160,1],[5065,5166,1],[5068,5169,1],[5083,5184,1],[5085,5186,1],[5085,5186,-1],[5088,5189,-1],[5089,5190,-1],[5092,5193,-1],[5097,5198,1],[5098,5199,-1],[5099,5200,-1],[5103,5204,-1],[5104,5205,-1],[5107,5208,1],[5110,5211,-1],[5114,5215,-1],[5127,5228,-1],[5131,5232,-1],[5135,5236,1],[5135,5236,-1],[5136,5237,-1],[5159,5260,1],[5164,5265,-1],[5171,5272,-1],[5173,5274,1],[5186,5287,1],[5188,5289,-1],[5191,5292,1],[5192,5293,1],[5198,5299,-1],[5202,5303,1],[5206,5307,-1],[5220,5321,-1],[5221,5322,-1],[5222,5323,-1],[5225,5326,-1],[5234,5335,1],[5251,5352,1],[5257,5358,1],[5260,5361,-1],[5263,5364,-1],[5265,5366,-1],[5279,5380,-1],[5289,5390,-1],[5293,5394,-1],[5306,5407,-1],[5308,5409,-1],[5313,5414,1],[5320,5421,1],[5325,5426,1],[5326,5427,-1],[5330,5431,1],[5337,5438,1],[5337,5438,1],[5345,5446,-1],[5358,5459,1],[5377,5478,1],[5377,5478,-1],[5379,5480,1],[5384,5485,-1],[5388,5489,1],[5393,5494,-1],[5395,5496,1],[5399,5500,-1],[5401,5502,-1],[5407,5508,1],[5411,5512,1],[5412,5513,-1],[5415,5516,1],[5438,5539,-1],[5439,5540,-1],[5439,5540,1],[5440,5541,-1],[5441,5542,-1],[5444,5545,1],[5453,5554,1],[5454,5555,1],[5459,5560,-1],[5460,5561,1],[5468,5569,1],[5494,5595,-1],[5496,5597,1],[5502,5603,-1],[5511,5612,1],[5512,5613,1],[5518,5619,1],[5524,5625,-1],[5530,5631,-1],[5536,5637,-1],[5543,5644,-1],[5549,5650,-1],[5567,5668,1],[5578,5679,-1],[5598,5699,-1],[5600,5701,-1],[5602,5703,-1],[5602,5703,1],[5603,5704,-1],[5605,5706,-1],[5606,5707,1],[5615,5716,1],[5620,5721,-1],[5626,5727,-1],[5634,5735,-1],[5639,5740,1],[5640,5741,-1],[5654,5755,-1],[5657,5758,-1],[5659,5760,-1],[5661,5762,-1],[5681,5782,1],[5685,5786,-1],[5688,5789,-1],[5719,5820,-1],[5724,5825,-1],[5724,5825,1],[5728,5829,-1],[5728,5829,1],[5733,5834,-1],[5736,5837,-1],[5738,5839,1],[5742,5843,-1],[5748,5849,1],[5750,5851,-1],[5755,5856,1],[5757,5858,1],[5767,5868,-1],[5769,5870,1],[5775,5876,-1],[5782,5883,1],[5785,5886,-1],[5793,5894,-1],[5795,5896,-1],[5797,5898,1],[5798,5899,-1],[5806,5907,-1],[5810,5911,-1],[5810,5911,1],[5822,5923,-1],[5826,5927,1],[5835,5936,-1],[5835,5936,1],[5840,5941,1],[5840,5941,-1],[5841,5942,1],[5843,5944,1],[5848,5949,1],[5853,5954,-1],[5872,5973,1],[5888,5989,-1],[5891,5992,-1],[5907,6008,1],[5909,6010,1],[5909,6010,1],[5921,6022,-1],[5926,6027,-1],[5944,6045,1],[5954,6055,-1],[5959,6060,-1],[5964,6065,-1],[5966,6067,1],[5967,6068,1],[5982,6083,-1],[5987,6088,1],[5987,6088,1],[5988,6089,-1],[5992,6093,-1],[6001,6102,-1],[6005,6106,-1],[6007,6108,-1],[6014,6115,1],[6023,6124,-1],[6023,6124,1],[6026,6127,-1],[6030,6131,-1],[6032,6133,1],[6034,6135,1],[6039,6140,1],[6049,6150,-1],[6050,6151,1],[6059,6160,1],[6060,6161,1],[6061,6162,1],[6072,6173,-1],[6074,6175,1],[6076,6177,-1],[6076,6177,-1],[6093,6194,1],[6099,6200,1],[6103,6204,1],[6112,6213,1],[6131,6232,1],[6137,6238,-1],[6137,6238,-1],[6138,6239,-1],[6139,6240,-1],[6149,6250,-1],[6157,6258,1],[6163,6264,1],[6164,6265,1],[6165,6266,1],[6176,6277,1],[6177,6278,1],[6178,6279,1],[6180,6281,-1],[6188,6289,1],[6198,6299,1],[6205,6306,1],[6221,6322,-1],[6229,6330,-1],[6234,6335,1],[6250,6351,-1],[6258,6359,-1],[6262,6363,1],[6263,6364,1],[6266,6367,1],[6276,6377,1],[6277,6378,-1],[6279,6380,1],[6283,6384,1],[6284,6385,1],[6287,6388,-1],[6296,6397,-1],[6297,6398,1],[6303,6404,-1],[6311,6412,1],[6317,6418,-1],[6318,6419,1],[6325,6426,1],[6328,6429,1],[6339,6440,1],[6351,6452,1],[6360,6461,-1],[6371,6472,1],[6388,6489,-1],[6392,6493,1],[6392,6493,1],[6399,6500,-1],[6404,6505,-1],[6406,6507,1],[6411,6512,1],[6412,6513,1],[6428,6529,-1],[6430,6531,-1],[6430,6531,-1],[6439,6540,1],[6444,6545,-1],[6448,6549,1],[6455,6556,-1],[6456,6557,1],[6462,6563,1],[6464,6565,-1],[6473,6574,1],[6475,6576,1],[6480,6581,1],[6502,6603,-1],[6511,6612,-1],[6512,6613,-1],[6512,6613,-1],[6516,6617,1],[6517,6618,1],[6519,6620,-1],[6526,6627,1],[6531,6632,1],[6532,6633,1],[6541,6642,-1],[6541,6642,1],[6549,6650,1],[6551,6652,-1],[6561,6662,1],[6568,6669,1],[6570,6671,-1],[6575,6676,-1],[6591,6692,1],[6595,6696,1],[6597,6698,-1],[6607,6708,1],[6610,6711,1],[6612,6713,1],[6613,6714,1],[6618,6719,1],[6620,6721,-1],[6621,6722,1],[6621,6722,-1],[6630,6731,1],[6634,6735,-1],[6642,6743,-1],[6643,6744,-1],[6660,6761,1],[6661,6762,-1],[6666,6767,1],[6673,6774,1],[6675,6776,1],[6676,6777,1],[6677,6778,1],[6688,6789,-1],[6693,6794,-1],[6701,6802,1],[6702,6803,-1],[6704,6805,1],[6718,6819,1],[6719,6820,-1],[6724,6825,1],[6733,6834,1],[6738,6839,1],[6746,6847,1],[6749,6850,-1],[6756,6857,-1],[6759,6860,1],[6764,6865,1],[6771,6872,-1],[6776,6877,1],[6779,6880,1],[6794,6895,-1],[6797,6898,1],[6800,6901,1],[6804,6905,-1],[6805,6906,1],[6811,6912,1],[6813,6914,1],[6814,6915,-1],[6823,6924,1],[6823,6924,-1],[6838,6939,-1],[6844,6945,-1],[6860,6961,-1],[6866,6967,1],[6872,6973,1],[6891,6992,-1],[6893,6994,-1],[6901,7002,-1],[6902,7003,-1],[6908,7009,1],[6908,7009,1],[6912,7013,1],[6915,7016,-1],[6933,7034,1],[6935,7036,-1],[6939,7040,1],[6941,7042,1],[6945,7046,-1],[6945,7046,1],[6958,7059,-1],[6958,7059,1],[6960,7061,1],[6962,7063,1],[6964,7065,1],[6967,7068,-1],[6970,7071,1],[6973,7074,1],[6973,7074,1],[6980,7081,1],[6994,7095,-1],[7005,7106,-1],[7021,7122,1],[7027,7128,-1],[7045,7146,-1],[7046,7147,1],[7050,7151,1],[7053,7154,-1],[7055,7156,1],[7069,7170,1],[7075,7176,1],[7077,7178,1],[7081,7182,1],[7081,7182,-1],[7083,7184,1],[7087,7188,-1],[7088,7189,-1],[7096,7197,1],[7109,7210,1],[7114,7215,-1],[7115,7216,1],[7130,7231,1],[7130,7231,-1],[7147,7248,-1],[7153,7254,1],[7156,7257,-1],[7161,7262,-1],[7163,7264,1],[7164,7265,1],[7166,7267,1],[7168,7269,1],[7169,7270,1],[7183,7284,-1],[7183,7284,1],[7188,7289,-1],[7198,7299,1],[7198,7299,1],[7200,7301,1],[7206,7307,-1],[7215,7316,-1],[7218,7319,-1],[7246,7347,1],[7251,7352,-1],[7252,7353,1],[7256,7357,1],[7262,7363,1],[7265,7366,-1],[7273,7374,-1],[7274,7375,1],[7285,7386,-1],[7285,7386,1],[7285,7386,1],[7288,7389,1],[7290,7391,1],[7291,7392,1],[7293,7394,-1],[7304,7405,-1],[7305,7406,1],[7307,7408,-1],[7308,7409,-1],[7315,7416,-1],[7316,7417,-1],[7316,7417,1],[7326,7427,1],[7336,7437,-1],[7340,7441,1],[7342,7443,-1],[7345,7446,-1],[7350,7451,1],[7351,7452,-1],[7356,7457,1],[7366,7467,-1],[7374,7475,-1],[7392,7493,1],[7397,7498,-1],[7412,7513,1],[7425,7526,-1],[7425,7526,-1],[7433,7534,-1],[7434,7535,1],[7435,7536,1],[7436,7537,1],[7442,7543,1],[7443,7544,-1],[7447,7548,1],[7454,7555,1],[7454,7555,1],[7458,7559,1],[7460,7561,1],[7462,7563,1],[7468,7569,-1],[7469,7570,-1],[7483,7584,1],[7491,7592,-1],[7496,7597,-1],[7504,7605,-1],[7504,7605,-1],[7507,7608,1],[7511,7612,1],[7517,7618,-1],[7523,7624,-1],[7526,7627,-1],[7528,7629,-1],[7529,7630,1],[7530,7631,1],[7532,7633,-1],[7536,7637,-1],[7542,7643,-1],[7548,7649,-1],[7549,7650,1],[7554,7655,1],[7555,7656,-1],[7559,7660,1],[7563,7664,-1],[7576,7677,-1],[7576,7677,-1],[7577,7678,-1],[7582,7683,-1],[7584,7685,1],[7591,7692,1],[7611,7712,1],[7611,7712,1],[7619,7720,1],[7628,7729,-1],[7628,7729,1],[7629,7730,-1],[7634,7735,-1],[7641,7742,-1],[7646,7747,1],[7646,7747,1],[7662,7763,-1],[7664,7765,-1],[7664,7765,1],[7666,7767,1],[7667,7768,-1],[7675,7776,1],[7682,7783,1],[7684,7785,-1],[7698,7799,-1],[7702,7803,1],[7708,7809,-1],[7709,7810,-1],[7713,7814,-1],[7714,7815,-1],[7715,7816,1],[7716,7817,1],[7720,7821,1],[7731,7832,1],[7737,7838,-1],[7738,7839,-1],[7745,7846,1],[7761,7862,1],[7769,7870,-1],[7773,7874,-1],[7786,7887,1],[7795,7896,1],[7797,7898,-1],[7802,7903,1],[7804,7905,-1],[7810,7911,1],[7811,7912,-1],[7813,7914,-1],[7819,7920,-1],[7820,7921,-1],[7842,7943,1],[7845,7946,-1],[7847,7948,-1],[7849,7950,-1],[7855,7956,1],[7866,7967,-1],[7872,7973,-1],[7872,7973,1],[7874,7975,-1],[7886,7987,1],[7889,7990,-1],[7897,7998,1],[7905,8006,-1],[7908,8009,1],[7916,8017,-1],[7927,8028,-1],[7934,8035,1],[7935,8036,-1],[7937,8038,1],[7939,8040,-1],[7949,8050,1],[7951,8052,-1],[7958,8059,-1],[7971,8072,-1],[7983,8084,1],[7985,8086,-1],[7988,8089,1],[7996,8097,-1],[7999,8100,1],[8005,8106,1],[8008,8109,-1],[8023,8124,-1],[8032,8133,-1],[8035,8136,1],[8037,8138,1],[8041,8142,1],[8043,8144,-1],[8053,8154,-1],[8058,8159,1],[8061,8162,-1],[8063,8164,-1],[8064,8165,-1],[8073,8174,1],[8088,8189,1],[8099,8200,-1],[8104,8205,-1],[8106,8207,-1],[8106,8207,-1],[8110,8211,1],[8119,8220,-1],[8135,8236,-1],[8139,8240,1],[8141,8242,-1],[8145,8246,-1],[8146,8247,1],[8147,8248,-1],[8157,8258,1],[8166,8267,1],[8168,8269,1],[8169,8270,1],[8175,8276,-1],[8176,8277,-1],[8181,8282,-1],[8188,8289,-1],[8194,8295,1],[8202,8303,1],[8203,8304,1],[8206,8307,-1],[8208,8309,-1],[8216,8317,-1],[8226,8327,1],[8230,8331,-1],[8231,8332,-1],[8237,8338,-1],[8251,8352,1],[8252,8353,-1],[8254,8355,1],[8257,8358,1],[8258,8359,1],[8259,8360,1],[8265,8366,-1],[8284,8385,-1],[8286,8387,1],[8304,8405,-1],[8309,8410,1],[8312,8413,-1],[8315,8416,-1],[8333,8434,-1],[8337,8438,-1],[8339,8440,-1],[8344,8445,-1],[8348,8449,-1],[8348,8449,-1],[8354,8455,-1],[8363,8464,1],[8370,8471,-1],[8378,8479,1],[8383,8484,-1],[8394,8495,-1],[8394,8495,1],[8395,8496,1],[8400,8501,1],[8400,8501,-1],[8406,8507,1],[8409,8510,-1],[8409,8510,1],[8416,8517,-1],[8421,8522,-1],[8432,8533,-1],[8435,8536,1],[8439,8540,1],[8444,8545,-1],[8450,8551,1],[8451,8552,-1],[8451,8552,-1],[8452,8553,1],[8466,8567,1],[8483,8584,1],[8488,8589,-1],[8488,8589,1],[8491,8592,1],[8502,8603,-1],[8511,8612,-1],[8518,8619,1],[8519,8620,-1],[8525,8626,-1],[8537,8638,1],[8537,8638,-1],[8539,8640,-1],[8540,8641,-1],[8544,8645,-1],[8550,8651,1],[8550,8651,1],[8556,8657,1],[8557,8658,-1],[8557,8658,1],[8568,8669,1],[8578,8679,-1],[8587,8688,-1],[8589,8690,-1],[8596,8697,-1],[8600,8701,-1],[8602,8703,-1],[8602,8703,-1],[8604,8705,-1],[8616,8717,-1],[8616,8717,-1],[8618,8719,1],[8629,8730,1],[8629,8730,-1],[8632,8733,1],[8633,8734,1],[8637,8738,-1],[8644,8745,-1],[8646,8747,1],[8647,8748,-1],[8652,8753,1],[8652,8753,-1],[8662,8763,-1],[8663,8764,1],[8666,8767,1],[8674,8775,-1],[8677,8778,-1],[8682,8783,-1],[8691,8792,1],[8696,8797,-1],[8699,8800,-1],[8706,8807,-1],[8714,8815,-1],[8722,8823,1],[8741,8842,1],[8747,8848,-1],[8751,8852,1],[8763,8864,1],[8764,8865,1],[8766,8867,1],[8771,8872,-1],[8783,8884,1],[8793,8894,-1],[8796,8897,-1],[8808,8909,1],[8809,8910,1],[8812,8913,1],[8814,8915,-1],[8829,8930,-1],[8830,8931,1],[8830,8931,-1],[8831,8932,1],[8832,8933,1],[8834,8935,-1],[8835,8936,-1],[8846,8947,1],[8851,8952,1],[8852,8953,1],[8855,8956,-1],[8863,8964,-1],[8867,8968,1],[8872,8973,-1],[8873,8974,-1],[8874,8975,-1],[8876,8977,-1],[8885,8986,-1],[8888,8989,1],[8894,8995,1],[8896,8997,-1],[8900,9001,1],[8912,9013,1],[8922,9023,1],[8928,9029,1],[8930,9031,1],[8931,9032,-1],[8950,9051,1],[8951,9052,1],[8956,9057,1],[8962,9063,-1],[8975,9076,1],[8980,9081,-1],[8985,9086,-1],[8992,9093,1],[8992,9093,-1],[8992,9093,-1],[8997,9098,-1],[8997,9098,1],[9004,9105,1],[9017,9118,1],[9020,9121,-1],[9035,9136,1],[9035,9136,1],[9056,9157,1],[9056,9157,-1],[9062,9163,-1],[9066,9167,1],[9070,9171,-1],[9071,9172,1],[9076,9177,-1],[9083,9184,-1],[9085,9186,1],[9087,9188,-1],[9089,9190,1],[9096,9197,1],[9101,9202,1],[9115,9216,-1],[9122,9223,1],[9128,9229,1],[9128,9229,1],[9129,9230,1],[9130,9231,1],[9133,9234,-1],[9134,9235,1],[9136,9237,-1],[9142,9243,-1],[9144,9245,-1],[9146,9247,1],[9158,9259,-1],[9169,9270,1],[9172,9273,1],[9172,9273,1],[9181,9282,-1],[9192,9293,1],[9193,9294,1],[9207,9308,1],[9211,9312,1],[9216,9317,1],[9220,9321,-1],[9229,9330,1],[9235,9336,1],[9243,9344,-1],[9245,9346,-1],[9251,9352,1],[9256,9357,1],[9258,9359,1],[9264,9365,1],[9271,9372,1],[9281,9382,1],[9286,9387,1],[9294,9395,1],[9303,9404,-1],[9304,9405,-1],[9310,9411,-1],[9312,9413,1],[9317,9418,-1],[9321,9422,1],[9322,9423,1],[9330,9431,-1],[9336,9437,1],[9343,9444,-1],[9351,9452,-1],[9354,9455,-1],[9355,9456,1],[9358,9459,1],[9359,9460,-1],[9367,9468,-1],[9377,9478,1],[9382,9483,-1],[9385,9486,-1],[9388,9489,-1],[9390,9491,-1],[9394,9495,1],[9405,9506,1],[9408,9509,1],[9410,9511,-1],[9413,9514,-1],[9422,9523,-1],[9423,9524,-1],[9427,9528,-1],[9447,9548,1],[9447,9548,1],[9448,9549,1],[9450,9551,-1],[9450,9551,-1],[9458,9559,1],[9460,9561,1],[9462,9563,1],[9466,9567,1],[9467,9568,1],[9469,9570,-1],[9473,9574,-1],[9474,9575,1],[9483,9584,-1],[9488,9589,-1],[9499,9600,-1],[9501,9602,1],[9503,9604,1],[9504,9605,1],[9506,9607,1],[9510,9611,1],[9516,9617,-1],[9517,9618,1],[9523,9624,-1],[9526,9627,-1],[9534,9635,-1],[9535,9636,1],[9539,9640,1],[9539,9640,1],[9564,9665,1],[9574,9675,-1],[9581,9682,-1],[9582,9683,-1],[9586,9687,-1],[9592,9693,1],[9596,9697,-1],[9598,9699,-1],[9598,9699,-1],[9608,9709,1],[9610,9711,-1],[9613,9714,-1],[9633,9734,1],[9633,9734,-1],[9637,9738,1],[9654,9755,-1],[9667,9768,1],[9674,9775,-1],[9685,9786,-1],[9698,9799,1],[9700,9801,-1],[9704,9805,1],[9712,9813,1],[9719,9820,-1],[9728,9829,-1],[9732,9833,-1],[9736,9837,1],[9742,9843,1],[9744,9845,1],[9746,9847,1],[9748,9849,1],[9754,9855,1],[9762,9863,1],[9764,9865,1],[9767,9868,1],[9781,9882,1],[9783,9884,1],[9785,9886,1],[9787,9888,-1],[9794,9895,1],[9801,9902,-1],[9808,9909,-1],[9811,9912,-1],[9815,9916,-1],[9820,9921,-1],[9823,9924,1],[9826,9927,1],[9827,9928,1],[9837,9938,-1],[9851,9952,-1],[9851,9952,-1],[9851,9952,-1],[9865,9966,-1],[9871,9972,1],[9884,9985,1],[9884,9985,1],[9890,9991,1],[9894,9995,1],[9896,9997,-1],[9899,10000,-1],[9904,10005,1],[9904,10005,1],[9908,10009,1],[9913,10014,-1],[9915,10016,1],[9915,10016,-1],[9916,10017,1],[9918,10019,1],[9920,10021,-1],[9924,10025,-1],[9937,10038,-1],[9941,10042,-1],[9941,10042,-1],[9949,10050,-1],[9951,10052,1],[9976,10077,1],[9984,10085,1],[9987,10088,-1],[9987,10088,1],[9989,10090,-1],[9991,10092,1],[9995,10096,-1],[10002,10103,1],[10002,10103,-1],[10010,10111,1],[10035,10136,1],[10055,10156,1],[10055,10156,1],[10057,10158,-1],[10058,10159,-1],[10058,10159,1],[10063,10164,-1],[10064,10165,1],[10064,10165,-1],[10070,10171,1],[10082,10183,1],[10088,10189,1],[10102,10203,-1],[10104,10205,1],[10112,10213,1],[10123,10224,-1],[10123,10224,-1],[10127,10228,-1],[10129,10230,1],[10140,10241,1],[10149,10250,-1],[10155,10256,-1],[10183,10284,-1],[10184,10285,-1],[10187,10288,1],[10190,10291,-1],[10198,10299,-1],[10199,10300,-1],[10208,10309,1],[10210,10311,1],[10219,10320,1],[10245,10346,-1],[10245,10346,1],[10250,10351,-1],[10251,10352,-1],[10252,10353,1],[10270,10371,1],[10271,10372,1],[10272,10373,-1],[10272,10373,1],[10274,10375,-1],[10276,10377,1],[10277,10378,-1],[10278,10379,1],[10278,10379,-1],[10278,10379,-1],[10284,10385,-1],[10288,10389,1],[10293,10394,-1],[10299,10400,1],[10301,10402,1],[10304,10405,-1],[10310,10411,1],[10312,10413,-1],[10314,10415,-1],[10318,10419,1],[10322,10423,1],[10331,10432,-1],[10333,10434,-1],[10342,10443,-1],[10349,10450,-1],[10350,10451,-1],[10352,10453,-1],[10357,10458,1],[10363,10464,1],[10365,10466,-1],[10368,10469,-1],[10370,10471,-1],[10375,10476,-1],[10383,10484,1],[10384,10485,1],[10385,10486,-1],[10388,10489,1],[10398,10499,1],[10417,10518,-1],[10420,10521,-1],[10427,10528,-1],[10429,10530,1],[10433,10534,1],[10434,10535,1],[10435,10536,-1],[10454,10555,1],[10454,10555,-1],[10455,10556,1],[10458,10559,1],[10459,10560,-1],[10459,10560,-1],[10462,10563,-1],[10463,10564,-1],[10465,10566,1],[10466,10567,-1],[10475,10576,-1],[10478,10579,1],[10479,10580,-1],[10481,10582,1],[10489,10590,1],[10493,10594,-1],[10500,10601,1],[10501,10602,1],[10510,10611,-1],[10514,10615,-1],[10537,10638,1],[10552,10653,1],[10552,10653,1],[10554,10655,1],[10554,10655,1],[10565,10666,1],[10573,10674,-1],[10581,10682,-1],[10585,10686,-1],[10586,10687,-1],[10589,10690,1],[10604,10705,1],[10604,10705,1],[10605,10706,-1],[10606,10707,1],[10607,10708,1],[10611,10712,1],[10614,10715,-1],[10619,10720,-1],[10625,10726,1],[10630,10731,-1],[10632,10733,1],[10637,10738,-1],[10638,10739,1],[10640,10741,-1],[10647,10748,1],[10652,10753,1],[10653,10754,1],[10664,10765,1],[10671,10772,-1],[10675,10776,1],[10675,10776,-1],[10683,10784,-1],[10685,10786,-1],[10689,10790,1],[10690,10791,1],[10691,10792,1],[10695,10796,1],[10706,10807,1],[10713,10814,1],[10719,10820,-1],[10721,10822,-1],[10727,10828,1],[10733,10834,-1],[10734,10835,1],[10745,10846,1],[10745,10846,-1],[10754,10855,-1],[10766,10867,1],[10772,10873,-1],[10774,10875,-1],[10779,10880,-1],[10780,10881,1],[10788,10889,1],[10788,10889,1],[10792,10893,1],[10796,10897,-1],[10801,10902,-1],[10837,10938,-1],[10846,10947,1],[10846,10947,-1],[10849,10950,1],[10849,10950,-1],[10853,10954,1],[10853,10954,-1],[10853,10954,1],[10859,10960,-1],[10872,10973,1],[10886,10987,1],[10889,10990,1],[10897,10998,1],[10898,10999,-1],[10901,11002,-1],[10905,11006,-1],[10906,11007,-1],[10918,11019,-1],[10919,11020,-1],[10920,11021,1],[10927,11028,1],[10932,11033,1],[10937,11038,1],[10942,11043,1],[10944,11045,1],[10951,11052,-1],[10958,11059,1],[10959,11060,-1],[10961,11062,1],[10965,11066,1],[10965,11066,1],[10968,11069,-1],[10969,11070,-1],[10973,11074,1],[10980,11081,1],[10989,11090,-1],[10996,11097,-1],[10996,11097,-1],[10999,11100,-1],[11002,11103,1],[11003,11104,1],[11006,11107,-1],[11007,11108,1],[11011,11112,1],[11017,11118,-1],[11021,11122,-1],[11052,11153,1],[11064,11165,-1],[11087,11188,-1],[11102,11203,-1],[11102,11203,-1],[11108,11209,1],[11110,11211,-1],[11117,11218,1],[11119,11220,-1],[11127,11228,-1],[11129,11230,1],[11134,11235,1],[11137,11238,1],[11140,11241,-1],[11140,11241,-1],[11141,11242,1],[11142,11243,-1],[11156,11257,-1],[11177,11278,-1],[11185,11286,1],[11191,11292,1],[11194,11295,-1],[11198,11299,1],[11230,11331,-1],[11232,11333,-1],[11234,11335,-1],[11237,11338,1],[11242,11343,-1],[11246,11347,-1],[11255,11356,-1],[11257,11358,1],[11268,11369,1],[11268,11369,-1],[11278,11379,-1],[11280,11381,-1],[11280,11381,1],[11282,11383,-1],[11283,11384,-1],[11290,11391,-1],[11297,11398,1],[11297,11398,-1],[11304,11405,1],[11306,11407,1],[11309,11410,1],[11320,11421,1],[11323,11424,1],[11325,11426,-1],[11328,11429,1],[11333,11434,1],[11350,11451,1],[11355,11456,-1],[11357,11458,-1],[11358,11459,-1],[11367,11468,-1],[11371,11472,1],[11371,11472,-1],[11380,11481,-1],[11381,11482,-1],[11394,11495,-1],[11396,11497,1],[11397,11498,1],[11409,11510,-1],[11418,11519,1],[11423,11524,-1],[11433,11534,-1],[11434,11535,-1],[11435,11536,-1],[11439,11540,1],[11439,11540,-1],[11442,11543,1],[11446,11547,1],[11447,11548,-1],[11461,11562,-1],[11463,11564,-1],[11467,11568,-1],[11471,11572,-1],[11473,11574,1],[11474,11575,1],[11481,11582,-1],[11489,11590,-1],[11493,11594,1],[11493,11594,1],[11496,11597,-1],[11504,11605,-1],[11515,11616,-1],[11515,11616,1],[11517,11618,-1],[11518,11619,-1],[11521,11622,1],[11523,11624,1],[11530,11631,1],[11530,11631,1],[11532,11633,-1],[11550,11651,1],[11551,11652,1],[11554,11655,1],[11555,11656,1],[11555,11656,-1],[11560,11661,1],[11565,11666,1],[11574,11675,-1],[11594,11695,1],[11616,11717,-1],[11618,11719,1],[11620,11721,1],[11622,11723,1],[11622,11723,1],[11624,11725,1],[11627,11728,1],[11630,11731,1],[11646,11747,1],[11655,11756,1],[11657,11758,-1],[11659,11760,1],[11665,11766,1],[11671,11772,-1],[11672,11773,1],[11684,11785,-1],[11693,11794,1],[11695,11796,1],[11706,11807,-1],[11707,11808,1],[11710,11811,1],[11720,11821,-1],[11724,11825,1],[11729,11830,1],[11733,11834,1],[11735,11836,1],[11735,11836,-1],[11742,11843,-1],[11774,11875,1],[11776,11877,-1],[11778,11879,1],[11778,11879,1],[11782,11883,1],[11790,11891,-1],[11798,11899,1],[11800,11901,-1],[11811,11912,1],[11814,11915,-1],[11816,11917,-1],[11818,11919,1],[11820,11921,1],[11826,11927,1],[11837,11938,-1],[11854,11955,1],[11855,11956,1],[11857,11958,1],[11858,11959,-1],[11868,11969,1],[11873,11974,1],[11881,11982,-1],[11881,11982,1],[11883,11984,-1],[11885,11986,1],[11886,11987,-1],[11889,11990,1],[11897,11998,1],[11898,11999,1],[11906,12007,1],[11912,12013,-1],[11918,12019,-1],[11920,12021,-1],[11931,12032,-1],[11938,12039,-1],[11942,12043,1],[11945,12046,1],[11950,12051,-1],[11952,12053,1],[11957,12058,-1],[11973,12074,-1],[11976,12077,-1],[11980,12081,-1],[11982,12083,1],[11982,12083,-1],[11987,12088,-1],[11996,12097,1],[11997,12098,-1],[12000,12101,1],[12016,12117,-1],[12027,12128,1],[12028,12129,1],[12028,12129,-1],[12033,12134,1],[12037,12138,1],[12037,12138,1],[12045,12146,1],[12047,12148,-1],[12049,12150,-1],[12051,12152,1],[12054,12155,-1],[12058,12159,1],[12069,12170,-1],[12074,12175,-1],[12074,12175,1],[12078,12179,1],[12078,12179,1],[12083,12184,1],[12086,12187,1],[12092,12193,1],[12095,12196,1],[12102,12203,-1],[12104,12205,1],[12106,12207,-1],[12108,12209,-1],[12109,12210,1],[12114,12215,-1],[12116,12217,1],[12117,12218,-1],[12117,12218,-1],[12120,12221,1],[12133,12234,-1],[12134,12235,1],[12153,12254,1],[12154,12255,1],[12164,12265,-1],[12190,12291,1],[12196,12297,1],[12199,12300,-1],[12213,12314,-1],[12236,12337,-1],[12236,12337,-1],[12247,12348,-1],[12256,12357,-1],[12257,12358,-1],[12260,12361,1],[12263,12364,-1],[12265,12366,-1],[12269,12370,-1],[12271,12372,-1],[12275,12376,1],[12275,12376,1],[12287,12388,-1],[12289,12390,-1],[12291,12392,-1],[12300,12401,1],[12307,12408,-1],[12313,12414,1],[12314,12415,1],[12320,12421,-1],[12326,12427,1],[12327,12428,-1],[12329,12430,-1],[12331,12432,1],[12332,12433,1],[12336,12437,1],[12337,12438,-1],[12341,12442,1],[12346,12447,-1],[12347,12448,1],[12348,12449,-1],[12349,12450,1],[12357,12458,-1],[12365,12466,1],[12367,12468,1],[12373,12474,1],[12375,12476,1],[12377,12478,-1],[12378,12479,-1],[12383,12484,-1],[12384,12485,-1],[12387,12488,-1],[12387,12488,-1],[12390,12491,1],[12406,12507,1],[12406,12507,-1],[12419,12520,-1],[12435,12536,1],[12440,12541,-1],[12446,12547,-1],[12450,12551,1],[12452,12553,-1],[12452,12553,1],[12459,12560,1],[12459,12560,1],[12462,12563,1],[12463,12564,1],[12466,12567,1],[12466,12567,1],[12467,12568,-1],[12478,12579,-1],[12479,12580,1],[12483,12584,-1],[12486,12587,-1],[12491,12592,1],[12502,12603,-1],[12503,12604,-1],[12508,12609,1],[12515,12616,-1],[12517,12618,-1],[12525,12626,-1],[12526,12627,-1],[12527,12628,-1],[12529,12630,1],[12533,12634,-1],[12533,12634,1],[12542,12643,-1],[12546,12647,1],[12546,12647,-1],[12551,12652,-1],[12561,12662,-1],[12575,12676,-1],[12577,12678,1],[12579,12680,-1],[12582,12683,-1],[12589,12690,1],[12592,12693,-1],[12593,12694,-1],[12594,12695,1],[12598,12699,-1],[12604,12705,-1],[12604,12705,1],[12619,12720,-1],[12637,12738,1],[12643,12744,-1],[12649,12750,1],[12653,12754,-1],[12658,12759,-1],[12664,12765,-1],[12668,12769,-1],[12673,12774,-1],[12675,12776,1],[12683,12784,1],[12685,12786,-1],[12687,12788,-1],[12694,12795,-1],[12701,12802,1],[12701,12802,1],[12704,12805,1],[12708,12809,-1],[12709,12810,1],[12713,12814,1],[12713,12814,1],[12732,12833,1],[12734,12835,1],[12737,12838,1],[12743,12844,1],[12749,12850,-1],[12755,12856,-1],[12762,12863,-1],[12763,12864,1],[12768,12869,1],[12771,12872,1],[12771,12872,1],[12771,12872,-1],[12773,12874,1],[12779,12880,1],[12780,12881,-1],[12782,12883,-1],[12789,12890,1],[12795,12896,1],[12801,12902,-1],[12808,12909,-1],[12808,12909,-1],[12814,12915,-1],[12829,12930,-1],[12841,12942,1],[12843,12944,-1],[12845,12946,-1],[12848,12949,-1],[12850,12951,-1],[12852,12953,1],[12854,12955,-1],[12856,12957,1],[12857,12958,1],[12863,12964,-1],[12863,12964,1],[12867,12968,-1],[12869,12970,-1],[12872,12973,1],[12873,12974,-1],[12882,12983,1],[12890,12991,1],[12893,12994,-1],[12895,12996,-1],[12896,12997,1],[12900,13001,1],[12902,13003,-1],[12909,13010,-1],[12911,13012,1],[12914,13015,-1],[12914,13015,1],[12921,13022,1],[12926,13027,1],[12931,13032,1],[12941,13042,-1],[12941,13042,1],[12954,13055,-1],[12957,13058,1],[12964,13065,1],[12968,13069,-1],[12968,13069,-1],[12975,13076,-1],[12976,13077,1],[12982,13083,-1],[12985,13086,-1],[12987,13088,1],[12995,13096,-1],[13003,13104,1],[13005,13106,1],[13006,13107,1],[13006,13107,-1],[13009,13110,1],[13016,13117,1],[13017,13118,1],[13018,13119,-1],[13019,13120,1],[13019,13120,-1],[13020,13121,1],[13022,13123,1],[13022,13123,1],[13028,13129,-1],[13030,13131,-1],[13037,13138,1],[13039,13140,1],[13042,13143,1],[13046,13147,1],[13063,13164,1],[13067,13168,-1],[13074,13175,-1],[13075,13176,-1],[13080,13181,1],[13081,13182,-1],[13083,13184,-1],[13088,13189,1],[13097,13198,1],[13099,13200,1],[13100,13201,-1],[13103,13204,1],[13104,13205,-1],[13109,13210,-1],[13111,13212,-1],[13120,13221,1],[13123,13224,1],[13125,13226,1],[13127,13228,-1],[13128,13229,-1],[13129,13230,1],[13134,13235,-1],[13135,13236,-1],[13138,13239,-1],[13154,13255,-1],[13160,13261,-1],[13163,13264,-1],[13168,13269,-1],[13172,13273,1],[13173,13274,1],[13180,13281,1],[13181,13282,-1],[13186,13287,1],[13203,13304,1],[13206,13307,-1],[13207,13308,-1],[13209,13310,-1],[13210,13311,-1],[13216,13317,-1],[13216,13317,-1],[13232,13333,-1],[13241,13342,-1],[13261,13362,-1],[13272,13373,-1],[13275,13376,1],[13281,13382,-1],[13285,13386,1],[13288,13389,1],[13293,13394,-1],[13305,13406,-1],[13313,13414,-1],[13315,13416,-1],[13317,13418,1],[13329,13430,1],[13329,13430,1],[13333,13434,-1],[13335,13436,1],[13335,13436,1],[13338,13439,1],[13339,13440,-1],[13340,13441,1],[13341,13442,1],[13344,13445,-1],[13349,13450,1],[13351,13452,1],[13358,13459,1],[13358,13459,-1],[13382,13483,-1],[13387,13488,-1],[13391,13492,-1],[13394,13495,-1],[13415,13516,-1],[13417,13518,-1],[13424,13525,-1],[13439,13540,1],[13443,13544,1],[13446,13547,-1],[13446,13547,1],[13447,13548,1],[13452,13553,-1],[13455,13556,-1],[13458,13559,1],[13458,13559,1],[13460,13561,-1],[13460,13561,1],[13465,13566,-1],[13466,13567,-1],[13467,13568,1],[13470,13571,1],[13475,13576,1],[13477,13578,1],[13479,13580,-1],[13496,13597,1],[13515,13616,-1],[13515,13616,-1],[13517,13618,1],[13523,13624,-1],[13540,13641,-1],[13542,13643,-1],[13542,13643,1],[13545,13646,1],[13550,13651,-1],[13553,13654,-1],[13561,13662,-1],[13562,13662,1],[13563,13664,1],[13565,13666,-1],[13565,13666,-1],[13567,13668,1],[13568,13668,1],[13568,13668,-1],[13576,13677,-1],[13576,13677,1],[13592,13692,-1],[13617,13718,-1],[13630,13730,-1],[13636,13736,1],[13648,13749,-1],[13657,13758,1],[13660,13761,1],[13663,13764,1],[13665,13766,1],[13668,13769,1],[13672,13773,1],[13677,13778,1],[13679,13780,-1],[13682,13783,1],[13684,13785,-1],[13690,13791,1],[13696,13797,1],[13701,13802,1],[13708,13809,1],[13718,13819,-1],[13721,13822,-1],[13728,13829,-1],[13734,13835,-1],[13736,13837,-1],[13736,13837,-1],[13742,13843,1],[13754,13855,1],[13755,13856,1],[13760,13861,1],[13764,13865,-1],[13766,13867,-1],[13770,13871,-1],[13771,13872,1],[13779,13880,-1],[13784,13885,1],[13796,13897,1],[13797,13898,-1],[13798,13899,-1],[13799,13900,1],[13801,13902,-1],[13807,13908,-1],[13807,13908,1],[13816,13917,1],[13820,13921,-1],[13821,13922,-1],[13823,13924,1],[13826,13927,-1],[13830,13931,1],[13842,13943,1],[13846,13947,-1],[13849,13950,1],[13852,13953,1],[13855,13956,-1],[13864,13965,-1],[13889,13990,-1],[13891,13992,1],[13893,13994,1],[13904,14005,1],[13906,14007,-1],[13910,14011,-1],[13913,14014,-1],[13916,14017,-1],[13916,14017,-1],[13920,14021,1],[13921,14022,-1],[13926,14027,-1],[13937,14038,-1],[13939,14040,-1],[13942,14043,1],[13942,14043,-1],[13948,14049,-1],[13948,14049,1],[13948,14049,-1],[13950,14051,1],[13957,14058,-1],[13958,14059,1],[13960,14061,-1],[13961,14062,1],[13967,14068,1],[13970,14071,1],[13972,14073,1],[13979,14080,1],[13980,14081,1],[13984,14085,-1],[13984,14085,-1],[13988,14089,-1],[13990,14091,1],[13993,14094,-1],[13996,14097,-1],[13997,14098,1],[14000,14101,1],[14003,14104,-1],[14012,14113,-1],[14013,14114,1],[14016,14117,-1],[14028,14129,1],[14029,14130,1],[14048,14149,1],[14050,14151,-1],[14051,14152,-1],[14064,14165,1],[14066,14167,1],[14074,14175,-1],[14082,14183,1],[14087,14188,1],[14089,14190,-1],[14111,14212,-1],[14112,14213,1],[14116,14217,1],[14133,14234,-1],[14134,14235,-1],[14134,14235,-1],[14141,14242,1],[14152,14253,1],[14158,14259,1,[[14158,14258,1]]],[14159,14259,-1],[14161,14262,1],[14162,14263,1],[14178,14278,1],[14179,14279,-1],[14182,14283,-1],[14183,14283,1],[14192,14292,1],[14193,14293,1],[14201,14301,-1],[14206,14306,-1],[14215,14316,1],[14218,14319,1],[14219,14320,-1],[14230,14331,-1],[14231,14331,-1],[14238,14339,-1],[14240,14340,-1],[14244,14345,-1],[14251,14352,-1],[14257,14358,1],[14262,14363,1],[14280,14381,1],[14280,14381,-1],[14285,14386,1],[14302,14403,-1],[14308,14409,1],[14317,14418,1],[14323,14424,1],[14326,14427,1],[14327,14428,1],[14339,14440,-1],[14339,14440,-1],[14361,14462,-1],[14362,14463,-1],[14367,14468,-1],[14370,14471,-1],[14373,14474,-1],[14387,14488,1],[14397,14498,-1],[14401,14502,-1],[14404,14505,-1],[14407,14508,1],[14411,14512,1],[14412,14513,-1],[14416,14517,1],[14418,14519,-1],[14418,14519,-1],[14422,14523,-1],[14425,14526,-1],[14431,14532,1],[14432,14533,-1],[14433,14534,-1],[14444,14545,1],[14448,14549,1],[14470,14571,-1],[14473,14574,1],[14476,14577,-1],[14479,14580,1],[14490,14591,-1],[14491,14592,1],[14492,14593,-1],[14494,14595,-1],[14495,14596,-1],[14501,14602,-1],[14505,14606,-1],[14520,14621,1],[14521,14622,1],[14522,14623,-1],[14526,14627,-1],[14526,14627,1],[14527,14628,1],[14531,14632,1],[14534,14635,1],[14542,14643,-1],[14544,14645,-1],[14547,14648,-1],[14556,14657,1],[14562,14663,1],[14574,14675,-1],[14575,14676,-1],[14588,14689,1],[14592,14693,-1],[14597,14698,-1],[14607,14708,1],[14613,14714,-1],[14621,14722,1],[14627,14728,1],[14627,14728,-1],[14638,14739,1],[14641,14742,1],[14654,14755,-1],[14656,14757,1],[14657,14758,1],[14658,14759,-1],[14664,14765,-1],[14664,14765,1],[14666,14767,1],[14667,14768,-1],[14674,14775,-1],[14675,14776,-1],[14678,14779,-1],[14681,14782,1],[14695,14796,1],[14695,14796,-1],[14695,14796,-1],[14702,14803,1],[14707,14808,1],[14708,14809,1],[14712,14813,-1],[14716,14817,-1],[14716,14817,1],[14719,14820,1],[14724,14825,1],[14727,14828,1],[14731,14832,1],[14732,14833,-1],[14738,14839,-1],[14754,14855,1],[14759,14860,-1],[14759,14860,-1],[14759,14860,1],[14769,14870,-1],[14769,14870,1],[14769,14870,1],[14792,14893,-1],[14795,14896,1],[14801,14902,-1],[14808,14909,1],[14808,14909,-1],[14819,14920,1],[14826,14927,-1],[14828,14929,1],[14829,14930,-1],[14844,14945,-1],[14852,14953,-1],[14854,14955,-1],[14854,14955,1],[14854,14955,-1],[14856,14957,1],[14860,14961,-1],[14865,14966,-1],[14867,14968,1],[14869,14970,1],[14873,14974,1],[14875,14976,1],[14878,14979,-1],[14879,14980,1],[14879,14980,1],[14879,14980,1],[14886,14987,-1],[14901,15002,1],[14906,15007,-1],[14908,15009,-1],[14909,15010,1],[14925,15026,-1],[14937,15038,1],[14938,15039,-1],[14941,15042,1],[14951,15052,-1],[14952,15053,-1],[14955,15056,1],[14955,15056,1],[14958,15059,-1],[14974,15075,-1],[14974,15075,1],[14976,15077,1],[14988,15089,-1],[14988,15089,-1],[14997,15098,-1],[15007,15108,1],[15016,15117,-1],[15019,15120,-1],[15038,15139,-1],[15039,15140,-1],[15046,15147,1],[15053,15154,1],[15062,15163,-1],[15071,15171,1],[15078,15178,1],[15079,15179,1],[15082,15182,-1],[15084,15184,-1],[15091,15191,-1],[15104,15204,1],[15113,15213,1],[15114,15214,1],[15128,15228,1],[15135,15235,-1],[15136,15236,1],[15138,15238,1],[15139,15239,1],[15140,15240,-1],[15145,15245,1],[15152,15252,-1],[15154,15254,1],[15154,15254,1],[15156,15256,-1],[15164,15265,-1],[15165,15266,-1],[15168,15269,1],[15171,15272,-1],[15172,15273,-1],[15173,15274,1],[15173,15274,-1],[15174,15275,-1],[15175,15276,-1],[15181,15282,-1],[15190,15291,1],[15195,15296,-1],[15196,15297,1],[15197,15298,-1],[15197,15298,-1],[15204,15305,-1],[15205,15306,1],[15219,15320,1],[15219,15320,-1],[15227,15328,1],[15233,15334,-1],[15236,15337,-1],[15242,15343,1],[15256,15357,-1],[15260,15361,1],[15261,15362,1],[15277,15378,-1],[15277,15378,-1],[15287,15388,1],[15288,15389,-1],[15293,15394,1],[15298,15399,1],[15311,15412,-1],[15314,15415,-1],[15317,15418,-1],[15318,15419,1],[15326,15427,-1],[15328,15429,1],[15329,15430,-1],[15331,15432,1],[15331,15432,1],[15347,15448,1],[15351,15452,-1],[15359,15460,-1],[15367,15468,-1],[15367,15468,1],[15368,15469,1],[15372,15473,-1],[15373,15474,-1],[15375,15476,1],[15380,15481,1],[15383,15484,-1],[15388,15489,-1],[15411,15512,1],[15419,15520,1],[15428,15529,1],[15431,15532,-1],[15447,15548,-1],[15452,15553,-1],[15459,15560,-1],[15462,15563,-1],[15473,15574,1],[15477,15578,-1],[15490,15591,-1],[15494,15595,-1],[15501,15602,-1],[15506,15607,1],[15514,15615,-1],[15526,15627,-1],[15529,15630,1],[15537,15638,-1],[15538,15639,1],[15547,15648,1],[15552,15653,-1],[15554,15655,1],[15559,15660,-1],[15559,15660,1],[15564,15665,1],[15566,15667,-1],[15569,15670,-1],[15569,15670,-1],[15574,15675,-1],[15576,15677,-1],[15583,15684,1],[15588,15689,-1],[15588,15689,-1],[15603,15704,-1],[15624,15725,1],[15633,15734,1],[15640,15741,-1],[15646,15747,-1],[15652,15753,1],[15655,15756,1],[15656,15757,-1],[15671,15772,-1],[15674,15775,-1],[15689,15790,1],[15695,15796,1],[15699,15800,1],[15701,15802,1],[15709,15810,1],[15712,15813,-1],[15714,15815,1],[15723,15824,-1],[15727,15828,1],[15730,15831,1],[15730,15831,1],[15742,15843,-1],[15749,15850,-1],[15756,15857,-1],[15770,15871,-1],[15772,15873,-1],[15774,15875,1],[15778,15879,1],[15785,15886,1],[15791,15892,-1],[15792,15893,1],[15802,15903,1],[15803,15904,-1],[15805,15906,1],[15809,15910,1],[15809,15910,1],[15821,15922,-1],[15828,15929,-1],[15840,15941,1],[15842,15943,1],[15848,15949,-1],[15852,15953,-1],[15855,15956,-1],[15863,15964,-1],[15864,15965,1],[15866,15967,-1],[15870,15971,1],[15878,15979,1],[15882,15983,-1],[15899,16000,-1],[15904,16005,1],[15909,16010,1],[15913,16014,1],[15931,16032,-1],[15939,16040,1],[15982,16083,1],[15988,16089,1],[15995,16096,1],[16010,16111,-1],[16011,16112,1],[16023,16124,1],[16024,16125,1],[16024,16125,-1],[16030,16131,1],[16033,16134,1],[16050,16151,1],[16061,16162,1],[16063,16164,1],[16063,16164,-1],[16066,16167,-1],[16066,16167,1],[16066,16167,-1],[16076,16177,1],[16079,16180,1],[16081,16182,1],[16093,16194,-1],[16096,16197,-1],[16097,16198,-1],[16097,16198,1],[16105,16206,1],[16107,16208,1],[16108,16209,-1],[16111,16212,1],[16126,16227,1],[16127,16228,1],[16127,16228,1],[16129,16230,-1],[16156,16257,-1],[16168,16269,1],[16170,16271,1],[16172,16273,1],[16175,16276,-1],[16178,16279,1],[16181,16282,1],[16182,16283,1],[16183,16284,-1],[16184,16285,-1],[16193,16294,-1],[16197,16298,-1],[16200,16301,1],[16205,16306,1],[16216,16317,-1],[16228,16329,-1],[16231,16332,1],[16242,16343,-1],[16249,16350,1],[16254,16355,-1],[16257,16358,-1],[16263,16364,1],[16265,16366,-1],[16269,16370,1],[16269,16370,1],[16272,16373,-1],[16273,16374,1],[16273,16374,1],[16275,16376,-1],[16288,16389,1],[16295,16396,-1],[16297,16398,1],[16313,16414,-1],[16320,16421,1],[16325,16426,1],[16327,16428,-1],[16342,16443,1],[16342,16443,1],[16346,16447,-1],[16351,16452,1],[16354,16455,-1],[16355,16456,-1],[16371,16472,-1],[16376,16477,-1],[16379,16480,1],[16379,16480,-1],[16379,16480,-1],[16392,16493,-1],[16394,16495,1],[16398,16499,1],[16402,16503,1],[16403,16504,-1],[16406,16507,-1],[16408,16509,-1],[16410,16511,1],[16426,16527,1],[16429,16530,1],[16433,16534,-1],[16435,16536,1],[16438,16539,1],[16459,16560,1],[16466,16567,1],[16471,16572,1],[16484,16585,1],[16488,16589,-1],[16494,16595,1],[16495,16596,1],[16496,16597,-1],[16497,16598,1],[16499,16600,1],[16503,16604,1],[16505,16606,1],[16510,16611,1],[16512,16613,1],[16516,16617,-1],[16522,16623,-1],[16534,16635,-1],[16537,16638,-1],[16538,16639,-1],[16545,16646,-1],[16548,16649,1],[16550,16651,-1],[16564,16665,1],[16564,16665,1],[16572,16673,-1],[16574,16675,1],[16575,16676,-1],[16579,16680,-1],[16581,16682,-1],[16584,16685,-1],[16584,16685,-1],[16591,16692,1],[16597,16698,-1],[16601,16702,-1],[16610,16711,1],[16614,16715,1],[16620,16721,-1],[16621,16722,-1],[16623,16724,1],[16624,16725,1],[16632,16733,-1],[16642,16743,-1],[16647,16748,1],[16654,16755,1],[16660,16761,-1],[16660,16761,-1],[16662,16763,1],[16666,16767,1],[16667,16768,-1],[16667,16768,1],[16678,16779,-1],[16678,16779,1],[16691,16792,-1],[16694,16795,1],[16700,16801,-1],[16701,16802,1],[16702,16803,1],[16707,16808,1],[16708,16809,-1],[16709,16810,1],[16711,16812,1],[16712,16813,-1],[16720,16821,1],[16725,16826,-1],[16728,16829,1],[16737,16838,-1],[16746,16847,1],[16750,16851,1],[16753,16854,1],[16753,16854,-1],[16754,16855,1],[16755,16856,1],[16761,16862,-1],[16766,16867,-1],[16766,16867,1],[16772,16873,-1],[16772,16873,-1],[16789,16890,1],[16796,16897,1],[16807,16908,-1],[16807,16908,-1],[16820,16921,-1],[16822,16923,-1],[16827,16928,1],[16830,16931,1],[16834,16935,-1],[16836,16937,-1],[16845,16946,1],[16858,16959,-1],[16859,16960,-1],[16872,16973,1],[16884,16985,1],[16889,16990,-1],[16892,16993,1],[16906,17007,-1],[16909,17010,-1],[16909,17010,-1],[16923,17024,-1],[16930,17031,-1],[16937,17038,1],[16944,17045,1],[16945,17046,1],[16948,17049,1],[16956,17057,1],[16962,17063,-1],[16976,17077,1],[16987,17088,1],[16989,17090,1],[16991,17092,-1],[16993,17094,-1],[17003,17104,1],[17003,17104,1],[17004,17105,-1],[17019,17120,-1],[17022,17123,1],[17025,17126,1],[17029,17130,-1],[17030,17131,1],[17036,17137,-1],[17036,17137,-1],[17036,17137,1],[17040,17141,-1],[17048,17149,-1],[17049,17150,-1],[17051,17152,-1]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-1.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-1.json
new file mode 100644
index 0000000000..55ed618f04
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-1.json
@@ -0,0 +1 @@
+[[17055,17156,-1],[17057,17158,-1],[17078,17179,-1],[17095,17196,-1],[17097,17198,-1],[17103,17204,1],[17111,17212,1],[17113,17214,-1],[17115,17216,1],[17131,17232,1],[17133,17234,1],[17134,17235,1],[17140,17241,-1],[17141,17242,-1],[17143,17244,1],[17148,17249,1],[17151,17252,-1],[17152,17253,-1],[17155,17256,-1],[17165,17266,-1],[17176,17277,-1],[17179,17280,1],[17184,17285,1],[17192,17293,-1],[17202,17303,1],[17203,17304,1],[17203,17304,1],[17219,17320,1],[17227,17328,-1],[17229,17330,-1],[17240,17341,1],[17246,17347,1],[17254,17355,-1],[17260,17361,1],[17264,17365,1],[17268,17369,1],[17273,17374,1],[17277,17378,-1],[17277,17378,1],[17280,17381,1],[17283,17384,-1],[17287,17388,1],[17299,17400,-1],[17303,17404,1],[17311,17412,1],[17311,17412,-1],[17312,17413,-1],[17322,17423,-1],[17325,17426,1],[17326,17427,1],[17328,17429,1],[17339,17440,1],[17347,17448,-1],[17348,17449,1],[17352,17453,1],[17356,17457,1],[17371,17472,1],[17382,17483,1],[17390,17491,-1],[17402,17503,-1],[17412,17513,1],[17413,17514,-1],[17417,17518,1],[17432,17533,-1],[17434,17535,1],[17451,17552,-1],[17455,17556,-1],[17456,17557,1],[17477,17578,-1],[17486,17587,1],[17502,17603,-1],[17502,17603,-1],[17512,17613,1],[17517,17618,-1],[17519,17620,-1],[17519,17620,1],[17537,17638,1],[17538,17639,1],[17540,17641,-1],[17546,17647,-1],[17547,17648,1],[17548,17649,-1],[17554,17655,1],[17555,17656,1],[17564,17665,-1],[17575,17676,-1],[17590,17691,1],[17604,17705,-1],[17606,17707,1],[17609,17710,1],[17614,17715,-1],[17620,17721,-1],[17644,17745,1],[17644,17745,1],[17645,17746,1],[17647,17748,1],[17648,17749,1],[17660,17761,1],[17661,17762,1],[17662,17763,1],[17663,17764,-1],[17664,17765,1],[17667,17768,1],[17670,17771,1],[17673,17774,-1],[17675,17776,-1],[17675,17776,-1],[17684,17785,1],[17689,17790,-1],[17693,17794,1],[17696,17797,-1],[17697,17798,1],[17706,17807,1],[17735,17836,1],[17736,17837,-1],[17741,17842,-1],[17741,17842,1],[17744,17845,-1],[17746,17847,-1],[17746,17847,1],[17750,17851,1],[17760,17861,1],[17767,17868,1],[17768,17869,-1],[17769,17870,-1],[17770,17871,1],[17779,17880,1],[17780,17881,-1],[17784,17885,-1],[17794,17895,-1],[17796,17897,1],[17797,17898,1],[17822,17923,-1],[17823,17924,-1],[17824,17925,1],[17826,17927,-1],[17827,17928,-1],[17857,17958,1],[17860,17961,-1],[17880,17981,-1],[17884,17985,1],[17896,17997,1],[17919,18020,-1],[17924,18025,1],[17929,18030,-1],[17936,18037,1],[17942,18043,-1],[17948,18049,1],[17949,18050,-1],[17955,18056,-1],[17956,18057,1],[17963,18064,1],[17969,18070,1],[17975,18076,-1],[17977,18078,1],[17978,18079,-1],[17984,18085,1],[17987,18088,-1],[17994,18095,-1],[18002,18103,-1],[18012,18113,-1],[18014,18115,-1],[18014,18115,1],[18015,18116,-1],[18020,18121,1],[18029,18130,-1],[18034,18135,-1],[18043,18144,-1],[18052,18153,1],[18065,18166,1],[18070,18171,1],[18072,18173,1],[18084,18185,-1],[18088,18189,-1],[18092,18193,-1],[18098,18199,-1],[18102,18203,1],[18108,18209,1],[18111,18212,1],[18116,18217,1],[18122,18223,1],[18135,18236,1],[18140,18241,1],[18140,18241,1],[18140,18241,-1],[18145,18246,-1],[18145,18246,-1],[18146,18247,1],[18147,18248,-1],[18150,18251,1],[18155,18256,1],[18163,18264,1],[18166,18267,-1],[18173,18274,-1],[18175,18276,-1],[18180,18281,-1],[18182,18283,-1],[18185,18286,-1],[18196,18297,-1],[18203,18304,-1],[18206,18307,-1],[18207,18308,-1],[18210,18311,1],[18211,18312,-1],[18214,18315,-1],[18218,18319,-1],[18221,18322,-1],[18225,18326,-1],[18233,18334,1],[18234,18335,-1],[18235,18336,-1],[18248,18349,1],[18249,18350,-1],[18251,18352,1],[18252,18353,1],[18262,18363,-1],[18263,18364,1],[18268,18369,1],[18269,18370,1],[18280,18381,1],[18285,18386,1],[18286,18387,1],[18297,18398,-1],[18297,18398,1],[18298,18399,-1],[18300,18401,-1],[18309,18410,1],[18311,18412,-1],[18312,18413,1],[18320,18421,1],[18321,18422,-1],[18321,18422,-1],[18345,18446,1],[18356,18457,-1],[18363,18464,-1],[18364,18465,-1],[18366,18467,-1],[18371,18472,1],[18382,18483,-1],[18382,18483,1],[18383,18484,-1],[18385,18486,1],[18386,18487,1],[18411,18512,-1],[18411,18512,-1],[18422,18523,1],[18425,18526,-1],[18431,18532,1],[18437,18538,-1],[18437,18538,1],[18439,18540,-1],[18443,18544,-1],[18453,18554,-1],[18454,18555,1],[18461,18562,1],[18478,18579,-1],[18482,18583,-1],[18483,18584,1],[18488,18589,1],[18490,18591,1],[18509,18610,-1],[18510,18611,1],[18510,18611,-1],[18511,18612,1],[18528,18629,1],[18529,18630,1],[18535,18636,1],[18547,18648,1],[18548,18649,1],[18548,18649,-1],[18550,18651,1],[18550,18651,-1],[18555,18656,-1],[18565,18666,1],[18571,18672,1],[18577,18678,1],[18579,18680,1],[18580,18681,1],[18582,18683,-1],[18584,18685,-1],[18589,18690,1],[18590,18691,1],[18594,18695,-1],[18602,18703,1],[18611,18712,-1],[18614,18715,-1],[18618,18719,-1],[18629,18730,-1],[18636,18737,1],[18649,18750,1],[18649,18750,1],[18652,18753,-1],[18655,18756,1],[18659,18760,1],[18665,18766,-1],[18666,18767,1],[18680,18781,-1],[18684,18785,-1],[18688,18789,1],[18698,18799,1],[18701,18802,1],[18701,18802,1],[18702,18803,-1],[18704,18805,-1],[18704,18805,-1],[18710,18811,-1],[18724,18825,-1],[18727,18828,1],[18730,18831,1],[18736,18837,1],[18742,18843,-1],[18743,18844,1],[18748,18849,-1],[18751,18852,-1],[18752,18853,1],[18752,18853,1],[18763,18864,-1],[18763,18864,-1],[18766,18867,-1],[18778,18879,1],[18782,18883,1],[18794,18895,1],[18796,18897,1],[18797,18898,-1],[18800,18901,1],[18802,18903,-1],[18814,18915,-1],[18817,18918,-1],[18820,18921,1],[18829,18930,-1],[18831,18932,1],[18831,18932,1],[18835,18936,1],[18840,18941,-1],[18843,18944,1],[18845,18946,-1],[18848,18949,-1],[18850,18951,-1],[18851,18952,1],[18856,18957,-1],[18860,18961,1],[18863,18964,-1],[18866,18967,1],[18879,18980,-1],[18882,18983,1],[18882,18983,-1],[18887,18988,-1],[18890,18991,1],[18890,18991,-1],[18896,18997,-1],[18899,19000,-1],[18900,19001,-1],[18913,19014,-1],[18919,19020,1],[18922,19023,-1],[18923,19024,1],[18929,19030,1],[18929,19030,1],[18934,19035,1],[18950,19051,-1],[18950,19051,1],[18954,19055,1],[18985,19086,1],[18989,19090,1],[18992,19093,-1],[18999,19100,-1],[19002,19103,1],[19004,19105,-1],[19005,19106,1],[19013,19114,-1],[19021,19122,1],[19025,19126,1],[19050,19151,-1],[19051,19152,-1],[19059,19160,-1],[19063,19164,-1],[19074,19175,-1],[19078,19179,-1],[19084,19185,1],[19087,19188,1],[19088,19189,1],[19092,19193,1],[19100,19201,-1],[19102,19203,1],[19119,19220,-1],[19120,19221,1],[19121,19222,1],[19125,19226,1],[19128,19229,1],[19132,19233,1],[19135,19236,-1],[19135,19236,-1],[19151,19252,-1],[19161,19262,1],[19165,19266,1],[19176,19277,-1],[19187,19288,-1],[19190,19291,1],[19200,19301,-1],[19208,19309,-1],[19210,19311,1],[19220,19321,1],[19231,19332,1],[19239,19340,1],[19244,19345,1],[19249,19350,1],[19256,19357,-1],[19261,19362,1],[19266,19367,1],[19279,19380,1],[19283,19384,-1],[19298,19399,1],[19300,19401,-1],[19302,19403,1],[19315,19416,1],[19318,19419,1],[19319,19420,1],[19320,19421,1],[19320,19421,-1],[19326,19427,1],[19334,19435,1],[19339,19440,-1],[19353,19454,1],[19354,19455,-1],[19368,19469,-1],[19368,19469,-1],[19374,19475,-1],[19383,19484,-1],[19388,19489,1],[19402,19503,1],[19405,19506,-1],[19412,19513,-1],[19415,19516,-1],[19416,19517,1],[19418,19519,1],[19438,19539,1],[19441,19542,1],[19452,19553,-1],[19463,19564,-1],[19477,19578,-1],[19483,19584,-1],[19484,19585,1],[19494,19595,1],[19499,19600,1],[19500,19601,-1],[19501,19602,1],[19506,19607,1],[19506,19607,1],[19511,19612,1],[19523,19624,-1],[19526,19627,1],[19534,19635,1],[19538,19639,-1],[19545,19646,1],[19557,19658,-1],[19559,19660,-1],[19560,19661,-1],[19567,19668,-1],[19575,19676,1],[19581,19682,1],[19591,19692,-1],[19591,19692,-1],[19593,19694,1],[19594,19695,-1],[19595,19696,1],[19609,19710,1],[19610,19711,1],[19612,19713,1],[19619,19720,-1],[19623,19724,-1],[19628,19729,-1],[19635,19736,-1],[19638,19739,-1],[19641,19742,-1],[19649,19750,1],[19649,19750,1],[19652,19753,-1],[19659,19760,1],[19663,19764,-1],[19672,19773,1],[19672,19773,1],[19678,19779,1],[19687,19788,-1],[19688,19789,-1],[19695,19796,-1],[19698,19799,1],[19699,19800,1],[19708,19809,1],[19713,19814,-1],[19714,19815,1],[19715,19816,1],[19718,19819,-1],[19718,19819,-1],[19732,19833,1],[19776,19877,-1],[19781,19882,-1],[19782,19883,1],[19783,19884,-1],[19783,19884,-1],[19787,19888,-1],[19817,19918,1],[19819,19920,1],[19821,19924,-1],[19823,19924,-1],[19829,19930,1],[19832,19933,-1],[19834,19937,1],[19837,19940,-1],[19841,19944,-1],[19841,19944,1],[19849,19950,-1],[19850,19953,1],[19854,19955,-1],[19856,19957,1],[19861,19962,1],[19862,19965,-1],[19867,19968,-1],[19872,19973,1],[19884,19985,1],[19893,19994,-1],[19902,20003,1],[19911,20012,1],[19912,20013,1],[19914,20015,1],[19917,20018,1],[19928,20029,-1],[19929,20030,1],[19936,20037,-1],[19940,20041,1],[19947,20048,-1],[19947,20048,-1],[19948,20049,-1],[19954,20055,-1],[19957,20058,-1],[19960,20061,1],[19962,20063,-1],[19975,20076,-1],[19986,20087,1],[19999,20100,1],[20010,20111,1],[20016,20117,1],[20016,20117,1],[20022,20123,-1],[20032,20133,-1],[20035,20136,-1],[20044,20145,-1],[20051,20152,1],[20056,20157,-1],[20057,20158,1],[20057,20158,-1],[20058,20159,-1],[20059,20160,1],[20066,20167,-1],[20074,20175,1],[20074,20175,1],[20103,20204,-1],[20106,20207,-1],[20109,20210,-1],[20117,20218,1],[20119,20220,-1],[20120,20221,-1],[20120,20221,1],[20127,20228,-1],[20136,20237,1],[20138,20239,1],[20138,20239,-1],[20138,20239,1],[20140,20241,-1],[20141,20242,-1],[20144,20245,1],[20145,20246,-1],[20158,20259,1],[20167,20268,1],[20171,20272,1],[20175,20276,1],[20180,20281,1],[20188,20289,-1],[20195,20296,1],[20196,20297,1],[20207,20308,1],[20213,20314,1],[20216,20317,1],[20219,20320,-1],[20231,20332,-1],[20236,20337,1],[20238,20339,1],[20240,20341,-1],[20246,20347,-1],[20252,20353,-1],[20252,20353,-1],[20256,20357,-1],[20258,20359,-1],[20258,20359,1],[20262,20363,1],[20265,20366,-1],[20266,20367,-1],[20270,20371,-1],[20273,20374,-1],[20274,20375,-1],[20274,20375,1],[20274,20375,-1],[20279,20380,1],[20297,20398,1],[20297,20398,-1],[20301,20402,-1],[20312,20413,-1],[20318,20419,1],[20335,20436,-1],[20336,20437,-1],[20341,20442,1],[20342,20443,1],[20343,20444,1],[20352,20453,-1],[20352,20453,-1],[20353,20454,-1],[20356,20457,-1],[20358,20459,-1],[20369,20470,-1],[20378,20479,-1],[20388,20489,1],[20396,20497,1],[20399,20500,1],[20399,20500,1],[20399,20500,-1],[20407,20508,-1],[20428,20529,1],[20441,20542,1],[20464,20565,-1],[20465,20566,-1],[20468,20569,-1],[20470,20571,-1],[20478,20579,-1],[20486,20587,-1],[20486,20587,-1],[20490,20591,1],[20492,20593,-1],[20508,20609,-1],[20515,20616,-1],[20518,20619,1],[20521,20622,1],[20522,20623,-1],[20528,20629,1],[20532,20633,-1],[20563,20664,1],[20564,20665,-1],[20571,20672,1],[20574,20675,-1],[20588,20689,-1],[20589,20690,1],[20592,20693,-1],[20594,20695,1],[20594,20695,1],[20595,20696,-1],[20603,20704,1],[20604,20705,-1],[20610,20711,-1],[20611,20712,-1],[20612,20713,1],[20622,20723,1],[20649,20750,1],[20653,20754,1],[20653,20754,-1],[20655,20756,-1],[20663,20764,-1],[20673,20774,1],[20681,20782,1],[20684,20785,1],[20689,20790,-1],[20694,20795,1],[20697,20798,-1],[20698,20799,1],[20698,20799,1],[20704,20805,-1],[20705,20806,1],[20708,20809,1],[20710,20811,-1],[20712,20813,1],[20750,20851,1],[20753,20854,1],[20756,20857,1],[20757,20858,1],[20758,20859,-1],[20769,20870,-1],[20771,20872,1],[20779,20880,-1],[20780,20881,1],[20780,20881,1],[20783,20884,1],[20784,20885,-1],[20788,20889,1],[20792,20893,1],[20793,20894,-1],[20797,20898,-1],[20807,20908,-1],[20807,20908,1],[20811,20912,-1],[20830,20931,1],[20836,20937,1],[20844,20945,-1],[20852,20953,1],[20856,20957,1],[20860,20961,1],[20864,20965,1],[20868,20969,-1],[20876,20977,1],[20881,20982,1],[20884,20985,-1],[20887,20988,1],[20887,20988,1],[20889,20990,1],[20890,20991,1],[20903,21004,-1],[20908,21009,1],[20910,21011,1],[20930,21031,-1],[20937,21038,1],[20938,21039,1],[20949,21050,-1],[20957,21058,-1],[20958,21059,-1],[20964,21065,-1],[20965,21066,1],[20974,21075,1],[20976,21077,-1],[20981,21082,-1],[20981,21082,-1],[20985,21086,1],[20987,21088,-1],[20994,21095,-1],[20996,21097,-1],[21016,21117,-1],[21019,21120,1],[21029,21130,1],[21033,21134,1],[21041,21142,1],[21042,21143,1],[21045,21146,-1],[21046,21147,-1],[21051,21152,1],[21051,21152,-1],[21055,21156,-1],[21059,21160,-1],[21070,21171,1],[21083,21184,-1],[21099,21200,-1],[21100,21201,1],[21102,21203,1],[21106,21207,1],[21106,21207,-1],[21118,21219,1],[21122,21223,1],[21123,21224,-1],[21123,21224,-1],[21150,21251,1],[21154,21255,1],[21160,21261,1],[21166,21267,-1],[21170,21271,-1],[21171,21272,1],[21172,21273,1],[21182,21283,1],[21187,21288,1],[21187,21288,-1],[21195,21296,-1],[21195,21296,1],[21196,21297,-1],[21197,21298,1],[21201,21302,1],[21205,21306,-1],[21212,21313,1],[21215,21316,-1],[21220,21321,-1],[21224,21325,1],[21225,21326,-1],[21233,21334,1],[21243,21344,1],[21251,21352,-1],[21258,21359,-1],[21259,21360,1],[21262,21363,1],[21272,21373,-1],[21288,21389,1],[21288,21389,-1],[21298,21399,-1],[21302,21403,-1],[21317,21418,1],[21322,21423,-1],[21330,21431,-1],[21336,21437,1],[21338,21439,-1],[21341,21442,-1],[21347,21448,1],[21348,21449,1],[21352,21453,1],[21353,21454,-1],[21355,21456,-1],[21358,21459,-1],[21367,21468,1],[21368,21469,-1],[21370,21471,1],[21371,21472,-1],[21381,21482,-1],[21388,21489,-1],[21389,21490,-1],[21400,21501,1],[21405,21506,1],[21407,21508,-1],[21407,21508,1],[21408,21509,1],[21423,21524,1],[21430,21531,-1],[21432,21533,-1],[21443,21544,1],[21446,21547,-1],[21449,21550,-1],[21453,21554,-1],[21457,21558,1],[21458,21559,-1],[21460,21561,-1],[21462,21563,-1],[21463,21564,1],[21481,21582,-1],[21501,21602,-1],[21501,21602,-1],[21511,21612,1],[21524,21625,-1],[21529,21630,-1],[21539,21640,-1],[21544,21645,1],[21546,21647,-1],[21546,21647,-1],[21547,21648,1],[21555,21656,-1],[21556,21657,-1],[21574,21675,1],[21575,21676,-1],[21577,21678,1],[21580,21681,1],[21590,21691,1],[21598,21699,1],[21615,21716,1],[21615,21716,-1],[21624,21725,-1],[21641,21742,-1],[21647,21748,1],[21650,21751,1],[21651,21752,-1],[21659,21760,-1],[21659,21760,-1],[21686,21787,1],[21686,21787,-1],[21689,21790,-1],[21692,21793,1],[21695,21796,1],[21696,21797,-1],[21700,21801,1],[21704,21805,1],[21709,21810,1],[21718,21819,1],[21724,21825,-1],[21727,21828,-1],[21731,21832,1],[21732,21833,1],[21736,21837,1],[21753,21854,1],[21761,21862,1],[21765,21866,1],[21765,21866,-1],[21766,21867,-1],[21772,21873,1],[21779,21880,-1],[21787,21888,-1],[21790,21891,1],[21794,21895,-1],[21807,21908,1],[21812,21913,1],[21817,21918,1],[21823,21924,-1],[21837,21938,1],[21840,21941,-1],[21843,21944,1],[21850,21951,-1],[21851,21952,-1],[21854,21955,-1],[21861,21962,-1],[21865,21966,-1],[21870,21971,-1],[21871,21972,-1],[21876,21977,1],[21882,21983,1],[21889,21990,1],[21889,21990,-1],[21891,21992,1],[21912,22013,1],[21923,22024,-1],[21926,22027,1],[21946,22047,1],[21947,22048,-1],[21948,22049,1],[21949,22050,1],[21950,22051,-1],[21954,22055,-1],[21955,22056,-1],[21976,22077,-1],[21977,22078,-1],[21984,22085,-1],[21990,22091,-1],[21990,22091,1],[22004,22105,-1],[22022,22123,-1],[22022,22123,-1],[22024,22125,-1],[22025,22126,1],[22026,22127,-1],[22042,22143,-1],[22042,22143,-1],[22050,22151,1],[22053,22154,1],[22058,22159,-1],[22071,22172,-1],[22072,22173,1],[22082,22183,1],[22086,22187,1],[22095,22196,-1],[22098,22199,1],[22101,22202,-1],[22101,22202,1],[22104,22205,-1],[22105,22206,-1],[22112,22213,1],[22116,22217,1],[22121,22222,1],[22124,22225,-1],[22125,22226,1],[22131,22232,-1],[22141,22242,-1],[22150,22251,1],[22153,22254,1],[22159,22260,1],[22188,22289,1],[22192,22293,1],[22196,22297,-1],[22196,22297,1],[22204,22305,-1],[22205,22306,1],[22206,22307,-1],[22208,22309,-1],[22213,22314,-1],[22215,22316,1],[22220,22321,1],[22224,22325,-1],[22224,22325,1],[22224,22325,-1],[22229,22330,-1],[22236,22337,-1],[22243,22344,-1],[22248,22349,-1],[22253,22354,-1],[22254,22355,1],[22272,22373,1],[22281,22382,1],[22285,22386,-1],[22290,22391,-1],[22302,22403,1],[22303,22404,1],[22305,22406,-1],[22315,22416,1],[22333,22434,-1],[22336,22437,1],[22337,22438,-1],[22337,22438,-1],[22339,22440,1],[22342,22443,-1],[22343,22444,-1],[22354,22455,1],[22358,22459,1],[22358,22459,1],[22367,22468,-1],[22370,22471,-1],[22384,22485,-1],[22386,22487,1],[22389,22490,1],[22391,22492,-1],[22393,22494,-1],[22395,22496,-1],[22398,22499,1],[22399,22500,-1],[22400,22501,1],[22400,22501,-1],[22404,22505,-1],[22426,22527,1],[22430,22531,1],[22432,22533,-1],[22435,22536,-1],[22448,22549,1],[22451,22552,-1],[22459,22560,-1],[22460,22561,-1],[22475,22576,-1],[22476,22577,-1],[22484,22585,1],[22484,22585,1],[22488,22589,-1],[22492,22593,1],[22493,22594,-1],[22509,22610,1],[22516,22617,-1],[22516,22617,-1],[22517,22618,-1],[22523,22624,1],[22525,22626,1],[22527,22628,1],[22534,22635,1],[22535,22636,-1],[22543,22644,1],[22547,22648,-1],[22549,22650,1],[22551,22652,1],[22560,22661,-1],[22566,22667,1],[22577,22678,1],[22579,22680,1],[22599,22700,1],[22612,22713,1],[22614,22715,1],[22615,22716,-1],[22617,22718,1],[22620,22721,1],[22623,22724,-1],[22625,22726,1],[22625,22726,1],[22626,22727,1],[22628,22729,1],[22629,22730,1],[22634,22735,-1],[22634,22735,-1],[22641,22742,1],[22643,22744,-1],[22644,22745,-1],[22645,22746,-1],[22647,22748,-1],[22650,22751,1],[22653,22754,-1],[22653,22754,1],[22654,22755,-1],[22660,22761,-1],[22661,22762,-1],[22661,22762,1],[22663,22764,-1],[22667,22768,1],[22668,22769,1],[22678,22779,1],[22679,22780,1],[22685,22786,-1],[22688,22789,1],[22689,22790,1],[22692,22793,1],[22704,22805,-1],[22705,22806,1],[22707,22808,-1],[22710,22811,-1],[22715,22816,-1],[22719,22820,-1],[22721,22822,1],[22722,22823,-1],[22724,22825,1],[22732,22833,1],[22732,22833,-1],[22733,22834,-1],[22735,22836,1],[22738,22839,-1],[22740,22841,-1],[22740,22841,-1],[22743,22844,1],[22752,22853,1],[22753,22854,-1],[22757,22858,-1],[22762,22863,-1],[22767,22868,-1],[22770,22871,-1],[22770,22871,-1],[22774,22875,-1],[22777,22878,-1],[22778,22879,-1],[22780,22881,-1],[22782,22883,-1],[22782,22883,1],[22783,22884,-1],[22786,22887,-1],[22794,22895,-1],[22797,22898,1],[22798,22899,1],[22799,22900,-1],[22801,22902,-1],[22804,22905,1],[22807,22908,-1],[22819,22920,-1],[22822,22923,-1],[22823,22924,1],[22824,22925,-1],[22827,22928,-1],[22829,22930,1],[22838,22939,1],[22846,22947,-1],[22855,22956,1],[22861,22962,-1],[22866,22967,-1],[22870,22971,1],[22873,22974,-1],[22899,23000,1],[22900,23001,1],[22906,23007,-1],[22906,23007,1],[22908,23009,-1],[22909,23010,1],[22916,23017,1],[22921,23022,-1],[22924,23025,1],[22937,23038,-1],[22941,23042,-1],[22944,23045,-1],[22945,23046,1],[22953,23054,-1],[22955,23056,1],[22955,23056,-1],[22957,23058,1],[22958,23059,-1],[22960,23061,1],[22965,23066,-1],[22968,23069,1],[22970,23071,1],[22970,23071,1],[22979,23080,1],[22987,23088,-1],[22992,23093,-1],[22997,23098,-1],[23000,23101,1],[23003,23104,-1],[23009,23110,1],[23020,23121,-1],[23021,23122,1],[23023,23124,1],[23032,23133,1],[23036,23137,1],[23045,23146,1],[23046,23147,1],[23046,23147,-1],[23053,23154,-1],[23060,23161,1],[23069,23170,1],[23073,23174,1],[23081,23182,1],[23084,23185,-1],[23088,23189,-1],[23089,23190,-1],[23104,23205,1],[23116,23217,-1],[23117,23218,1],[23125,23226,1],[23126,23227,1],[23133,23234,1],[23137,23238,1],[23146,23247,1],[23153,23254,1],[23154,23255,1],[23156,23257,-1],[23157,23258,-1],[23161,23262,-1],[23171,23272,-1],[23175,23276,-1],[23189,23290,1],[23189,23290,-1],[23189,23290,1],[23191,23292,-1],[23201,23302,-1],[23203,23304,-1],[23209,23310,1],[23211,23312,-1],[23214,23315,1],[23223,23324,-1],[23224,23325,-1],[23228,23329,1],[23228,23329,-1],[23231,23332,-1],[23234,23335,1],[23241,23342,-1],[23243,23344,1],[23244,23345,-1],[23247,23348,-1],[23249,23350,1],[23255,23356,1],[23261,23362,-1],[23263,23364,1],[23266,23367,1],[23276,23377,-1],[23292,23393,1],[23292,23393,-1],[23292,23393,-1],[23300,23401,1],[23301,23402,1],[23303,23404,1],[23304,23405,1],[23308,23409,1],[23310,23411,1],[23310,23411,1],[23314,23415,1],[23327,23428,-1],[23332,23433,1],[23333,23434,-1],[23341,23442,1],[23343,23444,-1],[23352,23453,1],[23357,23458,-1],[23360,23461,-1],[23364,23465,1],[23364,23465,-1],[23367,23468,1],[23369,23470,-1],[23377,23478,1],[23380,23481,1],[23387,23488,1],[23389,23490,-1],[23392,23493,-1],[23396,23497,-1],[23407,23508,-1],[23414,23515,-1],[23416,23517,-1],[23417,23518,1],[23423,23524,1],[23425,23526,-1],[23429,23530,-1],[23430,23531,1],[23434,23535,1],[23436,23537,1],[23438,23539,-1],[23439,23540,-1],[23439,23540,-1],[23445,23546,1],[23446,23547,-1],[23448,23549,1],[23457,23558,-1],[23463,23564,1],[23464,23565,-1],[23476,23577,-1],[23476,23577,1],[23484,23585,1],[23486,23587,1],[23487,23588,-1],[23496,23597,-1],[23501,23602,1],[23508,23609,-1],[23509,23610,-1],[23511,23612,1],[23511,23612,1],[23520,23621,-1],[23523,23624,1],[23532,23633,-1],[23543,23644,1],[23544,23645,1],[23544,23645,-1],[23547,23648,1],[23548,23649,-1],[23554,23655,1],[23565,23666,-1],[23573,23674,-1],[23582,23683,-1],[23588,23689,-1],[23592,23693,-1],[23594,23695,-1],[23596,23697,-1],[23605,23706,1],[23608,23709,1],[23623,23724,1],[23628,23729,-1],[23630,23731,-1],[23634,23735,-1],[23639,23740,-1],[23648,23749,1],[23655,23756,-1],[23661,23762,1],[23662,23763,-1],[23662,23763,1],[23664,23765,-1],[23669,23770,1],[23672,23773,1],[23682,23783,1],[23683,23784,-1],[23691,23792,-1],[23698,23799,1],[23701,23802,1],[23705,23806,-1],[23711,23812,1],[23721,23822,-1],[23724,23825,1],[23735,23836,1],[23741,23842,1],[23746,23847,-1],[23747,23848,1],[23748,23849,-1],[23753,23854,1],[23757,23858,-1],[23774,23875,-1],[23776,23877,1],[23785,23886,1],[23786,23887,1],[23793,23894,-1],[23807,23908,-1],[23816,23917,1],[23817,23918,-1],[23831,23932,-1],[23832,23933,1],[23839,23940,-1],[23844,23945,-1],[23850,23951,1],[23854,23955,1],[23858,23959,1],[23862,23963,1],[23868,23969,-1],[23885,23986,-1],[23888,23989,1],[23889,23990,-1],[23890,23991,1],[23892,23993,1],[23900,24001,1],[23903,24004,-1],[23909,24010,-1],[23920,24021,-1],[23922,24023,1],[23928,24029,-1],[23930,24031,-1],[23932,24033,-1],[23937,24038,1],[23945,24046,-1],[23946,24047,1],[23956,24057,-1],[23961,24062,1],[23969,24070,1],[23977,24078,1],[23979,24080,1],[23980,24081,1],[23984,24085,1],[23986,24087,1],[23994,24095,-1],[23994,24095,-1],[23998,24099,1],[24007,24108,-1],[24018,24119,1],[24021,24122,1],[24025,24126,1],[24043,24144,-1],[24044,24145,1],[24053,24154,1],[24057,24158,-1],[24063,24164,1],[24064,24165,1],[24064,24165,1],[24067,24168,-1],[24073,24174,1],[24079,24180,-1],[24088,24189,-1],[24089,24190,1],[24095,24196,-1],[24099,24200,-1],[24102,24203,1],[24118,24219,-1],[24124,24225,-1],[24132,24233,1],[24146,24247,1],[24151,24252,1],[24153,24254,1],[24156,24257,1],[24166,24267,1],[24168,24269,1],[24168,24269,-1],[24172,24273,-1],[24174,24275,-1],[24176,24277,1],[24183,24284,-1],[24184,24285,-1],[24194,24295,-1],[24196,24297,-1],[24201,24302,1],[24202,24303,1],[24203,24304,-1],[24204,24305,1],[24210,24311,-1],[24218,24319,-1],[24226,24327,-1],[24235,24336,1],[24235,24336,-1],[24236,24337,1],[24248,24349,1],[24255,24356,-1],[24262,24363,1],[24266,24367,-1],[24275,24376,-1],[24283,24384,-1],[24285,24386,-1],[24286,24387,1],[24287,24388,-1],[24287,24388,-1],[24289,24390,-1],[24289,24390,-1],[24290,24391,-1],[24297,24398,-1],[24299,24400,1],[24301,24402,1],[24303,24404,1],[24304,24405,-1],[24311,24412,-1],[24313,24414,-1],[24315,24416,-1],[24318,24419,1],[24326,24427,1],[24327,24428,1],[24331,24432,-1],[24335,24436,1],[24340,24441,-1],[24343,24444,1],[24343,24444,1],[24347,24448,-1],[24353,24454,1],[24360,24461,1],[24366,24467,1],[24369,24470,-1],[24370,24471,-1],[24377,24478,-1],[24380,24481,1],[24393,24494,1],[24393,24494,1],[24398,24499,1],[24406,24507,1],[24406,24507,1],[24407,24508,1],[24421,24522,-1],[24422,24523,1],[24423,24524,1],[24424,24525,-1],[24424,24525,1],[24425,24526,1],[24434,24535,-1],[24434,24535,-1],[24434,24535,-1],[24438,24539,1],[24445,24546,1],[24457,24558,1],[24459,24560,-1],[24464,24565,1],[24471,24572,-1],[24472,24573,1],[24476,24577,-1],[24482,24583,-1],[24482,24583,-1],[24488,24589,1],[24488,24589,-1],[24492,24593,-1],[24492,24593,-1],[24493,24594,1],[24504,24605,1],[24504,24605,1],[24510,24611,1],[24516,24617,-1],[24521,24622,-1],[24523,24624,-1],[24524,24625,-1],[24530,24631,-1],[24530,24631,1],[24535,24636,-1],[24544,24645,1],[24546,24647,1],[24548,24649,-1],[24548,24649,-1],[24551,24652,1],[24554,24655,-1],[24555,24656,-1],[24559,24660,-1],[24562,24663,1],[24566,24667,-1],[24578,24679,1],[24579,24680,-1],[24586,24687,-1],[24587,24688,-1],[24589,24690,1],[24596,24697,-1],[24605,24706,1],[24606,24707,1],[24615,24716,1],[24615,24716,-1],[24616,24717,-1],[24617,24718,1],[24623,24724,1],[24638,24739,-1],[24645,24746,-1],[24652,24753,1],[24657,24758,-1],[24658,24759,1],[24661,24762,1],[24666,24767,1],[24669,24770,-1],[24675,24776,-1],[24699,24800,1],[24703,24804,1],[24715,24816,1],[24720,24821,-1],[24731,24832,-1],[24732,24833,-1],[24740,24841,1],[24740,24841,-1],[24741,24842,1],[24742,24843,-1],[24744,24845,1],[24748,24849,1],[24752,24853,1],[24756,24857,-1],[24760,24861,1],[24768,24869,1],[24770,24871,-1],[24776,24877,-1],[24779,24880,-1],[24781,24882,-1],[24787,24888,-1],[24791,24892,-1],[24792,24893,-1],[24792,24893,-1],[24798,24899,1],[24805,24906,1],[24806,24907,-1],[24807,24908,-1],[24808,24909,-1],[24811,24912,-1],[24824,24925,1],[24835,24936,-1],[24839,24940,1],[24840,24941,-1],[24844,24945,-1],[24854,24955,-1],[24856,24957,-1],[24862,24963,-1],[24865,24966,-1],[24870,24971,-1],[24889,24990,1],[24890,24991,-1],[24892,24993,1],[24894,24995,-1],[24895,24996,1],[24899,25000,1],[24910,25011,-1],[24910,25011,-1],[24916,25017,-1],[24922,25023,-1],[24923,25024,-1],[24924,25025,-1],[24925,25026,1],[24926,25027,-1],[24939,25040,1],[24943,25044,1],[24943,25044,-1],[24947,25048,1],[24954,25055,-1],[24956,25057,1],[24970,25071,1],[24974,25075,1],[24983,25084,-1],[24987,25088,-1],[24988,25089,-1],[24991,25092,-1],[25001,25102,1],[25002,25103,1],[25007,25108,-1],[25011,25112,-1],[25014,25115,1],[25019,25120,-1],[25023,25124,-1],[25029,25130,-1],[25041,25142,1],[25047,25148,-1],[25048,25149,1],[25048,25149,1],[25051,25152,1],[25059,25160,1],[25073,25174,1],[25073,25174,-1],[25075,25176,1],[25079,25180,-1],[25080,25181,-1],[25080,25181,-1],[25082,25183,-1],[25087,25188,1],[25087,25188,1],[25094,25195,1],[25098,25199,1],[25118,25219,1],[25122,25223,1],[25130,25231,-1],[25132,25233,-1],[25139,25240,-1],[25139,25240,1],[25146,25247,1],[25146,25247,1],[25159,25260,1],[25162,25263,-1],[25162,25263,1],[25170,25271,1],[25175,25276,1],[25182,25283,-1],[25183,25284,-1],[25189,25290,-1],[25190,25291,1],[25192,25293,1],[25192,25293,-1],[25198,25299,-1],[25204,25305,1],[25211,25312,1],[25212,25313,-1],[25229,25330,1],[25232,25333,1],[25235,25336,1],[25235,25336,1],[25238,25339,-1],[25252,25353,-1],[25253,25354,1],[25264,25365,1],[25269,25370,1],[25277,25378,1],[25288,25389,-1],[25292,25393,-1],[25298,25399,-1],[25312,25413,1],[25316,25417,1],[25337,25438,1],[25338,25439,-1],[25345,25446,-1],[25348,25449,-1],[25350,25451,1],[25366,25467,1],[25368,25469,1],[25390,25491,1],[25393,25494,1],[25396,25497,1],[25400,25501,-1],[25403,25504,1],[25405,25506,1],[25406,25507,1],[25406,25507,-1],[25406,25507,1],[25408,25509,-1],[25408,25509,1],[25414,25515,1],[25424,25525,-1],[25442,25543,-1],[25446,25547,-1],[25454,25555,1],[25454,25555,-1],[25460,25561,1],[25464,25565,1],[25465,25566,1],[25467,25568,1],[25468,25569,1],[25472,25573,1],[25473,25574,-1],[25480,25581,1],[25480,25581,1],[25487,25588,1],[25487,25588,1],[25493,25594,-1],[25501,25602,-1],[25505,25606,-1],[25517,25618,1],[25521,25622,1],[25525,25626,1],[25534,25635,-1],[25537,25638,-1],[25538,25639,-1],[25542,25643,1],[25542,25643,1],[25550,25651,1],[25550,25651,1],[25555,25656,1],[25556,25657,-1],[25556,25657,1],[25575,25676,1],[25578,25679,1],[25584,25685,-1],[25584,25685,-1],[25585,25686,-1],[25587,25688,-1],[25588,25689,1],[25593,25694,1],[25613,25714,1],[25624,25725,-1],[25627,25728,-1],[25640,25741,1],[25640,25741,-1],[25650,25751,-1],[25654,25755,1],[25659,25760,-1],[25660,25761,-1],[25663,25764,-1],[25669,25770,-1],[25676,25777,-1],[25678,25779,1],[25679,25780,1],[25680,25781,-1],[25681,25782,1],[25685,25786,1],[25686,25787,-1],[25691,25792,-1],[25697,25798,1],[25714,25815,1],[25715,25816,-1],[25716,25817,1],[25722,25823,-1],[25725,25826,-1],[25730,25831,-1],[25744,25845,1],[25746,25847,-1],[25756,25857,-1],[25759,25860,1],[25760,25861,-1],[25773,25874,1],[25775,25876,-1],[25776,25877,1],[25779,25880,1],[25789,25890,1],[25800,25901,-1],[25805,25906,-1],[25807,25908,-1],[25810,25911,-1],[25810,25911,1],[25812,25913,1],[25821,25922,-1],[25828,25929,-1],[25835,25936,-1],[25837,25938,-1],[25845,25946,-1],[25851,25952,-1],[25852,25953,-1],[25863,25964,-1],[25865,25966,-1],[25872,25973,-1],[25884,25985,1],[25892,25993,-1],[25894,25995,-1],[25895,25996,1],[25901,26002,1],[25902,26003,-1],[25903,26004,-1],[25905,26006,1],[25914,26015,1],[25919,26020,-1],[25924,26025,-1],[25926,26027,1],[25931,26032,-1],[25935,26036,-1],[25935,26036,1],[25941,26042,-1],[25953,26054,1],[25956,26057,-1],[25956,26057,-1],[25957,26058,1],[25962,26063,1],[25967,26068,-1],[25981,26082,-1],[25987,26088,-1],[25994,26095,-1],[26005,26106,1],[26017,26118,1],[26022,26123,1],[26024,26125,-1],[26028,26129,-1],[26034,26135,1],[26035,26136,-1],[26039,26140,-1],[26040,26141,1],[26051,26152,1],[26055,26156,1],[26056,26157,1],[26065,26166,-1],[26074,26175,1],[26078,26179,1],[26082,26183,-1],[26086,26187,-1],[26089,26190,-1],[26094,26195,-1],[26110,26211,1],[26122,26223,-1],[26124,26225,-1],[26130,26231,-1],[26131,26232,-1],[26133,26234,-1],[26135,26236,1],[26136,26237,1],[26148,26249,-1],[26149,26250,-1],[26162,26263,-1],[26168,26269,-1],[26174,26275,-1],[26184,26285,1],[26192,26293,-1],[26193,26294,-1],[26194,26295,-1],[26198,26299,1],[26204,26305,1],[26208,26309,-1],[26217,26318,1],[26223,26324,-1],[26227,26328,1],[26235,26336,1],[26239,26340,1],[26240,26341,1],[26246,26347,-1],[26274,26375,-1],[26275,26376,-1],[26277,26378,-1],[26277,26378,1],[26278,26379,1],[26283,26384,1],[26293,26394,1],[26298,26399,-1],[26301,26402,1],[26303,26404,-1],[26327,26428,-1],[26329,26430,-1],[26331,26432,1],[26342,26443,1],[26342,26443,1],[26343,26444,1],[26347,26448,-1],[26351,26452,1],[26355,26456,1],[26357,26458,1],[26359,26460,1],[26361,26462,1],[26369,26470,-1],[26375,26476,-1],[26386,26487,-1],[26394,26495,-1],[26402,26503,1],[26402,26503,-1],[26404,26505,1],[26405,26506,-1],[26406,26507,-1],[26408,26509,-1],[26420,26521,1],[26423,26524,1],[26424,26525,1],[26434,26535,1],[26436,26537,-1],[26451,26552,1],[26453,26554,-1],[26455,26556,1],[26459,26560,-1],[26469,26570,-1],[26475,26576,-1],[26479,26580,1],[26479,26580,-1],[26487,26588,1],[26488,26589,1],[26499,26600,1],[26509,26610,1],[26518,26619,1],[26519,26620,1],[26526,26627,1],[26529,26630,1],[26538,26639,-1],[26547,26648,1],[26548,26649,1],[26562,26663,-1],[26572,26673,1],[26577,26678,-1],[26577,26678,-1],[26577,26678,-1],[26578,26679,-1],[26600,26701,1],[26601,26702,1],[26609,26710,-1],[26609,26710,1],[26611,26712,-1],[26622,26723,-1],[26623,26724,-1],[26624,26725,-1],[26627,26728,1],[26630,26731,1],[26634,26735,1],[26637,26738,-1],[26652,26753,-1],[26658,26759,-1],[26658,26759,1],[26668,26769,1],[26671,26772,-1],[26682,26783,-1],[26693,26794,-1],[26701,26802,1],[26702,26803,1],[26705,26806,-1],[26707,26808,-1],[26724,26825,1],[26727,26828,1],[26728,26829,-1],[26733,26834,1],[26740,26841,1],[26743,26844,-1],[26745,26846,1],[26759,26860,-1],[26760,26861,-1],[26767,26868,1],[26790,26891,1],[26805,26906,1],[26806,26907,-1],[26807,26908,-1],[26814,26915,-1],[26822,26923,1],[26827,26928,1],[26829,26930,-1],[26841,26942,-1],[26859,26960,1],[26859,26960,1],[26869,26970,1],[26882,26983,-1],[26886,26987,1],[26891,26992,-1],[26896,26997,-1],[26897,26998,-1],[26900,27001,1],[26918,27019,-1],[26923,27024,-1],[26943,27044,-1],[26944,27045,1],[26953,27054,-1],[26953,27054,1],[26954,27055,1],[26974,27075,-1],[26978,27079,1],[26982,27083,-1],[26982,27083,1],[26987,27088,-1],[26992,27093,-1],[26999,27100,-1],[27003,27104,-1],[27011,27112,-1],[27019,27120,-1],[27019,27120,-1],[27022,27123,-1],[27023,27124,-1],[27029,27130,-1],[27038,27139,-1],[27039,27140,1],[27044,27145,-1],[27049,27150,-1],[27051,27152,1],[27052,27153,-1],[27053,27154,-1],[27053,27154,-1],[27058,27159,-1],[27066,27167,1],[27067,27168,-1],[27075,27176,-1],[27082,27183,1],[27084,27185,1],[27086,27187,-1],[27095,27196,1],[27097,27198,-1],[27104,27205,1],[27110,27211,1],[27115,27216,1],[27120,27221,1],[27124,27225,1],[27125,27226,1],[27127,27228,1],[27127,27228,1],[27129,27230,1],[27133,27234,-1],[27135,27236,1],[27143,27244,-1],[27144,27245,-1],[27148,27249,-1],[27151,27252,-1],[27152,27253,1],[27166,27267,1],[27169,27270,1],[27169,27270,-1],[27185,27286,1],[27185,27286,-1],[27186,27287,-1],[27187,27288,-1],[27193,27294,1],[27194,27295,-1],[27201,27302,-1],[27203,27304,-1],[27204,27305,1],[27209,27310,1],[27210,27311,-1],[27211,27312,1],[27217,27318,1],[27217,27318,-1],[27220,27321,-1],[27236,27337,-1],[27240,27341,1],[27243,27344,1],[27244,27345,-1],[27252,27353,1],[27253,27354,1],[27259,27360,1],[27266,27367,1],[27266,27367,1],[27272,27373,1],[27300,27401,1],[27302,27403,-1],[27311,27412,-1],[27316,27417,-1],[27337,27438,-1],[27351,27452,-1],[27356,27457,1],[27383,27484,1],[27383,27484,-1],[27384,27485,1],[27396,27497,-1],[27420,27521,-1],[27421,27522,1],[27423,27524,1],[27438,27539,1],[27438,27539,1],[27438,27539,1],[27442,27543,-1],[27445,27546,-1],[27446,27547,-1],[27447,27548,-1],[27449,27550,-1],[27456,27557,-1],[27462,27563,-1],[27479,27580,1],[27480,27581,-1],[27482,27583,-1],[27488,27589,-1],[27491,27592,-1],[27494,27595,-1],[27499,27600,1],[27502,27603,1],[27503,27604,1],[27505,27606,-1],[27507,27608,1],[27510,27611,1],[27514,27615,-1],[27525,27626,1],[27537,27638,1],[27541,27642,1],[27543,27644,1],[27549,27650,-1],[27553,27654,-1],[27567,27668,-1],[27575,27676,-1],[27576,27677,1],[27581,27682,1],[27590,27691,1],[27590,27691,1],[27592,27693,1],[27601,27702,1],[27604,27705,-1],[27605,27706,-1],[27606,27707,-1],[27620,27721,1],[27625,27726,1],[27638,27739,-1],[27638,27739,1],[27643,27744,1],[27645,27746,1],[27648,27749,-1],[27651,27752,-1],[27652,27753,-1],[27656,27757,-1],[27664,27765,1],[27665,27766,-1],[27671,27772,1],[27674,27775,1],[27680,27781,-1],[27685,27786,1],[27694,27795,-1],[27694,27795,1],[27696,27797,1],[27696,27797,-1],[27707,27808,1],[27708,27809,-1],[27709,27810,1],[27716,27817,1],[27723,27824,1],[27728,27829,1],[27731,27832,1],[27734,27835,1],[27735,27836,-1],[27739,27840,1],[27742,27843,-1],[27743,27844,-1],[27755,27856,1],[27757,27858,-1],[27759,27860,1],[27761,27862,1],[27765,27866,-1],[27770,27871,-1],[27774,27875,1],[27775,27876,-1],[27779,27880,1],[27780,27881,-1],[27781,27882,-1],[27782,27883,-1],[27783,27884,-1],[27801,27902,-1],[27808,27909,-1],[27812,27913,-1],[27812,27913,1],[27814,27915,1],[27817,27918,-1],[27821,27922,-1],[27822,27923,1],[27829,27930,1],[27848,27949,1],[27850,27951,-1],[27851,27952,-1],[27861,27962,-1],[27868,27969,1],[27871,27972,1],[27872,27973,-1],[27873,27974,1],[27877,27978,1],[27879,27980,-1],[27881,27982,-1],[27889,27990,-1],[27892,27993,-1],[27898,27999,-1],[27902,28003,-1],[27903,28004,-1],[27905,28006,1],[27909,28010,1],[27924,28025,1],[27932,28033,-1],[27940,28041,1],[27946,28047,1],[27956,28057,-1],[27962,28063,-1],[27980,28081,1],[27991,28092,1],[27992,28093,-1],[27994,28095,-1],[27994,28095,1],[27999,28100,1],[28004,28105,-1],[28006,28107,-1],[28011,28112,1],[28013,28114,1],[28018,28119,-1],[28021,28122,-1],[28028,28129,-1],[28048,28149,1],[28068,28169,-1],[28070,28171,-1],[28074,28175,1],[28075,28176,-1],[28079,28180,1],[28086,28187,-1],[28092,28193,-1],[28092,28193,1],[28106,28207,1],[28107,28208,1],[28108,28209,1],[28108,28209,-1],[28108,28209,1],[28111,28212,1],[28114,28215,1],[28116,28217,-1],[28120,28221,-1],[28158,28259,1],[28160,28261,1],[28164,28265,1],[28165,28266,1],[28167,28268,1],[28170,28271,1],[28174,28275,-1],[28176,28277,1],[28180,28281,-1],[28195,28296,-1],[28202,28303,-1],[28203,28304,1],[28213,28314,-1],[28215,28316,-1],[28233,28334,1],[28234,28335,1],[28235,28336,1],[28238,28339,-1],[28240,28341,-1],[28244,28345,-1],[28253,28354,1],[28257,28358,1],[28258,28359,-1],[28260,28361,-1],[28263,28364,1],[28270,28371,1],[28270,28371,-1],[28295,28396,-1],[28316,28417,1],[28317,28418,-1],[28317,28418,-1],[28325,28426,-1],[28333,28434,1],[28334,28435,1],[28340,28441,-1],[28348,28449,1],[28353,28454,-1],[28359,28460,1],[28360,28461,-1],[28365,28466,-1],[28365,28466,-1],[28386,28487,1],[28395,28496,1],[28397,28498,-1],[28405,28506,1],[28409,28510,-1],[28409,28510,-1],[28409,28510,-1],[28425,28526,-1],[28439,28540,-1],[28441,28542,-1],[28444,28545,1],[28445,28546,1],[28446,28547,-1],[28453,28554,1],[28454,28555,1],[28454,28555,-1],[28457,28558,1],[28457,28558,1],[28464,28565,1],[28464,28565,1],[28467,28568,1],[28471,28572,1],[28474,28575,-1],[28476,28577,-1],[28479,28580,-1],[28481,28582,1],[28487,28588,1],[28487,28588,-1],[28511,28612,1],[28512,28613,-1],[28519,28620,-1],[28524,28625,-1],[28525,28626,1],[28530,28631,1],[28532,28633,-1],[28534,28635,-1],[28535,28636,-1],[28540,28641,-1],[28544,28645,-1],[28555,28656,-1],[28556,28657,-1],[28557,28658,1],[28576,28677,-1],[28581,28682,1],[28585,28686,-1],[28589,28690,-1],[28592,28693,1],[28592,28693,-1],[28598,28699,-1],[28606,28707,-1],[28611,28712,1],[28611,28712,-1],[28621,28722,1],[28625,28726,-1],[28626,28727,1],[28626,28727,1],[28626,28727,-1],[28629,28730,-1],[28634,28735,1],[28650,28751,-1],[28655,28756,1],[28663,28764,1],[28663,28764,-1],[28667,28768,1],[28668,28769,-1],[28682,28783,1],[28695,28796,-1],[28712,28813,1],[28712,28813,1],[28716,28817,1],[28732,28833,1],[28745,28846,1],[28746,28847,1],[28746,28847,-1],[28752,28853,1],[28754,28855,1],[28764,28865,-1],[28767,28868,1],[28773,28874,1],[28778,28879,-1],[28780,28881,-1],[28781,28882,1],[28784,28885,-1],[28789,28890,1],[28803,28904,-1],[28807,28908,1],[28826,28927,1],[28828,28929,-1],[28839,28940,1],[28857,28958,1],[28860,28961,1],[28870,28971,1],[28871,28972,1],[28879,28980,1],[28886,28987,1],[28886,28987,1],[28895,28996,-1],[28899,29000,1],[28911,29012,-1],[28912,29013,-1],[28921,29022,1],[28930,29031,1],[28931,29032,1],[28934,29035,1],[28941,29042,1],[28947,29048,1],[28952,29053,1],[28954,29055,1],[28955,29056,1],[28968,29069,-1],[28979,29080,1],[28984,29085,1],[28989,29090,-1],[28991,29092,-1],[28991,29092,-1],[29003,29104,-1],[29006,29107,-1],[29008,29109,1],[29011,29112,1],[29013,29114,1],[29014,29115,1],[29028,29129,1],[29033,29134,1],[29036,29137,-1],[29038,29139,1],[29040,29141,-1],[29061,29162,-1],[29062,29163,-1],[29065,29166,1],[29073,29174,-1],[29076,29177,1],[29096,29197,-1],[29101,29202,-1],[29102,29203,-1],[29102,29203,1],[29102,29203,1],[29103,29204,-1],[29118,29219,1],[29127,29228,1],[29127,29228,1],[29128,29229,-1],[29134,29235,-1],[29148,29249,-1],[29158,29259,-1],[29164,29265,-1],[29165,29266,-1],[29166,29267,-1],[29172,29273,1],[29178,29279,-1],[29179,29280,1],[29181,29282,-1],[29189,29290,-1],[29198,29299,1],[29200,29301,1],[29201,29302,1],[29203,29304,-1],[29205,29306,1],[29207,29308,-1],[29210,29311,1],[29213,29314,1],[29223,29324,-1],[29238,29339,-1],[29241,29342,1],[29241,29342,-1],[29243,29344,-1],[29247,29348,1],[29270,29371,-1],[29272,29373,-1],[29273,29374,-1],[29274,29375,-1],[29276,29377,-1],[29278,29379,-1],[29297,29398,-1],[29302,29403,-1],[29324,29425,1],[29325,29426,-1],[29329,29430,1],[29337,29438,1],[29339,29440,1],[29344,29445,-1],[29349,29450,1],[29351,29452,-1],[29363,29464,-1],[29366,29467,1],[29369,29470,1],[29370,29471,1],[29378,29479,1],[29378,29479,-1],[29380,29481,-1],[29385,29486,-1],[29399,29500,-1],[29408,29509,1],[29413,29514,-1],[29415,29516,1],[29417,29518,1],[29421,29522,1],[29422,29523,1],[29426,29527,-1],[29434,29535,-1],[29444,29545,1],[29452,29553,-1],[29458,29559,1],[29464,29565,-1],[29465,29566,1],[29468,29569,-1],[29475,29576,-1],[29477,29578,-1],[29480,29581,-1],[29481,29582,1],[29485,29586,-1],[29493,29594,-1],[29500,29601,-1],[29503,29604,-1],[29508,29609,1],[29510,29611,-1],[29512,29613,1],[29515,29616,1],[29518,29619,1],[29526,29627,-1],[29541,29642,-1],[29544,29645,-1],[29547,29648,-1],[29549,29650,-1],[29557,29658,-1],[29558,29659,-1],[29561,29662,-1],[29562,29663,-1],[29566,29667,1],[29570,29671,1],[29579,29680,1],[29591,29692,-1],[29592,29693,1],[29592,29693,-1],[29594,29695,1],[29594,29695,-1],[29596,29697,-1],[29609,29710,1],[29610,29711,1],[29611,29712,-1],[29615,29716,-1],[29615,29716,1],[29627,29728,1],[29630,29731,-1],[29635,29736,-1],[29637,29738,-1],[29639,29740,1],[29644,29745,-1],[29644,29745,1],[29646,29747,-1],[29647,29748,1],[29650,29751,1],[29651,29752,1],[29652,29753,1],[29653,29754,-1],[29655,29756,-1],[29657,29758,-1],[29662,29763,-1],[29687,29788,-1],[29690,29791,-1],[29695,29796,-1],[29698,29799,-1],[29701,29802,1],[29706,29807,1],[29720,29821,1],[29727,29828,1],[29741,29842,-1],[29746,29847,-1],[29747,29848,1],[29750,29851,1],[29751,29852,1],[29772,29873,1],[29774,29875,-1],[29775,29876,1],[29785,29886,-1],[29790,29891,-1],[29794,29895,-1],[29802,29903,-1],[29805,29906,-1],[29838,29939,1],[29851,29952,1],[29853,29954,1],[29854,29955,1],[29859,29960,1],[29862,29963,1],[29867,29968,-1],[29871,29972,1],[29872,29973,-1],[29876,29977,1],[29884,29985,-1],[29884,29985,1],[29888,29989,-1],[29892,29993,-1],[29899,30000,-1],[29899,30000,1],[29902,30003,-1],[29904,30005,-1],[29920,30021,-1],[29924,30025,1],[29932,30033,1],[29934,30035,1],[29938,30039,1],[29941,30042,1],[29949,30050,1],[29953,30054,-1],[29954,30055,-1],[29960,30061,-1],[29968,30069,1],[29976,30077,-1],[29979,30080,1],[29986,30087,1],[29988,30089,-1],[29990,30091,-1],[30003,30104,1],[30004,30105,1],[30019,30120,-1],[30024,30125,1],[30026,30127,-1],[30026,30127,-1],[30027,30128,-1],[30047,30148,-1],[30049,30150,1],[30055,30156,-1],[30055,30156,-1],[30072,30173,-1],[30085,30186,-1],[30087,30188,1],[30093,30194,-1],[30095,30196,-1],[30102,30203,1],[30104,30205,-1],[30136,30237,1],[30140,30241,-1],[30147,30248,-1],[30164,30265,-1],[30171,30272,1],[30177,30278,-1],[30177,30278,-1],[30177,30278,1],[30179,30280,1],[30183,30284,-1],[30186,30287,1],[30189,30290,1],[30190,30291,1],[30193,30294,1],[30215,30316,-1],[30220,30321,1],[30231,30332,-1],[30233,30334,-1],[30257,30358,1],[30261,30362,-1],[30270,30371,-1],[30271,30372,-1],[30271,30372,-1],[30277,30378,1],[30277,30378,1],[30288,30389,1],[30289,30390,-1],[30290,30391,1],[30291,30392,-1],[30295,30396,1],[30300,30401,1],[30302,30403,1],[30325,30426,-1],[30327,30428,-1],[30328,30429,1],[30330,30431,-1],[30333,30434,-1],[30333,30434,1],[30339,30440,-1],[30340,30441,1],[30341,30442,1],[30345,30446,1],[30348,30449,-1],[30349,30450,1],[30353,30454,1],[30353,30454,-1],[30358,30459,-1],[30367,30468,-1],[30373,30474,1],[30374,30475,-1],[30377,30478,1],[30382,30483,1],[30387,30488,1],[30387,30488,1],[30387,30488,1],[30390,30491,1],[30400,30501,-1],[30403,30504,1],[30406,30507,-1],[30406,30507,1],[30420,30521,1],[30429,30530,-1],[30433,30534,1],[30438,30539,-1],[30445,30546,1],[30445,30546,-1],[30464,30565,-1],[30467,30568,1],[30468,30569,-1],[30473,30574,1],[30479,30580,1],[30479,30580,-1],[30486,30587,-1],[30494,30595,1],[30495,30596,-1],[30504,30605,1],[30513,30614,-1],[30520,30621,-1],[30522,30623,-1],[30528,30629,1],[30541,30642,1],[30544,30645,1],[30550,30651,1],[30550,30651,1],[30550,30651,1],[30572,30673,1],[30572,30673,1],[30579,30680,1],[30584,30685,1],[30585,30686,-1],[30590,30691,1],[30590,30691,-1],[30598,30699,1],[30611,30712,-1],[30614,30715,-1],[30629,30730,-1],[30631,30732,1],[30641,30742,-1],[30643,30744,-1],[30643,30744,-1],[30667,30768,1],[30667,30768,-1],[30671,30772,-1],[30671,30772,1],[30674,30775,1],[30674,30775,1],[30676,30777,1],[30678,30779,-1],[30681,30782,1],[30690,30791,-1],[30691,30792,-1],[30694,30795,1],[30706,30807,1],[30706,30807,1],[30714,30815,-1],[30735,30836,-1],[30744,30845,-1],[30748,30849,1],[30749,30850,1],[30751,30852,1],[30761,30862,-1],[30767,30868,-1],[30778,30879,1],[30778,30879,1],[30786,30887,1],[30787,30888,-1],[30791,30892,1],[30792,30893,-1],[30794,30895,1],[30795,30896,1],[30796,30897,1],[30799,30900,1],[30801,30902,-1],[30814,30915,1],[30815,30916,-1],[30820,30921,1],[30822,30923,1],[30824,30925,1],[30832,30933,1],[30854,30955,1],[30864,30965,-1],[30867,30968,-1],[30870,30971,1],[30889,30990,-1],[30895,30996,-1],[30896,30997,1],[30900,31001,1],[30904,31005,-1],[30907,31008,1],[30909,31010,1],[30915,31016,1],[30915,31016,-1],[30918,31019,-1],[30921,31022,1],[30932,31033,-1],[30933,31034,1],[30951,31052,-1],[30956,31057,1],[30957,31058,-1],[30958,31059,-1],[30962,31063,-1],[30962,31063,-1],[30969,31070,1],[30969,31070,-1],[30969,31070,-1],[30976,31077,-1],[30980,31081,1],[30996,31097,1],[30997,31098,-1],[31001,31102,-1],[31005,31106,-1],[31006,31107,1],[31007,31108,1],[31010,31111,1],[31011,31112,-1],[31021,31122,1],[31027,31128,-1],[31031,31132,1],[31032,31133,1],[31065,31166,1],[31071,31172,-1],[31071,31172,1],[31072,31173,-1],[31073,31174,-1],[31074,31175,1],[31079,31180,-1],[31079,31180,-1],[31079,31180,-1],[31087,31188,-1],[31094,31195,1],[31117,31218,-1],[31118,31219,-1],[31123,31224,-1],[31123,31224,1],[31126,31227,1],[31137,31238,-1],[31138,31239,-1],[31139,31240,1],[31145,31246,1],[31146,31247,-1],[31158,31259,1],[31159,31260,-1],[31163,31264,1],[31164,31265,-1],[31168,31269,-1],[31170,31271,1],[31179,31280,1],[31181,31282,1],[31189,31290,1],[31192,31293,-1],[31195,31296,-1],[31203,31304,-1],[31215,31316,-1],[31216,31317,-1],[31223,31324,-1],[31224,31325,-1],[31224,31325,1],[31225,31326,-1],[31225,31326,-1],[31228,31329,-1],[31235,31336,1],[31245,31346,-1],[31259,31360,-1],[31259,31360,-1],[31260,31361,1],[31262,31363,1],[31271,31372,-1],[31272,31373,1],[31273,31374,1],[31273,31374,-1],[31276,31377,1],[31277,31378,1],[31282,31383,-1],[31289,31390,-1],[31301,31402,1],[31309,31410,1],[31317,31418,1],[31320,31421,-1],[31322,31423,-1],[31323,31424,-1],[31326,31427,1],[31328,31429,1],[31333,31434,1],[31334,31435,1],[31346,31447,1],[31349,31450,-1],[31351,31452,-1],[31358,31459,-1],[31359,31460,1],[31361,31462,1],[31365,31466,-1],[31375,31476,1],[31376,31477,-1],[31378,31479,-1],[31381,31482,-1],[31392,31493,-1],[31405,31506,-1],[31407,31508,-1],[31408,31509,-1],[31411,31512,1],[31412,31513,-1],[31413,31514,-1],[31421,31522,-1],[31422,31523,1],[31433,31534,-1],[31446,31547,-1],[31447,31548,-1],[31450,31551,-1],[31450,31551,-1],[31459,31560,1],[31467,31568,1],[31472,31573,1],[31476,31577,-1],[31486,31587,1],[31491,31592,1],[31496,31597,1],[31498,31599,1],[31501,31602,-1],[31503,31604,1],[31507,31608,-1],[31511,31612,-1],[31515,31616,-1],[31519,31620,-1],[31527,31628,-1],[31541,31642,-1],[31546,31647,-1],[31548,31649,1],[31548,31649,1],[31551,31652,-1],[31554,31655,1],[31554,31655,1],[31563,31664,-1],[31566,31667,-1],[31571,31672,-1],[31572,31673,-1],[31575,31676,1],[31583,31684,-1],[31613,31714,-1],[31616,31717,1],[31618,31719,-1],[31620,31721,1],[31627,31728,-1],[31628,31729,1],[31631,31732,-1],[31631,31732,1],[31635,31736,1],[31639,31740,-1],[31649,31750,-1],[31656,31757,1],[31658,31759,-1],[31658,31759,-1],[31659,31760,-1],[31661,31762,1],[31670,31771,-1],[31673,31774,1],[31680,31781,-1],[31681,31782,-1],[31686,31787,1],[31687,31788,-1],[31689,31790,-1],[31704,31805,-1],[31705,31806,1],[31706,31807,1],[31710,31811,-1],[31725,31826,1],[31731,31832,1],[31732,31833,1],[31734,31835,-1],[31736,31837,1],[31740,31841,1],[31743,31844,-1],[31744,31845,1],[31748,31849,1],[31761,31862,-1],[31770,31871,1],[31775,31876,1],[31776,31877,-1],[31780,31881,-1],[31806,31907,1],[31806,31907,-1],[31806,31907,-1],[31810,31911,1],[31819,31920,1],[31834,31935,-1],[31837,31938,1],[31840,31941,-1],[31844,31945,-1],[31845,31946,-1],[31846,31947,1],[31848,31949,1],[31848,31949,-1],[31849,31950,1],[31854,31955,-1],[31864,31965,1],[31873,31974,-1],[31876,31977,-1],[31879,31980,1],[31880,31981,-1],[31884,31985,-1],[31884,31985,1],[31890,31991,-1],[31893,31994,-1],[31897,31998,1],[31908,32009,-1],[31911,32012,-1],[31935,32036,1],[31940,32041,1],[31940,32041,-1],[31944,32045,1],[31948,32049,1],[31952,32053,-1],[31960,32061,-1],[31976,32077,-1],[31981,32082,-1],[31982,32083,-1],[31996,32097,-1],[32000,32101,-1],[32004,32105,-1],[32007,32108,-1],[32013,32114,-1],[32018,32119,1],[32020,32121,-1],[32023,32124,-1],[32028,32129,-1],[32030,32131,-1],[32034,32135,-1],[32036,32137,-1],[32038,32139,-1],[32048,32149,-1],[32053,32154,1],[32058,32159,-1],[32060,32161,-1],[32086,32187,-1],[32092,32193,1],[32098,32199,1],[32107,32208,1],[32112,32213,1],[32132,32233,-1],[32132,32233,1],[32136,32237,-1],[32136,32237,-1],[32143,32244,-1],[32150,32251,-1],[32153,32254,1],[32157,32258,1],[32157,32258,-1],[32161,32262,-1],[32162,32263,1],[32170,32271,1],[32174,32275,1],[32178,32279,1],[32191,32292,1],[32202,32303,-1],[32218,32319,-1],[32224,32325,-1],[32231,32332,-1],[32232,32333,-1],[32237,32338,-1],[32241,32342,1],[32246,32347,-1],[32246,32347,-1],[32253,32354,1],[32270,32371,1],[32272,32373,-1],[32276,32377,1],[32277,32378,-1],[32283,32384,1],[32293,32394,-1],[32300,32401,-1],[32304,32405,1],[32315,32416,-1],[32323,32424,-1],[32323,32424,-1],[32324,32425,1],[32327,32428,-1],[32331,32432,-1],[32332,32433,-1],[32349,32450,-1],[32353,32454,1],[32359,32460,1],[32364,32465,-1],[32365,32466,-1],[32370,32471,1],[32394,32495,1],[32397,32498,1],[32400,32501,-1],[32401,32502,1],[32404,32505,-1],[32411,32512,-1],[32421,32522,1],[32422,32523,-1],[32422,32523,-1],[32426,32527,1],[32448,32549,-1],[32451,32552,1],[32454,32555,-1],[32464,32565,1],[32468,32569,1],[32469,32570,-1],[32471,32572,-1],[32478,32579,1],[32479,32580,1],[32484,32585,1],[32494,32595,1],[32514,32615,-1],[32543,32644,1],[32545,32646,1],[32548,32649,-1],[32553,32654,-1],[32553,32654,-1],[32561,32662,-1],[32565,32666,-1],[32578,32679,1],[32593,32694,1],[32596,32697,1],[32614,32715,1],[32614,32715,-1],[32616,32717,1],[32617,32718,1],[32619,32720,-1],[32622,32723,1],[32629,32730,-1],[32631,32732,-1],[32638,32739,-1],[32638,32739,-1],[32639,32740,1],[32639,32740,1],[32640,32741,-1]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-2.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-2.json
new file mode 100644
index 0000000000..38148d539c
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-2.json
@@ -0,0 +1 @@
+[[32644,32745,1],[32650,32751,1],[32653,32754,-1],[32658,32759,-1],[32690,32791,-1],[32690,32791,-1],[32693,32794,1],[32693,32794,-1],[32697,32798,-1],[32709,32810,1],[32738,32839,-1],[32741,32842,-1],[32746,32847,-1],[32792,32893,1],[32799,32900,1],[32814,32915,-1],[32833,32934,-1],[32834,32935,-1],[32837,32938,-1],[32837,32938,-1],[32849,32950,1],[32853,32954,1],[32854,32955,1],[32858,32959,1],[32862,32963,1],[32867,32968,1],[32890,32991,-1],[32901,33002,-1],[32907,33008,-1],[32914,33015,-1],[32916,33017,1],[32917,33018,1],[32919,33020,-1],[32930,33031,1],[32944,33045,-1],[32950,33051,-1],[32958,33059,-1],[32961,33062,1],[32966,33067,1],[32967,33068,-1],[32979,33080,1],[32980,33081,-1],[32981,33082,1],[32982,33083,-1],[32982,33083,-1],[32988,33089,-1],[32994,33095,-1],[33022,33123,1],[33024,33125,-1],[33025,33126,-1],[33029,33130,1],[33033,33134,-1],[33033,33134,1],[33037,33138,1],[33046,33147,1],[33049,33150,1],[33056,33157,-1],[33057,33158,1],[33061,33162,1],[33067,33168,1],[33072,33173,1],[33075,33176,1],[33075,33176,1],[33077,33178,1],[33078,33179,1],[33088,33189,-1],[33097,33198,1],[33104,33205,1],[33105,33206,1],[33112,33213,1],[33123,33224,-1],[33127,33228,-1],[33133,33234,-1],[33148,33249,1],[33157,33258,-1],[33157,33258,1],[33158,33259,-1],[33171,33272,-1],[33173,33274,-1],[33193,33294,-1],[33195,33296,1],[33200,33301,-1],[33216,33317,-1],[33221,33322,1],[33223,33324,1],[33242,33343,1],[33257,33358,-1],[33262,33363,1],[33274,33375,1],[33275,33376,1],[33281,33382,1],[33282,33383,1],[33300,33401,-1],[33300,33401,1],[33303,33404,1],[33324,33425,-1],[33345,33446,-1],[33350,33451,-1],[33361,33462,-1],[33368,33469,1],[33370,33471,-1],[33373,33474,1],[33379,33480,-1],[33385,33486,-1],[33385,33486,-1],[33394,33495,1],[33395,33496,-1],[33399,33500,-1],[33406,33507,-1],[33410,33511,-1],[33417,33518,1],[33417,33518,1],[33418,33519,1],[33426,33527,-1],[33430,33531,-1],[33430,33531,-1],[33451,33552,1],[33462,33563,1],[33467,33568,-1],[33474,33575,-1],[33485,33586,1],[33492,33593,1],[33493,33594,1],[33497,33598,-1],[33509,33610,-1],[33513,33614,1],[33514,33615,1],[33517,33618,-1],[33520,33621,-1],[33528,33629,1],[33530,33631,1],[33536,33637,-1],[33538,33639,-1],[33545,33646,1],[33547,33648,-1],[33560,33661,1],[33562,33663,1],[33569,33670,-1],[33570,33671,1],[33579,33680,1],[33582,33683,1],[33586,33687,1],[33600,33701,-1],[33603,33704,-1],[33604,33705,1],[33604,33705,1],[33605,33706,-1],[33606,33707,1],[33624,33725,1],[33629,33730,1],[33631,33732,1],[33633,33734,1],[33633,33734,-1],[33634,33735,1],[33638,33739,1],[33643,33744,1],[33646,33747,-1],[33646,33747,1],[33652,33753,1],[33654,33755,1],[33655,33756,1],[33657,33758,1],[33664,33765,-1],[33664,33765,-1],[33668,33769,-1],[33672,33773,1],[33674,33775,1],[33675,33776,1],[33676,33777,1],[33677,33778,1],[33679,33780,-1],[33681,33782,-1],[33685,33786,1],[33694,33795,-1],[33697,33798,1],[33705,33806,-1],[33708,33809,1],[33709,33810,-1],[33711,33812,1],[33714,33815,-1],[33715,33816,-1],[33717,33818,1],[33722,33823,-1],[33724,33825,1],[33742,33843,1],[33743,33844,-1],[33748,33849,1],[33750,33851,1],[33755,33856,-1],[33760,33861,-1],[33766,33867,-1],[33769,33870,-1],[33773,33874,-1],[33787,33888,-1],[33795,33896,-1],[33807,33908,1],[33812,33913,1],[33812,33913,-1],[33817,33918,1],[33817,33918,-1],[33818,33919,1],[33821,33922,-1],[33825,33926,-1],[33831,33932,1],[33836,33937,-1],[33836,33937,-1],[33838,33939,1],[33838,33939,1],[33845,33946,1],[33849,33950,-1],[33851,33952,1],[33856,33957,1],[33857,33958,-1],[33859,33960,1],[33865,33966,1],[33865,33966,1],[33867,33968,-1],[33867,33968,-1],[33868,33969,1],[33872,33973,-1],[33881,33982,1],[33883,33984,-1],[33886,33987,1],[33888,33989,1],[33888,33989,1],[33894,33995,1],[33896,33997,1],[33913,34014,1],[33916,34017,-1],[33927,34028,1],[33933,34034,-1],[33934,34035,1],[33960,34061,-1],[33964,34065,-1],[33982,34083,-1],[33998,34099,1],[34007,34108,-1],[34011,34112,1],[34018,34119,1],[34019,34120,-1],[34022,34123,1],[34031,34132,-1],[34034,34135,-1],[34039,34140,1],[34043,34144,1],[34051,34152,-1],[34055,34156,-1],[34058,34159,1],[34062,34163,1],[34066,34167,-1],[34067,34168,1],[34069,34170,1],[34072,34173,-1],[34075,34176,-1],[34082,34183,1],[34100,34201,-1],[34107,34208,1],[34109,34210,-1],[34110,34211,1],[34121,34222,-1],[34121,34222,1],[34123,34224,-1],[34136,34237,1],[34137,34238,-1],[34161,34262,-1],[34164,34265,1],[34179,34280,1],[34179,34280,1],[34182,34283,-1],[34184,34285,-1],[34190,34291,1],[34204,34305,-1],[34208,34309,-1],[34209,34310,1],[34228,34329,-1],[34228,34329,-1],[34231,34332,-1],[34234,34335,1],[34243,34344,1],[34244,34345,-1],[34259,34360,1],[34268,34369,-1],[34268,34369,1],[34279,34380,1],[34289,34390,-1],[34289,34390,-1],[34298,34399,-1],[34309,34410,-1],[34311,34412,-1],[34312,34413,-1],[34320,34421,1],[34325,34426,-1],[34327,34428,-1],[34331,34432,-1],[34331,34432,1],[34333,34434,-1],[34340,34441,1],[34341,34442,1],[34352,34453,1],[34355,34456,-1],[34359,34460,1],[34360,34461,1],[34361,34462,1],[34370,34471,-1],[34373,34474,-1],[34373,34474,-1],[34377,34478,-1],[34381,34482,1],[34382,34483,1],[34384,34485,-1],[34384,34485,1],[34388,34489,-1],[34388,34489,1],[34391,34492,-1],[34392,34493,1],[34394,34495,1],[34395,34496,1],[34398,34499,1],[34399,34500,1],[34402,34503,1],[34419,34520,-1],[34420,34521,1],[34426,34527,1],[34426,34527,-1],[34454,34555,-1],[34460,34561,-1],[34462,34563,1],[34463,34564,1],[34467,34568,1],[34475,34576,1],[34475,34576,1],[34478,34579,1],[34485,34586,1],[34488,34589,-1],[34492,34593,1],[34494,34595,-1],[34506,34607,1],[34516,34617,-1],[34527,34628,1],[34530,34631,-1],[34536,34637,-1],[34542,34643,1],[34554,34655,1],[34561,34662,1],[34564,34665,1],[34585,34686,-1],[34585,34686,-1],[34603,34704,-1],[34603,34704,1],[34610,34711,1],[34617,34718,-1],[34630,34731,1],[34632,34733,1],[34637,34738,1],[34646,34747,-1],[34648,34749,-1],[34652,34753,-1],[34676,34777,1],[34685,34786,1],[34703,34804,1],[34706,34807,-1],[34707,34808,1],[34716,34817,1],[34718,34819,1],[34719,34820,1],[34721,34822,1],[34722,34823,1],[34729,34830,1],[34740,34841,-1],[34746,34847,-1],[34751,34852,-1],[34753,34854,-1],[34777,34878,-1],[34779,34880,-1],[34779,34880,1],[34782,34883,1],[34789,34890,1],[34795,34896,1],[34803,34904,1],[34804,34905,1],[34810,34911,-1],[34816,34917,1],[34825,34926,1],[34825,34926,1],[34833,34934,-1],[34834,34935,1],[34839,34940,-1],[34870,34971,-1],[34876,34977,1],[34876,34977,1],[34878,34979,1],[34882,34983,-1],[34883,34984,-1],[34887,34988,1],[34891,34992,1],[34899,35000,1],[34901,35002,1],[34902,35003,1],[34904,35005,1],[34905,35006,1],[34909,35010,-1],[34917,35018,-1],[34924,35025,-1],[34928,35029,1],[34929,35030,1],[34938,35039,1],[34939,35040,-1],[34939,35040,1],[34941,35042,1],[34944,35045,-1],[34956,35057,-1],[34957,35058,1],[34961,35062,-1],[34964,35065,1],[34971,35072,1],[34980,35081,1],[34984,35085,-1],[34987,35088,-1],[34988,35089,1],[34990,35091,1],[34994,35095,-1],[34995,35096,1],[34997,35098,-1],[35002,35103,-1],[35007,35108,-1],[35027,35128,-1],[35029,35130,1],[35031,35132,1],[35032,35133,1],[35032,35133,1],[35040,35141,-1],[35049,35150,1],[35049,35150,1],[35052,35153,1],[35059,35160,1],[35059,35160,1],[35061,35162,1],[35070,35171,1],[35076,35177,-1],[35088,35189,1],[35093,35194,1],[35094,35195,-1],[35094,35195,-1],[35094,35195,-1],[35101,35202,-1],[35102,35203,1],[35108,35209,-1],[35110,35211,-1],[35111,35212,1],[35121,35222,-1],[35121,35222,1],[35122,35223,-1],[35127,35228,-1],[35129,35230,-1],[35132,35233,1],[35135,35236,-1],[35138,35239,-1],[35150,35251,1],[35153,35254,-1],[35160,35261,1],[35170,35271,1],[35171,35272,-1],[35172,35273,1],[35174,35275,-1],[35180,35281,-1],[35180,35281,-1],[35184,35285,1],[35186,35287,1],[35188,35289,1],[35199,35300,1],[35203,35304,-1],[35219,35320,1],[35220,35321,1],[35239,35340,-1],[35250,35351,1],[35257,35358,-1],[35259,35360,-1],[35262,35363,-1],[35267,35368,1],[35271,35372,1],[35286,35387,1],[35286,35387,-1],[35287,35388,-1],[35293,35394,-1],[35294,35395,-1],[35297,35398,-1],[35307,35408,1],[35308,35409,-1],[35312,35413,-1],[35320,35421,1],[35329,35430,-1],[35329,35430,1],[35330,35431,1],[35336,35437,1],[35341,35442,1],[35345,35446,-1],[35350,35451,-1],[35352,35453,-1],[35355,35456,-1],[35361,35462,1],[35375,35476,-1],[35378,35479,1],[35386,35487,1],[35389,35490,1],[35406,35507,-1],[35410,35511,-1],[35439,35540,-1],[35447,35548,1],[35457,35558,-1],[35467,35568,-1],[35471,35572,-1],[35478,35579,1],[35479,35580,1],[35483,35584,-1],[35486,35587,-1],[35499,35600,-1],[35505,35606,1],[35506,35607,-1],[35508,35609,1],[35510,35611,-1],[35514,35615,1],[35520,35621,-1],[35520,35621,1],[35530,35631,-1],[35552,35653,-1],[35554,35655,1],[35555,35656,1],[35561,35662,1],[35561,35662,1],[35563,35664,1],[35569,35670,-1],[35574,35675,-1],[35578,35679,-1],[35580,35681,-1],[35581,35682,1],[35581,35682,-1],[35582,35683,-1],[35583,35684,-1],[35588,35689,1],[35589,35690,1],[35593,35694,1],[35599,35700,1],[35601,35702,1],[35608,35709,-1],[35612,35713,-1],[35618,35719,1],[35620,35721,-1],[35621,35722,-1],[35623,35724,1],[35626,35727,-1],[35634,35735,-1],[35643,35744,1],[35646,35747,-1],[35646,35747,-1],[35653,35754,-1],[35664,35765,1],[35676,35777,-1],[35695,35796,1],[35703,35804,-1],[35709,35810,-1],[35715,35816,-1],[35731,35832,-1],[35749,35850,-1],[35749,35850,-1],[35754,35855,-1],[35756,35857,-1],[35759,35860,1],[35761,35862,-1],[35763,35864,-1],[35766,35867,-1],[35767,35868,-1],[35767,35868,1],[35783,35884,-1],[35787,35888,-1],[35791,35892,1],[35813,35914,-1],[35817,35918,1],[35827,35928,1],[35827,35928,-1],[35828,35929,-1],[35835,35936,-1],[35837,35938,-1],[35841,35942,1],[35842,35943,1],[35844,35945,1],[35850,35951,1],[35856,35957,1],[35867,35968,-1],[35880,35981,1],[35886,35987,1],[35890,35991,-1],[35900,36001,-1],[35904,36005,-1],[35910,36011,-1],[35910,36011,1],[35915,36016,-1],[35916,36017,1],[35927,36028,-1],[35928,36029,1],[35936,36037,-1],[35941,36042,-1],[35945,36046,1],[35952,36053,-1],[35957,36058,-1],[35961,36062,-1],[35978,36079,-1],[35980,36081,-1],[35981,36082,1],[35995,36096,-1],[36001,36102,-1],[36002,36103,-1],[36012,36113,-1],[36012,36113,-1],[36015,36116,1],[36019,36120,-1],[36020,36121,-1],[36026,36127,1],[36043,36144,-1],[36045,36146,-1],[36046,36147,-1],[36056,36157,1],[36063,36164,1],[36064,36165,1],[36066,36167,-1],[36073,36174,1],[36079,36180,1],[36083,36184,1],[36089,36190,-1],[36094,36195,1],[36094,36195,-1],[36098,36199,1],[36099,36200,-1],[36103,36204,1],[36106,36207,1],[36111,36212,-1],[36117,36218,1],[36121,36222,-1],[36125,36226,-1],[36127,36228,-1],[36129,36230,1],[36143,36244,-1],[36153,36254,1],[36162,36263,1],[36164,36265,-1],[36170,36271,-1],[36176,36277,-1],[36177,36278,-1],[36178,36279,-1],[36184,36285,1],[36189,36290,-1],[36196,36297,1],[36199,36300,-1],[36204,36305,1],[36213,36314,1],[36213,36314,-1],[36213,36314,-1],[36222,36323,1],[36223,36324,-1],[36224,36325,1],[36227,36328,1],[36234,36335,-1],[36247,36348,-1],[36248,36349,1],[36256,36357,-1],[36260,36361,-1],[36262,36363,-1],[36267,36368,-1],[36268,36369,1],[36272,36373,1],[36273,36374,1],[36280,36381,1],[36287,36388,1],[36289,36390,1],[36290,36391,-1],[36298,36399,1],[36300,36401,1],[36300,36401,1],[36302,36403,-1],[36305,36406,1],[36311,36412,1],[36312,36413,1],[36325,36426,-1],[36331,36432,1],[36350,36451,-1],[36354,36455,-1],[36355,36456,1],[36358,36459,-1],[36362,36463,-1],[36367,36468,-1],[36383,36484,-1],[36385,36486,-1],[36387,36488,1],[36390,36491,-1],[36391,36492,1],[36394,36495,-1],[36396,36497,-1],[36396,36497,-1],[36397,36498,1],[36397,36498,-1],[36398,36499,-1],[36403,36504,-1],[36403,36504,1],[36406,36507,-1],[36413,36514,1],[36427,36528,-1],[36427,36528,1],[36434,36535,1],[36441,36542,1],[36452,36553,1],[36466,36567,1],[36467,36568,1],[36469,36570,-1],[36470,36571,1],[36489,36590,-1],[36493,36594,-1],[36501,36602,-1],[36504,36605,1],[36510,36611,-1],[36511,36612,-1],[36522,36623,1],[36524,36625,-1],[36525,36626,-1],[36532,36633,1],[36534,36635,1],[36548,36649,-1],[36551,36652,1],[36558,36659,-1],[36560,36661,1],[36564,36665,-1],[36569,36670,-1],[36569,36670,1],[36574,36675,1],[36586,36687,-1],[36587,36688,-1],[36589,36690,-1],[36589,36690,1],[36591,36692,1],[36606,36707,1],[36607,36708,1],[36612,36713,1],[36614,36715,-1],[36624,36725,1],[36627,36728,1],[36633,36734,-1],[36638,36739,-1],[36639,36740,-1],[36645,36746,1],[36645,36746,-1],[36647,36748,1],[36647,36748,1],[36657,36758,-1],[36677,36778,-1],[36683,36784,-1],[36710,36811,-1],[36729,36830,-1],[36730,36831,1],[36738,36839,-1],[36738,36839,-1],[36742,36843,1],[36751,36852,-1],[36751,36852,-1],[36752,36853,1],[36757,36858,1],[36770,36871,1],[36771,36872,-1],[36778,36879,1],[36781,36882,-1],[36786,36887,1],[36809,36910,-1],[36809,36910,-1],[36810,36911,-1],[36822,36923,-1],[36829,36930,-1],[36830,36931,-1],[36832,36933,1],[36835,36936,-1],[36835,36936,-1],[36837,36938,-1],[36844,36945,-1],[36856,36957,-1],[36862,36963,-1],[36867,36968,-1],[36868,36969,-1],[36869,36970,-1],[36876,36977,1],[36880,36981,-1],[36894,36995,1],[36894,36995,1],[36897,36998,1],[36905,37006,1],[36906,37007,1],[36907,37008,-1],[36913,37014,-1],[36922,37023,1],[36935,37036,1],[36939,37040,-1],[36940,37041,-1],[36940,37041,-1],[36946,37047,1],[36953,37054,-1],[36959,37060,-1],[36978,37079,-1],[36980,37081,1],[36983,37084,-1],[36993,37094,1],[37003,37104,1],[37004,37105,1],[37005,37106,1],[37009,37110,1],[37014,37115,1],[37015,37116,1],[37016,37117,1],[37021,37122,-1],[37023,37124,-1],[37036,37137,1],[37037,37138,1],[37041,37142,1],[37047,37148,-1],[37049,37150,1],[37051,37152,1],[37054,37155,-1],[37071,37172,-1],[37071,37172,-1],[37083,37184,1],[37086,37187,-1],[37101,37202,1],[37102,37203,1],[37115,37216,1],[37119,37220,1],[37119,37220,-1],[37124,37225,-1],[37140,37241,1],[37146,37247,1],[37148,37249,-1],[37153,37254,1],[37153,37254,1],[37156,37257,-1],[37184,37285,-1],[37185,37286,1],[37188,37289,1],[37196,37297,1],[37201,37302,-1],[37202,37303,-1],[37202,37303,-1],[37205,37306,1],[37217,37318,-1],[37218,37319,-1],[37229,37330,1],[37229,37330,-1],[37237,37338,1],[37248,37349,1],[37255,37356,-1],[37261,37362,-1],[37264,37365,-1],[37265,37366,1],[37266,37367,-1],[37269,37370,1],[37282,37383,1],[37283,37384,1],[37285,37386,-1],[37297,37398,-1],[37312,37413,1],[37327,37428,1],[37334,37435,-1],[37338,37439,-1],[37345,37446,-1],[37348,37449,1],[37350,37451,-1],[37366,37467,-1],[37370,37471,1],[37373,37474,1],[37381,37482,-1],[37382,37483,-1],[37393,37494,1],[37397,37498,1],[37401,37502,1],[37402,37503,1],[37415,37516,1],[37421,37522,-1],[37428,37529,-1],[37429,37530,-1],[37436,37537,1],[37446,37547,1],[37453,37554,1],[37454,37555,1],[37457,37558,-1],[37470,37571,1],[37486,37587,1],[37493,37594,-1],[37493,37594,1],[37514,37615,1],[37516,37617,1],[37540,37641,1],[37540,37641,-1],[37543,37644,-1],[37545,37646,1],[37549,37650,1],[37551,37652,1],[37552,37653,1],[37557,37658,1],[37557,37658,1],[37560,37661,1],[37584,37685,1],[37590,37691,-1],[37591,37692,1],[37591,37692,-1],[37609,37710,-1],[37619,37720,-1],[37622,37723,-1],[37624,37725,1],[37624,37725,1],[37629,37730,1],[37631,37732,-1],[37636,37737,-1],[37641,37742,-1],[37644,37745,1],[37649,37750,1],[37650,37751,-1],[37653,37754,1],[37654,37755,1],[37655,37756,-1],[37657,37758,-1],[37657,37758,1],[37660,37761,-1],[37662,37763,1],[37667,37768,-1],[37671,37772,-1],[37671,37772,1],[37678,37779,-1],[37684,37785,1],[37692,37793,-1],[37695,37796,1],[37703,37804,1],[37710,37811,1],[37715,37816,1],[37727,37828,1],[37730,37831,-1],[37730,37831,1],[37730,37831,-1],[37731,37832,-1],[37756,37857,1],[37759,37860,1],[37763,37864,1],[37769,37870,1],[37770,37871,-1],[37778,37879,-1],[37793,37894,1],[37795,37896,1],[37797,37898,-1],[37797,37898,1],[37799,37900,1],[37799,37900,1],[37800,37901,-1],[37810,37911,1],[37815,37916,1],[37817,37918,-1],[37820,37921,-1],[37832,37933,-1],[37833,37934,1],[37835,37936,-1],[37840,37941,1],[37841,37942,-1],[37847,37948,1],[37876,37977,1],[37886,37987,-1],[37887,37988,-1],[37888,37989,-1],[37890,37991,-1],[37892,37993,1],[37892,37993,1],[37894,37995,-1],[37896,37997,-1],[37898,37999,-1],[37902,38003,-1],[37918,38019,1],[37918,38019,1],[37921,38022,1],[37929,38030,1],[37932,38033,1],[37943,38044,-1],[37954,38055,-1],[37962,38063,1],[37964,38065,1],[37970,38071,1],[37971,38072,-1],[37972,38073,-1],[37973,38074,-1],[37973,38074,1],[37975,38076,-1],[37982,38083,1],[37983,38084,-1],[37987,38088,1],[38000,38101,1],[38007,38108,-1],[38019,38120,1],[38021,38122,1],[38027,38128,1],[38028,38129,-1],[38037,38138,1],[38044,38145,-1],[38052,38153,1],[38056,38157,1],[38058,38159,-1],[38071,38172,-1],[38073,38174,-1],[38079,38180,1],[38089,38190,1],[38114,38215,1],[38119,38220,-1],[38129,38230,1],[38149,38250,1],[38152,38253,1],[38154,38255,-1],[38165,38266,1],[38167,38268,-1],[38172,38273,1],[38182,38283,1],[38194,38295,-1],[38194,38295,-1],[38196,38297,-1],[38200,38301,1],[38213,38314,-1],[38218,38319,1],[38219,38320,1],[38221,38322,-1],[38224,38325,1],[38232,38333,1],[38240,38341,-1],[38245,38346,-1],[38248,38349,1],[38254,38355,-1],[38255,38356,1],[38260,38361,1],[38264,38365,-1],[38264,38365,1],[38266,38367,1],[38267,38368,1],[38278,38379,-1],[38284,38385,-1],[38292,38393,1],[38293,38394,1],[38300,38401,1],[38302,38403,1],[38323,38424,-1],[38324,38425,-1],[38354,38455,-1],[38355,38456,1],[38363,38464,1],[38365,38466,1],[38368,38469,1],[38372,38473,1],[38381,38482,-1],[38382,38483,1],[38387,38488,1],[38406,38507,1],[38415,38516,-1],[38422,38523,-1],[38428,38529,1],[38453,38554,1],[38458,38559,-1],[38465,38566,1],[38466,38567,1],[38470,38571,1],[38473,38574,1],[38478,38579,1],[38490,38591,-1],[38495,38596,-1],[38496,38597,-1],[38508,38609,-1],[38508,38609,1],[38515,38616,-1],[38517,38618,-1],[38521,38622,1],[38521,38622,1],[38538,38639,-1],[38548,38649,-1],[38558,38659,1],[38560,38661,-1],[38565,38666,1],[38568,38669,1],[38575,38676,-1],[38581,38682,-1],[38584,38685,-1],[38596,38697,-1],[38601,38702,-1],[38604,38705,1],[38617,38718,1],[38618,38719,1],[38621,38722,1],[38630,38731,1],[38636,38737,-1],[38646,38747,1],[38653,38754,-1],[38656,38757,1],[38660,38761,1],[38672,38773,1],[38677,38778,-1],[38678,38779,-1],[38684,38785,-1],[38688,38789,-1],[38692,38793,1],[38707,38808,-1],[38716,38817,-1],[38716,38817,1],[38718,38819,1],[38720,38821,-1],[38722,38823,1],[38728,38829,-1],[38734,38835,-1],[38735,38836,1],[38737,38838,-1],[38742,38843,1],[38742,38843,-1],[38746,38847,-1],[38752,38853,-1],[38754,38855,-1],[38760,38861,-1],[38762,38863,1],[38766,38867,1],[38790,38891,-1],[38790,38891,-1],[38792,38893,1],[38802,38903,1],[38804,38905,-1],[38809,38910,-1],[38810,38911,1],[38811,38912,1],[38817,38918,-1],[38824,38925,-1],[38827,38928,-1],[38828,38929,1],[38841,38942,1],[38843,38944,-1],[38844,38945,1],[38856,38957,1],[38862,38963,-1],[38871,38972,1],[38874,38975,1],[38878,38979,-1],[38887,38988,-1],[38888,38989,1],[38892,38993,1],[38895,38996,-1],[38897,38998,-1],[38898,38999,1],[38899,39000,-1],[38903,39004,-1],[38906,39007,-1],[38909,39010,1],[38914,39015,1],[38920,39021,1],[38921,39022,1],[38928,39029,-1],[38929,39030,1],[38930,39031,1],[38931,39032,-1],[38931,39032,-1],[38936,39037,1],[38958,39059,1],[38972,39073,-1],[38974,39075,-1],[38983,39084,-1],[38992,39093,-1],[38993,39094,1],[39001,39102,1],[39004,39105,-1],[39013,39114,-1],[39018,39119,1],[39021,39122,1],[39029,39130,1],[39042,39143,-1],[39042,39143,1],[39044,39145,-1],[39047,39148,-1],[39049,39150,-1],[39051,39152,-1],[39052,39153,1],[39053,39154,-1],[39063,39164,1],[39075,39176,-1],[39078,39179,-1],[39089,39190,-1],[39092,39193,-1],[39096,39197,-1],[39116,39217,-1],[39120,39221,-1],[39122,39223,1],[39124,39225,1],[39131,39232,-1],[39137,39238,-1],[39139,39240,-1],[39140,39241,1],[39144,39245,-1],[39148,39249,-1],[39160,39261,-1],[39163,39264,1],[39175,39276,-1],[39176,39277,1],[39177,39278,-1],[39179,39280,1],[39179,39280,1],[39201,39302,1],[39205,39306,-1],[39215,39316,-1],[39221,39322,1],[39225,39326,-1],[39227,39328,1],[39232,39333,1],[39232,39333,-1],[39245,39346,-1],[39252,39353,1],[39262,39363,-1],[39263,39364,1],[39278,39379,-1],[39280,39381,1],[39281,39382,-1],[39298,39399,-1],[39302,39403,-1],[39307,39408,1],[39315,39416,-1],[39324,39425,-1],[39328,39429,1],[39334,39435,1],[39336,39437,-1],[39338,39439,1],[39341,39442,1],[39343,39444,1],[39344,39445,1],[39345,39446,1],[39360,39461,1],[39368,39469,1],[39383,39484,-1],[39383,39484,1],[39390,39491,-1],[39390,39491,1],[39394,39495,1],[39406,39507,-1],[39408,39509,1],[39410,39511,-1],[39414,39515,-1],[39433,39534,-1],[39437,39538,1],[39442,39543,1],[39450,39551,-1],[39459,39560,1],[39464,39565,-1],[39467,39568,-1],[39478,39579,-1],[39487,39588,1],[39498,39599,-1],[39505,39606,-1],[39512,39613,1],[39518,39619,-1],[39529,39630,-1],[39529,39630,1],[39531,39632,-1],[39540,39641,-1],[39556,39657,1],[39562,39663,1],[39566,39667,1],[39567,39668,-1],[39572,39673,1],[39573,39674,-1],[39574,39675,1],[39575,39676,1],[39579,39680,-1],[39615,39716,-1],[39618,39719,1],[39618,39719,1],[39630,39731,-1],[39637,39738,-1],[39649,39750,1],[39650,39751,-1],[39650,39751,-1],[39652,39753,1],[39659,39760,1],[39660,39761,1],[39668,39769,1],[39678,39779,1],[39683,39784,-1],[39685,39786,1],[39695,39796,-1],[39703,39804,1],[39707,39808,1],[39708,39809,-1],[39709,39810,-1],[39709,39810,-1],[39713,39814,1],[39717,39818,-1],[39721,39822,-1],[39726,39827,-1],[39727,39828,1],[39727,39828,-1],[39734,39835,-1],[39735,39836,-1],[39739,39840,1],[39745,39846,1],[39748,39849,1],[39752,39853,1],[39752,39853,1],[39755,39856,1],[39761,39862,-1],[39763,39864,-1],[39777,39878,-1],[39798,39899,1],[39799,39900,-1],[39801,39902,-1],[39805,39906,-1],[39806,39907,-1],[39809,39910,1],[39811,39912,-1],[39811,39912,1],[39812,39913,-1],[39825,39926,-1],[39830,39931,1],[39833,39934,1],[39843,39944,-1],[39853,39954,-1],[39854,39955,-1],[39861,39962,-1],[39861,39962,-1],[39864,39965,-1],[39866,39967,1],[39867,39968,1],[39871,39972,-1],[39872,39973,1],[39873,39974,1],[39876,39977,1],[39887,39988,1],[39890,39991,1],[39905,40006,1],[39906,40007,-1],[39907,40008,1],[39915,40016,-1],[39917,40018,1],[39936,40037,-1],[39946,40047,1],[39949,40050,-1],[39953,40054,1],[39953,40054,1],[39953,40054,-1],[39954,40055,-1],[39957,40058,-1],[39958,40059,-1],[39959,40060,-1],[39959,40060,-1],[39964,40065,1],[39964,40065,-1],[39965,40066,1],[39968,40069,1],[39975,40076,1],[39976,40077,1],[39985,40086,-1],[40003,40104,-1],[40003,40104,-1],[40011,40112,1],[40012,40113,-1],[40020,40121,-1],[40039,40140,1],[40051,40152,-1],[40052,40153,-1],[40057,40158,1],[40067,40168,1],[40078,40179,1],[40092,40193,1],[40093,40194,1],[40105,40206,1],[40105,40206,1],[40113,40214,1],[40118,40219,1],[40121,40222,-1],[40124,40225,-1],[40126,40227,-1],[40127,40228,1],[40137,40238,-1],[40145,40246,1],[40155,40256,1],[40159,40260,-1],[40159,40260,-1],[40166,40267,1],[40170,40271,1],[40174,40275,-1],[40176,40277,-1],[40183,40284,1],[40184,40285,-1],[40194,40295,-1],[40199,40300,-1],[40199,40300,-1],[40218,40319,-1],[40227,40328,-1],[40230,40331,-1],[40233,40334,-1],[40249,40350,1],[40258,40359,1],[40259,40360,1],[40259,40360,1],[40267,40368,1],[40272,40373,-1],[40272,40373,-1],[40279,40380,1],[40285,40386,1],[40285,40386,1],[40299,40400,-1],[40308,40409,1],[40312,40413,-1],[40314,40415,1],[40322,40423,1],[40326,40427,1],[40328,40429,1],[40342,40443,-1],[40345,40446,-1],[40348,40449,1],[40354,40455,-1],[40357,40458,1],[40357,40458,-1],[40357,40458,1],[40361,40462,1],[40363,40464,-1],[40368,40469,1],[40372,40473,1],[40379,40480,1],[40380,40481,1],[40385,40486,-1],[40389,40490,-1],[40393,40494,1],[40395,40496,1],[40399,40500,-1],[40399,40500,-1],[40404,40505,1],[40417,40518,1],[40422,40523,-1],[40437,40538,-1],[40439,40540,1],[40449,40550,-1],[40462,40563,1],[40463,40564,1],[40469,40570,1],[40482,40583,1],[40491,40592,-1],[40498,40599,1],[40500,40601,-1],[40502,40603,1],[40508,40609,-1],[40509,40610,1],[40510,40611,1],[40515,40616,-1],[40518,40619,1],[40519,40620,1],[40520,40621,1],[40522,40623,-1],[40523,40624,-1],[40531,40632,-1],[40531,40632,-1],[40532,40633,1],[40545,40646,1],[40550,40651,-1],[40554,40655,-1],[40560,40661,-1],[40563,40664,-1],[40568,40669,-1],[40573,40674,-1],[40576,40677,-1],[40576,40677,-1],[40578,40679,-1],[40579,40680,-1],[40589,40690,-1],[40590,40691,1],[40590,40691,-1],[40593,40694,-1],[40593,40694,1],[40594,40695,1],[40598,40699,1],[40606,40707,-1],[40610,40711,1],[40611,40712,1],[40616,40717,-1],[40618,40719,-1],[40626,40727,-1],[40632,40733,1],[40636,40737,-1],[40641,40742,-1],[40645,40746,1],[40651,40752,1],[40660,40761,-1],[40663,40764,-1],[40669,40770,1],[40674,40775,1],[40679,40780,1],[40680,40781,1],[40686,40787,-1],[40694,40795,1],[40695,40796,-1],[40698,40799,-1],[40704,40805,-1],[40705,40806,1],[40709,40810,1],[40713,40814,1],[40715,40816,1],[40722,40823,-1],[40723,40824,1],[40732,40833,1],[40732,40833,-1],[40736,40837,1],[40742,40843,-1],[40751,40852,-1],[40756,40857,1],[40758,40859,1],[40761,40862,-1],[40776,40877,-1],[40778,40879,-1],[40779,40880,-1],[40780,40881,-1],[40781,40882,1],[40782,40883,1],[40793,40894,1],[40807,40908,1],[40808,40909,1],[40809,40910,1],[40823,40924,1],[40832,40933,-1],[40833,40934,-1],[40834,40935,-1],[40837,40938,-1],[40838,40939,-1],[40848,40949,-1],[40853,40954,1],[40856,40957,-1],[40864,40965,1],[40868,40969,-1],[40871,40972,-1],[40873,40974,1],[40880,40981,-1],[40884,40985,1],[40884,40985,-1],[40891,40992,-1],[40896,40997,-1],[40896,40997,-1],[40904,41005,-1],[40911,41012,-1],[40921,41022,1],[40932,41033,1],[40937,41038,-1],[40940,41041,1],[40941,41042,1],[40943,41044,1],[40945,41046,-1],[40955,41056,1],[40955,41056,1],[40959,41060,1],[40969,41070,1],[40984,41085,1],[40993,41094,1],[40994,41095,-1],[41010,41111,1],[41014,41115,-1],[41014,41115,1],[41017,41118,-1],[41018,41119,-1],[41018,41119,1],[41035,41136,-1],[41041,41142,-1],[41048,41149,1],[41056,41157,1],[41060,41161,-1],[41061,41162,1],[41068,41169,-1],[41080,41181,1],[41084,41185,1],[41089,41190,-1],[41091,41192,-1],[41093,41194,-1],[41106,41207,1],[41106,41207,1],[41109,41210,-1],[41115,41216,-1],[41119,41220,-1],[41129,41230,-1],[41134,41235,-1],[41134,41235,1],[41142,41243,1],[41143,41244,1],[41153,41254,1],[41157,41258,1],[41162,41263,-1],[41192,41293,1],[41196,41297,-1],[41211,41312,-1],[41216,41317,-1],[41222,41323,1],[41224,41325,-1],[41236,41337,-1],[41238,41339,-1],[41246,41347,-1],[41255,41356,1],[41268,41369,-1],[41277,41378,1],[41278,41379,1],[41286,41387,1],[41300,41401,-1],[41305,41406,-1],[41309,41410,-1],[41313,41414,1],[41319,41420,-1],[41325,41426,-1],[41328,41429,1],[41338,41439,1],[41346,41447,1],[41349,41450,1],[41351,41452,-1],[41352,41453,-1],[41361,41462,-1],[41364,41465,-1],[41372,41473,-1],[41380,41481,1],[41380,41481,1],[41384,41485,-1],[41385,41486,1],[41385,41486,-1],[41386,41487,-1],[41387,41488,-1],[41389,41490,-1],[41401,41502,-1],[41404,41505,1],[41412,41513,1],[41414,41515,1],[41415,41516,1],[41418,41519,1],[41423,41524,-1],[41424,41525,1],[41432,41533,-1],[41439,41540,1],[41443,41544,1],[41455,41556,-1],[41461,41562,-1],[41468,41569,-1],[41474,41575,1],[41489,41590,-1],[41490,41591,-1],[41498,41599,-1],[41502,41603,1],[41502,41603,-1],[41522,41623,-1],[41524,41625,-1],[41524,41625,-1],[41528,41629,-1],[41535,41636,1],[41537,41638,-1],[41542,41643,1],[41546,41647,1],[41566,41667,1],[41567,41668,-1],[41569,41670,-1],[41581,41682,1],[41582,41683,1],[41582,41683,1],[41595,41696,1],[41595,41696,1],[41596,41697,1],[41597,41698,1],[41600,41701,1],[41603,41704,-1],[41604,41705,-1],[41613,41714,1],[41617,41718,-1],[41618,41719,-1],[41622,41723,-1],[41625,41726,1],[41628,41729,1],[41629,41730,-1],[41631,41732,1],[41633,41734,1],[41635,41736,1],[41637,41738,1],[41637,41738,-1],[41644,41745,-1],[41652,41753,-1],[41652,41753,-1],[41653,41754,1],[41654,41755,1],[41665,41766,-1],[41669,41770,-1],[41672,41773,1],[41675,41776,1],[41678,41779,-1],[41680,41781,-1],[41693,41794,1],[41694,41795,-1],[41698,41799,1],[41703,41804,-1],[41703,41804,1],[41708,41809,-1],[41708,41809,-1],[41716,41817,-1],[41719,41820,-1],[41730,41831,-1],[41733,41834,1],[41735,41836,1],[41740,41841,-1],[41744,41845,-1],[41750,41851,1],[41752,41853,1],[41763,41864,1],[41773,41874,1],[41775,41876,1],[41780,41881,-1],[41780,41881,-1],[41782,41883,1],[41786,41887,1],[41798,41899,-1],[41801,41902,1],[41805,41906,1],[41820,41921,-1],[41826,41927,1],[41841,41942,1],[41843,41944,1],[41846,41947,-1],[41848,41949,-1],[41853,41954,1],[41863,41964,-1],[41864,41965,1],[41866,41967,1],[41883,41984,1],[41887,41988,1],[41891,41992,1],[41893,41994,-1],[41902,42003,-1],[41911,42012,-1],[41919,42020,1],[41922,42023,-1],[41929,42030,-1],[41933,42034,1],[41933,42034,-1],[41934,42035,1],[41935,42036,1],[41935,42036,-1],[41948,42049,-1],[41948,42049,-1],[41971,42072,-1],[41981,42082,1],[41990,42091,-1],[41992,42093,-1],[42001,42102,1],[42002,42103,-1],[42004,42105,1],[42007,42108,-1],[42009,42110,1],[42009,42110,1],[42020,42121,1],[42022,42123,-1],[42026,42127,1],[42027,42128,1],[42028,42129,-1],[42037,42138,1],[42043,42144,1],[42049,42150,-1],[42052,42153,1],[42054,42155,-1],[42055,42156,-1],[42055,42156,1],[42066,42167,-1],[42076,42177,1],[42076,42177,-1],[42079,42180,1],[42081,42182,-1],[42084,42185,-1],[42093,42194,1],[42094,42195,1],[42103,42204,-1],[42107,42208,1],[42113,42214,1],[42119,42220,1],[42120,42221,1],[42122,42223,1],[42129,42230,1],[42137,42238,-1],[42138,42239,1],[42149,42250,1],[42156,42257,-1],[42168,42269,1],[42171,42272,-1],[42179,42280,-1],[42184,42285,1],[42187,42288,-1],[42190,42291,1],[42191,42292,1],[42198,42299,-1],[42205,42306,-1],[42205,42306,1],[42205,42306,-1],[42208,42309,1],[42209,42310,1],[42211,42312,-1],[42211,42312,-1],[42213,42314,-1],[42214,42315,-1],[42218,42319,1],[42231,42332,-1],[42231,42332,-1],[42231,42332,1],[42235,42336,1],[42240,42341,-1],[42246,42347,-1],[42251,42352,1],[42253,42354,1],[42261,42362,-1],[42265,42366,-1],[42265,42366,-1],[42266,42367,-1],[42269,42370,1],[42273,42374,1],[42276,42377,-1],[42282,42383,1],[42284,42385,-1],[42300,42401,-1],[42301,42402,1],[42307,42408,-1],[42311,42412,1],[42319,42420,1],[42329,42430,1],[42338,42439,1],[42346,42447,1],[42352,42453,1],[42352,42453,1],[42355,42456,1],[42357,42458,-1],[42358,42459,-1],[42364,42465,-1],[42365,42466,1],[42370,42471,1],[42381,42482,1],[42383,42484,-1],[42384,42485,-1],[42384,42485,1],[42385,42486,1],[42410,42511,1],[42410,42511,1],[42416,42517,1],[42429,42530,-1],[42431,42532,-1],[42435,42536,1],[42440,42541,-1],[42448,42549,1],[42450,42551,1],[42450,42551,1],[42452,42553,-1],[42465,42566,1],[42467,42568,-1],[42470,42571,-1],[42473,42574,-1],[42476,42577,-1],[42479,42580,-1],[42492,42593,1],[42492,42593,1],[42496,42597,-1],[42498,42599,1],[42499,42600,-1],[42500,42601,1],[42502,42603,-1],[42504,42605,-1],[42504,42605,-1],[42510,42611,1],[42513,42614,1],[42514,42615,1],[42515,42616,-1],[42525,42626,-1],[42526,42627,1],[42530,42631,1],[42538,42639,1],[42541,42642,1],[42542,42643,-1],[42544,42645,1],[42546,42647,1],[42559,42660,-1],[42562,42663,-1],[42572,42673,1],[42574,42675,1],[42578,42679,-1],[42578,42679,-1],[42581,42682,-1],[42583,42684,-1],[42587,42688,-1],[42588,42689,1],[42597,42698,1],[42607,42708,-1],[42612,42713,-1],[42622,42723,1],[42632,42733,-1],[42634,42735,-1],[42641,42742,-1],[42641,42742,-1],[42644,42745,1],[42653,42754,-1],[42658,42759,1],[42660,42761,1],[42665,42766,1],[42666,42767,1],[42689,42790,1],[42693,42794,1],[42699,42800,1],[42706,42807,1],[42719,42820,1],[42725,42826,1],[42727,42828,-1],[42730,42831,1],[42734,42835,1],[42736,42837,-1],[42744,42845,1],[42759,42860,-1],[42764,42865,1],[42774,42875,-1],[42777,42878,-1],[42780,42881,-1],[42783,42884,-1],[42785,42886,1],[42787,42888,1],[42788,42889,-1],[42796,42897,-1],[42796,42897,-1],[42796,42897,1],[42796,42897,-1],[42803,42904,1],[42813,42914,1],[42814,42915,-1],[42826,42927,-1],[42834,42935,1],[42836,42937,-1],[42836,42937,-1],[42839,42940,1],[42840,42941,-1],[42842,42943,-1],[42842,42943,-1],[42849,42950,1],[42854,42955,1],[42855,42956,-1],[42857,42958,1],[42867,42968,-1],[42873,42974,1],[42878,42979,-1],[42883,42984,1],[42890,42991,1],[42895,42996,-1],[42904,43005,1],[42907,43008,-1],[42909,43010,-1],[42921,43022,1],[42935,43036,1],[42942,43043,1],[42973,43074,1],[42975,43076,1],[42978,43079,1],[42983,43084,-1],[42984,43085,-1],[42987,43088,1],[42989,43090,1],[42990,43091,1],[42996,43097,-1],[42996,43097,1],[43000,43101,1],[43004,43105,1],[43005,43106,-1],[43006,43107,-1],[43008,43109,1],[43017,43118,-1],[43019,43120,-1],[43019,43120,1],[43022,43123,1],[43027,43128,1],[43036,43137,1],[43039,43140,1],[43041,43142,-1],[43053,43154,1],[43065,43166,-1],[43067,43168,-1],[43067,43168,-1],[43069,43170,1],[43103,43204,1],[43104,43205,-1],[43115,43216,1],[43118,43219,1],[43121,43222,-1],[43134,43235,-1],[43135,43236,1],[43147,43248,-1],[43153,43254,1],[43154,43255,-1],[43159,43260,-1],[43165,43266,-1],[43166,43267,-1],[43173,43274,1],[43179,43280,-1],[43192,43293,-1],[43202,43303,1],[43202,43303,1],[43209,43310,1],[43224,43325,1],[43231,43332,-1],[43235,43336,1],[43236,43337,-1],[43237,43338,1],[43241,43342,-1],[43243,43344,-1],[43246,43347,1],[43251,43352,1],[43253,43354,1],[43258,43359,-1],[43263,43364,-1],[43276,43377,-1],[43279,43380,-1],[43291,43392,1],[43296,43397,1],[43298,43399,1],[43312,43413,-1],[43314,43415,-1],[43316,43417,1],[43317,43418,-1],[43317,43418,1],[43324,43425,1],[43326,43427,1],[43327,43428,1],[43337,43438,1],[43339,43440,1],[43340,43441,-1],[43341,43442,-1],[43346,43447,-1],[43355,43456,-1],[43360,43461,-1],[43372,43473,1],[43384,43485,1],[43388,43489,-1],[43390,43491,1],[43391,43492,1],[43393,43494,-1],[43396,43497,1],[43399,43500,1],[43402,43503,-1],[43415,43516,-1],[43415,43516,-1],[43421,43522,-1],[43422,43523,1],[43428,43529,-1],[43428,43529,-1],[43434,43535,1],[43434,43535,-1],[43434,43535,1],[43436,43537,-1],[43457,43558,-1],[43461,43562,1],[43465,43566,-1],[43466,43567,1],[43479,43580,1],[43482,43583,1],[43486,43587,-1],[43486,43587,-1],[43486,43587,1],[43488,43589,1],[43489,43590,-1],[43490,43591,-1],[43496,43597,-1],[43499,43600,1],[43510,43611,-1],[43510,43611,-1],[43516,43617,-1],[43522,43623,-1],[43553,43654,-1],[43558,43659,1],[43564,43665,1],[43569,43670,-1],[43569,43670,-1],[43570,43671,1],[43579,43680,1],[43580,43681,1],[43581,43682,-1],[43585,43686,-1],[43599,43700,1],[43603,43704,-1],[43619,43720,-1],[43626,43727,1],[43628,43729,-1],[43638,43739,-1],[43644,43745,-1],[43644,43745,1],[43652,43753,1],[43654,43755,1],[43669,43770,1],[43671,43772,-1],[43672,43773,-1],[43676,43777,1],[43676,43777,-1],[43680,43781,1],[43681,43782,1],[43683,43784,1],[43692,43793,1],[43699,43800,-1],[43702,43803,-1],[43707,43808,-1],[43718,43819,-1],[43720,43821,1],[43731,43832,-1],[43732,43833,1],[43734,43835,-1],[43740,43841,1],[43744,43845,-1],[43745,43846,-1],[43753,43854,1],[43767,43868,-1],[43768,43869,-1],[43778,43879,-1],[43790,43891,1],[43790,43891,1],[43796,43897,1],[43804,43905,1],[43806,43907,1],[43809,43910,-1],[43816,43917,-1],[43816,43917,-1],[43819,43920,-1],[43820,43921,1],[43821,43922,1],[43828,43929,1],[43830,43931,1],[43831,43932,1],[43839,43940,-1],[43846,43947,1],[43850,43951,-1],[43851,43952,1],[43852,43953,1],[43853,43954,1],[43857,43958,-1],[43869,43970,1],[43893,43994,1],[43896,43997,-1],[43903,44004,-1],[43904,44005,1],[43904,44005,-1],[43907,44008,1],[43910,44011,1],[43919,44020,1],[43922,44023,-1],[43935,44036,1],[43935,44036,-1],[43940,44041,-1],[43941,44042,-1],[43951,44052,1],[43971,44072,-1],[43973,44074,-1],[43975,44076,1],[43976,44077,-1],[43976,44077,1],[43977,44078,1],[43977,44078,1],[43979,44080,-1],[43982,44083,-1],[43982,44083,1],[43983,44084,-1],[43985,44086,1],[43985,44086,-1],[43987,44088,1],[43987,44088,-1],[44001,44102,-1],[44008,44109,1],[44009,44110,-1],[44011,44112,-1],[44027,44128,1],[44038,44139,1],[44048,44149,-1],[44054,44155,1],[44056,44157,-1],[44068,44169,-1],[44072,44173,-1],[44072,44173,1],[44075,44176,-1],[44082,44183,-1],[44085,44186,-1],[44093,44194,-1],[44094,44195,1],[44096,44197,1],[44106,44207,-1],[44110,44211,-1],[44118,44219,1],[44130,44231,1],[44131,44232,-1],[44142,44243,1],[44142,44243,1],[44170,44271,1],[44175,44276,1],[44188,44289,1],[44195,44296,-1],[44199,44300,1],[44207,44308,-1],[44211,44312,1],[44217,44318,1],[44220,44321,1],[44222,44323,1],[44224,44325,1],[44228,44329,-1],[44231,44332,1],[44245,44346,1],[44248,44349,1],[44248,44349,-1],[44260,44361,1],[44261,44362,1],[44267,44368,1],[44271,44372,-1],[44272,44373,1],[44283,44384,-1],[44288,44389,-1],[44289,44390,-1],[44293,44394,-1],[44304,44405,1],[44308,44409,-1],[44310,44411,-1],[44329,44430,-1],[44333,44434,-1],[44335,44436,1],[44337,44438,1],[44342,44443,1],[44345,44446,-1],[44349,44450,-1],[44353,44454,1],[44354,44455,-1],[44354,44455,1],[44361,44462,1],[44361,44462,-1],[44378,44479,1],[44381,44482,-1],[44397,44498,-1],[44401,44502,-1],[44404,44505,1],[44404,44505,-1],[44405,44506,-1],[44408,44509,1],[44408,44509,1],[44409,44510,1],[44410,44511,1],[44416,44517,1],[44418,44519,1],[44428,44529,1],[44430,44531,-1],[44432,44533,1],[44432,44533,-1],[44441,44542,-1],[44443,44544,1],[44448,44549,-1],[44452,44553,-1],[44457,44558,1],[44459,44560,1],[44467,44568,-1],[44467,44568,-1],[44483,44584,1],[44483,44584,-1],[44485,44586,1],[44490,44591,-1],[44503,44604,-1],[44530,44631,-1],[44534,44635,-1],[44542,44643,-1],[44553,44654,1],[44557,44658,-1],[44558,44659,1],[44564,44665,-1],[44569,44670,1],[44571,44672,-1],[44571,44672,-1],[44577,44678,1],[44578,44679,-1],[44586,44687,1],[44587,44688,1],[44590,44691,-1],[44596,44697,1],[44598,44699,-1],[44598,44699,1],[44600,44701,-1],[44605,44706,-1],[44607,44708,-1],[44609,44710,1],[44615,44716,1],[44616,44717,1],[44633,44734,-1],[44635,44736,1],[44637,44738,1],[44638,44739,1],[44640,44741,-1],[44641,44742,1],[44644,44745,-1],[44647,44748,-1],[44658,44759,-1],[44664,44765,1],[44669,44770,1],[44669,44770,1],[44670,44771,-1],[44673,44774,1],[44674,44775,1],[44676,44777,-1],[44693,44794,-1],[44703,44804,-1],[44713,44814,-1],[44716,44817,-1],[44719,44820,-1],[44722,44823,1],[44733,44834,-1],[44736,44837,1],[44738,44839,-1],[44739,44840,-1],[44744,44845,1],[44762,44863,1],[44763,44864,1],[44766,44867,1],[44766,44867,-1],[44779,44880,-1],[44786,44887,1],[44790,44891,-1],[44792,44893,1],[44821,44922,-1],[44826,44927,-1],[44836,44937,1],[44844,44945,-1],[44846,44947,1],[44852,44953,1],[44860,44961,1],[44864,44965,-1],[44868,44969,-1],[44870,44971,-1],[44879,44980,-1],[44880,44981,1],[44880,44981,1],[44888,44989,-1],[44906,45007,-1],[44911,45012,-1],[44912,45013,1],[44912,45013,1],[44914,45015,1],[44915,45016,1],[44918,45019,-1],[44918,45019,1],[44919,45020,-1],[44920,45021,1],[44920,45021,1],[44923,45024,-1],[44930,45031,1],[44931,45032,-1],[44933,45034,-1],[44935,45036,-1],[44936,45037,-1],[44941,45042,-1],[44945,45046,-1],[44946,45047,-1],[44946,45047,1],[44949,45050,1],[44953,45054,1],[44957,45058,-1],[44959,45060,1],[44962,45063,1],[44963,45064,-1],[44963,45064,-1],[44978,45079,-1],[44984,45085,-1],[44984,45085,-1],[44987,45088,-1],[44996,45097,-1],[45003,45104,-1],[45007,45108,-1],[45010,45111,1],[45024,45125,-1],[45025,45126,1],[45030,45131,-1],[45039,45140,-1],[45046,45147,-1],[45046,45147,-1],[45049,45150,1],[45056,45157,1],[45057,45158,-1],[45065,45166,-1],[45087,45188,-1],[45088,45189,-1],[45089,45190,1],[45099,45200,1],[45114,45215,1],[45122,45223,-1],[45122,45223,1],[45124,45225,1],[45134,45235,1],[45139,45240,1],[45144,45245,1],[45158,45259,1],[45163,45264,1],[45164,45265,1],[45171,45272,-1],[45177,45278,-1],[45184,45285,1],[45192,45293,-1],[45204,45305,1],[45212,45313,1],[45225,45326,-1],[45227,45328,1],[45228,45329,-1],[45229,45330,1],[45230,45331,1],[45233,45334,1],[45237,45338,-1],[45251,45352,1],[45264,45365,-1],[45265,45366,1],[45266,45367,1],[45266,45367,-1],[45267,45368,-1],[45271,45372,1],[45272,45373,-1],[45274,45375,-1],[45286,45387,1],[45290,45391,-1],[45293,45394,-1],[45294,45395,1],[45298,45399,-1],[45299,45400,-1],[45300,45401,-1],[45302,45403,-1],[45304,45405,1],[45306,45407,-1],[45309,45410,-1],[45310,45411,-1],[45310,45411,-1],[45310,45411,-1],[45326,45427,-1],[45330,45431,1],[45333,45434,-1],[45341,45442,1],[45344,45445,1],[45352,45453,1],[45354,45455,-1],[45369,45470,-1],[45378,45479,1],[45384,45485,1],[45391,45492,1],[45391,45492,-1],[45392,45493,-1],[45396,45497,1],[45398,45499,1],[45401,45502,1],[45404,45505,-1],[45416,45517,1],[45426,45527,-1],[45434,45535,1],[45444,45545,1],[45444,45545,-1],[45450,45551,1],[45456,45557,-1],[45459,45560,-1],[45465,45566,-1],[45465,45566,1],[45465,45566,1],[45465,45566,1],[45466,45567,-1],[45480,45581,-1],[45495,45596,-1],[45500,45601,-1],[45507,45608,1],[45546,45647,1],[45558,45659,1],[45561,45662,-1],[45569,45670,-1],[45574,45675,1],[45576,45677,1],[45595,45696,1],[45596,45697,-1],[45597,45698,1],[45617,45718,-1],[45619,45720,1],[45620,45721,1],[45630,45731,1],[45630,45731,-1],[45638,45739,-1],[45642,45743,1],[45643,45744,1],[45645,45746,1],[45656,45757,-1],[45666,45767,-1],[45669,45770,-1],[45669,45770,1],[45669,45770,1],[45670,45771,1],[45673,45774,-1],[45674,45775,-1],[45675,45776,-1],[45677,45778,1],[45683,45784,1],[45704,45805,1],[45705,45806,-1],[45709,45810,1],[45713,45814,-1],[45713,45814,-1],[45713,45814,-1],[45721,45822,1],[45729,45830,-1],[45733,45834,1],[45735,45836,1],[45742,45843,-1],[45753,45854,1],[45759,45860,1],[45761,45862,1],[45762,45863,-1],[45767,45868,-1],[45769,45870,-1],[45777,45878,1],[45792,45893,1],[45803,45904,-1],[45808,45909,-1],[45809,45910,-1],[45810,45911,1],[45810,45911,-1],[45818,45919,1],[45823,45924,-1],[45827,45928,-1],[45839,45940,-1],[45852,45953,1],[45855,45956,1],[45874,45975,-1],[45876,45977,1],[45881,45982,1],[45883,45984,1],[45898,45999,1],[45901,46002,-1],[45903,46004,1],[45908,46009,-1],[45923,46024,-1],[45924,46025,-1],[45928,46029,1],[45934,46035,-1],[45939,46040,1],[45946,46047,1],[45949,46050,1],[45956,46057,-1],[45957,46058,1],[45965,46066,1],[45967,46068,1],[45970,46071,-1],[45983,46084,1],[45985,46086,-1],[45989,46090,-1],[45993,46094,1],[45997,46098,-1],[45998,46099,-1],[46001,46102,-1],[46004,46105,-1],[46007,46108,1],[46009,46110,-1],[46011,46112,1],[46032,46133,1],[46035,46136,1],[46042,46143,1],[46065,46166,1],[46067,46168,1],[46069,46170,1],[46074,46175,1],[46081,46182,1],[46092,46193,1],[46093,46194,1],[46102,46203,1],[46111,46212,1],[46112,46213,-1],[46116,46217,1],[46116,46217,1],[46140,46241,-1],[46141,46242,-1],[46146,46247,1],[46150,46251,-1],[46155,46256,1],[46158,46259,1],[46161,46262,-1],[46162,46263,1],[46162,46263,-1],[46164,46265,1],[46164,46265,-1],[46164,46265,-1],[46166,46267,-1],[46183,46284,1],[46184,46285,1],[46186,46287,1],[46197,46298,-1],[46200,46301,-1],[46201,46302,1],[46202,46303,-1],[46203,46304,1],[46214,46315,1],[46222,46323,-1],[46228,46329,-1],[46235,46336,1],[46235,46336,-1],[46248,46349,-1],[46254,46355,1],[46255,46356,-1],[46258,46359,-1],[46265,46366,1],[46268,46369,-1],[46268,46369,-1],[46275,46376,1],[46284,46385,-1],[46299,46400,-1],[46299,46400,1],[46299,46400,1],[46309,46410,-1],[46309,46410,1],[46317,46418,1],[46318,46419,-1],[46319,46420,-1],[46331,46432,-1],[46346,46447,-1],[46353,46454,1],[46354,46455,1],[46362,46463,-1],[46365,46466,-1],[46366,46467,-1],[46370,46471,1],[46372,46473,1],[46377,46478,-1],[46378,46479,1],[46379,46480,-1],[46382,46483,-1],[46394,46495,1],[46394,46495,-1],[46397,46498,-1],[46402,46503,-1],[46403,46504,1],[46415,46516,-1],[46419,46520,1],[46422,46523,1],[46425,46526,1],[46432,46533,1],[46435,46536,-1],[46445,46546,1],[46452,46553,1],[46455,46556,-1],[46457,46558,1],[46464,46565,-1],[46470,46571,-1],[46473,46574,1],[46478,46579,-1],[46480,46581,1],[46480,46581,1],[46484,46585,1],[46495,46596,-1],[46501,46602,1],[46501,46602,1],[46503,46604,-1],[46512,46613,1],[46520,46621,1],[46520,46621,1],[46522,46623,1],[46532,46633,-1],[46540,46641,1],[46541,46642,-1],[46544,46645,-1],[46546,46647,1],[46556,46657,-1],[46563,46664,-1],[46564,46665,-1],[46569,46670,-1],[46573,46674,1],[46576,46677,1],[46577,46678,-1],[46586,46687,-1],[46588,46689,1],[46591,46692,1],[46609,46710,-1],[46610,46711,1],[46610,46711,-1],[46614,46715,1],[46616,46717,1],[46616,46717,1],[46617,46718,-1],[46629,46730,-1],[46639,46740,1],[46639,46740,-1],[46649,46750,-1],[46651,46752,-1],[46661,46762,1],[46664,46765,1],[46667,46768,-1],[46677,46778,1],[46685,46786,1],[46687,46788,1],[46693,46794,1],[46697,46798,-1],[46699,46800,-1],[46700,46801,-1],[46700,46801,-1],[46701,46802,-1],[46703,46804,1],[46707,46808,-1],[46720,46821,-1],[46721,46822,-1],[46721,46822,-1],[46723,46824,1],[46730,46831,-1],[46731,46832,-1],[46731,46832,1],[46732,46833,-1],[46735,46836,-1],[46740,46841,-1],[46741,46842,-1],[46745,46846,-1],[46753,46854,1],[46759,46860,-1],[46770,46871,1],[46775,46876,1],[46776,46877,1],[46779,46880,-1],[46783,46884,-1],[46784,46885,-1],[46801,46902,-1],[46807,46908,1],[46810,46911,1],[46814,46915,-1],[46828,46929,1],[46828,46929,1],[46831,46932,1],[46831,46932,1],[46833,46934,-1],[46834,46935,1],[46836,46937,1],[46837,46938,-1],[46840,46941,-1],[46841,46942,1],[46842,46943,1],[46843,46944,-1],[46857,46958,1],[46872,46973,1],[46878,46979,-1],[46888,46989,-1],[46891,46992,-1],[46894,46995,-1],[46903,47004,1],[46912,47013,1],[46912,47013,1],[46923,47024,-1],[46924,47025,-1],[46928,47029,-1],[46931,47032,1],[46933,47034,1],[46934,47035,1],[46934,47035,-1],[46942,47043,1],[46942,47043,-1],[46944,47045,-1],[46951,47052,-1],[46957,47058,-1],[46961,47062,-1],[46964,47065,1],[46971,47072,1],[46972,47073,1],[46973,47074,-1],[46974,47075,1],[46980,47081,1],[46991,47092,1],[47002,47103,-1],[47007,47108,1],[47013,47114,1],[47020,47121,1],[47020,47121,-1],[47028,47129,-1],[47030,47131,-1],[47032,47133,1],[47035,47136,1],[47043,47144,1],[47045,47146,-1],[47053,47154,1],[47054,47155,1],[47055,47156,1],[47064,47165,1],[47074,47175,1],[47079,47180,-1],[47085,47186,-1],[47085,47186,-1],[47092,47193,-1],[47103,47204,1],[47107,47208,1],[47112,47213,-1],[47117,47218,-1],[47120,47221,1],[47126,47227,1],[47135,47236,-1],[47141,47242,1],[47149,47250,-1],[47152,47253,1],[47158,47259,1],[47159,47260,1],[47161,47262,1],[47164,47265,1],[47167,47268,-1],[47188,47289,-1],[47199,47300,1],[47214,47315,1],[47220,47321,-1],[47223,47324,1],[47223,47324,1],[47228,47329,1],[47251,47352,-1],[47252,47353,1],[47274,47375,-1],[47274,47375,1],[47277,47378,-1],[47284,47385,-1],[47288,47389,-1],[47295,47396,1],[47300,47401,-1],[47305,47406,1],[47306,47407,1],[47308,47409,1],[47312,47413,1],[47314,47415,-1],[47320,47421,-1],[47323,47424,-1],[47323,47424,1],[47327,47428,1],[47332,47433,-1],[47335,47436,1],[47341,47442,-1],[47345,47446,-1],[47347,47448,1],[47349,47450,-1],[47350,47451,-1],[47350,47451,-1],[47351,47452,-1],[47352,47453,1],[47352,47453,1],[47353,47454,1],[47360,47461,-1],[47365,47466,1],[47367,47468,-1],[47369,47470,-1],[47375,47476,-1],[47376,47477,-1],[47377,47478,-1],[47378,47479,-1],[47384,47485,-1],[47394,47495,-1],[47415,47516,1],[47417,47518,1],[47419,47520,-1],[47421,47522,1],[47424,47525,-1],[47424,47525,-1],[47425,47526,1],[47436,47537,-1],[47442,47543,1],[47444,47545,1],[47446,47547,1],[47446,47547,1],[47447,47548,1],[47447,47548,1],[47452,47553,-1],[47453,47554,1],[47455,47556,1],[47467,47568,-1],[47470,47571,1],[47471,47572,1],[47474,47575,-1],[47480,47581,1],[47482,47583,-1],[47484,47585,1],[47488,47589,-1],[47507,47608,-1],[47509,47610,-1],[47512,47613,1],[47515,47616,1],[47523,47624,1],[47524,47625,1],[47526,47627,1],[47529,47630,1],[47530,47631,1],[47530,47631,1],[47540,47641,-1],[47563,47664,-1],[47565,47666,1],[47568,47669,-1],[47572,47673,-1],[47579,47680,-1],[47588,47689,-1],[47590,47691,1],[47592,47693,-1],[47594,47695,-1],[47608,47709,1],[47613,47714,-1],[47634,47735,-1],[47637,47738,-1],[47638,47739,-1],[47655,47756,-1],[47664,47765,1],[47665,47766,-1],[47665,47766,-1],[47666,47767,1],[47671,47772,1],[47674,47775,-1],[47675,47776,1],[47693,47794,1],[47697,47798,1],[47701,47802,1],[47703,47804,1],[47704,47805,-1],[47705,47806,-1],[47708,47809,1],[47724,47825,-1],[47729,47830,-1],[47738,47839,-1],[47745,47846,1],[47752,47853,1],[47754,47855,-1],[47754,47855,1],[47764,47865,-1],[47765,47866,-1],[47770,47871,-1],[47776,47877,1],[47777,47878,-1],[47779,47880,1],[47780,47881,-1],[47783,47884,-1],[47783,47884,-1],[47795,47896,-1],[47801,47902,1],[47807,47908,1],[47813,47914,-1],[47820,47921,-1],[47821,47922,-1],[47824,47925,-1],[47825,47926,1],[47830,47931,1],[47835,47936,1],[47838,47939,-1],[47848,47949,1],[47856,47957,-1],[47860,47961,-1],[47860,47961,1],[47861,47962,1],[47869,47970,1],[47875,47976,1],[47876,47977,-1],[47887,47988,-1],[47889,47990,-1],[47893,47994,-1],[47902,48003,1],[47905,48006,1],[47907,48008,-1],[47916,48017,1],[47923,48024,1],[47929,48030,-1],[47929,48030,1],[47933,48034,1],[47933,48034,1],[47938,48039,-1],[47942,48043,1],[47945,48046,-1],[47953,48054,-1],[47953,48054,1],[47970,48071,-1],[47972,48073,1],[47979,48080,1],[47981,48082,1],[47984,48085,1],[47996,48097,-1],[47999,48100,-1],[48007,48108,1],[48016,48117,-1],[48017,48118,1],[48017,48118,-1],[48018,48119,-1],[48021,48122,1],[48030,48131,1],[48038,48139,1],[48040,48141,1],[48042,48143,1],[48042,48143,-1],[48057,48158,-1],[48059,48160,-1],[48063,48164,1],[48072,48173,1],[48073,48174,1],[48074,48175,1],[48076,48177,1],[48080,48181,-1],[48086,48187,-1],[48089,48190,-1],[48091,48192,-1],[48094,48195,1],[48094,48195,-1],[48097,48198,1],[48108,48209,1],[48110,48211,-1],[48112,48213,-1],[48118,48219,-1],[48120,48221,-1],[48121,48222,-1],[48122,48223,-1],[48133,48234,-1],[48145,48246,1],[48155,48256,1],[48156,48257,-1],[48171,48272,1],[48174,48275,-1],[48179,48280,-1],[48189,48290,-1],[48190,48291,1],[48192,48293,1],[48202,48303,-1],[48203,48304,1],[48208,48309,-1],[48210,48311,1],[48213,48314,1],[48217,48318,1],[48219,48320,-1],[48219,48320,1],[48227,48328,-1],[48231,48332,1],[48235,48336,1],[48242,48343,1],[48248,48349,1],[48250,48351,-1],[48252,48353,-1],[48255,48356,1],[48260,48361,-1],[48268,48369,1],[48270,48371,1],[48273,48374,1],[48290,48391,1],[48293,48394,1],[48304,48405,1],[48311,48412,-1],[48316,48417,-1],[48325,48426,1],[48326,48427,-1],[48327,48428,1],[48329,48430,1],[48331,48432,-1]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-3.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-3.json
new file mode 100644
index 0000000000..c2a56bd328
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/lazyfeatures-3.json
@@ -0,0 +1 @@
+[[48340,48441,1],[48341,48442,-1],[48356,48457,1],[48366,48467,-1],[48375,48476,1],[48376,48477,-1],[48377,48478,-1],[48378,48479,1],[48379,48480,-1],[48403,48504,1],[48415,48516,1],[48425,48526,-1],[48426,48527,1],[48426,48527,-1],[48430,48531,1],[48436,48537,-1],[48444,48545,-1],[48446,48547,1],[48453,48554,-1],[48454,48555,1],[48460,48561,1],[48470,48571,1],[48470,48571,1],[48477,48578,-1],[48478,48579,1],[48481,48582,-1],[48489,48590,-1],[48489,48590,-1],[48491,48592,1],[48501,48602,1],[48505,48606,1],[48516,48617,-1],[48527,48628,-1],[48530,48631,-1],[48540,48641,-1],[48544,48645,1],[48546,48647,-1],[48554,48655,1],[48555,48656,1],[48558,48659,-1],[48558,48659,-1],[48559,48660,-1],[48565,48666,1],[48567,48668,-1],[48577,48678,1],[48581,48682,-1],[48584,48685,1],[48588,48689,1],[48591,48692,1],[48595,48696,-1],[48598,48699,-1],[48601,48702,1],[48601,48702,1],[48606,48707,1],[48610,48711,-1],[48614,48715,1],[48628,48729,-1],[48629,48730,-1],[48630,48731,1],[48633,48734,1],[48647,48748,1],[48660,48761,-1],[48673,48774,1],[48685,48786,1],[48688,48789,-1],[48699,48800,-1],[48705,48806,-1],[48711,48812,-1],[48713,48814,-1],[48715,48816,-1],[48716,48817,1],[48720,48821,1],[48741,48842,-1],[48749,48850,1],[48751,48852,1],[48751,48852,-1],[48769,48870,1],[48781,48882,-1],[48783,48884,1],[48788,48889,1],[48793,48894,1],[48794,48895,-1],[48796,48897,1],[48805,48906,-1],[48812,48913,-1],[48819,48920,1],[48837,48938,1],[48852,48953,1],[48852,48953,1],[48857,48958,1],[48858,48959,1],[48860,48961,-1],[48866,48967,-1],[48871,48972,1],[48872,48973,-1],[48877,48978,-1],[48880,48981,1],[48882,48983,-1],[48887,48988,1],[48888,48989,1],[48888,48989,-1],[48888,48989,1],[48889,48990,-1],[48919,49020,-1],[48928,49029,-1],[48928,49029,-1],[48929,49030,1],[48936,49037,-1],[48942,49043,1],[48944,49045,1],[48944,49045,-1],[48947,49048,1],[48947,49048,-1],[48950,49051,-1],[48951,49052,-1],[48953,49054,1],[48955,49056,-1],[48956,49057,-1],[48956,49057,1],[48957,49058,1],[48961,49062,1],[48962,49063,1],[48964,49065,1],[48972,49073,-1],[48979,49080,1],[48984,49085,1],[48994,49095,1],[48995,49096,-1],[49000,49101,1],[49004,49105,-1],[49009,49110,1],[49017,49118,-1],[49024,49125,-1],[49056,49157,1],[49062,49163,-1],[49072,49173,-1],[49073,49174,-1],[49081,49182,-1],[49092,49193,-1],[49092,49193,-1],[49093,49194,-1],[49096,49197,1],[49099,49200,1],[49107,49208,1],[49115,49216,1],[49118,49219,1],[49129,49230,1],[49137,49238,1],[49138,49239,-1],[49140,49241,-1],[49142,49243,-1],[49145,49246,1],[49146,49247,-1],[49147,49248,1],[49148,49249,-1],[49153,49254,-1],[49161,49262,-1],[49168,49269,1],[49174,49275,-1],[49179,49280,1],[49183,49284,1],[49184,49285,-1],[49191,49292,1],[49191,49292,1],[49197,49298,-1],[49206,49307,1],[49207,49308,1],[49209,49310,1],[49213,49314,-1],[49213,49314,1],[49217,49318,-1],[49217,49318,1],[49228,49329,1],[49231,49332,1],[49234,49335,1],[49236,49337,-1],[49238,49339,1],[49241,49342,-1],[49251,49352,1],[49259,49360,-1],[49265,49366,1],[49270,49371,1],[49272,49373,1],[49282,49383,-1],[49284,49385,1],[49289,49390,1],[49289,49390,1],[49291,49392,1],[49291,49392,-1],[49297,49398,-1],[49304,49405,-1],[49311,49412,-1],[49323,49424,1],[49329,49430,1],[49332,49433,1],[49341,49442,-1],[49345,49446,-1],[49347,49448,1],[49359,49460,-1],[49374,49475,1],[49379,49480,-1],[49381,49482,-1],[49395,49496,1],[49396,49497,-1],[49397,49498,1],[49397,49498,-1],[49404,49505,1],[49410,49511,-1],[49411,49512,1],[49412,49513,-1],[49418,49519,1],[49426,49527,1],[49427,49528,-1],[49438,49539,-1],[49445,49546,-1],[49450,49551,-1],[49454,49555,1],[49460,49561,-1],[49463,49564,1],[49466,49567,1],[49473,49574,1],[49477,49578,-1],[49480,49581,-1],[49483,49584,-1],[49486,49587,-1],[49491,49592,-1],[49494,49595,1],[49496,49597,1],[49500,49601,1],[49501,49602,1],[49511,49612,1],[49514,49615,1],[49518,49619,1],[49532,49633,-1],[49534,49635,1],[49539,49640,-1],[49545,49646,-1],[49558,49659,-1],[49562,49663,-1],[49577,49678,-1],[49578,49679,-1],[49615,49716,-1],[49637,49738,-1],[49657,49758,-1],[49668,49769,-1],[49686,49787,-1],[49693,49794,-1],[49713,49814,-1],[49720,49821,-1],[49724,49825,-1],[49741,49842,-1],[49741,49842,-1],[49747,49848,-1],[49763,49864,-1],[49781,49882,-1],[49798,49899,-1],[49808,49909,-1],[49814,49915,-1],[49836,49937,-1],[49841,49942,-1],[49845,49946,-1],[49847,49948,-1],[49854,49955,-1],[49876,49977,-1],[49886,49987,-1],[49886,49987,-1],[49886,49987,-1]]
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/trackData.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/trackData.json
new file mode 100644
index 0000000000..b9117f2a4f
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/bam_simulated/trackData.json
@@ -0,0 +1 @@
+{"histogramMeta":[{"basesPerBin":"20","arrayParams":{"length":2501,"chunkSize":10000,"urlTemplate":"hist-20-{chunk}.json"}},{"basesPerBin":"40","arrayParams":{"length":1251,"chunkSize":10000,"urlTemplate":"hist-40-{chunk}.json"}},{"basesPerBin":"100","arrayParams":{"length":501,"chunkSize":10000,"urlTemplate":"hist-100-{chunk}.json"}},{"basesPerBin":"200","arrayParams":{"length":251,"chunkSize":10000,"urlTemplate":"hist-200-{chunk}.json"}},{"basesPerBin":"400","arrayParams":{"length":126,"chunkSize":10000,"urlTemplate":"hist-400-{chunk}.json"}},{"basesPerBin":"1000","arrayParams":{"length":51,"chunkSize":10000,"urlTemplate":"hist-1000-{chunk}.json"}}],"subfeatureClasses":null,"headers":["start","end","strand"],"lazyIndex":2,"featureCount":9596,"histStats":[{"bases":20,"max":44,"mean":23.2163134746102},{"bases":40,"max":50,"mean":27.123101518785},{"bases":100,"max":71,"mean":38.497005988024},{"bases":200,"max":88,"mean":57.7450199203187},{"bases":400,"max":130,"mean":95.531746031746},{"bases":1000,"max":244,"mean":207.352941176471}],"featureNCList":[[2,17152,{"chunk":0}],[17055,32741,{"chunk":1}],[32644,48432,{"chunk":2}],[48340,49987,{"chunk":3}]],"key":"Simulated next-gen reads","className":"basic","clientConfig":{"histScale":"2","featureCss":"background-color: #66F; height: 8px","histCss":"background-color: #88F"},"arrowheadClass":null,"subfeatureHeaders":null,"label":"bam_simulated","type":"FeatureTrack","sublistIndex":3,"lazyfeatureUrlTemplate":"lazyfeatures-{chunk}.json"}
\ No newline at end of file
diff --git a/tests/data/volvox_formatted_1_2_1/tracks/ctgA/volvox_microarray.wig.json b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/volvox_microarray.wig.json
new file mode 100644
index 0000000000..eb1b60b258
--- /dev/null
+++ b/tests/data/volvox_formatted_1_2_1/tracks/ctgA/volvox_microarray.wig.json
@@ -0,0 +1,85 @@
+{
+ "zoomLevels" : [
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/1/",
+ "height" : 100,
+ "basesPerTile" : 2000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/2/",
+ "height" : 100,
+ "basesPerTile" : 4000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/5/",
+ "height" : 100,
+ "basesPerTile" : 10000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/10/",
+ "height" : 100,
+ "basesPerTile" : 20000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/20/",
+ "height" : 100,
+ "basesPerTile" : 40000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/50/",
+ "height" : 100,
+ "basesPerTile" : 100000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/100/",
+ "height" : 100,
+ "basesPerTile" : 200000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/200/",
+ "height" : 100,
+ "basesPerTile" : 400000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/500/",
+ "height" : 100,
+ "basesPerTile" : 1000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/1000/",
+ "height" : 100,
+ "basesPerTile" : 2000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/2000/",
+ "height" : 100,
+ "basesPerTile" : 4000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/5000/",
+ "height" : 100,
+ "basesPerTile" : 10000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/10000/",
+ "height" : 100,
+ "basesPerTile" : 20000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/20000/",
+ "height" : 100,
+ "basesPerTile" : 40000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/50000/",
+ "height" : 100,
+ "basesPerTile" : 100000000
+ },
+ {
+ "urlPrefix" : "tiles/volvox_microarray.wig/ctgA/100000/",
+ "height" : 100,
+ "basesPerTile" : 200000000
+ }
+ ],
+ "tileWidth" : 2000
+}
diff --git a/tests/data/volvox_formatted_refseqs/trackList.json b/tests/data/volvox_formatted_refseqs/trackList.json
index 1a0e8a8fc7..6a75f7abe3 100644
--- a/tests/data/volvox_formatted_refseqs/trackList.json
+++ b/tests/data/volvox_formatted_refseqs/trackList.json
@@ -1,10 +1,8 @@
{
"tracks" : [
{
- "config" : {
- "chunkSize" : 20000,
- "urlTemplate" : "seq/{refseq}/"
- },
+ "chunkSize" : 20000,
+ "urlTemplate" : "seq/{refseq}/",
"type" : "SequenceTrack",
"label" : "DNA",
"key" : "DNA"
diff --git a/tests/perl_tests/bam-to-json.pl.t b/tests/perl_tests/bam-to-json.pl.t
index b0a1a5b1b5..da8c44ac16 100644
--- a/tests/perl_tests/bam-to-json.pl.t
+++ b/tests/perl_tests/bam-to-json.pl.t
@@ -34,8 +34,8 @@ is( ref( $out->{ catfile(qw( tracks TestBAM ctgA lf-4.json )) } ),
'BAM! got some features up in there',
);
-is( $out->{'trackList.json'}{tracks}[1]{config}{style}{foobee}, 1, 'got some style' );
-is( $out->{'trackList.json'}{tracks}[1]{config}{style}{className}, 'basic', 'got default CSS class' );
+is( $out->{'trackList.json'}{tracks}[1]{style}{foobee}, 1, 'got some style' );
+is( $out->{'trackList.json'}{tracks}[1]{style}{className}, 'basic', 'got default CSS class' );
#system "find $tempdir";
diff --git a/tests/perl_tests/biodb-to-json.pl.t b/tests/perl_tests/biodb-to-json.pl.t
index 0be67b70fa..76aa3632ce 100644
--- a/tests/perl_tests/biodb-to-json.pl.t
+++ b/tests/perl_tests/biodb-to-json.pl.t
@@ -9,261 +9,286 @@ use File::Copy::Recursive 'dircopy';
use JsonGenerator;
-my $tempdir = File::Temp->newdir( CLEANUP => $ENV{KEEP_ALL} ? 0 : 1 );
-my $read_json = sub { JsonGenerator::readJSON( catfile( $tempdir, @_ ) ) };
+{ # test volvox
-dircopy( 'tests/data/volvox_formatted_refseqs', $tempdir );
+ my $tempdir = File::Temp->newdir( CLEANUP => $ENV{KEEP_ALL} ? 0 : 1 );
+ my $read_json = sub { JsonGenerator::readJSON( catfile( $tempdir, @_ ) ) };
-diag "writing output to $tempdir";
-system $^X, 'bin/biodb-to-json.pl', (
- '--quiet',
- '--conf' => 'sample_data/raw/volvox.json',
- '--out' => "$tempdir",
- );
-ok( ! $?, 'biodb-to-json.pl ran ok' );
+ dircopy( 'tests/data/volvox_formatted_refseqs', $tempdir );
-my $hist_output = $read_json->(qw( tracks Transcript ctgA hist-100000-0.json ));
-is_deeply( $hist_output, [1], 'got right histogram output' ) or diag explain( $hist_output );
+ diag "writing output to $tempdir";
+ system $^X, 'bin/biodb-to-json.pl', (
+ '--quiet',
+ '--conf' => 'sample_data/raw/volvox.json',
+ '--out' => "$tempdir",
+ );
+ ok( ! $?, 'biodb-to-json.pl ran ok' );
-my $tracklist = $read_json->('trackList.json');
-is_deeply( $tracklist,
+ my $hist_output = $read_json->(qw( tracks Transcript ctgA hist-100000-0.json ));
+ is_deeply( $hist_output, [1], 'got right histogram output' ) or diag explain( $hist_output );
+
+ my $tracklist = $read_json->('trackList.json');
+ is_deeply( $tracklist,
+ {
+ 'formatVersion' => 1,
+ 'tracks' => [
+ {
+ 'chunkSize' => 20000,
+ 'urlTemplate' => 'seq/{refseq}/',
+ 'key' => 'DNA',
+ 'label' => 'DNA',
+ 'type' => 'SequenceTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ style => { 'className' => 'feature2' },
+ 'compress' => 0,
+ 'feature' => [
+ 'remark'
+ ],
+ 'track' => 'ExampleFeatures',
+ 'urlTemplate' => 'tracks/ExampleFeatures/{refseq}/trackData.json',
+ 'key' => 'Example Features',
+ 'label' => 'ExampleFeatures',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ style => { 'className' => 'feature2' },
+ 'compress' => 0,
+ 'feature' => [
+ 'protein_coding_primary_transcript',
+ 'polypeptide'
+ ],
+ 'track' => 'NameTest',
+ 'urlTemplate' => 'tracks/NameTest/{refseq}/trackData.json',
+ 'key' => 'Name test track',
+ 'label' => 'NameTest',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ 'compress' => 0,
+ 'feature' => [
+ 'SNP'
+ ],
+ 'style' => {
+ 'className' => 'triangle hgred'
+ },
+ 'track' => 'snps',
+ 'urlTemplate' => 'tracks/snps/{refseq}/trackData.json',
+ 'key' => 'Test SNPs',
+ 'label' => 'snps',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ style => {'className' => 'feature3'},
+ 'compress' => 0,
+ 'description' => 1,
+ 'feature' => [
+ 'polypeptide_domain'
+ ],
+ 'key' => 'Example motifs',
+ 'track' => 'Motifs',
+ 'urlTemplate' => 'tracks/Motifs/{refseq}/trackData.json',
+ 'key' => 'Example motifs',
+ 'label' => 'Motifs',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ 'category' => 'Alignments',
+ style => { 'className' => 'feature4' },
+ 'compress' => 0,
+ 'feature' => [
+ 'match'
+ ],
+ 'track' => 'Alignments',
+ 'urlTemplate' => 'tracks/Alignments/{refseq}/trackData.json',
+ 'key' => 'Example alignments',
+ 'label' => 'Alignments',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ style => {'className' => 'feature5'},
+ 'compress' => 0,
+ 'feature' => [
+ 'gene'
+ ],
+ 'track' => 'Genes',
+ 'urlTemplate' => 'tracks/Genes/{refseq}/trackData.json',
+ 'key' => 'Protein-coding genes',
+ 'label' => 'Genes',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ 'category' => 'Genes',
+ style => { 'className' => 'dblhelix' },
+ 'compress' => 0,
+ 'feature' => [
+ 'mRNA'
+ ],
+ 'track' => 'ReadingFrame',
+ 'urlTemplate' => 'tracks/ReadingFrame/{refseq}/trackData.json',
+ 'key' => 'Frame usage',
+ 'label' => 'ReadingFrame',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ 'category' => 'Genes',
+ style => { 'className' => 'cds' },
+ 'compress' => 0,
+ 'feature' => [
+ 'CDS:predicted',
+ 'mRNA:exonerate'
+ ],
+ 'phase' => 1,
+ 'track' => 'CDS',
+ 'urlTemplate' => 'tracks/CDS/{refseq}/trackData.json',
+ 'key' => 'Predicted genes',
+ 'label' => 'CDS',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ 'category' => 'Genes',
+ 'compress' => 0,
+ 'description' => 1,
+ 'feature' => [
+ 'mRNA:exonerate'
+ ],
+ 'key' => 'Exonerate predictions',
+ 'style' => {
+ 'className' => 'transcript',
+ 'arrowheadClass' => 'transcript-arrowhead',
+ 'subfeatureClasses' => {
+ 'CDS' => 'transcript-CDS',
+ 'UTR' => 'transcript-UTR'
+ },
+ },
+ 'subfeatures' => 'true',
+ 'track' => 'Transcript',
+ 'urlTemplate' => 'tracks/Transcript/{refseq}/trackData.json',
+ 'key' => 'Exonerate predictions',
+ 'label' => 'Transcript',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ style => {'className' => 'exon'},
+ 'compress' => 0,
+ 'description' => 1,
+ 'feature' => [
+ 'BAC'
+ ],
+ 'track' => 'Clones',
+ 'urlTemplate' => 'tracks/Clones/{refseq}/trackData.json',
+ 'key' => 'Fingerprinted BACs',
+ 'label' => 'Clones',
+ 'type' => 'FeatureTrack'
+ },
+ {
+ 'autocomplete' => 'all',
+ style => {'className' => 'est'},
+ 'compress' => 0,
+ 'feature' => [
+ 'EST_match:est'
+ ],
+ 'track' => 'EST',
+ 'urlTemplate' => 'tracks/EST/{refseq}/trackData.json',
+ 'key' => 'ESTs',
+ 'label' => 'EST',
+ 'type' => 'FeatureTrack'
+ }
+ ]
+ },
+ 'made right trackList.json',
+ ) or diag explain $tracklist;
+
+ my $names_output = $read_json->(qw( tracks Transcript ctgA names.json ));
+ is_deeply( $names_output,
+ [
+ [
+ [ 'Apple3' ],
+ 'Transcript',
+ 'Apple3',
+ 'ctgA',
+ '17399',
+ '23000',
+ '192'
+ ]
+ ],
+ 'got the right names output'
+ ) or diag explain $names_output;
+
+ system $^X, 'bin/generate-names.pl', (
+ '--dir' => "$tempdir",
+ );
+ ok( ! $?, 'generate-names.pl ran ok' );
+
+ system $^X, 'bin/generate-names.pl', (
+ '--out' => "$tempdir",
+ );
+ ok( ! $?, 'generate-names.pl also ran ok with the --out option' );
+}
+
+{ # test yeast
+
+ my $tempdir = File::Temp->newdir( CLEANUP => $ENV{KEEP_ALL} ? 0 : 1 );
+ my $read_json = sub { JsonGenerator::readJSON( catfile( $tempdir, @_ ) ) };
+
+ system $^X, 'bin/prepare-refseqs.pl', (
+ '--fasta' => 'sample_data/raw/yeast_scaffolds/chr1.fa.gz',
+ '--fasta' => 'sample_data/raw/yeast_scaffolds/chr2.fa.gzip',
+ '--out' => "$tempdir",
+ );
+
+ system $^X, 'bin/biodb-to-json.pl', (
+ '--conf' => 'sample_data/raw/yeast.json',
+ '--out' => "$tempdir",
+ );
+
+ my $tracklist = $read_json->('trackList.json');
+ is_deeply( $tracklist,
{
'formatVersion' => 1,
'tracks' => [
{
- 'config' => {
- 'chunkSize' => 20000,
- 'urlTemplate' => 'seq/{refseq}/'
- },
+ 'chunkSize' => 20000,
'key' => 'DNA',
'label' => 'DNA',
- 'type' => 'SequenceTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- style => { 'className' => 'feature2' },
- 'compress' => 0,
- 'feature' => [
- 'remark'
- ],
- 'key' => 'Example Features',
- 'track' => 'ExampleFeatures',
- 'urlTemplate' => 'tracks/ExampleFeatures/{refseq}/trackData.json'
- },
- 'key' => 'Example Features',
- 'label' => 'ExampleFeatures',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- style => { 'className' => 'feature2' },
- 'compress' => 0,
- 'feature' => [
- 'protein_coding_primary_transcript',
- 'polypeptide'
- ],
- 'key' => 'Name test track',
- 'track' => 'NameTest',
- 'urlTemplate' => 'tracks/NameTest/{refseq}/trackData.json'
- },
- 'key' => 'Name test track',
- 'label' => 'NameTest',
- 'type' => 'FeatureTrack'
+ 'type' => 'SequenceTrack',
+ 'urlTemplate' => 'seq/{refseq}/'
},
{
- 'config' => {
- 'autocomplete' => 'all',
- 'compress' => 0,
- 'feature' => [
- 'SNP'
- ],
- 'key' => 'Test SNPs',
- 'style' => {
- 'className' => 'triangle hgred'
- },
- 'track' => 'snps',
- 'urlTemplate' => 'tracks/snps/{refseq}/trackData.json'
- },
- 'key' => 'Test SNPs',
- 'label' => 'snps',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- style => {'className' => 'feature3'},
- 'compress' => 0,
- 'description' => 1,
- 'feature' => [
- 'polypeptide_domain'
- ],
- 'key' => 'Example motifs',
- 'track' => 'Motifs',
- 'urlTemplate' => 'tracks/Motifs/{refseq}/trackData.json'
- },
- 'key' => 'Example motifs',
- 'label' => 'Motifs',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- 'category' => 'Alignments',
- style => { 'className' => 'feature4' },
- 'compress' => 0,
- 'feature' => [
- 'match'
- ],
- 'key' => 'Example alignments',
- 'track' => 'Alignments',
- 'urlTemplate' => 'tracks/Alignments/{refseq}/trackData.json'
- },
- 'key' => 'Example alignments',
- 'label' => 'Alignments',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- style => {'className' => 'feature5'},
- 'compress' => 0,
- 'feature' => [
- 'gene'
- ],
- 'key' => 'Protein-coding genes',
- 'track' => 'Genes',
- 'urlTemplate' => 'tracks/Genes/{refseq}/trackData.json'
- },
+ 'autocomplete' => 'all',
+ 'category' => 'Genes',
+ 'compress' => '0',
+ 'feature' => [
+ 'gene'
+ ],
'key' => 'Protein-coding genes',
'label' => 'Genes',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- 'category' => 'Genes',
- style => { 'className' => 'dblhelix' },
- 'compress' => 0,
- 'feature' => [
- 'mRNA'
- ],
- 'key' => 'Frame usage',
- 'track' => 'ReadingFrame',
- 'urlTemplate' => 'tracks/ReadingFrame/{refseq}/trackData.json'
- },
- 'key' => 'Frame usage',
- 'label' => 'ReadingFrame',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- 'category' => 'Genes',
- style => { 'className' => 'cds' },
- 'compress' => 0,
- 'feature' => [
- 'CDS:predicted',
- 'mRNA:exonerate'
- ],
- 'key' => 'Predicted genes',
- 'phase' => 1,
- 'track' => 'CDS',
- 'urlTemplate' => 'tracks/CDS/{refseq}/trackData.json'
- },
- 'key' => 'Predicted genes',
- 'label' => 'CDS',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- 'category' => 'Genes',
- 'compress' => 0,
- 'description' => 1,
- 'feature' => [
- 'mRNA:exonerate'
- ],
- 'key' => 'Exonerate predictions',
- 'style' => {
- 'className' => 'transcript',
- 'arrowheadClass' => 'transcript-arrowhead',
- 'subfeatureClasses' => {
- 'CDS' => 'transcript-CDS',
- 'UTR' => 'transcript-UTR'
- },
- },
- 'subfeatures' => 'true',
- 'track' => 'Transcript',
- 'urlTemplate' => 'tracks/Transcript/{refseq}/trackData.json'
- },
- 'key' => 'Exonerate predictions',
- 'label' => 'Transcript',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- style => {'className' => 'exon'},
- 'compress' => 0,
- 'description' => 1,
- 'feature' => [
- 'BAC'
- ],
- 'key' => 'Fingerprinted BACs',
- 'track' => 'Clones',
- 'urlTemplate' => 'tracks/Clones/{refseq}/trackData.json'
+ 'style' => {
+ 'arrowheadClass' => 'transcript-arrowhead',
+ 'className' => 'feature5',
+ 'subfeatureClasses' => {
+ 'CDS' => 'transcript-CDS'
+ }
},
- 'key' => 'Fingerprinted BACs',
- 'label' => 'Clones',
- 'type' => 'FeatureTrack'
- },
- {
- 'config' => {
- 'autocomplete' => 'all',
- style => {'className' => 'est'},
- 'compress' => 0,
- 'feature' => [
- 'EST_match:est'
- ],
- 'key' => 'ESTs',
- 'track' => 'EST',
- 'urlTemplate' => 'tracks/EST/{refseq}/trackData.json'
- },
- 'key' => 'ESTs',
- 'label' => 'EST',
- 'type' => 'FeatureTrack'
+ 'subfeatures' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' ),
+ 'track' => 'Genes',
+ 'type' => 'FeatureTrack',
+ 'urlTemplate' => 'tracks/Genes/{refseq}/trackData.json'
}
]
},
- 'made right trackList.json',
- ) or diag explain $tracklist;
-
-my $names_output = $read_json->(qw( tracks Transcript ctgA names.json ));
-is_deeply( $names_output,
- [
- [
- [ 'Apple3' ],
- 'Transcript',
- 'Apple3',
- 'ctgA',
- '17399',
- '23000',
- '192'
- ]
- ],
- 'got the right names output'
- ) or diag explain $names_output;
-
-system $^X, 'bin/generate-names.pl', (
- '--dir' => "$tempdir",
- );
-ok( ! $?, 'generate-names.pl ran ok' );
-
-system $^X, 'bin/generate-names.pl', (
- '--out' => "$tempdir",
- );
-ok( ! $?, 'generate-names.pl also ran ok with the --out option' );
+ 'made right trackList.json',
+ ) or diag explain $tracklist;
+}
done_testing;
diff --git a/tests/perl_tests/draw-basepair-track.pl.t b/tests/perl_tests/draw-basepair-track.pl.t
index 6725b01f0b..eb7bf5a561 100644
--- a/tests/perl_tests/draw-basepair-track.pl.t
+++ b/tests/perl_tests/draw-basepair-track.pl.t
@@ -44,22 +44,18 @@ for my $args ( @testargs ) {
'formatVersion' => 1,
'tracks' => [
{
- 'config' => {
'chunkSize' => 20000,
- 'urlTemplate' => 'seq/{refseq}/'
- },
- 'key' => 'DNA',
- 'label' => 'DNA',
- 'type' => 'SequenceTrack'
+ 'urlTemplate' => 'seq/{refseq}/',
+ 'key' => 'DNA',
+ 'label' => 'DNA',
+ 'type' => 'SequenceTrack'
},
{
- 'config' => {
'compress' => 0,
- 'urlTemplate' => 'tracks/foo/{refseq}/trackData.json'
- },
- 'key' => 'Fooish Test Data',
- 'label' => 'foo',
- 'type' => 'ImageTrack'
+ 'urlTemplate' => 'tracks/foo/{refseq}/trackData.json',
+ 'key' => 'Fooish Test Data',
+ 'label' => 'foo',
+ 'type' => 'ImageTrack'
}
]
},
diff --git a/tests/perl_tests/flatfile-to-json.pl.t b/tests/perl_tests/flatfile-to-json.pl.t
index 34ff9a7b8a..8c3773c31a 100644
--- a/tests/perl_tests/flatfile-to-json.pl.t
+++ b/tests/perl_tests/flatfile-to-json.pl.t
@@ -73,7 +73,7 @@ sub tempdir {
or diag explain $cds_trackdata;
is( scalar @{$cds_trackdata->{intervals}{nclist}[2][9]}, 5, 'exonerate mRNA has 5 subfeatures' );
- is_deeply( $read_json->('trackList.json')->{tracks}[1]{config}{style},
+ is_deeply( $read_json->('trackList.json')->{tracks}[1]{style},
{ featureCss => 'height: 8px;',
histScale => 2,
className => 'feature2',
diff --git a/tests/perl_tests/wig-to-json.pl.t b/tests/perl_tests/wig-to-json.pl.t
index a19992359d..3794dc94dc 100644
--- a/tests/perl_tests/wig-to-json.pl.t
+++ b/tests/perl_tests/wig-to-json.pl.t
@@ -31,23 +31,18 @@ is_deeply( $tracklist,
'formatVersion' => 1,
'tracks' => [
{
- 'config' => {
- 'chunkSize' => 20000,
- 'urlTemplate' => 'seq/{refseq}/'
- },
+ 'chunkSize' => 20000,
+ 'urlTemplate' => 'seq/{refseq}/',
'key' => 'DNA',
'label' => 'DNA',
'type' => 'SequenceTrack'
},
{
- 'config' => {
- 'compress' => 0,
- 'key' => 'volvox_microarray.wig',
- 'style' => {
- 'className' => 'image',
- },
- 'urlTemplate' => 'tracks/volvox_microarray.wig/{refseq}/trackData.json'
- },
+ 'compress' => 0,
+ 'style' => {
+ 'className' => 'image',
+ },
+ 'urlTemplate' => 'tracks/volvox_microarray.wig/{refseq}/trackData.json',
'key' => 'volvox_microarray.wig',
'label' => 'volvox_microarray.wig',
'type' => 'ImageTrack'
diff --git a/tests/selenium_tests/jbrowse_selenium.py b/tests/selenium_tests/jbrowse_selenium.py
index eeb16e1580..495c18a134 100644
--- a/tests/selenium_tests/jbrowse_selenium.py
+++ b/tests/selenium_tests/jbrowse_selenium.py
@@ -1,7 +1,7 @@
import os
import time
-from unittest import TestCase
+import unittest
from selenium import webdriver
from selenium.webdriver import ActionChains
@@ -9,7 +9,7 @@
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select
-class JBrowseTest( TestCase ):
+class JBrowseTest (object):
base_url = "file://%s/index.html" % os.getcwd()
data_dir = None
@@ -22,6 +22,7 @@ def setUp( self ):
self.base_url
+ ( "?data="+self.data_dir if self.data_dir else "" )
)
+ time.sleep(0.5)
## convenience methods for us
diff --git a/tests/selenium_tests/volvox_biodb_121_test.py b/tests/selenium_tests/volvox_biodb_121_test.py
new file mode 100644
index 0000000000..3c3b4631f1
--- /dev/null
+++ b/tests/selenium_tests/volvox_biodb_121_test.py
@@ -0,0 +1,13 @@
+import os
+import unittest
+from volvox_biodb_test import AbstractVolvoxBiodbTest
+
+class VolvoxBiodbTest121 ( AbstractVolvoxBiodbTest, unittest.TestCase ):
+
+ base_url = "file://%s/compat_121.html" % os.getcwd()
+ data_dir = 'tests/data/volvox_formatted_1_2_1/'
+
+ def setUp( self ):
+ # skip calling VolvoxBiodbTest's setUp, cause we are not
+ # actually running any formatting
+ super( AbstractVolvoxBiodbTest, self ).setUp()
diff --git a/tests/selenium_tests/volvox_biodb_test.py b/tests/selenium_tests/volvox_biodb_test.py
index 33ea296f14..0500d7e8e9 100644
--- a/tests/selenium_tests/volvox_biodb_test.py
+++ b/tests/selenium_tests/volvox_biodb_test.py
@@ -1,9 +1,10 @@
import time
from subprocess import check_call as call
+import unittest
from jbrowse_selenium import JBrowseTest;
-class VolvoxBiodbTest( JBrowseTest ):
+class AbstractVolvoxBiodbTest( JBrowseTest ):
data_dir = 'sample_data/json/volvox'
@@ -13,7 +14,7 @@ def setUp( self ):
call( "bin/biodb-to-json.pl --conf sample_data/raw/volvox.json --out sample_data/json/volvox/", shell=True )
call( "bin/wig-to-json.pl --out sample_data/json/volvox/ --wig sample_data/raw/volvox/volvox_microarray.wig", shell=True )
call( "bin/generate-names.pl --dir sample_data/json/volvox/", shell=True )
- super( VolvoxBiodbTest, self ).setUp()
+ super( AbstractVolvoxBiodbTest, self ).setUp()
def test_volvox( self ):
# select "ctgA from the dropdown
@@ -80,6 +81,12 @@ def search_f15( self ):
label = self.assert_element( xpath )
assert label.text == 'f15';
+
+class VolvoxBiodbTest( AbstractVolvoxBiodbTest, unittest.TestCase ):
+ pass
+
+
if __name__ == '__main__':
import unittest
unittest.main()
+
diff --git a/tests/selenium_tests/yeast_biodb_test.py b/tests/selenium_tests/yeast_biodb_test.py
index 96d6eee389..0e6adace0f 100644
--- a/tests/selenium_tests/yeast_biodb_test.py
+++ b/tests/selenium_tests/yeast_biodb_test.py
@@ -1,8 +1,9 @@
+import unittest
from subprocess import check_call as call
-import jbrowse_selenium
+from jbrowse_selenium import JBrowseTest
-class YeastBiodbTest ( jbrowse_selenium.JBrowseTest ):
+class YeastBiodbTest ( JBrowseTest, unittest.TestCase ):
data_dir = 'sample_data/json/yeast'
@@ -36,16 +37,16 @@ def test_yeast( self ):
def search_yal024c( self ):
# check that a YAL024C feature label is not yet in the DOM
- yal024_xpath = "//div[@class='feature-label'][contains(.,'YAL024C')]"
- self.assert_no_element( yal024_xpath )
+ yal024_label_xpath = "//div[@class='feature-label'][contains(.,'YAL024C')]"
+ self.assert_no_element( yal024_label_xpath )
# Find the query box and put YAL024C into it and hit enter
self.do_typed_query( 'YAL024C' )
- # test that YAL024C appeared in the DOM (TODO: check that it's
+ # test that the YAL024C label appeared in the DOM (TODO: check that it's
# actually centered in the window), and that the protein-coding
# genes track is now selected
- feature_labels = self.assert_elements( yal024_xpath )
+ feature_labels = self.assert_elements( yal024_label_xpath )
assert feature_labels[0].text == 'YAL024C'
assert len(feature_labels) == 1, "actually %d features match" % len(feature_labels)
@@ -53,6 +54,9 @@ def search_yal024c( self ):
track_labels = self.get_track_labels_containing( 'Protein-coding genes' )
assert len(track_labels) == 1, '%d tracks displayed with that name' % len(track_labels)
+ # test that the features in the track have the right classes
+ self.assert_elements("//div[@class='track']//div[@class='minus-feature5']");
+
# do the search again, and make sure that again, only one track is displayed
# Find the query box and put YAL024C into it and hit enter
self.do_typed_query( "YAL024C" )