@math.gl/dggs 5.0.0-alpha.2 → 5.0.0-alpha.20

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 (110) hide show
  1. package/LICENSE +54 -87
  2. package/README.md +6 -1
  3. package/THIRD-PARTY-NOTICES.md +18 -0
  4. package/dist/a5-decoder.d.ts +4 -4
  5. package/dist/a5-decoder.d.ts.map +1 -1
  6. package/dist/a5-decoder.js +4 -4
  7. package/dist/a5-decoder.js.map +1 -1
  8. package/dist/a5.cjs +59 -2
  9. package/dist/a5.cjs.map +3 -3
  10. package/dist/a5.js +1 -1
  11. package/dist/a5.js.map +1 -1
  12. package/dist/converters/s2-to-obb-points.js +1 -1
  13. package/dist/converters/s2-to-obb-points.js.map +1 -1
  14. package/dist/converters/s2-to-region.js +1 -1
  15. package/dist/converters/s2-to-region.js.map +1 -1
  16. package/dist/dggs-decoder.d.ts +13 -4
  17. package/dist/dggs-decoder.d.ts.map +1 -1
  18. package/dist/dggs-decoder.js +25 -1
  19. package/dist/dggs-decoder.js.map +1 -1
  20. package/dist/expressions.cjs +637 -0
  21. package/dist/expressions.cjs.map +6 -0
  22. package/dist/expressions.d.ts +7 -0
  23. package/dist/expressions.d.ts.map +1 -0
  24. package/dist/expressions.js +32 -0
  25. package/dist/expressions.js.map +1 -0
  26. package/dist/geohash-decoder.d.ts +4 -4
  27. package/dist/geohash-decoder.d.ts.map +1 -1
  28. package/dist/geohash-decoder.js +4 -4
  29. package/dist/geohash-decoder.js.map +1 -1
  30. package/dist/geohash.cjs +75 -2
  31. package/dist/geohash.cjs.map +2 -2
  32. package/dist/geohash.js +1 -1
  33. package/dist/geohash.js.map +1 -1
  34. package/dist/h3-decoder.d.ts +4 -4
  35. package/dist/h3-decoder.d.ts.map +1 -1
  36. package/dist/h3-decoder.js +4 -4
  37. package/dist/h3-decoder.js.map +1 -1
  38. package/dist/h3.cjs +59 -2
  39. package/dist/h3.cjs.map +3 -3
  40. package/dist/h3.js +1 -1
  41. package/dist/h3.js.map +1 -1
  42. package/dist/index.cjs +281 -33
  43. package/dist/index.cjs.map +3 -3
  44. package/dist/index.d.ts +6 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +5 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/plus-code-decoder.d.ts +4 -4
  49. package/dist/plus-code-decoder.d.ts.map +1 -1
  50. package/dist/plus-code-decoder.js +4 -4
  51. package/dist/plus-code-decoder.js.map +1 -1
  52. package/dist/plus-code.cjs +75 -2
  53. package/dist/plus-code.cjs.map +2 -2
  54. package/dist/plus-code.js +1 -1
  55. package/dist/plus-code.js.map +1 -1
  56. package/dist/quadkey-decoder.d.ts +4 -4
  57. package/dist/quadkey-decoder.d.ts.map +1 -1
  58. package/dist/quadkey-decoder.js +4 -4
  59. package/dist/quadkey-decoder.js.map +1 -1
  60. package/dist/quadkey.cjs +75 -2
  61. package/dist/quadkey.cjs.map +2 -2
  62. package/dist/quadkey.js +1 -1
  63. package/dist/quadkey.js.map +1 -1
  64. package/dist/s2-decoder.d.ts +14 -4
  65. package/dist/s2-decoder.d.ts.map +1 -1
  66. package/dist/s2-decoder.js +90 -22
  67. package/dist/s2-decoder.js.map +1 -1
  68. package/dist/s2-geometry/s2-geometry.d.ts +20 -0
  69. package/dist/s2-geometry/s2-geometry.d.ts.map +1 -1
  70. package/dist/s2-geometry/s2-geometry.js +128 -2
  71. package/dist/s2-geometry/s2-geometry.js.map +1 -1
  72. package/dist/s2-geometry/s2-to-boundary.js +1 -1
  73. package/dist/s2-geometry/s2-to-boundary.js.map +1 -1
  74. package/dist/s2-geometry/s2-token.d.ts +30 -0
  75. package/dist/s2-geometry/s2-token.d.ts.map +1 -1
  76. package/dist/s2-geometry/s2-token.js +74 -6
  77. package/dist/s2-geometry/s2-token.js.map +1 -1
  78. package/dist/s2.cjs +288 -23
  79. package/dist/s2.cjs.map +2 -2
  80. package/dist/s2.d.ts +4 -2
  81. package/dist/s2.d.ts.map +1 -1
  82. package/dist/s2.js +4 -3
  83. package/dist/s2.js.map +1 -1
  84. package/dist/unwrap-dggs-boundary.d.ts +12 -0
  85. package/dist/unwrap-dggs-boundary.d.ts.map +1 -0
  86. package/dist/unwrap-dggs-boundary.js +49 -0
  87. package/dist/unwrap-dggs-boundary.js.map +1 -0
  88. package/package.json +13 -6
  89. package/src/a5-decoder.ts +10 -5
  90. package/src/a5.ts +1 -1
  91. package/src/converters/s2-to-obb-points.ts +2 -2
  92. package/src/converters/s2-to-region.ts +1 -1
  93. package/src/dggs-decoder.ts +42 -5
  94. package/src/expressions.ts +37 -0
  95. package/src/geohash-decoder.ts +10 -5
  96. package/src/geohash.ts +1 -1
  97. package/src/h3-decoder.ts +10 -5
  98. package/src/h3.ts +1 -1
  99. package/src/index.ts +14 -3
  100. package/src/open-location-code.d.ts +3 -0
  101. package/src/plus-code-decoder.ts +10 -5
  102. package/src/plus-code.ts +1 -1
  103. package/src/quadkey-decoder.ts +10 -5
  104. package/src/quadkey.ts +1 -1
  105. package/src/s2-decoder.ts +92 -22
  106. package/src/s2-geometry/s2-geometry.ts +142 -2
  107. package/src/s2-geometry/s2-to-boundary.ts +1 -1
  108. package/src/s2-geometry/s2-token.ts +77 -6
  109. package/src/s2.ts +12 -3
  110. package/src/unwrap-dggs-boundary.ts +54 -0
package/dist/index.cjs CHANGED
@@ -37,14 +37,61 @@ __export(index_exports, {
37
37
  QuadkeyDecoder: () => QuadkeyDecoder,
38
38
  S2Decoder: () => S2Decoder,
39
39
  findDGGSCellColumn: () => findDGGSCellColumn,
40
+ getS2BoundaryFlat: () => getS2BoundaryFlat,
41
+ getS2Bounds: () => getS2Bounds,
40
42
  getS2ChildIndex: () => getS2ChildIndex,
41
- quadkeyToWorldBounds: () => quadkeyToWorldBounds
43
+ getS2DescendantIndex: () => getS2DescendantIndex,
44
+ getS2IndexFromCell: () => getS2IndexFromCell,
45
+ getS2IndexFromToken: () => getS2IndexFromToken,
46
+ getS2Level: () => getS2Level,
47
+ getS2LngLat: () => getS2LngLat,
48
+ getS2TokenFromIndex: () => getS2TokenFromIndex,
49
+ isS2IndexValid: () => isS2IndexValid,
50
+ isS2TokenValid: () => isS2TokenValid,
51
+ quadkeyToWorldBounds: () => quadkeyToWorldBounds,
52
+ unwrapDGGSBoundary: () => unwrapDGGSBoundary
42
53
  });
43
54
  module.exports = __toCommonJS(index_exports);
44
55
 
45
56
  // dist/a5-decoder.js
46
57
  var import_a5_js = require("a5-js");
47
58
 
59
+ // dist/unwrap-dggs-boundary.js
60
+ function unwrapDGGSBoundary(boundary, referenceLongitude) {
61
+ const result = boundary.map(([longitude, latitude]) => [longitude, latitude]);
62
+ if (result.length === 0) {
63
+ return result;
64
+ }
65
+ let west = Infinity;
66
+ let east = -Infinity;
67
+ for (const [longitude] of boundary) {
68
+ west = Math.min(west, longitude);
69
+ east = Math.max(east, longitude);
70
+ }
71
+ if (east - west >= 360) {
72
+ return result;
73
+ }
74
+ let previous = referenceLongitude ?? result[0][0];
75
+ for (const point of result) {
76
+ const delta = point[0] - previous;
77
+ if (delta > 180) {
78
+ point[0] -= 360 * Math.ceil((delta - 180) / 360);
79
+ } else if (delta < -180) {
80
+ point[0] += 360 * Math.ceil((-delta - 180) / 360);
81
+ }
82
+ previous = point[0];
83
+ }
84
+ const first = boundary[0];
85
+ const last = boundary[boundary.length - 1];
86
+ if (first[0] === last[0] && first[1] === last[1]) {
87
+ if (Math.abs(result[result.length - 1][0] - result[0][0]) > 180) {
88
+ return boundary.map(([longitude, latitude]) => [longitude, latitude]);
89
+ }
90
+ result[result.length - 1] = [...result[0]];
91
+ }
92
+ return result;
93
+ }
94
+
48
95
  // dist/dggs-decoder.js
49
96
  function getDGGSCellToken(cell, gridName) {
50
97
  if (typeof cell !== "string") {
@@ -68,9 +115,30 @@ function getDGGSCellBounds(boundary) {
68
115
  [east, north]
69
116
  ];
70
117
  }
118
+ function withDGGSBoundaryOptions(decoder) {
119
+ const cellToBoundary3 = (cell, options) => {
120
+ const boundary = decoder.cellToBoundary(cell);
121
+ return (options == null ? void 0 : options.unwrap) ? unwrapDGGSBoundary(boundary, options.referenceLongitude) : boundary;
122
+ };
123
+ return {
124
+ ...decoder,
125
+ cellToBoundary: cellToBoundary3,
126
+ cellToBoundaryFlat: (cell, options) => (options == null ? void 0 : options.unwrap) ? cellToBoundary3(cell, options).flat() : decoder.cellToBoundaryFlat(cell),
127
+ cellToBounds: (cell, options) => {
128
+ const bounds = decoder.cellToBounds(cell);
129
+ if (!(options == null ? void 0 : options.unwrap) || bounds[1][0] - bounds[0][0] >= 360) {
130
+ return bounds;
131
+ }
132
+ const unwrapped = getDGGSCellBounds(cellToBoundary3(cell, options));
133
+ unwrapped[0][1] = bounds[0][1];
134
+ unwrapped[1][1] = bounds[1][1];
135
+ return unwrapped;
136
+ }
137
+ };
138
+ }
71
139
 
72
140
  // dist/a5-decoder.js
73
- var A5Decoder = {
141
+ var A5Decoder = withDGGSBoundaryOptions({
74
142
  name: "a5",
75
143
  hasNumericRepresentation: true,
76
144
  cellColumnNames: [
@@ -89,7 +157,7 @@ var A5Decoder = {
89
157
  cellToBoundary: (cell) => getA5Boundary(cell),
90
158
  cellToBoundaryFlat: (cell) => getA5Boundary(cell).flat(),
91
159
  cellToBounds: (cell) => getDGGSCellBounds(getA5Boundary(cell))
92
- };
160
+ });
93
161
  function getA5CellIndex(cell) {
94
162
  return typeof cell === "bigint" ? cell : (0, import_a5_js.hexToU64)(removeHexPrefix(cell));
95
163
  }
@@ -101,7 +169,7 @@ function removeHexPrefix(token) {
101
169
  }
102
170
 
103
171
  // dist/geohash-decoder.js
104
- var GeohashDecoder = {
172
+ var GeohashDecoder = withDGGSBoundaryOptions({
105
173
  name: "geohash",
106
174
  hasNumericRepresentation: false,
107
175
  cellColumnNames: ["geohash", "geohashId", "geohash_id"],
@@ -109,7 +177,7 @@ var GeohashDecoder = {
109
177
  cellToBoundary: (cell) => getGeohashBoundary(getDGGSCellToken(cell, "GeoHash")),
110
178
  cellToBoundaryFlat: (cell) => getGeohashBoundaryFlat(getDGGSCellToken(cell, "GeoHash")),
111
179
  cellToBounds: (cell) => getGeohashBounds(getDGGSCellToken(cell, "GeoHash"))
112
- };
180
+ });
113
181
  var BASE32_CODES = "0123456789bcdefghjkmnpqrstuvwxyz";
114
182
  var BASE32_CODES_DICT = {};
115
183
  for (let i = 0; i < BASE32_CODES.length; i++) {
@@ -176,7 +244,7 @@ function getGeohashBounds(geohash) {
176
244
 
177
245
  // dist/h3-decoder.js
178
246
  var import_h3_js = require("h3-js");
179
- var H3Decoder = {
247
+ var H3Decoder = withDGGSBoundaryOptions({
180
248
  name: "h3",
181
249
  hasNumericRepresentation: true,
182
250
  cellColumnNames: [
@@ -195,7 +263,7 @@ var H3Decoder = {
195
263
  cellToBoundary: (cell) => getH3Boundary(cell),
196
264
  cellToBoundaryFlat: (cell) => getH3Boundary(cell).flat(),
197
265
  cellToBounds: (cell) => getDGGSCellBounds(getH3Boundary(cell))
198
- };
266
+ });
199
267
  function getH3Token(cell) {
200
268
  return typeof cell === "bigint" ? cell.toString(16) : removeHexPrefix2(cell);
201
269
  }
@@ -219,7 +287,7 @@ function removeHexPrefix2(token) {
219
287
  // dist/plus-code-decoder.js
220
288
  var import_open_location_code = __toESM(require("open-location-code"), 1);
221
289
  var openLocationCode = new import_open_location_code.default.OpenLocationCode();
222
- var PlusCodeDecoder = {
290
+ var PlusCodeDecoder = withDGGSBoundaryOptions({
223
291
  name: "plus-code",
224
292
  hasNumericRepresentation: false,
225
293
  cellColumnNames: ["plusCode", "plus_code", "openLocationCode", "open_location_code", "olc"],
@@ -236,7 +304,7 @@ var PlusCodeDecoder = {
236
304
  [area.longitudeHi, area.latitudeHi]
237
305
  ];
238
306
  }
239
- };
307
+ });
240
308
  function getPlusCodeLngLat(cell) {
241
309
  const area = decodePlusCode(cell);
242
310
  return [area.longitudeCenter, area.latitudeCenter];
@@ -261,7 +329,7 @@ function getPlusCodeBoundary(area) {
261
329
 
262
330
  // dist/quadkey-decoder.js
263
331
  var TILE_SIZE = 512;
264
- var QuadkeyDecoder = {
332
+ var QuadkeyDecoder = withDGGSBoundaryOptions({
265
333
  name: "quadkey",
266
334
  hasNumericRepresentation: false,
267
335
  cellColumnNames: ["quadkey", "quadkeyId", "quadkey_id"],
@@ -269,7 +337,7 @@ var QuadkeyDecoder = {
269
337
  cellToBoundary: (cell) => getQuadkeyBoundary(getDGGSCellToken(cell, "Quadkey")),
270
338
  cellToBoundaryFlat: (cell) => getQuadkeyBoundaryFlat(getDGGSCellToken(cell, "Quadkey")),
271
339
  cellToBounds: (cell) => getQuadkeyBounds(getDGGSCellToken(cell, "Quadkey"))
272
- };
340
+ });
273
341
  function getQuadkeyLngLat(quadkey) {
274
342
  const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
275
343
  const [w, n] = worldToLngLat(topLeft);
@@ -332,17 +400,27 @@ function worldToLngLat(xy) {
332
400
  }
333
401
 
334
402
  // dist/s2-geometry/s2-token.js
403
+ var MAXIMUM_TOKEN_LENGTH = 16;
404
+ var MAXIMUM_S2_INDEX = (1n << 64n) - 1n;
405
+ var VALID_LOWEST_ON_BITS = 0x1555555555555555n;
406
+ var MAXIMUM_LEVEL = 30;
335
407
  function getS2IndexFromToken(token) {
336
408
  if (token === "X") {
337
- token = "";
409
+ return 0n;
338
410
  }
339
- const paddedToken = token.padEnd(16, "0");
411
+ if (!isS2TokenValid(token)) {
412
+ throw new Error(`Invalid S2 token: ${token}`);
413
+ }
414
+ const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, "0");
340
415
  return BigInt(`0x${paddedToken}`);
341
416
  }
342
417
  function getS2TokenFromIndex(cellId) {
343
418
  if (cellId === 0n) {
344
419
  return "X";
345
420
  }
421
+ if (!isS2IndexValid(cellId)) {
422
+ throw new Error(`Invalid S2 index: ${cellId}`);
423
+ }
346
424
  let numZeroDigits = countTrailingZeros(cellId);
347
425
  const remainder = numZeroDigits % 4;
348
426
  numZeroDigits = (numZeroDigits - remainder) / 4;
@@ -353,13 +431,43 @@ function getS2TokenFromIndex(cellId) {
353
431
  const zeroString = Array(17 - trailingZeroHexChars - hexString.length).join("0");
354
432
  return zeroString + hexString;
355
433
  }
434
+ function isS2IndexValid(s2Index) {
435
+ if (typeof s2Index !== "bigint" || s2Index <= 0n || s2Index > MAXIMUM_S2_INDEX) {
436
+ return false;
437
+ }
438
+ const face = s2Index >> 61n;
439
+ const lowestOnBit = s2Index & -s2Index;
440
+ return face < 6n && (lowestOnBit & VALID_LOWEST_ON_BITS) !== 0n;
441
+ }
442
+ function isS2TokenValid(token) {
443
+ if (typeof token !== "string" || !/^[0-9a-fA-F]{1,16}$/.test(token) || token.endsWith("0")) {
444
+ return false;
445
+ }
446
+ const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, "0");
447
+ return isS2IndexValid(BigInt(`0x${paddedToken}`));
448
+ }
449
+ function getS2Level(s2Index) {
450
+ if (!isS2IndexValid(s2Index)) {
451
+ throw new Error(`Invalid S2 index: ${s2Index}`);
452
+ }
453
+ return (60 - countTrailingZeros(s2Index)) / 2;
454
+ }
356
455
  function getS2ChildIndex(s2Index, index) {
456
+ if (!isS2IndexValid(s2Index)) {
457
+ throw new Error(`Invalid S2 index: ${s2Index}`);
458
+ }
459
+ if (!Number.isInteger(index) || index < 0 || index > 3) {
460
+ throw new Error(`Invalid S2 child index: ${index}`);
461
+ }
462
+ if (getS2Level(s2Index) === MAXIMUM_LEVEL) {
463
+ throw new Error("Cannot subdivide an S2 leaf cell");
464
+ }
357
465
  const newLsb = lsb(s2Index) >> 2n;
358
466
  const childCellId = s2Index + BigInt(2 * index + 1 - 4) * newLsb;
359
467
  return childCellId;
360
468
  }
361
469
  function lsb(cellId) {
362
- return cellId & cellId + 1n;
470
+ return cellId & -cellId;
363
471
  }
364
472
  function countTrailingZeros(n) {
365
473
  let count = 0;
@@ -372,6 +480,9 @@ function countTrailingZeros(n) {
372
480
 
373
481
  // dist/s2-geometry/s2-geometry.js
374
482
  function getS2Cell(s2Index) {
483
+ if (!isS2IndexValid(s2Index)) {
484
+ throw new Error(`Invalid S2 index: ${s2Index}`);
485
+ }
375
486
  const key = toHilbertQuadkey(s2Index);
376
487
  const s2cell = fromHilbertQuadKey(key);
377
488
  return s2cell;
@@ -380,7 +491,36 @@ var FACE_BITS = 3;
380
491
  var MAX_LEVEL = 30;
381
492
  var POS_BITS = 2 * MAX_LEVEL + 1;
382
493
  var RADIAN_TO_DEGREE = 180 / Math.PI;
494
+ var HILBERT_MAP = {
495
+ a: [
496
+ [0, "d"],
497
+ [1, "a"],
498
+ [3, "b"],
499
+ [2, "a"]
500
+ ],
501
+ b: [
502
+ [2, "b"],
503
+ [1, "b"],
504
+ [3, "a"],
505
+ [0, "c"]
506
+ ],
507
+ c: [
508
+ [2, "c"],
509
+ [3, "d"],
510
+ [1, "c"],
511
+ [0, "b"]
512
+ ],
513
+ d: [
514
+ [0, "a"],
515
+ [3, "c"],
516
+ [1, "d"],
517
+ [2, "d"]
518
+ ]
519
+ };
383
520
  function fromHilbertQuadKey(hilbertQuadkey) {
521
+ if (!/^[0-5]\/[0-3]{0,30}$/.test(hilbertQuadkey)) {
522
+ throw new Error(`Invalid S2 Hilbert quadkey: ${hilbertQuadkey}`);
523
+ }
384
524
  const parts = hilbertQuadkey.split("/");
385
525
  const face = parseInt(parts[0], 10);
386
526
  const position = parts[1] || "";
@@ -413,6 +553,9 @@ function fromHilbertQuadKey(hilbertQuadkey) {
413
553
  return { face, ij: point, level };
414
554
  }
415
555
  function toHilbertQuadkey(id) {
556
+ if (!isS2IndexValid(id)) {
557
+ throw new Error(`Invalid S2 index: ${id}`);
558
+ }
416
559
  let bin = id.toString(2);
417
560
  while (bin.length < FACE_BITS + POS_BITS) {
418
561
  bin = "0" + bin;
@@ -431,6 +574,42 @@ function toHilbertQuadkey(id) {
431
574
  }
432
575
  return `${faceS}/${posS}`;
433
576
  }
577
+ function getS2IndexFromCell(s2Cell) {
578
+ const { face, ij, level } = s2Cell;
579
+ if (!Number.isInteger(face) || face < 0 || face > 5) {
580
+ throw new Error(`Invalid S2 face: ${face}`);
581
+ }
582
+ if (!Number.isInteger(level) || level < 0 || level > MAX_LEVEL) {
583
+ throw new Error(`Invalid S2 level: ${level}`);
584
+ }
585
+ const maximumCoordinate = 2 ** level;
586
+ if (!Number.isInteger(ij[0]) || !Number.isInteger(ij[1]) || ij[0] < 0 || ij[1] < 0 || ij[0] >= maximumCoordinate || ij[1] >= maximumCoordinate) {
587
+ throw new Error(`Invalid S2 IJ coordinates: ${ij[0]}, ${ij[1]}`);
588
+ }
589
+ const positions = getHilbertQuadList(ij[0], ij[1], level, face);
590
+ let s2Index = BigInt(face) << 61n;
591
+ for (let positionIndex = 0; positionIndex < positions.length; positionIndex++) {
592
+ const bitOffset = 59 - positionIndex * 2;
593
+ s2Index |= BigInt(positions[positionIndex]) << BigInt(bitOffset);
594
+ }
595
+ s2Index |= 1n << BigInt(60 - level * 2);
596
+ return s2Index;
597
+ }
598
+ function getS2DescendantIndex(rootIndex, relativeLevel, x, y) {
599
+ const rootCell = getS2Cell(rootIndex);
600
+ if (!Number.isInteger(relativeLevel) || relativeLevel < 0 || rootCell.level + relativeLevel > MAX_LEVEL) {
601
+ throw new Error(`Invalid S2 relative level: ${relativeLevel}`);
602
+ }
603
+ const divisionCount = 2 ** relativeLevel;
604
+ if (!Number.isInteger(x) || !Number.isInteger(y) || x < 0 || y < 0 || x >= divisionCount || y >= divisionCount) {
605
+ throw new Error(`Invalid S2 descendant coordinates: ${x}, ${y}`);
606
+ }
607
+ return getS2IndexFromCell({
608
+ face: rootCell.face,
609
+ ij: [rootCell.ij[0] * divisionCount + x, rootCell.ij[1] * divisionCount + y],
610
+ level: rootCell.level + relativeLevel
611
+ });
612
+ }
434
613
  function IJToST(ij, order, offsets) {
435
614
  const maxSize = 1 << order;
436
615
  return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];
@@ -478,6 +657,19 @@ function rotateAndFlipQuadrant(n, point, rx, ry) {
478
657
  point[1] = x;
479
658
  }
480
659
  }
660
+ function getHilbertQuadList(x, y, level, face) {
661
+ let orientation = face % 2 === 1 ? "d" : "a";
662
+ const positions = [];
663
+ for (let bit = level - 1; bit >= 0; bit--) {
664
+ const mask = 1 << bit;
665
+ const quadrantX = (x & mask) !== 0 ? 1 : 0;
666
+ const quadrantY = (y & mask) !== 0 ? 1 : 0;
667
+ const [position, nextOrientation] = HILBERT_MAP[orientation][quadrantX * 2 + quadrantY];
668
+ positions.push(position);
669
+ orientation = nextOrientation;
670
+ }
671
+ return positions;
672
+ }
481
673
 
482
674
  // dist/s2-geometry/s2-to-boundary.js
483
675
  var MAX_RESOLUTION = 100;
@@ -525,17 +717,17 @@ function getS2GeoBoundsFromCell({ face, ij, level }) {
525
717
  }
526
718
 
527
719
  // dist/s2-decoder.js
528
- var S2Decoder = {
720
+ var S2Decoder = withDGGSBoundaryOptions({
529
721
  name: "s2",
530
722
  hasNumericRepresentation: true,
531
723
  cellColumnNames: ["s2", "s2Token", "s2_token", "s2Cell", "s2_cell", "s2CellId", "s2_cell_id"],
532
724
  tokenToCell: (s2Token) => getS2IndexFromToken(s2Token),
533
- cellToToken: (cell) => typeof cell === "string" ? cell : getS2TokenFromIndex(cell),
725
+ cellToToken: (cell) => getS2TokenFromIndex(getS2CellIndex(cell)),
534
726
  cellToLngLat: (cell) => getS2LngLat(cell),
535
727
  cellToBoundary: (cell) => getS2Boundary(cell),
536
728
  cellToBoundaryFlat: (cell) => getS2BoundaryFlat(cell),
537
729
  cellToBounds: (cell) => getS2Bounds(cell)
538
- };
730
+ });
539
731
  function getS2LngLat(cell) {
540
732
  const s2Index = getS2CellIndex(cell);
541
733
  const s2Cell = getS2Cell(s2Index);
@@ -559,29 +751,85 @@ function getS2Boundary(cell) {
559
751
  return boundary;
560
752
  }
561
753
  function getS2Bounds(cell) {
562
- const flatBoundary = getS2Boundary(cell);
563
- let xmin = Infinity;
564
- let ymin = Infinity;
565
- let xmax = -Infinity;
566
- let ymax = -Infinity;
567
- for (const [x, y] of flatBoundary) {
568
- if (x < xmin)
569
- xmin = x;
570
- if (x > xmax)
571
- xmax = x;
572
- if (y < ymin)
573
- ymin = y;
574
- if (y > ymax)
575
- ymax = y;
754
+ const s2Cell = getS2Cell(getS2CellIndex(cell));
755
+ if (s2Cell.level === 0) {
756
+ return getS2RootBounds(s2Cell.face);
576
757
  }
758
+ const offsets = [
759
+ [0, 0],
760
+ [0, 1],
761
+ [1, 1],
762
+ [1, 0]
763
+ ];
764
+ let west = Infinity;
765
+ let south = Infinity;
766
+ let east = -Infinity;
767
+ let north = -Infinity;
768
+ let previousLongitude;
769
+ for (const offset of offsets) {
770
+ const st = IJToST(s2Cell.ij, s2Cell.level, offset);
771
+ const uv = STToUV(st);
772
+ const [x, y, z] = FaceUVToXYZ(s2Cell.face, uv);
773
+ let [longitude, latitude] = XYZToLngLat([x, y, z]);
774
+ if (x === 0 && y === 0 && previousLongitude !== void 0) {
775
+ longitude = previousLongitude;
776
+ }
777
+ if (previousLongitude !== void 0) {
778
+ const longitudeDelta = longitude - previousLongitude;
779
+ longitude += longitudeDelta > 180 ? -360 : longitudeDelta < -180 ? 360 : 0;
780
+ }
781
+ previousLongitude = longitude;
782
+ west = Math.min(west, longitude);
783
+ south = Math.min(south, latitude);
784
+ east = Math.max(east, longitude);
785
+ north = Math.max(north, latitude);
786
+ }
787
+ const angularEpsilon = 2 * Number.EPSILON * 180 / Math.PI;
577
788
  return [
578
- [xmin, ymin],
579
- [xmax, ymax]
789
+ [west - angularEpsilon, Math.max(-90, south - angularEpsilon)],
790
+ [east + angularEpsilon, Math.min(90, north + angularEpsilon)]
580
791
  ];
581
792
  }
582
793
  function getS2CellIndex(cell) {
583
794
  return typeof cell === "bigint" ? cell : getS2IndexFromToken(cell);
584
795
  }
796
+ function getS2RootBounds(face) {
797
+ const polarLatitude = Math.asin(Math.sqrt(1 / 3)) * 180 / Math.PI;
798
+ switch (face) {
799
+ case 0:
800
+ return [
801
+ [-45, -45],
802
+ [45, 45]
803
+ ];
804
+ case 1:
805
+ return [
806
+ [45, -45],
807
+ [135, 45]
808
+ ];
809
+ case 2:
810
+ return [
811
+ [-180, polarLatitude],
812
+ [180, 90]
813
+ ];
814
+ case 3:
815
+ return [
816
+ [135, -45],
817
+ [225, 45]
818
+ ];
819
+ case 4:
820
+ return [
821
+ [-135, -45],
822
+ [-45, 45]
823
+ ];
824
+ case 5:
825
+ return [
826
+ [-180, -90],
827
+ [180, -polarLatitude]
828
+ ];
829
+ default:
830
+ throw new Error(`Invalid S2 face: ${face}`);
831
+ }
832
+ }
585
833
 
586
834
  // dist/index.js
587
835
  var DGGS_DECODERS = [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/a5-decoder.ts", "../src/dggs-decoder.ts", "../src/geohash-decoder.ts", "../src/h3-decoder.ts", "../src/plus-code-decoder.ts", "../src/quadkey-decoder.ts", "../src/s2-geometry/s2-token.ts", "../src/s2-geometry/s2-geometry.ts", "../src/s2-geometry/s2-to-boundary.ts", "../src/s2-decoder.ts"],
4
- "mappings": "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",
5
- "names": ["removeHexPrefix", "OpenLocationCodePackage"]
3
+ "sources": ["../src/index.ts", "../src/a5-decoder.ts", "../src/unwrap-dggs-boundary.ts", "../src/dggs-decoder.ts", "../src/geohash-decoder.ts", "../src/h3-decoder.ts", "../src/plus-code-decoder.ts", "../src/quadkey-decoder.ts", "../src/s2-geometry/s2-token.ts", "../src/s2-geometry/s2-geometry.ts", "../src/s2-geometry/s2-to-boundary.ts", "../src/s2-decoder.ts"],
4
+ "mappings": "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",
5
+ "names": ["cellToBoundary", "removeHexPrefix", "OpenLocationCodePackage"]
6
6
  }
package/dist/index.d.ts CHANGED
@@ -3,15 +3,18 @@ import { A5Decoder } from "./a5-decoder.js";
3
3
  import { GeohashDecoder } from "./geohash-decoder.js";
4
4
  import { H3Decoder } from "./h3-decoder.js";
5
5
  import { PlusCodeDecoder } from "./plus-code-decoder.js";
6
- import { S2Decoder } from "./s2-decoder.js";
6
+ export { type DGGSBoundaryOptions } from "./dggs-decoder.js";
7
7
  export { type DGGSCell, type DGGSCellColumn, type DGGSDecoder };
8
+ export { unwrapDGGSBoundary } from "./unwrap-dggs-boundary.js";
8
9
  export { A5Decoder };
9
10
  export { GeohashDecoder };
10
11
  export { H3Decoder };
11
12
  export { PlusCodeDecoder };
12
13
  export { QuadkeyDecoder, quadkeyToWorldBounds } from "./quadkey-decoder.js";
13
- export { S2Decoder };
14
- export { getS2ChildIndex } from "./s2-geometry/s2-token.js";
14
+ export { S2Decoder, getS2Bounds, getS2LngLat, getS2BoundaryFlat } from "./s2-decoder.js";
15
+ export { getS2ChildIndex, getS2IndexFromToken, getS2Level, getS2TokenFromIndex, isS2IndexValid, isS2TokenValid } from "./s2-geometry/s2-token.js";
16
+ export { getS2DescendantIndex, getS2IndexFromCell } from "./s2-geometry/s2-geometry.js";
17
+ export type { S2Cell } from "./s2-geometry/s2-geometry.js";
15
18
  /** Lightweight decoders bundled with this module. */
16
19
  export declare const DGGS_DECODERS: readonly DGGSDecoder[];
17
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAC,0BAAuB;AACpF,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAC,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,6BAA0B;AACvE,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,kCAA+B;AAEvD,qDAAqD;AACrD,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAO/C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,QAAQ,GAAE,SAAS,WAAW,EAAkB,GAC/C,cAAc,GAAG,IAAI,CAoBvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAC,0BAAuB;AACpF,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAIpD,OAAO,EAAC,KAAK,mBAAmB,EAAC,0BAAuB;AACxD,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAC,CAAC;AAC9D,OAAO,EAAC,kBAAkB,EAAC,kCAA+B;AAC1D,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,6BAA0B;AACvE,OAAO,EAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAC,wBAAqB;AACpF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,kCAA+B;AAChC,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,qCAAkC;AACnF,YAAY,EAAC,MAAM,EAAC,qCAAkC;AAEtD,qDAAqD;AACrD,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAO/C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,QAAQ,GAAE,SAAS,WAAW,EAAkB,GAC/C,cAAc,GAAG,IAAI,CAoBvB"}
package/dist/index.js CHANGED
@@ -1,19 +1,21 @@
1
1
  // math.gl
2
2
  // SPDX-License-Identifier: MIT
3
- // Copyright (c) vis.gl contributors
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
4
  import { A5Decoder } from "./a5-decoder.js";
5
5
  import { GeohashDecoder } from "./geohash-decoder.js";
6
6
  import { H3Decoder } from "./h3-decoder.js";
7
7
  import { PlusCodeDecoder } from "./plus-code-decoder.js";
8
8
  import { QuadkeyDecoder } from "./quadkey-decoder.js";
9
9
  import { S2Decoder } from "./s2-decoder.js";
10
+ export { unwrapDGGSBoundary } from "./unwrap-dggs-boundary.js";
10
11
  export { A5Decoder };
11
12
  export { GeohashDecoder };
12
13
  export { H3Decoder };
13
14
  export { PlusCodeDecoder };
14
15
  export { QuadkeyDecoder, quadkeyToWorldBounds } from "./quadkey-decoder.js";
15
- export { S2Decoder };
16
- export { getS2ChildIndex } from "./s2-geometry/s2-token.js";
16
+ export { S2Decoder, getS2Bounds, getS2LngLat, getS2BoundaryFlat } from "./s2-decoder.js";
17
+ export { getS2ChildIndex, getS2IndexFromToken, getS2Level, getS2TokenFromIndex, isS2IndexValid, isS2TokenValid } from "./s2-geometry/s2-token.js";
18
+ export { getS2DescendantIndex, getS2IndexFromCell } from "./s2-geometry/s2-geometry.js";
17
19
  /** Lightweight decoders bundled with this module. */
18
20
  export const DGGS_DECODERS = [
19
21
  A5Decoder,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,eAAe,EAAC,+BAA4B;AACpD,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAGvC,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,6BAA0B;AACvE,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,kCAA+B;AAEvD,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,SAAS;IACT,cAAc;IACd,SAAS;IACT,eAAe;IACf,cAAc;IACd,SAAS;CACV,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAA6B,EAC7B,WAAmC,aAAa;IAEhD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,KAAK,GAA0B,IAAI,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,GAAG,EAAC,UAAU,EAAE,OAAO,EAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAG5D,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,eAAe,EAAC,+BAA4B;AACpD,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAIvC,OAAO,EAAC,kBAAkB,EAAC,kCAA+B;AAC1D,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,6BAA0B;AACvE,OAAO,EAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAC,wBAAqB;AACpF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,kCAA+B;AAChC,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,qCAAkC;AAGnF,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,SAAS;IACT,cAAc;IACd,SAAS;IACT,eAAe;IACf,cAAc;IACd,SAAS;CACV,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAA6B,EAC7B,WAAmC,aAAa;IAEhD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,KAAK,GAA0B,IAAI,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,GAAG,EAAC,UAAU,EAAE,OAAO,EAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,10 +1,10 @@
1
- import { type Bounds2D } from '@math.gl/types';
2
- import { type DGGSCell } from "./dggs-decoder.js";
1
+ import { type Bounds2D } from '@math.gl/core/types';
2
+ import { type DGGSCell, type DGGSDecoder } from "./dggs-decoder.js";
3
3
  /**
4
4
  * Lightweight geometry decoder for full Google Plus Codes (Open Location Codes).
5
5
  * Short codes require a reference location and are intentionally unsupported.
6
6
  */
7
- export declare const PlusCodeDecoder: {
7
+ export declare const PlusCodeDecoder: Omit<{
8
8
  readonly name: "plus-code";
9
9
  readonly hasNumericRepresentation: false;
10
10
  readonly cellColumnNames: readonly ["plusCode", "plus_code", "openLocationCode", "open_location_code", "olc"];
@@ -12,5 +12,5 @@ export declare const PlusCodeDecoder: {
12
12
  readonly cellToBoundary: (cell: DGGSCell) => [number, number][];
13
13
  readonly cellToBoundaryFlat: (cell: DGGSCell) => number[];
14
14
  readonly cellToBounds: (cell: DGGSCell) => Bounds2D;
15
- };
15
+ }, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds"> & Pick<DGGSDecoder, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds">;
16
16
  //# sourceMappingURL=plus-code-decoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plus-code-decoder.d.ts","sourceRoot":"","sources":["../src/plus-code-decoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,KAAK,QAAQ,EAAqC,0BAAuB;AAIjF;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;kCAIL,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC;oCACzB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;wCACzB,QAAQ,KAAG,MAAM,EAAE;kCAIzB,QAAQ,KAAG,QAAQ;CAOV,CAAC"}
1
+ {"version":3,"file":"plus-code-decoder.d.ts","sourceRoot":"","sources":["../src/plus-code-decoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,0BAAuB;AAIxB;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;kCAIL,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC;oCACzB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;wCACzB,QAAQ,KAAG,MAAM,EAAE;kCAIzB,QAAQ,KAAG,QAAQ;0IAOT,CAAC"}