@genome-spy/core 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/index.js +224 -0
  2. package/dist/style.css +1 -0
  3. package/package.json +54 -0
  4. package/src/data/collector.js +178 -0
  5. package/src/data/collector.test.js +82 -0
  6. package/src/data/dataFlow.js +109 -0
  7. package/src/data/dataFlow.test.js +3 -0
  8. package/src/data/facetNode.js +17 -0
  9. package/src/data/flow.test.js +71 -0
  10. package/src/data/flowBatch.d.ts +40 -0
  11. package/src/data/flowNode.js +283 -0
  12. package/src/data/flowNode.test.js +49 -0
  13. package/src/data/flowOptimizer.js +117 -0
  14. package/src/data/flowOptimizer.test.js +192 -0
  15. package/src/data/flowTestUtils.js +63 -0
  16. package/src/data/formats/fasta.js +32 -0
  17. package/src/data/formats/fasta.test.js +26 -0
  18. package/src/data/sources/dataSource.js +22 -0
  19. package/src/data/sources/dataSourceFactory.js +24 -0
  20. package/src/data/sources/dataUtils.js +31 -0
  21. package/src/data/sources/dynamicCallbackSource.js +56 -0
  22. package/src/data/sources/dynamicSource.js +36 -0
  23. package/src/data/sources/inlineSource.js +69 -0
  24. package/src/data/sources/inlineSource.test.js +55 -0
  25. package/src/data/sources/namedSource.js +74 -0
  26. package/src/data/sources/sequenceSource.js +46 -0
  27. package/src/data/sources/sequenceSource.test.js +45 -0
  28. package/src/data/sources/urlSource.js +74 -0
  29. package/src/data/transforms/aggregate.js +69 -0
  30. package/src/data/transforms/clone.js +40 -0
  31. package/src/data/transforms/clone.test.js +10 -0
  32. package/src/data/transforms/coverage.js +187 -0
  33. package/src/data/transforms/coverage.test.js +122 -0
  34. package/src/data/transforms/filter.js +37 -0
  35. package/src/data/transforms/filter.test.js +17 -0
  36. package/src/data/transforms/filterScoredLabels.js +134 -0
  37. package/src/data/transforms/flattenCompressedExons.js +57 -0
  38. package/src/data/transforms/flattenDelimited.js +68 -0
  39. package/src/data/transforms/flattenDelimited.test.js +86 -0
  40. package/src/data/transforms/flattenSequence.js +39 -0
  41. package/src/data/transforms/flattenSequence.test.js +33 -0
  42. package/src/data/transforms/formula.js +39 -0
  43. package/src/data/transforms/formula.test.js +18 -0
  44. package/src/data/transforms/identifier.js +108 -0
  45. package/src/data/transforms/identifier.test.js +82 -0
  46. package/src/data/transforms/linearizeGenomicCoordinate.js +101 -0
  47. package/src/data/transforms/measureText.js +44 -0
  48. package/src/data/transforms/pileup.js +128 -0
  49. package/src/data/transforms/pileup.test.js +69 -0
  50. package/src/data/transforms/project.js +41 -0
  51. package/src/data/transforms/project.test.js +31 -0
  52. package/src/data/transforms/regexExtract.js +61 -0
  53. package/src/data/transforms/regexExtract.test.js +66 -0
  54. package/src/data/transforms/regexFold.js +141 -0
  55. package/src/data/transforms/regexFold.test.js +159 -0
  56. package/src/data/transforms/sample.js +101 -0
  57. package/src/data/transforms/sample.test.js +37 -0
  58. package/src/data/transforms/stack.js +137 -0
  59. package/src/data/transforms/stack.test.js +90 -0
  60. package/src/data/transforms/transformFactory.js +60 -0
  61. package/src/encoder/accessor.js +82 -0
  62. package/src/encoder/accessor.test.js +46 -0
  63. package/src/encoder/encoder.js +369 -0
  64. package/src/encoder/encoder.test.js +97 -0
  65. package/src/fonts/Lato-Regular.json +1267 -0
  66. package/src/fonts/Lato-Regular.png +0 -0
  67. package/src/fonts/OFL.txt +93 -0
  68. package/src/fonts/README.md +3 -0
  69. package/src/fonts/bmFont.d.ts +58 -0
  70. package/src/fonts/bmFontManager.js +357 -0
  71. package/src/fonts/bmFontMetrics.js +108 -0
  72. package/src/genome/genome.js +305 -0
  73. package/src/genome/genome.test.js +152 -0
  74. package/src/genome/genomeStore.js +54 -0
  75. package/src/genome/locusFormat.js +31 -0
  76. package/src/genome/scaleIndex.js +199 -0
  77. package/src/genome/scaleIndex.test.js +61 -0
  78. package/src/genome/scaleLocus.js +112 -0
  79. package/src/genome/scaleLocus.test.js +3 -0
  80. package/src/genomeSpy.js +753 -0
  81. package/src/gl/arrayBuilder.js +199 -0
  82. package/src/gl/dataToVertices.js +621 -0
  83. package/src/gl/includes/common.glsl +63 -0
  84. package/src/gl/includes/fp64-arithmetic.glsl +187 -0
  85. package/src/gl/includes/fp64-utils.js +132 -0
  86. package/src/gl/includes/picking.fragment.glsl +3 -0
  87. package/src/gl/includes/picking.vertex.glsl +29 -0
  88. package/src/gl/includes/sampleFacet.glsl +107 -0
  89. package/src/gl/includes/scales.glsl +79 -0
  90. package/src/gl/includes/scales_fp64.glsl +30 -0
  91. package/src/gl/link.fragment.glsl +18 -0
  92. package/src/gl/link.vertex.glsl +111 -0
  93. package/src/gl/point.fragment.glsl +123 -0
  94. package/src/gl/point.vertex.glsl +128 -0
  95. package/src/gl/rect.fragment.glsl +51 -0
  96. package/src/gl/rect.vertex.glsl +114 -0
  97. package/src/gl/rule.fragment.glsl +52 -0
  98. package/src/gl/rule.vertex.glsl +89 -0
  99. package/src/gl/text.fragment.glsl +31 -0
  100. package/src/gl/text.vertex.glsl +246 -0
  101. package/src/gl/webGLHelper.js +490 -0
  102. package/src/img/bowtie.svg +1 -0
  103. package/src/img/genomespy-favicon.svg +34 -0
  104. package/src/index.html +11 -0
  105. package/src/index.js +151 -0
  106. package/src/marks/link.js +189 -0
  107. package/src/marks/mark.js +867 -0
  108. package/src/marks/markUtils.js +109 -0
  109. package/src/marks/pointMark.js +279 -0
  110. package/src/marks/rectMark.js +236 -0
  111. package/src/marks/rule.js +231 -0
  112. package/src/marks/text.js +274 -0
  113. package/src/options.d.ts +9 -0
  114. package/src/scale/colorUtils.js +184 -0
  115. package/src/scale/glslScaleGenerator.js +462 -0
  116. package/src/scale/scale.js +441 -0
  117. package/src/scale/scale.test.js +323 -0
  118. package/src/scale/ticks.js +198 -0
  119. package/src/scale/ticks.test.js +39 -0
  120. package/src/singlePageApp.js +13 -0
  121. package/src/spec/axis.d.ts +296 -0
  122. package/src/spec/channel.d.ts +127 -0
  123. package/src/spec/data.d.ts +185 -0
  124. package/src/spec/font.d.ts +15 -0
  125. package/src/spec/genome.d.ts +35 -0
  126. package/src/spec/mark.d.ts +432 -0
  127. package/src/spec/root.d.ts +22 -0
  128. package/src/spec/scale.d.ts +265 -0
  129. package/src/spec/tooltip.d.ts +9 -0
  130. package/src/spec/transform.d.ts +479 -0
  131. package/src/spec/view.d.ts +215 -0
  132. package/src/styles/genome-spy.scss +153 -0
  133. package/src/tooltip/dataTooltipHandler.js +59 -0
  134. package/src/tooltip/refseqGeneTooltipHandler.js +77 -0
  135. package/src/tooltip/tooltipHandler.ts +12 -0
  136. package/src/types/filetypes.d.ts +4 -0
  137. package/src/types/flatqueue.d.ts +53 -0
  138. package/src/types/glsl.d.ts +4 -0
  139. package/src/types/object.d.ts +21 -0
  140. package/src/types/vega-scale.d.ts +60 -0
  141. package/src/utils/animator.js +83 -0
  142. package/src/utils/arrayUtils.js +55 -0
  143. package/src/utils/binnedRangeIndex.js +83 -0
  144. package/src/utils/clamp.js +8 -0
  145. package/src/utils/cloner.js +32 -0
  146. package/src/utils/cloner.test.js +23 -0
  147. package/src/utils/coalesce.js +11 -0
  148. package/src/utils/coalesce.test.js +15 -0
  149. package/src/utils/concatIterables.js +26 -0
  150. package/src/utils/concatIterables.test.js +7 -0
  151. package/src/utils/debounce.js +37 -0
  152. package/src/utils/domainArray.js +224 -0
  153. package/src/utils/domainArray.test.js +129 -0
  154. package/src/utils/eerp.js +13 -0
  155. package/src/utils/expression.js +32 -0
  156. package/src/utils/field.js +28 -0
  157. package/src/utils/fisheye.js +60 -0
  158. package/src/utils/formatObject.js +31 -0
  159. package/src/utils/html.js +23 -0
  160. package/src/utils/html.test.js +13 -0
  161. package/src/utils/indexer.js +43 -0
  162. package/src/utils/indexer.test.js +46 -0
  163. package/src/utils/inertia.js +124 -0
  164. package/src/utils/interactionEvent.js +33 -0
  165. package/src/utils/iterateNestedMaps.js +21 -0
  166. package/src/utils/iterateNestedMaps.test.js +32 -0
  167. package/src/utils/kWayMerge.js +42 -0
  168. package/src/utils/kWayMerge.test.js +25 -0
  169. package/src/utils/layout/flexLayout.js +336 -0
  170. package/src/utils/layout/flexLayout.test.js +296 -0
  171. package/src/utils/layout/padding.js +107 -0
  172. package/src/utils/layout/point.js +23 -0
  173. package/src/utils/layout/rectangle.js +282 -0
  174. package/src/utils/layout/rectangle.test.js +171 -0
  175. package/src/utils/mergeObjects.js +99 -0
  176. package/src/utils/mergeObjects.test.js +41 -0
  177. package/src/utils/numberExtractor.js +24 -0
  178. package/src/utils/numberExtractor.test.js +5 -0
  179. package/src/utils/point.js +14 -0
  180. package/src/utils/propertyCacher.js +70 -0
  181. package/src/utils/propertyCacher.test.js +84 -0
  182. package/src/utils/propertyCoalescer.js +37 -0
  183. package/src/utils/propertyCoalescer.test.js +21 -0
  184. package/src/utils/reservationMap.js +103 -0
  185. package/src/utils/reservationMap.test.js +19 -0
  186. package/src/utils/scaleNull.js +19 -0
  187. package/src/utils/setOperations.js +75 -0
  188. package/src/utils/smoothstep.js +10 -0
  189. package/src/utils/throttle.js +34 -0
  190. package/src/utils/topK.js +76 -0
  191. package/src/utils/topK.test.js +63 -0
  192. package/src/utils/transition.js +74 -0
  193. package/src/utils/ui/tooltip.js +189 -0
  194. package/src/utils/url.js +22 -0
  195. package/src/utils/variableTools.js +24 -0
  196. package/src/utils/variableTools.test.js +12 -0
  197. package/src/view/axisResolution.js +135 -0
  198. package/src/view/axisResolution.test.js +200 -0
  199. package/src/view/axisView.js +746 -0
  200. package/src/view/channel.js +5 -0
  201. package/src/view/concatView.js +296 -0
  202. package/src/view/containerView.js +141 -0
  203. package/src/view/decoratorView.js +510 -0
  204. package/src/view/facetView.js +488 -0
  205. package/src/view/flowBuilder.js +362 -0
  206. package/src/view/flowBuilder.test.js +124 -0
  207. package/src/view/importView.js +19 -0
  208. package/src/view/layerView.js +60 -0
  209. package/src/view/rendering.d.ts +44 -0
  210. package/src/view/renderingContext/compositeViewRenderingContext.js +51 -0
  211. package/src/view/renderingContext/deferredViewRenderingContext.js +174 -0
  212. package/src/view/renderingContext/layoutRecorderViewRenderingContext.js +128 -0
  213. package/src/view/renderingContext/simpleViewRenderingContext.js +62 -0
  214. package/src/view/renderingContext/svgViewRenderingContext.js +121 -0
  215. package/src/view/renderingContext/viewRenderingContext.js +41 -0
  216. package/src/view/scaleResolution.js +756 -0
  217. package/src/view/scaleResolution.test.js +571 -0
  218. package/src/view/scaleResolutionApi.d.ts +40 -0
  219. package/src/view/testUtils.js +48 -0
  220. package/src/view/unitView.js +368 -0
  221. package/src/view/view.js +589 -0
  222. package/src/view/view.test.js +213 -0
  223. package/src/view/viewContext.d.ts +57 -0
  224. package/src/view/viewFactory.js +179 -0
  225. package/src/view/viewFactory.test.js +16 -0
  226. package/src/view/viewUtils.js +420 -0
@@ -0,0 +1,1267 @@
1
+ {
2
+ "pages": ["Lato-Regular.png"],
3
+ "chars": [
4
+ {
5
+ "id": 87,
6
+ "width": 53,
7
+ "height": 40,
8
+ "xoffset": 0,
9
+ "yoffset": -30.093000000000004,
10
+ "xadvance": 43.491,
11
+ "chnl": 15,
12
+ "x": 0,
13
+ "y": 0,
14
+ "page": 0
15
+ },
16
+ {
17
+ "id": 124,
18
+ "width": 17,
19
+ "height": 50,
20
+ "xoffset": 0,
21
+ "yoffset": -32.193000000000005,
22
+ "xadvance": 10.521,
23
+ "chnl": 15,
24
+ "x": 0,
25
+ "y": 42,
26
+ "page": 0
27
+ },
28
+ {
29
+ "id": 40,
30
+ "width": 20,
31
+ "height": 49,
32
+ "xoffset": 0,
33
+ "yoffset": -32.571000000000005,
34
+ "xadvance": 11.214,
35
+ "chnl": 15,
36
+ "x": 0,
37
+ "y": 94,
38
+ "page": 0
39
+ },
40
+ {
41
+ "id": 41,
42
+ "width": 19,
43
+ "height": 49,
44
+ "xoffset": 0,
45
+ "yoffset": -32.571000000000005,
46
+ "xadvance": 11.214,
47
+ "chnl": 15,
48
+ "x": 0,
49
+ "y": 145,
50
+ "page": 0
51
+ },
52
+ {
53
+ "id": 36,
54
+ "width": 32,
55
+ "height": 49,
56
+ "xoffset": 0,
57
+ "yoffset": -34.419000000000004,
58
+ "xadvance": 24.360000000000003,
59
+ "chnl": 15,
60
+ "x": 0,
61
+ "y": 196,
62
+ "page": 0
63
+ },
64
+ {
65
+ "id": 125,
66
+ "width": 21,
67
+ "height": 48,
68
+ "xoffset": 0,
69
+ "yoffset": -32.193000000000005,
70
+ "xadvance": 12.642000000000001,
71
+ "chnl": 15,
72
+ "x": 0,
73
+ "y": 247,
74
+ "page": 0
75
+ },
76
+ {
77
+ "id": 91,
78
+ "width": 22,
79
+ "height": 48,
80
+ "xoffset": 0,
81
+ "yoffset": -32.193000000000005,
82
+ "xadvance": 12.852,
83
+ "chnl": 15,
84
+ "x": 0,
85
+ "y": 297,
86
+ "page": 0
87
+ },
88
+ {
89
+ "id": 93,
90
+ "width": 19,
91
+ "height": 48,
92
+ "xoffset": 0,
93
+ "yoffset": -32.193000000000005,
94
+ "xadvance": 12.852,
95
+ "chnl": 15,
96
+ "x": 0,
97
+ "y": 347,
98
+ "page": 0
99
+ },
100
+ {
101
+ "id": 123,
102
+ "width": 21,
103
+ "height": 48,
104
+ "xoffset": 0,
105
+ "yoffset": -32.193000000000005,
106
+ "xadvance": 12.642000000000001,
107
+ "chnl": 15,
108
+ "x": 0,
109
+ "y": 397,
110
+ "page": 0
111
+ },
112
+ {
113
+ "id": 106,
114
+ "width": 19,
115
+ "height": 48,
116
+ "xoffset": 0,
117
+ "yoffset": -30.639000000000003,
118
+ "xadvance": 10.08,
119
+ "chnl": 15,
120
+ "x": 0,
121
+ "y": 447,
122
+ "page": 0
123
+ },
124
+ {
125
+ "id": 81,
126
+ "width": 43,
127
+ "height": 47,
128
+ "xoffset": 0,
129
+ "yoffset": -30.429000000000002,
130
+ "xadvance": 33.621,
131
+ "chnl": 15,
132
+ "x": 21,
133
+ "y": 447,
134
+ "page": 0
135
+ },
136
+ {
137
+ "id": 77,
138
+ "width": 45,
139
+ "height": 40,
140
+ "xoffset": 0,
141
+ "yoffset": -30.093000000000004,
142
+ "xadvance": 38.997,
143
+ "chnl": 15,
144
+ "x": 66,
145
+ "y": 447,
146
+ "page": 0
147
+ },
148
+ {
149
+ "id": 64,
150
+ "width": 43,
151
+ "height": 44,
152
+ "xoffset": 0,
153
+ "yoffset": -28.539,
154
+ "xadvance": 35.133,
155
+ "chnl": 15,
156
+ "x": 23,
157
+ "y": 397,
158
+ "page": 0
159
+ },
160
+ {
161
+ "id": 92,
162
+ "width": 28,
163
+ "height": 43,
164
+ "xoffset": 0,
165
+ "yoffset": -30.933000000000003,
166
+ "xadvance": 18.984,
167
+ "chnl": 15,
168
+ "x": 68,
169
+ "y": 397,
170
+ "page": 0
171
+ },
172
+ {
173
+ "id": 47,
174
+ "width": 28,
175
+ "height": 43,
176
+ "xoffset": 0,
177
+ "yoffset": -30.933000000000003,
178
+ "xadvance": 18.984,
179
+ "chnl": 15,
180
+ "x": 98,
181
+ "y": 397,
182
+ "page": 0
183
+ },
184
+ {
185
+ "id": 109,
186
+ "width": 42,
187
+ "height": 32,
188
+ "xoffset": 0,
189
+ "yoffset": -21.609,
190
+ "xadvance": 34.545,
191
+ "chnl": 15,
192
+ "x": 113,
193
+ "y": 447,
194
+ "page": 0
195
+ },
196
+ {
197
+ "id": 119,
198
+ "width": 42,
199
+ "height": 31,
200
+ "xoffset": 0,
201
+ "yoffset": -21.315,
202
+ "xadvance": 32.991,
203
+ "chnl": 15,
204
+ "x": 157,
205
+ "y": 447,
206
+ "page": 0
207
+ },
208
+ {
209
+ "id": 42,
210
+ "width": 25,
211
+ "height": 42,
212
+ "xoffset": 0,
213
+ "yoffset": -31.626,
214
+ "xadvance": 17.85,
215
+ "chnl": 15,
216
+ "x": 128,
217
+ "y": 397,
218
+ "page": 0
219
+ },
220
+ {
221
+ "id": 37,
222
+ "width": 42,
223
+ "height": 41,
224
+ "xoffset": 0,
225
+ "yoffset": -30.387,
226
+ "xadvance": 33.663000000000004,
227
+ "chnl": 15,
228
+ "x": 155,
229
+ "y": 397,
230
+ "page": 0
231
+ },
232
+ {
233
+ "id": 79,
234
+ "width": 42,
235
+ "height": 41,
236
+ "xoffset": 0,
237
+ "yoffset": -30.429000000000002,
238
+ "xadvance": 33.621,
239
+ "chnl": 15,
240
+ "x": 199,
241
+ "y": 397,
242
+ "page": 0
243
+ },
244
+ {
245
+ "id": 102,
246
+ "width": 24,
247
+ "height": 41,
248
+ "xoffset": 0,
249
+ "yoffset": -30.534000000000002,
250
+ "xadvance": 14.721,
251
+ "chnl": 15,
252
+ "x": 243,
253
+ "y": 397,
254
+ "page": 0
255
+ },
256
+ {
257
+ "id": 100,
258
+ "width": 31,
259
+ "height": 41,
260
+ "xoffset": 0,
261
+ "yoffset": -30.933000000000003,
262
+ "xadvance": 23.520000000000003,
263
+ "chnl": 15,
264
+ "x": 269,
265
+ "y": 397,
266
+ "page": 0
267
+ },
268
+ {
269
+ "id": 98,
270
+ "width": 32,
271
+ "height": 41,
272
+ "xoffset": 0,
273
+ "yoffset": -30.933000000000003,
274
+ "xadvance": 23.520000000000003,
275
+ "chnl": 15,
276
+ "x": 302,
277
+ "y": 397,
278
+ "page": 0
279
+ },
280
+ {
281
+ "id": 56,
282
+ "width": 32,
283
+ "height": 41,
284
+ "xoffset": 0,
285
+ "yoffset": -30.429000000000002,
286
+ "xadvance": 24.360000000000003,
287
+ "chnl": 15,
288
+ "x": 336,
289
+ "y": 397,
290
+ "page": 0
291
+ },
292
+ {
293
+ "id": 38,
294
+ "width": 40,
295
+ "height": 41,
296
+ "xoffset": 0,
297
+ "yoffset": -30.429000000000002,
298
+ "xadvance": 29.904000000000003,
299
+ "chnl": 15,
300
+ "x": 370,
301
+ "y": 397,
302
+ "page": 0
303
+ },
304
+ {
305
+ "id": 108,
306
+ "width": 17,
307
+ "height": 41,
308
+ "xoffset": 0,
309
+ "yoffset": -30.933000000000003,
310
+ "xadvance": 9.912,
311
+ "chnl": 15,
312
+ "x": 412,
313
+ "y": 397,
314
+ "page": 0
315
+ },
316
+ {
317
+ "id": 107,
318
+ "width": 31,
319
+ "height": 41,
320
+ "xoffset": 0,
321
+ "yoffset": -30.933000000000003,
322
+ "xadvance": 21.336000000000002,
323
+ "chnl": 15,
324
+ "x": 431,
325
+ "y": 397,
326
+ "page": 0
327
+ },
328
+ {
329
+ "id": 48,
330
+ "width": 33,
331
+ "height": 41,
332
+ "xoffset": 0,
333
+ "yoffset": -30.429000000000002,
334
+ "xadvance": 24.360000000000003,
335
+ "chnl": 15,
336
+ "x": 464,
337
+ "y": 397,
338
+ "page": 0
339
+ },
340
+ {
341
+ "id": 71,
342
+ "width": 38,
343
+ "height": 41,
344
+ "xoffset": 0,
345
+ "yoffset": -30.429000000000002,
346
+ "xadvance": 30.681,
347
+ "chnl": 15,
348
+ "x": 21,
349
+ "y": 347,
350
+ "page": 0
351
+ },
352
+ {
353
+ "id": 83,
354
+ "width": 31,
355
+ "height": 41,
356
+ "xoffset": 0,
357
+ "yoffset": -30.429000000000002,
358
+ "xadvance": 22.785,
359
+ "chnl": 15,
360
+ "x": 61,
361
+ "y": 347,
362
+ "page": 0
363
+ },
364
+ {
365
+ "id": 63,
366
+ "width": 27,
367
+ "height": 41,
368
+ "xoffset": 0,
369
+ "yoffset": -30.429000000000002,
370
+ "xadvance": 18.795,
371
+ "chnl": 15,
372
+ "x": 94,
373
+ "y": 347,
374
+ "page": 0
375
+ },
376
+ {
377
+ "id": 105,
378
+ "width": 18,
379
+ "height": 41,
380
+ "xoffset": 0,
381
+ "yoffset": -30.639000000000003,
382
+ "xadvance": 10.08,
383
+ "chnl": 15,
384
+ "x": 123,
385
+ "y": 347,
386
+ "page": 0
387
+ },
388
+ {
389
+ "id": 51,
390
+ "width": 32,
391
+ "height": 41,
392
+ "xoffset": 0,
393
+ "yoffset": -30.429000000000002,
394
+ "xadvance": 24.360000000000003,
395
+ "chnl": 15,
396
+ "x": 143,
397
+ "y": 347,
398
+ "page": 0
399
+ },
400
+ {
401
+ "id": 104,
402
+ "width": 31,
403
+ "height": 41,
404
+ "xoffset": 0,
405
+ "yoffset": -30.933000000000003,
406
+ "xadvance": 23.436,
407
+ "chnl": 15,
408
+ "x": 177,
409
+ "y": 347,
410
+ "page": 0
411
+ },
412
+ {
413
+ "id": 67,
414
+ "width": 37,
415
+ "height": 41,
416
+ "xoffset": 0,
417
+ "yoffset": -30.429000000000002,
418
+ "xadvance": 28.056,
419
+ "chnl": 15,
420
+ "x": 210,
421
+ "y": 347,
422
+ "page": 0
423
+ },
424
+ {
425
+ "id": 88,
426
+ "width": 37,
427
+ "height": 40,
428
+ "xoffset": 0,
429
+ "yoffset": -30.093000000000004,
430
+ "xadvance": 27.258000000000003,
431
+ "chnl": 15,
432
+ "x": 249,
433
+ "y": 347,
434
+ "page": 0
435
+ },
436
+ {
437
+ "id": 68,
438
+ "width": 40,
439
+ "height": 40,
440
+ "xoffset": 0,
441
+ "yoffset": -30.093000000000004,
442
+ "xadvance": 31.941000000000003,
443
+ "chnl": 15,
444
+ "x": 288,
445
+ "y": 347,
446
+ "page": 0
447
+ },
448
+ {
449
+ "id": 70,
450
+ "width": 32,
451
+ "height": 40,
452
+ "xoffset": 0,
453
+ "yoffset": -30.093000000000004,
454
+ "xadvance": 23.751,
455
+ "chnl": 15,
456
+ "x": 330,
457
+ "y": 347,
458
+ "page": 0
459
+ },
460
+ {
461
+ "id": 34,
462
+ "width": 23,
463
+ "height": 40,
464
+ "xoffset": 0,
465
+ "yoffset": -30.093000000000004,
466
+ "xadvance": 15.561000000000002,
467
+ "chnl": 15,
468
+ "x": 364,
469
+ "y": 347,
470
+ "page": 0
471
+ },
472
+ {
473
+ "id": 72,
474
+ "width": 38,
475
+ "height": 40,
476
+ "xoffset": 0,
477
+ "yoffset": -30.093000000000004,
478
+ "xadvance": 32.067,
479
+ "chnl": 15,
480
+ "x": 389,
481
+ "y": 347,
482
+ "page": 0
483
+ },
484
+ {
485
+ "id": 73,
486
+ "width": 18,
487
+ "height": 40,
488
+ "xoffset": 0,
489
+ "yoffset": -30.093000000000004,
490
+ "xadvance": 11.760000000000002,
491
+ "chnl": 15,
492
+ "x": 429,
493
+ "y": 347,
494
+ "page": 0
495
+ },
496
+ {
497
+ "id": 74,
498
+ "width": 24,
499
+ "height": 40,
500
+ "xoffset": 0,
501
+ "yoffset": -30.093000000000004,
502
+ "xadvance": 17.745,
503
+ "chnl": 15,
504
+ "x": 449,
505
+ "y": 347,
506
+ "page": 0
507
+ },
508
+ {
509
+ "id": 75,
510
+ "width": 38,
511
+ "height": 40,
512
+ "xoffset": 0,
513
+ "yoffset": -30.093000000000004,
514
+ "xadvance": 27.825000000000003,
515
+ "chnl": 15,
516
+ "x": 24,
517
+ "y": 297,
518
+ "page": 0
519
+ },
520
+ {
521
+ "id": 76,
522
+ "width": 31,
523
+ "height": 40,
524
+ "xoffset": 0,
525
+ "yoffset": -30.093000000000004,
526
+ "xadvance": 21.567,
527
+ "chnl": 15,
528
+ "x": 475,
529
+ "y": 347,
530
+ "page": 0
531
+ },
532
+ {
533
+ "id": 66,
534
+ "width": 35,
535
+ "height": 40,
536
+ "xoffset": 0,
537
+ "yoffset": -30.093000000000004,
538
+ "xadvance": 27.153000000000002,
539
+ "chnl": 15,
540
+ "x": 64,
541
+ "y": 297,
542
+ "page": 0
543
+ },
544
+ {
545
+ "id": 78,
546
+ "width": 38,
547
+ "height": 40,
548
+ "xoffset": 0,
549
+ "yoffset": -30.093000000000004,
550
+ "xadvance": 32.067,
551
+ "chnl": 15,
552
+ "x": 101,
553
+ "y": 297,
554
+ "page": 0
555
+ },
556
+ {
557
+ "id": 33,
558
+ "width": 18,
559
+ "height": 40,
560
+ "xoffset": 0,
561
+ "yoffset": -30.093000000000004,
562
+ "xadvance": 11.298,
563
+ "chnl": 15,
564
+ "x": 141,
565
+ "y": 297,
566
+ "page": 0
567
+ },
568
+ {
569
+ "id": 80,
570
+ "width": 34,
571
+ "height": 40,
572
+ "xoffset": 0,
573
+ "yoffset": -30.093000000000004,
574
+ "xadvance": 25.221,
575
+ "chnl": 15,
576
+ "x": 161,
577
+ "y": 297,
578
+ "page": 0
579
+ },
580
+ {
581
+ "id": 65,
582
+ "width": 38,
583
+ "height": 40,
584
+ "xoffset": 0,
585
+ "yoffset": -30.093000000000004,
586
+ "xadvance": 28.434,
587
+ "chnl": 15,
588
+ "x": 197,
589
+ "y": 297,
590
+ "page": 0
591
+ },
592
+ {
593
+ "id": 82,
594
+ "width": 36,
595
+ "height": 40,
596
+ "xoffset": 0,
597
+ "yoffset": -30.093000000000004,
598
+ "xadvance": 26.313000000000002,
599
+ "chnl": 15,
600
+ "x": 237,
601
+ "y": 297,
602
+ "page": 0
603
+ },
604
+ {
605
+ "id": 35,
606
+ "width": 33,
607
+ "height": 40,
608
+ "xoffset": 0,
609
+ "yoffset": -30.093000000000004,
610
+ "xadvance": 24.360000000000003,
611
+ "chnl": 15,
612
+ "x": 275,
613
+ "y": 297,
614
+ "page": 0
615
+ },
616
+ {
617
+ "id": 84,
618
+ "width": 34,
619
+ "height": 40,
620
+ "xoffset": 0,
621
+ "yoffset": -30.093000000000004,
622
+ "xadvance": 24.801000000000002,
623
+ "chnl": 15,
624
+ "x": 310,
625
+ "y": 297,
626
+ "page": 0
627
+ },
628
+ {
629
+ "id": 85,
630
+ "width": 37,
631
+ "height": 40,
632
+ "xoffset": 0,
633
+ "yoffset": -30.093000000000004,
634
+ "xadvance": 30.891000000000002,
635
+ "chnl": 15,
636
+ "x": 346,
637
+ "y": 297,
638
+ "page": 0
639
+ },
640
+ {
641
+ "id": 86,
642
+ "width": 38,
643
+ "height": 40,
644
+ "xoffset": 0,
645
+ "yoffset": -30.093000000000004,
646
+ "xadvance": 28.434,
647
+ "chnl": 15,
648
+ "x": 385,
649
+ "y": 297,
650
+ "page": 0
651
+ },
652
+ {
653
+ "id": 39,
654
+ "width": 16,
655
+ "height": 40,
656
+ "xoffset": 0,
657
+ "yoffset": -30.093000000000004,
658
+ "xadvance": 8.568000000000001,
659
+ "chnl": 15,
660
+ "x": 425,
661
+ "y": 297,
662
+ "page": 0
663
+ },
664
+ {
665
+ "id": 69,
666
+ "width": 32,
667
+ "height": 40,
668
+ "xoffset": 0,
669
+ "yoffset": -30.093000000000004,
670
+ "xadvance": 24.255000000000003,
671
+ "chnl": 15,
672
+ "x": 443,
673
+ "y": 297,
674
+ "page": 0
675
+ },
676
+ {
677
+ "id": 89,
678
+ "width": 36,
679
+ "height": 40,
680
+ "xoffset": 0,
681
+ "yoffset": -30.093000000000004,
682
+ "xadvance": 26.208000000000002,
683
+ "chnl": 15,
684
+ "x": 23,
685
+ "y": 247,
686
+ "page": 0
687
+ },
688
+ {
689
+ "id": 90,
690
+ "width": 34,
691
+ "height": 40,
692
+ "xoffset": 0,
693
+ "yoffset": -30.093000000000004,
694
+ "xadvance": 25.284000000000002,
695
+ "chnl": 15,
696
+ "x": 477,
697
+ "y": 297,
698
+ "page": 0
699
+ },
700
+ {
701
+ "id": 49,
702
+ "width": 31,
703
+ "height": 40,
704
+ "xoffset": 0,
705
+ "yoffset": -30.156000000000002,
706
+ "xadvance": 24.360000000000003,
707
+ "chnl": 15,
708
+ "x": 61,
709
+ "y": 247,
710
+ "page": 0
711
+ },
712
+ {
713
+ "id": 50,
714
+ "width": 32,
715
+ "height": 40,
716
+ "xoffset": 0,
717
+ "yoffset": -30.429000000000002,
718
+ "xadvance": 24.360000000000003,
719
+ "chnl": 15,
720
+ "x": 94,
721
+ "y": 247,
722
+ "page": 0
723
+ },
724
+ {
725
+ "id": 57,
726
+ "width": 32,
727
+ "height": 40,
728
+ "xoffset": 0,
729
+ "yoffset": -30.429000000000002,
730
+ "xadvance": 24.360000000000003,
731
+ "chnl": 15,
732
+ "x": 128,
733
+ "y": 247,
734
+ "page": 0
735
+ },
736
+ {
737
+ "id": 94,
738
+ "width": 32,
739
+ "height": 40,
740
+ "xoffset": 0,
741
+ "yoffset": -30.093000000000004,
742
+ "xadvance": 24.360000000000003,
743
+ "chnl": 15,
744
+ "x": 162,
745
+ "y": 247,
746
+ "page": 0
747
+ },
748
+ {
749
+ "id": 96,
750
+ "width": 21,
751
+ "height": 40,
752
+ "xoffset": 0,
753
+ "yoffset": -30.429000000000002,
754
+ "xadvance": 16.8,
755
+ "chnl": 15,
756
+ "x": 196,
757
+ "y": 247,
758
+ "page": 0
759
+ },
760
+ {
761
+ "id": 55,
762
+ "width": 33,
763
+ "height": 40,
764
+ "xoffset": 0,
765
+ "yoffset": -30.093000000000004,
766
+ "xadvance": 24.360000000000003,
767
+ "chnl": 15,
768
+ "x": 219,
769
+ "y": 247,
770
+ "page": 0
771
+ },
772
+ {
773
+ "id": 54,
774
+ "width": 33,
775
+ "height": 40,
776
+ "xoffset": 0,
777
+ "yoffset": -30.093000000000004,
778
+ "xadvance": 24.360000000000003,
779
+ "chnl": 15,
780
+ "x": 254,
781
+ "y": 247,
782
+ "page": 0
783
+ },
784
+ {
785
+ "id": 53,
786
+ "width": 32,
787
+ "height": 40,
788
+ "xoffset": 0,
789
+ "yoffset": -30.093000000000004,
790
+ "xadvance": 24.360000000000003,
791
+ "chnl": 15,
792
+ "x": 289,
793
+ "y": 247,
794
+ "page": 0
795
+ },
796
+ {
797
+ "id": 52,
798
+ "width": 33,
799
+ "height": 40,
800
+ "xoffset": 0,
801
+ "yoffset": -30.093000000000004,
802
+ "xadvance": 24.360000000000003,
803
+ "chnl": 15,
804
+ "x": 323,
805
+ "y": 247,
806
+ "page": 0
807
+ },
808
+ {
809
+ "id": 103,
810
+ "width": 31,
811
+ "height": 39,
812
+ "xoffset": 0,
813
+ "yoffset": -21.630000000000003,
814
+ "xadvance": 21.84,
815
+ "chnl": 15,
816
+ "x": 358,
817
+ "y": 247,
818
+ "page": 0
819
+ },
820
+ {
821
+ "id": 112,
822
+ "width": 32,
823
+ "height": 39,
824
+ "xoffset": 0,
825
+ "yoffset": -21.651,
826
+ "xadvance": 23.541,
827
+ "chnl": 15,
828
+ "x": 391,
829
+ "y": 247,
830
+ "page": 0
831
+ },
832
+ {
833
+ "id": 113,
834
+ "width": 31,
835
+ "height": 39,
836
+ "xoffset": 0,
837
+ "yoffset": -21.651,
838
+ "xadvance": 23.520000000000003,
839
+ "chnl": 15,
840
+ "x": 425,
841
+ "y": 247,
842
+ "page": 0
843
+ },
844
+ {
845
+ "id": 116,
846
+ "width": 25,
847
+ "height": 39,
848
+ "xoffset": 0,
849
+ "yoffset": -28.182000000000002,
850
+ "xadvance": 15.057,
851
+ "chnl": 15,
852
+ "x": 458,
853
+ "y": 247,
854
+ "page": 0
855
+ },
856
+ {
857
+ "id": 121,
858
+ "width": 31,
859
+ "height": 38,
860
+ "xoffset": 0,
861
+ "yoffset": -21.273,
862
+ "xadvance": 21.651,
863
+ "chnl": 15,
864
+ "x": 34,
865
+ "y": 196,
866
+ "page": 0
867
+ },
868
+ {
869
+ "id": 59,
870
+ "width": 18,
871
+ "height": 36,
872
+ "xoffset": 0,
873
+ "yoffset": -20.706,
874
+ "xadvance": 10.983,
875
+ "chnl": 15,
876
+ "x": 485,
877
+ "y": 247,
878
+ "page": 0
879
+ },
880
+ {
881
+ "id": 43,
882
+ "width": 32,
883
+ "height": 34,
884
+ "xoffset": 0,
885
+ "yoffset": -24.486,
886
+ "xadvance": 24.360000000000003,
887
+ "chnl": 15,
888
+ "x": 67,
889
+ "y": 196,
890
+ "page": 0
891
+ },
892
+ {
893
+ "id": 60,
894
+ "width": 30,
895
+ "height": 33,
896
+ "xoffset": 0,
897
+ "yoffset": -23.331000000000003,
898
+ "xadvance": 24.360000000000003,
899
+ "chnl": 15,
900
+ "x": 101,
901
+ "y": 196,
902
+ "page": 0
903
+ },
904
+ {
905
+ "id": 62,
906
+ "width": 31,
907
+ "height": 33,
908
+ "xoffset": 0,
909
+ "yoffset": -23.331000000000003,
910
+ "xadvance": 24.360000000000003,
911
+ "chnl": 15,
912
+ "x": 133,
913
+ "y": 196,
914
+ "page": 0
915
+ },
916
+ {
917
+ "id": 117,
918
+ "width": 30,
919
+ "height": 32,
920
+ "xoffset": 0,
921
+ "yoffset": -21.273,
922
+ "xadvance": 23.415000000000003,
923
+ "chnl": 15,
924
+ "x": 166,
925
+ "y": 196,
926
+ "page": 0
927
+ },
928
+ {
929
+ "id": 99,
930
+ "width": 29,
931
+ "height": 32,
932
+ "xoffset": 0,
933
+ "yoffset": -21.609,
934
+ "xadvance": 20.055,
935
+ "chnl": 15,
936
+ "x": 198,
937
+ "y": 196,
938
+ "page": 0
939
+ },
940
+ {
941
+ "id": 110,
942
+ "width": 31,
943
+ "height": 32,
944
+ "xoffset": 0,
945
+ "yoffset": -21.609,
946
+ "xadvance": 23.436,
947
+ "chnl": 15,
948
+ "x": 229,
949
+ "y": 196,
950
+ "page": 0
951
+ },
952
+ {
953
+ "id": 111,
954
+ "width": 32,
955
+ "height": 32,
956
+ "xoffset": 0,
957
+ "yoffset": -21.609,
958
+ "xadvance": 23.814,
959
+ "chnl": 15,
960
+ "x": 262,
961
+ "y": 196,
962
+ "page": 0
963
+ },
964
+ {
965
+ "id": 126,
966
+ "width": 32,
967
+ "height": 26,
968
+ "xoffset": 0,
969
+ "yoffset": -16.128,
970
+ "xadvance": 24.360000000000003,
971
+ "chnl": 15,
972
+ "x": 201,
973
+ "y": 447,
974
+ "page": 0
975
+ },
976
+ {
977
+ "id": 101,
978
+ "width": 31,
979
+ "height": 32,
980
+ "xoffset": 0,
981
+ "yoffset": -21.609,
982
+ "xadvance": 22.176000000000002,
983
+ "chnl": 15,
984
+ "x": 296,
985
+ "y": 196,
986
+ "page": 0
987
+ },
988
+ {
989
+ "id": 114,
990
+ "width": 25,
991
+ "height": 32,
992
+ "xoffset": 0,
993
+ "yoffset": -21.651,
994
+ "xadvance": 15.288,
995
+ "chnl": 15,
996
+ "x": 329,
997
+ "y": 196,
998
+ "page": 0
999
+ },
1000
+ {
1001
+ "id": 115,
1002
+ "width": 27,
1003
+ "height": 32,
1004
+ "xoffset": 0,
1005
+ "yoffset": -21.609,
1006
+ "xadvance": 18.186,
1007
+ "chnl": 15,
1008
+ "x": 356,
1009
+ "y": 196,
1010
+ "page": 0
1011
+ },
1012
+ {
1013
+ "id": 97,
1014
+ "width": 28,
1015
+ "height": 32,
1016
+ "xoffset": 0,
1017
+ "yoffset": -21.651,
1018
+ "xadvance": 20.874000000000002,
1019
+ "chnl": 15,
1020
+ "x": 385,
1021
+ "y": 196,
1022
+ "page": 0
1023
+ },
1024
+ {
1025
+ "id": 118,
1026
+ "width": 31,
1027
+ "height": 31,
1028
+ "xoffset": 0,
1029
+ "yoffset": -21.273,
1030
+ "xadvance": 21.672,
1031
+ "chnl": 15,
1032
+ "x": 415,
1033
+ "y": 196,
1034
+ "page": 0
1035
+ },
1036
+ {
1037
+ "id": 61,
1038
+ "width": 31,
1039
+ "height": 29,
1040
+ "xoffset": 0,
1041
+ "yoffset": -19.089000000000002,
1042
+ "xadvance": 24.360000000000003,
1043
+ "chnl": 15,
1044
+ "x": 448,
1045
+ "y": 196,
1046
+ "page": 0
1047
+ },
1048
+ {
1049
+ "id": 120,
1050
+ "width": 30,
1051
+ "height": 31,
1052
+ "xoffset": 0,
1053
+ "yoffset": -21.273,
1054
+ "xadvance": 20.916,
1055
+ "chnl": 15,
1056
+ "x": 21,
1057
+ "y": 145,
1058
+ "page": 0
1059
+ },
1060
+ {
1061
+ "id": 58,
1062
+ "width": 18,
1063
+ "height": 31,
1064
+ "xoffset": 0,
1065
+ "yoffset": -20.706,
1066
+ "xadvance": 10.5,
1067
+ "chnl": 15,
1068
+ "x": 53,
1069
+ "y": 145,
1070
+ "page": 0
1071
+ },
1072
+ {
1073
+ "id": 122,
1074
+ "width": 28,
1075
+ "height": 31,
1076
+ "xoffset": 0,
1077
+ "yoffset": -21.273,
1078
+ "xadvance": 18.984,
1079
+ "chnl": 15,
1080
+ "x": 73,
1081
+ "y": 145,
1082
+ "page": 0
1083
+ },
1084
+ {
1085
+ "id": 95,
1086
+ "width": 28,
1087
+ "height": 16,
1088
+ "xoffset": 0,
1089
+ "yoffset": 0,
1090
+ "xadvance": 19.278000000000002,
1091
+ "chnl": 15,
1092
+ "x": 235,
1093
+ "y": 447,
1094
+ "page": 0
1095
+ },
1096
+ {
1097
+ "id": 45,
1098
+ "width": 23,
1099
+ "height": 24,
1100
+ "xoffset": 0,
1101
+ "yoffset": -14.175,
1102
+ "xadvance": 15.603000000000002,
1103
+ "chnl": 15,
1104
+ "x": 481,
1105
+ "y": 196,
1106
+ "page": 0
1107
+ },
1108
+ {
1109
+ "id": 44,
1110
+ "width": 17,
1111
+ "height": 21,
1112
+ "xoffset": 0,
1113
+ "yoffset": -4.956,
1114
+ "xadvance": 9.534,
1115
+ "chnl": 15,
1116
+ "x": 103,
1117
+ "y": 145,
1118
+ "page": 0
1119
+ },
1120
+ {
1121
+ "id": 46,
1122
+ "width": 18,
1123
+ "height": 15,
1124
+ "xoffset": 0,
1125
+ "yoffset": -4.956,
1126
+ "xadvance": 9.912,
1127
+ "chnl": 15,
1128
+ "x": 0,
1129
+ "y": 497,
1130
+ "page": 0
1131
+ },
1132
+ {
1133
+ "id": 32,
1134
+ "width": 0,
1135
+ "height": 0,
1136
+ "xoffset": 0,
1137
+ "yoffset": 0,
1138
+ "xadvance": 10.752,
1139
+ "chnl": 15,
1140
+ "x": 20,
1141
+ "y": 497,
1142
+ "page": 0
1143
+ }
1144
+ ],
1145
+ "info": {
1146
+ "face": "Lato Regular",
1147
+ "size": 42,
1148
+ "bold": 0,
1149
+ "italic": 0,
1150
+ "charset": [
1151
+ " ",
1152
+ "!",
1153
+ "\"",
1154
+ "#",
1155
+ "$",
1156
+ "%",
1157
+ "&",
1158
+ "'",
1159
+ "(",
1160
+ ")",
1161
+ "*",
1162
+ "+",
1163
+ ",",
1164
+ "-",
1165
+ ".",
1166
+ "/",
1167
+ "0",
1168
+ "1",
1169
+ "2",
1170
+ "3",
1171
+ "4",
1172
+ "5",
1173
+ "6",
1174
+ "7",
1175
+ "8",
1176
+ "9",
1177
+ ":",
1178
+ ";",
1179
+ "<",
1180
+ "=",
1181
+ ">",
1182
+ "?",
1183
+ "@",
1184
+ "A",
1185
+ "B",
1186
+ "C",
1187
+ "D",
1188
+ "E",
1189
+ "F",
1190
+ "G",
1191
+ "H",
1192
+ "I",
1193
+ "J",
1194
+ "K",
1195
+ "L",
1196
+ "M",
1197
+ "N",
1198
+ "O",
1199
+ "P",
1200
+ "Q",
1201
+ "R",
1202
+ "S",
1203
+ "T",
1204
+ "U",
1205
+ "V",
1206
+ "W",
1207
+ "X",
1208
+ "Y",
1209
+ "Z",
1210
+ "[",
1211
+ "\\",
1212
+ "]",
1213
+ "^",
1214
+ "_",
1215
+ "`",
1216
+ "a",
1217
+ "b",
1218
+ "c",
1219
+ "d",
1220
+ "e",
1221
+ "f",
1222
+ "g",
1223
+ "h",
1224
+ "i",
1225
+ "j",
1226
+ "k",
1227
+ "l",
1228
+ "m",
1229
+ "n",
1230
+ "o",
1231
+ "p",
1232
+ "q",
1233
+ "r",
1234
+ "s",
1235
+ "t",
1236
+ "u",
1237
+ "v",
1238
+ "w",
1239
+ "x",
1240
+ "y",
1241
+ "z",
1242
+ "{",
1243
+ "|",
1244
+ "}",
1245
+ "~"
1246
+ ],
1247
+ "unicode": 1,
1248
+ "stretchH": 100,
1249
+ "smooth": 1,
1250
+ "aa": 1,
1251
+ "padding": [0, 0, 0, 0],
1252
+ "spacing": [2, 2]
1253
+ },
1254
+ "common": {
1255
+ "lineHeight": 50.400000000000006,
1256
+ "base": 41.454,
1257
+ "scaleW": 512,
1258
+ "scaleH": 512,
1259
+ "pages": 1,
1260
+ "packed": 0,
1261
+ "alphaChnl": 0,
1262
+ "redChnl": 0,
1263
+ "greenChnl": 0,
1264
+ "blueChnl": 0
1265
+ },
1266
+ "kernings": []
1267
+ }