@1upmonster/duel 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -59
- package/dist/admin.d.ts +8 -1
- package/dist/admin.js +52 -9
- package/dist/generated/duel/errors/duel.d.ts +1 -3
- package/dist/generated/duel/errors/duel.js +2 -4
- package/dist/generated/duel/instructions/index.d.ts +2 -0
- package/dist/generated/duel/instructions/index.js +3 -1
- package/dist/generated/duel/instructions/joinQueue.d.ts +1 -1
- package/dist/generated/duel/instructions/joinQueue.js +3 -3
- package/dist/generated/duel/instructions/setupQueuePermission.d.ts +51 -0
- package/dist/generated/duel/instructions/setupQueuePermission.js +63 -0
- package/dist/generated/duel/instructions/setupTicketPermission.d.ts +54 -0
- package/dist/generated/duel/instructions/setupTicketPermission.js +63 -0
- package/dist/generated/duel/programs/duel.d.ts +11 -3
- package/dist/generated/duel/programs/duel.js +19 -3
- package/dist/player.d.ts +8 -1
- package/dist/player.js +56 -5
- package/dist/tee.d.ts +4 -3
- package/dist/tee.js +17 -23
- package/dist/transaction.d.ts +2 -0
- package/dist/transaction.js +30 -19
- package/dist/utils.d.ts +10 -0
- package/dist/utils.js +28 -1
- package/package.json +1 -1
- package/src/admin.ts +67 -7
- package/src/duel.json +57 -5
- package/src/generated/duel/errors/duel.ts +2 -4
- package/src/generated/duel/instructions/index.ts +3 -1
- package/src/generated/duel/instructions/joinQueue.ts +3 -3
- package/src/generated/duel/instructions/setupQueuePermission.ts +112 -0
- package/src/generated/duel/instructions/setupTicketPermission.ts +115 -0
- package/src/generated/duel/programs/duel.ts +12 -4
- package/src/player.ts +72 -1
- package/src/tee.ts +18 -22
- package/src/transaction.ts +33 -18
- package/src/utils.ts +34 -0
- package/src/encryption.ts +0 -154
- package/src/idl/private_matchmaking.json +0 -1027
- package/src/idl/private_matchmaking.ts +0 -1033
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
|
|
9
|
+
import { DUEL_PROGRAM_ADDRESS } from '../programs';
|
|
10
|
+
export declare const SETUP_QUEUE_PERMISSION_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
11
|
+
export declare function getSetupQueuePermissionDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
|
|
12
|
+
export type SetupQueuePermissionInstruction<TProgram extends string = typeof DUEL_PROGRAM_ADDRESS, TAccountQueue extends string | AccountMeta<string> = string, TAccountAuthority extends string | AccountMeta<string> = string, TAccountPermission extends string | AccountMeta<string> = string, TAccountPermissionProgram extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountQueue extends string ? ReadonlyAccount<TAccountQueue> : TAccountQueue, TAccountAuthority extends string ? WritableSignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority> : TAccountAuthority, TAccountPermission extends string ? WritableAccount<TAccountPermission> : TAccountPermission, TAccountPermissionProgram extends string ? ReadonlyAccount<TAccountPermissionProgram> : TAccountPermissionProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
|
|
13
|
+
export type SetupQueuePermissionInstructionData = {
|
|
14
|
+
discriminator: ReadonlyUint8Array;
|
|
15
|
+
};
|
|
16
|
+
export type SetupQueuePermissionInstructionDataArgs = {};
|
|
17
|
+
export declare function getSetupQueuePermissionInstructionDataEncoder(): FixedSizeEncoder<SetupQueuePermissionInstructionDataArgs>;
|
|
18
|
+
export declare function getSetupQueuePermissionInstructionDataDecoder(): FixedSizeDecoder<SetupQueuePermissionInstructionData>;
|
|
19
|
+
export declare function getSetupQueuePermissionInstructionDataCodec(): FixedSizeCodec<SetupQueuePermissionInstructionDataArgs, SetupQueuePermissionInstructionData>;
|
|
20
|
+
export type SetupQueuePermissionAsyncInput<TAccountQueue extends string = string, TAccountAuthority extends string = string, TAccountPermission extends string = string, TAccountPermissionProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
21
|
+
queue?: Address<TAccountQueue>;
|
|
22
|
+
authority: TransactionSigner<TAccountAuthority>;
|
|
23
|
+
permission: Address<TAccountPermission>;
|
|
24
|
+
permissionProgram: Address<TAccountPermissionProgram>;
|
|
25
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
26
|
+
};
|
|
27
|
+
export declare function getSetupQueuePermissionInstructionAsync<TAccountQueue extends string, TAccountAuthority extends string, TAccountPermission extends string, TAccountPermissionProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof DUEL_PROGRAM_ADDRESS>(input: SetupQueuePermissionAsyncInput<TAccountQueue, TAccountAuthority, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>, config?: {
|
|
28
|
+
programAddress?: TProgramAddress;
|
|
29
|
+
}): Promise<SetupQueuePermissionInstruction<TProgramAddress, TAccountQueue, TAccountAuthority, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>>;
|
|
30
|
+
export type SetupQueuePermissionInput<TAccountQueue extends string = string, TAccountAuthority extends string = string, TAccountPermission extends string = string, TAccountPermissionProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
31
|
+
queue: Address<TAccountQueue>;
|
|
32
|
+
authority: TransactionSigner<TAccountAuthority>;
|
|
33
|
+
permission: Address<TAccountPermission>;
|
|
34
|
+
permissionProgram: Address<TAccountPermissionProgram>;
|
|
35
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
36
|
+
};
|
|
37
|
+
export declare function getSetupQueuePermissionInstruction<TAccountQueue extends string, TAccountAuthority extends string, TAccountPermission extends string, TAccountPermissionProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof DUEL_PROGRAM_ADDRESS>(input: SetupQueuePermissionInput<TAccountQueue, TAccountAuthority, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>, config?: {
|
|
38
|
+
programAddress?: TProgramAddress;
|
|
39
|
+
}): SetupQueuePermissionInstruction<TProgramAddress, TAccountQueue, TAccountAuthority, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>;
|
|
40
|
+
export type ParsedSetupQueuePermissionInstruction<TProgram extends string = typeof DUEL_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
41
|
+
programAddress: Address<TProgram>;
|
|
42
|
+
accounts: {
|
|
43
|
+
queue: TAccountMetas[0];
|
|
44
|
+
authority: TAccountMetas[1];
|
|
45
|
+
permission: TAccountMetas[2];
|
|
46
|
+
permissionProgram: TAccountMetas[3];
|
|
47
|
+
systemProgram: TAccountMetas[4];
|
|
48
|
+
};
|
|
49
|
+
data: SetupQueuePermissionInstructionData;
|
|
50
|
+
};
|
|
51
|
+
export declare function parseSetupQueuePermissionInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedSetupQueuePermissionInstruction<TProgram, TAccountMetas>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
|
|
9
|
+
import { getAccountMetaFactory, getAddressFromResolvedInstructionAccount } from '@solana/program-client-core';
|
|
10
|
+
import { DUEL_PROGRAM_ADDRESS } from '../programs';
|
|
11
|
+
export const SETUP_QUEUE_PERMISSION_DISCRIMINATOR = new Uint8Array([223, 132, 77, 15, 224, 155, 125, 224]);
|
|
12
|
+
export function getSetupQueuePermissionDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(SETUP_QUEUE_PERMISSION_DISCRIMINATOR); }
|
|
13
|
+
export function getSetupQueuePermissionInstructionDataEncoder() {
|
|
14
|
+
return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: SETUP_QUEUE_PERMISSION_DISCRIMINATOR }));
|
|
15
|
+
}
|
|
16
|
+
export function getSetupQueuePermissionInstructionDataDecoder() {
|
|
17
|
+
return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
|
|
18
|
+
}
|
|
19
|
+
export function getSetupQueuePermissionInstructionDataCodec() {
|
|
20
|
+
return combineCodec(getSetupQueuePermissionInstructionDataEncoder(), getSetupQueuePermissionInstructionDataDecoder());
|
|
21
|
+
}
|
|
22
|
+
export async function getSetupQueuePermissionInstructionAsync(input, config) {
|
|
23
|
+
// Program address.
|
|
24
|
+
const programAddress = config?.programAddress ?? DUEL_PROGRAM_ADDRESS;
|
|
25
|
+
// Original accounts.
|
|
26
|
+
const originalAccounts = { queue: { value: input.queue ?? null, isWritable: false }, authority: { value: input.authority ?? null, isWritable: true }, permission: { value: input.permission ?? null, isWritable: true }, permissionProgram: { value: input.permissionProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
|
|
27
|
+
const accounts = originalAccounts;
|
|
28
|
+
// Resolve default values.
|
|
29
|
+
if (!accounts.queue.value) {
|
|
30
|
+
accounts.queue.value = await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([113, 117, 101, 117, 101])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("authority", accounts.authority.value))] });
|
|
31
|
+
}
|
|
32
|
+
if (!accounts.systemProgram.value) {
|
|
33
|
+
accounts.systemProgram.value = '11111111111111111111111111111111';
|
|
34
|
+
}
|
|
35
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
36
|
+
return Object.freeze({ accounts: [getAccountMeta("queue", accounts.queue), getAccountMeta("authority", accounts.authority), getAccountMeta("permission", accounts.permission), getAccountMeta("permissionProgram", accounts.permissionProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getSetupQueuePermissionInstructionDataEncoder().encode({}), programAddress });
|
|
37
|
+
}
|
|
38
|
+
export function getSetupQueuePermissionInstruction(input, config) {
|
|
39
|
+
// Program address.
|
|
40
|
+
const programAddress = config?.programAddress ?? DUEL_PROGRAM_ADDRESS;
|
|
41
|
+
// Original accounts.
|
|
42
|
+
const originalAccounts = { queue: { value: input.queue ?? null, isWritable: false }, authority: { value: input.authority ?? null, isWritable: true }, permission: { value: input.permission ?? null, isWritable: true }, permissionProgram: { value: input.permissionProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
|
|
43
|
+
const accounts = originalAccounts;
|
|
44
|
+
// Resolve default values.
|
|
45
|
+
if (!accounts.systemProgram.value) {
|
|
46
|
+
accounts.systemProgram.value = '11111111111111111111111111111111';
|
|
47
|
+
}
|
|
48
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
49
|
+
return Object.freeze({ accounts: [getAccountMeta("queue", accounts.queue), getAccountMeta("authority", accounts.authority), getAccountMeta("permission", accounts.permission), getAccountMeta("permissionProgram", accounts.permissionProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getSetupQueuePermissionInstructionDataEncoder().encode({}), programAddress });
|
|
50
|
+
}
|
|
51
|
+
export function parseSetupQueuePermissionInstruction(instruction) {
|
|
52
|
+
if (instruction.accounts.length < 5) {
|
|
53
|
+
throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 5 });
|
|
54
|
+
}
|
|
55
|
+
let accountIndex = 0;
|
|
56
|
+
const getNextAccount = () => {
|
|
57
|
+
const accountMeta = instruction.accounts[accountIndex];
|
|
58
|
+
accountIndex += 1;
|
|
59
|
+
return accountMeta;
|
|
60
|
+
};
|
|
61
|
+
return { programAddress: instruction.programAddress, accounts: { queue: getNextAccount(), authority: getNextAccount(), permission: getNextAccount(), permissionProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getSetupQueuePermissionInstructionDataDecoder().decode(instruction.data) };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBRdWV1ZVBlcm1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2R1ZWwvaW5zdHJ1Y3Rpb25zL3NldHVwUXVldWVQZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHlEQUF5RCxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZ1UsTUFBTSxhQUFhLENBQUM7QUFDdGxCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3Q0FBd0MsRUFBbUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUUzRyxNQUFNLFVBQVUseUNBQXlDLEtBQUssT0FBTyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBU3pKLE1BQU0sVUFBVSw2Q0FBNkM7SUFDekQsT0FBTyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLGFBQWEsRUFBRSxvQ0FBb0Ms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LyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEFkZHJlc3NFbmNvZGVyLCBnZXRCeXRlc0RlY29kZXIsIGdldEJ5dGVzRW5jb2RlciwgZ2V0UHJvZ3JhbURlcml2ZWRBZGRyZXNzLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFjY291bnRTaWduZXJNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBUcmFuc2FjdGlvblNpZ25lciwgdHlwZSBXcml0YWJsZUFjY291bnQsIHR5cGUgV3JpdGFibGVTaWduZXJBY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuaW1wb3J0IHsgZ2V0QWNjb3VudE1ldGFGYWN0b3J5LCBnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50LCB0eXBlIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9wcm9ncmFtLWNsaWVudC1jb3JlJztcbmltcG9ydCB7IERVRUxfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuXG5leHBvcnQgY29uc3QgU0VUVVBfUVVFVUVfUEVSTUlTU0lPTl9ESVNDUklNSU5BVE9SID0gbmV3IFVpbnQ4QXJyYXkoWzIyMywgMTMyLCA3NywgMTUsIDIyNCwgMTU1LCAxMjUsIDIyNF0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dXBRdWV1ZVBlcm1pc3Npb25EaXNjcmltaW5hdG9yQnl0ZXMoKSB7IHJldHVybiBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKFNFVFVQX1FVRVVFX1BFUk1JU1NJT05fRElTQ1JJTUlOQVRPUik7IH1cblxuZXhwb3J0IHR5cGUgU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBEVUVMX1BST0dSQU1fQUREUkVTUywgVEFjY291bnRRdWV1ZSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50QXV0aG9yaXR5IGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExXCIsIFRSZW1haW5pbmdBY2NvdW50cyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhPHN0cmluZz5bXSA9IFtdPiA9XG5JbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxbVEFjY291bnRRdWV1ZSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFF1ZXVlPiA6IFRBY2NvdW50UXVldWUsIFRBY2NvdW50QXV0aG9yaXR5IGV4dGVuZHMgc3RyaW5nID8gV3JpdGFibGVTaWduZXJBY2NvdW50PFRBY2NvdW50QXV0aG9yaXR5PiAmIEFjY291bnRTaWduZXJNZXRhPFRBY2NvdW50QXV0aG9yaXR5PiA6IFRBY2NvdW50QXV0aG9yaXR5LCBUQWNjb3VudFBlcm1pc3Npb24gZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRQZXJtaXNzaW9uPiA6IFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtPiA6IFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFN5c3RlbVByb2dyYW0+IDogVEFjY291bnRTeXN0ZW1Qcm9ncmFtLCAuLi5UUmVtYWluaW5nQWNjb3VudHNdPjtcblxuZXhwb3J0IHR5cGUgU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgIH07XG5cbmV4cG9ydCB0eXBlIFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKTogRml4ZWRTaXplRW5jb2RlcjxTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUFyZ3M+IHtcbiAgICByZXR1cm4gdHJhbnNmb3JtRW5jb2RlcihnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCldXSksICh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIGRpc2NyaW1pbmF0b3I6IFNFVFVQX1FVRVVFX1BFUk1JU1NJT05fRElTQ1JJTUlOQVRPUiB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKTogRml4ZWRTaXplRGVjb2RlcjxTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhEZWNvZGVyU2l6ZShnZXRCeXRlc0RlY29kZXIoKSwgOCldXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUNvZGVjKCk6IEZpeGVkU2l6ZUNvZGVjPFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhQXJncywgU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLCBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKSk7XG59XG5cbmV4cG9ydCB0eXBlIFNldHVwUXVldWVQZXJtaXNzaW9uQXN5bmNJbnB1dDxUQWNjb3VudFF1ZXVlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudEF1dGhvcml0eSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gIHtcbiAgcXVldWU/OiBBZGRyZXNzPFRBY2NvdW50UXVldWU+O1xuYXV0aG9yaXR5OiBUcmFuc2FjdGlvblNpZ25lcjxUQWNjb3VudEF1dGhvcml0eT47XG5wZXJtaXNzaW9uOiBBZGRyZXNzPFRBY2NvdW50UGVybWlzc2lvbj47XG5wZXJtaXNzaW9uUHJvZ3JhbTogQWRkcmVzczxUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtPjtcbnN5c3RlbVByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50U3lzdGVtUHJvZ3JhbT47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uQXN5bmM8VEFjY291bnRRdWV1ZSBleHRlbmRzIHN0cmluZywgVEFjY291bnRBdXRob3JpdHkgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIERVRUxfUFJPR1JBTV9BRERSRVNTPihpbnB1dDogU2V0dXBRdWV1ZVBlcm1pc3Npb25Bc3luY0lucHV0PFRBY2NvdW50UXVldWUsIFRBY2NvdW50QXV0aG9yaXR5LCBUQWNjb3VudFBlcm1pc3Npb24sIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4sIGNvbmZpZz86IHsgcHJvZ3JhbUFkZHJlc3M/OiBUUHJvZ3JhbUFkZHJlc3MgfSApOiBQcm9taXNlPFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFF1ZXVlLCBUQWNjb3VudEF1dGhvcml0eSwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+PiB7XG4gIC8vIFByb2dyYW0gYWRkcmVzcy5cbmNvbnN0IHByb2dyYW1BZGRyZXNzID0gY29uZmlnPy5wcm9ncmFtQWRkcmVzcyA/PyBEVUVMX1BST0dSQU1fQUREUkVTUztcblxuIC8vIE9yaWdpbmFsIGFjY291bnRzLlxuY29uc3Qgb3JpZ2luYWxBY2NvdW50cyA9IHsgcXVldWU6IHsgdmFsdWU6IGlucHV0LnF1ZXVlID8/IG51bGwsIGlzV3JpdGFibGU6IGZhbHNlIH0sIGF1dGhvcml0eTogeyB2YWx1ZTogaW5wdXQuYXV0aG9yaXR5ID8/IG51bGwsIGlzV3JpdGFibGU6IHRydWUgfSwgcGVybWlzc2lvbjogeyB2YWx1ZTogaW5wdXQucGVybWlzc2lvbiA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBlcm1pc3Npb25Qcm9ncmFtOiB7IHZhbHVlOiBpbnB1dC5wZXJtaXNzaW9uUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBzeXN0ZW1Qcm9ncmFtOiB7IHZhbHVlOiBpbnB1dC5zeXN0ZW1Qcm9ncmFtID8/IG51bGwsIGlzV3JpdGFibGU6IGZhbHNlIH0gfVxuY29uc3QgYWNjb3VudHMgPSBvcmlnaW5hbEFjY291bnRzIGFzIFJlY29yZDxrZXlvZiB0eXBlb2Ygb3JpZ2luYWxBY2NvdW50cywgUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQ+O1xuXG5cbi8vIFJlc29sdmUgZGVmYXVsdCB2YWx1ZXMuXG5pZiAoIWFjY291bnRzLnF1ZXVlLnZhbHVlKSB7XG5hY2NvdW50cy5xdWV1ZS52YWx1ZSA9IGF3YWl0IGdldFByb2dyYW1EZXJpdmVkQWRkcmVzcyh7IHByb2dyYW1BZGRyZXNzLCBzZWVkczogW2dldEJ5dGVzRW5jb2RlcigpLmVuY29kZShuZXcgVWludDhBcnJheShbMTEzLCAxMTcsIDEwMSwgMTE3LCAxMDFdKSksIGdldEFkZHJlc3NFbmNvZGVyKCkuZW5jb2RlKGdldEFkZHJlc3NGcm9tUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQoXCJhdXRob3JpdHlcIiwgYWNjb3VudHMuYXV0aG9yaXR5LnZhbHVlKSldIH0pO1xufVxuaWYgKCFhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBhcyBBZGRyZXNzPCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwicXVldWVcIiwgYWNjb3VudHMucXVldWUpLCBnZXRBY2NvdW50TWV0YShcImF1dGhvcml0eVwiLCBhY2NvdW50cy5hdXRob3JpdHkpLCBnZXRBY2NvdW50TWV0YShcInBlcm1pc3Npb25cIiwgYWNjb3VudHMucGVybWlzc2lvbiksIGdldEFjY291bnRNZXRhKFwicGVybWlzc2lvblByb2dyYW1cIiwgYWNjb3VudHMucGVybWlzc2lvblByb2dyYW0pLCBnZXRBY2NvdW50TWV0YShcInN5c3RlbVByb2dyYW1cIiwgYWNjb3VudHMuc3lzdGVtUHJvZ3JhbSldLCBkYXRhOiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKS5lbmNvZGUoe30pLCBwcm9ncmFtQWRkcmVzcyB9IGFzIFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFF1ZXVlLCBUQWNjb3VudEF1dGhvcml0eSwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+KTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnB1dDxUQWNjb3VudFF1ZXVlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudEF1dGhvcml0eSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gIHtcbiAgcXVldWU6IEFkZHJlc3M8VEFjY291bnRRdWV1ZT47XG5hdXRob3JpdHk6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50QXV0aG9yaXR5PjtcbnBlcm1pc3Npb246IEFkZHJlc3M8VEFjY291bnRQZXJtaXNzaW9uPjtcbnBlcm1pc3Npb25Qcm9ncmFtOiBBZGRyZXNzPFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0+O1xuc3lzdGVtUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRTeXN0ZW1Qcm9ncmFtPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VEFjY291bnRRdWV1ZSBleHRlbmRzIHN0cmluZywgVEFjY291bnRBdXRob3JpdHkgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIERVRUxfUFJPR1JBTV9BRERSRVNTPihpbnB1dDogU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnB1dDxUQWNjb3VudFF1ZXVlLCBUQWNjb3VudEF1dGhvcml0eSwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+LCBjb25maWc/OiB7IHByb2dyYW1BZGRyZXNzPzogVFByb2dyYW1BZGRyZXNzIH0gKTogU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbUFkZHJlc3MsIFRBY2NvdW50UXVldWUsIFRBY2NvdW50QXV0aG9yaXR5LCBUQWNjb3VudFBlcm1pc3Npb24sIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4ge1xuICAvLyBQcm9ncmFtIGFkZHJlc3MuXG5jb25zdCBwcm9ncmFtQWRkcmVzcyA9IGNvbmZpZz8ucHJvZ3JhbUFkZHJlc3MgPz8gRFVFTF9QUk9HUkFNX0FERFJFU1M7XG5cbiAvLyBPcmlnaW5hbCBhY2NvdW50cy5cbmNvbnN0IG9yaWdpbmFsQWNjb3VudHMgPSB7IHF1ZXVlOiB7IHZhbHVlOiBpbnB1dC5xdWV1ZSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBhdXRob3JpdHk6IHsgdmFsdWU6IGlucHV0LmF1dGhvcml0eSA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBlcm1pc3Npb246IHsgdmFsdWU6IGlucHV0LnBlcm1pc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwZXJtaXNzaW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQucGVybWlzc2lvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBSZXNvbHZlIGRlZmF1bHQgdmFsdWVzLlxuaWYgKCFhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBhcyBBZGRyZXNzPCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwicXVldWVcIiwgYWNjb3VudHMucXVldWUpLCBnZXRBY2NvdW50TWV0YShcImF1dGhvcml0eVwiLCBhY2NvdW50cy5hdXRob3JpdHkpLCBnZXRBY2NvdW50TWV0YShcInBlcm1pc3Npb25cIiwgYWNjb3VudHMucGVybWlzc2lvbiksIGdldEFjY291bnRNZXRhKFwicGVybWlzc2lvblByb2dyYW1cIiwgYWNjb3VudHMucGVybWlzc2lvblByb2dyYW0pLCBnZXRBY2NvdW50TWV0YShcInN5c3RlbVByb2dyYW1cIiwgYWNjb3VudHMuc3lzdGVtUHJvZ3JhbSldLCBkYXRhOiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKS5lbmNvZGUoe30pLCBwcm9ncmFtQWRkcmVzcyB9IGFzIFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFF1ZXVlLCBUQWNjb3VudEF1dGhvcml0eSwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBEVUVMX1BST0dSQU1fQUREUkVTUywgVEFjY291bnRNZXRhcyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhW10gPSByZWFkb25seSBBY2NvdW50TWV0YVtdPiA9IHsgcHJvZ3JhbUFkZHJlc3M6IEFkZHJlc3M8VFByb2dyYW0+O1xuYWNjb3VudHM6IHtcbnF1ZXVlOiBUQWNjb3VudE1ldGFzWzBdO1xuYXV0aG9yaXR5OiBUQWNjb3VudE1ldGFzWzFdO1xucGVybWlzc2lvbjogVEFjY291bnRNZXRhc1syXTtcbnBlcm1pc3Npb25Qcm9ncmFtOiBUQWNjb3VudE1ldGFzWzNdO1xuc3lzdGVtUHJvZ3JhbTogVEFjY291bnRNZXRhc1s0XTtcbn07XG5kYXRhOiBTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRNZXRhcyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhW10+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxUQWNjb3VudE1ldGFzPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5Pik6IFBhcnNlZFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0sIFRBY2NvdW50TWV0YXM+IHtcbiAgaWYgKGluc3RydWN0aW9uLmFjY291bnRzLmxlbmd0aCA8IDUpIHtcbiAgdGhyb3cgbmV3IFNvbGFuYUVycm9yKFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19JTlNVRkZJQ0lFTlRfQUNDT1VOVF9NRVRBUywgeyBhY3R1YWxBY2NvdW50TWV0YXM6IGluc3RydWN0aW9uLmFjY291bnRzLmxlbmd0aCwgZXhwZWN0ZWRBY2NvdW50TWV0YXM6IDUgfSk7XG59XG5sZXQgYWNjb3VudEluZGV4ID0gMDtcbmNvbnN0IGdldE5leHRBY2NvdW50ID0gKCkgPT4ge1xuICBjb25zdCBhY2NvdW50TWV0YSA9IChpbnN0cnVjdGlvbi5hY2NvdW50cyBhcyBUQWNjb3VudE1ldGFzKVthY2NvdW50SW5kZXhdITtcbiAgYWNjb3VudEluZGV4ICs9IDE7XG4gIHJldHVybiBhY2NvdW50TWV0YTtcbn1cbiAgcmV0dXJuIHsgcHJvZ3JhbUFkZHJlc3M6IGluc3RydWN0aW9uLnByb2dyYW1BZGRyZXNzLCBhY2NvdW50czogeyBxdWV1ZTogZ2V0TmV4dEFjY291bnQoKSwgYXV0aG9yaXR5OiBnZXROZXh0QWNjb3VudCgpLCBwZXJtaXNzaW9uOiBnZXROZXh0QWNjb3VudCgpLCBwZXJtaXNzaW9uUHJvZ3JhbTogZ2V0TmV4dEFjY291bnQoKSwgc3lzdGVtUHJvZ3JhbTogZ2V0TmV4dEFjY291bnQoKSB9LCBkYXRhOiBnZXRTZXR1cFF1ZXVlUGVybWlzc2lvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKS5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkgfTtcbn0iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
|
|
9
|
+
import { DUEL_PROGRAM_ADDRESS } from '../programs';
|
|
10
|
+
export declare const SETUP_TICKET_PERMISSION_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
11
|
+
export declare function getSetupTicketPermissionDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
|
|
12
|
+
export type SetupTicketPermissionInstruction<TProgram extends string = typeof DUEL_PROGRAM_ADDRESS, TAccountTicket extends string | AccountMeta<string> = string, TAccountTenant extends string | AccountMeta<string> = string, TAccountPlayer extends string | AccountMeta<string> = string, TAccountPermission extends string | AccountMeta<string> = string, TAccountPermissionProgram extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountTicket extends string ? ReadonlyAccount<TAccountTicket> : TAccountTicket, TAccountTenant extends string ? ReadonlyAccount<TAccountTenant> : TAccountTenant, TAccountPlayer extends string ? WritableSignerAccount<TAccountPlayer> & AccountSignerMeta<TAccountPlayer> : TAccountPlayer, TAccountPermission extends string ? WritableAccount<TAccountPermission> : TAccountPermission, TAccountPermissionProgram extends string ? ReadonlyAccount<TAccountPermissionProgram> : TAccountPermissionProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
|
|
13
|
+
export type SetupTicketPermissionInstructionData = {
|
|
14
|
+
discriminator: ReadonlyUint8Array;
|
|
15
|
+
};
|
|
16
|
+
export type SetupTicketPermissionInstructionDataArgs = {};
|
|
17
|
+
export declare function getSetupTicketPermissionInstructionDataEncoder(): FixedSizeEncoder<SetupTicketPermissionInstructionDataArgs>;
|
|
18
|
+
export declare function getSetupTicketPermissionInstructionDataDecoder(): FixedSizeDecoder<SetupTicketPermissionInstructionData>;
|
|
19
|
+
export declare function getSetupTicketPermissionInstructionDataCodec(): FixedSizeCodec<SetupTicketPermissionInstructionDataArgs, SetupTicketPermissionInstructionData>;
|
|
20
|
+
export type SetupTicketPermissionAsyncInput<TAccountTicket extends string = string, TAccountTenant extends string = string, TAccountPlayer extends string = string, TAccountPermission extends string = string, TAccountPermissionProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
21
|
+
ticket?: Address<TAccountTicket>;
|
|
22
|
+
tenant: Address<TAccountTenant>;
|
|
23
|
+
player: TransactionSigner<TAccountPlayer>;
|
|
24
|
+
permission: Address<TAccountPermission>;
|
|
25
|
+
permissionProgram: Address<TAccountPermissionProgram>;
|
|
26
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
27
|
+
};
|
|
28
|
+
export declare function getSetupTicketPermissionInstructionAsync<TAccountTicket extends string, TAccountTenant extends string, TAccountPlayer extends string, TAccountPermission extends string, TAccountPermissionProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof DUEL_PROGRAM_ADDRESS>(input: SetupTicketPermissionAsyncInput<TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>, config?: {
|
|
29
|
+
programAddress?: TProgramAddress;
|
|
30
|
+
}): Promise<SetupTicketPermissionInstruction<TProgramAddress, TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>>;
|
|
31
|
+
export type SetupTicketPermissionInput<TAccountTicket extends string = string, TAccountTenant extends string = string, TAccountPlayer extends string = string, TAccountPermission extends string = string, TAccountPermissionProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
32
|
+
ticket: Address<TAccountTicket>;
|
|
33
|
+
tenant: Address<TAccountTenant>;
|
|
34
|
+
player: TransactionSigner<TAccountPlayer>;
|
|
35
|
+
permission: Address<TAccountPermission>;
|
|
36
|
+
permissionProgram: Address<TAccountPermissionProgram>;
|
|
37
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
38
|
+
};
|
|
39
|
+
export declare function getSetupTicketPermissionInstruction<TAccountTicket extends string, TAccountTenant extends string, TAccountPlayer extends string, TAccountPermission extends string, TAccountPermissionProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof DUEL_PROGRAM_ADDRESS>(input: SetupTicketPermissionInput<TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>, config?: {
|
|
40
|
+
programAddress?: TProgramAddress;
|
|
41
|
+
}): SetupTicketPermissionInstruction<TProgramAddress, TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>;
|
|
42
|
+
export type ParsedSetupTicketPermissionInstruction<TProgram extends string = typeof DUEL_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
43
|
+
programAddress: Address<TProgram>;
|
|
44
|
+
accounts: {
|
|
45
|
+
ticket: TAccountMetas[0];
|
|
46
|
+
tenant: TAccountMetas[1];
|
|
47
|
+
player: TAccountMetas[2];
|
|
48
|
+
permission: TAccountMetas[3];
|
|
49
|
+
permissionProgram: TAccountMetas[4];
|
|
50
|
+
systemProgram: TAccountMetas[5];
|
|
51
|
+
};
|
|
52
|
+
data: SetupTicketPermissionInstructionData;
|
|
53
|
+
};
|
|
54
|
+
export declare function parseSetupTicketPermissionInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedSetupTicketPermissionInstruction<TProgram, TAccountMetas>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
|
|
9
|
+
import { getAccountMetaFactory, getAddressFromResolvedInstructionAccount } from '@solana/program-client-core';
|
|
10
|
+
import { DUEL_PROGRAM_ADDRESS } from '../programs';
|
|
11
|
+
export const SETUP_TICKET_PERMISSION_DISCRIMINATOR = new Uint8Array([164, 29, 7, 235, 183, 223, 11, 85]);
|
|
12
|
+
export function getSetupTicketPermissionDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(SETUP_TICKET_PERMISSION_DISCRIMINATOR); }
|
|
13
|
+
export function getSetupTicketPermissionInstructionDataEncoder() {
|
|
14
|
+
return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: SETUP_TICKET_PERMISSION_DISCRIMINATOR }));
|
|
15
|
+
}
|
|
16
|
+
export function getSetupTicketPermissionInstructionDataDecoder() {
|
|
17
|
+
return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
|
|
18
|
+
}
|
|
19
|
+
export function getSetupTicketPermissionInstructionDataCodec() {
|
|
20
|
+
return combineCodec(getSetupTicketPermissionInstructionDataEncoder(), getSetupTicketPermissionInstructionDataDecoder());
|
|
21
|
+
}
|
|
22
|
+
export async function getSetupTicketPermissionInstructionAsync(input, config) {
|
|
23
|
+
// Program address.
|
|
24
|
+
const programAddress = config?.programAddress ?? DUEL_PROGRAM_ADDRESS;
|
|
25
|
+
// Original accounts.
|
|
26
|
+
const originalAccounts = { ticket: { value: input.ticket ?? null, isWritable: false }, tenant: { value: input.tenant ?? null, isWritable: false }, player: { value: input.player ?? null, isWritable: true }, permission: { value: input.permission ?? null, isWritable: true }, permissionProgram: { value: input.permissionProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
|
|
27
|
+
const accounts = originalAccounts;
|
|
28
|
+
// Resolve default values.
|
|
29
|
+
if (!accounts.ticket.value) {
|
|
30
|
+
accounts.ticket.value = await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([116, 105, 99, 107, 101, 116])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("player", accounts.player.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("tenant", accounts.tenant.value))] });
|
|
31
|
+
}
|
|
32
|
+
if (!accounts.systemProgram.value) {
|
|
33
|
+
accounts.systemProgram.value = '11111111111111111111111111111111';
|
|
34
|
+
}
|
|
35
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
36
|
+
return Object.freeze({ accounts: [getAccountMeta("ticket", accounts.ticket), getAccountMeta("tenant", accounts.tenant), getAccountMeta("player", accounts.player), getAccountMeta("permission", accounts.permission), getAccountMeta("permissionProgram", accounts.permissionProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getSetupTicketPermissionInstructionDataEncoder().encode({}), programAddress });
|
|
37
|
+
}
|
|
38
|
+
export function getSetupTicketPermissionInstruction(input, config) {
|
|
39
|
+
// Program address.
|
|
40
|
+
const programAddress = config?.programAddress ?? DUEL_PROGRAM_ADDRESS;
|
|
41
|
+
// Original accounts.
|
|
42
|
+
const originalAccounts = { ticket: { value: input.ticket ?? null, isWritable: false }, tenant: { value: input.tenant ?? null, isWritable: false }, player: { value: input.player ?? null, isWritable: true }, permission: { value: input.permission ?? null, isWritable: true }, permissionProgram: { value: input.permissionProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
|
|
43
|
+
const accounts = originalAccounts;
|
|
44
|
+
// Resolve default values.
|
|
45
|
+
if (!accounts.systemProgram.value) {
|
|
46
|
+
accounts.systemProgram.value = '11111111111111111111111111111111';
|
|
47
|
+
}
|
|
48
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
49
|
+
return Object.freeze({ accounts: [getAccountMeta("ticket", accounts.ticket), getAccountMeta("tenant", accounts.tenant), getAccountMeta("player", accounts.player), getAccountMeta("permission", accounts.permission), getAccountMeta("permissionProgram", accounts.permissionProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getSetupTicketPermissionInstructionDataEncoder().encode({}), programAddress });
|
|
50
|
+
}
|
|
51
|
+
export function parseSetupTicketPermissionInstruction(instruction) {
|
|
52
|
+
if (instruction.accounts.length < 6) {
|
|
53
|
+
throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 6 });
|
|
54
|
+
}
|
|
55
|
+
let accountIndex = 0;
|
|
56
|
+
const getNextAccount = () => {
|
|
57
|
+
const accountMeta = instruction.accounts[accountIndex];
|
|
58
|
+
accountIndex += 1;
|
|
59
|
+
return accountMeta;
|
|
60
|
+
};
|
|
61
|
+
return { programAddress: instruction.programAddress, accounts: { ticket: getNextAccount(), tenant: getNextAccount(), player: getNextAccount(), permission: getNextAccount(), permissionProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getSetupTicketPermissionInstructionDataDecoder().decode(instruction.data) };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBUaWNrZXRQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9kdWVsL2luc3RydWN0aW9ucy9zZXR1cFRpY2tldFBlcm1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFnVSxNQUFNLGFBQWEsQ0FBQztBQUN0bEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdDQUF3QyxFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9JLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXpHLE1BQU0sVUFBVSwwQ0FBMEMsS0FBSyxPQUFPLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFTM0osTUFBTSxVQUFVLDhDQUE4QztJQUMxRCxPQUFPLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFDQUFx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UUFDM0UsWUFBWSxJQUFJLENBQUMsQ0FBQztRQUNsQixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDLENBQUE7SUFDQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSw4Q0FBOEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN6VSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEFkZHJlc3NFbmNvZGVyLCBnZXRCeXRlc0RlY29kZXIsIGdldEJ5dGVzRW5jb2RlciwgZ2V0UHJvZ3JhbURlcml2ZWRBZGRyZXNzLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFjY291bnRTaWduZXJNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBUcmFuc2FjdGlvblNpZ25lciwgdHlwZSBXcml0YWJsZUFjY291bnQsIHR5cGUgV3JpdGFibGVTaWduZXJBY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuaW1wb3J0IHsgZ2V0QWNjb3VudE1ldGFGYWN0b3J5LCBnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50LCB0eXBlIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9wcm9ncmFtLWNsaWVudC1jb3JlJztcbmltcG9ydCB7IERVRUxfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuXG5leHBvcnQgY29uc3QgU0VUVVBfVElDS0VUX1BFUk1JU1NJT05fRElTQ1JJTUlOQVRPUiA9IG5ldyBVaW50OEFycmF5KFsxNjQsIDI5LCA3LCAyMzUsIDE4MywgMjIzLCAxMSwgODVdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHVwVGlja2V0UGVybWlzc2lvbkRpc2NyaW1pbmF0b3JCeXRlcygpIHsgcmV0dXJuIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUoU0VUVVBfVElDS0VUX1BFUk1JU1NJT05fRElTQ1JJTUlOQVRPUik7IH1cblxuZXhwb3J0IHR5cGUgU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgRFVFTF9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50VGlja2V0IGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRUZW5hbnQgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMVwiLCBUUmVtYWluaW5nQWNjb3VudHMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YTxzdHJpbmc+W10gPSBbXT4gPVxuSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoRGF0YTxSZWFkb25seVVpbnQ4QXJyYXk+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8W1RBY2NvdW50VGlja2V0IGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50VGlja2V0PiA6IFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFRlbmFudD4gOiBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZVNpZ25lckFjY291bnQ8VEFjY291bnRQbGF5ZXI+ICYgQWNjb3VudFNpZ25lck1ldGE8VEFjY291bnRQbGF5ZXI+IDogVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFBlcm1pc3Npb24+IDogVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0+IDogVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4gOiBUQWNjb3VudFN5c3RlbVByb2dyYW0sIC4uLlRSZW1haW5pbmdBY2NvdW50c10+O1xuXG5leHBvcnQgdHlwZSBTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgIH07XG5cbmV4cG9ydCB0eXBlIFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUFyZ3MgPSB7ICB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpOiBGaXhlZFNpemVFbmNvZGVyPFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUFyZ3M+IHtcbiAgICByZXR1cm4gdHJhbnNmb3JtRW5jb2RlcihnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCldXSksICh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIGRpc2NyaW1pbmF0b3I6IFNFVFVQX1RJQ0tFVF9QRVJNSVNTSU9OX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpOiBGaXhlZFNpemVEZWNvZGVyPFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhEZWNvZGVyU2l6ZShnZXRCeXRlc0RlY29kZXIoKSwgOCldXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGFDb2RlYygpOiBGaXhlZFNpemVDb2RlYzxTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGFBcmdzLCBTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKSwgZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpKTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0dXBUaWNrZXRQZXJtaXNzaW9uQXN5bmNJbnB1dDxUQWNjb3VudFRpY2tldCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRUZW5hbnQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb24gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICB0aWNrZXQ/OiBBZGRyZXNzPFRBY2NvdW50VGlja2V0PjtcbnRlbmFudDogQWRkcmVzczxUQWNjb3VudFRlbmFudD47XG5wbGF5ZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50UGxheWVyPjtcbnBlcm1pc3Npb246IEFkZHJlc3M8VEFjY291bnRQZXJtaXNzaW9uPjtcbnBlcm1pc3Npb25Qcm9ncmFtOiBBZGRyZXNzPFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0+O1xuc3lzdGVtUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRTeXN0ZW1Qcm9ncmFtPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uQXN5bmM8VEFjY291bnRUaWNrZXQgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50VGVuYW50IGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRQcm9ncmFtQWRkcmVzcyBleHRlbmRzIEFkZHJlc3MgPSB0eXBlb2YgRFVFTF9QUk9HUkFNX0FERFJFU1M+KGlucHV0OiBTZXR1cFRpY2tldFBlcm1pc3Npb25Bc3luY0lucHV0PFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IFByb21pc2U8U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFRpY2tldCwgVEFjY291bnRUZW5hbnQsIFRBY2NvdW50UGxheWVyLCBUQWNjb3VudFBlcm1pc3Npb24sIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4+IHtcbiAgLy8gUHJvZ3JhbSBhZGRyZXNzLlxuY29uc3QgcHJvZ3JhbUFkZHJlc3MgPSBjb25maWc/LnByb2dyYW1BZGRyZXNzID8/IERVRUxfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyB0aWNrZXQ6IHsgdmFsdWU6IGlucHV0LnRpY2tldCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCB0ZW5hbnQ6IHsgdmFsdWU6IGlucHV0LnRlbmFudCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBlcm1pc3Npb246IHsgdmFsdWU6IGlucHV0LnBlcm1pc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwZXJtaXNzaW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQucGVybWlzc2lvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBSZXNvbHZlIGRlZmF1bHQgdmFsdWVzLlxuaWYgKCFhY2NvdW50cy50aWNrZXQudmFsdWUpIHtcbmFjY291bnRzLnRpY2tldC52YWx1ZSA9IGF3YWl0IGdldFByb2dyYW1EZXJpdmVkQWRkcmVzcyh7IHByb2dyYW1BZGRyZXNzLCBzZWVkczogW2dldEJ5dGVzRW5jb2RlcigpLmVuY29kZShuZXcgVWludDhBcnJheShbMTE2LCAxMDUsIDk5LCAxMDcsIDEwMSwgMTE2XSkpLCBnZXRBZGRyZXNzRW5jb2RlcigpLmVuY29kZShnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50KFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllci52YWx1ZSkpLCBnZXRBZGRyZXNzRW5jb2RlcigpLmVuY29kZShnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50KFwidGVuYW50XCIsIGFjY291bnRzLnRlbmFudC52YWx1ZSkpXSB9KTtcbn1cbmlmICghYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSA9ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgYXMgQWRkcmVzczwnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnPjtcbn1cblxuY29uc3QgZ2V0QWNjb3VudE1ldGEgPSBnZXRBY2NvdW50TWV0YUZhY3RvcnkocHJvZ3JhbUFkZHJlc3MsICdwcm9ncmFtSWQnKTtcbnJldHVybiBPYmplY3QuZnJlZXplKHsgYWNjb3VudHM6IFtnZXRBY2NvdW50TWV0YShcInRpY2tldFwiLCBhY2NvdW50cy50aWNrZXQpLCBnZXRBY2NvdW50TWV0YShcInRlbmFudFwiLCBhY2NvdW50cy50ZW5hbnQpLCBnZXRBY2NvdW50TWV0YShcInBsYXllclwiLCBhY2NvdW50cy5wbGF5ZXIpLCBnZXRBY2NvdW50TWV0YShcInBlcm1pc3Npb25cIiwgYWNjb3VudHMucGVybWlzc2lvbiksIGdldEFjY291bnRNZXRhKFwicGVybWlzc2lvblByb2dyYW1cIiwgYWNjb3VudHMucGVybWlzc2lvblByb2dyYW0pLCBnZXRBY2NvdW50TWV0YShcInN5c3RlbVByb2dyYW1cIiwgYWNjb3VudHMuc3lzdGVtUHJvZ3JhbSldLCBkYXRhOiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCkuZW5jb2RlKHt9KSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbUFkZHJlc3MsIFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPik7XG59XG5cbmV4cG9ydCB0eXBlIFNldHVwVGlja2V0UGVybWlzc2lvbklucHV0PFRBY2NvdW50VGlja2V0IGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFRlbmFudCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9ICB7XG4gIHRpY2tldDogQWRkcmVzczxUQWNjb3VudFRpY2tldD47XG50ZW5hbnQ6IEFkZHJlc3M8VEFjY291bnRUZW5hbnQ+O1xucGxheWVyOiBUcmFuc2FjdGlvblNpZ25lcjxUQWNjb3VudFBsYXllcj47XG5wZXJtaXNzaW9uOiBBZGRyZXNzPFRBY2NvdW50UGVybWlzc2lvbj47XG5wZXJtaXNzaW9uUHJvZ3JhbTogQWRkcmVzczxUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtPjtcbnN5c3RlbVByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50U3lzdGVtUHJvZ3JhbT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbjxUQWNjb3VudFRpY2tldCBleHRlbmRzIHN0cmluZywgVEFjY291bnRUZW5hbnQgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb24gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVFByb2dyYW1BZGRyZXNzIGV4dGVuZHMgQWRkcmVzcyA9IHR5cGVvZiBEVUVMX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IFNldHVwVGlja2V0UGVybWlzc2lvbklucHV0PFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRUaWNrZXQsIFRBY2NvdW50VGVuYW50LCBUQWNjb3VudFBsYXllciwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+IHtcbiAgLy8gUHJvZ3JhbSBhZGRyZXNzLlxuY29uc3QgcHJvZ3JhbUFkZHJlc3MgPSBjb25maWc/LnByb2dyYW1BZGRyZXNzID8/IERVRUxfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyB0aWNrZXQ6IHsgdmFsdWU6IGlucHV0LnRpY2tldCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCB0ZW5hbnQ6IHsgdmFsdWU6IGlucHV0LnRlbmFudCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBlcm1pc3Npb246IHsgdmFsdWU6IGlucHV0LnBlcm1pc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwZXJtaXNzaW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQucGVybWlzc2lvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBSZXNvbHZlIGRlZmF1bHQgdmFsdWVzLlxuaWYgKCFhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBhcyBBZGRyZXNzPCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwidGlja2V0XCIsIGFjY291bnRzLnRpY2tldCksIGdldEFjY291bnRNZXRhKFwidGVuYW50XCIsIGFjY291bnRzLnRlbmFudCksIGdldEFjY291bnRNZXRhKFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllciksIGdldEFjY291bnRNZXRhKFwicGVybWlzc2lvblwiLCBhY2NvdW50cy5wZXJtaXNzaW9uKSwgZ2V0QWNjb3VudE1ldGEoXCJwZXJtaXNzaW9uUHJvZ3JhbVwiLCBhY2NvdW50cy5wZXJtaXNzaW9uUHJvZ3JhbSksIGdldEFjY291bnRNZXRhKFwic3lzdGVtUHJvZ3JhbVwiLCBhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtKV0sIGRhdGE6IGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKS5lbmNvZGUoe30pLCBwcm9ncmFtQWRkcmVzcyB9IGFzIFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRUaWNrZXQsIFRBY2NvdW50VGVuYW50LCBUQWNjb3VudFBsYXllciwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgRFVFTF9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdID0gcmVhZG9ubHkgQWNjb3VudE1ldGFbXT4gPSB7IHByb2dyYW1BZGRyZXNzOiBBZGRyZXNzPFRQcm9ncmFtPjtcbmFjY291bnRzOiB7XG50aWNrZXQ6IFRBY2NvdW50TWV0YXNbMF07XG50ZW5hbnQ6IFRBY2NvdW50TWV0YXNbMV07XG5wbGF5ZXI6IFRBY2NvdW50TWV0YXNbMl07XG5wZXJtaXNzaW9uOiBUQWNjb3VudE1ldGFzWzNdO1xucGVybWlzc2lvblByb2dyYW06IFRBY2NvdW50TWV0YXNbNF07XG5zeXN0ZW1Qcm9ncmFtOiBUQWNjb3VudE1ldGFzWzVdO1xufTtcbmRhdGE6IFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdPihpbnN0cnVjdGlvbjogSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8VEFjY291bnRNZXRhcz4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4pOiBQYXJzZWRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgNikge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogNiB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IHRpY2tldDogZ2V0TmV4dEFjY291bnQoKSwgdGVuYW50OiBnZXROZXh0QWNjb3VudCgpLCBwbGF5ZXI6IGdldE5leHRBY2NvdW50KCksIHBlcm1pc3Npb246IGdldE5leHRBY2NvdW50KCksIHBlcm1pc3Npb25Qcm9ncmFtOiBnZXROZXh0QWNjb3VudCgpLCBzeXN0ZW1Qcm9ncmFtOiBnZXROZXh0QWNjb3VudCgpIH0sIGRhdGE6IGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKS5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkgfTtcbn0iXX0=
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { type Address, type ClientWithPayer, type ClientWithRpc, type ClientWithTransactionPlanning, type ClientWithTransactionSending, type GetAccountInfoApi, type GetMultipleAccountsApi, type Instruction, type InstructionWithData, type ReadonlyUint8Array } from '@solana/kit';
|
|
9
9
|
import { type SelfFetchFunctions, type SelfPlanAndSendFunctions } from '@solana/program-client-core';
|
|
10
10
|
import { getMatchTicketCodec, getQueueCodec, getTenantCodec, type MatchTicket, type MatchTicketArgs, type Queue, type QueueArgs, type Tenant, type TenantArgs } from '../accounts';
|
|
11
|
-
import { getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, getCommitTicketsInstruction, getCreateTicketInstructionAsync, getDelegateQueueInstructionAsync, getDelegateTicketInstructionAsync, getFlushMatchesInstruction, getInitializeQueueInstructionAsync, getInitializeTenantInstructionAsync, getJoinQueueInstructionAsync, getProcessUndelegationInstruction, type CancelTicketAsyncInput, type CloseTicketAsyncInput, type CommitTicketsInput, type CreateTicketAsyncInput, type DelegateQueueAsyncInput, type DelegateTicketAsyncInput, type FlushMatchesInput, type InitializeQueueAsyncInput, type InitializeTenantAsyncInput, type JoinQueueAsyncInput, type ParsedCancelTicketInstruction, type ParsedCloseTicketInstruction, type ParsedCommitTicketsInstruction, type ParsedCreateTicketInstruction, type ParsedDelegateQueueInstruction, type ParsedDelegateTicketInstruction, type ParsedFlushMatchesInstruction, type ParsedInitializeQueueInstruction, type ParsedInitializeTenantInstruction, type ParsedJoinQueueInstruction, type ParsedProcessUndelegationInstruction, type ProcessUndelegationInput } from '../instructions';
|
|
11
|
+
import { getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, getCommitTicketsInstruction, getCreateTicketInstructionAsync, getDelegateQueueInstructionAsync, getDelegateTicketInstructionAsync, getFlushMatchesInstruction, getInitializeQueueInstructionAsync, getInitializeTenantInstructionAsync, getJoinQueueInstructionAsync, getProcessUndelegationInstruction, getSetupQueuePermissionInstructionAsync, getSetupTicketPermissionInstructionAsync, type CancelTicketAsyncInput, type CloseTicketAsyncInput, type CommitTicketsInput, type CreateTicketAsyncInput, type DelegateQueueAsyncInput, type DelegateTicketAsyncInput, type FlushMatchesInput, type InitializeQueueAsyncInput, type InitializeTenantAsyncInput, type JoinQueueAsyncInput, type ParsedCancelTicketInstruction, type ParsedCloseTicketInstruction, type ParsedCommitTicketsInstruction, type ParsedCreateTicketInstruction, type ParsedDelegateQueueInstruction, type ParsedDelegateTicketInstruction, type ParsedFlushMatchesInstruction, type ParsedInitializeQueueInstruction, type ParsedInitializeTenantInstruction, type ParsedJoinQueueInstruction, type ParsedProcessUndelegationInstruction, type ParsedSetupQueuePermissionInstruction, type ParsedSetupTicketPermissionInstruction, type ProcessUndelegationInput, type SetupQueuePermissionAsyncInput, type SetupTicketPermissionAsyncInput } from '../instructions';
|
|
12
12
|
export declare const DUEL_PROGRAM_ADDRESS: Address<"EdZzUwKd1X2ZWjxLPpz1cpEzMF7RUZC43Pq64v1VcK5X">;
|
|
13
13
|
export declare enum DuelAccount {
|
|
14
14
|
MatchTicket = 0,
|
|
@@ -29,7 +29,9 @@ export declare enum DuelInstruction {
|
|
|
29
29
|
InitializeQueue = 7,
|
|
30
30
|
InitializeTenant = 8,
|
|
31
31
|
JoinQueue = 9,
|
|
32
|
-
ProcessUndelegation = 10
|
|
32
|
+
ProcessUndelegation = 10,
|
|
33
|
+
SetupQueuePermission = 11,
|
|
34
|
+
SetupTicketPermission = 12
|
|
33
35
|
}
|
|
34
36
|
export declare function identifyDuelInstruction(instruction: {
|
|
35
37
|
data: ReadonlyUint8Array;
|
|
@@ -56,7 +58,11 @@ export type ParsedDuelInstruction<TProgram extends string = 'EdZzUwKd1X2ZWjxLPpz
|
|
|
56
58
|
instructionType: DuelInstruction.JoinQueue;
|
|
57
59
|
} & ParsedJoinQueueInstruction<TProgram> | {
|
|
58
60
|
instructionType: DuelInstruction.ProcessUndelegation;
|
|
59
|
-
} & ParsedProcessUndelegationInstruction<TProgram
|
|
61
|
+
} & ParsedProcessUndelegationInstruction<TProgram> | {
|
|
62
|
+
instructionType: DuelInstruction.SetupQueuePermission;
|
|
63
|
+
} & ParsedSetupQueuePermissionInstruction<TProgram> | {
|
|
64
|
+
instructionType: DuelInstruction.SetupTicketPermission;
|
|
65
|
+
} & ParsedSetupTicketPermissionInstruction<TProgram>;
|
|
60
66
|
export declare function parseDuelInstruction<TProgram extends string>(instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>): ParsedDuelInstruction<TProgram>;
|
|
61
67
|
export type DuelPlugin = {
|
|
62
68
|
accounts: DuelPluginAccounts;
|
|
@@ -79,6 +85,8 @@ export type DuelPluginInstructions = {
|
|
|
79
85
|
initializeTenant: (input: InitializeTenantAsyncInput) => ReturnType<typeof getInitializeTenantInstructionAsync> & SelfPlanAndSendFunctions;
|
|
80
86
|
joinQueue: (input: JoinQueueAsyncInput) => ReturnType<typeof getJoinQueueInstructionAsync> & SelfPlanAndSendFunctions;
|
|
81
87
|
processUndelegation: (input: MakeOptional<ProcessUndelegationInput, "payer">) => ReturnType<typeof getProcessUndelegationInstruction> & SelfPlanAndSendFunctions;
|
|
88
|
+
setupQueuePermission: (input: SetupQueuePermissionAsyncInput) => ReturnType<typeof getSetupQueuePermissionInstructionAsync> & SelfPlanAndSendFunctions;
|
|
89
|
+
setupTicketPermission: (input: SetupTicketPermissionAsyncInput) => ReturnType<typeof getSetupTicketPermissionInstructionAsync> & SelfPlanAndSendFunctions;
|
|
82
90
|
};
|
|
83
91
|
export type DuelPluginRequirements = ClientWithRpc<GetAccountInfoApi & GetMultipleAccountsApi> & ClientWithPayer & ClientWithTransactionPlanning & ClientWithTransactionSending;
|
|
84
92
|
export declare function duelProgram(): <T extends DuelPluginRequirements>(client: T) => T & {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { assertIsInstructionWithAccounts, containsBytes, fixEncoderSize, getBytesEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, SolanaError } from '@solana/kit';
|
|
9
9
|
import { addSelfFetchFunctions, addSelfPlanAndSendFunctions } from '@solana/program-client-core';
|
|
10
10
|
import { getMatchTicketCodec, getQueueCodec, getTenantCodec } from '../accounts';
|
|
11
|
-
import { getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, getCommitTicketsInstruction, getCreateTicketInstructionAsync, getDelegateQueueInstructionAsync, getDelegateTicketInstructionAsync, getFlushMatchesInstruction, getInitializeQueueInstructionAsync, getInitializeTenantInstructionAsync, getJoinQueueInstructionAsync, getProcessUndelegationInstruction, parseCancelTicketInstruction, parseCloseTicketInstruction, parseCommitTicketsInstruction, parseCreateTicketInstruction, parseDelegateQueueInstruction, parseDelegateTicketInstruction, parseFlushMatchesInstruction, parseInitializeQueueInstruction, parseInitializeTenantInstruction, parseJoinQueueInstruction, parseProcessUndelegationInstruction } from '../instructions';
|
|
11
|
+
import { getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, getCommitTicketsInstruction, getCreateTicketInstructionAsync, getDelegateQueueInstructionAsync, getDelegateTicketInstructionAsync, getFlushMatchesInstruction, getInitializeQueueInstructionAsync, getInitializeTenantInstructionAsync, getJoinQueueInstructionAsync, getProcessUndelegationInstruction, getSetupQueuePermissionInstructionAsync, getSetupTicketPermissionInstructionAsync, parseCancelTicketInstruction, parseCloseTicketInstruction, parseCommitTicketsInstruction, parseCreateTicketInstruction, parseDelegateQueueInstruction, parseDelegateTicketInstruction, parseFlushMatchesInstruction, parseInitializeQueueInstruction, parseInitializeTenantInstruction, parseJoinQueueInstruction, parseProcessUndelegationInstruction, parseSetupQueuePermissionInstruction, parseSetupTicketPermissionInstruction } from '../instructions';
|
|
12
12
|
export const DUEL_PROGRAM_ADDRESS = 'EdZzUwKd1X2ZWjxLPpz1cpEzMF7RUZC43Pq64v1VcK5X';
|
|
13
13
|
export var DuelAccount;
|
|
14
14
|
(function (DuelAccount) {
|
|
@@ -42,6 +42,8 @@ export var DuelInstruction;
|
|
|
42
42
|
DuelInstruction[DuelInstruction["InitializeTenant"] = 8] = "InitializeTenant";
|
|
43
43
|
DuelInstruction[DuelInstruction["JoinQueue"] = 9] = "JoinQueue";
|
|
44
44
|
DuelInstruction[DuelInstruction["ProcessUndelegation"] = 10] = "ProcessUndelegation";
|
|
45
|
+
DuelInstruction[DuelInstruction["SetupQueuePermission"] = 11] = "SetupQueuePermission";
|
|
46
|
+
DuelInstruction[DuelInstruction["SetupTicketPermission"] = 12] = "SetupTicketPermission";
|
|
45
47
|
})(DuelInstruction || (DuelInstruction = {}));
|
|
46
48
|
export function identifyDuelInstruction(instruction) {
|
|
47
49
|
const data = 'data' in instruction ? instruction.data : instruction;
|
|
@@ -78,6 +80,12 @@ export function identifyDuelInstruction(instruction) {
|
|
|
78
80
|
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([196, 28, 41, 206, 48, 37, 51, 167])), 0)) {
|
|
79
81
|
return DuelInstruction.ProcessUndelegation;
|
|
80
82
|
}
|
|
83
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([223, 132, 77, 15, 224, 155, 125, 224])), 0)) {
|
|
84
|
+
return DuelInstruction.SetupQueuePermission;
|
|
85
|
+
}
|
|
86
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([164, 29, 7, 235, 183, 223, 11, 85])), 0)) {
|
|
87
|
+
return DuelInstruction.SetupTicketPermission;
|
|
88
|
+
}
|
|
81
89
|
throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, { instructionData: data, programName: "duel" });
|
|
82
90
|
}
|
|
83
91
|
export function parseDuelInstruction(instruction) {
|
|
@@ -127,12 +135,20 @@ export function parseDuelInstruction(instruction) {
|
|
|
127
135
|
assertIsInstructionWithAccounts(instruction);
|
|
128
136
|
return { instructionType: DuelInstruction.ProcessUndelegation, ...parseProcessUndelegationInstruction(instruction) };
|
|
129
137
|
}
|
|
138
|
+
case DuelInstruction.SetupQueuePermission: {
|
|
139
|
+
assertIsInstructionWithAccounts(instruction);
|
|
140
|
+
return { instructionType: DuelInstruction.SetupQueuePermission, ...parseSetupQueuePermissionInstruction(instruction) };
|
|
141
|
+
}
|
|
142
|
+
case DuelInstruction.SetupTicketPermission: {
|
|
143
|
+
assertIsInstructionWithAccounts(instruction);
|
|
144
|
+
return { instructionType: DuelInstruction.SetupTicketPermission, ...parseSetupTicketPermissionInstruction(instruction) };
|
|
145
|
+
}
|
|
130
146
|
default: throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, { instructionType: instructionType, programName: "duel" });
|
|
131
147
|
}
|
|
132
148
|
}
|
|
133
149
|
export function duelProgram() {
|
|
134
150
|
return (client) => {
|
|
135
|
-
return { ...client, duel: { accounts: { matchTicket: addSelfFetchFunctions(client, getMatchTicketCodec()), queue: addSelfFetchFunctions(client, getQueueCodec()), tenant: addSelfFetchFunctions(client, getTenantCodec()) }, instructions: { cancelTicket: input => addSelfPlanAndSendFunctions(client, getCancelTicketInstructionAsync(input)), closeTicket: input => addSelfPlanAndSendFunctions(client, getCloseTicketInstructionAsync(input)), commitTickets: input => addSelfPlanAndSendFunctions(client, getCommitTicketsInstruction({ ...input, payer: input.payer ?? client.payer })), createTicket: input => addSelfPlanAndSendFunctions(client, getCreateTicketInstructionAsync(input)), delegateQueue: input => addSelfPlanAndSendFunctions(client, getDelegateQueueInstructionAsync({ ...input, payer: input.payer ?? client.payer })), delegateTicket: input => addSelfPlanAndSendFunctions(client, getDelegateTicketInstructionAsync({ ...input, payer: input.payer ?? client.payer })), flushMatches: input => addSelfPlanAndSendFunctions(client, getFlushMatchesInstruction(input)), initializeQueue: input => addSelfPlanAndSendFunctions(client, getInitializeQueueInstructionAsync(input)), initializeTenant: input => addSelfPlanAndSendFunctions(client, getInitializeTenantInstructionAsync(input)), joinQueue: input => addSelfPlanAndSendFunctions(client, getJoinQueueInstructionAsync(input)), processUndelegation: input => addSelfPlanAndSendFunctions(client, getProcessUndelegationInstruction({ ...input, payer: input.payer ?? client.payer.address })) } } };
|
|
151
|
+
return { ...client, duel: { accounts: { matchTicket: addSelfFetchFunctions(client, getMatchTicketCodec()), queue: addSelfFetchFunctions(client, getQueueCodec()), tenant: addSelfFetchFunctions(client, getTenantCodec()) }, instructions: { cancelTicket: input => addSelfPlanAndSendFunctions(client, getCancelTicketInstructionAsync(input)), closeTicket: input => addSelfPlanAndSendFunctions(client, getCloseTicketInstructionAsync(input)), commitTickets: input => addSelfPlanAndSendFunctions(client, getCommitTicketsInstruction({ ...input, payer: input.payer ?? client.payer })), createTicket: input => addSelfPlanAndSendFunctions(client, getCreateTicketInstructionAsync(input)), delegateQueue: input => addSelfPlanAndSendFunctions(client, getDelegateQueueInstructionAsync({ ...input, payer: input.payer ?? client.payer })), delegateTicket: input => addSelfPlanAndSendFunctions(client, getDelegateTicketInstructionAsync({ ...input, payer: input.payer ?? client.payer })), flushMatches: input => addSelfPlanAndSendFunctions(client, getFlushMatchesInstruction(input)), initializeQueue: input => addSelfPlanAndSendFunctions(client, getInitializeQueueInstructionAsync(input)), initializeTenant: input => addSelfPlanAndSendFunctions(client, getInitializeTenantInstructionAsync(input)), joinQueue: input => addSelfPlanAndSendFunctions(client, getJoinQueueInstructionAsync(input)), processUndelegation: input => addSelfPlanAndSendFunctions(client, getProcessUndelegationInstruction({ ...input, payer: input.payer ?? client.payer.address })), setupQueuePermission: input => addSelfPlanAndSendFunctions(client, getSetupQueuePermissionInstructionAsync(input)), setupTicketPermission: input => addSelfPlanAndSendFunctions(client, getSetupTicketPermissionInstructionAsync(input)) } } };
|
|
136
152
|
};
|
|
137
153
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvZHVlbC9wcm9ncmFtcy9kdWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSx5REFBeUQsRUFBRSw2REFBNkQsRUFBRSw0REFBNEQsRUFBRSxXQUFXLEVBQTJQLE1BQU0sYUFBYSxDQUFDO0FBQzVpQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLEVBQTBELE1BQU0sNkJBQTZCLENBQUM7QUFDekosT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQW9HLE1BQU0sYUFBYSxDQUFDO0FBQ25MLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSw4QkFBOEIsRUFBRSwyQkFBMkIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxpQ0FBaUMsRUFBRSwwQkFBMEIsRUFBRSxrQ0FBa0MsRUFBRSxtQ0FBbUMsRUFBRSw0QkFBNEIsRUFBRSxpQ0FBaUMsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSw0QkFBNEIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSxtQ0FBbUMsRUFBMHRCLE1BQU0saUJBQWlCLENBQUM7QUFFMzdDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLDhDQUF5RyxDQUFDO0FBRTlJLE1BQU0sQ0FBTixJQUFZLFdBQTBDO0FBQXRELFdBQVksV0FBVztJQUFHLDJEQUFXLENBQUE7SUFBRSwrQ0FBSyxDQUFBO0lBQUUsaURBQU0sQ0FBQTtBQUFDLENBQUMsRUFBMUMsV0FBVyxLQUFYLFdBQVcsUUFBK0I7QUFFdEQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQTBEO0lBQzFG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QyxFQUFFLENBQUM7UUFBQyxPQUFPLGVBQWUsQ0FBQyxXQUFXLENBQUM7SUFBQyxDQUFDO0lBQ3ZLLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBQUMsQ0FBQztJQUN0SyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sZUFBZSxDQUFDLFlBQVksQ0FBQztJQUFDLENBQUM7SUFDdkssSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLGVBQWUsQ0FBQyxhQUFhLENBQUM7SUFBQyxDQUFDO0lBQ3hLLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDO0lBQUMsQ0FBQztJQUN6SyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sZUFBZSxDQUFDLFlBQVksQ0FBQztJQUFDLENBQUM7SUFDdEssSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUM7SUFBQyxDQUFDO0lBQzNLLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxD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QUUsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxrQ0FBa0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLG1DQUFtQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvZ0QsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBjb2RlIHdhcyBBVVRPR0VORVJBVEVEIHVzaW5nIHRoZSBDb2RhbWEgbGlicmFyeS5cbiAqIFBsZWFzZSBETyBOT1QgRURJVCBUSElTIEZJTEUsIGluc3RlYWQgdXNlIHZpc2l0b3JzXG4gKiB0byBhZGQgZmVhdHVyZXMsIHRoZW4gcmVydW4gQ29kYW1hIHRvIHVwZGF0ZSBpdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2RhbWEtaWRsL2NvZGFtYVxuICovXG5cbmltcG9ydCB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMsIGNvbnRhaW5zQnl0ZXMsIGZpeEVuY29kZXJTaXplLCBnZXRCeXRlc0VuY29kZXIsIFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19GQUlMRURfVE9fSURFTlRJRllfQUNDT1VOVCwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0ZBSUxFRF9UT19JREVOVElGWV9JTlNUUlVDVElPTiwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX1VOUkVDT0dOSVpFRF9JTlNUUlVDVElPTl9UWVBFLCBTb2xhbmFFcnJvciwgdHlwZSBBZGRyZXNzLCB0eXBlIENsaWVudFdpdGhQYXllciwgdHlwZSBDbGllbnRXaXRoUnBjLCB0eXBlIENsaWVudFdpdGhUcmFuc2FjdGlvblBsYW5uaW5nLCB0eXBlIENsaWVudFdpdGhUcmFuc2FjdGlvblNlbmRpbmcsIHR5cGUgR2V0QWNjb3VudEluZm9BcGksIHR5cGUgR2V0TXVsdGlwbGVBY2NvdW50c0FwaSwgdHlwZSBJbnN0cnVjdGlvbiwgdHlwZSBJbnN0cnVjdGlvbldpdGhEYXRhLCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSB9IGZyb20gJ0Bzb2xhbmEva2l0JztcbmltcG9ydCB7IGFkZFNlbGZGZXRjaEZ1bmN0aW9ucywgYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zLCB0eXBlIFNlbGZGZXRjaEZ1bmN0aW9ucywgdHlwZSBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hUaWNrZXRDb2RlYywgZ2V0UXVldWVDb2RlYywgZ2V0VGVuYW50Q29kZWMsIHR5cGUgTWF0Y2hUaWNrZXQsIHR5cGUgTWF0Y2hUaWNrZXRBcmdzLCB0eXBlIFF1ZXVlLCB0eXBlIFF1ZXVlQXJncywgdHlwZSBUZW5hbnQsIHR5cGUgVGVuYW50QXJncyB9IGZyb20gJy4uL2FjY291bnRzJztcbmltcG9ydCB7IGdldENhbmNlbFRpY2tldEluc3RydWN0aW9uQXN5bmMsIGdldENsb3NlVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYywgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uLCBnZXRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLCBnZXREZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYywgZ2V0RGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLCBnZXRGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbiwgZ2V0SW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYywgZ2V0SW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uQXN5bmMsIGdldEpvaW5RdWV1ZUluc3RydWN0aW9uQXN5bmMsIGdldFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbiwgcGFyc2VDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbiwgcGFyc2VDbG9zZVRpY2tldEluc3RydWN0aW9uLCBwYXJzZUNvbW1pdFRpY2tldHNJbnN0cnVjdGlvbiwgcGFyc2VDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbiwgcGFyc2VEZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb24sIHBhcnNlRGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbiwgcGFyc2VGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbiwgcGFyc2VJbml0aWFsaXplUXVldWVJbnN0cnVjdGlvbiwgcGFyc2VJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb24sIHBhcnNlSm9pblF1ZXVlSW5zdHJ1Y3Rpb24sIHBhcnNlUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uLCB0eXBlIENhbmNlbFRpY2tldEFzeW5jSW5wdXQsIHR5cGUgQ2xvc2VUaWNrZXRBc3luY0lucHV0LCB0eXBlIENvbW1pdFRpY2tldHNJbnB1dCwgdHlwZSBDcmVhdGVUaWNrZXRBc3luY0lucHV0LCB0eXBlIERlbGVnYXRlUXVldWVBc3luY0lucHV0LCB0eXBlIERlbGVnYXRlVGlja2V0QXN5bmNJbnB1dCwgdHlwZSBGbHVzaE1hdGNoZXNJbnB1dCwgdHlwZSBJbml0aWFsaXplUXVldWVBc3luY0lucHV0LCB0eXBlIEluaXRpYWxpemVUZW5hbnRBc3luY0lucHV0LCB0eXBlIEpvaW5RdWV1ZUFzeW5jSW5wdXQsIHR5cGUgUGFyc2VkQ2FuY2VsVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkQ2xvc2VUaWNrZXRJbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWRDb21taXRUaWNrZXRzSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkQ3JlYXRlVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkRGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uLCB0eXBlIFBhcnNlZERlbGVnYXRlVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkRmx1c2hNYXRjaGVzSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkSW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkSW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uLCB0eXBlIFBhcnNlZEpvaW5RdWV1ZUluc3RydWN0aW9uLCB0eXBlIFBhcnNlZFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbiwgdHlwZSBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5wdXQgfSBmcm9tICcuLi9pbnN0cnVjdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgRFVFTF9QUk9HUkFNX0FERFJFU1MgPSAnRWRaelV3S2QxWDJaV2p4TFBwejFjcEV6TUY3UlVaQzQzUHE2NHYxVmNLNVgnIGFzIEFkZHJlc3M8J0VkWnpVd0tkMVgyWldqeExQcHoxY3BFek1GN1JVWkM0M1BxNjR2MVZjSzVYJz47XG5cbmV4cG9ydCBlbnVtIER1ZWxBY2NvdW50IHsgTWF0Y2hUaWNrZXQsIFF1ZXVlLCBUZW5hbnQgfVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZnlEdWVsQWNjb3VudChhY2NvdW50OiB7IGRhdGE6IFJlYWRvbmx5VWludDhBcnJheSB9IHwgUmVhZG9ubHlVaW50OEFycmF5KTogRHVlbEFjY291bnQge1xuICAgIGNvbnN0IGRhdGEgPSAnZGF0YScgaW4gYWNjb3VudCA/IGFjY291bnQuZGF0YSA6IGFjY291bnQ7XG4gICAgaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTEsIDEzMSwgNCwgMTU3LCAyMDcsIDc5LCAxMjYsIDVdKSksIDApKSB7IHJldHVybiBEdWVsQWNjb3VudC5NYXRjaFRpY2tldDsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMjA0LCAxNjcsIDYsIDI0NywgMjAsIDMzLCAyLCAxODhdKSksIDApKSB7IHJldHVybiBEdWVsQWNjb3VudC5RdWV1ZTsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbNjEsIDQzLCAyMTUsIDUxLCAyMzIsIDI0MiwgMjA5LCAxNzBdKSksIDApKSB7IHJldHVybiBEdWVsQWNjb3VudC5UZW5hbnQ7IH1cbiAgICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0ZBSUxFRF9UT19JREVOVElGWV9BQ0NPVU5ULCB7IGFjY291bnREYXRhOiBkYXRhLCBwcm9ncmFtTmFtZTogXCJkdWVsXCIgfSk7XG59XG5cbmV4cG9ydCBlbnVtIER1ZWxJbnN0cnVjdGlvbiB7IENhbmNlbFRpY2tldCwgQ2xvc2VUaWNrZXQsIENvbW1pdFRpY2tldHMsIENyZWF0ZVRpY2tldCwgRGVsZWdhdGVRdWV1ZSwgRGVsZWdhdGVUaWNrZXQsIEZsdXNoTWF0Y2hlcywgSW5pdGlhbGl6ZVF1ZXVlLCBJbml0aWFsaXplVGVuYW50LCBKb2luUXVldWUsIFByb2Nlc3NVbmRlbGVnYXRpb24gfVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZnlEdWVsSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb246IHsgZGF0YTogUmVhZG9ubHlVaW50OEFycmF5IH0gfCBSZWFkb25seVVpbnQ4QXJyYXkpOiBEdWVsSW5zdHJ1Y3Rpb24ge1xuICAgIGNvbnN0IGRhdGEgPSAnZGF0YScgaW4gaW5zdHJ1Y3Rpb24gPyBpbnN0cnVjdGlvbi5kYXRhIDogaW5zdHJ1Y3Rpb247XG4gICAgaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMjE2LCAyOCwgMjQ3LCAyMDYsIDE5NSwgMTcxLCAxMDAsIDE0M10pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5DYW5jZWxUaWNrZXQ7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzY2LCAyMDksIDExNCwgMTk3LCA3NSwgMjcsIDE4MiwgMTE3XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkNsb3NlVGlja2V0OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsyNDUsIDE5OSwgODEsIDAsIDYyLCAxMzMsIDE4LCAyMl0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Db21taXRUaWNrZXRzOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxNiwgMTc4LCAxMjIsIDI1LCAyMTMsIDg1LCA5NiwgMTI5XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkNyZWF0ZVRpY2tldDsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMzEsIDIwMCwgMTM5LCAxMjUsIDkzLCAyMzksIDgzLCA4N10pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVF1ZXVlOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxOTUsIDMsIDc4LCA2NCwgMTI4LCAyMzUsIDIwOSwgMTcxXSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlVGlja2V0OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFs0OSwgMTQ4LCAxNjMsIDcxLCA3NywgNjMsIDE5NywgNzZdKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxNzQsIDEwMiwgMTMyLCAyMzIsIDkwLCAyMDIsIDI3LCAyMF0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWU7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzk0LCAxMjAsIDM0LCAxODYsIDU3LCAxNjcsIDI0MSwgMjA2XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkluaXRpYWxpemVUZW5hbnQ7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzE1NywgMTE1LCA0OCwgMTA5LCA2NSwgODYsIDIwMywgMjM4XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkpvaW5RdWV1ZTsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTk2LCAyOCwgNDEsIDIwNiwgNDgsIDM3LCA1MSwgMTY3XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLlByb2Nlc3NVbmRlbGVnYXRpb247IH1cbiAgICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0ZBSUxFRF9UT19JREVOVElGWV9JTlNUUlVDVElPTiwgeyBpbnN0cnVjdGlvbkRhdGE6IGRhdGEsIHByb2dyYW1OYW1lOiBcImR1ZWxcIiB9KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkRHVlbEluc3RydWN0aW9uPFRQcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gJ0VkWnpVd0tkMVgyWldqeExQcHoxY3BFek1GN1JVWkM0M1BxNjR2MVZjSzVYJz4gPVxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNhbmNlbFRpY2tldCB9ICYgUGFyc2VkQ2FuY2VsVGlja2V0SW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ2xvc2VUaWNrZXQgfSAmIFBhcnNlZENsb3NlVGlja2V0SW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ29tbWl0VGlja2V0cyB9ICYgUGFyc2VkQ29tbWl0VGlja2V0c0luc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNyZWF0ZVRpY2tldCB9ICYgUGFyc2VkQ3JlYXRlVGlja2V0SW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVRdWV1ZSB9ICYgUGFyc2VkRGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlVGlja2V0IH0gJiBQYXJzZWREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkZsdXNoTWF0Y2hlcyB9ICYgUGFyc2VkRmx1c2hNYXRjaGVzSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSW5pdGlhbGl6ZVF1ZXVlIH0gJiBQYXJzZWRJbml0aWFsaXplUXVldWVJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplVGVuYW50IH0gJiBQYXJzZWRJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSm9pblF1ZXVlIH0gJiBQYXJzZWRKb2luUXVldWVJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Qcm9jZXNzVW5kZWxlZ2F0aW9uIH0gJiBQYXJzZWRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG5cblxuICAgICAgICBleHBvcnQgZnVuY3Rpb24gcGFyc2VEdWVsSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246IEluc3RydWN0aW9uPFRQcm9ncmFtPiBcbiAgICAgICAgICAgICAgICAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5PlxuICAgICAgICApOiBQYXJzZWREdWVsSW5zdHJ1Y3Rpb248VFByb2dyYW0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RydWN0aW9uVHlwZSA9IGlkZW50aWZ5RHVlbEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICAgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb25UeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uQ2FuY2VsVGlja2V0OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ2FuY2VsVGlja2V0LCAuLi5wYXJzZUNhbmNlbFRpY2tldEluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5DbG9zZVRpY2tldDogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNsb3NlVGlja2V0LCAuLi5wYXJzZUNsb3NlVGlja2V0SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkNvbW1pdFRpY2tldHM6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Db21taXRUaWNrZXRzLCAuLi5wYXJzZUNvbW1pdFRpY2tldHNJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uQ3JlYXRlVGlja2V0OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ3JlYXRlVGlja2V0LCAuLi5wYXJzZUNyZWF0ZVRpY2tldEluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVF1ZXVlOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVRdWV1ZSwgLi4ucGFyc2VEZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlVGlja2V0OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVUaWNrZXQsIC4uLnBhcnNlRGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzLCAuLi5wYXJzZUZsdXNoTWF0Y2hlc0luc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWU6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWUsIC4uLnBhcnNlSW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkluaXRpYWxpemVUZW5hbnQ6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplVGVuYW50LCAuLi5wYXJzZUluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uSm9pblF1ZXVlOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSm9pblF1ZXVlLCAuLi5wYXJzZUpvaW5RdWV1ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5Qcm9jZXNzVW5kZWxlZ2F0aW9uOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uUHJvY2Vzc1VuZGVsZWdhdGlvbiwgLi4ucGFyc2VQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX1VOUkVDT0dOSVpFRF9JTlNUUlVDVElPTl9UWVBFLCB7IGluc3RydWN0aW9uVHlwZTogaW5zdHJ1Y3Rpb25UeXBlIGFzIHN0cmluZywgcHJvZ3JhbU5hbWU6IFwiZHVlbFwiIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbmV4cG9ydCB0eXBlIER1ZWxQbHVnaW4gPSB7IGFjY291bnRzOiBEdWVsUGx1Z2luQWNjb3VudHM7IGluc3RydWN0aW9uczogRHVlbFBsdWdpbkluc3RydWN0aW9uczsgfVxuXG5leHBvcnQgdHlwZSBEdWVsUGx1Z2luQWNjb3VudHMgPSB7IG1hdGNoVGlja2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRNYXRjaFRpY2tldENvZGVjPiAmIFNlbGZGZXRjaEZ1bmN0aW9uczxNYXRjaFRpY2tldEFyZ3MsIE1hdGNoVGlja2V0PjsgcXVldWU6IFJldHVyblR5cGU8dHlwZW9mIGdldFF1ZXVlQ29kZWM+ICYgU2VsZkZldGNoRnVuY3Rpb25zPFF1ZXVlQXJncywgUXVldWU+OyB0ZW5hbnQ6IFJldHVyblR5cGU8dHlwZW9mIGdldFRlbmFudENvZGVjPiAmIFNlbGZGZXRjaEZ1bmN0aW9uczxUZW5hbnRBcmdzLCBUZW5hbnQ+OyB9XG5cbmV4cG9ydCB0eXBlIER1ZWxQbHVnaW5JbnN0cnVjdGlvbnMgPSB7IGNhbmNlbFRpY2tldDogKGlucHV0OiBDYW5jZWxUaWNrZXRBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgY2xvc2VUaWNrZXQ6IChpbnB1dDogQ2xvc2VUaWNrZXRBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRDbG9zZVRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBjb21taXRUaWNrZXRzOiAoaW5wdXQ6IE1ha2VPcHRpb25hbDxDb21taXRUaWNrZXRzSW5wdXQsIFwicGF5ZXJcIj4pID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENvbW1pdFRpY2tldHNJbnN0cnVjdGlvbj4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IGNyZWF0ZVRpY2tldDogKGlucHV0OiBDcmVhdGVUaWNrZXRBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgZGVsZWdhdGVRdWV1ZTogKGlucHV0OiBNYWtlT3B0aW9uYWw8RGVsZWdhdGVRdWV1ZUFzeW5jSW5wdXQsIFwicGF5ZXJcIj4pID0+IFJldHVyblR5cGU8dHlwZW9mIGdldERlbGVnYXRlUXVldWVJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgZGVsZWdhdGVUaWNrZXQ6IChpbnB1dDogTWFrZU9wdGlvbmFsPERlbGVnYXRlVGlja2V0QXN5bmNJbnB1dCwgXCJwYXllclwiPikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgZmx1c2hNYXRjaGVzOiAoaW5wdXQ6IEZsdXNoTWF0Y2hlc0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbj4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IGluaXRpYWxpemVRdWV1ZTogKGlucHV0OiBJbml0aWFsaXplUXVldWVBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRJbml0aWFsaXplUXVldWVJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgaW5pdGlhbGl6ZVRlbmFudDogKGlucHV0OiBJbml0aWFsaXplVGVuYW50QXN5bmNJbnB1dCkgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0SW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBqb2luUXVldWU6IChpbnB1dDogSm9pblF1ZXVlQXN5bmNJbnB1dCkgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0Sm9pblF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IHByb2Nlc3NVbmRlbGVnYXRpb246IChpbnB1dDogTWFrZU9wdGlvbmFsPFByb2Nlc3NVbmRlbGVnYXRpb25JbnB1dCwgXCJwYXllclwiPikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgfVxuXG5leHBvcnQgdHlwZSBEdWVsUGx1Z2luUmVxdWlyZW1lbnRzID0gQ2xpZW50V2l0aFJwYzxHZXRBY2NvdW50SW5mb0FwaSAmIEdldE11bHRpcGxlQWNjb3VudHNBcGk+ICYgQ2xpZW50V2l0aFBheWVyICYgQ2xpZW50V2l0aFRyYW5zYWN0aW9uUGxhbm5pbmcgJiBDbGllbnRXaXRoVHJhbnNhY3Rpb25TZW5kaW5nXG5cbmV4cG9ydCBmdW5jdGlvbiBkdWVsUHJvZ3JhbSgpIHtcbiAgICByZXR1cm4gPFQgZXh0ZW5kcyBEdWVsUGx1Z2luUmVxdWlyZW1lbnRzPihjbGllbnQ6IFQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY2xpZW50LCBkdWVsOiA8RHVlbFBsdWdpbj57IGFjY291bnRzOiB7IG1hdGNoVGlja2V0OiBhZGRTZWxmRmV0Y2hGdW5jdGlvbnMoY2xpZW50LCBnZXRNYXRjaFRpY2tldENvZGVjKCkpLCBxdWV1ZTogYWRkU2VsZkZldGNoRnVuY3Rpb25zKGNsaWVudCwgZ2V0UXVldWVDb2RlYygpKSwgdGVuYW50OiBhZGRTZWxmRmV0Y2hGdW5jdGlvbnMoY2xpZW50LCBnZXRUZW5hbnRDb2RlYygpKSB9LCBpbnN0cnVjdGlvbnM6IHsgY2FuY2VsVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGNsb3NlVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRDbG9zZVRpY2tldEluc3RydWN0aW9uQXN5bmMoaW5wdXQpKSwgY29tbWl0VGlja2V0czogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uKHsgLi4uaW5wdXQsIHBheWVyOiBpbnB1dC5wYXllciA/PyBjbGllbnQucGF5ZXIgfSkpLCBjcmVhdGVUaWNrZXQ6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldENyZWF0ZVRpY2tldEluc3RydWN0aW9uQXN5bmMoaW5wdXQpKSwgZGVsZWdhdGVRdWV1ZTogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0RGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uQXN5bmMoeyAuLi5pbnB1dCwgcGF5ZXI6IGlucHV0LnBheWVyID8/IGNsaWVudC5wYXllciB9KSksIGRlbGVnYXRlVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uQXN5bmMoeyAuLi5pbnB1dCwgcGF5ZXI6IGlucHV0LnBheWVyID8/IGNsaWVudC5wYXllciB9KSksIGZsdXNoTWF0Y2hlczogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Rmx1c2hNYXRjaGVzSW5zdHJ1Y3Rpb24oaW5wdXQpKSwgaW5pdGlhbGl6ZVF1ZXVlOiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRJbml0aWFsaXplUXVldWVJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGluaXRpYWxpemVUZW5hbnQ6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldEluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGpvaW5RdWV1ZTogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Sm9pblF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpLCBwcm9jZXNzVW5kZWxlZ2F0aW9uOiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24oeyAuLi5pbnB1dCwgcGF5ZXI6IGlucHV0LnBheWVyID8/IGNsaWVudC5wYXllci5hZGRyZXNzIH0pKSB9IH0gfTtcbiAgICB9O1xufVxuXG50eXBlIE1ha2VPcHRpb25hbDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjsiXX0=
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvZHVlbC9wcm9ncmFtcy9kdWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSx5REFBeUQsRUFBRSw2REFBNkQsRUFBRSw0REFBNEQsRUFBRSxXQUFXLEVBQTJQLE1BQU0sYUFBYSxDQUFDO0FBQzVpQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLEVBQTBELE1BQU0sNkJBQTZCLENBQUM7QUFDekosT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQW9HLE1BQU0sYUFBYSxDQUFDO0FBQ25MLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSw4QkFBOEIsRUFBRSwyQkFBMkIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxpQ0FBaUMsRUFBRSwwQkFBMEIsRUFBRSxrQ0FBa0MsRUFBRSxtQ0FBbUMsRUFBRSw0QkFBNEIsRUFBRSxpQ0FBaUMsRUFBRSx1Q0FBdUMsRUFBRSx3Q0FBd0MsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSw0QkFBNEIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSxtQ0FBbUMsRUFBRSxvQ0FBb0MsRUFBRSxxQ0FBcUMsRUFBODNCLE1BQU0saUJBQWlCLENBQUM7QUFFL3ZELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLDhDQUF5RyxDQUFDO0FBRTlJLE1BQU0sQ0FBTixJQUFZLFdBQTBDO0FBQXRELFdBQVksV0FBVztJQUFHLDJEQUFXLENBQUE7SUFBRSwrQ0FBSyxDQUFBO0lBQUUsaURBQU0sQ0FBQTtBQUFDLENBQUMsRUFBMUMsV0FBVyxLQUFYLFdB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QUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQUMsQ0FBQztJQUN2SyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sZUFBZSxDQUFDLGFBQWEsQ0FBQztJQUFDLENBQUM7SUFDdEssSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLGVBQWUsQ0FBQyxZQUFZLENBQUM7SUFBQyxDQUFDO0lBQ3ZLLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBQUMsQ0FB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KlxuICogVGhpcyBjb2RlIHdhcyBBVVRPR0VORVJBVEVEIHVzaW5nIHRoZSBDb2RhbWEgbGlicmFyeS5cbiAqIFBsZWFzZSBETyBOT1QgRURJVCBUSElTIEZJTEUsIGluc3RlYWQgdXNlIHZpc2l0b3JzXG4gKiB0byBhZGQgZmVhdHVyZXMsIHRoZW4gcmVydW4gQ29kYW1hIHRvIHVwZGF0ZSBpdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2RhbWEtaWRsL2NvZGFtYVxuICovXG5cbmltcG9ydCB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMsIGNvbnRhaW5zQnl0ZXMsIGZpeEVuY29kZXJTaXplLCBnZXRCeXRlc0VuY29kZXIsIFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19GQUlMRURfVE9fSURFTlRJRllfQUNDT1VOVCwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0ZBSUxFRF9UT19JREVOVElGWV9JTlNUUlVDVElPTiwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX1VOUkVDT0dOSVpFRF9JTlNUUlVDVElPTl9UWVBFLCBTb2xhbmFFcnJvciwgdHlwZSBBZGRyZXNzLCB0eXBlIENsaWVudFdpdGhQYXllciwgdHlwZSBDbGllbnRXaXRoUnBjLCB0eXBlIENsaWVudFdpdGhUcmFuc2FjdGlvblBsYW5uaW5nLCB0eXBlIENsaWVudFdpdGhUcmFuc2FjdGlvblNlbmRpbmcsIHR5cGUgR2V0QWNjb3VudEluZm9BcGksIHR5cGUgR2V0TXVsdGlwbGVBY2NvdW50c0FwaSwgdHlwZSBJbnN0cnVjdGlvbiwgdHlwZSBJbnN0cnVjdGlvbldpdGhEYXRhLCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSB9IGZyb20gJ0Bzb2xhbmEva2l0JztcbmltcG9ydCB7IGFkZFNlbGZGZXRjaEZ1bmN0aW9ucywgYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zLCB0eXBlIFNlbGZGZXRjaEZ1bmN0aW9ucywgdHlwZSBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hUaWNrZXRDb2RlYywgZ2V0UXVldWVDb2RlYywgZ2V0VGVuYW50Q29kZWMsIHR5cGUgTWF0Y2hUaWNrZXQsIHR5cGUgTWF0Y2hUaWNrZXRBcmdzLCB0eXBlIFF1ZXVlLCB0eXBlIFF1ZXVlQXJncywgdHlwZSBUZW5hbnQsIHR5cGUgVGVuYW50QXJncyB9IGZyb20gJy4uL2FjY291bnRzJztcbmltcG9ydCB7IGdldENhbmNlbFRpY2tldEluc3RydWN0aW9uQXN5bmMsIGdldENsb3NlVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYywgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uLCBnZXRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLCBnZXREZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYywgZ2V0RGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLCBnZXRGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbiwgZ2V0SW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYywgZ2V0SW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uQXN5bmMsIGdldEpvaW5RdWV1ZUluc3RydWN0aW9uQXN5bmMsIGdldFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbiwgZ2V0U2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbkFzeW5jLCBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkFzeW5jLCBwYXJzZUNhbmNlbFRpY2tldEluc3RydWN0aW9uLCBwYXJzZUNsb3NlVGlja2V0SW5zdHJ1Y3Rpb24sIHBhcnNlQ29tbWl0VGlja2V0c0luc3RydWN0aW9uLCBwYXJzZUNyZWF0ZVRpY2tldEluc3RydWN0aW9uLCBwYXJzZURlbGVnYXRlUXVldWVJbnN0cnVjdGlvbiwgcGFyc2VEZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uLCBwYXJzZUZsdXNoTWF0Y2hlc0luc3RydWN0aW9uLCBwYXJzZUluaXRpYWxpemVRdWV1ZUluc3RydWN0aW9uLCBwYXJzZUluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbiwgcGFyc2VKb2luUXVldWVJbnN0cnVjdGlvbiwgcGFyc2VQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24sIHBhcnNlU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbiwgcGFyc2VTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbiwgdHlwZSBDYW5jZWxUaWNrZXRBc3luY0lucHV0LCB0eXBlIENsb3NlVGlja2V0QXN5bmNJbnB1dCwgdHlwZSBDb21taXRUaWNrZXRzSW5wdXQsIHR5cGUgQ3JlYXRlVGlja2V0QXN5bmNJbnB1dCwgdHlwZSBEZWxlZ2F0ZVF1ZXVlQXN5bmNJbnB1dCwgdHlwZSBEZWxlZ2F0ZVRpY2tldEFzeW5jSW5wdXQsIHR5cGUgRmx1c2hNYXRjaGVzSW5wdXQsIHR5cGUgSW5pdGlhbGl6ZVF1ZXVlQXN5bmNJbnB1dCwgdHlwZSBJbml0aWFsaXplVGVuYW50QXN5bmNJbnB1dCwgdHlwZSBKb2luUXVldWVBc3luY0lucHV0LCB0eXBlIFBhcnNlZENhbmNlbFRpY2tldEluc3RydWN0aW9uLCB0eXBlIFBhcnNlZENsb3NlVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkQ29tbWl0VGlja2V0c0luc3RydWN0aW9uLCB0eXBlIFBhcnNlZENyZWF0ZVRpY2tldEluc3RydWN0aW9uLCB0eXBlIFBhcnNlZERlbGVnYXRlUXVldWVJbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uLCB0eXBlIFBhcnNlZEZsdXNoTWF0Y2hlc0luc3RydWN0aW9uLCB0eXBlIFBhcnNlZEluaXRpYWxpemVRdWV1ZUluc3RydWN0aW9uLCB0eXBlIFBhcnNlZEluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWRKb2luUXVldWVJbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbiwgdHlwZSBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5wdXQsIHR5cGUgU2V0dXBRdWV1ZVBlcm1pc3Npb25Bc3luY0lucHV0LCB0eXBlIFNldHVwVGlja2V0UGVybWlzc2lvbkFzeW5jSW5wdXQgfSBmcm9tICcuLi9pbnN0cnVjdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgRFVFTF9QUk9HUkFNX0FERFJFU1MgPSAnRWRaelV3S2QxWDJaV2p4TFBwejFjcEV6TUY3UlVaQzQzUHE2NHYxVmNLNVgnIGFzIEFkZHJlc3M8J0VkWnpVd0tkMVgyWldqeExQcHoxY3BFek1GN1JVWkM0M1BxNjR2MVZjSzVYJz47XG5cbmV4cG9ydCBlbnVtIER1ZWxBY2NvdW50IHsgTWF0Y2hUaWNrZXQsIFF1ZXVlLCBUZW5hbnQgfVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZnlEdWVsQWNjb3VudChhY2NvdW50OiB7IGRhdGE6IFJlYWRvbmx5VWludDhBcnJheSB9IHwgUmVhZG9ubHlVaW50OEFycmF5KTogRHVlbEFjY291bnQge1xuICAgIGNvbnN0IGRhdGEgPSAnZGF0YScgaW4gYWNjb3VudCA/IGFjY291bnQuZGF0YSA6IGFjY291bnQ7XG4gICAgaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTEsIDEzMSwgNCwgMTU3LCAyMDcsIDc5LCAxMjYsIDVdKSksIDApKSB7IHJldHVybiBEdWVsQWNjb3VudC5NYXRjaFRpY2tldDsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMjA0LCAxNjcsIDYsIDI0NywgMjAsIDMzLCAyLCAxODhdKSksIDApKSB7IHJldHVybiBEdWVsQWNjb3VudC5RdWV1ZTsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbNjEsIDQzLCAyMTUsIDUxLCAyMzIsIDI0MiwgMjA5LCAxNzBdKSksIDApKSB7IHJldHVybiBEdWVsQWNjb3VudC5UZW5hbnQ7IH1cbiAgICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0ZBSUxFRF9UT19JREVOVElGWV9BQ0NPVU5ULCB7IGFjY291bnREYXRhOiBkYXRhLCBwcm9ncmFtTmFtZTogXCJkdWVsXCIgfSk7XG59XG5cbmV4cG9ydCBlbnVtIER1ZWxJbnN0cnVjdGlvbiB7IENhbmNlbFRpY2tldCwgQ2xvc2VUaWNrZXQsIENvbW1pdFRpY2tldHMsIENyZWF0ZVRpY2tldCwgRGVsZWdhdGVRdWV1ZSwgRGVsZWdhdGVUaWNrZXQsIEZsdXNoTWF0Y2hlcywgSW5pdGlhbGl6ZVF1ZXVlLCBJbml0aWFsaXplVGVuYW50LCBKb2luUXVldWUsIFByb2Nlc3NVbmRlbGVnYXRpb24sIFNldHVwUXVldWVQZXJtaXNzaW9uLCBTZXR1cFRpY2tldFBlcm1pc3Npb24gfVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZnlEdWVsSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb246IHsgZGF0YTogUmVhZG9ubHlVaW50OEFycmF5IH0gfCBSZWFkb25seVVpbnQ4QXJyYXkpOiBEdWVsSW5zdHJ1Y3Rpb24ge1xuICAgIGNvbnN0IGRhdGEgPSAnZGF0YScgaW4gaW5zdHJ1Y3Rpb24gPyBpbnN0cnVjdGlvbi5kYXRhIDogaW5zdHJ1Y3Rpb247XG4gICAgaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMjE2LCAyOCwgMjQ3LCAyMDYsIDE5NSwgMTcxLCAxMDAsIDE0M10pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5DYW5jZWxUaWNrZXQ7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzY2LCAyMDksIDExNCwgMTk3LCA3NSwgMjcsIDE4MiwgMTE3XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkNsb3NlVGlja2V0OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsyNDUsIDE5OSwgODEsIDAsIDYyLCAxMzMsIDE4LCAyMl0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Db21taXRUaWNrZXRzOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxNiwgMTc4LCAxMjIsIDI1LCAyMTMsIDg1LCA5NiwgMTI5XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkNyZWF0ZVRpY2tldDsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMzEsIDIwMCwgMTM5LCAxMjUsIDkzLCAyMzksIDgzLCA4N10pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVF1ZXVlOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxOTUsIDMsIDc4LCA2NCwgMTI4LCAyMzUsIDIwOSwgMTcxXSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlVGlja2V0OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFs0OSwgMTQ4LCAxNjMsIDcxLCA3NywgNjMsIDE5NywgNzZdKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxNzQsIDEwMiwgMTMyLCAyMzIsIDkwLCAyMDIsIDI3LCAyMF0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWU7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzk0LCAxMjAsIDM0LCAxODYsIDU3LCAxNjcsIDI0MSwgMjA2XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkluaXRpYWxpemVUZW5hbnQ7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzE1NywgMTE1LCA0OCwgMTA5LCA2NSwgODYsIDIwMywgMjM4XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkpvaW5RdWV1ZTsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTk2LCAyOCwgNDEsIDIwNiwgNDgsIDM3LCA1MSwgMTY3XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLlByb2Nlc3NVbmRlbGVnYXRpb247IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzIyMywgMTMyLCA3NywgMTUsIDIyNCwgMTU1LCAxMjUsIDIyNF0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5TZXR1cFF1ZXVlUGVybWlzc2lvbjsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTY0LCAyOSwgNywgMjM1LCAxODMsIDIyMywgMTEsIDg1XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLlNldHVwVGlja2V0UGVybWlzc2lvbjsgfVxuICAgIHRocm93IG5ldyBTb2xhbmFFcnJvcihTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fRkFJTEVEX1RPX0lERU5USUZZX0lOU1RSVUNUSU9OLCB7IGluc3RydWN0aW9uRGF0YTogZGF0YSwgcHJvZ3JhbU5hbWU6IFwiZHVlbFwiIH0pO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWREdWVsSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSAnRWRaelV3S2QxWDJaV2p4TFBwejFjcEV6TUY3UlVaQzQzUHE2NHYxVmNLNVgnPiA9XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ2FuY2VsVGlja2V0IH0gJiBQYXJzZWRDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5DbG9zZVRpY2tldCB9ICYgUGFyc2VkQ2xvc2VUaWNrZXRJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Db21taXRUaWNrZXRzIH0gJiBQYXJzZWRDb21taXRUaWNrZXRzSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ3JlYXRlVGlja2V0IH0gJiBQYXJzZWRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVF1ZXVlIH0gJiBQYXJzZWREZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVUaWNrZXQgfSAmIFBhcnNlZERlbGVnYXRlVGlja2V0SW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzIH0gJiBQYXJzZWRGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWUgfSAmIFBhcnNlZEluaXRpYWxpemVRdWV1ZUluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkluaXRpYWxpemVUZW5hbnQgfSAmIFBhcnNlZEluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Kb2luUXVldWUgfSAmIFBhcnNlZEpvaW5RdWV1ZUluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLlByb2Nlc3NVbmRlbGVnYXRpb24gfSAmIFBhcnNlZFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5TZXR1cFF1ZXVlUGVybWlzc2lvbiB9ICYgUGFyc2VkU2V0dXBRdWV1ZVBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5TZXR1cFRpY2tldFBlcm1pc3Npb24gfSAmIFBhcnNlZFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uPFRQcm9ncmFtPlxuXG5cbiAgICAgICAgZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRHVlbEluc3RydWN0aW9uPFRQcm9ncmFtIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgICAgIGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUUHJvZ3JhbT4gXG4gICAgICAgICAgICAgICAgJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT5cbiAgICAgICAgKTogUGFyc2VkRHVlbEluc3RydWN0aW9uPFRQcm9ncmFtPiB7XG4gICAgICAgICAgICBjb25zdCBpbnN0cnVjdGlvblR5cGUgPSBpZGVudGlmeUR1ZWxJbnN0cnVjdGlvbihpbnN0cnVjdGlvbik7XG4gICAgICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRHVlbEluc3RydWN0aW9uLkNhbmNlbFRpY2tldDogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNhbmNlbFRpY2tldCwgLi4ucGFyc2VDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uQ2xvc2VUaWNrZXQ6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5DbG9zZVRpY2tldCwgLi4ucGFyc2VDbG9zZVRpY2tldEluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5Db21taXRUaWNrZXRzOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ29tbWl0VGlja2V0cywgLi4ucGFyc2VDb21taXRUaWNrZXRzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkNyZWF0ZVRpY2tldDogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNyZWF0ZVRpY2tldCwgLi4ucGFyc2VDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVRdWV1ZTogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlUXVldWUsIC4uLnBhcnNlRGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVRpY2tldDogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlVGlja2V0LCAuLi5wYXJzZURlbGVnYXRlVGlja2V0SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkZsdXNoTWF0Y2hlczogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkZsdXNoTWF0Y2hlcywgLi4ucGFyc2VGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uSW5pdGlhbGl6ZVF1ZXVlOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSW5pdGlhbGl6ZVF1ZXVlLCAuLi5wYXJzZUluaXRpYWxpemVRdWV1ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplVGVuYW50OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSW5pdGlhbGl6ZVRlbmFudCwgLi4ucGFyc2VJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkpvaW5RdWV1ZTogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkpvaW5RdWV1ZSwgLi4ucGFyc2VKb2luUXVldWVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uUHJvY2Vzc1VuZGVsZWdhdGlvbjogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLlByb2Nlc3NVbmRlbGVnYXRpb24sIC4uLnBhcnNlUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5TZXR1cFF1ZXVlUGVybWlzc2lvbjogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLlNldHVwUXVldWVQZXJtaXNzaW9uLCAuLi5wYXJzZVNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLlNldHVwVGlja2V0UGVybWlzc2lvbjogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLlNldHVwVGlja2V0UGVybWlzc2lvbiwgLi4ucGFyc2VTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBTb2xhbmFFcnJvcihTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fVU5SRUNPR05JWkVEX0lOU1RSVUNUSU9OX1RZUEUsIHsgaW5zdHJ1Y3Rpb25UeXBlOiBpbnN0cnVjdGlvblR5cGUgYXMgc3RyaW5nLCBwcm9ncmFtTmFtZTogXCJkdWVsXCIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuZXhwb3J0IHR5cGUgRHVlbFBsdWdpbiA9IHsgYWNjb3VudHM6IER1ZWxQbHVnaW5BY2NvdW50czsgaW5zdHJ1Y3Rpb25zOiBEdWVsUGx1Z2luSW5zdHJ1Y3Rpb25zOyB9XG5cbmV4cG9ydCB0eXBlIER1ZWxQbHVnaW5BY2NvdW50cyA9IHsgbWF0Y2hUaWNrZXQ6IFJldHVyblR5cGU8dHlwZW9mIGdldE1hdGNoVGlja2V0Q29kZWM+ICYgU2VsZkZldGNoRnVuY3Rpb25zPE1hdGNoVGlja2V0QXJncywgTWF0Y2hUaWNrZXQ+OyBxdWV1ZTogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UXVldWVDb2RlYz4gJiBTZWxmRmV0Y2hGdW5jdGlvbnM8UXVldWVBcmdzLCBRdWV1ZT47IHRlbmFudDogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0VGVuYW50Q29kZWM+ICYgU2VsZkZldGNoRnVuY3Rpb25zPFRlbmFudEFyZ3MsIFRlbmFudD47IH1cblxuZXhwb3J0IHR5cGUgRHVlbFBsdWdpbkluc3RydWN0aW9ucyA9IHsgY2FuY2VsVGlja2V0OiAoaW5wdXQ6IENhbmNlbFRpY2tldEFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENhbmNlbFRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBjbG9zZVRpY2tldDogKGlucHV0OiBDbG9zZVRpY2tldEFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENsb3NlVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IGNvbW1pdFRpY2tldHM6IChpbnB1dDogTWFrZU9wdGlvbmFsPENvbW1pdFRpY2tldHNJbnB1dCwgXCJwYXllclwiPikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgY3JlYXRlVGlja2V0OiAoaW5wdXQ6IENyZWF0ZVRpY2tldEFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENyZWF0ZVRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBkZWxlZ2F0ZVF1ZXVlOiAoaW5wdXQ6IE1ha2VPcHRpb25hbDxEZWxlZ2F0ZVF1ZXVlQXN5bmNJbnB1dCwgXCJwYXllclwiPikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBkZWxlZ2F0ZVRpY2tldDogKGlucHV0OiBNYWtlT3B0aW9uYWw8RGVsZWdhdGVUaWNrZXRBc3luY0lucHV0LCBcInBheWVyXCI+KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBmbHVzaE1hdGNoZXM6IChpbnB1dDogRmx1c2hNYXRjaGVzSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldEZsdXNoTWF0Y2hlc0luc3RydWN0aW9uPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgaW5pdGlhbGl6ZVF1ZXVlOiAoaW5wdXQ6IEluaXRpYWxpemVRdWV1ZUFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldEluaXRpYWxpemVRdWV1ZUluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBpbml0aWFsaXplVGVuYW50OiAoaW5wdXQ6IEluaXRpYWxpemVUZW5hbnRBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IGpvaW5RdWV1ZTogKGlucHV0OiBKb2luUXVldWVBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRKb2luUXVldWVJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgcHJvY2Vzc1VuZGVsZWdhdGlvbjogKGlucHV0OiBNYWtlT3B0aW9uYWw8UHJvY2Vzc1VuZGVsZWdhdGlvbklucHV0LCBcInBheWVyXCI+KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBzZXR1cFF1ZXVlUGVybWlzc2lvbjogKGlucHV0OiBTZXR1cFF1ZXVlUGVybWlzc2lvbkFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IHNldHVwVGlja2V0UGVybWlzc2lvbjogKGlucHV0OiBTZXR1cFRpY2tldFBlcm1pc3Npb25Bc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgfVxuXG5leHBvcnQgdHlwZSBEdWVsUGx1Z2luUmVxdWlyZW1lbnRzID0gQ2xpZW50V2l0aFJwYzxHZXRBY2NvdW50SW5mb0FwaSAmIEdldE11bHRpcGxlQWNjb3VudHNBcGk+ICYgQ2xpZW50V2l0aFBheWVyICYgQ2xpZW50V2l0aFRyYW5zYWN0aW9uUGxhbm5pbmcgJiBDbGllbnRXaXRoVHJhbnNhY3Rpb25TZW5kaW5nXG5cbmV4cG9ydCBmdW5jdGlvbiBkdWVsUHJvZ3JhbSgpIHtcbiAgICByZXR1cm4gPFQgZXh0ZW5kcyBEdWVsUGx1Z2luUmVxdWlyZW1lbnRzPihjbGllbnQ6IFQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY2xpZW50LCBkdWVsOiA8RHVlbFBsdWdpbj57IGFjY291bnRzOiB7IG1hdGNoVGlja2V0OiBhZGRTZWxmRmV0Y2hGdW5jdGlvbnMoY2xpZW50LCBnZXRNYXRjaFRpY2tldENvZGVjKCkpLCBxdWV1ZTogYWRkU2VsZkZldGNoRnVuY3Rpb25zKGNsaWVudCwgZ2V0UXVldWVDb2RlYygpKSwgdGVuYW50OiBhZGRTZWxmRmV0Y2hGdW5jdGlvbnMoY2xpZW50LCBnZXRUZW5hbnRDb2RlYygpKSB9LCBpbnN0cnVjdGlvbnM6IHsgY2FuY2VsVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGNsb3NlVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRDbG9zZVRpY2tldEluc3RydWN0aW9uQXN5bmMoaW5wdXQpKSwgY29tbWl0VGlja2V0czogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uKHsgLi4uaW5wdXQsIHBheWVyOiBpbnB1dC5wYXllciA/PyBjbGllbnQucGF5ZXIgfSkpLCBjcmVhdGVUaWNrZXQ6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldENyZWF0ZVRpY2tldEluc3RydWN0aW9uQXN5bmMoaW5wdXQpKSwgZGVsZWdhdGVRdWV1ZTogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0RGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uQXN5bmMoeyAuLi5pbnB1dCwgcGF5ZXI6IGlucHV0LnBheWVyID8/IGNsaWVudC5wYXllciB9KSksIGRlbGVnYXRlVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uQXN5bmMoeyAuLi5pbnB1dCwgcGF5ZXI6IGlucHV0LnBheWVyID8/IGNsaWVudC5wYXllciB9KSksIGZsdXNoTWF0Y2hlczogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Rmx1c2hNYXRjaGVzSW5zdHJ1Y3Rpb24oaW5wdXQpKSwgaW5pdGlhbGl6ZVF1ZXVlOiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRJbml0aWFsaXplUXVldWVJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGluaXRpYWxpemVUZW5hbnQ6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldEluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGpvaW5RdWV1ZTogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Sm9pblF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpLCBwcm9jZXNzVW5kZWxlZ2F0aW9uOiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24oeyAuLi5pbnB1dCwgcGF5ZXI6IGlucHV0LnBheWVyID8/IGNsaWVudC5wYXllci5hZGRyZXNzIH0pKSwgc2V0dXBRdWV1ZVBlcm1pc3Npb246IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldFNldHVwUXVldWVQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpLCBzZXR1cFRpY2tldFBlcm1pc3Npb246IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uQXN5bmMoaW5wdXQpKSB9IH0gfTtcbiAgICB9O1xufVxuXG50eXBlIE1ha2VPcHRpb25hbDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjsiXX0=
|