data-structure-typed 2.5.0 → 2.5.1

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 (222) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +3 -1
  7. package/README.md +63 -26
  8. package/dist/cjs/binary-tree.cjs +23698 -0
  9. package/dist/cjs/graph.cjs +5236 -0
  10. package/dist/cjs/hash.cjs +1262 -0
  11. package/dist/cjs/heap.cjs +1540 -0
  12. package/dist/cjs/index.cjs +28244 -14795
  13. package/dist/cjs/linked-list.cjs +4370 -0
  14. package/dist/cjs/matrix.cjs +1042 -0
  15. package/dist/cjs/priority-queue.cjs +1314 -0
  16. package/dist/cjs/queue.cjs +4090 -0
  17. package/dist/cjs/stack.cjs +861 -0
  18. package/dist/cjs/trie.cjs +1173 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +23730 -0
  20. package/dist/cjs-legacy/graph.cjs +5234 -0
  21. package/dist/cjs-legacy/hash.cjs +1262 -0
  22. package/dist/cjs-legacy/heap.cjs +1537 -0
  23. package/dist/cjs-legacy/index.cjs +28239 -14790
  24. package/dist/cjs-legacy/linked-list.cjs +4376 -0
  25. package/dist/cjs-legacy/matrix.cjs +1045 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1312 -0
  27. package/dist/cjs-legacy/queue.cjs +4088 -0
  28. package/dist/cjs-legacy/stack.cjs +861 -0
  29. package/dist/cjs-legacy/trie.cjs +1172 -0
  30. package/dist/esm/binary-tree.mjs +23683 -0
  31. package/dist/esm/graph.mjs +5223 -0
  32. package/dist/esm/hash.mjs +1259 -0
  33. package/dist/esm/heap.mjs +1534 -0
  34. package/dist/esm/index.mjs +28242 -14796
  35. package/dist/esm/linked-list.mjs +4363 -0
  36. package/dist/esm/matrix.mjs +1038 -0
  37. package/dist/esm/priority-queue.mjs +1310 -0
  38. package/dist/esm/queue.mjs +4086 -0
  39. package/dist/esm/stack.mjs +859 -0
  40. package/dist/esm/trie.mjs +1170 -0
  41. package/dist/esm-legacy/binary-tree.mjs +23715 -0
  42. package/dist/esm-legacy/graph.mjs +5221 -0
  43. package/dist/esm-legacy/hash.mjs +1259 -0
  44. package/dist/esm-legacy/heap.mjs +1531 -0
  45. package/dist/esm-legacy/index.mjs +28237 -14791
  46. package/dist/esm-legacy/linked-list.mjs +4369 -0
  47. package/dist/esm-legacy/matrix.mjs +1041 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1308 -0
  49. package/dist/esm-legacy/queue.mjs +4084 -0
  50. package/dist/esm-legacy/stack.mjs +859 -0
  51. package/dist/esm-legacy/trie.mjs +1169 -0
  52. package/dist/types/data-structures/base/index.d.ts +1 -0
  53. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  54. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  55. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +240 -0
  56. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +280 -0
  57. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +502 -2
  58. package/dist/types/data-structures/binary-tree/bst.d.ts +481 -1
  59. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +380 -0
  60. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +120 -1
  61. package/dist/types/data-structures/binary-tree/tree-map.d.ts +2764 -384
  62. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2753 -353
  63. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2241 -321
  64. package/dist/types/data-structures/binary-tree/tree-set.d.ts +2554 -274
  65. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  66. package/dist/types/data-structures/graph/directed-graph.d.ts +200 -0
  67. package/dist/types/data-structures/graph/undirected-graph.d.ts +180 -0
  68. package/dist/types/data-structures/hash/hash-map.d.ts +230 -10
  69. package/dist/types/data-structures/heap/heap.d.ts +280 -0
  70. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +343 -3
  71. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +303 -3
  72. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +362 -2
  73. package/dist/types/data-structures/matrix/matrix.d.ts +160 -0
  74. package/dist/types/data-structures/queue/deque.d.ts +304 -4
  75. package/dist/types/data-structures/queue/queue.d.ts +240 -0
  76. package/dist/types/data-structures/stack/stack.d.ts +200 -0
  77. package/dist/types/data-structures/trie/trie.d.ts +244 -4
  78. package/dist/types/interfaces/graph.d.ts +1 -1
  79. package/dist/types/types/common.d.ts +2 -2
  80. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  81. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  82. package/dist/types/types/utils/validate-type.d.ts +4 -4
  83. package/dist/umd/data-structure-typed.js +28022 -14573
  84. package/dist/umd/data-structure-typed.min.js +9 -3
  85. package/docs-site-docusaurus/README.md +41 -0
  86. package/docs-site-docusaurus/docs/api/README.md +52 -0
  87. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  88. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  89. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  90. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  91. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  92. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  93. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  94. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  95. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  96. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  97. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  98. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  99. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  100. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  101. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  102. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  103. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  104. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  105. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  106. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  107. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  108. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  109. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  110. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  111. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  112. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  113. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  114. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  115. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  116. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  117. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  118. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  119. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  120. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  121. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  122. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  123. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  124. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  125. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  126. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  127. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  128. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  129. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  130. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  131. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  132. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  133. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  134. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  135. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  136. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  137. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  138. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  139. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  140. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  141. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  142. package/docs-site-docusaurus/package-lock.json +18667 -0
  143. package/docs-site-docusaurus/package.json +50 -0
  144. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  145. package/docs-site-docusaurus/sidebars.ts +23 -0
  146. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  147. package/docs-site-docusaurus/src/css/custom.css +96 -0
  148. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  149. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  150. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  151. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  152. package/docs-site-docusaurus/static/.nojekyll +0 -0
  153. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  154. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  155. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  156. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  157. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  158. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  159. package/docs-site-docusaurus/static/img/logo.png +0 -0
  160. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  161. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  162. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  163. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  164. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  165. package/docs-site-docusaurus/static/robots.txt +4 -0
  166. package/docs-site-docusaurus/typedoc.json +23 -0
  167. package/package.json +106 -10
  168. package/src/data-structures/base/index.ts +1 -0
  169. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  170. package/src/data-structures/base/linear-base.ts +3 -3
  171. package/src/data-structures/binary-tree/avl-tree.ts +240 -0
  172. package/src/data-structures/binary-tree/binary-indexed-tree.ts +281 -1
  173. package/src/data-structures/binary-tree/binary-tree.ts +502 -2
  174. package/src/data-structures/binary-tree/bst.ts +481 -1
  175. package/src/data-structures/binary-tree/red-black-tree.ts +380 -0
  176. package/src/data-structures/binary-tree/segment-tree.ts +121 -2
  177. package/src/data-structures/binary-tree/tree-map.ts +2862 -482
  178. package/src/data-structures/binary-tree/tree-multi-map.ts +2963 -563
  179. package/src/data-structures/binary-tree/tree-multi-set.ts +2399 -479
  180. package/src/data-structures/binary-tree/tree-set.ts +2685 -405
  181. package/src/data-structures/graph/abstract-graph.ts +4 -4
  182. package/src/data-structures/graph/directed-graph.ts +200 -0
  183. package/src/data-structures/graph/undirected-graph.ts +180 -0
  184. package/src/data-structures/hash/hash-map.ts +235 -15
  185. package/src/data-structures/heap/heap.ts +280 -0
  186. package/src/data-structures/linked-list/doubly-linked-list.ts +343 -3
  187. package/src/data-structures/linked-list/singly-linked-list.ts +303 -3
  188. package/src/data-structures/linked-list/skip-linked-list.ts +362 -2
  189. package/src/data-structures/matrix/matrix.ts +161 -1
  190. package/src/data-structures/queue/deque.ts +305 -5
  191. package/src/data-structures/queue/queue.ts +240 -0
  192. package/src/data-structures/stack/stack.ts +200 -0
  193. package/src/data-structures/trie/trie.ts +245 -5
  194. package/src/interfaces/graph.ts +1 -1
  195. package/src/types/common.ts +2 -2
  196. package/src/types/data-structures/heap/heap.ts +1 -0
  197. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  198. package/src/types/utils/validate-type.ts +4 -4
  199. package/vercel.json +6 -0
  200. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  201. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  202. package/dist/leetcode/avl-tree.mjs +0 -2720
  203. package/dist/leetcode/binary-tree.mjs +0 -1594
  204. package/dist/leetcode/bst.mjs +0 -2398
  205. package/dist/leetcode/deque.mjs +0 -683
  206. package/dist/leetcode/directed-graph.mjs +0 -1733
  207. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  208. package/dist/leetcode/hash-map.mjs +0 -493
  209. package/dist/leetcode/heap.mjs +0 -542
  210. package/dist/leetcode/max-heap.mjs +0 -375
  211. package/dist/leetcode/max-priority-queue.mjs +0 -383
  212. package/dist/leetcode/min-heap.mjs +0 -363
  213. package/dist/leetcode/min-priority-queue.mjs +0 -371
  214. package/dist/leetcode/priority-queue.mjs +0 -363
  215. package/dist/leetcode/queue.mjs +0 -943
  216. package/dist/leetcode/red-black-tree.mjs +0 -2765
  217. package/dist/leetcode/singly-linked-list.mjs +0 -754
  218. package/dist/leetcode/stack.mjs +0 -217
  219. package/dist/leetcode/tree-counter.mjs +0 -3039
  220. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  221. package/dist/leetcode/trie.mjs +0 -413
  222. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -92,15 +92,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
92
92
 
93
93
 
94
94
 
95
- * @example
96
- * // Check empty
97
- * console.log(new TreeSet().isEmpty()); // true;
98
- */
99
- isEmpty(): boolean;
100
- private _validateKey;
101
- /**
102
- * Add a key to the set (no-op if already present).
103
- * @remarks Expected time O(log n)
104
95
 
105
96
 
106
97
 
@@ -142,22 +133,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
142
133
 
143
134
 
144
135
 
145
- * @example
146
- * // Unique tags with sorted order
147
- * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
148
- *
149
- * // Duplicates removed, sorted alphabetically
150
- * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
151
- * console.log(tags.size); // 4;
152
- *
153
- * tags.add('angular');
154
- * console.log(tags.first()); // 'angular';
155
- * console.log(tags.last()); // 'typescript';
156
- */
157
- add(key: K): this;
158
- /**
159
- * Test whether a key exists.
160
- * @remarks Expected time O(log n)
161
136
 
162
137
 
163
138
 
@@ -207,18 +182,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
207
182
 
208
183
 
209
184
 
210
- * @example
211
- * // Checking membership in a sorted collection
212
- * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
213
- *
214
- * console.log(allowed.has('admin')); // true;
215
- * console.log(allowed.has('guest')); // false;
216
- */
217
- has(key: K): boolean;
218
- /**
219
- * Delete a key.
220
- * @returns `true` if the key existed; otherwise `false`.
221
- * @remarks Expected time O(log n)
222
185
 
223
186
 
224
187
 
@@ -229,6 +192,15 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
229
192
 
230
193
 
231
194
 
195
+ * @example
196
+ * // Check empty
197
+ * console.log(new TreeSet().isEmpty()); // true;
198
+ */
199
+ isEmpty(): boolean;
200
+ private _validateKey;
201
+ /**
202
+ * Add a key to the set (no-op if already present).
203
+ * @remarks Expected time O(log n)
232
204
 
233
205
 
234
206
 
@@ -268,17 +240,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
268
240
 
269
241
 
270
242
 
271
- * @example
272
- * // Removing elements while maintaining order
273
- * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
274
- *
275
- * console.log(nums.delete(5)); // true;
276
- * console.log(nums.delete(5)); // false; // already gone
277
- * console.log([...nums]); // [1, 3, 7, 9];
278
- */
279
- delete(key: K): boolean;
280
- /**
281
- * Remove all keys.
282
243
 
283
244
 
284
245
 
@@ -317,15 +278,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
317
278
 
318
279
 
319
280
 
320
- * @example
321
- * // Remove all
322
- * const ts = new TreeSet<number>([1, 2]);
323
- * ts.clear();
324
- * console.log(ts.isEmpty()); // true;
325
- */
326
- clear(): void;
327
- /**
328
- * Iterate over keys in ascending order.
329
281
 
330
282
 
331
283
 
@@ -364,16 +316,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
364
316
 
365
317
 
366
318
 
367
- * @example
368
- * // Get sorted keys
369
- * const ts = new TreeSet<number>([30, 10, 20]);
370
- * console.log([...ts.keys()]); // [10, 20, 30];
371
- */
372
- keys(): IterableIterator<K>;
373
- /**
374
- * Iterate over values in ascending order.
375
- *
376
- * Note: for Set-like containers, `values()` is the same as `keys()`.
377
319
 
378
320
 
379
321
 
@@ -400,6 +342,22 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
400
342
 
401
343
 
402
344
 
345
+ * @example
346
+ * // Unique tags with sorted order
347
+ * const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
348
+ *
349
+ * // Duplicates removed, sorted alphabetically
350
+ * console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
351
+ * console.log(tags.size); // 4;
352
+ *
353
+ * tags.add('angular');
354
+ * console.log(tags.first()); // 'angular';
355
+ * console.log(tags.last()); // 'typescript';
356
+ */
357
+ add(key: K): this;
358
+ /**
359
+ * Test whether a key exists.
360
+ * @remarks Expected time O(log n)
403
361
 
404
362
 
405
363
 
@@ -412,16 +370,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
412
370
 
413
371
 
414
372
 
415
- * @example
416
- * // Get values (same as keys for Set)
417
- * const ts = new TreeSet<number>([2, 1, 3]);
418
- * console.log([...ts.values()]); // [1, 2, 3];
419
- */
420
- values(): IterableIterator<K>;
421
- /**
422
- * Iterate over `[value, value]` pairs (native Set convention).
423
- *
424
- * Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during iteration.
425
373
 
426
374
 
427
375
 
@@ -460,17 +408,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
460
408
 
461
409
 
462
410
 
463
- * @example
464
- * // Iterate entries
465
- * const ts = new TreeSet<number>([3, 1, 2]);
466
- * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
467
- */
468
- entries(): IterableIterator<[K, K]>;
469
- [Symbol.iterator](): IterableIterator<K>;
470
- /**
471
- * Visit each value in ascending order.
472
- *
473
- * Callback follows native Set convention: `(value, value2, set)`.
474
411
 
475
412
 
476
413
 
@@ -509,19 +446,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
509
446
 
510
447
 
511
448
 
512
- * @example
513
- * // Execute for each
514
- * const ts = new TreeSet<number>([3, 1, 2]);
515
- * const keys: number[] = [];
516
- * ts.forEach(k => keys.push(k));
517
- * console.log(keys); // [1, 2, 3];
518
- */
519
- forEach(cb: (value: K, value2: K, set: TreeSet<K>) => void, thisArg?: any): void;
520
- /**
521
- * Create a new TreeSet by mapping each value to a new key.
522
- *
523
- * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
524
- * @remarks Time O(n log n) expected, Space O(n)
525
449
 
526
450
 
527
451
 
@@ -560,18 +484,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
560
484
 
561
485
 
562
486
 
563
- * @example
564
- * // Transform
565
- * const ts = new TreeSet<number>([1, 2, 3]);
566
- * const doubled = ts.map(k => k * 2);
567
- * console.log([...doubled]); // [2, 4, 6];
568
- */
569
- map<MK>(callbackfn: TreeSetElementCallback<K, MK, TreeSet<K>>, options?: Omit<TreeSetOptions<MK>, 'toElementFn'> & {
570
- comparator?: (a: MK, b: MK) => number;
571
- }, thisArg?: unknown): TreeSet<MK>;
572
- /**
573
- * Create a new TreeSet containing only values that satisfy the predicate.
574
- * @remarks Time O(n log n) expected, Space O(n)
575
487
 
576
488
 
577
489
 
@@ -595,6 +507,18 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
595
507
 
596
508
 
597
509
 
510
+ * @example
511
+ * // Checking membership in a sorted collection
512
+ * const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
513
+ *
514
+ * console.log(allowed.has('admin')); // true;
515
+ * console.log(allowed.has('guest')); // false;
516
+ */
517
+ has(key: K): boolean;
518
+ /**
519
+ * Delete a key.
520
+ * @returns `true` if the key existed; otherwise `false`.
521
+ * @remarks Expected time O(log n)
598
522
 
599
523
 
600
524
 
@@ -610,16 +534,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
610
534
 
611
535
 
612
536
 
613
- * @example
614
- * // Filter
615
- * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
616
- * const evens = ts.filter(k => k % 2 === 0);
617
- * console.log([...evens]); // [2, 4];
618
- */
619
- filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
620
- /**
621
- * Reduce values into a single accumulator.
622
- * @remarks Time O(n), Space O(1)
623
537
 
624
538
 
625
539
 
@@ -658,16 +572,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
658
572
 
659
573
 
660
574
 
661
- * @example
662
- * // Aggregate
663
- * const ts = new TreeSet<number>([1, 2, 3]);
664
- * const sum = ts.reduce((acc, k) => acc + k, 0);
665
- * console.log(sum); // 6;
666
- */
667
- reduce<A>(callbackfn: TreeSetReduceCallback<K, A, TreeSet<K>>, initialValue: A): A;
668
- /**
669
- * Test whether all values satisfy a predicate.
670
- * @remarks Time O(n), Space O(1)
671
575
 
672
576
 
673
577
 
@@ -704,15 +608,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
704
608
 
705
609
 
706
610
 
707
- * @example
708
- * // Test all
709
- * const ts = new TreeSet<number>([2, 4, 6]);
710
- * console.log(ts.every(k => k > 0)); // true;
711
- */
712
- every(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
713
- /**
714
- * Test whether any value satisfies a predicate.
715
- * @remarks Time O(n), Space O(1)
716
611
 
717
612
 
718
613
 
@@ -749,15 +644,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
749
644
 
750
645
 
751
646
 
752
- * @example
753
- * // Test any
754
- * const ts = new TreeSet<number>([1, 3, 5]);
755
- * console.log(ts.some(k => k === 3)); // true;
756
- */
757
- some(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
758
- /**
759
- * Find the first value that satisfies a predicate.
760
- * @remarks Time O(n), Space O(1)
761
647
 
762
648
 
763
649
 
@@ -782,6 +668,2128 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
782
668
 
783
669
 
784
670
 
671
+ * @example
672
+ * // Removing elements while maintaining order
673
+ * const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
674
+ *
675
+ * console.log(nums.delete(5)); // true;
676
+ * console.log(nums.delete(5)); // false; // already gone
677
+ * console.log([...nums]); // [1, 3, 7, 9];
678
+ */
679
+ delete(key: K): boolean;
680
+ /**
681
+ * Remove all keys.
682
+
683
+
684
+
685
+
686
+
687
+
688
+
689
+
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+
736
+
737
+
738
+
739
+
740
+
741
+
742
+
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+ * @example
821
+ * // Remove all
822
+ * const ts = new TreeSet<number>([1, 2]);
823
+ * ts.clear();
824
+ * console.log(ts.isEmpty()); // true;
825
+ */
826
+ clear(): void;
827
+ /**
828
+ * Iterate over keys in ascending order.
829
+
830
+
831
+
832
+
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+ * @example
968
+ * // Get sorted keys
969
+ * const ts = new TreeSet<number>([30, 10, 20]);
970
+ * console.log([...ts.keys()]); // [10, 20, 30];
971
+ */
972
+ keys(): IterableIterator<K>;
973
+ /**
974
+ * Iterate over values in ascending order.
975
+ *
976
+ * Note: for Set-like containers, `values()` is the same as `keys()`.
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1087
+
1088
+
1089
+
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+ * @example
1116
+ * // Get values (same as keys for Set)
1117
+ * const ts = new TreeSet<number>([2, 1, 3]);
1118
+ * console.log([...ts.values()]); // [1, 2, 3];
1119
+ */
1120
+ values(): IterableIterator<K>;
1121
+ /**
1122
+ * Iterate over `[value, value]` pairs (native Set convention).
1123
+ *
1124
+ * Note: TreeSet stores only keys internally; `[k, k]` is created on-the-fly during iteration.
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+
1162
+
1163
+
1164
+
1165
+
1166
+
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+
1227
+
1228
+
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+ * @example
1264
+ * // Iterate entries
1265
+ * const ts = new TreeSet<number>([3, 1, 2]);
1266
+ * console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
1267
+ */
1268
+ entries(): IterableIterator<[K, K]>;
1269
+ [Symbol.iterator](): IterableIterator<K>;
1270
+ /**
1271
+ * Visit each value in ascending order.
1272
+ *
1273
+ * Callback follows native Set convention: `(value, value2, set)`.
1274
+
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+
1305
+
1306
+
1307
+
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+
1314
+
1315
+
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+
1357
+
1358
+
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+
1412
+ * @example
1413
+ * // Execute for each
1414
+ * const ts = new TreeSet<number>([3, 1, 2]);
1415
+ * const keys: number[] = [];
1416
+ * ts.forEach(k => keys.push(k));
1417
+ * console.log(keys); // [1, 2, 3];
1418
+ */
1419
+ forEach(cb: (value: K, value2: K, set: TreeSet<K>) => void, thisArg?: unknown): void;
1420
+ /**
1421
+ * Create a new TreeSet by mapping each value to a new key.
1422
+ *
1423
+ * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
1424
+ * @remarks Time O(n log n) expected, Space O(n)
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+ * @example
1564
+ * // Transform
1565
+ * const ts = new TreeSet<number>([1, 2, 3]);
1566
+ * const doubled = ts.map(k => k * 2);
1567
+ * console.log([...doubled]); // [2, 4, 6];
1568
+ */
1569
+ map<MK>(callbackfn: TreeSetElementCallback<K, MK, TreeSet<K>>, options?: Omit<TreeSetOptions<MK>, 'toElementFn'> & {
1570
+ comparator?: (a: MK, b: MK) => number;
1571
+ }, thisArg?: unknown): TreeSet<MK>;
1572
+ /**
1573
+ * Create a new TreeSet containing only values that satisfy the predicate.
1574
+ * @remarks Time O(n log n) expected, Space O(n)
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+ * @example
1714
+ * // Filter
1715
+ * const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
1716
+ * const evens = ts.filter(k => k % 2 === 0);
1717
+ * console.log([...evens]); // [2, 4];
1718
+ */
1719
+ filter(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): TreeSet<K>;
1720
+ /**
1721
+ * Reduce values into a single accumulator.
1722
+ * @remarks Time O(n), Space O(1)
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+ * @example
1862
+ * // Aggregate
1863
+ * const ts = new TreeSet<number>([1, 2, 3]);
1864
+ * const sum = ts.reduce((acc, k) => acc + k, 0);
1865
+ * console.log(sum); // 6;
1866
+ */
1867
+ reduce<A>(callbackfn: TreeSetReduceCallback<K, A, TreeSet<K>>, initialValue: A): A;
1868
+ /**
1869
+ * Test whether all values satisfy a predicate.
1870
+ * @remarks Time O(n), Space O(1)
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+
1894
+
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1975
+
1976
+
1977
+
1978
+
1979
+
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+
1988
+
1989
+
1990
+
1991
+
1992
+
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+ * @example
2008
+ * // Test all
2009
+ * const ts = new TreeSet<number>([2, 4, 6]);
2010
+ * console.log(ts.every(k => k > 0)); // true;
2011
+ */
2012
+ every(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2013
+ /**
2014
+ * Test whether any value satisfies a predicate.
2015
+ * @remarks Time O(n), Space O(1)
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
2058
+
2059
+
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
2076
+
2077
+
2078
+
2079
+
2080
+
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+ * @example
2153
+ * // Test any
2154
+ * const ts = new TreeSet<number>([1, 3, 5]);
2155
+ * console.log(ts.some(k => k === 3)); // true;
2156
+ */
2157
+ some(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): boolean;
2158
+ /**
2159
+ * Find the first value that satisfies a predicate.
2160
+ * @remarks Time O(n), Space O(1)
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
2172
+
2173
+
2174
+
2175
+
2176
+
2177
+
2178
+
2179
+
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+
2197
+
2198
+
2199
+
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2230
+
2231
+
2232
+
2233
+
2234
+
2235
+
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+
2247
+
2248
+
2249
+
2250
+
2251
+
2252
+
2253
+
2254
+
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+
2277
+
2278
+
2279
+
2280
+
2281
+
2282
+
2283
+
2284
+
2285
+
2286
+
2287
+
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+ * @example
2298
+ * // Find entry
2299
+ * const ts = new TreeSet<number>([1, 2, 3]);
2300
+ * const found = ts.find(k => k === 2);
2301
+ * console.log(found); // 2;
2302
+ */
2303
+ find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
2304
+ /**
2305
+ * Materialize the set into an array of keys.
2306
+ * @remarks Time O(n), Space O(n)
2307
+
2308
+
2309
+
2310
+
2311
+
2312
+
2313
+
2314
+
2315
+
2316
+
2317
+
2318
+
2319
+
2320
+
2321
+
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+
2331
+
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+
2346
+
2347
+
2348
+
2349
+
2350
+
2351
+
2352
+
2353
+
2354
+
2355
+
2356
+
2357
+
2358
+
2359
+
2360
+
2361
+
2362
+
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+
2390
+
2391
+
2392
+
2393
+
2394
+
2395
+
2396
+
2397
+
2398
+
2399
+
2400
+
2401
+
2402
+
2403
+
2404
+
2405
+
2406
+
2407
+
2408
+
2409
+
2410
+
2411
+
2412
+
2413
+
2414
+
2415
+
2416
+
2417
+
2418
+
2419
+
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+
2437
+
2438
+
2439
+
2440
+
2441
+
2442
+
2443
+
2444
+
2445
+ * @example
2446
+ * // Convert to array
2447
+ * const ts = new TreeSet<number>([3, 1, 2]);
2448
+ * console.log(ts.toArray()); // [1, 2, 3];
2449
+ */
2450
+ toArray(): K[];
2451
+ /**
2452
+ * Print a human-friendly representation.
2453
+ * @remarks Time O(n), Space O(n)
2454
+
2455
+
2456
+
2457
+
2458
+
2459
+
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+
2488
+
2489
+
2490
+
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+
2508
+
2509
+
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+
2538
+
2539
+
2540
+
2541
+
2542
+
2543
+
2544
+
2545
+
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+
2564
+
2565
+
2566
+
2567
+
2568
+
2569
+
2570
+
2571
+
2572
+
2573
+
2574
+
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+
2581
+
2582
+
2583
+
2584
+
2585
+
2586
+
2587
+
2588
+
2589
+
2590
+
2591
+
2592
+ * @example
2593
+ * // Display tree
2594
+ * const ts = new TreeSet<number>([1, 2, 3]);
2595
+ * expect(() => ts.print()).not.toThrow();
2596
+ */
2597
+ print(): void;
2598
+ /**
2599
+ * Smallest key in the set.
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+
2622
+
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+
2629
+
2630
+
2631
+ * @example
2632
+ * // Student grade ranking with custom comparator
2633
+ * interface Student {
2634
+ * name: string;
2635
+ * gpa: number;
2636
+ * }
2637
+ *
2638
+ * const ranking = new TreeSet<Student>(
2639
+ * [
2640
+ * { name: 'Alice', gpa: 3.8 },
2641
+ * { name: 'Bob', gpa: 3.5 },
2642
+ * { name: 'Charlie', gpa: 3.9 },
2643
+ * { name: 'Diana', gpa: 3.5 }
2644
+ * ],
2645
+ * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
2646
+ * );
2647
+ *
2648
+ * // Sorted by GPA descending, then name ascending
2649
+ * const names = [...ranking].map(s => s.name);
2650
+ * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
2651
+ *
2652
+ * // Top student
2653
+ * console.log(ranking.first()?.name); // 'Charlie';
2654
+ *
2655
+ * // Filter students with GPA >= 3.8
2656
+ * const honors = ranking.filter(s => s.gpa >= 3.8);
2657
+ * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
2658
+ */
2659
+ first(): K | undefined;
2660
+ /**
2661
+ * Largest key in the set.
2662
+
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2675
+
2676
+
2677
+
2678
+
2679
+
2680
+
2681
+
2682
+
2683
+
2684
+
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+
2692
+
2693
+ * @example
2694
+ * // Get the maximum element
2695
+ * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
2696
+ * console.log(temps.last()); // 30;
2697
+ * console.log(temps.first()); // 15;
2698
+ */
2699
+ last(): K | undefined;
2700
+ /**
2701
+ * Remove and return the smallest key.
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2712
+
2713
+
2714
+
2715
+
2716
+
2717
+
2718
+
2719
+
2720
+
2721
+
2722
+
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+ * @example
2734
+ * // Remove and return minimum
2735
+ * const queue = new TreeSet<number>([5, 1, 8, 3]);
2736
+ *
2737
+ * console.log(queue.pollFirst()); // 1;
2738
+ * console.log(queue.pollFirst()); // 3;
2739
+ * console.log(queue.size); // 2;
2740
+ */
2741
+ pollFirst(): K | undefined;
2742
+ /**
2743
+ * Remove and return the largest key.
2744
+
2745
+
2746
+
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+
2758
+
2759
+
2760
+
2761
+
2762
+
2763
+
2764
+
2765
+
2766
+
2767
+
2768
+
2769
+
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+ * @example
2776
+ * // Remove and return maximum
2777
+ * const stack = new TreeSet<number>([10, 20, 30]);
2778
+ *
2779
+ * console.log(stack.pollLast()); // 30;
2780
+ * console.log(stack.size); // 2;
2781
+ */
2782
+ pollLast(): K | undefined;
2783
+ /**
2784
+ * Smallest key that is >= the given key.
2785
+
2786
+
2787
+
2788
+
2789
+
2790
+
2791
+
2792
+
785
2793
 
786
2794
 
787
2795
 
@@ -794,16 +2802,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
794
2802
 
795
2803
 
796
2804
 
797
- * @example
798
- * // Find entry
799
- * const ts = new TreeSet<number>([1, 2, 3]);
800
- * const found = ts.find(k => k === 2);
801
- * console.log(found); // 2;
802
- */
803
- find(callbackfn: TreeSetElementCallback<K, boolean, TreeSet<K>>, thisArg?: unknown): K | undefined;
804
- /**
805
- * Materialize the set into an array of keys.
806
- * @remarks Time O(n), Space O(n)
807
2805
 
808
2806
 
809
2807
 
@@ -842,15 +2840,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
842
2840
 
843
2841
 
844
2842
 
845
- * @example
846
- * // Convert to array
847
- * const ts = new TreeSet<number>([3, 1, 2]);
848
- * console.log(ts.toArray()); // [1, 2, 3];
849
- */
850
- toArray(): K[];
851
- /**
852
- * Print a human-friendly representation.
853
- * @remarks Time O(n), Space O(n)
854
2843
 
855
2844
 
856
2845
 
@@ -889,14 +2878,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
889
2878
 
890
2879
 
891
2880
 
892
- * @example
893
- * // Display tree
894
- * const ts = new TreeSet<number>([1, 2, 3]);
895
- * expect(() => ts.print()).not.toThrow();
896
- */
897
- print(): void;
898
- /**
899
- * Smallest key in the set.
900
2881
 
901
2882
 
902
2883
 
@@ -908,37 +2889,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
908
2889
 
909
2890
 
910
2891
 
911
- * @example
912
- * // Student grade ranking with custom comparator
913
- * interface Student {
914
- * name: string;
915
- * gpa: number;
916
- * }
917
- *
918
- * const ranking = new TreeSet<Student>(
919
- * [
920
- * { name: 'Alice', gpa: 3.8 },
921
- * { name: 'Bob', gpa: 3.5 },
922
- * { name: 'Charlie', gpa: 3.9 },
923
- * { name: 'Diana', gpa: 3.5 }
924
- * ],
925
- * { comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
926
- * );
927
- *
928
- * // Sorted by GPA descending, then name ascending
929
- * const names = [...ranking].map(s => s.name);
930
- * console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
931
- *
932
- * // Top student
933
- * console.log(ranking.first()?.name); // 'Charlie';
934
- *
935
- * // Filter students with GPA >= 3.8
936
- * const honors = ranking.filter(s => s.gpa >= 3.8);
937
- * console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
938
- */
939
- first(): K | undefined;
940
- /**
941
- * Largest key in the set.
942
2892
 
943
2893
 
944
2894
 
@@ -951,14 +2901,213 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
951
2901
 
952
2902
 
953
2903
  * @example
954
- * // Get the maximum element
955
- * const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
956
- * console.log(temps.last()); // 30;
957
- * console.log(temps.first()); // 15;
2904
+ * // Finding nearest available time slot
2905
+ * // Available appointment times (minutes from midnight)
2906
+ * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
2907
+ *
2908
+ * // Customer wants something around 10:30 (630 min)
2909
+ * const nearest = slots.ceiling(630);
2910
+ * console.log(nearest); // 660; // 11:00 AM
2911
+ *
2912
+ * // What's the latest slot before 2:00 PM (840)?
2913
+ * const before2pm = slots.lower(840);
2914
+ * console.log(before2pm); // 720; // 12:00 PM
2915
+ *
2916
+ * // Book the 11:00 slot
2917
+ * slots.delete(660);
2918
+ * console.log(slots.ceiling(630)); // 720;
958
2919
  */
959
- last(): K | undefined;
2920
+ ceiling(key: K): K | undefined;
960
2921
  /**
961
- * Remove and return the smallest key.
2922
+ * Largest key that is <= the given key.
2923
+
2924
+
2925
+
2926
+
2927
+
2928
+
2929
+
2930
+
2931
+
2932
+
2933
+
2934
+
2935
+
2936
+
2937
+
2938
+
2939
+
2940
+
2941
+
2942
+
2943
+
2944
+
2945
+
2946
+
2947
+
2948
+
2949
+
2950
+
2951
+
2952
+
2953
+
2954
+
2955
+
2956
+
2957
+
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+
2964
+
2965
+
2966
+
2967
+
2968
+
2969
+
2970
+
2971
+
2972
+
2973
+
2974
+
2975
+
2976
+
2977
+
2978
+
2979
+
2980
+
2981
+
2982
+
2983
+
2984
+
2985
+
2986
+
2987
+
2988
+
2989
+
2990
+
2991
+
2992
+
2993
+
2994
+
2995
+
2996
+
2997
+
2998
+
2999
+
3000
+
3001
+
3002
+
3003
+
3004
+
3005
+
3006
+
3007
+
3008
+
3009
+
3010
+
3011
+
3012
+
3013
+
3014
+
3015
+
3016
+
3017
+
3018
+
3019
+
3020
+
3021
+
3022
+
3023
+
3024
+
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+
3032
+
3033
+
3034
+
3035
+
3036
+
3037
+
3038
+
3039
+
3040
+
3041
+ * @example
3042
+ * // Largest element ≤ target
3043
+ * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
3044
+ *
3045
+ * // Current width is 800 → which breakpoint applies?
3046
+ * console.log(breakpoints.floor(800)); // 768;
3047
+ * console.log(breakpoints.floor(1024)); // 1024; // exact match
3048
+ * console.log(breakpoints.floor(100)); // undefined;
3049
+ */
3050
+ floor(key: K): K | undefined;
3051
+ /**
3052
+ * Smallest key that is > the given key.
3053
+
3054
+
3055
+
3056
+
3057
+
3058
+
3059
+
3060
+
3061
+
3062
+
3063
+
3064
+
3065
+
3066
+
3067
+
3068
+
3069
+
3070
+
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+
3080
+
3081
+
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+
3089
+
3090
+
3091
+
3092
+
3093
+
3094
+
3095
+
3096
+
3097
+
3098
+
3099
+
3100
+
3101
+
3102
+
3103
+
3104
+
3105
+
3106
+
3107
+
3108
+
3109
+
3110
+
962
3111
 
963
3112
 
964
3113
 
@@ -970,17 +3119,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
970
3119
 
971
3120
 
972
3121
 
973
- * @example
974
- * // Remove and return minimum
975
- * const queue = new TreeSet<number>([5, 1, 8, 3]);
976
- *
977
- * console.log(queue.pollFirst()); // 1;
978
- * console.log(queue.pollFirst()); // 3;
979
- * console.log(queue.size); // 2;
980
- */
981
- pollFirst(): K | undefined;
982
- /**
983
- * Remove and return the largest key.
984
3122
 
985
3123
 
986
3124
 
@@ -992,16 +3130,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
992
3130
 
993
3131
 
994
3132
 
995
- * @example
996
- * // Remove and return maximum
997
- * const stack = new TreeSet<number>([10, 20, 30]);
998
- *
999
- * console.log(stack.pollLast()); // 30;
1000
- * console.log(stack.size); // 2;
1001
- */
1002
- pollLast(): K | undefined;
1003
- /**
1004
- * Smallest key that is >= the given key.
1005
3133
 
1006
3134
 
1007
3135
 
@@ -1041,25 +3169,19 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1041
3169
 
1042
3170
 
1043
3171
  * @example
1044
- * // Finding nearest available time slot
1045
- * // Available appointment times (minutes from midnight)
1046
- * const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
1047
- *
1048
- * // Customer wants something around 10:30 (630 min)
1049
- * const nearest = slots.ceiling(630);
1050
- * console.log(nearest); // 660; // 11:00 AM
1051
- *
1052
- * // What's the latest slot before 2:00 PM (840)?
1053
- * const before2pm = slots.lower(840);
1054
- * console.log(before2pm); // 720; // 12:00 PM
3172
+ * // Smallest element strictly > target
3173
+ * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
1055
3174
  *
1056
- * // Book the 11:00 slot
1057
- * slots.delete(660);
1058
- * console.log(slots.ceiling(630)); // 720;
3175
+ * console.log(levels.higher(10)); // 25;
3176
+ * console.log(levels.higher(100)); // undefined;
1059
3177
  */
1060
- ceiling(key: K): K | undefined;
3178
+ higher(key: K): K | undefined;
1061
3179
  /**
1062
- * Largest key that is <= the given key.
3180
+ * Largest key that is < the given key.
3181
+
3182
+
3183
+
3184
+
1063
3185
 
1064
3186
 
1065
3187
 
@@ -1098,18 +3220,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1098
3220
 
1099
3221
 
1100
3222
 
1101
- * @example
1102
- * // Largest element ≤ target
1103
- * const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
1104
- *
1105
- * // Current width is 800 → which breakpoint applies?
1106
- * console.log(breakpoints.floor(800)); // 768;
1107
- * console.log(breakpoints.floor(1024)); // 1024; // exact match
1108
- * console.log(breakpoints.floor(100)); // undefined;
1109
- */
1110
- floor(key: K): K | undefined;
1111
- /**
1112
- * Smallest key that is > the given key.
1113
3223
 
1114
3224
 
1115
3225
 
@@ -1148,16 +3258,6 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1148
3258
 
1149
3259
 
1150
3260
 
1151
- * @example
1152
- * // Smallest element strictly > target
1153
- * const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
1154
- *
1155
- * console.log(levels.higher(10)); // 25;
1156
- * console.log(levels.higher(100)); // undefined;
1157
- */
1158
- higher(key: K): K | undefined;
1159
- /**
1160
- * Largest key that is < the given key.
1161
3261
 
1162
3262
 
1163
3263
 
@@ -1226,6 +3326,86 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1226
3326
 
1227
3327
 
1228
3328
 
3329
+
3330
+
3331
+
3332
+
3333
+
3334
+
3335
+
3336
+
3337
+
3338
+
3339
+
3340
+
3341
+
3342
+
3343
+
3344
+
3345
+
3346
+
3347
+
3348
+
3349
+
3350
+
3351
+
3352
+
3353
+
3354
+
3355
+
3356
+
3357
+
3358
+
3359
+
3360
+
3361
+
3362
+
3363
+
3364
+
3365
+
3366
+
3367
+
3368
+
3369
+
3370
+
3371
+
3372
+
3373
+
3374
+
3375
+
3376
+
3377
+
3378
+
3379
+
3380
+
3381
+
3382
+
3383
+
3384
+
3385
+
3386
+
3387
+
3388
+
3389
+
3390
+
3391
+
3392
+
3393
+
3394
+
3395
+
3396
+
3397
+
3398
+
3399
+
3400
+
3401
+
3402
+
3403
+
3404
+
3405
+
3406
+
3407
+
3408
+
1229
3409
 
1230
3410
 
1231
3411
 
@@ -1287,6 +3467,106 @@ export declare class TreeSet<K = any, R = K> implements Iterable<K> {
1287
3467
 
1288
3468
 
1289
3469
 
3470
+
3471
+
3472
+
3473
+
3474
+
3475
+
3476
+
3477
+
3478
+
3479
+
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+
3493
+
3494
+
3495
+
3496
+
3497
+
3498
+
3499
+
3500
+
3501
+
3502
+
3503
+
3504
+
3505
+
3506
+
3507
+
3508
+
3509
+
3510
+
3511
+
3512
+
3513
+
3514
+
3515
+
3516
+
3517
+
3518
+
3519
+
3520
+
3521
+
3522
+
3523
+
3524
+
3525
+
3526
+
3527
+
3528
+
3529
+
3530
+
3531
+
3532
+
3533
+
3534
+
3535
+
3536
+
3537
+
3538
+
3539
+
3540
+
3541
+
3542
+
3543
+
3544
+
3545
+
3546
+
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+
3553
+
3554
+
3555
+
3556
+
3557
+
3558
+
3559
+
3560
+
3561
+
3562
+
3563
+
3564
+
3565
+
3566
+
3567
+
3568
+
3569
+
1290
3570
 
1291
3571
 
1292
3572