diff --git a/.gitignore b/.gitignore
index 455a8bc..c3a4534 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,4 +22,6 @@ app/release/
captures/
local.properties
keystore.properties
-key.jks
\ No newline at end of file
+key.jks
+# generated map intermediates; the packed .bmap in assets is what ships
+mapdata/*.geojson
diff --git a/app/src/main/assets/aeqd01.bmap b/app/src/main/assets/aeqd01.bmap
new file mode 100644
index 0000000..f3c5c56
Binary files /dev/null and b/app/src/main/assets/aeqd01.bmap differ
diff --git a/app/src/main/assets/aeqd01.svg b/app/src/main/assets/aeqd01.svg
deleted file mode 100644
index a7dc0e7..0000000
--- a/app/src/main/assets/aeqd01.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/app/src/main/assets/loxim01.bmap b/app/src/main/assets/loxim01.bmap
new file mode 100644
index 0000000..0dfc2ef
Binary files /dev/null and b/app/src/main/assets/loxim01.bmap differ
diff --git a/app/src/main/assets/loxim01.svg b/app/src/main/assets/loxim01.svg
deleted file mode 100644
index d3940f9..0000000
--- a/app/src/main/assets/loxim01.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/app/src/main/assets/webmercator01.bmap b/app/src/main/assets/webmercator01.bmap
new file mode 100644
index 0000000..e629a63
Binary files /dev/null and b/app/src/main/assets/webmercator01.bmap differ
diff --git a/app/src/main/assets/webmercator01.svg b/app/src/main/assets/webmercator01.svg
deleted file mode 100644
index d10cb44..0000000
--- a/app/src/main/assets/webmercator01.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/genenum.js b/genenum.js
index 4bf8a1b..d52988d 100644
--- a/genenum.js
+++ b/genenum.js
@@ -1,10 +1,8 @@
#!/bin/node
-import {readFileSync,writeFileSync,existsSync} from 'fs'
+import {readFileSync,existsSync} from 'fs'
import area from '@turf/area'
import * as turf from '@turf/turf'
-import * as path from 'path';
-import { JSDOM } from 'jsdom';
const countries =
@@ -162,52 +160,4 @@ async function run(){
}
}
-
-function fixSvg(svgPath) {
- const countryToRegion = {};
- for (const [region, countries] of Object.entries(groups)) {
- countries.forEach(country => countryToRegion[country] = region);
- }
- const absoluteInputPath = path.resolve(svgPath);
- if (!existsSync(absoluteInputPath)) {
- throw new Error(`Input file not found at: ${absoluteInputPath}`);
- }
- const svgContent = readFileSync(absoluteInputPath, 'utf8');
- const dom = new JSDOM(svgContent, { contentType: 'image/svg+xml' });
- const document = dom.window.document;
- const svgRoot = document.querySelector('svg');
- if (!svgRoot) {
- throw new Error("Invalid or empty SVG structure encountered.");
- }
- if (svgRoot.getAttribute('data-processed') === 'true') {
- console.log(`Skipping: File at "${svgPath}" has already been processed.`);
- return;
- }
-
- const elementGroups = Array.from(svgRoot.querySelectorAll('g'));
- elementGroups.forEach(group => {
- const currentId = group.getAttribute('id') || '';
- const baseIsoCode = currentId.replace(/\d+$/, '');
- const regionKey = countryToRegion[baseIsoCode] || 'XXXX';
- let regionGroup = svgRoot.querySelector(`g[id="${regionKey}"]`);
- if (!regionGroup) {
- regionGroup = document.createElementNS('http://w3.org', 'g');
- regionGroup.setAttribute('id', regionKey);
- svgRoot.appendChild(regionGroup);
- }
- regionGroup.appendChild(group);
- });
- svgRoot.setAttribute('data-processed', 'true');
- const absoluteOutputPath = path.resolve(svgPath);
- let cleanXmlString = svgRoot.outerHTML;
- cleanXmlString = cleanXmlString.replace(/[\r\n]+/g, '');
- cleanXmlString = cleanXmlString.replace(/xmlns="http:\/\/w3\.org"\s?/g, '');
- cleanXmlString = cleanXmlString.replace(/xmlns="http:\/\/www\.w3\.org\/2000\/svg"\s?/g, '');
- cleanXmlString = cleanXmlString.replace('