@super-protocol/sdk-js 2.2.0-beta.7 → 2.2.0-beta.70
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/cjs/analytics/eventProviders/BrowserEventProvider.d.ts +1 -0
- package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +3 -3
- package/dist/cjs/config.d.ts +0 -1
- package/dist/cjs/config.js +1 -2
- package/dist/cjs/constants.d.ts +3 -4
- package/dist/cjs/constants.js +5 -7
- package/dist/cjs/contracts/abi.d.ts +279 -26
- package/dist/cjs/contracts/abi.js +357 -33
- package/dist/cjs/crypto/index.d.ts +1 -0
- package/dist/cjs/crypto/index.js +16 -1
- package/dist/cjs/errors/base.error.d.ts +3 -0
- package/dist/cjs/errors/base.error.js +19 -0
- package/dist/cjs/errors/index.d.ts +2 -0
- package/dist/cjs/errors/index.js +8 -0
- package/dist/cjs/errors/not-found.error.d.ts +3 -0
- package/dist/cjs/errors/not-found.error.js +8 -0
- package/dist/cjs/errors/utils.d.ts +1 -0
- package/dist/cjs/errors/utils.js +25 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +14 -2
- package/dist/cjs/models/Offer.js +6 -4
- package/dist/cjs/models/TCB.js +13 -5
- package/dist/cjs/models/TeeOffer.d.ts +3 -3
- package/dist/cjs/models/TeeOffer.js +15 -12
- package/dist/cjs/providers/storage/S3StorageProvider.d.ts +7 -6
- package/dist/cjs/providers/storage/S3StorageProvider.js +35 -19
- package/dist/cjs/providers/storage/StorageAdapter.d.ts +9 -7
- package/dist/cjs/providers/storage/StorageAdapter.js +27 -29
- package/dist/cjs/providers/storage/StorageContentWriter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorageContentWriter.js +5 -5
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +8 -5
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +30 -16
- package/dist/cjs/providers/storage/StorjAdapter.d.ts +5 -4
- package/dist/cjs/providers/storage/StorjAdapter.js +15 -9
- package/dist/cjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
- package/dist/cjs/providers/storage/StorjCredentialsManager.js +86 -0
- package/dist/cjs/providers/storage/StorjStorageProvider.js +2 -2
- package/dist/cjs/providers/storage/fs-storage-provider.d.ts +19 -0
- package/dist/cjs/providers/storage/fs-storage-provider.js +139 -0
- package/dist/cjs/providers/storage/getStorageProvider.js +4 -1
- package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +5 -0
- package/dist/cjs/providers/storage/parseStorageCredentials.js +21 -0
- package/dist/cjs/providers/storage/types.d.ts +22 -0
- package/dist/cjs/staticModels/LoaderSecretsPublicKeys.d.ts +1 -1
- package/dist/cjs/staticModels/LoaderSecretsPublicKeys.js +9 -5
- package/dist/cjs/staticModels/LoaderSessions.d.ts +3 -3
- package/dist/cjs/staticModels/LoaderSessions.js +11 -7
- package/dist/cjs/staticModels/OfferResources.d.ts +2 -2
- package/dist/cjs/staticModels/OfferResources.js +20 -10
- package/dist/cjs/staticModels/OffersStorageAllocated.d.ts +2 -3
- package/dist/cjs/staticModels/OffersStorageAllocated.js +15 -11
- package/dist/cjs/staticModels/OffersStorageRequests.d.ts +1 -1
- package/dist/cjs/staticModels/OffersStorageRequests.js +10 -5
- package/dist/cjs/staticModels/SecretRequests.d.ts +2 -2
- package/dist/cjs/staticModels/SecretRequests.js +19 -10
- package/dist/cjs/staticModels/TeeOffers.d.ts +0 -2
- package/dist/cjs/staticModels/TeeOffers.js +1 -32
- package/dist/cjs/tee/QuoteParser.d.ts +61 -6
- package/dist/cjs/tee/QuoteParser.js +248 -29
- package/dist/cjs/tee/QuoteValidator.d.ts +1 -0
- package/dist/cjs/tee/QuoteValidator.js +53 -28
- package/dist/cjs/tee/TeeBlockVerifier.d.ts +4 -4
- package/dist/cjs/tee/TeeBlockVerifier.js +16 -7
- package/dist/cjs/tee/types.d.ts +50 -9
- package/dist/cjs/tee/types.js +32 -1
- package/dist/cjs/types/DistributedSecretStorage.d.ts +7 -0
- package/dist/cjs/types/Superpro.d.ts +2 -1
- package/dist/cjs/types/Superpro.js +2 -1
- package/dist/cjs/types/storage/StorageAccess.d.ts +3 -3
- package/dist/cjs/utils/CryptoKeysTransformer.d.ts +8 -1
- package/dist/cjs/utils/CryptoKeysTransformer.js +70 -7
- package/dist/cjs/utils/helper.d.ts +7 -1
- package/dist/cjs/utils/helper.js +85 -2
- package/dist/cjs/utils/helpers/OrderArgsHelper.d.ts +5 -0
- package/dist/cjs/utils/helpers/OrderArgsHelper.js +25 -0
- package/dist/cjs/utils/helpers/index.d.ts +1 -0
- package/dist/cjs/utils/helpers/index.js +2 -1
- package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +1 -0
- package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +3 -3
- package/dist/mjs/config.d.ts +0 -1
- package/dist/mjs/config.js +1 -2
- package/dist/mjs/constants.d.ts +3 -4
- package/dist/mjs/constants.js +4 -6
- package/dist/mjs/contracts/abi.d.ts +279 -26
- package/dist/mjs/contracts/abi.js +357 -33
- package/dist/mjs/crypto/index.d.ts +1 -0
- package/dist/mjs/crypto/index.js +2 -1
- package/dist/mjs/errors/base.error.d.ts +3 -0
- package/dist/mjs/errors/base.error.js +15 -0
- package/dist/mjs/errors/index.d.ts +2 -0
- package/dist/mjs/errors/index.js +3 -0
- package/dist/mjs/errors/not-found.error.d.ts +3 -0
- package/dist/mjs/errors/not-found.error.js +4 -0
- package/dist/mjs/errors/utils.d.ts +1 -0
- package/dist/mjs/errors/utils.js +18 -0
- package/dist/mjs/index.d.ts +7 -1
- package/dist/mjs/index.js +7 -2
- package/dist/mjs/models/Offer.js +6 -4
- package/dist/mjs/models/TCB.js +13 -5
- package/dist/mjs/models/TeeOffer.d.ts +3 -3
- package/dist/mjs/models/TeeOffer.js +16 -13
- package/dist/mjs/providers/storage/S3StorageProvider.d.ts +7 -6
- package/dist/mjs/providers/storage/S3StorageProvider.js +32 -19
- package/dist/mjs/providers/storage/StorageAdapter.d.ts +9 -7
- package/dist/mjs/providers/storage/StorageAdapter.js +27 -29
- package/dist/mjs/providers/storage/StorageContentWriter.d.ts +2 -2
- package/dist/mjs/providers/storage/StorageContentWriter.js +5 -5
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +8 -5
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +30 -16
- package/dist/mjs/providers/storage/StorjAdapter.d.ts +5 -4
- package/dist/mjs/providers/storage/StorjAdapter.js +15 -9
- package/dist/mjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
- package/dist/mjs/providers/storage/StorjCredentialsManager.js +82 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.js +2 -2
- package/dist/mjs/providers/storage/fs-storage-provider.d.ts +19 -0
- package/dist/mjs/providers/storage/fs-storage-provider.js +112 -0
- package/dist/mjs/providers/storage/getStorageProvider.js +4 -1
- package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +5 -0
- package/dist/mjs/providers/storage/parseStorageCredentials.js +17 -0
- package/dist/mjs/providers/storage/types.d.ts +22 -0
- package/dist/mjs/staticModels/LoaderSecretsPublicKeys.d.ts +1 -1
- package/dist/mjs/staticModels/LoaderSecretsPublicKeys.js +10 -6
- package/dist/mjs/staticModels/LoaderSessions.d.ts +3 -3
- package/dist/mjs/staticModels/LoaderSessions.js +12 -8
- package/dist/mjs/staticModels/OfferResources.d.ts +2 -2
- package/dist/mjs/staticModels/OfferResources.js +21 -11
- package/dist/mjs/staticModels/OffersStorageAllocated.d.ts +2 -3
- package/dist/mjs/staticModels/OffersStorageAllocated.js +16 -12
- package/dist/mjs/staticModels/OffersStorageRequests.d.ts +1 -1
- package/dist/mjs/staticModels/OffersStorageRequests.js +11 -6
- package/dist/mjs/staticModels/SecretRequests.d.ts +2 -2
- package/dist/mjs/staticModels/SecretRequests.js +20 -11
- package/dist/mjs/staticModels/TeeOffers.d.ts +0 -2
- package/dist/mjs/staticModels/TeeOffers.js +1 -32
- package/dist/mjs/tee/QuoteParser.d.ts +61 -6
- package/dist/mjs/tee/QuoteParser.js +245 -28
- package/dist/mjs/tee/QuoteValidator.d.ts +1 -0
- package/dist/mjs/tee/QuoteValidator.js +54 -29
- package/dist/mjs/tee/TeeBlockVerifier.d.ts +4 -4
- package/dist/mjs/tee/TeeBlockVerifier.js +16 -7
- package/dist/mjs/tee/types.d.ts +50 -9
- package/dist/mjs/tee/types.js +28 -2
- package/dist/mjs/types/DistributedSecretStorage.d.ts +7 -0
- package/dist/mjs/types/Superpro.d.ts +2 -1
- package/dist/mjs/types/Superpro.js +2 -1
- package/dist/mjs/types/storage/StorageAccess.d.ts +3 -3
- package/dist/mjs/utils/CryptoKeysTransformer.d.ts +8 -1
- package/dist/mjs/utils/CryptoKeysTransformer.js +70 -7
- package/dist/mjs/utils/helper.d.ts +7 -1
- package/dist/mjs/utils/helper.js +78 -1
- package/dist/mjs/utils/helpers/OrderArgsHelper.d.ts +5 -0
- package/dist/mjs/utils/helpers/OrderArgsHelper.js +18 -0
- package/dist/mjs/utils/helpers/index.d.ts +1 -0
- package/dist/mjs/utils/helpers/index.js +2 -1
- package/package.json +4 -4
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { BlockchainConnector, BlockchainEventsListener } from '../connectors/index.js';
|
|
2
|
-
import { cleanWeb3Data } from '../utils/helper.js';
|
|
2
|
+
import { cleanWeb3Data, convertLoaderSecretPublicKeyFromRaw } from '../utils/helper.js';
|
|
3
3
|
import TxManager from '../utils/TxManager.js';
|
|
4
4
|
import rootLogger from '../logger.js';
|
|
5
5
|
class LoaderSecretPublicKeys {
|
|
6
6
|
static logger = rootLogger.child({ className: 'LoaderSecretPublicKeys' });
|
|
7
|
-
static get(teeOfferId) {
|
|
7
|
+
static async get(teeOfferId) {
|
|
8
8
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
9
|
-
|
|
9
|
+
const secretPublicKey = await contract.methods
|
|
10
10
|
.getLoaderSecretPublicKey(teeOfferId)
|
|
11
11
|
.call()
|
|
12
|
-
.then((secretKey) =>
|
|
12
|
+
.then((secretKey) => convertLoaderSecretPublicKeyFromRaw(secretKey));
|
|
13
|
+
if (Number(secretPublicKey.timestamp) === 0) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return secretPublicKey;
|
|
13
17
|
}
|
|
14
18
|
static async set(teeOfferId, signature, secretPublicKey, signedTime, transactionOptions) {
|
|
15
19
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
@@ -20,7 +24,7 @@ class LoaderSecretPublicKeys {
|
|
|
20
24
|
const logger = this.logger.child({ method: 'onLoaderSecretPublicKeySessionUpdated' });
|
|
21
25
|
const onData = (event) => {
|
|
22
26
|
const parsedEvent = cleanWeb3Data(event.returnValues);
|
|
23
|
-
callback(parsedEvent.
|
|
27
|
+
callback(parsedEvent.teeOfferIssuerId, cleanWeb3Data(parsedEvent.secretPublicKey), {
|
|
24
28
|
index: Number(event.blockNumber),
|
|
25
29
|
hash: event.blockHash,
|
|
26
30
|
});
|
|
@@ -36,4 +40,4 @@ class LoaderSecretPublicKeys {
|
|
|
36
40
|
}
|
|
37
41
|
}
|
|
38
42
|
export default LoaderSecretPublicKeys;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyU2VjcmV0c1B1YmxpY0tleXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL0xvYWRlclNlY3JldHNQdWJsaWNLZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBU3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RixPQUFPLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxPQUFPLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFNdEMsTUFBTSxzQkFBc0I7SUFDbEIsTUFBTSxDQUFVLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUVwRixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUF3QjtRQUM5QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxNQUFNLGVBQWUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPO2FBQzNDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQzthQUNwQyxJQUFJLEVBQUU7YUFDTixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLFNBQWtDLENBQUMsQ0FBQyxDQUFDO1FBRWhHLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixVQUF3QixFQUN4QixTQUFvQixFQUNwQixlQUEwQixFQUMxQixVQUFrQixFQUNsQixrQkFBdUM7UUFFdkMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakUsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUNyQixRQUFRLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxFQUM3RixrQkFBa0IsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMscUNBQXFDLENBQ2pELFFBQXVEO1FBRXZELE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLHVDQUF1QyxFQUFFLENBQUMsQ0FBQztRQUN0RixNQUFNLE1BQU0sR0FBNEIsQ0FBQyxLQUFlLEVBQVEsRUFBRTtZQUNoRSxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELFFBQVEsQ0FDUSxXQUFXLENBQUMsZ0JBQWdCLEVBQy9CLGFBQWEsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQzFDO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLHFDQUFxQztTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQVNILGVBQWUsc0JBQXNCLENBQUMifQ==
|
|
@@ -3,11 +3,11 @@ declare class LoaderSessions {
|
|
|
3
3
|
private static readonly logger;
|
|
4
4
|
static getEnabledLoaders(): Promise<BlockchainId[]>;
|
|
5
5
|
static getDisabledLoaders(): Promise<BlockchainId[]>;
|
|
6
|
-
static get(teeOfferId: BlockchainId): Promise<LoaderSession>;
|
|
6
|
+
static get(teeOfferId: BlockchainId): Promise<LoaderSession | undefined>;
|
|
7
7
|
static set(teeOfferIssuerId: BlockchainId, sessionPublicKey: PublicKey, signature: string, signedTime: number, transactionOptions?: TransactionOptions): Promise<void>;
|
|
8
8
|
static setSessionAndRequestSecret(request: Omit<SecretRequest, 'timestamp'>, teeOfferIssuerId: BlockchainId, sessionPublicKey: PublicKey, signature: string, signedTime: number, transactionOptions?: TransactionOptions): Promise<void>;
|
|
9
|
-
static
|
|
9
|
+
static removeLoaderKeys(teeOfferId: BlockchainId, transactionOptions?: TransactionOptions): Promise<void>;
|
|
10
10
|
static onLoaderSessionKeyUpdated(callback: onLoaderSessionKeyUpdatedCallback): () => void;
|
|
11
11
|
}
|
|
12
|
-
export type onLoaderSessionKeyUpdatedCallback = (
|
|
12
|
+
export type onLoaderSessionKeyUpdatedCallback = (teeOfferIssuerId: BlockchainId, publicSessionsKey: PublicKey, block?: BlockInfo) => void;
|
|
13
13
|
export default LoaderSessions;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlockchainConnector, BlockchainEventsListener } from '../connectors/index.js';
|
|
2
|
-
import { cleanWeb3Data } from '../utils/helper.js';
|
|
2
|
+
import { cleanWeb3Data, convertLoaderSessionFromRaw } from '../utils/helper.js';
|
|
3
3
|
import TxManager from '../utils/TxManager.js';
|
|
4
4
|
import rootLogger from '../logger.js';
|
|
5
5
|
class LoaderSessions {
|
|
@@ -12,12 +12,16 @@ class LoaderSessions {
|
|
|
12
12
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
13
13
|
return contract.methods.getDisabledLoaders().call();
|
|
14
14
|
}
|
|
15
|
-
static get(teeOfferId) {
|
|
15
|
+
static async get(teeOfferId) {
|
|
16
16
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
17
|
-
|
|
17
|
+
const loaderSession = await contract.methods
|
|
18
18
|
.getLoaderSession(teeOfferId)
|
|
19
19
|
.call()
|
|
20
|
-
.then((session) =>
|
|
20
|
+
.then((session) => convertLoaderSessionFromRaw(session));
|
|
21
|
+
if (Number(loaderSession.timestamp) === 0) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return loaderSession;
|
|
21
25
|
}
|
|
22
26
|
static async set(teeOfferIssuerId, sessionPublicKey, signature, signedTime, transactionOptions) {
|
|
23
27
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
@@ -31,16 +35,16 @@ class LoaderSessions {
|
|
|
31
35
|
timestamp: 0,
|
|
32
36
|
}, sessionPublicKey, signature, teeOfferIssuerId, signedTime), transactionOptions);
|
|
33
37
|
}
|
|
34
|
-
static async
|
|
38
|
+
static async removeLoaderKeys(teeOfferId, transactionOptions) {
|
|
35
39
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
36
|
-
await TxManager.execute(contract.methods.
|
|
40
|
+
await TxManager.execute(contract.methods.removeLoaderKeys(teeOfferId), transactionOptions);
|
|
37
41
|
}
|
|
38
42
|
static onLoaderSessionKeyUpdated(callback) {
|
|
39
43
|
const listener = BlockchainEventsListener.getInstance();
|
|
40
44
|
const logger = this.logger.child({ method: 'onLoaderSessionKeyUpdated' });
|
|
41
45
|
const onData = (event) => {
|
|
42
46
|
const parsedEvent = cleanWeb3Data(event.returnValues);
|
|
43
|
-
callback(parsedEvent.
|
|
47
|
+
callback(parsedEvent.teeOfferIssuerId, cleanWeb3Data(parsedEvent.publicSessionsKey), {
|
|
44
48
|
index: Number(event.blockNumber),
|
|
45
49
|
hash: event.blockHash,
|
|
46
50
|
});
|
|
@@ -56,4 +60,4 @@ class LoaderSessions {
|
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
export default LoaderSessions;
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyU2Vzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL0xvYWRlclNlc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBU3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxPQUFPLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFNdEMsTUFBTSxjQUFjO0lBQ1YsTUFBTSxDQUFVLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUU1RSxNQUFNLENBQUMsaUJBQWlCO1FBQzdCLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCO1FBQzlCLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUF3QjtRQUM5QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxNQUFNLGFBQWEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPO2FBQ3pDLGdCQUFnQixDQUFDLFVBQVUsQ0FB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
|
|
@@ -4,11 +4,11 @@ declare class OfferResources {
|
|
|
4
4
|
static getByKeeperId(teeOfferKeeperId: BlockchainId): Promise<OfferResource[]>;
|
|
5
5
|
static getByIssuerId(teeOfferIssuerId: BlockchainId): Promise<OfferResource[]>;
|
|
6
6
|
static getByOfferVersion(offerId: BlockchainId, version?: number): Promise<OfferResource[]>;
|
|
7
|
-
static get(teeOfferIssuerId: BlockchainId, teeOfferKeeperId: BlockchainId, offerId: BlockchainId, version?: number): Promise<OfferResource>;
|
|
7
|
+
static get(teeOfferIssuerId: BlockchainId, teeOfferKeeperId: BlockchainId, offerId: BlockchainId, version?: number): Promise<OfferResource | undefined>;
|
|
8
8
|
static getCountByKeeperId(teeOfferKeeperId: BlockchainId): Promise<number>;
|
|
9
9
|
static set(offerResource: Omit<OfferResource, 'timestamp'>, transactionOptions?: TransactionOptions): Promise<void>;
|
|
10
10
|
static createOrder(requestOfferId: BlockchainId, requestOfferVersion: number | undefined, resultInfo: string, resultInfoSignatureBySecretKey: Signature, signedTime: number, transactionOptions?: TransactionOptions): Promise<void>;
|
|
11
|
-
static
|
|
11
|
+
static clear(teeOfferKeeperId: BlockchainId, transactionOptions?: TransactionOptions): Promise<void>;
|
|
12
12
|
static onOfferResourceCreated(callback: onOfferResourceCreatedCallback): () => void;
|
|
13
13
|
static onOrderResourceCreated(callback: onOrderResourceCreatedCallback): () => void;
|
|
14
14
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BlockchainConnector, BlockchainEventsListener } from '../connectors/index.js';
|
|
2
|
-
import { checkIfActionAccountInitialized, cleanWeb3Data } from '../utils/helper.js';
|
|
2
|
+
import { checkIfActionAccountInitialized, cleanWeb3Data, convertOfferResourceFromRaw, } from '../utils/helper.js';
|
|
3
3
|
import TxManager from '../utils/TxManager.js';
|
|
4
4
|
import rootLogger from '../logger.js';
|
|
5
|
+
import { AMOY_TX_GAS_LIMIT } from '../constants.js';
|
|
5
6
|
class OfferResources {
|
|
6
7
|
static logger = rootLogger.child({ className: 'OfferResources' });
|
|
7
8
|
static getByKeeperId(teeOfferKeeperId) {
|
|
@@ -9,28 +10,32 @@ class OfferResources {
|
|
|
9
10
|
return contract.methods
|
|
10
11
|
.getOfferResourcesByKeeperId(teeOfferKeeperId)
|
|
11
12
|
.call()
|
|
12
|
-
.then((resources) => resources.map((resource) =>
|
|
13
|
+
.then((resources) => resources.map((resource) => convertOfferResourceFromRaw(resource)));
|
|
13
14
|
}
|
|
14
15
|
static getByIssuerId(teeOfferIssuerId) {
|
|
15
16
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
16
17
|
return contract.methods
|
|
17
18
|
.getOfferResourcesByIssuerId(teeOfferIssuerId)
|
|
18
19
|
.call()
|
|
19
|
-
.then((resources) => resources.map((resource) =>
|
|
20
|
+
.then((resources) => resources.map((resource) => convertOfferResourceFromRaw(resource)));
|
|
20
21
|
}
|
|
21
22
|
static getByOfferVersion(offerId, version = 0) {
|
|
22
23
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
23
24
|
return contract.methods
|
|
24
25
|
.getOfferResourcesByOfferVersion(offerId, version)
|
|
25
26
|
.call()
|
|
26
|
-
.then((resources) => resources.map((resource) =>
|
|
27
|
+
.then((resources) => resources.map((resource) => convertOfferResourceFromRaw(resource)));
|
|
27
28
|
}
|
|
28
|
-
static get(teeOfferIssuerId, teeOfferKeeperId, offerId, version = 0) {
|
|
29
|
+
static async get(teeOfferIssuerId, teeOfferKeeperId, offerId, version = 0) {
|
|
29
30
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
30
|
-
|
|
31
|
+
const resource = await contract.methods
|
|
31
32
|
.getOfferResource(teeOfferIssuerId, teeOfferKeeperId, offerId, version)
|
|
32
33
|
.call()
|
|
33
|
-
.then((resource) =>
|
|
34
|
+
.then((resource) => convertOfferResourceFromRaw(resource));
|
|
35
|
+
if (Number(resource.timestamp) === 0) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
return resource;
|
|
34
39
|
}
|
|
35
40
|
static async getCountByKeeperId(teeOfferKeeperId) {
|
|
36
41
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
@@ -42,6 +47,7 @@ class OfferResources {
|
|
|
42
47
|
await TxManager.execute(contract.methods.setOfferResource({
|
|
43
48
|
...offerResource,
|
|
44
49
|
offerVersion: offerResource.offerVersion ?? 0,
|
|
50
|
+
solutionHash: offerResource.solutionHash ?? '',
|
|
45
51
|
timestamp: 0,
|
|
46
52
|
}), transactionOptions);
|
|
47
53
|
}
|
|
@@ -50,17 +56,21 @@ class OfferResources {
|
|
|
50
56
|
checkIfActionAccountInitialized(transactionOptions);
|
|
51
57
|
await TxManager.execute(contract.methods.createResourceOrder(requestOfferId, requestOfferVersion, resultInfo, resultInfoSignatureBySecretKey, signedTime), transactionOptions);
|
|
52
58
|
}
|
|
53
|
-
static async
|
|
59
|
+
static async clear(teeOfferKeeperId, transactionOptions) {
|
|
54
60
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
55
61
|
checkIfActionAccountInitialized(transactionOptions);
|
|
56
|
-
|
|
62
|
+
const options = {
|
|
63
|
+
gas: AMOY_TX_GAS_LIMIT,
|
|
64
|
+
...transactionOptions,
|
|
65
|
+
};
|
|
66
|
+
await TxManager.execute(contract.methods.clearOfferResources(teeOfferKeeperId), options);
|
|
57
67
|
}
|
|
58
68
|
static onOfferResourceCreated(callback) {
|
|
59
69
|
const listener = BlockchainEventsListener.getInstance();
|
|
60
70
|
const logger = this.logger.child({ method: 'onOfferResourceCreated' });
|
|
61
71
|
const onData = (event) => {
|
|
62
72
|
const parsedEvent = cleanWeb3Data(event.returnValues);
|
|
63
|
-
callback(parsedEvent.offerId, parsedEvent.
|
|
73
|
+
callback(parsedEvent.offerId, parsedEvent.offerVersion, parsedEvent.teeOfferKeeperId, parsedEvent.teeOfferIssuerId, parsedEvent.transactionHash, {
|
|
64
74
|
index: Number(event.blockNumber),
|
|
65
75
|
hash: event.blockHash,
|
|
66
76
|
});
|
|
@@ -95,4 +105,4 @@ class OfferResources {
|
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
export default OfferResources;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmZXJSZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL09mZmVyUmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUXZGLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsYUFBYSxFQUNiLDJCQUEyQixHQUM1QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUt0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxNQUFNLGNBQWM7SUFDVixNQUFNLENBQVUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQThCO1FBQ3hELE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU87YUFDcEIsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUM7YUFDN0MsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLENBQUMsU0FBMkIsRUFBRSxFQUFFLENBQ3BDLFNBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixDQUFDLFFBQXlCLENBQUMsQ0FBQyxDQUNyRixDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQThCO1FBQ3hELE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU87YUFDcEIs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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BlockchainId, OfferStorageAllocated } from '../types/index.js';
|
|
2
2
|
declare class OffersStorageAllocated {
|
|
3
|
-
|
|
4
|
-
static
|
|
5
|
-
static getByOfferVersion(offerId: BlockchainId, offerVersion?: number): Promise<OfferStorageAllocated>;
|
|
3
|
+
static getByOfferVersion(offerId: BlockchainId, offerVersion?: number): Promise<OfferStorageAllocated | undefined>;
|
|
4
|
+
static getByIssuerId(teeOfferIssuerId: BlockchainId): Promise<OfferStorageAllocated[]>;
|
|
6
5
|
}
|
|
7
6
|
export default OffersStorageAllocated;
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import { BlockchainConnector } from '../connectors/index.js';
|
|
2
|
-
import {
|
|
2
|
+
import { convertOfferStorageAllocatedFromRaw } from '../utils/helper.js';
|
|
3
3
|
class OffersStorageAllocated {
|
|
4
|
-
|
|
4
|
+
static async getByOfferVersion(offerId, offerVersion = 0) {
|
|
5
5
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const allocated = await contract.methods
|
|
7
|
+
.getStorageOrdersAllocated(offerId, offerVersion)
|
|
8
|
+
.call()
|
|
9
|
+
.then((allocated) => convertOfferStorageAllocatedFromRaw(allocated));
|
|
10
|
+
if (Number(allocated.timestamp) === 0) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return allocated;
|
|
11
14
|
}
|
|
12
|
-
static
|
|
15
|
+
static async getByIssuerId(teeOfferIssuerId) {
|
|
13
16
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
14
|
-
|
|
15
|
-
.
|
|
17
|
+
const allocated = await contract.methods
|
|
18
|
+
.getStorageOrdersAllocatedByIssuer(teeOfferIssuerId)
|
|
16
19
|
.call()
|
|
17
|
-
.then((allocated) =>
|
|
20
|
+
.then((allocatedOffers) => allocatedOffers.map((allocated) => convertOfferStorageAllocatedFromRaw(allocated)));
|
|
21
|
+
return allocated;
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
24
|
export default OffersStorageAllocated;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmZXJzU3RvcmFnZUFsbG9jYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0aWNNb2RlbHMvT2ZmZXJzU3RvcmFnZUFsbG9jYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RSxNQUFNLHNCQUFzQjtJQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUNuQyxPQUFxQixFQUNyQixlQUF1QixDQUFDO1FBRXhCLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU87YUFDckMseUJBQXlCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQzthQUNoRCxJQUFJLEVBQUU7YUFDTixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLFNBQWtDLENBQUMsQ0FBQyxDQUFDO1FBRWhHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUMvQixnQkFBOEI7UUFFOUIsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTzthQUNyQyxpQ0FBaUMsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNuRCxJQUFJLEVBQUU7YUFDTixJQUFJLENBQUMsQ0FBQyxlQUFpQyxFQUFFLEVBQUUsQ0FDMUMsZUFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNqQyxtQ0FBbUMsQ0FBQyxTQUFrQyxDQUFDLENBQ3hFLENBQ0YsQ0FBQztRQUVKLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQUVELGVBQWUsc0JBQXNCLENBQUMifQ==
|
|
@@ -3,7 +3,7 @@ declare class OffersStorageRequests {
|
|
|
3
3
|
private static readonly logger;
|
|
4
4
|
static getCountByIssuerId(): Promise<number>;
|
|
5
5
|
static getByIssuerId(teeOfferIssuerId: BlockchainId): Promise<OfferStorageRequest[]>;
|
|
6
|
-
static getByOfferVersion(offerId: BlockchainId, offerVersion?: number): Promise<OfferStorageRequest>;
|
|
6
|
+
static getByOfferVersion(offerId: BlockchainId, offerVersion?: number): Promise<OfferStorageRequest | undefined>;
|
|
7
7
|
static set(request: Omit<OfferStorageRequest, 'orderId' | 'timestamp'>, transactionOptions?: TransactionOptions): Promise<void>;
|
|
8
8
|
static cancel(offerId: BlockchainId, offerVersion?: number, transactionOptions?: TransactionOptions): Promise<void>;
|
|
9
9
|
static onOfferStorageRequestCreated(callback: onOfferStorageRequestCreatedCallback): () => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlockchainConnector, BlockchainEventsListener } from '../connectors/index.js';
|
|
2
|
-
import { checkIfActionAccountInitialized, cleanWeb3Data } from '../utils/helper.js';
|
|
2
|
+
import { checkIfActionAccountInitialized, cleanWeb3Data, convertOfferStorageRequestFromRaw, } from '../utils/helper.js';
|
|
3
3
|
import TxManager from '../utils/TxManager.js';
|
|
4
4
|
import rootLogger from '../logger.js';
|
|
5
5
|
class OffersStorageRequests {
|
|
@@ -13,14 +13,18 @@ class OffersStorageRequests {
|
|
|
13
13
|
return contract.methods
|
|
14
14
|
.getOffersStorageRequestsByIssuerId(teeOfferIssuerId)
|
|
15
15
|
.call()
|
|
16
|
-
.then((
|
|
16
|
+
.then((storageRequestList) => storageRequestList.map((storageRequest) => convertOfferStorageRequestFromRaw(storageRequest)));
|
|
17
17
|
}
|
|
18
|
-
static getByOfferVersion(offerId, offerVersion = 0) {
|
|
18
|
+
static async getByOfferVersion(offerId, offerVersion = 0) {
|
|
19
19
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
20
|
-
|
|
20
|
+
const storageRequest = await contract.methods
|
|
21
21
|
.getOffersStorageRequestsByOfferVersion(offerId, offerVersion)
|
|
22
22
|
.call()
|
|
23
|
-
.then((
|
|
23
|
+
.then((sRequest) => convertOfferStorageRequestFromRaw(sRequest));
|
|
24
|
+
if (Number(storageRequest.timestamp) === 0) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return storageRequest;
|
|
24
28
|
}
|
|
25
29
|
static async set(request, transactionOptions) {
|
|
26
30
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
@@ -28,6 +32,7 @@ class OffersStorageRequests {
|
|
|
28
32
|
await TxManager.execute(contract.methods.setOffersStorageRequest({
|
|
29
33
|
...request,
|
|
30
34
|
offerVersion: request.offerVersion ?? 0,
|
|
35
|
+
orderId: 0,
|
|
31
36
|
timestamp: 0,
|
|
32
37
|
}), transactionOptions);
|
|
33
38
|
}
|
|
@@ -76,4 +81,4 @@ class OffersStorageRequests {
|
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
83
|
export default OffersStorageRequests;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmZXJzU3RvcmFnZVJlcXVlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PZmZlcnNTdG9yYWdlUmVxdWVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPdkYsT0FBTyxFQUNMLCtCQUErQixFQUMvQixhQUFhLEVBQ2IsaUNBQWlDLEdBQ2xDLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFOUMsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBTXRDLE1BQU0scUJBQXFCO0lBQ2pCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUM7SUFFbkYsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7UUFDcEMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakUsT0FBTyxNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBOEI7UUFDeEQsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakUsT0FBTyxRQUFRLENBQUMsT0FBTzthQUNwQixrQ0FBa0MsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNwRCxJQUFJLEVBQUU7YUFDTixJQUFJLENBQUMsQ0FBQyxrQkFBb0MsRUFBRSxFQUFFLENBQzdDLGtCQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQ3pDLGlDQUFpQyxDQUFD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
|
|
@@ -4,9 +4,9 @@ declare class SecretRequests {
|
|
|
4
4
|
static getCountByKeeperId(teeOfferKeeperId: BlockchainId): Promise<number>;
|
|
5
5
|
static getByKeeperId(teeOfferIssuerId: BlockchainId): Promise<SecretRequest[]>;
|
|
6
6
|
static getByRequestorId(teeOfferRequestorId: BlockchainId): Promise<SecretRequest[]>;
|
|
7
|
-
static set(request: SecretRequest, transactionOptions?: TransactionOptions): Promise<void>;
|
|
7
|
+
static set(request: Omit<SecretRequest, 'timestamp'>, transactionOptions?: TransactionOptions): Promise<void>;
|
|
8
8
|
static clear(teeOfferKeeperId: BlockchainId, transactionOptions?: TransactionOptions): Promise<void>;
|
|
9
|
-
static cancel(request: SecretRequest, transactionOptions?: TransactionOptions): Promise<void>;
|
|
9
|
+
static cancel(request: Omit<SecretRequest, 'timestamp'>, transactionOptions?: TransactionOptions): Promise<void>;
|
|
10
10
|
static onSecretRequestCreated(callback: onSecretRequestCreatedCallback): () => void;
|
|
11
11
|
}
|
|
12
12
|
export type onSecretRequestCreatedCallback = (secretRequestorId: BlockchainId, secretKeeperId: BlockchainId, offerId: BlockchainId, offerVersion: number, block?: BlockInfo) => void;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BlockchainConnector, BlockchainEventsListener } from '../connectors/index.js';
|
|
2
|
-
import { checkIfActionAccountInitialized, cleanWeb3Data } from '../utils/helper.js';
|
|
2
|
+
import { checkIfActionAccountInitialized, cleanWeb3Data, convertSecretRequestFromRaw, } from '../utils/helper.js';
|
|
3
3
|
import TxManager from '../utils/TxManager.js';
|
|
4
4
|
import rootLogger from '../logger.js';
|
|
5
|
+
import { AMOY_TX_GAS_LIMIT } from '../constants.js';
|
|
5
6
|
class SecretRequests {
|
|
6
7
|
static logger = rootLogger.child({ className: 'SecretRequests' });
|
|
7
8
|
static async getCountByKeeperId(teeOfferKeeperId) {
|
|
@@ -13,33 +14,41 @@ class SecretRequests {
|
|
|
13
14
|
return contract.methods
|
|
14
15
|
.getSecretRequestsByKeeperId(teeOfferIssuerId)
|
|
15
16
|
.call()
|
|
16
|
-
.then((requests) => requests.map((request) =>
|
|
17
|
+
.then((requests) => requests.map((request) => convertSecretRequestFromRaw(request)));
|
|
17
18
|
}
|
|
18
19
|
static getByRequestorId(teeOfferRequestorId) {
|
|
19
20
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
20
21
|
return contract.methods
|
|
21
22
|
.getSecretRequestsByRequestorId(teeOfferRequestorId)
|
|
22
23
|
.call()
|
|
23
|
-
.then((requests) => requests.map((request) =>
|
|
24
|
+
.then((requests) => requests.map((request) => convertSecretRequestFromRaw(request)));
|
|
24
25
|
}
|
|
25
26
|
static async set(request, transactionOptions) {
|
|
26
27
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
27
28
|
checkIfActionAccountInitialized(transactionOptions);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
await TxManager.execute(contract.methods.setSecretRequest({
|
|
30
|
+
...request,
|
|
31
|
+
offerVersion: request.offerVersion ?? 0,
|
|
32
|
+
timestamp: 0,
|
|
33
|
+
}), transactionOptions);
|
|
31
34
|
}
|
|
32
35
|
static async clear(teeOfferKeeperId, transactionOptions) {
|
|
33
36
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
34
37
|
checkIfActionAccountInitialized(transactionOptions);
|
|
35
|
-
|
|
38
|
+
const options = {
|
|
39
|
+
gas: AMOY_TX_GAS_LIMIT,
|
|
40
|
+
...transactionOptions,
|
|
41
|
+
};
|
|
42
|
+
await TxManager.execute(contract.methods.clearSecretRequests(teeOfferKeeperId), options);
|
|
36
43
|
}
|
|
37
44
|
static async cancel(request, transactionOptions) {
|
|
38
45
|
const contract = BlockchainConnector.getInstance().getContract();
|
|
39
46
|
checkIfActionAccountInitialized(transactionOptions);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
await TxManager.execute(contract.methods.cancelSecretRequest({
|
|
48
|
+
...request,
|
|
49
|
+
offerVersion: request.offerVersion ?? 0,
|
|
50
|
+
timestamp: 0,
|
|
51
|
+
}), transactionOptions);
|
|
43
52
|
}
|
|
44
53
|
static onSecretRequestCreated(callback) {
|
|
45
54
|
const listener = BlockchainEventsListener.getInstance();
|
|
@@ -62,4 +71,4 @@ class SecretRequests {
|
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
export default SecretRequests;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjcmV0UmVxdWVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL1NlY3JldFJlcXVlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZGLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsYUFBYSxFQUNiLDJCQUEyQixHQUM1QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUt0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxNQUFNLGNBQWM7SUFDVixNQUFNLENBQVUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsZ0JBQThCO1FBQ25FLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQThCO1FBQ3hELE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU87YUFDcEIsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUM7YUFDN0MsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLENBQUMsUUFBMEIsRUFBRSxFQUFFLENBQ25DLFFBQVMsQ0FB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
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BlockInfo, TransactionOptions, HardwareInfo, TeeOfferInfo, OfferCreatedEvent, OptionAddedEvent, TeeSlotAddedEvent, TeeOfferOption, BlockchainId } from '../types/index.js';
|
|
2
2
|
declare class TeeOffers {
|
|
3
|
-
private static cache;
|
|
4
3
|
private static coresDenominator?;
|
|
5
4
|
private static readonly logger;
|
|
6
5
|
static teeOffers: BlockchainId[];
|
|
@@ -104,7 +103,6 @@ declare class TeeOffers {
|
|
|
104
103
|
*/
|
|
105
104
|
static onCreated(callback: onTeeOfferCreatedCallback): () => void;
|
|
106
105
|
static onViolationRateChanged(callback: onTeeViolationRateChangedCallback): () => void;
|
|
107
|
-
static getMostRecentlyActive(size?: number, force?: boolean): Promise<BlockchainId[]>;
|
|
108
106
|
}
|
|
109
107
|
export type onTeeOfferCreatedCallback = (offerId: BlockchainId, creator: string, externalId: string, block?: BlockInfo) => void;
|
|
110
108
|
export type onTeeViolationRateChangedCallback = (offerId: BlockchainId, providerAuth: string, violationRate: bigint | string, block?: BlockInfo) => void;
|
|
@@ -6,15 +6,7 @@ import { BlockchainConnector, BlockchainEventsListener } from '../connectors/ind
|
|
|
6
6
|
import Superpro from './Superpro.js';
|
|
7
7
|
import TxManager from '../utils/TxManager.js';
|
|
8
8
|
import StaticModel from './StaticModel.js';
|
|
9
|
-
import TCB from '../models/TCB.js';
|
|
10
|
-
import { INACTIVE_TCB_PERIOD, TEE_OFFER_SELECT_FRESH_SIZE } from '../constants.js';
|
|
11
|
-
import { createMemoryCache } from '../utils/cache/index.js';
|
|
12
|
-
import Consensus from './Consensus.js';
|
|
13
|
-
import TeeOffer from '../models/TeeOffer.js';
|
|
14
|
-
const inactivePeriod = (timeInMs) => Date.now() - new Date(timeInMs).valueOf();
|
|
15
|
-
const inactivePredicate = (timeInMs) => inactivePeriod(timeInMs) > INACTIVE_TCB_PERIOD;
|
|
16
9
|
class TeeOffers {
|
|
17
|
-
static cache = createMemoryCache();
|
|
18
10
|
static coresDenominator;
|
|
19
11
|
static logger = rootLogger.child({ className: 'TeeOffers' });
|
|
20
12
|
static teeOffers = [];
|
|
@@ -336,29 +328,6 @@ class TeeOffers {
|
|
|
336
328
|
event: 'TeeOfferViolationRateChanged',
|
|
337
329
|
});
|
|
338
330
|
}
|
|
339
|
-
static getMostRecentlyActive(size = TEE_OFFER_SELECT_FRESH_SIZE, force = false) {
|
|
340
|
-
const key = `${this.getMostRecentlyActive.name}:${size}`;
|
|
341
|
-
const ttl = 5 * 60;
|
|
342
|
-
return this.cache.wrap(key, async () => {
|
|
343
|
-
const tcbsCount = await Consensus.getTcbsCount();
|
|
344
|
-
const result = new Set();
|
|
345
|
-
for (let tcbId = tcbsCount; tcbId > Math.max(0, tcbsCount - size); tcbId--) {
|
|
346
|
-
const tcb = await new TCB(tcbId.toString()).get();
|
|
347
|
-
if (!tcb || !tcb.timeAdded) {
|
|
348
|
-
continue;
|
|
349
|
-
}
|
|
350
|
-
if (inactivePredicate(tcb.timeAdded * 1000)) {
|
|
351
|
-
break; // there is no need to continue search, timeAdded of next tcbs will be older
|
|
352
|
-
}
|
|
353
|
-
const offerId = (await new TCB(tcbId.toString()).getUtilityData()).teeOfferId;
|
|
354
|
-
const isVerified = await new TeeOffer(offerId).isTeeOfferVerifying();
|
|
355
|
-
if (isVerified) {
|
|
356
|
-
result.add(offerId);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
return [...result];
|
|
360
|
-
}, { ttl, force });
|
|
361
|
-
}
|
|
362
331
|
}
|
|
363
332
|
export default TeeOffers;
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlT2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9UZWVPZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsWUFBWSxFQUNaLGNBQWMsRUFDZCxzQkFBc0IsR0FDdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWEsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBS0wsU0FBUyxHQU9WLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sV0FBVyxNQUFNLGtCQUFrQixDQUFDO0FBSzNDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBZ0IsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQy9GLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxRQUFnQixFQUFXLEVBQUUsQ0FDdEQsY0FBYyxD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
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlT2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9UZWVPZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsWUFBWSxFQUNaLGNBQWMsRUFDZCxzQkFBc0IsR0FDdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWEsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBS0wsU0FBUyxHQU9WLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sV0FBVyxNQUFNLGtCQUFrQixDQUFDO0FBTTNDLE1BQU0sU0FBUztJQUNMLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBVTtJQUVqQyxNQUFNLENBQVUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUU5RSxNQUFNLENBQUMsU0FBUyxHQUFtQixFQUFFLENBQUM7SUFFdEMsTUFBTSxLQUFLLE9BQU87UUFDaEIsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQWdCO1FBQzVDLE1BQU0sV0FBVyxHQUFHLE1BQU0sU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JELEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQztRQUNwQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUM7UUFFcEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFnQjtRQUM5QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFELEVBQUUsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QyxLQUFLLElBQUksT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUN0RSxNQUFNLFNBQVMsR0FBRyxDQUNoQixNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUNwRCxDQUFDLFFBQVEsRUFBZSxDQUFDO1lBQzFCLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2pCLHdCQUFnQyxFQUNoQyxZQUEwQjtJQUMxQixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLFVBQVUsR0FBRyxTQUFTLEVBQ3RCLE9BQU8sR0FBRyxJQUFJLEVBQ2Qsa0JBQXVDO1FBRXZDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLCtCQUErQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEQsOERBQThEO1FBQzlELFlBQVksQ0FBQyxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUQsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUNyQixRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FDN0Isd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixZQUFZLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFDbEMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFDNUQsbUJBQW1CLEVBQ25CLE9BQU8sQ0FDUixFQUNELGtCQUFrQixDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUMxQixNQUdDLEVBQ0QsU0FBMkIsRUFDM0IsT0FBeUI7UUFFekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFL0YsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxQixPQUFPLE9BQTRCLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQWdCO1FBQ25DLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYTtRQUN4QixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQXNCO1FBQzFDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFzQjtRQUMvQyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRSxPQUFPLE1BQU0sUUFBUSxDQUFDLE9BQU87YUFDMUIsYUFBYSxDQUFDLFFBQVEsQ0FBQzthQUN2QixJQUFJLEVBQUU7YUFDTixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLDRCQUE0QixDQUFDLE1BQTJCLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUM5QixNQUF3RSxFQUN4RSxTQUEyQixFQUMzQixPQUF5QjtRQUV6QixNQUFNLE9BQU8sR0FBRyxNQUFNLFdBQVcsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFNUYsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxQixPQUFPLE9BQTRCLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQ2hDLE1BSUMsRUFDRCxTQUEyQixFQUMzQixPQUF5QjtRQUV6QixNQUFNLE9BQU8sR0FBRyxNQUFNLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxQixPQUFPLE9BQTJCLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQyxFQUFFLE9BQWdCO1FBQ25FLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLE1BQU0sR0FBNEIsQ0FBQyxLQUFlLEVBQVEsRUFBRTtZQUNoRSxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzlDLE9BQU87WUFDVCxDQUFDO1lBQ0QsUUFBUSxDQUNFLFdBQVcsQ0FBQyxPQUFPLEVBQ2IsV0FBVyxDQUFDLE9BQU8sRUFDbkIsV0FBVyxDQUFDLE1BQU0sRUFDaEMsa0JBQWtCLENBQVksV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUMxQztnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLElBQUksRUFBVSxLQUFLLENBQUMsU0FBUzthQUM5QixDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBNkIsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUM3QixPQUFPO1lBQ1AsTUFBTTtZQUNOLEtBQUssRUFBRSxjQUFjO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFrQztRQUNyRCxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxRQUFRLENBQ1EsV0FBVyxDQUFDLE9BQU8sRUFDbkIsV0FBVyxDQUFDLE1BQU0sRUFDckI7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsZ0JBQWdCO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFrQztRQUNyRCxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxRQUFRLENBQ1EsV0FBVyxDQUFDLE9BQU8sRUFDbkIsV0FBVyxDQUFDLE1BQU0sRUFDckI7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsZ0JBQWdCO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBa0MsRUFBRSxPQUFnQjtRQUN2RSxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDekUsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM5QyxPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FDRSxXQUFXLENBQUMsT0FBTyxFQUNiLFdBQVcsQ0FBQyxVQUFVLEVBQ3RCLFdBQVcsQ0FBQyxRQUFRLEVBQ2xDLGtCQUFrQixDQUFZLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFDMUM7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsYUFBYTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUNwQixRQUFvQyxFQUNwQyxVQUF5QjtRQUV6QixNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxDQUFDLENBQUM7UUFDM0UsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNyRixPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FDUSxXQUFXLENBQUMsVUFBVSxFQUN0QixXQUFXLENBQUMsUUFBUSxFQUN2QjtnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLElBQUksRUFBVSxLQUFLLENBQUMsU0FBUzthQUM5QixDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBNkIsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUM3QixPQUFPO1lBQ1AsTUFBTTtZQUNOLEtBQUssRUFBRSxlQUFlO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQ3BCLFFBQW9DLEVBQ3BDLFVBQXlCO1FBRXpCLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQztRQUMzRSxNQUFNLE1BQU0sR0FBNEIsQ0FBQyxLQUFlLEVBQVEsRUFBRTtZQUNoRSxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksVUFBVSxJQUFJLFdBQVcsQ0FBQyxVQUFVLElBQUkscUJBQXFCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsT0FBTztZQUNULENBQUM7WUFDRCxRQUFRLENBQ1EsV0FBVyxDQUFDLFVBQVUsRUFDdEIsV0FBVyxDQUFDLFFBQVEsRUFDdkI7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBbUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUE0QixDQUFDLEtBQWUsRUFBUSxFQUFFO1lBQ2hFLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsUUFBUSxDQUNRLFdBQVcsQ0FBQyxPQUFPLEVBQ3pCLFdBQVcsQ0FBQyxPQUFPLEVBQzNCLGtCQUFrQixDQUFZLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFDMUM7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsaUJBQWlCO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsUUFBMkM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sTUFBTSxHQUE0QixDQUFDLEtBQWUsRUFBUSxFQUFFO1lBQ2hFLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsUUFBUSxDQUNRLFdBQVcsQ0FBQyxPQUFPLEVBQ3pCLFdBQVcsQ0FBQyxZQUFZLEVBQ3hCLFdBQVcsQ0FBQyxhQUFhLEVBQ3RCO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLDhCQUE4QjtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQWtESCxlQUFlLFNBQVMsQ0FBQyJ9
|