@aztec/prover-client 0.60.0 → 0.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/orchestrator/block-building-helpers.d.ts +2 -3
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +5 -12
- package/dest/orchestrator/orchestrator.d.ts +2 -12
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +83 -168
- package/dest/orchestrator/tx-proving-state.d.ts +17 -27
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +74 -112
- package/dest/prover-agent/memory-proving-queue.d.ts +4 -22
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +6 -28
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +5 -11
- package/dest/prover-agent/rpc.d.ts.map +1 -1
- package/dest/prover-agent/rpc.js +6 -10
- package/dest/test/mock_prover.d.ts +4 -6
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +8 -14
- package/package.json +11 -11
- package/src/orchestrator/block-building-helpers.ts +4 -29
- package/src/orchestrator/orchestrator.ts +99 -277
- package/src/orchestrator/tx-proving-state.ts +113 -153
- package/src/prover-agent/memory-proving-queue.ts +15 -51
- package/src/prover-agent/prover-agent.ts +4 -12
- package/src/prover-agent/rpc.ts +6 -12
- package/src/test/mock_prover.ts +13 -36
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { Body,
|
|
3
|
-
import {
|
|
2
|
+
import { Body, L2Block, MerkleTreeId, makeEmptyProcessedTx, makePaddingProcessedTx, toTxEffect, } from '@aztec/circuit-types';
|
|
3
|
+
import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, BaseParityInputs, BlockRootRollupInputs, EmptyBlockRootRollupInputs, Fr, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY, PrivateKernelEmptyInputData, RootParityInputs, VerificationKeyData, makeEmptyRecursiveProof, } from '@aztec/circuits.js';
|
|
4
4
|
import { makeTuple } from '@aztec/foundation/array';
|
|
5
5
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
6
6
|
import { AbortError } from '@aztec/foundation/error';
|
|
@@ -8,14 +8,14 @@ import { createDebugLogger } from '@aztec/foundation/log';
|
|
|
8
8
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
9
9
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
10
10
|
import { elapsed } from '@aztec/foundation/timer';
|
|
11
|
-
import {
|
|
11
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
|
|
12
12
|
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
13
13
|
import { Attributes, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
|
|
14
14
|
import { inspect } from 'util';
|
|
15
|
-
import {
|
|
15
|
+
import { buildBaseRollupHints, buildHeaderFromCircuitOutputs, buildHeaderFromTxEffects, createBlockMergeRollupInputs, createMergeRollupInputs, getPreviousRollupDataFromPublicInputs, getRootRollupInput, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, validatePartialState, validateTx, } from './block-building-helpers.js';
|
|
16
16
|
import { EpochProvingState, } from './epoch-proving-state.js';
|
|
17
17
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
18
|
-
import {
|
|
18
|
+
import { TxProvingState } from './tx-proving-state.js';
|
|
19
19
|
const logger = createDebugLogger('aztec:prover:proving-orchestrator');
|
|
20
20
|
/**
|
|
21
21
|
* Implements an event driven proving scheduler to build the recursive proof tree. The idea being:
|
|
@@ -147,8 +147,8 @@ let ProvingOrchestrator = (() => {
|
|
|
147
147
|
logger.warn(`Ignoring empty transaction ${tx.hash} - it will not be added to this block`);
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
|
-
const [
|
|
151
|
-
this.enqueueFirstProofs(
|
|
150
|
+
const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState);
|
|
151
|
+
this.enqueueFirstProofs(hints, treeSnapshots, tx, provingState);
|
|
152
152
|
if (provingState.transactionsReceived === provingState.totalNumTxs) {
|
|
153
153
|
logger.verbose(`All transactions received for block ${provingState.globalVariables.blockNumber}.`);
|
|
154
154
|
}
|
|
@@ -182,9 +182,9 @@ let ProvingOrchestrator = (() => {
|
|
|
182
182
|
const unprovenPaddingTx = makeEmptyProcessedTx(this.db.getInitialHeader(), provingState.globalVariables.chainId, provingState.globalVariables.version, getVKTreeRoot(), protocolContractTreeRoot);
|
|
183
183
|
const txInputs = [];
|
|
184
184
|
for (let i = 0; i < paddingTxCount; i++) {
|
|
185
|
-
const [
|
|
185
|
+
const [hints, snapshot] = await this.prepareTransaction(unprovenPaddingTx, provingState);
|
|
186
186
|
const txInput = {
|
|
187
|
-
|
|
187
|
+
hints,
|
|
188
188
|
snapshot,
|
|
189
189
|
};
|
|
190
190
|
txInputs.push(txInput);
|
|
@@ -305,13 +305,11 @@ let ProvingOrchestrator = (() => {
|
|
|
305
305
|
// The padding tx contains the proof and vk, generated separately from the base inputs
|
|
306
306
|
// Copy these into the base rollup inputs and enqueue the base rollup proof
|
|
307
307
|
for (let i = 0; i < txInputs.length; i++) {
|
|
308
|
-
txInputs[i]
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
txInputs[i].inputs.kernelData.vkPath = getVKSiblingPath(txInputs[i].inputs.kernelData.vkIndex);
|
|
312
|
-
const txProvingState = new TxProvingState(paddingTx, txInputs[i].inputs, txInputs[i].snapshot);
|
|
308
|
+
const { hints, snapshot } = txInputs[i];
|
|
309
|
+
const txProvingState = new TxProvingState(paddingTx, hints, snapshot);
|
|
310
|
+
txProvingState.assignTubeProof({ proof: paddingTx.recursiveProof, verificationKey: paddingTx.verificationKey });
|
|
313
311
|
const txIndex = provingState.addNewTx(txProvingState);
|
|
314
|
-
this.enqueueBaseRollup(provingState,
|
|
312
|
+
this.enqueueBaseRollup(provingState, txIndex);
|
|
315
313
|
}
|
|
316
314
|
}
|
|
317
315
|
/**
|
|
@@ -368,16 +366,18 @@ let ProvingOrchestrator = (() => {
|
|
|
368
366
|
}
|
|
369
367
|
return txInputs;
|
|
370
368
|
}
|
|
371
|
-
enqueueFirstProofs(
|
|
372
|
-
const txProvingState = new TxProvingState(tx,
|
|
369
|
+
enqueueFirstProofs(hints, treeSnapshots, tx, provingState) {
|
|
370
|
+
const txProvingState = new TxProvingState(tx, hints, treeSnapshots);
|
|
371
|
+
const rejectReason = txProvingState.verifyStateOrReject();
|
|
372
|
+
if (rejectReason) {
|
|
373
|
+
provingState.reject(rejectReason);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
373
376
|
const txIndex = provingState.addNewTx(txProvingState);
|
|
374
377
|
this.enqueueTube(provingState, txIndex);
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
for (let i = 0; i < numPublicKernels; i++) {
|
|
379
|
-
logger.debug(`Enqueueing public VM ${i} for tx ${txIndex}`);
|
|
380
|
-
this.enqueueVM(provingState, txIndex, i);
|
|
378
|
+
if (txProvingState.requireAvmProof) {
|
|
379
|
+
logger.debug(`Enqueueing public VM for tx ${txIndex}`);
|
|
380
|
+
this.enqueueVM(provingState, txIndex);
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
/**
|
|
@@ -440,7 +440,7 @@ let ProvingOrchestrator = (() => {
|
|
|
440
440
|
}
|
|
441
441
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
442
442
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
443
|
-
const [ms,
|
|
443
|
+
const [ms, hints] = await elapsed(buildBaseRollupHints(tx, provingState.globalVariables, this.db));
|
|
444
444
|
if (!tx.isEmpty) {
|
|
445
445
|
this.metrics.recordBaseRollupInputs(ms);
|
|
446
446
|
}
|
|
@@ -452,47 +452,37 @@ let ProvingOrchestrator = (() => {
|
|
|
452
452
|
logger.debug(`Discarding proving job, state no longer valid`);
|
|
453
453
|
return;
|
|
454
454
|
}
|
|
455
|
-
return [
|
|
455
|
+
return [hints, treeSnapshots];
|
|
456
456
|
}
|
|
457
457
|
// Executes the base rollup circuit and stored the output as intermediate state for the parent merge/root circuit
|
|
458
458
|
// Executes the next level of merge if all inputs are available
|
|
459
|
-
enqueueBaseRollup(provingState,
|
|
459
|
+
enqueueBaseRollup(provingState, txIndex) {
|
|
460
460
|
if (!provingState?.verifyState()) {
|
|
461
461
|
logger.debug('Not running base rollup, state invalid');
|
|
462
462
|
return;
|
|
463
463
|
}
|
|
464
|
-
const
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
}
|
|
471
|
-
const txEncryptedLogs = EncryptedTxL2Logs.hashSiloedLogs(tx.baseRollupInputs.kernelData.publicInputs.end.encryptedLogsHashes
|
|
472
|
-
.filter(log => !log.isEmpty())
|
|
473
|
-
.map(log => log.getSiloedHash()));
|
|
474
|
-
if (!txEncryptedLogs.equals(tx.processedTx.encryptedLogs.hash())) {
|
|
475
|
-
// @todo This rejection messages is never seen. Never making it out to the logs
|
|
476
|
-
provingState.reject(`Encrypted logs hash mismatch: ${Fr.fromBuffer(txEncryptedLogs)} === ${Fr.fromBuffer(tx.processedTx.encryptedLogs.hash())}`);
|
|
477
|
-
return;
|
|
478
|
-
}
|
|
479
|
-
const txUnencryptedLogs = UnencryptedTxL2Logs.hashSiloedLogs(tx.baseRollupInputs.kernelData.publicInputs.end.unencryptedLogsHashes
|
|
480
|
-
.filter(log => !log.isEmpty())
|
|
481
|
-
.map(log => log.getSiloedHash()));
|
|
482
|
-
if (!txUnencryptedLogs.equals(tx.processedTx.unencryptedLogs.hash())) {
|
|
483
|
-
provingState.reject(`Unencrypted logs hash mismatch: ${Fr.fromBuffer(txUnencryptedLogs)} === ${Fr.fromBuffer(tx.processedTx.unencryptedLogs.hash())}`);
|
|
484
|
-
return;
|
|
485
|
-
}
|
|
486
|
-
logger.debug(`Enqueuing deferred proving base rollup${tx.processedTx.isEmpty ? ' with padding tx' : ''} for ${tx.processedTx.hash.toString()}`);
|
|
487
|
-
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getBaseRollupProof', {
|
|
488
|
-
[Attributes.TX_HASH]: tx.processedTx.hash.toString(),
|
|
464
|
+
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
465
|
+
const { processedTx } = txProvingState;
|
|
466
|
+
const rollupType = txProvingState.requireAvmProof ? 'public-base-rollup' : 'private-base-rollup';
|
|
467
|
+
logger.debug(`Enqueuing deferred proving base rollup${processedTx.isEmpty ? ' with padding tx' : ''} for ${processedTx.hash.toString()}`);
|
|
468
|
+
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, `ProvingOrchestrator.prover.${rollupType === 'private-base-rollup' ? 'getPrivateBaseRollupProof' : 'getPublicBaseRollupProof'}`, {
|
|
469
|
+
[Attributes.TX_HASH]: processedTx.hash.toString(),
|
|
489
470
|
[Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
|
|
490
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]:
|
|
491
|
-
}, signal =>
|
|
492
|
-
|
|
493
|
-
|
|
471
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: rollupType,
|
|
472
|
+
}, signal => {
|
|
473
|
+
if (rollupType === 'private-base-rollup') {
|
|
474
|
+
const inputs = txProvingState.getPrivateBaseInputs();
|
|
475
|
+
return this.prover.getPrivateBaseRollupProof(inputs, signal, provingState.epochNumber);
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
const inputs = txProvingState.getPublicBaseInputs();
|
|
479
|
+
return this.prover.getPublicBaseRollupProof(inputs, signal, provingState.epochNumber);
|
|
480
|
+
}
|
|
481
|
+
}), result => {
|
|
482
|
+
logger.debug(`Completed proof for ${rollupType} for tx ${processedTx.hash.toString()}`);
|
|
483
|
+
validatePartialState(result.inputs.end, txProvingState.treeSnapshots);
|
|
494
484
|
const currentLevel = provingState.numMergeLevels + 1n;
|
|
495
|
-
this.storeAndExecuteNextMergeLevel(provingState, currentLevel,
|
|
485
|
+
this.storeAndExecuteNextMergeLevel(provingState, currentLevel, BigInt(txIndex), [
|
|
496
486
|
result.inputs,
|
|
497
487
|
result.proof,
|
|
498
488
|
result.verificationKey.keyAsFields,
|
|
@@ -512,10 +502,13 @@ let ProvingOrchestrator = (() => {
|
|
|
512
502
|
[Attributes.TX_HASH]: txProvingState.processedTx.hash.toString(),
|
|
513
503
|
[Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
|
|
514
504
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'tube-circuit',
|
|
515
|
-
}, signal =>
|
|
505
|
+
}, signal => {
|
|
506
|
+
const inputs = txProvingState.getTubeInputs();
|
|
507
|
+
return this.prover.getTubeProof(inputs, signal, provingState.epochNumber);
|
|
508
|
+
}), result => {
|
|
516
509
|
logger.debug(`Completed tube proof for tx index: ${txIndex}`);
|
|
517
|
-
|
|
518
|
-
this.checkAndEnqueueNextTxCircuit(provingState, txIndex
|
|
510
|
+
txProvingState.assignTubeProof(result);
|
|
511
|
+
this.checkAndEnqueueNextTxCircuit(provingState, txIndex);
|
|
519
512
|
});
|
|
520
513
|
}
|
|
521
514
|
// Executes the merge rollup circuit and stored the output as intermediate state for the parent merge/block root circuit
|
|
@@ -714,127 +707,49 @@ let ProvingOrchestrator = (() => {
|
|
|
714
707
|
* previous kernel is ready
|
|
715
708
|
* @param provingState - The proving state being operated on
|
|
716
709
|
* @param txIndex - The index of the transaction being proven
|
|
717
|
-
* @param functionIndex - The index of the function/kernel being proven
|
|
718
710
|
*/
|
|
719
|
-
enqueueVM(provingState, txIndex
|
|
711
|
+
enqueueVM(provingState, txIndex) {
|
|
720
712
|
if (!provingState?.verifyState()) {
|
|
721
713
|
logger.debug(`Not running VM circuit as state is no longer valid`);
|
|
722
714
|
return;
|
|
723
715
|
}
|
|
724
716
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
725
|
-
|
|
726
|
-
//
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
const
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
717
|
+
// This function tries to do AVM proving. If there is a failure, it fakes the proof unless AVM_PROVING_STRICT is defined.
|
|
718
|
+
// Nothing downstream depends on the AVM proof yet. So having this mode lets us incrementally build the AVM circuit.
|
|
719
|
+
const doAvmProving = wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getAvmProof', {
|
|
720
|
+
[Attributes.TX_HASH]: txProvingState.processedTx.hash.toString(),
|
|
721
|
+
}, async (signal) => {
|
|
722
|
+
const inputs = txProvingState.getAvmInputs();
|
|
723
|
+
try {
|
|
724
|
+
return await this.prover.getAvmProof(inputs, signal, provingState.epochNumber);
|
|
725
|
+
}
|
|
726
|
+
catch (err) {
|
|
727
|
+
if (process.env.AVM_PROVING_STRICT) {
|
|
728
|
+
throw err;
|
|
737
729
|
}
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
return {
|
|
745
|
-
proof: makeEmptyProof(),
|
|
746
|
-
verificationKey: VerificationKeyData.makeFakeHonk(),
|
|
747
|
-
};
|
|
748
|
-
}
|
|
730
|
+
else {
|
|
731
|
+
logger.warn(`Error thrown when proving AVM circuit, but AVM_PROVING_STRICT is off, so faking AVM proof and carrying on. Error: ${err}.`);
|
|
732
|
+
return {
|
|
733
|
+
proof: makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS),
|
|
734
|
+
verificationKey: VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS),
|
|
735
|
+
};
|
|
749
736
|
}
|
|
750
|
-
});
|
|
751
|
-
this.deferredProving(provingState, doAvmProving, proofAndVk => {
|
|
752
|
-
logger.debug(`Proven VM for function index ${functionIndex} of tx index ${txIndex}`);
|
|
753
|
-
this.checkAndEnqueuePublicKernelFromVMProof(provingState, txIndex, functionIndex, proofAndVk.proof);
|
|
754
|
-
});
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
checkAndEnqueuePublicKernelFromVMProof(provingState, txIndex, functionIndex, vmProof) {
|
|
758
|
-
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
759
|
-
const kernelRequest = txProvingState.getNextPublicKernelFromVMProof(functionIndex, vmProof);
|
|
760
|
-
if (kernelRequest.code === TX_PROVING_CODE.READY) {
|
|
761
|
-
if (kernelRequest.function === undefined) {
|
|
762
|
-
// Should not be possible
|
|
763
|
-
throw new Error(`Error occurred, public function request undefined after VM proof completed`);
|
|
764
737
|
}
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
738
|
+
});
|
|
739
|
+
this.deferredProving(provingState, doAvmProving, proofAndVk => {
|
|
740
|
+
logger.debug(`Proven VM for tx index: ${txIndex}`);
|
|
741
|
+
txProvingState.assignAvmProof(proofAndVk);
|
|
742
|
+
this.checkAndEnqueueNextTxCircuit(provingState, txIndex);
|
|
743
|
+
});
|
|
768
744
|
}
|
|
769
|
-
|
|
770
|
-
// This could be either a public kernel or the base rollup
|
|
771
|
-
// Alternatively, if we are still waiting on a public VM prof then it will continue waiting
|
|
772
|
-
checkAndEnqueueNextTxCircuit(provingState, txIndex, proof, verificationKey, nextKernelRequest) {
|
|
745
|
+
checkAndEnqueueNextTxCircuit(provingState, txIndex) {
|
|
773
746
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
774
|
-
|
|
775
|
-
if (nextKernelRequest.code === TX_PROVING_CODE.NOT_READY) {
|
|
776
|
-
// Must be waiting on a VM proof
|
|
777
|
-
return;
|
|
778
|
-
}
|
|
779
|
-
if (nextKernelRequest.code === TX_PROVING_CODE.COMPLETED) {
|
|
780
|
-
// We must have completed all public function proving, we now move to the base rollup
|
|
781
|
-
logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
782
|
-
// Take the final proof and assign it to the base rollup inputs
|
|
783
|
-
txProvingState.baseRollupInputs.kernelData.proof = proof;
|
|
784
|
-
txProvingState.baseRollupInputs.kernelData.vk = verificationKey;
|
|
785
|
-
try {
|
|
786
|
-
txProvingState.baseRollupInputs.kernelData.vkIndex = getVKIndex(verificationKey);
|
|
787
|
-
}
|
|
788
|
-
catch (_ignored) {
|
|
789
|
-
// TODO(#7410) The VK for the tube won't be in the tree for now, so we manually set it to the tube vk index
|
|
790
|
-
txProvingState.baseRollupInputs.kernelData.vkIndex = TUBE_INDEX;
|
|
791
|
-
}
|
|
792
|
-
txProvingState.baseRollupInputs.kernelData.vkPath = getVKSiblingPath(txProvingState.baseRollupInputs.kernelData.vkIndex);
|
|
793
|
-
this.enqueueBaseRollup(provingState, BigInt(txIndex), txProvingState);
|
|
747
|
+
if (!txProvingState.ready()) {
|
|
794
748
|
return;
|
|
795
749
|
}
|
|
796
|
-
//
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
throw new Error(`Error occurred, public function request undefined after kernel proof completed`);
|
|
800
|
-
}
|
|
801
|
-
this.enqueuePublicKernel(provingState, txIndex, nextKernelRequest.functionIndex);
|
|
802
|
-
}
|
|
803
|
-
/**
|
|
804
|
-
* Executes the kernel circuit for a public function, will enqueue the next kernel circuit if it's VM is already proven
|
|
805
|
-
* or the base rollup circuit if there are no more kernels to be proven
|
|
806
|
-
* @param provingState - The proving state being operated on
|
|
807
|
-
* @param txIndex - The index of the transaction being proven
|
|
808
|
-
* @param functionIndex - The index of the function/kernel being proven
|
|
809
|
-
*/
|
|
810
|
-
enqueuePublicKernel(provingState, txIndex, functionIndex) {
|
|
811
|
-
if (!provingState?.verifyState()) {
|
|
812
|
-
logger.debug(`Not running public kernel circuit as state is no longer valid`);
|
|
813
|
-
return;
|
|
814
|
-
}
|
|
815
|
-
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
816
|
-
const request = txProvingState.getPublicFunctionState(functionIndex).publicKernelRequest;
|
|
817
|
-
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, request.type === ProvingRequestType.PUBLIC_KERNEL_TAIL
|
|
818
|
-
? 'ProvingOrchestrator.prover.getPublicTailProof'
|
|
819
|
-
: request.type === ProvingRequestType.PUBLIC_KERNEL_MERGE
|
|
820
|
-
? 'ProvingOrchestrator.prover.getPublicKernelMergeProof'
|
|
821
|
-
: 'ProvingOrchestrator.prover.getPublicKernelInnerProof', {
|
|
822
|
-
[Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
|
|
823
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: mapProvingRequestTypeToCircuitName(request.type),
|
|
824
|
-
}, (signal) => {
|
|
825
|
-
if (request.type === ProvingRequestType.PUBLIC_KERNEL_TAIL) {
|
|
826
|
-
return this.prover.getPublicTailProof(request.inputs, signal, provingState.epochNumber);
|
|
827
|
-
}
|
|
828
|
-
else if (request.type === ProvingRequestType.PUBLIC_KERNEL_MERGE) {
|
|
829
|
-
return this.prover.getPublicKernelMergeProof(request.inputs, signal, provingState.epochNumber);
|
|
830
|
-
}
|
|
831
|
-
else {
|
|
832
|
-
return this.prover.getPublicKernelInnerProof(request.inputs, signal, provingState.epochNumber);
|
|
833
|
-
}
|
|
834
|
-
}), result => {
|
|
835
|
-
const nextKernelRequest = txProvingState.getNextPublicKernelFromKernelProof(functionIndex, result.proof, result.verificationKey);
|
|
836
|
-
this.checkAndEnqueueNextTxCircuit(provingState, txIndex, result.proof, result.verificationKey, nextKernelRequest);
|
|
837
|
-
});
|
|
750
|
+
// We must have completed all proving (tube proof and (if required) vm proof are generated), we now move to the base rollup.
|
|
751
|
+
logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
752
|
+
this.enqueueBaseRollup(provingState, txIndex);
|
|
838
753
|
}
|
|
839
754
|
},
|
|
840
755
|
(() => {
|
|
@@ -879,4 +794,4 @@ let ProvingOrchestrator = (() => {
|
|
|
879
794
|
_a;
|
|
880
795
|
})();
|
|
881
796
|
export { ProvingOrchestrator };
|
|
882
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9vcmNoZXN0cmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxJQUFJLEVBQ0oscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsWUFBWSxFQUdaLGtCQUFrQixFQUlsQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixrQ0FBa0MsRUFDbEMsVUFBVSxHQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFHaEIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixFQUFFLEVBSUYsMkJBQTJCLEVBQzNCLHdDQUF3QyxFQUN4Qyw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLCtCQUErQixFQUMvQiwyQkFBMkIsRUFNM0IsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFFVixVQUFVLEVBR1YsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQXFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNMLG9CQUFvQixFQUNwQiw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIscUNBQXFDLEVBQ3JDLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsVUFBVSxHQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUVMLGlCQUFpQixHQUdsQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQTZCLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5HLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFFdEU7Ozs7Ozs7OztHQVNHO0FBRUg7O0dBRUc7SUFDVSxtQkFBbUI7Ozs7Ozs7O3NCQUFuQixtQkFBbUI7WUFROUIsWUFDVSxFQUE2QixFQUM3QixNQUEyQixFQUNuQyxlQUFnQyxFQUNmLFdBQWUsRUFBRSxDQUFDLElBQUk7Z0JBSC9CLE9BQUUsSUFURCxtREFBbUIsRUFTcEIsRUFBRSxFQUEyQjtnQkFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7Z0JBRWxCLGFBQVEsR0FBUixRQUFRLENBQWM7Z0JBWGpDLGlCQUFZLEdBQWtDLFNBQVMsQ0FBQztnQkFDeEQsdUJBQWtCLEdBQXNCLEVBQUUsQ0FBQztnQkFDM0MsY0FBUyxHQUFtQyxTQUFTLENBQUM7Z0JBRXRELG1CQUFjLEdBQXVDLFNBQVMsQ0FBQztnQkFTckUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDBCQUEwQixDQUFDLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFFRCxJQUFJLE1BQU07Z0JBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM3QixDQUFDO1lBRU0sV0FBVztnQkFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLENBQUM7WUFFRDs7ZUFFRztZQUNJLEtBQUs7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDN0IsQ0FBQztZQUVNLGFBQWEsQ0FBQyxXQUFtQixFQUFFLGNBQXNCO2dCQUM5RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsb0JBQW9CLEVBQWlCLENBQUM7Z0JBQ3JGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsY0FBYyxHQUFHLENBQUMsQ0FBQztnQkFDaEYsQ0FBQztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixXQUFXLFNBQVMsY0FBYyxTQUFTLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztZQUNoQyxDQUFDO1lBRUQ7Ozs7Ozs7ZUFPRztZQUtJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBYyxFQUFFLGVBQWdDLEVBQUUsY0FBb0I7Z0JBQy9GLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztnQkFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUM7b0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztnQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM1RSxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7Z0JBRUQsNEZBQTRGO2dCQUM1Rix5REFBeUQ7Z0JBQ3pELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxlQUFlLENBQUM7Z0JBQ3hDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNsRixJQUFJLGFBQWEsS0FBSyxXQUFXLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQ1QscURBQXFELFdBQVcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxhQUFhLEdBQUcsQ0FDM0csQ0FBQztnQkFDSixDQUFDO2dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQ1Qsa0JBQWtCLGVBQWUsQ0FBQyxXQUFXLGFBQWEsZUFBZSxDQUFDLFVBQVUsU0FBUyxNQUFNLGVBQWUsQ0FDbkgsQ0FBQztnQkFFRixtRUFBbUU7Z0JBQ25FLElBQUksZ0JBQWdCLEdBQXVCLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxvQkFBMkUsQ0FBQztnQkFDaEYsSUFBSSxDQUFDO29CQUNILG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUNuRyxDQUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUNELGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsK0JBQStCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNsRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQ3JFLENBQUM7Z0JBRUYsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUUvRixNQUFNLHdDQUF3QyxHQUFHLE1BQU0scUJBQXFCLENBQzFFLFlBQVksQ0FBQyxxQkFBcUIsRUFDbEMsMkJBQTJCLEVBQzNCLElBQUksQ0FBQyxFQUFFLENBQ1IsQ0FBQztnQkFFRixNQUFNLG1DQUFtQyxHQUFHLFNBQVMsQ0FDbkQsd0NBQXdDLEVBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQ0YsQ0FBQyxHQUFHLHdDQUF3QyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQzdHLENBQUMsQ0FDRixDQUFDO2dCQUVGLDhEQUE4RDtnQkFDOUQsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztnQkFDckYsTUFBTSxpQ0FBaUMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUU3RywrQ0FBK0M7Z0JBQy9DLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUYsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNsRCxZQUFZLENBQUMsT0FBTyxFQUNwQixNQUFNLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQ3hELENBQUM7Z0JBRUYsSUFBSSxDQUFDLFlBQWEsQ0FBQyxhQUFhLENBQzlCLE1BQU0sRUFDTixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBQ2pDLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsaUJBQWtCLENBQ25CLENBQUM7Z0JBRUYsNkNBQTZDO2dCQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ2pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsWUFBYSxDQUFDLFlBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztZQUNILENBQUM7WUFFRDs7O2VBR0c7WUFJSSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQWU7Z0JBQ25DLE1BQU0sWUFBWSxHQUFHLElBQUksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztnQkFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQztvQkFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDO2dCQUVELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO2dCQUM1RCxDQUFDO2dCQUVELFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFZixNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLElBQUksdUNBQXVDLENBQUMsQ0FBQztvQkFDMUYsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNoRixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRWpFLElBQUksWUFBWSxDQUFDLG9CQUFvQixLQUFLLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDbkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dCQUNyRyxDQUFDO1lBQ0gsQ0FBQztZQUVEOzs7ZUFHRztZQVlJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxjQUF1QjtnQkFDcEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RkFBOEYsQ0FBQyxDQUFDO2dCQUNsSCxDQUFDO2dCQUVELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLENBQUM7Z0JBRUQsd0RBQXdEO2dCQUN4RCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDcEYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLGNBQWMscUJBQXFCLENBQUMsQ0FBQztnQkFDcEcsQ0FBQztnQkFFRCxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsY0FBYyxxQkFBcUIsQ0FBQyxDQUFDO29CQUN6RSxvQ0FBb0M7b0JBQ3BDLGdCQUFnQjtvQkFDaEIsMkRBQTJEO29CQUMzRCxxRkFBcUY7b0JBQ3JGLHlFQUF5RTtvQkFDekUscUJBQXFCO29CQUNyQixtREFBbUQ7b0JBQ25ELE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsRUFDMUIsWUFBWSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQ3BDLFlBQVksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUNwQyxhQUFhLEVBQUUsRUFDZix3QkFBd0IsQ0FDekIsQ0FBQztvQkFDRixNQUFNLFFBQVEsR0FBaUUsRUFBRSxDQUFDO29CQUNsRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7d0JBQzFGLE1BQU0sT0FBTyxHQUFHOzRCQUNkLE1BQU07NEJBQ04sUUFBUTt5QkFDVCxDQUFDO3dCQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7b0JBRUQsMEJBQTBCO29CQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNwRSxDQUFDO2dCQUVELDZCQUE2QjtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLFlBQVksQ0FBQyxlQUFlLENBQUMsV0FBVyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUNsRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUVwRCwwR0FBMEc7Z0JBQzFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEQsT0FBTyxZQUFZLENBQUMsS0FBTSxDQUFDO1lBQzdCLENBQUM7WUFFRCxvREFBb0Q7WUFDN0MsUUFBUSxDQUFDLEtBQWE7Z0JBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDckQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFXTyxRQUFRO2dCQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFhLENBQUM7Z0JBQ3hDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUMsQ0FBQztnQkFDckcsQ0FBQztnQkFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDaEcsSUFBSSxpQkFBaUIsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLENBQUM7Z0JBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsaUJBQWlCLHFCQUFxQixDQUFDLENBQUM7Z0JBRWpGLE1BQU0sTUFBTSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQztvQkFDN0MsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO29CQUMxQixTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7b0JBQ2xDLGVBQWUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWU7b0JBQ2pELFVBQVUsRUFBRSxhQUFhLEVBQUU7b0JBQzNCLHdCQUF3QjtvQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUN4QixDQUFDLENBQUM7Z0JBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsaUJBQWlCLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RyxJQUFJLENBQUMsZUFBZSxDQUNsQixZQUFZLEVBQ1osa0JBQWtCLENBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gseURBQXlELEVBQ3pEO29CQUNFLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsUUFBUTtvQkFDNUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSx5QkFBK0M7aUJBQ3BGLEVBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUM3RixFQUNELE1BQU0sQ0FBQyxFQUFFO29CQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7b0JBQ3RELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMzQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNyRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ3JELElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTs0QkFDekUsTUFBTSxDQUFDLE1BQU07NEJBQ2IsTUFBTSxDQUFDLEtBQUs7NEJBQ1osTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXO3lCQUNuQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDLENBQ0YsQ0FBQztnQkFDRixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBRU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUErQixFQUFFLGNBQXVCO2dCQUMvRSxrR0FBa0c7Z0JBQ2xHLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO2dCQUNyRCxNQUFNLGlCQUFpQixHQUFlLFlBQWEsQ0FBQyxNQUFNO3FCQUN2RCxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztxQkFDdEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFFekMsa0ZBQWtGO2dCQUNsRixpRkFBaUY7Z0JBQ2pGLE1BQU0sTUFBTSxHQUFHLE1BQU0sd0JBQXdCLENBQzNDLElBQUksRUFDSixZQUFZLENBQUMsZUFBZSxFQUM1QixZQUFZLENBQUMsaUJBQWlCLEVBQzlCLElBQUksQ0FBQyxFQUFFLENBQ1IsQ0FBQztnQkFFRixJQUFJLGNBQWMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDckQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsTUFBTSxtQkFBbUIsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDekYsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsb0NBQW9DLFlBQVksQ0FBQyxXQUFXLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEgsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFcEMsd0JBQXdCO2dCQUN4QixNQUFNLFVBQVUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7b0JBQ3RGLE1BQU0sSUFBSSxLQUFLLENBQ2IsOEJBQThCLE9BQU8sQ0FBQyxJQUFJO3lCQUN2QyxpQkFBaUIsRUFBRTt5QkFDbkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3BGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDakUsWUFBWSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDL0IsQ0FBQztZQUVELDREQUE0RDtZQUM1RCxzRkFBc0Y7WUFDOUUsaUJBQWlCLENBQ3ZCLFlBQStCLEVBQy9CLFFBQXNFLEVBQ3RFLGlCQUE4QjtnQkFFOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ25CLDBDQUEwQztvQkFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLFFBQVEsQ0FBQyxNQUFNLGlEQUFpRCxDQUFDLENBQUM7b0JBQzVGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDdEUsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMseURBQXlELFFBQVEsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxDQUFDO2dCQUNsRyxJQUFJLENBQUMsZUFBZSxDQUNsQixZQUFZLEVBQ1osa0JBQWtCLENBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsdURBQXVELEVBQ3ZEO29CQUNFLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsUUFBUTtvQkFDNUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxzQkFBNEM7aUJBQ2pGLEVBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FDUCxJQUFJLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUNwQyxJQUFJLDJCQUEyQixDQUM3QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtnQkFDakQscUhBQXFIO2dCQUNySCxvSEFBb0g7Z0JBQ3BILDRFQUE0RTtnQkFDNUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUNsRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQ2xELGFBQWEsRUFBRSxFQUNmLHdCQUF3QixDQUN6QixFQUNELE1BQU0sRUFDTixZQUFZLENBQUMsV0FBVyxDQUN6QixDQUNKLEVBQ0QsTUFBTSxDQUFDLEVBQUU7b0JBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsUUFBUSxDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7b0JBQzdGLElBQUksQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDeEUsQ0FBQyxDQUNGLENBQUM7WUFDSixDQUFDO1lBRUQ7Ozs7O2VBS0c7WUFDSyx3QkFBd0IsQ0FDOUIsUUFBc0UsRUFDdEUsU0FBNkIsRUFDN0IsWUFBK0I7Z0JBRS9CLHNGQUFzRjtnQkFDdEYsMkVBQTJFO2dCQUMzRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUN6QyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQztvQkFDN0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7b0JBRS9ELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM5RSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQy9GLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0YsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7WUFDSCxDQUFDO1lBRUQ7O2VBRUc7WUFDSSxNQUFNO2dCQUNYLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ2pELFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztnQkFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFFRDs7O2VBR0c7WUFDSyxrQ0FBa0MsQ0FDeEMsWUFBK0IsRUFDL0IsaUJBQW9EO2dCQUVwRCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUVoRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLDhFQUE4RSxDQUFDLENBQUM7Z0JBQ2xHLENBQUM7Z0JBRUQsT0FBTyw2QkFBNkIsQ0FDbEMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1QyxZQUFZLENBQUMsb0JBQXFCLENBQUMsWUFBWSxFQUMvQyxpQkFBaUIsRUFDakIsWUFBWSxDQUFDLGlDQUFpQyxFQUM5QyxNQUFNLENBQ1AsQ0FBQztZQUNKLENBQUM7WUFFRDs7ZUFFRztZQUNJLEtBQUssQ0FBQyxhQUFhO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO2dCQUMvRixDQUFDO2dCQUVELE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUV0QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFlLENBQUM7Z0JBQzFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzVELENBQUM7Z0JBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUMvRSxNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7Z0JBQzdGLENBQUM7Z0JBRUQsWUFBWSxDQUFDLGtCQUFrQixFQUFFO29CQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO29CQUM5QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUU7aUJBQ2xFLENBQUMsQ0FBQztnQkFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDekcsQ0FBQztZQUVEOzs7O2VBSUc7WUFDSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBZSxFQUFFLFlBQStCO2dCQUMvRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDZCw4QkFBOEI7b0JBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDN0UsQ0FBQztnQkFDRCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDO1lBRU8sa0JBQWtCLENBQ3hCLE1BQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLEVBQWUsRUFDZixZQUErQjtnQkFFL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFDckUsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzlELHlDQUF5QztnQkFDekMscUdBQXFHO2dCQUNyRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUM7WUFFRDs7Ozs7ZUFLRztZQUNLLGVBQWUsQ0FDckIsWUFBK0QsRUFDL0QsT0FBNEMsRUFDNUMsUUFBNkM7Z0JBRTdDLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO29CQUN6RCxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFekMsOEdBQThHO2dCQUM5Ryw4RUFBOEU7Z0JBQzlFLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO29CQUN6QixJQUFJLENBQUM7d0JBQ0gsc0VBQXNFO3dCQUN0RSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQzlCLE9BQU87d0JBQ1QsQ0FBQzt3QkFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2hELElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQzs0QkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDOzRCQUN6RCxPQUFPO3dCQUNULENBQUM7d0JBRUQsNkRBQTZEO3dCQUM3RCxrRUFBa0U7d0JBQ2xFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDOUIsT0FBTzt3QkFDVCxDQUFDO3dCQUVELE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QixDQUFDO29CQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7d0JBQ2IsSUFBSSxHQUFHLFlBQVksVUFBVSxFQUFFLENBQUM7NEJBQzlCLG9FQUFvRTs0QkFDcEUsbUJBQW1COzRCQUNuQixPQUFPO3dCQUNULENBQUM7d0JBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbkQsWUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ2pDLENBQUM7NEJBQVMsQ0FBQzt3QkFDVCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMxRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDOzRCQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUMzQyxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDO2dCQUVGLDhEQUE4RDtnQkFDOUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLENBQUM7WUFFRCx1RkFBdUY7WUFJL0UsS0FBSyxDQUFDLHVCQUF1QixDQUNuQyxZQUEyQyxFQUMzQyxFQUFlO2dCQUVmLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO29CQUNoRSxPQUFPO2dCQUNULENBQUM7Z0JBRUQsMkVBQTJFO2dCQUMzRSw4RkFBOEY7Z0JBQzlGLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQ2hDLG9CQUFvQixDQUNsQixFQUFFLEVBQ0YsdUJBQXVCLENBQUMsNkJBQTZCLENBQUMsRUFDdEQsWUFBWSxDQUFDLGVBQWUsRUFDNUIsSUFBSSxDQUFDLEVBQUUsRUFDUCxNQUFNLENBQ1AsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUM1RyxLQUFLLEVBQUUsRUFBZ0IsRUFBRSxFQUFFO29CQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxDQUFDLENBQ0YsQ0FBQztnQkFDRixNQUFNLGFBQWEsR0FBa0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFN0csSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7b0JBQzlELE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxPQUFPLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxpSEFBaUg7WUFDakgsK0RBQStEO1lBQ3ZELGlCQUFpQixDQUFDLFlBQTJDLEVBQUUsS0FBYSxFQUFFLEVBQWtCO2dCQUN0RyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUM7b0JBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztvQkFDdkQsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUM1RCxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsdUJBQXVCO3FCQUNwRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUNwQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3pFLFlBQVksQ0FBQyxNQUFNLENBQ2pCLHNDQUFzQyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FDM0YsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FDeEMsRUFBRSxDQUNKLENBQUM7b0JBQ0YsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLGNBQWMsQ0FDdEQsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtxQkFDaEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQzdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUNuQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDakUsK0VBQStFO29CQUMvRSxZQUFZLENBQUMsTUFBTSxDQUNqQixpQ0FBaUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUNsRixFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FDcEMsRUFBRSxDQUNKLENBQUM7b0JBQ0YsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUMsY0FBYyxDQUMxRCxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMscUJBQXFCO3FCQUNsRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQ25DLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3JFLFlBQVksQ0FBQyxNQUFNLENBQ2pCLG1DQUFtQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FDdEYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQ3RDLEVBQUUsQ0FDSixDQUFDO29CQUNGLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLENBQUMsS0FBSyxDQUNWLHlDQUNFLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFDaEQsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUN6QyxDQUFDO2dCQUVGLElBQUksQ0FBQyxlQUFlLENBQ2xCLFlBQVksRUFDWixrQkFBa0IsQ0FDaEIsSUFBSSxDQUFDLE1BQU0sRUFDWCwrQ0FBK0MsRUFDL0M7b0JBQ0UsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNwRCxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFFBQVE7b0JBQzVDLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsYUFBbUM7aUJBQ3hFLEVBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUNoRyxFQUNELE1BQU0sQ0FBQyxFQUFFO29CQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekYsb0JBQW9CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMxRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFO3dCQUNwRSxNQUFNLENBQUMsTUFBTTt3QkFDYixNQUFNLENBQUMsS0FBSzt3QkFDWixNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVc7cUJBQ25DLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCx5REFBeUQ7WUFDekQsMkZBQTJGO1lBQ25GLFdBQVcsQ0FBQyxZQUErQixFQUFFLE9BQWU7Z0JBQ2xFLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO29CQUN4RCxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUVoRSxJQUFJLENBQUMsZUFBZSxDQUNsQixZQUFZLEVBQ1osa0JBQWtCLENBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gseUNBQXlDLEVBQ3pDO29CQUNFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDaEUsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRO29CQUM1QyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGNBQW9DO2lCQUN6RSxFQUNELE1BQU0sQ0FBQyxFQUFFLENBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQ3RCLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQ3pELE1BQU0sRUFDTixZQUFZLENBQUMsV0FBVyxDQUN6QixDQUNKLEVBQ0QsTUFBTSxDQUFDLEVBQUU7b0JBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDOUQsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ2hILElBQUksQ0FBQyw0QkFBNEIsQ0FDL0IsWUFBWSxFQUNaLE9BQU8sRUFDUCxNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLGlCQUFpQixDQUNsQixDQUFDO2dCQUNKLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELHdIQUF3SDtZQUN4SCwrREFBK0Q7WUFDdkQsa0JBQWtCLENBQ3hCLFlBQStCLEVBQy9CLEtBQWEsRUFDYixLQUFhLEVBQ2IsY0FBb0M7Z0JBRXBDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUNwQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLENBQUMsRUFDM0YsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBRSxDQUFDLENBQzVGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsWUFBWSxFQUNaLGtCQUFrQixDQUNoQixJQUFJLENBQUMsTUFBTSxFQUNYLGdEQUFnRCxFQUNoRDtvQkFDRSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFFBQVE7b0JBQzVDLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsY0FBb0M7aUJBQ3pFLEVBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUNwRixFQUNELE1BQU0sQ0FBQyxFQUFFO29CQUNQLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTt3QkFDN0QsTUFBTSxDQUFDLE1BQU07d0JBQ2IsTUFBTSxDQUFDLEtBQUs7d0JBQ1osTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXO3FCQUNuQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUNGLENBQUM7WUFDSixDQUFDO1lBRUQseUNBQXlDO1lBQ2pDLHNCQUFzQixDQUFDLFlBQStCO2dCQUM1RCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7Z0JBQ3RGLENBQUM7Z0JBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7b0JBQ3JFLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxZQUFZLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUMzQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsb0JBQXFCLENBQUM7Z0JBRTNELE1BQU0sQ0FBQyxLQUFLLENBQ1YseUNBQXlDLFlBQVksQ0FBQyxXQUFXLFNBQVMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sZ0JBQWdCLENBQ2hJLENBQUM7Z0JBRUYsTUFBTSxrQkFBa0IsR0FBZ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUN2RixxQ0FBcUMsQ0FDbkMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsRUFDekIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsRUFDekIsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBRSxDQUNwQyxDQUNGLENBQUM7Z0JBRUYsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDO29CQUN4QyxrQkFBa0I7b0JBQ2xCLFdBQVcsRUFBRSxlQUFlO29CQUM1QixpQkFBaUIsRUFBRSxZQUFZLENBQUMsaUJBQWlCO29CQUNqRCxtQ0FBbUMsRUFBRSxZQUFZLENBQUMsMEJBQTBCO29CQUM1RSw4QkFBOEIsRUFBRSxZQUFZLENBQUMsbUJBQW1CO29CQUNoRSxvQkFBb0IsRUFBRSxZQUFZLENBQUMsbUJBQW1CO29CQUN0RCxxQkFBcUIsRUFBRSxZQUFZLENBQUMsMEJBQTBCO29CQUM5RCxpQkFBaUIsRUFBRSxZQUFZLENBQUMsaUJBQWlCO29CQUNqRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7aUJBQ3hCLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsZUFBZSxDQUNsQixZQUFZLEVBQ1osa0JBQWtCLENBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsb0RBQW9ELEVBQ3BEO29CQUNFLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsUUFBUTtvQkFDNUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxtQkFBeUM7aUJBQzlFLEVBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUN4RixFQUNELE1BQU0sQ0FBQyxFQUFFO29CQUNQLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBQzdELE1BQU0sQ0FBQyxLQUFLLENBQ1Ysa0NBQWtDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNyRyxDQUFDO3dCQUNGLFlBQVksQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztvQkFFRCxZQUFZLENBQUMsMkJBQTJCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDekQsWUFBWSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztvQkFFbkQsTUFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUN4RixtRkFBbUY7b0JBRW5GLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFhLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxZQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3BHLE1BQU0sQ0FBQyxNQUFNO3dCQUNiLE1BQU0sQ0FBQyxLQUFLO3dCQUNaLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVztxQkFDbkMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELGlHQUFpRztZQUNqRywrREFBK0Q7WUFDdkQsd0JBQXdCLENBQUMsWUFBK0IsRUFBRSxNQUF3QixFQUFFLEtBQWE7Z0JBQ3ZHLElBQUksQ0FBQyxlQUFlLENBQ2xCLFlBQVksRUFDWixrQkFBa0IsQ0FDaEIsSUFBSSxDQUFDLE1BQU0sRUFDWCwrQ0FBK0MsRUFDL0M7b0JBQ0UsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRO29CQUM1QyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGFBQW1DO2lCQUN4RSxFQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FDbkYsRUFDRCxTQUFTLENBQUMsRUFBRTtvQkFDVixZQUFZLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNuRCxJQUFJLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7d0JBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDM0MsWUFBWSxDQUFDLGVBR1osQ0FDRixDQUFDO3dCQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztvQkFDaEUsQ0FBQztnQkFDSCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxzREFBc0Q7WUFDdEQsNkRBQTZEO1lBQ3JELHdCQUF3QixDQUFDLFlBQStCLEVBQUUsTUFBd0I7Z0JBQ3hGLElBQUksQ0FBQyxlQUFlLENBQ2xCLFlBQVksRUFDWixrQkFBa0IsQ0FDaEIsSUFBSSxDQUFDLE1BQU0sRUFDWCwrQ0FBK0MsRUFDL0M7b0JBQ0UsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRO29CQUM1QyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGFBQW1DO2lCQUN4RSxFQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FDbkYsRUFDRCxTQUFTLENBQUMsRUFBRTtvQkFDVixZQUFhLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO29CQUMvQyxJQUFJLENBQUMsOEJBQThCLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELDhIQUE4SDtZQUM5SCwrREFBK0Q7WUFDdkQsdUJBQXVCLENBQzdCLFlBQStCLEVBQy9CLEtBQWEsRUFDYixLQUFhLEVBQ2IsY0FBeUM7Z0JBRXpDLE1BQU0sTUFBTSxHQUFHLDRCQUE0QixDQUN6QyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLENBQUMsRUFDM0YsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBRSxDQUFDLENBQzVGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsWUFBWSxFQUNaLGtCQUFrQixDQUNoQixJQUFJLENBQUMsTUFBTSxFQUNYLHFEQUFxRCxFQUNyRDtvQkFDRSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFFBQVE7b0JBQzVDLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsb0JBQTBDO2lCQUMvRSxFQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FDekYsRUFDRCxNQUFNLENBQUMsRUFBRTtvQkFDUCxJQUFJLENBQUMsa0NBQWtDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7d0JBQ2xFLE1BQU0sQ0FBQyxNQUFNO3dCQUNiLE1BQU0sQ0FBQyxLQUFLO3dCQUNaLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVztxQkFDbkMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELG1DQUFtQztZQUMzQixpQkFBaUIsQ0FBQyxZQUEyQztnQkFDbkUsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7b0JBQy9ELE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXRELE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUMvQixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxFQUN6QixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxFQUN6QixjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLEVBQ25DLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQ3pCLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQ3pCLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUUsRUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO2dCQUVGLElBQUksQ0FBQyxlQUFlLENBQ2xCLFlBQVksRUFDWixrQkFBa0IsQ0FDaEIsSUFBSSxDQUFDLE1BQU0sRUFDWCwrQ0FBK0MsRUFDL0M7b0JBQ0UsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRO29CQUM1QyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGFBQW1DO2lCQUN4RSxFQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FDbkYsRUFDRCxNQUFNLENBQUMsRUFBRTtvQkFDUCxNQUFNLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDM0YsWUFBWSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQ3BELFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7b0JBQ25ELFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxDQUNGLENBQUM7WUFDSixDQUFDO1lBRU8sOEJBQThCLENBQUMsWUFBK0I7Z0JBQ3BFLElBQUksQ0FBQyxZQUFZLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxDQUFDO29CQUMvQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7b0JBQzFDLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxJQUFJLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7b0JBQ2xELE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUVPLHlCQUF5QixDQUFDLFlBQTJDO2dCQUMzRSxJQUFJLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztvQkFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO29CQUMxQyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRDs7Ozs7O2VBTUc7WUFDSyw2QkFBNkIsQ0FDbkMsWUFBK0IsRUFDL0IsWUFBb0IsRUFDcEIsWUFBb0IsRUFDcEIsY0FJQztnQkFFRCxNQUFNLENBQUMsVUFBVSxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FDdkYsWUFBWSxFQUNaLFlBQVksQ0FDYixDQUFDO2dCQUNGLE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxHQUFHLHFCQUFxQixDQUFDO2dCQUNqRSxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUMxRyxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBRTNFLDRDQUE0QztnQkFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sNEJBQTRCO29CQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMvRixDQUFDO1lBQ0gsQ0FBQztZQUVEOzs7Ozs7ZUFNRztZQUNLLGtDQUFrQyxDQUN4QyxZQUErQixFQUMvQixZQUFvQixFQUNwQixZQUFvQixFQUNwQixjQUlDO2dCQUVELE1BQU0sQ0FBQyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUN2RixZQUFZLEVBQ1osWUFBWSxDQUNiLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsWUFBWSxJQUFJLFlBQVksT0FBTyxVQUFVLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RyxJQUFJLFVBQVUsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztnQkFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLElBQUksVUFBVSxHQUFHLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztnQkFDakUsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDMUcsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUUzRSw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDWCxNQUFNLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxVQUFVLFVBQVUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO29CQUM3RyxPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLDRCQUE0QjtvQkFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDcEcsQ0FBQztZQUNILENBQUM7WUFFRDs7Ozs7O2VBTUc7WUFDSyxTQUFTLENBQUMsWUFBMkMsRUFBRSxPQUFlLEVBQUUsYUFBcUI7Z0JBQ25HLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO29CQUNuRSxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRTVFLHNGQUFzRjtnQkFDdEYsSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzdCLHlIQUF5SDtvQkFDekgsb0hBQW9IO29CQUNwSCxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FDckMsSUFBSSxDQUFDLE1BQU0sRUFDWCx3Q0FBd0MsRUFDeEM7d0JBQ0UsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNoRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxTQUFVLENBQUMsWUFBWTtxQkFDdEUsRUFDRCxLQUFLLEVBQUUsTUFBbUIsRUFBRSxFQUFFO3dCQUM1QixNQUFNLE1BQU0sR0FBcUIsSUFBSSxnQkFBZ0IsQ0FDbkQsY0FBYyxDQUFDLFNBQVUsQ0FBQyxZQUFZLEVBQ3RDLGNBQWMsQ0FBQyxTQUFVLENBQUMsUUFBUSxFQUNsQyxjQUFjLENBQUMsU0FBVSxDQUFDLFFBQVEsRUFDbEMsY0FBYyxDQUFDLFNBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQ3RFLGNBQWMsQ0FBQyxTQUFVLENBQUMsUUFBUSxDQUNuQyxDQUFDO3dCQUNGLElBQUksQ0FBQzs0QkFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ2pGLENBQUM7d0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzs0QkFDYixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDbkMsTUFBTSxHQUFHLENBQUM7NEJBQ1osQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLE1BQU0sQ0FBQyxJQUFJLENBQ1QscUhBQXFILEdBQUcsR0FBRyxDQUM1SCxDQUFDO2dDQUNGLE9BQU87b0NBQ0wsS0FBSyxFQUFFLGNBQWMsRUFBRTtvQ0FDdkIsZUFBZSxFQUFFLG1CQUFtQixDQUFDLFlBQVksRUFBRTtpQ0FDcEQsQ0FBQzs0QkFDSixDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQyxDQUNGLENBQUM7b0JBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFO3dCQUM1RCxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxhQUFhLGdCQUFnQixPQUFPLEVBQUUsQ0FBQyxDQUFDO3dCQUNyRixJQUFJLENBQUMsc0NBQXNDLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN0RyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUVPLHNDQUFzQyxDQUM1QyxZQUErQixFQUMvQixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsT0FBYztnQkFFZCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzVGLElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2pELElBQUksYUFBYSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDekMseUJBQXlCO3dCQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7b0JBQ2hHLENBQUM7b0JBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsT0FBTyxjQUFjLGFBQWEsRUFBRSxDQUFDLENBQUM7b0JBQ3RGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO1lBQ0gsQ0FBQztZQUVELHNHQUFzRztZQUN0RywwREFBMEQ7WUFDMUQsMkZBQTJGO1lBQ25GLDRCQUE0QixDQUNsQyxZQUErQixFQUMvQixPQUFlLEVBQ2YsS0FBc0csRUFDdEcsZUFBb0MsRUFDcEMsaUJBQXVDO2dCQUV2QyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9ELHdDQUF3QztnQkFDeEMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN6RCxnQ0FBZ0M7b0JBQ2hDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLGlCQUFpQixDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3pELHFGQUFxRjtvQkFDckYsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsT0FBTyx5QkFBeUIsQ0FBQyxDQUFDO29CQUNwRiwrREFBK0Q7b0JBQy9ELGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDekQsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsZUFBZSxDQUFDO29CQUNoRSxJQUFJLENBQUM7d0JBQ0gsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUNuRixDQUFDO29CQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7d0JBQ2xCLDJHQUEyRzt3QkFDM0csY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO29CQUNsRSxDQUFDO29CQUNELGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUNsRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FDbkQsQ0FBQztvQkFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdEUsT0FBTztnQkFDVCxDQUFDO2dCQUNELGtEQUFrRDtnQkFDbEQsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzdDLHlCQUF5QjtvQkFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO2dCQUNwRyxDQUFDO2dCQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixDQUFDLGFBQWMsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7WUFFRDs7Ozs7O2VBTUc7WUFDSyxtQkFBbUIsQ0FBQyxZQUEyQyxFQUFFLE9BQWUsRUFBRSxhQUFxQjtnQkFDN0csSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7b0JBQzlFLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztnQkFFekYsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsWUFBWSxFQUNaLGtCQUFrQixDQUNoQixJQUFJLENBQUMsTUFBTSxFQUNYLE9BQU8sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsa0JBQWtCO29CQUNwRCxDQUFDLENBQUMsK0NBQStDO29CQUNqRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxtQkFBbUI7d0JBQ3pELENBQUMsQ0FBQyxzREFBc0Q7d0JBQ3hELENBQUMsQ0FBQyxzREFBc0QsRUFDMUQ7b0JBQ0UsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRO29CQUM1QyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7aUJBQ3JGLEVBQ0QsQ0FDRSxNQUFNLEVBS04sRUFBRTtvQkFDRixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDM0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUYsQ0FBQzt5QkFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt3QkFDbkUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDakcsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ2pHLENBQUM7Z0JBQ0gsQ0FBQyxDQUNGLEVBQ0QsTUFBTSxDQUFDLEVBQUU7b0JBQ1AsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsa0NBQWtDLENBQ3pFLGFBQWEsRUFDYixNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxlQUFlLENBQ3ZCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLDRCQUE0QixDQUMvQixZQUFZLEVBQ1osT0FBTyxFQUNQLE1BQU0sQ0FBQyxLQUFLLEVBQ1osTUFBTSxDQUFDLGVBQWUsRUFDdEIsaUJBQWlCLENBQ2xCLENBQUM7Z0JBQ0osQ0FBQyxDQUNGLENBQUM7WUFDSixDQUFDOzs7O3lDQXBzQ0EsU0FBUyxDQUFDLG1DQUFtQyxFQUFFLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDNUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTTtvQkFDL0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7aUJBQ2xFLENBQUMsQ0FBQztvQ0E2RkYsU0FBUyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDaEQsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7aUJBQ3pDLENBQUMsQ0FBQzs2Q0FvQ0YsU0FBUyxDQUFDLHVDQUF1QyxFQUFFO29CQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNYLE9BQU8sRUFBRSxDQUFDO29CQUNaLENBQUM7b0JBQ0QsT0FBTzt3QkFDTCxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7d0JBQ3ZFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXO3dCQUMxQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUMsb0JBQW9CO3FCQUN6RCxDQUFDO2dCQUNKLENBQUMsQ0FBQztvQ0FpRUQsU0FBUyxDQUFDLDhCQUE4QixFQUFFO29CQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUN2QixPQUFPLEVBQUUsQ0FBQztvQkFDWixDQUFDO29CQUNELE9BQU87d0JBQ0wsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXO3dCQUN4RCxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7cUJBQzFELENBQUM7Z0JBQ0osQ0FBQyxDQUFDO21EQWtVRCxTQUFTLENBQUMsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNwRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtpQkFDekMsQ0FBQyxDQUFDO1lBemhCSCx3TEFBYSxhQUFhLDZEQXNGekI7WUFTRCx5S0FBYSxRQUFRLDZEQTZCcEI7WUFpQkQsb01BQWEsaUJBQWlCLDZEQXFEN0I7WUFvQkQseUtBQVEsUUFBUSw2REFrRGY7WUFrUkQsc05BQWMsdUJBQXVCLDZEQXFDcEM7Ozs7O1NBdG5CVSxtQkFBbUIifQ==
|
|
797
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9vcmNoZXN0cmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLFlBQVksRUFLWixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIscUNBQXFDLEVBRXJDLGdCQUFnQixFQUdoQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLEVBQUUsRUFHRiwyQkFBMkIsRUFDM0Isd0NBQXdDLEVBRXhDLG1DQUFtQyxFQUNuQywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBSTNCLGdCQUFnQixFQUVoQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBcUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7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
|
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
export declare enum TX_PROVING_CODE {
|
|
4
|
-
NOT_READY = 0,
|
|
5
|
-
READY = 1,
|
|
6
|
-
COMPLETED = 2
|
|
7
|
-
}
|
|
8
|
-
export type PublicFunction = {
|
|
9
|
-
vmRequest: AvmProvingRequest | undefined;
|
|
10
|
-
vmProof: Proof | undefined;
|
|
11
|
-
previousProofType: ProvingRequestType;
|
|
12
|
-
previousKernelProven: boolean;
|
|
13
|
-
publicKernelRequest: PublicKernelRequest;
|
|
14
|
-
};
|
|
15
|
-
export type TxProvingInstruction = {
|
|
16
|
-
code: TX_PROVING_CODE;
|
|
17
|
-
function: PublicFunction | undefined;
|
|
18
|
-
functionIndex?: number;
|
|
19
|
-
};
|
|
1
|
+
import { type MerkleTreeId, type ProcessedTx, type ProofAndVerificationKey } from '@aztec/circuit-types';
|
|
2
|
+
import { type AVM_PROOF_LENGTH_IN_FIELDS, type AppendOnlyTreeSnapshot, type BaseRollupHints, PrivateBaseRollupInputs, PublicBaseRollupInputs, type RecursiveProof, type TUBE_PROOF_LENGTH, TubeInputs } from '@aztec/circuits.js';
|
|
20
3
|
/**
|
|
21
4
|
* Helper class to manage the proving cycle of a transaction
|
|
22
5
|
* This includes the public VMs and the public kernels
|
|
@@ -24,14 +7,21 @@ export type TxProvingInstruction = {
|
|
|
24
7
|
*/
|
|
25
8
|
export declare class TxProvingState {
|
|
26
9
|
readonly processedTx: ProcessedTx;
|
|
27
|
-
readonly
|
|
10
|
+
private readonly baseRollupHints;
|
|
28
11
|
readonly treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
12
|
+
private tube?;
|
|
13
|
+
private avm?;
|
|
14
|
+
constructor(processedTx: ProcessedTx, baseRollupHints: BaseRollupHints, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>);
|
|
15
|
+
get requireAvmProof(): boolean;
|
|
16
|
+
ready(): boolean;
|
|
17
|
+
getTubeInputs(): TubeInputs;
|
|
18
|
+
getAvmInputs(): import("@aztec/circuits.js").AvmCircuitInputs;
|
|
19
|
+
getPrivateBaseInputs(): PrivateBaseRollupInputs;
|
|
20
|
+
getPublicBaseInputs(): PublicBaseRollupInputs;
|
|
21
|
+
assignTubeProof(tubeProofAndVk: ProofAndVerificationKey<RecursiveProof<typeof TUBE_PROOF_LENGTH>>): void;
|
|
22
|
+
assignAvmProof(avmProofAndVk: ProofAndVerificationKey<RecursiveProof<typeof AVM_PROOF_LENGTH_IN_FIELDS>>): void;
|
|
23
|
+
verifyStateOrReject(): string | undefined;
|
|
24
|
+
private getTubeVkData;
|
|
25
|
+
private getAvmVkData;
|
|
36
26
|
}
|
|
37
27
|
//# sourceMappingURL=tx-proving-state.d.ts.map
|