@dashkite/joy 0.3.15 → 0.4.0
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.
- package/build/browser/src/array.js +121 -121
- package/build/browser/src/function.js +335 -420
- package/build/browser/src/generic.js +103 -167
- package/build/browser/src/index.js +16 -13
- package/build/browser/src/iterable.js +281 -327
- package/build/browser/src/math.js +42 -38
- package/build/browser/src/metaclass.js +64 -71
- package/build/browser/src/object.js +156 -75
- package/build/browser/src/predicate.js +122 -164
- package/build/browser/src/promise.js +18 -22
- package/build/browser/src/set.js +53 -68
- package/build/browser/src/text.js +115 -124
- package/build/browser/src/time.js +88 -30
- package/build/browser/src/type.js +65 -68
- package/build/browser/src/value.js +206 -231
- package/build/node/src/array.js +283 -161
- package/build/node/src/function.js +433 -396
- package/build/node/src/generic.js +122 -151
- package/build/node/src/index.js +32 -174
- package/build/node/src/iterable.js +366 -379
- package/build/node/src/math.js +106 -65
- package/build/node/src/metaclass.js +100 -87
- package/build/node/src/object.js +217 -86
- package/build/node/src/predicate.js +150 -156
- package/build/node/src/promise.js +49 -33
- package/build/node/src/set.js +81 -80
- package/build/node/src/text.js +253 -174
- package/build/node/src/time.js +122 -40
- package/build/node/src/type.js +230 -139
- package/build/node/src/value.js +242 -251
- package/package.json +14 -8
|
@@ -1,278 +1,253 @@
|
|
|
1
|
-
var clone,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
indexOf = [].indexOf;
|
|
15
|
-
import { identity, curry, binary } from "./function.js";
|
|
16
|
-
import { any, negate } from "./predicate.js";
|
|
17
|
-
import { generic } from "./generic.js";
|
|
18
|
-
import { isUndefined, isAny, isSymbol, isRegExp, isBuffer, isArrayBuffer, isTypedArray, isDataView, isMap, isArray, isObject, isSet, isBoolean, isDate, isNumber, isString, isFunction, isWeakMap, isError } from "./type.js";
|
|
19
|
-
|
|
20
|
-
hasEqual = a => {
|
|
21
|
-
return (a != null ? a.equal : void 0) != null;
|
|
1
|
+
var clone, cloneIterator, eq, equal, hasByteLength, hasEqual, hasLength, hasSize, isEmpty, isNot, isPrimitive, neq, notEqual, size, indexOf = [].indexOf;
|
|
2
|
+
import { identity, curry, binary } from "./function";
|
|
3
|
+
import { any, negate } from "./predicate";
|
|
4
|
+
import { generic } from "./generic";
|
|
5
|
+
import { isUndefined, isAny, isSymbol, isRegExp, isBuffer, isArrayBuffer, isTypedArray, isDataView, isMap, isArray, isObject, isSet, isBoolean, isDate, isNumber, isString, isFunction, isWeakMap, isError } from "./type";
|
|
6
|
+
hasEqual = (a)=>{
|
|
7
|
+
return (a != null ? a.equal : void 0) != null;
|
|
8
|
+
};
|
|
9
|
+
isNot = function(a, b) {
|
|
10
|
+
return !Object.is(a, b);
|
|
11
|
+
};
|
|
12
|
+
isPrimitive = function(x) {
|
|
13
|
+
return isBoolean(x) || isNumber(x) || isString(x);
|
|
22
14
|
};
|
|
23
|
-
|
|
24
15
|
equal = generic({
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
name: "equal",
|
|
17
|
+
description: "Returns true if two values are semantically (deeply) equal, false otherwise",
|
|
18
|
+
default: function(a, b) {
|
|
19
|
+
return Object.is(a, b);
|
|
20
|
+
}
|
|
30
21
|
});
|
|
31
|
-
generic(equal, isAny, hasEqual, function
|
|
32
|
-
|
|
22
|
+
generic(equal, isAny, hasEqual, function(a, b) {
|
|
23
|
+
return b.equal(a);
|
|
33
24
|
});
|
|
34
|
-
generic(equal, hasEqual, isAny, function
|
|
35
|
-
|
|
25
|
+
generic(equal, hasEqual, isAny, function(a, b) {
|
|
26
|
+
return a.equal(b);
|
|
36
27
|
});
|
|
37
|
-
generic(equal,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
akeys = Object.keys(a);
|
|
45
|
-
bkeys = Object.keys(b);
|
|
46
|
-
|
|
47
|
-
if (akeys.length !== bkeys.length) {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
for (j = 0, len = akeys.length; j < len; j++) {
|
|
52
|
-
k = akeys[j];
|
|
53
|
-
|
|
54
|
-
if (!(indexOf.call(bkeys, k) >= 0 && equal(a[k], b[k]))) {
|
|
55
|
-
return false;
|
|
28
|
+
generic(equal, isTypedArray, isTypedArray, function(a, b) {
|
|
29
|
+
var i, j, ref;
|
|
30
|
+
if (isNot(a.length, b.length) || isNot(a.name, b.name)) {
|
|
31
|
+
return false;
|
|
56
32
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
33
|
+
for(i = j = 0, ref = a.length; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j){
|
|
34
|
+
if (isNot(a[i], b[i])) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
60
39
|
});
|
|
61
|
-
generic(equal,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (a.length !== b.length || a.name !== b.name) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
for (i = j = 0, ref = a.length; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {
|
|
69
|
-
if (a[i] !== b[i]) {
|
|
70
|
-
return false;
|
|
40
|
+
generic(equal, isArrayBuffer, isArrayBuffer, function(a, b) {
|
|
41
|
+
if (isNot(a.byteLength, b.byteLength)) {
|
|
42
|
+
return false;
|
|
71
43
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return true;
|
|
44
|
+
return equal(new Uint8Array(a), new Uint8Array(b));
|
|
75
45
|
});
|
|
76
|
-
generic(equal,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return equal(new Uint8Array(a), new Uint8Array(b));
|
|
46
|
+
generic(equal, isDataView, isDataView, function(a, b) {
|
|
47
|
+
if (isNot(a.byteLength, b.byteLength) || isNot(a.byteOffset, b.byteOffset)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return equal(a.buffer, b.buffer);
|
|
82
51
|
});
|
|
83
|
-
generic(equal,
|
|
84
|
-
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return equal(a.buffer, b.buffer);
|
|
52
|
+
generic(equal, isBuffer, isBuffer, function(a, b) {
|
|
53
|
+
return a.equals(b);
|
|
89
54
|
});
|
|
90
|
-
generic(equal,
|
|
91
|
-
|
|
55
|
+
generic(equal, isDate, isDate, function(a, b) {
|
|
56
|
+
return Object.is(a.getTime(), b.getTime());
|
|
92
57
|
});
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return isBoolean(x) || isNumber(x) || isString(x);
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
generic(equal, isPrimitive, isPrimitive, function (a, b) {
|
|
99
|
-
return Object.is(a, b);
|
|
58
|
+
generic(equal, isRegExp, isRegExp, function(a, b) {
|
|
59
|
+
return Object.is(a.toString(), b.toString());
|
|
100
60
|
});
|
|
101
|
-
generic(equal,
|
|
102
|
-
|
|
61
|
+
generic(equal, isError, isError, function(a, b) {
|
|
62
|
+
return equal(a.name, b.name) && equal(a.message, b.message);
|
|
103
63
|
});
|
|
104
|
-
generic(equal,
|
|
105
|
-
|
|
64
|
+
generic(equal, isSymbol, isSymbol, function(a, b) {
|
|
65
|
+
return Object.is(a.valueOf(), b.valueOf());
|
|
106
66
|
});
|
|
107
|
-
generic(equal,
|
|
108
|
-
|
|
67
|
+
generic(equal, isMap, isMap, function(a, b) {
|
|
68
|
+
var key, value, y;
|
|
69
|
+
if (isNot(a.size, b.size)) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
for (y of a){
|
|
73
|
+
[key, value] = y;
|
|
74
|
+
if (!equal(value, b.get(key))) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
109
79
|
});
|
|
110
|
-
generic(equal,
|
|
111
|
-
|
|
80
|
+
generic(equal, isSet, isSet, function(a, b) {
|
|
81
|
+
var value;
|
|
82
|
+
if (isNot(a.size, b.size)) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
for (value of a){
|
|
86
|
+
if (!b.has(value)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
112
91
|
});
|
|
113
|
-
generic(equal, isArray, isArray, function
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
for (i = j = 0, ref = a.length; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {
|
|
121
|
-
if (!equal(a[i], b[i])) {
|
|
122
|
-
return false;
|
|
92
|
+
generic(equal, isArray, isArray, function(a, b) {
|
|
93
|
+
var i, j, ref;
|
|
94
|
+
if (isNot(a.length, b.length)) {
|
|
95
|
+
return false;
|
|
123
96
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
97
|
+
for(i = j = 0, ref = a.length; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j){
|
|
98
|
+
if (!equal(a[i], b[i])) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
127
103
|
});
|
|
128
|
-
generic(equal,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
for (y of a) {
|
|
136
|
-
[key, value] = y;
|
|
137
|
-
|
|
138
|
-
if (!equal(value, b.get(key))) {
|
|
139
|
-
return false;
|
|
104
|
+
generic(equal, isObject, isObject, function(a, b) {
|
|
105
|
+
var akeys, bkeys, j, k, len;
|
|
106
|
+
if (Object.is(a, b)) {
|
|
107
|
+
return true;
|
|
140
108
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
109
|
+
akeys = Object.keys(a);
|
|
110
|
+
bkeys = Object.keys(b);
|
|
111
|
+
if (isNot(akeys.length, bkeys.length)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
for(j = 0, len = akeys.length; j < len; j++){
|
|
115
|
+
k = akeys[j];
|
|
116
|
+
if (!(indexOf.call(bkeys, k) >= 0 && equal(a[k], b[k]))) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
});
|
|
122
|
+
generic(equal, isPrimitive, isPrimitive, function(a, b) {
|
|
123
|
+
return Object.is(a, b);
|
|
144
124
|
});
|
|
145
125
|
equal = curry(binary(equal));
|
|
146
126
|
notEqual = curry(negate(equal));
|
|
147
|
-
eq = curry(function
|
|
148
|
-
|
|
127
|
+
eq = curry(function(a, b) {
|
|
128
|
+
return Object.is(a, b);
|
|
149
129
|
});
|
|
150
130
|
neq = curry(negate(eq));
|
|
151
131
|
clone = generic({
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
});
|
|
160
|
-
isPrimitive = any([
|
|
132
|
+
name: "clone",
|
|
133
|
+
description: "Creates a deep clone of an entity.",
|
|
134
|
+
// When no match, throw to alert that we cannot deliver a deep clone.
|
|
135
|
+
default: function(entity) {
|
|
136
|
+
var ref;
|
|
137
|
+
throw new Error(`clone: no match on entity ${entity != null ? (ref = entity.constructor) != null ? ref.name : void 0 : void 0}`);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
isPrimitive = any([
|
|
141
|
+
isUndefined,
|
|
142
|
+
isNumber,
|
|
143
|
+
isString,
|
|
144
|
+
isBoolean
|
|
145
|
+
]);
|
|
161
146
|
generic(clone, isPrimitive, identity);
|
|
162
|
-
generic(clone, isObject, function
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return copy;
|
|
147
|
+
generic(clone, isObject, function(original) {
|
|
148
|
+
var copy, key, value;
|
|
149
|
+
copy = new original.constructor();
|
|
150
|
+
for(key in original){
|
|
151
|
+
value = original[key];
|
|
152
|
+
copy[key] = clone(value);
|
|
153
|
+
}
|
|
154
|
+
return copy;
|
|
172
155
|
});
|
|
173
|
-
generic(clone, isArrayBuffer, function
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
156
|
+
generic(clone, isArrayBuffer, function(original) {
|
|
157
|
+
var copy;
|
|
158
|
+
copy = new original.constructor(original.byteLength);
|
|
159
|
+
new Uint8Array(copy).set(new Uint8Array(original));
|
|
160
|
+
return copy;
|
|
178
161
|
});
|
|
179
|
-
generic(clone, isTypedArray, function
|
|
180
|
-
|
|
162
|
+
generic(clone, isTypedArray, function(original) {
|
|
163
|
+
return new original.constructor(clone(original.buffer), original.byteOffset, original.length);
|
|
181
164
|
});
|
|
182
|
-
generic(clone, isDataView, function
|
|
183
|
-
|
|
184
|
-
}); // Only available within Node.js API. isBuffer will only match when Buffer is
|
|
185
|
-
// available on global. Otherwise, it returns false.
|
|
186
|
-
|
|
187
|
-
generic(clone, isBuffer, function (original) {
|
|
188
|
-
return Buffer.from(original);
|
|
165
|
+
generic(clone, isDataView, function(original) {
|
|
166
|
+
return new original.constructor(clone(original.buffer), original.byteOffset, original.byteLength);
|
|
189
167
|
});
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
generic(clone, isMap, function (original) {
|
|
203
|
-
return cloneIterator(original, function (copy, _ref) {
|
|
204
|
-
let [key, value] = _ref;
|
|
205
|
-
return copy.set(clone(key), clone(value));
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
generic(clone, isArray, function (original) {
|
|
209
|
-
return cloneIterator(original, function (copy, entry) {
|
|
210
|
-
return copy.push(clone(entry));
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
generic(clone, isSet, function (original) {
|
|
214
|
-
return cloneIterator(original, function (copy, entry) {
|
|
215
|
-
return copy.add(clone(entry));
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
generic(clone, isDate, function (original) {
|
|
219
|
-
return new original.constructor(original);
|
|
220
|
-
});
|
|
221
|
-
generic(clone, isSymbol, function (original) {
|
|
222
|
-
return original.valueOf();
|
|
223
|
-
});
|
|
224
|
-
generic(clone, isRegExp, function (flags) {
|
|
225
|
-
return function (original) {
|
|
226
|
-
var copy;
|
|
227
|
-
copy = new original.constructor(original.source, flags.exec(original));
|
|
228
|
-
copy.lastIndex = original.lastIndex;
|
|
168
|
+
// Only available within Node.js API. isBuffer will only match when Buffer is
|
|
169
|
+
// available on global. Otherwise, it returns false.
|
|
170
|
+
generic(clone, isBuffer, function(original) {
|
|
171
|
+
return Buffer.from(original);
|
|
172
|
+
});
|
|
173
|
+
cloneIterator = function(original, add) {
|
|
174
|
+
var copy, entry;
|
|
175
|
+
copy = new original.constructor();
|
|
176
|
+
for (entry of original){
|
|
177
|
+
add(copy, entry);
|
|
178
|
+
}
|
|
229
179
|
return copy;
|
|
230
|
-
|
|
180
|
+
};
|
|
181
|
+
generic(clone, isMap, function(original) {
|
|
182
|
+
return cloneIterator(original, function(copy, [key, value]) {
|
|
183
|
+
return copy.set(clone(key), clone(value));
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
generic(clone, isArray, function(original) {
|
|
187
|
+
return cloneIterator(original, function(copy, entry) {
|
|
188
|
+
return copy.push(clone(entry));
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
generic(clone, isSet, function(original) {
|
|
192
|
+
return cloneIterator(original, function(copy, entry) {
|
|
193
|
+
return copy.add(clone(entry));
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
generic(clone, isDate, function(original) {
|
|
197
|
+
return new original.constructor(original);
|
|
198
|
+
});
|
|
199
|
+
generic(clone, isSymbol, function(original) {
|
|
200
|
+
return original.valueOf();
|
|
201
|
+
});
|
|
202
|
+
generic(clone, isRegExp, function(flags) {
|
|
203
|
+
return function(original) {
|
|
204
|
+
var copy;
|
|
205
|
+
copy = new original.constructor(original.source, flags.exec(original));
|
|
206
|
+
copy.lastIndex = original.lastIndex;
|
|
207
|
+
return copy;
|
|
208
|
+
};
|
|
231
209
|
}(/\w*$/));
|
|
232
|
-
generic(clone, isFunction, function
|
|
233
|
-
|
|
210
|
+
generic(clone, isFunction, function(original) {
|
|
211
|
+
throw new Error("clone: does not clone Function");
|
|
234
212
|
});
|
|
235
|
-
generic(clone, isWeakMap, function
|
|
236
|
-
|
|
213
|
+
generic(clone, isWeakMap, function(original) {
|
|
214
|
+
throw new Error("clone: does not clone WeakMap");
|
|
237
215
|
});
|
|
238
|
-
generic(clone, isError, function
|
|
239
|
-
|
|
216
|
+
generic(clone, isError, function(original) {
|
|
217
|
+
throw new Error("clone: does not clone Error");
|
|
240
218
|
});
|
|
241
219
|
size = generic({
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
220
|
+
name: "size",
|
|
221
|
+
description: "Returns the size of a given entity, if it has one.",
|
|
222
|
+
default: function(x) {
|
|
223
|
+
throw new TypeError(`size: not valid for type ${x.constructor}`);
|
|
224
|
+
}
|
|
247
225
|
});
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return x.length != null;
|
|
226
|
+
hasLength = function(x) {
|
|
227
|
+
return x.length != null;
|
|
251
228
|
};
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
return x.byteLength != null;
|
|
229
|
+
hasByteLength = function(x) {
|
|
230
|
+
return x.byteLength != null;
|
|
255
231
|
};
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
return x.size != null;
|
|
232
|
+
hasSize = function(x) {
|
|
233
|
+
return x.size != null;
|
|
259
234
|
};
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return x.byteLength;
|
|
235
|
+
generic(size, hasByteLength, function(x) {
|
|
236
|
+
return x.byteLength;
|
|
263
237
|
});
|
|
264
|
-
generic(size, isObject, function
|
|
265
|
-
|
|
238
|
+
generic(size, isObject, function(x) {
|
|
239
|
+
return Object.keys(x).length;
|
|
266
240
|
});
|
|
267
|
-
generic(size, hasSize, function
|
|
268
|
-
|
|
241
|
+
generic(size, hasSize, function(x) {
|
|
242
|
+
return x.size;
|
|
269
243
|
});
|
|
270
|
-
generic(size, hasLength, function
|
|
271
|
-
|
|
244
|
+
generic(size, hasLength, function(x) {
|
|
245
|
+
return x.length;
|
|
272
246
|
});
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
return size(x) === 0;
|
|
247
|
+
isEmpty = function(x) {
|
|
248
|
+
return Object.is(size(x), 0);
|
|
276
249
|
};
|
|
250
|
+
export { equal, notEqual, eq, neq, clone, size, isEmpty }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3ZhbHVlLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLEtBQUEsRUFBQSxhQUFBLEVBQUEsRUFBQSxFQUFBLEtBQUEsRUFBQSxhQUFBLEVBQUEsUUFBQSxFQUFBLFNBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxFQUFBLEtBQUEsRUFBQSxXQUFBLEVBQUEsR0FBQSxFQUFBLFFBQUEsRUFBQSxJQUFBO0VBQUE7O0FBQUEsT0FBQTtFQUFTLFFBQVQ7RUFBbUIsS0FBbkI7RUFBMEIsTUFBMUI7Q0FBQSxNQUFBOztBQUNBLE9BQUE7RUFBUyxHQUFUO0VBQWMsTUFBZDtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFTLE9BQVQ7Q0FBQSxNQUFBOztBQUVBLE9BQUE7RUFDRSxXQURGO0VBQ2UsS0FEZjtFQUVFLFFBRkY7RUFFWSxRQUZaO0VBR0UsUUFIRjtFQUdZLGFBSFo7RUFHMkIsWUFIM0I7RUFHeUMsVUFIekM7RUFJRSxLQUpGO0VBSVMsT0FKVDtFQUlrQixRQUpsQjtFQUk0QixLQUo1QjtFQUtFLFNBTEY7RUFLYSxNQUxiO0VBS3FCLFFBTHJCO0VBSytCLFFBTC9CO0VBTUUsVUFORjtFQU1jLFNBTmQ7RUFNeUIsT0FOekI7Q0FBQSxNQUFBOztBQVNBLFFBQUEsR0FBVyxDQUFDLENBQUQsQ0FBQSxHQUFBO1NBQU87QUFBUDs7QUFDWCxLQUFBLEdBQVEsUUFBQSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUE7U0FBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsQ0FBVixFQUFhLENBQWI7QUFBWDs7QUFDUixXQUFBLEdBQWMsUUFBQSxDQUFDLENBQUQsQ0FBQTtTQUFPLENBQUMsU0FBQSxDQUFVLENBQVYsQ0FBRCxDQUFBLElBQWlCLENBQUMsUUFBQSxDQUFTLENBQVQsQ0FBRCxDQUFqQixJQUFpQyxDQUFDLFFBQUEsQ0FBUyxDQUFULENBQUQ7QUFBeEM7O0FB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Q0FBQTtTQUFPLENBQUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxDQUFaLENBQUQsQ0FBZSxDQUFDO0FBQXZCLENBQXhCOztBQUNBLE9BQUEsQ0FBUSxJQUFSLEVBQWMsT0FBZCxFQUF1QixRQUFBLENBQUMsQ0FBRCxDQUFBO1NBQU8sQ0FBQyxDQUFDO0FBQVQsQ0FBdkI7O0FBQ0EsT0FBQSxDQUFRLElBQVIsRUFBYyxTQUFkLEVBQXlCLFFBQUEsQ0FBQyxDQUFELENBQUE7U0FBTyxDQUFDLENBQUM7QUFBVCxDQUF6Qjs7QUFFQSxPQUFBLEdBQVUsUUFBQSxDQUFDLENBQUQsQ0FBQTtTQUFPLE1BQU0sQ0FBQyxFQUFQLENBQVcsSUFBQSxDQUFLLENBQUwsQ0FBWCxFQUFvQixDQUFwQjtBQUFQOztBQUVWLE9BQUE7RUFDRSxLQURGO0VBRUUsUUFGRjtFQUdFLEVBSEY7RUFJRSxHQUpGO0VBS0UsS0FMRjtFQU1FLElBTkY7RUFPRSxPQVBGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaWRlbnRpdHksIGN1cnJ5LCBiaW5hcnkgfSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQgeyBhbnksIG5lZ2F0ZSB9IGZyb20gXCIuL3ByZWRpY2F0ZVwiXG5pbXBvcnQgeyBnZW5lcmljIH0gZnJvbSBcIi4vZ2VuZXJpY1wiXG5cbmltcG9ydCB7XG4gIGlzVW5kZWZpbmVkLCBpc0FueVxuICBpc1N5bWJvbCwgaXNSZWdFeHAsXG4gIGlzQnVmZmVyLCBpc0FycmF5QnVmZmVyLCBpc1R5cGVkQXJyYXksIGlzRGF0YVZpZXcsXG4gIGlzTWFwLCBpc0FycmF5LCBpc09iamVjdCwgaXNTZXQsXG4gIGlzQm9vbGVhbiwgaXNEYXRlLCBpc051bWJlciwgaXNTdHJpbmcsXG4gIGlzRnVuY3Rpb24sIGlzV2Vha01hcCwgaXNFcnJvclxufSBmcm9tIFwiLi90eXBlXCJcblxuaGFzRXF1YWwgPSAoYSkgPT4gYT8uZXF1YWw/XG5pc05vdCA9IChhLCBiKSAtPiAhT2JqZWN0LmlzIGEsIGJcbmlzUHJpbWl0aXZlID0gKHgpIC0+IChpc0Jvb2xlYW4geCkgfHwgKGlzTnVtYmVyIHgpIHx8IChpc1N0cmluZyB4KVxuXG5lcXVhbCA9IGdlbmVyaWNcbiAgbmFtZTogXCJlcXVhbFwiXG4gIGRlc2NyaXB0aW9uOiBcIlJldHVybnMgdHJ1ZSBpZiB0d28gdmFsdWVzIGFyZSBcbiAgICBzZW1hbnRpY2FsbHkgKGRlZXBseSkgZXF1YWwsIGZhbHNlIG90aGVyd2lzZVwiXG4gIGRlZmF1bHQ6IChhLCBiKSAtPiBPYmplY3QuaXMgYSwgYlxuXG5nZW5lcmljIGVxdWFsLCBpc0FueSwgaGFzRXF1YWwsIChhLCBiKSAtPlxuICBiLmVxdWFsIGFcblxuZ2VuZXJpYyBlcXVhbCwgaGFzRXF1YWwsIGlzQW55LCAoYSwgYikgLT5cbiAgYS5lcXVhbCBiXG5cbmdlbmVyaWMgZXF1YWwsIGlzVHlwZWRBcnJheSwgaXNUeXBlZEFycmF5LCAoYSwgYikgLT5cbiAgaWYgKGlzTm90IGEubGVuZ3RoLCBiLmxlbmd0aCkgfHwgKGlzTm90IGEubmFtZSwgYi5uYW1lKVxuICAgIHJldHVybiBmYWxzZVxuICBmb3IgaSBpbiBbMC4uYS5sZW5ndGhdXG4gICAgaWYgaXNOb3QgYVtpXSwgYltpXVxuICAgICAgcmV0dXJuIGZhbHNlXG4gIHRydWVcblxuZ2VuZXJpYyBlcXVhbCwgaXNBcnJheUJ1ZmZlciwgaXNBcnJheUJ1ZmZlciwgKGEsIGIpIC0+XG4gIGlmIGlzTm90IGEuYnl0ZUxlbmd0aCwgYi5ieXRlTGVuZ3RoXG4gICAgcmV0dXJuIGZhbHNlXG4gIGVxdWFsIChuZXcgVWludDhBcnJheSBhKSwgKG5ldyBVaW50OEFycmF5IGIpXG5cbmdlbmVyaWMgZXF1YWwsIGlzRGF0YVZpZXcsIGlzRGF0YVZpZXcsIChhLCBiKSAtPlxuICBpZiAoaXNOb3QgYS5ieXRlTGVuZ3RoLCBiLmJ5dGVMZW5ndGgpIHx8IChpc05vdCBhLmJ5dGVPZmZzZXQsIGIuYnl0ZU9mZnNldClcbiAgICByZXR1cm4gZmFsc2VcbiAgZXF1YWwgYS5idWZmZXIsIGIuYnVmZmVyXG5cbmdlbmVyaWMgZXF1YWwsIGlzQnVmZmVyLCBpc0J1ZmZlciwgKGEsIGIpIC0+XG4gIGEuZXF1YWxzIGJcblxuZ2VuZXJpYyBlcXVhbCwgaXNEYXRlLCBpc0RhdGUsIChhLCBiKSAtPlxuICBPYmplY3QuaXMgYS5nZXRUaW1lKCksIGIuZ2V0VGltZSgpXG5cbmdlbmVyaWMgZXF1YWwsIGlzUmVnRXhwLCBpc1JlZ0V4cCwgKGEsIGIpIC0+XG4gIE9iamVjdC5pcyBhLnRvU3RyaW5nKCksIGIudG9TdHJpbmcoKVxuXG5nZW5lcmljIGVxdWFsLCBpc0Vycm9yLCBpc0Vycm9yLCAoYSwgYikgLT5cbiAgKGVxdWFsIGEubmFtZSwgYi5uYW1lKSAmJiAoZXF1YWwgYS5tZXNzYWdlLCBiLm1lc3NhZ2UpXG5cbmdlbmVyaWMgZXF1YWwsIGlzU3ltYm9sLCBpc1N5bWJvbCwgKGEsIGIpIC0+XG4gIE9iamVjdC5pcyBhLnZhbHVlT2YoKSwgYi52YWx1ZU9mKClcblxuZ2VuZXJpYyBlcXVhbCwgaXNNYXAsIGlzTWFwLCAoYSwgYikgLT5cbiAgaWYgaXNOb3QgYS5zaXplLCBiLnNpemVcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIFtrZXksIHZhbHVlXSBmcm9tIGFcbiAgICBpZiAhIGVxdWFsIHZhbHVlLCAoYi5nZXQga2V5KVxuICAgICAgcmV0dXJuIGZhbHNlXG4gIHRydWVcblxuZ2VuZXJpYyBlcXVhbCwgaXNTZXQsIGlzU2V0LCAoYSwgYikgLT5cbiAgaWYgaXNOb3QgYS5zaXplLCBiLnNpemVcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIHZhbHVlIGZyb20gYVxuICAgIGlmICEgYi5oYXMgdmFsdWVcbiAgICAgIHJldHVybiBmYWxzZVxuICB0cnVlXG5cbmdlbmVyaWMgZXF1YWwsIGlzQXJyYXksIGlzQXJyYXksIChhLCBiKSAtPlxuICBpZiBpc05vdCBhLmxlbmd0aCwgYi5sZW5ndGhcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIGkgaW4gWzAuLmEubGVuZ3RoXVxuICAgIGlmICEgZXF1YWwgYVtpXSwgYltpXVxuICAgICAgcmV0dXJuIGZhbHNlXG4gIHRydWVcblxuZ2VuZXJpYyBlcXVhbCwgaXNPYmplY3QsIGlzT2JqZWN0LCAoYSwgYikgLT5cbiAgcmV0dXJuIHRydWUgaWYgT2JqZWN0LmlzIGEsIGJcbiAgYWtleXMgPSBPYmplY3Qua2V5cyBhXG4gIGJrZXlzID0gT2JqZWN0LmtleXMgYlxuICByZXR1cm4gZmFsc2UgaWYgaXNOb3QgYWtleXMubGVuZ3RoLCBia2V5cy5sZW5ndGhcbiAgZm9yIGsgaW4gYWtleXMgd2hlbiAhKGsgaW4gYmtleXMgJiYgZXF1YWwgYVtrXSwgYltrXSlcbiAgICByZXR1cm4gZmFsc2VcbiAgdHJ1ZVxuXG5nZW5lcmljIGVxdWFsLCBpc1ByaW1pdGl2ZSwgaXNQcmltaXRpdmUsIChhLCBiKSAtPlxuICBPYmplY3QuaXMgYSwgYlxuXG5lcXVhbCA9IGN1cnJ5IGJpbmFyeSBlcXVhbFxuXG5ub3RFcXVhbCA9IGN1cnJ5IG5lZ2F0ZSBlcXVhbFxuXG5lcSA9IGN1cnJ5IChhLCBiKSAtPiBPYmplY3QuaXMgYSwgYlxuXG5uZXEgPSBjdXJyeSBuZWdhdGUgZXFcblxuY2xvbmUgPSBnZW5lcmljXG4gIG5hbWU6IFwiY2xvbmVcIlxuICBkZXNjcmlwdGlvbjogXCJDcmVhdGVzIGEgZGVlcCBjbG9uZSBvZiBhbiBlbnRpdHkuXCJcbiAgIyBXaGVuIG5vIG1hdGNoLCB0aHJvdyB0byBhbGVydCB0aGF0IHdlIGNhbm5vdCBkZWxpdmVyIGEgZGVlcCBjbG9uZS5cbiAgZGVmYXVsdDogKGVudGl0eSkgLT5cbiAgICB0aHJvdyBuZXcgRXJyb3IgXCJjbG9uZTogbm8gbWF0Y2ggb24gZW50aXR5ICN7ZW50aXR5Py5jb25zdHJ1Y3Rvcj8ubmFtZX1cIlxuXG5pc1ByaW1pdGl2ZSA9IGFueSBbXG4gIGlzVW5kZWZpbmVkXG4gIGlzTnVtYmVyXG4gIGlzU3RyaW5nXG4gIGlzQm9vbGVhblxuXVxuXG5nZW5lcmljIGNsb25lLCBpc1ByaW1pdGl2ZSwgaWRlbnRpdHlcblxuZ2VuZXJpYyBjbG9uZSwgaXNPYmplY3QsIChvcmlnaW5hbCkgLT5cbiAgY29weSA9IG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvcigpXG4gIGZvciBrZXksIHZhbHVlIG9mIG9yaWdpbmFsXG4gICAgY29weVtrZXldID0gY2xvbmUgdmFsdWVcbiAgY29weVxuXG5nZW5lcmljIGNsb25lLCBpc0FycmF5QnVmZmVyLCAob3JpZ2luYWwpIC0+XG4gIGNvcHkgPSBuZXcgb3JpZ2luYWwuY29uc3RydWN0b3Igb3JpZ2luYWwuYnl0ZUxlbmd0aFxuICBuZXcgVWludDhBcnJheShjb3B5KS5zZXQgbmV3IFVpbnQ4QXJyYXkgb3JpZ2luYWxcbiAgY29weVxuXG5nZW5lcmljIGNsb25lLCBpc1R5cGVkQXJyYXksIChvcmlnaW5hbCkgLT5cbiAgbmV3IG9yaWdpbmFsLmNvbnN0cnVjdG9yIChjbG9uZSBvcmlnaW5hbC5idWZmZXIpLFxuICAgIG9yaWdpbmFsLmJ5dGVPZmZzZXQsIG9yaWdpbmFsLmxlbmd0aFxuXG5nZW5lcmljIGNsb25lLCBpc0RhdGFWaWV3LCAob3JpZ2luYWwpIC0+XG4gIG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvciAoY2xvbmUgb3JpZ2luYWwuYnVmZmVyKSxcbiAgICBvcmlnaW5hbC5ieXRlT2Zmc2V0LCBvcmlnaW5hbC5ieXRlTGVuZ3RoXG5cbiMgT25seSBhdmFpbGFibGUgd2l0aGluIE5vZGUuanMgQVBJLiBpc0J1ZmZlciB3aWxsIG9ubHkgbWF0Y2ggd2hlbiBCdWZmZXIgaXNcbiMgYXZhaWxhYmxlIG9uIGdsb2JhbC4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIGZhbHNlLlxuZ2VuZXJpYyBjbG9uZSwgaXNCdWZmZXIsIChvcmlnaW5hbCkgLT5cbiAgQnVmZmVyLmZyb20gb3JpZ2luYWxcblxuY2xvbmVJdGVyYXRvciA9IChvcmlnaW5hbCwgYWRkKSAtPlxuICBjb3B5ID0gbmV3IG9yaWdpbmFsLmNvbnN0cnVjdG9yKClcbiAgYWRkIGNvcHksIGVudHJ5IGZvciBlbnRyeSBmcm9tIG9yaWdpbmFsXG4gIGNvcHlcblxuZ2VuZXJpYyBjbG9uZSwgaXNNYXAsIChvcmlnaW5hbCkgLT5cbiAgY2xvbmVJdGVyYXRvciBvcmlnaW5hbCwgKGNvcHksIFtrZXksIHZhbHVlXSkgLT5cbiAgICBjb3B5LnNldCAoY2xvbmUga2V5KSwgKGNsb25lIHZhbHVlKVxuXG5nZW5lcmljIGNsb25lLCBpc0FycmF5LCAob3JpZ2luYWwpIC0+XG4gIGNsb25lSXRlcmF0b3Igb3JpZ2luYWwsIChjb3B5LCBlbnRyeSkgLT4gY29weS5wdXNoIGNsb25lIGVudHJ5XG5cbmdlbmVyaWMgY2xvbmUsIGlzU2V0LCAob3JpZ2luYWwpIC0+XG4gIGNsb25lSXRlcmF0b3Igb3JpZ2luYWwsIChjb3B5LCBlbnRyeSkgLT4gY29weS5hZGQgY2xvbmUgZW50cnlcblxuZ2VuZXJpYyBjbG9uZSwgaXNEYXRlLCAob3JpZ2luYWwpIC0+XG4gIG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvciBvcmlnaW5hbFxuXG5nZW5lcmljIGNsb25lLCBpc1N5bWJvbCwgKG9yaWdpbmFsKSAtPlxuICBvcmlnaW5hbC52YWx1ZU9mKClcblxuZ2VuZXJpYyBjbG9uZSwgaXNSZWdFeHAsIGRvIChmbGFncz0vXFx3KiQvKSAtPlxuICAob3JpZ2luYWwpIC0+XG4gICAgY29weSA9IG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvciBvcmlnaW5hbC5zb3VyY2UsIChmbGFncy5leGVjIG9yaWdpbmFsKVxuICAgIGNvcHkubGFzdEluZGV4ID0gb3JpZ2luYWwubGFzdEluZGV4XG4gICAgY29weVxuXG5nZW5lcmljIGNsb25lLCBpc0Z1bmN0aW9uLCAob3JpZ2luYWwpIC0+XG4gIHRocm93IG5ldyBFcnJvciBcImNsb25lOiBkb2VzIG5vdCBjbG9uZSBGdW5jdGlvblwiXG5cbmdlbmVyaWMgY2xvbmUsIGlzV2Vha01hcCwgKG9yaWdpbmFsKSAtPlxuICB0aHJvdyBuZXcgRXJyb3IgXCJjbG9uZTogZG9lcyBub3QgY2xvbmUgV2Vha01hcFwiXG5cbmdlbmVyaWMgY2xvbmUsIGlzRXJyb3IsIChvcmlnaW5hbCkgLT5cbiAgdGhyb3cgbmV3IEVycm9yIFwiY2xvbmU6IGRvZXMgbm90IGNsb25lIEVycm9yXCJcblxuc2l6ZSA9IGdlbmVyaWNcbiAgbmFtZTogXCJzaXplXCJcbiAgZGVzY3JpcHRpb246IFwiUmV0dXJucyB0aGUgc2l6ZSBvZiBhIGdpdmVuIGVudGl0eSwgaWYgaXQgaGFzIG9uZS5cIlxuICBkZWZhdWx0OiAoeCkgLT5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yIFwic2l6ZTogbm90IHZhbGlkIGZvciB0eXBlICN7eC5jb25zdHJ1Y3Rvcn1cIlxuXG5oYXNMZW5ndGggPSAoeCkgLT4geC5sZW5ndGg/XG5oYXNCeXRlTGVuZ3RoID0gKHgpIC0+IHguYnl0ZUxlbmd0aD9cbmhhc1NpemUgPSAoeCkgLT4geC5zaXplP1xuXG5nZW5lcmljIHNpemUsIGhhc0J5dGVMZW5ndGgsICh4KSAtPiB4LmJ5dGVMZW5ndGhcbmdlbmVyaWMgc2l6ZSwgaXNPYmplY3QsICh4KSAtPiAoT2JqZWN0LmtleXMgeCkubGVuZ3RoXG5nZW5lcmljIHNpemUsIGhhc1NpemUsICh4KSAtPiB4LnNpemVcbmdlbmVyaWMgc2l6ZSwgaGFzTGVuZ3RoLCAoeCkgLT4geC5sZW5ndGhcblxuaXNFbXB0eSA9ICh4KSAtPiBPYmplY3QuaXMgKHNpemUgeCksIDBcblxuZXhwb3J0IHtcbiAgZXF1YWxcbiAgbm90RXF1YWxcbiAgZXFcbiAgbmVxXG4gIGNsb25lXG4gIHNpemVcbiAgaXNFbXB0eVxufVxuIl19
|
|
251
|
+
//# sourceURL=/@dashkite/joy/src/value.coffee
|
|
277
252
|
|
|
278
|
-
export { equal, notEqual, eq, neq, clone, size, isEmpty };
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9AZGFzaGtpdGUvam95L3NyYy92YWx1ZS5jb2ZmZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaWRlbnRpdHksIGN1cnJ5LCBiaW5hcnkgfSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQgeyBhbnksIG5lZ2F0ZSB9IGZyb20gXCIuL3ByZWRpY2F0ZVwiXG5pbXBvcnQgeyBnZW5lcmljIH0gZnJvbSBcIi4vZ2VuZXJpY1wiXG5cbmltcG9ydCB7XG4gIGlzVW5kZWZpbmVkLCBpc0FueVxuICBpc1N5bWJvbCwgaXNSZWdFeHAsXG4gIGlzQnVmZmVyLCBpc0FycmF5QnVmZmVyLCBpc1R5cGVkQXJyYXksIGlzRGF0YVZpZXcsXG4gIGlzTWFwLCBpc0FycmF5LCBpc09iamVjdCwgaXNTZXQsXG4gIGlzQm9vbGVhbiwgaXNEYXRlLCBpc051bWJlciwgaXNTdHJpbmcsXG4gIGlzRnVuY3Rpb24sIGlzV2Vha01hcCwgaXNFcnJvclxufSBmcm9tIFwiLi90eXBlXCJcblxuaGFzRXF1YWwgPSAoYSkgPT4gYT8uZXF1YWw/XG5pc05vdCA9IChhLCBiKSAtPiAhT2JqZWN0LmlzIGEsIGJcbmlzUHJpbWl0aXZlID0gKHgpIC0+IChpc0Jvb2xlYW4geCkgfHwgKGlzTnVtYmVyIHgpIHx8IChpc1N0cmluZyB4KVxuXG5lcXVhbCA9IGdlbmVyaWNcbiAgbmFtZTogXCJlcXVhbFwiXG4gIGRlc2NyaXB0aW9uOiBcIlJldHVybnMgdHJ1ZSBpZiB0d28gdmFsdWVzIGFyZSBcbiAgICBzZW1hbnRpY2FsbHkgKGRlZXBseSkgZXF1YWwsIGZhbHNlIG90aGVyd2lzZVwiXG4gIGRlZmF1bHQ6IChhLCBiKSAtPiBPYmplY3QuaXMgYSwgYlxuXG5nZW5lcmljIGVxdWFsLCBpc0FueSwgaGFzRXF1YWwsIChhLCBiKSAtPlxuICBiLmVxdWFsIGFcblxuZ2VuZXJpYyBlcXVhbCwgaGFzRXF1YWwsIGlzQW55LCAoYSwgYikgLT5cbiAgYS5lcXVhbCBiXG5cbmdlbmVyaWMgZXF1YWwsIGlzVHlwZWRBcnJheSwgaXNUeXBlZEFycmF5LCAoYSwgYikgLT5cbiAgaWYgKGlzTm90IGEubGVuZ3RoLCBiLmxlbmd0aCkgfHwgKGlzTm90IGEubmFtZSwgYi5uYW1lKVxuICAgIHJldHVybiBmYWxzZVxuICBmb3IgaSBpbiBbMC4uYS5sZW5ndGhdXG4gICAgaWYgaXNOb3QgYVtpXSwgYltpXVxuICAgICAgcmV0dXJuIGZhbHNlXG4gIHRydWVcblxuZ2VuZXJpYyBlcXVhbCwgaXNBcnJheUJ1ZmZlciwgaXNBcnJheUJ1ZmZlciwgKGEsIGIpIC0+XG4gIGlmIGlzTm90IGEuYnl0ZUxlbmd0aCwgYi5ieXRlTGVuZ3RoXG4gICAgcmV0dXJuIGZhbHNlXG4gIGVxdWFsIChuZXcgVWludDhBcnJheSBhKSwgKG5ldyBVaW50OEFycmF5IGIpXG5cbmdlbmVyaWMgZXF1YWwsIGlzRGF0YVZpZXcsIGlzRGF0YVZpZXcsIChhLCBiKSAtPlxuICBpZiAoaXNOb3QgYS5ieXRlTGVuZ3RoLCBiLmJ5dGVMZW5ndGgpIHx8IChpc05vdCBhLmJ5dGVPZmZzZXQsIGIuYnl0ZU9mZnNldClcbiAgICByZXR1cm4gZmFsc2VcbiAgZXF1YWwgYS5idWZmZXIsIGIuYnVmZmVyXG5cbmdlbmVyaWMgZXF1YWwsIGlzQnVmZmVyLCBpc0J1ZmZlciwgKGEsIGIpIC0+XG4gIGEuZXF1YWxzIGJcblxuZ2VuZXJpYyBlcXVhbCwgaXNEYXRlLCBpc0RhdGUsIChhLCBiKSAtPlxuICBPYmplY3QuaXMgYS5nZXRUaW1lKCksIGIuZ2V0VGltZSgpXG5cbmdlbmVyaWMgZXF1YWwsIGlzUmVnRXhwLCBpc1JlZ0V4cCwgKGEsIGIpIC0+XG4gIE9iamVjdC5pcyBhLnRvU3RyaW5nKCksIGIudG9TdHJpbmcoKVxuXG5nZW5lcmljIGVxdWFsLCBpc0Vycm9yLCBpc0Vycm9yLCAoYSwgYikgLT5cbiAgKGVxdWFsIGEubmFtZSwgYi5uYW1lKSAmJiAoZXF1YWwgYS5tZXNzYWdlLCBiLm1lc3NhZ2UpXG5cbmdlbmVyaWMgZXF1YWwsIGlzU3ltYm9sLCBpc1N5bWJvbCwgKGEsIGIpIC0+XG4gIE9iamVjdC5pcyBhLnZhbHVlT2YoKSwgYi52YWx1ZU9mKClcblxuZ2VuZXJpYyBlcXVhbCwgaXNNYXAsIGlzTWFwLCAoYSwgYikgLT5cbiAgaWYgaXNOb3QgYS5zaXplLCBiLnNpemVcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIFtrZXksIHZhbHVlXSBmcm9tIGFcbiAgICBpZiAhIGVxdWFsIHZhbHVlLCAoYi5nZXQga2V5KVxuICAgICAgcmV0dXJuIGZhbHNlXG4gIHRydWVcblxuZ2VuZXJpYyBlcXVhbCwgaXNTZXQsIGlzU2V0LCAoYSwgYikgLT5cbiAgaWYgaXNOb3QgYS5zaXplLCBiLnNpemVcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIHZhbHVlIGZyb20gYVxuICAgIGlmICEgYi5oYXMgdmFsdWVcbiAgICAgIHJldHVybiBmYWxzZVxuICB0cnVlXG5cbmdlbmVyaWMgZXF1YWwsIGlzQXJyYXksIGlzQXJyYXksIChhLCBiKSAtPlxuICBpZiBpc05vdCBhLmxlbmd0aCwgYi5sZW5ndGhcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIGkgaW4gWzAuLmEubGVuZ3RoXVxuICAgIGlmICEgZXF1YWwgYVtpXSwgYltpXVxuICAgICAgcmV0dXJuIGZhbHNlXG4gIHRydWVcblxuZ2VuZXJpYyBlcXVhbCwgaXNPYmplY3QsIGlzT2JqZWN0LCAoYSwgYikgLT5cbiAgcmV0dXJuIHRydWUgaWYgT2JqZWN0LmlzIGEsIGJcbiAgYWtleXMgPSBPYmplY3Qua2V5cyBhXG4gIGJrZXlzID0gT2JqZWN0LmtleXMgYlxuICByZXR1cm4gZmFsc2UgaWYgaXNOb3QgYWtleXMubGVuZ3RoLCBia2V5cy5sZW5ndGhcbiAgZm9yIGsgaW4gYWtleXMgd2hlbiAhKGsgaW4gYmtleXMgJiYgZXF1YWwgYVtrXSwgYltrXSlcbiAgICByZXR1cm4gZmFsc2VcbiAgdHJ1ZVxuXG5nZW5lcmljIGVxdWFsLCBpc1ByaW1pdGl2ZSwgaXNQcmltaXRpdmUsIChhLCBiKSAtPlxuICBPYmplY3QuaXMgYSwgYlxuXG5lcXVhbCA9IGN1cnJ5IGJpbmFyeSBlcXVhbFxuXG5ub3RFcXVhbCA9IGN1cnJ5IG5lZ2F0ZSBlcXVhbFxuXG5lcSA9IGN1cnJ5IChhLCBiKSAtPiBPYmplY3QuaXMgYSwgYlxuXG5uZXEgPSBjdXJyeSBuZWdhdGUgZXFcblxuY2xvbmUgPSBnZW5lcmljXG4gIG5hbWU6IFwiY2xvbmVcIlxuICBkZXNjcmlwdGlvbjogXCJDcmVhdGVzIGEgZGVlcCBjbG9uZSBvZiBhbiBlbnRpdHkuXCJcbiAgIyBXaGVuIG5vIG1hdGNoLCB0aHJvdyB0byBhbGVydCB0aGF0IHdlIGNhbm5vdCBkZWxpdmVyIGEgZGVlcCBjbG9uZS5cbiAgZGVmYXVsdDogKGVudGl0eSkgLT5cbiAgICB0aHJvdyBuZXcgRXJyb3IgXCJjbG9uZTogbm8gbWF0Y2ggb24gZW50aXR5ICN7ZW50aXR5Py5jb25zdHJ1Y3Rvcj8ubmFtZX1cIlxuXG5pc1ByaW1pdGl2ZSA9IGFueSBbXG4gIGlzVW5kZWZpbmVkXG4gIGlzTnVtYmVyXG4gIGlzU3RyaW5nXG4gIGlzQm9vbGVhblxuXVxuXG5nZW5lcmljIGNsb25lLCBpc1ByaW1pdGl2ZSwgaWRlbnRpdHlcblxuZ2VuZXJpYyBjbG9uZSwgaXNPYmplY3QsIChvcmlnaW5hbCkgLT5cbiAgY29weSA9IG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvcigpXG4gIGZvciBrZXksIHZhbHVlIG9mIG9yaWdpbmFsXG4gICAgY29weVtrZXldID0gY2xvbmUgdmFsdWVcbiAgY29weVxuXG5nZW5lcmljIGNsb25lLCBpc0FycmF5QnVmZmVyLCAob3JpZ2luYWwpIC0+XG4gIGNvcHkgPSBuZXcgb3JpZ2luYWwuY29uc3RydWN0b3Igb3JpZ2luYWwuYnl0ZUxlbmd0aFxuICBuZXcgVWludDhBcnJheShjb3B5KS5zZXQgbmV3IFVpbnQ4QXJyYXkgb3JpZ2luYWxcbiAgY29weVxuXG5nZW5lcmljIGNsb25lLCBpc1R5cGVkQXJyYXksIChvcmlnaW5hbCkgLT5cbiAgbmV3IG9yaWdpbmFsLmNvbnN0cnVjdG9yIChjbG9uZSBvcmlnaW5hbC5idWZmZXIpLFxuICAgIG9yaWdpbmFsLmJ5dGVPZmZzZXQsIG9yaWdpbmFsLmxlbmd0aFxuXG5nZW5lcmljIGNsb25lLCBpc0RhdGFWaWV3LCAob3JpZ2luYWwpIC0+XG4gIG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvciAoY2xvbmUgb3JpZ2luYWwuYnVmZmVyKSxcbiAgICBvcmlnaW5hbC5ieXRlT2Zmc2V0LCBvcmlnaW5hbC5ieXRlTGVuZ3RoXG5cbiMgT25seSBhdmFpbGFibGUgd2l0aGluIE5vZGUuanMgQVBJLiBpc0J1ZmZlciB3aWxsIG9ubHkgbWF0Y2ggd2hlbiBCdWZmZXIgaXNcbiMgYXZhaWxhYmxlIG9uIGdsb2JhbC4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIGZhbHNlLlxuZ2VuZXJpYyBjbG9uZSwgaXNCdWZmZXIsIChvcmlnaW5hbCkgLT5cbiAgQnVmZmVyLmZyb20gb3JpZ2luYWxcblxuY2xvbmVJdGVyYXRvciA9IChvcmlnaW5hbCwgYWRkKSAtPlxuICBjb3B5ID0gbmV3IG9yaWdpbmFsLmNvbnN0cnVjdG9yKClcbiAgYWRkIGNvcHksIGVudHJ5IGZvciBlbnRyeSBmcm9tIG9yaWdpbmFsXG4gIGNvcHlcblxuZ2VuZXJpYyBjbG9uZSwgaXNNYXAsIChvcmlnaW5hbCkgLT5cbiAgY2xvbmVJdGVyYXRvciBvcmlnaW5hbCwgKGNvcHksIFtrZXksIHZhbHVlXSkgLT5cbiAgICBjb3B5LnNldCAoY2xvbmUga2V5KSwgKGNsb25lIHZhbHVlKVxuXG5nZW5lcmljIGNsb25lLCBpc0FycmF5LCAob3JpZ2luYWwpIC0+XG4gIGNsb25lSXRlcmF0b3Igb3JpZ2luYWwsIChjb3B5LCBlbnRyeSkgLT4gY29weS5wdXNoIGNsb25lIGVudHJ5XG5cbmdlbmVyaWMgY2xvbmUsIGlzU2V0LCAob3JpZ2luYWwpIC0+XG4gIGNsb25lSXRlcmF0b3Igb3JpZ2luYWwsIChjb3B5LCBlbnRyeSkgLT4gY29weS5hZGQgY2xvbmUgZW50cnlcblxuZ2VuZXJpYyBjbG9uZSwgaXNEYXRlLCAob3JpZ2luYWwpIC0+XG4gIG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvciBvcmlnaW5hbFxuXG5nZW5lcmljIGNsb25lLCBpc1N5bWJvbCwgKG9yaWdpbmFsKSAtPlxuICBvcmlnaW5hbC52YWx1ZU9mKClcblxuZ2VuZXJpYyBjbG9uZSwgaXNSZWdFeHAsIGRvIChmbGFncz0vXFx3KiQvKSAtPlxuICAob3JpZ2luYWwpIC0+XG4gICAgY29weSA9IG5ldyBvcmlnaW5hbC5jb25zdHJ1Y3RvciBvcmlnaW5hbC5zb3VyY2UsIChmbGFncy5leGVjIG9yaWdpbmFsKVxuICAgIGNvcHkubGFzdEluZGV4ID0gb3JpZ2luYWwubGFzdEluZGV4XG4gICAgY29weVxuXG5nZW5lcmljIGNsb25lLCBpc0Z1bmN0aW9uLCAob3JpZ2luYWwpIC0+XG4gIHRocm93IG5ldyBFcnJvciBcImNsb25lOiBkb2VzIG5vdCBjbG9uZSBGdW5jdGlvblwiXG5cbmdlbmVyaWMgY2xvbmUsIGlzV2Vha01hcCwgKG9yaWdpbmFsKSAtPlxuICB0aHJvdyBuZXcgRXJyb3IgXCJjbG9uZTogZG9lcyBub3QgY2xvbmUgV2Vha01hcFwiXG5cbmdlbmVyaWMgY2xvbmUsIGlzRXJyb3IsIChvcmlnaW5hbCkgLT5cbiAgdGhyb3cgbmV3IEVycm9yIFwiY2xvbmU6IGRvZXMgbm90IGNsb25lIEVycm9yXCJcblxuc2l6ZSA9IGdlbmVyaWNcbiAgbmFtZTogXCJzaXplXCJcbiAgZGVzY3JpcHRpb246IFwiUmV0dXJucyB0aGUgc2l6ZSBvZiBhIGdpdmVuIGVudGl0eSwgaWYgaXQgaGFzIG9uZS5cIlxuICBkZWZhdWx0OiAoeCkgLT5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yIFwic2l6ZTogbm90IHZhbGlkIGZvciB0eXBlICN7eC5jb25zdHJ1Y3Rvcn1cIlxuXG5oYXNMZW5ndGggPSAoeCkgLT4geC5sZW5ndGg/XG5oYXNCeXRlTGVuZ3RoID0gKHgpIC0+IHguYnl0ZUxlbmd0aD9cbmhhc1NpemUgPSAoeCkgLT4geC5zaXplP1xuXG5nZW5lcmljIHNpemUsIGhhc0J5dGVMZW5ndGgsICh4KSAtPiB4LmJ5dGVMZW5ndGhcbmdlbmVyaWMgc2l6ZSwgaXNPYmplY3QsICh4KSAtPiAoT2JqZWN0LmtleXMgeCkubGVuZ3RoXG5nZW5lcmljIHNpemUsIGhhc1NpemUsICh4KSAtPiB4LnNpemVcbmdlbmVyaWMgc2l6ZSwgaGFzTGVuZ3RoLCAoeCkgLT4geC5sZW5ndGhcblxuaXNFbXB0eSA9ICh4KSAtPiBPYmplY3QuaXMgKHNpemUgeCksIDBcblxuZXhwb3J0IHtcbiAgZXF1YWxcbiAgbm90RXF1YWxcbiAgZXFcbiAgbmVxXG4gIGNsb25lXG4gIHNpemVcbiAgaXNFbXB0eVxufVxuIl0sIm5hbWVzIjpbImNsb25lIiwiY2xvbmVJdGVyYXRvciIsImVxIiwiZXF1YWwiLCJoYXNCeXRlTGVuZ3RoIiwiaGFzRXF1YWwiLCJoYXNMZW5ndGgiLCJoYXNTaXplIiwiaXNFbXB0eSIsImlzTm90IiwiaXNQcmltaXRpdmUiLCJuZXEiLCJub3RFcXVhbCIsInNpemUiLCJpbmRleE9mIiwiaWRlbnRpdHkiLCJjdXJyeSIsImJpbmFyeSIsImFueSIsIm5lZ2F0ZSIsImdlbmVyaWMiLCJpc1VuZGVmaW5lZCIsImlzQW55IiwiaXNTeW1ib2wiLCJpc1JlZ0V4cCIsImlzQnVmZmVyIiwiaXNBcnJheUJ1ZmZlciIsImlzVHlwZWRBcnJheSIsImlzRGF0YVZpZXciLCJpc01hcCIsImlzQXJyYXkiLCJpc09iamVjdCIsImlzU2V0IiwiaXNCb29sZWFuIiwiaXNEYXRlIiwiaXNOdW1iZXIiLCJpc1N0cmluZyIsImlzRnVuY3Rpb24iLCJpc1dlYWtNYXAiLCJpc0Vycm9yIiwiYSIsImIiLCJPYmplY3QiLCJpcyIsIngiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0IiwiaSIsImoiLCJyZWYiLCJsZW5ndGgiLCJieXRlTGVuZ3RoIiwiVWludDhBcnJheSIsImJ5dGVPZmZzZXQiLCJidWZmZXIiLCJlcXVhbHMiLCJnZXRUaW1lIiwidG9TdHJpbmciLCJtZXNzYWdlIiwidmFsdWVPZiIsImtleSIsInZhbHVlIiwieSIsImdldCIsImhhcyIsImFrZXlzIiwiYmtleXMiLCJrIiwibGVuIiwia2V5cyIsImNhbGwiLCJlbnRpdHkiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwib3JpZ2luYWwiLCJjb3B5Iiwic2V0IiwiQnVmZmVyIiwiZnJvbSIsImFkZCIsImVudHJ5IiwicHVzaCIsImZsYWdzIiwic291cmNlIiwiZXhlYyIsImxhc3RJbmRleCIsIlR5cGVFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQUEsT0FBQUMsZUFBQUMsSUFBQUMsT0FBQUMsZUFBQUMsVUFBQUMsV0FBQUMsU0FBQUMsU0FBQUMsT0FBQUMsYUFBQUMsS0FBQUMsVUFBQUMsTUFBQUMsVUFBQSxFQUFBLENBQUFBLE9BQUE7QUFBQSxTQUFTQyxRQUFULEVBQW1CQyxLQUFuQixFQUEwQkMsTUFBMUIsUUFBQSxhQUFBO0FBQ0EsU0FBU0MsR0FBVCxFQUFjQyxNQUFkLFFBQUEsY0FBQTtBQUNBLFNBQVNDLE9BQVQsUUFBQSxZQUFBO0FBRUEsU0FDRUMsV0FERixFQUNlQyxLQURmLEVBRUVDLFFBRkYsRUFFWUMsUUFGWixFQUdFQyxRQUhGLEVBR1lDLGFBSFosRUFHMkJDLFlBSDNCLEVBR3lDQyxVQUh6QyxFQUlFQyxLQUpGLEVBSVNDLE9BSlQsRUFJa0JDLFFBSmxCLEVBSTRCQyxLQUo1QixFQUtFQyxTQUxGLEVBS2FDLE1BTGIsRUFLcUJDLFFBTHJCLEVBSytCQyxRQUwvQixFQU1FQyxVQU5GLEVBTWNDLFNBTmQsRUFNeUJDLE9BTnpCLFFBQUEsU0FBQTtBQVNBbEMsV0FBVyxDQUFDbUM7V0FBTSxBQUFBQSxDQUFBQSxLQUFBLE9BQUFBLEVBQUFyQyxLQUFBLEdBQUEsS0FBQSxDQUFBLEtBQUE7QUFBUDtBQUNYTSxRQUFRLFNBQUMrQixDQUFELEVBQUlDLENBQUo7V0FBVSxDQUFDQyxPQUFPQyxFQUFQLENBQVVILEdBQUdDO0FBQXhCO0FBQ1IvQixjQUFjLFNBQUNrQyxDQUFEO1dBQU8sQUFBQ1gsVUFBVVcs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
|