ropegeo-common 1.18.2 → 1.18.3
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/download/helpers/downloadConstants.d.ts +1 -0
- package/dist/download/helpers/downloadConstants.d.ts.map +1 -1
- package/dist/download/helpers/downloadConstants.js +2 -1
- package/dist/download/index.d.ts +1 -1
- package/dist/download/index.d.ts.map +1 -1
- package/dist/download/index.js +2 -1
- package/dist/download/tasks/fetchImageFilesTask.d.ts.map +1 -1
- package/dist/download/tasks/fetchImageFilesTask.js +12 -8
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const TILE_LIST_PAGE_LIMIT = 100;
|
|
2
2
|
export declare const LIST_HTTP_BATCH_SIZE = 32;
|
|
3
|
+
export declare const IMAGE_FILE_BATCH_SIZE = 5;
|
|
3
4
|
export declare const TILE_FILE_BATCH_SIZE = 25;
|
|
4
5
|
export declare const REGION_PAGES_PER_CHUNK = 10;
|
|
5
6
|
//# sourceMappingURL=downloadConstants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadConstants.d.ts","sourceRoot":"","sources":["../../../src/download/helpers/downloadConstants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,sBAAsB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"downloadConstants.d.ts","sourceRoot":"","sources":["../../../src/download/helpers/downloadConstants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,sBAAsB,KAAK,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REGION_PAGES_PER_CHUNK = exports.TILE_FILE_BATCH_SIZE = exports.LIST_HTTP_BATCH_SIZE = exports.TILE_LIST_PAGE_LIMIT = void 0;
|
|
3
|
+
exports.REGION_PAGES_PER_CHUNK = exports.TILE_FILE_BATCH_SIZE = exports.IMAGE_FILE_BATCH_SIZE = exports.LIST_HTTP_BATCH_SIZE = exports.TILE_LIST_PAGE_LIMIT = void 0;
|
|
4
4
|
exports.TILE_LIST_PAGE_LIMIT = 100;
|
|
5
5
|
exports.LIST_HTTP_BATCH_SIZE = 32;
|
|
6
|
+
exports.IMAGE_FILE_BATCH_SIZE = 5;
|
|
6
7
|
exports.TILE_FILE_BATCH_SIZE = 25;
|
|
7
8
|
exports.REGION_PAGES_PER_CHUNK = 10;
|
package/dist/download/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export { DownloadJob } from './downloadJob';
|
|
|
15
15
|
export { DownloadPhase } from './downloadPhase';
|
|
16
16
|
export { DownloadJobQueue } from './downloadJobQueue';
|
|
17
17
|
export { titleForPhase, buildDeleteStoredPagePhase } from './helpers/downloadPhaseTitles';
|
|
18
|
-
export { TILE_LIST_PAGE_LIMIT, LIST_HTTP_BATCH_SIZE, TILE_FILE_BATCH_SIZE, REGION_PAGES_PER_CHUNK, } from './helpers/downloadConstants';
|
|
18
|
+
export { TILE_LIST_PAGE_LIMIT, LIST_HTTP_BATCH_SIZE, IMAGE_FILE_BATCH_SIZE, TILE_FILE_BATCH_SIZE, REGION_PAGES_PER_CHUNK, } from './helpers/downloadConstants';
|
|
19
19
|
export { DOWNLOAD_CANCELLED_MESSAGE, DownloadCancelledError, InvalidDownloadJobStoredStateError, isDownloadCancelledError, } from './errors';
|
|
20
20
|
export { reconcilePendingFileTransfer, enqueuePendingFileTransfer, } from './helpers/pendingFileTransfer';
|
|
21
21
|
export { DownloadTask } from './tasks/abstractDownloadTask';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oCAAoC,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,kCAAkC,EAAE,MAAM,mDAAmD,CAAC;AACvG,OAAO,EAAE,mCAAmC,EAAE,MAAM,oDAAoD,CAAC;AACzG,OAAO,EAAE,kCAAkC,EAAE,MAAM,mDAAmD,CAAC;AACvG,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,mCAAmC,EAAE,MAAM,oDAAoD,CAAC;AACzG,OAAO,EAAE,oCAAoC,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EACtB,kCAAkC,EAClC,wBAAwB,GAC3B,MAAM,UAAU,CAAC;AAClB,OAAO,EACH,4BAA4B,EAC5B,0BAA0B,GAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oCAAoC,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,kCAAkC,EAAE,MAAM,mDAAmD,CAAC;AACvG,OAAO,EAAE,mCAAmC,EAAE,MAAM,oDAAoD,CAAC;AACzG,OAAO,EAAE,kCAAkC,EAAE,MAAM,mDAAmD,CAAC;AACvG,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,mCAAmC,EAAE,MAAM,oDAAoD,CAAC;AACzG,OAAO,EAAE,oCAAoC,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EACtB,kCAAkC,EAClC,wBAAwB,GAC3B,MAAM,UAAU,CAAC;AAClB,OAAO,EACH,4BAA4B,EAC5B,0BAA0B,GAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/download/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.planDownloadPhases = exports.SaveOfflinePageTask = exports.FetchRegionRouteListTask = exports.FetchRopeGeoTileFilesTask = exports.FetchMapboxPackTask = exports.FetchImageFilesTask = exports.FetchRopeGeoTileListTask = exports.FetchPageJsonTask = exports.DeleteStoredPageTask = exports.DownloadTask = exports.enqueuePendingFileTransfer = exports.reconcilePendingFileTransfer = exports.isDownloadCancelledError = exports.InvalidDownloadJobStoredStateError = exports.DownloadCancelledError = exports.DOWNLOAD_CANCELLED_MESSAGE = exports.REGION_PAGES_PER_CHUNK = exports.TILE_FILE_BATCH_SIZE = exports.LIST_HTTP_BATCH_SIZE = exports.TILE_LIST_PAGE_LIMIT = exports.buildDeleteStoredPagePhase = exports.titleForPhase = exports.DownloadJobQueue = exports.DownloadPhase = exports.DownloadJob = exports.SaveOfflinePageMiniMapTaskDependency = exports.SaveOfflinePageImagesTaskDependency = exports.SaveOfflinePageViewTaskDependency = exports.FetchRegionRouteListTaskDependency = exports.FetchRopeGeoTileFilesTaskDependency = exports.FetchRopeGeoTileListTaskDependency = exports.FetchMapboxPackTaskDependency = exports.FetchImageFilesTaskDependency = exports.FetchPageJsonTaskDependency = exports.DownloadDependencyKeys = exports.seedConsumerDependencies = exports.hydrateTaskDependencyFromStoredState = void 0;
|
|
3
|
+
exports.planDownloadPhases = exports.SaveOfflinePageTask = exports.FetchRegionRouteListTask = exports.FetchRopeGeoTileFilesTask = exports.FetchMapboxPackTask = exports.FetchImageFilesTask = exports.FetchRopeGeoTileListTask = exports.FetchPageJsonTask = exports.DeleteStoredPageTask = exports.DownloadTask = exports.enqueuePendingFileTransfer = exports.reconcilePendingFileTransfer = exports.isDownloadCancelledError = exports.InvalidDownloadJobStoredStateError = exports.DownloadCancelledError = exports.DOWNLOAD_CANCELLED_MESSAGE = exports.REGION_PAGES_PER_CHUNK = exports.TILE_FILE_BATCH_SIZE = exports.IMAGE_FILE_BATCH_SIZE = exports.LIST_HTTP_BATCH_SIZE = exports.TILE_LIST_PAGE_LIMIT = exports.buildDeleteStoredPagePhase = exports.titleForPhase = exports.DownloadJobQueue = exports.DownloadPhase = exports.DownloadJob = exports.SaveOfflinePageMiniMapTaskDependency = exports.SaveOfflinePageImagesTaskDependency = exports.SaveOfflinePageViewTaskDependency = exports.FetchRegionRouteListTaskDependency = exports.FetchRopeGeoTileFilesTaskDependency = exports.FetchRopeGeoTileListTaskDependency = exports.FetchMapboxPackTaskDependency = exports.FetchImageFilesTaskDependency = exports.FetchPageJsonTaskDependency = exports.DownloadDependencyKeys = exports.seedConsumerDependencies = exports.hydrateTaskDependencyFromStoredState = void 0;
|
|
4
4
|
var downloadDependencyRegistry_1 = require("./helpers/downloadDependencyRegistry");
|
|
5
5
|
Object.defineProperty(exports, "hydrateTaskDependencyFromStoredState", { enumerable: true, get: function () { return downloadDependencyRegistry_1.hydrateTaskDependencyFromStoredState; } });
|
|
6
6
|
var seedConsumerDependencies_1 = require("./helpers/seedConsumerDependencies");
|
|
@@ -37,6 +37,7 @@ Object.defineProperty(exports, "buildDeleteStoredPagePhase", { enumerable: true,
|
|
|
37
37
|
var downloadConstants_1 = require("./helpers/downloadConstants");
|
|
38
38
|
Object.defineProperty(exports, "TILE_LIST_PAGE_LIMIT", { enumerable: true, get: function () { return downloadConstants_1.TILE_LIST_PAGE_LIMIT; } });
|
|
39
39
|
Object.defineProperty(exports, "LIST_HTTP_BATCH_SIZE", { enumerable: true, get: function () { return downloadConstants_1.LIST_HTTP_BATCH_SIZE; } });
|
|
40
|
+
Object.defineProperty(exports, "IMAGE_FILE_BATCH_SIZE", { enumerable: true, get: function () { return downloadConstants_1.IMAGE_FILE_BATCH_SIZE; } });
|
|
40
41
|
Object.defineProperty(exports, "TILE_FILE_BATCH_SIZE", { enumerable: true, get: function () { return downloadConstants_1.TILE_FILE_BATCH_SIZE; } });
|
|
41
42
|
Object.defineProperty(exports, "REGION_PAGES_PER_CHUNK", { enumerable: true, get: function () { return downloadConstants_1.REGION_PAGES_PER_CHUNK; } });
|
|
42
43
|
var errors_1 = require("./errors");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchImageFilesTask.d.ts","sourceRoot":"","sources":["../../../src/download/tasks/fetchImageFilesTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKjE,OAAO,KAAK,EACR,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EAEvB,cAAc,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAetD,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3F,qBAAa,mBAAoB,SAAQ,YAAY;IACjD,QAAQ,CAAC,QAAQ,qBAAqB;IACtC,QAAQ,CAAC,cAAc,+BAAqD;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;KAAE;IAO7G,OAAO,CACT,GAAG,EAAE,kBAAkB,EACvB,eAAe,EAAE,uBAAuB,EACxC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC;YAyCZ,YAAY;
|
|
1
|
+
{"version":3,"file":"fetchImageFilesTask.d.ts","sourceRoot":"","sources":["../../../src/download/tasks/fetchImageFilesTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKjE,OAAO,KAAK,EACR,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EAEvB,cAAc,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAetD,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3F,qBAAa,mBAAoB,SAAQ,YAAY;IACjD,QAAQ,CAAC,QAAQ,qBAAqB;IACtC,QAAQ,CAAC,cAAc,+BAAqD;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;KAAE;IAO7G,OAAO,CACT,GAAG,EAAE,kBAAkB,EACvB,eAAe,EAAE,uBAAuB,EACxC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC;YAyCZ,YAAY;IAuC1B,aAAa,IAAI,uBAAuB;IAUxC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB;CAe5D"}
|
|
@@ -36,7 +36,7 @@ class FetchImageFilesTask extends abstractDownloadTask_1.DownloadTask {
|
|
|
36
36
|
ctx.setDependency(downloadDependencyKeys_1.DownloadDependencyKeys.SaveOfflinePageImages, new saveOfflinePageImagesTaskDependency_1.SaveOfflinePageImagesTaskDependency({}));
|
|
37
37
|
return { done: true };
|
|
38
38
|
}
|
|
39
|
-
const end = Math.min(dep.slots.length, this.cursor + downloadConstants_1.
|
|
39
|
+
const end = Math.min(dep.slots.length, this.cursor + downloadConstants_1.IMAGE_FILE_BATCH_SIZE);
|
|
40
40
|
for (let i = this.cursor; i < end; i += 1) {
|
|
41
41
|
if (signal.aborted) {
|
|
42
42
|
break;
|
|
@@ -53,11 +53,9 @@ class FetchImageFilesTask extends abstractDownloadTask_1.DownloadTask {
|
|
|
53
53
|
return { done: false };
|
|
54
54
|
}
|
|
55
55
|
async downloadSlot(ctx, platformHarness, slot) {
|
|
56
|
-
const output = {};
|
|
57
56
|
const downloadVersion = async (version, url) => {
|
|
58
57
|
if (url == null || url.length === 0) {
|
|
59
|
-
|
|
60
|
-
return;
|
|
58
|
+
return [version, null];
|
|
61
59
|
}
|
|
62
60
|
const destPath = platformHarness.paths.imageDest(ctx.pageId, slot.imageId, version, extFromUrl(url));
|
|
63
61
|
await platformHarness.ensureParentDir(destPath);
|
|
@@ -66,11 +64,17 @@ class FetchImageFilesTask extends abstractDownloadTask_1.DownloadTask {
|
|
|
66
64
|
destPath,
|
|
67
65
|
background: true,
|
|
68
66
|
});
|
|
69
|
-
|
|
67
|
+
return [version, destPath];
|
|
70
68
|
};
|
|
71
|
-
await
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
const results = await Promise.all([
|
|
70
|
+
downloadVersion(imageVersions_1.ImageVersion.preview, slot.versions.preview),
|
|
71
|
+
downloadVersion(imageVersions_1.ImageVersion.banner, slot.versions.banner),
|
|
72
|
+
downloadVersion(imageVersions_1.ImageVersion.full, slot.versions.full),
|
|
73
|
+
]);
|
|
74
|
+
const output = {};
|
|
75
|
+
for (const [version, destPath] of results) {
|
|
76
|
+
output[version] = destPath;
|
|
77
|
+
}
|
|
74
78
|
return output;
|
|
75
79
|
}
|
|
76
80
|
toStoredState() {
|