Publish dx-maps (renamed tree) from doxa-maps main 2ff0ecba
423
app/dx-maps/all-people-groups/all-people-groups.js
Normal file
195
app/dx-maps/all-people-groups/all-people-groups/index.html
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>all-people-groups · all-people-groups</title>
|
||||
<link rel="icon" href="data:,">
|
||||
<!-- Mapbox peer loaded ONCE here; the map custom element mounts in this page and
|
||||
uses window.mapboxgl directly (same realm → no cross-realm container errors). -->
|
||||
<link rel="preconnect" href="https://api.mapbox.com" crossorigin />
|
||||
<link href="https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css" rel="stylesheet" />
|
||||
<link href="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v5.0.0/mapbox-gl-geocoder.css" rel="stylesheet" />
|
||||
<script src="https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js"></script>
|
||||
<script src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v5.0.0/mapbox-gl-geocoder.min.js"></script>
|
||||
<style>
|
||||
/* BARE full-page map — no chrome. The custom element IS the page, so the
|
||||
browser URL shares the map itself. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, all-people-groups { position: fixed; inset: 0; width: 100%; height: 100%; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
#status.err { color: #f87171; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="slot"></div>
|
||||
<div id="status">loading token…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <all-people-groups> custom element. -->
|
||||
<script src="../all-people-groups.js" integrity="sha384-bxTU014BYBw69bYiEv7Cu6XHlWzMvoVrNndHSYW8jq7Kl3ILCJ7vnLfbc6V01Bkl" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
// 1. prop — a token hardcoded into this page's profile-config (config.tk)
|
||||
// 2. ?tk= URL param — token carried in the shared link
|
||||
// 3. baked token — opt-in literal token inlined at build time (build-config.token)
|
||||
// A token from rungs 1-3 is used DIRECTLY (no network). Otherwise a token
|
||||
// *endpoint* is resolved and fetched:
|
||||
// 4. window.MAP_TOKEN_URL override 5. configured TOKEN_SRC URL 6. same-origin /api/maps/token
|
||||
// TOKEN_SRC is treated as DATA, never eval'd: the literal "window.MAP_TOKEN_URL"
|
||||
// means "read that global"; anything else is used as a URL — so both a global
|
||||
// name and a plain URL are safe (no SyntaxError footgun).
|
||||
(function () {
|
||||
var slot = document.getElementById('slot');
|
||||
var status = document.getElementById('status');
|
||||
var BASE_CONFIG = {"profile":"all-people-groups","dataSource":"pray-tools","instanceId":"all-people-groups-all-people-groups","assetsBase":"../../assets"};
|
||||
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
|
||||
// the ladder below is skipped entirely and the element mounts immediately.
|
||||
var TOKEN_FREE = false;
|
||||
// A token-free COMPOSITE still nests plugins, and a nested Mapbox map reads window.MAP_TOKEN
|
||||
// rather than this page's profile-config. With no baked token (the public copy), it must get
|
||||
// one from ?tk= or a pasted token, or be asked for one — see the rungs below.
|
||||
var NESTS_MAPS = false;
|
||||
var TOKEN_SRC = "window.MAP_TOKEN_URL";
|
||||
var BAKED_TOKEN = "pk.eyJ1IjoiZ29zeXN0ZW1zIiwiYSI6ImNtZm9vM291czA3amQya3BzYW42YW9ibTcifQ.52WM0IpxY9FcB0zc9f1zbQ";
|
||||
// Expose the baked token as window.MAP_TOKEN so a BAKED composite (a compiled element that mounts
|
||||
// a map component directly, with no ProfileLoader/profile-config wrapper) still finds a token —
|
||||
// useMapInstance falls back to window.MAP_TOKEN. No effect when BAKED_TOKEN is empty.
|
||||
if (BAKED_TOKEN && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = BAKED_TOKEN; }
|
||||
var DEFAULT_TOKEN_URL = '/api/maps/token';
|
||||
|
||||
function fail(msg) { if (status) { status.className = 'err'; status.textContent = '⚠ ' + msg; } }
|
||||
// No token anywhere on the ladder → ask ONCE, store locally, remount. No dead ends.
|
||||
function askToken() {
|
||||
if (!status) return;
|
||||
status.className = 'err';
|
||||
status.innerHTML = 'map needs a Mapbox token — ' +
|
||||
'<input id="tkIn" type="password" placeholder="paste pk.… (stays in this browser)" ' +
|
||||
'style="font:12px ui-monospace,monospace;padding:6px 8px;border-radius:6px;border:1px solid #223047;background:#0e1623;color:#eef2f7;width:min(320px,70vw)"> ' +
|
||||
'<button id="tkGo" style="font:700 11px ui-monospace,monospace;padding:7px 12px;border-radius:999px;border:0;cursor:pointer;background:linear-gradient(90deg,#46d4ff,#b9a6f5);color:#0a0e15">use it</button>';
|
||||
var go = document.getElementById('tkGo');
|
||||
if (go) go.addEventListener('click', function () {
|
||||
var v = (document.getElementById('tkIn').value || '').trim();
|
||||
if (!v) return;
|
||||
try { localStorage.setItem('MAPS_STAGING_TK', v); } catch (e) {}
|
||||
mount(v);
|
||||
});
|
||||
}
|
||||
/* ★ RELEASE THE LOAD BACKDROP WHEN THE ELEMENT MOUNTS (BUG-GOSPEL-MAP-BLACK-RECTANGLE).
|
||||
html/body carry background:#0a0e15 so the light #status text (#9aa7b8) is readable while the
|
||||
bundle loads. That backdrop is LOAD-STATE CHROME, but it outlived its moment: any gap the
|
||||
mounted element does not cover shows it through, because every layer above body is
|
||||
transparent. On gospel-resources/resources-map that produced a 352x126 DARK RECTANGLE between
|
||||
the legend card and the detail panel — MEASURED rgb(8,12,18), i.e. the page background, NOT an
|
||||
unpainted canvas as first supposed. Clearing it here (the one place we already know the
|
||||
element is up) is a one-shot style write — no resize, no repaint loop. Keep it a one-shot
|
||||
write: do NOT turn this into a per-frame or per-event handler (a resize loop strobes the screen). */
|
||||
function done() {
|
||||
if (status && status.parentNode) { status.parentNode.removeChild(status); }
|
||||
document.documentElement.style.background = '#f3f3f1';
|
||||
document.body.style.background = '#f3f3f1';
|
||||
}
|
||||
|
||||
function mount(token) {
|
||||
if (!token && !TOKEN_FREE) { return askToken(); }
|
||||
// Nested maps (a composite's children) read window.MAP_TOKEN, not this element's config.
|
||||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("all-people-groups");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
done();
|
||||
} catch (e) { fail(e && e.message ? e.message : String(e)); }
|
||||
}
|
||||
|
||||
function qp(name) {
|
||||
try { return new URLSearchParams(location.search).get(name) || ''; }
|
||||
catch (e) { return ''; }
|
||||
}
|
||||
|
||||
function extractToken(data) {
|
||||
if (typeof data === 'string') return data.trim();
|
||||
if (data && typeof data === 'object') return data.token || data.tk || data.accessToken || '';
|
||||
return '';
|
||||
}
|
||||
|
||||
// Rungs 1-3b: an actual token → mount directly, no fetch.
|
||||
// 2b = localStorage: the paste-once store shared with the staging pages
|
||||
// (MAPS_STAGING_TK) — paste a token ONCE anywhere in the tree, every page uses it.
|
||||
var stored = '';
|
||||
try { stored = localStorage.getItem('MAPS_STAGING_TK') || ''; } catch (e) {}
|
||||
var urlTk = qp('tk');
|
||||
if (urlTk) { try { localStorage.setItem('MAPS_STAGING_TK', urlTk); } catch (e) {} }
|
||||
var directToken = (BASE_CONFIG && BASE_CONFIG.tk) || urlTk || stored || BAKED_TOKEN;
|
||||
if (TOKEN_FREE) {
|
||||
if (directToken && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = directToken; }
|
||||
mount('');
|
||||
// A token-free composite with no token anywhere: its content renders, but its nested maps
|
||||
// cannot. Ask once; the token is stored for the whole tree and the page reloads with it.
|
||||
if (NESTS_MAPS && !directToken) {
|
||||
var bar = document.createElement('div');
|
||||
bar.id = 'status';
|
||||
bar.setAttribute('style', 'position:fixed;left:12px;right:12px;bottom:12px;z-index:2147483000;padding:10px 12px;border-radius:10px;background:#0e1623;color:#eef2f7;font:13px system-ui,sans-serif;box-shadow:0 6px 24px rgba(0,0,0,.25)');
|
||||
document.body.appendChild(bar);
|
||||
status = bar;
|
||||
askToken();
|
||||
var goBtn = document.getElementById('tkGo');
|
||||
if (goBtn) goBtn.addEventListener('click', function () {
|
||||
var v = (document.getElementById('tkIn').value || '').trim();
|
||||
if (v) { location.reload(); }
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (directToken) { return mount(directToken); }
|
||||
|
||||
// Rungs 4-6: resolve the token ENDPOINT candidates and try them IN ORDER — the first
|
||||
// one that answers with a token wins. Order: window.MAP_TOKEN_URL override → the
|
||||
// configured TOKEN_SRC (an ABSOLUTE url, so a tree hosted on a CDN away from the API
|
||||
// still finds it) → same-origin /api/maps/token (dev, or the site hosting both).
|
||||
// A single hard-coded pick used to kill the page when its one url 404'd or was
|
||||
// blocked by CORS; a shared link must work wherever the tree is hosted.
|
||||
var candidates = [];
|
||||
function addCandidate(u) { if (u && candidates.indexOf(u) === -1) candidates.push(u); }
|
||||
addCandidate(window.MAP_TOKEN_URL);
|
||||
addCandidate(TOKEN_SRC && TOKEN_SRC !== 'window.MAP_TOKEN_URL' ? TOKEN_SRC : '');
|
||||
addCandidate(DEFAULT_TOKEN_URL);
|
||||
|
||||
function fetchToken(i, errors) {
|
||||
if (i >= candidates.length) {
|
||||
// Every endpoint failed: say which, and still offer the paste-once box (no dead ends).
|
||||
askToken();
|
||||
if (status) {
|
||||
var d = document.createElement('div');
|
||||
d.textContent = '⚠ Token fetch failed from ' + candidates.join(', ') + ' — set window.MAP_TOKEN_URL or pass ?tk=. (' + errors.join(' | ') + ')';
|
||||
status.insertBefore(d, status.firstChild);
|
||||
}
|
||||
return;
|
||||
}
|
||||
var url = candidates[i];
|
||||
return fetch(url)
|
||||
.then(function (r) {
|
||||
if (!r.ok) throw new Error(url + ' → HTTP ' + r.status);
|
||||
var ct = r.headers.get('content-type') || '';
|
||||
return ct.indexOf('json') !== -1 ? r.json() : r.text();
|
||||
})
|
||||
.then(function (data) {
|
||||
var tk = extractToken(data);
|
||||
if (!tk) throw new Error(url + ' → no token in response');
|
||||
mount(tk);
|
||||
})
|
||||
.catch(function (e) {
|
||||
errors.push(e && e.message ? e.message : String(e));
|
||||
return fetchToken(i + 1, errors);
|
||||
});
|
||||
}
|
||||
fetchToken(0, []);
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1
app/dx-maps/assets/boundaries/gb-CHN-ADM1.geojson
Normal file
1
app/dx-maps/assets/boundaries/gb-IND-ADM1.geojson
Normal file
1
app/dx-maps/assets/boundaries/world-adm0.geojson
Normal file
24
app/dx-maps/assets/fonts/bebas-neue/LICENSE
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
Bebas Neue — SIL Open Font License, Version 1.1
|
||||
Designer: Ryoichi Tsunekawa (Dharma Type). Distributed via Google Fonts.
|
||||
Full text: https://openfontlicense.org/ (OFL-1.1)
|
||||
|
||||
WHY THIS FILE IS IN THIS REPO
|
||||
DX-life's /regions pages set --font-family-heading to 'Bebas Neue'. Their own site does not
|
||||
ship the file either — @nuxt/fonts downloads it at build and self-hosts it, which is why their
|
||||
computed font-family reads "Bebas Neue", "Bebas Neue Fallback: ...". We cannot @font-face from
|
||||
their origin: their font file is served without CORS headers, so a cross-origin face silently
|
||||
fails and every heading fell back to a condensed system stack. That substitution was the ONLY
|
||||
remaining difference between our regions dashboard and theirs (7 computed properties, all of
|
||||
them this one font and its knock-on sizes).
|
||||
So the font is vendored here, from Google Fonts, under the OFL that permits redistribution —
|
||||
self-hosted, never a CDN, the same rule public/assets/vendor/tabulator/ follows.
|
||||
Subsets and unicode-ranges are Google's own (css2 API, v16), reproduced verbatim in the
|
||||
@font-face declared by library/composables/useDocumentFont.js.
|
||||
|
||||
NOTE ON THIS FILENAME — it is deliberately extensionless.
|
||||
check:public-hygiene refuses *.md / *.markdown / *.txt anywhere in the served tree ("no docs in a
|
||||
served folder", Driver rule 2026-09-16), and it is right to: prose does not belong in a public
|
||||
mirror. But the OFL requires this licence to accompany the font files wherever they are
|
||||
redistributed, and the font files DO ship — they are fetched by the @font-face at runtime. So the
|
||||
licence travels with them under the conventional extensionless name, which satisfies the rule
|
||||
without weakening it. Do not rename this to LICENSE.txt.
|
||||
BIN
app/dx-maps/assets/fonts/bebas-neue/bebas-neue-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/bebas-neue/bebas-neue-latin.woff2
Normal file
100
app/dx-maps/assets/fonts/figtree/LICENSE
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
Figtree — SIL Open Font License, Version 1.1
|
||||
Designer: Erik D. Kennedy. Distributed via Google Fonts.
|
||||
Vendored as the free stand-in for Brandon Grotesque (commercial), by Driver decision
|
||||
2026-09-24. Chosen by MEASUREMENT, not by name: at 500/19.5312px Figtree renders
|
||||
'FULL PROFILE' at 126px against Brandon's 128px on live doxa.life — the closest of 19
|
||||
libre grotesques tested. See _probe-glyph-width.mjs.
|
||||
|
||||
Copyright 2022 The Figtree Project Authors (https://github.com/erikdkennedy/figtree)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
app/dx-maps/assets/fonts/figtree/figtree-500-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/figtree/figtree-500-latin.woff2
Normal file
93
app/dx-maps/assets/fonts/noto-serif-devanagari/LICENSE
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
Copyright 2022 The Noto Project Authors (https://github.com/notofonts/devanagari)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
126
app/dx-maps/assets/fonts/oswald/LICENSE
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
Oswald — SIL Open Font License, Version 1.1
|
||||
Copyright 2016 The Oswald Project Authors (https://github.com/googlefonts/OswaldFont)
|
||||
Full text below, and at https://openfontlicense.org/ (OFL-1.1)
|
||||
|
||||
WHY THIS FILE IS IN THIS REPO
|
||||
DX-life sets --font-family-cyrillic to 'Oswald' and base/_globals.scss:35-44 switches every
|
||||
h1/h2/h3 to it under [lang="ru-RU"], with letter-spacing -0.02em. That switch exists because
|
||||
BEBAS NEUE HAS NO CYRILLIC GLYPHS AT ALL — their heading face simply cannot render Russian, so
|
||||
without the switch a Russian heading falls out of the family entirely. Ours did exactly that:
|
||||
we ship a `ru` locale, we had neither the rule nor the font, so every Russian heading rendered
|
||||
in whatever condensed system face the browser chose.
|
||||
|
||||
WHICH SUBSETS, AND WHY FOUR
|
||||
cyrillic and cyrillic-ext are the point. latin and latin-ext are carried too because a Russian
|
||||
heading routinely contains Latin characters — a country name, a figure, an ampersand — and a
|
||||
face that covers only Cyrillic drops those glyphs back to the fallback MID-WORD, which looks
|
||||
worse than not switching at all. Google's own unicode-range values are carried verbatim
|
||||
(css2 v57), so the browser fetches only the subset a given heading needs.
|
||||
|
||||
oswald-400-cyrillic.woff2 6700 B
|
||||
oswald-400-cyrillic-ext.woff2 7688 B
|
||||
oswald-400-latin.woff2 12248 B
|
||||
oswald-400-latin-ext.woff2 11624 B
|
||||
|
||||
Each verified to begin with the wOF2 magic (774f4632) after download, because a fetch that
|
||||
silently returns an HTML error page also "succeeds" and a font that is really a 404 page fails
|
||||
at render time with no network error to find later.
|
||||
|
||||
Weight 400 only: their --font-weight-regular is what h1/h2/h3 use, and nothing on the regions
|
||||
surfaces asks Oswald for another weight.
|
||||
|
||||
────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
Copyright 2016 The Oswald Project Authors (https://github.com/googlefonts/OswaldFont)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
app/dx-maps/assets/fonts/oswald/oswald-400-cyrillic-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/oswald/oswald-400-cyrillic.woff2
Normal file
BIN
app/dx-maps/assets/fonts/oswald/oswald-400-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/oswald/oswald-400-latin.woff2
Normal file
29
app/dx-maps/assets/fonts/poppins/LICENSE
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
Poppins — SIL Open Font License, Version 1.1
|
||||
Designers: Indian Type Foundry, Jonny Pinhorn. Distributed via Google Fonts.
|
||||
Full text: https://openfontlicense.org/ (OFL-1.1)
|
||||
|
||||
WHY THIS FILE IS IN THIS REPO
|
||||
Poppins is DX-life's --font-family-base: the body face of every line of text on the pages the
|
||||
regions plugin clones. Their own site self-hosts it via @nuxt/fonts; we could not use theirs, so
|
||||
it is vendored here from Google Fonts under the OFL, which permits redistribution.
|
||||
|
||||
WHY IT WAS NEEDED — and why no CSS check caught it.
|
||||
A computed-style diff of our region dashboard against live doxa.life reported 68 of 68 properties
|
||||
IDENTICAL while our body text was rendering in a system fallback, because BOTH sides merely NAME
|
||||
"Poppins" first in font-family and a first-family comparison therefore matched. The difference only
|
||||
became visible against a glyph-width oracle: the same string at the same size measured 334.58px
|
||||
here against 317px on their page — 5.5% wider, i.e. a different face.
|
||||
document.fonts.check() is NOT a usable oracle for this: it returned true for families never
|
||||
vendored (Oswald, Brandon Grotesque) and false for Bebas Neue on DX-life's own page.
|
||||
See _qa-cycle/02-builder-cycle/_probe-glyph-width.mjs.
|
||||
|
||||
WHAT IS HERE, AND WHY ONLY THIS
|
||||
Weights 400/500/600/700 only — the four the regions surface actually asks for (measured across
|
||||
their _globals, _cards, _buttons and _filters SCSS: medium x10, regular x4, bold x2, plus the
|
||||
600 in the prayer-coverage legend). Subsets latin + latin-ext only. 44 KB in total, with Google's
|
||||
own unicode-ranges reproduced in the @font-face so the subset split behaves as it does on their
|
||||
site. Extra weights and scripts are deliberately NOT vendored — bloat is a repo rule here.
|
||||
|
||||
FILENAME: extensionless on purpose. check:public-hygiene refuses *.txt in a served folder and is
|
||||
right to, while the OFL requires this licence to accompany redistributed font files. Do not
|
||||
rename this to LICENSE.txt.
|
||||
BIN
app/dx-maps/assets/fonts/poppins/poppins-400-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-400-latin.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-500-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-500-latin.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-600-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-600-latin.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-700-latin-ext.woff2
Normal file
BIN
app/dx-maps/assets/fonts/poppins/poppins-700-latin.woff2
Normal file
36
app/dx-maps/assets/images/PROVENANCE
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
worldmap.svg — provenance
|
||||
=========================
|
||||
|
||||
WHAT IT IS
|
||||
The faint world-map watermark DX-life paints behind its people-group list. Their
|
||||
UupgsList sets it inline on the list root (app/components/public/UupgsList.vue:451):
|
||||
background-image: url(/assets/images/worldmap.svg), background-size 60%,
|
||||
background-position top, min-height 400px. Measured on their live
|
||||
/regions/cameroon: HTTP 200, 62,740 bytes over the wire, computed background-size
|
||||
60% / position 50% 0% / repeat no-repeat.
|
||||
|
||||
WHERE IT CAME FROM
|
||||
Copied byte-for-byte from the DX-life repository:
|
||||
doxa-life/public/assets/images/worldmap.svg
|
||||
Same organisation, copied so the regions clone matches their page. 311 KB on disk;
|
||||
small against this tree's other assets, which run 644 KB to 42 MB.
|
||||
|
||||
WHY THERE IS NO LICENCE FILE BESIDE IT
|
||||
Checked, rather than assumed. A full-file scan for copyright, licence, attribution,
|
||||
author, creator, <title>, <desc>, <metadata>, rdf:/dc: nodes and the usual stock-library
|
||||
names (Natural Earth, simplemaps, amCharts, Freepik, Shutterstock, OSM, Mapbox) returns
|
||||
NOTHING. The file is a plain vector — 394 <path> elements, three groups, no <image> and
|
||||
no <text> — and its ids are design-tool export names (Group_345,
|
||||
data-name="Group 345"), i.e. authored by their designer rather than downloaded with
|
||||
embedded credits. DX-life keeps no licence file alongside public/assets/images/ either;
|
||||
they treat that folder as their own artwork.
|
||||
So this is internal reuse of a first-party asset, not redistribution of a third-party
|
||||
one. Recorded here because the alternative was leaving the judgement implicit.
|
||||
|
||||
Contrast with the vendored typefaces, which ARE third-party and therefore carry their
|
||||
licence in the folder that serves them: public/assets/fonts/bebas-neue/LICENSE and
|
||||
.../poppins/LICENSE, both the SIL Open Font License 1.1, as the OFL requires.
|
||||
|
||||
NOTE ON THE FILENAME
|
||||
Extensionless on purpose. check:public-hygiene refuses a *.txt in a served folder, and
|
||||
the font LICENSE files set that precedent.
|
||||
402
app/dx-maps/assets/images/worldmap.svg
Normal file
|
After Width: | Height: | Size: 304 KiB |
1
app/dx-maps/assets/people-groups/people-groups-slim.json
Normal file
1
app/dx-maps/assets/pplr/coverage.json
Normal file
1
app/dx-maps/assets/pplr/pg-names.json
Normal file
1
app/dx-maps/assets/pplr/pg-points.json
Normal file
1
app/dx-maps/assets/pplr/pplr-geoid-family.json
Normal file
1
app/dx-maps/assets/pplr/rop-tree.json
Normal file
77
app/dx-maps/assets/pplr/rosetta-sample.json
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
[
|
||||
{
|
||||
"geoid": 221743,
|
||||
"name": "Mandarin-speaking Han Chinese",
|
||||
"rop3_code": "103686",
|
||||
"rop25_code": "301734",
|
||||
"imb_people_code": "PG006802",
|
||||
"joshua_project_code": "12051CH",
|
||||
"world_christian_database_code": "22870",
|
||||
"peid": 6802,
|
||||
"pgid": "PG006802",
|
||||
"country_code": "CHN",
|
||||
"iso_alpha3": "CHN",
|
||||
"religion_code": "NAT",
|
||||
"language_code": "cmn"
|
||||
},
|
||||
{
|
||||
"geoid": 232868,
|
||||
"name": "Yoruba",
|
||||
"rop3_code": "111095",
|
||||
"rop25_code": "309038",
|
||||
"imb_people_code": "PG014193",
|
||||
"joshua_project_code": "16057NI",
|
||||
"world_christian_database_code": "82430",
|
||||
"peid": 14193,
|
||||
"pgid": "PG014193",
|
||||
"country_code": "NGA",
|
||||
"iso_alpha3": "NGA",
|
||||
"religion_code": "C",
|
||||
"language_code": "yor"
|
||||
},
|
||||
{
|
||||
"geoid": 245083,
|
||||
"name": "Bengali Sunni Muslims",
|
||||
"rop3_code": "111658",
|
||||
"rop25_code": "301073",
|
||||
"imb_people_code": "PG001156",
|
||||
"joshua_project_code": "22492BG",
|
||||
"world_christian_database_code": "5490",
|
||||
"peid": 1156,
|
||||
"pgid": "PG001156",
|
||||
"country_code": "BGD",
|
||||
"iso_alpha3": "BGD",
|
||||
"religion_code": "MSN",
|
||||
"language_code": "ben"
|
||||
},
|
||||
{
|
||||
"geoid": 236976,
|
||||
"name": "Northern Pashtun",
|
||||
"rop3_code": "107909",
|
||||
"rop25_code": "306585",
|
||||
"imb_people_code": "PG043767",
|
||||
"joshua_project_code": "14256AF",
|
||||
"world_christian_database_code": "400",
|
||||
"peid": 43767,
|
||||
"pgid": "PG043767",
|
||||
"country_code": "AFG",
|
||||
"iso_alpha3": "AFG",
|
||||
"religion_code": "MSN",
|
||||
"language_code": "pbu"
|
||||
},
|
||||
{
|
||||
"geoid": 220329,
|
||||
"name": "White Americans",
|
||||
"rop3_code": "110448",
|
||||
"rop25_code": "300276",
|
||||
"imb_people_code": "PG043515",
|
||||
"joshua_project_code": "15741US",
|
||||
"world_christian_database_code": "*",
|
||||
"peid": 43515,
|
||||
"pgid": "PG043515",
|
||||
"country_code": "USA",
|
||||
"iso_alpha3": "USA",
|
||||
"religion_code": "C",
|
||||
"language_code": "eng"
|
||||
}
|
||||
]
|
||||
BIN
app/dx-maps/assets/previews/andean-caribbean.webp
Normal file
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 46 KiB |
BIN
app/dx-maps/assets/previews/asia-china-yunnan-province.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app/dx-maps/assets/previews/asia-india-andhra-pradesh.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
app/dx-maps/assets/previews/asia-india-gujarat.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app/dx-maps/assets/previews/asia-india-karnataka.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
app/dx-maps/assets/previews/asia-india-kerala.webp
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
app/dx-maps/assets/previews/asia-india-madhya-pradesh.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
app/dx-maps/assets/previews/asia-india-odisha.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
app/dx-maps/assets/previews/asia-india-rajasthan.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
app/dx-maps/assets/previews/asia-india-tamil-nadu.webp
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
app/dx-maps/assets/previews/asia-india-uttarakhand.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
app/dx-maps/assets/previews/asia-india-west-bengal.webp
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
app/dx-maps/assets/previews/brazil.webp
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
app/dx-maps/assets/previews/central-africa.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app/dx-maps/assets/previews/city-ago--8.8484-13.2535.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
app/dx-maps/assets/previews/city-bfa-9.7792--4.2879.webp
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app/dx-maps/assets/previews/city-brn-4.9234-114.9209.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
app/dx-maps/assets/previews/city-btn-27.75-91.2637.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-cod-3.5049-24.4533.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
app/dx-maps/assets/previews/city-idn--3.7191-127.9542.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.1396-77.7883.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.3796-78.8202.webp
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.5285-76.2146.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.7853-78.7051.webp
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.7855-76.6516.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.787-79.1378.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
app/dx-maps/assets/previews/city-ind-10.8469-76.2633.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.0049-76.9626.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.0546-78.6369.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.06-76.0816.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.0991-77.2807.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.1271-78.6565.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.253-76.2299.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.3548-77.711.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.4517-76.7145.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.6234-92.7265.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.6765-76.1741.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.8745-75.3695.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.9182-79.8085.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app/dx-maps/assets/previews/city-ind-11.967-75.3663.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.2973-75.7684.webp
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.3022-76.6423.webp
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.427-75.742.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.4538-75.1701.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.5102-74.9852.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.5446-80.0193.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.6867-79.9614.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.8403-75.2483.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.9125-79.3429.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.964-74.837.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
app/dx-maps/assets/previews/city-ind-12.9789-77.5857.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.0505-75.1773.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.2174-79.101.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.2466-80.2533.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.3138-75.7731.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.3389-74.7451.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.4672-79.0137.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
app/dx-maps/assets/previews/city-ind-13.6192-79.4197.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app/dx-maps/assets/previews/city-ind-14.4428-79.9882.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
app/dx-maps/assets/previews/city-ind-14.494-78.7992.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
app/dx-maps/assets/previews/city-ind-14.7445-74.7282.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
app/dx-maps/assets/previews/city-ind-14.7811-74.6161.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |