@flowmap.gl/data 8.0.0-alpha.1 → 8.0.0-alpha.13
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/dist/FlowmapAggregateAccessors.d.ts +16 -0
- package/dist/FlowmapAggregateAccessors.d.ts.map +1 -0
- package/dist/FlowmapAggregateAccessors.js +46 -0
- package/dist/FlowmapSelectors.d.ts +188 -0
- package/dist/FlowmapSelectors.d.ts.map +1 -0
- package/dist/FlowmapSelectors.js +863 -0
- package/dist/FlowmapState.d.ts +27 -0
- package/dist/FlowmapState.d.ts.map +1 -0
- package/dist/FlowmapState.js +2 -0
- package/dist/cluster/cluster.d.ts.map +1 -1
- package/dist/cluster/cluster.js +8 -5
- package/dist/colors.d.ts +7 -7
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +55 -20
- package/dist/getViewStateForLocations.d.ts +18 -11
- package/dist/getViewStateForLocations.d.ts.map +1 -1
- package/dist/getViewStateForLocations.js +23 -20
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/provider/FlowmapDataProvider.d.ts +16 -0
- package/dist/provider/FlowmapDataProvider.d.ts.map +1 -0
- package/dist/provider/FlowmapDataProvider.js +17 -0
- package/dist/provider/LocalFlowmapDataProvider.d.ts +20 -0
- package/dist/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
- package/dist/provider/LocalFlowmapDataProvider.js +98 -0
- package/dist/types.d.ts +6 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/util.d.ts +0 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +1 -4
- package/dist-es5/FlowmapAggregateAccessors.d.ts +16 -0
- package/dist-es5/FlowmapAggregateAccessors.d.ts.map +1 -0
- package/dist-es5/FlowmapAggregateAccessors.js +57 -0
- package/{dist/FlowMapSelectors.d.ts → dist-es5/FlowmapSelectors.d.ts} +55 -49
- package/dist-es5/FlowmapSelectors.d.ts.map +1 -0
- package/dist-es5/FlowmapSelectors.js +1507 -0
- package/{dist/FlowMapState.d.ts → dist-es5/FlowmapState.d.ts} +6 -3
- package/dist-es5/FlowmapState.d.ts.map +1 -0
- package/dist-es5/FlowmapState.js +3 -0
- package/dist-es5/cluster/ClusterIndex.d.ts +42 -0
- package/dist-es5/cluster/ClusterIndex.d.ts.map +1 -0
- package/dist-es5/cluster/ClusterIndex.js +297 -0
- package/dist-es5/cluster/cluster.d.ts +31 -0
- package/dist-es5/cluster/cluster.d.ts.map +1 -0
- package/dist-es5/cluster/cluster.js +266 -0
- package/dist-es5/colors.d.ts +103 -0
- package/dist-es5/colors.d.ts.map +1 -0
- package/dist-es5/colors.js +510 -0
- package/dist-es5/getViewStateForLocations.d.ts +23 -0
- package/dist-es5/getViewStateForLocations.d.ts.map +1 -0
- package/dist-es5/getViewStateForLocations.js +64 -0
- package/dist-es5/index.d.ts +11 -0
- package/dist-es5/index.d.ts.map +1 -0
- package/dist-es5/index.js +28 -0
- package/dist-es5/provider/FlowmapDataProvider.d.ts +16 -0
- package/dist-es5/provider/FlowmapDataProvider.d.ts.map +1 -0
- package/dist-es5/provider/FlowmapDataProvider.js +22 -0
- package/dist-es5/provider/LocalFlowmapDataProvider.d.ts +20 -0
- package/dist-es5/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
- package/dist-es5/provider/LocalFlowmapDataProvider.js +154 -0
- package/dist-es5/time.d.ts +24 -0
- package/dist-es5/time.d.ts.map +1 -0
- package/dist-es5/time.js +168 -0
- package/dist-es5/types.d.ts +118 -0
- package/dist-es5/types.d.ts.map +1 -0
- package/dist-es5/types.js +29 -0
- package/dist-es5/util.d.ts +5 -0
- package/dist-es5/util.d.ts.map +1 -0
- package/dist-es5/util.js +14 -0
- package/package.json +7 -5
- package/src/{FlowMapAggregateAccessors.ts → FlowmapAggregateAccessors.ts} +14 -9
- package/src/{FlowMapSelectors.ts → FlowmapSelectors.ts} +213 -178
- package/src/{FlowMapState.ts → FlowmapState.ts} +5 -2
- package/src/cluster/cluster.ts +7 -4
- package/src/colors.ts +65 -21
- package/src/getViewStateForLocations.ts +41 -35
- package/src/index.ts +6 -6
- package/src/provider/{FlowMapDataProvider.ts → FlowmapDataProvider.ts} +14 -12
- package/src/provider/LocalFlowmapDataProvider.ts +122 -0
- package/src/types.ts +6 -4
- package/src/util.ts +0 -4
- package/tsconfig.es5.json +11 -0
- package/dist/FlowMapAggregateAccessors.d.ts +0 -15
- package/dist/FlowMapAggregateAccessors.d.ts.map +0 -1
- package/dist/FlowMapAggregateAccessors.js +0 -43
- package/dist/FlowMapSelectors.d.ts.map +0 -1
- package/dist/FlowMapSelectors.js +0 -834
- package/dist/FlowMapState.d.ts.map +0 -1
- package/dist/FlowMapState.js +0 -2
- package/dist/provider/FlowMapDataProvider.d.ts +0 -16
- package/dist/provider/FlowMapDataProvider.d.ts.map +0 -1
- package/dist/provider/FlowMapDataProvider.js +0 -17
- package/dist/provider/LocalFlowMapDataProvider.d.ts +0 -20
- package/dist/provider/LocalFlowMapDataProvider.d.ts.map +0 -1
- package/dist/provider/LocalFlowMapDataProvider.js +0 -87
- package/src/provider/LocalFlowMapDataProvider.ts +0 -105
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.mixColorsRGBA = exports.midpoint = exports.rgbaAsString = exports.getDiffColorsRGBA = exports.getColorsRGBA = exports.isDiffColorsRGBA = exports.isDiffColors = exports.getFlowColorScale = exports.createFlowColorScale = exports.getColors = exports.getFlowmapColors = exports.COLOR_SCHEME_KEYS = exports.COLOR_SCHEMES = exports.DEFAULT_COLOR_SCHEME = exports.schemeTeal = exports.GRAYISH = exports.ColorScheme = exports.colorAsRgba = exports.opacifyHex = exports.opacityFloatToInteger = void 0;
|
|
15
|
+
var d3_scale_chromatic_1 = require("d3-scale-chromatic");
|
|
16
|
+
var d3_array_1 = require("d3-array");
|
|
17
|
+
var d3_scale_1 = require("d3-scale");
|
|
18
|
+
var d3_interpolate_1 = require("d3-interpolate");
|
|
19
|
+
var d3_color_1 = require("d3-color");
|
|
20
|
+
var DEFAULT_OUTLINE_COLOR = '#fff';
|
|
21
|
+
var DEFAULT_DIMMED_OPACITY = 0.4;
|
|
22
|
+
var DEFAULT_FLOW_MIN_COLOR = 'rgba(240,240,240,0.5)';
|
|
23
|
+
var DEFAULT_FLOW_COLOR_SCHEME = [DEFAULT_FLOW_MIN_COLOR, '#137CBD'];
|
|
24
|
+
var DEFAULT_LOCATION_AREA_COLOR = 'rgba(220,220,220,0.5)';
|
|
25
|
+
var DEFAULT_FLOW_COLOR_SCHEME_POSITIVE = [DEFAULT_FLOW_MIN_COLOR, '#f6654e'];
|
|
26
|
+
var DEFAULT_FLOW_COLOR_SCHEME_NEGATIVE = [DEFAULT_FLOW_MIN_COLOR, '#00a9cc'];
|
|
27
|
+
var FALLBACK_COLOR_RGBA = [255, 255, 255, 255];
|
|
28
|
+
function opacityFloatToInteger(opacity) {
|
|
29
|
+
return Math.round(opacity * 255);
|
|
30
|
+
}
|
|
31
|
+
exports.opacityFloatToInteger = opacityFloatToInteger;
|
|
32
|
+
function opacifyHex(hexCode, opacity) {
|
|
33
|
+
var c = (0, d3_color_1.color)(hexCode);
|
|
34
|
+
if (!c) {
|
|
35
|
+
console.warn('Invalid color: ', hexCode);
|
|
36
|
+
return "rgba(255, 255, 255, ".concat(opacity, ")");
|
|
37
|
+
}
|
|
38
|
+
var col = c.rgb();
|
|
39
|
+
return "rgba(".concat(col.r, ", ").concat(col.g, ", ").concat(col.b, ", ").concat(opacity, ")");
|
|
40
|
+
}
|
|
41
|
+
exports.opacifyHex = opacifyHex;
|
|
42
|
+
function colorAsRgba(color) {
|
|
43
|
+
if (Array.isArray(color)) {
|
|
44
|
+
return color;
|
|
45
|
+
}
|
|
46
|
+
var col = (0, d3_color_1.color)(color);
|
|
47
|
+
if (!col) {
|
|
48
|
+
console.warn('Invalid color: ', color);
|
|
49
|
+
return FALLBACK_COLOR_RGBA;
|
|
50
|
+
}
|
|
51
|
+
var rgbColor = col.rgb();
|
|
52
|
+
return [
|
|
53
|
+
Math.floor(rgbColor.r),
|
|
54
|
+
Math.floor(rgbColor.g),
|
|
55
|
+
Math.floor(rgbColor.b),
|
|
56
|
+
opacityFloatToInteger(col.opacity),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
exports.colorAsRgba = colorAsRgba;
|
|
60
|
+
function colorAsRgbaOr(color, defaultColor) {
|
|
61
|
+
if (color) {
|
|
62
|
+
return colorAsRgba(color);
|
|
63
|
+
}
|
|
64
|
+
if (typeof defaultColor === 'string') {
|
|
65
|
+
return colorAsRgba(defaultColor);
|
|
66
|
+
}
|
|
67
|
+
return defaultColor;
|
|
68
|
+
}
|
|
69
|
+
var asScheme = function (scheme) {
|
|
70
|
+
return scheme[scheme.length - 1];
|
|
71
|
+
};
|
|
72
|
+
var ColorScheme;
|
|
73
|
+
(function (ColorScheme) {
|
|
74
|
+
ColorScheme["primary"] = "#162d3c";
|
|
75
|
+
})(ColorScheme = exports.ColorScheme || (exports.ColorScheme = {}));
|
|
76
|
+
var SCALE_NUM_STEPS = 20;
|
|
77
|
+
var getColorSteps = function (interpolate) {
|
|
78
|
+
return (0, d3_array_1.range)(0, SCALE_NUM_STEPS + 1)
|
|
79
|
+
.map(function (i) { return interpolate(i / SCALE_NUM_STEPS); })
|
|
80
|
+
.reverse();
|
|
81
|
+
};
|
|
82
|
+
var FLOW_MIN_COLOR = 'rgba(240,240,240,0.5)';
|
|
83
|
+
exports.GRAYISH = [FLOW_MIN_COLOR, ColorScheme.primary];
|
|
84
|
+
var schemeBluYl = [
|
|
85
|
+
'#f7feae',
|
|
86
|
+
'#b7e6a5',
|
|
87
|
+
'#7ccba2',
|
|
88
|
+
'#46aea0',
|
|
89
|
+
'#089099',
|
|
90
|
+
'#00718b',
|
|
91
|
+
'#045275',
|
|
92
|
+
];
|
|
93
|
+
var schemeEmrld = [
|
|
94
|
+
'#d3f2a3',
|
|
95
|
+
'#97e196',
|
|
96
|
+
'#6cc08b',
|
|
97
|
+
'#4c9b82',
|
|
98
|
+
'#217a79',
|
|
99
|
+
'#105965',
|
|
100
|
+
'#074050',
|
|
101
|
+
];
|
|
102
|
+
exports.schemeTeal = [
|
|
103
|
+
'#d1eeea',
|
|
104
|
+
'#a8dbd9',
|
|
105
|
+
'#85c4c9',
|
|
106
|
+
'#68abb8',
|
|
107
|
+
'#4f90a6',
|
|
108
|
+
'#3b738f',
|
|
109
|
+
'#2a5674',
|
|
110
|
+
];
|
|
111
|
+
exports.DEFAULT_COLOR_SCHEME = exports.schemeTeal;
|
|
112
|
+
exports.COLOR_SCHEMES = {
|
|
113
|
+
Blues: asScheme(d3_scale_chromatic_1.schemeBlues),
|
|
114
|
+
BluGrn: [
|
|
115
|
+
'#c4e6c3',
|
|
116
|
+
'#96d2a4',
|
|
117
|
+
'#6dbc90',
|
|
118
|
+
'#4da284',
|
|
119
|
+
'#36877a',
|
|
120
|
+
'#266b6e',
|
|
121
|
+
'#1d4f60',
|
|
122
|
+
],
|
|
123
|
+
BluYl: schemeBluYl,
|
|
124
|
+
BrwnYl: [
|
|
125
|
+
'#ede5cf',
|
|
126
|
+
'#e0c2a2',
|
|
127
|
+
'#d39c83',
|
|
128
|
+
'#c1766f',
|
|
129
|
+
'#a65461',
|
|
130
|
+
'#813753',
|
|
131
|
+
'#541f3f',
|
|
132
|
+
],
|
|
133
|
+
BuGn: asScheme(d3_scale_chromatic_1.schemeBuGn),
|
|
134
|
+
BuPu: asScheme(d3_scale_chromatic_1.schemeBuPu),
|
|
135
|
+
Burg: [
|
|
136
|
+
'#ffc6c4',
|
|
137
|
+
'#f4a3a8',
|
|
138
|
+
'#e38191',
|
|
139
|
+
'#cc607d',
|
|
140
|
+
'#ad466c',
|
|
141
|
+
'#8b3058',
|
|
142
|
+
'#672044',
|
|
143
|
+
],
|
|
144
|
+
BurgYl: [
|
|
145
|
+
'#fbe6c5',
|
|
146
|
+
'#f5ba98',
|
|
147
|
+
'#ee8a82',
|
|
148
|
+
'#dc7176',
|
|
149
|
+
'#c8586c',
|
|
150
|
+
'#9c3f5d',
|
|
151
|
+
'#70284a',
|
|
152
|
+
],
|
|
153
|
+
Cool: getColorSteps(d3_scale_chromatic_1.interpolateCool),
|
|
154
|
+
DarkMint: [
|
|
155
|
+
'#d2fbd4',
|
|
156
|
+
'#a5dbc2',
|
|
157
|
+
'#7bbcb0',
|
|
158
|
+
'#559c9e',
|
|
159
|
+
'#3a7c89',
|
|
160
|
+
'#235d72',
|
|
161
|
+
'#123f5a',
|
|
162
|
+
],
|
|
163
|
+
Emrld: schemeEmrld,
|
|
164
|
+
GnBu: asScheme(d3_scale_chromatic_1.schemeGnBu),
|
|
165
|
+
Grayish: exports.GRAYISH,
|
|
166
|
+
Greens: asScheme(d3_scale_chromatic_1.schemeGreens),
|
|
167
|
+
Greys: asScheme(d3_scale_chromatic_1.schemeGreys),
|
|
168
|
+
Inferno: getColorSteps(d3_scale_chromatic_1.interpolateInferno),
|
|
169
|
+
Magenta: [
|
|
170
|
+
'#f3cbd3',
|
|
171
|
+
'#eaa9bd',
|
|
172
|
+
'#dd88ac',
|
|
173
|
+
'#ca699d',
|
|
174
|
+
'#b14d8e',
|
|
175
|
+
'#91357d',
|
|
176
|
+
'#6c2167',
|
|
177
|
+
],
|
|
178
|
+
Magma: getColorSteps(d3_scale_chromatic_1.interpolateMagma),
|
|
179
|
+
Mint: [
|
|
180
|
+
'#e4f1e1',
|
|
181
|
+
'#b4d9cc',
|
|
182
|
+
'#89c0b6',
|
|
183
|
+
'#63a6a0',
|
|
184
|
+
'#448c8a',
|
|
185
|
+
'#287274',
|
|
186
|
+
'#0d585f',
|
|
187
|
+
],
|
|
188
|
+
Oranges: asScheme(d3_scale_chromatic_1.schemeOranges),
|
|
189
|
+
OrRd: asScheme(d3_scale_chromatic_1.schemeOrRd),
|
|
190
|
+
OrYel: [
|
|
191
|
+
'#ecda9a',
|
|
192
|
+
'#efc47e',
|
|
193
|
+
'#f3ad6a',
|
|
194
|
+
'#f7945d',
|
|
195
|
+
'#f97b57',
|
|
196
|
+
'#f66356',
|
|
197
|
+
'#ee4d5a',
|
|
198
|
+
],
|
|
199
|
+
Peach: [
|
|
200
|
+
'#fde0c5',
|
|
201
|
+
'#facba6',
|
|
202
|
+
'#f8b58b',
|
|
203
|
+
'#f59e72',
|
|
204
|
+
'#f2855d',
|
|
205
|
+
'#ef6a4c',
|
|
206
|
+
'#eb4a40',
|
|
207
|
+
],
|
|
208
|
+
Plasma: getColorSteps(d3_scale_chromatic_1.interpolatePlasma),
|
|
209
|
+
PinkYl: [
|
|
210
|
+
'#fef6b5',
|
|
211
|
+
'#ffdd9a',
|
|
212
|
+
'#ffc285',
|
|
213
|
+
'#ffa679',
|
|
214
|
+
'#fa8a76',
|
|
215
|
+
'#f16d7a',
|
|
216
|
+
'#e15383',
|
|
217
|
+
],
|
|
218
|
+
PuBu: asScheme(d3_scale_chromatic_1.schemePuBu),
|
|
219
|
+
PuBuGn: asScheme(d3_scale_chromatic_1.schemePuBuGn),
|
|
220
|
+
PuRd: asScheme(d3_scale_chromatic_1.schemePuRd),
|
|
221
|
+
Purp: [
|
|
222
|
+
'#f3e0f7',
|
|
223
|
+
'#e4c7f1',
|
|
224
|
+
'#d1afe8',
|
|
225
|
+
'#b998dd',
|
|
226
|
+
'#9f82ce',
|
|
227
|
+
'#826dba',
|
|
228
|
+
'#63589f',
|
|
229
|
+
],
|
|
230
|
+
Purples: asScheme(d3_scale_chromatic_1.schemePurples),
|
|
231
|
+
PurpOr: [
|
|
232
|
+
'#f9ddda',
|
|
233
|
+
'#f2b9c4',
|
|
234
|
+
'#e597b9',
|
|
235
|
+
'#ce78b3',
|
|
236
|
+
'#ad5fad',
|
|
237
|
+
'#834ba0',
|
|
238
|
+
'#573b88',
|
|
239
|
+
],
|
|
240
|
+
RdPu: asScheme(d3_scale_chromatic_1.schemeRdPu),
|
|
241
|
+
RedOr: [
|
|
242
|
+
'#f6d2a9',
|
|
243
|
+
'#f5b78e',
|
|
244
|
+
'#f19c7c',
|
|
245
|
+
'#ea8171',
|
|
246
|
+
'#dd686c',
|
|
247
|
+
'#ca5268',
|
|
248
|
+
'#b13f64',
|
|
249
|
+
],
|
|
250
|
+
Reds: asScheme(d3_scale_chromatic_1.schemeReds),
|
|
251
|
+
Sunset: [
|
|
252
|
+
'#f3e79b',
|
|
253
|
+
'#fac484',
|
|
254
|
+
'#f8a07e',
|
|
255
|
+
'#eb7f86',
|
|
256
|
+
'#ce6693',
|
|
257
|
+
'#a059a0',
|
|
258
|
+
'#5c53a5',
|
|
259
|
+
],
|
|
260
|
+
SunsetDark: [
|
|
261
|
+
'#fcde9c',
|
|
262
|
+
'#faa476',
|
|
263
|
+
'#f0746e',
|
|
264
|
+
'#e34f6f',
|
|
265
|
+
'#dc3977',
|
|
266
|
+
'#b9257a',
|
|
267
|
+
'#7c1d6f',
|
|
268
|
+
],
|
|
269
|
+
Teal: exports.schemeTeal,
|
|
270
|
+
TealGrn: [
|
|
271
|
+
'#b0f2bc',
|
|
272
|
+
'#89e8ac',
|
|
273
|
+
'#67dba5',
|
|
274
|
+
'#4cc8a3',
|
|
275
|
+
'#38b2a3',
|
|
276
|
+
'#2c98a0',
|
|
277
|
+
'#257d98',
|
|
278
|
+
],
|
|
279
|
+
Viridis: getColorSteps(d3_scale_chromatic_1.interpolateViridis),
|
|
280
|
+
Warm: getColorSteps(d3_scale_chromatic_1.interpolateWarm),
|
|
281
|
+
YlGn: asScheme(d3_scale_chromatic_1.schemeYlGn),
|
|
282
|
+
YlGnBu: asScheme(d3_scale_chromatic_1.schemeYlGnBu),
|
|
283
|
+
YlOrBr: asScheme(d3_scale_chromatic_1.schemeYlOrBr),
|
|
284
|
+
YlOrRd: asScheme(d3_scale_chromatic_1.schemeYlOrRd),
|
|
285
|
+
};
|
|
286
|
+
exports.COLOR_SCHEME_KEYS = Object.keys(exports.COLOR_SCHEMES);
|
|
287
|
+
var complementary = '#f52020';
|
|
288
|
+
var baseDiffColor = '#17a5be';
|
|
289
|
+
var diffColors = {
|
|
290
|
+
negative: {
|
|
291
|
+
flows: {
|
|
292
|
+
scheme: [FLOW_MIN_COLOR, baseDiffColor],
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
positive: {
|
|
296
|
+
flows: {
|
|
297
|
+
scheme: [FLOW_MIN_COLOR, complementary],
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
locationAreas: {
|
|
301
|
+
outline: 'rgba(92,112,128,0.5)',
|
|
302
|
+
normal: 'rgba(220,220,220,0.5)',
|
|
303
|
+
},
|
|
304
|
+
outlineColor: 'rgb(230,233,237)',
|
|
305
|
+
};
|
|
306
|
+
function getFlowmapColors(settingsState) {
|
|
307
|
+
return getColors(false, // TODO: diffMode
|
|
308
|
+
settingsState.colorScheme, settingsState.darkMode, settingsState.fadeEnabled, settingsState.fadeOpacityEnabled, settingsState.fadeAmount, settingsState.animationEnabled);
|
|
309
|
+
}
|
|
310
|
+
exports.getFlowmapColors = getFlowmapColors;
|
|
311
|
+
function getColors(diffMode, colorScheme, darkMode, fadeEnabled, fadeOpacityEnabled, fadeAmount, animate) {
|
|
312
|
+
if (diffMode) {
|
|
313
|
+
return diffColors;
|
|
314
|
+
}
|
|
315
|
+
var scheme;
|
|
316
|
+
if (Array.isArray(colorScheme)) {
|
|
317
|
+
scheme = colorScheme;
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
scheme =
|
|
321
|
+
(colorScheme && exports.COLOR_SCHEMES[colorScheme]) || exports.DEFAULT_COLOR_SCHEME;
|
|
322
|
+
if (darkMode) {
|
|
323
|
+
scheme = scheme.slice().reverse();
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// if (animate)
|
|
327
|
+
// if (fadeAmount > 0)
|
|
328
|
+
{
|
|
329
|
+
var indices = (0, d3_array_1.range)(0, Math.max(10, scheme.length));
|
|
330
|
+
var N = indices.length - 1;
|
|
331
|
+
var colorScale_1 = (0, d3_scale_1.scaleSequential)((0, d3_interpolate_1.interpolateRgbBasis)(scheme)).domain([
|
|
332
|
+
0,
|
|
333
|
+
N,
|
|
334
|
+
]);
|
|
335
|
+
if (!fadeEnabled || fadeAmount === 0) {
|
|
336
|
+
scheme = indices.map(function (c, i) { return colorScale_1(i); });
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
var amount_1 = (0, d3_scale_1.scalePow)()
|
|
340
|
+
// .exponent(animate ? 1 : 1/2.5)
|
|
341
|
+
// .exponent(animate ? 100 : 50)
|
|
342
|
+
// .exponent(animate ? 20 : 5)
|
|
343
|
+
// .exponent(1/2.5)
|
|
344
|
+
.exponent(1.5)
|
|
345
|
+
.domain([N, 0])
|
|
346
|
+
// .range([fadeAmount/100*(animate?2:1), 0])
|
|
347
|
+
// .range([0, fadeAmount/100*(animate?2:1)])
|
|
348
|
+
// .range(darkMode ? [1-fadeAmount/100, 1] : [1, 1 - fadeAmount/100])
|
|
349
|
+
// .range(darkMode ? [1 - fadeAmount/100, 1] : [fadeAmount/100, 0])
|
|
350
|
+
// .range([1 - fadeAmount/100, 1])
|
|
351
|
+
.range([0, (2 * fadeAmount) / 100]);
|
|
352
|
+
scheme = indices.map(function (c, i) {
|
|
353
|
+
var color = colorScale_1(i);
|
|
354
|
+
var a = amount_1(i);
|
|
355
|
+
if (color == null || a == null)
|
|
356
|
+
return '#000';
|
|
357
|
+
var col = (0, d3_color_1.hcl)(color);
|
|
358
|
+
col.l = darkMode ? col.l - col.l * a : col.l + (100 - col.l) * a;
|
|
359
|
+
col.c = col.c - col.c * (a / 4);
|
|
360
|
+
if (fadeOpacityEnabled) {
|
|
361
|
+
col.opacity = col.opacity * (1.0 - a);
|
|
362
|
+
}
|
|
363
|
+
return col.toString();
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return {
|
|
368
|
+
darkMode: darkMode,
|
|
369
|
+
flows: {
|
|
370
|
+
scheme: scheme,
|
|
371
|
+
},
|
|
372
|
+
locationCircles: {
|
|
373
|
+
outgoing: darkMode ? '#000' : '#fff',
|
|
374
|
+
},
|
|
375
|
+
outlineColor: darkMode ? '#000' : 'rgba(255, 255, 255, 0.5)',
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
exports.getColors = getColors;
|
|
379
|
+
function interpolateRgbaBasis(colors) {
|
|
380
|
+
var spline = d3_interpolate_1.interpolateBasis;
|
|
381
|
+
var n = colors.length;
|
|
382
|
+
var r = new Array(n), g = new Array(n), b = new Array(n), opacity = new Array(n), i, color;
|
|
383
|
+
for (i = 0; i < n; ++i) {
|
|
384
|
+
color = (0, d3_color_1.rgb)(colors[i]);
|
|
385
|
+
r[i] = color.r || 0;
|
|
386
|
+
g[i] = color.g || 0;
|
|
387
|
+
b[i] = color.b || 0;
|
|
388
|
+
opacity[i] = color.opacity || 0;
|
|
389
|
+
}
|
|
390
|
+
r = spline(r);
|
|
391
|
+
g = spline(g);
|
|
392
|
+
b = spline(b);
|
|
393
|
+
opacity = spline(opacity);
|
|
394
|
+
// color.opacity = 1;
|
|
395
|
+
return function (t) {
|
|
396
|
+
color.r = r(t);
|
|
397
|
+
color.g = g(t);
|
|
398
|
+
color.b = b(t);
|
|
399
|
+
color.opacity = opacity(t);
|
|
400
|
+
return color + '';
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
function createFlowColorScale(domain, scheme, animate) {
|
|
404
|
+
var scale = (0, d3_scale_1.scaleSequentialPow)(interpolateRgbaBasis(scheme))
|
|
405
|
+
// @ts-ignore
|
|
406
|
+
.exponent(animate ? 1 / 2 : 1 / 3)
|
|
407
|
+
.domain(domain);
|
|
408
|
+
return function (value) { return colorAsRgba(scale(value)); };
|
|
409
|
+
}
|
|
410
|
+
exports.createFlowColorScale = createFlowColorScale;
|
|
411
|
+
function getFlowColorScale(colors, magnitudeExtent, animate) {
|
|
412
|
+
var minMagnitude = magnitudeExtent ? magnitudeExtent[0] : 0;
|
|
413
|
+
var maxMagnitude = magnitudeExtent ? magnitudeExtent[1] : 0;
|
|
414
|
+
if (isDiffColorsRGBA(colors)) {
|
|
415
|
+
var posScale_1 = createFlowColorScale([0, maxMagnitude], colors.positive.flows.scheme, animate);
|
|
416
|
+
var negScale_1 = createFlowColorScale([0, minMagnitude], colors.negative.flows.scheme, animate);
|
|
417
|
+
return function (magnitude) {
|
|
418
|
+
return magnitude >= 0 ? posScale_1(magnitude) : negScale_1(magnitude);
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
var scale = createFlowColorScale([0, maxMagnitude || 0], colors.flows.scheme, animate);
|
|
422
|
+
return function (magnitude) { return scale(magnitude); };
|
|
423
|
+
}
|
|
424
|
+
exports.getFlowColorScale = getFlowColorScale;
|
|
425
|
+
function isDiffColors(colors) {
|
|
426
|
+
return colors.positive !== undefined;
|
|
427
|
+
}
|
|
428
|
+
exports.isDiffColors = isDiffColors;
|
|
429
|
+
function isDiffColorsRGBA(colors) {
|
|
430
|
+
return colors.positive !== undefined;
|
|
431
|
+
}
|
|
432
|
+
exports.isDiffColorsRGBA = isDiffColorsRGBA;
|
|
433
|
+
function getLocationAreaColorsRGBA(colors, darkMode) {
|
|
434
|
+
var normalColor = (colors && colors.normal) || DEFAULT_LOCATION_AREA_COLOR;
|
|
435
|
+
var normalColorHcl = (0, d3_color_1.hcl)(normalColor);
|
|
436
|
+
var locationAreasNormal = colorAsRgba(normalColor);
|
|
437
|
+
return {
|
|
438
|
+
normal: locationAreasNormal,
|
|
439
|
+
connected: colorAsRgbaOr(colors && colors.connected, locationAreasNormal),
|
|
440
|
+
highlighted: colorAsRgbaOr(colors && colors.highlighted, opacifyHex(normalColorHcl[darkMode ? 'brighter' : 'darker'](1).toString(), 0.5)),
|
|
441
|
+
selected: colorAsRgbaOr(colors && colors.selected, opacifyHex(normalColorHcl[darkMode ? 'brighter' : 'darker'](2).toString(), 0.8)),
|
|
442
|
+
outline: colorAsRgbaOr(colors && colors.outline, colorAsRgba(normalColorHcl[darkMode ? 'brighter' : 'darker'](4).toString())),
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
function getFlowAndCircleColors(inputColors, defaultFlowColorScheme, darkMode) {
|
|
446
|
+
var _a, _b, _c;
|
|
447
|
+
var flowColorScheme = (inputColors && inputColors.flows && inputColors.flows.scheme) ||
|
|
448
|
+
defaultFlowColorScheme;
|
|
449
|
+
var maxFlowColorHcl = (0, d3_color_1.hcl)(flowColorScheme[flowColorScheme.length - 1]);
|
|
450
|
+
var flowColorHighlighted = colorAsRgbaOr(inputColors && inputColors.flows && inputColors.flows.highlighted, colorAsRgba(maxFlowColorHcl[darkMode ? 'brighter' : 'darker'](0.7).toString()));
|
|
451
|
+
var emptyColor = colorAsRgbaOr((_a = inputColors === null || inputColors === void 0 ? void 0 : inputColors.locationCircles) === null || _a === void 0 ? void 0 : _a.empty, darkMode ? '#000' : '#fff');
|
|
452
|
+
var innerColor = colorAsRgbaOr(inputColors &&
|
|
453
|
+
inputColors.locationCircles &&
|
|
454
|
+
inputColors.locationCircles.inner, maxFlowColorHcl.toString());
|
|
455
|
+
return {
|
|
456
|
+
flows: {
|
|
457
|
+
scheme: flowColorScheme,
|
|
458
|
+
highlighted: flowColorHighlighted,
|
|
459
|
+
},
|
|
460
|
+
locationCircles: {
|
|
461
|
+
inner: innerColor,
|
|
462
|
+
outgoing: colorAsRgbaOr(inputColors &&
|
|
463
|
+
inputColors.locationCircles &&
|
|
464
|
+
inputColors.locationCircles.outgoing, darkMode ? '#000' : '#fff'),
|
|
465
|
+
incoming: colorAsRgbaOr(inputColors &&
|
|
466
|
+
inputColors.locationCircles &&
|
|
467
|
+
inputColors.locationCircles.incoming, maxFlowColorHcl[darkMode ? 'brighter' : 'darker'](1.25).toString()),
|
|
468
|
+
highlighted: colorAsRgbaOr(inputColors &&
|
|
469
|
+
inputColors.locationCircles &&
|
|
470
|
+
inputColors.locationCircles.highlighted, flowColorHighlighted),
|
|
471
|
+
empty: emptyColor,
|
|
472
|
+
outlineEmptyMix: (_c = (_b = inputColors === null || inputColors === void 0 ? void 0 : inputColors.locationCircles) === null || _b === void 0 ? void 0 : _b.outlineEmptyMix) !== null && _c !== void 0 ? _c : 0.4,
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
function getBaseColorsRGBA(colors) {
|
|
477
|
+
var darkMode = colors && colors.darkMode ? true : false;
|
|
478
|
+
return {
|
|
479
|
+
darkMode: darkMode,
|
|
480
|
+
locationAreas: getLocationAreaColorsRGBA(colors && colors.locationAreas, darkMode),
|
|
481
|
+
outlineColor: colorAsRgba((colors && colors.outlineColor) || DEFAULT_OUTLINE_COLOR),
|
|
482
|
+
dimmedOpacity: colors && colors.dimmedOpacity != null
|
|
483
|
+
? colors.dimmedOpacity
|
|
484
|
+
: DEFAULT_DIMMED_OPACITY,
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
function getColorsRGBA(colors) {
|
|
488
|
+
var baseColorsRGBA = getBaseColorsRGBA(colors);
|
|
489
|
+
return __assign(__assign({}, baseColorsRGBA), getFlowAndCircleColors(colors, DEFAULT_FLOW_COLOR_SCHEME, baseColorsRGBA.darkMode));
|
|
490
|
+
}
|
|
491
|
+
exports.getColorsRGBA = getColorsRGBA;
|
|
492
|
+
function getDiffColorsRGBA(colors) {
|
|
493
|
+
var baseColorsRGBA = getBaseColorsRGBA(colors);
|
|
494
|
+
return __assign(__assign({}, baseColorsRGBA), { positive: getFlowAndCircleColors(colors && colors.positive, DEFAULT_FLOW_COLOR_SCHEME_POSITIVE, baseColorsRGBA.darkMode), negative: getFlowAndCircleColors(colors && colors.negative, DEFAULT_FLOW_COLOR_SCHEME_NEGATIVE, baseColorsRGBA.darkMode) });
|
|
495
|
+
}
|
|
496
|
+
exports.getDiffColorsRGBA = getDiffColorsRGBA;
|
|
497
|
+
function rgbaAsString(color) {
|
|
498
|
+
return "rgba(".concat(color.join(','), ")");
|
|
499
|
+
}
|
|
500
|
+
exports.rgbaAsString = rgbaAsString;
|
|
501
|
+
function midpoint(a, b, zeroToOne) {
|
|
502
|
+
return a + (b - a) * zeroToOne;
|
|
503
|
+
}
|
|
504
|
+
exports.midpoint = midpoint;
|
|
505
|
+
function mixColorsRGBA(color1, color2, zeroToOne) {
|
|
506
|
+
return color1.map(function (v, i) { return midpoint(v, color2[i], zeroToOne); });
|
|
507
|
+
}
|
|
508
|
+
exports.mixColorsRGBA = mixColorsRGBA;
|
|
509
|
+
exports.default = getColors;
|
|
510
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHlEQXlCNEI7QUFDNUIscUNBQStCO0FBQy9CLHFDQUF1RTtBQUN2RSxpREFBcUU7QUFDckUscUNBQWdFO0FBR2hFLElBQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLElBQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLElBQU0sc0JBQXNCLEdBQUcsdUJBQXVCLENBQUM7QUFDdkQsSUFBTSx5QkFBeUIsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RFLElBQU0sMkJBQTJCLEdBQUcsdUJBQXVCLENBQUM7QUFFNUQsSUFBTSxrQ0FBa0MsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9FLElBQU0sa0NBQWtDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUsvRSxJQUFNLG1CQUFtQixHQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFdkQsU0FBZ0IscUJBQXFCLENBQUMsT0FBZTtJQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFGRCxzREFFQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxPQUFlLEVBQUUsT0FBZTtJQUN6RCxJQUFNLENBQUMsR0FBRyxJQUFBLGdCQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyw4QkFBdUIsT0FBTyxNQUFHLENBQUM7S0FDMUM7SUFDRCxJQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FB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QUN4QixJQUNEO0FBQ0osQ0FBQztBQWpCRCw4Q0FpQkM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBVztJQUN0QyxPQUFPLGVBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBRyxDQUFDO0FBQ3BDLENBQUM7QUFGRCxvQ0FFQztBQUVELFNBQWdCLFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLFNBQWlCO0lBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxTQUFnQixhQUFhLENBQzNCLE1BQVksRUFDWixNQUFZLEVBQ1osU0FBaUI7SUFFakIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyxPQUFBLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFqQyxDQUFpQyxDQUFTLENBQUM7QUFDekUsQ0FBQztBQU5ELHNDQU1DO0FBRUQsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW50ZXJwb2xhdGVDb29sLFxuICBpbnRlcnBvbGF0ZUluZmVybm8sXG4gIGludGVycG9sYXRlTWFnbWEsXG4gIGludGVycG9sYXRlUGxhc21hLFxuICBpbnRlcnBvbGF0ZVZpcmlkaXMsXG4gIGludGVycG9sYXRlV2FybSxcbiAgc2NoZW1lQmx1ZXMsXG4gIHNjaGVtZUJ1R24sXG4gIHNjaGVtZUJ1UHUsXG4gIHNjaGVtZUduQnUsXG4gIHNjaGVtZUdyZWVucyxcbiAgc2NoZW1lR3JleXMsXG4gIHNjaGVtZU9yYW5nZXMsXG4gIHNjaGVtZU9yUmQsXG4gIHNjaGVtZVB1QnUsXG4gIHNjaGVtZVB1QnVHbixcbiAgc2NoZW1lUHVSZCxcbiAgc2NoZW1lUHVycGxlcyxcbiAgc2NoZW1lUmRQdSxcbiAgc2NoZW1lUmVkcyxcbiAgc2NoZW1lWWxHbixcbiAgc2NoZW1lWWxHbkJ1LFxuICBzY2hlbWVZbE9yQnIsXG4gIHNjaGVtZVlsT3JSZCxcbn0gZnJvbSAnZDMtc2NhbGUtY2hyb21hdGljJztcbmltcG9ydCB7cmFuZ2V9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB7c2NhbGVQb3csIHNjYWxlU2VxdWVudGlhbCwgc2NhbGVTZXF1ZW50aWFsUG93fSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge2ludGVycG9sYXRlQmFzaXMsIGludGVycG9sYXRlUmdiQmFzaXN9IGZyb20gJ2QzLWludGVycG9sYXRlJztcbmltcG9ydCB7Y29sb3IgYXMgZDNjb2xvciwgaGNsLCByZ2IgYXMgY29sb3JSZ2J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7U2V0dGluZ3NTdGF0ZX0gZnJvbSAnLi9GbG93bWFwU3RhdGUnO1xuXG5jb25zdCBERUZBVUxUX09VVExJTkVfQ09MT1IgPSAnI2ZmZic7XG5jb25zdCBERUZBVUxUX0RJTU1FRF9PUEFDSVRZID0gMC40O1xuY29uc3QgREVGQVVMVF9GTE9XX01JTl9DT0xPUiA9ICdyZ2JhKDI0MCwyNDAsMjQwLDAuNSknO1xuY29uc3QgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRSA9IFtERUZBVUxUX0ZMT1dfTUlOX0NPTE9SLCAnIzEzN0NCRCddO1xuY29uc3QgREVGQVVMVF9MT0NBVElPTl9BUkVBX0NPTE9SID0gJ3JnYmEoMjIwLDIyMCwyMjAsMC41KSc7XG5cbmNvbnN0IERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUVfUE9TSVRJVkUgPSBbREVGQVVMVF9GTE9XX01JTl9DT0xPUiwgJyNmNjY1NGUnXTtcbmNvbnN0IERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUVfTkVHQVRJVkUgPSBbREVGQVVMVF9GTE9XX01JTl9DT0xPUiwgJyMwMGE5Y2MnXTtcblxuZXhwb3J0IHR5cGUgQ29sb3JTY2FsZSA9ICh2YWx1ZTogbnVtYmVyKSA9PiBSR0JBO1xuZXhwb3J0IHR5cGUgUkdCQSA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG5jb25zdCBGQUxMQkFDS19DT0xPUl9SR0JBOiBSR0JBID0gWzI1NSwgMjU1LCAyNTUsIDI1NV07XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGFjaXR5RmxvYXRUb0ludGVnZXIob3BhY2l0eTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgucm91bmQob3BhY2l0eSAqIDI1NSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGFjaWZ5SGV4KGhleENvZGU6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgYyA9IGQzY29sb3IoaGV4Q29kZSk7XG4gIGlmICghYykge1xuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBjb2xvcjogJywgaGV4Q29kZSk7XG4gICAgcmV0dXJuIGByZ2JhKDI1NSwgMjU1LCAyNTUsICR7b3BhY2l0eX0pYDtcbiAgfVxuICBjb25zdCBjb2wgPSBjLnJnYigpO1xuICByZXR1cm4gYHJnYmEoJHtjb2wucn0sICR7Y29sLmd9LCAke2NvbC5ifSwgJHtvcGFjaXR5fSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sb3JBc1JnYmEoY29sb3I6IHN0cmluZyB8IG51bWJlcltdKTogUkdCQSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBjb2xvciBhcyBSR0JBO1xuICB9XG4gIGNvbnN0IGNvbCA9IGQzY29sb3IoY29sb3IpO1xuICBpZiAoIWNvbCkge1xuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBjb2xvcjogJywgY29sb3IpO1xuICAgIHJldHVybiBGQUxMQkFDS19DT0xPUl9SR0JBO1xuICB9XG4gIGNvbnN0IHJnYkNvbG9yID0gY29sLnJnYigpO1xuICByZXR1cm4gW1xuICAgIE1hdGguZmxvb3IocmdiQ29sb3IuciksXG4gICAgTWF0aC5mbG9vcihyZ2JDb2xvci5nKSxcbiAgICBNYXRoLmZsb29yKHJnYkNvbG9yLmIpLFxuICAgIG9wYWNpdHlGbG9hdFRvSW50ZWdlcihjb2wub3BhY2l0eSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGNvbG9yQXNSZ2JhT3IoXG4gIGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb2xvcjogUkdCQSB8IHN0cmluZyxcbik6IFJHQkEge1xuICBpZiAoY29sb3IpIHtcbiAgICByZXR1cm4gY29sb3JBc1JnYmEoY29sb3IpO1xuICB9XG4gIGlmICh0eXBlb2YgZGVmYXVsdENvbG9yID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb2xvckFzUmdiYShkZWZhdWx0Q29sb3IpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0Q29sb3I7XG59XG5cbmNvbnN0IGFzU2NoZW1lID0gKHNjaGVtZTogUmVhZG9ubHlBcnJheTxSZWFkb25seUFycmF5PHN0cmluZz4+KSA9PlxuICBzY2hlbWVbc2NoZW1lLmxlbmd0aCAtIDFdIGFzIHN0cmluZ1tdO1xuXG5leHBvcnQgZW51bSBDb2xvclNjaGVtZSB7XG4gIHByaW1hcnkgPSAnIzE2MmQzYycsXG59XG5cbmNvbnN0IFNDQUxFX05VTV9TVEVQUyA9IDIwO1xuY29uc3QgZ2V0Q29sb3JTdGVwcyA9IChpbnRlcnBvbGF0ZTogKHg6IG51bWJlcikgPT4gc3RyaW5nKSA9PlxuICByYW5nZSgwLCBTQ0FMRV9OVU1fU1RFUFMgKyAxKVxuICAgIC5tYXAoKGkpID0+IGludGVycG9sYXRlKGkgLyBTQ0FMRV9OVU1fU1RFUFMpKVxuICAgIC5yZXZlcnNlKCk7XG5cbmNvbnN0IEZMT1dfTUlOX0NPTE9SID0gJ3JnYmEoMjQwLDI0MCwyNDAsMC41KSc7XG5leHBvcnQgY29uc3QgR1JBWUlTSCA9IFtGTE9XX01JTl9DT0xPUiwgQ29sb3JTY2hlbWUucHJpbWFyeV07XG5jb25zdCBzY2hlbWVCbHVZbCA9IFtcbiAgJyNmN2ZlYWUnLFxuICAnI2I3ZTZhNScsXG4gICcjN2NjYmEyJyxcbiAgJyM0NmFlYTAnLFxuICAnIzA4OTA5OScsXG4gICcjMDA3MThiJyxcbiAgJyMwNDUyNzUnLFxuXTtcblxuY29uc3Qgc2NoZW1lRW1ybGQgPSBbXG4gICcjZDNmMmEzJyxcbiAgJyM5N2UxOTYnLFxuICAnIzZjYzA4YicsXG4gICcjNGM5YjgyJyxcbiAgJyMyMTdhNzknLFxuICAnIzEwNTk2NScsXG4gICcjMDc0MDUwJyxcbl07XG5cbmV4cG9ydCBjb25zdCBzY2hlbWVUZWFsID0gW1xuICAnI2QxZWVlYScsXG4gICcjYThkYmQ5JyxcbiAgJyM4NWM0YzknLFxuICAnIzY4YWJiOCcsXG4gICcjNGY5MGE2JyxcbiAgJyMzYjczOGYnLFxuICAnIzJhNTY3NCcsXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT0xPUl9TQ0hFTUUgPSBzY2hlbWVUZWFsO1xuZXhwb3J0IGNvbnN0IENPTE9SX1NDSEVNRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX0gPSB7XG4gIEJsdWVzOiBhc1NjaGVtZShzY2hlbWVCbHVlcyksXG4gIEJsdUdybjogW1xuICAgICcjYzRlNmMzJyxcbiAgICAnIzk2ZDJhNCcsXG4gICAgJyM2ZGJjOTAnLFxuICAgICcjNGRhMjg0JyxcbiAgICAnIzM2ODc3YScsXG4gICAgJyMyNjZiNmUnLFxuICAgICcjMWQ0ZjYwJyxcbiAgXSxcbiAgQmx1WWw6IHNjaGVtZUJsdVlsLFxuICBCcnduWWw6IFtcbiAgICAnI2VkZTVjZicsXG4gICAgJyNlMGMyYTInLFxuICAgICcjZDM5YzgzJyxcbiAgICAnI2MxNzY2ZicsXG4gICAgJyNhNjU0NjEnLFxuICAgICcjODEzNzUzJyxcbiAgICAnIzU0MWYzZicsXG4gIF0sXG4gIEJ1R246IGFzU2NoZW1lKHNjaGVtZUJ1R24pLFxuICBCdVB1OiBhc1NjaGVtZShzY2hlbWVCdVB1KSxcbiAgQnVyZzogW1xuICAgICcjZmZjNmM0JyxcbiAgICAnI2Y0YTNhOCcsXG4gICAgJyNlMzgxOTEnLFxuICAgICcjY2M2MDdkJyxcbiAgICAnI2FkNDY2YycsXG4gICAgJyM4YjMwNTgnLFxuICAgICcjNjcyMDQ0JyxcbiAgXSxcbiAgQnVyZ1lsOiBbXG4gICAgJyNmYmU2YzUnLFxuICAgICcjZjViYTk4JyxcbiAgICAnI2VlOGE4MicsXG4gICAgJyNkYzcxNzYnLFxuICAgICcjYzg1ODZjJyxcbiAgICAnIzljM2Y1ZCcsXG4gICAgJyM3MDI4NGEnLFxuICBdLFxuICBDb29sOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlQ29vbCksXG4gIERhcmtNaW50OiBbXG4gICAgJyNkMmZiZDQnLFxuICAgICcjYTVkYmMyJyxcbiAgICAnIzdiYmNiMCcsXG4gICAgJyM1NTljOWUnLFxuICAgICcjM2E3Yzg5JyxcbiAgICAnIzIzNWQ3MicsXG4gICAgJyMxMjNmNWEnLFxuICBdLFxuICBFbXJsZDogc2NoZW1lRW1ybGQsXG4gIEduQnU6IGFzU2NoZW1lKHNjaGVtZUduQnUpLFxuICBHcmF5aXNoOiBHUkFZSVNILFxuICBHcmVlbnM6IGFzU2NoZW1lKHNjaGVtZUdyZWVucyksXG4gIEdyZXlzOiBhc1NjaGVtZShzY2hlbWVHcmV5cyksXG4gIEluZmVybm86IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVJbmZlcm5vKSxcbiAgTWFnZW50YTogW1xuICAgICcjZjNjYmQzJyxcbiAgICAnI2VhYTliZCcsXG4gICAgJyNkZDg4YWMnLFxuICAgICcjY2E2OTlkJyxcbiAgICAnI2IxNGQ4ZScsXG4gICAgJyM5MTM1N2QnLFxuICAgICcjNmMyMTY3JyxcbiAgXSxcbiAgTWFnbWE6IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVNYWdtYSksXG4gIE1pbnQ6IFtcbiAgICAnI2U0ZjFlMScsXG4gICAgJyNiNGQ5Y2MnLFxuICAgICcjODljMGI2JyxcbiAgICAnIzYzYTZhMCcsXG4gICAgJyM0NDhjOGEnLFxuICAgICcjMjg3Mjc0JyxcbiAgICAnIzBkNTg1ZicsXG4gIF0sXG4gIE9yYW5nZXM6IGFzU2NoZW1lKHNjaGVtZU9yYW5nZXMpLFxuICBPclJkOiBhc1NjaGVtZShzY2hlbWVPclJkKSxcbiAgT3JZZWw6IFtcbiAgICAnI2VjZGE5YScsXG4gICAgJyNlZmM0N2UnLFxuICAgICcjZjNhZDZhJyxcbiAgICAnI2Y3OTQ1ZCcsXG4gICAgJyNmOTdiNTcnLFxuICAgICcjZjY2MzU2JyxcbiAgICAnI2VlNGQ1YScsXG4gIF0sXG4gIFBlYWNoOiBbXG4gICAgJyNmZGUwYzUnLFxuICAgICcjZmFjYmE2JyxcbiAgICAnI2Y4YjU4YicsXG4gICAgJyNmNTllNzInLFxuICAgICcjZjI4NTVkJyxcbiAgICAnI2VmNmE0YycsXG4gICAgJyNlYjRhNDAnLFxuICBdLFxuICBQbGFzbWE6IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVQbGFzbWEpLFxuICBQaW5rWWw6IFtcbiAgICAnI2ZlZjZiNScsXG4gICAgJyNmZmRkOWEnLFxuICAgICcjZmZjMjg1JyxcbiAgICAnI2ZmYTY3OScsXG4gICAgJyNmYThhNzYnLFxuICAgICcjZjE2ZDdhJyxcbiAgICAnI2UxNTM4MycsXG4gIF0sXG4gIFB1QnU6IGFzU2NoZW1lKHNjaGVtZVB1QnUpLFxuICBQdUJ1R246IGFzU2NoZW1lKHNjaGVtZVB1QnVHbiksXG4gIFB1UmQ6IGFzU2NoZW1lKHNjaGVtZVB1UmQpLFxuICBQdXJwOiBbXG4gICAgJyNmM2UwZjcnLFxuICAgICcjZTRjN2YxJyxcbiAgICAnI2QxYWZlOCcsXG4gICAgJyNiOTk4ZGQnLFxuICAgICcjOWY4MmNlJyxcbiAgICAnIzgyNmRiYScsXG4gICAgJyM2MzU4OWYnLFxuICBdLFxuICBQdXJwbGVzOiBhc1NjaGVtZShzY2hlbWVQdXJwbGVzKSxcbiAgUHVycE9yOiBbXG4gICAgJyNmOWRkZGEnLFxuICAgICcjZjJiOWM0JyxcbiAgICAnI2U1OTdiOScsXG4gICAgJyNjZTc4YjMnLFxuICAgICcjYWQ1ZmFkJyxcbiAgICAnIzgzNGJhMCcsXG4gICAgJyM1NzNiODgnLFxuICBdLFxuICBSZFB1OiBhc1NjaGVtZShzY2hlbWVSZFB1KSxcbiAgUmVkT3I6IFtcbiAgICAnI2Y2ZDJhOScsXG4gICAgJyNmNWI3OGUnLFxuICAgICcjZjE5YzdjJyxcbiAgICAnI2VhODE3MScsXG4gICAgJyNkZDY4NmMnLFxuICAgICcjY2E1MjY4JyxcbiAgICAnI2IxM2Y2NCcsXG4gIF0sXG4gIFJlZHM6IGFzU2NoZW1lKHNjaGVtZVJlZHMpLFxuICBTdW5zZXQ6IFtcbiAgICAnI2YzZTc5YicsXG4gICAgJyNmYWM0ODQnLFxuICAgICcjZjhhMDdlJyxcbiAgICAnI2ViN2Y4NicsXG4gICAgJyNjZTY2OTMnLFxuICAgICcjYTA1OWEwJyxcbiAgICAnIzVjNTNhNScsXG4gIF0sXG4gIFN1bnNldERhcms6IFtcbiAgICAnI2ZjZGU5YycsXG4gICAgJyNmYWE0NzYnLFxuICAgICcjZjA3NDZlJyxcbiAgICAnI2UzNGY2ZicsXG4gICAgJyNkYzM5NzcnLFxuICAgICcjYjkyNTdhJyxcbiAgICAnIzdjMWQ2ZicsXG4gIF0sXG4gIFRlYWw6IHNjaGVtZVRlYWwsXG4gIFRlYWxHcm46IFtcbiAgICAnI2IwZjJiYycsXG4gICAgJyM4OWU4YWMnLFxuICAgICcjNjdkYmE1JyxcbiAgICAnIzRjYzhhMycsXG4gICAgJyMzOGIyYTMnLFxuICAgICcjMmM5OGEwJyxcbiAgICAnIzI1N2Q5OCcsXG4gIF0sXG4gIFZpcmlkaXM6IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVWaXJpZGlzKSxcbiAgV2FybTogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZVdhcm0pLFxuICBZbEduOiBhc1NjaGVtZShzY2hlbWVZbEduKSxcbiAgWWxHbkJ1OiBhc1NjaGVtZShzY2hlbWVZbEduQnUpLFxuICBZbE9yQnI6IGFzU2NoZW1lKHNjaGVtZVlsT3JCciksXG4gIFlsT3JSZDogYXNTY2hlbWUoc2NoZW1lWWxPclJkKSxcbn07XG5cbmV4cG9ydCBjb25zdCBDT0xPUl9TQ0hFTUVfS0VZUyA9IE9iamVjdC5rZXlzKENPTE9SX1NDSEVNRVMpO1xuXG5jb25zdCBjb21wbGVtZW50YXJ5ID0gJyNmNTIwMjAnO1xuY29uc3QgYmFzZURpZmZDb2xvciA9ICcjMTdhNWJlJztcblxuY29uc3QgZGlmZkNvbG9yczogRGlmZkNvbG9ycyA9IHtcbiAgbmVnYXRpdmU6IHtcbiAgICBmbG93czoge1xuICAgICAgc2NoZW1lOiBbRkxPV19NSU5fQ09MT1IsIGJhc2VEaWZmQ29sb3JdLFxuICAgIH0sXG4gIH0sXG4gIHBvc2l0aXZlOiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogW0ZMT1dfTUlOX0NPTE9SLCBjb21wbGVtZW50YXJ5XSxcbiAgICB9LFxuICB9LFxuICBsb2NhdGlvbkFyZWFzOiB7XG4gICAgb3V0bGluZTogJ3JnYmEoOTIsMTEyLDEyOCwwLjUpJyxcbiAgICBub3JtYWw6ICdyZ2JhKDIyMCwyMjAsMjIwLDAuNSknLFxuICB9LFxuICBvdXRsaW5lQ29sb3I6ICdyZ2IoMjMwLDIzMywyMzcpJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGbG93bWFwQ29sb3JzKFxuICBzZXR0aW5nc1N0YXRlOiBTZXR0aW5nc1N0YXRlLFxuKTogQ29sb3JzIHwgRGlmZkNvbG9ycyB7XG4gIHJldHVybiBnZXRDb2xvcnMoXG4gICAgZmFsc2UsIC8vIFRPRE86IGRpZmZNb2RlXG4gICAgc2V0dGluZ3NTdGF0ZS5jb2xvclNjaGVtZSxcbiAgICBzZXR0aW5nc1N0YXRlLmRhcmtNb2RlLFxuICAgIHNldHRpbmdzU3RhdGUuZmFkZUVuYWJsZWQsXG4gICAgc2V0dGluZ3NTdGF0ZS5mYWRlT3BhY2l0eUVuYWJsZWQsXG4gICAgc2V0dGluZ3NTdGF0ZS5mYWRlQW1vdW50LFxuICAgIHNldHRpbmdzU3RhdGUuYW5pbWF0aW9uRW5hYmxlZCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9ycyhcbiAgZGlmZk1vZGU6IGJvb2xlYW4sXG4gIGNvbG9yU2NoZW1lOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgZGFya01vZGU6IGJvb2xlYW4sXG4gIGZhZGVFbmFibGVkOiBib29sZWFuLFxuICBmYWRlT3BhY2l0eUVuYWJsZWQ6IGJvb2xlYW4sXG4gIGZhZGVBbW91bnQ6IG51bWJlcixcbiAgYW5pbWF0ZTogYm9vbGVhbixcbik6IENvbG9ycyB8IERpZmZDb2xvcnMge1xuICBpZiAoZGlmZk1vZGUpIHtcbiAgICByZXR1cm4gZGlmZkNvbG9ycztcbiAgfVxuXG4gIGxldCBzY2hlbWU7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3JTY2hlbWUpKSB7XG4gICAgc2NoZW1lID0gY29sb3JTY2hlbWU7XG4gIH0gZWxzZSB7XG4gICAgc2NoZW1lID1cbiAgICAgIChjb2xvclNjaGVtZSAmJiBDT0xPUl9TQ0hFTUVTW2NvbG9yU2NoZW1lXSkgfHwgREVGQVVMVF9DT0xPUl9TQ0hFTUU7XG4gICAgaWYgKGRhcmtNb2RlKSB7XG4gICAgICBzY2hlbWUgPSBzY2hlbWUuc2xpY2UoKS5yZXZlcnNlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgKGFuaW1hdGUpXG4gIC8vIGlmIChmYWRlQW1vdW50ID4gMClcbiAge1xuICAgIGNvbnN0IGluZGljZXMgPSByYW5nZSgwLCBNYXRoLm1heCgxMCwgc2NoZW1lLmxlbmd0aCkpO1xuICAgIGNvbnN0IE4gPSBpbmRpY2VzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgY29sb3JTY2FsZSA9IHNjYWxlU2VxdWVudGlhbChpbnRlcnBvbGF0ZVJnYkJhc2lzKHNjaGVtZSkpLmRvbWFpbihbXG4gICAgICAwLFxuICAgICAgTixcbiAgICBdKTtcblxuICAgIGlmICghZmFkZUVuYWJsZWQgfHwgZmFkZUFtb3VudCA9PT0gMCkge1xuICAgICAgc2NoZW1lID0gaW5kaWNlcy5tYXAoKGMsIGkpID0+IGNvbG9yU2NhbGUoaSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhbW91bnQgPSBzY2FsZVBvdygpXG4gICAgICAgIC8vIC5leHBvbmVudChhbmltYXRlID8gMSA6IDEvMi41KVxuICAgICAgICAvLyAuZXhwb25lbnQoYW5pbWF0ZSA/IDEwMCA6IDUwKVxuICAgICAgICAvLyAuZXhwb25lbnQoYW5pbWF0ZSA/IDIwIDogNSlcbiAgICAgICAgLy8gLmV4cG9uZW50KDEvMi41KVxuICAgICAgICAuZXhwb25lbnQoMS41KVxuICAgICAgICAuZG9tYWluKFtOLCAwXSlcbiAgICAgICAgLy8gLnJhbmdlKFtmYWRlQW1vdW50LzEwMCooYW5pbWF0ZT8yOjEpLCAwXSlcbiAgICAgICAgLy8gLnJhbmdlKFswLCBmYWRlQW1vdW50LzEwMCooYW5pbWF0ZT8yOjEpXSlcbiAgICAgICAgLy8gLnJhbmdlKGRhcmtNb2RlID8gWzEtZmFkZUFtb3VudC8xMDAsIDFdIDogWzEsIDEgLSBmYWRlQW1vdW50LzEwMF0pXG4gICAgICAgIC8vIC5yYW5nZShkYXJrTW9kZSA/IFsxIC0gZmFkZUFtb3VudC8xMDAsIDFdIDogW2ZhZGVBbW91bnQvMTAwLCAwXSlcbiAgICAgICAgLy8gLnJhbmdlKFsxIC0gZmFkZUFtb3VudC8xMDAsIDFdKVxuICAgICAgICAucmFuZ2UoWzAsICgyICogZmFkZUFtb3VudCkgLyAxMDBdKTtcblxuICAgICAgc2NoZW1lID0gaW5kaWNlcy5tYXAoXG4gICAgICAgIChjLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29sb3IgPSBjb2xvclNjYWxlKGkpO1xuICAgICAgICAgIGNvbnN0IGEgPSBhbW91bnQoaSk7XG4gICAgICAgICAgaWYgKGNvbG9yID09IG51bGwgfHwgYSA9PSBudWxsKSByZXR1cm4gJyMwMDAnO1xuICAgICAgICAgIGNvbnN0IGNvbCA9IGhjbChjb2xvcik7XG4gICAgICAgICAgY29sLmwgPSBkYXJrTW9kZSA/IGNvbC5sIC0gY29sLmwgKiBhIDogY29sLmwgKyAoMTAwIC0gY29sLmwpICogYTtcbiAgICAgICAgICBjb2wuYyA9IGNvbC5jIC0gY29sLmMgKiAoYSAvIDQpO1xuICAgICAgICAgIGlmIChmYWRlT3BhY2l0eUVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbC5vcGFjaXR5ID0gY29sLm9wYWNpdHkgKiAoMS4wIC0gYSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb2wudG9TdHJpbmcoKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gaW50ZXJwb2xhdGVSZ2JCYXNpcyhbY29sb3JTY2FsZShpKSwgZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZiddKShhbW91bnQoaSkpXG4gICAgICAgIC8vIGludGVycG9sYXRlSHNsKGNvbG9yU2NhbGUoaSksIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnKShhbW91bnQoaSkpLnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXJrTW9kZSxcbiAgICBmbG93czoge1xuICAgICAgc2NoZW1lLFxuICAgIH0sXG4gICAgbG9jYXRpb25DaXJjbGVzOiB7XG4gICAgICBvdXRnb2luZzogZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZicsXG4gICAgfSxcbiAgICBvdXRsaW5lQ29sb3I6IGRhcmtNb2RlID8gJyMwMDAnIDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KScsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGludGVycG9sYXRlUmdiYUJhc2lzKGNvbG9yczogc3RyaW5nW10pIHtcbiAgY29uc3Qgc3BsaW5lID0gaW50ZXJwb2xhdGVCYXNpcztcbiAgY29uc3QgbiA9IGNvbG9ycy5sZW5ndGg7XG4gIGxldCByOiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgZzogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGI6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBvcGFjaXR5OiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgaSxcbiAgICBjb2xvcjogYW55O1xuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgY29sb3IgPSBjb2xvclJnYihjb2xvcnNbaV0pO1xuICAgIHJbaV0gPSBjb2xvci5yIHx8IDA7XG4gICAgZ1tpXSA9IGNvbG9yLmcgfHwgMDtcbiAgICBiW2ldID0gY29sb3IuYiB8fCAwO1xuICAgIG9wYWNpdHlbaV0gPSBjb2xvci5vcGFjaXR5IHx8IDA7XG4gIH1cbiAgciA9IHNwbGluZShyKTtcbiAgZyA9IHNwbGluZShnKTtcbiAgYiA9IHNwbGluZShiKTtcbiAgb3BhY2l0eSA9IHNwbGluZShvcGFjaXR5KTtcbiAgLy8gY29sb3Iub3BhY2l0eSA9IDE7XG4gIHJldHVybiBmdW5jdGlvbiAodDogbnVtYmVyKSB7XG4gICAgY29sb3IuciA9IHIodCk7XG4gICAgY29sb3IuZyA9IGcodCk7XG4gICAgY29sb3IuYiA9IGIodCk7XG4gICAgY29sb3Iub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgcmV0dXJuIGNvbG9yICsgJyc7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGbG93Q29sb3JTY2FsZShcbiAgZG9tYWluOiBbbnVtYmVyLCBudW1iZXJdLFxuICBzY2hlbWU6IHN0cmluZ1tdLFxuICBhbmltYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogQ29sb3JTY2FsZSB7XG4gIGNvbnN0IHNjYWxlID0gc2NhbGVTZXF1ZW50aWFsUG93KGludGVycG9sYXRlUmdiYUJhc2lzKHNjaGVtZSkpXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIC5leHBvbmVudChhbmltYXRlID8gMSAvIDIgOiAxIC8gMylcbiAgICAuZG9tYWluKGRvbWFpbik7XG5cbiAgcmV0dXJuICh2YWx1ZTogbnVtYmVyKSA9PiBjb2xvckFzUmdiYShzY2FsZSh2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmxvd0NvbG9yU2NhbGUoXG4gIGNvbG9yczogQ29sb3JzUkdCQSB8IERpZmZDb2xvcnNSR0JBLFxuICBtYWduaXR1ZGVFeHRlbnQ6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsXG4gIGFuaW1hdGU6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4pOiAobWFnbml0dWRlOiBudW1iZXIpID0+IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgbWluTWFnbml0dWRlID0gbWFnbml0dWRlRXh0ZW50ID8gbWFnbml0dWRlRXh0ZW50WzBdIDogMDtcbiAgY29uc3QgbWF4TWFnbml0dWRlID0gbWFnbml0dWRlRXh0ZW50ID8gbWFnbml0dWRlRXh0ZW50WzFdIDogMDtcbiAgaWYgKGlzRGlmZkNvbG9yc1JHQkEoY29sb3JzKSkge1xuICAgIGNvbnN0IHBvc1NjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgICBbMCwgbWF4TWFnbml0dWRlXSxcbiAgICAgIGNvbG9ycy5wb3NpdGl2ZS5mbG93cy5zY2hlbWUsXG4gICAgICBhbmltYXRlLFxuICAgICk7XG4gICAgY29uc3QgbmVnU2NhbGUgPSBjcmVhdGVGbG93Q29sb3JTY2FsZShcbiAgICAgIFswLCBtaW5NYWduaXR1ZGVdLFxuICAgICAgY29sb3JzLm5lZ2F0aXZlLmZsb3dzLnNjaGVtZSxcbiAgICAgIGFuaW1hdGUsXG4gICAgKTtcblxuICAgIHJldHVybiAobWFnbml0dWRlOiBudW1iZXIpID0+XG4gICAgICBtYWduaXR1ZGUgPj0gMCA/IHBvc1NjYWxlKG1hZ25pdHVkZSkgOiBuZWdTY2FsZShtYWduaXR1ZGUpO1xuICB9XG5cbiAgY29uc3Qgc2NhbGUgPSBjcmVhdGVGbG93Q29sb3JTY2FsZShcbiAgICBbMCwgbWF4TWFnbml0dWRlIHx8IDBdLFxuICAgIGNvbG9ycy5mbG93cy5zY2hlbWUsXG4gICAgYW5pbWF0ZSxcbiAgKTtcbiAgcmV0dXJuIChtYWduaXR1ZGU6IG51bWJlcikgPT4gc2NhbGUobWFnbml0dWRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlmZkNvbG9ycyhcbiAgY29sb3JzOiBEaWZmQ29sb3JzIHwgQ29sb3JzLFxuKTogY29sb3JzIGlzIERpZmZDb2xvcnMge1xuICByZXR1cm4gKGNvbG9ycyBhcyBEaWZmQ29sb3JzKS5wb3NpdGl2ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWZmQ29sb3JzUkdCQShcbiAgY29sb3JzOiBEaWZmQ29sb3JzUkdCQSB8IENvbG9yc1JHQkEsXG4pOiBjb2xvcnMgaXMgRGlmZkNvbG9yc1JHQkEge1xuICByZXR1cm4gKGNvbG9ycyBhcyBEaWZmQ29sb3JzUkdCQSkucG9zaXRpdmUgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0TG9jYXRpb25BcmVhQ29sb3JzUkdCQShcbiAgY29sb3JzOiBMb2NhdGlvbkFyZWFDb2xvcnMgfCB1bmRlZmluZWQsXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuKTogTG9jYXRpb25BcmVhQ29sb3JzUkdCQSB7XG4gIGNvbnN0IG5vcm1hbENvbG9yID0gKGNvbG9ycyAmJiBjb2xvcnMubm9ybWFsKSB8fCBERUZBVUxUX0xPQ0FUSU9OX0FSRUFfQ09MT1I7XG4gIGNvbnN0IG5vcm1hbENvbG9ySGNsID0gaGNsKG5vcm1hbENvbG9yKTtcbiAgY29uc3QgbG9jYXRpb25BcmVhc05vcm1hbCA9IGNvbG9yQXNSZ2JhKG5vcm1hbENvbG9yKTtcbiAgcmV0dXJuIHtcbiAgICBub3JtYWw6IGxvY2F0aW9uQXJlYXNOb3JtYWwsXG4gICAgY29ubmVjdGVkOiBjb2xvckFzUmdiYU9yKGNvbG9ycyAmJiBjb2xvcnMuY29ubmVjdGVkLCBsb2NhdGlvbkFyZWFzTm9ybWFsKSxcbiAgICBoaWdobGlnaHRlZDogY29sb3JBc1JnYmFPcihcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMuaGlnaGxpZ2h0ZWQsXG4gICAgICBvcGFjaWZ5SGV4KFxuICAgICAgICBub3JtYWxDb2xvckhjbFtkYXJrTW9kZSA/ICdicmlnaHRlcicgOiAnZGFya2VyJ10oMSkudG9TdHJpbmcoKSxcbiAgICAgICAgMC41LFxuICAgICAgKSxcbiAgICApLFxuICAgIHNlbGVjdGVkOiBjb2xvckFzUmdiYU9yKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5zZWxlY3RlZCxcbiAgICAgIG9wYWNpZnlIZXgoXG4gICAgICAgIG5vcm1hbENvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgyKS50b1N0cmluZygpLFxuICAgICAgICAwLjgsXG4gICAgICApLFxuICAgICksXG4gICAgb3V0bGluZTogY29sb3JBc1JnYmFPcihcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMub3V0bGluZSxcbiAgICAgIGNvbG9yQXNSZ2JhKFxuICAgICAgICBub3JtYWxDb2xvckhjbFtkYXJrTW9kZSA/ICdicmlnaHRlcicgOiAnZGFya2VyJ10oNCkudG9TdHJpbmcoKSxcbiAgICAgICksXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q29sb3JzIHtcbiAgc2NoZW1lPzogc3RyaW5nW107XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQ2lyY2xlQ29sb3JzIHtcbiAgaW5uZXI/OiBzdHJpbmc7XG4gIG91dGdvaW5nPzogc3RyaW5nO1xuICBpbmNvbWluZz86IHN0cmluZztcbiAgaGlnaGxpZ2h0ZWQ/OiBzdHJpbmc7XG4gIGVtcHR5Pzogc3RyaW5nO1xuICBvdXRsaW5lRW1wdHlNaXg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BcmVhQ29sb3JzIHtcbiAgb3V0bGluZT86IHN0cmluZztcbiAgbm9ybWFsPzogc3RyaW5nO1xuICBzZWxlY3RlZD86IHN0cmluZztcbiAgaGlnaGxpZ2h0ZWQ/OiBzdHJpbmc7XG4gIGNvbm5lY3RlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ29sb3JzIHtcbiAgZGFya01vZGU/OiBib29sZWFuO1xuICBsb2NhdGlvbkFyZWFzPzogTG9jYXRpb25BcmVhQ29sb3JzO1xuICBkaW1tZWRPcGFjaXR5PzogbnVtYmVyO1xuICBvdXRsaW5lQ29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JzIGV4dGVuZHMgQmFzZUNvbG9ycyB7XG4gIGZsb3dzPzogRmxvd0NvbG9ycztcbiAgbG9jYXRpb25DaXJjbGVzPzogTG9jYXRpb25DaXJjbGVDb2xvcnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0FuZENpcmNsZUNvbG9ycyB7XG4gIGZsb3dzPzogRmxvd0NvbG9ycztcbiAgbG9jYXRpb25DaXJjbGVzPzogTG9jYXRpb25DaXJjbGVDb2xvcnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkNvbG9ycyBleHRlbmRzIEJhc2VDb2xvcnMge1xuICBwb3NpdGl2ZT86IEZsb3dBbmRDaXJjbGVDb2xvcnM7XG4gIG5lZ2F0aXZlPzogRmxvd0FuZENpcmNsZUNvbG9ycztcbn1cblxuLy8gVGhlIHh4eENvbG9yc1JHQkEgb2JqZWN0cyBhcmUgbWlycm9yaW5nIHRoZSBpbnB1dCBjb2xvcnMnIG9iamVjdHMsXG4vLyBidXQgY29udmVydGVkIHRvIFJHQkEgYW5kIHdpdGggYWxsIHRoZSBvbWl0dGVkIG9uZXMgc2V0IHRvIGRlZmF1bHRzXG4vLyBvciBkZXJpdmVkLlxuZXhwb3J0IGludGVyZmFjZSBGbG93Q29sb3JzUkdCQSB7XG4gIHNjaGVtZTogc3RyaW5nW107XG4gIGhpZ2hsaWdodGVkOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQ2lyY2xlQ29sb3JzUkdCQSB7XG4gIGlubmVyOiBSR0JBO1xuICBvdXRnb2luZzogUkdCQTtcbiAgaW5jb21pbmc6IFJHQkE7XG4gIGhpZ2hsaWdodGVkOiBSR0JBO1xuICBlbXB0eTogUkdCQTtcbiAgb3V0bGluZUVtcHR5TWl4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BcmVhQ29sb3JzUkdCQSB7XG4gIG91dGxpbmU6IFJHQkE7XG4gIG5vcm1hbDogUkdCQTtcbiAgc2VsZWN0ZWQ6IFJHQkE7XG4gIGhpZ2hsaWdodGVkOiBSR0JBO1xuICBjb25uZWN0ZWQ6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbG9yc1JHQkEge1xuICBkYXJrTW9kZTogYm9vbGVhbjtcbiAgbG9jYXRpb25BcmVhczogTG9jYXRpb25BcmVhQ29sb3JzUkdCQTtcbiAgZGltbWVkT3BhY2l0eTogbnVtYmVyO1xuICBvdXRsaW5lQ29sb3I6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JzUkdCQSBleHRlbmRzIEJhc2VDb2xvcnNSR0JBIHtcbiAgZmxvd3M6IEZsb3dDb2xvcnNSR0JBO1xuICBsb2NhdGlvbkNpcmNsZXM6IExvY2F0aW9uQ2lyY2xlQ29sb3JzUkdCQTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQSB7XG4gIGZsb3dzOiBGbG93Q29sb3JzUkdCQTtcbiAgbG9jYXRpb25DaXJjbGVzOiBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkNvbG9yc1JHQkEgZXh0ZW5kcyBCYXNlQ29sb3JzUkdCQSB7XG4gIHBvc2l0aXZlOiBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQTtcbiAgbmVnYXRpdmU6IEZsb3dBbmRDaXJjbGVDb2xvcnNSR0JBO1xufVxuXG5mdW5jdGlvbiBnZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICBpbnB1dENvbG9yczogRmxvd0FuZENpcmNsZUNvbG9ycyB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdEZsb3dDb2xvclNjaGVtZTogc3RyaW5nW10sXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuKTogRmxvd0FuZENpcmNsZUNvbG9yc1JHQkEge1xuICBjb25zdCBmbG93Q29sb3JTY2hlbWUgPVxuICAgIChpbnB1dENvbG9ycyAmJiBpbnB1dENvbG9ycy5mbG93cyAmJiBpbnB1dENvbG9ycy5mbG93cy5zY2hlbWUpIHx8XG4gICAgZGVmYXVsdEZsb3dDb2xvclNjaGVtZTtcbiAgY29uc3QgbWF4Rmxvd0NvbG9ySGNsID0gaGNsKGZsb3dDb2xvclNjaGVtZVtmbG93Q29sb3JTY2hlbWUubGVuZ3RoIC0gMV0pO1xuICBjb25zdCBmbG93Q29sb3JIaWdobGlnaHRlZCA9IGNvbG9yQXNSZ2JhT3IoXG4gICAgaW5wdXRDb2xvcnMgJiYgaW5wdXRDb2xvcnMuZmxvd3MgJiYgaW5wdXRDb2xvcnMuZmxvd3MuaGlnaGxpZ2h0ZWQsXG4gICAgY29sb3JBc1JnYmEoXG4gICAgICBtYXhGbG93Q29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDAuNykudG9TdHJpbmcoKSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0IGVtcHR5Q29sb3IgPSBjb2xvckFzUmdiYU9yKFxuICAgIGlucHV0Q29sb3JzPy5sb2NhdGlvbkNpcmNsZXM/LmVtcHR5LFxuICAgIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICApO1xuICBjb25zdCBpbm5lckNvbG9yID0gY29sb3JBc1JnYmFPcihcbiAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMuaW5uZXIsXG4gICAgbWF4Rmxvd0NvbG9ySGNsLnRvU3RyaW5nKCksXG4gICk7XG4gIHJldHVybiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogZmxvd0NvbG9yU2NoZW1lLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IGZsb3dDb2xvckhpZ2hsaWdodGVkLFxuICAgIH0sXG4gICAgbG9jYXRpb25DaXJjbGVzOiB7XG4gICAgICBpbm5lcjogaW5uZXJDb2xvcixcbiAgICAgIG91dGdvaW5nOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5vdXRnb2luZyxcbiAgICAgICAgZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZicsXG4gICAgICApLFxuICAgICAgaW5jb21pbmc6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICAgIGlucHV0Q29sb3JzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmluY29taW5nLFxuICAgICAgICBtYXhGbG93Q29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDEuMjUpLnRvU3RyaW5nKCksXG4gICAgICApLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICAgIGlucHV0Q29sb3JzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmhpZ2hsaWdodGVkLFxuICAgICAgICBmbG93Q29sb3JIaWdobGlnaHRlZCxcbiAgICAgICksXG4gICAgICBlbXB0eTogZW1wdHlDb2xvcixcbiAgICAgIG91dGxpbmVFbXB0eU1peDogaW5wdXRDb2xvcnM/LmxvY2F0aW9uQ2lyY2xlcz8ub3V0bGluZUVtcHR5TWl4ID8/IDAuNCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCYXNlQ29sb3JzUkdCQShcbiAgY29sb3JzOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHwgdW5kZWZpbmVkLFxuKTogQmFzZUNvbG9yc1JHQkEge1xuICBjb25zdCBkYXJrTW9kZSA9IGNvbG9ycyAmJiBjb2xvcnMuZGFya01vZGUgPyB0cnVlIDogZmFsc2U7XG4gIHJldHVybiB7XG4gICAgZGFya01vZGUsXG4gICAgbG9jYXRpb25BcmVhczogZ2V0TG9jYXRpb25BcmVhQ29sb3JzUkdCQShcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMubG9jYXRpb25BcmVhcyxcbiAgICAgIGRhcmtNb2RlLFxuICAgICksXG4gICAgb3V0bGluZUNvbG9yOiBjb2xvckFzUmdiYShcbiAgICAgIChjb2xvcnMgJiYgY29sb3JzLm91dGxpbmVDb2xvcikgfHwgREVGQVVMVF9PVVRMSU5FX0NPTE9SLFxuICAgICksXG4gICAgZGltbWVkT3BhY2l0eTpcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMuZGltbWVkT3BhY2l0eSAhPSBudWxsXG4gICAgICAgID8gY29sb3JzLmRpbW1lZE9wYWNpdHlcbiAgICAgICAgOiBERUZBVUxUX0RJTU1FRF9PUEFDSVRZLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JzUkdCQShjb2xvcnM6IENvbG9ycyB8IHVuZGVmaW5lZCk6IENvbG9yc1JHQkEge1xuICBjb25zdCBiYXNlQ29sb3JzUkdCQSA9IGdldEJhc2VDb2xvcnNSR0JBKGNvbG9ycyk7XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZUNvbG9yc1JHQkEsXG4gICAgLi4uZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyxcbiAgICAgIERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUUsXG4gICAgICBiYXNlQ29sb3JzUkdCQS5kYXJrTW9kZSxcbiAgICApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlmZkNvbG9yc1JHQkEoXG4gIGNvbG9yczogRGlmZkNvbG9ycyB8IHVuZGVmaW5lZCxcbik6IERpZmZDb2xvcnNSR0JBIHtcbiAgY29uc3QgYmFzZUNvbG9yc1JHQkEgPSBnZXRCYXNlQ29sb3JzUkdCQShjb2xvcnMpO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VDb2xvcnNSR0JBLFxuICAgIHBvc2l0aXZlOiBnZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5wb3NpdGl2ZSxcbiAgICAgIERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUVfUE9TSVRJVkUsXG4gICAgICBiYXNlQ29sb3JzUkdCQS5kYXJrTW9kZSxcbiAgICApLFxuICAgIG5lZ2F0aXZlOiBnZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5uZWdhdGl2ZSxcbiAgICAgIERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUVfTkVHQVRJVkUsXG4gICAgICBiYXNlQ29sb3JzUkdCQS5kYXJrTW9kZSxcbiAgICApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiYUFzU3RyaW5nKGNvbG9yOiBSR0JBKTogc3RyaW5nIHtcbiAgcmV0dXJuIGByZ2JhKCR7Y29sb3Iuam9pbignLCcpfSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWlkcG9pbnQoYTogbnVtYmVyLCBiOiBudW1iZXIsIHplcm9Ub09uZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGEgKyAoYiAtIGEpICogemVyb1RvT25lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWl4Q29sb3JzUkdCQShcbiAgY29sb3IxOiBSR0JBLFxuICBjb2xvcjI6IFJHQkEsXG4gIHplcm9Ub09uZTogbnVtYmVyLFxuKTogUkdCQSB7XG4gIHJldHVybiBjb2xvcjEubWFwKCh2LCBpKSA9PiBtaWRwb2ludCh2LCBjb2xvcjJbaV0sIHplcm9Ub09uZSkpIGFzIFJHQkE7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldENvbG9ycztcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { FeatureCollection, GeometryCollection, GeometryObject } from 'geojson';
|
|
2
|
+
import type { ViewState } from './types';
|
|
3
|
+
export declare type LocationProperties = any;
|
|
4
|
+
export declare type GetViewStateOptions = {
|
|
5
|
+
pad?: number;
|
|
6
|
+
padding?: {
|
|
7
|
+
top: number;
|
|
8
|
+
bottom: number;
|
|
9
|
+
left: number;
|
|
10
|
+
right: number;
|
|
11
|
+
};
|
|
12
|
+
tileSize?: number;
|
|
13
|
+
maxZoom?: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function getViewStateForFeatures(featureCollection: FeatureCollection<GeometryObject, LocationProperties> | GeometryCollection, size: [number, number], opts?: GetViewStateOptions): ViewState & {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
};
|
|
19
|
+
export declare function getViewStateForLocations(locations: any[], getLocationCoords: (location: any) => [number, number], size: [number, number], opts?: GetViewStateOptions): ViewState & {
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=getViewStateForLocations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getViewStateForLocations.d.ts","sourceRoot":"","sources":["../src/getViewStateForLocations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAEvC,oBAAY,kBAAkB,GAAG,GAAG,CAAC;AAErC,oBAAY,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,iBAAiB,EACb,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,CAAC,GACrD,kBAAkB,EACtB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,IAAI,CAAC,EAAE,mBAAmB,GACzB,SAAS,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAyB7C;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,GAAG,EAAE,EAChB,iBAAiB,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EACtD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,IAAI,CAAC,EAAE,mBAAmB,GACzB,SAAS,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAY7C"}
|