@kepler.gl/constants 3.3.0-alpha.1 → 3.3.0-alpha.10

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 (46) hide show
  1. package/dist/cjs/annotation.js +45 -0
  2. package/dist/cjs/color-palettes.js +461 -0
  3. package/dist/cjs/colors-by-theme.js +519 -0
  4. package/dist/cjs/dataset.js +176 -0
  5. package/dist/cjs/default-settings.js +1740 -0
  6. package/dist/cjs/gpu-parameters.js +125 -0
  7. package/dist/cjs/index.js +149 -0
  8. package/dist/cjs/keyevent.js +26 -0
  9. package/dist/cjs/layers.js +609 -0
  10. package/dist/{plot.js → cjs/plot.js} +1 -1
  11. package/dist/cjs/time.js +194 -0
  12. package/dist/cjs/tooltip.js +221 -0
  13. package/dist/cjs/user-feedbacks.js +15 -0
  14. package/dist/cjs/user-guides.js +19 -0
  15. package/dist/dataset.d.ts +52 -0
  16. package/dist/default-settings.d.ts +81 -1
  17. package/dist/esm/annotation.js +38 -0
  18. package/dist/esm/color-palettes.js +453 -0
  19. package/dist/esm/colors-by-theme.js +513 -0
  20. package/dist/esm/dataset.js +169 -0
  21. package/dist/esm/default-settings.js +1734 -0
  22. package/dist/esm/gpu-parameters.js +119 -0
  23. package/dist/esm/index.js +18 -0
  24. package/dist/esm/keyevent.js +19 -0
  25. package/dist/esm/layers.js +602 -0
  26. package/dist/esm/plot.js +9 -0
  27. package/dist/esm/time.js +190 -0
  28. package/dist/esm/tooltip.js +215 -0
  29. package/dist/esm/user-feedbacks.js +9 -0
  30. package/dist/esm/user-guides.js +13 -0
  31. package/dist/layers.d.ts +4 -0
  32. package/package.json +20 -13
  33. package/dist/annotation.js +0 -45
  34. package/dist/color-palettes.js +0 -462
  35. package/dist/colors-by-theme.js +0 -519
  36. package/dist/dataset.js +0 -82
  37. package/dist/default-settings.js +0 -1646
  38. package/dist/gpu-parameters.js +0 -125
  39. package/dist/index.js +0 -149
  40. package/dist/keyevent.js +0 -26
  41. package/dist/layers.js +0 -605
  42. package/dist/time.js +0 -194
  43. package/dist/tooltip.js +0 -221
  44. package/dist/user-feedbacks.js +0 -15
  45. package/dist/user-guides.js +0 -19
  46. package/umd/keplergl.min.js +0 -58
@@ -0,0 +1,169 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright contributors to the kepler.gl project
3
+
4
+ export var DatasetType = /*#__PURE__*/function (DatasetType) {
5
+ DatasetType["LOCAL"] = "local";
6
+ DatasetType["EXTERNALLY_HOSTED"] = "externally-hosted";
7
+ DatasetType["VECTOR_TILE"] = "vector-tile";
8
+ DatasetType["RASTER_TILE"] = "raster-tile";
9
+ DatasetType["WMS_TILE"] = "wms-tile";
10
+ DatasetType["TILE_3D"] = "tile-3d";
11
+ DatasetType["BITMAP"] = "bitmap";
12
+ return DatasetType;
13
+ }({});
14
+ export var REMOTE_FILE_FORMATS = ['auto', 'csv', 'geojson', 'json', 'arrow', 'parquet'];
15
+ export var REMOTE_FILE_MIME_TYPES = {
16
+ csv: 'text/csv',
17
+ geojson: 'application/geo+json',
18
+ json: 'application/json',
19
+ arrow: 'application/vnd.apache.arrow.file',
20
+ parquet: 'application/vnd.apache.parquet'
21
+ };
22
+ export var REMOTE_FILE_EXTENSIONS = {
23
+ csv: 'csv',
24
+ geojson: 'geojson',
25
+ json: 'json',
26
+ arrow: 'arrow',
27
+ parquet: 'parquet'
28
+ };
29
+ export var MIME_TO_REMOTE_FILE_EXTENSION = {
30
+ 'text/csv': 'csv',
31
+ 'text/tab-separated-values': 'tsv',
32
+ 'application/geo+json': 'geojson',
33
+ 'application/vnd.geo+json': 'geojson',
34
+ 'application/json': 'json',
35
+ 'application/vnd.apache.arrow.file': 'arrow',
36
+ 'application/vnd.apache.arrow.stream': 'arrow',
37
+ 'application/vnd.apache.parquet': 'parquet',
38
+ 'application/x-parquet': 'parquet'
39
+ };
40
+ export var DATASET_REFRESH_INTERVAL_OPTIONS = [{
41
+ value: 0,
42
+ labelId: 'datasetTitle.refreshOff'
43
+ }, {
44
+ value: 10000,
45
+ labelId: 'datasetTitle.refresh10s'
46
+ }, {
47
+ value: 15000,
48
+ labelId: 'datasetTitle.refresh15s'
49
+ }, {
50
+ value: 60000,
51
+ labelId: 'datasetTitle.refresh1m'
52
+ }, {
53
+ value: 300000,
54
+ labelId: 'datasetTitle.refresh5m'
55
+ }, {
56
+ value: 900000,
57
+ labelId: 'datasetTitle.refresh15m'
58
+ }];
59
+
60
+ /** Select value for a user-entered interval that is not one of the presets. */
61
+ export var DATASET_REFRESH_CUSTOM_VALUE = 'custom';
62
+ /** Default custom poll interval when switching from Off to Custom. */
63
+ export var DATASET_REFRESH_DEFAULT_CUSTOM_MS = 30000;
64
+ export var DATASET_REFRESH_MIN_INTERVAL_MS = 100;
65
+ export function isPresetDatasetRefreshInterval(ms) {
66
+ return DATASET_REFRESH_INTERVAL_OPTIONS.some(function (option) {
67
+ return option.value === ms;
68
+ });
69
+ }
70
+
71
+ /** Runtime copy of {@link ExternalDatasetMetadata} with `format` renamed to avoid colliding with DATASET_FORMATS. */
72
+
73
+ export function getDatasetRefreshIntervalMs(metadata) {
74
+ var value = metadata === null || metadata === void 0 ? void 0 : metadata.refreshIntervalMs;
75
+ return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : 0;
76
+ }
77
+
78
+ /** Parse a seconds field into ms, or null if the input is not a positive number. */
79
+ export function parseCustomRefreshIntervalMs(secondsText) {
80
+ var seconds = Number.parseFloat(secondsText);
81
+ if (!Number.isFinite(seconds) || seconds <= 0) {
82
+ return null;
83
+ }
84
+ return Math.max(DATASET_REFRESH_MIN_INTERVAL_MS, Math.round(seconds * 1000));
85
+ }
86
+
87
+ /** Display string for the custom seconds input (keeps tenths for sub-second values). */
88
+ export function formatCustomRefreshSeconds(ms) {
89
+ var seconds = Math.max(DATASET_REFRESH_MIN_INTERVAL_MS, ms) / 1000;
90
+ if (Number.isInteger(seconds)) {
91
+ return String(seconds);
92
+ }
93
+ return String(Number(seconds.toFixed(3)));
94
+ }
95
+ export function getRemoteSourceFormat(metadata) {
96
+ var candidate = typeof (metadata === null || metadata === void 0 ? void 0 : metadata.sourceFormat) === 'string' && metadata.sourceFormat || typeof (metadata === null || metadata === void 0 ? void 0 : metadata.format) === 'string' && metadata.format || undefined;
97
+ if (candidate && candidate !== 'auto' && Object.prototype.hasOwnProperty.call(REMOTE_FILE_EXTENSIONS, candidate)) {
98
+ return candidate;
99
+ }
100
+ return undefined;
101
+ }
102
+ export var RemoteTileFormat = /*#__PURE__*/function (RemoteTileFormat) {
103
+ RemoteTileFormat["MVT"] = "mvt";
104
+ RemoteTileFormat["PMTILES"] = "pmtiles";
105
+ RemoteTileFormat["WMS"] = "wms";
106
+ return RemoteTileFormat;
107
+ }({});
108
+ export var PMTilesType = /*#__PURE__*/function (PMTilesType) {
109
+ PMTilesType["RASTER"] = "raster";
110
+ PMTilesType["MVT"] = "mvt";
111
+ return PMTilesType;
112
+ }({});
113
+ export var REMOTE_TILE = 'remote';
114
+
115
+ /**
116
+ * Raster tileset metadata in STAC Item format. STAC version must be >= 1.0.0,
117
+ * and the EO and Raster STAC extensions are required. This metadata shape can
118
+ * be passed to the map to synchronously add a raster tileset.
119
+ * @see https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md
120
+ */
121
+
122
+ /**
123
+ * Raster tileset metadata with a remote metadata URL. This metadata can
124
+ * be passed to the map to asynchronously load a raster tileset.
125
+ */
126
+
127
+ export var RasterTileType = /*#__PURE__*/function (RasterTileType) {
128
+ RasterTileType["STAC"] = "stac";
129
+ RasterTileType["PMTILES"] = "pmtiles";
130
+ return RasterTileType;
131
+ }({});
132
+
133
+ /**
134
+ * Raster tileset metadata.
135
+ */
136
+
137
+ export var TILE3D_PROVIDERS = {
138
+ google: {
139
+ name: 'Google 3D Tiles',
140
+ urlKey: 'google',
141
+ attribution: {
142
+ title: 'Built with Google Maps.',
143
+ url: '',
144
+ logoUrl: 'https://studio-public-data.foursquare.com/statics/images/google-watermark-white.png',
145
+ height: 17,
146
+ bottom: 0
147
+ }
148
+ },
149
+ cesium: {
150
+ name: 'Cesium ion',
151
+ urlKey: 'ion.cesium',
152
+ attribution: {
153
+ title: 'Cesium.',
154
+ url: 'https://cesium.com/',
155
+ height: 19,
156
+ bottom: 0
157
+ }
158
+ },
159
+ arcgis: {
160
+ name: 'ArcGIS',
161
+ urlKey: 'arcgis',
162
+ attribution: {
163
+ title: 'Powered by Esri.',
164
+ url: 'https://arcgis.com/',
165
+ height: 16
166
+ }
167
+ }
168
+ };
169
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhc2V0VHlwZSIsIlJFTU9URV9GSUxFX0ZPUk1BVFMiLCJSRU1PVEVfRklMRV9NSU1FX1RZUEVTIiwiY3N2IiwiZ2VvanNvbiIsImpzb24iLCJhcnJvdyIsInBhcnF1ZXQiLCJSRU1PVEVfRklMRV9FWFRFTlNJT05TIiwiTUlNRV9UT19SRU1PVEVfRklMRV9FWFRFTlNJT04iLCJEQVRBU0VUX1JFRlJFU0hfSU5URVJWQUxfT1BUSU9OUyIsInZhbHVlIiwibGFiZWxJZCIsIkRBVEFTRVRfUkVGUkVTSF9DVVNUT01fVkFMVUUiLCJEQVRBU0VUX1JFRlJFU0hfREVGQVVMVF9DVVNUT01fTVMiLCJEQVRBU0VUX1JFRlJFU0hfTUlOX0lOVEVSVkFMX01TIiwiaXNQcmVzZXREYXRhc2V0UmVmcmVzaEludGVydmFsIiwibXMiLCJzb21lIiwib3B0aW9uIiwiZ2V0RGF0YXNldFJlZnJlc2hJbnRlcnZhbE1zIiwibWV0YWRhdGEiLCJyZWZyZXNoSW50ZXJ2YWxNcyIsIk51bWJlciIsImlzRmluaXRlIiwicGFyc2VDdXN0b21SZWZyZXNoSW50ZXJ2YWxNcyIsInNlY29uZHNUZXh0Iiwic2Vjb25kcyIsInBhcnNlRmxvYXQiLCJNYXRoIiwibWF4Iiwicm91bmQiLCJmb3JtYXRDdXN0b21SZWZyZXNoU2Vjb25kcyIsImlzSW50ZWdlciIsIlN0cmluZyIsInRvRml4ZWQiLCJnZXRSZW1vdGVTb3VyY2VGb3JtYXQiLCJjYW5kaWRhdGUiLCJzb3VyY2VGb3JtYXQiLCJmb3JtYXQiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJSZW1vdGVUaWxlRm9ybWF0IiwiUE1UaWxlc1R5cGUiLCJSRU1PVEVfVElMRSIsIlJhc3RlclRpbGVUeXBlIiwiVElMRTNEX1BST1ZJREVSUyIsImdvb2dsZSIsIm5hbWUiLCJ1cmxLZXkiLCJhdHRyaWJ1dGlvbiIsInRpdGxlIiwidXJsIiwibG9nb1VybCIsImhlaWdodCIsImJvdHRvbSIsImNlc2l1bSIsImFyY2dpcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCBlbnVtIERhdGFzZXRUeXBlIHtcbiAgTE9DQUwgPSAnbG9jYWwnLFxuICBFWFRFUk5BTExZX0hPU1RFRCA9ICdleHRlcm5hbGx5LWhvc3RlZCcsXG4gIFZFQ1RPUl9USUxFID0gJ3ZlY3Rvci10aWxlJyxcbiAgUkFTVEVSX1RJTEUgPSAncmFzdGVyLXRpbGUnLFxuICBXTVNfVElMRSA9ICd3bXMtdGlsZScsXG4gIFRJTEVfM0QgPSAndGlsZS0zZCcsXG4gIEJJVE1BUCA9ICdiaXRtYXAnXG59XG5cbmV4cG9ydCBjb25zdCBSRU1PVEVfRklMRV9GT1JNQVRTID0gWydhdXRvJywgJ2NzdicsICdnZW9qc29uJywgJ2pzb24nLCAnYXJyb3cnLCAncGFycXVldCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVtb3RlRmlsZUZvcm1hdCA9ICh0eXBlb2YgUkVNT1RFX0ZJTEVfRk9STUFUUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJFTU9URV9GSUxFX01JTUVfVFlQRVM6IFJlY29yZDxFeGNsdWRlPFJlbW90ZUZpbGVGb3JtYXQsICdhdXRvJz4sIHN0cmluZz4gPSB7XG4gIGNzdjogJ3RleHQvY3N2JyxcbiAgZ2VvanNvbjogJ2FwcGxpY2F0aW9uL2dlbytqc29uJyxcbiAganNvbjogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICBhcnJvdzogJ2FwcGxpY2F0aW9uL3ZuZC5hcGFjaGUuYXJyb3cuZmlsZScsXG4gIHBhcnF1ZXQ6ICdhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnBhcnF1ZXQnXG59O1xuXG5leHBvcnQgY29uc3QgUkVNT1RFX0ZJTEVfRVhURU5TSU9OUzogUmVjb3JkPEV4Y2x1ZGU8UmVtb3RlRmlsZUZvcm1hdCwgJ2F1dG8nPiwgc3RyaW5nPiA9IHtcbiAgY3N2OiAnY3N2JyxcbiAgZ2VvanNvbjogJ2dlb2pzb24nLFxuICBqc29uOiAnanNvbicsXG4gIGFycm93OiAnYXJyb3cnLFxuICBwYXJxdWV0OiAncGFycXVldCdcbn07XG5cbmV4cG9ydCBjb25zdCBNSU1FX1RPX1JFTU9URV9GSUxFX0VYVEVOU0lPTjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ3RleHQvY3N2JzogJ2NzdicsXG4gICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJzogJ3RzdicsXG4gICdhcHBsaWNhdGlvbi9nZW8ranNvbic6ICdnZW9qc29uJyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5nZW8ranNvbic6ICdnZW9qc29uJyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiAnanNvbicsXG4gICdhcHBsaWNhdGlvbi92bmQuYXBhY2hlLmFycm93LmZpbGUnOiAnYXJyb3cnLFxuICAnYXBwbGljYXRpb24vdm5kLmFwYWNoZS5hcnJvdy5zdHJlYW0nOiAnYXJyb3cnLFxuICAnYXBwbGljYXRpb24vdm5kLmFwYWNoZS5wYXJxdWV0JzogJ3BhcnF1ZXQnLFxuICAnYXBwbGljYXRpb24veC1wYXJxdWV0JzogJ3BhcnF1ZXQnXG59O1xuXG5leHBvcnQgY29uc3QgREFUQVNFVF9SRUZSRVNIX0lOVEVSVkFMX09QVElPTlM6IHt2YWx1ZTogbnVtYmVyOyBsYWJlbElkOiBzdHJpbmd9W10gPSBbXG4gIHt2YWx1ZTogMCwgbGFiZWxJZDogJ2RhdGFzZXRUaXRsZS5yZWZyZXNoT2ZmJ30sXG4gIHt2YWx1ZTogMTBfMDAwLCBsYWJlbElkOiAnZGF0YXNldFRpdGxlLnJlZnJlc2gxMHMnfSxcbiAge3ZhbHVlOiAxNV8wMDAsIGxhYmVsSWQ6ICdkYXRhc2V0VGl0bGUucmVmcmVzaDE1cyd9LFxuICB7dmFsdWU6IDYwXzAwMCwgbGFiZWxJZDogJ2RhdGFzZXRUaXRsZS5yZWZyZXNoMW0nfSxcbiAge3ZhbHVlOiAzMDBfMDAwLCBsYWJlbElkOiAnZGF0YXNldFRpdGxlLnJlZnJlc2g1bSd9LFxuICB7dmFsdWU6IDkwMF8wMDAsIGxhYmVsSWQ6ICdkYXRhc2V0VGl0bGUucmVmcmVzaDE1bSd9XG5dO1xuXG4vKiogU2VsZWN0IHZhbHVlIGZvciBhIHVzZXItZW50ZXJlZCBpbnRlcnZhbCB0aGF0IGlzIG5vdCBvbmUgb2YgdGhlIHByZXNldHMuICovXG5leHBvcnQgY29uc3QgREFUQVNFVF9SRUZSRVNIX0NVU1RPTV9WQUxVRSA9ICdjdXN0b20nO1xuLyoqIERlZmF1bHQgY3VzdG9tIHBvbGwgaW50ZXJ2YWwgd2hlbiBzd2l0Y2hpbmcgZnJvbSBPZmYgdG8gQ3VzdG9tLiAqL1xuZXhwb3J0IGNvbnN0IERBVEFTRVRfUkVGUkVTSF9ERUZBVUxUX0NVU1RPTV9NUyA9IDMwXzAwMDtcbmV4cG9ydCBjb25zdCBEQVRBU0VUX1JFRlJFU0hfTUlOX0lOVEVSVkFMX01TID0gMTAwO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmVzZXREYXRhc2V0UmVmcmVzaEludGVydmFsKG1zOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIERBVEFTRVRfUkVGUkVTSF9JTlRFUlZBTF9PUFRJT05TLnNvbWUob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gbXMpO1xufVxuXG5leHBvcnQgdHlwZSBFeHRlcm5hbERhdGFzZXRSZWZyZXNoU3RhdHVzID0gJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ2Vycm9yJztcblxuZXhwb3J0IHR5cGUgRXh0ZXJuYWxEYXRhc2V0TWV0YWRhdGEgPSB7XG4gIC8qKiBSZW1vdGUgVVJMIG9mIHRoZSBkYXRhc2V0IGZpbGUuICovXG4gIHNvdXJjZTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgZm9ybWF0IGhpbnQgZm9yIGV4dGVuc2lvbmxlc3MgVVJMcyAoU0FTIGtleXMsIGV0YykuICovXG4gIGZvcm1hdD86IEV4Y2x1ZGU8UmVtb3RlRmlsZUZvcm1hdCwgJ2F1dG8nPiB8IHN0cmluZztcbiAgLyoqIExhc3Qga25vd24gc2l6ZSBvZiB0aGUgaG9zdGVkIHJlc291cmNlLCBpbiBieXRlcy4gKi9cbiAgc2l6ZT86IG51bWJlcjtcbiAgLyoqIFBvbGwgaW50ZXJ2YWwgaW4gbXMuIE9taXR0ZWQgb3IgMCBtZWFucyBtYW51YWwgcmVmcmVzaCBvbmx5LiAqL1xuICByZWZyZXNoSW50ZXJ2YWxNcz86IG51bWJlcjtcbn07XG5cbi8qKiBSdW50aW1lIGNvcHkgb2Yge0BsaW5rIEV4dGVybmFsRGF0YXNldE1ldGFkYXRhfSB3aXRoIGBmb3JtYXRgIHJlbmFtZWQgdG8gYXZvaWQgY29sbGlkaW5nIHdpdGggREFUQVNFVF9GT1JNQVRTLiAqL1xuZXhwb3J0IHR5cGUgRXh0ZXJuYWxEYXRhc2V0UnVudGltZU1ldGFkYXRhID0ge1xuICBzb3VyY2U6IHN0cmluZztcbiAgc291cmNlRm9ybWF0PzogRXhjbHVkZTxSZW1vdGVGaWxlRm9ybWF0LCAnYXV0byc+IHwgc3RyaW5nO1xuICBzaXplPzogbnVtYmVyO1xuICByZWZyZXNoSW50ZXJ2YWxNcz86IG51bWJlcjtcbiAgZXRhZz86IHN0cmluZztcbiAgbGFzdE1vZGlmaWVkPzogc3RyaW5nO1xuICBsYXN0RmV0Y2hlZEF0PzogbnVtYmVyO1xuICByZWZyZXNoU3RhdHVzPzogRXh0ZXJuYWxEYXRhc2V0UmVmcmVzaFN0YXR1cztcbiAgcmVmcmVzaEVycm9yPzogc3RyaW5nO1xuICAvKiogRG93bmxvYWQgcHJvZ3Jlc3MgMOKAkzEwMCB3aGlsZSBgcmVmcmVzaFN0YXR1c2AgaXMgYGxvYWRpbmdgLiAqL1xuICByZWZyZXNoUHJvZ3Jlc3M/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YXNldFJlZnJlc2hJbnRlcnZhbE1zKG1ldGFkYXRhPzoge3JlZnJlc2hJbnRlcnZhbE1zPzogdW5rbm93bn0pOiBudW1iZXIge1xuICBjb25zdCB2YWx1ZSA9IG1ldGFkYXRhPy5yZWZyZXNoSW50ZXJ2YWxNcztcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSAmJiB2YWx1ZSA+IDAgPyB2YWx1ZSA6IDA7XG59XG5cbi8qKiBQYXJzZSBhIHNlY29uZHMgZmllbGQgaW50byBtcywgb3IgbnVsbCBpZiB0aGUgaW5wdXQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3VzdG9tUmVmcmVzaEludGVydmFsTXMoc2Vjb25kc1RleHQ6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICBjb25zdCBzZWNvbmRzID0gTnVtYmVyLnBhcnNlRmxvYXQoc2Vjb25kc1RleHQpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShzZWNvbmRzKSB8fCBzZWNvbmRzIDw9IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gTWF0aC5tYXgoREFUQVNFVF9SRUZSRVNIX01JTl9JTlRFUlZBTF9NUywgTWF0aC5yb3VuZChzZWNvbmRzICogMTAwMCkpO1xufVxuXG4vKiogRGlzcGxheSBzdHJpbmcgZm9yIHRoZSBjdXN0b20gc2Vjb25kcyBpbnB1dCAoa2VlcHMgdGVudGhzIGZvciBzdWItc2Vjb25kIHZhbHVlcykuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q3VzdG9tUmVmcmVzaFNlY29uZHMobXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLm1heChEQVRBU0VUX1JFRlJFU0hfTUlOX0lOVEVSVkFMX01TLCBtcykgLyAxMDAwO1xuICBpZiAoTnVtYmVyLmlzSW50ZWdlcihzZWNvbmRzKSkge1xuICAgIHJldHVybiBTdHJpbmcoc2Vjb25kcyk7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyhOdW1iZXIoc2Vjb25kcy50b0ZpeGVkKDMpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGVTb3VyY2VGb3JtYXQobWV0YWRhdGE/OiB7XG4gIHNvdXJjZUZvcm1hdD86IHVua25vd247XG4gIGZvcm1hdD86IHVua25vd247XG59KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY2FuZGlkYXRlID1cbiAgICAodHlwZW9mIG1ldGFkYXRhPy5zb3VyY2VGb3JtYXQgPT09ICdzdHJpbmcnICYmIG1ldGFkYXRhLnNvdXJjZUZvcm1hdCkgfHxcbiAgICAodHlwZW9mIG1ldGFkYXRhPy5mb3JtYXQgPT09ICdzdHJpbmcnICYmIG1ldGFkYXRhLmZvcm1hdCkgfHxcbiAgICB1bmRlZmluZWQ7XG4gIGlmIChcbiAgICBjYW5kaWRhdGUgJiZcbiAgICBjYW5kaWRhdGUgIT09ICdhdXRvJyAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSRU1PVEVfRklMRV9FWFRFTlNJT05TLCBjYW5kaWRhdGUpXG4gICkge1xuICAgIHJldHVybiBjYW5kaWRhdGU7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGVudW0gUmVtb3RlVGlsZUZvcm1hdCB7XG4gIE1WVCA9ICdtdnQnLFxuICBQTVRJTEVTID0gJ3BtdGlsZXMnLFxuICBXTVMgPSAnd21zJ1xufVxuXG5leHBvcnQgZW51bSBQTVRpbGVzVHlwZSB7XG4gIFJBU1RFUiA9ICdyYXN0ZXInLFxuICBNVlQgPSAnbXZ0J1xufVxuXG5leHBvcnQgY29uc3QgUkVNT1RFX1RJTEUgPSAncmVtb3RlJztcblxuZXhwb3J0IHR5cGUgVmVjdG9yVGlsZURhdGFzZXRNZXRhZGF0YSA9IHtcbiAgdHlwZTogdHlwZW9mIFJFTU9URV9USUxFO1xuICByZW1vdGVUaWxlRm9ybWF0OiBSZW1vdGVUaWxlRm9ybWF0O1xuICB0aWxlc2V0RGF0YVVybDogc3RyaW5nO1xuICB0aWxlc2V0TWV0YWRhdGFVcmw/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFJhc3RlciB0aWxlc2V0IG1ldGFkYXRhIGluIFNUQUMgSXRlbSBmb3JtYXQuIFNUQUMgdmVyc2lvbiBtdXN0IGJlID49IDEuMC4wLFxuICogYW5kIHRoZSBFTyBhbmQgUmFzdGVyIFNUQUMgZXh0ZW5zaW9ucyBhcmUgcmVxdWlyZWQuIFRoaXMgbWV0YWRhdGEgc2hhcGUgY2FuXG4gKiBiZSBwYXNzZWQgdG8gdGhlIG1hcCB0byBzeW5jaHJvbm91c2x5IGFkZCBhIHJhc3RlciB0aWxlc2V0LlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmFkaWFudGVhcnRoL3N0YWMtc3BlYy9ibG9iL21hc3Rlci9pdGVtLXNwZWMvaXRlbS1zcGVjLm1kXG4gKi9cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVMb2NhbE1ldGFkYXRhID0ge1xuICB0eXBlOiAnRmVhdHVyZSc7XG5cbiAgLyoqIFVSTCBmb3IgdGlsZXNldCBtZXRhZGF0YS4gKi9cbiAgbWV0YWRhdGFVcmw/OiBzdHJpbmc7XG4gIHN0YWNfdmVyc2lvbjogc3RyaW5nO1xuICBzdGFjX2V4dGVuc2lvbnM6IHN0cmluZ1tdO1xuICBhc3NldHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG4vKipcbiAqIFJhc3RlciB0aWxlc2V0IG1ldGFkYXRhIHdpdGggYSByZW1vdGUgbWV0YWRhdGEgVVJMLiBUaGlzIG1ldGFkYXRhIGNhblxuICogYmUgcGFzc2VkIHRvIHRoZSBtYXAgdG8gYXN5bmNocm9ub3VzbHkgbG9hZCBhIHJhc3RlciB0aWxlc2V0LlxuICovXG5leHBvcnQgdHlwZSBSYXN0ZXJUaWxlUmVtb3RlTWV0YWRhdGEgPSB7XG4gIG1ldGFkYXRhVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZW51bSBSYXN0ZXJUaWxlVHlwZSB7XG4gIFNUQUMgPSAnc3RhYycsXG4gIFBNVElMRVMgPSAncG10aWxlcydcbn1cblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZU1ldGFkYXRhU291cmNlVHlwZSA9IHtcbiAgcG10aWxlc1R5cGU/OiBQTVRpbGVzVHlwZTtcbn07XG5cbi8qKlxuICogUmFzdGVyIHRpbGVzZXQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVEYXRhc2V0TWV0YWRhdGEgPSAoUmFzdGVyVGlsZUxvY2FsTWV0YWRhdGEgfCBSYXN0ZXJUaWxlUmVtb3RlTWV0YWRhdGEpICZcbiAgUmFzdGVyVGlsZU1ldGFkYXRhU291cmNlVHlwZTtcblxuZXhwb3J0IHR5cGUgV01TRGF0YXNldE1ldGFkYXRhID0ge1xuICB0eXBlOiB0eXBlb2YgUkVNT1RFX1RJTEU7XG4gIHJlbW90ZVRpbGVGb3JtYXQ6IFJlbW90ZVRpbGVGb3JtYXQuV01TO1xuICB0aWxlc2V0RGF0YVVybDogc3RyaW5nO1xuICB0aWxlc2V0TWV0YWRhdGFVcmw6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBsYXllcnM6IHtuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmc7IGJvdW5kaW5nQm94OiBudW1iZXJbXSB8IG51bGx9W107XG4gIGxhYmVsPzogc3RyaW5nO1xuICBhdHRyaWJ1dGlvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFRpbGUzRFByb3ZpZGVyQXR0cmlidXRpb24gPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBsb2dvVXJsPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBudW1iZXI7XG4gIGJvdHRvbT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFRpbGUzRFByb3ZpZGVyID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybEtleTogc3RyaW5nO1xuICBhdHRyaWJ1dGlvbj86IFRpbGUzRFByb3ZpZGVyQXR0cmlidXRpb247XG59O1xuXG5leHBvcnQgY29uc3QgVElMRTNEX1BST1ZJREVSUzogUmVjb3JkPHN0cmluZywgVGlsZTNEUHJvdmlkZXI+ID0ge1xuICBnb29nbGU6IHtcbiAgICBuYW1lOiAnR29vZ2xlIDNEIFRpbGVzJyxcbiAgICB1cmxLZXk6ICdnb29nbGUnLFxuICAgIGF0dHJpYnV0aW9uOiB7XG4gICAgICB0aXRsZTogJ0J1aWx0IHdpdGggR29vZ2xlIE1hcHMuJyxcbiAgICAgIHVybDogJycsXG4gICAgICBsb2dvVXJsOlxuICAgICAgICAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9pbWFnZXMvZ29vZ2xlLXdhdGVybWFyay13aGl0ZS5wbmcnLFxuICAgICAgaGVpZ2h0OiAxNyxcbiAgICAgIGJvdHRvbTogMFxuICAgIH1cbiAgfSxcbiAgY2VzaXVtOiB7XG4gICAgbmFtZTogJ0Nlc2l1bSBpb24nLFxuICAgIHVybEtleTogJ2lvbi5jZXNpdW0nLFxuICAgIGF0dHJpYnV0aW9uOiB7dGl0bGU6ICdDZXNpdW0uJywgdXJsOiAnaHR0cHM6Ly9jZXNpdW0uY29tLycsIGhlaWdodDogMTksIGJvdHRvbTogMH1cbiAgfSxcbiAgYXJjZ2lzOiB7XG4gICAgbmFtZTogJ0FyY0dJUycsXG4gICAgdXJsS2V5OiAnYXJjZ2lzJyxcbiAgICBhdHRyaWJ1dGlvbjoge3RpdGxlOiAnUG93ZXJlZCBieSBFc3JpLicsIHVybDogJ2h0dHBzOi8vYXJjZ2lzLmNvbS8nLCBoZWlnaHQ6IDE2fVxuICB9XG59O1xuXG5leHBvcnQgdHlwZSBUaWxlM0REYXRhc2V0TWV0YWRhdGEgPSB7XG4gIHRpbGUzZFVybDogc3RyaW5nO1xuICB0aWxlM2RBY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgdGlsZTNkUHJvdmlkZXI/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCaXRtYXBCb3VuZHMgPVxuICB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gIHwgW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dO1xuXG5leHBvcnQgdHlwZSBCaXRtYXBEYXRhc2V0TWV0YWRhdGEgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIGJvdW5kczogQml0bWFwQm91bmRzO1xuICBpc0RhdGFVcmk/OiBib29sZWFuO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSxXQUFZQSxXQUFXLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxX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