@e280/stz 0.0.0-5 → 0.0.0-6

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 (74) hide show
  1. package/package.json +8 -5
  2. package/s/clone/clone.test.ts +123 -123
  3. package/s/data/bytename/badge.test.ts +52 -0
  4. package/s/data/bytename/badge.ts +72 -0
  5. package/s/data/bytename/bytename.test.ts +49 -0
  6. package/s/data/{barname/barname.ts → bytename/bytename.ts} +20 -8
  7. package/s/data/bytename/index.ts +4 -0
  8. package/s/data/bytes.ts +10 -0
  9. package/s/debounce/debounce.test.ts +73 -73
  10. package/s/deep/deep.test.ts +8 -8
  11. package/s/deep/parts/equal.test.ts +123 -124
  12. package/s/index.ts +1 -1
  13. package/s/tests.test.ts +17 -0
  14. package/x/clone/clone.test.d.ts +15 -1
  15. package/x/clone/clone.test.js +106 -124
  16. package/x/clone/clone.test.js.map +1 -1
  17. package/x/data/bytename/badge.d.ts +25 -0
  18. package/x/data/bytename/badge.js +50 -0
  19. package/x/data/bytename/badge.js.map +1 -0
  20. package/x/data/bytename/badge.test.d.ts +23 -0
  21. package/x/data/bytename/badge.test.js +44 -0
  22. package/x/data/bytename/badge.test.js.map +1 -0
  23. package/x/data/bytename/bytename.d.ts +11 -0
  24. package/x/data/{barname/barname.js → bytename/bytename.js} +11 -9
  25. package/x/data/bytename/bytename.js.map +1 -0
  26. package/x/data/bytename/bytename.test.d.ts +17 -0
  27. package/x/data/bytename/bytename.test.js +41 -0
  28. package/x/data/bytename/bytename.test.js.map +1 -0
  29. package/x/data/bytename/index.d.ts +2 -0
  30. package/x/data/bytename/index.js +3 -0
  31. package/x/data/bytename/index.js.map +1 -0
  32. package/x/data/bytename/utils/prefixes.js.map +1 -0
  33. package/x/data/bytename/utils/suffixes.js.map +1 -0
  34. package/x/data/bytes.d.ts +1 -0
  35. package/x/data/bytes.js +9 -0
  36. package/x/data/bytes.js.map +1 -1
  37. package/x/debounce/debounce.test.d.ts +8 -1
  38. package/x/debounce/debounce.test.js +70 -74
  39. package/x/debounce/debounce.test.js.map +1 -1
  40. package/x/deep/deep.test.d.ts +21 -1
  41. package/x/deep/deep.test.js +5 -9
  42. package/x/deep/deep.test.js.map +1 -1
  43. package/x/deep/parts/equal.test.d.ts +19 -1
  44. package/x/deep/parts/equal.test.js +107 -125
  45. package/x/deep/parts/equal.test.js.map +1 -1
  46. package/x/index.d.ts +1 -1
  47. package/x/index.js +1 -1
  48. package/x/index.js.map +1 -1
  49. package/x/tests.test.js +14 -0
  50. package/x/tests.test.js.map +1 -0
  51. package/s/data/barname/badge.ts +0 -78
  52. package/s/data/barname/demo.ts +0 -49
  53. package/s/data/barname/index.ts +0 -4
  54. package/x/data/barname/badge.d.ts +0 -25
  55. package/x/data/barname/badge.js +0 -64
  56. package/x/data/barname/badge.js.map +0 -1
  57. package/x/data/barname/barname.d.ts +0 -7
  58. package/x/data/barname/barname.js.map +0 -1
  59. package/x/data/barname/demo.js +0 -45
  60. package/x/data/barname/demo.js.map +0 -1
  61. package/x/data/barname/index.d.ts +0 -2
  62. package/x/data/barname/index.js +0 -3
  63. package/x/data/barname/index.js.map +0 -1
  64. package/x/data/barname/utils/prefixes.js.map +0 -1
  65. package/x/data/barname/utils/suffixes.js.map +0 -1
  66. /package/{license → LICENSE} +0 -0
  67. /package/{readme.md → README.md} +0 -0
  68. /package/s/data/{barname → bytename}/utils/prefixes.ts +0 -0
  69. /package/s/data/{barname → bytename}/utils/suffixes.ts +0 -0
  70. /package/x/data/{barname → bytename}/utils/prefixes.d.ts +0 -0
  71. /package/x/data/{barname → bytename}/utils/prefixes.js +0 -0
  72. /package/x/data/{barname → bytename}/utils/suffixes.d.ts +0 -0
  73. /package/x/data/{barname → bytename}/utils/suffixes.js +0 -0
  74. /package/x/{data/barname/demo.d.ts → tests.test.d.ts} +0 -0
@@ -1,126 +1,108 @@
1
- export {};
2
- //
3
- // import {Suite, expect} from "cynic"
4
- // import {deepEqual} from "./equal.js"
5
- //
6
- // export default <Suite>{
7
- //
8
- // async "compare primitive types"() {
9
- // expect(deepEqual(123, 123)).equals(true)
10
- // expect(deepEqual("abc", "abc")).equals(true)
11
- // expect(deepEqual(true, true)).equals(true)
12
- // expect(deepEqual(123, "123")).equals(false)
13
- // expect(deepEqual(true, 1)).equals(false)
14
- // },
15
- //
16
- // async "compare arrays"() {
17
- // const array1 = [1, 2, 3]
18
- // const array2 = [1, 2, 3]
19
- // const array3 = [1, 2, 4]
20
- // expect(deepEqual(array1, array2)).equals(true)
21
- // expect(deepEqual(array1, array3)).equals(false)
22
- // },
23
- //
24
- // async "compare plain objects"() {
25
- // const obj1 = { foo: "bar", baz: 123 }
26
- // const obj2 = { foo: "bar", baz: 123 }
27
- // const obj3 = { foo: "bar", baz: 124 }
28
- // expect(deepEqual(obj1, obj2)).equals(true)
29
- // expect(deepEqual(obj1, obj3)).equals(false)
30
- // },
31
- //
32
- // async "compare nested objects"() {
33
- // const obj1 = { foo: "bar", inner: { baz: 123, deeper: { qux: true }}}
34
- // const obj2 = { foo: "bar", inner: { baz: 123, deeper: { qux: true }}}
35
- // const obj3 = { foo: "bar", inner: { baz: 124, deeper: { qux: true }}}
36
- // expect(deepEqual(obj1, obj2)).equals(true)
37
- // expect(deepEqual(obj1, obj3)).equals(false)
38
- // },
39
- //
40
- // async "compare array of objects"() {
41
- // const arr1 = [{ foo: "bar" }, { baz: 123 }, { qux: true }]
42
- // const arr2 = [{ foo: "bar" }, { baz: 123 }, { qux: true }]
43
- // const arr3 = [{ foo: "bar" }, { baz: 123 }, { qux: false }]
44
- // expect(deepEqual(arr1, arr2)).equals(true)
45
- // expect(deepEqual(arr1, arr3)).equals(false)
46
- // },
47
- //
48
- // async "compare null and undefined"() {
49
- // expect(deepEqual(null, null)).equals(true)
50
- // expect(deepEqual(undefined, undefined)).equals(true)
51
- // expect(deepEqual(null, undefined)).equals(false)
52
- // },
53
- //
54
- // async "compare with nested arrays"() {
55
- // const obj1 = { foo: "bar", array: [1, 2, [3, 4]] }
56
- // const obj2 = { foo: "bar", array: [1, 2, [3, 4]] }
57
- // const obj3 = { foo: "bar", array: [1, 2, [3, 5]] }
58
- // expect(deepEqual(obj1, obj2)).equals(true)
59
- // expect(deepEqual(obj1, obj3)).equals(false)
60
- // },
61
- //
62
- // async "circularity is forbidden"() {
63
- // const obj1 = {alpha: 1} as any
64
- // const obj2 = {alpha: 1} as any
65
- // obj1.bravo = obj1
66
- // obj2.bravo = obj2
67
- // expect(() => deepEqual(obj1, obj2)).throws()
68
- // },
69
- //
70
- // async "duplicate references are allowed"() {
71
- // const dupe = {a: 123}
72
- // const obj1 = {alpha: 1, dupe}
73
- // const obj2 = {alpha: 1, dupe}
74
- // const obj3 = {alpha: 1, dupe: {a: 0}}
75
- // expect(deepEqual(obj1, obj2)).equals(true)
76
- // expect(deepEqual(obj1, obj3)).equals(false)
77
- // },
78
- //
79
- // "maps and sets": {
80
- // async "compare maps"() {
81
- // const map1 = new Map([['key1', 'value1'], ['key2', 'value2']])
82
- // const map2 = new Map([['key1', 'value1'], ['key2', 'value2']])
83
- // const map3 = new Map([['key1', 'value1'], ['key2', 'value3']])
84
- // expect(deepEqual(map1, map2)).equals(true)
85
- // expect(deepEqual(map1, map3)).equals(false)
86
- // },
87
- //
88
- // async "compare sets"() {
89
- // const set1 = new Set([1, 2, 3])
90
- // const set2 = new Set([1, 2, 3])
91
- // const set3 = new Set([1, 2, 4])
92
- // expect(deepEqual(set1, set2)).equals(true)
93
- // expect(deepEqual(set1, set3)).equals(false)
94
- // },
95
- //
96
- // async "compare nested maps and sets"() {
97
- // const obj1 = { map: new Map([['key', new Set([1, 2, 3])]]) }
98
- // const obj2 = { map: new Map([['key', new Set([1, 2, 3])]]) }
99
- // const obj3 = { map: new Map([['key', new Set([1, 2, 4])]]) }
100
- // expect(deepEqual(obj1, obj2)).equals(true)
101
- // expect(deepEqual(obj1, obj3)).equals(false)
102
- // },
103
- //
104
- // async "compare complex structures"() {
105
- // const map1 = new Map([['set', new Set([{ a: 1 }, { b: 2 }])]])
106
- // const map2 = new Map([['set', new Set([{ a: 1 }, { b: 2 }])]])
107
- // const map3 = new Map([['set', new Set([{ a: 1 }, { b: 3 }])]])
108
- // expect(deepEqual(map1, map2)).equals(true)
109
- // expect(deepEqual(map1, map3)).equals(false)
110
- // },
111
- //
112
- // async "compare edge cases"() {
113
- // const emptyMap1 = new Map()
114
- // const emptyMap2 = new Map()
115
- // const emptySet1 = new Set()
116
- // const emptySet2 = new Set()
117
- // const mixedMap1 = new Map([['b', 2], ['a', 1]])
118
- // const mixedMap2 = new Map([['a', 1], ['b', 2]])
119
- // expect(deepEqual(emptyMap1, emptyMap2)).equals(true)
120
- // expect(deepEqual(emptySet1, emptySet2)).equals(true)
121
- // expect(deepEqual(mixedMap1, mixedMap2)).equals(true)
122
- // },
123
- // },
124
- // }
125
- //
1
+ import { deepEqual } from "./equal.js";
2
+ import { Science, expect } from "@e280/science";
3
+ export default Science.suite({
4
+ async "compare primitive types"() {
5
+ expect(deepEqual(123, 123)).is(true);
6
+ expect(deepEqual("abc", "abc")).is(true);
7
+ expect(deepEqual(true, true)).is(true);
8
+ expect(deepEqual(123, "123")).is(false);
9
+ expect(deepEqual(true, 1)).is(false);
10
+ },
11
+ async "compare arrays"() {
12
+ const array1 = [1, 2, 3];
13
+ const array2 = [1, 2, 3];
14
+ const array3 = [1, 2, 4];
15
+ expect(deepEqual(array1, array2)).is(true);
16
+ expect(deepEqual(array1, array3)).is(false);
17
+ },
18
+ async "compare plain objects"() {
19
+ const obj1 = { foo: "bar", baz: 123 };
20
+ const obj2 = { foo: "bar", baz: 123 };
21
+ const obj3 = { foo: "bar", baz: 124 };
22
+ expect(deepEqual(obj1, obj2)).is(true);
23
+ expect(deepEqual(obj1, obj3)).is(false);
24
+ },
25
+ async "compare nested objects"() {
26
+ const obj1 = { foo: "bar", inner: { baz: 123, deeper: { qux: true } } };
27
+ const obj2 = { foo: "bar", inner: { baz: 123, deeper: { qux: true } } };
28
+ const obj3 = { foo: "bar", inner: { baz: 124, deeper: { qux: true } } };
29
+ expect(deepEqual(obj1, obj2)).is(true);
30
+ expect(deepEqual(obj1, obj3)).is(false);
31
+ },
32
+ async "compare array of objects"() {
33
+ const arr1 = [{ foo: "bar" }, { baz: 123 }, { qux: true }];
34
+ const arr2 = [{ foo: "bar" }, { baz: 123 }, { qux: true }];
35
+ const arr3 = [{ foo: "bar" }, { baz: 123 }, { qux: false }];
36
+ expect(deepEqual(arr1, arr2)).is(true);
37
+ expect(deepEqual(arr1, arr3)).is(false);
38
+ },
39
+ async "compare null and undefined"() {
40
+ expect(deepEqual(null, null)).is(true);
41
+ expect(deepEqual(undefined, undefined)).is(true);
42
+ expect(deepEqual(null, undefined)).is(false);
43
+ },
44
+ async "compare with nested arrays"() {
45
+ const obj1 = { foo: "bar", array: [1, 2, [3, 4]] };
46
+ const obj2 = { foo: "bar", array: [1, 2, [3, 4]] };
47
+ const obj3 = { foo: "bar", array: [1, 2, [3, 5]] };
48
+ expect(deepEqual(obj1, obj2)).is(true);
49
+ expect(deepEqual(obj1, obj3)).is(false);
50
+ },
51
+ async "circularity is forbidden"() {
52
+ const obj1 = { alpha: 1 };
53
+ const obj2 = { alpha: 1 };
54
+ obj1.bravo = obj1;
55
+ obj2.bravo = obj2;
56
+ expect(() => deepEqual(obj1, obj2)).throws();
57
+ },
58
+ async "duplicate references are allowed"() {
59
+ const dupe = { a: 123 };
60
+ const obj1 = { alpha: 1, dupe };
61
+ const obj2 = { alpha: 1, dupe };
62
+ const obj3 = { alpha: 1, dupe: { a: 0 } };
63
+ expect(deepEqual(obj1, obj2)).is(true);
64
+ expect(deepEqual(obj1, obj3)).is(false);
65
+ },
66
+ "maps and sets": {
67
+ async "compare maps"() {
68
+ const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]);
69
+ const map2 = new Map([['key1', 'value1'], ['key2', 'value2']]);
70
+ const map3 = new Map([['key1', 'value1'], ['key2', 'value3']]);
71
+ expect(deepEqual(map1, map2)).is(true);
72
+ expect(deepEqual(map1, map3)).is(false);
73
+ },
74
+ async "compare sets"() {
75
+ const set1 = new Set([1, 2, 3]);
76
+ const set2 = new Set([1, 2, 3]);
77
+ const set3 = new Set([1, 2, 4]);
78
+ expect(deepEqual(set1, set2)).is(true);
79
+ expect(deepEqual(set1, set3)).is(false);
80
+ },
81
+ async "compare nested maps and sets"() {
82
+ const obj1 = { map: new Map([['key', new Set([1, 2, 3])]]) };
83
+ const obj2 = { map: new Map([['key', new Set([1, 2, 3])]]) };
84
+ const obj3 = { map: new Map([['key', new Set([1, 2, 4])]]) };
85
+ expect(deepEqual(obj1, obj2)).is(true);
86
+ expect(deepEqual(obj1, obj3)).is(false);
87
+ },
88
+ async "compare complex structures"() {
89
+ const map1 = new Map([['set', new Set([{ a: 1 }, { b: 2 }])]]);
90
+ const map2 = new Map([['set', new Set([{ a: 1 }, { b: 2 }])]]);
91
+ const map3 = new Map([['set', new Set([{ a: 1 }, { b: 3 }])]]);
92
+ expect(deepEqual(map1, map2)).is(true);
93
+ expect(deepEqual(map1, map3)).is(false);
94
+ },
95
+ async "compare edge cases"() {
96
+ const emptyMap1 = new Map();
97
+ const emptyMap2 = new Map();
98
+ const emptySet1 = new Set();
99
+ const emptySet2 = new Set();
100
+ const mixedMap1 = new Map([['b', 2], ['a', 1]]);
101
+ const mixedMap2 = new Map([['a', 1], ['b', 2]]);
102
+ expect(deepEqual(emptyMap1, emptyMap2)).is(true);
103
+ expect(deepEqual(emptySet1, emptySet2)).is(true);
104
+ expect(deepEqual(mixedMap1, mixedMap2)).is(true);
105
+ },
106
+ },
107
+ });
126
108
  //# sourceMappingURL=equal.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"equal.test.js","sourceRoot":"","sources":["../../../s/deep/parts/equal.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,sCAAsC;AACtC,uCAAuC;AACvC,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,uCAAuC;AACvC,6CAA6C;AAC7C,iDAAiD;AACjD,+CAA+C;AAC/C,gDAAgD;AAChD,6CAA6C;AAC7C,MAAM;AACN,EAAE;AACF,8BAA8B;AAC9B,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B,mDAAmD;AACnD,oDAAoD;AACpD,MAAM;AACN,EAAE;AACF,qCAAqC;AACrC,0CAA0C;AAC1C,0CAA0C;AAC1C,0CAA0C;AAC1C,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,sCAAsC;AACtC,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,wCAAwC;AACxC,+DAA+D;AAC/D,+DAA+D;AAC/D,gEAAgE;AAChE,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,0CAA0C;AAC1C,+CAA+C;AAC/C,yDAAyD;AACzD,qDAAqD;AACrD,MAAM;AACN,EAAE;AACF,0CAA0C;AAC1C,uDAAuD;AACvD,uDAAuD;AACvD,uDAAuD;AACvD,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,wCAAwC;AACxC,mCAAmC;AACnC,mCAAmC;AACnC,sBAAsB;AACtB,sBAAsB;AACtB,iDAAiD;AACjD,MAAM;AACN,EAAE;AACF,gDAAgD;AAChD,0BAA0B;AAC1B,kCAAkC;AAClC,kCAAkC;AAClC,0CAA0C;AAC1C,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,sBAAsB;AACtB,6BAA6B;AAC7B,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,gDAAgD;AAChD,iDAAiD;AACjD,OAAO;AACP,EAAE;AACF,6BAA6B;AAC7B,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC,gDAAgD;AAChD,iDAAiD;AACjD,OAAO;AACP,EAAE;AACF,6CAA6C;AAC7C,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,gDAAgD;AAChD,iDAAiD;AACjD,OAAO;AACP,EAAE;AACF,2CAA2C;AAC3C,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,gDAAgD;AAChD,iDAAiD;AACjD,OAAO;AACP,EAAE;AACF,mCAAmC;AACnC,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC,qDAAqD;AACrD,qDAAqD;AACrD,0DAA0D;AAC1D,0DAA0D;AAC1D,0DAA0D;AAC1D,OAAO;AACP,MAAM;AACN,IAAI;AACJ,EAAE"}
1
+ {"version":3,"file":"equal.test.js","sourceRoot":"","sources":["../../../s/deep/parts/equal.test.ts"],"names":[],"mappings":"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"}
package/x/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./data/barname/index.js";
1
+ export * from "./data/bytename/index.js";
2
2
  export * from "./data/base58.js";
3
3
  export * from "./data/base64.js";
4
4
  export * from "./data/base64url.js";
package/x/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./data/barname/index.js";
1
+ export * from "./data/bytename/index.js";
2
2
  export * from "./data/base58.js";
3
3
  export * from "./data/base64.js";
4
4
  export * from "./data/base64url.js";
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { Science } from "@e280/science";
2
+ import cloneTest from "./clone/clone.test.js";
3
+ import badgeTest from "./data/bytename/badge.test.js";
4
+ import debounceTest from "./debounce/debounce.test.js";
5
+ import bytenameTest from "./data/bytename/bytename.test.js";
6
+ import deepTest from "./deep/deep.test.js";
7
+ await Science.run({
8
+ clone: cloneTest,
9
+ bytename: bytenameTest,
10
+ badge: badgeTest,
11
+ debounce: debounceTest,
12
+ deep: deepTest,
13
+ });
14
+ //# sourceMappingURL=tests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests.test.js","sourceRoot":"","sources":["../s/tests.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAC7C,OAAO,SAAS,MAAM,+BAA+B,CAAA;AACrD,OAAO,YAAY,MAAM,6BAA6B,CAAA;AACtD,OAAO,YAAY,MAAM,kCAAkC,CAAA;AAC3D,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAE1C,MAAM,OAAO,CAAC,GAAG,CAAC;IACjB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,YAAY;IACtB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,YAAY;IACtB,IAAI,EAAE,QAAQ;CACd,CAAC,CAAA"}
@@ -1,78 +0,0 @@
1
-
2
- import {Hex} from "../hex.js"
3
- import {Base58} from "../base58.js"
4
- import {Barname} from "./barname.js"
5
-
6
- /**
7
- * Badge is a human-friendly presentation format for arbitrary binary data.
8
- * - looks like "nomluc_rigpem.tg2bjNkjMh1H6M2b2EhD5V4x6XAqx9wyWddsBt"
9
- * - the first bytes are shown in barname format
10
- * - the rest of the data is in base58
11
- * - designed to be a nice way to present 256-bit passport thumbprints
12
- * - can be used for data of different lengths
13
- * - preview size can be customized as 'leadCount', which defaults to 4
14
- */
15
- export class Badge {
16
- static readonly separator = "."
17
- static readonly defaultLeadCount = 4
18
-
19
- readonly hex: string
20
- readonly string: string
21
- readonly preview: string
22
-
23
- constructor(
24
- public readonly bytes: Uint8Array,
25
- public readonly leadCount = Badge.defaultLeadCount,
26
- ) {
27
-
28
- if (leadCount < 1)
29
- throw new Error(`badge leadCount must be greater than 0 (was ${leadCount})`)
30
-
31
- this.hex = Hex.string(this.bytes)
32
- this.preview = Barname.string(this.bytes.slice(0, leadCount))
33
-
34
- this.string = (bytes.length > leadCount)
35
- ? `${this.preview}.${Base58.string(this.bytes.slice(leadCount))}`
36
- : this.preview
37
- }
38
-
39
- static parse(badge: string) {
40
- const [barname, b58] = badge.split(Badge.separator)
41
-
42
- // badge has a base58 component
43
- if (b58) {
44
- const appetizer = Barname.bytes(barname)
45
- const entree = Base58.bytes(b58)
46
- const bytes = new Uint8Array([...appetizer, ...entree])
47
- return new this(bytes, appetizer.length)
48
- }
49
-
50
- // badge is just a barname (no base58 part)
51
- else {
52
- const bytes = Barname.bytes(barname)
53
- return new this(bytes, bytes.length)
54
- }
55
- }
56
-
57
- static fromHex(hex: string, leadCount = this.defaultLeadCount) {
58
- const bytes = Hex.bytes(hex)
59
- return new this(bytes, leadCount)
60
- }
61
-
62
- static string(bytes: Uint8Array, leadCount = this.defaultLeadCount) {
63
- return new this(bytes, leadCount).string
64
- }
65
-
66
- static bytes(badge: string) {
67
- return this.parse(badge)
68
- }
69
-
70
- static hex(badge: string) {
71
- return this.parse(badge).hex
72
- }
73
-
74
- toString() {
75
- return this.string
76
- }
77
- }
78
-
@@ -1,49 +0,0 @@
1
-
2
- import {Hex} from "../hex.js"
3
- import {Badge} from "./badge.js"
4
- import {Bytes} from "../bytes.js"
5
- import {Barname} from "./barname.js"
6
-
7
- for (const _ of Array(2)) {
8
- const string = Barname.random(34)
9
- const bytes = Barname.bytes(string)
10
- const string2 = Barname.string(bytes)
11
- console.log(string.replaceAll(" ", "\n"))
12
- if (string !== string2)
13
- throw new Error("barname fails equality check")
14
- console.log("")
15
- }
16
-
17
- for (const _ of Array(10)) {
18
- const bytes = Bytes.random(32)
19
- const badge = new Badge(bytes)
20
- const bytes2 = badge.bytes
21
- console.log(badge.string)
22
- if (Hex.string(bytes) !== Hex.string(bytes2))
23
- throw new Error("badge fails equality check")
24
- }
25
-
26
- {
27
- console.log("")
28
- const alpha = `
29
- dacsyd_labdun_fipsub_bonmel
30
- fitlys_rovbud_sipnel_sonryx
31
- sitrem_lasdyr_dovpun_nibwep
32
- tippet_mapnub_ticnet_famset
33
- wanteg
34
- `
35
- const bravo = `
36
- dacsyd-labdun-fipsub-bonmel;
37
- [fitlys rovbud sipnel sonryx]
38
- sitrem/lasdyr/dovpun/nibwep
39
- tippet+mapnub+ticnet+famset
40
- wanteg++
41
- `
42
- const alphaHex = Hex.string(Barname.bytes(alpha))
43
- const bravoHex = Hex.string(Barname.bytes(bravo))
44
- if (alphaHex.length === 68 && alphaHex === bravoHex)
45
- console.log("*barname parsing appears resilient to whitespace and garbage*")
46
- else
47
- throw new Error("barname resiliency failure")
48
- }
49
-
@@ -1,4 +0,0 @@
1
-
2
- export * from "./barname.js"
3
- export * from "./badge.js"
4
-
@@ -1,25 +0,0 @@
1
- /**
2
- * Badge is a human-friendly presentation format for arbitrary binary data.
3
- * - looks like "nomluc_rigpem.tg2bjNkjMh1H6M2b2EhD5V4x6XAqx9wyWddsBt"
4
- * - the first bytes are shown in barname format
5
- * - the rest of the data is in base58
6
- * - designed to be a nice way to present 256-bit passport thumbprints
7
- * - can be used for data of different lengths
8
- * - preview size can be customized as 'leadCount', which defaults to 4
9
- */
10
- export declare class Badge {
11
- readonly bytes: Uint8Array;
12
- readonly leadCount: number;
13
- static readonly separator = ".";
14
- static readonly defaultLeadCount = 4;
15
- readonly hex: string;
16
- readonly string: string;
17
- readonly preview: string;
18
- constructor(bytes: Uint8Array, leadCount?: number);
19
- static parse(badge: string): Badge;
20
- static fromHex(hex: string, leadCount?: number): Badge;
21
- static string(bytes: Uint8Array, leadCount?: number): string;
22
- static bytes(badge: string): Badge;
23
- static hex(badge: string): string;
24
- toString(): string;
25
- }
@@ -1,64 +0,0 @@
1
- import { Hex } from "../hex.js";
2
- import { Base58 } from "../base58.js";
3
- import { Barname } from "./barname.js";
4
- /**
5
- * Badge is a human-friendly presentation format for arbitrary binary data.
6
- * - looks like "nomluc_rigpem.tg2bjNkjMh1H6M2b2EhD5V4x6XAqx9wyWddsBt"
7
- * - the first bytes are shown in barname format
8
- * - the rest of the data is in base58
9
- * - designed to be a nice way to present 256-bit passport thumbprints
10
- * - can be used for data of different lengths
11
- * - preview size can be customized as 'leadCount', which defaults to 4
12
- */
13
- export class Badge {
14
- bytes;
15
- leadCount;
16
- static separator = ".";
17
- static defaultLeadCount = 4;
18
- hex;
19
- string;
20
- preview;
21
- constructor(bytes, leadCount = Badge.defaultLeadCount) {
22
- this.bytes = bytes;
23
- this.leadCount = leadCount;
24
- if (leadCount < 1)
25
- throw new Error(`badge leadCount must be greater than 0 (was ${leadCount})`);
26
- this.hex = Hex.string(this.bytes);
27
- this.preview = Barname.string(this.bytes.slice(0, leadCount));
28
- this.string = (bytes.length > leadCount)
29
- ? `${this.preview}.${Base58.string(this.bytes.slice(leadCount))}`
30
- : this.preview;
31
- }
32
- static parse(badge) {
33
- const [barname, b58] = badge.split(Badge.separator);
34
- // badge has a base58 component
35
- if (b58) {
36
- const appetizer = Barname.bytes(barname);
37
- const entree = Base58.bytes(b58);
38
- const bytes = new Uint8Array([...appetizer, ...entree]);
39
- return new this(bytes, appetizer.length);
40
- }
41
- // badge is just a barname (no base58 part)
42
- else {
43
- const bytes = Barname.bytes(barname);
44
- return new this(bytes, bytes.length);
45
- }
46
- }
47
- static fromHex(hex, leadCount = this.defaultLeadCount) {
48
- const bytes = Hex.bytes(hex);
49
- return new this(bytes, leadCount);
50
- }
51
- static string(bytes, leadCount = this.defaultLeadCount) {
52
- return new this(bytes, leadCount).string;
53
- }
54
- static bytes(badge) {
55
- return this.parse(badge);
56
- }
57
- static hex(badge) {
58
- return this.parse(badge).hex;
59
- }
60
- toString() {
61
- return this.string;
62
- }
63
- }
64
- //# sourceMappingURL=badge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../s/data/barname/badge.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC;;;;;;;;GAQG;AACH,MAAM,OAAO,KAAK;IASC;IACA;IATlB,MAAM,CAAU,SAAS,GAAG,GAAG,CAAA;IAC/B,MAAM,CAAU,gBAAgB,GAAG,CAAC,CAAA;IAE3B,GAAG,CAAQ;IACX,MAAM,CAAQ;IACd,OAAO,CAAQ;IAExB,YACkB,KAAiB,EACjB,YAAY,KAAK,CAAC,gBAAgB;QADlC,UAAK,GAAL,KAAK,CAAY;QACjB,cAAS,GAAT,SAAS,CAAyB;QAGnD,IAAI,SAAS,GAAG,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,SAAS,GAAG,CAAC,CAAA;QAE7E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAE7D,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YACvC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;YACjE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAa;QACzB,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAEnD,+BAA+B;QAC/B,IAAI,GAAG,EAAE,CAAC;YACT,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;YACvD,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;QACzC,CAAC;QAED,2CAA2C;aACtC,CAAC;YACL,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACpC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;IACF,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAiB,EAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB;QACjE,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAA;IAC7B,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare const Barname: {
2
- random(byteCount: number): string;
3
- string(bytes: Uint8Array, options?: {
4
- wordsPerGroup?: number;
5
- }): string;
6
- bytes(string: string): Uint8Array<ArrayBuffer>;
7
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"barname.js","sourceRoot":"","sources":["../../../s/data/barname/barname.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { Hex } from "../hex.js";
2
- import { Badge } from "./badge.js";
3
- import { Bytes } from "../bytes.js";
4
- import { Barname } from "./barname.js";
5
- for (const _ of Array(2)) {
6
- const string = Barname.random(34);
7
- const bytes = Barname.bytes(string);
8
- const string2 = Barname.string(bytes);
9
- console.log(string.replaceAll(" ", "\n"));
10
- if (string !== string2)
11
- throw new Error("barname fails equality check");
12
- console.log("");
13
- }
14
- for (const _ of Array(10)) {
15
- const bytes = Bytes.random(32);
16
- const badge = new Badge(bytes);
17
- const bytes2 = badge.bytes;
18
- console.log(badge.string);
19
- if (Hex.string(bytes) !== Hex.string(bytes2))
20
- throw new Error("badge fails equality check");
21
- }
22
- {
23
- console.log("");
24
- const alpha = `
25
- dacsyd_labdun_fipsub_bonmel
26
- fitlys_rovbud_sipnel_sonryx
27
- sitrem_lasdyr_dovpun_nibwep
28
- tippet_mapnub_ticnet_famset
29
- wanteg
30
- `;
31
- const bravo = `
32
- dacsyd-labdun-fipsub-bonmel;
33
- [fitlys rovbud sipnel sonryx]
34
- sitrem/lasdyr/dovpun/nibwep
35
- tippet+mapnub+ticnet+famset
36
- wanteg++
37
- `;
38
- const alphaHex = Hex.string(Barname.bytes(alpha));
39
- const bravoHex = Hex.string(Barname.bytes(bravo));
40
- if (alphaHex.length === 68 && alphaHex === bravoHex)
41
- console.log("*barname parsing appears resilient to whitespace and garbage*");
42
- else
43
- throw new Error("barname resiliency failure");
44
- }
45
- //# sourceMappingURL=demo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../s/data/barname/demo.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAChC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;IACzC,IAAI,MAAM,KAAK,OAAO;QACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAChB,CAAC;AAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAA;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC;AAED,CAAC;IACA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,MAAM,KAAK,GAAG;;;;;;EAMb,CAAA;IACD,MAAM,KAAK,GAAG;;;;;;EAMb,CAAA;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,QAAQ,KAAK,QAAQ;QAClD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;;QAE5E,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./barname.js";
2
- export * from "./badge.js";
@@ -1,3 +0,0 @@
1
- export * from "./barname.js";
2
- export * from "./badge.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../s/data/barname/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"prefixes.js","sourceRoot":"","sources":["../../../../s/data/barname/utils/prefixes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;CAC/F,CAAA"}